Descargar

Arquitectura paralela

Enviado por vperalesf


    1. Procesamiento Paralelo
    2. Arquitectura Paralela
    3. Línea paralela aritmética
    4. Línea paralela de instrucciones
    5. Arquitectura paralela RISC

    1. PROCESAMIENTO PARALELO

    El procesamiento paralelo es un término que se usa para denotar un grupo de técnicas significativas que se usan para proporcionar tareas simultáneas de procesamiento de datos con el fin de aumentar la velocidad computacional de un sistema de computadoras. En lugar de procesar cada instrucción en forma secuencial como es una computadora convencional, un sistema de procesamiento paralelo puede ejecutar procesamiento concurrente de datos para conseguir un menor tiempo de ejecución. Por ejemplo, cuando se ejecuta una instrucción en la ALU, puede leerse la siguiente instrucción de la memoria. El sistema puede tener 2 o mas ALUS y ser capaz de ejecutar dos o mas instrucciones al mismo tiempo. Además, el sistema puede tener dos o más procesadores operando en forma concurrente. EL propósito del procesamiento paralelo es acelerar las posibilidades de procesamiento de la computadora y aumentar su eficiencia, esto es, la capacidad de procesamiento que puede lograrse durante un cierto intervalo de tiempo. La cantidades de circuitería aumenta con el procesamiento paralelo y, con el, también el costo del sistema. Sin embargo, los descubrimientos tecnológicos han reducido el costo de la circuetería a un punto en donde las técnicas de procesamiento paralelo son económicamente factibles.

    El procesamiento paralelo puede considerarse de diversos niveles de complejidad. En el nivel mas bajo, distinguimos entre operaciones seriales y paralelas mediante el tipo de registros que utilizan. Los registros de corrimiento operan en forma serial un bit a la vez, mientras que los registros con carga paralela operan con todos los bits de la palabra en forma simultánea.

    Puede obtenerse procesamiento paralelo a un nivel más alto de complejidad al tener múltiples unidades funcionales que ejecuten operaciones idénticas o diferentes, de manera simultánea. El procesamiento paralelo se establece al distribuir los datos entre las unidades funcionales múltiples. Por ejemplo, las operaciones aritmétiocas, lógicas y de corrimiento pueden separarse en tres unidades y dividirse los operandos a cada una, bajo la supervisión de una unidad de control.

    Fig. 1 Procesador con unidades funcionales mútliples

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    La Fig. 9-1. muestra una manera posible de separar la unidad de ejecución en 8 unidades funcionales que operan en paralelo. Los operando en los registros se aplican a una de las unidades, dependiendo de la operación especificada, mediante la instrucción asociada con los operandos.

    La operación ejecutada en cada unidad funcional se indica en cada bloque del diagrama. El sumador y el multiplicador de enteros ejecutan las operaciones aritméticas con números enteros. Las operaciones de punto flotante se separan en tres circuitos que operan en paralelo. Las operaciones lógicas de corrimiento y de incremento pueden ejecutarse en forma concurrente sobre diferentes datos. Todas las unidades son independientes unas de otra, por lo que puede correrse un número mientras otro se incrementa. Por lo general, una organización multifuncional esta asociada con una unidad de control compleja para coordinar todas las agilidades entre los diferentes componentes.

    Existen varias maneras de clasificar el procesamiento paralelo. Puede considerarse a partir de la organización interna de los procesadores, desde la estructura de interconexión entre los procesadores o desde del flujo d e información a través del sistema. Una clasificación presenta por M. J. Flynn considera la organización de un sistema de computadora mediante la cantidad de instrucciones y unidades de datos que se manipulan en forma simultánea. La operación normal de una computadora es recuperar instrucciones de la memoria y ejecutarlas en el procesador. La secuencia de instrucciones leídas de la memoria constituye un flujo de instrucciones. Las operaciones ejecutada sobre los datos en el procesador constituyen un flujo de datos.

    El procesamiento paralelo puede ocurrir en el flujo de instrucciones, en el flujo de datos o en ambos. La clasificación de Flynn divide a las computadoras en cuatro grupo principales de la manera siguiente:

    Flujo de instrucción único, Flujo de datos único (SISD)

    Flujo de instrucción único, Flujo de datos Múltiple (SIMD)

    Flujo de instrucción Múltiple, Flujo de datos único (MISD)

    Flujo de instrucción Múltiple, Flujo de datos Múltiple (MIMD)

    SISD. Representa la organización de una computadora única que contiene una unidad de control, una unidad de procesador y una unidad de memoria. Las instrucciones se ejecutan en forma secuencial y el sistema puede tener o no tener posibilidades de procesamiento paralelo. En este caso el procesamiento paralelo puede lograrse mediante unidades funcionales múltiples o mediante una arquitectura paralela.

    SIMD. Representa una organización que influye muchas unidades de procesamiento bajo la supervisión de una unidad de control común. Todos los procesadores reciben la misma instrucción de la unidad de control, pero operan sobre diferentes conjuntos de datos. La unidad de memoria compartida debe de contener módulos múltiples para que pueda comunicarse con todos los procesadores simultáneamente. LA estructura MISD es sola de intereses teórico porque no se ha construido ningún sistema práctico utilizando esta organización. La organización MIMD se refiere a un sistema de computadoras capaz de procesar múltiples programas al mismo tiempo la mayoría de los sistemas de multicomputadoras y multiprocesador pueden clasificarse en esta categoría.

    La clasificación de Flynn depende en la diferencia entre el desempeño de la unidad de control y el de la unidad de procesamiento de datos.

    Enfatiza las características de desempeño del sistema de computadoras más que sus interconexiones estructurales y operacionales. Un tipo de procesamiento paralelo que no entra en la clasificación flynn es la arquitectura paralela (pipe-line) Las únicas dos categorías utilizadas de esta clasificación son los procesadores de arreglo SIMD, analizados en la sección 9-7 y MIMD.

    El procesamiento por arquitectura paralela es una técnica de implantación en donde las suboperaciones aritméticas o las fases de un ciclo de instrucción de computadora se traslapan en su ejecución el procesamiento de vectores relaciona con los cálculos que implican vectores y matrices grandes. Los procesadores de arquitectura paralela ejecutan cálculos sobre arreglos de datos grandes.

    2 Arquitectura Paralela

    La arquitectura paralela o de líneas paralelas (pipe-line), es una técnica en la que se descomponen un proceso secuencial en suboperaciones, y cada subproceso se ejecuta en un segmento dedicado especial que opera en forma concurrente con los otros segmentos. Una línea puede considerarse como un conjunto de segmentos de procesamiento por el que fluye información binaria. Cada segmento ejecuta un procesamiento parcial, dictado por la manera en que se divide la tarea. El resultado obtenido del cálculo en cada segmento se transfiere al siguiente segmento en la línea. El resultado final se obtiene después de que los datos han recorrido todos los segmentos. El nombre "línea" implica un flujo reinformación similar a una línea de ensamblado industrial. Es característico de las líneas que varios cálculos puedan estar en proceso en distintos segmentos, al mismo tiempo. La simultaneidad de los cálculos es posible al asociar un registro con cada segmento en la línea. Los registros proporcionan aislamiento entre cada segmento para que cada uno pueda operar sobre datos distintos en forma simultánea.

    Tal vez la manera más simple de apreciar la arquitectura de líneas paralelas es imaginar que cada segmento consta de un registro de entrada seguido de un circuito combinatorio. El registro contiene los datos y el circuito combinatorio ejecuta las suboperación en el segmento particular. La salida del circuito combinacional es un segmento dado se aplica al registro de entrada del siguiente segmento. Se aplica un reloj a todos los registros después de que se ha transcurrido un tiempo suficiente para ejecutar toda la actividad del segmento. De esta manera la información fluye por la línea un paso a la vez.

    La organización de la línea se mostrará mediante un ejemplo:

    Supongamos que deseamos ejecutar las operaciones multiplicar y sumar combinadas con un flujo de números.

    Ai * B1 + Ci para i=1,2,3,…7

    Cada suboperación se va a implantar en un segmento dentro de la línea.

    Cada segmento tiene uno o dos registros y un circuito combinatorio, como se muestra en la figura 9.2. De R1 a R5 son registros que reciben nuestros datos con cada pulso de reloj. El multiplicador y el sumador son circuitos combinatorios. Las suboperaciones ejecutadas en cada segmento del conducto son las siguientes:

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    Los cinco registros se cargan con datos nuevos en cada pulso de reloj. El efecto de cada pulso de reloj se muestra en la tabla 9.-1 El primer pulso de reloj transfiere A1 y B1 dentro de R1 y R2. El segundo pulso de reloj transfiere el producto de R1 y R2 dentro de R3 y C1 dentro de R4. El mismo pulso de reloj transfiere A2 y B2 dentro de R1 y R2. El tercer pulso de reloj opera sobre los tres segmentos en forma simultánea. Coloca a A3 y B3 dentro de R1 y R2, transfiere el producto R1 y R2 dentro de R3, transfiere C2 dentro de R4 y coloca la suma de R3 y R4 dentro de R5. Se necesita tres pulsos de reloj para llenar la línea y recuperar la primera salida de R5. De ahí en adelante, cada ciclo de reloj produce una nueva salida y mueve los datos un paso adelante en la línea. Estos sucede en tanto fluyan nuevos datos dentro del sistema cuando ya no hay datos de entrada disponibles, el reloj debe continuar hasta que emerge la última salida de la línea

    GRAFICO 2 Ejemplo de Procesamiento Paralelo

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    Tabla 1 Contenido de registros en el ejemplo de arquitectura paralela

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

      Consideraciones generales

    Cualquier operación que pueden descomponerse en una secuencia de suboperaciones de

    aproximadamente la misma complejidad, puede implementarse mediante un procesador de arquitectura paralela. La técnica es eficiente para aquellas aplicaciones que necesitan repetir la

    misma tarea muchas veces con diferentes conjuntos de datos. La estructura general de una línea de cuatros segmentados se ilustra en la figura 9.3. Los operandos recorren los cuatros segmentos de una secuencia fija. Cada segmento consta de cada circuito combinacional Si Que ejecuta una suboperación sobre el flujo de datos que fluyen por la línea. Los segmentos se separan mediante registros Ri Que contienen los resultados intermedios entre las etapas. La información fluye entre etapas adyacentes bajo el control de un reloj común aplicado a todos los registros en forma simultánea definimos una tarea como la operación total ejecutada cuando se recorren todos los segmentos en la línea.

    Figura 3

    Línea paralela de cuatro segmentos

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    El desempeño de la arquitectura paralela puede ilustrarse mediante un diagrama espacio- tiempo. Este es un diagrama que muestra la utilización del segmento como una función del tiempo. El diagrama espacio-tiempo de un conducto con cuatro segmentos se muestra en la figura 9.4 El eje horizontal muestra el tiempo en ciclos de reloj y el eje vertical proporciona el número de segmentos el diagrama muestra seis tareas de la T1 a la T6 ejecutada en cuatros segmentos. Al principio, ala tarea T1 se maneja mediante el segmento.

    1.Después del primer ciclo de reloj, el segmento 2 esta ocupado con T1 mientras que el segmento 1 esta ocupado con la tarea T2. A continuar de esta manera la primera tarea T1 se complementa después del cuarto ciclo de reloj. De ahí en adelante la línea completa una tarea en cada ciclo de reloj.

    No importa cuantos segmentos existan en el sistema, una vez que la línea esta llena, solo se necesita un periodo de reloj para obtener una salida.

    Ahora consideremos el caso en donde se utiliza una línea de K de segmentos para ejecutar "n" tareas con un tiempo de ciclo de reloj Tp, la primera tarea T1 necesita un tiempo igual a KTp para completar su operación, porque existen K segmentos en la línea. Las n-1 tareas restantes emergen en la línea a una velocidad de una tarea por ciclo de reloj y se terminará después de un tiempo igual (n-1)tp por lo tanto, para completar n tareas una línea en K segmentos se necesita K+ (n-1) ciclos de reloj. Por ejemplo, el diagrama de la figura 9-4 muestra cuatros segmentos y seis tareas. El tiempo requerido para completar todas las operaciones es 4 + (6-1)=9 ciclos de reloj según se indica en el diagrama.

    1

    2

    3

    4

    5

    6

    7

    8

    9

     

    Ciclos de reloj

    Segmento 1

    T1

    T2

    T3

    T4

    T5

    T6

    2

    T1

    T2

    T3

    T4

    T5

    T6

    3

    T1

    T2

    T3

    T4

    T5

    T6

    4

    T1

    T2

    T3

    T4

    T5

    T6

    Figura 9.4 Diagrama espacio-tiempo para línea paralela

    A continuación consideremos una unidad de arquitectura no paralela que ejecuta la misma operación y requiere un tiempo igual a Tn para completar cada tarea. El tiempo total requerido para n tareas es NTn. La aceleración de un procesamiento por arquitectura paralela sobre un procesamiento no paralelo equivalente se define mediante la relación:

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    Conforme aumenta la cantidad de tareas, n se vuelve mucho más grande que K-1, y K+n-1 se aproxima al valor de n. Bajo esta condición, la aceleración se convierte en:

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    Si consideramos que el tiempo que se necesita para procesar una tarea es igual en una arquitectura paralela y en una arquitectura no paralela, tendremos Tn = KTp.

    Al incluir esta suposición, la aceleración se reduce a:

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    Esto muestra que la máxima aceleración teórica que puede proporcionar un conducto es K, en donde K es la cantidad de segmentos en el conducto

    Para duplicar la ventaja de velocidad teórica de un proceso paralelo mediante unidades funcionales múltiples, es necesario construir k segmentos iguale el desempeño de k copias de un circuito de arquitectura no paralela equivalente bajo condiciones de operación iguales. Esto se ilustra en la figura 9-5, en donde están conectados en paralelo cuatro circuitos idénticos. Cada circuito P ejecuta la misma tarea de un mismo circuito con arquitectura paralela equivalente. En lugar de operar con los datos de entrada en secuencia, como en una línea, los circuitos paralelos aceptan cuatro conjuntos de datos de entrada en forma simultánea y ejecutan cuatro tareas al mismo tiempo. En lo que se refiere a la velocidad de operación esta es equivalente a una línea con cuatro segmentos. Nótese que el circuito de cuatro unidades de la figura 9-5, constituye una organización de instrucción única, datos múltiples en paralelo.

    Figura 5 Unidades funcionales múltiples en paralelo

    Existen varias razones por las que una arquitectura paralela no puede operar a su máxima velocidad teórica. Los diferentes segmentos pueden requerir tiempos diferentes para completar su suboperación. Debe elegirse el ciclo de reloj para iguale el tiempo de retraso del segmento con el máximo tiempo de propagación. Esto provoca que los otros segmentos desperdicien tiempo mientras esperan el siguiente ciclo de reloj. Además no siempre es correcto considerar que un circuito de arquitectura tiene el mismo retraso de tiempo que un circuito con arquitectura paralela equivalente. Muchos de los registros intermedios no se necesitarán en un circuito de una sola unidad el cual, por lo general, puede construirse por completo como un circuito combinatorio. No obstante, la técnica de arquitectura paralela proporciona una operación mas rápida que una secuencia puramente serial, aunque nunca se logra por completo la máxima velocidad teórica.

    Existen dos áreas de diseño de computadoras en las que es aplicable la organización paralela. Una línea aritmética divide una operación aritmética en suboperaciones que se ejecutan en los segmentos de la línea. Una línea de instrucciones opera sobre un flujo de instrucciones al sobreponer las fases de recuperación, decodificación y ejecución. En las siguientes secciones se explican los dos tipos de líneas.

    3 Línea paralela aritmética

    Por lo general, se encuentran unidades aritméticas de arquitectura paralela en computadoras de gran velocidad. Se usan para implantar operaciones de punto flotante, multiplicación de números de punto fijo y cálculos similares encontrados en problemas científicos. En esencia, un multiplicador de arquitectura paralela es un arreglo multiplicador como el que se describe en la figura 10-10, con sumadores especiales diseñados para minimizar el tiempo de propagación de acarreo mediante los productos parciales. Las operaciones de punto flotante se descomponen con facilidad en suboperaciones, como se muestra en la sección 10-5. Ahora mostraremos un ejemplo de una unidad paralela para suma y resta de punto flotante.

    Las entradas para la línea sumadora de punto flotante son dos números binarios normalizados de punto flotante.

    X = A X 2ª

    Y = B X 2b

    A y B son dos fracciones que representan las mantisas, en tanto que a y b son los exponentes. Puede ejecutarse la suma y resta de punto flotante en cuatro segmentos, como se muestra en la figura 9-6. Los registros etiquetados R se colocan entre los segmentos para almacenar los resultados intermedios. Las suboperaciones que se ejecutan en los cuatro segmentos son:

    1. Comparar los exponentes.
    2. Alinear las mantisas.
    3. Sumar o restar las mantisas.
    4. Normalizar el resultado.

    Esto se apega al procedimiento delineado en el diagrama de flujo de la figura 10-15, pero se usan algunas variaciones para reducir el tiempo de ejecución de las suboperaciones. Se comparan los exponentes al restarlos para determinar su diferencia. Se escoge el exponente mayor como el exponente del resultado. La diferencia entre exponentes determina cuántas veces debe ejecutarse un corrimiento a la derecha sobre la mantisa asociada con el exponente menor. Esto provoca un alineamiento de las dos mantisas. Debe notarse que el corrimiento debe estar diseñado como un circuito combinatorio para reducir el tiempo de corrimiento. Las dos mantisas se suman o restan en el segmento 3. El resultado se normaliza en el segmento 4. Cuando ocurre un sobre flujo, la mantisa de la suma o diferencia se recorre a la derecha y el exponente se incrementa en 1. Si ocurre un sobre flujo, la cantidad de números 0 significativos en la mantisa determina el número de corrimientos a la izquierda y la cantidad que debe restarse del exponente.

    El siguiente ejemplo numérico puede aclarar las suboperaciones que se ejecutan en cada segmento. Por simplicidad utilizamos números binarios. Consideremos los dos números de punto flotante normalizados:

    X = 0.9504 X 103

    Y = 0.8200 X 102

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    Figura 9-6 Arquitectura paralela para suma y resta de punto flotante

    Se restan los dos exponentes en el primer segmento para obtener 3 – 2 = 1. Se escoge el exponente más grande, 3, como el exponente del resultado.

    El siguiente segmento recorre a la derecha la mantisa de Y para obtener:

    X = 0.9504 X 103

    Y = 0.0820 X 103

    Esto alinea las dos mantisas bajo el mismo exponente. La suma de las dos mantisas en el segmento 3 produce la suma:

    Z = 1.0324 X 103

    Se ajusta la suma al normalizar el resultado para que tenga una fracción con un primer dígito diferente de 0. Esto se hace al recorrer a la derecha una vez la mantisa e incrementar el exponente en 1 para obtener la suma normalizada.

    Z = 0.10324 X 104

    En la línea paralela de punto flotante se implantan el comparador, corrimiento, sumador, sustractor, incrementador, y decrementador con circuitos combinatorio. Supongamos que los retrasos de tiempo de los 4 segmentos son t1 = 60 ns, t2 = 70 ns, t3 = 100 ns, t4 = 80 ns y que los registros de interfaz tienen un retraso de tr = 10 ns. Se selecciona el ciclo de reloj para que sea tp = t3 + tr = 110 ns. Un sumador-sustractor de punto flotante equivalente no paralelo, tendrá un retraso tn = t1 + t2 + t3 + t4 + tr = 320 ns. En este caso, el sumador paralelo tiene una aceleración mayor 320/110 = 2.9 que el sumador no paralelo.

    4 Línea paralela de instrucciones

    El procesamiento por línea paralela puede ocurrir en el flujo de datos y también en el flujo de instrucciones. Una línea paralela de instrucciones lee instrucciones consecutivas de la memoria mientras, en otros segmentos, se ejecutan instrucciones anteriores. Una posible digresión asociada con tal esquema es que una instrucción puede producir un brinco fuera de secuencia. En tal caso, debe vaciarse la línea y deben descartarse todas las instrucciones que se han leído de la memoria después de la instrucción de brinco.

    Consideremos una computadora con una unidad de recuperación y una unidad de ejecución de instrucciones diseñada para proporcionar una línea de dos segmentos. Puede implantarse el segmento de recuperación de instrucciones mediante un registro intermedio (buffer) primero en entrar, primero en salir (FIFO). Este es un tipo de unidad que forma una cola en lugar de una pila. Cuando la unidad de ejecución no esta usando la memoria, el control incrementa el contador de programa y utiliza su valor de dirección para leer instrucciones consecutivas de la memoria. Las instrucciones se insertan en el registro intermedio FIFO para que puedan ejecutarse en un esquema primero en entrar, primero en salir. Por lo tanto, puede colocarse un flujo de instrucciones en una cola, en espera que lo decodifique y procese el segmento de ejecución. El mecanismo de formación de colas con flujos de instrucciones proporciona una manera eficiente para reducir el tiempo promedio de acceso a memoria para leer instrucciones. Cuando hay espacio en recuperación de instrucciones. El registro intermedio actúa como una cola de la que el control obtiene las instrucciones para la unidad de ejecución.

    Las computadoras con instrucciones complejas requieren otras fases además de las de recuperación y ejecución para procesar por completo una instrucción. En el caso más general, la computadora necesita procesar cada instrucción con la siguiente secuencia de pasos.

    1. Recuperar la instrucción de la memoria
    2. Decodificar la instrucción
    3. Calcular la dirección efectiva
    4. Recuperar los operandos de la memoria
    5. Ejecutar la instrucción
    6. Almacenar el resultado en el lugar adecuado.

    Existen ciertas dificultades que evitarán que la línea paralela de instrucciones funcione a su velocidad máxima. Segmentos diferentes pueden necesitar tiempos diferentes para actuar sobre la información que llega. Se saltan algunos segmentos para ciertas operaciones. Por ejemplo, una instrucción de modo de registro no necesita un cálculo de dirección efectiva. Dos o más segmentos pueden requerir el acceso a la memoria al mismo tiempo, provocando que un segmento espere hasta que otro termine su comunicación. En ocasiones, se resuelven los conflictos de acceso a memoria al usar dos canales de memoria para acceder las instrucciones y los datos en módulos separados. De esta manera, pueden leerse de forma simultánea una palabra de instrucción y una palabra de datos de dos módulos diferentes.

    El diseño de una línea paralela de instrucciones será más eficiente si se divide el ciclo de instrucciones en segmentos de igual duración. El tiempo que necesita cada paso para terminar su función depende de la instrucción y de la manera como se ejecuta.

    Ejemplo: Línea paralela de instrucciones de cuatro segmentos

    Consideremos que pueden combinarse en un segmento de decodificación de la instrucción y el cálculo de la dirección efectiva. Además, consideremos que la mayoría de las instrucciones colocan el resultado en un registro de procesador, para que la ejecución de la instrucción y el almacenamiento del resultado puedan combinarse en un segmento. Esto reduce la línea paralela de instrucciones a cuatro segmentos.

    La figura 9-7 muestra como puede procesarse el ciclo de instrucciones en la CPU con una línea paralela de cuatro segmentos. Mientras se ejecuta una instrucción en el segmento cuatro, la siguiente instrucción en secuencia se ocupa en recuperar un operando de la memoria en el segmento 3. En un circuito aritmético separado puede calcularse la dirección efectiva para la tercera instrucción y, cuando está disponible la memoria, pueden recuperarse y colocarse en una localidad del registro intermedio FIFO la cuarta instrucción y todas las subsecuentes. Por lo tanto, pueden traslaparse y estar en proceso hasta cuatro suboperaciones en el ciclo de instrucciones.

    De vez en cuando, una instrucción en la secuencia puede ser del tipo de control de transferencia del programa que produce un brinco fuera de la secuencia normal. En ese caso, se terminan las operaciones pendientes en los últimos dos segmentos y se borra toda la información almacenada en el registro intermedio de instrucciones. Después, la línea paralela y vuelva a iniciar a partir de un nuevo valor de dirección

    Figura 7

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    Arquitectura paralela de CPU de cuatro segmentos,

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

     La figura 8 muestra la operación de la línea paralela de instrucciones.

    El tiempo en el eje horizontal se divide en pasos de igual duración. En el diagrama, los cuatro segmentos se representan con un símbolo abreviado.

    1. FI es el segmento que recupera una instrucción
    2. DA es el segmento que decodifica la instrucción y calcula la dirección efectiva.
    3. FO es el segmento que recupera el operando.
    4. EX es el segmento que ejecuta la instrucción.

    Figura 8 Temporización d línea paralela de instrucciones.

    Paso

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    1

    FI

    DA

    FO

    EX

    2

    FI

    DA

    FO

    EX

    3

    FI

    DA

    FO

    EX

    4

    FI

    FI

    DA

    FO

    EX

    5

    FI

    DA

    FO

    EX

    6

    FI

    DA

    FO

    EX

    7

    FI

    DA

    FO

    EX

    Se considera que el procesador tiene memorias de instrucciones y datos separadas, por lo que puede avanzar la operación en FI y FO, al mismo tiempo. En ausencia de una instrucción de transferencia de control, cada segmento opera sobre instrucciones diferentes. Por lo tanto, en el paso 4, se ejecuta la instrucción en el segmento EX; el operando para la instrucción 2 se recupera en el segmento FO; en el segmento DA se decodifica la instrucción 3 y en el segmento FI se recupera de la memoria la instrucción 4.

    Supongamos que la instrucción 3 es una instrucción de transferencia de control. Tan pronto como se decodifica esta instrucción en el segmento DA en el paso 4, se detiene la transferencia de FI a DA de las otras instrucciones, hasta que se ejecuta la instrucción de transferencia de control en el paso 6. Si se da la transferencia, se recupera una nueva instrucción en el paso 7. Si no se da la transferencia, puede usarse la instrucción recuperada antes, en el paso 4. Después, la línea paralela continua la ejecución hasta que se encuentra una nueva instrucción de transferencia de control.

    Puede ocurrir otro retraso en la línea si el segmento EX necesita almacenar el resultado de la operación en la memoria de datos mientras el segmento FO necesita recuperar un operando. En ese caso, el segmento FO debe esperar hasta que el segmento EX haya terminado su operación.

    En general, existen tres dificultades principales que provocan que una línea de instrucciones se aparte de su operación normal.

    1. Conflictos de recursos, provocados al accesar la memoria dos segmentos diferentes, al mismo tiempo. Gran parte de estos conflictos pueden resolverse al utilizar memorias de instrucciones y de datos separadas.
    2. Surgen conflictos de dependencia de datos cuando una instrucción depende del resultado de una anterior, pero éste todavía no esta disponible.
    3. Se producen dificultades de transferencia de control a partir de instrucciones que modifican el valor del PC.

    Dependencia de los datos

    Una dificultad que puede producir una degradación del desempeño en una línea paralela de instrucciones se debe a una posible colisión de datos o direcciones. Ocurre una colisión cuando no puede avanzar una instrucción porque ciertas instrucciones previas no terminan sus operaciones. Ocurre una dependencia de datos cuando una instrucción necesita datos que todavía no están disponibles. Por ejemplo, una instrucción en el segmento FO puede necesitar un operando que se está generando, en ese momento, mediante una instrucción anterior en el segmento EX. Por lo tanto, la segunda instrucción debe esperar a que la primera instrucción le deje disponibles los datos. De igual manera, puede ocurrir una dependencia de dirección, cuando no puede calcularse una dirección de operando porque no esta disponible la información que necesita el modelo de direccionamiento.

    Por ejemplo, una instrucción con modo de direccionamiento indirecto por registro no puede avanzar a recuperar el operando si la instrucción anterior esta cargando la dirección en el registro; Por lo tanto, el acceso del operando en la memoria debe retrasarse hasta que está disponible la dirección requerida. Las computadoras con arquitectura paralela enfrentan tales conflictos de dependencia de datos de diversas maneras.

    El método más directo es insertar circuitos verificadores. Un verificador es un circuito que detecta instrucciones cuyos operandos fuentes son destinos de instrucciones que se encuentran mas adelante en la línea. La detección de esta situación hace que la instrucción cuya fuente no esta disponible se retrase suficiente ciclos de reloj para evitar el conflicto. Este enfoque mantiene la secuencia de programa al usar hardware para insertar los retrasos requeridos.

    Otra técnica llamada avance de operandos, utiliza hardware especial para detectar un conflicto y después evitarlo al direccionar los datos mediante trayectorias especiales entre segmentos de la línea. Por ejemplo en lugar de transferir un resultado de la ALU a un registro destino, la circuiteria comprueba el operando destino y, si se necesita como fuente en la siguiente instrucción, para el resultado directamente a la entrada de la ALU, sin acceder al archivo de registro. Este método necesita trayectoria de hardware adicionales por medio de multiplexores y el, circuito que detecta el conflicto.

    Un procesamiento empleado en algunas computadoras es proporcionar al compilador que traduce el lenguaje de programación de alto nivel a un programa de lenguaje de maquina, la responsabilidad para resolver los problemas de conflicto de datos. El compilador para tales computadoras esta diseñado para detectar un conflicto de datos y reordenar las instrucciones conforme sea necesario al retrasar la carga de los datos en conflicto por medio de la inserción de instrucciones de no operación. Este método se denomina carga pospuesta o retardada. En la siguiente sección se presenta un ejemplo de este procedimiento.

    Manejo de las instrucciones de transferencia de control

    Uno de los problemas principales al operar un conjunto de instrucciones es la aparición de instrucciones de transferencia de control. Una instrucción de transferencia de control puede ser condicional o incondicional. Una transferencia incondicional siempre altera el flujo secuencia del programa al cargar el contador de programa con la dirección objetivo. En una instrucción condicional, el control selecciona la dirección objetivo si se satisface la condición o la siguiente instrucción secuencial si no se satisface. Como se mencionó antes, la instrucción de transferencia de control interrumpe la secuencia normal del flujo de instrucciones, produciendo dificultades en la operación de la línea paralela de instrucciones. Las computadoras con arquitectura paralela emplean diferentes técnicas de hardware para minimizar la degradación del desempeño provocada por las instrucciones de transferencia de control.

    Una manera de manejar una transferencia condicional es recuperar con anticipación

    La dirección objetivo, además de la instrucción que sigue a la transferencia. Ambas se guardan hasta que se ejecuta la transferencia. Si la condición de la transferencia se cumple, la línea paralela continúa a partir de la instrucción objetivo de la transferencia. Una extensión de este procedimiento es continuar la recuperación de instrucciones de ambos lugares hasta que se tome la decisión de la transferencia. En ese momento, el control selecciona el flujo de instrucciones de la secuencia de programa correcta.

    Otra posibilidad es usar un registro de ramificación objetivo (branch target buffer, BTB). El BTB es una memoria asociativa, incluida en el segmento de recuperación de la línea. Cada entrada en el BTB consiste en la instrucción de transferencia recuperada con anticipación y la instrucción objetivo para esa transferencia. También almacena unas cuantas instrucciones que se encuentran después de la instrucción objetivo de la transferencia. Cuando la línea decodifica una instrucción de transferencia, busca la memoria asociativa BTB para la dirección de la instrucción. Si está en el BTB, se puede disponer de la instrucción en forma directa y la recuperación con anticipación continúa a partir de la nueva trayectoria. Si la instrucción no está en el BTB, la línea paralela cambia a un nuevo ciclo de instrucciones y almacena la instrucción objetivo en el BTB. La ventaja de este esquema es que las instrucciones de transferencia de control que han ocurrido con anticipación están disponibles con facilidad en la línea, sin interrupciones.

    Una variante del BTB es el registro de ciclo. Este es un pequeño archivo de registros, de muy alta velocidad, que se mantiene en el segmento de recuperación de instrucciones de la línea paralela. Cuando se detecta un ciclo de programa, se almacena por completo en el registro de ciclo, incluyendo todas las transferencias. EL ciclo de programa puede ejecutarse en forma directa, sin tener que acceder la memoria hasta que se retira el modo de ciclo con la transferencia de control final.

    Otro procedimiento que utilizan algunas computadoras es la predicción de transferencia de control y línea paralela. Una arquitectura paralela con predicción de transferencia de control utiliza cierta lógica adicional para predecir el resultado de una instrucción de transferencia condicional antes de que se ejecute. Después, la línea paralela empieza a recuperar con anticipación el flujo de instrucciones de la trayectoria predicha. Una predicción correcta elimina el tiempo perdido causado por el proceso de transferencia de control.

    Un procedimiento usado en la mayoría de los procesadores RISC es la transferencia propuesta o retardad. En este procedimiento, el procesador detecta las instrucciones de transferencia de control y reordena la secuencia de código de lenguaje de máquina al insertar instrucciones útiles que conservan sin interrupciones la operación de la línea paralela. Un ejemplo de transferencia retardada es la inserción de una instrucción de no operación después de una instrucción de transferencia de control. Eso hace que la computadora recupere la dirección objetivo, durante la ejecución de la instrucción de no operación, lo que permite tener un flujo continuo del conducto.

    5.-ARQUITECTURA PARALELA RISC.

    En la sección 8-8 se presento la computadora en conjunto reducido de instrucciones (Risc).Entre las características que se le atribuyen a Risc esta la capacidad e usar un conjunto de instrucciones eficientes para implantar una línea paralela de instrucciones con numero pequeño de operaciones y de cada una se ejecute en un ciclo de reloj. Debido al formato de instrucciones de longitud fija, la descodificación de la operación puede ocurrir al mismo tiempo que la selección de registros .Todas las instrucciones de manipulación de datos tiene operación de datos tiene operaciones registros a registros. Como todos los operandos están en registros, no es necesario calcular una dirección

    Efectivas o recuperar operandos de la memoria .por lo tanto , la línea paralela de instrucciones puede implantarse con dos o tres segmentos .Un segmento recupera la instrucción de la memoria del programa y el otro segmento ejecuta la instrucción en la ALU. Puede usarse un tercer segmento para almacenar el resultado de la operación de la ALU en un registro destino.

    En la arquitectura Risc, las instrucciones de transferencia de datos están limitadas alas instrucciones cargar y almacenar. Estas instrucciones utilizan un direccionamiento, directo por registro .Por lo general, necesita tres o cuatro etapas en el segmento. Para evitar conflictos entre un acceso a memoria con el fin de recuperar una instrucción y cargar y almacenar un operante, gran parte de las maquinas Risc utilizan dos canales separados con dos memoria: Una para almacenar las instrucciones y otra para almacenar los datos .En algún momento, las dos memorias pueden operar ala misma velocidad que el reloj del cpu y se denomina memoria cache.

    Una de las de las principales ventajas de la Risc es su capacidad para ejecutar instrucciones a una velocidad de una por ciclo de reloj. No es posible que cada instrucción se recupere de la memoria y se ejecute en un ciclo de reloj. En realidad, lo que se hace es empezar cada instrucción con cada ciclo de reloj y mediante su arquitectura paralela el procesador logra el propósito de una ejecución de instrucción en un solo ciclo. La ventaja de la Risc sobre la CISC (computadora con conjunto de instrucciones complejo ) Es que la Risc Puede tener segmento paralelos , al requerir un solo ciclo de reloj , en tanto la CISC utiliza muchos segmentos en su arquitectura paralela y el segmento mas grande requiere dos o mas ciclo de reloj.

    Otra característica de la RISC es el soporte

    Código de

    operación

    Dirección base

    Fuente 1

    Dirección base

    Fuente 2

    Dirección base

    destino

    Longitud

    De vector

    Figura 11 Formato de instrucción para procesamiento de vector.

    Tres campos especifican la dirección base de los operandos y un campo adicional proporciona la longitud de los conjuntos de datos en los vectores. Esto considera que los operandos del vector residen en la memoria. También es posible diseñar el procesador con una gran cantidad de registros antes de la operación de suma. En ese caso, la dirección base y la longitud en la instrucción del vector especifican un grupo de registros de CPU.

    Multiplicación de matriz

    La multiplicación de matriz es una de las operaciones computacionales mas intensivas que se ejecutan en las computadoras con procesadores de vector.

    La multiplicación de matrices n X n consta de operaciones de n2 productos internos o n3 operaciones multiplicar-sumar. Una matriz n X m de números tiene n renglones y m columnas y puede considerarse que constituye un conjunto de n vectores de renglón o un conjunto de m vectores de columna.

    Consideremos por ejemplo, la multiplicación de dos matrices 3 X 3 A y B.

    a11 a12 a13b11 b12 b13c11 c12 c13

    a21 a22 a23 x b21 b22 b23 = c21 c22 c23

    a31 a32 a33b31 b32 b33c31 c32 c33

     

     La matriz producto C es unas matriz 3 X 3 cuyos elementos están relacionados con los elementos de A y B mediante el producto interno:

    Por ejemplo, el número en el primer renglón y la primera columna de la matriz C se calcula con i= 1, j =1, para obtener:

    C11= a11 b11 + a12 b21 + a13 b31

    Esto requiere tres multiplicaciones y (después de inicializar c11 en 0) tres sumas. La cantidad total de multiplicaciones o sumas requeridas para calcular el producto de la matriz es 9 x 3 = 27. Si consideramos la operación global de multiplicar – sumar c + a x b como una operación acumulativa, el producto de dos matrices n x n requiere n3 operaciones de multiplicar – sumar. El cálculo consta de n2 productos internos, en donde cada producto interno requiere n operaciones de multiplicar – sumar, considerando que c se inicializa en 0 antes de calcular cada elemento en la matriz producto.

    En general, el producto interno consta de la suma de k términos de producto de la forma:

    C = A1 B1 + A2 B2 + A3 B3 + A4 B4 +……+ Ak Bk

    En la aplicación típica k puede ser igual a 100 o incluso a 1000. el calculo de producto interno en un procesador de vector de arquitectura paralela se muestra en la figura 9-12. los valores de A y B están en la memoria o en registros de procesador. Se considera que la línea paralela del multiplicador de punto flotante y la línea paralela del sumador de punto flotante tienen cuatro segmentos cada uno. Todos los registros de segmentos en el multiplicador y en el sumador se inicializan en 0. Por lo tanto, la salida del sumador es 0 para los primeros ocho primeros ciclos, hasta que están llenas ambas líneas. Los pares A1 y B1 se introducen y multiplican a una velocidad de un par por ciclo. Después de los primeros cuatro ciclos, el producto comienza a sumarse a la salida del sumador. Durante los cuatro ciclos siguientes se suma 0 a los productos que entran a la línea del sumador. Al final del octavo ciclo, los primeros cuatro productos A1, B1 hasta A4 B4 están en los cuatro segmentos del sumador y los siguientes cuatro productos de A5 B5 a A8 B8 están en los segmentos de multiplicador. Al comienzo del noveno ciclo, la salida del sumador es A1 B1 y la salida del multiplicador es A5 B5. Por lo tanto, el noveno ciclo comienza la suma A1 B1 + A5 B5 en la línea sumador. El Décimo ciclo comienza la suma A2 B2 + A6 B6 y así sucesivamente. Este patrón divide la suma en cuatro secciones de la manera siguiente:

    C = A1 B1 + A5 B5 + A9 B9 + A13 B13 + …

    A2 B2 + A6 B6+ A10 B10+ A14 B14 + …

    A3 B3 + A7 B7 + A11 B11+ A15 B15 + …

    A4 B4 + A8 B8 + A12 B12+ A16 B16 + …

     

    Cuando ya no hay más términos de producto por sumar, el sistema inserta cuatro ceros en la línea del multiplicador. Entonces la línea del sumador tendrá un producto parcial en cada uno de sus cuatro segmentos, que corresponden a las cuatro sumas que se listan en los cuatro renglones de la ecuación anterior. Después se suman las cuatro sumas parciales para formar la suma final.

    Memoria entrelazada

    Los procesos de vector y de arquitectura paralela con frecuencia requieren acceso simultaneó a la memoria desde dos o mas fuentes, una línea paralela de instrucción y un operador al mismo tiempo desde dos segmentos diferentes. De igual manera, una línea aritmética, por lo general, requiere que se introduzca dos o más operandos en la línea, al mismo tiempo. En lugar en la línea, al, mismo tiempo. En lugar de usar dos canales de memoria para acceso simultaneo, puede dividirse la memoria en varios módulos conectados a canales de direcciones y de datos comunes. Un modulo de memoria es un arreglo de memoria junto con sus propios registros de datos y direcciones. La figura 13 muestra una unidad de memoria con cuatro módulos. Cada arreglo de memoria tiene su propio registro de dirección de un canal de direcciones común y los registros de datos comunican con un canal de datos bidireccional.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

      Pueden utilizarse los dos bits menos significativos de la dirección para diferenciar entre los cuatro módulos. El sistema modular permite que un módulo inicie un acceso a memoria mientras otros módulos están en proceso de leer o escribir una palabra y cada modulo puede cumplir una solicitud de memoria independiente del estado de los otros módulos.

    La ventaja de una memoria modular es que permite la utilización de una técnica llamada entrelazado. En una memoria entrelazada, se asignan diferentes conjuntos de direcciones a diferentes módulos, las direcciones pares pueden estar en un módulo y las direcciones impares pueden estar en otro. Cuando las cantidad de módulos es una potencia de 2, los bits menos significativos de la direcciones seleccionan un modulo de memoria y los bits restantes representan la posición especifica que se va a accesar dentro del modulo seleccionado.

    Una memoria modular es útil en sistemas con procesamiento de vector y de arquitectura paralela. Un procesador de vector que utiliza una memoria modular es útil en sistemas con procesamiento de vector y de arquitectura paralela. Un procesador de vector que utiliza una memoria entrelazada de n canales, puede recuperar n operadores de n módulos diferentes. Al entrelazar el acceso a la memoria, el tiempo de ciclo de memora efectivo puede reducirse en un factor cercano a la cantidad de módulos. Una CPU con línea paralelas de instrucciones puede aprovechar los módulos de memoria múltiples para que cada segmento en la línea pueda accesar las memoria en forma independiente del acceso de los otros segmentos.

    Supercomputadoras.

    A una computadora comercial con instrucciones de vector y operaciones aritméticas de punto flotante de líneas paralelas se le denomina Supercomputadora. Las supercomputadoras son maquinas de alto rendimiento muy poderosas que se usan sobre todo tipo de cálculos científicos. Para acelerar la operación, los componentes se juntan para minimizar la distancia que tiene que recorrer las señales electrónicas. Las supercomputadoras también utilizan técnicas especiales para evitar el calor en los circuitos y prevenir que se quemen debido a su proximidad.

    El conjunto de instrucciones de las supercomputadoras contiene las instrucciones de transferencia de datos manipulación de datos y transferencia de control del programa de las computadoras convencionales. Esto se aumenta mediante instrucciones que procesan vectores y combinaciones de escalares y vectores. Una supercomputadora es un sistema computacional que se reconoce por su alta velocidad de cálculo, sus sistemas de memoria grandes y rápidos y un uso amplio de procesamientos paralelo. Esta equipada con unidades funcionales múltiples y cada unidad tiene su propia configuración de arquitectura paralela. Aunque la supercomputadora maneja aplicaciones de propósito general que se encuentran en todas las otras computadoras, está optimizada específicamente para el tipo de cálculos numéricos que involucran vectores y matrices de números de punto flotante.

    Las supercomputadoras no son convenientes para procesamiento cotidiano normal de una instalación de computadora típica. Su uso se limita a ciertas aplicaciones científicas, como predicción numérica del clima, análisis de ondas sísmicas e investigación espacial. Se usan en forma limitada y su mercado también es pequeño debido a su alto precio.

    Una medida utilizada para evaluar computadoras, es su capacidad para ejecutar cierta cantidad de operaciones de un punto flotante por segundo, que se denomina flops. El término megaflops se utiliza para representar millones de flops y gigaflops para representar mil millones de flops. Una supercomputadora típica tiene un tiempo de ciclo básico de 4 a 20 ns. Si el procesador puede calcular una operación de punto flotante por línea paralela cada ciclo, tendrá la capacidad de ejecutar de 50 a 250 megaflops. Esta velocidad se sostendría desde el momento en que se produce la primera respuesta y no incluye el tiempo de iniciación de las líneas paralelas.

    La primera supercomputadora desarrollada en 1976 es la Cray-1. Utilizada el procesamiento de vector con 12 unidades funcionales distintas en paralelo. Cada unidad funcional esta dividida para procesar los datos de entrada a través de una línea paralela. Todas las unidades funcionales pueden operar en forma concurrente con operandos almacenados en una gran cantidad de registros (más de 150) en la CPU. Puede ejecutarse una operación de punto flotante sobre dos conjuntos de operandos de 64 bits, durante un ciclo de reloj de 12.5 ns. Esto nos da una velocidad de 80 megaflops durante el tiempo que se procesan los daros a través de las líneas paralelas. Tienen una capacidad de memoria de cuatro millones de palabras de 64 bits. La memoria se divide en 16 bancos, en donde cada banco tiene un tiempo de acceso de 50 ns. Esto significa que cuando se accedan los 16 bancos en forma simultanea, la velocidad de transferencia de memoria es de 320 millones de palabras por segundo. La investigación acerca de la Cray amplio su supercomputadora a una configuración de multiprocesador llamada Cray X-MP y Cray Y-MP. La nueva supercomputadora Cray 2 es doce veces más poderosa que la Cray 1 en el modo de procesamiento de vector.

    Otro modelo inicial de supercomputadora es la Fujitsu VP-200. Tiene un procesador escalar y un procesador de vector que pueden operar en forma concurrente. Como en las supercomputadoras Cray, se utilizan una gran cantidad de registros y de unidades funcionales múltiples para habilitar las operaciones de vector de registro a registro. Existen cuatro líneas paralela s de ejecución en le procesador de vector y cuando operan en forma simultanea, pueden procesar hasta 300 megaflops. La memoria principal tiene 32 millones de palabras conectadas a los registros de vector mediante leneas paralelas de carga y almacenamiento. La VP-200 tiene 83 instrucciones de vector y 195 instrucciones escalares. La mas reciente VP 2600 utiliza un ciclo de reloj de 3.2 ns y se dice que a su máxima capacidad puede procesar cinco gigaflops.

    Arreglo de procesador SIMD

    Un arreglo de procesador es un procesador que ejecuta cálculos sobre arreglos de datos grandes. El término se utiliza para hacer referencia a dos tipos diferentes de procesadores. Un arreglo de procesador conectado es un procesador auxiliar conectado a una computadora de propósito general. Pretende mejorar el desempeño de la computadora anfitrión en tareas de cálculos numéricos específicos. Un arreglo de procesador SIMD (Single Instrucción, múltiple data) es un procesador que tiene una organización de instrucción única, datos múltiples. Manipula instrucciones de vector mediante múltiples unidades funcionales que responden a una instrucción común. Aunque ambos tipos de procesadores de arreglo manipulan vectores, su organización interna es diferente.

    Arreglo de procesador conectado

    Un arreglo de procesador conectado esta diseñado un periférico para una computadora anfitriona convencional y su propósito es mejorar el desempeño de la computadora al proporcionar procesamiento de vector para aplicaciones científicas complejas. Produce un alto rendimiento mediante el procesamiento paralelo con múltiples unidades funcionales. Incluye una unidad aritmética que contiene uno o más sumadores y multiplicadores de punto flotante de arquitectura paralela. El usuario puede programar el arreglo de procesador para que de cabida a diversos problemas aritméticos complejos.

    La figura 14 muestra la interconexión de un arreglo de procesador conectado a una computadora anfitriona. La computadora anfitriona es una computadora comercial de propósito general y el procesador conectado es una terminal conectada a una computadora anfitriona. El arreglo de procesador está conectado se trasfieren de la memoria principal a una memoria local mediante un canal de alta velocidad.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

     La computadora de propósito general sin el procesador conectado atiende a los usuarios que necesitan procesamiento de datos convencional. El sistema con el procesador conectado satisface las necesidades para aplicaciones aritméticas complejas.

    Algunos fabricantes de procesadores de arreglo conectado ofrecen un modelo que pueden conectarse a diversas computadoras anfitrión. Por ejemplo, cuando se conecta a una computadora VAX11, el FSP-164/MAX de Floating-Point Systems aumenta el poder de cálculo de la VAX a 100 megaflops. El objetivo del procesador de arreglo conectado es proporcionar posibilidades de manipulación de vector a una computadora convencional, a una fracción del costo de las supercomputadoras.

    Arreglo de procesador SIMD

    Un arreglo de procesador sima es una computadora con múltiples unidades de procesamiento que operan en paralelo. Las unidades de procesamiento están sincronizadas para ejecutar la misma operación bajo el control de una unidad común, por lo que proporciona una organización de flujo de instrucciones único, flujo de procesador se muestra en la figura 9-15. Contiene un conjunto de elementos de procesamientos (PE) idénticos, en donde cada uno tiene una memoria local M. Cada elemento del procesador incluye una ALU, una unidad de control maestro dirige las operaciones en los elementos del procesador. La memoria principal se utiliza para almacenamiento del programa. La función de la unidad de control maestro es decodificar las instrucciones y determinar como se van a ejecutar.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

     Las instrucciones de control de programa y escalares se ejecutan directa dentro de la unidad de control maestro. Las instrucciones de vector se transmiten a todos los PE en forma simultánea. Cada PE utiliza operandos almacenados en su memoria local. Los operandos de vector se distribuyen a las memorias locales antes de la ejecución en paralelo de la instrucción.

    Por ejemplo, consideramos la suma de vector C = A + B. Primero, la unidad de control maestro almacena los pésimos componentes ai y bi de A y B en la memoria local Mi par i = 1, 2, 3, 4 …., n. Después transmite la instrucción sumar de punto flotante Ci = ai + bi a todos los PE, causando que la suma se realice en forma simultanea. Los componentes de Ci están almacenados en localidades fijas en cada memoria local. Esto produce la suma del vector deseado en un ciclo de suma.

    Se usan esquemas de enmascaramiento, con el fin de controlar el estado de cada PE durante la ejecución de instrucciones de vector. Cada PE tiene una bandera que se activa cuando el PE está activo y se desactiva cuando está inactivo. Esto asegura que sólo están activos durante la ejecución de la instrucción aquellos PE que necesitan participar. Por ejemplo, supongamos que un arreglo de procesador contiene un conjunto de 64 PE. Si se va a procesar una longitud de vector menor que 64 conjuntos de datos, la unidad de control de selecciona la cantidad correcta de PE que van a estar activos. La unidad control debe dividir los vectores con longitud mayor de 64, en partes de 64 palabras.

    El procesador de arreglo SIMD más conocido es la computadora ILLIAC IV, desarrollada en la Universidad de Illinois y fabricada por Burroughs Corp. Esta computadora ya no está en operaron. Los procesadores SIMD son computadoras altamente especializadas. Sobre todo son convenientes para problemas numéricos que pueden expresarse en forma de vector o de matriz. Sin embargo, no son muy eficientes en otros tipos de cálculos o para trabajar con programas de procesamiento de datos convencionales.

     

    Nombre del investigador :

    Vìctor Perales Fabian

    Estudiante: Facultad Ing. De sistemas

    Universidad Señor de Sipan

    Carretera Pimentel , Lambayeque -Perú

    Categoría: Computación E inforrmática