BSTOP¶
块结束指令(BSTOP)不仅仅是标识前一个块指令的结束,它还有一个重要作用,即 提交当前块的计算结果,并且 读取并处理BARG寄存器中的块提交信息。因此,它在程序执行的最后阶段,确保所有的计算都被正确提交和记录。
主要功能¶
- 提交块指令:当遇到 BSTOP 指令时,当前块内的所有计算结果会被提交到全局寄存器或下一个执行的块中。块的提交操作意味着块内所有指令的计算都已经完成,所有状态都可以更新。
- 读取BARG寄存器:在提交块时,处理器会读取 BARG(块内控制参数寄存器)中的信息,根据BARG的状态执行必要的操作。例如,BARG中可能存储条件跳转信息、寄存器继承属性、块结束后的陷出处理等信息。
汇编语法¶
压缩版本: C.BSTOP 标准版本: BSTOP 超长版本: L.BSTOP
编码格式¶
- 16bit编码
- 32bit编码
如以上两图所示,16bit编码为全0 或 32bit编码最低位为1,其余位都为0作为块结束指令BSTOP。
- 64bit编码
BSTOP与BARG的交互¶
当 BSTOP 指令执行时,处理器会读取 BARG寄存器,并根据以下域的状态做出响应:
| BARG域名 | 作用 |
|---|---|
| TRAP | 提交块后是否产生异常或陷出处理 |
| TAKEN | 条件跳转标识,指示跳转是否生效 |
| TGT | 跳转目标地址 |
- 提交块指令:处理器会根据 BARG 的状态进行处理,并提交当前块的计算结果。
- 跳转处理:通过读取 BARG.TAKEN 和 BARG.TGT,处理器决定跳转到下一个块的目标地址。如果是条件跳转且条件成立,处理器将跳转到 BARG.TGT 指示的目标地址;否则,继续顺延执行。
汇编示例¶
BSTART.STD FALL ; 开启一个标量块,顺延到下一个块
inst0 ; 块内部的指令
...
instn ; 最后一条微指令
C.BSTART.SYS FALL ; 开启下一个系统块,顺延
inst0 ; 新块的第一条指令
...
instm ; 最后一条微指令
BSTOP ; 程序的最后添加BSTOP,提交最后一个块并处理BARG寄存器。
BSTOP指令的作用总结¶
- 块提交:提交当前块的计算结果,将块指令的执行状态和结果写入全局寄存器。
- 读取BARG寄存器:根据BARG中的条件和跳转状态,处理跳转或块的继承属性。
- 释放私有状态:在块指令提交后,释放块内私有状态,如相对索引寄存器和临时数据等。
- 结束标识:标识当前块指令的结束,并确保所有块执行的结果被正确提交到硬件状态中。