CHI write 传输——CHI(5)

上篇介绍了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种形式
a. 返回 2 个 response

返回DBIDResp 或 DBIDRespOrd表示有data buffer可以接收数据

返回Comp,表示其他requester都可以观测到该transaction
b. 返回 1 个 response

返回CompDBIDResp

对于Response

Comp**:** 完成response,为了与DBIDResp区别开

CompDBIDRespComp+DBIDResp

对于CopyBack,必须使用CompDBIDResp 作为完成response

对于Non-CopyBack和AtomicStore ,可以选择分别发送CompDBIDResp,也可以将它们合并,只发送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


(1)RN-F0 issues a WriteNoSnp transaction
(2)HN-F receives and allocates the request.
(3)HN-F sends DBIDResp without Comp.
(4)RN-F0 responds with data.
(5)HN-F sends a Comp after it receives CompDBIDResp from SN-F.
(6)RN-F0 waits for Comp from HN-F and deallocates its request.

2、WriteUniquePtl


The Comp_I response from HN-F must be sent when the coherency activity is complete at HN-F.

其中:
SnpCleanInvalid : Snoop 操作

将cache line更改为Invalid状态,并获得dirty副本
SnpRespData_I_PD : snoop response
• 伴随 data
• Cache line state 为 I
• PD (pass dirty)

四、DWT

DWT(Direct Write-data Transfer) : 数据直接从Requster到Slave,减少了对DAT channel的使用,并且不需要Home Node保存write data(所有DWT操作都是Non-Copyback,且在REQ channel将DoDWT设置为1)


(1) Requester 向 Home 发送 WriteNoSnp or WriteUnique
(2)Home 将 requestforward 到 Slave
(3)Home 向 request 返回 Comp response
(4)Slave 检测到 DoDWT ==1 ,向 requester 发送 DBIDResp
(5) Requester 在收到 DBIDResp 后,发送 NCBWrData response 给 Slave ;若写操作被取消,则发送 WriteDataCancel (DAT channel 的 opcode)
(6)Tag Match,由于涉及内容过多,我们在链接层单独介绍

1、WriteUniqueStash


(1)RN sends a WriteUniqueFullStash request to HN-F with the Stash target identified as RN-F1. Typically, the reqesting RN is an RN-I.
(2)HN-F sends SnpMakeInvalidStash to RN-F1 and SnpUnique to RN-F2.
(3)RN-F1 and RN-F2 send SnpResp response to HN-F. The Snoop response from RN-F1 also include s a Read request, that is, the Data Pull.
(4)HN-F treats the Read request from RN-F1 as a ReadUnique , and sends a combined CompData to RN-F1. CompData response includes the data written by RN.
(5)RN-F1 sends CompAck to HN-F to complete the Read transaction.

SnpResp_I
• 被 snoop 后 cache line 处于 I 状态。
• 例如, Snoopee 接收到 SnpMakeInvalid 后即是发送 SnpResp_I ;
SnpResp_SC
• 被 snoop 后 cache line 处于 SC 或 I 状态;
SnpResp_UC
• 被 snoop 后 cache line 处于 UC 、 UCE 、 SC 或 I 状态;
• ( 存在 I/SC 的原因是下文提及的" ( 六 ).Silent cache state transitions")
SnpResp_UD
• 被 snoop 后 cache line 处于 UD 状态;
SnpResp_SD
• 被 snoop 后 cache line 处于 SD 状态。

相关推荐
Saniffer_SH1 小时前
【高清视频】实验室搭建PCIe 6.0测试环境需要的retimer卡介绍
服务器·驱动开发·测试工具·fpga开发·计算机外设·硬件架构·压力测试
学嵌入式的小杨同学2 小时前
STM32 进阶封神之路(二十四):低功耗实战全攻略 —— 电池供电传感器节点(RTC 唤醒 + DHT11 采集 + 功耗优化)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
GateWorld2 小时前
FPGA内部模块PFU配置: 6输入LUT如何实现32位移位寄存器
fpga开发
内有小猪卖2 小时前
Cadence 和 Synopsys 厂家设计流程
硬件架构·数字ic
学嵌入式的小杨同学3 小时前
STM32 进阶封神之路(二十三):低功耗深度解析 —— 从睡眠模式到停机模式(底层原理 + 寄存器配置)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
智者知已应修善业12 小时前
【proteus中lm339电压滞回比较器达到三角波转换成方波】2023-4-13
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程
FPGA小迷弟18 小时前
FPGA 时序约束基础:从时钟定义到输入输出延迟的完整设置
前端·学习·fpga开发·verilog·fpga
daxi1501 天前
Verilog入门实战——第3讲:流程控制语句(if-else / case / 循环结构)
fpga开发·fpga
biubiuibiu1 天前
工业机器人编程语言详解:多样化选择与应用
fpga开发·机器人
lf2824814311 天前
04 DDS信号发生器
fpga开发