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

·        высокопроизводительный, четырехкратный шинный интерфейс для системной шины микроархитектуры Intel NetBurst

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

·        спекулятивное разупорядоченное исполнение для поддержки параллелизма

·        суперскалярная выдача для поддержки параллелизма

·        поддержка аппаратного переименования регистров для исключения ограничений пространства имен

·        64-байтные нити КЭШа

·        аппаратная предвыборка

Цели, для которых была разработана Микроархитектура Intel NetBurst

Цели, для которых была разработана Микроархитектура Intel NetBurst:

·        для обеспечения наследственности приложений IA-32 и приложений основанных на SIMD на высокопроизводительных системах

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

Преимущества микроархитектуры Intel NetBurst:

·        многоконвейерный дизайн позволяющий работать на высоких тактовых частотах (различные части кристалла работают с различными тактовыми частотами)

·        конвейер, оптимизированный для обработки часто исполняемых инструкций (часто исполняемые инструкции при обычных условиях эффективно декодируются и исполняются с меньшими задержками)

·        внедрение специальных техник для исправления зависания конвейера. Среди них: параллельное выполнение, буферизация и спекуляция. Микроархитектура выполняет инструкции динамически и беспорядочно, так что время, которое необходимое для выполнения каждой отдельной инструкции не всегда может быть определено.

Обзор конвейера микроархитектуры Intel NetBurst

Конвейер микроархитектуры Intel NetBurst состоит из:

·        блока начальной загрузки упорядоченных команд

·        беспорядочного суперскалярного исполнительного ядра

·        блок изъятия упорядоченных команд

Блок начальной загрузки поставляет инструкцию в программном порядке в беспорядочное ядро. Оно выбирает и декодирует инструкции IA-32. Декодированные инструкции переводятся в микрокоманды. Основная задача блока начальной загрузки состоит в доставлении непрекращающегося потока микрокоманд в исполнительное ядро в программном порядке.

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

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

Рисунок 3 отображает схему основных функциональных блоков конвейера микроархитектуры Intel NetBurst. Ниже перечисленные разделы проводят обзор каждого из блоков.

Рисунок 3. Микроархитектура Intel NetBurst


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Предвыборка

Микроархитектура Intel NetBurst использует следующие механизмы предвыборки:

·        Аппаратный выборщик инструкций, автоматически предвыбирающий инструкции

·        Аппаратный механизм, который автоматически выбирает данные и инструкции и помещает их в унифицированный кэш второго уровня

·        Механизм выборки только данных состоящий из двух частей:

1.      аппаратный механизм для выборки смежных нитей КЭШа в 128-байтном секторе, содержащем данные необходимые в случае сбоя нити, или необходимы для предвыборки нитей КЭШа

2.      программно контролируемый механизм, выбирающий данные и помещающий их в кэш, использующий инструкции предвыборки

Аппаратный выборщик инструкций читает инструкции по пути, предсказанному в буфере точек ветвления (BTB), в потоковые буферы инструкций. Данные считываются в 32-байтные блоки, начиная с адреса точки. Второй и третий механизм будут рассмотрены позднее.

Декодер

Блок начальной загрузки микроархитектуры Intel NetBurst имеет один декодер, который декодирует инструкции с максимальной частотой в одну инструкцию за такт. Некоторые сложные инструкции должны поддерживаться с помощью ROM-микрокода. Операции декодера связанны с КЭШем трасс.

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

Исполнительный кэш трасс (TC) – это основной кэш инструкций в микроархитектуре Intel NetBurst. Кэш трасс хранит декодированные инструкции (микрокоманды) IA-32.

В реализации процессоров Intel Pentium 4 и Intel Xeon, кэш трасс может хранить до 12 тысяч микрокоманд и выдавать до трех микрокоманд за цикл. Кэш трасс не хранит все микрокоманды необходимые для обработки в исполнительном ядре. В некоторых ситуациях, исполнительному ядру необходимо выполнить поток микрокода, вместо трасс микрокоманд, хранящихся в КЭШе трасс.

Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.