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 包含 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