En informática, la memoria es un dispositivo que almacena datos digitales durante algún periodo de tiempo. La memoria proporciona una de las principales funciones de las computadoras.
La memoria es uno de los componentes fundamentales de la computadora. Aparece como componente esencial en cualquiera de las arquitecturas que se escojan para construir una computadora: arquitectura de Von Neumann y arquitectura Harvard. Según Von Neumann, la computadora cuenta con una memoria cuyo único propósito es almacenar tanto datos como instrucciones que la computadora esta usando, mientras que Harvard propone que la computadora necesita tanto una memoria para datos como otra para instrucciones.
La memoria se puede clasificar de manera general en dos tipos: memoria principal o interna, que se comunica directamente con el procesador y almacena temporalmente los datos y programas en uso (como la memoria RAM); y memoria secundaria o externa, para el almacenamiento masivo y permanente de datos (como los discos duros).
La clasificación de la memoria en un sistema informático es un campo conocido como jerarquía de memoria.

La memoria de las computadoras contemporáneas representan la información usando bits. Texto, números, imágenes, sonido y casi cualquier otra forma de información puede ser transformada en una sucesión de bits.
A la clasificación de los dispositivos de memoria dentro de una computadora se le llama jerarquía de memoria. No existe ningún medio de almacenamiento de uso práctico universal y todas las formas de almacenamiento tienen sus desventajas, por ende, una computadora hace uso de varias formas de almacenamiento al mismo tiempo.
Dentro de la jerarquía de memoria, existen 3 reglas fundamentales que relacionan a las 3 características clave de una memoria: coste, capacidad y tiempo de acceso:

La memoria principal, está directamente conectada a la CPU de la computadora. Debe estar presente para que la CPU efectúe cualquier función. La memoria principal contiene los programas en ejecución y los datos con los que operan. Se puede transferir información muy rápidamente entre un registro de la CPU y localizaciones de la memoria principal (típicamente en menos de 100 ciclos de reloj). En las computadoras modernas se usan memorias de acceso aleatorio basadas en electrónica del estado sólido, que está directamente conectada a la CPU a través de buses de direcciones, datos y control.
El almacenamiento tiene como requisito principal que cualquiera de sus localidades debe ser directamente direccionable, es decir, que todo dato almacenado en memoria pueda ser localizado por mediante su dirección de memoria. Es por esto que los registros del procesador no pueden considerarse memoria principal. Las referencias a estos se hacen por nombre, de forma directa, y no por dirección. Los registros representan el estado actual de la ejecución y los datos utilizados de manera inmediata, pero no pueden almacenar un programa completo, solo apuntar al lugar de ejecución actual.
La gran diferencia de velocidad entre el procesador y la memoria principal dio origen a la memoria caché. Esta es una memoria de muy alta velocidad, típicamente entre 10 y 100 veces más que la memoria principal, y se emplea para mejorar la eficiencia o rendimiento del CPU. Parte de la información de la memoria principal se duplica en la memoria caché. Comparada con los registros, la caché es ligeramente más lenta, pero de mayor capacidad. Sin embargo, es más rápida, aunque de mucha menor capacidad que la memoria principal.
Algunos autores presentan a la memoria caché como un nivel aparte en la jerarquía de memoria, sin embargo, al no ser memoria directamente direccionable (la memoria caché guarda estrictamente copias de la información disponible en la memoria principal), es común presentarla como parte funcional de la memoria principal.

La memoria secundaria requiere que la computadora use sus canales de entrada/salida para acceder a la información y se utiliza para almacenamiento a largo plazo de información persistente. La memoria secundaria también se llama de «almacenamiento masivo». Un disco duro es un ejemplo de almacenamiento secundario.
Habitualmente, la memoria secundaria o de almacenamiento masivo tiene mayor capacidad que la memoria primaria, pero es mucho más lenta. En las computadoras modernas, los discos duros y las unidades de estado sólido suelen usarse como dispositivos de almacenamiento masivo.
El tiempo necesario para acceder a un byte de información dado, almacenado en una memoria principal como una unidad de estado sólido es de alrededor de 100 000 nanosegundos, mientras que en una memoria principal como una memoria RAM este tiempo puede ser de 100 nanosegundos. Esto ilustra cuán significativa es la diferencia entre la velocidad entre la memoria principal y la memoria secundaria.
La mayoría de los sistemas operativos usan la memoria secundaria como memoria virtual, esto es una técnica para incrementar artificialmente la cantidad aparente de memoria principal en la computadora.
La memoria terciaria es un sistema que suele involucrar un robot industrial que gestiona un medio de almacenamiento masivo fuera de línea según lo solicite la computadora. La memoria terciaria se usa en el área del almacenamiento industrial, la computación científica, en grandes sistemas informáticos y en redes empresariales. Este tipo de memoria es algo que los usuarios de computadoras personales nunca van de primera mano.
El almacenamiento fuera de línea (off-line) es un sistema donde el medio de almacenamiento puede ser extraído fácilmente del dispositivo de almacenamiento. Estos medios de almacenamiento suelen usarse para transporte y archivo de datos. En computadoras modernas son de uso habitual para este propósito los disquetes, discos ópticos y las memorias flash, incluyendo las unidades USB. También hay discos duros USB que se pueden conectar rápidamente. Los dispositivos de almacenamiento fuera de línea usados en el pasado son cintas magnéticas en muchos tamaños y formatos diferentes, y las baterías extraíbles de discos Winchester.
El almacenamiento de red es cualquier tipo de almacenamiento de computadora que incluye el hecho de acceder a la información a través de una red informática. Discutiblemente, el almacenamiento de red permite centralizar el «control de información» en una organización y reducir la duplicidad de la información. El almacenamiento en red incluye:
La división entre primario, secundario, terciario y fuera de línea, se basa en la jerarquía de memoria o distancia desde la CPU. Hay otras formas de caracterizar a los distintos tipos de memoria.
Dependiendo de la habilidad para acceder a la información, se puede clasificar en:
Para los usuarios sin conocimientos técnicos, la capacidad y las prestaciones de la memoria son características esenciales que ayudan a clasificar a las memorias. Las 3 prestaciones más importantes son:
La capacidad de una memoria se suele expresar en bytes, y para las memorias principales, se suele usar el concepto de palabras. Una palabra en memoria es un concepto que expresa el tamaño máximo de un dato que puede manejar la computadora, o en otras palabras, el número máximo de bits que utiliza la computadora para representar un dato. Las memorias principales suelen ser expresadas con la nomenclatura M x N, donde M indica el número de direcciones de memoria disponibles en la memoria (básicamente, cuantas palabras podemos guardar), y N el tamaño de la palabra. En las memorias secundarias no existe esta nomenclatura y solo se suele hacer uso de prefijos métricos que indican que tan grande o pequeña es (giga, tera, etc.).
La memoria de semiconductor usa circuitos integrados basados en semiconductores para almacenar información. Un chip de memoria de semiconductor puede contener millones de minúsculos transistores o condensadores. Existen memorias de semiconductor de ambos tipos: volátiles y no volátiles. En las computadoras modernas, la memoria principal consiste casi exclusivamente en memoria de semiconductor volátil y dinámica, también conocida como memoria dinámica de acceso aleatorio o más comúnmente RAM, su acrónimo inglés. Con el cambio de siglo, ha habido un crecimiento constante en el uso de un nuevo tipo de memoria de semiconductor no volátil llamado memoria flash. Dicho crecimiento se ha dado, principalmente en el campo de las memorias fuera de línea en computadoras domésticas. Las memorias de semiconductor no volátiles se están usando también como memorias secundarias en varios dispositivos de electrónica avanzada y computadoras especializadas y no especializadas.
Las memorias magnéticas usan diferentes patrones de magnetización sobre una superficie cubierta con una capa magnetizada para almacenar información. Las memorias magnéticas son no volátiles. Se llega a la información usando uno o más cabezales de lectura/escritura. Como el cabezal de lectura/escritura solo cubre una parte de la superficie, el almacenamiento magnético es de acceso secuencial (excepto en el disco duro, que cuenta con acceso aleatorio) y debe buscar, dar vueltas o las dos cosas. En ‘computadoras modernas’, la superficie magnética es de alguno de estos tipos:
En las ‘primeras computadoras’, el almacenamiento magnético se usaba también como memoria principal en forma de memoria de tambor, memoria de núcleo, memoria en hilera de núcleo, memoria película delgada, memoria de Twistor o memoria de burbuja. Además, a diferencia de hoy, las cintas magnéticas se solían usar como memoria secundaria.
Las memorias en disco óptico almacenan información usando agujeros minúsculos grabados con un láser en la superficie de un disco circular. La información se lee iluminando la superficie con un diodo láser y observando la reflexión. Los discos ópticos son no volátil y de acceso aleatorio. Los siguientes formatos son de uso común:
Se han propuesto los siguientes formatos:
Los discos magneto-ópticos son discos de memoria óptica donde la información se almacena en el estado magnético de una superficie ferromagnética. La información se lee ópticamente y se escribe combinando métodos magnéticos y ópticos. Las memorias de discos magneto ópticos son de tipo no volátiles, de acceso secuencial, de escritura lenta y lectura rápida. Se usa como memoria terciaria y fuera de línea.

Las tarjetas perforadas fueron utilizados por primera vez por Basile Bouchon para el control de telares textiles en Francia. En 1801 el sistema de Bouchon fue perfeccionado por Joseph Marie Jacquard, quien desarrolló un telar automático, conocido como telar de Jacquard. Herman Hollerith desarrolló la tecnología de procesamiento de datos de tarjetas perforadas para el censo de Estados Unidos de 1890 y posteriormente fundó la Tabulating Machine Company, una de las precursoras de IBM. IBM desarrolló la tecnología de la tarjeta perforada como una potente herramienta para el procesamiento de datos empresariales y produjo una línea extensiva de máquinas de registro que utilizaban papel perforado para el almacenamiento de datos y su procesado automático.
En el año 1950, las tarjetas IBM y las unidades máquinas de registro IBM se habían vuelto indispensables en la industria y el gobierno estadounidense. Durante los años 1960, las tarjetas perforadas fueron gradualmente reemplazadas por las cintas magnéticas, aunque su uso fue muy común hasta mediados de los años 1970 con la aparición de los discos magnéticos. La información se grababa en las tarjetas perforando agujeros en el papel o la tarjeta. La lectura se realizaba por sensores eléctricos (más tarde ópticos) donde una localización particular podía estar agujereada o no.
Para almacenar información, los tubos Williams usaban un tubo de rayos catódicos y los tubos Selectrón usaban un gran tubo de vacío. Estos dispositivos de memoria primaria tuvieron una corta vida en el mercado ya que el tubo de Williams no era fiable y el tubo de Selectrón era caro.
La memoria de línea de retardo usaba ondas sonoras en una sustancia como podía ser el Mercurio para guardar información. La memoria de línea de retardo era una memoria dinámica volátil, ciclo secuencial de lectura/escritura. Se usaba como memoria principal.
La memoria de cambio de fase usa las fases de un material de cambio de fase para almacenar información. Dicha información se lee observando la resistencia eléctrica variable del material. La memoria de cambio de fase sería una memoria de lectura/escritura no volátil, de acceso aleatorio podría ser usada como memoria primaria, secundaria y fuera de línea. La memoria holográfica almacena ópticamente la información dentro de cristales o fotopolímeros. Las memorias holográficas pueden utilizar todo el volumen del medio de almacenamiento, a diferencia de las memorias de discos ópticos, que están limitadas a un pequeño número de superficies en capas. La memoria holográfica podría ser no volátil, de acceso secuencial y tanto de escritura única como de lectura/escritura. Puede ser usada tanto como memoria secundaria como fuera de línea.
La memoria molecular almacena la información en polímeros que pueden almacenar puntas de carga eléctrica. La memoria molecular puede ser especialmente interesante como memoria principal.
Recientemente se ha propuesto utilizar el spin de un electrón como memoria. Se ha demostrado que es posible desarrollar un circuito electrónico que lea el spin del electrón y lo convierta en una señal eléctrica.[cita requerida]
De igual forma, es posible emplear moléculas de ADN, con ventajas como su bajo mantenimiento, alta densidad de almacenamiento y alta estabilidad, que permite almacenar la información durante prolongados periodos de tiempo.