如何查找 Cortex M7 的指令执行周期?

对于Cortex M0 M3 M4 的我知道可以在其《Technical Reference Manual 》> Programmers Model > Instruction set summary 里面查看

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0432c/CHDCICDF.html

但是到了M7, 他告诉我去ARM-V7-M的手册中找

“The processor implements the ARMv7-M instruction set and features provided by the ARMv7E-M architecture profile. For more information about the ARMv7-M instructions, see the ARM®v7-M Architecture Reference Manual.”  -----《ARM Cortex-M7 Processor Technical Reference Manual》Programmers Model > Instruction set summary > Binary compatibility with other Cortex processors

但是在 V7-M 手册里,也没有找到具体的指令执行周期。请问应该去哪里找呢

Top replies

Parents
  • 这是个很有趣的问题,如果你仔细留意会发现理论上,Cortex-M7就无法提供准确的指令执行周期信息,因为Cortex-M7的流水线是超标量的(Super-scalar),对于前后满足条件的两条指令来说,Cortex-M7的流水线可以同时执行。在这种情况下,如何计算指令的平均周期呢?

    要知道,程序员了解指令执行周期是为了能够精确的计算某一段机器码的执行时间。但是如果这些指令中存在可以同时执行的部分,那么单个指令在流水线中执行所需要的时间就变得没有意义了。

    实际上,这个问题比想象的要略微复杂一点。因为前后两条指令还可能存在数据依赖(Data Dependency)或者是资源竞争(Structural Hazard)的情况。所以,指令执行周期的平均值也是根据前后指令的组合不同而变动的。 

Reply
  • 这是个很有趣的问题,如果你仔细留意会发现理论上,Cortex-M7就无法提供准确的指令执行周期信息,因为Cortex-M7的流水线是超标量的(Super-scalar),对于前后满足条件的两条指令来说,Cortex-M7的流水线可以同时执行。在这种情况下,如何计算指令的平均周期呢?

    要知道,程序员了解指令执行周期是为了能够精确的计算某一段机器码的执行时间。但是如果这些指令中存在可以同时执行的部分,那么单个指令在流水线中执行所需要的时间就变得没有意义了。

    实际上,这个问题比想象的要略微复杂一点。因为前后两条指令还可能存在数据依赖(Data Dependency)或者是资源竞争(Structural Hazard)的情况。所以,指令执行周期的平均值也是根据前后指令的组合不同而变动的。 

Children