Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
0_МПиИСТС_Все главы.doc
Скачиваний:
518
Добавлен:
27.03.2016
Размер:
10.5 Mб
Скачать

3.2. Кэш-память

Кэш-память представляет собой быстродействующую буферную память ограниченного объема, которая располагается между процессором и ОЗУ. Обычно кэш-память размещается непосредственно на кристалле микропроцессора или реализуется в виде отдельных микросхем памяти высокого быстродействия, которые размещаются в общем корпусе с кристаллом микропроцессора. При этом цикл обращения к кэш-памяти производится за 1-2 рабочих такта микропроцессора, то есть намного быстрее, чем обращение к ОЗУ по системной шине.

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

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

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

Рис. 3.1. Типовая структура кэш-памяти и реализация обращения к ней

Типовая структура кэш-памяти, реализуемой в современных микропроцессорах, показана на рис. 3.1. Эта память ассоциативного типа, состоящая из строк длиной в несколько десятков байт (обычно 16, 32 или 64 байта). Строки объединены в наборы, каждый из которых содержит несколько строк (обычно 2, 4 или 8). Число таких наборов зависит от емкости реализуемой кэш-памяти. Например, кэш-память емкостью 16 Кбайт, представленная на рис. 3.1 содержит 128 наборов S127-0 по четыре строки LЗ-0 длиной 32 байта В31-0 каждая.

При обращении к кэш-памяти сформированный микроконтроллером адрес представляется как в виде трех полей (рис. 8.1: поле тега TAG, поле SET. указывающее номер набора, и поле ВУТЕ, задающее номер байта в строке. При обращении к кэш-памяти содержимое поля SET определяет номер выбираемого набора. Значения старших разрядов адреса (поле TAG) сравниваются с содержимым полей тегов (tag0-tag3) в строках выбранного набора. Если значение TAG совпадает с содержимым тега одной из строк, то фиксируется кэш-попадание, и производится выборка из этой строки операнда, адресуемого полем ВУТЕ. Если совпадение не обнаружено, то фиксируется кэш-промах. В этом случае из основной памяти выбирается строка (32 байт), адресуемая разрядами АЗ1-5 адреса, которая размещается в одной из строк выбранного набора. Заполнение кэш-памяти производится построчно, то есть в случае кэш-промаха из основной памяти копируется целая строка, включающая адресованный операнд. При этом обновляется строка в наборе, номер которого определяется полем SET сформированного физического адреса. Старшие разряды адреса (поле TAG) заносятся в поле 1ау соответствующей строки кэш-памяти и становится атрибутом данной строки.

Пересылка строк между кэш-памятью и ОЗУ выполняется по системной шине с помощью пакетных циклов, которые позволяют заполнить строку за минимальное количество тактов. Для ускорения обмена в системах с кэш-памятью обычно используется системная шина увеличенной разрядности: 64 или 128 бит. Использование пакетных циклов и системной шины повышенной разрядное™ обеспечивает достаточно быстрое обновление содержимого кэш-памяти.