为什么CPU仿真速度很慢

用户名

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

553

首先,尽管肯定有一些非常相似的指令,但并不是有些指令集在不同的CPU架构上总是表现出相同的方式。为了获得精确的仿真,通常(通常)不足以翻译每条指令-您必须处理内存访问,定时,中断...而这仅适用于CPU。

您似乎想的是静态重新编译,但这很难做到(实际上,我认为这归结为停顿问题,从理论上讲实际上是不可能的)。实际上,有时我们可以对一部分程序执行此操作,但是您无法编写通用编译器,该通用编译器将一种体系结构的目标代码作为输入,而输出另一种体系结构的完全等效的代码。例如,使用这种方法很难处理自修改代码。

动态重新编译(在程序执行时即时生成代码)更加成功(正确执行仍然很简单)。但是,具体问题将取决于体系结构。在许多情况下,仿真CPU并不是问题,而是仿真各种外围设备并保持准确的时序(请参见byuu的仿真SNES文章)。

有时,您可以忽略很多这些约束,而仍然可以很好地模拟硬件,以使软件的一个子集正常工作,但是(据我所知),除非您拥有实际的硬件,否则就不可能(零)以零的开销获得100%的准确性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySQL顺序插入速度很慢,而线程插入速度很快-为什么?

为什么本地客户端的厨师-客户端同步速度很慢

MySQL对两个不同索引的查询速度很快,但是合并为一个查询的速度很慢。为什么?

为什么Scala程序的编译速度很慢?

为什么contextmanager很慢

为什么使用Dataflow EXTREMELY写入Bigquery的速度很慢?

为什么朱莉娅进行第一次评估的速度很慢?

为什么通过扁平化迭代器进行迭代的速度很慢?

为什么取消Task.Delay的速度很慢?

创建新记录时,为什么我的Neo4J合并查询速度很慢?

为什么对一个向量进行多线程操作的速度很慢?

为什么Impala扫描节点的速度很慢(RowBatchQueueGetWaitTime)?

为什么某些utorrent文件下载速度很慢?

为什么我不能控制CPU风扇的速度?

为什么我的家用计算机上的bittorrent速度很慢?

为什么我的CPU的时钟速度不断下降?

为什么我到AFP共享的网络速度很慢?

为什么加载此文件的速度很慢

为什么lscpu CPU MHz!= dmidecode当前速度

为什么Mac上的名称解析速度很慢

为什么在Ubuntu 14.04上,Firefox的页面滚动速度很慢?

为什么Ubuntu的启动速度很慢?

为什么Chrome中的下载速度很慢,然后才使用?

无法理解为什么ISP速度通过无线速度很慢

为什么CPU速度甚至会大量变化?

PHP / MySQL速度很慢,不知道为什么?

Wifi速度很慢/无法在Mac上的linux上运行;为什么不连接?

为什么从相同分区上的现有文件设置Django FileField速度很慢?

为什么我的页面加载速度很慢我在我的 html 中使用预加载的 js CDN