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

相关推荐
丁总学Java6 小时前
ARM 架构(Advanced RISC Machine)精简指令集计算机(Reduced Instruction Set Computer)
arm开发·架构
韦德斯1 天前
嵌入式Linux的RTC读写操作应用
linux·运维·c语言·arm开发·实时音视频
byte轻骑兵1 天前
嵌入式 ARM Linux 系统构成全解:从硬件到应用层层剖析
linux·arm开发·arm·嵌入式开发
思尔芯S2C2 天前
面向未来的智能视觉参考设计与汽车架构,思尔芯提供基于Arm技术的创新方案
arm开发·架构·汽车·iot·fpga原型验证·prototyping·智慧视觉
Eternal-Student2 天前
【docker了解】如何将x86镜像转换为适用于Jetson的ARM镜像
arm开发·docker·容器
不怕犯错,就怕不做3 天前
修复kernel编译栈帧大小异常问题error: the frame size of 1928 bytes is larger than 1024 bytes
linux·arm开发·驱动开发
憧憬一下4 天前
UART硬件介绍
arm开发·嵌入式硬件·串口·嵌入式·linux驱动开发
Petal9909124 天前
UEFI学习笔记(十八):ARM电源管理之PSCI和SCMI概述
arm开发·笔记·学习·uefi
古月居GYH5 天前
一文了解ARM内部架构
arm开发·架构
白书宇5 天前
13.100ASK_T113-PRO RTC实验
linux·arm开发·驱动开发·嵌入式硬件·物联网·硬件工程