2010-05-20 41 views
3

我必须接近PowerPC和x86汇编代码的执行时间。我明白,我无法准确计算它取决于许多问题(当前处理器状态 - x86处理器在微指令中窜改内部指令,内存访问时间从缓存中获取代码等等。)。如何指定x86和PowerPC指令的执行时间?

我在英特尔优化参考(附录C)中找到了一些信息,但它没有提供有关所有通用指令的信息。有没有关于它的完整参考?

PowerPC处理器怎么样?我在哪里可以找到这样的信息?

回答

1

这必须是非常困难的一个现代化的,通用的,没有操作系统或者控制执行环境极​​其紧密,或作出假设不会是真的,至少在某些时候做。例如:如果某个硬件资源由于一个非常饥饿的竞争进程或多个竞争进程而过载,那么执行给定代码所用的时间将取决于操作系统能够在多大程度上共享过载资源竞争过程。即使操作系统可以完全公平地共享资源,你必须要能够限制竞争的过程,以确定一个有限的时间限制数量。

2

PowerPC有很好的文档记录,但它取决于你在谈论哪个处理器。 IBM为970(G5)做了一个相当不错的手册。当谈到微架构的细节时,英特尔就不那么容易了。

尽管如此,你想要做的事情非常棘手。 x86和PowerPC都是超标量的 - 它们有多个执行单元和流水线,所以它不像以前那样每个时钟周期可以执行一条指令。例如,PowerPC 970在任何时候都可以有215条“飞行中”指令。理想情况下,如果要测量小部分代码的精确循环计数,则需要模拟器。

1

现代处理器花费大部分时间等待内存,或者在等待当前线程的内存时查找内容。

我想你应该尽量优化你的内存使用。

1

你必须做一个非常严格的分析。考虑到所有的缓存,对齐,流水线,时间片等等,等等。x86甚至每个指令都有硬时钟周期吗?根据CPU手册的建议,最好只编写优化的代码速度。