Реферат: Архитектура IA-32

Блок начальной загрузки

Блок начальной загрузки микроархитектуры Intel NetBurst состоит из двух частей:

· Блок выборки/декодирования

· Исполнительный кэш трасс

Он выполняет следующие функции:

· Предвыборка инструкций IA-32 предпочтительных для исполнения

· Выборка требуемых инструкций, которые не были предвыбраны

· Декодировка инструкций в микрокоманды

· Генерация кода сложных инструкций и кода специального назначения

· Доставка декодированных инструкций из исполнительного КЭШа трасс

· Предсказание ветвлений на основе улучшенного алгоритма

Блок начальной загрузки разработан для избежания двух проблем являющихся источниками задержек:

· Уменьшение времени необходимого для декодирования инструкций полученных из источника

· Уменьшения бесполезного кода связанного с ветвлениями или точками ветвления внутри нити КЭШа

Инструкции декодируются и выбираются «переводящим» движком. «Переводящий» движок затем преобразует декодированные инструкции в последовательности микрокоманд называемые трассами. Далее трассы помещаются в исполнительный кэш трасс.

Исполнительный кэш трасс сохраняет микрокоманды на пути исполнения потока программы, где результаты ветвлений в коде уже интегрированы в ту же нить КЭШа. Это увеличивает поток инструкций из КЭШа и позволяет использовать объем КЭШа более эффективно, так как нет необходимости хранить в нем инструкции, которые ответвились и никогда не будут обработаны.

Кэш трасс может доставлять до трех микрокоманд к ядру за такт. Исполнительных кэш трасс и «переводящий» движок имеют кооперированный механизм предсказания ветвей. Точки ветвлений предсказываются на основе их линейного адреса (используя логику предсказания ветвлений и выборок) так скоро, как это возможно. Точки ветвлений берутся из исполнительного КЭШа трасс, если они были кэшированы, или из иерархии памяти. Информация «переводящего» движка о ветвлении используется при формировании трасс по наилучшим маршрутам.

Беспорядочное ядро

Возможность ядра выполнять инструкции без порядка – ключевой фактор для поддержки параллелизма. Этот блок позволяет процессору переупорядочивать инструкции так, что если одна микрокоманда ожидает данные или необходимый ресурс, другая микрокоманда, появившаяся позже, в программе может быть выполнена. Это влечет за собой то, что когда часть конвейера вынужденно задерживается, эта задержка может быть перекрыта за счет других операций, выполняемых параллельно, или исполнением микрокоманд из очереди в буфере.

Ядро спроектировано так, чтобы организовать параллельное выполнение. Оно может отправлять до шести микрокоманд в порты вывода за цикл (рисунок 4). Заметим, что шесть микрокоманд превосходят мощность КЭШа трасс и блока изъятия. Большая мощность ядра сделана, чтобы не обращать внимание на нагрузки более трех микрокоманд и для достижения большей производительности выдачи с помощью гибкости при выдаче микрокоманд в различные исполнительные порты.

Большинство исполнительных блоков ядра могут начинать выполнение новой микрокоманды каждый цикл, так что несколько инструкций могут быть выполнены одновременно в каждом блоке конвейера. Некоторые из инструкций арифметико-логического устройства (ALU) могут выполняться дважды за цикл, множество из инструкций обработки данных с плавающей точкой обрабатываются за два цикла. Наконец, микрокоманды могут быть начаты выполняться вне программного порядка, как только их входные данные готовы и ресурсы доступны.

Секция изъятий

Секция изъятий получает результаты выполненных микрокоманд из исполнительного ядра и выстраивает их в соответствии с оригинальным порядком в программе. Для семантически правильного исполнения, результаты инструкций IA-32 должны быть восстановлены в оригинальном порядке перед их извлечением.

Когда микрокоманда завершена и ее результаты записаны по назначению, она извлекается. За цикл могут быть извлечены три микрокоманды. Переупорядочивающий буфер (ROB) – это блок в процессоре который буферизирует завершенные микрокоманды, обновляет их архитектурный вид и производит упорядочивание в исключительных ситуациях.

Секция изъятия так же наблюдает за ветвлениями и отсылает обновленную информацию о точках ветвления в буфер точек ветвлений (BTB). Это позволяет обновлять историю ветвлений. Рисунок 3 отображает пути часто го исполнения внутри микроархитектуры Intel NetBurst, такие как исполнительные циклы, взаимодействующие с иерархией уровней КЭШа и системной шиной.

Следующие разделы дают более детальное описание операций блока начальной загрузки и исполнительного ядра.

Обзор блока начальной загрузки конвейера

Следующая информация о работе блока начальной загрузки будет полезна для обеспечения программного обеспечения возможностями предвыборки, предсказания ветвлений и операциями для исполнительного КЭШа трасс.

Предвыборка

К-во Просмотров: 543
Бесплатно скачать Реферат: Архитектура IA-32