
一文搞懂PC、IR和MAR、MDR及其联系
·
首先分别对上述四个概念进行介绍
PC
PC:程序计数器。用于存放下一条指令的地址,当取完一个字节以后,PC的值会自动加一,为取在下一条指令做准备。
思考:为什么不直接存放下一条指令而存放下一条指令的地址呢?
如果存放地址的话可以很方便的自动加一定位到下一条指令的地址,但是如果存放的是指令的话,那只能在每一天指令的后面加上下一条指令的内容,导致指令长度过长,同时不便于程序转移。
IR
IR:指令寄存器。用于存放当前正在执行的指令。
MAR
MAR:主存地址寄存器。存在于CPU中,存放的是将要访问主存的地址。注意,MAR之中存放的只有地址,即存储单元的索引地址。
MDR
MDR:主存数据寄存器。存在于CPU中,存放的是某一个存储单元。
MAR和MDR功能作用辨析
假设主存是一个含有若干存储单元的存储器,我们这里给存储单元进行标号,0、1、2…,此时MAR的作用就是找到这个标号所对应的单元,但是并不知道这个单元内部的东西。找到这个单元之后,存储器把这个单元里面的数据内容放到MDR中。
四者之间的关系
CPU从PC中取出指令所在的地址单元(取指阶段),之后进行译码,将该地址放进MAR中。MAR找到对应的存储单元,读取数据并将其放到MDR中,此时MDR存放的是指令加数据。之后把指令部分放到IR中进行指令操作,数据放到寄存器或者ACC中计算。
花了10分钟花了一个图,帮助大家理解:
写在后面
关于PC位数和MAR、MDR位数详解,我放在下一篇文章了:PC、IR位数和MAR、MDR位数
更多推荐
目录
所有评论(0)