计算机系统由哪两部分组成?硬件 & 软件
硬件:看得见、摸得着的物理设备,如主机、显示器、键盘、鼠标等。
软件:运行在硬件上的程序和数据,分为系统软件(操作系统等)和应用软件(办公软件、浏览器等)。
冯・诺依曼体系结构五大部件
运算器:负责算术运算和逻辑运算
控制器:指挥协调各部件工作
存储器:存放数据和指令(内存、外存)
输入设备:向计算机输入信息(键盘、鼠标等)
输出设备:向外输出结果(显示器、打印机等)
冯・诺依曼思想核心:
存储程序(程序和数据存在存储器中)
二进制(数据与指令都用二进制表示)
再加上你前面记的五大部件,这部分考点就齐了。
计算机主要性能指标
**主频(时钟频率)**CPU 每秒的时钟脉冲数,单位 Hz、GHz。主频越高,通常速度越快。
CPI(Clock Cycles Per Instruction) 执行一条指令需要的时钟周期数。CPI 越小,效率越高。
IPC(Instructions Per Cycle) 一个时钟周期能执行多少条指令。IPC = 1 / CPI(理想情况),IPC 越大性能越好。
MIPS(Million Instructions Per Second) 每秒执行百万条指令数。用来衡量指令执行速度。
吞吐量(Throughput) 单位时间内系统完成的总任务数 / 总数据量。侧重 "整体处理能力"。
响应时间(Response Time) 从提交任务到得到结果的总时间。侧重 "单个任务快慢"。
快速记忆公式
执行速度 ≈ 主频 / CPI
执行速度 ≈ 主频 × IPC
计算机字长
计算机字长 :CPU 一次能并行处理的二进制数据位数(如 8 位、16 位、32 位、64 位)。
决定了什么
运算精度字长越长,能表示的数值范围越大、计算精度越高。
寻址能力决定最大可访问内存空间(如 32 位最多约 4GB,64 位极大)。
指令处理能力一次能处理的数据 / 指令长度更长,整体性能更强。
数据传输效率总线宽度、寄存器大小通常与字长一致,传输更快。
简单记:字长越长,精度越高、寻址越大、性能越强。
系列机
系列机 :指同一厂家 生产的、体系结构基本相同、但性能和价格不同的一系列计算机。特点:
指令系统、数据格式、I/O 系统等保持向后兼容
低档机程序可在高档机上直接运行
便于软件移植、保护用户投资
典型:IBM 360/370 系列、x86 系列机
兼容机
兼容机 :指不同厂家 生产的、与某系列机指令系统 / 体系结构兼容的计算机。特点:
硬件结构不同,但软件可通用
实现软件兼容,程序不用修改就能运行
简单一句话区分:
系列机:同厂、同一系列、高低档兼容
兼容机:不同厂家、模仿架构、软件通用
原码、反码、补码
- 基本定义
原码 最高位为符号位 :0 正,1 负数值位为真值绝对值的二进制。
反码 正数:反码 = 原码负数:符号位不变,数值位按位取反。
补码正数:补码 = 原码负数:反码 + 1(符号位不变)。
- 统一规律
正数:原码 = 反码 = 补码
负数:三者都不相同
关键区别
表示范围 补码能多表示一个最小负数,没有 -0 问题。
0 的表示
原码、反码:+0 和 -0 是两种编码
补码:只有一个 0
运算方式
原码:加减要单独判断符号,复杂
补码:符号位直接参与运算,减法可转加法,硬件最简单
计算机实际使用 现代计算机中,整数一律用补码存储和运算。
一句话速记
正数三码相同,负数原码取反得反码,反码加一得补码 ;计算机只认补码。
为什么计算机用补码
计算机使用补码 ,核心就一句话:统一加减法,简化硬件,消除负零,多表示一个数。
展开成考试标准回答:
简化运算硬件 减法可以直接转换成加法(减去一个数 = 加上它的补码),CPU 不需要单独设计减法电路,只用加法器就能完成加减运算,硬件更简单、成本更低、速度更快。
符号位直接参与运算补码的符号位和数值位一起运算,不用单独判断正负,规则统一。
**只有一个 0,没有 "负零"**原码、反码都有 +0 和 -0 两种表示,容易产生歧义;补码中 0 只有唯一编码,逻辑更严谨。
表示范围更大 同样位数下,补码能多表示一个最小负数,充分利用编码空间。
极简背诵版:
减法变加法,硬件简单
符号位直接运算
只有一个 0,无二义性
表示范围更大
定点数 vs 浮点数
一、定点数
定义 :小数点固定在某个位置不变(通常在符号位后,或最低位后)。
表示:整数、纯小数。
特点:
结构简单,运算快
表示范围小,精度固定
容易溢出
二、浮点数
定义 :小数点位置不固定 ,用
阶码 + 尾数表示(类似科学计数法)。表示:实数(小数、很大 / 很小的数)。
特点:
表示范围极大
精度可灵活分布
运算复杂,速度较慢
核心区别(一句话记)
小数点位置:定点固定,浮点浮动
表示范围:定点小,浮点大
运算速度:定点快,浮点慢
精度:定点均匀,浮点相对精度高
硬件:定点简单,浮点需要专门浮点运算单元(FPU)
典型用途
定点:嵌入式、控制类、整数运算
浮点:科学计算、图形、音频视频、大数据计算
IEEE 754 单精度浮点数格式
IEEE 754 ** 单精度浮点数(float)** 格式,一共 32 位,结构固定:
- 位数分布
符号位 S:1 位
- 0 表示正数,1 表示负数
阶码 E:8 位
- 采用偏移值 127 的移码表示
尾数 M:23 位
- 隐含一个整数位 1,实际有效位数是 24 位
格式:符号位 (1) + 阶码 (8) + 尾数 (23)
- 数值公式
V=(−1)S×(1.M)×2E−127
1.M:尾数部分,前面隐含 1
E−127:真实阶码(减去偏移量)
- 考试常考要点
总长度:32 位
偏移量:127
尾数:隐含前导 1
可表示范围大,但精度有限
大小端模式
一、定义
多字节数据在内存中存放顺序不同,分为两种:
大端模式(Big-Endian) 数据的高字节存放在低地址,低字节存放在高地址。→ 符合人类阅读习惯。
小端模式(Little-Endian) 数据的低字节存放在低地址,高字节存放在高地址。→ x86、ARM 默认常用。
口诀:高存低 → 大端;低存低 → 小端
二、如何判断(编程判断法)
思路:用一个多字节整数,看它第一个字节是什么。
int a = 0x12345678;
char *p = (char *)&a;
if (*p == 0x78) 小端
if (*p == 0x12) 大端
一句话判断:
取整数首字节,等于低字节则小端,高字节则大端。
溢出判断方法
一、进位判断法(单符号位)
规则:符号位进位 Cs ⊕ 最高数值位进位 C1 = 1 时,溢出
结果为 1 → 溢出
结果为 0 → 无溢出
口诀:符号位进位与最高位进位不同,则溢出
二、双符号位法(变形补码)
用 两位表示符号:00 正,11 负
结果符号位为 01 → 正溢出
结果符号位为 10 → 负溢出
结果符号位为 00 / 11 → 无溢出
口诀:双符号位相同不溢出,不同则溢出01 上溢,10 下溢
三、简单记法
进位法:异或为 1 溢出
双符号位:01 正溢、10 负溢
奇偶校验、海明码、CRC 校验
一、奇偶校验
原理 在数据后加一位校验位,使整个码字中1 的个数为奇数(奇校验)或偶数(偶校验)。
特点
只能检测奇数位错误,不能定位错误
不能纠错
实现简单、开销小
二、海明码
原理 在数据位中插入多个校验位,利用奇偶分组校验 ,使每一位出错都产生唯一的校验码组合,从而检错并纠错。
核心公式校验位位数 k 满足:2k≥n+k+1
特点
能检测并纠正一位错误
能检测两位错误
适合近距离、低错误率场景
三、CRC 循环冗余校验
原理 基于模 2 除法 ,用数据除以生成多项式,得到余数作为校验码附加在数据后。接收端用同样多项式相除,余数为 0 则正确。
特点
检错能力极强
硬件实现简单、速度快
只能检错,不能纠错
广泛用于网络、磁盘、通信传输
一句话速记
奇偶校验:查奇数位错,不纠错
海明码:一位纠错、两位检错
CRC:强检错,不纠错,通信常用
加法器 & 超前进位加法器
一、普通加法器(串行进位加法器)
结构 由多个全加器串联而成,低位的进位输出接到高位的进位输入。
原理 每一位相加必须等低位进位到来才能计算,进位逐位传递。
缺点
进位传播延迟长
位数越多,速度越慢
总延迟与位数成正比
二、超前进位加法器(CLA)
核心思想 不等待低位进位逐级传递,提前根据输入 A、B 直接算出各位的进位。
关键定义
进位产生函数:Gi=Ai⋅Bi
进位传递函数:Pi=Ai⊕Bi
进位公式:Ci+1=Gi+Pi⋅Ci
原理 利用逻辑电路同时计算所有进位,各位加法几乎并行完成。
优点
运算速度极快
延迟与位数无关
适合高速运算
一句话总结
串行进位:进位逐级传,慢、简单
超前进位:提前算所有进位,并行产生,快、电路复杂
寄存器 → Cache → 主存 → 辅存
从上到下特点
速度:越来越慢
容量:越来越大
成本:越来越低
CPU 访问距离:越来越远
简单对应
寄存器:CPU 内部,最快
Cache:高速缓存,缓解 CPU 和主存速度差
主存(内存):DRAM,程序运行时存放地
辅存(外存):硬盘、U 盘等,掉电不丢数据
设计目的
匹配 CPU 速度,用最少成本实现大容量 + 高速度 也就是常说的:速度、容量、价格的折中。
局部性原理
程序执行时呈现出访问局部性,是 Cache、虚拟内存等设计的理论基础。
- 时间局部性(时间局部性)
原理 :被访问过的信息在不久的将来很可能再次被访问。
典型表现:循环、函数反复调用、变量重复使用。
对应优化:Cache 缓存最近访问数据。
- 空间局部性(空间局部性)
原理 :被访问过的信息其相邻地址的信息也很可能被访问。
典型表现:数组遍历、顺序执行指令、连续内存访问。
对应优化:Cache 按块 / 行加载,一次读一片。
一句话速记
时间局部性:刚用过,还会用
空间局部性:附近的,也会用
Cache 作用、原理、基本结构
一、Cache 作用
解决 CPU 与主存速度不匹配 问题
缓存主存中近期频繁使用的指令和数据
提高 CPU 访存速度,降低平均访存时间
对程序员透明
二、Cache 工作原理
基于局部性原理:
CPU 访问主存时,将数据整块读入 Cache
后续访问先查 Cache,命中则直接读取
未命中再访问主存,并更新 Cache
核心目标:提高命中率,减少访问主存次数
三、Cache 基本结构
存储体存放从主存复制来的数据块
标记存储器(Tag) 记录每个 Cache 块对应的主存块地址
**有效位(Valid Bit)**标记该 Cache 行数据是否有效
替换 / 控制逻辑处理缺失、地址映射、块替换(FIFO、LRU 等)
一句话速记
Cache 靠局部性 缓存数据,用高速小容量存储器,让 CPU 更快取数。
Cache 三种映射方式
- 直接映射
规则 :主存块 → 只能放到 Cache 中唯一固定位置 公式:
Cache行号 = 主存块号 mod Cache总行数优点:硬件简单、成本低、速度快
缺点:冲突率高,容易颠簸(抖动)
- 全相联映射
规则 :主存块 → 可放到 Cache 任意一行
优点:冲突率最低,命中率最高
缺点:比较电路复杂、成本高、速度慢
- 组相联映射
规则 :先分组,组内全相联公式:
组号 = 主存块号 mod 组数优点 :折中直接与全相联,冲突低、速度快
缺点:电路比直接映射复杂
一句话速记
直接映射:位置固定,简单但冲突多
全相联:位置任意,命中率高但复杂
组相联:先分组再任意,综合最优(最常用)
Cache 替换算法
- FIFO(先进先出)
原理:谁先调入 Cache,就先淘汰谁。
特点:实现简单,不考虑使用情况。
缺点 :可能出现Belady 异常(页框增加,缺页率反而上升)。
- LRU(最近最少使用)⭐最常用
原理 :淘汰最近最久未使用的块。
依据:时间局部性 ------ 最近用过的还可能再用。
优点:命中率高,性能好。
缺点:硬件实现稍复杂。
- LFU(最少使用)
原理 :淘汰访问次数最少的块。
特点:关注使用频率,不关注时间。
缺点:历史旧数据可能占坑,刚调入的新块易被淘汰。
一句话速记
FIFO:先来先走
LRU:最久不用先走
LFU:用得最少先走
一般考试 / 面试重点:LRU 最优且最常用。
Cache 写策略
- 写直达(Write Through)
原理 :每次写 Cache 时,同时也写主存,二者始终一致。
优点:数据一致性好,一致性维护简单,失效时数据不丢失。
缺点:写操作频繁访问主存,速度慢,效率低。
- 写回(Write Back)
原理 :只写 Cache,不立即写主存;只有当该块被替换时,才将修改过的数据写回主存。用 ** 脏位(Dirty Bit)** 标记是否被修改过。
优点:写操作速度快,减少主存访问次数,效率高。
缺点:数据一致性复杂,断电可能丢失数据。
一句话速记
写直达:同步写主存,简单但慢
写回:只写 Cache,替换才写主存,快但复杂
主存分类:RAM(SRAM/DRAM)、ROM
- RAM(随机存取存储器,可读可写,断电丢失)
SRAM(静态随机存储器)
靠触发器存储,不需要刷新
速度快、成本高、集成度低
用途:Cache
DRAM(动态随机存储器)
靠电容存储,需要定时刷新
速度较慢、成本低、集成度高
用途:主存(内存条)
- ROM(只读存储器,断电不丢失)
一般只能读出,不能随意写入
存放固件、BIOS、启动程序等
一句话速记:
RAM 断电丢数据,ROM 不丢
SRAM 快不刷新→Cache
DRAM 需刷新→内存
SRAM vs DRAM 区别
- 基本原理
SRAM(静态 RAM) :用触发器存储,只要通电就保持数据
DRAM(动态 RAM) :用电容 存储,电荷会漏电,需定期刷新
- 速度
SRAM:极快
DRAM:较慢
- 集成度 & 容量
SRAM:元件多,集成度低、容量小
DRAM:结构简单,集成度高、容量大
- 功耗 & 成本
SRAM:功耗较高,成本贵
DRAM:功耗低,便宜
- 刷新
SRAM:不需要刷新
DRAM:必须定时刷新
- 典型用途
SRAM:Cache
DRAM:主存(内存条)
一句话速记
SRAM:快、贵、不刷新 → Cache
DRAM:大、便宜、要刷新 → 内存
虚拟存储器作用
扩大主存空间 让程序可以使用比实际物理内存更大的地址空间,实现内存 "扩容"。
实现内存共享与保护不同进程使用独立虚拟地址,互不干扰,防止越界访问,提高系统安全性。
对用户透明程序员无需关心实际物理内存大小,简化编程。
提高内存利用率 只把当前需要的部分装入内存,暂时不用的放在外存,实现部分装入、部分交换。
一句话速记:扩大地址空间、内存保护、透明使用、提高利用率
页表、快表 TLB 作用
一、页表
作用
实现虚拟地址 → 物理地址的映射
记录每个虚拟页 对应的物理页框号
实现内存保护、存取控制
特点
存放在主存中
每次地址变换都需要访问主存,速度较慢
二、快表 TLB(Translation Lookaside Buffer)
本质 存放最常用页表项 的高速缓存,一般用 SRAM 实现
作用
避免每次地址变换都去主存查页表
先查 TLB,命中则直接得到物理页号,速度极快
未命中再去查主存页表
核心目的 加快虚拟地址到物理地址的转换速度
一句话速记
页表:存地址映射关系,放主存
TLB 快表:页表的高速缓存,放 CPU 内,加速地址变换
主存带宽、存取时间、存取周期
- 存取时间(Access Time)
定义:从发出访存请求 到数据稳定读出 / 写入完成所用的时间。
含义:反映存储器反应速度。
- 存取周期(Memory Cycle Time)
定义:连续两次独立访存操作 之间所需的最小时间间隔。
含义:包含存取时间 + 恢复 / 刷新时间,一定 ≥ 存取时间。
- 主存带宽(Memory Bandwidth)
定义:单位时间内存储器可读写的最大数据量(MB/s、GB/s)。
公式:带宽数据宽度存取周期
含义:衡量存储器吞吐能力。
一句话速记
存取时间:一次读写要多久
存取周期:连续两次最少隔多久
主存带宽:每秒能传多少数据
CISC 与 RISC 核心区别
- 基本概念
**CISC(复杂指令集)**指令多、格式复杂、长度不固定,一条指令能做复杂操作。
**RISC(精简指令集)**指令少、格式简单、长度固定,只保留常用简单指令。
- 关键对比
指令数量:CISC 多;RISC 少
指令长度:CISC 不固定;RISC 固定长度
寻址方式:CISC 多;RISC 少
访存指令:CISC 指令可直接访存;RISC 只有 load/store 能访存
执行周期:CISC 指令周期不统一;RISC 大多单周期完成
硬件复杂度:CISC 复杂;RISC 简单
流水线:CISC 难优化;RISC 易高效流水线
- 代表
CISC:x86 架构(Intel/AMD CPU)
RISC:ARM、MIPS、RISC-V、PowerPC
- 一句话速记
CISC:复杂、全能、难流水线 → x86
RISC:精简、load/store、高效流水线 → ARM/RISC-V
指令格式:操作码 + 地址码
- 操作码 OP
指明指令做什么操作如:加、减、访存、跳转、逻辑运算等
长度可固定 或可变
固定长度:译码简单,RISC 常用
可变长度:节省空间,CISC 常用
- 地址码 A
指明操作数在哪里、结果放哪里
按地址数量分类:
零地址指令 :无显式地址,如
NOP、RET、栈操作一地址指令 :单操作数 / 目标,如
INC A、NOT A二地址指令 :源 1、源 2 / 目标,最常用
OP Src, Dest三地址指令 :源 1、源 2、目标
OP Src1, Src2, Dest一句话速记
操作码:决定干什么
地址码:决定数据在哪、结果放哪
寻址方式
- 立即寻址
形式 :指令中直接给出操作数本身
特点:最快,不需访存;操作数固定
例:
MOV AX, 100
- 直接寻址
形式 :指令中给出有效地址 EA
特点:需访存一次;地址空间有限
例:
MOV AX, [1000H]
- 间接寻址
形式 :指令地址单元中存放的是操作数地址
特点:需两次访存;可灵活修改地址
例:
MOV AX, [[1000H]]
- 寄存器寻址
形式 :操作数在寄存器中
特点:速度快,不访存
例:
MOV AX, BX
- 寄存器间接寻址
形式 :寄存器中存放操作数地址
特点:需一次访存;地址可变
例:
MOV AX, [BX]
- 相对寻址
形式 :
EA = PC + 偏移量特点 :与程序位置无关,常用于跳转指令
- 基址寻址
形式 :
EA = 基址寄存器 + 偏移量特点 :用于程序重定位、多用户共享
- 变址寻址
形式 :
EA = 变址寄存器 + 偏移量特点 :适合数组、字符串连续访问
一句话速记
立即:数在指令里
直接:地址在指令里
间接:地址的地址
寄存器:数在寄存器
寄存器间接:地址在寄存器
相对:基于 PC 跳转
基址:重定位用
变址:遍历数组用
指令周期、机器周期、时钟周期
- 时钟周期(Clock Cycle)
定义 :CPU 时钟频率的倒数,是 CPU 最小的时间单位
别称:振荡周期、T 周期
特点:最短、最基础
- 机器周期(Machine Cycle)
定义 :完成一个基本操作所需的时间(如访存、读指令、写数据)
关系 :一个机器周期包含 若干个时钟周期
- 指令周期(Instruction Cycle)
定义 :取出并执行一条指令所需的全部时间
关系 :一个指令周期包含 若干个机器周期
包含关系(必背)
指令周期 > 机器周期 > 时钟周期
一句话速记
时钟周期:CPU 最小节拍
机器周期:一次基本操作
指令周期:执行完一条指令
指令执行流程
取指 → 译码 → 取数 → 执行 → 写回
**取指(IF)**从主存取出指令,送入指令寄存器,PC 自增。
**译码(ID)**解析操作码、寻址方式,确定操作数位置。
**取数(MEM / 取操作数)**从寄存器或内存取出需要的操作数。
**执行(EX)**ALU 进行运算、移位、跳转地址计算等操作。
**写回(WB)**将运算结果写回寄存器或写入主存。
一句话速记:取指令 → 看指令 → 拿数据 → 算结果 → 存回去
CPU 组成
CPU = 运算器 + 控制器
一、运算器(数据加工)
核心功能:算术运算 + 逻辑运算主要部件:
ALU(算术逻辑单元):核心计算
通用寄存器:存放操作数、中间结果
累加器 ACC
程序状态字 PSW(标志寄存器):进位、零、负等标志
移位器、多路选择器等
二、控制器(指挥控制)
核心功能:指挥整机协调工作,取指、译码、发控制信号主要部件:
程序计数器 PC:存下一条指令地址
指令寄存器 IR:存放当前指令
指令译码器 ID:解析指令
时序系统:时钟、机器周期、节拍
微操作控制电路:产生控制信号
一句话速记:运算器负责算,控制器负责管;一硬一软,配合干活。
运算器组成
运算器核心是完成算术运算与逻辑运算,主要部件:
**ALU(算术逻辑单元)**运算核心,负责加、减、与、或、非、移位等操作。
累加器 ACC存放操作数或运算结果,最常用的寄存器。
标志寄存器 PSW存放运算结果状态:进位 C、零标志 Z、负标志 N、溢出 O 等。
通用寄存器组暂存操作数、地址、中间结果,减少访存。
移位器实现逻辑 / 算术左移、右移。
数据通路与多路选择器负责数据传输与选择。
一句话速记:ALU 负责算,ACC 存结果,标志记状态,寄存器存数据。
控制器作用
控制器是整个计算机的指挥中心,核心工作三句话:
取指令按程序计数器 PC 的地址,从主存中取出指令,送入指令寄存器。
**分析指令(译码)**对指令操作码进行译码,识别指令要做什么操作、操作数在哪里。
发控制信号按时序向各部件发出微操作控制信号,协调运算器、存储器、I/O 完成指令执行。
一句话速记:取指令、分析指令、发命令,指挥整机有条不紊工作。
流水线原理、优点、冲突
一、流水线原理
把一条指令的执行过程分成多个独立阶段 ,多条指令重叠执行,让不同指令的不同阶段同时运行,类似工厂流水线。
二、优点
提高指令吞吐率
提高 CPU 利用率
缩短程序整体执行时间
不减少单条指令执行时间,但单位时间执行更多指令
三、三大冲突
1. 结构冲突(硬件资源冲突)
原因:多条指令同时争用同一个硬件(如同时访存、同时用 ALU)
解决:暂停、增加硬件、分时使用
2. 数据冲突(数据相关)
原因:后面指令用到前面指令还没算完 / 没写回的结果
类型:写后读 RAW、读后写 WAR、写后写 WAW
解决:数据旁路(转发)、插入气泡(空泡)、编译调度
3. 控制冲突(分支冲突)
原因:跳转、分支指令导致 PC 改变,流水线预取指令失效
解决:延迟分支、分支预测、提前计算分支地址、清空流水线
一句话速记
原理:指令分段,重叠执行
优点:吞吐率高、速度快
冲突:硬件抢资源(结构)、前后用数(数据)、跳转打乱(控制)
数据相关:RAW、WAR、WAW
- RAW(Read After Write)写后读
含义 :后面指令要读 前面指令还没写完的数据
ADD R1,R2,R3 SUB R4,R1,R5
特点 :真相关,必须等前面写完才能读
最常见、必须处理
- WAR(Write After Read)读后写
含义 :后面指令要写 前面指令还没读完的寄存器
ADD R1,R2,R3 SUB R2,R4,R5
- 特点 :假相关,多流水线、乱序执行才会出现
- WAW(Write After Write)写后写
含义 :两条指令先后写同一个寄存器,后面先写完,结果被覆盖
ADD R1,R2,R3 SUB R1,R4,R5
- 特点 :假相关,乱序执行才会出现
一句话速记
RAW:先写后读 → 真相关,必冲突
WAR:先读后写 → 假相关
WAW:先写后写 → 假相关
超标量、超流水线、VLIW
- 超流水线(Super-pipelining)
思想 :把流水线阶段切得更细、更多
一条指令周期拆成更多小阶段
提高时钟频率,靠更快节拍提升吞吐率
本质:时间上并行
- 超标量(Superscalar)⭐最常用
思想 :CPU 内有多套独立执行部件(多条流水线)
一个时钟周期同时发射多条指令,并行执行
硬件自动检测指令相关性
本质:空间上并行
- VLIW 超长指令字
思想 :编译器提前打包多条独立指令为一条长指令
硬件按包并行执行,简化硬件控制
依赖编译器调度,不依赖硬件动态判断
本质:编译级并行
一句话速记
超流水线:切更细,跑更快
超标量:多流水线,同时发多条
VLIW:编译器打包,硬件无脑并行
中断基本概念、处理过程
一、中断基本概念
中断 :CPU 在执行程序时,由于外部 / 内部事件,暂时中止当前程序 ,转去执行中断服务程序,处理完再返回继续执行原程序。
作用:实现 I/O、异常处理、实时响应、多任务等。
二、中断处理过程(标准五步)
中断请求外设或内部事件向 CPU 发出中断请求信号。
中断判优与响应 CPU 检测请求,按优先级排队,满足条件则响应中断,发中断应答信号。
保护现场 CPU 自动将当前 PC、PSW 等寄存器内容压栈保存,保证能返回。
执行中断服务程序 ISR根据中断类型号找到入口地址,执行相应处理程序。
恢复现场与中断返回 从栈中恢复寄存器内容,执行 IRET 指令,返回原程序断点继续执行。
一句话速记
请求 → 判优 → 保护现场 → 执行服务 → 恢复现场并返回
向量中断、中断屏蔽、中断优先级
一、向量中断
定义 :由中断源直接提供中断向量(中断服务程序入口地址),CPU 据此直接跳转。
特点:速度快、硬件自动定位、无需软件查询。
作用:快速识别中断源,高效响应。
二、中断优先级
定义 :多个中断同时请求时,按预先设定优先级决定响应顺序。
原则:
高优先级中断可打断低优先级中断(中断嵌套)
同级、低级不能打断高级
作用:保证重要事件优先处理。
三、中断屏蔽
定义 :通过中断屏蔽字 / 寄存器,允许 / 禁止某级中断请求。
作用:
灵活调整响应次序
防止关键执行过程被打断
实现动态优先级控制
一句话速记
向量中断:硬件给入口地址,直接跳转
优先级:谁重要先响应谁
屏蔽:开关控制,允许 / 禁止某中断
总线分类
- 片内总线
位置:CPU 芯片内部
连接:ALU、寄存器、控制器之间
特点:速度最快,距离最短
- 系统总线(内总线)
位置:主板上,连接各大部件
连接:CPU、主存、I/O 接口
分类:
数据总线
地址总线
控制总线
特点:计算机最核心的总线
- I/O 总线(外总线)
位置:主机与外部设备之间
连接:主机与外设(硬盘、显卡、USB 设备等)
例子:PCIe、USB、SATA、RS-232
特点:种类多,速度差异大
一句话速记
片内:CPU 内部;系统:主板核心;I/O:接外设
总线四大特性
机械特性尺寸、形状、引脚数、排列方式、插拔结构。
电气特性信号电平、传输方向、传输速率、驱动能力。
功能特性每根线的用途:地址线、数据线、控制线等。
**时间特性(时序特性)**信号有效时序、同步关系、什么时候采样数据。
一句话速记:机械长啥样、电气传电平、功能干什么、时间怎么同步
总线仲裁:集中式、分布式
一、总线仲裁作用
多个主设备同时申请总线时,决定谁先使用,防止冲突。
二、集中式仲裁(由一个统一仲裁器控制)
链式查询(菊花链)
优先级由物理位置决定,离仲裁器越近优先级越高
线路少、成本低,但优先级固定、故障敏感
计数器定时查询
计数器从某值开始轮询设备
优先级可通过计数器初值动态调整
独立请求方式
每个设备有独立请求线和同意线
响应速度最快,优先级控制灵活,控制线多
三、分布式仲裁(无中央仲裁器,设备自行协商)
每个设备有自己的仲裁逻辑
设备通过竞争、编号比较决定使用权
可靠性高,扩展性好,常用于多处理器系统
一句话速记
集中式:一个老大说了算(链式、计数器、独立请求) 分布式:大家自己商量着来
总线定时:同步、异步、半同步
- 同步定时
统一时钟 :所有设备按同一时钟信号同步传输
优点:控制简单、速度快、效率高
缺点:时钟歪斜敏感,不兼容快慢不同设备
适用:长度短、速度一致的设备(如 CPU 与内存)
- 异步定时
无统一时钟:靠 ** 握手信号(应答信号)** 控制传输请求 → 应答 → 结束
优点:兼容性强,可接快慢不同设备
缺点:控制复杂,速度较慢
适用:I/O 设备、长距离传输
- 半同步定时
结合同步 + 异步 :以统一时钟为基准,用应答信号调整等待
优点:比同步灵活,比异步简单可靠
适用:系统总线、多速率设备共存场景
一句话速记
同步:大家看同一个时钟 异步:靠握手一问一答 半同步:时钟为主、握手为辅
I/O 控制方式
- 程序查询方式(轮询)
CPU 不断主动查询外设状态,就绪才传输
优点:硬件简单
缺点:CPU 全程占用,效率极低
- 中断方式
外设就绪后主动发中断,CPU 再处理
优点:CPU 可并行工作,利用率提高
缺点:频繁中断仍会消耗 CPU
- DMA 方式(直接存储器存取)
DMA 控制器直接控制内存与外设传输,CPU 仅初始化
优点:批量数据传输快,CPU 占用极少
适用:磁盘、显卡等高速 I/O
- 通道方式
专用通道处理器独立管理 I/O,执行通道程序
优点:CPU 干预最少,并行度最高
适用:大型机、大量外设同时工作
一句话速记
查询:CPU 死等;中断:外设叫 CPU;DMA:硬件直传;通道:专用处理器管 I/O
DMA 工作原理 & 与中断的区别
一、DMA 工作原理
DMA:直接存储器访问,让外设与内存不经过 CPU直接传输数据。
初始化CPU 向 DMA 控制器写入:内存首地址、传输长度、传输方向、外设号。
DMA 请求外设向 DMA 控制器发请求。
总线申请DMA 控制器向 CPU 申请总线控制权。
DMA 传输 CPU 交出总线,DMA 控制外设 ↔ 内存批量传输,CPU 此时可做与总线无关的操作。
传输结束 DMA 发中断通知 CPU 传输完成,CPU 回收总线。
二、DMA 与中断方式的区别
控制主体不同
中断:CPU 执行指令完成数据传送
DMA:DMA 硬件控制传送,CPU 不参与
数据通路不同
中断:外设 → CPU → 内存
DMA:外设 ↔ 内存直接传送
开销不同
中断:每次传送都要保护 / 恢复现场,开销大
DMA:仅开始和结束各一次中断,批量极快
适用场景不同
中断:少量、随机、低速 I/O
DMA:批量、高速 I/O(磁盘、显卡、网络)
优先级
- DMA 请求优先级 高于 中断请求
一句话速记
DMA:硬件直传,CPU 只开头结尾; 中断:CPU 亲自搬运,一次一字节。
磁盘调度算法
- FCFS 先来先服务
按请求到达顺序依次访问
优点:简单、公平
缺点:磁头移动频繁,平均寻道时间长
- SSTF 最短寻道时间优先
优先访问离当前磁头最近的磁道
优点:平均寻道时间短
缺点:可能导致饥饿(远处请求长期不响应)
- SCAN 电梯算法
磁头朝一个方向移动,顺路处理所有请求
到端点后掉头返回,继续处理
优点:性能稳定,不会饥饿
缺点:两端等待时间不均匀
- C-SCAN 循环扫描
只单向服务 ,到端点后直接快速返回起点,不处理请求
形成循环扫描
优点:等待时间更均匀,适合负载重的场景
缺点:返回时空跑
一句话速记
FCFS:谁先来谁先上
SSTF:挑最近的走
SCAN:像电梯一样来回跑
CSCAN:只往一边走,到头直接跳回起点
磁盘结构 & 存取时间
一、磁盘结构
盘面:多个盘片,每个盘片正反两面
磁道:盘面上的同心圆
扇区 :磁道上的一段,最小读写单位
柱面:所有盘面同一编号的磁道组成
磁头:每个盘面一个,负责读写
二、存取时间三部分
存取时间 = 寻道时间 + 旋转延迟时间 + 传输时间
寻道时间 Tseek 磁头移动到目标磁道 / 柱面的时间→ 占比最大,影响性能最关键
旋转延迟时间 Trot 目标扇区旋转到磁头下的时间→ 平均约为 磁盘旋转半周 的时间
传输时间 Tt数据实际读写的时间→ 与转速、扇区大小、传输速度有关
一句话速记
找道(寻道)→ 等扇区(旋转)→ 真正读写(传输)
为什么要有存储器层次结构
核心原因:速度、容量、价格三者无法同时满足,只能用层次结构折中兼顾。
速度与容量矛盾
速度越快的存储器,单位成本越高、容量做不大
容量大的存储器,速度慢、延迟高
成本与性能平衡
寄存器、Cache:速度极快、价高、量小
内存:速度中等、价格中等
外存(磁盘):速度慢、价低、容量极大
程序局部性原理 程序在一段时间内,只会访问少量局部数据和指令,热点数据放高速层,冷数据放低速层,整体效率接近高速存储器。
最终目标 让整个存储系统呈现给用户:速度接近 Cache / 寄存器,容量接近外存,价格又能承受。
一句话速记:解决速度、容量、成本的矛盾,利用局部性原理,实现又快又大又便宜。
计算机执行一条指令的完整过程
取指令(IF)
程序计数器 PC 给出指令地址
发读命令到主存,从主存中取出指令
指令送入指令寄存器 IR
PC 自动加 1,指向下一条指令
分析指令(译码 ID)
指令操作码送指令译码器,识别操作类型
分析地址码,按寻址方式计算有效地址
确定操作数来源与去向
取操作数
- 根据有效地址,从主存或寄存器中取出操作数
执行指令(EX)
控制器发控制信号,指挥运算器完成运算
算术 / 逻辑运算由 ALU 执行
移位、转移、I/O 等操作也在此阶段完成
存放结果(写回 WB)
将运算结果写回通用寄存器或主存
更新标志寄存器(零标志、进位标志等)
判断中断
执行完后检查有无中断请求
若无,回到第一步继续取下一条指令
若有,转去处理中断
最简背诵口诀
取指令 → 译指令 → 取操作数 → 执行运算 → 写回结果 → 查中断
流水线为什么能提高效率 + 瓶颈
一、流水线为什么能提高效率
指令重叠执行 把一条指令分成多个阶段(取指、译码、执行...),多条指令在不同阶段同时运行,不再串行等待。
提高吞吐率 理想情况下,每个时钟周期都能完成一条指令,单位时间内执行指令数大幅增加。
资源充分利用CPU 各部件(取指单元、译码器、ALU 等)不再闲置,一直处于工作状态。
一句话总结:串行是一条一条做完,流水线是同时处理多条指令,单位时间产出更多。
二、流水线的瓶颈
最慢阶段决定整体速度 流水线各阶段延迟不可能完全相等,最慢的一段就是整条流水线的瓶颈,决定最大时钟频率。
冲突导致停顿
结构冲突:硬件资源竞争
数据冲突:指令间数据相关
控制冲突 :分支、跳转打乱流水线冲突会插入气泡(空泡),降低实际效率。
段数越多,冲突越明显过度细分流水线,控制复杂度上升,冲突概率变大,收益会递减。
最简背诵版
提高效率原因:指令分段重叠执行,提高吞吐率,资源充分利用。
瓶颈 :最慢阶段限制速度,结构 / 数据 / 控制冲突导致停顿,效率下降。
DMA 为什么比中断快
传输方式不同
中断方式:数据要经过 CPU 中转(外设→CPU→内存),每次都要执行指令搬运。
DMA 方式:外设与内存直接传输,不经过 CPU,硬件直接搬数据。
CPU 干预次数不同
中断:每传一个字 / 字节就中断一次,频繁保护现场、恢复现场,开销极大。
DMA:只在开始和结束各干预一次,批量传输全程不用 CPU。
总线占用方式不同
中断:CPU 控制总线,频繁切换。
DMA:直接接管总线,连续高速批量传送。
一句话速记
中断靠 CPU 一字一节慢慢搬;DMA 硬件直传批量走,CPU 只管开头结尾,所以快得多。