在传统的系统应用架构中,如机械硬盘和光驱设备,SATA(Serial ATA)接口在高级主机控制器接口AHCI(Serial ATA Advanced Host Controller Interface)模式的帮助下,已完全达到预期的性能要求。但到了固态硬盘的时代,与机械硬盘的磁头等机械结构不同,固态硬盘的存储介质是NAND闪存,这时,SATA接口和高级控制器接口AHCI模式的组合已经称为了固态硬盘性能释放的瓶颈。

打开网易新闻 查看精彩图片

理工科最大的优势就是,出现问题,就会立即寻找解决问题的办法。俗话说,问医抓药,就要先了解病症。所以在要去找解决这一瓶颈的答案之前,我们需要深入了解一下固态硬盘的结构和存储方式。

打开网易新闻 查看精彩图片

从上图的固态硬盘的结构图可以看到,固态硬盘主要有主控Controller,内存RAM和NAND闪存组成。此外,固态硬盘与Host主机之间的交互依靠特定的接口Host Interface,主控与NAND闪存之间的数据交互由Flash Controller控制。在主控与NAND闪存之间存在多个通道,每个NAND闪存芯片执行正常的速度,结合多通道结构达到容量的提升,也能够保证固态硬盘可以更快的进行数据传输,最终达到高性能。

根据早期的闪存报告,每个NAND闪存芯片的50MB/s, 典型的固态硬盘结构中采用4或者8个NAND芯片,那么综合性能可以达到400MB/s(8*50MB/s). 我们知道,SATA接口中的第三代SATA 3.0最大的速度为600MB/s, 所以这个速度对于早期的NAND闪存芯片来说已经绰绰有余了。

打开网易新闻 查看精彩图片

但是,目前消费级固态硬盘中的NAND闪存芯片的速度大约是200MB/s. 随着NAND闪存标准的不断完善,包括AT&T Toggle 2.x和ONFI 3.x,PCIe固态硬盘配备的NAND芯片速度达到400MB/s,如果配备8颗NAND芯片,PCIe固态硬盘NAND闪存速度可以达到3.2GB/s。从这个速度来看,SATA接口固态硬盘完全不能发挥NAND本身的优势,完成称为了固态硬盘最大吞吐量的瓶颈。

SATA接口和高级控制器接口AHCI接口发展遇到瓶颈,这时,NVMe主机控制器接口协议应用而生,NVMe的目的就是满足基于PCIe固态硬盘的企业数据中心和终端用户的系统性能需求。虽然在NVMe之前,为了实现PCIe固态硬盘性能的最大化,各大厂商为PCIe固态硬盘设计了很多接口和专属的驱动设计,由于每家厂商设计的接口完全不一致,从而导致了大规模的应用。为了更好实现PCIe固态硬盘的扩展,NVMe标准也随之出炉。NVMe充分发挥了PCIe固态硬盘的低延迟以及并行性,这也侧面反馈了,现在系统应用平台的并行性。下图展示的是NVMe主机控制接口搭配PCIe固态硬盘的链接示意图,以及AHCI主机控制器接口搭配SATA固态硬盘的链接示意图。

打开网易新闻 查看精彩图片

从上面的互连示意图,我们可以了解到,SATA固态硬盘是先链接到SATA控制器,再链接到PCIe RC;但是,基于PCIe的固态硬盘可以直接链接到PCIe RC端或者CPU,这中间消除了转换协议的开销,实现更快的数据处理。

这篇文章先抛装引玉,引出NVMe, 下一篇着重介绍NVMe与AHCI具体的不同之处。敬请期待,谢谢!