《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(6.15)-- 写命令
6.15 Write command 写命令
写命令写数据和元数据,如果适用介质,发到逻辑块相应的I/O controller。主机也可以指定保护信息,作为操作的一部分包含进来。
命令用Command Dword 10,Command Dword 11,Command Dword 12,Command Dword 13,Command Dword 14,和Command Dword 15区域。如果命令使用PRPs传输数据,那么元数据指针,PRP Entry 1,和PRP Entry 2 域就被使用。【注:NVMe over Fabrics不使用PRP】。如果命令使用SGLs传输数据,那么元数据SGL Segment Pointer和SGL Entry 1域就被使用。

【为帮助直观理解,下图参照linux-5.2.9代码定义,黄色线框内,右侧是把Command Dword10~15定义成了相应内容字段】

Command Dword10~11这64位作为一个变量,其数值表示SLBA逻辑块地址起始位置(表示从0开始的第几个逻辑块)。
Command Dword12被分成两部分:
(1)前16位作为一个 变量,其数值表示逻辑块的数(Number of Logical Blocks),注意:这个数值是基于0开始的,即nvme_rw_command.length值为0时表示写一个逻辑块,值为自然数n时表示写n+1个逻辑块。
(2)后16位表示控制信息,依次分别为:4bit保留,4bit表示Directive Type(DTYPE),2bit保留,4bit表示Protection Information Field(PRINFO),1bit表示Force Unit Access(FUA),1bit表示Limited Retry(LR)。
Command Dword13用于DataSet管理
Command Dword14表示Inital Logical Block Reference Tag(ILBRT),此域字段仅用于格式化为端到端保护的namespace的情况。
Command Dword15仅用于端到端保护的情况,此Dword分为两部分:
(1)前16位表示Logical Block Application Tag(LBAT)。
(2)后16位表示Logical Block Application Tag Mask(LBATM)。






6.15.1 命令完成Command Completion
当命令完成不论成功还是失败,controller都应该发送一个表明命令状态的CQE到关联的I/O CQ完成队列。
写命令特定的错误定义在Figure 406中。

------------------------------------------------------------
【实验】
1、把test.log文件中的内容写入/nvme0n1盘中,参数-d表示指定data file,-z 10表示指定写入的字节数;
2、写成功后,再读出来,-z 10指定读10个字节。

3、实验时用的nvme over tcp,可以用wireshark查看命令内容,有下图可以看出,虽然-z指定了写10个字节,内容是HelloWorld,但还是向namespace1的逻辑块1写入了512字节。

4、读命令

《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(6.15)-- 写命令的更多相关文章
- 2019/1/10 redis学习笔记(二)
本文不涉及集群搭建操作 关于在lua脚本中操作redis的应用场景 大家都知道redis对于单个集合的操作是原子性的;但是有可能有一种场景是这样.比如说抢红包,现在有十个人抢五份红包,抽象到我们jav ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- Python学习笔记(15)- os\os.path 操作文件
程序1 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: import os def countfile(path): dict1 = {} # 定义一个字典 all_files = ...
- matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色
一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...
- matlab学习笔记8 基本绘图命令-三维绘图
一起来学matlab-matlab学习笔记8 基本绘图命令_6 三维绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...
- matlab学习笔记8 基本绘图命令-LineSpec线条设定
一起来学matlab-matlab学习笔记8 基本绘图命令_4 LineSpec线条设定 觉得有用的话,欢迎一起讨论相互学习~Follow Me 绘图函数接受线条设定作为参数并相应地修改生成的图形.您 ...
- matlab学习笔记8 基本绘图命令-特殊图形绘制
一起来学matlab-matlab学习笔记8 基本绘图命令_3 特殊图形绘制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- Hadoop源码学习笔记(6)——从ls命令一路解剖
Hadoop源码学习笔记(6) ——从ls命令一路解剖 Hadoop几个模块的程序我们大致有了点了解,现在我们得细看一下这个程序是如何处理命令的. 我们就从原头开始,然后一步步追查. 我们先选中ls命 ...
- docker学习笔记二:常用命令
docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...
随机推荐
- 【mysql】索引相关的个人总结
重点参考: MySQL索引原理及慢查询优化 (美团技术分享网站):原理.示例优化都写的很好. 索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!:原理写的很好. [从入门到入土]令人脱发 ...
- 基于JavaSwing开发银行信用卡管理系统
开发环境: Windows操作系统开发工具: MyEclipse10/Eclipse+Jdk+Mysql数据库 运行效果图 源码及原文链接:https://javadao.xyz/forum.php? ...
- 算法训练 最大获利 注意数据规模(long long)
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Chakra是一位年轻有为的企业家,最近他在进军餐饮行业.他在各地开拓市场,共买下了N个饭店.在初期的市场调研中,他将一天划分为M ...
- ArcGIS Runtime SDK for Android 加载shp数据,中文乱码问题
针对ArcGIS10.2版本的解决办法(默认中文编码为OEM): 现有一个图层名称为“图层.shp”,以此为例: 1.拷贝一个cpg文件,修改名称为“图层.cpg”,并用文本打开cpg文件修改编码为“ ...
- 一个C语言程序是由( )组成?
A) 一个主程序和若干子程序组成 B)一个或多个函数组成 C) 若干过程组成 D) 若干子程序组成 正确答案 B 解析 [解析] 一个C源程序是由一个main函数和若干个其他函数组成的.函数是C程序的 ...
- 数据库->神奇的concat_ws函数
神奇的concat_ws函数 了解到concat_ws函数起因是因为:朋友给我发了一份面试题,其中有一句看似很简单的查询,但是我就是没做出来.如下图: 经查阅资料了解通过两个字段拼接并且用“_”进 ...
- Can you answer these queries? HDU - 4027 有点坑
#include<iostream> #include<cstring> #include<cstdio> #include<math.h> #incl ...
- 通过sd文件发布的FeatureAccess服务不能查看到图层
发布服务有两种方法, 1. 用ArcMap --Share As - service --publish a service 此方法可以直接将地图数据发布到ArcGIS Server 的地图服务中, ...
- 开发FTP服务接口,对外提供接口服务
注意:本文只适合小文本文件的上传下载,因为post请求是有大小限制的.默认大小是2m,虽然具体数值可以调节,但不适合做大文件的传输 最近公司有这么个需求:以后所有的项目开发中需要使用ftp服务器的地方 ...
- Uva1639(概率期望/对数处理避免丢失精度)
Uva1639 题意: 有两个盒子各有n个糖果(n<=200000),每天随机选择一个:选第一个盒子的概率是p(0 ≤ p ≤ 1),第二个盒子的概率为1-p,然后吃掉其中的一颗.直到有一天,随 ...