lunes, 12 de mayo de 2008

CONCEPTO DE VON NEUMANN






Los primeros computadores se programaban en realidad recableándolos. Esto prácticamente equivalía a reconstruir todo el computador cuando se requería de un nuevo programa. La tarea era simplificada gracias a un panel de contactos (muy similar al de los primeros conmutadores telefónicos que eran atendidos por operadoras, y que hoy en día sólo llegamos a ver en viajes películas en blanco y negro. Ver fig. 1) con el que era posible enlazar circuitos para crear secciones dedicadas a una actividad específicas. La programación del computador se llevaba a cabo, literalmente, reconstruyéndolo.






Fig 1.- ENIAC, primer computador electrónico y su panel de conexiones




Mientras que el recablear al computador establecía una clara distinción entre los datos (representados por los estados o señales eléctricas que serín mantenidas por los relevadores o a través de los bulbos que conformaban al computador) y el programa (las conexiones que serían establecidas entre estos componentes del hardware) la labor de "programación" requería sino del propio creador del computador si a un verdadero experto y conocedor de electrónica, principios de lógica digital y del problema mismo. Esto vino a cambiar con el concepto del programa almacenado, un concepto teórico muy importante que fue establecido por el matemático John von Neumann el 30 de junio de 1945 en un borrador sobre el diseño de la EDVAC. A diferencia de los primeros computadores, von Neumann proponía que tanto el programa como sus datos fueran almacenados en la memoria del computador. Esto no solo simplificaba la labor de programación al no tener que llevar a cabo el recableado del computador sino que además libraba y generalizaba el diseño del hardware para hacerlo independientede cualquier problema y enfocado al control y ejecución del programa. Este concepto fue tan importante y decisivo que dio lugar al concepto de la arquitectura de von Neumann, aún presente en nuestros días.
La arquitectura de von Neumann se compone de tres elementos:



  1. La Unidad Central de Procesamiento (CPU, por sus siglas en inglés), que es considerada como el cerebro y corazón del computador. Internamente consiste de una Unidad Aritmético-Lógica (ALU), un conjunto de registros y una Unidad de Control (CU). La ALU es donde se realizan todas las operaciones que involucran un procesamiento matemático (particularmente aritmético) o lógico (operaciones booleanas). Los registros permiten el almacenammiento de datos para estas operaciones y sus resultados. En la CU es donde se ejecutan todo el resto de las operaciones (decisión, control, movimiento de datos). Una CPU con todos estos elementos implementada en un solo chip recibe el nombre de microprocesador.

  2. La memoria, que es donde datos y programa es almacenado. La memoria puede ser visto como un arreglo unidimensional finito en la que cada localidad es identificada por un valor asociado a su posición y que es comunmente llamado dirección. Existen diversos tipos de memoria, identificados por el tipo de tecnología usada, aunque para un computador son generalmente clasificadas en dos grandes grupos por tipo de uso al que de destina. La memoria RAM (Random Access Memory, Memoria de Acceso Aleatorio) y que es aquella destinada al almacenamiento de datos y programas (incluyendo al sistema operativo), es considerada temporal o de tipo volátil ya que pierde si contenido cuendo el computador es apagadoo reinicializado. La memoria ROM es aquella de tipo permanente, aun cuando el computador sea desenergizado mantendrá su contenido. Es usada principalmente para el almacenamiento de pequeños programas destinados a la adminsitración básica de recursos, especialmente de entrada y salida.

  3. Las interfaces de entrada y salida (I/O). destinadas a liberar de trabajo a la CPU en la comunidación con dispositivos de entrada (teclados, ratones), salida (impresoras) y entrada-salidas (discos, cintas).



Estos tres elementos están interconectados a través de un conjunto de líneas que llevan instrucciones (control bus), datos (data bus) y que permiten dar los valores de direcciones de memoria y dispositivos (memory bus).


Fig 2.- Esquema de la arquitectura de von Neumann. Hardware.