前言
入了SSD Controller 这一行,就要从入门学起。
打算把NVMe协议研深读透,从入门资料看起。该文章将陆续更新,欢迎监督:)
相关资料
- 协议官方所有规格书下载地址,最新的版本是1.3,但是官方首页推荐的规格书是NVM Express 1.2.1版本的,这两个版本对于学习NVMe协议是没什么区别的。本文基于1.2.1版本学习,文中所有提到有“规范”、“标准规范”的地方均是指这个规范。
- 网上有个很好的入门教程叫《蛋蛋读NVMe》是ssdfans网站上的大佬原创的,网址是
http://www.ssdfans.com/蛋蛋读nvme之一/
,总共6篇,一篇一篇查找挺麻烦的,大家可以把网址里的“一”依次改成“二”到“六”就可以方便查看所有文章了。- 微信公众号“存储随笔”,有个写的非常好的专题,强烈推荐研读!《NVMe专题》
1. NVMe是个什么玩意儿?
NVM 也即 non-volatile memory的缩写,翻译过来是非易失性存储器的意思,e就是express,快速。
规格书上说:NVME协议给主机软件通过PCIE协议连接SSD定义了一个寄存器级别的接口(NVMe over PCIe )。NVME不一定只能适用于SSD,比如说最新的SD卡协议也是基于NVME协议,但不可否认的是当今高性能SSD必然是采用的是NVME+PCIE组合。
下图(Figure 7)说明了字节(byte),单字(word)双字(Dword)之间的关系,这三种是规范中最基本的数据格式。Qword(四字)是单字大小的四倍的单位数据,在规范中并不常用;另外规范以小端法格式存储数据。
读写指令
看图:(点击可看大图)