Anda di halaman 1dari 40

Arquitectura de von Neumann

Diagrama de la arquitectura Von Neumann.

La arquitectura de von Neumann es una familia de arquitecturas de computadoras que utilizan el mismo dispositivo de almacenamiento tanto para las instrucciones como para los datos (a diferencia de la arquitectura Harvard). La mayora de computadoras modernas estn basadas en esta arquitectura, aunque pueden incluir otros dispositivos adicionales, (por ejemplo, para gestionar las interrupciones de dispositivos externos como ratn, teclado, etc).
Contenido
[ocultar]

1 Origen 2 Organizacin 3 Origen de trmino Arquitectura Von Neumann 4 Desarrollo del concepto de programa almacenado 5 Descripcin del concepto de programa almacenado 6 Cuello de botella de Von Neumann (Von Neumann bottleneck) 7 Primeros ordenadores basados en arquitecturas von Neumann 8 Primeros ordenadores de programa almacenado 9 Vase tambin 10 Referencias

[editar]Origen
El nacimiento u origen de la arquitectura Von Neumann surge a raz de una colaboracin en el proyecto ENIAC del matemtico de origen hngaro, John Von Neumann. Este trabajaba en 1945 en el Laboratorio Nacional Los lamos cuando se encontr con uno de los constructores de la ENIAC. Compaero de Albert Einstein, Kurt Gdel y Alan Turing en Princeton, Von Neumann se interes por el problema de la necesidad de recablear la mquina para cada nueva tarea. En 1949 haba encontrado y desarrollado la solucin a este problema, consistente en poner la informacin sobre las operaciones a realizar en la misma memoria utilizada para los datos, escribindola de la misma forma, es decir en cdigo binario. Su "EDVAC" fue el modelo de las computadoras de este tipo construidas a continuacin. Se habla desde entonces de laarquitectura de Von Neumann, aunque tambin dise otras formas de construccin. El primer computador comercial construido en esta forma fue el UNIVAC I, fabricado en 1951 por la Sperry-Rand Corporation y comprado por la Oficina del Censo de Estados Unidos.

[editar]Organizacin
Los ordenadores con esta arquitectura constan de cinco partes: La unidad aritmtico-lgica o ALU, la unidad de control, la memoria, un dispositivo de entrada/salida y el bus de datos que proporciona un medio de transporte de los datos entre las distintas partes. Un ordenador con esta arquitectura realiza o emula los siguientes pasos secuencialmente: 1. Enciende el ordenador y obtiene la siguiente instruccin desde la memoria en la direccin indicada por el contador de programa y la guarda en el registro de instruccin. 2. Aumenta el contador de programa en la longitud de la instruccin para apuntar a la siguiente. 3. Decodifica la instruccin mediante la unidad de control. sta se encarga de coordinar el resto de componentes del ordenador para realizar una funcin determinada. 4. Se ejecuta la instruccin. sta puede cambiar el valor del contador del programa, permitiendo as operaciones repetitivas. El contador puede cambiar tambin cuando se cumpla una cierta condicin aritmtica, haciendo que el ordenador pueda 'tomar decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmtica y lgica anteriores.

[editar]Origen

de trmino Arquitectura Von Neumann

El trmino arquitectura de von Neumann se acu a partir del memorando First Draft of a Report on the EDVAC (1945) escrito por el conocido matemtico John von Neumann en el que se propona el concepto de programa almacenado. Dicho documento fue redactado en vistas a la construccin del sucesor de la computadora ENIAC y su contenido fue desarrollado por John Presper Eckert, John

William Mauchly, Arthur Burks y otros durante varios meses antes de que von Neumann redactara el borrador del informe. Es por ello que otros tecnlogos como David A. Patterson y John L. Hennessy promueven la sustitucin de este trmino por el de arquitectura Eckert-Mauchly.1

[editar]Desarrollo

del concepto de programa almacenado

El matemtico Alan Turing, quien haba sido alertado de un problema de lgica matemtica por las lecciones de Max Newman en la Universidad de Cambridge, escribi un artculo en 1936titulado On Computable Numbers, with an Application to the Entscheidungs problem, que fue publicado en los Proceedings of the London Mathematical Society. En l describa una mquina hipottica que llam mquina computadora universal, y que ahora es conocida como la Mquina de Turing. La mquina hipottica tena un almacenamiento infinito (memoria en la terminologa actual) que contena tanto las instrucciones como los datos. El ingeniero alemn Konrad Zuse escribi de forma independiente sobre este concepto en 1936. Von Neumann conoci a Turing cuando ejerca de profesor sustituto en Cambridge en 1935 y tambin durante el ao que Turing pas en la Universidad de Princeton en 193637. Cundo supo del artculo de 1936 de Turing no est claro. Independientemente, J. Presper Eckert y John Mauchly, quienes estaban desarrollando el ENIAC en la Escuela Moore de Ingeniera Elctrica en la Universidad de Pennsylvania, escribieron sobre el concepto de programa almacenado en diciembre de 1943. Mientras diseaba una nueva mquina, EDVAC, Eckert escribi en enero de 1944 que se almacenaran datos y programas en un nuevo dispositivo de memoria direccionable, una lnea de retardo de mercurio. Esta fue la primera vez que se propuso la construccin de un programa almacenado prctico. Por esas fechas, no tenan conocimiento del trabajo de Turing. Von Neumann estaba involucrado en el Proyecto Manhattan en el Laboratorio Nacional Los Alamos, el cual requera ingentes cantidades de clculos. Esto le condujo al proyecto ENIAC, en verano de 1944. All se incorpor a los debates sobre el diseo de un ordenador con programas almacenados, el EDVAC. Como parte del grupo, se ofreci voluntario a escribir una descripcin de l. El trmino von Neumann architecture surgi del primer artculo de von Neumann: First Draft of a Report on the EDVAC, fechado el 30 de junio de 1945, el cual inclua ideas de Eckert y Mauchly. Estaba inconcluso cuando su compaero Herman Goldstine lo hizo circular con solo el nombre de von Neumann en l, para consternacin de Eckert y Mauchly. El artculo fue ledo por docenas de compaero de trabajo de von Neumann en Amrica y Europa, e influenci la siguiente hornada de diseos de computadoras. Posteriormente, Turing desarroll un informe tcnico detallado, Proposed Electronic Calculator, describiendo el Motor de Computacin Automtico (Automatic Computing Engine, ACE). Present ste al Laboratorio Nacional de Fsica Britnico el 19 de febrero de 1946. A pesar de que Turing saba por su experiencia de guerra en el Parque Bletchley que su propuesta era factible, el secretismo mantenido

durante muchas dcadas acerca de los ordenadores Colossus le impidi manifestarlo. Varias implementaciones exitosas del diseo ACE fueron producidas. Los trabajos de ambos, von Neumann y Turing, describan ordenadores de programas almacenados, pero al ser anterior el artculo de von Neumann, consigui mayor circulacin y repercusin, as que la arquitectura de computadoras que esboz adquiri el nombre de arquitectura von Neumann. En 1945, el profesor Neumann que estaba trabajando en la escuela Moore de ingeniera de Filadelfia, donde el ENIAC haba sido construido, emiti en nombre de un grupo de sus compaeros de trabajo un informe sobre el diseo lgico de los ordenadores digitales. El informe contena una propuesta muy detallada para el diseo de la mquina que desde entonces se conoce como el EDVAC (electronic discrete variable automatic computer). Esta mquina ha sido recientemente completada en Amrica, pero el informe de Von Neumman inspir la construccin de la EDSAC (electronic delay-storage automatic calculator) en Cambridge. En 1947, Burks, Goldstine y Von Neumann, publicaron un informe en el que describen el diseo de otro tipo de mquina (una mquina paralela en este momento) que debera ser muy rpida, capaz de hacer 20.000 operaciones por segundo. Sealaron que el problema persistente en la construccin de tal mquina estaba en el desarrollo de una memoria adecuada, todos los contenidos de los cuales fueron instantneamente accesibles, y al principio se sugiri el uso de un tubo especial -llamado Selectron- que haba sido inventado por los laboratorios de Princeton de la RCA. Estos tubos son caros y difciles para fabricar, as Von Neumman decidi construir una mquina basada en la memoria de Williams. Esa mquina que se complet en junio de 1952 en Princeton se ha conocido como MANIAC I. El diseo de esta mquina que ha sido inspirado de una docena o ms de mquinas que estn actualmente en construccin en Amrica. Clculo automtico en el laboratorio nacional de fsica. Uno de los equipos digitales ms modernos que incorpora novedades y mejoras en la tcnica de la computacin electrnica ha sido demostrado en el laboratorio nacional de fsica, Teddington, donde ha sido diseado y construido por un pequeo equipo de matemticos e ingenieros electrnicos investigadores sobre el personal del laboratorio, asistido por ingenieros de produccin de la compaa elctrica 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 clculo automtico, pero aunque es relativamente pequeo en volumen y contiene solo 800 vlvulas termoinicas, es una mquina de clculo muy rpido y verstil. Los conceptos bsicos y principios abstractos de la computacin por una mquina fueron formuladas por el Dr A. M. Turing, pero el trabajo en dichas mquinas en el Reino Unido se retras por la guerra. En 1945, se hizo una revisin al problema en el laboratorio nacional de Fsica por el profesor J. R. Womersley. Se le adjunt al Dr. Turing un pequeo equipo de especialistas, y en 1947 la planificacin preliminaria era lo suficientemente

avanzada para justificar el establecimiento del grupo especial ya mencionado. En abril de 1948, estos ltimos se convirtieron en la seccin de electrnica del laboratorio, bajo el cargo del Sr. F. M. Colebrook.

[editar]Descripcin

del concepto de programa almacenado

Los primeros computadores constaban de programas almacenados. Algunos muy simples siguen utilizando este diseo, por ejemplo, una calculadora es un computador que tiene un programa almacenado. Puede hacer operaciones matemticas simples, pero no puede ser usada como procesador de textos o videoconsola. Cambiar el programa que contenan los dispositivos que usaban esta tecnologa requera reescribir, reestructurar y/o redisear el dispositivo. Los primeros computadores no estaban lo suficiente programados cuando fueron diseados. La tarea de reprogramar, cuando era posible, era un proceso laborioso, empezando con notas en papel y siguiendo con detallados diseos de ingeniera. Y tras esto llegaba el a veces complicado proceso de reescritura y reestructuramiento fsico del computador. El concepto de programa almacenado cambi por completo, se pens en un computador que en su diseo contena un conjunto de instrucciones que podan ser almacenadas en memoria, o sea, un programa que detallaba la computacin del mismo. El diseo de un programa almacenado tambin daba la posibilidad a los programas de ser modificados ellos mismos durante su ejecucin. Uno de los primeros motivos para su creacin fue la necesidad de un programa que incrementara o modificara las direcciones de memoria de algunas instrucciones, las cuales tenan que ser hechas manualmente en los primeros diseos. Esto se volvi menos importante cuando el ndice de registros y el direccionamiento indirecto se convirtieron en algo habitual en la arquitectura de computadores. El cdigo automodificable fue en gran parte ganando posiciones. A gran escala, la habilidad de tratar instrucciones como datos es lo que hacen los ensambladores, compiladores y otras herramientas de programacin automticas. Se pueden "escribir programas para escribir programas". Existen inconvenientes en el diseo de Von Neumann. Las modificaciones en los programas poda ser algo perjudicial, por accidente o por diseo. En algunos simples diseos de computador con programas almacenados, un mal funcionamiento del programa puede daar el computador. Otros programas, o el sistema operativo, posiblemente puedan llevar a un dao total en el ordenador. La proteccin de la memoria y otras formas de control de acceso pueden ayudar a proteger en contra de modificaciones accidentales y/o maliciosas de programas.

[editar]Cuello

de botella de Von Neumann (Von Neumann bottleneck)

El canal de transmisin de los datos entre CPU y memoria genera un cuello de botella para el rendimiento del procesador. En la mayora de computadoras modernas, la velocidad de comunicacin entre la memoria y la CPU es ms baja que la velocidad a la que puede trabajar esta ltima, reduciendo el rendimiento del procesador y limitando seriamente la velocidad de proceso eficaz, sobre todo cuando se necesitan procesar grandes cantidades de datos. La CPU se ve forzada a esperar continuamente a que lleguen los datos necesarios desde o hacia la memoria. La velocidad de procesamiento y la cantidad de memoria han aumentado mucho ms rpidamente que el rendimiento de transferencia entre ellos, lo que ha agravado el problema del cuello de botella. El trmino cuello de botella de von Neumann fue acuado por John Backus en su conferencia de la concesin de 1977 ACM Turing. Segn Backus: Seguramente debe haber una manera menos primitiva de realizar grandes cambios en la memoria, que empujando tantas palabras hacia un lado y otro del cuello de botella de von Neumann. No slo es un cuello de botella para el trfico de datos, sino que, ms importante, es un cuello de botella intelectual que nos ha mantenido atados al pensamiento de "una palabra a la vez" en vez de fomentarnos el pensar en unidades conceptuales mayores. Entonces la programacin es bsicamente la planificacin del enorme trfico de palabras que cruzan el cuello de botella de von Neumann, y gran parte de ese trfico no concierne a los propios datos, sino a dnde encontrar stos.2 El problema de funcionamiento se redujo introduciendo una memoria cach entre la CPU y la memoria principal, y mejorando los algoritmos del predictor de saltos. Est menos claro que el cuello de botella intelectual que Backus ha criticado haya cambiado mucho desde 1977. La solucin propuesta de Backus no ha tenido una influencia importante. La programacin funcional moderna y la programacin orientada a objetos se preocupan mucho menos de empujar tantas palabras hacia un lado y otro que los anteriores lenguajes como era Fortran.

[editar]Primeros

ordenadores basados en arquitecturas von Neumann

La primera saga se basaba en un diseo que fue utilizado por muchas universidades y empresas para construir sus equipos. Entre estos, slo ILLIAC y ORDVAC tenan un conjunto de instrucciones compatible.

ORDVAC (U-Illinois) en Aberdeen Proving Ground, Maryland (completado en noviembre de 1951) IAS machine en Princeton University (Ene 1952) MANIAC I en Laboratorio Cientfico Los Alamos(Mar 1952) ILLIAC en la Universidad de Illinois, (Sept 1952) AVIDAC en Laboratorios Argonne National (1953)

ORACLE en Laboratorio Nacional de Oak Ridge (Jun 1953) JOHNNIAC en RAND Corporation (Ene 1954) BESK en Estocolmo (1953) BESM-1 en Mosc (1952) DASK en Dinamarca (1955) PERM en Munich (1956?) SILLIAC en Sydney (1956) WEIZAC en Rehovoth (1955)

[editar]Primeros

ordenadores de programa almacenado

SSEM ENIAC BINAC Manchester Mark I EDSAC EDVAC CSIRAC SEAC Pilot ACE SWAC Computadora Whirlwind UNIVAC 1101

Microarquitectura
(Redirigido desde Arquitectura de CPU)

Microarquitectura del Core 2 de Intel.

Microarquitectura del Nehalem de Intel.

En ingeniera de computacin, la microarquitectura (a veces abreviada como arch o uarch), tambin llamada como organizacin de la computadora, es la manera que una arquitectura del conjunto de instrucciones (ISA) es implementada por el procesador. Un ISA dado puede ser implementado con diferentes microarquitecturas.1 Las implementaciones pudieran variar debido a diferentes objetivos de un diseo dado o debido a los cambios en la tecnologa.2 La arquitectura de computadora es la combinacin del diseo determinado de la microarquitectura y del conjunto de instrucciones.
Contenido
[ocultar]

1 Relacin del conjunto de instrucciones con la arquitectura 2 Aspectos de la microarquitectura 3 Conceptos microarquitectnicos 4 Referencias 5 Lectura adicional 6 Vase tambin 7 Enlaces externos

[editar]Relacin

del conjunto de instrucciones con la arquitectura

El conjunto de instrucciones (ISA) es ms o menos el mismo que el modelo de programacin de un procesador, en la manera que es visto por un programador de lenguaje ensamblador o escritor de un compilador. El ISA incluye el modelo de ejecucin, los registros del procesador, los formatos de la direccin y los datos, entre otras cosas. La microarquitectura incluye a las partes constituyentes del procesador y cmo stos se interconectan e interoperan para implementar el ISA. La microarquitectura de una mquina se presenta generalmente como diagramas ms o menos detallados que describen las interconexiones de los diferentes elementos microarquitectnicos de la mquina. Estos elementos pueden ser desde simples puertas yregistros, hasta unidades arritmticas lgicas completas as como elementos ms grandes. Estos diagramas se dividen en la trayectoria de datos (data path), que es donde se colocan los datos; y la trayectoria de control (control path), que son para dirigir los datos.3 Cada elemento microarquitectnico es, a su vez, representado por un diagrama esquemtico que describe las interconexiones de laspuertas lgicas usadas para implementarlo. Cada puerta lgica se representa por un diagrama de circuito describiendo las conexiones de los transistores usados para implementarla en alguna familia lgica particular. Esto hace que mquinas con diferentes microarquitecturas puedan tener la misma arquitectura del conjunto de instrucciones, por lo que son capaces de ejecutar los mismos programas. Se consigue seguir utilizando un mismo ISA al tiempo que

se alcanzan mayores rendimientos mediante nuevas microarquitecturas y/o soluciones de circuitos, as como con avances en la fabricacin de semiconductores. Lo que se consigue con esto es que una sola microarquitectura pueda ejecutar diferentes ISA haciendo cambios menores almicrocdigo. Una microarquitectura describe, entre otros:

el nombre de los segmentos y su tamao, el nombre de las memorias cach y su asociabilidad respectiva, la existencia de un renombre de registros, de una unidad de ejecucin fuera de orden, de una unidad de predictor de saltos.

La microarquitectura y la arquitectura de conjunto de instrucciones forman la arquitectura de una computadora.

[editar]Aspectos

de la microarquitectura

La trayectoria de datos intubada (pipelined datapath) es el diseo ms comn de la trayectoria de datos en la microarquitectura de hoy. Esta tcnica se usa en la mayora de losmicroprocesadores, microcontroladores, y DSPs modernos. La arquitectura entubada permite solapar diferentes instrucciones durante la misma ejecucin, siendo algo muy similar a la lnea de montaje de una fbrica. El intubado incluye varias etapas fundamentales en diseos de las microarquitecturas,3 como pueden ser la lectura de la instruccin (fetch), el decodificado de la instruccin, la ejecucin, y la escritura (write back) de los resultados. Algunas arquitecturas incluyen otras etapas tales como acceso a la memoria. El diseo de las tuberas es una de las tareas centrales de la microarquitectura. Las unidades de ejecucin son tambin esenciales para la microarquitectura. Estas unidades incluyen las unidades aritmtico lgicas (ALU), las unidades de coma flotante (FPU), las unidades de la lectura/escritura (load/store), la prediccin de bifurcacin, y SIMD. Estas unidades realizan las operaciones o los clculos del procesador. La seleccin del nmero de unidades de ejecucin, su latencia y rendimiento es otra de las tareas centrales del diseo microarquitectnico. El tamao, latencia, el rendimiento y la conectividad de las memorias dentro del sistema son tambin decisiones de dicho diseo. Las decisiones de diseo a nivel de sistema tales como incluir o no perifricos como controladores de memoria tambin pueden considerarse como partes del proceso de diseo microarquitectnico. Esto incluye decisiones sobre el nivel de desempeo y la conectividad de dichos perifricos.

A diferencia del diseo arquitectnico, donde lo que se pretende es lograr un nivel de desempeo ptimo, el diseo microarquitectnico presta una atencin ms cercana a otras necesidades. Puesto que las decisiones de diseo microarquitectnico afectan directamente a lo que va dentro de un sistema, se debe prestar atencin a cosas como:

rea/coste del chip Consumo de energa Complejidad de la lgica Facilidad de la conectividad Facilidad de fabricacin Facilidad de la depuracin Facilidad de hacer pruebas

[editar]Conceptos

microarquitectnicos

Todas las CPU, as como las implementaciones de microprocesadores en un simple chip o multichips en general, ejecutan los programas realizando los siguientes pasos: 1. Se lee una instruccin 2. Se decodifica la instruccin 3. Se encuentra cualquier dato asociado que sea necesario para procesar la instruccin 4. Se procesa la instruccin 5. Se escriben los resultados Esta serie de pasos, simple en apariencia, se complican debido a la jerarqua de memoria, en la que se incluye la memoria cach, la memoria principal y el almacenamiento no voltil como pueden ser los discos duros, (donde se almacenan las instrucciones y los datos del programa), que son ms lentos que el procesador en s mismo. Con mucha frecuencia, el paso (2) origina un retardo muy largo (en trminos de ciclos de CPU) mientras los datos llegan en el bus del computador. De hecho, se sigue investigando intensamente sobre la forma crear diseos que eviten estos retardos tanto cuanto sea posible. Durante muchos aos, una de las metas principales del diseo microinformtico ha sido la de ejecutar el mayor nmero posible de instrucciones en paralelo, aumentando as la velocidad efectiva de ejecucin de un programa. Al principio, estos esfuerzos crearon estructuras lgicas y de circuito bastante complejas. De hecho, en un principio estas tcnicas slo podan implementarse en costosos mainframes y supercomputadores debido a la cantidad de circuitera necesaria para realizarlas. No obstante, estas tcnicas han podido implementarse en chips semiconductores cada vez ms pequeos a medida que la fabricacin stos fue progresando y avanzando, lo que ha abarado notablemente su costo.

Algunas tcnicas microarquitectnicas comunes en los CPU modernos son:

Seleccin del conjunto de instrucciones Entubado de instrucciones (Instruction pipelining) Memoria cach Prediccin de bifurcacin Superescalar Ejecucin fuera de orden Renombrado de registros Multiprocesamiento y multihilo

[editar]Referencias
1. Miles Murdocca and Vincent Heuring (2007). Computer Architecture and Organization, An Integrated Approach. Wiley. pp. 151. 2. Michael J. Flynn (2007). Computer Architecture Pipelined and parallel Processor Design. Jones and Bartlett. pp. 13. 3.
a b

John L. Hennessy and David A. Patterson (2006). Computer Architecture: A Quantitative

Approach (Forth Edition edicin). Morgan Kaufmann Publishers, Inc. ISBN 0123704901.

[editar]Lectura

adicional

D. Patterson and J. Hennessy (02-08-2004). Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann Publishers, Inc.. ISBN 1558606041.

V. C. Hamacher, Z. G. Vrasenic, and S. G. Zaky (02-08-2001). Computer Organization. McGrawHill. ISBN 0072320869.

William Stallings (15-07-2002). Computer Organization and Architecture. Prentice Hall. ISBN 0130351199.

J. P. Hayes (03-09-2002). Computer Architecture and Organization. McGraw-Hill. ISBN 0072861983. Gary Michael Schneider (1985). The Principles of Computer Organization. Wiley. pp. 6 7. ISBN 0471885525.

M. Morris Mano (19-10-1992). Computer System Architecture. Prentice Hall. p. 3. ISBN 0131755633. Mostafa Abd-El-Barr and Hesham El-Rewini (03-12-2004). Fundamentals of Computer Organization and Architecture. Wiley-Interscience. p. 1. ISBN 0471467413.

IEEE Computer Society PC Processor Microarchitecture Computer Architecture: A Minimalist Perspective - book webpage

Arquitectura Harvard

Arquitectura Harvard.

Originalmente, el trmino Arquitectura Harvard haca referencia a las arquitecturas de computadoras que utilizaban dispositivos de almacenamiento fsicamente separados para las instrucciones y para los datos (en oposicin a la Arquitectura de von Neumann). El trmino proviene de la computadora Harvard Mark I, que almacenaba las instrucciones en cintas perforadas y los datos en interruptores. Todas las computadoras constan principalmente de dos partes, la CPU que procesa los datos, y la memoria que guarda los datos. Cuando hablamos de memoria manejamos dos parmetros, los datos en s, y el lugar donde se encuentran almacenados (o direccin). Los dos son importantes para la CPU, pues muchas instrucciones frecuentes se traducen a algo as como "coge los datos de sta direccin y adelos a los datos de sta otra direccin", sin saber en realidad qu es lo que contienen los datos. En los ltimos aos la velocidad de las CPUs ha aumentado mucho en comparacin a la de las memorias con las que trabaja, as que se debe poner mucha atencin en reducir el nmero de veces que se accede a ella para mantener el rendimiento. Si, por ejemplo, cada instruccin ejecutada en la CPU requiere un acceso a la memoria, no se gana nada incrementando la velocidad de la CPU (este problema es conocido comolimitacin de memoria). Se puede fabricar memoria mucho ms rpida, pero a costa de un precio muy alto. La solucin, por tanto, es proporcionar una pequea cantidad de memoria muy rpida conocida con el nombre de memoria cach. Mientras los datos que necesita el procesador estn en la cach, el rendimiento ser mucho mayor que si la cach tiene que obtener primero los datos de la memoria principal. La optimizacin de la cach es un tema muy importante de cara al diseo de computadoras. La arquitectura Harvard ofrece una solucin particular a este problema. Las instrucciones y los datos se almacenan en cachs separadas para mejorar el rendimiento. Por otro lado, tiene el inconveniente de tener que dividir la cantidad de cach entre los dos, por lo que funciona mejor slo cuando la frecuencia

de lectura de instrucciones y de datos es aproximadamente la misma. Esta arquitectura suele utilizarse en DSPs, o procesador de seal digital, usados habitualmente en productos para procesamiento de audio y video. Entonces podemos decir que la arquitectura de computadoras es la parte mas importante del estudio general del computador.

Arquitectura de computadoras
(Redirigido desde Arquitectura de computadores)

Una visin tpica de una arquitectura de computadora como una serie de capas de abstraccin: hardware, firmware,ensamblador, kernel, sistema operativo yaplicaciones.

La arquitectura de computadoras es el diseo conceptual y la estructura operacional fundamental de un sistema de computadora. Es decir, es un modelo y una descripcin funcional de los requerimientos y las implementaciones de diseo para varias partes de una computadora, con especial inters en la forma en que la unidad central de proceso (UCP) trabaja internamente y accede a las direcciones de memoria. Tambin suele definirse como la forma de seleccionar e interconectar componentes de hardware para crear computadoras segn los requerimientos de funcionalidad, rendimiento y costo. El ordenador recibe y enva la informacin a travs de los perifricos por medio de los canales. La UCP es la encargada de procesar la informacin que le llega al ordenador. El intercambio de informacin se tiene que hacer con los perifricos y la UCP. Todas aquellas unidades de un sistema exceptuando la UCP se denomina perifrico, por lo que el ordenador tiene dos partes bien diferenciadas, que son: la UCP (encargada de ejecutar programas y que est compuesta por la memoria principal, la UAL y la UC) y los perifricos (que pueden ser de entrada, salida, entrada-salida y comunicaciones).
Contenido

[ocultar]

1 Introduccin 2 Almacenamiento de operandos en la CPU

o o

2.1 Ventajas de las arquitecturas 2.2 Desventajas de las arquitecturas

3 Vase tambin 4 Enlaces externos

[editar]Introduccin
La implantacin de instrucciones es similar al uso de una serie de desmontaje en una fbrica de manufacturacin. En las cadenas de montaje, el producto pasa a travs de muchas etapas de produccin antes de tener el producto desarmado. Cada etapa o segmento de la cadena est especializada en un rea especfica de la lnea de produccin y lleva a cabo siempre la misma actividad. Esta tecnologa es aplicada en el diseo de procesadores eficientes. A estos procesadores se les conoce como pipeline processors. Estos estn compuestos por una lista de segmentos lineales y secuenciales en donde cada segmento lleva a cabo una tarea o un grupo de tareas computacionales. Los datos que provienen del exterior se introducen en el sistema para ser procesados. La computadora realiza operaciones con los datos que tiene almacenados en memoria, produce nuevos datos o informacin para uso externo. Las arquitecturas y los conjuntos de instrucciones se pueden clasificar considerando los siguientes aspectos:

Almacenamiento de operativos en la CPU: dnde se ubican los operadores aparte de la substractora informativa (SI)

Nmero de operandos explcitos por instruccin: cuntos operandos se expresan en forma explcita en una instruccin tpica. Normalmente son 0, 1, 2 y 3.

Posicin del operando: Puede cualquier operando estar en memoria?, o deben estar algunos o todos en los registros internos de la CPU. Cmo se especifica la direccin de memoria (modos de direccionamiento disponibles).

Operaciones: Qu operaciones estn disponibles en el conjunto de instrucciones. Tipo y tamao de operandos y cmo se especifican.

[editar]Almacenamiento

de operandos en la CPU

La diferencia bsica est en el almacenamiento interno de la CPU.

Las principales alternativas son:

Acumulador. Conjunto de registros. Memoria

Caractersticas: En una arquitectura de acumulador un operando est implcitamente en el acumulador siempre leyendo e ingresando datos. (Ej.: calculadora Standard -estndar-) En la arquitectura de pila no es necesario nombrar a los operandos ya que estos se encuentran en el tope de la pila. (Ej.: calculadora de pila HP) La Arquitectura de registros tiene slo operandos explcitos (es aquel que se nombra) en registros o memoria.

[editar]Ventajas

de las arquitecturas

Pila: Modelo sencillo para evaluacin de expresiones (notacin polaca inversa). Instrucciones cortas pueden dar una buena densidad de cdigo.

Acumulador: Instrucciones cortas. Minimiza estados internos de la mquina (unidad de control sencilla).

Registro: Modelo ms general para el cdigo de instrucciones parecidas. Automatiza generacin de cdigo y la reutilizacin de operandos. Reduce el trfico a memoria. Una computadora actualmente tiene como estndar 32 registros. El acceso a los datos es ms rpido.

[editar]Desventajas

de las arquitecturas

Pila: A una pila no se puede acceder aleatoriamente. Esta limitacin hace difcil generar cdigo eficiente. Tambin dificulta una implementacin eficiente, ya que la pila llega a ser un cuello de botella es decir que existe dificultad para la transferencia de datos en su velocidad mk.

Acumulador: Como el acumulador es solamente almacenamiento temporal, el trfico de memoria es el ms alto en esta aproximacin.

Registro: Todos los operadores deben ser nombrados, conduciendo a instrucciones ms largas.

Mquina de Turing
Para otros usos de este trmino, vase Turing (desambiguacin).

Una mquina de Turing (MT) 1 es un modelo computacional que realiza una lectura/escritura de manera automtica sobre una entradallamada cinta, generando una salida en esta misma. Este modelo est formado por un alfabeto de entrada y uno de salida, un smbolo especial llamado blanco (normalmente b, o 0), un conjunto de estados finitos y un conjunto de transiciones entre

dichos estados. Su funcionamiento se basa en una funcin de transicin, que recibe un estado inicial y una cadena de caracteres (la cinta, la cual puede ser infinita) pertenecientes al alfabeto de entrada. La mquina va leyendo una celda de la cinta en cada paso, borrando el smbolo en el que se encuentra posicionado su cabezal y escribiendo un nuevo smbolo perteneciente al alfabeto de salida, para luego desplazar el cabezal a la izquierda o a la derecha (solo una celda a la vez). Esto se repite segn se indique en la funcin de transicin, para finalmente detenerse en un estado final o de aceptacin, representando as la salida.
Contenido
[ocultar]

1 Historia 2 Definicin formal

o o o

2.1 Funcionamiento 2.2 Representacin como diagrama de estados 2.3 Descripcin instantnea

3 Ejemplo 4 Modificaciones equivalentes

4.1 Mquina de Turing con movimiento stay o "esperar"

o o o o

4.2 Mquina de Turing con cinta infinita a ambos lados 4.3 Mquina de Turing con cinta multipista 4.4 Mquina de Turing multicinta 4.5 Mquina de Turing multidimensional

5 Mquina de Turing determinista y no determinista 6 Problema de la parada (halting problem) 7 Codificacin de una mquina de Turing 8 Mquina universal de Turing 9 Mquina de Turing cuntica 10 Vase tambin 11 Enlaces externos 12 Referencias

o o

12.1 Notas al pie 12.2 Bibliografa

[editar]Historia

Representacin artstica de una mquina de Turing.

Alan Turing introdujo el concepto de mquina de Turing en el trabajo On computable numbers, with an application to theEntscheidungsproblem, publicado por la Sociedad Matemtica de Londres en 1936, en el que se estudiaba la cuestin planteada porDavid Hilbert sobre si las matemticas son decidibles, es decir, si hay un mtodo definido que pueda aplicarse a cualquier sentencia matemtica y que nos diga si esa sentencia es cierta o no. Turing ide un modelo formal de computador, la mquina de Turing, y demostr que existan problemas que una mquina no poda resolver. Con este aparato extremadamente sencillo es posible realizar cualquier cmputo que un computador digital sea capaz de realizar.

Mediante este modelo terico y el anlisis de la complejidad de los algoritmos, fue posible la categorizacin de problemas computacionales de acuerdo a su comportamiento, apareciendo as, el conjunto de problemas denominados P y NP, cuyas soluciones pueden encontrarse en tiempo polinmico por mquinas de Turing deterministas y no deterministas, respectivamente. Precisamente, la tesis de Church-Turing formulada por Alan Turing y Alonzo Church, de forma independiente a mediados del siglo XX caracteriza la nocin informal de computabilidad con la computacin mediante una mquina de Turing.2 La idea subyacente es el concepto de que una mquina de Turing puede verse como un autmata ejecutando un procedimiento efectivo definido formalmente, donde el espacio de memoria de trabajo es ilimitado, pero en un momento determinado slo una parte finita es accesible.

[editar]Definicin

formal

Una mquina de Turing con una sola cinta puede definirse como una 7-tupla

donde:3

es un conjunto finito de estados. es un conjunto finito de smbolos distinto del espacio en blanco, denominado alfabeto de mquina o de entrada.

es un conjunto finito de smbolos de cinta, denominado alfabeto de cinta ( es el estado inicial.

).

es un smbolo denominado blanco, y es el nico smbolo que se puede repetir un nmero infinito de veces.

es el conjunto de estados finales de aceptacin. es una funcin parcial denominada funcin de transicin, donde es un movimiento a la izquierda y es el movimiento a la derecha.

Existen en la literatura un abundante nmero de definiciones alternativas, pero todas ellas tienen el mismo poder computacional, por ejemplo se puede aadir el smbolo movimiento" en un paso de cmputo. como smbolo de "no

[editar]Funcionamiento
La mquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la que el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor. Las operaciones que se pueden realizar en esta mquina se limitan a:

Mover el cabezal lector/escritor hacia la derecha.

Visualizacin de una mquina de Turing, en la que se ve el cabezal y la cinta que se lee.

Mover el cabezal lector/escritor hacia la izquierda.

El cmputo se determina a partir de una tabla de estados de la forma: (estado, valor) (nuevo estado, nuevo valor, direccin)

Esta tabla toma como parmetros el estado actual de la mquina y el carcter ledo de la cinta, dando la direccin para mover el cabezal, el nuevo estado de la mquina y el valor a escribir en la cinta. La memoria es la cinta de la mquina que se divide en espacios de trabajo denominados celdas, donde se pueden escribir y leer smbolos. Inicialmente todas las celdas contienen un smbolo especial denominado "blanco". Las instrucciones que determinan el funcionamiento de la mquina tienen la forma, "si estamos en el estado xleyendo la posicin y, donde hay escrito el smbolo z, entonces este smbolo debe ser reemplazado por este otro smbolo, y pasar a leer la celda siguiente, bien a la izquierda o bien a la derecha". La mquina de Turing puede considerarse como un autmata capaz de reconocer lenguajes formales. En ese sentido, es capaz de reconocer los lenguajes recursivamente enumerables, de acuerdo a la jerarqua de Chomsky. Su potencia es, por tanto, superior a otros tipos de autmatas, como el autmata finito, o el autmata con pila, o igual a otros modelos con la misma potencia computacional.

[editar]Representacin

como diagrama de estados

Las maquinas de Turing pueden representarse mediante grafos particulares, tambin llamados diagramas de estados finitos, de la siguiente manera:

Esta mquina de Turing est definida sobre el alfabeto de estados estado inicial es y el estado final es siendo expresin regular de la forma

, posee el conjunto , con las transiciones que se pueden ver. Su

, el lenguaje de salida el smbolo denominado "blanco". Esta mquina reconoce la con .

Los estados se representan como vrtices, etiquetados con su nombre en el interior. Una transicin desde un estado a otro, se representa mediante una arista dirigida que une a estos vrtices, y esta rotulada por smbolo que lee el cabezal/smbolo que escribir el cabezal, movimiento del cabezal.

El estado inicial se caracteriza por tener una arista que llega a l y que no proviene de ningn otro vrtice.

El o los estados finales se representan mediante vrtices que estn encerrados a su vez por otra circunferencia.

[editar]Descripcin

instantnea
donde y que escribe el seguida de infinitos blancos. El cabezal

Es una secuencia de la forma

estado de una MT. La cinta contiene la cadena seala el primer smbolo de .

Por ejemplo, para la mquina de Turing

con las transiciones

La descripcin instantnea para la cinta 1011 es:

[editar]Ejemplo
Definimos una mquina de Turing sobre el alfabeto , donde 0 representa el smbolo blanco.

La mquina comenzar su proceso situada sobre un smbolo "1" de una serie. La mquina de Turing copiar el nmero de smbolos "1" que encuentre hasta el primer blanco detrs de dicho smbolo blanco. Es decir, posiciona el cabezal sobre el 1 situado en el extremo izquierdo, doblar el nmero de smbolos 1, con un 0 en medio. As, si tenemos la entrada "111" devolver "1110111", con "1111" devolver "111101111", y sucesivamente. El conjunto de estados es estado inicial es y el

. La tabla que describe la funcin de

transicin es la siguiente:

Estado Smbolo ledo Smbolo escrito Mov. Estado sig.

El funcionamiento de una computacin de esta mquina puede mostrarse con el siguiente ejemplo (en negrita se resalta la posicin de la cabeza lectora/escritora):

Paso Estado Cinta

11

01

010

0100

0101

0101

0101

1101

1001

10

1001

11

10010

12

10011

13

10011

14

10011

15

11011

Parada

La mquina realiza su proceso por medio de un bucle, en el estado inicial al estado , reemplaza el primer 1 con un 0, y pasa

, con el que avanza hacia la derecha, saltando

los smbolos 1 hasta un 0 (que debe existir), cuando lo encuentra pasa al estado , con este estado avanza

saltando los 1 hasta encontrar otro 0 (la primera vez no habr ningn 1). Una vez en el extremo derecho, aade un 1. Despus comienza el proceso de retorno; con vuelve

a la izquierda saltando los 1, cuando encuentra un 0 (en el medio de la secuencia), pasa a que contina a la

izquierda saltando los 1 hasta el 0 que se escribi al principio. Se reemplaza de nuevo este 0 por 1, y pasa al smbolo siguiente, si es un 1, se pasa a otra iteracin del bucle, pasando al estado s1 de nuevo. Si es un smbolo 0,

ser el smbolo central, con lo que la mquina se detiene al haber finalizado el cmputo.

[editar]Modificaciones

equivalentes

Una razn para aceptar la mquina de Turing como un modelo general de cmputo es que el modelo que hemos definido anteriormente es equivalente a muchas versiones modificadas que en principio pareciera incrementar el poder computacional.

[editar]Mquina

de Turing con movimiento stay o "esperar"


La funcin de transicin de la MT sencilla esta definida por

la cual puede ser modificada como

Donde

significa "permanecer" o "esperar", es

decir no mover el cabezal de lectura/escritura. Por lo tanto, significa en la

que se pasa del estado q al p, se escribe

celda actual y la cabeza se queda sobre la celda actual.

[editar]Mquina

de Turing con cinta infinita a ambos lados

Mquina de Turing con cinta infinita a ambos lados

Esta modificacin se denota al igual que una MT sencilla, lo que la hace diferente es que la cinta es infinita tanto por la derecha como por la izquierda, lo cual permite realizar transiciones iniciales como .

[editar]Mquina

de Turing con cinta

multipista

Subdivisin de una celda de la cinta.

Es aquella que mediante la cual cada celda de la cinta de una mquina sencilla se divide en subceldas. Cada celda es as capaz de contener varios smbolos de la cinta. Por ejemplo, la cinta de la figura tiene cada celda subdividida en tres subceldas. Se dice que esta cinta tiene mltiples pistas puesto que cada celda de esta mquina de Turing contiene mltiples caracteres, el contenido de las celdas de la cinta puede ser representado mediante n-tuplas ordenadas. Los movimientos que realice est mquina dependern de su estado actual y de la n-tupla que represente el contenido de la celda actual. Cabe mencionar que posee un solo cabezal al igual que una MT sencilla.

[editar]Mquina

de Turing multicinta

Diagrama de una mquina de Turing multicinta, las flechas indican los cabezales de lectura/escritura.

Una MT con ms de una cinta consiste de un control finito con k cabezales lectores/escritores y k cintas. Cada cinta es infinita en ambos sentidos. La MT define su movimiento dependiendo del smbolo que est leyendo cada uno de sus cabezales, da reglas de sustitucin para cada uno de los smbolos y direccin de movimiento para cada uno de los cabezales. Inicialmente la MT empieza con la entrada en la primera cinta y el resto de las cintas en blanco.

[editar]Mquina

de Turing multidimensional

Diagrama de una mquina de Turing bidimensional.

Una MT multidimensional es aquella cuya cinta puede verse como extendindose infinitamente en ms de una direccin, el ejemplo ms bsico sera el de una mquina bidimensional cuya cinta se extendera infinitamente hacia arriba, abajo, derecha e izquierda.

En la modificacin bidimensional de MT que se muestra en la figura tambin se agregan dos nuevos movimientos del cabezal {U,D} (es decir arriba y abajo). De esta forma la definicin de los movimientos que realiza el cabezal ser {L,R,U,D}.

[editar]Mquina

de Turing determinista y no determinista


Vase tambin: Complejidad computacional

La entrada de una mquina de Turing viene determinada por el estado actual y el smbolo ledo, un par (estado, smbolo), siendo el cambio de estado, la escritura de un nuevo smbolo y el movimiento del cabezal, las acciones a tomar en funcin de una entrada. En el caso de que para cada par (estado, smbolo) posible exista a lo sumo una posibilidad de ejecucin, se dir que es una mquina de Turing determinista, mientras que en el caso de que exista al menos un par (estado, smbolo) con ms de una posible combinacin de actuaciones se dir que se trata de una mquina de Turing no determinista. La funcin de transicin en el caso no

determinista, queda definida como sigue:

Cmo sabe una mquina no determinista qu accin tomar de las varias posibles? Hay dos formas de verlo: una es decir que la mquina es "el mejor adivino posible", esto es, que siempre elige la transicin que finalmente la llevar a un estado final de aceptacin. La otra es imaginarse que la mquina se "clona", bifurcndose en varias

copias, cada una de las cuales sigue una de las posibles transiciones. Mientras que una mquina determinista sigue un nico "camino computacional", una mquina no determinista tiene un "rbol computacional". Si cualquiera de las ramas del rbol finaliza en un estado de aceptacin, se dice que la mquina acepta la entrada. La capacidad de cmputo de ambas versiones es equivalente; se puede demostrar que dada una mquina de Turing no determinista existe otra mquina de Turing determinista equivalente, en el sentido de que reconoce el mismo lenguaje, y viceversa. No obstante, la velocidad de ejecucin de ambos formalismos no es la misma, pues si una mquina no determinista M reconoce una cierta palabra de tamao n en un tiempo , la

mquina determinista equivalente reconocer la palabra en un tiempo . Es

decir, el no determinismo permitir reducir la complejidad de la solucin de los problemas, permitiendo resolver, por ejemplo, problemas de complejidad exponencial en un tiempo polinmico.

[editar]Problema

de la parada (halting problem)


Vase tambin: Problema de la parada

El problema de la parada o problema de la detencin (halting problem en ingls) para mquinas de Turing consiste en: dada una MT M y una palabra w, determinar

si M terminar en un nmero finito de pasos cuando se ejecuta usando w como entrada. Alan Turing, en su famoso artculo "On computable numbers, with an application to the Entscheidungsproblem" (1936), demostr que el problema de la parada de la mquina de Turing esindecidible, en el sentido de que ninguna mquina de Turing lo puede resolver.

[editar]Codificacin

de una mquina de Turing


Toda mquina de Turing puede codificarse como una secuencia binaria finita, es decir una secuencia finita de ceros y unos. Para simplificar la codificacin, suponemos que toda MT tiene un nico estado inicial denotado por denotado , y un nico estado final

. Tendremos que para una

MT M de la forma

donde 0, representa el smbolo blanco

o b (segn se desee denotar), es alfabeto de

entrada y

son los smbolos auxiliares utilizados por M (cada MT utiliza su propia coleccin finito de smbolos auxiliares).

Todos estos smbolos se codifican como secuencias de unos:

Smbolo Codificacin

11

111

. . .

. . .

Los estados de una MT se codifican

tambin con secuencias de unos:

Smbolo

Codificacin

11

. . .

. . .

Las directrices de desplazamiento , y se codifican con 1, 11, 111,

respectivamente. Una transicin se

codifica usando ceros como separadores entre los estados, los smbolos del alfabeto de cinta y la directriz de desplazamiento As, la transicin codifica como se .

En general, la codificacin de una transicin cualquiera es

donde direccin sea

, segn la

. Una MT se codifica escribiendo consecutivamente las secuencias de las modificaciones de todas sus transiciones. Ms precisamente, la codificacin de una MT M es de la forma donde , es la codificacin de la -

sima transicin de M. Puesto que el orden en que se representen las transiciones de una MT no es relevante, una misma MT tiene varias codificaciones diferentes. Esto no representa ninguna desventaja prctica o conceptual ya

que no se pretende que las codificaciones sean nicas.

[editar]Mquina

universal

de Turing
Una mquina de Turing computa una determinada funcin parcial de carcter definido y unvoca, definida sobre las secuencias de posibles cadenas de smbolos de su alfabeto. En este sentido se puede considerar como equivalente a un programa de ordenador, o a un algoritmo. Sin embargo es posible realizar una codificacin de la tabla que representa a una mquina de Turing, a su vez, como una secuencia de smbolos en un determinado alfabeto; por ello, podemos construir una mquina de Turing que acepte como entrada la tabla que representa a otra mquina de Turing, y, de esta manera, simule su comportamiento. En 1947, Turing indic:
Se puede demostrar que es posible construir una mquina especial de este tipo que pueda realizar el trabajo de todas las dems. Esta mquina especial puede ser denominada mquina universal.

Esta fue, posiblemente, la idea germinal del concepto de sistema operativo, un programa que puede, a su vez, ejecutar, en el sentido de

controlar otros programas, demostrando su existencia, y abriendo camino para su construccin real.[cita requerida] Con esta codificacin de tablas como cadenas, se abre la posibilidad de que unas mquinas de Turing se comporten como otras mquinas de Turing. Sin embargo, muchas de sus posibilidades son indecidibles, pues no admiten una solucin algortmica. Por ejemplo, un problema interesante es determinar si una mquina de Turing cualquiera se parar en un tiempo finito sobre una determinada entrada; problema conocido como problema de la parada, y que Turing demostr que era indecidible. En general, se puede demostrar que cualquier cuestin no trivial sobre el comportamiento o la salida de una mquina de Turing es un problema indecidible.

[editar]Mquina

de Turing

cuntica

Ilustracin de una mquina de Turing cuntica.

En 1985, Deutsch present el diseo de la primera Mquina cuntica basada en una mquina de Turing. Con este fin enunci una nueva variante la tesis de ChurchTuring dando lugar al denominado "principio de Church-TuringDeutsch". La estructura de una mquina de Turing cuntica es muy similar a la de una mquina de Turing clsica. Est compuesta por los tres elementos clsicos:

una cinta de memoria infinita en donde cada elemento es un qubit,

un procesador finito y un cabezal.

El procesador contiene el juego de instrucciones que se aplica sobre el elemento de la cinta sealado por el cabezal. El resultado depender del qubit de la cinta y del estado del procesador. El procesador ejecuta una instruccin por unidad de tiempo. La cinta de memoria es similar a la de una mquina de Turing tradicional. La nica diferencia es que cada elemento de la cinta de la mquina cuntica es un qubit. El alfabeto de esta nueva mquina est formado por el espacio de valores del qubit. La posicin del

cabezal se representa con una variable entera.

[editar]Vase

tambin

Mquina de von Neumann


Este artculo o seccin necesita referencias que aparezcan en una publicacin acreditada, como revistas especializadas, monografas, prensa diaria o pginas de Internet fidedignas.
Puedes aadirlas as o avisar al autor principal del artculo en su pgina de discusin pegando: {{subst:Aviso referencias|Mquina de von

Neumann}} ~~~~

Forma simple de una mquina autorreplicante.

La mquina de Von Neumann es un concepto terico formulado por el matemtico hngaro estadounidense John Von Neumann. Supngase a un determinado problema simple, repetitivo y prolongado en el tiempo: por ejemplo, la extraccin de mineral de hierro en la superficie deMarte. Una solucin posible es enviar mquinas robotizadas que, de forma autnoma, extraigan el mineral y lo conviertan en lingotes de hierro, bien para su envo a la Tierra, bien para su uso por colonias locales. Si una mquina extrae n toneladas en un determinado perodo de tiempo (ciclo), en m ciclos se tendr m x n toneladas. Supngase ahora un segundo tipo de mquina: una mquina que, adems de producir lingotes de hierro, los trabaja para autorreplicarse, construyendo una mquina igual a ella misma. El rendimiento ser menor que el de la primera mquina, pues parte del hierro lo utiliza en producir la segunda mquina, pero al cabo de un tiempo (generacin), no se tendr una sino dos mquinas trabajando. Tras dos generaciones se tendr cuatro mquinas, tras tres generaciones ocho mquinas, etctera. Se trata de una poblacin que crece de forma exponencial. As, aunque el rendimiento sea menor, la produccin tender a crecer hasta superar la de la primera mquina. Como ejemplo, tras diez generaciones habr ms de mil mquinas de Von Neumann (exactamente 1.024 = 210), de manera que, aunque su rendimiento fuera del 5% de la primera mquina, la produccin total sera ms de 50 veces mayor.

Este concepto no es solamente terico: los virus informticos son mquinas de Von Neumann. Ante el ingente trabajo de infectar el mayor nmero posible de ordenadores, los virus se autorreplican pasando de ordenador a ordenador, aumentando su poblacin de forma exponencial e infectando as millones de ordenadores en pocas horas. Sin embargo, no slo hay aplicaciones negativas de este concepto. Los autmatas celulares tienen alto rango de aplicaciones en la ciencia, modelando y simulando gran cantidad de sistemas fsicos, como fluidos, flujo de trfico, etc.

http://antares.itmorelia.edu.mx/~mfraga/arqui/ http://www.intercambiosvirtuales.org/libros-manuales/arquitectura-de-computadoras-m-morris