(二) 指令格式及其优化
1.指令格式的设计考虑对于指令格式(instruction format)的设计有一些优先考虑的原则:
(1)关于指令的长度,短指令要比长指令更节约些。尽管存储器的价格越来越便宜,但设计者还是不愿意浪费它们。
(2)还要考虑是否有足够的空间表示所有期望的操作。
来源:www.examda.com (3)在GPR结构中,无论是哪种寄存器与存储器类型,提高存取指令的速度都是应该考虑的一个重要原则。存储器的存取速度越高,就能给处理机提供更多的指令进行处理。在一定的存取速率下,如果平均指令长度较短,那么存储器就能供应更多的指令。
(4)机器字长(word length)应该是字符长度(character length)的整数倍。否则,在存储字符时就会造成浪费,而且也会造成寻址困难。
(5)寻址字段长度的选择。假设存储空间是2 19 位,如果存取单位的大小不同,则地址长度也不相同。
2.指令格式化
指令格式的优化既包括指令码的优化,也包括操作数的优化。所谓指令格式的优化就是从整个指令系统的利用率角度出发,尽量设法减少指令中的冗余信息量,以便用最少的位数提供足够的操作信息和地址信息。
3.哈夫曼编码
哈夫曼编码的基本概念是:对发生概率高的事件用短码表示,对发生概率低的事件用长码表示,这样做的结果可以使平均编码长度明显压缩,使之很接近理论编码长度。要对指令码进行优化表示,就必须知道每条指令在程度中出现的概率,即指令的使用频度,一般都是通过对大量已有的典型程序进行统计而求得。获得使用频度后,即可根据这些数据构造一个哈夫曼树。具体算法是:把各指令按使用频度从小到大排序;从中取出最小与次最小的两个指令作为叶结点构成二叉树,其根为两结点频度之和,并把比值插入到频度序列中;递归地使用此法继续构造二叉树,直到全部指令都作为叶结点使用完为止。有了哈夫曼树(它是一个二叉树),即可用它进行编码。具体做法是:从根结点开始,把树的左子树线段标为1,右子树线段标为0,直至叶结点。然后从每个指令所在的叶结点位置开始,沿最短路径到达各个叶结点并依次写下沿线的0、1序列。就得到该指令的哈夫曼编码。(三) 指令集的复杂化