1、引言引言指令系统:指令系统:又称指令集(又称指令集(Instruction Set)是是计算机体系结构设计的核心,是计算机软、硬计算机体系结构设计的核心,是计算机软、硬件接口,是用机器语言、汇编语言编写程序的件接口,是用机器语言、汇编语言编写程序的用户所能看到的计算机的基本属性。用户所能看到的计算机的基本属性。指令系统的设计主要是确定它的指令格式、指令系统的设计主要是确定它的指令格式、类型、操作以及对操作数的访问方式。类型、操作以及对操作数的访问方式。指令指令:即:即机器指令机器指令,。指令划分指令划分:、和和。指令系统指令系统:;是表征;是表征 计算机性能的重要因素计算机性能的重要因素。系列
2、计算机系列计算机: 。简单简单 复杂复杂完备性完备性:直接提供的指令足够使用,不必再用软件来:直接提供的指令足够使用,不必再用软件来 实现。实现。有效性有效性:程序能够高效地运行。表现在占用存储空间:程序能够高效地运行。表现在占用存储空间 小、执行速度快。小、执行速度快。规整性规整性:指令系统的对称性、匀齐性、指令格式和数:指令系统的对称性、匀齐性、指令格式和数 据格式的一致性。据格式的一致性。兼容性兼容性:完全兼容不可能,只能做到:完全兼容不可能,只能做到“”(低(低 档机上的软件可以在高档机上运行)。档机上的软件可以在高档机上运行)。4.1指令系统的发展指令系统的发展 系列计算机的基本指令
3、系统相同,基本体系结构相同。能实现向上兼容。 随着VLSL技术的发展,多数计算机指令系统多达几百条,称这些计算机为复杂指令系统计算机(CISC)。 研制周期长 难保证正确性 不易调试维护 后提出精简指令系统计算机(RISC)。一种指令集结构中的指令到底要支持哪些类型的操作?一种指令集结构中的指令到底要支持哪些类型的操作?这是指令集结构功能设计的基本问题。这是指令集结构功能设计的基本问题。 精简指令集计算机(精简指令集计算机(RISCRISC) 尽可能地降低指令集结构的复杂性,以达到简尽可能地降低指令集结构的复杂性,以达到简 化实现,提高性能的目的。化实现,提高性能的目的。 当今指令集结构功能设
4、计的一个主要趋势。当今指令集结构功能设计的一个主要趋势。 复杂指令集计算机(复杂指令集计算机(CISCCISC) 强化指令功能,实现软件功能向硬件功能转移。强化指令功能,实现软件功能向硬件功能转移。 两种截然不同的方向:两种截然不同的方向:1复杂指令集计算机(复杂指令集计算机(CISC)CISCCISC (Complex Instruction Set Computer)(Complex Instruction Set Computer)CNCPUTCPIIT1) CISC1) CISC结构追求的目标:结构追求的目标:强化指令功能,减少程序的指令条数强化指令功能,减少程序的指令条数其中其中Tc
5、:表示时钟周期。表示时钟周期。IN:表示表示CPU执行某一程序中执行某一程序中所包含的指令总数。所包含的指令总数。CPI:表示执行每条指令所需的表示执行每条指令所需的平均时钟周期数。平均时钟周期数。 1)指令系统复杂,表现在:指令系统复杂,表现在: 指令数多,一般大于指令数多,一般大于100100条条 寻址方式多,一般大于寻址方式多,一般大于4 4种种 指令格式多,一般大于指令格式多,一般大于4 4种种2) CISC2) CISC的主要特点:的主要特点:5)有专用寄存器有专用寄存器4)采用微程序控制采用微程序控制3)各种指令都可访问存储器各种指令都可访问存储器2)绝大多数指令需要多个机器时钟周
6、期方可完成绝大多数指令需要多个机器时钟周期方可完成6)难以用优化编译生成高效的目标代码程序难以用优化编译生成高效的目标代码程序指令系统庞大指令系统庞大 硬件复杂、庞大硬件复杂、庞大 执行速度低执行速度低 编译程序复杂、长编译程序复杂、长 部分指令使用效率低部分指令使用效率低 3 3)CISCCISC结构存在的缺点:结构存在的缺点:执行频率排序执行频率排序80X86指令指令指令执行频率(执行指令总数)指令执行频率(执行指令总数)1Load222条件分支条件分支203比较比较164Store125加加86与与67减减58寄存器寄存器间数寄存器寄存器间数据移动据移动49调用调用110返回返回1合合
7、计计96Intel 80X86Intel 80X86最常用的十条指令最常用的十条指令 2 RISC (Reduced Instruction Set Computer)(Reduced Instruction Set Computer)19751975年,年,IBMIBM的的801801小型计算机小型计算机19791979年,加州大学提出年,加州大学提出RISCRISC这一术语,并研制出这一术语,并研制出RISC-I,RISC-IIRISC-I,RISC-II计算机计算机19811981年,斯坦福大学于推出了年,斯坦福大学于推出了MIPS RISCMIPS RISC计算机计算机19871987
8、年,年,SUNSUN公司的公司的SPARCSPARC系列工作站系列工作站19881988年年MotorolaMotorola推出的推出的MC 88000 RISCMC 88000 RISC计算机计算机1 1) RISC) RISC的产生的产生CNCPUTCPIIT 1)1)精简指令系统精简指令系统指令条数少,一般小于指令条数少,一般小于100100条条基本寻址方式少,一般基本寻址方式少,一般2 2 3 3种种指令格式少,一般指令格式少,一般2 2 3 3种种指令长度一致指令长度一致(32(32位位) )2)RISC2)RISC的主要特点:的主要特点:2)2)以寄存器以寄存器- -寄存器方式工作
9、,除了寄存器方式工作,除了Load/StoreLoad/Store指令访问存储器外,其余指令只访问寄存器指令访问存储器外,其余指令只访问寄存器4)4)使用较多的通用寄存器,一般至少使用较多的通用寄存器,一般至少3232个,不个,不允许有专用寄存器允许有专用寄存器5)5)大多采用硬联线控制,少用或不用微程序实现大多采用硬联线控制,少用或不用微程序实现3)3)除了除了Load/StoreLoad/Store指令访问存储器外,所有指令在一指令访问存储器外,所有指令在一个机器时钟周期完成,并采用流水线技术个机器时钟周期完成,并采用流水线技术4.1.3低级语言与硬件结构的关系 高级语言用法与具体机器的指
10、令系统无关。 低级语言(机器语言&汇编语言)和具体机器的指令系统密切相关。 汇编语言依赖于计算机的硬件结构和指令系统。高级语言如何访问机器硬件资源 高级语言提供了与汇编语言之间的调用接口。 用汇编语言编写的程序作为高级语言的一个外部过程或函数。 利用堆栈来传递参数或参数的地址。 两者编译生成目标(OBJ)文件。 利用连接程序(LINKER)把它们连接成可执行文件便可运行。操作码字段操作码字段:表示指令的操作特性与功能。:表示指令的操作特性与功能。地址码字段地址码字段:通常用于指定参与操作的操作数地址。:通常用于指定参与操作的操作数地址。 指令的一般结构形式指令的一般结构形式:4.2.1 指令字
11、长度 指令的长度指令的长度是指一条指令所包含二进制是指一条指令所包含二进制代码的位数,取决于操作码长度和操作代码的位数,取决于操作码长度和操作数地址个数及每个地址的长度。数地址个数及每个地址的长度。 指令长度与机器字长的关系:指令长度与机器字长的关系:半字长指令半字长指令单字长指令单字长指令双字长指令双字长指令44.22.2 2 操作码操作码(1 1)定长编码:)定长编码:便于译码,扩展性差便于译码,扩展性差IBM370机机(2 2)变长编码:)变长编码:能缩短指令平均长度能缩短指令平均长度PDP-11 作用作用:指定指令是执行什么性质的操作。:指定指令是执行什么性质的操作。 不同的指令用操作
12、码字段的不同编码表示。不同的指令用操作码字段的不同编码表示。:。该指令常以。该指令常以AC中中 数作为被操作数,指令中地址码字段所指明的数数作为被操作数,指令中地址码字段所指明的数 为操作数,操作结果又放回为操作数,操作结果又放回AC。 根据指令中操作数地址的个数,将指令划分为:根据指令中操作数地址的个数,将指令划分为:指令中只有操作码,没有地址码指令中只有操作码,没有地址码。作用作用:常用于指定参与操作的操作数地址常用于指定参与操作的操作数地址。:双操作数指令双操作数指令,两地址指明被操作,两地址指明被操作 数和操作数地址数和操作数地址,其中其中A1兼做结果地址兼做结果地址:三个地址分别指明
13、被操作数、操作三个地址分别指明被操作数、操作 数以及结果存放地址数以及结果存放地址: 二、地址码 二地址地址根据操作数的物理位置分为: SS 存储器-存储器类型 RS 寄存器-存储器类型 RR 寄存器-寄存器类型慢 为了便于书写和阅读程序,每一指令采用为了便于书写和阅读程序,每一指令采用3 3个或个或4 4个英文缩写字母来表示,称为个英文缩写字母来表示,称为。:1 1 在不同的计算机中,指令助记符的规定是在不同的计算机中,指令助记符的规定是 不一样的;不一样的; 2 2 由于机器只能识别二进制语言,因此指令由于机器只能识别二进制语言,因此指令 助记符必须转换成相应的二进制操作码。助记符必须转换
14、成相应的二进制操作码。 8位微型计算机的指令格式 如8088,字长8位,指令结构可变 包括单字长指令、双字长指令和三字长指令 操作码长度固定 PDP/11系列机的指令格式 字长16位 单字长指令 操作码字段不固定 指令长度可变,最短1个字节,最长12个字节,典型的CISC指令系统 由可选前缀(04)、操作码(12)、一个由mod-R/M字节和一个SIB(Scale Index Base)比例变址字节组成的地址指定器、一个可选的位移量(04)和一个可选的立即数字段(04)构成。指令前缀 段取代 操作数长度取代 地址长度取代操作码 Mod Reg或操作码 R/M S I B 位移量 立即数 指令前
15、缀中的重复前缀指定串的重复操作,这样使Pentium处理串比软循环快得多。 LOCK前缀用于多CPU环境中对共享存储器的排他性访问 段取代用于改变默认段寄存器的情况 操作数长度取代和地址长度取代用于在保护模式下决定操作数和指令的长度 以下4个指令前缀都是可选的,分别为0或1个字节指令前缀 段取代 操作数长度取代 地址长度取代 操作码是必须的,12个字节 Mod、Reg、R/M为共1个字节,是可选的。 mod-R/M指定的操作数是在R中还是在M中。 mod(2位)R/M(3位)的32种值构成了8种寄存器方式和24种变址方式(参考汇编语言教材); Reg或OP(3位)指定另一个操作数(寄存器)或用
16、作OP的补充。操作码 Mod Reg或操作码 R/M S I B 位移量 立即数1个字节 1个字节 S、I、B共1个字节,分别是比例系数、变址寄存器号、基址寄存器号,可选。mod-R/M中的某些编码要求SIB字节来完成寻址方式的指定; SS(2)指定比例变换的因子, Index(2)指定变址寄存器, Base(3)指定基址寄存器 位移量:可以是0,1,2,4个字节 立即数:可以是0,1,2,4个字节操作码 Mod Reg或操作码 R/M S I B 位移量 立即数寻址方式寻址方式:寻址方式寻址方式指令指令寻址方式寻址方式数据数据寻址方式寻址方式寻址技术:寻址技术:指的是指令按什么方式寻找(或访
17、问)到指的是指令按什么方式寻找(或访问)到所需的操作数或信息。它影响主存规模速度及存取方所需的操作数或信息。它影响主存规模速度及存取方式。寻址方式对应用程序员是透明的。式。寻址方式对应用程序员是透明的。 程序指令按程序指令按顺序顺序存放在内存中,执行时按顺序从内存放在内存中,执行时按顺序从内存中取出所要执行的指令。存中取出所要执行的指令。 (,)( rogram ounter)存放存放正在执行的指令地址正在执行的指令地址(要执(要执行的下一指令地址)。行的下一指令地址)。 用途用途:实现程序转移或构成循环程序实现程序转移或构成循环程序。寻址方式特征位寻址方式特征位:指出是何种寻址方式。指出是何
18、种寻址方式。实质实质:形式地址形式地址(D):偏移量偏移量,逻辑地址逻辑地址,指令中给出的地址。,指令中给出的地址。有效地址有效地址(E):真实地址真实地址,物理地址物理地址,用形式地址并结,用形式地址并结 合某些计算规则求出来的地址。合某些计算规则求出来的地址。:一种:一种指令的结构如下:指令的结构如下: 比如单地址指令格式的第二操作数比如单地址指令格式的第二操作数由由AC隐含指定。隐含指定。200H 优点优点:无需访问内存,指令的执行时间很短。无需访问内存,指令的执行时间很短。缺点缺点:操作数的范围受限。:操作数的范围受限。适用范围适用范围:用于操作数固定的指令中,主要用于用于操作数固定的
19、指令中,主要用于 给寄存器或存储器赋初值。给寄存器或存储器赋初值。特点特点:地址字段指出的地址字段指出的。其形式地址()又称为直接地址()特点特点:。优点优点:简单。:简单。缺点缺点:寻址空间受限。:寻址空间受限。特点特点:地址字段中的地址字段中的D是是操作数地址的指针操作数地址的指针。说明说明:两次访存影响执行速度,两次访存影响执行速度,。优点优点:寻址空间大:寻址空间大。缺点缺点:需多次访问主存。:需多次访问主存。寄存器寻址方式寄存器寻址方式:寄存器中存放的是寄存器中存放的是。区别区别: (1 1)寄存器中前者存的是)寄存器中前者存的是,后者是,后者是 (2 2),速度相对快;寻址空间小;
20、,速度相对快;寻址空间小; ,速度相对慢;寻址空间大。,速度相对慢;寻址空间大。联系联系:地址字段中给出的都是寄存器的编号地址字段中给出的都是寄存器的编号。寄存器间接寻址方式寄存器间接寻址方式:寄存器中存放的寄存器中存放的,。特点特点: 。E=(PC)+D特点特点:。用途用途:可用于扩大寻址能力可用于扩大寻址能力。E=(BR)+D特点特点:。用途用途:用于实现程序块的有规律变化。用于实现程序块的有规律变化。基址寻址方式和变址寻址方式有什么特点?基址寻址方式和变址寻址方式有什么特点? (上海交通大学硕士研究生入学考试试题)(上海交通大学硕士研究生入学考试试题)解:解: 两者有不同的特点和用途:在
21、基址寻址的系统两者有不同的特点和用途:在基址寻址的系统中,中,。而对于变址寻址则相反,。而对于变址寻址则相反,。不同的变址寄存器值指。不同的变址寄存器值指出了不同的单元;在基址寻址中,出了不同的单元;在基址寻址中,而在变址寻址中,而在变址寻址中,;前者前者,而后者,而后者。用途用途:用在用在I/O指令中,以实现指令中,以实现或或同同之间的之间的,还适用于,还适用于。方法方法:。应用应用:微型机采用段寻址方式,微型机采用段寻址方式,20位物理地址为位物理地址为16位位 段地址左移四位加上段地址左移四位加上16位偏移量。位偏移量。 段段寻址;寻址; 段段寻址;寻址; 段段寻址;寻址; 段段寻址;寻
22、址;分类分类:堆栈堆栈:是一组能存入和取出数据的:是一组能存入和取出数据的暂时暂时存储单元存储单元。区别区别:对数据的存取方法或寻址方式不同。:对数据的存取方法或寻址方式不同。分类分类:串联堆栈和存储器堆栈。:串联堆栈和存储器堆栈。特点特点:。 当压入数据时,栈中数据先向栈底移动一个数据字,当压入数据时,栈中数据先向栈底移动一个数据字,空出栈顶寄存器来存放压入的数据。当取出数据时,从空出栈顶寄存器来存放压入的数据。当取出数据时,从栈顶的寄存器中取出数据,栈中数据向栈顶顺序移动一栈顶的寄存器中取出数据,栈中数据向栈顶顺序移动一个数据字。个数据字。“先进后出先进后出”()。“后进先出后进先出”()
23、。: (1)容量可任意;)容量可任意; (2)可同时建立多个堆栈;)可同时建立多个堆栈; (3)可用对存储器寻址的任一指令来对堆栈中数)可用对存储器寻址的任一指令来对堆栈中数 据寻址。据寻址。 需设置一个堆栈指示器需设置一个堆栈指示器SP(Stack Pointer),它它是是CPU中的一个专用寄存器,指定堆栈的栈顶。中的一个专用寄存器,指定堆栈的栈顶。 (1 1)容量有限;)容量有限; (2 2)读出具有破坏性;)读出具有破坏性; 串联堆栈串联堆栈,栈顶是由硬件确定,栈顶是由硬件确定,操作时操作时,串联地在寄存器间串联地在寄存器间。 因存储单元中的数据不容易移动,为此实行因存储单元中的数据不
24、容易移动,为此实行,。 数据的压入和读出用数据的压入和读出用“进栈进栈”(PUSH)和和“出出栈栈”(POP) 指令。指令。 : ( A ) Msp , (SP) -1 SP : (SP) + 1 SP, (Msp ) A:寻址方式举例: PentiumPentium寻址方式方式算法立即作数=A寄存器LA=R偏移量LA=(SR)+A基址 LA=(SR)+(B)基址带偏移量LA=(SR)+(B)+A比例变址带偏移量LA=(SR)+(I)S+A基址带变址和偏移量LA=(SR)+(B)+(I)+A基址带比例变址和偏移量LA=(SR)+(B)+(I)S+A相对LA=(PC)+AP120例4 某16位机
25、器所使用的指令格式和寻址方式如下所示,该机有两个20位基址寄存器,四个16位变址寄存器,十六个16位通用寄存器。指令汇编格式中的S(源),D(目标)都是通用寄存器,M是主存中的一个单元。三种指令的操作码分别是MOV(OP)=(A)H,STO(OP)=(1B)H,LAD(OP)=(3C)H。MOV是传送指令,STO为存数指令,LAD为取数指令。要求:(1)分析三种指令的指令格式与寻址方式特点。(2)CPU完成哪一种操作所花时间最短?哪一种操作所花时间最长?第二种指令的执行时间有时会等于第三种指令的执行时间吗?(3)下列情况下每个十六进制指令字分别代表什么操作?其中如果有编码不正确,如何改正才能成
26、为合法指令?P120例4 F0F1 3CD21111 0000 1111 0001 0011 1100 1101 0010 3C 15号寄存器 13CD2把主存13CD2的内存装载到15号寄存器 6FD60110 1111 1101 0110由于是单字长指令,则一定是MOV指令。则OP错误,修改为001010 00 1101 011028D6 主要用于主存和寄存器、寄存器和寄存器之间的数主要用于主存和寄存器、寄存器和寄存器之间的数据传送。主要有据传送。主要有:、和和等。等。 主要用于定点或浮点的算术运算、向量运算。主要主要用于定点或浮点的算术运算、向量运算。主要有:二进制有:二进制、;、,、指
27、令。指令。 转移指令一般分为:转移指令一般分为:、等。等。 条件转移的条件有进位标志位条件转移的条件有进位标志位(C)、结果为零标志结果为零标志(Z) 、负标志负标志(N) 、溢出标志溢出标志(V) 和奇偶标志和奇偶标志(P) 等。等。 主要用来启动外围设备,检查测试外围设备的工作主要用来启动外围设备,检查测试外围设备的工作状态,并实现外围设备和状态,并实现外围设备和CPU之间、外围设备与外围之间、外围设备与外围设备之间的信息传送。设备之间的信息传送。 主要用于无符号数的位操作、代码转换、判断及主要用于无符号数的位操作、代码转换、判断及运算。主要有:运算。主要有:、等。等。 常用在文字编辑中对
28、字符串进行处理。包括:常用在文字编辑中对字符串进行处理。包括:、和和等。等。 是具有特殊权限的指令,只用于操作系统或其他是具有特殊权限的指令,只用于操作系统或其他系统软件,一般不直接提供用户使用。系统软件,一般不直接提供用户使用。 主要用于主要用于:,、,。 状态寄存器状态寄存器、,以及以及系统控制用的系统控制用的。 基本指令系统 P122表4.9介绍 20%和80%规律:CISC中大约有20%的指令使用频率高,占据了80%的处理机时间,而有80%的不常用指令只占用处理机的20%时间。 VLSI技术发展引起的问题 VLSI工艺要求规整性,而大量复杂指令控制逻辑极其不规整,给VLSI工艺造成了很
29、大的困难。 现在用微程序实现复杂指令与用简单指令组成的子程序相比,没有多大的区别。因为现在控制存储器和主存的速度差缩小。 CISC中,通过增强指令系统的功能,简化了软件,增加了硬件的复杂程度。然而指令复杂了,指令的执行时间必然加长,从而使整个系统的执行时间反而增加,因而在计算机体系结构设计中,软硬件的功能分配必须恰当 RISC 特点(采用流水线技术) 简单而统一格式的指令译码; 大部分指令可以单周期执行 只有LOAD/STORE可以访问存储器 简单的寻址方式 采用延迟转移技术 采用LOAD延迟技术 三地址指令格式 较多的寄存器 对称的指令格式返回 霍夫曼树。霍夫曼树。44.66.11 操作码的
30、优化设操作码的优化设计计4.6 4.6 指令格式的优化指令格式的优化(1)将要编码的字符按出现频率的次序排列,频率相等的符将要编码的字符按出现频率的次序排列,频率相等的符号可任意排列;号可任意排列;(2)把出现频率最小的两个符号合并,并将其频率相加,按把出现频率最小的两个符号合并,并将其频率相加,按相加后的频率次序重新排序;相加后的频率次序重新排序;(3)继续过程(继续过程(2),直至只剩下两个频率,此后以相反过程),直至只剩下两个频率,此后以相反过程进行编码;进行编码;(4)对最后两个频率分别指定代码对最后两个频率分别指定代码0和和1;(5)若某一频率由两个频率相加而成,则分别指定这两个频若
31、某一频率由两个频率相加而成,则分别指定这两个频率的下一个代码为率的下一个代码为0或或1;(6)继续过程(继续过程(5),直到所有符号均已指定不同代码为止。),直到所有符号均已指定不同代码为止。例:现设一台模型机,共有例:现设一台模型机,共有7种不同的指令,使用频度如表种不同的指令,使用频度如表所示。若用定长操作码表示,则需要所示。若用定长操作码表示,则需要3位。位。I10.40I20.30I30.15I40.05I50.04I60.03I70.03指令指令使用频度使用频度操作码表示的平均长度操作码表示的平均长度L= =0.40*1.32+0.30*1.74+0.15*2.74+0.05*4.3
32、2+0.04*4.64+0.03*5.06+0.03*5.06=2.17则则信息冗余量信息冗余量K=1-H/操作码的实际平均长度操作码的实际平均长度=1-2.17/3=0.28(即即28%)1.000.600.300.150.060.090.030.030.040.050.150.300.401111110000001.000.600.340.190.080.040.040.050.060.150.260.400.1111111100000(11111)(11110)(11101)(11100)(110)(10)(0)I7I6I1I2I3I4I50 结果:结果:霍夫曼编码平均码长霍夫曼编码平均
33、码长(pili)最短;最短; 定长编码平均码长最长。定长编码平均码长最长。 霍夫曼树如下:霍夫曼树如下: 特点:特点:节省空间(时间);节省空间(时间); 操作码规整性差,不利于译码硬件设计。操作码规整性差,不利于译码硬件设计。4.6.2 地址码的优化设计1地址码个数的选择地址码个数的选择2缩短单个地址码长度的方法缩短单个地址码长度的方法(1 1)用间接寻址方式缩短地址码长度。用间接寻址方式缩短地址码长度。(2 2)用变址寻址方式缩短地址码长度。用变址寻址方式缩短地址码长度。 (3 3)用寄存器间址寻址方式缩短地址码用寄存器间址寻址方式缩短地址码长度。长度。 缩短地址码长度的方法:缩短地址码长度的方法: