Jaka jest różnica między symulacją a emulacją

97

Często widzę Symulacje i emulacje w informatyce. Te dwa warunki wydają się synonimami. Czy jest jakaś różnica między symulacją a emulacją ?

użytkownik
źródło

Odpowiedzi:

108

Tak, koncepcje są różne.


Symulacja

A simulationjest systemem, który zachowuje się podobnie do czegoś innego, ale jest implementowany w zupełnie inny sposób. Zapewnia podstawowe zachowanie systemu, ale niekoniecznie musi być zgodne z wszystkimi regułami symulowanego systemu. Ma on dać ci wyobrażenie o tym, jak coś działa.

Przykład

Pomyśl o symulatorze lotów jako przykładzie. Wygląda na to, że lecisz samolotem, ale jesteś całkowicie odłączony od rzeczywistości latania samolotem i możesz zginać lub łamać te zasady według własnego uznania. Na przykład lataj Airbusem A380 do góry nogami między Londynem a Sydney, nie psując go.


Współzawodnictwo

Jest emulationto system, który zachowuje się dokładnie jak coś innego i jest zgodny z wszystkimi zasadami emulowanego systemu. Jest to faktycznie pełna replikacja innego systemu, aż do binarnej zgodności z wejściami i wyjściami emulowanego systemu, ale działającym w innym środowisku niż środowisko oryginalnego emulowanego systemu. Reguły są ustalone i nie można ich zmienić, w przeciwnym razie system zawiedzie.

Przykład

System MAME jest zbudowany wokół tej właśnie przesłanki. Wszystkie te dawne zapomniane systemy zręcznościowe, które zostały prawie całkowicie zaimplementowane w sprzęcie lub w oprogramowaniu sprzętowym ich systemów, można emulować aż do oryginalnych błędów i awarii, które wystąpiłyby, gdy osiągniesz najwyższy możliwy wynik.

S.Robins
źródło
18
„zachowuj się dokładnie jak ...” może nie być konieczne. Ważne jest to, że „odtwarza to samo dokładne zachowanie zewnętrzne” w odniesieniu do tego, co z niego korzysta.
Emilio Garavaglia,
Pamiętaj, że zależy to od tego, co jest symulowane / emulowane. Na przykład coś, co emuluje komputer zgodny z komputerem, może być znacznie mniej dokładne i znacznie mniej realistyczne niż coś, co symuluje cyfrowe obwody komputera kompatybilnego z komputerem. W takim przypadku symulator może zachowywać się „dokładnie jak” prawdziwy komputer, podczas gdy emulator nie (ponieważ symulator symuluje coś na znacznie niższym poziomie).
Brendan
16

Symulacja to model wykonany z czegoś innego, który odtwarza niektóre z cech tej rzeczy i pozostawia się innym - oczywiście chcesz zachować cechy odnoszące się do zapytania, a pominąć te nieistotne.

Na przykład symulacja ruchu osób dojeżdżających do pracy o poranku Commuterpomija nazwiska osób dojeżdżających do pracy, a może nawet ich tożsamości (przy użyciu zmiennej licznika zamiast rzeczywistego zestawu obiektów), ale nie może zignorować ich szybkości przybycia.


Emulacja to uruchomienie oprogramowania X utworzonego dla platformy A na platformie B, bez zmiany samego oprogramowania. Wymaga to zbudowania modelu A działającego na B i oczywiście musi modelować wszystko o A, które obejmuje wykonanie kodu. (Teoretycznie można pominąć obsługę kodów, o których wiadomo, że to konkretne oprogramowanie nigdy nie będzie używać, ale jest to rzadkie - wykonanie emulatora to ciężka praca, a o wiele bardziej opłacalne jest wykonanie dokładnej pracy i posiadanie czegoś wielokrotnego użytku niż kludge działa tylko dla S.)

Kilian Foth
źródło
7

Oba oznaczają coś, co spełnia rolę czegoś innego.

Różnica polega na tym, że „Symulacja” odbywa się na świadomym poziomie (w odniesieniu do użytkownika) i jest zazwyczaj finalizowana w celu przewidywania wyniku rzeczywistości bez dotykania samej rzeczywistości.

„Emulacja” ma miejsce na poziomie nieświadomości i ma na celu zastąpienie bazowego komponentu innym innym, który - w odniesieniu do użytkownika - działa jak stary.

Innymi słowy, symulacja odbywa się w „świecie równoległym”, zaś emulacja w „świecie zastąpionym”.

Emilio Garavaglia
źródło
3
Jak to odpowiada na pytanie PO w zakresie informatyki? Nie ma w nich nic świadomego ani nieświadomego. Symulacja jest prawdziwa, podobnie jak emulacja. Ich cele są jednak koncepcyjnie bardzo różne.
S.Robins
@ S.Robins: świadomy / nieświadomy! = Prawdziwy / nierealny. świadomy = coś, co wyraźnie zdecydowałeś, nieświadomy coś, czego sam nie zdecydowałeś. Aplikacja działająca w systemie „emulowanym” nie wie o tej emulacji. Aplikacja działająca w „symulowanym” systemie musi o tym wiedzieć, ponieważ niekoniecznie musi mieć takie samo zachowanie.
Emilio Garavaglia,
1
Nie ma to nic wspólnego z tym, gdzie aplikacje są uruchomione, i nie ma nic wspólnego z podejmowaniem świadomych lub nieświadomych decyzji. Różnica polega zasadniczo na tym, czy system jest modelowany ogólnie, czy całkowicie replikowany.
S.Robins
@ S.Robins: Zgadzam się z pojęciem, które masz na myśli, ale jest coś subtelnego, czego nie można złapać: „emulator” zwykle ma na celu uruchomienie czegoś na wierzchu, zastępując coś w zakresie zastosowania. „Symulator” jest zazwyczaj pomyślany jako uruchamiany dla siebie zamiast prawdziwej aplikacji. Nie są na tym samym poziomie abstrakcji.
Emilio Garavaglia,
6

Technicznie oba robią to samo: rób coś w środowisku, które działa tak, jakby to była prawdziwa rzecz.

Pod względem koncepcyjnym istnieje jednak istotna różnica.

Symulacja ma być oderwana od świata rzeczywistego do pewnego stopnia; wynik symulacji nie jest bezpośrednio związany z przedmiotem, który symuluje. Na przykład symulator samolotu w rzeczywistości nie lata, a pilot w rzeczywistości nie komunikuje się z prawdziwym kontrolerem ruchu lotniczego.

Symulacja zwykle ma cel badań lub przewidywania jakiś proces rzeczywistego życia w bezpiecznym środowisku; ponieważ symulacja jest odłączona od realnego świata, nic naprawdę złego nie może się wydarzyć (rozbity symulator samolotu nigdy nie zabija prawdziwych ludzi).


Emulacja , przeciwnie, ma na celu zajmując miejsce prawdziwe: na przykład, jeśli naśladować prostego mikrokontrolera za pomocą programowalnego procesora bardziej wyrafinowany, że procesor może być używany w miejsce oryginalnego mikrokontrolera; będzie fizycznie podłączony do jakiejś maszyny i faktycznie będzie sterował tą maszyną, tak jak mikrokontroler.

Cel o emulacji jest zastąpienie komponentów sprzętowych lub programowych z funkcjonalne odpowiedniki gdy oryginalne moduły nie są dostępne (lub stają się zbyt drogie, jeśli tylko do utrzymania). Emulacja może również służyć bardziej elastycznemu korzystaniu ze sprzętu - ten sam programowalny mikrokontroler może podwoić liczbę prostszych sterowników, zmieniając tryb emulacji w razie potrzeby.

tdammers
źródło
3
"technically"są zupełnie inne. Różnica koncepcyjna, którą opisujesz, ma fundamentalne znaczenie dla tej różnicy.
S.Robins
@ S. Robins: przez „technicznie” rozumiem, że techniczne wdrożenia są często podobne lub równoważne; różnica polega głównie na tym, do czego ich używasz.
tdammers
Nie ma to nic wspólnego z przypadkami użycia. Jest to podstawowa różnica celów, która definiuje dwa bardzo różne pojęcia. Emulacja ma na celu zastąpienie złożonego systemu funkcjonalności dokładnie tak, aby był nie do odróżnienia od oryginału, podczas gdy symulacja jest dużym uproszczeniem systemu i reprezentuje funkcjonalność w bardzo ogólnym sensie za pomocą modelu. W związku z tym implementacje techniczne są z konieczności bardzo różne.
S.Robins
@ S.Robins - Nie zgadzam się. To, czy symulujesz, czy emulujesz dany mikroprocesor, nie ma większego znaczenia dla implementacji, ale to, co z nim robisz, robi.
tdammers
1
@tdammers: Zasadniczo głównym celem projektowym emulatora jest zastępowanie emulowanej rzeczy w „czasie rzeczywistym”, podczas gdy głównym celem projektowym symulatorów jest umożliwienie analizy niekoniecznie w czasie rzeczywistym, i ewentualnie interakcja z podstawowym procesem. Niektóre symulatory mogą być szybkie, a niektóre emulatory mogą zapewniać znaczne możliwości analizowania i / lub interakcji z podstawowym procesem, ale priorytety inżynieryjne są różne.
supercat
1

Chociaż etymologia nie jest ściśle ścisła, zastanów się nad różnicą między współczuciem: „Mogę sobie wyobrazić, jak to musi się czuć”, a empatią, „Wiem, jak to jest”. Symulacja może obejmować wizualną reprezentację problemu, ale nie musi. Na przykład może po prostu wydrukować kolumny liczb reprezentujące liczbę osób ustawionych w kolejce po coś lub całkowity przychód lub średnią prędkość. Ma pewne cechy, które pasują do rzeczywistości, a niektóre nie.

Emulacja, która jest często używana w kontekście jednej platformy udającej inną platformę, jest znacznie bardziej kompletna. Dlatego programiści Windows Phone mogą uruchamiać lub debugować aplikacje na telefonie na komputerze z systemem Windows w emulatorze, który wygląda jak telefon i zachowuje się jak jeden z nich. Możesz także uruchomić swoje stare gry Commodore 64 w emulatorze.

Słowa nie są precyzyjne. Moim zdaniem większość symulatorów lotu przypomina bardziej emulatory, ale nazwa utknęła w czasach, gdy nie były tak wciągające. Niektóre osoby rezerwują emulator słowa na przypadek wieloplatformowy i odrzucają go na cokolwiek innego. Prawdopodobnie nigdy nie pomylisz się, jeśli robisz to samo podczas mówienia, ale zrozum, że niektórzy ludzie mogą nieco inaczej wytyczyć granicę między tymi dwoma słowami i przyjąć tolerancję, gdy ktoś powie „to jest emulacja” dla naprawdę dokładnego i pełna symulacja.

Kate Gregory
źródło
1
Wydaje się powszechnym błędnym przekonaniem, że emulacja i symulacja są w rzeczywistości takie same. Może to wynikać z tego, że słowo emulacja może oznaczać odzwierciedlenie zachowania innych (np. Dziecko naśladuje ojca). Jest to technicznie niedokładne, gdy mówi się o nich w dziedzinie informatyki. Symulator lotu nie jest emulacją, ponieważ wszystkie dane wejściowe / wyjściowe są przekształcane przez specjalnie zbudowany program - symulator - który nie dokładnie odwzorowuje zachowania samolotu, na którym jest modelowany, ponieważ nie implementuje dokładnie tego samego komputera programuje samolot. Jeśli tak, wówczas byłoby to emulator.
S.Robins
0

Oba terminy są bardzo podobne pod względem koncepcji - naśladowanie.

Symulacje lub symulatory wykorzystują oprogramowanie do stworzenia replikowanego systemu, który jest bardzo podobny do modelu docelowego pod względem podstawowej funkcjonalności (szczególnie podstawowej metodologii).

Z drugiej strony emulatory koncentrują się bardziej na podobieństwie zewnętrznym w porównaniu do systemu docelowego. Ma minimalne znaczenie „naśladowania” funkcji. Emulatory są na ogół używane podczas pracy w zupełnie innym środowisku (na przykład innym systemie operacyjnym) w porównaniu do oryginalnego systemu.

Mr. White
źródło
1
Powiedziałbym, że pomieszałeś te dwie koncepcje. To symulacja, która nie dba o dokładną implementację; emulacja bardzo dba o elementy wewnętrzne. Patrz: MAME
Andres F.