ARQUITECTURA JOHN VON NEWMAN La arquitectura Von Neumann, también conocida como modelo de Von Neumann o arquitectura Princeton, es una arquitectura de computadoras basada en la descrita en 1945 por el matemático y físico John von Neumann y otros, en el primer borrador de un informe sobre el EDVAC.1 Este describe una arquitectura de diseño para un computador digital electrónico con partes que constan de una unidad de procesamiento que contiene una unidad aritmético lógica y registros del procesador, una unidad de control que contiene un registro de instrucciones y un contador de programa, una memoria para almacenar tanto datos como instrucciones, almacenamiento masivo externo, y mecanismos de entrada y salida.1 2 El significado ha evolucionado hasta ser cualquier computador de programa almacenado en el cual no pueden ocurrir una extracción de instrucción y una operación de datos al mismo tiempo, ya que comparten un bus en común. Esto se conoce como el cuello de botella Von Neumann y muchas veces limita el rendimiento del sistema.3 El diseño de una arquitectura Von Neumann es más simple que la arquitectura Harvard más moderna, que también es un sistema de programa almacenado, pero tiene un conjunto dedicado de direcciones y buses de datos para leer datos desde memoria y escribir datos en la misma, y otro conjunto de direcciones y buses de datos para ir a buscar instrucciones.
Desarrollo del concepto de programa almacenado El matemático Alan Turing, quien había sido alertado de un problema de lógica matemática por las lecciones de Max Newman en la Universidad de Cambridge, escribió un artículo en 1936 titulado On Computable Numbers, with an Application to the Entscheidungsproblem, que fue publicado en los Proceedings of the London Mathematical Society.5 En él describía una máquina hipotética que llamó "máquina computadora universal", y que ahora es conocida como la "Máquina de Turing universal". La máquina hipotética tenía un almacenamiento infinito (memoria en la terminología actual) que contenía tanto las instrucciones como los datos. John Von Neumann conoció a Turing cuando ejercía de profesor sustituto en Cambridge en 1935 y también durante el año PhD que Turing pasó en la Institute for Advanced Study en Princeton, Nueva Jersey durante 1936-37. Cuándo supo del artículo de 1936 de Turing no está claro.
En 1936, Konrad Zuse también anticipó en dos solicitudes de patente que instrucciones de la máquina podían ser almacenadas en el mismo almacenamiento utilizado para los datos.6
Independientemente, J. Presper Eckert y John Mauchly, quienes estaban desarrollando el ENIAC en la Escuela Moore de Ingeniería Eléctrica en la Universidad de Pennsylvania, escribieron sobre el concepto de “programa almacenado” en diciembre de 1943. En enero de 1944, mientras diseñaba una nueva máquina, EDVAC, Eckert escribió que se almacenarían datos y programas en un nuevo dispositivo de memoria direccionable, una memoria de línea de retardo. Ésta fue la primera vez que se propuso la construcción de un práctico programa almacenado. Por esas fechas, no tenían conocimiento del trabajo de Turing. Von Neumann estaba involucrado en el Proyecto Manhattan en el Laboratorio Nacional Los Álamos, el cual requería ingentes cantidades de cálculos. Esto le condujo al proyecto ENIAC, en verano de 1944. Allí se incorporó a los debates sobre el diseño de un ordenador con programas almacenados, el EDVAC. Como parte del grupo, se ofreció voluntario a escribir una descripción de él. El término "von Neumann architecture" surgió del primer artículo de von Neumann: "First Draft of a Report on the EDVAC", fechado el 30 de junio de 1945, el cual incluía ideas de Eckert y Mauchly. Estaba inconcluso cuando su compañero Herman Goldstine lo hizo circular con sólo el nombre de von Neumann escrito en él, para consternación de Eckert y Mauchly. El artículo fue leído por docenas de compañeros de trabajo de Von Neumann en América y Europa, e influenció la siguiente hornada de diseños de computadoras. Por lo tanto, Von Neumann no se encontraba solo en el desarrollo de la idea de la arquitectura de programa almacenado, y Jack Copeland considera que es "históricamente inapropiado referirse a las computadoras electrónicas digitales de programa almacenado como 'máquinas de von Neumann'".7 Su colega del colegio Los Álamos, Stan Frankel dijo de las consideraciones de von Neumann con respecto a las ideas de Turing:
ARQUITECTURA HARVARD La arquitectura Harvard es una arquitectura de computadora con pistas de almacenamiento y de señal físicamente separadas para las instrucciones y para los datos. El término proviene de la computadora Harvard Mark I basada en relés, que almacenaba las instrucciones sobre cintas perforadas (de 24 bits de ancho) y los datos en interruptores electromecánicos. Estas primeras máquinas tenían almacenamiento de datos totalmente contenido dentro la unidad central de proceso, y no proporcionaban acceso al almacenamiento de instrucciones como datos. Los programas necesitaban ser cargados por un operador; el procesador no podría arrancar por sí mismo. Hoy en día (2017), la mayoría de los procesadores implementan dichas vías de señales separadas por motivos de rendimiento, pero en realidad implementan una arquitectura Harvard modificada, para que puedan soportar tareas tales como la carga de un programa desde una unidad de disco como datos para su posterior ejecución. Detalles de memoria En la arquitectura Harvard, no hay necesidad de hacer que las dos memorias compartan características. En particular, pueden diferir la anchura de palabra, el momento, la tecnología de implementación y la estructura de dirección de memoria. En algunos sistemas, se pueden almacenar instrucciones en memoria de solo lectura mientras que, en general, la memoria de datos requiere memoria de lecturaescritura. En algunos sistemas, hay mucha más memoria de instrucciones que memoria de datos así que las direcciones de instrucción son más anchas que las direcciones de datos. Contraste con arquitecturas von Neumann[ Bajo arquitectura de von Neumann pura, la CPU puede estar bien leyendo una instrucción o leyendo/escribiendo datos desde/hacia la memoria pero ambos procesos no pueden ocurrir al mismo tiempo, ya que las instrucciones y datos usan el mismo sistema de buses. En una computadora que utiliza la arquitectura Harvard, la CPU puede tanto leer una instrucción como realizar un acceso a la memoria de datos al mismo tiempo, incluso sin una memoria caché. En consecuencia, una arquitectura de computadores Harvard puede ser más rápida para un circuito complejo, debido a que la instrucción obtiene acceso a datos y no compite por una única vía de memoria. Además, una máquina de arquitectura Harvard tiene distintos código y espacios de dirección de datos: dirección de instrucción cero y dirección de datos cero son cosas distintas. La instrucción cero dirección podría identificar un valor de veinticuatro bits, mientras que dirección de datos cero podría indicar un byte de ocho bits que no forma parte de ese valor de veinticuatro bits. En Contraste con la arquitectura Harvard modificada Una máquina de arquitectura Harvard modificada es muy similar a una máquina de arquitectura Harvard, pero relaja la estricta separación entre la instrucción.
Cuadro comparativo