下文ID转换流程,遵循如下的一些规则,带入后可更方便的看懂;
(copy 自(210条消息) CHI协议层_谷公子的藏经阁的博客-CSDN博客)
□ 所有的带有相同颜色的域段的值是一样的;
□ 用箭头表明后续packets是由哪个产生的;
□ 包含*的表示第一次产生,由当前agent产生该域的原始值;
□ 带圆括号()的表示该域是固定值,典型如Requester发送packets的SrcID,packets到达Completer的TgtID;
□ 被划掉的域段表示该域段无效;
□ 可以被ICN remapped的TgtID要标识上字母R;
□ 任何和当前传输不相关的域段在CHI协议域段流程图上省略了;
Read transactions
----------ID value transfer with DMT-------------
关注点:
1. HN访问SN时,自己产生了一个Txnid;
2. 该TxnID, 在SN返回compdata给RN时,当作了DBID;
3. 当RN返回compack给HN时,Txnid使用了之前compdata中的DBID,这样,对于HN来讲,这个txnid才闭环了;
4. SN返回compadata给RN时,HomeNID的值是HN的值,表示compack需要返回给HN;
--------------ID value transfer with DMT and separate Comp and Data-------------
关注点:
1. 同样关注TxnID/DBID这一条路;
-------------ID value transfer with DCT-----------------------
注意点:
1. 关注TxnID -> FwdTxnID -> TxnID(紫色部分)这一条路;
2. 注意HN snoop RNF时,txnid是自己产生的,以及txnid/dbid之间的关联性;
3. 关注HomeNID, 用来返回compack;
------------ID value transfer without Direct Data Transfer--------------
The Requester and Completer in this example are a Request Node and an HN-F respectively
关注点:
1. compdata返回时,homeNId可以看到和之前各个id的颜色都不同,说明是一个不一样的id;
不应该是黄色tgtid吗?
2. 返回compdata时,会生成一个unique的DBID, 专门用来处理compack;
Dataless transactions
-------ID value transfer in a CleanSharedPersistSep transaction------------
关注点:
1. RN<->ICN之间的TxnID, 以及ICN<->SN之间的TxnID;
Write transactions
-------------------CopyBack transaction----------------------
关注点:
1. 紫色的TxnID, 在返回了compDBIDResp之后,其生命周期已经结束了,因此,在发送writedata时,使用的时completer返回的DBID,来作为新的TxnID;
-----------------------WriteNoSnp transaction---------------------------
关注点:
1. 同样,可以关注下紫色的TxnID, 与淡蓝色的TxnID, 各自的生命周期;
2. 注意compack和writedata可以merge返回;
WriteUnique transaction
---------------------ID value transfer with a combined CompDBIDResp response------------
关注点:
1. 同样是两个TxnID的生命周期;
StashOnce or StashOnceSep transaction
关注点:
1. 可以看到ICN发送snp到RNF时,没有tgtid, 那怎么路由?
--implemetion define;
2. snpresp_i_read, 表示当前时invalid的,同时带有read操作,要pull data;
Transaction requests with Retry
注意点:
1. retry过后,再次发送request时,txnid可以和上次的不一样;
2. retry可以取消,返回PcrdReturn即可;
3. PCrdType(灰色),从retryack到最后再次发送request, 保持一致;