等效指令数

时间:2009-02-26 10:26:39

标签: assembly equivalent instructions

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

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

由于

2部分: 我知道它总体上依赖于uP和架构。我的问题是:确定在不同的软核架构上实现的不同算法的执行时间。在y轴上我必须写时间,在x轴上,指令的数量和图形的点由架构的类型参数化(对不起我的英语)。但是在x-axix上我觉得最好使用像“等效指令”这样的东西......

这是一个垃圾想法吗?

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

还有一些算法无法告诉你的事情,比如有多少缓存未命中等等 - 这些 比原始指令数更重要。< / p>

答案 2 :(得分:0)

这不是垃圾,只是模糊不清。从算法到SOURce代码再到Object COde再到核心...这么多细节要确定,每个细节都会产生重大的性能影响。

看看Hennessey&amp;帕特森的“计算机体系结构,定量方法”