CHI协议保序之Compack保序

一致性系统中,使用三种保序方式;

================Completion ack response===================

⭕Completion acknowledgment:
□ 该域段主要是用来,
        □ 决定 RN 发送的 trans,与其他 RN 发送的命令产生的 SNP 之间的顺序;
        □ 在当前 RN 发送的 tans order 之后的命令产生的 snoop,会在当前 RN 的这个 trans  resp 回来之后再到达;
        □ The relative ordering of transactions issued by a Requester, and Snoop transactions caused by
transactions from different Requesters, is controlled by the use of a completion acknowledge, CompAck, response.


⭕read trans 和发送compack 的关系如下:
□ RNF 收到 comp或者respsepdata 或者compdata,或者同时收到respsepdata/datasepresp 之后,发送 compack;
□ HNF, 在发送相同地址的 snoop 之前,需要一直等待 compack;
□ 对于copyback trans,write data 被当作 compack,因此,HNF 在发送相同地址的snoop 出去之       前,必须要等待 Write data;


这种机制保证了,RNF 按收 HNF 发送的 comp resp,和 HNF 发送的访问相同地址的snoop req,是按照 HNF 发送的顺序接收的:这样保证了相同地址的 trans 是按照正确的顺序被观察到:
如果某个 RNF, 除了 ReadNoSop and ReadOnce, 使用了 compack 机制,那么可以保证在这个 RNF 发送compack 之前,不会收到HNF 发送的访问相同地址的 snoop 操作;

RN 设置expcompack field,产生compack 要满足如下要求:
□ 对于除了 ReadNoSnp and ReadOnce*的其他 read, RNE 必须发送 compack;
□ 其实ReadNoSnp and ReadOnce*也可以产生 compack;
□ 对于 StashOnce*, CMO, Atomic, or Evict, 不能产生 compack;
□ RNI/RND 的read trans, 也允许产生 compack; 
□ RNI/RND 的dataless/atomic trans, 不能产生 compack;
□ 保序的 ReadNoSnp 和 ReadOnce*如果需要使用 DMT,那么必须使用 CompAck 响应。
对于写操作,CompAck 只能用于 WriteUnique,writenosop,当这些 trans 有owo保序需求
时;
□ 对于 WriteEvictOrEvict, expcompack 必须设置成 1,表示如果当 conpleter 发送 comp,而不是compdbidresp时,需要发送comack;

□ HN 必须支持所有允许或需要使用 CompAck 的 transactions, SN 不需要支持 CompAck 的使用。
□ HNF/HNI 和 SNF/SNI 通信时,不能发送 compack;

如果没有 compack:
□ 若无 ACK 机制。RN1 正在进行对某个地址的读取操作(不带 Snoop 或者 snoop 已完成),而 RN2 也在对该地址进行读取操作。对于ICN 而言,虽然先收到RN1的Read, 再收到 RN2 的Read,但由于CH 不要求总线保序,所以可能 Snoop 先于 Compdata 到。这样就会出现对于同一个事情而言,RN1和RN2 看到的不同。RN1 因为先前己经进行了 Snoop,所以认为自己是UC。RN2 因为在 Snoop 的时候看到 RNI 还是没有该地址的cache,也认为自己是 UC。从而产生了不一致。
□ 而增加 ConpAck 机制后,ICN 在收到 CompAck 之后才能发布对同一地址/地址范围的Snoop 访问,从而保证来自一个 Requester 的 transactions 与不同 Requester 的transactions 导致的 snoop transaction 的相对顺序。
□ 这样就保证了任意一个RN,在收到comap 响应,到发送compack之间的时间段内,不会收到其他 RN 发送的对这个相同地址的snp;
□ For WriteNoSnp and Write Unigue transactions that require a CompAck message, a Request Node sends the CompAck after receiving the Comp, DBIDResp, or CompDBIDResp response.


一些compack 的使用命令和限制:
Ordering semantics of RespSepData and DataSepResp.
几个响应/数据,对应的含义:
1. RN 收到第一个datasepresp,就可以认为,这笔rcad trans 已经被所有人都 observed了,因为这个时候没有什么其他的操作可以来修改己经收到的读数据:
2. RN 收到respsepdata from home,可以认为 read tans 已经道道了保序点,并且在此之后,不会收到任何该地址的snoop,但是不能保证这个时刻点,该trans 对应的 snoop 已经完成了:对于HN来讲,在发送respsepdata 之前,必须保证相同地址的snoop 已经完成了:
3. 当RN 发送cornpack 时,表明该RN 己经可以接受任何 RN 发出的 trans 产生的相同地址的snoop; 
□ the CompAck must be sent after the RespSepData response is received. It is permitted, but not required, to wait for the DataSepResp response before the CompAck is given.

□ For ReadOnce and ReadNoSnp transactions with an ordering requirement, that is, Order field is set to Ob10 or Ob11 and ExpCompAck field is asserted, it is required that the CompAck is given only after both DataSepResp and RespSepData responses are received.
□ The Requester must wait to receive both RespSepData and DataSepResp before issuing another request to the same address
□ It is required that CompAck must not be given when only DataSepResp is received.

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

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

相关文章

Scoop安装配置MySQL最详细版(含Navicat连接MySQL)

这是在DataWhale的第一次打卡文章,也是时隔三年再动笔,希望持续下去。 我没想到花费了一整天的时间来配置我的写作环境(TyporaPicGo腾讯云oss),因为我不想我的文字局限在某个平台上,很被动,想要…

python识别极验4滑块验证码实战

闲得无聊,趁着休息研究了一下极验4滑块验证码的安全性,是否有机器识别、自动化拖拽的可能性。首先看一下效果 如何识别验证码 1、下载图片 下载图片可以参考博客《采集极验4滑块验证码图片数据》 2、标记图片 3、标记滑动距离 实现代码 __author__ &…

Kotlin~Observer观察者模式

概念 定义一对多的依赖关系,让多个观察者同时监听一个主题对象。 角色介绍 Subject:主题,也称被观察者,它是具有状态的对象维护着一个观察者列表。提供添加、删除和通知观察者的方法。ConcreteSubject:具体主题&…

如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流

如何在armv6 armv6 armv8 aarch64 嵌入式板子上面安装nginx服务器支持推送H265的视频流 开始吧 一,准备工作二,configure时遇到的出错问题1、checking for C compiler … found but is not working2,error: can not detect int size3&#xf…

【C++ 程序设计】第 1~9 章:常见知识点汇总

目录 一、C 语言简介 二、面向对象的基本概念 三、类和对象进阶 四、运算符重载 五、类的继承与派生 六、多态与虚函数 七、输入/输出流 八、文件操作 九、函数模板与类模板 一、C 语言简介 知识点名称内容C语言的发展简史★★1. C 语言是 C 语言的前身 &…

Flink写入数据到Doris

文章目录 1.Doris建表2.Doris依赖3.Bean实体类4.Doris业务写入逻辑5.测试写入类6.发送数据 1.Doris建表 Doris中建表 CREATE TABLE IF NOT EXISTS demo.user (id INT NOT NULL,name VARCHAR(255),age INT ) DISTRIBUTED BY HASH(id) PROPERTIES ("replication_num&qu…

顺丰基于 Flink CDC + Hudi 推进实时业务落地

摘要:本文整理自大数据研发高级工程师唐尚文,在 Flink Forward Asia 2022 数据集成专场的分享。本篇内容主要分为三个部分: 应用场景 实践与优化 未来规划 点击查看原文视频 & 演讲PPT 一、应用场景 1.1 顺丰集团业务概览 顺丰除了大家…

宝塔的Redis绑定IP

宝塔安装Redis 软件商店搜索Redis 连接宝塔面板的redis服务器失败的解决办法 检查Linux是否放行6379端口修改Redis绑定IP检查阿里云/腾讯云的防火墙策略是否放行6379端口 1.bind 127.0.0.1 修改为 bind 0.0.0.0 127.0.0.1 表示只允许本地访问,无法远程连接 0.0.0.0 表…

51单片机--AT24C02数据存储

文章目录 存储器的介绍AT24C02I2C总线I2C时序结构AT24C02数据帧AT24C02数据存储实例 存储器的介绍 存储器是计算机系统中的一种重要设备,用于存储程序和数据,它可以通过电子、磁性介质等技术来记录和保持数据。在这里,主要介绍的是随机存储器…

TableGPT: Towards Unifying Tables, Nature Language and Commands into One GPT

论文标题:TableGPT: Towards Unifying Tables, Nature Language and Commands into One GPT 论文地址:https://github.com/ZJU-M3/TableGPT-techreport/blob/main/TableGPT_tech_report.pdf 发表机构:浙江大学 发表时间:2023 本文…

BeanFactory容器的构建和使用示例

BeanFactory容器的实现流程: BeanFactory是Spring框架中的一部分,它提供了IoC(控制反转)的实现机制。下面是BeanFactory的IoC实现过程: 定义Bean定义:首先,我们需要在配置文件中定义Bean的定义…

详解分类指标Precision,Recall,F1-Score

文章目录 1. Precision(精度)2. Recall(召回率)3. F1-Score4. Accuracy(准确率)5. P-R 曲线6. TPR、FPR6.1 TPR(真正率)6.2 FPR(假正率) 7. ROC曲线8. AUC曲线…

vscode使用g++编译.c文件或.cpp文件

vscode是一个跨平台、轻量级、插件非常丰厚的IDE,这里介绍在vscode里使用g来编译.cpp文件。g也叫GCC, 在Window中,是使用MinGW方式实现g的,它分为32位和64位2个版本,其中,MinGW-64是64位的,MinGW-32是32位的…

linux学成之路(基础篇)(二十)rsync服务器

目录 前言 一、概述 监听端口 二、特点 快捷 安全 三、数据的同步方式 四、rsync传输方式 本地传输 远程传输 守护进程 五、命令 作为远程命令 作为rsync服务 选项 六、配置文件 全局配置 模块配置 守护进程传输 七、rsyncinotfy实时同步 一、服务端 二、…

力扣奇遇记 [第一章]

文章目录 😦第一题:拿下LeetCode1769. 移动所有球到每个盒子所需的最小操作数学习内容:LeetCode1769. 移动所有球到每个盒子所需的最小操作数🙈思路分析:💖代码产出: 😦第二题&#…

优雅的设计测试用例

⭐️前言⭐️ 入职以后接触到了公司的具体业务,提升了设计测试用例的能力,于是沉淀出这篇文档与大家分享。 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获&…

【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》 🌝每一个不曾起舞的日子,都是对生命的辜负。 目录 前言: 一、隐式类型转换 (一)整型提升的意义…

后端(四):博客系统项目

咱们在这里实现的是后端项目,前端代码就提一提,不全做重点介绍,在开始讲解这个博客系统项目之前,我们先看看这个项目的前端界面: 登录界面: 个人主页: 博客详情页: 写博客页&#x…

再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维护到2019年8月1日。 1.5.x 将会…

【Java】重写compareTo()方法给对象数组排序

我们先给一个数组排序,我们肯定用的是Arrays.sort()方法: public class test2 {public static void main(String[] args) {int[] arr{3,5,4,6,9,8,1};System.out.println(Arrays.toString(arr));System.out.println("---------");Arrays.sort…