The present invention provides a method and system for determining an
optimal placement order for basic blocks within a computer program to
improve locality of reference and reduce the working set of the computer
program. By reducing the working set, the computer program requires less
memory than it normally would require to execute on a computer system. The
optimal placement order for basic blocks within a computer program
reflects the concurrency of usage for basic blocks during execution of the
computer program. The method for determining an optimal placement order
includes analyzing the computer program to identify all of the basic
blocks, determining how many times each basic block is executed, assigning
a placement order to each basic block depending upon how many times each
basic block was executed, and reordering the basic blocks according to
their assigned placement orders to produce an optimized computer program.
The method used to identify all of the basic blocks includes disassembling
known instruction addresses to identify the beginning and end of basic
blocks and processing jump tables to identify more instruction addresses.
Processing jump tables includes processing the first entry of every jump
table before processing the second entry of any jump table. The present
invention further optimizes a computer program by replacing rarely
executed instructions with other instructions that require a smaller
amount of storage space.
La presente invenzione fornisce un metodo e un sistema per la determinazione dell'ordine ottimale di disposizione per i blocchi di base nell'ambito di un programma destinato all'elaboratore per migliorare la località di riferimento e per ridurre l'insieme di funzionamento del programma destinato all'elaboratore. Riducendo l'insieme di funzionamento, il programma destinato all'elaboratore richiede meno memoria che richiederebbe normalmente per eseguire su un sistema di elaborazione. L'ordine ottimale di disposizione per i blocchi di base nell'ambito di un programma destinato all'elaboratore riflette la concorrenza di uso per i blocchi di base durante l'esecuzione del programma destinato all'elaboratore. Il metodo per la determinazione dell'ordine ottimale di disposizione include analizzare il programma destinato all'elaboratore per identificare tutti i blocchi di base, determinando come molte volte ogni blocco di base è eseguito, assegnante un ordine di disposizione ad ogni blocco di base dipendendo da come molte volte ogni blocco di base è stato eseguito e riordinando i blocchi di base che conciliano ai loro ordini assegnati di disposizione ai prodotti un programma destinato all'elaboratore ottimizzato. Il metodo impiegato per identificare tutti i blocchi di base include gli indirizzi di istruzione conosciuti di smontaggio per identificare l'inizio e la conclusione dei blocchi di base e di elaborazione delle tabelle di salto identificare più indirizzi di istruzione. L'elaborazione delle tabelle di salto include l'elaborazione della prima entrata di ogni tabella di salto prima dell'elaborazione della seconda entrata di tutta la tabella di salto. La presente invenzione ulteriore ottimizza un programma destinato all'elaboratore sostituendo le istruzioni raramente eseguite con altre istruzioni che richiedono una più piccola quantità di spazio di immagazzinaggio.