====== 第四章:计算机硬件系统 ====== * [[#4.1 中央处理器|4.1 中央处理器]] * [[#4.2 存储系统|4.2 存储系统]] * [[#4.3 总线系统|4.3 总线系统]] * [[#4.4 输入输出系统|4.4 输入输出系统]] * [[#4.5 指令流水线|4.5 指令流水线]] * [[#4.6 练习题|4.6 练习题]] ---- ===== 章节概述 ===== 本章详细介绍计算机硬件系统的各个组成部分,包括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. 结构、数据、控制