精简版 · 小杯2026-08 冻结,已停止更新(发布前修订了 4 处已知错误)。后续勘误与新增内容只在正式版。看正式版(中杯)→
Skip to content

外部存储器

考情分析

磁盘存取时间的计算常以综合题或选择题出现。SSD 的基本概念也有涉及。

大纲定位

考纲第三章(五)「外部存储器」两条:1. 磁盘存储器 2. 固态硬盘(SSD)

注意 RAID 已不在现行大纲之内,本文保留相关内容只作历史真题的方法参考,不必在这上面投入精力。

磁盘存储器

物理结构

磁盘由多个盘片组成,每个盘片有一个或两个记录面,每面含若干同心圆磁道,每条磁道划分为若干扇区

    记录面

 ┌────┴────┐
 磁道 0  磁道 1  ...  磁道 n

 ┌─┴─┐
扇区0 扇区1 ... 扇区m
  • 记录面数 = 磁头数,每个磁头负责一个记录面
  • 柱面数 = 单个记录面上的磁道数。所有记录面上同一编号的磁道构成一个柱面
  • 扇区是磁盘读写的最小单位(通常 512B 或 4KB)

扇区按固定圆心角度划分,外圈磁道周长大但扇区数相同,因此从外到内位密度递增,存储能力受限于最内圈的最大位密度。

图 7.15 磁盘驱动器的物理组成

图 7.15 磁盘驱动器的物理组成

图里能一眼看清两件纯文字讲不清的事:移动臂上叠着一组磁头,它们是一起动的——所以同一时刻所有盘面的磁头都停在相同半径上,这些磁道纵向贯穿构成的虚拟集合就是柱面。这也解释了为什么 CHS 地址把柱面号放最高位:同一柱面内换磁头不需要重新寻道。

磁盘地址

柱面(磁道)号盘面(磁头)号扇区号

例如 16 个盘面、256 条磁道、16 个扇区/磁道,地址 = 8 位柱面号 + 4 位盘面号 + 4 位扇区号 = 16 位。

但真题的数字不会这么友好。每段位数的通用式是:

某字段位数=log2(该维度的数量)

上面那个例子里 16、256、16 都恰好是 2 的整数次幂,除法直接整除,把向上取整这个动作藏起来了。数量不是 2 的幂时必须显式取整:

:20000 个柱面、每道 500 个扇区、4 个双面盘片。

214=16384<2000032768=215柱面号=log220000=15 磁头数=4 盘片×2 =8磁头号=log28=3 28=256<500512=29扇区号=log2500=9 

编者注(易错):两个坑在这里。一是向下取整——答 14 位、8 位是要扣分的,位数只能进不能退。二是盘片 ≠ 盘面——题干给"N 个双面盘片"时磁头数是 2N,直接拿盘片数去取对数会少一位。

地址位数题的三步动作

  1. 先把盘片换算成盘面(双面盘片 ×2),盘面数 = 磁头数
  2. 每段位数 =log2(数量)逐段向上取整
  3. 三段相加得总位数

磁盘容量

格式化容量=记录面数×柱面数×每道扇区数×每扇区字节数

非格式化容量 > 格式化容量(需预留扇区间隙、同步字段等开销)。

磁盘存储器的三层组成

选择题直接考过这个划分:

是什么
盘片记录介质本身(多片叠装,各面镀磁性材料)
磁盘驱动器主轴电机 + 磁头组 + 寻道伺服机构,负责机械动作
磁盘控制器接收主机命令、控制驱动器、与总线通信。DMA 方式下向 CPU 发总线请求的就是它

扇区内部长什么样

题干说"每个扇区包含数据及地址信息"不是废话,是在提示扇区的物理格式:

[ 间隙  同步/地址标记  ID(柱面号/磁头号/扇区号)  数据  CRC ]

这也解释了为什么非格式化容量 > 格式化容量——间隙、同步字段、ID、校验都不算进用户数据。

图 7.17 温切斯特磁盘的磁道记录格式

图 7.17 温切斯特磁盘的磁道记录格式

教材这张图给了实际的字节数:一个扇段 600 字节,其中数据域 515 字节(同步字节 1 + 数据 512 + CRC 2),其余 85 字节是间隙和 ID 域(道号/头号/段号/CRC)。用户拿到的是 512 B,磁道上实际占了 600 B——差的这 88 就是格式化开销。

磁盘存取时间(核心公式)

存取时间=寻道时间+旋转等待时间+数据传输时间 (+ 控制器延时)
  • 寻道时间:磁头移动到目标磁道所需时间。平均寻道时间 最大寻道时间的一半
  • 旋转等待时间:目标扇区旋转到磁头下方的时间。平均旋转等待时间 = 磁盘转半圈的时间
平均旋转等待时间=12×1转速(转/秒)=12r
  • 数据传输时间:读写数据所需时间
  • 控制器延时:磁盘控制器处理命令的开销。题干给了就必须加,是独立一项;不给就是三段

编者注(易错):漏掉题干给出的控制器延时是这类题的经典错项。检查动作很简单——题干给了几个时间量,答案里就该出现几个

传输时间有两条路线,看题目给什么

路线一(题目给字节数和传输速率):

传输时间=读写字节数数据传输速率

路线二(题目只给每磁道扇区数,不给字节数):

读一个扇区的传输时间=转一圈的时间每磁道扇区数

两条等价——读一个扇区就是磁头划过 1 圈,字节数在推导里被约掉了。真题常常不给每扇区字节数,这时只有路线二能走。

数据传输速率

设转速为 r 转/秒,每条磁道容量为 N 字节:

Dr=rN

例 1:磁盘转速 7200 RPM,平均寻道时间 8ms,每磁道 500 个扇区,每扇区 512B。读一个扇区的平均存取时间?

解:转速 =7200/60=120 转/秒,每转时间:

T=1120 s=1000120 ms8.33 ms
  • 平均寻道时间 = 8 ms
  • 平均旋转延迟 =8.33/24.17 ms
  • 传输一个扇区(路线二,不需要每扇区字节数):8.33/5000.017 ms
  • 校验(路线一):传输速率 =120×500×512=30720000 B/s =30.72 MB/s,512÷(30.72×106)=1.667×105 s =0.017 ms ✓
平均存取时间=8+4.17+0.01712.19 ms

本文统一取 1 MB=106 B、1 GB=109 B(磁盘厂商与真题解析的惯例)。同一道题里口径必须自始至终一致,中途从 ÷1024 切到 ÷1000 会得到一个两边都不成立的数。

例 2:磁盘转速 10000 RPM,共 8 个记录面,每面 20000 条磁道,每磁道 200 个扇区(512B)。格式化容量和数据传输速率?

解:

  • 格式化容量 =8×20000×200×512 B=16384000000 B=16.384 GB
  • 转速 =10000/60166.7 转/秒
  • 每磁道容量 =200×512=102400 B
  • 数据传输速率 =166.7×10240017067000 B/s17.07 MB/s

编者注(易错):这一步最容易栽在口径混用上。若把每磁道容量写成"100 KB"(用了 ÷1024),再按 1MB=1000KB 换算,会得到 16.67 MB/s——这个数在十进制(17.07)和二进制(16.28 MiB/s)两种口径下都不成立。要么全程 103,要么全程 210,不能中途换。

磁盘阵列(RAID)

RAID 将多个物理磁盘组合为逻辑磁盘,通过并行访问和冗余提高性能与可靠性。

级别特点
RAID0条带化(数据分布在多盘),无冗余,速度快
RAID1镜像备份,有效容量减半,可靠性高
RAID2海明码纠错
RAID3位交叉 + 单独校验盘
RAID4块交叉 + 单独校验盘
RAID5分布式奇偶校验,无独立校验盘

固态硬盘(SSD)

SSD 基于 Flash 存储器构建,由闪存芯片阵列和闪存翻译层组成。

基本特性

特点说明
读写单位读/写以为单位(512B~4KB),擦除以为单位(16KB~512KB)
写前必须擦除一个块擦除后,其中所有页才能被重新写入
擦写寿命有限每个块的擦写次数有限(几百~几千次)
无机械部件随机访问延迟极低,抗震、低功耗、无噪声

随机写入较慢的原因:擦除操作耗时长(比页访问慢一个数量级);修改已有数据的页时,需先将整块有效数据复制到新块,再写入。

这个"改一页要搬一块"的现象有专门的名字——写放大(write amplification)

写放大系数=实际写入闪存的数据量主机请求写入的数据量>1

它是 SSD 写性能和寿命的核心制约:闪存有擦写次数上限,写放大越大,寿命消耗越快。磨损均衡正是为对冲它而存在的。

SSD vs HDD

对比项SSDHDD
随机读取速度极快(微秒级)慢(毫秒级,需寻道+旋转)
顺序写入速度较快
随机写入速度较慢(需先擦后写)
抗震性弱(机械部件)
功耗
价格
寿命受限于擦写次数受限于机械磨损

磨损均衡

为避免某些块频繁擦写导致提前损坏,SSD 控制器采用磨损均衡技术:

  • 动态磨损均衡:写入时优先选择擦写次数少的空闲块
  • 静态磨损均衡:定期将高磨损块中的数据迁移到低磨损块,使高磨损块转为以读为主

考点清单

  • 存取时间 = 寻道时间 + 旋转等待时间 + 传输时间
  • 平均旋转等待时间 = 转半圈的时间 = 1/(2r)
  • 数据传输速率 =r×N(转速 × 每磁道容量)
  • 格式化容量 = 面数 × 柱面数 × 扇区数/道 × 字节数/扇区
  • 磁盘地址:柱面号 + 盘面号 + 扇区号,每段位数 =log2 数量 向上取整
  • 盘片 盘面:N 个双面盘片 2N 个磁头
  • 存取时间 = 寻道 + 旋转延迟 + 传输(题干给了控制器延时就再加一项
  • 传输时间两条路线:字节数/速率,或 T÷ 每道扇区数(题目不给字节数时走后者)
  • 扇区 = 间隙 + ID(柱面/磁头/扇区号)+ 数据 + CRC,所以非格式化容量 > 格式化容量
  • 磁盘存储器三层 = 盘片 + 驱动器 + 控制器
  • SSD 读写以页为单位,擦除以块为单位,写前必须擦除;改一页要搬一块 = 写放大
  • 单位口径全程统一,不可中途在 103210 之间切换
  • RAID0 无冗余但快,RAID1 镜像但容量减半(RAID 已移出大纲

教材出处

  • 袁春风《计算机组成与系统结构(第 3 版)》§7.3.1 磁盘存储器:图 7.15(p219)、图 7.17(p220)

真题练习