"Затенение" памяти и выделенная память
"Shadow Memory" — это так называемая "теневая" память, которая используется для улучшения производительности системы. В адресах памяти от 640 КБ до 1 МБ (A0000h - FFFFFh) находятся так называемые "окна", через которые "видно" содержимое различных системных ПЗУ. Например, адреса F0000h - FFFFFh занимают системные ПЗУ, содержащие BIOS системы, а окно C0000h - C7FFFh обычно используется для ПЗУ видеоадаптера (видео-BIOS), и так далее. Включение режима "Shadow" для этих адресных диапазонов, которые соответствуют системным ПЗУ или картам расширения, приводит к копированию содержимого этих ПЗУ в участки основной памяти, которые затем подключаются к тем же адресам, "затеняя" их.
Дает ли это какие-нибудь преимущества? Повышается ли при этом производительность системы? Включение "затенения" значительно ускоряет работу с данными ПЗУ, так как доступ к оперативной памяти происходит быстрее, чем к ROM BIOS. Время доступа к микросхемам ОЗУ намного ниже по сравнению с временем доступа к ROM BIOS (150-200 нс). Кроме того, при обращении к микросхемам BIOS используется 8-разрядный доступ (8-битная шина "X-bus"), в отличие от более эффективного 32-разрядного доступа к оперативной памяти. Это делает включение "затенения" ещё более выгодным. Вдобавок, появляется возможность изменять содержимое ПЗУ, что современные BIOS-системы используют для самонастройки, а в области видео-BIOS часто загружаются экранные шрифты и другие данные.
Что такое "теневая память"? Это вопрос, который связан с распределением памяти в целом. В первом мегабайте памяти (640 КБ) используется основная память, а оставшиеся 384 КБ зарезервированы для ПЗУ и внешних устройств. В современных платах вся память представляет собой непрерывный массив, поэтому разрывать адресное пространство модулей памяти невозможно, и часть системной области приходится аппаратно исключать, что приводит к потере 384 КБ.
Как скопировать в эту память содержимое ПЗУ?
Для этого существует несколько методов:
1) Организация "Shadow Memory". Доступ к ней регулирует чипсет. "Shadow Memory" обычно располагается в том же адресном пространстве, что и исходное ПЗУ. Поскольку две области памяти не могут физически находиться в одном месте, для управления памятью в чипсете есть специальная схема, которая подключает в этот фрагмент адресного пространства либо исходное ПЗУ, либо ОЗУ.
Несколько слов о защите от записи. Обычно "Shadow Memory" в нормальном состоянии работает в режиме "Read Only" (только для чтения), что может создавать трудности, например, при написании русификаторов, так как необходимо открывать "затененные" участки памяти, такие как видеопамять. Разные версии BIOS позволяют решать эту проблему, предлагая опции, позволяющие изменять режимы защиты от записи для требуемого диапазона памяти (например, "Read Write" или "Read Only").
Но не только BIOS может управлять функциями Shadow. Это управление также может осуществлять программа, которая обращается к регистрам чипсета на низком уровне. Начиная с процессоров 386 и далее, в защищённом режиме работы процессора появляется страничная организация памяти, которая позволяет формировать физический адрес из виртуального. Это предоставляет гибкость управления функциями "Shadow" и получение памяти EMS при наличии расширенной памяти в компьютере. Программные менеджеры памяти могут более гибко управлять "Shadow" функциями, чем чипсет, управляемый BIOS, например, управление размерами памяти, выделяемой для "Shadow Memory", может производиться малыми страницами по 4 КБ, что позволяет более эффективно использовать адресное пространство первого мегабайта. В MS-DOS для управления "Shadow" памятью используется драйвер HIMEM.SYS (ключ /SHADOWRAM:ON|OFF).
Затенение полезно в основном в 16-разрядных операционных системах. 32-разрядные системы не используют 16-разрядный код из ROM, заменяя его 32-разрядными драйверами в ОЗУ, которые в дальнейшем заменяют 16-разрядный код BIOS, который используется только при загрузке системы.
2) Организация блоков верхней памяти UMB (Upper Memory Blocks), по сути аналогична предыдущему варианту.
3) Перемещение (relocation) — это перенос неиспользуемой памяти из системной области (640 КБ - 1 МБ) в область расширенной памяти. Обычно перемещается весь фрагмент, то есть все 384 КБ. Это связано со сложностью схемы управления адресами. В этом случае освободить остаток первого мегабайта можно только выключив все установки "Shadow". В первых IBM PC устанавливалось 640 КБ основной памяти и отдельная расширенная память, так что с 384 КБ не было проблем. Позднее чипсеты (Neat, OPTi495, SiS471 и др.) имели возможность переноса 384 КБ за пределы первого мегабайта, присоединяя их к расширенной памяти. Некоторые чипсеты могли переносить только свободные от "затенения" участки, другие — только все 384 КБ целиком.
Adaptor ROM Shadow C800,16K
Опция для маскировки ПЗУ некоторых специальных карт, таких как сетевые карты и различные контроллеры. По умолчанию опция установлена в "Disabled". Включение этой опции ("Enabled") возможно только если в систему установлена карта расширения с ПЗУ, занимающим этот диапазон адресов. В своё время многие дисплейные видеоадаптеры использовали ПЗУ с адресом C800, и затенение этого адреса улучшало производительность системы.
Некоторые версии BIOS поддерживали включение теневого ОЗУ с снятой защитой от записи. Это позволяло использовать "теневую память" как область UMB, что обеспечивало некоторую ускоренную работу по сравнению с обычными UMB-областями, организованными с помощью драйвера EMM386.
Adaptor ROM Shadow CC00,16K
Эта область предназначалась для некоторых старых адаптеров жестких дисков.
Adaptor ROM Shadow D000,16K
Адресная область для использования сетевыми картами.
Adaptor ROM Shadow D400,16K
Некоторые старые контроллеры (в основном для четырёх флоппи-дисководов) имели отображаемое ПЗУ в диапазоне адресов D400...D7FF.
Adaptor ROM Shadow D800,16K
Эта область использовалась для загрузки драйверов SCSI-контроллеров.
Adaptor ROM Shadow E000,16K, E400,16K, E800,16K
Эти области могли быть использованы системой после копирования BIOS SCSI-контроллером. Некоторые SCSI-контроллеры использовали адреса ввода/вывода, которые не должны были быть затенены или кэшированы.
Аналогичные опции для затенения области памяти предложил "Phoenix BIOS" в меню под названием "Shadow Memory Regions".
Base Memory Address
Эта опция устанавливает начальный адрес диапазона памяти, выделяемого для потребностей PCI-карты. Адресация обеспечивается 32-разрядной шиной.
BIOS Devnode for Shadow RAM
Эта опция используется для карт расширения, чье ROM-память не требует коррекции основного региона памяти, который занимает эта карта. "Disabled" позволяет разблокировать фиксированный начальный адрес области памяти для устройства и изменять его динамически.
CD Hole
Необычная опция "AMI BIOS", предназначенная для управления адресным пространством в диапазоне DC000h - DFFFFh. Если установлено значение "Disabled", то запросы к данному региону направляются основному SCSI-контроллеру или сетевому устройству. Включение ("Enabled") контролирует доступ через стандартные PAM-регистры.
Каждый PAM-регистр контролирует два региона по 16 КБ, с возможностью установки атрибутов доступа (Read Enable и Write Enable), которые регулируют доступ к памяти или перенаправляют запросы на шину PCI.
PAM-регистр | Сегмент памяти | Назначение | Примечание |
PAM0[3:0] | Зарезервировано | ||
PAM0[7:4] | 0F0000h - 0FFFFFh | BIOS Area | Область системного BIOS. 64K-байтный сегмент, который может кэшироваться, читаться и перезаписываться. При блокировке этой области данная адресная зона "выпадает" из карты памяти |
PAM1[3:0] | 0C0000h - 0C3FFFh | ISA Add-on BIOS* | Expansion Area (C0000h-DFFFFh), или область расширения, - это 128К-байтная область, разделенная на восемь 16K-байтных сегментов. Каждый из сегментов может находиться в одном из четырех состояний: только для чтения, только для записи, чтения/записи или заблокированном. Каждый из сегментов может кэшироваться. При блокировке этой области данная адресная зона "выпадает" из карты памяти |
PAM1[7:4] | 0C4000h - 0C7FFFh | ISA Add-on BIOS* | |
PAM2[3:0] | 0C8000h - 0CBFFFh | ISA Add-on BIOS* | |
PAM2[7:4] | 0CC000h - 0CFFFFh | ISA Add-on BIOS* | |
PAM3[3:0] | 0D0000h - 0D3FFFh | ISA Add-on BIOS | |
PAM3[7:4] | 0D4000h - 0D7FFFh | ISA Add-on BIOS | |
PAM4[3:0] | 0D8000h - 0DBFFFh | ISA Add-on BIOS | |
PAM4[7:4] | 0DC000h - 0DFFFFh | ISA Add-on BIOS | |
PAM5[3:0] | 0E0000h - 0E3FFFh | BIOS Extension | Расширенная область системного BIOS (E0000h-EFFFFh) разделена на четыре 16К-байтных сегмента. Каждый сегмент независимо от других может кэшироваться, считываться и быть перезаписываемым. При блокировке этой области данная адресная зона "выпадает" из карты памяти |
PAM5[7:4] | 0E4000h - 0E7FFFh | BIOS Extension | |
PAM6[3:0] | 0E8000h - 0EBFFFh | BIOS Extension | |
PAM6[7:4] | 0EC000h - 0EFFFFh | BIOS Extension |
Примечание.
* - Сегмент C0000h - CFFFFh может быть использован SMM-пространством, если используется SMRAM-регистр (об SMM см. ниже).
E0000 ROM belongs to ATBUS
- один из примеров "стареньких" опций по выделению фрагмента из "верхней" памяти для использования системными устройствами. В данном случае "Yes" позволяло зарезервировать такой фрагмент за AT-шиной. Обычно, E000-область зарезервирована за кодом системного BIOS, но некоторые системы не использовали его стандартным образом. Например, "OS/2" использовала этот диапазон для работы в защищенном режиме и "грузила" код Advanced BIOS в область E000h-EFFFh.
E8000 32K Accessible
- аналогичная опция, хотя и не такая "древняя", поскольку предназначалась для использования (и опция, и адресная область) PS/2-системами, 32-разрядными ОС, под "PnP"-область.
Extended ROM RAM Area
- Наличие этой опции характерно для старых версий "AMI BIOS". Пользователю предоставлялся выбор, где хранить данные о жестком диске: в верхнем килобайте базовой системной памяти, начиная с 639-го килобайта, или в адресах нижней памяти в области DOS-памяти или системного BIOS (0:300). Необходимо было помнить, что вторая адресная область могла также использоваться некоторой периферией (звуковыми, сетевыми и т.п. картами расширения). В этом случае конфликтов можно было избежать, если система через BIOS могла использовать полноценные механизмы "затенения", которые, впрочем, могли и отсутствовать в очень старых системах. Вполне возможна была ситуация с изменением параметров жесткого диска в этой области памяти перед ее полным отображением, так как в ней содержался блок параметров фиксированного диска. В некоторых случаях могло потребоваться изучение документации на соответствующие платы расширения или контроллеры по использованию ими данной области памяти.Опция могла (или может) называться "RAM Area" или "Hard Disk Type 47 - RAM Area". Последняя опция напоминает нам о процедуре пользовательской установки параметров жесткого диска.
ISA LFB Size
- Опция "AMI-BIOS" для установки размера линейного буфера кадра (LFB - Linear Frame Buffer), во многом аналогичная или близкая по смыслу нижерасположенной "Memory Hole At 15M-16M". Кроме размещения ROM-адреса в пределах 15-16 МБ, опция позволяла установить размер линейного видеобуфера графических адаптеров в области основной памяти, доступной для ISA-шины (1, 2, 4 МБ). Это суть диапазоны 15-16, 14-16 и 12-16 МБ соответственно. Еще одним значением являлось "Disabled" с отказом от выделения под ISA-адаптер линейного буфера кадра. "Disabled" могло потребоваться при объеме памяти не более 8 МБ (в 96-м году это было почти пределом) и при работе с MS-DOS. Такое же значение необходимо было установить при использовании ISA-карт с отсутствующим кадровым буфером. Запрещение опции не позволяло использовать "Plug and Play's Configuration Manager" или "ISA Configuration Utility". Если же какое-то из значений ("1 MB", "2MB" или "4MB") было выбрано, то следующая опция "ISA LFB Base Address" становилась доступной.DOS-приложение могло использовать стандартно под видеопамять только 64 КБ основной памяти. В этом объеме не "поместится" и "хороший" графический файл. Совместно развивающиеся технологии памяти и работы с ней позволили создать механизм пейджинга, суть которого заключается в том, что можно отображать разные части видеопамяти на один и тот же видеосегмент (0a000h) поочередно. Но это переключение отнимает время у процессора, снижая эффективность метода. Идеальным вариантом стало использование линейного буфера кадра, который доступен только в защищенном режиме работы процессора, а значит, за пределами первого мегабайта, и с использованием расширения VBE (VESA BIOS Extension) не ниже версии 2.0.
Для графических PCI-карт с использованием линейного буфера кадра стало возможным применение возможностей чипсета (PCI Burst Mode).
Опция может называться "ISA VGA Frame Buffer Size" или "ISA Linear Frame Buffer". Дополнительная информация может быть почерпнута из упомянутой и приведенной ниже опции.
x ISA LFB Base Address
- Данная опция не имеет параметров и носит информационный характер. Показывает основной адрес LFB, если установлен размер в предыдущей функции. Адрес устанавливается автоматически.ISA Mem Block Base
ISA Mem Block Size
- Об этих опциях см. ниже.ISA Shared Memory Size
- (размер разделяемой памяти ISA). Опция позволяет выделить блок в "верхней" (upper) памяти, который обычно "затеняется" и который не будет в данном случае использован для дублирования (shadowing) содержимого ПЗУ в основную память, для доступа к ней ISA-карты. Через установку опции в "Disabled" (по умолчанию) мы отключаем возможность установки такого блока в системной памяти. Данную опцию необходимо включать только при установке в систему ISA-карты, которая использует верхние адреса памяти. Это означает, что в системе используются не "Plug and Play" ISA-карты (т.н. "legacy card"), конфигурируемые "вручную". Указывая размер требуемого блока, пользователь и "включает" опцию. Размер блока выбирается в пределах от 16 до 96 кБ с шагом в 16 кБ.Необходимо знать еще вот о чем! В системе могут быть использованы ISA-адаптеры, у которых память собственного микропроцессора является двухпортовой и организована так, что со стороны адаптера она имеет некоторые физические адреса, а по второму порту она адресуется со стороны IBM PC/AT как страница памяти компьютера, расположенная в области адресов (в зависимости от установки перемычек на плате), например: C800h, D000h, т.п. В этом случае задачи адресации решаются на уровне специального прикладного ПО и драйвера. Таких специальных плат расширения в свое время было разработано достаточно много для использования в системах реального времени под MS-DOS.
К вышесказанному еще несколько слов. Некоторые "настоящие" (legacy) платы ISA имеют встроенную память (ПЗУ), которая не видна без специального программного драйвера. Поскольку об этой памяти BIOS ничего не знает, BIOS может (по ошибке) приписать адреса этой памяти другим платам PCI или ISA. При использовании таких карт расширения требуется серьезное изучение документации.
x ISA Shared Memory Base Address
- (базовый адрес разделяемой памяти ISA). Опция доступна при включении предыдущей функции. При этом устанавливается начальный адрес "ISA Shared Memory". Опционально устанавливается C8000h, CC000h и т.д. Необходимо помнить, что при выборе начального адреса не должен быть использован E0000h-адрес. Если же в предыдущей опции выбран блок памяти размером в 64 кБ, то может быть использован в качестве начального адреса адрес D0000 или ниже.В других версиях BIOS могут встретиться другие наименования такой функции, точнее такой пары, - "ISA Mem Block Base" и "ISA Mem Block Size". В качестве значений для первой могут быть указаны адреса C800, CC00, D000, D400, D800 и DC00, а также значение "No/ICU" (нет/ICU), оставляющее управление этим параметром на усмотрение BIOS или программы ICU (ISA Configuration Utility). А размер блока выбирается из ряда: 8K, 16K, 32K, 64K. Необходимо также добавить, что при выборе самого размера блока надо ориентироваться на "потребности" конкретной карты, а также на количество таких "вредных" ISA-карт.
И еще одна интересная пара функций. Только "начальной" является опция "Used Mem Base Addr". Она как бы "охватывает" более широкий спектр устройств. Предполагается, что к некоторой области верхней памяти пожелают иметь доступ не только ISA-устройства. Для выбора предлагается, как и выше, любой сегмент памяти между C800H и DC00H адресного пространства (6 возможных адресов), а также по умолчанию - "N/A" (как "Disabled"). При включении опции активируется поле "Used Mem Length" для установки размера блока: 8, 16, 32 или 64 кБ.
Теперь "AMI BIOS"!
"Reserved Memory Size" и
x "Reserved Memory Address".
Параметры основной опции: "Disabled", "16K", "32K", "64K". Параметры же второй: C000, C400, C800, CC00, D000, D400, D800 или DC00.
Memory Hole At 15M-16M
- (буквально - "дырка" в памяти в диапазоне 15-16 МБ). При включенном состоянии параметра система, для повышения производительности, будет копировать более медленную память устройства, например, подключенного к ISA-шине, в более быструю основную память. Это происходит за счет выделения специальной области памяти и перемещения в нее данных ROM-памяти карты расширения или устройства сопряжения. Естественно, что действие этой функции представляет собой механизм "затенения", который позволяет обращаться, в данном случае к устройствам ввода/вывода, как к адресному пространству ОЗУ и за счет этого увеличить скорость доступа к таким устройствам. Для функционирования этого механизма необходимо исключить для всех обычных программ возможность использования указанной области памяти, что и делает BIOS при разрешении этого параметра. При отсутствии ISA-устройств данная опция должна быть отключена ("Disabled"). По умолчанию эта опция, как правило, включена.
Разрешать этот параметр следует в том случае, если это требуется в документации на используемую в системе плату расширения или устройство. Некоторые старые ISA-карты (например, ранние видеокарты высокого разрешения) требуют выделения для них специального адреса памяти, лежащего в определенном диапазоне. Это выделение запрещает доступ в старшие адреса памяти, расположенные выше 16 МБ. Это означает, что, независимо от объема инсталлированной в системе памяти, операционная система не сможет обращаться к этому адресному пространству. Поэтому включение данной опции должно быть оправдано. По сути, данная функция сохранена в "BIOS Setup" по причине совместимости со старыми картами. Необходимо помнить и о том, что когда мы говорим об ISA-картах, то должны подразумевать и функционирование DMA-каналов, которое достаточно жестко вписывается в ограничения ISA-шины.
Включение функции позволяет создать пропуск в динамической памяти, а точнее разрыв. Для адресов, попадающих в этот диапазон, циклы процессора и PCI будут игнорироваться чипсетом. Последствия для неподготовленного пользователя могут быть самыми непредсказуемыми. Возможна ситуация, когда такой режим может понадобиться и PCI-плате, если она нуждается в отдельном управлении адресами. Поэтому не должно удивлять присутствие такой опции и в системах, уже лишенных привычной ISA-шины.
Важно отметить, что выбранный диапазон "выпадает" и из объема кэшируемой памяти, и из возможности воздействия на него операционной системой, что связано с функционированием аппаратных компонентов. В старых версиях BIOS могут встретиться другое наименование такой функции - "Memory Hole", с параметрами: "None", "at 512 kB", "at 15 MB". Для значения "at 512 kB" используется часть базовой памяти в пределах 512-640 КБ.
Для более новых систем могут быть использованы такие варианты, как "Disabled", "512KB-640KB", "15MB-16MB". Эти значения также встречаются в опции "Fixed Memory Hole". Некоторые версии BIOS могут использовать "Memory Hole" с параметрами "Disabled", "Conventional" и "Extended", предназначенными для выделения адресного пространства под ISA-устройства.
"AMI BIOS" может содержать опцию под названием "Memory Hole at 15M Addr.", которая близка к исходной. Важно понимать, что выделение объема памяти под эту функцию было не только для переноса данных ROM-памяти какого-либо устройства, но и для формирования в системной памяти области, являющейся локальной памятью этого устройства или даже локальной памятью шины.
Также следует отметить, что в некоторых версиях BIOS можно встретить такие параметры, как "Disabled", "14M-16M", "15M-16M". Эти значения касаются функционала старых систем с AT-шиной, которые использовались для выделения памяти для ISA-карт.
Старые функции, такие как "Memory Hole Size", предлагали следующие значения: "1 Mb", "2 Mb", "4 Mb", "8 Mb", "Disabled". Эти параметры были предназначены для систем с AT-шиной и ISA-картами, а также для совместимости с ними. Опция "15-16M Memory Location" с параметрами "Local" (по умолчанию) и "Non-local" помогала определить местоположение памяти.
Вопрос привязки этих функций к 16 МБ связан с историей появления ISA-шины и её ограничениями. В середине 80-х годов, когда появилась 16-разрядная ISA-шина, добавление 4 дополнительных адресных линий расширяло адресное пространство до 16 МБ.
В "Phoenix BIOS" аналогичная опция называлась "ISA Memory Gap". В зависимости от версии BIOS, эта опция могла предложить выбор использования или неиспользования последнего мегабайта памяти как "ISA memory area", а также размеры памяти: "1 Mb", "2 Mb", "4 Mb", "8 Mb" и "Disabled".
В современных BIOS также можно встретить различные опции, такие как "Memory Hole Start Address" или "Memory Map Hole Start Address", которые позволяют устанавливать начальный адрес "дырки" в диапазоне от 1 до 15 МБ с шагом в 1 МБ. Эта опция становится доступной, если включена базовая опция "Memory Map Hole".
В старых системах, как в BIOS "AWARD", можно было включить ("Enabled") опцию "Allocate Memory Hole", а затем настроить "Hole Start Address" и "Hole Size", где размер "дырки" варьируется от 64 КБ до 8 МБ с шагом удвоения.
Интересным эффектом от использования "Memory Hole" была ситуация, когда эта опция помогала решить проблему нестабильной работы чипсетов VIA в системах с установленными звуковыми картами Creative SB Live! и Aureal, а также конфликтов со звуковыми картами типа Diamond MX300 и Soundblaster.
Memory Remapping
- (перераспределение памяти). Аналогичная опция может называться "Memory Relocation", что говорит о перераспределении памяти в системе. Включение опции ("Enabled") требовало отключения всех видов "затенения" в области адресов A0000 - FFFFF, в том числе "затенения" видео- и системного BIOS.
Memory Reservation
- так называется меню с "низкой" опцией ("C800 - CBFF" и т.д., см. выше), из возможных параметров которых ("Available" и "Reserved") следует, что выбранный 16К-байтный диапазон может быть соответственно либо доступен для использования некоторым устройством (например, "выделенной" памятью), либо зарезервирован для использования любым программным обеспечением. Нечто подобное предлагает "Phoenix BIOS" в меню "PCI/PNP ISA UMB Region Exclusion". Правда, т.н. "Upper Memory Blocks" не предназначены для использования стандартными ISA-картами (не Plug&Play-картами). А в остальном и диапазоны те же, и значения.
Shadowing Address Ranges (xxxxx-xxxxx Shadow)
- данная опция подобна вышепредставленным и позволяет разрешать ("Enabled") или запрещать ("Disabled") "затенение" указанного адресного диапазона для использования некоторой картой расширения. Запрещение допустимо, если такая карта не используется, или для такой карты в той же "Windows 9x" функционирует соответствующий драйвер. Стоит напомнить, что "Windows NT" не использует механизмов "затенения", и что некоторые карты, использующие диапазон CXXXh-EFFFh для операций ввода/вывода, могут не работать при включённом "затенении". В последнем случае запросы чтения/записи памяти могут не проходить, например, к той же ISA-шине.
System BIOS Shadow
- опция разрешения применения теневой памяти на область системной ROM BIOS. Рекомендуется установить в "Enabled" для повышения производительности системы, однако необходимо ещё раз подчеркнуть, что улучшения эффективности системы можно добиться только в "MS-DOS" или "Windows 3x". При этом старшие 384 КБ из первого мегабайта памяти станут недоступными в качестве ОЗУ.
Некоторые старые версии BIOS (речь идет об устаревших системах) давали возможность "затенения" отдельных областей из выделенных под системный BIOS 64 КБ. Это было достаточно удобно, так как такие адресные зоны - суть фрагменты по 16 КБ (шаг адресов в 400h). В современных системах такой возможности нет, прежде всего аппаратной. Поэтому при включении режима "затенения" системный BIOS затеняется целиком.
Опция может называться "System Shadow" или "System ROM Shadow F000, 64K". Когда-то такая функция называлась совсем просто - "BIOS Shadow".
VGA Type
- данные этой опции используются BIOS системы, когда затенение видео BIOS включено. Оказывается, важно и то (см. чуть ниже), о какой видеокарте (читай, шине) идет речь. Отсюда и возможные значения: "Standard" ("стандартное затенение" - по умолчанию), "PCI", "ISA/VESA".
Video BIOS Shadowing
При включении этой опции ("Enabled") BIOS видеокарты, как мы уже знаем, будет скопирован в оперативную память (по адресам C0000h-C7FFFh), что ускорит обращение к нему. Это достигается благодаря различной разрядности шин памяти и времени доступа к ячейкам памяти. Однако современные операционные системы обращаются к видеокартам напрямую, минуя их BIOS. Например, "Windows NT" вообще не использует затеняемую память.
А вот производительность графики в "старушке" MS-DOS сильно зависит от того, включена ли данная опция или нет. Если при включении теневой памяти не наблюдается ускорения работы графических функций, стоит проверить соответствие адресов ROM BIOS видеокарты и установленной затеняемой области. Если старые программы не используются, лучше отключить опцию, так как в случае обращения приложения к адресам, занятым Video BIOS, возможны сбои.
Опция может называться "Video ROM Shadow C000, 32K", "Video ROM BIOS Shadow", "Video ROM Shadow", "Video BIOS Shadow" или "Video Shadow".
Некоторые версии BIOS также предлагают "затенение" отдельных областей, и тогда вместо одной опции предлагается набор из, например, следующих:
- "Video ROM Shadow C000, 16K"
- "Video ROM Shadow C400, 16K"
Такой вариант с опциями появился из-за того, что видеокарта на своём "борту" могла иметь и 16K-байтный объём ROM-памяти. В этом случае затенялся только диапазон C400h. Современные видеокарты, предназначенные для работы в мощных программных средах, имеют значительно большие размеры Video BIOS, и только часть этого кода (32 КБ) может быть затенена. Это может привести к сбоям, так как обращение к Video BIOS будет происходить по адресам, принадлежащим физически разной памяти.
Ещё одно важное замечание: современные видеокарты хранят свой BIOS в микросхемах, допускающих перепрограммирование (Flash BIOS), что позволяет получить доступ к памяти на скоростях, сравнимых с доступом к ОЗУ. Скорость обращения к VGA BIOS также зависит от скорости шины (ISA, EISA или VLB). А что, если речь идёт о PCI или AGP? Тогда может выясниться, что необходимость затенять VGA BIOS отпадает, и появляется возможность освободить 384 КБ ОЗУ для других целей. Однако, к VGA BIOS всё равно часто обращаются, особенно в игровом ПО. В итоге решение зависит от каждого пользователя и конкретной ситуации.
Также важно помнить, что BIOS интегрированного видеоадаптера обычно располагается по адресам системного BIOS. Здесь стоит дополнительно упомянуть, что функционирование видеоканала в современной системе осуществляется через видеодрайвер с управлением графического процессора, а не с помощью набора команд от центрального процессора. В старых системах BIOS видеокарты обеспечивал набор функций, но в современных системах они игнорируются. Поэтому первичная роль Video BIOS сохраняется из-за обратной совместимости с VGA-интерфейсом.