什么是计算机体系结构中的受保护执行?
守卫处决是一种消除手段;至少部分是条件分支。这个想法是在架构中引入条件操作指令并使用它们来替换条件分支。条件操作指令称为保护指令。受保护的指令由两部分组成,称为保护的条件部分和作为传统指令的操作部分。例如,它可以表示为以下形式-
(guard) instruction
受保护指令的执行取决于以下条件:如果指定的保护为真,则执行相关指令;如果守卫结果是假的,则指令的行为就像一个NOP。
例如,α架构提供了条件移动指令,这些指令是受保护的指令,具有以下语法和语义(DEC,1992)-
cmovxx ra.rq, rb.rq, rc.wq cmovxx ra.rq, #b.ib, rc.wq
在哪里
xx表示条件
ra.rq是存储在寄存器ra中的整数、只读64位操作数
rb.rq是一个整数,只读的64位操作数,存储在寄存器rb中
rc.wq是存储在寄存器rc中的整数、只写64位操作数
#b.ib是一个整数64位文字
该指令操作如下。注册ra被测试。
指令助记符指定受保护执行的条件-
cmoveq//cmove如果寄存器ra的内容等于0
cmovge//cmove如果寄存器ra的内容大于或等于0
cmovgt//cmove如果寄存器ra的内容大于零
cmovlbc//如果寄存器ra的低位清零则cmov
cmovlbs//如果设置了寄存器ra的低位,则cmovlbs
cmovle//如果寄存器ra的内容小于或等于0,则cmov
cmovlt//cmove如果寄存器ra的内容小于零
cmovne//cmove如果寄存器ra的内容不等于0
通过使用具有在相应条件分支中指定的相反条件的受保护指令,可以消除前向条件分支。例如,考虑代码序列
beq ra, label //if(ra)=0分支到“标签” or rb, rb, rc // else move (rb) into rc
SPARCV9(1994)也提供了一些类似的条件移动指令。HPPrecisionArchitecture(1985)以比DECα更全面的方式引入了受保护的指令。这里,所有整数操作指令都是以下形式的保护指令
opcode.cond operands
给定的条件(cond)与操作的结果有关。如果指定条件为真,例如结果为正,则以下指令无效。
有两种类型的保护执行,例如完全保护和限制保护。在完全保护中,假定所有指令都受到保护,而在受限保护中,只有操作指令(ALU指令)具有保护形式。
这种受限制的保护形式考虑到这样一个事实:在现有体系结构中,指令代码空间通常被压缩,并且在大多数情况下,只有少数额外位可用于指定保护条件。
评论列表