Кэширование памяти
Как правило, кэш-память (Cache Memory) ассоциируется всегда с центральным процессором. Кэш-память представляет собой статическое ОЗУ, обладающее значительно более высоким быстродействием, нежели динамическое. Фактически, кэш-память предназначена для согласования (компенсации) скорости работы сравнительно медленных устройств с относительно быстрым центральным процессором, т.е. она играет роль быстродействующего буфера между процессором и относительно медленной динамической памятью. Для кэш-памяти характерно значительно меньшее время доступа (Access time). Время доступа - это характеристика, показывающая, сколько времени необходимо для того, чтобы получить доступ к той или иной ячейке памяти.
Кэш-память изготавливается на микросхемах статической памяти, не требующей регенерации. Кэш-память значительно дороже динамической, поэтому ее объем, как правило, не превышает 512 КБ. Объем и быстродействие кэш-памяти являются определяющими параметрами быстродействия всей системы для подавляющего большинства задач, решаемых на компьютере. Цифры впечатляющей разницы в быстродействии между различными видами DRAM уменьшаются во много раз при оценке производительности компьютера в целом из-за кэш-памяти. Для большего увеличения быстродействия кэш-памяти она встраивается в собственно кристалл процессора и работает при этом на той же тактовой частоте, что и сам процессор.
При попытке доступа к данным процессор сначала обращается к внутренней кэш-памяти, если их там нет, то ко внешней, лишь затем к основной динамической памяти.
Когда процессор первый раз обращается к ячейке памяти, ее содержимое параллельно копируется в кэш, и в случае повторного обращения может быть с гораздо большей скоростью выбрано из кэша. При записи в память значение попадает в кэш, и либо одновременно копируется в память (схема Write Through - прямая или сквозная запись), либо копируется через некоторое время (схема Write Back - отложенная или обратная запись). При обратной записи, называемой также буферизованной сквозной записью, значение копируется в память в первом же свободном такте, а при отложенной (Delayed Write) - когда для помещения в кэш нового значения в кэш-памяти не оказывается свободной области. При этом в память вытесняется наименее используемая область кэша. Вторая схема более эффективна, но и более сложна за счет необходимости поддержания соответствия содержимого кэша и основной памяти. Очевидно, что контроллер кэш-памяти должен быть достаточно интеллектуальным, чтобы решать столь сложные задачи, в том числе, определять, какие данные могут понадобиться процессору в следующий момент.
Сейчас под термином "Write Back" в основном понимается отложенная запись, однако это может означать и буферизованную сквозную.
Память для кэша состоит из собственно области данных, разбитой на блоки (строки), которые являются элементарными единицами информации при работе кэша, и области признаков (tag), описывающей состояние строк (свободна, занята, помечена для дозаписи и т.п.). В основном используются две схемы организации кэша: с прямым отображением (direct mapped), когда каждый адрес памяти может кэшироваться только одной строкой (в этом случае номер строки определяется младшими разрядами адреса динамической памяти), и n-связный ассоциативный (n-way associative), когда каждый адрес может кэшироваться несколькими строками. Ассоциативный кэш более сложен, однако позволяет более гибко кэшировать данные.
Основные типы кэш-памяти:
Asynchronous SRAM,
Synchronous Burst SRAM,
Pipelined Burst SRAM.
Эти три типа памяти построены по статической схеме и выпускаются для организации кэш-памяти 2-го уровня. Два последних типа обеспечивают пакетный режим доступа к данным.
1. Asynchronous SRAM (асинхронная статическая память) используется еще со времен 386-х процессоров. Принцип работы простейший! Процессор посылает адрес необходимой ячейки памяти, контроллер ищет данные и в случае успеха передает их процессору. При этом в оптимальном варианте работает схема 3-2-2-2 (3 такта на считывание первого сегмента данных и по два такта на считывание 3-х последующих).
2. Synchronous Burst SRAM (синхронная пакетная статическая память) позволяет получить наиболее быстрый доступ в системах с тактовой частотой шины до 66 МГц. Являясь пакетной, эта кэш-память позволяет реализовать схему 2-1-1-1. В системах с частотой системной шины более 66 МГц эта схема ухудшается до 3-2-2-2.
3. Pipelined Burst SRAM (статическая память с блочным конвейерным доступом) приобрела к 1997 году наибольшее распространение, обеспечивая схему доступа 3-1-1-1, которая не ухудшается с ростом тактовой частоты. "Конвейерность" заключается в том, что при считывании нескольких последовательных ячеек памяти они буферизируются, и это позволяет уменьшить время, которое затрачивает процессор на такую процедуру.
Пакетные типы кэш-памяти получают синхронизирующий сигнал от процессора. Кэш содержит счетчик, который, когда бы процессор ни начал цикл, позволяет модулю кэша автоматически быстро выполнить последовательность из четырех циклов. Первый и самый длинный цикл инициализируется процессором. Следующие три вырабатываются модулем кэша синхронно с синхронизирующими импульсами процессора.
В предыдущей главе и в опциях, представленных далее, достаточно полно изложены всевозможные варианты "затенения" и кэширования фрагментов памяти, расположенных в верхних 384-х килобайтах первого мегабайта системной памяти. Несколько "особняком" от них выделяются предложенные опции. Не по их виду, а по тем значениям, которые возможны для них. Вот эти опции: