此处仅简单分析每个命令的含义,背景,以及可能的状态变化,对于每个trans具体包含的流程,将在下文描述;
write类型的操作分为三类,Immediate Write/ Write Zero/ Copy Back write;
Copy Back write
RN访问HN;
==============================================================
WriteBack ptl/full
--往HN或者SN发送一条dirty的cacheline数据;如果是partial的, 就用ptl的命令发送;
--根据上面的描述,那么RN在发送时的状态,只能是UD/SD;
--最终状态为I;
--如下是发送的流程图示;
==============================================================
WriteCleanFull
--将整条dirty的cacheline数据写入HN, 但是自身仍然保持该cacheline的clean态;
--根据上面的描述,发送该命令时的RN状态,只能是UD/SD;
--命令完成后状态为:UC/SC;
==============================================================
WriteEvictFull
--将UC的cacheline, 写入下一级cache; -> 初始状态只能是UC;
==============================================================
WriteEvictOrEvict
--将clean的cacheline(UC/SC), 写到下一级cache;
--这个请求类似于将writeevictfull/evict这两个命令合并成一个;
--HN可以选择是否接收这个数据,如果不接受,那么就不会有数据的传递(evict);
--likelyShared表示当前这个cacheline的状态;
--结束状态都是invalid, 不管数据是否接收;
(Comp响应,就是不要发数据)