assembly – 分支指令数据是否依赖?
发布时间:2020-12-14 04:54:27 所属栏目:百科 来源:网络整理
导读:我有一个函数指令序列,后面跟着两个指令 Loop: . . . .SUB R20,R4,RxBNZ R20,Loop 是BNZ,分支不是零数据依赖于SUB指令吗?还是反依赖? 解决方法 从理论上讲,分支指令和早期指令(本例中为SUB)之间存在数据依赖关系,它修改了分支将检查跳转的寄存器,但在许多
我有一个函数指令序列,后面跟着两个指令
Loop: . . . . SUB R20,R4,Rx BNZ R20,Loop 是BNZ,分支不是零数据依赖于SUB指令吗?还是反依赖? 解决方法
从理论上讲,分支指令和早期指令(本例中为SUB)之间存在数据依赖关系,它修改了分支将检查跳转的寄存器,但在许多现代架构中,这种依赖关系不会传播到以下指令,与其他数据依赖性不同,由于分支预测.
也就是说,在具有预测的体系结构上,数据依赖性不太可能实际上导致分支在SUB之后生效 – 通常它将在SUB执行之前生效(即跳转或不跳转),并且仅在结果之后如果猜测不正确,将检查猜测的SUB是否可用,并且自分支以来的所有推测执行都将被回滚. 因此,在数据依赖于其条件和目标时,灰色区域中存在跳跃.从最严格的意义上讲,它们是依赖的,但是当预测工作时(通常是预测的),它们的表现并不像那样.它有点像xor r1,r1,r1或foo32bits>>的灰色区域. 32存在于:通过严格的定义,这些指令取决于它们的输入,但在这些特定情况下,答案总是相同(0)并且一些CPU可能识别这一点并且不应用通常的依赖性规则. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |