深度解读NVMe计算存储协议-3

news2024/11/27 4:29:09

在NVMe计算存储架构中,Copy命令用于在不同类型的命名空间之间进行数据复制

  • Memory Copy命令:定义于SLM(Subsystem Local Memory)命令集,主要用于从非易失性存储命名空间(NVM namespaces)或内存命名空间向另一个内存命名空间复制数据。这个命令执行时,如果复制的源是NVM命名空间,那么需要将数据按照逻辑块地址(LBA)大小的粒度进行转换,并且支持从块到字节级别的转换操作;当复制发生在两个内存命名空间之间时,其总长度必须遵循双字(dword)的粒度要求。

  • NVM Copy命令:定义在传统的NVM命令集中,该命令允许从内存命名空间或非易失性存储命名空间向一个非易失性存储命名空间进行复制。同样,当复制至NVM命名空间时,不论源是NVM还是内存命名空间,都需要将数据从字节级别转换成基于LBA粒度的块级别表示。在这个过程中,复制的总长度也必须严格遵守LBA大小的对齐要求。

Memory Range Set(MRS)在NVMe计算存储架构中是一个重要的安全和管理工具,它用于定义和控制对Subsystem Local Memory(SLM)内部特定区域的访问权限。以下是关于MRS的关键解读:

图片

  • 描述SLM内存范围:MRS用来描述一个或多个SLM内存区域的范围。这些范围可以是连续或非连续的内存块。

  • 由内存范围组成:每个MRS由一系列具体的内存范围构成,每一个范围都有明确的边界。

  • 范围指定方式:每个内存范围通过三个关键参数来唯一确定:内存命名空间ID(Namespace ID)、偏移量(offset)以及长度(length)。这意味着对于子系统内的任意一块SLM内存,可以通过这些参数准确地指定其起始地址和结束地址。

  • 可达性限制:每一个范围所指向的内存命名空间必须是可以被计算命名空间访问到的。也就是说,只有当计算程序运行于特定的计算命名空间时,才能访问该命名空间关联的MRS中定义的SLM内存部分。

  • 与计算命名空间相关联:MRS是在特定的计算命名空间内创建的,它的作用域限定了该计算命名空间内的程序可以访问哪些SLM区域。

  • 访问权限限制功能MRS的主要目的是为了限制执行中的程序只能访问SLM的特定子集。这样一来,每个程序执行时都会受限于“Execute Program”命令中指定的MRS设定,无法触及MRS之外的任何SLM资源,从而增强了数据安全性,并优化了资源使用效率。

Memory Range Set作为一种策略性的访问控制机制,在NVMe计算存储体系中扮演着至关重要的角色,通过对子系统本地内存进行精细化管理和权限划分,确保了程序只能按照预设规则访问所需的内存区域,避免了无授权访问或其他可能的安全风险。

  1. NVM 命名空间:NVM(Non-Volatile Memory)命名空间是传统意义上的NVMe标准中的核心部分,用于管理和访问非易失性存储介质,比如固态硬盘(SSD)上的闪存存储区域。

为了解决管理不同命名空间之间的访问关系与兼容性,NVME协议定义了Reachability新功能,这项特性允许用户指定在特定命令中哪些命名空间可以协同使用,并确保数据操作的正确性和有效性。具体来说:

  1. 描述符定义:Reachability特性通过定义新的描述符来说明哪些命名空间可以在同一个命令中结合使用。例如,在执行复制命令时,能够明确指出哪些NVM或内存命名空间可以作为源或目标;或者在向计算命名空间发送命令时,确定可以使用的内存命名空间范围。

  2. 机制实现:为了实施这一功能,规范中引入了两个日志页:

    • 可达性组(RG, Reachability Groups)日志页:记录了一组相关的命名空间集合,它们在某种意义上是可以一起使用的。

    • 可达性关联(RA, Reachability Association)日志页:详细列出了各个可达性关联的特点,包括每个关联内的命名空间之间何种类型的交互是被允许的、受限的或是禁止的。在NVMe计算存储架构中,Reachability Associations(RA)是一个用于描述命名空间间交互限制和允许范围的机制。

图片

如示意图举例:

A. RA-A表示NVM命名空间NS 30或NS 31可以与内存命名空间NS 10之间进行数据复制:这意味着在执行Copy命令时,可以从NVM命名空间NS 30或NS 31中复制数据至内存命名空间NS 10。

B. RA-B表明NVM命名空间NS 30或NS 31同样能够与内存命名空间NS 12进行数据复制:与A类似,只是目标内存命名空间换成了NS 12。

C. RA-C指出计算命名空间NS 20有权访问并使用内存命名空间NS 10中的内存资源:这意味着运行于计算命名空间NS 20的程序可以在执行过程中读取、写入或处理NS 10中的数据。

D. RA-D意味着计算命名空间NS 22和NS 23都能够使用内存命名空间NS 12内的内存:这类似于RA-C,但针对的是不同的计算命名空间和内存命名空间组合,NS 22和NS 23均能利用NS 12作为工作内存进行运算。

此外,需要注意:

  • 记忆体命名空间NS 10与NS 12之间不能进行复制命令操作:这意味着主机或计算程序无法通过Copy命令将数据从内存命名空间NS 10直接复制到NS 12,或者反过来操作也不允许。

  • 计算命名空间NS 22和NS 23之间不能通信:说明这两个计算命名空间被设计为相互独立,它们之间不允许交换数据或执行任何形式的协同处理任务

在NVMe计算存储子系统中,执行一个过滤加密数据的流程涉及以下几个关键步骤。整个流程展示了NVMe如何支持本地化计算与存储结合,即在存储设备内部直接对加密数据进行处理,从而降低对外部系统的依赖并提高数据处理效率。同时,通过内存范围集的控制机制,确保了程序仅能访问授权的特定数据部分,增强了安全性。

图片

预条件:首先,在开始处理之前,需要创建两个内存范围集(Memory Range Set, MRS)——MRS1和MRS2。这些范围集定义了程序可以访问的Subsystem Local Memory (SLM) 中特定的数据区域。

复制加密数据到SLM A:使用预先定义好的MRS1指定的SLM地址范围,将待处理的加密数据从主机或其他命名空间复制至SLM的一个区域A。

执行程序1以解密或过滤数据:在某个计算命名空间上运行程序1,并且在执行时限制其只能访问通过MRS1定义的SLM区域A中的数据。这个程序可能是用于解密或者进行某种特定数据过滤操作。

执行程序0继续处理数据:接下来,在同一个或不同的计算命名空间上执行另一个程序0,同样利用MRS2定义的SLM区域B来读取并进一步处理之前解密或过滤后的数据。

从SLM读取过滤后的数据到主机:最后一步是从SLM区域B中读取经过程序0处理过的、最终过滤后的数据,并将其传输回主机内存中供后续使用或存储。

NVMe计算存储技术引入的计算程序具备高度灵活性和自定义能力,使得存储子系统能够根据实际需求扩展其功能,同时在本地高效处理数据,降低对主机CPU和带宽的依赖,提升了整体系统的性能和响应速度。


参考文献:

1.FMS-2023-Computational-Storage-Subsystem-Local-Memory

2.NVMe官网:https://nvmexpress.org/

小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 对于超低延迟SSD,IO调度器已经过时了吗?

  • 浅析CXL P2P DMA加速数据传输的原理

  • HDD回暖于2024,与SSD决战于2028

  • 如何解决NAND系统性能问题?

  • 浅析NVMe key per IO加密技术

  • PCIe 6.0生态业内进展分析总结

  • 浅析PCIe 6.0功能更新与实现的挑战

  • 年度总结|存储随笔2023年度最受欢迎文章榜单TOP15

  • NVMe SSD IO压力导致宕机案例解读

  • 过度加大SSD内部并发何尝不是一种伤害

  • NVMe over CXL技术如何加速Host与SSD数据传输?

  • FIO测试参数与linux内核IO栈的关联分析

  • 为什么QLC NAND才是ZNS SSD最大的赢家?

  • SSD在AI发展中的关键作用:从高速缓存到数据湖

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • SSD数据在写入NAND之前为何要随机化?

  • 深度剖析:DMA对PCIe数据传输性能的影响

  • NAND Vpass对读干扰和IO性能有什么影响?

  • HDD与QLC SSD深度对比:功耗与存储密度的终极较量

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 浅析Relaxed Ordering对PCIe系统稳定性的影响

  • 实战篇|浅析MPS对PCIe系统稳定性的影响

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

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

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

相关文章

回归预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机多变量回归预测

回归预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机多变量回归预测 目录 回归预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向…

三款精选数字孪生产品大比拼

作为一名数据可视化领域的资深用户,我接触过众多数据可视化产品。本文将介绍三款备受关注的数据可视化工具,并对它们进行详细的比较。 首先,让我们了解一下数据可视化产品的核心价值。在信息爆炸的时代,数据可视化成为快速理解复…

09-信息收集-APP及其他资产等

信息收集-APP及其他资产等 信息收集-APP及其他资产等一、APP提取季抓包及后续配合1、某APK一键提取反编译2、利用bp抓取更多URL 二、某IP无web框架下的第三方测试1、各种端口一顿乱扫 —— 思路2、各种接口一顿乱扫 —— 思路3、接口部分一顿测试 —— 思路 三、**案例演示**1、…

华为1.24秋招笔试题

华为1.24秋招笔试题 1.题目1 题目详情 - 2024.1.24-华为秋招笔试-第一题-计算积分 - CodeFun2000 1.1题解 import java.util.Scanner;class Main{public static void main(String[] args){Scanner scnew Scanner(System.in);String ssc.next();char[] chs.toCharArray();in…

Go 中 struct tag 如何用?基于它实现字段级别的访问控制

嗨,大家好!本文是系列文章 Go 小技巧第十篇,系列文章查看:Go 语言小技巧。 在 Go 中,结构体主要是用于定义复杂数据类型。而 struct tag 则是附加在 struct 字段后的字符串,提供了一种方式来存储关于字段的…

linux服务器上安装mysql

今天在华为云上安装mysql,安装命令很简单,就一行命令:sudo apt-get update && sudo apt-get install mysql-server 我安装的是mysql8.0版本,这里主要说一下安装mysql后怎么在外网连接: 1、注释掉 bind-add…

CoroNa Green acetoxymethyl (AM) ester,具有良好的细胞膜穿透能力

CoroNa Green, AM, Cell Permeant,CoroNa Green acetoxymethyl (AM) ester,CoroNa Green, AM,Sodium indicator 钠离子指示剂(荧光探针),具有良好的细胞膜穿透能力,能够检测到细胞内钠离子的微小…

Redis(二)(实战篇)

查漏补缺 1.线程池 概述 : 提到池,大家应该能想到的就是水池。水池就是一个容器,在该容器中存储了很多的水。那么什么是线程池呢?线程池也是可以看做成一个池子,在该池子中存储很多个线程。 线程池存在的意义: 系…

go并发编程-介绍与Goroutine使用

1. 并发介绍 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中的多个…

排序之计数排序

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

Java基础 集合(一)Collection与Iterator Iterable迭代器详解以及集合在for循环下如何删除

目录 简介 Iterator和Iterable for循环删除问题 for-each下删除数据 解决方法 for下删除数据 解决方法 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的…

非鸿蒙官方低代码源码生成器

介绍 鸿蒙低代码可视化开发神器快速对鸿蒙ArkUI生成源码,结合类似小程序类似设计,页面设计底部菜单,支持宫格组件、轮播图、图文列表、图片组件、文本内容组件,快速对接第三方HttpApi。通过鸿蒙扩展axios扩展库加载数据源&#x…

众星素颜出镜影协大会,真实状态引发热议,陈道明备受赞誉。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 岁末之际,电影家协会盛大集结,众星璀璨…

[JAVA数据结构] 二叉树 - 详解

目录 (一) 树形结构 1. 树的概念与结构 2. 树的表示形式 (二) 二叉树 1. 二叉树的概念 2. 两种特殊的二叉树 3. 二叉树的性质 4. 二叉树的存储 5. 二叉树的遍历 (1) 前序遍历 (2)中序遍历 (3)后序遍历 6. 二叉树的基本操作 - 模拟实现 (一) 树形结构 1. 树的概念与…

机器学习算法决策树

决策树的介绍 决策树是一种常见的分类模型,在金融风控、医疗辅助诊断等诸多行业具有较为广泛的应用。决策树的核心思想是基于树结构对数据进行划分,这种思想是人类处理问题时的本能方法。例如在婚恋市场中,女方通常会先询问男方是否有房产&a…

c/c++静态字符串的基本操作

文章目录 1.串的定义2. 赋值操作3.字符串复制操作4.判断空5.比较操作6.求串的长度7.打印全部元素8.求字串9.串拼接10.清空操作11.源代码 在本篇博客中,定义的字符串为索引1为起始下标。 1.串的定义 #define MAXLEN 255 //预定义最大串长255 typedef struct {char …

从[redis:LinkedList]中学习链表

文章目录 adlistlistNodelistmacros[宏定义]listCreatelistInitNodelistEmptylistReleaselistAddNodeHeadlistLinkNodeHeadlistAddNodeTaillistLinkNodeTaillistInsertNodelistDelNodelistUlinkNodelistIndexredis3.2.100quicklistredis7.2.2quicklist redis的基本数据类型之一…

【代码随想录】LC 77. 组合

文章目录 前言一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、代码详解 前言 本专栏文章为《代码随想录》书籍的刷题题解以及读书笔记,如有侵权,立即删除。 一、题目 1、原题链接 77. 组合 2、题目描述 二、解题报告 1、思路分析 &#x…

C++类和对象(中)六个默认成员函数

🌈类的六个默认成员函数 任何一个类,不管是否为空,都会在生成的时候默认调用六个成员函数,这些成员函数可以自动生成,也可以由程序员写出。这六个默认成员函数分别是: 最主要的是前四个: 初始…

2-树-恢复二叉搜索树

这是树的第二篇算法,力扣链接。 给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。 示例 1: 输入:root [1,3,null,null,2] 输出:[3,1,null,…