当前位置: 首页 > news >正文

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需要能够处理这种场景;

相关文章:

CHI中的error处理

Error Handling Error types 包含两种sub-packet级别的error, 和两种packe级别的error; Packet level error Data Error, DERR □ 访问的地址是正确的,但是访问的数据有错误;通常是在数据崩溃的时候使用,例如ECC&#xf…...

如何使用 PHP 进行数据库缓存处理?

当你想要让你的PHP应用程序更快时,数据库缓存是一个重要的工具。它可以帮助你避免频繁地查询数据库,提高应用程序的响应速度。不过,在进行数据库缓存处理时,需要注意一些细节,否则可能会得到相反的结果。下面&#xff…...

新版巨量广告投放技巧分析

新版广告系统,计划出价40,转化成本特别低只有21,同时消耗也比较慢 为什么刚开始成本都比较低,跑着跑着成本就高了,像这种情况一般如何操作? 一: 为什么会出现成本和出价差这么多 1: 系统对账…...

Vue3 导出excel

🙂博主:锅盖哒 🙂文章核心:导出excel 目录 首先,你需要安装xlsx库。可以使用npm或yarn来安装: 在Vue组件中,你可以使用xlsx库来生成Excel文件并提供一个导出按钮供用户下载。 在Vue 3中&…...

vue 使用vue-json-viewer 展示 JSON 格式的数据

npm install vue-json-viewer --save<el-button type"primary" click"previewClick">预览</el-button><el-dialog title"预览" :visible.sync"previewVisible" width"70%"><viewer ref"viewer&qu…...

14.python设计模式【模板方法模式】

内容&#xff1a;定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法某特定步骤。 角色&#xff1a; 抽象类&#xff08;AbstractClass&#xff09;&#xff1a;定义抽象的原子操作&#xff08;钩子…...

谷粒商城第六天-实现功能的前序工作(网关的配置 跨域配置)

目录 一、为什么要做这项工作 1.1 为什么要配置网关 1.2 为什么要使用网关统一配置跨域 二、网关配置 三、统一跨域配置 四、总结 一、为什么要做这项工作 1.1 为什么要配置网关 我们知道网关的作用其实主要就是进行路由的&#xff0c;也就是根据前端发送到网关的请求&…...

为什么说国内数字孪生平台gis架构采用Cesium是不错的选择?

Gis作为数字孪生平台开发中重要的一环对数字孪生平台是否好用是一个重要的判定方式&#xff0c;国内数字孪生软件在融合GIS系统方面采取了多种方式&#xff0c;例如Unity或Unreal Engine等游戏引擎&#xff0c;以增强数字孪生的空间感知和空间分析能力&#xff0c;提供更全面、…...

前端面试的性能优化部分(1)每篇10题

1. 懒加载的概念 懒加载&#xff08;Lazy Loading&#xff09;是一种优化技术&#xff0c;它用于延迟加载页面资源&#xff0c;只在需要时才加载特定的内容&#xff0c;而不是在页面初始加载时一次性加载所有资源。懒加载的目的是提高页面加载速度和性能&#xff0c;尤其对于单…...

GitLab备份升级

数据备份(默认的备份目录在/var/opt/gitlab/backups/下&#xff0c;生成一个以时间节点命名的tar包。) gitlab-rake gitlab:backup:create新建repo源&#xff0c;升级新版本的gitlab vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] namegitlab-ce baseurlhttps://mirrors.…...

Matlab实现遗传算法仿真(附上40个仿真源码)

遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;是一种基于生物进化理论的优化算法&#xff0c;通过模拟自然界中的遗传过程&#xff0c;来寻找最优解。 在遗传算法中&#xff0c;每个解被称为个体&#xff0c;每个个体由一组基因表示&#xff0c;每个基因是…...

git使用(由浅到深)

目录流程图 1. 分布式版本控制与集中式版本控制 1.1 集中式版本控制 集中式版本控制系统有:CVS和SVN它们的主要特点是单一的集中管理的服务器&#xff0c;保存所有文件的修订版本&#xff1b;协同开发人员通过客户端连接到这台服务器&#xff0c;取出最新的文件或者提交更新…...

NAT协议(网络地址转换协议)详解

NAT协议&#xff08;网络地址转换协议&#xff09;详解 为什么需要NATNAT的实现方式静态NAT动态NATNAPT NAT技术的优缺点优点缺点 NAT协议是将IP数据报头中的IP地址转换为另外一个IP地址的过程&#xff0c;主要用于实现私有网络访问公有网络的功能。这种通过使用少量的IP地址代…...

pytorch(续周报(1))

文章目录 2.1 张量2.1.1 简介2.1.2 创建tensor2.1.3 张量的操作2.1.4 广播机制 2.2 自动求导Autograd简介2.2.1 梯度 2.3 并行计算简介2.3.1 为什么要做并行计算2.3.2 为什么需要CUDA2.3.3 常见的并行的方法&#xff1a;网络结构分布到不同的设备中(Network partitioning)同一层…...

el-table 树形结构数据 设置某一层,新增按钮不展示

<template><div><el-table:data"tableData":row-class-name"rowClassName":tree-props"{ children: children, hasChildren: hasChildren }"><!-- 表格列定义 --><!-- ... --><el-table-column label"操作…...

【Unity2D】粒子特效

为什么要使用粒子特效 Unity 的粒子系统是一种非常强大的工具&#xff0c;可以用来创建各种各样的游戏特效&#xff0c;如火焰、烟雾、水流、爆炸等等。使用粒子特效可以使一些游戏动画更加真实或者使游戏效果更加丰富。 粒子特效的使用 在Hierarchy界面右键添加Effects->…...

第九十六回 网络综合示例:获取天气信息

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了dio库中转换器相关的内容&#xff0c;本章回中将介绍网络综合示例&#xff1a;获取天气信息.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在前面章回中介绍了网络操作相关的内容&#xff0c;本章…...

Shell中获取昨天和多天前日期

1、获取今天日期 $ date -d now %Y-%m-%d 或者 $ date %F2、获取明天日期 $ date -d next-day %Y-%m-%d $ date -d tomorrow %Y-%m-%d3、获取昨天日期 $ date -d yesterday %Y-%m-%d 或者 $ date -d last-day %Y-%m-%d 或者 $ date -d "1 days ago" %Y-%m-%d …...

golang静态编译及编译失败排查步骤

文章目录 一、背景前提 二、静态编译概述1、执行静态编译设置CGO_ENABLED方式指定link方式 2、编译报错分析&#xff08;1&#xff09;确认系统上有没有安装libopus&#xff08;2&#xff09;设置LD_LIBRARY_PATH 三、详细排查过程1、下载bpf排查工具bcc, bcc-tools,python-bcc…...

2023年7月第4周大模型荟萃

2023年7月第4周大模型荟萃 2023.7.31版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、Cerebras推出全球最强AI超算 AI芯片初创公司Cerebras Systems和总部位于阿联酋的技术控股集团G42于7月20日宣布&#xff0c;携手打造一个由互联的超…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...