При выполнении серии вызовов _mm_stream_load_si128()
(MOVNTDQA
) из последовательных мест памяти будет выполняться предварительный выбор аппаратного обеспечения, или я должен использовать явную предварительную выборку программного обеспечения (с подсказкой NTA), чтобы получить преимущества предварительной выборки, все еще избегая загрязнения кэша?
Я прошу об этом потому, что их цели кажутся мне противоречивыми. Потоковая загрузка будет извлекать данные в обход кеша, в то время как pre-fetcher пытается проактивно извлекать данные в кеш.
При последовательном повторении большой структуры данных (обработанные данные не будут ретушироваться в течение длительного времени), мне было бы разумно избегать загрязнения иерархии chache, но я не хочу подвергать частым штрафам за 100 циклов потому что pre-fetcher не работает.
Целевая архитектура - это Intel SandyBridge