Skip to content

📝 8.1 总线设计 (Bus Design) 核心笔记

📌 考前速览

  • 性质:计算机各部件的"公共交通主干道"。
  • 必考计算:总线带宽 B=W×F/N
  • 必考理论:三种总线仲裁方式(链式、计数器、独立请求)的优缺点对比。
  • 学习状态:自学内容(PPT重点)

📚 第一部分:基本概念 (Foundations)

1. 什么是总线?

定义:一组能为多个部件分时共享的公共信息传送线路。

  • 分时:同一时刻只能传输一个部件的信息(就像单行道)。
  • 共享:多个部件挂在同一组线上。

为什么需要总线?

在计算机系统中,有多个部件需要相互通信:

  • CPU 需要从主存读取指令和数据
  • CPU 需要向主存写入数据
  • CPU 需要与I/O设备(如硬盘、网卡)交换数据
  • 不同I/O设备之间也可能需要通信

如果每个部件之间都用专用线路连接,会导致:

  • 连线数量爆炸:n个部件需要 n(n1)/2 条专用线路
  • 成本高昂:大量线路和接口
  • 难以扩展:每增加一个设备,需要重新布线

总线的解决方案

  • 所有部件都连接到同一组公共线路(总线)上
  • 通过分时共享的方式,让不同部件在不同时刻使用总线进行通信
  • 大大减少了连线数量,降低了成本,提高了系统的可扩展性

总线的分类

  • 片内总线:芯片内部(如CPU内部)。
  • 系统总线:连接CPU、主存、I/O接口(板级)。
  • 通信总线:计算机系统之间(如网线、USB)。

总线的特点

  • 优点:成本低、简单、易扩充
  • 缺点:带宽受限,易成为瓶颈

2. 核心角色:主设备与从设备

总线上的设备地位是不平等的,理解这一点是理解"仲裁"的前提。

角色英文职责与特点代表设备
主设备Master主动方。拥有总线控制权,发起传输,发布命令(读/写)。CPU, DMA控制器
从设备Slave被动方。只能响应主设备的命令,不能主动发起。主存, 各种I/O设备

主设备的职责

  • 控制整个传输过程
  • 决定访问哪个从设备
  • 指定数据传送方式(读/写)
  • 指定数据传送地址

从设备的职责

  • 被动响应主设备的命令
  • 根据主设备的地址和命令,提供或接收数据

⚠️ 注意:主从关系是动态的。例如 DMA 工作时,DMA 是主设备,CPU 此时需让出总线。但主存总是从设备,因为它不会主动提出要与谁交换信息的要求。


3. 总线事务 (Bus Transaction)

定义:在总线上一对设备之间的一次完整信息交换过程称为一个"总线事务"。

为什么需要总线事务?

由于总线是分时共享的,每次使用总线都需要一个完整的"事务"过程:

  1. 请求阶段:主设备申请总线使用权
  2. 仲裁阶段:总线控制器决定给谁用
  3. 寻址阶段:主设备发送地址、命令
  4. 传输阶段:数据交换(数据阶段)
  5. 释放阶段:撤销信号,让出总线

总线事务的两个阶段

  1. 地址阶段:主设备发送要访问的从设备地址和操作类型(读/写)
  2. 数据阶段:实际的数据传输(主设备→从设备 或 从设备→主设备)

典型的总线事务类型

  • 存储器读:CPU从主存读取数据
  • 存储器写:CPU向主存写入数据
  • I/O读:CPU从I/O设备读取数据
  • I/O写:CPU向I/O设备写入数据
  • 中断响应:CPU响应中断请求

⚡ 第二部分:总线控制与仲裁 (Arbitration)

核心问题:当多个主设备(如CPU和DMA)同时想用总线时,给谁用?

解决方案:总线仲裁逻辑。总线是由多个部件和设备所共享的,但同一时刻只能有一个设备使用总线。当多个主设备同时需要访问总线时,就会产生冲突。因此必须有一个总线控制机构(总线仲裁器),对总线的使用进行合理的分配和管理。

仲裁的目标

  • 公平性:避免某个设备长期占用总线
  • 效率:快速响应高优先级设备的请求
  • 灵活性:可以根据需要调整优先级策略

三种集中式仲裁方式对比 (⭐⭐⭐ 高频考点)

特性 \ 方式链式查询 (Daisy Chain)计数器定时查询 (Polling)独立请求 (Independent Request)
连线数量最少 (3根: BS, BR, BG)中等 (log2n+2)最多 (2n+1)
结构特点串联(BG信号像穿糖葫芦一样传)轮询(计数器报号)并联(每个设备专线直连仲裁器)
优先级固定(离仲裁器越近,优先级越高)可变(通过改变计数器初值调整)最灵活(软件/硬件编程控制)
速度慢(受限于链路传递延迟)(无需逐个查询)
可靠性差(断链即瘫痪)一般好(单个故障不影响其他)
优点结构简单,扩充容易优先级可设(循环或固定)响应速度最快,灵活
缺点对电路故障敏感;低优先级可能饿死线数稍多,控制稍繁线数多,硬件成本高

注:n 为设备数量;BS=总线忙, BR=总线请求, BG=总线允许。


4.1 链式查询 (Daisy Chain)

工作原理

  1. 多个设备通过BR线发出总线请求
  2. 仲裁器检测到请求后,发出BG(总线允许)信号
  3. BG信号沿链式结构(菊花链)串行传递
  4. 第一个有请求的设备收到BG信号后,获得总线控制权,并阻止BG信号继续传递
  5. 该设备设置BS(总线忙)信号,开始使用总线

信号线的作用

  • BS (Bus Busy):总线忙信号,表示总线正在被使用
  • BR (Bus Request):总线请求信号,所有设备共用一根线
  • BG (Bus Grant):总线允许信号,串行传递,形成链式结构

实际应用:适合设备数量少、优先级固定的简单系统


4.2 计数器定时查询 (Polling)

工作原理

  1. 多个设备通过BR线发出总线请求
  2. 仲裁器检测到请求后,启动计数器
  3. 计数器从某个初值开始计数,依次查询各设备
  4. 当计数器值对应的设备有请求时,该设备获得总线控制权
  5. 该设备设置BS信号,开始使用总线

特点

  • 优先级可变:通过设置计数器初值来改变优先级
    • 初值固定:优先级固定
    • 初值循环:实现轮询,公平分配
  • 需要额外的设备地址线:log2n 根(n为设备数)

实际应用:适合需要灵活调整优先级的系统,可以实现公平轮询


4.3 独立请求 (Independent Request)

工作原理

  1. 每个设备有独立的BR(请求)线和BG(允许)线
  2. 设备通过自己的BR线发出请求
  3. 仲裁器根据优先级策略,选择其中一个设备
  4. 通过该设备的BG线发送允许信号
  5. 该设备获得总线控制权,设置BS信号,开始使用总线

实际应用:适合高性能系统,需要快速响应和灵活优先级控制的场景


⏱️ 第三部分:总线定时 (Timing)

核心问题:主从设备之间怎么配合?什么时候发数据?什么时候收数据?


3.1 同步定时 (Synchronous)

工作原理:所有设备使用统一的时钟信号,在固定的时钟周期内完成数据传输。

工作过程

  1. 主设备在时钟上升沿发送地址和控制信号
  2. 从设备在下一个时钟周期响应
  3. 数据在预定的时钟周期内传输完成

特点

  • 大家看同一个"红绿灯"(统一时钟信号)
  • 必须在固定的时钟周期内完成
  • 速度由最慢的设备决定(短板效应)

优点

  • 控制简单,实现容易
  • 速度快,适合高速设备

缺点

  • 要求所有设备速度一致,必须按最慢设备的节奏工作
  • 缺乏灵活性,难以适应速度差异大的设备

适用场景:总线长度短、存取速度相近的场景(如CPU与Cache、CPU与主存)


3.2 异步定时 (Asynchronous)

工作原理:没有统一的时钟,通过握手信号(Request/Acknowledge)来协调数据传输。

工作过程

  1. 主设备发送请求信号(Request)——"你好了吗?"
  2. 从设备准备好后,发送应答信号(Acknowledge)——"我好了!"
  3. 主设备收到应答后,开始传输数据——"那我发了。"
  4. 传输完成后,撤销请求信号

特点

  • 通过"握手"信号(请求 应答)协调
  • 没有统一时钟,按需等待
  • 控制复杂,但灵活

优点

  • 灵活,可以适应不同速度的设备
  • 不需要等待最慢的设备,效率高

缺点

  • 控制复杂,需要额外的握手信号线
  • 实现成本较高

适用场景:连接速度差异巨大的设备(如CPU与慢速I/O设备:键盘、鼠标)


🔢 第四部分:性能指标与计算 (⭐⭐⭐ 计算题必考)

1. 核心公式:总线带宽 (Bandwidth)

线(B)=线(W)8×线(F)(N)

或者更通用的理解:

B=W×FN
  • B (Bandwidth):总线带宽(最大数据传输率,单位:B/s)
  • W (Width):数据总线的位数(例如 32位、64位)。计算时记得 除以8 换算成字节(Byte)
  • F (Frequency):时钟频率(Hz)。
  • N (Cycles):完成一次数据传送需要的时钟周期数。(如果是单周期传输,N=1)。

💡 避坑指南

  • 注意单位换算!1 MHz=106 Hz1 MB/s=106 B/s
  • W通常以字节为单位,如果题目给的是位数,需要除以8。
  • N的值需要根据题目条件确定(如猝发传输时N可能为1)。

计算示例

  • 33MHz, 32位总线带宽 = 33M×4B=132MB/s(假设N=1)

2. 总线宽度

总线宽度:总线的物理线数,即数据总线的位数。

作用

  • 决定一次可以传输多少位数据
  • 例如:32位总线一次可以传输32位(4字节)数据,64位总线一次可以传输64位(8字节)数据
  • 总线宽度越大,一次传输的数据越多,但成本也越高,占用物理空间也越大

实际意义

  • 32位总线:适合低端系统,成本低
  • 64位总线:适合高性能系统,数据传输效率高

3. 易混概念辨析:宽度 vs 数据宽度

  • 数据通路宽度 (Data Path Width)硬件属性

    • 指总线的物理线数(如32根数据线)。
    • 比喻:高速公路有几条车道。
    • 这是硬件特性,决定了一次能传输多少位数据。
  • 数据宽度 (Data Width)逻辑属性

    • 指一个总线事务中,实际想要传输的数据总量。
    • 比喻:这趟运输任务总共要运多少货物。
    • 这是传输特性,决定了一次总线事务要传输多少数据。
    • 关系:如果"货物"很多(数据宽度大),由于"车道"有限(通路宽度小),就需要分多次运输。

实际例子

  • 假设总线宽度是32位(4字节),但一次要传输128字节的数据
  • 数据通路宽度:32位(硬件限制)
  • 数据宽度:128字节(传输需求)
  • 需要分32次传输才能完成(128 ÷ 4 = 32次)

数据宽度的类型及其应用

  • 单字(单字节):每次只传输一个字,适合随机访问
  • 定长块:每次传输固定长度的数据块,适合批量传输
  • 变长块:每次传输可变长度的数据块,灵活但控制复杂
  • 单字加定长块:先传一个字,再传定长块,兼顾灵活性和效率
  • 单字加变长块:先传一个字,再传变长块,最灵活但最复杂

4. 其他指标

  • 总线负载:挂接设备数量
  • 总线复用:地址/数据线共用(节省引脚)
  • 猝发传输:突发传输,给一个地址传一块数据

📝 总结:复习Checklist

  1. [ ] 概念:能说出为什么要用总线(省线、易扩展)。
  2. [ ] 判断:能区分主设备(CPU/DMA)和从设备(Mem/IO)。
  3. [ ] 计算:给频率和位宽,能算出带宽(例如:33MHz, 32位总线带宽 = 33M×4B=132MB/s)。
  4. [ ] 对比:做选择题时,看到"优先级固定、线少"选链式;看到"灵活、线多"选独立请求
  5. [ ] 定时:同步看时钟,异步看握手。
  6. [ ] 辨析:能区分数据通路宽度(硬件)和数据宽度(逻辑)。

💡 考试重点

  • 必背:总线带宽公式 B=W×F/N
  • 理解:三种仲裁方式的优缺点对比
  • 应用:能够根据题目条件计算总线带宽,或选择合适的仲裁方式