您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 体系结构试题例题有解释
题2.1数据结构和机器的数据表示之间是什么关系?确定和引入数据表示的基本原则是什么?[解答]数据表示是数据结构的组成元素,数据结构要通过软件映象变换成机器所具有的各种数据表示来实现。不同的数据表示可为数据结构的实现提供不同的支持,表现在实现效率和方便性上不同。数据结构和数据表示是软件和硬件之间的交界面。确定和引入数据表示的基本原则:一是看系统效率有否提高,即是否减少了实现的时间和存贮的空间,实现时间有否减少又主要看在主存和处理机之间传送的信息量有否减少;二是看引入这种数据表示的通用性和利用率是否较高。题2.2标志符数据表示与描述符数据表示有何区别?描述符数据表示与向量数据表示对向量数据结构所提供的支持有什么不同?[解答]在标志符数据表示中,标志符是与每个数据相连的,并且合存在同一个存贮单元中,用于描述单个数据的类型等属性;在描述符数据表示中,数据描述符是与数据分开独立存放的,主要是用于描述成块数据的类型属性,地址及其它信息的。描述符数据表示在实现向量、阵列数据元素的索引上要比用变址方法的方便,能更快地形成元素的地址,从而可以迅速进行访问,同时,也有利于检查程序中的向量、数组在使用中是否越界。因此,它为向量、数组数据结构的实现提供了一定的支持,有利于简化编译中的代码生成。但是,描述符数据表示并没有向量、数组的运算类指令,也没有采用流水或处理单元阵列形式的高速运算硬件,没有时阵列中每个元素又是一个子阵列的相关型交叉阵列进行处理的硬件。也投有时大量元素是零的稀疏向量和数据进行压缩存贮、还原、运算等指令和硬件。因此,它对向量和数组的数据结构提供的支持不够强,所以并不是向量数据表示。题2.3堆栈型机器与通用寄存器型机器的主要区别是什么?堆栈型机器系统结构为程序调用的哪些操作提供了支持?[解答]通用寄存器型机器对堆栈数据结构的实现支持较差。这表现在:堆栈操作用的机器指令数少,一般只是些简单的压入(PUSH)和弹出(POP)之类的指令,功能单一;堆栈被放置于主存中,因此每次访问堆栈都要进行访存,速度低;堆栈一般只用于保存于程序调用时的返回地址,只有少量参数经堆栈来传递,大部分参数都是通过寄存器或内存区来传递的。堆栈型机器则不同,它主要表现在:有高速寄存器型的硬件堆栈,附加有控制电路让它与主存中的堆栈区在逻辑上构成一个整体,从而使堆栈的访问速度接近于寄存器的速度,容量却是主存的;有对堆栈的栈顶元素或栈顶元素和次栈顶元素进行各种操作和运算处理的丰富的堆栈操作指令,且功能很强;有力地支持高级语言程序的编译,由逆波兰表达式作为编译的中间语言,就可直接生成堆栈指令构成的程序,进行多元素表达式的计算,有力地支持于程序的嵌套和递归调用。堆栈型机器系统结构为程序的嵌套和递归调用提供了很强的支持,表现在:在程序调用时,不仅用堆栈保存返回地址,还保存条件码等多种状态信息和某些关键寄存器的内容,如全局性参数、局部性参数,以及为被调用的程序在堆栈中建立一个存放局部变量、中间结果等现场信息的工作区。堆栈机器在程序调用时,将这些内容全部用硬件方式压入堆栈。当子程序返回时,返回地址、运算结果、返回点现场信息均通过于程序返回指令用硬件方式从堆栈中弹出。只需修改堆栈指针内容就可删去堆栈中不用的信息。堆栈机器能及时释放不用的单元,访问堆栈时大量使用零地址指令,省去了地址码字段。即使访问主存,也采用相对寻址,使访存的地址位数较少,从而使堆栈型机器上运行的程序较短,程序执行时所用的存贮单元数少,存贮效率较高。题2.4设某机阶码6位、尾数48位。阶符和数符不在其内,当尾数分别以2、8、16为基时,在非负阶、正尾数、规格化数情况下,求出其最小阶、最大阶、阶的个数,最小尾数值、最大尾数值、可表示的最小值和最大值及可表示的规格化数的总个数。[分析]由教材中图2.7的浮点数表示格式可知,阶码6位,就是阶码部分除去阶符外,剩下的阶码值部分为6位;尾数48位,就是尾数的二进位位数m=48位。当尾数基值为rm时,尾数每一个rm。进制数位需用个二进位表示。尾数基值为rm的尾数位数m’=m/。对于rm为2、8、16时,m’分别为48、16、12位。由于是非负阶,最小阶应当是阶值部分为全“0”。所以,最小阶为0。最大阶应当是阶值部分6位为全‘l”,所以,最大阶为2-1,即26-1(=63)。阶的个数由阶值0到2-1l,共有2个,即64个。所谓规格化正尾数,就是正尾数小数点后的第1个rm进制数位不是0的数。因为尾数为全“0”的数是机器零,不作为机器中可表示的数。所以,最小正尾数值应当是rm进制尾数的小数点后第1个rm进制数位为“1”,其余数位为全“0”的数值,即1rm。最大正尾数值当然是rm进制尾数各数位均为rm一1的数。可以设想,在小数点后,rm进制的第m’个数位上加1,即加上rm-m’,就会使整个尾数值变为1。所以。可表示的最大尾数值应当是1-rm-m’。按浮点数表示格式的含义,浮点数的值应当是r尾数值。浮点数可表示的最小值应当是阶为非负阶的最小值0,尾数为规格化最小正尾数值,所以,可表示浮点数最小值应当为rm0•rm-1=rm-1;可表示浮点数的最大值应当是阶为正的最大值2-1,尾数为规格化正尾数最大值,所以,可表示浮点数的最大值应为r•(1-r)。可表示的浮点数规格化数的总个数应当是可表示阶的个数与可表示尾数的个数的乘积。由于在m’个尾数rm进制数位中,每个数位均可以有0~(rm-1),共有rm个码,所以,尾数的编码总个数为r个,但应当去掉小数点后第1个数位是0的那些非规格化的数。显然,非规格化数的个数占了全部尾数可编码总数的l/rm的比例。所以,可表示的浮点数规格化数的总个数就为2•r•(1-1/rm)。只要将p、m、m’、rm的具体值代入上述各式就可以得到本题的解答。[解答]p=6、m=48时,在非负阶、规格化、正尾数情况下,rm=2、8、16时的各个参数的计算结果如表2.1所示。非负阶、正尾数、规格化尾基rm(p=16位,m=48位)2(m’=48)8(m’=16)16(m’=12)最小阶值0000最大阶值2-1636363阶的个数2646464尾数最小值rm-11/21/81/16尾数最大值1-rm-m’1-2-481-8-161-16-12最小值rm-11/21/81/16最大值r•(1-r)263•(1-2-48)863•(1-8-16)1663•(1-16-12)数的总个数2•r•2715题2.5(1)浮点数系统使用的阶基rp=2。阶码位数p=2,尾数基值rm=10,以rm为基的尾数位数m’=1,按照使用的位数来说,等价于m=4。试计算在非负阶、正尾数、规格化数情况下的最小尾数值、最大尾数值、最大阶值、可表示的最小值和最大值及可表示数的个数。(2)对于rp=2,p=2,rm=4,m’=2,重复以上计算。[分析]因为尾数基值rm=10,所以,rm进制尾数的每个数位只能取0~9中的一个值,即每个数位能取的最大值为9。[解答](1)在非负阶、正尾数、规格化数的情况下,最小尾数值为rm-1=l0-1=0.1最大尾数值为1-rm-m’=1-10-1=0.9最大阶值为2-1=2可表示的最小值为=rm-1=10-1=0.1可表示的最大值为r•(1-r)=103(1-10-1)=900可表示的数的个数为2•r•=(2)最小尾数值为rm-1=4-1=0.25最大尾数值为1-rm-m’=1-4-2=15/16最大阶值为2-1=22-1=3可表示的最小值为rm-1=4-1=0.25可表示的最大值为r•(1-r)=可表示的数的个数为2•r•=4题2.6由4位数(其中最低位为下溢处理之附加位)经ROM查表舍入法下溢处理成3位结果,设计使下滥处理干均误差接近于零的ROM表,列出ROM编码表地址与内容的对应关系。[分析]根据题意,ROM表应当有24个单元。其中,每个单元的地址为待下溢处理的值,该地址单元的内容应为下滥处理后的3位结果值。所以,ROM表存贮单元的字长为3位。下溢处理表的填表原则是除了待处理的4位码的最高3位为全“1”时,按截断法填成全“1”外,其它情况均按4位(地址)码的最低位按0舍1入来填处理后相应该单元的3位结果。这样,既可体现出舍入法的优点。又避免了舍入法因进位影响下滥处理的速度的缺陷。同时,让完全用舍入法处理时所产生的平均误差略偏正的值可以与截断法的平均误差为负进行抵消,从而使经过这样的下溢处理之后,能让平均误差人为地调整到接近于零。[解答]ROM下溢处理表16个单元的地址码0000~1111,它与其内容(即下溢处理后的3位结果值)的对照关系如表2.2所示。地址0000000100100011010001010110011110001001101010111100110111101111内容000001001010010011011100100101101110110111111111题2.9变址寻址和基址寻址各适用于何种场合?设计一种只用6位地址码就可以指向一个大地址空间中任意64个地址之一的寻址机构。[解答]变址寻址适合在标量计算机中,通过循环程序对变址寄存#内容修改其变址值,来对向量或数组等数据结构中的元素进行访问和处理。基址寻址则主要是对程序的逻辑地址空间到物理地址空间进行变换时使用的,以支持程序使用动态再定位的技术。设计一种只用6位地址码就可以指向一个大地址空间中任意64个地址之一的寻址机构,意味着指令中为寻找该操作数的地址码只有6位,只好用来表示这64个地址中的某一个。那么,这64个地址之一应当是在哪个大的地址空间中的,就得使用其它办法来指明。这里可列举常见的两种做法。一种是采用隐含寻址,让标志这64个地址是相对哪个基点地址的区域,用指令隐式规定的某个专门的寄存器中所存放的基址值来给出。例如,可约定某个变址寄存器或某个基址寄存器。程序执行时,每当要访存时,就可以经硬件加法器将隐含寄存器的基址值与指令中给出的6位相对位移量相加来形成其访存单元的物理地址。另一种是规定基点地址就用程序计数器,程序计数器(PC)存放的是当前所执行指令的下一条指令所在主存中的地址(或偏移地址),因此,可以通过使用无条件转移指令来修改PC的内容,实现在一个大的地址空间中的访问,这就是所谓的PC自相对寻址。做法是通过将PC的内容和指令中所提供的6位相对位移量相加来形成主存单元的物理地址。题2.8指令中常用下列寻址方式来得到操作数:立即操作数、间接寻址、直接寻址、寄存器寻址、自相对寻址。请分别说明这些寻址方法的原理,井对它们在如下4个方面进行比较:可表示操作数的范围大小;除取指外,为获得操作数所需访问主存的最少次数;为指明该操作数所占用指令中的信息位数的多少;寻址复杂性程度。[解答]指令为寻找或访问到所需操作数的某种寻址方式,其含义在不同的计算机中会有所差别。下面,我们以大多数计算机中的情况来定义。立即操作数的寻址原理是,操作数以常数形式直接存放在指令中操作码的后面。一旦指令被取出,操作数也被取得,立即可以使用。立即操作数由于受机器指令字长的限制,可表示数的范围小,一般为8位或16位的二进制常数。指令取出后,为获得操作数不需要再访存,即访存0次。操作数所占用指令中的信息位数是立即数在可表示最大值范围时所要占用的二进位位数。寻址的复杂性程度相对最低。间接寻址可以有寄存器间接寻址和存贮器间接寻址两种。其寻址原理是,在指令的操作数地址字段上只给出存放操作数在内存中物理地址的寄存器号或存贮单元地址。先由指令操作数地址字段,从寄存器或存贮单元中取出数在存贮器中的地址。再按此地址访存,才能间接取得所要的操作数。有的计算机在存贮器间接寻址时,还可以有多重间接寻址,即从存贮单元中取出的内容作为地址。再去访有时得到的并不是操作数,而只是操作数在内存中的地址,或是地址的地址。如此顺序递推。间接寻址访问到的操作数范围大,可以是主存中能访问到可表示数值范围最大的数。除取指外,获得所需操作数所需访问主存的最少次数,对于奇存器间接寻址为一次。对于存贮器间接寻址为两次。为指明该操作数所占用指令中的信息位数,对于寄存器间接
本文标题:体系结构试题例题有解释
链接地址:https://www.777doc.com/doc-4596918 .html