Estrategias de predicción dinámicas.

Documentos relacionados
Predicción Dinámica - 1. Arquitectura de Computadores

OBJETIVOS ALGUNAS CONSIDERACIONES SOBRE WINDLX

Ejercicios Jerarquía de Memoria

6. PROCESADORES SUPERESCALARES Y VLIW

Memoria. Organización de memorias estáticas.

COMPUTADORES SEGMENTADOS (DLX)

CPU MEMORIAS CACHE. Memorias caché. Memoria caché = memoria de tamaño pequeño y acceso rápido situada entre la CPU y la memoria principal.

Comparaciones en lenguaje ensamblador

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

Arquitectura de Computadores. Tema 4 PROCESADORES SEGMENTADOS

Ejercicios del tema 5. Jerarquía de de Memoria

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

Autor: Longinos Recuero Bustos

MEMORIA EJERCICIO 1 EJERCICIO 2

3 - Arquitectura interna de un up

Diseño del procesador MIPS R2000

FUNDAMENTOS DE COMPUTADORES 18 de junio de Examen parcial del 2º cuatrimestre.

202 PROBLEMAS DE ARQUITECTURA DE COMPUTADORES

Procesadores Vectoriales

Ejercicios de Arquitectura de Computadoras

Qué es un programa informático?

Procesadores superescalares. Introducción

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Plataformas de soporte computacional: arquitecturas avanzadas,

TEMA 4. ARQUITECTURA IA-64

Fundamentos de Hardware: Arquitectura de un ordenador

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

Memoria Virtual. Memoria Virtual

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Curso ICA de: ON LINE ACCESS 2007

Definición de Memoria

Recopilación de Técnicas de Predicción de Saltos

Discusión. Modelo de una compuerta. Arquitecturas de Computadores Prof. Mauricio Solar. Temario. ...Introducción

Representación de números enteros: el convenio exceso Z

PHP: Lenguaje de programación

Explotación del paralelismo a nivel de instrucción

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

Ejercicios del tema 4. El procesador

Introducción a la arquitectura de computadores

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Tema 6 (II) Jerarquía de Memoria

Instrucciones de Control de Flujo y Usos de la Pila

Paralelismo en monoprocesadores. Procesadores VLIW

Estructura de Computadores

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

Ciclos de máquina. Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp

Departamento de Ingeniería de Sistemas y Automática. STEP 7. Juego de instrucciones

TEMA 3: El proceso de compilación, del código fuente al código máquina

Organización del Computador 1 Memoria Cache

Resolución de los Ejercicios de la Hoja 4

Cómo ajustar las ganancias de un equipo

Fecha de Introducción. Velocidad de reloj. Anchura del bus. Número de transistores. (microns) Memoria direccionable.

Organización lógica Identificación de bloque

Arquitectura de los Ordenadores (Teoría) Final Junio Mañana Pág 1 APELLIDOS Y NOMBRE GRUPO Nº EXPEDIENTE

Instituto Tecnológico de Morelia

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

2.4. Modos de direccionamiento Distintas formas que tiene la arquitectura para especificar la ubicación de los operandos.

Caché. Matías Barbeito Organización del computador 1 2 cuatrimestre 2011

Universidad Central de Venezuela. Facultad de Ciencias. Escuela de Computación. Proyecto #1 (Simulación de caché)

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas

TEMA II: ALMACENAMIENTO DE LA INFORMACIÓN

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

Tema 5: Memorias. Espacio reservado para notas del alumno

Arquitectura de Computadores II Clase #3

Ensamblador. Introducción. Dpto. Física y Arquitectura de Computadores. Universidad Miguel Hernandez

Estructura de Computadores

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

Procesadores segmentados. El DLX.

Tema 2: Lenguaje máquina. La interfaz entre el hardware y el software

Conceptos de Arquitectura de Computadoras Curso 2015

Subsistemas de memoria. Departamento de Arquitectura de Computadores

PRÁCTICAS DE ARQUITECTURA DE COMPUTADORES

SISTEMAS OPERATIVOS Arquitectura de computadores

QUE SON Y PARA QUE SIRVEN LAS DIRECCIONES IP, LA MASCARA DE SUBRED, LA PUERTA DE ENLACE Y LAS DNS.

Guía práctica de estudio 05: Diagramas de flujo

Recopilación presentada por 1

Programación de Sistemas. Unidad 1. Programación de Sistemas y Arquitectura de una Computadora

Diagrama temporal de un programa simple. Multi-Programación con dos programas

Arquitectura de Computadores

LECCIÓN 14: DISEÑO DE COMPUTADORES MEDIANTE MICROPROGRAMACION

Organización Básica de un Computador y Lenguaje de Máquina

Estructuras de control

Curso SIMATIC S7 Nivel II

Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios

REFERENCIA DEL LENGUAJE

OPTIMIZACIÓN DE CÓDIGO

Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

10 más ! Análisis de sistemas digitales básicos

Arquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3. Departamento de Ingeniería de Sistemas Universidad de Antioquia

UNIDAD 4: El procesador: Camino de los datos y Control.

TEMA 2 FRACCIONES MATEMÁTICAS 2º ESO

SISTEMAS ELECTRÓNICOS DIGITALES

Cómo configurar formatos Wiegand personalizados

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

El nivel ISA (II)! Conjunto de Instrucciones

Construyendo Programas más Complejos

Memorias RAM. Basilio B. Fraguela Rodríguez. Copyright Basilio B. Fraguela 2006

SISTEMAS OPERATIVOS Ciclo 2014 Plan 2012

Transcripción:

Estrategias de predicción dinámicas. Las técnicas que vamos a ver ahora para predicción de saltos se basan en información conocida sólo en tiempo de ejecución. Dos estructuras son necesarias para realizar una predicción estática: Branch History Table (BHT) o Tabla de Historia de los Saltos. Tabla que contiene información de lo sucedido en cada salto las últimas veces que fue tomado. A partir de esta información se predice si el salto será tomado o no. Branch Target Address Cache (BTAC) o Tabla de Direcciones de Salto. Como su nombre indica es una tabla donde se almacena las direcciones de salto destino de los últimos saltos evaluados. De esta forma, si un salto es predicho como tomada, se mira si esta en la tabla, y si es así, se obtiene la dirección destino. La base de la mayoría de los predictores dinámicos es el llamado Branch Target Buffer, que no es más que una tabla que combina los dos anteriores. Cada entrada posee bits para realizar la predicción y la posible dirección de salto. A partir de esta estructura básica se han diseñado muchos predictores, desde los más sencillos que veremos aquí, hasta muy sofisticados que utilizan dos niveles de predicción. Últimamente se están utilizando los predictores híbridos que combinan tanto técnicas estáticas como dinámicas, eligiendo en cada momento la que de un mejor resultado. Otro aspecto muy importante son las penalizaciones que puede sufrir un procesador por el hecho de equivocarse en una predicción. Se pueden presentar dos tipos de Penalizaciones: 1. Misfetch penalty o penalización por búsqueda errónea: los procesadores leen una instrucción de la cache realizando un búsqueda de instrucción, a continuación, si la instrucción es de salto, la evaluación del salto se realizará en el segmento de decodificación. Por ello, si nos equivocamos en la predicción, deberemos anular la instrucción e introducir una o más burbujas para vaciar los cauces de segmentación e iniciar la ejecución de una nueva instrucción en la dirección real de salto. 2. Mispredict penalty o penalización por predicado erróneo: sabemos que los procesadores para mantener alto el rendimiento realizan cargas especulativas de instrucciones en la memoria cache de instrucciones, correspondientes al posible bloque destino del salto. Si se comprueba que ha habido un fallo en la predicción, el procesador además de realizar un vaciado del cauce segmentado y restaurar los valores de los registros, deberá leer un nuevo predicado, es decir, deberá cargar la cache de Instrucciones o en su defecto, el buffer de lectura de instrucciones con nuevas instrucciones procedentes de la dirección de salto ya evaluada. Para comparar diversas arquitecturas de predicción dinámica de saltos, nos fijaremos en un parámetro conocido como la predicción de aciertos, es decir, el porcentaje de saltos que han sido bien predichos. Para las técnicas de predicción también será útil almacenar información general de los programas, del estilo tengo pocas instrucciones de saltos que se ejecutan muchas veces o tengo muchos saltos que se ejecutan pocas veces, pues esto influirá mucho en el rendimiento de las predicciones. Vicente Arnau Llombart 1 30/11/2006

A continuación se enumeran las 5 técnicas más importantes utilizadas en la predicción dinámica de los saltos: 1. Branch Target Buffer. Buffer de salto. Con información de la historia de cada salto. 2. Predictores basados en dos niveles de historia. 3. Predicción de la siguiente línea de cache a leer. 4. Predictores basados en el camino recorrido por el programa. 5. Predictores híbridos. Que combinan varias técnicas, incluso las estáticas. No tenemos tiempo para analizar con detalle cada una de estas técnicas, pero será suficiente con que veamos la primera de estas técnicas dinámicas para entender su funcionamiento. Buffer de predicción de saltos. Vamos a ver una versión muy sencilla, en la cual el buffer está formado por una pequeña memoria indexada con los bits menos significativos de la dirección de la instrucción de salto. Además contiene un bit para indicar si el salto fue tomado o no en su última evaluación. Puede suceder que una nueva instrucción de salto tenga sus bits de menor peso de su dirección coincidentes con otra instrucción de salto ya evaluada. No importa, se procede como si nada pasara y la predicción de la anterior instrucción y su dirección de salto son tomadas como buenas. En caso de que se produzca un fallo, se invertirá no solo el bit de predicción sino también se corregirá la dirección de salto del buffer de predicción. Con un solo bit, cada vez que estemos analizando una instrucción condicional de final de bucle, al cometer un error en su predicción, este será doble: al suponer que salto y no salta (última iteración del bucle) y la siguiente vez que lo evaluemos que lo hacemos a no salta y nos equivocaremos también pues si que saltará. Ejemplo: Sea el siguiente fragmento de programa en ensamblador. bubu: ADDI R8,R0,10 ADD R4, R5, R6 XOR R12, R4, R0... ADDI R8,R0,-1 bnez R8, bubu... ; salta si no es igual a cero Este bucle se repite 10 veces, y si se ejecuta muchas veces, ocurrirá que la primera y la última vez será evaluado erróneamente. Vicente Arnau Llombart 2 30/11/2006

Pero es fácil mejorar la predicción para estos casos, basta con utilizar cuatro posibles estados de predicción, es decir 2 bits en vez de uno. 11: efectivo con alta probabilidad. 10: efectivo probable. 01: no efectivo probable. 00: no efectivo con alta probabilidad. Tendremos un autómata finito con cuatro estados, de forma que para pasar de una predicción de salto a una de no salto, al menos se han de producir dos errores consecutivos. Veamos la forma que tendrá este autómata en la figura siguiente: Otra forma de realizar este esquema de predicción es utilizar como dirección de entrada al buffer toda la dirección de la instrucción de salto, en vez de solo sus bits menos significativos. Esto aumenta el rendimiento. Vicente Arnau Llombart 3 30/11/2006

Vicente Arnau Llombart 4 30/11/2006

;*********************************************** ; CLASE_01.S : Z(n) = Y(n) + CTE ;*********************************************** ; vector y.data 0X2000 y:.word 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ; vector z : 10 elementos z:.space 40 cte:.word 7.text 0x1000 start: addi r1, r0, y addi r2, r0, z loop: lw r4, cte addi r10,r1,#40 lw r20, 0(r1) add r21, r4, r20 sw 0(r2),r21 add r1,r1,#4 add r2,r2,#4 sub r11,r10,r1 bnez r11,loop trap #0 ; r1 = direccion de y ; r2 = direccion de z ; r4 = cte ; 10 elementos ; fin de programa 000 10 001 10 010 0x00001010 011 10 100 10 101 10 110 10 111 10 Vicente Arnau Llombart 5 30/11/2006

Vicente Arnau Llombart 6 30/11/2006

Vicente Arnau Llombart 7 30/11/2006

Vicente Arnau Llombart 8 30/11/2006

Vicente Arnau Llombart 9 30/11/2006