ARM处理器总线架构解析:iCode、D-code与S-Bus

发布于:2025-09-11 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

ARM处理器结构(I-Code、D-code、s-bus):

参考阅读:

I-Code、D-code、s-bus

1. iCode Bus (指令总线)

2. dCode Bus (数据总线)

3. S-Bus (系统总线)

4. 总线矩阵 (Bus Matrix)

5. 核心优势:哈佛架构 (Harvard Architecture) 与冯·诺依曼架构 (Von Neumann Architecture)


ARM处理器结构(I-Code、D-code、s-bus):

参考阅读:

https://e-book.qq.com/read/1000680594/25

I-Code、D-code、s-bus

iCode、dCode 和 S-Bus 总线,这些总线术语常见于 ARM Cortex-M 系列内核,尤其是 Cortex-M3 和 Cortex-M4。它们都属于 ARM 的 AMBA(Advanced Microcontroller Bus Architecture) 协议家族。

为了让你有一个全局观,我们先看一张经典的 Cortex-M3/M4 内核总线架构图,它完美展示了这三条总线的角色:

1. iCode Bus (指令总线)

全称: Instruction Code Bus

  • 功能: 这是一条专门用于从代码存储区(通常是 Flash 存储器)获取指令(Instruction) 的总线。当 CPU 需要执行下一条命令时,它会通过 iCode 总线发出取指请求。

  • 特点:

    • 只读: 它只能执行读取操作,不能写入。

    • 高速: 基于 AMBA AHB-Lite 协议,32位宽,旨在实现高效的指令流传输。

    • 专用性: 它的唯一目的就是取指,这避免了与其他数据访问请求产生冲突,确保了指令预取和执行的效率。

  • 访问的目标内存: 主要访问 0x0000_00000x1FFF_FFFF 这个地址区域(通常是代码区,如内部 Flash)。

  • 类比: 就像你读书时,你的眼睛只负责从书本上扫描文字(指令),这个动作是单向且专注的。


2. dCode Bus (数据总线)

全称: Data Code Bus

  • 功能: 这是一条专门用于数据访问(Data Access) 的总线。当指令需要读取或写入一个变量(位于 RAM 或内存映射寄存器中)时,CPU 就会通过 dCode 总线来操作。

  • 特点:

    • 可读可写: 支持加载(Load/读)和存储(Store/写)操作。

    • 高速: 同样基于 AHB-Lite 协议,32位宽,为数据访问提供低延迟的路径。

    • 专用性: 专用于数据操作。与 iCode 总线分离,这实现了哈佛总线架构的核心优势:并行操作。

  • 访问的目标内存: 主要访问 0x2000_00000x3FFF_FFFF 这个地址区域(通常是 SRAM 数据区)。

  • 类比: 就像你读书时,你的手拿着笔在草稿纸上进行计算和记录(数据)。这个动作(手)和眼睛扫描文字的动作是同时进行、互不干扰的。


3. S-Bus (系统总线)

全称: System Bus

  • 功能: 这是一条通用系统总线,用于所有不属于 iCode 和 dCode 总线处理的其他访问。它是系统与外部世界连接的主要通道。

  • 特点:

    • 可读可写: 支持所有类型的访问。

    • 通用性: 它不像 iCode 和 dCode 那样有专用的地址区域限制。它可以访问整个 4GB 的内存空间。

    • 连接外设: 它的主要作用是连接所有外设,如 GPIO、UART、SPI、I2C、定时器等。这些外设都通过总线矩阵 挂载在 S-Bus 上。

    • 备用路径: 它也可以作为 iCode 和 dCode 总线的备用路径。例如,如果一条指令要求从 Flash 中读取一个立即数(这本质上是数据访问),这个请求可能会通过 S-Bus 来完成,而不是 dCode 总线。

  • 访问的目标: 外设寄存器 (0x4000_0000 开始)、外部存储器、以及作为备用路径访问代码和 RAM。

  • 类比: 就像你读书时,你需要起身去书架上拿另一本参考书,或者需要操作桌上的计算器。这些动作需要离开你当前“书本-草稿纸”的专注环境,去与更广泛的“系统”进行交互。

4. 总线矩阵 (Bus Matrix)

你可能会问,这三条总线是如何协同工作并连接到不同的存储器上的呢?答案就是总线矩阵。

总线矩阵是一个多主多从的交叉开关网络。

  • 主设备 (Master): 发起操作的设备。这里的主设备就是 iCode、dCode、S-Bus。

  • 从设备 (Slave): 响应操作的设备。如 Flash 控制器、SRAM 控制器、外设控制器等。

总线矩阵的作用是智能地将多个主设备的访问请求路由到正确的从设备上。它提供了并行的访问路径,确保了当一个主设备在访问 Flash 时,另一个主设备可以同时访问 SRAM,从而实现了真正的并行操作。

5. 核心优势:哈佛架构 (Harvard Architecture) 与冯·诺依曼架构 (Von Neumann Architecture)

iCode 和 dCode 总线的分离,是 “修改型哈佛架构” 的典型体现。

  • 冯·诺依曼架构: 指令和数据共享同一条总线和同一存储空间。简单,但存在“冯·诺依曼瓶颈”,即无法同时进行取指和数据操作。

  • 哈佛架构: 指令和数据有各自独立的总线和存储空间。允许 CPU 同时取指和访问数据,极大地提高了并行度和执行效率。

Cortex-M 内核同时拥有这三条总线,意味着它可以在一个时钟周期内:

  1. 通过 iCode 总线 从 Flash 取下一条指令。

  2. 同时通过 dCode 总线 从 SRAM 读写数据。

  3. 同时通过 S-Bus 访问一个外设寄存器(例如检查一个串口是否准备好发送数据)。

这种并行操作是现代嵌入式处理器高性能的关键。


网站公告

今日签到

点亮在社区的每一天
去签到