Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции Арх комп.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
856.58 Кб
Скачать

Микроархитектура процессора amd-k6-2

Рис. 4.16.

Два декодера Short Decoder #1 и Short Decoder #2 работают параллельно и обрабатывают наиболее часто используемые х86-инструкций — move, shift, branch, ALU, FPU, а также инструкции из наборов команд ММХ и 3DNow! Декодеры Short Decoder #1 и Short Decoder #2 обрабатывают только часто используемые (most commonly-used) х86-инструкций длиной не более семи байт- Каждый может преобразовать только одну такую х86-инструкцию и сгенерировать 0 (например, при обработке х86-инструкций NOP), одну или две RISC86-инструкции за такт. Таким образом, за один такт оба декодера могут сгенерировать до 4 РISC86-инструкций.

Редко используемые инструкции (semi-commonly-used) длиной до семи байт и обычные инструкции (commonly-used) с длиной большей семи байт, но меньшей или равной 11 байтам обрабатываются декодером Long Decoder, который может декодировать только одну такую х86-инструкцию и сгенерировать до 4 RISC86-инструкций за такт. Все остальные преобразования (более сложные инструкции, прерывания, и. т. д.) выполняются декодером Vector Decoder. В этом случае Vector Decoder генерирует набор первых RISC86-инструкции и адрес заранее предопределенного набора последующих инструкций, который хранится в ROM-памяти (On-Chip ROM) и извлекается блоком RISC86 Sequencer.

Все наборы RISC86-операций, генерируемые декодерами и извлекаемые из On-Chip ROM всегда (!) состоят из групп, содержащих по четыре RISC86-операции. В том случае, если их получилось меньше, недостающее количество заполняется пустыми RISC86-инструкциями NOP. Например, если Long Decoder преобразовал х86-инструкцию в три RISC86-инструкции, то к ней добавляется одна RISC86-инструкция NOP. Получившийся лоток из таких групп поступает в буфер планировщика (Scheduler Buffer) — за один такт всегда передается группа из четырех RISC-операций. Центральный планировщик (Centralized RISC86 Operation Scheduler). Планировщик — это сердце процессора AMD-K6-2. Он следит за процессом исполнения RISK86-инструкций, приведением результата их исполнения к х86-архитектуре, а также возвращением результатов спекулятивного выполнения х86-инструкций в соответствии с их порядком поступления на вход процессора.

В буфере планировщика может одновременно содержаться до 24 RISC86-инструкций. Любая из них может быть в любой момент передана на исполнение соответствующему вычислительному блоку (store, load, branch, register X integer/multimedia, register Y integer/multimedia, floating-point), если, конечно, последний свободен. Таким образом, реализуется исполнение инструкций в порядке, отличном от порядка их поступления в буфер (out-of-order execution). В общей сложности планировщик может передать на выполнение шесть и завершить (retire) также шесть RISC86-инструкций за такт, Вычислительные блоки (Execution Units). Процессор AMD-K6-2 содержит 30 параллельных вычислительных блоков — Store Unit, Load Unit, Integer X ALU, Integer Y ALU, MMX ALU (X), MMX ALU (Y), MMX/3DNow! Multiplier, 3DNow! ALU, FPU и Branch Unit. Каждый блок работает независимо от остальных, так что несколько блоков могут обрабатывать переданные им на исполнение RISC86-инструкции.