ФЭНДОМ


Область верхней памяти (HMA, High Memory Area) — область оперативной памяти объёмом 65520 байтов (64 Кбайта без 16 байт), расположенная по адресам 0010_0000 — 0010_FFEF, т.е. сразу свыше 1 Мбайта. Её нередко именуют верхней памятью, что может создать путаницу, поскольку перекликается с английским термином Upper Memory, имеющим другой смысл.

Из всей оперативной памяти ПК именно HMA была выделена в особую область из-за ошибки, допущенной инженерами Intel при разработке микропроцессора 80286. Суть её заключается в следующем.

Как известно, в реальном режиме физический адрес памяти формируется путём суммирования сдвинутого влево на 4 бита содержимого одного из сегментных регистров процессора с 16-разрядным смещением по следующей схеме (SSSS означает содержимое сегментного регистра, xxxx — смещение, а AAAAA — физический адрес, по которому производится обращение к памяти):


  SSSS0
+
  0xxxx
  -----
  AAAAA

Сложности возникают, если сегментный регистр содержит очень большую величину. Например, посмотрим, как формируется физический адрес для сегмента FFFFh и смещения 0010h:

  FFFF0
+
  00010
  -----
 100000

Как видим, для представления результата сложения необходим 21 бит, однако в микропроцессорах 8086/8088 и 80186 шина адреса имела ширину 20 бит. В этом случае «лишний» бит просто отбрасывался: для указанных значений сегмента и смещения обращение произойдёт по физическому адресу 0.

Ошибка же в 80286 заключалась в том, что этот микропроцессор не отбрасывал «лишний» бит, даже если работал в реальном режиме, когда он теоретически должен быть полностью совместим с более ранними процессорами. В результате появилась возможность обращаться из реального режима к той самой области физической памяти, которая получила название HMA.

«Ошибочной» возможностью воспользовалась фирма Microsoft, обеспечившая размещение части MS DOS в HMA, что существенно (практически на 10%) увеличило объём ОЗУ, доступный для прикладных программ. Поэтому в целях совместимости ошибку в последующих процессорах исправлять не стали. Однако некоторые программы могли из-за этого работать некорректно (случалось ли такое на практике, доподлинно неизвестно). Чтобы обеспечить возможность работы таких программ, но не исключать возможность обращения к HMA, в ПК добавили специальную схему, которая принудительно обнуляет 20-й разряд шины адреса. Эта схема получила название Gate A20 (вентиль или шлюз линии A20). Понятно, что при запрещённой линии A20 нельзя использовать память свыше 1 Мбайта, поскольку адреса, выходящие за эту границу, могут быть неправильными.

В BIOS Setup старых компьютеров был предусмотрен специальный пункт, позволявший с помощью этого вентиля разрешить или запретить линию A20; кроме того, состояние вентиля можно менять программно уже после загрузки ОС. В современных компьютерах управление вентилем A20 через BIOS Setup не предусмотрено: линия A20 всегда разрешена. Физически вентиль A20 в современных компьютерах может и отсутствовать, поскольку реальной необходимости в нём уже давным-давно нет. Тем не менее, для гарантированного обеспечения работоспособности программ, рассчитанных на использование памяти свыше 1 Мбайта, следует всегда включать вентиль A20.

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.