Memoria del ordenador
En informática, 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 suele ser sinónimo del término almacenamiento primario o memoria principal. Un sinónimo arcaico de memoria es almacenar.
La memoria de la computadora funciona a alta velocidad en comparación con el almacenamiento que es más lento pero menos costoso y de mayor capacidad. Además de almacenar programas abiertos, la memoria de la computadora sirve como caché de disco y búfer de escritura para mejorar el rendimiento de lectura y escritura. Los sistemas operativos toman prestada la capacidad de RAM para el almacenamiento en caché siempre que no la necesite el software en ejecución. Si es necesario, el contenido de la memoria de la computadora se puede transferir al almacenamiento; una forma común de hacerlo es a través de una técnica de administración de memoria llamada memoria virtual.
La memoria moderna se implementa como memoria de semiconductores, donde los datos se almacenan en celdas de memoria construidas a partir de transistores MOS y otros componentes en un circuito integrado. Hay dos tipos principales de memoria de semiconductores, volátiles y no volátiles. 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 principal y la memoria estática de acceso aleatorio (SRAM) que se usa para la memoria caché de la CPU.
La mayoría de las memorias de semiconductores están organizadas 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 2N palabras en la memoria.
Historia
A principios de la década de 1940, la tecnología de memoria a menudo permitía una capacidad de unos pocos bytes. La primera computadora digital programable electrónica, la ENIAC, utilizando miles de tubos de vacío, podía realizar cálculos simples que involucraban 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ústica, 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 tapado en cada extremo con un cristal de cuarzo, las líneas de retardo podrían almacenar bits de información en forma de ondas de sonido 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 estaba limitada a una capacidad de unos pocos miles de bits.
Dos alternativas a la línea de retardo, el tubo Williams y el tubo Selectron, se originaron en 1946 y ambos usaban haces de electrones en tubos de vidrio como medio de almacenamiento. Usando 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 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 fines 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 de semiconductores 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 mediante 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 de semiconductores bipolar fue el SP95 presentado por IBM en 1965. Si bien la memoria de semiconductores ofrecía un mejor rendimiento que la memoria de núcleo magnético, seguía siendo más grande y costosa y no desplazó a la memoria de núcleo magnético hasta finales de la década de 1960.
Memoria MOS
La invención del transistor de efecto de campo de metal-óxido-semiconductor (MOSFET) permitió el uso práctico de transistores de metal-óxido-semiconductor (MOS) como elementos de almacenamiento de celdas de memoria. La memoria MOS fue desarrollada por John Schmidt en Fairchild Semiconductor en 1964. Además de un mayor rendimiento, la memoria de semiconductores 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 potencia MOSFET para la fuente de alimentación, acoplamiento cruzado conmutado, interruptores y línea de retardo. almacenamiento. El desarrollo de la tecnología de circuito integrado MOS de puerta de silicio (MOS IC) por parte de 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. SRAM se convirtió en una alternativa a la memoria de núcleo magnético, pero requiere seis transistores para cada bit de datos. El uso comercial de SRAM comenzó en 1965, cuando IBM presentó su chip SRAM SP95 para el System/360 Model 95.
Toshiba introdujo celdas de memoria DRAM bipolares para su calculadora electrónica Toscal BC-1411 en 1965. Si bien ofrecía un rendimiento mejorado, la DRAM bipolar no podía competir con el precio más bajo de la memoria de núcleo magnético dominante en ese momento. La tecnología MOS es la base de la DRAM moderna. En 1966, Robert H. Dennard en el Centro de Investigación IBM Thomas J. Watson estaba trabajando en la memoria MOS. Mientras examinaba las características de la tecnología MOS, descubrió que era posible construir capacitores y que almacenar una carga o no cargar en el capacitor 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 capacitor. condensador. Esto lo llevó al desarrollo de una celda de memoria DRAM de un solo transistor. En 1967, Dennard presentó una patente para una celda de memoria DRAM de un solo transistor basada en la tecnología MOS. Esto condujo al primer chip DRAM IC 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, incluida la memoria de solo lectura (ROM) a través de la memoria flash moderna. 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 ROM reprogramable, lo que llevó a Dov Frohman de Intel a inventar la 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 tecnológicos y las economías de escala han hecho posible los llamados muy computadoras de gran memoria (VLM).
Memoria volátil
La memoria volátil es la memoria de la computadora que requiere energía para mantener la información almacenada. La mayoría de las memorias volátiles de semiconductores modernas son RAM estática (SRAM) o RAM dinámica (DRAM). DRAM domina para la memoria del sistema de escritorio. SRAM se utiliza para la memoria caché de la CPU. SRAM también se encuentra en pequeños sistemas integrados que requieren poca memoria.
SRAM retiene su contenido siempre que la alimentación esté conectada y puede usar una interfaz más simple, pero requiere 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.
Memoria no volátil
La memoria no volátil puede retener la información almacenada incluso cuando no está encendida. Los ejemplos de memoria no volátil incluyen la memoria de solo lectura, la memoria flash, la mayoría de los tipos de dispositivos magnéticos de almacenamiento informático (por ejemplo, unidades de disco duro, disquetes y cintas magnéticas), discos ópticos y los primeros métodos de almacenamiento informático, como cintas de papel y tarjetas perforadas..
Las tecnologías de memoria no volátil en desarrollo incluyen RAM ferroeléctrica, celda de metalización programable, RAM magnética de torque de transferencia de giro, SONOS, memoria resistiva de acceso aleatorio, memoria de pista, Nano-RAM, 3D XPoint y memoria de milpiés.
Memoria semivolátil
Una tercera categoría de memoria es semivolátil. El término se usa para describir una memoria que tiene una duración no volátil limitada después de que se desconecta la energía, pero luego los datos finalmente se pierden. Un objetivo típico cuando se usa una memoria semivolátil es proporcionar el alto rendimiento y la durabilidad asociados con las memorias volátiles mientras se brindan algunos beneficios de la memoria no volátil.
Por ejemplo, algunos tipos de memoria no volátil se desgastan cuando se escriben. Una celda gastada tiene mayor volatilidad pero, por lo demás, sigue funcionando. Las ubicaciones de datos que se escriben con frecuencia pueden así ser dirigidas para usar circuitos desgastados. Mientras la ubicación se actualice dentro de un tiempo de retención conocido, los datos seguirán siendo válidos. Después de un período de tiempo sin actualización, el valor se copia a un circuito menos usado con mayor retención. Escribir primero en el área desgastada permite una tasa de escritura alta y evita el desgaste de los circuitos no desgastados.
Como segundo ejemplo, se puede hacer que una STT-RAM no sea volátil construyendo celdas grandes, pero hacerlo aumenta el costo por bit y los requisitos de energía y reduce la velocidad de escritura. 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, desconectando la energía pero forzando una reactivación antes de que se pierdan los datos; o almacenando en caché 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 semivolátil también se usa para describir el comportamiento semivolátil construido a partir de otros tipos de memoria. Por ejemplo, se pueden combinar una memoria volátil y una no volátil, donde una señal externa copia los datos de la memoria volátil a la memoria no volátil, pero si se corta la energía antes de que ocurra la copia, los datos se pierden. O bien, una memoria volátil respaldada por batería, y si se pierde la alimentación externa, hay un período conocido en el que la batería puede continuar alimentando la memoria volátil, pero si la alimentación se apaga durante un tiempo prolongado, la batería se agota y los datos se pierden.
Administració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. De lo contrario, se pueden generar errores, un rendimiento lento o la toma de control por parte de virus y software malicioso.
Errores
La gestión incorrecta de la memoria es una causa común de errores, incluidos los siguientes tipos:
- Una fuga de memoria ocurre cuando un programa solicita memoria del sistema operativo y nunca devuelve la memoria cuando se hace con él. Un programa con este fallo requerirá cada vez más memoria hasta que el programa falla mientras el sistema operativo se agota.
- Una falta de segmentación resulta cuando un programa intenta acceder a la memoria que no tiene permiso para acceder. Generalmente, un programa que lo haga será terminado por el sistema operativo.
- Un flujo de amortiguación ocurre cuando un programa escribe datos al final de su espacio asignado y luego continúa escribiendo datos más allá de esto a la memoria que se ha asignado para otros fines. Esto puede resultar en un comportamiento errático del programa, incluyendo errores de acceso a la memoria, resultados incorrectos, un fallo o una violación de la seguridad del sistema. Por lo tanto, son la base de muchas vulnerabilidades de software y pueden ser maliciosos explotados.
Primeros sistemas informáticos
En los primeros sistemas informáticos, los programas normalmente especificaban la ubicación para escribir en la memoria y qué datos colocar allí. Esta ubicación era una ubicación física en el hardware de memoria real. Las primeras computadoras no tenían los complejos sistemas de gestión de memoria que se utilizan hoy en día.
Este enfoque tiene sus inconvenientes. 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, el error puede sobrescribir la memoria utilizada por el sistema operativo. Los piratas informáticos pueden aprovechar esta falta de protección para crear virus y malware.
Memoria virtual
La memoria virtual es un sistema en el que el sistema operativo administra la memoria física, generalmente con la ayuda de una unidad de administración de memoria. Permite el uso de múltiples tipos de memoria. Por ejemplo, algunos datos pueden almacenarse en la RAM 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 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. El sistema operativo colocará los datos utilizados activamente en la RAM, 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 asigna un área de memoria para usar y se le impide salirse de ese rango. Si el sistema operativo detecta que un programa ha intentado alterar la memoria que no le pertenece, el programa finaliza (o se restringe o se redirige). De esta manera, solo el programa infractor se bloquea y otros programas no se ven afectados por el mal comportamiento (ya sea accidental o intencional). 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 ese otro programa se quede sin memoria corrupta 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 están destinados a modificar otros programas, depuradores, por ejemplo, para insertar puntos de interrupción o ganchos.
Contenido relacionado
CSV
Comparación de Java y C++
Conmutador de red