La memoria máxima de acceso aleatorio (RAM) instalada en cualquier sistema informático está limitada por hardware, software y factores económicos. El hardware puede tener un número limitado de bits de bus de direcciones , limitado por el paquete del procesador o el diseño del sistema. Es posible que parte del espacio de direcciones se comparta entre la RAM, los periféricos y la memoria de solo lectura. En el caso de un microcontrolador sin RAM externa, el tamaño de la matriz de RAM está limitado por el tamaño de la matriz del circuito integrado. En un sistema empaquetado, solo se puede proporcionar suficiente RAM para las funciones requeridas del sistema, sin posibilidad de agregar memoria después de la fabricación.
Es posible que existan limitaciones de software para la RAM física utilizable. Un sistema operativo solo puede estar diseñado para asignar una cierta cantidad de memoria, con los bits de dirección superiores reservados para indicar designaciones como E / S o modo supervisor u otra información de seguridad. O el sistema operativo puede depender de estructuras de datos internas con límites fijos para la memoria direccionable.
En el caso de las computadoras personales del mercado masivo, es posible que un fabricante no obtenga ninguna ventaja financiera al proporcionar más sockets de memoria, líneas de direcciones u otro hardware de lo necesario para ejecutar el software del mercado masivo. Cuando los dispositivos de memoria eran relativamente caros en comparación con el procesador, a menudo la RAM suministrada con el sistema era mucho menor que la capacidad de dirección del hardware, debido al costo.
A veces, los límites de RAM se pueden superar mediante técnicas especiales. El cambio de banco permite que los bloques de memoria RAM se cambien al espacio de direcciones del procesador cuando sea necesario, bajo el control del programa. Los sistemas operativos administran rutinariamente programas en ejecución utilizando memoria virtual , donde los programas individuales operan como si tuvieran acceso a un gran espacio de memoria que se está simulando intercambiando áreas de memoria con almacenamiento en disco.
Límites de direccionamiento de la CPU
Por motivos de rendimiento, todas las líneas de direcciones paralelas de un bus de direcciones deben ser válidas al mismo tiempo; de lo contrario, el acceso a la memoria se retrasaría y el rendimiento se reduciría seriamente. Los paquetes de circuitos integrados pueden tener un límite en la cantidad de pines disponibles para proporcionar el bus de memoria . Se pueden diseñar diferentes versiones de una arquitectura de CPU, en paquetes de IC de diferentes tamaños, intercambiando un tamaño de paquete reducido por un número reducido de pines y espacio de direcciones. Se puede hacer una compensación entre los pines de dirección y otras funciones, restringiendo la memoria disponible físicamente para una arquitectura incluso si tiene inherentemente una mayor capacidad. Por otro lado, los diseños de conmutación de banco o segmentados proporcionan más espacio de direcciones de memoria que el que está disponible en un registro de direcciones de memoria interna.
A medida que la memoria de circuito integrado se volvió menos costosa, fue factible diseñar sistemas con espacios de memoria física cada vez más grandes.
Menos de 16 pines de dirección
Los dispositivos de microcontrolador con E / S integradas y memoria en chip a veces no tenían un bus de direcciones pequeño o no tenían disponible para dispositivos externos. Por ejemplo, una familia de microcontroladores disponible con un espacio de direcciones de 2 kilobytes podría tener una variante que produjera un bus de direcciones de 11 líneas para una ROM externa; esto se puede hacer reasignando los pines de E / S como pines del bus de direcciones. Algunos procesadores de uso general con ROM integrada dividen un espacio de direcciones de 16 bits entre la ROM interna y un bus de memoria externo de 15 bits.
Algunas de las primeras computadoras también tenían CPU con menos de 16 pines de dirección: MOS Technology 6507 (una versión de número reducido de pines del 6502) se usó en el Atari 2600 y se limitó a un bus de direcciones de 13 líneas.
16 bits de dirección, 16 pines de dirección
La mayoría de los microprocesadores de uso general de 8 bits tienen espacios de direcciones de 16 bits y generan 16 líneas de direcciones. Los ejemplos incluyen Intel 8080 , Intel 8085 , Zilog Z80 , Motorola 6800 , Microchip PIC18 y muchos otros. Estos procesadores tienen CPU de 8 bits con datos de 8 bits y direccionamiento de 16 bits. La memoria de estas CPU es direccionable a nivel de bytes. Esto conduce a un límite direccionable de memoria de 2 16 × 1 byte = 65,536 bytes o 64 kilobytes.
16 bits de dirección, 20 pines de dirección: 8086, 8088, 80186 y 80188
El Intel 8086 y sus derivados, como el 8088 , 80186 y 80188 forman la base de la popular plataforma x86 y son el primer nivel de la arquitectura IA16. Se trataba de CPU de 16 bits con direccionamiento de 20 bits. La memoria de estas CPU era direccionable a nivel de bytes. Estos procesadores podrían direccionar 2 20 bytes (1 megabyte).
Direcciones de 16 bits, 24 pines de dirección: 80286
La CPU Intel 80286 utilizó un esquema de direccionamiento de 24 bits. Cada ubicación de memoria era direccionable por bytes. Esto da como resultado un espacio direccionable total de 2 24 × 1 byte = 16.777.216 bytes o 16 megabytes. El 286 y posteriores también podrían funcionar en modo real , lo que impuso los límites de direccionamiento del procesador 8086. El 286 tenía soporte para memoria virtual.
Direcciones de 32 bits, 24 pines de dirección
El Intel 80386SX era una versión económica del 386DX. Tenía un esquema de direccionamiento de 24 bits, en contraste con 32 bits en el 386DX. Al igual que el 286, el 386SX solo puede direccionar hasta 16 megabytes de memoria.
El Motorola 68000 tenía un espacio de direcciones de 24 bits, lo que le permitía acceder a hasta 16 megabytes de memoria.
Direcciones de 32 bits, 32 pines de dirección
El 386DX tenía direccionamiento de 32 bits, lo que le permitía direccionar hasta 4 gigabytes (4096 megabytes) de memoria.
El Motorola 68020 , lanzado en 1984, tenía un espacio de direcciones de 32 bits, lo que le otorgaba un límite máximo de memoria direccionable de 4 GB. Todos los chips siguientes de la serie Motorola 68000 heredaron este límite.
Direcciones de 32 bits, 36 pines de dirección: Pentium Pro (también conocido como P6)
El Pentium Pro y todos los Pentium 4 tienen direccionamiento de 36 bits, lo que resultó en un espacio direccionable total de 64 gigabytes, pero requiere que el sistema operativo admita la Extensión de dirección física .
Computación de 64 bits
Los procesadores modernos de 64 bits, como los diseños de ARM, Intel o AMD, generalmente se limitan a admitir menos de 64 bits para direcciones de RAM. Por lo general, implementan de 40 a 52 bits de direcciones físicas [1] [2] [3] [4] (soportando desde 1 TB a 4 PB de RAM). Al igual que las arquitecturas anteriores descritas aquí, algunas de ellas están diseñadas para admitir límites más altos de direccionamiento de RAM a medida que mejora la tecnología. Tanto en Intel64 como en AMD64, el límite de direcciones físicas de 52 bits se define en las especificaciones de arquitectura (4 PB).
Límites de RAM del sistema operativo
Límite de direccionamiento CP / M y 8080
El primer sistema operativo principal para microordenadores era CP / M . Este sistema operativo era compatible con microcomputadoras similares a Altair 8800 , fabricadas por Gary Kildall junto con el lenguaje de programación PL / M , y la empresa Digital Research de Kildall lo autorizó a los fabricantes de computadoras después de que fue rechazado por Intel . El Intel 8080 utilizado por estas computadoras era un procesador de 8 bits , con espacio de direcciones de 16 bits , lo que le permitía acceder hasta 64 KB de memoria; Los ejecutables .COM utilizados con CP / M tienen un tamaño máximo de 64 KB debido a esto, al igual que los utilizados por los sistemas operativos DOS para microprocesadores de 16 bits.
Límite de direccionamiento de IBM PC y 8088
En el IBM PC original, el límite de RAM básico es de 640 KB. Esto es para permitir espacio de direccionamiento de hardware en los 384 KB superiores ( área de memoria superior (UMA)) del espacio de memoria direccionable total de 1024 KB (1 MB). Las formas de superar la barrera de 640k , como llegó a conocerse, implicaban el uso de modos de direccionamiento especiales disponibles en los procesadores 286 y posteriores x86. El espacio de direcciones total de 1 MB fue el resultado del límite de espacio de direcciones de 20 bits impuesto a la CPU 8088.
Usando el espacio de búfer de video en color, algunas utilidades de terceros podrían agregar memoria en la parte superior del área de memoria convencional de 640k , para extender la memoria hasta la dirección base utilizada por los adaptadores de hardware. En última instancia, esto podría rellenar la RAM hasta la dirección base de MDA.
Las extensiones de hardware permitieron el acceso a más memoria de la que la CPU 8086 podía abordar a través de la memoria de paginación. Esta memoria se conoció como memoria expandida . El consorcio LIM, compuesto por Lotus, Intel y Microsoft, desarrolló un estándar industrial de facto . Este estándar fue la Especificación de memoria expandida (EMS). Se podía acceder a las páginas de memoria del hardware de memoria expandida a través de una ventana de direccionamiento colocada en un área libre en el espacio UMA y al intercambiarla por otras páginas cuando era necesario para acceder a otra memoria. EMS admitía 16 MB de espacio.
Utilizando una peculiaridad en la arquitectura de la CPU 286, se pudo acceder al área de memoria alta (HMA), ya que los primeros 64 KB por encima del límite de 1 MB de direccionamiento de 20 bits en la arquitectura x86.
Utilizando las capacidades de direccionamiento de memoria de 24 bits de la arquitectura de la CPU 286, se pudo acceder a un espacio total de direcciones de 16 MB. La memoria por encima del límite de 1 MB se denomina memoria extendida . Sin embargo, el área entre 640 KB y 1 MB se reservó para el direccionamiento de hardware en compatibles con IBM PC. DOS y otros programas de modo real, limitados a direcciones de 20 bits, solo podían acceder a este espacio a través de la emulación EMS en la memoria extendida, o un análogo EMS para memoria extendida. Microsoft desarrolló un estándar conocido como Extended Memory Specification (XMS). Acceder a la memoria por encima del HMA requería el uso del modo protegido de la CPU 286.
Con el desarrollo de la arquitectura de la CPU i386, el espacio de direcciones se trasladó a direccionamiento de 32 bits y un límite de 4 GB. Con esta CPU, el acceso a áreas de memoria de 16 MB estaba disponible para programas de DOS que usaban extensores de DOS , como DOS / 4GW, MiniGW / 16, MiniGW y otros. Inicialmente se desarrolló un estándar de memoria industrial de facto para la interacción conocido como VCPI . Más tarde, un estándar de Microsoft suplantó esto, conocido como DPMI . Estos estándares permitieron el acceso directo al espacio de 16 MB, en lugar del esquema de paginación utilizado por EMS y XMS.
Límite de RAM OS / 2 de 16 bits
OS / 2 de 16 bits estaba limitado a 15 MB, debido al espacio de reserva diseñado en el sistema operativo. Reservó el 1 MB superior del espacio de direcciones de 24 bits de 16 MB para no memoria (de 16 MB a 15 MB).
Límite de RAM x86 de 32 bits
En los modos no PAE de procesadores x86 de 32 bits , la RAM utilizable puede estar limitada a menos de 4 GB. Los límites de memoria y espacio de direcciones varían según la plataforma y el sistema operativo. Los límites de la memoria física para las plataformas de 32 bits también dependen de la presencia y el uso de la Extensión de dirección física (PAE), que permite que los sistemas de 32 bits usen más de 4 GB de memoria física.
Los sistemas PAE y de 64 bits pueden abordar hasta el espacio de direcciones completo del procesador x86.
Ver también
- Gestión de memoria DOS
- tarjeta madre
Referencias
- ^ "Volumen 2 del manual del programador de AMD64: Programación del sistema" (PDF) . Micro dispositivos avanzados. Diciembre de 2016. p. 120.
- ^ "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32 Volumen 3A: Guía de programación del sistema, parte 1" (PDF) . Intel. Septiembre de 2016. p. 4-2.
- ^ "Manual de referencia de arquitectura ARM ARMv8, para perfil de arquitectura ARMv8-A" . págs. D4-1723, D4-1724, D4-1731.
- ^ http://infocenter.arm.com/help/topic/com.arm.doc.den0001c/DEN0001C_principles_of_arm_memory_maps.pdf
enlaces externos
- Artículo de MSDN: Límites de memoria para versiones de Windows
- La memoria del sistema que se informa en el cuadro de diálogo Información del sistema en Windows Vista es menor de lo esperado si se instalan 4 GB de RAM : explica el problema
- Windows Vista SP1 incluye informes de la memoria del sistema instalada (RAM) : detalles sobre el límite de RAM