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

В управлении памятью DOS расширенная память — это система переключения банков , которая предоставляла программам DOS дополнительную память сверх предела обычной памяти (640 КиБ).
Расширенная память — это общий термин для нескольких несовместимых вариантов технологий. Наиболее широко используемым вариантом была спецификация расширенной памяти ( EMS ), которая была разработана совместно Lotus Software , Intel и Microsoft , поэтому эту спецификацию иногда называли « LIM EMS ». LIM EMS имело несколько версий. Первой широко реализованной версией была EMS 3.2, которая поддерживала до 8 МБ расширенной памяти и использовала части адресного пространства, обычно предназначенного для связи с периферийными устройствами ( верхняя память ), для отображения частей расширенной памяти. EEMS , стандарт управления расширенной памятью, конкурирующий с LIM EMS 3.x, был разработан компаниями AST Research , Quadram и 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 .
Фон
[ редактировать ]
Процессор 8088 IBM PC и IBM PC/XT мог адресовать один мегабайт (МиБ или 2 20 байт) памяти. Он унаследовал это ограничение от 20-битной внешней адресной шины (и общей архитектуры адресации памяти) Intel 8086 . Разработчики ПК выделили нижние 640 КиБ ( 655 360 байт) адресного пространства для программной памяти (ОЗУ) для чтения и записи, называемой обычной памятью , а оставшиеся 384 КиБ пространства памяти были зарезервированы для таких целей, как системный BIOS . видеопамять и память на периферийных платах расширения.
Несмотря на то, что IBM PC AT , представленный в 1984 году, использовал чип 80286 , который мог адресовать до 16 МБ ОЗУ в качестве расширенной памяти , он мог делать это только в защищенном режиме . Нехватка программного обеспечения, совместимого с защищенным режимом (в нем не могли работать никакие стандартные приложения DOS ), означала, что рынок все еще был открыт для другого решения. [1]
Чтобы сделать больше памяти доступной, была разработана схема переключения банков , при которой в любой момент времени были доступны только выбранные части дополнительной памяти. Первоначально один 64 КиБ (2 16 окно памяти, называемое страничным фреймом байты) использовалось ; позже это стало более гибким. Программы нужно было писать особым образом, чтобы получить доступ к расширенной памяти. Окно между обычной памятью и расширенной памятью можно было настроить для доступа к различным областям расширенной памяти.
Первую попытку использовать технику переключения банков предприняла компания Tall Tree Systems со своими платами JRAM. [2] но они не прижились. [1] (Позже Tall Tree Systems выпустила платы на базе EMS, используя ту же марку JRAM.)
Спецификация расширенной памяти (EMS)
[ редактировать ]Lotus Development , Intel и Microsoft сотрудничали для разработки стандарта EMS (также известного как LIM EMS). Первая общедоступная версия EMS, версия 3.0, позволяла получить доступ до 4 МБ расширенной памяти. [ нужна ссылка ] В версии спецификации 3.2 этот размер был увеличен до 8 МБ. В финальной версии EMS, версии 4.0, максимальный объем расширяемой памяти увеличен до 32 МБ и поддерживается дополнительная функциональность.
Microsoft считала смену банка неэлегантной и временной, но необходимой временной мерой. Ударив кулаком по столу во время интервью, Билл Гейтс сказал о расширенной памяти: «Это чушь! Это кладж !… Но мы собираемся это сделать». Компании планировали представить стандарт на выставке COMDEX весной 1985 года , при этом многие компании, производящие карты расширения и программное обеспечение, заявили о своей поддержке. [3] [4]
Первая общедоступная версия стандарта EMS под названием EMS 3.0 была выпущена в 1985 году; Однако EMS 3.0 почти не имела аппаратных реализаций, прежде чем была заменена EMS 3.2. [1] EMS 3.2 использовала область размером 64 КиБ в верхних 384 КиБ ( верхняя область памяти ), разделенную на четыре страницы по 16 КиБ, которые можно было использовать для отображения частей расширенной памяти. [1]
В свою очередь, EMS 3.2 была усовершенствована группой из трех других компаний: AST Research, Quadram и Ashton-Tate, которые создали собственный стандарт Enhanced EMS (EEMS). EEMS позволяла отображать любую область размером 16 КиБ в младшей оперативной памяти в расширенную память, если она не была связана с прерываниями или выделенной памятью ввода-вывода, такой как сеть или видеокарты. Таким образом, целые программы можно было включать и вынимать из дополнительной оперативной памяти. В EEMS также добавлена поддержка двух наборов регистров сопоставления. Эти функции использовались ранними многозадачными программами DOS, такими как DESQview . Выпущенная в 1987 году спецификация LIM EMS 4.0 включала практически все функции EEMS. [1]
Новая функция, добавленная в LIM EMS 4.0, заключалась в том, что платы EMS могли иметь несколько наборов регистров сопоставления страниц (до 64 наборов). Это позволило реализовать примитивную форму многозадачности DOS . Однако предостережение заключалось в том, что стандарт не указывал, сколько наборов регистров должна иметь плата, поэтому в этом отношении между аппаратными реализациями существовали большие различия. [5]
Спецификация расширенной памяти (EMS) — это спецификация, описывающая использование расширенной памяти. Функции EMS доступны через программное прерывание 67h. Программы, использующие EMS, должны сначала установить наличие установленного диспетчера расширенной памяти (EMM), проверив наличие драйвера устройства с именем устройства EMMXXXX0 .
Адаптер расширенной памяти (XMA)
[ редактировать ]IBM разработала собственный стандарт памяти под названием Expanded Memory Adaptor (XMA); драйвером IBM DOS для него был XMAEM.SYS. В отличие от EMS, к платам расширения IBM можно обращаться как с использованием модели расширенной памяти, так и с использованием расширенной памяти . [6] Однако аппаратный интерфейс расширенной памяти, используемый платами XMA, несовместим с EMS. [7] но драйвер XMA2EMS.SYS обеспечивал эмуляцию EMS для плат XMA. [6] Платы XMA были впервые представлены для (обновленных) моделей 3270 PC 1986 года . [7]
Реализации
[ редактировать ]Платы расширения
[ редактировать ]
Эта вставка окна памяти в периферийное адресное пространство изначально могла быть осуществлена только с помощью специальных плат расширения, подключенных к шине расширения ISA компьютера. Известными платами расширенной памяти 1980-х годов были AST RAMpage, IBM PS/2 80286 Memory Expansion Option, AT&T Expanded Memory Adaptor и Intel Upper Board . Учитывая цену оперативной памяти в тот период, достигавшую нескольких сотен долларов за МиБ, а также качество и репутацию вышеупомянутых торговых марок, плата расширенной памяти стоила очень дорого.
Чипсеты материнских плат
[ редактировать ]Позже в некоторых материнских плат наборах микросхем компьютеров на базе Intel 80286 была реализована схема расширенной памяти, не требующая дополнительных плат, в частности, набор микросхем NEAT . Обычно программные переключатели определяют, какой объем памяти следует использовать в качестве расширенной памяти , а какой объем следует использовать в качестве расширенной памяти .
Драйверы устройств
[ редактировать ]Плата расширенной памяти, будучи аппаратным периферийным устройством, нуждалась в программном драйвере устройства , который экспортировал бы ее службы. Такой драйвер устройства назывался менеджером расширенной памяти . Его имя было переменным; ранее упомянутые платы использовали REMM.SYS (AST), PS2EMM.SYS (IBM), AEMM.SYS (AT&T) и EMM.SYS (Intel) соответственно. Позже выражение стало ассоциироваться с чисто программными решениями, требующими процессора Intel 80386 , например Quarterdeck компании QEMM , Qualitas ' 386. МАКС или EMM386 по умолчанию в MS-DOS, PC DOS и DR-DOS.
Программная эмуляция
[ редактировать ]Начиная с 1986 года, встроенные функции управления памятью процессора Intel 80386 свободно моделировали адресное пространство при запуске устаревшего программного обеспечения реального режима, что делало ненужными аппаратные решения. Расширенную память можно смоделировать программно.
Первой программой управления (эмуляцией) расширенной памяти была CEMM , доступная в сентябре 1986 года в виде утилиты для Compaq Deskpro 386 . Популярным и многофункциональным коммерческим решением стало QEMM компании Quarterdeck. Претендентом был Qualitas 386. МАКС . Функциональность позже была включена в MS-DOS 4.01 в 1989 году и в DR DOS 5.0 в 1990 году как EMM386 .
Программные менеджеры расширенной памяти в целом предлагали дополнительные, но тесно связанные функции. Примечательно, что они позволили использовать части верхней области памяти (UMA) (верхние 384 КБ адресного пространства реального режима), называемые блоками верхней памяти (UMB), и предоставили инструменты для загрузки небольших программ, обычно резидентных программ, которые завершаются и остаются. внутри («LOADHI» или «LOADHIGH»).
Взаимодействие между расширенной памятью , эмуляцией расширенной памяти и расширителями DOS в конечном итоге регулировалось спецификациями XMS, виртуального программного интерфейса управления (VCPI), интерфейса защищенного режима DOS (DPMI) и служб защищенного режима DOS (DPMS).
Некоторые программы эмуляции, в просторечии известные как LIMulators, вообще не полагались на материнскую плату или функции 80386. Вместо этого они зарезервировали 64 КБ базовой оперативной памяти для окна расширенной памяти, где они копировали данные в расширенную память или на жесткий диск и обратно, когда прикладные программы запрашивали переключение страниц. Программно это было легко реализовать, но производительность была низкой. Этот метод был предложен компанией «AboveDisk» компании «Above Software» и несколькими условно-бесплатными программами.
Также возможно эмулировать EMS, используя память XMS на 286 процессорах с помощью сторонних утилит, таких как EMM286 (драйвер .SYS).
Отклонить
[ редактировать ]Использование расширенной памяти снизилось в 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 9x , Windows NT , OS/2 и BSD/OS, поддерживали защищенный режим «из коробки». Эти и подобные разработки сделали концепцию расширенной памяти устаревшей.
Похожие концепции
[ редактировать ]Другие платформы реализовали ту же базовую концепцию — дополнительную память за пределами основного адресного пространства — но технически несовместимыми способами:
- Расширенное хранилище было функцией мэйнфреймов IBM, обеспечивающей дополнительную память помимо основной системной памяти, впервые представленной в серии мэйнфреймов высокого класса IBM 3090 в 1985 году. [8] Приложения не могли напрямую обращаться к расширенному хранилищу; функция MVS, известная как «оконные службы», позволяла приложениям выделять перемещаемые окна для расширенного хранилища в их собственном адресном пространстве. Также существовала функция «переноса данных», которую можно было использовать для перемещения данных между основной памятью (центральным хранилищем) и расширенным хранилищем; позже была введена «Средство асинхронного перемещения данных» (ADMF), которое позволяло приложениям запрашивать перемещение данных между ними в фоновом режиме, пока они выполняли другую обработку. К середине 1990-х годов расширенное хранилище перестало быть физически отдельной памятью и стало просто логическим разделением внутри системной памяти, обеспечиваемым прошивкой; но только в выпуске z/VM 6.4 в ноябре 2016 года IBM окончательно удалила всю поддержку расширенного хранилища из своих операционных систем для мэйнфреймов. [9]
- Расширения адресного окна (AWE) — это концептуально аналогичная функция в Microsoft Windows, используемая для предоставления 32-битным приложениям доступа к большему объему памяти, чем 2–4 ГБ, которые могут поместиться в 32-битном адресном пространстве. Хотя он по-прежнему поддерживается текущими версиями Windows, его использование было заменено 64-разрядными приложениями, которые могут напрямую обращаться к памяти более 4 ГБ.
- Виртуальная память создает иллюзию доступной памяти, используя, например, дисковое хранилище .
См. также
[ редактировать ]- Обычная память
- Управление памятью DOS
- Расширенная память (XMS)
- Область высокой памяти (HMA)
- Наложение (программирование)
- Верхняя область памяти (UMA)
- Глобальная спецификация импорта EMM (GEMMIS)
- сегментация памяти x86
- Расширения адресного окна (AWE)
- Расширение физического адреса (PAE)
Ссылки
[ редактировать ]- ^ Jump up to: а б с д и Мендельсон, Эдвард (12 декабря 1989 г.). «Слот, полный оперативной памяти» . Журнал ПК . Том. 8, нет. 21. Ziff Davis Publishing Co., стр. 169–. Архивировано из оригинала 08 февраля 2020 г. Проверено 8 февраля 2020 г.
- ^ «Техническое описание системы для высоких деревьев» (брошюра). Системы высоких деревьев. Октябрь 1983 года.
- ^ Махрон, Билл (14 мая 1985 г.). «Схема памяти нарушает 640К» . Журнал ПК . Том. 4, нет. 10. Зифф Дэвис Паблишинг Ко. с. 33 . Проверено 28 октября 2013 г.
- ^ «Самые запоминающиеся технические провалы» . Журнал ПК . Январь 2008 г., стр. 88–89 . Проверено 05 сентября 2020 г.
- ^ Рош, Винн Л. (12 декабря 1989 г.). «EMS 4.0: стандарт, которого не было» . Журнал ПК . Том. 8, нет. 21. Издательство Ziff Davis Publishing Co., стр. 174–175. Архивировано из оригинала 08 февраля 2020 г. Проверено 8 февраля 2020 г.
- ^ Jump up to: а б «Общее руководство по различным формам памяти» . Майкрософт . Архивировано из оригинала 22 октября 2012 г.
- ^ Jump up to: а б Уэлч, Марк Дж. (14 апреля 1986 г.). «Спрос на 3270 не будет расти» . Инфомир . Том. 8, нет. 15. InfoWorld Media Group, Inc. с. 5. ISSN 0199-6649 . Архивировано из оригинала 08 февраля 2020 г. Проверено 8 февраля 2020 г.
- ^ Сакаки, М.; Самукава, Х.; Хондзё, Н. (1988). «Эффективное использование большой виртуальной памяти IBM 3090 в интенсивных численных вычислениях ab initio молекулярных орбиталей» . IBM Systems Journal . 27 (4): 528–540. дои : 10.1147/sj.274.0528 . ISSN 0018-8670 .
- ^ «IBM: Настройка хранилища» . www.vm.ibm.com . Проверено 03 мая 2023 г.
Дальнейшее чтение
[ редактировать ]- «Спецификация расширенной памяти» . Версия 4.0. Лотус , Интел , Майкрософт . Октябрь 1987 г. 300275-005. Архивировано из оригинала 08 февраля 2020 г. Проверено 8 февраля 2020 г.
- Тишер, Майкл (1989). Системное программирование ПК для разработчиков . Счеты. ISBN 1-55755-036-0 .
- Борретт, Ллойд Роберт (январь – февраль 1989 г.). «Понимание EMS 4.0» . Технический рог изобилия . Архивировано из оригинала 08 февраля 2020 г. Проверено 8 февраля 2020 г.