文章目录
- 1.2.2 认识各个硬件部件
- 1. 主存储器的基本组成
- 2. 运算器的基本组成
- 3. 控制器的基本组成
- 4. 计算机的工作流程
1.2.2 认识各个硬件部件
1. 主存储器的基本组成
- 存储体:存放数据和指令
- 地址寄存器:用来存放读取存储体数据时存放的具体位置
- 数据寄存器:用来存放读取的存储体数据
CPU要从主存储器中取出数据,首先要将该数据的地址存如MAR中,然后用控制总线向主存储器发出命令,主存储器收到命令后将对应的数据存放到MDR中,等待CPU读取。
这就好比我们去菜鸟驿站取快递一样,告诉工作人员我们的取件码,然后工作人员就把快递拿到柜台,我们在取走。计算机的工作原理在我们的日常生活中处处可见。
CPU要存数据也是类似,先将地址放入MAR,再将要存入的数据放入MDR,后向主存储器发出控制命令,随后主存储器就开始存入到存储体中。
存储体里的数据是如何存的呢?
存储体就和菜鸟驿站里的货架一样,存储体被分成一个一个的小格子,每个格子存储一单元的数据,每个单元都有一个地址。
所以MAR的位数就反映了存储单元的个数,如果MAR只有4位,你们存储体总共只有2^4=16
个存储单元。
MDR的位数就反映了存储单元的位数,如果MDR有16位,那么存储单元也只有16位。
- 存储单元:每个存储单元存放一串二进制代码
- 存储字:存储单元中二进制代码的组合
- 存储字长:存储单元中二进制代码的位数
2. 运算器的基本组成
我们要实现a+b运算的算,首先需要有个地方放a,也就是ACC,再有个地方放b,也就是X,在有人来给它俩加起来,就是ALU,最后将计算的结果放入ACC中。
3. 控制器的基本组成
控制器就是CPU中最重要的部分,它掌控着计算机的运作。
- CU:控制单元,分析指令,给出控制信号
- IR:指令寄存器,存放当前执行的之林
- PC:程序计数器,存放下一条指令地址,有自动加1功能
完成一条指令:首先根据程序计数器中的地址去内存找到对应的指令,然后存入指令寄存器中,随后控制单元去指令寄存器中取出指令并分析指令,然后执行。
4. 计算机的工作流程
这些硬件我们已经了解了一遍,接下来让我们看在计算机中他们是怎么协调工作的:
y = a * b + c
编译后运行发生了什么?
左边那一段高级语言编写的代码经过编译之后就变成了一些指令和数据存入主存中取。
我们总共有4条指令,我们一一解释:
()表示里面存的东西
第一条:取数a至ACC
初zhi:(PC)=0,表示下一条指令为地址0
- (PC) -> MAR,将地址存入地址寄存器MAR中,(MAR)= 0
- M(MAR) -> MDR,控制器通过控制总线告诉主存储器,我要取数据,随后主存储器将MAR里地址对应的数据存入MDR中
- PC++,程序计数器的值自动加1,方便下次使用
- (MDR) -> IR : 指令从MDR 移动到 IR中
- OP(IR) -> CU,指令的操作码会被送到CU,CU分析后得知,这是“取数”指令
- AD(IP) -> MAR,指令的地址吗送到MAR,导致(MAR) = 5
- M(MAR) -> MDR ,导致(MDR)= 2
- (MDR) -> ACC ,数据被送到ACC
这里我们都要经过取指令、分析指令、执行指令的过程
其中 1-4是取指令,5是分析指令,6-8是执行指令
第二条:乘b得ab,存于ACC中
上一条指令执行后,(PC)=1,(ACC)=2
- (PC) -> MAR
- M(MAR) -> MDR
- (MDR) -> IR
- PC++
- OP(IR) -> CU,分析这是乘得指令
- AD(IR) -> MAR
- M(MAR) -> MDR
- (MDR) -> MQ ,乘数
- (ACC) -> X , 被乘数
- (X)*(MQ) ->ACC,ALU实现逻辑运算,如果乘积太大,需要MQ辅助存储
第三条:加c得ab + c,存于ACC中
上一条指令后,(PC) = 2,(ACC) = 6
- (PC) -> MAR
- M(MAR) -> MDR
- (MDR) -> IR
- PC ++
- OP(IR) -> CU,CU分析这是“加法”指令
- AD(IR) -> MAR
- M(MAR) -> MDR
- (MDR) -> x
- (ACC)+ (x) -> ACC,ALU实现运算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ker3bdCA-1675498937811)(https://xiaoxin18.oss-cn-hangzhou.aliyuncs.com/2022/image-20230204161735385.png)]
第四条:加ab + c,存于ACC中
上一条指令后,(PC) = 3,(ACC) =7
- (PC) -> MAR
- M(MAR) -> MDR
- (MDR) -> IR
- PC ++
- OP(IR) -> CU,CU分析这是“存数”指令
- AD(IR) -> MAR
- (ACC) -> MDR
- (MDR) -> M(MAR)
第五条:停机
上一条指令后,(PC) = 4
- (PC) -> MAR
- M(MAR) -> MDR
- (MDR) -> IR
- PC ++
- OP(IR) -> CU,CU分析这是停机指令
总结