为什么 CPU 仿真很慢

use*_*574 3 cpu emulation cpu-architecture

不同的 CPU(IA-32、ARM9 等)操作在性质上应该是等效的(移动、读取、写入数据等)。不同的 CPU 相互模拟应该不会那么痛苦。但似乎这并不容易,因为模拟软件运行速度太慢。我们可以简单地转换一个可执行文件,然后执行它吗?为什么它如此依赖资源(为什么我需要一个强大的 CPU 来模拟其他 CPU)?不得不说我没有很大的低级编程技能。非常感谢。

Law*_*ceC 5

不同的 CPU(IA-32、ARM9 等)操作在性质上应该是等效的(移动、读取、写入数据等)。

他们应该是,但他们不是。CPU 架构根据其设计者的设想来实现这些基本操作——这可能会因设计者试图完成的任务而大不相同。在某些 CPU 上用一条指令完成的事情可能需要在其他 CPU 上执行许多指令。

我们可以简单地转换一个可执行文件,然后执行它吗?为什么它如此依赖资源(为什么我需要一个强大的 CPU 来模拟其他 CPU)?

如果您只想模拟 CPU,那么这可以相对容易地完成。即时“转换”可执行文件称为“动态重新编译”,许多模拟器已经这样做了。不过,通常情况下,人们想要模拟整个平台。这包括 CPU 以外的硬件,有时该硬件难以模拟(例如 Atari 2600 TIA)或文档不全(NES PPU 视频硬件甚至当前的 GPU 硬件)或两者兼而有之。CPU 总是在平台的上下文中运行,通常软件期望 CPU + 平台以某种方式一起工作。模拟平台的要求以及通常需要的严格时序要求是最困难且资源密集的部分。