La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Departamento de Ingeniería de Sistemas Universidad de Antioquia

Presentaciones similares


Presentación del tema: "Departamento de Ingeniería de Sistemas Universidad de Antioquia"— Transcripción de la presentación:

1 Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1
ISI374 – Arquitectura de Computadores Clase 14: Repaso (Diseño del microprocesador, segmentación) Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1

2 La CPU en el modelo de von Neumann
Procesador (CPU) Ruta de datos (datapath) Porción del procesador que corresponde al HW necesario para ejecutar las operaciones que él demanda Unidad de control Porción del procesador (también en HW) que le indica al datapath lo que debe hacer

3 Implementación básica MIPS
Subconjunto de la arquitectura MIPS (suficiente para ilustrar los principios que orientan el diseño de un datapath y una unidad de control para cualquiera otra ISA) Instrucciones de acceso a memoria Load word, lw Store word, sw Instrucciones aritmético-lógicas Suma, add Resta, sub AND lógica, and OR lógica, or Set on less than, slt Instrucciones de salto Branch if equal, beq Jump, j

4 Diseño del procesador monociclo
Cinco pasos para diseñar un procesador: Analizar la arquitectura del conjunto de instrucciones (ISA) Para conocer los requerimientos del datapath Establecer los componentes del datapath y elegir el esquema de reloj Ensamblar el datapath satisfaciendo los requerimientos Analizar la implementación de las instrucciones para determinar las señales de control que tendrán efecto sobre el flujo de datos Construir la lógica de control

5 Datapath con la unidad de control

6 Control de la ALU Las líneas de control de la ALU se pueden generar usando una pequeña unidad de control (ALU control) que tiene como entradas el campo funct de 6 bits de la instrucción y un campo de control de 2 bits al que llamaremos ALUop Los valores de ALUop se generan en la unidad de control principal El uso de varios niveles de control permite reducir el tamaño de la unidad de control principal (potencialmente incrementando su velocidad) opcode ALUOp Operación funct Función ALU Control ALU lw 00 load word XXXXXX add 0010 sw store word beq 01 branch equal subtract 0110 Tipo R 10 100000 100010 AND 100100 0000 OR 100101 0001 set-on-less-than 101010 0111

7 Control de la ALU Tabla de verdad para las líneas de control de la ALU (Operation), cuyas entradas son ALUop y el campo funct Una posible implementación:

8 Función de control para el procesador MIPS monociclo
La función de control se puede definir mediante una tabla de verdad Las salidas son las líneas de control y las entradas son el campo opcode de la instrucción

9 Datapath y unidad de control con instrucción jump

10 Desventajas del procesador monociclo
El ciclo de reloj debe contener la instrucción más lenta Muy problemático si las instrucciones fueran más complejas (Ej: punto flotante) Muchos tipos de instrucciones soportarían un ciclo de reloj inferior Viola el principio de diseño “Hacer el caso común más rápido” El costo de la implementación hardware puede ser alto porque muchas unidades funcionales tienen que replicarse (debido a que la misma unidad no puede usarse más de una vez en el mismo ciclo de reloj) Sin embargo, es un diseño simple y fácil de comprender Soluciones alternativas: Reducir el ciclo de reloj y hacer que cada instrucción se ejecute en varios ciclos Procesador multi-ciclo Solapar la ejecución de varias instrucciones elevando la utilización del hardware y el rendimiento Segmentación (pipelining) Buscar y ejecutar varias instrucciones a la vez Procesadores superescalares

11 Segmentación: analogía con una lavandería
La segmentación no reduce la latencia de una tarea, sino que eleva el throughput de un proceso completo Varias tareas operan simultáneamente usando recursos diferentes La rata del pipeline está limitada por la etapa más lenta Etapas desequilibradas del pipeline reducen el speedup Speedup potencial: número de etapas del pipe El speedup se reduce porque hay que llenar (fill) y vaciar (flush) el pipeline 6 PM 7 8 9 10 Time 30 T a s k O r d e B C D A

12 Pasos en la ejecución de una instrucción MIPS
IF: (Instruction Fetch) Búsqueda de la instrucción, actualización del PC ID: (Instruction Decode) Decodificación de la instrucción, lectura del banco de registros EX: (Execution) Instrucción de acceso a memoria: Cálculo de la dirección Instrucción aritmético-lógica: Cálculo de la operación MEM: (Memory) Load: Lectura de la memoria de datos Store: Escritura de la memoria de datos WB: (Write Back) Escritura del resultado en el banco de registros

13 Procesador MIPS segmentado
Tendremos cinco etapas, una por cada paso de ejecución de una instrucción Cada etapa del pipeline se completa en un ciclo de reloj Cada instrucción toma el mismo número de etapas (5) para ejecutarse, aunque algunas de ellas estén inactivas algunas veces Mejora el throughput aunque la latencia de cada instrucción no se reduce Time cc 1 cc 2 cc 3 cc 4 cc 5 cc 6 cc 7 cc 8 cc 9 Una vez el pipeline está lleno, se finaliza una instrucción cada ciclo (CPI = 1) IF ID EX MEM WB Instr. i Instr. i+1 Instr. i+2 Instr. i+3 Instr. i+4

14 Representación gráfica del pipeline
Útil para: Saber cuántos ciclos de reloj toma la ejecución de un código Saber qué hace una unidad funcional en un ciclo determinado Si ocurre un riesgo (hazard), saber porqué y saber cómo resolverlo

15 Riesgos (Hazards) El principio de la segmentación es simple pero su implementación introduce una serie de problemas Riesgos (Hazards) Situaciones en las cuales la próxima instrucción no puede ejecutarse en el siguiente ciclo de reloj Pueden obligar a detener (stall) el pipeline, evitando que se logre el speedup ideal Los riesgos se pueden resolver esperando, pero será el controlador del pipeline quien los detecte y resuelva Tipos: Riesgos estructurales (Structural hazards) Riesgos de datos (Data hazards) Riesgos de control (Control hazards)

16 Riesgos estructurales
¿Qué sucede con los accesos al banco de registros? Para resolver el riesgo estructural al momento de acceder al banco de registros, las escrituras se realizan en la primera mitad del ciclo, y las lecturas en la segunda add $t0, $t1, $t2 Instr. 1 Instr. 2 add $s2, $t0, $s3 Clock Flanco de reloj que controla la escritura de resultados en el banco de registros Flanco de reloj que controla la lectura de operandos del banco de registros

17 Riesgos de datos Considere la ejecución segmentada de la siguiente secuencia de instrucciones: add $t0, $t1, $t2 sub $t3, $t0, $t4 and $t5, $t0, $t6 or $t7, $t0, $t8 nor $t9, $t0, $t9 Las dependencias de datos hacia atrás en el tiempo ocasionan riesgos de datos

18 Adelantamiento (Forwarding, bypassing, short-circuiting)
Técnica hardware para solucionar algunos riesgos de datos No es necesario esperar a que una instrucción se ejecute por completo para resolver el riesgo de datos Es posible usar un resultado tan pronto como se calcula, sin tener que esperar a que sea escrito en el banco de registros Requiere conexiones extras en el datapath Los caminos de adelantamiento son válidos si la etapa de destino es posterior en el tiempo a la etapa de origen

19 Adelantamiento (Forwarding, bypassing, short-circuiting)
Ejemplo 1: add $t0, $t1, $t2 sub $t3, $t0, $t4 and $t5, $t0, $t6 or $t7, $t0, $t8 nor $t9, $t0, $t9

20 Adelantamiento (Forwarding, bypassing, short-circuiting)
Ejemplo 2: add $t0, $t1, $t2 lw $t3, 0($t0) sw $t3, 12($t0)

21 Adelantamiento (Forwarding, bypassing, short-circuiting)
No todos los riesgos de datos pueden resolverse mediante adelantamiento Riesgo de datos asociado con el uso de LOAD Pipeline sin detección de riesgo ld $t1, 0(t0) sub $t3, $t1, $t2 and $t4, $t1, $t5 or $t6, $t1, $t7 Pipeline con detección de riesgo or $t6, $t1,$t7 No es posible el adelantamiento

22 Reordenamiento de código para evitar paradas del pipe
Ejemplo: Considere un segmento de código MIPS. Determine los riesgos y reordene el código para evitar paradas del pipeline lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) lw $t1, 0($t0) lw $t2, 4($t0) lw $t4, 8($t0) add $t3, $t1, $t2 sw $t3, 12($t0) add $t5, $t1, $t4 sw $t5, 16($t0) stall stall 13 ciclos 11 ciclos

23 Riesgos de control beq instr. 1 instr. 2 instr. 3 instr. 4
17% de las instrucciones MIPS ejecutadas son saltos (bne, beq) (SPECint2006) Los saltos determinan el flujo de programa La siguiente instrucción a ejecutar depende del resultado del salto beq instr. 1 instr. 2 instr. 3 instr. 4

24 Riesgos de control Solución inicial: Stall on branch
Detenerse hasta que la decisión de salto sea tomada para buscar la siguiente instrucción Insertar burbujas (instrucciones nop, No Operation, aquellas que no hacen nada y sólo ocupan tiempo) para retrasar la búsqueda de la siguiente instrucción durante 2 ciclos En nuestro caso, los saltos toman 3 ciclos de reloj cada uno (el comparador está en la etapa EX)

25 Riesgos de control Optimización #1
Insertar un comparador para saltos en la segunda etapa (ID) Tan pronto como se decodifica la instrucción de salto, tomar una decisión y ajustar el nuevo valor del PC Como el salto se completa en la segunda etapa, sólo se introduce una burbuja Los saltos toman 2 ciclos de reloj cada uno (el comparador está en la etapa ID) Esto significa que los saltos están inactivos en las etapas 3, 4 y 5 (EX, MEM y WB, respectivamente)

26 Riesgos de control Optimización #2. Redefinición de los saltos Antes:
Si el salto se toma, ninguna de las instrucciones que siguen al salto se ejecutan por accidente Ahora: Se tome o no el salto, la instrucción inmediatamente posterior al salto se ejecuta (y se denomina branch delay slot, hueco de salto diferido o retardado) El término delayed branch (salto diferido o retardado) significa que la instrucción que sigue al salto siempre se ejecuta Esta optimización es la que emplea MIPS

27 Riesgos de control Comportamiento del salto diferido (delayed branch) Es trabajo del compilador lograr que la instrucción que ocupa el hueco diferido sea válida y útil

28 Riesgos de control Branch delay slot (Comentarios)
Como la instrucción que sigue al salto siempre se ejecuta: Escenario del peor caso: insertar una burbuja en el hueco de salto retardado porque no hay otra alternativa Escenario del caso más favorable: es posible encontrar una instrucción anterior al salto que pueda insertarse en el hueco de salto diferido sin que el flujo de programa se vea afectado El reordenamiento de instrucciones es una práctica común para acelerar programas El compilador debe ser muy hábil para encontrar las instrucciones adecuadas Normalmente el 50% de las veces se hallan estas instrucciones

29 Riesgos de control Gestión del hueco de salto diferido por parte del compilador En las dos últimas opciones, la ejecución de la instrucción que se mueve no debe producir problemas si el salto va en la dirección contraria a la esperada add $s1, $s2, $s3 beq $s2, $zero, LBL . . . LBL: LBL: sub $t4, $t5, $t6 . . . add $s1, $s2, $s3 beq $s1, $zero, LBL add $s1, $s2, $s3 beq $s1, $zero, LBL or $t1, $t2, $t3 . . . LBL: sub $t4, $t5, $t6 hueco de salto hueco de salto hueco de salto se transforma en se transforma en se transforma en beq $s2, $zero, LBL . . . LBL: LBL: sub $t4, $t5, $t6 LBLx: . . . add $s1, $s2, $s3 beq $s1, $zero, LBLx add $s1, $s2, $s3 beq $s1, $zero, LBL . . . LBL: sub $t4, $t5, $t6 add $s1, $s2, $s3 or $t1, $t2, $t3 sub $t4, $t5, $t6

30 Lecturas recomendadas
Computer organization and design. The hardware/software Interface, 3rd ed., Chapter 5. D. Patterson & J. Hennessy. Morgan Kaufmann Publishers


Descargar ppt "Departamento de Ingeniería de Sistemas Universidad de Antioquia"

Presentaciones similares


Anuncios Google