Runahead - Runahead

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

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

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

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

Вход вперед

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

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

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

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

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

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

Уходя впереди

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

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

Самый очевидный метод проверки файла реестра (RF) - просто выполнить флэш-копия в файл теневого регистра или файл резервного регистра (BRF), когда процессор переходит в режим опережения, затем выполнить флэш-копирование из BRF в RF, когда возобновится нормальная работа. Доступны более простые варианты.

Один из способов исключить операции копирования во флеш-память - это запись в BRF и RF во время нормальной работы, чтение только из RF во время нормальной работы и чтение / запись только в BRF в режиме опережения.

Еще более агрессивный подход состоит в том, чтобы исключить BRF и полагаться на пути пересылки для предоставления измененных значений в режиме опережения. Контрольная точка выполняется путем отключения записи в регистровый файл. Измененные значения в режиме опережения могут быть предоставлены только путями пересылки.

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

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