上篇介绍了dataless的操作类型,本篇我们来介绍一下write
一、Write 操作概览
cache stash :一种投机行为,通过在其未来的使用点附近分配一个cacheline来提高系统性能,因为可以减少使用数据时的内存访问延迟
二、CopyBack
CopyBack transaction将coherent data从cache搬移到下一级cache或memory中,不需要去snooping系统中的其它agents
支持的操作有:
• WriteBackPtl.
• WriteBackFull.
• WriteCleanFull.
• WriteEvictFull.
• WriteEvictOrEvict
步骤如下:
(1)The Requester sends a CopyBack request on the REQ channel.
(2)The Completer returns a single combined CompDBIDResp response on the CRSP channel to indicate:
a. It can accept the write data for the transaction.
b. This request will complete before any snoop(保序)
(3)After the Requester has received the CompDBIDResp response it sends the write data, with the CopyBackWrData opcode on the WDAT channel. The write data can be sent using multiple transfers.
1、WriteBackFull
三、Non-CopyBack
支持的操作有:
• WriteNoSnp, WriteNoSnpZero.
• WriteUnique, WriteUniqueZero.
其中,WriteNoSnp, WriteNoSnpZero不需要snoop其他master
WriteNoSnpZero, WriteUniqueZero 不需要传输数据
步骤如下:
(1)Requester 在REQ通道发送WriteNoSnp 或WriteUnique 请求
(2)ICN返回response有2种形式
返回DBIDResp 或 DBIDRespOrd表示有data buffer可以接收数据
返回Comp,表示其他requester都可以观测到该transaction
返回CompDBIDResp
对于Response
Comp: 完成response,为了与DBIDResp区别开
CompDBIDResp :Comp+DBIDResp
对于CopyBack,必须使用CompDBIDResp 作为完成response
对于Non-CopyBack和AtomicStore ,可以选择分别发送Comp和DBIDResp,也可以将它们合并,只发送CompDBIDResp
DBIDRespOrd 不支持DVM 传输。DBIDResp支持
DBIDResp,表示可以接收数据
NCBWrDataCompAck
用于WriteUnique and WriteNoSnp
结合了NonCopyBackWrData and CompAck
The cache state in the response must be I.
以上这个机制保证了Requester收到Comp和发送CompAck之间,不能收到任何的同地址的snoop请求
1、WriteNoSnp
2、WriteUniquePtl
其中:
将cache line更改为Invalid状态,并获得dirty副本
四、DWT
DWT(Direct Write-data Transfer) : 数据直接从Requster到Slave,减少了对DAT channel的使用,并且不需要Home Node保存write data(所有DWT操作都是Non-Copyback,且在REQ channel将DoDWT设置为1)
1、WriteUniqueStash