Υλοποίηση ειδικού σκοπού επεξεργαστή βασισμένου στην αρχιτεκτονική ανοιχτού τύπου RISC-V

Στόχος αυτής της εργασίας είναι η μελέτη της ανοιχτής αρχιτεκτονικής συνόλου εντολών RISC-V και η διαδικασία προσθήκης επέκτασης στο ISA για την πιο αποδοτική εκτέλεση των κινήσεων του κύβου του Ρούμπικ. Η RISC-V προσφέρει πρόσβαση σε όλους στην αρχιτεκτονική συνόλου εντολών της που αποτελείται από...

Πλήρης περιγραφή

Λεπτομέρειες βιβλιογραφικής εγγραφής
Κύριος συγγραφέας: Καλύβα, Στυλιανή
Άλλοι συγγραφείς: Kalyva, Styliani
Γλώσσα:Greek
Έκδοση: 2022
Θέματα:
Διαθέσιμο Online:http://hdl.handle.net/10889/16083
id nemertes-10889-16083
record_format dspace
institution UPatras
collection Nemertes
language Greek
topic Αρχιτεκτονική συνόλου εντολών
Πυρήνας open source
RISC-V
Hardware
Instruction set extension
Custom instructions
spellingShingle Αρχιτεκτονική συνόλου εντολών
Πυρήνας open source
RISC-V
Hardware
Instruction set extension
Custom instructions
Καλύβα, Στυλιανή
Υλοποίηση ειδικού σκοπού επεξεργαστή βασισμένου στην αρχιτεκτονική ανοιχτού τύπου RISC-V
description Στόχος αυτής της εργασίας είναι η μελέτη της ανοιχτής αρχιτεκτονικής συνόλου εντολών 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%
author2 Kalyva, Styliani
author_facet Kalyva, Styliani
Καλύβα, Στυλιανή
author Καλύβα, Στυλιανή
author_sort Καλύβα, Στυλιανή
title Υλοποίηση ειδικού σκοπού επεξεργαστή βασισμένου στην αρχιτεκτονική ανοιχτού τύπου RISC-V
title_short Υλοποίηση ειδικού σκοπού επεξεργαστή βασισμένου στην αρχιτεκτονική ανοιχτού τύπου RISC-V
title_full Υλοποίηση ειδικού σκοπού επεξεργαστή βασισμένου στην αρχιτεκτονική ανοιχτού τύπου RISC-V
title_fullStr Υλοποίηση ειδικού σκοπού επεξεργαστή βασισμένου στην αρχιτεκτονική ανοιχτού τύπου RISC-V
title_full_unstemmed Υλοποίηση ειδικού σκοπού επεξεργαστή βασισμένου στην αρχιτεκτονική ανοιχτού τύπου RISC-V
title_sort υλοποίηση ειδικού σκοπού επεξεργαστή βασισμένου στην αρχιτεκτονική ανοιχτού τύπου risc-v
publishDate 2022
url http://hdl.handle.net/10889/16083
work_keys_str_mv AT kalybastylianē ylopoiēsēeidikouskopouepexergastēbasismenoustēnarchitektonikēanoichtoutypouriscv
AT kalybastylianē implementationofaspecialpurposeprocessorbasedontheriscvopensourcearchitecture
_version_ 1771297308194897920
spelling nemertes-10889-160832022-09-05T20:18:25Z Υλοποίηση ειδικού σκοπού επεξεργαστή βασισμένου στην αρχιτεκτονική ανοιχτού τύπου RISC-V Implementation of a special purpose processor based on the RISC-V open source architecture Καλύβα, Στυλιανή Kalyva, Styliani Αρχιτεκτονική συνόλου εντολών Πυρήνας open source RISC-V Hardware Instruction set extension Custom instructions Στόχος αυτής της εργασίας είναι η μελέτη της ανοιχτής αρχιτεκτονικής συνόλου εντολών 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% This dissertation addresses the issue of adding custom instructions to a RISC-V open source dedicated processor. RISC architecture is popular in many devices such as smartphones and tablets because it offers high performance through the technique of parallelism and pipelining. RISC-V develops various open source processors offering the ability to adapt to the needs of each user. It has three command set architectures as bases: 32 bit, 64 bit and 128 bit which can be supplemented by many extensions depending on the functions one wants to perform. Also, the advantage the RISC-V ISA offers is that it gives the freedom to add fully customized instructions as an extension to the existing ISA in order to optimize the system according to the desired requirements set by the user. This feature is the object of this work through the example of personalized instructions that represent the movements of Rubik's cube. The 6 sides of the cube that have 9 places each are represented by the use of 6 registers of 32 bit length. Each color needs 3 bits to be characterized and thus the 27 LSBs are covered. The aim is to make the 6 movements F, B, U, D, R, L and their inversions, i.e. to alternate the positions of the coded colors at the same time with the call of the respective command. Initially, the logic behind each individual movement is designed in hardware and all the movements together constitute a full hardware block (Custom Unit). This block, in order to execute a sequence of movements correctly, works by giving feedback to the contents of its registers. Designed in three ways: With and without automatic feedback and with the use of State Machine and automatic feedback. Manual feedback is 1 clock slower as it needs the extra command cycle. The other two designs take 2 clock cycles to perform each operation. The Custom Block is then added to the 32 bit ibex open source processor after first locating the instruction path. Ibex consists of a 2-stage pipeline. First Instruction Fetch (IF) and then Instruction Decode and Execute (ID / EX). The Custom unit is added inside the Execution Block, where also ALU is located. It recognizes which command is called by the input signal custom_operator, which is the output of the ibex decoder. The decoder is located inside the 2nd stage of the processor pipeline and accepts the sequence of commands from the 1st stage and the instruction memory of ibex. Ibex is then integrated into the PULPissimo system-on-chip. This RISC-V based ISA is an open architecture microcontroller, a high-performance system with multiple peripherals and memory that accepts ibex as a Central Processing Unit, among other processors. Specifically, ibex was chosen to be integrated in it because through its peripherals, it’s easier to simulate the system and at the same time to examine its performance. The custom instructions are then added to the RISC-V toolchain in order for the compiler to be able to read them. The MASK and MATCH codes are added to the files with the opcodes and the integrated system is simulated. We simulate a sequence of 17 movements of the Rubik's cube solving algorithm called CFOP, which leads from a specific state of the cube to the final one, where it is solved. Finally, the necessary modifications are made so that the system runs on FPGA and specifically on the board Zynq UltraScale + ZCU104 from the company Xilinx. The commands developed in this dissertation specialize in performing the movements of the Rubik's cube. The custom processor offers a 92% reduction in assembly commands needed for each move and also makes the system 13 times faster than it would be if the operations were performed by the simple ibex processor. This is because through additional logic the shifts between the positions of the registers are performed simultaneously. This would be impossible on plain ibex not only because it is not provided by the ISA it supports but also because its Register File has 3 ports: 2 read and 1 write which are not enough to make 6 simultaneous transfers. All this is done at a low cost in power consumption (0.09%) and an increase in LUTs, FF and BUFG resources, due to the logic added. The relative difference before and after in accordance to the resource utilization is small as we are talking about a system-on-chip. PULPissimo consists of many peripherals as well as ibex which is its CPU. As a result it’s justified that the main difference in the utilization resources lies in the number of logic elements (LUT and FFs). 2022-03-16T12:55:33Z 2022-03-16T12:55:33Z 2022-03-14 http://hdl.handle.net/10889/16083 gr winrar application/pdf