Skip to content

2022年 408 计算机组成原理 第 44 题

计算机组成原理2022年综合题11分

题目

假设某磁盘驱动器中有 4 个双面盘片,每个盘面有 20000 个磁道,每个磁道有 500 个扇区,每个扇区可记录 512 字节的数据,盘片转速为 7200rpm(转/分),平均寻道时间为 5ms,请回答下列问题。

(1) 每个扇区包含数据及地址信息,地址信息分为 3 个字段,这 3 个字段的名称格式什么?对于该磁盘,各字段至少占多少位?

(2) 一个扇区的平均访问时间约为多少?

(3) 若采用周期挪用 DMA 方式进行磁盘与主机之间的数据传送,磁盘控制器中的数据缓冲区大小为 64 位,则在一个扇区读写过程中,DMA 控制器向 CPU 发送了多少次总线请求?若 CPU 检测到 DMA 控制器的总线请求信号时也需要访问主存,则 DMA 控制器是否可以获得总线使用权?为什么?

解析

本题考查 磁盘的物理寻址模型(CHS)+ 平均访问时间分解 + 周期挪用 DMA。三件事分别对应:

  • CHS 地址 = Cylinder(柱面)+ Head(磁头)+ Sector(扇区),三层定位一个数据块;
  • 平均访问时间 = 寻道(机械臂移动)+ 旋转延迟(盘片转过去)+ 传输(数据划过磁头);
  • 周期挪用 DMA 在 CPU 不用总线的间隙搬数据,冲突时 DMA 优先(设备数据有时限)。

(1) CHS 字段名称与位数 [4 分]

字段名称: 柱面号 / 磁头号 / 扇区号(也分别叫"磁道号 / 盘面号 / 扇区号")。

位数计算:

字段数量最少位数
柱面号20000(每盘面 20000 磁道,柱面 = 同径多盘面磁道)
磁头号(4 盘片 × 2 盘面)
扇区号500

编者注(生僻术语): "柱面"是把每个盘面同半径的磁道纵向贯穿的虚拟集合——读 / 写时磁头组同时移动到同一柱面,省一次寻道。这是为什么 CHS 用柱面而不是单盘面磁道作为最高位。

(2) 一个扇区的平均访问时间 [3 分]

平均访问时间 = 寻道时间 + 旋转延迟 + 传输时间

Step 1. 算盘片旋转一圈的时间。

Step 2. 拆三段。

部分时间
平均寻道(题给)5 ms
平均旋转延迟(半圈) ms
传输一个扇区(一圈划过 500 扇区) ms

Step 3. 合计。

易错点: "平均旋转延迟"是半圈而不是一圈——目标扇区在哪里是均匀分布的,期望转过去要 圈。漏掉除以 2 是常见错误。

(3) 一个扇区读写过程中的总线请求次数 + DMA 与 CPU 的优先级 [4 分]

Step 1. 算总线请求次数。

DMA 控制器的数据缓冲区每"满 64 位"就发一次总线请求把数据搬到主存。一个扇区 512B = 4096 bits:

Step 2. CPU 与 DMA 同时要总线,谁优先?

DMA 优先。

原因: 周期挪用 DMA 模式下,DMA 服务的是"实时性敏感"的设备(磁盘磁头一旦转过目标扇区就错过了),数据丢失没法补救;CPU 被让一拍只是慢一点,不丢数据。所以总线仲裁规则倾向于 DMA。

易错点: "周期挪用"不是"DMA 永远霸占总线"——它只在 CPU 不用总线的空隙偷走总线周期;只有冲突时才依据"DMA 优先"规则判定。这与"独占式 DMA"(暂停 CPU、整段拷贝)不同。

编者注(生僻术语): 三种 DMA 模式:周期挪用(cycle stealing,本题)、独占式(block transfer,DMA 期间 CPU 完全停摆)、字节交替(interleaved,CPU 和 DMA 共享时分总线)。周期挪用是性能 / 实现复杂度的折中,最常见。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题