Está en la página 1de 49

ICCD332 - Arquitectura de Computadores

Unidad 15
1. RISC
2. Pipelining en RISC
3. Procesadores superescalares

INGENIERÍA EN SOFTWARE
ESCUELA POLITÉCNICA NACIONAL

ENRIQUE MAFLA 1
Revisión
Participación, Participación, Participación
Organización del procesador
Organización de los registros
Ciclo de ejecución de las instrucciones
Pipelining

ENRIQUE MAFLA 2
Evolución del computador digital
Arquitectura von Neumann – programa almacenado
Concepto de familia – IBM System/360 (DEC PDP-8)
 Arquitectura  Implementación
Unidad de control microprogramada – IBM S/360
Memoria cache
Pipelining
Múltiples procesadores
Arquitectura RISC
◦ Gran número de registros de propósito general
◦ Conjunto de instrucciones simple y limitado
◦ Optimización del pipeline
ENRIQUE MAFLA 3
CISC – RISC – Superescalar

ENRIQUE MAFLA 4
Brecha semántica
HLL  ISA
ISAs para cerrar la brecha (CISC)
◦ Conjuntos grandes de instrucciones
◦ Gran variedad de modos de direccionamiento
◦ Sentencias HLL implementadas en HW
Objetivo
Facilitar la construcción de compiladores
Mejorar la eficiencia de ejecución
Soporte para HLLs sofisticados y complejos
Patrones de ejecución de instrucciones ISA  RISC
ENRIQUE MAFLA 5
Patrones de ejecución - operaciones
◦ ASSIGN  Mov
◦ LOOP, IF  Compare, Branch
◦ CALL/RETURN

ENRIQUE MAFLA 6
Patrones de ejecución - operandos
80% de variables escalares son variables locales
Referencia a arreglo / estructura => apuntador / índice (escalar local)
 Mayoría de referencias son escalares locales
Promedio de referencias a memoria / registros por instrucción?

ENRIQUE MAFLA 7
Patrones de ejecución –
llamadas a procedimientos
1. Número de parámetros y variables locales
2. Profundidad de anidamiento
RESULTADOS:

Pocos niveles de anidamiento


 Mayoría de referencia a pocas variables escalares locales
ENRIQUE MAFLA 8
Patrones de ejecución -
IMPLICACIONES
ISA cercana a HLL no es la mejor estrategia de diseño
Optimizar el rendimiento de características del HLL que consumen mas t
Arquitecturas RISC
1. Número de registros (compilador)  optimizar referencia operandos
 Localidad y predominancia de referencias a escalares
2. Diseño optimizado de pipelines
 Porcentaje alto de branches condicionales y llamadas a procedimientos
3. ISA con primitivos (operaciones simples) de alto rendimiento
◦ Costo previsible de instrucciones (tiempo, tamaño, energía)

ENRIQUE MAFLA 9
Ventanas de registros

Variables locales (ventanas)


◦ 8 ventanas de 16 registros
◦ 16 ventanas de 32 registros

Variables globales  registros globales


ENRIQUE MAFLA 10
Cache vs archivo de registros

ENRIQUE MAFLA 11
Arquitectura RISC
CISC – más instrucciones y más complejas
Facilitar compiladores y mejorar rendimiento (código pequeño, rápido)
◦ Sentencias HLL  instrucciones complejas: difícil encontrar match
◦ Programas mas pequeños (menos memoria, R/W, cache, paginación)
◦ Tamaño del código CISC, comparable a RISC
◦ Programas mas rápidos (sentencia HLL compleja  instrucción CISC)
◦ Mayoría de instrucciones son simples
◦ Unidad de control mas compleja  afecta rendimiento de instrucciones simples

ENRIQUE MAFLA 12
Características de RISC
Una instrucción por ciclo
◦ Ciclo: registros  ALU  registro (en HW, sin micro código)
Operaciones registro-a-registro
◦ Acceso a memoria: LOAD / STORE  ISA y unidad de control simples
Modos simples de direccionamiento
◦ Desplazamiento y relativo a PC pueden ser parte de RISC
Formatos simples y uniformes de instrucciones
◦ 1 o 2 formatos, campos fijos
◦ Decodificación del opcode y acceso a registros en paralelo
◦ Alineados a 32 bits
ENRIQUE MAFLA 13
Registro-registro vs memoria-memoria

Acceso frecuente a
un numero pequeño
de variables locales

ENRIQUE MAFLA 14
Beneficios de rendimiento en RISC
Compiladores optimizantes: instrucciones mas primitivas / simples
◦ Sacar instrucciones fuera de bucles
◦ Reordenar el código
◦ Maximizar uso de registros
Compilador produce instrucciones simples
◦ Unidad de control simple, sin micro código
Pipelines mas efectivos
Mejor respuesta a interrupciones (instrucciones mas cortas)

ENRIQUE MAFLA 15
Características RISC
1. Un solo tamaño de instrucciones
Complejidad de
2. Tamaño típico: 4 bytes decodificación
3. Menos de 5 modos de direccionamiento
4. Sin direccionamiento indirecto
5. No combinar load/store con aritmética Complejidad del
6. No mas de un operando en memoria pipeline
7. Alineación de operandos de load/store
8. Mínimo uso de MMU para direcciones de operandos
9. Mínimo 32 registros enteros (mas de 5 bits en la instrucción) Compilador
10. Mínimo 16 registros FP (mas de 4 bits en la instrucción)
ENRIQUE MAFLA 16
Pipelining en RISC
Mayoría de instrucciones (registro  registro)
◦ IF – traer la instrucción de memoria
◦ EX – operación ALU
Load / store (memoria  registro)
◦ IF – traer la instrucción de memoria
◦ EX – calcular la dirección de memoria
◦ ME – registro  memoria / memoria  registro

ENRIQUE MAFLA 17
Efectos de pipelining

E1 – R registros
E2 – ALU + W
registro

ENRIQUE MAFLA 18
Optimizar el pipeline – branch demorada
Branches incondicionales, llamadas / retornos
Branches condicionales: instrucción anterior altera condición?
◦ Buscar instrucción después del branch o NOOP

ENRIQUE MAFLA 19
Uso de branch demorada

ENRIQUE MAFLA 20
Optimizar el pipeline
Carga demorada
LOAD  procesador bloquea al registro, continua ejecución
Registro referenciado  procesador inactivo hasta completar la carga
Desenrollar bucles
Replicar bucle por factor u; iterar con paso u en lugar de 1
◦ Reducir overhead del bucle
◦ Aumentar paralelismo (mejorando rendimiento del pipeline)
◦ Mejorar localidad de registros, cache y TLB

ENRIQUE MAFLA 21
Desenrollar bucles – ejemplo
Loop overhead = ½
• 2 iteraciones antes del
test/branch
Paralelismo – 2 asignaciones
Localidad – si a en registros
• a[i] y a[i+1] usados 2
veces en el bucle
• Loads: 3 -> 2 por iteración

ENRIQUE MAFLA 22
ILP - superescalar
Superescalar
Inicio simultaneo de instrucciones
Ejecución independiente
Diferentes pipelines
Ejecución fuera de orden
HW y compilador

23
Superescalar vs
superpipelined
Superpipeline
Varias fases en menos de ½ ciclo
Dos fases en un ciclo

ENRIQUE MAFLA 24
Limitaciones del ILP con superescalar
Secuencia de instrucciones de un programa imponen limitaciones
*Dependencia verdadera de datos (RAW)
◦ ADD EAX, ECX EAX  EAX + ECX
◦ MOV EBX, EAX EBX  EAX
*Dependencia procedural (branches)
* CISC (longitud variable)  decodificar instrucción para conocer longitud
*Conflicto de recursos
* Memoria, cache, buses, puertos de registros, unidades funcionales (ALU)
* Duplicar recursos
*Dependencia de resultados (WAW)
*Antidependencia (WAR)
ENRIQUE MAFLA 25
Dependencias
MOV EAX, eff EAX  eff
MOV EBX, EAX EBX  EAX
◦ Eff –dirección efectiva MEM

Pipeline: LOAD demorada


Superescalar: inactivo

ENRIQUE MAFLA 26
Diseño superescalar
INDEPENDIENTES DEPENDIENTES
Load R1  R2 Add R3  R3, “1”
Add R3  R3, “1” Add R4  R3, R2
Add R4  R4, R2 Store [R4]  R0

Nivel de ILP = f(dependencias RAW y procedural = f (ISA, programa)


Latencia de operaciones = t cuando resultado está disponible
Paralelismo de máquina – medida de habilidad para aprovechar ILP
◦ Número de pipelines
◦ Mecanismos para encontrar instrucciones independientes

ENRIQUE MAFLA 27
Política de emisión de instrucciones
Procesador debe identificar ILP
Emisión de instrucciones: decodificación  ejecución
Procesador se adelanta al punto actual de ejecución
Ordenamientos para resolver dependencias y conflictos
◦ Orden de fetch
◦ Orden de ejecución
◦ Orden de actualización de registros / memoria
Políticas de emisión – protocolos para emitir instrucciones
1. Emisión en orden con finalización en orden (Ejecución secuencial)
2. Emisión en orden con finalización fuera de orden
3. Emisión fuera de orden con finalización fuera de orden
ENRIQUE MAFLA 28
Política 1 - ejemplo
Fetch/decode 2 instrucciones
2 unidades enteras
1 unidad FP
2 instancias WB
Código (6 instrucciones)
I1 – 2 ciclos
I3 e I4 – conflicto por ALU
I4I5 (RAW)
I5 e I6 – conflicto por ALU

ENRIQUE MAFLA 29
Política 2 – ejemplo
I2 finaliza antes de I1
Emisión se detiene
◦ Conflicto de recursos
◦ Dependencia de datos
◦ Dependencia procedural
Dependencia WAW
◦ I1: R3  R3 op R5
◦ I2: R4  R3 + 1
◦ I3: R3  R5 + 1 Finalización fuera de orden
◦ I4: R7  R3 op R4 • Requiere lógica de emisión mas compleja
Detener I3 hasta que finalice I1 • Mas difícil procesar interrupciones

ENRIQUE MAFLA 30
Política 3
Emisión en orden: decodificación hasta dependencia o conflicto
Emisión fuera de orden: desacoplar decodificación y ejecución
◦ Decodificación  ventana de instrucciones (buffer)
◦ Emisión de una instrucción desde la ventana
◦ Unidad funcional está disponible
◦ Sin conflictos ni dependencias

ENRIQUE MAFLA 31
Política 3 – ejemplo
Procesador tiene capacidad de anticipación
Identifica instrucciones independientes para llevarlas a ejecución
Antidependencia WAR
◦ I1: R3  R3 op R5
◦ I2: R4  R3 + 1
◦ I3: R3  R5 + 1
◦ I4: R7  R3 op R4
I3 no puede terminar ejecución antes que I2 empiece ejecución y haya FO
Reorder buffer – resultados fuera de orden y enviados a registros en orden

ENRIQUE MAFLA 32
Renombrar registros
Emisión y/o finalización fuera de orden  dependencias WAW o WAR
◦ Valores en registros no reflejan secuencia dictada por flujo de programa
◦ RAW y conflicto de recursos reflejan flujo de datos en la ejecución
◦ Emisión y finalización en secuencia  contenido de registros bien conocido
◦ Fuera de orden  valores en conflicto por el uso de registros  stall
◦ Optimización de registros  compilador maximiza uso de registros
Duplicar recursos: cambio de nombre de registros
◦ Procesador asigna registros dinámicamente
◦ Resultado de instrucción es registro  asignar nuevo registro
◦ Siguientes instrucciones renombran operandos  registros con valor requerido
ENRIQUE MAFLA 33
Ejemplo
I1: R3b  R3a op R5a
• R3c evita la dependencia WAR de I3 de I2 y la WAW de I1
WAW I2: R4b  R3b + 1 • I3 puede ser emitida imediatamente
WAR • Sin renombrar  I3 espera fin de I1 y emisión de I2
I3: R3c  R5a + 1

I4: R7b  R3c op R4b


Registro sin subíndice – registro lógico en la instrucción
Registro con subíndice – registro HW asignado para nuevo valor
Siguientes referencias como operando  valor mas reciente (secuencial)
ENRIQUE MAFLA 34
Paralelismo de la máquina
Duplicación de recursos, emisión fuera de orden, renombrar registros
Base (escalar)
• Sin duplicación
• Emisión fuera de orden
+ld/st
Duplicación FU acceso a cache
+alu
Duplicación de alu
+both
Duplicación ld/st + alu
*sin dependencias procedurales
Limitada por todas las Limitada solo por RAW
dependencias
ENRIQUE MAFLA 35
Predicción de branches
Branch demorado (RISC)
◦ Procesador ejecuta instrucción que sigue al branch
◦ Resultado de branch antes del prefetch de instrucciones “inútiles”
Superescalar
◦ Encontrar varias instrucciones para el “espacio de retardo”
◦ Predicción de branches (pre-RISC)

ENRIQUE MAFLA 36
Ejecución superescalar
RAW

Flujo dinámico commit si instrucción se


Análisis dependencias ejecuta en modelo secuencial
Flujo estático
secuencial
Ejecución: RAW y
recursos disponibles

ENRIQUE MAFLA 37
Implementación superescalar
IF de múltiples instrucciones; predecir resultados de branches
◦ Múltiples etapas de fetch y decodificación; lógica para predicción
Lógica para determinar RAW con valores de registros
◦ Comunicar valores a instrucciones durante la ejecución
Mecanismo para iniciar / emitir múltiples instrucciones en paralelo
Recursos para ejecución paralela
◦ Múltiples unidades funcionales y jerarquías de memoria con accesos+
Mecanismo para commit el estado del proceso en orden correcto

ENRIQUE MAFLA 38
Data paths y ejecución de instrucciones
Procesador simple
1. ISA – cuatro instrucciones
2. Programa ya esta en memoria
3. Ignora proceso de inicio; procesador ya está funcionando
4. Datos e instrucciones de 32 bits
5. Solo aritmética entera
6. Ignora condiciones de error
7. 16 registros de propósito general
8. Memoria de instrucciones y memoria de datos
ENRIQUE MAFLA 39
MIPS
MARS

ENRIQUE MAFLA 40
Memoria
Memory mapped I/O terminal registers

ENRIQUE MAFLA 41
Simple Procesor
add r4, r2, r3
◦ r4  r2 + r3
load r1, 20(r3)
◦ r1  (r3 + 20)
store r1, 20(r3)
◦ inverso de load
jump 60(r11)
◦ # PC  r11 + 60

ENRIQUE MAFLA 42
Contador de programa
Programa almacenado + reloj
Data path
PC: IF  IR Cables paralelos
Control (bits de IR)  ejecutar
PC  siguiente instrucción

ENRIQUE MAFLA 43
Fetch instrucciones
A
B

ENRIQUE MAFLA 44
Decodificación

ENRIQUE MAFLA 45
Unidad de
registros

ENRIQUE MAFLA 46
AL
U

ENRIQUE MAFLA 47
ME
M

ENRIQUE MAFLA 48
Preguntas, inquietudes, sugerencias

ENRIQUE MAFLA 49

También podría gustarte