背景技术:
实施方案总体涉及由数据存储设备处理nvme散射收集列表(sgl)位存储桶传输。
相关领域的描述
nvmexpress(nvme)为主机和数据存储设备(诸如固态驱动器(ssd))之间的接口协议,用于访问存储在数据存储设备中的数据。nvme协议基于成对提交队列和完成队列机制。命令(诸如读取命令和写入命令)由主机软件置于提交队列中,并且由数据存储设备获取以供执行。由存储设备控制器将完成项置于相关联的完成队列中,以通知主机命令的完成。nvme数据结构,诸如提交队列、完成队列、物理区域页面(prp)条目、散射收集列表(sgl)和数据缓冲器,存储在主机的主机存储器或数据存储设备的控制器存储器缓冲器中。nvme数据结构(诸如含有sgl位存储桶描述符的sgl)的实施方式增加了数据存储设备的复杂性。因此,需要一种改进的nvme数据存储设备。
技术实现要素:
实施方案总体涉及由数据存储设备处理nvmesgl位存储桶传输。
在一个实施方案中,使用具有一个或多个位存储桶传输的sgl的设备到主机数据传输的过程包括接收数据的传输命令。获取与数据相关联的sgl描述符。确定sgl描述符是sgl位存储桶描述符还是sgl数据块描述符。当sgl描述符被确定为sgl位存储桶描述符时,生成修改的事务层分组(tlp)。修改的tlp包括对主机忽略修改的tlp的数据有效载荷的指示。将修改的tlp传输到主机。
在一个实施方案中,数据存储设备包括可操作以与主机对接的主机接口、非易失性存储器和存储设备控制器。存储设备控制器可操作以接收写入非易失性存储器的数据的传输命令。传输命令使用sgl并包括一个或多个位存储桶传输。存储设备控制器可操作以获取与数据相关联的sgl描述符。存储设备控制器可操作以确定sgl描述符是sgl位存储桶描述符还是sgl数据块描述符。当sgl描述符被确定为sgl位存储桶描述符时,存储设备控制器可操作以生成修改的tlp。修改的tlp包括对主机忽略修改的tlp的数据有效载荷的指示。存储设备控制器可操作以将修改的tlp传输到主机。
在另一个实施方案中,数据存储设备包括可操作以与主机的设备pcie接口对接的主机外围部件接口express(pcie)接口。数据存储设备还包括非易失性存储器和nvmexpress(nvme)存储设备控制器。nvme存储设备控制器将涉及一个或多个位存储桶传输的数据从设备传输到主机。一个或多个位存储桶传输是到主机的主机存储器缓冲器、nvme存储设备控制器的控制器存储器缓冲器或主机的设备pcie接口的目的地。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1为示出包括连接到数据存储设备的主机的计算机系统的某些实施方案的示意框图。
图2a为示出主机存储器的物理页面区域(prp)条目和主机数据缓冲器的示意图。
图2b为示出主机存储器的散射收集列表(sgl)和主机数据缓冲器的示意图。
图3为示出sgl的示意图。
图4为实施包括一个或多个位存储桶传输的设备到主机数据传输的现有技术过程400的示意图。
图5为示出通过将一个或多个tlp传输到主机,使用一个或多个sgl位存储桶描述符进行设备到主机数据传输的过程的示意性流程图。
图6为计算机系统中的数据存储设备和主机之间的请求tlp的示意图。
图7为示出通过将数据传输到数据存储设备控制器的控制器存储器缓冲器,使用一个或多个sgl位存储桶描述符进行设备到主机数据传输的过程的示意性流程图。
图8为由存储设备控制器实施与sgl位存储桶描述符相关联的设备到主机数据传输的过程的某些实施方案的示意图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
实施方案总体涉及由数据存储设备处理nvme散射收集列表位存储桶传输。数据存储设备将与位存储桶传输相关联的数据传输到数据存储设备的主机或控制器存储器缓冲器。数据存储设备可通过修改tlp来向主机传输与位存储桶传输相关联的数据,以对主机指示忽略tlp的数据有效载荷。
在某些实施方案中,本存储设备控制器支持sgl位存储桶传输,而不破坏存储设备控制器的内部数据管。破坏存储设备控制器的内部数据管使支持sgl位存储桶传输的实施方式复杂化,并且需要额外的逻辑(例如,硬件和/或固件)和计算。
图1为示出包括连接到数据存储设备102(诸如固态驱动器(ssd))的主机150的计算机系统100的某些实施方案的示意性框图。主机150利用包括在数据存储设备102中的非易失性存储器(nvm)106(诸如nand闪存存储器)来写入和读取数据,诸如用于长期存储器存储。
主机150可为包括一个或多个中央处理单元(cpu)152、主机存储器空间160和存储设备接口156的硬件平台。主机150可包括各种各样的设备,诸如计算机服务器、网络附联存储(nas)单元、台式计算机、笔记本(例如,膝上型)计算机、平板计算机(例如,“智能”平板电脑)、移动设备、机顶盒、电话手机(例如,“智能”电话)、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备和汽车应用(例如,地图绘制、自主驾驶)。在某些实施方案中,主机150包括具有处理单元或能够处理数据的任何形式的硬件的任何设备,包括通用处理单元、专用硬件(诸如专用集成电路(asic))、可配置硬件(诸如现场可编程门阵列(asic))、或由软件指令、微代码或固件配置的任何其他形式的处理单元。
主机存储器空间160为允许存储和检索信息(诸如可执行指令、加密密钥、配置和其他数据)的设备。主机存储器空间160可为dram、sram、其他主存储器以及它们的组合。应用程序可存储在主机存储器空间160中,以便由主机150的部件执行。主机存储器空间160可包括主机队列162,诸如命令提交队列(sq)和命令完成队列(cq)。主机存储器空间160可包括供数据存储设备102使用的主机存储器缓冲器(hmb)164。
在某些实施方案中,存储设备接口156可为网络接口。网络接口使得主机104能够经由通信介质(诸如计算系统100内的网络耦接主机150和数据存储设备102)与数据存储设备102通信。网络接口可为一个或多个网络适配器,也称为网络接口卡(nic)。在某些实施方案中,存储设备接口156可为主机104和数据存储设备102之间的专用链路。
主机150的存储设备接口156与数据存储设备102的主机接口101交互,用于主机150和数据存储设备102之间通信的进出。存储设备接口156和主机接口101在通信协议(诸如外围部件接口express(pcie)串行通信协议或其他合适的通信协议)下操作。在pcie通信协议中,主机150和存储设备102将作为tlp发送给彼此发送请求。存储设备接口156包括一个或多个端口,诸如pcie端口、rdma端口(以太网、roce/iwarp、infinband)、光纤通道端口、tcp端口或其他合适的构架端口。连接到pcie构架的设备通过提供pcie地址直接通信到其他设备。该构架基于pcie地址将此类通信路由到适当的设备。地址的一部分为指定要将通信路由到的物理设备的设备号。
主机150和数据存储设备102可通过nvme通信在pcie接口上通信。nvme通信可由pcie构架上的nvme、非pcie构架上的nvme和/或本地pcie中的一者或多者进行。非pcie构架上的nvme包括构架接口两侧的运输抽象层,以转换非pcie构架上的本机pcie事务。主机150可通过数据中心存储系统网络、企业存储系统网络、存储区域网络、云存储网络、局域网(lan)、广域网(wan)、互联网、其他网络、有线链路、无线链路以及它们的互连件连接到存储设备102。
数据存储设备102可为网络存储设备、内部存储驱动器(例如,服务器计算机、台式硬盘驱动器、笔记本电脑)、数据中心存储设备、外部存储设备、嵌入式大容量存储设备、可移动大容量存储设备和其他合适的数据存储设备。
数据存储设备102包括存储设备控制器110,其管理存储设备102的操作,诸如对nvm106的写入和从该nvm106的读取。存储设备控制器110可包括一个或多个处理器130,该一个或多个处理器可为多核处理器。处理器130通过固件和/或软件来处理数据存储设备102的部件。处理器130执行固件和/或软件的计算机可读程序代码的指令。存储控制器110通过由处理器130、由硬件或由它们的组合执行指令来实施本文所述的过程。硬件可包括存储设备控制器110的各种部件,诸如逻辑门、开关、专用集成电路(asic)、可编程逻辑控制器、嵌入式微控制器、寄存器以及其他部件。
存储设备控制器110可在nvme协议下操作,但其他协议也是适用的。nvme协议是为ssd开发的用于在通过pcie接口链接的主机和存储设备上操作的通信接口/协议。nvme协议为由主机150访问存储在数据存储设备102中的数据提供命令队列和完成路径。
存储设备控制器110还包括存储器控制器120。存储器控制器120控制对存储设备控制器110的存储存储器122的访问。存储设备控制器110的存储存储器122可包括动态随机存取存储器(dram)、静态随机存取存储器(sram)和寄存器。dram和sram为易失性存储器或高速缓存缓冲器(一个或多个),用于在数据存储设备102的操作期间的短期存储或临时存储器。如果断电,则易失性存储器不会保留存储的数据。dram需要周期性刷新存储的数据,而sram不需要刷新。sram提供对数据的更快访问,但比dram更昂贵。寄存器包括触发器、锁存器、计数器和其他寄存器。存储存储器122还可包括供主机150使用的控制器存储器缓冲器(cmb)124。cmb124通常分配在存储存储器122的dram中。如本文所用,术语cmb还可包括持久性存储器区域(pmr)。
存储设备102的nvm106可被配置用于作为非易失性存储器空间的信息的长期存储,并且在通电/断电循环后保留信息。nvm106可包含nand闪存和/或nor闪存存储器阵列的一个或多个管芯。闪存存储器阵列可作为单级单元(slc)、多级单元(mlc)、三级单元(tlc)、四级单元(qlc)或者现在已知或之后开发的其他存储器单元级技术来操作。nand闪存存储器阵列可以二维或三维架构制造。非易失性存储器的其他示例包括相变存储器、reram存储器、mram存储器、磁介质(包括叠瓦式磁记录)、光盘、软盘、电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和其他固态存储器。磁介质非易失性存储器可为存储设备102中的一个或多个磁盘。每个盘片可以包含由一个或多个数据轨道组成的一个或多个区域。nvm106可包括一种或多种类型的非易失性存储器。
存储设备控制器110还可包括其他部件,诸如nvm接口模块132、直接存储器访问(dma)模块133、调度器134、错误校正引擎136、控制路径142和nvme命令加速器126。闪存接口模块132与nvm106交互以进行读取和写入操作。dma模块133在没有cpu152参与的情况下执行主机150和存储设备102之间的数据传输。调度器134控制数据传输,同时激活控制路径,用于获取散射收集列表(sgl)、发布完成和中断,并且激活用于主机150和数据存储设备102之间的实际数据传输的dma。错误校正引擎136校正从存储器阵列获取的数据。nvme命令加速器126自动执行nvme命令并朝调度器134加速nvme命令。nvme命令加速器通常包含硬件,以减少固件和/或软件与主机接口101的交互。
存储设备控制器110还包括位存储桶管理器140。位存储桶管理器140可被实施为dma模块133的一部分或作为独立的模块。位存储桶管理器140检测设备到主机传输是否与sgl位存储桶描述符相关联。在各种实施方案中,当位存储桶管理器140检测到sgl位存储桶描述符时,存储设备控制器110修改传输的属性。
nvme基于成对提交和完成队列机制。由主机软件将命令置于提交队列(sq)中。存储设备控制器110将完成置于相关联的完成队列(cq)中。提交队列和完成队列162可被分配在主机存储器160或存储存储器122的cmb124中。
使用物理区域页面(prp)条目或散射收集列表(sgl)来指定主机150的主机存储器160中用于数据传输的物理存储器位置(例如,主机dram中的位置)。主机存储器160中的物理存储器位置可为源缓冲器(例如,从存储器到控制器的读取)或目标缓冲器(例如,从控制器到存储器的写入)。prp条目或sgl指示dma模块133在何处从主机存储器160中的物理存储器位置读取数据,或者在不涉及cpu152的情况下将数据写入主机存储器160中的物理存储器位置。
图2a为示出主机存储器160的物理页面区域(prp)条目210和主机数据缓冲器的示意图。prp列表映射相同固定大小的主机数据缓冲器的主机物理存储器的物理地址和主机虚拟存储器的逻辑地址,以供存储设备控制器110进行数据传输。prp条目(prp1和prp2)指向主机数据缓冲器的物理位置或prp条目的prp列表。prp列表的每个prp条目将每个主机数据缓冲器描述为相同的固定大小(即,4k字节)。
图2b为示出主机存储器160的sgl220和主机数据缓冲器的示意图。sgl映射任何大小的主机数据缓冲器的主机物理存储器的物理地址和主机虚拟存储器的逻辑地址,以供存储设备控制器110进行数据传输。每个主机数据缓冲器可由专用sgl数据块描述符描述,其中描述了数据缓冲器的地址和大小。
图3为示出sgl220(诸如图2b的nvme命令中含有的sgl220或其他适当的sgl)的示意图。每个sgl220包含一个或多个sgl区段310a-b。每个sgl区段310包含连续存储在存储器中的一个或多个sgl描述符320。如果需要多于一个sgl区段310来描述数据缓冲器,则sgl区段可含有指向从先前sgl区段非连续地存储在存储器中的下一个sgl区段的指针。每个sgl描述符320为如表1中指定的以下类型中的一种类型。
sgl数据块描述符320a描述了单个主机数据缓冲器的字节粒度形式的起始地址和大小。sgl位存储桶描述符指示存储设备控制器110在对nvm106的主机读取中应丢弃一定量的读取数据。sgl区段描述符为指向下一个sgl区段的指针。sgl最后区段描述符320b为指向下一个也是最后一个sgl区段310c的指针。
主机150可使用sgl位存储桶描述符来检查存储在nvm106中的数据是可读的(例如,具有低错误或没有错误)。主机150可使用sgl位存储桶描述符来将读取数据从nvm106传输到主机,并且丢弃与读取数据相关联的元数据。
图4为实施包括一个或多个位存储桶传输的数据的设备到主机传输的现有技术过程400的示意图。现有技术存储设备的设备dma模块检测数据传输是否与sgl位存储桶描述符相关联。如果数据传输不与sgl位存储桶描述符相关联,则设备dma模块在正常传输410中将数据传输到主机存储器中的目标主机数据缓冲器,诸如利用存储器写入请求tlp。如果数据传输与sgl位存储桶描述符相关联,则设备dma模块不将数据传输到主机存储器中的目标主机数据缓冲器。设备dma模块通过丢弃数据在位存储桶传输420中丢弃事务。
过程400的一个缺点是正常传输410相对于位存储桶传输420的实施方式的复杂性。例如,nvme命令可含有正常传输410和位存储桶传输420两者。为了使数据存储设备将该命令的命令完成写入cq,数据存储设备需要额外的逻辑来确认在一个方面,在正常传输中对主机数据缓冲器进行了数据传输,并且在相反的方面,在位存储桶传输中丢弃数据。虽然正常传输和位存储桶传输均激活数据管(例如,激活nvm接口)以从nvm读取数据,但是由于正常传输中的数据分组被发送到主机,同时位存储桶传输中的数据分组被丢弃,数据管便变得发散了。
图5为示出通过向主机150传输一个或多个tlp来使用一个或多个sgl位存储桶描述符进行设备到主机数据传输的过程500的示意性流程图。设备到主机数据传输的sgl可包括具有或不具有任何sgl数据块描述符的一个或多个sgl位存储桶描述符。参考图1的计算机系统100的数据存储设备102的存储设备控制器110来描述过程500,但其他存储设备控制器也是适用的。
在过程500的块510处,存储设备控制器110接收设备到主机数据传输请求。例如,设备到主机数据传输请求可为nvm106的nvme读取命令,其为数据传输指定sgl,其中sgl具有一个或多个sgl位存储桶描述符。可从存储在主机存储器160中的sq或从存储在存储设备控制器110的cmb124中的sq中获取nvme读取命令。
在块520处,存储设备控制器110通过获取与所请求的数据相关联的sgl描述符来处理设备到主机传输请求。例如,存储设备控制器110激活控制路径142以获取与所请求的数据相关联的sgl描述符。sgl可从主机存储器160或从存储设备控制器110的cmb124获取。与所请求的数据相关联的sgl描述符可为来自适当sgl区段(例如,sgl区段0、sgl区段1、sgl区段2...sgl的最后存储器位置)的sgl数据块描述符或sgl位存储桶描述符。例如,sgl可包含指向下一个sgl区段的第一sgl条目,其继而可指向下一个sgl区段等,直到sgl的最后存储器位置。在某些实施方案中,sgl描述符由存储设备控制器110一次一个地获取。在某些实施方案中,连续sgl描述符由存储设备控制器110一起获取。
在块530处,存储设备控制器110确定在块520获取的sgl描述符是sgl位存储桶描述符还是sgl数据块描述符。例如,位存储桶管理器140确定sgl描述符是否是sgl位存储桶描述符。
如果sgl描述符是sgl数据块描述符(例如,不是sgl位存储桶描述符),则过程500从块530前进到块540。在块540处,存储设备控制器向主机150传输与来自块530的sgl数据块描述符相关联的所请求数据的一个或多个未修改的tlp。与sgl数据块描述符相关联的tlp为未修改的。如本文所用,术语“未修改的”意指tlp不含有对主机150的任何指示,以供主机忽略tlp的数据有效载荷。例如,存储设备控制器110经由主机接口101向主机150发送未修改的存储器写入请求tlp。未修改的存储器写入请求tlp使得主机150将所请求数据从数据存储设备102写入主机存储器160中的物理位置,如sgl数据块描述符所指示。
如果sgl描述符为sgl位存储桶描述符,则过程500从块530前进到块550。在块550处,存储设备控制器110从块530生成与sgl位存储桶描述符相关联的所请求数据的一个或多个修改的tlp。修改与sgl位存储桶描述符相关联的tlp。如本文所用,术语“修改的”意指tlp含有对主机150的一个或多个指示以供主机忽略tlp的数据有效载荷。例如,存储设备控制器110向主机150发送修改的存储器写入请求tlp,但是修改的存储器写入请求tlp不会使得主机150将所请求数据写入到主机存储器160中的用户数据位置。
在块560处,存储设备控制器110将从块550生成的一个或多个修改的tlp经由主机接口101传输到主机150的存储设备接口156。根据对一个或多个修改的tlp的指示,主机150忽略一个或多个修改的tlp的数据有效载荷。
在块570处,存储设备控制器110确定在块510接收的传输请求是否已完成。如果传输请求尚未完成,则过程500返回到块520,以获取与所请求数据相关联的下一个sgl描述符。如果传输请求已完成,则完成在设备到主机传输请求中传输数据的过程500。
在过程500中,对于sgl位存储桶描述符和sgl数据块描述符两者,存储设备控制器110将具有数据有效载荷的tlp传输到主机150。因此,数据存储设备102到主机150的内部数据管对于sgl位存储桶描述符和sgl数据块描述符一致,因为所请求数据未被丢弃,而是被递送到主机150。相比之下,现有技术过程400在正常传输410中向主机传输tlp,但在位存储桶传输中不向主机传输任何tlp。不是丢弃与sgl位存储桶描述符相关联的事务,过程500中的存储设备控制器110确实向主机150传输数据有效载荷,但对主机150指示忽略数据有效载荷以便不损坏主机存储器160。
图6为计算机系统中的数据存储设备和主机之间的请求tlp600的示意图。为了便于描述,将参考图1的计算机系统100的数据存储设备102和主机150来描述请求tlp600,但其他计算机系统也是适用的。在某些实施方案中,请求tlp600是响应于来自主机150的读取命令的存储器写入tlp,以将来自数据存储设备102的所请求读取数据写入主机存储器空间160中的物理位置。
请求tlp600包括标头604和数据有效载荷606。请求的相关联数据作为一个或多个请求tlp600的数据有效载荷606被传输。
标头604包括用于管理数据存储设备102和主机150之间的请求tlp600的事务控制信息。标头604可包括以下字段中的一些或全部:格式(fmt)字段、类型字段、业务类别(tc)字段、td字段、错误转发(ep)字段610、属性(attr)字段、长度字段、请求者id字段、标签字段、最后一个dw字节启用(be)字段612、第一dwbe字段614和地址字段616。
格式字段指示请求tlp600的格式。例如,格式字段值010b(0x2)指示包括具有数据有效载荷的地址字段616的32位地址的三dw标头。格式字段值011b(0x3)指示包括具有数据有效载荷的地址字段616的64位地址的四dw标头。如图6所示的请求tlp600利用包含64位地址的地址字段605,但也可使用32位地址。
类型字段指示事务的类型。例如,类型字段值0000b(0x00)指示存储器读取请求。tc字段指示不同的交通服务类,诸如最佳执行器服务类、加权循环服务类、优先级服务类。请求者id字段是唯一地标识引入事务请求tlp的请求者(诸如数据存储设备102)的数字。最后一个字节启用字段并且第一个字节启用指示字节启用的位置。
请求tlp600可包括任选的tlp前缀(未示出)。td字段的设定指示任选的tlp概要690的存在。例如,请求tlp600可在tlp概要690中包括任选的端到端循环冗余校验和(ecrc)。
当请求tlp600在数据存储设备102和主机150之间传输时,数据链路层和物理层被添加到每个请求tlp600,使得请求tlp600到达预期目的地。数据链路层将序号和链路层crc(lcrc)添加到请求tlp600以供跨链路传输。物理层添加信息以标记请求tlp600的开始和结束。
例如,响应于从主机150到数据存储设备102的读取命令,一个或多个请求tlp600含有读取数据作为一个或多个请求tlp600的数据有效载荷606。每个pcie设备被设定为数据有效载荷606的某个最大tlp有效载荷大小9mps),诸如128字节、256字节、512字节、1千字节、2千字节、4千字节等。在所连接设备(诸如系统100内的数据存储设备102)的枚举和配置期间,所连接设备通告它们所支持的最大tlp有效载荷大小。系统100默认设定是使用沿请求tlp600的路径支持的最高公共最大tlp有效载荷大小。
响应于sgl位存储桶描述符,在过程500或其他合适过程的块550生成的修改的tlp含有对主机150的一个或多个指示,以供主机忽略请求tlp600的数据有效载荷606。
具有忽略数据有效载荷的指示的修改的tlp的一个实施方案为tlp600(或其他合适的tlp),其指示传输的字节启用为零(即,零长度写入)。请求tlp600可通过清除最后一个be字段612和第一个be字段614的条目来指示传输的字节启用为零。例如,对于涉及短长度数据读取的sgl位存储桶描述符,存储设备控制器110可通过清除最后一个be字段和第一个be字段的条目来修改请求tlp600。换句话讲,存储器写入请求tlp指示字节启用,但缺少对受影响字节的任何选择。主机150忽略该存储器写入请求tlp,因为数据有效载荷为无效的,并且避免主机存储器的损坏。
具有忽略数据有效载荷的指示的修改的tlp的另一个实施方案为指示tlp毒化的tlp600(或其他合适的tlp)。通过将ep位设定为1来毒化请求tlp600。主机150忽略已毒化的写入请求tlp。毒化的tlp用于错误的错误转发,以用于控制错误通过计算机系统的传播,而不会导致主机存储器160的损坏。主机150将处理修改的写入请求tlp,该写入请求tlp通过将tlp忽略为转发错误而毒化。
具有忽略数据的指示的修改的tlp的又一个实施方案是在地址字段616中具有替换地址的tlp600(或其他合适的tlp)。例如,被替换的地址可为被分配给数据存储设备102的主机存储器160的hmb164中的地址。由于hmb164被分配给数据存储设备102,因此主机存储器160不会因将tlp600的数据有效载荷606置于hmb164中的位置而损坏。
图7为示出通过将数据传输到数据存储设备控制器110的cmb124,使用一个或多个sgl位存储桶描述符进行设备到主机数据传输的过程700的示意性流程图。设备到主机数据传输的sgl可包括具有或不具有任何sgl数据块描述符的一个或多个sgl位存储桶描述符。参考图1的计算机系统100的数据存储设备102的存储设备控制器110来描述过程700,但其他存储设备控制器也是适用的。
在过程700的块710处,存储设备控制器110接收设备到主机数据传输请求。例如,设备到主机数据传输请求可为nvm106的nvme读取命令,其为数据传输指定sgl,其中sgl具有一个或多个sgl位存储桶描述符。可从存储在主机存储器160中的sq或从存储在存储设备控制器110的cmb124中的sq中获取nvme读取命令。
在块720处,存储设备控制器110通过获取与所请求数据相关联的sgl描述符来处理设备到主机传输请求。例如,存储设备控制器110激活控制路径142以获取与所请求的数据相关联的sgl描述符。sgl可存储在主机存储器160或存储设备控制器110的cmb124中。与所请求的数据相关联的sgl描述符可为来自适当sgl区段(例如,sgl区段0、sgl区段1、sgl区段2...sgl的最后存储器位置)的sgl数据块描述符或sgl位存储桶描述符。例如,sgl可包含指向下一个sgl区段的第一sgl条目,其继而可指向下一个sgl区段等,直到sgl的最后存储器位置。
在块730处,存储设备控制器110确定在块720获取的sgl描述符是sgl位存储桶描述符还是sgl数据块描述符。例如,位存储桶管理器140确定sgl描述符是否是sgl位存储桶描述符。
如果sgl描述符是sgl数据块描述符(例如,不是sgl位存储桶描述符),则过程700从块730前进到块740。在块740处,存储设备控制器向主机150传输与来自块730的sgl数据块描述符相关联的所请求数据的一个或多个未修改的tlp。与sgl数据块描述符相关联的tlp为未修改的。如本文所用,术语“未修改的”意指tlp不含有对主机150的任何指示以供主机忽略tlp的数据有效载荷。例如,存储设备控制器110经由主机接口101向主机150发送未修改的存储器写入请求tlp。未修改的存储器写入请求tlp使得主机150将所请求数据从数据存储设备102写入主机存储器中的物理位置,如sgl数据块描述符所指示。
如果sgl描述符为sgl位存储桶描述符,则过程700从块730前进到块760。在块760处,存储设备控制器将数据传输到数据存储设备控制器110的cmb124。
在块770处,存储设备控制器确定在块710接收的传输请求是否已完成。如果传输请求尚未完成,则过程700返回到块720,以获取与所请求数据相关联的下一个sgl描述符。如果传输请求完成,则完成在设备到主机传输请求中传输数据的过程700。
在过程700中,对于sgl位存储桶描述符和sgl数据块描述符两者,存储设备控制器110将所请求数据传输到主机150或数据存储设备102的cmb124。因此,来自数据存储设备102的数据的内部数据管对于sgl位存储桶描述符和sgl数据块描述符一致,因为所请求数据未被丢弃,而是被递送到主机150或数据存储设备102的cmb124。不是丢弃与sgl位存储桶描述符相关联的事务,过程700中的存储设备控制器110确实将所请求数据传输到数据存储设备102的cmb124。
图8为由存储设备控制器110实施与sgl位存储桶描述符相关联的设备到主机数据传输的过程800的某些实施方案的示意图。参考图1的计算机系统100的数据存储设备102的存储设备控制器110来描述过程800,但其他存储设备控制器也是适用的。位存储桶管理器140检测传输是否与sgl位存储桶描述符相关联。如果传输不与sgl位存储桶描述符相关联,则设备dma模块133将数据的一个或多个未修改的存储器写入请求tlp810传输到主机150的主机存储器160中的用户数据缓冲器的目的地。
在某些实施方案中,如果传输与sgl位存储桶描述符相关联,则dma模块133将数据的修改的存储器写入请求tlp820传输到主机150。修改的存储器写入请求tlp820包括对主机150忽略修改的写入请求tlp820的数据有效载荷的指示。主机响应于修改的写入请求tlp820而发送完成tlp。在一个示例中,修改的存储器写入请求tlp820可为指示传输的字节启用为零的tlp820a。在另一个示例中,修改的写入请求tlp820可为毒化的tlp820a。将修改的写入请求tlp820a传输到主机150的存储设备接口156的目的地。在又一个示例中,修改的存储器写入请求tlp820可为对主机存储器160的hmb164中的地址空间的tlp820b。
在某些实施方案中,如果传输与sgl位存储桶描述符相关联,则位存储桶管理器140将数据传输到存储存储器122的cmb124。
图5、图7和图8的过程500、过程700和过程800可降低正常传输和位存储桶传输两者的逻辑(即,在硬件和/或固件中)的实施方式的复杂性。在过程500、过程700和过程800中,响应于读取命令而将所请求数据递送到目的地。在一个示例中,所请求数据可作为修改的tlp和未修改的tlp810被递送到主机150。在另一个示例中,所请求数据可被递送到主机150或存储设备控制器110的cmb124。由于所请求数据被递送到目的地而不是数据被丢弃,因此存储设备控制器110的数据管的复杂性降低。
在一个实施方案中,使用具有一个或多个位存储桶传输的sgl的设备到主机数据传输的过程包括接收数据的传输命令。获取与数据相关联的sgl描述符。确定sgl描述符是sgl位存储桶描述符还是sgl数据块描述符。当sgl描述符被确定为sgl位存储桶描述符时,生成修改的tlp。修改的tlp包括对主机忽略修改的tlp的数据有效载荷的指示。将修饰的tlp传输到主机。
在一个实施方案中,数据存储设备包括可操作以与主机对接的主机接口、非易失性存储器和存储设备控制器。存储设备控制器可操作以接收写入非易失性存储器的数据的传输命令。传输命令使用sgl并包括一个或多个位存储桶传输。存储设备控制器可操作以获取与数据相关联的sgl描述符。存储设备控制器可操作以确定sgl描述符是sgl位存储桶描述符还是sgl数据块描述符。当sgl描述符被确定为sgl位存储桶描述符时,存储设备控制器可操作以生成修改的tlp。修改的tlp包括对主机忽略修改的tlp的数据有效载荷的指示。存储设备控制器可操作以将修改的tlp传输到主机。
在另一个实施方案中,数据存储设备包括可操作以与主机的设备pcie接口对接的主机外围部件接口express(pcie)接口。数据存储设备还包括非易失性存储器和nvmexpress(nvme)存储设备控制器。nvme存储设备控制器将涉及一个或多个位存储桶传输的数据从设备传输到主机。一个或多个位存储桶传输是到主机的主机存储器缓冲器、nvme存储设备控制器的控制器存储器缓冲器或主机的设备pcie接口的目的地。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
1.一种使用散射收集列表(sgl)并包括一个或多个位存储桶传输的设备到主机数据传输的过程,所述过程包含:
接收所述数据的所述传输命令;
获取与所述数据相关联的sgl描述符;
确定所述sgl描述符是sgl位存储桶描述符还是sgl数据块描述符;
当所述sgl描述符被确定为所述sgl位存储桶描述符时,生成修改的事务层分组(tlp),所述修改的tlp具有对主机的忽略所述修改的tlp的数据有效载荷的指示;以及
将所述修改的tlp传输到所述主机。
2.根据权利要求1所述的过程,其中所述修改的tlp指示字节启用,所述字节启用具有用于最后一个字节启用(be)字段和用于第一个be字段的已清除条目,作为对所述主机忽略所述修改的tlp的所述数据有效载荷的所述指示。
3.根据权利要求1所述的过程,其中所述修改的tlp包含用于ep位的设定条目,作为对所述主机忽略所述修改的tlp的所述数据有效载荷的所述指示。
4.根据权利要求1所述的过程,其中所述修改的tlp包含用于地址字段的所述主机的主机存储器缓冲器的替换地址,作为对所述主机的忽略所述修改的tlp的所述数据有效载荷的所述指示。
5.根据权利要求1所述的过程,所述过程还包含当所述sgl描述符被确定为所述sgl数据块描述符时,将未修改的tlp传输到所述主机。
6.根据权利要求1所述的过程,其中所述传输命令为读取命令,并且其中所述修改的tlp为修改的存储器写入请求tlp。
7.根据权利要求6所述的过程,其中所述读取命令为nvmexpress读取命令,并且其中所述修改的存储器写入请求tlp为外围部件接口express修改的存储器写入请求tlp。
8.一种数据存储设备,所述数据存储设备包含:
主机接口,所述主机接口可操作以与所述主机对接;
非易失性存储器;和
存储设备控制器,所述存储设备控制器可操作以:
接收写入非易失性存储器的数据的传输命令,所述传输命令使用散射收集列表(sgl)并包括一个或多个位存储桶传输;
获取与所述数据相关联的sgl描述符;
确定所述sgl描述符是sgl位存储桶描述符还是sgl数据块描述符;
当所述sgl描述符被确定为所述sgl位存储桶描述符时,生成修改的事务层分组(tlp),所述修改的tlp具有对所述主机的忽略所述修改的tlp的数据有效载荷的指示;并且
将所述修改的tlp传输到所述主机。
9.根据权利要求8所述的数据存储设备,其中所述修改的tlp指示字节启用,所述字节启用具有用于最后一个字节启用(be)字段和用于第一个be字段的已清除条目,作为对所述主机的忽略所述修改的tlp的所述数据有效载荷的所述指示。
10.根据权利要求8所述的数据存储设备,其中所述修改的tlp包含用于ep位的设定条目,作为对所述主机的忽略所述修改的tlp的所述数据有效载荷的所述指示。
11.根据权利要求8所述的数据存储设备,其中所述修改的tlp包含用于地址字段的所述主机的主机存储器缓冲器的替换地址,作为对所述主机的忽略所述修改的tlp的所述数据有效载荷的所述指示。
12.根据权利要求8所述的数据存储设备,其中所述存储设备控制器还可操作以当所述sgl描述符被确定为所述sgl数据块描述符时,将未修改的tlp传输到所述主机。
13.根据权利要求8所述的数据存储设备,其中所述传输命令为读取命令,并且其中所述修改的tlp为修改的存储器写入请求tlp。
14.根据权利要求8所述的数据存储设备,其中所述主机接口被配置成在外围部件接口express(pcie)接口协议下操作,并且其中所述数据存储设备被配置成通过所述pcie接口协议在nvmexpress协议下与所述主机通信。
15.一种数据存储设备,所述数据存储设备包含:
主机外围部件接口express(pcie)接口,所述主机外围部件接口express接口可操作以与主机的设备pcie接口对接;
非易失性存储器;和
nvmexpress(nvme)存储设备控制器装置,所述nvmexpress存储设备控制器装置用于响应于涉及一个或多个位存储桶传输的设备到主机传输请求而将数据传输到目的地,所述目的地选自由所述主机的主机存储器缓冲器、所述nvme存储设备控制器装置的控制器存储器缓冲器和所述主机的所述设备pcie接口组成的组。
16.根据权利要求15所述的数据存储设备,其中所述nvme存储设备控制器装置用于通过向所述主机传输地址字段的具有对所述主机存储器缓冲器的替换地址的修改的存储器写入请求tlp,响应于涉及所述一个或多个位存储桶传输的所述设备到主机传输,将所述数据传输到所述主机的所述主机存储器缓冲器的所述目的地。
17.根据权利要求15所述的数据存储设备,其中所述nvme存储设备控制器装置用于响应于涉及所述一个或多个位存储桶传输的所述设备到主机传输,将所述数据传输到所述nvme存储设备控制器装置的所述控制器存储器缓冲器的所述目的地。
18.根据权利要求15所述的数据存储设备,其中所述nvme存储设备控制器装置用于通过将具有零写入字节启用的修改的存储器写入请求tlp传输到所述主机,响应于涉及所述一个或多个位存储桶传输的所述设备到主机传输,将所述数据传输到所述主机的所述设备pcie接口的所述目的地。
19.根据权利要求15所述的数据存储设备,其中所述nvme存储设备控制器装置用于通过将毒化的存储器写入请求tlp传输到所述主机,响应于涉及所述一个或多个位存储桶传输的所述设备到主机传输,将所述数据传输到所述主机的所述设备pcie接口的所述目的地。
20.根据权利要求15所述的数据存储设备,其中所述nvme存储设备控制器装置还用于通过向所述主机传输未修改的存储器写入请求tlp,响应于涉及一个或多个数据块传输的所述设备到主机传输,将所述数据传输到所述主机的主机存储器。
技术总结