指令

2009-02-26 56 views
2

我有一个问题(就像我)的当量数...指令

但是......如果我用C或C++或任何代码,你想要一个选定的算法...一个固定编译器我可以确定指令的数量,但是这些指令是互不相同的:x ADD,y MUL,z MOV,f FADD,t FMUL(F代表FLOATING)...是否有一种方法或方程或其他许可在“等价指令”的编号中写入指令的数量来比较不同的算法?有没有人使用这种类型的指标?这是垃圾吗?

感谢

马尔科

第2部分: 我知道这dipends上起来的建筑一般。我的问题是:确定在不同的软核架构上实现的不同算法的执行时间。在y轴上,我必须写出时间,在x轴上指令的数量和图形的点由架构的类型参数化(请原谅我的英语)。但在x-axix上,我认为最好使用类似“等效指令”数量的东西...

这是垃圾想法吗?

回答

4

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

所有你能做的就是绘制指令和处理器周期的执行时间线。处理器周期可以是y轴,指令可以是x轴。预测缓存命中和未命中以及许多指令的执行时间将因缓存命中/未命中而有很大差异。准备花费大量时间处理器手册。

2

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

也有算法不能告诉你的东西,比如有多少缓存未命中等等 - 这些可能是比原始指令计数更重要。

+0

谢谢乔恩, 有没有办法来确定的固定算法的努力措施?但没有像O(nlog(n))这是学术...感谢 – 2009-02-26 10:32:12

+0

不是我所知道的。我通常会发现“运行它并记录时间”是最简单的方法,并且工作得很好。 – 2009-02-26 10:34:34

+0

乔恩,有时可以预测缓存未命中。例如,如果你乘两个大矩阵,你肯定知道检索第二个矩阵的每一列会导致大量的缓存未命中,甚至可以评估这个成本。 – sharptooth 2009-02-26 11:25:09

0

这不是垃圾,它只是含糊不清。从算法到SOURCE代码到对象COde到核心......要弄清许多细节,每个细节都可能有重大的性能影响。

看一看轩尼诗&帕特森的“计算机体系结构,一种定量方法”