2

我有一个问题(就像我一样)......

但是......如果我有一个用 C 或 C++ 或任何你想要的代码编写的选择算法......修复了一个编译器,我可以确定指令的数量,但这些指令彼此不同:x ADD,y MUL,z MOV , f FADD, t FMUL (F 代表 FLOATING)...是否有一种方法或等式或其他东西允许以“等效指令”的数量编写指令数量来比较不同的算法?你们中是否有人使用这种类型的指标?是垃圾吗?

谢谢

马可

第 2 部分:我知道它通常依赖于 uP 和架构。我的问题是:确定在不同软核架构上实现的不同算法的执行时间。在 y 轴上我必须写下时间,在 x 轴上,指令的数量和图形的点由架构类型参数化(请原谅我的英语)。但是在 x-axix 上,我认为最好使用类似“等效指令”的数量......

这是一个垃圾的想法吗?

4

3 回答 3

4

你不太明白这个问题。执行速度不仅取决于指令,还取决于指令间的依赖性。微处理器可以同时执行多条指令,因为这些指令不相互依赖。一次执行多条指令的能力因处理器系列而异。这就是为什么这个任务真的是特定于硬件的,它不能一劳永逸地解决。

您所能做的就是绘制指令和处理器周期的执行时间线。处理器周期可以是 y 轴,指令可以是 x 轴。您将在预测缓存命中和未命中时遇到问题,并且许多指令的执行时间会因缓存命中/未命中而有很大差异。准备好花大量时间阅读处理器手册。

于 2009-02-26T10:31:52.937 回答
2

它必须考虑流水线和各种其他复杂性,其中许多会因处理器而异。换句话说,即使可行,我也看不出它特别有用。

还有一些算法无法告诉你的事情,比如会有多少缓存未命中等——这些可能比原始指令计数重要得多

于 2009-02-26T10:29:58.933 回答
0

这不是垃圾,只是模糊。从算法到源代码再到对象代码再到核心......有很多细节需要确定,每个细节都可能对性能产生重大影响。

看看 Hennessey & Patterson 的“计算机体系结构,一种定量方法”

于 2009-02-26T10:52:29.987 回答