stringtranslate.com

Límite de RAM

La memoria de acceso aleatorio (RAM) máxima instalada en cualquier sistema informático está limitada por factores económicos, de hardware y de software. El hardware puede tener una cantidad limitada de bits de bus de direcciones , limitada por el paquete del procesador o el diseño del sistema. Parte del espacio de direcciones puede compartirse 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 la RAM suficiente para las funciones requeridas del sistema, sin posibilidad de agregar memoria después de la fabricación.

Es posible que existan limitaciones de software en cuanto a la memoria RAM física utilizable. Es posible que un sistema operativo esté diseñado únicamente para asignar una cierta cantidad de memoria, con bits de dirección superiores reservados para indicar designaciones como E/S o modo supervisor u otra información de seguridad. O bien, el sistema operativo puede depender de estructuras de datos internas con límites fijos para la memoria direccionable.

En el caso de los ordenadores personales destinados al mercado de masas, puede que no haya ninguna ventaja financiera para un fabricante en proporcionar más ranuras de memoria, líneas de dirección u otro hardware que el necesario para ejecutar el software destinado al mercado de masas. Cuando los dispositivos de memoria eran relativamente caros en comparación con el procesador, a menudo la RAM que se entregaba con el sistema era mucho menor que la capacidad de dirección del hardware, debido al coste.

A veces, los límites de la memoria RAM se pueden superar mediante técnicas especiales. La conmutación de bancos permite que bloques de memoria RAM se conmuten al espacio de direcciones del procesador cuando sea necesario, bajo el control del programa. Los sistemas operativos administran rutinariamente los programas en ejecución mediante memoria virtual , donde cada programa funciona como si tuviera acceso a un gran espacio de memoria que se simula intercambiando áreas de memoria con almacenamiento en disco.

Límites de direccionamiento de la CPU

Por razones de rendimiento, todas las líneas de dirección 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 CI de diferentes tamaños, compensando el tamaño reducido del paquete por una cantidad reducida de pines y espacio de direcciones. Se puede llegar a un compromiso entre los pines de dirección y otras funciones, restringiendo la memoria físicamente disponible para una arquitectura incluso si inherentemente tiene una mayor capacidad. Por otro lado, los diseños segmentados o de conmutación de bancos proporcionan más espacio de direcciones de memoria que el disponible en un registro de direcciones de memoria interna.

A medida que la memoria de circuitos integrados se hizo menos costosa, fue posible diseñar sistemas con espacios de memoria física cada vez más grandes.

Menos de 16 pines de dirección

Los dispositivos de microcontroladores con E/S integradas y memoria en chip a veces no tenían un bus de direcciones disponible para dispositivos externos o tenían uno pequeño. Por ejemplo, una familia de microcontroladores disponible con un espacio de direcciones de 2 kilobytes podía tener una variante que ofreciera un bus de direcciones de 11 líneas para una ROM externa; esto se podía hacer reasignando pines de E/S como pines de bus de direcciones. Algunos procesadores de propósito general con ROM integrada dividían un espacio de direcciones de 16 bits entre la ROM interna y un bus de memoria externo de 15 bits.

Algunos microprocesadores tenían menos de 16 pines de dirección: por ejemplo, el MOS Technology 6507 (una versión con menos pines del 6502) se utilizó en el Atari 2600 y estaba limitado 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 propósito general de 8 bits tienen espacios de direcciones de 16 bits y generan 16 líneas de dirección. Algunos ejemplos son el 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 byte. Esto lleva a un límite de memoria direccionable 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 , el 80186 y el 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 byte. Estos procesadores podían direccionar 220 bytes (1 megabyte).

Direcciones de 16 bits, 24 pines de dirección: 80286

La CPU Intel 80286 utilizaba 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 224 × 1 byte = 16.777.216 bytes o 16 megabytes. El 286 y posteriores también podían funcionar en modo real , lo que imponía 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 los 32 bits del 386DX. Al igual que el 286, el 386SX puede direccionar solo hasta 16 megabytes de memoria.

El Motorola 68000 tenía un espacio de direcciones de 24 bits, lo que le permitía acceder 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 posteriores 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 da como resultado 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, suelen estar limitados a admitir menos de 64 bits para direcciones de RAM. Por lo general, implementan de 40 a 52 bits de dirección física [1] [2] [3] [4] (lo que permite admitir de 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 dirección física de 52 bits se define en las especificaciones de la arquitectura (4 PB).

Límites de RAM del sistema operativo

Límite de direccionamiento CP/M y 8080

El primer sistema operativo importante para microcomputadoras fue CP/M . Este sistema operativo era compatible con microcomputadoras tipo Altair 8800 , fabricadas por Gary Kildall junto con el lenguaje de programación PL/M , y fue licenciado a los fabricantes de computadoras por la compañía de Kildall, Digital Research , después de que Intel lo rechazara . El Intel 8080 utilizado por estas computadoras era un procesador de 8 bits , con un espacio de direcciones de 16 bits , lo que le permitía acceder hasta a 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 la IBM PC original, el límite básico de RAM 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 los 640k , como llegó a conocerse, implicaban el uso de modos de direccionamiento especiales disponibles en los procesadores 286 y posteriores x86. El espacio de dirección total de 1 MB era el resultado del límite de espacio de dirección de 20 bits impuesto a la CPU 8088.

Al utilizar el espacio del 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. Esto podría, en última instancia, 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 conocía como memoria expandida . El consorcio LIM, compuesto por Lotus, Intel y Microsoft, desarrolló un estándar de facto de la industria. Este estándar fue la Especificación de memoria expandida (EMS). Las páginas de memoria del hardware de memoria expandida eran accesibles a través de una ventana de direccionamiento ubicada en un área libre en el espacio UMA y mediante el intercambio de esta por otras páginas cuando era necesario acceder a otra memoria. EMS admitía 16 MB de espacio.

Gracias a una peculiaridad de la arquitectura de la CPU 286, se pudo acceder al área de memoria alta (HMA), como los primeros 64 KB por encima del límite de 1 MB de direccionamiento de 20 bits en la arquitectura x86.

Gracias a las capacidades de direccionamiento de memoria de 24 bits de la arquitectura de la CPU 286, se podía acceder a un espacio de direcciones total de 16 MB. La memoria por encima del límite de 1 MB se denominaba memoria extendida . Sin embargo, el área entre 640 KB y 1 MB estaba reservada para el direccionamiento de hardware en los IBM PC compatibles. 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 la memoria extendida. Microsoft desarrolló un estándar conocido como la Especificación de memoria extendida (XMS). El acceso a la memoria por encima de la 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 un 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 DOS que utilizaban extensores 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 lo suplantó, 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 de OS/2 de 16 bits

El sistema operativo OS/2 de 16 bits estaba limitado a 15 MB debido a un espacio de reserva diseñado en el sistema operativo. Reservaba el primer MB del espacio de direcciones de 24 bits de 16 MB para elementos que no fueran de memoria (de 16 MB a 15 MB).

Límite de RAM x86 de 32 bits

En los modos que no son PAE de los procesadores x86 de 32 bits , la memoria 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 memoria física para 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 utilicen más de 4 GB de memoria física.

Los sistemas PAE y de 64 bits pueden abordar todo el espacio de direcciones del procesador x86.

Véase también

Referencias

  1. ^ "Manual del programador AMD64, volumen 2: Programación del sistema" (PDF) . Advanced Micro Devices. Diciembre de 2016. pág. 120.
  2. ^ "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ág. 4-2.
  3. ^ "Manual de referencia de arquitectura ARM ARMv8, para el perfil de arquitectura ARMv8-A". págs. D4-1723, D4-1724, D4-1731.
  4. ^ https://developer.arm.com/documentation/den0001/c/ Principios de los mapas de memoria ARM

Enlaces externos