Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 6. Организация кэш-памяти.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
349.7 Кб
Скачать

6.4. Выбор размера блока

Размер блоков, пересылаемых между памятями соседних уровней иерархии подсистемы памяти, может изменяться в широких пределах, например, 32, 64, 128, 256 байт. Не существует закономерности в виде функциональной зависимости между эффективностью иерархической подсистемы памяти и размерами пересылаемых блоков. Интуитивно очевидно, что: очень маленький размер блока (например, равный запрашиваемым данным) будет вызывать повышенное количество обращений к более медленным памятям более низких уровней иерархии; большой размер блока также может вызывать повышенное количество обращений к более медленным памятям более низких уровней иерархии, если данные из этих блоков будут использоваться не эффективно.

В современных процессорах для высокопроизводительных персональных компьютеров размер блока для всех уровней иерархии равен 64 байтам.

В некоторых процессорах для мультипроцессорных систем фирм IBM, Intel размеры блоков могут быть и больше 64 байтов. Например, в процессорах линии POWER 7 (и последующих) данные между оперативной памятью и кэш-памятью последнего уровня передаются блоками 256 байт.

6.5. О скорости выполнения операций в кэш-памяти

При обращениях к кэш-памяти в реальных программах преобладают обращения по чтению. Все обращения за командами являются обращениями по чтению, и большинство команд не пишут в оперативную память. Обычно операции записи составляют порядка 10% общего трафика оперативной памяти. Желание сделать общий случай более быстрым означает оптимизацию уровней кэш-памяти для выполнения операций чтения, однако при реализации высокопроизводительной обработки данных нельзя пренебрегать и скоростью операций записи.

К счастью, общий случай является и более простым. Блок из уровня кэш-памяти может быть прочитан в то же самое время, когда читается и сравнивается его тег. Таким образом, чтение блока начинается сразу, как только становится доступным адрес блока. Если чтение происходит с попаданием, то блок немедленно направляется источнику запроса. Если же происходит промах, то от заранее считанного блока нет никакой пользы, правда нет и никакого вреда.

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

6.6. Выбор блока кэш-памяти для замещения

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

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

При полностью ассоциативной или множественно-ассоциативной организации кэш-памяти имеются несколько блоков, из которых надо выбрать один. Как правило, для замещения блоков применяются две основных стратегии: случайная стратегия и стратегия и LRU (Least-Recently Used).

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

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

Достоинство случайного способа заключается в том, что его проще реализовать в аппаратуре. Когда количество блоков для поддержания трассы увеличивается, алгоритм LRU становится все более дорогим и часто только приближенным.

Эффективности случайной и LRU стратегий отличаются незначительно. При разработке кэш-памяти, как правило, предпочтение отдается более простой стратегии LRU.