高通吧 关注:176,452贴子:4,423,317
  • 11回复贴,共1

Maynard Handley的ROB大小测试方法

只看楼主收藏回复

好久没有研究微架构方面的东西了,最近正好A17要出了就研究一下。
Maynard Handley在他的m1逆向工程文档里测试ROB、Int/FP物理寄存器大小和History Queue里都使用了和Henry Wong不同的方法。
由于ROB是FIFO且只有最旧的指令retire了才会释放,所以我们需要用一条或者几条长延时dependence chain(这里他用的是FSQRT)来把ROB head堵住,后面再堆积nop指令。当堆积到一定数量时ROB会被占满,造成流水线stall,再后面的指令必须要等到前面delay chain指令retire才可以继续执行。通过观察在ROB被占满后的行为来判定ROB大小。

图上x轴是填充nop指令的数量 y轴是耗费的cycle。蓝色的线代表了有delay chain的情况,黄色代表了没有delay chain下nop的throughput。当填充指令达到~2200的时候执行周期明显变长了,为什么?我们先假设ROB大小没有容量限制,那么执行周期应该要到nop=32*13*8=3328的时候才会开始增长,因为 nop<3228的情况下 最少执行时间由FSQRT的延迟决定, nop>3228的情况下延迟由nop决定, 换句话说执行nop所消耗的时间会比 执行fsqrt消耗的时间更久 所以当fsqrt执行完后nop还没有执行完 如下图
红色的线代表了理论上如果ROB没有大小限制的情况。
所以在nop=2200的时候发生了什么导致了不符合理论的情况?
我们假设ROB大小是2200,如果填充指令的数量大于2200,比如说2300,那么在2200条指令后的nop都不可以执行因为当前ROB已经满了,必须要等到ROB head也就是delay chain(Fsqrt)指令retire并且释放ROB entry才可以继续执行。那么,执行2300条nop的时间=执行delay chain指令的时间+执行剩下100条nop指令的时间,作为对比假如ROB大小大于2300,那么执行的时间=执行delay chain指令的时间(也就是图上红色部分),因为假如机器没有stall, 在执行FSQRT的时候会并行的执行nop指令,nop执行完了FSQRT还没有执行完,所以执行时间等于FSQRT的执行时间。最终通过观察何时cycle 会突然增加并且不符合理论情况来确定ROB大小。为了更准确的观察你可以减少delay chain指令的数量,找到上述的现象可以复现下花费最少的延迟指令。如图下

最后提供一下测试序列的伪代码
start:
FSQRT r2, r2, r0
FSQRT r2, r2, r0
...
FSQRT r2, r2, r0
nop
nop
....
nop
counter--
branch start if not zero
循环是为了减少操作系统上下文切换所带来影响。


IP属地:马来西亚1楼2023-09-02 14:15回复
    也可以用做测试其他structure的大小 比如RS LOAD/STORE queue。只需要替换填充指令即可。


    IP属地:马来西亚2楼2023-09-02 14:17
    回复
      所以测试下来 rob大概是多少? 而且因为nop指令 M1大核设计的时候有优化,用它来测rob可能会出现问题。
      就和ARM的ROB一样,ARM自己标的384,但实际因为ARM自己的设计可以等效更多的ROB 所以苹果如果没有官方文档说明的话,只能猜个大概。


      IP属地:广东来自Android客户端4楼2023-09-02 14:23
      收起回复
        不过说实话我个人还是更加喜欢Henry WOng的方法,更加符合直觉,Henry Wong的实现看travis downs, ARM版本实现可以看dougall的实现。 dougall的相对来说比较好理解特别是lfence的部分。


        IP属地:马来西亚来自iPhone客户端5楼2023-09-02 14:31
        回复
          另外Maynard Handley人特别好,解释问题特别详细。他在80年代后期他写了mac上的第一个MPEG decoder,后来91年的时候被苹果看中进了Quicktime团队做代码优化,在苹果工作了差不多10年。


          IP属地:马来西亚6楼2023-09-02 14:37
          回复
            IP属地:马来西亚7楼2023-09-02 15:03
            回复
              愿通吧多一点技术贴,少一点嗨购


              IP属地:四川来自Android客户端8楼2023-09-02 16:13
              回复