13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό απαιτούνται υψηλότερα επίπεδα αφαιρετικότητας για να μοντελοποιήσουν και να επαληθεύσουν την διασύνδεση των διαφόρων component. Τα SoC θα περιλαμβάνουν πολλούς επεξεργαστές με διαφορετικό instruction set. Το software θα είναι πλέον περισσότερο πολύπλοκο από ότι το hardware και δεν θα είναι σε επίπεδο assembly. Έτσι ο προγραμματισμός ενός SoC θα είναι πιο πολύπλοκος από τον συμβατικό παράλληλο προγραμματισμό και πρέπει να βρεθούν πιο αποτελεσματικά μοντέλα και τρόποι για αυτόν. Πολύπλοκες On-chip hardware/software διεπαφές απαιτούνται για να υλοποιήσουν ένα application specific δίκτυο επικοινωνίας.
Διαφορές single-processor αρχιτεκτονικών και SoCs Σε single-processor αρχιτεκτονικές η μοναδική CPU ενεργεί σαν master για τα υπόλοιπα slave περιφερειακά. Στα SoC υπάρχουν πολλοί masters και απαιτείται συγχρονισμός μεταξύ τους Στο επίπεδο διασύνδεσης αντί για master/slave shared bus αρχιτεκτονική χρεισημοποιούνται πολλά πολύπλοκα συστήματα buses Στα SoC συχνά χρησιμοποιείται ειδικό hardware για να ελέγχει τα πρωτόκολλα επικοινωνίας ενώ σε single-processor αυτά εκτελούνται στην μοναδική CPU Στις single-processor αρχιτεκτονικές η επικοινωνία γίνεται μέσω memory mapped input/output. Στα SoC χρειάζεται ένας ειδικός communication controller που θα επιτρέπει την χρήση πολυπλοκότερων δομών (FIFO, broadcasting )
Τυπική αρχιτεκτονική των SoCs Υπάρχουν 2 είδη επεξεργαστών Αυτοί που τρέχουν την εφαρμογή (application CPU) Αυτοί που είναι αφιερωμένοι στην εκτέλεση ειδικών λειτουργιών (dedicated CPU) Ο προγραμματισμός και οι διεπαφές των δύο ειδών επεξεργαστών διαφέρουν αρκετά
MPSoCs software architecture application CPU To επίπεδο εφαρμογής οργανώνεται σαν μια στοίβα στρωμάτων πάνω από το hardware Το χαμηλότερο επίπεδο περιέχει τους drivers και τους Low-level architecture controllers και παρέχεται από την ομάδα σχεδίασης του SoC Τα επόμενα επίπεδα παρέχονται από την ομάδα σχεδίασης της εφαρμογής Στο στρώμα λειτουργικού συχνά επαναχρησιμοποιούν είδη υπάρχοντα embedded OS προσαρμοσμένα στην εφαρμογή Το τελευταίο επίπεδο είναι application-specific λογισμικό και σχεδιάζεται χρησιμοποιώντας υψηλού επιπέδου γλώσσες προγραμματισμού
MPSoCs software architecture dedicated CPU Στην περίπτωση της οργάνωσης του λογισμικού στις dedicated CPU χρησιμοποιείται ένα παρόμοιο μοντέλο με την διαφορά του λειτουργικού Για λόγους απόδοσης και μεγέθους κώδικα δεν είναι δυνατόν να χρησιμοποιηθεί ένα υπάρχον λειτουργικό οπότε χρησιμοποιείται ένα custom λειτουργικό το οποίο υποστηρίζει application specific διεπαφές Τα πλεονεκτήματα αυτής της οργάνωσης λογισμικού (είτε application είτε dedicated) είναι Και τα δύο λογισμικά μπορούν να γραφτούν ανεξάρτητα από την hardware υλοποίηση Αυξάνεται κατά πολύ το επίπεδο ευελιξίας και φορητότητας
Μέθοδοι σχεδίασης MPSoC Υπάρχουν δύο τρόποι για την σχεδίαση ενός SoC Top-down => Bottom-up
Αφαιρετικές διασυνδέσεις μεταξύ Για να ξεχωρίσουμε τα κομμάτια και τον σχεδιασμό του SoC χρειαζόμαστε HW και SW κομμάτια προσαρμογής για να απομονώσουμε τα διάφορα κομμάτια από το δίκτυο επικοινωνίας. Αφαιρετικές διασυνδέσεις μπορούν να παρέχονται από την CPU Το κλειδί της επιτυχίας είναι η αυτόματη δημιουργία διεπαφών από αφαιρετικά μοντέλα. κομματιών
Προσέγγιση βασισμένη στα components Ο στόχος είναι να επιτραπεί η επικοινωνία μεταξύ ετερογενών κομματιών χρησιμοποιώντας αφαιρετικές διασυνδέσεις. Υπάρχουν δύο προσεγγίσεις: 1. Χρησιμοποιώντας ένα standard bus και ένα standard πρωτόκολλο επικοινωνίας (π.χ. IBM Core Connect) 2. Έχοντας ένα εικονικό κομμάτι διεπαφής οπός προτείνεται από την Virtual Socket Interface Alliance
Η σύνδεση ετερογενών κομματιών μεταξύ τους απαιτεί την δημιουργία μετατροπέων από το ένα πρωτόκολλο επικοινωνίας στο άλλο. Δημιουργία υβριδικών(sw-hw) διεπαφών μεταξύ των διάφορων κομματιών για αποδοτικότερη υλοποίηση των πρωτοκόλλων την απόδοση την ενέργεια και το κόστος. Αυτόματη υλοποίηση των πρωτοκόλλων αυτών για ταχύτερη και πιο αξιόπιστη υλοποίηση. Μέθοδοι και εργαλεία για την δημιουργία ολοκληρωμένων αποτελούμενα υπομονάδες
ROSES Μεθοδολογία για τον σχεδιασμό SoC Αρχικά σχεδιάζουμε μία εικονική αρχιτεκτονική που οργανώνει το σύστημά μας σε κομμάτια και διαμορφώνουμε τις παραμέτρους της αρχιτεκτονικής Το επόμενο βήμα είναι ο σχεδιασμός των διασυνδέσεων των κομματιών με την δημιουργία διεπαφών αυτών. Τελικός σκοπός είναι η παραγωγή RTL μοντέλου του MPSoC το οποίο θα αποτελείται από πυρήνες επεξεργαστών, πυρήνες IP, και HW/SW διεπαφές.
Μοντέλο εικονικής αρχιτεκτονικής Παρουσιάζει το σύστημα σαν δικτυωμά από εικονικά κομμάτια. Κάθε κομμάτι έχει ένα μανδύα και ένα σύνολο από εικονικές πόρτες. Τρεις νέες ένιες εισάγονται: 1. Εικονικό κομμάτι. Ένα κομμάτι και τον μανδύα του 2. Εικονική πόρτα: Ομάδες πορτών και οι αναφερόμενη σε αυτές εικονική πόρτα 3. Εικονικό κανάλι: Μια ομάδα καναλιών που έχουν κάποια λογική σχέση.
Μοντέλο σχεδιασμού MPSoC
Ροή δημιουργίας hardware
Δημιουργία hardware Η βιβλιοθήκη δημιουργίας hardware αποτελείται από δύο μέρη: 1. Την βιβλιοθήκη για κομμάτια του επεξεργαστή η οποία περιέχει :πυρήνες επεξεργαστών, μνήμες, περιφερειακά αλλά και αρχιτεκτονικές επεξεργαστών. Κατά την διάρκεια σχεδιασμού ρυθμίζονται παράμετροι όπως οι διευθύνσεις, ο αριθμός των διακοπών, οι προτεραιότητες που αυτές έχουν κ.α. 2. Την βιβλιοθήκη για κομμάτια επικοινωνίας η οποία περιέχει προσαρμογείς καναλιών και μοντέλα δικτύων επικοινωνίας. Κατά την διάρκεια σχεδιασμού ρυθμίζονται παράμετροι όπως το μέγεθος των buffer o τύπος των δεδομένων που στέλνονται, παράμετροι για τις διακοπές κ.α.
Δημιουργία μανδύα επεξεργαστή Η δημιουργία του μανδύα γίνεται με την generic channel adapter structure (CA). H CA ολοκληρώνει το πρωτόκολλο επικοινωνίας σε μακροσκοπικό επίπεδο και το πρωτόκολλο διασύνδεσης στο δίκτυο σε μικροσκοπικό επίπεδο. Τα CA χωρίζονται έχουν δύο διεπαφές: 1. Την διεπαφή με το εξωτερικό δίαυλο επικοινωνίας (internal communication bus ICB) 2. Την διεπαφή με το υπόλοιπο δίκτυο.
Είδη κομματιών που χρησιμοποιούνται για την δημιουργία του CA Το RWI (read write interface) που χρησιμοποιείται για τον συγχρονισμό, την ενεργοποίηση, και την επεξεργασία των task To processing block που χρησιμοποιείται για προετοιμασία των εισερχόμενων δεδομένων για αποθήκευση και την μετατροπή των αποθηκεμένων δεδομένων στην κατάλληλη μορφή εξόδου. Το storage block που είναι υπεύθυνο για την αποθήκευση και ανάκληση δεδομένων.
Δημιουργία μανδύα μνήμης Η κεντρική μνήμη μέσω του μανδύα διασυνδέεται με τους διάφορους επεξεργαστές χρησιμοποιώντας ένα δίκτυο επικοινωνίας. Memory port adapter (MPA) περιέχει έναν ελεγκτή και συναρτήσεις διαχείρισης του συστήματος μνήμης Channel adapter (CA) όπως αναφέρθηκε υλοποιεί το πρωτόκολλο επικοινωνίας. Internal communication bus (ICB) διασυνδέει τα δύο κύρια κομμάτια του συστήματος μνήμης.
Διάγραμμα ροής αυτόματης δημιουργίας custom λειτουργικού συστήματος
Βιβλιοθήκη λειτουργικού συστήματος Περιέχει ένα μικρό και ευέλικτο πυρήνα λειτουργικού και τις υπηρεσίες που αυτό μπορεί να προσφέρει. Η κύρια λειτουργία του πυρήνα είναι ο προγραμματισμός και η εναλλαγή των task. Παρέχονται επίσης υπηρεσίες οι οποίες είναι συγκεκριμένες για ενσωματωμένα συστήματα. Όπως εισόδου-εξόδου, επικοινωνίας, μνήμης κ.α. Τέλος αξίζει να αναφερθεί ότι ανάμεσα στις υπηρεσίες αυτές υπάρχουν ενδεχομένως εξαρτήσεις τις οποίες πρέπει να διαχειριστεί το λειτουργικό..
Αναλυτής Αρχιτεκτονικής- Σχεδιασμός κώδικα λειτουργικού Από την περιγραφή του συστήματος παρέχονται στον αναλυτή οι ακόλουθες πληροφορίες: υπηρεσίες απαραίτητες για την εκτέλεση των εφαρμογών και παράμετροι των κομματιών που υπάρχουν στο σύστημα (π.χ. αν ένα κανάλι περιέχει μία FIFO λειτουργία η υπηρεσία FIFO ενσωματώνεται στο λειτουργικό). Αφού επιλεχθούν οι απαραίτητες υπηρεσίες ο επιλογέας κώδικα ελέγχει τυχόν επιπλέον υπηρεσίες που πρέπει να προστεθούν για να προσδοθούν στο σύστημα τα απαραίτητα χαρακτηριστικά και ενσωματώνει και αυτές στον κώδικα του λειτουργικού. Τέλος ο κώδικας δημιουργείται αυτόματα σε C και γλώσσα μηχανής.
Δημιουργία μοντέλου προσομοίωσης
Συμπεράσματα Η αυτόματη δημιουργία μανδύα για την σύνθεση διάφορων κομματιών ελαχιστοποιεί την πιθανότητα λάθους στον σχεδιασμό όπου κάθε λεπτομέρεια θα έπρεπε να διαχειριστεί. Η εικονική αρχιτεκτονική είναι ένα αρκετά ισχυρό εργαλείο στην περίπτωση υλοποίησης σύνθετων συστημάτων. Η ευελιξία είναι απαραίτητη σε τέτοια περιβάλλοντα σχεδιασμού. Προκαθορισμένες μεθοδολογίες επικοινωνίας και πρωτόκολλα δύσκολα θα υιοθετηθούν από τους σχεδιαστές.