Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы 2008-2009.doc
Скачиваний:
20
Добавлен:
17.09.2019
Размер:
4.36 Mб
Скачать

63 Логическая и функциональная организация кэш-памяти прямого отображения.

Каждый элемент кэш-памяти состоит из трех частей:

  • Бит достоверности указывает, есть достоверные данные в элементе или нет. Когда система загружается, все элементы маркируются как недостоверные.

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

  • Поле данных содержит копию данных памяти. Это поле вмещает одну строку кэша размером 32 байта.

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

  • Поле строки указывает, какой элемент кэш-памяти содержит соответствующие данные, если они есть в кэш-памяти.

  • Поле тега соответствует битам, сохраненным в поле тега элемента кэш-памяти.

  • Поле слова указывает, на какое слово в строке производится ссылка.

  • Поле байта обычно не используется, но если требуется только один байт, в этом поле указано, какой именно байт в слове нужен. Для кэш-памяти, поддерживающей только 32-разрядные слова, это поле всегда содержит 0.

Когда центральный процессор выдает адрес памяти, аппаратура выделяет из

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

При такой схеме смежные строки основной памяти помещаются в смежные элементы кэш-памяти. Фактически в кэш-памяти может храниться до 64 Кбайт смежных данных. Однако две строки, адреса которых отличаются ровно на 64 Кбайт F5 536 байт) или на любое целое, кратное этому числу, не могут одновременно хранится в кэш-памяти (поскольку они имеют одно и то же значение поля строки). Например, если программа обращается к данным с адресом X, а затем выполняет команду, которой требуются данные с адресом X + 65 536 (или с любым другим адресом в той же строке), вторая команда требует перезагрузки

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