
ALU (Arithmetic&logical Unit) 算数 逻辑 单元
X :此字母没有专指的缩写含义,可以用作任一部件名,在此表示 *** 作数寄存器,即运算器中工作寄存器之一,用来存放 *** 作数
ACC (Accumulator),累加器,是运算器中既能存放运算前的 *** 作数,又能悔悄存放运算结果的寄存器。
MQ :Multiplier-Quotient Register,乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器。
控制器:
取指令 PC :Program Counter,程序计数器,其功能是存放当前欲执行指令的地址,并可自动计数形成下一条指令地址。
分析指令 IR :Instruction Register,指令寄存器,其功能是存放当前正在执行的指令。
执行指令 CU :Control Unit,控制单元(部件),为控制器的核心部件,其功能是产生微 *** 作命令序列。
主存储器
MAR :Memory Address Register,存储器 地址 寄存器,在主存中用来存放欲访问的存储单元的地址。
MDR :Memory Data Register,存储器 数据 缓冲寄存器,在主存中用来存放从某单元读出、或要写入某存储单元的数据。
主存是一个个菜鸟驿站的柜子,有自己的编号,柜子里面有不同的货物,有的存着1234这个数字,有的存着325这个数字,有的里面是0。
以执行一个y=ab+c的命令为例
在一切开始之前,PC先数一个数,然后把数字告诉MAR,然后再数一个,再告诉MAR,循环往复,
首先,PC开始计数,数字为0,pc告诉MAR:0。 MAR只会接收“地址”,然后取这个地址的东西出来传给MDR 。MAR去主存柜找第0号柜子,打开,(里面是000001和0000000101),把柜子里的东西拿给了MDR。 MDR只接收内槐余容,然后传给别人 ,MDR这个柜子里就存放了指令的内容了,但是MDR只知道这串数字,不知道这串数字是什么意思。 MDR只是一个无情的传话筒 。MDR将这串数字传给IR柜子,IR柜子接收指令内容,并将其分为 *** 作码和地址码,然后把 *** 作码给CU, IR只是一个无情的分割机和传话筒,嗯,高级传话筒。CU就很智能了,CU一看, *** 作码多少?000001,哦,翻一翻字典,这是取数, 把地址发送给MAR,MAR是干啥的?请看前面,MAR此时又收到一个地址,然后在主存柜找到该柜子打开,把东西又给了MDR,MDR接收了这个内容,该传给谁呢,此时CU通过总线指挥碧明渣MDR,把这个送给ACC,MDR送给ACC,ACC就把2这个数字给加上去了。
加法很简单,但计算机实现为什么要这么多步骤?
计算机运算了1+1=2,但是问题来了,怎么把2输出出去,也就是说,怎么让你知道计算机算出来了2。那肯定是把“2”这个数字传输给输出设备“显示”或者“保存”下来,但是要传输一个东西,前提有两点,1.起点2.终点。计算机的数据有如茫茫大海,我为了传输2这个数字,得创建一个新的东西来存放2所在的地址,送货员才知道起点。地址+数据。“第五个柜子”,“2”
PC把地址发送给MAR,MAR有着固定的终点MDR
送货员MAR把数据(指令的完整内容)送给MDR,MDR听总线命令,把数据送给别人,可能是IR,ACC,MQ。在例子中首先送给IR,IR拿到手,把 *** 作码发送给CU,把地址码发送给MAR,(MAR好累),MAR现在收到了地址码,又开始送货,送给MDR,这次总线告诉MDR,这个东西送给ACC
为了传达“取数”和“地址”两个信息,MAR需要跑两趟,工具人啊。
为什么不传达“取数”和“数字”,一次就传完呢?可能是因为这个数据是事先已经存好的数字,而不是临时输入的。
如果此篇文章对你有帮助,谢谢你的点赞
*** 作码和 *** 作数。计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序银拦排列的指令,执行程序的过程就是计算机的工作过程颤脊。控制器靠指令指挥机器工作,人们用指令表达自己的意图,并交给控制器执行。
控制器靠指令指挥机器工作,人们用指令表达自己的意图,并交给控制器执行。一台计算机所能执行的各种不同指令的全体,叫做计算机的指令系统,每一台计算机均有自己的特定的指令系统,其指令内容和格式有所不同。通常一条指令包括两方面的内容: *** 作码和 *** 作数, *** 作码决定要完成的 *** 作, *** 作数指参加运算的数据及其所茄搏渗在的单元。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)