Αναβάθμιση ερευνητικού μεταφραστή C σε ADA
Abstract
Η επίτευξη παραλληλισμού σε επίπεδο εντολών (ΠσΕΕ, ILP) σε υλικό που έχει την δυνατότητα να τον εκμεταλλευτεί μπορεί, θεωρητικά, να βελτιώσει την απόδοση σε μεγάλο βαθμό. Μερικές βελτιστοποιήσεις, συμπεριλαμβανομένης της “ξεδιπλώματος βρόγχων” (loop unrolling) έχουν την δυνατότητα βελτίωσης του ΠσΕΕ και με τον συνδυασμό της με την βελτιστοποίηση των “συμπιεσμένων εκφράσεων” (expression compression) μπορεί να γίνει πιο αποτελεσματική χρήση πόρων ενός ολοκληρωμένου κυκλώματος. Για την εργασία αυτή τροποποιήθηκε ένας υπάρχων μεταγλωττιστής της γλώσσας C στη γλώσσα Ada (που ονομάζεται csense, μέρος των εργαλείων CCC (”Custom Coprocessor Complier suite”)) ώστε να υποστηρίζει πλήρες ξεδίπλωμα βρόγχων με διαφύλλωση και αναδιάταξη εντολών (που μπορεί να βελτιώσει την διαθεσιμότητα δεδομένων στην κρυφή μνήμη). Επίσης ολοκληρώθηκε η υλοποίηση συμπιεσμένων εκφράσεων με την δυνατότητα συνδυασμού και επιλογής επιπέδων ακέραιων και Boolean εκφράσεων. Achieving Instruction level parallelism (ILP) on hardware capable of exploiting it can greatly improve performance, in theory. Some optimizations, including loop unrolling, can improve ILP, and combined with the expression compression optimization can improve efficiency in resource usage in an integrated circuit. For this paper an existing C to Ada compiler (csense, part of the CCC (”Custom Coprocessor Complier”) suite) was modified to implement full loop unrolling in its output with a capability to interleave and reorder instructions (which can potentially improve data locality). Additionally, the expression compression implementation with combined and controllable levels of integer and Boolean expressions was completed.