Rocket - debug - TLDebugModuleInner - HALTSUM
作者:互联网
Rocket - debug - TLDebugModuleInner - HALTSUM
简单介绍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,比特,32,numHaltedStatus,TLDebugModuleInner,nComponents,核心,debug 来源: https://www.cnblogs.com/wjcdx/p/12433887.html