Files
obsidian/计算机组成原理/学习笔记/03_系统总线.md

423 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第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与总线的连接
---
*本章难度:⭐⭐⭐ 中等*
*重要程度:⭐⭐⭐ 基础*