為什麼在 64 位元系統上模擬 32 位元程式時處理器能力會有所損失?

為什麼在 64 位元系統上模擬 32 位元程式時處理器能力會有所損失?

可能是個愚蠢的問題,但我找不到明確的答案。

主機CPU=仿真CPU

奔騰 Pro 200 MHz = 286 6 MHz

奔騰 II 350 MHz = 386SX 25 MHz

奔騰 III 1.0 GHz = 486 66 MHz

奔騰 4 3.0 GHz = 奔騰 133 MHz

酷睿 2 雙核心 3.3 GHz = 奔騰 II 300 MHz

酷睿 i5 4xxx 4.0 GHz = 奔騰 III 500 GHz

根據這裡

答案1

這一切都取決於您使用的模擬器。但重點是模擬器使用軟體來完成硬體的工作 - 即它不是直接在硬體上運行彙編程式碼,而是在軟體中運行。

換句話說,它不僅僅是在 64 位元系統上運行 32 位元程式碼(實際上沒有開銷),它實際上是偽裝成硬體的軟體,是從實際硬體中抽像出來的)

答案2

仿真需要用軟體創建計算機。這包括 CPU、記憶體以及使電腦盡可能接近實際硬體所需的所有輔助硬體。

每個 CPU 指令在主機 CPU 上運作之前都會經過檢查並轉換為模擬 CPU 使用的語言。這是與直接在主機 CPU 上執行程式碼不同因為 CPU 是一個與主機 CPU 完全隔離的軟體結構。

這種隔離使其適合將模擬電腦移至任何其他系統,即使具有完全不同的 CPU 類型,因為它獨立於主機 CPU 並且僅依賴模擬軟體。主機 CPU 和模擬機可以有截然不同的 CPU。

這「不僅僅是」充當 32 位元機器的 64 位元機器,它是運行整個 CPU 的 64 位元機器在軟體中在真正的CPU之上。

仿真的替代方案是虛擬化。在虛擬化中,軟體僅模擬 CPU 周圍的硬體和相關接口,而不模擬 CPU 本身。程式碼直接在主機 CPU 上運行,從而獲得接近本機的速度,但代價是主機和來賓電腦需要相同的 CPU 架構。

相關內容