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

【ARM】CCI缓存一致性整理

目录

1.CCI500提供的功能

2.CCI500在SOC系统中所处的位置​编辑

3.CCI500内部结构​编辑

4.功能描述


1.CCI500提供的功能

2.CCI500在SOC系统中所处的位置

3.CCI500内部结构

Transaction Tracker(TT)是用来解决一致性和ordering问题的,它是non-blocking的并且可以根据QoS的需求来reorder requests。

TT使用一个snoop filter来决定发送snoop requests的位置。为了最大化吞吐量:

  • snoop filter有四个partitions。
  • 读数据和写数据的interconnects是fully-connected的crossbars。
  • 写响应也使用crossbar interconnect,并且reorder buffer帮助CCI-500在不stalling requests的情况下满足ordering requirements。
  • 每个interface都有一个可配置的number of register stages,每个interface至少有一个stage。

4.功能描述

CCI-500 是一种一致性互连,它能够实现硬件一致性。在硬件一致性系统中,操作系统可以在多个处理器集群上运行,而无需复杂的缓存维护软件。这是高级 ARM big.LITTLE 处理模型(如全局任务调度,GTS)的基本要求。

除了 AXI 和 ACE 接口外,CCI-500 提供了用于各种系统操作的接口,例如:

  • 使用 APB4 接口对 CCI-500 内部寄存器进行编程、调试和性能监控。
  • 使用 P-Channel 和 Q-Channel 控制时钟和电源状态,以在低带宽时最小化功耗。
  • 用于制造测试的逻辑和 RAM 测试。

CCI-500 包括了窥探功能,允许对 ACE 接口进行窥探。窥探过滤器通过记录附加的 ACE 主机缓存中存储的地址,提供高效的窥探事务管理。这意味着窥探过滤器通常可以解决一致性消息,而不是向所有 ACE 接口广播。这种机制可以提供系统功耗节省,并在数据不在任何上游缓存中时减少延迟。

性能监控单元(PMU)提供了指示 CCI-500 运行时性能的事件和计数器。PMU 寄存器提供互连状态的信息,您可以使用这些寄存器帮助调试系统死锁。此外,CCI-500 提供了一组服务质量(QoS)调节和控制机制。

CCI-500 支持安全和非安全操作,可以在使用 ARM TrustZone 提供安全、非安全和受保护状态的系统中使用。

CCI-500 还支持缓存维护操作和独占访问。

内部包含Performance Monitor Unit和DBG monitor用来检测传输和做debug用。

可以通过将non-TrustZone aware master的AxPROT[1] tie low,来允许这样的master访问secure的数据。

CCI的error可以分为precise的error和imprecise的error。

CCI有单独的QoS regulation和control机制。

5.QoS机制

CCI-500 使用服务质量(QoS)值作为请求仲裁的优先级指示器。QoS 值可以来自一个从属接口的输入,也可以被一个编程值覆盖。

CCI-500 在选择要放入主事务队列的请求时使用 QoS 值。具有最高 QoS 值的请求具有最高优先级,除非激活了反饥饿机制。

当两个或更多事务共享最高优先级时,CCI-500 使用最近最少授予(LRG)方案。仲裁器具有避免饥饿的机制,以防止高带宽请求无限期地阻塞低优先级请求。

CCI-500 传播 QoS 值。这决定了当下游互连和从属设备对 QoS 值敏感时的服务速率。NIC-400 网络互连对 QoS 值敏感。

注意: 确保您平衡所有从属接口的相对优先级。例如,将每个接口设置为最高 QoS 值将仲裁降低到 LRG,并且使用 QoS 值没有优势。

拓展阅读:
扩展系统一致性 - 第 3 部分 - 性能提升和 CoreLink CCI-500 简介 - 中文社区博客 - 中文社区 - Arm Community

【ARM】CCI500_execution_tb-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [论文笔记]RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL
  • 【LeetCode】2187. 完成旅途的最少时间
  • 基于Python/MATLAB长时间序列遥感数据处理及在全球变化、植被物候提取、植被变绿与生态系统固碳分析、生物量估算与趋势分析应用
  • Three.js相机简明教程
  • 期货量化交易客户端开源教学第三节——键盘通信协议
  • CSS相对定位和绝对定位的区别
  • 了解Maven
  • stm32中断详解
  • LabVIEW滤波器性能研究
  • 3.5、matlab打开显示保存点云文件(.ply/.pcd)以及经典点云模型数据
  • Spring开发实践(五)
  • VUE2用elementUI实现父组件中校验子组件中的表单
  • 讲讲 JVM 的内存结构(附上Demo讲解)
  • LVS集群及其它的NAT模式
  • (自用)网络编程
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • Bytom交易说明(账户管理模式)
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • ES6系列(二)变量的解构赋值
  • Java Agent 学习笔记
  • java2019面试题北京
  • Promise面试题2实现异步串行执行
  • sublime配置文件
  • 翻译:Hystrix - How To Use
  • 机器学习学习笔记一
  • 详解移动APP与web APP的区别
  •  一套莫尔斯电报听写、翻译系统
  • 移动端 h5开发相关内容总结(三)
  • 正则表达式小结
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​马来语翻译中文去哪比较好?
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1)bark-ml
  • (175)FPGA门控时钟技术
  • (70min)字节暑假实习二面(已挂)
  • (C11) 泛型表达式
  • (Qt) 默认QtWidget应用包含什么?
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)换源+apt-get基础配置+搜狗拼音
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (六)DockerCompose安装与配置
  • (算法二)滑动窗口
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)负载均衡,回话保持,cookie
  • .jks文件(JAVA KeyStore)
  • .Net MVC + EF搭建学生管理系统
  • .net 按比例显示图片的缩略图
  • .NET 表达式计算:Expression Evaluator
  • .net后端程序发布到nignx上,通过nginx访问
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • :如何用SQL脚本保存存储过程返回的结果集