博客
关于我
房市静心贴:蛋蛋读NVMe之三
阅读量:58 次
发布时间:2019-02-26

本文共 1539 字,大约阅读时间需要 5 分钟。

NVMe技术深度解析:从数据传输到物理层实现

随着存储技术的飞速发展,NVMe(Non-Volatile Memory Express)作为新一代存储接口,逐渐取代传统的SATA和SAS,成为现代数据中心的重要组成部分。NVMe的核心优势在于其高速度和低延迟,但在技术细节上,NVMe的工作原理依然充满神秘感。本文将深入探讨NVMe中的数据传输机制,揭开其背后的智慧。


数据传输的基本机制

在NVMe系统中,数据的读写过程涉及两个关键角色:Host(主机)和SSD(Solid State Drive,固态硬盘)。从物理层面来看,NVMe命令通过PCIe(并行总线)进行传输,SSD作为目标设备,负责响应Host的命令请求。

Host与SSD的数据传输具有以下特点:

  • 主动性:SSD始终是主动的一方,无论是写入数据还是读取数据,SSD都需要主动向Host的内存中操作。
  • 地址映射:Host需要通过命令明确告诉SSD数据的物理位置。这种地址信息可以通过两种方式传递:PRP(Physical Region Page)SGL(Scatter/Gather List)

  • PRP与SGL:地址传递的两种方式

    在NVMe协议中,PRP和SGL是两种不同的数据传输机制,各有其特点和适用场景。

  • PRP(Physical Region Page)

    • 定位方式:通过64位的物理内存地址,描述一段连续的物理内存空间。
    • 结构特点:地址分为页起始地址和页内偏移,且页内偏移的最后两位固定为0,确保访问对齐。
    • 使用场景:适用于描述连续的内存区域,简单且高效。
  • SGL(Scatter/Gather List)

    • 定位方式:通过链表的方式描述内存空间,可以是连续的也可以是不连续的。
    • 结构特点:每个SGL包含多个SGL Segment,每个Segment由SGL Descriptor描述,描述一段连续的物理内存空间。
    • 灵活性:支持不同大小的内存块,且提供Bit Bucket机制,允许Host注明哪些LBA空间不需要传输。

  • PRP与SGL的对比

    • PRP:简单易懂,适合描述连续的内存空间。
    • SGL:提供更大的灵活性,支持复杂的内存访问模式。
    • 适用场景
      • PRP:用于简单的数据读写操作,尤其是连续内存访问。
      • SGL:用于复杂的数据传输需求,例如混合内存访问模式或不连续的内存块。

    从命令到物理地址:NVMe的层次解析

    在实际操作中,NVMe命令需要通过多层解析才能确定数据的物理存储位置。以写入操作为例:

  • 命令解析:Host发送写入命令,指定LBA(逻辑块地址)和数据传输方式(PRP或SGL)。
  • 地址解析
    • 若使用PRP,Host需要提供PRP List的位置,SSD通过解析PRP List找到真实的物理内存地址。
    • 若使用SGL,Host直接提供数据的物理内存位置,SSD通过SGL Descriptor快速定位。
  • 数据传输:SSD根据物理地址读取或写入数据,完成数据的存取操作。

  • SGL的实际应用场景

    通过一个实际例子可以更直观地理解SGL的作用:

    • 场景:Host需要读取13KB的数据,但实际只需要11KB的有效数据。
    • 细节:11KB数据分布在三个不同的内存块,分别为3KB、4KB和4KB。
    • 解决方案:Host通过SGL Descriptor描述这三个内存块的位置,SSD根据描述快速定位并读取数据。

    结语

    NVMe技术的核心在于高效的数据传输机制,而PRP和SGL正是其重要组成部分。理解这两种机制的区别和适用场景,对于优化存储性能具有重要意义。在深入研究NVMe之前,建议从基础知识入手,逐步掌握其工作原理和应用场景。接下来,我们将继续探讨NVMe读写命令在PCIe层面的实现细节。

    转载地址:http://lbzz.baihongyu.com/

    你可能感兴趣的文章
    NOI-1.3-11-计算浮点数相除的余数
    查看>>
    noi.ac #36 模拟
    查看>>
    NOI2010 海拔(平面图最大流)
    查看>>
    NOIp2005 过河
    查看>>
    NOIP2011T1 数字反转
    查看>>
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>