Code restructuring or reordering based on profiling information and memory
hierarchy is provided by constructing a Program Execution Graph (PEG)
corresponding to a level of the memory hierarchy, partitioning this PEG to
reduce estimated memory overhead costs below an upper bound, and
constructing a PEG for a next level of the memory hierarchy from the
partitioned PEG. The PEG is constructed from control flow and frequency
information from a profile of the program to be restructured. The PEG is a
weighted undirected graph comprising nodes representing basic blocks and
edges representing transfer of control between pairs of basic blocks. The
weight of a node is the size of the basic block it represents and the
weight of an edge is the frequency of transition between the pair of basic
blocs it connects.
Der Code, der basiert auf profilierende Informationen und Gedächtnishierarchie umstrukturiert oder neuordnet, wird vom Konstruieren eines Ablauf- des Programmsdiagramms (STÖPSEL) entsprechend einem Niveau der Gedächtnishierarchie zur Verfügung gestellt, diesen STÖPSEL verteilend, um sich zu verringern schätzte Gedächtnisgemeinkosten unter einem oberen Limit und dem Konstruieren eines STÖPSELS für ein folgendes Niveau der Gedächtnishierarchie vom verteilten STÖPSEL. Der STÖPSEL wird aus Steuerfluß und Frequenzinformationen von einem Profil des umstrukturiert zu werden hergestellt Programms. Der STÖPSEL ist ein belasteter ungerichteter Graph, der die Nullpunkte enthält, die grundlegende Blöcke und die Ränder darstellen Ablaufsprung zwischen Paaren der grundlegenden Blöcke darstellen. Das Gewicht eines Nullpunktes ist die Größe des grundlegenden Blockes, den sie darstellt und das Gewicht eines Randes ist die Frequenz des Überganges zwischen dem Paar der grundlegenden Blöcke es anschließt.