视频加载失败

课程

18582 字
约 54 分钟

河南大学计算机与信息工程学院 2016~2017 学年第 2 学期期末考试

计算机组成原理exams/past-exams·更新于 2026-09-15

河南大学计算机与信息工程学院 2016~2017 学年第 2 学期期末考试

《计算机组成原理》试卷 A 卷

考试方式: 闭卷 考试时间: 120 分钟 卷面总分: 100 分


一、单项选择题(每小题 2 分,共 40 分)

  1. 系统总线中地址线的功能是 【 】

    • A. 选择主存单元地址
    • B. 选择进行信息传输的设备
    • C. 选择外存地址
    • D. 指定主存和 I/O 设备接口电路的地址

    正确答案: D

    答案解析: 系统总线中的地址线是单向的,用于传输由 CPU 发出的地址信号,以指定 CPU 想要访问的主存单元或 I/O 设备接口电路的物理地址(对应教材第六章内容,参见 P188)。

  2. 已知 x=10x = -10,采用 32 位 IEEE 754 标准表示 xx 的机器码是 【 】

    • A. C150 0000H
    • B. C120 0000H
    • C. C1A0 0000H
    • D. 4266 C000H

    正确答案: B

    答案解析: 本题考查 32 位 IEEE 754 单精度浮点数表示法(对应教材第二章内容,参见 P18)。 具体步骤如下:

    1. 真值转换:将十进制数转换成二进制数:10=1010B-10 = -1010\text{B}
    2. 规格化1010B=1.010B×23-1010\text{B} = -1.010\text{B} \times 2^3,其中阶数 e=3e = 3
    3. 确定 IEEE 754 字段(格式为:1 位符号位 SS + 8 位阶码 EE + 23 位尾数 MM):
      • 符号位 SS:负数,所以 S=1S = 1
      • 阶码 EE:移码表示,偏置常数为 127,则 E=e+127=3+127=130=10000010BE = e + 127 = 3 + 127 = 130 = 1000\,0010\text{B}
      • 尾数 MM:规格化后隐藏最高位 1,即取小数点后面的部分:M=010M = 010,后面补零至 23 位,即 01000000000000000000000B0100\,0000\,0000\,0000\,0000\,000\text{B}
    4. 组合机器码
      • 二进制形式:1 10000010 01000000000000000000000B1\ 10000010\ 01000000000000000000000\text{B}
      • 十六进制分组:1100 0001 0010 0000 0000 0000 0000 0000 = C120 0000H
  3. 已知大写英文字母 A 的 ASCII 码值为 41H,现字母 F 存放在某个存储单元中,若采用偶校验(假设最高位作为检验位),则该存储单元中存放的十六进制数据是 【 】

    • A. 46H
    • B. C6H
    • C. 47H
    • D. C7H

    正确答案: B

    答案解析:

    1. 计算 ASCII 码:英文字母在 ASCII 编码表中是按顺序排列的。“A”为 41H,由于 “F” 是字母表中第 6 个字母(A, B, C, D, E, F),其 ASCII 码值为: 41H + 5 = 46H = 0100 0110B
    2. 偶校验规则:偶校验要求编码中“1”的个数(包括最高校验位和信息位)为偶数。 在 7 位 ASCII 码 0100 0110B 中,已有 3 个“1”(奇数个)。 为了实现偶校验,最高位(校验位)必须设为 1。 因此,加上校验位后的 8 位二进制代码为 1100 0110B,对应十六进制为 C6H
  4. 下列表述中的浮点数,数值最小的是 【 】

    • A. 尾数取最大正值,阶码取最大正值
    • B. 尾数取最小负值,阶码取最大正值
    • C. 尾数取最大负值,阶码取最小负值
    • D. 尾数取最小正值,阶码取最小负值

    正确答案: B

    答案解析: 本题考查浮点数表示范围与数值大小的判定(对应教材第二章内容,参见 P23)。

    • 浮点数的值由尾数和阶码共同决定,一般形式为 N=M×rEN = M \times r^E
    • 要使浮点数的“数值最小”(即在数轴上最靠左,最接近负无穷),该数必须是负数且绝对值最大。
    • 当尾数取最小负值(即绝对值最大的负数,如 1-1 或原码中的 0.999...-0.999...)且阶码取最大正值时,该负数的绝对值最大,其对应的数值在代数意义上最小。
  5. 内存按字节编址,地址从 90000HCFFFFH。用存储容量为 16K×816\text{K} \times 8 位的存储器芯片构成该内存,至少需要 【 】 片。

    • A. 2
    • B. 8
    • C. 16
    • D. 32

    正确答案: C

    答案解析:

    1. 计算内存容量:内存按字节编址,每一个地址对应 1 字节(8 位)。从 90000HCFFFFH 的存储单元个数为: CFFFFH90000H+1=40000H=218 B=256 KB\text{CFFFFH} - 90000H + 1 = 40000H = 2^{18}\text{ B} = 256\text{ KB}
    2. 计算芯片需求量:每片芯片的容量为 16K×816\text{K} \times 8 位 = 16 KB16\text{ KB}。 所需芯片数 = 内存总容量 / 单个芯片容量 = 256 KB16 KB=16 片\frac{256\text{ KB}}{16\text{ KB}} = 16\text{ 片}。 (注:原卷中地址写作 CEFFFH 且解析中出现了 218/16K=24 的印刷错误,均已修正为正确的 218/214=24=162^{18} / 2^{14} = 2^4 = 16 关系)。
  6. 存储系统三级层次结构中,主存-Cache 层次满足存储系统的 【 】

    • A. 大容量要求
    • B. 高速度要求
    • C. 低价位要求
    • D. 低能耗要求

    正确答案: B

    答案解析: 主存-Cache 层次主要用于解决 CPU 与主存速度不匹配的问题,通过将 CPU 频繁访问的数据放入高速 Cache 中,使得存储系统的平均访问速度接近 Cache 的高速,满足存储系统的“高速度”要求(对应教材第三章第六节,参见 P90)。

  7. 某计算机主存容量为 64 KB64\text{ KB},其中 ROM 区为 4 KB4\text{ KB},其余为 RAM 区,按字节编址。现要用 2K×82\text{K} \times 8 位的 ROM 芯片和 4K×44\text{K} \times 4 位的 RAM 芯片来设计该存储器,则需要上述规格的 ROM 芯片数和 RAM 芯片数分别是 【 】

    • A. 1、15
    • B. 2、15
    • C. 1、30
    • D. 2、30

    正确答案: D

    答案解析:

    1. ROM 芯片计算:ROM 区容量为 4 KB4\text{ KB},使用 2K×82\text{K} \times 8 位 = 2 KB2\text{ KB} 的 ROM 芯片。 所需 ROM 芯片数 = 4 KB2 KB=2\frac{4\text{ KB}}{2\text{ KB}} = 2 片。
    2. RAM 芯片计算:RAM 区容量为 64 KB4 KB=60 KB64\text{ KB} - 4\text{ KB} = 60\text{ KB}。使用 4K×44\text{K} \times 4 位的 RAM 芯片。
      • 位扩展:由于芯片数据位宽只有 4 位,而系统为 8 位数据总线,因此需要 2 片芯片并联构成一组。
      • 字扩展:RAM 区总容量为 60 KB60\text{ KB},每一组提供 4 KB4\text{ KB} 容量,因此需要 60 KB/4 KB=1560\text{ KB} / 4\text{ KB} = 15 组。
      • 所需 RAM 芯片总数 = 15 组×2 片/组=3015\text{ 组} \times 2\text{ 片/组} = 30 片。
  8. 在下列因素中,与 Cache 的命中率无关的是 【 】

    • A. Cache 块的大小
    • B. Cache 块的容量
    • C. 主存的存取时间
    • D. 都无关

    正确答案: C

    答案解析: Cache 的命中率与块大小、容量、映射规则以及替换算法等有关。

    • 块大小合理增加可利用空间局部性,提高命中率。
    • Cache 容量越大,存储的块越多,命中率越高。
    • 主存的存取时间是主存本身的物理寻址特性,它会影响缺失时的访问开销,但不影响 Cache 的命中率。
  9. 某计算机系统指令字长 16 位,若程序顺序寻址时,程序计数器 PC=(PC)+2\text{PC} = (\text{PC}) + 2,则该系统存储器的存储字长是 【 】

    • A. 1 个字节
    • B. 2 个字节
    • C. 4 个字节
    • D. 6 个字节

    正确答案: B

    答案解析: 本题考查字长、字节与寻址的关系。

    • 计算机采用按字节编址(1 字节 = 8 位),每个存储单元大小为 1 字节。
    • 指令字长为 16 位(即 2 字节),这意味着一条指令需要占用 2 个连续的存储单元(字节)。
    • 在程序顺序寻址时,由于指令长度为 2 字节,为了指向下一条指令的起始地址,程序计数器 PC 必须增加 2。
    • 存储器的存储字长通常设计为与指令字长一致(以便于单次访存取出一条完整指令)。因此该系统的存储字长为 16 位,即 2 个字节。
  10. 设相对寻址的转移指令占两个字节,第一个字节是操作码,第二个字节是相对位移量(用补码表示)。每当 CPU 从存储器取出第一个字节时,即自动完成 PC(PC)+1\text{PC} \leftarrow (\text{PC}) + 1。若当前 PC 的内容为 2008H,要求转移到 2000H,则该转移指令第二个字节的内容应该是 【 】

    • A. 08H
    • B. 09H
    • C. F6H
    • D. F7H

    正确答案: C

    答案解析:

    1. 分析取指过程中的 PC 变化
      • 该转移指令占 2 个字节。
      • CPU 取出第一个字节(操作码)时,PC 自动加 1,变为 2008H + 1 = 2009H
      • CPU 取出第二个字节(相对位移量)时,PC 再次自动加 1,变为 2009H + 1 = 200AH。此时 PC 指向下一条指令的地址。
    2. 利用相对寻址公式计算位移量: 相对寻址的计算公式为:Target=(PC)+DisplacementTarget = (PC) + \text{Displacement}。 代入数据:2000H = 200AH + Displacement。 因此:Displacement = 2000H - 200AH = -10(十进制)。
    3. 计算补码: 将十进制数 10-10 转换为 8 位补码:
      • +10=00001010B+10 = 0000\,1010\text{B}
      • 10-10 的原码为 10001010B1000\,1010\text{B},反码为 11110101B1111\,0101\text{B},补码为 11110110B=F6H1111\,0110\text{B} = \text{F6H}。 所以该转移指令第二个字节的内容应该是 F6H
  11. 兼容性微命令指几个微命令是 【 】

    • A. 可以相继出现
    • B. 可以同时出现
    • C. 可以相互替代
    • D. 可以相互容错

    正确答案: B

    答案解析: 在微程序控制器中,兼容性微命令是指在同一个微周期内可以同时产生、共同控制不同的微操作、可以同时出现的微命令。与之相反,互斥性微命令是指在同一个微周期内不能同时出现的微命令。

  12. 在微程序控制器中,执行指令微程序的首条微指令地址是通过 【 】 得到的。

    • A. 程序计数器(PC)
    • B. 前条微指令
    • C. μPC+1\mu\text{PC} + 1
    • D. 指令操作码映射

    正确答案: D

    答案解析: 在微程序控制器中,执行指令微程序的首条微指令地址是由指令寄存器(IR)中的操作码(Opcode)译码并映射,通过专门的硬件产生,从而转入对应的微指令执行周期。

  13. 某工作站采用的时钟频率 ff15 MHz15\text{ MHz},处理速率为 10 MIPS10\text{ MIPS} 的处理机来执行一个已知混合程序。假定每次存储器存取为 1 个周期延迟,试问此计算机的有效 CPI 是多少? 【 】

    • A. 1
    • B. 1.5
    • C. 2
    • D. 2.5

    正确答案: B

    答案解析: 指令的平均时钟周期数 CPI=时钟周期数程序执行的指令数\text{CPI} = \frac{\text{时钟周期数}}{\text{程序执行的指令数}}。 已知处理机的时钟频率 ff15 MHz15\text{ MHz},即每秒有 15M15\text{M} 个时钟周期。处理速率为 10 MIPS10\text{ MIPS},即每秒处理 10M10\text{M} 条指令。 因此,此计算机的有效 CPI=15M/10M=1.5\text{CPI} = 15\text{M} / 10\text{M} = 1.5

  14. 某 CPU 主频为 1 GHz1\text{ GHz},采用 5 级指令流水线,每个流水段的执行需要 1 个时钟周期。CPU 执行 96 条指令,若不考虑流水线阻塞,则此时流水线的吞吐率为 【 】

    • A. 1.05×1091.05 \times 10^9 条指令/秒
    • B. 0.96×1090.96 \times 10^9 条指令/秒
    • C. 1.0×1091.0 \times 10^9 条指令/秒
    • D. 1.03×1091.03 \times 10^9 条指令/秒

    正确答案: B

    答案解析: 采用 5 级流水线执行 96 条指令,在无阻塞的情况下共需要:

    T=5+(961)=100 个时钟周期T = 5 + (96 - 1) = 100\text{ 个时钟周期}

    CPU 主频为 1 GHz1\text{ GHz},即每秒有 1G=1091\text{G} = 10^9 个时钟周期。 所以,流水线的吞吐率为:

    TP=1 GHz×96100=0.96×109 条指令/秒TP = 1\text{ GHz} \times \frac{96}{100} = 0.96 \times 10^9\text{ 条指令/秒}
  15. 假设某系统总线时钟频率为 10 MHz10\text{ MHz},一个总线周期可并行传输 4 字节信息,占用 2 个总线时钟周期,则该总线带宽是 【 】

  • A. 10 MB/s10\text{ MB/s}
  • B. 20 MB/s20\text{ MB/s}
  • C. 40 MB/s40\text{ MB/s}
  • D. 80 MB/s80\text{ MB/s}

正确答案: B

答案解析: 总线时钟周期为 T=110 MHz=0.1 μsT = \frac{1}{10\text{ MHz}} = 0.1\ \mu\text{s}。 一个总线周期占用 2 个总线时钟周期,即总线周期时间为 2×0.1 μs=0.2 μs2 \times 0.1\ \mu\text{s} = 0.2\ \mu\text{s}。 一个总线周期可并行传输 4 字节的数据。 因此,总线带宽为:

带宽=4 B0.2 μs=20 MB/s\text{带宽} = \frac{4\text{ B}}{0.2\ \mu\text{s}} = 20\text{ MB/s}
  1. 在集中式总线控制中,响应时间最快的是 【 】
  • A. 链式查询
  • B. 计数器查询
  • C. 独立请求
  • D. 分组链式查询

正确答案: C

答案解析: 在集中式总线判优控制的三种常见方式中:

  • 链式查询(菊花链):控制线数量最少(3根),优先级由物理连接决定,但信号需要串行传递,响应速度最慢。
  • 计数器定时查询:通过计数器寻址,响应速度中等。
  • 独立请求:每个部件都有独立的总线请求和允许线,总线控制器直接响应并排队,响应时间最快。
  1. 磁盘的盘面上有很多半径不同的同心圆,这些同心圆称为 【 】
  • A. 扇区
  • B. 磁道
  • C. 柱面
  • D. 磁表面

正确答案: B

答案解析: 磁盘盘面上被划分为许多半径不同的同心圆以用于存储数据,这些同心圆称为磁道(Tracks)。

  1. CPU 响应中断的时间是 【 】
  • A. 外设提出中断
  • B. 任一机器周期结束
  • C. 一条指令结束
  • D. 取指周期结束

正确答案: C

答案解析: 为了保证正在执行的指令的完整性,CPU 仅在一条指令执行周期结束时检测并响应外部发来的中断请求。

  1. 某计算机有 4 级中断,优先级从高到低为 12341 \to 2 \to 3 \to 4。若将优先级顺序修改,改后 1 级中断的屏蔽字为 1011,2 级中断的屏蔽字为 1111,3 级中断的屏蔽字为 0011,4 级中断的屏蔽字为 0001,则修改后的优先次序是 【 】
  • A. 32143 \to 2 \to 1 \to 4
  • B. 13421 \to 3 \to 4 \to 2
  • C. 21342 \to 1 \to 3 \to 4
  • D. 23142 \to 3 \to 1 \to 4

正确答案: C

答案解析: 中断屏蔽字中,某一位为 1 表示屏蔽对应级别的中断。屏蔽字中 1 的个数越多,说明其屏蔽的中断级别越多,优先级越高。

  • 2 级中断的屏蔽字为 1111,屏蔽所有中断,优先级最高。
  • 1 级中断的屏蔽字为 1011,屏蔽了 1、3、4 级,优先级次之。
  • 3 级中断的屏蔽字为 0011,屏蔽了 3、4 级,优先级排第三。
  • 4 级中断的屏蔽字为 0001,只屏蔽了自身,优先级最低。 因此,修改后的优先顺序为:21342 \to 1 \to 3 \to 4
  1. DMA 方式在 【 】 之间建立一条直接数据通路。
  • A. I/O 设备和主存
  • B. 两个 I/O 设备
  • C. I/O 设备和 CPU
  • D. CPU 和主存

正确答案: A

答案解析: DMA(Direct Memory Access,直接内存访问)方式是一种无需 CPU 介入、直接在外部设备与主存储器之间进行高速数据传输的控制方式,在两者之间开辟了一条直接数据通路。


二、计算题(每小题 6 分,共 30 分)

  1. 已知 X=0.11011X = 0.11011Y=0.00010Y = -0.00010,用变形补码计算 X+YX+YXYX-Y,并判断结果是否溢出。

    解答:

    1. 求操作数的变形补码表示(双符号位,正数符号为 00,负数符号为 11):

      • X=0.11011X = 0.11011 是正数,所以: [X]=00.11011[X]_{\text{补}} = 00.11011
      • Y=0.00010Y = -0.00010 是负数,求其变形补码(数值部分取反加 1): [Y]=11.11110[Y]_{\text{补}} = 11.11110
      • 进一步求 [Y][-Y]_{\text{补}}[Y]=00.00010[-Y]_{\text{补}} = 00.00010
    2. 计算 X+YX + Y: 使用变形补码加法公式 [X+Y]=[X]+[Y][X+Y]_{\text{补}} = [X]_{\text{补}} + [Y]_{\text{补}}

      00.11011+11.1111000.11001\begin{array}{rl} & 00.11011 \\ + & 11.11110 \\ \hline & 00.11001 \end{array}

      运算结果的双符号位为 00,表示没有溢出,且结果为正数。 其真值为:

      X+Y=0.11001X + Y = 0.11001
    3. 计算 XYX - Y: 使用变形补码减法公式 [XY]=[X]+[Y][X-Y]_{\text{补}} = [X]_{\text{补}} + [-Y]_{\text{补}}

      00.11011+00.0001000.11101\begin{array}{rl} & 00.11011 \\ + & 00.00010 \\ \hline & 00.11101 \end{array}

      运算结果的双符号位为 00,表示没有溢出,且结果为正数。 其真值为:

      XY=0.11101X - Y = 0.11101

    结论

    • X+YX + Y 的变形补码为 00.1100100.11001,真值为 0.110010.11001,未发生溢出。
    • XYX - Y 的变形补码为 00.1110100.11101,真值为 0.111010.11101,未发生溢出。
  2. 设 CPU 有 16 根地址线,8 根数据线,用 MREQ\overline{\text{MREQ}} 作访存控制信号(低电平有效)。现有下列芯片:

    • 1K×41\text{K} \times 4 位 RAM
    • 4K×84\text{K} \times 8 位 RAM
    • 8K×88\text{K} \times 8 位 RAM
    • 2K×82\text{K} \times 8 位 ROM
    • 4K×84\text{K} \times 8 位 ROM
    • 8K×88\text{K} \times 8 位 ROM 及 74LS138 译码器等电路。 要求主存地址空间满足:最小 8K 为系统程序区,与其相邻的 16K 地址为用户程序区。 试指出所需芯片的种类及片数,并写出每个芯片的地址范围(使用十六进制数表示)。

    解答:

    1. 芯片选择与片数计算

      • 系统程序区
        • 容量需求:8 KB8\text{ KB} 的只读存储(ROM)。
        • 芯片选择:为了使芯片片数最少,选用 1 片 8K×88\text{K} \times 8 位的 ROM 芯片(容量为 8 KB8\text{ KB},与系统数据线 8 位对齐,无须位扩展)。
      • 用户程序区
        • 容量需求:相邻的 16 KB16\text{ KB} 的随机读写存储(RAM)。
        • 芯片选择:为了使芯片片数最少,选用 2 片 8K×88\text{K} \times 8 位的 RAM 芯片(每片容量 8 KB8\text{ KB},共 8 KB×2=16 KB8\text{ KB} \times 2 = 16\text{ KB},字扩展)。
    2. 划分地址范围

      • 系统程序区为最小 8K,地址空间应从 0000H 开始:
        • 起始地址:0000H
        • 结束地址:0000H + 8K - 1 = 0000H + 1FFFH = 1FFFH
      • 用户程序区与其相邻,地址空间紧接系统程序区,即从 2000H 开始,共计 16K:
        • 第一片 RAM 起始地址:2000H
        • 第一片 RAM 结束地址:2000H + 8K - 1 = 2000H + 1FFFH = 3FFFH
        • 第二片 RAM 起始地址:4000H
        • 第二片 RAM 结束地址:4000H + 8K - 1 = 4000H + 1FFFH = 5FFFH
    3. 芯片配置与地址分配汇总

      • 1 片 8K×88\text{K} \times 8 ROM:地址范围为 0000H ~ 1FFFH
      • 第一片 8K×88\text{K} \times 8 RAM:地址范围为 2000H ~ 3FFFH
      • 第二片 8K×88\text{K} \times 8 RAM:地址范围为 4000H ~ 5FFFH
    4. 译码与选通逻辑说明

      • 由于所有芯片的容量均为 8 KB8\text{ KB}(需 13 根地址线 A12A0A_{12} \sim A_0 进行片内寻址),故译码器 74LS138 输入端接 CPU 的高位地址线 A15,A14,A13A_{15}, A_{14}, A_{13}
        • A15A14A13=000A_{15}A_{14}A_{13} = 000(对应地址 0000H ~ 1FFFH)时,74LS138 的 Y0\overline{Y_0} 输出有效,选通 ROM 芯片
        • A15A14A13=001A_{15}A_{14}A_{13} = 001(对应地址 2000H ~ 3FFFH)时,74LS138 的 Y1\overline{Y_1} 输出有效,选通 第一片 RAM
        • A15A14A13=010A_{15}A_{14}A_{13} = 010(对应地址 4000H ~ 5FFFH)时,74LS138 的 Y2\overline{Y_2} 输出有效,选通 第二片 RAM
  3. 某机主存容量为 4M×164\text{M} \times 16 位,且存储字长等于指令字长。若该机指令系统可完成 30 种操作,操作码位数固定,且具有直接、间接、变址、相对和立即 5 种寻址方式。试回答: (1) 画出一地址指令指令格式,并指出各字段的作用。 (2) 若寻址方式为立即数寻址,请写出立即数的范围(用十进制表示,并写出推导过程)。

    解答:

    1. (1) 一地址指令格式设计

      • 指令总字长:由于存储字长等于指令字长,主存容量为 4M×164\text{M} \times 16 位,所以存储字长为 16 位,即指令字长为 16 位。
      • 操作码字段(OP):系统可完成 30 种操作,采用固定长度操作码,则操作码位数应满足 2OP302^{\text{OP}} \ge 30,因此 OP 占 5 位(能表示 32 种操作状态)。
      • 寻址方式字段(M):具有 5 种寻址方式,则寻址字段位数应满足 2M52^{\text{M}} \ge 5,因此 M 占 3 位(能表示 8 种寻址状态)。
      • 形式地址字段(A):剩余的位数分配给形式地址字段: A=1653=8 位A = 16 - 5 - 3 = 8\text{ 位}

      一地址指令格式图示

      +-------------------+-------------------+-------------------+
      |      OP (5位)     |       M (3位)     |       A (8位)     |
      +-------------------+-------------------+-------------------+
      • 各字段作用
        • OP (操作码):指明该指令要执行的操作类型(如加、减、传送等)。
        • M (寻址方式):指明操作数地址的形成方式,本题中用来区分直接、间接、变址、相对和立即寻址。
        • A (形式地址):在非立即数寻址中,给出源操作数的地址信息或地址偏移量;在立即数寻址中,直接存放操作数本身。
    2. (2) 立即数寻址时的立即数范围: 在立即数寻址方式下,形式地址字段 A(占 8 位)直接存放立即数。

      • 若立即数为无符号整数
        • 范围为 02810 \sim 2^8 - 1,即 02550 \sim 255
      • 若立即数为带符号整数(补码表示)
        • 范围为 2812811-2^{8-1} \sim 2^{8-1} - 1,即 128+127-128 \sim +127
  4. 某总线在一个总线周期中并行传送 4 个字节的数据,假设一个总线周期等于一个时钟周期,总线时钟频率为 33MHz,总线带宽是多少?如果总线周期中并行传送 64 位数据,总线时钟频率升为 66MHz,问总线带宽是多少?

    解答: 总线带宽(Bus Bandwidth)是指单位时间内总线上能够传输的最大数据量,计算公式为:

    总线带宽=并行传送的数据量×总线工作频率\text{总线带宽} = \text{并行传送的数据量} \times \text{总线工作频率}
    1. 第一种情况

      • 并行传送的数据量 = 4 字节 (Byte)。
      • 总线时钟频率 = 33 MHz33\text{ MHz}。由于一个总线周期等于一个时钟周期,总线工作频率也为 33 MHz33\text{ MHz}
      • 计算总线带宽: 带宽1=4 B×33 MHz=132 MB/s\text{带宽}_1 = 4\text{ B} \times 33\text{ MHz} = 132\text{ MB/s}
    2. 第二种情况

      • 并行传送的数据量 = 64 位 = 64/8=864 / 8 = 8 字节 (Byte)。
      • 总线时钟频率升为 66 MHz66\text{ MHz},此时总线工作频率也为 66 MHz66\text{ MHz}
      • 计算总线带宽: 带宽2=8 B×66 MHz=528 MB/s\text{带宽}_2 = 8\text{ B} \times 66\text{ MHz} = 528\text{ MB/s}

    结论

    • 原总线带宽为 132 MB/s132\text{ MB/s}
    • 改进后的总线带宽为 528 MB/s528\text{ MB/s}
  5. 已知某磁盘组共有 8 个盘片,盘片存储区域内径 10cm,外径 30cm,道密度为 40 道/cm,内层位密度 400 位/cm。试计算该磁盘组的总存储容量。请写出具体的计算过程。

    解答:

    1. 计算单面磁道数 (T)

      • 盘片存储区域的外半径为 R=30/2=15 cmR = 30 / 2 = 15\text{ cm}
      • 盘片存储区域的内半径为 r=10/2=5 cmr = 10 / 2 = 5\text{ cm}
      • 有效记录区域宽度为 W=Rr=155=10 cmW = R - r = 15 - 5 = 10\text{ cm}
      • 道密度为 Dt=40 道/cmD_t = 40\text{ 道/cm}
      • 每面磁道数: T=W×Dt=10 cm×40 道/cm=400 道T = W \times D_t = 10\text{ cm} \times 40\text{ 道/cm} = 400\text{ 道}
    2. 计算单道信息量 (C_t)

      • 磁盘存储中,每个磁道记录的二进制信息量是相同的,其容量由最内圈磁道的长度和位密度决定。
      • 最内圈磁道的周长为: Lmin=2πr=2×π×5 cm=10π cmL_{min} = 2 \pi r = 2 \times \pi \times 5\text{ cm} = 10\pi\text{ cm}
      • 内层位密度为 Db=400 位/cmD_b = 400\text{ 位/cm}
      • 单个磁道的信息容量: Ct=Lmin×Db=10π cm×400 位/cm=4000π 位12566.37 位C_t = L_{min} \times D_b = 10\pi\text{ cm} \times 400\text{ 位/cm} = 4000\pi\text{ 位} \approx 12566.37\text{ 位}
    3. 计算磁盘组的总记录容量(按 8 个盘片共有 16 个记录面计算):

      总记录容量=16×T×Ct=16×400×4000π 位=25,600,000π 位\text{总记录容量} = 16 \times T \times C_t = 16 \times 400 \times 4000\pi\text{ 位} = 25,600,000\pi\text{ 位}

      转换为字节(Byte)表示:

      总记录容量25,600,000×3.14159265810,053,096 字节9.59 MB\text{总记录容量} \approx \frac{25,600,000 \times 3.14159265}{8} \approx 10,053,096\text{ 字节} \approx 9.59\text{ MB}

      (注:若不使用磁盘组最外侧的 2 个保护面,只用 14 个记录面,则总容量为:14×400×4000π22,400,000π 位8.39 MB14 \times 400 \times 4000\pi \approx 22,400,000\pi\text{ 位} \approx 8.39\text{ MB})


三、简答题(本题共 1 小题,共 5 分)

高速缓存 Cache 的常用替换策略有最不经常使用(LFU)算法和近期最少使用(LRU)算法。试说明这两种替换策略的替换方式及特点。

解答:

  1. 最不经常使用(LFU, Least Frequently Used)算法
    • 替换方式:为每个 Cache 块设置一个计数器。每当某块被访问时,该块的计数器加 1。当需要替换时,选择当前**访问次数最少(计数器值最小)**的块进行替换,并将新调入块的计数器清零重新计数。
    • 特点:侧重于反映一段时间内块的访问频度。但如果一个块在前期被频繁访问,计数器值变得非常大,而后期不再使用,该块就会长时间滞留在 Cache 中无法被替换,产生“积累效应”。
  2. 近期最少使用(LRU, Least Recently Used)算法
    • 替换方式:为每个 Cache 块记录自上次被访问以来所经历的时间。当需要替换时,选择近期最长时间未被访问的块进行替换。
    • 特点:基于程序访问的时间局部性(即最近访问过的块在不久的将来极有可能再次被访问)。LRU 算法能很好地保护刚被访问过的块,命中率通常较高,是目前应用最广泛的替换策略,但硬件实现比 LFU 更为复杂。

四、综合分析题(本题共 2 小题,共 25 分)

  1. 某系统的存储器为 1MB,每字块为 32B,存储字长为 8 位,若 Cache 为 16KB,采用字节编址方式。 (1) 采用直接映射,主存地址格式是什么?请指出该主存地址每一构成部分的位数。(4 分) (2) 采用 16 路组相联映射,主存地址格式是什么?Cache 地址格式是什么?请指出地址每一构成部分的位数。(4 分) (3) 采用直接映射时,若地址为 2A3CFH 的主存块要调入 Cache 中,在 Cache 中的地址是什么?请写出具体的计算过程。(4 分)

    解答:

    • 主存容量 = 1 MB=220 B1\text{ MB} = 2^{20}\text{ B},由于按字节编址,主存地址线宽度为 20 位
    • 块大小(字块大小)= 32 B=25 B32\text{ B} = 2^5\text{ B},因此块内地址(字地址)占 5 位
    • Cache 容量 = 16 KB=214 B16\text{ KB} = 2^{14}\text{ B},Cache 块数 = 16 KB32 B=512 块=29 块\frac{16\text{ KB}}{32\text{ B}} = 512\text{ 块} = 2^9\text{ 块}

    (1) 直接映射主存地址格式

    • 块内地址(Offset):5 位。
    • Cache 块号(Index):log2512=9\log_2 512 = 9 位。
    • 主存字块标记(Tag):2095=620 - 9 - 5 = 6 位。
    • 主存地址格式
      Tag (主存字块标记)Index (Cache字块地址)Offset (块内地址)
      6 位9 位5 位

    (2) 16 路组相联映射地址格式

    • 采用 16 路组相联映射,Cache 被分成组,每组包含 16 块。
    • Cache 组数 = 512/16=32 组=25 组512 / 16 = 32\text{ 组} = 2^5\text{ 组}
    • 组号(Set Index):log232=5\log_2 32 = 5 位。
    • 块内地址(Offset):5 位。
    • 主存字块标记(Tag):2055=1020 - 5 - 5 = 10 位。
    • 主存地址格式
      Tag (主存字块标记)Set Index (组号地址)Offset (块内地址)
      10 位5 位5 位
    • Cache 地址格式(Cache 容量为 16 KB=214 B16\text{ KB} = 2^{14}\text{ B},Cache 地址共 14 位):
      • 组号(Set Index):5 位。
      • 组内块号(Block Index in Set):log216=4\log_2 16 = 4 位。
      • 块内地址(Offset):5 位。
      • Cache 地址格式
        Set Index (组号)Block Index (组内块号)Offset (块内地址)
        5 位4 位5 位

    (3) 计算主存块调入 Cache 后的地址(直接映射)

    1. 将主存地址转换为二进制: 主存地址为 2A3CFH,其 20 位二进制形式为: 0010 1010 0011 1100 1111B
    2. 按直接映射格式划分地址
      • 高 6 位为 Tag:001010B
      • 中间 9 位为 Index (Cache字块地址):100011110B(即十六进制 11EH = 十进制 286)
      • 低 5 位为 Offset (块内地址):01111B
    3. 确定 Cache 地址: 在直接映射下,主存块被调入 Cache 中对应的块号为 Index = 100011110B。 该主存块中数据调入 Cache 后的地址由 Cache 块号和块内偏移拼接构成: Cache 地址=Index (9位)+Offset (5位)\text{Cache 地址} = \text{Index (9位)} + \text{Offset (5位)} 二进制形式:100011110 01111B = 10 0011 1100 1111B。 转换为十六进制:23CFH:调入 Cache 中的地址为 23CFH(对应 Cache 中第 286 块的第 15 字节)。
  2. 设有一运算器通路如图 1 所示(一般单总线结构),假设操作数 a 和 b(均为补码)已分别放在通用寄存器 R1 和 R2 中,ALU 有 +、-、M(传送)三种操作功能,其中“-”操作为 A-B。 (1) 指出互斥性微命令和兼容性微命令。(5 分) (2) 画出计算 (a+b)/2R2(a+b)/2 \to R2 的微程序流程图,问执行周期需要几条微指令?(3 分)

    解答: (1) 互斥性微命令与兼容性微命令说明

    • 互斥性微命令:指在同一个微周期内不能同时产生、硬件上互斥执行的控制信号。
      • 例如:各寄存器的输出控制信号(如 R1outR1_{\text{out}}R2outR2_{\text{out}}MDRoutMDR_{\text{out}}PCoutPC_{\text{out}})。在单总线结构中,不能有两个或以上的寄存器同时向总线输出数据,否则会引起总线冲突。
      • 例如:ALU 的操作选择信号(如加法控制信号与减法控制信号是互斥的)。
    • 兼容性微命令:指在同一个微周期内可以同时产生、共同控制不同的独立微操作的控制信号。
      • 例如:一个寄存器输出到总线的同时,多个寄存器可以同时从总线上接收该数据(如 R1outR1_{\text{out}}AinA_{\text{in}}(暂存器)、MARinMAR_{\text{in}} 兼容,可以同时进行)。
      • 例如:ALU 进行运算的同时,控制暂存器打入或总线数据传输。

    (2) 计算 (a+b)/2R2(a+b)/2 \to R2 的微操作与流程设计(按标准单总线结构分析): 为了计算 (a+b)/2(a+b)/2 并写入寄存器 R2:

    1. 将 R1 中的操作数 aa 送入 ALU 的暂存器 A(第 1 条微指令)。
    2. 将 R2 中的操作数 bb 送入 ALU 的另一端输入(如暂存器 B,或在单总线中保持送上总线)(第 2 条微指令)。
    3. 控制 ALU 执行相加运算,所得结果通过移位器右移一位(以实现除以 2 操作),并将移位器输出送回总线,打入寄存器 R2(第 3 条微指令)。

    微程序流程图

    +------------------------------------+
    |               开始                 |
    +------------------------------------+
                      |
                      v
    +------------------------------------+
    | 微指令 1:                          |
    | R1(out) -> 总线 -> A(in)           |
    +------------------------------------+
                      |
                      v
    +------------------------------------+
    | 微指令 2:                          |
    | R2(out) -> 总线 -> B(in)           |
    +------------------------------------+
                      |
                      v
    +------------------------------------+
    | 微指令 3:                          |
    | ALU执行加法运算 (A + B)            |
    | 移位器执行右移 (SR)                |
    | 移位器输出 -> 总线 -> R2(in)       |
    +------------------------------------+
                      |
                      v
    +------------------------------------+
    |           进入下条指令             |
    +------------------------------------+

    执行周期需要几条微指令: 在单总线结构下,该操作的执行周期一共需要 3 条微指令(注:若datapath为双总线结构,则 R1AR1 \to AR2BR2 \to B 可并行完成,共需 2 条微指令;若为三总线结构,则可在 1 条微指令内完成。本解答以最通用、基础的单总线结构作答)

Profile Image of the Author
Sonder
好想要技术
这是公告标题
这只是一个公告
分类
标签
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.7
文章许可
CC BY-NC-SA 4.0
文章目录