Anda di halaman 1dari 111

ICEE1012

El Procesador Pipelined

Basado en el Capitulo 4 del texto: Computer Organization and Design, David Patterson y John Hennessy
Procesador Single-Cycle

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Procesador Multi-Cycle

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Introduccin al Procesador Pipelined
Pipeline: una cadena de etapas de
procesamiento de datos o una optimizacin de
la CPU que se encuentra en los procesadores
modernos
Pipelining es una implementacin en la cual
mltiples instrucciones son sobrepuestas para
su ejecucin
Pipelining ha sido la clave para acelerar los
procesadores
Comenzaremos con una analoga que nos
permitir entender el pipelining
La analoga se refiere al lavado de ropa
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Smil con el Lavado de Ropa
Las etapas sin pipeline son:
Poner una carga de ropa sucia en la lavadora
Una vez finalizado el ciclo de lavado, poner la carga
de ropa en la secadora
Una vez finalizado el ciclo de secado, planchar la
carga de ropa y doblarla
Guardar la carga de ropa
Una vez terminado este proceso, se comienza
con la carga de ropa siguiente

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Smil con el Lavado de Ropa
Pipelining toma menos tiempo
Una vez finalizado el lavado de la primera carga
se puede comenzar el segundo lavado mientras
se seca la primera carga
Una vez finalizado el secado de la primera carga,
se comienza el planchado de esta mientras se
seca la segunda carga y se comienza el lavado
de la tercera
Para poder aplicar las tcnicas de pipeline, se
debe contar con recursos separados para cada
etapa del pipeline

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Analoga del Pipelining
Lavado Pipelined: traslapar la ejecucin
Paralelismo mejora la performance

Cuatro cargas:
Speedup
= 8/3.5 = 2.3
Sin parar:
Speedup
= 2n/0.5n + 1.5 4
= nmero de etapas

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Pipeline en MIPS
Cinco etapas, un paso por etapa
1. IF: fetch de la instruccin de memoria
2. ID: decodificacin de la instruccin y leer registro
3. EX: ejecutar operacin o calcular direccin
4. MEM: operando de acceso a memoria
5. WB: escribir resultado de vuelta en registro

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Performance del Pipeline
Se asume tiempo por etapa es:
100ps para lectura o escritura de registro
200ps para otras etapas
Comparar datapath pipelined con datapath de
un slo ciclo
Fetch Lectura Operacin Acceso Escribir Tiempo
Instruccin
Instr. Registro ALU Memoria Registro Total
lw 200ps 100 ps 200ps 200ps 100 ps 800ps
sw 200ps 100 ps 200ps 200ps 700ps
R-format 200ps 100 ps 200ps 100 ps 600ps
beq 200ps 100 ps 200ps 500ps

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Performance del Pipeline
Un ciclo (Tc= 800ps)

Pipelined (Tc= 200ps)

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Pipeline Speedup
Si todas las etapas estn balanceadas
i.e., todas toman el mismo tiempo
Tiempo entre instruccionespipelined
Tiempo entre instruccionesnonpipelined
= Nmero de etapas
Si no estn balanceadas, el speedup es menor
El speedup se debe al incremento del throughput
Latencia (tiempo para cada instruccin) no disminuye

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Pipelining y el Diseo de ISA
El ISA de MIPS fue diseado para el pipelining
Todas las instrucciones son de 32 bits
Fcil de hacer fetch y decodificar en un ciclo
c.f. x86: instrucciones de 1 a 17 bytes
Pocos y regulares formatos de instrucciones
Puede decodificar y leer registros en un paso
Direccionamiento para cargar/almacenar
Puede calcular direccin en 3a etapa, accesar memoria en 4a
etapa
Alineamiento de los operandos de memoria
Acceso de memoria toma slo un ciclo

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazards
Situaciones que impiden iniciar la siguiente
instruccin en el prximo ciclo
Hazard estructural
Un recurso requerido esta ocupado
Hazard de datos
Necesidad de esperar que la instruccin anterior
complete su lectura y escritura de datos
Hazard de control
El decidir sobre las medidas de control depende de la
instruccin anterior

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazards de Estructura
Conflicto por uso de un recurso
En MIPS pipeline con una sola memoria
Cargar/almacenar requiere acceso de datos
El fetch de la instruccin tendra que detenerse
(stall) para ese ciclo
Causara un pipeline bubble

Por lo tanto, datapaths pipelined requieren


instrucciones/datos de memoria separados
O instrucciones/caches de datos separados

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazards de Datos
Una instruccin depende de la finalizacin del
acceso a los datos de una instruccin anterior
add $s0, $t0, $t1
sub $t2, $s0, $t3

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Forwarding (o Bypassing)
Usar resultado cuando es computado
No espera por el que sea almacenado en un registro
Requiere conexiones extras en el datapath

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazard de Datos de Carga-Uso
No siempre se puede evitar el stall con el
forwarding
Si el valor no es procesado cuando es requerido
No se puede volver atrs en el tiempo!

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Programacin de Cdigos para evitar
Stalls
Reordenar el cdigo para evitar el uso del
resultado de la carga en la siguiente instruccin
Cdigo C para A = B + E; C = B + F;

lw $t1, 0($t0) lw $t1, 0($t0)


lw $t2, 4($t0) lw $t2, 4($t0)
stall add $t3, $t1, $t2 lw $t4, 8($t0)
sw $t3, 12($t0) add $t3, $t1, $t2
lw $t4, 8($t0) sw $t3, 12($t0)
stall add $t5, $t1, $t4 add $t5, $t1, $t4
sw $t5, 16($t0) sw $t5, 16($t0)
13 ciclos 11 ciclos
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Hazards de Control
Salto Condicional determina flujo del control
Fetch de la siguiente instruccin depende del
resultado del salto
Pipeline no siempre puede hacer fetch a la
instruccin correcta
Todava trabajando en la etapa ID del salto condicional

En pipeline de MIPS
Se requiere comparar tempranamente los registros y
calcular la direccin objetivo en el pipeline
Agregar hardware para hacer eso en la etapa ID

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Stall en el Salto Condicional
Esperar resultados del salto determinado antes
de buscar la siguiente instruccin

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Prediccin del Salto Condicional
Pipelines ms largos ya no pueden determinar
fcilmente el resultado del salto en forma
temprana
La penalizacin por stall se torna inaceptable
Predecir el resultado del salto condicional
Solo se produce stall si la prediccin es errnea
En pipeline de MIPS
Puede predecir saltos no realizados
Bsqueda de la instruccin despus del salto, sin
retardos

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


MIPS Sin Tomar Prediccin

Prediccin
correcta

Prediccin
incorrecta

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Prediccin del Salto Ms Realista
Prediccin esttica del salto condicional
Basado en el comportamiento tpico del salto
Ejemplo: saltos de loop y de declaracin if
Predice saltos realizados hacia atrs
Predice saltos hacia adelante no realizados

Prediccin dinmica del salto condicional


Hardware mide comportamiento real de saltos
e.g., registra historia reciente de cada salto condicional
Asume comportamiento futuro continuar la tendencia
Cuando es incorrecto, se produce stall mientras hace re-
fetching, y actualiza la historia

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Resumen del Concepto Pipeline
El cuadro global
Pipelining mejora la performance aumentando
el throughput de las instrucciones
Ejecuta mltiples instrucciones en paralelo
Cada instruccin tiene la misma latencia
Sujeto a hazards
Estructura, datos, control
Diseo del conjunto de instrucciones afecta la
complejidad de la implementacin pipeline

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


MIPS Pipelined Datapath

MEM

Flujo derecha WB
a izquierda
conduce a
hazards

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Registros Pipeline
Se necesitan registros entre etapas
Para mantener informacin producida en ciclos previos

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Operacin Pipeline
Flujo de instrucciones ciclo por ciclo a travs del
datapath pipelined
Diagrama pipeline ciclo de reloj nico
Muestra uso del pipeline en un slo ciclo
Destaca recursos utilizados
c.f. Diagrama ciclo de reloj mltiple
Grfico de operacin en el tiempo

Veremos diagramas ciclo de reloj nico para


carga y almacenamiento

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


IF para Carga, Almacenamiento,

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


ID para Carga, Almacenamiento,

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


EX para Carga

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


MEM para Carga

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


WB para Carga

Nmero de
registro
errneo

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Datapath Corregido para Carga

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


EX para Almacenamiento

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


MEM para Almacenamiento

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


WB para Almacenamiento

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Diagrama Pipeline Mltiples Ciclos
Diagrama que muestra el uso de recursos

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Diagrama Pipeline Mltiples Ciclos
Forma tradicional

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Diagrama Pipeline Ciclo nico
Estado del pipeline en un ciclo dado

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Control Pipelined (Simplificado)

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Control Pipelined
Seales de control derivadas de la instruccin
Como en la implementacin Single-Cycle

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Control Pipelined

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazards de Datos en Instrucciones ALU
Consideremos esta secuencia:
sub $2, $1,$3
and $12,$2,$5
or $13,$6,$2
add $14,$2,$2
sw $15,100($2)
Podemos resolver los hazards con forwarding
Cmo detectamos cundo hacer forward?

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Dependencias y Forwarding

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Detectando la Necesidad de Forward
Pasar nmero de los registros a lo largo del
pipeline:
e.g., ID/EX.RegisterRs = nmero registro para Rs en
registro pipeline ID/EX
Nmero de los registros de operandos de la ALU
en la etapa EX, son dados por:
ID/EX.RegisterRs, ID/EX.RegisterRt
Hazards de datos cuando:
Forward de
1a. EX/MEM.RegisterRd = ID/EX.RegisterRs reg. pipeline
1b. EX/MEM.RegisterRd = ID/EX.RegisterRt EX/MEM

2a. MEM/WB.RegisterRd = ID/EX.RegisterRs Forward de


reg. pipeline
2b. MEM/WB.RegisterRd = ID/EX.RegisterRt MEM/WB
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Detectando la Necesidad de Forward
Pero slo se hace forwarding si la instruccin
escribe en un registro!
EX/MEM.RegWrite, MEM/WB.RegWrite
Y slo si Rd para esa instruccin no es $zero
EX/MEM.RegisterRd 0,
MEM/WB.RegisterRd 0

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Vas del Forwarding

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Vas del Forwarding

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Condiciones del Forwarding
Hazard en EX
if (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0)
and (EX/MEM.RegisterRd = ID/EX.RegisterRs))
ForwardA = 10
if (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0)
and (EX/MEM.RegisterRd = ID/EX.RegisterRt))
ForwardB = 10
Hazard en MEM
if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0)
and (MEM/WB.RegisterRd = ID/EX.RegisterRs))
ForwardA = 01
if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0)
and (MEM/WB.RegisterRd = ID/EX.RegisterRt))
ForwardB = 01

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazard Doble de Datos
Considere la secuencia:
add $1,$1,$2
add $1,$1,$3
add $1,$1,$4
Ocurren ambos hazards
Se querr utilizar el ms reciente
Revisar condicin de hazard de MEM
Slo hacer forward si condicin de hazard de EX no
es verdadera

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazard Doble de Datos (cont.)
El data hazard potencial puede ocurrir cuando hay un
conflicto entre el resultado de la instruccin en la etapa
WB y la instruccin en la etapa MEM cul debera ser
forwarded?

I
add $1,$1,$2

ALU
n IM Reg DM Reg
s
t
r.
add $1,$1,$3

ALU
IM Reg DM Reg
O
r
d
add $1,$1,$4
ALU
e IM Reg DM Reg
r

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazard Doble de Datos (cont.)
El data hazard potencial puede ocurrir cuando hay un
conflicto entre el resultado de la instruccin en la etapa
WB y la instruccin en la etapa MEM cul debera ser
forwarded?

I
add $1,$1,$2

ALU
n IM Reg DM Reg
s
t
r.
add $1,$1,$3

ALU
IM Reg DM Reg
O
r
d
add $1,$1,$4
ALU
e IM Reg DM Reg
r

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Condiciones del Forwarding Revisadas
Hazard en MEM
if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0)
and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0)
and (EX/MEM.RegisterRd ID/EX.RegisterRs))
and (MEM/WB.RegisterRd = ID/EX.RegisterRs))
ForwardA = 01
if (MEM/WB.RegWrite and (MEM/WB.RegisterRd 0)
and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd 0)
and (EX/MEM.RegisterRd ID/EX.RegisterRt))
and (MEM/WB.RegisterRd = ID/EX.RegisterRt))
ForwardB = 01

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Datapath con Forwarding

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazard de Datos y Stalls

Necesita stall
por un ciclo

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Deteccin Hazard de Datos Carga-Uso
Chequear cuando instruccin es decodificada
en etapa ID
Nmeros de registros operando ALU en etapa
ID son dados por:
IF/ID.RegisterRs, IF/ID.RegisterRt
Hazard Carga-Uso cuando:
ID/EX.MemRead and
((ID/EX.RegisterRt = IF/ID.RegisterRs) or
(ID/EX.RegisterRt = IF/ID.RegisterRt))
Si es detectado, hacer stall e insertar bubble

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Como Detener (Stall) el Pipeline
Forzar valores de control en registro ID/EX a 0
EX, MEM y WB hacer nop (no-operation)
Prevenir actualizacin del PC y registro IF/ID
Instruccin en uso se decodifica nuevamente
Siguiente instruccin es buscada (fetch) nuevamente
Stall de 1 ciclo permite a MEM leer datos para lw
Puede subsecuentemente seguir con la etapa EX

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Stall/Bubble en el Pipeline

Stall
insertado aqu

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Stall/Bubble en el Pipeline

O, ms
precisamente
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Datapath con Deteccin de Hazard

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Stalls y Performance
El cuadro global

Stalls reducen la performance


Pero son requeridos para obtener resultados correctos
Los compiladores pueden arreglar el cdigo para
evitar hazards y stalls
Se requiere conocimiento de la estructura del pipeline

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazards en el Salto Condicional
Si resultado del salto determinado en MEM

Flush estas
instrucciones
(poner valores
de control en 0)

PC

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Reduciendo el Retardo del Salto Condicional
Cambiar el hardware para determinar resultado
en la etapa ID
Sumador direccin objetivo
Comparador de registros
Ejemplo: salto condicional realizado
36: sub $10, $4, $8
40: beq $1, $3, 7
44: and $12, $2, $5
48: or $13, $2, $6
52: add $14, $4, $2
56: slt $15, $6, $7
...
72: lw $4, 50($7)
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Ejemplo: Salto Condicional Realizado

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Ejemplo: Salto Condicional Realizado

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazards de Datos para Saltos Condicionales
Si un registro de comparacin es un destino de
una segunda o tercera instruccin anterior a la
ALU
add $1, $2, $3 IF ID EX MEM WB

add $4, $5, $6 IF ID EX MEM WB

IF ID EX MEM WB

beq $1, $4, target IF ID EX MEM WB

Se puede resolver utilizando forwarding

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazards de Datos para Saltos Condicionales
Si un registro de comparacin es el destino de la
instruccin anterior de la ALU o la segunda
anterior a la instruccin de carga
Se necesita 1 ciclo de stall

lw $1, addr IF ID EX MEM WB

add $4, $5, $6 IF ID EX MEM WB

beq stalled IF ID

beq $1, $4, target ID EX MEM WB

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazards de Datos para Saltos Condicionales
Si un registro de comparacin es un destino de
la instruccin de carga inmediatamente anterior
Se necesitan 2 ciclos de stall

lw $1, addr IF ID EX MEM WB

beq stalled IF ID

beq stalled ID

beq $1, $0, target ID EX MEM WB

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Prediccin Dinmica de Saltos
En pipelines mas profundos y en superscalar,
el castigo por los branch es ms significativo
Utiliza prediccin dinmica
Branch prediction buffer (o branch history table)
Indexado por las direcciones de instrucciones de
saltos condicionales recientes
Guarda resultados (salto realizado/no realizado)
Para ejecutar un salto condicional (branch)
Chequea tabla, espera el mismo resultado
Comienza el fetching del fracaso o del objetivo
Si esta equivocado, hace flush pipeline y cambia prediccin

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Predictor de 1 Bit: Anomala
Saltos de bucle interno mal pronosticados dos
veces!
outer:

inner:

beq , , inner

beq , , outer

Prediccin errnea en la ltima iteracin del


loop interno
Prediccin errnea en la primera iteracin
del loop interno ya que no se realiz el salto
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Predictor de 2 Bit
Slo cambia prediccin en dos sucesivas malas
predicciones

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Calculando el Destino del Salto
An con predictor, todava se necesita calcular
la direccin de destino
Penalidad de 1 ciclo por salto realizado
Buffer destino de salto
Cache de direccin de destino
Indexado por el PC cuando de busca la instruccin
Si se tiene xito y la instruccin ejecutada es el salto
pronosticado, se puede buscar el destino inmediatamente

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Excepciones e Interrupciones
Eventos inesperados requieren cambios en el
flujo de control
Diferentes ISAs utilizan los trminos diferentemente
Excepciones
Se producen dentro de la CPU
e.g., opcode no definido, overflow, syscall,

Interrupciones
De un controlador de E/S externo
Es difcil tratar con ellas sin sacrificar el rendimiento

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


El Manejo de las Excepciones
En MIPS, las excepciones son manejadas por
un System Control Coprocessor (CP0)
Guarda PC de la instruccin afectada (o
interrumpida)
En MIPS: Exception Program Counter (EPC)
Guarda indicacin del problema
En MIPS: Registro Causa
Asumiremos 1 bit
0 para opcode no definido, 1 para overflow

Salta al manejador en direccin 8000 00180

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Un Mecanismo Alternativo
Vectores de Interrupciones
Direccin del manejador determinado por la causa
Ejemplo:
Opcode no definido: C000 0000
Overflow: C000 0020
: C000 0040
Las instrucciones, ya sea:
Se ocupan de la interrupcin, o
Salta al manejador correspondiente

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Acciones del Manejador
Lee la causa y transfiere al correspondiente
manejador
Determina la accin requerida
Si es reactivable
Toma la accin correctiva
Utiliza el EPC para volver al programa
En caso contrario
Termina el programa
Reporta el error utilizando el EPC, causa,

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Excepciones en un Pipeline
Otra forma de hazard de control
Considerar overflow en la suma en la etapa EX
add $1, $2, $1
Prevenir que $1 sea afectado
Completar la instruccin previa
Flush add e instrucciones subsecuentes
Setear valores en registros Cause y EPC
Transferir control al manejador
Similar a mala prediccin en el salto condicional
Utiliza mucho del mismo hardware

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Pipeline con Excepciones

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Propiedades de una Excepcin
Excepciones reactivables
Pipeline puede hacer flush a la instruccin
Manejador ejecuta, luego retorna a la instruccin
Bsqueda nueva y ejecutada de cero

PC guardado en registro EPC


Identifica causante de la instruccin
En realidad, es guardado PC + 4
El manejador debe ajustarse

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Ejemplo de Excepcin
Excepcin de add en:
40 sub $11, $2, $4
44 and $12, $2, $5
48 or $13, $2, $6
4C add $1, $2, $1
50 slt $15, $6, $7
54 lw $16, 50($7)

Manejador
80000180 sw $25, 1000($0)
80000184 sw $26, 1004($0)

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Ejemplo de Excepcin

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Ejemplo de Excepcin

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Mltiples Excepciones
Pipelining traslapa mltiples instrucciones
Podra tener mltiples excepciones de una vez
Enfoque simple: tratar excepcin de la primera
instruccin donde se produce
Flush instrucciones subsecuentes
Precisar excepciones
En pipelines complejos
Mltiples instrucciones emitidas por ciclo
Conclusin fallida
Mantener las excepciones precisas es difcil!

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Excepciones Imprecisas
Slo detener pipeline y guardar estado
Incluyendo causa(s) de la excepcin
Dejar al manejador hacer su trabajo
Cuale(s) instruccin(es) tenan excepciones
Cuales completar o hacer flush
Pueden requerir conclusin manual

Simplifica el hardware, pero con software del


manejador ms complejo
No factible para pipelines complejos multiple-
issue y out-of-order
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Instruction-Level Parallelism (ILP)
Pipelining: ejecutar mltiples instrucciones en
paralelo
Para incrementar el ILP
Pipeline ms profundo
Menor trabajo por etapa ciclo de reloj ms corto
Multiple issue
Replicar etapas de pipeline mltiples pipelines
Iniciar mltiples instrucciones por ciclo de reloj
CPI < 1, usar mejor Instructions Per Cycle (IPC)
E.g., 4GHz 4-way multiple-issue
16 BIPS, peak CPI = 0.25, peak IPC = 4
Pero las dependencias reducen esto en la prctica

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Multiple Issue
Multiple issue esttico
El compilador agrupa instrucciones para ser emitidas juntas
Las empaqueta en un issue slots
El compilador detecta y evita los hazards
Multiple issue dinmico
La CPU examina el flujo de instrucciones y elije las
instrucciones a emitir en cada ciclo
El compilador puede ayudar reordenando las instrucciones
La CPU resuelve los hazards utilizando tcnicas
avanzadas en el tiempo de operacin (runtime)

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Especulacin
Adivinar que hacer con una instruccin
Iniciar la operacin tan pronto como sea posible
Chequear si el supuesto fue correcto
Si es as, completar la operacin
Si no es as, volver atrs y hacer lo correcto

Comn para multiple issue esttico y dinmico


Ejemplos:
Especular con los resultados de los saltos
condicionales
Volver atrs si el camino tomado es diferente
Especular en la carga
Volver atrs si la ubicacin es actualizada

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Especulacin en Compilador/Hardware
El compilador puede reordenar las instrucciones
e.g., mover la carga antes del salto
Puede incluir un arreglar instrucciones para
recuperar el supuesto incorrecto
El hardware puede mirar hacia adelante las
instrucciones a ejecutar
Guardar los resultados hasta que determine si
realmente se necesitan
Borrar lo guardado si la especulacin fue incorrecta

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Especulacin y Excepciones
Qu sucede si la excepcin se produce en una
instruccin ejecutada especulativamente?
e.g., carga especulativa antes del chequeo de puntero
nulo
Especulacin esttica
Se puede agregar soporte en el ISA para excepciones
diferidas
Especulacin dinmica
Se pueden guardar las excepciones hasta la
conclusin de la instruccin (lo cual puede no ocurrir)

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Multiple Issue Esttico

El compilador agrupa instrucciones en issue


packets
Grupo de instrucciones que pueden ser emitidas en
un slo ciclo
Determinado por los recursos de pipeline requeridos
Pensar que un issue packet es una instruccin
muy larga
Especifica mltiples operaciones concurrentes
Very Long Instruction Word (VLIW)

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Programacin de un Multiple Issue
Esttico
El compilador debe remover algunos/todos los
hazards
Reordenar instrucciones en issue packets
No deben haber dependencias con un paquete
Posiblemente algunas dependencias entre paquetes
Varia entre ISAs; el compilador debe saberlo!
Rellenar con nop si es necesario

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


MIPS con Dual Issue Esttico
Paquetes de dos emisiones
Una instruccin de ALU/salto
Una instruccin de load/store
64-bit alineados
ALU/salto, luego load/store
Rellenar una instruccin no utilizada con nop

Address Instruction type Pipeline Stages


n ALU/branch IF ID EX MEM WB
n+4 Load/store IF ID EX MEM WB
n+8 ALU/branch IF ID EX MEM WB
n + 12 Load/store IF ID EX MEM WB
n + 16 ALU/branch IF ID EX MEM WB
n + 20 Load/store IF ID EX MEM WB

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


MIPS con Dual Issue Esttico

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Hazards en el Dual-Issue de MIPS
Ms instrucciones ejecutadas en paralelo
Hazard de datos en EX
Forwarding evita stalls con single-issue
Ahora no se puede utilizar el resultado de la ALU en
load/store en el mismo paquete
add $t0, $s0, $s1
load $s2, 0($t0)
Dividido en dos paquetes, efectivamente un stall

Hazard Carga-uso
Todava latencia de uso de un ciclo, pero ahora dos
instrucciones
Se requiere una programacin ms agresiva
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Ejemplo Programacin
Programar para un MIPS dual-issue
Loop: lw $t0, 0($s1) # $t0=elemento de arreglo
addu $t0, $t0, $s2 # suma escalar en $s2
sw $t0, 0($s1) # guarda resultado
addi $s1, $s1,4 # decrementa puntero
bne $s1, $zero, Loop # salta si $s1!=0

ALU/branch Load/store ciclo


Loop: nop lw $t0, 0($s1) 1
addi $s1, $s1,4 nop 2
addu $t0, $t0, $s2 nop 3
bne $s1, $zero, Loop sw $t0, 4($s1) 4

IPC = 5/4 = 1.25 (c.f. mximo IPC = 2)

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Deshacer un Bucle (Loop Unrolling)
Replicar el cuerpo del bucle para exponer ms
paralelismo
Reduce los controles de bucle adicionales
Utilizar diferentes registros por replicacin
Llamado renombramiento de registros
Evitar los loop-carried anti-dependencies
Store seguido de un load del mismo registro
Tambin conocido como dependencia de nombre
Reutilizacin de un nombre de registro

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Ejemplo de Deshacer un Bucle
ALU/branch Load/store ciclo
Loop: addi $s1, $s1,16 lw $t0, 0($s1) 1
nop lw $t1, 12($s1) 2
addu $t0, $t0, $s2 lw $t2, 8($s1) 3
addu $t1, $t1, $s2 lw $t3, 4($s1) 4
addu $t2, $t2, $s2 sw $t0, 16($s1) 5
addu $t3, $t4, $s2 sw $t1, 12($s1) 6
nop sw $t2, 8($s1) 7
bne $s1, $zero, Loop sw $t3, 4($s1) 8

IPC = 14/8 = 1.75


Cercano a 2, pero a costa de la cantidad de registros
y del cdigo

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Multiple Issue Dinmico
Procesadores Superscalar
CPU decide si emitir 0, 1, 2, cada ciclo
Evitando hazards estructurales y de datos
Evita la necesidad de una programacin del
compilador
Aunque todava puede ayudar
Semntica de cdigo asegurada por la CPU

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Programacin Pipeline Dinmico
Permite a la CPU ejecutar instrucciones fuera de
orden para evitar stalls
Pero entrega el resultado a los registros en orden
Ejemplo
lw $t0, 20($s2)
addu $t1, $t0, $t2
sub $s4, $s4, $t3
slti $t5, $s4, 20
Puede iniciar sub mientras addu esta esperando por lw

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


CPU Programada Dinmicamente
Preserva
dependencias

Mantiene
operandos
pendientes

Resultados tambin
enviados a cualquier
reservation stations
en espera
Reordena el buffer
para escritura en Puede proveer
registros operandos para
instrucciones emitidas

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Renombramiento de Registros
Las estaciones de reserva y los buffer de
reordenamiento, efectivamente proveen
renombramiento de registros
Para la instruccin emitida a la estacin de
reserva:
Si el operando est disponible en el archivo de
registro o en el buffer de reordenamiento
Copiado en la estacin de reserva
Ya no se requiere en el registro; puede sobrescribirse
Si el operando no est todava disponible
Se proporcionar a la estacin de reserva por una unidad de
funcin
Actualizacin del registro puede no ser necesario

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Especulacin
Predecir el salto y continuar emitiendo
No entregar hasta que el resultado del salto este
determinado
Especulacin de Carga
Evitar carga y retardo por falta de cache
Predecir la direccin efectiva
Predecir valor cargado
Cargar antes de la conclusin de almacenamientos
pendientes
Omitir valores almacenados para cargar la unidad
No realizar la carga hasta que la especulacin sea
borrada

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Por qu Programacin Dinmica?
Por que no dejar que el compilador programe
el cdigo?
No todos los stalls son predecibles
e.g., prdidas del cache
No se puede siempre programar alrededor de
los saltos
El resultado de los saltos es determinado
dinmicamente
Diferentes implementaciones de una ISA tienen
diferentes latencias y hazards

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Funciona el Multiple Issue?
El cuadro global
S, pero no tanto como nos gustara
Los programas tienen dependencias reales que
limitan el ILP
e.g., pointer aliasing
Cierto paralelismo es difcil de exponer
Tamao de ventana limitado durante la emisin de la
instruccin
Retardos de memoria y ancho de banda limitado
Difcil de mantener completos los pipelines
La especulacin puede ayudar si se hace bien
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Eficiencia en el Consumo de Energa
Complejidad de la programacin dinmica y de
las especulaciones requiere energa
Mltiples ncleos ms simples pueden ser
mejores
Frecuencia Etapas Ancho Especulacin
Microprocesador Ao Cores Energa
Reloj Pipeline emisin Fuera de Orden

i486 1989 25MHz 5 1 No 1 5W


Pentium 1993 66MHz 5 2 No 1 10W
Pentium Pro 1997 200MHz 10 3 Yes 1 29W
P4 Willamette 2001 2000MHz 22 3 Yes 1 75W
P4 Prescott 2004 3600MHz 31 3 Yes 1 103W
Core 2006 2930MHz 14 4 Yes 2 75W
UltraSparc III 2003 1950MHz 14 4 No 1 90W
UltraSparc T1 2005 1200MHz 6 1 No 8 70W
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Microarquitectura AMD Opteron X4

72 registros
fsicos

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Flujo del Pipeline en Opteron X4
Para operaciones con enteros

PF es 5 etapas ms larga
Hasta 106 operaciones RISC en progreso
Cuellos de botella
Instrucciones complejas con largas dependencias
Malas predicciones del salto condicional
Retardos de acceso a memoria
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Falacias
El pipelining es fcil(!)
La idea bsica es fcil
El problema esta en los detalles
e.g., deteccin de hazards de datos

Pipelining es independiente de la tecnologa


Entonces, por qu no hemos siempre hecho
pipelining?
Ms transistores hacen factible tcnicas ms
avanzadas
Diseo de ISA relacionado con pipeline necesita
tener en cuenta las tendencias tecnolgicas
e.g., predicated instructions
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Trampas
Diseo pobre de un ISA puede hacer mas difcil
el pipelining
e.g., conjunto de instrucciones complejas (VAX, IA-32)
Sobre esfuerzo significativo para hacer que el pipelining
funcione
Enfoque micro operacin del IA-32
e.g., modos de direccionamiento complejo
Efectos laterales de la actualizacin de registros, indireccin
de memoria
e.g., saltos retardados
Pipelines avanzados tienen largas ranuras de retardo

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II


Resumen de Conceptos
Concepto Hardware/Software
Pipeline Hardware
Hazards Hardware
Forwarding/Bypassing Hardware
Pipeline Stall/Bubble Hardware
Branch Prediction Hardware/Software
Instruction-Level Parallelism (ILP) Hardware
Multiple Issue (Static/Dynamic) Hardware/Software
VLIW Software
Superscalar Hardware
Dynamic Scheduling Hardware
Out-of-Order Execution Hardware
Speculation Hardware/Software
Reorder Buffer Hardware
Register Renaming Hardware/Software
Semestre Otoo 2014 ICEE1012 Sistemas Digitales II
Comentarios para Concluir
ISA influye en el diseo del datapath y del control
Datapath y control influyen en el diseo del ISA
Pipelining mejora el throughput de la
instruccin utilizando paralelismo
Ms instrucciones completadas por segundo
No se reduce la latencia de cada instruccin
Hazards: estructural, dato, control
Multiple issue y programacin dinmica (ILP)
Dependencias limitan paralelismo alcanzable
Complejidad conduce a la pared del consumo energa

Semestre Otoo 2014 ICEE1012 Sistemas Digitales II

Anda mungkin juga menyukai