1/192.3指令集结构的功能设计第二章计算机指令集结构设计操作类型实例算术和逻辑运算整数的算术和逻辑操作:加、减、与、或等。数据传输Load/Store控制分支、跳转、过程调用和返回、自陷等。系统操作系统调用、虚拟存储器管理等。浮点浮点操作:加、乘等。十进制十进制加、十进制乘、十进制到字符的转换。字符串字符串移动、字符串比较、字符串搜索等。图形象素操作、压缩/解压操作等。1.指令集中操作的分类3/192.一种指令集结构中的指令到底要支持哪些类型的操作?(指令集结构功能设计问题)两种截然不同的方向:◆复杂指令集计算机(CISC)强化指令功能,实现软件功能向硬件功能转移。◆精简指令集计算机(RISC)尽可能地降低指令集结构的复杂性,以达到简化实现,提高性能的目的。当今指令集结构功能设计的一个主要趋势。2.3指令集结构的功能设计4/192.3.1CISC指令集结构的功能设计CISC结构追求的目标:强化指令功能,减少程序的指令条数,以达到提高性能的目的。增强指令功能主要是从如下几个方面着手:1.面向目标程序增强指令功能提高运算型指令功能提高传送指令功能增加程序控制指令功能2.3指令集结构的功能设计5/192.面向高级语言和编译程序改进指令系统(1)增加对高级语言和编译系统支持的指令功能◆对源程序中各种高级语言语句进行使用频度的统计与分析,对于使用频度高的语句,可以设置专门的指令或采取措施增加相应令的功能,以提高其编译速度和执行速度。◆从面向编译程序,尤其是从优化代码生成的角度进行考虑,增加指令集结构的规整性来改进指令系统。2.3指令集结构的功能设计6/19规整性:没有或尽可能减少例外的情况和特殊的应用,以及所有运算都能对称、均匀地在存储器单元或寄存器单元之间进行。(2)高级语言计算机指令系统◆面向高级语言(HL)的机器缩小机器语言和高级语言的语义差距。◆间接执行型高级语言机器高级语言和机器语言是一一对应的,用汇编的方法(可以用软件实现,也可以用硬件实现)把高级语言源程序翻译成机器语言程序。2.3指令集结构的功能设计7/19◆直接执行型高级语言机器高级语言就作为机器语言,直接由硬件或固件对高级语言源程序的语句逐条进行解释以执行它。3.面向操作系统的优化实现改进指令系统操作系统的实现在很大程度上取决于体系结构的支持。(1)主要表现在对以下方面的支持2.3指令集结构的功能设计8/19中断处理进程管理存储管理和保护系统工作状态的建立与切换(2)设置指令支持系统工作状态和访问方式转移的指令支持进程转移的指令支持进程同步和互斥的指令2.3指令集结构的功能设计9/192.3.2RISC指令集功能的设计1.CISC结构存在的缺点(1)在CISC结构的指令系统中,各种指令的使用频率相差悬殊。(2)CISC结构指令系统的复杂性带来了计算机体系结构的复杂性,这不仅增加了研制时间和成本,而且还容易造成设计错误。(3)CISC结构指令系统的复杂性给VLSI设计增加了很大负担,不利于单片集成。2.3指令集结构的功能设计10/19(4)CISC结构的指令系统中,许多复杂指令需要很复杂的操作,因而运行速度慢。(5)在CISC结构的指令系统中,由于各条指令的功能不均衡性,不利于采用先进的计算机体系结构技术(如流水技术)来提高系统的性能。2.RISC计算机(1)指令系统只包含那些使用频率很高的指令和一些必要指令。Intel80X86最常用的十条指令2.3指令集结构的功能设计执行频率排序80X86指令指令执行频率(%执行指令总数)1Load22%2条件分支20%3比较16%4Store12%5加8%6与6%7减5%8寄存器-寄存器间数据移动4%9调用1%10返回1%合计96%Intel80X86最常用的十条指令12/19(2)目的使得计算机体系结构更加简单、更加合理和更加有效,克服CISC结构的缺点,使机器速度更快,程序运行时间缩短,从而提高计算机系统的性能。(3)设计原则选取使用频率最高的指令,并补充一些最有用的指令;每条指令的功能应尽可能简单,并在一个机器周期内完成;所有指令长度均相同;2.3指令集结构的功能设计13/19只有Load和Store操作指令才访问存储器;其它指令操作均在寄存器之间进行;以简单有效的方式支持高级语言。2.3.3控制指令(1)跳转:当控制指令为无条件改变控制流时,称之为“跳转”。(2)分支:当控制指令是有条件改变控制流时,称之为“分支”。2.3指令集结构的功能设计14/19条件分支跳转过程调用过程返回(3)控制流程的各种改变情况2.3指令集结构的功能设计1.控制指令的使用频率(一台Load/Store型指令集结构的机器:SPECint92、Specfp92基准程序)13%6%81%11%4%87%0%20%40%60%80%100%调用/返回跳转条件分支整型平均浮点平均改变控制流的大部分指令是条件分支指令。表示分支条件的技术测试分支条件的方法优点缺点条件码(CC)在程序的控制下,由ALU操作设置特殊的位。可以自由设置分支条件。CC是额外状态,条件码限制了指令顺序,因为必须从一条指令将分支条件信息传送到分支指令。条件寄存器根据比较结果测试条件寄存器。简单占用了一个寄存器。比较且分支比较操作是分支指令的一部分,通常这种比较是受一定限制的。一条指令完成了两条指令的功能。分支指令的操作增多。2.常用的三种表示分支条件的技术及其优缺点17/193.分支目标地址的表示PC-相对寻址:在指令中提供一个和程序计数器(PC)的值相加的偏移量。(1)有效地缩短指令中表示目标地址的字段的长度;(2)使得代码在执行时与它被载入的位置无关。关键问题是:转移目标离当前控制指令的偏移量有多大?2.3指令集结构的功能设计18/194.过程调用和返回的状态保存两种方法来保存寄存器的内容:(1)“调用者保存”方法在一个调用者调用别的过程时,必须保存调用者所要保存的寄存器,以备调用结束返回后,能够再次访问调用者。(2)“被调用者保存”方法被调用的过程必须保存它要用的寄存器,保证不会破坏过程调用者的程序执行环境,并在过程调用结束返回时,恢复这些寄存器的内容。2.3指令集结构的功能设计19/19过程P1调用返回R1R1保存状态过程P2恢复状态调用返回R1R1保存状态过程P3恢复状态执行R1R1保存状态过程P1执行过程P2恢复状态调用返回(a)调用者保存(b)被调用者保存图2.6过程调用中寄存器内容的两种保存策略2.3指令集结构的功能设计