Vous êtes sur la page 1sur 37

Segmentación: Mejora del

rendimiento
IEC – UTM
Moisés E. Ramírez G.

Segmentación
„ La segmentación (pipelining) es una
técnica de implementación por la cual
se solapa la ejecución de múltiples
instrucciones.
„ Es la técnica de implementación clave
utilizada para hacer CPU rápidas.

1
Ejemplo: lavanderia
1. Colocar la carga de ropa sucia en la lavadora.
2. Sacar la ropa de la lavadora para pasarla a la
secadora.
3. Doblar la ropa seca.
4. Acomodar la ropa limpia y seca en su lugar
correspondiente.

Lavado usando
segmentación
„ Cada uno de los
pasos en los que
se dividió el
proceso se conoce
como una etapa
de la
segmentación o
un segmento.

La segmentación no disminuye el tiempo de


ejecución pero si aumenta la productividad, y
de esta manera se aumenta el rendimiento.
4

2
Para la ejecución de
instrucciones MIPS
1. Atrapar las instrucciones de la memoria.
2. Leer los registro mientras se decodifica la instrucción.
3. Ejecutar la instrucción o calcular una dirección.
4. Accesar un operando en memoriade datos.
5. Escribir el resultado en un registro.

Riesgos en la segmentación
„ Riesgos de Estructura: Significa que el hardware no
puede soportar la combinación de instrucciones que se
quiere ejecutar en el mismo ciclo.
„ Ejemplo: Si contamos con una sola memoria, para datos y
código, no será posible escribir o leer un dato, mientras se
atrapa una instrucción.

„ Riesgos por dependencias de datos: Una instrucción


depende del resultado de una instrucción previa que aún
está en la segmentación.

„ Riesgos de Control: Surgen de la necesidad de hacer una


decisión basada en los resultados de una instrucción,
mientras otras se están ejecutando.
„ Ejemplo: en un brinco condicional, mientras se determina si
el brinco se hará o no, otras instrucciones ingresarán al
procesador. Si se determina que el brinco no se llevará a
cabo, esas instrucciones prosiguen su ejecución.
6

3
Implementación multiciclos vs
segmentación
„ Se desean analizar dos implementaciones: multiciclo
y segmentado, en la siguiente tabla se muestra el
tiempo requerido para cada etapa y tipo de
instrucción.
„ La ejecución de 3 instrucciones de carga en la
implementación multiciclos, ocupara 800 x 3 =
2,400 ps, la implementación segmentada usa 1,400
ps.

„ Para la segmentación, hay etapas que requieren


solo 100 ps, pero todas comparten el mismo ciclo
de reloj, entonces cada etapa debe considerar el
peor de los casos, que es 200 ps.
„ Para poder calcular el tiempo entre el fin de una y
otra instrucción segmentada, (suponiendo
condiciones ideales) y compararlo con la versión
no segmentada, se tiene que:

Tiempo entre instrucciones


Tiempo entre (no segmentadas)
instrucciones = Número de etapas de
(segmentadas)
segmentación
8

4
9

„ Trabajando en condiciones ideales y con un


número grande de instrucciones, ¿cuál es
el aumento del rendimiento?

„ Supongamos 1,000,000 instrucciones


„ 1e6 * 800ps / 1e6 * 200ps ̴ 4

„ La segmentación aumenta el throughput


(rendimiento) de la implementación, y no
necesariamente el tiempo de ejecución de las
instrucciones.
10

5
Camino de datos segmentado
„ Previamente se analizaron las
implementaciones de un solo ciclo y
multiciclos.

„ Las etapas requeridas por cada


instrucción son:
1. IF: (Instruction fetch) Captura de la
instrucción.
2. ID: (Instruction decode) Decodificación de la
instrucción y lectura de registros.
3. EX: (Execution) Ejecución o cálculo de una
dirección.
4. MEM: (Memory Access) Acceso a memoria.
5. WB: (Write Back) Retro escritura.
11

Camino de datos de un solo ciclo segmentado

12

6
„ En la etapa WB se realiza la escritura del resultado
en el archivo de registros, el cual está ubicado en
la segunda etapa del camino de los datos – Riesgo
por dependencia de datos

„ La selección del siguiente valor del PC,


seleccionado entre el PC incrementado en cuatro y
la dirección destino de un brinco toma lugar en la
etapa MEM – Riesgo de control

„ El flujo de datos de derecha a izquierda no afecta


a la instrucción actual, pero puede tener influencia
sobre las instrucciones siguientes, que ya están en
alguna etapa de la segmentación.
13

Formato estilizado para mostrar el camino de


datos de instrucciones

14

7
Agregando registros
„ Para no tener que replicar las unidades
funcionales, es necesario agregar registros que
almacenen temporalmente los datos para las
siguientes etapas.

15

Captura de la Instrucción
„ Durante esta etapa la instrucción LW utilizará las
unidades funcionales resaltadas en la figura
siguiente de la memoria de código sólo se resalta
la mitad derecha puesto que ésta será accesada
solo para lectura.
„ Al mismo tiempo, en esta etapa se calculará el
valor de PC + 4 y se escribirá en el PC para
introducir a la siguiente instrucción a la
segmentación (aún no se considerarán los
riesgos).
„ En el registro IF/ID se escribirá la instrucción, y el
valor de PC + 4. Cabe aclarar que en esta etapa,
el hardware desconoce el tipo de instrucción.

16

8
Instruction fetch

17

Decodificación de la instrucción
y lectura del archivo de registro
„ Para esta etapa los datos que se evalúan
se toman del registro IF/ID y los resultados
al final de la misma se escribirán en el
registro ID/EX.
„ Los aspectos de interés particular para la
instrucción LW son:
„ la lectura del registro 1 y la extensión del signo
de la constante para que utilice32 bits.
„ También se lee el registro 2, pero este no es
importante para la instrucción bajo
consideración.
18

9
Instruction decode

19

Ejecución o Cálculo de una


dirección
„ Los datos se tomarán del registro ID/EX y los
resultados se escribirán en el registro EX/MEM.

„ Lo importante para la instrucción LW es el cálculo


de la dirección del dato que se leerá en memoria.

„ En esta etapa ya se tiene identificado el tipo de


instrucción por lo que el control deberá colocar
como segundo operando de la ALU a la constante
extendida en signo.

„ El primer operando, por default corresponde al


registro base.
20

10
Execution

21

Acceso a memoria
„ En esta etapa se leerá un dato de memoria, la
dirección a leer se toma del registro EX/MEM y el
dato leído se escribirá en el registro MEM/WB.

„ En la figura siguiente se resalta solo la mitad


derecha de la memoria por que solo se está
haciendo una lectura.

22

11
Memory

23

Retro escritura
„ El último paso de la instrucción LW consiste en la
escritura del dato que está en el registro MEM/WB
en el registro correspondiente, el nombre de retro-
escritura es por que aunque se esta ejecutando el
paso 5, el archivo de registros esta ubicado en la
etapa 2.

„ Esto no afecta en la ejecución, puesto que el


archivo de registros puede leerse y escribirse en el
mismo ciclo de reloj; y en el caso de esta
implementación segmentada, la lectura y escritura
se harán por diferentes instrucciones.

24

12
Write back

25

„ Corrección al camino de datos para la instrucción LW

26

13
„ Se analizará la siguiente secuencia de
instrucciones:
„ lw $10, 20 ($1)
„ sub $11, $2, $3

27

28

14
29

30

15
31

32

16
33

34

17
35

36

18
37

38

19
39

Proceso de ejecución de SW
„ IF: la instrucción es capturada de memoria y
almacenada en IF/ID
„ ID: IF/ID proporciona los números de registros
que se leerán y se realiza la extensión de signo de
16 a 32 bits, dichos valores se almacenan en
ID/EX
„ EX: Se suma el 1er registro y el la constante
extendida a 32 bits, se almacenan en EX/MEM
„ MEM: El segundo registro previamente
almacenado en ID/EX y posteriormente en
EX/MEM se almacena en la dirección de memoria
calculada en la etapa anterior.
„ WB: No se hace nada 40

20
Proceso de ejecución de SW

41

Ejecución de SW

42

21
Ejecución de una secuencia de instrucciones

43

Ejecución de las 5 instrucciones a la vez

44

22
El control segmentado

45

Señales de control en cada etapa


1. Captura de la Instrucción. Las señales de control para
la lectura de memoria de código y escritura del PC están
siempre acertadas, por que cambiarán su valor en cada
ciclo de reloj, por lo que no hay líneas de control
especiales.
2. Decodificación de la instrucción y lectura del
archivo de registro. Sucede una situación similar a la
etapa anterior, no hay líneas de control para un ajuste
opcional.

3. Ejecución o Cálculo de una dirección. En esta etapa,


dependiendo del tipo de instrucción debe seleccionarse:
„ El segundo operando de la ALU (ALUSrc).
„ La operación que realizará la ALU (ALUOp).
„ El registro destino (RegDst).

46

23
4. Acceso a memoria. Aquí se determina si:
„ Se trata de un brinco (branch).
„ Se escribirá en memoria (MemWrite).
„ Se leerá de memoria (MemRead).

5. Retro escritura. Son dos señales que se deben


definir:
„ La que determina si se escribirá el resultado de la ALU
o el dato de memoria (MemtoReg).
„ La que habilita la escritura en el archivo de registros
(RegWrite).

47

Las señales de control

48

24
Valores para el control
„ Las señales de control deben tener los valores
correctos en la etapa correcta, dependiendo del
tipo de instrucción a ejecutar.
„ Los valores son los mismos que en la
implementación de un solo ciclo, la diferencia es
que se requieren en diferentes etapas.

49

„ En la etapa 1 se atrapa la instrucción y se almacena en


IF/ID.
„ En la 2ª etapa se toma del registro IF/ID el opcode que
determina el tipo de instrucción que se está ejecutando,
mismas que entran al circuito de control.

50

25
51

Ejemplo de Ejecución segmentada.

„ Evaluar la ejecución de las cinco


instrucciones siguientes a través de la
segmentación:
¾ lw $10, 20 ($1)
¾ sub $11, $2, $3
¾ and $12, $4, $5
¾ or $13, $6, $7
¾ add $14, $8, $9

52

26
53

54

27
55

56

28
57

58

29
59

60

30
61

Ejemplo
„ Ejecución de la secuencia de
instrucciones:
„ Lw $10, 9( $1)
„ Sub $11, $2, $3
„ And $12, $4, $5
„ Or $13, $6, $7
„ Add $14, $8, $9

62

31
63

64

32
65

66

33
67

68

34
69

70

35
71

Segmentación en el procesador Alpha 21264

72

36
73

37

Vous aimerez peut-être aussi