指令系统

指令系统是计算机系统中软件和硬件分界的一个主要标志。
指令格式优化的目标:1.节省程序的存储空间;2.指令格式要尽量规整,以减少硬件译码的复杂度,且不能降低指令的执行速度。


寻址方式(addressing mode):是指一种指令集结构如何确定所要访问的数据的地址。一般来说,寻址方式可以指明指令中的操作数是一个常数,一个寄存器操作数或者存储器操作数。对于存储器操作数来说,由寻址方式确定的实际的存储器地址称为有效地址。

指令系统是程序设计者(机器语言,汇编语言,系统软件程序员)看到机器的主要属性,是软硬件的主要界面,它在很大程度决定了计算机具有的基本功能。
指令系统的设计包括指令的功能(操作类型,寻址方式,具体操作内容)和指令格式的设计。实际这些选择与设计不是孤立的,比如运算类指令的功能与数据表示的选择密切相关,指令中地址码的设计则与寻址方式有着直接联系。而且指令系统的设计应该由编译程序设计人员同系统结构设计人员共同配合来进行。

一般指令类型分为非特权指令和特权指令。
非特权指令主要供应用程序员使用,也可以供系统程序员使用,如算术逻辑运算,数据传送,浮点运算,字符串,控制转移等指令。
而特权指令只供系统程序员使用,用户无权使用,用户只有先经访管指令调用操作系统,再由操作系统来使用这些特权指令。如果启动I/O,停机等待,存储管理保护,控制系统状态等指令。

指令由操作码和地址码两部分组成。
就指令格式的优化来说,就是指如何用最短的位数来表示指令的操作信息和地址信息,使程序中的指令的平均字长最短。

操作码优化
在操作码的优化上采用哈夫曼压缩概念。其基本思想是对各种事件发生的概率不均等时,采用优化技术,对发生概率最高的事件用最短的位数(时间)来表示(处理),而对于出现概率较低的事件允许用较长的位数(时间)来表示(处理),就会使表示(处理)的平均位数(时间)缩短。
研究操作码的优化,主要是为了缩短指令字长,减少程序总位数即增加指令字表示的操作信息和地址信息。常用扩展操作码。
这种不定长的操作码会增加操作码的译码时间。

指令字格式的优化
光有操作码的优化,没有在地址码和寻址方式上采取措施,程序总位数还是难以减少的,且如果指令字长和存储字长边界不对齐(字长不等或指令字长不是存储字长的整数倍),会增加取指时间。
由于操作码可以变长,对于定长指令字来说,只有地址码可以变长才能充分利用指令字中的所有位。
指令字能表示的访存操作数地址的范围总希望越大越好,虚拟存储系统甚至要求指令中的逻辑地址码的长度超过实际主存的地址长度,以便程序空间可以超过实存空间。
但在满足很大寻址范围的前提下,可以通过多种办法来缩短指令中的地址码位数。
1.基址寻址:在指令中使用少量位指明基址寄存器或使用默认寄存器,而将更多位做偏移地址。
2.相对寻址:在指令中指给出相对偏移量,相对偏移量一般比较小,所以位数也就少。
3.将访存地址空间分为若干段,访存地址由段号和段内地址组成,对转移指令,如果是段内转移,则指明段内地址二不必指明段号。
4.操作数是立即数,或在寄存器中,或是经寄存器实现间接寻址,指令中的地址码指令都可以缩短。

CISC和RISC
CISC:增强原有指令的功能以及设置更为复杂的新指令取代原先由软件自程序完成的功能,实现软件功能的硬化。这样导致指令日益庞大与复杂。
RISC:通过减少指令种数和简化指令功能来减低硬件设计的复杂度,提高指令的执行速度。

按CISC思想改进指令系统
面向目标程序的优化:
对已有机器的指令系统进行分析,看那功能仍用进本指令串实现,那些功能改用新的指令实现,可以提高包括系统软件和应用软件在内的各种机器语言目标程序的实现效率。该办法既能减少目标程序占用的存储空间,减少程序执行中的访存次数,缩短指令的执行时间,提高系统的运行速度,又使实现更为容易。
第一种思路是通过对大量已有机器的机器语言程序机器执行情况进行统计分析各种指令和指令串的使用频率来加以分析和改进。
对程序中统计出的指令及指令串使用频率称为静态使用频度,按静态使用频度改进指令系统是为了减少目标程序所占用的存储空间。
在目标程序执行过程中对指令和指令串统计出的频度称为动态使用频度,按动态使用频度改进指令是额外了减少目标程序的执行时间。
对高频指令可增强其功能,加快其执行速度,缩短其指令字长,而对使用频度很低的指令可以考虑将其功能用高频指令实现,而将其取消。
对高频指令串可以考虑增设新的指令取代这样不仅减少了目标程序的访存取址次数,加快目标程序的执行,也有效地缩短了目标程序的长度。
第二种思路是增设功能更强的复合指令来取代原先由宏指令或子程序实现的功能,由微程序解释实现,不仅大大提高了运算速度,而且减少了程序调用的额外开销,也减少了子程序所占的存储空间。
面向高级语言的优化:
面向高级语言优化就是尽可能缩短与高级语言和机器语言的语义差距,支持高级语言编译,缩短编译程序长度和编译时间。
一种思路是通过对源程序中各种高级语言语句的使用频度进行统计分析,对高频语句增设预支语义差距小的指令。
二种思路是面向编译,优化代码生成来改进。从优化代码生成考虑,应当增强系统结构的规整性,尽量减少例外或特殊情况和语法。
由于高级语言太多,差异很大,所以优化也只能是面向用户所以的语言,如果系统结构过分优化于一种高级语言实现,就会增加与其他高级语言的差距。
面向操作系统的优化:
操作系统的实现不同高级语言的实现,他更深地依赖于系统结构是否为它的实现通过了相应的硬件支持。
面向操作系统的优化就是缩短系统结构与操作系统之间的语义差距。
一种思路同样是对操作系统中常用的指令和指令串的使用频度进行分析与改进,但这种改进是有限的。
二是增加专用于操作系统的指令,即特权指令。
三是把操作系统中频繁使用的,对速度影响很大的机构型软件子程序硬化或固化,改用直接用硬件或微程序解释执行。

按RISC思想改进指令系统
由于CISC的长期发展,导致指令日益庞大与复杂,使系统性能下降,CISC存在如下问题:
1.指令系统庞大,功能异常复杂,需要有多种寻址方式指令格式和指令字长。完成指令的译码,分析和执行的控制器复杂。
2.许多指令的操作繁杂,执行速度低,甚至不如用几条简单指令组合实现。
3.由于指令系统庞大,使高级语言编译程序选择目标指令的分为太大,因此难以优化生成高效机器语言程序,编译程序也太复杂。
4.由于指令系统庞大,各种指令的使用频度都不会太高。
针对CISC的问题,RISC被提出来了,RISC的设计基本原则
1.确定指令系统时,只选择使用高频指令,再增加少量有效支持操作系统,高级语言实现及其他功能的指令,尽量减少指令条数。
2.减少指令所使用的寻址方式,简化指令格式,让全部指令长度相同。
3.让所有指令在一个机器周期内完成。
4.扩大通用寄存器数,尽量减少访存,所有指令只有存(STORE),取(LOAD)指令访存,其他指令只对寄存器操作。
5.采用硬联逻辑实现指令功能。
6.通过精简指令和优化设计编译程序,简单有效地支持高级语言的实现。

设计RISC的基本技术
1.按设计RISC的基本原则进行设计
2.用硬联逻辑实现指令
3.在CPU中设置大量工作寄存器并采用重叠寄存器窗口。
大量工作寄存器用于减少访存。重叠寄存器窗口,即对寄存器使用逻辑名称,对于机器语言来说都是一样的,但对各个指令他们分配的物理寄存器是不同的,由硬件管理从逻辑名称到物理寄存器的映射过程,对机器语言透明。
4.指令用流水线和延迟转移。
由于采用流水线技术,指令可以在时间上重叠执行。然而,一旦正在执行的是一条条件转移指令且转移成功,或是一条无条件转移指令,则重叠方式预取的一下条应该作废,以保证程序的正确执行。这实际上浪费了存储器的访问时间,相对于转移需要两个机器周期,增大了复制开销,为了避免浪费,提出了延迟转移的思想。
其方法是将转移指令与其前面的一条指令或多条指令(条数取决于流水线的级数)对换一下位置(由编译程序生成时调整),让成功转移指令总是在紧跟的指令被执行之后发生,从而使预取的指令不必作废,可以节省一个机器周期。
5.采用高速缓冲存储器Cache,甚至设置指令Cache和数据Cache。
6。优化设计编译系统。RISC有大量的寄存器,因此编译程序必须尽力优化寄存器的分配,减少访存次数。充分利用常规的优化手段和技术来优化编译程序,如将公用的子表达式消去,将常数移到循环体外,减少局部变量和工作变量的中间传递。另外,还应优化调整指令的执行顺序,以尽量减少机器的空闲等,如延迟转移技术。

RISC的优点:
1.简化指令系统的设计。
2.提高机器的执行速度和效率。
3.减低了设计成本,提高了系统的可靠性。
4.可直接支持高级语言的实现,简化编译程序的设计。
RISC的缺点:
1.由于指令少,原来一条CISC指令完成的功能要由多条RISC指令才能完成,加重了汇编语言程序设计的负担,增加了机器语言程序的长度。
2.RISC机器的编译程序比CISC的难写。

由于RISC也存在不足,使得在设计CPU时,向着CISC和RISC结合的方式,取长补短。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值