Para empezar por el principio, un ordenador tiene tres partes principales:
- Un procesador que ejecuta instrucciones y realiza cálculos
- Memoria primaria que contiene instrucciones y datos, directamente direccionables por el procesador.
- Dispositivos de entrada/salida utilizados para comunicarse con el entorno.
Centrándonos en (2) la memoria primaria. El término «directamente direccionable» significa que se ajusta al bus de memoria del procesador, por lo que el procesador aplica una dirección al bus de direcciones, posiblemente datos al bus de datos y señales apropiadas para acceder a la memoria. La memoria almacena los datos del procesador (en la escritura) o devuelve los datos al procesador (en la lectura) en el momento oportuno para que el procesador los utilice.
Las memorias secundarias, como los discos duros, se consideran dispositivos de entrada/salida, ya que hay operaciones más complejas implicadas que las que se realizan en el procesador.
Los primeros ordenadores (pre-semiconductores) tenían varios tipos de memorias. Las opciones más comunes eran las líneas de retardo y las memorias de tambor, esta última un tambor magnético que giraba a gran velocidad de forma muy parecida a los discos duros actuales. La memoria de tambor era mecánicamente torpe y sólo podía contener unos pocos kiloWords de información, pero era fácil de interconectar. Cuando el procesador necesitaba un lugar determinado de la memoria, esperaba a que el tambor girara hasta la posición correcta y entonces leía o escribía una palabra en esa posición. Obviamente, el tiempo de acceso a la memoria dependía de la ubicación actual y de la dirección que el procesador solicitara. La reordenación de los bloques de instrucciones y de los datos podía dar lugar a enormes aumentos de velocidad.
Más adelante, los ordenadores estaban equipados con memorias de núcleo magnético. Se podía acceder a ellas en cualquier orden y se podía acceder a cada palabra de memoria con el mismo retraso. En esta época se introdujo el término Memoria de Acceso Aleatorio (RAM) para indicar que se podía acceder a las palabras de memoria en un orden arbitrario sin ninguna penalización en el rendimiento.
Las memorias de núcleo eran muy caras pero tenían la ventaja de que conservaban el contenido cuando la máquina se apagaba. Es decir, una vez que se programaba un bootloader necesario para arrancar el sistema, éste permanecía allí incluso después de un ciclo de alimentación (nota para los interesados: en realidad una celda de memoria core pierde su contenido al ser leída, por lo que había una circuitería que la volvía a escribir después de una lectura).
Con los semiconductores fue posible fabricar memorias con mucha más capacidad y velocidad a un menor coste. El término RAM se mantuvo para las memorias que el procesador podía leer y escribir en orden arbitrario directamente sobre el bus de memoria. Pero este tipo de memorias pierden su contenido cuando se desconecta la alimentación.
Un ordenador no puede hacer nada significativo a menos que el procesador sea alimentado con instrucciones y esto requería una memoria que contuviera instrucciones cuando el ordenador se iniciara.
Los ordenadores antiguos solían tener programas cableados y los fabricantes de semiconductores proporcionaban el equivalente en memorias de sólo lectura (ROM). El fabricante establecía una línea de producción de ROMs con su contenido específico. Esto era bastante caro y no era algo que una pequeña empresa pudiera permitirse. En su lugar, podían utilizar ROM programables (PROM) que contenían fusibles electrónicos que se fundían al programarlas. Así, las PROM eran programables una sola vez. Más tarde hubo PROM borrable (EPROM) que normalmente se borraban en su totalidad con una fuerte luz ultravioleta durante media hora más o menos, y luego PROM eléctricamente borrable (EEPROM) que era borrable por palabras por el procesador. La diferencia con la RAM es que el tiempo para una lectura es de nanosegundos a microsegundos, mientras que una escritura o borrado tarda milisegundos, al menos 1000 veces más, por lo que no son utilizables como memoria de trabajo como las memorias RAM.
Nótese que tanto lo que llamamos memorias RAM como ROM son de hecho memorias de acceso aleatorio, por lo que utilizar el término RAM sólo para la memoria de lectura/escritura es un poco tonto. Un mejor término (también usado históricamente) sería RWM para Memoria de Lectura/Escritura en contraposición a Memoria de Sólo Lectura.
Probablemente mantuvimos el término RAM porque es más fácil de decir que RWM.