Documente Academic
Documente Profesional
Documente Cultură
Historia[editar]
Las primeras máquinas de computación tenían programas fijos. Algunos equipos muy simples
siguen utilizando este diseño, ya sea por motivos de simplificación o de formación. Por
ejemplo, una calculadora de escritorio es (en principio) una computadora de programa fijo. En
ella, se pueden hacer matemáticas básicas, pero no puede ser utilizada como procesador de
texto o consola de juegos. Cambiar el programa de una máquina de programa fijo requiere re
cablear, reestructurar, o re diseñar la máquina. Las primeras computadoras no eran tanto
"programadas" ya que fueron "diseñadas"."Reprogramar" cuando era posible, era un proceso
laborioso que comenzaba con diagramas de flujo y notas de papel, seguido de diseños
detallados de ingeniería y luego el muchas veces arduo proceso de recablear físicamente y
reconstruir la máquina. Podía tomar hasta tres semanas preparar un programa de ENIAC y
conseguir que funcionara.4
Esa situación cambió con la propuesta de la computadora con programa almacenado. Una
computadora de programa almacenado incluye, por diseño, un conjunto de instrucciones y
puede almacenar en la memoria un conjunto de instrucciones (un programa) que detalla
la computación.
Un diseño de programa almacenado también permite un código mutante. Una primera
motivación para una instalación de este tipo fue la necesidad de que un programa incremente
o modifique de otro modo la porción de dirección de instrucciones, lo cual, en los primeros
diseños, tenía que hacerse manualmente. Esto llegó a ser menos importante cuando
los registros índice y modos de direccionamiento se convirtieron en características habituales
de la arquitectura de la máquina. Otro uso fue para incrustar datos frecuentemente usados en
el flujo de instrucciones utilizando direccionamiento inmediato. El código mutante ha caído en
gran parte en desuso, ya que suele ser difícil de entender y de depurar, además de ser
ineficiente, en favor de los regímenes de los modernos procesadores pipelines y del
almacenamiento en caché.
A gran escala, la capacidad para tratar a las instrucciones de la misma forma que si fueran
datos es lo que hacen los ensambladores, compiladores, enlazadores, cargadores, y otras
posibles herramientas automáticas de programación. Se puede "escribir programas que
escriban programas". En una escala menor, las intensivas operaciones repetitivas de E/S –
como los primeros manipuladores de imágenes BitBLT o los sombreadores de píxeles y
vértices en los gráficos 3D modernos–, se consideraron ineficaces al funcionar sin necesidad
de hardware personalizado. Estas operaciones podrían acelerarse en los procesadores de
propósito general con tecnología de "compilación mosca" ("compilación en tiempo de
ejecución"), por ejemplo, programas de código generado, una forma de código
automodificable que ha mantenido popularidad.
Hay algunas desventajas para el diseño de von Neumann. Aparte del cuello de botella de von
Neumann descrito a continuación, las modificaciones del programa pueden ser muy
perjudiciales, ya sea por accidente o por diseño. En algunos diseños simples de computadora
con programa almacenado, un programa que no funcione correctamente puede dañarse,
dañar a otros programas, o inclusive al sistema operativo, lo que puede dar lugar a un
desplome o crash de la computadora. Normalmente, la protección de memoria y otras formas
de control de acceso pueden proteger tanto de modificaciones accidentales como de
programas maliciosos.
En el mismo momento en que el informe "Primer Borrador" fue distribuido, Turing desarrolló un
informe técnico detallado, Proposed Electronic Calculator, que describe en detalle la ingeniería
y la programación, su idea de una máquina que fue llamada la Automatic Computing Engine
(ACE).9 Presentó éste al Laboratorio Nacional de Física Británico el 19 de febrero de 1946. A
pesar de que Turing sabía por su experiencia de guerra en el Parque Bletchley que su
propuesta era factible, el secretismo mantenido durante muchas décadas acerca de los
ordenadores Colossus le impidió manifestarlo. Se produjeron varias implementaciones del
diseño ACE de forma exitosa.
Los trabajos tanto de von Neumann como de Turing, describían computadoras de programas
almacenados, pero al ser anterior el artículo de von Neumann, consiguió mayor circulación y
repercusión, así que la arquitectura de computadoras que esbozó adquirió el nombre de
"arquitectura von Neumann". En la publicación de 1953 Faster than Thought: A Symposium on
Digital Computing Machines (Más rápido que el pensamiento: Un Simposio sobre Máquinas
informáticas digitales -editado por BV Bowden-), una sección en el capítulo sobre Computers
in America (Computadoras en América) dice lo siguiente:10
La Máquina del Instituto de Estudios Avanzados, Princeton
En 1945, el profesor J. von Neumann, que en ese entonces trabajaba en la Escuela Moore de
Ingeniería en Filadelfia, donde se había construido el ENIAC, emitido en nombre de un grupo
de sus compañeros de trabajo un informe sobre el diseño lógico de las computadoras
digitales. El informe contenía una propuesta bastante detallada para el diseño de la máquina
que, desde entonces, se conoce como la EDVAC (computadora de retardo variable discreta).
Esta máquina ha sido recientemente completada en América, pero el informe von Neumann
inspiró la construcción de la EDSAC (calculadora automática de almacenamiento electrónico
de retardo) en Cambridge (véase página 130).
En 1947, Burks, Goldstine y von Neumann publicaron un informe en el que describen el diseño
de otro tipo de máquina (una máquina paralela en este momento) que debería ser muy rápida,
capaz de hacer 20 000 operaciones por segundo. Señalaron que el problema persistente en la
construcción de tal máquina estaba en el desarrollo de una memoria adecuada, todos los
contenidos de los cuales fueron instantáneamente accesibles, y al principio se sugirió el uso
de un tubo especial –llamado Selectron– que había sido inventado por los laboratorios de
Princeton de la RCA. Estos tubos son caros y difíciles para fabricar, así Von Neumman decidió
construir una máquina basada en la memoria de Williams. Esa máquina que se completó en
junio de 1952 en Princeton se ha conocido como MANIAC I. El diseño de esta máquina que ha
sido inspirado de una docena o más de máquinas que están actualmente en construcción en
América.
En el mismo libro, los dos primeros párrafos de un capítulo sobre ACE dicen lo siguiente:11
Cálculo automático en el laboratorio nacional de física
Uno de los equipos digitales más modernos que incorpora novedades y mejoras en la técnica
de la computación electrónica ha sido demostrado en el Laboratorio Nacional de Física,
Teddington, donde ha sido diseñado y construido por un pequeño equipo de matemáticos e
ingenieros electrónicos investigadores sobre el personal del laboratorio, asistido por ingenieros
de producción de la compañía eléctrica inglesa. El equipo construido hasta ahora en el
laboratorio es solo el modelo piloto de muchas instalaciones muy grandes que se va a conocer
como el motor de cálculo automático, pero aunque es relativamente pequeño en volumen y
contiene solo 800 válvulas termoiónicas, es una máquina de cálculo muy rápido y versátil.
Los conceptos básicos y principios abstractos de la computación por una máquina fueron
formuladas por el Dr A. M. Turing, en un papel1 leído ante la Sociedad Matemática de Londres
en 1936, pero el trabajo en dichas máquinas en el Reino Unido se retrasó por la guerra. En
1945, se hizo una revisión al problema en el laboratorio nacional de Física por el profesor J. R.
Womersley. Se le adjuntó al Dr. Turing un pequeño equipo de especialistas, y en 1947 la
planificación preliminar fue lo suficientemente avanzada como para justificar el establecimiento
del grupo especial ya mencionado. En abril de 1948, estos últimos pasaron a estar en la
sección de electrónica del laboratorio, bajo el cargo del Sr. F. M. Colebrook.
Definición formal[editar]
Las computadoras son máquinas de arquitectura von Neumann cuando:
1. Tanto los programas como los datos se almacenan en una memoria en común. Esto
hace posible la ejecución de comandos de la misma forma que los datos.
2. Cada celda de memoria de la máquina se identifica con un número único,
llamado dirección.
3. Las diferentes partes de la información (los comandos y los datos) tienen diferente
modos de uso, pero la estructura no se representa en memoria de manera codificada.
4. Cada programa se ejecuta de forma secuencial que, en el caso de que no haya
instrucciones especiales, comienza con la primera instrucción. Para cambiar esta
secuencia se utiliza el comando de control de transferencia.
La IBM SSEC tenía la capacidad para tratar instrucciones como datos, y se demostró
públicamente el 27 de enero de 1948. Esta capacidad fue reivindicada en una patente
estadounidense.14 Sin embargo, fue parcialmente electromecánica, no totalmente
electrónica. En la práctica, las instrucciones eran leídas desde una cinta de papel debido a
su memoria limitada.15
La Manchester SSEM (la bebé) fue la primera computadora completamente electrónica
que ejecutaba un programa almacenado. Se corrió un programa de factoraje durante 52
minutos el 21 junio de 1948, después de ejecutar un simple programa de división y un
programa para demostrar que dos números eran primos entre sí.
La ENIAC fue modificada para funcionar como un computador primitivo con programa
almacenado de solo lectura (usando la tabla de funciones de programa ROM) y se
demostró como tal el 16 de septiembre de 1948, ejecutando un programa de Adele
Goldstine para von Neumann.
La BINAC corrió algunos programas de prueba en febrero, marzo y abril de 1949, aunque
no se terminó hasta septiembre de 1949.
La Manchester Mark I desarrollada basada en el proyecto SSEM. En abril de 1949, con el
fin de para ejecutar programas, se hizo disponible una versión intermedia de la Mark 1,
pero no se terminó hasta octubre de 1949.
La EDSAC corrió su primer programa el 6 de mayo de 1949.
La EDVAC fue presentada en agosto de 1949, pero tuvo problemas que la mantuvieron
fuera de su puesta en funcionamiento regular hasta 1951.
La CSIR Mark I corrió su primer programa en noviembre de 1949.
La SEAC fue demostrada en abril de 1950.
La Pilot ACE corrió su primer programa el 10 de mayo 1950 y fue demostrada en
diciembre de 1950
La SWAC se completó en julio de 1950.
La Computadora Whirlwind se completó en diciembre de 1950 y estuvo en uso real en
abril de 1951.
La ERA 1101 (más tarde la ERA 1101/UNIVAC 1101 comercial) se instaló en diciembre de
1950.
Evolución[editar]
A lo largo de las décadas de los años 1960 y 1970, las computadoras se hicieron, en general,
tanto más pequeñas como rápidas, lo que llevó a algunas evoluciones en su arquitectura. Por
ejemplo, el mapeado en memoria de E/S permitió que los dispositivos de entrada y salida
fueran tratados de la misma como la memoria.16 Un único bus de sistema podría ser utilizado
para proporcionar un sistema modular con un menor coste. A veces esto se denomina
"racionalización" de la arquitectura.17 En las décadas siguientes,
los microcontroladores sencillos permitirían algunas veces omitir características del modelo a
menor costo y tamaño. Las computadoras más grandes añadían características para un mayor
rendimiento.
El problema de rendimiento puede ser aliviado (hasta cierto punto) utilizando diversos
mecanismos. Ofreciendo una memoria caché entre la CPU y la memoria principal,
proporcionando cachés separadas o vías de acceso independientes para datos e
instrucciones (la llamada arquitectura Harvard modificada), utilizando algoritmos y lógica
de predictor de saltos y proporcionando una limitada pila de CPU u otro en el chip de memoria
reutilizable para reducir el acceso a memoria, son cuatro de las maneras que se dispone para
aumentar el rendimiento. El problema también se puede eludir, en cierta medida,
usando computación paralela, utilizando por ejemplo la arquitectura de acceso a memoria no
uniforme (NUMA), —este enfoque es comúnmente empleado por las supercomputadoras.
Está menos claro si el cuello de botella intelectual que criticaba Backus ha cambiado mucho
desde 1977. La solución que propuso Backus no ha tenido influencia importante.[cita requerida] La
moderna programación funcional y la programación orientada a objetos se preocupan mucho
menos de "empujar un gran número de palabras hacia un lado a otro" que los lenguajes
anteriores como era Fortran, pero internamente, esto sigue siendo lo que las computadoras
pasan gran parte del tiempo haciendo, incluso las supercomputadoras altamente paralelas.
A partir de 1996, un estudio de referencia de base de datos se encontró que tres de cada
cuatro ciclos de CPU se dedican a la espera de memoria. Los investigadores esperan que el
aumento del número de instrucciones simultáneas arroye con el multihilo o
el multiprocesamiento de un solo chip hará que este cuello de botella aún peor. 20