Jump to content

Ранахед

Runahead — это метод, который позволяет компьютерному процессору инструкции спекулятивно предварительно обрабатывать во время циклов промахов кэша . Предварительно обработанные инструкции используются для создания потоков инструкций и данных предварительной выборки путем выполнения инструкций, приводящих к промахам в кэше (обычно называемым загрузками с большой задержкой ) до того, как они обычно происходят, эффективно скрывая задержку памяти . В режиме опережения процессор использует ресурсы простоя выполнения для расчета адресов потоков команд и данных, используя доступную информацию, независимую от промаха в кэше. Как только процессор устранит первоначальный промах в кэше, все результаты опережения отбрасываются, и процессор возобновляет выполнение в обычном режиме. Основной вариант использования этой техники — смягчение последствий стены памяти . Этот метод также можно использовать для других целей, таких как предварительное вычисление результатов ветвления для достижения высокоточного предсказания ветвления . [1]

Основная стоимость оборудования — это средство проверки состояния файла регистра . Как правило, процессоры с опережением также содержат небольшой дополнительный кэш , который позволяет выполнять операции сохранения с опережением без изменения фактической памяти . В некоторых реализациях также используются специальные блоки аппаратного ускорения для выполнения определенных фрагментов предварительно обработанных инструкций. [2] [3]

Первоначально Runahead исследовался в контексте упорядоченного микропроцессора; [4] однако этот метод был расширен для использования с вышедшими из строя микропроцессорами. [5]

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

Когда процессор входит в режим опережения, он проверяет все архитектурные регистры и записывает адрес инструкции загрузки, вызвавшей вход в режим опережения. Все инструкции в конвейере затем помечаются как опережающие. Поскольку значение, возвращаемое в результате промаха в кэше, не может быть известно заранее, предварительно обработанные инструкции могут зависеть от неизвестных или недопустимых данных . Регистры, содержащие такие данные или данные, зависящие от них, обозначаются добавлением бита «недействительный» или INV к каждому регистру в файле регистров. Инструкции, которые используют или записывают такие неверные данные, также помечаются битом INV. Если инструкция, инициировавшая упреждение, была загрузкой, она выдает фиктивный результат и помечается как INV, что позволяет ей пометить регистр назначения как INV и вывести ее из конвейера.

Инструкции по предварительной обработке

[ редактировать ]

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

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

Поскольку опережение является спекулятивным состоянием, инструкциям сохранения не может быть разрешено изменять память. Чтобы передать результаты сохранения зависимым загрузкам, очень маленький кэш, доступный только для опережающих загрузок и промахов, называемый кэшем опережения . можно использовать [5] Этот кеш функционально похож на обычный кеш, но содержит биты INV для отслеживания недопустимых данных. Хранилища INV устанавливают бит INV соответствующей целевой строки кэша, а действительные хранилища сбрасывают бит INV строки кэша. Любая инструкция загрузки с опережением должна проверять как реальный, так и кэш с опережением. Если загрузка попадает в кэш с опережением, он отбрасывает реальный результат кэша и использует данные кэша с опережением, что потенциально становится недействительным, если строка кэша была помечена битом INV. Поскольку упреждающий кэш отделен от иерархии памяти , старые данные некуда вытеснить. Поэтому в случае конфликта кэша старые данные просто удаляются из кэша. Обратите внимание, что из-за ограниченного размера кэша опережения невозможно точно отслеживать данные INV в режиме опережения (поскольку данные INV могут быть перезаписаны действительными данными в случае конфликта кэша ). На практике это не имеет решающего значения, поскольку все результаты, вычисленные в режиме опережения, отбрасываются.

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

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

Зарегистрируйте параметры контрольной точки файла

[ редактировать ]

Самый простой метод проверки файла регистра архитектуры (ARF) — просто выполнить полную копию всего файла физического регистра (PRF) (поскольку PRF является надмножеством ARF) в файл регистра контрольной точки (CRF), когда процессор переходит в режим опережения. При выходе из режима опережения процессор может выполнить полную копию из CRF в PRF. Однако существуют более эффективные варианты.

Одним из способов устранения операций копирования является запись в PRF и CRF во время нормальной работы, но только в PRF в режиме опережения. Этот подход может устранить накладные расходы на контрольные точки, которые в противном случае возникли бы при запуске опережения, если CRF и PRF записываются параллельно, но по-прежнему требует, чтобы процессор восстановил PRF при выходе из опережения.

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

Еще более агрессивный подход состоит в том, чтобы полагаться только на пути пересылки операндов микроархитектуры для предоставления измененных значений во время режима опережения. [ нужна ссылка ] Затем файл регистра проверяется «контрольной точкой» путем отключения записи в файл регистра во время опережения.

Оптимизации

[ редактировать ]

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

Некоторые оптимизации, повышающие энергоэффективность опережающего запуска:

  • Вход в упреждение возможен только в том случае, если ожидается, что процессор будет выполнять нагрузки с большой задержкой во время упреждения, тем самым сокращая короткие, непродуктивные периоды упреждения. [6]
  • Ограничение продолжительности периодов опережения, чтобы они продолжались только до тех пор, пока ожидается, что они принесут полезные результаты. [7]
  • Только инструкции предварительной обработки, которые в конечном итоге приводят к инструкциям по загрузке. [8]
  • Использование свободных ресурсов процессора только для предварительной обработки инструкций. [9]
  • Буферизация микроопераций, которые были декодированы во время упреждения, для повторного использования в обычном режиме. [9]

Побочные эффекты

[ редактировать ]

Было обнаружено, что Runahead мягких ошибок в качестве побочного эффекта повышает частоту в процессорах. Пока процессор ожидает промаха кэша, все состояние процессора уязвимо для программных ошибок, пока промах кэша остается невыполненным. Продолжая выполнение, упреждение непреднамеренно сокращает время, в течение которого состояние процессора уязвимо для программных ошибок, тем самым снижая частоту программных ошибок. [10]

См. также

[ редактировать ]
  1. ^ Пруэтт, Стивен; Патт, Йельский университет (октябрь 2021 г.). «Branch Runahead: альтернатива прогнозированию ветвей для невозможного предсказать ветвления» . MICRO-54: 54-й ежегодный международный симпозиум IEEE/ACM по микроархитектуре . МИКРО '21. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 804–815. дои : 10.1145/3466752.3480053 . ISBN  978-1-4503-8557-2 . S2CID   239011545 .
  2. ^ Хашеми, Милад; Мутлу, Онур; Патт, Йель Н. (октябрь 2016 г.). «Непрерывное ускорение: прозрачное аппаратное ускорение для рабочих нагрузок с интенсивным использованием памяти» . 2016 49-й ежегодный Международный симпозиум IEEE/ACM по микроархитектуре (MICRO) . стр. 1–12. дои : 10.1109/MICRO.2016.7783764 . ISBN  978-1-5090-3508-3 . S2CID   439575 .
  3. ^ Пруэтт, Стивен; Патт, Йельский университет (октябрь 2021 г.). «Branch Runahead: альтернатива прогнозированию ветвей для невозможного предсказать ветвления» . MICRO-54: 54-й ежегодный международный симпозиум IEEE/ACM по микроархитектуре . МИКРО '21. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 804–815. дои : 10.1145/3466752.3480053 . ISBN  978-1-4503-8557-2 . S2CID   239011545 .
  4. ^ Дандас, Джеймс Д. и Мадж, Тревор Н. (сентябрь 1996 г.). « Использование циклов остановки для улучшения производительности микропроцессора ». Технический отчет. Кафедра электротехники и информатики Мичиганского университета.
  5. ^ Перейти обратно: а б с Мутлу, О.; Старк, Дж.; Вилкерсон, К.; Патт, Ю.Н. (февраль 2003 г.). «Выполнение с опережением: альтернатива очень большим окнам инструкций для процессоров, вышедших из строя» . Девятый международный симпозиум по архитектуре высокопроизводительных компьютеров, 2003 г. HPCA-9 2003 г. Труды . стр. 129–140. дои : 10.1109/HPCA.2003.1183532 . ISBN  0-7695-1871-0 . S2CID   9016814 .
  6. ^ Ван Крайнест, Кензо; Эйрман, Стейн; Экхаут, Ливен (2009), Сезнец, Андре; Эмер, Джоэл; О'Бойл, Майкл; Мартоноси, Маргарет (ред.), «Потоки Runahead с поддержкой MLP в процессоре с одновременной многопоточной обработкой» , «Высокопроизводительные встраиваемые архитектуры и компиляторы» , том. 5409, Берлин, Гейдельберг: Springer Berlin Heidelberg, стр. 110–124, номер домена : 10.1007/978-3-540-92990-1_10 , ISBN.  978-3-540-92989-5 , получено 2 июня 2023 г.
  7. ^ Ван Крайнест, Кензо; Эйерман, Стейн; Экхаут, Ливен (2009). «Потоки Runahead с поддержкой MLP в процессоре с одновременной многопоточной обработкой» . В Сезнце, Андре; Эмер, Джоэл; О'Бойл, Майкл; Мартонси, Маргарет; Унгерер, Тео (ред.). Высокопроизводительные встраиваемые архитектуры и компиляторы . Конспекты лекций по информатике. Полный. 5409. Берлин, Гейдельберг: Springer. стр. 110–124. дои : 10.1007/978-3-540-92990-1_10 . ISBN  978-3-540-92990-1 .
  8. ^ Хашеми, Милад; Патт, Йель Н. (5 декабря 2015 г.). «Фильтрованное выполнение опережения с буфером опережения» . Материалы 48-го Международного симпозиума по микроархитектуре . МИКРО-48. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 358–369. дои : 10.1145/2830772.2830812 . ISBN  978-1-4503-4034-2 . S2CID   2897777 .
  9. ^ Перейти обратно: а б Найтани, Аджея; Фелиу, Джошуа; Адиле, Альмутаз; Экхаут, Ливен (февраль 2020 г.). «Точное исполнение с опережением» . Международный симпозиум IEEE 2020 по архитектуре высокопроизводительных компьютеров (HPCA) . стр. 397–410. дои : 10.1109/HPCA47549.2020.00040 . hdl : 1854/LU-8668193 . ISBN  978-1-7281-6149-5 . S2CID   215817567 .
  10. ^ Найтани, Аджея; Экхаут, Ливен (апрель 2022 г.). «Ускорение с учетом надежности» . Международный симпозиум IEEE по высокопроизводительной компьютерной архитектуре (HPCA) 2022 года . IEEE. стр. 772–785. дои : 10.1109/HPCA53966.2022.00062 . ISBN  978-1-6654-2027-3 . S2CID   248865294 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3d649cc738fb1d343f3db4a7459bad8b__1719047400
URL1:https://arc.ask3.ru/arc/aa/3d/8b/3d649cc738fb1d343f3db4a7459bad8b.html
Заголовок, (Title) документа по адресу, URL1:
Runahead - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)