- Clásico
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
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 [1].
(Diagrama a bloques de la arquitectura Von Newman)
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, y cambiarla
Procesador Memoria Principal
Almacena
el programa y
los datos
Entrada y salida
Bus principal
Registros
ALU
Unidad de
Control
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.
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 ocho bits en una memoria
aparte [6].
(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 [7].
- Segmentado
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
Procesador Memoria de datos
Entrada y salida
Bus de
datos
Memoria de
programa
Bus de
programa
Registros
ALU
Unidad de
Control
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.
(Búsqueda y ejecución en secuencia de tres instrucciones en un
procesador sin segmentación del cause)
En un procesador con segmentación del cause, 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.
(Comunicación entre las unidades en un procesador con segmentación de cauce)
Completando el ejemplo anterior, 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. La siguiente figura muestra este
proceso.
(Búsqueda y ejecución en secuencia de tres instrucciones en un
procesador con segmentación del cause)
En este esquema sigue tomando el mismo numero de ciclos de reloj (el mismo tiempo), pero como se
B1 E1 B2 E2 B3 E3
Unidad de
Búsqueda
Unidad de
ejecución Cola de Instrucciones
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 numero 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 salto. Esto reduce el desempeño del
procesador y aún se investigan maneras de predecir los saltos para evitar este problema [1].
(Consecuencias de la competencia por un recurso)
- Multiprocesamiento
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 (Clasificación de Flynn):
● SISO – (Single Instruction, Single Operand ) computadoras Monoprocesador
● SIMO – (Single Instruction, Multiple Operand ) procesadores vectoriales, Exenciones MMX
● MISO – (Multiple Instruction, Single Operand ) No implementado
● MIMO – (Multiple Instruction, Multiple Operand ) sistemas SMP, Clusters, GPUs
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, tales como
simuladores para predecir el clima, explosiones atómicas, reacciones químicas complejas, etc., donde
los datos son representados como grandes números de datos en forma matricial sobre los que se deben
se aplicar el mismo algoritmo numérico.
La mayoría de los procesadores modernos incluye algunas instrucciones de tipo vectorial, tales como
las extensiones al conjunto de instrucciones tales como MMX y SSE. Estas instrucciones les permiten
procesar flujos multimedia más eficientemente.
Los Procesadores Digitales de Señales (DSP), son procesadores especializados en el procesamiento de
señales tales como audio, vídeo, radar, sonar, radio, etc. Cuentan con instrucciones tipo vectorial que
los hace muy aptos para dicha aplicación. Suelen utilizarse en conjunto con un microcontrolador en
dispositivos como reproductores de audio, reproductores de dvd y Blueray, teléfonos celulares,
sistemas de entretenimiento, sistemas de adquisición de datos, instrumentos médicos, controles
industriales, etc.
Búsqueda Ejecución
Espera Espera
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.
Pueden formarse con varios núcleos en un solo circuito integrado o con varios circuitos integrados en
una misma tarjeta madre. La primera opción ha sido popularizada al hacerse más económicos los
procesadores multinucleo de los principales fabricantes y con su uso en sistemas de gama media y baja,
e inclusive en teléfonos celulares y tabletas. La segunda opción fue la que se uso en un principio y
sigue siendo usada en en estaciones de trabajo y en servidores de alto rendimiento debido a que
incrementa el poder computacional del sistema, pero también incrementa considerablemente el costo
del sistema.
(Diagrama a bloques de un sistema multiprocesador simétrico)
Los Clusters son conjuntos de computadoras independientes conectadas en una red de área local o por
un bis 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. Este tipo de computadora paralela se ha vuelto muy popular
por que permite usar los avances en los procesadores comerciales que tienen una muy buena relación
costo rendimiento y se puede incorporar rápidamente los avances que proporciona las nuevas
tecnologías en cuanto es económicamente viable.
Sin embargo, se debe tener cuidado al implementar la aplicación, ya que si los datos que hay que pasar
de un procesador a otro son demasiados, el tiempo empleado en pasar información de un nodo a otro
puede sobrepasar a la ganancia que se tiene al dividir el trabajo entre varios procesadores.
(Diagrama a bloques de un cluster)
Las unidades de procesamiento gráfico (Graphics Processing Unit GPU) – sistemas diseñados
originalmente para el procesamiento de Gráficos, con múltiples procesadores vectoriales sencillos
compartiendo la misma memoria, la cual también puede ser accedida por el CPU. Por la gran cantidad
de núcleos con los que cuenta, logran un excelente desempeño al ejecutar algoritmos que se adaptan a
ser paralelizados, a tal grado que muchas de las supercomputadoras más rápidas de la actualidad
utilizan estos procesadores, y los fabricantes de tarjetas gráficas producen versiones de sus productos
especializadas en acelerar los cálculos de propósito general [3].
(Diagrama a bloques de una unidad de procesamiento gráfico)
Para mas información visita aquí:
Excelente información , me sirvió de mucho , y aprendí mucho :)
ResponderEliminarBuena info de fácil comprensión, solo que como consejo, podrías cambiar los textos en azul para que resalten mas
ResponderEliminarEsta detallada la información, pero es algo escasa, sobre todo en la parte de segmentación
ResponderEliminarbuena información
ResponderEliminarMuy interesa , la elección de información que empleas para explicar tu tema , en general considero que mas material visual ayudaría bastante a las personas que consulten tu blog.
ResponderEliminarcreo que el texto es excesivo pero la información es útil así que talvez más recursos gráficos ayudarian
ResponderEliminar