ssd与hdd的区别(为什么只有SSD最终取代了HDD)(1)

NVMe SSD为以超高速计算铺平了道路,但这项技术并不是一夜之间突然出现的。我们现在依靠高性能SSD作为主要存储层,这是一个不断发展的过程。

固态硬盘(SSD)近年来席卷了计算机行业。这项技术的高性能令人印象深刻,与传统硬盘驱动器(HDD)相比,SSD在访问关键数据时可以保证低延迟,同时又提高了总体性能。SSD市场份额逐年攀升,在许多领域取代了HDD。其影响体现在个人、移动和服务器计算上。

IBM在1956年首次将HDD引入计算领域。到20世纪60年代,HDD成为通用计算机的主要辅助存储设备。容量和性能是定义HDD的主要特征。在许多方面,这些特征继续定义技术(稍后将详细介绍)。

IBM制造的第一台硬盘是350 RAMAC,有两个中型冰箱那么大,在50个磁盘的堆栈上,总容量为375MB。现代的硬盘驱动技术已经生产出容量高达16TB的磁盘驱动器,特别是最近的SMR技术加上氦(氦是元素周期表中缩写为He的同一种化学元素)。密封的氦气增加了驱动器的潜在速度,同时产生更少的阻力和湍流。由于它的密度比空气要小,因此可以将更多的盘片堆积在2.5英寸和3.5英寸的传统磁盘驱动器所使用的空间中。

ssd与hdd的区别(为什么只有SSD最终取代了HDD)(2)

图1 一组贯穿其历史和所有形式因素的标准HDD

磁盘驱动器的性能通常是通过将驱动器磁头移动到特定轨道或柱体所需的时间和请求扇区移动到磁头下所需的时间来计算的,也就是延迟时间。性能也以数据传输的速率来衡量。

作为一种机械设备,HDD的执行速度不如内存快。大量移动组件增加了延迟时间,降低了访问数据(读写操作)的总体速度。

ssd与hdd的区别(为什么只有SSD最终取代了HDD)(3)

图2 磁盘布局

每个HDD内部都有磁盘片,通常被称为磁盘。这些盘碟是用来储存信息的, 连在同一个主轴统一旋转,一个HDD将有多个盘片彼此之间保持最小距离。

与留声机唱片的工作原理类似,这些盘是双面的,每个表面都有称为磁道的圆形蚀刻图案。每个磁道由扇区组成。每个磁道上的扇区数随着你接近盘片的边缘而增加。现在,您会发现扇区的物理大小是512B或4KB。在编程世界中,扇区通常等同于磁盘块。

磁盘旋转的速度影响着读取信息的速度。它被定义为磁盘的转速,是以每分钟转数(RPM)来测量的。现代驱动器的运行速度像7200转/分(或120转/秒),而旧的驱动器旋转速度较慢;高端驱动器可能会以更高的速度旋转。转速限制造成了性能瓶颈。

驱动器臂位于盘的顶部或下方,它在表面上伸缩。在手臂的末端是一个读写头,与盘表面有一个极小的距离。当磁盘旋转时,磁头(不移动)可以访问当前轨道上的信息。但是,如果磁头需要移动到下一个轨道或完全不同的轨道,读取或写入数据的时间就会增加。从程序员的角度来看,这被称为磁盘查找,这为该技术创造了第二个瓶颈。

现在,尽管HDD的性能随着新的磁盘访问协议(如SATA和SAS)和技术的发展而不断提高,但它仍然是CPU的瓶颈,进而成为整个计算机系统的瓶颈。每个磁盘协议对最大吞吐量(每秒兆字节或千兆字节)都有自己的硬限制。传输数据的方法也是非常序列化的。这在旋转磁盘上工作得很好,但不能很好地扩展到Flash技术。

自从提出这个概念以来,工程师们一直在设计更新更有创意的方法来帮助提高HDD的性能(如使用内存缓存),在某些情况下,他们已经用SSD等技术完全取代了HDD。今天SSD被部署在任何地方,但是我们是怎么走到这一步的呢?SSD并非一夜成名。它的历史是一个渐进的,可以追溯到最早计算机被开发的时候。

计算机存储器简史

内存有多种形式,但在非易失性内存(NVM)出现之前,计算领域首先引入了以随机访问内存(RAM)形式出现的易失性内存。RAM可以在相同时间内从存储介质的任何位置写入/读取数据。一组特定数据通常位于随机的物理位置,这并不影响操作完成速度。通过缓存经常读取的数据或准备需要写入的数据,这种类型内存的使用掩盖了从慢速HDD上访问数据的痛苦。

最值得注意的RAM技术是动态随机访问内存(DRAM)。1966年,也就是在HDD面世十年之后,IBM实验室推出了该产品。DRAM更接近CPU,也不必处理机械部件(即HDD),因此可以以惊人的速度运行。即使在今天,许多数据存储技术仍努力以DRAM的速度运行。但是,正如前面所强调的那样,它也有一个缺点:这项技术不稳定,一旦电容驱动的集成电路断电,数据就会随之消失。

DRAM技术的另一个缺点是它的容量非常低和每千兆字节的价格。即使按照今天的标准,DRAM与速度较慢的HDD和SSD相比也太贵了。

在DRAM首次亮相后不久,可擦可编程只读存储器(EPROM)问世了。它由英特尔公司发明,大约在1971年问世。与易失性的同类产品不同,EPROM提供了一种极受欢迎的行业游戏规则改变:一旦系统电源关闭,它的数据就会被保留。EPROM在集成电路中使用了晶体管而不是电容器。那些晶体管即使在断电后也能保持状态。

顾名思义,EPROM属于它自己的只读内存(ROM)类。数据通常是用特殊的设备或工具预先编程到这些芯片中,在生产中,它只有一个目的:高速读取。由于这种设计,EPROM立即在嵌入式和BIOS应用程序中流行起来,后者存储特定于供应商的详细信息和配置。

靠近CPU

随着时间的推移,有一点变得非常明显:数据(存储)离CPU越近,访问(和操作)它的速度就越快。最接近CPU的内存是处理器的寄存器,处理器可用寄存器的数量因架构不同而不同,寄存器的目的是保存用于快速存储的少量数据。毫无疑问,这些寄存器是访问小容量数据的最快方式。

接下来,在CPU的寄存器之后,是CPU缓存。这是内置在处理器模块中的硬件缓存,CPU利用它来降低从主存(DRAM)访问数据的成本和时间。它是围绕静态随机存取存储器(SRAM)技术设计的,这也是一种易失性存储器。与典型的缓存一样,这个CPU缓存的目的是存储来自最常用的主内存位置的数据副本。在现代CPU架构中,存在多个不同的独立缓存(其中一些缓存甚至是分割的)。它们按缓存级别的层次结构组织:级别1 (L1)、级别2 (L2)、级别3 (L3),依此类推。处理器越大,缓存级别越多,级别越高,可以存储的内存就越多(从KB到MB)。不利的一面是,级别越高,它的位置离主CPU越远。尽管对现代应用程序来说,这是不明显的,但它确实带来了延迟。

ssd与hdd的区别(为什么只有SSD最终取代了HDD)(4)

图3 CPU与其内存/缓存

第一次有记录地使用内建在处理器中的数据缓存可以追溯到1969年IBM System/360 Model 85大型机计算系统。直到20世纪80年代,主流的微处理器才开始整合自己的CPU缓存。拖延的部分原因是成本。就像现在一样,所有类型的RAM都非常昂贵。

所以,数据访问模型是这样的:离CPU越远,延迟就越高。DRAM比HDD更接近CPU,但不像设计到IC的寄存器或缓存级别那么接近。

ssd与hdd的区别(为什么只有SSD最终取代了HDD)(5)

图4 数据访问的高级模型

固态驱动器SSD

给定存储技术的性能经常被测量,并与CPU内存的速度进行比较。所以,当第一批商用SSD上市时,没过多久公司和个人都采用了这项技术。与HDD相比,即使它的价格更高,人们也能证明它的价格是合理的。时间就是金钱,如果使用驱动器可以节省时间,就有可能增加利润。然而,遗憾的是,第一批基于NAND SSD的引入,驱动器并没有将数据存储移到离CPU更近的地方。这是因为早期的供应商选择采用现有的磁盘接口协议,如SATA和SAS。这个决定确实鼓励了消费者的采用,但它再次限制了整体的吞吐量。

ssd与hdd的区别(为什么只有SSD最终取代了HDD)(6)

图5 SATA SSD 2.5"形态

尽管SSD没有进一步靠近CPU,但它确实实现了这项技术中的一个新的里程碑——减少了跨存储介质的查找时间,从而显著减少了延迟。这是因为驱动器是围绕集成电路设计的,它们没有可移动的组件。与传统的HDD相比,总体性能差得很。

1995年,M-Systems公司推出了第一款不需要电源(即电池)来维持状态的官方SSD。它们被设计用于在关键任务的军事和航空航天应用中取代HDD。到1999年,基于flash的技术设计并提供传统的3.5”存储驱动形式,以这种方式继续发展,直到2007年初创公司Fusion-io(现在是西部数据的一部分)决定改变传统存储驱动器的性能限制形式,直接接到PCI Express作为PCIe总线。该方法消除了许多不必要的通信协议和子系统,也更靠近CPU,产生了显著的性能改进。这种新的设计不仅改变了未来几年的技术,而且还将SSD引入了传统的数据中心。

Fusion-io的产品后来激发了其他内存和存储公司对双内联存储模块(DIMM)采用类似技术的想法。双内联存储模块可以直接插到主板的传统RAM插槽上。这些模块作为不同类型的内存注册到CPU,并保持某种程度上受保护的模式。换句话说:主系统和操作系统不接触这些内存设备,除非它是通过一个专门设计的设备驱动程序或应用程序接口完成的。

这里还值得注意的是,基于晶体管的NAND闪存技术与DRAM性能相比仍然相形见绌。我说的是微秒延迟和DRAM的纳秒延迟。即使是DIMM形式,基于nand的模块性能也不如DRAM模块。

引入NAND内存

是什么让SSD比传统的硬盘更快?简单的答案是,它是用芯片建造的内存,没有移动组件。这项技术的名字——固体状态就抓住了这个特点。但如果你想要一个更具描述性的答案,请继续阅读。

SSD不是将数据保存到旋转的磁盘上,而是将相同的数据保存到NAND闪存池中。NAND闪存技术是由浮栅极晶体管组成,与晶体管设计用于DRAM(每秒必须多次刷新)不同,NAND能够保持其充电状态,即使在断电情况下——即非易失性技术。

在一个NAND结构中,电子被存储在浮栅中。与你读取布尔逻辑相反,电荷被表示为“0”,非电荷被表示为“1”。这些比特被存储在一个单元中。它组织在网格布局中,称为块。网格的每一行称为一个页面,页面大小通常设置为4K(或更多)。传统上,每个块有128-256个页面,块大小可以达到1MB或更大。

ssd与hdd的区别(为什么只有SSD最终取代了HDD)(7)

图6 NAND Die布局

不同类型的NAND是由每个单元的比特数定义的。顾名思义,单级单元(SLC)存储一个比特,一个多级单元存储两个比特,三层单元存储三位元。最新QLC存储四个比特。

现在,尽管TLC提供了比SLC NAND更大的存储密度,但它也有一定的代价:延迟增加——也就是说,读的延迟约为4倍,写的延迟约为6倍。原因在于数据是如何进出NAND单元格的。在SLC NAND中,设备的控制器只需要知道位是0还是1;对于MLC,单元格包含更多的值,准确地说有4个:00、01、10或11;在TLC NAND中,它包含8个值:000,001,010,011,100,101,110,111,这意味着大量的开销和额外处理。无论如何,不管您的驱动器是使用SLC还是TLC NAND,它的执行速度仍然比HDD快得多。

关于NAND还有很多值得分享的地方,比如读、写和擦除(可编程擦除或PE循环)是如何工作的,最后一个问题确实会影响写性能和该技术的一些早期缺陷,这里不再赘述。只要记住:芯片的电荷比磁头在磁盘上的移动要快得多。是时候介绍NVMe了。

无聊的细节

事实上,在SSD的整个生命周期中,编写性能可能会发生变化。当一个SSD是新的,它的所有数据块被擦除并呈现为新的,输入数据直接写入NAND。一旦SSD填满了设备上所有的空闲数据块,它就必须擦除先前编程的块以写入新数据。在业界,这一时刻被称为设备的书写悬崖。要释放旧块,必须擦除选定的块,这个动作称为可编程擦除(PE)周期,它增加了设备的写入延迟。如果时间足够长,您就会注意到,使用过的SSD的性能最终比不上全新的SSD。一个NAND单元被编程来处理有限数量的擦除。

为了克服所有这些限制和瓶颈,供应商采用了各种技巧,包括以下方法:

Ø NAND的过度配置:虽然一个设备可能注册3TB的存储空间,但它实际上可能配备了6TB的存储空间;

Ø 合并写入数据以减少写入放大的影响;

Ø 磨损均衡:减少写入和重写NAND相同区域的需要。

NVME

Fusion-io构建了一个封闭的专有产品。这一事实将许多行业领袖聚集在一起,以定义一个新的标准来与这个先锋竞争,并将更多PCIe连接的Flash引入数据中心。随着2011年第一个行业规范的发布,NVMe迅速成为SSD技术的前沿。请记住,历史上,SSD是建立在SATA和SAS公共汽车之上的。这些接口在成熟的闪存技术中运行良好,但是由于协议开销和总线速度的限制,这些驱动器很快就遇到了性能瓶颈。今天,现代SAS驱动器运行在12Gbit/s,而现代SATA驱动器运行在6Gbit/s。这就是为什么这项技术将重点转向PCIe,由于总线离CPU更近,而且PCIe能够以越来越快的速度运行,SSD看起来很适合。使用PCIe 3.0,现代驱动器可以达到高达40Gbit/s的速度。

ssd与hdd的区别(为什么只有SSD最终取代了HDD)(8)

图7 PCIe NVMESSD

真正使NVMe优于操作系统遗留存储栈的是其更简单、更快的排队机制。这些队列称为提交队列(SQs)和完成队列(CQs)。每个队列都是一个固定大小的循环缓冲区,操作系统使用它向NVMe控制器提交一个或多个命令。这些队列中的一个或多个还可以固定到特定的核心上,从而允许更不间断的操作。再见了串行通信。驱动器I/O现在是并行的。

NVMeoF

在SAS或SATA的世界中,存在存储区域网络(SAN)。SAN是围绕SCSI标准设计的。SAN(或任何其他存储网络)的主要目标是提供通过一条或多条路径访问网络中单个或多个操作系统主机的一个或多个存储体。目前,最常用的部署SAN基于iSCSI,即TCP/IP上的SCSI。从技术上讲,NVMe SSD可以在SAN环境中配置,尽管协议开销引入了延迟,使其不是理想的实现。2014年,NVMe Express委员会准备用NVMeoF标准来纠正这个问题。

NVMeoF背后的目标很简单:启用围绕NVMe排队体系结构构建的NVMe传输桥,并避免除了所支持的NVMe命令(端到端)之外的任何和所有协议转换开销。通过这样的设计,网络延迟显著降低(小于200ns)。这种设计依赖于使用PCIe交换机。另一种设计正在流行,它基于使用远程直接内存访问(RDMA)的现有以太网结构。

ssd与hdd的区别(为什么只有SSD最终取代了HDD)(9)

图8 NVMe结构与其他存储网络的比较

4.8 Linux内核引入了大量支持NVMeoF的新代码。这些补丁是由英特尔、三星和其他公司努力工作的开发者共同提交的。三个主要组件被补丁到内核中,包括通用的NVMe目标支持框架。这个框架允许使用NVMe协议从Linux内核导出块设备。依赖于这个框架,现在支持NVMe环回设备和基于fabric RDMA目标的NVMe。如果您还记得的话,最后一部分是两个比较常见的NVMeoF部署之一。

结论

以上就是对闪存的介绍和深入了解。现在您应该理解为什么该技术越来越受欢迎,并且成为高速计算的首选。

,