Come funzionano gli emulatori?
Ci sono molti modi diversi in cui gli emulatori possono essere costruiti, ma alla fine tutti si sforzano di ottenere la stessa cosa: fornire un ambiente su cui il codice precedente possa essere eseguito, preferibilmente in modo tale che il codice non abbia modo di distinguere questa piattaforma emulata dall'hardware originale per cui è stato progettato.
In sostanza, si sta creando la matrice. Fate in modo che il software pensi che le cose che lo circondano siano reali.
L'emulazione non è strettamente usata per l'emulazione di console per videogiochi, ma questo è un caso d'uso molto comune, quindi mi concentrerò su quello.
Ci sono 2 modi in cui il software di emulazione può essere costruito:
- Il modo più diretto è quello di imitare l'hardware stesso, la struttura interna della macchina originale. Si prende il codice e si esegue l'operazione richiesta come farebbe l'hardware originale. Questo è chiamato emulazione di basso livello (LLE), ed è tipicamente molto accurato dato che si sta fondamentalmente scrivendo un modello software di qualsiasi cosa si stia cercando di emulare. Ma questo metodo è anche abbastanza costoso dal punto di vista computazionale. Non tutto deve essere replicato nei minimi dettagli. C'è un altro modo?
- L'emulazione di alto livello (HLE), al contrario, cerca di replicare il comportamento della piattaforma emulata invece di modellarla perfettamente. Dopo tutto, a chi importa se stai facendo le cose in modo diverso, finché il risultato finale è lo stesso?
Gli emulatori HLE impiegano tattiche come la ricompilazione dinamica per cercare di estrarre anche più prestazioni. Il problema con questo approccio è che si sta cercando di fornire una funzione simile a quella dell'hardware senza replicare tale hardware. Cosa succede quando gli sviluppatori di giochi usano trucchi speciali e non documentati che gli autori dell'emulatore non hanno considerato? Beh, si ottengono problemi. Con LLE, il modello software eseguirà (si spera) le istruzioni come previsto, dato che sta cercando di imitare la macchina. Ma HLE può finire con scenari in cui si verificano bug perché gli sviluppatori hanno fatto qualcosa di imprevisto.
C'è ovviamente un certo livello di sovrapposizione tra i 2 approcci.
Inoltre, considerate che la maggior parte dei software di emulazione non è strettamente uno o l'altro, e spesso impiega entrambi a seconda di ciò che viene emulato specificamente (imitare una cpu a 1mhz degli anni '70 probabilmente va bene, ma non si vorrebbe modellare il comportamento completo di un'unità disco, per esempio)
Articoli simili
- Gli emulatori di giochi Xbox One e PS4 per PC sono reali? Se sì, quanto bene funzionano?
- Come si creano gli emulatori di videogiochi?
- Come far funzionare più velocemente gli emulatori di giochi su PC Windows
- Come hanno fatto gli sviluppatori di emulatori a dare un senso ai dati grezzi estratti dai videogiochi per creare le ROM?