Professional Documents
Culture Documents
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.
Una máquina de Von Neumann tenia 5 partes básicas: La memoria, la unidad Aritmética lógica, la
unidad de control del programa y los equipos de entrada y salida. La memoria constaba de 4096
palabras, cada una con 40 bits (0 o 1). Cada palabra podía contener 2 instrucciones de 20 bits o un
número entero de 39 bits y su signo. Las instrucciones tenían 8 bits dedicados a señalar el tiempo de
la misma y 12 bits para especificar alguna de las 4096 palabras de la memoria.
Dentro de la unidad aritmética/lógica, el antecedente directo actual CPU, había un registro interno
especial de 40 bits llamado acumulador. Una instrucción típica era sumar una palabra de la memoria
al acumulador o almacenar este en la memoria.
La máquina no manejaba la aritmética de punto flotante, porque Von Neumann pensaba que
cualquier matemático competente debería ser capaz de llevar la cuenta del punto decimal (en este
caso del punto binario), mentalmente.
Hay algunas desventajas para el diseño de Von Neumann. Aparte del cuello de botella de Von
Neumann 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 de otras formas de control de acceso pueden proteger tanto de modificaciones
accidentales como de programas maliciosos.
Banco de registros
Proporciona un espacio de almacenamiento para los datos con los que trabaja la CPU. Los
registros se deben cargar con información que proviene de la memoria principal antes de
comenzar a operar, cuando se necesita dejar espacio libre en el banco de registros para
operar con nuevos datos su valor debe escribirse en la memoria principal.
Operar con datos en el banco de registros es mucho más rápido que operar con datos que
se encuentran en la memoria principal, por eso, cuanto mayor sea el banco de registros se
requerirán menos trasvases con la memoria principal y la tarea se realizará antes.
Es posible que no todos los registros tengan las mismas características. Normalmente se
distingue entre:
Unidad de control
Se encarga de leer las instrucciones máquina almacenadas en la memoria principal y de
generar las señales de control necesarias para controlar y coordinar el resto de las
unidades funcionales de un ordenador, con el fin de ejecutar las instrucciones leídas.
Partes fundamentales:
Buses
La memoria principal tiene por objeto guardar información que es accesible a la CPU. La
CPU puede leer y/o escribir datos en las diferentes posiciones de memoria que componen la
memoria principal.
La memoria principal tiene menor capacidad que la memoria secundaria (que virtualmente
es ilimitada), pero es mucho más rápida. Actualmente la memoria principal se implementa
mediante circuitos integrados. La memoria principal de los sistemas informáticos suele
estar formada por dos áreas diferenciadas:
a. Memoria RAM (Random Access Memory): Memoria de acceso aleatorio (no tiene porqué
ser utilizada de manera secuencial) que permite tanto la lectura como la escritura.
Habitualmente en los sistemas informáticos se trata de un medio de almacenamiento
volátil, de manera que se pierde su contenido al cesar la alimentación.
b. Memoria ROM (Read Only Memory): Memoria de acceso aleatorio que sólo permite la
lectura de los datos que almacena. Se trata de un medio de almacenamiento persistente,
pues no pierde su contenido cuando cesa la alimentación.
Los buses son las vias de comunicación que permiten mover la información entre los
distintos elementos de la arquitectura Von Newmann.
Desde el punto de vista electrónico un bus es una serie de pistas que transportan
información entre diferentes elementos. El número de líneas que tiene el bus determina el
número de bits que se pueden transportar en paralelo. Los buses suelen ser elementos
síncronos que funcionan gobernados por un reloj. Normalmente en cada ciclo de reloj se
transporta un dato (de 8, 16 o 32 bits según la anchura del bus), también existen buses que
realizan dos operaciones en cada ciclo de reloj (utilizan tanto el flanco de bajada como el
flanco de subida).
Ejemplo:
Si el bus fuese capaz de utilizar tanto el flanco de subida como el de bajada para transmitir
información, se doblaria la capacidad útil.
Bus de datos:
Como su nombre indica transporta datos. Estos datos pueden ser la información que se
está procesando o las instrucciones del programa que se ejecuta. Hay que recordar que en
la arquitectura Von Newmann el programa está guardado en el interior del sistema
informático codificado como información.
El ancho en bits del bus de datos define el tamaño de la palabra del sistema informático,
habitualmente es 8bits, 16bits, 32bits o 64bits.
Bus de direcciones:
El bus de direcciones se utiliza para indicar el origen y/o el destino de los datos. En el bus
de direcciones se indica la posición de memoria a la que se está accediendo en cada
momento. Puede tratarse de una dirección de la memoria principal o puede tratarse de
una dirección de memoria en la que está mapeado un periférico.
El ancho en bits del bus de direcciones determina el tamaño del espacio de memoria
direccionable.
Bus de control:
El bus de control proporciona señales para coordinar las diferentes tareas que se realizan en el
sistema informático.
Algunas de las señales que podemos encontrar:
CLK: Frecuencia de reloj
CS (Chip select): Activa el chip a utilizar
READY: Está disponible el dispositivo ?
R/W: Se trata de una operación de lectura o escritura ?
El canal de transmisión de los datos compartido entre CPU y memoria genera un cuello de botella
de Von Neumann, un rendimiento limitado (tasa de transferencia de datos) entre la CPU y la
memoria en comparación con la cantidad de memoria. En la mayoría de computadoras modernas, la
velocidad de comunicación entre la memoria y la CPU es más 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 mefmoria.
El problema de rendimiento puede ser aliviado (en parte) utilizando diversos mecanismos.
Ofreciendo una memoria caché entre la CPU y la memoria principal.
Proporcionando caches separadas o vías de acceso independientes para datos e instrucciones (la
llamada arquitectura Harvard modificada), utilizando algoritmos y lógica de predicción 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 eludirse, 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.