1.指令集结构设计所涉及的内容有哪些?
解:
(1) 指令集功能设计:主要有RISC和CISC两种技术发展方向;
(2) 寻址方式的设计:设置寻址方式可以通过对基准程序进行测试统计,察看各种寻址方式的使用频度,根据适用频度设置相应必要的寻址方式;
(3) 操作数表示和操作数类型:主要的操作数类型和操作数表示的选择有,浮点数据类型(可以采用IEEE 754标准)、整型数据类型(8位、16位、32位的表示方法)、字符型
(8位)、十进制数据类型(压缩十进制和非压缩十进制数据表示)等等。
(4) 寻址方式的表示:可以将寻址方式编码与操作码中,也可将寻址方式作为一个单独的域来表示。
(5) 指令集格式的设计:有固定长度编码方式、可变长编码方式和混合编码方式三种选择。
2. 简述CISC计算机结构指令集功能设计的主要目标。从当前的计算机技术观点来看,CISC 结构有什么缺点?
解:
(1)CISC结构追求的目标是强化指令功能,减少程序的指令条数,以达到提高性能的目的。
(2)从目前的计算机技术观点来看,CISC结构存在以下几个缺点:
a. 在CISC结构的指令系统中,各种指令的使用频率相差悬殊。
b. CISC结构的指令系统的复杂性带来了计算机体系结构的复杂性,这不仅增加了研制时间和成本,而且还容易造成设计错误。
c. CISC结构的指令系统的复杂性给VLSI设计带来了很大负担,不利于单片集成。
d. CISC结构的指令系统中,许多复杂指令需要很复杂的操作,因而运行速度慢。
e. 在结构的指令系统中,由于各条指令的功能不均衡性,不利于采用先进的计算机体系结构技术(如流水技术)来提高系统的性能。
3.简述RISC结构的设计原则。
解:
(1) 选取使用频率最高的指令,并补充一些最有用的指令;
(2) 每条指令的功能应尽可能简单,并在一个机器周期内完成;
(3) 所有指令长度均相同;
(4) 只有Load和Store操作指令才访问存储器,其它指令操作均在寄存器之间进行
(5) 以简单有效的方式支持高级语言。
4.某台处理器的各条指令的使用频度如下:
指令 | 使用频度 | 指令 | 使用频度 | 指令 | 使用频度 |
ADD | 43% | JOM | 6% | CIL | 2 |
SUB | 13% | STO | 5% | CLA | 22 |
JMP | 7% | SHR | 1% | STP | 1 |
请分别设计这9条指令的操作码的哈夫曼编码,3/3/3扩展编码,2/7扩展编码,并计算这三种编码的平均码长。
解:
根据给出的九条指令的使用频度和哈弗曼生成算法的结构的不用构造了两种不同的哈夫曼树。
(左边为A,右边为B)
各编码如下:
指令 | Ii | Pi | 哈弗曼A | 哈弗曼B | 3/3/3 | 2/7 |
ADD | I1 | 0.43 | 0 | 0 | 00 | 00 |
CLA | I2 | 0.22 | 10 | 100 | 01 | 01 |
SUB | I3 | 0.13 | 110 | 101 | 10 | 1000 |
JMP | I4 | 0.07 | 11100 | 1100 | 1100 | 1001 |
JOM | I5 | 0.06 | 11101 | 1101 | 1101 | 1010 |
STO | I6 | 0.05 | 11110 | 1110 | 1110 | 1011 |
CIL | I7 | 0.02 | 111110 | 11110 | 111100 | 1100 |
SHR | I8 | 0.01 | 1111110 | 111110 | 111101 | 1101 |
STP | I9 | 0.01 | 1111111 | 111111 | 111110 | 1110 |
由表可知,三种编码的平均码长为:(公式:L=∑Pi*Li)
哈弗曼编码:2.42位
3/3/3编码:2.52位
2/7编码:2.70位
5.某机指令字长16位。设有单地址指令和双地址指令两类。若每个地址字段为6位.且双地址指令有X条。问单地址指令最多可以有多少条?
解:
双地址指令结构为:(4位操作码)(6位地址码)(6位地址码)
单地址指令结构为:(10位操作码)(6位地址码)
因此,每少一条双地址指令,则多2^6条单地址指令,
双地址指令最多是2^(16-6-6)=2^4=16条 ,
所以单地址指令最多有(16-X)*2^6条。
6.若某机要求:三地址指令4条,单地址指令255条,零地址指令16条。设指令字长为12位.每个地址码长为3位。问能否以扩展操作码为其编码?如果其中单地址指令为254条呢?说明其理由。
解:
(1)不能用扩展码为其编码。
指令字长12位,每个地址码占3位,三地址指令最多是2^(12-3-3-3)=8条, 现三地址指令需4条,
所以可有4条编码作为扩展码,而单地址指令最多为4×2^3×2^3=2^8=256条,现要求单地址指令255条,
所以可有一条编码作扩展码
因此零地址指令最多为1×2^3=8条
不满足题目要求,故不可能以扩展码为其编码。
(2)若单地址指令254条,可以用扩展码为其编码。
依据(1)中推导,单地址指令中可用2条编码作为扩展码,零地址指令为2×2^3=16条,满足题目要求