Arquitectura de Computadores
description
Transcript of Arquitectura de Computadores
Arquitectura de Computadores Mejora del Rendimiento - 1
Arquitectura de Computadores
1. Introducción2. La CPU3. Lenguaje Máquina4. La Memoria5. Sistemas de Entrada/Salida6. Mejora del Rendimiento7. Arquitecturas RISC
Arquitectura de Computadores Mejora del Rendimiento - 2
Arquitectura de Computadores
6. Mejora del Rendimiento
1. CPU Segmentada (Pipeline)
1.2 Un ejemplo: DLX2. Memoria Caché
1. CPU Segmentada (Pipeline)
1.2 Un ejemplo: DLX
Mejora del Rendimiento - 3Arquitectura de Computadores
La CPU Segmentación (Un ejemplo: DLX)
Vamos a ver una simplificación (sin tener en cuenta instrucciones multiciclo, MMU, etc.)
Arquitectura RISC load/store
Arquitectura Harvard de memoria
5 etapas
IF: Extracción de la instrucción
ID: Decodificación / Acceso a registros
EX: Ejecución / Cálculo de operandos
MEM: Acceso a memoria
WB: Write Back (escritura en registros)
Cada etapa en un ciclo de reloj
Mejora del Rendimiento - 4Arquitectura de Computadores
Pipeline ...DLXI-
cach
é
Actualizar PC
Reg
. Ins
tr. D
-cac
hé
AL
U O
utpu
tA
lmac
enar
Reg
.
Dat
o de
Mem
.D
ato
a R
eg. M
UXA
LU
AL
U I
nput
1A
LU
Inp
ut 2
AL
U I
nput
3P
C
IF ID EX MEM WB
5
532
32
32
32
Escritura en registros
Lectura /Escritura
Reg
istr
os
Unidadde Saltos
32 SaltoNuevo PC
Mejora del Rendimiento - 5Arquitectura de Computadores
Pipeline ...DLX
IF:Extracción de la instrucción
IR = I_Cache [PC] IR es el Registro de Instrucción
PC = PC+4 PC es el Contador de Programa
ID: Decodificación / Acceso a registros
1 Subciclo:
Decodificar instrucción
2 Subciclo:
ALU_Input[1..2] = Registros (IR [25-21 , 20-16]) ó
ALU_Input[3] = IR[15-0] (Dir. Inmediatos) ó
Nuevo PC = Dir_Salto (en instrucciones de salto)
Mejora del Rendimiento - 6Arquitectura de Computadores
Pipeline ...DLX
EX Ejecución / Cálculo de operandos
Obtener ALU_Output
operación aritmética/lógica
dirección de memoria
…
MEM Acceso a memoria
Dato_a_Registro = ALU_Output ó
D_Cache [ALU_Output] = Almacenar_Reg
WB Write Back (escritura en registros)
Registros[] = Dato_a_Registro ó
Registros[] = Dato_de_Mem
Mejora del Rendimiento - 7Arquitectura de Computadores
Pipeline ...DLX
DLX Instrucciones Típicas
INSTRUCCIÓN OPERACIÓN EJEMPLO
NOP
LW Reg, Dir (Reg<-Mem[Dir]) LW r12, Vector(r4)
SW Dir, Reg (Mem[Dir]<- Reg) SW Vector(r4), r12
ADD/SUB RA,RB,RC (RA<-RB+RC) ADD R1,R2,R3
SGT RA,RB,RC(NE,EQ,LT,LE,GE)
RA =(RB>RC)?1:0 SGT R1,R5,R4
BEQZ RA,ETIQ IF RA=0 GOTO ETIQ BEQZ R1,BUCLE
SLLI RA,RB,X(SLL,SRL,SRLI)
RA<-RB<<2 SLLI R5,R5,2
Mejora del Rendimiento - 8Arquitectura de Computadores
Pipeline ...DLX
DLX Ralentización – Dependencias de Datos Sólo vamos a estudiar las RAW
WAW ocurren en cauces con más de un etapa de escritura y en ejecuciones fuera de orden
WAR cuando una etapa de escritura precede a una de lectura
IFlw R1,$100
lw R2,$200
add R2,R1,R2
sub R1,R2,R1
Tiempo
1 2 3 4 5 6 7 8
ID
IF
EX
ID
IF WB
MEM WB
MEM
EX
ID
IF
WB
MEM
EX
ID
WB
MEM
EXAntiguo R1
Nuevo R1
Mejora del Rendimiento - 9Arquitectura de Computadores
Pipeline ...DLX
SOLUCIÓN SOFTWARE (Insertar NOP por el compilador)
lw R1,$100
lw R2,$200
add R2,R1,R2
Tiempo
1 2 3 4 5 6 7 8
nop
nop
¿Habría bastado con una única instrucción NOP?
9
MEM WBIF ID EX
MEM WBIF ID EX
MEM WBIF ID EX
MEM WBIF ID EX
MEM WBIF ID EX
No hay conflicto
Se accede a los registros en el 2 subciclo de ID
Nuevo R1
Mejora del Rendimiento - 10Arquitectura de Computadores
Pipeline ...DLX
SOLUCIÓN HARDWARE (Detener el cauce)
lw R1,$100
lw R2,$200
add R2,R1,R2
Tiempo
1 2 3 4 5 6 7 8
Nuevo R1
9
sub R1,R2,R1
10
¡Cada dependencia RAW genera 2 burbujas!
Se ralentiza la ejecución del programa
IF ID
IF
EX
ID
IF
MEM
EX
IF
WB
MEM
IF
WB
ID
IF
EX
IF
MEM
IF
WB
ID EX
Mejora del Rendimiento - 11Arquitectura de Computadores
Pipeline …DLX
SOLUCIÓN HARDWARE (Anticipación)
add R2,R1,R2
Tiempo
1 2 3 4 5 6
sub R1,R2,R1
¡Eliminamos las burbujas!
¿Funciona para todas las instrucciones?
ALU
ALU
R2
AnticipaciónMEM WBIF EX
MEM WB
ID
IF ID EX
R2
Mejora del Rendimiento - 12Arquitectura de Computadores
Pipeline …DLX
SOLUCIÓN HARDWARE (Detener el cauce + Anticipación)
lw R1,$100
lw R2,$200
add R2,R1,R2
Tiempo
1 2 3 4 5 6 7 8 9
sub R1,R2,R1
10
Aparecen burbujas cuando hay instrucciones de acceso a memoria (lw)
El dato en una instrucción load (lw) está disponible tras la etapa MEM
Anticipación
MEM->EXIF MEMID EX
IF ID EX
IF ID
IF
WB
MEM WB
ID
WB
MEM
IF
EX
WB
ID
MEM
EXR2
R1
R2
Anticipación
EX->EX
Mejora del Rendimiento - 13Arquitectura de Computadores
Pipeline ...DLX
EJEMPLO – Sin anticipación (Forwarding)
lw R5,$100
slli R5,R5,2
sgt R1,R4,R5
Tiempo
1 2 3 4 5 6 7 8 9
ID
IF
IF IF IF
MEMIF ID EX WB Nuevo R5
MEM WBEX
EXEIF MEM
Mejora del Rendimiento - 14Arquitectura de Computadores
Pipeline …DLXDLX Ralentización – Motivos estructurales
DLX no tiene riesgos estructurales (Structural Stall).
Vamos a introducir algunas modificaciones en las etapas del cauce para provocar la aparición de riesgos estructurales.
Caso 1.- Supongamos que en la etapa MEM realizamos una escritura en los registros
Tiempo
1 2 3 4 5 6 7 8CASO 1
lw R1,$100
slli R5,R6,2
Banco de REGISTROS
Acceso simultáneoWBWB
MEMWB WBWB
IF ID EX
IF ID
MEMWB
EX
Mejora del Rendimiento - 15Arquitectura de Computadores
Pipeline ...DLX
Banco de REGISTROS
Acceso simultáneo
OTROS RIESGOS Utilización de la ALU (por ejemplo para actualizar el contador de
programa)
Una única memoria (accesos simultáneos desde las etapas IF y MEM).
Caso 2.- La etapa ID tiene dos subciclos (1º decodificación y 2º acceso a los operandos en el banco de registros).
Dividimos la etapa ID en dos: DEC, REG.
CASO 2
WBlw R5,$100
slli R5,R5,2Tiempo
1 2 3 4 5 6 7 8
…………………………
IF DEC REG MEMEX
IF DEC REG MEM WBEX
Mejora del Rendimiento - 16Arquitectura de Computadores
Pipeline ...DLXDLX Ralentización – Bifurcaciones
El problema aparece con las instrucciones de salto condicional
Detener el cauce, para conocer la siguiente instrucción a ejecutar, reduce su rendimiento
Calcular la dirección de salto lo antes posible (etapa ID) favorece la toma de decisiones y evita los riesgos de control
Implementación BTA (Branch Target Address): Nuevo registro interno
En la etapa ID se calcula la dirección del salto (desplazamiento sobre el PC), se guarda en BTA y se comprueba la condición de salto (consulta de un registro)
Política adoptada: Predicción estática de “no saltar”
En la etapa EX, si el salto se toma, se actualiza PC con BTA
Puede ocurrir dos situaciones:
No se toma el salto => Continua la ejecución
Se toma el salto => Vaciar el cauce
ACIERTO
Mejora del Rendimiento - 17Arquitectura de Computadores
Pipeline ...DLX
Bifurcaciones: NO se toma el salto
nop
beqz R1,SALIR
add R2,R3,R2
Tiempo
1 2 3 4 5 6 7 8 9
sub R5,R4,R6
10
SALIR: ……..
R1=1
IF ID
IFPC = PC + 4
EX
ID
IF WB
MEM WB
MEM
EX
ID
IF
WB
MEM
EX
ID
WB
MEM
EX
Predicción estática de “no saltar”
BTAC = PC +
despl.R1=1 → NO
SALTAR
Mejora del Rendimiento - 18Arquitectura de Computadores
Pipeline ...DLX
Bifurcaciones: SI se toma el salto
nop
beqz R1,SALIR
add R2,R3,R2
Tiempo
1 2 3 4 5 6 7 8 9
sub R5,R4,R6
10
SALIR: ……..
R1=0
IF ID
IF
EX
ID
IF
MEM
EX
Predicción estática de “no saltar”
PC = BTAC
¡¡SALTAR!!
Vaciar
IF WBMEM
WB
EX
WB
MEM
ID