计算机组成原理 | 磁盘存储器
计算机组成原理 | 机械硬盘的“慢”与RAID的“快”,一文讲透磁盘存储器的核心考点!
摘要/导语:
上一期我们深入RAM内部,搞懂了读周期和译码器(<点击查看上期>)。但内存断电就丢数据怎么办?今天我们要聊的是计算机的“永久仓库”——磁盘存储器。
为什么机械硬盘读写那么慢?瓶颈到底在哪?当单块硬盘不够用、不可靠时,RAID技术又是如何化腐朽为神奇的?本期带你拆解磁盘的物理结构、性能计算公式以及RAID阵列的奥秘。文末附带经典408计算题,建议收藏反复看!
🚀 正文内容
💽 第一部分:解剖磁盘——它到底长什么样?
虽然现在的SSD(固态硬盘)大行其道,但在计算机组成原理的考试中,**磁盘存储器(Disk Memory)**依然是考察重点,因为它代表了经典的磁记录原理。
我们可以把磁盘系统看作一个精密的“唱片播放机”,主要由三部分组成:
- 盘片(Platters):涂有磁性材料的圆盘,数据就存在这里。
- 磁盘驱动器(Drive):包括主轴电机(让盘片转起来)和移动臂(带着磁头跑)。
- 磁盘控制器(Controller):它是大脑,负责把CPU的指令翻译成磁盘能听懂的电信号。
📍 数据的“三维坐标”
要在茫茫磁海中找到数据,我们需要三个坐标,这也是磁盘寻址的基础:
- 柱面 (Cylinder):所有盘面上半径相同的磁道组成的圆柱体。
- 盘面/磁头 (Head):每个盘面都有一个对应的磁头,用来读写数据。
- 扇区 (Sector):磁道被划分成一个个小格,这是磁盘读写的最小物理单位(通常是512B或4KB)。
💡 避坑指南:
做题时注意区分格式化容量和非格式化容量。
- 非格式化容量= 总位密度 × 最内圈磁道周长(理论最大值)。
- 格式化容量= 用户实际能用的空间(要扣除校验位、间隔等开销,通常比非格式化小)。
⏱️ 第二部分:为什么磁盘这么慢?(性能指标详解)
很多同学背公式很痛苦,其实只要理解了物理过程,公式自然就出来了。磁盘的一次读写操作,本质上是一场**“海陆空”接力赛**。
平均存取时间 (T a T_aTa) 由三部分组成:
T a = T s + T r + T t T_a = T_s + T_r + T_tTa=Ts+Tr+Tt
- 寻道时间 (T s T_sTs) —— “跑路的时间”
- 磁头臂从当前位置移动到目标磁道的时间。
- 这是最耗时的部分,因为涉及机械运动。通常取平均寻道时间(最大行程的一半)。
- 旋转延迟时间 (T r T_rTr) —— “等待的时间”
- 磁头到了磁道,但目标扇区还没转到磁头下面。
- 平均旋转延迟 =旋转半周所需的时间(即1 / ( 2 × 转速 ) 1 / (2 \times \text{转速})1/(2×转速))。
- 传输时间 (T t T_tTt) —— “搬运的时间”
- 数据真正流过磁头的时间。
- 取决于数据量和转速。
💡 核心考点:
数据传输率 (D r D_rDr)是指单位时间内读写的数据量。
公式:D r = r × N D_r = r \times NDr=r×N
- r rr:磁盘转速(转/秒)。
-N NN:每条磁道的容量(字节/道)。
-注意:一旦磁头定位好,数据传输率是恒定的,与你在哪个磁道无关!
🛡️ 第三部分:人多力量大——RAID磁盘阵列
既然单块磁盘又慢又容易坏,工程师们想到了一个绝招:并联!
这就是RAID (Redundant Arrays of Independent Disks),独立磁盘冗余阵列。它的核心思想是:利用多个廉价磁盘的组合,获得高性能、高可靠性。
以下是考研最爱考的三种级别:
1. RAID 0:极速狂飙(条带化)
- 原理:把数据切成块,轮流写在不同的磁盘上(像发扑克牌一样)。
- 优点:读写速度极快(N NN块盘就是N NN倍速),容量利用率100%。
- 缺点:没有容错能力!只要坏一块盘,所有数据全完蛋。
- 适用:对速度要求极高,但数据不重要的场景(如视频剪辑缓存)。
2. RAID 1:稳如泰山(镜像)
- 原理:一块盘写数据,另一块盘完全复制一份(互为备份)。
- 优点:安全性最高,坏了一块盘,另一块立马顶上。
- 缺点:太浪费了!容量利用率只有50%。
- 适用:存放重要数据(如系统盘、财务数据)。
3. RAID 2~5:性价比之选(数据校验)
- 原理:通过奇偶校验信息来恢复数据。
- RAID 5(重点):数据和校验信息分散在所有盘上。允许坏一块盘而不丢失数据。兼顾了速度、安全和成本。
📝 第四部分:真题实战(408/期末高频考点)
【例题】(经典计算题改编)
某磁盘存储器共有4个记录面,每个记录面有100个磁道,每个磁道分为8个扇区,每个扇区存储512字节。磁盘转速为3000转/分,平均寻道时间为20ms。
求:
- 该磁盘的总容量是多少?
- 该磁盘的数据传输率是多少?
- 读取一个扇区数据的平均存取时间是多少?
【解析】
计算总容量
- 公式:面数 × 磁道数 × 扇区数 × 扇区大小 \text{面数} \times \text{磁道数} \times \text{扇区数} \times \text{扇区大小}面数×磁道数×扇区数×扇区大小
- 计算:4 × 100 × 8 × 512 B = 1 , 638 , 400 B = 1.6 MB 4 \times 100 \times 8 \times 512\text{B} = 1,638,400\text{B} = 1.6\text{MB}4×100×8×512B=1,638,400B=1.6MB。
计算数据传输率 (D r D_rDr)
- 首先算出转速(转/秒):3000 / 60 = 50 r/s 3000 / 60 = 50\text{r/s}3000/60=50r/s。
- 算出一条磁道的容量:8 × 512 B = 4096 B = 4 KB 8 \times 512\text{B} = 4096\text{B} = 4\text{KB}8×512B=4096B=4KB。
- 公式:D r = r × N = 50 × 4 KB = 200 KB/s D_r = r \times N = 50 \times 4\text{KB} = 200\text{KB/s}Dr=r×N=50×4KB=200KB/s。
计算平均存取时间 (T a T_aTa)
- 寻道时间 (T s T_sTs):题目直接给了,20ms。
- 旋转延迟 (T r T_rTr):转速50r/s,转一圈需1 / 50 = 0.02 s = 20 ms 1/50 = 0.02\text{s} = 20\text{ms}1/50=0.02s=20ms。平均延迟是半圈,即10ms。
- 传输时间 (T t T_tTt):读一个扇区(512B)。
- 方法一:数据量 / 传输率 = 512 B / ( 200 × 1024 B/s ) = 0.0025 s = 2.5 ms \text{数据量} / \text{传输率} = 512\text{B} / (200 \times 1024\text{B/s}) = 0.0025\text{s} = 2.5\text{ms}数据量/传输率=512B/(200×1024B/s)=0.0025s=2.5ms。
- 方法二:一个扇区占圆周的1 / 8 1/81/8,所以时间是转一圈时间的1 / 8 1/81/8。20 ms / 8 = 2.5 ms 20\text{ms} / 8 = 2.5\text{ms}20ms/8=2.5ms。
- 总时间:T a = 20 + 10 + 2.5 = 32.5 ms T_a = 20 + 10 + 2.5 = \mathbf{32.5\text{ms}}Ta=20+10+2.5=32.5ms。
【答案】
- 1.6MB
- 200KB/s
- 32.5ms
