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.

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

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

相关文章

MySQL存储过程——系统变量

1.存储过程中的变量 1.1 查看系统变量 查看所有的系统变量 show variables;查看会话级别的系统变量 show session variables;查看会话和auto相关的变量 show session variables like auto%;查看全局的和auto相关变量 show global variables like auto%;查看某一…

R语言贝叶斯METROPOLIS-HASTINGS GIBBS 吉布斯采样器估计变点指数分布分析泊松过程车站等待时间...

原文链接:http://tecdat.cn/?p26578 指数分布是泊松过程中事件之间时间的概率分布,因此它用于预测到下一个事件的等待时间,例如,您需要在公共汽车站等待的时间,直到下一班车到了(点击文末“阅读原文”获取…

ext4 - delay allocation数据结构

概述 延迟分配delay allocation是ext4非常重要的特性,启用该特性write系统将用户空间buffer写入内存page cache中即返回,此时也不会真正进行磁盘block分配,而是延迟到磁盘回写时(比如dirty ratio达到一定值,定时刷新&…

【华为c# OD机考参考答案】01---IPv4地址转换成整数

题目 1、题目 01---IPv4地址转换成整数2、解图思路 1、IP地址转为二进制 2、二进制转十进制 3、注意事项 1、IP地址的范围判断 2、空字符串判断 3、非法字符判断 4、考点 1、string的split 、convert等相关用法 2、正则表达式 3、进制转换 4、理解32位整数的意思 5、代码 判…

【NOSQL】MongoDB

MongoDB MongoDB简介体系结构Linux系统中的安装启动和连接(1)先到官网下载压缩包——>解压——>重命名新建几个目录,分别用来存储数据和日志:新建并修改配置文件官网下载MongoDB Compass MongoDB简介 MongoDB是一个开源、高…

C# List 详解二

目录 5.Clear() 6.Contains(T) 7.ConvertAll(Converter) ,toutput> 8.CopyTo(Int32, T[], Int32, Int32) 9.CopyTo(T[]) 10.CopyTo(T[], Int32) C# List 详解一 1.Add(T),2.AddRange(IEnumerable),3.AsReadOnly()&…

Matlab的GUI设计

文章目录 AppDesigner各个版本的特点mlapp文件基本格式AppDesigner的回调函数常见控件的属性MVC模式MVC模式设计GUIMVC简单使用 其他让app designer置顶将Guide的GUI导出为m文件将app编译为exe将app中的多个控件组合在一起 AppDesigner 20200328 各个版本的特点 在2017b版本中…

【JavaEE】Spring中注解的方式去获取Bean对象

【JavaEE】Spring的开发要点总结(3) 文章目录 【JavaEE】Spring的开发要点总结(3)1. 属性注入1.1 Autowired注解1.2 依赖查找 VS 依赖注入1.3 配合Qualifier 筛选Bean对象1.4 属性注入的优缺点 2. Setter注入2.1 Autowired注解2.2…

21matlab数据分析牛顿插值(matlab程序)

1.简述 一、牛顿插值法原理 1.牛顿插值多项式   定义牛顿插值多项式为: N n ( x ) a 0 a 1 ( x − x 0 ) a 2 ( x − x 0 ) ( x − x 1 ) ⋯ a n ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) N_n\left(x\right)a_0a_1\left(x-x_0\right)a_2\left(x-x_0\…

SpringBoot 如何使用 EmbeddedDatabaseBuilder 进行数据库集成测试

SpringBoot 如何使用 EmbeddedDatabaseBuilder 进行数据库集成测试 在开发 SpringBoot 应用程序时,我们通常需要与数据库进行交互。为了确保我们的应用程序在生产环境中可以正常工作,我们需要进行数据库集成测试,以测试我们的应用程序是否能…

剑指offer61.扑克牌中的顺子

我的想法非常简单,就是先给数组排序,然后统计里面有几个0,然后遍历数组,如果是0或者比后面一个数小1就直接进入下一次循环,如果比后面一个数小2,就用掉一个0,0的数量减1,如果比后面的…

Pycharm----导入库文件夹不在py文件的目录下

问题描述: 想在不同目录下导入根目录的包,直接写会报错。如下边object_detect.py在function文件夹下,导入包默认在这个文件下,但我想导入根目录models和utils下的包 解决方法: 将根目录设置为源代码根目录&#xff0…

【OC总结 面向对象 + 内存管理 + runtime】

文章目录 前言面向对象1.1 一个NSObject对象占用多少内存?1.2 iOS的继承链 & 对象的指针指向了哪里?1.3 OC的类的信息存放在哪里?-isa指针1.4 isMemberOfClass & isKindOfClass Runtime1.4 讲一下OC的消息机制1.5 消息转发机制流程1.…

【指针和数组笔试题(1)】详解指针、数组笔试题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言整型数组字符数组第一组题第二组题第三组题 总结 前言 在计算之前要了解基本概念: 数组名的理解 数组名是数组首元素的地址 有两个例外 1.sizeof(…

Linux网络基础 — 数据链路层

目录 数据链路层 认识以太网 局域网转发的原理 认识以太网的MAC报头 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 基于MAC帧协议再次谈一谈局域网转发的原理 认识MTU MTU对IP协议的影响 MTU对UDP协议的影响 MTU对于TCP协议的影响 ARP协议 ARP协议的作用 …

Xcode 15 beta 4 (15A5195m) - Apple 平台 IDE

Xcode 15 beta 4 (15A5195m) - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 请访问原文链接:https://sysin.org/blog/apple-xcode-15/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org visonOS …

SpringBoot整合SpringCloudStream3.1+版本的Kafka死信队列

SpringBoot整合SpringCloudStream3.1版本的Kafka死信队列 上一篇直通车 SpringBoot整合SpringCloudStream3.1版本Kafka 实现死信队列步骤 添加死信队列配置文件,添加对应channel通道绑定配置对应的channel位置添加重试配置 结果 配置文件 Kafka基本配置&#…

C++ deque/queue/stack的底层原理

deque容器的存储结构 和 vector 容器采用连续的线性空间不同,deque 容器存储数据的空间是由一段一段等长的连续空间构成,各段空间之间并不一定是连续的,可以位于在内存的不同区域。 deque采用一块所谓的map数组(注意&#xff0c…

rabbitmq模块启动报java.net.SocketException: socket closed的解决方法

问题 最近在接手一个项目时,使用的是spring-cloud微服务构架,mq消息消费模块是单独一个模块,但启动这个模块一直报如下错误: java.net.SocketException: socket closed 这个错误是这个模块注册不到nacos报的错,刚开…

day34-Animated Countdown(动画倒计时)

50 天学习 50 个项目 - HTMLCSS and JavaScript day34-Animated Countdown&#xff08;动画倒计时&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&q…