加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

理解NVMe的内部实现原理,这一篇就够了

发布时间:2019-07-03 21:13:18 所属栏目:教程 来源:SunnyZhang
导读:前文回首:《一篇文章讲清什么是NVMe》 任何新技能的呈现都是为了办理当前环境存在的题目。NVMe的呈现也是为了办理当前存在的题目。这个题目就是日益快速增添的存储介质机能与传输通道机能太差之间的抵牾。基于SSD的存储装备机能都要上天了,但SAS和SATA接

前文回首:《一篇文章讲清什么是NVMe》

任何新技能的呈现都是为了办理当前环境存在的题目。NVMe的呈现也是为了办理当前存在的题目。这个题目就是日益快速增添的存储介质机能与传输通道机能太差之间的抵牾。基于SSD的存储装备机能都要上天了,但SAS和SATA接口的机能却没有本质的晋升。

今朝基于SCSI协议的SAS和SATA只能是单个行列并且每个行列的深度也较量低,别离是254和32的行列深度。而NVMe协议计划之初就思量了该题目,它的最大行列数目可所以64K(65535个呼吁行列和1个打点行列),而每个行列的深度可以高达64K。与SCSI协议对比,就比如一个村子的羊肠小路和一个双向八车道的高速公路的不同。

领略NVMe的内部实现道理,这一篇就够了

图1 瑰丽的村子下路和京港澳高速

NVMe根基道理

为了便于领略主机和NVMe装备的相关,我们这里简化NVMe装备的内部布局。如图2所示为NVMe白皮书中的配图,这里主机称为Host,而NVMe装备称为Controller(节制器)。主机和节制器之间通过共享内存的行列实现交互。

领略NVMe的内部实现道理,这一篇就够了

图2 NVMe多行列表示图

NVMe的行列分为2种,个中一种是用于打点的行列,称为Admin Queue(打点行列),仅有一个,其它一种是呼吁行列(Command Queue),最多可以有65535个。个中呼吁行列的数目和模式都是通过打点行列来配置的。个中每一个行列现实上是一个行列对,也就是包罗两个行列,别离是提交行列(Submission Queue)和完成行列(Completion Queue)。提交行列用于主机端向NVMe装备发送NVMe呼吁,而完成行列则用于NVMe装备向主机反馈呼吁执行环境。现实上NVMe尚有其它一种模式,就是多个提交行列共享统一个完成行列的环境,本文暂且不做先容。

NVMe行列及呼吁的处理赏罚流程

上文我们知道NVMe是通过行列转达节制呼吁和呼吁等内容的,那么这里的行列实体到底是什么呢?其拭魅这里提交行列和完成行列就是内存的一个地区。在数据布局道理上这里的行列着实是一个环形缓冲区,如图3所示。

领略NVMe的内部实现道理,这一篇就够了

图3 环形缓冲区

NVMe通过一种门铃机制(Doorbell)来奉告节制器呼吁行列是否有新数哀求/呼吁。也就是说每个行列都有一个门铃指针。对付发送行列来说,这个指针暗示的是发送行列的尾指针。主机端将数据写入到发送行列后,更新映射到位于装备寄存器空间中的门铃的尾指针。此时,在节制器端就知道有新的哀求/呼吁到来,接下来就可以举办对其举办处理赏罚。

当节制器完成一个NVMe哀求时,通过完成行列来把完成的功效奉告主机端。与发送行列差异,完成行列是通过间断机制(可所以INTx,MSI或MSIx)汇报主机端。如图4是一个呼吁的完备处理赏罚流程。

领略NVMe的内部实现道理,这一篇就够了

图4 呼吁处理赏罚完备流程

NVMe的呼吁名目

前面我们先容了呼吁的发送和处理赏罚流程,接下来我们看看NVMe的呼吁长什么样。如图5是NMVe呼吁的详细名目,假如各人相识TCP/IP协议可能SCSI协议,那么领略本图将相等轻易。在图4中每一举动8个字节,呼吁巨细总共为64字节。

领略NVMe的内部实现道理,这一篇就够了

图5 NVMe的呼吁名目

在这个呼吁名目中有几个字段自己是较量伟大的,限于篇幅,且不规划让各人看完本文背面疼,本文不规划先容全部细节。本文简朴的先容一下该呼吁名目标几个要害字段。个中Command Identifier标识一个详细的呼吁。Namespace Identifier则暗示呼吁发送到谁人定名空间。Data Pointer 1 和Data Pointer 2则用于标识数据的详细位置。

这里有两点必要声名:

  • NVMe的一个节制器下面可以有多个定名空间(Namespace),通过Namespace ID来标识的。
  • 呼吁与数据是疏散的,并不像TCP那样数据在呼吁后头。

我们这里重点先容一下Command Identifier,该字段占用4个字节的空间。固然仅有4个字节,但有分为3大部门,6小部门,详细如图6所示。

领略NVMe的内部实现道理,这一篇就够了

图6 呼吁标识名目

我们以从低位到高位的次序别离先容一下各个字段的寄义:

  • OPC: 全称为Opcode,也就是被执行呼吁的操纵码。详细来说就是想让节制器干什么,好比读数据、写数据可能刷写等。

领略NVMe的内部实现道理,这一篇就够了

图7 OPC界说

  • FUSE: 全称为Fused Operation, 用于标识该呼吁是平凡呼吁照旧复合呼吁。如图8是白皮书对该字段的声名。

领略NVMe的内部实现道理,这一篇就够了

图8 FUSE的界说

  • PSDT: 全称为PRP or SGL for Data Transfer,这个用于声名存储数据的内存的组织情势。

NVMe的机能

最后我们看一下NVMe与SAS和SATA存储装备的机能比拟。为了停止告白怀疑,本文就机关图声名装备的厂商和范例了。

领略NVMe的内部实现道理,这一篇就够了

图9 机能比拟

通过上图可以清晰的看到SAS和SATA装备与NVMe装备的机能差别,出格是对付读操纵,NVMe有绝对的机能上风。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读