Περίληψη: | Στόχος αυτής της εργασίας είναι η μελέτη της ανοιχτής αρχιτεκτονικής συνόλου εντολών RISC-V και η διαδικασία προσθήκης επέκτασης στο ISA για την πιο αποδοτική εκτέλεση των κινήσεων του κύβου του Ρούμπικ. Η RISC-V προσφέρει πρόσβαση σε όλους στην αρχιτεκτονική συνόλου εντολών της που αποτελείται από πρότυπες βάσεις και επεκτάσεις που συνδυάζονται μεταξύ τους για τη δημιουργία εξειδικευμένων ISA. Το RISC-V ISA είναι συμβατό με τους open source πυρήνες που έχει αναπτύξει η RISC-V με αποτέλεσμα να μπορεί κανείς να τους μελετήσει εκτενώς, τα στοιχεία από τα οποία αποτελούνται αλλά και να τους προσαρμόσει στις δικές του προδιαγραφές χωρίς περιορισμούς πατέντας δημιουργώντας εξατομικευμένες επεκτάσεις από το μηδέν.
Ο open source πυρήνας που επιλέχθηκε για την προσθήκης της προσαρμοσμένης επέκτασης είναι ο ibex. Είναι ένας RISC-V επεξεργαστής 32 bit ανοιχτού τύπου που υλοποιεί το RISC-V ISA και προσφέρει την ελευθερία για προσθήκη επέκτασης. Ο ibex αποτελείται από pipeline 2 σταδίων (Instruction Fetch Stage, Instruction Decode-Execute Stage) που σημαίνει ότι οι εντολές εκτελούνται σε τουλάχιστον 2 κύκλους ρολογιού, με το καλύτερο δυνατό throughput να είναι 1 εντολή ανά κύκλο. Ακόμη, επιλέχθηκε το πρόβλημα του κύβου του Ρούμπικ καθώς είναι ένα παιχνίδι με επιστημονικό ενδιαφέρον και πολλές μεθόδους επίλυσης. Επίσης δίνει τη δυνατότητα για εξαιρετική επιτάχυνση καθώς οι κινήσεις του αποτελούνται από αρκετές ταυτόχρονες μεταθέσεις. Οι έδρες του κύβου αναπαρίστανται στο υλικό μέσω 6 καταχωρητών μήκους 32 bit και οι 9 θέσεις της κάθε έδρας του δεσμεύουν 3 bit η κάθε μία.
Σχεδιάστηκαν οι 12 περιστροφές που εκτελεί ο κύβος (Right, Right inverse, Left, Left inverse, Up, Up inverse, Down, Down inverse, Back, Back inverse, Front, Front inverse) σε ένα ξεχωριστό block (custom unit) που προστέθηκε στο Execution Block του ibex. Έγιναν 3 υλοποιήσεις για το custom unit: με αυτόματη ανατροφοδότηση, με μη αυτόματη και με μηχανή καταστάσεων.
Μετά την ολοκλήρωση της ενσωμάτωσης του custom unit στον ibex, μελετήθηκε το σύστημα ανοιχτής αρχιτεκτονικής RISC-V system-on-chip PULPissimo. Το σύστημα αυτό δέχεται ως CPU τον ibex και μέσω των περιφερειακών στοιχείων είναι πιο εύκολο τεσταριστούν οι νέες εντολές και συγχρόνως να εξετασθεί η επίδοσή του. Στο σημείο αυτό προστέθηκαν οι νέες εντολές στο toolchain ώστε να μπορεί να τις διαβάσει ο compiler και προσομοιώθηκε το σύστημα κάτι που επιβεβαίωσε την ορθή λειτουργία του. Τέλος, ακολούθησε η FPGA υλοποίηση στο board της Xilinx Ultrascale+ ZCU104 το οποίο επικοινώνησε με τον υπολογιστή μέσω JTAG.
Η επέκταση που προστέθηκε, που είναι ουσιαστικά το custom unit προσέφερε στο σύστημα μία βελτίωση στον αριθμό εντολών που χρειάζονται για να εκτελεσθούν οι κινήσεις του κύβου 92%. Επίσης, το σύστημα με το προσαρμοσμένο block είναι 13 φορές πιο γρήγορο στην εκτέλεση αυτών των πράξεων, σε σχέση με το πώς θα ήταν χωρίς την προσθήκη. Οι παραπάνω βελτιώσεις σύμφωνα με τις μετρήσεις αποτυπώνονται με την αύξηση στη χρήση λογικών στοιχείων στο σύστημα, την αύξηση των flip flop αλλά και την αύξηση στο BUFG που αφορά στη διανομή των ρολογιών, πράγμα που είναι αναμενόμενο λόγω της σύγχρονης φύσης του custom unit και λόγω της λογικής από την οποία αποτελείται. Τέλος, υπάρχει και ένα μικρό κόστος στην ισχύ που καταναλώνει το τελικό σύστημα λόγω της ενσωμάτωσης του εξειδικευμένου block, της τάξεως 0.9%
|