1.面向目标程序优化指令系统
  目标程序是由机器指令直接组成的,是要在处理机直接执行的,因此,面向目标程序优化指令系统是提高计算机系统性能最直接的办法。优化目标程序的指标主要有两个:一是缩短程序的长度,即减少程序的空间开销,另一个是缩短程序的执行时间,即减少程序的时间开销。
  优化目标程序的方法是:对大量的目标程序及其执行情况进行统计分析,找出那些使用频度高,执行时间长的指令或指令串。对于那些使用频度高的指令,用硬件加快其执行,就能缩短整个程序的执行时间。对于那些使用频度高的指令串,用一条新的指令来代替它,这样,不但能缩短整个程序的执行时间,而且能缩短整个程序的长度,从而减少程序的空间开销。
  优化目标程序的主要途径有以下几个方面。
  (1)增强数据传送指令的功能
  数据传送指令在整个指令系统中占有非常重要的地位,因此,增强数据传送指令的功能对提高计算机系统的性能至关重要。
  我们用C编译程序和PROLOG解释程序对Intel 8088处理机的所有指令的使用频度和执行时间进行了统计,其中,最常用的3种数据传送指令MOV、PUSH和POP的使用频度中占近40%,执行时间占30%以上。从IBM大中型计算机的统计结果看,数据传送指令所占的比例还要高。
  在通用寄存器与通用寄存器之间、通用寄存器与主存储器之间、主存储器与主存储器之间、通用寄存器与系统堆栈之间设置数据块传送指令,能够明显加快向量运算、中断现场的保存和恢复等。用一条指令就能够传送一块数据。
  (2)增强运算型指令的功能
  在科学计算的应用程序中,经常要计算各种各样的函数,为此,在有些计算机系统设置有常用的函数运算指令。如开平方 ,三角函数sin(x)、cos(x)、tg(x),对数函数ln(x)、lg(x),指数函数 等。这样,就能用一条指令代替一个子程序来完成函数计算。
  在事务处理应用中,经常有十进制运算。如果把十进制数先转换成二进制数,计算完成后再转换回十进制,程序的时间开销和空间开销都会很大。因此,在许多计算机中都设置有一套十进制运算指令。也有些计算机设置有二进制到十进制和十进制到二进制的转换指令。
  另外,在事务处理应用中也经常遇到码制转换问题,如ASCII码与BCD码之间的转换,ASCII码与EBCDIC码之间的转换。在IBM 370计算机中就设置有专门的码制转换指令,用一条指令就能完成一个字串的码制转换。
  (3)增强程序控制指令的功能
  由于循环在一般程序占有相当大的比例,而且,许多循环程序中的循环体本身往往很短,在一般高级语言中,循环体中只有一条语句的约占40%左右,有一至三条语句的约占70%左右。因此,循环控制指令在整个循环程序中占据了相当大的比例。
  循环控制一般要用三条指令来完成,一条加减法指令,一条比较指令和一条条件转移指令。为了支持循环程序的快速执行,缩短循环程序的代码长度,可以用一条循环控制指令来实现。
  2.面向高级语言和编译程序优化指令系统
  大多数人都已经习惯用高级语言编写程序。目前在机器上实际运行的绝大多数程序,都是用高级语言编写,并经编译程序编译后生成的目标程序。
  然而,大多数高级语言与一般计算机的机器语言的语义差距非常大,通常用高级语言编写的程序经编译程序编译后生成的目标程序,与直接用机器语言或汇编语言编写的程序相比,时间开销和空间开销都要大一个数量级。
  因此,改进指令系统,增加对高级语言和编译程序的支持,缩小高级语言与机器语言的差距,就能提高整个计算机系统的性能。