vault backup: 2026-07-04 12:12:55
This commit is contained in:
423
计算机组成原理/学习笔记/03_系统总线.md
Normal file
423
计算机组成原理/学习笔记/03_系统总线.md
Normal file
@@ -0,0 +1,423 @@
|
||||
# 第3章 系统总线
|
||||
|
||||
> 📖 本章介绍系统总线的基本概念、分类和控制逻辑。
|
||||
> 🎯 重点理解总线结构和总线仲裁方式
|
||||
|
||||
---
|
||||
|
||||
## 📋 本章目录
|
||||
|
||||
- [[#3.1 总线的基本概念]]
|
||||
- [[#3.2 总线的分类]]
|
||||
- [[#3.3 总线特性及性能指标]]
|
||||
- [[#3.4 总线结构]]
|
||||
- [[#3.5 总线控制]]
|
||||
- [[#本章小结]]
|
||||
|
||||
---
|
||||
|
||||
## 3.1 总线的基本概念
|
||||
|
||||
### 3.1.1 什么是总线
|
||||
|
||||
> [!info] 定义
|
||||
> 总线是连接多个部件的信息传输线,是各部件**共享**的传输介质。
|
||||
|
||||
**关键特性**:
|
||||
- 同一时刻只允许**一个部件**向总线发送信息
|
||||
- 多个部件可以**同时**从总线上接收相同的信息
|
||||
|
||||
```mermaid
|
||||
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的双总线结构
|
||||
|
||||
```mermaid
|
||||
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. 单总线结构
|
||||
|
||||
```mermaid
|
||||
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. 以存储器为中心的双总线结构
|
||||
|
||||
```mermaid
|
||||
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 总线的分类
|
||||
|
||||
### 按连接部件分类
|
||||
|
||||
```mermaid
|
||||
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) |
|
||||
|
||||
```mermaid
|
||||
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 多总线结构
|
||||
|
||||
```mermaid
|
||||
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] 问题
|
||||
> 多个部件同时请求总线时,如何决定谁先使用?
|
||||
|
||||
#### 集中式仲裁
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "集中式仲裁"
|
||||
BC[总线控制器] --> |"控制信号"| CPU[CPU]
|
||||
BC --> |"控制信号"| MEM[主存]
|
||||
BC --> |"控制信号"| IO1[I/O设备1]
|
||||
BC --> |"控制信号"| IO2[I/O设备2]
|
||||
end
|
||||
|
||||
style BC fill:#ff9999
|
||||
```
|
||||
|
||||
**三种方式**:
|
||||
|
||||
| 方式 | 原理 | 优点 | 缺点 |
|
||||
|------|------|------|------|
|
||||
| 链式查询 | 依次查询各部件 | 结构简单 | 优先级固定,对故障敏感 |
|
||||
| 计数器定时查询 | 计数器指定设备号 | 灵活,可编程 | 需要设备地址线 |
|
||||
| 独立请求方式 | 每个设备有独立请求线 | 响应速度快 | 控制线多,复杂 |
|
||||
|
||||
```mermaid
|
||||
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] 目标
|
||||
> 解决通信双方如何获知传输开始和结束,以及如何协调配合。
|
||||
|
||||
#### 四种通信方式
|
||||
|
||||
| 方式 | 同步方式 | 特点 | 适用场景 |
|
||||
|------|----------|------|----------|
|
||||
| 同步通信 | 统一时钟 | 简单,速度快 | 速度匹配的设备 |
|
||||
| 异步通信 | 应答信号 | 灵活,可靠 | 速度差异大的设备 |
|
||||
| 半同步通信 | 时钟+等待 | 兼顾两者 | 中等速度差异 |
|
||||
| 分离式通信 | 分阶段 | 效率最高 | 高性能系统 |
|
||||
|
||||
#### 异步通信的三种类型
|
||||
|
||||
```mermaid
|
||||
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. 说明同步通信和异步通信的区别和适用场景。
|
||||
|
||||
---
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [[01_计算机系统概论]] - 上一章
|
||||
- [[04_存储器]] - 下一章
|
||||
- [[08_CPU结构与功能]] - CPU与总线的连接
|
||||
|
||||
---
|
||||
|
||||
*本章难度:⭐⭐⭐ 中等*
|
||||
*重要程度:⭐⭐⭐ 基础*
|
||||
Reference in New Issue
Block a user