SAMPLE DRIVEN PROFILE GUIDED OPTIMIZATION WITH PRECISE CORRELATION

A profile guided optimization compiler utilizes sample profile data including a control flow representation of a program having block counts associated with each basic block of the program, and edge counts associated with each control flow edge estimated from the block counts. The sample profile dat...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: CHANDAR, Pratap Joseph, TZEN, Ten, HE, Wenlei
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:A profile guided optimization compiler utilizes sample profile data including a control flow representation of a program having block counts associated with each basic block of the program, and edge counts associated with each control flow edge estimated from the block counts. The sample profile data utilizes correlation data to map the address of a sampled instruction from a fully optimized binary directly into a corresponding basic block of source code control flow of the program using a relative virtual address (RVA) that is associated with each source code basic block and the sampled instruction. The correlation data is able to differentiate multiple blocks on the same source code line and handle inlining and optimizations with greater precision and efficiency. The block counts are then used to guide the optimization of the program. L'invention concerne un compilateur d'optimisation guidé par profil qui utilise des données de profil d'échantillon contenant une représentation de flux de commande d'un programme ayant des dénombrements de bloc associés à chaque bloc de base du programme, et des dénombrements de contour associés à chaque contour de flux de commande estimé à partir des dénombrements de blocs. Les données de profil d'échantillon utilisent des données de corrélation pour mettre en correspondance l'adresse d'une instruction échantillonnée à partir d'un binaire totalement optimisé directement avec un bloc de base correspondant du flux de commande de code source du programme en utilisant une adresse virtuelle relative (RVA) qui est associée à chaque bloc de base de code source et à l'instruction échantillonnée. Les données de corrélation sont capables de différencier de multiples blocs sur la même ligne de code source et de gérer l'inclusion par référence et les optimisations avec une plus grande précision et une plus grande efficacité. Les dénombrements de blocs sont ensuite utilisés pour guider l'optimisation du programme.