第6章 NVMe 介绍 6.1-6.3

6.1 AHCI 到 NVMe

        AHCI协议。NVMe协议。

        HDD 和早期的 SSD 绝大多数都是使用SATA接口,跑的是AHCI,它是一种系统接口标准。

        后来,AHCI 和 SATA 不能满足高性能和低时延 SSD 的需求,SSD 需要更快、更高效的协议和接口。因此 NVMe 出现了。

        NVMe 出现之前,SSD 绝大多数用的是 AHCI + SATA 的组合。

  1. 什么是NVMe???

  答:NVMe,即Non-Volatile Memory Express,是非易失性存储器标准,是跑在PCIe接口上的协议标准。

  2. NVMe 和 AHCI 相比,它的优势体现在哪里???

  (1)低时延(Latency)

   (2)高性能(Throughput&IOPS)

   (3)低功耗

        NVMe加入了自动功耗状态切换和动态能耗管理功能。第八章具体介绍。

6.2 NVMe 综述

      NVMe是一种主机(Host) SSD 之间通信的协议,它在协议栈中隶属高层。

       NVMe 作为命令层和应用层协议,理论上可以适配在任何接口协议上。但 NVMe 协议的原配是 PCIe,因此,后续章节都是基于NVMe + PCIe。

        NVMe 所制定的任何命令,都交给PCIe去完成。虽然也可以交给别的接口完成,但交给PCIe的性能好。

        NVMe定制了主机和 SSD 之间通信的命令以及命令是如何执行的NVMe有两种命令:一种是Admin命令,用以主机管理和控制 SSD;一种是 I / O 命令,用以主机和 SSD之间数据的传输。

 

命令有了,主机是如何把这些命令发送给 SSD 执行的呢???

答:NVMe有三宝:Submission Queue(SQ)、Completion Queue(CQ)和 Doorbell Register(DB)。SQ 和 CQ 位于主机的内存中,DB 位于 SSD 的控制器内部。

        图中,NVMe子系统一般就是SSD。

即,SQ 是用来放命令的,并通知SSD来取命令;CQ 是命令执行完之后存放命令的执行状态的;DB 是用来通知 SSD 来获取命令并执行的。 

NVMe 是如何处理命令的???

答:一共需要八步。

        第一步:主机写命令到 SQ;

        第二步:主机通过写 SQ 的 Tail DB,通知 SSD 来取命令;

        第三步:SSD 收到命令后,到 SQ 中取命令;

        第四步:SSD 执行指令;

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

        第六步:SSD发中断通知主机指令完成;

        第七步:收到中断,主机处理CQ,查看指令的完成状态;

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

6.3 SQ、CQ 和 DB

      主机往 SQ 中写入命令,SSD 往 CQ 中写入命令完成的结果。SQ 和 CQ 的关系,可以是一对一,也可以是多对一。

SQ 和 CQ 的种类:

(1)Admin 类型。放 Admin 命令,用以主机管理控制 SSD;

(2)IO 类型。放 IO 命令,用以主机和 SSD 之间的数据传输。

IO SQ / CQ 是通过 Admin 命令创建的。

        主机端每个 CPU 核(Core)可以有一个或多个 SQ,但只有一个 CQ。为什么一个CPU核中要分配多个SQ呢?原因如下:

 原因一:性能需求。一个CPU核中有多线程,可以做到一个线程独享一个SQ;

 原因二:QoS,Quality of Service,即服务质量。

可以有一个或多个 SQ,但只有一个 CQ。为什么一个 CPU 核中要分配多个 SQ 呢?

SQ/CQ小结:

DB 小结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20373.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相对绝对定位父元素不设置宽度,根据子元素撑开(white-space: nowrap;)

要做一个如下的弹窗,很简单。但是当要切换成多语言或者数据是动态的话(title可能会很长),那么弹窗固定宽度就不适用了。 有可能会出现下图的情况 也有可能出现下面的情况,文字被换行了(有时候这种情况也是…

Python爬虫实战之原神公告获取

前言 好久不见了吧,博主最近也是成为了准高三,没有太多时间去创作文章了,所以这篇文章很有可能是高考前最后一篇文章了(也不一定😉) 言归正传,本次文章主要讲解如何去爬取原神官网的公告(我不玩原神!&…

Linux 常用命令

认识 Linux 目录结构 Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件 Linux 是一个树形目录结构。Linux 上没有盘符概念,不分 C 盘等,根目录 \ 的地位相当与 Java 的 Object ——几个特殊的目录&…

符号化的正确姿势

GUI方式 将 .ips crash report 文件拖放到 Xcode > Window > Devices and Simulators > View Device Logs中, 然后导出 .crash 符号化文件. 使用条件: crash report 对应的 Archive 包是在本机构建的 symbolicatecrash symbolicatecrash 是一个 exec (可执行文件), …

【深度学习】受限玻尔兹曼机 (RBM) 初学者指南

一、说明 受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是一种基于能量模型的人工神经网络。它只有一个隐层,将输入层和隐层中的每个神经元互相连接,但不同层的神经元之间没有连接。RBM是一种无向的概率图模型&am…

【RocketMQ】005-Docker 部署 RocketMQ

【RocketMQ】005-Docker 部署 RocketMQ 文章目录 【RocketMQ】005-Docker 部署 RocketMQ一、部署1、拉取镜像MQ 镜像可视化平台镜像 2、创建挂载目录创建 nameserver 挂载目录创建 broker 目录创建 broker 配置文件目录 3、编辑配置文件4、启动服务启动 nameserver启动 broker启…

论文笔记--TinyBERT: Distilling BERT for Natural Language Understanding

论文笔记--TinyBERT: Distilling BERT for Natural Language Understanding 1. 文章简介2. 文章概括3 文章重点技术3.1 Transformer Distillation3.2 两阶段蒸馏 4. 数值实验5. 文章亮点5. 原文传送门6. References 1. 文章简介 标题:TinyBERT: Distilling BERT fo…

GPON MAC SFP ONU模块介绍与应用

伴随着网络通讯技术的发展,pon无源光网络正逐步走进人们的视野;在这之前你是否仅知道以太网接入?相比与以太网接入,pon作为一种点到多点网络,具有运维成本低、服务范围广、资源占用少等优势;我们最为熟知的…

FlinkCDC第四部分-同步mysql到mysql,ctrl就完事~(flink版本1.17.1)

本文介绍了不同源单表-单表同步,不同源多表-单表同步。 注:此版本支持火焰图 Flink版本:1.17.1 环境:Linux CentOS 7.0、jdk1.8 基础文件: flink-1.17.1-bin-scala_2.12.tgz、 flink-connector-jdbc-3.0.0-1.16.…

centos7根分区、文件系统扩容

1、 输入lsblk,查看到新硬盘sde,根目录现71G. 2、 创建分区fidisk /dev/sde 3、 刷新分区 partprobe /dev/sde,并创建物理卷 pvcreate /dev/sde1 4、 查看卷组名 vgdisplay 5、 将物理卷扩展到卷组 vgextend centos /dev/sde1 6、 查看逻辑巻…

拉丁语翻译器有哪些?一分钟快速分享

拉丁语翻译器有哪些?拉丁语是一种古老的语言,现在已经不再作为主要的交流工具使用。然而,在某些学术领域和文化传承中,拉丁语仍然具有重要地位。因此,当我们需要翻译拉丁语时,使用翻译器可以提高效率和准确…

立式oled拼接屏有哪些产品优点?

葫芦岛oled拼接屏是一种高清晰度的显示屏,由多个oled屏幕拼接而成。它可以用于广告牌、展览、演示、会议等场合,具有高亮度、高对比度、高色彩饱和度、高刷新率等优点,能够吸引人们的眼球,提高信息传递效果。 葫芦岛oled拼接屏的优…