METHOD AND APPARATUS FOR REUSABLE AND RELATIVE INDEXED REGISTER RESOURCE ALLOCATION IN FUNCTION CALLS

The disclosed systems, apparatuses and methods are directed to optimizing by a compiler register resource allocation for functions of a module, using a Register File comprising a limited number of registers. After performing interprocedural analysis in the module, the compiler computes the number of...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: NOWICKI, Tyler Bryce, LUO, Yan, ELTANTAWY, Ahmed Mohammed ElShafiey Mohammed
Format: Patent
Sprache:eng ; fre
Schlagworte:
Online-Zugang:Volltext bestellen
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Beschreibung
Zusammenfassung:The disclosed systems, apparatuses and methods are directed to optimizing by a compiler register resource allocation for functions of a module, using a Register File comprising a limited number of registers. After performing interprocedural analysis in the module, the compiler computes the number of registers used by each function, and compiles the function to final machine code, except at callsites where a call is detected to be made to another function. At each callsite and for each called function, the compiler expands call instructions to final machine code after computing and setting a relative index to be used by a called function for running in an available part of the Register File. The relative index optimizes register resource allocation by minimizing the number of spilled registers before a function is called. L'invention concerne des systèmes, des appareils et des procédés visant à faire optimiser par un compilateur attribution de ressources de registres pour des fonctions d'un module, en utilisant un fichier de registres comportant un nombre limité de registres. Après avoir effectué une analyse inter-procédurale dans le module, le compilateur calcule le nombre de registres utilisés par chaque fonction, et compile la fonction en un code machine final, à l'exception des sites d'appel où il est détecté qu'un appel à une autre fonction est effectué. À chaque site d'appel et pour chaque fonction appelée, le compilateur étend des instructions d'appel au code machine final après avoir calculé et réglé un indice relatif à utiliser par une fonction appelée pour s'exécuter dans une partie disponible du fichier de registres. L'indice relatif optimise l'attribution de ressources de registres en minimisant le nombre de registres déversés avant qu'une fonction soit appelée.