PRP和SGL 你了解吗?

一直想总结一下,PRP和SGL,网上也有不少资料,nvme官方spec只用了六七页解释了这俩货,还把寄存器如何操作也说明白了,作总结的目的是让自己对其更加深入了解

首先,SSD是用来保存数据,不是读就是写,即data从host流向SSD,或者从SSD到host中去。对于写来说,需要告诉SSD,写什么数据,写多少,数据在host哪个位置,对于读来说,同样,需要告诉SSD,需要什么数据,需要多少,需要把他放在host哪个位置。从上面读写的简单流程来说,我们应该会注意到都需要host那边有一块位置放数据,host不会主动把数据送给SSD,而是需要SSD主动去获取数据,或者写入数据,那么,host就需要一种方法,告诉SSD这些数据的地址,总共有两种方法,一种是PRP(Physical Region Page),另一种是SGL(Scatter Gather List)。

Physical Region Page Entry and List

首先来介绍一下PRP,nvme会把host的内存划分为页,每个页可以是4KB,8KB等,一般而言,一个页为4KB对齐的页,接下来看看PRP长什么样

001.png

其实PRP就是一个占用8个Byte的64位的内存物理地址,只不过把他分成了两部分,一个页基地址,和偏移。值得注意的是offset最后两位必须为0,因为要4Byte对齐

002.png

PRP Entry 描述的是一个物理内存的地址,PRP List就是多个PRP Entry组合起来的,其PRP的内存地址可以是连续的也可以是不连续的

003.png

对于PRP1和PRP2来说,它可以是个数据地址,也可以是PRP List 地址,不管是什么SSD总会解析出它是什么。下面给一个示例,
004.png

相信上图把PRP List解释的比较清楚了,就是PRP1中的地址是PRP List地址,然后从PRP List中再获取数据地址,如果疑问如何判断PRP1是数据地址还是PRP List地址,我们可以通过PRP Entry数量来判断,一般来说超过2个PRP Entry就需要使用PRP List。

Scatter Gather List

接下来讲讲SGL,对于SGL来说,相比PRP裸着的结构,SGL是一种数据结构,用来描述一段空间。我们首先明确一点SGL是一个链表,一个链表中结构是SGL Segment,每个Segment中又由多个SGL Descriptor组成,SGL Descriptor是最基本的一个单元,它占用16Byte,并且会有几种类型,Data Descriptor,Segment Descriptor,Last Descriptor等。
005.png

下图是Descriptor的定义,具体类型可以查看nvme spec。
006.png

在nvme spec中,给了一个样例可以很清晰的描述SGL的概念,
007.png

如果看着比较繁琐,那么看下图
008.png

对于SGL来说,相比PRP它的每块数据可以有不同的大小,PRP即是固定的大小,一个PRP为4KB或者8KB,SGL可以是1KB,2Kb,16KB等。

一般来说,如果当前读写命令的数据大小超过32KB,即选择SGL,小于32Kb就是PRP。

对于SSD来说,如何区分当前IO指令是SGL还是PRP,在nvme command中DW0[15:14],这个位置确定是什么,0即为PRP,1为SGL。
009.png

下班,哪有什么总结,就俩概念!

原文链接:PRP和SGL 你了解吗?

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

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

相关文章

JavaWeb6 Tomcat+postman请求、响应

Web服务器 对HTTP协议操作进行封装,简化web程序开发 部署web项目,对外提供网上信息浏览服务 Tomcat 轻量级web服务器,支持servlet,jsp等少量javaEE规范 也被称为web容器,servlet容器 Springboot有内置Tomcat nginx…

制造业泄密如何防范?应用迅软DSE加密软件能解决哪些问题?

项目背景 某公司电子技术产品广泛应用于航天、航空、航海、遥测、导航、雷达、电子对抗、通信等高端领域。内部会有各种各样的研发核心数据流转在不同的岗位之间,这些核心数据一旦出现信息泄密或篡改数据的情况,将会给企业带来不可估量的经济损失&#…

cloudflare worker访问自己的网站显示521问题解决

写在前面:如果你的网站不是在80端口上运行的,开一下80端口可能就行了… 1.在cloudlare上添加域名 前文搭建了自己的DNS服务器(DNS服务器搭建),现在想通过自己的DNS服务器解析域名,需要四步: 添…

wordpress网站建设详细过程

WordPress网站建设的详细过程可以分为以下几个步骤: 注册域名和选择主机: 首先,你需要注册一个域名。可以通过各种域名注册商进行注册,如国内的有,阿里云,腾讯云、百度去、国外的有,GoDaddy、…

基于FreeRTOS+STM32CubeMX+LCD1602+MCP6S21(SPI接口)的单通道模拟可编程增益放大器Proteus仿真

一、简介: MCP6S21是单通道模拟可 编程增益放大器(Programmable Gain Amplifiers, PGA)。它们可配置为输出 +1 V/V 到 +32 V/V 之间的增 益。串行接口也可以将 PGA 置为关断模式,以降低 功耗。这些 PGA 针对高速度、低失调电压和单电源操 作进行了优化,具有轨到轨输入和输…

linux开发常用命令

首先,需要纠正一下问题中的拼写错误,应该是“Linux”,而不是“liniux”。 Linux是一种免费使用和自由传播的类UNIX操作系统。以下是对Linux的详细介绍: 一、Linux的起源和发展 Linux最初由林纳斯本纳第克特托瓦兹(L…

力扣LCP 08.剧情触发时间

力扣LCP 08.剧情触发时间 前缀和 二分 对increase求前缀和 在前缀和数组上做二分 找到符合要求的最小时间 class Solution {public:vector<int> getTriggerTime(vector<vector<int>>& increase, vector<vector<int>>& requirements)…

使用ZIP包安装MySQL及配置教程

在本教程中&#xff0c;我们将指导您完成使用ZIP包安装MySQL的过程&#xff0c;并对配置文件进行必要的修改&#xff0c;以及解决可能遇到的问题。本示例以MySQL 5.7.44为例&#xff0c;但步骤同样适用于其他版本如MySQL 8.3.0等。请根据实际需要选择适合的版本下载&#xff1a…

Vue 2

1. 基本语法 1.0 基本模版 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-C…

Python Flask 使用SQLAlchemy实现ORM管理

Python基础学习: Pyhton 语法基础Python 变量Python控制流Python 函数与类Python Exception处理Python 文件操作Python 日期与时间Python Socket的使用

RestTemplate的异常重试机制

一、添加Spring Retry依赖 如果你使用Maven&#xff0c;可以在pom.xml中添加以下依赖&#xff1a; <dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId><version>2.0.2</version> &l…

【Nginx系列】分发算法

文章目录 一、分发算法介绍二、nginx集群默认算法三、nginx业务服务器状态四、nginx集群默认算法测试实验环境实验拓扑4.1、轮询算法4.2、基于权重4.3、基于ip_hash分发4.4、基于url的hash &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f388;欢迎踏入我的博客世界…

【启明智显方案分享】ESP32-S3与GPT AI融合的智能问答嵌入式设备应用解决方案

一、引言 随着物联网&#xff08;IoT&#xff09;和人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;嵌入式设备正逐渐变得智能化。本解决方案是启明智显通过结合ESP32-S3的低功耗、高性能特性和GPT&#xff08;Generative Pre-trained Transformer&#xff09;…

快手AI算法岗,50W年包羡慕到流泪

今天在脉脉上看到一个应届毕业生offer选择的帖子&#xff0c;简直羡慕到流泪。 刚毕业就拿到了两大公司的AI算法岗的offer&#xff0c;而且薪资待遇都非常不错&#xff0c;只能说&#xff1a;优秀的人到哪里都是榜样。 先看下这两个offer。 第一个是中信银行的AI算法。 年包…

改进YOLOv8 | 主干网络篇 | YOLOv8 更换主干网络之 StarNet | 《重写星辰⭐》

本改进已集成到 YOLOv8-Magic 框架。 论文地址:https://arxiv.org/abs/2403.19967 论文代码:https://github.com/ma-xu/Rewrite-the-Stars 最近的研究引起了人们对“星形运算”(按元素乘法)在网络设计中未被充分利用的潜力的关注。虽然直观的解释很多,但其应用的基本原理…

网络的下一次迭代:AVS 将为 Web2 带去 Web3 的信任机制

撰文&#xff1a;Sumanth Neppalli&#xff0c;Polygon Ventures 编译&#xff1a;Yangz&#xff0c;Techub News 本文来源香港Web3媒体&#xff1a;Techub News AVS &#xff08;主动验证服务&#xff09;将 Web2 的规模与 Web3 的信任机制相融合&#xff0c;开启了网络的下…

OpenCV 的模板匹配

OpenCV中的模板匹配 模板匹配&#xff08;Template Matching&#xff09;是计算机视觉中的一种技术&#xff0c;用于在大图像中找到与小图像&#xff08;模板&#xff09;相匹配的部分。OpenCV提供了多种模板匹配的方法&#xff0c;主要包括基于相关性和基于平方差的匹配方法。…

前端数据模拟Mock.js

新建mock-demo的项目&#xff0c;安装npm install mockjs 新建index.js //引入mockjs import Mock from mockjs //设置延迟时间 // Mock.setup({ // timeout:4000 // }) //使用mockjs模拟数据 Mock.mock(/product/search,{"ret":0,"data":{"mtim…

动手学深度学习33 单机多卡并行

单机多卡并行 更多的芯片 https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_2.pdf 多GPU训练 https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_3.pdf 当transformer模型很大&#xff0c;有100GB的时候只能用模型并行。 数据并行&#xff0c;拿的参数是完整的&#xff1f…

JavaWeb5 SpringBoot+HTTP协议

Spring Spring Boot 非常快速构建应用程序&#xff0c;简化开发 &#xff08;1&#xff09;创建Springboot工程&#xff0c;勾选web开发依赖 创建好的目录&#xff0c;并将没用多余的删掉了 &#xff08;2&#xff09;定义请求处理类&#xff0c;并添加方法 创建请求处理类…