Service@aiipc.com
+86-755-29055206

NVMe协议SSD 控制器物联网方案公司端实现浅析(一)

NVMe协议SSD 控制器物联网方案公司端实现浅析(一)

admin
2018-04-07 22:15
: 网络整理

NVMe协议是在PCIe SSD开始大量出现在市场上后,因为各个厂家的私有协议不具有兼容性,无法和现有操作系统无缝衔接,INTEL为了统一接口协议建立生态,而在2011年发布了NVMe协议。

NVMe协议SSD 控制器物联网方案公司端实现浅析(一)

NVMe采用了多命令队列 (最大65536个命令队列),每个命令可变数据长度(512B到2MB),同时数据在host端内存支持Physical Region Page和Scatter Gather List。NVMe协议支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的可变权重处理。

NVMe协议SSD 控制器物联网方案公司端实现浅析(一)

NVMe协议SSD 控制器物联网方案公司端实现浅析(一)

NVMe协议SSD 控制器物联网方案公司端实现浅析(一)

和基于传统ATA(基于PC时代硬盘的接口协议)的SATA协议相比,NVME协议做了很多针对多核host以及NAND存储介质的协议优化。

NVMe协议SSD 控制器物联网方案公司端实现浅析(一)

因为PCIE接口的高带宽,NVMe协议带来SSD访问的高效率,但也同时带来了SSD控制器端NMVe协议栈实现的难度和挑战。这个挑战主要是1)多权重命令队列的管理和命令抓取,2)命令的解析分解,分发,3)数据的传输。

在开始讨论解决方法之前,我们先了解一下SSD控制器的基本架构。

二.SSD控制器

典型的SSD控制器架构如下:

NVMe协议SSD 控制器物联网方案公司端实现浅析(一)

主机接口控制器:

主机接口负责进行主机与固态盘之间的通信和数据传输,接受和解析I/O请求,并维护一条或者多条请求队列。目前主流使用的物理接口包括SATA、SAS、PCIe、M.2等。其中,SATA是低成本的硬盘接口,SATA 3.0的理论带宽是600MB/s;SAS向下兼容SATA,能提供更高的传输速率、可靠性和可用性,SAS3.0的理论带宽是1.2GB/s;PCIe是连接外围设备和主机处理器的主要接口,SATA和SAS接口就是通过PCIe接口连接到主机处理器和内存,PCIe SSD既缩短了主机处理器到存储介质的路径和响应延时,又能提供更大的带宽,PCIe 3.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中关键的脏数据刷回闪存。

● 中央控制器:




  • 共4页:
  • 上一页
  • 1
  • 2
  • 3
  • 4
  • 下一页