Используются ли буфер хранения и буфер переупорядочения для умозрительных инструкций? - PullRequest
1 голос
/ 21 февраля 2020

Я понимаю, что буфер переупорядочения может использоваться в качестве буфера истории для спекулятивных нужд выполнения, а также позволяет переименовывать регистры в записи ROB (для разрыва именованных зависимостей, например, переименования регистров).

Чтение Ресурсы / руководства онлайн, казалось бы, что буфер хранилища также используется для спекулятивного выполнения. Разве ROB недостаточно, чтобы отбросить значения в случае неправильного предсказания пути?

1 Ответ

4 голосов
/ 21 февраля 2020

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


Разве недостаточно ROB для сброса значений в случае неверного прогнозирования пути?

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

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

Буфер хранилища также полезен для отделения выполнения от промахов кэша; не нужно ждать, пока появится строка кэша, если вы можете просто оставить ее в буфере хранилища. Это относится даже к порядку трубопроводов. И это работает для OoO exe c даже после выхода на пенсию, поэтому хранилища с отсутствием кэша имеют большее окно, чтобы не останавливать конвейер, не привязанные к порядку вывода из строя по порядку.

Связанные: Размер хранить буферы на оборудовании Intel? Что такое буфер хранилища? и, вероятно, куча других SO-ответов, которые я написал. { ссылка }


это также позволяет переименовывать регистры в записи ROB

звучит так, как будто вы говорите о деталях реализации из семейства Intel P6. Большинство других проектов (семейство Sandybridge и AMD) используют отдельный файл физического регистра (PRF), а ROB имеет только указатели на записи PRF. Это имеет больше смысла для 64-битной архитектуры, где размер регистра больше, особенно когда мы рассматриваем 128-битные регистры XMM.

См. https://www.realworldtech.com/sandy-bridge/ - SnB был основным перейти с семейства P6 на семейство SnB.

...