这几日再看nvme的资料,感觉茫然无序,这是近几年出来的东西,比较新在网上找不到相关介绍说明,所以只能自己慢慢啃了。一下把自己的理解大概讲讲,有不正之处请大家及时指出,好及时改过。
- nvme走的是pcie的协议,有了底层协议保证,我们才能对nvme去进行code,nvme有以下优点。
不需要不可缓存/ MMIO寄存器读取命令中提交或完成路径。
最大的一个MMIO寄存器写命令提交路径是必要的。
多达65535个I/O队列支持,每个I/O队列支持多达64K的杰出的命令。
优先级与每个I/O队列有明确的仲裁机制有关。
所有的信息来完成一个4KB读请求包含在64命令本身,确保高效率的小的I/O操作。
效率和精简指令集。
MSI和MSI-X支持中断聚集。
支持多个命名空间。
有效支持I/O虚拟化架构如SR-IOV。
健壮的错误报告和管理能力。
支持多路径I/O和命名空间的共享。 - nvme本身的规范特别多,基本的就是他与主机通信的管理采用的是队列这种数据结构,用一个环形的队列,管理各种命令,而命令分为管理命令,每个io命令,每种命令都成对出现,包括提交队列和完成队列。大的数据是控制器直接接收过来的,里面包括很多个命名空间,命名空间里面有很多的逻辑块地址lba。