Второй способ — сохранять дубликаты перезаписываемых такими командами регистров во временных скрытых регистрах, что позволяет процессору вернуться в предыдущее состояние.
Оба способа используются на практике, но сложны, требуют громоздкого учёта использования системных ресурсов.
Конвейерное выполнение оказывается практически невозможным в том случае, если неразрешённые переходы «наслаиваются» один на другой, то есть следующий условный переход предсказывается до того, как разрешён предыдущий, а также в том случае, если команда пытается воздействовать не на регистры процессора, а на аппаратное обеспечение за его пределами. В последнем случае процессор, как правило, не может отменить выполнение команды. Например, нельзя отменить команду вызова процедуры или прерывания, перезаписывающего сектор на диске.
Архитектура процессора P6 является трёхходовой (three-way) суперскалярной конвейеризованной.
Трёхходовая суперскалярная архитектура означает, что при помощи техники параллельной обработки данных процессор может, в среднем, декодировать, диспетчеризовать и полностью выполнить три команды за цикл. Для достижения такой пропускной способности процессоры используют расщеплённый 12-стадийный конвейер, поддерживающий исполнение с изменением последовательности команд.
Рис. 10.4. Структура процессоров семейства P6 кэш 3-го уровня может присутствовать в архитектуре NetBurst
Для обеспечения постоянного поступления команд и данных в конвейер, исполняющий команды, архитектура процессоров P6 содержит двухуровневый кэш. Кэш первого уровня предусматривает 8-килобайтный кэш команд и 8-килобайтный кэш данных, оба тесно связанные с конвейером. Кэш второго уровня представляет собою статическое ОЗУ объёмом 256, 512 или 1024 килобайт, сопряжённое с ядром процессора посредством 64-битной шины кэш-памяти, работающей на полной скорости таймера.
Центральным моментом архитектуры процессоров P6 является механизм исполнения с изменением последовательности команд, называемый динамическим исполнением. Динамическое исполнение включает три концепции обработки данных:
— Глубокое предсказание ветвлений позволяет процессору декодировать команды из необходимой ветви, поддерживая конвейер команд полным.
— Динамический анализ потоков данных требует анализа в реальном времени потока данных через процессор, чтобы определить зависимости и обнаружить возможности для исполнения с изменением последовательности команд. Ядро исполнения с изменением последовательности команд может следить за многими командами и выполнять эти команды в порядке, оптимизирующем использование различных исполнительных узлов процессора, обеспечивая, в то же время, целостность данных.
— Умозрительное (speculative) выполнение означает способность процессора выполнять команды, находящиеся вне условной ветви, которая ещё не разрешена, и, в конечном счёте, получать результаты такие же, как и при исходной последовательности выполнения команд. Для обеспечения возможности умозрительного выполнения, архитектура P6 разъединяет диспетчеризацию и выполнение команд от связывания, или объединения результатов. Ядро исполнения с изменением последовательности команд использует анализ потока данных для всех доступных команд в накопителе команд (instruction pool) и сохранения результатов во временных регистрах. Блок возврата затем осуществляет линейный поиск выполненных команд в накопителе команд, которые не имеют зависимостей по данным с другими командами или неразрешённых ветвей. Когда выполненная команда обнаруживается, блок возврата помещает результаты этой команды в памяти или регистры в порядке, требуемом программой, и изымает команды из накопителя команд.
Блок выборки и декодирования содержит семь стадий.
Рис. 10.5. Блок выборки и декодирования
Блок выборки строк загружает из КЭШа команд целые 32-байтные строки. Они загружаются всегда, когда буфер блока не заполнен. Процессом выбора строк управляет блок выработки следующего значения IP.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.