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

CHI 协议层 Retry —— CHI(8)

为了防止request transactionsREQ通道堵住,CHI协议提供了一种request retry机制,当Completer无法接收request transaction时,可以发RetryAck响应。

Completer通常在没有资源和没有足够存储空间来存放当前的request transaction时,会对Requests进行retry,如果earlier transactions完成并释放资源了,就可以发送PCrdGrant响应允许二次发送命令。

Requester 发送request,不能有Protocol Credit Type

Completer返回RetryAck响应,同时返回Protocol Credit Type

当Completer可以接收request时,返回PCrdGrant响应

Requester 再次发送request(包含Protocol Credit Type

其中:

1. Protocol Credit Type取值范围0-F,意义可以由completer自己定义,例如可以表示传输类型

2. PCrdReturn用来传输Protocol Credit Type ,用于通知completer给定的 PCrdType 不再需要分配的资源

3. Request retry不适用于PrefetchTgt,因为没有对PrefetchTgt来说没有相应的响应。

4. 当Completerrequest进行retry,它需要记录该笔request的来源,也需要决定和记录Protocol Credit的类型,因为后续PCrdGrandP-Credit type要和RetryAck中的一致。

Completer有资源后,它必须发送通过PCrdGrant响应发送P-CreditRequester

5. Protocol Credit A credit, or guarantee, from a Completer that it will accept a transaction
PCrdType指示request请求中的credit type类型,具体取值按如下原则:

        1)对于Request transaction :如果 AllowRetry 置位,那么 PCrdType 域值设置为 0b000 ;如果 AllowRetry 不置位,那么 PCrdType 域值必须等于 RetryAck 响应中的 PCrdType 的值;
        2)PCrdRetrun transaction 必须设置 credit type 等于 Completer 返回的 credit type
        3)对于Completer 只有一个简单的 credit 分类,或没有 credit 分类, CHI 协议建议将 PCrdType 域值设置为 0b000
传输过程如图所示:

If AllowRetry = 1PCrdType 必须为0 ;

If AllowRetry != 1,那么PCrdType值必须等于RetryAck响应中的PCrdType的值

第一次发request时, PCrdType0,再次发request时, PCrdTypecompleter返回的值

网络层如图:
TgtID设置为 remap 之前或者之后的都可以
TxnID可以与原始的TxnID 不同

http://www.kler.cn/a/393432.html

相关文章:

  • 大厂的 404 页面都长啥样?看看你都见过吗~~~
  • @ComponentScan:Spring Boot中的自动装配大师
  • Axure网络短剧APP端原型图,竖屏微剧视频模版40页
  • 在linux中使用nload实时查看网卡流量
  • Jmeter基础篇(22)服务器性能监测工具Nmon的使用
  • IPguard与Ping32全面对比——选择最适合企业的数据安全解决方案
  • 安科瑞工业绝缘监测装置:保障煤矿井下6kV供电系统安全运行的关键应用——安科瑞 丁佳雯
  • Java使用Thumbnails进行图片处理
  • 《C++跨平台编译:打破系统边界,释放代码潜能》
  • pytest执行用例时从conftest.py抛出ModuleNotFoundError:No module named ‘XXX‘异常的解决办法
  • YOLOv8进阶实战:融合SAHI超推理算法,在无人机应用中精准捕捉视频与图片中的微小目标
  • 数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年10月刊
  • Avalonia UI 框架教程
  • Docker安装部署RabbitMQ(详细教程)
  • 【Java多线程】单例模式(饿汉模式和懒汉模式)
  • Docker 镜像和容器的导入导出及常用命令
  • 网络安全之SQL初步注入
  • Locally Linear Embedding (LLE)
  • 文件fd内容
  • 洛谷 P3043 [USACO12JAN] Bovine Alliance G
  • Python练习19
  • Nginx中使用keepalive实现保持上游长连接实现提高吞吐量示例与测试
  • 如何为 SeaTunnel 配置 MySQL 用户并授予权限
  • 实景三维赋能智慧公安建设
  • sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?
  • 爬虫补环境案例---问财网(rpc,jsdom,代理,selenium)