4

有人能告诉我像http://www.ptlsim.org/这样的 CAS 软件是如何工作的吗?如果既不知道每条指令使用多少个周期也不知道 CPU 分支预测逻辑的信息,它们如何实现周期精度?或者所有东西都可以通过 NDA 获得?

我想它们可能在缓存被命中或丢失时非常准确(也许我错了,但我认为预测内部算法更容易),但是在不知道如何实现流水线和超标量的情况下,我很困惑如何进行模拟循环准确的。

因此,理论上是否可以在基于 x86 的硬件上实现硬rtos?或者应该签署某种 NDA 以便能够估计每条指令所需的时间?

4

3 回答 3

4

第一个问题:如果既不知道每条指令使用多少个周期,也不知道 CPU 分支预测逻辑,它们如何实现周期精度?

该模拟器确实为足够精确的 CPU 模型提供了周期精确的模拟,但没有为英特尔或 AMD 当前产品提供开箱即用的模型。Intel 或 AMD 的人员可以访问所需信息,可以创建 RTL 级模型并获得当前处理器的周期精确模拟。英特尔和 AMD 以外的人不能。您仍然可以将公开的信息提供给模拟器并获得合理的结果。这些结果与真实硬件不同。

如果您是软件开发人员并想对真实硬件进行基准测试,请使用真实硬件!像 PLTsim 这样的模拟器是为(学术)硬件开发人员设计的,他们希望在不花费数十万美元购买新芯片的情况下测试新硬件功能。

第二个问题:理论上是否可以在基于 x86 的硬件上实现硬 rtos?

当然理论上是可以的。您需要考虑所有情况下所有输入的每个代码段的绝对最坏情况。实际的问题是像Core 2这样的处理器非常复杂,处理器的状态是巨大的。此外,这些处理器并未设计为在时序方面具有确定性。一个非常硬的 RTOS 必须非常保守。最后,正如您正确观察到的那样,英特尔和 AMD 以外的人无法获得做出这些保守假设所需的所有信息。在实践中,传递最新和最好的 cpu 并使用具有确定性时序的较旧、更简单的 cpu 是合理的。

另一方面,如果 RTOS 不必真的很难实时,你总是可以只包括一些安全余量并希望最好。;-)

于 2013-01-10T23:12:14.783 回答
2

这不是两个问题的答案;我只回答第二个。随意投票,尽管Mackie的回答总体上似乎更好。

硬 RTOS很难在 x86 上实现。一个可以扼杀 RTOS 承诺的特殊事物是 SMM,即系统管理模式。CPU 在系统管理中断后进入它,它可能因不同的原因触发 - 硬件故障,在某些特殊的 MMIO 位置写入,out对某些特殊端口的指令。您无法禁用它,您无法真正预测 SMI 何时发生,并且 SMI 处理程序可能需要很长时间才能完成。

本质上,您对 CPU 何时处于 SMM 中一无所知,直到由于 CPU 花费了很长时间处理 SMI 而导致您的操作系统出现故障。在某些特殊情况下,即使对于非实时操作系统也可能成为问题,更不用说硬 RTOS。

还有这个线程可以为您提供有关 x86 上的 RTOSing 的更多要点。

于 2013-01-10T23:25:03.953 回答
0

在您链接的网站上,有如下声明;

PTLsim 是用于 x86 和 x86-64 指令集的最先进的周期精确微处理器模拟器和虚拟机。

直接在它模拟的同一平台上运行(运行 Linux 的 x86-64 或 x86 机器)

我不清楚这与任何其他 x86 虚拟机技术(例如 QEMU、VirtualBox、VMWare 或 Virtual PC)有何不同,这些技术通过实际直接在硬件上运行指令(以及在核心上运行)将是周期准确的速度)。是模拟器还是虚拟机?在我看来,它们不是一回事。 例如bochs是模拟器而不是 VM,PTLsim 似乎介于两者之间?

于 2013-01-13T11:02:25.550 回答