Sunteți pe pagina 1din 133

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 
1
(TLP)
Lecciones
AC

 Lección 7. Arquitecturas TLP


Lección 7. Arquitecturas TLP
 Clasificación y estructura de arquitecturas con TLP explícito 
y una instancia del SO
y una instancia del SO
 Multiprocesadores

 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

Memoria Northbridge Gráficos Gráficos


elem

¿?
Conexión con

Disco Disco
elementtos

USB Southbridge USB Southbridge


lentoss

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

Core0 Coore1 Core22

LLC
(MC)

L1

LL1

Core0 Core1 Core2 Core3 Core4 Core5 Coren
L1 L1 L1 L1 L1 L1 … L1

L1

MC

C

LLC LLC LLC LLC LLC LLC


… …LLC …

Controlador
Conmutador


memoriai
(MC)

Link Controller (LC)


15 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
 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

LLC: Last Level Cache. Icache: Instruction cache. IB:  R B R


Instruction Buffer. R: Register. FX: Fixed Point. FP: Floating
Point. L/S: (memory) Load/Store. B: Branch

 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

 Simultaneous MultiThreadingg ((SMT) o multihilo


)
simultáneo o horizontal multithread
Ciclos

 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), …

 Coarse‐grain multithreading (CGMT) o blocked


Ciclos

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

Hardware CGMT FGMT SMT CMP


replicado (al
Registros replicado replicado replicado
menos PC)
multiplexado,
compartido, compartido, repartido o
Almacenamiento multiplexado replicado
repartido o replicado
replicado
li d
Captación:
repartida o UF: compartidas;
Otro hardware de las
multiplexado compartida; Resto: repartidas o replicado
etapas del cauce
Resto: compartidas
multiplexadas
Etiquetas para distinguir
Sí Sí Sí No
el thread de una instr.
Hardware para conmutar
Sí Sí No No
entre threads

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

 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 
it i d i h i i it it
problemas en estos casos
 Protocolos de mantenimiento de coherencia: 
clasificación y diseño
y
 Protocolo MSI de espionaje
 Protocolo MESI de espionaje
 Protocolo MSI basado en directorios con o sin difusión
Protocolo MSI basado en directorios con o sin difusión

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

 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 
it i d i h i i it it
problemas en estos casos
 Protocolos de mantenimiento de coherencia: 
clasificación y diseño
y
 Protocolo MSI de espionaje
 Protocolo MESI de espionaje
 Protocolo MSI basado en directorios con o sin difusión
Protocolo MSI basado en directorios con o sin difusión

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

Datos modificables E/S Cache‐MP


Datos modificables compartidos Fallo de cache Cache‐MP

Datos modificables privados


Datos modificables privados Emigra proceso→Fallo cache
Emigra proceso→Fallo cache Cache‐MP
Cache MP

Datos modificables compartidos Lectura de cache no actualizada Cache‐Cache

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

Orden para P3 A 0 12 A 02 1 Orden para P2


1) A=1 1) A=2
2) A=2 P3 P2 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 
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

Directorio CC: Controlador Cache


CM Controlador
CM: C t l d de d M
Memoria
i
cache Estado
10 bloque cache

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

Orden llegada al home =


Orden para P1 P3 P2 Orden para P2 = Orden real
1) A=2 1) A=2
2) A=1 A 2  1 A 2  1
2) A=1

 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

Orden llegada al home =


P3 P2 Orden para P2 = Orden real
1) A=2
A 2  1
2) A=1

 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

 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 
it i d i h i i it it
problemas en estos casos
 Protocolos de mantenimiento de coherencia: 
clasificación y diseño
y
 Protocolo MSI de espionaje
 Protocolo MESI de espionaje
 Protocolo MSI basado en directorios con o sin difusión
Protocolo MSI basado en directorios con o sin difusión

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

 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 
it i d i h i i it it
problemas en estos casos
 Protocolos de mantenimiento de coherencia: 
clasificación y diseño
y
 Protocolo MSI de espionaje
 Protocolo MESI de espionaje
 Protocolo MSI basado en directorios con o sin difusión
Protocolo MSI basado en directorios con o sin difusión

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

PrEsc/ PtLecEx PtLecEx/RpBloque


S
PrLec/-
PtLec, PtLec,
PtLec/-
PtLec/
PrLec/PtLec PtLecEx/- PtLecEx, PtLecEx,
PtPEsc, RpBloque
I R Bl
RpBloque

58 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Tabla de descripción de MSI
AC

EST. ACT. EVENTO ACCIÓN SIGUIENTE


PrLec/PrEsc Modificado
PtLec Genera paquete respuesta (RpBloque) Compartido
Modificado
(M) PtLecEx Genera paquete respuesta (RpBloque) Inválido
Invalida copia local
R
Reemplazo
l G
Genera paquete
t posescritura
it (PtPEsc)
(PtPE ) I álid
Inválido
PrLec Compartido
PE
PrEsc G
Genera paquete
t PtL
PtLecEx
E M difi d
Modificado
Compart. (S)
PtLec Compartido
PtLecEx Invalida copia local Inválido
PrLec Genera paquete PtLec Compartido
Inválido (I) PrEsc Genera paquete PtLecEx Modificado
PtLec/PtLecEx Inválido
59 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Ejemplo MSI I
AC

P P
PrLec PrEsc S PrLec PrEsc S
Controlador Controlador
de Cache de Cache

PtLec, PtLec, PtLec, PtLec,


PtLecEx, PtLecEx, PtLecEx, PtLecEx, +direc
direc
RpBloque
+direc PtPEsc, RpBloque
PtPEsc,
RpBloque +datos RpBloque +datos

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

PtLec, PtLec, PtLec, PtLec,


PtLecEx, PtLecEx, PtLecEx, +direc
direc
RpBloque
+direc PtLecEx,
PtPEsc, PtPEsc, RpBloque
RpBloque
+datos +datos
RpBloque

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

 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 
it i d i h i i it it
problemas en estos casos
 Protocolos de mantenimiento de coherencia: 
clasificación y diseño
y
 Protocolo MSI de espionaje
 Protocolo MESI de espionaje
 Protocolo MSI basado en directorios con o sin difusión
Protocolo MSI basado en directorios con o sin difusión

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

 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 
it i d i h i i it it
problemas en estos casos
 Protocolos de mantenimiento de coherencia: 
clasificación y diseño
y
 Protocolo MSI de espionaje
 Protocolo MESI de espionaje
 Protocolo MSI basado en directorios con o sin difusión
Protocolo MSI basado en directorios con o sin difusión

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

 Lección 7. Arquitecturas TLP


Lección 7. Arquitecturas TLP
 Lección 8. Coherencia del sistema de memoria
 Lección 9. Consistencia del sistema de memoria
 Concepto de consistencia de memoria
p
 Consistencia secuencial

 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

 Explicar el concepto de consistencia.


Explicar el concepto de consistencia. 
 Distinguir entre coherencia y consistencia.
 Distinguir entre el modelo de consistencia secuencial y 
los modelos relajados.
 Distinguir entre los diferentes modelos de consistencia 
relajados.
relajados

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

 Concepto de consistencia de memoria


Concepto de consistencia de memoria
 Consistencia secuencial
 Modelos de consistencia relajados

83 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Consistencia de memoria
AC

Modelo de consistencia C con PThread


Cco ed C con OpenMP
Cco Ope HPF
de memoria Software

Herramientas de programación Lenguaje


ensamblador
Modelo de consistencia
de memoria Hardware Sistema de memoria

 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

 Concepto de consistencia de memoria


Concepto de consistencia de memoria
 Consistencia secuencial
 Modelos de consistencia relajados

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

(1) Escribir K1=1 1 Orden con Consistencia Secuencial:

(2) Leer K2 (¿K2==0?) (1)(2)(a)(b) (a)(b)(1)(2)


(1)(a)(2)(b) (a)(1)(b)(2)
(a) Escribir K2=1
(1)(a)(b)(2) (a)(1)(2)(b)
(b) Leer K1 (¿K1==0?)

3 Orden con Consistencia Secuencial:


(1) Escribir A=1
(1)(a)….(a)(2)(a)(b)
(2) Escribir K=1
(1)(2)(a)(b)
(a) Leer K (while k==0 {})
(a)..(a)(1)(a)..(a)(2)(a)(b)
(b) Leer A
((a)..(a)(1)(2)(a)(b)
) ( )( )( )( )( )

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)

No se garantiza el orden W→W


90 Tema 3. Arquitecturas con paralelismo a nivel de thread (TLP)
Contenido Lección 9
AC

 Concepto de consistencia de memoria


Concepto de consistencia de memoria
 Consistencia secuencial
 Modelos de consistencia relajados

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

Nodo fuente (thread) Red de interconexión


Red
mov Direcc,rax petición M M M M E/S
(dato) Memoria
espera
Recibir p
petición Nodo destino (thread)
acceso a memoria
respuesta Generar respuesta Red mov rbx, Direcc
petición
espera
Recibir petición
acceso a memoria

Generar respuesta respuesta


(dato)
ti
tiempo

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

Cerrojos Semáforos Barreras

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

Cerrojos Semáforos Barreras

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

Cerrojos Semáforos Barreras

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

main (){ main (){ main ()


(){ main (){
... ... ... ...
Barrera(g,4) Barrera(g,4) Barrera(g,4) Barrera(g,4)
... ... ... ...
} } } }

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

Cerrojos Semáforos Barreras

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)

S-ar putea să vă placă și