Memoria expandida

Sistema de conmutación de bancos en la gestión de memoria DOS

Varias páginas de memoria expandida se conmutan entre bancos en el marco de página , parte del área de memoria superior .

En la gestión de memoria DOS , la memoria expandida es un sistema de conmutación de bancos que proporciona memoria adicional a los programas DOS más allá del límite de la memoria convencional (640 KiB).

Memoria expandida es un término genérico para varias variantes de tecnología incompatibles. La variante más utilizada fue la Especificación de memoria expandida ( EMS ), que fue desarrollada conjuntamente por Lotus Software , Intel y Microsoft , por lo que a esta especificación a veces se la denominaba " LIM EMS ". LIM EMS tenía tres versiones: 3.0, 3.2 y 4.0. La primera versión ampliamente implementada fue EMS 3.2, que admitía hasta 8 MiB de memoria expandida y usaba partes del espacio de direcciones normalmente dedicado a la comunicación con periféricos ( memoria superior ) para mapear porciones de la memoria expandida. EEMS , un estándar de administración de memoria expandida que competía con LIM EMS 3.x, fue desarrollado por AST Research , Quadram y Ashton-Tate ("AQA"); podía mapear cualquier área del 1 MiB inferior. EEMS finalmente se incorporó en LIM EMS 4.0, que admitía hasta 32 MiB de memoria expandida y también brindaba cierto soporte para la multitarea DOS. Sin embargo, IBM creó su propio estándar de memoria expandida llamado XMA .

El uso de memoria expandida se volvió común en juegos y programas comerciales como Lotus 1-2-3 a fines de la década de 1980 y mediados de la década de 1990, pero su uso disminuyó a medida que los usuarios cambiaron de DOS a sistemas operativos de modo protegido como Linux , IBM OS/2 y Microsoft Windows .

Fondo

Una sección del espacio de dirección inferior de 1 MiB proporciona una "ventana" hacia varios megabytes de memoria expandida.

El procesador 8088 de IBM PC e IBM PC/XT podía direccionar un megabyte (MiB, o 220 bytes ) de memoria. Heredó este límite del bus de direcciones externo de 20 bits (y la arquitectura general de direccionamiento de memoria) del Intel 8086. Los diseñadores del PC asignaron los 640 KiB inferiores  (655 360 bytes) de espacio de direcciones para la memoria de programa de lectura y escritura (RAM), llamada memoria convencional , y los 384 KiB restantes de espacio de memoria se reservaron para usos tales como el BIOS del sistema , la memoria de video y la memoria en las placas periféricas de expansión.

Aunque el IBM PC AT , presentado en 1984, utilizaba el chip 80286 que podía direccionar hasta 16 MiB de RAM como memoria extendida , sólo podía hacerlo en modo protegido . La escasez de software compatible con el modo protegido (no se podían ejecutar aplicaciones DOS estándar en él) significaba que el mercado todavía estaba abierto para otra solución. [1]

Para que hubiera más memoria accesible, se diseñó un esquema de conmutación de bancos , en el que solo se podía acceder a partes seleccionadas de la memoria adicional en un momento dado. Originalmente, se utilizaba una única ventana de memoria de 64 KiB ( 216 bytes), llamada marco de página ; más tarde, esto se hizo más flexible. Los programas debían escribirse de una manera específica para acceder a la memoria expandida. La ventana entre la memoria convencional y la memoria expandida podía ajustarse para acceder a diferentes ubicaciones dentro de la memoria expandida.

Un primer intento de utilizar una técnica de conmutación de bancos fue realizado por Tall Tree Systems con sus placas JRAM, [2] pero no tuvo éxito. [1] (Posteriormente, Tall Tree Systems fabricó placas basadas en EMS utilizando la misma marca JRAM).

Especificación de memoria expandida (EMS)

Lotus Development , Intel y Microsoft colaboraron para desarrollar el estándar EMS (también conocido como LIM EMS). La primera versión de EMS disponible públicamente, la versión 3.0, permitía el acceso a hasta 4 MiB de memoria expandida. [ cita requerida ] Esto se aumentó a 8 MiB con la versión 3.2 de la especificación. La versión final de EMS, la versión 4.0, aumentó la cantidad máxima de memoria expandida a 32 MiB y admitió funcionalidad adicional.

Microsoft pensó que el cambio de banco era una medida provisional, poco elegante y temporal, pero necesaria. Bill Gates, dando un puñetazo sobre la mesa durante una entrevista, dijo sobre la memoria expandida: "¡Es basura! ¡Es una chapuza ! ... Pero lo vamos a hacer". Las empresas planeaban lanzar el estándar en la COMDEX de la primavera de 1985 , y muchas empresas de tarjetas de expansión y software anunciaron su apoyo. [3] [4]

La primera versión pública del estándar EMS, llamada EMS 3.0, se lanzó en 1985; sin embargo, EMS 3.0 casi no tuvo implementaciones de hardware antes de ser reemplazado por EMS 3.2. [1] EMS 3.2 utilizó una región de 64 KiB en los 384 KiB superiores ( área de memoria superior ) dividida en cuatro páginas de 16 KiB, que podrían usarse para mapear porciones de la memoria expandida. [1]

A su vez, EMS 3.2 fue mejorado por un grupo de otras tres empresas: AST Research, Quadram y Ashton-Tate, que crearon su propio estándar Enhanced EMS (EEMS). EEMS permitía que cualquier región de 16 KiB en la RAM inferior se asignara a la memoria expandida, siempre que no estuviera asociada con interrupciones o memoria de E/S dedicada, como tarjetas de red o de vídeo. De este modo, se podían conmutar programas completos dentro y fuera de la RAM adicional. EEMS también añadió soporte para dos conjuntos de registros de asignación. Estas características fueron utilizadas por el primer software multitarea de DOS, como DESQview . Lanzada en 1987, la especificación LIM EMS 4.0 incorporó prácticamente todas las características de EEMS. [1]

Una característica nueva añadida en LIM EMS 4.0 fue que las placas EMS podían tener múltiples conjuntos de registros de mapeo de páginas (hasta 64 conjuntos). Esto permitió una forma primitiva de multitarea DOS . Sin embargo, la salvedad era que el estándar no especificaba cuántos conjuntos de registros debería tener una placa, por lo que había una gran variabilidad entre las implementaciones de hardware a este respecto. [5]

La especificación de memoria expandida (EMS) es la especificación que describe el uso de la memoria expandida. Las funciones de EMS son accesibles a través de la interrupción de software 67h. Los programas que utilizan EMS deben primero establecer la presencia de un administrador de memoria expandida (EMM) instalado verificando si hay un controlador de dispositivo con el nombre de dispositivo EMMXXXX0 .

Adaptador de memoria expandida (XMA)

IBM desarrolló su propio estándar de memoria llamado Adaptador de Memoria Expandida (XMA); el controlador IBM DOS para ello era XMAEM.SYS. A diferencia de EMS, las placas de expansión IBM podían ser direccionadas tanto utilizando un modelo de memoria expandida como como memoria extendida . [6] Sin embargo, la interfaz de hardware de memoria expandida utilizada por las placas XMA es incompatible con EMS, [7] pero un controlador XMA2EMS.SYS proporcionaba emulación EMS para las placas XMA. [6] Las placas XMA se introdujeron por primera vez para los modelos de 1986 (renovados) del PC 3270. [7]

Implementaciones

Placas de expansión

Tarjeta de memoria ISA Emulex Persyst de 4 MiB

Esta inserción de una ventana de memoria en el espacio de direcciones periféricas se podía lograr originalmente sólo a través de placas de expansión específicas, conectadas al bus de expansión ISA del ordenador. Las placas de memoria expandida más famosas de la década de 1980 fueron AST RAMpage, IBM PS/2 80286 Memory Expansion Option, AT&T Expanded Memory Adapter y la Intel Above Board. Teniendo en cuenta el precio de la RAM durante ese período, hasta varios cientos de dólares por MiB, y la calidad y reputación de las marcas mencionadas anteriormente, una placa de memoria expandida era muy cara.

Conjuntos de chips de la placa base

Más tarde, algunos chipsets de placa base de ordenadores basados ​​en Intel 80286 implementaron un esquema de memoria expandida que no requería placas adicionales, en particular el chipset NEAT . Normalmente, los conmutadores de software determinaban cuánta memoria se debía utilizar como memoria expandida y cuánta como memoria extendida .

Controladores de dispositivos

Una placa de memoria expandida, al ser un periférico de hardware, necesitaba un controlador de dispositivo de software , que exportaba sus servicios. Dicho controlador de dispositivo se denominaba administrador de memoria expandida . Su nombre era variable; las placas mencionadas anteriormente utilizaban REMM.SYS (AST), PS2EMM.SYS (IBM), AEMM.SYS (AT&T) y EMM.SYS (Intel) respectivamente. Más tarde, la expresión se asoció a soluciones solo de software que requerían el procesador Intel 80386 , por ejemplo QEMM de Quarterdeck , 386 MAX de Qualitas o el EMM386 predeterminado en MS-DOS, PC DOS y DR-DOS.

Emulación de software

A partir de 1986, las funciones de gestión de memoria integradas del procesador Intel 80386 modelaron libremente el espacio de direcciones al ejecutar software de modo real heredado, lo que hizo innecesarias las soluciones de hardware. La memoria expandida se podía simular en el software.

El primer programa de gestión de memoria expandida (emulación) fue CEMM , disponible en septiembre de 1986 como una utilidad para el Compaq Deskpro 386. Una solución comercial popular y con buenas características fue QEMM de Quarterdeck. Un competidor fue 386 MAX de Qualitas . La funcionalidad se incorporó más tarde a MS-DOS 4.01 en 1989 y a DR DOS 5.0 en 1990, como EMM386 .

Los administradores de memoria expandida por software en general ofrecían funciones adicionales, pero estrechamente relacionadas. En particular, permitían utilizar partes del área de memoria superior (UMA) (los 384 KiB superiores del espacio de direcciones en modo real) llamadas bloques de memoria superior (UMB) y proporcionaban herramientas para cargar programas pequeños, generalmente programas residentes en el interior que se terminan y permanecen ("LOADHI" o "LOADHIGH").

La interacción entre la memoria extendida , la emulación de memoria expandida y los extensores DOS terminó siendo regulada por las especificaciones XMS, Virtual Control Program Interface (VCPI), DOS Protected Mode Interface (DPMI) y DOS Protected Mode Services (DPMS).

Ciertos programas de emulación, conocidos coloquialmente como LIMulators, no dependían en absoluto de las características de la placa base o del 80386. En su lugar, reservaban 64 KiB de la RAM base para la ventana de memoria expandida, donde copiaban datos hacia y desde la memoria extendida o el disco duro cuando los programas de aplicación solicitaban cambios de página. Esto era fácil de implementar mediante programación, pero el rendimiento era bajo. Esta técnica la ofrecían AboveDisk de Above Software y varios programas shareware .

También es posible emular EMS utilizando memoria XMS en CPU 286 utilizando utilidades de terceros como EMM286 (controlador .SYS).

Rechazar

El uso de la memoria expandida disminuyó en la década de 1990. El IBM AT Intel 80286 admitía 24 bits de espacio de direcciones (16 MiB) en modo protegido , y el 386 admitía direcciones de 32 bits, o 4  gigabytes (2 32 ) de RAM, 4096 veces el espacio direccionable del 8086 original. El propio DOS no admitía directamente el modo protegido, pero Microsoft desarrolló finalmente DPMI y se publicaron varios extensores de DOS basados ​​en él. Los programas de DOS como Doom podían usar extensores como DOS/4G para ejecutarse en modo protegido mientras seguían usando la API de DOS . A principios de la década de 1990, nuevos sistemas operativos como Linux , Windows 9x , Windows NT , OS/2 y BSD/OS admitían el modo protegido "listo para usar". Estos y otros desarrollos similares hicieron que la memoria expandida fuera un concepto obsoleto.

Conceptos similares

Otras plataformas han implementado el mismo concepto básico (memoria adicional fuera del espacio de direcciones principal), pero de formas técnicamente incompatibles:

  • El almacenamiento expandido era una característica de los mainframes de IBM que proporcionaba memoria adicional fuera de la memoria principal del sistema, introducida por primera vez con la serie de mainframes de gama alta IBM 3090 en 1985. [8] Las aplicaciones no podían abordar directamente el almacenamiento expandido; una característica de MVS conocida como "servicios de ventana" permitía a las aplicaciones asignar ventanas movibles al almacenamiento expandido dentro de su propio espacio de direcciones. También había una característica de "mover datos" que se podía invocar para mover datos entre la memoria principal (almacenamiento central) y el almacenamiento expandido; más tarde, se introdujo una "Instalación de Mover Datos Asíncronos" (ADMF), que permitía a las aplicaciones solicitar que se movieran datos entre los dos en segundo plano, mientras realizaban otros procesos. A mediados de la década de 1990, el almacenamiento expandido había dejado de ser una memoria físicamente separada y se había convertido simplemente en una división lógica dentro de la memoria del sistema impuesta por el firmware; pero no fue hasta el lanzamiento de z/VM 6.4 en noviembre de 2016 que IBM finalmente eliminó todo el soporte para el almacenamiento expandido de sus sistemas operativos de mainframe. [9]
  • Las extensiones de ventanas de dirección (AWE) son una característica conceptualmente similar en Microsoft Windows, que se utiliza para permitir que las aplicaciones de 32 bits accedan a más memoria que los 2 a 4 GB que caben en un espacio de direcciones de 32 bits. Aunque todavía es compatible con las versiones actuales de Windows, su uso ha sido reemplazado por aplicaciones de 64 bits, que pueden acceder directamente a más de 4 GB de memoria.
  • La memoria virtual crea la ilusión de memoria disponible utilizando, por ejemplo, almacenamiento en disco .

Véase también

Referencias

  1. ^ abcde Mendelson, Edward (12 de diciembre de 1989). "Una ranura llena de RAM". PC Magazine . Vol. 8, núm. 21. Ziff Davis Publishing Co. pp. 169–. Archivado desde el original el 8 de febrero de 2020. Consultado el 8 de febrero de 2020 .
  2. ^ "Hoja de datos del producto Tall Tree Systems" (folleto). Tall Tree Systems. Octubre de 1983.
  3. ^ Machrone, Bill (14 de mayo de 1985). "Memory Scheme Breaks 640K" (El esquema de memoria supera los 640 K). PC Magazine . Vol. 4, núm. 10. Ziff Davis Publishing Co. pág. 33. Consultado el 28 de octubre de 2013 .
  4. ^ "Los fracasos tecnológicos más memorables". PC Magazine . Enero de 2008. págs. 88-89 . Consultado el 5 de septiembre de 2020 .
  5. ^ Rosch, Winn L. (12 de diciembre de 1989). "EMS 4.0: el estándar que no existía". PC Magazine . Vol. 8, núm. 21. Ziff Davis Publishing Co. págs. 174–175. Archivado desde el original el 8 de febrero de 2020. Consultado el 8 de febrero de 2020 .
  6. ^ ab "Un tutorial general sobre las distintas formas de memoria". Microsoft . Archivado desde el original el 22 de octubre de 2012.
  7. ^ ab Welch, Marc J. (1986-04-14). "3270 Demand Not Expected To Rise". InfoWorld . Vol. 8, no. 15. InfoWorld Media Group, Inc. p. 5. ISSN  0199-6649. Archivado desde el original el 2020-02-08 . Consultado el 2020-02-08 .
  8. ^ Sakaki, M.; Samukawa, H.; Honjou, N. (1988). "Utilización eficaz del gran almacenamiento virtual IBM 3090 en los cálculos numéricamente intensivos de orbitales moleculares ab initio". IBM Systems Journal . 27 (4): 528–540. doi :10.1147/sj.274.0528. ISSN  0018-8670.
  9. ^ "IBM: Configuración del almacenamiento". www.vm.ibm.com . 2006-08-29 . Consultado el 2023-05-03 .

Lectura adicional

  • "Especificación de memoria expandida". Versión 4.0. Lotus , Intel , Microsoft . Octubre de 1987. 300275-005. Archivado desde el original el 8 de febrero de 2020. Consultado el 8 de febrero de 2020 .
  • Tischer, Michael (1989). Programación de sistemas de PC para desarrolladores . Ábaco. ISBN 1-55755-036-0.
  • Borrett, Lloyd Robert (enero-febrero de 1989). «Understanding EMS 4.0». Cornucopia técnica . Archivado desde el original el 8 de febrero de 2020. Consultado el 8 de febrero de 2020 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Memoria_expandida&oldid=1247844533"