1902 字
10 分钟
计算机组成原理笔记

1. 计算机系统概述#

1.1 冯·诺依曼架构特点#

冯诺依曼架构

核心思想:存储程序,即将程序和数据存储在存储器中,CPU 按地址依次取出并执行。

主要特点

  1. 五大部件:运算器、控制器、存储器、输入设备、输出设备
  2. 以存储器为中心:早期冯·诺依曼机以运算器为中心,现代计算机以存储器为中心
  3. 指令和数据均用二进制表示
  4. 指令和数据存储在同一存储器中(区别于哈佛架构)

1.2 软件与硬件的逻辑等价性#

计算机软件分类

三个级别的语言

语言类型特点翻译工具
高级语言接近自然语言,如 C、Python编译程序(编译器)
汇编语言用助记符表示指令汇编程序(汇编器)
机器语言二进制代码,CPU 直接执行无需翻译
  • 编译程序:将高级语言一次性全部翻译成汇编语言或机器语言
  • 解释程序:将高级语言翻译成机器语言(翻译一句执行一句)
  • ISA(指令集体系结构):定义一台计算机可以支持的指令,以及每条指令的作用

2. 数据表示与运算#

2.1 原码、反码、补码#

定点整数的编码方式

编码方式正数负数特点
原码符号位0 + 真值绝对值符号位1 + 真值绝对值有+0和-0
反码与原码相同符号位不变,数值位取反有+0和-0
补码与原码相同反码+1只有一个0,范围更大

补码的优势

  1. 消除正负零:原码和反码中+0和-0表示不同,补码中只有一个0
  2. 加减法统一:减法可以转化为加法运算
  3. 表示范围扩大:8位补码可表示 -128 ~ +127

符号扩展

  • 正数扩展:高位补0
  • 负数扩展:高位补1

2.2 溢出判断#

溢出检测方法

  • 单符号位法:操作数符号相同,结果符号相反则溢出
  • 双符号位法:结果的两个符号位不同则溢出

3. CPU 组成与功能#

各硬件部件

3.1 运算器#

部件全称功能
ACC累加计数器存放操作数、运算结果
MQ乘商寄存器乘法运算时存放乘数,除法时存放商
X通用寄存器存放操作数
ALU算术逻辑单元实现各种算术运算、逻辑运算

3.2 控制器#

部件全称功能
PC程序计数器存放下一条指令的地址
IR指令寄存器存放当前正在执行的指令
CU控制单元分析指令,给出控制信号

重要说明

  • PC 自动指向下一条指令的地址(取指后 PC+1)
  • IR 保存当前正在执行的指令
  • CU 是控制器的核心,负责分析指令并产生控制信号

4. 主存储器#

主存储器基本组成

4.1 基本组成#

存储体:数据在存储体内按地址存储

关键寄存器

  • MAR(主存地址寄存器):用于存放要访问的存储单元的地址,位数反映存储单元的个数
  • MDR(主存数据寄存器):用于暂存从存储体读出或写入的数据,位数 = 存储字长

基本概念

概念定义
存储单元每个存储单元存放一串二进制代码
存储字存储单元中二进制代码的组合
存储字长存储单元中二进制代码的位数
存储元存储二进制的电子元件,每个存储元可存 1bit

示例

  • MAR = 4位 → 共有 2^4 = 16 个存储单元
  • MDR = 16位 → 每个存储单元可存放 16bit
  • 1个字(word)= 16bit
  • 1字节(Byte)= 8bit,1B = 1Byte,1b = 1bit

5. 指令系统#

5.1 指令格式#

指令由操作码地址码组成:

字段内容
操作码(OP)指明指令的操作类型(如加法、传送)
地址码(Ad)指明操作数的地址或下一条指令的地址

地址码的结构

| 操作码 | 地址码1 | 地址码2 | 地址码3 | 地址码4 |

5.2 寻址方式#

寻址方式说明优点缺点
立即寻址地址码即为操作数速度快地址码位数限制操作数范围
直接寻址地址码给出操作数的内存地址简单地址码位数限制寻址范围
间接寻址地址码给出的内存地址中存放的是操作数的地址寻址范围大访存次数多,速度慢
寄存器寻址地址码给出寄存器编号速度快寄存器数量有限
寄存器间接寻址地址码给出的寄存器中存放的是操作数的地址寻址范围大需要访存

6. CPU 工作过程#

6.1 指令执行流程#

CPU工作过程

指令执行的基本步骤

  1. 取指周期

    • (PC) → MAR:将程序计数器的内容送到主存地址寄存器
    • M(MAR) → MDR:从存储体读取指令到主存数据寄存器
    • (MDR) → IR:将指令送到指令寄存器
    • OP(IR) → CU:将操作码送到控制单元分析
  2. 执行周期(以取数指令为例):

    • Ad(IR) → MAR:将地址码送到主存地址寄存器
    • M(MAR) → MDR:从存储体读取数据
    • (MDR) → ACC:将数据送到累加器

6.2 取数指令详解#

取数指令执行

“取数”指令的执行(从主存指定地址处取数):

取指周期(必经步骤):
(PC) → MAR
M(MAR) → MDR
(MDR) → IR
(PC) + 1 → PC
OP(IR) → CU
执行周期(不同指令具体步骤不同):
Ad(IR) → MAR
M(MAR) → MDR
(MDR) → ACC
  • 取指周期:所有指令都必须经历的阶段
  • 执行周期:根据指令类型不同,具体操作不同
  • PC+1:在取指周期结束时自动执行,指向下一条指令

6.3 乘法指令执行#

乘法指令执行

乘法指令的执行过程

取指周期:
(PC) → MAR → MDR → IR → CU
执行周期:
Ad(IR) → MAR → MDR → MQ # 取乘数到MQ
(ACC) × (MQ) → ACC # 乘法运算
结果存入主存单元

注意:乘法运算结果可能超出 ACC 的位数,需要 MQ 辅助存储。

6.4 指令周期#

CPU 区分指令和数据的依据:指令周期的不同阶段

阶段取出的内容用途
取指周期指令送到 IR 分析
执行周期数据送到 ACC 或其他寄存器

指令周期的组成

  • 取指周期:从存储器取出指令
  • 间址周期(可选):如果指令使用间接寻址
  • 执行周期:执行指令的操作
  • 中断周期(可选):处理中断请求

7. 总结#

7.1 核心知识点#

  1. 冯·诺依曼架构:存储程序,五大部件,以存储器为中心
  2. CPU 组成:运算器(ACC、MQ、X、ALU)+ 控制器(PC、IR、CU)
  3. 存储系统:MAR(地址)、MDR(数据)、存储体
  4. 指令系统:操作码 + 地址码,多种寻址方式
  5. 指令周期:取指周期 → 执行周期,PC 自动+1

7.2 易错点#

  • PC 存放下一条指令的地址,不是当前指令的地址
  • IR 保存当前正在执行的指令
  • MAR 的位数决定存储单元的个数
  • MDR 的位数等于存储字长
  • 取指周期取出的是指令,执行周期取出的是数据
计算机组成原理笔记
https://youki.bbroot.com/posts/cs/computer-organization/
作者
youki
发布于
2026-02-20
许可协议
CC BY-NC-SA 4.0