【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) = N2 - 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 控制器简介

相关推荐
Joshua-a1 天前
macOS下arm编译缺少stdint.h等问题
arm开发·macos
蚂蚁舞1 天前
在arm架构的Debian系统手动安装和卸载Mysql8的操作
arm开发·debian·安装mysql·mysql8·卸载mysql
m0_571372821 天前
嵌入式学习——ARM 体系架构1
arm开发·学习
生涯にわたる学び1 天前
自旋锁/互斥锁 设备树 iic驱动总线 day66 67 68
arm开发
李小白202002022 天前
windows 10系统安装arm虚拟机
arm开发
亿道电子Emdoor4 天前
【ARM】PACK包管理
arm开发
wypywyp4 天前
基于arm芯片的驱动开发——温湿度传感器dht11
arm开发·驱动开发
亿道电子Emdoor5 天前
【ARM】MDK如何实现使用Hex文件完成程序烧录
arm开发·stm32·单片机
彻骨寒风5 天前
在麒麟 ARM (aarch64)安装OpenJDK11和elasticsearchkibana
运维·arm开发·jenkins
2301_1472583695 天前
ARM - GPIO 标准库开发
arm开发