【ARM CoreLink 系列 3 -- CCI-550 控制器介绍 】

文章目录

    • [CCI Family](#CCI Family)
    • [CCI-550 简介](#CCI-550 简介)
      • [CCI-550 功能](#CCI-550 功能)
      • [CCI-550 Interfaces](#CCI-550 Interfaces)
    • [Snoop filter 使用背景](#Snoop filter 使用背景)
    • [CCI-550 Snoop filter](#CCI-550 Snoop filter)

上篇文章:ARM CoreLink 系列 2 -- CCI-400 控制器简介

CCI Family


CCI-550 简介

Arm CoreLink CCI-550 Cache Coherent Interconnect 扩展了 CoreLink CCI-500。它在 big.LITTLE 处理器集群之间提供完整的缓存一致性,并为其他代理(如 Mali GPU、网络接口或加速器)提供 I/O 一致性。

CoreLink CCI-550 提供可扩展和可配置的互连,使 SoC 设计人员能够以尽可能小的面积和功耗满足性能目标,并且还增加了可降低整体系统延迟的监听滤波器。

CCI-550 功能

CCI-550 主要功能:

  • ACE masters 之间的数据一致性;

  • QoS 服务,用于配置transaction优先级;

  • 输入和输出(I/O) 与 ACE-Lite master的一致性;

  • master 和s laver之间的交叉开关互连功能;

  • 性能监控单元(PMU),用于对与性能相关的事件进行计数;

  • 用于MMU 之间通信的主设备之间的DVM 消息传输;

  • 侦听过滤器(核心功能),可降低侦听功率并提高侦听未命中的性能;

  • 支持 Arm TrustZone 技术以提供安全、非安全和受保护状态。

CCI-550 Interfaces

CCI-550 是高度可配的,你可以在系统中配置多个master 和 slave, 下图是一个基于CCI-550配置的系统框图:

上图中可以看到 支持ACE 协议的 S5 和 S6 接口连接了 Cortex-A53 和 Cortex-A72 ,CCI-550 可以管理 L1 Cache 和 L2 Cache之间数据共享和数据同步。

在CCI-550 中可以使用ADB-400(AMBA Domain Bridge)集成多个 power domain 和 clock domian;

  • S0-S4 连接了支持 ACE-Lite 的 Mali-T860 GPU 或者 Mali-T880 GPU,或者支持 ACE-Lite + DVM 的 MMU;

  • CCI-500 提供了 APB Salve 接口,可以通过 APB 接口来对CCI-550 进行配置;

  • M5-M2 连接了 Memory controller,从而可以支持LPDDR4 和 LPDDR3;

  • 对于 CCI-500 clock 和 power的控制可以通过 Q-channel 和 P-channel。

Snoop filter 使用背景

CPU从内存中读取数据到 cache line 的操作被称为 "load" ,而将cache line中的数据写回到内存对应位置的操作则被称为 "store" 。在硬件设计中,cache属于CPU的一部分,而CPU和内存之间是通过bus(总线)相连的,因此不管是"load"还是"store"操作,都需要经过总线的传输,总线的一次传输被称为 "transcation"

总线被多个CPU所共享,某个CPU对总线的访问,都能被挂接在同一总线上的其他 CPU "看到"。

怎样看到

实现的方式一般来说来有两种,其中一种就是是"Snooping",

Snooping 机制采用广播的形式,也就是当一个CPU 修改了cache line之后,将广播通知到总线上其他所有的CPU。收听广播是需要耳朵 的,对于CPU来说这个"耳朵"就是一个硬件单元,它会负责监听总线上所有 transactions 的广播。

广播的方式虽然简单,但要时刻监听总线上的一切活动,可得累个够呛,而且CPU之间共享的内存数据毕竟只占少数,大部分监听可以说都是白费力气,所以才引入了一个用于过滤的 snoop filter过滤的标准就是看自家的CPU有没有缓存这个transaction涉及到的内存位置,或者说有没有对应的cache line

那怎么判断有没有呢?
答: 识别 cache line的标准,自然是 Tag 比对:

过滤之后接收方的工作减轻了,可广播还一直在那儿呢,每个CPU产生的总线transaction,都要广播给其他的每个CPU,这得多消耗总线带宽(bandwidth)啊。假设CPU的个数是N,那么需要的总线带宽就是: N * (N-1) = N^2^ - N

所以,如果总线上CPU的数目比较少还好(2到8个),这按平方的增长速度,多了总线可就吃不消了。

CCI-550 Snoop filter

如上文所述,CCI-550 包含一个监听过滤器(snoop filter),用于记录存储在ACE master cache中数据的地址。

如果 coherency总线发起一个 snoop transaction 之后,但是这个时候,在其他master中并不存在所需的数据,snoop filter 就会给snoop transaction返回一个respons。

上篇文章:ARM CoreLink 系列 2 -- CCI-400 控制器简介

相关推荐
憧憬一下14 小时前
PCIe_Host驱动分析_设备枚举
arm开发·嵌入式硬件·嵌入式·pcie·linux驱动开发
7yewh16 小时前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux
憧憬一下3 天前
PCIe_Host驱动分析_地址映射
arm开发·嵌入式硬件·嵌入式·linux驱动开发·pci/pcie
楼兰公子3 天前
相机主要调试参数
arm开发·驱动·camera·v4l2
7yewh3 天前
嵌入式驱动RK3566 HDMI eDP MIPI 背光 屏幕选型与调试提升篇-eDP屏
linux·arm开发·驱动开发·嵌入式硬件·嵌入式linux·rk·edp
千千道5 天前
深入理解 Linux 内核启动流程
linux·arm开发·驱动开发
徐某人..5 天前
ARM嵌入式学习--第八天(PWM)
arm开发·学习·arm
aiamia5 天前
CAN配置---波特率中断引脚等---autochips-AC7811-ARM-M3内核
arm开发·单片机·mcu·车载系统·汽车
驯龙高手_追风5 天前
ARM32位MCU开发板调试经验总结
arm开发·单片机·嵌入式硬件
重生之我是数学王子5 天前
ARM原理
arm开发·系统架构