AMBA-CHI协议详解(十)

在这里插入图片描述

AMBA-CHI协议详解(一)- Introduction
AMBA-CHI协议详解(二)- Channel fields / Read transactions
AMBA-CHI协议详解(三)- Write transactions
AMBA-CHI协议详解(四)- Other transactions
AMBA-CHI协议详解(五)- Transaction identifier fields
AMBA-CHI协议详解(六)- Transaction identifier field flows
AMBA-CHI协议详解(七)- Ordering
AMBA-CHI协议详解(八)- Address, Control, and Data
AMBA-CHI协议详解(九)- Data transfer
AMBA-CHI协议详解(十)- Retry

文章目录

    • 2.9 Request Retry
    • 2.9.1 Credit Return
    • 2.9.2 Transaction Retry mechanism
    • 2.9.3 Transaction Retry flow


2.9 Request Retry

  该规范提供了一个Request Retry(请求重试)机制,确保当请求到达一个Completer 时,它要么被接受,要么被给予一个RetryAck响应,以防止阻塞REQ通道。
在这里插入图片描述

  Request Retry不适用于PrefetchTgt事务。无法retry PrefetchTgt事务,因为没有与此请求相关联的响应。

  RN需要保存请求的所有细节,直到它收到一个响应,表明请求已被接受或必须在稍后的时间点再次发送。为了满足这个要求,除了PrefetchTgt之外,AllowRetry字段必须在第一次发送事务时断言。

  接收请求的Completer能够对它无法接受的请求给出RetryAck响应。
通常,当资源有限且存储空间不足,无法保存当前请求时,它将无法接受请求,直到一些较早的事务完成。

  当Completer给出RetryAck响应时,它负责记录请求来自何处,这由请求的SrcID决定。Completer还负责确定和记录处理请求所需的协议信用(P-Credit)类型。RetryAck中的PCrdType字段编码将由Completer授予的P-Credit的类型。当所需的资源变得可用时,在稍后的时间点,Completer必须使用PCrdGrant响应向请求程序发送P-Credit。PCrdGrant响应向Requester表明可以retry事务。

——Note——————
没有明确的机制来请求信用。给予RetryAck响应的事务隐式地请求信用。
——————————

  可以对响应进行重新排序,以便在接收到事务的RetryAck响应之前请求方接收到PCrdGrant。在这种情况下,请求方必须记录其收到的信用,包括信用类型,以便在收到RetryAck响应时可以适当地分配信用。

——Note——————
RetryAck和PCrdGrant响应之间的延迟通常要比互连重新排序造成的延迟长得多。对于RetryAck, PCrdGrant预计很少会被重排序。
——————————

  当请求方收到一个Credit时,它可以重新发送请求,并指出它已被分配了一个Credit。这是通过取消AllowRetry字段来实现的。执行事务的第二次尝试保证被接受。

重新发送的事务必须具有与原始请求相同的字段值,除非该字段不适用或属于下列情况之一:
在这里插入图片描述
当请求方收到CopyBack Write请求的RetryAck响应时,该请求的数据被snoop置为无效,请求方可以:

  • 放弃写请求并返回收到的信用证。
  • 发送写请求时将AllowRetry设置为0,知道后续的数据响应将是CopyBackWrData_I。

  Credits和特定事务之间没有固定的关系。如果Requester收到了多个针对不同事务的RetryAck响应,然后又收到了一个信用,那么就没有固定的信用分配。Requester可以从接收带有特定协议信用类型的RetryAck响应的事务列表中自由选择最合适的事务。

  Retry机制最多支持16种不同的信用类型。这让Completer可以为不同的资源使用不同的信用类型。例如,Completer可能对与读事务相关的资源使用一种信用类型,而对写事务使用另一种信用类型。使用不同的信用类型使Completer能够通过控制Retry的请求中哪些可以再次发送来有效地管理其资源。

——Note——————
如果Completer只使用一种信用类型,建议使用PCrdType值0b0000。
——————————

提供RetryAck响应的Completer必须能够记录所有的RetryAck响应,以确保能够正确分配Credit。如果Completer使用多个信用类型,则必须记录每种信用类型的RetryAck响应。

Requester 必须限制它发出的事务,这样Completer就不需要跟踪超过1024个需要PCrdGrant响应的事务。这是通过将每个Requester的未完成事务的最大数量限制为1024来实现的。

事务从请求第一次发出的周期开始,直到:

  • 事务完全完成,由以下所有预期的事务响应的返回来确定:
    — ReadReceipt
    — CompData
    — RespSepData
    — DataSepResp
    — DBIDResp*
    — Comp, CompCMO, CompPersist, and CompStashDone
    — CompDBIDResp

  • 它接收RetryAck和PCrdGrant,并且是:
    — 使用适当PCrdType的信用重新Retry,然后根据所有响应的返回确定完全完成。
    — Canceled并使用PCrdReturn消息返回收到的信用。

Requester可以重用请求使用的TxnID值:

  • 一旦收到该请求的RetryAck响应。
  • 一旦接收到该请求所需的所有响应(如果接收到的响应是Non-RetryAck响应)。

每个事务请求都包含一个QoS值,Completer可以使用该值在资源可用时影响信用的分配。

2.9.1 Credit Return

  Requester获得的credits可能比它需要的要多。

本规范没有定义何时会发生这种情况,但有两种典型的情况:

  • 在第一次尝试到可以用P-Credit重新发送的时间点之间,事务被取消。
  • 随着QoS值的增加,事务被请求多次。但是,只需要完成一次事务。

——Note——————
如果Requester在第一个请求得到RetryAck响应之前发出第二个请求,则两个事务的发生必须是可接受的。然而,作为一个例子,这种行为对于访问外围Device来说通常是不可接受的。
——————————

Requester通过使用PCrdReturn事务返回信用。这实际上是一个使用不需要的信用的No Operation事务。该事务用于通知Completer,给定的PCrdType不再需要分配的资源。

任何不需要的Credit必须及时退还。

——Note——————
任何未使用的预分配Credit必须归还,以避免组件持有Credit,期望以后使用它们。这种行为很可能导致资源的低效使用,并使系统性能分析变得困难。
——————————

2.9.2 Transaction Retry mechanism

  以下部分描述Retry机制使用的请求事务字段。

事务Retry机制不适用于PrefetchTgt事务。

AllowRetry
AllowRetry字段指示请求事务是否可以得到RetryAck响应。该字段指定发送请求时没有P-Credit,并且目标可以确定是否给出重试响应。
在这里插入图片描述
AllowRetry字段在以下情况下必须取消断言:

  • 事务使用预先分配的P-Credit。
  • 事务是PrefetchTgt。

PCrdType
PCrdType字段表示与请求关联的信用类型,确定方法如下:

  • 对于请求事务:
    — 如果断言AllowRetry字段,则PCrdType字段必须设置为0b0000。
    — 如果取消AllowRetry字段,则必须将PCrdType字段设置为首次尝试事务时从Completer发回的RetryAck响应中返回的值。
  • PCrdReturn事务必须将信用类型设置为正在返回的信用类型的值。
    在这里插入图片描述
  • 对于具有单个信用类别或未实现信用类型分类的目的地,建议将PCrdType字段设置为0b0000。

  Completer必须实现饥饿预防机制,以确保所有事务,无论所需的QoS值或信用类型如何,最终都将向前推进,即使在很长一段时间内也是如此。这是通过确保最终将Credits给予接收到RetryAck响应的每个事务来实现的。

2.9.3 Transaction Retry flow

一个典型的事务Retry流。
在这里插入图片描述
1、RN-F向HN-F发送ReadOnce请求。

  • 这是在没有信用的情况下完成的,因此断言了AllowRetry。这意味着PCrdType必须设置为0b0000。

2、HN-F接收请求并发送RetryAck响应,因为请求无法在HN-F上获得Buff资源。

  • 请求被记录并且一个PCrdType被确认在HNF上。

3、HN-F在为事务分配资源后,使用PCrdGrant响应发送P-Credit。

  • PCrdGrant包括为原始请求分配的PCrdType。

4、RN-F重新发送ReadOnce事务并取消AllowRetry。

  • 请求使用P-Credit,并将PCrdType字段设置为为原始请求分配的值。

允许(但不期望)Completer在发送相关的RetryAck响应之前发送PCrdGrant。

——Note——————
Requester 可能在RetryAck之前收到PCrdGrant。
——————————

在收到事务的RetryAck响应和适当的P-Credit之前,不能重新发送该事务。

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

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

相关文章

【设计模式系列】抽象工厂模式

一、什么是抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。这种模式允许客户端使用抽象的接口来创建一组…

一小时快速入门Android GPU Inspector

本文介绍如何使用 Android GPU Inspector (AGI) 对Android 应用进行系统性能分析和帧性能分析 。面向熟悉Android图形的开发者。 待分析应用需要的前置条件 (1) 将应用设置为可调试状态 <application [...] android:debuggable"true">&#xff08;2&#xff09…

LabVIEW水质监测系统

在面对全球性的海洋污染问题时&#xff0c;利用先进技术进行水质监测成为了保护海洋环境的关键手段之一。开发了一种基于LabVIEW的海洋浮标水质监测系统&#xff0c;该系统能够实时监测并评估近海水域的水质状况&#xff0c;旨在为海洋保护和污染防治提供科技支持。 项目背景 …

svn-拉取与更新代码

右键项目文件 进行更新与提交代码&#xff0c;提交代码选择更改的文件以及填写commit

电子部授课1

今天下午有院科协的授课&#xff0c;涉及电赛知识&#xff0c;单片机环境构建和模拟方向讲解。感觉要学知识还是很多呜呜呜 这是电赛讲解&#xff0c;主要是五个方面&#xff0c;有一个讲太快了没有听清哈哈哈 后面是全程搜概念的模拟&#xff0c;真的有很多知识不太明白 慌乱…

Java项目-基于springboot框架的会员制医疗预约服务管理信息系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

云曦10月13日awd复现

一、防御 1、改用户密码 passwd <user> 2、改数据库密码 进入数据库 mysql -uroot -proot 改密码 update mysql.user set passwordpassword(新密码) where userroot; 查看用户信息密码 select host,user,password from mysql.user; 改配置文件&#xff0c;将密码改为自己…

Quartus Ⅱ仿真 1.半加器

真服了&#xff0c;csdn上一搜全是收费&#xff0c;服啦服啦&#xff0c;我就自己来写一个吧 仿真波形&#xff1a; 输出结果&#xff1a; 介绍&#xff1a; 半加器&#xff08;Half Adder&#xff09;是数字电路中的一种基本组件&#xff0c;用于实现两个一位二进制数的加…

基于Leaflet和SpringBoot的全球国家综合检索WebGIS可视化

目录 前言 一、Java后台程序设计 1、业务层设计 2、控制层设计 二、WebGIS可视化实现 1、侧边栏展示 2、空间边界信息展示 三、标注成果展示 1、面积最大的国家 2、国土面积最小的国家 3、海拔最低的国家 4、最大的群岛国家 四、总结 前言 在前面的博文中&#xff…

HCIP-HarmonyOS Application Developer 习题(十五)

&#xff08;判断&#xff09;1、在HarmonyOs中发布带权限公共事件&#xff0c;发布者首先要在config.json中申请所需的权限。 答案&#xff1a;正确 分析&#xff1a;发布携带权限的公共事件&#xff1a;构造CommonEventPublishInfo对象&#xff0c;设置订阅者的权限。 &#…

[C++]ecplise C++新建项目跑hello world

测试通过版本&#xff1a; ecplise-cpp 2024-09 ecplise-cpp 2020-09 【前提】 安装好MinGW环境&#xff0c;实际测试不需要下载什么CDT插件就可以运行了。 步骤&#xff1a; &#xff08;1&#xff09;打开ecplise,选择launch 选择File->New->C/C Project 选择C M…

Win11右键默认显示更多选项

Win11默认显示 想要效果 解决方案1 先按住Shift键&#xff0c;再按右键试试。 解决方案2 1.启动命令行&#xff0c;输入命令 reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve2.显示操作成功完成&#…

基于SpringBoot+Vue+uniapp微信小程序的校园反诈骗微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

【C++复习】经典笔试题

文章目录 八大排序快排过程 卡特兰数反转链表链表的回文结构左叶子之和另一棵树的子树归并排序类与对象编程训练杨辉三角字符串乘积二叉树前序遍历成字符串数组的交集二叉树的非递归前序遍历连续子数组的最大乘积 八大排序 插冒归稳定 快排过程 以 [3,4,6,1,2,4,7] 为例&#…

《献给阿尔吉侬的花束》

这是看过的错别字最多的一本书&#xff0c;错别字多并不是这本书的缺点&#xff0c;反而是一个亮点。全书以“近步抱告”的形式讲述了想变“聪明”的查理的故事。很治愈&#xff0c;也很虐心。聪明有聪明的代价&#xff0c;看到的感受到的越多&#xff0c;需要强大的内心去承受…

jmeter中用csv data set config做参数化2

在jmeter中&#xff0c;使用csv data set config进行参数化是很重要的一个功能&#xff0c;但是这个功能的使用需要十分仔细和小心&#xff0c;因为细节之处往往决定着结果的正确与否。 举例&#xff1a; 一个登录接口用加密密码登录&#xff0c;一个登录接口用原始密码登录。…

堆的使用实例

小伙伴们大家好&#xff0c;今天为大家带来一道算法题&#xff1a; 分析题意我们可知&#xff1a;数组最小元素一定位于0~k位置&#xff0c;如果我们首先将0~k位置构成最小堆&#xff0c;那么堆顶一定就是数组最小值。将堆顶拿出&#xff0c;将数组k1位置放入&#xff0c;那么数…

vue查缺补漏

之前学习过vue基础&#xff0c;在工作上使用的时候也没有什么问题。最近在看30分钟学会Vue之核心语法,发现有一些不常用的、但挺重要的都快忘掉了&#xff0c;在此补漏一下。 搭建演示环境 创建index.html 导入 vue.min.js文件 <!DOCTYPE html> <html lang"en&…

遇到“mfc100u.dll丢失”的系统错误要怎么处理?科学修复mfc100u.dll

遇到“mfc100u.dll丢失”的系统错误会非常麻烦&#xff0c;因为mfc100u.dll是Microsoft Visual C 2010 Redistributable Package的重要部分&#xff0c;许多应用程序和游戏在运行时都需要调用这个文件。如果这个文件缺失&#xff0c;可能会导致相关软件或游戏启动失败。面对这种…

[Linux网络编程]03-TCP协议

一.TCP协议数据通信的过程 TCP数据报如下&#xff0c;数据报中的标志位双端通信的关键。 三次握手: 1.客户端向服务端发送SYN标志位&#xff0c;请求建立连接&#xff0c;同时发送空包 2.服务端向客户端回发ACK标志位(即确认标志位&#xff0c;任何一端发送数据后都需要另一端…