Files

11 KiB
Raw Permalink Blame History

第3章 系统总线

📖 本章介绍系统总线的基本概念、分类和控制逻辑。 🎯 重点理解总线结构和总线仲裁方式


📋 本章目录


3.1 总线的基本概念

3.1.1 什么是总线

[!info] 定义 总线是连接多个部件的信息传输线,是各部件共享的传输介质。

关键特性

  • 同一时刻只允许一个部件向总线发送信息
  • 多个部件可以同时从总线上接收相同的信息
graph TB
    subgraph "总线结构"
        CPU[CPU] <--> |"共享总线"| BUS[系统总线]
        MEM[主存] <--> |"共享总线"| BUS
        IO1[I/O设备1] <--> |"共享总线"| BUS
        IO2[I/O设备2] <--> |"共享总线"| BUS
        IO3[I/O设备3] <--> |"共享总线"| BUS
    end

    style BUS fill:#ffcc00

3.1.2 总线连接方式

分散连接 vs 总线连接

特性 分散连接 总线连接
连线方式 各部件单独连线 共享传输线
灵活性 差,增删设备困难 好,便于扩展
复杂度
成本

3.1.3 总线结构类型

1. 面向CPU的双总线结构

graph TB
    subgraph "面向CPU的双总线"
        CPU[CPU] <--> |"M总线"| MEM[主存]
        CPU <--> |"I/O总线"| IO1[I/O设备1]
        CPU <--> |"I/O总线"| IO2[I/O设备2]
        CPU <--> |"I/O总线"| ION[I/O设备n]
    end

    style CPU fill:#ff9999
    style MEM fill:#99ff99

特点

  • 两组总线M总线存储总线和I/O总线
  • I/O设备与主存交换信息需经过CPU
  • 影响CPU工作效率

2. 单总线结构

graph TB
    subgraph "单总线结构"
        CPU[CPU] <--> |"系统总线"| BUS[系统总线]
        MEM[主存] <--> |"系统总线"| BUS
        IO1[I/O设备1] <--> |"系统总线"| BUS
        IO2[I/O设备2] <--> |"系统总线"| BUS
        ION[I/O设备n] <--> |"系统总线"| BUS
    end

    style BUS fill:#ffcc00

特点

  • 所有部件挂到同一组总线
  • I/O与主存交换信息不占用CPU
  • 需要总线判优逻辑解决冲突

3. 以存储器为中心的双总线结构

graph TB
    subgraph "以存储器为中心的双总线"
        CPU[CPU] <--> |"存储总线"| MEM[主存]
        MEM <--> |"系统总线"| IO1[I/O设备1]
        MEM <--> |"系统总线"| IO2[I/O设备2]
        MEM <--> |"系统总线"| ION[I/O设备n]
        CPU <--> |"系统总线"| IO1
        CPU <--> |"系统总线"| IO2
        CPU <--> |"系统总线"| ION
    end

    style CPU fill:#ff9999
    style MEM fill:#99ff99

特点

  • 在单总线基础上增加CPU与主存的专用总线
  • 提高传输效率,减轻系统总线负担
  • I/O与存储器交换信息不经过CPU

3.2 总线的分类

按连接部件分类

graph LR
    A[总线分类] --> B[片内总线]
    A --> C[系统总线]
    A --> D[通信总线]

    B --> B1[芯片内部总线]
    C --> C1[数据总线]
    C --> C2[地址总线]
    C --> C3[控制总线]
    D --> D1[串行通信]
    D --> D2[并行通信]

3.2.1 片内总线

[!info] 定义 芯片内部的总线如CPU芯片内部寄存器之间、寄存器与ALU之间的连线。

3.2.2 系统总线

系统总线传输三类信息:

数据总线Data Bus

特性 说明
传输内容 各功能部件之间的数据信息
传输方向 双向传输
位数 与机器字长、存储字长有关8/16/32位
影响 数据总线宽度影响系统性能

[!example] 示例 数据总线宽度为8位指令字长为16位则取指需两次访问主存。

地址总线Address Bus

特性 说明
传输内容 指明CPU欲访问的存储单元或I/O端口地址
传输方向 单向由CPU输出
位数 与存储单元个数有关
计算 n位地址线 → 2^n 个存储单元

[!example] 示例 20根地址线 → 2^{20} = 1M 个存储单元

控制总线Control Bus

特性 说明
传输内容 各种控制信号和状态信号
传输方向 单根单向,总体双向
功能 控制总线使用权、同步操作、状态反馈

常见控制信号

信号 方向 功能
时钟 CPU→ 同步各种操作
复位 CPU→ 初始化所有部件
总线请求 ←部件 部件请求总线使用权
总线允许 CPU→ 授予总线使用权
中断请求 ←部件 部件提出中断请求
中断响应 CPU→ 接收中断请求
存储器读 CPU→ 从存储器读数据
存储器写 CPU→ 向存储器写数据
I/O读 CPU→ 从I/O端口读数据
I/O写 CPU→ 向I/O端口写数据

3.2.3 通信总线

用于计算机系统之间或与其他系统之间的通信。

类型 特点 适用距离
串行通信 数据在单条线上逐位传输 远距离(可利用电话网络)
并行通信 数据在多条线上同时传输 近距离(通常<30m
graph LR
    subgraph "串行通信"
        A1[发送端] --> |"1条线<br/>逐位传输"| B1[接收端]
    end

    subgraph "并行通信"
        A2[发送端] --> |"8条线<br/>同时传输"| B2[接收端]
    end

3.3 总线特性及性能指标

3.3.1 总线特性

特性 说明
机械特性 尺寸、形状、管脚数、排列顺序
电气特性 传输方向、有效电平范围
功能特性 每根传输线的功能定义
时间特性 信号的时序关系

3.3.2 总线性能指标

指标 定义 影响因素
总线宽度 数据总线的根数 决定一次传输的数据量
总线带宽 单位时间传输数据量 总线宽度 × 总线频率
总线复用 地址线与数据线复用 减少引脚数,降低效率
信号线数 地址、数据、控制线总数 影响接口复杂度
总线控制方式 同步/异步、突发传输等 影响传输效率

总线带宽计算

总线带宽 = \frac{总线宽度}{8} \times 总线频率 \quad (MB/s)

[!example] 示例 总线宽度32位频率66MHz

带宽 = \frac{32}{8} \times 66 = 264 \quad MB/s

3.4 总线结构

3.4.1 单总线结构

所有部件共享同一组总线,结构简单但效率有限。

3.4.2 多总线结构

graph TB
    subgraph "多总线结构示例"
        CPU[CPU] <--> |"前端总线"| NB[北桥]
        NB <--> |"存储总线"| MEM[内存]
        NB <--> |"PCI总线"| PCI[PCI设备]
        PCI <--> |"ISA总线"| ISA[ISA设备]
        NB <--> |"AGP总线"| AGP[显卡]
    end

    style CPU fill:#ff9999
    style NB fill:#ffcc00
    style MEM fill:#99ff99

优点

  • 不同速度设备使用不同总线
  • 提高整体效率
  • 便于扩展

3.5 总线控制

3.5.1 总线判优控制

[!info] 问题 多个部件同时请求总线时,如何决定谁先使用?

集中式仲裁

graph TB
    subgraph "集中式仲裁"
        BC[总线控制器] --> |"控制信号"| CPU[CPU]
        BC --> |"控制信号"| MEM[主存]
        BC --> |"控制信号"| IO1[I/O设备1]
        BC --> |"控制信号"| IO2[I/O设备2]
    end

    style BC fill:#ff9999

三种方式

方式 原理 优点 缺点
链式查询 依次查询各部件 结构简单 优先级固定,对故障敏感
计数器定时查询 计数器指定设备号 灵活,可编程 需要设备地址线
独立请求方式 每个设备有独立请求线 响应速度快 控制线多,复杂
graph TB
    subgraph "链式查询"
        BG1[总线同意] --> CPU
        CPU --> IO1
        IO1 --> IO2
        IO2 --> ION
        BR[总线请求] --> BC[总线控制器]
        BS[总线忙] --> BC
    end

    subgraph "独立请求"
        BR1[请求1] --> BC[总线控制器]
        BR2[请求2] --> BC
        BRN[请求n] --> BC
        BG1[同意1] --> CPU
        BG2[同意2] --> IO1
        BGN[同意n] --> ION
    end

分布式仲裁

各设备自行判断优先级,无需中央控制器。

3.5.2 总线通信控制

[!info] 目标 解决通信双方如何获知传输开始和结束,以及如何协调配合。

四种通信方式

方式 同步方式 特点 适用场景
同步通信 统一时钟 简单,速度快 速度匹配的设备
异步通信 应答信号 灵活,可靠 速度差异大的设备
半同步通信 时钟+等待 兼顾两者 中等速度差异
分离式通信 分阶段 效率最高 高性能系统

异步通信的三种类型

sequenceDiagram
    participant 主模块
    participant 从模块

    Note over 主模块,从模块: 不互锁方式
    主模块->>从模块: 请求
    主模块-->>从模块: (等待固定时间)
    从模块->>主模块: 回答

    Note over 主模块,从模块: 半互锁方式
    主模块->>从模块: 请求
    从模块->>主模块: 回答
    主模块-->>从模块: (撤销请求)

    Note over 主模块,从模块: 全互锁方式
    主模块->>从模块: 请求
    从模块->>主模块: 回答
    主模块->>从模块: 撤销请求

📝 本章小结

核心概念

  1. 总线定义:多个部件共享的传输介质
  2. 总线分类:片内总线、系统总线、通信总线
  3. 系统总线:数据总线(双向)、地址总线(单向)、控制总线(总体双向)
  4. 总线仲裁:集中式(链式查询、计数器查询、独立请求)、分布式
  5. 通信方式:同步、异步、半同步、分离式

关键公式

  • 总线带宽 = 总线宽度/8 × 总线频率
  • 地址空间 = $2^n$n为地址线位数

重点图示

[!summary] 必须掌握的图

  1. 三种总线结构框图面向CPU、单总线、以存储器为中心
  2. 总线仲裁方式对比图
  3. 异步通信三种类型时序图

🧪 自测练习

概念题

  1. 什么是总线?为什么需要总线?
  2. 比较三种总线结构的优缺点。
  3. 说明数据总线、地址总线、控制总线的区别。

计算题

  1. 某系统总线宽度为32位总线频率为100MHz求总线带宽。
  2. 若地址线为24位可寻址多少存储单元若存储字长为16位存储容量是多少

分析题

  1. 比较三种集中式仲裁方式的优缺点。
  2. 说明同步通信和异步通信的区别和适用场景。

🔗 相关链接


本章难度: 中等 重要程度: 基础