📜  RISC CPU中的寄存器组织

📅  最后修改于: 2021-09-27 22:52:32             🧑  作者: Mango

RISC 处理器:
它们是使用小型指令集和简单寻址模式的处理器,因此它们的指令可以在 CPU 内更快地执行,而对内存的引用更少。这种类型的处理器被归类为精简指令集计算机(RISC)。

详细了解RISC处理器及其特性,请参考这个
RISC 处理器的其他一些特性是——

  • 它们包含大量寄存器。
  • 他们使用重叠的寄存器窗口来加速过程调用和返回。
  • 他们有一个高效的指令流水线。
  • 它们具有编译器支持,可以将高级语言程序有效地翻译成机器语言程序。

RISC指令:

  • 典型的 RISC 处理器指令集主要包括用于内存和 CPU 之间通信的 LOAD 和 STORE 指令。
  • 所有其他指令都在 CPU 的寄存器内执行,而不涉及内存。
  • RISC CPU 的程序包含 LOAD 和 STORE 指令,它们具有一个内存和一个 CPU 寄存器地址,计算指令(ADD、SUB MUL 等)具有三个地址,并且这三个都是指处理器寄存器。

例如 :
计算 X = (A*B) + (C*D) 的程序,这里 A、B、C、D 是包含四个数字的内存位置,X 是包含该表达式结果的内存位置。

Instruction 

comment 

LOAD R1, A

LOAD R2, B

LOAD R3, C

LOAD R4, D

MUL R1, R1, R2

MUL R3, R3 , R4

ADD R1, R1, R3 

STORE X, R1 

; Processor register R1 is loaded with content of the memory location A.

; Processor register R2 is loaded with content of the memory location B.

; Processor register R3 is loaded with content of the memory location C.

; Processor register R4 is loaded with content of the memory location D.

; Multiplication of the contents of the R1 and R2 register and the result is stored in the R1 register (i.e. A*B is performed).

; Multiplication of the contents of the R3 and R4 register and the result is stored in the R1 register (i.e. C*D is performed).

; Addition of contents of register R1 and R3 and the result is stored in the R1 register(i.e. (A*B) + (C*D)).

; Content of R1 register is stored in memory location X. 

在 RISC CPU 中注册组织:

  • 一些RISC CPU的特点是使用重叠的寄存器窗口,为被调用过程提供参数传递,并将结果存储到调用过程。
  • 对于每个过程调用,新的寄存器窗口是从新过程使用的寄存器文件中分配的。
  • 每个过程调用通过增加一个指针来激活新的寄存器窗口,并且返回语句减少导致激活前一个窗口的指针。
  • 相邻过程的窗口具有重叠的寄存器,这些寄存器被共享以提供参数传递和结果存储。

RISC CPU的重叠寄存器窗口

  • 在这个组织中,RISC CPU 包含 74 个寄存器。寄存器 R0 到 R9 是全局寄存器,包含所有过程通用的参数。
  • 其余寄存器(R10 至 R73)分为四个窗口,分别包含过程 A、B、C 和 D。
  • 每个窗口包含 10 个本地寄存器和两组 6 个连续窗口通用的寄存器。局部寄存器包含局部变量,公共重叠寄存器有助于在相邻过程之间传递参数,而无需实际移动数据。
  • 一次激活注册窗口之一。调用程序的高位寄存器与被调用程序的低位寄存器重叠,因此参数很容易从调用程序传递到被调用程序。

例如

  • 过程C 调用过程D。因此,寄存器R58 到R63 对过程C 和D 都是通用的。因此,过程C 将过程D 的参数存储在这些寄存器中。过程 D 使用寄存器 R64 到 R73 来存储局部变量。
  • 当过程 B 在执行完计算后返回时,寄存器(R26 到 R31)的结果被传送回窗口 A。
  • 寄存器 R10 到 R15 对过程 A 和 D 是通用的,四个窗口也有一个循环组织。
  • 由于 R0 到 R9(即 10 个寄存器)可用于所有程序。因此,一个过程在它处于活动状态时包含 32 个寄存器(其中包括 10 个全局寄存器、10 个局部寄存器、6 个低重叠寄存器和 6 个高重叠寄存器)。
  • 注册窗口的组织有如下关系
  • 全局寄存器数 = g
  • 每个窗口中存在的本地寄存器数 = l
  • 两个相邻窗口共用的寄存器数 = c
  • 窗口数 = w

然后每个窗口可用的寄存器数量由下式计算

Window size = l+2c+g

处理器所需的寄存器总数为

Register file = (l + c)w+ g

例如 :

  • 在上图中我们有 g=10,l=10,c=6,w=4,那么
  • 窗口大小 = 10+2×6+4 = 36 和寄存器文件大小 = (10+6)×4 + 10 = 74