概述
Hexagon处理器基于比较指令在四个预测寄存器(P0-P3)中设置预测位来实现条件执行模型。这些预测位可以用来有条件的执行某些指令。
条件标量操作只可以对预测寄存器的最后一位进行操作,条件矢量操作则可以操作寄存器的多个位。
这些预测寄存器主要用于分支预测的控制。
标量预测
标量预测是一个八位的值,该值在条件指令中表示两种真值:
0xff表示为真
0x00表示假
Hexagon处理器提供了P0-P3四个八位的预测寄存器来控制矢量预测。这些寄存器通过预测驱动指令来设置,通过预测消费指令进行查看。
驱动标量预测
如下的指令可以驱动标量预测:
比较字节、半字、字、双字
比较单精度、双精度的浮点数
分类浮点值
比较比特掩码
边界检测
TLB匹配
保存条件
下图列出了预测驱动指令
比较指令(q)包括了一个变量,这个变量保存了一个存储在通用寄存器中的二进制值。
使用标量检测
基于标量预测,CPU可以判断条件从而执行正确的指令,或者有选择的将某个标量预测作为输入或输出。
使用标量预测值的条件指令只能查看预测值的最低一位。在最简单的情况下,该比特位将直接决定CPU将要执行的指令:
1 表明该指令可以被执行
0 表明该指令不能执行
如果条件指令在预测表达式中包括了操作!,那么比特值的逻辑取反将会作为预测的判断值。
条件指令在汇编指令中用指令前缀“if(pred_expr)”来表示,pred_expr表示预测表达式,例如:
if (P0) jump target // jump if P0 is true
if (!P2) R2 = R5 // assign register if !P2 is true
if (P1) R0 = sub(R2,R3) // conditionally subtract if P1
if (P2) R0 = memw(R2) // conditionally load word if P2
如下指令可以被用来做条件指令:
跳转
本文发布于:2024-02-04 05:24:52,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170700084252531.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |