CHI中的error处理

news2024/12/27 13:08:07

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

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

相关文章

三分钟白话RocketMQ系列—— 核心概念

目录 关键字摘要 Q1:RocketMQ是什么? Q2: 作为消息中间件,RocketMQ和kafka有什么区别? Q3: RocketMQ的基本架构是怎样的? Q4:RocketMQ有哪些核心概念? 总结 RocketMQ是一个开源的分布式消…

iOS--Runloop

Runloop概述 一般来说,一个线程一次只能执行一个任务,执行完成后线程就会退出。就比如之前学OC时使用的命令行程序,执行完程序就结束了。 而runloop目的就是使线程在执行完一次代码之后不会结束程序,而是使该线程处于一种休眠的状…

初步了解c#编程语言--(1)

初识c#编程语言 一、见识c#语言编写的各类应用程序 关于用c#语言编写的各类应用程序有以下几种: 1.Console 在编写Console程序时,要注意创建项目时,是选择控制台应用程序(Console Application),在这里…

【计算机视觉】BLIP:源代码示例demo(含源代码)

文章目录 一、Image Captioning二、VQA三、Feature Extraction四、Image-Text Matching 一、Image Captioning 首先配置代码: import sys if google.colab in sys.modules:print(Running in Colab.)!pip3 install transformers4.15.0 timm0.4.12 fairscale0.4.4!g…

linux(进程)[6]

管理概念 先描述,再组织 进程 启动一个软件就相当于启动了一个进程 Linux下执行一条命令就在系统层面创建了一个进程!! 如何管理 进程对应的代码和数据 进程对应的PCB结构体 PCB(process control block) 在Linu…

Java反射机制的详细讲解

目录 1.反射机制是什么? 2.反射机制能干什么? 3.反射相关的类 ​编辑 4.Class类(反射机制的起源 ) 5.反射机制相关的API 1.(重要)常用获得类相关的方法 2.常用获得类中属性相关的方法(以下方法返回值为Field相关 3.(了解)获得类中注解相关的方法…

iOS开发-实现3DTouch按压App快捷选项shortcutItems及跳转功能

iOS开发-实现3DTouch按压App快捷选项shortcutItems及跳转功能 App的应用图标通过3D Touch按压App图标,会显示快捷选项,点击选项可快速进入到App的特定页面。 这里用到了UIApplicationShortcutItem与UIMutableApplicationShortcutItem 一、效果图 这里…

VS附加到进程调试

操作: 要附加到进程中调试外部可执行文件,您需要使用Visual Studio的“调试附加”功能。以下是附加到进程中调试外部可执行文件的步骤: 打开您要调试的源代码文件或可执行文件。打开Visual Studio。选择“调试”菜单,然后选择“…

三种无监督学习方法用于肿瘤病理图像预测任务

这里写自定义目录标题 BYOLBYOL描述基本思路示意图合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必…

大数据_Hadoop_Parquet数据格式详解

之前有面试官问到了parquet的数据格式,下面对这种格式做一个详细的解读。 参考链接 : 列存储格式Parquet浅析 - 简书 Parquet 文件结构与优势_parquet文件_KK架构的博客-CSDN博客 Parquet文件格式解析_parquet.block.size_davidfantasy的博客-CSDN博…

day16 | 513.找树左下角的值 112.路径总和 106.从中序与后序遍历序列构造二叉树

文章目录 一、找树左下角的值二、路径总和三、从中序与后序遍历序列构造二叉树 一、找树左下角的值 513.找树左下角的值 暴力解法 class Solution { public:int findBottomLeftValue(TreeNode *root){// 第一眼想到的就是层序遍历,取最后一层的第一个值即可queue…

Vue系列第六篇:axios封装,登录逻辑优化,404页面实现,Go语言跨域处理

第五篇利用vue实现了登录页面,用go语言开发了服务端并最后在nginx上进行了部署。本篇将axios封装,登录逻辑优化,404页面实现。 目录 1.前端 1.1代码结构 1.2源码 2.服务端 2.1源码 3.运行效果 4.注意事项 4.1webpack.config.js和vue…

探索自除数:发现区间内的神奇数字

本篇博客会讲解力扣“728. 自除数”的解题思路,这是题目链接。 对于给定的正整数num,我们如何判断它是不是自除数呢?根据定义,我们只需要把num的每一位数字都取出来,判断能不能整除num,如果发现num的某一位…

【虹科案例】使用虹科模块化数字化仪进行车辆测试

引言 模块化仪器比传统仪器的尺寸大大减小,适合安装在电路卡上,同时也可以将多个卡插入具有通用计算机接口、电源和互连的框架中。模块化仪器框架包括使用标准 PCIe 接口的计算机、PXI 测试框架或基于 LXI 的盒子,工程师通常会使用多个卡并将…

git stash clear清空本地暂存代码

git stash clear清空本地暂存代码 git stash 或者 git stash list 查看本地暂存的代码。 清除本地暂存的代码修改: git stash clear git回退代码仓库版本_git回退到之前的版本会影响本地代码嘛_zhangphil的博客-CSDN博客git回退代码版本_git回退到之前的版本会影…

基于opencv的几种图像滤波

一、介绍 盒式滤波、均值滤波、高斯滤波、中值滤波、双边滤波、导向滤波。 boxFilter() blur() GaussianBlur() medianBlur() bilateralFilter() 二、代码 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> …

01 制作Windows11启动盘及安装 || 包含校验ISO映像的方法

前言 由于空间越来越不够用了&#xff0c;上次为Ubuntu分配了96G的空间依然是快要被用完&#xff0c;连一个数据集都放不下了&#xff0c;因此我不得不选择换硬盘。 由于是离谱的华为Mate book D 15的2021款逆天机型&#xff0c;我没有第二个硬盘位。至于说移动硬盘的解决方案…

python3GUI--我的翻译器By:PyQt5(附下载地址)

文章目录 一&#xff0e;前言二&#xff0e;展示1.主界面2.段落翻译3.单词翻译 三&#xff0e;设计1.UI设计2.软件设计3.参考 四&#xff0e;总结 一&#xff0e;前言 很早之前写过一篇python3GUI–翻译器By:PyQt5&#xff08;附源码&#xff09; &#xff0c;但是发现相关引擎…

LED显示屏技术:数码时代的绚丽舞台

随着信息技术的飞速发展&#xff0c;LED显示屏技术成为现代社会不可或缺的一部分。这种技术以其高亮度、高清晰度和多样化的应用领域&#xff0c;在数字化时代展现出绚丽多彩的画面&#xff0c;为我们带来了前所未有的视觉体验。本文将探讨LED显示屏技术的原理、应用以及对于现…

【JavaEE】简单了解JVM

目录 一、JVM中的内存区域划分 二、JVM的类加载机制 1、类加载的触发时机 2、双亲委派模型 1.1、向上委派 1.2、向下委派 三、JVM中的垃圾回收机制&#xff08;GC&#xff09; 1、确认垃圾 1.1、引用计数&#xff08;Java实际上没有使用这个方案&#xff0c;但是Pytho…