2012-03-05 2 views
1

В компьютере кэш-память кэширует основную память с помощью концепции, называемой строками кэша. Допустим, мы увеличиваем размер строки кеша. Пространственная локальность улучшается правильно?Увеличение размера строки кеша

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

Можем ли мы фактически улучшить временную локальность ссылки? Я чувствую, что это невозможно, потому что как можно улучшить доступ к памяти в том же месте памяти.

+3

Bigger is * not * better. Когерентность кэша становится дороже, более вероятно, что ложное совместное использование становится более продолжительным. –

+0

Что происходит с кэшем? – user602774

+0

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

ответ

2

Технически, временное местонахождение является пространственная локальность :)

Пространственная локальность говорит, что если некоторая область памяти M0 доступ во время T0 затем ближайшего будущего обращения к памяти будут вокруг M0.

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

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

Мы, возможно, располагаем хорошим размером для кеша. Дальнейшие улучшения, вероятно, будут связаны с умнее алгоритмами кеша в ЦПУ и алгоритмами кэширования в исполняемом коде, и меньше из-за только более крупных кэшей.

+0

Я думаю, что дальнейшие улучшения будут достигнуты путем обхода когерентных кешей на определенных областях памяти, поэтому программист может поместить только данные, к которым обращается только один поток или с явным недействительным кэшем в этом месте. – Lothar

0

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

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

Самое важное, что следует учитывать при разработке кеша для временной локации, - это политика распределения блоков замены и кэша. Подход LRU подходит к оптимальному случаю для большинства приложений, но не для всех (существуют патологические случаи) и практичен только для кешей с ограниченной ассоциативностью (например, 4-х способами). Дизайнер кэша также может выбрать политику распределения для записи (например, write-no-allocate с оптимизацией буфера объединения записи/объединения).

Оптимизация временных местоположений, как правило, представляет собой программную задачу, в которой могут быть применены несколько методов, таких как блокирование и игнорирование кэша алгоритмов. Существует также очень полезная метрика/метод, где вы можете охарактеризовать временную локальность приложений и называется повторное использование. Этот метод предполагает полностью ассоциативный кеш с заменой LRU и размером кеширования одного слова. Обычно это моделируется как стек, а когда попадает в кеш, положение в стеке дает вам расстояние (тогда вы перемещаете это вверху стека и оставляете отверстие), тогда вы можете генерировать гистограммы и посмотрим, что произойдет.

Здесь может быть бесконечное обсуждение мест, потому что это тема исследования навсегда.

Смежные вопросы