计算机系统结构_第1页
计算机系统结构_第2页
计算机系统结构_第3页
计算机系统结构_第4页
计算机系统结构_第5页
已阅读5页,还剩115页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机系统结构主讲蔡启先

第2章

计算机指令系统

第2章要点2、数据表示的概念及其方法;3、数据的寻址方式;4、指令格式的设计;5、RISC和CISC指令系统。1、指令系统的涵义;2.22.12.42.3

指令系统是计算机系统软件与硬件接口及界面的一个主要标志。

指令系统的设计必须由硬件和软件人员共同完成。

第2章计算机指令系统§2.1数据类型§2.2寻址技术§2.3指令系统的设计§2.4指令系统的改进本章小结§2.1数据类型2.1.2

数据表示和数据结构2.1.3

浮点数据表示(略)2.1.4

自定义数据表示2.1.1

数据类型2.1.5

向量数组数据表示2.1.6

引入数据表示的原则数据类型:具有一组值的集合,且定义了作用于该集合的操作集。如:定点数据类型及定点数运算;数组数据类型及数组的运算等。数据类型可分为基本类型和结构类型。基本数据类型包括二进制位、二进制位串、整数、十进制数、浮点数、字符、布尔数等。所有系统结构都支持基本数据类型。2.1.1数据类型结构数据类型是指由一组相互有关的数据元素复合而成的数据类型。如数组、字符串、向量、堆栈、队列、记录等。它可分为系统数据类型、用户自定义数据类型。

基本类型和结构类型反映在系统结构设计上,就是数据表示和数据结构。

数据表示:能由机器硬件直接识别和被指令系统直接调用的数据类型。即:可以直接被计算器指令运算和处理,如整数、浮点数、向量等。数据结构研究的是面向系统软件和应用软件所需要处理的各种数据类型,如串、队、栈、向量、阵列、链表、树、图等,它是结构数据类型的组织方式。

2.1.2数据表示与数据结构问:8088具有浮点数据表示吗?8088能进行浮点运算吗?

数据表示是构成数据结构的元素,数据结构和数据表示是软、硬件的界面关键在于确定哪些数据类型用数据表示实现,而哪些采用数据结构来实现。这本质上是一个软硬件取舍的问题。(1)简单的、常用的、通用的数据类型采用数据表示;如int、float、Boolean、String、stack等。

(2)复杂的数据类型一般通过数据结构实现,或通过软硬件联合设计实现。如table、Graph、Tree...等实际系统中的设计例:向量数据结构变址操作对向量、阵列数据结构的支持1。浮点数据表示的设计

浮点数的表示方式实际上就是浮点数的存储格式,假定浮点数存储格式:2.1.3浮点数据表示尾数m指数e

尾符S 尾数M阶符F阶码E 该格式涉及6个参数,确定原则是:(1)尾数m的数制和码制一般采用原码定点小数表示。因为原码表示直观,虽然加减法不如补码,但是乘除法运算比补码表示简单。另外,由于有了指数表示,采用定点小数表示能简化运算特别是乘除法运算。(2)指数e的数制和码制一般采用移码定点整数表示。移码使浮点零和机器零一致,如果不一致,对机器硬件和软件的设计都会产生很多麻烦。例如要判断运算结果是否为零必须作特殊的处理。但是移码的加减法运算要比补码复杂,这对浮点乘除法不利。指数e主要用来扩大浮点数的表数范围,用整数表示足够了。(3)尾数M的基值rm一般来说,尾数基值取大,会扩大浮点数的表数范围、增加可表示数的个数、减少移位次数、降低右移造成的精度损失和提高运算速度。但是尾数基值取大,会降低数据的表示精度,使数值的分布变稀。因此rm的选取要根据应用需要来综合平衡。可以证明,在浮点数的总字长一定的情况下,尾数M的基值rm选择2较为适宜,此时浮点数具有最大的表数范围和最高的表数精度。如果再采用隐藏位表示方法,则这种浮点数表示方法又具有最高的表数效率。所谓隐藏位表示方法是指:由于浮点数尾数必须规格化,则其小数点后的第一位数码是固定的;这样在浮点数的存储和传输过程中,小数点后的第一位可以不表示出来,只在计算时恢复这一隐藏位,或采用特殊方法对运算结果进行修正。(4)阶码E的基值re一般通用计算机中,浮点数阶码的基值都取2。其原因一是机器存储基于二进制形态;二是若尾数基值为2,阶码基值取2有利于尾数规格化时的移位操作;三是指数e主要用来扩大浮点数的表数范围,采用其它进制并不比基2优越多少。

(5)尾数M字长p和阶码E字长q目前多数计算机的短浮点数是32位,长浮点数是64位。假定浮点数的尾数用原码定点小数表示,尾数基值为2,浮点数的指数用移码定点整数表示,阶码基值为2。根据实际需求给出表数范围不小于N(N为能表示的最大正数),表数精度不低于δ,并且要求尾数和指数都正负对称。由表数范围要求,得:则

得到阶码字长:

(2.1)

由表数精度的要求,得到:

则得到尾数字长:(2.2)

由(2.1)和(2.2)可计算出浮点数的阶码字长q(上取整)和尾数字长p(上取整)。通常要适当调整尾数字长p的阶码字长q的取值,使浮点数的总字长为一个合理的数值。

例2.1

设计一种浮点数格式,其表数范围不小于10-37至1037,正负数对称,表数精度不低于10-16。解:依题意,取表数范围N=1037,表数精度δ=10-16,由式(2.1),得:

上取整,得阶码字长q=7。由式(2.2),得:上取整,得尾数字长p=54。这样,加上一个尾数符号位和一个阶码符号位,浮点数的总字长为:p+q+2=54+7+2=63实际浮点数总字长应为8的倍数,故取浮点数总字长为64位。多出的一位可以加到尾数字长p中用于提高浮点数的表数精度,也可以加到阶码字长q中来扩大浮点数的表数范围。暂且让p增加一位,即p=55。图2-3是设计出来的浮点数格式。尾符S尾数M阶符F阶码E位序6362760长度1p=551q=7图2-3例2.1浮点数的设计格式

现代计算机普遍采用IEEE754标准来表示浮点数,该标准规定了4种浮点数的表示格式:即单精度(32位浮点数)、双精度(64位浮点数)、单精度扩展(≥43位,不常用)和双精度扩展(≥79位,通常采用80位进行实现)。

2。浮点运算尾数下溢处理方法

浮点数据的表示还应考虑运算中的精度损失。运算中的精度损失是指由于运算过程中尾数右移出机器字长使得有效数字丢失后所造成的精度损失,它与可表示数的精度是两个不同的概念。减少运算中的精度损失的关键是处理好运算中尾数超出字长的部分,通常称为浮点数尾数的下溢处理。常用到的下溢处理方法有:截断法、舍入法、恒置法、查表舍入法,判断方法的优劣是考察最大误差、平均积累误差及实现成本。

(1)截断法。方法是将尾数超出机器字长的部分截去。设尾数的有效数位数为m,则最大误差接近于2-m,如将±0.xxxx…x111…1中处于有效字长数值xxxx…x外的111…1全去掉。此法对正数而言,总是减小尾数,故总是产生负误差;反之,对负数总是产生正误差,不过综合考虑有利于积累误差的消除。但如果正数区和负数区分别考虑,则积累误差很大且无法调节。因此,尽管截断法最简单,不需硬件,也不占用时间,但是很少使用。

(2)恒置法。又称恒置r/2法(r是尾数的基值),或恒置1法(r=2时)。其方法是:把机器运算规定的字长的最低位恒置成r/2。如r=2时,尾数有效位的最低位恒为1;如r=16时,尾数有效位的最低位恒为8。在正数区,若原尾数有效位末位为0,恒置法将产生正误差,若原尾数有效位末位为1,恒置法将产生负误差,总的积累误差会很小。负数区也和正数区的积累误差一样。最大误差发生在有效字长数值xxxx…x1外的111…1全去掉,或有效字长数值xxxx…x0后都是0的情况,即最大误差的绝对值接近于2-m。

恒置法的主要缺点是表数精度比较低,这是由于尾数的最低位被恒置成r/2,因而损失了一位精度。其主要优点是容易实现,在正数区和负数区的积累误差都比较小,而且达到平衡。目前恒置法应用较为广泛。

(3)舍入法。

此法在十进制中称为4舍5入法,在二进制中为0舍1入法,在十六进制中为7舍8入法。即舍入法只看规格化尾数有效字长之后的1位,而不管后续的其它位,这样便于硬件实现。但是舍入法可能要作1次加法,尾数可能溢出,为此要做右规,又增加了实现的难度。不过实现难度换来的是误差的减少。与恒置法相比,舍入法尾数精度提高了1位,且在正数区和负数区的积累误差都能达到完全平衡。由于实现困难,目前很少使用,主要用于浮点运算的程序处理。

(4)查表舍入法。

此法只考察尾数有效字长的最低n位和超出尾数有效字长部分的最高k位,根据它们的情况列出一张对应的舍入处理表,通过查表直接进行舍入操作。查表舍入法的主要优点是可以按照实际情况来科学地安排舍入规则,不仅使最大误差减至很小,而且使积累误差达到完全平衡,其精度与舍入法相当,而误差更小。通常,舍入处理表可存放在ROM或PLA中,增加成本不多。查表无需计算,便捷,速度快,又通过改变得到误差控制,相对其它下溢处理方法优势明显,是一种很有前途的浮点运算尾数下溢处理方法。

(1)问题的提出:

①数据有各种类型,如何辩识则是一个重要的问题;

②数据类型既可以通过指令指定,也可以通过数据自已表示。

③当数据采用指令表示时,将产生大量的指令,即使是同类型的指令也可能会因操作数类型不同而产生大量的指令。如IBM370的加法指令就有8条。Intel86x中的乘法指令也有Mul、

Imul两种。鉴于以上理由,人们提出了自定义数据表示法。2.1.4自定义数据表示

(2)自定义数据表示的两种方法①带标识符的数据表示法:用以定义某个数据的数据类型和数值的数据表示。②数据描述符表示法:用以定义复杂数据结构(如向量、矩阵、多维数组、记录等)的数据表示。(3)带标识符的数据表示类型标志功能类型数值00:操作数01:指令11:标志10:地址000:二进制001:十进制011:定点数100:浮点数010:16进制特点:

A.标志符自定义数据类型,不仅可以定义数据类型,而且还可以用来描述机器中用到的各种有用信息。

B.标志符定义法,只对系统软件和高级语言的编译器建立,而对高级程序员则透明。标志符数据表示时存贮空间的开销问题?主要优点:

A.简化了指令系统和程序设计。

B.简化了编译程序。

C.便于实现一致性检查。

D.有可能由硬件自动变换数据类型。

E.支持数据库系统实现与数据类型无关的要求。

F.为软件调试和应用软件开发提供了支持。带来的问题:

A.增加程序所占存贮空间。

B.降低指令执行的速度。问题是局部的微观上的,整体上宏观上大大提高了时空效率。

形式化分析:

假设有A、B两台处理机如下:

A

处理机:没有采用标志符表示法,W=32bits,(指令和Data都一样)

B处理机:采用标志符表示法,Wdata=35bits,但WI=30,在Wdata中有了3位的ID。

假设:一条指令访问2个操作数,每个操作数平均访问R次,设某程序的总指令数为I

,试分别计算在两种计算机系统中占用的存贮空间。[求解]

要点说明:①在采用标识符的数据表示后,数据类型的一致性检查和转换等都用硬件完成;从而缩短了目标程序的长度,减少了占用的空间。因为在Compiler中,这种数据一致性检测程序要反复使用,如能通过硬件实现加以优化,则将大大提高程序执行的效率并减小占用空间。②标示符方法减少和简化了指令系统。

③简化了系统程序和编译程序的设计。

④方便了软件调试:通过设置陷井位trap位,可以捕捉指令执行状态。标示符方法存在的缺点:①指令和数据的长度或位数不相等,将导致存贮访问麻烦。

②指令的执行速度降低。这是因为在指定的执行过程中,要对每个标志符进行逐个解释,并判断数据是否相容,因此将导致指令本身的执行速度降低,但可使程序的宏观速度加快。

宏观时间=设计时间+编译时间+调用时间;

微观时间=程序的实际运行时间;

③硬件设计的复杂性提高。

(4)数据描述符表示法

特征:描述符和数据分开存放;例如:在B6700计算机中:101各种标志位长度地址Data000表示描述符Descriptor表示数据数据:描述符:Block/singleFloat/doubleRead/writeContinue/segment元素的个数

数据描述符还可用来描述多维数据结构。如图2.7所示。采用数据描述符表示法的优点和缺点与上一节介绍的标志符数据表示方法相同,它的机器结构可能比标志符数据表示方法更复杂。两者之间的差异:A.标志符通常只作用于一个数据,而数据描述符则将作用于一组数据。B.标识符一般和数值一起存放在同一个数据单元之中,而数据描述符一般单独存放,独立占据一个存贮单元。象这种情况就很难采用数据描述符进行优化。目的:如何为向量数据结构的实现和快速运算提供更好的硬件支持,是系统结构设计的另一个重要问题。举例如下:

2.1.5其他数据表示1。向量与数组数据表示如果设置以下向量运算指令:即实现:C(10:1000)=A(5:995)+B(10:1000)

对参加运算的源向量A、B及结果向量C都应指明其基地址、位移量、向量长度和元素步距等参数。

向量Vector的表示

V:(Base,Displacement,Length)①向量、数组数据表示的引入,便于流水和并行运算,实现数据的高速处理。②随着硬件的发展,部分数据结构将采用数据表示实现。

6、总结基地址位移量长度堆栈机器的特点:(1)具有高速寄存器组成的硬件堆栈。(2)具有丰富的堆栈操作指令。(3)支持高级语言程序的编译(4)支持子程序的嵌套和递归调用堆栈数据结构对编译和子程序调用具有高效的硬件支持,具有堆栈数据表示的机器称为堆栈机器。

2。堆栈数据表示算术运算:3*4+10/(8-6)逆波兰表达式

34*1086-/+

堆栈数据举例栈输入34*1086-/+34*1086-/+34*1086-/+121086-/+121086-/+121086-/+121086-/+12102/+125+172.1.6引入数据表示的原则高级数据的引入可从两个方面来考虑:1。系统的时空效率是否提高

实现时间:关键在于主存与处理机之间传送的信息量是否减少例:阵列运算

加速:

阵列型数据+阵列型指令+高速阵列运算部件,还减少了大量辅助操作2。通用性和利用率是否提高结论:①数据结构的发展总是优先于机器的数据表示;

②随着硬件的发展,部分数据结构将采用数据表示实现;

③新的数据表示的引入具有某种冒险性,因为在时空效率、通用性、利用率等方面没有得到实践的验证。2.2寻址技术

2.2.1

编址方式

2.2.2

寻址方式

2.2.3

程序装入与定位方式2.2.1

编址方式1、对象:Register、Memory、I/ODevices;通过编址使之唯一可被访问到;2、编址单位:字、字节、位三种。

(1)字编址方式:每个编址单位与设备存储器访问单位相一致,实现最简单。但不支持非数值计算,如string,char等的运算。

(2)字节编址方式:Normalmode,因为编址单位=信息的基本单位。出现的问题:存放单位和访问单位不一致的问题,因此将产生如何存放数据的问题。(3)位编址方式:存储器单元的每一位都有一个地址,常用于需要位控制的场合

字节编址方式下,产生的存贮和访问问题

①可以从任意地址位置开始存贮和访问。无论是双字、单字、半字或字节,顺序存放,可从任一位置开始访问。优点:不浪费存贮空间;

缺点:

a.双字、单字或半字都可能出现跨存储单元存放情况。致使访问一个变量或存贮单位必须花费两个存储周期的时间。

b.RAM的R/W控制比较复杂,Read时,要用and屏蔽取出有效的部分;Write时,要屏蔽2次完成。解决的方法:

a.无论是双字、单字、半字或字节,都必须从一个存储单元的起始地址开始存放,而这个存储单元的其它部分不用。这样,无论访问双字、单字、半字或字节,都可以在一个存储周期内完成,且读写控制简单。此法缺点是空间浪费很大。

b.按整数边界存储,即从地址的整倍数位置开始访问:双字地址最末3个二进制位必须是000,单字地址最末2个二进制位必须为00,半字地址最末1个二进制位必须为0。此法能够保证无论访问双字、单字、半字或字节,都可以在一个存储周期内完成。尽管有存储空间浪费和存储器读写控制较复杂的问题,但比a方式要好得多。字节编址的存储器中,还要考虑一个存储字中的多个字节如何编码问题。存在两种排序方法:(1)小端存储(LittleEndian):字节或半字的最低位字节(LowestSignificantBit,LSB)存放于内存最低位字节地址上。即:最低地址存放最低位字节

(2)大端存储(BigEndian):字节或半字的最高位字节(MostSignificantBit,MSB)存放于内存最低位字节地址上。即:最低地址存放最高位字节

12345678310(a)小端存储图2-10存储字中的字节编码顺序例78563412310(b)大端存储另外,字节编址的计算机中,需要指令地址计数器根据访问内容的长短进行计数,如指令字长为32位,则取该指令后,指令地址计数器应加4;若是64位字长指令,则需加8。3、编址方式(1)三个零地址空间通用寄存器、主存和I/O设备各自从“0”开始独立编址,即存在三个一维线性地址空间,这时要访问哪一类存储部件,要有相应的指令,并在指令中给出相应编址空间的地址。(2)两个零地址空间

通用寄存器独立编址,主存储器和输入输出设备统一编址。

(3)一个零地址空间,即所有设备都统一编址。(4)隐含编址即无零地址空间。如采用堆栈寻址的运算指令无需地址,其操作地址由栈顶指针自动决定。

4、I/O设备的非线性编址方式

①一台设备一个地址;

②一台设备两个地址:其中一个是Data寄存器,一个是state/control寄存器。

③一台设备多个I/O地址,如IntelPC机

2.2.2寻址方式1、立即数寻址方式直接在指令中给出操作数。其优点是不需用数据存储单元,指令译码时即得到操作数,指令执行速度快;缺点是只能用于源操作数寻址,且只能是精度不高的常数。

2、面向通用寄存器寻址方式优点是指令字长短、执行速度快,支持向量、矩阵等运算;缺点是由于寄存器种类功能多样,硬件控制复杂,分配不合理可能会使编译优化困难。

2.2.2寻址方式3、面向堆栈寻址方式:①支持高级语言编译优化,递归。

②无须编址,指令码最短。

③支持程序的嵌套和递归调用。4、面向主存寻址方式:普遍采用。主存寻址种类繁多,常用的有直接寻址、寄存器间接寻址、基址变址寻址、基址变址相对寻址、堆栈寻址(堆栈在主存中)等。灵活直接,适应各种计算和信息处理,但速度慢。常用寻址方式1、立即数寻址方式:AddAX,1002、寄存器寻址方式:AddAX,BX

3、直接寻址方式:

MOVAX,[100]4、变址寻址方式:

MOVAX,[si]5、间接寻址方式

:

MOVBX,offsetdataX

MOVAX,[BX]6、基址变址寻址方式:MOVAX,[BX+si]7、基址变址相对寻址:MOVAX,[BX+si+100]

8、堆栈寻址方式:PUSHAX2.2.3程序装入与定位方式逻辑地址(LA):程序员编写程序时使用的地址。程序的逻辑地址相对本程序一般从“0”开始主存物理地址(PA):程序在主存中的实际地址。从“0”开始的一维线性空间。1、问题描述:机器中往往有多道程序

①如何把程序从外存装入RAM的过程。

②如何将逻辑地址(LA)转成PA物理地址。程序装入物理主存进行定位时,需要进行逻辑地址空间到物理地址空间的映象和变换,即程序定位2、三种地址①符号地址②逻辑地址③物理地址3、程序需要定位的主要原因

:①程序独立性要求:由OS在装入执行时动态决定程序的位置。

②程序的模块化设计工作。

③程序本身很大,难以一次性加载。4、三种定位方式

程序定位的概念:将程序中的指令和数据的逻辑地址(相对地址)转换成主存中的物理地址的过程称为定位。

(1)直接定位方式:一般适用于单任务方式。要求:程序员编程时已经确定好了程序的地址空间,即利用物理地址编程。(早期应用)

(2)静态定位方式:目的程序装入主存时,通过调配运行系统配备的装入程序,把目的程序的逻辑地址用软的方法逐一修改成物理地址。程序执行时,物理地址不能再改变。JMP100JMP100+m操作系统程序地址空间主存物理空间第一次静态定位情况0x0mm+xJMP100JMP100+n操作系统程序地址空间主存物理空间第二次静态定位情况0x0nn+x图2-11某程序两次装入主存时的静态定位静态定位方式的优点是:①由软件完成;②可对多个程序段组成的程序进行静态链接,实现起来简单。其缺点主要有:①程序在执行之前一次装入到主存中,在程序执行期间不能动态调整。不利于程序的可重入;②多个用户或进程不能共享主存中的某段公共代码。不利于多道程序的运行环境;③若程序所需存储容量超过了分配给它的主存空间,则程序员必须采用覆盖结构;④不利于重叠、流水技术的应用。

(3)动态定位方式基址寻址法(硬逻辑实现):设置基址寄存器和地址加法器,将主存的起始地址存入该道程序的基址寄存器中,指令的地址字段不作修改,程序在执行过程中不断将逻辑地址加上基址寄存器中的基址来形成物理地址。动态定位方式的优点:①程序执行时,不一定整个调入主存中,而且一个程序可分配在多个不连续的主存空间内,从而可以使用较小的主存分配单位,提高了主存的利用效率;②多个程序可以共享主存中的同一个程序段;③支持虚拟存储器。主要缺点:①需要由硬件支持;②实现存储管理的软件算法比较复杂。JMP100JMP100操作系统程序地址空间主存物理空间0x0nn+x图2-12程序的动态定位方式基址寄存器100+n2.3指令系统的设计2.3.1

指令格式的优化设计2.3.2

指令功能的设计

2.3.1指令格式的优化设计指令系统的设计:

指令功能和指令格式的设计1、指令的组成

指令=[操作码

code,地址码Addr]

操作码的表示体现了指令功能指令功能:操作类型(作何操作)

操作内容(对何操作)问题:如何用最短的位数来表示指令的操作信息和地址信息(1)操作码的表示

地址码体现了操作数的来源和表示(2)地址码的表示问题:如何用最短的位数来表示指令的操作信息和地址信息?1.操作码的优化表示指令格式的优化目标

1。如何节省程序的存贮空间(使指令的平均字长最短);

2。指令格式怎样规整,尽可能减少译码时间,取指令的时间。

三种指令表示:定长表示法Huffman编码法扩展Huffman编码法

(1)定长表示法指令字长固定简单、高效。但耗内存,浪费信息量。

(2)Huffman编码法基本原理:

用最短的编码表示最常用的指令,而用较长的编码表示较少使用的指令,使总存贮量减少。

其中Pi为指令i的使用概率或频率。

li

为指令i的长度

①

编码平均长度:其中Pi为指令i的使用概率或频率。②最优Huffman编码法操作码的最短平均长度

:

指定长编码和Huffman编码方法相比,两者在占用二进制位长度方面的比值。

n:操作码的实际平均长度R越小越好③信息冗余量例1

设有一台模型机,共有7种不同指令,使用频度如下表:指令使用频度指令使用频度I10.40I50.04I20.30I60.03I30.15I70.03I40.05

根据表中的数据,可得:H=0.4×1.32+0.3×1.74+0.15×2.74+0.05×4.32+0.04×4.64+0.03×5.06+0.03×5.06=2.17

则3位定长操作码表示的R为:

Step1:按pi由小到大自左向右排列;

Step2:将当前最小的两个pi、pj

结合到一起,形成一棵树;

Step3:自Root开始编码,左1右0原则。例1的Huffman树

:

④Huffman树的构造方法0.030.06010.030.040.050.150.300.400.090.150.300.601.00111110000001011011100111011111011111⑤Huffman树法得到的编码平均长度

按例1计算得:H=0.40*1+0.30*2+0.15*3+0.05*5+0.04*5+0.03*5+0.03*5=2.20位编码的信息冗余为:

1-2.17/2.20=1.36%(3)扩展编码法

①采用原因:Huffman编码法所形成的操作码很不规整,因此要采用一种折衷方法。扩展编码法就是其中一种较好的选择。

②方法:一般采用等长扩展法,如4-8-12扩展法。扩展编码法举例指令频度Pi操作码(Huffman)操作码长度li扩展操作码Pi操作码长度liI10.4001002I20.30102012I30.151103102I40.0511100511004I50.0411101511014I60.0311110511104I70.0311111511114扩展后平均长度为:∑pili=(0.4+0.3+0.15)*2+(0.05+0.04+0.03+0.03)*4=2.30信息冗余为:1-2.17/2.30=0.0565R虽比Huffman编码法大,但比定长编码法小得多,是实用的优化编码法。例2.某计算机有10条指令,它们的使用频率分别为

0.30,0.20,0.16,0.09,0.08,0.07,

0.04,0.03,0.02,0.01(1)用Huffman编码对它们的操作码进行编码,并计算平均代码长度。(2)用扩展Huffman编码法对操作码进行编码,限两种操作码长度,并计算平均代码长度。答:(1)霍夫曼树如下:000000000111111111Huffman编码的结果以及各编码的长度如下0.300.200.160.090.080.070.040110100110011000000122334440.030.020.0100001000001000000566平均代码长度为:(0.30+0.20)×2+(0.16+0.09)×3+(0.08+0.07+0.04)×4+0.03×5+(0.02+0.01)×6=1+0.75+0.76+0.15+0.18=2.84答:(1)霍夫曼树如下:Huffman编码的结果以及各编码的长度如下所示:0.300.200.160.090.080.070.040.030.020.011101101001100110000001000010000010000002233444566平均代码长度为(0.30+0.20)×2+(0.16+0.09)×3+(0.08+0.07+0.04)×4+0.03×5+(0.02+0.01)×6=1+0.75+0.76+0.15+0.18=2.84000000000111111111(2)用扩展Huffman编码法对操作码进行编码,限两种操作码长度,并计算平均代码长度。(2)采用长度为2和长度为4两种编码:0.300.200.160.090.080.070.04000110001001101010111100

0.030.020.01111011111101平均代码长度为

(0.30+0.20)×2+(1-0.30-0.20)×4=3.0与Huffman编码法结果接近2.地址码的优化表示涉及问题:

①地址码个数:如何选择最优?

②如何缩短地址码?(1)地址码个数的选择A.三地址指令:(OPC,AD,AS1,AS2)

意义:[AS1]OPC[AS2]—>[AD]

B.两地址指令:(OPC,AD,AS)

意义:[AD]OPC[AS]—>[AD]

C.单地址指令:(OPC,A)

意义:OPC[A]—>[A]

D.零地址指令:(OPC)

意义:OPC(2)缩短地址码的方法

①问题分析:

由于逻辑地址空间的大小固定的。因此,缩短地址码长度的根本目的是用一个较短的地址码表示一个比较大的逻辑地址空间。

②问题的解决方法:

A.

用寄存器间址方法

MOV

BX,offset

x

ADD

AX,[BX]

ADD

CX,[BX]...

B.用变址寻址方式缩短地址码的长度,只要将基址放在基址register中。

C.用间接寻址方式缩短地址码的长度。即通过在RAM的低端开辟一个专门的存放地址的区域。

2.3.2指令功能的设计设计的基本要求:指令系统的完整性、规整性和高效率、兼容性。1、指令系统的完整性

完整性指对通用计算机系统应具备基本的指令种类。主要是5类,即数据传送(完成在寄存器、主存、堆栈之间的数据、地址等信息传送)类、运算(算术、逻辑、移位)类、程序控制(转移、程序调用和返回)类、输入输出类和处理机控制和调试(包括特权指令)类。

2.3.2指令功能的设计在指令系统功能的设计时,往往要考虑多种因素的组合。比如运算指令,要考虑4种因素的组合,即①操作种类;②数据表示;③数据长度;④数据存储设备。上述因素的组合会产生多种指令,要根据指令的使用频度、指令执行时间、硬件实现的复杂度等多方面情况,区分出必要的、可有可无的或不应该设置的。并经过模拟试验和统计分析,最后确定出合理的指令来。2、指令的规整性规整性主要包括对称性和均匀性。对称性是指与指令有关的数据存储设备、操作码的设置等要对称。均匀性是指对于各种不同的因素,如操作种类、数据表示、数据长度、数据存储设备等,指令的设置要同等对待。事实上,这些因素的组合数量很大。要完全达到均匀性是不可能的。因此设计指令系统时,对于规整性的要求必须有所选择。3、指令的高效率和兼容性

高效率是指指令系统的指令执行速度要快,使用频度要高。这方面RISC体系结构和CISC体系结构有不同的设计风格,将在2.4节介绍。兼容性是计算机系统所必须考虑的,兼容性好,将大大延续计算机系统的使用寿命。

设计要点:

①分析指令的分类或类型

②统计使用频率

③指令编码

④操作数编码等等。2.4指令系统的改进优化指令系统的两种不同的途径和方法2.4.1

复杂指令系统(CISC)2.4.2

精简指令系统(RISC)2.4.3

指令系统的优化发展方向

2.4.1复杂指令系统(CISC)复杂指令系统(ComplexInstructionSetComputer,CISC)增强指令功能,用新的复杂指令替代原由软件子程序完成的功能,实现软件功能硬化的计算机系统它可从面向目标程序、面向高级语言和面向操作系统这三方面的优化来考虑。

1.目标程序的优化思路:从时间上和空间上优化目标程序,将使用频度高的指令进行硬件加速,用新指令替代使用频度高的指令串主要途径:(1)增强数据转送指令的功能(2)增强运算型指令的功能(3)增强程序控制指令的功能如8088指令系统中的串操作指令和带重复前缀的串操作指令。指令REPMOVSW其功能相当于一个指令串:

MVSW:MOVAX,[SI]MOVES:[DI],AXINCSIINCSIINCDIINCDIDECCXJNZMVSW如函数运算指令。三角函数SIN(X)的计算是展开成级数进行一系列四则运算的结果如8088指令系统中的循环控制指令

LOOPNZLBL其功能相当于执行下述一系列操作:

CX-1→CX

若CX≠0且ZF≠1

则程序转向标号LBL,否则执行下一条指令2.对高级语言和编译程序的支持思路:缩小高级语言和机器语言的差距,使目标程序提高时空效率主要途径:(1)增强对高级语言和编译程序支持的指令,从而达到减少目标程序长度,减少目标程序执行时间的目的。例:赋值语句、IF.....Then....语句等的机器支持。(2)高级语言计算机——如Lisp计算机,prolog计算机。3.操作系统的优化针对操作系统的功能进行直接支持(1)优化支持操作系统的指令处理机工作状态和访问方式的转换进程的管理和切换存储管理和信息保护进程的同步和互斥,信号灯的管理等(2)增加专用于操作系统的指令如某些不公开的特权指令(3)把操作系统中使用频繁,对速度影响大的机构型软件子程序硬化或固化;(4)由专门的处理机来执行操作系统,形成功能分布处理系统结构。

(1)指令格式不固定,指令可长可短,操作数可多可少;(2)寻址方式复杂多样,操作数可来自寄存器,也可来自存储器;(3)采用微程序控制,执行每条指令均需完成一个微指令序列;(4)一般CPI>5,指令越复杂,CPI越大。4.CISC的特点2.4.2精简指令系统(RISC)精简指令系统(ReducedInstructionSetComputer,RISC)

减少指令数目,简化指令功能,降低硬件复杂度,提高指令执行速度(1个节拍内完成)的计算机系统RISC是80年代提出的一种新的设计思想。目前许多处理机都采用了RISC指令系统。例:Sun、ultrasparc、SGI、PowerPC、Intel80486、Pentium1-4等。1.CISC的问题(1)20%与80%规律

庞大的指令系统中大部分指令利用率低大约20%的指令占据了80%的执行时间.

事实上,频度最高的是三类指令——MOV、ALU、Jump。

(如对8088指令系统的统计分析)指令使用频度指令执行时间指令名称占百分比累计占百分比指令名称占百分比累计占百分比MOV24.8524.85IMUL19.5519.55PUSH10.3635.21MOV17.4436.99CMP10.2845.49PUSH11.1148.10JMPcc9.0354.52JMPcc10.5558.65ADD6.8061.32CMP7.8066.45POP4.1465.46CALL7.2773.72RET3.9269.38RET4.8578.57

Intel8088处理机指令系统使用频度和执行时间统计(部分)(2)VLSI技术的发展引起的问题

CISC控制十分复杂,不规整,不符合VLSI发展的方向,而RISC则控制简单,而且比较规整。在CISC处理机中,大量使用微程序技术以实现CISC。(3)软硬件功能分配问题

在CISC中,虽然增加了硬件指令,但并不能保证整个程序执行时间的缩短。因为这些复杂指令要消耗较多的CPU周期数,但又不常用。此外,CISC系统各种指令执行周期的复杂不一,很不适应流水线技术的发展。

精简指令集:保留最基本的,去掉复杂、使用频度不高的指令大大减少指令系统可采用寻址方式的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论