穿越火线cop357:X86指令长短不齐,CPU如何译码?

来源:百度文库 编辑:高考问答 时间:2024/04/25 06:55:52

变长指令集中的每条指令前部都有标志位可以区别的。
设计CPU时采用变长指令集可以让指令的使用更加灵活,平均指令长度要短于定长指令集。

举个简单的例子。假如有一个CPU需要设计五条操作指令。
如果用定长指令集,很明显,至少需要用3位二进制数来表示(2^2<5<2^3)。CPU将每条数据的前三位理解为指令就OK了。显然这样指令长度为3。

如果用变长指令集,可以将五条指令码设计为:0、10、110、1110、1111。不能用1作为指令码,因为将无法区分1和10,造成CPU不能正确译码。11、111也是一样,自己理解一下,这个就是你问题的答案了。假设指令的使用频率相等,这样,平均指令长度为(1+2+3+4+4)/5=2.8,要比定长指令集短一些吧?
如果我们设计时能知道指令使用的大致频率,就可以将使用频繁的指令设计得短一些,不经常使用得指令设计长一些,这样还可以进一步缩短指令长度。

intel 最清楚