飞不高 发表于 2022-11-1 06:41:34

聊聊计算机中的寄存器

目录

[*]前言
[*]数据寄存器(DR)
[*]地址寄存器(AR)
[*]程序状态寄存器(PSW)
[*]累加寄存器(AC)
[*]乘商寄存器(MQ)
[*]程序计数器(PC)
[*]指令寄存器(IR)
[*]MAR、MDR
[*]小结

作者:小牛呼噜噜 | https://xiaoniuhululu.com
计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」
前言

现代CPU内部除了运算器和控制器,还有一个常见的组件: 寄存器,是CPU内部用来存放数据的一些小型的存储区域,用来暂时存放参与运算的数据以及运算结果。
在https://mp.weixin.qq.com/s/KecubYROQztHvwPicJb9wQ这篇文章中,我们了解了计算机各个硬件读写速度的差异,其中从存储器速度、容量和价格的关系金字塔图发现:
https://img2022.cnblogs.com/blog/2795476/202210/2795476-20221031222016552-398873536.png
最上层的寄存器速度最快,容量最小,价格也最昂贵
下面我们来看看几个常见寄存器:
数据寄存器(DR)

数据寄存器(Data Register,DR)又称数据缓冲寄存器,数据寄存器用于存放操作数,其位数应满足多数数据类型的数值范围,其主要功能是作为CPU和主存、外设之间信息传输的中转站,用以弥补CPU和主存、外设之间操作速度上的差异。
数据寄存器用来暂时存放由主存储器读出的一条指令或一个数据字;反之,当向主存存入一条指令或一个数据字时,也将它们暂时存放在数据寄存器中。
数据寄存器的作用是 :

[*]作为CPU和主存、外围设备之间信息传送的中转站;
[*]弥补CPU和主存、外围设备之间在操作速度上的差异;
[*]在单累加器结构的运算器中,数据寄存器还可兼作操作数寄存器。
地址寄存器(AR)

地址寄存器(Address Register,AR)用来保存CPU当前所访问的主存单元的地址。其本身可以具有通用性,也可用于特殊的寻址方式,如用于基址寻址的段指针(存放基地址)、用于变址寻址的变址寄存器和用于堆栈寻址的栈指针。地址寄存器的位数必须足够长,以满足最大的地址范围。
由于在主存和CPU之间存在操作速度上的差异,所以必须使用地址寄存器来暂时保存主存的地址信息,直到主存的存取操作完成为止。
程序状态寄存器(PSW)

程序状态寄存器(PSW),用来保存各类运算指令或测试指令的结果的各种状态信息
除此之外,程序状态字寄存器还用来保存中断和系统工作状态等信息,以便CPU和系统及时了解机器运行状态和程序运行状态。
程序状态寄存器 是构成 运算器的重要组成部分
累加寄存器(AC)

累加寄存器通常简称累加器(AC),是一个通用寄存器。
累加器的功能是:当运算器的算术逻辑单元ALU执行算术或逻辑运算时,为ALU提供一个工作区,可以为ALU暂时保存一个操作数或运算结果。显然,运算器中至少要有一个累加寄存器。
乘商寄存器(MQ)

在运算器中,乘商寄存器主要负责数据的乘法与除法运算并可保存运算结果,是运算器的基本组成部分,是运算器三个基本寄存器之一。
程序计数器(PC)

程序计数器(PC),具有寄存信息和计数两种功能,一般用来存放下一条指令在主存储器中的地址。
在程序执行之前,首先必须将程序的首地址,即程序第一条指令所在主存单元的地址送入PC,因此PC的内容即是从主存提取的第一条指令的地址。
当执行指令时,CPU能自动递增PC的内容,使其始终保存将要执行的下一条指令的主存地址,为取下一条指令做好准备。
但是,当遇到转移指令时,下一条指令的地址将由转移指令的地址码字段来指定,而不是像通常的那样通过顺序递增PC的内容来取得。
指令寄存器(IR)

指令寄存器(Instruction Register,IR),用来保存当前欲执行的指令。
当执行一条指令时,首先把该指令从主存读取到数据寄存器中,然后再传送至指令寄存器。
指令包括操作码和地址码两个字段,为了执行指令,必须对操作码进行测试,识别出所要求的操作,指令译码器 就是完成这项工作的。指令译码器对指令寄存器的操作码部分进行译码,以产生指令所要求操作的控制电位,并将其送到微操作控制线路上,在时序部件定时信号的作用下,产生具体的操作控制信号。
指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码,即可向操作控制器发出具体操作的特定信号。
MAR、MDR

另外寄存器不只存在CPU中,存储器中也存在寄存器,比如MAR、MDR

[*]MAR:存储器地址寄存器,用于存放将被访问的存储单元的地址。作用和AR类似
[*]MDR:存储器数据寄存器,用于存放欲存入存储器中的数据或最近从存储器中读出的数据。作用和DR类似
其中MAR位数反映储存单元的个数,即最多能表示多少个不同的状态;MDR位数=储存字长=每个储存单元的大小
小结

将上面各个寄存器组合起来,我们可以画出一幅计算机更细化的组成图:
https://img2022.cnblogs.com/blog/2795476/202210/2795476-20221031222100704-2039467596.png
当存储器开始读操作的时候,存储器将指定地址单元内的指令读至MDR,再由MDR送至IR。
IR将指令中的操作码送到CU中,用来分析指令并发出各种微操作命令序列。再加指令中地址码送到MAR,用来去操作数
在CPU内部必须给ALU提供数据,因此ALU必须可直接访问MDR,ALU的外围还可以有另一些寄存器AC、MQ、X,这些寄存器用于ALU的输入、输出以及用于和MDR及用户可见寄存器交换数据。
在CPU的控制和状态寄存器中,还有用来存放程序状态字PSW的寄存器,该寄存器用来存放条件码和其他状态信息。在具有中断系统的机器中还有中断标记寄存器等等。
参考资料:
计算机组成原理(第2版)-唐朔飞
https://blog.csdn.net/weibo1230123/article/details/83106141
本篇文章到这里就结束啦,很感谢你能看到最后,如果觉得文章对你有帮助,别忘记关注我!更多精彩的文章
https://img2022.cnblogs.com/blog/2795476/202210/2795476-20221031222139907-1243439499.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 聊聊计算机中的寄存器