首页 > 其他 > 详细

Rocket - debug - TLDebugModuleInner - HALTSUM

时间:2020-03-07 13:54:23      阅读:57      评论:0      收藏:0      [点我收藏+]

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

 

不支持:

技术分享图片             

 

Rocket - debug - TLDebugModuleInner - HALTSUM

原文:https://www.cnblogs.com/wjcdx/p/12433887.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!