• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

ARM中Round Robin的仲裁方案的详细介绍

在ARM架构的总线系统中(如AHB/AXI总线),Round Robin(轮询仲裁) 是一种常用的仲裁方案,用于公平地分配多个主设备(Master)对共享总线资源的访问权限。其核心思想是循环分配总线使用权,避免单一主设备长期独占总线,从而保证系统资源的公平性和实时性。


Round Robin仲裁的核心原理

  1. 循环队列机制
    仲裁器维护一个主设备队列,按固定顺序(如设备0 → 设备1 → … → 设备N → 设备0)依次授予总线访问权。

    • 示例:假设有3个主设备(M0, M1, M2)请求总线:
      • 第一轮:M0获得访问权
      • 第二轮:M1获得访问权
      • 第三轮:M2获得访问权
      • 第四轮:重新回到M0
  2. 请求检测与切换条件

    • 当前主设备完成传输(如发送最后一次数据)后,仲裁器立即切换到下一个有请求的主设备。
    • 若当前设备无请求,则跳过该设备继续轮询。

关键特性与优势

特性 说明
公平性 每个主设备在循环周期内获得均等机会,避免低优先级设备被"饿死"。
低延迟均衡 高优先级设备无需等待过长时间(与固定优先级仲裁相比)。
实现简单 硬件逻辑只需一个状态机或移位寄存器即可实现循环队列。
动态适应性 自动跳过空闲设备,将带宽分配给有需求的设备。

工作流程示例

假设三个主设备(M0, M1, M2)同时请求总线:

  1. 初始状态:仲裁器指针指向M0 → M0获得总线。
  2. M0传输结束:指针移到M1 → M1获得总线。
  3. M1传输结束:指针移到M2 → M2获得总线。
  4. M2传输结束:指针移回M0 → 开始新一轮循环。

✅ 跳过空闲设备:若M1无请求,则流程变为 M0 → M2 → M0 → ...


变种:加权轮询(Weighted Round Robin)

为不同主设备分配权重(优先级),允许高优先级设备在循环中获得更多访问机会:

  • 示例:设置权重 M0:2, M1:1, M2:1
    • 循环序列:M0 → M0 → M1 → M2 → M0 → M0 → M1 → M2...
    • 高权重设备(M0)每轮可连续访问两次。

硬件实现方式

  1. 状态寄存器
    记录当前轮到的主设备ID(如2-bit寄存器存储0/1/2)。
  2. 优先级编码器
    检测下一个有效请求的设备(按循环顺序)。
  3. 移位寄存器
    通过循环移位动态更新设备优先级顺序(如每次授权后左移一位)。
// 简化的Round Robin仲裁器Verilog伪代码
always @(posedge clk) begin
  if (current_master_done) begin // 当前设备传输结束
    for (int i=1; i<=NUM_MASTERS; i++) begin
      next = (current + i) % NUM_MASTERS; // 查找下一个设备
      if (request[next]) break;          // 找到有请求的设备
    end
    current <= next; // 更新当前设备
  end
end

与固定优先级仲裁的对比

特性 Round Robin 固定优先级
公平性 ✅ 高 ❌ 低(低优先级易饿死)
实时性 ⚖️ 均衡 ✅ 高优先级响应快
适用场景 带宽敏感型设备(如DMA、GPU) 实时关键设备(如CPU、中断控制器)
硬件复杂度 中等 简单

在ARM总线中的应用

  • AHB总线:Round Robin常用于多层互连矩阵(如ARM CoreLink NIC-400)中分配从设备(Slave)端口。
  • AXI总线:支持基于Round Robin的交叉开关(Crossbar),优化多主设备并行访问。

⚠️ 注意:实际SoC中常采用混合策略(如高优先级设备用固定优先级,其余用Round Robin),以兼顾实时性与公平性。

Round Robin仲裁通过循环分配机制,在保证公平性的同时维持了系统吞吐量,是ARM总线架构中平衡多主设备竞争的核心方案之一。

posted on 2025-08-02 14:42  SOC验证工程师  阅读(116)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3