Основные особенности МК. Понятие микроконтроллера. Классификация микропроцессоров. 8-разрядные МК, страница 16

Реализация суперскалярной архитектуры основана на втором принципе, в соответствии с которым используется единственный конвейер команд с распараллеливанием фазы исполнения путем использования большого числа обрабатывающих (исполнительных) блоков, способных параллельно выполнять несколько команд программы.

Существенной особенностью суперскалярной обработки в процессорах с архитектурой Р6 является ее реализация не на уровне машинных команд, а на уровне микрокоманд. В связи с этим, во многих источниках отмечается, что процессоры с этой архитектурой, являясь по сути CISC-процессорами, имеют в своем составе RISC-ядро.*

2.     Реализация кэш-памяти второго уровня (кэш L2) в одном корпусе с CPU.

Кристалл кэш-памяти L2 содержит 15,5 млн. транзисторов для емкости 256 Кбайт или 31 млн. транзисторов для емкости 512 Кбайт, в то время, как кристалл CPU содержит всего (включая кэш L1) 5,5 млн. транзисторов. Основной причиной такого объединения является увеличение производительности процессора.

Кэш L2 связан с CPU специально выделенной шиной шириной 64 бита и работает на той же тактовой частоте, что и CPU.

Подобный подход получил дальнейшее распространение в виде так называемой двойной независимой шины DIB (DualIndependentBus). В соответствии с концепцией DIP для связи CPU с памятью и системной шиной используется FSB (FrontSideBus), в то время как для связи CPU с кэшем L2 используется BSB (BackSideBus).

Основные особенности реализации суперскалярной обработки в процессорах P6

Основная идея состоит в следующем: суперскалярный процессор извлекает из памяти несколько команд, а затем пытается отыскать среди соседних команд такие, которые не зависят друг от друга и, следовательно, могут выполняться параллельно при условии обеспечения этой параллельности аппаратными средствами (наличие большого числа исполнительных блоков).

Если входные данные (операнды) очередной команды зависят от выходных данных (результата) одной из предшествующих команд, то последующая команда должна оставаться в стадии ожидания фазы выполнения до момента разрешения конфликта по данным. После того, как процессор проанализирует наличие подобных зависимостей между выбранными командами, он может приступить к их выполнению, причем порядок выполнения команд может отличаться от порядка их следования в машинном коде программы. Такая особенность суперскалярных процессоров называется Out-of-OrderExecution (исполнение с изменением порядка команд).

По мнению Столлингса основными аппаратными методами, которые используются в суперскалярных процессорах, являются:

1. дублирование ресурсов;

2. свободный порядок запуска команд на исполнение;

3. переименование регистров.

1) Дублирование ресурсов позволяет сокращать так называемые конфликты по ресурсам. Типичными примерами такого дублирования могут служить использование двух или трех блоков ALU (IU) в составе процессора, а также использование многопортовой кэш-памяти (в основном – L1).

2) Свободный порядок запуска команд на выполнение. При прямом порядке запуска команд процессор декодирует и далее выполняет команды в порядке их следования в машинной программе, пока не обнаружит зависимость между очередной  командой и предыдущими или конфликт по ресурсам. После обнаружения конфликта какого-либо вида дальнейшие команды не декодируются до тех пор, пока обнаруженный конфликт не будет устранен. При использовании стратегии прямого порядка запуска команд процессор лишен возможности просмотра последующих команд программы, которые, в принципе, можно было запустить в конвейер в обход конфликта, поскольку они не зависят от команд, уже находящихся в конвейере. В соответствии с этим для уменьшения простоев конвейера возникла идея реализации стратегии свободного порядка запуска команд на фазу исполнения. Для этой цели между фазами декодирования и исполнения помещается промежуточный буфер, который обычно называют окном команд (Instruction Window). Каждая декодированная команда помещается в это окно, и до тех пор, пока буфер в виде окна не заполнится, процессор может продолжать выборку и декодирование очередных команд программы. Выдача команд из буфера на исполнение определяется не столько последовательностью их поступления в буфер, сколько мерой готовности этих команд к выполнению. Иначе говоря, любая команда, для которой определены операнды и свободен требуемый для исполнения функциональный блок, немедленно выдается из окна на фазу исполнения. Таким образом, организация свободного порядка запуска команд позволяет просматривать программу вперед и отыскивать в ней команды, которые можно с опережением запустить на выполнение. Единственным ограничением является необходимость сохранения корректности результатов внеочередного выполнения команд. Это означает, что очередная команда программы не может быть запущена на исполнение, если имеется какая-либо зависимость этой команды от ранее запущенных команд или конфликт в использовании ресурсов.