Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура компьютеров / 9_Процессор-конвейер.doc
Скачиваний:
64
Добавлен:
20.03.2015
Размер:
284.67 Кб
Скачать

9.2. Очередь команд и упреждающая выборка

Промахи при обращении к кэш-памяти и команды перехода обуславливают при­остановку конвейера на один и более тактов. Для сокращения отрицательных по­следствий этих событий во многие процессоры включают сложные блоки выбор­ки, которые извлекают команды еще до того, как они понадобятся, и помещают их в очередь. Отдельный блок, называемый блоком диспетчеризации, пересылает ко­манды, расположенные в начале очереди, блоку выполнения. Схема обработки команд таким процессором приведена на рис. 9.10. Помимо выборки команд из очереди блок диспетчеризации выполняет их декодирование.

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

9.3. Конвейерная обработка и система команд

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

9.3.1. Режимы адресации

Набор поддерживаемых компьютером режимов адресации должен обеспечивать простой и эффективный доступ к самым разнообразным структурам данных. Широкую популярность завоевали индексный, косвенный, автоинкрементный и автодекрементный режимы. Многие процессоры позволяют по-разному их ком­бинировать, благодаря чему их системы команд являются более гибкими.

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

Для сравнения различных подходов к выбору режимов адресации давайте рас­смотрим простую модель доступа к операндам в памяти. Выполнение команды Load X(R1),R2, предназначенной для загрузки данных из памяти, занимает пять тактов (рис. 9.5). Подобную команду

Load (R1),R2

способен выполнить 4-ступенчатый конвейер, поскольку она не требует вычисле­ния адреса. Доступ к памяти может осуществляться на ступени E. В случае исполь­зования более сложного режима адресации при доступе к операнду не исключена необходимость в нескольких обращениях к памяти. Например, команда

Load (X(R1)),R2

может быть выполнена так, как показано на рис. 9.6, а, если считать, что смеще­ние индекса, Х, задано в слове команды. После вычисления адреса на такте 3 про­цессору нужно дважды обратиться к памяти — прочитать слово по адресу X+[R1] на такте 4, а также слово по адресу [X+[R1]] на такте 5. Если содержимое регист­ра R2 является исходным операндом следующей команды, выполнение команды будет задержано на три такта. Эту цифру можно сократить до двух за счет про­движения операнда.

Для выполнения такой же операции загрузки с использованием только про­стейших адресных режимов потребуется несколько команд. На компьютере, где допускается использование трех операндов, это могут быть такие команды:

Add #X,R1,R2

Load (R2),R2

Load (R2),R2

Команда сложения выполняет операцию R2 ← Х + [Rl], а команды загрузки выби­рают из памяти сначала адрес, а затем операнд. Этой последовательности команд требуется то же количество тактов, что и первой команде загрузки (рис. 9.6, 6).

Рассмотренный пример демонстрирует, что использование в конвейерном про­цессоре сложных режимов адресации, нуждающихся в нескольких обращениях к памяти, не всегда способствует ускорению работы программы. Их главными достоинствами являются сокращение количества команд, необходимых для ре­шения конкретной задачи, и уменьшение занимаемого программой объема основ­ной памяти. Наряду с указанными положительными характеристиками команды, реализующие сложные режимы адресации, имеют и недостаток, состоящий в их длительном выполнении, что приводит к задержке в работе конвейера и снижает ее эффективность. Кроме того, для их декодирования и выполнения необходимо аппаратное обеспечение соответствующей мощности. Да и компиляторам .непро­сто работать с такими командами.

а

б

Рис. 9.6. Эквивалентные операции с использованием режимов адресации:

сложного (а); простого (б)

Системы команд современных процессоров ориентированы на максимальное использование преимуществ конвейерной организации процессора. И поскольку сложные режимы адресации не годятся для конвейерного выполнения, их стара­ются не применять. Адресные режимы современных процессоров соответствуют следующим требованиям:

  • Для доступа к операндам выполняется не более одного обращения к па­мяти.

  • Обращение к памяти осуществляется только в командах загрузки данных из памяти (Load) и сохранения данных в памяти (Store).

  • Используемые адресные режимы не имеют побочных эффектов.

Этим требованиям соответствуют регистровый, косвенный регистровый и ин­дексный режимы адресации. Первые два вообще не требуют вычисления адреса. В индексном режиме адрес может быть вычислен за один такт независимо от то­го, задано значение индекса в команде или регистре. Обращение к памяти про­изводится на следующем такте. Перечисленные режимы адресации не имеют побочных эффектов за одним исключением. В некоторых архитектурах, в част­ности в процессорах ARM, разрешается записывать вычисленный в индексном режиме адрес обратно в индексный регистр. Это побочный эффект, нарушающий приведенные выше требования. Кроме того, обратите внимание на возможность использования относительной адресации, являющейся одной из разновидностей индексной адресации, при которой в качестве индексного регистра используется счетчик команд.

Три указанных выше правила впервые были реализованы в RISC-процессо­рах. Впервые в компьютерах с архитектурой SPARC, которая удовлетво­ряет выдвинутым в них требованиям.