Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микроархитектура процессоров семейства AMD K7.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
16.01 Кб
Скачать

3. Предсказание ветвлений

В процессорах семейства K7, спекулятивное исполнение инструкций использовало механизм динамического предсказания ветвлений, состоящего из 3-х основных частей:

  • Branch Prediction Table (BPT). Таблица на 2048 ячеек. Хранит некоторую информацию, используемую для предсказания условных переходов.

  • Branch Targe Address Table (BTAT). Хранит соответствующие BPT адреса переходов.

  • Return Address Stack. Оптимизирует предсказание переходов для инструкций CALL/RET. Сохраняет адрес возврата для инструкций CALL и подставляет его в соответствующие инструкции RET.

Обращение к BPT происходит на шаге Fetch, а предсказание перехода на шаге Scan. Для предсказания перехода используется Smith Prediction Algorithm: хранится 2-х битный счётчик, который увеличивается при правильном предсказании и уменьшается при неправильном. Для предсказания перехода используется старший бит этого счётчика.

При неудачном предсказании новый адрес сохраняется в BTAT и происходит сброс конвейера, поэтому штраф за неудачное предсказание составляет 10 или 15 стадий для целочисленных и вещественных инструкций соответственно.

4. Декодирование инструкций

Процессоры семейства K7 имеют внутреннюю RISC архитектуру, поэтому вместо исполнения x86 инструкций, они транслируются во внутренние команды - "Macro Operation" (MOp), включающие в себя до 2-х простейших инструкций "RISC Operations" (ROps), которые могут выполнятся независимо.

Декодирование начинается при заполнении кэша инструкций L1. При этом происходит пред-обработка данных - определяются начало, конец и opcode инструкций и сохраняется в Predecode Cache. После этого инструкция декодируется одним из следующих способов:

  • Direct path. Декодирует обычные инструкции. Может выдавать до 3-х MOp за такт.

  • Vector path. Декодирует сложные инструкции, представляемые в виде нескольких MOp.

В отличие от Intel Pentium III, все 3 декодера полностью независимы, что позволяет декодировать до 3-х CISC команд за такт независимо от их типа.

5. Instruction Control Unit

Декодированные инструкции поступают в in-order Instruction Control Unit (ICU) хранящий до 72 MOp. В связи со сложной схемой переименования floating point регистров, соответствующие команды сразу отправляются дальше по конвейеру. Для целочисленных команд выполняется переименование регистров и подстановка аргументов, после чего инструкция передаётся в Integer Scheduler. В случае если аргумент в данный момент недоступен, вместо него генерируется тэг, который потом используется для подстановки результата выполнения соответствующей команды.

ICU отвечает также за сохранение результатов и завершение(retirement) выполненных команд. При завершении, команды упорядочиваются. Каждый цикл может завершиться до 3 команд (соответствуя максимальному тэмпу декодирования).

6. Integer Execution Units

Блок целочисленной арифметики состоит из планировщика (Integer Scheduler), 3-х Integer Execution Unit'ов (IEU) и 3-х Address Generation Unit'ов (AGU).

Integer Scheduler хранит до 15-ти MOp в виде 3-х очереди по 5 MOp каждая. За каждой очередью закреплена пара IEU и AGU. Элементы очереди (MOp) содержат до 2-х ROp, которые исполняются out-of-order, при условии готовности соответствующих операндов и свободности IEU. Результат выполнения команды помещаются на одну из шин результатов и возвращается в ICU и, при необходимости, подставляется вместо соответствующих тэгов операндов в команды лежащие в очереди планировщика.

  • Команды умножения и деления выполняются только на IEU1 и IEU2, которые имеют доступ к общему модулю умножения.