美文网首页
一篇文章理解什么是NVMe

一篇文章理解什么是NVMe

作者: SunnyZhang的IT世界 | 来源:发表于2019-06-26 21:30 被阅读0次

因为NVMe的出现,硬盘的性能得到了极大的提升。这个极大是多少呢?读带宽从500MB/s提高到了3200MB/s,写带宽从400MB/s提高到了1200MB/s左右。而读IOPS则达到了50万,甚至更高。也就是说,现在一块基于NVMe的SSD硬盘的性能比一个企业级磁盘阵列还要好。
牛皮吹了这么多,那到底什么是NVMe呢?NVMe的全称是Non-Volatile Memory Express,如果翻译过来就是非易失性内存主机控制器接口规范。你可能还是一头雾水,那我们上搜索引擎搜索一下这个关键词,可能会得到如下图片。

图1 NVMe存储
废话说了半天,到底什么是NVMe呢?首先它是一种接口规范,其次它是用于存储设备的接口规范。准确的说是目前最新的存储设备通信协议。这个协议就好比SAS和SATA一样,用于定义硬件接口和传输协议

关于存储的几个概念

为了彻底搞清楚什么是NVMe,我们先理清楚几个关于存储的概念。
尺寸外形:也就是设备的形状和大小,通常存储设备的尺寸外形包括如下:

  • 2.5寸或者3.5寸驱动器(在SFF标准中定义)
  • M.2 和 PCI Express(PCIe)(在PCI-SIG标准中定义)

接口:也就是设备如何与计算机通信。常见的存储设备接口包括:

  • SATA接口,通常用于2.5寸和3.5寸硬盘,有时候一些M.2设备也会使用
  • PCI Express(PCIe)接口, 用于M.2和PCIe设备
  • SAS(串行SCSI)和FC(Fibre Channel)接口,仅用于服务器领域和数据中心
    PCIe接口要比SATA接口快的多,SATA3最大带宽是6Gb/s,而基于4X PCIe的M.2接口最大可以达到32Gb/s。

协议:定义了如何在计算机与设备之间传输数据。常见的协议包括:

  • 用于SATA接口的AHCI或者ATA协议,
  • 用于PCIe接口的NVMe协议

到这里我们应该比较清晰了,NVMe是运行在某种接口上的通信协议,用于规范计算机与存储设备的数据传输。上述设备尺寸、接口和协议通常是可以组合的。下面是常见的集中组合形式。

  • 一个2.5寸SSD硬盘,基于SATA接口,通信协议是AHCI或者ATA。具体设备大概如图2所示。


    图2 SATA接口的SSD
  • 一个M.2的SSD, 基于PCIe接口,通信协议是NVMe。具体设备大概如图3所示。


    图3 M.2的SSD
  • 一个PCIe的SSD,基于PCIe接口,通信协议是NVMe。具体设备大概如图4所示。


    图4 PCIe的SSD

这里只是给出了几个具体的例子,便于大家理解接口、设备和协议的关系。具体来说,还有其它很多种组合形式,本文不在赘述。

为什么NVMe会这么快

上面我们介绍了什么是NVMe,下面本文将介绍一下为什么NVMe如此之快(注意:这里说的快是基于SSD设备的,如果是机械硬盘则不然)。由于SSD本身的物理特性,其数据的访问已经非常快了,性能的瓶颈就是出在计算机与设备连接的接口和协议上面。
我们举一个简单的例子。比如我们有一个仓库会不断的生产出产品来,我们可以机械手将产品从仓库拿到其它地方(如图5所示)。对于SATA的SSD,类似于一个单臂的机器人,仓库生产的很快,但机器人每次只能拿一个,搬移的速度就比较慢。

图5 单臂机器人
然而对于基于NVMe的SSD呢?相当于这个机器人长了数百只手,这样速度显然就比前者快的多了。
图6 多臂机器人
NVMe协议的原理也是如此,它本质是上建立了多个计算机与存储设备的通路,这样搬运数据的速度自然就提高了。在NVMe协议中,多个通路其实就是多个队列,具体如图7所示。在SATA中计算机与存储设备只能有一个队列,即使是多CPU情况下,所有请求只能经过这样一个狭窄的道路。而NVMe协议可以最多有64K个队列,每个CPU或者核心都可以有一个队列,这样并发程度大大提升,性能也自然更高了。
图7 NVMe的多队列

今天只是一个入门,后面我们再详细的介绍关于NVMe的更多内容。如果觉得不错,还请大家关注本号,如果觉得太烂,还请下面留言

更及时的获取新内容,请关注微信公众号: itworld123

相关文章

  • 一篇文章理解什么是NVMe

    因为NVMe的出现,硬盘的性能得到了极大的提升。这个极大是多少呢?读带宽从500MB/s提高到了3200MB/s,...

  • nvme Linux driver 学习之三probe流程

    上一篇文章讲述nvme driver 识别找到支持该driver 的nvme pci设备的过程,现在开始讲述nvm...

  • NVME and PCIE SSDs/NVME Manageme

    本文是fms2014的一篇文章,讲的nvme的相关内容。目录: NVME,生态系统 带外 vs. 带内管理 NVM...

  • 深入理解NVMe协议的原理

    前面我们介绍了一下NVMe的基本概念,让大家在直观上认识了一下什么是NVMe。今天我们将更加深入的介绍NVMe。故...

  • EBS卷的I/O超时

    关键词:EBS/NVMe NVMe EBS卷使用操作系统提供的默认NVMe驱动程序。大多数操作系统为提交到NVMe...

  • NVMe相关资源(SGL/open channel/CMB/PM

    SPDK/NVMe存储技术分析 : https://www.cnblogs.com/vlhn/tag/NVMe/[...

  • 重新理解成长!

    昨天的文章《成长就是认清世界的过程》,是笑来老师的一篇文章同名,今天,又重新理解了成长这个概念! 为什么要重新理解...

  • 理解NVMe的内部实现原理

    任何新技术的出现都是为了解决当前情况存在的问题。NVMe的出现也是为了解决当前存在的问题。这个问题就是日益快速增长...

  • 10.13.x 浦科特等marell 主控nvme补丁

    苹果在10.13.x已经开放了nvme的支持,也就是说有的nvme固态不需要打补丁就能支持,比如三星的nvme,但...

  • 理清思路

    叶圣陶曾说:“大凡读一篇文章,摸清作者的思路是最要紧的事,按作者的思路去理解,理解才能透彻。”学习一篇文章...

网友评论

      本文标题:一篇文章理解什么是NVMe

      本文链接:https://www.haomeiwen.com/subject/hypccctx.html