Расширенная память - Expanded memory

Банки нескольких страниц расширенной памяти переключаются в страничном фрейме , части верхней области памяти .

В управлении памятью DOS , расширенная память представляет собой система переключения банков , которые предоставили дополнительную память для DOS программ за предел обычной памяти (640 КБ).

Расширенная память - это общий термин для нескольких несовместимых вариантов технологий. Наиболее широко используемым вариантом была спецификация расширенной памяти ( EMS ), которая была разработана совместно Lotus Software , Intel и Microsoft , поэтому эту спецификацию иногда называли « LIM EMS ». У LIM EMS было несколько версий. Первой широко внедренной версией была EMS 3.2, которая поддерживала до 8 МБ расширенной памяти и использовала части адресного пространства, обычно предназначенные для связи с периферийными устройствами ( верхняя память ), для отображения частей расширенной памяти. EEMS , стандарт управления расширенной памятью, конкурирующий с LIM EMS 3.x, был разработан AST Research , Quadram and Ashton-Tate («AQA»); он может отображать любую область нижнего 1 МиБ. В конечном итоге EEMS была включена в LIM EMS 4.0, которая поддерживала до 32 Мбайт расширенной памяти, а также обеспечивала некоторую поддержку многозадачности DOS. Однако IBM создала свой собственный стандарт расширенной памяти под названием XMA .

Использование расширенной памяти стало обычным явлением в играх и бизнес-программах, таких как Lotus 1-2-3, в конце 1980-х - середине 1990-х годов, но его использование уменьшилось, поскольку пользователи переключились с DOS на операционные системы с защищенным режимом, такие как Linux , IBM. OS / 2 и Microsoft Windows .

Задний план

Часть нижнего адресного пространства размером 1 МиБ обеспечивает «окно» в несколько мегабайт расширенной памяти.

8088 процессор от IBM PC и IBM PC / XT можно было бы рассмотреть один мегабайт (MIB, или 2 20 байт) памяти. Он унаследовал этот предел от 20-разрядной шины внешнего адреса Intel 8086 . Конструкторы ПК выделили нижние 640  КиБ ( 655 360 байт) адресное пространства для памяти программы чтения-записи (RAM), называемых «обычная памятью», а остальные 384 Кбайт пространства памяти были зарезервирован для использования , таких как система BIOS , видеопамять, и память о расширении периферийных платах .

Несмотря на то, что IBM PC AT , представленный в 1984 году, использовал чип 80286 , который мог адресовать до 16 МБ ОЗУ в качестве расширенной памяти , он мог делать это только в защищенном режиме . Нехватка программного обеспечения, совместимого с защищенным режимом 286 ( в нем нельзя было запускать стандартные приложения DOS ), означало, что рынок все еще был открыт для другого решения.

Чтобы вместить потенциально гораздо больше памяти, чем позволяют 384 КиБ свободного адресного пространства, была разработана схема переключения банков , при которой в любой момент времени будут доступны только выбранные части дополнительной памяти. Первоначально было возможно единственное окно памяти размером 64 КБ (2 16 байтов), называемое страничным фреймом ; позже это было сделано более гибким. Программы должны были быть написаны особым образом для доступа к расширенной памяти. «Окно» между нижним и расширенным ОЗУ можно переместить в разные места внутри расширенного ОЗУ.

Первая попытка использовать технику переключения банков была предпринята Tall Tree Systems с их платами JRAM, но они не прижились. (Позднее компания Tall Tree Systems выпустила платы на базе EMS, используя ту же марку JRAM.)

Спецификация расширенной памяти (EMS)

Lotus Development , Intel и Microsoft совместно разработали стандарт EMS (также известный как LIM EMS). Первая общедоступная версия EMS, версия 3.0, позволяла получить до 4 МБ расширенной памяти. Это было увеличено до 8 МБ с версией спецификации 3.2. В последней версии EMS, версии 4.0, максимальный объем расширенной памяти увеличен до 32 МиБ и поддерживаются дополнительные функции.

Microsoft считала смену банка неэлегантной и временной, но необходимой временной мерой. Билл Гейтс, хлопнув кулаком по столу во время интервью, сказал о расширенной памяти: «Это мусор! Это кладж ! ... Но мы это сделаем». Компании планировали представить стандарт на выставке COMDEX весной 1985 года , и многие компании, выпускающие карты расширения и программное обеспечение, заявили о своей поддержке.

Первая общедоступная версия стандарта EMS, названная EMS 3.0, была выпущена в 1985 году; EMS 3.0, однако, почти не имел аппаратных реализаций, прежде чем был заменен EMS 3.2. В EMS 3.2 использовалась область размером 64 КиБ в верхних 384 КиБ (область верхней памяти ), разделенная на четыре страницы по 16 КиБ, которые можно было использовать для отображения частей расширенной памяти.

В свою очередь, EMS 3.2 была улучшена группой из трех других компаний: AST Research, Quadram и Ashton-Tate, которые создали свой собственный стандарт Enhanced EMS (EEMS). EEMS позволяла отображать любую область 16 КиБ в нижнем ОЗУ в расширенную память, если она не была связана с прерываниями или выделенной памятью ввода-вывода, такой как сеть или видеокарты. Таким образом, целые программы можно было включать и выключать из дополнительной оперативной памяти. EEMS также добавила поддержку двух наборов регистров отображения. Эти функции использовались ранним многозадачным программным обеспечением DOS, таким как DESQview . Выпущенная в 1987 году спецификация LIM EMS 4.0 включает практически все функции EEMS.

Новой функцией, добавленной в LIM EMS 4.0, было то, что платы EMS могли иметь несколько наборов регистров отображения страниц (до 64 наборов). Это позволило использовать примитивную форму многозадачности DOS . Предостережение, однако, заключалось в том, что в стандарте не указывается, сколько наборов регистров должна иметь плата, поэтому в этом отношении существовала большая разница между аппаратными реализациями.

Спецификация расширенной памяти (EMS) - это спецификация, описывающая использование расширенной памяти. Функции EMS доступны через программное прерывание 67h. Программы, использующие EMS, должны сначала установить наличие установленного диспетчера расширенной памяти (EMM), проверив драйвер устройства с именем EMMXXXX0 .

Адаптер расширенной памяти (XMA)

IBM разработала собственный стандарт памяти под названием Expanded Memory Adapter (XMA); драйвером IBM DOS для этого был XMAEM.SYS. В отличие от EMS, к платам расширения IBM можно было обращаться как с использованием модели расширенной памяти, так и в качестве расширенной памяти . Однако аппаратный интерфейс расширенной памяти, используемый платами XMA, несовместим с EMS, но драйвер XMA2EMS.SYS обеспечивает эмуляцию EMS для плат XMA. Платы XMA были впервые представлены в моделях ПК 3270 (модернизированных) 1986 года .

Реализации

Платы расширения

Плата памяти Emulex Persyst 4 MiB ISA

Эта вставка окна памяти в периферийное адресное пространство изначально могла быть выполнена только с помощью специальных плат расширения, подключенных к шине расширения ISA компьютера. Известными платами с расширенной памятью 1980-х были AST RAMpage, IBM PS / 2 80286 Memory Expansion Option, AT&T Expanded Memory Adapter и Intel Above Board . Учитывая цену на оперативную память в тот период, до нескольких сотен долларов за мегабайт, а также качество и репутацию вышеуказанных торговых марок, плата с расширенной памятью была очень дорогой.

Чипсеты материнских плат

Позже некоторые наборы микросхем материнских плат компьютеров на базе Intel 80286 реализовали схему расширенной памяти, которая не требовала дополнительных плат, особенно набор микросхем NEAT . Обычно программные переключатели определяют, какой объем памяти следует использовать как расширенную, а какой - как расширенную .

Драйверы устройств

Плата с расширенной памятью, будучи аппаратным периферийным устройством, нуждалась в программном драйвере устройства , который экспортировал свои услуги. Такой драйвер устройства получил название диспетчера расширенной памяти . Его имя было переменным; ранее упомянутые платы использовали REMM.SYS (AST), PS2EMM.SYS (IBM), AEMM.SYS (AT&T) и EMM.SYS (Intel) соответственно. Позже, выражение стало ассоциироваться с программным обеспечением только решения , требующие Intel 80386 процессор, например Quarterdeck 's QEMM , QUALITAS ' 386 MAX или по умолчанию EMM386 в MS-DOS, PC DOS и DR-DOS.

Программная эмуляция

Начиная с 1986 года, встроенные функции управления памятью процессора Intel 80386 свободно моделировали адресное пространство при запуске устаревшего программного обеспечения реального режима, делая ненужные аппаратные решения. Расширенная память может быть смоделирована с помощью программного обеспечения.

Первое программное обеспечение расширили-память управления программой (эмуляция) была CEMM , в сентябре 1986 года в качестве утилиты для Compaq DESKPRO 386 . Популярным и хорошо оснащенным коммерческим решением была QEMM от Quarterdeck. Претендентом был Qualitas 386 MAX . Функциональность была позже включена в MS-DOS 4.01 в 1989 году и в DR DOS 5.0 в 1990 году как EMM386 .

Программные менеджеры расширенной памяти в целом предлагали дополнительные, но тесно связанные функции. Примечательно, что они позволили использовать части области верхней памяти (UMA) (верхние 384 КиБ адресного пространства реального режима), называемые блоками верхней памяти (UMB), и предоставили инструменты для загрузки небольших программ, обычно TSR внутри («LOADHI» или « ВЫСОКАЯ НАГРУЗКА ").

Взаимодействие между расширенной памятью , эмуляцией расширенной памяти и расширителями DOS в конечном итоге регулировалось спецификациями XMS, Virtual Control Program Interface (VCPI), DOS Protected Mode Interface (DPMI) и DOS Protected Mode Services (DPMS).

Некоторые программы эмуляции, в просторечии известные как LIMulators, вообще не полагались на материнскую плату или функции 80386. Вместо этого они зарезервировали 64 КиБ базового ОЗУ для окна расширенной памяти, куда они копировали данные либо в расширенную память, либо на жесткий диск и из них, когда прикладные программы запрашивали переключение страниц. Это было легко реализовать программно, но производительность была низкой. Этот метод был предложен AboveDisk от Above Software и несколькими условно-бесплатными программами.

Отклонить

Использование расширенной памяти снизилось в 1990-х годах. IBM AT Intel 80286 поддерживал 24 бита адресного пространства (16 МиБ) в защищенном режиме , а 386 поддерживали 32-битные адреса или 4  гигабайта (2 32 ) ОЗУ - в 4096 раз больше адресного пространства исходного 8086. Сам DOS напрямую не поддерживал защищенный режим, но со временем Microsoft разработала DPMI , и на его основе было опубликовано несколько расширителей DOS . Программы DOS, такие как Doom, могут использовать расширители, такие как DOS / 4G, для работы в защищенном режиме, по-прежнему используя DOS API . В начале 1990-х новые операционные системы, такие как Linux , Windows NT , OS / 2 и BSD / OS , «из коробки» поддерживали защищенный режим. Эти и подобные разработки сделали расширенную память устаревшей концепцией.

Смотрите также

Рекомендации

дальнейшее чтение