第6章 NVMe 介绍 6.1-6.3

news2024/11/25 17:18:35

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.coloradmin.cn/o/750528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

webug4.0靶场通关笔记

文章目录 注入显错注入布尔注入延时注入post注入过滤注入宽字节注入xxe注入csv注入万能密码登陆 XSS反射型xss存储型xssDOM型xss过滤xss链接注入 任意文件下载任意文件下载mysql配置文件下载 上传漏洞文件上传(前端拦截)文件上传(解析漏洞)文件上传(畸形文件)文件上传(截断上传…

layui中laydate日期组件闪动打不开问题解决

在laydate.render里配置trigger:click’就可以了(已解决)

路径规划算法:基于人工蜂鸟优化的路径规划算法- 附代码

路径规划算法:基于人工蜂鸟优化的路径规划算法- 附代码 文章目录 路径规划算法:基于人工蜂鸟优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化…

Leetcode-每日一题【83.删除排序链表中的重复元素】

题目 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head [1,1,2]输出:[1,2] 示例 2: 输入:head [1,1,2,3,3]输出&#x…

Docker 安装与基本使用

一、简介 Docker 官方文档、Docker 中文文档,更新会落后于官方文档 什么是 Docker ? Docker 是一个应用打包、分发、部署的工具,也可以把它理解为一个轻量的虚拟机,它只虚拟软件需要的运行环境,多余的一点都不要,而普…

jinkens编译问题

可以看到是NapaMedia 编译有问题 往上面查看 再在gerrit上看提交的这个文件。。打开看下是不是有冲突 果然有冲突 有冲突在gerrit上直接解决冲突 然后保存 updatechanges再publish edit 然后点进编译

Gym - 101652

A - Odd Palindrome 题意&#xff1a;给你一个字符串如果它的所有回文子串长度为奇数&#xff0c;输出Odd.否则输出Or not. 思路&#xff1a;其实只要判断是否有两个相连的字符就可以了 #include <bits/stdc.h> using namespace std; #define pi 3.1415926 #define X f…

STM32初识---概念了解(下)

复位和时钟控制&#xff08;RCC) 系统复位 当发生以下任一事件时&#xff0c;产生一个系统复位&#xff1a; 1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWDG复位) 4. 软件复位(SW复位) 5. 低功耗管理复位 电源复位 当以下事件中…

XML文档详解

目录 XML文档 一、XML文件 二、Dom4J解析XML文件 三、Sax解析XML文件 四、使用Dom4j的XPath解析XML文件 4.1XPath语法 4.2 获取sys-config.xml文件的配置信息 4.3 获取server.xml文件的配置信息 4.4 获取bookstore.xml文件的配置信息 XML文档 一、XML文件 1.1 学习重…

s3fs安装使用

s3fs安装使用 前言 最近在预研将对象存储桶挂载到本地文件系统的需求&#xff0c;查阅了一些相关的资料&#xff0c;找到s3fs-fuse开源组件&#xff0c;可以满足需求&#xff0c;本文主要记录一下s3fs的部署以及使用。 s3fs简介 s3fs 是一个 C 开发的开源工具&#xff0c;可…

Amplify-Shader-Pack下载

ASE相关效果资源https://download.csdn.net/download/mayzhengxi/87915649?spm1001.2014.3001.5503

[linux] ebtables技术

Linux系统中使用ebtables技术 ebtables就是以太网桥防火墙&#xff0c;以太网桥工作在数据链路层&#xff08;MAC层&#xff09;&#xff0c;ebtables主要过滤数据链路层数据包&#xff0c;ebtables能过滤桥接流量。ebtables每个阶段的过滤时机都比iptables早。 ebtables的配置…

centos7.9修改ssh默认的端口号

多开几个ssh&#xff0c;防止配置文件错误&#xff0c;将自己关在服务器外面了 netstat -ntlp|grep ssh # ssh对应的端口号 修改sshd_config配置文件 /etc/ssh/sshd_config&#xff0c;重启sshd服务 #Port 22 Port 10011 # 端口号自己定义&#xff0c;不能超过65535&#xf…

基于Java+Swing+Mysql影院购票系统

基于JavaSwingMysql影院购票系统 一、系统介绍二、功能展示1.用户登陆2.用户订票管理3.电影售票中心4.电影上映管理4.退票记录查询 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看管理员登陆、用户订票管理、电影上映管理、电影售票中心、退票记录查询…

重定义/自定义printf到串口输出实现的三种方法(cubeide)

重定义/自定义printf到串口输出实现的三种方法&#xff08;cubeide) 文章目录 重定义/自定义printf到串口输出实现的三种方法&#xff08;cubeide)1.重写_write函数2.重定义PUTCHAR_PROTOTYPE宏3.va_list自定义printf总结&#xff1a; 1.重写_write函数 注释掉syscalls.c文件中…

Java中Map使用增强for循环和迭代器获取key和value

加油&#xff0c;新时代打工人&#xff01; java中List集合三种获取集合元素方式 本文运行代码使用 jdk1.8 for 语句比较简单&#xff0c;用于循环数据。 Java迭代器&#xff08;Iterator&#xff09;是 Java 集合框架中的一种机制&#xff0c;是一种用于遍历集合&#xff08…

非线程安全问题

目录 实例变量共享导致的“非线程安全问题” 如何解决这个问题&#xff1f; i--与System.out.println()出现引起的“非线程安全问题” 非线程安全主要是指多个线程对同一个对象中的同一个实例变量进行操作时会出现值被更改、值不同步的情况&#xff0c;进而影响程序的执行流…

科目一速通技巧笔记,简记

常规 累计积分制度&#xff08;12满&#xff09;周期12月 虚假材料1年&#xff0c;假1吊二撤三醉五逃终身 假1500 骗三2k以下 初次领证1年实习期、实习标志&#xff0c;18~70岁 拼装车、报废车&#xff0c;吊销 200~2k 没有中心线&#xff08;一条路&#xff09;城市道路3…

路径规划算法:基于白鲸优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于白鲸优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于白鲸优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法白鲸…

Python、STK、MATLAB的连接和使用

写在前面 预备知识&#xff1a; Python通过命令行调用MATLAB的简单实现。这篇文章讲明了如何使用 Python 调用 MATLAB 的原理和过程&#xff0c;并给出相应代码。 STK、MATLAB、SQL的连接和使用。这篇文章讲明了STK 11.2、MATLAB 2014a、SQL 2019的安装过程&#xff0c;以及…