系统块指令集¶
系统块(也称为辅助块)是灵犀指令集中非常重要的一种块指令,它负责更新和维护整个系统的状态。
目前系统块指令的操作分为:
- 配置系统寄存器,读写系统寄存器
- 配置和读取块状态 BSTATE
- 配置内存系统,MMU,TLB,Cache等
- 特权级转换,从用户态到特权级的相互转换
- 实现原子操作,单个指令的原子操作或者整个块指令定义为原子的
- 实现核间通信,GQM.PUSH、GQM.POP等
- 通用运算和访存操作
块类型特征¶
系统块有如下特征:
- 系统块由
BSTART.SYS指令开启。 - 系统块只支持一体块形式。
- 系统块只支持Fall跳转方式,具体参考跳转方式。
- 系统块内不支持块内跳转。
- 系统块内允许访问全局寄存器GGPR,系统寄存器SSR和内存等全局状态。不允许访问Tile寄存器。
块内状态BSTATE¶
系统块的BSTATE中包含以下三部分内容:
- BARG寄存器:块内的控制参数寄存器,用于条件跳转或执行参数的保存和处理。
- TPC寄存器:记录块内正在执行的指令的地址(块内单一TPC)。
- SGPR寄存器:包含8个通用标量寄存器,用于保证块内数据流高效传递以及提供块内临时数据的载体。
SYS块的BSTATE以BARG承载系统块的调度与执行属性,其中BPC与BlockType用于标识块入口与类型,AQ/RL用于约束系统动作的顺序与可见性;不支持块级跳转控制字段(无BPCN、Type、Taken)。块体以单一TPC推进微指令执行流程。并提供8个64位SGPR作为通用标量寄存器,用于系统例程中的参数暂存、指针与索引计算、标志与轻量状态记录。三者协同保证系统块的可控执行与稳定的内部数据通道。
汇编示例¶
系统块使用一体块形式进行定义,汇编示例如下:
BSTART.SYS fall
... # 其他块头指令,根据需要补充
ssrget TP, ->t # 块体中第一条微指令
ldi [t#1, 0], ->t
ldi [t#1, 8], ->t
mul t#2, t#1, ->a1
...
ic.iva
...
应用¶
系统块适合发起系统调用,休眠等待中断或外部事件以及Cache更新等复杂操作。