Принципы работы кэша

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

 

 

На рис. 1.17 показана структура основной памяти и кэша. Основная па­мять состоит из 2n адресуемых слов, каждое из которых характеризуется своим уникальным n-битовым адресом. Предполагается, что вся память со­стоит из определенного количества блоков фиксированной длины, в каждый из которых входит К слов. Таким образом, всего имеется М =2n блоков. Кэш состоит из С слотов, по К слов в каждом. При этом количество слотов намного меньше количества блоков (С<<К)4. Некоторое подмножество блоков основной памяти хранится в слотах кэша. Если нужно прочесть из памяти слово из какого-то блока, которого нет в кэше, то этот блок передается в один из слотов кэша. Из-за того, что блоков больше, чем слотов, нельзя закрепить за каждым блоком свой слот. Поэтому каждый слот должен содер­жать дескриптор, идентифицирующий хранящийся в нем блок. В роли деск­риптора обычно выступает число, состоящее из старших битов адреса, и по нему происходит обращение ко всем адресам, которые начинаются этой по­следовательностью битов.

Рассмотрим простой пример, в котором адреса состоят из шести битов, а де­скрипторы — из двух. Дескриптор 01 указывает на то, что в слоте находится блок, в который входят следующие адреса: 010000, 010001, 010010, 010011, 010100, 010101, 010110, 010111, 011000,011001, 011010, 011011, 011100, 011101, 011110, 011111.

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