首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何给仿真以正确的速度?

如何给仿真以正确的速度?
EN

Stack Overflow用户
提问于 2014-09-14 06:33:28
回答 1查看 830关注 0票数 2

我想为一个运行在600千赫兹左右的特别慢的CPU写一个仿真器。如果我以天真的方式为CPU编写一个仿真器(即,一次只仿真一条指令,不做其他任何事情),那么仿真速度将比600千赫兹快得多。

如何编写仿真器以正确的速度仿真CPU,而不考虑主机的速度?现实世界中的仿真器通常使用什么技术来实现这一点?如何避免抖动减慢仿真速度?

EN

回答 1

Stack Overflow用户

发布于 2015-04-11 20:37:02

在一个典型的平台上,唯一可用的“周期性事件”是不准确的和低频率的,当然不像0.6 the。但是使用一个“慢”的计时器(可能是100 of左右),你可以“跑许多短冲刺”,在这中间有足够的时间“休息”,平均每秒你可以模拟适量的周期。时间通常可以相当准确地测量,因此您可以在每个“冲刺”中精确地模拟正确的周期数。

在较高的级别上,这可能类似于:

代码语言:javascript
复制
int cycle_budget = 0;
time last_sprint = something;

// on timer fire
cycle_budget += (current_time - last_sprint) * clock_rate;
last_sprint = current_time;
while (cycle_budget >= slowest_instruction)
    tick(); // emulates one instruction, subtracts from cycle_budget

有一些明显的变化,例如,您可以让预算为负,而不是测试是否有足够的运行速度较慢的指令。或者您可以对指令进行解码,然后测试是否有足够的预算来运行它。这一切都假设一条指令不会花费很长的时间,但据我所知,这从来都不是问题(甚至像z80的字符串指令,它们实际上是通过向后分支并重新执行自身来循环)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25828370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档