Обзор блока начальной загрузки конвейера
Следующая информация о работе блока начальной загрузки будет полезна для обеспечения программного обеспечения возможностями предвыборки, предсказания ветвлений и операциями для исполнительного КЭШа трасс. Предвыборка Микроархитектура Intel NetBurst использует следующие механизмы предвыборки: · Аппаратный выборщик инструкций, автоматически предвыбирающий инструкции · Аппаратный механизм, который автоматически выбирает данные и инструкции и помещает их в унифицированный кэш второго уровня · Механизм выборки только данных состоящий из двух частей: 1. аппаратный механизм для выборки смежных нитей КЭШа в 128-байтном секторе, содержащем данные необходимые в случае сбоя нити, или необходимы для предвыборки нитей КЭШа 2. программно контролируемый механизм, выбирающий данные и помещающий их в кэш, использующий инструкции предвыборки Аппаратный выборщик инструкций читает инструкции по пути, предсказанному в буфере точек ветвления (BTB), в потоковые буферы инструкций. Данные считываются в 32-байтные блоки, начиная с адреса точки. Второй и третий механизм будут рассмотрены позднее. Декодер Блок начальной загрузки микроархитектуры Intel NetBurst имеет один декодер, который декодирует инструкции с максимальной частотой в одну инструкцию за такт. Некоторые сложные инструкции должны поддерживаться с помощью ROM-микрокода. Операции декодера связанны с КЭШем трасс. Исполнительный кэш трасс Исполнительный кэш трасс (TC) – это основной кэш инструкций в микроархитектуре Intel NetBurst. Кэш трасс хранит декодированные инструкции (микрокоманды) IA-32. В реализации процессоров Intel Pentium 4 и Intel Xeon, кэш трасс может хранить до 12 тысяч микрокоманд и выдавать до трех микрокоманд за цикл. Кэш трасс не хранит все микрокоманды необходимые для обработки в исполнительном ядре. В некоторых ситуациях, исполнительному ядру необходимо выполнить поток микрокода, вместо трасс микрокоманд, хранящихся в КЭШе трасс.
Процессоры Intel Pentium 4 и Intel Xeon оптимизированы для выполнения часто-используемых IA-32 инструкций, в то время как только некоторые инструкции вовлекают в процесс декодирования ROM-микрокода. Предсказание ветвей Предсказание ветвей очень важно для производительности процессоров с большим конвейером. Это позволяет процессору начать работу задолго до того как будет дотошно известен результат ветвления. Задержка при ветвлении – это расплата за неправильное предсказание ветвление. Для процессоров Intel Pentium 4 и Intel Xeon задержка при правильном предсказании может быть нулевой. Задержка же при неправильном предсказании может быть множество циклов, обычно она равна глубине конвейера. Предсказание ветвей в микроархитектуре Intel NetBurst затрагивает все ближние ветвления (условные вызовы, безусловные вызовы, возвраты и тупиковые ветви). Но не затрагивает дальние переходы (дальние вызовы, неопределенные возвраты, программные прерывания).
Механизмы внедренные для более точного предсказания ветвей и затрат на их обработку: · Возможность динамически предсказывать направление и точку ветвления, основанная на линейном адресе инструкции, используя буфер точек ветвления (BTB) · Если нет возможности динамического предсказания или оно не правильное, то существует возможность статического предсказания результата основанного на замене цели: задняя ветвь берется за основную, а основная не берется. · Возможность предсказания адресов возвратов, с помощью 16-разрядного стека адресов возвратов · Возможность строить трассы инструкций по всей взятой ветви для избежания расплаты за неправильно предсказание
Статический предсказатель. Как только инструкция ветвления декодирована, направление ветви (вперед или назад) становиться известным. Если BTB нет упоминаний об этом ветвлении, статический предсказатель делает предсказание, основываясь на направлении ветви. Механизм статических предсказаний предсказывает задние условные цели (например, с отрицательным перемещением, такие как ветви оканчивающиеся циклом) как основные. Вперед направленные ветви предсказываются как не основные. Для использования преимуществ передних-не-основных и задних-основных статических предсказаний, код должен быть упорядочен так, чтобы нежелательные цели находились в передних ветвях. Буфер точек ветвлений. Если доступна история ветвлений, процессор может предсказать итог ветвления даже раньше, чем инструкция ветвления будет декодирована. Процессор использует таблицу историй ветвлений и BTB для предсказания направления ветвлений, основываясь на линейном адресе инструкции. Как только ветвь изъята, BTB обновляет адреса точек. Стек возврата. Возвраты происходят всегда. Но с тех пор как процедура может быть вызвана из нескольких мест, технология предсказания одной точки не удовлетворяет потребностям. Процессоры Intel Pentium 4 и Intel Xeon стек возвратов, который может предсказывать адрес возврата, для нескольких мест вызова процедуры. Это увеличивает выгоду от использования развернутых циклов содержащих вызовы функции. Это так же ослабляет необходимость использования ближних процедур, так как уменьшена расплата за возврат из дальних процедур. Даже если направление и адрес ветвления правильно предсказаны, взятая ветвь может снизить параллелизм в обычных процессорах. Предсказатель ветвлений позволяет ветви и ее цели сосуществовать в одной нити КЭШа трасс, максимизируя доставку инструкций из блока начальной загрузки.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|