【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博客

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

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

相关文章

完成SSH连接与端口映射并运行hello_world.py以及创建conda环境

完成SSH连接与端口映射并运行hello_world.py 第一步: 使用vscode打开连接开发机如图 第二步: 端口映射 ssh -p 37367 rootssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyCheckingno 如: ssh -…

优化静止不动的GPS点(JS版)

1.理论依据: 连续的GPS点中,静止不动的一段或者多段这样的点序列。把这些点序列处理成一个点,也就是拿这些序列的第一个点即可。理论依据如下:从第二个点开始,每个点都和第一个点进行距离计算和比较。至少比较N个点。当百分之M的…

Win11任务栏当中对 STM32CubeMX 的堆叠问题

当打开多个 CubeMX 程序的时候,Win11 自动将其进行了堆叠,这时候就无法进行预览与打开。 问题分析:大部分ST的工具都是基于 JDK 来进行开发的,Win11 将其识别成了同一个 Binary 但是实际上他们并不是同一个,通过配置…

redis源码分析之底层数据结构(一)-动态字符串sds

1.绪论 我们知道redis是由c语言实现的,c语言中是自带字符串的,但是为什么redis还要再实现自己的动态字符串呢,这种动态字符串的底层数据结构是怎样的呢?接下来我们带着这些问题来看一看redis中的动态字符串sds。 2.sds的组成 struct __at…

pico+unity3d项目配置

重点:unity编辑器版本要和pico的sdk要求一致、比如: 对于 Unity 2022.1.14 及以上版本,若同时在项目中使用 URP、Linear 色彩空间、四倍抗锯齿和OpenGL,会出现崩溃。该问题待 Unity 引擎解决。对于 Unity 2022,若同时…

多个版本JAVA切换(学习笔记)

多个版本JAVA切换 很多时候,我们电脑上会安装多个版本的java版本,java8,java11,java17等等,这时候如果想要切换java的版本,可以按照以下方式进行 1.检查当前版本的JAVA 同时按下 win r 可以调出运行工具…

Pytorch张量

在conda的环境中安装Jupyter及其他软件包 Pytorch 建立在张量(tensor)之上,Pytorch张量是一个 n 维数组,类似于 NumPy 数组。专门针对GPU设计,可以运行在GPU上以加快计算效率。换句话说,Pytorch张量是可以运…

解决QT creator中文乱码问题

1.首先设置文本编辑器为UTF-8 先在工具-选项-文本编辑器-behavior部分选择文件编码为UTF-8,紧接着是选择“如果编码是UTF-8则添加”,如下图 2.设置ext code for tools 为system 具体解决办法是 工具-选项-环境-interfaces这一栏有一个“Text code for to…

最新JJWT 0.12.6学习

本文参考的是jjwt官方github,链接在此,本文会持续跟进jjwt的最新版本 GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and Android 简介 JJWT(Java JWT)是Java平台上相当流行的用于生成Json Web Token的库&#xff0c…

快捷:通过胶水语言实现工作中测试流程并行、加速

通过胶水语言实现工作中测试流程并行、加速 通过胶水语言实现工作中测试流程并行、加速工作场景(背景)问题抽象(挑战)如何做(行动)获得了什么(结果)后记相关资源 通过胶水语言实现工…

代码随想录(day6)哈希表-求两个数组的交集

什么是红黑树,参考链接【数据结构】史上最好理解的红黑树讲解,让你彻底搞懂红黑树-CSDN博客 题目: 注意:字典用{}符合、元组用()符号、列表用[]符号 table.get(num,0)1的意思 class Solution(object):def intersection(self, n…

【C++】——入门基础

文章目录 命名空间输入与输出缺省参数函数重载引用内敛函数指针控制nullptr 命名空间 当C语言遇到命名冲突时,很难解决,所以C关键字namespace就是针对这种问题的。 如何使用命名空间内的成员呢? 加命名空间名称及限定符( &#…

husky 和 lint-staged 构建代码项目规范

目录 前言 最简单的方法 过 scripts 来解决如果检测工具多,需要多次处理 通过 husky(哈士奇)来解决容易遗忘的问题 1. 安装 2. husky init 3. 试一试​ lint-stadge 只 lint 改动的 1. 安装 2. 修改 package.json 配置 3. 添加 npm 脚本: 4.使用 Husky…

MAVSDK动态库与静态库及mavsdk_server程序macOS平台编译与安装

1.克隆mavsdk: git clone https://github.com/mavlink/MAVSDK.git --recursive 2.编译静态库 cmake -Bbuild/default -H. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF 生成makefile 生成成功,开始编译 cmake --build build/default -j8 成功生成libmavsdk.a 开…

Java之Stream流的笔记--手写版

Stream流通过讲集合或数组转换成链状流式的结构,简化了集合和数组进行排序、筛选、遍历、去重、统计等操作。主要包括创建流、中间操作、终结操作。若流中无终结操作,则中间操作不会执行;流是一次性的,使用完就会失效,…

vmware workstation 虚拟机安装

vmware workstation 虚拟机安装 VMware Workstation Pro是VMware(威睿公司)发布的一代虚拟机软件,中文名称一般称 为"VMware 工作站".它的主要功能是可以给用户在单一的桌面上同时运行不同的操作系统,它也是可进 行开发…

PDF公式转Latex

文章目录 摘要数据集 UniMER介绍下载链接 LaTeX-OCRUniMERNet安装UniMER 用的数据集介绍下载链接 PDF-Extract-Kit整体介绍效果展示评测指标布局检测公式检测公式识别 使用教程环境安装参考[模型下载](models/README.md)下载所需模型权重 在Windows上运行在macOS上运行运行提取…

MySQL:库操作

1. 创建数据库 create database [if not exists] name [create_specification], [create_specification]... []内为可选的选项 create_specification: character set charset_name -- 指定数据库采用的字符集 -- 数据库未来存储数据 collate collation_name -- 指定数据库字符…

Hi3861 OpenHarmony嵌入式应用入门--华为 IoTDA 设备接入

华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,可以将自己的 IoT 设备 联接到华为云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云物联网平台的服 务实现设备与设备之间的控…

vue3.0 项目h5,pc端实现扫描二维码 qrcode-reader-vue3

qrcode-reader-vue3 插件简述 qrcode-reader-vue3插件,允许您在不离开浏览器的情况下检测和解码二维码。 🎥 访问设备摄像头并持续扫描传入帧。QrcodeStream🚮 渲染到一个空白区域,您可以在其中拖放要解码的图像。QrcodeDropZon…