【DeepSeek】ARM架构中的时钟与定时器分布
类型时钟分布定时器分布典型用途时钟簇级共享(主流)全局共享每核独立CPU运行频率控制系统计数器全局唯一提供时间基准每核私有接口核内调度、中断外设定时器芯片级共享系统服务、看门狗核心设计理念时钟:按功耗域划分(簇级共享最常见)定时器“共享源头 + 私有接口”的混合架构保证全局时间同步(共享计数器)避免跨核竞争(私有比较器)
·
ARM架构中的时钟与定时器分布
一、时钟系统的分布方式
ARM的时钟系统通常采用分层设计,具体分布方式取决于SoC实现:
1. 按簇共享模式(最常见)
┌─────────────────────────────────────┐
│ SoC 芯片 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ 簇0 (A53) │ │ 簇1 (A72) │ │
│ │ ┌───┬───┐ │ │ ┌───┬───┐ │ │
│ │ │C0 │C1 │ │ │ │C2 │C3 │ │ │
│ │ └───┴───┘ │ │ └───┴───┘ │ │
│ │ 共享时钟0 │ │ 共享时钟1 │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────┘
- 同一簇内的核心共享时钟源
- 不同簇可以独立调频(支持big.LITTLE架构)
- 典型例子:树莓派4的Cortex-A72簇和A53簇
2. 全局共享模式
- 所有核心共享同一个时钟源
- 常见于简单的嵌入式系统
- 优点:设计简单,同步容易
- 缺点:无法独立调频节能
3. 每核独立模式(较少见)
- 每个核心有独立时钟源
- 用于需要精细功耗控制的场景
- 实现复杂度高,成本较大
二、定时器系统的分类与分布
ARM架构定义了多种定时器,采用"共享源头 + 私有接口"的混合设计:
1. 系统计数器 - 全局共享
┌────────────────────┐
│ 系统计数器(全局) │ ← 唯一的64位计数源
│ 提供全局时间基准 │
└─────────┬──────────┘
│ 广播到所有核心
┌────────────┼────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 核0接口 │ │ 核1接口 │ │ 核2接口 │
└─────────┘ └─────────┘ └─────────┘
- 全局唯一,所有核心共享同一个计数器
- 64位单调递增计数器
- 所有核心看到相同的时间值
- 用于实现全局时间同步
2. 私有定时器 - 每核一个
| 定时器类型 | 数量 | 用途 | 特点 |
|---|---|---|---|
| Generic Timer (私有) | 每核4个 | 本地调度、中断 | EL0/EL1/EL2/EL3各一个 |
| Physical Timer | 每核1个 | 安全世界定时 | TrustZone使用 |
| Virtual Timer | 每核1个 | 虚拟化场景 | 用于虚拟机调度 |
3. 共享外设定时器 - 芯片级
┌─────────────────────────────────────┐
│ SoC 级别 │
│ ┌──────────────────────────────┐ │
│ │ SP804 双定时器 (共享) │ │
│ │ - Timer 0: 系统心跳 │ │
│ │ - Timer 1: 看门狗 │ │
│ └──────────────────────────────┘ │
│ ┌──────────────────────────────┐ │
│ │ GTW (全局看门狗定时器) │ │
│ └──────────────────────────────┘ │
└─────────────────────────────────────┘
- SP804:经典的双定时器IP,所有核心可访问
- MMIO定时器:通过内存映射访问,多核共享
- 看门狗定时器:通常是共享的,监控整个系统
三、ARM Generic Timer 架构详解
这是ARM官方定义的标准定时器架构:
┌────────────────────────────────────────────────┐
│ 系统计数器 │
│ (全局唯一,硬件实现) │
│ 寄存器:CNTFRQ, CNTVCT │
└────────────────────┬───────────────────────────┘
│
┌────────────┴────────────┐
│ 计数器值广播到每个核 │
└────────────┬────────────┘
│
┌────────────────────┼────────────────────────────┐
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ 核0 的定时器接口 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ EL1物理 │ │ EL1虚拟 │ │ EL2物理 │ │ │
│ │ │ 定时器 │ │ 定时器 │ │ 定时器 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────┘ │
│ ... │
│ ┌─────────────────────────────────────────┐ │
│ │ 核N 的定时器接口 │ │
│ └─────────────────────────────────────────┘ │
└────────────────────────────────────────────────┘
关键特点:
- 源头共享:系统计数器全局唯一
- 接口私有:每个核心有独立的比较器和中断
- 多异常级别:支持EL0/EL1/EL2/EL3各级别
四、实际SoC中的分布示例
树莓派4 (BCM2711) 的定时器分布:
┌─────────────────────────────────────┐
│ BCM2711 SoC │
│ │
│ [系统计数器] ← ARM Generic Timer │
│ │ │
│ ┌────┴────┐ │
│ │ A72簇 │ ← 4个私有定时器接口 │
│ │ C0-C3 │ │
│ └─────────┘ │
│ │
│ [ARM定时器] ← 4个系统定时器(共享) │
│ [SP804定时器] ← 传统双定时器(共享) │
│ [局部定时器] ← 每核一个 │
└─────────────────────────────────────┘
五、总结对比
| 类型 | 时钟分布 | 定时器分布 | 典型用途 |
|---|---|---|---|
| 时钟 | 簇级共享(主流) 全局共享 每核独立 |
- | CPU运行频率控制 |
| 系统计数器 | - | 全局唯一 | 提供时间基准 |
| Generic Timer | - | 每核私有接口 | 核内调度、中断 |
| 外设定时器 | - | 芯片级共享 | 系统服务、看门狗 |
核心设计理念:
- 时钟:按功耗域划分(簇级共享最常见)
- 定时器:“共享源头 + 私有接口” 的混合架构
- 保证全局时间同步(共享计数器)
- 避免跨核竞争(私有比较器)
更多推荐



所有评论(0)