Apa perbedaan antara simulasi dan emulasi

97

Saya sering melihat Simulasi dan Emulasi dalam ilmu komputer. Kedua istilah ini tampaknya bersinonim. Apakah ada perbedaan antara Simulasi dan Emulasi ?

pengguna
sumber

Jawaban:

108

Ya, konsepnya berbeda.


Simulasi

A simulationadalah sistem yang berperilaku mirip dengan sesuatu yang lain, tetapi diterapkan dengan cara yang sama sekali berbeda. Ini memberikan perilaku dasar suatu sistem, tetapi mungkin tidak selalu mematuhi semua aturan sistem yang disimulasikan. Itu ada di sana untuk memberi Anda ide tentang bagaimana sesuatu bekerja.

Contoh

Pikirkan simulator penerbangan sebagai contoh. Ini terlihat dan terasa seperti Anda menerbangkan pesawat, tetapi Anda benar-benar terputus dari kenyataan menerbangkan pesawat, dan Anda dapat membengkokkan atau melanggar aturan-aturan yang Anda inginkan. Sebagai contoh, menerbangkan Airbus A380 terbalik antara London dan Sydney tanpa merusaknya.


Persaingan

An emulationadalah sistem yang berperilaku persis seperti sesuatu yang lain, dan mematuhi semua aturan sistem yang ditiru. Ini secara efektif merupakan replikasi lengkap dari sistem lain, sampai menjadi biner yang kompatibel dengan input dan output sistem yang ditiru, tetapi beroperasi di lingkungan yang berbeda dengan lingkungan dari sistem yang ditiru asli. Aturannya sudah diperbaiki, dan tidak bisa diubah, atau sistem gagal.

Contoh

Sistem MAME dibangun di sekitar premis ini. Semua sistem arcade lama yang telah lama dilupakan, yang diimplementasikan hampir seluruhnya dalam perangkat keras, atau dalam firmware sistem perangkat keras mereka dapat ditiru hingga bug dan crash asli yang akan terjadi ketika Anda mencapai skor setinggi mungkin.

S.Robins
sumber
18
"berperilaku seperti ..." mungkin tidak perlu. Yang penting adalah bahwa ia "mereproduksi perilaku eksternal yang persis sama" sehubungan dengan apa yang menggunakannya.
Emilio Garavaglia
Perhatikan bahwa itu tergantung pada apa yang disimulasikan / ditiru. Misalnya, sesuatu yang mengemulasi komputer yang kompatibel dengan PC mungkin jauh kurang akurat dan jauh lebih tidak realistis daripada sesuatu yang mensimulasikan sirkuit digital dari komputer yang kompatibel dengan PC. Dalam kasus ini, simulator mungkin berperilaku "persis seperti" PC nyata sedangkan emulator tidak (karena simulator mensimulasikan sesuatu pada level yang jauh lebih rendah).
Brendan
16

Sebuah simulasi adalah model dibangun dari sesuatu yang lain yang mereproduksi beberapa fitur yang hal dan daun lain di luar - jelas Anda ingin mempertahankan fitur relevan dengan permintaan Anda, dan meninggalkan yang tidak relevan.

Sebagai contoh, simulasi lalu lintas komuter dini hari meninggalkan nama-nama komuter, dan mungkin bahkan identitas mereka (menggunakan variabel counter daripada set Commuterobjek yang sebenarnya ), tetapi tidak dapat mengabaikan tingkat kedatangan mereka.


Emulation adalah menjalankan perangkat lunak X yang dibuat untuk platform A pada platform B, tanpa mengubah perangkat lunak itu sendiri. Ini membutuhkan pembuatan model A yang berjalan pada B, dan jelas itu harus memodelkan segala sesuatu tentang A yang melibatkan eksekusi kode. (Secara teori Anda bisa menghilangkan dukungan untuk opcode yang Anda tahu perangkat lunak khusus ini tidak akan pernah digunakan, tetapi itu jarang - melakukan emulator adalah kerja keras, dan jauh lebih bermanfaat untuk melakukan pekerjaan menyeluruh dan memiliki sesuatu yang dapat digunakan kembali daripada kludge yang hanya berfungsi untuk S.)

Kilian Foth
sumber
7

Keduanya berarti sesuatu melakukan pekerjaan dari sesuatu yang lain.

Perbedaannya adalah bahwa "Simulasi" terjadi pada tingkat sadar (sehubungan dengan pengguna) dan diselesaikan biasanya untuk mengantisipasi hasil dari suatu kenyataan tanpa menyentuh realitas itu sendiri.

"Emulasi" terjadi pada tingkat yang tidak disadari , dan memiliki tujuan untuk mengganti komponen yang mendasarinya dengan komponen lain yang berbeda yang - dalam hal pengguna - berfungsi sebagai yang lama.

Dengan kata lain, simulasi terjadi di "dunia paralel", sementara emulasi terjadi di "dunia yang diganti".

Emilio Garavaglia
sumber
3
Bagaimana ini menjawab pertanyaan OP dalam hal ilmu komputer? Tidak ada yang sadar atau tidak sadar tentang mereka. Sebuah simulasi adalah nyata, seperti emulasi. Namun tujuan masing-masing secara konseptual sangat berbeda.
S.Robins
@ S.Robins: sadar / tidak sadar! = Nyata / tidak nyata. sadar = sesuatu yang Anda putuskan secara eksplisit, tidak sadar sesuatu yang tidak Anda putuskan sendiri secara eksplisit. Aplikasi yang berjalan pada sistem "dicontoh" tidak tahu tentang emulasi itu. Aplikasi yang berjalan pada sistem "simulasi" harus mengetahuinya, karena tidak harus memiliki perilaku yang sama.
Emilio Garavaglia
1
Ini tidak ada hubungannya dengan aplikasi mana yang berjalan di mana, dan tidak ada hubungannya dengan membuat keputusan sadar atau tidak sadar. Perbedaannya secara mendasar adalah apakah suatu sistem dimodelkan secara umum, atau direplikasi seluruhnya.
S.Robins
@ S.Robins: Saya setuju dengan konsep yang Anda maksud, tetapi ada sesuatu yang tidak kentara: "emulator" biasanya dirancang untuk menjalankan sesuatu di atas, mengganti sesuatu di bawah cakupan aplikasi. "Simulator" biasanya dirancang untuk dijalankan sendiri, bukan aplikasi sebenarnya. Mereka tidak berada pada level abstraksi yang sama.
Emilio Garavaglia
6

Secara teknis, mereka berdua melakukan hal yang sama: melakukan sesuatu di lingkungan yang bertindak seolah-olah itu adalah hal yang nyata.

Namun secara konseptual, ada perbedaan penting.

Sebuah simulasi seharusnya terlepas dari dunia nyata untuk tingkat tertentu; output dari simulasi tidak terhubung langsung ke hal yang disimulasikan. Misalnya, simulator pesawat tidak benar-benar terbang, dan pilot tidak benar-benar berkomunikasi dengan pengendali lalu lintas udara nyata.

Sebuah simulasi biasanya memiliki tujuan pengujian atau memprediksi beberapa proses kehidupan nyata di lingkungan yang aman; karena simulasi terputus dari dunia nyata, tidak ada hal buruk yang bisa terjadi (simulator pesawat jatuh tidak pernah membunuh orang sungguhan).


Sebaliknya, sebuah emulasi memiliki tujuan menggantikan yang asli: misalnya, jika Anda meniru mikrokontroler sederhana menggunakan CPU yang dapat diprogram lebih canggih, CPU dapat digunakan sebagai pengganti mikrokontroler asli; itu akan secara fisik terhubung ke beberapa mesin, dan itu benar-benar akan mengendalikan mesin itu seperti mikrokontroler.

The Tujuan dari emulasi adalah untuk mengganti perangkat keras atau perangkat lunak komponen dengan setara fungsional ketika modul asli tidak tersedia (atau telah menjadi terlalu mahal, jika hanya untuk menjaga). Emulasi juga dapat melayani tujuan menggunakan perangkat keras secara lebih fleksibel - mikrokontroler yang dapat diprogram yang sama dapat berfungsi ganda untuk beberapa pengontrol yang lebih sederhana, mengganti mode emulasi sesuai kebutuhan.

tammmer
sumber
3
"technically"Mereka sangat berbeda. Perbedaan konseptual yang Anda gambarkan merupakan dasar perbedaan ini.
S.Robins
@ S.Robins: oleh 'secara teknis', maksud saya implementasi teknis sering serupa atau setara; perbedaannya terutama pada apa yang Anda gunakan untuk mereka.
Pelaku
Ini tidak ada hubungannya dengan kasus penggunaan. Perbedaan mendasar dari tujuan inilah yang mendefinisikan dua konsep yang sangat terpisah. Persaingan berusaha untuk mengganti sistem fungsionalitas yang kompleks dengan tepat sehingga tidak dapat dibedakan dari yang asli, sedangkan simulasi adalah penyederhanaan besar dari suatu sistem dan mewakili fungsionalitas dalam arti yang sangat umum melalui suatu model. Dengan demikian, implementasi teknis tentu sangat berbeda.
S.Robins
@ S.Robins - Saya tidak setuju. Apakah Anda mensimulasikan atau meniru mikroprosesor yang diberikan tidak membuat banyak perbedaan untuk implementasi, tetapi apa yang Anda lakukan dengan itu tidak.
tdammers
1
@tdammers: Secara umum, tujuan desain utama dari sebuah emulator adalah untuk berfungsi sebagai pengganti "waktu nyata" untuk hal yang ditiru, sementara tujuan desain utama dari sebuah simulator adalah untuk memungkinkan analisis waktu-tidak-selalu-waktu-nyata dari, dan mungkin interaksi dengan, proses yang mendasarinya. Beberapa simulator mungkin cepat, dan beberapa emulator mungkin memberikan kemampuan substansial untuk menganalisis dan / atau berinteraksi dengan proses yang mendasarinya, tetapi prioritas teknik berbeda.
supercat
1

Sementara etimologinya tidak sepenuhnya akurat, pikirkan perbedaan antara simpati, "Saya bisa membayangkan seperti apa rasanya" dan empati, "Saya tahu bagaimana rasanya." Simulasi mungkin termasuk representasi visual dari suatu masalah, tetapi mungkin tidak. Misalnya, mungkin saja mencetak kolom angka yang menunjukkan berapa banyak orang yang berbaris untuk sesuatu atau total pendapatan atau kecepatan rata-rata. Ini memiliki beberapa karakteristik yang sesuai dengan kenyataan, dan beberapa yang tidak.

Emulasi, yang sering digunakan dalam konteks satu platform yang berpura-pura menjadi platform lain, jauh lebih lengkap. Jadi pengembang Windows Phone dapat menjalankan atau men-debug aplikasi telepon mereka pada mesin Windows di emulator, yang terlihat seperti telepon dan juga berperilaku seperti itu. Anda juga dapat menjalankan game Commodore 64 di emulator.

Kata-katanya tidak tepat. Kebanyakan simulator penerbangan lebih seperti emulator menurut pendapat saya, tetapi namanya telah berubah sejak saat mereka tidak begitu mendalam. Beberapa orang mencadangkan kata emulator untuk kasing lintas platform dan menolaknya untuk apa pun. Anda mungkin tidak akan pernah dianggap salah jika Anda melakukan hal yang sama ketika berbicara, tetapi pahamilah bahwa beberapa orang mungkin menempatkan batas antara dua kata sedikit berbeda, dan membuat kelonggaran ketika seseorang mengatakan "ini adalah emulasi" untuk yang benar-benar akurat dan simulasi lengkap.

Kate Gregory
sumber
1
Tampaknya kesalahpahaman umum bahwa emulasi dan simulasi secara efektif sama. Ini mungkin karena kata meniru dapat berarti mencerminkan perilaku orang lain (misalnya: seorang anak meniru ayahnya). Ini secara teknis tidak akurat ketika dibicarakan dalam hal ilmu komputer. Simulator penerbangan bukan emulasi, karena semua input / output di-manged melalui program yang dibuat khusus - simulator - yang tidak persis meniru perilaku pesawat yang dimodelkannya, karena tidak mengimplementasikan komputer yang sama persis program pesawat tidak. Jika ya, maka itu akan menjadi emulator.
S.Robins
0

Kedua istilah ini sangat mirip dalam konsep - meniru.

Simulasi atau Simulator menggunakan perangkat lunak untuk menghasilkan sistem yang direplikasi yang sangat mirip dengan model target sehubungan dengan fungsionalitas inti yang mendasarinya (terutama metodologi dasarnya).

Emulator, di sisi lain, lebih fokus pada kesamaan eksterior jika dibandingkan dengan sistem target. Ini memiliki kepedulian minimum untuk "bagaimana" fungsinya ditiru. Secara umum, emulator digunakan ketika bekerja di lingkungan yang sama sekali berbeda (Misalnya sistem Operasi yang berbeda) dibandingkan dengan sistem aslinya.

Tuan Putih
sumber
1
Saya akan mengatakan Anda memiliki dua konsep yang campur aduk. Ini simulasi yang tidak peduli dengan implementasi yang tepat; emulasi sangat peduli dengan internal. Lihat: MAME
Andres F.