主存储器的基本组成
存储体 存储地址寄存器 存储数据寄存器
存储地址寄存器MAR:用来存放数据在内存的存放地址或存放将要往存储器中写入数据的地址
存储数据寄存器MDR:用来存放从内存中读取或写入的数据
CPU读取数据:主存储器从MAR中读取地址得到数据存放地址,从内存中相应地址取出数据,并把数据存放到MDR中,CPU通过总线
CPU存放数据:主存储器从MAR中读取地址得到数据存放地址,从MDR中取走数据,并存到相应地址
存储体被分成一个个存储单元,每个存储单元存放一串二进制代码,这串二进制代码称为一个存储字(word),存储单元中二进制的位数称为存储字长,存储字长都是8的整数倍,每个存储单元对应着一个地址信息,地址信息就是MAR中存放的信息,存储二进制位的单元被称为存储元,多个存储原组成一个存储单元,每个存储元中存放一个bit位,MAR存放地址信息,指出要访问哪一个存储单元,所以MAR的位数就决定了存储体中存储单元的个数,MDR可以用来存放从存储体中取出的数据,所以,MDR的位数和存储单元的位数是一致的,所以MDR位数=存储字长
列如:
MAR=4位,所以,他能表示的地址个数位2^4,因此存储单元的个数为2^4。
MAR=16位,所以,每个存储单元可存放16bit,
1个字(word)=16bit
1个字节(Byte)=8bit
1B=1个字节
1b=1个bit
运算器的基本组成
ACC MQ ALU X
ACC:累加器
MQ:乘商寄存器
ALU:算数逻辑单元
X:通用操作数寄存器
控制器
CU:控制单元,分析指令,给出控制信号(最核心部件)
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,有自动加一功能
程序运行过程
把PC中的指令地址通过地址总线传给MAR,主存储器从MAR中读取到地址数据,并从相应地址中读取数据到MDR,通过数据总线,将MDR中的数据传给IR,CU分析指令并进行相应控制
计算机工作过程
经编译得机器可以认识得语言
初:
(PC)=0,指向第一条指令地址
PC中的内容通过地址总线传给MAR地址寄存器中
(PC)->MAR,所以(MAR)=0
主存储器根据MDR存储的地址信息,从存储体中找出相应地址存储的二进制信息,并且把这些二进制数据放到MDR数据寄存器中
M(MAR)->MDR,所以(MDR)=000001 0000000101
通过数据总线把MDR中的内容传给IR
(MDR)->IR,所以(IR)=000001 0000000101
OP(IR)->CU,指令的操作码000001送到CU,CU分析后得出,这是取数指令
于是把指令的地址码0000000101送到MAR中
Ad(IR)->MAR,所以(MAR)=5
主存储器根据MAR存储的地址信息,从存储体中找出相应地址存储的二进制信息,并且把这些数据放到MDR数据寄存器中
M(MAR)->MDR,所以(MDR)=0000000000000010=2
通过数据总线把MDR中的数据传给ACC
(MDR)->ACC,所以(ACC)=0000000000000010=2
至此,第一条指令完成
上一条指令CU分析是取指后PC自动+1,(PC)=1;执行后,(ACC)=2
PC中的内容通过地址总线传给MAR地址寄存器中
(PC)->MAR,所以(MAR)=1
主存储器根据MDR存储的地址信息,从存储体中找出相应地址存储的二进制信息,并且把这些二进制数据放到MDR数据寄存器中
M(MAR)->MDR,所以(MDR)=000100 000000110
通过数据总线把MDR中的内容传给IR
(MDR)->IR,所以(IR)=000100 000000110
OP(IR)->CU,指令的操作码000100送到CU,CU分析后得出,这是乘法指令
于是把指令的地址码000000110送到MAR中
Ad(IR)->MAR,所以(MAR)=6
主存储器根据MAR存储的地址信息,从存储体中找出相应地址存储的二进制信息,并且把这些数据放到MDR数据寄存器中
M(MAR)->MDR,所以(MDR)=0000000000000011=3
通过数据总线把MDR中的数据传给MQ乘商寄存器中
(MDR)->MQ,所以MQ=0000000000000011=3
把ACC里的数据放到通用寄存器X中
(ACC)->X,所以(X)=2
进行乘法运算
(MQ)*(X)->ACC,所以(ACC)=6,若乘积过大,则需MQ辅助存储,存放运算结果的第一位。
至此第二条指令完成。
剩下的指令类比前两条
总结:
本小节知识: