CHI协议保序之Compack保序

news2024/11/23 15:29:50

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

================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.coloradmin.cn/o/781574.html

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

相关文章

[VUE]Element_UI 实现TreeSelect 树形选择器

文章目录 前言1、安装2、引用3、使用 前言 最近在做一个人员管理系统,在增改用户信息时,可能会设置用户所在的部门,因为部门是多级的,于是想到用Element_UI的TreeSelect组件实现 效果: 1、安装 npm install --save…

蓝桥杯专题-真题版含答案-【牌型种数】【煤球数目】【寒假作业】【奖券数目】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

如何动态修改 spring aop 切面信息?让自动日志输出框架更好用

业务背景 很久以前开源了一款 auto-log 自动日志打印框架。 其中对于 spring 项目,默认实现了基于 aop 切面的日志输出。 但是发现一个问题,如果切面定义为全切范围过大,于是 v0.2 版本就是基于注解 AutoLog 实现的。 只有指定注解的类或…

pytest常用执行参数详解

1. 查看pytest所有可用参数 我们可以通过pytest -h来查看所有可用参数。 从图中可以看出,pytest的参数有很多,下面是归纳一些常用的参数: -s:输出调试信息,包括print打印的信息。-v:显示更详细的信息。…

GAN在图像超分辨领域的应用

本篇博客介绍了对抗生成网络GAN在图像超分辨领域的应用,包括(SRGAN, ESRGAN, BSRGAN, Real-ESRGAN),详细介绍了论文内容,方法,网络结构并对其做了相关总结。相关GAN原理的介绍大家可以查看我之前的几篇博客,链接如下:生…

从用户的角度谈GPT时代技术突破的两大关键逻辑

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

API接口:如何通过使用手机归属地查询

随着手机普及率的不断增加,手机号码的信息查询也成为了一个非常实用的功能。本文将介绍如何通过使用手机归属地查询API接口实现查询手机号码所在地的功能。 首先,我们需要一个可以查询手机号码所在地的API接口。目前市面上有很多免费或付费的API接口可供…

MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6:MySQL Enterprise Monitor之Query Analyzer

文章目录 MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6:MySQL Enterprise Monitor之Query AnalyzerMySQL Enterprise Monitor之Query AnalyzerQuery Response Time index (QRTi)例题例题1: Query Analyzer答案与解析1 参考 【免责声明】文章仅供学习交流&#x…

RT1052的GPIO

文章目录 GPIO资源GPIO资料GPIO复用器IOMUXGPIO的控制块 GPIO配置宏定义的使用 GPIO函数使用GPIO_PinRead 函数GPIO_WritePinOutput函数 GPIO资源 图中 P2、P3 和 P6 为 MCU 主 IO 引出口,这三组排针共引出了 97 个 IO 口,另外,通过&#xff…

深度理解BeanFactory和ApplicationContext的区别

BeanFactory和ApplicationContext 接口及其子类图 这是Spring一部分的关系类图,从这个类图我们可以大致看出BeanFactory的和ApplicationContext的关系,BeanFactory是ApplicationContext的基类,BeanFactory所拥有的功能,ApplicationContext都拥有, 不仅如此,ApplicationContext还…

【Docker 的数据管理和网络通信】

目录 一、Docker 的数据管理1.数据卷2.数据卷容器 二、容器互联(使用centos镜像)三、Docker 镜像的创建1.基于现有镜像创建(1)首先启动一个镜像,在容器里做修改(2&#x…

C# Yolo+Onnx 号牌识别

参考 https://github.com/missxingwu/net_yolov5_plate https://github.com/ivilson/Yolov7net https://github.com/we0091234/Chinese_license_plate_detection_recognition 效果 项目 VS2022.net 4.8OpenCvSharp4Microsoft.ML.OnnxRuntime 部分代码 using System; using …

xDS解决的是什么样子的痛点

xDS基本概念 Istio发现模型 xDS是什么 xDS是一类发现服务的总称,包含LDS, RDS, CDS, EDS以及SDS。 Envoy通过xDS API可以动态获取Listener(监听器),Route(路由)&#x…

Python 集合 union()函数使用详解,Python合并集合

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 union函数使用详解 1、合并多个集合2、合并其他类型2.1、合并字符串2.2、合并列表…

性能测试Ⅲ

JMeter里面使用后端监听器,结合influxdb的时序数据库以及grafana可以打造性能测试的平台 后端监听器:把JMeter执行过程中的数据写到influxDB的时序数据库 influxD:时序数据库,用来存储JMeter发送请求的数据 Grafana :从…

k8s容器入门

一、k8s入门 1.什么是容器 降低虚拟机造成的物理主机资源浪费,提高物理主机的利用率,并能提供像虚拟机一样狼好的应用程序隔离运行环境,人们把这种轻量型的虚拟机,称为容器。 2. 容器的管理工具 主要用于容器的创建、启动、关…

优化transformer

使用transformer而导致的时间长,可能会由于self-attention计算Query和key的值才导致的时间长,也可能会因为feed forward中的计算导致时间长。这里我们只针对第一种情况下进行优化。 第一种情况:有些问题,我们可能不需要看整个句子…

Linux安装JDK、Redis、MySQL、RabbitMQ、Minio、Nginx.......

文章目录 一、环境准备二、安装JDK三、安装MySQL四、安装Redis三、安装RabbitMQ四、安装Minio五、安装Nginx特殊情况处理Centos7挂载磁盘服务器时间同步MySQL数据库时间同步安装解压软件修改数据库SQL模式 一、环境准备 下载镜像源 中科大镜像源下载至/opt目录下修改yum源为中…

蓝桥杯专题-真题版含答案-【贪吃蛇长度】【油漆面积】【绘制圆】【高次方数的尾数】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

微服务初始

今天准备开始学习微服务,使用微服务肯定是因为他有好处。 首先了解到的三种架构,传统单体,集群架构,微服务架构 单体架构 有单点问题,如果宕机所有的服务都不可用所有业务的功能模块都聚集在一起,如果代…