模擬器(simulator)是用于分析研究目標系統本身,模擬器系統本身要跟目標系統保持一致。例如飛行模擬器對于用戶來講其本身要跟真正的飛機一致;再比如gem5模擬器,其本身要跟CPU所有內部行為一致(包括內部運行原理都要一致)。好的模擬器本身也可以仿真其目標系統,但不是所有模擬器都有這個特性。
仿真器(emulator)的目的是作為目標系統的替代品,可以完全替代目標系統,完成其對外的功能,即仿真器系統只需要保證呈現給外部的行為跟目標系統一致(不需要保證內部運行原理一致)。例如想在電腦上玩小時候玩的街機游戲,就需要在電腦上安裝一個街機仿真器(雖然很多人喜歡稱其為“街機模擬器”)。使用仿真器的目的是模擬目標系統呈現出的運行環境,仿真器保證的是完成目標系統相同的行為,不在乎其內部實現原理,再例如EMU8086仿真器,可以在另一臺非8086電腦上仿真8086微處理器的行為。即使再好的仿真器也不能作為模擬器用于研究目標系統內部運行原理。針對gem5,其本身是一個CPU模擬器,但是因為其也能做到仿真器可以完成的工作(gem5運行于Atmoic模式), 盡管其運行速度相比真正CPU差很多,也可以認為其是一個類似于EMU8086的CPU仿真器。但是盡管gem5運行于亂序(Out Of Order, 簡稱O3)時,gem5可以被看做CPU模擬器,其內部模擬的CPU各個模塊也不是完全一樣,所以也可以任務,gem5是由仿真多個部件的仿真器構成的。總之,模擬器針對目標系統內部進行模擬,仿真器用于仿真目標系統對外的行為。
仿真器和模擬器的不同----程序運行區別
在線仿真器ICE(In\ Circuit Emulator)能檢查運行程序的處理器的狀態。實際上,ICE取代了(或仿真了)目標板上的處理器,是一種強有力的工具。程序在ICE中可以實時運行、調試。 模擬器(simulator)是完全基于主機程序的。它模擬了目標處理器的功能和指令系統,其用戶界面通常和仿真器的一樣或比較類似。模擬器最大的缺點是它僅能模擬處理器,而嵌入式系統經常包含一個或更多重要的外圍部件。模擬器無能為力而且不能實時運行程序。它只能起輔助作用進行軟件粗調試,是純軟件的工具;而仿真器是硬件工具。
仿真器和模擬器的不同----工作過程區別
模擬器是模擬出原系統的一個抽象模型,而不需要真的去做真實系統要做的事情。因此它其實不具備真實系統的功能,只是當某一功能執行時,通常不必輸出功能執行的結果,只是在simulator中記錄下由此引發的狀態變化。因此它通常用于設計初期的模型驗證。
仿真器則更進一步,要真正地去做所有真實系統能做的事情,只不過做的“過程”不同,它一般用于處理兼容性問題和在資源有限的條件下完成系統原型的實現。
如果把真實系統比作一個人的話,simulator就是這個人的一幅肖像畫,而emulator則是這個人的一個克隆人。
舉個例子,我們要實現一個p2p文件分發系統。
最開始的時候我們可以實現一個simulator:它用一個函數來模擬節點間的通信,這個函數的輸入是網絡性能(帶寬,跳數),輸出是通信時延————注意,并沒有真正的數據在傳輸和拷貝,甚至都沒有真正的節點,我們只是模擬了通信時延這個“特征(feature)”。
接下來,我們把這個分發系統實現了,編譯成一個exe文件,但這時我們發現我們沒有足夠多的計算機來組成一個真實的、具有足夠規模的網絡來進一步測試(通常p2p網絡的節點數成百上千),這時,我們可以寫一個emulator:它可以區分同一個計算機上的不同進程,因此我們可以在一臺計算機上開100個進程,這樣可以用100臺計算機模擬出10000臺計算機的網絡————注意,此時數據真的是通過Socket在傳輸,只不過有的數據走的是loopback口,并沒有真的進網卡。
-
仿真器
+關注
關注
14文章
1018瀏覽量
83801 -
模擬器
+關注
關注
2文章
877瀏覽量
43266
發布評論請先 登錄
相關推薦
評論