【ARM AMBA5 CHI 入门 12.1 -- CHI 链路层详细介绍 】

news2024/11/19 22:35:59

文章目录

    • CHI 版本介绍
    • 1.1 CHI 链路层介绍
    • 1.1.1 Flit 切片介绍
      • 1.1.2 link layer credit(L-Credit)机制
      • 1.1.3 Channel
      • 1.1.4 Port
      • 1.1. RN Node 接口定义
      • 1.1.6 SN Node 接口定义
    • 1.2 Channel interface signals
      • 1.2.1 Request, REQ, channel
      • 1.2.2 Response, RSP, channel
      • 1.2.3 Snoop, SNP, channel
      • 1.2.4 Data, DAT, channel
    • 1.3 Flit packet definitions
      • 1.3.1 Request flit

CHI 版本介绍

目前有六个版本的 CHI 协议,CHI-A 是 CHI 协议的第一个版本。它提供了一个传输层,具有减少拥塞的功能。

  • CHI-A 规范描述了 CHI 的基本行为:

    • 新通道、CHI 术语和组件命名的定义;
    • 请求、监听过滤器和缓存状态转换的示例;
    • 事务排序、独占访问和分布式虚拟内存(DVM)操作的规则;
  • CHI-B 问题扩展了 CHI-A,但不能直接向后兼容 CHI-A。它添加了支持 Armv8.1 和 Armv8.2 系统扩展的功能,例如:

    • 更大的物理地址宽度;
    • 原子事务;
    • DVM 的 VMID 扩展;
    • 通道字段、事务结构和可靠性、可用性和可维护性(RAS)特性的描述;
    • 直接内存传输和直接缓存传输功能,减少内存和监听访问延迟;
  • CHI-C 问题是 CHI-B 的次要扩展。此扩展主要添加了减少请求危险生命周期的功能。CHI-C 还添加了两个操作码,以减少完成确认的时间,并对协议进行了更改以支持这些操作码。

1.1 CHI 链路层介绍

链路层(link layer) 提供了数据传输的通道,链路层定义了:

  • Packet 和 flit 的格式;
  • 数据的流控。

下图显示了一个典型的 链路层的连接图:
在这里插入图片描述

1.1.1 Flit 切片介绍

一个 message 可以是 transaction request,data response,snoop request,由一个或多个packet 构成;packet 是 ICN和端点间的传输粒度。

  • 一个 packet 由一个或多个flit组成;flit是最小的流控单位
  • 一个 flit 由一个或多个phit 组成;phit 是物理层传输单位,被定义为两个相邻网络设备之间的一次传输。

有两种类型的 flits:

  • protocol flit: 在 flit的 payload中携带 protocol packet 数据,可以理解为各种类型transaction,比如request,read, write,snoop等;
  • link flit:在link断链过程中,link flit用于返回 L-Credit 给receiver,Link flits 产生于 transmitter,截止于另一侧的receiver;link flit的Opcode域为0,TxnID域为0,其它剩余的域段可以为任意值。

1.1.2 link layer credit(L-Credit)机制

使用 L-Credits,信息可以在interface channel上传输。从transmitter往receiver发送一个 flit 必须要先获得一个L-Credit。
receiver 通过将 LCRDV 信号拉高一拍表示给 transmitter 发送一个 L-Credit,每个通道都有一个 LCRDV 信号。每次从 transmitter 往receiver 的一个flit传输都需要消耗一个 L-Credit。receiver最小能提供的 L-Credit是1个,最大是15个。receiver必须保证有能力接受所有已经发送L-Credit的flits。

当 link 为 active 时,receiver 必须及时提供 L-Credit,不能和 transmitter 的其它组件功能有任何耦合关系。L-Credit不能在同一个周期被收到就马上使用。

是什么是 Link?
如下图所示,发送端和传输端之间的flit传输即是在link上进行的:
在这里插入图片描述
什么是 Outbound Link 和 inbound links?
如下图所示:
在这里插入图片描述

1.1.3 Channel

链路层提供一组channel用于 flit 的传输, 每种channel都有固定的格式,这些格式还有多个域。

Channel Description Usage RN Channel SN Channel
Req such as Read requests and Write requests All Requests TXREQ RXREQ
RSP response messages, do not have a data payload such as write completion messages
Responses from the Completer
Snoop Response and Completion Acknowledge

RXRSP
TXRSP
TXRSP
SNP Snoop and SnpDVM

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

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

相关文章

一个完整的初学者指南Django-part2

介绍 欢迎来到 Django 教程的第二部分!在上一课中,我们安装了项目所需要的一切软件,希望你们在学习这篇文章之前,安装了 Python 3.6,并且在虚拟环境中运行Django 1.11。因为,在本篇文章中,我们…

并购交易:埃克森美孚商谈以250美元/股的价格收购先锋自然资源

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,埃克森美孚(XOM)正在商谈以250美元/股的价格收购先锋自然资源(PXD)。 彭博社援引知情人士的消息报道称,一项全股票交易最早可能于周三宣布。按照每股250美元的价格计算,先锋…

【动态规划】198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III

提示:努力生活,开心、快乐的一天 文章目录 198. 打家劫舍💡解题思路🤔遇到的问题💻代码实现🎯题目总结 213. 打家劫舍 II💡解题思路🤔遇到的问题💻代码实现🎯…

postman发送POST请求,模拟请求头界面的响应信息

postman发送POST请求 示例:微信公众平台创建用户标签接口,业务操作如下: 1、打开微信公众平台,微信扫码登录:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login 同时,我也为大家准备了一份…

求二叉树节点的个数——后序遍历

之前我们已经学习了二叉树前中后序的遍历,在次基础上我们利用遍历来求二叉树的节点个数 利用变量来计数: int BinaryTreeSize(BTNode* root) {int size 0;if (root NULL){return 0;}else{size;}BinaryTreeSize(root->left);BinaryTreeSize(root-&…

Spring5应用之事务属性

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…

指针拔尖(2)(巩固提高,全网最牛,包会,看不懂带电脑来找我)

文章目录 前言变量的声明 一、函数指针二、函数指针数组三、指向函数指针数组的指针四、 回调函数总结 前言 提示:本章是指针拔尖系列的终章,有四大知识点。 一、函数指针 二、函数指针数组 三、指向函数指针数组的指针 四、回调函数 但学习这些知识点我…

【STM32单片机】防盗报警器设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用按键、动态数码管、蜂鸣器、指示灯、热释电人体红外传感器等。 主要功能: 系统运行后,默认处于布防状态,D1指示灯…

Netty深入浅出Java网络编程学习笔记(三) 优化篇

目录 五、优化 1、拓展序列化算法 序列化接口 枚举实现类 修改原编解码器 2、参数调优 CONNECT_TIMEOUT_MILLIS 使用 源码分析 SO_BACKLOG 三次握手与连接队列 作用 默认值 TCP_NODELAY SO_SNDBUF & SO_RCVBUF ALLOCATOR 使用 ByteBufAllocator类型 RCVBUF_ALLOCATOR 3、RP…

2023.10.11

#include <iostream>using namespace std;class Sofa{ private:int price;int* size; public://无参构造Sofa(){}//有参构造Sofa(int p,int size):price(p),size(new int(size)){}//析构~Sofa(){delete size;}//拷贝构造Sofa(Sofa &other):price(other.price),size(n…

TensorFlow入门(二十、损失函数)

损失函数 损失函数用真实值与预测值的距离指导模型的收敛方向,是网络学习质量的关键。不管是什么样的网络结构,如果使用的损失函数不正确,最终训练出的模型一定是不正确的。常见的两类损失函数为:①均值平方差②交叉熵 均值平方差 均值平方差(Mean Squared Error,MSE),也称&qu…

[计算机网络基础]物理层详解

首先说明,基本的概述我还没写完,那部分虽然简单但是感觉要照顾到很多概念..... 以及本系列博客使用点模型并非iso模型,也并非tcp/IP模型,而是我们俗称的教学模型 也就是:物理层,数据链路层,网络层,传输层,应用层这五个,整个模型大多数是在教学中使用的,现实中基本不会这样子划…

spring容器ioc和di

spring ioc 容器的创建 BeanFactory 接口提供了一种高级配置机制&#xff0c;能够管理任何类型的对象&#xff0c;它是SpringIoC容器标准化超接口&#xff01; ApplicationContext 是 BeanFactory 的子接口。它扩展了以下功能&#xff1a; 更容易与 Spring 的 AOP 功能集成消…

K8S云计算系列-(3)

K8S Kubeadm案例实战 Kubeadm 是一个K8S部署工具&#xff0c;它提供了kubeadm init 以及 kubeadm join 这两个命令来快速创建kubernetes集群。 Kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它故意被设计为只关心启动集群&#xff0c;而不是之前的节点准备工作…

echarts仪表盘vue

<div class"ybptx" ref"btryzb"></div>mounted() {this.getBtData();},getBtData() {var chart this.$echarts.init(this.$refs.btryzb);var data_czzf 88;var option {series: [{name: 内层数据刻度,type: gauge,radius: 80%,min: 0,max: 1…

Selenium+Pytest自动化测试框架

前言 selenium自动化 pytest测试框架 本章你需要 一定的python基础——至少明白类与对象&#xff0c;封装继承 一定的selenium基础——本篇不讲selenium&#xff0c;不会的可以自己去看selenium中文翻译网 测试框架简介 测试框架有什么优点呢&#xff1a; 代码复用率高&…

【安全】linux audit审计使用入门

文章目录 1 audit简介2 auditctl的使用2 audit配置和规则3 工作原理4 audit接口调用4.1 获取和修改配置4.2 获取和修改规则4.3 获取审计日志 5 audit存在的问题5.1 内核版本5.2 审计日志过多造成的缓存队列和磁盘问题5.2 容器环境下同一个命令的日志存在差异 6 参考文档 1 audi…

【gmail注册教程】手把手教你注册Google邮箱账号

手把手教你注册Google邮箱账号 写在前面&#xff1a; 要注意&#xff0c;注册Google邮箱必须要确保自己能够 科学上网&#xff0c;如果暂时做不到&#xff0c;请先进行相关学习。使用的手机号是大陆&#xff08;86&#xff09;的。 在保证自己能够科学上网后&#xff0c;在浏…

[硬件基础]-双稳态多谐振荡器配置

双稳态多谐振荡器配置 文章目录 双稳态多谐振荡器配置1、概述2、双稳态多谐振荡器的内部运行原理 在上一篇文章中&#xff0c;我们深入了解了555定时器在单稳态模式下的内部工作原理。 如果您已经理解了上一篇文章&#xff0c;那么本文对您来说将会非常简单。 我们将研究 555 定…

C++ - 智能指针 - auto_ptr - unique_ptr - std::shared_ptr - weak_ptr

前言 C当中的内存管理机制需要我们自己来进行控制&#xff0c;比如 在堆上 new 了一块空间&#xff0c;那么当这块空间不需要再使用的时候。我们需要手动 delete 掉这块空间&#xff0c;我们不可能每一次都会记得&#xff0c;而且在很大的项目程序当中&#xff0c;造成内存泄漏…