- Procesamiento
Paralelo - Arquitectura
Paralela - Línea paralela
aritmética - Línea paralela de
instrucciones - Arquitectura paralela
RISC
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.
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.
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:
- Comparar los exponentes.
- Alinear las mantisas.
- Sumar o restar las mantisas.
- 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.
- Recuperar la instrucción de la
memoria - Decodificar la instrucción
- Calcular la dirección efectiva
- Recuperar los operandos de la memoria
- Ejecutar la instrucción
- 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.
- FI es el segmento que recupera una
instrucción - DA es el segmento que decodifica la
instrucción y calcula la dirección
efectiva. - FO es el segmento que recupera el
operando. - 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.
- 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. - Surgen conflictos de dependencia de datos cuando una
instrucción depende del resultado de una anterior, pero
éste todavía no esta disponible. - 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