视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502
前言
在本篇中,你将掌握
- 主机的三大部分:主存储器、运算器、控制器的组成
- 主机的工作流程(注:工作流程可参照视频学习,效果更好)
1 主存储器
主存储器中用于存放数据的叫做存储体,还有两个寄存器 MAR(存储地址寄存器)和 MDR(存储数据寄存器)。
注:现在的计算机通常把MAR、MDR也集成在CPU内
存储体:数据在存储体内按地址存储。
存储单元:一整个存储体会被分成多个存储单元,
存储字:每一个存储单元会存放一串二进制代码,每个单元里存储的二进制代码称为一个存储字(word), 存储字长:而每个存储字包含的二进制个数就叫做存储字长。
存储元:用于存储二进制的电子元件叫存储元,每个存储元可存1bit。
因此,MAR位数 = 反映了存储单元个数,MDR位数 = 存储字长。如MAR = 4位,那么有 2 4 2^4 24个存储单元;MDR = 16位,那么每个存储单元可存放16bit,一个字(word)= 16bit。
注意,1个字节(Byte)= 8 bit,而一个字到底有多少bit要看主存储器中MDR的位数。在描述时,通常以1B代表一个字节,1b表示1bit。
2 运算器
运算器,用于实现算术运算和逻辑运算。
一个运算器最主要的部件有:
ACC:累加寄存器,用于存放操作数,或运算结果
MQ:乘商寄存器,在乘、除运算时,用于存放操作数,或运算结果
X:通用的操作数寄存器,用于存放操作数
ALU:算数逻辑单元,内部集成复杂电路实现算数运算、逻辑运算
控制器,指挥程序运行。
控制器中有三个必不可少的部件:
CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,有自动加1功能
对于计算机而言,最主要的就是执行代码,代码也就是一条一条的指令,完成一条指令需要:
取指令 ,根据PC的指令地址取出指令
分析指令 , 从PC取出的指令会放到IR中
执行指令 , CU分析这条指令要做什么
别称,前两阶段被称为取指,最后一个阶段称为执行。
上述的定义是抽象不容易理解的,因此让我们看一个例子来辅助学习理解。
比如我们可以用C语言写这样一段程序
int a=2,b=3,c=1,y=0;
void main(){
y = a * b + c;
}
编译装入主存的形式如上图,主存地址0-4存放了指令,5-8存放了数据。
具体而言,指令和数据都被存放在了上图的存储体中
初:(PC) = 0,指向第一条指令的存储地址
#1:(PC) -> MAR,导致(MAR)= 0
#2:M(MAR)-> (MDR),导致(MDR) = 000001 0000000101
#3:(MDR)-> IR,导致(IR)= 000001 0000000101
#4:前六位的操作码会被送到CU,CU分析后得知,这是“取数”的指令
#5 Ad(IR)-> MAR,指令的地址码送到MAR,导致(MAR)= 5
#6 M(MAR)-> MDR,导致(MDR)= 0000010000000101 = 2
#7 (MDR)-> ACC,导致(ACC) = 0000010000000101 = 2
取指令(#1-#3)、分析指令(#4)、执行取数指令(#5-#7),执行顺序如下
CPU区分指令和数据的依据:指令周期的不同阶段
本篇小结,主机 = 主存 + 运算器 + 控制器,和三个部分的重要组成,对于主存的存储体中的各个概念是核心(以及字和字节的区别)、对于运算器核心部分是ALU、控制器的核心部件是CU,及其工作过程。