assembly - 等效指令数

标签 assembly equivalent instructions

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

但是...如果我选择了用 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/

相关文章:

assembly - 在移动垃圾收集实现中,内存引用是如何定位的?

Oracle 翻译的 Java 等效项

mysql - 此 mysql 查询的 SQL Server 等效项?

assembly - 3 操作数 imul 指令在 ia-32 汇编中到底起什么作用?

C优化: Why does the compiler treat an object not as constant?

c - 使用cachegrind和callgrind的不同读写计数

php - php sed之类的功能

c++ - 有没有一种编程方式来估计我的 CPU 执行 fp 操作所花费的时间?

assembly - `test` 指令是如何工作的?

c - 这两个来自 C if 语句的 MIPS 转换是否等效?