Δέκα μαθήματα για ενσωματωμένη εικονικοποίηση

Marco Annunziata: Welcome to the age of the industrial internet (Ιούνιος 2019).

$config[ads_text] not found
Anonim

Ορισμένα πράγματα που πρέπει να προσέξετε κατά την ανάπτυξη προϊόντων για την ενσωματωμένη αγορά, χρησιμοποιώντας πολυπύρηνη επεξεργασία και εικονικοποίηση

ΜΕ ΚΑΤΑΧΩΡΗΣΗ ΣΗΜΑΤΩΝ
Wind River Systems
Alameda, CA
//www.windriver.com

Υπάρχουν πολλές έννοιες που πρέπει να έχετε κατά νου όταν σχεδιάζετε προϊόντα για την ενσωματωμένη αγορά χρησιμοποιώντας πολυπύρηνη επεξεργασία και εικονικοποίηση. Εδώ είναι αυτό που πιστεύουμε ότι είναι τα 10 πιο σημαντικά.

1. Σκεφτείτε τις επιλογές διαμέρισης

Υπάρχουν πολλές επιλογές για διαμέριση ενός συστήματος πολλαπλών εντολών. Το σύστημα συμμετρίας πολλαπλών επεξεργασιών (SMP) είναι ένα λειτουργικό σύστημα που ελέγχει πολλαπλούς πυρήνες, αλλά αυτό έχει κάποια επιβάρυνση προγραμματισμού και πολυπλοκότητα. Η ασύμμετρη πολυεπεξεργασία (AMP) μπορεί να ταιριάζει καλύτερα στις ενσωματωμένες εφαρμογές επειδή χρησιμοποιεί ένα ξεχωριστό λειτουργικό σύστημα σε κάθε πυρήνα, το οποίο επιτρέπει στον προγραμματιστή του συστήματος να συνδυάζει λειτουργικά συστήματα πραγματικού χρόνου και ανοικτού κώδικα με το ίδιο σχέδιο. Επιτρέπει επίσης τη λειτουργία διαφόρων λειτουργικών συστημάτων σε διαφορετικούς τύπους πυρήνων, όπως αυτοί που βελτιστοποιούνται για γραφικά ή δικτύωση.

Η εικονικοποίηση παρέχει την ευκαιρία να αφαιρεθεί το επίπεδο του λειτουργικού συστήματος από τον επεξεργαστή. Η εικονικοποίηση επιτυγχάνεται συνήθως με την εισαγωγή ενός επιπέδου (η οθόνη εικονικής μηχανής ή ενός hypervisor) απευθείας πάνω από τον επεξεργαστή, ο οποίος στη συνέχεια δημιουργεί εικονικές μηχανές στις οποίες μπορούν να εκτελεστούν λειτουργικά συστήματα (βλ. Σχήμα 1).

Εικ. 1. Διαφορετικές διαμορφώσεις πολλαπλών εντολών.

Ο υπομενούς μπορεί να χρησιμοποιηθεί για να μοιραστεί το χρόνο έναν ενιαίο πυρήνα μεταξύ πολλαπλών λειτουργικών συστημάτων (που εκτελούνται σε εικονικές μηχανές). Μπορεί επίσης να χωρίσει ένα τσιπ τεσσάρων πυρήνων σε δύο χωρίσματα δύο καναλιών SMP. Τέλος, μπορεί να χρησιμοποιηθεί για την επίβλεψη ενός ασύμμετρου συστήματος πολλαπλών επεξεργασιών (ή sAMP, για εποπτευόμενο AMP). ο επιβλέπων παρέχει επιλογές εκκίνησης, κύκλου ζωής (παύση, επανεκκίνηση) και αξιοπιστίας και μειώνει τον χρόνο ανάπτυξης σε σύγκριση με ένα παραδοσιακό σύστημα AMP. Η εικονικοποίηση παρέχει τη δυνατότητα διαμοιρασμού και ταυτόχρονα παρέχει ασφάλεια και αξιοπιστία.

2. Σκεφτείτε τις επιλογές του λειτουργικού σας συστήματος

Το Multicore και το virtualization παρέχουν τη δυνατότητα συνδυασμού διαφορετικών λειτουργικών συστημάτων σε κατατμήσεις σε ένα μόνο προϊόν. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε ένα RTOS για εργασίες κρίσιμης σημασίας και να χρησιμοποιήσετε ένα λειτουργικό σύστημα γενικού σκοπού όπως το Linux για περιπτώσεις όπου ο χρόνος είναι λιγότερο σημαντικός. Ή χρησιμοποιήστε ένα RTOS μαζί με ένα γραφικό περιβάλλον εργασίας (GUI), ώστε να μπορείτε να ενημερώνετε συχνά τις λειτουργίες GUI χωρίς να επηρεάζετε τη λειτουργία (και την πιστοποίηση) του RTOS.

Η επιλογή ενός λειτουργικού συστήματος επιτρέπει επίσης σε ένα παλαιό λειτουργικό σύστημα και εφαρμογές σε ένα διαμέρισμα σε συνδυασμό με ένα νέο λειτουργικό σύστημα σε ένα άλλο, για να προσθέσει για παράδειγμα περισσότερες νέες λειτουργίες σε υπάρχον προϊόν.

3. Εξετάστε την ενοποίηση

Η τεχνολογία Multicore παρέχει την ευκαιρία να ενοποιήσει τα υφιστάμενα σχέδια πολλαπλών επεξεργαστών σε ένα ενιαίο επεξεργαστή. Ειδικά σε βιομηχανίες όπως η ιατρική και η βιομηχανική, η πρακτική ήταν να διαχωριστούν διαφορετικά επίπεδα ασφάλειας ή πιστοποίησης σε διαφορετικούς επεξεργαστές. Το Multicore και η εικονικοποίηση παρέχουν τη δυνατότητα συνδυασμού αυτών των συστημάτων πολλαπλών επεξεργαστών σε διαφορετικούς πυρήνες ενός μοναδικού τσιπ, όπου το στρώμα εικονικοποίησης διατηρεί το διαχωρισμό και εξασφαλίζει ότι το σύστημα είναι πιστοποιητικό (βλ. Σχήμα 2).

Εικ. 2. Μετεγκατάσταση από πολυεπεξεργαστή σε πολυπύρηνο.

4. Σκεφτείτε το μέλλον

Ίσως είναι καλή στιγμή να κοιτάξετε την αρχιτεκτονική του συστήματός σας και να προετοιμαστείτε για το μέλλον. Εάν χρησιμοποιείτε μια συσκευή ενός πυρήνα, θεωρήστε ότι οι επεξεργαστές θα πάρουν μόνο περισσότερους πυρήνες τα επόμενα χρόνια. Προετοιμάζοντας τώρα την αρχιτεκτονική σας για να είστε ευέλικτοι και έτοιμοι για multi-core μπορεί να σας δώσει ένα πόδι επάνω στον ανταγωνισμό σας.

5. Εξετάστε τον παραλληλισμό

Οι πολλαπλοί πυρήνες παρέχουν πραγματικό παραλληλισμό. διαφορετικές λειτουργίες θα εκτελούνται ακριβώς την ίδια στιγμή, τροποποιώντας τις μεταβλητές και τα buffer στη μνήμη σας. Μια υπάρχουσα εφαρμογή που λειτουργεί τέλεια σε έναν ενιαίο πυρήνα μπορεί να παρουσιάσει συνθήκες κούρσας όταν εκτελείται σε ένα multicore.

Ανάλογα με την αίτησή σας, υπάρχουν πολλές προσεγγίσεις για να επωφεληθείτε από τους πολλαπλούς πυρήνες. Είναι δυνατή η εκτέλεση πολλαπλών παρουσιών της εφαρμογής σας είτε σε διαμορφώσεις SMP, AMP είτε sAMP. Το ερώτημα εδώ είναι αν η αίτησή σας μπορεί να επωφεληθεί από πολλαπλές περιπτώσεις.

Μπορεί να υπάρξουν σημαντικά πλεονεκτήματα απόδοσης κατά την επανεγγραφή του κώδικα για να επωφεληθούν οι πολλαπλοί πυρήνες. Αυτό είναι ιδιαίτερα πολύτιμο με εφαρμογές που έχουν πολλαπλές ξεχωριστές ροές δραστηριότητας, όπου κάθε ροή μπορεί να κατανεμηθεί σε ξεχωριστό επεξεργαστή, όλα λειτουργούν ανεξάρτητα. Σε ένα περιβάλλον ενός επεξεργαστή, ο κώδικας δεν μπορούσε να παραλληλιστεί. Η επανεγγραφή του κώδικα μπορεί να προκαλέσει σημαντική αύξηση της ταχύτητας ή μείωση της κατανάλωσης ενέργειας για την ίδια απόδοση.

6. Έχετε υπόψη τους πόρους

Υπάρχουν ακόμη σημεία συμφόρησης σε ένα εικονικό σύστημα, και αυτά είναι συνήθως η μνήμη, οι κρυφές μνήμες και οι I / O. Κατά την ανάπτυξη ενός εικονικοποιημένου συστήματος, είναι απαραίτητο να δώσουμε προσοχή στον τρόπο πρόσβασης στη μνήμη του συστήματος από τους διάφορους πυρήνες. Αυτό μπορεί να αντιμετωπιστεί αυτόματα από τον hypervisor, αλλά για περισσότερες εφαρμογές περιοριζόμενες σε πόρους και για σφάλματα, ο σαφής χαρτογράφηση πόρων βοηθά τη διαδικασία ανάπτυξης.

Το I / O μπορεί να είναι ένα εμπόδιο που μπορεί να ξεπεραστεί είτε αυξάνοντας τους πόρους I / O είτε εξασφαλίζοντας ότι τα εισερχόμενα δεδομένα χαρτογραφούνται αποτελεσματικά στους πολλαπλούς πυρήνες. Για ορισμένα συστήματα, αυτό μπορεί να είναι τόσο απλό όσο η κατανομή ενός συγκεκριμένου πυρήνα σε ένα σύνολο I / O, αλλά για άλλους μπορεί να είναι πιο περίπλοκη. Αυτό μπορεί επίσης να επηρεάσει την επιλογή αρχιτεκτονικής λογισμικού πολλαπλών αρχείων με διαφορετικούς τρόπους κατανομής των λειτουργικών συστημάτων στους πυρήνες.

7. Μην ξεχνάτε την ασφάλεια

Ένα από τα βασικά πλεονεκτήματα του virtualization είναι η δυνατότητα να γίνει πιο ασφαλές το σύστημα. Με την εκτέλεση εφαρμογών κλειδιών όπως ελέγχου πρόσβασης ή διαχείρισης πόρων σε μια εικονική μηχανή με σφιχτή ασφάλεια, άλλες εφαρμογές μπορούν να προστεθούν στο σύστημα χωρίς να διακυβεύεται η ασφάλεια. Αυτό είναι όλο και πιο σημαντικό, καθώς τα βιομηχανικά και ενσωματωμένα συστήματα έχουν όλο και περισσότερους δικτυακούς συνδέσμους.

8. Μην ξεχάσετε την εκκίνηση

Η εκκίνηση ενός εικονικοποιημένου συστήματος με πολλαπλούς πυρήνες δεν είναι μόνο θέμα πιέσεως του διακόπτη On. Το λογισμικό πρέπει να γνωρίζει ότι πρόκειται για ένα σύστημα πολλαπλών εντολών και φέρνει έναν πυρήνα σε λειτουργία ενός πυρήνα για να εκτελέσει τις αρχικές δοκιμές στη μνήμη και στις εισόδους / εξόδους. αλλιώς ακολουθεί το χάος, με πολλαπλούς πυρήνες που δοκιμάζουν μνήμες και περιφερειακά σε αυτό που μπορεί να είναι τυχαίο. Αυτό είναι ιδιαίτερα σημαντικό σε μια επαναφορά συστήματος ή σε μια διακοπή ρεύματος επειδή μια πλακέτα μπορεί να τροφοδοτείται διαφορετικά σε μια περίοδο εντοπισμού σφαλμάτων.

Και πάλι, ένας hypervisor παρέχει αυτή τη λειτουργικότητα έξω από το κουτί. Μια ιδέα που σχετίζεται με την εκκίνηση είναι η αναβάθμιση πεδίου. Πολλά συστήματα λαμβάνουν ενημερώσεις στο πεδίο και πρέπει να επανεκκινήσουν με μια ενημέρωση σε όσο το δυνατόν μικρότερο χρονικό διάστημα. Η εικονικοποίηση προσφέρει ωραίες δυνατότητες επειδή είναι εύκολο να εκτελέσετε ένα πρόσθετο λειτουργικό σύστημα για ένα καυτό ανταλλακτικό που μπορεί να πάρει το φορτίο ενώ το αρχικό λειτουργικό σύστημα επανεκκινείται. Αυτό το καυτό ανταλλακτικό μπορεί να μοιράζεται τον ίδιο πυρήνα με το λειτουργικό σύστημα που φέρει το φορτίο ή μπορεί να λειτουργεί σε ξεχωριστό πυρήνα.

9. Μην ξεχνάτε τα εργαλεία

Με τα ενσωματωμένα συστήματα να μεγαλώνουν σε μέγεθος, η πρόκληση συχνά δεν είναι μόνο η αποσφαλμάτωση, αλλά η εύρεση αυτών που πρέπει να εντοπιστούν. Τα εργαλεία ανάλυσης παρέχουν την επισκόπηση του συστήματος (ίχνη συμβάντων, χρήση μνήμης, κάλυψη κώδικα και πολλά άλλα) για τον εντοπισμό περιοχών όπου η εκτέλεση είναι ελαττωματική, έτσι ώστε να μπορεί να χρησιμοποιηθεί ένα εργαλείο εντοπισμού σφαλμάτων για να ερευνήσει τον πραγματικό κώδικα.

Η αποσφαλμάτωση ενός συστήματος πολλαπλών εντολών είναι λίγο περισσότερο εμπλεκόμενο από ένα σύστημα ενός πυρήνα. Σκεφτείτε να σταματήσετε μια εφαρμογή σε έναν πυρήνα. Οι άλλοι πυρήνες του συστήματος συνεχίζουν να σημειώνουν πρόοδο. Επομένως, κάθε buffer που επικοινωνεί μεταξύ των εφαρμογών σε διαφορετικούς πυρήνες θα γεμίσει και θα ξεχειλίσει γρήγορα. Επίσης, η προσπάθεια προσδιορισμού της παγκόσμιας κατάστασης του συστήματος σε όλους τους πυρήνες είναι δύσκολη χωρίς να είναι δυνατή η διακοπή όλων των πυρήνων ταυτόχρονα. Η απομάκρυνση σε τσιπ μέσω των διεπαφών JTAG επιτρέπει τη δυνατότητα διακοπής όλων των πυρήνων σε ένα τσιπ (σχεδόν) ταυτόχρονα και μπορεί ταυτόχρονα να είναι πολύ χρήσιμη κατά την εκκίνηση του συστήματος (βλ. Νο. 8).

10. Εξερευνήστε και μετρήστε

Τα συστήματα Multicore αποτελούν μια εντελώς νέα προσέγγιση για τον ενσωματωμένο σχεδιαστή και μπορούν να προσφέρουν σημαντικά οφέλη απόδοσης και εξοικονόμηση κόστους. Αλλά αυτά εξαρτώνται σε μεγάλο βαθμό από την εφαρμογή. Η συζήτηση με ορισμένους ειδικούς θα βοηθήσει στην εστίαση στις ακριβείς ανάγκες του έργου.

Η εύρεση της καλύτερης διαμόρφωσης πολλαπλών εντολών (SMP, AMP, sAMP ή virtualized) δεν είναι απλή. απαιτεί προσεκτική έρευνα. Ακόμα και τότε δεν είναι δυνατόν να προβλεφθεί με ακρίβεια η απόδοση μιας δεδομένης εφαρμογής σε μια δεδομένη διαμόρφωση με υψηλό βαθμό εμπιστοσύνης.

Η καθιέρωση της ρύθμισης παραμέτρων και των σημείων εκτέλεσης είναι ο μόνος τρόπος για να διασφαλιστεί η σωστή απόδοση. Ωστόσο, οι δείκτες αναφοράς είναι πολύ γενικοί και η αίτησή σας μπορεί να τονώσει το υλικό με διαφορετικό τρόπο από το σημείο αναφοράς.

Το πιο ακριβές σημείο αναφοράς είναι εκείνο που προέρχεται από την εφαρμογή σας, μια δοκιμαστική σουίτα που μετρά την απόδοση της εφαρμογής στη διαμόρφωση και αναφέρει τους αριθμούς που σχετίζονται με εσάς. Η εικονικοποίηση σας βοηθάει να καθορίσετε τη διαμόρφωση.

Παράδειγμα

Υπνωτιστές για ενσωματωμένα συστήματα έχουν εισαχθεί τα τελευταία χρόνια. Μια τέτοια προσφορά είναι ο Wind River Hypervisor, ο οποίος πρόσφατα ενημερώθηκε στην έκδοση 1.1 και λειτουργεί με επεξεργαστές single-core και multicore. Τα νέα χαρακτηριστικά περιλαμβάνουν υποστήριξη για τις τελευταίες μικροαρχιτεκτονικές της Intel, όπως οι επεξεργαστές Nehalem (με υποστήριξη του QorIQ της Freescale μετά το τέλος του έτους), ενσωμάτωση στις τελευταίες εκδόσεις των VxWorks και Wind River Linux, ενώ υποστηρίζει και άλλα λειτουργικά συστήματα για μεγαλύτερη ευελιξία, για διαδραστική επικοινωνία μηχανών και βελτιστοποίηση για χρήση σε συνδυασμό με το Debugging On-Chip 3.2. ■