PCIe SSD网络时代来临!

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

我们先来科普一下PCIe,NVMe,PCIe SSD这些概念。

 

PCIe简介

 

尽管老男孩已经介绍过了,阿呆还是再提一下。

 

如果数据是汽车,那么PCIe就是高速公路了,每个车道叫做Lane,车道有x1, x2, x4, x8, x12, x16, x32几种模式,就是有这么多条车道,速度就是相应的倍数。所以PCIe在性能上的扩展性很不错。

 

下面是从第一代到第四代PCIe每个Lane的性能。PCIe 1,2采用8b10b编码,就是10个bit有2个校验位,PCIe 3之后是128b/130b编码,130个bit才有2个校验位,效率更高。其实这是一个趋势,Intel的Omni Path Architecture(OPA)接口也用了较少的校验码。OPA的码率是1024/1056=64/66b。对于数据,Intel用了数据扰乱技术,使得奇偶校验能更好地发挥,同时也不用做额外的编码和冗余数据。扰乱其实就是把数据打乱,让有序的数据变得随机,0和1随机分布,而不是连续出现,出错的概率会降低。阿呆的理解是频谱变宽了,噪声平摊到某个频段就降低了。

 

NVMe简介

 

NVMe目前有两个协议:

  1. NVMe Over PCIe
  2. NVMe Over Fabrics (RDMA和Fibre Channel,冬瓜哥说过,FC != 光纤)

 

NVMe协议有以下优点:

  • 命令集简单。如果你用过SATA或者SCSI命令集,就会明白NVMe多么简单。
  • 命令是64字节,命令结束的通知是16字节。
  • 支持多核,同时各自相互独立,不需要上锁。其实就是我们以前说过的多队列。
  • 命令深度相当深,时间上来说跟无限差不多。
  • 支持乱序发命令和执行。

 

NVMe PCIe SSD形式

 

如下图,NVMe SSD目前有三种形式:

  • PCIe闪存卡,就是插在PC PCIe插槽上,扩展性,容量和散热都不太好。
  • NVMe盘。U.2就跟普通硬盘一样,可以插到硬盘插槽,和SATA,SAS兼容。集成度高,数据共享方便,是未来的趋势。
  • M.2。就是个长条,个头小,适合消费电子,比如笔记本,平板之类的。

 

如下图,NVMe SSD既可以直接连到主机,也可以通过PCIe交换机扩展,连很多NVMe SSD。图里面的DP是Downstream,UP顾名思义,就是Upstream。

 

PCIe SSD也能组网?

 

不要以为PCIe只是主机到设备的接口,它其实也可以联网!如下图,在PCIe交换机的帮助下,四台主机,10个NVMe SSD组成了一个存储网络。

 

 

看得出来,PCIe SSD组网的关键就是PCIe交换机,下面我们来介绍常见的几种PCIe交换技术。

 

非透明桥NTB

 

我们知道一个PCIe RC root complex出来之后就是个PCI地址域,只能是这个地址域里面的组件相互通信。但是两个PCI地址域之间怎么通信呢,通过非透明桥Non Transparent Bridge,能够把地址域进行转换,变成另一个PCI地址域地址,实现两个PCI域通信。

 

动态分区

 

Dynamic Partitioning,这个阿呆了解不多,根据网文的意思,是根据配置,可以把任何一个NVMe SSD分配到不同的Host,实现一个盘被两个Host访问。跟Multi-Root技术有点像,就是动态调整NVMe SSD的RC。还有个Multi-cast技术,一个Host的命令可以发到多个NVMe SSD,实现多个数据备份。

 

SR-IOV

 

物理模块 (Physical Function, PF)

用于支持 SR-IOV 功能的 PCI 功能,如 SR-IOV 规范中定义。PF 包含 SR-IOV 功能结构,用于管理 SR-IOV 功能。PF 是全功能的 PCIe 功能,可以像其他任何 PCIe 设备一样进行发现、管理和处理。PF 拥有完全配置资源,可以用于配置或控制 PCIe 设备。

 

虚拟模块 (Virtual Function, VF)

与物理功能关联的一种功能。VF 是一种轻量级 PCIe 功能,可以与物理功能以及与同一物理功能关联的其他 VF 共享一个或多个物理资源。VF 仅允许拥有用于其自身行为的配置资源。

 

每个 SR-IOV 设备都可有一个物理功能 (Physical Function, PF),并且每个 PF 最多可有 64,000 个与其关联的虚拟功能 (Virtual Function, VF)。PF 可以通过寄存器创建 VF,这些寄存器设计有专用于此目的的属性。

 

一旦在 PF 中启用了 SR-IOV,就可以通过 PF 的总线、设备和功能编号(路由 ID)访问各个 VF 的 PCI 配置空间。每个 VF 都具有一个 PCI 内存空间,用于映射其寄存器集。VF 设备驱动程序对寄存器集进行操作以启用其功能,并且显示为实际存在的 PCI 设备。创建 VF 后,可以直接将其指定给 IO 来宾域或各个应用程序。此功能使得VF可以共享物理设备,并在没有 CPU 和虚拟机管理程序软件开销的情况下执行 I/O。

 

上图中每个VF有自己的Namespace,也有共享的Namespace E。下图中,每个虚拟机有一个NVMe驱动,可以访问NVMe SSD中的VF,不需要物理机的NVMe驱动支持,就能直接访问NVMe SSD。

 

 

多主机系统

 

如下图,两个PCIe Switch级联,这样有四个主机都能访问系统中的每一个NVMe SSD。

 

PCIe SSD网络

 

刚刚我们还停留在系统层次,但是为了多卖PCIe Switch,Microsemi绘出了更加美丽的蓝图——一张PCIe SSD的大网,网络的连接点就是很多PCIe Switch。太强悍了,每个主机都能高速访问几十上百个SSD,数据大家共享,相比以太网或者Infiniband,又获得了低延时和低成本。从价格到性能都是完胜目前的其他连接形式。真的是独孤求败!下图显示了PCIe网络相比以太网,Infiniband等的最大优势:延迟短

 

 

不过你要真想这么搞,可要做好牺牲的准备,毕竟,没有一个产品一诞生就是完美的,很多想不到的坑需要前驱者去填。美丽的蓝图为什么往往难以实现?因为要做的事情太多,每一个改变都很艰难。一张白纸,能画出最新最美的图画。但是,刚走出森林的人类,花了几百万年才有了文字。

 

 

要实现上面这个PCIe SSD网络,你需要做:

  • NVMe SSD能够被很多主机分享:怎样划分Namespace,怎样解决冲突问题,怎样分配带宽,怎样动态切换到不同主机?
  • 主机之间通信:既然是网络,那主机之间也得有通信机制,互相同步。一般使用高速以太网,RDMA形式。
  • 如何管理?这么多PCIe Switch,每一个的端口和路径怎么配置?NVMe SSD怎么分配?
  • 故障处理:Switch,SSD,Host都有可能挂掉,需要做好故障处理。

 

PCIe存储网络优缺点汇总

 

类别

PCIe网络

说明

成本

比Inifiniband便宜,不需要昂贵的Switch和HBA

复杂度

尽管主机端和NVMe SSD都是现成的,单是PCIe Switch并没有标准化,是个潜在的复杂点

性能

高带宽,低延迟,完美

功耗

没有复杂的网络协议开销

标准化

很标准

标准主机和NVMe SSD

扩展性

有限

不能超过256个SSD和128个主机

 

 

引用

http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2016/20160808_PreConfD_Onufryk.pdf

分类目录 未分类.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。