【ARM AMBA5 CHI 入门 12 -- CHI 总线学习 】

news2024/10/5 19:17:58

文章目录

    • 介绍
    • CHI 特点
      • Layers of the CHI architecture
      • Topology
    • Node Type
    • Transaction 分类
      • Transaction 路由
      • SAM 介绍
      • Node ID
    • 节点间数据怎么传输的呢?

介绍

CHI 的全称是 Coherent Hub Interface。所以从名字就能看出,CHI要解决什么问题了。按照惯例,开始之前放一张AMBA的全家福。CHI协议是AMBA的第五代协议,可以说是ACE协议的进化版,将所有的信息传输采用包(packet)的形式来完成。

从CHI开始协议分层了,这是跟以往的总线协议不同的;为了更多组件互连,ARM想要定义一个统一的接口。现代的SoC功能越来越丰富,包含的组件越来越多,处理器,处理器簇、图形处理器、存储控制器、I/O桥、PCIe子系统和CHI互联线等。如何把这些有可能自主研发,也有可能来自不同厂商的模块更好的连接起来,组成一个高效的系统,已是当下SoC设计中的一个难题。

CHI 特点

CHI的特性包括以下:

  • 架构灵活,易于扩展;
  • 独立的分层实现,包括协议层(protocol)、网络层(network)和链路层(link);
  • 基于包传输;
  • 由基于互连的主节点(Home Node,简称HN)处理的所有事务,包括snoop、缓存和内存访问;
  • HN 协调所有的传输请求,包括snoop请求、访问高速缓存和内存;
  • CHI的一致性协议支持:64Byte的缓存行、snoop filter和directory、MESI和MOESI 缓存模型、增加两 个缓存行状态(partial和empty);
  • CHI传输事务包含多种类型,支持原子操作和同步操作,支持cache stashing,DVM(distributed virtual memory)等;
  • 支持Retry机制来管理协议层资源;
  • 支持端到端的QoS(Quality of Service);
  • 可配置的数据宽度来满足系统需求;
  • 支持ARM的TrustZone;
  • 优化传输事务流;
  • 跨组件和互连的错误报告和传播机制,以确保系统的可靠性和完整性;
  • 低功耗信号,可以使能flit级别时钟门控、根据组件的工作情况实施时钟门控或电源门控等低功耗手段。

Layers of the CHI architecture

CHI 协议的三层分为协议层,网络层和链接层,如下图所示:
在这里插入图片描述

  • 在协议层(protocol)规定了各种 transaction;
  • 在网络层(network)规定了packet;
  • 在链路层(link)放了具体的信号。

在协议层,通信是基于transaction;在网络层,基于packet;链路层,基于flit。


  • 一个 Transaction 就是一个单独的操作,比如读或写内存。
  • Message 是协议层术语,用于定义两个组件之间交换信息的粒度,如Request/Data response/Snoop request,一个数据响应message可能由多个packets组成。
  • Packet 是互连端点间的传输粒度,一个message可能由一个或多个packets组成,每个packet包含有目的节点的ID来保证在interconnect上独立路由。
  • Flit 是最小流控单位,一个 packet 可以由一个或多个 flits 组成,对于同一个packet的所有 flits 在互连(ICN)上传输必须遵循同样的路径;
  • Phit 是物理层传输单位,一个flit可以由一个或多个phits组成,phit定义为两相邻网络设备之间的一个传输。

Topology

CHI 协议并不局限具体的拓扑互连。目前常用的SoC互连是下图中的方式:
在这里插入图片描述

  • 交叉开关(Crossbar),这种结构相对简单,互连部分延时小,多用于数量不多的组件互连,缺点是如果互连组件太多,这种结构的内部走线会非常多,不利于物理实现,比较常见的 crossbar 类型 IP 如 ARM公司的 NIC-400;
  • 环形网络(Ring),折中考虑了互连组件数量和延时,有利于中等规模的SoC设计,比较常见的 ring 类型 IP 如ARM公司的 CCN;
  • 二维网格(Mesh),这种拓朴结构可以提供更大的带宽,而且是可以模块化,通过增加网格的行或列来增加更多的节点,ARM的CMN-600就是基于mesh的互连IP。

Node Type

CHI 协议通过节点类型对系统中的不同组件进行分类,并提供了节点之间通信的方法。
主要有三种类型的节点:

  • 请求节点(RN);
  • 基节点(HN);
  • 从节点(SN);
  • 还有杂项节点(MN)。
    在这里插入图片描述

RN(Request Node)产生协议 transaction 给互连,如读和写请求,这些事务发送到 Home Node。
HN(Home Node)用于接收来自 RN 的协议 transaction,负责对请求进行排序,向 Slave Node 生成 transaction,并可以发出监听或处理DVM操作完成相应的一致性操作并返回一个响应。
SN(Slave Node)用于接收来自HN的请求,完成相应的操作并返回一个响应。
MN(Misc/Miscellaneous Node)用于接收来自 RN 的 DVM 操作,完成相应的操作并返回一个响应。

再对 Note Type 做一下细分:


  • RN-F (Fully coherent Request Node,全一致性请求节点):包含硬件一致性cache;允许产生所有协议定义的 transactions,支持所有的 snoop transactions。
  • RN-D (IO coherent Request Node with DVMsupport,支持DVM的IO一致性请求节点):不包含硬件一致性cache,可以接收DVM操作;可以产生协议定义的部分transactions。
  • RN-I (IO coherent Request Node,IO一致性请求节点):不包含硬件一致性cache;不能接受 DVM 操作;可以产生协议定义的部分transactions;不要求具有snoop功能。

  • HN-F (Fully coherent Home Node,全一致性主节点):用于接收除了DVM操作所有的请求操作:包括一个PoC(Point of Coherence)点,通过监听 RN-Fs,管理各Master一致性,完成所有的 snoop响应后,发送一个响应给发出请求的 RN;最好是一个PoS(Point ofSerialization)点,用于管理多个 memory 请求的顺序。可能包含目录或监听过滤,以此来减少冗余的 snoop 请求。
  • HN-I (Non-coherent Home Node,非一致性主节点):处理有限的一部分协议定义的Request:不包含PoC点,也不具备处理snoop请求;最好是一个PoS点,管理访问IO 子系统的请求顺序。

  • MN (Miscellaneous Node):用于接收来自RN发送的DVM操作,完成相应的操作,并返回一个响应。

  • SN-F:用于 normal memory 的从节点,可以处理 Non-snoop 读写请求、atomic 请求、以及这些命令的其它形式、CMO(Cache Maintenance Operation)请求。
  • SN-I:用于 peripheral 或 normal memory 的从节点,可以处理Non-snoop读写、atomic操作、以及这些命令的其它形式、CMO请求。

Transaction 分类

先来看看协议层的transaction,可以分为以下几类( CHI.D):

ReadDatelessWrite
  • ReadNoSnp
  • ReadNoSnpSep
  • ReadOnce
  • ReadOnceCleanInvalid
  • ReadOnceMakeInvalid
  • ReadClean
  • ReadNotSharedDirty
  • ReadShared
  • ReadUnique
  • CleanUnique
  • MakeUnique
  • Evict
  • StashOnceUnique
  • StashOnceShared
  • CleanShared
  • CleanSharedPersist
  • CleanSharedPersistSep
  • CleanInvalid
  • MakeInvalid
  • WriteNoSnpPtl, WriteNoSnpFull
  • WriteUniquePtl, WriteUniqueFull
  • WriteUniquePtlStash, WriteUniqueFullStash
  • WriteBackPtl, WriteBackFull
  • WriteCleanFull
  • WriteEvictFull
AtomicSnoopOther
  • AtomicStore
  • AtomicLoad
  • AtomicSwap
  • AtomicCompare
  • SnpOnceFwd
  • SnpOnce
  • SnpStashUnique
  • SnpStashShared
  • SnpCleanFwd
  • SnpClean
  • SnpNotSharedDirtyFwd
  • SnpNotSharedDirty
  • SnpSharedFwd
  • SnpShared
  • SnpUniqueFwd
  • SnpUnique
  • SnpUniqueStash
  • SnpCleanShared
  • SnpCleanInvalid
  • SnpMakeInvalid
  • SnpMakeInvalidStash
  • SnpDVMOp
  • DVMOp
  • PrefetchTgt
  • PCrdReturn

Transaction 路由

  • 一个RN 会产生 transaction(read,write,maintenance)给 HN;
  • HN 接收,并对 RN 发来的请求进行排序,产生 transaction 给 SN;
  • SN 接收这些请求,返回数据或者响应。

Transaction如何在系统中的节点间路由呢?

  • 首先,系统中的每个节点必须有一个节点号(Node ID)。
  • 系统中的每个 RN 和 HN 内部要有一个系统地址映射(System Address Map,以后简称SAM),负责把地址转换成目标节点的ID。

RN 的 SAM 负责把物理地址转换成 HN 的 ID;而 HN 的 SAM 需要把物理地址转换成 SN 的 ID。

SAM 介绍

系统中的每个组件都被分配一个唯一的节点ID。CHI使用系统地址映射(SAM)将物理地址转换为目标节点ID。
为了能够确定发出请求的目标节点ID,每个RN和HN都必须具有SAM

以下图示展示了RN SAM将物理地址映射到HN节点ID,以及HN SAM将物理地址映射到SN节点ID:
在这里插入图片描述
在这个图示中,事件的顺序如下:

  • 地址为0x8000_0000 的事务通过节点 0 中的 RN SAM;
  • RN SAM确定目标为节点 5;
  • 事务路由到节点 5 的HN;
  • HN接收到事务;
  • HN通过其HN SAM传递地址,并确定目标为节点2;
  • 事务被路由到节点 2 的 SN。

RN SAM 必须满足以下要求:

  • 它必须完全描述整个系统地址空间;
  • 任何不对应于物理组件的物理地址必须映射到一个可以提供适当错误响应的节点;
  • 所有 RN 必须对 RN SAM有一致的视图。例如,无论是哪个RN发出的,地址0xFF00_0000必须始终指向同一个HN。

注:SAM的确切格式和结构完全由实现定义。CHI规范没有提供关于如何将地址映射到节点ID的指导。

再看一个简单例子:
在这里插入图片描述

  • RN0 根据内部的 SAM 知道要把请求发给HN0TgtIDHN0SrcIDRN0);
  • HN0 在通过内部的SAM知道要继续发给SN0ReturnNIDRN0);
  • SN0 接收请求,返回数据(HomeNIDHN0TgtIDHN0ReturnNID而来);
  • RN0 接收到SN0的数据响应,返回CompAckHN以结束此次transaction(TgtIDHN0,从HomeNID而来)。

remapping of the TgtID
在这里插入图片描述
只有TgID做了一次remap,从Home Node0 remap 到了Home Node1, 其它的都和上面传输一样。

Flow with interconnect-based SAM and Retry request
在这里插入图片描述

Node ID

SAM 必须可以对系统的全部地址空间进行解码。CHI 协议建议:对于没有相应物理组件的地址访问,都发送给一个agent,该agent可以对这些无用地址的访问提供恰当的error响应

SAM 的结构和格式是由具体实现决定的,在CHI协议中并没有规定 SAM 实现方式。每一个连接到 ICN 端口的组件都会被分配一个node ID,用于标识 ICN上packets 路由的源节点和目的节点。一个端口可以有多个 node ID,但是一个node ID只能分配给一个端口,通俗点讲就是这个ID必须是唯一的,路由的时候不能有歧义。CHI协议支持的 NodeID字段宽度在7~11bits之间,由具体实现决定,且一个系统中所有组件的NodeID字段宽度必须一样,至于每个组件的 NodeID 值也是由具体实现决定的。

节点间数据怎么传输的呢?

与ACE相比,CHI使用不同的通道:

  • 请求(REQ):发送读和写请求、缓存维护请求和DVM请求;
  • 响应(RSP):发送各种类型消息的完成响应,范围从写和缓存管理响应到无数据监听响应和操作完成确认;
  • 监听(SNP):发出监听或发送DVM操作数据传输消息和标记为DAT的,发送写和读数据,以及带数据的监听响应。

下图显示了 RN-F上CHI 请求者接口上的通道:
在这里插入图片描述

注:以TX字母为前缀的通道用于发送消息,以 RX 字母为前缀的通道用于接收消息。

当 RN-F 发出读请求时,它在其 TXREQ 通道上发送请求;
当读数据返回时,RN-F 在其 RXDAT 通道上接收数据。

每个节点上的 TX 信号连接到目标节点上的 RX 信号。

RN-F Interface:
在这里插入图片描述
RN-D Interface:
在这里插入图片描述
RN-I Interface:
在这里插入图片描述
SN-F Interface:
在这里插入图片描述

在 SNP 通道上发生以下约束:

  • 只有HN-F和 MN 在SNP通道上发出消息;
  • RN-F 仅在SNP通道上接受监听;
  • MN 仅在SNP通道上接受DVM消息监听。

推荐阅读
https://aijishu.com/a/1060000000220025

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

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

相关文章

思维导图怎么变成ppt?4个思维导图一键生成ppt的方法

做好的思维导图如何变成一份ppt?本文罗列了4个可行方法,一起来看看吧。 一 直接复制粘贴 这是最简单的方法,虽然这样可能会花费一些时间,但可以确保内容排版和布局与你想要的一致。当然,我们大可使用更高效的方法。…

NLP(2)--Transformer

目录 一、Transformer概述 二、输入和输出 三、Encoder 四、Decoder 五、正则化处理 六、对于结构的改进? 七、AT vs NAT 八、Cross-attention 一、Transformer概述 Transformer模型发表于2017年Google团队的Attention is All you need这篇论文,…

七、SSM 框架整合

目前已经学习了 MyBatis 框架,Spring 框架,以及Spring MVC 框架。现阶段学习将这三个框架整合到一起,实现简单的前后端交互的曾删改差功能页面。 Mybatis 框架主要负责数据库的操作问题,以及数据回显。该框架将 SQL 与 Jav…

Browserslist 信息和配置使用整理

我们可以在各种前端工程看到 Browserslist 的配置身影,看似简单但实际上可能会有暗坑导致线上兼容问题,借此文来整理下 Browserslist 的信息。 Browserslist 是由 Autoprefixer 团队维护的一个开源项目,用于自动处理 CSS 和 JavaScript 文件…

opencv识别一张图片的多个红框,并截取红框的内容

需求 需要获取图片的红框的内容,实体的图片我就不放了 获取红框 先截取获得图片的多个轮廓 import cv2 import numpy as np # 加载图像并转换为灰度图像 image cv2.imread(image6.jpg) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用高斯模糊以减…

基本的 Linux 命令以及 Linux 目录结构

目录 什么是Linux? ls - 列出文件和目录 pwd - 显示当前工作目录 cd - 切换目录 mkdir - 创建目录 touch - 创建空文件 rm - 删除文件和目录 cp - 复制文件和目录 mv - 移动和重命名文件和目录 文件系统基础 Linux 操作系统是开源且强大的操作系统&…

流媒体之推流和拉流

推流:将直播内容推送至服务器的过程 拉流:为服务器已有直播内容,用指定地址进行拉取的过程 什么是推流? 推流,指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。“推流”…

D. Sorting By Multiplication(贪心)

Problem - D - Codeforces 给定一个长度为n的数组a,由正整数组成。 您可以对该数组执行以下操作任意次数(可能为零): 选择三个整数l、r和x,使得1≤l≤r≤n,并将满足l≤i≤r的每个ai乘以x。 请注意&#…

操作系统内存(32位为例)

0、OS能使用最大的虚拟内存和物理内存 最大的虚拟内存与寻址总线有关。一般是40根,对应256T 最大的物理内存与PTE的位数有关。 10-10-12分页模式下是32位,所以最大寻址空间就4G 1、CPU分页模式 分类 还有5-level,一般适用于大型服务器。…

【Springcloud】Seata分布式事务

【Springcloud】Seata分布式事务 【一】基本介绍(1)什么是分布式事务(2)为什么要使用分布式事务(3)seata分布式事务 【二】下载方式【1】Windows平台安装包下载 【三】如何使用【1】创建相关测试数据库和表…

每日刷题-1

目录 一、选择题 二、编程题 1、组队竞赛 2、删除公共字符 一、选择题 1、 解析:%s遇到\0会停止,%m.ns中m表示字符串宽度,n表示左起取目标字符串n个字符,右对齐,(如果想要左对齐,可以写成%-m.n…

【C++学习笔记】5、变量作用域

文章目录 【 1、局部变量 】【 2、全局变量 】【 3、局部变量和全局变量的初始化 】 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明的变量,称…

【LeetCode】剑指 Offer <二刷>(2)

目录 题目:剑指 Offer 04. 二维数组中的查找 - 力扣(LeetCode) 题目的接口: 解题思路: 代码: 过啦!!! 题目:剑指 Offer 05. 替换空格 - 力扣&#xff0…

【ROS 05】ROS常用组件

在ROS中内置一些比较实用的工具,通过这些工具可以方便快捷的实现某个功能或调试程序,从而提高开发效率,本章主要介绍ROS中内置的如下组件: TF坐标变换,实现不同类型的坐标系之间的转换;rosbag 用于录制ROS节点的执行过…

基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能

概述 本例子基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能。 详细 一、准备工作 1、首先注册两个邮箱,一个发送邮箱,一个接收邮箱。 2、发送邮箱开启IMAP/SMTP/POP3服务&#xff0c…

服务器间 ssh 免密登录

1、在所有服务器生产密钥文件 ssh-keygen -t rsa一直空格就可以 2、查看所有节点的公钥文件 cat /home/bigdata/.ssh/id_rsa.pub3、将所有节点的公钥文件写入到authorized_keys文件中 4、将authorized_keys文件分发给其他节点并修改权限 #注意查看authorized_keys文件的权…

131.【MySQL_基础篇】

MySQL_基础篇 (一)、MySQL 介绍1.MySQL三大阶段(1).基础篇(2).进阶篇(3).运维篇 2.MySQL 概念3.数据模型(1).关系型数据库(RDBMS) 4.数据库三大范式 (二)、SQL 编程语言1.SQL通用语法2.SQL 四大分类3.DDL (数据定义语言)(1).数据库操作 ->(增删改查)(2).表操作 -> (增删改…

整数拆分【动态规划】

整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 class Solution {public int integerBreak(int n) {int[] dp new int[n 1];//正整数&#x…

day 48|● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 dp的含义:指0开头,i- 1和j - 1为结尾的两个序列的删除最小数 递推公式方面: 初始化方面:前面0行和0列的初值要赋好 func minDistance(word1 string, word2 string) int {dp : make([][]int, len(wor…

工具教程【甜心转译】-双语字幕、中文语音生成,打破信息差

甜心转译是一款AI加持的音/视频生成双语字幕、中文语音的软件。帮助人们更容易的获取外语信息、不管是学习、还是娱乐,快人一步。 主要功能 字幕生成:只需几个简单的步骤,轻松生成字幕。字幕翻译:只需一键,就可以将字…