智展AI智展AI
首页市场Agent广场LLM排行榜AI芯片榜

AI 动态

AI 工具

ChatGPT iconChatGPTOpenAI iconOpenAIClaude iconClaudeGemini iconGeminiDeepSeek iconDeepSeekKimi iconKimi豆包 icon豆包通义 icon通义智谱GLM icon智谱GLMOpenClaw iconOpenClawOpenRouter iconOpenRouter

行情与资讯

Twitter/X iconTwitter/XBinance iconBinanceOKX iconOKX

开发者生态

GitHub iconGitHubHuggingFace iconHuggingFace魔塔社区 icon魔塔社区PyTorch iconPyTorchNVIDIA Dev iconNVIDIA DevAMD ROCm iconAMD ROCmLinux Kernel 开发者 iconLinux Kernel 开发者Android 开发者 iconAndroid 开发者地平线开发者论坛 icon地平线开发者论坛知乎 icon知乎

© 2025 智展AI

返回首页
技术汽车

GIC Multi-View &Multi-Chip

GiC solution

2026年04月24日
65 分钟阅读
13 次阅读

GIC Multi-View vs Multi-chip 详细分析


1. 基本概念

在进入对比之前,必须先明确三个不同的概念,它们经常被混淆:

概念是什么适用范围
GICv3 Interrupt Grouping将中断分为 Group 0 / Group 1S / Group 1NS,基于安全状态做访问隔离所有 GICv3/v4 实现
GIC Multi-ViewGIC-720AE 专有扩展,在一个物理 GIC 内划分多个完全独立的逻辑视图(View),每个 View 有独立寄存器空间和 INTID 空间仅 ARM CoreLink GIC-720AE
GIC Multi-chip多块物理芯片各自有独立 GIC,通过片间互联组成统一中断域多 Die / 多 SoC 系统

Group 隔离 ≠ Multi-View。 前者是 GICv3 架构规范中的中断分组机制,后者是 GIC-720AE 特有的硬件视图划分能力,两者在设计目标、隔离强度、使用场景上均有本质区别。


2. GICv3 Interrupt Grouping(中断分组)

2.1 原理

GICv3 将所有中断分为三个 Group,由 GICD_IGROUPR 和 GICD_IGRPMODR 两个寄存器的组合编码决定:

GICD_IGROUPR.bit   GICD_IGRPMODR.bit   →   Group
────────────────────────────────────────────────────
      0                   0            →   Group 0         (FIQ,Secure EL3/EL1)
      0                   1            →   Group 1 Secure  (IRQ,Secure EL1)
      1                   0            →   Group 1 NS      (IRQ,Non-Secure EL1/EL2)

GIC 硬件根据当前访问者的安全状态(Secure / Non-Secure),对寄存器呈现不同的读写视图,不同 Group 的中断在逻辑上互相屏蔽。

2.2 各 Exception Level 可见的中断范围

访问者                    可见的中断 Group
─────────────────────────────────────────────────────────
Secure EL3 (Monitor)   →  Group 0 + Group 1S + Group 1NS(全部)
Secure EL1 (TEE/RTOS)  →  Group 0 + Group 1 Secure
Non-Secure EL2 (Hyp)   →  Group 1 NS + 虚拟中断控制(ICH_*)
Non-Secure EL1 (OS)    →  Group 1 NS

虚拟化扩展在此基础上增加一层:Hypervisor(EL2)通过 ICH_LR<n>_EL2(List Register)向 Guest 注入虚拟中断,Guest 通过 ICV_* 系统寄存器访问虚拟 CPU Interface。

2.3 Group 隔离下的寄存器行为

Group 隔离的本质是:同一套物理寄存器,硬件根据访问者的安全状态过滤可见 bit 或返回 RAZ/WI。

GICD_IGROUPR / GICD_IGRPMODR(Group 配置)

访问者              GICD_IGROUPR 行为            GICD_IGRPMODR 行为
────────────────────────────────────────────────────────────────────
Secure EL3         读写所有 INTID 的 bit         读写所有 INTID 的 bit
Secure EL1         读写 Group 0/1S 的 bit        读写 Group 0/1S 的 bit
Non-Secure EL1/EL2 RAZ/WI(全部)               RAZ/WI(全部)

Non-Secure 世界无法读取或修改任何 INTID 的 Group 归属,由硬件强制执行。

GICD_ISENABLER / GICD_ICENABLER(中断使能)

硬件只暴露属于当前视图 Group 的 bit,其余 bit RAZ/WI:

场景:INTID 33(Group 0),INTID 96(Group 1 NS)

Non-Secure EL1 读 GICD_ISENABLER[1]:
  bit1(INTID 33)→ RAZ(Group 0,NS 不可见)
  bit0(INTID 32)→ 返回真实值(若为 Group 1 NS)

Non-Secure EL1 写 GICD_ISENABLER[1] bit1:
  → WI(不影响 Group 0 的使能状态)

GICD_IPRIORITYR(优先级)

Non-Secure 视图下读出的值被硬件右移 1 位,最高位强制置 1:

Secure EL3 写 INTID 96 优先级 = 0x40(真实存储值)

Non-Secure EL1 读:  → 返回 0xA0(0x40 >> 1 | 0x80)
Non-Secure EL1 写:  写入值被截断,最高位不可为 0

优先级空间划分:
  0x00 ~ 0x7F  →  Secure 专用(NS 不可写入此范围)
  0x80 ~ 0xFF  →  NS 可用范围

效果:Secure 中断优先级硬件上永远高于 NS 中断。

ICC_PMR_EL1 / ICC_IGRPEN1_EL1(CPU Interface)

这两个系统寄存器有两套独立的物理存储,Secure 和 NS 各一份,切换安全状态时硬件自动切换:

Secure EL1  写 ICC_PMR_EL1 = 0x80  →  写入 Secure PMR(不影响 NS PMR)
NS EL1      写 ICC_PMR_EL1 = 0xFF  →  写入 NS PMR(不影响 Secure PMR)

ICC_IGRPEN0_EL1:  仅 Secure 可访问,NS 访问 → UNDEFINED 异常
ICC_IGRPEN1_EL1:  Secure 侧控制 Group 1S;NS 侧控制 Group 1NS(独立存储)

2.4 Group 隔离的能力边界

  • 最多三个隔离域(Group 0 / Group 1S / Group 1NS),固定不可扩展
  • 隔离维度只有 Secure vs Non-Secure,无法在多个 NS OS 之间做隔离
  • 多个 NS OS 共存时,必须叠加 Hypervisor 通过虚拟化机制隔离
  • LPI(INTID ≥ 8192)硬件固定属于 Group 1 NS,Secure 侧无法使用 LPI / ITS / MSI

2.5 LPI 与 Group 的强制绑定

中断类型     INTID 范围     可用 Group
────────────────────────────────────────────────────────
SGI          0  ~ 15       Group 0 / Group 1S / Group 1NS(可配置)
PPI         16  ~ 31       Group 0 / Group 1S / Group 1NS(可配置)
SPI         32  ~ 1019     Group 0 / Group 1S / Group 1NS(可配置)
LPI       8192  ~          仅 Group 1 NS(硬件固定,不可更改)

Secure RTOS 需要使用 PCIe / NVMe 等 MSI 类设备时,变通方案:

  1. NS Linux 接收 LPI → 共享内存 + SGI 通知 Secure RTOS(软件转发)
  2. 使用 SPI 替代 LPI(需设备支持传统线中断模式)
  3. EL3(ATF)作中介拦截转发(增加 SMC 调用开销)

3. GIC Multi-View(GIC-720AE 专有特性)

3.1 是什么

GIC Multi-View 是 ARM CoreLink GIC-720AE 特有的硬件扩展,专为汽车 ASIL B/D 混合关键度系统设计。它在一个物理 GIC 内部划分出多个完全独立的逻辑 GIC 实例,称为 View。

每个 View 拥有:

  • 独立的 GICD 寄存器地址页(不同 MMIO 基地址,互相不可访问)
  • 独立的 SPI INTID 空间(各 View 的 INTID 不冲突、不共享)
  • 独立的优先级和路由配置

View 之间由硬件强制隔离,不是靠 Group bit 软件过滤。一个 View 内的 OS 物理上看不到其他 View 的寄存器,更无法操作其他 View 的中断。

3.2 与 Group 隔离的根本区别

Group 隔离:
  ┌──────────────────────────────────────────┐
  │         共享一个 GICD 寄存器页            │
  │  INTID 33 → Group 0  (Secure RTOS 可见)  │
  │  INTID 96 → Group 1NS (Linux 可见)       │
  │  同一 INTID 空间,靠 bit 过滤区分         │
  └──────────────────────────────────────────┘

Multi-View:
  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
  │   View 0     │  │   View 1     │  │   View 2     │
  │  独立 GICD   │  │  独立 GICD   │  │  独立 GICD   │
  │  INTID 32~N  │  │  INTID 32~M  │  │  INTID 32~K  │
  │  ASIL-D RTOS │  │  Android     │  │  AUTOSAR     │
  │  (可以是 NS) │  │  (NS)        │  │  (NS)        │
  └──────────────┘  └──────────────┘  └──────────────┘
  三个 View 可以全部是 NS,互相之间硬件完全隔离

3.3 核心能力对比

维度GICv3 Group 隔离GIC-720AE Multi-View
适用产品所有 GICv3/v4仅 GIC-720AE
GICD 实例共享一个(靠 bit 过滤)每个 View 独立 GICD 寄存器页
INTID 空间全局共享每个 View 独立
隔离维度仅 Secure vs NS任意 OS 之间,含多个 NS OS
View / Group 数量固定 3 个 Group可配置多个 View
NS OS 间隔离❌(需叠加 Hypervisor)✅(硬件直接支持)
LPI 归属只能 Group 1 NS可绑定到特定 View
目标场景通用 TrustZone / Hypervisor汽车 ASIL 混合关键度

3.4 AMP 场景(无需 Hypervisor)

Multi-View 的关键价值:多个 NS OS 可以不依赖 Hypervisor 直接隔离。

GIC-720AE 汽车 SoC 示例:

  View 0 → ASIL-D 安全 RTOS(PikeOS / INTEGRITY)
  View 1 → Android Automotive(座舱娱乐)
  View 2 → AUTOSAR Classic(底盘 / 动力控制)

  三个 OS 全部运行在 NS 世界(或 View 0 在 Secure),
  每个 OS 访问自己 View 的 GICD,物理上看不到其他 View,
  无需 Hypervisor 软件介入,隔离由硬件保证。

对比 GICv3 Group 隔离在同样场景下的局限:

GICv3 Group 隔离下三 OS 共存:
  → 只有 2 个 NS Group 可用(Group 1S 和 Group 1NS)
  → AUTOSAR 和 Android 无法在同一 NS 侧互相隔离
  → 必须引入 Hypervisor 做软件虚拟化,增加延迟和复杂度

3.5 Hypervisor 场景

配合 Hypervisor 使用时,Multi-View 可以进一步降低虚拟化开销:

View 0 → Hypervisor 管理域
  View 1 → Guest VM 0(Linux)  ← Guest 直接访问 View 1 的独立 GICD
  View 2 → Guest VM 1(RTOS)  ← Guest 直接访问 View 2 的独立 GICD

优势:Guest 看到完整独立的 GIC,无需 Hypervisor 软件模拟 GICD 寄存器,
      减少因 GICD 访问陷入 EL2 的次数,降低中断虚拟化延迟。

对比标准 GICv3 Hypervisor 方案:
  标准 GICv3 中 Guest 对 GICD 的所有访问都需要陷入 EL2 由 Hypervisor 模拟,
  Multi-View 下 Guest 直接操作自己 View 的真实 GICD,不产生 EL2 陷入。

4. GIC Multi-chip

4.1 是什么

Multi-chip 是 GICv3/v4 规范中用于跨物理芯片中断互联的扩展机制。每块芯片拥有独立的 GIC 实例(独立 GICD + 独立 GICR),通过芯片间专用信号线将多个 GIC 组成一个逻辑上统一的中断域。

┌──────────────────┐     chip-to-chip      ┌──────────────────┐
  │  Chip 0          │◄─────────────────────►│  Chip 1          │
  │  GICD #0         │     GICMP 信号线       │  GICD #1         │
  │  GICR × N        │                        │  GICR × N        │
  │  CPU 0 ~ N-1     │                        │  CPU N ~ 2N-1    │
  │  本地外设 A~F     │                        │  本地外设 G~L    │
  └──────────────────┘                        └──────────────────┘

4.2 互联机制

方式一:专用 chip-to-chip 信号线(GICMP)

Chip 0 GICD  ──GICMP──►  Chip 1 GICD
每个 GICD 维护路由表,Aff3 标识目标芯片,跨片请求通过 GICMP 转发。

方式二:基于 ITS 的 LPI 路由

外设 → MSI 写 ITS → 查 ITT → 得到目标 GICR 地址(可跨芯片)
     → 通过片间互联总线将 LPI 发到目标芯片的 GICR

4.3 Aff3 路由配置

GICD_IROUTER[intid]:
  bits[39:32] = Aff3  → 目标芯片编号
  bits[23:16] = Aff2  → 目标 Socket
  bits[15: 8] = Aff1  → 目标 Cluster
  bits[ 7: 0] = Aff0  → 目标 Core

每个 GICD 还需配置:
  GICD_CHIPSR  → 本芯片的 Aff3 编号
  GICD_DCHIPR  → 指向其他芯片 GICD 的路由入口地址

4.4 优点

突破单芯片核数上限:Multi-chip 允许将多块芯片的 CPU 组成统一中断域,线性扩展核数,适合构建大规模 SMP 系统。

强物理隔离:每块芯片有独立 GICD,一块芯片的故障不会直接波及另一块芯片的中断控制器。

本地中断低延迟:每块芯片的本地外设中断路由到本地 CPU 时,路径与单芯片完全一致,无额外延迟。

支持超大规模 NUMA 系统:Aff3 + Aff2 + Aff1 + Aff0 四级编址,理论支持 256 × 256 × 256 × 256 个 PE。

4.5 缺点

需要额外硬件支持:芯片间必须有专用物理信号线或支持 GIC 互联协议的总线,通用性差。

跨片中断延迟高:相比片内路由增加数十到数百纳秒的传输延迟。

软件复杂度大幅提升:启动枚举数百个 GICR、GICD_IROUTER 必须填正确 Aff3、跨片 SGI 需要额外机制、电源管理复杂。

调试困难:中断路径跨越物理芯片边界,根因定位难度大。

互操作性依赖厂商实现:片间信号协议和寄存器扩展由芯片厂商自行实现,不同厂商的 Multi-chip GIC 之间不能互联。


5. 三者综合对比

5.1 定位对比

维度GICv3 Group 隔离GIC-720AE Multi-ViewGIC Multi-chip
解决的问题同芯片 Secure/NS 隔离同芯片多 OS 强隔离(含多 NS OS)多芯片 GIC 互联
GIC 数量11(内部多 View)每芯片 1 个
额外硬件无无(GIC-720AE 内建)芯片间物理互联信号线
NS OS 间隔离❌✅芯片内不适用
需要 Hypervisor多 NS OS 时需要不需要取决于场景
适用场景通用嵌入式 / 服务器汽车 ASIL 混合关键度多 Die 服务器 / 多 SoC

5.2 AMP 场景选择

所有核在同一芯片?
│
├── 是
│   ├── 只需 Secure vs NS 隔离?
│   │   → GICv3 Group 隔离即可
│   │
│   └── 需要多个 NS OS 互相隔离?
│       ├── 使用 GIC-720AE?
│       │   → GIC Multi-View(无需 Hypervisor,硬件直接隔离)
│       └── 使用普通 GICv3?
│           → 必须叠加 Hypervisor(Jailhouse / KVM / Xen)
│
└── 否(多芯片)
    → GIC Multi-chip
      芯片内部仍可叠加 Group 隔离或 Multi-View

5.3 优缺点汇总

GICv3 Group 隔离

优点:所有 GICv3 实现通用;零额外硬件成本;Secure/NS 隔离有硬件背书;配置简单。

缺点:最多 3 个隔离域;无法在多个 NS OS 间隔离;LPI 只能属于 Group 1 NS;多 NS OS 场景必须引入 Hypervisor。

GIC Multi-View(GIC-720AE)

优点:多个 NS OS 之间硬件直接隔离;无需 Hypervisor 介入;每个 View 有独立 INTID 空间;View 数量灵活可配;Hypervisor 场景下减少 GICD 模拟开销。

缺点:仅限 GIC-720AE,不是通用规范;生态软件支持相对有限;主要面向汽车场景。

GIC Multi-chip

优点:突破单芯片核数上限;支持超大规模 SMP;本地中断路径无额外延迟;具备芯片级故障隔离能力。

缺点:需要额外硬件互联信号线;跨片中断延迟高;软件配置复杂;调试困难;厂商实现差异导致互操作性差。


6. 使用案例

6.1 GICv3 Group 隔离案例

案例一:TrustZone AMP(移动 SoC,Linux + OP-TEE)

EL3:ATF(Secure Monitor)
EL1 Secure:OP-TEE           → Group 0 + Group 1 Secure
EL1 NS:Android / Linux      → Group 1 NS

中断分配:
  Group 0    → Secure 定时器 INTID 29,Secure Watchdog INTID 33
  Group 1S   → Crypto Engine INTID 34,Secure UART INTID 35
  Group 1NS  → 以太网 INTID 96,USB INTID 128,Display INTID 160
  LPI        → PCIe NVMe(仅 Group 1 NS,Linux 处理)

// ATF 配置 Crypto Engine 为 Group 1 Secure
GICD_IGROUPR[1]  &= ~(1 << 2);   // INTID=34,bit = 34%32 = 2
GICD_IGRPMODR[1] |=  (1 << 2);

案例二:Hypervisor 多 VM(KVM / Xen)

EL2:KVM Hypervisor

中断注入流程(物理 SPI 96 → VM1):
  ① 外设触发 SPI 96
  ② GICD 路由到物理 CPU3(当前调度 VM1 的核)
  ③ CPU3 陷入 EL2,Hypervisor 处理
  ④ 写 ICH_LR:vINTID=100, pINTID=96, HW=1, State=Pending
  ⑤ eret 回 VM1(EL1)
  ⑥ GIC 向 VM1 发出 vIRQ
  ⑦ VM1 读 ICV_IAR1_EL1 = 100,执行 ISR
  ⑧ VM1 写 ICV_EOIR1_EL1 = 100,GIC 自动 deactivate 物理 SPI 96

案例三:工业 AMP(RTOS + Linux,Group 0 + Group 1 NS)

Cluster 0(Cortex-A55 × 4):Linux,Group 1 NS
Cluster 1(Cortex-R × 2)  :实时 RTOS,Group 0

中断分配:
  Group 0   → PWM INTID 33,ADC INTID 34,ENC INTID 35(实时外设)
  Group 1NS → ETH INTID 96,CAN INTID 97,UART INTID 98

Linux 中断风暴不影响 RTOS 的 Group 0 FIQ 响应时间。
注意:PWM/ADC 只能用 SPI 线中断,不能用 LPI/MSI。

6.2 GIC Multi-View 案例(GIC-720AE)

案例:汽车 SoC 三 OS AMP

View 0:ASIL-D 安全 RTOS(制动 / 转向控制)
  独立 GICD 基地址 0xN000_0000
  SPI INTID 空间:32 ~ 127

View 1:Android Automotive(座舱娱乐)
  独立 GICD 基地址 0xM000_0000
  SPI INTID 空间:32 ~ 255
  (与 View 0 的 INTID 32 互不干扰,各 View 独立编号)

View 2:AUTOSAR Classic(底盘控制)
  独立 GICD 基地址 0xK000_0000
  SPI INTID 空间:32 ~ 127

三个 OS 可以全部运行在 NS EL1,互相之间硬件完全隔离,
无需 Hypervisor,中断延迟接近裸机水平。

6.3 GIC Multi-chip 案例

案例一:多 Die 服务器

Die 0(128 核)              Die 1(128 核)
  GICD #0,Aff3 = 0          GICD #1,Aff3 = 1
  CPU 0~127                  CPU 128~255

跨 Die 中断路由:
  Die 0 的 NIC(INTID 96)需路由到 Die 1 的 CPU 200
  GICD_IROUTER[96] = (Aff3=1, Aff2=0, Aff1=1, Aff0=4)
  → GICD #0 查路由表 → GICMP 转发到 GICD #1 → 路由到 CPU 200 的 GICR

案例二:多 SoC 工业控制系统

Board 0(主控 SoC):Cortex-A × 8,运行 Linux
Board 1(加速器 SoC):专用计算核 × 16,运行专用固件

互联:高速串行总线(支持 GICMP 协议)

Board 1 计算完成中断 → 路由到 Board 0 的 CPU 3
Board 0 任务调度 SGI → 广播到 Board 1 所有核

7. 关键结论

  1. GICv3 Group 隔离 ≠ GIC Multi-View。Group 是所有 GICv3 的基础分组机制,Multi-View 是 GIC-720AE 专有的独立视图划分能力,两者是完全不同的特性。
  2. Group 隔离只能区分 Secure 和 Non-Secure,无法在多个 NS OS 之间直接隔离,多 NS OS 共存必须依赖 Hypervisor。
  3. GIC Multi-View 允许多个 NS OS 直接隔离,AMP 场景无需 Hypervisor 介入,是 GIC-720AE 面向汽车混合关键度场景的核心特性。
  4. AMP 系统是否需要 Multi-chip:只要所有核在同一块芯片上共享同一个 GIC,就不需要 Multi-chip;用 Group 隔离(普通 GICv3)或 Multi-View(GIC-720AE)即可。
  5. LPI 只能属于 Group 1 NS(GICv3 规范规定),Secure RTOS 无法直接使用 MSI 类设备;GIC-720AE Multi-View 的各 View 可以独立拥有 LPI 空间。
  6. Multi-chip 和 Multi-View / Group 隔离不互斥,大型系统中芯片间用 Multi-chip 互联,芯片内部用 Group 隔离或 Multi-View,各司其职。
返回首页

评论

加载评论中...