An invention for reassigning data elements of an application to cache lines
to decrease the occurrence of cache line faults is described. First, an
application is executed and used in a typically manner. While the
application is running, data is collected concerning the loading and
storing of data elements. This collection process creates a massive volume
of data that is then processed to determine correlations between the
loading and storing pairs of elements within each of the application's
data structures. These correlations provide a mechanism for weighing the
probability of pairs of intra-structure data elements being accessed in
sequence, which is best accomplished when the data elements are within a
single cache line. A set of simultaneous equations describe the
probabilities using the data recording the correlations. These equations
are then solved using commonly known linear programming techniques to
derive a suggested ordering of data structures. An interactive editor is
then used to reorder these data elements in the derived preferred order as
authorized by the programmer.
Μια εφεύρεση για την επανεκχώρηση των στοιχείων στοιχείων μιας εφαρμογής για να εναποθηκευθούν οι γραμμές για να μειώσει το περιστατικό των ελαττωμάτων γραμμών κρύπτης περιγράφεται. Κατ' αρχάς, μια εφαρμογή εκτελείται και χρησιμοποιείται με έναν χαρακτηριστικά τρόπο. Ενώ η εφαρμογή τρέχει, το στοιχείο συλλέγεται σχετικά με τη φόρτωση και την αποθήκευση των στοιχείων στοιχείων. Αυτή η διαδικασία συλλογής δημιουργεί έναν ογκώδη όγκο του στοιχείου που υποβάλλεται σε επεξεργασία έπειτα για να καθορίσει τους συσχετισμούς μεταξύ των ζευγαριών φόρτωσης και αποθήκευσης των στοιχείων μέσα σε κάθε μια από τις δομές δεδομένων της εφαρμογής. Αυτοί οι συσχετισμοί παρέχουν έναν μηχανισμό για την πιθανότητα των ζευγαριών των στοιχείων στοιχείων δια--δομών που προσεγγίζονται στη σειρά, η οποία ολοκληρώνεται καλύτερα όταν είναι τα στοιχεία στοιχείων μέσα σε μια ενιαία γραμμή κρύπτης. Ένα σύνολο ταυτόχρονων εξισώσεων περιγράφει τις πιθανότητες χρησιμοποιώντας την καταγραφή στοιχείων οι συσχετισμοί. Αυτές οι εξισώσεις λύνονται έπειτα χρησιμοποιώντας τις συνήθως γνωστές γραμμικές τεχνικές προγραμματισμού για να παραχθεί μια προτεινόμενη διαταγή των δομών δεδομένων. Ένας διαλογικός συντάκτης χρησιμοποιείται έπειτα για να ξαναπαραγγείλει αυτά τα στοιχεία στοιχείων στην παραγόμενη προτιμημένη διαταγή όπως εγκρίνεται από τον προγραμματιστή.