CPU内部结构窥探·「5」--ARMv8寄存器组介绍

ARMv8 核内部寄存器组详解

通常,靠近PE(Process Element)的内存具有非常低的延迟,但在大小上受到限制,并且实现成本昂贵,除了PE之外,通常实现更大的内存块,但这会增加延迟,为了优化整体性能,Armv8内存系统可以在层次化内存系统中包含多个缓存级别,从而利用大小和延迟之间的权衡。
下图体现了一个典型的ARMv8架构处理器的多级存储系统:
在这里插入图片描述
而寄存器组是离PE最近的存储单元,其能够相助提高cpu效率,体现在以下几个方面:

  • 高速访问:寄存器是CPU内部最快的存储单元,比主存(RAM)和缓存(Cache)访问速度更快,通常在一个时钟周期内完成读写操作。
  • 减少等待时间:频繁使用寄存器进行数据存储和操作,减少了对主存的访问,避免了长时间的等待,从而提高了处理速度。
  • 简化指令执行:寄存器直接存储操作数和计算结果,使指令执行更简便,不需要频繁从内存读取数据,简化了指令的执行流程。
  • 并行处理:寄存器支持多条指令的并行执行,通过寄存器重命名技术,避免数据相关性问题,提高指令级并行性和处理器的整体吞吐量。
  • 减少总线冲突:使用寄存器操作数据可以减少总线访问频率,降低总线冲突,提高系统的整体性能和响应速度。

寄存器概述

ARMv8架构中的寄存器组设计更加复杂和多样化,包括以下几类主要寄存器:

  1. 通用寄存器(General-purpose Registers)
  2. 状态寄存器(Status Registers)
  3. 专用寄存器(Special-purpose Registers)
  4. 系统寄存器(System Registers)

通用寄存器

ARMv8架构定义了31个64位的通用寄存器,编号为X0到X30。其中,X0到X28是常规数据操作寄存器,X29是帧指针寄存器(FP,Frame Pointer),X30是链接寄存器(LR,Link Register)。此外,XZR寄存器用于表示零寄存器,当作为目标寄存器时,结果被丢弃。

在32位兼容模式下,这些寄存器也可以作为32位寄存器使用,编号为W0到W30。
在这里插入图片描述

状态寄存器

ARMv8处理器有多个状态寄存器,用于存储处理器的状态信息。主要的状态寄存器包括:

  1. PSTATE(Processor State Register):处理器状态寄存器,包含条件标志、控制位和当前处理模式。
  2. NZCV(Negative, Zero, Carry, Overflow)标志位:这些标志位存储在PSTATE寄存器中,用于反映算术和逻辑操作的结果。
PSTATE的主要字段
  • N(Negative):负数标志位,结果为负数时置1。
  • Z(Zero):零标志位,结果为零时置1。
  • C(Carry):进位标志位,算术运算发生进位时置1。
  • V(Overflow):溢出标志位,算术运算发生溢出时置1。
  • EL(Exception Level):异常级别,指示当前的异常处理级别。
  • SP(Stack Pointer Select):栈指针选择,指示当前使用的栈指针(SP_EL0或SP_ELx)。
    在这里插入图片描述

专用寄存器

ARMv8架构中还有一些专用寄存器,用于特定功能和操作。主要的专用寄存器包括:

  1. SP_ELx(Stack Pointer Registers for Exception Levels):每个异常级别都有独立的栈指针寄存器(SP_EL0, SP_EL1, SP_EL2, SP_EL3)。
  2. ELR_ELx(Exception Link Registers for Exception Levels):每个异常级别都有独立的异常链接寄存器(ELR_EL1, ELR_EL2, ELR_EL3),用于存储异常返回地址。
  3. SPSR_ELx(Saved Program Status Registers for Exception Levels):每个异常级别都有独立的保存程序状态寄存器(SPSR_EL1, SPSR_EL2, SPSR_EL3),用于保存异常发生时的PSTATE值。
    在这里插入图片描述

系统寄存器

系统寄存器用于控制和管理CPU的操作模式、特权级别、内存管理、中断处理等关键系统功能。主要的系统寄存器包括:

  1. SCTLR_ELx(System Control Register):系统控制寄存器,用于控制和配置处理器的系统级特性,如内存保护、缓存策略等。
  2. TTBR0_ELx(Translation Table Base Register):转换表基地址寄存器,用于定义页表的基地址,支持内存地址转换和虚拟内存管理。
  3. MAIR_ELx(Memory Attribute Indirection Register):内存属性指示寄存器,用于定义不同内存区域的属性,如缓存策略、访问权限等。
  4. TCR_ELx(Translation Control Register):转换控制寄存器,用于控制地址转换的行为和特性,如地址范围、页大小等。
  5. ESR_ELx(Exception Syndrome Register):异常综合症寄存器,用于存储异常发生时的状态信息,帮助调试和错误处理。

这些系统寄存器根据不同的异常级别(EL0, EL1, EL2, EL3)有不同的实例,如SCTLR_EL1, SCTLR_EL2等,分别对应用户态、内核态、虚拟化和安全态的控制。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬大大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值