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 指数分布是泊松过程中事件之间时间的概率分布,因此它用于预测到下一个事件的等待时间,例如,您需要在公共汽车站等待的时间,直到下一班车到了(点击文末“阅读原文”获取…

CPU,GPU,MCU,SOC,NPU,DPU,内核,架构简略区分

1.架构 架构由不同的指令集构成,不同的侧重方向的指令集构成不同的软件架构,如ARM架构和X86架构等。 2.内核 内核可以看做是不同的软件架构,铺设上一些外设之后构成,相当于软件架构的载体实现,架构是一堆软件代码&a…

ext4 - delay allocation数据结构

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

LeetCode笔记:Biweekly Contest 109

LeetCode笔记:Biweekly Contest 109 1. 题目一 1. 解题思路2. 代码实现 2. 题目二 1. 解题思路2. 代码实现 3. 题目三 1. 解题思路2. 代码实现 4. 题目四 1. 解题思路2. 代码实现 比赛链接:https://leetcode.com/contest/biweekly-contest-109/ 1. 题…

【华为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是一个开源、高…

MySQL 权限问题:当 USAGE 碰到 GRANT OPTION

本文分享的是 MySQL 中权限搭配使用不当时可能引发的问题。 作者:佟宇航 爱可生南区交付服务部 DBA 团队成员,主要负责 MySQL 故障处理以及平台技术支持。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经授权不得随意使用&am…

【八股】【计算机网络】

这里写目录标题 OSI 的七层模型TCP/IP模型HTTP 是什么?HTTP状态码HTTP 常见字段GET 和 POST 有什么区别?GET 和 POST 方法都是安全和幂等的吗?HTTP 缓存HTTP 优缺点HTTP 性能HTTP 与 HTTPSHTTPSHTTPS连接过程与一定可靠吗HTTP演进版本HTTP/1.…

湖大CG满分教程:作业训练三编程题15. 公交系统

【问题描述】 城市公交系统有一个记录仪,用于记录每个站点的乘客人数的变化情况,例如:x表示到站前公交车上的乘客人数,y表示离站时公交车上的乘客人数,则该记录仪记录的该站的数字为y-x。 对于一辆公交车和n个车站&…

解决R语言读取数据自动置换符号问题,例如把TCGA样本中的-读取为·

解决方案 在使用R语言read.csv()函数读取csv文件时&#xff0c;会自动把TCGA样本中的-替换为.&#xff0c;为后续数据处理带来不便。 解决方法&#xff1a;在函数中添加check.namesFALSE data <- read.csv("file.csv",check.namesFALSE)具体解释 check.names是…

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)&#xff0c;2.AddRange(IEnumerable)&#xff0c;3.AsReadOnly()&…

pytorch创建和操作tensor

import torch import numpy as np### 1. 由函数创建 x torch.zeros(5, 3, dtypetorch.int64) # 指定数据类型 print(x.dtype) x torch.zeros(5, 3) # 默认数据类型为torch.float32 print(x.dtype)x torch.rand(5, 3)x torch.torch.ones(10,2,3) x torch.empty(5, 3)# Re…

Matlab的GUI设计

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

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

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

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

1.简述 一、牛顿插值法原理 1.牛顿插值多项式   定义牛顿插值多项式为&#xff1a; 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\…

NLP masked_tokens[]、token_masks[]是什么?

1、masked_tokens[]、token_masks[]介绍 masked_tokens和token_masks两个列表用于存储mask处理后的token&#xff08;分词&#xff09;结果和对应的mask标志。 masked_tokens列表存储经过mask处理后的分词结果。 token_masks列表存储与每个分词结果对应的mask标志。 2、示例…

Electron运行时报错:浏览器报错Uncaught ReferenceError: require is not defined

这个错误通常发生在浏览器环境中使用了Node.js的模块化语法。由于浏览器不支持直接使用require关键字&#xff0c;所以会报错。 解决这个问题的一种方法是使用Webpack等工具将你的代码打包成浏览器可执行的文件。这样可以将require语法转换为浏览器可识别的语法。 另外&#…

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

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

剑指offer61.扑克牌中的顺子

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