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

Documentos relacionados
Tema 5. Segmentación: conceptos básicos

Arquitectura de Computadores II Clase #5

Tema 1: PROCESADORES SEGMENTADOS

3. SEGMENTACIÓN DEL CAUCE

Tema 10. Introducción a la op5mización de código

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

Arquitectura de Computadores Problemas (hoja 2). Curso

Pipeline (Segmentación)

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

ARQUITECTURA DE COMPUTADORES Problemas TEMA 4: Microprocesadores avanzados

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

Ejercicios de Paralelismo a Nivel de Instrucción

Tema 4. Condiciones para el paralelismo: Dependencias

Tema 7: Procesadores superescalares

TEMA 2: PARALELISMO INTERNO EN SISTEMAS COMPUTADORES SEGMENTACION

Paralelismo al nivel de instrucciones

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

Definición de prestaciones

Procesador Segmentado

Fig Riesgos por dependencias de datos.

Arquitectura de Computadoras. Clase 4 Segmentación de Instrucciones

Tema 2. CPU: Introducción

Arquitectura de Computadores Problemas (hoja 4). Curso

Procesadores segmentados. El DLX.

Estrategias de predicción dinámicas.

Pipeline o Segmentación Encausada

Arquitectura de Computadores

Departamento de Automática

ARQUITECTURA DE COMPUTADORES. Práctica 8

Estructura de Computadores II

Tratamiento de Excepciones en MIPS

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

ARQUITECTURA DE COMPUTADORES CAPÍTULO 2. PROCESADORES SEGMENTADOS

Departamento de Automática

Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS

Arquitectura de Computadores. Tema 4 PROCESADORES SEGMENTADOS

Ingeniería Informática. Ampliación de Estructura de Computadores. Curso

Arquitectura de Computadores II Clase #16

Arquitectura Segmentada: Conceptos básicosb

1. Objetivo y evolución de los procesadores ILP.

Introducción a los procesadores ILP (Instruction-Level Parallel)

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

La Unidad de Control y el Camino de Datos

ARQUITECTURA DE COMPUTADORES CAPÍTULO 2. PROCESADORES SEGMENTADOS

OBJETIVOS ALGUNAS CONSIDERACIONES SOBRE WINDLX

ARQUITECTURA DE COMPUTADORES

Arquitectura t de Computadores Clase 10: Diseño del microprocesador monociclo pt.2

Arquitectura de Computadoras I Ingeniería de Sistemas Curso 2017

5. PREDICCIÓN DINÁMICA DE SALTOS

Arquitectura de Computadores II Clase #4

Arquitectura de Computadores. Tema 11. Pipelining Avanzado

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

Procesadores superescalares. Introducción

Organización del Computador I Verano. Control Multiciclo. Basado en el capítulo 5 del libro de Patterson y Hennessy

Arquitectura de Computadores II Clase #3

SEGMENTACIÓN EN LA EJECUCIÓN DE INSTRUCCIONES

2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES

int vector[100]; // en principio vector tiene al menos // cien elementos aunque pueda tener más... for (i=0; i<100; i++) vector[i] = vector[i] + 1;

Procesador Segmentado

Cuestionario Unidad 4: Procesamiento paralelo 2012

Arquitectura e Ingeniería de Computadores. Examen Parcial. 7/02/2012

COMPUTADORES SEGMENTADOS (DLX)

6. PROCESADORES SUPERESCALARES Y VLIW

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

Tema 11. Riesgos de control y predicción de saltos

Convenciones. Introducción. Unidades principales en la implementación. El procesador: camino de datos y control. Tipos de elementos:

2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES

Plataformas de soporte computacional: arquitecturas avanzadas,

PIPELINING: Antes de adentrarnos en el tema, veremos una analogía de un pipeline:

TEMA 3. PLANIFICACIÓN (SCHEDULING) DE INSTRUCCIONES Arquitectura de Sistemas Paralelos 1. pág 2. direcc MEM

Arquitectura t de Computadores

ARQUITECTURA VON NEUMANN

HISTORIA DEL PIPELINE. Juan Antonio Romano Largo. Arquitectura de Computadores.

TEMA 4. ARQUITECTURA IA-64

Paralelismo en monoprocesadores. Procesadores VLIW

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

Arquitectura e Ingeniería de Computadores

Explotación del paralelismo a nivel de instrucción

Arquitectura de Computadoras. Clase 5 Posibles soluciones a atascos

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

ARQUITECTURA DE COMPUTADORAS

Diseño del procesador MIPS R2000

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

Unidad 4 - Procesamiento paralelo. Arquitectura de computadoras. D o c e n t e : E r n e s t o L e a l. E q u i p o : J e s s i c a F i e r r o

GUÍA DE APRENDIZAJE ARQUITECTURA DE COMPUTADORES

Introducción a la arquitectura de computadores

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

#define MAX 1024 void escala_vect (float A[MAX], float B[MAX], float k) { int i; for (i=0; i < MAX; i++) B[i]=k*A[i]; }

Procesadores de palabra de instrucción muy larga (VLIW) v.2012

1.2. Implementación de Procesadores Superescalares

ARQUITECTURA SPARC: FORMATO DE INSTRUCCIÓN

Arquitectura de Computadores. Resumen para Certamen 2 Por Franco Zuccar

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

Multiplicación de matrices con DLX

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

Arquitectura de Computadores

Arquitectura del CPU. Organización del Computador 1 Verano 2016

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

Implementación de instrucciones para el procesador MIPS de ciclo único.

Transcripción:

Tema 6. Introducción a la segmentación avanzada: Riesgos Organización de Computadores LUIS ENRIQUE MORENO LORENTE RAÚL PÉRULA MARTÍNEZ ALBERTO BRUNETE GONZALEZ DOMINGO MIGUEL GUINEA GARCIA ALEGRE CESAR AUGUSTO ARISMENDI GUTIERREZ JOSE CARLOS CASTILLO MONTOYA Departamento de Ingeniería de Sistemas y Automática 1

PRESTACIONES DE UNA UNIDAD SEGMENTADA l El speedup ideal de una unidad segmentada es el número de etapas en el cauce l Como se pueden alcanzar estas prestaciones? Existen problemas que limitan las prestaciones alcanzables entre ellos tenemos: Operaciones cuyos 3empos de ejecución difieren mucho: un add de una mult Falta de recursos hardware Datos que no están disponibles cuando se requieren 2

RIESGOS EN UNA UNIDAD SEGMENTADA l Uno de los límites en la segmentación son los riesgos. Los riesgos impiden que la siguiente instrucción se ejecute en el ciclo de reloj que le corresponde. Pueden ser de tres 3pos: Riesgos de datos: la instrucción depende de resultados de instrucciones previas que aún están en el cauce Riesgos estructurales: el HW no puede soportar esta combinación de instrucciones Riesgos de control: la segmentación de instrucciones de salto condicional y de otros 3pos de instrucciones que cambian el PC l La solución más común a estos problemas consiste en detener el cauce hasta que el riesgo desaparece, esto provoca la inserción de burbujas en el funcionamiento del cauce 3

RIESGOS DE DATOS Instr1 seguida de Instr2 Riesgo Read A^er Write (RAW) Instr2 trata de leer un operando fuente antes de que la instr1 lo escriba Riesgo Write A^er Write (WAW) Instr2 trata de escribir un operando antes de que la instr1 lo escriba Si se escribe en más de una etapa, cuando se de3ene la primera escritura y se permite la segunda Riesgo Write A^er Read (WAR) Instr2 trata de escribir un resultado antes de que la instr1 lo lea Instrucciones que escriben resultados al comienzo del cauce con otras que leen un operando fuente tarde dentro del cauce 4

RIESGOS DE DATOS: READ AFTER WRITE (RAW) Instr J trata de leer un operando antes de que la Instr I lo escriba I: add r1,r2,r3 J: sub r4,r1,r3 Este problema se produce por una Dependencia (en terminología del compilador). Este riesgo es el resultado de de una necesidad real de comunicación de un dato. True dependence 5

RIESGOS DE DATOS: WRITE AFTER READ (WAR) La Instr J escribe el operando antes de que la Instr I lo lea I: sub r4,r1,r3 J: add r1,r2,r3 K: mul r6,r1,r7 Los diseñadores de compiladores denominan a este tipo de dependencia, anti-dependencia. Se produce como resultado de la reutilización del registro r1. En el caso de la arquitectura DLX con 5 etapas en el cauce no se puede producir ya que: Todas las instrucciones tienen 5 etapas, Las lecturas son siempre en la etapa 2 (ID), Las escrituras en la etapa 5 (WB) También llamada Name dependence 6

RIESGOS DE DATOS: WRITE AFTER WRITE (WAW) l Instr J escribe el operando antes de que la Instr I escribe en reg. I: sub r1,r4,r3 J: add r1,r2,r3 K: mul r6,r1,r7 l Los diseñadores de compiladores denominan a este 3po de dependencia, dependencia de salida. Se produce también como resultado de la reu3lización del nombre r1. l En el caso de la arquitectura DLX con 5 etapas en el cauce no se puede producir ya que : Todas las instrucciones son de 5 etapas, y Las escrituras se realizan siempre en la etapa 5 También llamada Name dependence 7

ILP (PARALELISMO A NIVEL DE INSTRUCCIÓN) Y RIESGOS DE DATOS l EL HW/SW deben preservar el orden del programa: el orden en el que las instrucciones deben ejecutarse si se ejecutan secuencialmente una cada vez, viene determinado por su posición en el programa original l Obje3vo del HW/SW: explotar el paralelismo preservando el orden del programa, solo donde este afecte a la salida del programa. l Las instrucciones implicadas en dependencias de nombre pueden ejecutarse simultáneamente si el nombre usado en la instrucción es modificado para que no exista conflicto Renombrado de registros resuelve la dependencias de nombre producidas por la reu3lización de los registros Esto puede hacerse por compilador o por HW 8

RIESGOS DE DATOS Problemas con el comienzo de las siguientes instrucciones antes de que termine la primera Las dependencias que retroceden en el tiempo son de datos Orden progr. Tiempo (ciclos de reloj) sub r2, r1, r3 and r12, r2, r5 or r13, r6, r2 and r14, r2, r2 sw r15, 100 (r2) 1 2 3 4 5 6 7 8 Escritura: r2 Cuales son lecturas incorrectas del reg r2? 9

SOLUCIONES A LOS RIESGOS DE DATOS l Los riesgos de datos pueden tratarse de diversas formas: So^ware: si el HW del proc. segmentado no es capaz de detectar y resolver los riesgos, esto 3ene que resolverse en el compilador. El compilador introduce instr de no- op después de cada instrucción que cause o pueda causar riesgos. Evita el malfuncionamiento, pero no reduce los retardos. El compilador puede reordenar el código del programa (planificación de instr) para mejorar el funcionamiento (se uso este enfoque en los primeros RISC). Hardware: Se pueden dis3nguir tres soluciones: Interbloqueo. Es la forma más simple, y consiste en detectar el riesgo y detener el cauce hasta que este desaparezca. Esta solución provoca burbujas en el cauce. Forwarding (an3cipación). Es más sofis3cada, requiere hardware adicional. Consiste en no esperar a leer los datos hasta el momento en que se escriban en estos, sino leerlo en cuanto que esta disponible. Como el forwarding no es capaz de resolver todos los riesgos de datos, hay que combinarlo con el interbloqueo. 10

RIESGOS RAW: SOLUCIÓN SW Introducir instrucciones de NOP (el compilador) Orden progr. Tiempo (ciclos de reloj) sub r2, r1, r3 nop nop and r12, r2, r5 or r13, r6, r2 and r14, r2, r2 sw r15, 100 (r2) 1 2 3 4 5 6 7 8 Escritura: r2 IF ID - - - IF ID - - - Lectura: r2 Problema: esto ralentiza mucho el funcionamiento 11

RIESGOS RAW: SOLUCIÓN HW INTERBLOQUEO Diseñar un HW que detecte los riesgos y detenga el cauce si es necesario Escritura: r2 Lectura: r2 sub r2, r1, r3 and r12, r2, r5 or r13, r6, r2 and r14, r2, r2 sw r15, 100 (r2) Detención del cauce: Burbuja de 2 ciclos Problema: esto ralentiza mucho el funcionamiento 12

BURBUJAS, DETENCIONES (STALLINGS) Es posible detener el cauce manteniendo una instrucción en la misma etapa Escritura: r2 Lectura: r2 sub r2, r1, r3 and r12, r2, r5 IF ID ID ID Ex M Wb or r13, r6, r2 and r14, r2, r2 sw r15, 100 (r2) Detención del cauce: Burbuja de 2 ciclos Como la etapa no puede finalizarse se mantiene la misma instrucción hasta que se completa 13

RIESGOS RAW: SOLUCIÓN HW FORWARDING (ANTICIPACIÓN) Utilizar los resultados cuando están disponibles, antes de que se escriban en el banco de registros Anticipación al banco de registros para permitir leer/escribir en el mismo registro Anticipación a la ALU, para adelantar una operación en la ALU que de otro modo tendría que esperar a que el dato se escribiera en el banco de registros y luego leerlo. Anticipación ALU-ALU: desde la salida de la ALU a alguno de los registros de entrada de la ALU. Anticipación MEM-ALU: desde la etapa MEM se anticipa el dato leído de la cache de datos a la entrada de la ALU. 14

ANTICIPACIÓN: EJEMPLO l An3cipación de datos Anticipación ALU-ALU: Evita la burbuja de 2 ciclos sub r2, r1, r3 and r12, r2, r5 or r13, r6, r2 and r14, r2, r2 sw r15, 100 (r2) Escritura: r2 Anticipación MEM-ALU Lectura: r2 15

HW PARA FORWARDING (ANTICIPACIÓN) ForwardA ForwardB Imagen de Parerson, 1997 16

HW PARA FORWARDING (ANTICIPACIÓN) Riesgo en EX If (EX/MEM.RegWrite and (EX/MEM.Rd = ID/EX.Rs)) then ForwardA=01 If (EX/MEM.RegWrite and (EX/MEM.Rd = ID/EX.Rt)) then ForwardB=01 Riesgo en MEM if (MEM/WB.RegWrite and!(ex/mem.regwrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) then ForwardA=10 if (MEM/WB.RegWrite and!(ex/mem.regwrite and (EX/MEM.RegisterRd 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) then ForwardB=10 17

EJEMPLO 1: FORWARDING POR HW Forwarding: Ex -> Scr1 y WB -> Scr2 Imagen de Parerson, 1997 18

EJEMPLO 2: FORWARDING POR HW Forwarding: WB -> Scr2 Imagen de Parerson, 1997 19

NO SIEMPRE ES POSIBLE EL FORWARDING Una instr trata de leer un registro después de un load que va a escribir en ese mismo registro. *Image from J. L. Hennesy and D. Patterson Computer Organization and Design Es necesaria una unidad de detección de riesgos que detenga la instr posterior al load. 20

FORWARDING + UNIDAD DE DETECCIÓN DE RIESGOS Imagen de Parerson, 1997 21

PLANIFICACIÓN DEL CÓDIGO PARA EVITAR RIESGOS POR LOAD Tratemos de generar un código más rápido para la operación a=b+c; d=e- f; suponiendo que a,b,c,d,e y f están en la memoria. 22

RIESGOS ESTRUCTURALES Se producen por intentar u3lizar simultáneamente un cierto recurso dos instrucciones en ejecución Banco de registros: Acceso al banco de registros en 2 etapas: Lectura durante la etapa 2 (ID) Escritura durante la etapa 5 (Wb) Solución: dos puertos de lectura y uno de escritura Memoria: Se puede acceder a la memoria en dos etapas: Búsqueda de instrucción durante la etapa 1 (IF) Lectura/Escritura de datos durante la etapa 4 (Mem) Solución: dos caches separadas para instrucciones y datos Cada unidad funcional puede ser usada una sola vez por instrucción Cada unidad funcional debe ser usada en la misma etapa por todas las instrucciones. 23

RIESGOS ESTRUCTURALES l Se producen por un conflicto en el uso de los recursos En el cauce planteado, si una instr reg- reg pudiese escribir el resultado de salida de la ALU en la etapa MEM y se produce una secuencia load seguida de una instr reg- reg entonces tendríamos dos accesos simultáneos al banco de registros ld r2, 100 (r2) IF ID Ex M/Wb Wb Escritura: r2 Banco de registros Escritura: r3 mult r3, r4, r5 IF ID Ex M/Wb Wb 24

RIESGOS ESTRUCTURALES l Soluciones hardware: Arbitraje con interbloqueo: se añade hw que arbitre el conflicto e interbloquee a una de las instrucciones. Aparecen burbujas (en este caso de un ciclo). Replicación de recursos hw: En nuestro ejemplo, si el banco de registros tuviese dos puertos de escritura el problema se resolvería (salvo que escriban exactamente en el mismo registro, pero este caso puede eliminarse en la compilación) 25

RIESGOS ESTRUCTURALES l En el cauce que se ha diseñado no existen problemas de riesgo estructural. Esto se debe a que el banco de registros se escribe en la primera mitad de los ciclos WB y la lectura se realiza en la segunda mitad de los ciclos ID. Escritura: r2 sub r2, r1, r3 xxx xxx and r12, r2, r11 Las escrituras en el banco de registros se realizan en la primera mitad del ciclo Las lecturas en el banco de registros se realizan en la segunda mitad del ciclo => el banco es escrito antes que leído => devuelve el dato correcto 26

RIESGOS DE CONTROL l Se originan en las instrucciones de salto condicional (branch) o incondicional (jmp). Si suponemos que la instr 1 es un jmp, y la dirección de salto se calcula en la fase EX y se reemplaza el PC en la fase MEM, en el cauce han entrado una instr 2 (fase EX), una instr 3 (fase ID) y una instr 4 (fase IF). Salto incondicional: las instrucciones deben ser canceladas y deberá buscarse la instr situada en la dirección de salto. Salto condicional: sólo es necesario vaciar si el salto se efectúa. A estas instrucciones que siguen a la instr 1 se les denomina delay slot o ventana de retardo. Que en este caso es de tres ciclos. 27

RIESGOS DE CONTROL: EJEMPLO bnez r2, 100 (r3) mult r3, r4, r5 Escritura: PC PC: Etapa IF Lectura: PC Delay slot o ventana de retardo Burbuja de 2 o 3 ciclos según sea el diseño: 2à si se escribe el PC al comienzo de la fase M y se empieza la búsqueda de la instr en el mismo ciclo. 3à si se escribe el PC al final de la fase M y se empieza la búsqueda en el ciclo siguiente 28

RIESGOS DE CONTROL: VACIADO DEL CAUCE bnez r2, 100 (r3) yyy1 yyy2 mult r3, r4, r5 IF ID - - - IF - - - Delay slot o ventana de retardo Si el cauce no se había detenido, y se estaba ejecutando yyy1 e yyy2 de forma especulativa, en caso de que el salto se efectúe es necesario vaciar el cauce. 29

RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 1 *Image from J. L. Hennesy and D. Patterson Computer Organization and Design 30

RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 2 *Image from J. L. Hennesy and D. Patterson Computer Organization and Design 31

RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 3 *Image from J. L. Hennesy and D. Patterson Computer Organization and Design 32

RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 4 *Image from J. L. Hennesy and D. Patterson Computer Organization and Design 33

RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 5 *Image from J. L. Hennesy and D. Patterson Computer Organization and Design 34

RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 6 *Image from J. L. Hennesy and D. Patterson Computer Organization and Design 35

RIESGO PROVOCADO POR UN SALTO CONDICIONAL: CICLO 7 *Image from J. L. Hennesy and D. Patterson Computer Organization and Design 36

IMPACTO DE UN SALTO EN LAS DETENCIONES l Si el número de instr de salto es un 30%, detener 2 o 3 ciclos en cada uno 3ene un impacto significa3vo en las prestaciones l La solución 3ene dos partes: Determinar si el salto debe o no efectuarse tan pronto como sea posible, y Calcular la dirección efectiva de salto antes 37

RIESGOS DE CONTROL: REDUCCIÓN DE LA VENTANA DE RETARDO Se produce debido a que la dirección obje3vo del salto (branch y jmp) y la condición de salto (branch) se calulan en la fase Ex de la arquitectura DLX, y se reemplaza el PC en la fase MEM. Es posible reducir el tamaño de la ventana de retardo. Para ello es necesario calcular la dirección efec3va de salto y evaluar la condición de salto lo antes posible. Esto implica modificar el diseño de la arquitectura del cauce. MIPS: Solución u3lizada: Mover el test de Zero a la etapa ID/RF Situar el sumador para calcular el nuevo PC en la etapa ID/RF Se consigue 1 ciclo de reloj de penalización en los saltos en vez de 2 o 3 38

ESQUEMA MODIFICADO Instruction Instr. Decode Execute Memory Write Fetch Reg. Fetch Addr. Calc Access Back PC 4 Add Memory Instr. PC Instr MUX Add Rs1 Rs2 Zero? Reg File Rd Sign Imm Extend PC CR AIR 1 AIR 2 ImR MUX ALU PC AOR SVR Memory Data PC LMDR ARR MUX RD RD RD WB Data 39

JUMPS AND CALLS (JAL) (SALTOS INCONDICIONALES) Aunque sabemos que en estos 3pos de instrucciones tenemos que cambiar el PC, aún es necesario un delay slot (ventana de retardo de 1 ciclo) ya que: Descodificación de la instrucción Cálculo del PC Básicamente, es una decisión que hay que realizar, lo cual toma su 3empo. Esto sugiere un único delay slot: Es decir la siguiente instrucción después de un salto incondicional se ejecuta siempre. 40

RIESGOS DE CONTROL: SOLUCIONES Un rediseño de cauce, como el que se ha comentado antes reduce el retardo a un ciclo, pero puede producir nuevos riesgos. Son necesarias técnicas específicas: Hardware: una es el interbloqueo. u3lizar una cache predescodificada. predicción dinámica de salto (a esta le dedicaremos un tema entero por lo que no lo veremos aquí). Software: la técnica de saltos retardados. predicción estática de saltos (dirigida por el compilador). 41

SOLUCIONES HARDWARE A RIESGOS DE CONTROL: INTERBLOQUEO l El Hw interbloquea la siguiente instrucción a ejecutar à hasta que se calcula la dirección efec3va y el sen3do del salto. 42

COMO CONSEGUIR UN JUMP CON RETARDO CERO l Que es lo que realmente hay que hacer en run 3me? Una vez que se ha detectado que una instr es un jump o JAL, es posible recodificarla en la cache interna. Esto es una forma muy limitada de compilación dinámica and r3,r1,r5 addi r2,r3,#4 sub r4,r2,r1 jal doit subi r1,r1,#1 l Uso de una cache de instr Pre- descodificadas Llamado branch folding en el CRISP processor de los Bell- Labs. Nota: el JAL introduce un riesgo estructural sobre las escrituras A: Internal Cache state: and r3,r1,r5 N A+4 addi r2,r3,#4 N A+8 sub r4,r2,r1 L doit --- -- --- subi r1,r1,#1 N A+20 43

SOLUCIONES SOFTWARE RIESGOS DE CONTROL: ESQUEMA MODIFICADO (CACHE PREDESCODIFICADA) Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc Memory Access Write Back MUX Address Decoded Cache IF/ID Imm Adder Opcode RS1 RS2 Branch? Reg File ID/EX Return PC (Addr + 4) MUX MUX ALU EX/MEM Data Memory MEM/WB MUX Sign Imm Extend RD RD RD WB Data Incrementa el ciclo de reloj en no menos de un retardo por el MUX Si embargo introduce un riesgo estructural sobre las escrituras debido al JAL 44

POR QUÉ NO USARLO CON LOS SALTOS CONDICIONALES? and r3,r1,r5 addi r2,r3,#4 sub r4,r2,r1 bne r4,loop subi r1,r1,#1 Internal Cache state: A: and r3,r1,r5 addi r2,r3,#4 sub r4,r2,r1 --- A+16: subi r1,r1,#1 N N BnR4 -- N Next Branch A+4 N/A A+8 N/A A+16 loop --- --- A+20 N/A l Se elimina el delay slot (bueno) l El branch ha sido solapado con la instrucción sub (bueno). l Incrementa el tamaño de la cache de instrucciones (no tan bueno) l Requiere otro puerto de lectura en el banco de registros (MALO) l Dobla potencialmente el periodo de reloj (REALMENTE MALO) 45

ESQUEMA MODIFICADO Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc Memory Access Write Back Next PC MUX Address Decoded Cache Branch PC IF/ID <BrRn> RS1 RS2 Branch? Reg File ID/EX Return PC (Addr + 4) MUX MUX ALU EX/MEM Data Memory MEM/WB MUX Imm Sign Extend RD RD RD WB Data Puede doblar el periodo de reloj debe acceder a la cache y a los reg 46

TEMPORIZACIÓN Clock: Comienzo de If Instruction Cache Access Branch Register Lookup Mux Ready to latch new PC El tiempo de acceso al banco de registros debe ser cercano al periodo de reloj original 47

SIN EMBARGO, PODEMOS USAR LA PRIMERA TÉCNICA PARA REFLEJAR PREDICCIONES Y ELIMINAR DELAY SLOTS Internal Cache state: Next and r3,r1,r5 A: and r3,r1,r5 N A+4 addi r2,r3,#4 sub r4,r2,r1 bne r4,loop subi r1,r1,#1 A+16: addi r2,r3,#4 sub r4,r2,r1 bne r4 subi r1,r1,#1 N N N N A+8 A+12 loop A+20 l Esto causa que la siguiente instrucción se busque inmediatamente en los des3nos de los saltos (predict taken) l Si el salto finalmente no es realizado, entonces se elimina la instrucción de des3no y se con3nua por la dirección A+16 48

SOLUCIONES SOFTWARE RIESGOS DE CONTROL: TÉCNICA DE SALTOS RETARDADOS Idea básica: El compilador rellena el delay slot con instrucciones que no tengan dependencias con la de salto, y que estén situadas antes del jump o branch (según orden de programa). Si no hay suficientes instrucciones para mover al delay slot este se rellena con instrucciones no- op. Estas instrucciones se ejecutarán siempre. Se usó por vez primera en las primeras generaciones de proc RISC escalares: IBM 801, Berkeley RISC I y el MIPS de Stanford. Observación: La probabilidad de encontrar una instrucción que mover a la ventana de retardo es 0.6. La probabilidad de encontrar 2 instrucción es 0.2. La probabilidad de encontrar 3 instrucción es 0.1. 49

SALTO RETARDADO: EJEMPLO loop: Escritura: f2 ld ld f2, -8(r1) f4, 0(r1) multd f8, f0, f2 sd 0(r2), f8 addi r2, r2, 8 addi r1, r1, 8 slt r4, r4, r3 bnez r4, loop yyy1 IF x ID Ex M Wb Escritura: f4 Escritura: f8 IF x x ID Ex M - Bucle sin usar salto retardado Existen instrucciones independientes que no afectan a la de salto. F8 Mem Escritura: r2 IF x x ID Ex M Wb x x IF ID 50

SALTO RETARDADO: EJEMPLO Escritura: f2 loop: ld f2, -8(r1) ld f4, 0(r1) multd f8, f0, f2 addi r1, r1, 8 slt r4, r4, r3 bnez r4, loop sd 0(r2), f8 addi r2, r2, 8 yyy1 IF x ID Ex M Wb Escritura: f4 Escritura: f8 IF x x ID Ex M Wb IF ID Ex M Wb Bucle usando la técnica de salto retardado La ventana de retardo se ha completado con instrucciones independientes que no afectan a la de de salto 51

SOLUCIONES SOFTWARE RIESGOS DE CONTROL: PREDICCIÓN ESTÁTICA DEL SALTO Todos los saltos como tomados. Los saltos hacia atrás predecirlos como tomados y los saltos hacia adelante predecirlos como no tomados. Hacer una predicción sobre la dirección del salto: La predicción es realizada por el compilador y se incluye en el formato de la instrucción branch. Las instrucciones se comienzan a buscar en la dirección obje3va del salto predicha por este bit. Si la predicción es errónea, las instrucciones que se han comenzado a ejecutar según ese path se eliminan del cauce y se busca en la dirección correcta. La predicción es está3ca por lo que no puede ser alterada, salvo en la compilación. 52

IDEAS PARA REDUCIR LAS DETENCIONES 53

REFERENCIAS [Parerson, 1997 ]David A. Parerson, John L. Hennessy (1997) Computer Organiza3on & Design: The Hardware/So^ware Interface, Second Edi3on. Morgan Kaufmann. 54