一、计算机系统组成
1.1、计算机系统分类结构
1.1.1、架构图
计算机系统
硬件
软件
处理器、存储器、总线、接口和外部设备等
系统软件
应用软件
操作系统、编译工具等
办公软件、娱乐软件、信息系统软件等
1.1.2、硬件系统
1.1.2.1、总线 (Bus)
连接各个硬件部件的"高速公路"。在架构设计中,总线的带宽和吞吐量是系统性能的关键指标。
总线分为数据总线(传输数据)、地址总线(决定寻址范围)、控制总线(传输控制信号)。
1.1.2.2、接口 (Interface)
主机与外设之间的桥梁,解决CPU与外设速度不匹配的问题。
1.1.3、软件系统
1.1.3.1、系统软件
操作系统 (OS):管理系统资源(处理器、存储、设备、文件),是学习的核心。
编译工具:将高级语言翻译成机器语言。
1.1.3.2、应用软件
直接服务于用户的软件。
1.2、冯·诺依曼计算机组成
1.2.1、架构图
主机
外设
CPU
数据
数据
数据
数据
数据
控制
控制
控制
控制
控制
指令或地址
输入设备
辅助存储器
输出设备
运算器
控制器
主存储器
1.2.2、运算器 (ALU)
执行算术运算(加减乘除)和逻辑运算(与或非)。
如累加寄存器 (ACC)、状态条件寄存器 (PSW) 等。
1.2.3、控制器 (Controller)
计算机的指挥中心,负责指令的译码、控制信号的产生。
如程序计数器 (PC)、指令寄存器 (IR)、指令译码器 (ID) 等。
控制流向:控制器向所有部件发送控制信号,指挥各部件协调工作。
1.2.4、存储器
主存储器 (Main Memory) :即内存,CPU可直接访问,存放当前运行的数据和指令。指令和数据均采用二进制代码表示。
辅助存储器 (Auxiliary Storage):即硬盘/磁盘,容量大但速度慢,CPU需通过I/O接口访问。
存储程序概念 :指令和数据以同等地位存储在存储器中,并可按地址寻址。这是冯·诺依曼架构最本质的特征。
指令执行顺序:指令在存储器中按顺序存放,通常由**程序计数器(PC)**指明当前执行指令的地址。
数据流向:数据主要在"运算器"、"主存储器"和"输入/输出设备"之间流动。
1.2.5、输入设备
键盘、鼠标等。
1.2.6、输出设备
显示器、打印机等。
1.3、Flynn分类法
基于指令流和数据流的数量,计算机结构分为:
1)SISD (单指令流单数据流):传统冯·诺依曼电脑。
2)SIMD (单指令流多数据流):阵列处理机,适合处理数组运算。
3)MISD (多指令流单数据流):极少见。
4)MIMD (多指令流多数据流):多处理器系统,现代服务器架构。
1.4、CISC 与 RISC
1.4.1、指令集系统对比图
RISC 精简指令集
指令: 数量少 / 定长 / 单周期
寻址: 支持方式少
实现: 硬布线逻辑 / 增加通用寄存器
特性: 适合流水线 / 仅Load-Store访存
代表: ARM / Power
CISC 复杂指令集
指令: 数量多 / 频率差异大 / 可变长
寻址: 支持多种方式
实现: 微程序控制技术 / 微码
代表: Intel/AMD x86
指令集系统
1.4.2、CISC (复杂指令集)
设计理念:试图通过一条指令完成复杂的操作(例如,直接处理内存中的数据运算)。
指令特点 :数量多 。使用频率差别大 (常用的很少,不常用的很多)。可变长格式(指令长度不固定,译码复杂)。
实现方式 :微程序控制技术 (Microcode),这是CISC的核心标志。控制器内部像是运行了一个微型软件,把复杂指令翻译成微指令执行。
代表架构:Intel、AMD 的 x86 CPU。
1.4.3、RISC (精简指令集)
设计理念:只保留最常用的简单指令,通过组合简单指令来完成复杂操作。
二八定律:20%的指令在80%的时间内被使用。
指令特点 :数量少 ,使用频率接近。定长格式 (便于硬件快速译码)。大部分为单周期指令(一个时钟周期完成)。
操作寄存器 :只有 Load/Store 操作才能访问内存,其他运算都在寄存器之间进行。
实现方式:
1)硬布线逻辑 (Hardwired Logic):直接用电路逻辑实现,速度极快。
2)增加通用寄存器:为了减少访存,RISC通常拥有大量通用寄存器(相比CISC多得多)。
适合采用流水线 (Pipeline) :这是RISC最重要的特性之一,因为指令定长、规整,非常适合流水线处理。
代表架构:ARM(手机、嵌入式)、PowerPC。
1.5、存储体系结构
1.5.1、存储系统层次结构图
存储层级
CPU 寄存器
单位: bit
Cache 高速缓存
按内容存取 / 相联存储器
内存 / 主存
介质: DRAM / 容量示例: 32G
外存 / 辅存
介质: 硬盘、光盘、U盘等 / 容量示例: 1T
特性变化方向
高 <--- 成本/速度 ---> 低
小 <--- 容量 ---> 大
1.5.2、核心概念
存储系统是为了解决存储容量、存取速度和价格之间的矛盾而建立的层次结构。
顶层(速度最快、容量最小、成本最高):CPU内部寄存器。
中间层:Cache(高速缓存)和主存储器(内存)。
底层(速度最慢、容量最大、成本最低):辅助存储器(硬盘等)。
1.5.3、Cache(高速缓存)
Cache在硬件实现上常使用CAM(Content Addressable Memory),不是像内存那样仅靠地址寻址,而是可以根据内容(Tag)快速匹配。
Cache通常使用 SRAM(静态随机存取存储器),速度快但集成度低、贵。
Cache命中率 :系统平均周转时间 Tavg=h×tc+(1−h)×tmT_{avg} = h \times t_c + (1-h) \times t_mTavg=h×tc+(1−h)×tm (其中 hhh 是命中率,tct_ctc 是Cache时间,tmt_mtm 是主存时间)。
1.5.4、主存(内存)
内存通常使用 DRAM(动态随机存取存储器),需要刷新电路,速度相对慢。
主存与Cache之间通常以**"块"(Block/Line)为单位交换数据;主存与外存之间通常以"页"(Page)**为单位交换数据。
1.5.5、局部性原理
局部性原理是高速缓存(Cache)和虚拟存储器技术能够实现的理论基础。
1.5.5.1、时间局部性
定义:如果一个数据项正在被访问,那么在近期它很可能再次被访问。
典型原因 :程序中存在大量的循环操作 (如课件代码中的 for 循环)。
1.5.5.2、空间局部性
定义:如果一个存储位置被访问,那么它附近的存储位置在近期也很可能被访问。
典型原因 :程序的顺序执行特性,以及数据结构(如数组)在内存中的连续存放。
1.5.5.3、应用场景分析
工作集理论 :操作系统根据局部性原理,将进程频繁访问的页面集合称为"工作集",常驻内存以减少缺页中断(Page Fault)。
预取机制 (Prefetching):现代CPU会根据空间局部性,自动将当前访问数据的后续数据块提前拉入Cache。
1.5.5.4、矩阵遍历优化
假设C语言中数组是按行存储的。
按行遍历 (双重循环外层i,内层j):利用了空间局部性,Cache命中率高。
按列遍历 (双重循环外层j,内层i):破坏了空间局部性,跳跃式访问,Cache命中率低,性能差。
1.6、总线
1.6.1、总线分类思维导图
总线 Bus
基本概念
分时共享
半双工
分时发送/同时接收
按功能划分
数据总线
地址总线
控制总线
按传输方式划分
并行总线
串行总线
按从属类型/位置划分
芯片内总线
系统总线/内总线
外总线/通信总线
1.6.2、总线的基本概念
定义 :总线是一组能为多个部件分时共享的信息传送线。总线通常是半双工的。
分时共享 :这是总线最本质的特征。分为分时发送 和同时接受。
半双工:意味着同一时刻只能有一个方向传输。
分时发送 :同一时刻,挂接在总线上的多个部件中,只能有一个部件向总线发送数据。
同时接收 :同一时刻,可以有多个部件同时从总线接收数据(广播模式)。
1.6.3、总线复用的好处
总线复用(Multiplexing)是为了减少芯片管脚数和系统连线数,降低成本和体积。但代价是控制逻辑变复杂,且带宽可能会成为瓶颈。
1.6.4、总线的分类详解
1.6.4.1、按功能划分
1)数据总线 (Data Bus):传输数据。**数据总线的宽度(位数)**决定了CPU与内存/外设之间单次数据传输的大小,通常与CPU的字长(如32位、64位)有关。
2)地址总线 (Address Bus) :传输地址。地址总线的宽度 决定了CPU的寻址能力 。例如32位地址总线,最大支持 232=4GB2^{32} = 4GB232=4GB 内存。
3)控制总线 (Control Bus):传输控制信号(如读/写信号、中断请求、时钟信号等)。
1.6.4.2、按数据传输方式划分
1)并行总线 :数据字节的各位用多条线同时传送。适合短距离传输。早期的打印机并口、IDE硬盘接口、PCI接口。
2)串行总线 :数据一位一位地按顺序传送。适合长距离传输,波特率可调整,依赖校验码保证正确性。USB、SATA、PCIe (注意:现代高速总线多采用串行点对点,因为并行总线在高频下存在严重的信号干扰和同步问题)。
1.6.4.3、按总线位置(层次)划分
1)芯片内总线:芯片内部(如CPU内部ALU与寄存器之间)的连接。
2)系统总线 (内总线):计算机各组成部分(CPU、内存、接口)之间的连接。我们常说的ISA、PCI等通常指这一层。
3)外总线 (通信总线):计算机与外设,或计算机与计算机之间的连接。例如 USB、RS-232、SCSI。
1.6.5、总线带宽
总线带宽 (Bandwidth) 指单位时间内总线上可传输的数据量。
总线带宽=总线宽度8×总线频率÷总线周期总线带宽 = \frac{总线宽度}{8} \times 总线频率 \div 总线周期总线带宽=8总线宽度×总线频率÷总线周期
总线宽度:单位是 bit(位)。
总线频率:单位是 MHz。
除以8:是因为带宽通常以 MB/s (兆字节/秒) 为单位,而宽度是位。
例题:总线宽度为32位,时钟频率为200MHz,若每个总线周期传输一次数据,带宽是多少?
- Bandwidth=(32/8)×200=800MB/sBandwidth = (32 / 8) \times 200 = 800 MB/sBandwidth=(32/8)×200=800MB/s
1.7、I/O(输入/输出)控制方式
1.7.1、I/O控制方式演变图
I/O控制方式演变趋势:效率由低到高
解放CPU等待时间
解放CPU搬运数据负担
进一步独立
最高级
程序控制/查询方式:CPU全称介入 / 串行工作
程序中断方式:CPU无需等待 / CPU与IO并行
DMA方式:主存与外设高速交换 / 批量传输
通道方式:专用I/O处理器
IO处理机:独立性最强
1.7.2、程序控制(查询)方式
分为无条件传送和程序查询方式。
工作原理:CPU 必须不断地循环读取状态寄存器(Polling,轮询),查询外设是否准备好。
CPU状态:在数据传输过程中,CPU 处于**"忙等" (Busy Waiting)** 状态,无法处理其他任务。
缺点:严重影响CPU利用率,I/O能力不高。
适用场景:仅适用于极其简单的微处理器控制或对外设速度要求极低的场景。
1.7.3、程序中断方式
CPU无需等待,提高了响应速度。
工作原理:外设准备好数据后,向CPU发送"中断请求"。CPU暂停当前任务,保存断点,转去执行"中断服务程序"来传输数据。
重点:【CPU与I/O传输可并行】(指在I/O设备准备数据时,CPU可以做别的事)。
局限性(关键) :虽然解决了"忙等"问题,但数据传输本身(从I/O接口读入CPU寄存器,再写入内存)依然需要CPU亲自执行指令来完成。
中断响应时间:对于高速外设(如硬盘),如果每传一个字节都要中断一次CPU,CPU会因频繁响应中断而崩溃。
1.7.4、DMA方式
为了实现主存与外设之间的高速、批量数据交换。
定义 :直接内存存取。在内存和外设之间建立一条直接数据通路,不再经过CPU。
DMAC(DMA控制器):专门的硬件接管总线控制权。
效率:比中断方式更高效。
重点:【CPU与I/O传输可并行】。
CPU介入时机:
1)开始前:CPU对DMAC初始化(告诉它传什么、传多少、传到哪)。
2)结束后:DMAC发中断告诉CPU"传完了"。
偷取周期 (Cycle Stealing):DMA控制器通常通过"周期挪用"的方式占用总线周期来传送数据,这可能会轻微影响CPU访存,但整体效率极大提升。
1.7.5、通道与I/O处理机
1)通道方式:通道本质上是一个简化的专用处理器,有自己的指令系统(通道指令)。它可以管理多台外设,进一步减少CPU的干预。
2)I/O处理机:比通道功能更强,拥有独立的本地存储器,类似于现在的智能网卡或RAID卡上的芯片,几乎完全独立于主机CPU工作。
1.7.6、总结与对比
| 方式 | CPU是否参与数据传输 | 中断发生频率 | 数据传输单位 | 效率 |
|---|---|---|---|---|
| 程序查询 | 是 (全程参与) | 无 | 字/字节 | 最低 |
| 程序中断 | 是 (通过指令搬运) | 极高 (每传一个数据一次) | 字/字节 | 较低 |
| DMA | 否 (仅初始化和结束) | 低 (一批数据传完才一次) | 数据块 (Block) | 高 |
1.8、处理器体系结构分类
1.8.1、体系结构对比
| 维度 | 冯·诺依曼结构 | 哈佛结构 |
|---|---|---|
| 存储空间 | 统一 (指令数据在一起) | 独立 (指令数据物理分离) |
| 总线资源 | 少 (资源利用率高,但竞争) | 多 (4条总线,硬件复杂) |
| 执行效率 | 较低 (受限于总线瓶颈) | 高 (指令/数据并行存取) |
| 代码/数据宽度 | 必须相同 (因为共享总线) | 可以不同 (如指令字长16位,数据字长32位) |
| 适用领域 | 通用计算机 (PC) | 嵌入式、DSP、微控制器 |
1.8.2、体系结构对比思维导图
哈佛结构
数据通道
指令通道
数据总线
CPU
指令总线
程序指令存储器
数据存储器
冯·诺依曼结构 / 普林斯顿结构
CPU
系统总线
数据与指令共用
存储器
指令+数据混合存储
1.8.3、冯·诺依曼结构
1.8.3.1、别名
普林斯顿结构
1.8.3.2、核心特征
统一存储 :程序指令和数据合并存储在同一个存储器中,且地址空间是统一的。
共享总线 :指令和数据通过相同的数据总线传输。
串行工作:由于总线只有一条,CPU在取指令时就不能取数据,存数据时就不能取指令,这导致了著名的**"冯·诺依曼瓶颈"**(这是"共享总线"带来的必然考点)。
1.8.3.3.、典型应用
通用计算机,如 PC 处理器(Intel i3, i5, i7 等)。
注:虽然现代CPU内部缓存(L1 Cache)通常分开存放指令和数据,但从主存(RAM)层面看,它们依然遵循冯·诺依曼结构。
1.8.4、哈佛结构
1.8.4.1、定义
一种并行体系结构。
1.8.4.2、核心特征
独立存储 :程序指令和数据分开存储在不同的存储空间(物理上分开),拥有独立的地址空间。
多条总线 :课件明确指出有4条总线(指令数据总线、指令地址总线、数据数据总线、数据地址总线)。
并行工作 :可以同时读取指令和读取/写入数据。
高吞吐率:由于取指和存取数据互不冲突,数据吞吐率明显高于冯·诺依曼结构。
1.8.4.3、典型应用
嵌入式系统处理器。
DSP (数字信号处理器):DSP处理大量数据流,对吞吐量要求极高,哈佛结构是其标配。