第四章:计算机硬件系统
章节概述
本章详细介绍计算机硬件系统的各个组成部分,包括CPU的结构和工作原理、存储系统的层次结构、总线系统、I/O系统以及指令流水线技术。理解硬件系统的组成和工作原理是掌握计算机系统知识的关键。
本章重点:
- CPU的组成和工作原理
- 存储器层次结构
- 总线的分类和仲裁
- I/O控制方式
本章难点:
- 指令执行过程
- Cache的工作原理
- 流水线冲突及解决
4.1 中央处理器
4.1.1 CPU的功能和组成
CPU的主要功能:
- 指令控制:取指令、分析指令、执行指令
- 操作控制:发出各种操作命令
- 时间控制:对各种操作进行定时
- 数据加工:算术运算和逻辑运算
CPU的基本组成:
CPU内部结构:
┌───────────────────────────────────────────────────────────────┐
│ 控制单元(CU) │
│ 指令译码 | 时序控制 | 操作控制 | 程序计数器 │
└─────────────────────────────┬─────────────────────────────────┘
│
┌─────────────────────────────▼─────────────────────────────────┐
│ 运算器(ALU) │
│ 算术运算 | 逻辑运算 | 移位运算 | 比较运算 │
└───────────────────────────────────────────────────────────────┘
↑↓
┌─────────────────────────────┴─────────────────────────────────┐
│ 寄存器组 │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ PC │ │ IR │ │ ACC │ │ MQ │ │ 通用 │ │ 段 │ │ 标志 │ │
│ │ │ │ │ │ │ │ │ │寄存器│ │寄存器│ │寄存器│ │
│ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ │
└───────────────────────────────────────────────────────────────┘
4.1.2 主要寄存器
程序计数器(PC):存放下一条要执行的指令地址,具有自动加1功能。
指令寄存器(IR):存放当前正在执行的指令。
累加器(ACC):存放运算的操作数和结果。
存储器地址寄存器(MAR):存放要访问的存储单元地址。
存储器数据寄存器(MDR):存放从存储器读出或写入的数据。
程序状态字(PSW):存放程序运行状态标志(零标志、进位标志、符号标志、溢出标志等)。
4.1.3 指令执行过程
一条指令的执行分为三个阶段:取指、译码、执行。
指令执行流程:
开始
│
▼
┌────────┐
│ 取指 │ ← 根据PC从内存取指令到IR
│ Fetch │ PC = PC + 1
└────┬───┘
│
▼
┌────────┐
│ 译码 │ ← 分析指令操作码
│ Decode │ 确定操作类型
└────┬───┘
│
▼
┌────────┐
│ 执行 │ ← 执行指令规定的操作
│Execute │ (运算、访存、跳转等)
└────┬───┘
│
▼
结束
示例:加法指令 ADD M(将内存M单元内容加到ACC中)
执行步骤: 1. 取指:PC → MAR,读内存,指令 → MDR → IR,PC + 1 2. 译码:分析操作码为加法 3. 取数:指令地址码 → MAR,读内存,数据 → MDR 4. 执行:ACC内容 + MDR内容 → ACC
4.2 存储系统
4.2.1 存储器层次结构
计算机采用多层次存储体系,在速度、容量和成本之间取得平衡。
存储器层次结构(金字塔):
┌─────────┐
│ 寄存器 │ 最快、最小、最贵
├─────────┤
│ Cache │ 高速缓冲存储器
├─────────┤
│ 主存 │ 内存(RAM/ROM)
├─────────┤
│ 磁盘 │ 外存(硬盘/SSD)
├─────────┤
│ 磁带 │ 备份存储
└─────────┘
最慢、最大、最便宜
速度:快 ←——————————————————→ 慢
容量:小 ←——————————————————→ 大
价格:高 ←——————————————————→ 低
局部性原理:
- 时间局部性:最近访问的数据可能很快再次被访问
- 空间局部性:与最近访问数据相邻的数据可能很快会被访问
4.2.2 主存储器
RAM(随机存取存储器):
- SRAM:静态RAM,速度快、功耗大、价格高,用作Cache
- DRAM:动态RAM,速度慢、功耗小、价格低,用作主存
ROM(只读存储器):
- ROM:掩膜ROM,出厂时写入,不可修改
- PROM:可编程ROM,只能写入一次
- EPROM:可擦除PROM,紫外线擦除
- EEPROM:电可擦除PROM,字节级擦除
- Flash:闪存,块级擦除(SSD使用)
内存编址:
内存编址示例(32位地址空间):
地址(十六进制) 内容
────────────────────────────────
0x00000000 [字节0]
0x00000001 [字节1]
0x00000002 [字节2]
... ...
0xFFFFFFFF [字节4G-1]
字长32位(4字节)的存储:
地址0x1000:字节0 | 字节1 | 字节2 | 字节3
↓ ↓ ↓ ↓
低位 高位
4.2.3 高速缓冲存储器(Cache)
Cache的工作原理:
CPU访问数据时,首先查看Cache,如果命中(Hit)则直接读取;如果不命中(Miss)则从主存调入Cache。
Cache访问流程:
CPU请求数据
│
▼
┌─────────┐
│ 访问Cache│
└────┬────┘
│
┌─┴─┐
↓ ↓
命中 未命中
│ │
│ ▼
│ ┌─────────┐
│ │访问主存 │
│ │调入Cache│
│ └────┬────┘
│ │
└───────┘
│
▼
返回数据
地址映射方式:
- 直接映射:主存块只能放入Cache的特定行
- 全相联映射:主存块可放入Cache的任意行
- 组相联映射:Cache分成若干组,组内全相联
替换算法:
- LRU(最近最少使用):替换最久未被访问的块
- FIFO(先进先出):替换最先调入的块
- Random(随机):随机选择替换块
写策略:
- 写直达(Write Through):同时写Cache和主存
- 写回(Write Back):只写Cache,替换时才写回主存
4.3 总线系统
4.3.1 总线的基本概念
总线:连接计算机各部件的公共信息传输通道,是多个系统功能部件间传输数据的介质。
总线的优点:
- 简化系统结构,便于模块化
- 减少连线数量
- 便于系统扩展和升级
总线的分类:
总线分类: 按层次: ├─ 片内总线(芯片内部) ├─ 系统总线(CPU-内存-I/O) └─ 通信总线(计算机之间) 按功能: ├─ 数据总线(DB):传输数据,双向 ├─ 地址总线(AB):传输地址,单向 └─ 控制总线(CB):传输控制信号
4.3.2 总线仲裁
当多个主设备同时请求使用总线时,需要仲裁机制决定哪个设备获得总线使用权。
集中式仲裁:
- 链式查询:通过优先级链决定
- 计数器定时查询:使用计数器轮询
- 独立请求:每个设备有独立的请求和允许线
分布式仲裁:各设备通过仲裁算法自主决定
链式查询仲裁:
总线请求 ───┬─── 设备A
├─── 设备B
└─── 设备C
总线允许 ───→ 设备A ──→ 设备B ──→ 设备C
(优先级最高) ↓ (优先级最低)
...
总线忙 ←──── 获得总线的设备
4.3.3 常用总线标准
系统总线:
- PCI:外围组件互连,32/64位
- PCIe:PCI Express,串行点对点连接
- AGP:图形加速端口
外部总线:
- USB:通用串行总线
- SATA:串行ATA,连接硬盘
- IEEE 1394(FireWire):高速串行总线
4.4 输入输出系统
4.4.1 I/O接口
I/O接口的功能:
- 数据缓冲:解决CPU与外设的速度差异
- 信号转换:电平转换、并串转换等
- 设备选择:选择要进行数据传输的设备
- 命令传送:传送CPU的命令
- 状态反馈:向CPU报告设备状态
4.4.2 I/O控制方式
4.4.2.1 程序查询方式
CPU不断查询设备状态,直到设备准备好才进行数据传输。
特点:
- 实现简单
- CPU效率低,大量时间花在查询上
- 适用于简单、低速设备
4.4.2.2 程序中断方式
设备准备好后向CPU发出中断请求,CPU响应中断后进行数据传输。
特点:
- CPU不必等待,可执行其他任务
- 响应需要时间(保护现场)
- 适用于中低速设备
中断处理流程:
设备完成数据准备
│
▼
发出中断请求
│
▼
CPU响应中断 ←────── 若中断允许
│
▼
保存现场(寄存器入栈)
│
▼
执行中断服务程序
│
▼
恢复现场(寄存器出栈)
│
▼
返回主程序(中断返回)
4.4.2.3 DMA方式
DMA(Direct Memory Access,直接存储器访问):在DMA控制器的控制下,直接在内存和外设之间传输数据,无需CPU干预。
特点:
- 数据传输不经过CPU
- 速度快,适用于高速设备
- CPU只在开始和结束时参与
DMA工作流程:
1. CPU设置DMA控制器:
- 内存起始地址 → DMA
- 传输字节数 → DMA
- 传输方向 → DMA
2. DMA控制器接管总线:
内存 ◄────────────► I/O设备
DMA控制
3. 传输完成,DMA向CPU发中断
4.4.2.4 通道方式
通道:专用的I/O处理器,有自己的指令系统(通道指令),可以独立执行I/O操作。
特点:
- 通道程序控制I/O操作
- 可同时管理多个设备
- 减轻CPU负担最多
- 用于大型计算机系统
4.5 指令流水线
4.5.1 流水线基本概念
流水线技术:将指令执行过程分解为若干阶段,每个阶段由独立的硬件完成,多条指令重叠执行。
非流水线 vs 流水线: 非流水线执行: 时间 → 指令1:[取指][译码][执行][写回] 指令2: [取指][译码][执行][写回] 指令3: [取指][译码][执行][写回] 流水线执行: 时间 → 指令1:[取指][译码][执行][写回] 指令2: [取指][译码][执行][写回] 指令3: [取指][译码][执行][写回] 指令4: [取指][译码][执行][写回] 理想情况:每个时钟周期完成一条指令
流水线性能指标:
- 吞吐率:单位时间内完成的指令数
- 加速比:非流水线时间与流水线时间之比
4.5.2 流水线冲突
结构冲突:多条指令争用同一硬件资源。
- 解决:资源重复(如指令Cache和数据Cache分离)
数据冲突:指令之间存在数据依赖关系。
- RAW(写后读):后续指令需要前面指令的结果
- WAR(读后写):反相关
- WAW(写后写):输出相关
- 解决:数据转发(旁路)、插入气泡(停顿)
RAW冲突示例: ADD R1, R2, R3 # R1 = R2 + R3 SUB R4, R1, R5 # R4 = R1 - R5(需要R1的值) 如果不等待,SUB会使用错误的R1值 解决 - 数据转发: ADD的运算结果直接送到SUB的执行阶段, 不必等到写回阶段
控制冲突:分支指令改变执行顺序,导致预取的指令无效。
- 解决:分支预测、延迟分支
4.6 练习题
一、选择题
1. 程序计数器PC的作用是( )
A. 存放指令 B. 存放下一条指令地址 C. 存放操作数 D. 存放运算结果
2. 以下存储器中,速度最快的是( ) A. 硬盘 B. 内存 C. Cache D. 寄存器
3. DMA方式的特点是( ) A. CPU全程参与 B. 无需CPU参与 C. 只在开始和结束时需要CPU D. 由通道控制
4. Cache的地址映射方式不包括( ) A. 直接映射 B. 全相联映射 C. 组相联映射 D. 间接映射
5. 流水线中的数据冲突是指( ) A. 硬件资源冲突 B. 指令间数据依赖 C. 分支指令导致 D. 存储器访问冲突
二、填空题
1. CPU由_______、_______和_______三大部分组成。
2. 存储器的三个主要指标是_______、_______和_______。
3. 总线按功能分为_______总线、_______总线和_______总线。
4. I/O控制方式有_______、_______、_______和_______四种。
5. 流水线冲突分为_______冲突、_______冲突和_______冲突。
三、简答题
1. 简述指令的执行过程。
2. 比较SRAM和DRAM的特点。
3. 简述Cache的工作原理和地址映射方式。
4. 什么是DMA?简述其工作过程。
5. 什么是流水线技术?它有哪些优势?
四、计算题
1. 某计算机Cache有16行,主存有256块,采用直接映射方式。问主存第100块应映射到Cache的哪一行?
2. 某流水线有5个阶段,每个阶段耗时1个时钟周期。执行100条指令,非流水线方式和流水线方式各需要多少时钟周期?加速比是多少?
参考答案:
一、选择题:1.B 2.D 3.C 4.D 5.B
二、填空题:
1. 运算器、控制器、寄存器组 2. 速度、容量、价格 3. 数据、地址、控制 4. 程序查询、中断、DMA、通道 5. 结构、数据、控制