模擬器(simulator)是用于分析研究目標(biāo)系統(tǒng)本身,模擬器系統(tǒng)本身要跟目標(biāo)系統(tǒng)保持一致。例如飛行模擬器對(duì)于用戶來講其本身要跟真正的飛機(jī)一致;再比如gem5模擬器,其本身要跟CPU所有內(nèi)部行為一致(包括內(nèi)部運(yùn)行原理都要一致)。好的模擬器本身也可以仿真其目標(biāo)系統(tǒng),但不是所有模擬器都有這個(gè)特性。
仿真器(emulator)的目的是作為目標(biāo)系統(tǒng)的替代品,可以完全替代目標(biāo)系統(tǒng),完成其對(duì)外的功能,即仿真器系統(tǒng)只需要保證呈現(xiàn)給外部的行為跟目標(biāo)系統(tǒng)一致(不需要保證內(nèi)部運(yùn)行原理一致)。例如想在電腦上玩小時(shí)候玩的街機(jī)游戲,就需要在電腦上安裝一個(gè)街機(jī)仿真器(雖然很多人喜歡稱其為“街機(jī)模擬器”)。使用仿真器的目的是模擬目標(biāo)系統(tǒng)呈現(xiàn)出的運(yùn)行環(huán)境,仿真器保證的是完成目標(biāo)系統(tǒng)相同的行為,不在乎其內(nèi)部實(shí)現(xiàn)原理,再例如EMU8086仿真器,可以在另一臺(tái)非8086電腦上仿真8086微處理器的行為。即使再好的仿真器也不能作為模擬器用于研究目標(biāo)系統(tǒng)內(nèi)部運(yùn)行原理。針對(duì)gem5,其本身是一個(gè)CPU模擬器,但是因?yàn)槠湟材茏龅椒抡嫫骺梢酝瓿傻墓ぷ鳎╣em5運(yùn)行于Atmoic模式), 盡管其運(yùn)行速度相比真正CPU差很多,也可以認(rèn)為其是一個(gè)類似于EMU8086的CPU仿真器。但是盡管gem5運(yùn)行于亂序(Out Of Order, 簡稱O3)時(shí),gem5可以被看做CPU模擬器,其內(nèi)部模擬的CPU各個(gè)模塊也不是完全一樣,所以也可以任務(wù),gem5是由仿真多個(gè)部件的仿真器構(gòu)成的??傊?,模擬器針對(duì)目標(biāo)系統(tǒng)內(nèi)部進(jìn)行模擬,仿真器用于仿真目標(biāo)系統(tǒng)對(duì)外的行為。
仿真器和模擬器的不同----程序運(yùn)行區(qū)別
在線仿真器ICE(In\ Circuit Emulator)能檢查運(yùn)行程序的處理器的狀態(tài)。實(shí)際上,ICE取代了(或仿真了)目標(biāo)板上的處理器,是一種強(qiáng)有力的工具。程序在ICE中可以實(shí)時(shí)運(yùn)行、調(diào)試。 模擬器(simulator)是完全基于主機(jī)程序的。它模擬了目標(biāo)處理器的功能和指令系統(tǒng),其用戶界面通常和仿真器的一樣或比較類似。模擬器最大的缺點(diǎn)是它僅能模擬處理器,而嵌入式系統(tǒng)經(jīng)常包含一個(gè)或更多重要的外圍部件。模擬器無能為力而且不能實(shí)時(shí)運(yùn)行程序。它只能起輔助作用進(jìn)行軟件粗調(diào)試,是純軟件的工具;而仿真器是硬件工具。
仿真器和模擬器的不同----工作過程區(qū)別
模擬器是模擬出原系統(tǒng)的一個(gè)抽象模型,而不需要真的去做真實(shí)系統(tǒng)要做的事情。因此它其實(shí)不具備真實(shí)系統(tǒng)的功能,只是當(dāng)某一功能執(zhí)行時(shí),通常不必輸出功能執(zhí)行的結(jié)果,只是在simulator中記錄下由此引發(fā)的狀態(tài)變化。因此它通常用于設(shè)計(jì)初期的模型驗(yàn)證。
仿真器則更進(jìn)一步,要真正地去做所有真實(shí)系統(tǒng)能做的事情,只不過做的“過程”不同,它一般用于處理兼容性問題和在資源有限的條件下完成系統(tǒng)原型的實(shí)現(xiàn)。
如果把真實(shí)系統(tǒng)比作一個(gè)人的話,simulator就是這個(gè)人的一幅肖像畫,而emulator則是這個(gè)人的一個(gè)克隆人。
舉個(gè)例子,我們要實(shí)現(xiàn)一個(gè)p2p文件分發(fā)系統(tǒng)。
最開始的時(shí)候我們可以實(shí)現(xiàn)一個(gè)simulator:它用一個(gè)函數(shù)來模擬節(jié)點(diǎn)間的通信,這個(gè)函數(shù)的輸入是網(wǎng)絡(luò)性能(帶寬,跳數(shù)),輸出是通信時(shí)延————注意,并沒有真正的數(shù)據(jù)在傳輸和拷貝,甚至都沒有真正的節(jié)點(diǎn),我們只是模擬了通信時(shí)延這個(gè)“特征(feature)”。
接下來,我們把這個(gè)分發(fā)系統(tǒng)實(shí)現(xiàn)了,編譯成一個(gè)exe文件,但這時(shí)我們發(fā)現(xiàn)我們沒有足夠多的計(jì)算機(jī)來組成一個(gè)真實(shí)的、具有足夠規(guī)模的網(wǎng)絡(luò)來進(jìn)一步測(cè)試(通常p2p網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)成百上千),這時(shí),我們可以寫一個(gè)emulator:它可以區(qū)分同一個(gè)計(jì)算機(jī)上的不同進(jìn)程,因此我們可以在一臺(tái)計(jì)算機(jī)上開100個(gè)進(jìn)程,這樣可以用100臺(tái)計(jì)算機(jī)模擬出10000臺(tái)計(jì)算機(jī)的網(wǎng)絡(luò)————注意,此時(shí)數(shù)據(jù)真的是通過Socket在傳輸,只不過有的數(shù)據(jù)走的是loopback口,并沒有真的進(jìn)網(wǎng)卡。
-
仿真器
+關(guān)注
關(guān)注
14文章
1037瀏覽量
85413 -
模擬器
+關(guān)注
關(guān)注
2文章
894瀏覽量
44408
發(fā)布評(píng)論請(qǐng)先 登錄
數(shù)據(jù)類型不一樣和接口 怎么解決
FLASH的連接仿真器仿真與脫離仿真器的運(yùn)行問題,請(qǐng)問為什么會(huì)與屏上顯示的不一樣?
DSP讀FPGA的DNA,請(qǐng)問為什么會(huì)出現(xiàn)仿真器在線運(yùn)行和片內(nèi)自動(dòng)運(yùn)行結(jié)果不一樣的情況呢?
這個(gè)仿真例程設(shè)置的參數(shù)一樣,為何會(huì)出現(xiàn)不一樣的仿真結(jié)果?
仿真器仿真時(shí)CCS報(bào)錯(cuò)的原因?
SWD和傳統(tǒng)的調(diào)試方式有什么不一樣
仿真器和模擬器的不同_仿真器和模擬器的區(qū)別簡單分析
NFC與RFID有什么不一樣?資料下載

PDSDK COM 套件參考手冊(cè)(仿真器/模擬器調(diào)試器定制套件)

PDSDK COM 套件參考手冊(cè)(仿真器/模擬器調(diào)試器定制套件)

評(píng)論