深入浅出计算机组成原理
徐文浩
bothub创始人
立即订阅
13019 人已学习
课程目录
已完结 62 讲
0/4登录后,你可以任选4讲全文学习。
入门篇 (5讲)
开篇词 | 为什么你需要学习计算机组成原理?
免费
01 | 冯·诺依曼体系结构:计算机组成的金字塔
02 | 给你一张知识地图,计算机组成原理应该这么学
03 | 通过你的CPU主频,我们来谈谈“性能”究竟是什么?
04 | 穿越功耗墙,我们该从哪些方面提升“性能”?
原理篇:指令和运算 (12讲)
05 | 计算机指令:让我们试试用纸带编程
06 | 指令跳转:原来if...else就是goto
07 | 函数调用:为什么会发生stack overflow?
08 | ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?
09 | 程序装载:“640K内存”真的不够用么?
10 | 动态链接:程序内部的“共享单车”
11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
12 | 理解电路:从电报机到门电路,我们如何做到“千里传信”?
13 | 加法器:如何像搭乐高一样搭电路(上)?
14 | 乘法器:如何像搭乐高一样搭电路(下)?
15 | 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?
16 | 浮点数和定点数(下):深入理解浮点数到底有什么用?
原理篇:处理器 (18讲)
17 | 建立数据通路(上):指令+运算=CPU
18 | 建立数据通路(中):指令+运算=CPU
19 | 建立数据通路(下):指令+运算=CPU
20 | 面向流水线的指令设计(上):一心多用的现代CPU
21 | 面向流水线的指令设计(下):奔腾4是怎么失败的?
22 | 冒险和预测(一):hazard是“危”也是“机”
23 | 冒险和预测(二):流水线里的接力赛
24 | 冒险和预测(三):CPU里的“线程池”
25 | 冒险和预测(四):今天下雨了,明天还会下雨么?
26 | Superscalar和VLIW:如何让CPU的吞吐率超过1?
27 | SIMD:如何加速矩阵乘法?
28 | 异常和中断:程序出错了怎么办?
29 | CISC和RISC:为什么手机芯片都是ARM?
30 | GPU(上):为什么玩游戏需要使用GPU?
31 | GPU(下):为什么深度学习需要使用GPU?
32 | FPGA和ASIC:计算机体系结构的黄金时代
33 | 解读TPU:设计和拆解一块ASIC芯片
34 | 理解虚拟机:你在云上拿到的计算机是什么样的?
原理篇:存储与I/O系统 (17讲)
35 | 存储器层次结构全景:数据存储的大金字塔长什么样?
36 | 局部性原理:数据库性能跟不上,加个缓存就好了?
37 | 高速缓存(上):“4毫秒”究竟值多少钱?
38 | 高速缓存(下):你确定你的数据更新了么?
39 | MESI协议:如何让多核CPU的高速缓存保持一致?
40 | 理解内存(上):虚拟内存和内存保护是什么?
41 | 理解内存(下):解析TLB和内存保护
42 | 总线:计算机内部的高速公路
43 | 输入输出设备:我们并不是只能用灯泡显示“0”和“1”
44 | 理解IO_WAIT:I/O性能到底是怎么回事儿?
45 | 机械硬盘:Google早期用过的“黑科技”
46 | SSD硬盘(上):如何完成性能优化的KPI?
47 | SSD硬盘(下):如何完成性能优化的KPI?
48 | DMA:为什么Kafka这么快?
49 | 数据完整性(上):硬件坏了怎么办?
50 | 数据完整性(下):如何还原犯罪现场?
51 | 分布式计算:如果所有人的大脑都联网会怎样?
应用篇 (5讲)
52 | 设计大型DMP系统(上):MongoDB并不是什么灵丹妙药
53 | 设计大型DMP系统(下):SSD拯救了所有的DBA
54 | 理解Disruptor(上):带你体会CPU高速缓存的风驰电掣
55 | 理解Disruptor(下):不需要换挡和踩刹车的CPU,有多快?
结束语 | 知也无涯,愿你也享受发现的乐趣
免费
答疑与加餐 (5讲)
特别加餐 | 我在2019年F8大会的两日见闻录
FAQ第一期 | 学与不学,知识就在那里,不如就先学好了
用户故事 | 赵文海:怕什么真理无穷,进一寸有一寸的欢喜
FAQ第二期 | 世界上第一个编程语言是怎么来的?
特别加餐 | 我的一天怎么过?
深入浅出计算机组成原理
登录|注册

45 | 机械硬盘:Google早期用过的“黑科技”

徐文浩 2019-08-09
在 1991 年,我刚接触计算机的时候,很多计算机还没有硬盘。整个操作系统都安装在 5 寸或者 3.5 寸的软盘里。不过,很快大部分计算机都开始用上了直接安装在主板上的机械硬盘。到了今天,更早的软盘早已经被淘汰了。在个人电脑和服务器里,更晚出现的光盘也已经很少用了。
机械硬盘的生命力仍然非常顽强。无论是作为个人电脑的数据盘,还是在数据中心里面用作海量数据的存储,机械硬盘仍然在被大量使用。不仅如此,随着成本的不断下降,机械硬盘还替代掉了很多传统的存储设备,比如,以前常常用来备份冷数据的磁带。
那这一讲里,我们就从机械硬盘的物理构造开始,从原理到应用剖析一下,看看我们可以怎么样用好机械硬盘。

拆解机械硬盘

上一讲里,我们提到过机械硬盘的 IOPS。我们说,机械硬盘的 IOPS,大概只能做到每秒 100 次左右。那么,这个 100 次究竟是怎么来的呢?
我们把机械硬盘拆开来看一看,看看它的物理构造是怎么样的,你就自然知道为什么它的 IOPS 是 100 左右了。
我们之前看过整个硬盘的构造,里面有接口,有对应的控制电路版,以及实际的 I/O 设备(也就是我们的机械硬盘)。这里,我们就拆开机械硬盘部分来看一看。
一块机械硬盘是由盘面、磁头和悬臂三个部件组成的。下面我们一一来看每一个部件。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入浅出计算机组成原理》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(20)

  • penbox
    这个解决方案真的太妙了,简单有效又容易操作。有点编程珠玑里面的位图排序算法的感觉。
    机械硬盘分区是由外到内的,C盘在最外侧依次类推,所以机械硬盘里面C盘的性能是所有分区里最好的。
    要想只用最外侧1/4的磁道,只需要简单地把C盘分成整个硬盘1/4的容量,剩下的容量弃而不用就可以达到文章里面的效果了!

    作者回复: 哈哈,的确是,第一次听到这种方式的时候我也觉得自己解决问题的思路不够奔放。

    2019-08-12
    1
    16
  • 许童童
    老师,Partial Stroking技术不就是用空间换时间吗,原来计算机优化的本质都是一样的。
    5400 转的硬盘,只使用一半的硬盘空间,我们的 IOPS 能够提升多少呢?
    每分钟5400转,每秒可以转180个半圈,平均延时就是5.5ms
    只使用一半硬盘空间,平均寻道时间就是9ms/2=4.5ms
    总体IOPS就是1s / (5.5ms + 4.5ms) = 100 IOPS

    作者回复: 许童童同学,

    你好。Partial Stroking的确也是一种以空间换时间的技术。计算结果也是对的。👍

    2019-08-09
    11
  • 有铭
    这个只用最外面磁道的方法还真是奇思妙想,不过老师,实际上能用什么软件通过格式化的方式屏蔽内侧磁道,只保留外部磁道呢?
    2019-08-09
    1
    4
  • 雲至
    也许可以用另外一方法 就是多加几个磁头 每个负责一部分就快了 就好像几个人一块找东西

    作者回复: 雲至同学,

    你好,因为磁头是一个机械结构,要多几个磁头其实工程技术上的挑战更大。

    2019-08-09
    1
    1
  • 阿锋
    扇区的大小是固定的,但是越在外面的扇区面积越大,感觉可以比里面的扇区多存储数据。那么扇区的面积跟能存储多小数据有无关系?
    2019-08-09
    1
  • 美美
    文中柱面的说法有误,文中“上下平行的盘面上相同的扇区”是柱面,应该是多个盘面上相同磁道组成的圆柱是柱面。
    2019-11-27
  • 不一样的烟火
    老老师讲讲raid0原理
    2019-10-20
  • 不一样的烟火
    感觉时间空间互换的思想就是计算机性能优化的本质🤣
    2019-10-20
  • David Xing
    5400/60=90圈=180半圈
    1s/180=5.55ms 平均延时
    4-10ms 平均寻道时间
    全部空间:
    1s/9.55 = 104 iops,1s/15.55 =64 iops
    一半空间:
    1s/7.55 = 132 iops,1s/10.55 = 94 iops
    2019-10-14
  • Only now
    本科的操作系统课程上还有一个电梯算法, 操作系统对于无重叠的磁盘IO操作进行排序, 然后在单向的寻道行程里完成这些数据的访存。 就像电梯一样, 从1层到100层, 按一个顺序送所有乘客, 而不是先来先送让电梯往复运动。 个人感觉在高并发的数据中心上, 这个方案要比谷歌的做法更高效。

    作者回复: Only now同学,

    你好,这个思路的确也是一个可行的优化。但是在应用层没有局部性的随机读,还要有响应时间要求情况下,其实一样还会面临IOPS不够的问题。

    2019-09-18
  • 活的潇洒
    缩短行程技术 在当时确实性能提升很大
    day 45 笔记:https://www.cnblogs.com/luoahong/p/11365672.html
    2019-08-21
  • bro.
    5400转/1min = 90转/s ,所以平均延迟为 1000 / 180半转 = 5.56ms , 使用 1/4的硬盘 为 9/4 = 2.25ms,则总体IOPS为 1000 ms /( 5.56 + 2.25) = 128 IOPS

    作者回复: 👍

    2019-08-15
  • 大明
    老师,是不是漏了一节了呢,dma,kafka为什么快。

    作者回复: 大明同学,

    你好,那个在第48讲,专栏的一些文章我在写的时候调整了一下先后顺序来保障逻辑线清晰。

    2019-08-15
  • 活的潇洒
    老师,Partial Stroking技术不就是用空间换时间吗,按照老师的推算公式。
    5400 转的硬盘,只使用一半的硬盘空间,我们的 IOPS 能够提升多少呢?
    每分钟5400转,每秒可以转180个半圈,平均延时就是5.56ms

    优化前 1000/(5.56+9)= 68.68

    优化后 1000/(5.56+9/2)= 99.4

    提升了 (99.4-68.68)/68.68*100=44.7%

    作者回复: 活得潇洒同学,

    你好,

    的确就是空间换时间,你的计算没错,👍。

    2019-08-12
  • 阿卡牛
    HDD 硬盘通常有个磁盘清理的操作,有什么用?

    作者回复: HDD硬盘常见又两种功能

    1. 磁盘清理,这个主要是清除很多应用程序的临时文件和缓存。
    2. 磁盘碎片整理,这个主要是尽量让数据在磁盘的物理位置上连续存放。这样新的输入写入以及旧的数据读取都会是以顺序读和顺序写的概率变大,能提升实际的性能表现。

    2019-08-12
  • miyan
    5400rpm=90r/s,也就是每s180个半圈

    平均延时 1s / 180 = 5.56ms

    IOPS:

    优化前 1000/(5.56+9)= 68.68

    优化后 1000/(5.56+9/2)= 99.4

    作者回复: 👍

    2019-08-09
  • humor
    为什么要分那么多磁道呢?如果只有一个磁道不就不用寻道了吗,只有一个磁道的话,一个扇区会更大可以存储更多的数据
    2019-08-09
    2
  • 赵阿海
    5400 转的硬盘,一秒钟可以转180个半圈(5400rpm/60*2),平均时延约5.56ms(1000ms/180),如果寻道时间为9ms,那么原本 IOPS 为68.7(1000ms/(5.56+9)ms);如果只用1/2的磁道,那么IOPS约为99.4(1000ms/(5.56+9/2)ms),提升大约1.4倍。

    作者回复: 👍

    2019-08-09
  • Destroy、
    64-100iops

    作者回复: 👍

    2019-08-09
  • haer
    如果是用更慢的 5400 转的硬盘
    平均延时:
    1s / 180 = 5.56 ms
    优化前:
    1s / (5.56ms + 9ms) = 68.7 IOPS
    优化后:
    1s / (5.56ms + 9ms/2) = 99.4 IOPS

    作者回复: 👍

    2019-08-09
收起评论
20
返回
顶部