第二章 计算机指令集结构设计
2.1 名词解释
堆栈型机器——CPU中存储操作数的单元是堆栈的机器。 累加型机器——CPU中存储操作数的单元是累加器的机器。
通用寄存器型机器——CPU中存储操作数的单元是通用寄存器的机器。 CISC——复杂指令集计算机。 RISC——精简指令集计算机。
2.2 堆栈型机器、累加器型机器和通用寄存器型机器各有什么优缺点?
指令集结构类型 堆栈型 优点 缺点 是一种表示计算的简单模型; 堆栈不能被随机访问,从而很难生成有效代码。同时,指令短小。 由于堆栈是瓶颈,所以很难被高效地实现。 减小了机器的内部状态;指令 由于累加器是唯一的暂存器,这种机器的存储器通信短小。 开销最大。 是代码生成最一般的模型。 所有操作数均需命名,且显式表示,因而指令比较长。 累加器型 寄存器型
2.3 常见的三种通用寄存器型机器的优缺点各有哪些? 指令集结构类型 (0,3) (1,2) 优 点 缺 点 简单,指令字长固定,是一 和指令中含有对存储器操作数访问的结构相比,指令的执行时钟周期数相近。 可以直接对存储器操作数进 指令中的操作数类型不同。在一条指令中同时对一且其目标代码较小。 所能够表示的寄存器个数。由于指令的操作数可以存储在不同类型的存储器单元,所以每条指令的执行时钟周期数也不尽相同。 存储器-存储器型 是一种最紧密的编码方式, 指令字长多种多样。每条指令的执行时钟周期数也(3,3) 无需“浪费”寄存器保存变量。 大不一样,对存储器的频繁访问将导致存储器访问瓶颈问题。 寄存器-寄存器型种简单的代码生成模型,各种指令条数多,因而其目标代码较大。 寄存器-存储器型行访问,容易对指令进行编码,个寄存器操作数和存储器操作数进行编码,将限制指令
2.4 指令集结构设计所涉及的内容有哪些?
指令集功能设计:主要有RISC和CISC两种技术发展方向;
寻址方式的设计:设置寻址方式可以通过对基准程序进行测试统计,察看各种寻址方式的
使用频度,根据适用频度设置相应必要的寻址方式;
操作数表示和操作数类型:主要的操作数类型和操作数表示的选择有,浮点数据类型(可
以采用IEEE 754标准)、整型数据类型(8位、16位、32位的表示方法)、字符型(8位)、十进制数据类型(压缩十进制和非压缩十进制数据表示)等等。
寻址方式的表示:可以将寻址方式编码与操作码中,也可将寻址方式作为一个单独的域来
表示。
指令集格式的设计:有固定长度编码方式、可变长编码方式和混合编码方式三种选择。
2.5 简述CISC计算机结构指令集功能设计的主要目标。从当前的计算机技术观点来看,CISC
结构有什么缺点?
CISC结构追求的目标是强化指令功能,减少程序的指令条数,以达到提高性能的目的。从目前的计算机技术观点来看,CISC结构存在以下几个缺点:
(1) 在CISC结构的指(2) 令系统中,(3) 各种指(4) 令的使用频率相差悬殊。 (5) CISC结构的指(6) 令系统的复(7) 杂性带来了计算机体系结构的复(8) 杂性,
(9) 这不(10) 仅增加了研制时间和成本,而(11) 且还容易造成设计错误。 (12) CISC结构的指(13) 令系统的复(14) 杂性给VLSI设计带来了很大负担,(15) 不
(16) 利于单片集成。 (17) CISC结构的指(18) 令系统中,(19) 许多复(20) 杂指(21) 令需要很复(22) 杂
的操作,(23) 因而(24) 运行速度慢。 (25) 在结构的指(26) 令系统中,(27) 由于各条指(28) 令的功能不(29) 均衡
性,(30) 不(31) 利于采用先进的计算机体系结构技术(如流水技术)来提高系统的性能。
2.6 简述RISC结构的设计原则。
选取使用频率最高的指令,并补充一些最有用的指令; 每条指令的功能应尽可能简单,并在一个机器周期内完成; 所有指令长度均相同;
只有Load和Store操作指令才访问存储器,其它指令操作均在寄存器之间进行 以简单有效的方式支持高级语言。
2.7 简述操作数的类型及其相应的表示方法。
操作数的类型主要有:整数(定点)、浮点、十进制、字符、字符串、向量、堆栈等。 操作数类型有两种表示方法:
(1)操作数的类型由操作码的编码指定,这也是最常见的一种方法;
(2)数据可以附上由硬件解释的标记,由这些标记指定操作数的类型,从而选择适当的运
算。
2.8 表示寻址方式的主要方法有哪些?简述这些方法的优缺点。 表示寻址方式有两种常用的方法:
(1) 将寻址方式编于操作码中,(2) 由操作码在描述指(3) 令的同(4) 时也描
述了相应的寻址方式。
这种方式译码快,但操作码和寻址方式的结合不仅增加了指令的条数,导致 了指令的多样性,而且增加了CPU对指令译码的难度。 (5) 为每个操作数设置一个地址描述符,(6) 由该地址描述符表示相应操作数的寻址
方式。
这种方式译码较慢,但操作码和寻址独立,易于指令扩展。
2.9 通常有哪几种指令格式?简述其适用范围。
变长编码格式。如果体系结构设计者感兴趣的是程序的目标代码大小,而不是性能,就可
以采用变长编码格式。
固定长度编码格式。如果感兴趣的是性能,而不是程序的目标代码大小,则可以选择固定
长度编码格式。
混合型编码格式。需要兼顾降低目标代码长度和降低译码复杂度时,可以采用混合型编码
格式。
2.10为了对编译器设计提供支持,在进行指令集设计时,应考虑哪些问题?
(1) 规整性。
(2) 提供基本指(3) 令,而(4) 非解决方案。 (5) “简化方案的折中取舍(6) 标(7) 准”。
(8) “对于在编译时已经知道的量,(9) 提供将其变为常数的指(10) 令”。
2.11 试就指令格式、寻址方式和每条指令的周期数(CPI)等方面比较RISC和CISC处理机的指令系统结构。 CISC RISC 比较内容 指令格式 变长编码 定长编码 寻址方式 各种都有 只有load/store指令可以访存 CPI 远远大于1 为1
2.12 现有如下C语言源代码:
for (I=0;i<=100,i++) {A[i]=B[i]+C;}
其中,A和B是两个32位整数的数组,C和i均是32位整数。假设所有数据的值及其地址均保存在存储器中,A和B的起始地址分别是0和5000。C和i的地址分别是 1500和2000。在循环的两次迭代之间不将任何数据保存在寄存器中。 请写出该C语言源程序的DLX实现代码。 该程序段共执行了多少条指令。
程序对存储器中的数据访问了多少次? DLX代码的大小是多少?