Asignación de Registros

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Diseño y análisis de algoritmos
Inteligencia Artificial
Planificación de Monoprocesadores
III - Gestión de memoria
Alexandre D. Salcianu and Martin C. Rinard. Definiciones Un método es puro si no muta ninguna locación existente en el estado correcto anterior a la invocación.
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Windows XP sp3.
Teoría de lenguajes y compiladores
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Arquitectura de Conjunto de Instrucciones (ISA)
Tema 3. Optimización de Código
Tema 6: Clases Antonio J. Sierra.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Tema 10: Gestión de Memoria
MIPS Intermedio.
Semana 5 Subprogramas..
 LOPEZ MENDOZA CORINA AMALINALLI  GRUPO 304.  Una base de datos o banco de datos (en ocasiones abreviada BB.DD.) es un conjunto de datos pertenecientes.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Compiladores Optimizaciones Tradicionales Simplificación Algebraica, Copy Propagation, y Constant Propagation.
Clase 10: Estructuras de datos y arreglos.
Diseño y análisis de algoritmos
Estructura de Datos II Equipo 4 Equipo 7 Acosta Montiel Miguel A.
Tablas de Hash.
Administración de Memoria Memoria Virtual
Sesión 6: Campos de Markov
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Overview Sistemas Computacionales
Alexandre D. Salcianu and Martin C. Rinard. Definiciones  Un método es puro si no “muta” ninguna locación existente en el estado correcto anterior a.
(Organización y Manejo de Archivos)
Parte II. Algorítmica. 3. Algoritmos voraces.
Asignación de Espacio No Contiguo
Soporte HW para Administración de Memoria Cecilia Hernández
Administración de Memoria
Scheduling dinámico Algoritmo de Tomasulo.
Material de apoyo Unidad 4 Estructura de datos
O Funcionamiento, ventajas y alcance o ESTUDIANTE: EDWIN ARAY VÉLEZ o PROFESOR: ING. JOSÉ MEDINA o FUNDAMENTOS TECNOLÓGICOS DE INFORMACIÓN.
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
Capítulo 7 Gestión de memoria.
Manejo de Punteros y objetos en memoria dinámica en C++
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
Informática Ingeniería en Electrónica y Automática Industrial
Parte I. Estructuras de Datos.
1 Compilación, pereza y expresiones let(rec) 2 Compilando un programa Describiremos un compilador para la máquina minimal usando un conjunto de esquemas.
INFORMATICA VII (Programación e implementación de sistemas)
Parte I. Estructuras de Datos.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Ing. Lionel Hendryk. Sistemas Embebidos Un sistema embebido es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas.
Teoría de Sistemas Operativos Memoria Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Universidad de San Pedro Sula
Tema 11 Bases de Datos y el Lenguaje SQL
Metodología de la programación
Introducción a los TADs
Compiladores Análisis de Flujo de Datos. 2 Resumen Overview de análisis de control de flujo Expresiones disponibles Algoritmo para calcular expresiones.
Capítulo 8: Árboles Autor: José Alfredo Jiménez Murillo.
Lic. Carla Aguirre Montalvo
Para aplicaciones.   Una variable es un espacio de memoria en donde se almacenan datos 1. VARIABLES.
MEMORIA DINÁMICA.
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
MIPS Intermedio.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
Gestión de Memoria – Parte 2
Planificación de CPU Conceptos Básicos Criterios de Planificación Algoritmos de Planificación Planificación con Múltiples Procesadores Planificación Real-Time.
Bloqueos Mutuos Modelo del Sistema Caracterización de Deadlock Métodos de manejo de Deadlocks Prevención de Deadlocks Evitación de Deadlocks Detección.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
U niversidad de G uadalajara Centro Universitario de Ciencias Exactas e Ingenierías Ponentes: Muñoz Guzmán Ramón Gallardo Olivares Mario Solís Flores José.
Transcripción de la presentación:

Asignación de Registros

Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando grafos Splitting Más optimizaciones 2

Asignación de Registros Usar de forma óptima uno de los recursos más críticos del procesador Asignación de variables (hasta ahora en memoria) a registros de hardware Pseudo registros: número ilimitado de registros virtuales, es espacio se asigna normalmente en el stack Registros reales: conjunto de registros disponibles en el procesador 3

Importancia de Asignación de Registros Sólo hay un número finito y pequeño de registros disponibles Usualmente 32 registros enteros y 32 de punto flotante Algunos de esos registros tienen usos fijos (r0, ra, sp, fp) El acceso a registros es mucho más rápido que el acceso a memoria La diferencia es mucho más grande en procesadores modernos Menos instrucciones cuándo usamos registros La mayoría de instrucciones son registro-a-registro Se necesitan instrucciones adicionales para llevar los datos de memoria a un registro 4

Importancia de Asignación de Registros Permite otras optimizaciones CSE asume que las variables están en registros Asignación de registros tiene un impacto directo en el rendimiento Afecta casi todo statement del programa Elimina instrucciones caras de memoria El # de instrucciones baja debido a la manipulación directa de registros (no hay necesidad de instrucciones load/store) ¡Es probablemente la optimización que tiene el mayor impacto! 5

¿Qué se puede poner en un registro? Variables escalares Constantes grandes Algunos elementos de arreglos y campos de records El conjunto de registros depende del tipo de datos floating-point en registros fp fixed-point en registros enteros 6

Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando grafos Splitting Más optimizaciones 7

Un asignador de registros simple “siempre o nunca” Estimar el beneficio de poner cada variable en un registro para un bloque básico en particular costo(var, bb) = número de usos y definiciones de la variable. Estimar el beneficio general CostoTotal(var) = costo(var, bb)*freq(bb) para todo bb Assignar las R variables de mayor beneficio a registros 8

Ejemplo def z use z def x def y use x use y use z 9

Ejemplo Costo para bloques básicos def z use z costo(x, bb1) = 0 costo(y, bb1) = 0 costo(y, bb2) = 2 costo(y, bb3) = 0 costo(z, bb1) = 2 costo(z, bb2) = 0 costo(z, bb3) = 1 def z use z def x def y use x use y use z 10

Ejemplo Costo para bloques básicos Frecuencia def z use z costo(x, bb1) = 0 costo(x, bb2) = 3 costo(x, bb3) = 0 costo(y, bb1) = 0 costo(y, bb2) = 2 costo(y, bb3) = 0 costo(z, bb1) = 2 costo(z, bb2) = 0 costo(z, bb3) = 1 def z use z Frecuencia freq(bb1) = 1 freq(bb2) = 100 freq(bb3) = 1 def x def y use x use y use z 11

Ejemplo Costo para bloques básicos Frecuencia Costo total def z use z costo(x, bb1) = 0 costo(x, bb2) = 3 costo(x, bb3) = 0 costo(y, bb1) = 0 costo(y, bb2) = 2 costo(y, bb3) = 0 costo(z, bb1) = 2 costo(z, bb2) = 0 costo(z, bb3) = 1 Costo total CostoTotal(x) = 0*1 + 3*100 + 0*1 = 300 CostoTotal(y) = 0*1 + 2*100 + 0*1 = 200 CostoTotal(z) = 3*1 + 0*100 + 1*1 = 4 def z use z Frecuencia freq(bb1) = 1 freq(bb2) = 100 freq(bb3) = 1 def x def y use x use y use z 12

Ejemplo Costo total Asumimos que hay 2 registros disponibles CostoTotal(x) = 300 CostoTotal(y) = 200 CostoTotal(z) = 4 Asumimos que hay 2 registros disponibles Asignamos x e y a registros def z use z def x def y use x use y use z 13

Problema 1 Asignación es igual que antes x e y van en registros, z no Las variables ocupan el registro incluso cuándo no lo necesitan Todas (x, y, & z) pueden tener registros def z use z def x def y use x use y def z use z 14

Problema 1 Asignación es igual que antes x y z Asignación es igual que antes x e y van en registros, z no Las variables ocupan el registro incluso cuándo no lo necesitan Todas (x, y, & z) pueden tener registros def z use z def x def y use x use y def z use z 15

Problema 1 Asignación es igual que antes x y z Asignación es igual que antes x e y van en registros, z no Las variables ocupan el registro incluso cuándo no lo necesitan Todas (x, y, & z) pueden tener registros def z use z r1 r2 def x def y use x use y r1 r1 def z use z 16

Problema 2 Incluso las variables que no se interfieren no pueden compartir registros 17

Problema 2 Incluso las variables que no se interfieren no pueden compartir registros { int x; … } { int y; … } 18

Problema 2 Incluso las variables que no se interfieren no pueden compartir registros x e y pueden usar el mismo registro { int x; … } { int y; … } 19

Problema 3 Diferentes fases del programa se comportan de distinta forma Un registro disponible registro para x en el primer loop registro para y en el segundo loop no nos importa mucho el resto Tenemos que “derramar” (spill) todo o nada no va a funcionar def & use x use & use y use & def x use & def y use x use y 20

Lo que un asignador inteligente debe hacer Determinar rangos para cada variable en los que haya beneficio al usar un registro (webs) Determinar cuáles de estos rangos se traslapan (interference) Encontrar los beneficios de mantener cada variable en un registro (spill cost) Decidir cuáles webs obtienen un registro (allocation) Dividir webs si es necesario (spilling and splitting) Asignar registros reales a webs (assignment) Generar código incluyendo spills (code generation) 21

Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando grafos Splitting Más optimizaciones 22

Webs Lo que debe ser memorizado es el valor dividir accesos a variables en múltiples webs Todas las definiciones que llegan a un uso en mismo web Todos los usos que usan el valor definido en mismo web Dividir la variable en rangos de vida Implementación: Usar cadenas DU Una cadena du conecta la definición a todos los usos que alcanza esta definición Un web combina las cadenas du que contienen un uso común 23

Ejemplo def y def x def y def x use y use x use y use x def x use x 24

Ejemplo def y def x def y def x use y use x use y use x def x use x 25

Ejemplo def y def x def y def x use y use x use y use x def x use x 26

Ejemplo def y def x def y def x use y use x use y use x def x use x 27

Ejemplo def y def x def y def x use y use x use y use x def x use x 28

Ejemplo def y def x def y def x use y use x use y use x def x use x 29

Ejemplo def y def x def y def x use y use x use y use x def x use x 30

Ejemplo def y s1 def x def y def x use y s2 s3 use x use y use x def x 31

Webs En dos webs de la misma variable: Ningún uso en un web va a usar nunca un valor definido por el otro web Por lo tanto, ningún valor necesita ser llevado entre webs Cada web puede ser tratada independientemente Web es usado como la unidad de asignación de registros Si se le asigna un registro a un web, todos los usos y definiciones dentro del web no necesitan load ni store de memoria Diferentes webs pueden ser asignados a diferentes registros o uno a un registro y otro a memoria 32

Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando grafos Splitting Más optimizaciones 33

Interferencia Dos webs interfieren si el rango de vida de dos webs se traslapa en el tiempo Webs que no se interfieren pueden ser asignados al mismo registro 34

Ejemplo def y s1 def x def y def x use y s2 s3 use x use y use x def x 35

Ejemplo def y s1 def x def y def x use y s2 s3 use x use y use x def x 36

Ejemplo Webs s1 y s2 interfieren Webs s2 y s3 interfieren def y s1 def x def y def x use y s2 s3 use x use y use x def x s4 use x 37

Grafo de Interferencia Representación de webs y sus interferencias Nodos son webs Existe una arista entre nodos si estos interfieren s1 s2 s3 s4 38

Ejemplo def y s1 def x def y def x use y s2 s3 use x use y use x def x 39

Ejemplo Webs s1 y s2 interfieren Webs s2 y s3 interfieren def y s1 def x def y def x use y s2 s3 use x use y use x def x s1 s2 s4 use x s3 s4 40

Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando grafos Splitting Más optimizaciones 41

Asignación de Registros usando Graph Coloring A cada web se le asigna un registro cada nodo obtiene un registro (color) Si dos webs interfieren no pueden usar el mismo registro si dos nodos tienen una arista entre ellos, no pueden tener el mismo color s1 s2 s3 s4 42

Graph Coloring ¿Cuál es el número mínimo de colores con el que se pueden colorerar los nodos del grafo tal que cualesquiera nodos conectados mediante una arista no tengan el mismo color? Problema clásico en teoría de grafos 43

Ejemplo de Graph Coloring 44

Ejemplo de Graph Coloring 45

Ejemplo de Graph Coloring 46

Ejemplo de Graph Coloring 2 Colores 47

Ejemplo de Graph Coloring 48

Ejemplo de Graph Coloring Todavía 2 Colores 49

Ejemplo de Graph Coloring 50

Ejemplo de Graph Coloring 3 Colores 51

Heuristicas para Colorear Registros Coloreando un grafo con N colores Si grado < N (grado de un nodo = # de aristas) Nodo siempre puede ser coloreado Luego de colorear el resto de los nodos va a quedar al menos un color para colorear el nodo actual Si grado >= N Puede que todavía sea coloreable con N colores Solución exacta es NP complete 52

Heuristicas para Colorear Registros Eliminar nodos que tengan grado < N meter los nodos eliminados a un stack Si todos los nodos tienen grado >= N encontrar un nodo para “spill” (no hay color para ese nodo) eliminar ese nodo Cuando esté vacío, comenzamos a colorerar sacar un nodo del stack asignarle un color que sea diferente de sus nodos conectados (como el grado < N, debe existir un color) 53

Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 54

Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 55

Ejemplo de Colorear N = 3 s1 s2 s0 s4 s3 s4 56

Ejemplo de Colorear N = 3 s1 s2 s0 s2 s4 s3 s4 57

Ejemplo de Colorear N = 3 s1 s2 s0 s1 s2 s4 s3 s4 58

Ejemplo de Colorear N = 3 s1 s2 s3 s0 s1 s2 s4 s3 s4 59

Ejemplo de Colorear N = 3 s1 s2 s3 s0 s1 s2 s4 s3 s4 60

Ejemplo de Colorear N = 3 s1 s2 s3 s0 s1 s2 s4 s3 s4 61

Ejemplo de Colorear N = 3 s1 s2 s0 s1 s2 s4 s3 s4 62

Ejemplo de Colorear N = 3 s1 s2 s0 s1 s2 s4 s3 s4 63

Ejemplo de Colorear N = 3 s1 s2 s0 s2 s4 s3 s4 64

Ejemplo de Colorear N = 3 s1 s2 s0 s2 s4 s3 s4 65

Ejemplo de Colorear N = 3 s1 s2 s0 s4 s3 s4 66

Ejemplo de Colorear N = 3 s1 s2 s0 s4 s3 s4 67

Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 68

Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 69

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 70

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s4 s3 s4 71

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s4 s3 s4 72

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 s3 s4 73

Otro Ejemplo de Colorear N = 3 s1 s2 s2 s0 s3 s4 s3 s4 74

Otro Ejemplo de Colorear N = 3 s1 s2 s2 s0 s3 s4 s3 s4 75

Otro Ejemplo de Colorear N = 3 s1 s2 s2 s0 s3 s4 s3 s4 76

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 s3 s4 77

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 s3 s4 78

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s4 s3 s4 79

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s4 s3 s4 80

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 81

Otro Ejemplo de Colorear N = 3 s1 s2 s0 s3 s4 82

Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando grafos Splitting Más optimizaciones 83

Spilling y Splitting Cuándo el grafo no es N-coloreable Seleccionamos un web para “spill” Encontrar el web de menor costo de spill Los usos y definiciones de ese web son leidos y escritos a memoria Dividir el web (Split) Dividir un web en múltiples webs para que haya menos interferencias en el grafo volviendolo N-coloreable Derramar (spill) el valor a memoria y cargarlo de regreso en los puntos donde se dividió el web 84

Ejemplo de Splitting x y z def z use z def x def y use x use y use z 85

Ejemplo de Splitting x y z def z use z def x def y use x use y x y z 86

Ejemplo de Splitting ¿2-coloreable? x y z def z use z def x def y use x use y x y z use z ¿2-coloreable? 87

Ejemplo de Splitting ¿2-coloreable? ¡No! x y z def z use z def x def y use x use y x y z use z ¿2-coloreable? ¡No! 88

Ejemplo de Splitting x y z def z use z def x def y use x use y use z 89

Ejemplo de Splitting x y z def z use z def x def y use x use y use z 90

Ejemplo de Splitting x y z def z use z z1 def x def y use x use y x y 91

Ejemplo de Splitting ¿2-coloreable? x y z def z use z z1 def x def y use x use y x y z2 use z ¿2-coloreable? 92

Ejemplo de Splitting ¿2-coloreable? ¡Sí! x y z def z use z z1 def x def y use x use y x y z2 use z ¿2-coloreable? ¡Sí! 93

Ejemplo de Splitting ¿2-coloreable? ¡Sí! x y z def z use z r1 z1 r2 def x def y use x use y r1 x y r1 z2 use z ¿2-coloreable? ¡Sí! 94

Ejemplo de Splitting ¿2-coloreable? ¡Sí! def z use z str z x y z r1 z1 def x def y use x use y r1 x y r1 z2 ld z use z ¿2-coloreable? ¡Sí! 95

Splitting Identificar un punto en el programa donde el grafo no es R-coloreable (punto donde # de webs > N) Elegir un web que no es usado en el bloque envolvente más grande al rededor de ese punto en el programa Dividir ese web (split) Rehacer el grafo de interferencia Tratar de re colorear el grafo 96

Costo y beneficio de splitting Costo de dividir un nodo Proporcional al número de veces que la arista dividida tenga que ser cruzada dinámicamente Estimable mediante anidamiento de loops Beneficios Aumenta la colorabilidad de los nodos con los que interfiere el web que dividimos Puede aproximarse por su grado en el grafo de interferencia Heuristica ambiciosa Elegir el rango de vida con la mayor razón beneficio/costo para dividir 97

Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando grafos Splitting Más optimizaciones 98

Otras Optimizaciones Register coalescing Register targeting (pre-coloring) Presplitting of webs Interprocedural register allocation 99

Register Coalescing Encontrar instrucciones de copia de registros como sj = si Si sj y si no interfieren, combinar sus webs Pros similar a copy propagation reduce el número de instrucciones Cons puede incrementar el grado del nodo combinado un grafo coloreable se puede volver incoloreable 100

Register Targeting (pre-coloring) Algunas variables tienen que estar en registros especiales en momentos determinados primeros 4 argumentos de una función valor de retorno Pre-colorear esos webs y asociarlos al registro adecuado Elimina instrucciones de copia innecesarias 101

Pre-splitting de webs Algunos rangos de vida tienen regiones “muertas” muy grandes Región grande donde la variable no es usada Romper los rangos de vida hay que pagar un pequeño costo de spilling pero el grafo va ser mucho más fácil de colorear Podemos encontrar localidades estratégicas para romperlos en un punto de llamada (hay que hacer spill de todas formas) al rededor de un loop grande (reservar registros para valores usados dentro del loop) 102

Interprocedural register allocation Guardar registros en llamdas a procedimientos es caro especialmente para programas con muchas funciones pequeñas Convenciones de llamado son muy generales e ineficientes Customizar las convenciones de llamado por función mediante asignación de registros interprocedural 103

Lecturas Ballena Capítulo 16 104