华南理工大学计算机组成原理2013年选择题
华南理工大学计算机组成原理2013年考题
选择题
问题1
操作码就是直接告诉中央处理器。
- 问题:机器指令中,用于告知中央处理器需要执行何种操作的部分是?
- 选项:
- A. 操作码(Operation Code)
- B. 地址(Address)
- C. 操作数(Operand)
- D. 以上都不是(none of the above)
- 答案:A
- 解释:
- 操作码是机器指令的核心组成部分之一。它就像是一个命令代码,每一个操作码对应一种特定的CPU操作,例如加法操作、减法操作、数据读取操作、数据存储操作等。当CPU读取到操作码时,就知道接下来要执行何种类型的任务。
- 地址主要是用来指定数据或者指令在内存中的位置。比如,当需要读取或写入数据时,地址部分告诉CPU到内存的什么地方去找到这个数据或者把数据存放到哪里,它本身并不指示操作类型。
- 操作数是操作码操作的对象,是参与运算的数据或者数据所在的位置信息。它是被操作的内容,而不是告诉CPU做什么操作的部分。
问题2
记住事件驱动并不是基本的方法。
- 问题:以下选项中,哪一个不是计算机系统基本的I/O方法?
- 选项:
- A. DMA方法(DMA approach)
- B. 中断驱动(Interrupt - driven)
- C. 事件驱动(Event - driven)
- D. 程序控制I/O(Program - controlled I/O)
- 答案:C
- 解释:
- DMA方法(DMA approach):直接内存访问(DMA)是一种高效的I/O方式。在这种方式下,外部设备(如硬盘、网卡等)可以在DMA控制器的管理下,直接与内存进行数据传输,而不需要CPU频繁地参与每一个数据传输的细节。例如,从硬盘读取大量数据时,DMA控制器可以直接将数据从硬盘传输到内存,只在传输开始和结束等关键阶段通知CPU,大大提高了数据传输效率,是计算机系统基本的I/O方法之一。
- 中断驱动(Interrupt - driven):这是计算机系统中常用的I/O方式。当外部设备完成数据准备或者出现需要CPU处理的情况时,会向CPU发送中断请求信号。CPU收到中断请求后,会暂停当前正在执行的任务,转而处理外部设备的请求,处理完毕后再返回原来的任务继续执行。比如,打印机打印完一页内容后,通过中断告诉CPU,CPU就可以安排下一页的打印任务,这是很典型的基本I/O方法。
- 事件驱动(Event - driven):事件驱动主要应用于软件系统的高层设计,特别是在图形用户界面(GUI)、网络编程等场景。它是基于事件(如用户点击鼠标、按下键盘按键等)来触发相应的程序行为,不是计算机底层用于描述和控制数据输入输出的基本I/O方法。在计算机底层I/O操作层面,这个概念不用于描述基本的设备与CPU之间的数据传输方式。
- 程序控制I/O(Program - controlled I/O):在这种I/O方式中,CPU通过执行程序中的I/O指令来实现与外部设备的数据交换。例如,CPU可以通过输出指令将数据发送到指定的外部设备,或者通过输入指令从外部设备读取数据。这是一种基本的I/O控制方式,在简单的计算机系统或者对I/O速度要求不高的场景中经常使用。
问题3
注意区分写透和写回这两种方式,要求能够说出各自的优点和缺点。
- 问题:在以下陈述中,哪一个是正确的?
- 选项:
- A. 在流水线系统中只有一种冒险,称为控制冒险,它是由分支指令引起的。
- B. 当直接映射缓存发生缺失时,采用随机或LRU(最近最少使用)策略来选择要替换的块。
- C. 操作数转发总能消除由于任何两条数据相关指令之间潜在的数据冒险而导致的停顿。
- D. 在缓存设计中,如果对写操作使用回写策略,那么我们需要为每个缓存条目关联一个“脏位”。
- 答案:D
- 解释:
- A. 在流水线系统中存在多种冒险,包括数据冒险、控制冒险和结构冒险。数据冒险是由于指令之间的数据依赖关系导致的,控制冒险主要是由分支指令和其他改变程序流程的指令引起的,结构冒险是由于硬件资源冲突引起的,所以A选项错误。
- B. 在直接映射缓存中,当发生缺失时,替换策略是固定的,因为每个主存块只能映射到一个特定的缓存块位置,不需要随机或LRU策略,LRU策略通常用于组相联缓存,所以B选项错误。
- C. 操作数转发可以减少由于数据冒险导致的停顿,但并不能总是完全消除。在一些复杂的数据依赖情况下,如存在多条指令之间的长延迟数据依赖链时,可能仍然会有停顿,所以C选项错误。
- D. 在缓存的写回策略中,当一个缓存块被修改时,需要标记它为“脏”(dirty),表示缓存中的数据与主存中的数据不一致。这样在缓存块被替换时,就知道是否需要将缓存中的数据写回主存。因此需要为每个缓存条目关联一个“脏位”,D选项正确。
问题4
注意区分四个位各自的作用。
- 问题:一个CPU有一个算术单元,用于对字节进行加法运算,然后按如下方式设置其V、C和Z标志位。如果发生算术溢出(在二进制补码运算中),则设置V位;如果在运算过程中从最高有效位产生进位,则设置C位;如果结果为零,则设置Z位。将8位字节1100
1100和1000 1111相加后,V、C和Z标志位的值是多少?
- 选项:
- A. V:0, C:0, Z:0
- B. V:1, C:1, Z:0
- C. V:1, C:1, Z:1
- D. V:0, C:0, Z:1
- 答案:B
- 解释:
- 首先进行二进制加法: 二进制加法计算过程如下:
1 | 11001100 |
从右往左逐位相加,遵循二进制的加法规则:0 + 0 = 0,0 + 1 = 1,1 + 0 = 1,1 + 1 = 10(向高位进1)。
例如最右边第一位:0 + 1 = 1;
第二位:0 + 1 = 1;
第三位:1 + 1 = 10,此时本位写0,向高位进1;
依次类推,完成整个计算,最终结果就是101011011 , 由于是8位运算,结果截断为01011011。 - 计算C位(进位标志):从加法过程中可以看到,最高位(第7位)相加产生了进位(1 + 1 = 10),所以C位被设置为1。 - 计算V位(溢出标志):对于有符号数(补码表示),两个负数相加结果应该还是负数。1100 1100表示 - 52(补码转换为原码:符号位不变,其余位取反加1,得到原码1011 0100,即 - 52),1000 1111表示 - 113(原码1111 0001,即 - 113),相加结果应该是 - 165,但是得到的结果01011011是正数(原码和补码相同,为 + 91),发生了溢出,所以V位被设置为1。 - 计算Z位(零标志):结果01011011不为零,所以Z位为0。 - 综上,V = 1, C = 1, Z = 0,答案是B选项。
问题5
- 问题:在先行进位加法器(carry - lookahead
adder)中,对于第i级,表达式____被称为传播函数Pi。
- 选项:
- A. xi + yi
- B. xi⊕yi
- C. xiyi
- D. xi⊕yi⊕ci
- 答案:B
- 解释:
- 在先行进位加法器中,传播函数Pi的定义是Pi = xi⊕yi。这个函数用于表示本位的两个输入信号xi和yi是否会产生向高位的进位传递。如果xi⊕yi = 1,意味着xi和yi中有一个为1(但不同时为1),那么当低位有进位输入时,本位会产生向高位的进位输出,就像进位信号可以通过本位“传播”到高位一样。
- 选项A中的xi + yi不符合传播函数的定义,它没有体现出进位传播的特性。
- 选项C中的xiyi是产生函数Gi的表达式,表示本位的两个输入信号xi和yi同时为1时,会产生一个进位输出,而不是传播函数。
- 选项D中的xi⊕yi⊕ci是全加器的和输出Si的表达式,不是传播函数。
问题6
- 问题:在硬连线控制单元(hardwired control
unit)中,所需的控制信号由以下除____之外的信息确定。
- 选项:
- A. 控制步长计数器(control step counter)的内容
- B. 指令寄存器(instruction register)的内容
- C. 条件码标志(condition code flags)的内容
- D. 程序计数器(program counter)的内容
- 答案:D
- 解释:
- A. 控制步长计数器的内容用于确定当前指令执行的阶段,不同的阶段需要不同的控制信号来完成指令的各个操作步骤,所以它对确定控制信号是有用的。
- B. 指令寄存器的内容包含了当前正在执行的指令,根据指令的操作码和操作数等信息可以确定需要哪些控制信号来执行该指令。
- C. 条件码标志的内容反映了之前运算结果的一些状态,如是否溢出、是否为零等,这些状态会影响后续指令执行时控制信号的产生,例如在条件分支指令中,条件码标志会决定是否进行分支跳转。
- D. 程序计数器主要用于存储下一条要执行指令的地址,它本身通常不直接用于确定当前指令执行所需的控制信号。它的作用更多是在指令的取指阶段,引导从内存中获取正确的指令,而不是决定如何执行已经获取到的指令所需要的控制信号。
问题7
问题:当I/O设备和内存共享相同的地址空间时,这种布局被称为?
- 选项:
- A. 内存映射I/O(memory - mapped I/O)
- B. 混合I/O(mixed I/O)
- C. 分离I/O(separated I/O)
- D. 相对I/O(relative I/O)
- 答案:A
- 解释:
- A. 内存映射I/O是指将I/O设备的寄存器映射到内存地址空间中。这样,CPU可以像访问内存单元一样访问I/O设备的寄存器,通过对特定内存地址的读写操作来实现与I/O设备的数据传输和控制。这种方式使得I/O设备和内存共享相同的地址空间,是一种常见的计算机系统I/O组织方式。
- B. 没有“混合I/O”这种标准的用于描述I/O设备和内存地址空间关系的术语。
- C. 分离I/O是指I/O设备和内存有各自独立的地址空间,通过专门的I/O指令来访问I/O设备,与题目描述不符。
- D. 同样,“相对I/O”不是用于描述I/O设备和内存地址空间共享关系的正确术语。
问题8
- 问题:假设一个2M×16的主存是用256K×8的RAM芯片构建的,并且内存是字可寻址的。需要多少个RAM芯片?
- 选项:
- A. 4
- B. 8
- C. 16
- D. 32
- 答案:C
- 解释:
- 首先统一单位,1M = 1024K,2M = 2×1024K。
- 主存是2M×16位,每个RAM芯片是256K×8位。
- 对于容量,主存总容量为\(2×1024K×16\)位,RAM芯片容量为\(256K×8\)位。
- 计算芯片数量:
- 先考虑位扩展,因为主存是16位,芯片是8位,所以在位数上需要\(16÷8 = 2\)个芯片来扩展。
- 再考虑字扩展,主存是\(2×1024K\),芯片是256K,所以在字数上需要\((2×1024K)÷256K = 8\)个芯片来扩展。
- 总共需要的芯片数为位扩展所需芯片数乘以字扩展所需芯片数,即\(2×8 = 16\)个芯片。
问题9
- 问题:分层存储系统的参数如下:主存大小 = 8K块,高速缓存大小 = 512块,块大小 = 16字。在16块/组的组相联映射情况下,确定标记(tag)字段的大小。
- 选项:
- A. 13
- B. 8
- C. 4
- D. 7
- 答案:A
- 解释:
- 首先计算主存的块数:\(8K = 2^{13}\)块。
- 计算缓存的组数:因为缓存大小为512块,且16块/组,所以组数为\(512÷16 = 32 = 2^{5}\)组。
- 块内偏移(offset):因为块大小为16字,所以偏移地址需要\(log_216 = 4\)位来表示。
- 组索引(index):需要\(log_232 = 5\)位来表示组索引。
- 标记(tag)字段:主存块数对应的地址位数为13位,减去组索引的5位和偏移地址的4位,即\(13 - 5 - 4 = 4\)位,所以标记字段大小为4位。
问题10
- 问题:以下哪一项不是复杂指令集计算机(CISC)风格的特点?
- 选项:
- A. 更复杂的寻址模式
- B. 加载/存储架构
- C. 许多用于实现复杂任务的指令
- D. 算术和逻辑运算可以对内存操作数以及处理器寄存器中的操作数执行
- 答案:B
- 解释:
- A. CISC具有多种复杂的寻址模式,如间接寻址、变址寻址等多种方式,这是CISC的一个特点。
- B. 加载/存储架构是精简指令集计算机(RISC)的典型特点,在RISC中,只有加载(load)和存储(store)指令可以访问内存,算术和逻辑指令只能对寄存器中的操作数进行操作。而CISC允许算术和逻辑指令直接对内存操作数进行操作,不是加载/存储架构。
- C. CISC有许多能够实现复杂任务的指令,这些指令可以在一条指令中完成多个操作,例如在一条指令中完成内存读取、算术运算和结果存储等复杂操作。
- D. CISC允许算术和逻辑运算直接在内存操作数和处理器寄存器操作数上执行,这与RISC的严格限制不同,是CISC的一个特点。
问题11
- 问题:在微程序控制的机器中,机器指令和微指令之间的关系是?
- 选项:
- A. 一条机器指令由一条微指令执行。
- B. 一条微指令由几条机器指令组成。
- C. 一条机器指令由一组微指令构成的微程序来解释执行。
- D. 一个微程序由一条机器指令执行。
- 答案:C
- 解释:
- A. 通常一条机器指令需要一组微指令(微程序)来执行,而不是仅仅一条微指令,因为机器指令相对复杂,一条微指令很难完成其全部功能。
- B. 是机器指令比微指令层次更高,应该是微指令组成微程序来解释机器指令,而不是微指令由机器指令组成。
- C. 在微程序控制的机器中,机器指令的功能是通过一段微程序来实现的,微程序是由一系列微指令组成的。当执行一条机器指令时,会先将其转换为对应的微程序,然后按顺序执行微程序中的微指令,从而完成机器指令的功能。
- D. 顺序弄反了,是机器指令由微程序(由微指令组成)来执行,而不是微程序由机器指令执行。
问题12
- 问题:程序计数器是?
- 选项:
- A. 一个记录已执行指令数量的二进制计数器。
- B. 一个存储下一条要执行指令的寄存器。
- C. 一个存储下一个要写入的内存位置地址的寄存器。
- D. 一个存储下一条指令的内存地址的寄存器。
- 答案:D
- 解释:
- A. 记录已执行指令数量的通常不是程序计数器,虽然程序计数器的值会随着指令的执行而改变,但它的主要功能不是统计已执行指令数量。
- B. 程序计数器存储的是下一条指令的内存地址,而不是下一条要执行的指令本身。指令是存储在内存中的,程序计数器引导CPU到相应内存位置获取指令。
- C. 它与写入内存位置无关,主要用于读取指令,是关于指令读取地址的寄存器。
- D. 程序计数器(PC)的功能是存储下一条要获取并执行的指令在内存中的地址。在指令执行过程中,PC会根据指令的长度(字节数)等因素自动更新,以指向下一条待执行指令的地址。
问题13
- 问题:什么是页面故障(page fault)?
- 选项:
- A. 计算机试图运行存储在硬盘上的指令。
- B. 计算机用于自我启动的过程。
- C. 当缺少设备驱动程序时计算机产生的错误。
- D. 内存不足错误。
- 答案:A
- 解释:
- A. 页面故障是指当处理器试图访问一个虚拟地址对应的页面,而该页面不在物理内存中(通常是因为被交换到磁盘中了),这时就会发生页面故障。系统会暂停当前进程,将所需页面从磁盘调入物理内存,然后再继续执行进程,这可以看作是计算机试图运行存储在硬盘(作为虚拟内存的一部分)上的指令时发生的情况。
- B. 计算机自我启动过程涉及BIOS/UEFI等启动程序加载操作系统内核等步骤,与页面故障无关。
- C. 缺少设备驱动程序产生的错误通常是设备无法正常工作或者系统无法识别设备等情况,和页面故障概念不同。
- D. 内存不足错误是指系统没有足够的物理内存来满足程序运行的需求,而页面故障主要是关于虚拟内存和物理内存页面置换的问题,不是单纯的内存不足。
问题14
- 问题:在一台CISC计算机中,条件分支指令使用相对寻址。如果机器当前正在执行位于内存位置0x0100的条件分支指令,并且该分支指定的偏移量为0x0010,那么如果分支被执行,下一条要执行的指令位于什么地址?
- 选项:
- A. 0x0100
- B. 0x0010
- C. 0x0110
- D. 0x0111
- 答案:C
- 解释:
- 在相对寻址中,有效地址是当前指令地址加上偏移量。
- 已知当前分支指令位于0x0100,偏移量为0x0010。
- 那么如果分支被执行,下一条指令的地址 = 当前指令地址 + 偏移量,即0x0100 + 0x0010 = 0x0110。
- 选项A是当前分支指令的地址,不是分支执行后的下一条指令地址;选项B只是偏移量,不是最终地址;选项D计算错误。
问题15
问题:_____是指在流水线中,指令的源操作数或目的操作数在预期时间不可用的任何情况。
- 选项:
- A. 控制冒险(Control hazard)
- B. 数据冒险(Data hazard)
- C. 结构冒险(Structural hazard)
- D. 指令冒险(Instruction hazard)
- 答案:B
- 解释:
- A. 控制冒险主要是由于分支指令和其他改变程序流程的指令引起的。当流水线遇到分支指令时,它可能会改变下一条指令的地址,导致流水线预取的指令可能不是实际要执行的指令,这与操作数是否按时可用无关。
- B. 数据冒险是指在指令流水线中,由于指令之间的数据依赖关系,导致下一条指令不能在预期的时钟周期内获取到正确的操作数。例如,一条指令需要前一条指令的计算结果作为操作数,但由于流水线的并行性,前一条指令的结果可能还没来得及写入寄存器,后一条指令就已经开始读取操作数了,这就出现了源操作数或目的操作数在预期时间不可用的情况。
- C. 结构冒险是因为硬件资源冲突导致的。例如,当指令流水线中的多个阶段同时请求使用同一硬件资源(如内存或特定的运算单元),而该资源在同一时间只能满足一个请求时,就会发生结构冒险,而不是因为操作数的可用性问题。
- D. “指令冒险”这个术语在通常的流水线冒险分类中并不存在,是干扰选项。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Totoroの旅!
评论