ARM架构的微控制器总线矩阵仲裁策略
在 ARM 架构的微控制器(MCU)中,总线矩阵的 仲裁策略(Arbitration Policy) 是决定多个主设备(如 CPU、DMA、高速外设等)访问共享从设备(如内存、外设)顺序的核心机制。合理的仲裁策略能平衡系统性能、实时性和公平性。以下是总线矩阵仲裁策略的详细说明:
1. 常见仲裁策略
总线矩阵的仲裁器(Arbiter)通常支持以下策略:
(1) 固定优先级(Fixed Priority)
- 机制:
每个主设备被分配一个固定的优先级等级(通常数值越小优先级越高)。当多个主设备请求同一从设备时,仲裁器始终选择优先级最高的主设备。 - 特点:
- 优势:确定性高,适用于实时性要求严格的场景(如中断响应、高速数据传输)。
- 缺点:低优先级主设备可能因长期无法获得总线使用权而“饥饿”(Starvation)。
- 应用场景:
- DMA 传输优先于 CPU 后台任务。
- 关键外设(如 Ethernet、USB)优先访问内存。
(2) 轮询优先级(Round-Robin)
- 机制:
主设备按顺序依次获得总线访问权限,确保公平性。仲裁器循环遍历所有请求的主设备,每次分配一个时间片或单次传输机会。 - 特点:
- 优势:避免单一主设备独占总线,适合多主设备均衡负载。
- 缺点:可能增加高优先级任务的延迟。
- 应用场景:
- 多个 DMA 通道并行传输数据(如 ADC、UART、SPI 同时工作)。
- 多核系统中各核公平访问共享资源。
(3) 动态优先级(Dynamic Priority)
- 机制:
优先级根据实时条件动态调整,例如:- 等待时间:长时间未获得总线的主设备优先级提升。
- 任务紧急度:由软件或硬件事件(如中断)触发优先级变更。
- 带宽需求:高带宽主设备临时获得更高优先级。
- 特点:
- 优势:灵活适应复杂场景,兼顾效率和公平性。
- 缺点:硬件复杂度高,需额外逻辑支持。
- 应用场景:
- 混合关键性任务系统(如汽车电子中安全关键任务优先)。
- 动态负载调整(如突发数据传输时临时提升优先级)。