1.1 CCI-500 介绍
CCI-500 是个可编程高带宽的互联,可以通过硬件来保证 缓存一致性 ,使用硬件来保证缓存一致性可以有效提高系统性能和减少功耗,主要优点有以下几点:
- 减少对外部memory的访问;
- 降低软件开销和复杂性;
- 保驾 ARM big.LITTLE 架构的正常工作。
CCI-500 是个可配置的互联,支持以下适配:
- 支持多达 4个 ACE Masters,例如 Cortex-A57 或者 Cortex-A53 处理器;
- 支持多达 4 个 ACE-Lite master, 比如 ARM Mali-T760 GPU;
- 支持多达 4 个 AXI slaves,例如 memory和系统外设。
ACE 是一种协议,它扩展了标准的 AXI(Advanced eXtensible Interface)总线协议,添加了缓存一致性和原子操作支持。适用于那些需要与其他处理器共享缓存数据的复杂处理器核心。
ACE-Lite 是 ACE 协议的一个子集,它支持系统一致性,但不支持处理器之间缓存行的读取共享。ACE-Lite 适用于那些不需要缓存共享的处理器或I/O控制器。
这种设计使得 CCI-500 能够适应多种不同的 SoC 架构需求,从而支持从小型、低功耗设备到大型、多核心处理器系统的广泛应用。例如,一个 SoC 可能会有几个完整的 CPU 核心(使用 ACE 接口)和一些简单的 DMA 或 I/O 控制器(使用 ACE-Lite 接口)。
1.2 CCI-500 features 详细介绍
-
Data coherency between ACE masters.
-
Quality of Service (QoS) features for traffic management.
-
Input and Output (I/O) coherency with ACE-Lite masters.
-
Crossbar interconnect functionality between the masters and slaves.
-
A Performance Monitoring Unit (PMU) to count performance-related events.
-
DVM message transport between masters for communication between MMUs.
-
A Programmers View (PV) to control coherency and interconnect functionality.
-
A snoop filter to reduce snoop power and improve performance for snoop misses.
-
Support for Arm TrustZone® technology to provide Secure, Non-secure, and protected states.
下面详细介绍您提到的 CCI-500 的特征和功能。
1.2.1 Data Coherency between ACE Masters
数据一致性是多核处理器系统中的一个关键概念,它确保了所有的处理器核心在访问共享数据时所看到的是相同的信息。CCI-500 通过实现 ACE(AXI Coherency Extensions)协议来确保不同的 ACE 主控制器(通常是 CPU 核心)之间的数据一致性。该协议允许核心共享它们的缓存状态,从而能够同步对共享数据的更新,避免了数据不一致的问题。
1.2.2 Quality of Service (QoS)
质量服务(Quality of Service,简称 QoS)特性允许 CCI-500 对经过互联的流量进行管理,为不同的数据流和事务分配优先级。这种方式有助于确保关键任务获得必要的内存带宽,同时提高整个系统的性能和响应时间。CCI-500 的 QoS 功能支持调整带宽分配,以优化总线使用率和控制延迟。
vendor IP 中如何配置 QoS?
1.2.3 (I/O) Coherency
除了全功能的 ACE 主控制器之外,CCI-500 还支持与 ACE-Lite 主控制器的 I/O 一致性。ACE-Lite 主控制器通常是那些不需要参与缓存共享的外围设备或DMA控制器。 CCI-500 通过 ACE-Lite 协议提供了 I/O 一致性,使得这些控制器在访问共享内存时可以获取最新的数据,即使它们不直接参与缓存行的一致性协议 。
1.2.4 Crossbar Interconnect Functionality
CCI-500 提供了交叉开关(crossbar)互联功能,允许多个主控制器同时与多个从控制器(如内存控制器、外围设备等)进行交互。交叉开关互联的特点是它允许多通道并行操作,从而能够提供高带宽和低延迟的数据传输。CCI-500 通过这种方式能够确保多个主控制器可以高效地共享对从控制器的访问,从而提升整体 系统性能 。
1.2.5 Performance Monitoring Unit (PMU)
- 功能 :PMU(Performance Monitoring Unit)使得 CCI-500 能够监控和计数各种与性能相关的事件。这包括跟踪数据传输、缓存命中和未命中、QoS 事件等。
- 用途 :系统设计师和开发者可以利用 PMU 提供的数据来识别性能瓶颈,优化软件和硬件配置以提高整体系统性能。
1.2.6 DVM Message Transport
- 功能 :DVM(Distributed Virtual Memory)消息传输允许互联网上的主控制器之间进行通信,特别是用于内存管理单元(MMUs)之间的同步。
- 用途 :DVM 消息对于维护大规模多核系统中的虚拟内存一致性至关重要。它允许 MMUs 共享有关页面映射和无效化等信息。
1.2.7 Programmers View (PV)
- 功能 :PV(Programmers View)提供了一组控制寄存器,允许程序员配置和控制缓存一致性和互联功能。
- 用途 :通过 PV,程序员可以细粒度地管理如何在各种主控制器之间实施缓存一致性协议,以及配置互联网络的行为。
1.2.8 Snoop Filter
- 功能 :Snoop filter 是一种优化机制,旨在减少不必要的 snoop 操作,这些操作由于缓存一致性协议在多个处理器核心之间进行检查以确定数据是否是最新的。
- 用途 :通过减少因 snoop 未命中而产生的额外流量,snoop filter 有助于降低功耗并提高系统性能。
1.2.9 ARM TrustZone® Technology Support
- 功能 :CCI-500 支持 ARM TrustZone® 技术,这是一种安全技术,可以在物理处理器上创建一个安全的执行环境(称为 “安全世界”),与非安全环境(称为 “非安全世界”)隔离开来。
- 用途 :TrustZone 技术保护敏感数据和应用不受恶意软件攻击,同时还能够定义受保护的状态,进一步加强安全性。
CCI-500 的这些功能使其成为一个强大的组件,用于构建可以处理高性能计算任务并需求严格安全措施的复杂系统。通过性能监控、DVM 消息传输、程序员视图、snoop 过滤和 TrustZone 支持,CCI-500 提供了必要的工具和机制来优化性能,维持系统一致性,并确保数据安全。
1.3 CCI-500 Interface 详细介绍
上图可以看到 Slave 口 S5 和 S6 通过ACE 总线跟 Cortex-A72/A53 相连。CCI-500 提供多个连接的处理器集群之间 L1 和 L2 缓存的完全一致性和数据共享。这意味着:
- 当一个处理器核心对共享缓存行进行修改时,CCI-500 保证其他核心可以看到这些修改。
- 它通过 snoop 协议来实现缓存一致性,确保所有的处理器核心都能访问到最新的数据,无论它们位于哪个处理器集群中。
- 这种机制对于提升多核处理器性能至关重要,因为它减少了因缓存不一致性而导致的处理器间同步延迟。
1.3.1 可选 AMBA 域桥接(ADB-400)使用
为了进一步提升系统的功率和频率可扩展性,CCI-500 允许使用 AMBA 域桥接(ADB-400)来连接不同的组件。ADB-400 的功能包括:
- 集成多个电源域 :当 SoC 设计需要将不同部件分隔在不同的电源域中时,ADB-400 允许这些部件在保持各自电源管理独立性的同时,仍然能够维持所需的连接和通信。
- 集成多个时钟域 :对于运行在不同时钟频率的组件,ADB-400 提供了时钟域之间的桥接,保证了即使在不同的时钟速度下,组件之间依然可以保持正确的数据交换和一致性。
1.3.2 ACE-Lite 和 DVM 信号
- DVM (Distributed Virtual Memory) :DVM 协议是一种信号机制,用于在系统的内存管理单元(MMUs)之间传递虚拟内存相关的信息,比如地址转换无效化消息。这些消息对于维护系统中不同处理器核心和设备的虚拟内存一致性至关重要。
1.3.2.1 GPU 和 MMU-500
CCI-500 的从设备接口 S0-S4 支持连接到需要 I/O 一致性的设备,例如 Mali-T860 或 Mali-T880 GPU。这些 GPU 使用 ACE-Lite 协议与 CCI-500 连接,能够确保它们访问内存时能够获取到最新的数据,而不必实现全缓存一致性。
可以使用 DVM 信号连接内存管理单元,如 ARM MMU-500。MMU-500 是一种高级的内存管理单元,它支持大规模的系统级虚拟化和一致性管理。通过 DVM 信号,MMU-500 可以与 CCI-500 和处理器核心交换关于虚拟地址空间更改的信息,这样确保了在系统各部分之间维持虚拟内存一致性。
1.4 CCI operation
1.4.1 双层请求通道(dual-layer request channels,)
CCI-500 使用了双层请求通道设计,这意味着它能在每个周期处理两个请求。具体来说:
- 双层架构 :这种设计使得 CCI-500 能够同时发送和接收两个独立的数据请求,从而提高了数据吞吐量。
- 周期效率 :每个周期处理两个请求的能力意味着 CCI-500 可以更有效地利用系统资源,尤其是在高负载条件下。
1.4.2 中央事务追踪器(central Transaction Tracker)
CCI-500 中包含一个中央事务追踪器(TT),它是互联内的关键组件,负责处理缓存一致性和事务顺序。以下是它的主要功能:
- 一致性管理 :中央事务追踪器监控所有通过互联的事务,并确保它们遵守所需的缓存一致性协议。
- 顺序处理 :TT 负责维持事务的正确顺序,这对于保持数据的一致状态和正确传输至关重要。
- 非阻塞 :TT 采用非阻塞设计,这意味着即使有些事务需要等待,其他事务也可以继续执行,从而避免系统性能瓶颈。
- 重排序请求 :根据 QoS(Quality of Service)要求,TT 可以对事务进行重排序。这个特性允许互联对高优先级的事务给予快速处理,同时对低优先级的事务进行缓和处理。
1.5 CCI Configurable options
ARM CCI-500(Cache Coherent Interconnect)是一种高度可配置的互联解决方案,它为 系统集成 提供了灵活性,同时还允许在设计和运行时根据不同的应用需求进行配置。
1.5.1 设计时配置(Design-Time Configuration)
设计时配置提供了在 SoC 设计阶段选择的选项。这些选项允许设计师根据功能需求和系统资源约束来优化互联的尺寸和功耗。具体来说,设计时配置可以包括:
1.5.1.1 ID Widths
- 定义 :ID 宽度配置选项允许设计者设置穿过互联的事务 ID 的位宽。
- 作用 :这直接影响了可以在互联中同时追踪的唯一事务的数量,从而影响性能和复杂度。
1.5.1.2 Address Widths
- 定义 :地址宽度配置选项指定了互联网络处理的地址大小。
- 作用 :这个配置决定了系统可以寻址的内存范围,以及地址映射的粒度。
1.5.1.3 User-Defined Signal Widths
- 定义 :用户定义信号宽度允许设计者为特定的控制信号指定位宽。
- 作用 :这为设计者提供了在某些自定义信号传输上的灵活性,以便满足特定的接口或控制需求。
1.5.1.4 Burst Splitting Option for Slave Interfaces
- 定义 :突发分割选项允许将大的突发传输分割为更小的块。
- 作用 :这有助于平衡带宽和延迟,特别是在处理大容量数据传输时。
1.5.1.5 Transport of Data Checksums
- 定义 :数据校验和传输选项,如奇偶校验或错误更正码(ECC)。
- 作用 :这增加了数据传输过程的完整性和可靠性,对于缓解数据损坏至关重要。
1.5.1.6 Size of the Transaction Tracker (TT)
- 定义 :事务追踪器的大小可以配置,以在性能和面积之间取得平衡。
- 作用 :TT 大小的选择会影响能够并行跟踪和管理的事务数量,从而影响整体性能和硬件复杂性。
1.5.1.7 Write Buffering
- 定义 :写缓冲配置允许设计者在面积和写带宽之间取得平衡。
- 作用 :写缓冲可以暂存写操作,从而提高写带宽,但也会增加硬件资源的占用。
1.5.1.8 Snoop Filter RAM Capacity
- 定义 :Snoop 过滤器 RAM 容量配置与连接的处理器缓存大小相匹配。
- 作用 :这有助于优化互联的功耗和性能,通过减少不必要的 snoop 操作。
1.5.1.9 Number of Pipeline Stages on Interfaces
- 定义 :接口上的流水线阶段数可以配置,以帮助实现大型设计的时序收敛。
- 作用 :增加流水线阶段可以改善时序,但可能会增加延迟。
1.5.1.10 Low Latency Mode
- 定义 :低延迟模式允许设计者从从设备和主设备接口之间的请求路径上移除一个周期的延迟。
- 作用 :这改善了互联的响应时间,对于延迟敏感的应用来说非常有用。
1.5.2 复位时配置(Reset-Time Configuration)
复位时配置提供了在系统重置(或启动)时可以改变的选项。这些配置允许在不同的运行环境或应用场景下调整互联的功能。典型的复位时配置可能包括:
1.5.2.1 自定义地址解码器(Custom Address Decoder)
自定义地址解码器使得设计者可以实现任何特定的地址映射方案。这个功能的关键点包括:
- 灵活性 :设计者不限于使用预定义的地址映射方案,在特定的用例中,可以设计独特的地址映射逻辑来满足特殊的系统需求。
- 地址映射 :通过编程自定义解码器,可以定义如何映射地址到不同的内存通道、缓存或其他资源,以优化性能、带宽或其他关键参数。
1.5.2.2 QoS 阈值(QoS Threshold)
QoS 阈值用于定义在互联网络中视为高优先级的事务类型。这个配置影响系统中数据传输的优先权:
- 高优先级事务 :可以为关键的数据传输设置较高的 QoS 阈值,确保它们获得更快的处理速度和更高的带宽。
- 资源管理 :通过设置不同事务的 QoS 阈值,CCI-500 能够有效地管理有限的资源,并保证高优先级的事务不会因为低优先级事务的拥堵而受到延迟。
1.5.2.3 QoS 调节器(QoS Regulators)
QoS 调节器负责根据事务分配的带宽来调整读写请求的 QoS 值。这项功能有助于确保互联网络的流量管理更加精细化:
- 带宽分配 :设计者可以为不同的数据流设置带宽限制,QoS 调节器会根据这些限制来动态调整事务的 QoS 值。
- 流量平衡 :这种机制有助于平衡不同主设备的流量,防止某些主设备因为高流量的请求而影响到其他设备的性能。
1.6 Test features
在 ARM CCI-500(Cache Coherent Interconnect)的设计中,考虑到了测试性(Design for Test,简称 DFT)的策略,该策略对生产芯片的质量控制至关重要。CCI-500 支持以下两种主要的 DFT 方法:
Scan Cell Insertion
- 概述 :扫描链测试是一种常用的 DFT 方法,它通过在设计中插入可测试的扫描单元(或扫描细胞)来实现。
- 功能 :这些扫描单元连成链条,允许测试人员将测试向量序列串行地加载进芯片,并在测试完成后读取结果。
- 好处 :扫描链测试能够高效地检测出制造过程中可能出现的逻辑故障,提供高覆盖率的测试。
MBIST (Memory Built-In Self Test)
- 概述 :MBIST 是一种用于测试内部存储单元(如 RAM、ROM 等)的自我测试机制。
- 功能 :MBIST 生成测试模式并自动执行,不需要外部测试设备的干预,能够检测内存中的错误。
- 好处 :这种方法可以在生产线上快速且准确地验证内存的完整性,并且可以在系统的正常使用周期内多次使用,以识别寿命期间可能出现的故障。
DFT control signals
在 ARM CCI-500(Cache Coherent Interconnect)设计中,DFT(Design for Test)控制信号提供了多个关键功能,以确保在生产测试阶段可以对互联进行彻底的检测与验证。以下是您所询问的 DFT 控制信号能力的详细介绍:
Disabling Internal Resets
- 功能 :允许测试人员关闭内部复位信号,这在进行某些测试模式时非常有用,例如当需要保持特定的内部状态以进行测试时。
- 用途 :通过禁用内部复位,可以避免在测试过程中意外地清除寄存器或逻辑单元的状态,从而确保测试的准确性。
Controlling Architectural Clock Gating
- 功能 :允许测试人员控制架构级的时钟门控信号,这是一种动态省电技术,能够在不需要时关闭部分电路的时钟。
- 用途 :在测试模式下,可能需要保持所有的时钟信号处于活动状态,以确保测试向量可以完全穿过所有时钟域,这有助于检测时钟门控相关的问题。
Controlling Internal RAM MBIST Signals
- 功能 :允许测试人员直接控制内存内建自测试(MBIST)相关信号。
- 用途 :通过控制这些信号,可以启动和监控内存的自测试程序,以验证其完整性和性能。
Limiting Multicycle Paths to Enable Delay Testing
- 功能 :在测试模式下限制多周期路径,这是特定类型的设计路径,可以在多个时钟周期内完成。
- 用途 :这样的控制对于延迟测试非常重要,因为它允许测试人员精确地测量路径上信号的传播时间,而不受多周期路径的干扰。
Controlling Internal RAM Chip-Select, to Preserve State
- 功能 :允许测试人员控制内部 RAM 的芯片选通(chip-select)信号。
- 用途 :在部分测试期间,可能需要保持特定的内存状态不变,控制芯片选通信号可以确保在测试过程中不会对这些内存进行写操作,从而保留其状态。
1.7 CCI-500 寄存器配置
可以使用 APB4 总线对 CCI-500 的配置寄存器。CCI-500 的寄存器列表如下:
Offset | Name | Type | Reset | Description |
---|---|---|---|---|
0x00000 | ctrl_ovr | RW | 0x0 | |
0x00008 | secr_acc | RW | 0x0 | |
0x0000C | status | RO | 0x0 | |
0x00010 | impr_err | RW | 0x0 | |
0x00014 | qos_threshold | RW | 0x00F00F0 | |
0x00100 | pmu_ctrl | - | 0x00004000 | |
0x00104 | debug_ctrl | RW | 0x0 | |
0x00FD0 | peripheral_id4 | RO | 0x00000084 | |
0x00FD4 | … | RO |
slave interface 0 registers
Offset | Name | Type | Width | Description |
---|---|---|---|---|
0x01000 | snoop_ctrl | - | 32 | |
0x01004 | share_ovr | RW | 32 | |
0x01100 | arqos_ovr | RW | 32 | |
0x01104 | awqos_ovr | RW | 32 | |
0x01110 | qos_max_ot | RW | 32 |
slave interface 1 registers