计算机组成原理复习——第一章
一、计算机系统概括
本笔记不用于商业用途,内容参考《2025年计算机组成原理——考研复习指导》以及其对应的b站免费视频课(图文信息主要来自于此)
(一)计算机系统结构层次
1. 计算机系统的基本组成
- 硬件:有形的物理设备,计算机系统中实际物理装置的总称
- 软件:指在硬件上运行的程序和相关的数据及文档
- 软/硬件在逻辑功能上是等价的:对某一功能,既可使用硬件实现,又能使用软件实现。(通常来说,一个功能使用较为频繁且用硬件实现成本较为理想,则使用硬件可以提高效率)
2. 计算机硬件的基本组成
(1) 冯·诺伊曼机基本思想(特点)
- 采用“存储程序”的工作方式
- 计算机硬件系统由运算器、存储器、控制器、输入和输出设备5大部件组成
- 指令和数据以同等地位存储在存储器中,形式上没有区别,但计算机应能区分它们
- 指令和数据均用二进制代码表示
- 指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作数地址
“存储程序”的基本思想是:将事先编好的程序和原始数据送入主存储器后才可执行,一旦开始执行程序,无需干预,其会逐行自动执行指令,直至程序结束
(2) 计算机的功能部件
-
输入设备:将程序和数据以机器可识别信息形式输入计算机
-
输出设备:将处理结果以人们可接受的形式或其它系统所要求信息形式输出
-
存储器:分为主存储器和辅助存储器
- CPU能直接访问的存储器是主存储器,而辅助存储器的信息必须调入主存储器后才能被CPU访问
- 主存储器工作方式:按存储单元地址进行行存取(按地址存取方式)
- 主存基本组成:
- 存储体:包含很多【存储单元:存储内容称存储字,其为数唤作存储字长】包含若干【存储元件:存储一位“二进制代码”(0 or 1)】
- 存储器地址寄存器(MAR):存放访存地址,经地址译码后能找到所选存储单元(寻址)
- 位数反映最多可寻址的存储单元个数(长度与PC[程序计数器]长度相等)
- 存储器数据寄存器(MDR):暂存要从存储器中读或写的信息
- 位数通常等于存储字长,一般为字节的2次幂整数倍
- 时序控制逻辑:产生存储器操作的所需各种时序信号
注意:现代计算机中MAR和MDR都在CPU中,后文的Cache同样如此
-
运算器:执行部件,用于算术运算和逻辑运算
- 核心:算术逻辑单元(ALU)
- 必须寄存器:累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)
- 可能包含寄存器:变址寄存器(IX)、基址寄存器(BR)等
- 程序状态寄存器(PSW,也称标志寄存器):存放处理信息标志(溢出与否、进位、借位及结果是否为负)
-
控制器:计算机的指挥中心,由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成
- 程序计数器:用来存放当前欲执行指令的地址,+1指向下一指令地址,和主存储器中MAR有一条直接通路
- 指令寄存器:用来存放当前指令,内容来自主存储器MDR。
- 内容来自主存储器MDR,指令中OP(IR)送至CU,地址码Ad(IR)送至MAR(用于取操作数)
-
CPU(中央处理单元):一般将运算器和控制器集成到一个芯片上,而CPU和主存储器共同构成主机,而其它硬件装置称为外设
- CPU和主存储器通过一组总线相连,总线中有地址、控制和数据3组信号线
- MAR信息放入地址线,MDR信息放入数据线,控制线负责指出是进行读入还是写出
-
一个栗子:
初始:(PC)=0,指向第一条指令的存储地址
1:(PC)->MAR,导致(MAR)=0
3:M(MAR)->MDR,导致(MDR)=000001 0000000101
4:(MDR)->IR,导致(IR)=000001 0000000101
5:OP(IR)->CU,指令的操作码送到CU,CU分析后得知,此为“取数”指令
6:Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=5
8:M(MAR)->MDR,导致(MDR)=0000 0000 0000 0010=2
9:(MDR)->ACC,导致(ACC)=0000 0000 0000 0010=2
3. 计算机软件和硬件的关系
(1) 计算机软件
-
软件按其功能分类:可分为系统软件和应用软件
- 系统软件:一组保证计算机高效、正确运行的基础软件,通常作为系统资源提供给用户使用
- 系统程序员:编写诸如操作系统、编译程序等各种系统程序的人员
- 应用软件:用户为解决某个应用领域中的各类问题而编制的程序
- 应用程序员利用计算机及所支持的系统软件来编写具体应用问题的人员
- 系统软件:一组保证计算机高效、正确运行的基础软件,通常作为系统资源提供给用户使用
-
三种机器语言的特点:
- 机器语言(也称二进制代码语言):需要编程人员记忆每条指令的二进制编码。机器语言也是计算机唯一可以直接识别和执行的语言
- 汇编语言:使用英文单词或缩写代替二进制的指令代码,必须经过一个称为汇编程序的系统软件的翻译,将其转换为机器语言后,才能在计算机的硬件系统上执行
- 高级语言:为方便程序设计人员写出解决问题的处理方案和解题过程的程序,通常需要先经过编译程序转换为汇编语言程序,然后经过汇编程序转换为机器语言程序,或直接由高级语言程序翻译为机器语言程序
-
翻译程序:将高级语言程序转换为机器语言程序的软件系统
- 汇编程序(汇编器):将汇编语言程序翻译成机器语言程序
- 解释程序(解释器):将源程序中语句按执行顺序逐条翻译为机器指令并立即执行
- 编译程序(编译器):将高级语言程序翻译成汇编语言或机器语言程序
-
软件和硬件的逻辑等价性
- 对某一功能来说,既可以由硬件实现,又可以用软件实现;自用户角度看,它们在功能上是等价的
- 软件和硬件逻辑功能的等价性是计算机设计的重要依据,软硬件的功能分配及其界面的确定是计算机结构研究的重要内容
- 其分界点通常由设计目标、性能价格比、技术水平等综合因素决定
(2) 计算机系统的层次结构
- CPU可以理解和执行的指令类型:
- 第一级是微程序机器层,由机器硬件直接执行微指令
- 第二级是传统机器语言层,它也是一个实际的机器层,由微程序解释指令系统
- 第三级操作系统层,它由操作系统程序实现
- 操作系统程序是由机器指令和广义指令组成的
- 这些广义指令是为了扩展机器功能而设置,由操作系统定义和解释的软件指令,所以也称混合层
- 操作系统程序是由机器指令和广义指令组成的
- 第四级汇编语言层,这一层由汇编程序支持和执行,借此可编写汇编语言源程序
- 第五级高级语言层,是面向用户的,为了方便用户编写应用而设置的。该层由各种高级语言编译程序支持和执行
- 软件和硬件间的界面就是指令集体系结构(ISA)(指软件可感知部分,也称软件可见部分),ISA定义了一台计算机可以执行的所有指令集合
- 没有配备软件的纯硬件系统称裸机,第三层到第五层成为虚拟机(软件实现的机器)
4. 计算机的工作过程
(1) “存储程序”工作方式
- 程序执行前,需要将程序所含的指令和数据送入主存储器,一旦程序被启动执行,就无需操作人员的干涉,自动逐条完成指令的取出和执行任务
- 执行过程:
- 将首条指令地址放入PC,PC访问主存此地址
- 顺序执行:完成指令时,下条指令地址=PC+当前指令长度
- 跳转执行:完成指令时,下条指令地址=指令中指定的目标地址
(2) 从源程序到可执行文件
- 分步:预处理 -> 编译 -> 汇编 -> 链接
- 预处理阶段:预处理器(
cpp
)对源程序中以#
开头的命令进行处理,将.h
对应代码进行插入,生成.i
为拓展名文件 - 编译阶段:编译器(
ccl
)对预处理后源程序进行编译,生成一个汇编语言程序.s
文件 - 汇编阶段:汇编器(
as
)将.s
翻译成机器语言指令,并将其打包为可重定位目标文件(.o
文件),其为一种二进制文件 - 链接阶段:链接器(
ld
)将多个重定位目标文件和标准库函数合并为一个可执行文件
(二)计算性能指标
- 吞吐量、响应时间:
- 吞吐量:系统在单位时间内处理请求的数量
- 响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间
- 通常包括CPU时间(运行一个程序所花费的时间)与等待时间
- CPU时钟周期、主频、CPI、CPU执行时间
- CPU时钟周期:一段连续波峰与波谷持续时间(单位:微秒和纳秒)
- CPU主频:CPU内数字脉冲信号振荡的频率,\(CPU主频(时钟频率)=\frac{1}{CPU时钟周期}\)(单位:赫兹)
- CPI(
Clock cycle Per Instruction
):执行一条指令所需的时钟周期数- 不同的指令,CPI不同,甚至相同的指令CPI也可能有变化
- \(执行一条指令耗时=CPI\times CPU时钟周期\)
- \(CPU执行时间(整个程序耗时)=\frac{CPU时钟周期数}{主频}=\frac{指令条数\times CPI}{主频}\)
- IPS(
Instructions Per Second
):每秒执行多少条指令,\(IPS=\frac{主频}{平均CPI}\) - FLOPS(
Floating-point Operation Per Second
):每秒执行多少次浮点运算
- MIPS、MFLOPS 、GFLOPS、TFLOPS、PFLOPS、EFLOPS、ZFLOPS :
- 数量单位:\(K=千=10^3, M=百万=10^6,G=十亿=10^9,T=万亿=10^{12}\)
- 数据通路带宽:数据总线一次所能并行传送信息的位数