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

CCN-508 规范

写在前面

由于需要在项目中配置多核 cache 一致性以及流量控制相关任务,所以阅读了《corelink_ccn508_cache_coherent_network_technical_reference_manual_100020_0001_01_en》.

在阅读之间,你也许需要了解一下 CHI 总线知识?

第一章-介绍

CCN-508 是基于 AMBA 5 CHI 总线的一个可扩展一致性内部互连硬件模块。
CCN-508 模块中,包含下列的 CHI 总线协议节点:

  • RN-F: 完全一致性节点,带 cache 的总线事务请求节点,比如 CPU Cluster;
  • RN-I Bridge: I/O 一致性节点桥,用于桥接不带 cache 的总线事务节点,比如各外设控制器;
  • HN-F: CHI 总线协议内部节点,用于访问 L3 Cache 与 SN-F, 以及接受来自 RN-F 与 RN-I 的 cache 一致性请求,并且生成 cache 维护与监控给所有的 RN-F;
  • HN-I:CHI 总线协议内部节点,用于传递与 RN-I 的总线事务,主要确保发送往 I/O 子系统的请求顺序;
  • SN-F: 完全一致性主节点,最多 4 个,链接 DDR 控制器;
  • MN: 杂项节点,用于处理屏障指令、DVM 操作、配置访问、错误处理、中断生成,MN 与 HN-I 使用同一个 NodeID;
  • RN-D: 支持虚拟内存访问的 I/O 一致性节点,需要SMMU?可以在 snoop 中获取 DVM 消息。

在一个 SOC 中,CCN-508 承担如下图的角色:
在这里插入图片描述
在上图中:

  1. CCN-508 通过 CHI RN-F 接口链接 cpu cluster;
  2. 通过至多 4 个的 CHI SN-F 链接 memory controller 访问 DDR
  3. 剩余对外的 AXI4/ ACE-Lite 接口连接 I/O 外设控制器。

第二章-CCN-508 功能描述

CCN-508 将 ARM 架构内部互连与 cache 一致性功能整合到一个模块里。(包含总线功能与 cache 管理),如下图:

在这里插入图片描述

功能如下:

  • 存在 16 个 crosspoint 的双环形结构,每一个 XP 支持最多两个端口;
  • 支持最多 8 个全一致性处理器 clusters;(8 个 RN-F);
  • 支持最多 4 个内存控制器(SN-F);
  • 支持最多 24 个 ACE-Lite/ACE-Lite+DVM/AXI4 I/O master 设备(GPU/DMA/UART/SPI 等外设);
  • 虚拟通道等于物理通道的方式,提供充足的系统带宽;
  • 两个 128 位,双采样数据通道;
  • 广播监控通道
  • master 之间的 DVM 消息传输;
  • 针对流量控制的 QoS 调度器;
  • 存在一个 PMU 对性能相关事件进行计数;
  • 高性能,分布式的系统 L3 cache;(L3 Cache 位于 HN-F)
  • OCRAM, 无DDR 情况下运行;(OCRAM 也存在 CCN 508 上面?那应该同上)
  • 两个 HN-I (I/O home node)节点, 支持 ACE-Lite/AXI4 协议(那么外设控制器可以通过 HN-I 直接访问系统 cache 或 DDR?),可以用于链接各种外设;
  • 存在单独的错误总线,可以为错误生成对应中断;
  • 支持 44 位的物理地址空间。

1.XP(Crosspoint)

XP 是一个交换与路由单元,是 CCN 508 的重要组件。

多个 XP 之间的链接组成了 CCN 508 的双环形结构。

Device to XP asynchronous Bridge (DSSB) 是每一个 XP 模块的可选组件用于实现与 device 通信(不过这也是可选的,取决于设备与 XP 的时钟异步要求)。

DSSB 主要用于 XP 与 RN-F 连接。

2. HN-F(Fully-coherent Home Node)

每一个 HN-F 被配置为负责管理 CPU 地址空间的一部分。(所有的 HN-F 共同管理 DDR 地址空间?) 内存映射的 I/O 控制器及其映射的内存空间不在 HN-F 的管理范围内。

HN-F 由以下组件构成:

  • L3 Cache
  • Combined PoS/PoC
  • Snoop filter

3. RN-I brige(I/O-coherent Requesting Node bridge)

RN-I brige 用于链接 I/O-coherent AMBA master 到 CCN 508.(相当于链接内存映射的外设控制器到 CCN-508).

RN-I brige 包括:

  • 最多3个 ACE-Lite 从机端口,最多可链接 3 个外设控制器;
  • 一个 CHI RN-I 接口,用于链接到 CCN 508 的双环行结构;

4. HN-I(I/O Home Nodes)

称作路由节点更合适?

传输 CHI 总线与 AMBA 总线之间事务。(类似访问外设总线?)可以将 DSB 与 DMB 指令广播到 I/O 子系统中。

5. CHI to AXI brige

CHI to AXI bridge (SBSX) 能够让 AXI4 外设总线上的设备作为 CCN-508 的 SN-F(?涉及总线转换的也不止 SN-F吧,RN-I?).

比如将 DMC-400 内存控制器,作为 SN-F 链接到 CCN-508。

6. MN(Miscellaneous Node)

MN 作为杂项节点,用于处理其他的非正常访问事务,比如cache 一致性管理,错误处理,中断生成。
7.QoS
CCN-508包含一个端到端的QOS能力?(怎么理解)
QoS设备分类如下:

  • 存在延迟要求的设备,可以容忍一定程度的延迟;
  • 延迟敏感的设备,延迟会极大影响设备性能;
  • 带宽敏感的设备,存在最低带宽需求的设备
  • 高带宽需求的设备,带宽会影响设备性能

CHI总线架构规定所有的flits存在一个4位的Qos优先级位。数值越大,优先级越高,每一个RN都可以单独配
置Qos。(这也是多个总线事务的排序规则?事务优先级?)

QoS调度器可以控制QoS满足每一个节点的延迟和带宽要求。(双环形队列上的每一个XP都存在QoS,以及
SBSX?)

Qos控制器有3个操作模式,通过内存映射的寄存器控制:

  1. 透传
  2. 可编码QoS值
  3. 调度

通过配置控制器的QoS,来实现延迟与带宽控制。

QoS调度器可以配置为延迟调度模式与周期调度模式。

  • 延迟调度模式,根据实际的事务延迟动态调整QPV;
  • 周期调度模式,调度器根据总线流量是否满足时间要求来动态调整QPV。

XP还包含优先级仲裁。

soc开发人员以及底层驱动开发人员来正确的配置CCN-508来满足系统的带宽与延迟需求。

不过在配置QoS之前,需要从SOC厂商知道SOC总带宽。

8.DVM消息

Distributed Virtual Memory(DVM)用于RN-F/D访问虚拟地址内存,需要MMU、SMMU支持

9.PCle集成

CCN-508能集成 PCle RC或EP。(那么说明CHI也是差分信号)

10.错误处理

CCN-508同样支持错误处理与报告功能
错误分为可纠正错误与不可纠正错误。每一种错误的处理方式不一样.
都存在相应的寄存器来描述错误。

11.NodeID 映射

CCN-508 中每一个节点包括 XP 都有一个 ID 号。
但是 NodeID 与 XP ID 不一致:

  • NodeID 用于 CHI 总线事务传输;
  • XP ID 用于确定并配置 XP 的配置寄存器地址;
  • NodeID 与 XP ID 可以相等

在一个使用 CCN-508 的 SOC 中,ID 分配如下:
在这里插入图片描述
在上图中, 8 个 CPU Cluster 的 ID 为27,28,31,0,11,12,15,16,CHI 总线事务通过 ID 进行事务帧的传输。

XP to XP Register Slices(XRS) 为 ARM 架构中用于改善时序闭合的机制,通过在 XP 节点之间插入寄存器切片,确保数据传输满足时序要求。

12.系统地址映射-SAM

CHI 总线上传输的可寻址 flits 帧都存在一个 TgtID, 对于可寻址的请求事务,目标ID根据系统地址映射(SAM)确定。
也就是说每一个可以发送可寻址请求的 Node(RN 与 HN) 内部都存在相同的 SAM.

CPU 地址映射分为 20 个独立的分区, 20 个地址映射分区包含整个 44 位地址空间,如下图:
在这里插入图片描述
每一个独立分区的解码(表示通过哪一个 HN 访问该地址分区)通过 SAMADDRMAPx[1:0] 确定,可用的寄存器配置如下:
在这里插入图片描述
虽然 CCN-508 存在多个 HN-F,但 RN 会将所有的 HN-F 作为同一个目的地,内部硬件会使用一个哈希公司来计算具体的 HN-F 目的地,也就是NODE ID.

CCN-508 存在 16MB 的 CSR 区域,这个区域必须映射到 HN-I 1 所管理的地址分区。

13.时钟与复位

device/XP source-synchronous asynchronous bridge (DSSB)用于CCN-508与Node的时间同步,存在两类
DSSB:

  • CCN508_RNF_DSSB,用于RNF与XP的时间同步,一般为cluster;
  • CCN508_SNF_DSSB,用于SNF与XP的时间同步,一般为memory controller;

而CCN-508 与 AMBA 总线上各 I/O 外设的时间同步通过 CoreLink ADB-400 AMBA Domain Bridge控制。

14.电源与时钟管理

在CCN-508中L3 Cache存在单独的电源域,可以处于不同的电源状态,可以关闭 L3 Cache.

在CCN-508中,每一个电源域都存在一个单独的P-Channle用于控制电源域。

似乎都是通过外部信号在上电时控制各电源域状态?参考附录《A.4 Power management signals on page Appx-
A-258.》

15.Link层

链路层为CHI总线。

第三章-编程模型

CCN-508 控制寄存器的映射大小为 16MB,分为 256 个 64KB 的子区域,如下图:
在这里插入图片描述
在这里插入图片描述
从上图可以看出,CCN-508 中 MN/HN-I/SBSX/HN-F/RN-I 的 ID 号已定义好,但为什么没有 RN-F?

1.启动时编程

启动时编程用于支持一致性事务传输与DVMOps操作。

根据 SN-F(内存控制器)的数量,如果是单数个,那么需要编码 hnf_sam_contro1寄存器(lx2080不需要考
虑,4个)。涉及到 3 SN-F memory striping on page 2-57

为了确保一致性事务的传输以及DVM操作,开发人员必须确保合适的RN节点被分配到要求的snoop与DVM
域?涉及到 Entry to and exit from snoop and DVM domains

2.运行时编程要求

在 snoop 和 DVM 域中对设备的纳入或排除的控制对于 HN-F 和 MN 来说至关重要,因为 HN-F 和 MN 必须在发
送 snoop 请求或 DVM 消息时知晓 snoop 或 DVM 域中存在的和活跃的 RN。

a.Entry to snoop domain,将 RN 加入 snoop 监控域

需要操作 HN-F(存在多个)节点中的 SDCR(Snoop Domain Control register)寄存器与 Snoop Domain Control set register 寄存器等:

  1. 遍历 HN-F;
  2. 设置 HN-F 的SDCR_set寄存器中RN NodelD 对应的位置1,直到所有 HN-F设置完毕;
  3. 再遍历 HN-F;
  4. 读取 HN-F 的SDCR寄存器中RN NodelD对应的位是否置1(需要保证置1);

b. Exit from snoop domain,将 RN 从 snoop 域删除

需要操作 HN-F(存在多个)节点中SDCR(Snoop Domain Control register)寄存器与 Snoop Domain Control clear register 寄存器等

  1. 遍历 HN-F;
  2. 设置 HN-F 的 SDCRClear 寄存器中 RN NodelD 对应的位置1,直到所有 HN-F 设置完毕;
  3. 再遍历 HN-F;
  4. 读取 HN-F 的 SDCR 寄存器中 RN NodelD 对应的位是否清0;

c.Entry to DVM domain,将RN加入DVM域

需要操作 MN(只有一个)节点中的 DDCR_set 寄存器与 DDCR 寄存器。
1.在 MN 中的 DDCR_set 寄存器中,将 RN NodelD 对应的位置1;
2.读取 MN 中的 DDCR 寄存器,直到 RN NodelD 对应的位己经置1;

d. Exit from DVM domain,将 RN 从 DVM 域中删除

需要操作 MN(只有一个)节点中的 DDCR_clear 寄存器与DDCR寄存器。
1.在 MN 中的 DDCR_clear 寄存器中,将 RN NodelD 对应的位置1;
2.读取 DDCR 寄存器,直到 RN NodelD对应的位已经清0;

http://www.dtcms.com/a/274049.html

相关文章:

  • Web 网站性能优化之 Nginx 优化指南
  • 提示工程:突破Transformer极限的计算科学
  • S7-1200 系列 PLC 中 SCL 语言的 PEEK 和 POKE 指令使用详解
  • IDE 关联 Git 操作
  • Java使用OSHI获取服务器信息
  • 如何在报表开发工具FastReport .NET 中构建和连接 Firebird 插件?
  • SpringBoot JWT
  • 异步技术:Web 性能优化的核心引擎
  • crmeb多门店对接拉卡拉支付小程序聚合收银台集成全流程详解
  • 电力自动化的通信中枢,为何工业交换机越来越重要?
  • Vue框架之模板语法全面解析
  • [面试] 手写题-爬楼梯,斐波那契数列
  • 揭示张量分析的强大力量:高级研究的基础-AI云计算拓展核心内容
  • 【时时三省】(C语言基础)通过指针引用数组元素
  • 2025 年第十五届 APMCM 亚太地区大学生数学建模竞赛-A题 农业灌溉系统优化
  • 基于kafka的分布式日志收集与实时监控平台(原理,框架)
  • (满满的坑LLAMA3使用申请被拒绝rejected)利用huggingface导入LLAMA3模型
  • 巨人网络持续加强AI工业化管线,Lovart国内版有望协同互补
  • 【每日刷题】加一
  • kubernetes高级调度
  • lodash不支持 Tree Shaking 而 lodash-es可以
  • 可信数据空间(Trusted Data Space)核心能力及行业赋能分析
  • 7.11类
  • 上位机知识篇---端口
  • CSS和CSS3区别对比
  • Day58
  • 深度学习篇---松科TPU部署代码分析
  • 线程邮箱(线程间通信的异步缓存机制)
  • 数据分析师如何构建自己的底层逻辑?
  • 数据结构自学Day5--链表知识总结