Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Superescales
CAP TEMA 1 1
Contenidos
Ø Introducción: Paralelismo a nivel de instrucción
Ø Segmentación
Ø Restricciones en los procesadores con ILP
Ø Técnicas para explotar ILP
Ø Emisión de múltiples instrucciones
Ø Multithreading
ü Explotando el paralelismo a nivel de thread
ü En un único core
! Características de MT
! Tipos de MT
! Comparación
ü Multicores y SMT
ü Ejemplos
CAP TEMA 1 2
Introducción
Single-cycle Processor Bit Level Paralelism
1985
Pipelined Processor
VLIW Processor
Out-of-Order Processor
2005
Multithreading Processor
CAP TEMA 1 3
Explotando el paralelismo a nivel de thread
Ø A pesar de los avances en la microarquitectura las
UFs tienen una media de utilización del 25%
Ciclos
! Con 1 único proceso(A) sólo en algunos ciclos se pueden Sin emisión
No-Op
CAP TEMA 1 4
Explotando el paralelismo a nivel de thread
Ø Las aplicaciones tienen mucho paralelismo a nivel de thread
ü Acceso a BBDD, software científico, servidores web…
Código
Secuencial multi-hilo
Paralelo TA TB TC
Secuencial
TA TB TC
MT
Búsqueda y
Procesador segmentado/ Instrucciones
ejecución de TA thread A
Superescalar con MT
múltiples threads
TB Instrucciones
TA TB TC TA TB thread B
Con MT TC Instrucciones
thread C
TA stall TA TB stall TB stall TC Fallo de caché
Sin MT Dependencias
CAP TEMA 1 7
Explotando el paralelismo a nivel de thread
Ø Arquitecturas multiprocesadores y multi/many cores
ü Permite procesar múltiples threads en varios cores de forma concurrente
TA TB TC
Multicore
CAP TEMA 1 9
Multithreading en un único core
Ø La aplicación debe contener threads que se puedan ejecutar de forma
concurrente
Ø Noción de thread en procesador multihilo (multithreaded processor)
ü Se refiere a thread soportado por hardware que puede ser
! Un programa en ejecución (ej un proceso UNIX)
! Un proceso ligero (thread POSIX)
! Un thread generado por el compilador o por el hardware (microthread)
ü Arquitectura con multithreading implícito
! Ejecuta concurrentemente varios threads extraídos de un único programa
secuencial
! Threads implícitos definidos por el compilador de forma estática o por el
hardware de forma dinámica
ü Arquitectura con multithreading explícito
! Ejecuta concurrentemente varios threads pertenecientes a una aplicación
(gestionados por el usuario o por el sistema operativo)
CAP TEMA 1 10
Multithreading en un único core
Ø Planteamientos hardware - tipos de MT
ü MT de grano fino (Fine-grained multithreading) (Interleaved MT)
! En cada ciclo de reloj una instrucción de otro thread es buscada e introducida
en el pipeline
! Intenta ocultar stalls de baja latencia (dependencias de datos) y alta latencia
(cache miss)
ü MT de grano grueso (Coarse-grained multithreading) (Blocked MT)
! Las instrucciones de un thread se ejecutan sucesivamente hasta que se
produce un evento que provoca un stall de alta latencia, que conlleva un
cambio de contexto
! Intenta ocultar stalls de gran latencia (cache miss L2)
ü MT simultáneo (Simultaneous multithreading – SMT)
! Instrucciones de múltiples threads se emiten simultáneamente a las unidades
de ejecución de un procesador superescalar
! Intenta explotar el paralelismo entre múltiples threads utilizando UFs
desocupadas
CAP TEMA 1 11
Multithreading en un único core
Ø Multithreading explícito
CAP TEMA 1 12
Queue - Cola de instrucciones
decodificadas
El resto de recursos
se comparte
CAP
4 hilos – rojo, verde, blanco, amarillo TEMA 1 13
Multithreading en un único core
PC
PCPC
PC
IC
IC
IC
IC
CAP TEMA 1 14
Single-threaded Interleaved Blocked Superscalar Interleaved
scalar MT scalar MT scalar Blocked
MT superscalar
MT superscalar
Ciclos
! Se podría conseguir la conmutación sin retardos
! Requiere tantos threads como etapas en el pipeline
CAP TEMA 1 17
Multithreading en un único core
ü En procesador escalar con MT entrelazado
! Se mezcla la ejecución de instrucciones de diferentes threads en el mismo
pipeline
! De esta forma se garantiza que no hay dependencias entre instrucciones en el
pipeline
BI TA I1 TB I1 TC I1 TD I1 TA I1
TA I1 LD F0, 0(R1)
TB I1 ADD F2, F0, F6 ID TA I1 TB I1 TC I1 TD I1 TA I1
TC I1 SUBD F4, F2, F6 EX TA I1 TB I1 TC I1 TD I1 TA I1
TD I1 SD F4, 0(R1) 4 Threads
MEM TA I1 TB I1 TC I1 TD I1 TA I1
T1 I2 SUBI R1, R1, #8 WB TA I1 TB I1 TC I1 TD I1 TA I1
Proceso con 4 threads
T1, T2, T3, T4
La instrucción previa en un thread siempre
completa WB antes de que la siguiente instrucción
en el mismo thread lea el banco de registros
CAP TEMA 1 18
SUPERESCALAR
Multithreading en un único core SIN MT
4 emisiones
Slot de emisión
4 instrucciones
Ø Multithreading de grano fino (Interleaved multithreading)
ü En procesadores superescalares
Ciclos
Sin emisión
! Se emiten tantas instrucciones de un único thread como sea posible
! Ejemplo superescalar de 4 emisiones: se emiten 4 instrucciones de un
mismo thread simultáneamente en un mismo ciclo
Ciclos
ü Un incremento en productividad a costa de un aumento de la
latencia de un thread individual
SUPERESCALAR
CON MT ENTRELAZADO
4 emisiones
CAP TEMA 1 19
Multithreading en un único core ESCALAR CON
MT BLOQUEO
Ciclos
ü Conmuta entre threads sólo cuando hay paradas (stalls)
del cauce (pipeline)
ü No es necesario estar conmutando entre threads
(hardware de conmutación más simple) y no ralentiza
demasiado la ejecución de un thread
ü Problemas en superar pérdidas de productividad en
paradas más cortas
! Cuando se produce una parada aparece una burbuja en el
pipeline antes de que entre en ejecución un nuevo thread (se
tiene que llenar el cauce)
! Se necesita 1 o varios ciclos para conmutar
Slot de emisión de
4 instrucciones del
mismo thread
Ciclos
Stall
SUPERESCALAR CON
MT BLOQUEO
CAP TEMA 1 20
Multithreading en un único core
Ø Multithreading simultáneo - SMT SUPERESCALAR
ü Implementación más común SIN MT
Ciclos
ü Diferencias
! En superescalar, todas las emisiones pertenecen a 1 thread
! En SMT, varias instrucciones de threads distintos pueden
iniciar su ejecución en el mismo ciclo usando hardware de
planificación dinámica para determinar qué instrucciones están
preparadas
ü SMT asociado con superescalares con planificación dinámica
! Ya tiene muchos de los mecanismos para soportar SMT
! Añadir Slot de emisión
8 instrucciones de
– Tabla de renombre de registros por thread diferentes threads
– PCs separados
Ciclos
– Hardware para que instrucciones de múltiples threads hagan commit
SUPERESCALAR
CON SMT
CAP TEMA 1 21
Multithreading en un único core
https://studium23.usal.es/pluginfile.php/127413/mod_resource/content/1/IBM_Power5_chip_a_dual-core_multithreaded_processor.pdf
4 pipelines
2 PCs
2 D0-Decode stage 0
2 colas de
instrucciones
buscadas
CAP TEMA 1 22
Multithreading en un único core
CAP TEMA 1 23
Multithreading en un único core
https://en.wikipedia.org/wiki/Alpha_21464
Ø MT simultáneo
ü Compaq Alpha 21464 –
! Superescalar de 8 issue
! SMT de 4 vías (threads)
4 UFs FP
4 PCs
CAP TEMA 1 24
Multithreading en un único core
ü Tecnología Hyperthreading en Intel Xeon
! Utiliza SMT 2 threads
! 1 único procesador físico aparece como 2 procesadores lógicos
CAP TEMA 1 25
Multithreading en un único core
Ø Consideraciones
ü Procesador superescalar con soporte para SMT mejora las prestaciones
que planteamientos de ILP más agresvicos
ü Mejor opción ofrecer múltiples cores más simples que menor número de
cores más complejos
! Core actual es un superescalar entre 2 y 4 emisiones con soporte para SMT
entre 2 y 4 thread
CAP TEMA 1 26
Multicores y SMT
Ø Múltiples cores donde cada procesador puede usar SMT
Ø Número de threads: 2, 4 y 8
Ø Jerarquía de memoria
ü Si solo hay SMT: todas las cachés son compartidas
ü Si es multicore
! Caché L1 privada
! Caché L2 privada en algunas arquitecturas y compartida en otras
! Caché L3 compartida (según)
! Memoria siempre compartida
CAP TEMA 1 27
Multicores y SMT
Ø SMT Dual Core: 4 threads concurrentes
Core 1 Core 2
CAP TEMA 1 28
Multicores y SMT
Ø Intel
ü Pentium-4 fue el primer procesador en utilizar SMT (Intel denomina
hyper-threading) con soporte para 2 threads simultáneos
ü Core i es SMT de 2 threads, al igual que el Atom x86 de bajo consumo
ü Core i7 de 4 núcleos soporta 8 threads
Ø IBM
ü POWER 7 con 8 núcleos y 4 threads por núcleo (total de 32 threads SMT)
Ø Sun
ü UltraSPARC-T1 (Niagara) con 8 núcleos de 4 threads (32 threads)
ü UltraSPARC-T2 con 8 threads por core
ü UltraSPARC-T3 con 16 núcleos - 128 threads
CAP TEMA 1 29
Multithreading en un único core
CAP TEMA 1 31