Jump to content

Прогнозирование зависимости памяти

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

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

В общем, прогнозирование зависимости от памяти предсказывает, являются ли две операции с памятью зависимыми, то есть взаимодействуют ли они путем доступа к одной и той же ячейке памяти. Помимо использования прогнозирования зависимости памяти от хранилища для загрузки (RAW или true) для планирования внеочередных загрузок и сохранений, были предложены и другие приложения прогнозирования зависимости от памяти. См. например. [1]

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

Выборочное предсказание зависимости памяти [2] [3] останавливает определенные нагрузки до тех пор, пока не будет уверенности в том, что нарушения не произойдет. Он не предсказывает явные зависимости. Этот предиктор может задерживать загрузку дольше, чем необходимо, и, следовательно, приводить к неоптимальной производительности. Фактически, в некоторых случаях это работает хуже, чем наивное спекуляция обо всех нагрузках как можно раньше. Это связано с тем, что часто быстрее допустить ошибку и восстановиться, чем ждать выполнения всех предыдущих сохранений. Точное предсказание зависимости памяти было разработано в Университете Висконсин-Мэдисон. В частности, динамическое предположение и синхронизация. [2] [3] задерживает загрузку только до тех пор, пока это необходимо, путем прогнозирования точного хранилища, которого должна ожидать загрузка. Этот предиктор предсказывает точные зависимости (пара хранилища и загрузки). Синоним -предиктор [1] группирует вместе все зависимости, которые имеют общую инструкцию загрузки или сохранения. В магазине наборы [4] Предиктор эффективно представляет несколько потенциальных зависимостей, группируя вместе все возможные хранилища, от которых может зависеть нагрузка. Барьер в магазине [5] предиктор рассматривает определенные инструкции магазина как барьеры. То есть всем последующим операциям загрузки или сохранения не разрешено обходить конкретное хранилище. Предиктор барьера хранилища не прогнозирует зависимости явно. Этот предиктор может излишне задерживать последующие, но независимые загрузки. Прогнозирование зависимости памяти имеет и другие применения, помимо планирования загрузок и сохранений. Например, спекулятивное сокрытие памяти. [1] и спекулятивный обход памяти [1] используйте прогнозирование зависимости от памяти, чтобы упростить передачу значений через память.

Аналогия предсказанием с ветвей

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

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

См. также [ править ]

Ссылки [ править ]

  1. Перейти обратно: Перейти обратно: а б с д Мошовос, А.; Сохи, GS (1997). «Оптимизация межоперационной связи с памятью посредством прогнозирования зависимости данных». Материалы 30-го ежегодного международного симпозиума по микроархитектуре . МИКРО '97. стр. 235–245. дои : 10.1109/MICRO.1997.645814 .
  2. Перейти обратно: Перейти обратно: а б с Мошовос, Андреас; Брич, Скотт Э.; Виджайкумар, Теннесси; Сохи, Гуриндар С. (1997). «Динамическое предположение и синхронизация зависимостей данных». Материалы 24-го ежегодного международного симпозиума по компьютерной архитектуре . ИСКА '97. стр. 181–193. дои : 10.1145/264107.264189 . Также в качестве технического отчета, факультет компьютерных наук, Университет Висконсин-Мэдисон, март 1996 г.
  3. Перейти обратно: Перейти обратно: а б Прогнозирование зависимости памяти, Мошовос, к.т.н. Диссертация, факультет компьютерных наук, Университет Висконсин-Мэдисон, декабрь 1998 г.
  4. ^ Хрисос, GZ; Эмер, Дж. С. (1998). «Прогнозирование зависимости памяти с использованием наборов хранилищ». Материалы 25-го ежегодного международного симпозиума по компьютерной архитектуре . ИСКА '98. стр. 142–153. дои : 10.1109/ISCA.1998.694770 .
  5. ^ Устройство для динамического управления внеочередным выполнением инструкций загрузки-сохранения в процессоре, способном отправлять, выдавать и выполнять несколько инструкций за один цикл процессора, Хессон, Леблан и Чавалья, IBM, патент США 5,615,350, март 1997 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: eda4bed3a0eee10843c622c40e60fa7e__1669888200
URL1:https://arc.ask3.ru/arc/aa/ed/7e/eda4bed3a0eee10843c622c40e60fa7e.html
Заголовок, (Title) документа по адресу, URL1:
Memory dependence prediction - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)