Professional Documents
Culture Documents
Arquitctura de Harvard
Arquitctura de Harvard
INFOCAL 2-5-2022
ARQUITECTURA DE VON NEUMANN.
La CPU es el lugar en el que se procesa la información de acuerdo a las instrucciones del programa.
La CPU de un sistema informático repite una serie de pasos en los que continuamente accede a
memoria para leer la próxima instrucción a ejecutar, realiza lo que ordena la instrucción y vuelta a
empezar.
Cuando la CPU está implementada en un único circuito integrado se llama microprocesador.
En una CPU podemos distinguir:
Unidad aritmético lógica (ALU Arithmetic and logical unit)
Se encarga de realizar las operaciones aritméticas (sumas, restas, multiplicaciones, etc..) y lógicas
(AND, OR, rotaciones, desplazamientos, etc…) con los datos. Normalmente los datos con los que
opera, así como los resultados de la operación se encuentran en registros de la CPU.
Las operaciones que es capaz de realizar están definidas por el juego de instrucciones de la CPU. Es
posible encontrar ALUs con capacidades orientadas hacia la operación con valores enteros, coma
flotante o números imaginarios (por ejemplo en las DSP.)
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:
Busess
Transportan la información entre los diferentes elementos de la CPU. Se distingue entre el bus de
datos (que transporta la información que se está procesando) y el bus de control (que proporciona
toda la señalización necesaria para realizar el trabajo de forma ordenada).
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).
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 Neumann 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.
Memoria principal
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:
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.
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.
ARQUITECTURA DE HARVARD
Origen
Modelo
Este modelo se caracteriza en que los buses de información y el almacenamiento se encuentran
separados físicamente para los datos y el código del programa.
Como los buses funcionan de manera autónoma, los datos y las instrucciones del programa se
pueden obtener al mismo tiempo, mejorando así la velocidad sobre el diseño de bus único.
Por tanto, el modelo Harvard resulta tener mayor complejidad. Sin embargo, al tener los buses de
forma independiente se evita el cuello de botella producido por la arquitectura von Neumann.
Una computadora puede ser más veloz para un circuito de cierta complejidad, porque buscar las
instrucciones y acceder a los datos no tienen que luchar por un solo bus de memoria.
Para trabajar existen dos direcciones de memoria. Por tanto, hay un registro de memoria para las
instrucciones de máquina y otro registro de memoria para los datos.
A diferencia de la arquitectura von Neumann, que utiliza un bus para mover tanto las instrucciones
como los datos de la memoria, la arquitectura Harvard usa un área de memoria para los datos y
otro para las instrucciones.
Por ejemplo, en una versión simple de esta arquitectura, la unidad de recuperación del programa
podría estar ocupada recuperando la siguiente instrucción en la secuencia del programa y en
paralelo realizar una operación de transferencia de datos que pudieron haber sido parte de la
anterior instrucción del programa.
En este nivel la arquitectura Harvard tiene una limitación, ya que generalmente no es posible
colocar el código del programa en la memoria de datos y ejecutarlo desde allí.
Adiciones en la arquitectura
A la forma simple de la arquitectura Harvard se pueden agregar muchas variantes existentes de
mayor complicación.
Una adición común es agregar un almacenamiento caché de instrucciones al bus de datos del
programa, que le permita a la unidad de ejecución de instrucciones un acceso más rápido al
siguiente paso del programa, sin tener que ir a una memoria más lenta para obtener el paso del
programa cada vez que se requiera.
Direcciones de memoria
Una computadora con arquitectura Harvard tiene distintas áreas de direcciones de datos y de
instrucciones: la dirección uno de instrucciones no es la misma área que la dirección uno de datos.
La dirección uno de instrucciones podría contener un valor de veinticuatro bits, mientras que la
dirección uno de datos podría indicar un byte de ocho bits, que no es parte de ese valor de
veinticuatro bits.
Sistema de memoria
Como se tiene un área de memoria separado para las instrucciones y los datos, separando tanto
las señales como el almacenamiento en memoria del código y los datos, esto hace posible acceder
simultáneamente a cada uno de los sistemas de memoria.
Ventajas
– Hay menos posibilidades de corrupción en la transmisión, ya que los datos y las instrucciones se
transfieren a través de diferentes buses.
– Se accede a los datos y a las instrucciones de la misma manera.
– Permite diferentes medios de almacenamiento para las instrucciones y los datos. Por ejemplo, se
pueden poner las instrucciones en una ROM económica y los datos en una RAM costosa.
– Las dos memorias pueden usar diferentes tamaños de celda, con lo cual se hace un uso efectivo
de los recursos.
– Se tiene un mayor ancho de banda de memoria, que es más predecible por tener memorias
separadas para las instrucciones y datos.
Nivel de protección
En sistemas que no tengan una unidad de administración de memoria ofrece un nivel de
protección adicional, ya que no se podrá comenzar a ejecutar datos como si fuera código, lo que
expondría al sistema a numerosos problemas, tal como el desbordamiento de búfer.
Es por eso que es popular con los sistemas integrados pequeños, como el microondas o un reloj.
Mayor velocidad
La arquitectura Harvard puede leer una instrucción y también realizar el acceso a la memoria de
datos simultáneamente a una velocidad rápida.
Ofrece un mayor rendimiento, ya que permite la obtención simultánea de datos e instrucciones
por guardarse en memorias separadas y viajar a través de buses diferentes.
Una arquitectura Harvard generalmente ayudará a que una computadora con cierto nivel de
complejidad funcione más rápido que una arquitectura Von Neumann, siempre que no sea
necesario compartir recursos entre las memorias de datos y del código.
Si las limitaciones de pines u otros factores obligan al uso de un solo bus para acceder a ambos
espacios de memoria, es probable que tales ventajas se anulen en gran medida.
Desventajas
El problema con la arquitectura Harvard es su gran complejidad y costo debido a que, en lugar de
un bus de datos, ahora se necesitan dos.
La producción de una computadora con dos buses es mucho más costosa y lleva más tiempo
fabricarla. Requiere una unidad de control para dos buses, que es más complicada y cuyo
desarrollo es costoso y necesita más tiempo.
Esto significa una implementación más compleja para los fabricantes. Requiere más pines en la
CPU, una tarjeta madre más compleja y tener que duplicar los chips de la RAM, así como un diseño
de caché más complejo.
Poca utilización
La arquitectura Harvard no se usa mucho, por lo que es más difícil de implementar. Es por eso que
rara vez se usa fuera de la CPU.
Sin embargo, esta arquitectura a veces se utiliza dentro de la CPU para manejar sus cachés.
Cuando hay espacio libre en la memoria de datos no se puede utilizar para almacenar
instrucciones y viceversa.
Por tanto, las memorias particulares que se dedican a cada uno de ellos deben hacerse
cuidadosamente equilibradas en su fabricación