NVMe系统内存结构 - 命令聚合与仲裁

2024-01-19 14:04

本文主要是介绍NVMe系统内存结构 - 命令聚合与仲裁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NVMe系统内存结构 - 命令聚合与仲裁

  • 1 命令聚合
  • 2 命令仲裁
    • 2.1 轮转仲裁(RR)
    • 2.2 具有紧急优先级的加权轮询仲裁(WRR)
    • 2.3 特定于供应商的仲裁

本文属于《 NVMe协议基础系列教程》之一,欢迎查看其它文章。

1 命令聚合

Fused Operations(聚合操作),是指通过“融合”两个更简单的命令,来实现更复杂的命令。

这个功能是可选的,Identify Controller Data Structure表明了对该特性的支持。

在聚合操作中,有以下要求:

  • 这两个命令,应作为一个原子单元按顺序执行;控制器应表现为,在这两个命令之间,没有执行过其他操作。
  • 在这两个命令中遇到错误时,操作结束。如果序列中的第一个命令失败,那么第二个命令将被中止。如果序列中的第二个命令失败,那么第一个命令的完成状态是序列特定的。
  • LBA range,如果使用,应该是相同的两个命令。如果LBA range不匹配,命令应该在Command中以“Invalid Field”的状态终止。
  • 这些命令应该,在同一个Submission Queue中相邻地插入(被聚合的命令,必须相邻)。如果第一个命令,是Submission Queue中的最后一个条目,那么第二个命令应该是Submission Queue中的第一个条目(循环一圈)。Submission Queue Tail doorbell pointer更新,应将两个命令作为一个doorbell更新的一部分。
  • 如果主机希望,中止所融合的操作,则主机应针对每一个命令,分别提交中止(Abort)命令。
  • 控制器为每个命令,发布一个completion queue条目。

命令是否是,聚合操作的一部分,可通过该命令的Dword0的Fused Operation字段(09:08)来指示。
Fused Operation字段,还可以指示,这是操作中的第一个命令,还是第二个命令。

2 命令仲裁

当写Submission Queue Tail Doorbell之后,将Submission Queue Tail Pointer移过相应的Submission Queue entry时,就提交了一个命令。控制器使用特定于供应商的算法,将提交的命令,传输到控制器的本地内存,以供后续处理。

当控制器和命名空间状态,被命令访问或修改时,命令正在被处理(例如,正在访问或修改一个功能设置,或者正在访问或修改一个逻辑块)。当命令的完成消息,被提交到相应的Completion Queue时,表示命令执行完毕。完成后,该命令所做的,所有控制器状态和命名空间状态修改,对随后提交的所有命令,都是全局可见的。

候选命令(candidate command),是控制器认为准备好进行处理的,已提交的命令。控制器从每个Submission Queue的提交命令池中,选择要处理的命令。组成聚合操作的命令,应由控制器按顺序一起处理。控制器可以,以任何顺序选择用于处理的,候选命令。选择处理命令的顺序,并不意味着完成命令的顺序。

仲裁,是用于确定Submission Queue的方法,控制器将从该队列开始处理下一个候选命令。可将一个聚合操作,视为控制器的一个或两个命令。

一旦使用仲裁选择了一个Submission Queue,Arbitration Burst设置决定了,在仲裁再次发生之前,控制器可以从该Submission Queue开始处理的最大命令数。

所有控制器必须支持,轮转命令仲裁机制。控制器可以选择实现,具有紧急优先级的加权轮询和特定于供应商的仲裁机制。

控制器的Capabilities寄存器(CC.AMS)中的Arbitration Mechanism Supported字段,表示控制器支持的可选仲裁机制。

为了有效利用非易失性内存,并行执行来自Submission Queue的多个命令通常是有利的。对于使用紧急优先级加权轮转或轮转仲裁的Submission Queue,主机软件可以配置一个Arbitration Burst设置。

Arbitration Burst设置,表示控制器一次可以从特定的Submission Queue中,启动的命令最大数量。

建议主机软件将Arbitration Burst设置,配置为尽可能接近控制器的推荐值(在Identify Controller Data Structure中的Recommended Arbitration Burst字段中指定),同时考虑任何延迟需求。

何谓仲裁,仲裁就是,控制器以什么策略去选择Submission Queue,并选择该Queue中一定数量命令,以便执行。

2.1 轮转仲裁(RR)

如果选择了轮转仲裁(Round Robin Arbitration)机制,控制器将在所有Submission Queue(包括Admin Submission Queue)之间进行轮转命令仲裁。在这种情况下,所有Submission Queue具有相同的优先级。控制器可以基于Arbitration Burst设置,每轮从每个Submission Queue中,选择多个候选命令进行处理。
在这里插入图片描述
云里雾里,不明所以?没关系,接下来白话。

轮转仲裁机制,是控制器必须实现的。
所谓轮转仲裁,就是轮询,Admin SQ与I/O SQ优先级相同。比如:

  • 控制器,第0次,选择SQ0中的N个命令执行;
  • 控制器,第1次,选择SQ1中的N个命令执行;
  • 控制器,第2次,选择SQ2中的N个命令执行;
  • 控制器,第n次(最后一个),选择SQn中的N个命令执行;
  • 控制器,第n+1次,选择SQ0中的N个命令执行;
  • 依此类推。

2.2 具有紧急优先级的加权轮询仲裁(WRR)

在具有紧急优先级的加权轮询仲裁(Weighted Round Robin with Urgent Priority Class Arbitration)机制中,有3个严格的优先级类和3个加权的轮询优先级。如果Submission Queue A的严格优先级高于Submission Queue B,则Submission Queue A中的所有候选命令,都应在Submission Queue B中的候选命令开始处理之前处理。

  • 严格优先级,最高的类是,Admin类,其中包含了提交给Admin Submission Queue的任何命令。Admin类,比提交到任何其他Submission Queue的命令,具有最高的严格优先级。

  • 严格优先级,次之的类是,Urgent类。任何分配给紧急优先级的I/O Submission Queue,在命令提交到Admin Submission Queue之后,以及在任何命令提交到加权轮播优先级之前,都是服务的。主机软件,在为任何Submission Queue分配紧急优先级时,都应该小心,因为在紧急和非紧急I/O Submission Queue之间没有公平协议,因此有可能使加权循环优先级的I/O Submission Queue失效。

  • 严格优先级,最低的类是,Weighed Round Robin(WRR)类。该类由三个加权轮转优先级(High、Medium、Low)组成,它们使用加权轮转仲裁共享剩余带宽。主机软件通过“Set Features”,来控制高、中、低服务类别的权重。Round robin用于在分配给相同权重的Round robin级别的多个提交队列中进行仲裁。

轮询(RR)用于,对多个分配了相同加权轮询级别的Submission Queues,进行仲裁。
每轮可以从每个Submission Queue开始处理的候选命令数量,是Arbitration Burst设置,或剩余的加权轮询积分,以较小者为准。

在这里插入图片描述
再次,云里雾里,不明所以?没关系,接下来白话。

WRR仲裁机制,是控制器可选实现的,非必须。
在WRR仲裁机制中,定义了3个严格优先级(Strict Priority1~3),和3个加权优先级(High,Medium,Low)。

  • Admin类,优先级最高(Strict Priority 1):

只有Admin SQ具有这一最高优先级。
也就是说,Admin Command必须最先被执行。

  • Urgent类,优先级次之(Strict Priority 2):

一人之下,万人之上,优先级仅次于Admin类。
被赋予Urgent类优先级的I/O SQ,在Admin SQ中命令执行后,紧接着执行。
若存在多个Urgent类I/O SQ时,这些I/O SQ执行轮询仲裁机制。

  • WRR类,优先级最低(Strict Priority 3):

优先级最低,必须等Admin类和Urgent类执行完了,才会执行WRR类。
在本严格优先级下,又划分了三个加权优先级,从高到低为:High > Medium > Low
每个加权优先级内部,多个I/O SQ执行轮询仲裁机制。
用户可以用“Set Feature”命令,控制加权优先级中每个优先级的权重,也即每次执行Command的数目。

2.3 特定于供应商的仲裁

供应商可以选择实现,特定于供应商的仲裁机制,该机制不在NVMe协议规定范围内。
因此,该仲裁机制,也是控制器可选实现的,非必须。

这篇关于NVMe系统内存结构 - 命令聚合与仲裁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/622653

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、