我有一个问题(就像我一样)...
但是...如果我选择了用 C 或 C++ 或任何您想要的代码编写的算法...修复了编译器,我可以确定指令的数量,但这些指令彼此不同:x ADD,y MUL ,z MOV,f FADD,t FMUL(F代表 float )...是否有方法或方程式或其他东西可以允许在“等效指令”数量中写入指令数量以比较不同的算法?你们中有人使用这种类型的指标吗?这是垃圾吗?
谢谢
马可
第二部分: 我知道这通常取决于 uP 和架构。我的问题是:确定在不同软核架构上实现的不同算法的执行时间。在 y 轴上,我必须写下时间,在 x 轴上,指令数量和图表点由架构类型参数化(请原谅我的英语)。但在 x-axix 上,我认为最好使用“等效指令”数量之类的东西......
这是一个垃圾想法吗?
最佳答案
你没太明白问题所在。执行速度不仅取决于指令,还取决于指令间的依赖性。微处理器可以同时执行多条指令,前提是这些指令彼此不依赖。一次执行多条指令的能力因处理器系列而异。这就是为什么这个任务实际上是特定于硬件的,它不能一劳永逸地解决。
您所能做的就是绘制指令和处理器周期的执行时间线。处理器周期可以是 y 轴,指令可以是 x 轴。您将在预测缓存命中和未命中时遇到问题,并且许多指令的执行时间将根据缓存命中/未命中而有很大差异。准备好花费大量时间阅读处理器手册。
关于assembly - 等效指令数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/589966/