NVME简单理解(一)

标签: SSD 通信原理
8人阅读 评论(0) 收藏 举报

         NVMe是什么:NVMe是一种Host与SSD之间通讯的协议,它在协议栈中隶属高层。


NVMe制定了Host与SSD之间通讯的命令,以及命令如何执行的。

NVMe有两种命令,一种叫Admin Command,用以Host管理和控制SSD;另外一种就是I/O Command,用以Host和SSD之间数据的传输。下面是NVMe1.2支持的命令列表:

NVMe支持的Admin Command:


NVMe支持的I/O Command:


跟ATA spec中定义的命令相比,NVMe的命令个数少了很多,完全是为SSD量身定制的。大家现在别纠结于具体的命令,了解一下就好。

NVMe有三种队列命令:Submission Queue (SQ),Completion Queue(CQ)和Doorbell Register (DB)。 SQ和CQ位于Host的内存中,DB则位于SSD的控制器内部。如下图所示:


SQ位于Host内存中,Host要发送命令时,先把准备好的命令放在SQ中,然后通知SSD来取;CQ也是位于Host内存中,一个命令执行完成,成功或失败,SSD总会往CQ中写入命令完成状态。DB则是在Host发送命令时,不是直接往SSD中发送命令的,而是把命令准备好放在自己的内存中,Host就是通过写SSD端的DB寄存器来告知SSD命令已经处理完毕,可以前来检阅。流程如下图所示:


             ①Host写命令到SQ;

             ②Host写DB,通知SSD取指;

             ③SSD收到通知,于是从SQ中取指;

             ④SSD执行指令;

             ⑤指令执行完成,SSD往CQ中写指令执行结果;

             ⑥然后SSD发短信通知Host指令完成;

             ⑦收到短信,Host处理CQ,查看指令完成状态;

             ⑧Host处理完CQ中的指令执行结果通过DB回复SSD:指令执行结果已处理。






查看评论

nvme理解

这几日再看nvme的资料,感觉茫然无序,这是近几年出来的东西,比较新在网上找不到相关介绍说明,所以只能自己慢慢啃了。一下把自己的理解大概讲讲,有不正之处请大家及时指出,好及时改过。 nvme走的是pc...
  • u013548273
  • u013548273
  • 2016-01-08 22:27:15
  • 1175

独家发布 | Linux NVMe Driver学习笔记大合集

近期,存储随笔连载了10篇Linux NVMe Driver学习笔记,主要基于两大块的内容: 初始化和Block IO请求处理过程。我们通过两幅简图回顾一下前面的内容: 初始化:...
  • zhuzongpeng
  • zhuzongpeng
  • 2017-07-26 11:44:46
  • 2612

NVMe设备命令大小限制

单个NVMe命令是有一定大小限制的,host如果提交一个超过限制大小的命令,将会终止执行并得到一个值为0x02的状态码,代表Invalid Field in Command。...
  • pyyaoer
  • pyyaoer
  • 2015-05-10 00:42:54
  • 2113

Nvme通用驱动下载

  • 2017年03月11日 00:28
  • 112KB
  • 下载

NVME概述

1 什么是NVMe?        NVMe: Non-Volatile Memory express(非易失性存储器的传输规范)        NVMe是Host和PCIE BUS SDD间的数据通...
  • u010616442
  • u010616442
  • 2017-04-26 09:38:55
  • 2333

NVMe

作为NVMe标准的主要发起者,英特尔已经推出了多款NVMe闪存卡和SSD盘,业界也有不少友商开始大行NVMe之道,初步来看,似乎NVMe已经主导了许多闪存厂商。但是,NVMe真的就如大家所说的那么美好...
  • mightySheldor
  • mightySheldor
  • 2016-01-27 14:27:13
  • 4415

Linux PCIe SSD NVME 性能调优篇

直接来干货!怎么调优 PBlaze IV PCIe SSD NVMe。  Go! 1. 中断绑定  在Redhat 6.5中的NVMe驱动会自动把全部的中断向量绑定到core0上,如果有多...
  • liyuekuan
  • liyuekuan
  • 2015-07-20 13:28:26
  • 1361

NVMe协议-v1.3

  • 2017年08月21日 10:34
  • 6.71MB
  • 下载

NVMe驱动解析-响应I/O请求

在机械硬盘统治天下的时代,由于其随机访问性能差,Linux内核开发者把重点放在缓存I/O, 合并I/O等方面,并没有考虑多队列的设计;Flash的出现改变了这一切,Flash的低延迟,高并发潜质急需一...
  • Memblaze_2011
  • Memblaze_2011
  • 2016-10-10 15:54:42
  • 3793

NVME协议栈剖析

从代码上来看,NVME的协议栈直接从Block层下来,不
  • zhufengtianya
  • zhufengtianya
  • 2014-11-14 15:10:24
  • 6849
    个人资料
    持之以恒
    等级:
    访问量: 6427
    积分: 321
    排名: 24万+
    最新评论