segmentación - utmmixteco.utm.mx/~merg/ac/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4...

37
1 1 Segmentación: Mejora del rendimiento IEC – UTM Moisés E. Ramírez G. 2 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.

Upload: others

Post on 22-Mar-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

1

1

Segmentación: Mejora del rendimiento

IEC – UTMMoisés E. Ramírez G.

2

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.

Page 2: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

2

3

Ejemplo: lavanderia1. 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.

4

Lavado usandosegmentaciónCada 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.

Page 3: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

3

5

Para la ejecución de instrucciones MIPS1. 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.

6

Riesgos en la segmentaciónRiesgos 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.

Page 4: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

4

7

Implementación multiciclos vssegmentación

Se desean analizar dos implementaciones: multicicloy 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.

8

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

(segmentadas)Número de etapas de segmentación

Tiempo entre instrucciones (no segmentadas)

=

Page 5: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

5

9

10

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.

Page 6: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

6

11

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.

12

Camino de datos de un solo ciclo segmentado

Page 7: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

7

13

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.

14

Formato estilizado para mostrar el camino de datos de instrucciones

Page 8: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

8

15

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

16

Captura de la InstrucciónDurante 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á accesadasolo 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.

Page 9: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

9

17

Instruction fetch

18

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.

Page 10: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

10

19

Instruction decode

20

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.

Page 11: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

11

21

Execution

22

Acceso a memoriaEn 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.

Page 12: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

12

23

Memory

24

Retro escrituraEl ú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.

Page 13: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

13

25

Write back

26

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

Page 14: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

14

27

Se analizará la siguiente secuencia de instrucciones:

lw $10, 20 ($1)sub $11, $2, $3

28

Page 15: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

15

29

30

Page 16: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

16

31

32

Page 17: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

17

33

34

Page 18: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

18

35

36

Page 19: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

19

37

38

Page 20: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

20

39

40

Proceso de ejecución de SWIF: la instrucción es capturada de memoria y almacenada en IF/IDID: 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/EXEX: Se suma el 1er registro y el la constante extendida a 32 bits, se almacenan en EX/MEMMEM: 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

Page 21: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

21

41

Proceso de ejecución de SW

42

Ejecución de SW

Page 22: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

22

43

Ejecución de una secuencia de instrucciones

44

Ejecución de las 5 instrucciones a la vez

Page 23: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

23

45

El control segmentado

46

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).

Page 24: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

24

47

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).

48

Las señales de control

Page 25: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

25

49

Valores para el controlLas 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.

50

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.

Page 26: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

26

51

52

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, $3and $12, $4, $5or $13, $6, $7add $14, $8, $9

Page 27: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

27

53

54

Page 28: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

28

55

56

Page 29: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

29

57

58

Page 30: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

30

59

60

Page 31: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

31

61

62

Ejemplo

Ejecución de la secuencia de instrucciones:

Lw $10, 9( $1)Sub $11, $2, $3And $12, $4, $5Or $13, $6, $7Add $14, $8, $9

Page 32: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

32

63

64

Page 33: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

33

65

66

Page 34: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

34

67

68

Page 35: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

35

69

70

Page 36: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

36

71

72

Segmentación en el procesador Alpha 21264

Page 37: Segmentación - UTMmixteco.utm.mx/~merg/AC/pdfs/segmentacion.pdf · 1e6 * 800ps / 1e6 * 200ps ̴4 ... unidades funcionales resaltadas en la figura siguiente de la memoria de código

37

73