Documente Academic
Documente Profesional
Documente Cultură
2º curso
2º curso / / 2º
/ 2º
/ 2º cuatr.
Doble Grado en
cuatr. Arquitectura de Computadores
Informática
Grado en y
Grado en
I f enáti
I Matemáticas
Ing. Informática
Ing. Informática
Tema 3
Tema 3
Arquitecturas con paralelismo a nivel
de thread (TLP)
de thread (TLP)
Material elaborado por los profesores responsables de la asignatura:
Mancia Anguita – Julio Ortega
Licencia Creative Commons .
Tema 3. Arquitecturas con paralelismo a nivel de thread
1
(TLP)
Lecciones
AC
Multicores
Cores Multithread
Hardware y arquitecturas TLP en un chip
d h
Lección 8. Coherencia del sistema de memoria
Lección 9. Consistencia del sistema de memoria
Lección 10. Sincronización
2 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Objetivos Lección 7
AC
Distinguir entre cores
Distinguir entre cores multhread, multicores
multhread, multicores y
y
multiprocesadores.
Comparar cores con multithread
C ltith d de grano fino, de grano
d fi d
grueso y simultánea.
3 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Bibliografía Lección 7
AC
Fundamental
T. Rauber, G. Ründer. Parallel Programming: for Multicore
and Cluster Systems Springer 2010 Disponible en línea
and Cluster Systems. Springer 2010. Disponible en línea
(biblioteca UGR): http://dx.doi.org/10.1007/978‐3‐642‐
04818‐0
Theo Ungerer, Borut Robic, Jurij Silc, “A survey of Processors
with Explicit Multithreading”, ACM Computing Surveys, vol.
p g, p g y,
35, no. 1, pp. 29‐63, March 2003. Disponible en línea
(biblioteca UGR): http://dl.acm.org/citation.cfm?id=641867
4 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 7
AC
Clasificación y estructura de arquitecturas con TLP
Clasificación y estructura de arquitecturas con TLP
explícito y una instancia del SO
M lti
Multiprocesadores
d
Multicores
Cores Multithread
Hardware y arquitecturas TLP en un chip
5 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Clasificación de arquitecturas con TLP
AC
explícito y una instancia de SO
explícito y una instancia de SO
Multiprocesador
p
Ejecutan varios threads en paralelo en un computador con varios
cores/procesadores (cada thread en un core/procesador
di ti t )
distinto).
Diversos niveles de empaquetamiento: dado, encapsulado, placa, chasis
y
y sistema.
Multicore o multiprocesador en un chip o CMP (Chip
MultiProcessor))
Ejecutan varios threads en paralelo en un chip de procesamiento
multicore (cada thread en un core distinto)
Core multithread
Core que modifican su arquitectura ILP para ejecutar
q q p j
threads concurrentemente o en paralelo
6 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 7
AC
Clasificación y estructura de arquitecturas con TLP
Clasificación y estructura de arquitecturas con TLP
explícito y una instancia del SO
M lti
Multiprocesadores
d
Ejecutan varios threads en paralelo en un computador con
varios cores/procesadores (cada thread en un
/ d ( d h d
core/procesador distinto).
Multicores
Cores Multithread
Cores Multithread
Hardware y arquitecturas TLP en un chip
7 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Multiprocesadores. Criterio clasificación:
AC
sistema de memoria (Lección 1)
sistema de memoria (Lección 1)
Multiprocesador con
Multiprocesador con Multiprocesador con
Multiprocesador con
memoria centralizada (UMA ) memoria distribuida (NUMA)
• Mayor latencia
Mayor latencia ‐ Poco
Poco • Menor latencia
Menor latencia ‐ escalable
escalable
escalable pero requiere para ello
distribución de datos/código
P P P P
barras cruzadas N0 P P N1
P/N M/N
0 0 E/S M E/S M
Red de interconexión 1 1
2 2 Red de interconexión
3 3
M M M M M E/S M E/S
N
P/N M/N
0 N3 P P N2
P M 0 0
0 0 1 1 1
1 1 N0 N1 N2 N3
2
3 b
bus 2
3 2 2 2
3
3 3
multietapa árbol grueso estática: anillo
8 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Multiprocesadores. Criterio de
clasificación: nivel de empaquet /conexión
clasificación: nivel de empaquet./conexión
AC
Si t
Sistema
Armario
Armario
(cabinet) SGI Altix 4700
http://www.sgi.com/products/remarketed/servers/altix4700.html
Placa
(
(board) )
chip
Multicore
9 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Multiprocesador en una placa: evolución
AC
de UMA a NUMA
de UMA a NUMA
enlace
CPU1 CPU2 Memoria CPU1 CPU2 Memoria
bus del sistema
enlace enlace
Conexxión con
mentos
Northbridge
ráppidos
¿?
Conexión con
Disco Disco
elementtos
duro duro
chipset red chipset red
UMA NUMA
Controlador de memoria en chipset (Northbrigde Controlador de memoria en chip del procesador
chip) Red: enlaces (conexiones punto a punto) y
Red: bus (medio compartido)
( p ) ( p p
conmutadores (en el chip del procesador) )
Ejemplos en servidores:
AMD Opteron (2003): enlaces HyperTransport
(2001)
Intel (Nehalem) Xeon
I t l (N h l ) X 7500 (2010)
7500 (2010): enlaces QPI
l QPI
(Quick Path Interconnect, 2008)
http://www.intel.com/content/www/us/en/performance/performance-quickpath-architecture-demo.html
10 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Multiprocesador en una placa: UMA con
AC
bus (Intel Xeon 7300)
bus (Intel Xeon
CPU1 CPU2 CPU3 CPU4
Processor-E73310-(4M-Cachhe-
bus
bus bus
Connexión con
bus
elementos
rrápidos
Memoria Northbridge
g Gráficos
MHz-FSB)#blockdiagrams
Conexión con
red Disco
elemeentos
Southbridge
g
httpp://shopper.cnnet.com/motheerboards/supeer-micro-
lentos
x77qce-motherbooard/4014-3049_9-32768194.html
duro
http://arrk.intel.com/products/307922/Intel-Xeon-P
USB
chipset
UMA
1_60-GHz-1066-M
11 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Multiprocesador en una placa: CC‐NUMA
AC
con red estática (Intel Xeon 7500)
con red estática (Intel Xeon
http://ark.intel.com/produucts/chipseets/47822#bblockdiagraams
httpp://www.supermicro.ees/?opcion==contenidoo&plt=xeonn7500
mo/demo.httm
http:///www.intel..com/technnology/quicckpath/dem
Diagrama
ag a a de
bloques de la
placa
N0 N1
Placa para Intel Xeon 7500
N3 N2
red estática
12 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 7
AC
Clasificación y estructura de arquitecturas con TLP
Clasificación y estructura de arquitecturas con TLP
explícito y una instancia del SO
M lti
Multiprocesadores
d
Multicores
Ejecutan varios threads en paralelo en un chip de
p
procesamiento multicore (cada thread en un core distinto)
( )
Cores Multithread
Hardware y arquitecturas TLP en un chip
13 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Multiprocesador en un chip o Multicore o
AC
Intel Xeeon 75000
CMP (Chip MultiProcessor)
CMP (Chip MultiProcessor)
C 0 Core1
Core0 C 1 Core2
C 2 Core3
C 3 Core4
C 4 Core5
C 5 Core6
C 6 Core7
C 7
L1 L1 L1 L1 L1 L1 L1 L1 32 KB Icache + 32KB Dcache
L2 L2 L2 L2 L2 L2 L2 L2 8x256 KB
LLC - L3 12 a 24 MB
Controlador Controlador Diagrama de bloques
memoria Conmutador memoria
(MC) (MC) del chip
QPI SMI
QPI
Core3 Core4
L3
Core2 Core5
Chip o dado de silicio del chip de
MC Conmutador MC procesamiento Intel Xeon 7500
Core1 Core6
L3 http://en.wikipedia.org/wiki/List_of_Intel_Xeon_micropr
Core0 Core7 ocessors#.22Beckton.22_.2845_nm.29
SMI
14 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Multicore: otras posibles estructuras
AC
C 0 Core1
Core0 C 1 Core2
C 2 Core3
C 3 Core4
C 4 Core5
C 5 Core6
C 6 Core7
C 7
…
L1 L1 L1 L1 L1 L1 L1 L1
Coren
L1
…
…
…
LLC LLC
…
…
Conmutaador
Controlador
Conmutador
…
memoria
LLC
(MC)
L1
…
LL1
…
Core0 Core1 Core2 Core3 Core4 Core5 Coren
L1 L1 L1 L1 L1 L1 … L1
L1
MC
…
C
…
Controlador
Conmutador
…
…
memoriai
(MC)
Clasificación y estructura de arquitecturas con TLP
Clasificación y estructura de arquitecturas con TLP
explícito y una instancia del SO
M lti
Multiprocesadores
d
Multicores
Cores Multithread
Modifican
M difi su arquitectura ILP (segmentada, escalar o
it t ILP ( t d l
VLIW) para ejecutar threads concurrentemente o en
paralelo
l l
Hardware y arquitecturas TLP en un chip
16 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Arquitecturas ILP
AC
Escalar
Icacche
LLC … IF IB ID R EX R Mem R WB
segmentada
R FX EX R
VLIW y R FP R R R
Icache
LLC … IF IB ID/ISS WB
superescalar R L/S R R
Etapa de captación de instrucciones (Instruction Fetch)
Etapa de decodificación de instrucciones y emisión a unidades funcionales
(Instruction Decode/Instruction Issue)
Etapas de ejecución (Execution) Etapa de acceso a memoria (Memory)
Etapas de ejecución (Execution). Etapa de acceso a memoria (Memory)
Etapa de almacenamiento de resultados (Write‐Back)
17 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Arquitecturas ILP
AC
Procesadores/cores segmentados:
Ejecutan instrucciones concurrentemente segmentando el uso de sus
componentes
Procesadores/cores VLIW (Very
VLIW (Very Large Instruction Word) y
Word) y
superescalares:
Ejecutan instrucciones concurrentemente (segmentación) y en
paralelo
l l (tienen múltiples unidades funcionales y emiten múltiples
( úl l d d f l úl l
instrucciones en paralelo a unidades funcionales)
VLIW:
Las instrucciones que se ejecutan en paralelo se captan juntas de memoria.
Este conjunto de instrucciones conforman la palabra de instrucción muy larga a la
que hace referencia la denominación VLIW
El hardware presupone que las instrucciones de una palabra son independientes: no
El hardware presupone que las instrucciones de una palabra son independientes: no
tiene que encontrar instrucciones que pueden emitirse y ejecutarse en paralelo
Superescalares:
Tiene que encontrar instrucciones que puedan emitirse y ejecutarse en paralelo
(tiene hardware para extraer paralelismo a nivel de instrucción)
18 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Modificación de la arquitectura ILP en Core
AC
Multithread ()
LLC: Last
LLC: Last Level Cache. Icache: Instruction
Cache. Icache: Instruction cache. IB:
cache. IB:
Instruction Buffer. RF: Register File. FX: Fixed Point. FP: RF
Floating Point. L/S: (memory) Load/Store. B: Branch
LLC FX Ex
L1-Icache IB
IF ID/ FP WB
ISS B
…
L/S
…
ej.j Multithread
M ltith d simultánea
i ltá o SMT L1-Dcache
Lo colores representan threads distintos: thread 0 y thread 1
Almacenamiento: se multiplexa reparte o comparte entre threads o se replica
Almacenamiento: se multiplexa, reparte o comparte entre threads, o se replica
Con SMT: repartir, compartir o replicar
Otro hardware en etapas: se multiplexa, reparte o comparte entre threads
Con SMT: unidades funcionales (etapa Ex) compartidas, resto etapas repartidas ,
compartidas; multiplexación es posible (p. ej. predicción de saltos y decodificación)
19 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Clasificación de cores multithread
AC
Temporal Multithreading
p g ((TMT))
Ejecutan varios threads concurrentemente en el mismo
core
Ciclos
C
La conmutación entre threads la decide y controla el
hardware
Emite instrucciones de un único thread en un ciclo
Ejecutan, en un core
j superescalar, varios threads
p en
C
paralelo
Pueden emitir (para su ejecución) instrucciones de varios
threads en un ciclo
20 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Clasificación de cores con TMT
AC
Fine‐grain multithreading (FGMT) o interleaved
multithreading
La conmutación entre threads la decide el hardware cada
Ciclos
ciclo (coste 0)
(coste 0)
por turno rotatorio (round‐robin) o
por eventos de cierta latencia combinado con alguna técnica de
p g
planificación (ej. thread menos recientemente ejecutado)
Eventos: dependencia funcional, acceso a datos a cache L1, salto no
predecible, una operación de cierta latencia (ej. div), …
predecible, una operación de cierta latencia (ej. div), …
multithreading
C
La conmutación entre threads la decide el hardware (coste de
0 a varios ciclos)
tras intervalos de tiempo prefijados (timeslice multithreading) o
por eventos de cierta latencia (switch‐on‐event multithreading).
21 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Clasificación de cores con CGMT con
AC
conmutación por eventos
conmutación por eventos
Estática:
Conmutación
Explícita: instrucciones explícitas para conmutación (instrucciones
añadidas al repertorio)
añadidas al repertorio)
Implícita: instrucciones de carga, almacenamiento, salto
Ventaja/Inconveniente:
coste cambio contexto bajo (0 o 1 ciclo) / cambios de contextos
b b ( l )/ b d
innecesarios
Dinámica:
Dinámica:
Conmutación típicamente por:
fallo en la última cache dentro del chip de procesamiento (conmutación
por fallo de cache), interrupción (conmutación por señal), …
f ll d h ) i t ió ( t ió ñ l)
Ventaja/Inconveniente:
reduce cambios de contexto innecesarios / mayor sobrecarga al cambiar
/ y g
de contexto
22 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Alternativas en un core escalar
AC
segmentado
En un core escalar se emite una instrucción cada ciclo de reloj
Un thread
Un thread Multithread Multithread
(no TLP) grano fino grano grueso
A A B CD AB CD
A A A
A B A
Cicclos
pérdida C A
Conmutación
C t ió
vertical D de contexto
A A B
B B
23 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Alternativas en un core con emisión
AC
múltiple de instrucciones de un thread
múltiple de instrucciones de un thread
En un core superescalar o VLIW se emiten más de una instrucción cada
ciclo de reloj; en las alternativas de abajo, de un único thread
i l d l j l lt ti d b j d ú i th d
Un thread
Un thread Multithread Multithread
(no TLP) grano fino grano grueso
A ABC D ABC D
pérdida
h i t l
horizontal
A A A A A A
A A A B B B A A A
Conmutación
de conttexto
pérdida
Cicllos
C
vertical
A A D D D D B B B
A A A A A B B B
A B B B B B B
ancho emisión
24 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Core multithread simultánea y multicores
AC
En un multicore y en un core superescalar con SMT (Simultaneous MultiThread) se
pueden emitir instrucciones de distintos threads cada ciclo de reloj
pueden emitir instrucciones de distintos threads cada ciclo de reloj
Core con multithread
con multithread Multicore con 2
con 2 cores
cores con multithread
con multithread
simultánea (4
simultánea (4 thread
thread por core
por core)) simultánea (2 threads
simultánea (2 threads por
por core
core))
ABC D AB CD
A A D B A A C D
B B B B D
Cicllos
C D B B B A D D
D A D A B C C
A C C B B D C
B C D D A C D
ancho emisión
25 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 7
AC
Clasificación y estructura de arquitecturas con TLP
Clasificación y estructura de arquitecturas con TLP
explícito y una instancia del SO
M lti
Multiprocesadores
d
Multicores
Cores Multithread
Hardware y arquitecturas TLP en un chip
26 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Hardware y arquitecturas TLP en un chip
AC
27 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Para ampliar …
AC
Webs
An Introduction to the Intel® QuickPath Interconnect,
http://www.intel.com/content/www/us/en/io/quickpath‐
t h l / i k th i t
technology/quick‐path‐interconnect‐introduction‐paper.html
t i t d ti ht l
Intel® QuickPath Technology Animated Demo [119 K]
http://www intel com/content/www/us/en/performance/perfor
http://www.intel.com/content/www/us/en/performance/perfor
mance‐quickpath‐architecture‐demo.html
Artículos en revistas
Artículos en revistas
Kongetira, P.; Aingaran, K.; Olukotun, K.; , "Niagara: a 32‐way
multithreaded Sparc processor," Micro, IEEE , vol.25, no.2, pp. 21‐
29, March‐April 2005. Disponible en línea (biblioteca
UGR): http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumbe
r=1453485&isnumber=31213
28 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
2º curso
2º curso
2º curso / / 2º
/ 2º
/ 2º cuatr.
Doble Grado en
cuatr. Arquitectura de Computadores
Informática
Grado en y
Grado en
I f enáti
I Matemáticas
Ing. Informática
Ing. Informática
Tema 3
Tema 3
Arquitecturas con paralelismo a nivel
de thread (TLP)
de thread (TLP)
Material elaborado por los profesores responsables de la asignatura:
Mancia Anguita – Julio Ortega
Licencia Creative Commons .
Tema 3. Arquitecturas con paralelismo a nivel de thread
29
(TLP)
Lecciones
AC
Lección 7. Arquitecturas TLP
q
Lección 8. Coherencia del sistema de memoria
Sistema de memoria en multiprocesadores
Sistema de memoria en multiprocesadores
Concepto de coherencia en el sistema de memoria: situaciones
de incoherencia y requisitos para evitar problemas en estos casos
Protocolos de mantenimiento de coherencia: clasificación y
diseño
Protocolo MSI
l SI de espionaje
d i j
Protocolo MESI de espionaje
P t l MSI b d
Protocolo MSI basado en directorios con o sin difusión
di t i i dif ió
Lección 9. Consistencia del sistema de memoria
Lección 10. Sincronización
30 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Objetivos Lección 8
AC
Comparar los métodos de actualización de memoria principal
i l
implementados en cache.
t d h
Comparar las alternativas para propagar un escritura en protocolos de
coherencia de cache.
Explicar qué debe garantizar el sistema de memoria para evitar problemas
por incoherencias.
Describir las partes en las que se puede dividir el análisis o el diseño de
protocolos de coherencia.
Distinguir entre protocolos basados en directorios y protocolos de
Distinguir entre protocolos basados en directorios y protocolos de
espionaje (snoopy).
Explicar el protocolo de mantenimiento de coherencia de espionaje MSI.
Explicar el protocolo de mantenimiento de coherencia de espionaje MESI.
Explicar el protocolo de mantenimiento de coherencia MSI basado en
di t i
directorios con difusión y sin difusión.
dif ió i dif ió
31 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Bibliografía Lección 8
AC
Fundamental
Secc. 10.1. J. Ortega, M. Anguita, A. Prieto. Arquitectura de
Computadores Thomson 2005 ESII/C 1 ORT arq
Computadores. Thomson, 2005. ESII/C.1 ORT arq
Complementaria
T. Rauber, G. Ründer. Parallel Programming: for Multicore
and Cluster Systems. Springer 2010. Disponible en línea
(bibli t
(biblioteca UGR): http://dx.doi.org/10.1007/978‐3‐642‐
UGR) htt //d d i /10 1007/978 3 642
04818‐0
32 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Computadores que implementan en
AC
hardware mantenimiento de coherencia
hardware mantenimiento de coherencia
Multi‐ NORMA Memoria físicamente
No ld ( l ) distribuida
nivel de sistema (Cluster), d b d
computadores Remote armario, chasis (blade
+
Memoria no Memory server)
P P
compartida
compartida A
Access
E/S M
NUMA (nivel de sistema,n. E/S M
NUMA armario/chasis, n. placa) Red de interconexión
Non‐
N CC‐NUMA (nivel de
Escalabilidad I
Uniform armario: SGI Altix; nivel de
M E/S M E/S
Multi‐ Memory P P
placa)
procesadores A
Access
Memoria COMA
compartida Coherencia por Memoria físicamente
Un único espacio de
U ú i i d UMA SMP Symmetric
Symmetric
hardware centralizada
MultiProcessor (nivel de
direcciones Uniform P P P P
placa; nivel de chip:
Memory multicores como Intel Core
como Intel Core Red de interconexión
Red de interconexión
Access i7, i5, i3)
M M M M E/S
33 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 8
AC
34 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Sistema de memoria en multiprocesadores
AC
¿Qué incluye?
Caches de todos los nodos
Memoria principal
C t l d
Controladores
Buffers:
Buffer de escritura/almacenamiento
Buffer de escritura/almacenamiento
Buffer que combinan escrituras/almacenamientos, etc.
Medio de comunicación de todos estos componentes (red de
interconexión)
La comunicación de datos entre procesadores la realiza el
sistema de memoria
sistema de memoria
La lectura de una dirección debe devolver lo último que se ha
escrito (desde el punto de vista de todos los componentes del
sistema)
i )
35 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Sistema de memoria
AC
Buffer de escritura/
Core0 Core1 Core7
Buffer que combinan
L1 L1 …
escrituras
L1
L2 L2 L2
LLC - L3
Controlador Controlador
memoria Conmutador memoria
(MC) (MC)
QPI SMI
N0 N1
N3 N2
36 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 8
AC
37 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Incoherencia en el sistema de memoria
AC
Clases de estructuras de datos Causa de problemas por falta de
p p Falta de
coherencia coherencia
Pj Pk Memoria Pi Pj Pk Memoria
D=4 D=4
Cj Ck
2E 3E
Ci Cj Ck
D 3 4 D 3 D 3 D 3 4 D 3
1L 1L
2L
38 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Métodos de actualización de memoria
AC
principal implementados en caches
principal implementados en caches
1. Escritura inmediata (write-through):
Pj Pk Memoria Cada vez que un procesador
1E escribe en su cache escribe
Cj Ck
D´ D
D´ t
también
bié en memoria i principal
i i l
2Act
Por los principios de localidad
temporal y espacial seríaí másá
rentable si se escribe todo el bloque
2. Posescritura (write
(write-back):
back): una vez realizadas múltiples
p
escrituras
Pj Pk Memoria
Cj Ck
1E Se actualiza memoria principal
D´ D escribiendo todo el bloque
cuando se desaloja de la
cache
39 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Alternativas para propagar una escritura en
AC
protocolos de coherencia de cache
protocolos de coherencia de cache
1. Escritura con actualización (write-update):
Cada vez que un
Pi Pj Pk Memoria
procesador escribe en una
1E dirección en su cache se
Ci Cj Ck
D´ D´ D´ D escribe en las copias de esa
dirección en otras caches
2Act P
Para reducir
d i tráfico,
áfi
sobre todo si los datos
2. Escritura con invalidación están compartidos por
(write-invalidate): pocos procesadores
Pi Pj Pk Memoria
Antes que un procesador
1E
Ci Cj Ck modifique una dirección
I I D´ D en su cache se invalidan
las copias del bloque de la
2Inv dirección en otras caches
40 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Situación de incoherencia aunque se
AC
propagan las escrituras (usa difusión)
propagan las escrituras (usa difusión)
Orden p
para P0 P00 A=1
A 1 P1 Orden p
para P1
1) A=1 1) A=2
2) A=2 A 01 2 A=2 A 02 1 2) A=1
A=1
A 1 A=2
A=1
A=2
Orden generación:
P0 1) A=1
P1 2) A=2
Contenido inicial de las copias de la dirección A en calabaza. P0 escribe en A un 1 y, después, P1 escribe
d ld l d l d ó l b b d é b
en A un 2.
Se utiliza actualización para propagar las escrituras (las propagación se nota con flechas)
Llegan en distingo orden las escrituras debido al distinto tiempo de propagación (se está suponiendo que
l
los Proc. están ubicados en la placa tal y como aparecen en el dibujo). En cursiva se puede ver el
á b d l l l ldb ) i d l
contenido de las copias de la dirección A tras las dos escrituras.
Se da una situación de incoherencia aunque se propagan las escrituras: P0 y P3 acaban con 2 en A y P1 y P2 con 1.
41 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Requisitos del sistema de memoria para
AC
evitar problemas por incoherencia I
evitar problemas por incoherencia I
Propagar las escrituras en una dirección
p g
La escritura en una dirección debe hacerse visible en un tiempo
finito a otros procesadores
Componentes conectados con un bus:
Los paquetes de actualización/invalidación son visibles a todos los
nodos conectados al bus (controladores de cache)
nodos conectados al bus (controladores de cache)
Serializar las escrituras en una dirección
Las escrituras en una dirección deben verse en el mismo orden
Las escrituras en una dirección deben verse en el mismo orden
por todos los procesadores (el sistema de memoria debe parecer
que realiza en serie las operaciones de escritura en la misma
dirección)
Componentes conectados con un bus:
El orden en que los paquetes aparecen en el bus determina el orden en
El d l t lb d t i l d
que se ven por todos los nodos.
42 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Requisitos del SM para evitar problemas
AC
por incoherencia II: la red no es un bus
por incoherencia II: la red no es un bus
Propagar escrituras en una dirección
p g
Usando difusión:
Los paquetes de actualización/invalidación se envían a todas las caches
Para conseguir mayor escalabilidad:
Se debería enviar paquetes de actualización/invalidación sólo a caches
(nodos) con copia del bloque
(nodos) con copia del bloque
Mantener en un directorio, para cada bloque, los nodos con copia del
mismo
Serializar escrituras en una dirección
El orden en el que las peticiones de escritura llegan a su home
(nodo que tiene en MP la dirección) o al directorio centralizado
sirve para serializar en sistemas de comunicación que garantizan
el orden en las trasferencias entre dos puntos
el orden en las trasferencias entre dos puntos
43 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Directorio de memoria principal
AC
Nodo de cómputo
P Memoria Di t i
Directorio
…
C bloque
CC
Memorria
Conmu- bloque C0 C1 … CN-1
N1
E/S CM
tador bloque 1 0 … 1 0
… Estado
bloque memoria
conexión
ió a otros
t nodos
d Vector de bits con información
de cómputo sobre cachés con copia
44 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Alternativas para implementar el directorio
AC
Centralizado Distribuido
• Compartido por todos los nodos • Las filas se distribuyen entre los
q
• Contiene información de los bloques nodos
de todos los módulos de memoria • Típicamente el directorio de un nodo
contiene información de los bloques
de sus módulos de memoria
m.
m.
m.
m.
Mem
Mem
Mem
Mem
Directorio
…
…
centralizado
…
Mem.
Mem.
Mem.
Mem.
M
M
…
…
Directorios distribuidos
45 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Serialización de las escrituras por el home.
AC
Usando difusión I
Usando difusión I
P00 A=1
A 1 P1
A 0 A=2 A 0
A=1
A 1 A=2
A=1
A=2
Orden generación:
P0 1) A=1
P1 2) A=2
Orden llegada
g
P3 P2
al home = real
A 0 A 0 1) A=2
2) A=1
Contenido inicial de las copias de la dirección A en calabaza. P0 escribe en A un 1 y,
después, P1 escribe en A un 2.
Se utiliza actualización para propagar las escrituras (las propagación se nota con
p p p g ( p p g
flechas)
El orden de llegada al home es el orden real para todos
46 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Serialización de las escrituras por el home.
AC
Usando difusión II
Usando difusión II
P00 P1 Orden p
para P1
Orden para P1
1) A=2
1) A=2 0 2
A 0 2 A
Orden generación:
1) A=1
2) A=2
Orden llegada
g al home =
P3 P2
Orden para P1 Orden real
1) A=2 0 2 A 0 2 1) A=2
A
2) A=1
Contenido inicial de las copias de la dirección A en calabaza
Se utiliza actualización para propagar las escrituras (las
Se utiliza actualización para propagar las escrituras (las
propagación se nota con flechas)
47 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Serialización de las escrituras por el home.
AC
Usando difusión III
Usando difusión III
Orden p
para P1 P00 P1 Orden p
para P1
1) A=2 1) A=2
2) A=1 A 2 1 A 2 1 2) A=1
Orden generación:
1) A=1
2) A=2
Se utiliza actualización para propagar las escrituras (las
p p g
propagación se nota con flechas) )
48 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Serialización de las escrituras por el home.
AC
Sin difusión y con directorio distribuido I
Sin difusión y con directorio distribuido I
P00 P1
A 0 A 0
A=1
A 1
A=2
Orden generación:
1) A=1
2) A=2
Orden llegada
g
P3 P2
al home = real
A 0 1) A=2
2) A=1
Contenido inicial de las copias de la dirección A en calabaza. P0 escribe en A un 1 y,
después, P1 escribe en A un 2.
Se utiliza actualización para propagar las escrituras (las propagación se nota con
p p p g ( p p g
flechas)
El orden de llegada al home es el orden real para todos
49 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Serialización de las escrituras por el home.
AC
Sin difusión y con directorio distribuido II
Sin difusión y con directorio distribuido II
P00 P1 Orden p
para P1
Orden para P1
1) A=2
1) A=2 0 2
A 0 2 A
Orden generación:
1) A=1
2) A=2
Orden llegada
g al home =
P3 P2
Orden real
A 0 2 1) A=2
2) A=1
Contenido inicial de las copias de la dirección A en calabaza
Se utiliza actualización para propagar las escrituras (las
Se utiliza actualización para propagar las escrituras (las
propagación se nota con flechas)
50 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Serialización de las escrituras por el home.
Sin difusión y con directorio distribuido III
Sin difusión y con directorio distribuido III
AC
Orden p
para P1 P00 P1 Orden p
para P1
1) A=2 1) A=2
2) A=1 A 2 1 A 2 1 2) A=1
Orden generación:
1) A=1
2) A=2
Se utiliza actualización para propagar las escrituras (las
p p g
propagación se nota con flechas) )
51 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 8
AC
52 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Clasificación de protocolos para mantener
AC
coherencia en el sistema de memoria
coherencia en el sistema de memoria
Protocolos de espionaje (snoopy)
Protocolos de espionaje (snoopy)
Para buses, y en general sistemas con una difusión eficiente
(bien porque el número de nodos es pequeño o porque la
(bien porque el número de nodos es pequeño o porque la
red implementa difusión).
Protocolos basados en directorios
Protocolos basados en directorios.
Para redes sin difusión o escalables (multietapa y estáticas).
Esquemas jerárquicos.
Para redes jerárquicas: jerarquía de buses, jerarquía de
a a edes je á qu cas je a qu a de buses, je a qu a de
redes escalables, redes escalables‐buses.
53 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Facetas de diseño lógico en protocolos
AC
para coherencia
para coherencia
Política de actualización de MP:
escritura inmediata, posescritura, mixta
Política de coherencia entre caches:
Política de coherencia entre caches:
escritura con invalidación, escritura con actualización, mixta
Describir comportamiento:
Describir comportamiento:
Definir posibles estados de los bloques en cache, y en memoria
Definir transferencias (indicando nodos que intervienen y orden
Definir transferencias (indicando nodos que intervienen y orden
entre ellas) a generar ante eventos:
lecturas/escrituras del procesador del nodo
como consecuencia de la llegada de paquetes de otros nodos.
Definir transiciones de estados para un bloque en cache, y en
memoria
memoria
54 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 8
AC
55 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Protocolo de espionaje de tres estados
AC
(MSI) – posescritura e invalidación
(MSI) – e invalidación
Estados de un bloque en cache:
Estados de un bloque en cache:
Modificado (M): es la única copia del bloque válida en todo
el sistema
el sistema
Compartido (C,S): está válido, también válido en memoria y
puede que haya copia válida en otras caches
puede que haya copia válida en otras caches
Inválido (I): se ha invalidado o no está físicamente
Estados de un bloque en memoria (en realidad se evita
d d bl ( ld d
almacenar esta información):
Válido: puede haber copia válida en una o varias caches
Inválido: habrá copia valida en una cache
56 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Protocolo de espionaje de tres estados
AC
(MSI) – posescritura e invalidación
(MSI) – e invalidación
Transferencias generadas por un nodo con cache
g p
(tipos de paquetes):
P
Petición de lectura de un bloque (Pt ec): por lectura
Petición de lectura de un bloque (PtLec): por lectura
con fallo de cache del procesador del nodo (PrLec) PrLec PrEsc
Petición de acceso exclusivo (PtLecEx): por escritura
( ) p Controlador
del procesador (PrEsc) en bloque compartido o de cache
inválido
Petición de posescritura (PtPEsc): por el reemplazo
del bloque modificado (el procesador del nodo no PtLec, PtLecEx,
espera respuesta)
espera respuesta) PtPEsc,
Respuesta con bloque (RpBloque): al tener en estado RpBloque
modificado el bloque solicitado por una PtLec o
modificado el bloque solicitado por una PtLec o
PtLecEx recibida
57 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Diagrama MSI de transiciones de estados
AC
PrLec/ PrEsc/-
PrLec/- PrEsc/
P
M
PrLec PrEsc
PtLec/RpBloque
PrEsc/PtLecEx Controlador
de cache
58 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Tabla de descripción de MSI
AC
P P
PrLec PrEsc S PrLec PrEsc S
Controlador Controlador
de Cache de Cache
MP
60 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Ejemplo MSI II
AC
P P
PrLec PrEsc M PrLec PrEsc I
Controlador Controlador
de Cache de Cache
MP
61 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Ejemplo MSI III
AC
PrLec/- PrEsc/-
P M
PrLec PrEsc M PtLec/RpBloque
Controlador PrEsc/PtLecEx
de Cache PrEsc/ PtLecEx PtLecEx/RpBloque
S
PrLec/-
PtLec, PtLec,
PtLec/-
PtLecEx, PtLecEx,
RpBloque
+direc PrLec/PtLec PtLecEx/-
PtPEsc,
RpBloque +datos I
MP
62 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Ejemplo MSI IV
AC
PrLec/- PrEsc/
PrLec/ PrEsc/-
M P
PtLec/RpBloque PrLec PrEsc I
PrEsc/PtLecEx Controlador
PrEsc/ PtLecEx PtLecEx/RpBloque de Cache
S
PrLec/-
PtLec, PtLec,
PtLec/-
PrLec/PtLec
ec/ t ec PtLecEx/- PtLecEx, PtLecEx, +direc
direc
PtPEsc, RpBloque
I RpBloque
+datos
MP
63 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 8
AC
64 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Protocolo de espionaje de cuatro estados
AC
(MESI) – posescritura e invalidación
(MESI) – e invalidación
Estados de un bloque en cache:
q
Modificado (M):es la única copia del bloque válida en todo
el sistema
Exclusivo (E): es la única copia de bloque válida en caches, la
memoria también está actualizada
Compartido (C,Shared): es válido, también válido en
memoria y en al menos otra cache
Inválido
álid (I): se ha invalidado o no está físicamente
() h i lid d á fí i
Estados de un bloque en memoria(en realidad se evita
almacenar esta información):
Válido: puede haber copia válida en una o varias caches
Inválido: habrá copia valida en una cache
65 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Diagrama MESI de transiciones de estados
AC
PrLec/- PrEsc/-
P
M
PrLec PrEsc
PrEsc/-
PtLec/RpBloque Controlador
PrEsc/PtLecEx de cache
PtLecExx/RpBloque
Ex
E
PrEssc/PtLecE
PrLec/-
PtLec/-
PtLec/
PrLec(C=0)/PtLec PtLec, PtLec,
PtLecEx/-
S PtLecEx,, PtLecEx,,
PrLec(C=1)/ PtLecEx/-
PtLecEx/
PtLec PrLec/- PtPEsc, RpBloque
PtLec/- RpBloque
I
66 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Tabla de descripción de MESI
AC
PrLec/PrEsc Modificado
PtLec Genera RpBloque Compartido
Modificado (M)
PtLecEx Genera RpBloque. Invalida copia local Inválido
Reemplazo Genera PtPEsc Inválido
PrLec Exclusivo
PrEsc Modificado
Exclusivo ((E))
PtL
PtLec C
Compartido
tid
PtLecEx Invalida copia local Inválido
PrLec/PtLec Compartido
p
Compartido (S) PrEsc Genera PtLecEx Modificado
PtLecEx Invalida copia local Inválido
P L (C=1)
PrLec (C 1) G
Genera PtL
PtLec C
Compartido
tid
PrLec (C=0) Genera PtLec Exclusivo
Inválido (I)
PrEsc Genera PtLecEx Modificado
PtLec/PtLecEx Inválido
67 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 8
AC
68 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
MSI con directorios (sin difusión) I
AC
Estados de un bloque en cache:
Modificado (M), Compartido (C), Inválido (I)
( ) ( ) ()
1.
S
Estados de un bloque en MP:
PtLec, 4.
Válido e inválido
PtEx, R Bl
RpBloque,
Transferencias (tipos de paquetes) : RpInv,
PtLecEx,
Tipos de nodos: solicitante (S), origen (O), modificado (M), RpBloqueInv
propietario (P) y compartidor (C)
propietario (P) y compartidor (C) PtPEsc
Petición de O
nodo S a O: lectura de un bloque (PtLec), lectura con acceso
exclusivo (PtLecEx), petición de acceso exclusivo sin lectura
2. 3.
(PtEx), posescritura
( ) (PtPEsc)
( ) RvLec
RvLec, RpBloque
Reenvío de petición de RvInv, RpInv
nodo O a nodos con copia (P, M, C): invalidación (RvInv), RvLecEx p q
RpBloqueInv
lectura (RvLec RvLecEx)
lectura (RvLec, RvLecEx).
Respuesta de
nodo P a O: respuesta con bloque (RpBloque), resp. con o sin P
bloque confirmando fin inv. (RpInv, RpBloqueInv)
nodo O a S: resp. con bloque (RpBloque), resp. con o sin
bloque confirmando fin inv. (RpInv, RpBloqueInv)
69 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
MSI con directorios (sin difusión) II
AC
Estado inicial e o
Evento Estado final
D) Inválido Fallo de lectura D) Válido
S)) Inválido S) Compartido
) p
P) Modificado P) Compartido
Acceso remoto
Ejemplo con 4 nodos:
1.PtLLec
4 RpBloque
4.RpBloque 3 RpBloque
3.RpBloque 4 RpBloque
4.RpBloque
S O P 3.RpBloque
1.PtLec 2.RvLec O P
2.RvLec
70 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
MSI con directorios (sin difusión) III
AC
Estado inicial e o
Evento Estado final
D) Válido Fallo de lectura D) Válido
S)) Inválido S) Compartido
) p
P) Compartido P) Compartido
Acceso remoto
2.RpBloque S
Mem.
2.RppBloque
S O
1.PtLLec
1 PtL
1.PtLec
M
Mem.
O P
71 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
MSI con directorios (sin difusión) IV
AC
Estado inicial e o
Evento Estado final
D) Válido Fallo de escritura D) Inválido
S)) Inválido S) Modificado
)
P) Compartido P) Inválido
Acceso remoto
P
P S
…
3.R
2.RvInnv
S O P
RpInv
1.PtLecEx
3.RpInv
4.RpBloqueInv
p q O P
P 2.RvInv
72 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
MSI con directorios (sin difusión) V
AC
Estado inicial e o
Evento Estado final
D) Válido Fallo de escritura D) Inválido
S)) Compartido
p S) Modificado
)
P) Compartido P) Inválido
Acceso remoto
P
S P
…
1.P
4.RpInnv
S O P
PtEx
1.PtEx
3.RpInv
4.RpInv
p O P
P 2.RvInv
73 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
MSI con directorios (sin difusión) VI
AC
Estado inicial e o
Evento Estado final
D) Inválido Fallo de escritura D) Inválido
S)) Inválido S) Modificado
)
P) Modificado P) Inválido
Acceso remoto
4 R Bl
4.RpBloqueInv
I 3 R Bl
3.RpBloqueInv
I
P
S O P
2.RvLeecEx
3.RpBloqueInv
p q
1.PtLecEx 2.RvLecEx
4.RpBloqueInv
O S
1.PtLecEx
74 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
MSI con directorios (con difusión) I
AC
Estados de un bloque en cache:
Modificado (M), Compartido (C), Inválido (I)
Estados de un bloque en MP: 1.
S
Válido e inválido
Válido e inválido PtLec
PtLec, 33.
Transferencias (tipos de paquetes) : PtLecEx, RpInv
Tipos de nodos: solicitante (S), origen (O), modificado
p ( ), g ( ), PtEx, RpBloque
(M), propietario (P) y compartidor (C) PtPEsc R Bl I
RpBloqueInv
Difusión de petición del nodo S a
1.
O
O y
y P: lectura de un bloque (PtLec), lectura con acceso
q ( )
exclusivo (PtLecEx), petición de acceso exclusivo sin PtLec, 22.
lectura (PtEx) RpBloque
O: posescritura (PtPEsc)
PtLecEx,
PtEx, RpInv
Respuesta
R t de
d RpBloqueInv
nodo P a O: respuesta con bloque (RpBloque), respuesta
confirmando invalidación (RpInv ) P
nodo O a
O a S: resp. con bloque (RpBloque), resp. con o sin
S: resp con bloque (RpBloque) resp con o sin
bloque confirmando fin inv. (RpInv, RpBloqueInv)
75 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
MSI con directorios (con difusión) II
AC
Estado inicial e o
Evento Estado final
D) Inválido Fallo de lectura D) Válido
S)) Inválido S) Compartido
) p
P) Modificado P) Compartido
Acceso remoto
Ejemplo con 4 nodos:
1.PtLec
…
S
3.RpBlooque
S O
1.P
PtLec
2.RpBloque
3.RpBloque P O P
2 R Bl
2.RpBloque
76 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
MSI con directorios (con difusión) III
AC
Estado inicial e o
Evento Estado final
D) Válido Fallo de escritura D) Inválido
S)) Inválido S) Modificado
)
P) Compartido P) Inválido
Acceso remoto
1 PtLecEx
1.PtLecEx
S P
…
1.PtLeecEx
3.RppBlInv
S O P
3.RpBloqueInv O
2.RpInv
P
P
77 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Para ampliar …
AC
Webs
An Introduction to the Intel® QuickPath Interconnect,
http://www intel com/content/www/us/en/io/quickpath‐
http://www.intel.com/content/www/us/en/io/quickpath
technology/quick‐path‐interconnect‐introduction‐
p p
paper.html
Demo Intel® QuickPath Interconnect
http://www.intel.com/content/www/us/en/performance/p
p // / / / / /p /p
erformance‐quickpath‐architecture‐demo.html
Animaciones de protocolos de coherencia de cachés
ac o es de p o oco os de co e e c a de cac és
http://lorca.act.uji.es/projects/ccp/
78 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
2º curso
2º curso
2º curso / / 2º
/ 2º
/ 2º cuatr.
Doble Grado en
cuatr. Arquitectura de Computadores
Informática
Grado en y
Grado en
I f enáti
I Matemáticas
Ing. Informática
Ing. Informática
Tema 3
Tema 3
Lección 9. Consistencia del sistema
de memoria
Material elaborado por los profesores responsables de la asignatura:
Mancia Anguita – Julio Ortega
Licencia Creative Commons .
Lecciones
AC
Modelos de consistencia relajados
Modelos de consistencia relajados
Lección 10. Sincronización
80 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Objetivos Lección 9
AC
81 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Bibliografía Lección 9
AC
Fundamental
Fundamental
Secc. 10.2. J. Ortega, M. Anguita, A. Prieto. “Arquitectura de
Computadores”. ESII/C.1 ORT arq
Computadores ESII/C 1 ORT arq
82 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 9
AC
83 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Consistencia de memoria
AC
EEspecifica (las restricciones en) el orden
ifi (l ti i ) l d en el cual las
l ll
operaciones de memoria (lectura, escritura) deben
parecer haberse realizado (operaciones a las mismas
o distintas direcciones y emitidas por el mismo o
o distintas direcciones y emitidas por el mismo o
distinto proceso/procesador)
La coherencia sólo abarca operaciones realizadas por
p p
múltiples componentes (proceso/procesador) en una
/
misma dirección
84 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 9
AC
85 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Consistencia secuencial (SC)
AC
SC es el modelo de consistencia que espera el
SC es el modelo de consistencia que espera el
programador de las herramientas de alto nivel
SC
SC requiere que:
i
Todas las operaciones de un único procesador (thread)
parezcan ejecutarse en el orden descrito por el programa de
l d d l d
entrada al procesador (orden del programa)
Todas las operaciones de memoria parezcan ser ejecutadas
una cada vez (ejecución atómica) ‐> serialización global
86 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Consistencia Secuencial
AC
P0 P1 P2 … PN
Memoria
SC presenta el sistema de memoria a los
programadores como una memoria global
p
conectada a todos los procesadores a través un
conmutador central
87 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Consistencia Secuencial
AC
Inicialmente k1=k2=0
k1 k2 0 1
P1 P2
k1=1; k2=1; ¿Qué espera el
if (k2=0) { if (k1=0) { programador?
Sección crítica Sección crítica
}; };
P1 Inicialmente A=B=0 ¿Qué espera el 2
A=1; P2 programador que se
if (A=1) P3 almacene en reg1 si
B=1; if (B=1) llega a ejecutarse
reg1=A; reg1=A?
Inicialmente A= 0 3
¿Qué espera el
P1 P2
programador que se
A=1; while (k=0) {};
almacene en copia?
k=1; copia=A;
88 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Ejemplo de Consistencia Secuencial
AC
89 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
¿Qué puede ocurrir en el computador?
AC
3
Actualización (P2 puede
P1 P2 P3
leer el nuevo valor)
P1
emite
escritura A=0
A=1
A 1 A 1
A=1 k A
k=0
k=1
P1
emite
P2 puede leer A=0
escritura
k=1
(1) (2) (a)(b)
91 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Modelos de consistencia relajados
AC
Difieren en cuanto a los requisitos para garantizar SC que relajan
(l
(los relajan para incrementar prestaciones):
l j i i )
Orden del programa:
Hay modelos que permiten que se relaje en el código ejecutado en un
Hay modelos que permiten que se relaje en el código ejecutado en un
procesador el orden entre dos acceso a dis ntas direcciones (W→R, W→W,
R→RW)
Atomicidad:
Hay modelos que permiten que un procesador pueda ver el valor escrito
por otro antes de que este valor sea visible al resto de los procesadores del
sistema
Los modelos relajados comprenden:
Los órdenes de acceso a memoria que no garantiza el sistema de
memoria (tanto órdenes de un mismo procesador como atomicidad en
i (t t ó d d i d t i id d
las escrituras).
Mecanismos que ofrece el hardware para garantizar un orden cuando
sea necesario.
i
92 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Ejemplos de modelos de consistencia
AC
hardware relajados
hardware relajados
Orden relajado
j Lec. anticipada
p Mecanismos ((instrucciones)) para
p
M d l
Modelo
W→R W→W R→RW de_otro/propia garantizar orden global
TSO Si Si lect-modif.-escrit. atómica (l-m-e)
PC Si Si Si Inst. serialización, l-m-e
PSO Si Si Si l-m-e, STBAR
WO Si Si Si Si sincronización
RCsc Si Si Si Si Adquisición, liberación,l-m-e
RCpc Si Si Si Si Si Adquisición, liberación,l-m-e
Alpha Si Si Si Si MB, WMB
RMO Si Si Si Si MEMBAR
PowerPC Si Si Si Si Si SYNC, ISYNC
It i
Itanium Si Si Si Si LD ACQ ST.REL,
LD.ACQ, ST REL MF,
MF l-m-e
l
Siguel la tabla de Adve y Gharachorloo en (biblioteca ugr) http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=546611&isnumber=11956
93 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Consistencia secuencial
AC
Inicialmente k1=k2=0
k1 k2 0 1
P1 P2 NO se comporta
k1=1; k2=1; como SC los que
if (k2=0) { if (k1=0) { relajan el orden
Sección crítica Sección crítica W→R
}; };
P1 Inicialmente A=B=0 2
NO se comporta
A=1; P2
como SC los que no
if (A=1) P3
garantizan
B=1; if (B=1)
atomicidad
reg1=A;
Inicialmente A= 0 NO se comporta 3
P1 P2 como SC los que
A=1; while (k=0) {}; relajan el orden W→
k=1; copia=A; WoR→R
94 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Modelo que relaja W‐>R
AC
Permiten que una lectura pueda adelantar a una escritura previa
en el orden del programa; pero evita dependencias RAW
l d d l i d d i
Lo implementan los sistemas con buffer de escritura para los
p
procesadores (el buffer evita que las escrituras retarden la ejecución
( q j
del código bloqueando lecturas posteriores)
Generalmente permiten que el procesador pueda leer una dirección
directamente del buffer (leer antes que otros procesadores una
( q p
escritura propia)
Para garantizar un orden correcto se pueden utilizar
i t
instrucciones de serialización
i d i li ió
Hay sistemas en los que se permite que un procesador pueda
leer la escritura de otro antes que el resto de procesadores
leer la escritura de otro antes que el resto de procesadores
(acceso no atómico)
Para garantizar acceso atómico se puede utilizar instrucciones de
lect ra modificación escrit ra atómicas
lectura‐modificación‐escritura atómicas
95 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Modelo que relaja W‐>R y W‐>W
AC
Tiene buffer de escritura que permite que lecturas adelanten a
escrituras en el buffer
i l b ff
Permiten que el hardware solape escrituras a memoria a
distintas direcciones de forma que pueden llegar a la memoria
distintas direcciones, de forma que pueden llegar a la memoria
principal o a caches de todos procesadores fuera del orden del
programa.
En sistemas con este modelo se proporciona hardware para
garantizar los dos órdenes. Los sistemas con Sparc implementa
un modelo de este tipo
un modelo de este tipo.
Este modelo no se comporta como SC en el siguiente ejemplo:
P1 P2
A=1; while (k=0) {};
k 1
k=1; copia=A;
96 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Modelo de ordenación débil
AC
Relaja W‐>R, W‐>W y R‐>RW Lectura/Escritura
Si S es una operación de sincronización 1 …
(liberación o adquisición), ofrece hardware Lectura/Escritura
para garantizar el orden:
para garantizar el orden:
SincronizaciónA
S‐>WR
WR‐>S Lectura/Escritura
PowerPC implementa un modelo basado en 2 …
ordenación débil Lectura/Escritura
for (i=iproc ; i<n ; i=i+nproc)
1 SincronizaciónL
sump = sump + a[i];
l k(k)
lock(k); Lectura/Escritura
sum = sum + sump; /* SC */ 2 3 …
unlock(k); Lectura/Escritura
/
… 3
97 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Consistencia de liberación
AC
Relaja W‐>R, W‐>W y R‐>RW
j , y
Si SA es una operación de adquisición y SL de liberación,
ofrece hardware para garantizar el orden:
p g
SA‐>WR y WR‐>SL
Sistemas con Itanium
Sistemas con Itanium implementan un modelo de consisten
implementan un modelo de consisten‐
cia de liberación. Lectura/Escritura
1 … SincronizaciónA
Lectura/Escritura
/ i
Lectura/Escritura
for (i=iproc ; i<n ; i=i+nproc) 2 …
sump = sump + a[i]; [i] 1 Lectura/Escritura Lectura/Escritura
lock(k);
3 …
sum = sum + sump; 2 SincronizaciónL Lectura/Escritura
unlock(k);
… 3
98 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Para ampliar …
AC
Artículos en revistas
Artículos en revistas
Adve, S.V.; Gharachorloo, K.; , "Shared memory consistency
models: a tutorial " Computer
models: a tutorial, Computer , vol.29, no.12, pp.66
vol 29 no 12 pp 66‐76
76, Dec
Dec
1996. Disponible en (biblioteca ugr):
http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber
p // p g/ p/ pj p p
=546611&isnumber=11956
99 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
2º curso
2º curso
2º curso / / 2º
/ 2º
/ 2º cuatr.
Doble Grado en
cuatr. Arquitectura de Computadores
Informática
Grado en y
Grado en
I f enáti
I Matemáticas
Ing. Informática
Ing. Informática
Tema 3
Tema 3
Lección 10 Sincronización
Lección 10. Sincronización
Material elaborado por los profesores responsables de la asignatura:
Mancia Anguita – Julio Ortega
Licencia Creative Commons .
Lecciones
AC
Lección 7. Arquitecturas TLP
q
Lección 8. Coherencia del sistema de memoria
Lección 9 Consistencia del sistema de memoria
Lección 9. Consistencia del sistema de memoria
Lección 10. Sincronización
Comunicación en multiprocesadores y necesidad de usar código
de sincronización
Soporte software y hardware para sincronización
Soporte software y hardware para sincronización
Cerrojos
Cerrojos simples
Cerrojos simples
Cerrojos con etiqueta
Barreras
Apoyo hardware a primitivas software
101 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Objetivos Lección 10
AC
Explicar por qué es necesaria la sincronización en
Explicar por qué es necesaria la sincronización en
multiprocesadores.
Describir las primitivas para sincronización que ofrece el
D ibi l i iti i i ió f l
hardware.
Implementar cerrojos simples, cerrojos con etiqueta y
barreras a partir de instrucciones máquina de
p q
sincronización y ordenación de accesos a memoria.
102 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Bibliografía Lección 10
AC
Fundamental
Fundamental
Secc. 10.3. J. Ortega, M. Anguita, A. Prieto. “Arquitectura de
Computadores”. ESII/C.1 ORT arq
Computadores ESII/C 1 ORT arq
103 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 10
AC
Comunicación en multiprocesadores y necesidad de
Comunicación en multiprocesadores y necesidad de
usar código de sincronización
S
Soporte software y hardware para sincronización
t ft h d i i ió
Cerrojos
Barreras
Apoyo hardware a primitivas software
104 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Comunicación en un multiprocesador
AC
P P P P
105 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Comunicación uno‐a‐uno
AC
Secuencial Paralela
... P1 P2
A=valor; ... …
... A=valor; copia=A;
copia=A; ... …
…
... P1 P2
mov A,rax ... …
... ,
mov A,rax ,
mov rbx,A
mov rbx,A ... …
…
106 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Comunicación uno‐a‐uno. Necesidad de
AC
sincronización
Se debe garantizar que el
Se debe garantizar que el Paralela (K=0)
proceso que recibe lea la P1 P2
variable compartida cuando el
variable compartida cuando el ... ...
A=1; while (K=0) { };
proceso que envía haya escrito K=1; copia=A;
en la variable el dato a enviar
en la variable el dato a enviar ... ...
Si se reutiliza la variable para
comunicación, se debe
ó d b
garantizar que no se envía un
nuevo dato en la variable
hasta que no se haya leído el
anterior
107 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Comunicación colectiva
AC
Secuencial Paralela (sum
Paralela (sum=0)
0)
for (i=0 ; i<n ; i++) { for (i=ithread ; i<n ; i=i+nthread) {
sum = sum + a[i];[ ]; sump p = sump
p + a[i];
[ ];
} }
sum = sum + sump; /* SC, sum compart. */
if (ithread==0) printf(sum);
Ejemplo de comunicación colectiva: suma de n números:
La lectura‐modificación‐escritura de sum se debería hacer en
exclusión mutua (es una sección crítica) => cerrojos
Sección crítica: Secuencia de instrucciones con una o varias direcciones
compartidas (variables) que se deben acceder en exclusión mutua
El proceso 0 no debería imprimir hasta que no hayan acumulado
El 0 d b í i i i h h l d
sump en sum todos los procesos => barreras
108 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Comunicación colectiva en
AC
multiprocesadores (carrera)
multiprocesadores (carrera)
Sistema de memoria sin exclusión mutua en el acceso a suma
#include <stdio.h>
#include <stdlib.h>
Ej.1 Ej.2 Ej.1 Ej.2
#include <omp.h>
R0((suma)) 1.00 2.00 R2(su
(suma)
a) 33.1 1.0 a ( t aargc,
main(int gc, cchar
a **argv) {
ag ) {
int i, n=20, a[n],suma=0;
W0(suma) 2.1 3.1 W2(suma) 4.4 4.3 if(argc < 2) {
fprintf(stderr,"\nFalta iteraciones\n"); exit(‐1);
R1(suma) 5.4
5 4 7.7
77 R3(suma) 7.6
7 6 5.3
53 }
}
n = atoi(argv[1]);
if (n>20) n=20;
W1(suma) 6.6 8.9 W3(suma) 8.10 6.7 for (i=0; i<n; i++)
a[i] = i+1;
Th d 0
Thread Orden.resultado
Th d 1
Thread 1 2 3 4
#pragma omp parallel for
for (i=0; i<n; i++)
Ej. para n=4, el compilador no
Ej para n=4 el compilador no suma = suma + a[i];
optimiza
printf("Fuera de 'parallel' suma=%d\n",suma);
a={1,2,3,4} ( )
return(0);
Ri (suma): Lectura de suma en la }
iteración i
109 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 10
AC
Comunicación en multiprocesadores y necesidad de
Comunicación en multiprocesadores y necesidad de
usar código de sincronización
S
Soporte software y hardware para sincronización
t ft h d i i ió
Cerrojos
Barreras
Apoyo hardware a primitivas software
110 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Soporte software y hardware de
AC
sincronización
M i
Monitores
absttracción
softwaare
Regiones críticas
regiones críticas
condicionales
hardwaare
lectura‐modificación‐escritura atómicas, ordenar accesos
lect./escr. condicional (LL/SC), a memoria
l t tó i /
lect. atómica/escr. atómica
tó i
111 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 10
AC
Comunicación en multiprocesadores y necesidad de
Comunicación en multiprocesadores y necesidad de
usar código de sincronización
S
Soporte software y hardware para sincronización
t ft h d i i ió
Cerrojos
Cerrojos simples
Cerrojos con etiqueta
Cerrojos con etiqueta
Barreras
Apoyo hardware a primitivas software
112 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Soporte software y hardware de
AC
sincronización
M i
Monitores
absttracción
softwaare
Regiones críticas
regiones críticas
condicionales
hardwaare
lectura‐modificación‐escritura atómicas, ordenar accesos
lect./escr. condicional (LL/SC), a memoria
l t tó i /
lect. atómica/escr. atómica
tó i
113 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojos
AC
Permiten sincronizar mediante dos operaciones:
p
Cierre del cerrojo o lock(k): intenta adquirir el derecho a
acceder a una sección crítica (cerrando o adquiriendo el
cerrojo k).
Si varios procesos intentan la adquisición (cierre) a la vez, sólo
uno de ellos lo debe conseguir el resto debe pasar a una etapa de
uno de ellos lo debe conseguir, el resto debe pasar a una etapa de
espera.
Todos los procesos que ejecuten lock()
p q j con el cerrojo cerrado
j
deben quedar esperando.
Apertura del cerrojo o unlock(k): libera a uno de los
threads
h d que esperan el acceso a una sección crítica (éste
l ió í i (é
adquiere el cerrojo).
Si no hay threads
Si no hay threads en espera, permitirá que el siguiente thread
en espera permitirá que el siguiente thread
que ejecute la función lock() adquiera el cerrojo k sin espera.
114 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojos en ejemplo suma
AC
Secuencial Paralela
for (i=0 ; i<n ; i++) { for (i=ithread ; i<n ; i=i+nthread) {
sum = sum + a[i];[ ]; sump p = sump
p + a[i];
[ ];
} }
lock(k);
sum = sum + sump; /* SC, sum compart. */
unlock(k);
Alternativas para implementar la espera:
p p p
Espera ocupada.
Suspensión del proceso o thread, éste queda esperando en
Suspensión del proceso o thread éste queda esperando en
una cola, el procesador conmuta a otro proceso‐thread.
115 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Componentes en un código para
AC
sincronización
Método de adquisición
Método por el que un thread trata de adquirir el derecho a pasar
a utilizar unas direcciones compartidas. Ej.:
Utilizando lectura‐modificación‐escritura atómicas: x86, Intel Itanium,
Utilizando lectura‐modificación‐escritura atómicas: x86 Intel Itanium
Sun Sparc
Utilizando LL/SC (Load Linked / Store Conditional): IBM Power/PowerPC
Método de espera
Método por el que un thread espera a adquirir el derecho a pasar
a utilizar unas direcciones compartidas:
a utilizar unas direcciones compartidas:
Espera ocupada (busy‐waiting)
Bloqueo
Método de liberación
Método utilizado por un thread para liberar a uno (cerrojo) o
varios (barrera) threads en espera
varios (barrera) threads en espera
116 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojo Simple I
AC
Se implementa con una variable compartida k
p p que
q
toma dos valores: abierto (0), cerrado (1)
Apertura del cerrojo, unlock(k): abre el cerrojo
del cerrojo unlock(k): abre el cerrojo
escribiendo un 0 (operación indivisible)
Cierre del cerrojo, lock(k): Lee el cerrojo y lo cierra
del cerrojo lock(k): Lee el cerrojo y lo cierra
escribiendo un 1.
Resultado de la lectura:
Resultado de la lectura:
si el cerrojo estaba cerrado el thread espera hasta que otro
j
thread ejecute unlock(k),
( ),
si estaba abierto adquiere el derecho a pasar a la sección crítica.
leer-asignar_1-escribir en el cerrojo debe ser
indivisible (atómica)
117 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojo Simple II
AC
Se debe añadir lo necesario para garantizar el acceso
p g
en exclusión mutua a k y el orden imprescindible en los
accesos a memoria
lock (k)
llock(k) {
k(k) {
while (leer-asignar_1-escribir(k) == 1) {} ;
} /* kk compartida
} / compartida *//
unlock (k)
unlock(k) {
k = 0 ;
} /* k compartida */
} /* k d */
118 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojos en OpenMP
AC
Descripción Función de la biblioteca OpenMP
Iniciar (estado unlock) omp_init_lock(&k)
Destruir un cerrojo omp_destroy_lock(&k)
Cerrar el cerrojo lock(k) omp_set_lock(&k)
Abrir el cerrojo unlock(k) omp_unset_lock(&k)
Cierre del cerrojo pero sin bloqueo (devuelve
Cierre del cerrojo pero sin bloqueo (devuelve
omp_test_lock(&k)
1 si estaba cerrado y 0 si está abierto)
119 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojos con etiqueta
AC
Fijan un orden FIFO en la adquisición del cerrojo (se
Fijan un orden FIFO en la adquisición del cerrojo (se
debe añadir lo necesario para garantizar el acceso en
exclusión mutua a contadores y el orden imprescindible
exclusión mutua a contadores y el orden imprescindible
en los accesos a memoria):
lock (contadores)
contador_local_adq = contadores.adq;
contadores.adq = (contadores.adq + 1) mod max_flujos_control;
while (contador_local_adq <> contadores.lib) {};
unlock (contadores)
contadores lib = (contadores lib + 1) mod
contadores.lib = (contadores.lib + 1) mod max_flujos_control;
max flujos control;
120 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 10
AC
Comunicación en multiprocesadores y necesidad de
Comunicación en multiprocesadores y necesidad de
usar código de sincronización
S
Soporte software y hardware para sincronización
t ft h d i i ió
Cerrojos
Barreras
Apoyo hardware a primitivas software
121 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Soporte software y hardware de
AC
sincronización
M i
Monitores
absttracción
softwaare
Regiones críticas
regiones críticas
condicionales
hardwaare
lectura‐modificación‐escritura atómicas, ordenar accesos
lect./escr. condicional (LL/SC), a memoria
l t tó i /
lect. atómica/escr. atómica
tó i
122 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Barreras
AC
B
Barrera(id,
(id num_procesos)) {
if (bar[id].cont==0) bar[id].bandera=0;
cont_local = ++bar[id].cont; -Acceso Ex. Mutua.
if (cont_local ==num_procesos) {
bar[id].cont=0;
bar[id].bandera=1;
[ ] ; - Implementar espera. Si espera
} ocupada:
else espera mientras bar[id].bandera=0; while (bar[id].bandera==0) {};
}
123 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Barreras sin problema de reutilización
AC
Barrera sense
sense-reversing
reversing
Barrera(id, num_procesos) {
bandera_local
bandera local = !(bandera_local)
!(bandera local) //se complementa bandera local
lock(bar[id].cerrojo);
cont_local = ++bar[id].cont //cont_local es privada
unlock(bar[id].cerrojo);
if (cont_local == num_procesos) {
b [id]
bar[id].contt = 0;
0 // hace
//se h 0 ell cont.
t de
d la
l barrera
b
bar[id].bandera = bandera_local; //para liberar thread en espera
}
else while (bar[id].bandera != bandera_local) {}; //espera ocupada
}
124 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 10
AC
Comunicación en multiprocesadores y necesidad de
Comunicación en multiprocesadores y necesidad de
usar código de sincronización
S
Soporte software y hardware para sincronización
t ft h d i i ió
Cerrojos
Barreras
Apoyo hardware a primitivas software
Instrucciones de lectura‐modificación‐escritura atómicas
Instrucciones LL/SC (Load Linked / Store Conditional)
125 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Soporte software y hardware de
AC
sincronización
M i
Monitores
absttracción
softwaare
Regiones críticas
regiones críticas
condicionales
hardwaare
lectura‐modificación‐escritura atómicas, ordenar
lect./escr. condicional (LL/SC), accesos a
l t tó i /
lect. atómica/escr. atómica
tó i memoriai
126 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Instrucciones de lectura‐modificación‐
AC
escritura atómicas
escritura atómicas
Test&Set (x) Fetch&Oper(x,a) Compare&Swap(a,b,x)
Test&Set (x) { Fetch&Add(x,a) { Compare&Swap(a,b,x){
temp = x ; temp = x ; if (a==x) {
x = 1 ; x = x + a ; temp=x ;
return (temp) ;
(temp) ; return (temp) x=b; b=temp ; };}
} }/* x compartida, }/* x compartida,
//* x compartida */
p / a local *// a yy b locales *//
x86 x86 x86
lock cmpxchg mem,reg
mov reg,1 lock xadd reg,mem if eax=mem
xchg reg,mem reg ← mem | then mem ← reg
reg ↔ mem
↔ mem mem ← reg+mem
← reg+mem else eax ← mem
← mem
127 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojos simples con Test&Set y Fetch&Or
AC
Test&Set (x)
lock(k) { lock: mov eax,1
x86
while (test&set(k)==1) {} ; repetir: xchg eax,k
} cmp eax,1
//* kk compartida
compartida *// jz repetir
Fetch&Oper(x a)
Fetch&Oper(x,a)
lock(k) {
true (1, cerrado)
while (fetch&or (k,1)==1) {};
(k 1)==1) {};
false (0, abierto)
}
/* k compartida */
128 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojos simples con Compare&Swap
AC
Compare&Swap(a,b,x)
lock(k) {{
lock(k)
b=1
do compare&swap(0,b,k){
p p( , , ){
compare&swap(0,b,k) if (0==k) { b=k | k=b; }
while (b==1); }
}
/* k compartida, b local */
129 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojo simple en Itanium (consistencia de
AC
liberación) con Compare&Swap
liberación) con Compare&Swap
lock: //lock(M[lock])
mov ar.ccv = 0 // cmpxchg compara con ar.ccv
// que es un registro de propósito específico
mov r2 = 1
r2 = 1 // cmpxchg utilizará r2 para poner el cerrojo a 1
// cmpxchg utilizará r2 para poner el cerrojo a 1
spin: // se implementa espera ocupada
ld8 r1 = [lock] ;; // carga el valor actual del cerrojo en r1
cmp.eq p1,p0 = r1, r2; // si r1=r2 entonces cerrojo está a 1 y se hace p1=1
(p1) br.cond.spnt spin ;; // si p1=1 se repite el ciclo; spnt, indica que se
//
// usa una predicción estática para el salto de “no tomar”
p p
cmpxchg8.acq r1 = [lock], r2 ;; //intento de adquisición escribiendo 1
// IF [lock]=ar.ccv THEN [lock]←r2; siempre r1←[lock]
cmp eq p1, p0 = r1, r2
cmp.eq p1 p0 = r1 r2 // si r1!=r2 (r1=0) => cer. era 0 y se hace p1=0
// si r1!=r2 (r1=0) => cer era 0 y se hace p1=0
(p1) br.cond.spnt spin ;; // si p1=1 se ejecuta el salto
unlock:
l k //unlock(M[lock])
// l k(M[l k])
st8.rel [lock] = r0 ;; //liberar asignando un 0, en Itanium r0 siempre es 0
130 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Cerrojo simple en PowerPC(consistencia
débil) con LL/SC implementando Test&Set
débil) con LL/SC implementando Test&Set
AC
lock:
lock: #lock(M[r3])
li r4,1 #para cerrar el cerrojo
bucle: lwarx r5,0,r3 #carga y reserva: r5←M[r3]
cmpwi r5,0 #si está cerrado (a 1)
á d ( )
bne‐ bucle #esperar en el bucle, en caso contrario
stwcx. r4,0,r3 #poner a 1 (r4=1): M[r3] ← r4
, , p ( ) [ ]←
bne‐ bucle #el thread repite si ha perdido la reserva
isync #accede a datos compartidos cuando sale del bucle
unlock:
l k ## unlock(M[r3])
l k(M[ 3])
sync #espera hasta que terminen los accesos anteriores
li r1,0
stw r1,0(r3) #abre el cerrojo
131 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Algoritmos eficientes con primitivas
AC
hardware
Suma con fetch&add
Suma con fetch&add
for (i=ithread; i<n; i=i+nthread) Suma con compare&swap
fetch&add(sum,a[i]); for (i
(i=ithread;
ithread; i<n; i
i<n; i=i+nthread)
i+nthread)
sump = sump + a[i];
/* sum variable compartida */
do
Suma con fetch&add a = sum;
b = a + sump;
for (i=ithread; i<n; i=i+nthread) compare&swap(a,b,sum);
sump = sump + a[i]; while (a!
(a!=b);
b);
fetch&add(sum,sump); /* sum variable compartida */
/* sum variable compartida */
/* sum variable compartida */
132 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Para ampliar …
AC
Webs
Implementación en el kernel de linux de cerrojos con
etiqueta http://lxr free‐
etiqueta http://lxr.free
electrons.com/source/arch/x86/include/asm/spinlock.h
Artículos en revistas
Artículos en revistas
Graunke, G.; Thakkar, S.; , "Synchronization algorithms for
shared‐memory multiprocessors," Computer
h d lti "C t , vol.23, no.6,
l 23 6
pp.60‐69, Jun 1990. Disponible en (biblioteca ugr):
http://ieeexplore ieee org/stamp/stamp jsp?tp=&arnumber
http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber
=55501&isnumber=2005
133 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)