CHI Read传输——CHI(3)

目录

一、Read操作概览

二、DMT(Direct Memory Transfer)

三、DCT (Direct Cache Transfer)

四、without Direct Data Transfer

五、ReadNoSnp and ReadOnce* structure with DMT


本篇我们来介绍一下CHI传输类型中的Read

一、Read操作概览

read操作有以下几种:

名称

描述

ReadNoSnp, ReadNoSnpSep

对不可监听的(non-snoopable)地址区域的读取请求。(其余都是对可监听snoopable)地址区域的读取请求。

ReadNoSnp支持RN-ICNICN-SN的通信

ReadNoSnpSep 仅支持ICN-SN的通信

ReadOnce

只是读取一次数据临时用一下,无需保存到本地的cache中。

ReadOnceCleanInvalid

ReadOnce后,期望是将所有的cacheline无效掉(不强制),状态变为invalid,如果cachelinedirty,则需要将dirty数据写回内存。

ReadOnceMakeInvalid

ReadOnce后,期望是将所有的cacheline无效掉,状态变为invalid,如果cachelinedirty,直接丢弃。

ReadClean

返回的数据必须是clean的(UCSC

ReadNotSharedDirty

返回的数据不能是SharedDirty的状态,可以是UCUDSC

ReadShared

返回的数据可以是UCUDSCSD

ReadUnique

返回的数据可以是UCUD

ReadPreferUnique

返回的数据最好是unique,但是shared也行

MakeReadUnique

返回的数据是unique, 典型的用法是,Requester拥有cacheline,并希望获得写cache line的权限。

其中ReadNoSnp, ReadNoSnpSep用于对不可监听区域的访问 ,例如访问main memory

ReadNoSnpReadOnce可以将读到的数据保留在local cache,但该份数据不再保持一致性

ReadOnceCleanInvalid相对ReadOnce的优点是如果cacheline的数据在近期不会使用,该命令可以将cacheline数据刷到memory去,从而提高cache利用率;

ReadOnceMakeInvalid相对ReadOnce的优点是如果cacheline的数据以后都不会使用,该命令可以将cacheline的数据失效掉,从而提高cache利用率且减少不必须要的WriteBackmemory操作。

对于可监听(snoopable)的读操作,可以由DMT和DCT两种方式完成

二、DMT(Direct Memory Transfer)

是指,SN直接将数据返回给Requester

它支持的操作有:

ReadClean

• ReadNotSharedDirty

• ReadShared.

ReadUnique

ReadPreferUnique

MakeReadUnique.

步骤如下:

1、Requester通过REQ通道发送一个snoopableread request

2、ICN通过REQ通道发送一个ReadNoSnp给相应的SN

3、SN,作为completer,在RDAT通道上,使用CompData将读取的数据和任何关联的事务响应直接转发给的请求者,协议规定,completer必须在接收request之后才能发送CompData

4、Requester通过SRSP通道使用CompAck返回一个响应给ICN,表示交易完成。协议规定requester至少需要接收到一个CompData包以后才能发送CompAck

以ReadShare操作为例,我们来看一下具体的流程

1、RN-F0 sends a Read request to HN-F

2、HN-F sends a Snoop request to RN-F1.

3、HN-F sends a Read request to SN-F after receiving the Snoop response from RN-F1, which guarantees that RN-F1 has not responded with data.  

4、SN-F sends a Data response directly to RN-F0.

5、RN-F0 sends CompAck to HN-F as the Request is ReadShared and requires CompAck to complete the transaction.

RN-F0在向HN发送读请求后,HN向其他的RN发送snoop,查询该cache line在其他RN中的状态

RN-F1返回的response是SnpResp_I,对Snoop的Response,其结果是I,即RN-F1中存在需查询的cache line,但是该cache line中的数据是无效的。

因此,HN需要去main memory(SN)中去读

读到的数据直接返回给RN-F0,不必经过HN

由于数据返回后,只有RN-F0会保存,因此该数据的状态是UC(Compdata_UC)

三、DCT (Direct Cache Transfer)

与DMT向对立的是DCT,区别在于,DCT是其它RN-F直接返回数据给原始Requester

它与DMT支持的操作相同:

ReadClean

• ReadNotSharedDirty

• ReadShared.

ReadUnique

ReadPreferUnique

MakeReadUnique.

两者的区别再有,DMT从其他RN中读取数据失败,从而从SN中读取数据返回给RN;而DCT操作,在其他RN中成功读取到了有效数据

步骤如下:

1、Requester过REQ通道发送一个snoopableread request

2、ICN通过SNP通道发送一个Snp[*]FwdrequestRN-F

3、该RN-F作为completer,在RDAT通道上,使用CompData将读取的数据和任何关联的事务响应直接转发给的请求者;

4、该RN-F通过SRSP通道,返回一个SnpRespFwdedICN,表示已经把读数据发给了requester。协议规定,completer必须在接收snoop之后才能发送CompData;

5、Requester通过SRSP通道使用CompAck返回一个响应给ICN,表示交易完成。协议规定,一旦接收到读取数据的第一个数据包,就可以发送CompAck

还是以ReadShare操作为例,我们来看一下具体的流程

1、RN-F0 sends a Read request to HN-F

2、HN-F sends a SnpSharedFwd, a Forwarding Snoop request to RN-F1.

3、RN-F1 cache line state transitions from UC to SC.

4、RN-F1 forwards CompData_SC response to RN-F0.

5、RN-F1 also sends a SnpResp_SC_Fwded_SC Snoop response to HN-F that indicates:

        (1)The data was forwarded to the Requester.

        (2)The final state of the cache line in the snooped cache is SC.

6、After receiving the CompData response RN-F0 sends a CompAck response to HN-F to conclude the transaction.

我们可以看到,HN在snoop RN-F1后,RN-F1表示它有想要访问的数据,此时RN-F1中相应的cache line状态是UC;

那么当它把该数据传输给RN-F0后,该数据就不唯一了,cache line状态需要从UC转变为SC;

同时,RN-F1要告诉HN,它已经将数据发送给RN-F0了,如果是snoop directory的话,HN还要将directory进行更新

RN-F0接收到的数据,也是它和RN-F1同时保存的,因此cache line状态是SC

在上图中,我们看到“SnpResp_SC_Fwded_SC”,它是什么意思呢?

这是一种response,Snoopee发送数据给Requester,但不需要发送数据给Home,则发送该类型的snoop responseHome,指明被snoop后的状态和forwardRequester的数据状态。

同类型的还有:

SnpResp_I_Fwded_I
snoop cache line 处于 I 状态;
I 状态 Forward 数据给 Requester 。(即, Requester 收到 CompData_I
SnpResp_I_Fwded_SC
snoop cache line 处于 I 状态;
SC 状态 Forward 数据给 Requester 。(即, Requester 收到 CompData_SC
SnpResp_I_Fwded_UD_PD
snoop cache line 处于 I 状态;
UD 状态 Forward 数据给 Requester ,更新 Memory 的责任传递给了 Requester
SnpResp_SC_Fwded_SC
snoop cache line 处于 SC 状态;
SC 状态 Forward 数据给 Requester

不同的response由不同的Opcode来表示,例如:

我们看到,DCT和DMT在HNsnoop RN时,分别用了两种操作:SnpSharedFwd, SnpShared

这两种名称的操作执行的内容是一致的:Snoop request to obtain a copy of the cache line in Shared state while leaving any cached copy in Shared state,and must not leave the cache line in Unique state.

区别在于SnpSharedFwd is permitted to be only sent to one RN-F.

四、without Direct Data Transfer

Requester所得到的数据可以由HN提供

它与DMT、DCT支持的操作相同:

ReadClean

• ReadNotSharedDirty

• ReadShared.

ReadUnique

ReadPreferUnique

MakeReadUnique.

步骤如下:

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.

以ReadClean操作为例,我们来看一下具体的流程

1、RN-F1 has the cache line in UDP state. RN-F1 responds to the snoop with a snoop response with partial cache line data and passes responsibility for updating memory.

2、HN-F waits for the data response from memory, merges the partial snoop response data with the data response from memory, and sends the resultant data to the Requester.

3、HN-F updates memory as the responsibility for updating memory is not passed on to the Requester.

readclean、readshared区别:readclean返回的数据,必须是clean的,例如:UCSC

Readshared返回的数据,可以是dirty的,例如:UCUDSC,不能是SD

五、ReadNoSnp and ReadOnce* structure with DMT

ReadNoSnp,ReadOnce*它们的共同点是非snoopable,但是ReadOnce*可以snooping其他master

ReadOnce* DCT ,但是ReadNoSnp没有

支持的操作:

ReadNoSnp,    

ReadOnce,    

ReadOnceCleanInvalid

ReadOnceMakeInvalid

步骤如下:

1、Requester 发送request

2、如果requestOrder字段表示需要ordering,则当order建立时,需要返回ReadReceipt (什么是order建立时?这里买个管关子,后面的文章会解释)

3、ICN向SN发送ReadNoSnp请求

4、如果ReadNoSnp requestOrder[1:0]==0b01,则SN返回ReadReceipt

5、作为CompleterSN,在RDAT channel上将opcode CompDate的读数据、response返回给requester

6、如果ExpCompAck==1,则Requester必须返回CompAck,表示传输完成(当接收到读数据的第一个数据包时,就可以返回CompAck

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详解CSS(二)

目录 1.背景属性 1.1背景颜色 1.2背景图片 1.3背景平铺 1.4背景位置 1.5背景尺寸 2.圆角矩形 3.元素的显示模式 3.1行内元素/内联元素(Inline element) 3.2块级元素(Block-level element) 3.3行内块元素(In…

css-垂直居中的几种写法

图示 1、使用line-height属性(当div有固定高度时) 2、使用flexbox布局

AGV与智能仓储的应用案例

背景介绍 该企业的智能工厂专注于高端家用电器的生产与研发,包括电子坐便盖、电子坐便器、吸尘器、洗碗机等,覆盖8条关键产线。面对日益增长的市场需求和生产节奏的加快,传统的物流方式已无法满足高效、精准的生产要求。为此,企业…

报名倒计时!「飞天技术沙龙-CentOS 迁移替换专场」参会指南

为帮助广大用户诊断 CentOS 迁移替换过程中的疑难杂症,「飞天技术沙龙-CentOS 迁移替换专场」将于 5 月 29 日(周三)在北京举办,将围绕如何在确保服务的连续性和稳定性的前提下实现平滑迁移及如何最大限度地利用现有资源前提下确保…

【LeetCode】【9】回文数(1047字)

文章目录 [toc]题目描述样例输入输出与解释样例1样例2样例3 提示进阶Python实现 个人主页:丷从心 系列专栏:LeetCode 刷题指南:LeetCode刷题指南 题目描述 给一个整数x,如果x是一个回文整数,返回true;否…

春秋云境CVE-2018-7422

简介 WordPress Plugin Site Editor LFI 正文 1.进入靶场 2.漏洞利用 /wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path/../../../../../../flag看别人wp做的。不懂怎么弄的,有没有大佬讲一下的

科技引领未来:高速公路可视化

高速公路可视化监控系统利用实时视频、传感器数据和大数据分析,通过图扑 HT 可视化展示交通流量、车速、事故和路况信息。交通管理人员可以实时监控、快速响应突发事件,并优化交通信号和指挥方案。这一系统不仅提高了道路安全性和车辆通行效率&#xff0…

由于找不到d3dx9_39.dll,无法继续执行代码的5种解决方法

在现代科技发展的时代,电脑已经成为我们生活中不可或缺的一部分。然而,由于各种原因,我们可能会遇到一些电脑问题,其中之一就是“d3dx9_39.dll丢失”。这个问题可能会导致我们在运行某些游戏或应用程序时遇到错误提示,…

第53期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

07_Servlet

Servlet 一 Servlet简介 1.1 动态资源和静态资源 静态资源 无需在程序运行时通过代码运行生成的资源,在程序运行之前就写好的资源. 例如:html css js img ,音频文件和视频文件 动态资源 需要在程序运行时通过代码运行生成的资源,在程序运行之前无法确定的数据,运行时动态生成…

洛谷 CF1209D Cow and Snacks

题目来源于:洛谷 题目本质:并查集 解题思路: 我们以每种化为一个点,以每个客人喜欢的两朵花给两朵花连一条无向边。则会出现一定数目的连通块,连通块总个数为 ans。 对每个连通块进行分析:第一个客人买走…

重大新闻! AUS GLOBAL 上线积分商城

AUS Global Mall:概述 AUS Global Mall是由AUS Global ,一家外汇经纪公司推出的令人兴奋的新在线商店。作为一个尊贵的客户,你现在可以获得广泛的产品和服务,可以通过积分兑换。通过AUS Global Mall,我们旨在为您提供…

软考高项 各章节知识点【细】

文章目录 前五章项目管理概论项目立项管理项目整合管理范围管理进度管理成本管理质量管理资源管理沟通管理风险管理采购管理干系人管理绩效域配置与变更管理招投标、政府采购 前五章 数字经济是继农业经济、工业经济之后的主要经济形态,是以数据资源为关键要素&…

深入解析淘宝详情api接口

一、淘宝详情api接口简介 淘宝详情api接口是淘宝开放平台提供的一种商品详情数据接口,允许开发者通过调用该接口获取淘宝平台上商品的详细信息,包括商品标题、描述、价格、库存、销量、评价等。联讯数据该接口为开发者提供了丰富的商品数据,…

RabbitMQ 之 死信队列

目录 ​编辑一、死信的概念 二、死信的来源 三、死信实战 1、代码架构图 2、消息 TTL 过期 (1)消费者 (2)生产者 (3)结果展示​编辑 3、队列达到最大长度 (1)消费者 &…

雷军-2022.8小米创业思考-8-和用户交朋友,非粉丝经济;性价比是最大的诚意;新媒体,直播离用户更近;用真诚打动朋友,脸皮厚点!

第八章 和用户交朋友 2005年,为了进一步推动金山的互联网转型,让金山的同事更好地理解互联网的精髓,我推动了一场向谷歌学习的运动,其中一个小要求就是要能背诵“谷歌十诫”。 十诫的第一条就令人印象深刻:以用户为中…

rfid资产管理系统如何帮助医院管理耗材的

RFID资产管理系统可以帮助医院管理耗材,提高耗材管理的效率和准确性。以下是它可以发挥作用的几个方面: 1. 实时跟踪和定位:使用RFID标签附加在耗材上,可以实时跟踪和定位耗材的位置。医院可以通过系统查询耗材的实时位置&#xf…

“AI黏土人”一夜爆火,图像生成类应用应该如何长期留住用户?

文章目录 最近大火的“AI黏土人”,一股浓浓的《小羊肖恩》风。 凭借这这种搞怪的风格,“AI黏土人”等图像生成类应用凭借其创新技术和市场需求迅速崛起并获得巨大关注。然而,要保持用户黏性并确保长期发展,这些应用需要采取一系列…

Python爬虫项目实战:百度任意图片抓取

大家好,我是南枫,这篇文章我将给大家介绍如何使用Python爬虫来达到想爬哪个明星图片就能爬下来的效果,那我们接下来看看如何实现的吧。 导入Python的requests库和re库。requests库用于发送HTTP请求,而re库用于处理正则表达式。 通…

爬虫学习1

爬虫网站:All products | Books to Scrape - Sandbox 豆瓣网:豆瓣电影 Top 250 我们需要安装一个第三方库来解析爬取到的html内容,终端输入pip install bs4,安装成功后引入需要的模块 我们先爬取所有的价格 import requests from bs4 import…