3

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

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

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

4

4 回答 4

2

PowerPC 有很好的文档记录,但这取决于您所谈论的处理器。IBM 为 970 (G5) 做了一个很好的手册。在微架构的细节方面,英特尔的态度稍逊一筹。

话虽如此,你想做的事情还是很棘手的。x86 和 PowerPC 都是超标量的——它们有多个执行单元和管道,所以它不像过去每个时钟周期可能执行一条指令。例如,PowerPC 970 在任何给定时间最多可以有 215 条“正在运行”的指令。理想情况下,如果您想测量一小段代码的精确循环计数,您需要一个模拟器。

于 2010-05-20T20:19:46.890 回答
1

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

我认为您可能应该尝试优化内存使用。

于 2010-05-20T20:22:11.010 回答
1

您必须进行极其严格的分析。考虑到所有的缓存、对齐、流水线、时间片等等等等。x86 甚至还有每条指令的硬时钟周期时间吗?最好根据 CPU 手册的建议编写优化代码以提高速度。

于 2010-05-20T20:25:32.493 回答
1

对于现代的通用操作系统来说,如果没有非常严格地控制执行环境,或者至少在某些时候做出不正确的假设,这一定很难做到。

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

于 2010-05-20T22:24:47.660 回答