IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> NVMe 原理 - 命令的处理 -> 正文阅读

[系统运维]NVMe 原理 - 命令的处理

蛋蛋读NVMe之一 (ssdfans.com)

NVMe 所处层次

img

NVMe是一种Host与SSD之间通讯的协议,它在协议栈中隶属高层。NVMe在协议栈中处于应用层或者命令层。

NVMe是为SSD所生的。NVMe出现之前,SSD绝大多数走的是AHCI和SATA的协议,后者其实是为传统HDD服务的。与HDD相比,SSD具有更低的延时和更高的性能,AHCI已经不能跟上SSD性能发展的步伐了,已经成为制约SSD性能的瓶颈。既然SATA接口速度太慢,我用PCIe好了,不过上层协议还是AHCI。AHCI只有一个命令队列,最多同时只能发32条命令。SSD需要PCIe,更需要NVMe。

NVMe 传输模型分类

主机和NVM子系统之间有两个定义的通信结构:

  • 一个是基于内存的传输模型
  • 一个是基于消息的传输模型。基于消息的传输模型有两种子类型:
    • 仅消息传输模型
    • 消息/内存传输模型

不同模型在命令、响应、数据传输方式的不同:

  • 在基于内存的传输模型中,命令、响应和数据通过显式的内存读写操作在主机和NVM子系统之间输。
  • 基于消息的传输模型是指在主机和NVM子系统之间发送包含命令胶囊和响应胶囊的消息。
    • 在纯消息传输模型中,数据仅使用胶囊或消息在主机和NVM子系统之间发送。
    • 基于消息/内存的传输模型使用消息和显式内存读写操作的组合来在主机和NVM子系统之间传输命令胶囊、响应胶囊和数据。数据可以选择性地包含在命令胶囊和响应胶囊中

img

NVMe 命令

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

NVMe有两种命令

  • 一种叫Admin Command,用以Host管理和控制SSD;

  • 另外一种就是

    I/O Command

    ,用以Host和SSD之间数据的传输。

    • namespace 命名空间是主机可以访问的一组格式化的非易失性内存。与每个命名空间相关联的是在该命名空间上操作的I/O命令集。一个NVM Express控制器可以支持使用命名空间ID引用多个命名空间。

在NVMe 2.0规范中命令集分为了三种:

NVMe 2.0 规范

  • Fabrics Command:fabric命令集命令用于特定于NVMe over fabric的操作,包括建立连接、NVMe带内认证、获取或设置属性。

NVMe 命令的发送

Host又是怎么把这些命令发送给SSD执行呢?

NVMe协议中的三种队列:Submission Queue (SQ),Completion Queue(CQ)和Doorbell Register (DB)

SQ和CQ位于Host的内存中,DB则位于SSD的控制器内部。

SSD作为一个PCIe Endpoint通过PCIe连着Root Complex (RC), 然后RC连接着CPU和内存

NVMe 命令的处理

img

说,NVMe处理命令需要几步?答:八步:

第一步:Host写命令到SQ;

第二步:Host写DB,通知SSD取指;

第三步:SSD收到通知,于是从SQ中取指;

第四步:SSD执行指令;

第五步:指令执行完成,SSD往CQ中写指令执行结果;

第六步:然后SSD发短信通知Host指令完成;

第七步:收到短信,Host处理CQ,查看指令完成状态;

第八步:Host处理完CQ中的指令执行结果,通过DB回复SSD:指令执行结果已处理,

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:43:44  更:2022-12-25 11:48:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年3日历 -2024/3/28 21:50:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码