Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Тема 4.2. Пример микроархитектуры: управление микрокомандами





В результате изучения данной темы Вы будете:

  • иметь представление об устройстве микроархитектуры компьютера, изучите конкретный пример;
  • иметь представление о том, что такое тракт данных компьютера;
  • иметь представление о том, каким образом разрабатываются микрокоманды процессоров;
  • иметь представление о том, каким образом интерпретируются и выполняются микрокоманды процессоров.

Для примера будет рассмотрена несложная микроархитектура, которая послужит отправной точкой в описании основных принципов управления командами и последовательности их выполнения.

Тракт данных

Тракт данных – это часть центрального процессора, состоящая из АЛУ и его входов и выходов (Рис. 4.6). Тракт данных нашей микроархитектуры схож с трактами данных большинства компью­теров. Он содержит ряд 32-разрядных регистров, которым приписаны симво­лические названия (например, PC, SP, MDR). Содержание большинства регистров пере­дается на шину В. Выходной сигнал АЛУ запускает схему сдвига, а затем шину С. Значение из шины С может записываться в один или несколько регистров одно­временно.

Рис. 4.6. Тракт данных микроархитектуры, рассматриваемой в качестве примера

АЛУ содержит два входа для данных: левый вход (А) и правый вход (В). С левым входом связан регистр временного хранения Н. С пра­вым входом связана шина В, в которую могут поступать значения из одного из девяти источников, что показано с помощью девяти серых стрелок, примыкающих к шине.

В регистр Н может поступать функция АЛУ, которая проходит через правый вход (из шины В) к выходу АЛУ. Одна из таких функций – сложение входных сигналов АЛУ, при этом сигнал ENA отрицается, и левый вход получает значение 0. Если к значению шины В прибавить 0, это значение не изменится. Затем результат проходит через схему сдвига (также без изменений) и сохраняется в регистре Н.

Данное АЛУ идентично тому, которое изображено на Рис. 3.12 и Рис. 3.13. Его функ­ционирование зависит от линий управления. На Рис. 4.6 перечеркнутая стрелочка с цифрой 6 слева от АЛУ указывает на наличие шести линий управления. Из них F0 и F1 служат для определения операции, ENA и ENB –для разрешения входных сигналов А и В соответственно, INVA – для инверсии левого входа и INC – для прибавления единицы к результату. Некоторые комбинации показаны в Таблица 4.3. В данной таблице знак «+» означает арифметический плюс, а знак «-» – арифметический минус, поэтому -А означает дополнение А.

F0 F1 ENA ENB INVA INC Функция
            А
            В
            А
            В
            А+В
            А+В+1
            А+1
            В+1
            В-А
            В-1
           
            А И В
            А ИЛИ В
             
             
            -1

Таблица 4.3. Некоторые комбинации сигналов АЛУ и соответствующие им функции

Существуют еще две линии управления, которые используются независимо от других. Они служат для управления выходом АЛУ. Линия SSL8 (Shift Left Logical – логический сдвиг влево) сдвигает число влево на один байт, заполняя 8 самых младших двоичных разрядов нулями; линия SRA1 (Shift Right Arithmetic – арифметический сдвиг вправо) сдвигает число вправо на 1 бит, оставляя самый старший двоичный разряд без изменений.

Можно считать и записать один и тот же регистр за один цикл. Для этого, на­пример, нужно поместить значение SP на шину В, закрыть левый вход АЛУ, уста­новить сигнал INC и сохранить полученный результат в регистре SP, увеличив, таким образом, его значение на 1 (см. восьмую строку Таблица 4.3). Если один и тот же регистр может считываться и записываться за один цикл, то как при этом предот­вратить появление ненужных данных? Дело в том, что процессы чтения и записи проходят в разных частях цикла. Когда в качестве правого входа АЛУ выбирается один из регистров, его значение помещается на шину В в начале цикла и хранится там, на протяжении всего цикла. Затем АЛУ выполняет свою работу и производит результат, который через схему сдвига поступает на шину С. Незадолго до конца цикла, когда значения выходных сигналов АЛУ и схемы сдвига стабилизирова­лись, содержание шины С передается в один или несколько регистров. Одним из этих регистров вполне может быть тот, от которого поступил сигнал на шину В. Точная синхронизация тракта данных делает возможным считывание и запись одного и того же регистра за один цикл.

Синхронизация тракта данных

Как происходит синхронизация этих действий, показано на Рис. 4.7.

Рис. 4.7. Временная диаграмма цикла тракта данных

Цикл тракта данных разбивается на подциклы. В нача­ле каждого цикла генерируется короткий импульс. Он может выдаваться тактовым генератором. На заднем фронте импульса уста­навливаются биты, которые будут запускать все вентили. Этот подцикл занимает определенный отрезок времени . Затем выбирается регистр, и его значение пе­редается на шину В, на это требуется время . Затем АЛУ и схема сдвига начина­ют оперировать поступившими к ним данными. После промежутка выходные сигналы АЛУ и схемы сдвига стабилизируются. В течение следующего отрезка результаты проходят по шине С к регистрам, куда они загружаются на нарастаю­щем фронте следующего импульса. Загрузка должна запускаться фронтом сиг­нала и осуществляться мгновенно, так что даже в случае изменений каких-либо входных регистров изменения в шине С будут происходить только после полной загрузки регистров. На нарастающем фронте импульса регистр, запускающий шину В, приостанавливает свою работу и ждет следующего цикла. На Рис. 4.7 для примера рассмотрены регистры МРС и MIR, а также память.

Никаких внешних сигналов, указывающих на начало и конец подцикла и сооб­щающих АЛУ, когда нужно начинать работу и когда нужно передавать результаты на шину С, нет. В действительности АЛУ и схема сдвига работают постоянно. Одна­ко их входные сигналы недействительны в течение периода . Точно так же их выходные сигналы недействительны в течение периода . Единствен­ными внешними сигналами, управляющими трактом данных, являются задний фронт синхронизирующего сигнала, с которого начинается цикл тракта данных, и нарастающий фронт синхронизирующего сигнала, который загружает регистры из шины С. Границы подциклов определяются только временем прохождения сигна­ла, поэтому разработчики тракта данных должны все очень четко рассчитать.

Работа памяти

Рассматриваемая микроархитектура может взаимодействовать с памятью двумя способами: через порт с пословной адресацией (32-битный) и через порт с байтовой адресацией (8-бит­ный). Порт с пословной адресацией управляется двумя регистрами:MAR(Memory Address Register – регистр адреса ячейки памяти) и MDR (Memory Data Register – информационный регистр памяти), которые показаны на Рис. 4.6. Порт с байтовой адресацией управляется регистром PC, который записывает 1 байт в 8 младших разрядов регистраMBR (Memory Buffer Register – буферный регистр памяти).Этот порт может считывать данные из памяти, но не может их записывать в память.

Каждый из этих регистров, а также все остальные регистры, запускаются одним изсигналов управления. Белая стрелка под регист­ром указывает на сигнал управления, который разрешает передавать выходной сигнал регистра на шину В. Регистр MAR не связан с шиной В, поэтому у него нет сигнала разрешения. У регистра Н этого сигнала тоже нет, так как этот регистр является единственным возможным левым входом АЛУ и поэтому всегда разрешен.

Черная стрелка под регистром указывает на сигнал управления, который запи­сывает (то есть загружает) регистр из шины С. Поскольку регистр MBR не может загружаться из шины С, у него нет сигнала записи (но зато есть два сигнала разре­шения, о которых речь пойдет ниже). Чтобы инициировать процесс считывания из памяти или записи в память, нужно загрузить соответствующие регистры па­мяти, а затем передать памяти сигнал чтения или записи (он не показан на Рис. 4.6).

Регистр MAR содержит адреса слов, таким образом, значения 0, 1, 2 и т. д. ука­зывают на последовательные слова. Регистр PC содержит адреса байтов, таким образом, значения 0, 1, 2 и т. д. указывают на последовательные байты. Если значе­ние 2 поместить в регистр PC и начать процесс чтения, то из памяти считается байт 2, который затем будет записан в 8 младших разрядов регистра MBR. Если значение 2 поместить в регистр MAR и начать процесс чтения, то из памяти счита­ются байты 8-11 (то есть слово 2), которые затем будут записаны в регистр MDR.

Использование двух регистров с разной адресацией основано на том, что ре­гистры MAR и PC будут использоваться для обращения к двум разным частям памяти. Регистры MAR и MDR используются для чтения и записи слов данных на уровне архитектуры команд, а регистры PC и MBR – для считывания программы уровня архитектуры команд, которая состоит из потока байтов. Во всех остальных регис­трах, содержащих адреса, применяется принцип пословной адресации, как и в MAR.

В действительности существует только одна память: с байтовой адресацией. Как же регистр MAR обращается к словам, если память состоит из байтов? Когда зна­чение регистра MAR помещается на адресную шину, 32 бита этого значения не попадают точно на 32 адресные линии (с 0 по 31). Вместо этого бит 0 соединяется с адресной линией 2, бит 1 – с адресной линией 3 и т. д. Два старших бита не учи­тываются, поскольку они нужны только для адресов свыше 232, а такие адреса недопустимы в рассматриваемой нами машине на 4 Гбайт. Когда значение MAR равно 1, на шину помещается адрес 4; когда значение MAR равно 2, на шину помещается адрес 8 и т. д. (Рис. 4.8).

Рис. 4.8. Распределение битов регистра MAR в адресной шине

Как уже было сказано выше, данные, считанные из памяти через 8-битный порт, сохраняются в 8-битном регистре MBR. Этот регистр может быть скопирован на шину В двумя способами: со знаком и без знака. Когда требуется значение без зна­ка, 32-битное слово, помещаемое на шину В, содержит значение MBR в младших 8 битах и нули в остальных 24 битах. Значения без знака нужны для индексирова­ния таблиц или для получения целого 16-битного числа из двух последователь­ных байтов (без знака) в потоке команд.

Другой способ превращения 8-битного регистра MBR в 32-битное слово – рас­сматривать его как значение со знаком между -128 и +127 и использовать это зна­чение для порождения 32-битного слова с тем же самым численным значением. Это преобразование делается путем дублирования знакового бита (самого левого бита) регистра MBR в верхние 24 битовые позиции шины В. Такой процесс назы­ваетсярасширением по знаку илизнаковым расширением. Если выбран данный параметр, то либо все старшие 24 бита примут значение 0, либо все они примут значение 1, в зависимости от того, каков самый левый бит регистра MBR: 0 или 1.

В какое именно 32-битное значение (со знаком или без знака) превратится 8-битное значение регистра MBR, определяется тем, какой из двух сигналов управ­ления (две белые стрелки под регистром MBR на Рис. 4.6) установлен. Прямо­угольник, обозначенный на рисунке пунктиром, показывает способность 8-битного регистра MBR действовать в качестве источника 32-битных слов для шины В.

Микрокоманды

Для управления трактом данных, изображенным на Рис. 4.6, нам нужно 29 сигна­лов. Их можно разделить на пять функциональных групп:

  • 9 сигналов для записи данных из шины С в регистры;
  • 9 сигналов для разрешения передачи регистров на шину В и в АЛУ;
  • 8 сигналов для управления АЛУ и схемой сдвига;
  • 2 сигнала, которые указывают, что нужно осуществить чтение или запись через регистры MAR/MDR (на рисунке они не показаны);
  • 1 сигнал, который указывает, что нужно осуществить вызов из памяти через регистры PC/MBR (на рисунке также не показан).

Значения этих 29 сигналов управления определяют операции для одного цик­ла тракта данных. Цикл состоит из передачи значений регистров на шину В, про­хождения этих сигналов через АЛУ и схему сдвига, передачи полученных резуль­татов на шину С и записи их в нужный регистр (регистры). Кроме того, если установлен сигнал считывания данных, то в конце цикла после загрузки регистра MAR начинается работа памяти. Данные из памяти помещаются в MBR или MDR в конце следующего цикла, а использоваться эти данные могут в цикле, который идет после него. Другими словами, если считывание из памяти через любой из пор­тов начинается в конце цикла k, то полученные данные еще не могут использо­ваться в цикле k+1 (только в цикле k+2 и позже).

Выходной сигнал шины С можно записывать сразу в несколько регистров, од­нако нежелательно передавать значения более одного регистра на шину В. Чтобы сократить количество битов, необходимых для запуска шины B, используется декодер для порождения 16 сигна­лов управления, 7 из которых не нужны.

Таким образом управлять трактом данных можно с помощью 9+4+8+2+1=24 сигна­лов, следовательно, для этого требуется 24 бита. Однако эти 24 бита управляют трактом данных только в течение одного цикла. Задача управления – определить, что нуж­но делать в следующем цикле. Чтобы включить это в разработку контроллера, используем формат для описания операций, которые нужно выполнить, используя 24 бита управления и две дополнительных группы сигналов: NEXT_ADDRESS (следу­ющий адрес) и JAM. На Рис. 4.9 изображен один из возможных форматов.

Рис. 4.9. Формат микрокоманды

Формат микрокоманды, содержащий 36 сигналов, разделен на следующие 6 групп:

  • Addr – содержит адрес следующей потенциальной микрокоманды;
  • JAM – определяет, как выбирается следующая микрокоманда;
  • ALU – функции АЛУ и схемы сдвига;
  • С – выбирает, какие регистры записываются из шины С;
  • Mem – функции памяти;
  • В – выбирает источник для шины В (как он кодируется, было рассказано выше).

Управление микрокомандами

Давайте рассмотрим, каким образом решается, какой именно сигнал управ­ления и на каком цикле должен запускаться. Для этого предназначен контроллер последовательности, который отвечает за последовательность операций, необхо­димых для выполнения одной команды.

Контроллер последовательности в каждом цикле должен выдавать следующую информацию:

  1. Состояние каждого сигнала управления в системе.
  2. Адрес микрокоманды, которая будет выполняться следующей.

Рис. 4.10 представляет собой подробную диаграмму полной микроархитектуры.

Самой большой и самой важной частью блока управления является управляю­щая память. Удобно рассматривать ее как память, в которой хранится полная мик­ропрограмма, хотя иногда она реализуется в виде набора логических вентилей. Важно не путать ее с основной памятью, доступ к которой осуществляется через регистры MBR и MDR. Функционально управляющая память представляет собой память, которая содержит микрокоман­ды вместо обычных команд. В нашем примере она содержит 512 слов, каждое из которых состоит из одной 32-битной микрокоманды с форматом, изображенным на Рис. 4.9.

Рис. 4.10. Диаграмма микроархитектуры, рассматриваемой в качестве примера

Управляющая память отличается от основной памяти тем, что команды, храня­щиеся в основной памяти, выполняются в порядке адресов (за исключением ветвле­ний), а микрокоманды – нет. Микропрограммы должны обладать большей гиб­костью (поскольку последовательности микрокоманд обычно короткие), поэтому каждая микрокоманда сама указы­вает на следующую микрокоманду.

Поскольку управляющая память функционально представляет собой ПЗУ, ей нужен собственный адресный регистр и собственный регистр данных. Для нее не требу­ются сигналы чтения и записи, поскольку здесь постоянно происходит процесс счи­тывания. Адресным регистром управляющей памяти является МРС (MicroProgram Counter – микропрограммный счетчик). Регистр данных – MIR (MicroInstruction Register – регистр микрокоманд). Он содержит текущую микрокоманду, биты которой запускают сигналы управления, влияющие на работу тракта данных (Рис. 4.9).

 

В начале каж­дого цикла (задний фронт синхронизирующего сигнала на Рис. 4.7) в регистр MIR загружается слово из управляющей памяти, которая на рисунке отмечена буква­ми МРС. Загрузка регистра MIR занимает период , то есть первый подцикл (см. Рис. 4.7).

Когда микрокоманда попадает в MIR, в тракт данных поступают различные сигналы. Значение определенного регистра помещается на шину В, а АЛУ узнает, какую операцию нужно выполнять. Все это происходит во время второго подцикла. После периода входные сигналы АЛУ стабилизируются.

После периода стабилизируются сигналы АЛУ N и Z и выходной сигнал схемы сдвига. Затем значения N и Z сохраняются в двух 1-битных триггерах. Эти биты, как и все регистры, которые загружаются из шины С и из памяти, сохраня­ются на нарастающем фронте синхронизирующего сигнала, ближе к концу цикла тракта данных. Выходной сигнал АЛУ не сохраняется, а просто передается в схе­му сдвига. Работа АЛУ и схемы сдвига происходит во время подцикла 3.

После следующего интервала, , выходной сигнал схемы сдвига, пройдя через шину С, достигает регистров. Регистры загружаются в конце цикла на нарастаю­щем фронте синхронизирующего сигнала (см. Рис. 4.7). Во время подцикла 4 про­исходит загрузка регистров и триггеров N и Z. Он завершается сразу после нарас­тающего фронта, когда все значения сохранены, результаты предыдущих операций памяти доступны и регистр МРС загружен. Этот процесс продолжается снова и сно­ва, пока работает данная схема.

Микропрограмме приходится не только управлять трактом данных, но и опре­делять, какая микрокоманда должна быть выполнена следующей, поскольку они не упорядочены в управляющей памяти. Вычисление адреса следующей микроко­манды начинается после загрузки регистра MIR. Сначала в регистр МРС копиру­ется 9-битное поле NEXT_ADDRESS (следующий адрес), пока происходит копи­рование, проверяется поле JAM. Если оно содержит значение 000, то ничего больше делать не нужно; когда копирование поля NEXT_ADDRESS завершится, регистр МРС укажет на следующую микрокоманду.

Если один или несколько бит в поле JAM равны 1, то требуются еще некоторые действия. Если бит JAMN равен 1, то триггер N соединяется через схему ИЛИ со старшим битом регистра МРС. Если бит JAMZ равен 1, то триггер Z соединяется через схему ИЛИ со старшим битом регистра МРС. Если оба бита равны 1, они оба соединяются через схему ИЛИ с тем же битом.

 

А теперь объясним, зачем нужны триггеры N и Z. Дело в том, что после нарастающего фронта сигнала (и вплоть до заднего фронта) шина В больше не запускается, поэтому выходные сигналы АЛУ уже не могут считаться правильными. Сохранение флагов состояния АЛУ в реги­страх N и Z делает правильные значения стабильными и доступными для вычисления регистра МРС, независимо от того, что происходит вокруг АЛУ.

На Рис. 4.10 схема, которая выполняет это вычисление, называется «старший бит». Она вычисляет булеву функцию, которая предназначена для определения адреса следующей микрокоманды:

 

F = ((JAMZ И Z) ИЛИ (JAMN И N)) ИЛИ NEXT_ADDRESS[8]

 

Таким образом, регистр МРС может принять только одно из возможных значений:

  1. Значение NEXT_ADDRESS.
  2. Значение NEXT_ADDRESS со старшим битом, соединенным с логической единицей операцией ИЛИ.

Других значений не существует. Если старший бит значения NEXT_ADDRESS уже равен 1, нет смысла использовать JAMN или JAMZ.

 

Отметим, что если все биты JAM равны 0, то адрес следующей команды – про­сто 9-битный номер в поле NEXT_ADDRESS. Если JAMN или JAMZ равны 1, то существует два потенциально возможных адреса следующей микрокоманды: NEXT_ADDRESS и NEXT_ADDRESS, соединенный операцией ИЛИ с 100h (предпо­лагается, что NEXT_ADDRESS ≤ FFh). Это проил­люстрировано Рис. 4.11. Текущая микрокоманда с адресом 75h содержит поле NEXT_ADDRESS=92h, причем бит JAMZ установлен на 1. Следовательно, сле­дующий адрес микрокоманды зависит от значения бита Z, сохраненного при пре­дыдущей операции АЛУ. Если бит Z равен 0, то следующая микрокоманда имеет адрес 92h. Если бит Z равен 1, то следующая микрокоманда имеет адрес 192h.

Рис. 4.11. Микрокоманда с битом JAMZ, равным 1, указывает на две потенциальные последующие микрокоманды

Если установлен третий бит в поле JAM – JMPC, то 8 битов регистра MBR поразрядно связываются операцией ИЛИ с 8 младшими битами поля NEXT_ADDRESS из текущей микрокоманды. Результат отправляется в регистр МРС. На Рис. 4.10 значком «ИЛИ» обозначена схема, которая выполняет операцию ИЛИ над MBR и NEXT_ADDRESS, если бит JMPC равен 1, и просто отправляет NEXT_ADDRESS в регистр МРС, если бит JMPC равен 0. Если JMPC равен 1, то младшие 8 битов поля NEXT_ADDRESS равны 0. Старший бит может быть 0 или 1, поэтому значение поля NEXT_ADDRESS обычно 000h или 100h.

Возможность выполнять операцию ИЛИ над MBR и NEXT_ADDRESS и со­хранять результат в регистре МРС позволяет реализовывать межуровневые пере­ходы. Отметим, что по битам, находящимся в регистре MBR, можно определить любой адрес из 256 возможных. Регистр MBR содержит код операции, поэтому использование JMPC приведет к единственно возможному выбору следующей микрокоманды. Этот метод позволяет осуществлять быстрый переход у функции, соответствующей вызванному коду операции.

Подведем итоги

  • основным компонентом любого компьютера является тракт данных. Он содер­жит несколько регистров, несколько шин, один или несколько функциональ­ных блоков, например АЛУ, и схему сдвига. Основной цикл состоит из вызова нескольких операндов из регистров и их передачи по шинам к АЛУ и другому функ­циональному блоку. После выполнения операции результаты сохраняются опять в регистрах;
  • цикл работы тракта данных синхронизируется импульсами тактового генератора;
  • тракт данных может управляться задатчиком последовательности, который вызывает микрокоманды из управляющей памяти. Каждая микрокоманда содержит биты, управляющие трактом данных в течение одного цикла. Эти биты опре­деляют, какие операнды нужно выбирать, какую операцию нужно выполнять и что нужно делать с результатами. Кроме того, каждая микрокоманда определяет своего последователя (обычно в ней содержится адрес следующей микрокоман­ды).

Вопросы для самоконтроля

1. Что такое тракт данных?

2. Расскажите, как происходит синхронизация сигналов тракта данных.

3. Объясните своими словами принципы построения форматов микрокоманд.

4.

Объясните полный цикл выполнения микрокоманды.

Индивидуальные задания

1. В приведенной микроархитектуре (Рис. 4.10) требуется 1 нс на установку регистра MIR, 1 нс – на передачу значения регистра на шину В, 3 нс – на запуск АЛУ и схемы сдвига и 1 нс – на передачу результатов обратно в регистры. Длительность синхронизирующего импульса составляет 2 нс. Может ли такая машина работать с частотой 100 МГц? А 150 МГц?

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

2. На Рис. 4.10 регистр шины В закодирован в 4-битном поле, а шина С пред­ставлена в виде битового отображения. Почему?

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

3. На Рис. 4.10 есть блок «Старший бит». Нарисуйте его схему.

 

4. Когда в микрокоманде установлено поле JMPC, регистр MBR соединяется операцией ИЛИ с полем NEXT_ADDRESS, чтобы получить адрес следую­щей микрокоманды. Существуют ли такие обстоятельства, при которых имеет смысл использовать JMPC, если NEXT_ADDRESS - 1FFh?

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________








Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.