SSD固态硬盘闪存技术详解

传统的机械硬盘(HDD)运行主要是靠机械驱动头,包括马达、盘片、磁头摇臂等必需的机械部件,它必须在快速旋转的磁盘上移动至访问位置,至少95%的时间都消耗在机械部件的动作上。SSD却不同机械构造,无需移动的部件,主要由主控与闪存芯片组成的SSD可以以更快速度和准确性访问驱动器到任何位置。传统机械硬盘必须得依靠主轴主机、磁头和磁头臂来找到位置,而SSD用集成的电路代替了物理旋转磁盘,访问数据的时间及延迟远远超过了机械硬盘。SSD有如此的“神速”,完全得益于内部的组成部件:主控--闪存--固件算法。

主控、闪存及固件算法三者的关系:


 

SSD固态硬盘闪存技术详解_第1张图片

SSD最重要的三个组件就是NAND闪存,控制器及固件。NAND闪存负责重要的存储任务,控制器和固件需要协作来完成复杂且同样重要的任务,即管理数据存储、维护SSD性能和使用寿命等。

主控:控制器是一种嵌入式微芯片(如电脑中CPU),其功能就像命令中心,发出SSD的所有操作请求----从实际读取和写入数据到执行垃圾回收和耗损均衡算法等,以保证SSD的速度及整洁度,可以说主控是SSD的大脑中枢。目前主流的控制器有Marvell、SandForce、Samsung、Indilinx等。像Marvell各方面都很强劲,代表型号为Marvell 88SS9187/89/90主控,运用在浦科特、闪迪、英睿达等品牌的SSD上。SandForce的性能也不错,它的特点是支持压缩数据,比如一个10M的可压缩数据可能被他压成5M的写入硬盘,但还是占用10M的空间,可以提高点速度,最大的特点是会延长SSD的寿命,但是CPU占用会高点而且速度会随着硬盘的使用逐渐小幅度降低。代表型号为SF-2281,运用在包括Intel、金士顿、威刚等品牌的SSD上。Samsung主控一般只有自家的SSD上使用,性能上也是很强悍的,不会比Marvell差多少。目前三星主控已经发展到第五代MEX,主要运用在三星850EVO、850PRO上。

固件算法:SSD的固件是确保SSD性能的最重要组件,用于驱动控制器。主控将使用SSD中固件算法中的控制程序,去执行自动信号处理,耗损平衡,错误校正码(ECC),坏块管理、垃圾回收算法、与主机设备(如电脑)通信,以及执行数据加密等任务。由于固件冗余存储至NAND闪存中,因此当SSD制造商发布一个更新时,需要手动更新固件来改进和扩大SSD的功能。开发高品质的固件不仅需要精密的工程技术,而且需要在NAND闪存、控制器和其他SSD组件间实现完美整合。此外,还必须掌握NADN特征、半导体工艺和控制器特征等领域的最先进的技术。固件的品质越好,整个SSD就越精确,越高效,目前具备独立固件研发的SSD厂商并不多,仅有Intel/英睿达/浦科特/OCZ/三星等厂商,希望我国能早日解决。

NAND闪存:SSD用户的数据全部存储于NAND闪存里,它是SSD的存储媒介。SSD最主要的成本就集中在NAND闪存上。NAND闪存不仅决定了SSD的使用寿命,而且对SSD的性能影响也非常大。NAND闪存颗粒结构及工作原理都很复杂,接下来我们会继续推出系列文章来重点介绍闪存,这里主要来了解一下大家平常选购SSD经常接触到的SLC、MLC及TLC闪存。

SSD固态硬盘闪存技术详解_第2张图片

 

工作原理概述

https://blog.csdn.net/lyon_yong/article/details/79178794

SSD主控通过若干个通道(channel)并行操作多块FLASH颗粒,类似RAID0,大大提高底层的带宽。举个例子,假设主控与FLASH颗粒之间有8个通道,每个通道上挂载了一个闪存颗粒,HOST与FLASH之间数据传输速率为200MB/s。该闪存颗粒Page大小为8KB,FLASH page的读取时间为Tr=50us,平均写入时间为Tp=800us,8KB数据传输时间为Tx=40us。那么底层读取最大带宽为(8KB/(50us+40us))*8 = 711MB/s,写入最大带宽为(8KB/(800us+40us))*8 = 76MB/s。从上可以看出,要提高底层带宽,可以增加底层并行的颗粒数目,也可以选择速度快的FLASH颗粒(或者让速度慢的颗粒变快,比如MLC配成SLC使用)。主控通过8通道连接8个FLASH DIE,为方便解释,这里只画了每个DIE里的一个Block,其中每个小方块表示一个Page (假设大小为4KB。 

HOST写入4KB数据

HOST继续写入16KB数据  

HOST继续写入,最后整个Block都写满

当所有Channel上的Block都写满的时候,SSD主控会挑选下一个Block以同样的方式继续写入。 



SSD固态硬盘闪存技术详解_第3张图片

固态硬盘主要由SSD控制器和Flash memory阵列组成,通过Host Interface和主机进行数据交互。目前主要的接口有SATA,NVME和PCIe,NVME由于成本低,速度快,将会是未来的主流。SSD控制器一般包含2个核心,其中一个核心用做Flash控制器,用来管理Flash memory阵列,另一个核心用作处理器,主要用于做协议处理和命令交互。有些控制器还会外接RAM,用于缓存控制器执行代码所需的数据,但为了降低成本,有时候会被去掉。Flash memory阵列有多个通道,多个片选,多个lun,用于做并行计算提高存储速度。主机主要通过ATA命令与SSD进行数据交互。

你可能感兴趣的:(存储)