Кэширование памяти в BIOS: ускорение работы и оптимизация производительности

Как правило, кэш-память (Cache Memory) ассоциируется с центральным процессором. Она представляет собой статическое ОЗУ с высоким быстродействием, которое компенсирует разницу в скорости работы между медленными устройствами и процессором. Кэш-память играет роль быстрого буфера между процессором и динамической памятью, обеспечивая меньшее время доступа (Access time) к данным. Кэш-память изготавливается на микросхемах статической памяти, которая не требует регенерации и, как правило, её объем не превышает 512 КБ, что заметно влияет на производительность системы.

Кэш-память интегрируется в процессорный кристалл и работает на той же тактовой частоте, что и процессор. При запросе к данным процессор сначала обращается к кэш-памяти, и, если нужные данные отсутствуют, обращение переходит к основной памяти.

При первом обращении к ячейке памяти её содержимое копируется в кэш, и последующие обращения происходят быстрее. При записи данных в кэш доступны два основных режима: Write Through (прямая запись) и Write Back (отложенная запись). В Write Back данные записываются в основную память при следующей возможности, что требует более сложного управления кэш-памятью.

Основные схемы организации кэша:

Основные типы кэш-памяти:

  1. Asynchronous SRAM — асинхронная статическая память, используемая с процессорами 386 и работает по схеме 3-2-2-2.
  2. Synchronous Burst SRAM — синхронная пакетная статическая память с доступом 2-1-1-1 для систем до 66 МГц.
  3. Pipelined Burst SRAM — память с блочным конвейерным доступом, обеспечивает схему 3-1-1-1 и наиболее устойчива к росту тактовой частоты.

Кэш-память второго уровня получает синхронизирующий сигнал от процессора, что позволяет автоматически выполнять четыре последовательных цикла. Первый цикл инициализируется процессором, а следующие три выполняются кэш-памятью в синхронизации с ним. В предыдущих главах и опциях BIOS были изложены различные варианты "затенения" памяти. Также, кэш-память может содержать специфические настройки диапазонов памяти, такие как:

Доступные значения для настройки диапазонов памяти:

Некоторые версии BIOS могут добавлять в указанные диапазоны область системного BIOS для оптимизации производительности системы.

System BIOS Area

- Для использования опций, предложенных "Phoenix BIOS", должно быть включено кэширование в системе с использованием интегрированной опции "Cache". Кэширование может быть активировано для основной и расширенной памяти (типа XMS), и данные опции позволяют выбрать метод кэширования для каждой из них:
"Write Back" — данные сначала записываются в кэш, а в основную память — при удобном случае, что является наиболее быстрым методом.
"Write Through" — данные записываются одновременно в кэш и в основную память.
"Write Protect" — выбранная область кэшируется, но защищена от записи.
"Uncached" (или "Disabled") — кэширование для выбранной области отключено.

Следующие опции в "Phoenix BIOS" имеют свои особенности:

Возможные значения: "Write Back", "Write Through", "Write Protect", "Disabled", а также "USWC Caching" (Uncacheable Speculative Write Combining) — режим некэшируемой объединенной записи, применимый для отображаемых в памяти устройств ввода-вывода и видеопамяти.

Cache System BIOS Area

В этих опциях настраивается разрешение или запрет кэширования, а также метод кэширования. Меню "Cache Memory Regions" используется, если в опции "Cache" выбрано значение "Intern only" или "Intern and Extern".

Возможные значения: "Enabled" и "Disabled". Включение кэширования в данных областях требует запрета кэширования для областей, используемых двухпортовыми ISA-картами, отображаемыми в системной памяти.

640KB to 1MB Cacheability

- Опция "Enabled" позволяет кэшировать последние 384 КБ первого мегабайта ОЗУ.

Async L2 Cache Leadoff

- Опция задаёт (в тактах) время подготовительной фазы перед началом операций чтения или записи данных из асинхронного L2 кэша. Она также может называться "Async SRAM Leadoff Time" или "L2 Async SRAM Leadoff" и поддерживает значения: "3T", "4T". В некоторых системах доступны настройки для операций чтения и записи отдельно: "4T/4T", "3T/3T", "3T/4T".

Похожая опция "L2 Async SRAM Burst" со значениями "2T" и "3T" указывает на поддержку блочных операций. Если речь идёт о синхронной кэш-памяти, опции будут аналогичны, например, "Sync SRAM Leadoff Time" или "L2 Sync SRAM Leadoff", с возможными значениями "3T" и "4T".

Другие опции, связанные с длительностью первого обращения или задержками при работе с кэш-памятью:

Дополнительное значение "1T" указывает, что меньшее значение ускоряет производительность системы. В случае возникновения сбоев это значение нужно увеличить.

Cache Burst Read Cycle

Опция определяет временные параметры обращения процессора к кэш-памяти. Режим "Burst Mode" позволяет процессору в одном цикле чтения получать из кэша по 16 байт данных. Первое обращение занимает больше тактов (например, 3), последующие (3 из 4) — по одному. Например, последовательность 3-1-1-1 указывает на три такта для первого обращения и по одному такту для последующих. Эта настройка может называться "Cache Read Burst", "Async L2 Cache Leadoff" и др. Важно подобрать оптимальное значение для стабильности и производительности, экспериментируя с последовательностью тактов.

Cache Rd+CPU Wt Pipeline

Опция "Enabled" активирует конвейеризацию для циклов чтения из кэша и записи, что улучшает производительность. Это аналог других опций по конвейеризации кэш-памяти, таких как "Cache Rd+CPU W/T Pipeline".

Cache Timing

Для систем с одним модулем асинхронного кэша выбирается "Fast". "Fastest" подходит для двух банков кэша. Опция "Cache Performance" также влияет на скорость работы, учитывая характеристики основной памяти. Например, для EDO-памяти подходит "Standard", а для SDRAM — "Fast" или "Default".

CPU External Cache

Опция управляет внешним кэшем процессора (L2 Cache). Разрешается ("Enabled") или запрещается ("Disabled") использование L2 кэша. Включение L2 кэша повышает производительность, однако может быть отключено для повышения совместимости со старым оборудованием или ПО. Например, в ранних версиях "OS/2" требовалось отключение кэширования. Варианты названий: "External Cache Memory", "L2 Cache Enable", и другие.

CPU Internal Cache

Опция разрешает или запрещает использование внутреннего кэша (L1 Cache) процессора. Может называться "Internal Cache Memory" или "CPU Level 1 Cache". Для некоторых BIOS настройка внутреннего и внешнего кэша объединена в одну опцию — "Cache Memory", со значениями "Disabled", "Internal", и "Both".

Различные методы работы с кэш-памятью

Существует несколько стратегий работы с кэш-памятью:

External Cache Write Policy

Опция определяет метод работы L2 кэша: "Write Back" или "Write Through". Также могут применяться адаптивные методы, такие как "Adaptive WB1" и "Adaptive WB2", для оптимизации записи в зависимости от характеристик памяти.

Internal Cache WB or WT

Опция "WB" (Write Back) или "WT" (Write Through) задает режим записи для внутреннего кэша. Варианты: "L1 Cache Mode", "L1 Cache Update Mode" и т.д. Режим Write Back поддерживают не все процессоры, особенно более старые.

L2 Cache Allocation

Опция "Write Allocation" от AMD добавляет возможность кэшировать ячейки не только при чтении, но и при записи, что эффективно для процессоров AMD K5/K6. В BIOS можно задать значения:

Опция Write-Through Allocate позволяет снизить частоту промахов при кэшировании.

L2 Cache Banks

- Опция, позволяющая указать количество банков кэш-памяти второго уровня, с вариантами: "1 Bank", "2 Banks". Она также может называться "L2 Cache Config" и включать дополнительные значения: "1 Bank (1-1-1-1)" и "2 Banks". При двухбанковой конфигурации доступна опция 2-Bank L2 Cache Speed с режимами "2-1-1-1" и "3-1-1-1", указывающими на более медленные характеристики.

L2 Cache Burst Addressing

- Эта опция настраивает режим адресации для кэша второго уровня. Возможные значения включают:

Опция также известна как "Cache Bursting". Для процессоров Cyrix существует аналогичная настройка "Linear Mode SRAM Support", которую нужно активировать, если установлен процессор Cyrix (например, M1/M2). Опция "L2 Cache Burst Addressing" была распространена в системах с набором SiS5581, также совместима с i430TX.

L2 Cache Cacheable Size

- Опция, определяющая объем кэшируемой памяти, доступный в системе, со значениями от "64 MB" до "512 MB". Выбор зависит от установленной памяти и характеристик чипсета, например, чипсеты 430NX поддерживали 512 MB, а 430TX — только 64 MB.

L2 Cache Size

- Позволяет указать объем кэш-памяти второго уровня, доступной на материнской плате, с вариантами значений: "0 K", "256 K", "512 K", "1 MB", "2 MB". Современные BIOS редко включают такие опции.

L2 Cache Timing

- Настраивает временные интервалы доступа к кэш-памяти второго уровня. Основные значения: "3-1-1-1", "2-1-1-1". Опция также известна как "L2 Cache Back-to-Back Read" и может иметь значения "L2 Cache Write Timing" ("3T/2T", "2T/1T"), влияя на оптимизацию циклов записи.

L2 Caching Control

- Опция в "BIOS Setup", разрешающая или запрещающая регулировку рабочих характеристик внешнего кэша. Значения: "Enabled" (разрешает) и "Disabled" (блокирует).

Memory above 16MB Cacheable

- Опция, включающая кэширование памяти за пределами первых 16 MB ОЗУ. Для активации этой функции необходимо значение "Enabled". Такая настройка может быть актуальна для определенных ОС и приложений.

Non-Cacheable Block-1 Size

- Настраивает размер некэшируемого блока памяти для отображаемой памяти устройств ввода/вывода. Значение по умолчанию — "Disabled". В BIOS также могут присутствовать опции "Non-Cacheable Block-2 Size" и "Non-Cacheable Block-2 Base" для дополнительного региона памяти.

PCI Cycle Cache Hit WS

- Определяет режим обновления кэш-памяти при PCI-циклах. При значении "Fast" кэш обновляется без ожидания, что ускоряет процесс и повышает вероятность "попадания" в кэш.

PCI Master Read Caching

- Опция кэширования циклов чтения "master"-устройств на PCI-шине. Включение ("Enabled") улучшает производительность, но при недостаточном объеме L2-кэша может вызвать конфликты, особенно на процессорах Duron и Athlon.

Pipeline

- Опция активирует конвейеризацию кэш-памяти при значении "Enabled". Варианты включают "Read Pipeline" и "Write Pipeline" для разделения циклов чтения и записи, особенно в системах с чипсетами от VIA Technologies и AMD.

Pipeline Cache Timing

- При наличии одного модуля PBSRAM следует выбрать "Faster"; при двух банках — "Fastest". Опция "SRAM Speed Option" также позволяет регулировать скорость работы вторичной кэш-памяти.

Shadow Memory Cacheable

- Опция кэширования "теневой" памяти. Включение кэширования ("Enabled") может быть целесообразно для MS-DOS и OS/2, но для Linux и Unix-подобных ОС не требуется. Опции могут быть заданы для конкретных диапазонов:

SRAM Back-to-Back

- установка опции в "Enabled" позволит сократить задержки между 32-битными циклами передачи, так как следующие "друг за другом" циклы будут объединяться в единый, с одним адресом, 64-битный пакет.

SRAM Type

- в зависимости от типа установленной кэш-памяти выбирается один из вариантов: "Synchronous" (синхронная) или "Asynchronous" (асинхронная).

Sustained 3T Write

- если установлена конвейерная потоковая кэш-память, включение этой опции ("Enabled") позволит осуществлять непрерывный трёхтактовый цикл записи при доступе к PBSRAM на системных частотах 66 или 75 МГц.

SYNC SRAM Support

- если в системе установлена синхронная кэш-память, можно уточнить её тип. Доступные значения: "Standard" (обычная синхронная SRAM), "Pipelined" (конвейерная кэш-память).

System BIOS Cacheable

- опция кэширования области системного BIOS. Включение ("Enabled") позволяет кэшировать область памяти системного BIOS (F0000H-FFFFFH) во вторичной кэш-памяти. Опция актуальна, если включены функции системного кэширования в разделе "BIOS Features Setup" и если BIOS уже "затенен". Если программа пытается записать данные в эти адреса, система выдаёт ошибку или может зависнуть. Обычно рекомендуется значение "Disabled", так как кэширование этой области редко оправдано.

Контроллер кэш-памяти управляет строками (cache line) фиксированной длины, каждая из которых может хранить блок основной памяти с метками (tags), которые идентифицируют адрес блока и его состояние. Для хранения тегов используется асинхронная SRAM (Tag SRAM), а для тега более чем 8 бит потребуется две микросхемы. Длина строки определяется чипсетом и влияет на объём необходимой памяти для тегов.

Tag Compare Wait States

- данная опция регулирует время ожидания для операций с Tag SRAM (0 или 1 такт ожидания). Опция может называться "L2 TAG Output Delay".

Tag Option

- позволяет выбрать формат тега: 8 бит без "dirty"-бита или 7 бит для тега и 1 бит для "dirty". Опция может называться "Alt Bit in Tag SRAM".

Tag Ram Includes Dirty

- значение "Enabled" активирует дополнительный "dirty"-бит, что увеличивает объём кэшируемой памяти за счёт более эффективного использования Tag SRAM.

Tag/Dirty Implement

- эта опция определяет, как использовать "dirty"-бит: отдельно ("Separate") или совместно с тегом ("Combine"). При "Combine" разрядность может быть 8 или 9 бит.

USWC Write Posting

- режим Uncacheable, speculative write combining (USWC) позволяет комбинировать данные в 64-битные циклы записи, снижая количество транзакций для переноса данных в видеопамять. Это может улучшить производительность, особенно на процессорах семейства Pentium Pro и выше.

Video BIOS Cacheable

- разрешение кэширования области BIOS видеокарты (C0000H-C7FFFH). Опция позволяет кэшировать Video BIOS в кэш-памяти, но её лучше отключить для современных ОС, которые используют графический драйвер вместо BIOS.

BIOS VGA — программа для управления VGA, стандартизированная на C0000H-C7FFFH. Адреса для различных типов адаптеров:

Video Memory Cache Mode

- установка режима кэширования для видеопамяти. Этот параметр доступен для процессоров начиная с Pentium Pro. Режимы: "Write Through", "Write Back", "Write Combine" (WC), и "Write Protected" (WP).

Video Memory Cache Mode

Video RAM Cacheable

- включение кэширования видеопамяти (A0000h-AFFFFh). Опция "Enabled" может повысить производительность, но по умолчанию стоит "Disabled", так как кэширование видеопамяти часто не оправдано.

Weak Write Ordering

- при включении ("Enabled") эта опция позволяет процессору направлять циклы записи в кэш в другом порядке, повышая производительность. Во внешнем кэше порядок всегда остаётся строгим.