指令系统83学习.pptx
《指令系统83学习.pptx》由会员分享,可在线阅读,更多相关《指令系统83学习.pptx(164页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.1 数据表示2.1.1浮点数表示2.1.2 自定义数据表示2.2 寻址技术2.2.1 编址方式2.2.2 寻址方式2.2.3 程序在主存中的定位方法本章内容本章内容第1页/共164页2.3 指令格式的设计和优化2.3.1 指令操作码的优化2.3.2 地址码的优化表示2.3.3 指令格式设计实例2.4 指令系统的改进2.4.1 RISC与CISC的概述2.4.2 RISC指令系统实例习题二本章内容本章内容第2页/共164页第二章 指令系统指令系统是硬件和软件之间的接口,硬件设计人员采用各种技术来实现指令系统;软件设计人员基于指令系统来编制相应的系统软件,这些软件用来填补硬件实现的指令系统与各
2、种编程语言之间的语义差距。指令系统是计算机系统的软硬件功能分配的界面,指令系统设计是计算机系统结构设计的核心,它对计算机系统的性能有直接影响。指令系统实际上定义了硬件和编译器之间的接口,它是一种硬件和编译器都能理解的语言。一方面,指令系统表明了一台计算机具有哪些硬件功能,是硬件逻辑设计的基础。因此,在指令系统层,应该定义一套在当前和将来技术条件下能够高效率实现的指令集,从而使高效率的设计可用于今后的若干代计算机中。另一方面,指令系统应该为编译器提供明确的编译目标,使编译结果具有规律性和完整性。第3页/共164页第二章 指令系统指令系统是硬件和软件之间的接口,硬件设计人员采用各种技术来实现指令系
3、统;软件设计人员基于指令系统来编制相应的系统软件,这些软件用来填补硬件实现的指令系统与各种编程语言之间的语义差距。指令系统是计算机系统的软硬件功能分配的界面,指令系统设计是计算机系统结构设计的核心,它对计算机系统的性能有直接影响。指令系统实际上定义了硬件和编译器之间的接口,它是一种硬件和编译器都能理解的语言。一方面,指令系统表明了一台计算机具有哪些硬件功能,是硬件逻辑设计的基础。因此,在指令系统层,应该定义一套在当前和将来技术条件下能够高效率实现的指令集,从而使高效率的设计可用于今后的若干代计算机中。另一方面,指令系统应该为编译器提供明确的编译目标,使编译结果具有规律性和完整性。第4页/共16
4、4页第二章 指令系统本章主要介绍与指令系统直接有关的数据表示,然后阐述指令系统优化设计的方法和技术,最后讨论指令系统发展中的CISC(复杂指令系统计算机)和RISC(精简指令系统计算机)两种设计思想,并介绍典型RISC处理器MIPS R4000和SPARC的指令系统。第5页/共164页2.1 数据表示数据表示是数据类型中最常用的、相对比较简单的、易于硬件实现的那些数据类型。相对较复杂的数据类型,如表、树、队列、链表等则是由软件来处理,它们是数据结构研究的对象。数据结构和数据表示是软、硬件的交界面。系统结构设计在软、硬件功能分配时,应考虑在机器中设置哪些数据表示,以便对应用中的数据结构有高的实现
5、效率,这是以花费适当的硬件为代价的。由于基本的数据表示在其他课程已有详细阐述,本节介绍主要更深入地介绍浮点数表示涉及到的一些问题,以及自定义数据表示。第6页/共164页2.1.1浮点数表示现代的大部分计算机都引入了浮点数据表示,典型的长度有32位和64位。浮点数表示的关键问题是,在数据字长确定的情况下,能设计出一种具有最佳表示范围、表示精度和表示效率的浮点数表示方式。1.浮点数的表示范围在机器中,典型的浮点数机器字格式如图2-1所示。第7页/共164页图2-1中,浮点数机器字代码由两部分组成:阶码部分和尾数部分。阶码部分包含了阶符和阶码值两部分。尾数部分包括数符和尾数值。浮点数的值可表示为:图
6、2-1中,浮点数机器字代码由两部分组成:阶码部分和尾数部分。阶码部分包含了阶符和阶码值两部分。尾数部分包括数符和尾数值。浮点数的值可表示为:其中2.1.1浮点数表示第8页/共164页浮点数表示需要确定以下6个参数:尾数的基rm尾数表示可以采用用二进制、四进制、八进制、十六进制和十进制等,即尾数的基rm可分别取值为2、4、8、16、10等。尾数的值m尾数的值可以采用原码或补码表示,数值可以采用小数或整数表示。尾数长度n尾数占用的二进制位数称为尾数长度,不包括符号位。2.1.1浮点数表示第9页/共164页尾数的基为rm,尾数长度为n可表示的rm进制数的位数为 。当尾数采用二进制即rm=2时,尾数长
7、度n就是;如果尾数采用十六进制,则需要4位二进制数表示1位十六进制数,这时十六进制尾数的实际位数为 =n/4 阶码的基re阶码一般采用二进制表示,即阶码的基re=2。阶码的值e阶码的值e一般采用移码或补码表示,数值采用整数表示。阶码长度q由于阶码采用二进制,因此,阶码长度q的值就是阶码部分的二进制数位数。注意q不包括阶码符号位。2.1.1浮点数表示第10页/共164页从式(2-1)可以看出,浮点数的表示范围与尾数的基值rm有关,也与阶码位数q和尾数位数p以及采用的机器数表示形式有关。由于机器字长的限制,任何一种浮点数的表示范围和可表示的浮点数个数是有限的,浮点数只能表示出数轴上分散于正、负两个
8、区间上的部分离散值,如图2-2所示。2.1.1浮点数表示第11页/共164页在浮点数表示的正数区间:规格化浮点数的最大正数值Nmax由尾数的最大正数值与阶码的最大正数值组合而成;规格化浮点数的最小正数值Nmin由尾数的最小正数值与阶码的最小负数值组合而成。在浮点数表示的负数区间:规格化浮点数的最大负数值(-Nmax)由尾数最大负数值与阶码最小负数值组合而成;规格化浮点数的最小负数值(-Nmin)由尾数的最小负数值与阶码的最大正数值组合而成。2.1.1浮点数表示第12页/共164页在尾数采用原码、纯小数,阶码采用移码、整数的浮点数表示方式中,规格化浮点数的表示范围N正和N负为:2.1.1浮点数表
9、示第13页/共164页当尾数采用补码、纯小数,阶码采用移码、整数的浮点数表示方式中,规格化浮点数在正数区间完全相同,但是负数区间有区别,N负的表示范围为:从以上公式可以看出,浮点数的表示范围与尾数的基值rm有关,也与阶码位数q和尾数位数p以及采用的机器数表示形式有关。但是,影响浮点数表示范围的主要因素是尾数基值rm和阶码位数q。2.1.1浮点数表示第14页/共164页例2-1 浮点数长度32位,数符1位和阶符1位,阶码长度q=6,尾数长度n=24,尾数和阶码采用二进制,即rm=re=2。尾数采用原码、纯小数,阶码采用移码、整数,其规格化浮点数表示范围为:即2.1.1浮点数表示第15页/共164
10、页例2-2 浮点数长度32位,数符1位和阶符1位,阶码长度q=6,尾数长度n=24,尾数采用十六进制和阶码采用二进制,即rm=16,re=2。尾数采用原码、纯小数,阶码采用移码、整数,给出其规格化浮点数表示范围。解:由于尾数采用十六进制,24位二进制表示6位十六进制数,故浮点数表示范围为:即2.1.1浮点数表示第16页/共164页2.1.1浮点数表示从上述两个例子可以看出,当浮点数阶码尾数的二进制位数、码制、小数点位置都相同时,则浮点数表示范围由基值rm决定,基值rm越大表示范围越大;但是,基值rm越大,浮点数在数轴上的分布越稀。2规格化浮点数的表数个数由于字长限制,浮点数表示方式所能表示的浮
11、点数个数是有限的、不连续的。可表示的规格化浮点数的个数应该是可表示的阶码的个数与可表示的尾数的个数的乘积。如果阶码的基re=2,则q位长的阶码可表示的阶码的个数为2q个。第17页/共164页 尾数的基为rm,n位长的尾数可表示的rm进制数的位数为 ,每个rm进制数的数位均可以有 共有rm个取值,所以,尾数的总个数为 ,但应去掉小数点后第1个 进制数位是0的那些非规格数。显然,非规格化尾数的个数占了全部尾数总个数的 的比例。因此,可表示的浮点数规格化数的总个数就为 。由此推出可表示的规格化浮点数的个数为:2.1.1浮点数表示第18页/共164页可以推出,越大,在与=2的浮点数相重叠的范围内,所表
12、示数的个数要少得多,即数的密度分布会更稀。3规格化浮点数的表数精度浮点数表示方式所能表示的浮点数个数是不连续的、有限的,只能表示出实数中很少的一部分,是实数的一个子集,称为浮点数集。浮点数集的表数误差指的是浮点数集中两个最接近的浮点数之间的误差。在浮点运算中,会出现运算中间结果或最后结果的尾数不在浮点集中的情况(不是溢出),这时必须用最接近这个结果的浮点数表示。如,浮点加法运算过程中,对阶操作需要对一个浮点数进行右规时,就要对尾数的最低位进行舍入,通常采用四舍五入来确定最低位的值,这时就产生了误差。2.1.1浮点数表示第19页/共164页表数误差也称为表数精度。规格化浮点数的表数精度直接与尾数
13、基rm的取值和rm进制的尾数位数 有关。规格化浮点数运算中,如果需要对尾数的最低位进行处理,通常采用四舍五入的规则,因此,可以认为表数误差是尾数的最后一位的值的一半。由此可以得出规格化浮点数的表数精度为:(2-3)2.1.1浮点数表示第20页/共164页根据式(2-3),可以得出例2-1和例2-2中两种不同尾数基值浮点数的表数精度分别为:比较以上的两个浮点数的表数精度,可以看出尾数基值rm=16时,其表数精度与rm=2相比将损失23倍。显然,当浮点数尾数的二进制位数长度相同时,尾数基值rm为2具有最高的表数精度。2.1.1浮点数表示第21页/共164页4浮点数机器字的格式设计定义一种浮点数机器
14、字的格式需要确定浮点数表示的6个参数,具体原则如下:确定尾数m的数制和码制。主要从运算简单、表数直观等方面来考虑,目前多数机器尾数m采用小数、原码表示。尾数m采用原码表示,虽然加减法比采用补码表示复杂,但乘除法要简单得多。确定阶码e的数制和码制。目前一般机器阶码e都采用整数、移码表示。阶码e采用移码表示的主要原因是使浮点数零与机器零一致,而且移码的大小直接反映了阶码真值的大小,这便于两个浮点数的阶码比较。由于阶码主要是用来扩大浮点数的示数范围的,因此,阶码e必须用整数表示。2.1.1浮点数表示浮点数表示第22页/共164页确定尾数的基rm。前面的讨论表明在浮点数机器字长一定的情况下,取rm=2
15、时,浮点数有最高的表数精度。目前多数机器尾数基值rm 取2。确定阶码的基re。在一般通用计算机中,都取re=2。在浮点数表示方式中,尾数长度n主要影响表数精度,阶码长度q主要影响示数范围。可根据要求的示数范围和表数精度确定n和q的值。按照目前多数实际机器的情况,假设:浮点数尾数m用原码、小数表示,阶码e用移码、整数表示,尾数基值rm=2,阶码基值re=2。要求浮点数表示范围不小于N(N为可表示的最大正数),表数精度不低于,确定q和n的值的方法如下。2.1.1浮点数表示浮点数表示第23页/共164页根据浮点数表示范围的要求,可得下式:解这个不等式:得到阶码长度q为:(2-4)2.1.1浮点数表示
16、浮点数表示第24页/共164页根据浮点数表示精度要求,可得下式:故得出尾数长度n为:(2-5)由(2-4)和(2-5)两个不等式得出的阶码长度q和尾数长度n,再加上一个尾数符号位mf和一个阶码符号位ef,就组成了一种满足以上假设浮点数表示范围和表数精度的浮点数机器字格式。一般为了使浮点数机器字字长满足整数边界的要求,还需要适当调整q和n的值。2.1.1浮点数表示浮点数表示第25页/共164页例2-3 设浮点数尾数m用原码、小数表示,阶码e用移码、整数表示,尾数基值rm=2,阶码基值re=2。要求规格化浮点数的表示范围N为,要求浮点数表数精度不低于,试设计一种浮点数的格式。根据浮点数表示范围的要
17、求,用式(2-4)计算阶码的长度q:2.1.1浮点数表示浮点数表示第26页/共164页考虑到要满足整数边界,可取阶码长度 位。根据浮点数表数精度要求,用式(2-5)计算尾数长度n:考虑到要满足整数边界,可取尾数长度n=54位。2.1.1浮点数表示浮点数表示第27页/共164页此例中,阶码长度q=7位,尾数长度n=54位,再加上1位尾数符号位和1位阶码符号位,则浮点数机器字字长为2+q+n=63位,距离机器字字长的整数边界要求还差1位。这一位可以加到尾数长度n上用以提高表数精度,也可以加到阶码长度q上用以扩大示数范围。如果将这1位加到尾数长度上,则设计的64位浮点数机器字格式如图2-3所示。2.
18、1.1浮点数表示浮点数表示第28页/共164页在数据表示上,高级语言与机器语言一直存在语义差距。高级语言中,在引用数据之前必须用类型说明语句定义数据类型,其运算符不反映数据类型,是通用的。如在C语言程序中,有以下语句:int i,jfloat x,yi=i+jx=x+y2.1.2自定义数据表示自定义数据表示第29页/共164页由此可见,i、j是整型数据,x、y是实型数据,运算符“+”可用于整型也可用于实型数据相加。然而,一般的机器语言程序则完全不同,指令中是由操作码定义操作数据的类型。如浮点数加法机器指令:以上指令中,操作码是浮点加,指定对操作数X和Y进行浮点加法运算,无论X和Y是否是浮点数,
19、都是按浮点数对待。因此,编译时就需要把高级语言程序中的数据类型说明语句和运算符转换成机器语言中不同类型指令的操作码,并要验证指令中操作数的类型是否与运算符所要求的一致,若不一致,还需用进行处理,从而增加了编译程序的复杂性。浮点加XY2.1.2自定义数据表示自定义数据表示第30页/共164页为了在数据表示上缩小高级语言与机器语言的语义差距,有人提出在机器语言级实现自定义数据表示,即由数据本身定义自己的类型,同时也简化了指令系统和编译器。自定义数据表示主要有带标志符的数据表示和数据描述符数据表示。1.带标志符的数据表示带标志符的数据表示是指在数据中采用若干位来表示数据的类型。2.1.2自定义数据表
20、示自定义数据表示第31页/共164页如早期的B7500大型机中,每个数据用三位标志符来区分8种数据类型,如图2-4所示。标志符虽然主要用于指明数据类型,也可用于指明所用信息类型。二十世纪70年代的R-2计算机中,采用带标志符的数据表示的数据字格式如图2-5所示。2.1.2自定义数据表示自定义数据表示第32页/共164页图2-5中,共有10位标志,2位功能位用于区别数据是操作数、指令、地址还是控制字。2位陷阱位用于软件定义4种捕捉方式,为程序员对程序进行跟踪控制提供方便。1位读写位用于指定数据是只读的还是可读可写的。4位类型位可在功能位定义的基础上进一步定义数据的类型。如果功能位定义了数据类型是
21、操作数,则类型位进一步定义操作数是二进制数、十进制数、定点数、浮点数、字符串、单精度、双精度等。如果功能位定义了数据类型是地址,则类型位进一步定义地址的寻址方式等。最后1位标志位是奇偶校验位。2.1.2自定义数据表示自定义数据表示第33页/共164页标志符数据表示缩小了高级语言和机器语言语义差距,但是数据字因增设标志符,会增加程序所占的主存空间,而且按标志符确定数据属性及判断操作数之间是否相容等操作,会降低单条指令的执行速度。2数据描述符数据表示对于一组具有相同类型而且是连续存放的数据,如向量、矩阵和多维数组,没有必要让每个数据都带有相同的标志符,因此,可以采用数据描述符。2.1.2自定义数据
22、表示自定义数据表示第34页/共164页数据描述符与标志符的主要区别是:标志符只作用于一个数据,而描述符要作用于一组数据。因此,标志符通常与数值一起存放在同一个数据单元中,而描述符一般单独占用一个存储单元。描述符在描述一组数据的属性中,还包括整个数据块的访问地址、长度及其他特征或信息。B6700计算机的描述符如图2-6所示,前三位为“000”,表示该字为数据;前三位为“101”,表示该字为数据描述符。如果该字是数据描述符,则进一步用8位标志位描述数据特性。如果描述的是整块数据时,“地址”字段用于指明首元素的地址,“长度”字段用于指明块内的元素个数。2.1.2自定义数据表示自定义数据表示第35页/
23、共164页(a)数据描述符图2-6 B6700机中数据描述符表示(b)数据2.1.2自定义数据表示自定义数据表示第36页/共164页可以将描述符按树型连接以描述多维数组表示。例如,有一个34二维阵列A:图2-7表示了用数据描述符描述A阵列的情况,具体使用了两级描述符,一级描述符一个,二级描述符是连续存放的三个描述符,描述符的前三位都为101。a00 a01 a02 a03 A=a10 a11 a12 a13 a20 a21 a22 a232.1.2自定义数据表示自定义数据表示第37页/共164页一级描述符的“长度”位为3,指向有3个元素的二级描述符的首址;每个二级描述符的“长度”位都为4,分别
24、指向对应的有4个元素的数据。实际上,两级描述符构成了一颗双层树。类似的,用三层结构的描述符就可以描述三维数组。图2-7中,二维阵列A是一条指令的一个操作数,指令中的一个地址X指向描述A阵列的一级描述符,OP表示操作码。2.1.2自定义数据表示自定义数据表示第38页/共164页 图2-7 用数据描述符表示一个34二维阵列2.1.2自定义数据表示自定义数据表示第39页/共164页从指令系统层来看,程序所处理的数据通常存放在主存储器、寄存器、堆栈、I/O接口中,寻址技术就是指如何从这些存储部件中获得数据的技术。寻址技术主要讨论存储部件的编址方式、寻址方式和定位方式。在“计算机组成原理”课程中对指令的
25、各种寻址方式有详细的介绍,在本节我们更注重于分析和比较它们的特点。2.2寻址技术寻址技术第40页/共164页要访问存放在主存储器、寄存器、堆栈、I/O接口中的数据,必须对这些存储部件的空间进行编址。编址方式主要涉及编址单位和编址空间。1.编址单位存储空间常用的编址单位有:字编址、字节编址和位编址。字编址是指每个编址单位与访问的数据存储单元(如读/写一次寄存器、主存单元)相一致,即每个编址单元的二进制位数与一次访问存储部件所获的二进制位数是相同的。这种方式硬件实现容易,但是不便于处理非数值(如字符)信息。目前仍然有一些面数值计算的机器采用这种编址方式。2.2.1编址方式编址方式第41页/共164
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 83 学习
限制150内