Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[24]

4.2. "Затенение" памяти, выделенная память

"shadow memory" - это так называемая "теневая" память. В адресах памяти от 640 КБ до 1 МБ (a0000h - fffffh) находятся "окна", через которые "видно" содержимое различных системных ПЗУ. Например, адреса f0000h - fffffh занимает системное ПЗУ, содержащее bios системы, окно c0000h -c7fffh - ПЗУ видеоадаптера (видео-bios) и т.п. При включении режима "shadow" для каких-либо адресных диапазонов, соответствующих системным ПЗУ либо картам расширения, содержимое их ПЗУ копируется в участки основной памяти, которые затем подключаются к этим же адресам вместо ПЗУ, "затеняя" их.

Дает ли это какие-нибудь преимущества? Повышается ли при этом производительность системы? Включение "затенения" дает в первую очередь значительное ускорение работы с данными ПЗУ за счет более высокого быстродействия микросхем ОЗУ (в сравнении со временем доступа к ROM BIOS в 150-200 нс). Кроме того, при обращении к микросхемам BIOS непосредственно используется 8-разрядный доступ, что включение "затенения" ПЗУ делает еще более эффективным. Кроме этого, появляется возможность модифицировать видимое содержимое ПЗУ: все современные системные BIOS используют это для самонастройки, а в область видео-BIOS обычно загружаются экранные шрифты и т. п .

Что это за теневая память физически? Этот вопрос связан с распределением памяти вообще. В первом мегабайте памяти используются по прямому назначению, т. е. как основная память, 640 КБ, а остальные 384 КБ оказываются в адресном пространстве, зарезервированном для ПЗУ и внешних устройств. В современных платах вся память представляет

собой непрерывный массив, поэтому разрывать адресное пространство модулей памяти на две части нельзя и поэтому часть системной области приходится аппаратно исключать, теряя при этом 384 КБ.

Как скопировать в эту память содержимое ПЗУ? Для этого применяют несколько способов:

1)Организация "Shadow Memory". Доступ к ней регулирует чипсет. Как правило, "Shadow Memory" находится в адресном пространстве в том же месте, где и исходное ПЗУ. Поскольку две области памяти в одном месте физически находиться не могут, для управления этой памятью в чипсете есть специальная схема, которая может подключить в этот фрагмент адресного пространства либо исходное ПЗУ, либо ОЗУ.

2)Несколько слов о защите от записи. Обычно "Shadow Memory" в нормальном состоянии находится в режиме "Read Only" (только для чтения). Это породило проблемы, например, при написании русификаторов, так как приходится открывать "затененные" участки той же видеопамяти. Различные версии BIOS позволяют решать эту проблему, имея опции с возможностью указания, следует ли оставлять требуемый диапазон "Read Write" или "Read Only".

3)Но не только BIOS способен управлять Shadow-функциями чипсета. Такое управление может осуществлять программа, умеющая корректно обращаться к регистрам чипсета на низком уровне. Начиная с 386-х в защищенном режиме работы процессора имеется страничная организация памяти, обеспечивающая формирование физического (реального) адреса из виртуального адреса программы. Именно эта возможность и обеспечивает в большинстве распространенных драйверов памяти (менеджеров) не только выполнение функций затенения, но и получение памяти EMS при наличии расширенной памяти в компьютере.


Программно возможности "Shadow"-функций менеджеров памяти значительно более гибкие, чем у чипсета, управляемого BIOS. В частности, управление размерами памяти, выделяемой для "Shadow Memory", может производиться достаточно малыми по размеру страницами - 4 КБ, что позволяет эффективнее использовать адресное пространство первого мегабайта. В MS-DOS возможность управления "Shadow"-памятью имеет драйвер памяти HIMEM.SYS (ключ /SHADOWRAM:ONOFF).

4)Затенение полезно, главным образом, в 16-разрядных ОС. 32-разрядные системы не используют 16-разрядный код из ROM. Вместо него они загружают 32-разрядные драйверы в ОЗУ, заменяя ими 16-разрядный код BIOS, который, таким образом, используется только в процессе загрузки системы.

5)2) Организация блоков верхней памяти UMB (Upper memory blocks), по сути аналогия предыдущему варианту.

6)3) Перемещение (relocation). Это перенос неиспользуемой памяти из системной области (640 КБ - 1 МБ) в область расширенной (Extended) памяти. Чаще всего перемещаться может весь фрагмент сразу, то есть все 384 КБ. Это связано со сложностью схемы управления адресными линиями. В этом случае освободить остаток первого мегабайта можно, только выключив все без исключения установки "Shadow". В первых IBM PC устанавливалось 640 КБ основной памяти и отдельно расширенная память, поэтому со старшими 384 КБ проблем не возникало. Позднее, а это также было давно, некоторые чипсеты (Neat, OPTi495, SiS471, др.) имели возможность переносить старшие 384 КБ за пределы пеpвого мегабайта, пpисоединяя их к pасширенной памяти. Одни чипсеты могли пере-

носить свободные от "затенения" участки, другие -

только все 384 КБ целиком. Госледующая серия опций объединена одной темой ("Теневое ПЗУ адата XXXX,16K") и представляет собой, в основном, устаревшие аппаратные решения. Adaptor ROM Shadow C800,16K

опция для маскиpования ГЗУ некотоpых специальных каpт -сетевых, различных контpоллеpов и т.п. Го умолчанию устанавливается "Disabled". Установка в "Enabled" допустима только тогда, когда в систему инсталлирована каpта расширения с ГЗУ, занимающим эти адpеса. В свое время большинство дисплейных видеоадаптеров, таких как MDA, Hercules, использовали ГЗУ с адpесом C800. Поскольку эти были низкоскоростными, затенение этого адpеса улучшало общую пpоизводительность системы. Дополнительная и интересная информация! Некотоpые версии BIOS допускали включение теневого ОЗУ со снятой защитой от записи. помощи дpайвеpа возможно было использование "теневой памяти" в качестве области UMB. Это давало некотоpое пpеимущество в скоpости в сpавнении с UMB-областью, обеспечиваемой пpи помощи

EMM386.

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

Adaptor ROM Shadow CC00,16K

-эта область предназначалась для некоторых (естественно, старых) адаптеpов жестких дисков.

Adaptor ROM Shadow D000,16K

-адресная область для использования сетевыми картами.

Adaptor ROM Shadow D400,16K

-некоторые специальные контроллеры (это было давно) для четырех дисководов гибких дискет имеют отображаемый BIOS ROM в диапазоне адресов D400...D7FF.


Adaptor ROM Shadow D800,16K Adaptor ROM Shadow DC00,16K Adaptor ROM Shadow E000,16K

Adaptor ROM Shadow E400,16K

Adaptor ROM Shadow E800,16K Adaptor ROM Shadow EC00,16K

- эта область могла быть использована системой после копирования SCSI-контроллерами своего BIOS. Hекотоpые SCSI-контроллеры могли иметь несколько другие области "затенения" ОЗУ (в зависимости от их марки). Совершенно аналогично "работали" следующие опции: C8000-CBFFF Shadow

CC000-CFFFF Shadow D0000-D3FFF Shadow D4000-D7FFF Shadow D8000-DBFFF Shadow DC000-DFFFF Shadow

Совершенно те же опции предложил "Phoenix BIOS" в меню

под названием "Shadow Memory Regions".

И совершенно ясно, что возможны также другие вариации по

"затенению". Например, опция "E8000 - EFFFF Shadow"

может быть использована для поддержки интегрированного

SCSI-контроллера.

И еще одно важное замечание, не утратившее актуальности и по сей день. Речь идет о специализированных ISA-адаптерах с микропроцессорами, память которых организована как двухпортовая. Если память такого микропроцессора по одному из портов со стороны компьютера адресуется как страница в области указанных адресов, то "затенение" для этой области должно быть запрещено ("Disabled"). Обобщая сказанное, необходимо отметить, что затенение разделяемой ("shared") памяти недопустимо. Разделяемая память служит также в качестве буферов сетевых контроллеров, т. п.

Еще пример затенения адресных областей: C000,16K Shadow C400,16K Shadow C800,16K Shadow

CC00,16K Shadow

D000,16K Shadow D400,16K Shadow D800,16K Shadow

DC00,16K Shadow

Ничего нового, разве что первые две опции меню неявно предназначены для затенения видео-BIOS (см. подробно ниже).

Base Memory Address

-данной опцией устанавливается начальный адрес адресного диапазона, выделяемого под потребности некоторой PCI-карты.

BIOS Devnode for Shadow RAM

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

CD Hole

-столь необычная опция "AMI BIOS" предназначена для управления адресной областью в диапазоне DC000h -DFFFFh. Если установлено значение "Disabled", то любое обращение, запрос к данному пространству направляется основному SCSI-контроллеру (хотя это может быть и сетевое устройство). Если же выбрано "Enabled", доступ к этому региону памяти контролируется одним из PAM (Programmable Attribute Map) регистров, т.е. стандартным способом.



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63]