- •Глава 31. Особенности структуры высокопроизводительных ядер процессоров для персональных компьютеров
- •31.1. Основные особенности структуры ядер процессоров
- •Блок предсказания переходов и ветвлений
- •31.2. Примеры структур ядер процессоров фирмы Intel для пк
- •Структура подсистемы подготовки команд для выполнения
- •Предсказание переходов
- •Декодирование и idq
- •Особенности ядра со структурой Haswell
Блок предсказания переходов и ветвлений
Когда в потоке команд встречаются ветвления, ядро процессора, чтобы не приостанавливать генерацию команд, пытается угадать дальнейшее поведение программы и продолжить работу с наиболее вероятной ветвью программы. В таких случаях выборка очередного блока команд производится с использованием механизма предсказания переходов.
Буфер переупорядочивания и отставки
После переименования регистров МОПы записываются в буфер переупорядочивания и отставки.
Длина буфера переупорядочения составляет несколько десятков элементов (и более, например, 126). Из буфера переупорядочивания МОПы по мере готовности их к выполнению выдаются в специализированные функциональные исполнительные устройства при условии, что те готовы к их приему.
В хронологическом порядке, каждый МОП может проходиться в следующих состояниях:
МОП ещё не готов к выполнению – он находится в очереди планировщика;
МОП готов к выполнению (все аргументы для него готовы);
МОП выполняется одним из специализированных функциональных исполнительных устройств;
МОП выполнен и ждёт «отставки» либо отмены «спекулятивной» ветви (находится в буфере переупорядочивания и отставки);
МОП находится в процессе «отставки».
МОПы продолжают храниться в буфере переупорядочивания до тех пор, пока не будут выполнены и отставлены все более старые МОПы. Во время отставки производится запись окончательных значений в архитектурные регистры и оперативную память. Отставка операций, удаление информации о них из буфера переупорядочивания и запись окончательных значений производится в программном порядке, в котором МОПы поступили в буфер переупорядочивания. Это необходимо для того, чтобы в случае исключения или прерывания отменить результаты всех последующих операций, выполненных во внеочередном порядке.
Планировщик
Планировщик выдачи МОПов анализирует состояние всех специализированных функциональных исполнительных устройств (ФУi), а также готовность МОПов в буфере.
Если в буфере для ФУi есть хотя бы один готовый к выполнению МОП и ФУi свободно (освободилась первая ступень конвейера – если ФУi конвейерного типа, или завершено выполнение операции – если ФУi комбинационного типа), то планировщик выдает МОП из буфера на вход ФУi .
Заявки из буфера выдаются на выполнение не в том порядке, в каком они следуют в программе, а по готовности. В конкретное ФУi готовые к выполнению МОПы выдаются в соответствии с дисциплиною FIFO.
При заполнении буфера переупорядочивания дешифратору команд запрещается записывать новые МОПы.
За один такт планировщик может выдать несколько МОПов, в зависимости от структуры ядра процессора (например, в ядрах со структурой Haswell теоретически можно в одном такте выдать до 7 МОПов).
Регистры
В каждом ядре имеется значительное количество регистров разного рода. Это:
архитектурные регистры общего назначения;
адресные регистры;
служебные;
управляющие;
буферные регистры.
Кроме архитектурных регистров общего назначения (целочисленных, регистров данных с плавающей точкой, «векторных» регистров) в ядре имеется несколько сот, так называемых, физических регистров, которые образуют физический регистровый целочисленный файл и физический регистровый файл данных с плавающей точкой.
При переименовании регистров каждый архитектурный регистр подменяется одним из физических регистров. В функциональных устройствах операции выполняются над содержимым физических регистров. На этапе «отставки», если при выполнении команды не произошло исключений и все предыдущие команды завершились нормально, происходит «отставка» команды и содержимое результата из физического регистра переписывается в соответствующий архитектурный регистр.
Между ступенями конвейера подготовки команд в ядре имеются буфера. Емкость этих буферов зависит от выполняемых функций и структуры ядра.
Функциональные устройства
Подсистема обработки данных современных структур высокопроизводительных ядер процессоров состоит из многих специализированных функциональных устройств:
несколько устройств для выполнения операций «сложение/вычитание» чисел с фиксированной точкой;
устройство для выполнения операции «умножение» чисел с фиксированной точкой;
устройство для выполнения операции «деление» чисел с фиксированной точкой;
универсальное устройство для выполнения логичеких операций, операций сдвигов и т.п.;
устройство для выполнения операции «сложение/вычитание» чисел с плавающей точкой;
устройство для выполнения операции «умножение» чисел с плавающей точкой;
устройство для выполнения операции «деление» чисел с плавающей точкой;
универсальное устройство для выполнения логических операций операции деления – это комбинационные устройства. Новая операция в устройстве может быть начата только после завершения предыдущей.
Остальные специализированные устройства – это устройства конвейерного типа. Устройства этого типа могут начинать выполнение новых операций ежетактно.
Выводы
Структуры ядер реальных современных процессоров очень сложные. Как правило, в ядрах современных универсальных процессоров для персональных компьютеров реализованы самые разнообразные методы повышения производительности.
Это:
конвейерность с числом ступеней не менее 10-12;
суперскалярность с уровнем 3-4. Под суперскалярностью понимается число команд, которые дешифрируются в одном такте.
большое число специализированных функциональных устройств обработки данных;
внеочередное выполнение команд;
предсказание ветвлений;
иерархические подсистемы памяти, включающие до трех уровней кэш-памяти;
сложные дешифраторы команд и т.п.
