计算机系统层次结构
计算机硬件的组成
冯·诺依曼计算机
将指令以代码的形式存入主存储器中,之后按照顺序依次执行,直到程序执行结束。

冯诺依曼计算机
特点:
- 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5大部件组成;
- 指令和数据以同等地位存于存储器内,并可按地址寻访;
- 指令和数据均用二进制代码表示;
- 指令由操作码和地址码组成
- 操作码用来表示操作的性质;
- 地址码用来表示操作数在存储器中的位置;
- 指令在存储器内按顺序存放。通常指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序;
- 早期的冯诺依曼机以运算器为中心,输入/输出设备通过运算器与存储器传送数据。
冯诺伊曼机基本工作方式是控制流驱动 按地址访问并顺序执行指令是冯诺依曼机工作方式的基本特点
如何区分指令和数据:
- 通过不同的时间段来区分指令和数据,即在取指令阶段(或取指微程序)取出的为指令,在执行指令阶段(或相应微程序)取出的即为数据。
- 通过地址来源区分,由\(PC\)提供存储单元地址的取出的是指令,由指令地址码部分取出(提供存储单元地址或在指令中给出立即数)的是操作数。
现代计算机的组织结构
.png)
.png)
计算机的功能部件
存储器
存储器包括主存储器(主存、内存储器)和辅助存储器(辅存、外存储器)。
主存的组成如图所示:
- 存储体:存放二进制信息;
- 地址寄存器(MAR,Memory Adders Register):存放访存地址,经过地址译码后找到相应的存储单元; MAR的位数表示地址码的长度
- 数据寄存器(MDR,Memory Data Register):暂存要从存储器中读或写的信息。 MDR的位数表示每个存储单元的位数,也叫存储字长
主存的作用:程序运行时的主要位置,包括所需的数据
敲重点:MAR和MDR之间关系的理解
主存储器是由若干存储单元构成的,每个存储单元包含若干存储元件,每一个存储元件可以存储一位二进制代码0或1。因此每一个存储单元可以存储一串二进制码。这串二进制码称为存储字,它的位数称为存储字长,实际上就是存储单元中存储元件的个数。
例如,一个存储单元中有8个存储元件,则其存储字长为8位(bit),也可以称为1字节(B,Byte)。
MAR有n位(有n位地址) = 有 \(2^n\) 个存储单元 。
MAR和MDR虽然是存储器一部分,但现在也存在于CPU
举例
题1:寄存器和高速缓冲寄存器Cache都集成在CPU上,离CPU越近速度越快,所以存取速度上寄存器>Cache>内存。
题2:计算机位数相关的计算
运算器
用于处理计算机的算术运算和逻辑运算。运算器包括:
- 算术逻辑单元(ALU)(核心)
- 累加器(ACC)
- 乘商寄存器(MQ)
- 操作计数器(X)
- 变址寄存器(IX)
- 基址寄存器(BR)
- 程序状态寄存器(PSW)
控制器
控制计算机各部件运行。包括:
- 控制单元(CU)
- 指令寄存器(IR):存放当前执行指令的地址
- 程序计数器(PC):自动加1以得到下一条指令的地址
1.2.2 计算机的工作过程
简单版本:
先定义下面会用到的变量含义:
M:主存中某存储单元 OP(IR):取操作码 Ad(IR):取地址码
取指令
- PC --> MAR:将指令的地址从PC(程序计数器)传至地址寄存器
- M(MAR) --> MDR:根据地址从存储体(或地址寄存器)中取到指令,并传至数据寄存器
- (MDR) --> IR:将得到的指令传给指令寄存器
分析指令
- OP(IR) --> CU:CU(控制单元)分析IR(指令寄存器)中的指令,并做出操作
执行指令
- Ad(IR) --> MAR:IR(指令寄存器)将地址码给地址寄存器
- M(MAR) --> MDR:地址寄存器找到数据,存至数据寄存器
- (MDR) --> ACC:数据寄存器将数据传至累加器
CPU通过指令周期的不同阶段来区分指令和数据
详细版本:
举例:
题1:CPU结构
解析:地址译码器是主存里面的
1.2.3 计算机的层次结构
- M4:用编译程序翻译成机器语言程序
- M3:用汇编程序汇编成机器语言程序
- M2:用机器语言解释操作系统
- M1:用微指令解释机器指令
- M0:由硬件直接执行微指令
- 翻译程序:源程序→机器语言
- 编译(C++、Java)
- 高级语言→机器语言
- 通篇翻译
- 仅需执行一次
- 解释(python、JS)
- 高级语言→机器语言
- 翻译一句执行一句
- 每次执行都需要翻译
- 汇编
- 汇编语言→机器语言
- 编译(C++、Java)
- 硬件和软件之间互相依存,协同发展
- 两者间没有严格的界限
举例:上下层关系
1. 上层实现对下层功能的拓展,下层是上层的基础。
2. 上下层可以分割,仅有下层没有上层也可以