Кэш предназначен для того, чтобы приблизить скорость доступа к памяти к максимально возможной, и в то же время обеспечить большой объем памяти по цене более дешевых типов полупроводниковой памяти. Эта концепция представлена на рис. 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 показана блок-схема операции чтения слова из памяти. Процессор генерирует адрес слова, которое нужно прочесть. Если это слово хранится в кэше, оно передается процессору. В противном случае блок, содержащий это слово, загружается в кэш, и слово передается процессору после загрузки блока в кэш.