Материал: Tannenbaum

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
background image

Разработка микроархитектурного уровня

283

Микрокоманда Операции

Комментарий

widei
widejloadi

widejstorei

tdc_w1

iind

nnc2
нпсЗ

gotoi

goto2
goto3

goto4
rflti

rflt2
iflt3
iflt4

ifeqi
ifeq2
ifeq3
ifeq4

ifjcmpeql
if_icmpeq2

if_icmpeq3
if_icmpeq4
if_icmpeq5
if_icmpeq6

T

F

F2

invoke_virtuaM

invoke_virtua!2
invoke_virtual3
invoke_virtual4
invoke virtual5

goto{MBR1 ИЛИ 0x100)

MAR=LV+MBR2U, rd,
goto iload2
MAR=LV+MBR2U,
goto istore2
MAR=CPP+MBR2U,
rd, goto iload2
MAR=LV+MBR1U,rd

H=MBR1
MDR=MDR+H,wr,
goto(MBRI)

H=PC-1

PC=H+MBR2

goto(MBRI)

MAR=SP=SP-1,rd

OPC=TOS

TOS=MDR

N=OPC,if(N)gotoT,

else goto F

MAR=SP=SP-1,rd

OPC=TOS

TOS=MDR
Z=OPC, if{Z)gotoT;
else goto F

MAR=SP=SP-1,rd
MAR=SP=SP-1

H=MDR, rd
OPC=TOS

TOS=MDR
Z=H-OPC,if(Z)gotoT,

else goto F

H=PC-1,gotogoto2
H=MBR2

goto(MBRI)
MAR=CPP+MBR2U, rd

OPC=PC

PC=MDR

TOS=SP-MBR2U
TOS=MAR=H=TOS+1

Следующий адрес —0x100 ИЛИ код операции
То же, что iloadi, но с использованием 2-байтного

индекса

То же, что istorei, но с использованием 2-байтного

индекса

То же, что widejload 1, но индексирование
осуществляется из регистра СРР
Установка регистра MAR на значение LV+индекс,
чтение этого значения

Присваивание регистру Н константы

Увеличение на константу и обновление

Копирование значения PC в регистр Н

Прибавление смещения и обновление PC

Машина ждет, пока блок выборки команд вызовет

новый код операции
Переход к следующей команде
Чтение второго слерху слова в стеке

Временное сохранение TOS в ОРС

Запись новой вершины стека в TOS

Переход в бит N

Чтение второго сверху слова в стеке

Временное сохранение TOS в ОРС

Запись новой вершины стека в TOS

Переход в бит Z

Чтение второго сверху слова в стеке
Установка регистра MAR на чтение новой вершины
стека

Копирование второго слова из стека в регистр Н
Временное сохранение TOS в ОРС
Помещение новой вершины стека в TOS
Если два верхних слова равны, осуществляется
переход к Т, если они не равны, осуществляется
переход к F

Тоже, чтодоШ!

Игнорирование байтов, находящихся в регистре MBR2

Помещение адреса указателя процедуры

в регистр MAR
Сохранение значения PC в регистре ОРС
Установка PC на первый байт кода процедуры

TOS = адрес OBJREF-1

TOS = адрес OBJREF

продочжение^

background image

284

Глава 4. Микроархитектурный уровень

Таблица 4.9

 (продолжение)

Микрокоманда Операции

Комментарий

invoke_virtual6
invoke_virtual7

invoke_virtual8
invoke virtua!9

MDR=SP+MBR2U+1;wr
MAR=SP=MDR

MDR-OPC; wr
MAR=SP=SP+1

invoke_virtual10 MDR=LV; wr

invoke_virtual11 LV=TOS; goto (MBR1)
ireturni MAR=SP=LV;rd

ireturn2
ireturn3

ireturn4

ireturn5
ireturn6
ireturn7

ireturn8

LV=MAR=MDR; rd

MAR=LV+1

PC-MDR; rd
MAR=SP
LV=MDR

MDR-TOS; wr;

goto(MBRI)

Перезапись OBJREF со связующим указателем

Установка регистров SP и MAR на адрес ячейки,

в которой содержится старое значение PC
Подготовка к сохранению старого значения PC

Увеличение SP на 1; теперь SP указывает на ячейку,

в которой хранится старое значение LV
Сохранение старого значения LV

Установка значения LV на нулевой параметр

Переустановка регистров SP и MAR для чтения
связующего указателя

Процесс считывания связующего указателя

Установка регистров LV и MAR на связующий
указатель; чтение старого значения PC
Установка регистра MAR на старое значение LV;
чтение старого значения LV

Восстановление PC

Восстановление LV

Сохранение результата в изначальной вершине стека

Микроархитектура Mic-2 совершенствует некоторые команды в большей сте-

пени, чем другие. Команда LDC_W сокращается с 9 до 3 микрокоманд, и следова-
тельно, время выполнение команды уменьшается в три раза. Несколько по-друго-
му дело обстоит с командой SWAP: изначально там было 8 команд, а стало 6. Для
общей производительности компьютера играет роль сокращение наиболее часто
повторяющихся команд. Это команды ILOAD (было 6, сейчас 3), IADD (было 4, сейчас
3) и IFJCMPEQ (было 13, сейчас 10 для случая, если слова равны; было 10, сейчас 8

для случая, если слова не равны). Чтобы вычислить, насколько улучшилась про-

изводительность, можно проверить эффективность системы по эталонному тесту,

но и без этого ясно, что здесь наблюдается огромный выигрыш в скорости.

Конвейерная архитектура: Mic-3

Ясно, что Mic-2 — это усовершенствованная микроархитектура Mic-1. Она рабо-
тает быстрее и использует меньше управляющей памяти, хотя стоимость блока
выборки команд, несомненно, превышает ту сумму, которая выигрывается за счет
сокращения пространства при уменьшении управляющей памяти. Таким образом,

машина Mic-2 работает значительно быстрее при минимальном росте стоимости.
Давайте посмотрим, можно ли еще больше повысить скорость.

А что, если попробовать уменьшить время цикла? В значительной степени вре-

мя цикла определяется базовой технологией. Чем меньше транзисторы и чем мень-
ше физическое расстояние между ними, тем быстрее может работать задающий
генератор. Б технологии, которую мы рассматриваем, время, затрачиваемое на

background image

Разработка микроархитектурного уровня 285

прохождение через тракт данных, фиксировано (по крайней мере, с нашей точки

зрения). Тем не менее у нас есть некоторая свобода действий, и далее мы использу-

ем ее в полной мере.

Еще один вариант усовершенствования — ввести в машину больше паралле-

лизма. В данный момент микроархитектура Mic-2 выполняет большинство опера-

ций последовательно. Она помещает значения регистров на шины, ждет, пока АЛ У

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

Как мы уже говорили, длительность цикла определяется временем, необходи-

мым для прохождения сигнала через тракт данных. На рис. 4.2 показано распреде-
ление этой задержки между различными компонентами во время каждого цикла.

В цикле тракта данных есть три основных компонента:

1. Время, которое требуется на передачу значений выбранных регистров в шины

А и В.

2. Время, которое требуется на работу АЛУ и схемы сдвига.

3. Время, которое требуется на передачу полученных значений обратно в ре-

гистры и сохранение этих значений.

На рис. 4.21 показана новая трехшинная архитектура с блоком выборки команд

и тремя дополнительными защелками (регистрами), каждая из которых распо-

ложена в середине каждой шины. Эти регистры записываются в каждом цикле.

Они делят тракт данных на отдельные части, которые теперь могут функциони-

ровать независимо друг от друга. Мы будем называть такую архитектуру

 конвей-

ерной моделью

 или

 Mic-3.

Зачем нужны эти три дополнительных регистра? Ведь теперь для прохожде-

ния сигнала через тракт данных требуется три цикла: один — для загрузки регистров
А и В, второй — для запуска АЛУ и схемы сдвига и загрузки регистра С, и третий —

для сохранения значения регистра-защелки С обратно в нужные регистры. Мы что,

сумасшедшие?

 (Подсказка:

 нет). Существует целых две причины введения допол-

нительных регистров:

1. Мы можем повысить тактовую частоту, поскольку максимальная задержка

теперь стала короче.

2. Во время каждого цикла мы можем использовать все части тракта данных.
После разбиения тракта данных на три части максимальная задержка прохож-

дения сигнала уменьшается, и в результате тактовая частота может повыситься.

Предположим, что если разбить цикл тракта данных на три примерно равных ин-

тервала, тактовая частота увеличится втрое. (На самом деле это не так, поскольку
мы добавили в тракт данных еще два регистра, но в качестве первого приближения
это допустимо.)

Поскольку мы предполагаем, что все операции чтения из памяти и записи в

память выполняются с использованием кэш-памяти первого уровня и эта кэш-
память построена из того же материала, что и регистры, то следовательно, опе-
рация с памятью занимает один цикл. На практике, однако, этого не так легко

достичь.

background image

286

Глава 4 Микроархитектурный уровень

Регистры

управления

памятью

Сигналы управления

А Разрешающий сигнал

' на шину В

А Запись сигнала

' с шины С в регистр

Шина С

Шина В

Защелка С

Управление

АЛУ

— и Схема сдвигам—

I

Рис. 4 . 2 1 ,

 Тракт данных с тремя шинами в микроархитектуре Mic-3

Второй пункт связан с общей производительностью, а не со скоростью выпол-

нения отдельной команды В микроархитектуре Mic-2 во время первой и третьей
части каждого цикла АЛУ простаивает Если разделить тракт данных на три час-

ти, то появляется возможность использовать АЛУ в каждом цикле, вследствие чего

производительность машины увеличивается в три раза

А теперь посмотрим, как работает тракт данных Mic-З. Перед тем как начать,

нужно ввести определенные обозначения для защелок Проще всего назвать за-

background image

Разработка микроархитектурного уровня

287

щелки А, В и С и считать их регистрами, подразумевая ограничения тракта дан-
ных. В таблице 4.10 приведен кусок программы для микроархитектуры Mic-2 (ре-

ализация команды SWAP).

Таблица 4.10.

 Программа Mic-2 для команды SWAP

Микрокоманда Операции

Комментарий

swapi

swap2
swap3

swap4

swap 5
swap6

MAR=SP-1;rd
MAR=SP
H=MDR;wr

MDR=TOS
MAR=SP-1;wr

TOS=H;goto(IV

Чтение второго слова из стека; установка MAR на SP

Подготовка к записи нового второго слова

Сохранение нового значения TOS; запись второго
слова в стек

Копирование старого значения TOS в регистр MDR
Запись старого значения TOS на второе место в стеке

Давайте перепишем эту последовательность для Mic-З. Следует помнить, что

теперь работа тракта данных занимает три цикла: один — для загрузки регистров А

и В, второй — для выполнения операции и загрузки регистра С и третий — для запи-
си результатов в регистры. Каждый из этих участков будем называть

 микрошагом.

Реализация команды SWAP для Mic-З показана в табл. 4.11. В цикле 1 мы начи-

наем микрокоманду swapl, копируя значение SP в регистр В. Не имеет никакого
значения, что происходит в регистре А, поскольку чтобы отнять 1 из В, ENA (сиг-
нал разрешения А) блокируется (см. табл. 4.1). Для простоты мы не показываем
присваивания, которые не используются. В цикле 2 мы производим операцию вы-
читания. В цикле 3 результат сохраняется в регистре MAR, и после этого, в конце
третьего цикла, начинается процесс чтения. Поскольку чтение из памяти занимает
один цикл, закончится он только в конце четвертого цикла. Это показано присваи-

ванием значения регистру MDR в цикле 4. Значение из MDR можно считывать не

раньше пятого цикла.

Таблица  4 . 1 1 .

 Реализация команды SWAP для Mic-З

Цикл

1

2
3

4

5
6
7
8
9

10
11

Swapl

MAR=SP-1;rd
B=SP
С=В-1

MAR=C; rd
MDR=Mem

Swap2

MAR=SP

B=SP
C=B

MAR=C

Swap3

H=MDR,wr

B=MDR

C=B

H=C; wr
Mem=MDR

Swap4

MDR-TOS

B=TOS
C=B

MDR=C

Swap5

MAR-SP-1 ;wr

B=SP
C=B-1

MAR=C; wr

Mem=MDR

Swap6

TOS=H;goto(MBR1)

B=H

C=B
TOS-C
goto(MBRI)

Источник: https://files.student-it.ru/previewfile/18474