Элементы в той же строке 64B по-прежнему будут иметь преимущества кэширования, если повторение будет достаточно быстрым (т. Е. «Больше работы» не перебивает кэш).
Элементы между строками должны по-прежнему пользоваться преимуществами предварительной выборки HW, если массивы находятся на разных страницах.
Использование поля Hash создаст зависимость от данных и понесет штраф, конечно. Это обычная проблема A[B[i]]
, и некоторые академические предварительные сборщики ее решают (например, IMP ), но, насколько мне известно, ничего в коммерческих процессорах нет. Существующая «последовательная» предварительная выборка HW должна уменьшить большую ее часть, если она выполняется достаточно далеко вперед, чтобы предварительно выбрать достаточное количество итераций для хэширования, прежде чем они фактически будут использованы, и в этом случае штраф будет уменьшен до двух последовательных обращений L1 (или любого кеша). Уровень реализует этот prefetcher - обычно L1 должен иметь один).
Обратите внимание, что влияние на производительность не является прямым, так как разные итерации независимы, но задержка памяти будет переводиться в ограничение BW памяти после насыщения буферов обработки ошибок.