Arquitectura 2013 Explicación 4.

Slides:



Advertisements
Presentaciones similares
Procesadores Superescalares
Advertisements

A FAST ALGORITHM FOR DNA SEQUENCES.
TEMA 3 ILP, Panificación dinámica, Predicción de saltos, Especulación
Estructuras segmentadas
ORGANIZACIÓN COMPUTACIONAL
Integrantes Carlos Junior Salinas Rivera (ILHUICOATL). Comunidad: coatl (serpiente).
Hazards.
Predicción de saltos.
Departamento de Ingeniería de Sistemas Universidad de Antioquia
Pipelines: Riesgos.
EL Sistemas Digitales Ing. José Alberto Díaz García Escuela de Ingeniería Electrónica Arquitectura Segmentada Pipeline (Segmentación)
Este obra se publica bajo unalicencia de Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 España.licencia de Creative Commons Reconocimiento-
CLASE 11.
PLANIFICACIÓN DINÁMICA DE INSTRUCCIONES
P(C) = m * nMAXIMO GRADO DE PARALELISMO WSBS ha sido llamado el procesamiento en serie de bits, ya que se procesa un bit por vez (n = m = 1). Es el procesamiento.
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.
Pipelining Predicción dinámica de brincos. Universidad de SonoraArquitectura de Computadoras2 Introducción En base a la historia de la instrucción, predecir.
PROCESADORES SUPERESCALARES
Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow.
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.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
El Lenguaje C++. Creación de programas simples de C++ Builder como ejercicios en C++. Los elementos de control fundamentales en C++, incluyendo operadores.
Departamento de Ingeniería de Sistemas Universidad de Antioquia
CLASE 13.
Sistemas Operativos Avanzados
El procesador Diseño del control.
Cap. 6: Pipelining. Encauzamiento de procesadores
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
Instruction fetch cycle (IF) IR
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.
Modos de direccionamiento
Unidad Central de Proceso
Javier Mauricio Galvis Moreno
3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO
Arquitecturas de Computadoras Capitulo 2 Aritmética de enteros.
Arquitectura de Computadoras (Taller) Semestre II de 2008.
Arquitectura de Computadores Clase 22 Pipelining IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento.
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.
Pipelining Peligros de control.
Pipeline: Peligros de datos
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).
Clase 7 Assembly - Simulador MSX88.
Arquitectura 2013 Explicación 4.
Arquitectura 2013 Explicación 6.
Comprueba si una u otra condición se cumple o no.
Arquitectura 2013 Explicación 5.
Arquitectura 2013 Explicación 5 Parte II.
Pipelining Introducción.
Lenguaje Ensamblador. Repertorio de instrucciones Microprocesador Z80.
Tema 6 Clasificación de algoritmos
Microcontroladores Subrutinas y retardos. Subrutinas Sin subrutinas Con subrutinas Llamado a subrutina Subrutina Regreso de subrutina.
Estructuras de Repetición Pseudocodigo1 Estructuras de Repetición Algoritmos Mientras Hacer-Mientras Para.
Pipeline: Peligros de datos
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)
Operaciones con Acumuladores
Arquitectura 2013 Explicación 6 Entrada-Salida.
Estructuras de Repetición Algoritmos
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:

Arquitectura 2013 Explicación 4

Penalización de salto Predicción de saltos - BTB (Branch Target Buffer) Delay Slot

BTB - Predicción de saltos en mips64 En mips64 la predicción se realiza de acuerdo al estado de un bit que indica si la última vez el salto fue tomado o no. Si el último salto fue tomado, se predice que el próximo se tomará. Si el último salto no fue tomado, se predice que el próximo no se tomará.

Ejercicio 3 Veamos este código: .data A: .word 1 B: .word 6 .code LD R1, A(R0) LD R2, B(R0) LOOP: DSLL R1, R1, 1 DADDI R2, R2, -1 BNEZ R2, LOOP HALT A y B son datos de 64 bits Carga en R1/R2 A/B respectivamente Desplaza R1 a la izq 1 vez Suma -1 a R2 Si R2 <> 0, salta a loop

Ej 5 Analizar: .data TABLA: .word 20, 1, 14, 3, 2, 58, 18, 7, 12, 11 NUM: .word 7 LONG: .word 10 .code LD R1, LONG(R0) LD R2, NUM(R0) DADD R3, R0, R0 DADD R10, R0, R0 LOOP: LD R4, TABLA(R3) BEQ R4, R2, LISTO DADDI R1, R1, -1 DADDI R3, R3, 8 BNEZ R1, LOOP J FIN LISTO: DADDI R10, R0, 1 FIN: HALT Carga en R1/R2 long/num respectivamente Inicializa R3 y R10 en 0 Carga en R4 el inicio de la tabla Si R4 es igual a R2 salta a listo Decrementa la longitud y avanza Si no llego al final de la tabla, salta a loop

Habilitando BTB La primera vez que se ejecute una instrucción de salto no habrá predicción para la misma, por lo que se deberá actualizar la BTB (por eso incrementa de a 2, con la BTB deshabilitada incremneta de a 1) Cuando la predicción no coincide con la instrucción que se debía cargar, también se deberá actualizar la BTB (por eso incrementa de a 2) ¿Qué pasa cuando se habilita BTB en un código donde los saltos se utilizan como “IF” ? ¿Qué pasa cuando se habilita BTB en un código donde existen loops con muy pocas iteraciones ?

Delay Slot (salto retardado o decisión retardada) No hacer el salto hasta que sea necesario. Siempre se ejecuta la siguiente instrucción secuencial, el salto se ejecuta después del retardo de una instrucción. Las instrucciones en los huecos de retardo de salto (delay-slot) se captan siempre. Se trata de situar instrucciones útiles (que no dependan del salto) en los huecos de retardo. Si no es posible,se utilizan instrucciones NOP. Requiere ordenar las instrucciones.

Delat Slot … … Inst 1 Inst 2 (Salto) Inst 3 Inst 4 Inst 6 IF ID EX ME WB Instrucción SIN conflicto con la instrucción de salto Inst 2 IF ID EX ME WB (Salto) Inst 3 IF ID EX ME WB Inst 4 IF (destino de salto) Inst 5 IF ID EX ME WB … Inst 6 Con Delay Slot: Inst 1 IF ID EX ME WB (Salto) Inst 3 IF ID EX ME WB Se ejecuta siempre completa Inst 2 IF ID EX ME WB Inst 4 IF ID EX ME WB (destino de salto) Inst 5 IF ID EX ME WB … Inst 6

Ej 1 El siguiente programa multiplica por 2 los elementos de un arreglo llamado datos y genera un nuevo arreglo llamado “res”. Ejecutar el programa en el simulador MIPS64 con la opción Delay Slot habilitada. .data cant: .word 8 datos: .word 1, 2, 3, 4, 5, 6, 7, 8 res: .word 0 .code DADD R1, R0, R0 LD R2, cant(R0) LOOP: LD R3, datos(R1) DADDI R2, R2, -1 DSLL R3, R3, 1 SD R3, res(R1) DADDI R1, R1, 8 BNEZ R2, LOOP NOP HALT Inicializa R1 = 0 R2 = cant = 8 R3 = elemento de ”datos” en la posición R1 Decrementa la cantidad de elementos por procesar Desplaza a la izquierda una posición R3  R3 = R3 *2 Guarda R3 en “Res” en la posición R1 Avanza al siguiente elemento Si quedan mas elementos por procesar vuelve Para qué?

Ej1 Con Forwarding habilitado .

Ej1 – Opción2 Reordenando código podemos sacar el NOP .data cant: .word 8 datos: .word 1, 2, 3, 4, 5, 6, 7, 8 res: .word 0 .code DADD R1, R0, R0 LD R2, cant(R0) LOOP: LD R3, datos(R1) DADDI R2, R2, -1 DSLL R3, R3, 1 SD R3, res(R1) DADDI R1, R1, 8 BNEZ R2, LOOP NOP HALT .data cant: .word 8 datos: .word 1, 2, 3, 4, 5, 6, 7, 8 res: .word 0 .code DADD R1, R0, R0 LD R2, cant(R0) LOOP: LD R3, datos(R1) DADDI R2, R2, -1 DSLL R3, R3, 1 SD R3, res(R1) BNEZ R2, LOOP DADDI R1, R1, 8 HALT

Ej1 – Opción2 Con Forwarding habilitado . 63 ciclos en versión anterior 0 RAW en versión anterior Con Forwarding habilitado .