为什么在 64 位系统上模拟 32 位程序会导致处理器能力损失?

为什么在 64 位系统上模拟 32 位程序会导致处理器能力损失?

这可能是一个愚蠢的问题,但我找不到明确的答案。

主机 CPU=模拟 CPU

奔腾专业版 200 MHz = 286 6 MHz

奔腾 II 350 MHz = 386SX 25 MHz

奔腾 III 1.0 GHz = 486 66 MHz

奔腾 4 3.0 GHz = 奔腾 133 MHz

Core 2 Duo 3.3 GHz = Pentium II 300 MHz

Core i5 4xxx 4.0 GHz = Pentium 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 架构。

相关内容