Está en la página 1de 72

1 - 72 Unidad 2

Organización de las Computadoras

Leonardo Giovanini

Microarquitectura
segmentada

Organización de las Computadoras L. Giovanini © 2022


2 - 72 Unidad 2

Contenidos

5.1 Arquitectura frente a implementación


5.2 Microarquitectura de la CPU - Implementación pipeline
5.3 Riesgos de datos
5.4 Riesgos de control

Organización de las Computadoras L. Giovanini © 2022


3 - 72 Unidad 2

Arquitectura frente a implementación

Organización de las Computadoras L. Giovanini © 2022


4 - 72 Unidad 2
Arquitectura frente a implementación
Microarquitectura del procesador

La microarquitectura describe cómo se implementa el comportamiento descrito por el ISA a


través de un sistema digital. La microarquitectura define cómo cada una de las señales digitales
se enruta y manipula.
La microarquitectura se representa como diagramas de bloques que describen las
interconexiones de los diversos elementos de la microarquitectura.

Las unidades de ejecución (unidades lógicas aritméticas,


unidades de puntos flotantes, unidades de carga /
almacenamiento, periféricos y predicción de salto, entre
otras) son esenciales para la definición de la
microarquitectura, ya que realizan las operaciones del
procesador.
Buses del sistema
La elección del número de unidades de ejecución, su
interconexión, su latencia y rendimiento es una tarea
central en el diseño de microarquitectura.

Las decisiones de diseño de la microarquitectura afectan directamente al desempeño general


del sistema, prestando atención a temas tales como el costo, el consumo de energía, la
conectividad y la capacidad de depuración.

Organización de las Computadoras L. Giovanini © 2022


5 - 72 Unidad 2
Arquitectura frente a implementación
Microarquitectura del procesador
La CPU está compuesta por tres bloques: Software de
Programas
aplicación
Un banco de registros donde se almacenan los
datos e información;
Sistema operativo Drivers
Una ALU donde se procesan los datos; y
Compiladores
Una unidad de control que interpreta las Lenguajes
instructiones y ejecuta las acciones necesarias Ensamblador

para su ejecución. Instrucciones,


Direccionamiento
Arquitectura
Registros, Memoria,
La sección de datos (registros y ALU) es conocida Modos operación
como datapath. Camino de datos
Microarquitectura
Controladores
Sumadores
Unidades
Combinacional
funcionales
Memoria

Circuitos digitales Compuertas

Dispositivos Transistores

Componentes Máscaras
físicos Semiconductores

Organización de las Computadoras L. Giovanini © 2022


6 - 72 Unidad 2
Arquitectura frente a implementación
Microarquitectura del procesador
La microarquitectura más simple es
la implementación monociclo.
Clk MO
La unidad de control se implementa a
través de un circuito combinacional.
Esto simplifica su diseño e
implementación circuital (circuito Generación
Búsqueda Búsqueda
digital muy simple).
Lectura /
de Escritura
de de Ejecución Escritura de
señales de de registro
instrucción operandos memoria
control
Pero, todas las instrucciones se
ejecutan en un sólo ciclo de reloj.

Por lo que el reloj debe tener un

Reg
PC
Lógica combinacional acíclica

periodo igual tiempo de ejecución de


la instrucción más lenta.

de instrucciones
Registro de

combinacional
Decodificador

banco reg

memoria
Instruc

Entrada

Entrada
programa

Escritura
Memoria

Memoria
registros

Entrada
Lectura

registro
Salida

Reg
Lógica

ALU
ALU

datos
PC

de

de

de
de
Reloj

Tiempo
Clk MU Por lo que las instrucciones
requerido rápidas desperdician tiempo
Tiempo
de ejecución.
asignado

Organización de las Computadoras L. Giovanini © 2022


7 - 72 Unidad 2
Mem_W
Mem_R

La microarquitectura del ALU_Op, SHAMT


Data_T
ALU_S
Unidad
procesador
Reset
Clock Reg_W
de Dato_S
CLK

Microarquitectura del procesador Control


Reset Branch
Reg
Jump

Las instrucciones más lentas


son las instrucciones son las 0

1 PCJUMP

instrucciones de carga (tipo I) +


3
opcode,
funct3, funct7
shamt
RD2 [0:4] Banderas

y almacenamiento de datos 4 0
2
1
PCk+1 PCk
A RD
INST(k)
rs1

rs2
A1 RD1
Op1

(tipo S).
0 A2 RD2
1 + Memoria rd
ALU
de A3 Op2 A RD
PCNEXT 0
Dirección Programa
Estas instrucciones involucran WD1 1 Memoria
de reset
Banco de
Gen M2 Datos
de
las todas las etapas de la Imm
Immediato
Registros
Data_R
WD

ejecución de un instrucción, Data_JR Gen


Datos
Data_M

incluyendo el acceso a la PCNEXT


3

memoria de datos. 2
1
0
ALU_R

Reloj
PC
Las instrucciones más rápidas son las instrucciones son las
Memoria instrucciones de salto (tipo S) y operación con datos en
de Programa registros (tipo U). Estas instrucciones sólo involucran las
Banco
de Registros
etapas de la decodificación y ejecución.
ALU Con un periodo fijo, las instrucciones rápidas desaprovechan
Memoria tiempo.
de Datos
En los repertorios reales existen coexisten instrucciones
Organización de las Computadoras lentas con muy rápidas. L. Giovanini © 2022
8 - 72 Unidad 2

Implementación segmentada

Organización de las Computadoras L. Giovanini © 2022


9 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
Para mejorar el desempeño del procesador se divide la ejecución de la instrucción en
etapas más pequeñas, de modo sólo utilicen las etapas necesarias y el periodo del reloj
esté determinado por la etapa más lenta.

Búsqueda Búsqueda Lee /


de de Almacena
instrucción operando operando

Cálcula Cálcula Cálcula


Decodifica
dirección dirección dirección Escribe
de Ejecución
de de de registro
instrucción
instrucción operando operando

Busqueda de Decodificación Ejecución de instrucción Operaciones con Escritura de


instrucción de instrucción memoria registro
Fetch Decode Execute Data memory Write back

Organización de las Computadoras L. Giovanini © 2022


10 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
Esta idea requiere de elementos para almacenar valores generados por los diferentes
bloques del procesador.

Clk MO

Búsqueda Generación Búsqueda Lectura /


de Escritura
de de Ejecución Escritura de
señales de de registro
instrucción operandos memoria
control

Reg
PC

Lógica combinacional acíclica


de instrucciones

combinacional
Registro de

Decodificador

banco reg

memoria
Instruc

Entrada

Entrada
programa

Escritura
Memoria

Memoria
registros

Entrada
Lectura

registro
Salida

Reg
Lógica

ALU

datos
ALU
PC

de

de

de
de

Organización de Clk
las MU
Computadoras L. Giovanini © 2022
11 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
De manera de aprovechar la diferencia de tiempos de ejecución de las instrucciones. Por
ejemplo,
 Una instrucción tipo R sólo utilizará 3 ciclos (Fech, Decode y Execute),
 Una instrucción tipo S utilizará 5 ciclos (Fech, Decode, Execute, Data Memory y
Writeback) y
 Una instrucción tipo B sólo utilizará 3 ciclos (Fech, Decode y Execute).
andi r3, r3, 011 sw r3, r6, B000 addi r2, r2, -1 bneq r2, r0, -24
Reloj

Tiempo
Monociclo requerido

Tiempo
asignado

Reloj

Tiempo Tiempo
Segmentada requerido ahorrado

3 ciclos 4 ciclos 3 ciclos 3 ciclos


Tiempo
asignado
Organización de las Computadoras L. Giovanini © 2022
12 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
Esta idea requiere de elementos para almacenar valores generados por los bloques de la
implementación monociclo del procesador.

RD2 [0:4] Banderas


Reset
0 Dirección
de CLK CLK CLK CLK CLK
1 excepción Reg_W ALU_Op,
+ SHAMT
Mem_W
3 Mem_R
2 rs1
A RD A1 RD1
4 0 1 rs2
0 A2 RD2
1 + Memoria rd
ALU
de A3 0
A RD
Dirección
Programa 1
de reset WD1 Memoria
Banco de
Gen
de Datos
Immediato Data_R
Registros WD
Imm
Data_JR Gen
Datos
Data_M

PCNEXT
3
2
1
0
ALU_R

Organización de las Computadoras L. Giovanini © 2022


13 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada

Como cada bloque del procesador queda libre una vez finalizada cada etapa de la
instrucción, este puede utilizarse para iniciar la ejecución de la próxima instrucción.
La idea detrás de la implementación segmentada es aprovechar los recursos del
procesador disponibles para paralelizar la ejecución de las instrucciones.

Ciclos de 0 1 2 3 4 5 6 7 8
procesador (k)
Orden de ejecución
Write
K=1 add r5, r5, +4 Fetch Decode Execute
Back
Write
K=2 lw r2, r5, 000 4 ciclos Fetch Decode Execute
Back

K=3 addi r3, r3, -1 4 ciclos Fetch

Write
K=1 add r5, r5, +4 Fetch Decode Execute Tiempo
Back
Write ahorrado
K=2 lw r2, r5, 000 Fetch Decode Execute
Back
1 ciclo
Write
K=3 addi r3, r3, -1 2 ciclos Fetch Decode Execute
Back

Organización de las Computadoras L. Giovanini © 2022


14 - 72 Unidad 2
0

1 PCJUMP
+ opcode,
funct3, funct7 RD2 [0:4] Banderas
3 shamt
PCk+1 PCk rs1 Op1
2
1
A RD A1 RD1
4 0
INST(k) rs2
0 A2 RD2
1 + Memoria rd
ALU
de A3 Op2
A RD
PCNEXT 0
Dirección Programa Memoria
WD1 1
de reset
Banco de
Gen M2 Datos
Immediato
de
Data_R
Registros WD
Imm
Data_JR Gen
Datos
Data_M
Mem_W
Mem_R
ALU_Op
Data_T PCNEXT
Clock Unidad ALU_S 3
Reg_W
de Reg_W 2
Reset Control Dato_S 1
S
0
B
Reg ALU_R
Jump

S
Jump CLK CLK CLK CLK CLK CLK CLK
ALU_Op
B
shamt shamt
Sel
Reg_W
Mem_W
Data_T
SHAMT Mem_R
RD2 [0:4]
3 INST(k)
PCk rs1 ALU_R
2
1
A RD A1 RD1
rs2 Cond
0 A2 RD2
Memoria rd rd
ALU
ALU_R Gen
de A3 0 A RD Datos
Programa 1 Memoria
Dirección WD1
de reset Banco Reg Branch de
Gen Datos
Immediato
de
Registros Gen
Datos
WD
rd

Data_JR
1
PCJUMP
0
+ Dato_S
Imm Imm
PCk+1
+
PCNEXT
+1 0 PCBRAN
+
1

3
2
1
0

Búsqueda de instrucción Decodificación Búsqueda de operando Operación en ALU Operaciones en memoria Escritura de registro
(Instruction Fetch) (Decode) (Operand Fetch) (Execute) (Data Memory) (Write Back)

Organización de las Computadoras Ejecución


(Execute)
L. Giovanini © 2022
15 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada

Visualizando la segmentacion: Ciclo 1

Mem Mem
Inst 1 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 2 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 3 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 4 de
Inst
Reg ALU de
Dato
Reg

Mem Mem

Inst 5 de
Inst
Reg ALU de
Dato
Reg

Organización de las Computadoras L. Giovanini © 2022


16 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
Mem Mem

Visualizando la segmentacion: Ciclo 2 de


Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 1 de
Inst
Reg ALU de
Dato
Reg

Inst 2
Mem Mem
de Reg ALU de Reg
Inst Dato

Inst 3
Mem Mem
de Reg ALU de Reg
Inst Dato

Inst 4
Mem Mem
de Reg ALU de Reg
Inst Dato

Inst 5

Organización de las Computadoras L. Giovanini © 2022


Mem Mem
de Reg ALU de Reg
17 - 72 Inst Dato Unidad 2
La microarquitectura del procesador
C

Implementación segmentada
Mem Mem

Visualizando la segmentacion: Ciclo 3 de


Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 1 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 2 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 3 de
Inst
Reg ALU de
Dato
Reg

Inst 4

Inst 5

Organización de las Computadoras L. Giovanini © 2022


Mem Mem
de Reg ALU de Reg
18 - 72 Inst Dato Unidad 2
La microarquitectura del procesador
C

Implementación segmentada
Mem Mem

Visualizando la segmentacion: Ciclo 4 de


Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 1 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 2 de
Inst
Reg ALU de
Dato
Reg

Inst 3

Inst 4

Inst 5

Organización de las Computadoras L. Giovanini © 2022


Mem Mem
de Reg ALU de Reg
19 - 72 Inst Dato Unidad 2
La microarquitectura del procesador
C

Implementación segmentada
Mem Mem

Visualizando la segmentacion: Ciclo 5 de


Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 1 de
Inst
Reg ALU de
Dato
Reg

Inst 2

Inst 3

Inst 4

Inst 5

Organización de las Computadoras L. Giovanini © 2022


20 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
Visualizando la segmentacion: Ciclo 1
1 2 3 4 5 6 7 8
Ciclos de
procesador C

Mem Mem
Inst 1 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 2 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 3 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 4 de
Inst
Reg ALU de
Dato
Reg

Mem Mem

Inst 5
de Reg ALU de Reg
Inst Dato

Organización de las Computadoras L. Giovanini © 2022


21 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
Visualizando la segmentacion: Ciclo 2
1 2 3 4 5 6 7 8
Ciclos de
procesador

Mem Mem
Inst 1 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 2 de
Inst
Reg ALU de
Dato
Reg

Inst 3
Mem Mem
de Reg ALU de Reg
Inst Dato

Inst 4
Mem Mem
de Reg ALU de Reg
Inst Dato

Mem Mem
Inst 5 de
Inst
Reg ALU de
Dato
Reg

Organización de las Computadoras L. Giovanini © 2022


22 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
Visualizando la segmentacion: Ciclo 3
1 2 3 4 5 6 7 8
Ciclos de
procesador C

Mem Mem
Inst 1 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 2 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 3 de
Inst
Reg ALU de
Dato
Reg

Mem Mem

Inst 4 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
de Reg ALU de Reg
Inst 5 Inst Dato

Organización de las Computadoras L. Giovanini © 2022


23 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
Visualizando la segmentacion: Ciclo 4
1 2 3 4 5 6 7 8
Ciclos de
procesador C

Mem Mem

Inst 1 de
Inst
Reg ALU de
Dato
Reg

Mem Mem

Inst 2 de
Inst
Reg ALU de
Dato
Reg

Mem Mem

Inst 3 de
Inst
Reg ALU de
Dato
Reg

Mem Mem

Inst 4
de Reg ALU de Reg
Inst Dato

Mem Mem
de Reg ALU de Reg

Inst 5 Inst Dato

Organización de las Computadoras L. Giovanini © 2022


24 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
Visualizando la segmentacion: Ciclo 5
1 2 3 4 5 6 7 8
Ciclos de
procesador C

Mem Mem
Inst 1 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 2 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 3 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
Inst 4 de
Inst
Reg ALU de
Dato
Reg

Mem Mem
de Reg de Reg
Inst 5
ALU
Inst Dato

Organización de las Computadoras L. Giovanini © 2022


25 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada
La unidad de control es similar que la implementación monociclo (circuito combinacional)
pero con las señales retardadas a lo largo de los bloques.

CLK CLK CLK CLK

Mem_W
Mem_R
ALU_Op
Data_T
Clock ALU_S
Reg_W
Reg_W
Reset Dato_S
S
B
Reg
Jump
Jump CLK CLK
CLK S
ALU_Op
Unidad B
shamt
de shamt
Sel
Control Reg_W
Mem_W
Data_T
SHAMT Mem_R
RD2 [0:4]
3
PCk rs1 ALU_R
2
A RD A1 RD1
1 rs2
0 Cond
A2 RD2
Memoria
rd
ALU
de A3
ALU_R Gen
0 A RD Datos
Programa
Dirección WD1 1 Memoria
de reset Banco de
Reg Branch
de Datos
Registros Gen
Datos
WD
rd rd

Data_JR
1
PCJUMP
0
+ Dato_S

INST(k) Gen Imm Imm


+ PCk+1 Immediato

+1 PCNEXT
0 PCBRAN
+
1

3
2
1
0
Organización de las Computadoras L. Giovanini © 2022
26 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada - Supersegmentación

El tiempo necesario para ejecutar una instrucción es

t = t Fetch Inst + t Decode + t Fetch Op + t Execution + t Writeback

Un pipeline de n-etapas permite la ejecucion “simultánea teórica” de n instrucciones.

Cada etapa del pipeline realiza 1/n del trabajo total necesario. Por lo tanto

Cada etapa solo requiere un tiempo t/n suponiendo que la microarquitectura esta
perfectamente balanceada.
Por balanceado se entiende que cada1 etapa requiere el mismo tiempo para su
ejecucion. 2
3
4
5
Instrucciones


La frecuencia de reloj del procesador
es fpipe = 1/(t/n) = n/t 1
2
3
¿Si incrementamos n, incrementamos 4
la potencia del procesador? 5

0 1 2 3 4 5 6 7 8 9
Organización de las Computadoras Ciclos de máquina L. Giovanini © 2022
27 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada - Supersegmentación

Incrementar la longitud del pipeline puede conducir a deterioros del desempeño global del
procesador por que

Los pipelines necesitan mas tiempo para llenarse; y

Necesitan mas espacio de circuiteria en el circuito integrado.

Las instrucciones mas comunes 3.0


(aritmeticas, movimientos de datos,
2.5
saltos condicional) pueden iniciarse y
ejecutarse de manera independiente. Desempeño Relativo 2.0

La mayoria de las operaciones 1.5


involucran cantidades escalares, por
lo que mejorar el desempeño de estas 1.0
operaciones conduce a una mejora al
desempeño general del procesador 0.5

0.0
1 2 4 8 16
Organización de las Computadoras Profundidad del Pipeline
L. Giovanini © 2022
28 - 72 Unidad 2

Riesgos de datos

Organización de las Computadoras L. Giovanini © 2022


29 - 72 Unidad 2
La microarquitectura del procesador
Los riesgos

Los riesgos son situaciones que imposibilitan el comienzo de la ejecución de la


próxima instrucción en el próximo ciclo.
Se clasifican en:

Riesgos estructurales: Un recurso requerido para la ejecución esta ocupado;

Riegos de Datos: Se necesita esperar a que se complete una instrucción previa para
disponer del dato necesario en la instrucción actual. Por ejemplo


Riegos de Control: La decision sobre una acción de control de flujo de programa
depende de una instrucción previa. Por ejemplo

Organización de las Computadoras L. Giovanini © 2022


30 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos
Los riesgos de datos ocurren cuando una instrucción se refiere a un resultado que aún no se
ha calculado o recuperado.

En estas situaciones, las instrucciones muestran la dependencia de los datos que modifican
los datos en diferentes etapas del datapath.
Hay tres situaciones en las que puede ocurrir un peligro de datos:
* Lectura despues de una escritura (Read-After-Write) refiere a una situación en la que una
instrucción se refiere a un resultado que aún no se ha calculado o recuperado. Esto puede
ocurrir porque aunque una instrucción se ejecuta después de una instrucción anterior que ha
sido procesado parcialmente por el dataph (Dependencias de datos).

* Escritura despues de una lectura (Write-After-Read) refiere a una situación en la que una
instrucción escribe antes de que otra la lea (Dependencias de nombre).
* Escritura despues de una escritura (Write-After-Write) refiere a una situación en la que dos
instrucciones sucesivas escriben el mismo registro, presentando una dependencia de nombre
(Reutilización de registros).
Los mecanismos de ejecución deben preservar el orden del programa.
Organización de las Computadoras Mismo resultado que en ejecución secuencial. L. Giovanini © 2022
31 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos

Dependencias canalizadas en una secuencia de cinco instrucciones que utilizan rutas de


datos simplificadas para mostrar las dependencias.

1 2 3 4 5 6 7 8
Orden de
ejecución
x1
Mem sub Mem x2
sub x2, x1, x3 de Reg
x3
ALU de C Reg
Inst Dato

x12
Mem and Mem x5
and x12, x2, x5 de
Inst
Reg
x2
ALU de Reg
Dato

x6
Mem or Mem x13
or x13, x6, x2 de
Inst
Reg
x2
ALU de
Dato
Reg

x2
Mem add Mem x14
add x14, x2, x2 de
Inst
Reg
x2
ALU de
Dato
Reg

Organización de las Computadoras L. Giovanini © 2022


32 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos
Las dependencias entre los registros avanzan en el tiempo, por lo que es posible suministrar a la
ALU las entradas requeridas por las instrucciones adelantando los resultados en el datapath.
Los valores en los registros del datapath muestra que el valor deseado está disponible antes de que
se lo escriba en el registro. Suponemos que el registro reenvía los valores que se leen y escriben
durante el mismo ciclo de reloj, pero los valores provienen del registro en lugar de un registro del
datapath.
La solución al riesgo generado por una lectura antes de una escritura es el adelanto de los datos.
1 2 3 4 5 6 7 8
Orden de
ejecución
x1
Mem sub Mem x2
sub x2, x1, x3 de Reg ALU de C Reg
Inst x3 Dato

x12
Mem and Mem x5
and x12, x2, x5 de
Inst
Reg
x2
ALU de
Dato
Reg

x6
Mem or Mem x13
or x13, x6, x2 de
Inst
Reg
x2
ALU de
Dato
Reg

x2
Mem add Mem x14
add x14, x2, x2 de
Inst
Reg
x2
ALU de
Dato
Reg

Organización de las Computadoras L. Giovanini © 2022


33 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos – Adelanto de los datos
La unidad de adelanto de datos estará en la etapa ejecución porque la ALU se encuentra
en esta etapa. Por lo tanto, debemos pasar los registro de operandos desde la etapa de
decodificación a través del registro de canalización para determinar si se deben adelantar los
datos.
Antes de incluir la unidad de adelanto de datos, el registro no tenía necesidad de incluir
espacio para guardar rs1 y rs2.
Las condiciones para detectar los riegos y las señales de control para resolverlas son:

Operando 1 Operando 2

IF Reg_W Mem = 1 THEN IF Reg_W Mem = 1 THEN


IF rs1 Mem = rs1 THEN F Op1 = 01 IF rs2 Mem = rs2 THEN F Op2 = 01
IF rs1 WB = rs1 THEN F Op1 = 10 IF rs2 WB = rs1 THEN F Op2 = 10
ELSE ELSE
F Op1 = 00 F Op2 = 00
END END

Organización de las Computadoras L. Giovanini © 2022


34 - 72 Unidad 2
CLK
La microarquitectura
CLK
del procesador
CLK CLK

Riesgos de datos – Adelanto de los datos


Reg_W
Dato_S
Mem_W
Clock Estas reglas se implementan de la siguiente manera
Mem_R
Data_T

Reset
ALU_Op
S
CLK ALU_S
Unidad CLK
shamt
de shamt Reg_W ME Reg_W WB
Sel
Control Reg_W RD2 [0:4]
Mem_W
Data_T
SHAMT Mem_R

rs1 0
A1 RD1 1
rs2 2
A2 RD2
ALU ALU_R
0 Gen
A3 A RD
1 0 Datos
WD1 2 1 Memoria
Banco de
de Datos
0
Registros Gen
1 WD
Datos
rd 2
ALU_R

Dato_S
INST(k) Gen Imm Imm
Immediat
o
FOp1 FOp2
rd rd MEM
rs1
rs2 FMem
rd MEM
Unidad de rd WB
Adelanto

3
rd WB
2
1
0
Organización de las Computadoras L. Giovanini © 2022
35 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos – Adelanto de los datos
CLK CLK CLK CLK

Reg_W
Dato_S
Mem_W
Mem_R
Clock Data_T

ALU_Op
Reset S Reg_W
ALU_S

Jump
B
Jump CLK CLK Reg
Reg_W
Unidad shamt shamt
de Sel Reg_W
CLK RD2 [0:4]
Control Mem_W
SHAMT Data_T
Mem_R
ALU_Op B
3
PCk rs1 0
2
A RD A1 RD1 1
1
rs2 2 Cond
0 A2 RD2
Memoria rd
ALU ALU_R
0 Gen
de A3 A RD
1 0 Datos
Programa 2
Dirección WD1 1 Memoria
de reset Banco Reg de
Branch
de 0
Datos
Registros Gen
1
Datos
WD
rd 2 ALU_R
Data_JR
1
0 PCJUMP
+ Dato_S

INST(k) Gen Imm Imm


PCk+1 Immediat
+ o

+1 PCNEXT
0 PCBRAN
+
1
rd rd
rs1
FOp1 FOp2
rs2
FMem
rd rd 3
2
1
0

Unidad de
Adelanto

Organización de las Computadoras L. Giovanini © 2022


36 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos - Detención

Los riesgos generados por una lectura antes de una escritura no pueden ser solucionados
con adelanto de datos por que el dato no está disponible.
1 2 3 4 5 6 7 8
Orden de
ejecución
x0
Mem lw Mem x2
C
lw x2, 40(x0) de
Inst
Reg
40
ALU de
Dato
Reg

x12
Mem and Mem x5
and x12, x2, x5 de
Inst
Reg
x2
ALU de
Dato
Reg

x6
Mem or Mem x13
or x13, x6, x2 de
Inst
Reg
x2
ALU de
Dato
Reg

x2
Mem add Mem x14
sub x14, x5, x2 de
Inst
Reg
x2
ALU de
Dato
Reg

Estos riesgos se eliminan deteniendo de la etapa (stall) que presenta la dependencia, de


modo que el dato pueda ser leido.
Organización de las Computadoras L. Giovanini © 2022
37 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos - Detención

Hay dos tipos de detenciones :

Burbujas: son instrucciones NOP insertadas entre dos instrucciones en el datapath.



Evita que las instrucciones anteriores del datapath (adelantadas en el código)
progresen por el datapath en un ciclo (las adelanta con las señales de control de
escritura);

Inserta una NOP poniendo a cero los bits de control en el registro del datapath en las
fases adecuadas;

Hace que las instrucciones posteriores en el datpath (anteriores en el código)
progresen normalmente.

Vacíado: todas las instrucciones del datapath son sustituidas con instrucciones NOP.

Resetea los bits de control para la instrucciones que deben ser eliminadas

Organización de las Computadoras L. Giovanini © 2022


38 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos - Detención

Una secuencia instrucciones en un datapath segmentado en el cual la dependencia entre


las instrucciones de carga (lw) y la siguiente (and) retrocede en el tiempo.
Por lo tanto, no se puede resolver mediante el adelanto de datos. Por lo tanto, esta
combinación debe dar lugar a una detención del datapath por el riesgo generado.

1 2 3 4 5 6 7 8
Orden de
ejecución
x0
Mem lw Mem x2
C
lw x2, 40(x0) de
Inst
Reg
40
ALU de
Dato
Reg

x12 x12
Mem and Mem x5
and x12, x2, x5 de
Inst
Reg
x2
Reg
x2
ALU de
Dato
Reg

x6
Mem or Mem or Mem x13
or x13, x6, x2 de
Inst
de
Inst
Reg
x2
ALU de
Dato
Reg

Burbuja x2
Mem add Mem x14
sub x14, x5, x2 de
Inst
Reg
x2
ALU de
Dato
Reg

Organización de las Computadoras L. Giovanini © 2022


39 - 72 1 2 3 4 5 6 7 8 Unidad 2
Orden de
ejecución
x1
Mem sub 20(x1) Mem x2
lw x2, 20(x1)
de
Inst
Reg
x3
ALU de
Dato
Reg
Burbujas
C
insertadas
x4
Mem and Mem x5
de Reg de Reg
and se transforma en nop Inst x2
ALU
Dato

x6
Mem or Mem x13
and x4, x2, x5 de
Inst
Reg
x2
ALU de
Dato
Reg

x2
Mem add Mem x14
1 2 3 de 4 5
Reg 6ALU 7de 8 Reg
or x8, x2, x6 Inst x2 Dato
Orden de
C
ejecución
x1
Mem sub 20(x1) Mem x2
de Reg de Reg
lw x2, 20(x1) Inst x3
ALU
Dato

x4
Mem and Mem x5
de Reg de Reg
and se transforma en nop Inst x2
ALU
Dato

x4
x5
and x4, x2, x5 detenida Mem
de
and
Reg
x2
ALU
Mem
de Reg
Inst Dato
en Decode
C

x2
Mem or
add Mem x14
or x8, x2, x6 detenida de Reg
x2
ALU de Reg
Inst Dato
en Fetch
C

Organización de las Computadoras L. Giovanini © 2022


40 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos - Detención

Necesitamos una unidad de detección de peligros que funcione durante la etapa de


decodificación para que pueda insertar el bloqueo entre la carga y las instrucciones que
dependen de ella.
Comprobando las instrucciones de carga esta condición

IF Mem_R = 1
IF rd = rs1 OR rd = rs1 THEN En = 0
ELSE
En = 1
END

Si la instrucción en la etapa de decodificación es detenida, la instrucción en la etapa de


búsqueda también debe ser detenida, de lo contrario, perderíamos la instrucción leída de
la memoria.
Evitar que estas dos instrucciones avancen se logra simplemente impidiendo que el
registro del contador de programa PC y el registro del datapath también.

Organización de las Computadoras L. Giovanini © 2022


41 - 72 Unidad 2
La microarquitectura del procesador CLK CLK

Riesgos de datos - Detención Reg_W


Dato_S
Clock
Mem_W

Esta regla se implementa Reset


Mem_R
Data_T

de la siguiente manera ALU_Op


S
ALU_S
CLK CLK
Jump CLK
Unidad shamt shamt
de Sel
Control Reg_W
SHAMT
AL
PCk rs1 0
A RD A1 RD1 1
rs2 2
A2 RD2
Memoria rd
ALU
0
de A3
1 0
Programa 2 1
WD1
Banco
de 0
Registros 1
rd 2

INST(k) Gen Imm


Immediat
o
rd

FOp1 FOp2
FMem

rs1 rd
Unidad de
rs2 Adelanto

En En INST(k) En

rd
Unidad de Detención
Mem_R DF

Reset

Organización de las Computadoras L. Giovanini © 2022


42 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos

El orden en que se ejecutan determinan el tiempo necesario para ejecutarlo en un


procesador con arquitectura segmentada.
Programa 1
Por ejemplo, el programa 1 necesita 13 ciclos, en lugar
de los 11 ciclos teoricos, debido a que el procesador debe
introducir dos detenciones (stall) debido a los riesgos de
datos originados por las intrucciones de carga (lw). Riesgo

Programa 2
Riesgo

lw $x1, 40($x10)
lw $x2, 44($x10)
lw $x4, 48($x10)
Mientras que el programa 2 solo necesita 11 ciclos, en
add $x3, $x1, $x2
coincidencia con los ciclos teoricos requeridos, debido a que el
sw $x3, 52($x10)
programa ha sido reordenado para evitar los riesgos de datos
add $x5, $x1, $x4
originados por las intrucciones de carga (lw).
sw $x5, 56($x10)

Organización de las Computadoras L. Giovanini © 2022


43 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de datos
CLK CLK CLK CLK
Reg_W

Reg_W
Dato_S
Mem_W
Mem_R
Clock
Data_T

ALU_Op
Reset
S
ALU_S

Jump
B
Jump CLK CLK Reg
Unidad shamt Reg_W shamt
de Sel Reg_W
Dirección CLK RD2 [0:4]
de reset Control Mem_W
SHAMT Data_T
Mem_R
ALU_Op
3
PCk rs1 0
2
A RD A1 RD1 1
1
rs2 2 Cond
0 A2 RD2
Memoria
rd
ALU ALU_R
0 Gen
de A3 A RD
1 0 Datos
Programa 2
WD1 1 Memoria
Banco Reg Branch de
de Datos
0
Registros Gen
1
Datos
WD
rd 2
Data_JR 1
ALU_R
0
+ PCJUMP
Dato_S

INST(k) Gen Imm Imm


PCk+1 Immedia
+ to

PCNEXT
+1 0
FOp2 PCBRAN
+
FMem 1
rd FOp1 rd
rs1 rd
rs2
3
Flash E 2
1
0
ALU_R
Stall FI Stall D INST(k) Stall FD rs2 E rs1 E rd Reg_W ME rd ME rd WB Reg_W WB

Unidad de Control de Riesgos de Datos

Organización de las Computadoras L. Giovanini © 2022


44 - 72 Unidad 2

Riesgos de control

Organización de las Computadoras L. Giovanini © 2022


45 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control

Dependencias de control
Cada instrucción depende de un conjunto de saltos y esta dependencia, orden de ejecución,
debe preservarse para preservar el orden del programa;

Las dependencias de control pueden violarse si no afectan los resultados del programa.

LO IMPORTANTE es preservar el comportamiento del flujo de datos.

Dependencias de control y excepciones


Comportamiento de excepciones debe preservarse. Cualquier cambio en el orden de
ejecución no debe cambiar como las excepciones son atendidas en la ejecución.

Dependencias de control y flujo de datos


Se debe mantener el flujo de datos entre instrucciones productoras y consumidoras de
datos.

Organización de las Computadoras L. Giovanini © 2022


46 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control
Solución del riesgo generado por un salto través de reseteo de la ejecución del datapath
(flushing)
IF Jump = 1 AND Branch = 1 THEN Flush D = 1; Flush DF = 1 END

1 2 3 4 5 6 7 8
Orden de
ejecución
x2
Mem beq Mem
20 beq x2, x1, 30 de Reg
x1
ALU de Reg
Inst Dato

x12
Mem and Mem x5
21 and x12, x4, x5 de Reg
x4
ALU de Reg
Inst Dato

x13 Flush estas


x2
22 or x13, x6, x2
Mem
de
or
Reg
x6
ALU
Mem
de Reg instrucciones
Inst Dato

x13
Mem sub Mem x12
23 sub x13, x6, x12 de
Inst
Reg
x6
ALU de
Dato
Reg

• •

• •

• •
x2
Mem add Mem x14
30 add x14, x2, x2 de
Inst
Reg
x2
ALU de Reg
Dato

Organización de las Computadoras C


L. Giovanini © 2022
47 - 72 La microarquitectura del procesador Unidad 2

Riesgos de control
CLK CLK CLK

Reg_W Reg_W
Dato_S
Mem_W
Mem_R
Clock Data_T

ALU_Op
Reset S
ALU_S

Jump
B
Jump CLK CLK Reg
CLK
Unidad shamt shamt
B
de Sel
Reg_W
Control Mem_W
SHAMT
Mem_R
RD2 [0:4] ALU_Op
3 AL
PCk rs1 Jump
2
1
A RD A1 RD1
rs2 Cond
0 A2 RD2
Memoria
rd
ALU
de ALU_R
A3 0 A RD
Programa
WD1 1 Memoria
Dirección
de reset Banco Reg de
Branch Datos
de
Registros Gen
Datos
WD
rd

Data_JR
1
PCJR
0
+
INST(k) Gen Imm
+ PCk+1 Immediato

+1
0 PCBRAN
+
1

PCBRAN Flush D Flush DF

PCJR

Unidad de Control de Riesgos de Control


Organización de las Computadoras L. Giovanini © 2022
48 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control

A partir de un análisis estadístico del uso de intrucciones de saltos en programas surge que
En promedio
Saltos
Instrucciones de salto: 1 de cada 5
Saltos condicionales: 2 de cada 3
Saltos incondicionales:1 de cada 3 Incondicionales Condicionales
Saltos tomados: 5 de cada 6
Saltos condicionales: 3 de cada 4
Saltos incondicionales:Todos Incondicional Retorno de Cerrando
Otros
Simple Subrutina bucles

Conclusión A
Subrutina 1/3 1/3
1 de cada 6 instrucciones es un Tomado
1/3 para n-1
salto tomado; iteraciones
1 de cada 8 instrucciones es un 1/6 1/6
salto condicional;
1 de cada 10 instrucciones es un No
salto condicional y tomado; Tomados
tomados

Organización de las Computadoras L. Giovanini © 2022


49 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control

Cuando se detecta un instrucción de salto se debe determinar el tipo de salto a ejecutar, la


informacion necesaria para ejecutarlo y la direccion del salto.
Cuando se detecta un salto incondicional debe determinarse la fuente de informacion
necesaria para calcular la direccion final del salto, ya que el salto se toma siempre.
Cuando se detecta un salto condicional primero debe determinarse si el salto se ejecuta
o no y luego si se ejecuta la fuente de informacion necesaria para calcular la direccion
final del salto. En promedio
La fuente de informacion necesaria para calcular la
direccion final del salto se puede encontrar en Instrucciones de salto: 1 de cada
– La instrucción misma; o 5
– Se obtiene componiendo informacion Saltos condicionales: 2 de cada
disponibles en algun registro y parte de la 3
instrucción. Saltos incondicionales:1 de cada
3
Cuando se dispone de toda la información, el salto puede ejecutarse durante la etapa
Saltos tomados: 5 de cada
de búsqueda de modo de acelerar su ejecución.
6
Cuando no se dispone de toda la información, el salto no puede ejecutarse hasta
Saltos condicionales: 3 de cada
disponer de la información necesaria de modo que la ejecución se retraza hasta la etapa
4
de ejecución.
Saltos incondicionales:Todos
Organización de las Computadoras L. Giovanini © 2022
50 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control

El problema es que no se conoce el tipo de instrucción IF D DF E M WB


hasta que finaliza la etapa de decodificacion (Decode), lo
que introduce un retardo en la deteccion del salto. Si es salto  aplicar prediccion

Hay tres alternativas

Deteccion en paralelo con la decodificacion: utiliza un


IF D DF E M WB
decodificador de saltos dedicado para detectar las
Si es salto  aplicar prediccion instrucciones de salto antes del final de la etapa de
decodificacion;

Deteccion despues de la busqueda: detecta las IF D DF E M WB


instrucciones de salto en el buffer de instrucciones antes
de que sean decodificadas; y Si es salto  aplicar prediccion

IF D DF E M WB Deteccion durante la busqueda: detecta las


instrucciones de salto al tiempo que se leen la memoria
Si es salto  aplicar prediccion
de instrucciones

Organización de las Computadoras L. Giovanini © 2022


51 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control

Una primera aproximación al problema consiste en separar la ejecución de los saltos,


 Ejecutar los saltos con información completa en la etapa de búsqueda de instrucción; y
 Ejecutar los saltos con informción incompleta en la etapa de búsqueda de datos,
permitir al proceesador continuar la búsqueda de instrucciones y vaciar el dataptah si el
salto es tomado.
Esta idea implica intrroducir una unidad de salto que ejecute las instrucciones relacionadas
con el primer grupo.
IF Jump = 00 THEN J = 00
La unidad de salto
implementa las IF Opcode = BEQ AND rs1 = rs1 THEN J = 01; JN = 1
siguientes regla IF Opcode = JAL THEN J = 01; JN = 1
para determinar el IF Opcode = AUIPC THEN J = 01; JN = 1
valor del contador IF Opcode = JALR THEN J = 10; JR = 0
de programa IF Opcode = BRANCH AND Branch = 1 THEN J = 10; JR = 1
IF Jump = 11 THEN J = 11
ELSE
J = 01; JN = 0;
END
Organización de las Computadoras L. Giovanini © 2022
52 - 72 Unidad 2

La microarquitectura del CLK CLK

procesador Jump Branch


Reg_W
Dato_S

Riesgos de control Clock


Mem_W
Mem_R
Data_T

JR ALU_Op
Unidad de Reset S
JN ALU_S
Salto
Jump
B
J
CLK CLK
CLK
Unidad shamt shamt
Dirección de
excepciones
de
Reg_W
Control B
0

1 RD2 [0:4]
3
PCk INST(k) rs1
2
A RD A1 RD1
1
rs2
0 A2
0 RD2
Memoria
rd
1 de A3 0
Dirección de
Programa 1
WD1
reset Banco
de - Cond
Registros G
Da
rd
Gen
Immediato Data_JR
PCJR
+
Imm Imm

+1 +
PCk+1
+ PCBRAN

+
Branch
PCJUMP

PCNEXT
PCBRAN
PCJR

Flush D Flush DF

Unidad de Control de Riesgos de Control


Organización de las Computadoras L. Giovanini © 2022
53 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción de saltos

Cuando se detecta un instrucción de salto se debe determinar el tipo de salto a ejecutar, la


informacion necesaria para ejecutarlo y la direccion del salto.
Cuando se detecta un salto incondicional debe determinarse la fuente de informacion
necesaria para calcular la direccion final del salto, ya que el salto se toma siempre.
– La direccion final se encuentra en la instrucción misma (salto absoluto); o
– La direccion fina se obtiene componiendo informacion disponibles en algun
registro y parte de la instrucción (salto relativo)
Cuando se detecta un salto condicional sin resolver deben determinarse i) el camino del
salto y ii) la fuente de informacion necesaria para calcular la direccion final del salto. El
camino a seguir depende de la estructura del lazo considerado.
– Si se predice como tomado se calcula la direccion de destino y la ejecucion
continua de forma especulativa a partir de dicha direccion; o
– Si se predice como no tomado la ejecucion continua de forma especulativa.
Cuando se resuelve la condicion del salto

Si la prediccion fue correcta se confirma la ejecucion y continua normalmenta;

Si la prediccion no fue correcta se descartan las instrucciones ejecutadas
especulativamente (flushing) y se reanuda la ejecucion por el camino correcto.

Organización de las Computadoras L. Giovanini © 2022


54 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción de saltos

La solución al riesgo generado por un salto condicional consiste en la ejecución


anticipada del salto condicional (branch prediction).
1 2 3 4 5 6 7 8
Orden de
ejecución
x2
Mem beq Mem
20 beq x2, x1, 30 de Reg
x1
ALU de Reg
Inst Dato

x12
Mem and Mem x5 Flush esta
21 and x12, x4, x5 de Reg ALU de Reg
Inst x4 Dato instrucción
C

22 or x13, x6, x2

23 sub x13, x6, x12


x2
Mem add Mem x14
30 add x14, x2, x2 de Reg
x2
ALU de Reg
Inst Dato

Organización de las Computadoras L. Giovanini © 2022


55 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Prediccion de direccion
Cuando se detecta una instrucción de salto se debe determinar la informacion necesaria
para calcular la direccion final del salto.
En ciertas instrucciones la direccion final se encuentra en la instrucción misma por lo que
la instrucción puede ejecutarse inmediatamente.
En otras, la direccion final se obtiene componiendo informacion disponible en un
registro y parte de la instrucción. La información del registro no se halla disponible hasta
la etapa de búsqueda de datos (data fetch), lo cual retraza la ejecución de la instrucción al
menos dos ciclos.
Para ello se introduce un buffer de destino de saltos (Branch Traget Buffer – BTB –), que
almacena la dirección de destino del salto. La BTB is una memoria de doble puerto que en
cada ciclo
Contador de programa
 Lee los bits de predicción
asociados a una dirección en la Dirección de programa 1 V Dirección de salto predicha
etapa de búsqueda; Dirección de programa 2 V Dirección de salto predicha
Dirección de programa 3 V Dirección de salto predicha
 Actualiza los bits de predicción tag

asociados a una dirección en la Dirección de programa N V Dirección de salto predicha

etapa de decodificación; y
No Ejecución normal
 Escribe los bits de predicción = PC k+1 = PC k +1

asociados a una dirección que Si Salto


no esta en la tabla. PC k+1 = PC i

Organización de las Computadoras L. Giovanini © 2022


56 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción de saltos

Sin la predicción de saltos, el procesador tendría que esperar hasta que la instrucción de
salto condicional haya pasado la etapa de ejecución antes de que la siguiente instrucción
pueda ingresar a la etapa de búsqueda. El predictor de salto intenta evitar esta pérdida de
tiempo al tratar de predecir si es más probable que se tome o no el salto condicional.
El tiempo que se pierde en el caso de una predicción errónea es igual al número de etapas
en el procesador desde la etapa de búsqueda hasta la ejecución. Los microprocesadores
modernos tienden a tener arquitecturas bastante largas lo que aumenta la necesidad de un
predictor de saltos más avanzado.
Las tecnicas de prediccion de saltos se clasifican en

Predicción de saltos

Estática Dinámica

Basada en Dirigida por Hístoria Historia


Fija Híbrido
Opcode compilador local global
Organización de las Computadoras L. Giovanini © 2022
57 - 72 Unidad 2

La microarquitectura del procesador


Riesgos de control – Predicción de saltos

Los algoritmos de predicción de saltos funcionan porque los algoritmos, y los datos utilizados
por los mismos, presentan regularidades que pueden ser detectadas por los algoritmos de
predicción.

Además, las secuencia de


25% 22%
instrucciones tiene
redundancias que son Misprediction Rate
20% 18%
artefactos de manera en 15%
que los humanos / 15% 12% 12%
compiladores piensan 11% 10%
acerca de los problemas. 9%
10%
6%
Sin embargo, hay un 4%
5%
pequeño número de
saltos en programas que 0%
determinan el t li r
s s tot so gc
c
du
c
ea 2d j dp c or
comportamiento re n s o dr
o d l
u2
m
p eq pr
e d
h y m s
dinámico del programa. s
co e

Organización de las Computadoras L. Giovanini © 2022


58 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción de saltos

A partir de un análisis estadístico del uso de intrucciones de saltos en programas surge que
En promedio
Saltos
Instrucciones de salto: 1 de cada 5
Saltos condicionales: 2 de cada 3
Saltos incondicionales:1 de cada 3 Incondicionales Condicionales
Saltos tomados: 5 de cada 6
Saltos condicionales: 3 de cada 4
Saltos incondicionales:Todos Incondicional Retorno de Cerrando
Otros
Simple Subrutina bucles

Conclusión A
Subrutina 1/3 1/3
1 de cada 6 instrucciones es un Tomado
1/3 para n-1
salto tomado; iteraciones
1 de cada 8 instrucciones es un 1/6 1/6
salto condicional;
1 de cada 10 instrucciones es un No
salto condicional y tomado; Tomados
tomados

Organización de las Computadoras L. Giovanini © 2022


59 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción fija

La predicción estática es la técnica más sencilla que no utiliza información sobre el historial
dinámico de ejecución del código, sino que predice el resultado basándose sólo en la
instrucción.
Hay dos posibilidades:
Se ejecuta Cada instrucción de salto se ejecuta;
Tiene un número mayor de aciertos; pero
El hardware necesario para implementarlo es más complejo.

No se ejecuta Cada instrucción de salto no se ejecuta;


Tiene un número menor de aciertos; pero
El hardware necesario para implementarlo es más sencillo.
La predicción estática se basa en la dirección del salto a ejecutar;
 Se ejecuta siempre si la dirección destino es menor que la que se encuentra ela
instrucción de salto (salto hacia atrás). Este tipo de salto generalmente se utiliza en
bucles.
 No se ejecuta siempre si la dirección destino es mayor que la que se encuentra ela
instrucción de salto (salto hacia adelante). Este tipo de salto generalmente se utilizan en
instrucciones IF – THEN - ELSE.

Organización de las Computadoras L. Giovanini © 2022


60 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción fija

Estas ideas se implementan a partir de las siguientes reglas


 Si el salto es condicional y su desplazamiento es negativo se toma; y
 Si el salto es condicional y su desplazamiento es positivo no se toma.
La implementación de la unidad de salto ya incluye a los saltos incondicionales por lo que
sólo falta incorporar los saltos condicionales con información completa a partir de modificar la
regla de saltos relativos incondicionales.

IF Jump = 00 THEN J = 00 Reset


IF Opcode = BEQ AND rs1 = rs1 THEN J = 01; JN = 1
IF Opcode = JAL THEN J = 01; JN = 1
Predictor estático
IF Opcode = AUIPC THEN J = 01; JN = 1
IF Opcode = BEQ⋁BNE⋁BLT⋁BGE THEN J = 01; JN = 1
IF Jump = 01 AND Branch = 1 THEN J = 10; JR = 1
IF Jump = 10 AND Branch = 0 THEN J = 10; JR = 0
IF Jump = 11 THEN J = 11 Excepción
ELSE
J = 01; JN = 0; Ejecución normal
END
Organización de las Computadoras L. Giovanini © 2022
61 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción dinámica

Un predictor dinámico trabaja en tiempo de ejecución intentando aprender el


comportamiento del programa para predecir, con la máxima tasa de aciertos, si un salto
será o no tomado.
La información que se intercambia entre las etapas de búsqueda de instrucción,
decodificación y ejecución se almacena junto con el resultado en la tabla de historia de
saltos (Branch History Table – BHT -) que está direccionada por los bits mas bajos del
contador de programa. CLK

La BHT es una memoria de doble puerto que:


PCk+1
 Lee la dirección de destino asociada a una dirección en la BTB
etapa de búsqueda;
PCk 0
 Actualiza la dirección de destino asociada a una dirección + 1
en la etapa de decodificación; y +1

 Escribe la dirección de destino asociad a una dirección que


no esta en la tabla. BHT

Para ejecutar un salto se lee la BHT para ver el resultado


A RD Instrucción
esperado, se comienza a leer instrucciones a partir del mismo.
Memoria
Si la decision es incorrecta, el datapath es vaciado de las de
Programa

instrucciones incorrectas y reicinicializado con las instrucciones


correctas, y la informacion de la BHT actualizada.
Organización de las Computadoras L. Giovanini © 2022
62 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción dinámica

Un predictor de un bit solo registra el resultado del último salto, indicando el comportamiento
de la última ejecución de la instrucción de salto.
Dado que en un bit sólo almacena el estado del salto anterior, su actualización es muy
violenta, cambiando la predicción de un salto sólo por un comportamiento puntual.

Predicción

Organización de las Computadoras L. Giovanini © 2022


63 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción dinámica

Organización de las Computadoras L. Giovanini © 2022


64 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción dinámica

Un predictor de dos bits solo registra el resultado de los últimos cuatro saltos a través de ua
máquina de estados, indicando el comportamiento de las últimas instrucciones de salto.
Dado que almacena el estado de varios saltos, su actualización es suave y consigue mayor
número de aciertos.
Predicción

Organización de las Computadoras L. Giovanini © 2022


65 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción dinámica

Una posible implementación integra el buffer de destino de saltos (BTB) con los bits de
predicción en una única tabla.
Los campos de la tabla dirección de
destino y bits de historia se actualizan
después de la ejecución de los saltos.
Su principal desventaja es que solo se
pueden predecir los saltos que están en
la tabla

Contador de
Dirección de destino Bit de
programa - PC k Tag
del salto predicción
Dirección de programa 1 Dirección de salto 1 Bit pred 1
Dirección de programa 2 Dirección de salto 2 Bit pred 2
Dirección de programa 3 Dirección de salto 3 Bit pred 3
Lógica de
predicción

Dirección de programa N Dirección de salto N Bit pred N

1 Próxima dirección
+ de programa -
0 PC k+1
Organización de las Computadoras +1 L. Giovanini © 2022
66 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción dinámica

Otra implementación consiste en Contador de


programa - PC k Bit de
Tag
desacoplar el buffer de destino de predicción
Dirección de programa 1 Bit pred 1
saltos con los bits de predicción en Dirección de programa 2 Bit pred 2

una única tabla. Dirección de programa 3 Bit pred 3 Lógica de


predicción

La tabla de historia de saltos (BHT) Dirección de programa N Bit pred N

contiene información sobre el


Dirección de destino
comportamiento de los saltos Tag
del salto

mientras que la tabla de destino de Dirección de programa 1


Dirección de programa 2
Dirección de salto 1
Dirección de salto 2
saltos (BTB) sobre los saltos Dirección de programa 3 Dirección de salto 3

(direcciones de origen y destino).


Dirección de programa N Dirección de salto N
Su principal ventaja es que se
pueden predecir los saltos que no
1 Próxima dirección
están en BTB (saltos cuya + de programa -
0 PC k+1
información está en la instruccion). +1

Mientras que su principla deseventaja es la


cantidad de hardware necesario para
implementarlas.

Organización de las Computadoras L. Giovanini © 2022


67 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción dinámica

Los errores de predicción del salto se detectan en la etapa de búsqueda de datos por lo
que se be vaciar las etapas anteriores (decodificación y búsqueda de instrucción) y corregir
el contador de programa utilizando la dirección calculada en esta etapa y la tabla de
historia de saltos (BHT) .

Si la predicción del salto es correcta, debe verificarse que la dirección de destino es


correcta también. Hay dos posibles situaciones:
 La dirección es correcta se continua con la ejecución sin modificaciones.
 La dirección es incorrecta se vacia el datapath, se corrige el contador de programa y la
información de la tabla.
La correción de la dirección de destino se puede implementar de dos formas:
Opción 1: Detectar el error en la dirección destino en la etapa de búsqueda de instrucción
permite corregir la ejecución y evitar pérdidas de tiempo, a expensas del número de ciclos de
ejecución de la instrucción. Esto se logra incorporando una lógica de comparación después de la
BTB.
Opción 2: Detectar el error en la dirección destino en la etapa de decodificación permite
mantener constante el número de ciclos de ejecución de la instrucción pero se debe corregir la
ejecución a partir de burbujas en la etapa de búsqueda y restaurando el contador de programa con
el valor calculado en la etapa de ejecución.
Organización de las Computadoras L. Giovanini © 2022
68 - 72 Unidad 2
Branch CLK CLK

Reg_W
Jump Branch Dato_S
Mem_W
Mem_R
Clock Data_T

JR ALU_Op
Unidad de Reset S
JN ALU_S
Salto
J
Jump
B
CLK JP CLK
Tabla de CLK
Historia de Unidad shamt shamt
Dirección de
excepciones Saltos de
Reg_W
3 Control B Branch
2
1 RD2 [0:4]
0 3
PCk INST(k)
2 rs1
A RD A1 RD1
1
rs2
0 A2 RD2
0
rd
1 A3 0
- Cond
Dirección de PC Upd Memoria WD1 1
reset Banco
de
Programa Gen de PCJR
PCk Immediato Registros + Gen
Datos
rd

Imm Imm
Tabla de PCPRED
Historia de PCPRED
Saltos + +
Detector
+1 +
Upd_TD PCNEXT PCNEXT P

PCBRAN

PCPRED
PCJUMP

PCNEXT
PCBRAN PCBRAN
PCJR PCJR Branch
PCk+1 Mis_P
PC Upd Upd_TD Flush D Flush DF

Unidad de Control de Riesgos de Control

Organización de las Computadoras L. Giovanini © 2022


69 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción híbrida

Organización de las Computadoras L. Giovanini © 2022


70 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción híbrida

Organización de las Computadoras L. Giovanini © 2022


71 - 72 Unidad 2
La microarquitectura del procesador
Riesgos de control – Predicción híbrida

La ventaja del predictor híbrido es su capacidad de seleccionar el predictor


correcto para cada salto, ya que pude ajustarse a las características de
cada uno de ellos.

Organización de las Computadoras L. Giovanini © 2022


72 - 72 Unidad 2
La microarquitectura del procesador
Implementación segmentada

Branch
CLK CLK CLK CLK
Reg_W

Jump Reg_W
Dato_S
Mem_W
Mem_R
Clock
Clock
Data_T
JR ALU_Op
Unidad de Reset
Reset
S
Data_T
JN
Salto ALU_S Dato_S
J
Jump
CLK JP CLK
CLK B
Tabla de Reg_W
Historia de Unidad shamt shamt
Dirección de
excepciones Saltos de Sel Reg_W Mem_W
CLK RD2 [0:4] Mem_R
3 Control
2 SHAMT
1 ALU_Op
3 PCk
0 PCk RD1
2 INST(k) rs1 0 ALU_R
A RD A1 RD2 1
1
rs2 2
0 A2
0 0
rd
ALU ALU_R
1 1 0 Gen
A3 A RD
1 0
Dirección de PC Upd WD1
- Cond
2 1 Memoria
Datos
Memoria 0
reset de
de Banco 1
Gen
Programa de 0
Datos
Immedia
PCk Registros Gen
to 1
Datos
WD
rd PCJR 2
+
Imm
Tabla de Imm Imm Imm
Historia de PCPRED PCPRED
Saltos +1 +
PCNEXT PCNEXT PCNEXT

+ Detect
Upd_TD
+ or
rd
rd rd
rs1
rs2
PCPRED 3
2
PCJUMP 1
PCNEXT rd 0
PCBRAN PCBRAN Flash E ALU_R
PCJR PCJR
Mis_P rs2 E FDM
PCNEXT
Flush D INST(k) Branch rs1 E
Stall FI PC Upd Upd_TD Stall D Stall FD Flush DF FS1 FS2 FD1 FD2 Reg_W ME rd ME rd WB Reg_W WB

Unidad de Control de Riesgos

Organización de las Computadoras L. Giovanini © 2022

También podría gustarte