Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de...
-
Upload
trinidad-leandro -
Category
Documents
-
view
231 -
download
0
Transcript of Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de...
![Page 1: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/1.jpg)
Compiladores
Asignación de Registros
![Page 2: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/2.jpg)
2
Resumen
• ¿Qué es asignación de registros?• Un asignador de registros simple• Webs• Grafos de interferencia• Coloreando grafos• Splitting• Más optimizaciones
![Page 3: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/3.jpg)
3
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
![Page 4: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/4.jpg)
4
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
![Page 5: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/5.jpg)
5
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!
![Page 6: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/6.jpg)
6
¿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
![Page 7: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/7.jpg)
7
Resumen
• ¿Qué es asignación de registros?• Un asignador de registros simple• Webs• Grafos de interferencia• Coloreando grafos• Splitting• Más optimizaciones
![Page 8: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/8.jpg)
8
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
![Page 9: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/9.jpg)
9
Ejemplo
def zuse z
def xdef yuse xuse xuse y
use z
![Page 10: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/10.jpg)
10
Ejemplo
def zuse z
def xdef yuse xuse xuse y
use z
• Costo para bloques básicos– 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
![Page 11: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/11.jpg)
11
Ejemplo
def zuse z
def xdef yuse xuse xuse y
use z
• Frecuencia– freq(bb1) = 1– freq(bb2) = 100– freq(bb3) = 1
• Costo para bloques básicos– 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
![Page 12: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/12.jpg)
12
Ejemplo
def zuse z
def xdef yuse xuse xuse y
use z
• Costo para bloques básicos– 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
• Frecuencia– freq(bb1) = 1– freq(bb2) = 100– freq(bb3) = 1
![Page 13: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/13.jpg)
13
Ejemplo
def zuse z
def xdef yuse xuse xuse y
use z
• Costo total– CostoTotal(x) = 300– CostoTotal(y) = 200– CostoTotal(z) = 4
• Asumimos que hay 2 registros disponibles– Asignamos x e y a registros
![Page 14: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/14.jpg)
14
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 zuse z
def xdef yuse xuse xuse y
def zuse z
![Page 15: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/15.jpg)
15
Problema 1
def zuse z
def xdef yuse xuse xuse y
def zuse z
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
![Page 16: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/16.jpg)
16
Problema 1
def zuse z
def xdef yuse xuse xuse y
def zuse z
x y z
r1r2
r1
r1
• 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
![Page 17: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/17.jpg)
17
Problema 2
• Incluso las variables que no se interfieren no pueden compartir registros
![Page 18: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/18.jpg)
18
Problema 2
• Incluso las variables que no se interfieren no pueden compartir registros
{ int x; … } { int y; … }
![Page 19: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/19.jpg)
19
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; … }
![Page 20: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/20.jpg)
20
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 xuse & use y
use & def x
use & def y
use xuse y
![Page 21: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/21.jpg)
21
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)
![Page 22: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/22.jpg)
22
Resumen
• ¿Qué es asignación de registros?• Un asignador de registros simple• Webs• Grafos de interferencia• Coloreando grafos• Splitting• Más optimizaciones
![Page 23: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/23.jpg)
23
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
![Page 24: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/24.jpg)
24
Ejemplo
def y
def xuse y
def xdef y
use xdef x
use x
use xuse y
![Page 25: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/25.jpg)
25
Ejemplo
def y
def xuse y
def xdef y
use xdef x
use x
use xuse y
![Page 26: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/26.jpg)
26
Ejemplo
def y
def xuse y
def xdef y
use xdef x
use x
use xuse y
![Page 27: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/27.jpg)
27
Ejemplo
def y
def xuse y
def xdef y
use xdef x
use x
use xuse y
![Page 28: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/28.jpg)
28
Ejemplo
def y
def xuse y
def xdef y
use xdef x
use x
use xuse y
![Page 29: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/29.jpg)
29
Ejemplo
def y
def xuse y
def xdef y
use xdef x
use x
use xuse y
![Page 30: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/30.jpg)
30
Ejemplo
def y
def xuse y
def xdef y
use xdef x
use x
use xuse y
![Page 31: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/31.jpg)
31
Ejemplo
def y
def xuse y
def xdef y
use xdef x
use x
use xuse y
s1
s2
s3
s4
![Page 32: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/32.jpg)
32
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
![Page 33: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/33.jpg)
33
Resumen
• ¿Qué es asignación de registros?• Un asignador de registros simple• Webs• Grafos de interferencia• Coloreando grafos• Splitting• Más optimizaciones
![Page 34: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/34.jpg)
34
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
![Page 35: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/35.jpg)
35
Ejemplo
def y
def xuse y
def xdef y
use xdef x
use x
use xuse y
s1
s2
s3
s4
![Page 36: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/36.jpg)
36
Ejemplo
def y
def xuse y
use xdef x
use x
s1
s2
s3
s4
def xdef y
use xuse y
![Page 37: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/37.jpg)
37
Ejemplo
def y
def xuse y
use xdef x
use x
s1
s2
s3
s4
def xdef y
use xuse y
Webs s1 y s2 interfierenWebs s2 y s3 interfieren
![Page 38: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/38.jpg)
38
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
![Page 39: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/39.jpg)
39
Ejemplo
def y
def xuse y
use xdef x
use x
s1
s2
s3
s4
def xdef y
use xuse y
s1 s2
s3 s4
![Page 40: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/40.jpg)
40
Ejemplo
def y
def xuse y
use xdef x
use x
s1
s2
s3
s4
def xdef y
use xuse y
Webs s1 y s2 interfierenWebs s2 y s3 interfieren
s1 s2
s3 s4
![Page 41: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/41.jpg)
41
Resumen
• ¿Qué es asignación de registros?• Un asignador de registros simple• Webs• Grafos de interferencia• Coloreando grafos• Splitting• Más optimizaciones
![Page 42: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/42.jpg)
42
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
![Page 43: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/43.jpg)
43
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
![Page 44: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/44.jpg)
44
Ejemplo de Graph Coloring
![Page 45: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/45.jpg)
45
Ejemplo de Graph Coloring
• 1 Color
![Page 46: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/46.jpg)
46
Ejemplo de Graph Coloring
![Page 47: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/47.jpg)
47
Ejemplo de Graph Coloring
• 2 Colores
![Page 48: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/48.jpg)
48
Ejemplo de Graph Coloring
![Page 49: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/49.jpg)
49
Ejemplo de Graph Coloring
• Todavía 2 Colores
![Page 50: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/50.jpg)
50
Ejemplo de Graph Coloring
![Page 51: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/51.jpg)
51
Ejemplo de Graph Coloring
• 3 Colores
![Page 52: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/52.jpg)
52
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
![Page 53: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/53.jpg)
53
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)
![Page 54: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/54.jpg)
54
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
![Page 55: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/55.jpg)
55
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
![Page 56: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/56.jpg)
56
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4
![Page 57: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/57.jpg)
57
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s2
![Page 58: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/58.jpg)
58
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s2s1
![Page 59: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/59.jpg)
59
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s2s1s3
![Page 60: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/60.jpg)
60
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s2s1s3
![Page 61: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/61.jpg)
61
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s2s1s3
![Page 62: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/62.jpg)
62
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s2s1
![Page 63: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/63.jpg)
63
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s2s1
![Page 64: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/64.jpg)
64
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s2
![Page 65: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/65.jpg)
65
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s2
![Page 66: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/66.jpg)
66
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4
![Page 67: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/67.jpg)
67
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4
![Page 68: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/68.jpg)
68
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
![Page 69: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/69.jpg)
69
Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
![Page 70: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/70.jpg)
70
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
![Page 71: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/71.jpg)
71
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4
![Page 72: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/72.jpg)
72
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4
![Page 73: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/73.jpg)
73
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s3
![Page 74: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/74.jpg)
74
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s3s2
![Page 75: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/75.jpg)
75
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s3s2
![Page 76: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/76.jpg)
76
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s3s2
![Page 77: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/77.jpg)
77
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s3
![Page 78: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/78.jpg)
78
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4s3
![Page 79: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/79.jpg)
79
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4
![Page 80: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/80.jpg)
80
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
s4
![Page 81: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/81.jpg)
81
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
![Page 82: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/82.jpg)
82
Otro Ejemplo de Colorear
s1 s2
s3 s4
s0
N = 3
![Page 83: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/83.jpg)
83
Resumen
• ¿Qué es asignación de registros?• Un asignador de registros simple• Webs• Grafos de interferencia• Coloreando grafos• Splitting• Más optimizaciones
![Page 84: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/84.jpg)
84
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
![Page 85: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/85.jpg)
85
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
![Page 86: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/86.jpg)
86
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
x y
z
![Page 87: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/87.jpg)
87
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
x y
z
¿2-coloreable?
![Page 88: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/88.jpg)
88
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
x y
z
¿2-coloreable?¡No!
![Page 89: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/89.jpg)
89
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
![Page 90: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/90.jpg)
90
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
![Page 91: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/91.jpg)
91
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
x y
z2
z1
![Page 92: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/92.jpg)
92
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
x y
z2
z1
¿2-coloreable?
![Page 93: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/93.jpg)
93
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
x y
z2
z1
¿2-coloreable?¡Sí!
![Page 94: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/94.jpg)
94
Ejemplo de Splitting
def zuse z
def xdef yuse xuse xuse y
use z
x y z
r1r2
r1
r1
x y
z2
z1
¿2-coloreable?¡Sí!
![Page 95: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/95.jpg)
95
Ejemplo de Splittingdef zuse zstr z
def xdef yuse xuse xuse y
ld zuse z
x y z
r1r2
r1
r1
x y
z2
z1
¿2-coloreable?¡Sí!
![Page 96: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/96.jpg)
96
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
![Page 97: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/97.jpg)
97
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
![Page 98: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/98.jpg)
98
Resumen
• ¿Qué es asignación de registros?• Un asignador de registros simple• Webs• Grafos de interferencia• Coloreando grafos• Splitting• Más optimizaciones
![Page 99: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/99.jpg)
99
Otras Optimizaciones
• Register coalescing
• Register targeting (pre-coloring)
• Presplitting of webs
• Interprocedural register allocation
![Page 100: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/100.jpg)
100
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
![Page 101: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/101.jpg)
101
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
![Page 102: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/102.jpg)
102
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)
![Page 103: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/103.jpg)
103
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
![Page 104: Compiladores Asignación de Registros. 2 Resumen ¿Qué es asignación de registros? Un asignador de registros simple Webs Grafos de interferencia Coloreando.](https://reader035.fdocuments.es/reader035/viewer/2022062217/5665b4331a28abb57c8feb8e/html5/thumbnails/104.jpg)
104
Lecturas
• Ballena– Capítulo 16