Alocação de registro

Definição – O que significa Atribuição de Registros?

A alocação de registro refere-se à prática de atribuir variáveis ​​aos registros, bem como lidar com a transferência de dados para dentro e fora dos registros. A alocação de registro pode ocorrer:

  • Em um bloco básico, conhecido como alocação de registro local
  • Sobre uma função ou procedimento inteiro, conhecido como alocação de registro global
  • Sobre os limites da função percorridos por meio de um gráfico de chamadas, conhecido como alocação de registro entre procedimentos

Definirtec explica a alocação de registros

Durante o curso da compilação, o compilador deve determinar a maneira como as variáveis ​​são alocadas para um pequeno intervalo específico de registradores. Algumas das variáveis ​​podem não estar em uso ou podem estar “ativas” simultaneamente. Isso leva à atribuição de alguns registradores a várias variáveis. No entanto, duas variáveis ​​ativas simultâneas não podem ser alocadas exatamente no mesmo registro sem corromper o valor.

Variáveis ​​que não podem ser alocadas a alguns registradores precisam ser armazenadas na RAM e devem ser carregadas dentro e fora para cada leitura e escrita, respectivamente, um procedimento conhecido como spilling. Acessar registradores é muito mais rápido do que acessar RAM. Além disso, acelera o tempo de execução do programa compilado; portanto, compiladores eficientes visam atribuir tantas variáveis ​​aos registradores quanto possível.

Geralmente, a maioria dos alocadores de registro atribuem cada variável à memória principal ou a um registro da unidade de processamento central (CPU). A velocidade é o principal benefício ao usar um registro. Os computadores apresentam uma gama finita de registros, o que significa que nem todas as variáveis ​​disponíveis podem ser atribuídas a registros. O processo de transferência de uma variável de um registro para a memória é conhecido como derramamento, enquanto o procedimento reverso de mover uma variável da memória para um registro é conhecido como preenchimento. A alocação de registro inteligente é uma etapa crucial para qualquer compilador.

Existem dois tipos de alocação de registro:

  • Alocação de registro local: Este é um processo de alocação de um bloco básico (ou hiper ou super bloco) de cada vez. A alocação de registro local aumenta a velocidade.
  • Alocação de registro global: Se a utilização do registro for pobre usando a alocação local, é importante fazer uso da alocação de registro global. Na alocação de registro global simples, os valores mais ativos são alocados em cada loop interno. A alocação de registro global completa usa um procedimento para identificar faixas vivas em um gráfico de fluxo de controle, atribuir faixas vivas e também dividir faixas conforme necessário.