Files
final-exam/计算机系统结构/重点复习/小题9-总线仲裁与分离事务总线.md

5.8 KiB
Raw Permalink Blame History

tags, create time
tags create time
计算机系统结构
重点复习
总线
仲裁
分离事务总线
2026-06-16 21:21

小题 9 — 总线仲裁与分离事务总线

概述

本题考查总线主设备的概念、总线仲裁机制的分类与原理,以及分离事务总线的工作原理和别称。总线是计算机系统中各部件通信的公共通道,其仲裁和事务管理直接影响系统性能。

[!tip] 考试重点 分离事务总线的别称(流水总线、分离协议总线)和非别称(交叉互连总线、独占总线)是 A 卷原题。总线仲裁的三种集中式策略也需要掌握。

正文

一、总线主设备与从设备

类型 含义 特点 示例
主设备(Master) 能主动发起总线事务的设备 拥有总线控制权,可以发起读写操作 CPU、DMA 控制器
从设备(Slave) 只能被动响应总线事务的设备 不发起事务,只响应主设备的请求 内存、I/O 接口

[!question] 主设备和从设备的区别? 主设备是"主动方"——它决定何时使用总线、传输什么数据、传向哪里。从设备是"被动方"——它只在被主设备寻址时才响应。例如 CPU(主设备)向内存(从设备)发起读操作:CPU 发出地址和控制信号,内存被动地将数据放到总线上。

二、总线仲裁机制

多个主设备可能同时请求使用总线,仲裁器(Arbiter)决定哪个设备获得总线使用权。

graph TD
    REQ["Multiple Bus Masters"] --> ARB["Bus Arbiter"]
    ARB --> G1["Grant to Master 1"]
    ARB --> G2["Grant to Master 2"]
    ARB --> G3["Grant to Master 3"]

2.1 集中式仲裁

由一个中央仲裁器统一管理所有总线请求。

策略 原理 优先级 优点 缺点
菊花链 Grant 信号沿设备链逐级传递 离仲裁器近的高 简单、线数少 不公平,低优先级可能饿死
轮询 仲裁器按固定顺序轮询各设备 动态轮换 公平 效率不高
独立请求 每个设备有独立的请求/Grant 线 可编程设置 灵活、快 线数随设备数线性增长

[!note] 三种集中式仲裁的对比

维度 菊花链 轮询 独立请求
请求线数 1 1 n
Grant 线数 1(串行传递) \log_2 n n
公平性 差 好 可配置
速度 慢(链式传递) 中 快
可扩展性 好 中 差(线数多)

2.2 分布式仲裁

没有中央仲裁器,各设备自行协商总线使用权。

策略 原理
自举分布式 每个设备监控比自己优先级高的设备的请求线
冲突检测 设备发送数据后检测是否发生冲突,冲突则重试

[!question] 什么时候用分布式仲裁? 当系统规模很大(数十到数百个设备)时,集中式仲裁器成为瓶颈。分布式仲裁没有中央瓶颈,适合大规模系统(如以太网的 CSMA/CD 就是一种分布式冲突检测仲裁)。

三、分离事务总线

3.1 核心思想

传统总线中,一个事务从发起请求到数据返回,总线被全程独占。即使中间有较长的等待时间(如内存准备数据),其他设备也不能使用总线。

分离事务总线将一个总线事务拆分为两个独立的子事务:

  1. 请求阶段:主设备发出地址和命令
  2. 响应阶段:从设备准备好数据后,独立地将数据返回

两个阶段之间,总线被释放,可以为其他设备服务。

sequenceDiagram
    participant M1 as "Master 1"
    participant BUS as "Bus"
    participant MEM as "Memory"
    participant M2 as "Master 2"

    M1->>BUS: "Phase 1: Request (addr + cmd)"
    BUS->>MEM: "Forward to memory"
    Note over BUS: "Bus released, available"
    M2->>BUS: "Another request uses bus"
    BUS->>M2: "Service Master 2"
    MEM->>BUS: "Phase 2: Response (data ready)"
    BUS->>M1: "Data delivered to Master 1"

3.2 别称与非别称

[!abstract]- 答案

名称 是否是分离事务总线的别称
流水总线 是
分离协议总线 是
交叉互连总线 不是(是另一种总线拓扑)
独占总线 不是(独占总线恰恰是分离事务总线的反面)

[!note] 为什么"交叉互连总线"和"独占总线"不是别称?

交叉互连总线(Crossbar Bus)是一种总线拓扑结构,允许多对设备之间同时建立独立的连接通道。它与分离事务总线解决的是不同层面的问题——拓扑结构 vs 事务管理。

独占总线描述的是一个事务独占总线直到完成的行为模式,这恰恰是分离事务总线要解决的问题。传统总线就是"独占"模式。

3.3 分离事务总线的优势

优势 说明
提高总线利用率 等待期间总线不空闲,可服务其他请求
减少总线竞争 多个事务可以交错进行
提升 I/O 吞吐率 多个设备可以同时处于"等待响应"状态
适合慢速设备 内存访问延迟被隐藏在释放总线期间

[!question] 分离事务总线有什么代价?

  1. 硬件复杂度增加:每个设备需要额外的缓冲寄存器来保存请求信息和返回数据
  2. 控制逻辑复杂:需要跟踪每个未完成事务的状态
  3. 响应顺序不确定:先发出的请求可能后返回,需要排序机制

关联笔记