CHI命令解析

1. read

Readnosnp

访问所有非snp的空间;

1. cacheable的,会到HNF后,到DDR, 是否allocate, 取决于地址属性;

2. noncacheable的,直接访问DDR;

CHI命令解析_第1张图片
Readonce

读回来的数据,不会放到自己的cache中,只会临时使用一下

RN开始状态:I, UCE

访问地址:snoopable地址;

流程同上;
ReadOnceCleanInvalid

同上,将所有的cacheline状态,改成invalid; 如果是dirty的,则需要将数据写回DDR;

RN开始状态:I, UCE

访问地址:snoopable地址;

流程同上;
ReadOnceMakeInvalid

同上,如果数据是dirty的,则直接丢弃;

RN开始状态:I, UCE

访问地址:snoopable地址;

流程同上;
ReadClean

RN开始状态:I, UCE

RN结束状态:SC, UC

访问地址:snoopable地址;

CHI命令解析_第2张图片
ReadNotSharedDirty

访问地址:snoopable地址;

RN开始状态:I, UCE

RN结束状态:SC, UC,UD

流程同上;
ReadShared

访问地址:snoopable地址;

RN开始状态:I, UCE

RN结束状态:SC, UC,UD, SD

CHI命令解析_第3张图片
ReadUnique

访问地址:snoopable地址;

RN开始状态:I, SC, SD, 或者可以是UC, UCE, UD, UDP(本来就是unique的)

RN结束状态:UC,UD

CHI命令解析_第4张图片
ReadPreferUnique

访问地址:snoopable地址;

返回状态最好是unique, share的也行;

CHI命令解析_第5张图片
MakeReadUnique Typical usage is when the Requester has a shared copy of the cache line and wants to obtain permission to store to the cache line

 

 2. write

writenosnp

DBIDresp会返回下次数据传输使用的txnid;

CHI命令解析_第6张图片

CHI命令解析_第7张图片

Non-CopyBack transactions transfer data from Request Nodes to Home Nodes without initially obtaining coherent ownership of the data. Non-CopyBack transactions are also used to transfer data from Home Nodes to Subordinate Nodes

WriteNoSnpFull

WriteNoSnpPtl

WriteNoSnpZero

通过BE来控制要写入的数据;

writeunique

(full/ptl/zero)

zero: Write without data bytes when the data value is zero, 应该只是为了获取状态,刷新数据到ddr CHI命令解析_第8张图片
WriteUniqueFullStash 同full, 只是会将该地址的数据,放到对应的某个rn节点中,方便其使用; CHI命令解析_第9张图片
writebackf(full/ptl) CopyBack transactions move coherent data from a cache to the next level cache or memory. CHI命令解析_第10张图片
writecleanfull 同writeback,只是最后想要获得clean态
writeEvictfull 将UC的cacheline刷新到下一级cache
WriteEvictOrEvict 将UC/SC的cacheline刷新到下一级cache CHI命令解析_第11张图片

3. cache matain(dataless)

CleanUnique

CHI命令解析_第12张图片

通常是share的cacheline, 想要获得unique的权限;

dirty的数据需要写入DDR;

CHI命令解析_第13张图片
MakeUnique

直接获得unique权限,dirty的数据不用写入ddr, 稍后自己会将full的数据,写入ddr;

CHI命令解析_第14张图片
Evict 将clean的cacheline逐出,不再cache住; CHI命令解析_第15张图片
cleaninvalid

invalid掉所有的cacheline;

dirty数据需要写入ddr;

makeinvalid

invalid掉所有的cacheline;

dirty数据直接丢掉;

cleanshared

将所有的cacheline变成non-dirty的状态; 

dirty数据需要写入ddr;

cleansharedpersist

将所有的cacheline变成non-dirty的状态; 

dirty数据需要写到pop点或者ddr;

pop: at or beyond the Point of Coherency, where a write to memory is maintained when system power is removed, and reliably recovered when power is restored to the affected locations in memory

CHI命令解析_第16张图片
cleansharedpersistseq

CHI命令解析_第17张图片

与上面的区别在于,它需要等到pop回响应;

CHI命令解析_第18张图片
StashOnceUnique, StashOnceSepUnique Request to a Snoopable address region to attempt to move the addressed cache line to a targeted cache to enable the target to store that line
StashOnceShared, StashOnceSepShared Request to a Snoopable address region to attempt to move the addressed cache line to a targeted cache; CHI命令解析_第19张图片

 4. compbined write(略)

5. 原子操作;

6. dvm/barrier操作;

7. snp操作;

    forward操作:如果要使用DCT传输,则需要将原始的srcid/txnid通过snp给到rn节点,这样rn节点直接回响应的时候,可以直接将生成完整的flit,直接发送给最原始的节点;

8.

Direct Memory Transfer(DMT):SN直接返回数据给原始的Requester;
Direct Cache Transfer(DCT):Peer RN-F字节返回数据给原始Requester;
在DCT中,数据提供者需要通知HN它已经将数据发给原始Request了,在某些情况下,数据提供者也必须发送一份拷贝数据给HN
 

你可能感兴趣的:(arm开发)