返回首页  设为首页  加入收藏  今天是:
网站首页电脑主板电脑cpu电脑内存电脑硬盘电脑显卡电脑电源显示器电脑配件电脑维修
相关文章
 收藏:NVMe协议基础原理介绍
 Python 字符串深度总结
 消息称苹果将在本周发布配备…
 日本零售商以19800日元出售英…
 英特尔A750显卡在日本零售商…
 13代酷睿+40系显卡加持 ROG枪…
 gtx显卡排名
 250美元价位显卡对比:Arc A…
 济南市市场监督管理局抽查移…
 “斤斤计较”很重要计量科普…
 正在公示!事关你家附近幼儿…
 安科瑞 高压进线S级有功精度
 武汉拟规定:新楼盘不得将配…
 机械硬盘和固态硬盘的区别有…
 三星发布高性能PC固态硬盘
 固态硬盘插主板哪个口?长什…
 将电脑Windows系统从机械硬盘…
 SSD性能领先35倍 机械硬盘命…
 主动上门服务是幌子 青岛一市…
 百脑汇青岛店电脑医院为您保…
 暗恋橘生淮南结局 暗恋橘生淮…
 曝光台_大众网
 LED显示屏维修
 全高清超薄显示器 明基DL220…
 2019年度总结-16款热门轻薄型…
 哪款笔记本电脑屏幕好?2023…
 夏新(Amoi) 曲面电脑显示器…
 新闻简讯显示器_DIY电脑硬件…
 RTX 4090是最先发布吗?_RTX…
 5950x 12900k
 Counterpoint:苹果主导 ARM…
 海尔发布博越G43系列笔记本:…
 13代CPU+40系 GPU笔记本和台…
 嵌入式工控主板和嵌入式计算…
 电脑主板原理图(了解电脑主…
 主板的工作原理-电脑主板的维…
 电脑主板电路图 830_26
 计算机主板工作原理介绍
 影驰旗舰内存实测:不愧是超…
 固态硬盘设置两步走 教你5秒…
 电脑开机蓝屏出现英文是什么…
 光明记忆无限主机版发售预告…
 数据中心爆发 国产DDR IP前景…
 RTX 4090 Ti原型显卡泄露:厚…
 主机显卡是什么样子的图片
 电脑显卡图片介绍 电脑显卡有…
 显卡是什么样的(显卡是什么样…
 显卡报价
 首款全彩柔性超薄显示屏问世…
 BENLTY 350005 系统机架基于…
专题栏目
网络
您现在的位置: 电脑评测网 >> 电脑内存 >> 正文
高级搜索
收藏:NVMe协议基础原理介绍
作者:佚名 文章来源:本站原创 点击数: 更新时间:2023/2/12 2:05:18 | 【字体:

  盛世大宋txt下载概述:NVM Express(NVMe),或称非易失性内存主机控制器接口规范(英语:Non Volatile Memory Host Controller Interface Specification,缩写:NVMHCIS),是一个逻辑设备接口规范。它是与AHCI类似的、基于设备逻辑接口的总线传输协议规范(相当于通讯协议中的应用层),用于访问通过PCI Express(PCIe)总线附加的非易失性存储器介质(例如采用闪存的固态硬盘驱动器),虽然理论上不一定要求 PCIe 总线协议。

  NVMe over PCIe协议,定义了NVMe协议的使用范围、指令集、寄存器配置规范等。

  Fused Operations可以理解为聚合操作,只能聚合两条命令,并且这两条命令在队列中应保持相邻顺序。协议中只有NVM指令才有聚合操作。还需要保证聚合操作的两条命令读写的原子性,参考Compare and Write例子。

  除了聚合操作(Fused Operations),每一条SQ中的命令都是独立的,不必考虑RAW等数据相关问题,即使考虑,也是host应该解决的问题。

  控制器需要支持写单元的原子性。但有时也能通过host配置Write Atomicity feature,减小原子性单元的大小,提高性能。

  NVMe定义的最小的读写单元,2KB、4KB……,用LBA来标识块地址,LBA range则表示物理上连续的逻辑块集合。

  由SQ(提交队列)与CQ(完成队列)组成,host通过SQ提交命令,NVMe Controller通过CQ提交完成命令。

  NVMe控制器实质上为DMA + multi Queue,DMA负责数据搬运(指令+用户数据),多队列负责发挥闪存的并行能力。

  NVMe over PCIe,通过利用PCIe总线实现数据交互的功能,实现对物理层的抽象功能。

  PCIe总线分为三层,物理层,数据链路层,处理层(类似于计算机网络的分层结构),通过包来转发数据。NVMe协议定义的内容相当于PCIe的上一层应用层,处于应用层。PCIe给NVMe提供了底层的抽象。

  NVMe寄存器主要分为两部分,一部分定义了Controller整体属性,一部分用来存放每组队列的头尾DB寄存器。

  CAP——控制器能力,定义了内存页大小的最大最小值、支持的I/O指令集、DB寄存器步长、等待时间界限、仲裁机制、队列是否物理上连续、队列大小;

  INTMS——中断掩码,每个bit对应一个中断向量,使用MSI-X中断时,此寄存器无效;

  INTMC——中断有效,每个bit对应一个中断向量,使用MSI-X中断时,此寄存器无效;

  CC——控制器配置,定义了I/O SQ和CQ队列元素大小、关机状态提醒、仲裁机制、内存页大小、支持的I/O指令集、使能;

  CAP寄存器标识的是Controller具有多少能力,而CC寄存器则是指当前Controller选择了哪些能力,可以理解为CC是CAP的一个子集;如果重启(reset)的话,可以更换CC配置;

  CC.EN与CSTS.RDY关系密切,CSTS.RDY总是在CC.EN之后由Controller改变,其他不符合执行顺序的操作都将产生未定义的行为;

  Admin队列有host直接创建,AQA、ASQ、ACQ三个寄存器标识了Admin队列,而其他I/O队列则有Admin命令创建(eg,创建I/O CQ命令);

  Admin队列的头、尾DB寄存器标识为0,其他I/O队列标识由host按照一定规则分配;只有16bit的有效位,是因为队列深度最大64K。

  判断队列满可以有多种方法,协议中规定的是头指针比尾指针大一,所以队列满时,空余一个元素。

  队列大小有16bit,最小队列大小为2个元素(因为满队列的定义方式,所以最小为2个元素),对于I/O队列,最大队列大小为64k;对于Admin队列,最大队列为4k;

  有3个严格的优先权,Priority1>

  Priority2>

  Priority3,在这三个优先级队列中,高优先级的队列中如果有命令,则优先执行(非抢占式)。

  NVMe把Host的内存分为页的集合,页的大小在CC寄存器中配置,PRP是一个64位的内存物理地址指针,结构如下:

  PRP寻址有两种方式,直接用PRP指针寻址,通过PRP List寻址。当使用PRP List寻址时,偏移必须为0h,每一个PRP条目表示一个内存页,如下:

  Admin命令的数据地址只能采取PRP的方式,I/O命令的数据地址既可以采取PRP的方式,又可以采取SGL的方式。Host在命令中会告诉Controller采用何种方式。具体来说,如果命令当中DW0[15:14]是0,就是PRP的方式,否则就是SGL的方式。

  在上面的例子中,PRP1直接指向内存页,PRP2指向PRP List存在的地址,在PRP List中存有数据的真正的地址。

  协议中PRP Entry是一个指向物理内存页的指针。PRP被用作NVMe Controller和PC内存之间进行数据传输。PRPEntry是固定大小的(8B)。

  首先,明确两个概念,PRP Entry 为PRP指针,PRP List为PRP列表指针,示意图如下:

  根据每次传输数据的大小,以及PRP指针的偏移(offset)可以分为以下五种情况:

  SGL是另外一种索引内存的数据结构。SGL由若干个SGL段组成,SGL段又由若干个SGL描述符组成,所以SGL描述符是SGL数据结构的基本单位。

  在上面SGL例子中,共有3个SGL段,用到了4种SGL描述符。Host需要往SSD中读取13KB的数据,其中线个大小不同的内存中,分别是:3KB,4KB和4KB。

  无论是PRP还是SGL,本质都是描述内存中的一段数据空间,这段数据空间在物理上可能连续的,也可能是不连续的。Host在命令中设置好PRP或者SGL,告诉Controller数据源在内存的什么位置,或者从闪存上读取的数据应该放到内存的什么位置。

  SGL和PRP本质的区别在于,一段数据空间,对PRP来说,它只能映射到一个个物理页,而对SGL来说,它可以映射到任意大小的连续物理空间,具有更大的灵活性,也能够描述更大的数据空间。如下图:

  命令由host提交到内存中的SQ队列中,更新TDBxSQ后,NVMe控制器通过DMA的方式将SQ中的命令(怎么取,如何取,取多少,因设计而异)取到控制器缓冲区,执行命令;执行完成后,根据执行状态,组装完成命令,仍然通过DMA的方式将完成命令写入内存CQ的队列中;NVMe控制器通过MSI-X中断方式通知host已完成命令;最后,host处理CQ命令,更新控制器中HDBxCQ,标识着命令线)命令分类

  Admin指令只能提交到Admin Controller中,主要负责管理NVMe控制器,也包含对NVM的一些控制指令。

  NVM 指令只能提交到I/O Controller中,主要负责完成数据的传输。

  在1.0e版本中,Admin指令有15条(3条与NVM相关),NVM指令有6条;在1.3d版本中,Admin指令有15条(3条与NVM相关),NVM指令有11条。

  通过Dword0中的8位操作码定义不同指令,注意并不是绝对的顺序增加(eg,没有03h)。每一种指令都对应有其完成命令,通过SQID(提交队列ID)+CID(命令ID)唯一标识完成的命令。

  NVM指令与Admin指令结构完全相同,也是通过Dword0中的8位操作码来定义不同指令。

  在实现过程中,Admin 控制器只有一个,负责管理控制器及其他控制功能。控制器只是抽象的概念,应用于具体的实现中,可能是一个具体的模块,也可能多个模块。

  控制器主要的作用是实现对NVMe定义命令的翻译,从而实现数据传输、状态控制等功能。

  3. NVMe控制器取SQ中命令(通过HDB和TDB可以判断是否有未完成命令);

  5. NVMe 控制器在命令完成后,将完成命令(可能执行成功,也可能失败,但都会返回完成命令)写入host内存SQ对应的CQ中;

  Controller重启可能发生在PCIe总线重启、PCI重启、控制器CC.EN从1到0重启。当重启发生时:

  队列水平的重启,即,删除该队列,再重新创建一个新队列。删除队列的时候,host应该保证队列处于idle状态(所有命令均已完成——接收到了完成命令),否则的话,可能会导致CQ接收不到提交命令的完成命令。

  在Controller完成SQ命令后,根据执行状态,将结果组装成完成命令写入CQ中,Controller通过中断机制通知Host处理完成命令。

  MSI-X允许每一个CQ发送自己的中断信息(相比于发一条中断信息提醒全部CQ队列有很大的优势)。在产生MSI-X中断信息前,需要检查该中断在相应寄存器种不被屏蔽。

  如果Host希望获取Controller的错误或健康信息,可以添加异步事件请求命令。

  Host删除所有I/O SQ,删除所有SQ队列后,所有未完成的命令将被撤销;

  上图使用的是MSI-X中断方式。这种方式将中断信息和正常的数据信息一样,PCIe打包把中断信息告知Host。SSD还是通过Memory Write TLP把中断信息告知Host,这个中断信息长度是1DWORD。

  元数据的使用并没有强制规定,最经常的使用方法是用做端到端数据的保护信息。有两种传输元数据的方式,一种可以作为LB数据块的一部分,如下图:

  端到端,一端指主机的内存空间,一端指闪存空间(NVM)。数据传输的两个环节如下图:

  数据在PCIe上传输的时候,由于信道噪声的存在(说白了就是存在干扰),可能导致数据出错;另外,Controller闪存之间,数据也可能发生错误。采用元数据进行数据的保护是最常用的一种手段。

  那么按照排列组合,共有四种保护情况(1带2带、1不带2不带、1带2不带、1不带2带)。但由于协议中控制保护信息的只有两个字段(1. 是否采用保护 2. PRACT位),只有三种情况,如下图(是以写命令为例,读命令相同):

电脑内存录入:admin    责任编辑:admin 
  • 上一个电脑内存:

  • 下一个电脑内存: 没有了
  •  
     栏目文章
    普通电脑内存 收藏:NVMe协议基础原理介绍 (02-12)
    普通电脑内存 Python 字符串深度总结 (02-12)
    普通电脑内存 消息称苹果将在本周发布配备M2芯片的新iPad P… (02-12)
    普通电脑内存 影驰旗舰内存实测:不愧是超频神条 (02-11)
    普通电脑内存 固态硬盘设置两步走 教你5秒加速开机 (02-11)
    普通电脑内存 电脑开机蓝屏出现英文是什么问题 (02-11)
    普通电脑内存 光明记忆无限主机版发售预告片公布 港服统一售… (02-11)
    普通电脑内存 数据中心爆发 国产DDR IP前景广阔 (02-11)
    普通电脑内存 什么是“虚拟内存”? (02-11)
    普通电脑内存 EMC 思科 VMware (02-11)
    普通电脑内存 腾讯手游助手设置虚拟内存的方法 (02-11)
    普通电脑内存 vivox9和x9s有什么区别?vivos和对比评测 (02-11)
    普通电脑内存 二十大报告双语全文来了! (02-11)
    普通电脑内存 电脑内存8g电脑是几核的 (02-10)
    普通电脑内存 电脑里的英文文件夹到底啥意思?一键删除可以… (02-10)
    普通电脑内存 小助手文章_电脑频道_天极网 (02-10)
    普通电脑内存 服务器内存和普通台式机内存区别及术语解释 (02-10)
    普通电脑内存 关于电脑的英文单词 (02-10)
    普通电脑内存 线正式发布超级快充+超大内存性能“卷”上天 (02-10)
    普通电脑内存 华为Mate 50支持内存卡扩展吗 华为怎么解锁? (02-10)