Кэш-память и ее организация
Кэш-память ― это быстродействующая память, располагаемая между МП и основной памятью. Она предназначена для повышения производительности компьютеров. Быстродействующая память обычно является дорогостоящей, поэтому повышать быстродействие всей основной памяти большой емкости не выгодно. В связи, с чем предлагается реализовать память небольшой емкости с предельным быстродействием ― кэш-памяти. В кэш-память помещают текущие программы и данные, хранящиеся обычно в основной памяти. При выполнении программы процессор сначала передает адресный сигнал в кэш-память, с помощью которого можно осуществить запись–считывание. Наличие этого адреса в кэш-памяти называется совпадением КЭШа, а отсутствие ― несовпадением.
Кэш-память представляет собой быстродействующую память, в которую из основной памяти с умеренной скоростью переносятся команды и данные (выбранные участки ОЗУ копируются в кэш). Структурная схема системы подключения кэш-памяти в ЭВМ изображена на рисунке 5.11.
Кэш-память была предложена, когда появились процессоры, работающие значительно быстрее ОЗУ. Они вынуждены были ожидать, пока из памяти будут введены требуемые элементы данных. В системах с кэшированием информация пересылается из вторичной памяти (с жесткого диска) в основную память, а затем в кэш-память. Чтобы данные попали в кэш, нужно выполнить следующие действия:
В начале работы программа, обращаясь к своему адресному пространству, передает устройству управления памятью или микропрограмме виртуальный адрес. Если страница или сегмент, содержащие этот адрес, находятся в основной памяти, виртуальный адрес преобразуется в адрес основной памяти. В противном случае возникает отказ страницы, и страница или сегмент загружается в основную память.
После этого аппаратно проверяется, не находится ли требуемый блок уже в кэш-памяти. Если это так, то содержимое адресуемой ячейки извлекается из кэша (либо результат вычисления заносится в ячейку). В противном случае формируется отказ кэш-блока (аналогичный отказу страницы) и информация копируется из основной памяти в КЭШ. После загрузки блока в кэш-память команда выполняется повторно. Схема загрузки из основной в кэш-память управляется внешней (по отношению к ЦП) схемой – кэш-контроллером и без участия ОС.
Следует заметить, что использование кэш-памяти является возможным только потому, что команды и данные программ в большинстве случаев расположены в близлежащих ячейках памяти (локальность программы).
В последующих шагах, когда процессору требуется следующая команда или следующий элемент данных, он сначала обращается к кэш-памяти. Доступ, при котором данные обнаруживаются в кэш-памяти, называется кэш-попаданием. В противном случае фиксируется кэш-промах. Доля обращений, при котором имелось кэш-попадание, называется коэффициентом кэш-попаданий. На величину этого коэффициента влияют размеры и организация КЭШа, алгоритмы поиска и характеристики выполняемой программы. Кэш-память снабжается контроллером, который управляет ее ресурсами и обеспечивает максимальную эффективность доступа. Контроллер разбивает основную память на блоки с типичным размером 2, 4, 8 или 16 байт. 32 – разрядный процессор обычно использует блоки размером 2 или 4 слова. Когда фиксируется кэш-промах, кэш-контроллер перемещает в кэш-память из основной памяти требуемое слово с целым блоком, содержащим это слово. Обращение к любому байту блока приводит к копированию в кэш всего блока.
Существуют три способа организации кэша: полностью ассоциативный, с прямым отображением, частично ассоциативный.
Полностью ассоциативная кэш-память. В этом случае в кэше содержатся наиболее часто используемые процессором блоки данных и их полные адреса. Когда процессор запрашивает данные, кэш-контроллер сравнивает адрес требуемых данных с каждым адресом в кэш-памяти. Для ускорения поиска используют схемы с параллельным поиском, которые содержат компараторы и контроллеры.
Кэш-память с прямым отображением.Каждый блок из основной памяти может занимать одно единственное место в кэше. Это уменьшает число шагов поиска и сравнений, необходимых для фиксации попаданий и промахов. Основной недостаток – конфликтование в кэш-памяти ячеек ОЗУ, которые имеют одно и тоже место хранения в кэше. В этом случае каждый раз нужно будет осуществлять попеременно подкачку этих ячеек. Однако такие случаи встречаются довольно редко и эта кэш-память обладает приемлемой производительностью при невысокой стоимости.
Частично ассоциативная кэш-память.Этот способ кэширования является промежуточным между рассмотренными выше.
Частично ассоциативная кэш-память характеризуется наличием нескольких наборов блоков с прямым отображением, которые функционируют параллельно. Когда из основной памяти поступает блок данных, он может быть записан на соответствующее этому блоку место любого набора. При выборе нового блока кэш-контроллер должен решить, на место которого блока в кэш-памяти его записать. При этом может быть реализован:
§ случайный выбор;
§ запись в последовательном порядке;
§ на место блока, который не адресовался дольше других.
При использовании КЭШ-памяти имеется две копии данных – одна в КЭШ, а другая – в основной памяти. Одна из них может быть модифицирована, а другая нет, т.е. возникает два набора данных с одним адресом памяти.
Наличие двух копий требует механизма обновления, который предотвращал бы использование устаревших данных. Разработано несколько способов записи «новых» данных:
§ сквозная запись – контроллер сразу же после записи данных в кэш переносит их в основную память (потеря производительности);
§ буферизированная сквозная запись – запросы на запись в основную память буферизируются. Это позволяет процессору, не дожидаться окончания записи в основную память, приступить к новому циклу;
§ обратная запись – имеется поле признака каждого блока в кэш-памяти, которое включает бит, показывающий, был ли изменен блок. В основную память переносится только измененный блок. Этот способ обеспечивает максимальную скорость обмена.
В компьютерах на основе МП х386 используется кэш прямого отображения объемом 64 Кбайт на 16384 блока (строки по 4 байта каждая). Адрес в такой памяти имеет две части. Первая часть (поле кэш-индекса) содержит достаточно битов для того, чтобы определить место блока внутри кэш-памяти. Вторая часть (поле тега) содержит достаточно битов для того, чтобы отличить отдельный блок от других блоков, которые могут храниться в конкретном месте кэш-памяти. Каждый блок содержит 32 бит данных и 16 бит теговой информации.
В устройстве управления кэш-памятью используется два компаратора и две программируемые логические матрицы (ПЛМ).
В кэш-памяти прямого отображения МП 386 каждый элемент DRAM отображается в один элемент внутри кэш-памяти. Отображение осуществляется путем разделения 30-разрядного физического адреса процессора на две части: 16-разрядный тег и 14-разрядный индекс. Тег соответствует старшему адресу блока (строки из 4 байт) (А16 – А31), а индекс – младшему адресу строк (А2 – А15). Т.к. каждый элемент ДОЗУ (DRAM) с одинаковыми значениями А2 – А15 отображаются в одно и тоже место в кэше, то лишь один из этих блоков может присутствовать в кэше в любой момент времени. Поле тега и индекса совместно определяют место блока в основной памяти. В дополнение к этому индекс выбирает одно из 16384 мест в кэш-памяти. Самые младшие два бита адреса кодируются так, что становятся доступными все четыре байта слова. Бит А31 определяет различия между некэшируемыми адресами ЭППЗУ и кэшируемыми адресами ДОЗУ.
Если требуемые данные находятся в кэш-памяти, то чтение может быть выполнено за цикл в 2 такта. В противном случае чтение требует 6 тактов.
Кэш-память использует буферизированную сквозную запись для обновления ДОЗУ. кэш-память и ДОЗУ имеют свои собственные контроллеры, это позволяет совмещать буферизированную сквозную запись в ДОЗУ и цикл магистрали.
Дата добавления: 2016-02-09; просмотров: 3459;