Образовательный портал «Кафедра онлайн» НИЯУ «МИФИ», Обнинск"

Компьютерные сказки. Процессор

Е.В. Крылов, доцент ИАТЭ НИЯУ «МИФИ», Обнинск

Садовые сцены. Все, кроме барина, стоят вдоль дорожек сада, ждут мальчика.

Участники сказки:

  • Ключница (контроллер оперативной памяти). Перед ней лежат пронумерованные листочки, на которых написано: возьми простыню в шкафу, возьми мясо на леднике.
  • Мальчики (импульсы). Бегут по дорожкам сада, возникают из ничего, добегают до конца дорожки и исчезают. В руках несут пакеты.
  • Барин (процессор). Важный и толстый. Сидит в кресле, перед ним листок с номером, в руках карандаш.
  • Одинаковые служаночки (контроллеры внешних устройств). Внешне неразличимы. В карманах держат жетоны, на которых написаны  личные номера (адреса). Одна стоит у плиты, другая рядом  с ледником.

Роли распределены:

  • Ключница. Мимо бежит мальчик с пакетом. На пакете пометка «табе». Ключница хватает пакет, мальчик бежит дальше. На выходе из сада мальчик исчезнет. Ключница вскрывает пакет и читает номер инструкции. По номеру находит нужный листок и берёт его. В сказке всё возможно, в руках ключницы оказывается копия, сам листок лежит на месте. Ключница создаёт мальчика, вручает ему пакет, пихает в спину. Мальчик бежит к барину.
  • Мальчики. Переносят пакеты. При этом всегда пробегают мимо всех.
  • Барин. Хочет спать. Но из-под лавки (ГТЧ) с постоянной частотой вылетают мальчики, пихают его и исчезают. Барин, ощутив толчок, смотрит листок с номером инструкции, пишет номер на листке, запечатывает в конверт, создаёт мальчика, отдаёт пакет, пихает в спину. Ждёт мальчика, который прибежит обратно. Прибегает мальчик от ключницы, отдаёт пакет, исчезает. Барин берёт пакет, прибавляет к номеру инструкции единичку, вскрывает пакет, читает: «Жарь мясо с ледника». Пишет: «Служанка А (адрес). Дай мясо» Создаёт мальчика, отдаёт пакет, пихает. Мальчик бежит по дорожке, пакет виден всем. Все читают адрес, но реагирует только служанка А. Она выхватывает пакет, читает, не торопясь, достаёт мясо, создаёт мальчика, отдаёт мясо, пихает. Мальчик бежит к барину. Барин берёт мясо, мальчик исчезает. Барин пакует мясо, пишет: «Служанка Б. Жарь мясо». Создаёт мальчика, отдаёт мясо и пакет, пихает. Из-под лавки пихают барина, он смотрит листок с номером инструкции, а там номер следующей инструкции (команды)…
  • Служаночка А. Достаёт мясо с ледника.
  • Служаночка Б. Жарит мясо.

Пошутили и хватит. Пора к делу. Хотелось бы, чтобы читатели поискали сходство и различие между «барином» и «процессором».

Вопросы снова наплывают. Возникает опасение, что сказки когда-то закончатся, а вопросы останутся. Вот и ещё:

Можно ли для ускорения заставить мальчиков бежать друг за другом?

А если для мальчиков сделать параллельные дорожки?

А если прежде чем посылать мальчика, надо выбрать дорожку?

А нельзя ли заставить барина делать одновременно несколько действий!

Некоторые ответы далее найдём.

Умные книги сообщают о процессоре массу ерунды. Пишут: «Процессор обрабатывает информацию»; «Процессор обрабатывает данные»; «Процессор является сердцем компьютера»; «Процессор является мозгом компьютера» и т.д. Всё это перечисление того, что процессор не делает и чем не является.

У процессора одна, уникальная функция. Он в цикле выполняет команды! И больше он ничего не делает. Сходство с барином ощущается? Однако эта функция настолько важна, что без процессора представить себе компьютер вряд ли возможно.

Если Вы, уважаемый читатель, собираетесь освоить принципиально новый компьютер, начните с анализа процессора. И попутного Вам ветра. И семь футов под килем.

На рис.1 показана схема старенького процессора Intel 8086. Процессор Intel – далеко не лучший процессор. Сказочные историки описывают время, когда устраивались конкурсы процессоров. Тогда первые места занимали процессоры IBM370, PDP11. Процессор от Intel не входил в первую десятку. Но принципы, они и в Африке принципы. Их удобно разобрать на примере этого процессора, после чего можно вспомнить и о других.

Процессор состоит из электронных регистров. Их можно разделить на три группы.

  1. Группа общих регистров R1, R2, R3 и т.д. Количество таких регистров различно в различных процессорах. Например, процессор IBM370 имел 16 общих регистров. Эти регистры называются ещё накопителями, или программно-доступными. Их адреса могут быть в командах, следовательно, процессор может передавать пакеты сам себе. А накопителями они называются потому, что накапливают результат: . Берём содержимое регистра R1, прибавляем содержимое поля оперативной памяти, и результат отправляем обратно в регистр.
  2. Группа специальных регистров. Эти регистры в процессорах Intel программно недоступны. В процессоре IBM360/370 они были программно доступны, что создавало широчайшие дополнительные возможности. Но, что выросло, то выросло. Сегодня программист не может менять специальные регистры по своему усмотрению. Специальные регистры мы будем вводить постепенно, по мере развития событий. Пока на рисунке показан только регистр IP (Instruction Pointer), то есть указатель команд. Предположим, что этот регистр содержит адрес текущей команды, т.е. команды, которую процессор должен выполнить на следующем шаге. Читатель помнит листок перед барином, на котором записан номер команды?
  3. Арифметико-логическое устройство. Группа активных регистров, которые выполняют операции над данными, например, создают пакеты, мальчиков и отдают им пакеты. По неизвестной мне причине это устройство рисуется в виде корыта. Я решил не нарушать традицию.

Теперь мы собрали средства для упрощенного описания действий процессора. Упрощенного потому, что мне не раз придётся заявлять: «Простите, уважаемые, ранее я показал всего лишь простенькую картинку, теперь поговорим сложнее». Если хотите, это принципиальный подход.

Ой, простите! Ведь процессор пока не знает, как определить длину команды. Придётся выдать страшную тайну. Длина команды шифруется в поле команды. Одно из возможных решений, принятое для процессора IBM360/370, длина команды (Len) определяется двумя младшими битами кода операции.

Вот теперь всё готово, начнём. Дальнейшие действия процессора назовём «цикл процессора». Процессор начинает выполнять свои функции, когда его толкает мальчик-импульс, пришедший от ГТЧ. И далее каждое действие процессора подчиняется толчку от ГТЧ. Время между импульсами от ГТЧ назовём такт процессора. Цикл процессора выполняется за целое число тактов. Ой, вспомнил, когда мальчик из школьной сказки считал рыбаков на берегу, он насчитал полрыбака. В умных книгах пишут, что цикл процессора Pentium Pro занимает полтакта. Чудесны дела твои Господи. Как же это может быть? Это противоречит здравому смыслу!

Начнём, однако.

  1. Процессор по адресу, хранящемуся в регистре IP, выбирает код операции. Так пишут в умных книгах. На самом деле процессор это сделать не может, т.к. у него нет доступа к оперативной памяти, это делает служанка, контроллер оперативной памяти. Процессор формирует пакет, содержащий адрес кода операции, признак чтения, признак оперативной памяти и выбрасывает его в общую шину. В ответ он через общую шину получает код операции, содержащий длину команды. Для дальнейшего анализа примем соглашения IBM360/370.
  2. Арифметико-логическое устройство расшифровывает код операции и выделяет код длины. Адрес текущей команды сохраняется в АЛУ.
  3. Длина команды прибавляется к регистру IP. В результате уже на третьем шаге цикла регистр команд «указывает» на следующую команду.
  4. Процессор имеет адрес команды и её длину. Выбирается вся команда.
  5. АЛУ вычисляет исполнительные адреса. В команде находятся либо адреса данных в оперативной памяти (исполнительные адреса), либо информация об исполнительных адресах. Мы пока разбираем схему с абсолютной адресацией, поэтому в команде присутствуют исполнительные адреса аргумента и результата. Вычисления впереди.
  6. Процессор выбирает аргументы. На самом деле он на это не способен. АЛУ формирует пакет, содержащий адрес кода операции, признак чтения, признак оперативной памяти и выбрасывает его в общую шину. В ответ по общей шине приходит аргумент (в виде двоичного целого без знака). Не всем командам нужен аргумент, извлекаемый из оперативной памяти. Иногда в этом пункте ничего не делается.
  7. Команда выполняется. В арифметико-логическом устройстве имеются данные и операция, которую следует выполнить над данными. Результат пока остаётся в АЛУ. Только на этом шаге цикла процессора приобретает смысл понятие «формат поля». Форматом поля назовём способ интерпретации поля процессором. Формат поля определяется командой, извлекаемой из оперативной памяти.
  8. АЛУ посылает результат по адресу, вычисленному на пятом шаге. Иногда в этом пункте ничего не делается. Это может быть, например, при сравнении двух полей. Результат может запоминаться в регистре специального назначения.
  9. Переход к первому пункту. Но в регистре указателе находится адрес следующей команды. Всё начинается сначала.

Цикл процессора выполняется в целом стандартно, но некоторые пункты имеют особенности. Например, аргумент может присутствовать непосредственно в поле команды. Такой аргумент носит название «непосредственный операнд». Если уважаемый читатель хорошо представляет себе цикл процессора, для него не представят трудностей понять некоторые тонкие моменты. Посмотрим, как процессор может поменять порядок выполнения команд (рис.3). На рисунке слева показан регистр IP, содержащий условный адрес текущей команды «A». На жаргоне программистов это звучит как: «Регистр IP ссылается на команду А». Справа показана машинная программа, размещающаяся в оперативной памяти. Штрихованные прямоугольники содержат условные адреса команд. A – адрес текущей команды, B – адрес следующей. Текущая команда содержит код операции безусловной передачи управления, которая обозначена как goto. Процессор начинает выполнение своего цикла и делает это совершенно стандартно. Выбирает код команды, определяет длину, прибавляет к регистру IP (в результате его значение становится B), выбирает команду, вычисляет исполнительный адрес (C), выборка аргумента и засылка результата не производится. И вот оно! На шаге выполнения в регистр IP заносится вычисленный исполнительный адрес C. Переход к первому пункту цикла, но в регистре указателе адрес команды C, она и будет выполняться. Переход состоялся!

Безусловная передача управления не может самостоятельно обеспечить организацию алгоритма. Необходим условный переход, как показано на рис. 4. Если значение переменной a больше нуля, следует переход на команду C, иначе выполняется следующая команда B. Покажем ещё один специальный регистр: регистр флагов. Он состоит из нескольких разрядов. Каждый разряд определяет вполне определённую ситуацию.

На рис. 5 показан разряд знаков S. Знак результата арифметической операции после выполнения заносится в этот разряд. Предположим, что положительный результат соответствует значению разряда 1. Условный переход выполняется двумя командами. Первая определяет знак a и заносит значение в разряд S. Далее всё разыгрывается как по нотам. Процессор начинает выполнение своего цикла и делает это совершенно стандартно. Выбирает код команды, определяет длину, прибавляет к регистру IP (в результате его значение становится B), выбирает команду, вычисляет исполнительный адрес (C), выборка аргумента и засылка результата не производится. И вот оно! На шаге выполнения процессор проверяет значение разряда S. Если в разряде единица, в регистр IP заносится вычисленный исполнительный адрес C, если ноль, процессор ничего не делает. Переход к первому пункту цикла, но в регистре указателе либо адрес команды C, она и будет выполняться, либо адрес следующей команды. Условный переход состоялся!

Мы посмотрели абсолютную адресацию. Не стоит относиться к ней презрительно. Существуют задачи, где это наилучшее решение. Однако читатель должен понимать, что при абсолютной адресации программы должны вызываться в жёстко определённом порядке. Любой пользователь персонального компьютера скажет, что это не так. Следовательно, здесь работают какие-то другие механизмы.

Если просчитать время работы каждого шага, получится солидная цифра. На самом деле процессор работает много быстрее. Как в современных процессорах всё это обеспечивается, посмотрим в следующих сказках.

Уважаемый читатель, может быть, Вы можете предложить свои решения?

Были заданы вопросы, на которые пока нет ответа:

  1. Читатель! А как бы ВЫ организовали не фоннеймановскую оперативную память?
  2. Как же тогда процессор будет общаться с внешними устройствами? Попробуйте сообразить.
  3. Надо ли основной пакет и синхроимпульс рисовать на одном уровне? Может быть кто-то должен по времени опережать?
  4. Сколько различных кодов операций может иметь процессор?
  5. Уважаемый читатель! Подскажите, какое событие проверяет контроль по нечёту?
  6. Как контролировать передачу данных (поток информации)?
  7. А кто мог бы дать точное определение понятий «событие» и «процесс» ?
  8.  Хотелось бы, чтобы читатели поискали сходство и различие между «барином» и «процессором».
  9. А если для мальчиков сделать параллельные дорожки?
  10. А если прежде чем посылать мальчика, надо выбрать дорожку?
  11. А нельзя ли заставить барина делать одновременно несколько действий!
  12. Можно ли для ускорения заставить мальчиков бежать друг за другом?

Получены ответы на вопросы:

  1. Вопрос: Команды и данные принципиально неразличимы, то кто и как их различает?
    Ответ: Признаком команды является шаг цикла процессора. На первом шаге процессор считает, что выбрана команда, на следующих шагах, данное.
  2. Вопрос: Кто и как определяет длину команды?
    Ответ: Код длины команды содержится в поле команды. Выбрав код операции, процессор вычисляет длину команды. Если адреса команды и данного совпадут, поля команды и данного могут совпадать или перекрываться в пределах одной команды.

Список литературы

1. Гук М., Юров В. Процессоры Pentium4, Athlon и Duron. – СПб.: Питер, 2001.

2. Крылов Е.В., Типикин Н.Г. Принципы функционирования ЭВМ. Учебное пособие по курсам «Технология программирования» и «Операционные системы» для заочного отделения. — Обнинск: ИАТЭ, 2002.- 134с.

Продолжение следует.

Комментариев нет

Похожие публикации
 
 

Комментариев нет

Вы можете быть первым, кто оставит комментарий.

 
 

Вы можете оставить комментарий

 





 
 

Выполните простое задание (антиспам). Картинки можно сибирать приблизительно, без точной подгонки фрагментов.


 
 
 

Наверх