0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

寄存器、累加器、暂存器傻傻分不清?

电子设计 来源:电子设计 作者:电子设计 2020-10-30 10:11 次阅读

什么是寄存器

寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。

内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问,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 外部的存储器,例如,RAMROM

暂存器顾名思义,就是暂时存放一定数量数据寄存器或存储器。例如,目标寄存器和结果寄存器都已有数据,需要第三个数据输入;编程时某一逻辑信号经常多次使用,中间结果需要暂时记忆。

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117746
  • 暂存器
    +关注

    关注

    0

    文章

    12

    浏览量

    7851
  • 累加器
    +关注

    关注

    0

    文章

    50

    浏览量

    9366
收藏 人收藏

    评论

    相关推荐

    什么是锁存器?数字IC设计中为什么要避免锁存器?

    数字IC设计里,常会出现锁存器,D触发器和寄存器,很多人(比如我)老傻傻分不清,搞不懂他们的区别是什么。
    的头像 发表于 02-17 15:04 660次阅读
    什么是锁存器?数字IC设计中为什么要避免锁存器?

    如何在执行HTXLBist之前返回SCU_RSTSTAT寄存器

    我需要在执行 HTXLBist 之前返回 SCU_RSTSTAT 寄存器,但我不清楚如何识别何时以及基于哪些位? 检查一下 RSTSTAT.LBPORST 和 RSTSTAT.LBTERM 是否等于零 t 然后返回寄存器就足够了
    发表于 01-29 06:36

    傻傻分不清?射频模拟信号源和矢量信号源的区别

    傻傻分不清?射频模拟信号源和矢量信号源的区别  射频模拟信号源和矢量信号源是测试和测量领域中常见的两种信号源。它们在信号产生原理、输出信号特性、使用场景等方面有很大区别。本文将从原理、特性和应用场
    的头像 发表于 01-19 15:54 722次阅读

    EPWM_EnableAcc是控制自动产生10个累加器然后自动关闭PWM输出吗?

    EPWM_EnableAcc(EPWM1, 0, 10, EPWM_IFA_ZERO_POINT); 这个是控制自动产生10个累加器然后自动关闭PWM输出吗? void
    发表于 01-15 07:31

    怎样利用ADuC7060的累加器和计数来计算平均值?如何配置?

    请问怎样利用ADuC7060的累加器和计数来计算平均值?如何配置?当ADC0RCR = ADC0RCV时会产生中断,那请问这是什么中断类型?在哪里配置? 请问“和ADC0RCR配合使用,可屏蔽主通道ADC中断,从而产生较低的中断速率”怎么理解?我怎样才能配合ADc0A
    发表于 01-15 06:18

    ade7758电能寄存器累加值和实际值之间是什么关系?

    我用的电能寄存器读后复位功能,如果我测的是C相电压和电流,经过时间t后寄存器CWATTHR的累加值是X,请问此时的实际电能值和X之间什么关系?(模拟输入范围是0.5V)
    发表于 12-27 08:28

    请问AENERGY、 RAENERGY、VAENERGY这几个寄存器到底功率寄存器还是能量寄存器

    反复看了几次datasheet ,现在都不明白AENERGY、 RAENERGY、VAENERGY 这几个寄存器是功率寄存器还是能量寄存器了。 Datasheet中: AENERGY
    发表于 12-27 07:16

    AD7858电能寄存器读取时如何设置成读不清零?

    AD7858电能寄存器读取时如何设置成读不清零,使能量就会累加上去
    发表于 12-26 07:36

    请问ADE9078用户电能寄存器在掉电以后会复位吗?

    ADE9078在计算电能的时候,通过内部电能寄存器累加到用户电能寄存器中,如果设置内部电能寄存器累加时间为10S,当
    发表于 12-26 06:34

    ADE7880的AWATTHR、BWATTHR、CWATTHR寄存器的值累加到最大值以后怎么办?

    ADE7880中的AWATTHR、BWATTHR、CWATTHR寄存器的值累加到最大值以后怎么办?是否可以清零,重新计算。
    发表于 12-26 06:23

    调试AD7124-8驱动时,对各寄存器配置之后再次读各寄存器的值,多个寄存器的值都为fffffffd是为什么?

    在调试AD7124-8驱动时,对各寄存器配置之后再次读各寄存器的值,多个寄存器的值都为fffffffd,这是为什么? 看参考程序里面对各寄存器配置代码device->regs
    发表于 12-07 08:29

    AD7173-8通道寄存器读写正常,配置寄存器和滤波寄存器不能写入(读出为复位值)是什么问题?

    AD7173-8通道寄存器读写正常,配置寄存器和滤波寄存器不能写入(读出为复位值),是什么问题?
    发表于 12-01 07:49

    NM1500 keil中无法使用PinView也无法看各个暂存器是为什么?

    NM1520 在 Keil 中 On-Line Debug下 1. 无法使用 PInView 观看个个Pin 2. 周边的暂存器也无法观看 3. 重设config0/1 (default) 外部
    发表于 09-06 06:40

    寄存器是什么?怎么操作寄存器点亮LED灯?

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。
    的头像 发表于 07-21 16:59 2980次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>点亮LED灯?

    数字设计笔试Verilog手撕代码—累加器

    实现累加器的加法器例化的个数。按照原文大佬的设计方法,因为数据连续且加法器的延迟周期是2,使用使用一个实现累加,会有一半的数据丢失。
    的头像 发表于 06-02 16:35 1800次阅读
    数字设计笔试Verilog手撕代码—<b class='flag-5'>累加器</b>