Pipelining Peligros de control.

Slides:



Advertisements
Presentaciones similares
Pipelines: Riesgos.
Advertisements

EL Sistemas Digitales Ing. José Alberto Díaz García Escuela de Ingeniería Electrónica Arquitectura Segmentada Pipeline (Segmentación)
Datapath para las instrucciones de brinco
Pipelining Predicción dinámica de brincos. Universidad de SonoraArquitectura de Computadoras2 Introducción En base a la historia de la instrucción, predecir.
Gustavo Andrés Uribe Gómez
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.
El procesador Creando un solo datapath. Universidad de SonoraArquitectura de Computadoras2 Introducción 1. Crear un solo datapath a partir de los datapaths.
Datapath para las instrucciones de carga y almacenamiento (load/store)
El procesador Diseño del control.
Organización del Computador I Verano Control Multiciclo Basado en el capítulo 5 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 17 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
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.
Una estrategia para evitar la sucesiones repetidas de instrucciones convertir la secuencia en un procedimiento e invocarlo cada vez que se necesite.
El procesador Datapath y control. Universidad de SonoraArquitectura de Computadoras2 Introducción En esta parte del curso contiene: Las principales técnicas.
INTRODUCCION A LOS SISTEMAS DE COMPUTO ARQUITECTURA VON NEUMAN Ing. David Gonzalez.
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.
COMPONENTES DE INTERNET
Memoria Cachés.
Organización de computadoras
Procesadores superescalares
Microprocesador Estructura interna.
Pipeline: Peligros de datos
Diagramas de Flujo Algoritmos.
Unidad aritmético-lógica
El procesador Diseño del control.
Superescalares Scheduling estático.
Pipelining Datapath y control.
Datapath para las instrucciones de brinco
Arquitectura de Computadoras 2012
Excepciones e interrupciones
Pipelining Peligros (hazards).
Datapath para las instrucciones de carga y almacenamiento (load/store)
UNIDAD II INTERNET.
Otros temas sobre cachés
Unidad 7: Nivel Interno Algunos Conceptos Importantes
ARQUITECTURA DE HARD WARE COMPONENTES EN BLOQUES DEL PROCESADOR
Arquitectura 2013 Explicación 4.
Arquitectura 2013 Explicación 4.
Tema 3. Lenguaje unificado de modelado UML
Organización del caché
Computación Curso 2017.
Creando un solo datapath
PROGRAMACION DINAMICA
CODIGOS DE BLOQUE LINEALES
Memoria virtual.
Memoria virtual.
Pipelining Introducción.
JAVIER ANDRES MARTÀ MARTINEZ CODIGO 37772
Hardware Description Language
Pipeline: Peligros de datos
ARQUITECTURA DEL COMPUTADOR Ing. Diana E. López.
Scheduling dinámico: algoritmo de Tomasulo
Pipelining Peligros de control.
Commit out of order Ciclo 1: Detecto un load que fallo en L2 en el tope del ROB Load R3(F5)=R4(F4)+R2(F2) R2(F6)=R1(F1)+R3(F5) Branch R3(F5)
Aritmética en computadora
1 TEMA 2: Organización de computadores Procesadores Memorias Dispositivos de E/S.
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
Determinación de superficies ocultas
El procesador Datapath y control.
Memoria Cachés.
Ejercicio 5.6 sobre cachés
Otros temas sobre cachés
Universidad Técnica De Manabí Facultad De Ciencias Informáticas Departamento De Informática Y Electrónica Trabajo de investigación grupal Tema: Arquitectura.
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
Organización del caché
Pipelining Peligros de control.
Resumen Posición, velocidad y aceleración son tres maneras diferentes de describir el movimiento aunque están relacionadas. El cambio con el tiempo es.
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:

Pipelining Peligros de control

Peligros de control Detener (stall) el pipeline no es práctico. Soluciones: Suponer que el brinco no será tomado. Reducir el retraso de los brincos. Predicción dinámica de brincos. Decisión retrasada. Universidad de Sonora Arquitectura de Computadoras

Brinco no tomado Si el brinco no se toma, el pipeline continúa a toda velocidad. Si el brinco se toma, se descartan las instrucciones que hayan entrado después del brinco y se comienzan a tomar del destino del brinco. Si los brincos se toman el 50% de las veces, esta estrategia reduce el costo de los peligros de control a la mitad. Universidad de Sonora Arquitectura de Computadoras

Brinco no tomado Para descartar las instrucciones se cambian las señales de control a 0. Al siguiente ciclo se saca la instrucción del lugar correcto. Universidad de Sonora Arquitectura de Computadoras

Reducir el retraso de los brincos El resultado de un brinco se conoce al final de la etapa EX. Se puede agregar hardware para conocer el resultado antes. Por ejemplo, una instrucción tipo: bltz $r, etiqueta # brinca si r < 0 Sólo necesita checar el signo del registro y se podría hacer en la etapa ID. Universidad de Sonora Arquitectura de Computadoras

Reducir el retraso de los brincos Para mover la decisión del brinco a la etapa ID se necesita: Calcular la dirección a dónde va a brincar PC  PC + offset << 2 Evaluar la condición. Calcular la dirección en la etapa ID es fácil, solo se mueven el sumador y la unidad de shift de la etapa EX a ID. Evaluar la condición es más complicado. Universidad de Sonora Arquitectura de Computadoras

Reducir el retraso de los brincos Si la condición es igual (beq) se puede sacar un XOR de los dos registros y luego un OR al resultado. Otras condiciones son más complicadas. De todos modos, hay que agregar hardware de bypass y de detección de peligros. Es posible que el brinco dependa de un resultado que todavía está dentro del pipeline. Universidad de Sonora Arquitectura de Computadoras

Reducir el retraso de los brincos La etapa ID se complica. Hay que: Obtener los registros (decodificar la instrucción). Evaluar la condición. Sumar al PC el offset si se cumple la condición. Todo esto necesita hardware extra. Además, se puede haber peligros de datos y tener que detener el pipeline 1 o 2 ciclos. Universidad de Sonora Arquitectura de Computadoras

Reducir el retraso de los brincos Por ejemplo, en la siguiente secuencia: add $t0, $t1, $t2 beq $t0, $s0, etiqueta El pipeline se tiene que detener 1 ciclo. Para la siguiente secuencia: lw $t0, 0($t1) El pipeline se tiene que detener 2 ciclos. Universidad de Sonora Arquitectura de Computadoras

Reducir el retraso de los brincos Si no hay dependencias el castigo por predecir mal se reduce a 1 ciclo. Para borrar (flush) la instrucción en la etapa IF se agrega una nueva señal de control IF.Flush. Universidad de Sonora Arquitectura de Computadoras

Ejemplo Suponer que la decisión del brinco se hace en la etapa ID. Suponer que la estrategia es decir que los brincos no se toman. Dado el siguiente código (p. 319) mostrar el pipeline si el brinco se toma. Universidad de Sonora Arquitectura de Computadoras

Antes Fuente: COD 5, p. 320 Universidad de Sonora Arquitectura de Computadoras

Después Fuente: COD 5, p. 320 Universidad de Sonora Arquitectura de Computadoras

Predicción dinámica de brincos En base a la historia de la instrucción, predecir si habrá o no brinco. Se necesita una tabla de historia de brincos, llamada también buffer de predicción de brincos. La tabla es una memoria pequeña indexada por la parte baja de la dirección de la instrucción de brinco. La tabla contiene uno o mas bits indicando si el brinco fue recientemente tomado o no. La predicción se hace en la etapa IF del brinco. Universidad de Sonora Arquitectura de Computadoras

Tabla de 1 bit Un bit que indica si la última vez el brinco fue tomado o no. Desventaja: mala precisión aun con brincos que son casi siempre tomados. Ejemplo: suponer la segunda vez que se ejecuta un brinco de un ciclo. El brinco se toma 9 veces seguidas y luego no se toma. El sistema de 1 bit se equivoca dos veces. Universidad de Sonora Arquitectura de Computadoras

Tabla de 1 bit Se equivoca en la primera iteración. El bit se quedó en 0 al final de la primera ejecución y predice no tomado, pero el brinco se toma. Se equivoca en la última iteración. El bit está en 1 porque el brinco se ha tomado 9 veces consecutivas y predice tomado, pero el brinco no se toma. Precisión: 80% en un brinco que se toma el 90%. Universidad de Sonora Arquitectura de Computadoras

Tabla de 2 bits La predicción debe estar mal dos veces antes de cambiarla. Se modela usando una máquina de estados finitos. Hay dos estados que predicen que el brinco será tomado. Hay dos estados que predicen que el brinco no será tomado. Universidad de Sonora Arquitectura de Computadoras

Tabla de 2 bits Fuente: COD 5, p. 322. Universidad de Sonora Arquitectura de Computadoras

Tabla de 2 bits Se puede programar como un contador de 0 a 3. 0 y 1 son los estados que predicen que el brinco se toma. 2 y 3 predicen que el brinco no se toma. Cada vez que el brinco no se toma, el contador se incrementa en 1. Cada vez que el brinco se toma, el contador se decrementa en 1. En el ejemplo anterior, este método tiene precisión del 90%, solo se equivoca en la última iteración. Universidad de Sonora Arquitectura de Computadoras

Otras mejoras Buffer de destinos de brincos. Memoria cache para guardar el destino de los últimos brincos. Predictor de correlación. Combina comportamiento local de un brinco en particular con información global acerca del comportamiento de algunos brincos recientemente ejecutados. Predictor de brincos estilo torneo. Tiene varias predicciones para un mismo brinco y un mecanismo para seleccionar que predictor usar para un brinco en particular. Universidad de Sonora Arquitectura de Computadoras

Otras mejoras Un predictor estilo torneo típico tiene dos predicciones para cada brinco, uno basado en información global de brincos y otro en información local. El selector escoge que predictor usar para un brinco en particular. El selector se puede implementar parecido a las tablas de 1 y 2 bits, favoreciendo al predictor que haya sido mas preciso. Universidad de Sonora Arquitectura de Computadoras

Decisión retrasada Se utiliza en MIPS. Consiste en poner después del brinco una instrucción independiente. Hay 3 formas de escoger la instrucción: De antes del brinco. Del destino del brinco. Del else del brinco. Universidad de Sonora Arquitectura de Computadoras

Decisión retrasada Fuente: COD 5, p. 323. Universidad de Sonora Arquitectura de Computadoras

Decisión retrasada La opción a) es la preferida. Las opciones b) y c) se usan si a) no se puede emplear. La opción b) puede preferirse para brincos con alta probabilidad de ser tomados. Para que b) y c) funcionen la instrucción no debe afectar en caso de que no haberse debido ejecutado. Universidad de Sonora Arquitectura de Computadoras

Conclusión Detener el pipeline no es opción. Suponer que el brinco no será tomado tiene una mala precisión. Decisión retrasada es práctica en MIPS que tiene un pipeline de solo 5 etapas. Las CPUs modernas pueden tener pipelines de 20 o 30 etapas. La opción preferida en la actualidad es la predicción dinámica de brincos. Universidad de Sonora Arquitectura de Computadoras

Conclusión Más información en: Smith, J. E. A Study of Branch Prediction Techniques. IEEE (1981) http://euler.mat.uson.mx/~havillam/ca/Common/JSmith.pdf Michaud, P., Seznec, André. A Comprehensive Study of Dynamic Global History Branch Prediction. INRIA (2001) http://euler.mat.uson.mx/~havillam/ca/Common/RR-4219.pdf Universidad de Sonora Arquitectura de Computadoras