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

文章目录

    • 介绍
    • 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.mzph.cn/news/70158.shtml

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

相关文章

CentOS7安装时直接跳过了安装信息摘要页面的解决方法

最近在配置Hadoop虚拟机的时候,创建的centos7虚拟机在安装信息摘要时直接自动跳过,直接跳到设置用户名和密码,在重复多次的重新删除安装后发现了问题所在: 在进行到选择操作系统来源时,注意是否出现“该操作系统将使用…

【vue2第十五章】VueRouter 路由配置(VueRouter)与使用 和 router-link与router-view标签使用

单页面应用 与 多页面应用 单页面应用(Single-Page Application,SPA)和多页面应用(Multi-Page Application,MPA)是 Web 应用程序的两种不同架构方式。它们在页面加载和交互方式上有所区别。 单页面应用&a…

GitHub个人访问凭证在哪看

要查看 GitHub 个人访问凭证(Personal Access Token),请按照以下步骤进行操作: 登录到你的 GitHub 帐户。点击右上角的头像,然后选择 “Settings”(设置)。在左侧导航栏中,选择 “D…

iOS 17中的Safari配置文件改变了游戏规则,那么如何设置呢

Safari在iOS 17中最大的升级是浏览配置文件——能够在一个应用程序中创建单独的选项卡和书签组。这些也可以跟随你的iPad和Mac,但在本指南中,我们将向你展示如何使用运行iOS 17的iPhone。 你可能有点困惑,为什么Safari中没有明显的位置可以添…

【洛谷 P1328】[NOIP2014 提高组] 生活大爆炸版石头剪刀布 题解(模拟+向量)

[NOIP2014 提高组] 生活大爆炸版石头剪刀布 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第 8 集中出现了一种石头剪刀布的升级版游戏。 升级版游戏在传统的石头剪刀布游戏的基础…

d435i 相机和imu标定

一、IMU 标定 使用 imu_utils 功能包标定 IMU,由于imu_utils功能包的编译依赖于code_utils,需要先编译code_utils,主要参考 相机与IMU联合标定_熊猫飞天的博客-CSDN博客 Ubuntu20.04编译并运行imu_utils,并且标定IMU_学无止境的…

函数栈帧(详解)

一、前言: 环境:X86Vs2013 我们C语言学习过程中是否遇到过如下问题或者疑惑: 1、局部变量是如何创建的? 2、为什么局部变量的值是随机值? 3、函数是怎么传参的?传参的顺序是怎样的? 4、形…

【群智能算法改进】一种改进的鹈鹕优化算法 IPOA算法[1]【Matlab代码#57】

文章目录 【获取资源请见文章第5节:资源获取】1. 原始POA算法2. 改进后的IPOA算法2.1 Sine映射种群初始化2.2 融合改进的正余弦策略2.3 Levy飞行策略 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节:资源获取】 1. 原始POA算法 此…

多线程应用——线程池

线程池 文章目录 线程池1.什么是线程池2.为什么要用线程池3.怎么使用线程池4.工厂模式5.自己实现一个线程池6.创建系统自带的线程池6.1 拒绝策略6.2 线程池的工作流程 1.什么是线程池 字面意思,一次创建多个线程,放在一个池子(集合类),用的时…

如何将枯燥的大数据进行可视化处理?

在数字时代,大数据已经成为商业、科学、政府和日常生活中不可或缺的一部分。然而,大数据本身往往是枯燥的、难以理解的数字和文字,如果没有有效的方式将其可视化,就会错失其中的宝贵信息。以下是一些方法,可以将枯燥的…

BRAM/URAM资源介绍

BRAM/URAM资源简介 Bram和URAM都是FPGA(现场可编程门阵列)中的RAM资源。 Bram是Block RAM的缩写,是Xilinx FPGA中常见的RAM资源之一,也是最常用的资源之一。它是一种单独的RAM模块,通常用于存储大量的数据&#xff0…

xctf攻防世界 MISC之CatFlag

0x01.进入环境,下载附件 拿到的是一个无后缀的flag文件,用winhex打开后发现是奇奇怪怪的乱码,用kali的strings搜索也没找到flag情况。 0x02.问题分析 题目提示如图: 让直接cat就行,在kali中直接尝试输入&#xff1a…

springWeb

springweb就是spring框架中的一个模块,对web层进行了封装,使用起来更加方便。如何方便?参数接收框架进行封装 SpringWeb拥有控制器,接收外部请求,解析参数传给服务层。 SpringWeb运行流程 用户发起请求 ip:端口/项目名…

仿射密码 affine

参考链接:https://www.cnblogs.com/0yst3r-2046/p/12172757.html 仿射加密法 在仿射加密法中,字母表的字母被赋予一个数字,例如 a0,b1,c2…z25 。仿射加密法的密钥为0-25直接的数字对。 仿射加密法与单码加密法没什么…

nginx-QPS限制

漏桶算法: 通过nginx配置实现QPS限速。 #设置请求并发量 qps1,不设置burst,会同时处理并发的请求,但是由于我们只设置了1个qps,所以同一时间内的请求,只有一个是正常的,其他都是失败的。 http配…

GRU门控循环单元

GRU 视频链接 https://www.bilibili.com/video/BV1Pk4y177Xg?p23&spm_id_frompageDriver&vd_source3b42b36e44d271f58e90f86679d77db7Zt—更新门 Rt—重置门 控制保存之前一层信息多,还是保留当前神经元得到的隐藏层的信息多。 Bi-GRU GRU比LSTM参数少 …

升级iOS 17出现白苹果、不断重启等系统问题怎么办?

iOS 17发布后了,很多果粉都迫不及待的将iphone/ipad升级到最新iOS17系统,体验新系统功能。 但部分果粉因硬件、软件的各种情况,导致升级系统后出现故障,比如白苹果、不断重启、卡在系统升级界面等等问题。 如果遇到了这些系统问题…

【MQTT接收数据写入数据库】

MQTT接收数据写入数据库 1.搭建MQTT服务器 参考上一篇文章 2.安装数据库mysql sudo apt update sudo apt install mysql-server创建一个数据库和数据表存储mqtt消息 首先,登录到MySQL服务器: mysql -u root -p输入你的root用户密码。默认root 3.创…

sqlserver数据库链接mysql服务器访问数据

sqlserver数据库链接mysql服务器访问数据 关于SqlServer数据库怎么链接mysql数据库我一直不明白,今天项目碰到一个问题需要链接,我就研究了一下,然后就成功了,在这里记录一下。也欢迎朋友互相学习交流借鉴。 1.使用navicat打开S…

【EI/SCOPUS会议征稿】第二届环境遥感与地理信息技术国际学术会议(ERSGIT 2023)

第二届环境遥感与地理信息技术国际学术会议 2023 2nd International Conference on Environmental Remote Sensing and Geographic Information Technology 第二届环境遥感与地理信息技术国际学术会议(ERSGIT 2023)定于2023年11月10-12日在中国陕西西安…