本篇笔记课程来源:王道计算机考研 计算机组成原理
【计算机组成原理】第一章:计算机系统概述
一、计算机硬件的基本组成
1. 冯诺依曼机
- 离散变量自动电子计算机(Electronic Discrete Variable Automatic Computer,EDVAC)是第一台采用冯诺依曼结构的计算机
- 第一台计算机是1946年2月14日(情人节,当与计算机共度)于宾夕法尼亚大学诞生的电子数字积分计算机(ElectronicNumerical Integrator And Computer,ENIAC)
- 早期冯诺依曼机硬件结构
- 冯诺依曼机的特点:
- 计算机由五大部件组成:运算器、控制器、存储器、输入设备、输出设备
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示(方便使用电信号)
- 指令由操作码和地址码组成
- 存储程序:指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按程序的规定顺序执行其他指令,直到程序执行结束。
- 以运算器为中心,输入 / 输出设备与存储器之间的数据传送通过运算器完成
- 在计算机系统中,软件和硬件在逻辑上是等效的。
- 软件实现的成本低,效率也低。硬件实现成本高,效率也高。
2. 现代计算机
- 现代计算机以存储器为中心,将运算器和控制器集成在中央处理器(CPU)中
- 现代计算机硬件组成:
硬件 { 主机 { C P U { 运算器 控制器 主存 I / O 设备 { 辅存 输入设备 输出设备 硬件\begin{cases} 主机\begin{cases} CPU\begin{cases} 运算器 \\控制器 \end{cases} \\ 主存 \end{cases} \\ I / O 设备\begin{cases} 辅存 \\ 输入设备\\ 输出设备 \end{cases} \\ \end{cases} 硬件⎩ ⎨ ⎧主机⎩ ⎨ ⎧CPU{运算器控制器主存I/O设备⎩ ⎨ ⎧辅存输入设备输出设备- 存储器分为了主存、辅存:
- 主存:内存,程序运行时直接存取数据的场所,速度快但容量较小
- 辅存:硬盘,用于长期存储数据,容量大且断电后数据不丢失,可划分为 I/O 设备
- 存储器分为了主存、辅存:
二、各个硬件的工作原理
1. 主存储器
- 基本组成:存储体、MAR(存储地址寄存器)、MDR(存储数据寄存器)。现在的计算机通常把 MAR、MDR 也集成在 CPU 中
- 存储体:数据在存储体内按地址存储,每个地址对应一个存储单元
- 存储地址寄存器(Memory Address Register,MAR):用于指明要读 / 写哪个存储单元,MAR 位数反应存储单元的数量
- 存储单元:每个存储单元存放一串二进制代码
- 存储字(word):存储单元中二进制代码的组合
MAR = 4 位 → 总共由 24 个存储单元
- 存储数据寄存器(Memory Data Register,MDR):用于暂存要读 / 写的数据,MDR 位数 = 存储字长
- 存储字长:存储单元中二进制代码的位数
- 存储元:存储二进制的电子元件,每个存储元可存储 1 bit
MDR = 16 位 → 每个存储单元可存放 16 bit,即 1 个字(word)= 16 bit
2. 运算器
- 运算器:用于实现算术运算(如加减乘除)、逻辑运算(如与或非)
- 基本组成:ACC(累加器)、MQ(乘商寄存器)、X(通用的操作数寄存器)、ALU(算术逻辑单元)
- 累加器(Accumulator,ACC):用于存放操作数,或运算结果
- 乘商寄存器(Multiple-Quotient Register,MQ):在乘、除运算时,用于存放操作数或运算结果
- 通用的操作数寄存器(X):用于存放操作数
- 算术逻辑单元(Arithmetic and Logic Unit,ALU):运算器核心部件,通过内部复杂的电路实现算数运算、逻辑运算
3. 控制器
- 基本组成:CU(控制单元)、IR(指令寄存器)、PC(程序计数器)
- 控制单元(Control Unit,CU):控制器的核心部件,分析指令,给出控制信号
- 指令寄存器(Instruction Register,IR):存放当前执行的指令
- 程序计数器(Program Counter,PC):存放下一条指令地址,有自动加 1 功能
4. 计算机的工作过程
- 初始:高级语言程序经过一系列处理后,将指令、数据存入主存,PC 执行第一条指令
- 完成一条指令的过程
- 取指令:根据 PC 中记录的地址从内存中取出指令
- 分析指令:取出指令后,将指令存放在 IR 中,PC 自动 +1,CU 分析指令
- 执行指令:CU 分析完成后,再控制其他部件配合着执行指令
- 指令和数据以同等地位存于存储器,因此 CPU 需要根据指令周期的不同阶段(取指令、执行指令)区分指令和数据
“取数” 指令的执行过程:
- 1 ~ 4 是取指令,是每个指令(比如取数、加法、乘法、赋值)的必经步骤
- 5 是分析指令,也是每个指令的必经步骤
- 6 ~ 9 是执行指令,不同的指令具体步骤不同,图中的是 “取数” 指令
- 详细过程文字太少不好描述,文字太多过于繁杂,所以看原视频,传送门:计算机组成原理 1.2.2_各个硬件的工作原理
三、计算机软件
1. 软件分类
- 系统软件:负责管理硬件资源,并向上层应用程序提供基础服务
- 如:操作系统、数据库管理系统(DBMS)、标准程序库、网络软件、语言处理程序、服务程序
- 应用软件:为了解决某个应用领域的问题而编制的程序
2. 语言级别
- 高级语言:如 Java、Python,编译程序将高级语言翻译成汇编语言
- 编译程序:也叫编译器,将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后在执行机器语言程序(只需翻译一次)
- 解释程序:也叫解释器,将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)
- 汇编语言:助记符的形式,本质上与机器语言一一对应,汇编程序将汇编语言翻译成机器语言
- 机器语言:二进制代码的形式,计算机硬件只能识别二进制机器语言
编译器、解释器、汇编器,可统称为 “翻译程序”
3. 指令集体系结构 ISA
- 软件与硬件的逻辑功能等价性:同一个功能,既可以用硬件实现(性能高成本高),也可以用软件实现(性能低成本低)。为了平衡性能和成本,因此提出了指令集体系结构。
- 指令集体系结构(ISA,Instruction Set Architecture):软件和硬件之间的界面。设计计算机系统的 ISA,就是定义一台计算机可以支持哪些指令,每条指令的作用是什么、每条指令的用法是什么。
四、层次结构与工作原理
1. 计算机系统的多级层次结构
- 计算机系统的多级层次结构分为 5 层:
- 微程序机器:即微指令系统,处于最底层,由硬件直接执行微指令
- 传统机器:即用机器语言的机器,本层执行二进制机器指令,每个指令都会被拆分为多个微指令
- 操作系统机器:属于软件范畴的虚拟机器,向上提供 “广义指令”(广义指令也叫系统调用)
- 汇编语言机器:执行汇编语言,用汇编程序翻译成机器语言程序
- 高级语言机器:执行高级语言,用编译 / 解释程序翻译成汇编语言程序
- 计算机组成原理主要探讨硬件部分,如何用硬件实现定义的接口和指令。
2. 计算机系统的工作原理
- 从 C 语言源程序到可执行文件:
- 预处理:预处理器对 C 文件(
.c
)中#
开头的命令处理,如宏定义常量的替换。生成预处理后的源程序(.i
) - 编译:使用编译器将预处理后的源程序(
.i
)翻译为汇编语言程序(.s
) - 汇编:使用汇编器将汇编语言程序翻译为二进制机器语言程序(
.o
,目标模块) - 链接:使用链接器将目标模块和其他被引用的目标模块链接成完成的可执行文件(
.exe
)
- 预处理:预处理器对 C 文件(
- 生成可执行文件后,将可执行文件放在硬盘中(硬盘属于 I/O 设备),执行可执行文件时会从外存调入主存
五、计算机的性能指标
1. 数量单位
- 描述存储容量、文件大小时,使用 2 的幂次方
单位简称 单位全称 2的幂次方 B 字节(Byte) 20 KB 千字节(Kilobyte) 210 MB 兆字节(Megabyte) 220 GB 吉字节(Gigabyte) 230 TB 太字节(Terabyte) 240 PB 拍字节(Petabyte) 250 - 描述频率、速率时,使用 10 的幂次方
单位简称 单位全称 10 的幂次方 K 千(Kilo) 103 M 兆(Mega) 106 G 吉(Giga) 109 T 太(Tera) 1012
2. 存储器性能指标
- 总容量:
总容量 = 存储单元个数 × 存储字长 bit = 存储单元个数 × 存储字长 ÷ 8 Byte \begin{align*} 总容量 &= 存储单元个数 × 存储字长\text{ bit} \\ & = 存储单元个数×存储字长÷8\text{ Byte} \end{align*} 总容量=存储单元个数×存储字长 bit=存储单元个数×存储字长÷8 Byte设 MAR 为 32 位,MDR 为 8 位。
总容量 = 2 32 × 8 bit = 4 GB 总容量=2^{32}×8\text{ bit}=4\text{ GB} 总容量=232×8 bit=4 GB
3. CPU的性能指标
- 主频:主频也叫时钟频率(Clock Frequency),是指 CPU 内数字脉冲信号振荡的频率,单位赫兹(Hz) CPU 主频(时钟频率) = 1 CPU 时钟周期 \text{CPU }主频(时钟频率)=\frac{1}{\text{CPU } 时钟周期} CPU 主频(时钟频率)=CPU 时钟周期1
- 时钟信号(Clock Signal,CLK):CPU 运行时固定频率的周期性电脉冲信号
- 时钟周期(Clock Cycle):时钟信号相邻两个脉冲之间的时间间隔,是 CPU 操作的基本时间单位。单位纳秒(ns)、微秒(μs)
- CPI(Clock cycle Per Instruction):执行一条指令所需的时钟周期数。
- 不同的指令,CPI 不同。甚至相同的指令,CPI 也可能有变化
- 执行一条指令的耗时: 执行一条指令的耗时 = CPI × CPU 时钟周期 执行一条指令的耗时 = \text{CPI} × \text{CPU } 时钟周期 执行一条指令的耗时=CPI×CPU 时钟周期
- CPU 执行时间(整个程序的耗时): CPU 执行时间 = CPU 时钟周期数 主频 = 指令条数 × CPI 主频 \begin{align*} \text{CPU } 执行时间 & = \frac{\text{CPU }时钟周期数}{主频}\\[3ex]&=\frac{指令条数×\text{CPI}}{主频}\\[2ex]\end{align*} CPU 执行时间=主频CPU 时钟周期数=主频指令条数×CPI
设某 CPU 主频为 1000 Hz,某程序包含 100 条指令,平均来看指令的 CPI = 3,该程序再该 CPU 上执行需要多久? 100 × 3 × 1 1000 = 0.3 s 100×3×\frac{1}{1000}=0.3\text{ s} 100×3×10001=0.3 s
- IPS(Instructions Per Second):每秒执行多少条指令 IPS = 主频 平均 CPI \text{IPS}=\frac{主频}{平均\text{ CPI}} IPS=平均 CPI主频
- 常见单位:KIPS、MIPS(是速率 10 的幂次方,不是 2 的幂次方)
- FLOPS(Floating-point Operations Per Second):每秒执行多少次浮点运算
- 常见单位:KFLOPS、MFLOPS、GFLOPS、TFLOPS(也是速率)
4. 系统整体的性能指标
- 数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
- 吞吐量:指系统在单位时间内处理请求的数量。系统吞吐量主要取决于主存的存取周期
- 响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。通常包括 CPU 时间(上 CPU 执行)和等待时间(IO 操作和就绪等待等)
- 基准程序(跑分软件):是用来测量计算机处理速度的一种实用软件,以便于被测量的计算机性能可以与运行相同程序的其他计算机性能进行比较。