Средства кэширования МП. Назначение и характеристики. Типы кэш-памяти. Режимы работы при чтении / записи информации
Кэш является дополнительным и быстодействующим хранилищем копий блоков информации основной памяти. Он хранит лишь ограниченное количество блоков даных и каталог – список их текущего соответствия областям основной памяти. Кроме того, кэшироваться может не вся память, доступная процессору (обычно основная динамическая память системной платы). При каждом обращении к кэшируемой памяти контроллер кэш-памяти по каталогу проверяет, есть ли действительная копия затребованых даных в кэше. Если она там есть, то это случай кэш-попадания, и обращение за даными происходит только из кэш-памяти. В противном случае это кэш-промах и данные берутся из основной памяти. В соответствии с алгоритмом кэширования блок даных, считаный из основной памяти при определенных условиях, заменит один из блоков кэша. Обращение к основной памяти может начатся одновременно с поиском в каталоге, а в случае попадания – прерваться (архитектура Look Aside). Это экономит время, но приводит к излишнему энергопотреблению. Друго вариант – обращение к основной памяти начинается после промаха (архитектура Look Through).
В современных компьютерах кэш обычно строится по двухуровневой системе. Первичный кэш встроен в процессор и работает на внутренней тактовой частоте процессора. Для повышени производительности для данных и команд часто используется раздельный кэш. Вторичный кэш обычно устанавливается на системной плате и работает на внешней тактовой частоте процессора – частоте системной шины.
Кэш-контроллер обеспечивает когерентность – согласованость данных кэш-памяти обоих уровней с данными основной памяти. Контроллер оперирует строками фиксированной длины, которая может хранить копию основного блока памяти. С каждой строкой кэша связана информация об адресе скопированого в нее блока памяти и признаки ее состояния. Строка может быть действительной или пустой. Информация о том, какой именно блок занимает строку и ее состояние называется тэгом и хранится в связанной с данной строкй памяти тэгов. Возможен вариант секторированого кэш, при котором одна строка содержит несколько смежных ячеек – секторов, размер которых соответствует минимальной порции обмена даных кэша с основной памятью. Поведение кэш-контроллера при операции записи в память, когда копия затребованой области находится в строке кэша, определяется политикой записи. Существует два основных алгоритма записи дааных из кэша в основную память: сквозная запись WT (Write Through) и обратная запись WB (Write Back).
WT предусматривает выполнение каждой операции записи, попадающей в кэшированный блок, одновременно и в строку кэша и основную память. При этом процессору при каждой записи придется ожидать окончания относительно длительной записи в основную память. Алгоритм прост в реализации, но обладает низкой эффективностью записи.
WB позволяет уменшить количество операций записи на шине основной памяти. Если блок памяти, в который должна производиться запись, отображен и в кэше, то физическая запись будет произведена в эту действительную стоку кэша, и она будет отмечена как грязная, т.е. требующая выгрузки в основную память. Только после этой выгрузки строка станет чистой. В основную память данные переписываются только целой строкой или непосредственно перед ее замещением в кэше новыми даными.
В зависимости от определения взаимного соответствия строки кэша и области основной памяти различают три архитектуры кэш-памяти: кэш прямого отображения, полностью ассоциативный кэш и частично-ассоциативный кэш.