一、计算机系统层次结构
计算机系统通过“分层抽象”屏蔽技术细节,核心是冯·诺依曼体系与多级层次结构。
1.1 冯·诺依曼体系:硬件核心架构
冯·诺依曼体系以“存储程序”为核心,硬件由 输入设备、运算器、控制器、存储器、输出设备 五大部件组成,其中 CPU(运算器+控制器) 是系统的“神经中枢”。
(1)五大部件功能与协作逻辑
五大部件通过“数据/控制/地址总线”协同工作,核心职责与协作场景如下:
部件 | 核心功能 | 协作场景示例 |
---|---|---|
输入设备 | 采集外部数据(如键盘、鼠标) | 将用户输入的指令/数据传入内存 |
运算器 | 执行算术/逻辑运算 | 对内存中取出的数据进行加减运算 |
控制器 | 调度时序与指令执行 | 解析指令并向各部件发控制信号 |
存储器 | 存储程序和数据(主存+辅存) | 临时存储运算中间结果、长期存储文件 |
输出设备 | 呈现处理结果(如显示器、打印机) | 将运算结果从内存输出到屏幕显示 |
(2)CPU 内部构成:运算、控制与存储的融合
CPU 是“运算器+控制器+寄存器组+内部总线”的集成,各子模块分工明确:
-
运算器:由算术逻辑单元(ALU)、累加器(AC)、数据缓冲寄存器(DR)、状态条件寄存器(PSW) 组成,负责数据运算与状态记录:
- ALU:执行算术(加减乘除)与逻辑(与或非)运算;
- AC:暂存运算的操作数或结果;
- DR:缓冲待运算的数据;
- PSW:记录运算状态(如溢出、进位)。
-
控制器:由指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、指令译码器(ID)、时序部件、微操作信号发生器 组成,负责指令解析与调度:
- IR:暂存当前执行的指令;
- PC:指向“下一条指令”的内存地址;
- AR:暂存 CPU 访问内存的目标地址;
- ID:解析指令的操作码与地址码;
- 时序部件:生成时钟脉冲,同步各部件操作;
- 微操作信号发生器:根据指令生成控制信号。
-
寄存器组:高速存储单元,临时存放频繁访问的数据/地址(如通用寄存器、专用寄存器);
-
内部总线:CPU 内部模块间的数据/控制信号传输通道。
1.2 硬件子结构:主机与外设的划分
硬件系统按“功能聚合”分为主机与外设,各子系统承载不同职责:
(1)主机:核心计算资源集群
主机包含 CPU、cache、主存(内存)、内部总线,是数据处理的核心区域:
- CPU:负责运算与控制(如 1.1.2 所述);
- cache(高速缓存):介于 CPU 与主存之间的高速存储,包含“存储部分(缓存主存副本)”与“控制部分(判断数据是否命中缓存)”,用于加速内存访问;
- 主存(内存):临时存储程序与数据,速度快但断电易失;
- 内部总线:主机内部模块(如 CPU、内存、IO 接口)间的互连总线。
(2)外设:人机与机机交互接口
外设包含 输入设备、输出设备、外存(辅存),负责数据输入输出与长期存储:
- 输入设备:如键盘、鼠标、扫描仪,将外部信息传入主机;
- 输出设备:如显示器、打印机、音箱,将主机处理结果输出;
- 外存(辅存):如硬盘、U盘、光盘,长期存储数据(断电保留)。
1.3 总线分类:硬件互连的“高速公路”
总线是硬件模块间传输数据、地址、控制信号的公共通道,按互连层级分为三类:
总线类型 | 互连范围 | 典型场景 |
---|---|---|
内部总线 | CPU 芯片内部模块(如运算器→控制器) | 芯片内信号传输 |
系统总线 | 主机内部插板级互连(如 CPU→内存、CPU→IO 接口) | 主板上各部件通信 |
外部总线 | 主机与外设间的设备级互连(如 USB、HDMI) | 计算机与外部设备(打印机、显示器)通信 |
1.5 指令集架构:RISC 与 CISC
CPU 的指令执行效率与 指令集架构(Instruction Set Architecture, ISA) 强相关,主流设计范式分 RISC(精简指令集计算机) 与 CISC(复杂指令集计算机)。
1.5.1 核心定义与设计理念
- CISC(Complex Instruction Set Computer):
追求「单条指令完成复杂操作」,通过丰富的指令集(如 x86 架构)减少程序代码量,但指令的硬件实现逻辑复杂。 - RISC(Reduced Instruction Set Computer):
追求「简单指令快速执行」,通过精简指令集(如 ARM、MIPS、RISC - V 架构)降低硬件复杂度,依赖编译器优化程序以提升指令并行度。
1.5.2 核心差异对比
RISC 与 CISC 在指令数量、复杂度、硬件/软件分工等维度存在显著差异:
对比维度 | RISC | CISC |
---|---|---|
指令数量 | 少(通常 < 100 条) | 多(通常 > 200 条) |
指令复杂度 | 单周期指令为主,格式/长度统一 | 多周期指令为主,格式/长度不统一 |
硬件/软件分工 | 硬件简单,复杂操作由软件(编译器)实现 | 硬件复杂,复杂操作由单条指令实现 |
流水线支持 | 天然适配流水线(指令简单且规整) | 流水线实现复杂(指令周期差异大) |
典型架构 | ARM、MIPS、RISC - V | x86(Intel/AMD 系列) |
1.5.3 技术价值与适用场景
- RISC:适合移动设备、嵌入式系统(如手机、物联网设备),优势是 低功耗、高并行、易扩展;
- CISC:适合桌面端、服务器(如 PC、数据中心),优势是 代码密度高、兼容 legacy 软件。
1.6 系统层次结构(自底向上)
计算机系统从“硬件”到“应用软件”分多层,每层通过“接口”向上层提供服务:
- 硬件层:由 CPU、内存、IO 设备、总线组成,是系统的物理基础;
- 固件/微程序层:通过微指令控制硬件(如 CPU 微程序),实现硬件抽象;
- 操作系统层:管理硬件资源,提供进程调度、内存管理等服务;
- 系统软件层:编译器、解释器等工具,支撑应用软件开发;
- 应用软件层:面向用户的业务程序(如浏览器、办公软件)。
二、数据表示与编码
计算机以“二进制”为基础表示数据,需掌握数制转换、码制规则、字符编码、校验码(数据可靠性保障)。
2.1 数制转换(进制间映射)
不同进制(二进制、十进制、十六进制)可通过“按权展开、基数乘除”转换:
2.2 码制:数值与符号的表示
计算机用“编码”表示有符号数,核心码制包括原码、反码、补码、移码:
2.3 字符编码:非数值数据表示
字符编码用于映射文字/符号到二进制,典型方案(如 ASCII、Unicode)需结合业务场景选择,平衡“编码范围”与“存储效率”。
2.4 校验码:数据可靠性保障
校验码通过冗余编码检测/纠正数据传输/存储中的错误,核心技术基于码距延伸出奇偶校验、CRC循环冗余码、海明码。
2.4.1 码距:检错纠错的基础
码距是两个合法编码的二进制位差异数,直接决定检错/纠错能力:
2.4.2 奇偶校验:简单检错
奇偶校验通过增加校验位使编码中 1 的个数为奇数/偶数,实现单比特检错:
类型 | 核心逻辑 | 检错能力 |
---|---|---|
奇校验 | 校验位使编码中 1 的个数为奇数 | 检测 1 位错(偶数位错可能漏检) |
偶校验 | 校验位使编码中 1 的个数为偶数 | 检测 1 位错(偶数位错可能漏检) |
2.4.3 CRC 循环冗余码:高效检错
CRC 通过数据位多项式与生成多项式的模 2 运算生成校验位,实现多比特检错:
-
核心步骤:
-
检错能力:可检测任意奇数位错、突发长度 ≤ 生成多项式阶数的错误。
2.4.4 海明码:检错+纠错
- 编码逻辑:数据位分块,每块对应不同校验位,通过异或运算生成校验值;
- 纠错逻辑:接收端重新计算校验值,若不为 0 则定位错误位并翻转纠正。
三、逻辑运算:布尔操作与真值表
逻辑运算是计算机处理布尔型数据(真/假)的核心手段,通过“与、或、异或、同或、非”五大操作实现逻辑判断,核心是运算规则与真值表。
3.1 逻辑运算分类与规则
逻辑运算基于“真(1)、假(0)”二值,各运算的触发条件、符号表示如下:
运算类型 | 核心规则 | 符号表示(常见形式) |
---|---|---|
与(AND) | 全为真时结果为真(全真才真) | && 、* 、· 、∩ 、∧ 、AND |
或(OR) | 有一个为真时结果为真(一真则真) | ` |
异或(XOR) | 操作数不同时结果为真(相同为假,相异为真) | ⊕ 、XOR |
同或 | 操作数相同时结果为真(相同为真,相异为假) | ⊙ |
非(NOT) | 取反(真→假,假→真) | ! 、¬ 、~ 、NOT 、— |
3.2 真值表:逻辑运算的结果映射
真值表通过枚举所有输入组合(0/1),明确输出结果。以二元逻辑运算(输入A、B)为例,真值表如下:
A | B | !A(非A) | A+B(或) | A·B(与) | A⊕B(异或) | A⊙B(同或) |
---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 1 | 0 | 1 |
3.3 技术价值
逻辑运算是**数字电路(如门电路)与程序逻辑判断(如if-else、循环条件)**的基础:
- 硬件层:与门、或门、异或门是 CPU 运算器、存储器控制逻辑的核心组件;
- 软件层:逻辑运算支撑条件判断、位操作(如掩码运算)等编程场景。
四、运算方法:定点与浮点运算
运算器是“数据处理核心”,需掌握定点数运算、浮点数运算、运算器结构。
4.1 定点数运算(整数/定点小数)
定点数运算基于补码实现加减,乘除通过“加减迭代”或“硬件乘法器”实现。
4.2 浮点数运算(IEEE 754标准)
(1)单精度浮点数格式(32位)
字段 | 符号位(S) | 阶码(E,8位) | 尾数(M,23位) |
---|---|---|---|
作用 | 正负标识 | 指数偏移(偏移量127) | 有效数值(隐含最高位1) |
(2)浮点数运算步骤
浮点数运算需“对阶→尾数运算→规格化→舍入→判溢出”:
- 对阶:使两数阶码相等(小阶向大阶对齐,尾数右移);
- 尾数运算:尾数按定点数规则加减/乘除;
- 规格化:调整尾数与阶码,使尾数最高位为1(如 ( 0.xxx ) 需左规,( 1.xxx ) 需右规);
- 舍入:处理尾数右移后的低位(如0舍1入、恒置1);
- 判溢出:阶码超过表示范围则为溢出。
4.3 运算器结构
运算器由算术逻辑单元(ALU)、寄存器组、多路选择器组成:
- ALU:执行算术/逻辑运算;
- 寄存器组:暂存操作数与结果(如通用寄存器、累加器);
- 多路选择器:选择运算器输入数据。
五、存储系统与指令执行核心技术
5.1 存储系统:层次化设计与分类逻辑
存储系统通过**“层次化架构”** 平衡容量、速度、成本,同时依托**“寻址方式、内容匹配逻辑”** 定义存储设备的技术特性。
5.1.1 存储层次结构(自顶向下)
存储系统按**“访问速度由快到慢、容量由小到大”** 分层,各层级的核心特征如下:
层级 | 存储介质 | 访问速度 | 容量规模 | 典型设备 |
---|---|---|---|---|
寄存器 | 触发器(CPU内) | 纳秒级 | 极小(KB级) | CPU通用寄存器、程序计数器 |
Cache | SRAM | 微秒级 | MB级 | L1/L2/L3 高速缓存 |
主存(内存) | DRAM/SRAM | 百纳秒级 | GB级 | DDR4/DDR5 内存条 |
辅存(外存) | 硬盘/SSD/光盘 | 毫秒级 | TB级 | 机械硬盘、固态硬盘 |
5.1.2 存储器分类:寻址与内容匹配逻辑
存储器的“数据定位方式”是技术差异的核心,分为**“按地址寻址”** 和 “按内容访问” 两大维度:
(1)按寻址方式分类
寻址方式决定“如何定位存储单元”,主流分为三类:
分类类型 | 核心逻辑 | 性能特征 | 典型设备 |
---|---|---|---|
随机存储器(RAM) | 访问任意存储单元耗时相同(与地址无关) | 速度快,支持随机访问 | 主存(DRAM/SRAM)、Cache |
顺序存储器(SAM) | 无独立地址,需按顺序遍历前序单元访问目标 | 无地址开销,顺序读写高效 | 磁带(卷绕到指定数据段) |
直接存储器(DAM) | 有独立地址,但读写速度与磁头-数据相对位置强相关 | 地址灵活但存在机械延迟 | 磁盘(磁道寻址+扇区顺序读写)、光盘 |
(2)按内容访问:相联存储器
部分场景需“通过数据特征定位存储单元”,典型为 相联存储器(Associative Memory):
- 核心逻辑:选择存储单元的依据是内容匹配(而非地址匹配);
- 技术价值:突破“地址→单元”的传统映射,适合高频内容检索场景;
- 典型应用:Cache 的“标记阵列”(通过标签对比快速查找数据块)、数据库全文检索加速。
5.2 主存储器(内存):硬件基础与扩展
主存是CPU直接访问的存储设备,核心覆盖存储芯片、编址逻辑、扩展方式:
5.2.1 存储芯片分类
内存由“存储芯片阵列”组成,主流芯片因存储原理分为两类:
芯片类型 | 存储原理 | 性能特点 | 应用场景 |
---|---|---|---|
SRAM | 静态触发器存储 | 速度快(纳秒级)、成本高、功耗大 | Cache、CPU内部寄存器 |
DRAM | 电容充放电存储 | 速度慢(百纳秒级)、密度高、成本低 | 主存(如DDR4/DDR5模组) |
5.2.2 内存编址与扩展
内存通过地址线、数据线与CPU互连,扩展需兼顾“容量”与“位数”:
- 位扩展:增加存储芯片数量,扩展数据总线宽度(如8位→16位);
- 字扩展:增加存储芯片数量,扩展内存容量(如1GB→2GB);
- 实现逻辑:地址线用于“选择芯片/单元”,数据线用于“传输数据位”,控制线(读写信号、片选信号)同步操作。
5.3 高速缓存(Cache):主存的高速副本
Cache 基于局部性原理(时间局部性、空间局部性)加速内存访问,核心技术包括映射方式、替换策略、写策略:
5.3.1 Cache 映射方式
主存块需映射到Cache行,主流策略平衡“硬件复杂度”与“命中率”:
5.3.2 Cache 替换策略
当Cache满时,需替换“未来最不可能访问”的块,典型策略:
策略 | 核心逻辑 | 性能特征 | 实现难度 |
---|---|---|---|
FIFO | 替换最先进入的块 | 简单但易触发Belady异常 | 低 |
LRU | 替换最久未使用的块 | 命中率高但硬件复杂 | 高 |
随机替换 | 随机选择替换块 | 硬件简单但性能不稳定 | 极低 |
5.3.3 Cache 写策略(一致性管理)
处理“Cache 与主存数据同步”的策略,需平衡“性能”与“一致性”:
策略 | 核心逻辑 | 性能特征 | 一致性保障 |
---|---|---|---|
写回(WB) | 修改Cache块后,批量写回主存 | 减少IO次数,性能优 | 弱(需额外标记脏块) |
写通(WT) | 修改Cache块时,立即写回主存 | 一致性强,但IO开销大 | 强 |
5.4 虚拟内存:磁盘扩展的内存抽象
虚拟内存通过**“磁盘作为内存扩展层”** 实现“部分装入、按需调页”,核心技术包括页表映射、缺页中断、页面置换:
5.4.1 虚拟地址→物理地址转换
虚拟地址由**“虚拟页号(VPN) + 页内偏移(Offset)”** 组成,通过页表映射到物理地址(“物理页框号(PFN) + 页内偏移”):
- 页表结构:存储“虚拟页→物理页”的映射关系,支持多级页表(如x86的二级页表、ARM的三级页表);
- TLB(快表):页表的高速缓存,加速地址转换(减少页表访问的内存开销)。
5.4.2 页面置换算法
当物理内存不足时,需置换“淘汰页”,算法与Cache替换逻辑同源:
算法 | 核心逻辑 | 适用场景 |
---|---|---|
FIFO | 置换最先进入的页 | 简单场景(如嵌入式系统) |
LRU | 置换最久未使用的页 | 通用场景(命中率优先) |
Clock | 环形队列+访问位标记 | 平衡性能与硬件复杂度 |
5.5 指令系统与CPU结构:软件-硬件的接口
指令是“软件控制硬件的最小单元”,CPU是“指令执行的核心”,需掌握指令格式、寻址方式、CPU流水线技术。
5.5.1 指令格式与组成
一条指令由**“操作码字段 + 地址码字段”** 组成:
- 操作码(Opcode):定义指令的操作类型(如
ADD
、MOV
、JMP
); - 地址码(Operand):定义操作数的存储位置(内存地址、寄存器、立即数)。
5.5.2 寻址方式:操作数的定位逻辑
寻址方式定义“如何获取操作数地址”,主流方式基于操作数存储位置(内存、寄存器、指令内)细分:
(1)基础寻址方式(直接定位)
寻址方式 | 核心逻辑(以指令OPR 源操作数 为例) | 技术特征与示例 |
---|---|---|
立即寻址 | 操作数直接存于指令中(地址码=操作数) | 地址码:#5 (指令内含立即数5 );特点:无内存访问,速度最快 |
直接寻址 | 操作数在主存,地址码=操作数的有效地址 | 地址码:[0x2000] (主存0x2000 存操作数);特点:一次内存访问,地址固定 |
间接寻址 | 地址码=“操作数地址的地址”(先读指针再读操作数) | 地址码:[[0x2000]] (0x2000 存操作数地址,需二次读内存);特点:灵活但访存延迟高 |
寄存器寻址 | 操作数在CPU寄存器,地址码=寄存器名 | 地址码:R0 (寄存器R0 存操作数);特点:无内存访问,寄存器级速度 |
寄存器间接寻址 | 地址码=“存操作数地址的寄存器”(先读寄存器再读内存) | 地址码:[R1] (寄存器R1 存操作数主存地址,需一次内存访问);特点:结合寄存器速度与内存灵活性 |
(2)进阶寻址方式(寄存器+偏移量)
“寄存器+偏移量”的组合型寻址,核心逻辑为 “操作数地址 = 基址/变址寄存器 + 位移量”,典型场景:
寻址方式 | 核心逻辑 | 典型应用 |
---|---|---|
基址寻址 | 操作数地址 = 基址寄存器 + 位移量 | 程序重定位(如OS加载程序时,基址存起始地址) |
相对寻址 | 操作数地址 = PC(程序计数器) + 位移量 | 分支指令(如JMP ±offset ,实现代码跳转) |
变址寻址 | 操作数地址 = 变址寄存器 + 位移量 | 数组遍历(变址寄存器存下标,位移量存数组起始地址) |
5.5.3 CPU流水线技术:指令级并行
CPU 流水线是 “让多条指令的不同执行阶段在时间上重叠”的准并行技术,通过拆分指令执行流程为子阶段,突破串行瓶颈:
(1)流水线核心概念
- 阶段拆分:指令执行拆分为取指(Fetch)→译码(Decode)→执行(Execute)→访存(Memory)→写回(Writeback) 等子阶段;
- 重叠执行:多条指令的不同子阶段在时间上重叠(如指令1执行“译码”时,指令2执行“取指”),实现“单周期输出1条指令”的吞吐。
(2)流水线周期与性能
六、输入输出系统:设备交互与总线时序
输入输出(I/O)系统是计算机与外部设备交互的桥梁,需掌握地址编址、I/O 控制方式、中断机制、时序周期等核心技术。
6.1 内存与接口的地址编址方式
微机中,内存与 I/O 接口的地址映射分 统一编址 与 分开编址:
编址方式 | 核心逻辑 | 技术特点 |
---|---|---|
统一编址 | 内存与 I/O 共享地址空间,通过指令参数区分访问对象 | 指令无需区分内存/I/O,灵活性高 |
分开编址 | 内存与 I/O 地址空间独立,指令显式区分访问类型 | 地址空间隔离,I/O 指令专用性强 |
6.2 I/O 控制方式:数据传输的调度逻辑
I/O 控制方式决定 CPU 与外设的交互效率,主流方案按 CPU 参与度 分为五类:
6.2.1 无条件传送
- 核心逻辑:假设外设始终“就绪”,CPU 直接读写数据;
- 适用场景:低速且状态稳定的外设(如 LED 灯、开关);
- 缺陷:可靠性低(外设未就绪时易出错)。
6.2.2 程序查询(直接程序控制)
- 核心逻辑:CPU 轮询外设状态寄存器,仅当外设“就绪”时传输数据;
- 适用场景:中低速外设(如键盘、打印机);
- 缺陷:CPU 占用率高(轮询过程阻塞其他任务)。
6.2.3 中断方式
- 核心逻辑:外设就绪时主动发中断请求,CPU 暂停当前任务并响应 I/O;
- 技术细节:
- 中断响应时间:从外设发请求到 CPU 开始处理的耗时(含保存现场、跳转中断服务程序);
- 中断向量/矢量:中断服务程序的入口地址,通过中断向量表快速定位;
- 优势:释放 CPU 资源,支持异步外设(如磁盘、网卡);
- 缺陷:中断处理存在上下文切换开销。
6.2.4 DMA(直接存储器存取)
- 核心逻辑:DMA 控制器直接管理内存与外设的数据传输,CPU 仅参与“传输初始化”与“传输结束”;
- 技术细节:数据传输过程中,CPU 无需介入,由 DMA 控制器接管总线;
- 优势:极高效,适用于高速批量传输(如硬盘读写、显存刷新);
- 典型场景:大型文件拷贝、视频流实时传输。
6.2.5 输入输出处理机(IOP)
- 核心逻辑:专用处理器(IOP)独立负责 I/O 传输,CPU 完全脱离控制;
- 适用场景:大型机、服务器等高端场景(需极致并行性);
- 优势:CPU 可专注于计算任务,IOP 处理复杂 I/O 调度;
- 缺陷:硬件成本高,架构复杂度大。
6.3 时序周期:指令与总线的时间管理
CPU 与外设的交互通过 指令周期、总线周期、时钟周期 的层级时序实现,三者满足“指令周期 ≥ 总线周期 ≥ 时钟周期”:
6.3.1 时钟周期(Clock Cycle)
- 定义:CPU 最小时间单位,由晶振频率决定(如晶振 1GHz → 时钟周期 1ns);
- 作用:同步 CPU 内部操作(如寄存器读写、ALU 运算)。
6.3.2 总线周期(BUS Cycle)
- 定义:访问内存或 I/O 接口的操作周期,由若干时钟周期组成(如读内存需 4 个时钟周期);
- 典型阶段:取指周期(从内存取指令)、取数周期(从内存取操作数)、写数周期(向内存写结果)。
6.3.3 指令周期(Instruction Cycle)
- 定义:取出并执行一条指令的总时间,由若干总线周期组成(简单指令如
NOP
仅需 1 个总线周期,复杂指令如乘法需多个总线周期); - 周期关联:1 指令周期包含“取指→译码→执行→访存→写回”等阶段,每个阶段对应一个总线周期。
6.3.4 机器周期与 DMA 响应
- 机器周期:完成一个基本操作的时间单元(如取指周期、取数周期);
- DMA 响应时机:CPU 在机器周期结束时响应 DMA 请求(释放总线控制权给 DMA 控制器)。
如果这篇考点拆解帮你理清了知识脉络,点击右上角「关注」,后续将输出更多软件测试技术干货