domingo, 20 de julio de 2008

Máquina Virtual

En informática una máquina virtual es un software que emula a un ordenador y puede ejecutar programas como si fuese un ordenador real. Este software en un principio fue definido como "un duplicado eficiente y aislado de una máquina física". La acepción del termino actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real.
Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de este "ordenador virtual".
Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema operativo que queramos probar (Linux, por ejemplo) desde nuestro sistema operativo habitual (Windows por ejemplo) sin necesidad de instalarlo directamente en nuestro ordenador y sin miedo a que se desconfigure el sistema operativo primario.




Historia




El concepto de máquina virtual surge con el sistema VM/370 de IBM en 1972 [cita requerida]. La idea principal es la de permitir ejecutar varios sistemas operativos simultáneamente sobre el mismo hardware. Para ello, separa las dos funciones básicas que realiza un sistema de tiempo compartido: multiprogramación y abstracción del hardware.
El corazón del sistema se llama monitor de la máquina virtual, y se ejecuta sobre el hardware proporcionando varias máquinas virtuales al siguiente nivel de software. Por eso cada una puede estar ejecutando un sistema operativo distinto.
El concepto de máquina virtual también ha sido llevado a los lenguajes de programación compilados. En estos casos la finalidad es compilar el código fuente del programa para una máquina determinada (normalmente genérica, no existente físicamente). Con posterioridad, la máquina virtual adecuada puede ejecutar estos programas independientemente del sistema operativo subyacente. Un ejemplo histórico de esto lo encontramos en UCSD Pascal, unos de los primeros y en su momento más difundidos compiladores de Pascal que empleaba la denominada máquina-P. Actualmente el caso más popular es el de Java y .NET.

Tipos de Máquinas Virtuales

Funcionamiento de la máquina virtual de Java, una de las máquinas virtuales de proceso más populares.

Funcionamiento de VMWare, una de las máquinas virtuales de sistema más populares.
Las máquinas virtuales se pueden clasificar en dos grandes categorías según su funcionalidad y su grado de equivalencia a una verdadera máquina.
Máquinas virtuales de sistema (en inglés System Virtual Machine)
Máquinas virtuales de proceso (en inglés Process Virtual Machine)

Máquinas virtuales de sistema






Las máquinas virtuales de sistema, también llamadas máquinas virtuales de hardware, permiten a la máquina física subyacente multiplexarse entre varias máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de software que permite la virtualización se la llama monitor de máquina virtual o "hypervisor". Un monitor de máquina virtual puede ejecutarse o bien directamente sobre el hardware o bien sobre un sistema operativo ("host operating system").

Aplicaciones de las máquinas virtuales de sistema




Varios sistemas operativos distintos pueden coexistir sobre el mismo ordenador, en sólido aislamiento el uno del otro, por ejemplo para probar un sistema operativo nuevo sin necesidad de instalarlo directamente.
La máquina virtual puede proporcionar una arquitectura de instrucciones (ISA) que sea algo distinta de la de la verdadera máquina. Es decir, podemos simular hardware.
Varias máquinas virtuales (cada una con su propio sistema operativo llamado sistema operativo "invitado" o "guest"), pueden ser utilizadas para consolidar servidores. Esto permite que servicios que normalmente se tengan que ejecutar en ordenadores distintos para evitar interferencias, se puedan ejecutar en la misma máquina de manera completamente aislada y compartiendo los recursos de un único ordenador. La consolidación de servidores a menudo contribuye a reducir el coste total de las instalaciones necesarias para mantener los servicios, dado que permiten ahorrar en hardware.

Máquinas virtuales de proceso




Una máquina virtual de proceso, a veces llamada "máquina virtual de aplicación", se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo proceso. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se para cuando éste finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma.
El ejemplo más conocido actualmente de este tipo de máquina virtual es la máquina virtual de Java. Otra máquina virtual muy conocida es la del entorno .Net de Microsoft que se llama "Common Language Runtime".

Inconvenientes de las máquinas virtuales




Uno de los inconvenientes de las máquinas virtuales es que agregan gran complejidad al sistema en tiempo de ejecución. Esto tiene como efecto la ralentización del sistema, es decir, el programa no alcanzará la misma velocidad de ejecución que si se instalase directamente en el sistema operativo "anfitrión" (host) o directamente sobre la plataforma de hardware. Sin embargo, a menudo la flexibilidad que ofrecen compensa esta pérdida de eficiencia.

Técnicas

Monitor de tipo I.

Monitor de tipo II.

Emulación del hardware subyacente (ejecución nativa)




Esta técnica se suele llamar virtualización completa (full virtualization) del hardware, y se puede implementar usando un hypervisor de Tipo 1 o de Tipo 2:
el tipo 1 se ejecuta directamente sobre el hardware
el tipo 2 se ejecuta sobre otro sistema operativo como por ejemplo Linux.
Cada máquina virtual puede ejecutar cualquier sistema operativo soportado por el hardware subyacente. Así los usuarios pueden ejecutar dos o más sistemas operativos distintos simultáneamente en ordenadores "privados" virtuales.
El sistema pionero que utilizó este concepto fue la CP-40, la primera versión (1967) de la CP/CMS de IBM (1967-1972) y el precursor de la familia VM de IBM (de 1972 en adelante). Con la arquitectura VM, la mayor parte de usuarios controlan un sistema operativo monousuario relativamente simple llamado CMS que se ejecuta en la máquina virtual VM.
Actualmente tanto Intel como AMD han introducido prestaciones a sus procesadores x86 para permitir la virtualización de hardware.

Emulación de un sistema no nativo




Las máquinas virtuales también pueden actuar como emuladores de hardware, permitiendo que aplicaciones y sistemas operativos concebidos para otras arquitecturas de procesador se puedan ejecutar sobre un hardware que en teoría no soportan.
Algunas máquinas virtuales emulan hardware que sólo existe como una especificación. Por ejemplo:
La máquina virtual P-Code que permitía a los programadores de Pascal crear aplicaciones que se ejecutasen sobre cualquier ordenador con está máquina virtual correctamente instalada.
La máquina virtual de Java.
La máquina virtual del entorno .NET.
OpenFirmware
Esta técnica permite que cualquier ordenador pueda ejecutar software escrito para la máquina virtual. Sólo la máquina virtual en sí misma debe ser portada a cada una de las plataformas de hardware.

Virtualización a nivel de sistema operativo




Esta técnica consiste en dividir un ordenador en varios compartimentos independientes de manera que en cada compartimento podamos instalar un servidor. A estos compartimentos se los llama "entornos virtuales". Desde el punto de vista del usuario, el sistema en su conjunto actúa como si realmente existiesen varios servidores ejecutándose en varias máquinas distintas. Dos ejemplos son las zonas de Solaris (Solaris Zones) y la técnica de Micro Partioning de AIX.

Lista de hardware con soporte para virtualización




AMD-V (anteriormente llamado Pacifica)
ARM TrustZone
Boston Circuits gCore (grid-on-chip) con núcleos 16 ARC 750D y módulo de virtualización de hardware Time-machine.
Freescale PowerPC MPC8572 y MPC8641D
IBM System/370, System/390 y mainframes ZSeries
Intel VT (anteriormente llamado Vanderpool)
SPARC de Sun Microsystems

Lista de máquinas virtuales




Máquinas virtuales de proceso
Common Language Runtime - C#, Visual Basic .NET, J#, Managed C++
EiffelStudiopara el lenguaje de programación Eiffel
Lenguaje de programación Erlang
Forth virtual machine - Forth
Glulx - Glulx, Z-code
Hec - Hasm Assembler
Inferno - Limbo
Java virtual machine - Java, Nice, NetREXX
Low Level Virtual Machine (LLVM) - actualmente C, C++, Stacker
Lua
Macromedia Flash Player - SWF
MMIX - MMIXAL
Neko virtual machine actualmente Neko y haXe
O-code machine - BCPL
P-code machine - Pascal
Parrot - Perl 6
Perl virtual machine - Perl
Portable.NET - C#, Visual Basic .NET, J#, Managed C++
YARV - Ruby
Rubinius - Ruby
ScummVM - Scumm
SECD machine - ISWIM, Lispkit Lisp
Sed the stream-editor can also be seen as a VM with 2 storage spaces.
Smalltalk virtual machine - Smalltalk
SQLite virtual machine - SQLite opcodes
Squeak virtual machine - Squeak
SWEET16
TrueType virtual machine - TrueType
Valgrind - chequeo de accesos a memoria y "leaks" en x86/x86-64 code under Linux
VX32 virtual machine - application-level virtualization for native code
Virtual Processor (VP) from Tao Group (UK).
Waba - similar a Java, para dispositivos pequeños
Warren Abstract Machine - Prolog, CSC GraphTalk
Z-machine - Z-Code
Zend Engine - PHP
Máquinas virtuales de sistema
VThere (de Sentillion, Inc. [1])
ATL (A MTL Virtual Machine)
Bochs emulador de PCs x86 y AMD64, portátil y open source
CoLinux Open Source Linux inside Windows
Denali, uses paravirtualization of x86 for running para-virtualized PC operating systems.
FAUmachine
Hercules emulator, free System/370, ESA/390, z/Mainframe
Integrity Workstation Green Hills Software[2]
LilyVM is a lightweight virtual machineAn introduction
Microsoft Virtual PC y Microsoft Virtual Server
OKL4
Parallels Workstation, virtualización de x86 para ejecutar sistemas operativos
Parallels Desktop for Mac, virtualización de x86 para ejecutar máquinas virtuales en Mac OS X
QEMU, muy popular en entornos Linux
SheepShaver.
Simics
SVISTA
Trango Virtual Processors
TwoOStwo
User-mode Linux
VirtualBox
Virtual Iron (Virtual Iron 3.1)
Virtual Operating System de Star Virtual Machines
VM de IBM
VMware (ESX Server, Fusion, Virtual Server, Workstation, Player y ACE)
Xen
KVM
IBM POWER SYSTEMS
Máquinas virtuales a nivel de sistema operativo
OpenVZ
Virtuozzo
FreeVPS
Linux-VServer
FreeBSD Jails
Solaris Containers
AIX Workload Partitions

Descripciones ampliadas para aplicaciones de virtualización seleccionadas
Los productos de software siguientes son capaces de virtualizar el hardware de modo que varios sistemas operativos puedan compartirlo.
Adeos es una Capa de Abstracción de Hardware que puede ser cargado como un módulo del núcleo de Linux. Esto permite la carga de un núcleo en tiempo real como módulo, al mismo tiempo que se ejecuta Linux, pero con una prioridad más alta.
Denali utiliza la paravirtualización para proporcionar máquinas virtuales de alto rendimiento sobre procesadores x86.
OKL4 utiliza el software libre L4 (micronúcleo) como un hypervisor para proporcionar una solución de virtualización de alto rendimiento para sistemas embebidos.
OpenVZ para Linux
Parallels
QEMU puede emular una variedad de arquitecturas de CPU sobre muchas plataformas distintas.
Virtual Iron
Virtuozzo
VMware
Xen
KVM

Procesador (CPU)

La unidad central de procesamiento , CPU (por sus siglas del inglés Central Processing Unit), o, simplemente, el procesador, es el componente en una computadora digital que interpreta las instrucciones y procesa los datos contenidos en los programas de computadora. Las CPU proporcionan la característica fundamental de la computadora digital, la programabilidad, y son uno de los componentes necesarios encontrados en las computadoras de cualquier tiempo, junto con el almacenamiento primario y los dispositivos de entrada/salida. Se conoce como microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo chip han reemplazado casi totalmente todos los tipos de CPU, y hoy en día, el término "CPU" es aplicado usualmente a todos los microprocesadores.
La expresión "unidad central de proceso" es, en términos generales, una descripción de una cierta clase de máquinas de lógica que pueden ejecutar complejos programas de computadora. Esta amplia definición puede fácilmente ser aplicada a muchos de los primeros ordenadores que existieron mucho antes que el término "CPU" estuviera en amplio uso. Sin embargo, el término en sí mismo y su acrónimo han estado en uso en la industria de la informática por lo menos desde el principio de los años 1960 . La forma, el diseño y la implementación de las CPU ha cambiado drásticamente desde los primeros ejemplos, pero su operación fundamental ha permanecido bastante similar.
Las primeras CPU fueron diseñadas a la medida como parte de una computadora más grande, generalmente una computadora única en su especie. Sin embargo, este costoso método de diseñar los CPU a la medida, para una aplicación particular, ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y estandarizados adaptados para uno o muchos propósitos. Esta tendencia de estandarización comenzó generalmente en la era de los transistores discretos, computadoras centrales, y microcomputadoras, y fue acelerada rápidamente con la popularización del circuito integrado (IC), éste ha permitido que sean diseñados y fabricados CPU más complejos en espacios pequeños (en la orden de milímetros). Tanto la miniaturización como la estandarización de los CPU han aumentado la presencia de estos dispositivos digitales en la vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación dedicadas. Los microprocesadores modernos aparecen en todo, desde automóviles, televisores, neveras, calculadoras, aviones, hasta teléfonos móviles o celulares, juguetes, entre otros.


Hitoria


Antes del advenimiento de las máquinas parecidas a los CPU de hoy, computadores como el ENIAC tenían que ser físicamente recableados para poder realizar tareas diferentes. Estas máquinas eran a menudo referidas como "computadores de programa fijo", puesto que tenían que ser reconfiguradas físicamente para correr un programa diferente. Puesto que el término "CPU" es generalmente definido como un dispositivo de ejecución de software (programa de computadora), los primeros dispositivos que podían ser llamados correctamente como CPU vinieron con el advenimiento de la computadora con programa almacenado.
La idea de una computadora con programa almacenado ya estaba presente durante el diseño del ENIAC, pero fue omitida inicialmente para que la máquina pudiera ser terminada más pronto. El 30 de junio de 1945, antes de que el ENIAC incluso fuera terminado, el matemático John von Neumann distribuyó el trabajo titulado "Primer Borrador de un Reporte sobre el EDVAC". Este trabajo, cuya autoría principal hoy se les reconoce a John Presper Eckert y John William Mauchly,[1] esbozó el diseño de una computadora con programa almacenado que finalmente sería terminado en agosto de 1949 . El EDVAC fue diseñado para efectuar un número determinado de instrucciones (u operaciones) de varios tipos. Estas instrucciones podían combinarse para crear programas útiles para ser ejecutados por el EDVAC. Significativamente, los programas escritos para el EDVAC fueron almacenados en memoria de la computadora de alta velocidad en lugar de ser especificados por el cableado físico de la computadora. Esto superó una severa limitación del ENIAC, que era la gran cantidad de tiempo y esfuerzo que tomaba reconfigurar el computador para realizar una nueva tarea. Con el diseño de Eckert-Mauchly, el programa, o el software, que el EDVAC corría, podía ser reemplazado simplemente cambiando el contenido de la memoria del computador.[2]
Debe ser notado que mientras que von Neumann es acreditado más frecuentemente por el diseño del computador con programa almacenado debido a su diseño del EDVAC, otros antes de él, como Konrad Zuse, habían sugerido ideas similares. Además, la llamada arquitectura Harvard del Harvard Mark I, que fue terminada antes del EDVAC, también utilizó un diseño con programa almacenado empleando cinta de papel perforada en vez de memoria electrónica. La diferencia clave entre las arquitecturas de Eckert-Mauchly y la de Harvard es que la última separa el almacenamiento y el tratamiento de las instrucciones y de los datos del CPU, mientras que la primera usa el mismo espacio de memoria para ambos. La mayoría de los CPU modernos son diseños de Eckert-Mauchly en su mayor parte, pero también son vistos comúnmente elementos de la arquitectura de Harvard.
Siendo dispositivos digitales todos los CPU tratan con estados discretos, y por lo tanto requieren una cierta clase de elementos de conmutación para diferenciar y cambiar estos estados. Antes de la aceptación comercial del transistor, los relés eléctricos y los tubos de vacío (válvulas termoiónicas) eran usados comúnmente como elementos de conmutación. Aunque éstos tenían distintas ventajas de velocidad sobre los anteriores diseños puramente mecánicos, no eran fiables por varias razones. Por ejemplo, hacer circuitos de lógica secuencial de corriente directa requería hardware adicional para hacer frente al problema del rebote de contacto. Por otro lado, mientras que los tubos de vacío no sufren del rebote de contacto, éstos deben calentarse antes de llegar a estar completamente operacionales y eventualmente fallan y dejan de funcionar por completo.[3] Generalmente, cuando un tubo ha fallado, el CPU tendría que ser diagnosticado para localizar el componente que falla para que pueda ser reemplazado. Por lo tanto, los primeros computadores electrónicos, (basados en tubos de vacío), generalmente eran más rápidas pero menos confiables que las computadoras electromecánicas, (basadas en relés). Las computadoras de tubo, como el EDVAC, tendieron en tener un promedio de ocho horas entre fallas, mientras que las computadoras de relés, (anteriores y más lentas), como el Harvard Mark I, fallaban muy raramente . Al final, los CPU basados en tubo llegaron a ser dominantes porque las significativas ventajas de velocidad producidas generalmente pesaban más que los problemas de confiabilidad. La mayor parte de estos tempranos CPU síncronos corrían en frecuencias de reloj bajas comparadas con los modernos diseños microelectrónicos, (ver más abajo para una exposición sobre la frecuencia de reloj). Eran muy comunes en este tiempo las frecuencias de la señal del reloj con un rango desde 100 kHz hasta 4 MHz, limitado en gran parte por la velocidad de los dispositivos de conmutación con los que fueron construidos.


CPU de transistores y de circuitos integrados discretos

CPU, memoria de núcleo, e interface de bus externo de un MSI PDP-8/I.
La complejidad del diseño de los CPU se incrementó a medida que varias tecnologías facilitaron la construcción de dispositivos electrónicos más pequeños y confiables. La primera de esas mejoras vino con el advenimiento del transistor. Los CPU transistorizados durante los años 1950 y los años 1960 no tuvieron que ser construidos con elementos de conmutación abultados, no fiables, y frágiles, como los tubos de vacío y los relés eléctricos. Con esta mejora, fueron construidos CPUs más complejos y más confiables sobre una o varias tarjetas de circuito impreso que contenían componentes discretos (individuales).
Durante este período, ganó popularidad un método de fabricar muchos transistores en un espacio compacto. El circuito integrado (IC) permitió que una gran cantidad de transistores fueran fabricados en una simple oblea basada en semiconductor o "chip". Al principio, solamente circuitos digitales muy básicos, no especializados, como las puertas NOR fueron miniaturizados en ICs. Los CPU basadas en estos IC de "bloques de construcción" generalmente son referidos como dispositivos de pequeña escala de integración "small-scale integration" (SSI). Los circuitos integrados SSI, como los usados en el computador guía del Apollo (Apollo Guidance Computer), usualmente contenían transistores que se contaban en números de múltiplos de diez. Construir un CPU completo usando ICs SSI requería miles de chips individuales, pero todavía consumía mucho menos espacio y energía que diseños anteriores de transistores discretos. A medida que la tecnología microelectrónica avanzó, en los IC fue colocado un número creciente de transistores, disminuyendo así la cantidad de ICs individuales necesarios para un CPU completo. Los circuitos integrados MSI y el LSI (de mediana y gran escala de integración) aumentaron el número de transistores a cientos, y luego a miles.
En 1964, IBM introdujo su arquitectura de computador System/360, que fue usada en una serie de computadores que podían correr los mismos programas con velocidades y desempeños diferentes. Esto fue significativo en un tiempo en que la mayoría de las computadoras electrónicas eran incompatibles una con la otra, incluso las hechas por el mismo fabricante. Para facilitar esta mejora, IBM utilizó el concepto de microprograma, a menudo llamado "microcódigo", que todavía ve un uso extenso en los CPU modernos . La arquitectura System/360 era tan popular que dominó el mercado del mainframe por las siguientes décadas y dejó una herencia que todavía es continuada por computadores modernos similares como el IBM zSeries. En el mismo año de 1964, Digital Equipment Corporation (DEC) introdujo otro computador influyente dirigido a los mercados científicos y de investigación, el PDP-8. DEC introduciría más adelante la extremadamente popular línea del PDP-11, que originalmente fue construido con ICs SSI pero eventualmente fue implementado con componentes LSI cuando llegaron a ser prácticos. En fuerte contraste con sus precursores hechos con tecnología SSI y MSI, la primera implementación LSI del PDP-11 contuvo un CPU integrado por solamente cuatro circuitos integrados LSI .
Los computadores basados en transistores tenían varias ventajas distintas sobre sus predecesores. Aparte de facilitar una creciente confiabilidad y un más bajo consumo de energía, los transistores también permitían al CPU operar a velocidades mucho más altas debido al corto tiempo de conmutación de un transistor en comparación a un tubo o relé. Gracias tanto a la creciente confiabilidad como a la dramáticamente incrementada velocidad de los elementos de conmutación que por este tiempo eran casi exclusivamente transistores, fueron obtenidas frecuencias de reloj del CPU de decenas de megahertz. Además, mientras que los CPU de transistores discretos y circuitos integrados estaban en fuerte uso, comenzaron a aparecer los nuevos diseños de alto rendimiento como procesadores vectoriales SIMD (Single Instruction Multiple Data) (Simple Instrucción Múltiples Datos). Estos tempranos diseños experimentales dieron lugar más adelante a la era de los supercomputadoras especializados, como los hechos por Cray Inc.


Microprocesadores

Microprocesador Intel 80486DX2 en un paquete PGA de cerámica

Desde la introducción del primer microprocesador, el Intel 4004, en 1970, y del primer microprocesador ampliamente usado, el Intel 8080, en 1974. Esta clase de CPUs ha desplazado casi totalmente el resto de los métodos de implementación de la Unidad Central de Proceso. Los fabricantes de mainframes y minicomputadores de ese tiempo lanzaron programas de desarrollo de ICs propietarios para actualizar sus más viejas arquitecturas de computador, y eventualmente produjeron microprocesadores con conjuntos de instrucciones que eran compatibles hacia atrás con sus más viejos hardwares y softwares. Combinado con el advenimiento y el eventual vasto éxito del ahora ubicuo computadora personal, el término "CPU" es aplicado ahora casi exclusivamente a los microprocesadores.
Las generaciones previas de CPUs fueron implementadas como componentes discretos y numerosos circuitos integrados de pequeña escala de integración en una o más tarjetas de circuitos. Por otro lado, los microprocesadores son CPUs fabricados con un número muy pequeño de ICs; usualmente solo uno. El tamaño más pequeño del CPU, como resultado de estar implementado en una simple pastilla, significa tiempos de conmutación más rápidos debido a factores físicos como el decrecimiento de la capacitancia parásita de las puertas. Esto ha permitido que los microprocesadores síncronos tengan ratas de reloj con un rango de decenas de megahertz a varios gigahertz. Adicionalmente, como ha aumentado la capacidad de construir transistores excesivamente pequeños en un IC, la complejidad y el número de transistores en un simple CPU también se ha incrementado dramáticamente. Esta tendencia ampliamente observada es descrita por la ley de Moore, que ha demostrado hasta la fecha, ser una predicción bastante exacta del crecimiento de la complejidad de los CPU y otros ICs.
Mientras que, en los pasados sesenta años han cambiado drásticamente, la complejidad, el tamaño, la construcción, y la forma general del CPU, es notable que el diseño y el funcionamiento básico no ha cambiado demasiado. Casi todos los CPU comunes de hoy se pueden describir con precisión como máquinas de programa almacenado de Eckert-Mauchly.
A medida que la a mencionada ley del Moore continúa manteniéndose verdadera, se han presentado preocupaciones sobre los límites de la tecnología de transistor del circuito integrado. La miniaturización extrema de puertas electrónicas está causando los efectos de fenómenos que se vuelven mucho más significativos, como la electromigración, y el subumbral de pérdida. Estas más nuevas preocupaciones están entre los muchos factores que hacen a investigadores estudiar nuevos métodos de computación como la computadora cuántica, así como ampliar el uso de paralelismo, y otros métodos que extienden la utilidad del modelo clásico de Eckert-Mauchly.


Placa Base (Tarjeta Madre)






La placa base, placa madre, tarjeta madre o board (en inglés motherboard, mainboard) es la tarjeta de circuitos impresos de una computadora que sirve como medio de conexión entre el microprocesador, los circuitos electrónicos de soporte, las ranuras para conectar parte o toda la RAM del sistema, la ROM y las ranuras especiales (slots) que permiten la conexión de tarjetas adaptadoras adicionales. Estas tarjetas de expansión suelen realizar funciones de control de periféricos tales como monitores, impresoras, unidades de disco, etc.
Se diseña básicamente para realizar labores específicas vitales para el funcionamiento de la computadora, como por ejemplo las de:
Conexión física.
Administración, control y distribución de energía eléctrica.
Comunicación de datos.
Temporización.
Sincronismo.
Control y monitoreo.
Para que la placa base cumpla con su cometido, lleva instalado un software muy básico denominado <BIOS>.




Tipos de placas



A continuación se describen los tipos de placas más usuales.
XT (8.5 × 11" ó 216 × 279 mm)
AT (12 × 11"–13" ó 305 × 279–330 mm)
Baby-AT (8.5" × 10"–13" ó 216 mm × 254-330 mm)
ATX (Intel 1996; 12" × 9.6" ó 305 mm × 244 mm)
EATX (12" × 13" ó 305mm × 330 mm)
Mini-ATX (11.2" × 8.2" ó 284 mm × 208 mm)
microATX (1996; 9.6" × 9.6" ó 244 mm × 244 mm)
LPX (9" × 11"–13" ó 229 mm × 279–330 mm)
Mini-LPX (8"–9" × 10"–11" ó 203–229 mm × 254–279 mm)
NLX (Intel 1999; 8"–9" × 10"-13.6" ó 203–229 mm × 254–345 mm)
FlexATX (Intel 1999; 9.6" × 9.6" ó 244 × 244 mm max.)
Mini-ITX (VIA Technologies 2003; 6.7" × 6.7" ó 170 mm × 170 mm max.; 100W max.)
Nano-ITX (VIA Technologies 2004; 120 mm × 120 mm max.)
BTX (Intel 2004; 12.8" × 10.5" ó 325 mm × 267 mm max.)
MicroBTX (Intel 2004; 10.4" × 10.5" ó 264 mm × 267 mm max.)
PicoBTX (Intel 2004; 8.0" × 10.5" ó 203 mm × 267 mm max.)
WTX (Intel 1998; 14" × 16.75" ó 355.6 mm × 425.4 mm)
ETX y PC/104, utilizados en sistemas embebidos.

Formato de Placa AT
El factor de forma AT es el empleado por el IBM AT y sus clones en formato sobremesa completo y torre completo. Su tamaño es de 12 pulgadas (305 mm) de ancho x 11-13 pulgadas de profundo. Su gran tamaño dificultaba la introducción de nuevas unidades de disco. Además su conector con la fuente de alimentación inducía fácilmente al error siendo numerosos los casos de gente que freía la placa al conectar indebidamente los dos juegos de cables (contar con un código de color para situar 4 cables negros en la zona central). El conector de teclado es el mismo DIN 5 del IBM PC original. Actualmente están todas descatalogadas, excepto un par, que se encuentran en el museo de la informática.

Formato de Placa Baby AT



IBM presenta en 1985 el formato Baby AT, que es funcionalmente equivalente a la AT, pero significativamente menor : 8,5 pulgadas de ancho y de 10 a 13 pulgadas de profundo, su menor tamaño favorece las cajas más pequeñas y facilita la ampliación, por lo que toda la industria se vuelca en él abandonando el formato AT. No obstante sigue heredando los problemas de diseño del AT, con la multitud de cables que dificultan la ventilación (algo que se va volviendo más crítico a medida que sube la potencia de los microprocesadores) y con el micro alejado de la entrada de alimentación. Todo esto será resuelto por el formato ATX. Pero dado el gran parque existente de equipos en caja Baby AT, durante un tiempo se venderán placas Super Socket 7 (que soportan tanto los Pentium MMX como los AMD K6-2 y otros micros, hasta los 500 Mhz, e incluyen slot AGP) en formato Baby AT pero con ambos conectores de fuente de alimentación (AT y ATX). Las cajas ATX, incluso hoy, soportan en sus ranuras el formato Baby AT. Siempre y cuando se contenga la tarjeta indicada.

Formato de Placa ATX



El formato ATX (siglas de Advanced Technology Extended') es presentado por Intel en 1995. con un tamaño de 12 pulgadas de ancho por 9,6 pulgadas de profundo, en este nuevo formato se resuelven todos los inconvenientes que perjudicaron a la ya mencionada placa. Los puertos más habituales (impresora Centronics, RS-232 en formato DE-9, la toma de joystick/midi DA-15 y de tarjeta de sonido, los puertos USB y RJ-45 (para red a 100) y en algunos casos incluso la salida de monitor VGA, se agrupan en el lado opuesto a los slots de ampliación. El puerto DIN 5 de teclado es sustituido por las tomas PS/2 de teclado y mouse (llamadas así por introducirlas IBM en su gama de computadoras PS/2 y rápidamente adoptada por todos los grandes fabricantes) y situados en el mismo bloque. Todo esto conlleva el que muchas tarjetas necesarias se integren en la placa madre, abaratando costos y mejorando la ventilación. Inmediatamente detrás se sitúa el zócalo o slot de procesador y las fijaciones del ventilador (que al estar más próxima a la fuente de alimentación y su ventilador, actúa más eficientemente), justo al lado de la nueva conexión de fuente de alimentación (que elimina el quemado accidental de la placa). Tras él vienen los slots de memoria RAM y justo detrás los conectores de las controladoras IDE, SCSI (principalmente en servidores y placas de gama alta) y de controladora de disquete, justo al lado de las bahías de disco de la caja (lo que reduce los cables)
La nueva fuente, además del interruptor físico de corriente como en la AT, tiene un modo de apagado similar al de los electrodomésticos de consumo, alimentando a la placa con una pequeña corriente que permite que responda a eventos (como una señal por la red o un mando a distancia) encendiéndose o, si se ha habilitado el modo de hibernado heredado de los portátiles, restablecer el trabajo en el punto donde se dejó.

Formato de Placa microATX



El formato microATX (también conocida como µATX) es un formato de placa base pequeño con un tamaño máximo de 9,6 x 9,6 pulgadas (244 mm x 244 mm) empleada principalmente en cajas tipo cubo y SFF. Debido a sus dimensiones sólo tiene sitio para 1 ó 2 slots PCI y/o AGP, por lo que suelen incorporar puertos FireWire y USB 2 en abundancia (para permitir conectar unidades externas y regrabadoras de DVD). Es la más moderna de todas y sus prestaciones son impresionantes. Al comienzo de la comercialización de la placa daba fallos (bugs) al conectar componentes a los puertos USB, aunque esto se solucionó de manera efectiva en posteriores modelos.
Especificaciones de microATX (PDF)

Componentes de la placa base [editar]
Socket
Zócalo de memoria
Chipset (Northbridge y Southbridge)
Slot
Conector AT
Conector ATX
Conector ATX 2.0
Conector ATX12V
ROM bios
RAM CMOS
IDE
Conector Fdc
Panel frontal
Pila
Cristal de cuarzo
PS/2 (mouse y teclado)
USB
COM1
LPT1
GAME
GAMEII
sw1
sw2
sw3

Memoria






Memoria, también llamada memoria de computadora, se refiere a componentes de una computadora, dispositivos y medios de grabación que retienen datos informáticos durante algún intervalo de tiempo. Las memorias de computadora proporcionan una de las principales funciones de la computación moderna, la retención de información. Es uno de los componentes fundamentales de todas las computadoras modernas que, acoplados a una Unidad Central de Proceso (CPU por su acrónimo en inglés, Central Processing Unit), implementa lo fundamental del modelo de computadora de Von Neumann, usado desde los años 1940.
En la actualidad, memoria suele referirse a una forma de almacenamiento de estado sólido conocido como Memoria RAM (memoria de acceso aleatorio, RAM por sus siglas en inglés Random Access Memory) y otras veces se refiere a otras formas de almacenamiento rápido pero temporal. De forma similar, se refiere a formas de almacenamiento masivo como Discos ópticos y tipos de almacenamiento magnético como discos duros y otros tipos de almacenamiento más lentos que las memorias RAM, pero de naturaleza más permanente. Estas distinciones contemporáneas son de ayuda porque son fundamentales para la arquitectura de computadores en general.
Además, se refleja una diferencia técnica importante y significativa entre memoria y dispositivos de almacenamiento masivo, que se ha ido diluyendo por el uso histórico de los términos "almacenamiento primario" (a veces "almacenamiento principal"), para memorias de acceso aleatorio, y "almacenamiento secundario" para dispositivos de almacenamiento masivo. Esto se explica en las siguientes secciones, en las que el término tradicional "almacenamiento" se usa como subtítulo por conveniencia.



Propósitos del almacenamiento
Los componentes fundamentales de las computadoras de propósito general son la unidad aritmético-lógica, la unidad de control, espacio de almacenamiento y los dispositivos de entrada/salida. Si se elimina el almacenamiento, el aparato sería una simple calculadora en lugar de un computadora. La habilidad para almacenar las instrucciones que forman un programa de computadora y la información que manipulan las instrucciones es lo que hace versátiles a las computadoras diseñadas según la arquitectura de programas almacenados
Una computadora digital representa toda la información usando el sistema binario. Texto, números, imágenes, sonido y casi cualquier otra forma de información puede ser transformada en una sucesión de bits, o dígitos binarios, cada uno de los cuales tiene un valor de 1 ó 0. La unidad de almacenamiento más común es el byte, igual a 8 bits. Una determinada información puede ser manipulada por cualquier computadora cuyo espacio de almacenamiento es suficientemente grande como para que quepa el dato correspondiente o la representación binaria de la información. Por ejemplo, una computadora con un espacio de almacenamiento de ocho millones de bits, o un megabyte, puede ser usado para editar una novela pequeña.
Se han inventado varias formas de almacenamiento basadas en diversos fenómenos naturales. No existen ningún medio de almacenamiento de uso práctico universal y todas las formas de almacenamiento tienen sus desventajas. Por tanto, un sistema informático contiene varios tipos de almacenamiento, cada uno con su propósito individual, como se muestra en el diagrama.



Almacenamiento primario



La memoria primaria está directamente conectada a la unidad central de proceso de la computadora. Debe estar presente para que la CPU funcione correctamente. El almacenamiento primario consiste en tres tipos de almacenamiento:
Los registros del procesador son internos de la unidad central de proceso. Contienen información que las unidades aritmético-lógicas necesitan llevar a la instrucción en ejecución. Técnicamente, son los más rápidos de los almacenamientos de la computadora, siendo transistores de conmutación integrados en el chip de silicio de la CPU que funcionan como "flip-flop" electrónicos.
La memoria caché es un tipo especial de memoria interna usada en muchas unidades centrales de proceso para mejorar su eficiencia o rendimiento. 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. También es de uso común la memoria caché multi-nivel - la "caché primaria" que es más pequeña, rápida y cercana al dispositivo de procesamiento; la "caché secundaria" que es más grande y lenta, pero más rápida y mucho más pequeña que la memoria principal.
La memoria principal contiene los programas en ejecución y los datos con que operan. La unidad aritmético-lógica puede transferir información muy rápidamente entre un registro del procesador y localizaciones del almacenamiento principal, también conocidas como "direcciones de memoria". 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 un "bus de memoria" (como se ve en el diafragma) y de un "bus de datos". Al bus de memoria también se le llama bus de dirección o bus frontal, (Front Side Bus) y ambos buses son "superautopistas" digitales de alta velocidad. Los métodos de acceso y la velocidad son dos de las diferencias técnicas fundamentales entre memoria y dispositivos de almacenamiento masivo. (Nótese que, con el tiempo, los avances tecnológicos harán que se superen todos los tamaños y capacidades de almacenamiento mostrados en el diagrama).

Almacenamiento secundario, terciario y fuera de línea
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. Sin embargo, la mayoría de los sistemas operativos usan los dispositivos de almacenamiento secundario como área de intercambio para incrementar artificialmente la cantidad aparente de memoria principal en la computadora. La memoria secundaria también se llama "de almacenamiento masivo".
Habitualmente, la memoria secundaria o de almacenamiento masivo tien mayor capacidad que la memoria primaria, pero es mucho más lenta. En las computadoras modernas, los discos duros suelen usarse como dispositivos de almacenamiento masivo. El tiempo necesario para acceder a un byte de información dado almacenado en un disco duro es de unas milésimas de segundo (milisegundos). En cambio, el tiempo para acceder al mismo tipo de información en una memoria de acceso aleatorio se mide en mil-millonésimas de segundo (nanosegundos).
Esto ilustra cuan significativa es la diferencia entre la velocidad de las memorias de estado sólido y la velocidad de los dispositivos rotantes de almacenamiento magnético u óptico: los discos duros son del orden de un millón de veces más lentos que la memoria (primaria). Los dispositivos rotantes de almacenamiento óptico (unidades de CD y DVD) son incluso más lentos que los discos duros, aunque es probable que su velocidad de acceso mejore con los avances tecnológicos.
Por lo tanto, el uso de la memoria virtual, que es cerca de millón de veces más lenta que memoria “verdadera”, ralentiza apreciablemente el funcionamiento de cualquier computadora. Muchos sistemas operativos implementan la memoria virtual usando términos como memoria virtual o "fichero de caché". La principal ventaja histórica de la memoria virtual es el precio; la meoria virtual resultaba mucho más barata que la memoria real. Esa ventaja es menos relevante hoy en día. Aun así, muchos sistemas operativos siguen implementándola, a pesar de provocar un funcionamiento significativamente más lento.
La memoria terciaria es un sistema en el que un brazo robótico montará (conectará) o desmontará (desconectará) un medio de almacenamiento masivo fuera de línea (ver siguiente punto) según lo solicite el sistema operativo de 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 normales nunca ven de primera mano.
El almacenamiento fuera de línea 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 en caliente. 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.

Almacenamiento de red
El almacenamiento de red es cualquier tipo de almacenamiento de computadora que incluye el hecho de acceder a una 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:
El almacenamiento asociado a red es una memoria secundaria o terciaria que reside en una computadora a la que otra de éstas puede acceder a través de una red de área local, una red de área extensa, una red privada virtual o, en el caso de almacenamientos de archivos en línea, internet.
Las redes de computadoras son computadoras que no contienen dispositivos de almacenamiento secundario. En su lugar, los documentos y otros datos son almacenados en un dispositivo de la red.

Características de las memorias



La división entre primario, secundario, terciario, fuera de línea se basa en la jerarquía de memoria o distancia desde la unidad central de proceso. Hay otras formas de caracterizar a los distintos tipos de memoria.

Volatilidad de la información
La memoria volátil requiere energía constante para mantener la información almacenada. La memoria volátil se suele usar sólo en memorias primarias.
La memoria no volátil retendrá la información almacenada incluso si no recibe corriente eléctrica constantemente. Se usa para almacenamientos a largo plazo y, por tanto, se usa en memorias secundarias, terciarias y fuera de línea.
Memoria dinámica es una memoria volátil que además requiere que periódicamente se refresque la información almacenada, o leída y reescrita sin modificaciones.

Habilidad para acceder a información no contigua Acceso aleatorio significa que se puede acceder a cualquier localización de la memoria en cualquier momento en el mismo intervalo de tiempo, normalmente pequeño.
Acceso secuencial significa que acceder a una unidad de información tomará un intervalo de tiempo variable, dependiendo de la unidad de información que fue leída anteriormente. El dispositivo puede necesitar buscar (posicionar correctamente el cabezal de lectura/escritura de un disco), o dar vueltas (esperando a que la posición adecuada aparezca debajo del cabezal de lectura/escritura en un medio que gira continuamente).

Habilidad para cambiar la información
Las memorias de lectura/escritura o memorias cambiables permiten que la información se reescriba en cualquier momento. Una computadora sin algo de memoria de lectura/escritura como memoria principal sería inútil para muchas tareas. Las computadora modernas también usan habitualmente memorias de lectura/escritura como memoria secundaria.
La memorias de sólo lectura retienen la información almacenada en el momento de fabricarse y la memoria de escritura única (WORM) permite que la información se escriba una sola vez en algún momento tras la fabricación. También están las memorias inmutables, que se utilizan en memorias terciarias y fuera de línea. Un ejemplo son los CD-ROMs.
Las memorias de escritura lenta y lectura rápida son memorias de lectura/escritura que permite que la información se reescriba múltiples veces pero con una velocidad de escritura mucho menor que la de lectura. Un ejemplo son los CD-RW.

Direccionalidad de la información En la memoria de localización direccionable, cada unidad de información accesible individualmente en la memoria se selecciona con su dirección de memoria numérica. En las computadoras modernas, la memoria de localización direccionable se suele limitar a memorias primarias, que se leen internamente por programas de computadora ya que la localización direccionable es muy eficiente, pero difícil de usar para los humanos.
En las memorias de sistema de archivos, la información se divide en Archivos informáticos de longitud variable y un fichero concreto se localiza en directorios y nombres de archivos "legible por humanos". El dispositivo subyacente sigue siendo de localización direccionable, pero el sistema operativo de la computadora proporciona la abstracción del sistema de archivos para que la operación sea más entendible. En las computadora modernas, las memorias secundarias, terciarias y fuera de línea usan sistemas de archivos.
En las memorias de contenido direccionable (content-addressable memory), cada unidad de información legible individualmente se selecciona con una valor hash o un identificador corto sin relación con la dirección de memoria en la que se almacena la información. La memoria de contenido direccionable pueden construirse usando software o hardware; la opción hardware es la opción más rápida y cara.

Capacidad de memoria
Memorias de mayor capacidad son el resultado de la rápida evolución en tecnología de materiales semiconductores. Los primeros programas de ajedrez funcionaban en máquinas que utilizaban memorias de base magnética. A inicios de 1970 aparecen las memorias realizadas a base de semiconductores, como las utilizadas en la serie de computadoras IBM 370.
La velocidad de los computadores se incrementó, multipliada por 100.000 aproximadamente y la capacidad de memoria creció en una proporción similar. Este hecho es particularmente importante para los programas que utilizan tablas de transposición: a medida que aumenta la velocidad de la computadora se necesitan memorias de capacidad proporcionalmente mayor para mantener la cantidad extra de posiciones que el program está buscando.
Se espera que la capacidad de procesadores siga aumentando en los próximos años; no es un abuso pensar que la capacidad de memoria continuará creciendo de manera impresionante. Memorias de mayor capacidad podrán ser utilizadas por programas con tablas de Hash de mayor envergadura, las cuales mantendrán la información en forma permanente.
Minicomputadoras: se caracterizan por tener una configuración básica regular que puede estar compuesta por un monitor, unidades de disquete, disco, impresora, etc. Su capacidad de memoria varía de 16 a 256 kbytes.
Macrocomputadoras: son aquellas que dentro de su configuración básica contienen unidades que proveen de capacidad masiva de información, terminales (monitores), etc. Su capacidad de memoria varía desde 256 a 512 kbytes, también puede tener varios megabytes o hasta gigabytes según las necesidades de la empresa.
Microcomputadores y computadoras personales: con el avance de la microelectrónica en la década de los 70 resultaba posible incluir todos los componente del procesador central de una computadora en un solo circuito integrado llamado microprocesador. Esta fue la base de creación de una computadoras a las que se les llamó microcomputadoras. El origen de las microcomputadoras tuvo lugar en los Estados Unidos a partir de la comercialización de los primeros microprocesadores (INTEL 8008, 8080). En la década de los 80 comenzó la verdadera explosión masiva, de los ordenadores personales (Personal Computer PC) de IBM. Esta máquina, basada en el microprocesador INTEL 8008, tenía características interesantes que hacían más amplio su campo de operaciones, sobre todo porque su nuevo sistema operativo estandarizado (MS-DOS, Microsoft Disk Operating Sistem) y una mejro resolución óptica, la hacían más atractiva y fácil de usar. El ordenador personal ha pasado por varias transformaciones y mejoras que se conocen como XT(Tecnología Extendida), AT(Tecnología Avanzada) y PS/2.

Tecnologías, dispositivos y medios
Memorias Magnéticas
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 y debe buscar, dar vueltas o las dos cosas. En computadora modernas, la superficie magnética será de alguno de estos tipos:
Disco magnético
Disquete, usado para memoria fuera de línea
Disco duro, usado para memoria secundario
Cinta magnética, usada para memoria terciaria y fuera de línea.
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 burbuja. Además, a diferencia de hoy, las cintas magnéticas se solían usar como memoria secundaria.

Memoria de semiconductor
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. 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.

Memorias de disco óptico
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 laser y observando la reflexión. Los discos ópticos son no volátil y de acceso secuencial. Los siguientes formatos son de uso común:
CD, CD-ROM, DVD: Memorias de simplemente solo lectura, usada par distribución masiva de información digital (música, vídeo, programas informáticos).
CD-R, DVD-R, DVD+R: Memorias de escritura única usada como memoria terciaria y fuera de línea.
CD-RW, DVD-RW, DVD+RW, DVD-RAM: Memoria de escritura lenta y lectura rápida usada como memoria terciaria y fuera de línea.
Blu-ray: Formato de disco óptico pensado para almacenar vídeo de alta calidad y datos. Para su desarrollo se creó la BDA, en la que se encuentran, entre otros, Sony o Phillips.
HD DVD
Se han propuesto los siguientes formatos:
HVD
Discos cambio de fase Dual

Memorias de discos magneto ópticos
Las Memorias de disco magneto óptico son un disco 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átil, de acceso secuencial, de escritura lenta y lectura rápida. Se usa como memoria terciaria y fuera de línea.

Otros métodos iniciales
La cinta de papel y las tarjetas perforadas se usaron para almacenar información para procesamiento automático desde los 1980s, mucho antes de que existieran las computadoras de propósito general. La información se grababa 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 Selectron 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.

Otros métodos propuestos
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.