Está en la página 1de 85

SEGMENTACIN DE CAUCE

La Unidad Central de Proceso


A+B Registros Generales A B

Unidad
A ALU A+B B

de Control

a la memoria y dispositivos de E/S

La CPU

Ciclo de Instruccin
Alimenta instr. de memoria CP Sig. instruccin Decodifica la instruccin Calcula direccin de operandos Extrae instruccin

de registros Internos

Extrae los operandos Opera con los datos Calcula dir. del destino

de memoria principal

en registros internos

Almacena resultado

en memoria principal

La CPU
Datos Dir.
m n

Interfaz Hardware
peticin concesin

Arbitraje de Bus Coprocesador Lec/Esc Estado Miscelneas

Procesador Genrico

Interrup. Reset

peticin aceptacin

+5 V

- DATOS - DIRECCIONES

Seales de - CONTROL

Ensamblador 68000 MOVEQ.L #14,D0 MOVE.W #1,(A5)

Cdigo Mquina 7014 3ABC 0001

ciclo reloj ciclo memoria (lectura) ciclo instruccin ciclo memoria ciclo memoria (lectura) (lectura) ciclo de instruccin ciclo memoria (escritura)

(MOVEQ.L)

(MOVE.W)

Todos los ciclos de ocupan ciclos completos En la misma lectura son Las instrucciones los ciclos de iguales iguales de Todos reloj(lecturas ymemoria sondistintos Los ciclos de memoriade instruccin son Los ciclos son distintos escrituras) memoria Todos los ciclos de escritura son iguales ms algn ciclo de reloj

La CPU

Segmentacin Construir circuitos ms Cmo aumentar la (Pipelining) rpidos, pero velocidad del
procesador

- A qu precio? - Estado del arte?

Concurrencia

- Nivel del procesador (Paralelismo) - Nivel de instruccin (Pipelining)

La CPU

...Pipelining

Tar tas ACM E

Tar tas ACM E

Tar tas ACM E

10 s

10 s

10 s

10 s

10 s

La CPU

...Pipelining

Tar tas ACM E

Tar tas ACM E

Tar tas ACM E Tar tas ACM E Tar tas ACM E

10 s

10 s

10 s

10 s

10 s

Tar tas ACM E Tar tas ACM E

La CPU
Ejecucin Secuencial

...Pipelining
I1 F1 E1 F2 I2 E2 I3 F3 E3 ...

tiempo Nueva organizacin del hardware buffer unidad F Instrucciones I1 I2 I3 In t1 F1 t2 unidad E t3 t4 E1 F2 E2 F3 E3 tiempo

N de Etapas Etapa F Etapa D t1 I1 I2 I3 F1 t2

N de acciones en paralelo Etapa O t3 t4 t5 t6 Etapa E t7 Etapa W

D1 O1

E1 W1 E2 W2 E3 W3

tiempo

F2 D2 O2

F3 D3 O3

Pipelining Paralelismo (Especializacin) (Replicacin)


t1 I1 I2 I3
E1 D1 O1 E1 W1 E1 D1 O1 E1 W1 E1 D1 O1 E1 W1

t2 tiempo

t3

(a) Ejecucin Secuencial Pura

Pipelining Paralelismo (Especializacin) (Replicacin)


t1 I1 I2 F1 D1 O1 E1 W1 E2 W2 F2 D2 O2 tiempo

. . . . . . . . . . . I3 F3 D3 O3 E3 W3

(b) Ejecucin Paralela Pura

Pipelining Paralelismo (Especializacin) (Replicacin)


t1 I1 I2 I3 F1 D1 O1 E1 W1 E2 W2 E3 W3 F2 D2 O2 t2 t3 tiempo

F3 D3 O3

(c) Ejecucin en Pipeline

Pipelining
Ms etapas Ms rendimiento

Ralentizacin
Por qu no muchas etapas!
Lgica de control > Lgica de ejecucin

Situacin ideal de una arquitectura con Pipeline

Mantener siempre ocupadas todas las etapas

Pero No Resulta Fcil

Motivos Estructurales Dependencias de Operandos Instrucciones de Bifurcacin

Pipelining

Ralentizacin

Un procesador sin segmentar tiene un tiempo de ciclo de 25 ns. Cul es el tiempo de ciclo de una versin segmentada del procesador con 5 etapas divididas uniformemente, si cada registro intermedio aade un retardo de 1ns? y si el procesador se divide en 50 etapas?

Pipelining

Ralentizacin

Para los dos casos anteriores Cul es la latencia de cauce?

Ralentizacin del Pipeline

Motivos Estructurales
El Pipeline SE DETIENE

Tiempo ideal de ejecucin: Un ciclo Si una etapa no es capaz de realizar su cometido en un ciclo de reloj

Acceso simultneo a memoria desde varias etapas No todas las etapas tienen que ser de la misma duracin Hay instrucciones ms complejas que otras - Ejecucin ms compleja - Acceso a operandos

Hay instrucciones ms complejas que otras t1 I1 I2 I3 I4 I5 F1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 D1 O1 E1 W1 E2 W2 E3 W3 E4 W4 E5 W5 tiempo

F2 D2 O2 O2 O2

F3 D3 D3 D3 O3

F4 F4 F4 D4 O4

F5 D5 O5

Y si alguna instruccin no utiliza todas las etapas?

Ralentizacin del Pipeline Dependencias de Datos Si dos o ms instrucciones comparten un dato add R1,R2,R3 mul R3,R4,R5 ... - RAW - WAR - WAW

Dependencia de Datos

Dependencia WAR I 1

... load I2 add I3 mul SOLUCIONES I4 load I5 load ...


t1 t2 D F F

R7,200 R1,R2,R3 Prevencin R3,R4,R5 Deteccin R1,200 y Resolucin R2,300


t3 O D F t4 E r1,r2 D r3,r4 t5
R7 R3 R5

t6

t7

load R7,200 add R1,R2,R3 mul R3,R4,R5

Prevencin de la Dependencia de Datos


El compilador debe retrasar la etapa de ejecucin de la instruccin dependiente reordenando las instrucciones Ejemplo 1 ... I1 load I2 add I3 mul I4 load I5 load ... ... add load load mul load ...

R7,200 R1,R2,R3 R3,R4,R5 R1,200 R2,300

I2 I1 I4 I3 I5

R1,R2,R3 R7,200 R1,200 R3,R4,R5 R2,300

...Prevencin de la Dependencia de Datos

...Y si no se pueden reordenar las instrucciones sin alterar la lgica del programa Ejemplo 2 ... I1 load I2 add I3 mul I4 add ...

!
I1 I2

Insertar NOP
... load NOP NOP add NOP NOP mul add ... R1,200

R1,200 R1,R2,R3 R3,R4,R5 #1,R3,R3

R1,R2,R3

I3 I4

R3,R4,R5 #1,R3,R3

Deteccin y Resolucin

Detener Pipeline - Detener elel Pipeline - Anticipacin t3


O D F

t1

t2
D F

t4
E r1,r2 D F

t5
r7

t6
r3

t7

t8

t9

load R7,200 add R1,R2,R3 mul R3,R4,R5 load R1,R2 load R3,R4

D F

D F

r3,r4 D F O D

r5 E O

Deteccin y Resolucin

- Detener el Pipeline Anticipacin (data forwarding)


F D F r1,r2 D F D F r3 r3,r4 D F O D r5 E O

Regs.

op1

op2

ALU

Result.

Dir.
8 10 12 14 16 18 20 22 24 26 28 30

Contenido
... LOAD ADD MUL LOAD LOAD JMP SHR OR JNZ ADD ... R7,200 R1,R2,R3 R3,R4,R5 R1,R2 R3,R4 24 R2,#1 R2,R3,R2 50 #4,R6,R6 El flujo normal de un programa es secuencial Instrucciones en direcciones consecutivas de memoria

La siguiente instruccin no es la siguiente en memoria Cul es la direccin de la siguiente instruccin

! ?

Dir. Contenido
18 LOAD R3,R4 20 JMP 24 24 OR R2,R3,R2 26 JNZ 50 50 LOAD ? ? ? R2,R4

t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 tiempo F D O E W F


24

D O F

E W E W E W
50

D O F
??

D O

F Huecos de retardo

D O

E W

Ralentizacin del Pipeline ...Bifurcaciones Estara bien aprovechar los huecos de retardo con instrucciones tiles Deben ser instrucciones que se ejecuten SIEMPRE

Bifurcacin Retardada
Si una bifurcacin produce h huecos de retardo
El compilador debe insertar h instrucciones despus de la bifurcacin. El efecto de la bifurcacin se debe retardar h ciclos.

CPU SIN bifurcaciones retardadas


- Cuando NO se toma la bifurcacin: I1I2I3I4I5I6I7I8I9I10I11I12... - Cuando S se toma la bifurcacin: I1I2I3I11I12...

CPU CON bifurcaciones retardadas (h = 3)


- Cuando NO se toma la bifurcacin: I1I2I3I4I5I6I7I8I9I10I11I12... - Cuando S se toma la bifurcacin: I1I2I3I4I5I6I11I12...

... y si no se pueden reordenar las instrucciones sin alterar la lgica del programa

Insertar Instrucciones

NOP
I1I2I3NOPNOPNOPI11I12...

Prediccin del Salto


Ante un salto ... load #50,R1 loop or ... ... sub bnz add ... R3,R4 Una opcin Suponer que siempre se toma la bifurcacin Cuando no se toma, se vaca el pipeline. Ejecucin Especulativa ! Ojo! Algunas instrucciones pueden haber empezado a ejecutarse

#1,R1 loop R1,R2

... Prediccin del Salto


Ante un salto ... load #51,R1 loop sub bz or ... bra fin add ... #1,R1 fin R3,R4 loop R1,R2 Otra opcin Suponer que nunca se toma la bifurcacin Cuando no se toma, se vaca el pipeline.

... Prediccin del Salto


Hay situaciones en las que casi siempre se salta Otras veces, casi nunca Mejor si el procesador lleva la cuenta de cada instruccin de salto El compilador puede detectarlo y reflejarlo mediante un cdigo especial de operacin PREDICCIN ESTTICA

PREDICCIN DINMICA

Planificicacin esttica vs dinmica Prediccin dinmica de saltos


Hasta ahora hemos visto tcnicas de planificacin esttica (las realiza el compilador). En la planificacin dinmica es el hardware el que reorganiza la ejecucin de las instrucciones.
Ventajas:
Permite tratar dependencias desconocidas en tiempo de compilacin Se simplifica el compilador Se gana en portabilidad

Inconvenientes:
Aumenta la complejidad hardware

Cuando estas tcnicas se aplican a predecir si un salto ser efectivo y a determinar el destino lo antes posible se denominan: Prediccin hardware de saltos o prediccin dinmica de saltos

Prediccin dinmica de saltos Buffer de prediccin de saltos (I)


Un buffer de prediccin de saltos es una pequea memoria indexada por la parte menos significativa de la direccin de la instruccin de salto (PC). No es una cache (diferentes intruccion es de salto pueden tener la misma parte baja del PC) Si la memoria contuviese un nico bit que indicase si recientemente el salto fue o no efectivo, se producira un problema de rendimiento: para los bucles se fallar en la prediccin tanto la primera vez como la ltima (cuando la inevitable es solamente la ltima) Contienen, por tanto, dos bits: se requieren dos fallos para cambiar la prediccin.

Buffer de prediccin de saltos (II)

Prediccin dinmica de saltos Buffer de destino de saltos (I)


Un buffer de destino de saltos(BranchTargetBuffer, BTB) es una cache totalmente asociativa que almacena la direccin efectiva de una instruccin de salto. Conviene tambin almacenar si el salto predicho es o no efectivo.

Prediccin dinmica de saltos Buffer de destino de saltos (II)

Prediccin dinmica de saltos Buffer de destino de saltos (III)

Aspectos avanzados de la segmentacin


La cantidad de paralelismo que se obtiene con el pipeline en un bloque bsico (conjunto de instrucciones sin saltos, 6/7 instrucciones) no es muy alta. Para aumentar el rendimiento de una maquina segmentada, es necesario avanzar ms en el paralelismo a nivel de instruccin. Para decrementar el CPI a menos de la unidad se requiere emitir mltiples instrucciones en un ciclo de mquina. En este apartado se plantean diferentes tcnicas para reducir an ms el CPI de una mquina segmentada.

Aspectos avanzados de la segmentacin Operaciones en punto flotante del DLX

Aspectos avanzados de la segmentacin Desenrollado de bucles


El desenrollado de bucles o loopunrollinges una tcnica para aumentar el nmero de instrucciones entre las ejecuciones de los saltos del bucle. Consiste en replicar mltiples veces el cuerpo del bucle, ajustando su cdigo de terminacin y planificando entonces el bucle desenrollado. De esta manera, se eliminan saltos y decrementos o incrementos. La planificacin consistir en utilizar diferentes registros para cada iteracin. Inconvenientes:
Aumenta el tamao del cdigo Se incrementa el nmero de registros usados

Ejemplo de desenrollado de bucles Primera solucin: sin planificacin (I)

Ejemplo de desenrollado de bucles Primera solucin: sin planificacin (II)

Ejemplo de desenrollado de bucles Segunda solucin: salto retardado (I)

Ejemplo de desenrollado de bucles Segunda solucin: salto retardado (II)

Ejemplo de desenrollado de bucles Tercera solucin: desenrollar el bucle

Ejemplo de desenrollado de bucles Cuarta solucin: desenrollar y planificar

Paralelismo a nivel de bucle (I)


Las dependencias de datos entre instrucciones de distintas iteraciones de un bucle se denominan loop-carried dependence. Cuando no existen se dice que el bucle es paralelo. En el ejemplo hay dependencias por los dos usos de x[i] pero no en diferentes iteraciones. Este tipo de dependencias se detectan en el cdigo de alto nivel. En el ejemplo, el direccionamiento y el decremento de R1 en la versin en ensamblador seran una dependencia de este tipo.

Paralelismo a nivel de bucle (II)


Supongamos el siguiente ejemplo:

Existen dos tipos de dependencias:


Dependencia loop-carried: S1 y S2 utilizan un valor calculado en la iteracin anterior. El bucle no es paralelo. Dependencia de S2 con S1 a travs de a[i+1]. Se resuelve con las tcnicas vistas de loop unrolling.

Paralelismo a nivel de bucle (III)


Supongamos el siguiente ejemplo:

Existen una dependencia loop-carried: S1 utiliza un valor calculado en la iteracin anterior por S2. Pero a pesar de ello puede hacerse paralelo: la dependencia entre S1 y S2 no es circular (S1 depende de S2 pero no al contrario) En la primera iteracin, S1 (b[0]) no depende de S2 (b[1]). Por ello, para lograr la paralelizacin puede reescribirse el bucle de la siguiente manera:

Emisin de mltiples instrucciones


Utilizando las tcnicas vistas hasta ahora para eliminar bloqueos de datos y control se conseguir a lo sumo un CPI igual a 1 (ideal). Si se desea mejorar ms el rendimiento es necesario la emisin de ms de una instruccin en el mismo ciclo de reloj. Los procesadores que lo hacen se denominan: procesadores de emisin mltiple de instrucciones Existen tres tipos de aproximaciones:
Procesadores superescalares Procesadores supersegmentados VLIW (Very long instructionword)

Procesadores superescalares
En los procesadores superescalares la estrategia consiste en replicar unidades funcionales de modo que se puedan ejecutar ms de una instruccin en cada etapa de la segmentacin. El grado de superescalaridad indica el nmero de instrucciones que se pueden emitir a la vez. Habitualmente la emisin de mltiples instrucciones supone ciertas restricciones en las instrucciones que se ejecutan al mismo tiempo (independencia entre ellas y restricciones arquitecturales). La mayora de los procesadores actuales (i80x86) estn superescalados.

Procesadores supersegmentados
La supersegmentacin (superpipeline) significa simplemente hacer ms larga la segmentacin, es decir, dividir en ms etapas. El incremento de velocidad ideal en la segmentacin est relacionado con el nmero de etapas. Estas mquinas son ms sensibles a los problemas del reloj, ya que el coste de la segmentacin (registros entre las etapas) representa un mayor porcentaje de tiempo en la ejecucin de las etapas. Un ejemplo: El R4000
Mquina muy similar al DLX pero con 8 etapas en vez de 5. Como los accesos a la cache son crticos, las etapas que acceden a memoria se ha subdividido. Etapas: IF, IS, RF, EX, DF, DS, TC y WB

Procesadores VLIW (I)


A diferencia de los procesadores superescalares que intentan emitir mltiples instrucciones independientes a las unidades funcionales, un procesador VLIW (Very Long Instruction Word) empaqueta varias operaciones en una nica instruccin. En los procesadores superescalares el hardware se complica a medida que aumenta el grado de escalaridad, pues hay que detectar dinmicamente si todas las instrucciones emitidas pueden ser ejecutadas en paralelo. En los procesadores VLIW es el compilador el encargado de elegir las operaciones que van a ser empaquetadas (instrucciones independientes), de manera que el hardware del procesador se simplifica mucho con respecto a los superescalares.

Procesadores VLIW (II)

Procesadores VLIW (III)


Las caractersticas de un procesador VLIW son:
Para aprovechar las muchas unidades funcionales de las que disponen estos procesadores, el cdigo deber ser suficientemente paralelo. Se requieren tcnicas de planificacin globales no slo desenrollado de bucles y reordenacin de instrucciones. La decodificacin es sencilla porque los campos en las instrucciones son fijos. La emisin de instrucciones es esttica: toda la responsabilidad es del compilador. Cuando hay poco paralelismo los campos de una instruccin pueden quedarse vacos. Cuando se produce un bloqueo (fallo en la cache) se detienen todas las operaciones (todas las unidades funcionales deben estar sincronizadas). No se mantiene la compatibilidad software. Es necesario recompilar el cdigo para mquinas con el mismo juego de instrucciones pero con unidades funcionales diferentes (nmero de instrucciones a emitir, latencia, etc.)

Polticas de emisin de instrucciones


Esencialmente el microprocesador intenta localizar instrucciones ms all del punto de ejecucin en curso, que puedan introducirse en el cauce y ejecutarse. Formas: El orden en que se captan las instrucciones. El orden en que se ejecutan las instrucciones. El orden en que las instrucciones actualizan los contenidos de los registros y de las posiciones de memoria. La nica restriccin que tiene el procesador es que el resultado debe ser correcto. En trminos generales, podemos agrupar las polticas de emisin de instrucciones de los procesadores superescalares en las siguientes categoras: Emisin en orden y finalizacin en orden. Emisin en orden y finalizacin desordenada. Emisin desordenada y finalizacin desordenada.

Emisin en orden y finalizacin en orden


La poltica de emisin de instrucciones ms sencilla es emitir instrucciones en el orden exacto en que lo hara una ejecucin secuencial, y escribir los resultados en ese mismo orden

Emisin en orden y finalizacin desordenada


Con la finalizacin desordenada puede haber cualquier nmero de instrucciones en la etapa de ejecucin en un momento dado, hasta alcanzar el mximo grado de paralelismo de la mquina. La finalizacin desordenada necesita una lgica de emisin de instrucciones ms compleja que la finalizacin en orden. Adems, es mas difcil ocuparse de las interrupciones y excepciones.

Emisin desordenada y finalizacin desordenada


Para permitir la emisin desordenada, es necesario desacoplar las etapas del cauce de decodificacin y ejecucin. Esto se hace mediante un buffer llamado ventada de instrucciones. Con esta organizacin, cuando un procesador termina de decodificar una instruccin, coloca sta en la ventana de instrucciones. Mientras el buffer no se llene, el procesador puede continuar captando y decodificando nuevas instrucciones. Cualquier instruccin puede emitirse, siempre que (1) necesite la unidad funcional particular que est disponible y (2) ningn conflicto ni dependencia la bloqueen. El resultado de esta organizacin es que el procesador tiene capacidad de anticipacin, lo que le permite identificar instrucciones independientes que pueden introducirse en la etapa de ejecucin. Las instrucciones se emiten desde la ventana de instrucciones, sin que se tenga muy en cuenta su orden original en el programa. Recordemos que la nica restriccin es que el programa funcione

Ejemplo
I1 necesita dos ciclos para ejecutarse. I3 e I4 compiten por la misma unidad funcional. I5 depende de un valor producido por I4. I5 e I6 compiten por una unidad funcional.

Sistemas multiprocesadores
Clasificacin de los computadores segn su nivel de paralelismo (Flynn, 1966):
Flujo nico de instrucciones, nico flujo de datos (SISD) Son los vistos hasta ahora Flujo nico de instrucciones, mltiples flujos de datos (SIMD) Procesadores vectoriales Mltiples flujos de instrucciones, nico flujo de datos (MISD) No existen Mltiples flujos de instrucciones, mltiples flujos de datos (MIMD) Multiprocesadores y clusters

No es una clasificacin rgida. Uno o mltiples comparado con qu? Una mquina que suma nmeros de 32 bits en un ciclo parece tener mltiples flujos de datos comparado con un computador de 1 bit.

Sistemas multiprocesadores Procesadores SIMD


Los computadores SIMD operan sobre conjuntos de datos (por ejemplo, los procesadores vectoriales). Disponen de instrucciones que permiten, por ejemplo, sumar varios nmeros en un solo ciclo de reloj. Requieren de un conjunto de unidades funcionales (ALUs) que trabajen en paralelo. Las unidades funcionales estn sincronizadas y todas responden auna sola instruccin que surge de un nico contador de programa (PC). Las memorias requieren mayor ancho de banda para poder acceder amltiples datos en un nico ciclo de reloj. El tamao del cdigo se reduce, pues en una nica instruccin serealiza mucho trabajo. Obtienen su mejor rendimiento cuando trabajan con bucles for y el peor con instrucciones switch. Los computadores SIMD reales tienen una mezcla de instrucciones SISD y SIMD (por ejemplo, las instrucciones MMX de los Pentium)

Procesadores SIMD Procesadores vectoriales (I)


Los procesadores vectoriales son la alternativa SIMD ms utilizada. Son una arquitectura slidamente establecida y un modelo de compilacin. Disponen de instrucciones de alto nivel que trabajan con vectores de nmeros (A=B*C, vectores de 64 bits). Las mquinas SIMD disponen de instrucciones similares, la diferencias es que los procesadores vectoriales dependen de unidades funcionales segmentadas que suelen operar con unos pocos elementos del vector por ciclo, mientras que las SIMD normalmente operan sobre todos los elementos a la vez. Han popularizado los supercomputadores considerablemente. Se utilizan en aplicaciones cientficas:

Procesadores SIMD Procesadores vectoriales (II)


Las ventajas de los procesadores vectoriales sobre los tradicionales procesadores SISD son los siguientes:
Cada resultado es independientes del resultado anterior, lo que permite pipelines largos y una alta frecuencia de reloj Una nica instruccin vectorial realiza mucho trabajo, lo que implica menos bsqueda de instrucciones en general y menos instrucciones de salto. En consecuencia, menos fallos en la prediccin de saltos. Las instrucciones vectoriales acceden a la memoria de bloque en bloque (64 elementos), lo que permite amortizar la latencia de memoria. Las instrucciones vectoriales acceden a la memoria en patrones conocidos, lo que permite que se accedan al mismo tiempo mltiples bancos de memoria para proporcionar los operandos.

Las dos ltimas ventajas significan que no necesitan confiar en tasas altas de acierto en la cache de datos para lograr un alto rendimiento.

Procesadores MIMD
Un sistema MIMD se caracteriza por tener varios procesadores trabajando cada uno con sus propios datos.Un sistema de este tipo puede ser desde un multiprocesador con memoria compartida hasta un cluster (conjunto de computadores completos conectados a travs de red local que trabajan conjuntamente como un nico recurso de cmputo). A la hora de disear un sistema multiprocesador hay que tener encuenta los siguientes factores:
Nmero de procesadores El modelo de comunicacin
Memoria compartida Paso de mensajes

La conexin fsica
Bus Red

Procesadores MIMD El modelo de comunicacin


Los procesadores con un nico espacio de memoria se llaman procesadores dememoria compartida. La comunicacin se hace a travs de variables compartidas en la memoria, por lo que se requieren mecanismos de sincronizacin. Tienen dos variantes:
Tiempo de acceso a memoria igual a todos los procesadores: multiprocesadores con acceso a memoria uniforme (UMA) o multiprocesadores simtricos (SMP). Tiempo de acceso a memoria diferentes dependiendo del procesador y la palabra accedida: multiprocesadores con acceso a memoria no uniforme (NUMA). Se pueden obtener mayor rendimiento y son ms escalables.

El modelo alternativo a la memoria compartida es la memoria privada dnde la comunicacin se hace mediante paso de mensajes. En un ejemplo extremo, los procesadores en diferentes ordenadores se comunican con paso de mensajes sobre la red local.

Procesadores MIMD Relacin entre factores

Procesadores MIMD La programacin


La programacin de sistemas multiprocesadores es mucho ms complicada que en los sistemas uniprocesador. Es el escollo ms importante para su implantacin (no los ni el precio del uniprocesador usado, ni los defectos de las topologas de la red de interconexin ni la indisponibilidad de lenguajes de programacin adecuados).
La dificultad radica en los siguientes problemas: La carga que supone la comunicacin conforme se incrementa el nmero de procesadores (como pasa en los grupos de trabajo) El programador tiene que conocer bastante bien el sistema para obtener un alto rendimiento. En los sistemas uniprocesador, el programador trabaja en un lenguaje de alto nivel y el conocimiento de la mquina es tarea del compilador. Se pierde la portabilidad. Para obtener altos rendimientos que justifiquen el uso de multiprocesadores frente a uniprocesadores(pipeline, superescalar,ILP) se requieren plantear nuevos algoritmos que sean inherentemente paralelos.

Se han diseado subsistemas paralelos con una interface secuencial: bases de datos, servidores de ficheros, CAD, SO.

Procesadores MIMD Multiprocesadores conectados por un nico bus(I)

Procesadores MIMD Multiprocesadores conectados por un nico bus(II)


Varios microprocesadores se pueden conectar con un nico bus comn por varias razones:
Los microprocesadores son ms pequeos que un procesador multichip, por lo tanto se pueden colocar ms procesadores en un bus. Las caches pueden reducir el trfico del bus. Existen mecanismos para mantener la coherencia de cachey de memoria para multiprocesadores, tal como se mantienen coherentes las caches y la memoria para la E/S, y en consecuencia se simplifica la programacin.

El trfico por procesador y el ancho de banda del bus determinan el nmero de procesadores tiles en estos multiprocesadores. Las caches replican los datos en sus memorias tanto para reducirla latencia de acceso a los datos como para reducir el trfico de datos con la memoria en el bus. Se requieren protocolos de coherencia de cache y mtodos de sincronizacin entre procesadores.

Multiprocesadores conectados por un nico bus Ejemplo de programacin (I)


Se desea sumar 100000 nmeros en un multiprocesador con bus comn con 10 procesadores (0Pn9) Todos los procesadores inician el programa ejecutando el bucle que suma su subconjunto de nmeros

Estrategia divide y vencers (la mitad de los procesadores suman pares de sumas parciales, luego un cuarto de los procesadores suman parejas de sumas parciales hasta que se obtiene la suma final) Problema de los consumidores y productores (requiere sincronizacin)

Multiprocesadores conectados por un nico bus Ejemplo de programacin (II)

Protocolos de coherencia de cache(I)


En los sistemas multiprocesadores vistos existen problemas de coherencia de caches: diferentes caches pueden contener diferentes copias de los mismos datos de la memoria principal. Para mantener la coherencia entre las diferentes caches se utilizan los llamados protocolos de coherencia de cache. El protocolo ms habitual es el denominado fisgoneo (snooping). Cada cache monitoriza el bus comn para observar el trfico entre la memoria principal y el resto de caches. En cada transaccin del bus se comprueban las etiquetas de las direcciones de las caches. Para evitar la interferencia con el procesador se replica la parte de las etiquetas (no la cache completa) consiguiendo as un puerto extra para la monitorizacin del bus.

Protocolos de coherencia de cache(II)

Protocolos de coherencia de cache(III)


Mantener la coherencia en caso de lecturas no es un problema pero en el caso de las escrituras s:
Para escribir el procesador necesita tener acceso exclusivo a lapalabra Todos los procesadores tienen que conseguir el nuevo valor despus de la escritura

En un fallo de lectura, todas las caches comprueban si tienen una copia del bloque solicitado y si es as se la suministran a la que ha fallado. En una escritura, todas las caches comprueban si tienen una copia del bloque y despus invalidano actualizansu copia.

Invalidacin vs. Actualizacin


Invalidacin por escritura:
El procesador que realiza la escritura causa la invalidacin de las copias en las otras caches antes de realizar la escritura; y despus actualiza los datos locales. Para ello enva una seal de invalidacin y las caches si tienen una copia, invalidan el bloque que contiene la palabra (mltiples lectores y un solo escritor)

Actualizacin por escritura (escrituradifundida, writebroadcast):


El procesador escritor transmite los nuevos datos a todos los procesadores. Por lo tanto, continuamente se transmiten las escrituras de los datos compartidos.

Ventajas e inconvenientes:
La escritura con invalidacin reduce el ancho de banda necesario del bus. La primera escritura invalida las copias, por lo que ms escrituras en el mismo bloque no provocan actividad en el bus. Es la usada habitualmente en los procesadores comerciales. La escritura con actualizacin tiene la ventaja de que los valores nuevos estn ms prontos en las caches, lo que puede reducir la latencia.

Procesadores MIMD Multiprocesadores conectados por red (I)

Procesadores MIMD Multiprocesadores conectados por red (II)


Los diseos con un nico bus presentan los siguientes problemas: el ancho de banda, la latencia y la longitud del bus; y el ancho de banda de la memoria conectada al bus. En sistemas con un nico bus, el medio se usa en cada acceso a memoria, mientras que en el caso de red, se usa slo entre las comunicaciones entre procesadores. La memoria est ahora distribuida (fsicamente) mientras que antes estaba centralizada. El tiempo de acceso a cada memoria ya no es el mismo para todos los procesadores. Puede haber un nico espacio de memoria (comunicacin implcita en loads y stores) o mltiples espacios de memoria (comunicacin explcita mediante primitivas enviar y recibir) . Concepto errneo: memoria compartida vs. memoria distribuida. Un multiprocesador puede tener un nico espacio de direcciones y una memoria fsica distribuida. Lo correcto: espacio nico de direcciones vs. mltiples espacios de direcciones y memoria distribuida vs. memoria centralizada.

Multiprocesadores conectados por red Ejemplo de programacin (I)


Se desea sumar 100000 nmeros en un multiprocesador en red con 100 procesadores y mltiples memorias privadas. Como el computador tiene mltiples espacios de direcciones, el primer paso es distribuir los 100 subconjuntos a cada una de las memorias locales. El siguiente paso es realizar la suma de cada subconjunto:

Se aplica la tcnica de divide y vencersPnrepresenta el nmero de unidades de ejecucin enviar(x,y) es una rutina que enva el valor ya la unidad de ejecucin x recibir() es una funcin que acepta un valor de la red para su unidad de ejecucin Ambas funciones se usan como mecanismo de sincronizacin

Multiprocesadores conectados por red Ejemplo de programacin (II)

Comparacin coste-rendimiento entre MP con bus comn UMA y con red NUMA

Procesadores MIMD Clusters


Un cluster es un grupo de computadores completos interconectados que trabajan conjuntamente como un nico recurso de cmputo (ilusin de trabajar con una mquina) Aplicaciones para grandes computadores (bases de datos, servidores de fichero, servidores de web, simuladores, etc.) son susceptibles de ejecutarse en mquinas menos acopladas que las mquinas NUMA. Clusters vs Sistema multiprocesador (Ventajas e inconvenientes)
Sistema hbridos (sistema de memoria compartida clustered) Ejemplo: un cluster de 32 procesadores = 8 SMPs de 4 P cada uno.

Topologas de red
Desde un bus (bajo coste/rendimiento) a todos conectados (alto coste/rendimiento): unietapa (anillo, malla 2-D, rbol n-cubo, ...) y redes multietapa (crossbar, red omega, ...),etc.

Clusters Ventajas
Escalabilidad: Son fcilmente expandibles Alta disponibilidad: el fallo de un nodo (computador autnomo) no significa prdida de servicio. Como el software de los clusters es una capa que se ejecuta encima del sistema operativo en cada computador, es fcil desconectar el equipo daado de la red y reemplazarlo por otro. Coste inferior a los grandes multiprocesadores, que tienen un volumen de ventas pequeo. Los computadores que forman un cluster se producen en gran escala (menor coste) y utilizan software (SO) estndar.

Clusters: Inconvenientes
El coste de administrar un cluster de N mquinas es similar al coste de administrar N mquinas independientes, mientras que el coste de administrar un multiprocesador con un espacio de direcciones compartido con N procesadores es similar al de administrar una sola mquina. Los clusters se conectan normalmente por el bus de E/S del computador mientras que los multiprocesadores estn normalmente conectados al bus de memoria. Este tiene ms ancho de banda y permite que los multiprocesadores usen el enlace de red a una velocidad ms alta y tengan menos conflictos con el trfico de E/S (aplicaciones que usan mucho E/S) La divisin de la memoria. Un cluster de N mquinas tienen N memorias independientes y N copias del SO, mientras que un multiprocesador con espacio de direcciones compartido permite que un programa use casi toda la memoria del computador.

También podría gustarte