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

9.5.3. Операция диспетчеризации

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

Можно ли диспетчеризировать команды не по порядку? Чтобы ответить на этот вопрос, обратимся к рис. 9.11, б. Если, например, вывод команды I2 будет от­ложен из-за промаха при обращении к кэш-памяти за ее исходным операндом, на такте 4 целочисленный блок окажется занятым, и подготовка команды I4 к вы­полнению станет невозможной. Корректна ли в этом случае диспетчеризация ко­манды I5? В принципе, да, если для команды I4 в буфере реорганизации зарезер­вировано место, что обеспечит выход команд из конвейера в правильном порядке. Однако внеочередная диспетчеризация команд требует большой осторожности. Приступая к ней, нужно иметь гарантию, что не произойдет взаимоблокировки.

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

Рассмотрим, вследствие чего происходит взаимоблокировка, если команды диспетчеризируются не по порядку. Допустим, процессор имеет только один вре­менный регистр, который резервируется для команды I5, когда она диспетчеризируются. Из-за этого нельзя подготовить к выполнению команду I4, которая ждет освобождения временного регистра, а его невозможно освободить, пока коман­да I5 не покинет процессор. В свою очередь, команда I5 не покинет процессор пре­жде, чем это сделает команда I4. Таким образом, налицо взаимоблокировка.

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

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

9.6 Семейство процессоров Intel ia-32

Процессоры Intel пользуются большим успехом и широко применяются в ноут­буках и персональных компьютерах. В 1980-х годах фирма Intel выпустила пер­вую серию процессоров для использования в IBM PC. Они базировались на про­цессоре 8086, созданном в 1979 году, который генерировал на внешней шине 20-битовые адреса, а также оперировал 16-разрядными данными. (В первом IBM PC использовалась недорогая 8-разрядная версия процессора 8086, называвшая­ся 8088.) Поскольку процессор 8086 был заключен в 40-контактный корпус, адре­са и данные мультиплексировались на одни и те же контакты.

Архитектура процессоров Intel постоянно совершенствовалась, на основе ба­зовой системы команд выпускались все более мощные процессоры. Эволюцион­ный ряд включает процессоры 80286, 80386, 80486, а также процессоры текущей серии Pentium. Процессор 80286 был 16-разрядным, последующие процессоры оперировали 32-разрядными адресами и данными. Первым представителем се­мейства IA-32 стал процессор 80386. Благодаря тому что 32-разрядные микросхемы выпускаются в виде модулей большего размера, исчезла необходимость в мульти­плексировании линий адреса и данных.