NVMe协议SSD 控制器端实现.docxVIP

  • 33
  • 0
  • 约8.97千字
  • 约 20页
  • 2021-12-08 发布于天津
  • 举报
PAGE 1 PAGE 1 NVMe协议SSD 控制器端实现 NVMe协议是在PCIeSSD开始大量出现在市场上后,因为各个厂家的私有协议不具有兼容性,无法和现有操作系统无缝衔接,INTEL为了统一接口协议建立生态,而在2011年发布了NVMe协议。 一.NVMe协议 NVMe协议是在PCIeSSD开始大量出现在市场上后,因为各个厂家的私有协议不具有兼容性,无法和现有操作系统无缝衔接,INTEL为了统一接口协议建立生态,而在2011年发布了NVMe协议。 NVMe采用了多命令队列(最大65536个命令队列),每个命令可变数据长度(512B到2MB),同时数据在host端内存支持PhysicalRegionPage和ScatterGatherList。NVMe协议支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的可变权重处理。 和基于传统ATA(基于PC时代硬盘的接口协议)的SATA协议相比,NVME协议做了许多针对多核host以及NAND存储介质的协议优化。 因为PCIE接口的高带宽,NVMe协议带来SSD访问的高效率,但也同时带来了SSD掌握器端NMVe协议栈实现的难度和挑战。这个挑战主要是1)多权重命令队列的管理和命令抓取,2)命令的解析分解,分发,3)数据的传输。 在开始争论解决方法之前,我们先了解一下SSD掌握器的基本架构。 二.SSD掌握器 典型的SSD掌握器架构如下: 主机接口掌握器: 主机接口负责进行主机与固态盘之间的通信和数据传输,接受和解析I/O恳求,并维护一条或者多条恳求队列。目前主流使用的物理接口包括SATA、SAS、PCIe、M.2等。其中,SATA是低成本的硬盘接口,SATA3.0的理论带宽是600MB/s;SAS向下兼容SATA,能供应更高的传输速率、牢靠性和可用性,SAS3.0的理论带宽是1.2GB/s;PCIe是连接外围设备和主机处理器的主要接口,SATA和SAS接口就是通过PCIe接口连接到主机处理器和内存,PCIeSSD既缩短了主机处理器到存储介质的路径和响应延时,又能供应更大的带宽,PCIe3.0x4和x8的理论带宽分别是4GB/s和8GB/s;M.2是新一代接口标准,分为支持PCIe通道和SATA通道两种,它具有更敏捷的物理规范,在传输带宽、容量和轻薄特性等方面优于SATA接口。消费级固态盘主要采用SATA接口和M.2接口,企业级固态盘主要采用SAS接口和PCIe接口。这些物理接口采取的规律接口协议一般是AHCI或者NVMe,它们规定了主机与存储设备之间通信和传输数据的方式。AHCI协议主要是针对高延时的SATA接口的机械硬盘而设计的,虽然能够应用于SATA接口的固态盘,但是成为了高性能固态盘的瓶颈;NVMe协议是2011年由英特尔等公司领头,为闪存存储和PCIe接口量身定制的非易失性存储器标准,不仅具有跨平台的兼容性(目前Windows、Linux和VMware等主流平台都已经支持),而且相比于AHCI协议,具有更低的延时、更高的IOPS和更低的功耗。比如,AHCI只能支持一条最大深度为32的命令队列,而NVMe最多支持64000条最大深度为64000的命令队列,能充分利用固态盘内的并行性。因此,NVMe协议能够更好地发挥出固态盘的高性能优势,得到了越来越广泛的应用。 ●多核处理器: 固态盘的管理需要处理诸多复杂的任务,比如主机接口协议、调度算法、FTL算法和缓存算法等,因此需要强有力的多核处理器来提高这些任务的处理效率,从而降低软件延时。比如,可以使用一个计算核心处理主机接口协议,而使用多个计算核心处理繁重的FTL算法。 ●缓存芯片: 固态盘内置有缓存芯片,一般是DRAM,用于缓存用户数据和软件算法的元数据。缓存既能加快数据访问的速度,提高固态盘的性能,也能够削减对闪存的写入,延长固态盘的寿命。缓存用户数据的部分称之为数据缓存,缓存地址映射表的部分称之为映射缓存。为了防止突然掉电导致RAM中的数据丢失,固态盘一般会内置备用电容,并采用适当的数据保护技术,用于保证在突然掉电的状况下,将RAM中关键的脏数据刷回闪存。 ●中央掌握器: 中央掌握器是整个固态盘掌握器的核心,负责配置固态盘的工作模式,管理各个模块之间的通信和数据流。中央掌握器内置有小容量的高速SRAM缓存,用于临时缓存数据。 ●纠错码引擎: 纠错码引擎对要写入闪存的数据进行编码,所增加的纠错码冗余会被写到闪存页的额外存储区中;当需要从闪存中读取数据时,纠错码

文档评论(0)

1亿VIP精品文档

相关文档