zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/elOGjaVCWc48gs9c_cTqww

     

    简单介绍TLDebugModuleInner中HALTSUM寄存器的实现。

     

     

    1. numHaltedStatus

     

    为了记录每个核心的暂停状态,需要的宽度为32位的窗口数:

     

    numHaltedStatus = (nComponents + 31) / 32

    = (nComponents - 1 + 32) / 32

    = (nComponents - 1) / 32 + 1

     

    当前实现最多只支持1024个核心,所以numHaltedStatus的最大值为32.

     

    2. haltedStatus

     

    单个元素为32位宽度的向量,每个元素表示32个核心的暂停状态:

     

    3. haltedSummary

     

    计算每32个核心中是否有核心暂停,即暂停摘要信息:

     

    4. HALTSUM1RdData

     

    HALTSUM1RdData是读取HALTSUM1寄存器时使用的数据源。

     

    HALTSUM1以hartsel高10位选择一个窗口,低5位选择一个比特,该比特代表最低5位表示的32个核心中是否有核心暂停。

    因为当前实现只支持1024个核心,所以高10位实际上可以认为一直是0。也就是不需要再对haltedSumary做截取,而可以直接作为HALTSUM1使用:

     

    5. selectedHaltedStatus

     

    根据hartsel的值,从haltedStatus中选择一个32位窗口使用:

     

    6. HALTSUM0RdData

     

    HALTSUM0RdData是读取HALTSUM0寄存器时使用的数据源。

     

    HALTSUM0以hartsel的高15位选择一个窗口,低5位选择一个比特,每个比特代表一个核心是否暂停。

     

    这里选择的窗口就是selectedHaltedStatus:

     

    7. HALTSUM2/HALTSUM3

     

    不支持:

                 

     

  • 相关阅读:
    win10电脑只有自带浏览器能上网
    Android Studio环境安装
    小白回归
    软件工程个人总结
    学习进度第十六周
    学习进度第十五周
    第二阶段冲刺(第十天)
    《大道至简》阅读笔记03——语言只是种工具
    学习进度第十四周
    第二阶段冲刺(第九天)
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12433887.html
Copyright © 2011-2022 走看看