Está en la página 1de 29

Computación de Altas Prestaciones

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

Avance en diseño Deep-Pipelined Processor


micro-arquitecturas de
procesadores Superscalar Processor Instruction Level Paralelism
ILP

VLIW Processor

Out-of-Order Processor
2005
Multithreading Processor

Thread Level Paralelism


Multi-core Processor TLP

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%

ü En algunas aplicaciones ILP es bastante limitado o


difícil de explotar

ü Si hay fallos de caché se producen paradas (stalls)


que son difíciles de ocultar utilizando ILP (buscar
instrucciones independientes), sobre todo si se
emiten múltiples instrucciones
Sólo emisión
2 instrucciones
ü Ejemplo: Superescalar con 4 emisiones por ciclo

Ciclos
! Con 1 único proceso(A) sólo en algunos ciclos se pueden Sin emisión

emitir 4 instrucciones en cada ciclo Slot de emisión


4 instrucciones
! El proceso A no tiene suficiente ILP o stalls por caché

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

Ø Si tenemos código multihilo que se ejecuta en un procesador superescalar


entonces hasta que no finaliza un thread no se conmuta al siguiente
Instrucciones
TA thread A
Superescalar TA stall TA TB stall TB stall TC
TB Instrucciones
Sin MT thread B
TC Instrucciones
thread C
Fallo de caché, dependencias
CAP TEMA 1 5
Explotando el paralelismo a nivel de thread
Ø Objetivo
Explotar TLP (Thread Level Parallelism)
Ø Utilizar múltiples streams de instrucciones para
ü Incrementar la productividad (throughput) de un computador que ejecuta
muchos programas distintos
ü Disminuir el tiempo de procesamiento de una aplicación con múltiples
threads
Ø Soluciones
ü Arquitectura multithreaading - uniprocesador (1 core) usando múltiples
threads
ü Arquitecturas multiprocesadores y multi/many cores – tener varios
procesadores y cada uno con varios cores
Ø TLP vs ILP
ü ILP explota el paralelismo ímplicito dentro de un fragmento de código
lineal o en un bucle
ü TLP explota múltiples flujos de instrucciones (threads) independientes
CAP TEMA 1 6
Explotando el paralelismo a nivel de thread
Ø Arquitecturas multithreading (MT)
ü Permite procesar múltiples threads en un único core de forma concurrente
para ocultar las latencias de la memoria y las asociadas al pipeline

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

Procesador Procesador Procesador Búsqueda y


segmentado/ segmentado/ segmentado/ ejecución de
Superescalar Superescalar Superescalar múltiples threads
Instrucciones
TA thread A
TA stall TA
Con Multicore TB stall TB stall TB Instrucciones
thread B
TC Instrucciones
TC thread C
Fallo de caché
Dependencias
Superescalar stall TA TB stall TB stall TC
TA
Sin MT
CAP TEMA 1 8
Multithreading en un único core
Ø Multithreading - Características
ü Permite a múltiples threads ejecutarse en un único core de forma
concurrente
! Las latencias que surgen cuando se está ejecutando un thread (fallos de
caché de datos, dependencias entre instrucciones …) se ocultan con la
ejecución de otro thread

ü Varios hilos comparten concurrentemente las unidades funcionales


de 1 procesador

ü El procesador trata a cada thread de forma individual


! Debe mantener el estado de cada thread

ü No duplica el procesador completo sino únicamente


el estado privado (por thread)
! Banco de registros, PC, tablas de páginas …
! La memoria compartida ya soporta múltiples accesos

ü Debe incluir hardware que permita conmutar


rápidamente de thread

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

Multithreading en un único core Regs – Banco de registros


Icache – Caché de instrucciones
Dcache – Caché de datos

Ø 1 thread: un flujo de instrucciones

Todos los recursos


utilizados por 1 hilo 1 hilo - rojo

Ø Multithreading: varios flujos de instrucciones (varios threads)


Recursos para Múltiples PCs Múltiples bancos de registros para un ROB para cada thread
distinguir el estado almacenar el contexto de cada thread
de varios hilos

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

VLIW Interleaved Blocked Simultaneous


multithreading Chip
multithreading multithreading multiprocessor
VLIW VLIW
CAP TEMA 1 16
ESCALAR
Multithreading en un único core SIN MT

Ø Multithreading de grano fino (Interleaved multithreading)


ü Planteamiento general
! En cada ciclo conmuta a un thread distinto después de cada fetch
de instrucción
! Entremezcla/entrelaza (interleave) la ejecución de instrucciones
de varios threads
! Utiliza planificación tipo round-robin, no considerando los threads
que estén bloqueados (p.e. stall por memoria) en ese ciclo PROC. ESCALAR
CON
MT ENTRELAZADO
ü En procesador escalar (solo 1 pipeline)
4 Threads
! Una instrucción de un thread entra en el pipeline después que
inst. previa de ese thread haya hecho commit
! Elimina dependencias de datos y de control
! Simplifica hardware de detección y resolución de conflictos
(interlock)

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

! Número de instrucciones emitidas por ciclo depende de las


dependencias en un único thread
! No hay retardos asociados a conmutación de threads
ü Ventaja
ü oculta las pérdidas de productividad por paradas Slot de emisión
4 instrucciones
ü Inconveniente del mismo thread

ü ralentiza la ejecución de un thread individual

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

Ø Multithreading de grano grueso

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

ü Variación del MT de grano fino en superescalares

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

Ø MT simultáneo ü IBM POWER 4 – anterior sin SMT


ü IBM POWER 5 – ! 2 cores en 1 chip compartiendo L2

! Superescalar de 5-issue ! Superescalar con ejecución out-of-order 5-issue 2 Group


especulación commit
! 2-way SMT (2 threads)

4 pipelines
2 PCs

2 D0-Decode stage 0
2 colas de
instrucciones
buscadas

Las 5 instrucciones pertenecen al Renombre de En cada ciclo puede emitir hasta


mismo thread registros 5 instrucciones que pueden pertenecer a cada uno
de los 2 threads

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

En cada ciclo puede emitir hasta 8


instrucciones de 4 threads 8 UFs Int

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

También podría gustarte