1. 程式人生 > >模擬器(emulator)和模擬器(simulator)的區別

模擬器(emulator)和模擬器(simulator)的區別

模擬器(emulator)和模擬器(simulator)是比較容易混淆的概念,這兩個概念不僅針對計算機體系結構,在很多方面都有所應用,例如航空模擬器、街機模擬器等。

模擬器(simulator)是用於分析研究目標系統本身,模擬器系統本身要跟目標系統保持一致。例如飛行模擬器對於使用者來講其本身要跟真正的飛機一致;再比如gem5模擬器,其本身要跟CPU所有內部行為一致(包括內部執行原理都要一致)。好的模擬器本身也可以模擬其目標系統,但不是所有模擬器都有這個特性。

模擬器(emulator)的目的是作為目標系統的替代品,可以完全替代目標系統,完成其對外的功能,即模擬器系統只需要保證呈現給外部的行為跟目標系統一致(不需要保證內部執行原理一致)。例如想在電腦上玩小時候玩的街機遊戲,就需要在電腦上安裝一個街機模擬器(雖然很多人喜歡稱其為“街機模擬器”)。使用模擬器的目的是模擬目標系統呈現出的執行環境,模擬器保證的是完成目標系統相同的行為,不在乎其內部實現原理,再例如EMU8086模擬器,可以在另一臺非8086電腦上模擬8086微處理器的行為。即使再好的模擬器也不能作為模擬器用於研究目標系統內部執行原理。

針對gem5,其本身是一個CPU模擬器,但是因為其也能做到模擬器可以完成的工作(gem5運行於Atmoic模式), 儘管其執行速度相比真正CPU差很多,也可以認為其是一個類似於EMU8086的CPU模擬器。但是儘管gem5運行於亂序(Out Of Order, 簡稱O3)時,gem5可以被看做CPU模擬器,其內部模擬的CPU各個模組也不是完全一樣,所以也可以任務,gem5是由模擬多個部件的模擬器構成的。總之,模擬器針對目標系統內部進行模擬,模擬器用於模擬目標系統對外的行為。