华南理工大学期末考《 计算机组成与体系结构 》试卷B

选择题

问题 1

Interrupt system is implemented by:
A. only hardware
B. only software
C. both hardware and software
D. none of the above

答案:C. both hardware and software
解释: 中断系统是通过硬件和软件共同实现的。

  • 硬件部分包括中断控制器(如 PIC 或 APIC),用来检测和管理中断信号。
  • 软件部分包括中断服务程序(Interrupt Service Routine,ISR),用来处理中断事件。
    硬件负责检测和传递中断信号,而软件负责执行中断的处理逻辑,两者缺一不可。

问题 2

In a ________ bus, all devices derive timing information from a common clock line.
A. system
B. asynchronous
C. internal
D. synchronous

答案:D. synchronous
解释: 在同步总线中,所有设备都从一个公共的时钟信号线获取时序信息。这种方式确保了设备之间的操作同步,因为所有操作都以相同的时钟信号为基准。与此相反,异步总线(asynchronous bus)则依赖握手信号来协调设备之间的通信。

问题 3

In carry-lookahead adder, the expression ________ is called the generate function $ G_i $ for stage $ i $:
A. $ x_i + y_i $
B. $ x_i y_i $
C. $ x_i y_i $
D. $ x_i y_i c_i $

答案:C. $ x_i y_i $
解释: 在进位预测加法器(carry-lookahead adder)中,生成函数 $ G_i $ 表示在第 $ i $ 位直接生成进位的条件。其表达式为 $ G_i = x_i y_i $,表示当且仅当两个输入位 $ x_i $ 和 $ y_i $ 都为 1 时,进位会直接生成,而不依赖于更低位的进位。


问题 4

________ has/have internal fragmentation problem:
A. Paging
B. Segmentation with paging
C. Segmentation
D. Segmentation and segmentation with paging

答案:A. Paging
解释:

  • 内部碎片是指分配的内存块未完全被使用时,浪费的空间。分页(Paging)由于将内存分成固定大小的页框,可能导致一个程序的最后一页未能完全使用,从而产生内部碎片。
  • 分段(Segmentation)根据逻辑分段分配内存,没有固定大小的块,因此不会产生内部碎片,但可能产生外部碎片。
  • 分段与分页结合(Segmentation with paging)仍然会因为分页部分导致内部碎片问题。
    因此只有 Paging 有纯粹的内部碎片问题。
  1. 分页的问题
    • 内部碎片问题
      • 分页系统将内存划分为固定大小的页框,进程的页面大小与页框大小相同。当一个进程的最后一个页面没有填满整个页框时,就会产生内部碎片。例如,假设页的大小是4KB,一个进程需要14KB的内存空间,那么就需要分配4个页框,总共16KB的空间,最后一个页框会有2KB的内部碎片。这些内部碎片会导致内存空间的浪费,特别是当系统中有大量小进程时,这种浪费会比较明显。
    • 页表可能占用大量空间
      • 为了实现从逻辑地址到物理地址的转换,系统需要维护页表。对于一个具有较大地址空间的系统,页表可能会变得非常庞大。例如,在一个\(32\) - bit的系统中,如果页的大小是\(4KB\),那么就有\(2^{32}/4KB = 1M\)个页面,每个页面的页表项假设占用4字节,那么页表就需要占用4MB的内存空间。这对于内存资源是一个不小的负担,而且在访问内存时,还需要额外的时间来查询页表,可能会影响系统的性能。
    • 地址转换开销
      • 每次访问内存都需要进行地址转换,将逻辑地址转换为物理地址。这个过程涉及到查询页表,虽然有快表(TLB)等缓存机制来加速地址转换,但仍然会有一定的开销。当TLB未命中时,需要从内存中读取页表项,这会增加内存访问的时间,尤其是在频繁访问内存的情况下,这种开销会对系统的运行效率产生较大的影响。
  2. 分段的问题
    • 外部碎片问题
      • 分段是将程序按照逻辑模块划分为不同的段,每个段的大小可以不同。在内存分配和回收过程中,由于段的大小不一,经过多次分配和回收后,内存空间可能会被分割成许多不连续的小片段,这些小片段的总和可能足够满足一个新进程的需求,但由于它们不连续,无法分配给需要连续内存空间的进程,从而产生外部碎片。例如,内存中有多个小段空闲空间,但是一个新的进程需要一段连续的较大内存空间来加载,就无法进行分配。
    • 段表管理复杂
      • 与页表类似,分段系统需要维护段表来记录段的基地址、段长等信息。由于段的大小不固定,段表的管理相对复杂。在进行地址转换时,需要检查段号是否合法以及偏移量是否在段长范围内等操作,这增加了地址转换的复杂性和开销。而且,当段的数量较多或者段的长度变化频繁时,段表的维护成本会更高。
    • 不利于共享和保护
      • 在分段系统中,虽然可以实现段的共享和保护,但操作相对复杂。要共享一个段,需要在不同的进程段表中设置相同的段基地址等信息,并且要确保共享段的一致性。对于保护而言,需要对每个段设置不同的访问权限,如可读、可写、可执行等,在实际操作中,这种权限的管理和检查可能会比较繁琐,容易出现漏洞。

问题 5

Assume that the capacity of a kind of SRAM chip is $ 32K $, so the sum of address lines and data lines of this chip is ________.
A. 47
B. 64
C. 46
D. 74

答案:A. 47
解释:

  • SRAM 的容量是 $ 32K $,表示有 $ 32K = 2^{15} $ 个存储单元,每个单元宽度为 32 位。
  • 地址线(Address lines)数量取决于存储单元数量,即 $ 2^{15} $ 需要 15 条地址线。
  • 数据线(Data lines)数量等于单元宽度,即 32 位需要 32 条数据线。
  • 地址线和数据线之和为 $ 15 + 32 = 47 $。

问题 6

The time to complete a read or write operation on a disk can be divided into two parts: the seek time and the ________.
A. transfer time
B. access time
C. sector time
D. rotational delay time

答案:D. rotational delay time
解释:
磁盘读写操作的总时间包括:

  1. 寻道时间(Seek time): 磁头移动到目标磁道所需的时间。
  2. 旋转延迟时间(Rotational delay time): 磁盘旋转到目标扇区所需的时间,这取决于磁盘的转速。

传输时间(Transfer time)是指数据实际从磁盘到内存的传输时间,它不属于这两大部分之一。

  1. Transfer Time(传输时间)
    • 定义
      • 也称为数据传输时间,是指从存储介质(如硬盘)将数据传输到计算机内存或者其他设备的数据缓冲区所花费的时间。它主要取决于数据传输率和要传输的数据量。
    • 计算方式及因素影响
      • 对于磁盘等存储设备,传输时间通常用公式\(T_t=\frac{b}{rN}\)计算,其中\(b\)是要传输的字节数,\(r\)是磁盘的旋转速度(转/秒),\(N\)是磁道上的扇区数。这个时间与磁盘的转速、磁道密度、数据存储格式等因素有关。例如,在硬盘中,数据存储在磁道的扇区中,当磁头定位到目标扇区后,数据就以一定的速率从扇区传输到缓冲区。如果磁盘的数据传输率为每秒100MB,要传输10MB的数据,那么传输时间大约为\(10MB/100MB/s = 0.1s\)
  2. Access Time(存取时间)
    • 定义
      • 是指从发出读写请求到开始读写数据所需要的时间。它是衡量存储设备性能的一个重要指标,包括寻道时间、旋转延迟时间和传输时间中的一部分。
    • 组成部分及因素影响
      • 对于磁盘,存取时间主要由寻道时间和旋转延迟时间组成。寻道时间是磁头移动到目标磁道所需要的时间,旋转延迟时间是等待目标扇区旋转到磁头下方所需要的时间。例如,一个硬盘的寻道时间平均为8ms,旋转延迟时间平均为4ms,传输时间为0.1s,那么存取时间约为寻道时间和旋转延迟时间之和,即\(8ms + 4ms=12ms\)(这里忽略了传输时间开始前的一小部分等待时间)。不同的存储设备,如固态硬盘(SSD)和机械硬盘(HDD),其存取时间有很大差异,SSD的存取时间通常比HDD短很多,因为SSD没有机械部件,不需要寻道和等待旋转。
  3. Sector Time(扇区时间)
    • 定义
      • 扇区是磁盘存储数据的基本单位,扇区时间并不是一个标准的性能衡量指标。但可以理解为磁头读取或写入一个扇区数据所需要的时间,它包括了旋转延迟时间和传输该扇区数据的时间。
    • 计算方式及因素影响
      • 扇区时间取决于磁盘的转速和数据传输率。假设磁盘转速为每分钟7200转(7200RPM),那么每秒转\(7200/60 = 120\)转,旋转一圈的时间为\(1/120s\approx8.33ms\)。如果一个扇区占一圈的\(1/60\),那么平均旋转延迟时间为\(8.33ms/2 = 4.17ms\)(假设均匀分布)。再加上传输扇区数据的时间(取决于数据传输率),就可以得到扇区时间。
  4. Rotational Delay Time(旋转延迟时间)
    • 定义
      • 也称为旋转等待时间,是指在磁盘存储中,磁头定位到目标磁道后,等待目标扇区旋转到磁头下方所需要的时间。
    • 计算方式及因素影响
      • 对于一个以恒定速度旋转的磁盘,旋转延迟时间取决于磁盘的转速。平均旋转延迟时间通常是磁盘旋转半圈所需要的时间。例如,对于一个转速为每分钟10000转(10000RPM)的磁盘,每秒转\(10000/60\approx166.67\)转,旋转一圈的时间为\(1/166.67s\approx6ms\),平均旋转延迟时间为\(6ms/2 = 3ms\)。它是影响磁盘存取时间的重要因素之一,并且与磁盘的机械性能和转速密切相关。

问题 7

In DMA transfers, the data transfer unit between memory and I/O devices is ________.
A. byte
B. word
C. block of data
D. bit

答案:C. block of data
解释:

  • 在直接内存访问(DMA)中,数据在内存与 I/O 设备之间以 数据块(block of data) 为单位进行传输。
  • 与 CPU 控制的逐字节或逐位传输不同,DMA 控制器一次传输一大块数据,这样可以显著提高数据传输效率并减轻 CPU 的负担。

问题 8

Microprogram sequencing can be implemented by ________.
A. PC
B. control store
C. $ PC $
D. SRAM

答案:C. $ PC $
解释:

  • 微程序控制器的任务是生成微指令序列,用于控制计算机的操作。
  • 微程序计数器($ PC $,Microprogram Counter)是实现微程序序列控制的核心部件,用于跟踪和生成微指令的地址。
  • 控制存储器(Control Store)是用来存储微程序的,但不负责序列生成。
  • SRAM 是一种存储器,与微程序控制无直接关系。
  • PC(Program Counter)是用于普通程序指令地址的寄存器,与微程序无关。

问题 9

The 32-bit value $ 0x30a79847 $ is stored to the location $ 0x1000 $. If the system is little-endian, the value of the byte ________ is stored in address $ 0x1002 $.
A. 0xa7
B. 0x47
C. 0x98
D. 0x30

答案:A. 0xa7
解释:

  • 在小端序(Little-endian)系统中,低位字节存储在低地址,高位字节存储在高地址。
  • 32 位数值 $ 0x30a79847 $ 可以拆分为:
    • 第 0 字节(低位):$ 0x47 $ 存储在地址 $ 0x1000 $。
    • 第 1 字节:$ 0x98 $ 存储在地址 $ 0x1001 $。
    • 第 2 字节:$ 0xa7 $ 存储在地址 $ 0x1002 $。
    • 第 3 字节(高位):$ 0x30 $ 存储在地址 $ 0x1003 $。

因此,地址 $ 0x1002 $ 存储的字节是 0xa7


问题 10

Which of the following is not the constituent of the I/O device’s interface circuit?
A. instruction register
B. data register
C. status register
D. address decoder

答案:A. instruction register
解释:

  • I/O 接口电路的主要组成部分包括:
    1. 数据寄存器(Data Register): 用于在 I/O 设备和处理器之间传递数据。
    2. 状态寄存器(Status Register): 用于提供设备状态信息(如准备好/忙碌标志)。
    3. 地址解码器(Address Decoder): 用于选择正确的设备,解码地址信号。
  • 指令寄存器(Instruction Register) 是 CPU 内部用于存储当前执行指令的寄存器,与 I/O 接口无关。

问题 11

Which one of the following is not used to prevent data hazards?
A. Bypassing
B. Forwarding
C. Stall
D. Freeze or Flush

答案:D. Freeze or Flush
解释:

  • 数据冒险(Data Hazards)是指指令流水线中因数据依赖导致的问题,可以通过以下方法解决:
    1. Bypassing(旁路): 将数据直接从后续阶段传回早期阶段以避免等待。
    2. Forwarding(转发): 与旁路类似,用于提前提供结果以减少依赖延迟。
    3. Stall(暂停): 插入空指令(气泡)以延迟执行直到数据可用。
  • Freeze(冻结)或 Flush(清空): 通常用于解决控制冒险(Control Hazards),如分支预测错误时清空流水线,而不是处理数据冒险。

以下是对于这四个概念的详细解释,应该是会有一些帮助的,我觉得解释的很好。

  1. Bypassing(旁路)
    • 详细解释
      • 在处理器流水线设计中,数据通常是按照指令的顺序逐步通过各个阶段(如取指、译码、执行、访存、写回)。然而,当存在数据依赖关系时,例如一条指令需要使用前一条指令的计算结果,按照正常流程,后面的指令可能需要等待前面指令完成写回操作才能获取正确的数据,这会导致流水线停顿。旁路技术通过直接将数据从后续阶段(如执行阶段的结果)传回到早期阶段(如译码阶段需要该结果作为操作数),使得后面的指令可以在前面指令尚未完成整个流水线流程时就获取到所需的数据,从而避免了等待,提高了流水线的效率。例如,在一个简单的加法和乘法流水线中,有指令“ADD R1, R2, R3”(将R2和R3相加结果存入R1)和“MUL R4, R1, R5”(将R1和R5相乘结果存入R4),正常情况下MUL指令要等ADD指令写回R1的值后才能开始执行。但通过旁路技术,可以在ADD指令执行完加法运算后,直接将结果送到MUL指令的执行阶段,让MUL指令提前获取正确的R1值,从而避免了等待ADD指令完成写回阶段的延迟。
  2. Forwarding(转发)
    • 详细解释
      • 转发和旁路的概念很相似。它也是为了解决流水线中的数据依赖问题。当一条指令需要使用前面指令的结果作为操作数时,转发机制能够提前提供这个结果。具体来说,在流水线的不同阶段之间建立转发路径,一旦前面指令产生了需要的数据(如在执行阶段计算出的结果),就可以通过这些转发路径将数据立即提供给后面需要它的指令。例如,在一个五级流水线(取指、译码、执行、访存、写回)中,有指令“SUB R6, R3, R4”和“ADD R7, R6, R5”,SUB指令在执行阶段计算出R6的值后,通过转发机制,在ADD指令的译码阶段结束后,就可以将R6的值直接提供给ADD指令的执行阶段,这样就减少了ADD指令因为等待R6的值而产生的依赖延迟,使得流水线能够更流畅地运行。
  3. Stall(暂停)
    • 详细解释
      • 当流水线中出现数据依赖或者资源冲突等问题,并且无法通过旁路或转发等技术来解决时,就可能需要使用暂停技术。 Stall是在流水线中插入空指令(通常称为气泡)来延迟某些指令的执行,直到所需要的数据变得可用或者资源冲突得到解决。例如,在一个简单的流水线处理器中,如果一条指令要读取一个寄存器的值,而这个寄存器的值正在被前面的指令写入,并且没有合适的转发路径,那么为了保证数据的正确性,流水线可能需要暂停这条指令的执行。假设指令“LOAD R8, [memory_address]”(从内存地址加载数据到R8)和“STORE R9, [R8]”(将R9的值存储到R8指向的内存地址),如果LOAD指令还没有完成将数据写入R8,STORE指令就不能正确执行。此时,流水线可以在STORE指令之前插入一个或多个空指令(气泡),让STORE指令暂停执行,直到R8被正确加载数据。
  4. Freeze(冻结)或 Flush(清空)
    • 详细解释
      • 在处理器流水线中,控制冒险是一个重要问题,主要是由于分支指令等控制流改变的指令引起的。分支预测是一种常用的技术来尝试预测分支指令的走向,但分支预测并不总是正确的。当分支预测错误时,就需要采取措施来纠正错误。Freeze(冻结)或Flush(清空)就是这样的技术。当发现分支预测错误时,冻结流水线意味着暂停流水线的进一步推进,等待正确的分支目标地址确定后再继续执行。而清空流水线则是将已经在流水线中的部分或者全部指令清除掉,重新从正确的分支目标地址开始取指和执行指令。例如,在一个带有分支预测的处理器中,有一个条件分支指令“BEQ R1, R2, label”(如果R1等于R2就跳转到label标签处),如果预测分支会发生(跳转到label),但实际上分支没有发生,那么当发现这个错误后,可能需要清空流水线中基于错误预测已经取指和部分执行的指令,然后从当前指令的下一条指令开始重新执行,以确保程序按照正确的控制流执行。

问题 12

Addressing memory by giving a register (explicit or implicit) plus a constant offset as effective address is called ________.
A. direct addressing
B. register addressing
C. indexed addressing
D. immediate addressing

答案:C. indexed addressing
解释:

  • Indexed Addressing(索引寻址):
    有效地址由寄存器值(显式或隐式)加上一个常量偏移量计算得到。这种方式允许通过寄存器值作为基准位置加偏移量访问内存,非常适合数组或表格操作。
  • Direct Addressing(直接寻址): 使用操作数直接指定内存地址。
  • Register Addressing(寄存器寻址): 操作数存储在寄存器中,不涉及内存地址计算。
  • Immediate Addressing(立即数寻址): 操作数是指令中的一个常量,而不是内存或寄存器地址。

因此,这种基于寄存器值加偏移量计算地址的方法称为 索引寻址

  1. Direct Addressing(直接寻址)
    • 定义
      • 在直接寻址方式中,指令的地址字段直接给出了操作数在内存中的有效地址。处理器可以根据这个地址直接从内存中获取操作数。例如,在一个指令格式为“LOAD A, [1000]”(假设是将内存地址1000处的数据加载到寄存器A)的指令中,1000就是操作数在内存中的直接地址。
    • 优点
      • 简单直观。对于程序员或者编译器编写者来说,很容易理解和使用这种寻址方式。因为操作数的地址是明确给出的,所以可以直接定位到所需的数据在内存中的位置。
    • 缺点
      • 缺乏灵活性。如果需要操作的数据在内存中的位置发生变化,就需要修改指令中的地址部分。并且,程序的可移植性可能会受到影响,因为不同的计算机系统可能对内存的布局和地址分配有不同的规定。
    • 应用场景
      • 常用于访问固定位置的全局变量或静态数据。例如,在操作系统中访问系统配置参数,或者在简单的程序中访问预先定义好存储位置的数据。
  2. Register Addressing(寄存器寻址)
    • 定义
      • 操作数存放在寄存器中,指令中直接指定寄存器的名字(编号)来获取操作数。例如,在指令“ADD R1, R2”(将寄存器R2中的值加到寄存器R1中的值上)中,R1和R2就是寄存器,操作数直接从这两个寄存器中获取。
    • 优点
      • 速度快。因为寄存器位于处理器内部,访问寄存器的速度比访问内存要快得多。这使得指令的执行效率很高。而且寄存器的数量相对较少,寄存器编号在指令编码中占用的位数也较少,使得指令长度可以较短。
    • 缺点
      • 寄存器数量有限。由于处理器中的寄存器数量是有限的,不能无限制地存储操作数。如果需要处理大量的数据,仅靠寄存器寻址可能无法满足需求,需要和其他寻址方式配合使用。
    • 应用场景
      • 在进行快速的数据运算和数据暂存时非常有用。例如,在循环计算中,循环变量和中间计算结果通常存储在寄存器中,以加快计算速度。
  3. Indexed Addressing(变址寻址)
    • 定义
      • 指令中包含一个基址寄存器和一个偏移量(可以是立即数或者另一个寄存器的值)。操作数的有效地址是通过将基址寄存器的值与偏移量相加得到的。例如,有指令“LOAD A, [R3 + 10]”(假设将R3寄存器中的值加上10作为内存地址,然后将该地址处的数据加载到寄存器A),这里R3是基址寄存器,10是偏移量。
    • 优点
      • 灵活性高。通过改变基址寄存器的值或者偏移量,可以方便地访问内存中的一组连续或相关的数据。这种方式适合处理数组、表格等数据结构,因为可以通过改变偏移量来访问数组中的不同元素。
    • 缺点
      • 计算有效地址需要额外的时间。因为需要将基址寄存器的值和偏移量相加才能得到操作数的有效地址,这比直接寻址或者寄存器寻址在地址计算上要复杂一些,可能会稍微降低指令的执行速度。
    • 应用场景
      • 广泛应用于数组处理和字符串操作。例如,在遍历数组元素时,基址寄存器可以指向数组的起始地址,通过不断改变偏移量来访问数组中的每个元素。
  4. Immediate Addressing(立即寻址)
    • 定义
      • 指令的操作数直接包含在指令中,作为指令的一部分。例如,在指令“MOV R1, #10”(将立即数10移动到寄存器R1)中,10就是立即数,是指令的一部分,不需要从内存或寄存器中获取这个操作数。
    • 优点
      • 速度快。因为操作数已经在指令中,不需要额外的内存访问或者寄存器读取操作来获取操作数,所以指令执行速度较快。而且对于一些固定的常数操作,如赋值常数或者设置初始值等操作非常方便。
    • 缺点
      • 操作数的大小受到指令长度的限制。由于操作数是指令的一部分,如果操作数的位数较大,可能会导致指令长度过长,从而占用更多的存储空间,并且可能会影响指令的缓存性能。
    • 应用场景
      • 常用于给寄存器赋初值、设置常量参数等操作。例如,在初始化计数器、设置控制参数等场景中经常使用。

问题 13

In IEEE 754 floating point number standard, instead of the signed exponent $ E $, the value actually stored in the exponent field is an unsigned integer ________.
A. $ E' = E + 255 $
B. $ E' = E + 127 $
C. $ E' = E + 256 $
D. $ E' = E + 128 $

答案:B. $ E' = E + 127 $
解释:

  • 在 IEEE 754 单精度浮点数标准中,指数字段使用“偏移”方式存储。实际存储的指数 $ E' $ 是通过将真实指数 $ E $ 加上偏移量 127(也称偏置数)得到的。
  • 偏置值 127 确保了指数可以表示为无符号整数(范围从 $ -127 $ 到 $ +128 $ 的真实值被映射到 $ 0 $ 到 $ 255 $ 的存储值)。
  • 示例:如果真实指数 $ E = 0 $,存储的 $ E' = 0 + 127 = 127 $。

问题 14

In a computer with a microprogrammable control unit, the period of the clock is determined by ________.
A. the delay of the control memory.
B. the delay of the main memory.
C. the delay of the ALU.
D. the sum of two of the above delays.

答案:D. the sum of two of the above delays.

  1. 分析微程序控制单元的工作过程
    • 在微程序控制单元的计算机中,微程序存储在控制存储器中。微程序的执行是一个有序的过程,包括从控制存储器中读取微指令、对微指令进行译码,然后根据微指令的要求控制数据通路(其中涉及ALU等部件)的操作。
  2. 时钟周期的决定因素
    • 控制存储器延迟的影响
      • 控制存储器的延迟是一个重要因素。从控制存储器读取微指令需要一定的时间。如果时钟周期过短,可能在控制存储器还没有完成微指令的读取操作时,下一个时钟信号就来了,这会导致错误的操作。
    • ALU延迟的影响
      • ALU在执行微指令指定的算术或逻辑运算时也有延迟。例如,当微指令要求ALU进行一个复杂的加法运算(如32位或64位加法)时,ALU需要一定的时间来完成这个运算。如果时钟周期不考虑ALU的延迟,那么可能在ALU运算还没完成时,就开始下一个微指令的执行阶段,这会导致错误的结果。
    • 综合考虑
      • 因此,在确定时钟周期时,要考虑控制存储器读取微指令的延迟和ALU执行操作的延迟。主存储器的延迟在这里不是直接决定时钟周期的关键因素,因为主存储器主要用于存储数据和程序,其操作(如数据的读取和写入)是在微程序控制下进行的,并且不是决定控制单元微指令执行节奏的核心部件。所以时钟周期是由控制存储器延迟和ALU延迟共同决定的,答案是D。

问题 15

In memory-mapped I/O system, we use ________ to differentiate memory locations and I/O devices.
A. different addresses
B. different address buses
C. different instructions
D. different control signals

答案:A. different addresses
解释:

  • 在内存映射I/O系统中,内存和I/O设备都共享同一地址空间。通过使用不同的地址来区分内存位置和I/O设备,这些地址分别指向内存中的位置或I/O设备的寄存器。
  • 由于 I/O 设备也映射到地址空间中,因此在访问内存和 I/O 设备时,主要通过 地址 来进行区分,而不是通过独立的地址总线、控制信号或指令。

简答题

问题 1

In a carry-lookahead adder, each bit-slice of the adder must use inputs $ a_i $, $ b_i $, and $ c_i $ to produce generate function $ g_i $, propagate function $ p_i $, and sum output $ s_i $. A proposal has been made to replace the standard definition of the propagate function: $ p_i = a_i + b_i $ with a version that uses the exclusive-or function: $ p_i = a_i b_i $. The carry function is now implemented in the carry-lookahead unit as before: $ c_{i+1} = g_i + p_i c_i $.

(1) Will the modified propagate function work properly in the calculation of carry signals by the carry lookahead unit? Why or why not?

(2) What advantage would there be in using the exclusive-or version of the propagate signal?

解答:

(1) Answer:

The modified propagate function $ p_i = a_i b_i $ will still work correctly in the calculation of carry signals by the carry lookahead unit.

  • The key difference is that $ p_i = a_i b_i $ will not be high when both $ a_i $ and $ b_i $ are both high, whereas the original propagate function $ p_i = a_i + b_i $ would be high in that case.
  • However, even when both $ a_i $ and $ b_i $ are high, the carry $ c_{i+1} $ will still be 1 because the generate function $ g_i $ will be 1 in this case.
  • Therefore, the carry is unaffected by the change, and the modified propagate function still works correctly in calculating the carry signals.

(2) Answer:

The advantage of using the exclusive-or version of the propagate signal is that it can help in computing the sum of each bit.

  • Recall that the sum $ s_i = a_i b_i c_i $ in a carry-lookahead adder.
  • By defining the propagate function as $ p_i = a_i b_i $, the same signal $ p_i $ can be reused in the sum calculation.
  • This leads to a reduction in the number of operations, which can be particularly beneficial for large adders, such as 32-bit adders, where the saving in logic gates can be substantial.

问题 1

在进位预加法器中,每个位片段的加法器必须使用输入 $ a_i \(、\) b_i $ 和 $ c_i $ 来生成生成函数 $ g_i $、传播函数 $ p_i $ 和和输出 $ s_i $。有一个提议,将标准的传播函数定义 $ p_i = a_i + b_i $ 替换为使用异或函数的版本:$ p_i = a_i b_i \(。进位函数现在仍按原来的方式在进位预加单元中实现:\) c_{i+1} = g_i + p_i c_i $。

(1) 修改后的传播函数在进位预加单元中计算进位信号时会正常工作吗?为什么?

(2) 使用异或版本的传播信号有什么优点?

解答:

(1) 答案:

修改后的传播函数 $ p_i = a_i b_i $ 仍然可以正确计算进位信号。

  • 唯一的区别是,当 $ a_i $ 和 $ b_i $ 都为 1 时,$ p_i $ 不会为 1,而原始的传播函数 $ p_i = a_i + b_i $ 在这种情况下会为 1。
  • 然而,即使 $ a_i $ 和 $ b_i $ 都为 1,进位 $ c_{i+1} $ 仍然会是 1,因为生成函数 $ g_i $ 会为 1。
  • 因此,进位的计算不会受到影响,修改后的传播函数在计算进位信号时仍然是有效的。

(2) 答案:

使用异或版本的传播信号的优点是它可以帮助计算每个位的和。

  • 回想一下,进位预加加法器中的和 $ s_i = a_i b_i c_i $。
  • 通过将传播函数定义为 $ p_i = a_i b_i $,就可以将相同的信号 $ p_i $ 用于和的计算。
  • 这减少了运算的数量,尤其对于大位数的加法器(例如 32 位加法器),这种优化可以显著减少逻辑门的使用。

问题 2

For a write operation in a cache memory system, what is the difference between write back and write through?

解答:

Write through:

  • 在写透(Write-through)模式下,缓存位置和主内存位置会同时更新。每次写操作都会同时修改缓存和主内存,从而确保缓存和主内存的一致性。
  • 优点:缓存和主内存始终保持一致。
  • 缺点:每次写操作都需要访问主内存,增加了系统的延迟,特别是在写操作频繁时,会显著降低性能。

Write back:

  • 在写回(Write-back)模式下,只更新缓存位置,并通过“脏位(dirty bit)”标记该缓存块为已修改。当该缓存块被移出缓存时,才会将修改后的数据写回主内存。
  • 优点:由于写操作不直接访问主内存,可以显著提高写操作的速度。如果缓存块内有多个字(word)需要写入,则只需一次主内存写操作即可。相比写透,写回的效率更高。
  • 缺点:由于缓存和主内存可能不同步,主内存中的某些数据可能无效;此外,需要额外的脏位来标记哪些缓存块已被修改。

总结:

  • 写透(Write-through) 会在每次写操作时同步更新缓存和主内存,保证数据一致性,但可能导致性能下降。
  • 写回(Write-back) 只更新缓存并延迟更新主内存,减少了主内存访问频率,提高了性能,但需要额外的标记位,并可能导致主内存数据不一致。

问题 3

What are the advantages and disadvantages of hardwired and microprogrammed control?

解答:

Hardwired Control:

优点:

  • 快速操作: 硬件控制使用固定的电路来实现指令操作,因而执行速度较快。

缺点:

  • 成本较高: 硬件控制需要专门设计复杂的电路,增加了成本。
  • 灵活性差: 一旦硬件设计完成,修改或添加新的指令集会非常困难,缺乏灵活性。
  • 设计和实现时间长: 由于硬件电路的复杂性,设计和实现硬件控制单元的时间较长。

Microprogrammed Control:

优点:

  • 低成本: 微程序控制通常基于存储器,使用程序而不是硬件电路来控制操作,因此成本较低。
  • 高灵活性: 微程序控制允许通过修改程序(而不是硬件)来修改或扩展指令集,具有较高的灵活性。

缺点:

  • 速度较慢: 由于微程序控制是通过执行存储的程序来进行操作的,速度较慢,可能无法满足高性能计算的需求。

总结:

  • 硬件控制(Hardwired Control) 具有较高的操作速度,但成本较高、灵活性差且设计实现时间长。
  • 微程序控制(Microprogrammed Control) 成本低且灵活性强,但速度较慢,可能不适用于高性能计算需求。

问题 4

What is the difference between a subroutine and an interrupt-service routine?

解答:

Subroutine(子程序):

  • 定义: 子程序是由程序指令调用的,执行特定的功能或任务。它是由调用程序明确请求并执行的,用于完成程序中所需的功能。
  • 特点:
    • 由主程序显式调用,执行完成后返回调用位置继续执行。
    • 子程序通常是与当前程序逻辑相关的功能。

Interrupt-service Routine(中断服务程序):

  • 定义: 中断服务程序是由外部事件(例如输入操作或硬件错误)触发的。它的作用是处理这些中断事件,响应外部硬件的请求。
  • 特点:
    • 由外部事件自动触发,与当前程序的执行无关,通常用于处理硬件事件或输入输出操作。
    • 在中断服务程序执行期间,必须确保不会影响当前程序的数据或状态信息,因为它可能打断正在运行的程序。

总结:

  • 子程序(Subroutine) 是由程序显式调用的,执行程序中所需的特定功能,和当前的程序逻辑密切相关。
  • 中断服务程序(Interrupt-service Routine) 是由外部事件触发的,通常不依赖于正在执行的程序,其执行必须小心处理,以避免干扰当前程序的运行。

综合题

问题 1

Using sequential multiplication algorithm, perform the operations $ A B $ on the 4-bit unsigned numbers $ A = 1011 $ and $ B = 1101 $. Write the computation processes in a computer machine.

解答:

img

问题 2

Consider the two-dimensional array $ A $:

1
int A[][] = new int[100][100];

Where $ A[0][0] $ is at location 200, in a paged memory system with pages of size 200. A small process is in page 0 (locations 0 to 199) for manipulating the matrix; thus, every instruction fetch will be from page 0.
Suppose that the elements of the array are stored in row order in the virtual memory. For three page frames, how many page faults are generated by the following array-initialization loops, using LRU replacement, and assuming page frame 1 has the process in it, and the other two are initially empty?

1
2
3
for (int j = 0; j < 100; j++)      
for (int i = 0; i < 100; i++)
A[i][j] = 0;
1
2
3
for (int i = 0; i < 100; i++)  
for (int j = 0; j < 100; j++)
A[i][j] = 0;

Chapter 8 Cache(2) | Totoroの旅 (totorocatcat.top)

具体解释见此。

问题 3

这个问题彻底的解决了我的困惑。

Assume that a computer’s instruction length is 8-bit. Suppose the designers need 3 instructions with two 3-bit operands, 2 instructions with one 4-bit operand, and 4 instructions with one 3-bit operand. How should we design the instruction format?

解答:

解决方案:

给定要求的指令格式如下:

  • 3 条指令需要两个 3 位操作数
  • 2 条指令需要一个 4 位操作数
  • 4 条指令需要一个 3 位操作数

基于这些要求,我们可以设计以下指令格式:

  1. 两个 3 位操作数的指令
    • 使用 2 位来表示操作类型(共有 4 种可能性)。
    • 使用 3 位来表示每个操作数。
    • 指令格式可以是 00 aaa bbb, 01 aaa bbb, 10 aaa bbb,其中 aaabbb 是 3 位操作数。
  2. 一个 4 位操作数的指令
    • 使用 2 位来表示操作类型。
    • 使用 4 位来表示操作数。
    • 指令格式可以是 1100 aaaa, 1101 aaaa,其中 aaaa 是 4 位操作数。
  3. 一个 3 位操作数的指令
    • 使用 2 位来表示操作类型。
    • 使用 3 位来表示操作数。
    • 指令格式可以是 11100 aaa, 11101 aaa, 11110 aaa, 11111 aaa,其中 aaa 是 3 位操作数。
  4. 未使用的指令格式
    • 11 可以用作未来扩展的占位符号,预留为将来可能使用的其他指令类型。

指令格式总结:

  • 00 aaa bbb, 01 aaa bbb, 10 aaa bbb:每种有 3 个指令,共 6 条指令。
  • 1100 aaaa, 1101 aaaa:每种有 1 条指令,共 2 条指令。
  • 11100 aaa, 11101 aaa, 11110 aaa, 11111 aaa:每种有 1 条指令,共 4 条指令。
  • 11:保留为将来扩展。

解释:

通过这种设计,我们有效地利用了 8 位指令长度,满足了所有给定的操作数需求。每种指令类型的数量都恰好符合设计要求,并且留有空间用于未来可能的扩展。

问题 4

A logic circuit is needed to implement the priority network shown in the figure below. The network handles three interrupt request lines. When a request is received on line $ INTR_i $, the network generates an acknowledgement on line $ INTA_i $. If more than one request is received, only the highest-priority request is acknowledged, where the ordering of priority is: priority of $ INTR_1 $ > priority of $ INTR_2 $ > priority of $ INTR_3 $.

  1. Give a truth table for each of the outputs $ INTA_1 $, $ INTA_2 $, and $ INTA_3 $.

  2. Give logic expressions of $ INTA_1 $, $ INTA_2 $, $ INTA_3 $, and a logic circuit for implementing this priority network.

image-20241205002428752

解答:

(1) 真值表

根据优先级要求,$ INTR_1 $ 的优先级最高,其次是 $ INTR_2 $,最后是 $ INTR_3 $。当有多个请求同时到达时,只有最高优先级的请求会生成确认信号。

真值表如下:

$ INTR_1 $ $ INTR_2 $ $ INTR_3 $ $ INTA_1 $ $ INTA_2 $ $ INTA_3 $
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 1 0
0 1 1 0 1 0
1 0 0 1 0 0
1 0 1 1 0 0
1 1 0 1 0 0
1 1 1 1 0 0

(2) 逻辑表达式

根据真值表的逻辑关系,我们可以写出每个输出的逻辑表达式。

  1. INTA1
    • $ INTA_1 $ 只有在 $ INTR_1 = 1 $ 时才为 1。即使 $ INTR_2 $ 或 $ INTR_3 $ 为 1,只要 $ INTR_1 $ 为 1,$ INTA_1 $ 就会被置为 1。因此,$ INTA_1 $ 的逻辑表达式为: $ INTA_1 = INTR_1 $
  2. INTA2
    • $ INTA_2 $ 只有在 $ INTR_2 = 1 $ 且 $ INTR_1 = 0 $ 时才为 1。即,只有在没有高优先级的请求时,$ INTA_2 $ 才能激活。因此,$ INTA_2 $ 的逻辑表达式为: $ INTA_2 = INTR_2 $
  3. INTA3
    • $ INTA_3 $ 只有在 $ INTR_3 = 1 $ 且 $ INTR_1 = 0 $ 且 $ INTR_2 = 0 $ 时才为 1。即只有在没有任何高优先级请求时,$ INTA_3 $ 才能激活。因此,$ INTA_3 $ 的逻辑表达式为: $ INTA_3 = INTR_3 $

逻辑电路

根据上面的逻辑表达式,可以设计如下的逻辑电路:

  1. INTA1 由 $ INTR_1 $ 直接控制:
    • 连接 $ INTR_1 $ 到 $ INTA_1 $ 的线路。
  2. INTA2 由 $ INTR_2 $ 和 $ INTR_1 $ 的反相结果控制:
    • 需要两个输入:$ INTR_2 $ 和 $ $,然后使用 AND 门来实现。
  3. INTA3 由 $ INTR_3 $ 和 $ INTR_1 $, $ INTR_2 $ 的反相结果控制:
    • 需要三个输入:$ INTR_3 $, $ $, 和 $ $,然后使用 AND 门来实现。

最后,您可以使用以下逻辑门来实现这个优先级网络:

  • INTA1:直接连接到 $ INTR_1 $。
  • INTA2:使用一个反相器(NOT 门)反转 $ INTR_1 $,然后使用一个 AND 门将 $ INTR_2 $ 和 $ $ 作为输入。
  • INTA3:使用两个反相器反转 $ INTR_1 $ 和 $ INTR_2 $,然后使用一个 AND 门将 $ INTR_3 \(,\) $ 和 $ $ 作为输入。

通过这个电路,您可以实现优先级中断请求的确认信号。

image-20241205002259175

问题 5

The following figure gives part of the microinstruction sequence corresponding to one of the machine instructions of a microprogrammed computer. Microinstruction B is followed by C, E, F, or I, depending on bits b6 and b5 of the machine instruction register. Assume that a field in each microinstruction specifies the address of the next microinstruction, which has bit-ORing capability. Please give the possible implementation.

下图给出了与微程序控制计算机的一条机器指令相对应的部分微指令序列。微指令B之后可能是C、E、F或I,这取决于机器指令寄存器的b6位和b5位。假定每条微指令中的一个字段指定了下一条微指令的地址,且该字段具有“按位或”的功能。请给出可能的实现方式。

image-20241205002549333

解答:

解决方案:

根据给出的描述,微指令 B 的后继指令是 C、E、F 或 I,这取决于机器指令寄存器(MIR)的 b6 和 b5 位。每条微指令中有一个字段指定下一条微指令的地址,并且具有按位或(bit-OR)能力。

下面给出了该微程序的实现,包括每个地址和其对应的微指令及功能。

地址 微指令 功能
0000 0001 A
0001 0010 B; \(AR_{3-2}\)\(b_{6-5}\)
0010 0011 C
0011 1111 D
0110 1111 E
1010 1011 F
1011 1100 G
1100 1111 H
1110 1111 I
1111 - J

解释:

  1. 地址与微指令
    • 每个地址指向相应的微指令,指定接下来需要执行的操作。例如,地址 0000 对应微指令 0001,执行功能 A。
  2. 按位或(Bit-OR)能力
    • 在这种设计中,每条微指令的字段指定了下一条微指令的地址,且支持按位或操作。这意味着在某些情况下,可能会有多个地址组合(例如,B 可以同时指向 C、E、F 或 I)。
  3. b6 和 b5 位的控制
    • 根据机器指令寄存器(MIR)中的 b6 和 b5 位,微指令 B 可以转到 C、E、F 或 I 之一。这种机制使得微程序能够根据条件灵活地跳转执行不同的操作。
  4. 微指令的顺序
    • 微指令是按照指定顺序执行的,从地址 0000 开始,到地址 1111 结束。每个微指令在执行后会根据当前条件决定跳转到哪个下一条微指令。

通过这种方式,微程序控制逻辑可以根据机器指令的内容动态地调整执行流程,从而实现灵活的操作控制。

如果有幸看到这里,不妨听首歌。最近超爱的一首歌,很简单的歌词,很朴素的人文关怀,却直击人心。