Cache
Как правило, кэш-память (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-го уровня. Два последних типа обеспечивают пакетный режим доступа к данным.
640KB to 1MB Cacheability
опция через установку в "Enabled" позволяет кэшировать последние 384 КБ из первого мегабайта ОЗУ.
В предыдущей главе и в опциях, представленных далее, достаточно полно изложены всевозможные варианты "затенения" и кэширования фрагментов памяти, расположенных в верхних 384-х килобайтах первого мегабайта системной памяти. Несколько "особняком" от них выделяются предложенные опции. Не по их виду, а по тем значениям, которые возможны для них. Вот эти опции:
Video BIOS C000-C3FF
Video BIOS C400-C7FF
C800-CBFF Memory
CC00-CFFF Memory
D000-D3FF Memory
D000-D7FF Memory
D800-DBFF Memory
DC00-DFFF Memory
Ext BIOS E000-E3FF
Ext BIOS E400-E7FF
Ext BIOS E800-EBFF
Ext BIOS EC00-EFFF
Довольно внушительно. А вот и значения этих опций:
"PCI Device" - выбранный диапазон отдается под потребности PCI-устройства,
"Shadowed" - выбранный диапазон "затеняется",
"Write Prot." - выбранный диапазон защищен от записи. При загрузке системы в этот адресный диапазон копируется некое ПЗУ и в процессе работы эти адреса доступны только для чтения,
"Uncached DRAM" - некэшируемый регион памяти,
"PCI/Cached" - выбранный диапазон принадлежит PCI-устройству и кэшируется,
"Shadowed/Cached" - выбранный диапазон "затеняется" и кэшируется,
"Write/Cached" - по адресам выбранного фрагмента может производиться запись и этот фрагмент кешируется,
"Cached DRAM" - кэшируемая область памяти.
Cache Base 0-512k
Cache Base 512-640k
Cache Extended Memory Area
для использования этих опций, предложенных "Phoenix BIOS", предварительно должно быть включено кэширование в системе, для чего может быть предназначена интегрированная опция "Cache". Понятно, что механизм кэширования может быть включен для двух областей: основной памяти и расширенной (типа XMS). А данные опции дают возможность выбрать метод кэширования для каждой из областей. Итак:
"Write Back" - данные сначала записываются в кэш, в основную же память по необходимости либо "при удобном случае". Наиболее быстрый метод. Более подробно см. ниже,
"Write Through" - данные записываются в кэш и в основную память одновременно,
"Write Protect" - выбранная область кэшируется, но при этом защищена от записи,
"Uncached" (или "Disabled") - запрещено кэширование для выбранной области.
Следующая "пачка" опций "Phoenix BIOS" выглядит уже привычно, хотя присутствуют важные особенности.
Cache A000-AFFF
Cache B000-BFFF
Cache C800-CBFF
Значения опций: "Write Back", "Write Through", "Write Protect", "Disabled", а также
"USWC Caching" (Uncacheable Speculative Write Combining) - режим некэшируемой объединенной записи. Применяется для отображаемых в памяти устройств ввода-вывода и отображаемого кадра видеопамяти.
"Cache Memory" - так называется внушительное меню "Phoenix BIOS" со следующими опциями:
Cache System BIOS Area
Cache Video BIOS Area
Cache DRAM Memory Area
- в данных опциях выбираются либо разрешение/запрет кэширования, либо метод кэширования (см. выше). Следующая опция-меню "Cache Memory Regions" может быть использована, если в опции (см. ниже) "Cache" выбрано любое из двух значений: "Intern only" или "Intern and Extern". Вот эти опции, надеюсь, уже понятные пользователю:
C800 – CBFF
CC00 – CFFF
D000 - D3FF
D400 - D7FF
D800 – DBFF
DC00 – DFFF
Значения этих опций стандартны: "Enabled" и "Disabled". Включение какой-либо опции приводит к кэшированию выбранной адресной области. Если в системе используется ISA-карта с двухпортовой памятью, отображаемой в системной памяти в ROM-области, то для такой адресной области кэширование должно быть запрещено.
Cache Rd+CPU Wt Pipeline
- разрешение опции ("Enabled") позволяет включить конвейеризацию для циклов чтения из кэш-памяти и циклов записи из CPU, что значительно повышает производительность системы.
Cache Timing
- если в системе установлен только один модуль асинхронной кэш-памяти, то необходимо выбрать значение "Fast". Значение "Fastest" устанавливается при наличии в системе двух банков вторичного кэша. В некоторых случаях вместо "Fast" может быть и значение "Faster". Тогда надо внимательнее ознакомиться с имеющимся в системе кэшем, дабы действовать наверняка (см. ниже опцию "Pipeline Cache Timing").
Пользователь должен быть готов и к встрече с опцией "Cache Performance", благодаря которой также устанавливаются скоростные характеристики. Но при этом необходимо учитывать и характеристики основной памяти. Если система использует EDO-память, то значение "Standard" окажется оптимальным, для SDRAM-модулей подойдет "Default" (!), значение "Fast" также окажется оптимальным для SDRAM-памяти, но и позволит эффективнее эксплуатировать кэш.
CPU External Cache
- (внешний кэш процессора). Этой опцией разрешается/запрещается использование внешнего кэша процессора (кэша второго уровня, или "L2"). Запрещать какой-либо вид кэш-памяти следует только в случае необходимости искусственного замедления работы системы, например, при установке какой либо старой платы расширения, или первичного тестирования компьютера. Запрет возможен и для старого программного обеспечения, а также для самых первых версий "OS/2". Во всех случаях возможно потребуется отключить как все виды кэширования, так и "затенения". Может принимать значения:
"Enabled" - разрешено,
"Disabled" - запрещено.
Если вспомнить былое, да и не такое уж далекое, то необходимо отметить, что при отсутствии кэша второго уровня или его неисправности разрешение использования внешнего кэша могло привести к сбоям системы.
Поскольку речь идет лишь о включении или отключении кэш-памяти, то в данном случае, казалось бы, нет смысла рассматривать специфику отдельных процессоров или чипсетов. Однако! Вспомним первые процессоры Celeron с отсутствующим кэшем L2, и тогда сказанное чуть выше оказывается вполне актуальным. Определенные сложности могут возникнуть и при разгоне процессоров. Стоит напомнить, что у архитектуры P5 (Pentium, Pentium MMX) кэш работает на частоте шины, а для архитектуры P6 частота кэш-памяти "привязана" к частоте ядра. При этом она может быть половинной (Pentium II) либо равной ей (Pentium Pro).
Опция может называться "External Cache Memory", "External Cache", "CPU Level 2 Cache", "L2 Cache Enable", "L2 Cache".
CPU Internal Cache
- (внутренний кэш процессора). Этой опцией разрешается/запрещается использование внутреннего кэша процессора (кэша первого уровня, или "L1"). Стоит напомнить, что внутренний кэш стал принадлежностью процессоров, начиная лишь с 386-х. Может принимать значения:
"Enabled" - разрешено,
"Disabled" - запрещено.
В некоторых случаях опции по управлению внутренним и внешним кэшем могут быть объединены в одну опцию - "Cache Memory", со значениями "Disabled", "Internal" и "Both". В других же, как это предложил "Phoenix BIOS", может быть предложено небольшое меню "Cache" с дальнейшим выбором параметров:
"Enabled" - включено кэширование, но требуется дальнейшее уточнение,
"Intern Only" - используется только внутренний кэш,
"Intern and Extern" - внутренний и внешний кэш включены,
"Disabled".
Опция может называться "Internal Cache Memory", "CPU Level 1 Cache".
А вот опции "