- •Микроархитектура процессоров семейства amd k7
- •I. Микроархитектура
- •1. Системная шина
- •3. Предсказание ветвлений
- •4. Декодирование инструкций
- •5. Instruction Control Unit
- •6. Integer Execution Units
- •7. Floating Point Execution Units
- •8. Load/Store Unit (lsu)
- •II. Модельный ряд
- •1. Первое поколение - Athlon Classic
- •2. Второе поколение - Athlon “Thunderbird”
- •3. Третье поколение - Athlon xp “Palomino” (Model 6)
- •4. Четвёртое поколение - Athlon xp “Thoroughbred” (Model 8)
- •5. Пятое поколение - Athlon xp “Barton” и “Thorton” (Model 10)
- •6. Mobile Athlon
- •6. Duron и Sempron
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, которые имеют доступ к общему модулю умножения.
