【ARM CoreLink 系列 2 -- CCI-400 控制器简介】
文章目录
- CCI-400 介绍
- DVM 机制介绍
- DVM 消息传输过程
- TOKEN 机制介绍
下篇文章:ARM CoreLink 系列 3 – CCI-550 控制器介绍
CCI-400 介绍
CCI(Cache Coherent Interconnect)是ARM 中 的Cache一致性控制器。

CCI-400 将 Interconnect 和coherency 功能结合到一个模块中。它支持多达两个ACE master 点的interface,例如:
Cortex®-A7 processor
Cortex-A15 processor
Cortex-A17 processor
Cortex-A53 processor
Cortex-A57 processor
| Feature | Details |
|---|---|
| AMBA specifications | AMBA 4 ACE and ACE-Lite |
| ACE Slave interfaces | 2 for fully coherent processors including Arm Cortex |
| ACE-Lite slave interfaces | 1-3 for IO coherent devices such as Mali processors, accelerators and IO |
| Memory and system master interfaces | 1-2 memory interfaces 1 system interface |
| Coherency | Broadcast snoop protocol |
| Memory map | 40 bit Physical, configurable address map 44 bit DVM |
CCI-400还支持多达三个ACE-Lite主站,例如,ARM MaliTM-T600系列图形处理器单元(GPU)。
所有这些接口都有可选的DVM消息支持,以管理分布式内存管理单元(MMU),例如CoreLink MMU-400。这些单元可以通过CCI-400与最多三个ACE-Lite从机进行通信。
硬件管理的一致性可以通过共享片上数据来提高系统性能和降低系统功耗。
CCI-400 cache一致性控制器实现了ACE协议,demo系统框图如下所示:

CCI-400cache一致性控制器是一个基础设施组件,支持以下内容:
-
在最多两个 ACE 主站和三个ACE-Lite主站之间的数据一致性,有三个独立的序列化点(PoS)和全屏障支持。
-
主站和最多三个从站之间的高带宽、跨栏互连功能。
-
主站之间的DVM消息传输,DVM消息主要用于通知系统中的其他处理器,一段内存的缓存状态发生了变化。例如,当一个处理器需要写入一段内存时,它会通过发送DVM消息,通知其他处理器该内存的缓存需要被更新或者失效。
-
QoS虚拟网络(QVN):本质上是一种 Virtual 的 Network,我们知道从一个 master 到一个slave,它中间走的实际路线叫做physical network,在physical network上根据需要还可以设置多个virtual 的 network,在 virtual network之间,通过类似于token这种机制(只有一个master获得了token,它才有资格去往下发送它的一些传输的请求)。QVN 机制使用这种 virtual network,使用这种基于token的机制去传输数据能够很好的避免系统拥塞。
-
服务质量(QoS)调节:QoS机制可认为是一种资源分配的机制,比如根据 outstanding 的能力,去限制某一个端口发送数据的能力。还可以根据发送速率或者传输的latency来分配transaction,这些都是QoS-400能够做到的。
-
性能监测单元(PMU),统计与性能有关的事件。
DVM 机制介绍
Distributed Virtual Memory(DVM)机制是一种用于实现分布式虚拟内存的技术。它允许多个处理器共享同一块物理内存,并通过高速网络连接进行通信。
DVM机制的核心思想是将物理内存划分为多个虚拟内存空间,并将这些虚拟内存空间分配给不同的处理器。每个处理器只能访问自己的虚拟内存空间,但可以通过网络与其他处理器进行通信和共享数据。
DVM机制的实现主要依赖于以下几个关键技术:
- 虚拟内存管理:每个处理器都有自己的虚拟地址空间,通过地址转换机制将虚拟地址映射到物理地址。这样可以实现不同处理器之间的地址隔离和虚拟内存的管理。
- 数据共享:处理器可以通过网络连接,将自己的虚拟内存中的数据共享给其他处理器。这种数据共享可以通过消息传递、远程存取等方式实现。
- 一致性维护:由于多个处理器共享同一块物理内存,需要保证数据的一致性。当一个处理器修改了共享内存中的数据时,其他处理器需要及时获得最新的数据,以保证一致性。这通常需要使用一致性协议和缓存一致性机制。
DVM机制的优点是可以充分利用多处理器系统的计算资源,提高系统的性能和可扩展性。它适用于需要高并发和大规模数据共享的应用场景,例如分布式计算、数据中心等。
需要注意的是,DVM机制并非ARM处理器中的内置特性,而是一种通用的分布式计算技术。在ARM处理器中,可以通过软件实现DVM机制,或者使用一些专门的硬件实现,如ARM的CoreLink CCI(Cache Coherent Interconnect)系列产品。这些产品提供了高性能的互连网络和缓存一致性机制,以支持分布式虚拟内存的实现。
DVM 消息传输过程
DVM消息的传输过程如下:
-
当一个处理器需要改变某段内存的状态时(例如,写入数据),它会生成一个DVM消息,并将其发送到CCI。
-
CCI在收到DVM消息后,会将其转发到其他连接到CCI的处理器。这些处理器在收到DVM消息后,会检查自己的缓存,如果缓存中包含了该内存,那么会根据DVM消息的类型进行相应的操作,例如,更新缓存或者将缓存失效。
-
当所有的处理器都对DVM消息进行了响应之后,CCI会向原始处理器发送一个确认消息,表示该DVM消息已经被所有的处理器处理完毕。
如下是 DVMop 一个典型的应用:


通过DVM消息,处理器可以有效地维护缓存一致性,确保在多处理器系统中,所有的处理器都可以看到最新的数据。这对于提高多处理器系统的性能和可靠性具有重要意义。
需要注意的是,DVM消息的具体实现可能会因ARM的不同产品而有所不同。具体的细节,如DVM消息类型、格式和传输过程,需要参考相关的硬件文档和规范。
TOKEN 机制介绍
在多个设备同时访问总线时,如果不进行流量控制,可能会导致数据冲突和混乱。为了避免这种情况,ARM引入了总线token机制。
总线token机制基于一个令牌(token)的概念。令牌可以理解为一种权限,只有持有令牌的设备才能在总线上进行数据传输。当一个设备需要访问总线时,它必须请求令牌。如果当前总线上没有令牌可用,设备必须等待,直到有令牌可用为止。一旦设备获得令牌,它就可以在总线上进行数据传输。当传输完成后,设备释放令牌,使其可供其他设备使用。
总线token机制具有以下特点:
- 确保数据传输的有序性:每次只有一个设备可以持有令牌,这样可以保证数据传输按照请求的顺序进行。
- 控制总线的带宽:通过令牌管理,可以控制总线上的设备数量,以控制总线的带宽使用情况,避免过多设备同时访问总线导致的性能下降。
- 提高系统的可靠性:总线token机制可以避免数据冲突和竞争,从而提高系统的可靠性和稳定性。
总线token机制是ARM处理器中用于管理总线上的数据传输的一种重要机制,能够保证数据传输的有序性和可靠性。在多设备同时访问总线的情况下,总线token机制可以有效地管理和控制数据传输。
下篇文章:ARM CoreLink 系列 3 – CCI-550 控制器介绍
推荐阅读:
https://blog.51cto.com/qmiller/5285105
相关文章:
【ARM CoreLink 系列 2 -- CCI-400 控制器简介】
文章目录 CCI-400 介绍DVM 机制介绍DVM 消息传输过程TOKEN 机制介绍 下篇文章:ARM CoreLink 系列 3 – CCI-550 控制器介绍 CCI-400 介绍 CCI(Cache Coherent Interconnect)是ARM 中 的Cache一致性控制器。 CCI-400 将 Interconnect 和coh…...
LeetCode(力扣)77. 组合Python
LeetCode77. 组合 题目链接代码 题目链接 https://leetcode.cn/problems/combinations/description/ 代码 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:result []return self.backtracking(n, k, 1, [], result)def backtracking(self, n, k…...
uniapp h5 微信缓存,解决版本更新还是旧版本
文章目录 一、微信缓存是什么?二、如何解决1.打包入口文件解决2.给请求url加时间戳3.给打包的js文件添加时间戳并修改打包后的css文件夹 总结 一、微信缓存是什么? 微信缓存是指微信客户端为了提高用户的使用体验,会在用户使用微信过程中将一…...
Nacos——Distro一致性协议
Nacos——Distro一致性协议 1. 理论 一致性一直都是分布式系统中绕不开的话题。根据CAP中,要么CP(保证强一致性牺牲可用性),要么AP(最终一致性来保证可用性),在市面上也有几种一致性算法,像Paxos,Raft,Zoo…...
大模型参数高效微调PEFT的理解和应用
简介 近年的大型语言模型(也被称作基础模型),大多是采用大量资料数据和庞大模型参数训练的结果,比如常见的ChatGPT3有175B的模型参数量。随着Large Language Model(LLM)的横空出世,网络模型对常见问题的解答有了很强的…...
工作游戏时mfc140u.dll丢失的解决方法,哪个方法可快速修复mfc140u.dll问题
在 Windows 操作系统中,mfc140u.dll 文件是非常重要的一个组件,许多基于 MFC(Microsoft Foundation Classes)的程序都需要依赖这个文件。然而,有些用户在运行这些程序时可能会遇到mfc140u.dll丢失的问题,导…...
选择排序——直接选择排序
直接选择排序:(以重复选择的思想为基础进行排序) 1、简述 顾名思义就是选出一个数,再去抉择放哪里去。 设记录R1,R2…,Rn,对i1,2,…,n-1,重复下…...
【C++基础】观察者模式(“发布-订阅”模式)
本文参考:观察者模式 - 摩根斯 | 爱编程的大丙 观察者模式允许我们定义一种订阅机制,可在对象事件发生时通知所有的观察者对象,使它们能够自动更新。观察者模式还有另外一个名字叫做“发布-订阅”模式。 发布者: 添加订阅者&…...
从业多年,我总结出软件测试工程师必须掌握的技能,你不可错过!
经常会有小伙伴询问:“测试工程师有哪些必须要掌握的技能?”这是一个非常大的课题,因为每个人从事的行业不同、岗位不同,需要掌握的技能自然也不一样。 今天小编就从不同岗位、不同行业两个大方面,来讲讲软件测试工程师…...
【nerfStudio】5-nerfStudio导出3D Mesh模型
几何图形的导出 在这里我们将介绍如何从nerfstudio中导出点云和网格。您将使用的主要命令是ns-export。我们将点云导出为.ply文件,纹理网格导出为.obj文件。 导出网格 1. TSDF融合 TSDF(截断有符号距离函数)融合是一种使用深度图像提取表面网格的算法。此方法适用于所有…...
重要公告|投票委托已经上线,应该如何选择社区代表?
社区代表是Token持有者委托投票权的个人或团体,可以代表Token持有者在Moonbeam治理中投票。委托是可选的,允许代表在治理过程中代表更大比例的Token和Token持有者。相比社区代表,不愿投票的Token持有者可以将投票权委托给社区代表,…...
【操作系统】聊聊进程、线程、协程
进程内部有那些数据 为什么创建进程的成本高 进程和线程 进程是资源分配的基本单位,而线程是程序执行的基本单位,一个是从资源分配的角度看,另一个是执行角度。 那么进程和程序的区别是什么? 程序,一段代码ÿ…...
springboot 下 activiti 7会签配置与实现
流程图配置 会签实现须在 userTask 节点下的 multi instance 中配置 collection 及 completion condition; collection 会签人员列表;element variable 当前会签变量名称,类似循环中的 item;completion condition: 完成条件。 ${taskExecutionServiceIm…...
RK3399平台开发系列讲解(内核调试篇)spidev_test工具使用
🚀返回专栏总目录 文章目录 一、环境二、执行测试三、回环测试四、字节发送测试五、32位数据发送测试沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 在 Linux 系统上,“spidev_test” 是一个用于测试和配置 SPI(Serial Peripheral Interface)设备的命令行工具。…...
点云从入门到精通技术详解100篇-自适应点云局部邻域特征的特征提取与配准(续)
目录 3.4 深度相机误差建模 3.5 实验结果及分析 3.5.1 TOF 相机平面畸变校正 3.5.2 TOF 相机深度误差校正...
VBA技术资料MF52:VBA_在Excel中突出显示前 10 个值
【分享成果,随喜正能量】一言之善,重于千金。善良不分大小,有时候你以为的一句话,小小的举手之劳,也可能就是别人的救赎!不要吝啬你的善良,因为你永远不知道那小小的善良能给多少人带来光明。。…...
leetcode做题笔记134. 加油站
在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas 和 cost &…...
Allegro166版本如何在颜色管理器中实时显示层面操作指导
Allegro166版本如何在颜色管理器中实时显示层面操作指导 在用Allegro166进行PCB设计的时候,需要在颜色管理器中频繁的开关层面。但是166不像172一样在颜色管理器中可以实时的开关层面,如下图 需要打开Board Geometry/Soldermask_top层,首先需要勾选这个层面,再点击Apply即…...
纷享销客入选中国信通院《高质量数字化转型产品及服务全景图》
近期,在中国信息通信研究院主办的“2023数字生态发展大会”暨中国信通院“铸基计划”年中上,重磅发布了《高质量数字化转型产品及服务全景图(2023)》,纷享销客凭借先进的技术能力和十余年客户业务场景应用理解…...
C高级 DAY4
一、分支语句 case ...in语句 shell中的switch语句 case $变量名 in常量1)语句;; ------->类似于C中break的作用,;;除了最后一条分之外,都不能省略常量2)语句;; 常量n)语句;;*) ------->类似于C中default,但…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...
raid存储技术
1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...
使用ch340继电器完成随机断电测试
前言 如图所示是市面上常见的OTA压测继电器,通过ch340串口模块完成对继电器的分路控制,这里我编写了一个脚本方便对4路继电器的控制,可以设置开启时间,关闭时间,复位等功能 软件界面 在设备管理器查看串口号后&…...
AWSLambda之设置时区
目标 希望Lambda运行的时区是东八区。 解决 只需要设置lambda的环境变量TZ为东八区时区即可,即Asia/Shanghai。 参考 使用 Lambda 环境变量...
