10.5.6 Процесс декодирования
После этапа выборки инструкций х86 из кэша L1 в полном соответствии со схемой классического процессора наступает этап декодирования (трансляции) в машинные команды. Этап декодирования присущ любому современному х86-совместимому процессору, имеющему внутреннюю RISC-архитектуру. В этих процессорах внешние CISC-команды декодируются во внутренние RISC-инструкции, для чего используется декодер команд.
Процесс декодирования состоит из двух этапов. На первом этапе выбранные из кэша L1 блоки инструкций длиной 32 байта помещаются в специальный буфер преддекодирования Predecode/Pick Buffer. В нем из 32-байтных блоков выделяются отдельные инструкции, которые затем сортируются и распределяются по различным каналам декодера. Декодер транслирует х86-инструкции в простейшие машинные команды (микрооперации), называемые Micro-Ops. Сами х86-команды могут быть переменной длины, а вот длина микроопераций уже фиксированная.
Инструкции х86 разделяются на простые (Small x86 Instruction) и сложные (Large х86 Instruction). Простые инструкции при декодировании представляются с помощью одной-двух микроопераций, а сложные команды — тремя и более микрооперациями.
Простые инструкции отсылаются в аппаратный декодер, построенный на логических схемах и называемый DirectPath, а сложные – в микропрограммный (Microcode Engine) декодер, называемый VectorPath. Этот декодер представляет собой своеобразный программный процессор. Он содержит программный код, хранящийся в MIS (Microcode Instruction Sequencer), на основе которого воспроизводится последовательность микроопераций.
Аппаратный декодер DirectPath является трехканальным и может декодировать за один такт три простые инструкции, если каждая из них транслируется в одну микрооперацию, либо одну простую инструкцию, транслируемую в две микрооперации, и одну простую инструкцию, транслируемую в одну микрооперацию, либо две простые инструкции за два такта, если каждая инструкция транслируется в две микрооперации (полторы инструкции за такт). Таким образом, за каждый такт аппаратный декодер DirectPath выдает три микрооперации.
Микропрограммный декодер VectorPath также способен выдавать по три микрооперации за такт при декодировании сложных инструкций. При этом сложные инструкции не могут декодироваться одновременно с простыми, то есть при работе трехканального аппаратного декодера микропрограммный декодер не используется, а при декодировании сложных инструкций, наоборот, бездействует аппаратный декодер.
Микрооперации, полученные в результате декодирования инструкций в декодерах DirectPath и VectorPath, поступают в буфер Pack Buffer, где они объединяются в группы по три микрооперации. В том случае, когда за один такт в буфер поступает не три, а одна или две микрооперации (в результате задержек с выбором инструкций), группы заполняются пустыми микрооперациями, но так, чтобы в каждой группе было ровно три микрооперации. Далее группы микроинструкций отправляются на исполнение.
Если посмотреть на схему декодера в архитектурах К8 и К10, то видимых различий, казалось бы, нет (рис. 10.13). Действительно, принципиальная схема работы декодера осталась без изменений. Разница в данном случае заключается в том, какие инструкции считаются сложными, а какие простыми, а также в том, как декодируются различные инструкции. Так, в архитектуре К8 128-битные SSE-инструкций разбиваются на две микрооперации, а в архитектуре К10 большинство SSE-инструкций декодируется в аппаратном декодере как одна микрооперация. Кроме того, часть SSE-инструкций, которые в архитектуре К8 декодируются через микропрограммный VectorPath-декодер, в архитектуре К10 декодируются через аппаратный DirectPath-декодер.
Кроме того, в архитектуре К10 в декодер добавлен специальный блок, называемый Sideband Stack Optimizer. He вникая в подробности, отметим, что он повышает эффективность декодирования инструкций работы со стеком и, таким образом, позволяет переупорядочить микрооперации, получаемые в результате декодирования, чтобы они могли выполняться параллельно.
- Предисловие
- Глава 1. Общие сведения о микропроцессорах
- 1.1 Классификация микропроцессоров
- 1.2 Характеристики микропроцессоров
- 1.2.1 Тактовая частота
- 1.2.2 Архитектура процессора
- 1.2.3 Технологический процесс производства
- 1.2.4 Частота системной шины
- 1.2.5 Размер кэша
- 1.3 Типы архитектур микропроцессоров
- 1.4 Структурная схема микропроцессоров
- 1.4.1 Микропроцессор Фон-Неймана
- 1.4.2 Конвейер
- 1.4.3 Зависимость между частотой и количеством ступеней конвейера
- 1.5 Представление информации в эвм
- 1.5.1 Двоичное представление целых чисел
- 1.5.2 Представление символьной информации
- Глава 2. Архитектура микропроцессоров ia-32
- 2.1 Состав и функции регистров
- 2.1.1 Основные регистры
- 2.1.2 Регистры дополнительных функциональных модулей
- 2.2 Типы адресации
- 2.3 Система команд
- 2.3.1 Классификация команд
- 2.3.2 Формат команды
- 2.3.3 Однобайтовые команды
- 2.3.4 Непосредственно заданные операнды
- 2.3.5 Команды с регистровыми операндами
- 2.3.7 Команды с операндами, расположенными в памяти
- Глава 3. Организация многоуровневой памяти
- 3.1 Принцип построения многоуровневой памяти
- 3.2 Организация кэш-памяти
- 3.3 Протоколы когерентности памяти микропроцессоров
- 3.4 Страничная организация памяти
- Глава 4. Режимы работы процессоров ia-32
- 4.1 Обзор режимов работы
- 4.2 Реальный режим адресации
- 4.3 Защищённый режим
- 4.3.1 Дескрипторные таблицы
- 4.3.2 Дескрипторные регистры
- 4.3.3 Дескриптор
- 4.3.4 Односегментная модель памяти
- 4.3.5 Многосегментная модель памяти
- Глава 5. Страничная организация памяти в процессорах ia‑32
- 5.1 Каталог страниц
- 5.2 Таблица страниц
- 5.3 Страничная переадресация
- 5.4 Диспетчер виртуальных машин системы Microsoft Windows
- Глава 6. Архитектура процессоров с параллелизмом уровня команд
- 6.1 Подходы к использованию ресурса транзисторов в микропроцессорах
- 6.2 Суперскалярные процессоры и процессоры с длинным командным словом
- 6.3 Зависимости между командами, препятствующие их параллельному исполнению
- 6.4 Предварительная выборка команд и предсказание переходов
- 6.5 Условное выполнение команд в vliw-процессорах
- 6.6 Декодирование команд, переименование ресурсов и диспетчеризация
- 6.7 Исполнение команд
- 6.8 Завершение выполнения команды
- 6.9 Направления развития архитектуры процессоров с параллелизмом уровня команд
- Глава 7. Мультитредовые микропроцессоры
- 7.1 Основы мультитредовой архитектуры
- 7.2 Выявление тредов
- 7.3 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков управления программы
- 7.3.1 Мультитредовая модель выполнения программы
- 7.3.2 Мультитредовые программы
- 7.3.3 Аппаратные средства мультитредовой архитектуры
- 7.3.4 Преимущества мультитредовой архитектуры
- 7.4 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков данных программы
- 7.5 Специфика мультитредовых моделей распараллеливания
- Глава 8. Модуль обработки вещественных чисел
- 8.1 Представление чисел с плавающей запятой
- 8.2 Состав модуля fpu
- Глава 9. Основы 64-разрядной архитектуры
- 9.1 Состав и назначение регистров микропроцессора ia-64
- 9.2 Особенности архитектуры epic
- 9.3 Архитектура x86-64
- 9.4 Структура одноядерного процессора
- 9.5 Многоядерные процессоры
- 9.6 Зачем нужны “лишние” разряды?
- Глава 10. Современные 64-разрядные микропроцессоры корпораций Intel и amd
- 10.1 Архитектура Intel Core 2
- 10.1.1 Intel Wide Dynamic Execution
- 10.1.2 Intel Intelligent Power Capability
- 10.1.3 Intel Advanced Smart Cache
- 10.1.4 Intel Smart Memory Access
- 10.1.5 Intel Advanced Digital Media Boost
- 10.1.6 Логическая схема процессора
- 10.2 Архитектура Intel Core i7
- 10.2.1 Технология Hyper-Threading в архитектуре Nehalem
- 10.2.2 Иерархия кэш-памяти в архитектуре Nehalem
- 10.3 Хронология развития семейств микропроцессоров с архитектурой Nehalem
- 10.4 Архитектура amd Athlon 64
- 10.4.1 Ядро процессора
- 10.4.3 Контроллер памяти
- 10.4.4 Контроллер HyperTransport
- 10.5 Архитектура amd k10
- 10.4.1 Технология amd Memory Optimizer Technology
- 10.5.2 Ядро процессора
- 10.5.3 Предвыборка данных и инструкций
- 10.5.4 Выборка из кэша
- 10.5.5 Предсказание переходов и ветвлений
- 10.5.6 Процесс декодирования
- 10.5.7 Диспетчеризация и переупорядочение микроопераций
- 10.5.8 Выполнение микроопераций
- 10.5.9 Технологии энергосбережения
- 10.5.10 Шина HyperTransport 3.0
- 10.5.11 Семейство процессоров Barcelona
- 10.5.12 Семейство процессоров Phenom
- Глава 11. Технологии, поддерживаемые современными микропроцессорами
- 11.1 Технологии тепловой защиты
- 11.1.1 Технология Thermal Monitor
- 11.1.2 Технология Thermal Monitor 2
- 11.1.3 Режим аварийного отключения
- 11.2 Технологии энергосбережения
- 11.2.1 Технология Enhanced Intel SpeedStep
- 11.2.2 Технология Cool'n'Quiet
- 11.3 Технология расширенной памяти
- 11.4 Технология антивирусной защиты
- 11.5 Технология виртуализации
- 11.6 Реализация технологий в современных микроархитектурах
- 11.6.2 Em64t – NetBurst
- 11.6.3 Intel Core
- 11.6.4 Intel Atom
- 11.6.5 Nehalem
- 11.6.6 Xeon
- Глава 12. Графические микропроцессоры
- 12.1 Основные термины и определения
- 12.2 Технологии построения трёхмерного изображения
- 12.2.1 Технологии повышения реалистичности трехмерного изображения
- 12.3 Шейдерный процессор
- 12.4 Особенности современных графических процессоров
- Глава 13. Однокристальные микроконтроллеры
- 13.1 Общая характеристика микроконтроллеров
- 13.2 Микроконтроллеры семейства avr
- Почему именно avr?
- 13.3 Общие сведения об омк avr
- 13.4 Характеристики avr-микроконтроллеров
- Глава 14. Технология производства микропроцессоров
- 14.1 Особенности производства процессоров
- 14.2 Новые технологические решения
- 14.3 Технология производства сверхбольших интегральных схем
- I. Выращивание кристалла кремния
- II. Создание проводящих областей
- III. Тестирование
- IV. Изготовление корпуса
- V. Доставка
- 14.4 Перспективы производства сбис
- Англо-русский словарь терминов и аббревиатур
- Библиографический список
- Интернет-ссылки
- 350072. Краснодар, ул. Московская, 2, кор. А.