CHI中的error处理

Error Handling


Error types
        包含两种sub-packet级别的error, 和两种packe级别的error;
 

Packet level error
 Data Error, DERR
        □ 访问的地址是正确的,但是访问的数据有错误;通常是在数据崩溃的时候使用,例如ECC,parity check;
        该Data Error, 可以在DAT packet中的resperr, poison, data check域段反映;
        如果HN收到一个RN发送过来的请求或者snp data, 包含DERR, HN必须继续处理,要继续将该命令传播到SN;
Non-data Error, NDERR
       □ 和data err不相关的错误,都是NDERR, 协议并未规定所有的场景;
       □ 通常会有如下场景:
               □ 访问一个不存在的空间;
               □ 错误的访问命令,例如,写一个read-only的空间;
               □ 使用reserved的命令类型等等;
        □ 当HN收到一个NDERR命令时,可以,但是不推荐继续往SN传;
        □ Non-data err在RSP/DAT通道的resp err域段反映; 

Error response fields
该域段在response和data通道都有;

 □ 单个trans,不能既有ok, 也有exok;
□ Data resp, 要么没有NDERR, 要么都是NDERR;
□ 单个trans,可以既有ok, 也有DERR;
□ 单个trans,可以既有exok, 也有DERR;
□ 单个trans,可以既有OK, 也有NDERR;此场景出现在data和non-data resp同时返回的时候;
□ 单个trans,不能既有exok, 也有nderr;

Errors and transaction structure
□ 不管transaction是否包含error response,都必须按照与协议一致的行为完成。
□ 使用DMT的transaction的error handling和没有使用DMT相同请求的error handing处理流程一样。
□ requests或snoops没有机制传输errors,如果在ICN上检测错误,那么该request不能使用DMT或DCT。
□ 发生错误时,如果transaction包含data packets,则需要data packets的源发送正确数量的数据包,但不要求数据值有效。
□ transaction中resp域的cache state可以被error handling影响。
□ 如果transaction的响应没有包含合法的cache state,那么RespErr域必须把所有data packets指示为Non-data Error。
□ 不管是否存在error情况,data message的每个packet的Resp域在响应中必须有相同的值;
□ 当某个RN收到的snoopable resquest的响应,是non-data err时:
        □ 对于allocation trans
                □ 如果当前的状态是I,RN不能缓存接收的数据;
                □ 如果当前状态不是invalid的,则缓存的数据,不能够进行修改;
                □ 不管是上述那种情况,cacheline state都不能修改;
                □ 包含如下命令:
                        — ReadClean 
                        — ReadNotSharedDirty 
                        — ReadShared 
                        — ReadUnique 
                        — ReadPreferUnique 
                        — MakeReadUnique 
                        — CleanUnique 
                        — MakeUnique
        □ 对于deallocation trans;
                □ 同正常流程一样;
                □ 包含如下命令:
                        — WriteBack 
                        — WriteEvictFull 
                        — Evict 
                        — WriteEvictOrEvict
□ 对于Other transactions that do not change allocation
        □ Cacheline的状态,不能升级,可以降级;

□ Snpresp中,如果是non-data err,则cacheline状态必须是invalid, 返回响应的RN,必须invalid掉local cache copy;
□ 除此以外,如果snoop resp是forwarding的,带了non-data err, 那么被snoop的人,不要将data返回给原始RN;因此,如果compdata message已经返回给了RN, 那么返回给HN的snoop resp,就不能携带non-data err;

Error response use by transaction type
Read transactions
□ 读操作可能包含多个compdata packets;
□ 当错误指示,Poison, DERR, or NDERR置位时,表示数据corrupt;
□ 当respsepdata是non-data err时,所有的datasepresp都应该标记为non-data err, 而不能只标记其中一两个;
□ 参考协议每个命令在不同的响应中
(read receipt/compdata/compack/datasepresp/respsepdata),可以出现的状态;
Dataless transactions
□ Dataless trans也可以返回data error, 例如当其他component处理时产生了data corruption err;(HNF snoop时有data err返回);

Write transactions
□ Write trans,可以包含data err, 或者non-data err; 既可以从RN往completor送,也可以从completor往RN送;
□ Write data有错误,可以通过置位Poison or DERR来指示;
□ Compter往RN返回错误,可以通过compDBIDResp, 或者Comp resp;completer可以在收到writedata之前,就发送错误信号,比如cache lookup,数据损坏的场景;

Atomic transactions
略;

DVMOp
□ DVMOp 的响应,可以包含Non-data err和data err;
□ MN会将所有snoop resp的err进行合并,生成comp resp, 然后返回给RN;

Snoop transactions
□ Snoop trans的resp,可以指示data err;
□ Snoop trasn的resp, 可以混合OK和DERR;
□ Snoop的数据错误,可以通过Poison or DERR指示;
□ 不包含数据的Snoop trans resp, 可以有NDERR指示;
□ 被snoop的RN返回NDERR时,必须满足如下需求:
        □ Snoop trans resp中不能包含数据;
        □ 必须将当前cache中的copy invalid;
        □ Cache state返回invalid:
        □ 如果是forwarding snoop, 不要返回compdata给原始RN;

Poison
□ 该信号用来指示data中哪些bit时corrupted. 该bit跟随DAT通道传输;
□ 该poison支持:每64bits数据,1bit poison
□ 如果数据标记成poisoned;
         □    不能被RN所使用;
         □    允许存入cache;
□ Posion一旦被set, 就必须跟随data一起传输;
□ 当poison被检测到时,可以跳过poison的data;

Data Check
□ 每64bits 8bits的data check, 存储的是奇偶校验结果;
□ 如果Data packet的接受者不支持Posion或DataCheck特性,需要的话,ICN必须将其转换成DAT packet的Data Error。
□ 如果支持Posion和DataCheck特性,但接口不是相似的话,需要遵循如下原则:
        □ 如果Posion不支持的话,Posion必须映射成DataCheck或DERR。在这样的interface下,如果DataCheck支持的话,更期望将Posion映射成DataCheck,而不是DERR;在将Posion转为DataCheck的时候,8bytes块标记为Posion,每个DataCheck的8bits必须控制产生为parity error;
         □ 如果DataCheck不支持的话,DataCheck必须映射成Posion或DERR。在这样的interface下,如果支持Posion,更期望将DataCheck映射成Posion,而不是DERR;在将DataCheck转换为Posion的时候,在一个8byte chunk中,如果一个或多个DataCheck bits产生parity error,那么chunk的Posion bit必须置位。
注意:Posion和DERR的不同之处在于: 收到带Posion error的Data packet通常会被receiver推迟,但是DERR error通常不会被receiver推迟。
对在检测到Posion error时将其指示到Posion bits,对于Sender来说已经足够了,但是否将其RespErr置成DERR不是需要的。
对在检测到DataCheck error时将其指示到DataCheck bits,对于Sender来说已经足够了,但是否将其RespErr置成DERR不是需要的。
Posion和DataCheck的域段是独立的,一个类型的错误不要求另一个类型的域段置位;
在一个Data packet中,如果RespErr域段设置成DERR或NDERR,那么Posion和DataCheck的域段值不关心。


Quality of Service
 □ 系统中使用QOS机制来实现如下事情:
         □ 对于特定数据流,保证trans的最大latency;
         □ 对于请求数据流,保证最小的带宽;
         □ 对于特定的数据流,提供最优的带宽和延迟;
 □ 在总线中间节点的支持下,满足系统QoS需求的低latency或保证数据吞吐量需求主要是由transactions endpoint负责的。协议通过定义packets的QoS优先级值和使用defined credit机制控制request flow来支持这一点
 □ Qos一共4bits, 从源端带来;在典型使用模型中,此值取决于源类型和流量类别,QoS的升序值表示更高的优先级。源还可以根据某些累积的延迟和所需的吞吐量度量动态地改变该值。

 □ 当某个trans已经发送了,qos是某个值,这个时候,协议是允许它在发送一次,并使用不同的优先级的,当然,通常是优先级更高;completer需要能够处理这种场景;

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

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

相关文章

JSON对象

目录 简介 创建对象 ​编辑json对象作为属性值 json用于交换数据 简介 json:javascript object notation(js标记对象)是一种轻量化的数据交换模式,特点:体积小,数据量大 在js中,json是以对象的形式存在的&#x…

51单片机学习--按键控制流水灯模式定时器时钟

TMOD负责确定T0和T1的工作模式,TCON控制T0和T1的启动或停止计数,同时包含定时器状态 TF1:定时器1溢出标志 TF0:定时器0溢出标志 0~65535 每隔1微秒计数器1,总时间65535微秒,赋上初值64535,则只…

使用 NVM(Node Version Manager)管理 Node.js 版本

使用 NVM(Node Version Manager)管理 Node.js 版本 步骤一:安装 NVM NVM 是一个用于安装和管理不同版本的 Node.js 的工具。首先,你需要确保你的系统上已经安装了 NVM。可以通过以下命令检查 NVM 是否已经安装: nvm …

红队打靶:FourAndSix2.01打靶思路详解(vulnhub)

目录 写在开头 第一步:主机发现与端口扫描 第二步:NFS渗透 第三步:7z压缩包的密码破解 第四步:ssh私钥登录 第五步:lessvi提权 总结与思考 写在开头 本篇博客根据大佬红队笔记的视频进行打靶,详述了…

黑马头条---day1

手机端查看 docker 容器,镜像操作命令 1、docker删除所有镜像命令 删除所有镜像的命令是Docker中一个非常常见的操作。下面是具体的实现步骤和命令示例: $ docker stop $(docker ps -aq) 停止所有正在运行的容器。 $ docker rm $(docker ps -aq) 删…

selenium的java方式打开IE浏览器

1.下载软件Selenium Driver 官方下载地址: ​ https://www.selenium.dev/downloads/解压selenium-java-3.141.59.zip文件到java项目 seleniumDemo,并降解压的文件放入依赖中(1)双击项目的src打开项目结构,或右键-打开…

python将多张图片拼成一张矩阵图,合成一张大图

用Python实现将多张图片排列成n*m的图像矩阵图 目录 引言环境准备代码实现效果演示总结 引言 在图像处理和图像展示的应用中,将多张图片排列成一个图像矩阵图是一个常见的需求。本博客介绍如何使用Python实现将12张图片排列成n*m的图像矩阵图。 环境准备 为了实…

操作系统专栏2进程管理from 小林coding

进程管理 基本概念进程控制进程上下文切换 线程进程和线程的比较进程通信管道消息队列共享内存信号量信号socket 基本概念 进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元.并行和并发:状态: 其中挂起是指没有给程序分配实际…

学习中遇到的好博客

c日志工具之——log4cpp ECU唤醒的本质就是给ECU供电。 小文件:零拷贝技术 传输大文件:异步 IO 、直接 IO:如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io直接io (123条消息) Linux网络编程 | 彻底搞懂…

机器学习01 -Hello World(对鸢尾花(Iris Flower)进行训练及测试)

什么是机器学习? 机器学习是一种人工智能(AI)的子领域,它探索和开发计算机系统,使其能够从数据中学习和改进,并在没有明确编程指令的情况下做出决策或完成任务。 传统的程序需要程序员明确编写指令来告诉…

QT 视图(view)模型(model)汇总

QStringListModel和QListView UI界面 widget头文件 #ifndef WIDGET_H #define WIDGET_H#include <QStringList> #include <QStringListModel> #include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : publi…

使用AOP切面对返回的数据进行脱敏的问题

1.注解类 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** Author: xiaoxin* Date: 2023/7/21 17:15*/ Retention(RetentionPolicy.RUNTIME) Targe…

python文件处理方式

python文件处理方式 file open(D:\pythonText.txt, r, encodingUTF-8) print(file) # <_io.TextIOWrapper nameD:\\pythonText.txt moder encodingUTF-8> print(type(file)) # <class _io.TextIOWrapper>读取文件 file open(D:\pythonText.txt, r, encodingU…

3d软件动物生活习性仿真互动教学有哪些优势

软体动物是一类广泛存在于海洋和淡水环境中的生物&#xff0c;其独特的形态和生活习性给学生带来了新奇和有趣的学习主题&#xff0c;为了方便相关专业学科日常授课教学&#xff0c;web3d开发公司深圳华锐视点基于真实的软体动物&#xff0c;制作软体动物3D虚拟展示系统&#x…

【visual studio2019】如何打开即时窗口

在 Visual Studio2019 中打开即时窗口&#xff0c;有两种方法&#xff1a; 1、可以通过“调试”菜单&#xff0c;然后选择“窗口”下的“即时窗口”选项 2、直接使用快捷键“Ctrl Alt I” 此时即时窗口将显示在 Visual Studio2019 的底部。在即时窗口中&#xff0c;可以执…

Java读取及生成pb文件并转换jsonString

Java读取及生成pb文件并转换jsonString 1. 效果图2. 原理2.1 Protocol Buffers是什么2.2 支持的语言2.3 根据.proto生成.java2.4 初始化及构建pb&#xff0c;读取&#xff0c;转jsonString 3. 源码3.1 address.proto3.2 PbParseUtil.java 参考 读取pb及生成pb文件pb文件转换jso…

stable diffusion

一&#xff1a;安装。 stable diffusion 安装和使用全教程 - 知乎 Stable Diffusion安装 - 知乎 环境安装&#xff1a; 1&#xff1a;python 3.10安装。 Download Python | Python.org 切记要安装3.10版本&#xff0c;因为Stable diffusion是用3.10版本编写的&#xff0c;所…

【C++】 哈希

一、哈希的概念及其性质 1.哈希概念 在顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较。比如顺序表需要从第一个元素依次向后进行查找&#xff0c;顺序查找时间复杂度为…

VS Code环境配置问题

VS Code 环境配置问题 文章目录 VS Code 环境配置问题配置 C问题解决不乱码只显示结果避免闪退&#xff0c;中文乱码 配置 Java下载 JDKJDK 环境配置安装插件 配置 C 跟着官网教程&#xff08;英文版&#xff09;和其他博客配置了一遍&#xff0c;却遇到了很多小问题&#xff…

MyBatis源码剖析之延迟加载源码细节

文章目录 什么是延迟加载&#xff1f;实现局部延迟加载全局延迟加载 延迟加载原理实现延迟加载原理&#xff08;源码剖析)Setting 配置加载&#xff1a;延迟加载代理对象创建注意事项 什么是延迟加载&#xff1f; 在开发过程中很多时候我们并不需要总是在加载⽤户信息时就⼀定…