么这64个地址之一应当是在哪个大的地址空间的,就得使用其他办法来指明。这里可列举常见的两种做法。
一种是采用隐含寻址,让标志这64个地址是相对哪个基点地址的区域用指令隐式规定的某个专门的寄存器中所存放的基址值来给出。例如,可约定某个变址寄存器或某个基址器。程序执行时,每当要访存时,就可以经硬件加法器将隐含寄存器的基址值与指令中给出的6位相对位移量相加来形成其访存单元的物理地址。
另一种是规定基点地址就是程序计数器,程序计数器(PC)存放的是当前所执行指令的下一条指令所在主存中的地址(或偏移地址)。因此,可以通过使用无条件转移指令来修改PC的内容,实现在一个大的地址空间中的访问,这就是所谓的PC自相对寻址。做法是通过将PC的内容与指令中所提供的6位相对位移量相加来形成主存单元的物理地址。
8.经统计,某机器14条指令的使用频度分别为:0.01,0.15,0.12,0.03,0.02,0.04,0.02,0.04,0.01,0.13,0.15,0.14,0.11,0.03。分别求出用等长码、Huffman码、只有两种码长的扩展操作码3种编码方式的操作码平均码长。 解:
等长操作码的平均码长=4位;Huffman编码的平均码长=3.38位;只有两种码长的扩展操作码的平均码长=3.4位。
9.若某机要求:三地址指令4条,单地址指令255条,零地址指令16条。设指令字长为12位.每个
地址码长为3位。问能否以扩展操作码为其编码?如果其中单地址指令为254条呢?说明其理由。
答:①不能用扩展码为其编码。 ∵指令字长12位,每个地址码占3位;
∴三地址指令最多是2^(12-3-3-3)=8条, 现三地址指令需4条, ∴可有4条编码作为扩展码,
∴单地址指令最多为4×2^3×2^3=2^8=256条, 现要求单地址指令255条,∴可有一条编码作扩展码 ∴零地址指令最多为1×2^3=8条 不满足题目要求e
∴不可能以扩展码为其编码。
②若单地址指令254条,可以用扩展码为其编码。
∵依据①中推导,单地址指令中可用2条编码作为扩展码 ∴零地址指令为2×2^3=16条,满足题目要求
10、某机指令字长16位。设有单地址指令和双地址指令两类。若每个地址字段为6位.且双地址指
令有X条。问单地址指令最多可以有多少条? 答:
双地址指令最多是2^(16-6-6)=2^4=16条, 现双地址指令有X条, ∴可有(16-X)条编码作为扩展码, ∴单地址指令最多为(16-X)×2^6
11.何谓指令格式的优化?简要列举包括操作码和地址码两部分的指令格式优化可采用的各种途径 和思路。
答:指令格式的优化指如何用最短位数表示指令的操作信息和地址信息,使程序中指令的平均字 长最短。
为此用到Huffman压缩概念。其基本思想是,当各种事件发生概率不均等时,采用优化技术对
发生概率最高的事件用最短的位数(时间)来表示(处理),而对出现概率较低的事件,允许采用较
长位数(时间)来表示(处理),会导致表示(处理)的平均位数(时间)的缩短。
①用此思想可对操作码进行优化。首先通过大量已有典型程序进行统计,可得到每种指令在
程序中出现的概率(使用频度)。然后构造它们的Huffman树。方法如下:
a)被统计指令按使用频由小到大排列;
b)每次选择其中最小的二个频度合成一个频度是它们二者之和的新结点,并将该结点按频度
大小插到余下的未参与结合的频度值中;
c)如此继续,直至全部频度结合完毕形成根结点。
最后从根结点开始对每个结点的两个分支分别用0、1表示,则到达各频度指令的代码序列就
构成该频度指令的Huffman码。
Huffman码是最优化的编码,但这种编码码长种类太多.不便于译码,不能实用,为此可采用
下面的扩展操作码编码。扩展操作码编码是介于定长二进制编码和全Huffman编码之间的一种编
码,仍利用Huffman压缩思想,使操作码平均长度缩短。其操作码长度不定,但只有有限几种码
长,是一种可实用的优化编码方法。扩展方法应根据指令使用频度pi的分布而定.如pi值在头15
种指令中都比较大,但在30种指令以后急剧减少,则宜选15/15/15法;若pi值在头8种指令中较
大,之后的64种指令pi值也不低时,则宜选8/64/512法。衡量标准是哪种编码使平均长度最短。
②对地址码的优化:
操作码的优化表示可以使指令总位数减少,但为不降低访存指令的速度.必须维持指令字按
整数边界存储,所以首先应考虑地址码也用可变长.让长操作码与短地址码配合.即使是定长指
令字,也可利用操作码优化腾出的空白。减少存储空间的浪费。如果最常用的操作码最短,其地
址码个数越多指令功能越强。如为实现A+B→C,若采用单地址指令需经取A,加B,送C三条指令
完成,而用了三地址指令只需一条,减少程序占用空间。
其次考虑多种寻址方式在满足很大寻址空间前提下,缩短地址码位数。如在IBM370中用16位
地址码可通过基址寻址形成24位访存物理地址。以20位地址码通过基址+变址形成24位访存物理地
址。还可采用相对寻址,分段存储管理方式。
另外可考虑在同种地址制下的多种地址形式.如让空白处放直接操作数或常数。
12.某模型机9条指令使用频率为:
ADD(加) 30% SUB(减) 24% JOM(按负转移) 6% STO(存) 7% JMP(转移) 7% SHR(右移) 2% CIL(循环) 3% CLA(清加) 20% STP(停机) 1%
要求有两种指令字长,都按双操作数指令格式编排,采用扩展操作码,并限制只能有两种操作码码长。设该机有若干通用寄存器,主存为16位宽,按字节编址,采用按整数边界存储。任何指令都在一个主存周期中取得,短指令为寄存器-寄存器型,长指令为寄存器-主存型,主存地址应能变址寻址。
(1)仅根据使用频率,不考虑其它要求,设计出全Huffman操作码,计算其平均码长; (2)考虑题目全部要求,设计优化实用的操作形式,并计算其操作码的平均码长; (3)该机允许使用多少可编址的通用寄存器? (4)画出该机两种指令字格式,标出各字段之位数;
(5)指出访存操作数地址寻址的最大相对位移量为多少个字节? 解:
第(1)和(2)中Huffman和扩展操作码的编码及平均码长如下表: 指令Ii 使用频度Pi Huffman编码 扩展操作码编码 I1 30% 10 00 I2 24% 00 01 I3 20% 01 10 I4 7% 1100 11000 I5 7% 1101 11001 I6 6% 1110 11010 I7 3% 11110 11011 I8 2% 111110 11100 I9 1% 111111 11101 西个马pili 2.61 2.78
(3)8个。
(4)两种指令格式如下图所示: 2位 3位 3位 OP R1 R2
操作码 寄存器1 寄存器2
5位 3位 3位 5位 OP R1 X d
操作码 寄存器1 变址寄存器 相对位移 主存逻辑地址
(5)访存操作数地址寻址的最大相对位移量为32个字节。 13.设计RISC机器的一般原则及可采用的基本技术有那些?
答:一般原则:(1)确定指令系统时,只选择使用频度很高的指令及少量有效支持操作系统,高级
语言及其它功能的指令;(2)减少寻址方式种类,一般不超过两种;(3)让所有指令在一个机器周
期内完成;(4)扩大通用寄存器个数,一般不少于32个,尽量减少访存次数;(5)大多数指令用硬
联实现,少数用微程序实现;(6)优化编译程序,简单有效地支持高级语言实现。
基本技术:(1)按RISC一般原则设计,即确定指令系统时,选最常用基本指令,附以少数对操
作系统等支持最有用的指令,使指令精简。编码规整,寻址方式种类减少到1、2种。(2)逻辑实现
用硬联和微程序相结合。即大多数简单指令用硬联方式实现,功能复杂的指令用微程序实现。(3)
用重叠寄存器窗口。即:为了减少访存,减化寻址方式和指令格式,简单有效地支持高级语言中
的过程调用,在RISC机器中设有大量寄存嚣,井让各过程的寄存器窗口部分重叠。(4)用流水和延
迟转移实现指令,即可让本条指令执行与下条指令预取在时间上重叠。另外,将转移指令与其前
面的一条指令对换位置,让成功转移总是在紧跟的指令执行之后发生,使预取指令不作废,节省
一个机器周期。(5)优化设计编译系统。即尽力优化寄存器分配,减少访存次数。不仅要利用常规
手段优化编译,还可调整指令执行顺序,以尽量减少机器周期等。