Pipeline: Peligros de datos

Slides:



Advertisements
Presentaciones similares
Simulación en VHDL del Datapath del MIPS
Advertisements

El modelo de Von Neumann
Diseño de la ruta de datos monociclo para la arquitectura MIPS
Procesadores Pipeline II
Camino de Datos y Control
Scheduling dinámico Scoreboarding.
Datapath para las instrucciones aritméticas y lógicas
Departamento de Ingeniería de Sistemas Universidad de Antioquia
Departamento de Ingeniería de Sistemas Universidad de Antioquia
Arquitectura de Computadores
Datapath DLX.
EL Sistemas Digitales Ing. José Alberto Díaz García Escuela de Ingeniería Electrónica Arquitectura Segmentada Pipeline (Segmentación)
CLASE 11.
ISA (Instruction Set Architecture)
PLANIFICACIÓN DINÁMICA DE INSTRUCCIONES
Unidad 2: Organización del CPU
Instrucciones: FORMATO DE INSTRUCCIONES
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 18 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Capítulo 5 El procesador Félix García Carballeira Jesús Carretero Pérez José Daniel Sánchez García David Expósito Singh © Ediciones Paraninfo1.
Scheduling dinámico Algoritmo de Tomasulo.
El procesador Creando un solo datapath. Universidad de SonoraArquitectura de Computadoras2 Introducción 1. Crear un solo datapath a partir de los datapaths.
Organización del Computador I Verano Excepciones Basado en el capítulo 6 del libro de Patterson y Hennessy Verano 2004Profesora Borensztejn.
Datapath para las instrucciones de carga y almacenamiento (load/store)
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.
Departamento de Ingeniería de Sistemas Universidad de Antioquia
Organización del Computador I Verano Procesador Segmentado Basado en el capítulo 6 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
CLASE 13.
El procesador Diseño del control.
Cap. 6: Pipelining. Encauzamiento de procesadores
Diseño del procesador uniciclo
CLASE 14.
Instruction fetch cycle (IF) IR
Simulación en VHDL del Controlador FSM del MIPS
ARQUITECTURA DE COMPUTADORES
Arquitectura de Computadoras (Taller) Semestre II de 2008.
Objetivos Cómo ejecuta el hardware las operaciones básicas (suma, resta, división y multiplicación). Qué pasa si una operación genera un número más grande.
El procesador Datapath y control. Universidad de SonoraArquitectura de Computadoras2 Introducción En esta parte del curso contiene: Las principales técnicas.
Problemas Capitulo Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1.
Memoria Cachés.
Procesadores superescalares
Microprocesador Estructura interna.
Fundamentos de los Computadores Grado en Ingeniería Informática
Pipelining Peligros de control.
Unidad aritmético-lógica
El procesador Diseño del control.
Superescalares Scheduling estático.
Pipelining Datapath y control.
Datapath para las instrucciones aritméticas y lógicas
Datapath para las instrucciones de brinco
Arquitectura de Computadoras 2012
Excepciones e interrupciones
Pipelining Peligros (hazards).
Organización del Computador
Datapath para las instrucciones de carga y almacenamiento (load/store)
Arquitectura 2013 Explicación 4.
Arquitectura 2013 Explicación 4.
Creando un solo datapath
Pipelining Introducción.
Organización del Computador
Organización del Computador
8. Diseño del Procesador Fundamentos de los Computadores
Pipeline: Peligros de datos
Scheduling dinámico: algoritmo de Tomasulo
Pipelining Peligros de control.
El procesador Datapath y control.
Pipelining Peligros de control.
Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1.
Transcripción de la presentación:

Pipeline: Peligros de datos Forwarding versus Stalling

Dependencias Considerar el siguiente código: sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Las instrucciones 2 a 5 dependen de $2. Universidad de Sonora

Pipeline Suponer lo siguiente: $2 vale 10 antes de la resta y -20 después. No hay bypass (forwarding). Se puede escribir y leer (en ese orden) un registro en el mismo ciclo. Universidad de Sonora

Pipeline Los peligros son las líneas que van hacia atrás en el tiempo. Universidad de Sonora

Bypass El resultado de la resta está listo al final de la etapa EX. Los peligros se resuelven si en cuanto esté listo el resultado se envía a las siguientes instrucciones. Ahora se verá cómo se realiza este envío. El primer paso es detectar los peligros. Universidad de Sonora

Formatos de instrucción Fijarse en los nombres de los registros del formato R. Fuente: https://en.wikipedia.org/wiki/MIPS_instruction_set#MIPS_instruction_formats Universidad de Sonora

Condiciones para peligros 1a. EX/MEM.RegisterRd = ID/EX.RegisterRs. 1a. EX/MEM.RegisterRd = ID/EX.RegisterRt. 2a. MEM/WB.RegisterRd = ID/EX.RegisterRs. 2b. MEM/WB.RegisterRd = ID/EX.RegisterRt. Universidad de Sonora

Pipeline Aquí se pueden los registros del pipeline y entender las condiciones para peligros Universidad de Sonora

Ejemplo Para el ejemplo: sub $2, $1, $3 and $12, $2, $5 La condición es: EX/MEM.RegisterRd = ID/EX.RegisterRs = $2. Y por lo tanto hay un peligro. Universidad de Sonora

Ejemplo Clasificar los peligros en el siguiente código: sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) El peligro sub-and es de tipo 1a: EX/MEM.RegisterRd = ID/EX.RegisterRs = $2. El peligro sub-or es de tipo 2b: MEM/WB.RegisterRd = ID/EX.RegisterRt = $2. Universidad de Sonora

Ejemplos Las dependencias sub-add y sub-sw no generan peligros. Universidad de Sonora

Consideraciones Hay que tomar en cuenta que no todas las instrucciones escriben en el banco de registros. Por ejemplo beq $t0, $t1, etiqueta add $s0, $t0, $t1 No genera dependencias ni peligros. Esto se resuelve checando si la señal RegWrite va a estar activa en la etapa WB. Universidad de Sonora

Consideraciones También tomar en cuenta que si el registro destino es $zero ($0) el resultado debe ser siempre cero. Por ejemplo: add $zero, $t0, $t1 sub $s0, $zero, $s1 El resultado de la suma es cero sin importar los valores de $t0 y $t1. La suma no debe enviar el valor de $t0 + $t1 a la resta. Universidad de Sonora

Consideraciones Esto se resuelve revisando el número del registro: Hay que agregar: EX/MEM.RegisterRd != 0 a la primera condición. MEM/WB.RegisterRd != 0 a la segunda condición. Universidad de Sonora

Pipeline con bypass Con lo anterior se pueden detectar los peligros. Falta ver cómo se implementa la unidad de bypass (o unidad de forwarding). Universidad de Sonora

Pipeline con bypass Universidad de Sonora

Unidad de bypass Se necesita que las entradas de la ALU puedan venir de otros registros, no sólo de ID/EX. Se colocan multiplexores (muxes) en las entradas de la ALU. Universidad de Sonora

Datapath sin bypass Fuente: COD 5, p. 309 Universidad de Sonora

Datapath con bypass Fuente: COD 5, p. 309 Universidad de Sonora

Líneas de control Fuente: COD 5, p. 310 Universidad de Sonora

Unidad de bypass La unidad de bypass está en la etapa EX porque ahí están los multiplexores de la ALU. Hay que pasar los operandos: Campo rt (bits [20:16]). Campo rs (bits [25:21]). Universidad de Sonora

Condiciones Se actualizan las condiciones para detectar peligros: Universidad de Sonora

Peligro EX if (EX/MEM.RegWrite and (EX/MEM.RegisterRd != 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) then ForwardA = 10 and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) then ForwardB = 10 Universidad de Sonora

Peligro MEM if (MEM/WB.RegWrite and (MEM/WB.RegisterRd != 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) then ForwardA = 01 and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) then ForwardB = 01 Universidad de Sonora

Condiciones Las condiciones para el peligro MEM están incompletas. Ocurre si hay un peligro de datos entre: El resultado de la instrucción en la etapa WB. El resultado de la instrucción en la etapa MEM. El operando fuente en la etapa EX. Universidad de Sonora

Condiciones Por ejemplo, considerar el siguiente código: add $1, $1 $2 … Todas las instrucciones leen y escriben el mismo registro. Hay que actualizar las condiciones para el peligro MEM. Universidad de Sonora

Peligro MEM if (MEM/WB.RegWrite and (MEM/WB.RegisterRd != 0) and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd != 0) and (EX/MEM.RegisterRd != ID/EX.RegisterRs)) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) then ForwardA = 01 Universidad de Sonora

Peligro MEM if (MEM/WB.RegWrite and (MEM/WB.RegisterRd != 0) and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd != 0) and (EX/MEM.RegisterRd != ID/EX.RegisterRt)) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) then ForwardB = 01 Universidad de Sonora

Datapath con bypass Fuente: COD 5, p. 311 Universidad de Sonora

Zoom de EX y MEM Fuente: COD 5, p. 312 Universidad de Sonora

Tema avanzado Agregar un bypass del registro MEM/WB a la etapa MEM. Con esto se evitan stalls en una serie de instrucciones lw/sw. Ejemplo: una secuencia para copias memoria/memoria. Universidad de Sonora

Tema avanzado lw $t0, 0($s0) sw $t0, 0($s1) lw $t0, 4($s0) sw $t0, 4($s1) lw $t0, 8($s0) sw $t0, 8($s1) … Universidad de Sonora

Detención (stall) En la siguiente secuencia: lw $t0, 0($s0) add $t2, $t0, $t1 El peligro de datos no puede resolverse por bypass. Por ejemplo: Universidad de Sonora

Detención (stall) Fuente: COD 5, p. 313 Universidad de Sonora

Detención (stall) Se necesita detener (stall) el pipeline por un ciclo. Esto se logra insertando una instrucción nop (no operand) entre lw y add. Se necesita una unidad de detección de peligros. Universidad de Sonora

Detención (stall) La unidad opera en la etapa ID. La condición es: If (ID/EX.MemRead and ((ID/EX.RegisterRt = IF/ID.RegisterRs) or (ID/EX.RegisterRt = IF/ID.RegisterRt))) detén (stall) el pipeline. Universidad de Sonora

Detención (stall) La instrucción después de la carga se debe volver a leer al siguiente ciclo. En la detención ni el registro PC ni el registro del pipeline IF/ID deben cambiar. El nop se puede lograr poniendo todas las señales de control de las etapas EX, MEM y WB en 0. Universidad de Sonora

Cómo se inserta un nop Cómo se inserta un nop. Fuente: COD 5, p. 315 Universidad de Sonora

Explicación La instrucción AND se convierte en nop. Las instrucciones, comenzando con AND, se retrasan 1 ciclo. El AND y el OR repiten en el ciclo 4 lo que habían hecho en el 3. El AND vuelve a leer decodificarse y leer registros. El OR se vuelve a sacar de la memoria de instrucciones. Universidad de Sonora

Pipeline La unidad de detección de peligros (HDU) se agrega al pipeline. La unidad de bypass controla los muxes de la ALU. La HDU controla: La escritura a los registros PC y IF/ID. El mux que selecciona entre los valores reales de las señales y puros ceros. La HDU detiene el pipeline y pone las señales de control en 0 si se cumple la condición vista antes. Universidad de Sonora

Pipeline Fuente: COD 5, p. 316. Universidad de Sonora