首页 文章

如何指定x86和PowerPC指令的执行时间?

提问于
浏览
3

我必须估计PowerPC和x86汇编程序代码的执行时间 . 我明白我无法精确计算它取决于许多问题(当前处理器状态 - x86处理器指示微指令中的内部指令,内存访问时间从缓存较慢的内存中获取代码等 . ) .

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

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

4 回答

  • 1

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

  • 2

    对于现代的,通用的操作系统来说,这一点很难做到,既没有严格控制执行环境,也没有至少在某些时候做出假设 .

    例如:如果某个硬件资源由一个非常饥饿的竞争过程或多个竞争过程过载,那么执行给定代码段所花费的时间将取决于OS在竞争过程之间共享过载资源的公平程度 . 即使操作系统可以完全公平地共享资源,您也必须能够限制竞争进程的数量以确定有限的时间限制 .

  • 1

    PowerPC有很好的文档记录,但它取决于你所说的处理器 . IBM为970(G5)做了一本非常好的手册 . 在涉及微架构的细节方面,英特尔的关注度稍差 .

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

  • 1

    现代处理器花费大部分时间等待内存,或者在等待当前线程的内存时查找要做的事情 .

    我想你应该尝试优化你的内存使用量 .

相关问题