我必须近似PowerPC和x86汇编程序代码的执行时间。我明白我无法精确计算它取决于许多问题(当前处理器状态 - x86处理器决定微指令中的内部指令,内存访问时间从慢速缓存中获取代码记忆等。)。
我在英特尔优化参考(附录C)中找到了一些信息,但它没有提供有关所有通用指令的信息。有没有完整的参考资料?
PowerPC处理器怎么样?我在哪里可以找到这样的信息?
答案 0 :(得分:2)
PowerPC有很好的文档记录,但它取决于你所说的处理器。 IBM为970(G5)做了一本非常好的手册。在谈到微架构的细节时,英特尔的关注度稍差。
尽管如此,你想做的事情是非常棘手的。 x86和PowerPC都是超标量 - 它们有多个执行单元和流水线,因此它不像过去那样每个时钟周期可能执行一条指令。例如,PowerPC 970在任何给定时间都可以“飞行”中最多215条指令。理想情况下,如果要测量小部分代码的精确循环计数,则需要模拟器。
答案 1 :(得分:1)
现代处理器花费大部分时间等待内存,或者在等待当前线程的内存时找到要做的事情。
我认为您应该尝试优化内存使用情况。
答案 2 :(得分:1)
你必须做一个非常严格的分析。考虑所有缓存,对齐,流水线,时间切片等等,x86甚至还有每个指令的硬时钟周期时间吗?最好根据CPU手册的建议,编写优化的速度代码。
答案 3 :(得分:1)
对于现代的,通用的操作系统来说,这一点非常难以做到,既没有严格控制执行环境,也没有至少在某些时候做出假设。
例如:如果某个硬件资源由于一个非常饥饿的竞争过程或多个竞争过程而过载,那么执行给定代码段所花费的时间将取决于OS在竞争之间共享过载资源的公平程度流程。即使操作系统可以完全公平地共享资源,您也必须能够限制竞争进程的数量以确定有限的时间限制。