寄存器
CPU寄存器是CPU内部的高速存储区域,用于临时存储数据和指令。寄存器是CPU的重要组成部分,用于提高程序的执行效率。它们比主存储器更快,可以使得CPU更有效地处理数据和执行指令。
寄存器可以分为不同类型,下面列出部分ARMv8寄存器:
- 通用寄存器:ARMv8架构有大量的通用寄存器,包括x0 ~ x30(在AArch64架构中)和w0~w30(在AArch32架构中),这些寄存器是32位或64位宽,用于存储数据和参与运算。
- 状态寄存器:ARMv8使用PSTATE寄存器表示当前处理器状态,其中包含了一些状态标志位,如处理器模式、异常标志等。
- 特殊寄存器:ARMv8有一些特殊的寄存器,如SP(stack pointer register)和PC(program counter),分别用于指向当前栈的指针和保存当前指令的地址。
- 系统寄存器:ARMv8还有很多系统寄存器,用于完成对处理器不同功能的配置。例如,在ARMv7中定义的cp15寄存器,在ARMv8中仍然存在并被重命名为CP15_64。此外,还有一些特殊目的寄存器、VMSA(虚拟内存架构)特殊寄存器、ID寄存器、性能监控寄存器、DEBUG寄存器、RAS寄存器、通用定时器寄存器、Cache维护相关寄存器、地址转换寄存器和TLB维护寄存器等。
- 浮点寄存器:ARMv8架构支持浮点运算,有32位和64位的浮点寄存器,用于存储浮点数和参与浮点运算。
- 虚拟寄存器:ARMv8架构支持虚拟化技术,有一些虚拟寄存器用于虚拟化操作。
- 调试寄存器:ARMv8架构有一些调试寄存器,用于调试程序和检查处理器状态。
- 内存管理寄存器:ARMv8架构有一些内存管理寄存器,用于管理内存和缓存。
- 电源管理寄存器:ARMv8架构有一些电源管理寄存器,用于控制处理器的功耗和节能模式。
CPU缓存
CPU缓存是位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度却比内存要快得多。CPU高速缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾。因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可先从缓存中调用,从而加快读取速度。
CPU缓存的结构和大小对CPU速度的影响非常大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。但是从CPU芯片面积和成本的因素来考虑,缓存都很小。
CPU缓存一般分为三级:CPU一级缓存、二级缓存、三级缓存等不同级别的缓存也各有其特点和用途。例如,一级缓存主要存储指令和特定于数据的缓存,二级缓存则用于CPU和内存之间的数据交换,三级缓存通常用于更低速率的存储器,例如硬盘或网络连接。
飞腾D2000/8 CPU集成了8个FTC663核:
一级缓存:不详
二级缓存:每个 Cluster 内有 2MB,共 8MB。
三级缓存:分为8个Bank,共4MB。
内存
用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。内存是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。
寄存器、CPU缓存、内存之间的关系
执行引擎:面向寄存器进行操作,它负责执行指令和处理数据。在执行指令时,执行引擎需要从寄存器中读取数据,或者把数据写入寄存器。
当执行引擎执行时,会从寄存器中读取数据,寄存器会从CPU缓存中读取,或者从内存中读取。如下示意图:
注:学习中,欢迎指正