IEEE SGL与NVMe SGL的区别?

news/2025/2/14 7:01:30/

在HBA(Host Bus Adapter)驱动程序中,IEEE SGL(Institute of Electrical and Electronics Engineers Scatter-Gather List)和NVMe SGL(Non-Volatile Memory Express Scatter-Gather List)是两种不同的数据传输机制,它们均用于描述主机内存中分散的物理内存区域,以便在一次I/O操作中传输多个不连续的数据块。虽然它们的基本作用相似,但在原理和应用场景上有所区别:

IEEE SGL

  • 原理:IEEE SGL通常是指在PCIe(Peripheral Component Interconnect Express)体系结构中使用的一种数据传输技术,用于传统SCSI(Small Computer System Interface)或者其他存储设备。SGL由一系列描述符组成,每个描述符包含了内存区域的起始物理地址和长度信息,使得控制器可以访问非连续的内存区域。
  • 应用场景:IEEE SGL广泛应用在各种支持scatter/gather功能的存储控制器上,例如某些HBA卡在处理SCSI、ATA、SAS等接口的硬盘I/O时,尤其是在处理大数据块传输、文件系统或数据库操作时,可以大大提高效率。

NVMe SGL

  • 原理:NVMe SGL是NVMe协议专门针对非易失性内存设备(如NVMe SSD)定义的一种更为优化的数据传输方式。在NVMe协议中,SGL表现为Physical Region Page (PRP) List或SGL Descriptor List。PRP List由一系列物理地址组成,每个地址指向一个4KB对齐的物理内存页,而SGL Descriptor List则除了包含物理地址外,还包含每个内存段的长度信息,因此对于非4KB对齐的数据也能精确描述。
  • 应用场景:NVMe SGL主要用于NVMe SSD的高性能读写操作,尤其在处理大量小型、非连续数据块或者需要跨多个内存页面的大数据块时,通过SGL能够减少数据预处理和内存复制,极大地提高了I/O性能和资源利用率。

总结起来,IEEE SGL和NVMe SGL都是为了提高数据传输效率而设计的,但NVMe SGL在NVMe SSD环境中进行了特别优化,能够更好地适应闪存存储设备的特性,并且在硬件层面提供了更多的灵活性和更好的性能。

NVMe(Non-Volatile Memory Express)协议对SGL(Scatter-Gather List)的优化主要体现在以下几个方面,使得它相比传统的IEEE SGL更适合NVMe SSD设备:

  1. 物理区域页(PRP)列表
    NVMe协议采用了PRP List,这是一种精简版的SGL,专为NVMe SSD设计。PRP List仅包含指向4KB对齐物理页的地址列表,每个条目都是一个64位物理地址,直接指向数据所在的物理内存页。对于连续的物理内存,这种方法极为高效,因为NVMe控制器可以直接通过硬件访问,无需额外的地址解析开销。
  2. SGL Descriptor List
    NVMe 1.1及更高版本增加了对SGL Descriptor的支持,它比基础的PRP List更灵活,每个SGL Descriptor不仅包含物理地址,还包含数据段的长度信息。这意味着NVMe可以处理非4KB对齐的数据,无需预先调整数据布局,从而适应更广泛的数据分布情况。
  3. 硬件优化
    NVMe SSD控制器硬件针对PRP和SGL进行了深度优化,能够快速、高效地处理这些列表,最大限度地减少CPU干预,提高I/O操作的性能。而传统的IEEE SGL在非NVMe环境下的实现可能需要更多的软件参与和间接寻址,从而导致性能下降。
  4. 低延迟和高带宽
    NVMe协议和SSD控制器设计紧密配合,利用PCIe总线的高速特性,加上SGL的优化,能够实现极低的延迟和高带宽的数据传输,这对于数据中心、高性能计算、云计算等场景至关重要,而在这些场景中,IEEE SGL可能无法提供足够的性能优势。

简而言之,NVMe SGL(包括PRP和SGL Descriptor List)是针对NVMe SSD固态存储设备的特性专门优化的数据传输机制,能够在硬件层面提供更强的性能和效率,优于传统的IEEE SGL在其他类型的存储设备上的应用。


http://www.ppmy.cn/news/1368628.html

相关文章

【MATLAB】 ICEEMDAN信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码,请转文末观看代码获取方式~ 展示出图效果 1 ICEEMDAN信号分解算法 ICEEMDAN 分解又叫改进的自适应噪声完备集合经验模态分解,英文全称为 Improved Complete Ensemble Empirical Mode Decomposition with Adaptive Noise。 ICEEMDAN (I…

Docker 使用原理流程

# docker 是如何来的? a. linux 内核本身支持容器技术,LXC (市面上有很多基于 LXC 开发的容器管理软件,如创建容器,查看容器,管理容器, docker 作为管理容器的一款代表工具软件) b. 容器的作用,…

《TCP/IP详解 卷一》第9章 广播和组播

目录 9.1 引言 9.2 广播 9.2.1 使用广播地址 9.2.2 发送广播数据报 9.3 组播 9.3.1 将组播IP地址转换为组播MAC地址 9.3.2 例子 9.3.3 发送组播数据报 9.3.4 接收组播数据报 9.3.5 主机地址过滤 9.4 IGMP协议和MLD协议 9.4.1 组成员的IGMP和MLD处理 9.4.2 组播路由…

[计算机网络]--五种IO模型和select

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、五种IO…

web开发:如何用Echarts来自动给网页设计各种统计图

很多时候web开发也会需要用到统计图,如果单纯靠我们自己那点拙劣的css和js水平设计的话,又耗时间又做得跟史一样,这时候就需要引入别人设计师为我们设计好的动态统计图——echarts Echarts的官网是:Apache ECharts 1、第一步&…

Doris实战——拈花云科的数据中台实践

目录 前言 一、业务背景 二、数据中台1.0—Lambda 三、新架构的设计目标 四、数据中台2.0—Apache Doris 4.1 新架构数据流转 4.2 新架构收益 五、新架构的落地实践 5.1 模型选择 5.1.1 Unique模型 5.1.2 Aggregate模型 5.2 资源管理 5.3 批量建表 5.4 计算实现…

项目准备March

Nginx主要用来作为Http服务器,要实现Tomcat的负载均衡,就可以通过Nginx来实现。 正向代理代理的是客户端,反向代理代理的是服务端。SpringBoot采用约定优于配置的思想,简化Spring项目的配置开发。 前端请求其实并未直接发送到后…

鉴源论坛 · 观辙丨TLS协议基本原理与Wireshark分析

作者 | 苏少博 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 背 景 随着车联网的迅猛发展,汽车已经不再是传统的机械交通工具,而是智能化、互联化的移动终端。然…