GGPR¶
说明¶
第一层架构状态中的通用寄存器称为GGPR(Global General Purpose Register),是用于跨块指令数据传递的全局寄存器集合。这些寄存器在块指令之间共享,是全局数据存取和通信的媒介。
第一层的通用寄存器命名为R[n],n取值0, 1, 2, 3, 4, ..., 23。这组寄存器的位宽统一为64bit。
通用寄存器组的主要用途包括:
- 跨块传递数据:每个块指令可以直接读取或写入全局寄存器,用于在不同块指令之间传递数据,避免了频繁的内存访问。
- 数据存储优化:长生命周期的数据(如全局变量、函数参数)可以通过全局寄存器保持有效性,编译器会优先将这些数据分配到GGPR中,以减少不必要的内存读写开销。
- 输入输出操作:块指令的输入和输出可以通过GGPR传递,支持指令的并行化执行,提升硬件执行效率。
其中,通用寄存器采用标准的ABI接口进行命名和使用,包含零寄存器、栈指针寄存器、函数参数寄存器、子函数寄存器以及父函数保存寄存器等。各寄存器的具体用途如下:
| 寄存器名 | 别名 | 解释 | 寄存器名 | 别名 | 解释 |
|---|---|---|---|---|---|
| R0 | Zero | 零寄存器,始终为0 | R12 | S1 | 子函数寄存器1 |
| R1 | SP | 栈指针寄存器 | R13 | S2 | 子函数寄存器2 |
| R2 | A0 | 函数参数0 | R14 | S3 | 子函数寄存器3 |
| R3 | A1 | 函数参数1 | R15 | S4 | 子函数寄存器4 |
| R4 | A2 | 函数参数2 | R16 | S5 | 子函数寄存器5 |
| R5 | A3 | 函数参数3 | R17 | S6 | 子函数寄存器6 |
| R6 | A4 | 函数参数4 | R18 | S7 | 子函数寄存器7 |
| R7 | A5 | 函数参数5 | R19 | S8 | 子函数寄存器8 |
| R8 | A6 | 函数参数6 | R20 | X0 | 父函数保存寄存器0 |
| R9 | A7 | 函数参数7 | R21 | X1 | 父函数保存寄存器1 |
| R10 | RA | 返回地址寄存器 | R22 | X2 | 父函数保存寄存器2 |
| R11 | FP(S0) | 栈帧寄存器/子函数寄存器0 | R23 | X3 | 父函数保存寄存器3 |
这些寄存器的功能类似于传统架构中的寄存器组,但在灵犀指令集中,它们被优化用于块指令的跨块数据传递,确保在块之间的跳转和函数调用中高效管理数据。
访问属性¶
这组寄存器都是可读可写的(RW)。