nvme协议学习总结

一、nvme命令

1 nvme在pcie基础上的协议,与PCIE配合,实现高效传输。

 2 nvme命令主要分IO命令和admin命令。

3  一个NVME CMD执行流程:

step1:host把cmd写入SQ queue中;

step2:host远端更新Device(SSD)内部的doorbell,更新SQ tail;

step3:SSD检测到doorbell内部变化,去host SQ queue去cmd,取回后,更新SQ head指针;

step4:SSD执行取回的CMD;

step5:SSD把执行结果写入CQ;

step6:SSD使用MSI-X中断通知host;

step7:Host从CQ queue读取Cpl;

step8:Host更新远端的doorbell,即CQ head;

 Host怎么管理head和tail指针:

首先host可以往DB写:SQ tail和CQ head;但是SQ head 和 CQ tail怎么处理呢

首先是SQ head指针,SSD取指令对于host是不可见的,所以当SSD取完指令后,把head信息更新到了CQ head里面,host拿到CQ信息就知道了SQ的head;

至于CQ的tail指针怎么处理呢,CQ命令里面DW3有个P字符,初始化时候设置成0,当CQ填入时候,把该值设置成1,这样当SSD发送CQ到host时候,host可以读取CQ任何信息,保留了上次P状态位置,即旧的tail位置,依次往下检查,得到现在的新的tail位置。

4 PRP和SGL

4.1 理清楚作用,以及两者区别:PRP是描述物理页大小,SGL可以描述任意内存大小;(主机有无划分物理页)

PRP是地址,可以是物理内存地址,也可以是指向PRP的list,具体看PRP个数,因为CMD里面只有PRP0 PRP1两个

SGL注意类型,SGL描述符还是段描述符。

5 PCIE和NVME架构

NVME属于事务层之上的应用,无论什么cmd,都会被封装成TLP包到物理层,发送到对端。

可以参考《深入浅出SSD》,分析一个cmd命令在host到SSD之间的nvme cmd和TLP包的传输过程。

未完待续...(后序继续补充)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

免单优选:创新电商销售模式引领消费新潮流

免单优选电商销售模式,以其独树一帜的策略,在电商领域开辟了新的增长路径。其核心在于通过价格优惠、奖励机制的巧妙设置以及社交网络的深度运用,有效激发了消费者的购买热情,进而推动销售业绩的迅猛提升。 一、合规运营&#xff…

MATLAB 自定义均值滤波 (53)

MATLAB 自定义均值滤波 (53) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 均值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云均值滤波算法,具体效果如下所示: 均值滤波前: 均值滤波后:…

MySQL面试重点

文章目录 1. 阐述MySQL中的死锁2.MySQL中的索引3.MySQL中InnoDB和MyISAM的区别?4.介绍一下事务的四大特性?5.并发事务引发的问题6.事务的隔离级别 1. 阐述MySQL中的死锁 在MySQL中,死锁是指两个或多个事务相互持有对方所需的资源而无法继续执…

Git 核心知识

2024年4月2日更新 Git 安装 官网下载,Git 选择合适的版本,无脑下一步即可。 安装成功之后,鼠标右键任意的文件夹,会出现 Git GUI 的选项,即安装成功 安装注意事项 安装前,检查环境变量 , 如…

基于springboot实现学科竞赛管理系统项目【项目源码+论文说明】

基于springboot实现学科竞赛管理系统演示 摘要 随着国家教育体制的改革,全国各地举办的竞赛活动数目也是逐年增加,面对如此大的数目的竞赛信息,传统竞赛管理方式已经无法满足需求,为了提高效率,竞赛管理系统应运而生。…

【STM32嵌入式系统设计与开发】——16InputCapture(输入捕获应用)

这里写目录标题 STM32资料包: 百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码:8888 一、任务描述二、任务实施1、工程文件夹创建2、函数编辑(1)主函数编辑&#…

STM32 直接修改寄存器来输出内部时钟的方法

1. 在特殊情况下使能 MCO 功能的方法 在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到GPIO 脚位上进行观察和测试。 下面的例子就…

安装pytorch3d 0.3.0遇到各种问题,解决中。。。

整理一天了,还没整好,更新中。。。炸毛了。。。 1.先pip或者conda,找不到,换源也不行,然后转离线下载 2.下载需要的版本的安装包 官网:PyTorch3D A library for deep learning with 3D datahttps://pyto…

【Algorithms 4】算法(第4版)学习笔记 23 - 5.4 正则表达式

文章目录 前言参考目录学习笔记1:正则表达式1.1:表示1.2:快捷表示2:正则表达式与非确定有限状态自动机 REs and NFAs2.1:二元性2.2:模式匹配实现2.3:非确定有限状态自动机 Nondeterministic fin…

【经典算法】LeetCode101:对称二叉树(Java/C/Python3实现含注释说明,Easy)

对称二叉树 题目描述思路及实现方式一:递归(推荐)思路代码实现Java版本C语言版本Python3版本 复杂度分析 方式二:队列(迭代)思路代码实现Java版本C语言版本Python3版本 复杂度分析 总结相似题目 标签&#…

【XR806开发板试用】2、UDP控制的呼吸灯

【XR806开发板试用】1、UDP通信测试 上篇文章测试了XR806的UDP通信. 控制PWM控制相关的函数在device/xradio/xr806/adapter/hals/iot_hardware/wifiiot_lite文件夹下的iot_pwm.c . ├── BUILD.gn ├── iot_flash.c ├── iot_gpio.c ├── iot_i2c.c ├── iot_pwm.c ├…

车载以太网AVB交换机 TSN交换机 时间敏感网络 11口 千兆 SW2000TSN

目录 一、TSN时间敏感交换机概述 二、产品介绍 SW2000M/H TSN 1、产品框架 2、产品特点与参数 产品特点 产品参数 3、配置与使用 4、常用连接方式 4.1 双通道作为监控和数据采集器,采集两个设备间的通信数据(Bypass功能) 4.2 试验搭…

[中级]软考_软件设计_计算机组成与体系结构_05_CISC与RISC

CISC与RISC CISC&RISC的基本概念对比的维度往年真题 CISC&RISC的基本概念 对比的维度 CISC:指令多,使用频率差别大,变长格式,多种寻址方式RISC:指令少,使用频率接近,定长格式,多为寄存器寻址&#…

不锈钢潜水排污泵80WQP40-15-3S

一、产品概述:不锈钢潜水排污泵80WQP40-15-3S是一款专门设计用于污水排放的高性能潜水电泵。该泵采用了高级不锈钢材质,确保了泵体的耐腐蚀性和耐久性,非常适合在恶劣的工作环境中运行。其型号中的“80”指的是泵的出口为80mm,“W…

【竞技宝jjb.lol】LOL:LPL春季常规赛荣誉评选出炉!

北京时间2024年4月3日,英雄联盟LPL2024春季季后赛正在如火如荼的进行之中,常规赛阶段的荣誉评选结果在近日出炉,除三个最佳阵容之外,其中BLG战队的中单选手knight斩获春季赛常规赛MVP,而FPX战队的打野选手milkway则拿到春季赛常规赛的最佳新秀。 春季常规赛最有价值选手:BLG.kn…

Redis 全景图(1)--- 关于 Redis 的6大模块

这是我第一次尝试以长文的形式写一篇 Redis 的总结文章。这篇文章我想写很久了,只是一直碍于我对 Redis 的掌握没有那么的好,因此迟迟未动笔。这几天,我一直在看各种不同类型的 Redis 文章,通过阅读这些文章,引发了我对…

nestjs 全栈进阶--控制器和参数获取

视频教程 06_nest控制器和参数获取1_哔哩哔哩_bilibili nest new argument -p pnpm nest g resource person pnpm start:dev 测试下:http://localhost:3000/person/1 在浏览器中看到图中的内容就是成功了 1. 路由 在Nest.js中,路由是由Controller装…

CTF比赛中JWT漏洞的利用

前言 在最近的ctf比赛中,经常可以碰到一些jwt相关的题目,然后感觉思路挺有意思,拿出来分享一下,后边也总结一下ctf比较常见的集jwt相关题目解题思路 算法混淆漏洞 腾龙杯 web[这又是一个登录页面] 使用zkaq/zkaq登录之后&#…

在编程中使用中文到底该不该??

看到知乎上有个热门问题,为什么很多人反对中文在编程中的使用? 这个问题有几百万的浏览热度,其中排名第一的回答非常简洁,我深以为然: 在国内做开发,用中文写注释、写文档,是非常好的习惯&…

【C+ +初阶】前言篇章---C+ +的广袤

目录 1.C语言到C的过渡 2.C的发展历程 2.1C语言的诞生 2.2 c的历史版本 3.c 的地位 4. c的应用场景 4.1. 操作系统以及大型系统软件开发 所有操作系统几乎都是C/C写的 4.2. 服务器端开发 后台开发: 4.3. 游戏开发 4.4. 嵌入式 4.5. 数字图像处理 4.6. 人工智能 4.7.…