Кеш трассировки - Trace cache

Работа с кешем трассировки

В компьютерная архитектура, а кеш трассировки или же кеш трассировки выполнения специализированный кеш инструкций в котором хранится динамический поток инструкции известный как след. Это помогает увеличить выборку инструкций пропускная способность и снижение энергопотребления (в случае Intel Pentium 4 ), сохраняя следы инструкций, которые уже были получены и декодированы.[1] а обработчик трассировки[2] - это архитектура, построенная на основе кэша трассировки и обрабатывающая инструкции на уровне трассировки.

Фон

Самой ранней академической публикацией о кэше трассировки была «Кэш трассировки: подход с низкой задержкой к выборке инструкций с высокой пропускной способностью».[1] Этот широко признанный доклад был представлен Эриком Ротенбергом, Стивом Беннеттом и Джимом Смитом в 1996 году. Международный симпозиум по микроархитектуре (МИКРО) конференция. Более ранняя публикация - патент США 5381533,[3] Алекс Пелег и Ури Вайзер из Intel, «Кэш-память динамических инструкций, организованная вокруг сегментов трассировки, независимая от виртуальной адресной строки», продолжение заявки, поданной в 1992 году, от которой позже отказались.

Необходимость

Шире суперскалярные процессоры требуют получения нескольких инструкций за один цикл для повышения производительности. Инструкции, которые необходимо получить, не всегда находятся в непрерывных ячейках памяти (базовые блоки ) потому что ответвляться и Прыгать инструкции. Таким образом, процессоры нуждаются в дополнительной логической и аппаратной поддержке для извлечения и выравнивания таких инструкций из несмежных базовых блоков. Если несколько ветвей прогнозируются как не взятый, то процессоры могут получать инструкции из нескольких смежных базовых блоков за один цикл. Однако, если какая-либо из ветвей прогнозируется как взятый, то процессор должен получить инструкции по выбранному пути в том же цикле. Это ограничивает возможности процессора по выборке.

Базовые блоки простого если еще петля

Рассмотрим эти четыре основных блока (А, B, C, D), как показано на рисунке, которые соответствуют простому если еще петля. Эти блоки будут храниться смежно в качестве ABCD в памяти. Если ветка D предсказано не взят, блок выборки может извлекать базовые блоки А, B, C которые размещаются смежно. Однако если D предсказано взятый, блок выборки должен получить А,B,D которые размещены несмежно. Следовательно, получение этих блоков, которые не находятся рядом друг с другом, за один цикл будет очень сложно. Таким образом, в подобных ситуациях на помощь процессору приходит кеш трассировки.

После получения кэш трассировки сохраняет инструкции в их динамической последовательности. Когда эти инструкции встречаются снова, кэш трассировки позволяет блоку выборки команд процессора извлекать из него несколько базовых блоков, не беспокоясь о ветвях в потоке выполнения. Инструкции будут храниться в кэше трассировки либо после того, как они были декодированы, либо после их удаления. Однако последовательность команд является умозрительной, если они сохраняются сразу после этапа декодирования.

Структура трассировки

Трассировка, также называемая динамической последовательностью инструкций, представляет собой запись в кэше трассировки. Его можно охарактеризовать максимальное количество инструкций и максимальные базовые блоки. Трассировки могут начинаться с любой динамической инструкции. Несколько трасс могут иметь одну и ту же команду запуска, т. Е. Одинаковую команду запуска. счетчик команд (ПК) и инструкции из разных базовых блоков согласно результатам ветки. На рисунке выше допустимые кривые ABC и ABD. Оба они запускаются на одном ПК (адрес A) и имеют разные базовые блоки в соответствии с предсказанием D.

Трассировка обычно прекращается, когда происходит одно из следующих событий:

  1. След заполнен допустимым максимальное количество инструкций
  2. Трассировка имеет допустимое максимальное количество базовых блоков
  3. Инструкции по возврату
  4. Косвенные филиалы
  5. Системные вызовы

Информация для контроля трассировки

Одна трасса будет иметь следующую информацию:

  • Запуск ПК - ПК первой инструкции в трассировке
  • Флаг отделения - ( максимальное количество базовых блоков -1) предсказания ветвления
  • Маска ветвления - количество ветвей в трассе и то, заканчивается ли трасса веткой или нет.
  • Провал трассировки - Следующий ПК, если последняя инструкция не взятый филиал или не филиал
  • Trace target - адрес последней взятой цели ветки

Дизайн кеша трассировки

Ниже приведены факторы, которые необходимо учитывать при разработке кэша трассировки.

  • Политика выбора трассировки - максимальное количество инструкций и максимальное количество базовых блоков в трассе
  • Ассоциативность - количество способов, которыми может быть кэш
  • Метод индексации кеша - конкатенация или XOR с битами ПК
  • Ассоциативность пути - трассы с одним и тем же стартовым ПК, но с разными базовыми блоками могут быть сопоставлены с разными наборами
  • Варианты заполнения кеша трассировки -
    1. После стадии декодирования (предположительно)
    2. После пенсионного этапа

Кэш трассировки не находится на критическом пути выборки инструкций[4]

Логика попадания / промаха

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

Кэш трассировки выполнения Pentium 4 хранит микрооперации в результате декодирования x86 инструкции, обеспечивая также функциональность кеша микроопераций. Имея это, в следующий раз, когда потребуется инструкция, ее не нужно будет снова декодировать в микрооперации.[5]

Недостатки

Недостатки кеширования трассировки:

  1. Резервное хранилище инструкций между кешем трассировки и кешем инструкций и внутри самого кеша трассировки.[6]
  2. Неэффективность питания и сложность оборудования[4]

Кэш трассировки выполнения

В кэше L1 NetBurst В процессоры Intel встроен кэш трассировки выполнения.[7][8] Он хранит декодированные микрооперации, так что при выполнении новой инструкции, вместо повторной выборки и декодирования инструкции, ЦП напрямую обращается к декодированным микрооперациям из кэша трассировки, тем самым значительно экономя время. Более того, микрооперации кэшируются в соответствии с их прогнозируемым путем выполнения, что означает, что, когда ЦП извлекает инструкции из кеша, они уже присутствуют в правильном порядке выполнения. Позже Intel представила аналогичную, но более простую концепцию с Песчаный Мост называется кэш микроопераций (Кеш UOP).

Смотрите также

Рекомендации

  1. ^ а б Ротенберг, Эрик; Беннетт, Стив; Смит, Джеймс Э .; Ротенберг, Эрик (1996-01-01). «Кэш трассировки: подход с малой задержкой для получения инструкций с высокой пропускной способностью». В материалах 29-го Международного симпозиума по микроархитектуре: 24–34.
  2. ^ Эрик Ротенберг, Куинн Якобсон, Яннакис Сазайдес и Джеймс Э. Смит. Процессоры трассировки. Труды30-й Международный симпозиум IEEE / ACM по микроархитектуре (MICRO-30), pp. 138-148, декабрь 1997 г.
  3. ^ Пелег, Александр; Вайзер, Ури (10 января 1995 г.), Кэш-память динамических инструкций, организованная вокруг сегментов трассировки, независимо от виртуальной адресной строки, получено 2016-10-18
  4. ^ а б Леон Гу; Дипти Мотиани (октябрь 2003 г.). "Кэш трассировки" (PDF). Проверено 6 октября 2013.
  5. ^ Агнер Туман (2014-02-19). «Микроархитектура процессоров Intel, AMD и VIA: руководство по оптимизации для программистов сборки и производителей компиляторов» (PDF). agner.org. Проверено 21 марта 2014.
  6. ^ Co, Микеле. "Кэш трассировки". www.cs.virginia.edu. Получено 2016-10-21.
  7. ^ https://pdfs.semanticscholar.org/presentation/cfcc/9d5a7480c4ea87e77084386d74aaff9a1ee1.pdf
  8. ^ https://web.archive.org/web/20160306140603/http://www.xbitlabs.com/articles/cpu/print/replay.html