lunes, 21 de noviembre de 2016

Arquitectura de Neumann

La arquitectura de John Neumann

En el ámbito de las ciencias de la computación, el trabajo de von Neumann supuso una gran palanca para el desarrollo de computadoras más complejas y avanzadas. Propuso la adopción del bit como unidad de medida de la memoria de las computadoras y, además, desarrolló el concepto de los "bits de paridad" para poder paliar la aparición de errores, por ejemplo, por culpa de componentes no fiables.
El nombre de von Neumann se asocia, fundamentalmente, a dos aspectos de su carrera: el Proyecto Manhattan y su contribución al desarrollo de la computación. Como bien recoge el libro La Catedral de Turing, von Neumann siempre consideró sus teorías sobre computación por encima del desarrollo de la bomba atómica o la estrategia de disuasión nuclear:
"Estoy pensando en algo más importante que las bombas. Estoy pensando en computadoras".
Compañías como IBM o Standard Oil e instituciones como el MIT o la Universidad de Yale se peleaban por tenerle entre sus filas. IBM necesitaba a von Neumann para desarrollar sistemas que se pudieran implantar en las empresas, Standard Oil le requería para realizar estudios analíticos para localizar nuevos yacimientos de petróleo. Sin embargo, su carrera se centró en el mundo de los computadores, en ese momento con fines militares -la simulación de explosiones o el cálculo de la trayectoria de misiles-, pero con la visión como para crear un modelo estándar que funcionase en cualquier ámbito o aplicación: separar el software del hardware, crear un modelo de computador universal. 
John von Neumann es uno de los responsables de sentar los pilares sobre los que se apoyan los computadores actuales. En 1936, Alan Turing propuso la "máquina computadora universal" (conocida como "Máquina de Turing"), un computador que utilizaba una memoria para almacenar datos y también las instruccionesa ejecutar; un modelo teórico que también visualizaron J. Presper Eckert y John Mauchly en 1943 mientras trabajaban en el desarrollo del ENIAC.
En 1944, año en el que se empezó a esbozar el EDVAC como evolución del ENIAC, Eckert comenzó escribir en sus especificaciones que se usaría una memoria direccionable para almacenar tanto los datos como el programa a ejecutar. Dentro de su vinculación al Proyecto Manhattan, John von Neumann necesitaba realizar cálculos complejos y terminó vinculándose también al desarrollo del ENIAC y el EDVAC.
Dentro del grupo de trabajo del EDVAC, von Neumann se ofreció voluntario a redactar un primer esbozo que describiese el computador: "First Draft of a Report on the EDVAC", de 30 de junio de 1945. Fue un documento que comenzó a circular dentro de la comunidad científica como si hubiese sido desarrollado únicamente por von Neumann (obviando a Eckert y Mauchly) y del que salió el concepto de "arquitectura de von Neumann".
¿Y en qué consiste la arquitectura de von Neumann? Según el modelo de von Neumann, los distintos bloques funcionales que conforman una computadora deben estar siempre conectados entre sí; dicho de otra forma, no hay que modificar el hardware o su configuración a la hora de ejecutar un programa. Con esta idea de partida, la arquitectura constaba de los siguientes bloques funcionales:


  • Unidad central de proceso (CPU), núcleo central del computador y encargado de realizar las operaciones básicas y de gestionar el funcionamiento del resto de componentes.
  • Memoria principal, lugar en el que se almacenan tanto datos como instrucciones.
  • Buses, es decir, el conexionado que permite la comunicación entre los distintos bloques funcionales del sistema.
  • Periféricos, los elementos que se encargan de tomar datos (teclado), mostrarlos en alguna salida (un monitor) o comunicarse con otros sistemas.


Si lo pensamos un momento, todos los bloques funcionales que forman la arquitectura de von Neumann nos sonarán familiares: la CPU como el procesador de nuestro PC, la memoria principal como la memoria RAM y los periféricos como nuestro monitor o nuestro teclado.




Esquema de la Arquitectura von Neumann
La CPU, a su vez, está formada por dos bloques: la unidad de control y la ALU (unidad aritmético-lógica). La unidad de control es la encargada de leer las instrucciones que hay en la memoria (es decir, el programa a ejecutar) y se encarga de enviar las órdenes a los componentes del procesador para así ejecutar las instrucciones que marca el programa (decodificando las instrucciones y enviando las órdenes necesarias al resto de componentes del procesador). Para realizar esta función, la unidad de control cuenta con un "contador de programa" que, secuencialmente, recorre las distintas posiciones de memoria y va recopilando los datos e instrucciones. Por otro lado, la unidad aritmético-lógica (ALU) es la responsable de realizar operaciones aritméticas (sumas, restas...) y lógicas (NOT, AND, OR, XOR...) con los datos recibidos.
Gracias a este esquema que se implementó en el EDVAC, el programa a ejecutar se podía almacenar en memoria y, por tanto, no había que modificar conexiones en el sistema (a diferencia de lo que ocurría en el ENIAC). En una primera fase, el EDVAC disponía de una unidad de cinta magnética como entrada pero, posteriormente, se le añadió un sistema de tarjetas perforadas como dispositivo de entrada. Además, otra de las peculiaridades del EDVAC es que trabajaba con datos en binario, es decir, datos codificados en bits, tal y como había establecido von Neumann.

Aquí les dejo un enlace de un video tutorial de la explicación de la arquitectura de John Neuman:

Hardware y Sotftware.

El sistema de computadoras es un conjunto de hardware y software a través del cual se procesa una aplicación.


Hardware: 


es el equipo físico, tales como las unidades mecánicas, electrónicas y magnéticas de una computadora.

Software: 


es el conjunto de programas (instrucciones) de la computadora que causan que ésta produzca los resultados deseados.


 Ejemplos:

El sorfware se clasifica en tres tipos:




Unidad Central De Procesamiento.


CPU

La unidad central de procesamiento (CPU) es el "cerebro" o centro nervioso de la computadora. Consta de la unidad de control, la unidad de aritmética y lógica y la unidad de almacenamiento de datos o memoria principal.

Las unidades centrales de procesamiento suelen distinguirse entre sí  por el número de bits ( bynary digits: dígitos binarios) que éstas pueden procesar simultáneamente. En la actualidad los microprocesador.





Esta Unidad Central de Proceso (CPU) está conformada por la Tarjeta Madre que a su vez contiene los siguientes elementos: a) el microprocesador, b) la memoria RAM, c) la memoria ROM, d) los ChipSet, e) los cables planos, f) los conectores y g) las ranuras o slots. 






Memoria Principal y Memoria Secundaria.


Memoria Principal


 Toda computadora posee una unidad de memoria central, llamada comúnmente Memoria Principal, en que se almacenan los datos e instrucciones en uso activo por la computadora. La memoria principal desempeña una variedad de funciones y puede ser visualizada como dividida en áreas, cada una de las cuales tiene un propósito diferente. La memoria principal desempeña una variedad de funciones y pueden ser visualizadas como dividida en áreas, cada una de las cuales tienen un propósito diferente. como lo podemos ver en la siguiente imagen: 

 




- Área del sistema operativo: controla la operación de la computadora.

- Área de almacenamiento intermedio de entrada: almacena los datos inmediatamente después de que la computadora los lee.

-Área de programas de aplicación: donde residen los programas del usuario.

-Área de almacenamiento de trabajo: para cálculos y almacenamiento temporal de datos.

-Área de almacenamiento intermedio de salida: almacena los datos antes de la salida.


En general, la memoria principal de la computadora puede expandirse; sin embargo, el costo es elevado y la expansión tiene un límite, pues no llega a brindar la capacidad suficiente de almacenamiento para todos los datos de una empresa. Por este motivo se debe recurrir a otras formas de memoria para almacenamiento secundario o auxiliar.

Memoria Secundaria o memoria auxiliar.

 La memoria secundaria es un tipo de memoria de ordenador que no es accedida directamente por la unidad de procesamiento central. Normalmente viene en un formato de memoria no volátil. Un ejemplo muy claro de una memoria secundaria la tenemos en el disco duro de nuestro ordenador, el cual se usa para almacenar el sistema operativo y otros programas. Otras formas de memorias secundarias incluyen los CDs que usamos para grabar música o almacenar datos y también los DVDs. También podemos incluir las memorias flash a esta categoría.



El almacenamiento secundario o memoria auxiliar en una computadora se usa con los siguientes fines:
- Almacenar grandes archivos de datos.



-Almacenar programas (o porciones de programas) que no están siendo ejecutados en ese momento por la computadora.



- Almacenar temporalmente los datos de entrada y/o salida.


Para que los datos que se encuentran en la memoria auxiliar puedan ser procesados por la Unidad Central de Procesamientos, éstos deben ser leídos y transferidos hacia la memoria principal.



La diferencia entre memoria principal y memoria auxiliar son de costo, capacidad de almacenamiento y velocidad de los diferentes dispositivos de memoria. como la velocidad computacional de una computadora depende en gran medida de la velocidad de su memoria principal, ésta está formada por circuitos integrados de semiconductores que son dispositivos mas rápidos. Aunque el costo por bit de la memoria de semiconductores disminuye constantemente, resulta aun más elevado que el costo de los dispositivos de almacenamiento secundario, como son los discos magnéticos, los cuales poseen mayor capacidad de almacenamiento a un menor costo por carácter.