Э. Таненбаум - Архитектура компьютера (1127755), страница 90
Текст из файла (страница 90)
Конвейер 0йгаЗРАВС И! Си Конвейер Пгга5РАКС П1 Сп из 14 ступеней в упрощенной форме изображен на рис. 4.34. В левой части рисунка ступени обозначены буквами от А до П. Рассмотрим каждую из них в отдельности. Открывает конвейер ступень А (Аг(йгезз йепегаг1оп — формирование адреса). Здесь определяется адрес каждой последующей команды, которую предполагается выбрать. Как правило, он совпадает с адресом следующей команды, однако в некоторых случаях последовательная организация нарушается, например, если предыдущая команда является командой Примеры уровня микроархитектуры 361 Стадия А Адресный мультиплексор ,:.,:Тв 'ицв '.": :,, цхервхШтов „.
Кэш команд Объект перехода Декодирование команд Очередь команд *й' о й в оо х хи х о ак а Е .,'.,;;фщ.р'„ф~~тщ'-,й ех;ПТ!., АГО АЬО о,' Знаковое расширение и вы авнивани ь,ехА' ' Х Т Рис. 4.34. Упрощенная схема конвейера ОйгаЗРАНС Ш Си спрогнозированного перехода, перехвата исключения или прерывания, которое необходимо обработать. Так как прогнозирование ветвления за один цикл невоз- можно, команда, непосредственно следующая за условным переходом, выполня- ется в любом случае, вне зависимости от целевого объекта перехода. 362 Глава 4. Уровень микроархитектуры Исходя из определенного ранее адреса на ступени Р (Рге1ппшагу !егсЬ— предварительная выборка) вызываются команды из кэша команд первого уровня (до четырех за цикл).
Для выявления условных переходов и проверки правильности прогноза производятся обращения к таблице переходов. На ступени Р(Ее1сЬ вЂ” выборка) завершается выборка команд и их передача в кэш команд. На ступени В (ВгапсЬ 1агяег — обнаружение обьекта перехода) происходит декодирование выбранных команд. Если среди них обнаруживаются спрогнозированные переходы, они передаются обратно на ступень А для непосредственной выборки соответствующих команд. На ступени 1 (1пзггисгюп ягопр !огшасюп — группировка команд) входящие команды сортируются по группам, в зависимости от того, к каким из шести функциональных блоков они обращаются: 1.
АЛУ 1 для выполнения целочисленных операций. 2. АЛУ 2 для выполнения целочисленных операций. 3. АЛУ 1 для выполнения операций с плавающей точкой и графических операций. 4. АЛУ 2 для выполнения операций с плавающей точкой и графических операций. 5.
Конвейер переходов (па рис. 4.34 не представлен). 6. Операции загрузки и хранения, а также специальные операции. Ощутимые различия есть как между АЛУ для выполнения целочисленных операций, так и между АЛУ для выполнения операций с плавающей точкой и графических операций. В обоих случаях различаются наборы команд, которые способны выполнять те или иные АЛУ. Сортировка команд по блокам проводится на ступени 1. На ступени/ (1пзггпсгюп з1аяе ягопр!пя — извлечение команды из очереди) команды подготавливаются к отправке в блок выполнения во время следующего цикла.
В течение одного цикла на ступень А можно передать до четырех команд. Выбор команд ограничен доступностью функциональных блоков. К примеру, единовременно можно вызвать две команды выполнения целочисленной операции, одну команду выполнения операции с плавающей точкой и одну команду загрузки или сохранения. Однако запустить за один цикл три команды выполнения целочисленных операций невозможно. На ступени Я (йей!з1ег — регистр) производится поиск регистров, необходимых для обработки команд выполнения целочисленных операций.
Запросы на предоставление регистров с плавающей точкой перенаправляются в соответствующий регистровый файл. Здесь же проводятся проверки на предмет взаимозависимостей. Если необходимый регистр оказывается недоступным по причине его занятости предыдущей командой, текущая команда приостанавливается, а все последующие команды — блокируются. В отличие от Репгшш 4, в ИсгаЗРАЕС 11! Сп команды вне исходной последовательности не выполняются. Ступень Е (Ехеспгюп — выполнение) предназначена для непосредственного выполнения целочисленных команд. Для выполнения большинства арифметических и булевых операций, а также операций сдвига, обработкой которых занимаются целочисленные АЛУ, достаточно одного цикла.
Сразу по завершении выполнения команды соответствующим образом обновляется регистровый файл Примеры уровня микроархитектуры 363 рабочего регистра. Некоторые сложные целочисленные команды передаются в специальный блок. Что касается команд загрузки и сохранения, то на данной ступени их выполнение только начинается, но не заканчивается. Операнды для выполнения команды с плавающей точкой извлекаются из соответствующего регистрового файла.
На ступени Е, помимо обработки команд условного перехода, определяется их направление (переход/без перехода). В случае неверного прогноза сигнал отправляется обратно на ступень А, и конвейер освобождается. На ступени С (СасЬе — кэш) завершается доступ к кэш-памяти первого уровня.
Здесь же определяются результаты команд, предусматривающих чтение данных из памяти (например, команд загрузки). На ступени ЛТ (М1зз — промах) производится обработка слов, запрошенных, но не найденных в кэш-памяти первого уровня. Сначала выполняется поиск в кэше второго уровня, а в случае кэш-промаха осуществляется обращение к памяти, занимающее несколько циклов. Здесь же выполняются операции знакового расширения и выравнивания для байтов, четвертинок слов н половинок слов, найденных в каше первого уровня.
Для операций загрузки с плавающей точкой, у которых в кэше предвыборки имеет место кэш-попадание, на этом этапе удается получить результаты. По соображениям синхронизации кэш предвыборки при обработке целочисленных данных не задействуется. На ступени йт (Жгйе — запись) результаты извлекаются из специального блока и записываются в регистровый файл рабочего регистра. На ступени Х (еХ~епд — продленное выполнение) завершается большинство графических команд и команд с плавающей точкой. Перед формальной пересортировкой результатов, происходящей на ступени П, результаты этих команд предоставляются последующим командам путем перенаправления для загрузки. На ступени Т (Тгар — перехват) перехватываются исключения, связанные с целочисленными командами н командами с плавающей точкой.
Именно эта ступень отвечает за перехват исключений и обработку прерываний. Иными словами, после возникновения исключения или прерывания состояние машины должно отвечать определенным требованиям; в частности, все ранее запущенные команды должны быть завершены, а запуск последующих отменен. На ступени П состояние целочисленных регистров и регистров с плавающей точкой фиксируется в соответствующих архитектурных регистровых файлах. При возникновении исключения или прерывания видимыми становятся именно эти значения, а не содержимое рабочих регистров. Операция записи регистра в архитектурный файл соответствует операции пересортировки результатов в процессорах Репбпш.
Кроме того, на ступени П результаты всех завершенных команд сохранения записываются в кэш записи (вместо кэша данных первого уровня). В конечном итоге строки этого кэша переписываются в кэш второго уровня, минуя кэш первого уровня (его содержимое не пересекается с содержимым каша второго уровня). Эта схема упрощает задачу сборки мультнпроцессоров П1сгаЯРАКС. Наше описание микросхемы ()1сгаЯРАКС 1П не отличается полнотой, но его вполне достаточно, чтобы вы получили некоторое представление о принципах ее работы и отличиях от архитектуры РепФ1пш 4. 364 Глава 4. Уровень микроархитектуры Микроархитектура процессора 8051 Микроархитектура процессора 8051 (рис. 4.35) значительно проще двух предыдущих — Репе(шп и ШсгаЯРАКС. Дело в том, что размер этой микросхемы очень мал (она состоит из 60 000 транзисторов), а разрабатывалась она задолго до того, как конвейерная технология стала популярной.
Кроме того, перед разработчиками 8051 ставилась задача создать дешевую, а не быструю микросхему. Как известно, «дешевый» и «простой» вЂ” очень близкие понятия, в то время как дешевизна и быстродействие в на!пем контексте редко сочетаются. Основная шина я шина Рис.
4.35. Микроархитектура процессора ЗОБ! Центральное положение в микроархитектуре 8051 занимает основная шина. С ней связаны немногочисленные регистры, причем для большинства из них операции чтения и записи выполняются программно. Регистр АСС представ- Примеры уровня микроархитектуры 366 ляет собой основной арифметический регистр, в котором сохраняется большая часть результатов вычислений.
Через него проходят почти все арифметические команды. Регистр В применяется для умножения и деления; кроме того, при хранении результатов он выполняет роль временного регистра. Регистр 5Р является указателем стека, как и в большинстве других систем он указывает на вершину стека, В регистре команд 1К содержатся команды, выполняемые в данный момент.