Организация КЭШ-памяти

Быстродействие компьютера в наибольшей мере зависит от быстродействия ядра компьютера – процессора и оперативной памяти. Такт работы процессора составляет обычно 1 – 5 наносекунд и команда выполняется процессором примерно за десяток тактов. Однако для выполнения команды надо несколько раз обратиться к оперативной памяти, например, для выборки из оперативной памяти команды и для выборки операнда. Цикл обращения к оперативной памяти значительно больше такта работы процессора и составляет обычно 5 – 20 наносекунд. Таким образом, для большинства команд основная доля времени выполнения команды приходится на обращение к оперативной памяти. количество обращений к оперативной памяти можно уменьшить, если между процессором и оперативной памятью встроить сверхоперативное запоминающее устройство – кэш-память. Кэш память имеет незначительную емкость, например 256 – 2048 Кбайт, ограниченность которой позволяет обеспечить ее высокое быстродействие – длительность цикла обращения на уровне 1 –2 тактов работы процессора, т.е. в 5 – 10 раз меньше длительности цикла обращения к оперативной памяти. В ячейках кэш-памяти должны размещаться команды и слова данных, наиболее интенсивно используемые на каждом этапе решения задачи. Когда процесс обращается к ячейке памяти с адресом А, кэш должен определить наличие слова с адресом А в ячейках кэш и сформировать осведомительный сигнал x = 1, если слово с адресом А хранится в кэш. В таком случае слово будет выбрано из кэш. Если слово с адресом А в кэш отсутствует (x = 0), то необходимо обратиться к ячейке А оперативной памяти, и прочитанное слово передать в процессор и одновременно в кэш. Последующие обращения к слову с адресом А будут обслужены уже кэш без предварительного обращения к оперативной памяти. Таким образом ячейки кэш временно подменяют ячейки оперативной памяти, и кэш обслуживает обращения со стороны процессора за время меньшее, чем оперативная память. Естественно, что чем больше емкость кэш, тем выше вероятность наличия в нем слова с адресом А, т.е. тем большая доля обращений к оперативной памяти будет обслужена кэш. В результате этого быстродействие компьютера возрастает пропорционально доли обращений к памяти, обслуживаемых кэш без обращения к оперативной памяти. Кэш является прозрачным для программ, исполняемых компьютером, и абсолютно не влияет на логику построения программы. Включение и выключение кэш никак не сказывается на процессе выполнения программы и влияет только на время ее выполнения.

Конструктивно кэш память может быть встроена в процессор и работать на частоте процессора, а может быть размещена как внешняя по отношению к процессору кэш-память, работающая на частоте общей шины процессора. К сожалению, емкость кэша, всегда ограничена сложностью схем процессора, обеспечивающих хранение большого числа слов, суперскалярную обработку команд и т.д. Обычно в процессор встраивается кэш команд и кэш данных, имеющие емкость от 128 байт до 16 Кбайт каждый и называемые кэшем 1 уровня. Для увеличения производительности компьютера используется кэш 2 уровня - внешний по отношению к процессору и имеющий емкость до 2 Мбайт. В этом кэше хранятся и команды, и данные.

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

Кэш с прямым отображением. Кэш с прямым отображением – сверхоперативное запоминающее устройство, в котором данные идентифицируются старшими разрядами адреса слова, а адрес ячейки кэша определяется младшими разрядами слова. Схема кэша, обеспечивающего преобразование 32 – разрядного адреса в физический адрес ячейки кэша, представлена на рис. 5.6.

 

 

Данный кэш обеспечивает хранение 65536 слов длиной в 32 бита, т.е. имеет емкость 256 Кбайт. Для организаций обращений к кэшу 32-х разрядный адрес разделен на три поля: поле В, адресуемое 16-ю разрядами адреса, определяет адрес ячейки кэша, в которой может хранится слово с адресом А; поле С адреса используется как признак (тэг) слова с адресом А; Младшие два бита определяют адрес байта в слове. Каждая ячейка кэша состоит из трех полей:

управляющего поля УП, в котором хранится признак наличия информации в ячейке В кэша; адресного поля АП, в котором размещается признак С слова, хранимого в ячейке В кэша; поля данных ПД, в котором хранится слово D.

Адрес А операнда, сформированный процессором на основе данных в адресной части команды, обрабатывается следующим образом. Значение в поле В определяет адрес ячейки кэша, по которому производится обращение к кэш – памяти. Из ячейки В кэша выбираются: из управляющего поля признак наличия информации dВ в ячейке; из адресного поля признак слов СВ хранимый в ячейке В; Схема сравнения сравнивает значения поля С адреса А со значением признака СВ. Если С = СВ , схема сравнения формирует сигнал 1, поступающий на элемент U, который формирует сигнал x = 1, если dВ = 1. При x = 1 слово данных D, выбранное из поля данных ПД, поступает в процессор в качестве операнда. Таким образом при наличии в ячейке В кэша обращение к памяти обслуживается в кэше без обращения к оперативной памяти.

Если же признак наличия информации в ячейке dB = 0 или ССВ, сигнал х = 0 осведомляет процессор об отсутствии в кэше слова с адресом А. В этом случае процессор должен обратиться к оперативной памяти по адресу А[31:2]. Если выполняется чтение операнда, то по окончании цикла обращения к ячейке А[31:2] слово из оперативной памяти поступает в процессор и одновременно в ячейку В кэша. Это гарантирует, что последующее обращение процессора к слову с адресом А будет обслужено кэш памятью без обращения к оперативной памяти.

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

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

Количество обращений к оперативной памяти можно снизить еще более, если ввести в управляющее поле УП (см. рис. 5.6.) еще один признак – признак записи слова в кэш wB. При загрузке слова из оперативной памяти в кэш значение признака записи слова в ячейку В кэша принимается равным нулю. Если происходит запись результата процессорной обработки в кэш, то признак записи результата wB = 1. Это означает, что копия записанного в кэш результата отсутствует в настоящее время в оперативной памяти. Естественно, что все измененные при записи результатов слова должны быть записаны в оперативную память для обеспечения тождественности состояния кэша и оперативной памяти.

 

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

схемой, представленной на рисунке 5.7. В данной схеме процессор обрабатывает 32 –

разрядные слова, а оперативная память за одно обращение читает и записывает 128 – разрядные слова. Если при обращении к кэшу сформирован сигнал промаха кэша х = 0, то происходит обращение к оперативной памяти, из которой при чтении будет выбрано128 – разрядное слово, поступающее в кэш и называемое строкой кэша. Для 32 – разрядного слова, поступающего в процессор, служит мультиплексор, который реагирует на сигнал уi = 1, формируемый управлением кэша, и передает 32 – разрядное слово в процессор. Если процессор должен записать слово в кэш и управление кэша выдает сигнал промаха х = 0, то перед записью слова в кэш должна быть загружена 128 – разрядная строка, в которую будет внесено записываемое слово. Для формирования управляющего сигнала yi, i = 0, …, 3, поступающего в мультиплексор используются разряды 2 и 3 адреса, формируемого процессором, которые определяют номер слова в строке кэша.

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