Optimización de registros basada en el compilador

Optimización del uso de registros en una máquina RISC con un número limitado de registros (por ejemplo, 16-32).

En un programa escrito en un lenguaje de alto nivel, las cantidades se hacen referencia de manera simbólica, y el compilador es responsable de mantener en registros, en lugar de en memoria, los operandos necesarios para cálculos y minimizar las operaciones de carga y almacenamiento. Se utiliza una técnica llamada “coloreado de grafos” para tomar decisiones sobre qué cantidades deben asignarse a registros en un punto dado del programa. Aquí están los puntos clave:

Uso de registros en una máquina RISC con pocos registros:

  • Un programa en un lenguaje de alto nivel se compila en código de máquina, y el compilador debe asignar cantidades simbólicas a registros reales.
  • Los registros simbólicos se asignan a registros reales, y aquellos cuya utilización no se solapa pueden compartir el mismo registro real.
  • Si hay más cantidades que registros reales en una parte del programa, algunas cantidades se asignan a posiciones de memoria.
  • Las instrucciones de carga y almacenamiento se utilizan para mover temporalmente las cantidades entre registros y memoria durante operaciones de cálculo.

Coloreado de grafos:

  • Se construye un grafo de interferencias entre registros, donde los nodos representan registros simbólicos y los arcos representan la interferencia entre registros.
  • El objetivo es colorear el grafo con un número limitado de colores (número de registros) de manera que los nodos adyacentes tengan colores diferentes.
  • Los nodos del grafo que comparten el mismo color se asignan al mismo registro real.
  • Si no es posible colorear el grafo por completo, los nodos sin color se colocan en memoria, lo que requiere cargas y almacenamientos adicionales cuando se necesitan.

Compromiso entre tamaño del conjunto de registros y optimización:

  • Existe un equilibrio entre el uso de un conjunto grande de registros y la optimización basada en el compilador.
  • Estudios demuestran que, incluso con optimización de registros simple, utilizar más de 64 registros proporciona beneficios limitados.
  • Con técnicas de optimización de registros más sofisticadas, el beneficio de tener más de 32 registros es modesto.
  • Un pequeño número de registros (por ejemplo, 16) puede funcionar eficientemente en una máquina con organización de registros compartidos.

En resumen, la optimización de registros en máquinas RISC con un número limitado de registros implica el uso de técnicas como el coloreado de grafos para asignar cantidades simbólicas a registros reales y minimizar la necesidad de carga y almacenamiento de datos en memoria.