CHI dataless 传输——CHI(4)

news2025/3/18 19:33:25

上篇介绍了read的操作类型,本篇我们来介绍一下dataless

目录

一、dataless操作概览

二、Non-CMO (Non-Cache Maintenance Operation)

1、CleanUnique

2、StashOnce and StashOnceSep

3、Evict

三、CMO (Cache Maintenance Operation)


一、dataless操作概览

名称(non-CMO)

描述

CleanUnique

snoopable地址区域的请求,将Requestercache line状态更改为“Unique”,以便对该cache line执行写操作。对其他的mastercache clean,并且invalid,其他cache line dirty的数据需要写入main memory

MakeUnique

CleanUnique,但是dirty cacheline直接丢弃。

Evict

用于告诉ICN,该RN-F不再缓存这个cacheline(类似于CPU知会HNF某一条cacheline已经被逐出了,本地已经没有了)

StashOnceUnique, StashOnceSepUnique

snoopable地址区域的请求,以尝试将被寻址的cacheline移动到目标缓存,以使目标能够存储该行。被寻址的RN可以按照ReadUnique来处理

StashOnceShared, StashOnceSepShared.

同上,被寻址的RN可以按照ReadNotSharedDirty 来处理

名称 (CMO)

描述

CleanShared

snoopable地址区域的请求,有缓存副本都更改为非dirty状态,并且任何dirty副本都会写回main memory

CleanSharedPersist

同上,但是dirty数据写入PoP(Point of Persistence ). PoP是内存系统中的一个点,当系统电源断开时,会保持对内存的写入,当电源恢复时,会可靠的恢复对内存的写入

CleanSharedPersistSep

同上,但是对requester需要有2responseComp response 表示请求到达HNPersist response表示请求已到达PoP

CleanInvalid

requesterI态时才能发此请求, 将拥有此 cacheline 副本invalidatedirty的写回main memory

MakeInvalid

同上,dirty的丢弃

CleanSharedPersistSep 的功能与leanSharedPersist 类似,但需要对请求者进行两个单独的响应:

1、Comp 响应,表明请求已达到一致性点(PoC),并且可以在请求者处消除危险。

2、持久响应,表明请求已到达PoP 或最终目的地。

PoC (Point of Coherence) : A point at which all agents that can access memory are guaranteed to see the same copy of a memory location. In a typical CHI based system it is the HN-F in the interconnect.

保证所有可以访问内存的代理都能看到内存位置的相同副本的点。 在典型的基于 CHI 的系统中,它是互连中的 HN-F

Dataless transaction可分为Non-CMO (Non-Cache Maintenance Operation) CMO (Cache Maintenance Operation)

第一个表为non-CMO的操作,第二个表为CMO操作

二、Non-CMO (Non-Cache Maintenance Operation)

支持的操作有:

CleanUnique

MakeUnique

• Evict.

StashOnceUnique, StashOnceSepUnique.

StashOnceShared, StashOnceSepShared.

步骤如下:

1、The Requester sends a Snoopable Read request on the REQ channel 

2、The Completer returns the read data and any associated transaction response with the CompData opcode on the RDAT channel

3、Requester must return an acknowledgement, using the CompAck opcode on the SRSP channel to indicate that the transaction has completed. 

non-CMO的操作本文会举3个例子:CleanUnique、StashOnceShared、Evict

1、CleanUnique

CleanUnique : CleanUnique是将其他的mastercache clean,并且invalid,只保留当前mastercache(此cache可以是clean,也可以是dirty); 其他cache line dirty数据需要写入main memory

1、RN-F1 has the cache line in SD state and responds to the snoop with a snoop response with data and PD asserted.

2、HN-F waits for all snoop responses and then sends a Comp_UC response to the Requester.

3、HN-F sends a Write request to update memory with the data received from RN-F1.

SnpRespData_I_PD后缀为PD,PD ( pass dirty ) 表示更新内存的责任已传递给请求者或 ICN。只能为带有数据的 Snoop 响应声明 Pass Dirty

Comp_UC : CleanUnique MakeUniquecomp response

MakeUnique相比cleanunique,没有写入main memory的操作,且不管其他cacheline的状态,dirtys数据会丢弃

2、StashOnce and StashOnceSep

Cache stashing机制可将数据存在系统中特定cache中,确保data靠近使用的节点,因此可以提高系统性能。Cache stashing只支持Snoopable memory空间。

相关的操作有:

StashOnceUnique,

• StashOnceSepUnique.

StashOnceShared,

• StashOnceSepShared.

步骤如下:

1、RN在REQ channnel发送request

2、ICN返回 comp response

3、如果是StashOnceSep requestHome返回StashDone响应,表示request已经被保序

4、Home还可以选择是否在SNP channelsnoop 目标RN-F

5、目标RN-F发送SnpResp响应,可以选择是否包含DataPull DataPull =0b001表示响应包含读请求

6、如果DataPull =0b001,则Home发送CompData响应

7、目标RN-F收到CompData后,返回CompAck

Datapull[2:0]==0b001 : Inclusion of Data Pull in the Snoop response(Snoop 响应中包含数据拉取)

Data Pull. Indicates the inclusion of an implied Read request in the Data response. (数据拉取。 指示在数据响应中包含隐含的读取请求)

DataPull只能等于0b0000b001

Comp : Completer接受已经请求,并且不会发送RetryAck相应

StashDone : 后续对于同一内存位置的transaction,该transaction是可被观察到的(保序)

StashOnce的四种操作的区别在于:

• Sends StashOnce∗Unique to Home if the stashed cache line is to be modified.

如果要修改stash的缓存行,则将 StashOnce*Unique 发送到 Home

• Sends StashOnce∗Shared to Home if the stashed cache line is not to be modified.

如果不修改stash的缓存行,则将StashOnce*Shared 发送到Home

• Sends StashOnceSep only if the Requester is capable of handling the StashDone response.

仅当请求者能够处理StashDone 响应时才发送StashOnceSep

• The StashOnce∗ requests provide a Stash target when the data is to be stashed in a peer cache.

当数据要存储在对等缓存中时,StashOnce* 请求提供存储目标。

• The StashOnce∗ requests do not provide a Stash target when the data is to be allocated to the next level cache.

当数据要分配到下一级缓存时,StashOnce* 请求不提供Stash 目标。

StashOnceShared为例

1、RN sends a StashOnceShared request to HN-F with the Stash target identified as RN-F1.

2、HN-F sends a Comp response after establishing processing order for the received request that is guaranteeing the request is processed before a request to the same address 

此响应是为了保序(该处理request要优先于后续任何request对该地址的请求)

3、HN-F sends a SnpStashShared snoop to RN-F1, and a ReadNoSnp request to SN-F to fetch Data.

4、RN-F1 sends SnpResp_I_Read response to HN-F.

5、HN-F treats the Read request from RN-F1 as a ReadNotSharedDirty, and sends a combined CompData to RN-F1.

6、 RN-F1 sends CompAck to HN-F to complete the Read transaction.

该操作的目的是,将SN中指定地址的数据,搬到RN-F1。但是在搬运前,要先对RN-F1进行snoop,判断RN-F1是否已经具有该数据

Snpresp_i_Read, 表示当前stateinvalid的,同时带有read操作,要pull data;

SnpStashShared
Snoop request recommending that the Snoopee obtains a copy of the cache line in a Shared state:
• Permitted to be sent to only one RN-F. 只能发送给RN-F
• This specification recommends not sending the snoop if the cache line is cached at the target. 如果
cache line就在target中,则建议不发送snoop
• The Snoopee must not return data with the Snoop response. 该
snoop不能返回数据
• Permits the Snoop response to include a Data Pull. 该
snoopresponse允许包含Data Pull
• Must not change the cache line state at the Snoopee. 不能改变被
snoopcache line状态

The responses that include Data Pull are:
SnpResp_I_Read.
SnpRespData_I_Read.
SnpRespData_I_PD_Read.
SnpRespDataPtl_I_PD_Read.

3、Evict

告诉HN, 当前RN中的这条cacheline不再进行缓存;类似于CPU知会HNF某一条cacheline已经被逐出了,本地已经没有了;

RN在发送请求之前,会先将状态调整到 I

Evict

        --告诉HN, 当前RN中的这条cacheline不再进行缓存;

        --类似于CPU知会HNF某一条cacheline已经被逐出了,本地已经没有了;

        --RN在发送之前,会先将状态调整到I;

三、CMO (Cache Maintenance Operation)

支持的操作有:

CleanShared

CleanSharedPersist

CleanSharedPersistSep

CleanInvalid.  • MakeInvalid.

步骤如下:

1、The Requester sends a request on the REQ channel

2、The Completer returns a Comp response on the CRSP channel.

3、For the CleanSharedPersistSep transaction the Completer also returns a Persist response to the Requester. The Completer is permitted to combine the Comp and Persist responses into a single CompPersist response.

CleanSharedPersistSep为例:

要求所有CPUdirty数据都写回主存

In this example of CleanSharedPersistSep transaction flow, the Point of Persistence (PoP) is at the SN-F.

1、RN-F1 has the cache line in SC state. RN-F1 responds to the snoop with a snoop response without data.

2、HN-F waits for all snoop responses and then sends a Comp_SC response to the Requester.

3、HN-F sends a CleanSharedPersistSep request to SN-F, only after completing the writing back of all snooped Dirty data, if any, to the SN-F. SN-F responds to the request with Comp

4、SNF sends a Persist response to RN-F0 to indicate that the request has reached the PoP, and data from any prior writes to the same location is pushed to the PoP 

PoP (Point of Persistence) : 系统中用于持久性存储的特定位置或机制。它表示数据在系统中的存储状态,以确保数据在断电或重启后仍然可用。通常是将易失性存储(如cache)复制到非易失性存储(如硬盘

图中,Comp_UC反映了其他master中该cache line的状态

Comp_UC

        1、表明该cache line副本在Requester中至高可以为UC状态(即可以是UCUCESCI)。

        2、不过MakeReadUnique/CleanUnique这两个“Upgrade”的请求则有所差异,SD收到Comp_UC后进入UD状态。这在下文关于MakeReadUnique的描述中可以再次看到。

相应的response还有:

Comp_I

        表明该cache line副本在Requester中最终需为I状态。

Comp_SC

        表明该cache line副本在Requester中至高可以为SC状态(即可以是SCI)。

Comp_UD_PD

        表明将更新Memory的责任传递给Requester,该cache line副本在Requester中至高可以为UD状态(即可以是UDSD)。

对于CleanShared,可能会收到Comp_UCComp_SCComp_ICleanShared用于将其他副本的dirty数据写回,并不会无效化其他副本,所以收到response后缓存行状态不改变。

对于CleanUnique,只会收到Comp_UC。收到时处于I状态(出现I状态的原因是发出CleanUnique后被invalid),则进入UCE;收到时处于SC状态,则进入UC状态;收到时处于SD,则进入UD状态。

对于MakeUnique,只会收到Comp_UC。由于其写一整行,所以最终进入UD状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694454.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

洛谷P3574 [POI2014] FAR-FarmCraft(树形dp)

洛谷 P 3574 [ P O I 2014 ] F A R − F a r m C r a f t (树形 d p ) \Huge{洛谷P3574 [POI2014] FAR-FarmCraft(树形dp)} 洛谷P3574[POI2014]FAR−FarmCraft(树形dp) 文章目录 题意题目说明 思路标程 题目…

使用git生成SSH公钥,并设置SSH公钥

1、在git命令行里输入以下命令 ssh-keygen -t rsa 2、按回车,然后会看到以下字眼 Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa) 例: 3、继续回车,然后会看到以下字眼 Enter…

等保三级云防火墙正版--免费部署满足要求

正版授权内部部署配置授权免费 1、超时退出 2、病毒防护 3、防火墙策略 4、密码复杂度和登录失败处理 5、特征库 点赞关注 私信获取 获取授权 Q 8-5-0-3-4-7-3-3-5

Python--面向对象

面向对象⭐⭐ 1. 面向对象和面向过程思想 面向对象和面向过程都是一种编程思想,就是解决问题的思路 面向过程:POP(Procedure Oriented Programming)面向过程语言代表是c语言面向对象:OOP(Object Oriented Programming)常见的面向对象语言包括:java c g…

C++初阶之模板进阶

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.非类型模板参数 二.模板的特化 2.1引入 2.2全特化 2.3…

盖雅技能发展云,助力制造企业人效合一

制造行业尽管经历多次变革,但企业对人的管理始终是一项高度依赖经验和耗费人力的工作。随着供应链管理和生产设备的自动化、数字化升级,如何将第一生产要素——人,通过数字化的工具融入制造过程的闭环,对企业实现自动化工厂和智能…

【一个糟糕的词:省流】

今日思考,博主分享📝,原文如下, 我最近听到了一个特别糟糕的词叫省流。我甚至认为这个词可以用来衡量一个人的智商啊,我们可以把一个知识简单的分成三部分问题,答案思维方式就是这个答案是怎么推导出来的啊…

解决Vue项目部署到服务器之后前端向后端发送请求报错404的问题(centos使用docker实现nginx的反向代理)

场景重现: 由于现在流行前后端分离的部署方式,但是按照正确方法部署(如何部署可参考:)之后,发现明明前后端都部署好了并且运行成功,但是前端发送的请求都是404。明明在vue项目中配置了跨域的相…

信息系统项目管理师十大管理计划内容概览

目录 1.项目章程2.项目管理计划3.范围管理计划4.需求管理计划5.进度管理计划6.成本管理计划7.质量管理计划8.资源管理计划9.沟通管理计划10.风险管理计划11.采购管理计划12.干系人参与计划 点我去AIGIS公众号查看本文 1.项目章程 项目目标成功标准退出标准关键干系人名单发起人…

SpringCloud系列(23)--手写实现负载轮询算法

前言:在上一篇文章中我们介绍了关于负载轮询算法的原理以及看了源代码,而本章节内容则是着重于我们自己手写一个负载轮询算法 1、分别编写provider-payment8001、provider-payment8002这两个子项目的PaymentController类,增加一个/payment/lb…

手把手教你解决 Hive 的数据倾斜

文章目录 数据倾斜是什么?产生数据倾斜的场景1.空值引发的数据倾斜2.不可拆分的大文件产生的数据倾斜3.数值膨胀引发的数据倾斜4.不同数据类型引发的数据倾斜5.Count(distinct) 引发的数据倾斜6.表 Join 操作时引发数据倾斜7.group by 引发的数据倾斜 解决数据倾斜数…

什么是SSL证书?如何选择SSL证书?

在浏览网站的时候,你会不会有这样一些疑问。 为什么有的网站是http://开头,有的却是https://?它们有什么区别吗? 经常访问的网站,浏览器突然提示“安全证书过期”,提醒你不要浏览该网址? 这一切…

推荐一款自助分析的财务分析软件:奥威BI软件

奥威BI软件是一款支持多维度动态自助分析的软件,预设了智能财务分析方案,提供内存行列计算模型解决财务指标计算难题,界面简洁,以点击、拖曳操作为主,十分适合没有IT背景的财务人做财务分析。因此也经常有人说奥威BI软…

前后端开发入门全攻略:零基础学起

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、前后端开发概览 二、后端开发基础:Flask框架入门 代码案例:Hel…

驱动执行报“Attribute var: Invalid permissions 0665”

问题:执行驱动的时候会报下面这个错误 WARNING: CPU: 0 PID: 123 at fs/sysfs/group.c:61 internal_create_group0x170/0x264() Attribute var: Invalid permissions 0665 问题分析:查看 fs/sysfs/group.c:61的代码,发现是我设置 module_par…

Filter和Interceptor

会话 cookie 服务器自动将cookie响应给浏览器 浏览器接收响应回来的数据 自动将cookie存储在本地, 后续请求当中浏览器将cookie携带到服务器 cookie不能跨域,存储在客户端 session 存储在服务器 token------>JWT 存储在客户端, 服务…

独享IP是原生IP吗?二者有何区别?

原生IP: 原生IP是指由Internet服务提供商(ISP)直接分配给用户的IP地址,这些IP地址通常反映了用户的实际地理位置和网络连接。原生IP是用户在其所在地区或国家使用的真实IP地址,与用户的物理位置直接相关。在跨境电商中…

统计信息和AUTO SQL TUNING任务重合引发的Library Cache Lock血案

一、引言 行里的短信平台,在晚上22:00的时候,突然出现卡顿,卡顿持续1分钟左右,这1分钟内,短信超过30秒才发送成功。因此,对数据库层面开展了一些分析,并且发现了些问题。 二、分析过程 1.查看…

从 0 实现一个文件搜索工具 (Java 项目)

背景 各文件系统下, 都有提供文件查找的功能, 但是一般而言搜索速度很慢 本项目仿照 everything 工具, 实现本地文件的快速搜索 实现功能 选择指定本地目录, 根据输入的信息, 进行搜索, 显示指定目录下的匹配文件信息文件夹包含中文时, 支持汉语拼音搜索 (全拼 / 首字母匹配…

CSS伪类实现input聚焦时,上层div样式改变

CSS伪类实现input聚焦时,上层div样式改变 可以使用:focus-within伪类选择器,它会在div内的任何元素获得焦点时选择该div,明确的是,获得焦点和被点击是不相等的,div能被点击,但是不能获得焦点,也…