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

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

3天内不再提示

寄存器由什么组成

工程师 来源:未知 作者:姚远香 2018-08-21 18:33 次阅读

寄存器概述

寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,存器有累加器(ACC)。

寄存器的原理组成

寄存器的基本单元是D触发器,按照其用途分为基本寄存器和移位寄存器。

基本寄存器是由D触发器组成,在CP脉冲作用下,每个D触发器能够寄存一位二进制码。在D=0时,寄存器储存为0,在D=1时,寄存器储存为1。

在低电平为0、高电平为1时,需将信号源与D间连接一反相器,这样就可以完成对数据的储存。

移位寄存器按照移位方向可以分为单向移位寄存器和双向移位寄存器。

单向移位寄存器是由多个D触发器串接而成。在串口Di输入需要储存的数据,触发器FF0就能够储存当前需要储存数据,在CP发出一次时钟控制脉冲时,串口Di同时输入第二个需要储存是的数据,而第一个数据则储存到触发器FF1中。

双向移位寄存器排列,调换连接端顺序,可以控制寄存器向左移位,增加控制电路可以使寄存器右移,这样构成双向移位寄存器。

ARM寄存器组成

在ARM状态,16个通用寄存器(R0-R15)和一个状态寄存器在任意时刻都可见。在特权(非用户)模式下,将切换到指定模式的分组(banked)寄存器。(PS.分组寄存器的概念下文可见)

ARM状态时寄存器被设为包含16个直接可以访问的寄存器:R0到R15。除了R15,其他全部寄存器都为通用寄存器,如可能用于保存数据或地址值。除此之外,还有第17个寄存器用于存储状态信息

R8~R14、SPSR寄存器则被切换到各个模式下的私有寄存器组上,不同的模式下可以访问相应的私有寄存器。表1显示了在每种模式下,哪些寄存器是有效的(阴影部分的寄存器都是私有寄存器)。

表1 ARM状态下的寄存器组织结构

从表1中我们可以看出:

☆ R0~R7、R15、CPSR寄存器组在任何模式下都是共用的,可访问的;

☆ R8~R12寄存器组在快中断模式下(fiq)对应一套私有寄存器组R8_fiq~R12_fiq,在其他模式下共用另一套寄存器组;

☆ R13、R14寄存器在用户(user)和系统(sys)模式下共用一套;其他模式(管理(svc)、中止(abt)、未定义(und)、中断(irq)、快中断(fiq)模式)下都具有两个私有寄存器R13和R14。这就使得这些模式中的每一种模式都具有各自的堆栈寄存器指针R13和链接寄存器R14,分别用于堆栈处理和异常退出;

☆ SPSR寄存器可用于保存CPSR的值,在用户和系统模式下不能访问,在其他模式下都有私有的SPSR寄存器。

表1中第二列列举了寄存器在汇编语言中的名称,其中括号中的内容是别称。下面我们对这些寄存器的功能进行介绍。

1、一般通用寄存器 R0~R12

寄存器R0~R12为保存数据或地址值的一般通用寄存器。其中寄存器R0~R7为未分组的寄存器,R8~R12为分组寄存器。

未分组的寄存器意味着对于任何处理器模式,他们中的每一个都对应于相同的32位物理寄存器。他们是完全通用的寄存器,

分组寄存器意味着同一个寄存器名对应多个物理寄存器,具体所对应的物理寄存器取决于当前的处理器模式。参照表1,寄存器R8~R12有两个分组物理寄存器。一组用于除FIQ模式之外的所有寄存器模式(R8~R12),另一组用于FIQ模式(R8_fiq~R12_fiq)。、

寄存器R8~R12在ARM体系结构中没有特定的用途。不过对于那些只使用R8~R14来说就足够处理的简单的中断,FIQ所单独使用的这些寄存器可实现快速的中断处理。

2、堆栈指针 R13

寄存器R13(也称为堆栈指针或SP)有6个分组的物理寄存器,见表2-1。一个用于用户和系统模式,其余5个分别用于5种异常模式。

寄存器R13通常作为堆栈指针SP。在ARM指令集中,R13大都用在对各个模式下的堆栈操作。每个异常模式都具备私有的R13寄存器,它通常指向由异常模式所专用的堆栈。在入口处,通常将寄存器值保存到这个堆栈。在模式转换前将当前寄存器的值保存到堆栈中,然后从将要切换的模式堆栈中将这些值从堆栈重装到已切换的模式寄存器中,这种处理方法可确保异常发生时的程序状态不会被破坏。

3、链接寄存器 R14

寄存器R14(也称为链接寄存器或LR)有6个分组的物理寄存器,见表2-1。一个用于用户和系统模式,其余5个分别用于5种异常模式,对应的私有寄存器有R14_svc,R14_irq,R14_fiq,R14_abt和R14_und。寄存器R14有三种用途:

☆ 当发生异常时,它被设置为该异常返回地址;

☆ 在执行分支和链接(BL)指令时,它用于保存子程序的返回地址;

☆ 而在其他时候,可以作为一个通用寄存器来对待。

4、程序计数器 R15

寄存器R15(也称为程序计数器或PC)总是用于特殊用途,它总是指向下一条要读取指令的地址。你可以把R15当作通用寄存器使用,但使用时还有与指令有关的限制或特殊情况。如果R15使用的方式超过了这些限制,那么指令将是不可预测的。

由于ARM7采用3级流水线结构,在ARM状态下,读取R15的值是当前执行指令地址 + 8。ARM指令以字为单位,读取R15结果的bit[1:0]总是为0b00。

对R15进行写时,如果这条写指令没有超过对R15使用的限制,那么写入R15的正常结果值被当成一个指令地址,程序会从这个地址处继续执行(相当于执行无条件跳转指令)。因为ARM指令以字为边界,所以写入R15值的bit[1:0]通常为0b00。

5、CPSR和SPSR

所有模式共享一个程序状态寄存器CPSR。在异常模式中,程序状态保存寄存器SPSR可以被访问,每种异常具有自己私有的SPSR。在进入异常时,它保存CPSR的当前值;在异常退出时,可通过它(SPSR)恢复CPSR。

寄存器的用途

1.可将寄存器内的数据执行算术及逻辑运算。

2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。

3.可以用来读写数据到电脑的周边设备。

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

    关注

    30

    文章

    5020

    浏览量

    117630
  • D触发器
    +关注

    关注

    2

    文章

    147

    浏览量

    47360
收藏 人收藏

    评论

    相关推荐

    干货满满:ARM的内核寄存器讲解

    内核寄存器与外设寄存器: 内核寄存器与外设寄存器是完全不同的概念。内核寄存器是指 CPU 内部的寄存器
    发表于 04-17 11:47 69次阅读
    干货满满:ARM的内核<b class='flag-5'>寄存器</b>讲解

    AFE模拟前端寄存器读取操作

    AFE模拟前端寄存器读取操作是电子系统设计和调试中不可或缺的一环。寄存器作为AFE模拟前端中的重要组成部分,存储着各种配置参数和状态信息,通过读取这些寄存器,工程师可以了解AFE的工作
    的头像 发表于 03-15 15:50 150次阅读

    CPU的6个主要寄存器

    CPU寄存器是中央处理器内的组成部分,是有限存贮容量的高速存贮部件。寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制
    的头像 发表于 02-03 15:15 1078次阅读

    寄存器的主要组成部分及分类

    通用寄存器是计算机处理器中最常见的寄存器类型之一。它们通常用于存储临时数据、中间结果和计算过程中的变量。通用寄存器具有广泛的用途,可以存储不同类型的数据(如整数、小数、地址等),并被处理器的指令集使用。
    的头像 发表于 02-03 15:08 651次阅读

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是一种用于在数字电路中实现数据移位操作的基本电路元件。它由多个触发器以及相关控制电路组成,具有存储、接受和移动数据的功能。移位寄存器可以分为两种类型:串行移位寄存器和并行移位
    的头像 发表于 01-18 10:52 1353次阅读

    UVM寄存器模型的常规方法有哪些呢?

    在应用寄存器模型时, 除了利用它的寄存器信息, 还可以利用它来跟踪寄存器的值。
    的头像 发表于 11-25 09:27 718次阅读
    UVM<b class='flag-5'>寄存器</b>模型的常规方法有哪些呢?

    芯片DFX:Coresight的寄存器一览

    coresight对于每个coresight组件,规定了一些寄存器,这些寄存器的偏移是固定的,这些寄存器,是必须存在的。但是有的,可以不实现该寄存器功能。
    的头像 发表于 11-02 11:45 587次阅读
    芯片DFX:Coresight的<b class='flag-5'>寄存器</b>一览

    CPSR寄存器和APSR寄存器组成

    程序状态寄存器的作用就是反映处理器的状态信息。在程序运行期间我们可以通过查看程序状态寄存器的状态位来进行程序的分支跳转处理,或者我们可以设置程序状态寄存器的模式位来改变处理器的运行模式,或者我们可以设置程序状态
    的头像 发表于 10-20 11:38 1745次阅读
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的<b class='flag-5'>组成</b>

    什么是移位寄存器?数字电路中的寄存器类型有哪些呢?

    移位寄存器是一种时序逻辑电路,能够存储和传输数据。它们由触发器组成,这些触发器的连接方式使得一个触发器的输出可以作为另一个触发器的输入,具体取决于所创建的移位寄存器的类型。
    的头像 发表于 09-20 10:44 3766次阅读
    什么是移位<b class='flag-5'>寄存器</b>?数字电路中的<b class='flag-5'>寄存器</b>类型有哪些呢?

    Verilog设计寄存器

    现代逻辑设计中,时序逻辑设计是核心,而寄存器又是时序逻辑的基础,下面将介绍几种常见的寄存器的Verilog设计代码供初学者进行学习理解。
    的头像 发表于 07-27 09:03 2067次阅读
    Verilog设计<b class='flag-5'>寄存器</b>

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

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

    寄存器是什么 掌握使用寄存器做设计需要注意的事项

    既然RTL是以寄存器行为为基础,那么就必须先了解寄存器是什么,并且掌握使用寄存器做设计需要注意的事项。
    的头像 发表于 07-13 15:38 850次阅读
    <b class='flag-5'>寄存器</b>是什么 掌握使用<b class='flag-5'>寄存器</b>做设计需要注意的事项

    RAL寄存器模型操作指南

    寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中寄存器的值。
    的头像 发表于 07-12 09:37 686次阅读
    RAL<b class='flag-5'>寄存器</b>模型操作指南

    以太网时钟的PPM频率偏差的解决方案(下)

    图是深度(depth)为8的异步FIFO的示意图。其中,0~7代表8个寄存器,他们组成了一个环。
    的头像 发表于 06-23 17:55 1567次阅读
    以太网时钟的PPM频率偏差的解决方案(下)

    RAL寄存器模型操作图鉴

    寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中寄存器的值。
    的头像 发表于 05-17 09:01 550次阅读
    RAL<b class='flag-5'>寄存器</b>模型操作图鉴