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条
不满足题目要求
∴不可能以扩展码为其编码。
②若单地址指令254条,可以用扩展码为其编码。
∵依据①中推导,单地址指令中可用2条编码作为扩展码
∴零地址指令为2×2^3=16条,满足题目要求
note:
三地址指令格式: 操作码 地址码 地址码 地址码
3位 3位 3位 3位
单地址指令格式: 操作码 地址码
9位 3位
所以前面9位由于三地址指令用了最前面3位,还有中间6位可作为编码(也就是总共可以有9位作为单地址指令的指令操作码的编码)。减去3地址指令的4条,有4*2^6=256条,但由于韪目要求要有255条,所以剩下一个编码,已经用了9位的全部编码,最后零地址指令(全部12位都可作为操作码的编码)还有1*2^3=8 (这是12位编码中最后三位的)若只要求254种,则可以有(256-254)*2^3=16条
10.某机指令字长16位。设有单地址指令和双地址指令两类。若每个地址字段为6位.且双地址指令有X条。问单地址指令最多可以有多少条?
答: 单地址指令最多为(16-X)×2^6
P.S.双地址指令最多是2^(16-6-6)=2^4=16条, 现双地址指令有X条,
∴可有(16-X)条编码作为扩展码,
∴单地址指令最多为(16-X)×2^6=256条
11.何谓指令格式的优化?简要列举包括操作码和地址码两部分的指令格式优化可采用的各种途径和思路。
答: 指令格式的优化指如何用最短位数表示指令的操作信息和地址信息,使程序中指令的平均字长最短。
①操作码的优化
采用Huffman编码和扩展操作码编码。
②对地址码的优化:
采用多种寻址方式;
采用0、1、2、3等多种地址制;
在同种地址制内再采用多种地址形式,如寄存器-寄存器型、寄存器-主存型、主存-主存型等; 在维持指令字在存储器内按整数边界存储的前提下,使用多种不同的指令字长度。
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 |
西个马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)优化设计编译系统。即尽力优化寄存器分配,减少访存次数。不仅要利用常规手段优化编译,还可调整指令执行顺序,以尽量减少机器周期等。