ARM技术论坛
直播中

emitter

5年用户 1884经验值
擅长:可编程逻辑 存储技术
私信 关注
[经验]

寄存器、累加器、暂存器,还是分不清?

什么是寄存器?
寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。
内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU 中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。

寄存器的用途
可将寄存器内的数据执行算术及逻辑运算。
存于寄存器内的地址可用来指向内存的某个位置,即寻址。
可以用来读写数据到电脑的周边设备。

什么是累加器
在中央处理器中,累加器 (accumulator) 是一种寄存器,用来储存计算产生的中间结果。如果没有像累加器这样的寄存器,那么在每次计算 (加法,乘法,移位等等) 后就必须要把结果写回到 内存,也许马上就得读回来。然而存取主存的速度是比从算术逻辑单元到有直接路径的累加器存取更慢。

累加器的作用
在运算器中,累加器是专门存放算术或逻辑运算的一个操作数和运算结果的寄存器。能进行加、减、读出、移位、循环移位和求补等操作。是运算器的主要部分。

在中央处理器 CPU 中,累加器(accumulator)是一种暂存器,它用来储存计算所产生的中间结果。如果没有像累加器这样的暂存器,那么在每次计算(加法,乘法,移位等等)后就必须要把结果写回到内存,然后再读回来。然而存取主内存的速度是比从数学逻辑单元(ALU)到有直接路径的累加器存取更慢。

在汇编语言程序中,累加器 —— AX 是一个非常重要的寄存器,但在程序中用它来保存临时数据时,最后将其转存到其它寄存器或内存单元中,以防止在其它指令的执行过程中使其中的数据被修改,从而得到不正确的结果,为程序的调试带来不必要的麻烦。
  
什么是暂存器
暂存器是用来暂存由数据总线或通用寄存的东西。它是中央处理器内的其中组成部分。 暂存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、 数据和位址 。

 
暂存器结构组成
在中央处理器的控制部件中,包含的暂存器有指令暂存器 (IR)和程式计数器 (PC)。在中央处理器的算术及逻辑部件中,包含的暂存器有累加器 (ACC)。
  
在电脑架构里,处理器中的暂存器是少量且速度快的电脑记忆体 ,借由提供快速共同地存取数值来加速电脑程式的执行——典型地说就是在已知时间点所作的之计算中间的数值。
  
暂存器是记忆体阶层中的最顶端,也是系统操作资料的最快速途径。 暂存器通常都是以他们可以保存的位元数量来估量的。暂存器现在都以暂存器阵列的方式来实作,但是他们也可能使用单独的正反器 、高速的核心记忆体 、 薄膜记忆体以及在数种机器上的其他方式来实作出来。
  
这个名词通常都用来意指由一个指令之输出或输入可以直接索引到的暂存器群组更适当的是称他们为“架构暂存器”。 例如, x86 指令及定义八个 32 位元暂存器的集合,但一个实作 x86 指令集的 CPU 可以包含比八个更多的暂存器。

暂存器的分类
资料暂存器 —— 用来储存整数数字(参考以下的浮点暂存器)。在某些简单 / 旧的 CPU,特别的资料暂存器是累加器 ,作为数学计算之用。
位址暂存器 —— 持有记忆体位址,以及用来存取记忆体 。在某些简单 / 旧的 CPU 里,特别的位址暂存器是索引暂存器 (可能出现一个或多个)。
通用目的暂存器 ( GPR s) —— 可以保存资料或位址两者,也就是说他们是结合资料 / 位址暂存器的功用。
浮点暂存器 ( FPR s) —— 用来储存浮点数字。
常数暂存器 —— 用来持有唯读的数值(例如 0、1、圆周率等等)。
向量暂存器 —— 用来储存由向量处理器执行 SIMD 指令所得到的资料。
特殊目的暂存器 —— 储存 CPU 内部的资料,像是程式计数器 (或称为指令指标),堆叠暂存器、以及状态暂存器 (或称微处理器状态字组)。
指令暂存器 ( 英语 :instruction register ) —— 储存现在正在被执行的指令
索引暂存器 ( 英语 :Index_register ) —— 是在程式执行实用来更改运算元位址之用。
  
累加器是寄存器吗?
累加器的符号是 A,顾名思义,其意思是加,但是其除了能做累加器外,(A)还能做寄存器。对于累加器,有一些特别的指令是专门针对累加器的,比如在 8086 中的 RL,以及 mul 等指令,而在 51 单片机中 RL 对应的寄存器只能是 A,总之 A 是个很特殊的寄存器,除了能做寄存器还能作累加器。
  
寄存器、累加器、暂存器有什么区别?
寄存器是 CPU 内部存储单元,即寄存器是 CPU 的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址等。
在 CPU 内部,累加器 (accumulator) 是一种寄存器,所有数学运算必须通过它进行传递和运算。


提到暂存器要从寄存器与存储器来讲:寄存器是 CPU 里的存储单元,与 CPU 离得近,所以 CPU 在运算时通常都会用寄存器当中转站。存储器是在 CPU 外部的存储器,例如,RAM、ROM。
  
暂存器顾名思义,就是暂时存放一定数量数据寄存器或存储器。例如,目标寄存器和结果寄存器都已有数据,需要第三个数据输入;编程时某一逻辑信号经常多次使用,中间结果需要暂时记忆。


读完这篇文章,你对寄存器、累加器、暂存器的区别清楚了吗?

回帖(1)

jiciwi

2020-10-14 09:04:59
看看
举报

更多回帖

发帖
×
20
完善资料,
赚取积分