Реклама:

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

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

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

Как уже отмечалось, длительность цикла определяется временем, необходимым для прохождения сигнала через тракт данных. На рис. 4.2 показано распределение этой задержки между различными компонентами во время каждого цикла. Цикл тракта данных объединяет три основные составляющие:

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

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

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

На рис. 4.21 показана новая 3-шинная архитектура с блоком выборки команд и тремя дополнительными защелками (регистрами), каждая из которых расположена в середине каждой шины. Эти регистры записываются в каждом цикле. Они делят тракт данных на отдельные части, которые могут функционировать независимо друг от друга. Мы будем называть такую архитектуру конвейерной моделью, или Міс-3.

Конвейерная конструкция - микроархитектура Mic-З

Рис. 4.21. Тракт данных с тремя шинами в микроархитектуре Міс-3

Зачем нужны целых три дополнительных регистра? Ведь теперь для прохождения сигнала через тракт данных требуется 3 цикла: один для загрузки регистров А и В, второй для запуска АЛУ и схемы сдвига, а также загрузки регистра С, третий для сохранения значения регистра-защелки С обратно в нужных регистрах. Мы что, ненормальные? (Подсказка: нет.) Существует целых две причины введения дополнительных регистров:

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

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

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

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

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

А теперь посмотрим, как работает тракт данных Mic-З. Однако сначала нужно как-то назвать защелки. Проще всего назвать защелки А, В и С и считать их регистрами, подразумевая ограничения тракта данных. В табл. 4.9 приведен фрагмент программы для микроархитектуры Mic-2 (реализация команды SWAP).

Таблица 4.9. Программа Міс-2 для команды SWAP

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

Операции

Комментарий

swapl

MAR = SP - 1; rd

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

swap2

MAR = SP

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

swap3

H = MDR; wr

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

swap4

MDR = TOS

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

swap5

MAR = SP - 1; wr

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

swap6

TOS = H; goto (MBR1)

Обновление TOS

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

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

Таблица 4.10. Реализация команды SWAP в архитектуре Mic-3

 

Swapl

Swap2

Swap3

Swap 4

Swap5

Swap6

Цикл

MAR = SP -

MAR = SP

H = MDR; wr

MDR = TOS

MAR = SP -

TOS = H;

 

1; rd

     

1; wr

goto (MBR1)

В = SP

         

С = В - 1

В = SP

       

MAR = С; rd

C = B

       

MDR = Mem

MAR = С

       
   

В = MDR

     
   

С = В

B = TOS

   
   

H = С; wr

C = B

В = SP

 
   

Mem = MDR

MDR = С

C = B- 1

В = H

       

MAR = С; wr

C=B

       

Mem = MDR

TOS = С

         

goto (MBR1)

А теперь вернемся к циклу 2. Мы можем разбить микрокоманду swap2 на микрошаги и начать их выполнение. В цикле 2 мы копируем значение SP в регистр В, затем пропускаем значение через АЛУ в цикле 3 и, наконец, сохраняем его в регистре MAR в цикле 4. Пока все хорошо. Должно быть ясно, что, если мы сможем начинать новую микрокоманду в каждом цикле, скорость работы машины увеличится в три раза. Такое повышение скорости происходит за счет того, что машина Mic-3 производит в три раза больше циклов в секунду, чем Mic-2. Фактически мы построили конвейерный процессор.

К сожалению, мы наткнулись на преграду в цикле 3. Прекрасно было бы начать микрокоманду swap3, но эта микрокоманда сначала пропускает значение MDR через АЛУ, а значение MDR не может быть получено из памяти до начала цикла 5. Ситуация, когда следующий микрошаг не может начаться, потому что перед этим нужно получить результат выполнения предыдущего микрошага, называется реальной взаимозависимостью, или RAW-взаимозависимостью (Read After Write - чтение после записи). Взаимозависимости иногда называют рисками.

В такой ситуации требуется считать значение регистра, которое еще не записано. Единственное разумное решение в данном случае - отложить начало микрокоманды swap3 до того момента, когда значение MDR станет доступным, то есть до пятого цикла. Ожидание нужного значения называется простоем. После этого мы можем начинать выполнение микрокоманд в каждом цикле, поскольку таких ситуаций больше не возникает, хотя имеется пограничная ситуация: микрокоманда swap6 считывает значение регистра Н в цикле, который следует сразу после записи этого регистра в микрокоманде swap3. Если бы значение этого регистра считывалось в микрокоманде swap5, машине пришлось бы простаивать один цикл.

Хотя программа Mic-З требует больше циклов, чем программа Mic-2, она работает гораздо быстрее. Если время цикла микроархитектуры Mic-З составляет AT не, то для выполнения команды SWAP машине Mic-З требуется 11 AT не, а машине Mic-2 - 6 циклов по ЗАТ не каждый, то есть всего 18АТ не. Конвейеризация увеличивает быстродействие компьютера даже несмотря на то, что один раз приходится простаивать из-за явления реальной взаимозависимости.

Конвейеризация является ключевой технологией во всех современных процессорах, поэтому важно хорошо в ней разбираться. На рис. 4.22 графически проиллюстрирована конвейеризация тракта данных, изображенного на рис. 4.21. В первой колонке показано, что происходит во время цикла 1, вторая колонка представляет цикл 2 и т. д. (предполагается, что простоев нет). Закрашенная область на рисунке для цикла 1 и команды 1 означает, что блок выборки команд занят вызовом команды 1. В цикле 2 значения регистров, вызванных командой 1, загружаются в А и В, а в это время блок выборки команд занимается вызовом команды 2, что также показано закрашенными серыми прямоугольниками.

Во время цикла 3 команда 1 использует АЛУ и схему сдвига, регистры А и В загружаются для команды 2, вызывается команда 3. Наконец, во время цикла 4 работают все 4 команды одновременно. Сохраняются результаты выполнения команды 1, АЛУ выполняет вычисления для команды 2, регистры А и В загружаются для команды 3, вызывается команда 4.

Если бы мы показали цикл 5 и следующие, модель была бы точно такой же, как в цикле 4: все четыре части тракта данных работали бы независимо друг от друга. Данный конвейер содержит 4 ступени: для вызова команд, для доступа к операндам, для работы АЛУ и для записи результата обратно в регистры. Он похож на конвейер, изображенный на рис. 2.3, я, только у него отсутствует ступень декодирования (расшифровки). Здесь важно подчеркнуть, что, хотя выполнение одной команды занимает 4 цикла, в каждом цикле начинается новая команда и завершается предыдущая.

Можно рассматривать схему на рис. 4.22 не вертикально (по колонкам), а горизонтально (по рядам). При выполнении команды 1 в цикле 1 функционирует блок выборки команд. В цикле 2 значения регистров помещаются на шины А и В. В цикле 3 работают АЛУ и схема сдвига. Наконец, в цикле 4 полученные результаты сохраняются в регистрах. Отметим, что имеется 4 доступных устройства и во время каждого цикла определенная команда использует только одно из них, оставляя свободными другие устройства для других команд.

Конвейерная конструкция - микроархитектура Mic-З

Рис. 4.22. Графическая иллюстрация работы конвейера

Проведем аналогию с конвейером на заводе, производящем автомобили. Чтобы изложить суть работы такого конвейера, представим, что ровно каждую минуту звучит гонг, и в этот момент все автомобили передвигаются по конвейеру на один шаг. На каждом шаге рабочие выполняют определенную операцию с автомобилем, который оказывается перед ними, например ставят колеса или тормоза. При каждом ударе гонга (это - 1 цикл) очередная заготовка поступает на конвейер и один собранный автомобиль сходит с конвейера. Таким образом, завод выпускает один автомобиль в минуту независимо от того, сколько времени занимает сборка одного автомобиля. В этом и состоит суть конвейера. Такой подход в равной степени применим и к процессорам, и к автомобилям.

Упреждающая выборка команд из памяти - микроархитектура Mic-2 || Оглавление || Семиступенчатый конвейер - микроархитектура Mic-4