1.02k likes | 1.44k Views
Обзор архитектур процессоров x86. Intel P5, P6, P7, Core AMD K8, K10. Архитектура Intel P5 Pentium. Архитектура P5. Особенности архитектуры 5-стадийный конвейер Классический CISC -процессор Первая суперскалярная x86- архитектура 2 целочисленных конвейера : U и V
E N D
Обзор архитектур процессоров x86 Intel P5, P6, P7, Core AMD K8, K10
Архитектура P5 Особенности архитектуры • 5-стадийный конвейер • Классический CISC-процессор • Первая суперскалярная x86-архитектура • 2 целочисленных конвейера: U и V • Первое векторное расширение: MMX Процессоры • Pentium (1993) • Pentium MMX (1997) Частота: до 200 MHz До 2-х результатов за такт
Архитектура P5 • Стадии конвейера Pentium
Архитектура P5 • Основное достижение: Первая суперскалярная x86 архитектура Первое векторное расширение
Архитектура P6 Начало разработки: 1990 год Цель: Достигнуть производительности большей, чем процессоры архитектуры P5 и процессоры конкурентов. Процессоры • Pentium Pro (1995) до 200 МГц • Pentium II (1997) до 450 МГц • Pentium III (1999) до 1.3 ГГц • Pentium M (2003) до 2.26 ГГц
АрхитектураP6 Отличительные особенности ядра • 12-стадийный суперконвейер • Внешний интерфейс CISC, внутреннее ядро RISC • Динамическое исполнение команд • Переименование регистров • Спекулятивное исполнение • Суперскалярное исполнение • Исполнение вне порядка (40 μops) До 3-х результатов за такт.
Упрощенная структура конвейера P6 • Входной блок упорядоченной обработки команд (In-order front end) • Исполнительное ядро с изменением порядка исполнения (Out-of-order execution core) • Блок упорядоченного завершения команд (In-order retirement)
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Определение адреса следующей команды (на основании BTB).
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Чтение 2 кэш-строк, выборка пакета 16B, выравнивание пакета.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Декодирование: преобразование команд в uOPs. Обработка максимум 3-х команд x86 (6 uOPs: 4-1-1) за такт.
Архитектура P6 • Устройство декодирования команд x86 • До 3 команд за такт • До 6 μops за такт
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Декодирование: преобразование команд в uOPs. Обработка максимум 3-х команд x86 (6 uOPs: 4-1-1) за такт.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Декодирование: преобразование команд в uOPs. Максимум 1 команда перехода за такт. Информация о ветвлениях отправляется в BTB.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF На входе очереди максимум 6 uOPs за такт (4-1-1). На выходе очереди максимум 3 uOPs за такт.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Создается запись в Reorder Buffer. Отображение программных регистров на физические.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Чтение операндов для uOP.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Когда операнды готовы, uOP помещается в станцию резервации (RS) и ждет исполнения.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF В произвольном порядке uOP-ы запускаются на исполнение на различных исполнительных устройствах. Максимум 5 результатов за такт.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Операции чтения данных из памяти.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Операции записи данных в память.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Запись результатов в Reorder Buffer.
Структура ядра P6 Стадии конвейера: • BTB0 • BTB1 • IFU0 • IFU1 • IFU2 • ID0 • ID1 • RAT • ROB read • RS • Ex • ROB write • RRF Завершение. Запись результатов в выводящий регистровый файл (RRF). Удаление uOPs из ROB. Запись данных в память. Максимум 3 uOPs за такт.
Архитектура P6 • Основное достижение: Архитектура имеет большой потенциал
Архитектура NetBurst Цель: Достигнуть большойпроизводительности за счет повышения тактовой частоты. Средства: • Большой конвейер с маленькими стадиями • Уменьшение задержек на ветвления – кэш трасс, большой BTB • Уменьшение задержек на обращение к памяти – быстрый кэш • Уменьшение числа команд, необходимых для выполнения задачи • Векторное расширение SSE2 (любые типы данных на XMM) Процессоры • Pentium 4 • Willamette до 2.4 ГГц • Northwood до 3.2 ГГц • Prescott до 3.8 ГГц
АрхитектураNetBurst Отличительные особенности ядра • 20 или 31-стадийный гиперконвейер • Внешний интерфейс CISC, внутреннее ядро RISC • Динамическое исполнение команд • Переименование регистров • Спекулятивное исполнение • Суперскалярное исполнение • Исполнение вне порядка(126μops) • Кэш трасс (работает на половине частоты) • Небольшая кэш-память с быстрым доступом • Часть ядра работает на удвоенной частоте • Аппаратная многопоточность (Hyper-Threading) До 3-х результатов за такт.
Кэш трасс • Хранит декодированные микрооперации • Состоит из 2048 блоков по 6 ячеек (256 наборов по 8 блоков) • Все блоки в каждой трассе связаны в двунаправленный список • Темп чтения – 1 блок за 2 такта
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Декодирование до 1 x86-команды за такт.
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Определение адреса следующей uOP в кэше трасс.
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Выборка из кэша трасс в очередь предвыборки до 6 uOPs за 2 такта, подстановка MROM векторов.
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Продвижение…
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Выборка 3 uOPs из очереди. Выделение ресурсов процессора (места в очередях, буфере переупорядочивания, регистровом файле).
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Отображение логических регистров на физические.
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Размещение uOP-овв 2-х очередях uopQ: для операций с памятью (32 μops) и для остальных операций (16 μops).
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Размещение uOP-овв 2-х очередях uopQ: для операций с памятью (32 μops) и для остальных операций (16 μops).
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive 5 планировщиков в зависимости от типа операции выбирают uOPыиз очередей uopQ каждый в свою очередь schQ (аналог RS).
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Распределение uOPs из 5-ти очередей schQ по 4-м портам исполнительных устройств в произвольном порядке.
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Чтение операндов из регистрового файла.
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Исполнение
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Исполнение
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Установка флагов.
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Проверка правильности предсказания переходов.
Стадии конвейера P7 • TC next IP 1 • TC next IP 2 • TC Fetch 1 • TC Fetch 2 • Drive • Allocator • Rename 1 • Rename 2 • Queue • Schedule 1 • Schedule 2 • Schedule 3 • Dispatch 1 • Dispatch 2 • Register file 1 • Register file 2 • Execute • Flags • Branch check • Drive Перенос результата проверки перехода в декодер.