Sie sind auf Seite 1von 33

ARQUITECTURA e INGENIERA de

COMPUTADORES

Bloque 2: Procesadores Segmentados

Leccin 2: Diseo de un Procesador Segmentado Sencillo

Curso 2015/2016
Bibliografa

1. S. A. WARD and R. H. HALSTEAD. Computation Structures,


McGraw Hill, 1994.

2. K. HWANG. Advanced Computer Architecture. Parallelism,


Scalability, Programmability, McGraw Hill, 1993.

3. J. L. HENNESSY and D. A. PATTERSON. Computer Architecture. A


Quantitative Approach, Morgan Kaufmann, 3rd edition, 2003.

4. D. SIMA and T. FOUNTAIN, and P. KACSUK. Advanced Computer


Architectures: A Design Space Approach, Addison Wesley, 1997.

5. J. ORTEGA, M. ANGUITA y A. PRIETO. Arquitectura de


Computadores,
Thomson, 2004.

2
Tema 2. Segmentacin de Cauce

1. Introduccin: Motivacin y nota histrica


2. Principio y prestaciones generales
3. Diseo de un procesador segmentado sencillo [Ortega 2.3; Ward 17]
1. Repertorio de instrucciones y estructura del cauce
2. Problemas en la segmentacin de cauce: Riesgos
3. Soluciones a las dependencias de datos
4. Procesamiento de saltos
5. Acceso a memoria
6. Instrucciones de varias palabras y operandos inmediatos
7. Influencia de la segmentacin en los repertorios de instrucciones

4. Espacio de diseo de los procesadores segmentados.

3
Repertorio de Instrucciones y Estructura del Cauce
Se elige una instruccin que utilice
Lectura de todas las etapas del cauce pero lo
IF Instrucciones suficientemente simple para poder
iniciar el diseo que luego se va a ir
CODOP Ra Rb Rc
complicando: C A operacin B
Decodif. Banco de
de Instr. Registros
OF/ID Etapas:
IF (Instruction Fetch) Se capta la
op CODOP Ra Rb Rc A B
instruccin

ALU OF/ID (Operand Fetch/Inst.


ALU Decod.) Se captan los operandos y
se decodifica la instruccin.
CODOP Ra Rb Rc CC C
ALU Operacin con la ALU
OS
OS (Operand Store) El resultado se
guarda en el banco de registros
El Banco de Registros ha de tener dos puertos de
lectura (para poder leer los dos operandos en la
etapa OF/ID) y uno de escritura (para poder escribir IF OF/ID ALU OS
el resultado de instrucciones anteriores en la etapa
OS)

4
Riesgos

t t+1 t+2 t+3 t+4 t+5


(1) R2 := R1 + R2 (1)
(2) R3 := R3 + R1 (2)
(3) R5:= R5 + R3
(3)
(3) Lee aqu (2) escribe
Riesgo de R3 (resultado aqu R3
de (2)) (operando de
Dependencia de Datos (2))
de tipo RAW (Read After
Write)
No se respeta el orden de Escritura -> Lectura
en R3 indicado en las instrucciones (2) y (3)

5
Riesgos (II)

Riesgo es cualquier condicin que puede interrumpir el flujo continuo a


travs de un cauce. Pueden ser:

Riesgos de Datos (dependencias entre los operandos y resultados de


instrucciones distintas)

Riesgos de Control (instrucciones de salto condicional que, segn su


resultado, determinan si hay que ejecutar una secuencia de instrucciones u
otra).

Riesgos Estructurales o Colisiones (distintas instrucciones necesitan el


mismo recurso al mismo tiempo)

6
Tipos de Riesgos de Datos

W R RAW (Read After Write)


R2 := R1 + R2
1 almacenamiento 2
R1 := R2 + R3

W R WAR (Write After Read)


R2 := R1 + R2
2 almacenamiento 1
R1 := R2 + R3

W W WAW (Write After Write)


R2 := R1 + R2
1 almacenamiento 2
R2 := R4 + R3

7
Soluciones a las Dependencias de Datos:
Interbloqueo entre Etapas
t t+1 t+2 t+3 t+4 t+5
(1) R3 = R3 + R1
(2) R1 = R3 + R1
(1) Lee (2) Lee (1) (2) Escribe R1
R1 y R3 R3 y R1 Escribe
R3 Como las escrituras se
hacen en la ltima etapa,
los riesgos WAR y WAW
no ocasionan problemas
en esta microarquitectura
Si se detecta que el operando de la instruccin no est
disponible se bloquea la instruccin un nmero de ciclos
suficiente

t t+1 t+2 t+3 t+4 t+5

W R

8
Soluciones a las Dependencias de Datos:
Reorganizacin de Cdigo

R3=R3+R1
R5=R5-R3
R4=R4+R1
R6=R6-R4

R3=R3+R1
nop
R5=R5-R3
R4=R4+R1
nop
R6=R6-R4

R3=R3+R1
R4=R4+R1
R5=R5-R3
R6=R6-R4

9
Soluciones a las Dependencias de Datos:
Atajos (Bypass paths o forwarding)

La lgica de bypass
Lectura de compara el destino de una
Instrucciones
IF instruccin (3) con los
CODOP Ra Rb Rc
operandos de la siguiente
(1) y (2).
Decodif. Banco de
de Instr. Registros
OF/ID En el caso de coincidencia
entre (3) y (1) (3) y (2), se
op CODOP Ra Rb Rc Bsel A B
acta sobre los multiplexores
(4) o (5), respectivamente
2
1 Lgica de
4 5 para que se cargue en la
Bypass entrada correspondiente de
ALU ALU la ALU el resultado de la
instruccin al mismo tiempo
Rc
3
CC C que se almacena en el banco
de registros
OS

10
Soluciones a las Dependencias de Datos:
Atajos (Bypass paths o forwarding)

(2) Realiza la suma


correctamente: R4 ms el
(1) Calcula R3 y lo almacena resultado de R3+R1 obtenida
en C por (1)

(1) R3 := R3 + R1
(2) R4:= R3 + R4

C en una entrada de la ALU

La lgica de bypass detecta


que el operando R3 de (2)
coincide con el resultado de
(1) y conecta C en una de las
entradas de la ALU

11
Instrucciones de Salto
El valor de PC se incrementa cada
6
Lectura de +4 ciclo de reloj. Si se produce el salto
Instrucciones el valor de PC se carga (6) con
IF PC
la direccin obtenida al sumar
el valor de PC actual con el
CODOP Ra Rb Rc
OFFSET en el registro indicado
por Ra (que se ha cargado en
Decodif. Banco de
de Instr. Registros A). PC es uno de los operandos de
OF/ID la ALU
op CODOP Ra Rb Rc Bsel A B
Las seales de habilitacin de carga
(7) permiten que los registros PC y
2 4 5 CC se puedan cargar con los valores
9 Lgica de 1 Lgica de
Condicin Bypass que proporciona la ALU
ALU
ALU
7 8 La determinacin de si se produce
Habilitacin de
Rc CC C
un salto o no, la hace la lgica de
carga en CC y PC
3
condicin en funcin del registro
OS de estado CC (8) y del cdigo de
salto (9)

12
Instrucciones de Salto y Riesgos de Control

(2) Calcula PC+OFF (OFF


estaba en R6) y se almacena
(1) Ha obtenido R3 y se en PC si se verifica la
genera la condicin CC CC condicin CC

(1) R3 = R3 + R1
(2) bz R6

No deben introducirse en el cauce


si se produce el salto
Nuevo PC
En esta implementacin de las instrucciones de salto, las dos instrucciones que
siguen a la de salto pueden introducirse en el cauce innecesariamente y causar
errores en la ejecucin. Solucin: NOPs y Salto retardado
Las instrucciones de salto condicional producen riesgos de control (rompen la
secuencia de instrucciones ejecutadas por el cauce y pueden ocasionar que se
pierdan ciclos.

13
Riesgos de Control e Instrucciones de No-Operar

(2) Calcula PC+OFF (OFF


estaba en R6) y se almacena
(1) Ha obtenido R3 y se en PC si se verifica la
genera la condicin CC CC condicin CC

(1) R3 = R3 + R1
(2) bz R6
(3) NOP
(4) NOP

Nuevo PC

El compilador introduce una o varias (en este caso 2) instrucciones NOP


detrs de toda instruccin de salto condicional
El programa se ejecuta correctamente pero se siguen perdiendo ciclos y el
cauce funciona de forma menos eficaz

14
Riesgos de Control y Salto Retardado
R4 = R4 + R5
R4 = R4 + 1
(1) R3 = R3 + R1
(2) bz R6

Nuevo PC
Se ahorran los
dos ciclos
(1) R3 = R3 + R1
(2) bz R6
(3) R4 = R4 + R5
(4) R4 = R4 + 1

El compilador reorganiza el cdigo introduciendo Nuevo PC


instrucciones anteriores a la de salto despus de ella (debe
comprobarse que el programa se ejecuta correctamente)

15
Opciones del Salto Retardado

Branch Branch Branch Branch

Ejecucin Anular si no Anular si se Detencin de la


especulativa: se salta: salta: Segmentacin:

Se anula la Se anula la La instruccin


No se anula
instruccin instruccin que va
nunca la
siguiente si no siguiente si se despus de
instruccin que
se produce un produce un una de salto se
va tras una
salto salto anula siempre
instruccin de
(probabilidad alta (probabilidad alta
salto
de saltar) de NO saltar)
condicional

16
Acceso a Memoria
Riesgo estructural: las
dos instrucciones
LOAD R1,MEM necesitan utilizar el
mismo recurso al mismo
ADD R2,R3,R4
tiempo y para lo mismo
(escritura en registro)
La direccin de memoria Espera a que la memoria
est disponible (en el proporcione el dato
Soluciones:
LOAD o en el STORE) (latencia de la memoria)
- Dos puertos de
escritura en el banco de
LOAD R1,MEM registros
NOP
- Introducir NOPs
ADD R2,R3,R4

LOAD R1,MEM - Introducir una etapa


ADD R2,R3,R4
ms de espera: MEM

IF OF/ID ALU MEM OS

17
Acceso a Memoria (II)
6 El acceso a memoria se realiza
+4
Lectura de mediante instrucciones LOAD/
Instrucciones
STORE.
IF PC

Se aaden los registros DMAR y


CODOP Ra Rb Rc SDMR y LDMR.

Decodif. Banco de
DMAR para las direcciones de
de Instr. Registros memoria (se actualiza al final de la
OF/ID etapa de operacin con la ALU)
que puede utilizarse en los modos
op CODOP Ra Rb Rc Bsel A B de direccionamiento.
SDMR tiene los datos a
2 4 5 almacenar en los STOREs al final
9 Lgica de 1 Lgica de ALU
Condicin Bypass de la etapa ALU
ALU 14
LDMR tiene el dato que se lee de
7 8 memoria en los LOADs
Habilitacin de
carga en CC y PC Rc CC C DMAR SDMR
3 Se incrementa el cauce en una
MEM etapa de espera no hace nada-
(10, 11, 12, 13, 14) para
Sel 10 11 Rc 12 C 13 LDMR esperar que la memoria responda
en los LOADs. El multiplexor (15)
15 permite almacenar el resultado del
OS
LOAD o de la ALU

18
Acceso a Memoria (III): Retardo Carga-Uso

LOAD R1, MEM El diseo del cauce


ADD R2, R3, R1 introduce un retardo
carga-uso en
dependencias RAW con
R1 R1
datos en memoria
necesitado disponible

Soluciones:
LOAD R1, MEM Dejarlo en manos del
SUB R4, R5, R6 programador, que
ADD R2, R3, R1 deber introducir
alguna instruccin en
el hueco para esperar
el dato
Bloquear el cauce
(complicando el
LOAD R1, MEM
bypass). Si el
programador no
ADD R2, R3, R1
reorganiza el cdigo
se garantiza un
resultado correcto

19
Acceso a Memoria (IV): Retardo Carga-Uso
Estamos asumiendo
La ALU calcula la direccin efectiva 1 ciclo una cache con una
latencia de 1 ciclo y un
LOAD R1, MEM
bypass que adelante el
SUB R4, R5, R6 resultado a la ALU
ADD R2, R3, R1 (t21)
La suma tiene el dato disponible
En el caso de
memorias ms lentas
Aadimos una pequea ALU 2 ciclos (p.ej. latencia de dos
ciclos):
LOAD R1, MEM Podemos adelantar el
SUB R4, R5, R6 clculo de la
ADD R2, R3, R1 direccin efectiva en
el cauce
3 ciclos
Aadir ms ciclos de
LOAD R1, MEM
espera, complicando
SUB R4, R5, R6 la lgica de bypass e
NOP incrementando el
NOP retardo de carga-uso
ADD R2, R3, R1

20
Operadores Inmediatos
6
Lectura de +4
Instrucciones
IF PC

CODOP Ra Rb Rc
Se ha aadido un camino de
bypass (16) entre el registro
Decodif. OF/ID Banco de
LDMR y la ALU para
de Instr. 17 Registros
minimizar el retardo carga-
uso del procesador.
op CODOP Ra Rb Rc Bsel Imm A B

2 4 5 Tambin se aade la
9 Lgica de 1 Lgica de ALU
Condicin Bypass posibilidad de operar con
ALU 14 valores inmediatos mediante
7 8 la adicin del registro Imm
Habilitacin de (17), que posibilita alimentar
carga en CC y PC Rc CC C DMAR SDMR
3 a la ALU con un dato
MEM almacenado en la instruccin
Sel 10 11 Rc 12 C 13 LDMR

16
15
OS

21
Influencia en el Repertorio de Instrucciones:
Cdigos de Condicin
Muchos procesadores (IA-32) basan sus saltos condicionales en el uso
ciertos cdigos de condicin que se almacenan en el procesador

Algunas instrucciones modifican estos cdigos mientras se ejecutan, con


la ventaja de que el salto ya no tiene que evaluar la condicin,
simplemente debe mirar el valor de su cdigo, pero al segmentar el
procesador, aparecen varios inconvenientes:

Se complica la planificacin de instrucciones entre la modificacin del cdigo y


el salto, ya que slo se podrn mover antes del salto las instrucciones que no
modifiquen el valor del cdigo de condicin

Es necesario hardware que detecte qu instrucciones pueden o no modificar


los cdigos para decidir cundo se ha fijado el ltimo valor de la condicin y
se puede evaluar el salto, es decir, los cdigos introducen dependencias RAW

22
Influencia en el Repertorio de Instrucciones:
Repertorios CISC
Durante muchos aos se obvi la interaccin entre el repertorio de instrucciones y la
complejidad de su implementacin, centrndose la atencin de los diseadores en la adicin
de instrucciones muy diversas a los repertorios de instrucciones:
Diferentes tiempos de ejecucin: segn su complejidad
Diferentes formatos: muchas instrucciones pueden acceder a memoria, operar con datos inmediatos de
varios tamaos, etc.
Muchos modos de direccionamiento: incluso con auto-modificacin de los registros ndice.

Sin embargo, los programadores no suelen programar en ensamblador. Usan compiladores y


stos slo utilizan un subconjunto de las instrucciones del repertorio
Disear un cauce para tratar instrucciones tan diversas es muy complejo:
El que todas las instrucciones se ejecuten en el mismo nmero de ciclos no es aceptable: el cauce
sera muy largo y se introduciran muchsimas dependencias

A partir de los 80 se empez a notar la dificultad y la ineficiencia de segmentar estos


repertorios de instrucciones y en los 90 se comenzaron a notar los cambios:
Algunas compaas comenzaron a usar repertorios ms sencillos para permitir implementaciones ms
agresivas (rompiendo la compatibilidad hacia atrs)
Otras compaas, por el contrario (Intel), mantuvieron la compatibilidad, pero para ganar en
prestaciones comenzaron a disear procesadores que traducen (o secuencian) en tiempo de ejecucin
las instrucciones CISC a microoperaciones RISC sencillas, ms adecuadas para un cauce segmentado

23
Tema 2. Segmentacin de Cauce

1. Introduccin: Motivacin y nota histrica


2. Principio y prestaciones generales
3. Diseo de un procesador segmentado sencillo
4. Espacio de diseo de los procesadores segmentados
[Ortega 2.4; Sima 5.2 y 5.3]
1. Dimensiones de diseo de un cauce
2. Diseo lgico de un procesador segmentado
3. Implementacin de un procesador segmentado

24
Dimensiones de Diseo de un Cauce

Nmero de Etapas

Subtarea que implementa cada etapa

Organizacin Distribucin de la secuencia de etapas


del Cauce
Uso de Caminos de bypass (forwarding)

Temporizacin del cauce (sncrono/asncrono)

Esttica (Compilador)
Resolucin de
Dinmica (Bloqueos, elementos hardware)
dependencias
Combinada

25
Dimensiones de Diseo: Nmero de Etapas

Prestaciones

Nmero de etapas en procesadores:


RISC I (1982): 2
RISC II (1983): 3
21064 (1993): 6-10
Pentium (93) : 6-7 (INT), 8-10 (FP)
MC68060: 9
Profundidad del cauce

Cuantas ms etapas tiene un cauce, mayor puede ser la ganancia (en el


caso de un comportamiento ideal), aunque pueden aparecer ms
dependencias (al haber ms instrucciones en el cauce) y el coste asociado a
dependencias no resueltas es mayor (se pierden ms ciclos)

26
Diseo Lgico: Segmentacin de las Diferentes Instrucciones

Se disea un cauce diferente para cada uno de los tipos de instrucciones que
va a ejecutar el procesador, teniendo en cuenta todos los factores anteriores

Saltos
IF ID

Carga
IF ID EX MEM WB

Almacenamiento
IF ID EX MEM

Instr. FX
IF ID EX WB

Instr. FP
IF ID EX WB

27
Implementacin de los Cauces

Cauce nico
Cauces en los que no hay
RISC I (82), RISC II (83), MIPS (81), MIPS-X (86), IBM801 (78) unidades funcionales para
aritmtica de coma flotante
Tendencia / Prestaciones

L/S,B,FX
Cauce Doble
FP Se fuerza que las instrucciones
terminen en orden
Z80000 (84), R2000 (87), R3000 (88), AMD29000 (87), i486 (88)

Mltiples Cauces
Se permite que las
instrucciones terminen
desordenadamente (se debe
comprobar que no se causan
errores) (cauce asncrono,
relacionado con la dimensin
Fundamentalmente en Procesadores Superescalares de la organizacin del cauce)

28
Implementacin de los Cauces: Cauce Doble

Cauce Doble
L/S,B,FX Se alarga el cauce corto
para facilitar el
mantenimiento de la
FP consistencia secuencial

Traza de ejecucin

Ejecucin y Finalizacin
en orden

29
Implementacin de los Cauces: Mltiples Cauces

Mltiples Cauces

Slo hay un cauce para


FP y no est segmentado

Traza de ejecucin
Ejecucin y Finalizacin
fuera de orden

Colisin (por riesgo estructural en el cauce FP)

30
Implementacin de los Cauces: Mltiples Cauces (II)

Mltiples Cauces

El cauce FP est
segmentado o bien hay
varios cauces FP

Traza de ejecucin
Ejecucin y Finalizacin
fuera de orden

Colisin (por riesgo estructural en la etapa de acceso a memoria)

31
Implementacin de los Cauces: Operacin Cclica

Se reutiliza la etapa para implementar


operaciones complejas (segn sea la
operacin se hace un uso distinto del
cauce)

32
Para ampliar

Pginas Web:
http://www.cs.iastate.edu/~prabhu/Tutorial/title.html
(Tutoriales de Arquitectura de Computadores del prof. Prabhu)

Artculos de Revistas y Libros:


Itoh, M.; Takeuchi, Y.; Imai, M.; Shiomi, A.: Synthesizable HDL Generation
for Pipelined Processors from a Micro-Operation Description. IEICE Trans.
Fundamentals, Vo. E00, N0. 3. Marzo, 2000.
Dubey, P.K.; Flynn, M.J.: Branch Strategies: Modeling and Optimization.
IEEE Trans. Computers, Vol.40, No.10. Octubre, 1991.
T.R Gross, J. Hennessy, Optimizing Delayed Branches, Proceedings of the 15
th Annual Workshop on Microprogramming, Oct. 1982.
Hennessy, Apndice A.
Sima, Seccin 5.5.

33