Qual è la differenza tra simulazione ed emulazione


97

Vedo spesso simulazione ed emulazione in informatica. Questi due termini sembrano sinonimi. C'è qualche differenza tra simulazione ed emulazione ?

Risposte:


108

Sì, i concetti sono diversi.


Simulazione

A simulationè un sistema che si comporta in modo simile a qualcos'altro, ma è implementato in un modo completamente diverso. Fornisce il comportamento di base di un sistema, ma potrebbe non aderire necessariamente a tutte le regole del sistema simulato. È lì per darti un'idea di come funziona qualcosa.

Esempio

Pensa a un simulatore di volo come esempio. Sembra che tu stia pilotando un aereo, ma sei completamente disconnesso dalla realtà del volo dell'aereo e puoi piegare o infrangere quelle regole come ritieni opportuno. Ad esempio, fai volare un Airbus A380 sottosopra tra Londra e Sydney senza romperlo.


Emulazione

Un emulationè un sistema che si comporta esattamente come qualcos'altro e aderisce a tutte le regole del sistema che viene emulato. Si tratta effettivamente di una replica completa di un altro sistema, fino a essere binariamente compatibile con gli input e gli output del sistema emulato, ma operando in un ambiente diverso dall'ambiente del sistema emulato originale. Le regole sono fisse e non possono essere modificate o il sistema ha esito negativo.

Esempio

Il sistema MAME è costruito attorno a questa premessa. Tutti quei vecchi sistemi arcade che sono stati a lungo dimenticati, che sono stati implementati quasi interamente nell'hardware o nel firmware dei loro sistemi hardware possono essere emulati fino ai bug e agli arresti originali che si verificherebbero quando si raggiungesse il punteggio più alto possibile.


18
"comportarsi esattamente come ..." potrebbe non essere necessario. L'importante è che "riproduca lo stesso esatto comportamento esterno" rispetto a ciò che lo utilizza.
Emilio Garavaglia,

Si noti che dipende da ciò che viene simulato / emulato. Ad esempio, qualcosa che emula un computer compatibile con PC può essere molto meno preciso e molto meno realistico di qualcosa che simula i circuiti digitali di un computer compatibile con PC. In questo caso, il simulatore può comportarsi "esattamente come" un vero PC mentre l'emulatore no (perché il simulatore sta simulando qualcosa a un livello molto più basso).
Brendan,

16

Una simulazione è un modello costruito con qualcos'altro che riproduce alcune delle caratteristiche di quella cosa e ne esclude altre - ovviamente vuoi preservare le caratteristiche rilevanti per la tua query ed escludere quelle irrilevanti.

Ad esempio, una simulazione del traffico pendolare mattutino lascia fuori i nomi dei pendolari e forse anche le loro identità (usando una variabile contatore anziché un insieme reale di Commuteroggetti), ma non può ignorare la loro velocità di arrivo.


L'emulazione è l'esecuzione di un software X creato per la piattaforma A sulla piattaforma B, senza modificare il software stesso. Ciò richiede la costruzione di un modello di A che gira su B, e ovviamente deve modellare tutto su A che implica l'esecuzione di codice. (In teoria potresti omettere il supporto per i codici operativi che sai che questo particolare software non userà mai, ma questo è raro: fare un emulatore è un duro lavoro, ed è molto più utile fare un lavoro approfondito e avere qualcosa di riutilizzabile di un kludge che funziona solo per S.)


7

Entrambi significano qualcosa che fa il lavoro di qualcos'altro.

La differenza è che la "simulazione" avviene a livello consapevole (rispetto all'utente) ed è finalizzata tipicamente per anticipare il risultato di una realtà senza toccare la realtà stessa.

L '"emulazione" avviene a livello inconscio e ha lo scopo di sostituire un componente sottostante con un altro diverso che, rispetto all'utente, funziona come il vecchio.

In altre parole, la simulazione avviene in un "mondo parallelo", mentre l' emulazione avviene in un "mondo sostituito".


3
Come risponde alla domanda del PO in termini di informatica? Non c'è nulla di conscio o inconscio in loro. Una simulazione è reale, così come un'emulazione. I loro rispettivi scopi sono concettualmente molto diversi.
S.Robins,

@ S.Robins: conscio / inconscio! = Reale / irreale. conscio = qualcosa che hai deciso esplicitamente, inconscio qualcosa che non hai deciso esplicitamente. Un'app in esecuzione su un sistema "emulato" non è a conoscenza di tale emulazione. Un'app in esecuzione su un sistema "simulato" deve saperlo, poiché non avrà necessariamente lo stesso comportamento.
Emilio Garavaglia,

1
Non ha nulla a che fare con le app in esecuzione dove e niente a che fare con decisioni consapevoli o inconsce. La differenza è fondamentalmente se un sistema viene modellato in generale o interamente replicato.
S.Robins,

@ S.Robins: sono d'accordo con il concetto che intendi, ma c'è qualcosa di sottile che non cattura: un "emulatore" è in genere concepito per eseguire qualcosa in cima, sostituendo qualcosa nell'ambito di applicazione. Un "simulatore" è in genere concepito per essere eseguito per se stesso anziché per l'applicazione reale. Non sono allo stesso livello di astrazione.
Emilio Garavaglia,

6

Tecnicamente, entrambi fanno lo stesso: fanno qualcosa in un ambiente che si comporta come se fosse la cosa reale.

Concettualmente, tuttavia, c'è una differenza importante.

Una simulazione dovrebbe essere staccata dal mondo reale in una certa misura; l'output di una simulazione non è direttamente collegato all'oggetto che simula. Ad esempio, un simulatore di aeromobili non vola effettivamente e il pilota non comunica effettivamente con un vero controllore del traffico aereo.

Una simulazione di solito ha l' obiettivo di testare o prevedere alcuni processi della vita reale in un ambiente sicuro; poiché la simulazione è disconnessa dal mondo reale, non può succedere nulla di veramente brutto (un simulatore di aereo schiantato non uccide mai persone reali).


Un emulazione , al contrario, ha l'obiettivo di prendere il posto della cosa reale: ad esempio, se si emulare un microcontrollore semplice utilizzando un più sofisticato programmabili CPU, che la CPU può essere usato al posto del microcontrollore originale; sarà fisicamente collegato a qualche macchina e controllerà effettivamente quella macchina proprio come farebbe il microcontrollore.

L' obiettivo di un'emulazione è sostituire componenti hardware o software con equivalenti funzionali quando i moduli originali non sono disponibili (o sono diventati troppo costosi, se non altro per la manutenzione). L'emulazione può anche servire all'obiettivo di utilizzare l'hardware in modo più flessibile: lo stesso microcontrollore programmabile può raddoppiare per diversi controller più semplici, cambiando la modalità di emulazione secondo necessità.


3
"technically", sono completamente diversi. La differenza concettuale che descrivi è fondamentale per questa differenza.
S.Robins,

@ S.Robins: per "tecnicamente", intendo che le implementazioni tecniche sono spesso simili o equivalenti; la differenza sta principalmente in ciò che li usi.
martedì

Non ha nulla a che fare con i casi d'uso. È la differenza fondamentale degli scopi che definisce due concetti molto separati. L'emulazione cerca di sostituire un sistema complesso di funzionalità esattamente in modo che sia indistinguibile dall'originale, mentre la simulazione è una grande semplificazione di un sistema e rappresenta la funzionalità in un senso molto generale attraverso un modello. Pertanto, le implementazioni tecniche sono necessariamente molto diverse.
S.Robins,

@ S.Robins - Non sono d'accordo. Il fatto che tu simuli o emuli un determinato microprocessore non fa molta differenza per l'implementazione, ma ciò che fai con esso lo fa.
martedì

1
@tdammers: in generale, l'obiettivo di progettazione principale di un emulatore è quello di fungere da sostituto "in tempo reale" dell'emulazione, mentre un obiettivo di progettazione principale di un simulatore è consentire l'analisi non necessariamente in tempo reale di, e possibilmente l'interazione con il processo sottostante. Alcuni simulatori possono essere veloci e alcuni emulatori possono fornire capacità sostanziali per analizzare e / o interagire con il processo sottostante, ma le priorità ingegneristiche sono diverse.
supercat

1

Mentre l'etimologia non è rigorosamente accurata, pensa alla differenza tra simpatia, "posso immaginare come deve essere" ed empatia, "so come ci si sente". Una simulazione potrebbe includere la rappresentazione visiva di un problema, ma potrebbe non esserlo. Ad esempio, potrebbe semplicemente stampare colonne di numeri che rappresentano quante persone sono allineate per qualcosa o entrate totali o velocità media. Ha alcune caratteristiche che corrispondono alla realtà e altre no.

L'emulazione, che viene spesso utilizzata nel contesto di una piattaforma che finge di essere un'altra piattaforma, è molto più completa. Quindi gli sviluppatori di Windows Phone possono eseguire o eseguire il debug delle loro app del telefono su un computer Windows in un emulatore, che assomiglia a un telefono e si comporta anche come uno. Puoi anche eseguire i tuoi vecchi giochi Commodore 64 in un emulatore.

Le parole non sono precise. La maggior parte dei simulatori di volo sono più simili agli emulatori secondo me, ma il nome è rimasto intatto in un'epoca in cui non erano così coinvolgenti. Alcune persone riservano l'emulatore di parole per il caso multipiattaforma e lo rifiutano per qualsiasi altra cosa. Probabilmente non ti sbaglierai mai se fai lo stesso quando parli, ma capisci che alcune persone possono posizionare il confine tra le due parole in modo leggermente diverso, e prendere le misure quando qualcuno dice "questa è un'emulazione" per un simulazione completa.


1
Sembra un malinteso comune che l'emulazione e la simulazione siano effettivamente le stesse. Ciò può essere dovuto al fatto che la parola emulare può significare rispecchiare il comportamento degli altri (ad esempio: un bambino emula suo padre). Ciò è tecnicamente inesatto quando si parla in termini di informatica. Un simulatore di volo non è un'emulazione, perché tutto l'input / output è gestito attraverso un programma appositamente costruito - il simulatore - che non replica esattamente il comportamento dell'aeromobile su cui è modellato, in quanto non implementa esattamente lo stesso computer programmi dell'aeromobile. Se così fosse, allora sarebbe un emulatore.
S.Robins,

0

Entrambi i termini sono molto simili nel concetto: imitazione.

Simulazione o Simulatori fanno uso di software per produrre un sistema replicato che è molto simile al modello target rispetto alla sua funzionalità di base sottostante (in particolare la sua metodologia di base).

Gli emulatori, d'altra parte, si concentrano maggiormente sulla somiglianza esteriore rispetto al sistema target. Ha una preoccupazione minima per "come" le funzioni sono imitate. Gli emulatori sono, in generale, utilizzati quando si lavora in un ambiente completamente diverso (ad esempio un sistema operativo diverso) rispetto al sistema originale.


1
Direi che hai mescolato i due concetti. È la simulazione che non si preoccupa dell'esatta implementazione; l'emulazione si preoccupa molto degli interni. Vedi: MAME
Andres F.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.