Πώς μπορώ να εξηγήσω τη διαφορά μεταξύ εξομοιωτή και προσομοιωτή από την άποψη της γλώσσας ηλεκτρολόγου μηχανικού;


Απάντηση 1:

Ένας προσομοιωτής είναι ένα λογισμικό που τρέχει ένα μοντέλο υλικού σε κανονικούς επεξεργαστές (όπως το X86), ένας εξομοιωτής είναι ένα υλικό που τρέχει ένα μοντέλο υλικού. Το υλικό για έναν εξομοιωτή είναι συνήθως κάτι σαν FPGAs ή ASICs που μπορούν να εκτελέσουν FSMs γρήγορα - όπως περιγράφεται στο HDL σε επίπεδο RTL για το πραγματικό σχεδιασμό IC.

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


Απάντηση 2:

Μην το λαμβάνετε ως ευαγγέλιο, αλλά ίσως είναι ένα μέρος για να ξεκινήσετε. Εξ όσων γνωρίζω, ένας εξομοιωτής επαναλαμβάνει, στο λογισμικό και το υλικό, το πραγματικό λογισμικό και το υλικό ενός άλλου προϊόντος. Δηλαδή, αναπαράγει το πραγματικό υλικό ως λογισμικό και στη συνέχεια αναδημιουργεί το λογισμικό λειτουργίας σε αυτό το υλικό. Έτσι θα έχετε ένα επίπεδο λογισμικού (OS, πρόγραμμα, κ.λπ.) που θα έχει ένα άλλο επίπεδο λογισμικού (το υλικό της συσκευής που αντιγράφεται) που θα έχει ένα άλλο επίπεδο λογισμικού (το λογισμικό που τρέχει στο εξομοιούμενο υλικό). Αν τρέξω ένα πρόγραμμα ηλεκτρικής προσομοίωσης στο οποίο αναδημιουργούσα ένα υλικό του Super Nintendo και με τη σειρά του φόρτωσε το ROM για το Super Mario Brothers, αυτό είναι ένας εξομοιωτής.

Ένας προσομοιωτής, από την άλλη πλευρά, αναδημιουργεί το αποτέλεσμα των παραπάνω, αλλά δεν επιδιώκει να το κάνει με την αναπαραγωγή του πραγματικού υλικού. Απλώς προορίζεται να κάνει το ίδιο πράγμα, δηλαδή, να έχει το Super Mario τρέξει στον υπολογιστή μου.

Ελπίζω αυτό να βοηθήσει.