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

8.5. Сохранение слова в памяти

Запись слова по заданному адресу памяти производится похожим образом. Адрес загружается в регистр MAR. Затем данные, подлежащие записи в память, загружа­ются в MDR и выдается команда записи. Команда Move (R1),R2 выполняется так:

1. R1out, MARin.

2. R2out, MDRin, Write.

3. MDRout, WMFC.

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

9. Конвейерная обработка команд

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

9.1. Базовые концепции

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

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

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

Теперь давайте посмотрим, каким образом эта идея воплощена в компьютер­ном мире. Процессор выполняет программу, по очереди выбирая из памяти и ак­тивизируя ее команды. Обозначим шаги выборки и выполнения команды Ii, как Fi, и Ei. Процесс выполнения программы представляет собой последовательность шагов выборки и активизации команд, как показано на рис. 9.1, а.

Теперь рассмотрим компьютер с двумя отдельными функциональными блока­ми — для выборки команд и для их выполнения (рис. 9.1, б). Команда извлекается из памяти устройством выборки и помещается в промежуточный буфер Bl, кото­рый нужен для того, чтобы блок выполнения мог обрабатывать команду в то вре­мя, как блок выборки уже берет из памяти следующую. Результаты выполнения команды размещаются по указанному в ней адресу. Мы предполагаем, что источ­ник и приемник данных находятся в блоке, помеченном как «Блок выполнения».

Этот компьютер управляется тактовым сигналом с такой частотой, при кото­рой и шаг выборки, и шаг выполнения занимают один такт. Схематически про­цесс работы компьютера представлен на рис. 9.1, в. Во время первого такта блок выборки извлекает из памяти команду I1 (шаг F1) и сохраняет ее в буфере Bl. На втором такте блок выборки берет из памяти команду I2 (шаг F2). Тем временем блок выполнения осуществляет операцию, указанную в команде I1, которую он считывает из буфера Bl (шаг E1). По окончании второго такта обработка коман­ды I1 завершается, к этому моменту из памяти уже считывается команда I2. Те­перь в буфере Bl сохраняется команда I2, заменяя команду I1, которая больше не нужна. Шаг E2 производится блоком выполнения в течение третьего такта, пока команда I3 извлекается из памяти блоком выборки. И так далее. В результате и блок выборки и блок выполнения команд все время заняты, а скорость команд вдвое больше, чем при последовательной обработке, которая схематически показа­на на рис. 9.1, а. Блоки выборки и выполнения команд, показанные на рис. 9.1, б, составляют двухступенчатый конвейер, на каждой ступени которого совершается один шаг обработки команды. Для хранения информации, передаваемой с одной ступени обработки команды на другую, применяется промежуточный буфер Bl. В конце каждого такта в этот буфер загружается новая информация.

а

б

в

Рис. 9.1. Принцип конвейерной обработки команд: последовательное выполнение (а);

аппаратная организация (б); конвейерная обработка команд (в)

Процесс обработки команды может быть разбит на количество шагов, превы­шающее два. Например, конвейерный процессор способен обрабатывать команды за четыре шага. Рассмотрим их.

F: Выборка (Fetch) — чтение команды из памяти.

D: Декодирование (Decode) — декодирование команды и выборка ее исход­ных операндов.

E: Выполнение (Execute) — выполнение заданной в команде операции.

W: Запись (Write) — сохранение результата по целевому адресу.

В какой последовательности происходят события при такой схеме обработки команды, показано на рис. 9.2, а. В каждый момент процессор обрабатывает четы­ре команды. Это означает, что он содержит четыре отдельных функциональных блока (рис. 9.2, б).

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

Буфер Bl: команда I3, выбранная на такте 3 и обработанная блоком деко­дирования команды.

Буфер В2: исходные операнды команды I2 и спецификация выполняемой операции. Эта информация сформирована схемами дешифратора на так­те 3. Буфер В2 включает также информацию, необходимую для шага W2, на котором осуществляется запись команды I2. Хотя она не нужна на сту­пени выполнения, на следующем такте она передается на ступень записи для осуществления соответствующей операции.

Буфер ВЗ: результаты, которые сгенерированы блоком выполнения ко­манды, и информация о месте назначения данных команды I1.

а

б

Рис. 9.2. Структура 4-ступенчатого конвейера: выполнение команды за 4 шага (а);

аппаратная организация (б)