У кого-нибудь есть опыт использования инструкций по предварительной выборке для процессора Core 2 Duo?Предварительная выборка для Intel Core 2 Duo
Я использую (стандарт?) Предвыборку набор (prefetchnta
, prefetcht1
и т.д.) с успехом для серии машин P4, но при запуске коды на Core 2 Duo, кажется, что prefetcht(i)
инструкция ничего не делать , и что инструкция prefetchnta
менее эффективна.
Мои критерии оценки производительности - это результаты синхронизации для векторной векторной операции BLAS 1 (axpy), когда размер вектора достаточно велик для поведения вне кэша.
Были ли Intel введены новые инструкции по предварительной выборке?
Результаты, которые я вижу, следующие. На P4: Использование prefetchnta гарантирует, что производительность линейна с размером вектора, даже когда достигается поведение вне кэша. Использование prefetchnta не ухудшает производительность при небольших размерах. На ядре2: В то время как prefetchnta несколько полезен при больших размерах, линейное масштабирование не сохраняется. Он также снижает производительность при небольших размерах (примерно на 1/3!). Является ли аппаратная предварительная выборка мешающей, или мне нужно сделать что-то особенное с prefetchnta на ядре 2 дуэта? –
Программное обеспечение-предварительная выборка должно быть [настроено для микроархитектуры] (http://www.realworldtech.com/forum/?threadid=132668&curpostid=132676), например. как далеко от предварительной загрузки перед вашими нагрузками. Кроме того, некоторые шаблоны перестают извлекать выгоду из предварительной выборки SW в новых ургах, которые имеют лучшую предварительную выборку HW –