当前位置: 首页 > news >正文

CHI dataless 传输——CHI(4)

上篇介绍了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状态。

相关文章:

CHI dataless 传输——CHI(4)

上篇介绍了read的操作类型,本篇我们来介绍一下dataless 目录 一、dataless操作概览 二、Non-CMO (Non-Cache Maintenance Operation) 1、CleanUnique 2、StashOnce and StashOnceSep 3、Evict 三、CMO (Cache Maintenance Operation) 一、dataless操作概览 名…...

vue3第三十节(vue3 vite中使用sass)

引言:什么是Sass? Sass(Syntactically Awesome Style Sheets)是一种CSS预处理器,它扩展了CSS的功能,提供了更高级的语法和特性,例如变量、嵌套、混合、继承和颜色功能等,这些特性可以帮助开发…...

blender 烘焙渲染图片,已经导出fbx,导出贴图。插件生成图片

1.新建一个模型。选择资产浏览器的材质,并拖动到模型身上,如下图。资产浏览器的材质可以网上找。 2.打开着色器面板。正下方着色器窗口中,点击空白取消选择,然后右击-添加-着色器-原理化BSDF,右击-添加-纹理-图像纹理。…...

ASO行业面临洗牌,苹果应用商店加搜索广告!

苹果公司全球市场营销高级副总裁菲尔席勒(Phil Schiller),在全球开发者大会开幕前(WWDC)透露了一些应用商店方面的消息。重点包括:1.应用商店搜索中加入广告;2.应用审核加快;3.新的商业模式。 一、 Search Ads搜索广告 这是最令人惊讶的改变,苹果在App Store平台的搜索结果中加…...

Labelme自定义数据集COCO格式【实例分割】

参考博客 labelme标注自定义数据集COCO类型_labelme标注coco-CSDN博客 LabelMe使用_labelme中所有的create的作用解释-CSDN博客 1制作自己的数据集 1.1labelme安装 自己的数据和上面数据的区别就在于没有.json标签文件,所以训练自己的数据关键步骤就是获取标签文…...

【网络安全】Linux 应急响应-溯源-系统日志排查知识点

Linux 应急响应-溯源-系统日志排查知识点汇总 1. 查看当前已经登录到系统的用户 (w 命令) w2. 查看所有用户最近一次登录 (lastlog 命令) lastlog lastlog | grep -v "Never logged in"3. 查看历史登录用户以及登录失败的用户 (last 和 lastb 命令) last lastb4. …...

Spark项目实训(一)

目录 实验任务一:计算级数 idea步骤分步: 完整代码: linux步骤分布: 实验任务二:统计学生成绩 idea步骤分布: 完整代码: linux步骤分步: 实验任务一:计算级数 请…...

爬虫基础1

一、爬虫的基本概念 1.什么是爬虫? 请求网站并提取数据的自动化程序 2.爬虫的分类 2.1 通用爬虫(大而全) 功能强大,采集面广,通常用于搜索引擎:百度,360,谷歌 2.2 聚焦爬虫&#x…...

vlan综合实验

1、实验拓扑 2、实验要求 1、pc1和pc3所在接口为access;属于vlan 2; pc2/pc4/pc5/pc6处于同一网段;其中pc2可以访问pc4/pc5/pc6; pc4可以访问pc6;pc5不能访问pc6; 2、pc1/pc3与pc2/pc4/pc5/pc6不在同一网段; 3、所有pc通过DHC…...

如何使用ffmpeg 实现10种特效

相关特效的名字 特效id 特效名 1 向上移动 2 向左移动 3 向下移动 4 颤抖 5 摇摆 6 雨刷 7 弹入 8 弹簧 9 轻微跳动 10 跳动 特效展示(同时汇总相关命令) pad背景显示 pad背景透明 相关命令(一会再讲这些命令,先往下看) # 合成特效语音 ffmpeg -y -loglevel erro…...

C语言如果变量全部在全局内存空间会怎么样

结论先行 应该根据内存使用的生命周期,选择合适的内存空间应该尽量使用连续内存如果不想在设计封装性上付出太多代价,全部放入全局空间也比较可取 空间类型特点全局空间生命周期最久,空间连续,变量分配紧致,但存在浪…...

【YOLO改进】换遍MMPretrain主干网络之ConvNeXt-Tiny(基于MMYOLO)

ConvNeXt-Tiny ConvNeXt-Tiny 是一种改进的卷积神经网络架构,其设计目的是在保持传统卷积神经网络优势的同时,借鉴了一些Transformer架构的成功经验。 ConvNeXt-Tiny 的优点 架构优化: ConvNeXt-Tiny 对经典ResNet架构进行了多种优化&#…...

【数据库】MySQL

文章目录 概述DDL数据库操作查询使用创建删除 表操作创建约束MySqL数据类型数值类型字符串类型日期类型 查询修改删除 DMLinsertupdatedelete DQL基本查询条件查询分组查询分组查询排序查询分页查询 多表设计一对多一对一多对多设计步骤 多表查询概述内连接外连接 子查询标量子…...

JVM运行时内存:垃圾回收器(Serial ParNew Parallel )详解

文章目录 1. 查看默认GC2. Serial GC : 串行回收3. ParNew GC:并行回收4. Parallel GC:吞吐量优先 1. 查看默认GC -XX:PrintCommandLineFlags:查看命令行相关参数(包含使用的垃圾收集器)使用命令行指令:ji…...

The Missing Semester of Your CS Education(计算机教育中缺失的一课)

Shell 工具和脚本(Shell Tools and Scripting) 一、shell脚本 1.1、变量赋值 在bash中为变量赋值的语法是foobar,访问变量中存储的数值,其语法为 $foo。 需要注意的是,foo bar (使用空格隔开)是不能正确工作的&…...

如何为ChatGPT编写有效的提示词:软件开发者的指南

作为一名软件开发者,特别是使用Vue进行开发的开发者,与ChatGPT等AI助手高效互动,可以极大地提升你的开发效率。本文将深入探讨如何编写有效的提示词,以便从ChatGPT中获取有用的信息和帮助。 1. 明确目标 在编写提示词之前&#…...

angular插值语法与属性绑定

在 Angular 中&#xff0c;您提供的两种写法都是用来设置 HTML 元素的 title 属性&#xff0c;但它们的工作方式有所不同&#xff1a; 插值语法 (Interpolation) <h1 title"{{ name }}">我的名字</h1> 属性绑定 (Property Binding) <h1 [title]&q…...

Python ❀ 使用代码解决今天中午吃什么的重大生存问题

1. 环境安装 安装Python代码环境参考文档 2. 代码块 import random# 准备一下你想吃的东西 hot ["兰州拉面", "爆肚面", "黄焖鸡", "麻辣香锅", "米线", "麻食", "羊肉泡馍", "肚丝/羊血汤&qu…...

做抖音小店需要清楚的5个核心点!

大家好&#xff0c;我是喷火龙。 不管你是在做抖音小店&#xff0c;还是在做其他的电商平台&#xff0c;如果已经做了一段时间了&#xff0c;但还是没有拿到什么结果&#xff0c;我所指的结果不是什么大结果&#xff0c;而是连温饱都解决不了&#xff0c;甚至说还在亏钱。 有…...

文件流下载优化:由表单提交方式修改为Ajax请求

如果想直接看怎么写的可以跳转到 解决方法 节&#xff01; 需求描述 目前我们系统导出文件时&#xff0c;都是通过表单提交后&#xff0c;接收文件流自动下载。但由于在表单提交时没有相关调用前和调用后的回调函数&#xff0c;所以我们存在的问题&#xff0c;假如导出数据需…...

基础3 探索JAVA图形编程桌面:逻辑图形组件实现

在一个宽敞明亮的培训教室里&#xff0c;阳光透过窗户柔和地洒在地上&#xff0c;教室里摆放着整齐的桌椅。卧龙站在讲台上&#xff0c;面带微笑&#xff0c;手里拿着激光笔&#xff0c;他的眼神中充满了热情和期待。他的声音清晰而洪亮&#xff0c;传遍了整个教室&#xff1a;…...

前后端部署笔记

windows版&#xff1a; 如果傻呗公司让用win电脑部署&#xff0c;类似于我们使用笔记本做局域网服务器&#xff0c;社内使用。 1.安装win版的nginx、mysql、node、jdk等 2.nginx开机自启参考Nginx配置及开机自启动&#xff08;Windows环境&#xff09;_nginx开机自启动 wind…...

设计模式9——适配器模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 适配器模式&#xff08;Adapte…...

一文了解基于ITIL的运维管理体系框架

本文来自腾讯蓝鲸智云社区用户&#xff1a;CanWay ITIL&#xff08;Information Technology Infrastructure Library&#xff09;是全球最广泛使用的 IT 服务管理方法&#xff0c;旨在帮助组织充分利用其技术基础设施和云服务来实现增长和转型。优化IT运维&#xff0c;作为企业…...

Web前端开发技术-格式化文本 Web页面初步设计

目录 Web页面初步设计 标题字标记 基本语法&#xff1a; 语法说明&#xff1a; 添加空格与特殊符号 基本语法&#xff1a; 语法说明: 特殊字符对应的代码: 代码解释&#xff1a; 格式化文本标记 文本修饰标记 计算机输出标记 字体font标记 基本语法&#xff1a; 属…...

Windows下部署Seata1.5.2,解决Seata无法启动问题

目录 1. 版本说明 2. Windows下部署Seata1.5.2 2.1 创建回滚日志表undo_log 2.2 创建Seata服务端需要的四张表 2.3 在nacos创建seata命名空间&#xff0c;添加seataServer.yml配置 2.4 修改本地D:/tool/seata-server-1.5.2/seata/conf/applicaltion.yml文件 2.5 启动Seat…...

我加入了C++交流社区

最近&#xff0c;我决定加入了一个C交流社区&#xff0c;这是一个专注于C编程语言的在线平台。加入这个社区的初衷是为了提升我的编程技能&#xff0c;与其他对C感兴趣的人交流经验和知识。 加入这个社区后&#xff0c;我发现了许多有趣的讨论和资源。每天都有各种各样的话题&…...

Vue从入门到实战Day11

一、为什么要学Vue3 Vue3官网&#xff1a;简介 | Vue.js 1. Vue3的优势 2. Vue2选项式API vs Vue3组合式API 示例&#xff1a; 二、create-vue搭建Vue3项目 1. 认识create-vue create-vue是Vue官方新的脚手架工具&#xff0c;底层切换到了vite(下一代构建工具)&#xff0c;为…...

day15|各种遍历的应用

相关题目&#xff1a; 层次遍历会一打十 反转二叉树 对称二叉树 层次遍历会一打十 自底向上的层序遍历 实现思路&#xff1a;层次遍历二叉树&#xff0c;将遍历后的结果revers即可 public List<List<Integer>> levelOrderBottom(TreeNode root) {List<List&l…...

第12周作业--HLS入门

目录 一、HLS入门 二、HLS入门程序编程 创建项目 1、点击Vivado HLS 中的Create New Project 2、设置项目名 3、加入文件 4、仿真 3、综合 一、HLS入门 1. HLS是什么&#xff1f;与VHDL/Verilog编程技术有什么关系? HLS&#xff08;High-Level Synthesis&#xff0c…...