- •Содержание:
- •Кэш-память
- •Архитектура кэш-памяти
- •Кэш-память с прямым отображением
- •Полностью ассоциативная архитектура
- •Наборно-ассоциативная архитектура
- •Гарвардская и Принстонская архитектуры
- •Размеры кэш-памяти
- •Методы записи
- •Обновление информации
- •Кэш в процессорах с умножением частоты
- •Разработка приложения.
- •Техническое задание.
- •Интерфейс программы.
- •Алгоритм приложения.
- •Исходный текст программы.
- •Описание программы.
Кэш-память
Функционально кэш-память предназначена для согласования скорости работы сравнительно медленных устройств, таких, например, как динамическая память, с относительно быстрым микропроцессором. Дело в том, что работа большинства элементов, на которых построен процессор, во многом похожа на работу ячеек статической памяти — триггеров. Поэтому их быстродействие существенно выше, нежели элементов динамической памяти. Использование кэш-памяти позволяет избежать циклов ожидания в его работе, которые снижают производительность всей системы.
Для пользователей IBM PC-совместимых компьютеров использование кэш-памяти началось еще с 386-х микропроцессоров. Для таких устройств, синхронизируемых, например, частотой 33 МГц, тактовый период составляет приблизительно 30 нc. Обычные микросхемы динамической памяти имеют время выборки от 60 до 100 нc. Отсюда, в частности, следует, что центральный процессор вынужден простаивать 2—3 периода тактовой частоты (то есть имеет 2—3 цикла ожидания), пока информация из соответствующих микросхем памяти установится на системной шине данных компьютера. Понятно, что в это время процессор не может выполнять никакую другую работу. Такая ситуация приводит к снижению общей производительности системы, что, разумеется, крайне нежелательно. Таким образом, узким местом системы становится оперативная динамическая память. Из этого положения существует, казалось бы, простой выход — использовать в качестве основной памяти достаточно быструю статическую. Однако если основную оперативную память выполнить на микросхемах статической памяти, то стоимость компьютера возрастет очень существенно. Таким образом, с помощью технологии обработки, использующей кэш-память, найден определенный компромисс между стоимостью и производительностью системы.
Заметим, что работа кэш-памяти практически "прозрачна" (то есть невидима) для пользователя. Тем не менее она очень важна. В IBM PC-совместимых компьютерах технология использования кэш-памяти помимо обмена данными между микропроцессором и основной оперативной памятью находит применение также между основной оперативной памятью и внешней (накопителями на сменных и несменных носителях).
Архитектура кэш-памяти
Прежде чем говорить об архитектуре кэш-памяти, введем такое понятие, как длина строки-кэша (cache-line). Если при обмене данными между устройствами речь обычно идет о блоке информации, то для кэш-памяти существует некий набор данных, называемых строкой.
Итак, архитектура кэш-памяти определяется тем, каким образом достаточно большая по размеру основная память отображается на сравнительно небольшой кэш. Существуют, вообще говоря, три разновидности отображения: кэш-память с прямым отображением (direct-mapped cache), частично, или наборно-ассоциативная (set-associative cache) и полностью ассоциативная (rally associative cache). Все эти архитектуры так или иначе используются для построения кэш-памяти современных микропроцессоров.
Кэш-память с прямым отображением
Самой простой организацией обладает кэш-память с прямым отображением. В этом случае адрес памяти полностью определяет используемую строку кэша. Таким образом, один или несколько блоков оперативной памяти строго соответствуют одной строке кэша, однако поскольку занимать ее в одно и то же время может только один из них, то для каждой строки используется специальный признак — тег (tag). Более подробно рассмотрим работу кэш-памяти с прямым отображением по схеме, изображенной на рис. 22.
Допустим, что гипотетический микропроцессор использует 10-разрядный адрес, размер кэша составляет 8 строк, а длина каждой строки — 8 байт. В какой-то момент времени процессор хочет прочитать два байта информации, хранимой в оперативной памяти, с адреса 0010001100. Для кэш-памяти этот адрес подразделяется на три части. В данном случае три младших разряда называются смещением (offset) и полностью определяют положение каждого из восьми байт в строке. Средние три разряда позволяют однозначно выбрать одну из восьми строк (line) кэша. Оставшиеся старшие разряды несут информацию о теге. И только в том случае, если тег строки кэша совпадает со значением, определяемым старшими разрядами адреса, байты информации считываются из кэшпамяти. В противном случае чтение должно идти из основной памяти или информация в строке должна быть заменена. Разумеется, в случае ее замены меняется и значение ее тега.
Преимуществом реализации такого типа архитектуры являются довольно низкие затраты, поскольку, по сути, требуется всего лишь одна операция сравнения (для тегов). Недостатки ее, впрочем, также очевидны. Например, если два блока данных основной памяти, используемые одинаково часто, претендуют на одну и ту же строку в кэше. Внешняя кэш-память с прямым отображением используется, например, вместе с 386-ми процессорами (кэш-контроллер 182385), а внутренняя — в микропроцессоре DEC Alpha 21064.