第二章 数据表示与指令系统
1.尾数的rm进制数位m'和尾数的二进制数位m的关系
存在m'=m/log2(rm)这种关系是因为,在机器中,一个rm进制的数位是用log2(rm)个机器数位来表示的。
假设rm=8,尾数为20,则m'=2,八进制数20转换成二进制数为10000,其二进制数位,即机器数位m=5。2=5/log2(8)。
note:这里的等号并不表示纯粹数学意义上的“等于”。
2.可表示的尾数个数公式 rm^m'(rm-1)/rm。
对于rm进制的数来说,每个数位均可以有0到rm-1,即rm个码。 m'个rm进制数位共有rm^m'种编码。但课本中讨论的是规格化数,即尾数的小数点后第一个数位不为零的数,所以,应该去掉小数点后第一个数位是0的那些非规格化的数。显然,非规格化数的个数占了全部尾数编码总数的1/rm的比例,所以可表示的浮点数规格化的尾数个数应该是:rm^m'(1-1/rm)。
exercises:
1.某模型时机共有7种指令,各指令使用频率分别为0.35,0.25,0.20,0.10,0.05,0.03,0.02,有8个通用数据寄存器和2个变址寄存器。
(1) 要求操作码的平均长最短,请设计操作码的编码,并计算所设计操作码的平均长。(4分)
(2) 设计8位长度的寄存器-寄存器型指令3种,16位长度的寄存器-存储器变址寻址方式指令4条,变址范围不小于正、负127。请写出指令格式,并给出各字段的长度和操作码编码。(6分)
解答: (1)全Huffman编码的平均码长是可用的二进制位编码中平均码长最短的编码。
全Huffman编码的平均码长=2*(0.35+0.25+0.20)+3*0.10+4*0.05+5*(0.02+0.03)=2.35
(2) 由于有8个通用数据寄存器和2个变址寄存器,所以通用寄存器用3位表示,变址寄存器用1位表示,8位的寄存器-寄存器型指令,3个操作码编码为00、01、10,16位的寄存器-存储器变址寻址方式指令, 4个操作码编码为1100、1101、1110、1111,
2位 3位 3位
OP R1 R2
操作码 寄存器1 寄存器2
4位 3位 1位 8位
OP R1 X d
操作码 寄存器1 变址寄存器 相对位移 主存逻辑地址
1.数据结构和机器的数据表示之间是什么关系?确定和引入数据表示的基本原则是什么?
答:数据表示是能由硬件直接识别和引用的数据类型。数据结构反映各种数据元素或信息单元之间的结构关系。
数据结构要通过软件映象变换成机器所具有的各种数据表示实现,所以数据表示是数据结构的组成元素。不同的数据表示可为数据结构的实现提供不同的支持,表现在实现效率和方便性不同。数据表示和数据结构是软件、硬件的交界面。
除基本数据表示不可少外,高级数据表示的引入遵循以下原则:
(1)看系统的效率有否提高,是否养活了实现时间和存储空间。
(2)看引入这种数据表示后,其通用性和利用率是否高。
2.标志符数据表示与描述符数据表示有何区别?描述符数据表示与向量数据表示对向量数据结构所提供的支持有什么不同?
答:标志符数据表示与描述符数据表示的差别是标志符与每个数据相连,合存于同一存储单元,描述单个数据的类型特性;描述符是与数据分开存放,用于描述向量、数组等成块数据的特征。
描述符数据表示为向量、数组的的实现提供了支持,有利于简化高级语言程序编译中的代码生成,可以比变址法更快地形成数据元素的地址。但描述符数据表示并不支持向量、数组数据结构的高效实现。而在有向量、数组数据表示的向量处理机上,硬件上设置有丰富的赂量或阵列运算指令,配有流水或阵列方式处理的高速运算器,不仅能快速形成向量、数组的元素地址,更重要的是便于实现把向量各元素成块预取到中央处理机,用一条向量、数组指令流水或同时对整个向量、数组高速处理.如让硬件越界判断与元素运算并行。这些比起用与向量、阵列无关的机器语言和数据表示串行实现要高效的多。
3.堆栈型机器与通用寄存器型机器的主要区别是什么?堆栈型机器系统结构为程序调用的哪些操作提供了支持?
答:通用寄存器型机器对堆栈数据结构实现的支持是较差的。表现在:(1)堆栈操作的指令少,功能单一;(2)堆栈在存储器内,访问堆栈速度低;(3)堆栈通常只用于保存于程序调用时的返回地址,少量用堆栈实现程序间的参数传递。
而堆栈型机器则不同,表现在:(1)有高速寄存器组成的硬件堆栈,并与主存中堆栈区在逻辑上组成整体,使堆栈的访问速度是寄存器的,容量是主存的;(2)丰富的堆栈指令可对堆栈中的数据进行各种运算和处理;(3)有力地支持高级语言的编译;(4)有力地支持子程序的嵌套和递归调用。
堆栈型机器系统结构有力地支持子程序的嵌套和递归调用。在程序调用时将返回地址、条件码、关键寄存器的内容等全部压入堆栈,待子程序返回时,再从堆栈中弹出。