Computadores
Facultad de Ingeniería Universidad de la República
Instituto de Computación Curso 2012
Algunas ideas para mejorar el rendimiento…
Obvio: incrementar la frecuencia del reloj
Mayor frecuencia –> mayor velocidad de procesamiento Pero…los tiempos de acceso a memoria y E/S pueden ser un cuello de botella… Mayor procesamiento por ciclo Mayor tasa de transferenciaNO mejora la velocidad de acceso Pero se puede direccionar más memoria directamente…
• Programas más grandes • Menos uso de la memoria virtual. OK!
Ancho de los registros
Ancho del bus de datos
Ancho del bus de direcciones
Más ideas para mejorar el rendimiento
(Obs: aún no manejamos definiciones formales asociadas al rendimiento de una arquitectura) Pipelining On board cache On board L1 & L2 cache Branch prediction Data flow analysis Ejecución especulativa …..
Pipelining
A
B
C
D
Ejemplo Lavandería
Ana, Beto, Carina, David tienen cada uno una carga de ropa para lavar, secar y ordenar Lavadora lleva 30 minutos Secadora lleva 40 minutes “Ordenar” lleva 20 minutos
Lavandería Secuencial
6 PM 7 8 9Tiempo O r d e n T a r e a s
10
11
Medianoche
30 40 20 30 40 20 30 40 20 30 40 20 A B C D
• Lavandería secuencial lleva 6 horas para 4 cargas
Lavandería en Pipeline
6 PM
O r d e n T a r e a s
7 40
8 40
9
Tiempo
10
11
Medianoche
30 40 A B C D
40 20
• Lavandería en Pipeline lleva 3.5 horas para 4 cargas!
Lecciones del Pipeline
6 PM
O r d e n T a re a s
7
8
9
Tiempo
30 40 A B C D
40
40
40 20
•Pipelining no mejora la latencia de cada tarea, sino el throughput de toda la carga de trabajo •Velocidad del Pipeline limitada por el paso más lento •Tiempo para “llenar” y “vaciar” el pipeline reduce la aceleración
Pipeline primitivo:
Prefetch (o pipeline de dos etapas)
(1/2)
Pipeline primitivo:
Prefetch (opipeline de dos etapas)
(2/2)
Fetch accede a memoria principal Mientras la etapa de ejecución no accede a memoria, se puede buscar la próxima instrucción
Prefetch de instrucciones Fetch usualmente más corto que la ejecución Saltos condicionales e interrupciones pueden provocar descarte de las instrucciones cargadas mediante prefetch
Mejora el rendimiento, pero no lo duplica:
Más etapas de pipeline para mejorar performance?
Ejemplo de etapas de pipeline
Fetch de instrucción (FI) Decodificar instrucción (DI) Calcular operandos (CO) Fetch de operandos (FO) Ejecutar instrucción y escribir registro (EI) Escribir operando en memoria (WO)
Tiempos del Pipeline
Etapas de igual duración Sin saltos Sin conflictos de acceso a memoria yregistros
Aceleración del Pipeline
Pipeline de k etapas, cada una de duración T Tiempo de ejecución de n instrucciones
Sin pipeline: Ttot= nkT Con pipeline: Ttot= [n + k -1]T
Aceleración: S = nk / [n + k - 1]
Problemas del pipeline
Límites del pipeline: los hazards (obstáculos) pueden impedir que se alcance la aceleración teórica
Hazardsestructurales: conflicto de HW entre dos o más etapas del pipeline para alguna combinación de instrucciones Hazards de datos: dependencias de datos entre instrucciones. Ej., la ejecución de una instrucción depende de un resultado de otra previa, que aún está en el pipeline Hazards de control: causados por instrucciones de salto u otras modificaciones del registro PC
Penalización por saltos
La I3es una bifurcación condicional a I15
Si se toma el salto hay que vaciar el pipeline
Otro pipeline (Similar MIPS)
Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc Memory Access Write Back
Next PC
Zero?
MUX
Add
4
RS1
MEM/WB MEM/WB MEM/WB
EX/MEM
Reg File
Memory
MUX
RS2
ID/EX ID/EX ID/EX
IF/ID IF/ID IF/ID
ALU ALU ALU
Sign...
Regístrate para leer el documento completo.