Forwarding versus Stalling

Documentos relacionados
Forwarding versus Stalling

Fig Riesgos por dependencias de datos.

Segmentación del Path de Datos

Ejercicios para el 3er parcial

El procesador. Diseño del control

Tema 6. Introducción a la segmentación avanzada: Riesgos

Pipelining. Introducción

Pipelining o Segmentación de Instrucciones

Arquitectura de Computadores

Qué es Pipelining? Es una técnica de implementación en la que se superpone la ejecución de varias instrucciones.

Segmentación: Mejora del rendimiento. IEC UTM Moisés E. Ramírez G. Segmentación

ARQUITECTURA DE COMPUTADORES CAPÍTULO 2. PROCESADORES SEGMENTADOS

Tema 1: PROCESADORES SEGMENTADOS

La Unidad de Control y el Camino de Datos

Arquitectura de Computadores Problemas (hoja 2). Curso

TEMA 2: PARALELISMO INTERNO EN SISTEMAS COMPUTADORES SEGMENTACION

Procesador Segmentado

Tratamiento de Excepciones en MIPS

3. SEGMENTACIÓN DEL CAUCE

Pipeline (Segmentación)

Arquitectura de Computadores

Pipeline o Segmentación Encausada

Tutorías con Grupos Reducidos (TGR) Sesión 2: Paralelismo a Nivel de Instrucción

ARQUITECTURA DE COMPUTADORES CAPÍTULO 2. PROCESADORES SEGMENTADOS

MICROPROCESADOR. Multiciclo

El procesador. Datapath y control

Procesador Segmentado

ALU. Unidad aritmético-lógica

Universidad de Sonora Arquitectura de Computadoras 2

Arquitectura de Computadoras. Clase 4 Segmentación de Instrucciones

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso Introducción a la segmentación de Instrucciones.

ARQUITECTURA DE COMPUTADORES Problemas TEMA 4: Microprocesadores avanzados

Sección de procesamiento: El camino de datos

Arquitectura de Computadores II Clase #5

UNIDAD 5: Mejora del rendimiento con la segmentación.

Arquitectura de Computadoras Trabajo Práctico N 8 Pipeline de Instrucciones 1 Primer Cuatrimestre de 2016

Arquitectura de Computadoras Trabajo Práctico N 7 Pipeline de Instrucciones Primer Cuatrimestre de 2010

Aspectos avanzados de arquitectura de computadoras Pipeline. Facultad de Ingeniería - Universidad de la República Curso 2017

Segmentación del ciclo de instrucción v.2016

Procesadores superescalares. Introducción

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores Terecer Certamen

Microarquitectura: DISEÑO DE SISTEMAS DIGITALES EL-3310 I SEMESTRE MICROARQUITECTURA: FLUJO DE DATOS Y CONTROL DEL MICROPROCESADOR

OBJETIVOS ALGUNAS CONSIDERACIONES SOBRE WINDLX

Circuitos Digitales II y Laboratorio Fundamentos de Arquitectura de Computadores

ADDI R4,R0,#2 ADDI R1,R0,#40 LOOP: LW R2,0(R1) SUBI R3,R2,#1 MUL R2,R3,R2 DIV R2,R3,R4 SW 0(R1),R2 SUBI R1,R1,#4 BNEZ R1, LOOP ADDI R4,R0,#0

Procesadores segmentados. El DLX.

EXCEPCIONES ARQUITECTURA DEL PROCESADOR II

Plataformas de soporte computacional: arquitecturas avanzadas,

Arquitectura de Computadores. Tema 4 PROCESADORES SEGMENTADOS

Arquitectura Segmentada: Conceptos básicosb

5. PREDICCIÓN DINÁMICA DE SALTOS

Introducción a la arquitectura de computadores

16/04/2012. Introducción. Construyendo el Datapath. Esquema de implementación Simple. Unidad de Control. Arquitectura de Computadoras Primavera 2012

Estructura de Computadores

SEGMENTACIÓN EN LA EJECUCIÓN DE INSTRUCCIONES

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE ELECTROTECNIA Y COMPUTACION INGENIERIA EN COMPUTACION ARQUITECTURA DE MAQUINAS III. SIMULADOR DLX (jbz)

COMPUTADORES SEGMENTADOS (DLX)

Arquitectura de Computadores Problemas (hoja 2). Curso

Diseño de la ruta de datos y la unidad de control

Tema 5. Segmentación: conceptos básicos

EXAMEN DE ARQUITECTURA II Septiembre, 2010

ARQUITECTURA VON NEUMANN

Arquitectura de Computadores. Resumen para Certamen 2 Por Franco Zuccar

Arquitecturas RISC. Arquitectura de Computadoras y Técnicas Digitales - Mag. Marcelo Tosini Facultad de Ciencias Exactas - UNCPBA

ARQUITECTURA DE SISTEMAS PARALELOS. 3º INGENIERÍA TECNICA EN INFORMÁTICA DE SISTEMAS. PRÁCTICA 6 (curso 03/04) SEGMENTACION EN EL PROCESADOR DLX

Planificación dinámica - Concepto

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

Arquitectura e Ingeniería de Computadores

Segmentación del ciclo de instrucción

Segmentación del ciclo de instrucción

Soluciones a ejercicios de Paralelismo a Nivel de instrucción

Práctica III Introducción a la descripción VHDL del procesador DLX

1) En un DLX con segmentación ejecutamos el siguiente fragmento de código:

CU6 FPGA. up16 DIV_CLK CLK_UP16 CLK PC16R MUXMAR BUS MAR RST DIR MEM MEMORIA MEMORIA BUS MUXRX DATA MEM BUS CONTROL CPU ALU BUS MDRO MDRI DATA MEM OUT

Segmentación de cauce

CICLOS DEL PROCESADOR

Diseño del procesador MIPS R2000

Operaciones lógicas y repetición

Tema 2. Diseño del repertorio de instrucciones

Carga de la instrucción / Decodificación y carga de registros (Figura 37) Instrucciones de salto condicional (Figura 40)

Segmentación de instrucciones

Arquitectura t de Computadores

Apellidos Nombre Grupo. Arquitectura e Ingeniería de Computadores. Examen Final (Teoría parte primer cuatrimestre). 18/06/2012

Arquitectura de Computadoras. Clase 5 Posibles soluciones a atascos

Transcripción:

Forwarding versus Stalling

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

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 3

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

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 5

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 6

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

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 8

Ejemplo Clasificar los peligros en el siguiente código: 1.sub $2, $1, $3 2.and $12, $2, $5 3.or $13, $6, $2 4.add $14, $2, $2 5.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 9

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

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 11

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 12

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 13

Condiciones actualizadas 1a. if (EX/MEM.RegWrite and (EX/MEM.RegisterRd!= 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) 1b. if (EX/MEM.RegWrite and (EX/MEM.RegisterRd!= 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) Universidad de Sonora 14

Condiciones actualizadas 2a. if (MEM/WB.RegWrite and (MEM/WB.RegisterRd!= 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) 2b. if (MEM/WB.RegWrite and (MEM/WB.RegisterRd!= 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) Universidad de Sonora 15

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 16

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

Peligro MEM 2a. 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 18

Peligro MEM 2b. 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 19

Pipeline con bypass Con lo anterior se pueden detectar los peligros. Falta ver cómo se implementa la unidad de bypass (a.k.a. unidad de forwarding). Los detalles típicamente se estudian en un curso avanzado. Universidad de Sonora 20

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

Detención (stall) Cómo se implementa un 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 22

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

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 24

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 25

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 26

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

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 28

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 29

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