《体系结构试题例题有解释》由会员分享,可在线阅读,更多相关《体系结构试题例题有解释(11页珍藏版)》请在金锄头文库上搜索。
1、题2.1 数据结构和机器的数据表示之间是什么关系?确定和引入数据表示的基本原则是什么? 解答 数据表示是数据结构的组成元素,数据结构要通过软件映象变换成机器所具有的各种数据表示来实现。不同的数据表示可为数据结构的实现提供不同的支持,表现在实现效率和方便性上不同。数据结构和数据表示是软件和硬件之间的交界面。 确定和引入数据表示的基本原则:一是看系统效率有否提高,即是否减少了实现的时间和存贮的空间,实现时间有否减少又主要看在主存和处理机之间传送的信息量有否减少;二是看引入这种数据表示的通用性和利用率是否较高。 题2.2 标志符数据表示与描述符数据表示有何区别?描述符数据表示与向量数据表示对向量数据
2、结构所提供的支持有什么不同? 解答 在标志符数据表示中,标志符是与每个数据相连的,并且合存在同一个存贮单元中,用于描述单个数据的类型等属性;在描述符数据表示中,数据描述符是与数据分开独立存放的,主要是用于描述成块数据的类型属性,地址及其它信息的。 描述符数据表示在实现向量、阵列数据元素的索引上要比用变址方法的方便,能更快地形成元素的地址,从而可以迅速进行访问,同时,也有利于检查程序中的向量、数组在使用中是否越界。因此,它为向量、数组数据结构的实现提供了一定的支持,有利于简化编译中的代码生成。但是,描述符数据表示并没有向量、数组的运算类指令,也没有采用流水或处理单元阵列形式的高速运算硬件,没有时
3、阵列中每个元素又是一个子阵列的相关型交叉阵列进行处理的硬件。也投有时大量元素是零的稀疏向量和数据进行压缩存贮、还原、运算等指令和硬件。因此,它对向量和数组的数据结构提供的支持不够强,所以并不是向量数据表示。 题2.3 堆栈型机器与通用寄存器型机器的主要区别是什么?堆栈型机器系统结构为程序调用的哪些操作提供了支持? 解答 通用寄存器型机器对堆栈数据结构的实现支持较差。这表现在:堆栈操作用的机器指令数少,一般只是些简单的压入(PUSH)和弹出(POP)之类的指令,功能单一;堆栈被放置于主存中,因此每次访问堆栈都要进行访存,速度低;堆栈一般只用于保存于程序调用时的返回地址,只有少量参数经堆栈来传递,
4、大部分参数都是通过寄存器或存区来传递的。 堆栈型机器则不同,它主要表现在:有高速寄存器型的硬件堆栈,附加有控制电路让它与主存中的堆栈区在逻辑上构成一个整体,从而使堆栈的访问速度接近于寄存器的速度,容量却是主存的;有对堆栈的栈顶元素或栈顶元素和次栈顶元素进行各种操作和运算处理的丰富的堆栈操作指令,且功能很强;有力地支持高级语言程序的编译,由逆波兰表达式作为编译的中间语言,就可直接生成堆栈指令构成的程序,进行多元素表达式的计算,有力地支持于程序的嵌套和递归调用。 堆栈型机器系统结构为程序的嵌套和递归调用提供了很强的支持,表现在:在程序调用时,不仅用堆栈保存返回地址,还保存条件码等多种状态信息和某些
5、关键寄存器的容,如全局性参数、局部性参数,以及为被调用的程序在堆栈中建立一个存放局部变量、中间结果等现场信息的工作区。堆栈机器在程序调用时,将这些容全部用硬件方式压入堆栈。当子程序返回时,返回地址、运算结果、返回点现场信息均通过于程序返回指令用硬件方式从堆栈中弹出。只需修改堆栈指针容就可删去堆栈中不用的信息。堆栈机器能及时释放不用的单元,访问堆栈时大量使用零地址指令,省去了地址码字段。即使访问主存,也采用相对寻址,使访存的地址位数较少,从而使堆栈型机器上运行的程序较短,程序执行时所用的存贮单元数少,存贮效率较高。 题2.4 设某机阶码6位、尾数48位。阶符和数符不在其,当尾数分别以2、8、16
6、为基时,在非负阶、正尾数、规格化数情况下,求出 其最小阶、最大阶、阶的个数,最小尾数值、最大尾数值、可表示的最小值和最大值及可表示的规格化数的总个数。 分析 由教材中图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)。阶的
7、个数由阶值0到2 -1l,共有2 个,即64个。 所谓规格化正尾数,就是正尾数小数点后的第1个rm进制数位不是0的数。因为尾数为全“0”的数是机器零,不作为机器中可表示的数。所以,最小正尾数值应当是rm进制尾数的小数点后第1个rm进制数位为“1”,其余数位为全“0”的数值,即1 rm 。最大正尾数值当然是rm进制尾数各数位均为rm一1的数。可以设想,在小数点后,rm进制的第m个数位上加1,即加上rm-m,就会使整个尾数值变为1。所以。可表示的最大尾数值应当是1- rm-m。 按浮点数表示格式的含义,浮点数的值应当是r 尾数值。浮点数可表示的最小值应当是阶为非负阶的最小值0,尾数为规格化最小正尾
8、数值,所以,可表示浮点数最小值应当为rm0 rm-1= rm-1;可表示浮点数的最大值应当是阶为正的最大值2 -1,尾数为规格化正尾数最大值,所以,可表示浮点数的最大值应为r (1- r )。 可表示的浮点数规格化数的总个数应当是可表示阶的个数与可表示尾数的个数的乘积。由于在m个尾数rm进制数位中,每个数位均可以有0(rm-1),共有rm个码,所以,尾数的编码总个数为r 个,但应当去掉小数点后第1个数位是0的那些非规格化的数。显然,非规格化数的个数占了全部尾数可编码总数的lrm的比例。所以,可表示的浮点数规格化数的总个数就为2 r (1-1/rm) 。 只要将p、m、m、 rm的具体值代入上述
9、各式就可以得到本题的解答。 解答 p=6、m=48时,在非负阶、规格化、正尾数情况下,rm =2、8、16时的各个参数的计算结果如表2.1所示。非负阶、正尾数、规格化 尾基rm(p=16位,m=48位) 2(m=48) 8(m=16) 16(m=12)最小阶值 0 0 0 0最大阶值 2 -163 63 63阶的个数 2 64 64 64尾数最小值 rm-1 1/2 1/8 1/16尾数最大值 1- rm-m 1-2-48 1-8-16 1-16-12最小值 rm-1 1/2 1/8 1/16最大值 r (1- r )263(1-2-48) 863(1-8-16) 1663(1-16-12)数
10、的总个数 2 r 2 7 15 题2.5 (1)浮点数系统使用的阶基rp2。阶码位数p=2,尾数基值rm=10,以rm为基的尾数位数m1,按照使用的位数来说,等价于m4。试计算在非负阶、正尾数、规格化数情况下的最小尾数值、最大尾数值、最大阶值、可表示的最小值和最大值及可表示数的个数。 (2)对于rp2,p2,rm4,m2,重复以上计算。 分析 因为尾数基值rm10,所以,rm进制尾数的每个数位只能取09中的一个值,即每个数位能取的最大值为9。 解答 (1)在非负阶、正尾数、规格化数的情况下, 最小尾数值为rm-1l0-10.1 最大尾数值为1- rm-m=1-10-10.9 最大阶值为2 -1
11、=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
12、个单元。其中,每个单元的地址为待下溢处理的值,该地址单元的容应为下滥处理后的3位结果值。所以,ROM表存贮单元的字长为3位。 下溢处理表的填表原则是除了待处理的4位码的最高3位为全“1”时,按截断法填成全“1”外,其它情况均按4位(地址)码的最低位按0舍1入来填处理后相应该单元的3位结果。这样,既可体现出舍入法的优点。又避免了舍入法因进位影响下滥处理的速度的缺陷。同时,让完全用舍入法处理时所产生的平均误差略偏正的值可以与截断法的平均误差为负进行抵消,从而使经过这样的下溢处理之后,能让平均误差人为地调整到接近于零。 解答 ROM下溢处理表16个单元的地址码00001111,它与其容(即下溢处理后
13、的3位结果值)的对照关系如表2.2所示。地址 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111容 000 001 001 010 010 011 011 100 100 101 101 110 110 111 111 111 题2.9 变址寻址和基址寻址各适用于何种场合?设计一种只用6位地址码就可以指向一个址空间中任意64个地址之一的寻址机构。 解答 变址寻址适合在标量计算机中,通过循环程序对变址寄存#容修改其变址值,来对向量或数组等数据结构中的元素进行访问和处理。基址寻址则主要是对程
14、序的逻辑地址空间到物理地址空间进行变换时使用的,以支持程序使用动态再定位的技术。 设计一种只用6位地址码就可以指向一个址空间中任意64个地址之一的寻址机构,意味着指令中为寻找该操作数的地址码只有6位,只好用来表示这64个地址中的某一个。那么,这64个地址之一应当是在哪个大的地址空间中的,就得使用其它办法来指明。这里可列举常见的两种做法。 一种是采用隐含寻址,让标志这64个地址是相对哪个基点地址的区域,用指令隐式规定的某个专门的寄存器中所存放的基址值来给出。例如,可约定某个变址寄存器或某个基址寄存器。程序执行时,每当要访存时,就可以经硬件加法器将隐含寄存器的基址值与指令中给出的6位相对位移量相加
15、来形成其访存单元的物理地址。 另一种是规定基点地址就用程序计数器,程序计数器(PC)存放的是当前所执行指令 的下一条指令所在主存中的地址(或偏移地址),因此,可以通过使用无条件转移指令来修改PC的容,实现在一个大的地址空间中的访问,这就是所谓的PC自相对寻址。做法是通过将PC的容和指令中所提供的6位相对位移量相加来形成主存单元的物理地址。 题2.8 指令中常用下列寻址方式来得到操作数:立即操作数、间接寻址、直接寻址、寄存器寻址、自相对寻址。请分别说明这些寻址方法的原理,井对它们在如下4个方面进行比较:可表示操作数的围大小;除取指外,为获得操作数所需访问主存的最少次数;为指明该操作数所占用指令中的信息位数的多少;寻址复杂性程度。 解答 指令为寻找或访问到所需操作数的某种寻址方式,其含义在不同的计算机中会有所差别。下面,我们以大多数计算机中的情况来定义。 立即操作数的寻址原理是,操作数以常数形式直接存放在指令中操作码的后面。一旦指令被取出,操作数也被取得,立即可以使用。立