一、背景前言
今年2023年,已经是机械硬盘诞生的第67个年头了。作为存储数据的硬件设备,它的发展可谓历经了很多人的努力,在这个过程中也发现很多有意思的事情。通常在生活中,不太懂计算机的朋友们常把内存与硬盘的概念混淆,其实它们作用差别很大的。简单的讲,可以这样来理解内存就好比运货车,车越多越大当然能力就大;同理硬盘就好比仓库,仓库越大存放东西的面积就越大。本文主要介绍硬盘,对于内存发展后续在补充,那么它的前世今生到底是什么,从开始之初的打孔记录数据到现在的固态硬盘,是怎样发展到现在的呢?让我们开始回顾吧!
二、发展历史
2.1 硬盘前身
形式上,穿孔卡片就是一张纸卡片。纸卡片被分为N行M列的格子。IBM的12行80列的穿孔卡片曾是主流。每个格子都可以选择打孔或不打孔。可以把它想象成一个大小12*80的二维布尔数组。 许多早期的数字计算机使用穿孔卡片作为计算机程序和数据输入的主要媒介(单个程序可能得用很多张卡片,因为单张卡片通常只表示1行代码)。
图2-1 穿孔纸带
穿孔卡片的每列用来表示1个字符,这样80列就能表示80个字符。例如字母A就用一个在第12空间问行的空和一个数字1所在行的孔表示。这是一种顺序编码,在第一台打孔机被发明后,也叫Hollerith编码。这种编码只能表示相
对较小的一套字符集,小写字母就没有包含在这套字符集中。聪明的工程师可能想知道为什么打卡不干脆使用二进制编码--毕竟,有12行,你可可以编码超过4000个字符。使用Hollerith编码是因为它确保在单个列中出现不超过三个孔。这件保留了卡的结构强度。二进制编码会带来太多的孔,会因为孔洞过于密集而断裂。后来也有圆形空的。
2.2 磁存储器
1954年IBM推出了第一款存储设备——磁鼓存储器,磁鼓存储器是利用铝鼓表面覆盖的磁性材料来存储数据的。磁鼓存储器最大的缺点就是储存容量太小,一个大圆柱体上,只有表面的一层用于存储,利用率特别低。加上占用空间特别大,断电之后还会丢失数据,就被淘汰了。随即,IBM又有了新的解决方案——磁带,用磁带模拟打孔指代,也就是用磁化的方向来模拟0和1。速度要比磁鼓储存器快很多,但读取数据时需要倒带,导致磁带没有取代磁鼓存储器。
图2-2 磁鼓存储器&磁带
2.3 光盘存储
除上面提到的两种存储方式,利用激光与介质的相关作用,导致介质性质的变化,也可以实现信息存储功能。这种存储方式称之为光存储。常见的产品有:光盘(compact disc,CD)光盘技术提出较早,光盘使用却相对较晚,直到1972年才出现视频光盘。在上世纪80年代,一张典型的光盘可以保存700M的数据,以相对低廉的价格占据了重要市场。然而,受限于光学衍射极限定理,光盘的单数据点结构从CD时代的约800nm,缩小到DVD的400nm,再到蓝光DVD的150nm,单个尺寸结构便很难再进一步缩小。此时,相对于其他的当代存储器HDD、SSD、MRAM等,无论是在存储密度和速度上,都存在较大的差距。
图2-3 光盘
2.4 机械硬盘
想要理清硬盘的前世今生,还得从1956年IBM推出的首台商用硬盘驱动器计算机RAMAC说起,RAMAC这台计算机里的硬盘叫IBM 350,重达1吨,容量为5MB,由50个24英寸的盘片组成,每个盘片只有100个扇区,转速为每分钟1200转。单硬盘驱动器就有两个冰箱那么大,RAMAC大得要整间房子来存放。缺陷也很多,太重,需要用叉车搬运;工作寿命只有2000小时;太贵,租赁就高达3200美元一个月。按照当年3200美元一个月的租金来算,租一台64GB的iPhone,在当年需要4200万美元一个月。
图2-4 RAMAC(世界上第一块机械硬盘)
1961年:全面转向晶体管。1961年,IBM内部打孔卡片部门业务受到机械硬盘冲击,打孔卡片部门的领导为了留住自己,机械硬盘采用只租不卖的模式,用户觉得租金太贵,很多人都放弃使用机械硬盘。当时的IBM董事长站出来,业务全面转向晶体管,该淘汰的就应该淘汰。当年也推出了一个重磅产品——IBM 1301硬盘,该i硬盘所有的盘片都附带独立的磁头和机械臂,只是容量只有28M。
图2-5 IBM 1301
1963年:可更换盘片的硬盘诞生。1963年,IBM推出了1311硬盘,体积进一步缩小,尺寸只有洗衣机大小。最重要的是采用了可更换盘片的设计,从此就诞生了很多第三方玩家,自行制作盘片。
图2-6 IBM 1311
紧接着,1969年,IBM发明了软盘,但软盘的容量实在是太小了,速度也特别慢。虽说软盘更容易携带了,但是读写软盘的机器很大。1970年:新磁盘寻道时间大幅降低。1970年,IBM干了件很牛的事情。新发布的IBM 2605 硬盘把硬盘内的每一个磁头都固定了,磁盘上每一条磁道都有一个磁头去一一对应,寻道时间降低了。but,后来因为价格太贵,停产了。1973年:奠定了如今机械硬盘的结构。1973年,温彻斯特硬盘诞生,奠定了当今机械硬盘的结构。第一块温盘尺寸为14寸,开始采用可换盘片的设计,后来为了提高速度和耐用度,出现了不可换盘的4寸硬盘。1976年:IBM推行5.25寸标准。当时市面上对硬盘还没标准,IBM极力推5.25寸硬盘标准。1979年,位于美国加州的希捷成立。1980年,希捷率先发布了世界上第一块5.25寸硬盘,售价1500美元,容量为5MB。希捷5.25寸硬盘推出后大受欢迎,许多厂商也加入了队伍,5.25寸硬盘成为PC主流。
图2-7 现代机械硬盘HDD
随后的日子里硬盘不断往小型化的方向发展,人们将小于等于1.8英寸的硬盘统称为“微硬盘”。其中1.8英寸的产品主要面向于超轻薄笔记本电脑用户,直到现在仍有小不小的出货量。例如苹果公司的Macbook Air 使用的就是这种硬盘。而更小规格的1.0英寸甚至0.8英寸硬盘则主要针对数码设备,如存储卡、手机内置存储器等等,不过随着闪存技术的发展,这些超迷你型的硬盘产品逐渐走向了末路,原因则是温彻斯特硬盘软肋—抗震性能先天不足。
2.5 固态硬盘
在我们今天看来,SSD是个新鲜事物,但是从事这个行业的前辈们却已经摸爬滚打了将近38年。如果我们自己买过 M.2 固态硬盘或者拆过固态硬盘外壳的话,就会发现里面有很多一个一个的颗粒,这些储存颗粒就是固态硬盘储存数据的地方。说起来有点神奇,而这些储存颗粒诞生的基础 —浮栅晶体管(MOSFET)和非易失性储存器(NVM,像是 EEPROM 这类的都是非易失性储存器)甚至比机械硬盘出现的更早,只不过机械硬盘的结构和原理注定了它开始阶段能发展得更快。
图2-8 NVMe 上的储存颗粒
最早使用非易失性储存器储存数据的装置可以追溯到 1950 年,还记得机械硬盘历史上最著名的厂商 IBM 吗,这次首先应用这项技术的还是它(真的牛啤,1950-1999 年 IBM 储存相关的专利,占了全球的 10% 以上)。那个时候甚至有两种技术同步发展:磁芯储存器和卡式只读储存器。
图2-9 磁芯储存器&卡式只读储存器
磁芯储存器原理简单粗暴,把磁性材料制作成的小圈通过电线串起来排成阵列,每个小圈都可以磁化或去磁,代表了 0 和 1,计算机就可以通过读取导线电压或者给导线输送电压,改变某个特定小圈的磁性来实现储存读取数据。更绝的是它的组装真就是手工,由女性工人使用显微镜手动穿线。之前 NASA 登月 50 年的时候,国内疯狂报道阿波罗卫星软件编程真的是「编织」出来的,指的就是磁芯储存器(阿波罗上面的约 32KB)。
图2-10 磁芯储存器放大的图片
至于,另外的卡式只读储存器(CCROS,好像没有正式中文名)原理就更简单了,可以想象成是一堆打孔铁片叠在一起。用专门的机器把编好的程序等等按照特殊的编码方式在铁片上打孔,然后交给计算机就能读取,这里就可以看出来数据是没有办法修改的,想要改数据只能重新找个新的铁片去打孔。这两个技术原理和制造实在是不太适合发展,所以在我们第一章提到的磁鼓储存器出来之后就迅速被淘汰了。
图2-11 卡式只读储存器的储存卡片
它俩的淘汰其实跟真空管时代结束是一起的,之前计算机是用真空管—把电路封装在玻璃管里形成二极管/三极管等等,然后用它们来实现计算机最基础的与(A 和 B)或(A 或 B)非(非 A 非 B)门,第一台电子计算机就是这样出现的。和真空管时代结束后就来到了我们现在很熟悉的半导体时代,半导体时代的计算设备干的还是真空管时代计算设备的那些判断,不过真空管变成了半导体制作的浮栅晶体管,由于半导体晶体管可以通过「生长」快速巨量制造出来,而且理论上可以做到非常小,比如现在我们所说的 5nm 纳米 CPU 工艺,就是可以把一个晶体管里的沟道长度做到 5 纳米大小,所以才会有我们现在的算力大爆炸。
固态硬盘的前身:Bulk Core,时间来到了 1976 年,一家名为 Dataram 的名字很直白的公司推出了 Bulk Core 这个很多人认为是第一个固态硬盘的设备,一个 41 厘米长床头柜那么大的箱子,号称比机械硬盘快 1 万倍,由 8 个 256KB 的单元组成 2MB 的容量,最重要的是这些单元使用了半导体来制作内存模块。
图2-12 第1个固态硬盘设备
固态储存设备的基石:浮栅晶体管/(只读)储存器 ROM。半导体和晶体管可以说是现在整个电子世界的基石,而浮栅晶体管其实是 1967 年由亚洲人发明的,分别是韩裔美国工程师 Dawon Kahng(姜大元)与华裔美国工程师 Simon Min Sze(施敏)。浮栅晶体管也是半导体晶体管的一种,它之所以和现在 CPU 使用的晶体管区别开来,并且适用于储存设备,是因为它被高电阻材料包围的结构特性,可以让其中包含的电荷在很长段时间内保持不变,注意这个很长段时间指的是以 10 年以上。姜大元和施敏不仅发明了浮栅晶体管,而且提出了实际的应用场景 — 利用浮栅组成的储存单元制作出只读储存器(EPROM)
图2-13 常见的 EPROM 封装形态
后来人们在这个基础上发明了 EEPROM,也就是接下来介绍的闪存 Flash 的前身。它多出来的这个代表电,指的是这个 ROM 可以被高电压擦除(电子隧穿效应,下面会详细介绍),然后重新写入数据,这个基本就是 1980 年代后的事情了。这两项储存器先天结构就优于当时的机械硬盘,单从速度方面也比当时的机械硬盘快几十倍,所以当时一些固态储存公司开始发展起来,比如我们现在常见的闪迪就是这个时候进入市场的。
1980年,在东芝工作的日本科学家Fujio Masuoka(舛冈富士雄)在 EEPROM 基础上发明了闪存。作为发明公司,东芝是第一个开始卖闪存固态的,1987 年推出了他们的第一款商用NAND闪存,1988年英特尔推出了第一款商用的 NOR 闪存,但东芝不受重视的态度让它基本没有市场,英特尔则靠着相关技术霸占市场,获得了几十亿美元的利润。从这里开始就是我们熟悉的固态储存世界了,闪存单元能做到在微观尺寸正常工作,意味着只要工艺一直提升,(物理极限下)同体积容量就能够做到越来越大。1991年闪迪为 IBM 研发了世界上第一个 2.5 寸闪存固态硬盘,20MB 容量只要 1000 美元;之后 10 年固态硬盘容量迅速突破 GB 级,1996 年ATTO SiliconDisk II 就达到了 1.6GB,2000 年 E-Disk ATE35 3.5 寸固态硬盘就有 19GB 可选,2003 年就有 TB 级别的系统,接下来就是我们熟知的大公司入场,各种合并收购,形成现在的局面了。虽然价格是一大阻碍,但相比脆弱的机械硬盘,可靠的固态硬盘在军用,商用和民用领域都发展非常迅速,价格也从之前的天价迅速降到现在1G不足 1 块钱。在 2009 年后固态硬盘甚至达到了当时SATA接口的极限,从而出现现在的PCIE和NVMe固态,容量方面也开始出现 SLC/MLC/TLC/ QLC等堆叠技术让容量不断提升(先不说缺点,至少容量上去了),现在的固态硬盘已经往 100TB上面走,相信很快我们就能用得起,到时候机械硬盘的用处就更少了。
图2-14 常见的 EPROM 封装形态
三、硬盘知识
3.1 基础概念
硬盘类型:固态硬盘(SSD 盘)、机械硬盘(HDD)、混合硬盘(HHD)三种。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的硬盘。
硬盘接口:机械硬盘的接口有:IDE接口、SATA接口、SCSI接口、SAS接口、光纤通道接口,而目前机械硬盘的主流接口是SATA接口。固态硬盘的接口有:SATA接口、mSATA接口、M.2接口(NVMe协议)、PCI-E接口,而目前固态硬盘的主流接口是SATA接口、M.2接口、M.2接口(NVMe协议)。
使用方式:单块或者raid卡,用raid控制器代替磁盘控制器,做磁盘整列
3.2 接口讲解
接口和协议也是储存设备另外一个比较重要的组成部分,不同的接口和协议能对储存设备的读写速度 IO 请求等产生较大的影响。接口和协议的兼容性也决定了储存设备能不能够在特定的设备上使用。
在讲之前,我还是先给大家捋捋物理接口,协议,还有最终读写速度的关系。大家都知道计算机或者手机的设备里面会有很多个不同的部件,比如处理器、显卡、运行内存、储存硬盘、网卡等等,各部件和处理器,或者各部件互相都要不断传递数据。而它们传输数据的物理通道就叫总线,用来走实际上的电信号。我们常听见的 SATA,PCIe 这种就是不同类型的总线通道,它们通常和北桥南桥直通。
北桥可以理解为处理高速信号的芯片,可以说是直连 CPU,PCIe 一般就是连它;南桥可以理解为处理低速信号的芯片,比如 SATA 和 USB 都是连它,不过现在 Intel 和 AMD 都把它们整合进 CPU 里面了。
图3-1 接口对应协议
3.2.1 IDE接口
英文名称:Integrated Drive Electronics,常见2.5英寸IDE硬盘接口它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。IDE代表着硬盘的类型,但实际应用中人们也习惯用IDE来称呼最早出现IDE类型硬盘ATA-1,这种类型的接口随着技术的发展已经被淘汰了,而后发展分支出更多类型的硬盘接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘。其特点为:价格低廉,兼容性强,性价比高,数据传输慢,不支持热插拔等等。
图3-2 IDE接口
3.2.2 SCSI接口
英文名称为:Small Computer System Interface。它出现的原因主要是,原来IDE接口硬盘转速太慢,传输速率太低,因此高速的SCSI硬盘出现。其实SCSI并不是专为硬盘设计的,实际上它是一种总线型接口。由于独立于系统总线工作,所以它的最大优势在于其系统占用率极低,不过转速快,传输率高的SCSI接口硬盘也有它的不足之处:价格高、安装不便、还需要设置及其安装驱动程序,因此这种接口的硬盘大多用于服务器等高端应用场合。它是使用一根50芯的扁平电缆,转速在万转以上,不过随着IDE技术的发展,如今IDE接口的硬盘在容量和速度上已与SCSI接口硬盘相差无几,不久将来,它可能不会存在了。所有SCSI接口都使用下面3种连接器中的1种。
图3-3 SCSI接口
3.2.3 SATA接口
SATA接口(串口硬盘,Serial Advanced Technology Attachment),以连续串行的方式传送数据,可以在较少的位宽下使用较高的工作频率来提高数据传输的带宽。这个硬盘接口大概是在2003年出现的,可以算是最为主流的硬盘接口形态。由于存在时间很长,SATA接口兼容性极强,几乎所有种类的主板都有SATA接口。市面上固态硬盘SATA接口在性能标准上,一般采用SATA Ⅲ标准,理论最高速度为6Gbps。大部分基于SATA接口的固态硬盘的读取性能正常会在500MB/S以上。
图3-4 SATA接口
3.2.4 mSATA接口
mSATA接口是早期为了适应于超极本这类超薄设备而基于SATA开发的。可看作SATA接口mini版。物理形态上有两种尺寸:全高30x50 mm和半高30x25 mm。mSATA接口,SSD小型化的重要过程。不过mSATA并没有摆脱SATA接口的一些缺陷,比如依然是SATA通道,速度也还是6Gbps。
图3-5 mSATA接口
3.2.5 SATA-e接口
与mSATA同样由SATA发展而来的是SATA-e接口,SATA+PCI-Express的混合体,理论带宽达10Gbps,比SATA3.0高了4Gbps,它能兼容SATA标准的老硬盘,也能使用SATA-Express接口的高速SSD。由于SATA接口在传输速率上的局限性,mSATA和SATA-e在推出后不久也就销声匿迹。
图3-6 SATA-e接口
3.2.6 SAS接口
SATA接口常见于PC,与之对应的服务器端接口是2005年由SCSI进化而来的SAS接口。它是新1代的SCSI 技术,全称为串行连接SCSI(Serial Attached SCSI) 。SAS结合了SATA和SCSI的优点。SAS 的接口可以向下兼容SATA。具体来说,二者的兼容性主要体现在物理层和协议层的兼容。在物理层,SAS接口和SATA接口完全兼容,SATA硬盘可以直接使用在 SAS 的 环境中,从接口标准上而言,SATA是SAS 的一个子标准,因此 SAS 控制器可以直接操控 SATA 硬盘,但是 SAS 却不能直接使用在 SATA 的环境中,因为 SATA 控制器并不能 对 SAS 硬盘进行控制;在协议层,SAS 由 3 种类型协议组成,根据连接的不同设备使用相应的协议进行数据传输。其中串行 SCSI 协议(SSP)用于传输 SCSI 命令;SCSI 管理协议(SMP)用于对连接设备的维护和管理;SATA 通道协议(STP)用于 SAS 和 SATA 之间数据的传输。因此在 这 3 种协议的配合下,SAS 可以和 SATA 以及部分 SCSI 设备无缝结合。
图3-7 SAS接口
3.2.7 M.2接口
在SATA和SAS接口之后,目前正火的是2013年诞生的M.2。它又叫NGFF(Next Generation Form Factor)接口。M.2常见规格:2242、2260、2280,其中22表示硬盘的宽度为22mm,42、60、80分别表示不同长度。PCB板越长可容纳的内存颗粒越多,容量也就越大。目前比较主流的是2280。
图3-8 M.2接口
M.2接口按照插槽来划分可以分为BKey和MKey。从图中金手指上的缺口可以看到这他们在物理形态上的的区别。其中B key支持SATA通道PCI-E X 2通道,Mkey支持PCI-E x 4通道,在PCI-E*4通道上可以支持NVME协议,理论带宽32Gbps。当前台式机上的NGFF插槽主要是M模式的,笔记本上B模式比较常见。Key怎么定的呢?同M.2接口,为什么会有PCI-E和SATA之分?
图3-9 M.2接口分类B&M
购买M.2接口的SSD的时候,除了区分不同插槽外,还要注意分辨他的上层协议。据上层协议的不同,M.2接口内部又可以简单划分为走传统的SATA AHCI协议的接口和走PCIe 通道NVMe协议接口。假如你买了1个M.2接口的SSD,它走的是SATA通道,那么他的上层协议依然是传统的ACHI,最大读写性能和走SATA3.0接口的SSD没有任!何!区!别!理解什么是NVMe的最简单的方法就是打个比方——假设你刚买了一辆跑车,速度能达到400公里每小时,但是一般城市道路限速几十公里每小时。如果你想要让跑车更快,就需要换一条路开。
图3-10 M.2等效接口
3.2.8 PCIe接口
英文全称:peripheral component interconnect express,图中是金士顿HyperX Predator的固态硬盘,PCIe接口下数据直接通过总线与CPU直连,省去了内存调用硬盘的过程,传输效率与速度都成倍提升。可以这么理解PCIe通道的汽车就像是在高速上行驶,而SATA通道的汽车就像是在崎岖山路上行驶。很显然,PCIe SSD的传输速度会远大于SATA SSD。
图3-11 PCIe接口
四、RAM&ROM区别
4.1 RAM
RAM是随机存取存储器(random access memory),是计算机内部存储器中的一种,也是其中最重要的,计算机和手机中一般把其叫做(运行)内存,它的速度要比硬盘快得多,所以用运行程序在RAM中,而存放运行时不用的数据则在硬盘中,什么时候需要数据,便把数据从硬盘中拿到内存,但同时RAM断电会丢失数据,所以我们电脑如果断电了就会丢失原来正在运行的数据。所以,手机中的RAM和电脑中的RAM的概念是相同的,RAM即内存越大,能同时在内存中执行的程序就越多,性能一般是越好的。
4.2 ROM
ROM是只读存储器(Read-Only Memory),也是计算机内部存储器中的一种,而硬盘是外部存储器,如果把这两个混为一种东西绝对是错误的,早期乃至现在,我们的主要存储介质都是磁性存储,也就是磁盘,分为硬盘和软盘,硬盘不太适合做移动存储,因为其磁头容易损坏,不耐摔,而且体积较大,就算是缩小容量仍然很难缩小其体积,软盘虽然用作移动介质还算方便,但软盘容量过于小,不够用,而光盘虽然容量大但不易擦写,同时体积也不够小,这时就很适合使用半导体存储介质—ROM和RAM,ROM用来嵌入电脑主板或者做移动存储介质就很合适了,其体积够小,提供的容量可以比光盘和软盘的大,速度也更快,但成本相对更高,而且早期的ROM因为技术不成熟所以无法擦写,出厂后就只能读数据,所以叫只读存储器,后来随着技术的发展,在ROM的基础上出现了新的半导体存储介质EPROM和EEPROM,这两种可擦写,这就不符合ROM的命名,但是由于是在ROM的技术上衍变出来的,所以延用了部分原来的叫法,此时非易失的半导体存储介质开始得以广泛应用,被大量用于电脑主板的bios和嵌入式存储,而后来在这两种技术的发展上又发展出了NAND FLASH闪存,这就是我们现在用的U盘中用到的技术,同样,因为其体积小,容量和速度均不错,现在手机存储中的emmc颗粒也是用的这种技术,所以有手机厂商就把手机的存储容量约定俗成为ROM,其继承ROM断电不丢失数据的特性,而且有着较快的速度。
4.3 区别
那么电脑硬盘和ROM有什么关系呢?由于ROM和硬盘都可以存储数据而且断电不会丢失,而有都广泛运用于电子产品中,所以有人就对两者产生了混淆。硬盘分为两种,一种是机械硬盘(HDD),一种是固态硬盘(SSD),磁盘和ROM没什么关系,但固态硬盘就不一样了,它用到的颗粒也是基于NAND FLASH技术,和u盘以及手机存储有点相似,所以说硬盘和ROM还是有关系的,固态硬盘的存储颗粒是ROM技术发展的产物,但不能说ROM就是硬盘。
图4-1 存储器分类
RAM是主存,Cache是缓存,位于主存与CPU间。ROM通常用于存放计算机的基本程序和数据,如BIOS芯片。现在比较流行的只读存储器是闪存,它属于EEPROM的升级,可以通过电学原理反复擦写。现在大部分BIOS程序就存储在FlashROM芯片中。另外,ROM、RAM、Cache有可称为内部存储器;光盘、磁盘称为外部存储器。
参考资料