Scheduling dinámico: algoritmo de Tomasulo

Slides:



Advertisements
Presentaciones similares
Procesadores Superescalares
Advertisements

Scheduling dinámico Scoreboarding.
PLANIFICACIÓN DINÁMICA DE INSTRUCCIONES
INGENIERIA DE COMPUTADORES II
Scheduling dinámico Algoritmo de Tomasulo.
Organización de Computadoras
Este obra se publica bajo unalicencia de Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 España.licencia de Creative Commons Reconocimiento-
El procesador Diseño del control.
PROCESADORES SUPERESCALARES
Arquitectura y Sistemas Operativos Gestión de Memoria Parte 1 1 Gestión de Memoria – Parte 1 Agenda Parte 1 –RequisitosRequisitos –EvoluciónEvolución –Carga.
SISTEMAS OPERATIVOS Contenido: Descripción del proceso proceso nulo estado del procesador imagen del proceso información del BCP Miguel Ángel Martínez.
Hiperpipeline Superescalares Arquitectura de Computadoras 2012.
Vinculación de Instrucciones y Datos a Memoria Tiempo de compilación: si la dirección de memoria se conoce a priori, se puede generar código absoluto;
Una vez observado el producto programado que se debe construir, es importante que realice los siguientes ejercicios con la ayuda del docente. 1)Con la.
COMPUTACION PARALELA GLORIA PATRICIA FLOREZ ANGIE PAOLA ANCHICO.
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.
ITESCO – Arquitectura Computadoras L. S. C. A. Raúl Monforte Chulin - MORCH Systems 1.1. Arquitectura básica y sus operaciones. Objetivo: El estudiante.
Calculadora programada con Scratch
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.
Organización de computadoras
Introducción a la Programación Multimedial
Procesadores superescalares
Estructuras de interconexión de un computador
Pipelining Peligros de control.
Pipeline: Peligros de datos
Olimpiadas Chilenas de Informática - Formación
Unidad aritmético-lógica
El procesador Diseño del control.
Memoria Rendimiento del caché.
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)
TÍTULO DEL PROYECTO Plataformas Computacionales de Entrenamiento, Experimentación, Gestión y Mitigación de Ataques a la Ciberseguridad.
Arquitectura 2013 Explicación 4.
Arquitectura 2013 Explicación 5.
Tema 6. Conceptos básicos de programación Clase 1
Computación Curso 2017.
Memoria virtual.
Pipelining Introducción.
Organización del Computador
Crucigrama Pág. 1 Dividir el problema Conocer el problema
Sopa de letras en VBA Ficha 5 Paso a paso Conocer el problema Pág. 1
Conceptos básicos.
P P AGINACION FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS.
Pipeline: Peligros de datos
Introducción a la programación
Tipos de Datos abstractos
CURSO PROGRAMACIÓN BÁSICA SEMANA 2
Metodología de la Programación
L.I. Gerardo Ortiz Rivera
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)
MC Beatriz Beltrán Martínez Otoño 2017
Arquitectura de ordenadores
MANTENIMIENTO DE LA CONSISTENCIA. BUFFER DE REORDENAMIENTO TIENE LA FINALIDAD DE VER LA PROBLEMÁTICA DE LA FINALIZACIÓN ORDENADA O DESORDENADA DE.
El procesador Datapath y control.
Memoria Cachés.
Ejercicio 5.6 sobre cachés
Arquitectura de Hardware
Memoria Rendimiento del caché.
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:

Scheduling dinámico: algoritmo de Tomasulo Superescalares Scheduling dinámico: algoritmo de Tomasulo

Introducción Scheduling dinámico significa que la CPU (el hardware) puede reordenar las instrucciones. La mayoría de las CPUs de escritorio son superescalares con scheduling dinámico. La mayoría emplean alguna variante de un método de scheduling dinámico conocido como “algoritmo de Tomasulo.” Arquitectura de Computadoras

Introducción Desarrollado por Robert Tomasulo para la super-computadora IBM 360/91. Registra cuando los operandos de las instrucciones están listos para eliminar peligros RAW. Permite la ejecución de una instrucción tan pronto estén listos sus operandos. Renombra registros para eliminar peligros WAR y WAW. Arquitectura de Computadoras Arquitectura de Computadoras 3

Estaciones de reserva Reservation stations (RS). Mecanismo para renombrar registros. Guarda operandos tan pronto están disponibles. Las instrucciones pendientes designan la RS de donde obtendrán sus operandos. Cuando hay escrituras sucesivas a un registro, solo la última escritura se usa para actualizar el registro. Arquitectura de Computadoras Arquitectura de Computadoras 4

Estaciones de reserva Conforme las instrucciones se emiten, los registros de los operandos pendientes son renombrados por una RS. Generalmente, hay mas RS que registros físicos. Arquitectura de Computadoras

Componentes Fuente: COD 5, p. 340. Arquitectura de Computadoras

Algoritmo básico Las instrucciones pasan por 3 pasos: Emisión (issue). También llamado despachar (dispatch). Ejecución. Escribir resultados. Cada paso toma un número arbitrario de ciclos. Arquitectura de Computadoras Arquitectura de Computadoras 7

Algoritmo básico Emisión. Obtiene la siguiente instrucción de la cola. Si hay una RS del tipo deseado que esté vacía, se emite la instrucción a la RS que tenga los valores de los operandos, si ya están en los registros. Si los operandos no están en los registros, se registra la unidad funcional que va a producirlos. Si no hay una RS vacía, se produce un peligro estructural y la instrucción se retiene (stall) hasta que se libere una RS o buffer. Renombra registros. Arquitectura de Computadoras Arquitectura de Computadoras 8

Algoritmo básico Ejecución. Si uno o mas operandos no están disponibles, el CDB se monitorea mientras se espera que los operandos sean calculados. Cuando un operandos está disponible, se coloca en la RS correspondiente. Cuando todos los operandos están disponibles, la instrucción se ejecuta en la unidad funcional. Esta espera elimina peligros RAW. Arquitectura de Computadoras Arquitectura de Computadoras 9

Algoritmo básico Si en una unidad funcional hay mas de una instrucción lista para ejecutarse, la selección puede ser arbitraria. Los loads y stores se ejecutan en dos pasos: La dirección efectiva se calcula cuando el registro base está listo y luego se guarda en el buffer correspondiente. Los loads se ejecutan tan pronto la unidad de memoria esté lista. Los stores esperan al valor a guardar antes de enviarlo a la memoria. Para evitar peligros los loads y stores se hacen en orden hasta el paso 1. Arquitectura de Computadoras Arquitectura de Computadoras 10

Algoritmo básico Escribir resultado. Cuando el resultado está listo se escribe en el CDB, y de ahí se manda a las RS y buffers de store que estén esperando el resultado. Los stores, se quedan en el buffer de store hasta que el valor a guardar y la dirección de memoria están disponibles. El valor se guarda tan pronto la unidad de memoria esté libre. Arquitectura de Computadoras Arquitectura de Computadoras 11

Estaciones de reserva Cada RS tiene 7 campos: Op – La operación a realizar en los operandos S1 y S2. Qj, Qk – Las RS que producirán los operandos. Un 0 indica que los operandos ya están en Vj o Vk, o que son innecesarios. Vj, Vk – El valor de los operandos. Para loads, Vk se usa para guardar el offset. A – Guarda información de la dirección de memoria para un load o store. Inicialmente el campo inmediato se guarda aquí, después del cálculo de la dirección, la dirección efectiva se guarda en A. Arquitectura de Computadoras Arquitectura de Computadoras 12

Estaciones de reserva Además, el banco de registros tiene 1 campo: Busy – Indica que la RS y la correspondiente unidad funcional están ocupadas. Además, el banco de registros tiene 1 campo: Qi – El número de RS que contiene la operación cuyo resultado va a ser guardado en este registro. Si Qi es 0, no hay ninguna instrucción activa que vaya a guardar algo en este registro. Arquitectura de Computadoras Arquitectura de Computadoras 13

Ejemplo En un sistema hay 7 RS: 2 de para loads, 3 para sumas y 2 para multiplicaciones. Mostrar el estado de las RS y del banco de registros después de que la instrucción 1 ha terminado y escrito su resultado. Arquitectura de Computadoras Arquitectura de Computadoras 14

Ejemplo Código: l.d f6, 32(r2) ; f6 = Mem[r2 + 32] mul.d f0, f2, f4 ; f0 = f2 * f4 sub.d f8, f2, f6 ; f8 = f2 – f6 div.d f10, f0, f6 ; f10 = f0 / f6 add.d f6, f8, f2 ; f6 = f8 + f2 Arquitectura de Computadoras Arquitectura de Computadoras 15

Peligros RAW – Entre 1 y 4 y entre 1 y 5 por f6; entre 2 y 3, entre 2 y 4 y entre 2 y 6 por f2. WAR – Entre 4 y 6 y entre 5 y 6 por f6. WAW – Entre 1 y 6 por f6. Arquitectura de Computadoras Arquitectura de Computadoras 16

Estado de las instrucciones Arquitectura de Computadoras Arquitectura de Computadoras 17

Estaciones de reserva Arquitectura de Computadoras 18

Banco de registros Arquitectura de Computadoras 19

Solución de peligros Los peligros RAW se eliminaron al hacer que una instrucción no se ejecute hasta que sus operandos están listos. Los peligros WAR por f6 se eliminaron al copiar el resultado del load (instrucción 1) a las estaciones de reserva donde están el sub y el div (instrucciones 4 y 5). Ahora el add (instrucción 6) puede escribir en f6 sin problema. No hubo peligro WAW porque la instrucción 1 terminó antes que la 6. Arquitectura de Computadoras Arquitectura de Computadoras 20

Ejemplo Mostrar el estado de las RS, después de que la instrucción 3 está lista para escribir su resultado y la 5 todavía está en ejecución. l.d f6, 32(r2) ; f6 = Mem[r2 + 32] l.d f2, 44(r3) ; f2 = Mem[r3 + 44] mul.d f0, f2, f4 ; f0 = f2 * f4 sub.d f8, f2, f6 ; f8 = f2 – f6 div.d f10, f0, f6 ; f10 = f0 / f6 add.d f6, f8, f2 ; f6 = f8 + f2 Arquitectura de Computadoras Arquitectura de Computadoras 21

Estado de las instrucciones Arquitectura de Computadoras Arquitectura de Computadoras 22

Estaciones de reserva Arquitectura de Computadoras 23

Banco de registros Arquitectura de Computadoras 24

Especulación El algoritmo básico de Tomasulo se puede extender para soportar especulación por hardware. La especulación permite ejecutar instrucciones antes de saber el resultado de un brinco. La especulación por hardware combina 3 ideas: Predicción dinámica de brincos. Especulación para ejecutar instrucciones antes de que las dependencias de control sean resueltas y deshacer los efectos si la especulación fue incorrecta. Arquitectura de Computadoras Arquitectura de Computadoras 25

Especulación Scheduling dinámico para seleccionar que instrucciones se ejecutan. Se necesita pasar el resultado a otras instrucciones antes de que la instrucción termine. Se introduce un nuevo paso llamado compromiso (commit). Una instrucción se compromete cuando se sabe que no es especulada. Sólo entonces se le permite escribir al banco de registros o a la memoria. Arquitectura de Computadoras Arquitectura de Computadoras 26

Especulación Las instrucciones de ejecutan fuera de orden pero se comprometen en orden. Para comprometer en orden se usa un ROB (reorder buffer). El ROB mantiene el resultado de una instrucción desde que termina hasta que se compromete. Como ni la memoria ni el banco de registros se actualizan hasta que la instrucción se compromete, el ROB provee operandos a otras instrucciones durante ese tiempo. Arquitectura de Computadoras Arquitectura de Computadoras 27

Especulación El buffer de store se elimina porque su función la realiza el ROB. Los stores se realizan todavía en 2 pasos, el segundo paso lo hace el ROB. Arquitectura de Computadoras Arquitectura de Computadoras 28

Algoritmo con especulación Las instrucciones pasan por 4 etapas: Emisión (issue). Ejecución. Escribir resultados. Compromiso. Arquitectura de Computadoras Arquitectura de Computadoras 29

Algoritmo con especulación Emisión. Obtiene una instrucción de la cola de instrucciones. La instrucción se emite si hay una RS libre y espacio en el ROB donde poner el resultado. Envía los operandos a la RS si están disponibles en el banco de registros o en el ROB. Envía el número de la entrada en el ROB a la RS para que el resultado sea etiquetado al colocarse en el CDB. Si todas las RS están ocupadas o el ROB está lleno, la instrucción se detiene. Arquitectura de Computadoras Arquitectura de Computadoras 30

Algoritmo con especulación Ejecución. Si uno o mas operandos no están disponibles, el CDB se monitorea mientras se espera que los operandos sean calculados. Este paso checa los peligros RAW. Cuando los operandos están disponibles en el RS, la instrucción se ejecuta. Los loads requieren dos etapas igual que antes. Los stores solo necesitan que el registro base esté libre porque solo calculan la dirección efectiva. Arquitectura de Computadoras Arquitectura de Computadoras 31

Algoritmo con especulación Escribir resultados. Cuando el resultado está disponible, se escribe en el CDB y de ahí al ROB y otras RS que lo requieran. La RS se marca como libre. Los stores necesitan atención especial: Si el valor a guardar está libre, se escribe en el ROB. Si no está disponible, el CDB se monitorea hasta que el valor aparezca y entonces se escribe en el ROB. Arquitectura de Computadoras Arquitectura de Computadoras 32

Algoritmo con especulación Compromiso. Una instrucción se compromete cuando llega al frente del ROB. Las acciones dependen del tipo de instrucción. Si es un store, la memoria se actualiza. Si es otra instrucción (excepto un brinco), el banco de registros se actualiza. Si es un brinco mal adivinado, el ROB se limpia y la ejecución comienza en el lugar correcto. Si es un brinco bien adivinado no pasa nada. En cualquier caso, la entrada del ROB se libera. Arquitectura de Computadoras Arquitectura de Computadoras 33

Ejemplo Mostrar el status de las tablas cuando el mul.d está listo para comprometerse. l.d f6, 32(r2) ; f6 = Mem[r2 + 32] l.d f2, 44(r3) ; f2 = Mem[r3 + 44] mul.d f0, f2, f4 ; f0 = f2 * f4 sub.d f8, f2, f6 ; f8 = f2 – f6 div.d f10, f0, f6 ; f10 = f0 / f6 add.d f6, f8, f2 ; f6 = f8 + f2 Arquitectura de Computadoras Arquitectura de Computadoras 34

ROB Arquitectura de Computadoras Arquitectura de Computadoras 35

Estaciones de reserva Arquitectura de Computadoras 36

Banco de registros Arquitectura de Computadoras 37

Ejemplo Mostrar la ejecución del siguiente código: loop: l.d f0, 0(r1) ; f0 = Mem[r1] mul.d f4, f0, f2 ; f4 = f0 * f2 s.d f4, 0(r1) ; Mem[r1] = f4 daddiu r1, r1, #-8 ; r1 = r1 – 8 bne r1, r2, loop ; if r1  r2 goto loop Arquitectura de Computadoras Arquitectura de Computadoras 38

Ejemplo Suponiendo que: Se especula que el ciclo fue tomado. Se han emitido las instrucciones en el ciclo 2 veces. El l.d y mul.d de la primera iteración ya se comprometieron y las demás instrucciones terminaron de ejecutarse. Arquitectura de Computadoras Arquitectura de Computadoras 39

ROB Arquitectura de Computadoras Arquitectura de Computadoras 40

Banco de registros Las RS no se muestran porque no hay instrucciones ejecutando. Arquitectura de Computadoras Arquitectura de Computadoras 41

Ejemplo Suponer que el primer brinco no debió ser tomado. Las instrucciones anteriores al brinco se comprometen. Cuando el brinco llega al frente, el ROB se limpia y se comienzan a sacar instrucciones del camino correcto. En la práctica, al momento de saber que se adivinó mal se limpia la parte del ROB que corresponde al camino equivocado. Arquitectura de Computadoras Arquitectura de Computadoras 42

Conclusiones El algoritmo de Tomasulo no fue usado desde la IBM 360/91 (1960s) hasta principios de los 90s. Ahora ha sido ampliamente adoptado en los procesadores de emisión múltiple. Consigue un gran rendimiento sin requerir que el compilador sea adaptado para cada arquitectura. Los peligros WAW y WAR se eliminan porque las instrucciones se comprometen en orden. Los peligros RAW se eliminan al no permitir que una instrucción continúe hasta que sus operandos están listos. Arquitectura de Computadoras Arquitectura de Computadoras 43

Conclusiones Los peligros RAW en la memoria se eliminan con: Un load en ejecución no puede iniciar su segundo paso si en el ROB hay un store activo con la misma dirección. Manteniendo el orden de programa para el cálculo de la dirección efectiva de un load con respecto a los stores anteriores. El scheduling dinámico es la forma preferida de scheduling usada actualmente en las CPUs de escritorio. Arquitectura de Computadoras Arquitectura de Computadoras 44