Э. Таненбаум - Архитектура компьютера (1127755), страница 79
Текст из файла (страница 79)
Основной операционный блок записывает значение в РС только в том случае, если необходимо изменить характер последовательности байтов. Это происходит в команде перехода, а также в комзндах 1ИЧОКЕЧ1кТОАЕ и 1кЕТОйл. Поскольку микропрограмма больше не увеличивает РС явным образом при вызове кода операции, блок выборки команд должен обновлять РС сам. Как это происходит? Блок 1Р13 способен распознать, что байт из потока команд получен, то есть что значения регистров МВК1 н МВК2 (или их вариантов без знака) уже счнтаны. С регистром РС связана отдельная схема инкремента, которая увели- Разработка уровня микроархитектуры 315 чивает значение на 1 или на 2 в зависимости от того, сколько байтов получено.
Таким образом, регистр РС всегда содержит адрес первого еше не полученного байта. В начале каждой команды в регистре МВВ находится адрес кода операции этой команды. Отметим, что существует две разные схемы инкремента, которые выполняют разные функции. Регистр РС считывает байты и увеличивает значение на 1 или на 2. Регистр 1МАВ считывает слова и увеличивает значение только на 1 (для четырех новых байтов). Как и МАК, регистр 1МАВ соединен с адресной шиной, при этом бит 0 регистра 1МАВ связан с адресной линией 2 и т. д.
(перекос шины), чтобы осуществлять переход от адреса слова к адресу байта. Мы скоро увидим, что, если нет необходимости увеличивать значение РС в основном цикле, это дает большой выигрыш, поскольку обычно в микрокоманде, в которой происходит увеличение РС, помимо этого больше ничего не происходит. Если эту команду устранить, длина пути сократится. Однако для увеличения скорости работы машины требуется больше аппаратного обеспечения.
Таким образом, мы пришли к третьей возможности сокращения длины пути: Команды из памяти должны вызываться специализированным функциональ- ным блоком. Упреждающая выборка команд из памяти— микроархитектура М1с-2 Блок выборки команд может значительно сократить длину пути для средней команды. Во-первых, он полностью устраняет основной цикл, поскольку в конце каждой команды сразу осуществляется переход к следующей. Во-вторых, АЛУ не нужно увеличивать значение РС. В-третьих, блок 1Г11 сокращает длину пути всякий раз, когда вычисляется 16-разрядный индекс или смещение, поскольку объединяет 16-разрядное значение и сразу передает его в АЛУ в виде 32-разрядного значения без необходимости производить объединение в регистре Н.
На рис. 4.20 показана микроархитектура М1с-2, представляюшая собой усовершенствованную версию М)с-1, к которой добавлен блок выборки команд, изображенный на рис. 4.18. Микропрограмма для усовершенствованной машины приведена в табл. 4.8. Чтобы продемонстрировать, как работает М1с-2, рассмотрим команду 1А00. Она берет второе слово из стека и выполняет сложение как и раньше, но только сейчас ей не нужно осуществлять переход к йа1п1 после завершения операции, чтобы увеличить значение РС и перейти к следующей микрокоманде.
Когда блок выборки команд распознает, что в цикле 1аооЗ произошло обращение к регистру МВк1, его внутренний сдвиговый регистр сдвигает все вправо и перезагружает МВВ1 и МВВ2. Он также осуществляет переход в состояние, которое на 1 меньше текущего. Если новое состояние — это состояние 2, блок выборки команд начинает вызов слова из памяти. Все это реализуется аппаратно. Микропрограмма ничего не должна делать. Именно поэтому команду 1А00 можно сократить с пяти до трех микрокоманд. 316 Глава 4. Уровень микроархитектуры Регистры Сигна ~ Разре а Сигна С аВ Рис. 4.20.
Тракт данных для М1с-2 Таблица 4.8. Микропрограмма для Мгс-2 Микрокоманда Операции Комментарий пор1 1асс1 1аее2 Н =ТОЗ Н = вершина стека в основную память и ив нве рого (МВВ1 МАВ=ЗР=ЗР— 1; гс Переход к следующей команде Чтение слова, идущего после верхнего слова стека и Е Разработка уровня микроархитектуры 317 Комментарий Микрокоманде Операции )аООЗ МАЛ =ВР=ВР— 1; гс !зцЬ! ашЬ2 Н =ТОЗ (зцЬЗ МАВ = ЯР = ВР— 1; гс )апс! Н =Т08 Н = вершина стека (апс2 (апОЗ МАВ = ЯР = ЯР— 1; гс юг! Н = вершина стека Н=ТОЯ Юг2 Югз МАВ = ВР = ЯР+ 1 оцр1 Оцр2 МАЛ=ЯР=ЯР-1; гс рор1 рор2 рорз МАВ = ЯР— 1; гс звар1 МОВ = ТОЯ звар4 МАВ = ЯР— 1; вг зварб ТОЯ = Н; ро!о (МВВ1) Обновление ТОЗ ЯР = МАВ = ЯР + 1 ЫрцзЬ2 (!оас! МАВ = !.Н+ МВВ1(); гс Продолжение нт звар2 зварз вварб Ырозп1 МОВ = ТОЯ = МОВ+ Н; вг; ро1о (МВВ1) МОВ = ТОЗ = МОй— Н; вг; ро1о (МВВ1) МОВ = ТОЗ = МОВ И Н; вг; цо!о (МВВ1) МОВ = ТОЗ = МОВ ИЛИ Н; вг; ро1о (МВВ1] МОВ = ТОЯ; вг; ро1о (МВВ! ) Т08 = МОВ; ро!о (МВВ1) МАВ = 8Р Н= МОЛ;вг МОВ = ТОЗ = МВВ1; вг; ро1о (МВВ1) Суммирование двух верхних слов; запись суммы в верхнюю позицию стека Чтение слова, идущего после верхнего слова стека Н = вершина стека Вычитание ТОЯ из вызванного значения ТОЯ вЂ” 1 Чтение слова, идущего после верхнего слова стека Логическое умножение вызванного значения ТОЯ вЂ” 1 и ТОЯ (операция И) Чтение слова, идущего после верхнего слова стека Логическое сложение вызванного значения ТОЯ вЂ” 1 и ТОЗ (операция ИЛИ) Увеличение ЯР на 1 и копирование результата в регистр МАВ Запись нового слова в стек Чтение слова, идущего после верхнего слова стека Программа ждет, пока закончится процесс чтения Копирование нового слова в регистр ТОЯ Чтение второго слова из стека; установка регистра МАВ на значение ЗР Подготовка к записи нового второго слова стека Сохранение нового значения ТОЯ; запись второго слова стека Копирование прежнего значения ТОЯ в регистр МОВ Запись прежнего значения ТОЯ на второе место в стеке Установка регистра МАВ для записи в новую вершину стека Обновление стека в регистре ТОЯ и памяти Перемещение значения (У с индексом в регистр МАВ; чтение операнда 318 Глава 4.
Уровень микроархитектуры Таблица 4.8 (продолжение) Комментарий Микрокоманде Операции МАВ = 8Р = 8Р + 1 йоа02 ТОЗ = МОВ,' вг; 0ото (МВВ! ) йоаОЗ каоге1 МАВ = ьу+ МВВ!О МОВ = ТОЗ; вг !з1оге2 МАВ = ЗР = ЯР— 1; ге Уменьшение ЯР на 1; чтение нового значения ТОЯ ТОЗ = МОВ; 0о1о (МВВ1) Мое! оо!о (МВВ! ИЛИ Ох100) в!Ие йоа01 МАВ = СУ + МВВ20; го; оо1о йоад2 в!Ое 'е1оге! МАВ = СРР + МВВ20; гс1; 0о1о йоа02 (Ос в1 йпс1 МАВ = (У + МВВ10; ге йпс2 Н = МВВ1 йпсЗ МОВ = МОВ+ Н; вг; оо1о (МВВ! ) оото! 0о1о2 0о1оЗ Переход к следующей команде 0о1о4 0о1о (МВВ1) МАВ = ЯР = ЗР— 1; ге Чтение второго сверху слова в стеке ИИ1 ИИ2 !013 Н = ОРС; И(Н) оо1о Т; е!зе оо1о Р И(14 Иец1 МАВ = ЯР = ЗР— 1; ге Чтение второго сверху слова в стеке Иец2 Иеца Иец4 2 = ОРС; И(2) 0о1о Т; е!зе оо!о Р И !сгпред1 МАВ = 8Р = ЯР— 1; гс Чтение второго сверху слова в стеке )з1огеЗ (з1оге4 )з1огеб МАВ = ! Н ь МВВ20; 0о1о )з1оге2 Н = РС вЂ” 1 РС = Н а МВВ2 ОРС = ТОЯ ТОЯ = МОВ ОРС = ТОЯ ТОЯ = МОВ Увеличение ЗР на 1; перемещение нового значения ЗР в регистр МАВ Обновление стека в регистре ТОЗ и памяти Установка регистра МАВ на значение Гу + индекс Копирование значения ТОЯ для сохранения в памяти Машина ждет окончания процесса чтения Обновление ТОЗ Следующий адрес — Ох100 ИЛИ код операции То же, что ~(оа01, но с использованием 2-байтного индекса То же, что !з1оге1, но с использованием 2-байтного индекса Тоже, что кйее йоас!, но индексирование осуществляется из регистра СРР Установка регистра МАВ на значение ! У + индекс; чтение этого значения Присваивание регистру Н константы Увеличение на константу и обновление Копирование значения РС в регистр Н Прибавление смещения и обновление РС Машина ждет, пока блок выборки команд вызовет новый код операции Временное сохранение ТОЗ в ОРС Запись новой вершины стека в ТОЗ Переход по биту Н Временное сохранение ТОЗ в ОРС Запись новой вершины стека в ТОЗ Переход по биту Е Комментарий Операции Микрокоманда К !сгпрец2 Установка регистра МАВ на чтение новой вершины стека МАЯ = 8Р = ВР— ! 8 )сгпреоЗ Н = МОЯ; гс1 Копирование второго слова из стека в регистр Н Временное сохранение Т08 в ОРС Помещение новой вершины стека в Т08 ОРС = Т08 Т08 = МОВ 2 = Н вЂ” ОРС; 8(2) цо1о Т; е)зе цо1о Р Н = РС вЂ” 1; цо1о цо1о2 То же, что цо1о1 Н = МВВ2 цо(о (МВЯ1) Г2 МАВ = СРР ь МВЯ20; гг! (пчоКе чмца1! Помещение адреса указателя процедуры в регистр МАЯ !пчоке чк1иа12 !пчоке Иг(ца13 ОРС = РС РС = МОВ )пчоКе Иица14 Т08 = 8Р— МВЯ20 Т08 = МАВ = Н = Т08 ь1 )пчоКе ч!пса(5 !пчоКе ч)г(ца(б Моя = бр н МВВ20 а 1; вгг )пчоке ч!г(ца)7 МАВ = 8Р = МОВ МОВ = ОРС; чгг МАВ = 8Р = 8Р + 1 !пчоке чк1ца(8 !пчоКе чаща(9 Увеличение 8Р на 1; теперь 8Р указывает на ячейку, в которой хранится старое значение КН Сохранение старого значения КН !пчоКе ч!г(иа1!О МОВ = !М; ччг !пчоКе ч!Пца)1! КЧ = Т08; цо1о (МВВ1) Установка значения !Н на нулевой параметр МАВ = 8Р = Ж гб 1ге1цгп ! !ге1цгп2 !ге1цгпЗ Процесс считывания связующего указателя !.Н = МАЯ = МОЯ; гс )ге1цгп4 МАВ = КН ч- 1 Восстановление РС Восстановление КН МОВ = Т08; вг; цо1о (МВВ1) 8 !сщрвц4 8 юп!ред5 8 (сгпрецб !ге1цгп5 !ге1цгпб )ге1игп7 )ге1огп8 РС = МОВ; гд МАВ = 8Р 1.Ч = МОВ Разработка уровня микроархитектуры 319 Если два верхних слова равны, осуществляется переход к Т; если они не равны, осуществляется переход к Р Игнорирование байтов, находящихся в регистре МВВ2 Сохранение значения РС в регистре ОРС Установка РС на первый байт кода процедуры Т08 = адрес ОВЗВЕР— 1 Т08 = адрес ОВЗВЕР Перезапись ОВчяЕР со связующим указателем Установка регистров 8Р и МАВ на адрес ячейки, в которой содержится старое значение РС Подготовка к сохранению старого значения РС Переустановка регистров ВР и МАВ для чтения связующего указателя Установка регистров ! Ч и МАВ на связующий указатель; чтение старого значения РС Установка регистра МАВ на старое значение КН; чтение старого значения КН Сохранение результата в исходной вершине стека 320 Глава 4.