tamaño: 2364678B

Anuncio
Arquitectura de Computadores:
Tema 4:
Multiprocesadores
Índice
1.
Por qué ejecución paralela
2.
Arquitecturas paralelas: clasificación
3.
Multiprocesadores de memoria compartida
4.
Memoria entrelazada
5
5.
B
Buses
de
d ciclo
i l partido
tid
6.
Coherencia de cachés
7.
Sincronización
AC: Multiprocesadores
2
Bibliografía

Baer, J.L. Microprocessor Architecture. From simple
pipelines to chip multiprocessors. 2010

Hennessy, J.L.; Patterson, D. A. Computer
Architecture: A quantitative Approach. 4ª, 5ª ed

Stallings, W. Computer Organization and
Architecture Designing for Performance
Architecture.
Performance. 8
8ª, 9
9ª ed

Culler D.E, J.P. Singh. Parallel Computer
Architecture. A hardware/software approach. 1999
AC: Multiprocesadores
3
Evolución de procesadores
AC: Multiprocesadores
4
Por qué ejecución paralela
¿Es la ejecución
¿
j
paralela
p
una necesidad?
A) Demanda de cómputo
cómp to
B) Logros y límites tecnológicos
C) Logros en la arquitectura
D) Aspectos económicos
AC: Multiprocesadores
5
A)) Demanda de cómputo
p

Tradición en Ciencia y en Ingeniería:
●
Hacer teoría o diseño sobre el papel
●
Realizar experimentos
p
o construir el sistema:
 Difícil, lento, caro, ¡peligroso!
●
Enfoque
q que
q p
permite la Informática:
 Modelar los fenómenos físicos y los sistemas que se
experimentan de manera fidedigna a través de métodos
numéricos eficientes
Necesidad de capacidad
p
de
almacenamiento
y de potencia de cálculo suficientes
AC: Multiprocesadores
6
A) Demanda de cómputo: Algunos ejemplos




Modelización y predicción meteorológica y climática
Modelización y procesamiento en astrofísica (IAC)
Ciencia
Modelización en la industria farmacéutica, en medicina: p.ej.,
experimentación de nuevas válvulas cardiacas
Genoma humano




Test de seguridad en automoción
Diseño de estructuras en arquitectura e ingeniería
Di ñ y validación
Diseño
lid ió d
de semiconductores
i
d t
Computation fluid dynamics (diseño de aviones)


Modelización en finanzas y economía
Procesamiento de transacciones, servicios web.

Armas nucleares (test mediante simulaciones)
simulaciones), criptografía ..

Procesamiento de voz y de imágenes
Ingeniería
Negocios
Defensa
Aplicaciones “insaciables”: escalan más rápido que el HW
AC: Multiprocesadores
7
What drives HPC ? --- “The Need for Speed...”
Computational Needs of Technical, Scientific, Digital Media and Business Applications
Approach or Exceed the Petaflops/s Range
CFD Wing
Wi Simulation
Si l ti
512x64x256 Grid
(8.3 x10e6 mesh points)
5000 FLOPS per mesh point,
5000 ti
time steps/cycles
t / l
2.15x10e14 FLOPS
Source: A. Jameson, et al
CFD Full Plane Simulation
512x64x256 Grid
(3.5 x10e17 mesh points)
5000 FLOPS per mesh point,
5000 time steps/cycles
8.7x10e24 FLOPS
Digital Movies and Special Effects
~1e14
1 14 FLOP
FLOPs per fframe
50 frames/sec
90 minute movie
- 2.7e19 FLOPs
~ 150 days on 2000
1GFLOP/s CPUs
Source: Pixar
AC: Multiprocesadores
8
B) Logros y limitaciones tecnológicas
¿Hasta dónde puede seguir aumentado la
capacidad
id d d
de ejecución
j
ió d
de llas CPU
CPUs?
?
Nº transistores
N
velocidad
l id d d
de reloj
l j
AC: Multiprocesadores
9
Número de transistores
AC: Multiprocesadores
10
Velocidad de reloj
AC: Multiprocesadores
11
Límites físicos

Más frecuencia implica más densidad de potencia y por
lo tanto
tanto, más calor
calor.
P  CfVdd

2
Velocidad de la luz (30cm/ns)
3GHz
10cm/ciclo
Ha sido necesario abordar el problema de seguir aumentando
las prestaciones, desde el punto de vista de Organización y
Arquitectura:
- Cachés: más y de mayor capacidad
- Paralelismo
AC: Multiprocesadores
12
C) Logros en la arquitectura

Evolución de los microprocesadores (ligado al
desarrollo VLSI): “paralelismo interno”
●
Hasta 1985: paralelismo entre bits (bit level parallelism):
4 bits  8 bits  16 bits  32 bits
 los 32 bits representaron un punto de inflexión
 Ahora 64 (¿futuro 128 bits?)
●
Mediados de los 80s hasta la actualidad: paralelismo entre
las instrucciones (ILP):
 (pipelining + RISC) + mejoras en los compiladores
 varias unidades funcionales + cachés  ejecución fuera
de orden y superescalar
 sofisticación en el control: Predicción de saltos
tado Dificil
c pasa
pasar de 2 instrucciones/ciclo
st ucc o es/c c o ->
 Limitado:
superescales de 4-6 vías
AC: Multiprocesadores
13
C) Logros en la arquitectura

En la actualidad:
●
●
Paralelismo a nivel de threads: Multithreading
Varios procesadores en un solo chip: Multicore (algunos
con SMT)
ARM11 MPCore
(1 .. 4 cores)
32+32KB
i Core Duo
(2 cores)
32+32KB
2MB
i Core i7
((4 .. 6 cores + SMT))
32+32KB
256KB
12MB
AC: Multiprocesadores
14
C) Logros en la arquitectura

Últimas aportaciones: Coprocesadores
●
MIC (Many Integrated Cores): Tarjetas con muchos
cores
Ejemplo: Intel Xeon Phi:
 60 cores,
cores 240 threads
 Actúa de coprocesador o sólo
 Unidades de procesamiento vectorial
 Tiene instrucciones vectoriales de 512 bits
 Hasta
H t un Teraflop
T fl en doble
d bl precisión
i ió
AC: Multiprocesadores
15
C) Logros en la arquitectura

Ultimas aportaciones: Coprocesadores
●
GPU: Graphics Processing Unit
 La CPU no desaparece
 La GPU o GPUs actúan de coprocesadores
matemáticos, con muchas unidades funcionales en
cada uno
 ¡¡128 -1.536 ALUs por GPU!!
 Una CPU puede “gobernar” varias GPUs
 3 Teraflops en simple precisión y un 1 Teraflop en
doble precisión.
precisión
 Difíciles de programar
AC: Multiprocesadores
16
D) Aspectos económicos
●
●
Los microprocesadores de propósito general no sólo son
rápidos, sino que también son baratos
-
Coste de desarrollo alto, pero se venden muchos (economía
d escala)
de
l )
-
Disponen de facilidades para construir Multiprocesadores
(Coherencia
(Co
e e c a de cac
cachés,
és, cciclos
c os espec
especiales
a es de bus)
Los constructores de computadores (HP, IBM, SGI, Sun,
etc.)
t ) fabrican
f bi
versiones
i
multiprocesador
lti
d d
de sus máquinas
á i
con un sobreprecio muy pequeño
AC: Multiprocesadores
17
Medidas de prestaciones

Tiempo
-

Ganancia o Speedup
Throughput:
??/T
((?? = operaciones,
p
, instrucciones,, transacciones …))

Otras medidas:
-
B
Benchmarks
h
k (SPEC
(SPEC, Li
Linpack,
k …))
AC: Multiprocesadores
18
Speedup y Eficiencia

Speedup (ganancia o aceleración):
T original
Speedup 
T nuevo
En el caso particular de un sistema con p procesadores o cores:
T (1)
Speedup ( p ) 
T ( p)
Ideal: lineal: speedup (p) = p

Eficiencia:
Speedup ( p )
E ( p) 
p
Id l E(p)
Ideal:
E( ) = 1 (100% de
d utilización)
tili
ió )
AC: Multiprocesadores
19
Ley de Amdahl

Ley de Amdahl:
El speedup
d teórico
ó
estáá limitado
l
d por la
l fracción
f
ó secuenciall s
del programa (no “paralelizable”)
T (1)
Speedup
p
p ( p) 

T ( p)
T (1)
1
1


1

s
s
 1 s  s 
T (1)  s 
p
p 

AC: Multiprocesadores
20
Benchmarking
Ejecución de programas estándar para comparar computadores
o predecir su rendimiento.
Benchmarks
Programas
g
estándar que simulan una carga
g g
genérica.
SPEC (www.spec.org)
●
Conjunto de programas para medir el rendimiento de
componentes o subsistemas.
 CPU, memoria, E/S, servidor de ficheros
●
Linpack
Programa de álgebra lineal creado por J.Dongarra en 1976.
 Uso intensivo de operaciones de coma flotante.
 Evaluación de sistemas científicos y de ingeniería
 Se
S utiliza
ili para establecer
bl
ell ránking
á ki Top500
T
00
AC: Multiprocesadores
21
SPEC CPU: ejemplo
AC: Multiprocesadores
22
Arquitecturas
q
paralelas:
p
clasificación-1

Taxonomía de Flynn (1972). Relación entre instrucciones y
d t de
datos
d un programa:
●
SISD (Single instruction Single data)
 Arquitectura Von Neumann (Monoprocesadores)
●
SIMD ((Single
g Instruction,, Multiple
p Data))
 Arquitecturas vectoriales
 Extensiones multimedia (Ej: MMX, SSE, AVX, AltiVec)
●
MISD (Multiple Instruction, Single Data)
 Ningún computador comercial construído
●
MIMD (Multiple Instruction, Multiple Data)
 Multiprocesadores
M lti
d
AC: Multiprocesadores
23
Taxonomía de Flynn
y
Data memoory
SIMD
PE
Instruction memory
PE
PE
PE
MISD
Instruction memory
Data meemory
Data meemory
Instruction memory
MIMD
Data memoory
D
SISD
PE
PE
Instruction memory
PE
PE
PE
AC: Multiprocesadores
24
Arquitecturas paralelas: clasificación-2
[Sima97]
ILPs
SMT
Pipeline
AC: Multiprocesadores
25
Procesadores vectoriales

Idea:
los operandos de las instrucciones son vectores
 las Unidades Funcionales operan (en paralelo)
con los componentes del vector
 cada instrucción vectorial hace lo que se haría
con un bucle

Uso:
●
fueron los grandes “supercomputadores” en el pasado
[Earth Simulator]
●
útiles para aplicaciones científicas
AC: Multiprocesadores
26
Procesadores vectoriales: Arquitectura básica
AC: Multiprocesadores
27
Procesadores vectoriales
Ejemplo de código vectorial
SAXPY: Y = A*X+Y
for (i
(i=0;
0; i<N; i++)
Versión escalar:
…
lloop:
ldf f1, (r2)
mulf f2, f1, f0
loadf f3, (r4)
addf f4, f2, f3
stf f4, (r4)
addi r2,r2,#4
addi r4,r4,#4
addi r1,r1,#-1
r1,r1,# 1
bnz r1,loop:
Y[i] = a*X[i] + Y[i]
; load X(i)
; a*X(i)
; load Y(i)
; a*X(i)+Y(i)
; store en Y(i)
; incr. ptr. X(i)
; incr. ptr. Y(i)
; dec. contador
; branch to loop
Versión vectorial:
…
LV v1, (r2)
MULVS v2,, v1,, f0
; load X(i..N)
; a*X(i..N))
(
))
LV v3,(r4)
ADDVV v4, v2, v3
SV v4,
v4 (r4)
; load Y(i..N)
; a*X(i..N)+Y(i..N)
; store en Y(i..N)
Y(i N)
...
AC: Multiprocesadores
28
Instrucciones SIMD
Ejemplos:
●
Intel MMX (1996)
-
8 registros de 64 bits:
 8 enteros de 8 bits ó 4 de 16 bits
●
Streaming SIMD Extensions (SSE) (1999)
-
registros de 128 bits
 8 enteros de 16 bits
 4 enteros/c.f de 32 bits ó 2 enteros/c.f de 64 bits
●
Advanced Vector Extensions (AVX 2010)
-
registros de 256 bits
 4 enteros/c.f
enteros/c f de 64 bits
●
futuras extensiones a 512 y 1.024 bits
Initial Many Core Instructions (IMIC de intel Xeon Phi)
-
registros de 512 bits
AC: Multiprocesadores
29
Arquitecturas MIMD
Conjunto de procesadores que ejecutan simultáneamente flujos
de instrucciones diferentes con conjuntos de datos diferentes.

Clasificación:
●
●
Memoria compartida
p
((multiprocesadores)
p
)
-
UMA (Uniform Memory Access)
o SMP (Symmetric Multiprocessor)
-
NUMA (NonUniform Memory Access)
Memoria distribuída (multicomputadores)
-

Clusters, Grid, Cloud
Características:
●
Funcionamiento asíncrono
●
Grado de acoplamiento: Débil, moderado, fuerte
●
Escalabilidad
AC: Multiprocesadores
30
MIMD de memoria compartida

UMA o SMP
Procesador
Caché(s)
Procesador
Caché(s)
Procesador
…….
Características
●
Dos o más procesadores,
procesadores
en general, idénticos
●
Los procesadores son
microprocesadores
i
d
comerciales
●
Comunicación entre
procesos (hilos) a través
de variables compartidas
(Mp) mediante ld/st
●
Latencia Mp uniforme
●
Baja escalabilidad
(docenas)
●
Único S.O.
●
Los multicore actuales
Caché(s)
Bus u otra red de interconexión
Memoria principal
Sist.de E/S
AC: Multiprocesadores
31
MIMD de memoria compartida

NUMA
Procesador
Caché(s)
Memoria
●
Distribución física de
la memoria entre los
procesadores
●
Tacceso a memoria
dependiente de la
ubicación del dato
●
Red más compleja
que bus
●
Mayor escalabilidad
M
l bilid d
(pocos miles)
Procesador
Procesador
Caché(s)
Características
…….
Caché(s)
Memoria
Memoria
Red de interconexión
Sist E/S
Sist.
AC: Multiprocesadores
32
MIMD de memoria distribuída
Nodo
procesador

procesador
Cache(s)
Cache(s)
Memoria
Memoria
DMA
Network
interface
procesador
Características
●
Comunicación explícita
entre procesos
paso de
mediante p
mensajes (MPI)
●
Grado de acoplamiento
más débil
●
Mayor escalabilidad
((cientos de miles))
●
Cada nodo suele ser un
SMP
Cache(s)
…….
DMA
Network
interface
Red de interconexión
Memoria
DMA
Network
interface
AC: Multiprocesadores
33
Clusters
Conjunto de computadores autónomos, interconectados, que
trabajan conjuntamente como un único recurso de cómputo.
 Objetivos:
●
●
●
Escalabilidad
Alta disponibilidad
Buena relación coste/prestaciones
 Características:
●
●

Redes de interconexión rápidas: Myrinet, Infiniband, Gigabit o
dedicadas
Apariencia de máquina única al usuario (“single-system image”)
Aplicaciones:
●
●
Servicios de Internet (p.e. búsqueda en la web)
HPC (Top500): Clusters heterogéneos
AC: Multiprocesadores
34
Arquitectura de un cluster
AC: Multiprocesadores
35
Computación
p
Grid
Red de computadores, distribuídos geográficamente, con
software adecuado para compartir todos los recursos
computacionales existentes en diferentes lugares del planeta
●
•
Requiere:
-
Tasa elevada de cálculo/datos
-
Tareas independientes
-
Tareas que toleran errores
Ej
Ejemplo:
l
Proyecto SETI@home (Search for Extraterrestial Intelligence)
Contribuyen
C
t ib
5 millones
ill
d
de usuarios,
i
en más
á d
de 200 países.
í
En 2006 velocidad de cálculo de 257 TFLOPS
AC: Multiprocesadores
36
Clasificación de los MIMD
Visión lógica
compartida
compartida
distribuida
UMA
Memoria física
distribuida
NUMA M.
M Dist.
Dist
‘
‘escalabilidad’
l bilid d’
Programación “cómoda”
AC: Multiprocesadores
37
Multiprocesadores

D fi i ió
Definición:
Cualquier procesador puede acceder a cualquier
posición de memoria mediante instrucciones ld/st
Los PCs actuales son MP de memoria compartida

I l
Implementación
t ió
●
UMA:
-
●
Basado en un BUS: límite 20-30 procesadores
Otra red de interconexión: p.ej., crossbar
108 procesadores: caso extremo SunFire 15K
NUMA:
-
Otra red de interconexión: anillo, hipercubo, toro, etc
h t p.ej.,
hasta,
j llos 2048 procesadores
d
d
dell Cray
C
T3E
AC: Multiprocesadores
38
REDES

DINÁMICAS: Utilizadas en multiprocesadores
p
UMA.
Crossbar
Bus
us compartido
co pa t do
M-M1
M-M2
M-M3
M-M4
MEMORIA
CPU-1
CPU-2
CPU-1
CPU
1
CPU-2
CPU
2
CPU-3
CPU
3
CPU-4
CPU
4
CPU-3
CPU-4
CPU
4
AC: Multiprocesadores
39
REDES

ESTÁTICAS: Utilizadas en multiprocesadores NUMA.
Red hipercubo 3D
M ll y Toroide
Malla
T
id
AC: Multiprocesadores
40
Multiprocesadores: Programación

Su modelo de programación es similar al que se usa en
los sistemas monoprocesador

La comunicación
L
i
ió y la
l sincronización
i
i
ió es a ttravés
é d
de
variables compartidas
●

Modelo load/store: leyendo y escribiendo en una
determinada dirección
Si
Sincronización.
i
ió Los programas paralelos requieren 2 tipos:
-
Exclusión mútua: LOCKS (cerrojos)
-
Sincronización de eventos: Barriers (barreras)
AC: Multiprocesadores
41
Overhead del paralelismo

Overhead:
-

Coste de arrancar un proceso o un thread.
Coste de comunicar información compartida.
Coste de sincronización.
Coste de los cambios de contexto
Coste de la ejecución extra (y redundante)
Desequilibrios de carga
Baja proximidad de referencias
Protocolos de coherencia de caches...
Difícil de analizar pues depende de en qué máquina se
ejecute: Solución no transportable
AC: Multiprocesadores
42
Multiprocesadores: Soporte hardware

Cambios en la Mp para soportar varias CPUs

Ciclos especiales del bus para implementar
instrucciones atómicas
●

La mayoría de las arquitecturas emplea instrucciones
read-modify-write
d
dif
it atómicas
tó i
para iimplementar
l
t C
Cerrojos
j
y Barreras (sincronización)
Coherencia: Datos replicados en varias cachés
Protocolo de coherencia entre cachés de distintos
procesadores
AC: Multiprocesadores
43
Memoria principal

Parámetros:
1.
tacceso (tMp) o latencia: t. que tarda en completar una L/E
2.
Ancho de banda: nº de bytes/s que se puede transmitir a/de Mp
Ejemplo:
tMp = 100 ns; tamaño de palabra= 4 bytes [B]
 AB = 4 B / 100 ns = (4 / 10-77) B/
B/s = 40 MB/
MB/s

Incremento del ancho de banda:
●
A
Aumentar
t ell ancho
h d
de palabra
l b
●
Usar memorias entrelazadas
Útil en la JM para Tbloque
bl
entre Mp y Mca:
Sin entrelazado:
tsubir/bajar bloque  Nº palabras/bloque x tMp
Con entrelazado:
tsubir/bajar bloque  tMp
AC: Multiprocesadores
44
Memoria principal
Tipos de entrelazado


Modo en que se distribuye el mapa de direcciones:
•
Orden inferior: direcciones consecutivas en módulos
consecutivos
•
Orden superior: direcciones consecutivas en el mismo
módulo.
Modo en que se accede a los módulos:
•
Simple: Misma dirección para todos los módulos
•
Complejo: Distinta dirección para cada módulo
AC: Multiprocesadores
45
Memoria principal

Entrelazado de orden inferior:
Direcciones consecutivas en módulos consecutivos
AC: Multiprocesadores
46
Memoria principal

Entrelazado de orden superior:
Direcciones consecutivas en el mismo módulo
AC: Multiprocesadores
47
Memoria principal

Entrelazado superior+inferior
AC: Multiprocesadores
48
Memoria principal

Entrelazado simple (esquema): Misma dirección
Registros
de datos
AC: Multiprocesadores
49
Memoria principal

Entrelazado simple
p (acceso)
(
)
4 palabras en TMp
AC: Multiprocesadores
50
Memoria principal

Entrelazado complejo (esquema): Dir. distintas
Registros
R
i
de
d
direcciones
AC: Multiprocesadores
51
Memoria principal

Entrelazado complejo
p j (acceso)
(
)
AC: Multiprocesadores
52
Mp entrelazada: Ejemplos
8 módulos, inferior, palabra 4 bytes, tiempo acceso 100 ns
•
•
Sin entrelazado: 4 bytes cada 100 ns: AB = 40 MB/s
Con entrelazado “ideal”: AB = 40 MB/s x 8 = 320 MB/s
Ejemplo-1:
for (i=0; i < 1000; i+=2)
a = a + v[i];
Direcciones:
¿Módulos?:
•
•
0, 2, 4, 6, 8, 10, 12, 14, 16, ….
¿AB Entr. Simple?
¿AB Entr.
Entr Complejo?
AC: Multiprocesadores
53
Mp entrelazada: Ejemplos
8 módulos, inferior, palabra 4 bytes, tiempo acceso 100 ns
•
•
Sin entrelazado: 4 bytes cada 100 ns: AB = 40 MB/s
Con entrelazado “ideal”: AB = 40 MB/s x 8 = 320 MB/s
Ejemplo-1:
for (i=0; i < 1000; i+=2)
a = a + v[i];
Direcciones:
Módulos:
•
•
0, 2, 4, 6, 8, 10, 12, 14, 16
0, 2, 4, 6, 0, 2, 4, 6, 0
AB Entr. simple:
4x40 = 160MB/s
AB Entr.
Entr complejo: 4x40 = 160MB/s
AC: Multiprocesadores
54
Mp entrelazada: Ejemplos
Ejemplo-2:
for (i=0; i < 1000; i+=3)
a = a + v[i];
Direcciones: 0,
0 3,
3 6,
6 9,
9 12,
12 15,
15 18,
18 21,
21 24
¿Módulos?
•
•
¿AB Entr. Simple?
¿AB Entr. Complejo?
AC: Multiprocesadores
55
Mp entrelazada: Ejemplos
Ejemplo-2:
for (i=0; i < 1000; i+=3)
a = a + v[i];
Direcciones: 0,
0 3,
3 6,
6 9,
9 12,
12 15,
15 18,
18 21,
21 24
Módulos:
•
•
0, 3, 6, 1, 4, 7, 2,
5,
0
AB Entr. simple:
3x40 = 120MB/s
AB Entr. complejo: 8x40 = 320MB/s
AC: Multiprocesadores
56
Multiprocesadores basados en bus
P1
Ca1
P2
Ca2
Pm
......
Cam
Bus de datos
Bus de direcciones
Bus de control
Mp
M1
M2
......
Mk
AC: Multiprocesadores
57
Buses

¿Para qué sirven?
Comunicar los distintos componentes (maestros/esclavos)



Constan de líneas de dirección, datos y control para
implementar:
p
•
El protocolo de las transferencias de datos con la memoria
•
El arbitraje del acceso al bus cuando más de un maestro
compite
it por utilizarlo
tili l
Propiedades
•
Sólo un componente
Sól
t puede
d enviar
i un mensaje
j en un instante
i t t
determinado.
•
Un componente puede enviar un mensaje a varios componentes
diferentes sin coste adicional (broadcast)
Fases transacción: Arbitraje (asignación propiedad),
di
direccionamiento
i
i t esclavo,
l
t
transferencia,
f
i errores
AC: Multiprocesadores
58
Buses: Arbitraje

En vez de usar arbitraje centralizado, típico de
monoprocesadores, arbitraje distribuido:
●
Basado en prioridades
p
Proc i-1
Proc i
BGRANT
Arbitro i-1
Proc i+1
Prioridad
Arbitro i
Arbitro i+1
BBUSY
REQ/GRANT
AC: Multiprocesadores
59
Buses: Arbitraje

Combinando prioridades y equidad
Proc i-1
Proc i
BGRANT
Arbitro i-1
Proc i+1
Prioridad
Arbitro i
Arbitro i+1
BREQ
BBUSY
REQ/GRANT
AC: Multiprocesadores
60
Buses

Transferencias básicas en buses multiplexados:
p
•
Escrituras:
Dir
•
Lecturas:
ectu as
Dir
Dato
Tacc
Dato
AC: Multiprocesadores
61
Buses

Transferencias de bloque
q en buses multiplexados
p
Dir
Dato
ato 1 Dato 2 Dato3 Dato 4
…
Utilizados para:
•
Leer/escribir bloques de caché
•
Mp con entrelazado simple (misma dirección) de orden
inferior (en módulos consecutivos)
•
DMA en modo ráfaga
AC: Multiprocesadores
62
Buses

Transferencias atómicas en buses multiplexados
p
•
Operaciones de lectura-modificación-escritura
Dir
•
Tacc
Lect
Escr
Se usan para implementar mecanismos de sincronización
sincronización.
o
Acceso “exclusivo” a datos compartidos o a sección crítica
o
procesadores p
proporcionan
p
instrucciones p
para este tipo
p de
Los p
operaciones
Ejemplo:
test&set (lock) =>
temp <- lock
lock <- 1
return temp
AC: Multiprocesadores
63
Buses de ciclo partido

Se emplean en multiprocesadores y sistemas con Mp
con entrelazado complejo.
complejo

En los buses de ciclo completo el bus no se libera
desde que se inicia hasta que finaliza una operación.

En los buses de ciclo partido:
p
•
El maestro libera el bus durante el tiempo de acceso, para que
otros lo usen (su uso se divide en “rodajas” o “ranuras”)
•
Luego, el esclavo le envía el dato. Necesita ser más
“inteligente”, para poder tomar el control del bus. Debe
guardarse
d
lla di
dirección,
ió tipo
i operación,
ió id
id. maestro,…
Dir 1
Dir 2
Dir 3
….
Dato 1 Dato 3 Dato 2
AC: Multiprocesadores
64
Buses de ciclo partido
AC: Multiprocesadores
65
Coherencia de cachés


Justificación del uso de cachés privadas:
●
reducen el tiempo medio de acceso (uso “monoprocesador”)
monoprocesador )
●
reducen la demanda de ancho de banda en la red de
interconexión
Problema:
E i t
Existencia
i d
de d
datos
t compartidos
tid modificables
difi bl
●
copias de una misma variable en diferentes cachés
●
si la escritura de un procesador en su copia no se hace visible
a los demás, que también tienen copia:
accederán a valores no actualizados (stale data)
●
conocido como Problema de Coherencia de Cachés
AC: Multiprocesadores
66
Problema de coherencia en cachés WT
Ejemplo
1
P1
P2
A=5
Mp
P3
A=5
A 5
A=5
AC: Multiprocesadores
67
Problema de coherencia en cachés WT
Ejemplo
1
P1
P2
A=5
Mp
P3
A=5
A=5
A
5
2
P1
P2
A=5
P3
A=7
Escribe
“7” en A
Mp
A=7
A
7
AC: Multiprocesadores
68
Problema de coherencia en cachés WT
Ejemplo
P1
1
P2
A=5
Mp
3
2
P3
A=5
P2
A=5
P3
A=7
Escribe
“7” en A
Mp
A=5
A
5
¡Lee A=“5”!
P1
A=7
A
7
P1
P2
A=5
A
5
Mp
P3
A=7
A
7
A=7
AC: Multiprocesadores
69
Problema de coherencia en cachés CB
Ejemplo
1
P1
P2
A=5
Mp
P3
A=5
A 5
A=5
AC: Multiprocesadores
70
Problema de coherencia en cachés CB
Ejemplo
1
2
P1
P2
A=5
Mp
P3
P1
A=5
A=5
Mp
A 5
A=5
P2
P3
A=7
Escribe
“7” en A
A=5
AC: Multiprocesadores
71
Problema de coherencia en cachés CB
Ejemplo
1
2
P1
P2
A=5
P3
P1
A=5
A=5
Mp
Mp
A=5
A
5
P2
P3
A=7
Escribe
“7” en A
A=5
3
¡Lee
A=“5”!
P1
P2
A=5
Mp
P3
A=7
A=5
AC: Multiprocesadores
72
Problema de coherencia en cachés CB
Ejemplo
1
2
P1
P2
A=5
P3
P1
P2
A=5
A=5
A=5
A=5
A
5
3
¡Lee A=“5”
de Mp!
4
¡Lee
A=“5”!
P1
P2
A=5
Mp
A=5
Escribe
“7” en A
A=7
Mp
Mp
P3
P3
P1
P2
P3
A=7
A=5
A=5
A=7
Mp
A=5
AC: Multiprocesadores
73
Coherencia de cachés: Soluciones
1
1.
Uso de cachés compartidas
– : necesario un mayor ancho de banda que con cachés privadas de
menor capacidad
– : mayor tiempo de acceso que con cachés privadas
2.
Distinguir entre información “cacheable” y “no cacheable”
• ej. “cacheable”: instrucciones, datos privados
• ej. “no cacheable”: datos compartidos, p.ej., cerrojos, datos en
regiones
i
críticas
íti
• Se usa puntualmente (DMA)
AC: Multiprocesadores
74
Coherencia de cachés: Soluciones
3.
Copiar en la caché cualquier bloque: todo “cacheable”
●
funcionamiento “monoprocesador”: se lleva a la caché
cualquier bloque que se necesite.
●
coherencia mantenida por Hw:
H circuitería
circ itería añadida q
que
e
garantiza que no se acceda a una copia no actualizada de
un bloque
-
-
posibles políticas de actuación ante escrituras:

Con Invalidación (I)

Con Actualización (A)
Implementaciones (independientes de la política de
actuación):

MP basados en buses: snoopy

MP con otro tipo de redes ( ‘escalables’):
escalables ): directorios
AC: Multiprocesadores
75
Coherencia de cachés.
Políticas de actuación
Independientemente de su implementación:
A) Invalidación (I): Write-Invalidate
Write Invalidate
cuando un procesador modifica su copia de un bloque se
invalidan el resto de las copias existentes
B) Actualización (A): Write-Update/Broadcast
con cada modificación se actualiza el resto de las copias
existentes
i t t
AC: Multiprocesadores
76
Invalidación Ejemplo
Invalidación.
1
P1
P2
P3
A=5
A=5
A=5
Mp
A=5
AC: Multiprocesadores
77
Invalidación Ejemplo
Invalidación.
1
2
P1
P2
P3
A=5
A=5
A=5
Mp
Escribe
“7” en A
envío de
Invalidación
A=5
P1
P2
P3
A=7
A=5
A=5
Mp
A=7
Write once:
La primera escritura actualiza la Mp
AC: Multiprocesadores
78
Invalidación Ejemplo
Invalidación.
2
1
P1
P2
P3
A=5
A=5
A=5
Mp
Escribe
“7” en A
envío de
Invalidación
A=5
P1
P2
P3
A=7
A=5
A=5
Mp
A=7
3
P1
P2
A=7
Mp
P3
Lectura
de A
“fallo en
Mca”
A=7
AC: Multiprocesadores
79
Invalidación Ejemplo
Invalidación.
2
1
P1
P2
P3
A=5
A=5
A=5
Mp
Escribe
“7” en A
envío de
Invalidación
P2
A=7
Mp
A=7
P2
P3
A=7
A=5
A=5
Mp
A=5
A=7
3
P1
P1
P3
Lectura
de A
“fallo en
Mca”
4
P1
P2
A=7
Mp
P3
A=7
Lee
de Mp
A=7
AC: Multiprocesadores
80
Actualización Ejemplo
Actualización.
1
P1
P2
P3
A=5
A=5
A=5
Mp
A=5
AC: Multiprocesadores
81
Actualización Ejemplo
Actualización.
1
2
P1
P2
P3
A=5
A=5
A=5
Mp
A=5
Escribe
“7” en A
Difusión
del
nuevo valor
P1
P2
P3
A 7
A=7
A 7
A=7
A 7
A=7
Mp
A=7
AC: Multiprocesadores
82
Invalidación vs Actualización


Invalidación:
●
Más fallos de caché por las invalidaciones
●
Al crecer el tamaño de bloque,
q
la invalidación g
genera más fallos
de cachés debido a la falsa compartición
Actualización:
●
Más tráfico en la red por las actualizaciones
●
A mayor tamaño de la memoria caché genera más tráfico ya que
h más
hay
á d
datos
t y los
l bl
bloques d
duran más
á

La invalidación es la más utilizada, aunque algunas
arquitecturas implementan ambas

¿Cual es mejor? ¡Depende del comportamiento del programa!
AC: Multiprocesadores
83
Coherencia de cachés:
‘grano fino’
fi ’ vs. ‘secuencial’
‘
i l’
Maneras de compartir un bloque
‘grano
g
fino’
‘secuencial’
Px
Py
P
Pz
...
...
t
t
...
...
...
AC: Multiprocesadores
84
Coherencia de cachés:
I l
Implementaciones
t i
snoopy

Se utilizan en multiprocesadores en los que la red de
interconexión es un bus
Idea básica:

-
Las transacciones en el bus son visibles a todos los procesadores
-
Los controladores de cada caché (doble interfaz: proc./bus)
observan lo que pasa en el bus y realizan acciones para preservar
la coherencia
P1
P2
P3
......
Ca1 + snoop
Ca2 + snoop
Ca3 + snoop
Mp
AC: Multiprocesadores
85
Coherencia de cachés:
Implementaciones snoopy

Frente a cada transacción,
transacción el controlador de la caché
realiza acciones para mantener la coherencia:
Actualizar estado, Suministrar datos, Generar nuevas transacciones

El protocolo se implementa como una máquina de estados
distribuída. El tamaño del “grano de coherencia” es el
bloque de caché

Dependiendo de la política de escritura de la caché
●
Cachés con write-through
●
Cachés con copy-back: protocolos más complejos, pero
más utilizados en los actuales multicore
-
Protocolo básico con invalidación: MSI
AC: Multiprocesadores
86
Protocolo MSI
(copy-back con invalidación)
Cada bloque de caché puede estar en uno de los
siguientes estados:
•
Modified: el bloque ha sido modificado por la CPU y es la
única copia válida en el sistema (incluída la Mp)
Valid+Dirty en monoprocesador
•
Shared: puede haber más de una copia en el sistema y
todas ellas tienen el mismo valor
Valid + noDirty en monoprocesador
•
Invalid: el bloque, que estuvo en la caché, está invalidado
Invalid en monoprocesador
AC: Multiprocesadores
87
MSI (copy-back con invalidación)

Principios
p
básicos:
●
Un bloque puede estar en varias cachés si y solo si
está en estado compartido (S)
●
Si un bloque está modificado (M), solo puede estar en
una
u
a caché
cac é
●
Los bloques de caché cambian su estado en función de
dos tipos
p de eventos:
-
Locales: debidos a los accesos del propio procesador
-
Remotos: debidos a la actividad que observan en el bus
(snoopy)
AC: Multiprocesadores
88
MSI Acciones
MSI.
•
Cuando un procesador realiza una petición de lectura a su
caché:
–
Si acierto y bloque marcado como S o M, no cambia de
estado
t d y la
l caché
hé devuelve
d
l ell valor
l demandado
d
d d
–
Si fallo (o bloque marcado como I), el procesador hace una
petición a memoria a través del bus (emite BusRd) y:
•
Si ninguna otra caché tiene el bloque marcado como M, lee
ell bloque
bl
d M
de
Mp y llo marca como S
•
Si otra caché tiene el bloque marcado como M ésta
actualiza la copia de Mp (copy-back)
(copy back) y pasa el bloque a S.
El procesador lee entonces el bloque de Mp y lo marca
también como S
AC: Multiprocesadores
89
MSI. Acciones
•
Cuando un procesador realiza una petición de escritura a
su caché:
–
–
Si acierto
•
Si bloque marcado como M, se realiza la escritura localmente
y ell bloque
bl
no cambia
bi d
de estado
t d
•
Si bloque marcado como S, pasa a M, se escribe en la caché
local y se emite BusInv, para invalidar las copias del resto de
las cachés.
cachés
Si fallo (o bloque marcado como I) el procesador hace una petición
a memoria a través del bus
bus, indicando su intención de escribir
(BusRdX) y:
•
Si otras cachés tienen el bloque marcado como S lo invalidan
•
Si otra caché tiene el bloque marcado como M, ésta actualiza
la copia de Mp (copy-back) y pasa el bloque a I
•
El procesador lee el bloque de Mp
Mp, lo marca como M y realiza
la escritura
AC: Multiprocesadores
90
MSI Operación de lectura
MSI.
PrRd
M
M
BusRd +
MpWr
PrRd
BusRd
S
S
I
I
PrRd +
BusRd
AC: Multiprocesadores
91
MSI Operación de escritura
MSI.
PrRd
M
M
PrWr +
BusRdX
PrWr
BusRd +
MpWr
PrWr +
BusInv
PrRd
S
PrRd +
BusRd
I
B RdX +
BusRdX
BusRd
MpWr
S
BusRdX o
BusInv
I
AC: Multiprocesadores
92
MSI: Diagrama de estados
PrRd
PrWr
M
PrWr
BusRd
PrRd
PrWr
BusRdX
S
PrRd
BusRd
BusRdX
B
RdX o
BusInv
I
AC: Multiprocesadores
93
Variantes del protocolo MSI:
Optimizaciones

MESI Introduce
MESI:
I t d
un nuevo estado
t d Exclusivo
E l i
●
El bloque
q contiene información no modificada y solo
esta en una caché
●
Idea: el procesador no necesita invalidar otras cachés
cuando accede en escritura a un bloque E: la escritura
se hace localmente y el bloque pasa a estado M
●
Utilizado por los procesadores multi-core de Intel
AC: Multiprocesadores
94
Protocolo MESI: Estados
●
M (Modified): la línea de caché se ha modificado
modificado, es
diferente de la copia en Mp y está disponible solo en esta
caché
●
E (Exclusive): la línea de caché es la misma que la copia
en Mp y no está presente en ninguna otra caché.
●
S (Shared): ): la línea de caché es la misma que la copia
en Mp y puede estar presente en otras cachés
●
I (Invalid) – la línea está invalidada
AC: Multiprocesadores
95
Protocolo MESI

Transiciones adicionales a MSI
●
●
Si fallo en lectura (emite BusRd) :
-
si el bloque no está en ninguna caché, se lee de Mp y se
pone en estado E
-
si el bloque está en otra caché en estado E, se marca
como S en ambas cachés
Si fallo en escritura (emite BusRdX)
-
Si otra caché tiene el bloque en estado E se invalida (I)
•
El procesador lee el bloque de Mp, lo marca como M y
realiza la escritura
AC: Multiprocesadores
96
MESI. Diagrama
g
de estados
PrRd PrWr
M
M
PrWr +
BusRdX
BusRd +
MpWr
PrWr +
BusInv
E
PrRd
S
BusRdX +
MpWr
E
BusRd
S
BusRdX
B
RdX o
BusInv
PrRd +
BusRd
I
I
AC: Multiprocesadores
97
MESI. Diagrama de estados
PrRd
1.- Peticiones
locales
PrWr
P
W
+ --
PrWr
M
M
BusRd +
MpWr
PrWr +
BusInv
E
PrWr +
BusRdX
PrRd
PrRd
+BusRd
(S)
BusRdX +
MpWr
E
BusRd
S
S
BusRdX o
BusInv
PrRd +
BusRd
(S)
I
I
AC: Multiprocesadores
98
MESI. Diagrama de estados
2.- Peticiones
remotas
PrWr
+ --
PrRd
PrWr
M
M
BusRd +
MpWr
PrWr +
BusInv
E
PrWr +
BusRdX
PrRd
PrRd
+BusRd
(S)
S
PrRd +
BusRd
(S)
I
BusRdX +
MpWr
E
BusRd
BusRd
S
BusRdX
BusRdX o
BusInv
I
AC: Multiprocesadores
99
Coherencia y programación paralela
Ejemplo:
float x[1000][1000];
for (i=0; i<N; i++)
for (j=0; j<N; j++)
x[i][j] = f(
f(…);
);
proximidad
secuencial
Cada elemento ocupa 4 bytes y cada bloque de caché 64 bytes


El cálculo de cada elemento de x es independiente
Idea:
●
Diferentes threads actualizan diferentes elementos de x
●
Los diferentes threads pueden ejecutarse en distintos
procesadores o cores
 Menor tiempo de ejecución
 Speedup esperado = N
Nº procesadores
AC: Multiprocesadores
100
Coherencia y programación paralela
Tread 1 (CPU1)
Tread 2 (CPU2)
……
…..
x[0][0] = f(…);
…..
…..
x[0][1] = f(…);
f( )
x[0][3] = f(…);
…..
…..
x[0][4] = f(…);
f( );
¿Problema?
Los elementos (independientes) actualizados por los dos
procesadores se encuentran en los mismos bloques de caché
(falsa compartición)
Problemas por mantener la coherencia, que
se realiza a nivel de bloque
bloque, y no de palabra
AC: Multiprocesadores
101
Coherencia y programación paralela
Falsa compartición
Un bloque contiene información independiente, actualizada por
distintos procesadores
•
Cuando una CPU quiere escribir en el bloque, otras cachés que
lo tengan deben invalidarlo
•
Si ell bloque
bl
a invalidar
i
lid está
tá modificado,
difi d se escribe
ib en Mp
M
Tread 1
(CPU1)
Caché
CPU1
……
x[0][0] = f(…);
…..
x[0][3] = f(…);
…..
Tread 2
(CPU2)
Caché
CPU 2
…..
Lee bloque
¡Invalida bloque!
Lee bloque
¡Invalida bloque!
…..
x[0][1] = f(…);
Lee bloque
…..
¡Invalida bloque!
x[0][4] = f(…);
Lee bloque
AC: Multiprocesadores
t
102
Coherencia y programación paralela
Falsa compartición

Efectos negativos: Aumento significativo del tiempo de ejecución
Speedup real <<< Nº procesadores

Posible solución:
●
Que cada bloque contenga información actualizada por un
solo proceso o thread.
●
En el ejemplo anterior: Que cada thread actualice elementos
consecutivos de x
En resumen, en un multiprocesador o multicore:
No solo
N
l h
hay que ttener en cuenta
t lla proximidad
i id d de
d referencias
f
i
para sacar partido de las cachés, además hay que tener
en cuenta el impacto del protocolo para mantener su coherencia
AC: Multiprocesadores
103
Sincronización (I)

Necesaria cuando los procesos que se ejecutan a la vez en
diferentes procesadores:
●
Acceden a datos compartidos “al mismo tiempo” (exclusión
mutua)
Ejemplo:
●
P1:
P2:
A=A+1
A= A+2
Coordinan su progreso en relación a otros procesos (barreras)
Ejemplo:
Avance sincronizado de procesos


Se implementa con la adquisición y liberación de cerrojos
La arquitectura debe proporcionar mecanismos para su
implementación: instrucciones read-modify-write atómicas
AC: Multiprocesadores
104
Sincronización: Ejemplo
Proceso en P1
Proceso en P2
A= A + 1
A= A + 2
ld r1, A
ld r1, A
addi
ddi r1,r1,1
1 11
addi
ddi r1,r1,
1 1 2
st r1, A
st r1, A
( ) Secuencia
(a)
S
i original
i i l
¡¡Se retrasa!
ld r1, A
ld r1, A
addi
ddi r1,r1,
1 1 2
st r1, A
addi r1,r1,1
add
, ,
st r1, A
(b) Secuencia temporal que da como resultado A + 1
AC: Multiprocesadores
105
Sincronización: Ejemplo
j p

Para proceder de forma ordenada se debe asegurar la
secuencialidad en el acceso a la variable compartida (A):
Uso de cerrojos

Uso típico
p
de un cerrojo,
j , incluyendo
y
su liberación:
while (no soy el único)
espero
modifico variable(s) compartida(s)
aviso de que salgo
// adquisición(cerrojo)
// método de espera
// liberación(cerrojo)
AC: Multiprocesadores
106
Sincronización (II)
1.- Método de adquisición:
Adquirir derecho a la sincronización (p.e. entrar en la región crítica):
Preguntar si cerrojo libre,
libre y si lo está ponerlo a ocupado
2.- Método de espera:
● Con bloqueo:
- El proceso se suspende, pasa a la cola de “ready” y libera el
procesador.
- Mucho
M h overhead
h d (salvar
( l
estado,
t d planificar
l ifi
y restaurar)
t
)
● Espera activa (spin-lock)
- El proceso muestrea repetidamente una variable (el cerrojo)
hasta que su valor cambie
- Produce tráfico extra en la red
- Adecuado
Ad
d sii ell coste
t d
de ““replanificación”
l ifi
ió ” es mayor que ell titiempo
de espera: Las regiones críticas deben ser MUY pequeñas
3. - Método de liberación
“Liberar” la sincronización: Poner cerrojo a libre
AC: Multiprocesadores
107
Sincronización (III):
Implementación de Exclusión mutua

Locks:
●
Primera versión:
lock:
Adquisición
ld
.R1, /dir_cerrojo
cmp
.R1, #0
bnz
$lock
st
#1, /dir_cerrojo
Estado cerrojo
0: libre
1: ocupado
ret
Liberación
unlock: st #0, /dir_cerrojo
ret
AC: Multiprocesadores
108
Sincronización (IV):
( )
Implementación de Exclusión mutua

Locks:
●
Segunda versión: con test&set (t&s)
lock: t&s
bnz
ret
.R1, /dir_cerrojo
/
$lock
unlock: st #0, /dir_cerrojo
ret
Consideraciones de rendimiento:

●
t áfi
tráfico,
invalidaciones,
i
lid i
h
hambruna,...
b
Alternativa: sólo operaciones de lectura en la “espera”:
t t&t t& t
test&test&set
AC: Multiprocesadores
109
Sincronización (V)
Test and Test and Set:
repeat
t
while (LOAD(lock) = 1) do nothing;
until (TEST&SET(lock) = 0))
lock:
ld
cmp
p
bnz
t&s
bnz
ret
.R1, /dir_cerrojo
.R1,
, #0
$lock
.R1, /dir_cerrojo
$lock
+ : Consulta el valor del cerrojo en la caché local
– : sigue habiendo algo de tráfico si hay muchos procesos
esperando por el cerrojo (un t&s cada uno)
AC: Multiprocesadores
110
Sincronización (VI)

Locks
●
Tercera versión: load-locked + store-conditional
LL: carga el valor de la variable de sincronización en un registro
SC: almacena un valor de ‘ocupado’ en dicha variable si y solo si
ningún otro procesador ha escrito en ella desde que ejecutó LL
(éxito), todo atómico
lock:
ll .R1, /dir_cerrojo
cmp .R1, #0
bnz $lock
sc #1, /dir_cerrojo
bz $lock
ret
// (dir)-> R1
// ¿cerrado?
// si éxito 1-> (dir)
// si fallo,reintento
unlock: st #0, /dir_cerrojo
ret
-
Número de invalidaciones óptimo, dos, una al salir de la
región crítica y otra al entrar el siguiente
Ot
Otras
versiones:
i
ti k t lock,
ticket
l k array-based
b
d queing:
i
ambas
b llogran
FIFO
AC: Multiprocesadores
111
Sincronización (VII)
( )

Ejemplos de instrucciones:
●
IBM 370:
compare&swap atómico para multiprogramación
●
intel x86:
cualquier instrucción (de acceso a memoria) puede llevar
el prefijo LOCK (acceso atómico)
●
Los SPARC (RISC):
operaciones atómicas registro-memoria:
swap,compare&swap
●
MIPS PowerPC,
MIPS,
PowerPC Alpha:
no accesos atómicos, sino pareja de instrucciones
load-locked/store-conditional
AC: Multiprocesadores
112
Sincronización ((VIII).
) Barreras

Barrera:
Operación
O
ió d
de sincronización
i
i
ió que ffuerza a llos procesos
concurrentes a esperar hasta que todos ellos lleguen a un
punto determinado (barrera) y entonces se permite la
continuación de los mismos

Se suelen implementar en software, utilizando
LOCKS, contadores y flags
AC: Multiprocesadores
113
Sincronización (IX)

IImplementación
l
t ió de
d Barreras
B
Barrera centralizada
AC: Multiprocesadores
114
Sincronización (XII)
( )

Barreras con cambio de sentido ¿por qué?
AC: Multiprocesadores
115
Descargar