ARQUITECTURA CLÁSICA
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
(Von 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 máquina 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.
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 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. 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.
Arquitectura Harvard
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.
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.
ARQUITECTURA SEMENTADA
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.
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 las
instrucciones.
En un
procesador con segmentación del cauce, cada una de estas etapas se asigna a una
unidad funcional diferente, la búsqueda a la unidad de búsqueda y la ejecución
a la unidad de ejecución. Estas unidades pueden trabajar en forma paralela en
instrucciones diferentes. Estas unidades se comunican por medio de una cola de
instrucciones en la que la unidad de búsqueda coloca los códigos de
instrucción que
leyó para que la unidad de ejecución los tome de la cola y los ejecute. Esta
cola se parece a un tubo donde las instrucciones entran por un extremo y salen por
el otro. De esta analogía proviene el nombre en ingles: Pipelining o
entubamiento..
En un
procesador con segmentación, la unidad de búsqueda comenzaría buscando el código
de la primera instrucción en el primer ciclo de reloj. Durante el
segundo ciclo
de reloj, la unidad de búsqueda obtendría el código de la instrucción 2,
mientras que la unidad de ejecución ejecuta la instrucción 1 y así sucesivamente.
En este esquema
sigue tomando el mismo número de ciclos de reloj (el mismo tiempo), pero como
se trabaja en varias instrucciones al mismo tiempo, el número promedio de
instrucciones por segundo se multiplica. La mejora en el rendimiento no es
proporcional al número de segmentos en el cauce debido a que cada etapa no toma
el mismo tiempo en realizarse, además de que se puede presentar competencia por
el uso de algunos recursos como la memoria principal. Otra razón por la que las
ventajas de este esquema se pierden es cuando se encuentra un salto en el
programa y todas las instrucciones que ya se buscaron y se encuentran en la
cola, deben descartarse y comenzar a buscar las instrucciones desde cero a
partir de la dirección a la que se saltó. Esto reduce el desempeño del procesador y
aún se investigan maneras de predecir los saltos para evitar este problema.
ARQUITECTURA DE
MULTIPROCESAMEINTO
Cuando se desea
incrementar el desempeño más aya de lo que permite la técnica de segmentación
del cauce (limite teórico de una instrucción por ciclo de reloj), se requiere utilizar
más de un procesador para la ejecución del programa de aplicación.
Las CPU de
multiprocesamiento se clasifican de la siguiente manera:
● SISO – (Single Instruction,
Single Operand) computadoras independientes
● SIMO – (Single Instruction,
Multiple Operand) procesadores vectoriales
● MISO – (Multiple
Instruction, Single Operand) No implementado
● MIMO – (Multiple
Instruction, Multiple Operand) sistemas SMP, Clusters
Procesadores
vectoriales – Son computadoras pensadas para aplicar un mismo algoritmo
numérico a una serie de datos matriciales, en especial en la simulación de
sistemas físicos complejos.
En los sistemas
SMP (Simetric Multiprocesesors), varios procesadores comparten la misma memoria
principal y periféricos de I/O, Normalmente conectados por un bus común. Se
conocen como simétricos, ya que ningún procesador toma el papel de maestro y
los demás de esclavos, sino que todos tienen derechos similares en cuanto al
acceso a la memoria y periféricos y ambos son administrados por el sistema
operativo.
Los Clusters
son conjuntos de computadoras independientes conectadas en una red de área
local o por un bit de interconexión y que trabajan cooperativamente para
resolver un problema. Es clave en su funcionamiento contar con un sistema
operativo y programas de aplicación capaces de distribuir el trabajo entre las
computadoras de la red.
No hay comentarios:
Publicar un comentario