Ожидание завершения предварительной выборки - PullRequest
0 голосов
/ 15 января 2019

Насколько я знаю, на последних чипах AMD и Intel инструкции prefetch могут быть отменены до поступления соответствующих данных. То есть, в отличие от нагрузок, удаление не зависит от поступления связанных данных в запрошенный уровень кэша 1 .

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


1 По-видимому, существует существенная разница в том, как чипы Intel и AMD обрабатывают выполнение инструкций предварительной выборки: Intel всегда будет выполнять инструкцию предварительной выборки, и поэтому будет блокироваться, если ресурсы (такие как буферы заполнения) недоступны. С другой стороны, чипы AMD, похоже, выполняют инструкцию предварительной выборки только при наличии ресурсов: в противном случае предварительная выборка может быть просто отброшена. Обе стратегии имеют свои преимущества в зависимости от кода и схемы доступа.

...