1.2.2、计算机硬件基础
一、核心概念:存储程序
- 来源:冯·诺依曼针对EDVAC提出,区别于手动接线的ENIAC。
- 定义:指令和数据以二进制提前存入主存,CPU按地址顺序执行指令。
- 补充:软硬件逻辑等效(例:乘法可用硬件电路/多次加法软件实现)。
二、两大硬件架构
(一)早期冯·诺依曼机(以运算器为中心)
1. 五大硬件部件+功能
- 输入设备:外界信息 → 机器二进制
- 输出设备:运算结果 → 人类可读形式
- 存储器:存放指令+数据
- 运算器:算术运算、逻辑运算
- 控制器:指挥所有部件协调工作
2. 结构简图

✅ 特点:I/O与存储器的数据必须经过运算器传输。
3. 冯·诺依曼机6大核心特点
- 由五大部件构成
- 指令、数据同存存储器,按地址寻访
- 指令、数据均为二进制
- 指令 = 操作码 + 地址码
- 核心思想:存储程序
- 整机以运算器为中心
(二)现代计算机(以存储器为中心,主流架构)
1. 核心整合
- CPU = 运算器 + 控制器
- 主机 = CPU + 主存
- 外设(I/O) = 输入设备 + 输出设备
2. 结构简图


✅ 特点:I/O可直接和主存交互,不再依赖运算器,效率更高。
三、各硬件内部组成+寄存器
模块1:主存储器(主存)
1. 三大组成:存储体 + MAR + MDR
2. 寄存器功能
- MAR(存储器地址寄存器)(Memory Address Register) :存访存地址;位数 = 存储单元个数(例:4位MAR → 2⁴个单元)。
- MDR(存储器数据寄存器)(Memory Data Register) :存读写的数据;位数 = 存储字长(1字=16bit,1字节=8bit)。
- 存储体:按地址存放二进制代码,一个地址对应一个存储单元。
主存结构简图

模块2:运算器(负责运算)
1. 四大组成:ALU + ACC + MQ + X
2. 寄存器功能(乘除运算必考)
- ALU(算术逻辑单元):执行加减乘除、与或非等运算(核心运算电路)。
- ACC(累加器)(ACCumulator):存放操作数、最终运算结果(加减乘除均用到)。
- MQ(乘商寄存器)(Multiple-Quotient Register) :专门用于乘法(存乘数/乘积低位)、除法(存商)。
- X(通用操作数寄存器):存放加数、减数、被乘数、除数等操作数。
运算器结构简图

模块3:控制器(指挥中心,控制指令执行)
1. 三大组成:PC + IR + CU
2. 寄存器功能(指令流程核心)
- PC(程序计数器)(Program Counter) :存下一条指令地址 ,具备自动+1功能。
- IR(指令寄存器)(Instruction Register) :存放当前正在执行的指令(指令=操作码OP+地址码Ad)。
- CU(控制单元)(Control Unit):解析指令、发出控制信号,指挥硬件工作。
控制器结构简图

四、计算机完整工作流程
1. 通用三步(所有指令都要执行)
- 取指令:PC→MAR → 主存→MDR → IR;PC自动+1
- 分析指令:IR的操作码(OP)送入CU解析
- 执行指令:CU控制各部件完成操作(取数/乘/加/存数等)
2. 典型例题流程(y=a*b+c,看懂即可)
初始:PC=0(指向第一条指令)
- 取数:从主存取出a → ACC
- 乘法:ACC(a) × MQ(b) → ACC
- 加法:ACC(ab) + X© → ACC
- 存数:ACC结果 → 主存y单元
- 停机:CU触发中断结束程序
整机联动结构图
【输入设备】 → 【主存】
↙ ↘
MAR MDR
↓ ↓
【控制器】IR ← PC 【运算器】ALU
↑ ↓ CU ↑ ↓
指挥全部硬件 ACC / MQ / X
↘
【输出设备】
五、408必背易混点
- 中心区别:冯诺依曼机运算器为中心 ;现代计算机存储器为中心。
- 位数区分:MAR位数决定单元数量 ;MDR位数=存储字长。
- 寄存器区分:
- PC:下一条指令地址;MAR:访存地址
- IR:当前指令;MDR:读写数据
- 指令区分:指令 = 操作码(做什么)+ 地址码(操作数在哪)。
- 机器区分:冯诺依曼机核心 = 存储程序 + 二进制 + 五大部件。
1.2.3、计算机软件
1.1 软件分类
层级关系
#mermaid-svg-O1tzDu55zvzvdDmU{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-O1tzDu55zvzvdDmU .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-O1tzDu55zvzvdDmU .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-O1tzDu55zvzvdDmU .error-icon{fill:#552222;}#mermaid-svg-O1tzDu55zvzvdDmU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-O1tzDu55zvzvdDmU .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-O1tzDu55zvzvdDmU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-O1tzDu55zvzvdDmU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-O1tzDu55zvzvdDmU .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-O1tzDu55zvzvdDmU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-O1tzDu55zvzvdDmU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-O1tzDu55zvzvdDmU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-O1tzDu55zvzvdDmU .marker.cross{stroke:#333333;}#mermaid-svg-O1tzDu55zvzvdDmU svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-O1tzDu55zvzvdDmU p{margin:0;}#mermaid-svg-O1tzDu55zvzvdDmU .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-O1tzDu55zvzvdDmU .cluster-label text{fill:#333;}#mermaid-svg-O1tzDu55zvzvdDmU .cluster-label span{color:#333;}#mermaid-svg-O1tzDu55zvzvdDmU .cluster-label span p{background-color:transparent;}#mermaid-svg-O1tzDu55zvzvdDmU .label text,#mermaid-svg-O1tzDu55zvzvdDmU span{fill:#333;color:#333;}#mermaid-svg-O1tzDu55zvzvdDmU .node rect,#mermaid-svg-O1tzDu55zvzvdDmU .node circle,#mermaid-svg-O1tzDu55zvzvdDmU .node ellipse,#mermaid-svg-O1tzDu55zvzvdDmU .node polygon,#mermaid-svg-O1tzDu55zvzvdDmU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-O1tzDu55zvzvdDmU .rough-node .label text,#mermaid-svg-O1tzDu55zvzvdDmU .node .label text,#mermaid-svg-O1tzDu55zvzvdDmU .image-shape .label,#mermaid-svg-O1tzDu55zvzvdDmU .icon-shape .label{text-anchor:middle;}#mermaid-svg-O1tzDu55zvzvdDmU .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-O1tzDu55zvzvdDmU .rough-node .label,#mermaid-svg-O1tzDu55zvzvdDmU .node .label,#mermaid-svg-O1tzDu55zvzvdDmU .image-shape .label,#mermaid-svg-O1tzDu55zvzvdDmU .icon-shape .label{text-align:center;}#mermaid-svg-O1tzDu55zvzvdDmU .node.clickable{cursor:pointer;}#mermaid-svg-O1tzDu55zvzvdDmU .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-O1tzDu55zvzvdDmU .arrowheadPath{fill:#333333;}#mermaid-svg-O1tzDu55zvzvdDmU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-O1tzDu55zvzvdDmU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-O1tzDu55zvzvdDmU .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-O1tzDu55zvzvdDmU .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-O1tzDu55zvzvdDmU .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-O1tzDu55zvzvdDmU .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-O1tzDu55zvzvdDmU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-O1tzDu55zvzvdDmU .cluster text{fill:#333;}#mermaid-svg-O1tzDu55zvzvdDmU .cluster span{color:#333;}#mermaid-svg-O1tzDu55zvzvdDmU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-O1tzDu55zvzvdDmU .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-O1tzDu55zvzvdDmU rect.text{fill:none;stroke-width:0;}#mermaid-svg-O1tzDu55zvzvdDmU .icon-shape,#mermaid-svg-O1tzDu55zvzvdDmU .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-O1tzDu55zvzvdDmU .icon-shape p,#mermaid-svg-O1tzDu55zvzvdDmU .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-O1tzDu55zvzvdDmU .icon-shape .label rect,#mermaid-svg-O1tzDu55zvzvdDmU .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-O1tzDu55zvzvdDmU .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-O1tzDu55zvzvdDmU .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-O1tzDu55zvzvdDmU :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 运行
提供服务
使用
硬件
系统软件
应用软件
用户
- 系统软件 :管理硬件资源,提供底层基础服务
包含:操作系统、数据库管理系统(DBMS)、语言处理程序、标准程序库、网络软件、服务程序 - 应用软件 :面向具体应用场景,解决领域问题
举例:QQ、抖音、Photoshop、AutoCAD 等
补充:计算机硬件仅能识别二进制机器语言。
1.2、三级编程语言 & 翻译程序
语言层级流向
高级语言 → 翻译程序 → 汇编语言 → 汇编器 → 机器语言(二进制)
-
三类语言
- 机器语言:纯二进制代码,硬件可直接执行
- 汇编语言:助记符形式,与机器语言一一对应
- 高级语言:C/C++、Python、Java 等,贴近人类使用习惯
-
三类翻译程序
| 分类 | 工作特点 | 适用语言 |
| ---- | -------- | -------- |
| 编译器 | 整段一次性翻译,翻译完成后再执行 | C、C++ |
| 解释器 | 翻译一句、执行一句,运行时实时翻译 | Python、JavaScript、Shell |
| 汇编器 | 汇编语言单向转为机器语言 | 汇编语言 |
统称:编译器、汇编器、解释器 都属于翻译程序
1.3 补充概念
- 软硬件逻辑功能等价性
同一功能,两种实现方式:- 硬件实现:性能高、成本高
- 软件实现:性能低、成本低
- 指令集体系结构(ISA)
软硬件之间的接口,定义计算机支持的指令、指令功能与使用规则。
1.2.4、计算机系统层次结构
自下而上分层,下层为上层基础,上层是下层扩展。
2.1 五层虚拟机器结构
M4 高级语言机器 ← 编译器翻译为汇编语言
↑
M3 汇编语言机器 ← 汇编器翻译为机器语言
↑
M2 操作系统机器 ← 向上提供系统调用(广义指令)
↑
M1 传统机器 ← 执行二进制机器语言指令
↑
M0 微程序机器 ← 硬件直接执行微指令(最底层)
- M0、M1:硬件层
- M2、M3、M4:虚拟机器(依赖软件实现)
2.2 易混概念辨析
- 计算机体系结构
机器语言程序员可见的系统属性:指令系统、数据类型、寻址方式、I/O 机理等。
例:计算机是否支持乘法指令。 - 计算机组成原理
实现体系结构定义的功能,细节对程序员透明(不可见) 。
例:乘法指令具体如何用硬件实现。
1.2.5、计算机系统不同用户
不同用户对应不同使用层级:
| 用户角色 | 所处层级 | 主要工作 |
|---|---|---|
| 普通最终用户 | 应用软件层 | 使用各类软件完成日常操作 |
| 应用程序员 | 高级语言层 | 使用高级语言开发应用软件 |
| 系统程序员 | 机器语言/汇编层 | 开发操作系统、编译器等系统软件 |
| 系统管理员 | 操作系统层 | 系统配置、运维、资源管理 |
注:同一用户可能在不同场景承担多种角色
1.2.6、计算机系统工作原理
4.1 源程序 → 可执行文件 完整流程
C源程序(.c) → 预处理 → 编译 → 汇编 → 链接 → 可执行文件(.exe)
- 预处理:处理
#宏定义、头文件、常量替换 - 编译:高级语言 翻译为 汇编语言
- 汇编:汇编语言 翻译为 机器语言(生成目标模块
.o) - 链接:整合多个目标模块、库文件,生成最终可执行文件
4.2 存储程序工作方式(冯·诺依曼核心)
指令和数据共同存放在主存中,CPU 依靠 PC 自动循环执行指令。
通用指令执行流程
取指令 → 分析指令(译码) → PC自增 → 取操作数 → 执行运算 → 结果写回
- 取指令:
PC → MAR → 主存 → MDR → IR - 分析指令:IR 中操作码送入 CU 解析
- 执行指令:控制各硬件完成对应操作

1.2节习题补充核心知识点
-
ISA(指令集体系结构):软硬件接口,定义指令、寄存器等软件可见硬件行为;同一ISA可由不同微架构实现,软件兼容;仅汇编语言与ISA指令一一对应。
-
翻译程序对比
类型 工作方式 典型语言 特点 编译程序 一次性完整翻译为目标程序后再执行 C、C++ 生成目标文件,运行速度快 解释程序 边翻译边执行 Python、JavaScript 不生成目标文件,速度较慢 -
计算机系统定义:由配套硬件+软件共同组成,而非仅主机+外设。
-
冯·诺依曼机规则:指令按地址访问,数据除立即寻址外均存于存储器中。
1.3、计算机性能指标
5.1 主存储器性能指标
- MAR(存储器地址寄存器)
- 位数决定存储单元总个数 ,单元数量 = 2MAR位数2^{MAR位数}2MAR位数
- MDR(存储器数据寄存器)
- 位数 = 存储字长(单个存储单元的二进制位数)
- 存储容量公式
总容量(bit)=存储单元个数×存储字长总容量(Byte)=存储单元个数×存储字长8 \begin{align} 总容量(\text{bit}) &= 存储单元个数 \times 存储字长 \\ 总容量(\text{Byte}) &= \frac{存储单元个数 \times 存储字长}{8} \end{align} 总容量(bit)总容量(Byte)=存储单元个数×存储字长=8存储单元个数×存储字长
单位换算:1 Byte=8 bit1\ \text{Byte} = 8\ \text{bit}1 Byte=8 bit
5.2 CPU 核心性能指标
基础公式

CPU主频=1时钟周期单条指令耗时=CPI×时钟周期程序总执行时间=指令条数×CPI主频 \begin{align} \text{CPU主频} &= \frac{1}{\text{时钟周期}} \\ \text{单条指令耗时} &= \text{CPI} \times \text{时钟周期} \\ \text{程序总执行时间} &= \frac{\text{指令条数} \times \text{CPI}}{\text{主频}} \end{align} CPU主频单条指令耗时程序总执行时间=时钟周期1=CPI×时钟周期=主频指令条数×CPI
- 时钟周期:CPU 最小时间单位
- 主频:CPU 时钟脉冲频率,单位
Hz / GHz - CPI:执行一条指令所需的时钟周期数(不同指令 CPI 不同)
运算速度指标
- IPS :每秒执行指令数,IPS=主频平均CPI\text{IPS} = \dfrac{\text{主频}}{\text{平均CPI}}IPS=平均CPI主频,衍生单位:KIPS、MIPS
- FLOPS:每秒浮点运算次数,衍生单位:MFLOPS、GFLOPS、PFLOPS(多用于超算)
5.3 系统整体性能指标
- 数据通路带宽:数据总线一次可并行传输的二进制位数
- 吞吐量:单位时间内系统处理的请求数量,主要取决于主存存取周期
- 响应时间:从发起请求到获取结果的总等待时间(含运算、I/O、等待耗时)
5.4 单位规则(高频易错)
- 存储/文件大小(二进制)
K=210, M=220, G=230, T=240K=2^{10},\ M=2^{20},\ G=2^{30},\ T=2^{40}K=210, M=220, G=230, T=240 - 频率/运算速率(十进制)
K=103, M=106, G=109, T=1012K=10^3,\ M=10^6,\ G=10^9,\ T=10^{12}K=103, M=106, G=109, T=1012
5.5 经典判断题考点
- 主频高的 CPU 不一定更快,需结合 CPI、指令集判断。
- 平均 CPI 相同时,主频高也未必更快,取决于指令系统。
- 基准程序跑分仅作参考,不能完全代表整机综合性能。
1.3节习题补充核心知识点
- 科学计算性能指标 :标志系统性能的核心参数是 MFLOPS(每秒百万次浮点运算)。
- CPI 与时钟频率的关系:CPI(每条指令时钟周期数)与时钟频率无关,受系统结构、指令集、计算机组织影响;时钟频率不影响CPI本身,仅影响指令执行速度。
- 机器字长与运算精度:机器字长与运算精度指标密切相关,字长越长,数据位数越多,定点/浮点数的表示与运算精度越高。
本章节知识框架总结
计算机系统
├─ 硬件体系:冯·诺依曼/现代架构 + 五大部件 + 核心寄存器
├─ 软件体系:系统软件/应用软件 + 三级语言 + 翻译程序
├─ 层次结构:M0微程序 → M1机器语言 → M2操作系统 → M3汇编 → M4高级语言
├─ 工作原理:源程序编译流程 + 存储程序 & 指令执行流程
└─ 性能指标:存储器指标 + CPU指标 + 系统整体指标
若有侵权请联系作者,同时欢迎大家指出错误