2022年2022年计算机体系结构试题答案 .pdf
一 填空题1、堆栈型通用寄存器型2、累加器型堆栈型3、堆栈累加器4、累加器一组寄存器5、能够使编译器有效地使用寄存器表达式求值方面6、有 2 个还是 3 个操作数有多少个存储器操作数7、寄存器 - 寄存器型寄存器 - 存储器型8、寄存器 - 存储器型存储器 - 存储器型9、一个寄存器操作数一个存储器操作数10、立即数偏移11、指令条数执行时钟周期数(CPI)12、实现的复杂度执行时钟周期数(CPI)13、各种偏移量大小的使用情况指令所使用的立即值大小的范围14、强化指令功能实现软件功能向硬件功能转移15、尽可能地降低指令集结构的复杂提高性能的目的16、提高传送指令功能增加程序控制指令功能17、提高运算型指令功能提高传送指令功能18、算术逻辑运算复杂指令集计算机19、指令时钟数精减指令集计算机20、LOAD STORE 21、80% 20% 22、计算机体系结构的复杂性运行速度慢23、跳转分支24、 跳转过程调用25、条件分支过程返回26、目标地址27、条件28、和程序计数器(PC)相加的值相加的偏移量PC 相对寻址29、指令中表示目标地址的字段的长度与它被载入的位置无关30、算术和逻辑运算数据传输31、数据传输控制32、操作数表示操作数类型33、压缩十进制二进制编码十进制(非压缩十进制)34、变长编码格式固定长度编码格式35、操作码字段地址码字段36、地址码字段各种寻址方式37、寄存器数目寻址方式类型38、指令平均字目标代码大小39、将寻址方式编码于操作码中为每个操作数设置一个地址描述符40、32 立即值偏移(79 个)41、 寄存器寻址寄存器间接寻址42、多种长度的整型数据浮点数据43、寄存器(通用寄存器和浮点寄存器)存储器名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 44、32 6 45、源操作数地址码目的操作数地址码立即数编码46、LOADT 和 STORE 操作分支和跳转操作47、ALU操作浮点操作48、寄存器 - 寄存器通用寄存器R0 49、I J 50、双精度浮点单精度浮点(100 个)三 名词解释1、指令集结构:指令集结构是软硬件的交界面,CPU 依靠指令来计算和控制系统,每款CPU 在设计时就规定了一系列与其硬件电路相配合的指令系统。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分。2、通用寄存器型指令集结构:这种指令集结构中,操作数在CPU 内的存储单元类型为一组通用寄存器,操作数的存储位置显示给出。3、堆栈型机器:CPU 中存储操作数的单元是堆栈的机器。4、累加器型机器:CPU 中存储操作数的单元是累加器的机器。5、通用寄存器型机器:CPU 中存储操作数的单元是通用寄存器的机器。2.2 寻址技术6、寻址方式:寻址方式是指在执行一条指令过程中,处理器根据指令中给出的地址信息来寻找物理地址的方式。7、有效地址:在INTEL系统中 , 内存地址总是由段选择符 :有效地址 的方式给出 .有效地址则可由不同的方式给出 .有效地址的计算方式是: 基址 +间址 *比例因子 +偏移量 . 8、PC 相对寻址: 这种寻址方式是在指令中提供一个和程序计数器(PC)的值相加的偏移量来指明目标地址。可有效缩短指令中表示目标地址的字段的长度,并可使代码在执行时与它被载入的位置无关。9、偏移寻址:这种寻址方式中,有效地址的给出是寄存器中的一个基地址和一个偏移量。10、索引寻址:地址内容包括两个部分:一个内存地址以及一个索引寄存器。索引寄存器会与某个指定的地址相加,结果用作访问内存时使用的地址。2.3 指令集结构的功能设计11、CISC:复杂指令集计算机(Complex Instruction Set Computer),是一种指令集结构(ISA ) ,通过强化指令功能,减少程序的指令条数,实现软件功能向硬件功能转移,以达到提高性能的目的。12、RISC:精简指令集计算机(Reduced Instruction Set Computer) ,是一种指令集结构(ISA) ,通过减少指令总数和简化指令的功能来降低硬件设计的复杂度,提高指令的执行速度。13、静态使用频度:对程序中出现的各种指令以及指令串进行统计得出的百分比。14、动态使用频度:在目标程序执行过程中对出现的各种指令和指令串进行统计得出的百分比。15、规整性:没有或尽可能减少例外的情况和特殊的应用,以及所有运算都能对称、均匀地在存储器单元或寄存器单元之间进行。16、接执行型高级语言机器:高级语言就作为机器语言,直接由硬件或固件对高级语言源程序的语句逐条进行解释执行,不进行编译和汇编。17、控制指令:指令集结构中可无条件或有条件改变控制流的指令,一般称无条件改变控制流的指令为“跳转” ,而有条件改变控制流的指令为“分支”。2.4 操作数的类型、表示和大小名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 18、操作数类型:面向应用、面向软件系统所处理的各种数据结构。操作数类型和操作数表示是软硬件主要界面之一。19、操作数表示:机器硬件能够直接识别、指令系统可以直接调用的那些结构。确定操作数表示是软硬件取舍折衷的问题。2.5 指令集格式的设计2.6 DLX 指令集结构20、DLX指令集结构: DLX (发音为“ DeLuXe ”)是一个流水线处理器实例,称为DLX 处理器,DLX指令集结构是工作于DLX处理器上的指令系统。四简述题2.1 指令集结构的分类1、计算机指令集结构可根据哪些因素进行分类,这些因素中,最关键的因素是什么?答:根据五个因素对计算机指令集结构进行分类:(1) 在 CPU 中操作数的存储方法(2) 指令中显式表示的操作数个数(3) 操作数的寻址方式(4) 指令集所提供的操作类型(5) 操作数的类型和大小在这五个分类因素中, CPU 中操作数的存储方法, 即在 CPU 中用来存储操作数的存储单元的类型,是各种指令集结构之间最主要的区别所在。2、比较 CPU 对操作数的不同存取方式。CPU 提供的暂存器每条 ALU指令显式表示的操作数个数运算结果的目的地访问显式操作数的过程堆栈0 堆栈Push/Pop 累加器1 累加器Load/Store 累加器一组寄存器2/3 寄存器或存储器Load/Store寄存器或存储器2、指令集结构( ISA)有哪些分类?试写出C=A+B 在不同类型 ISA 上的实现方法。根据 CPU中操作数的存储方法,指令集结构 (ISA)有三种类型: 堆栈型、 累加器型和通用寄存器指令集结构。1 分C=A+B表达式在这三种类型指令集结构上的实现方法 4分堆栈累加器寄存器 ( 寄存器存储器) 寄存器(寄存器寄存器)PUSH A LOAD A LOAD R1,A LOAD R1,A PUSH B ADD B ADD R1,B LOAD R2,B ADD Store C Store C,R1 Add R3,R1,R2 POP C Store C,R3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 3、通用寄存器 ISA 的分类是什么,分类依据是什么?答:两种主要的指令特性能够将通用寄存器指令集结构进一步分类:ALU指令到底有两个或是三个操作数?在 ALU指令中,有多少个操作数可以用存储器来寻址,也即有多少个存储器操作数?通用寄存器指令集结构进一步细分为三种类型:?寄存器 - 寄存器型( R-R:register-register) ? 寄存器 - 存储器型( R-M:register-memory)? 存储器 - 存储器型( M-M:memory-memory )4、叙述堆栈型、累加器型和通用寄存器型指令集结构的特点,并比较它们的优缺点。答:堆栈型结构中, 操作数被默认存放在栈顶, 它的优点是其结构具有表达式求值的简单模型(符合逆波兰表示)以及指令字长较短因而能产生良好的代号码密度。它的主要缺点是不能随机访问,因此很难生成高效代码,此外堆栈口将成为瓶颈口,使性能受到影响。累加器结构中, 操作数之一总是被默认存放在累加器中,它具有可使机器内部状态减至最小并能形成短指令的特点, 但由于累加器是唯一的操作数寄存器,将导致对存储器的频繁访问。寄存器结构中,所有的操作数都必须加以显式说明,以指明其是存放在哪一个寄存器中或是存储器的哪一个单元,这种结构具有生在代码的最通用形式,但由于要对所有操作数所使用的寄存器加以命名,导致指令长度的增加。5、通用寄存器指令集结构有哪些优点?答:通用寄存器型指令集结构具有以下主要优点:(1) 使编译器有效地使用寄存器; (2) 在表达式求值方面,比其它类型指令集结构具有更大的灵活性; (3) 寄存器可以用来存放变量。将变量分配给寄存器,不但可以减少存储器的通信量,加快程序的执行速度(因为寄存器比存储器快),而且和存储器相比,还可以用更少的地址位来寻址寄存器,从而可以有效改进程序的目标代码大小。6、常见的三种通用寄存器型机器的优缺点各有哪些?指令集结构类型优点缺点寄存器寄存器型( 0,3 )简单,指令字长固定,是一种简单的代码生成模型,各种 指 令 的 执 行 时钟 周 期 数 相近。和指令中含有对存储器操作数访问的结构相比,指令条数多,因而其目标代码较大。寄存器存储器型(1,2 )可以直接对存储器操作数进行访问,容易对指令进行编码,且其目标代码较小。指令中的操作数类型不同。在一条指令中同时对一个寄存器操作数和存储器操作数进行编码,将限制指令所能够表示的寄存器个数。由于指令的操作数可以存储在不同类型的存储器单元,所以每条指令的执行时钟周期数也不尽相同。存储器存储器型(3,3 )是 一 种 最 紧 密 的 编 码 方式,无需“浪费”寄存器保存变量。指令字长多种多样。每条指令的执行时钟周期数也大不一样,对存储器的频繁访问将导致存储器访问瓶颈问题。2.2 寻址技术1、一种指令集结构中,寻址方式引入的标准是什么?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 答:在通用寄存器指令集结构中,一般是利用寻址方式指明指令中的操作数是一个常数、一个寄存器操作数,抑或是一个存储器操作数。指令格式中的地址字段是非常有限的,采用各类寻址方式,基于以下两点权衡考虑:1.在地址范围和寻址灵活性之间;2.存储器引用数和地址计算复杂之间。2.3 指令集结构的功能设计1、CISC指令集结构功能设计的主要目标是什么,从哪几个方面考虑,如何理解?答:CISC结构追求的目标:进一步增强原有指令的功能,以及设置更为复杂的新指令,来取代原先由软件子程序完成的功能,实现软件功能向硬件功能转移。强化指令功能,减少程序的指令条数,以达到提高性能的目的。可从以下几个方面考虑:1、面向目标程序增强指令功能。对已有机器的机器语言目标程序及其执行情况进行统计,分析各种指令和各种指令串的使用频度。2、面向高级语言和编译程序改进指令系统。面向高级语言的优化实现来改进就是尽可能缩短高级语言和机器语言之间的语义差距,以利于支持高级语言编译系统,缩短编译程序的长度和编译所需的时间。3、面向操作系统的优化实现改进指令系统。可以通过设置支持系统工作状态和访问方式转移的指令、支持进程转移的指令,支持进程同步和互斥的指令等措施,来达到优化操作系统的目的。2、简述 RISC结构的设计原则。答:(1)选取使用频率最高的指令,并补充一些最有用的指令; 1分(2)每条指令的功能应尽可能简单,并在一个机器周期内完成;1 分(3)所有指令长度均相同;1 分(4)只有 Load 和 Store 操作指令访问存储器,其它指令操作均在寄存器之间进行 2 分(5)以简单有效的方式支持高级语言。 1分3、从当前的计算机技术观点来看,CISC 结构有什么缺点?。答:1979 年,美国加洲伯克分校以David Patterson为首一批科学家,对指令集结构的合理性进行了深入研究,研究结果表明,CISC指令集结构存在着如下缺点:(1)在 CISC结构的指令系统中,各种指令的使用频率相差悬殊,80% 的指令只在 20% 的时间才会用到。说明 CISC系统中存在资源浪费及软硬件功能分配不合理的现象。(2)CISC结构指令系统的复杂性带来了计算机体系结构的复杂性,不仅增加了研制时间和成本,而且还容易造成设计错误。 (3) CISC结构指令系统的复杂性给VLSI 设计增加了很大负担,不利于单片集成。(4) CISC 结构的指令系统中,许多复杂指令需要很复杂的操作,因而运行速度慢。(5) 在 CISC结构的指令系统中,由于各条指令的功能不均衡性,不利于采用先进的计算机体系结构技术(如流水技术)来提高系统的性能。针对上述缺点, Patterson等人提出了 RISC指令集结构的设想。4、常用的三种表示分支条件的技术及其优缺点是什么?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - 表示分支条件的技术测试分支条件的方法优点缺点条件码( CC )在程序的控制下,由ALU 操作 设置 特殊的位。可以自由设置分支条件CC是额外状态, 条件码限制了指令顺序,因为必须从一条指令将分支条件信息传送到分支指令条件寄存器根据比较结果测试条件寄存器简单占用了一个寄存器比较且分支比较操作是分支指令的一部分, 通常这种比较是受一定限制的一条指令完成了两条指令的功能分支指令的操作增多2.4 操作数的类型、表示和大小1、操作数类型和操作数表示的关系是什么?答:操作数类型:面向应用、面向软件系统所处理的各种数据结构;操作数表示:机器硬件能够直接识别、指令系统可以直接调用的那些结构。?数据表示是数据结构的组成元素,是其子集, 数据结构要通过软件映象,变换成机器中所具有的各种数据表示来实现。操作数类型和操作数表示是软硬件主要界面之一;确定操作数表示是软硬件取舍折衷的问题。2、数据表示引入的标准是什么?数据表示的方法有哪些?答:衡量某种数据表示的引入是否合理和有效,一般从两个方面考虑: (1) 是否提高系统效率,即是否减少数据处理时间和减少所需的存储空间; (2) 看引入的数据表示使用率如何。操作数类型表示方法有以下两种: (1) 操作数的类型由操作码的编码指定。 ( 最常见的一种方法 ) (2) 数据可以附上由硬件解释的标记, 由这些标记指定操作数的类型, 从而选择适当的运算。2.5 指令集格式的设计1、通常有哪几种指令格式?简述其适用范围。答:(1)变长编码格式。如果体系结构设计者感兴趣的是程序的目标代码大小,而不是性能,就可以采用变长编码格式。(2)固定长度编码格式。如果感兴趣的是性能,而不是程序的目标代码大小,则可以选择固定长度编码格式。(3)混合型编码格式。需要兼顾降低目标代码长度和降低译码复杂度时,可以采用混合型编码格式。2.6 DLX 指令集结构1、什么是 DLX指令集结构,其设计思想有哪些?答: DLX 是一个流水线处理器实例, 是 Hennessy 和Patterson 合著一书 Computer Architecture - A Quantitative Approach中流水线处理器的例子,称为DLX 处理器 。DLX指令集结构是工作于 DLX处理器上的指令系统。DLX指令集结构的设计思想:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 1.具有一个简单的Load/Store 指令集;2.注重指令流水效率;采用定长指令格式编码3.简化指令的译码;4.高效支持编译器。2、DLX指令集结构有哪些寻址方式,数据访问有哪些规定。答:DLX指令集结构的寻址方式有:寄存器寻址、立即值寻址、偏移寻址和寄存器间接寻址。DLX指令集结构中(1)对通用寄存器而言,相应的存储器访问数据大小有8 位、16 位和 32 位;而对浮点寄存器而言,相应的存储器访问数据大小有32位(单精度浮点数)和64 位(双精度浮点数)。(2)存储器地址采用的是高端字节表示顺序,存储器按字节寻址,其地址宽度为32 位。(3)DLX的所有存储器访问均需对齐。对字的存放,低位字节都必须在偶地址的单元中,或者都必须存放在奇地址中。(4)通过寄存器(通用寄存器和浮点寄存器)和存储器之间的数据传送操作完成对存储器的访问。3、DLX指令集结构有哪几种主要的操作类型?答:DLX指令中的操作可分为4 种类型。(1)Load和 Store 操作。可对 DLX的所有通用寄存器和浮点寄存器进行LOAD (载入或取)和 STORE (储存)操作;(2)ALU操作。在 DLX中,所有的 ALU指令都是寄存器寄存器型指令,其运算包含了简单的算术和逻辑运算,如加、减、AND 、OR 、XOR 和移位。(3)分支和跳转操作。 对程序流程进行控制, 跳转可分为: 简单跳转和跳转并链接 (用于过程调用);所有分支指令均是条件分支指令。(4)浮点操作。完成浮点数据的加、减、乘、除。4、对 DLX指令中的 4 种操作类型,各举两例:(1)Load 和 Store 操作。载入整型字 LW R1 , 30 (R2) RegsR1 32 Mem30+RegsR2 储存整型字节 SB 41 (R3) , R2 Mem41+RegsR3 8 RegsR224.31 (2)ALU操作。和立即值相加 ADDI R1, R2, #3 RegsR1 RegsR2 + 3 逻辑左移的立即值形式 SLLI R1, R2, #5 RegsR1 RegsR2 5 (3)分支和跳转操作。跳转 J name PC name; (PC+4)-225) name (PC+4)+225) “等于 0”分支 BEQZ R4 , name if (RegsR4=0) PC name; (PC+4)-215) name (PC+4)+215) (4)浮点操作。双精度浮点减: SUBD F4 ,F4,F5 单精度浮点加: ADDF F3 ,F4,F5 综合1、指令集结构设计所涉及的内容有哪些?答:(1)指令集功能设计:主要有RISC 和 CISC两种技术发展方向;1 分(2)寻址方式的设计:设置寻址方式可以通过对基准程序进行测试统计,察看各种寻址方式的使用频度,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 根据适用频度设置相应必要的寻址方式;1 分(3)操作数表示和操作数类型:主要的操作数类型和操作数表示的选择有,浮点数据类型 (可以采用IEEE 754 标准)、整型数据类型(8 位、 16 位、 32 位的表示方法) 、字符型( 8 位) 、十进制数据类型(压缩十进制和非压缩十进制数据表示)等等。2 分(4)寻址方式的表示:可以将寻址方式编码与操作码中,也可将寻址方式作为一个单独的域来表示。1分(5)指令集格式的设计:有固定长度编码方式、可变长编码方式和混合编码方式三种选择。1 分五 计算题1、对于下面的三个赋值语句:A=B+C B=A+C D=A-B 试用堆栈型、累加器型和通用寄存器型指令集(1) 分别用汇编指令加以编写。(2) 为衡量存储器使用效率,假设对三种指令集均有:操作码占用一字节,存储器地址占用二字节,操作数占用四字节。计算三种代码序列自存储器取指所需总字节,取数或存数所需的总字节。哪一种结构需传送的总字节数最少? 答:( 1)汇编指令编写如下:堆栈型累加器型寄存器型PUSH B PUSH C ADD TOP A PUSH C ADD TOP B PUSH A SUB POP D LOAD B ADD C STORE A ADD C STORE B LOAD A SUB B STORE D LOAD R1 ,B ADD R1 ,C STORE A ,R1 LOAD R2 ,C ADD R2 ,R1 STORE B ,R2 SUB R1,R2 STORE D ,R1 (2)据上面的指令序列,计算得:堆栈型累加器型寄存器型取指:10+7*2=24 8+8*2=24 8+20*2=28 存取数:7*4=28 8*4=32 6*4=24 总计:52 字节56 字节64 字节2、现有如下 C语言源代码:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - for (i=0;i=100,i+) Ai=Bi+C; 其 DLX实现代码如下:ADDI R1,R0,#0 SW 2000(R0),R1 loop: LW R1,2000(R0) MULT R2,R1,#4 ADDI R3,R2,#5000 LW R4, 0(R3) LW R5,1500(R0) ADD R6,R4,R5 LW R1,2000(R0) MULT R2,R1,#4 ADDI R7,R2,#0 SW 0(R7),R6 LW R1,2000(R0) ADDI R1,R1,#1 SW 2000(R0),R1 LW R1,2000(,R0) ADDI R8,R1,# -101 BNEZ R8,loop 其中,A和 B是两个 32 位整数的数组, C和 i 均是 32 位整数。假设所有数据的值及其地址均保存在存储器中, A和 B的起始地址分别是0 和 5000。C和 i 的地址分别是 1500 和 2000。在循环的两次迭代之间不将任何数据保存在寄存器中。求: (1)该程序段共执行了多少条指令。(2)程序对存储器中的数据访问了多少次?(3)DLX代码的大小(占用存储空间大小)是多少字节?解: (1)总共执行的指令数是初始化的两条指令加上循环中重复的指令条数:执行的指令= 2+( 16101)=1618 3 分( 2)数据访问包括LOAD 和 STORE 指令。为了计算数据访问的次数,可以用循环次数乘以每次循环数据访问次数再加上初始化中的1 条 STORE 指令数:数据访问次数= 1+8101= 809 3 分(3)代码大小就是程序中汇编指令数乘以4 个字节( DLX 中每条指令占4 字节) :代码大小= 418 = 72B 1 分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -