Э. Таненбаум - Архитектура компьютера (1127755), страница 80
Текст из файла (страница 80)
Уровень микроархитектуры В микроархитектуре М(с-2 некоторые команды усовершенствованы в большей степени, чем другие. Команда С0С И сокращается с 9 до 3 микрокоманд, и, следовательно, время выполнения команды уменьшается втрое. Несколько по-другому дело обстоит с командой 5ИАР: изначально там было 8 микрокоманд, а стало 6. Для общей производительности компьютера играет роль сокращение наиболее часто повторяющихся команд, а это команды 1СОА0 (было 6, стало 3), 1Я00 (было 4, стало 3) и 1Р 1СМРЕ0 (было 13, стало 10 для случая, когда слова равны; было 10, стало 8 для случая, когда слова не равны). Чтобы вычислить, насколько выросла производительность, можно проверить эффективность системы по эталонному тесту, но и без этого ясно, что имеет место значительный выигрыш в быстродействии. Конвейерная конструкция— микроархитектура М!с-З Очевидно, что Мкэ2 — это усовершенствованная микроархитектура М(с-1.
Она работает быстрее и требует меньше управляющей памяти, хотя стоимость блока выборки команд несомненно превышает сумму, выигранную за счет сокращения объема управляющей памяти. Таким образом, магнина М)с-2 работает значительно быстрее при некотором увеличении стоимости. Давайте посмотрим, можно ли еще больше повысить скорость. А что, если попробовать уменьшить время цикла7 В значительной степени время цикла определяется базовой технологией.
Чем меньше транзисторы и физическое расстояние между ними, тем быстрее может работать задающий генератор. В технологии, которую мы рассматриваем, время, затрачиваемое на прохождение через тракт данных, фиксировано (по крайней мере, с нашей точки зрения). Тем не менее у нас есть некоторая свобода действий и далее мы используем ее в полной мере. Еще один вариант усовершенствования — увеличить степень параллелизма. На данный момент микроархитектура М1с-2 выполняет большинство операций последовательно.
Она помещает значения регистров на шины, ждет, пока АЛУ и схема сдвига их обработают, а затем записывает результаты обратно в регистры. Если не учитывать работу блока выборки команд, никакого параллелизма здесь нет. Внедрение дополнительных механизмов параллельной обработки сулит значительные преимущества. Как уже отмечалось, длительность цикла определяется временем, необходимым для прохождения сигнала через тракт данных.
На рис. 4.2 показано распределение этой задержки между различными компонентами во время каждого цикла. Цикл тракта данных объединяет три основные составляющие: 1. Время, которое требуется на передачу значений выбранных регистров на шины А и В. 2. Время, которое требуется на работу АЛУ и схемы сдвига. 3. Время, которое требуется на передачу полученных значений обратно в регистры и сохранение этих значений. Разработка уровня микроархитектуры 321 На рис. 4.21 показана новая 3-шинная архитектура с блоком выборки команд и тремя дополнительными защелками (регистрами), каждая из которых расположена в середине каждой шины.
Эти регистры записываются в каждом цикле. Они делят тракт данных на отдельные части, которые могут функционировать независимо друг от друга. Мы будем называть такую архитектуру конвейерной моделью, или Мгс-З. Регистры В основную память и из нее Сигналы О Разре ~ сшин Рис. 4.21. Тракт данных с тремя шинами в микроархитектуре М|с-3 322 Глава 4.
Уровень микроархитектуры Таблица 4.9. Программа М1с-2 для команды ЗуУЯР Микрокоманда Операции Комментарий МЯВ = ЗР— 1; гс Чтение второго слова из стека; установка МЯВ на ЗР впар1 МЯВ = ЗР Н = МОВ; иг зттар2 зттарэ Подготовка к записи нового второго слова Сохранение нового значения ТОЗ; запись второго слова в стек МОВ = ТОЗ вттар4 Копирование старого значения ТОЗ в регистр МОВ МЯВ = ЗР— 1; иг зиарб Запись старого значения ТОЗ на второе место в стеке ТОЗ = Н; Во1о (МВВ!) Обновление ТОЗ Давайте перепишем эту последовательность для М1с-3. Следует помнить, что теперь тракт данных работает три цикла: один служит для загрузки регистров А Зачем нужны целых три дополнительных регистра? Ведь теперь для прохождения сигнала через тракт данных требуется 3 цикла: один для загрузки регистров А и В, второй для запуска АЛУ и схемы сдвига, а также загрузки регистра С, третий для сохранения значения регистра-зашелки С обратно в нужных регистрах.
Мы что, ненормальные? (ттодсказкпк нет.) Существует целых две причины введения дополнительных регистров: 1. Мы можем повысить тактовую частоту, поскольку максимальная задержка теперь стала меньше. 2. Во время каждого цикла мы можем использовать все части тракта данных. После разбиения тракта данных на три части максимальная задержка прохождения сигнала уменьшается, в результате тактовая частота может повышаться.
Будем считать, что, если разбить цикл тракта данных на три примерно равных интервала, тактовая частота увеличится втрое. (На самом деле это не так, поскольку мы добавили в тракт данных еще два регистра, но в первом приближении это допустимо.) Поскольку мы предполагаем, что все операции чтения из памяти и записи в память выполняются с использованием кэш-памяти первого уровня и эта кэш-память построена из того же материала, что и регистры, мы можем сделать вывод, что операция с памятью занимает один цикл.
На практике, однако, этого не так легко достичь. Второй пункт связан с обшей производительностью, а не со скоростью выполнения отдельной команды. В микроархитектуре М1с-2 во время первой и третьей частей каждого цикла АЛУ простаивает. Если разделить тракт данных на три части, то появляется возможность использовать АЛУ в каждом цикле, вследствие чего производительность машины увеличивается втрое. А теперь посмотрим, как работает тракт данных М1с-3. Однако сначала нужно как-то назвать защелки. Проще всего назвать защелки А, В и С и считать их регистрами, подразумевая ограничения тракта данных.
В табл. 4.9 приведен фрагмент программы для микроархитектуры М)с-2 (реализация команды 5ИЯР). Разработка уровня микроархитектуры 323 и В, второй — для выполнения операции и загрузки регистра С, третий — для записи результатов в регистры. Каждый из этих циклов мы назовем микрошагом. Реализация команды 5(!АР для М!с-3 показана в табл. 4.10. В цикле 1 мы начинаем микрокоманду знар1, копируя значение ор в регистр В. Не имеет никакого значения, что происходит в регистре А, поскольку, чтобы отнять 1 из В, ЕХА (сигнал разрешения А) блокируется (см. табл.
4.1). Для простоты мы не показываем присваивания, которые не используются. В цикле 2 мы производим операцию вычитания. В цикле 3 результат сохраняется в регистре МАК, и после этого, в конце третьего цикла, начинается процесс чтения. Поскольку чтение из памяти занимает один цикл, закончится он только в конце четвертого цикла. Это показано присваиванием значения регистру М?Ж в цикле 4. Значение из М1Ж можно считывать не раныпе пятого цикла. Таблица 4.10. Реализация команды ЗУУАР в архитектуре М(с-3 Зткар! Зегар2 3!ггарз Зегар4 Загара Загара Цике МАВ = ЗР— МАИ = ЗР Н = МОРК пгг МОИ = Т08 МЯВ = ЗР— ТОЗ = Н; 1; гг) 1; ат оо!0(МВИ1) ! В =ЗР 2 С= † =ЗР 3 МАИ=С;гп С=В 4 МОИ = Мегп МЯИ = С В=МОИ С=В Н = С; тгг В = ТОЗ С=В В = ЗР С= †МЯЯ=С;иг Мегп = МОИ В =Н С=В 10 Мегп = МОВ ТОЗ = С ао1о (МВИ1) А теперь вернемся к циклу 2.
Мы можем разбить микрокоманду зиар2 на микрошаги и начать их выполнение. В цикле 2 мы копируем значение 5Р в регистр В, затем пропускаем значение через АЛУ в цикле 3 и, наконец, сохраняем его в регистре МАК в цикле 4. Пока все хорошо. Должно быть ясно, что, если мы сможем начинать новую микрокоманду в каждом цикле, скорость работы машины увеличится в три раза. Такое повышение скорости происходит за счет того, что машина М(с-3 производит в три раза больше циклов в секунду, чем М10-2. Фактически мы построили конвейерный процессор. К сожалению, мы наткнулись на преграду в цикле 3. Прекрасно было бы начать микрокоманду зиарЗ, но эта микрокоманда сначала пропускает значение МПК через АЛУ, а значение МПК не может быть получено из памяти до начала цикла 5.
Ситуация, когда следующий микрошаг не может начаться, потому что перед этим нужно получить результат выполнения предыдущего микрошага, называется реальной взаимозависимосп ю, или КгО)(г-взаимозависимостью 1Кеас1 А1тег Юг(те — чтение после записи). Взаимозависимости иногда называют рисками. 324 Глава 4. Уровень микроархитектуры В такой ситуации требуется считать значение регистра, которое еще не записано. Единственное разумное решение в данном случае — отложить начало микрокоманды зиарЗ до того момента, когда значение МОК станет доступным, то есть до пятого цикла. Ожидание нужного значения называется простоем.
После этого мы можем начинать выполнение микрокоманд в каждом цикле, поскольку таких ситуаций больше не возникает, хотя имеется пограничная ситуация: микрокоманда зиарб считывает значение регистра Н в цикле, который следует сразу после записи этого регистра в микрокоманде зиарЗ. Если бы значение этого регистра считывалось в микрокоманде зизр5, машине пришлось бы простаивать один цикл. Хотя программа М1с-3 требует больше циклов, чем программа М(с-2, она работает гораздо быстрее.