1.1 Modelos de arquitecturas de cómputo.
1.1.1 Arquitecturas Clásicas.
Estas arquitecturas se desarrollaron en las primeras computadoras electromecánicas y de tubos de
vacío.
Aun
son usadas en procesadores empotrados de gama baja y son la base de la mayoría de las arquitecturas modernas
Arquitectura Mauchly-Eckert (Vonb Newman)
Esta arquitectura fue utilizada en la computadora ENIAC. Consiste en una unidad central de proceso
que se
comunica a través de un solo bus con un banco de memoria en donde se almacenan tanto los
códigos de instrucción del
programa, como los datos que serán
procesados por este.
Esta arquitectura
es la más empleada en la
actualidad
ya, que es muy
versátil. Ejemplo
de esta versatilidad
es el funcionamiento de los compiladores, los cuales son
programas que toman como
entrada un archivo de
texto conteniendo código fuente
y generan como datos de salida, el código maquina
que corresponde a dicho código fuente
(Son programas que crean o modifican otros programas). Estos datos de
salida pueden ejecutarse como un programa posteriormente ya
que se usa la
misma memoria
para datos y para el código del
programa.
Figura 1.1.1.2 Diagrama
a bloques de la arquitectura Von
Newman.
Arquitectura Harvard
La principal desventaja de esta arquitectura, es que el
bus de datos y direcciones
único se convierte en
un cuello de botella por el cual
debe pasar toda la información que se lee de o se escribe a la memoria,
obligando a que todos los
accesos a esta
sean secuenciales. Esto limita
el grado
de paralelismo (acciones que se pueden realizar al mismo tiempo) y por lo tanto, el desempeño de la computadora.
Este efecto
se conoce como el cuello de botella de
Von Newman
En esta arquitectura apareció por primera vez el concepto de programa almacenado. Anteriormente la secuencia de las operaciones era dictada por el alambrado de la unidad de control, e cambiarla implicaba un proceso de recableado laborioso, lento(hasta tres semanas) y propenso a errores. En esta arquitectura se asigna un código numérico a cada instrucción. Dichos códigos se almacenan en la
misma
unidad de memoria que los datos que van a procesarse, para
ser
ejecutados en el orden
en que se
encuentran almacenados en memoria. Esto
permite
cambiar rápidamente la aplicación de la
computadora y dio origen a las computadoras
de propósito general
Mas a detalle, el
procesador se subdivide
en una unidad de control (C.U.), una unidad lógica aritmética (A.L.U.) y una
serie de registros. Los registros sirven para
almacenar internamente
datos y estado del procesador. La unidad
aritmética lógica proporciona la capacidad
de realizar operaciones aritméticas y lógicas. La unidad de control genera las señales de control para leer el código de las
instrucciones,
decodificarlas y hacer que la ALU las ejecute.
Esta arquitectura surgió en la universidad del mismo nombre, poco después de que la arquitectura
Von Newman apareciera en la universidad de Princeton.
Al
igual que en la arquitectura Von Newman, el programa se almacena como un código
numérico en la memoria, pero no en el mismo espacio de
memoria ni en el mismo formato que los datos. Por ejemplo, se pueden almacenar las instrucciones en doce bits en la
memoria de programa, mientras los datos de
almacenan en 8 bits en
una memoria aparte.
Figura 1.1.1.2 Diagrama
a bloques de la arquitectura
Harvard
El hecho de tener un bus separado para el programa y otro para los datos permite que se lea el código de operación de una
instrucción, al mismo tiempo se
lee
de la memoria de
datos los operados de
la instrucción previa. Así se evita el problema del cuello de botella de Von Newman y se obtiene un mejor
desempeño.
En la actualidad la mayoría de los procesadores modernos se conectan al exterior de manera similar a a la arquitectura
Von Newman, con un banco de memoria masivo único, pero internamente incluyen varios niveles de memoria cache con
bancos separados en cache
de programa y cache de datos,
buscando un mejor desempeño
sin
perder la versatilidad.
1.1.2 Arquitecturas Segmentadas.
Las arquitecturas segmentadas o con segmentación del cauce buscan mejorar el desempeño realizando
paralelamente varias etapas del ciclo de instrucción al mismo tiempo. El procesador se divide en varias unidades funcionales independientes y
se dividen entre ellas el procesamiento de las instrucciones.
Para comprender mejor esto, supongamos
que un procesador simple
tiene
un ciclo de instrucción sencillo
consistente solamente en una etapa de búsqueda del código de instrucción
y en
otra etapa de ejecución de la instrucción. En un
procesador sin segmentación del cauce, las dos etapas se realizarían de manera
secuencial para cada una de la instrucciones,
como lo muestra
la siguiente figura.
B1
|
E1
|
B2
|
E2
|
B3
|
E3
|
Figura 1.1.2.1 Búsqueda
y ejecución en secuencia de tres instrucciones en
un procesador sin segmentación
del cause