Memoria del ordenador - Computer memory

Módulo DDR4 SDRAM moderno , que generalmente se encuentra en computadoras de escritorio.

En informática , la memoria es un dispositivo o sistema que se utiliza para almacenar información para su uso inmediato en una computadora o hardware informático relacionado y dispositivos electrónicos digitales . El término memoria es a menudo sinónimo del término almacenamiento primario o memoria principal . Un sinónimo arcaico de memoria es almacenamiento .

La memoria de la computadora funciona a alta velocidad en comparación con el almacenamiento que es más lento pero ofrece mayores capacidades. Si es necesario, el contenido de la memoria de la computadora se puede transferir al almacenamiento; una forma común de hacer esto es a través de una técnica de administración de memoria llamada memoria virtual .

La memoria moderna se implementa como memoria semiconductora , donde los datos se almacenan dentro de celdas de memoria construidas a partir de transistores MOS y otros componentes en un circuito integrado . Hay dos tipos principales de memoria semiconductora, volátil y no volátil . Ejemplos de memoria no volátil son la memoria flash y la memoria ROM , PROM , EPROM y EEPROM . Ejemplos de memoria volátil son la memoria dinámica de acceso aleatorio (DRAM) que se usa para el almacenamiento primario y la memoria estática de acceso aleatorio (SRAM) que se usa para la memoria caché de la CPU .

La mayor parte de la memoria de semiconductores está organizada en celdas de memoria, cada una de las cuales almacena un bit (0 o 1). La organización de la memoria flash incluye tanto un bit por celda de memoria como una celda de varios niveles capaz de almacenar varios bits por celda. Las celdas de memoria se agrupan en palabras de longitud de palabra fija , por ejemplo, 1, 2, 4, 8, 16, 32, 64 o 128 bits. Se puede acceder a cada palabra mediante una dirección binaria de N bits, lo que permite almacenar 2 N palabras en la memoria.

Historia

Detalle de la parte posterior de una sección de ENIAC , mostrando tubos de vacío .
Tarjeta microSDHC de 8 GB sobre 8 bytes de memoria de núcleo magnético (1 núcleo es 1 bit ).     

A principios de la década de 1940, la tecnología de la memoria a menudo permitía una capacidad de unos pocos bytes. La primera computadora digital programable electrónica , ENIAC , que utiliza miles de tubos de vacío , podía realizar cálculos simples con 20 números de diez dígitos decimales almacenados en los tubos de vacío.

El siguiente avance significativo en la memoria de computadora llegó con la memoria de línea de retardo acústico , desarrollada por J. Presper Eckert a principios de la década de 1940. A través de la construcción de un tubo de vidrio lleno de mercurio y taponado en cada extremo con un cristal de cuarzo, las líneas de retardo podrían almacenar bits de información en forma de ondas sonoras que se propagan a través del mercurio, con los cristales de cuarzo actuando como transductores para leer y escribir bits. . La memoria de línea de retardo se limitó a una capacidad de hasta unos pocos miles de bits.

Dos alternativas a la línea de retardo, el tubo de Williams y el tubo de Selectron , se originaron en 1946, ambas utilizando haces de electrones en tubos de vidrio como medio de almacenamiento. Utilizando tubos de rayos catódicos , Fred Williams inventó el tubo de Williams, que fue la primera memoria de computadora de acceso aleatorio . El tubo Williams pudo almacenar más información que el tubo Selectron (el Selectron estaba limitado a 256 bits, mientras que el tubo Williams podía almacenar miles) y era menos costoso. Sin embargo, el tubo de Williams era frustrantemente sensible a las perturbaciones ambientales.

Los esfuerzos comenzaron a fines de la década de 1940 para encontrar una memoria no volátil . La memoria de núcleo magnético permitió recuperar la memoria después de una pérdida de energía. Fue desarrollado por Frederick W. Viehe y An Wang a finales de la década de 1940, y mejorado por Jay Forrester y Jan A. Rajchman a principios de la década de 1950, antes de comercializarse con la computadora Whirlwind en 1953. La memoria de núcleo magnético era la forma dominante de memoria hasta el desarrollo de la memoria semiconductora MOS en la década de 1960.

La primera memoria de semiconductores se implementó como un circuito flip-flop a principios de la década de 1960 utilizando transistores bipolares . La memoria de semiconductores hecha de dispositivos discretos fue enviada por primera vez por Texas Instruments a la Fuerza Aérea de los Estados Unidos en 1961. El mismo año, el ingeniero de aplicaciones Bob Norman en Fairchild Semiconductor propuso el concepto de memoria de estado sólido en un chip de circuito integrado (IC). . El primer chip IC de memoria semiconductora bipolar fue el SP95 introducido por IBM en 1965. Si bien la memoria semiconductora ofrecía un rendimiento mejorado sobre la memoria de núcleo magnético, sigue siendo más grande y más cara y no desplazó la memoria de núcleo magnético hasta finales de la década de 1960.

Memoria MOS

La invención del MOSFET (transistor de efecto de campo de semiconductor de óxido metálico o transistor MOS), por Mohamed M. Atalla y Dawon Kahng en Bell Labs en 1959, permitió el uso práctico de transistores de semiconductor de óxido metálico (MOS) como elementos de almacenamiento de la celda de memoria. La memoria MOS fue desarrollada por John Schmidt en Fairchild Semiconductor en 1964. Además de un mayor rendimiento, la memoria semiconductora MOS era más barata y consumía menos energía que la memoria de núcleo magnético. En 1965, J. Wood y R. Ball del Royal Radar Establishment propusieron sistemas de almacenamiento digital que utilizan celdas de memoria CMOS (MOS complementarias), además de dispositivos de alimentación MOSFET para la fuente de alimentación , acoplamiento cruzado conmutado , interruptores y almacenamiento de línea de retardo. . El desarrollo de la tecnología de circuito integrado MOS de puerta de silicio (MOS IC) por Federico Faggin en Fairchild en 1968 permitió la producción de chips de memoria MOS . La memoria NMOS fue comercializada por IBM a principios de la década de 1970. La memoria MOS superó a la memoria de núcleo magnético como la tecnología de memoria dominante a principios de la década de 1970.

Los dos tipos principales de memoria volátil de acceso aleatorio (RAM) son la memoria estática de acceso aleatorio (SRAM) y la memoria dinámica de acceso aleatorio (DRAM). La SRAM bipolar fue inventada por Robert Norman en Fairchild Semiconductor en 1963, seguida por el desarrollo de MOS SRAM por John Schmidt en Fairchild en 1964. La SRAM se convirtió en una alternativa a la memoria de núcleo magnético, pero requirió seis transistores MOS para cada bit de datos. El uso comercial de SRAM comenzó en 1965, cuando IBM presentó su chip SP95 SRAM para el System / 360 Model 95 .

Toshiba introdujo celdas de memoria DRAM bipolar para su calculadora electrónica Toscal BC-1411 en 1965. Si bien ofrecía un rendimiento mejorado sobre la memoria de núcleo magnético, la DRAM bipolar no podía competir con el precio más bajo de la memoria de núcleo magnético entonces dominante. La tecnología MOS es la base de la DRAM moderna. En 1966, el Dr. Robert H. Dennard del IBM Thomas J. Watson Research Center estaba trabajando en la memoria MOS. Mientras examinaba las características de la tecnología MOS, descubrió que era capaz de construir condensadores , y que almacenar una carga o ninguna carga en el condensador MOS podría representar el 1 y el 0 de un bit, mientras que el transistor MOS podría controlar la escritura de la carga en el condensador. Esto lo llevó al desarrollo de una celda de memoria DRAM de un solo transistor. En 1967, Dennard presentó una patente bajo IBM para una celda de memoria DRAM de un solo transistor, basada en tecnología MOS. Esto condujo al primer chip IC DRAM comercial, el Intel 1103 , en octubre de 1970. La memoria dinámica sincrónica de acceso aleatorio (SDRAM) debutó más tarde con el chip Samsung KM48SL2000 en 1992.

El término memoria también se usa a menudo para referirse a la memoria no volátil , específicamente a la memoria flash . Tiene su origen en la memoria de solo lectura (ROM). La memoria programable de solo lectura (PROM) fue inventada por Wen Tsing Chow en 1956, mientras trabajaba para la División Arma de la American Bosch Arma Corporation. En 1967, Dawon Kahng y Simon Sze de Bell Labs propusieron que la puerta flotante de un dispositivo semiconductor MOS podría usarse para la celda de una memoria de solo lectura (ROM) reprogramable , lo que llevó a Dov Frohman de Intel a inventar EPROM (PROM borrable). ) en 1971. EEPROM (PROM borrable eléctricamente) fue desarrollado por Yasuo Tarui, Yutaka Hayashi y Kiyoko Naga en el Laboratorio Electrotécnico en 1972. La memoria flash fue inventada por Fujio Masuoka en Toshiba a principios de la década de 1980. Masuoka y sus colegas presentaron la invención de la memoria flash NOR en 1984, y luego la memoria flash NAND en 1987. Toshiba comercializó la memoria flash NAND en 1987.

Los avances en la tecnología y las economías de escala han hecho posible las llamadas computadoras de memoria muy grande (VLM).

Memoria volatil

Varios módulos de memoria que contienen diferentes tipos de DRAM (de arriba a abajo): DDR SDRAM, SDRAM, EDO DRAM y FPM DRAM

La memoria volátil es una memoria de computadora que requiere energía para mantener la información almacenada. La mayor parte de la memoria volátil de semiconductores moderna es RAM estática ( SRAM ) o RAM dinámica ( DRAM ). SRAM conserva su contenido siempre que la energía esté conectada y es más simple para la interfaz, pero usa seis transistores por bit. La RAM dinámica es más complicada para la interfaz y el control, necesita ciclos de actualización regulares para evitar perder su contenido, pero usa solo un transistor y un capacitor por bit, lo que le permite alcanzar densidades mucho más altas y costos por bit mucho más baratos.

SRAM no vale la pena para la memoria del sistema de escritorio, donde domina la DRAM, pero se usa para sus memorias caché. SRAM es un lugar común en pequeños sistemas integrados, que pueden necesitar solo decenas de kilobytes o menos. Las tecnologías de memoria volátil que han intentado competir o reemplazar SRAM y DRAM incluyen Z-RAM y A-RAM .

Memoria no volátil

La memoria no volátil es una memoria de computadora que puede retener la información almacenada incluso cuando no está encendida. Ejemplos de memoria no volátil incluyen memoria de solo lectura (ver ROM ), memoria flash , la mayoría de los tipos de dispositivos de almacenamiento de computadora magnéticos (por ejemplo , unidades de disco duro , disquetes y cinta magnética ), discos ópticos y los primeros métodos de almacenamiento de computadora, como el papel. cinta y tarjetas perforadas .

Las próximas tecnologías de memoria no volátil incluyen FERAM, CBRAM , PRAM , STT-RAM , SONOS , RRAM , memoria para pistas de carreras , NRAM , 3D XPoint y memoria milpiés .

Memoria semi-volátil

Una tercera categoría de memoria es "semi-volátil". El término se usa para describir una memoria que tiene una duración limitada no volátil después de que se quita la energía, pero luego los datos finalmente se pierden. Un objetivo típico cuando se usa una memoria semi-volátil es proporcionar alto rendimiento / durabilidad / etc. asociado con memorias volátiles, al tiempo que proporciona algunos beneficios de una verdadera memoria no volátil.

Por ejemplo, algunos tipos de memoria no volátil pueden desgastarse cuando una celda "desgastada" tiene una mayor volatilidad pero, por lo demás, continúa funcionando. Las ubicaciones de datos que se escriben con frecuencia pueden, por tanto, dirigirse para que utilicen circuitos gastados. Siempre que la ubicación se actualice dentro de un tiempo de retención conocido, los datos siguen siendo válidos. Si el tiempo de retención "expira" sin una actualización, entonces el valor se copia a un circuito menos desgastado con una retención más prolongada. Escribir primero en el área desgastada permite una alta tasa de escritura al tiempo que evita el desgaste de los circuitos no desgastados.

Como segundo ejemplo, una STT-RAM puede hacerse no volátil construyendo celdas grandes, pero el costo por bit y la potencia de escritura aumentan, mientras que la velocidad de escritura disminuye. El uso de celdas pequeñas mejora el costo, la potencia y la velocidad, pero conduce a un comportamiento semivolátil. En algunas aplicaciones, el aumento de la volatilidad se puede gestionar para proporcionar muchos beneficios de una memoria no volátil, por ejemplo, quitando energía pero forzando una activación antes de que se pierdan los datos; o almacenando en caché los datos de solo lectura y descartando los datos almacenados en caché si el tiempo de apagado excede el umbral no volátil.

El término semi-volátil también se usa para describir el comportamiento semi-volátil construido a partir de otros tipos de memoria. Por ejemplo, se puede combinar una memoria volátil y una no volátil, donde una señal externa copia datos de la memoria volátil a la memoria no volátil, pero si se corta la energía sin copiar, los datos se pierden. O, una memoria volátil respaldada por batería, y si se pierde la energía externa, existe un período conocido en el que la batería puede continuar alimentando la memoria volátil, pero si la energía está apagada durante un tiempo prolongado, la batería se agota y se pierden los datos.

Gestión

La gestión adecuada de la memoria es vital para que un sistema informático funcione correctamente. Los sistemas operativos modernos tienen sistemas complejos para administrar adecuadamente la memoria. No hacerlo puede provocar errores, un rendimiento lento y, en el peor de los casos, la absorción por virus y software malintencionado .

Insectos

La gestión inadecuada de la memoria es una causa común de errores, incluidos los siguientes tipos:

  • En un desbordamiento aritmético , un cálculo da como resultado un número mayor que lo que permite la memoria asignada. Por ejemplo, un entero de 8 bits con signo admite los números -128 a +127. Si su valor es 127 y se le indica que agregue uno, la computadora no puede almacenar el número 128 en ese espacio. Tal caso resultará en una operación no deseada, como cambiar el valor del número a −128 en lugar de +128.
  • Una fuga de memoria ocurre cuando un programa solicita memoria del sistema operativo y nunca devuelve la memoria cuando termina con ella. Un programa con este error requerirá gradualmente más y más memoria hasta que el programa falle cuando se agote.
  • Un error de segmentación se produce cuando un programa intenta acceder a la memoria a la que no tiene permiso para acceder. Generalmente, el sistema operativo terminará un programa que lo haga.
  • Un desbordamiento de búfer significa que un programa escribe datos hasta el final de su espacio asignado y luego continúa escribiendo datos en la memoria que ha sido asignada para otros fines. Esto puede resultar en un comportamiento errático del programa, incluidos errores de acceso a la memoria, resultados incorrectos, un bloqueo o una violación de la seguridad del sistema. Por tanto, son la base de muchas vulnerabilidades de software y pueden explotarse de forma malintencionada.

Los primeros sistemas informáticos

En los primeros sistemas informáticos, los programas generalmente especificaban la ubicación para escribir la memoria y qué datos colocar allí. Esta ubicación era una ubicación física en el hardware de memoria real. El lento procesamiento de tales computadoras no permitió los complejos sistemas de administración de memoria que se utilizan en la actualidad. Además, como la mayoría de estos sistemas eran de una sola tarea, no se requerían tanto sistemas sofisticados.

Este enfoque tiene sus trampas. Si la ubicación especificada es incorrecta, esto hará que la computadora escriba los datos en alguna otra parte del programa. Los resultados de un error como este son impredecibles. En algunos casos, los datos incorrectos pueden sobrescribir la memoria utilizada por el sistema operativo. Los piratas informáticos pueden aprovechar esto para crear virus y malware .

Memoria virtual

La memoria virtual es un sistema en el que toda la memoria física está controlada por el sistema operativo. Cuando un programa necesita memoria, la solicita al sistema operativo. Luego, el sistema operativo decide en qué ubicación física colocar el código y los datos del programa.

Esto ofrece varias ventajas. Los programadores de computadoras ya no necesitan preocuparse por dónde se almacenan físicamente sus datos o si la computadora del usuario tendrá suficiente memoria. También permite utilizar varios tipos de memoria. Por ejemplo, algunos datos se pueden almacenar en chips de RAM físicos mientras que otros datos se almacenan en un disco duro (por ejemplo, en un archivo de intercambio ), funcionando como una extensión de la jerarquía de caché . Esto aumenta drásticamente la cantidad de memoria disponible para los programas. El sistema operativo colocará los datos utilizados activamente en la RAM física, que es mucho más rápida que los discos duros. Cuando la cantidad de RAM no es suficiente para ejecutar todos los programas actuales, puede resultar en una situación en la que la computadora pasa más tiempo moviendo datos de la RAM al disco y viceversa que realizando tareas; esto se conoce como paliza .

Memoria protegida

La memoria protegida es un sistema en el que a cada programa se le da un área de memoria para usar y no se le permite salir de ese rango. El uso de memoria protegida mejora en gran medida tanto la confiabilidad como la seguridad de un sistema informático.

Sin memoria protegida, es posible que un error en un programa altere la memoria utilizada por otro programa. Esto hará que el otro programa se ejecute sin memoria dañada con resultados impredecibles. Si la memoria del sistema operativo está dañada, todo el sistema informático puede fallar y debe reiniciarse . A veces, los programas alteran intencionalmente la memoria utilizada por otros programas. Esto lo hacen virus y malware para apoderarse de las computadoras. También puede ser usado benignamente por programas deseables que pretenden modificar otros programas; En la era moderna, esto generalmente se considera una mala práctica de programación para los programas de aplicación, pero puede ser utilizado por herramientas de desarrollo de sistemas como depuradores, por ejemplo, para insertar puntos de interrupción o ganchos.

La memoria protegida asigna a los programas sus propias áreas de memoria. Si el sistema operativo detecta que un programa ha intentado alterar la memoria que no le pertenece, el programa se termina (o se restringe o redirige de otra manera). De esta manera, solo el programa infractor se bloquea y otros programas no se ven afectados por la mala conducta (ya sea accidental o intencional).

Los sistemas de memoria protegida casi siempre incluyen también memoria virtual.

Ver también

Notas

Referencias

Otras lecturas

  • Miller, Stephen W. (1977), Tecnología de memoria y almacenamiento , Montvale .: AFIPS Press
  • Tecnología de memoria y almacenamiento , Alexandria, Virginia .: Time Life Books, 1988