https://www.codenong.com/cs106355908/
simulation 與 emulation 的區(qū)別
解釋一:
模擬(Simulation)即選取一個物理的或抽象的系統(tǒng)的某些行為特征,用另一系統(tǒng)來表示它們的過程鳄逾。模擬技術(shù)的高級階段稱為仿真模擬(Emulation)稻轨、系統(tǒng)仿真,即用一數(shù)據(jù)處理系統(tǒng)來全部或部分地模擬某一數(shù)據(jù)處理系統(tǒng)雕凹,以致于模仿的系統(tǒng)能想被模仿的系統(tǒng)一樣接受同樣的數(shù)據(jù)殴俱、執(zhí)行同樣的程序、獲得同樣的結(jié)果枚抵。
解釋二:
仿真 (Emulation) 是試圖模仿一個設(shè)備的內(nèi)部設(shè)計线欲;模擬 (Simulation) 是試圖模仿一個設(shè)備的功能。
解釋三:
Emulation:When one system performs in exactly the same way as another, though perhaps not at the same speed. A typical example would be emulation of one computer by ( a program running on) another. You migh use emulation as a replacement for a system whereas you would use a simulation if you just wanted to analyse it and make predictions about it.
Simulation: Attempting to predict aspects of the behaviour of some system by creating an approximate (mathematical) model of it. This can be done by physical modelling, by writing a special-purpose computer program or using a more general simulation package, probably still aimed at a particular kind of simulation (e.g. structural engineering, fluid flow). Typical examples are aricraft flight simulators or electronic circuit simulators. A great many simulation languages exist, e.g. {Simula}
解釋四:
Simulation汽摹,是指用軟件去模擬某個系統(tǒng)的功能李丰,并不要求實現(xiàn)該系統(tǒng)的內(nèi)部細節(jié),只要在同樣的輸入下逼泣,軟件的輸出和所模擬系統(tǒng)的輸出一致就可以了趴泌。比如你在 PC 機上用一個軟件去 simulate 紅白機的游戲 “超級瑪莉”,你只要讓你的軟件運行出來的效果和紅白機上 “超級瑪莉” 游戲一樣就可以拉庶,至于這個軟件你是怎么實現(xiàn)則無關(guān)緊要嗜憔。
Emulation,是指用軟件去模擬出某個系統(tǒng)中各個部件的組成氏仗,真實地模擬出系統(tǒng)的運行機制吉捶。這就要求軟件的作者需要非常了解所模擬系統(tǒng)的內(nèi)部結(jié)構(gòu),能夠利用各種數(shù)據(jù)結(jié)構(gòu)實現(xiàn)出各個部件的模型。同樣去 emulate 紅白機的游戲 “超級瑪莉”呐舔,首先就要用軟件模擬出紅白機中的各種硬件币励,如 CPU、內(nèi)存滋早、圖形處理芯片榄审、聲音處理芯片以及游戲手柄等悯舟,再通過將加載游戲的 ROM 來運行該游戲》菡剩現(xiàn)在各種游戲模擬器朱躺,如 MAME羔飞、VirtualNes 都是采用 emulation 的手段去實現(xiàn)游戲的模擬希柿,所以它們又叫做 emulator涨薪。
模擬就是指用在某個平臺上用純軟件的方法去模擬另一個平臺上程序的運行稚照,模擬包含 “Simulation” 和 “Emulation”策精,通過上面對這兩者的分析大家可以知道揭斧,“Simulation” 是一種高層次上的模擬莱革,類似于 “黑盒”,而 “Emulation” 更注重于對底層的模擬讹开,類似于 “白盒”盅视。
仿真的解釋就比較多了,有的說仿真是指用機器底層的微指令來解釋執(zhí)行另一個平臺的指令旦万,有的說仿真是軟件結(jié)合硬件來模擬另一種平臺程序的運行闹击,即 “硬件仿真 + 軟件模擬”。其實這兩者是針對不同仿真對象和宿主平臺而言的:前者具體的是講系統(tǒng)仿真成艘,是以大型機 CPU(現(xiàn)在也可以指 PC 機)為仿真對象的赏半,通常在研制 CPU 的過程中,用宿主機的 CPU 去仿真其軟件的運行淆两,這樣可以使硬件和軟件的研發(fā)過程同步断箫,加快整體系統(tǒng)的研發(fā)進度;后者一般指嵌入式仿真秋冰,做過嵌入式開發(fā)的朋友都知道仲义,開發(fā)過程中經(jīng)常要用仿真器去調(diào)試程序,我們可以在 PC 機上調(diào)試嵌入式系統(tǒng)中的某個程序剑勾,通過仿真器向嵌入式微控制器發(fā)送調(diào)試信號(如 JTAG)光坝,使微控制器執(zhí)行某條指令,而 PC 機上會相應(yīng)地顯示出該條指令執(zhí)行的結(jié)果甥材,看上去似乎是 PC 在 “執(zhí)行” 這條指令一樣,這樣來達到仿真的目的性含。但不管怎樣洲赵,仿真總是與硬件相關(guān)的,這一點與模擬是有區(qū)別的。
現(xiàn)在還出現(xiàn)了 “虛擬機” 一詞叠萍,在我看來芝发,虛擬機更多地采用了模擬技術(shù),而不是仿真苛谷,但是虛擬機相對于一個模擬器而言要復(fù)雜很多辅鲸,像 Bochs 這樣的虛擬機實質(zhì)上應(yīng)該是一個 emulator,而像 VirtualPC腹殿、VMWare 和 VirtualBox 這樣的虛擬機独悴,則采用了更為復(fù)雜的技術(shù),既有 simulation锣尉,也有 emulation刻炒,甚至還有系統(tǒng)仿真,所以不能單純地將它認為是一個模擬器自沧。
上文來自 CSDN 博客坟奥,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/xybsoft/archive/2008/12/23/3591566.aspx
解釋五
simulation 是模擬出原系統(tǒng)的一個抽象模型,而不需要真的去做真實系統(tǒng)要做的事情拇厢。因此它其實不具備真實系統(tǒng)的功能爱谁,只是當(dāng)某一功能執(zhí)行時,通常不必輸出功能執(zhí)行的結(jié)果孝偎,只是在 simulator 中記錄下由此引發(fā)的狀態(tài)變化访敌。因此它通常用于設(shè)計初期的模型驗證。
emulation 則更進一步邪媳,要真正地去做所有真實系統(tǒng)能做的事情捐顷,只不過做的 “過程” 不同,它一般用于處理兼容性問題和在資源有限的條件下完成系統(tǒng)原型的實現(xiàn)雨效。
如果把真實系統(tǒng)比作一個人的話迅涮,simulator 就是這個人的一幅肖像畫,而 emulator 則是這個人的一個克隆人
舉個例子徽龟,我們要實現(xiàn)一個 p2p 文件分發(fā)系統(tǒng)叮姑。
最開始的時候我們可以實現(xiàn)一個 simulator:它用一個函數(shù)來模擬節(jié)點間的通信,這個函數(shù)的輸入是網(wǎng)絡(luò)性能(帶寬据悔,跳數(shù)…)传透,輸出是通信時延 ———— 注意,并沒有真正的數(shù)據(jù)在傳輸和拷貝极颓,甚至都沒有真正的節(jié)點朱盐,我們只是模擬了通信時延這個 “特征 (feature)”。
接下來菠隆,我們把這個分發(fā)系統(tǒng)實現(xiàn)了兵琳,編譯成一個 exe 文件狂秘,但這時我們發(fā)現(xiàn)我們沒有足夠多的計算機來組成一個真實的、具有足夠規(guī)模的網(wǎng)絡(luò)來進一步測試(通常 p2p 網(wǎng)絡(luò)的節(jié)點數(shù)成百上千)躯肌,這時者春,我們可以寫一個 emulator:它可以區(qū)分同一個計算機上的不同進程,因此我們可以在一臺計算機上開 100 個進程清女,這樣可以用 100 臺計算機模擬出 10000 臺計算機的網(wǎng)絡(luò) ———— 注意钱烟,此時數(shù)據(jù)真的是通過 Socket 在傳輸,只不過有的數(shù)據(jù)走的是 loopback 口嫡丙,并沒有真的進網(wǎng)卡拴袭。
解釋六
simulation 是用軟件實現(xiàn),emulation 要涉及到硬件實現(xiàn)的部分迄沫。這個區(qū)分很簡單明了稻扬,在很多情況下也是適用的(包括上面舉的 p2p 分發(fā)系統(tǒng)的例子)。但是這種說法只是對于大多數(shù)情況的一種歸納性解釋羊瘩,因此在某些情況下就無法區(qū)分二者了泰佳。比如,這種解釋無法區(qū)分 Operating System Emulator 和 Operating System Simulator———— 這個時候二者都不涉及硬件尘吗,這是因為真實系統(tǒng) (Operating System) 本身就不涉及硬件逝她。
再說說 “模擬” 與 “仿真”。首先睬捶,即使在正式場合下(如論文標(biāo)題)黔宛,{模擬,仿真} 和 {simulation擒贸,emulation} 這兩個集合并不是一一映射的臀晃。你可以看到 "模擬 - simulation" 的組合,也可以看到 "仿真 - simulation" 的組合介劫。顯然徽惋,這個不一致現(xiàn)象是由于同時存在兩種一一映射造成的。這個問題不是說理能解決的座韵,還得隨著使用次數(shù)越來越大险绘,看大多數(shù)人的習(xí)慣。個人感覺誉碴,simulation 翻譯成 “模擬”宦棺,而 emulation 翻譯成 “仿真” 的情況多一些。
最后黔帕,提一下 “虛擬” 這個概念代咸。這個概念最近火的不行,英文名叫 virtualization成黄。我還沒有仔細調(diào)查它和前兩個概念的細微差別侣背,但是可以肯定的是白华,virtualization 和 emulation 比較相似,和 simulation 不是一回事贩耐。其他的,以后查到再補進來吧厦取。
解釋七
維基百科上對仿真器 (emulator) 和模擬器 (simulator) 的解釋如下:
仿真器(Emulator)潮太,又稱仿真程序,在軟件工程中指可以使計算機或者其他多媒體平臺(掌上電腦虾攻,手機)能夠運行其他平臺上的程序铡买,常被錯誤的稱為模擬器。仿真器多用于電視游戲和街機霎箍,也有一些用于掌上電腦奇钞。仿真器一般需要 ROM 才能執(zhí)行,ROM 的最初來源是一些原平臺的 ROM 芯片漂坏,通過一些手段將原程序拷貝下來(這個過程一般稱之為 “dump”)然后利用仿真器加載這些 ROM 來實現(xiàn)仿真過程景埃。 (http://zh.wikipedia.org/wiki/% E6% A8% A1% E6%8B%9F% E5%99% A8)
模擬器(simulator),又稱模擬程序顶别,在計算機科學(xué)技術(shù)的軟件工程中谷徙,是指完全基于主機程序并模擬了目標(biāo)處理器的功能和指令系統(tǒng)的程序。而仿真器(emulator)具有更強大的硬件模仿功能驯绎。 (http://zh.wikipedia.org/w/index.php?title=% E4% BB% BF% E7%9C%9F% E5%99% A8&variant=zh-cn)
直觀解釋這兩者的區(qū)別完慧,可以比較 Palm Os 的仿真器 (emulator) 和模擬器 (simulator) 。
Palm Os 的仿真器 (emulator)
Palm Os 仿真器 (emulator) 顯得更真實一些剩失,在使用中屈尼,需要載入實際 Palm 上的 ROM 文件,而且拴孤,從外觀脾歧,界面到操作上,也逼真地再現(xiàn)實際 Palm乞巧≌墙罚可以說,仿真器 (emulator) 就是一個用軟件實現(xiàn)的 Palm PDA.
Palm Os 的模擬器 (simulator) 的使用相對比較簡單一些绽媒,也可以測試和實現(xiàn) Palm 上的絕大多數(shù)功能蚕冬。
解釋八
Simulator 純粹以軟件來模擬源平臺的功能和運行結(jié)果;Emulator 以軟件和硬件來模擬源平臺的內(nèi)部設(shè)計是辕、行為和運行結(jié)果囤热。
舉例來說:
有使用硬件來模擬的,都是 Emulator获三。比如基于單片機的模擬旁蔼。(什么是叫使用硬件模擬锨苏?比如模擬源平臺的 Timer/PPU/SPU, 直接使用目標(biāo)平臺的 Timer/PPU/SPU,那么就是硬件模擬)棺聊。
一般的伞租,在 PC 上運行的模擬器都叫 Simulator,常見的是模擬 LCD 的顯示畫面限佩;在嵌入平臺上運行的模擬器都是 Emulator葵诈,因為在嵌入平臺運行的話,為了提高效率祟同,都會以對應(yīng)的硬件模塊來模擬源平臺作喘。
PC 上的模擬器如果模擬其內(nèi)部設(shè)計、行為晕城,比如讀取 ROM 文件泞坦,精確中斷、異常砖顷,OS 等都是 Emulator贰锁。
解釋九
Simulator 都是軟件,Emulator 有硬有軟也可以軟硬結(jié)合
比如 pc 上常說的 GBA择吊、PS 游戲模擬器李根,嚴格意義上講,應(yīng)該是仿真器才對几睛!它從二進制 rom 文件中取出一行行電視游戲機 CPU 的機器碼房轿,識別后再仿真該游戲機 cpu 的行為。即在 PC 上仿真執(zhí)行其他 CPU 的機器碼所森,稱之為 binary level 仿真囱持,因為它是直接執(zhí)行機器碼。
下次你再見到什么 “wm 模擬器”焕济、“iphone 模擬器”纷妆,一定要對它有深入理解,知道它是否真的仿真到機器碼的級別才能給出它真正的名字晴弃。因為我對他們不了解掩幢,所以我也不敢妄下結(jié)論。
總的來說上鞠,接觸仿真器(emulator)的機會更多一些际邻,我一時居然想不到有什么著名的開發(fā)用的真正的模擬器(simulator)
另外就是硬件仿真器,MDK 的 debug 選項下有兩個選擇
左上的 use simulator芍阎,指使用軟件仿真世曾。
右上的 ULINK 指使用實時仿真器,即硬件仿真器谴咸。ADS 下使用另外一種實時仿真器叫 ICE (In Circuit Emulator,ICE)轮听。
經(jīng)称叮看見這兩個詞,很容易混淆血巍,按我的理解如下:
Simulator 是模擬目標(biāo)系統(tǒng)的功能和行為萧锉。Simulator 和目標(biāo)系統(tǒng)看上去是一樣的。
Emulator 是模擬目標(biāo)系統(tǒng)的底層接口藻茂。目標(biāo)系統(tǒng)直接運行于 Emulator 之上驹暑。