迅维网

NVMe固态硬盘性能的救星 究竟有何本领?

zjmanager 2017-9-16 10:37


  上一篇文章中,我们提到了SATA接口搭配AHCI主机控制器接口已经无法满足时代对性能的要求,这时PCIe接口与NVMe主机控制器接口这对组合横空出世。

固态硬盘性能的救星NVMe, 究竟有何本领?

  那这两种主机控制器接口AHCI与NVMe之间到底差在哪里呢?先看一个表格:


AHCI

NVMe

Latency

6 us

2.8 us

Maximum queue & queue depth

1 command queue
32 commands per queue

64K queues
64K commands per queue

Uncacheable register access
(each consumes 2K cycles)

6 per non-queued command
9 per queued command

2 per command

MSI-X and interrupt steering

Single Interrupt

2K MSI-X Interrupts

Parallelism and multi-thread support

Requires synchronization lock to issue
command

No locking, doorbell register per queue

4 KB command efficiency
(4 KB critical in client PCs)

Two serialized host DRAM fetches required

One 64 B fetch

  我们根据上面表格的内容,在六个方面比较一下AHCI与NVMe的分别:

  1. 延迟:AHCI有6us延迟,但是NVMe的延迟只有2.8us.

  2. 命令队列:AHCI只有一个命令队列与所有core共享,并且每个队列最大只能放置32个命令,当需要执行的命令很多时,这时就会因为命令执行的等待浪费大量的时间;而NVMe最多可以支持64K个命令队列,每个队列最大包含64K个命令。与NVMe相比,AHCI真的弱爆了。

  3. 寄存器:AHCI配备了很多个寄存器,如果是NCQ本征命令队列,AHCI需要9个读写寄存器,如果命令操作是非NCQ操作,则需要6个读写寄存器。 相比之下,NVMe只需要2个寄存器即可完成命令的读写周期。AHCI过多寄存器的访问开销会造成大量的延迟,这也是为什么SATA硬盘执行命令较慢的原因。但是,随着具有低延迟特点的PCIe固态硬盘的出现,搭配NVMe可以完美搞定这个问题。

  4. 中断:AHCI支持一个中断向量,而NVMe最大可以支持2K MSI-X中断向量,提升了响应的速度。

  5. 平行性:AHCI要求有同步时钟触发命令,而NVMe只需要触发每个队列的寄存器即可。

  6. 4KB命令效率:AHCI需要两块串行内存读取,而NVMe一次可以取出64个字节。

  不过,AHCI和NVMe虽然都支持并行性,但是由于不一样的规划目标造成了他们提供的方式的不一样。其中,NVMe通过采用系统多个IO路径的内核实现PCIe固态硬盘的并行性。NVMe驱动程序会在主机和设备之间配对Submission Queue和Completion Queue, 主控的每个core都会被分配对应的Submission Queue和Completion Queue, 主机和设备之间也是基于队列内容进行数据交互。


固态硬盘性能的救星NVMe, 究竟有何本领?

  NVMe协议中的队列主要分为两种:Submission Queue(SQ)和Completion Queue(CQ)。如下图,多个SQ对应一个CQ,也就是说多个独立IO队列中的命令执行后,执行状态在同一个CQ队列中反馈。在这里,终端用户系统上的常见使用程序可以基于每个core建立并行操作,这样做的好处是可以减少中断次数。

固态硬盘性能的救星NVMe, 究竟有何本领?


雷人

握手

鲜花

鸡蛋

路过
收藏
来自: 今日头条
发表评论

最新评论

引用 讯城科技 2017-9-16 10:37
mark了

发表评论

登录 后可参与评论
返回顶部
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索