nvme命令中prp_理解NVMe的内部实现原理,这一篇就够了

本文详细解析了NVMe协议的基本原理,包括其解决的存储性能问题,多队列设计,以及队列的提交和完成机制。通过门铃机制和中断通知,NVMe实现了高效的数据传输。此外,文章还介绍了NVMe命令格式的关键字段,如Command Identifier和Opcode,以及NVMe设备相对于SAS和SATA的性能优势。
摘要由CSDN通过智能技术生成

前文回顾: 一篇文章讲清什么是NVMe

任何新技术的出现都是为了解决当前情况存在的问题。NVMe的出现也是为了解决当前存在的问题。这个问题就是日益快速增长的存储介质性能与传输通道性能太差之间的矛盾。基于SSD的存储设备性能都要上天了,但SAS和SATA接口的性能却没有本质的提升。

目前基于SCSI协议的SAS和SATA只能是单个队列而且每个队列的深度也比较低,分别是254和32的队列深度。而NVMe协议设计之初就考虑了该问题,它的最大队列数量可以是64K(65535个命令队列和1个管理队列),而每个队列的深度可以高达64K。与SCSI协议相比,就好比一个乡村的羊肠小路和一个双向八车道的高速公路的差别。

图1 美丽的乡村下路和京港澳高速

NVMe基本原理

为了便于理解主机和NVMe设备的关系,我们这里简化NVMe设备的内部结构。如图2所示为NVMe白皮书中的配图,这里主机称为Host,而NVMe设备称为Controller(控制器)。主机和控制器之间通过共享内存的队列实现交互。

图2 NVMe多队列示意图

NVMe的队列分为2种,其中一种是用于管理的队列,称为Admin Queue(管理队列),仅有一个,另外一种是命令队列(Command Queue),最多可以有65535个。其中命令队列的数量和模式都是通过管理队列来设置的。其中每一个队列实际上是一个队列对,也就是包括两个队列,分别是提交队列(Submission Queue)和完成队列(Completion Queue)。提交队列用于主机端向NVMe设备发送NVMe命令,而完成队列则用于NVMe设备向主机反馈命令执行情况。实际上NVMe还有另外一种

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值