CN110730945B - 可扩展的低时延存储接口 - Google Patents
可扩展的低时延存储接口 Download PDFInfo
- Publication number
- CN110730945B CN110730945B CN201880038637.6A CN201880038637A CN110730945B CN 110730945 B CN110730945 B CN 110730945B CN 201880038637 A CN201880038637 A CN 201880038637A CN 110730945 B CN110730945 B CN 110730945B
- Authority
- CN
- China
- Prior art keywords
- vfs
- mms
- sqes
- allocated
- host interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims description 56
- 239000000872 buffer Substances 0.000 claims abstract description 63
- 238000004891 communication Methods 0.000 claims abstract description 45
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000006870 function Effects 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims description 14
- 230000002093 peripheral effect Effects 0.000 claims description 13
- 238000012546 transfer Methods 0.000 description 17
- 238000007726 management method Methods 0.000 description 11
- 101150071434 BAR1 gene Proteins 0.000 description 10
- 101100378536 Ovis aries ADRB1 gene Proteins 0.000 description 10
- DJDSLBVSSOQSLW-UHFFFAOYSA-N mono(2-ethylhexyl) phthalate Chemical compound CCCCC(CC)COC(=O)C1=CC=CC=C1C(O)=O DJDSLBVSSOQSLW-UHFFFAOYSA-N 0.000 description 7
- 238000003860 storage Methods 0.000 description 7
- 238000003491 array Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明揭示***及方法,其包含经配置以控制一组虚拟功能VF与媒体管理***MMS之间的通信的主机接口电路。所述主机接口电路可整合来自所述组VF的命令,使用所述命令将来自一组可用写入缓冲区WB的WB动态地分配给所述组VF,且使用所述经分配WB管理所述组VF的WB存取并将写入数据提供到所述MMS。对于所述组VF中的每一VF,所述主机接口电路可管理来自所述组VF的相应VF的提交队列SQ,从所述相应VF接收包含一或多个提交队列条目SQE的命令,且协调所述一或多个经接收SQE与经分配WB。
Description
优先权申请
本申请案主张2017年4月12日申请的第15/485,877号美国申请案的优先权的权益,所述申请案的全部内容以引用方式并入本文中。
背景技术
在现代计算技术中,存储器装置通常是计算机或其它电子装置中的内部半导体集成电路,且可归类为易失性存储器或非易失性存储器(NVM)。
易失性存储器需要电力来维持其数据,且尤其包含随机存取存储器(RAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或同步动态随机存取存储器(SDRAM)。
相比之下,非易失性存储器(NVM)可在未被供电时保留存储数据,且尤其包含快闪存储器、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、可擦除可编程ROM(EPROM)、电阻可变存储器、相变随机存取存储器(PCRAM)、电阻式随机存取存储器(RRAM)或磁阻式随机存取存储器(MRAM)。
每一类别或子类别在特定设置中是有利的。例如,与其它存储器类型(SRAM等)相比,通常每个位包括一个晶体管及一个电容器的DRAM在结构上非常简单,且因而广泛用于需要低成本或高容量的应用中。相比之下,通常每个位包括四个到六个晶体管的SRAM比DRAM快,且因而通常用于其中速度比成本更重要的应用中。
然而,对于每一类别或子类别,期望改进数据传送速度,例如减少时延。
发明内容
本文件尤其论述一种例如主机接口电路的设备或***,其经配置以控制一或多个虚拟功能(VF)与媒体管理***(MMS)之间的通信,经耦合到或包含一或多个非易失性存储器(NVM)媒体装置。所述主机接口电路可整合来自一或多个客户端装置或所述组VF的命令,使用所述命令将来自一组可用写入缓冲区(WB)的WB动态地分配给所述组VF,且使用所述经分配WB管理所述组VF的WB存取并将写入数据提供到所述MMS。对于所述组VF中的每一VF,所述主机接口电路可管理来自组所述VF的相应VF的一或多个提交队列(SQ),从所述相应VF接收包含一或多个提交队列条目(SQE)的命令,且协调所述一或多个经接收SQE与经分配WB。
所述主机接口电路可经配置以确定是否存在足够资源来将所述一或多个经接收SQE保持在所述SQ中。例如,如果存在足够资源来将所述一或多个经接收SQE保持在提交队列(SQ)中,那么所述主机接口电路可经配置以将所述一或多个经接收SQE添加到所述SQ。如果不存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么所述主机接口电路可经配置以将命令失败通知提供例如到通过通信接口耦合的客户端装置,或到来自所述组VF的所述相应VF或一或多个VF等。
揭示此类设备或***的操作方法以及机器可读媒体及其它实施例。
本发明内容旨在提供本专利申请案的标的物的概述。本发明内容并非旨在提供本发明的排他性或详尽解释。包含详细描述以提供关于本专利申请案的进一步信息。
附图说明
在未必按比例绘制的附图中,类似数字可在不同视图中描述类似组件。具有不同字母后缀的类似数字可表示类似组件的不同实例。附图以实例而非限制的方式大体上说明本文件中所论述的各种实施例。
图1说明包含非易失性存储器(NVM)控制器及一组NVM媒体装置的实例低时延NVM***。
图2说明包含***组件互连高速(PCIe)端点、主机接口电路及媒体管理***(MMS)的实例主机接口***。
图3说明实例虚拟功能(VF)提交队列(SQ)。
图4说明实例写入缓冲区(WB)。
图5说明虚拟功能(VF)内组织的实例提交队列(SQ)及写入缓冲区(WB)存取元件。
图6说明具有动态提交队列条目(SQE)的实例提交队列(SQ)。
图7说明实例写入数据存取结构。
图8到11说明包含基址寄存器(BAR)及一组写入缓冲区(WB)的第二写入数据存取结构。
图12说明用来控制一或多个虚拟功能(VF)与媒体管理***(MMS)之间的通信的实例方法。
图13说明信息处置***的实例框图。
具体实施方式
新兴的非易失性存储器(NVM)技术为存储及检索数据提供显著减少的时延,使得现存NVM接口协议中的固有时延已成为总体***性能的限制因素。用于减少NVM接口时延的替代方案(例如使用查询与中断、或推送命令、分散-收集列表或将数据写入到NVM中)试图解决此类问题。然而,使用虚拟功能(VF)抽象对暴露于非易失性媒体的大数目个存储客户端进行此类方案的可扩展流控制仍是挑战。
本发明人已尤其认识到用来通过通信接口(例如***组件互连高速(PCIe)或其它接口)为一或多个虚拟功能(VF)提供对非易失性存储器(NVM)的可扩展、高效、高处理量、低时延存取的设备、***及方法。在某些实例中,VF可在存储控制器中包含启用或隔离多个存储客户端的精简配置孔。在实例中,NVM控制器可从一或多个VF接收命令(例如对应于一或多个写入数据逻辑块的一或多个提交队列条目(SQE)),且将来自一组可用写入缓冲区(WB)的WB动态地分配给与一或多个SQE协调的一或多个VF。NVM控制器可在接收数据时(例如,在接收特定SQE的所有数据逻辑块之前)将数据从经分配WB提供到NVM媒体装置,从而增加写入数据到NVM媒体装置的传送速度。在一个特定实例中,使用本文中所揭示的设备、***及方法,可实现使初始逻辑块之后的每个写入数据逻辑块增加0.8微秒的传送速度。与使用传统存储***或写入数据传送方案的等效写入数据传送相比,在到NVM媒体装置的4逻辑块地址(LBA)写入数据传送中,可实现2.4微秒的节省。
此外,在成功地写入到NVM媒体装置之后,NVM控制器可重新分配WB,使得在某些实例中,个别WB可为单个SQE提供从客户端装置到NVM媒体装置的多次写入数据传送。此类设备、***及方法可减少写入之前WB的保持时间以及直到下一次写入的时间,从而减少总体WB计数要求(例如,与平均写入大小成反比),且消除或减少与客户端装置故障相关的问题同时将数据保持在与NVM控制器或客户端装置相关联的WB中。
例如,本文中所描述的设备、***及方法可使用最少控制器资源(例如,有效地使用控制器存储器缓冲区来进行命令排队及写入数据,或“精简配置”)扩展到大数目个虚拟服务器客户端,从而避免传统存储***(例如,NVM高速(NVMe)固态驱动器(SSD)存储***)或其它写入数据传送方案中发现的时延,以表示相比于现存硬件的改进及在某些实例中对现存硬件的改进。例如,减少与将逻辑块地址(LBA)命令提供到NVM媒体装置相关联的时延。另外,提供单扇区写入能力,从而消除对预分配过程步骤的需要(例如,节省1微秒的请求/分配握手时间等)。此外,由于在完成写入到NVM媒体装置之后WB空闲以接收额外数据,因此避免了由于部分资源分配所致的死锁,从而改进总体***可靠性。
在各种实例中,减少基址寄存器(BAR)空间中的寻址能力要求。由于可使用SQE值确定LBA值,因此消除在BAR空间内完全映射LBA范围的需要,从而允许BAR空间(例如,基址寄存器存取#1(BAR1)空间等)中的大容量NVM***的寻址能力。
图1说明包含非易失性存储器(NVM)控制器105的实例NVM***100,NVM控制器105经配置以通过一或多个通信接口(例如***组件互连高速(PCIe)接口)控制一或多个虚拟功能(VF)与一组NVM媒体装置110之间的通信。在实例中,NVM控制器105可包含主机接口电路115、PCIe端点120及媒体管理***(MMS)125。在实例中,一或多个客户端或其它装置可使用通信接口耦合到NVM***100或一或多个VF。
一或多个VF可通过一或多个通信接口(例如,PCIe端点120)例如从一或多个客户端装置接收命令。在实例中,PCIe端点120可包含选择性地耦合到大数目个VF(例如数个客户端服务器或其它客户端装置等)的一或多个通信接口。
主机接口电路115可从一或多个VF或客户端装置接收命令。命令可尤其包含写入命令、读取命令、或一或多个其它命令或指令。写入命令可包含将数据写入到MMS 125的一或多个提交队列条目(SQE),且读取命令可包含从MMS 125读取数据并将数据提供到一或多个VF或客户端装置的指令。
主机接口电路115可经配置以接收一或多个提交队列(SQ)或SQE,且协调一或多个经接收SQ或SQE与来自相关联于主机接口电路115的一组写入缓冲区(WB)的可用WB。主机接口电路115可管理一或多个VF对可用WB的WB存取。在实例中,一或多个VF可创建一或多个虚拟SQ以从一或多个客户端装置接收SQE。如果有足够WB可用于SQE,那么主机接口电路115可接受SQE,创建相关联事务的中间表示(例如,“上下文”),分配SQE所要的一或多个WB,且使用一或多个经分配WB来将数据传送到MMS 125。
在适用时,主机接口电路115可将关于可用WB或MMS 125的通知(例如命令执行状态或读取数据)提供到请求事务的客户端(例如一或多个VF或客户端装置)。在实例中,命令执行状态可包含:是否成功地将与经接收写入命令相关联的数据写入到MMS 125中;是否不存在足够资源来将一或多个经接收SQE保持在SQ中;或一或多个其它错误或通知(例如,带内错误、更昂贵的带外错误等)。
NVM控制器105进一步包含NVM媒体装置110与MMS 125之间的控制器存储器缓冲区130及媒体接口135。在某些实例中,MMS 125包含控制器存储器缓冲区130、媒体接口135或NVM媒体装置110(例如,一或多个非易失性存储器媒体装置,其各自具有一或多个存储器阵列(其各自具有多个存储器单元等))中的一或多者。在实例中,媒体接口可包含用来在NVM媒体装置110与主机接口电路115之间传送数据的一或多个物理接口。在实例中,NVM媒体装置110可为与MMS 125或NVM控制器105分离的组件。
主机接口电路115或MMS 125可尤其包含电路或固件,例如数个组件或集成电路。例如,主机接口电路115可包含经配置以控制跨MMS 125的存取且在一或多个VF与NVM媒体装置110之间提供转换层的一或多个存储器控制单元、电路或组件。主机接口电路115可包含用来将数据传送到NVM媒体装置110或从NVM媒体装置110传送数据的一或多个输入/输出(I/O)电路、线路或接口。
图2说明实例主机接口***200,其包含***组件互连高速(PCIe)端点220、主机接口电路215及媒体管理***(MMS)225。主机接口电路215可经配置以控制耦合到PCIe端点220的一或多个虚拟功能(VF)与MMS 225之间的通信。
主机接口电路215可包含物理功能(PF)管理器电路240、命令(CMD)队列管理器电路241、VF控制器242、VF提交队列(VF_SQ)电路243、VF写入缓冲区列表(VF_WBL)电路244及VF写入缓冲区(VF_WB)存取电路245中的一或多者。在其它实例中,主机接口电路215可包含一或多个其它控制器或控制电路。
在实例中,PF管理器电路240可提供对主机接口电路215的总体控制,且可通过PCIe端点220将控制信息(CONTROL)发送到一或多个VF或从一或多个VF接收控制信息(CONTROL)。如上文所描述,在其它实例中,PCIe端点220可包含一或多个其它通信接口。
CMD队列管理器电路241可经配置以例如通过VF_SQ电路243而跨一或多个VF整合命令,且将命令(COMMANDS)(例如经整合命令)提供到MMS 225。在实例中,命令可包含来自一或多个VF的提交队列条目(SQE)命令。CMD队列管理器电路241可从MMS 225接收命令完成,且可管理往返于MMS 225的握手及其它通信或询问。
例如,CMD队列管理器电路241可使准备写入到MMS 225的一或多个VF的提交队列(SQ)在主机接口电路215中轮转。CMD队列管理器电路241可为写入命令提供对来自写入缓冲区列表(WBL)的经分配写入缓冲区(WB)的引用。服务可包含经由轮询,或可包含加权或完全质量的服务机制。给定SQE可与一或多个逻辑块地址(LBA)缓冲区(例如,WB)连同从SQE的起始LBA的相对偏移量一起重复地发送到MMS 225。随着将每一LBA缓冲区发送到MMS 225,从WBL移除LBA缓冲区,从而允许使其空闲以被分配给来自一或多个VF的一或多个额外或新SQE。在实例中,MMS 225可将命令完成推送到CMD队列管理器电路241,CMD队列管理器电路241可将包含命令完成的通知提供到VF、客户端装置等。
CMD队列管理器电路241可经配置以从MMS 225接收读取数据(READ DATA),且通过PCIe端点220将读取数据(READ DATA)或读取数据的表示从MMS 225提供到一或多个VF或客户端装置。此外,CMD队列管理器电路241可经配置以通过PCIe端点220将通知(例如完成(COMPLETION)(例如,命令完成、写入完成等)提供到一或多个VF或客户端装置。
VF控制器242可经配置以将配置信息(CONFIGURATION)发送到PCIe端点220或从PCIe端点220接收配置信息(CONFIGURATION),或通过PCIe端点220将配置信息(CONFIGURATION)发送到一或多个VF或从一或多个VF接收配置信息(CONFIGURATION),且使用配置信息(CONFIGURATION)管理及控制一或多个VF。VF控制器242可进一步包含或耦合到VF_SQ电路243及VF_WBL电路244中的一者或两者,且可经配置以使用来自VF_SQ电路243或VF_WBL电路244的信息管理或控制一或多个VF。
VF_SQ电路243可经配置以从PCIe端点220接收命令(COMMAND),且在某些实例中,可将命令提供到CMD队列管理器电路241,或从CMD队列管理器电路241接收信息。在实例中,可通过PCIe端点220从一或多个VF接收命令。在实例中,主机接口电路215可包含数个VF_SQ电路,例如多个VF_SQ电路(每个VF一或多个)等。在某些实例中,命令可包含例如将数据写入到MMS 225(包含一或多个非易失性存储器(NVM)媒体装置等)的一或多个提交队列条目(SQE)。
VF_WBL电路244可经配置以管理例如从一或多个VF到MMS 225的待决数据写入列表。在实例中,主机接口电路215可包含数个VF_WBL电路,例如多个VF_WBL电路(每个VF一个)等。VF_WBL电路244可经配置以管理一组写入缓冲区(WB),且协调来自VF_SQ电路243的一或多个经接收SQE与来自WB组的可用WB。在某些实例中,VF_WBL电路244可经配置以从VF_SQ电路243、VF控制器242或CMD队列管理器电路241中的一或多者接收信息或将信息提供到VF_SQ电路243、VF控制器242或CMD队列管理器电路241中的一或多者。
VF_WB存取电路245可经配置以从VF_WBL电路244、VF_SQ电路243或VF控制器242中的一或多者接收信息,且管理一或多个VF的WB存取并将写入数据从一或多个VF提供到MMS225。
图3及4说明用来支持主机接口电路的控制器存储器缓冲区、提交队列(SQ)及写入缓冲区(WB)的实例数据结构。此类结构可跨一或多个VF复制,且可由主机接口电路通过通信接口或一或多个VF的基址寄存器(BAR)来存取。
图3说明个别VF(VFn)的实例虚拟功能(VF)提交队列(SQ)305。此结构可跨一或多个VF复制,且可使用VFn的通信接口的基址寄存器#0(BAR0)来存取。在其它实例中,此结构可使用一或多个VF中暴露的任何基址寄存器(BAR)的任何全部或部分区域来存取。在实例中,VF SQ 305可包含具有一或多个提交队列条目(SQE)的SQ 310,例如第一SQE 311、第二SQE 312及第三SQE 313。主机接口电路可接收VFn的一或多个SQE以用于读取及写入命令。
图4说明个别VF(VFn)的实例虚拟功能(VF)写入缓冲区(WB)405。此结构可跨一或多个VF复制,且可使用VFn的基址寄存器#1(BAR1)来存取。在实例中,VF WB 405可包含一或多个写入数据逻辑块,例如逻辑块地址0(LBA0)410、逻辑块地址1(LBA1)、逻辑块地址2(LBA2)412及逻辑块地址n(LBAn)413等。主机接口电路可从VFn的BAR1接收一或多个写入数据逻辑块以用于写入命令,但在某些实例中,在读取命令期间不从BAR1接收一或多个写入数据逻辑块。在实例中,读取数据可直接从主机接口电路传送到客户端装置。在其它实例中,可按需使用一或多个其它基址寄存器(BAR)空间。
在某些实例中,本文中所描述的设备、***及方法可消除在BAR1空间内完全映射LBA范围的需要,从而允许大容量NVM***的可寻址性。可通过提交队列条目(SQE)值(例如,使用初始LBA及提交队列(SQ)的顺序等)显式地确定LBA值。在某些实例中,此确定可显著地减小个别VF的BAR1地址寄存器要求的大小,从而取决于实施方法减少芯片设计中所要的逻辑门。此外,在某些实例中,此确定可消除与BAR空间限制相关联的约束(例如,500MB的PCIeBAR空间限制),从而允许数太字节或更大的NVM媒体装置容量。
客户端装置可通过将新SQE写入到BAR0来发布命令。主机接口电路可在内部管理将新SQE添加到主机接口电路的SQ。如果不存在足够资源来将新SQE保持在SQ中,那么主机接口电路可经配置以将命令完成通知返回到VF,从而反映命令失败。在某些实例中,命令完成通知可包含指示资源溢出/耗尽案例的任选状态。在实例中,主机接口电路可任选地建议客户端装置在一段时间内(例如,固定或随机等)不重新提交命令。所建议的重新提交时间段可源自主机接口电路,其反映与以类似响应满足的客户端写入请求一致的资源可用性的某种估计。相比之下,如果存在足够资源来保持新SQE,那么主机接口电路可为与新SQE相关联的数据分配第一WB。
一旦分配第一WB,就可使用BAR1将第一数据逻辑块写入到第一WB。主机接口电路可启动将写入数据缓冲区中的数据提交给MMS,包含一或多个NVM媒体装置。同时,可将剩余数据逻辑块写入到BAR1,直到整个长度的写入操作已传送到主机接口电路。
在实例中,如果不存在足够资源来处置对命令(例如,一或多个经接收SQE)的写入数据缓冲,那么主机接口电路可发送指示已将数据传送到MMS的WB的数目的中间完成通知。中间或提前完成通知可帮助客户端装置中止推送操作,且可向客户端装置指示相关联命令可能比其中资源可用的命令时延更多。在实例中,客户端装置可查询最终完成,且如果不存在其它事务要提交或不存在生产工作要完成,那么客户端装置可在获得最终完成之前等待异步中断,同时执行其它工作。可使用一或多种传统数据传送方案将命令的写入数据的剩余部分传送到MMS,例如由主机接口电路使用DMA语义从客户端装置或VF拉取等。在写入命令已完成时,主机接口电路可将具有写入命令状态的完成队列条目添加到命令队列管理器电路,更新阶段标签及任选地命令队列尾部。在某些实例中,完成队列条目可向客户端装置表示最终完成,从而指示可进行清理。
图5说明一组虚拟功能(VF)500内组织的实例提交队列(SQ)515及写入缓冲区(WB)存取520。在实例中,VF组可包含多个VF,例如VF0、VFn等。VF控制器505可管理VF组的配置,且可包含单独控制单元,例如VF0控件510、VFn控件511等。在实例中,提交队列515可包含使用基址寄存器#0(BAR0)写入的一或多个提交队列元件(SQE),且写入缓冲区存取520可包含例如使用基址寄存器#1(BAR1)写入到一或多个写入缓冲区(WB)的一或多个写入数据逻辑块。写入缓冲区列表(WBL)525可协调SQE与相应WB。
图6说明动态地分配提交队列条目(SQE)610到613的虚拟功能(VF)的实例提交队列(SQ)600。(例如,提交队列(SC)电路等的)提交队列(SQ)元件615可使用例如通信接口或VF的基址寄存器#0(BAR0)从客户端装置接收新SQE 613。在实例中,主机接口电路可例如从一组可用写入缓冲区(WB)动态地分配写入缓冲区(WB)620,将WB 620附加到新SQE 613,且将新SQE 613添加到SQ 600的末端(例如,在SQ 600的尾部)。在实例中,如果不存在足够资源来在SQ中创建SQE条目,那么主机接口电路可将命令失败发送例如到客户端装置或VF。SQ600可进一步包含SQ控制元件605。在实例中,可将初始逻辑块地址(LBA)WB附加到写入缓冲区列表(WBL)。
在实例中,提交队列条目(SQE)可包含客户端SQE区域及额外控制器特定区域。客户SQE区域可包含例如以下一或多项的区域:操作代码;命令ID(CID);起始LBA;传送大小;控制器存储器缓冲区(CMB)旗标;CMB指标/偏移;主机SGL/PRP地址;元数据;或一或多种其它类型的数据或信息。控制器特定区域可包含例如以下一或多项的区域:WBL指标;指示将CMB用于写入资源对将客户端存储器用于写入资源的旗标;“准备提交数据”、“所有数据可用”的状态旗标;或一或多种其它类型的数据或信息。
图7说明包含提交队列条目(SQE)705及逻辑块地址缓冲区706、707、708的第一实例写入数据存取结构700。在实例中,SQE 705可包含起始LBA、大小及CID。
对于写入命令,SQE 705可包含指示例如来自客户端存储器或来自控制器存储器缓冲区(CMB)的数据的起源的旗标(例如,“使用CMB旗标”)。可尽最大努力将CMB用于写入数据。如果CMB中存在足够资源用于SQE 705,那么可使用CMB来将写入数据传送到非易失性存储器(NVM)装置。如果CMB中不存在足够资源用于SQE 705,那么NVM控制器、主机接口电路或虚拟功能(VF)控制器可退回到例如使用SGL/SQE 705中的PRP参考将客户端存储器用作写入数据源。
当选择CMB时,可采用写入缓冲区(WB)模块。主机接口电路可管理将写入缓冲区(WB)动态地分配给SQE 705,且可将SQE 705的经分配WB链接到写入缓冲区列表(WBL)。
控制器WB区域可经存储器映射到VF的基址区域(BAR),例如基址寄存器#1(BAR1)720。BAR1 720可用来存取写入数据缓冲区。客户端装置可按顺序将每一逻辑块地址(LBA)或写入数据逻辑块写入到BAR1 720。例如,客户端装置可按顺序将LBAn、LBAn+1、LBAn+2等写入到LBA缓冲区706、707、708等。LBA可例如从SQE 705偏移达命令(CMD)ID或一或多个其它偏移,例如以允许控制器将写入数据缓冲区与相关SQE相关联。当填充每一缓冲区时,可分配新缓冲区。
在某些实例中,LBA可通过按顺序相对于起始LBA放置来维护。在某些实例中,客户端装置可包含LBA号与客户端用户数据作为元数据。在实例中,错误检测(例如,循环冗余校验(CRC)等)可能需要显式地确定LBA号以在单次扫描中覆盖客户端数据及LBA号两者。可按顺序将每一缓冲区添加到写入缓冲区列表(WBL)的末端。当已填充最后一个缓冲区时,可将SQE发送到媒体管理***(MMS)以提交到存储器,例如NVM媒体装置。此外,在某些实例中,可执行存取方法以进行边界检查及资源限制检查。
在实例中,如果不存在可用缓冲区,或如果主机接口电路在为SQE分配写入缓冲区时不具有足够数目个可用缓冲区,那么可将错误条件返回到客户端装置。在实例中,错误条件可包含中间完成,指示最后一个有效LBA号提交给存储器(例如,NVM媒体装置)的。作为响应,主机接口电路或NVM控制器可切换模式以例如根据来自SQE的SGL/PRP指针使用直接存储器收集操作从客户端存储空间拉取剩余写入数据。在某些实例中,如果在SQE命令已切换模式之后客户端装置继续写入额外数据,那么可丢弃此额数外据而无需另外通知客户端装置。
尽管单个SQE的经分配WB在上文被描述为在BAR存储器空间中具有物理连续性,但在其它实例中,此类WB可经分散在BAR存储器空间中且不需要此连续性。此外,在某些实例中,LBA大小可大于、等于或小于WB,或反之亦然,使得单个WB可传送一或多个写入数据逻辑块,或一或多个WB可能需要传送一或多个写入数据逻辑块。
图8到11说明包含基址寄存器(BAR)及一组写入缓冲区(WB)的第二写入数据存取结构。
图8到9说明在特定虚拟功能(VFn)的BAR#1(BAR1)空间中包含三个已用WB及三个空闲WB的实例BAR 820、920。客户端装置可识别BAR1存储器映射中的具有大于或等于特定提交队列条目(SQE)的所要逻辑块地址(LBA)扇区数目的连续大小的空闲区域。例如,对于包含三个LBA扇区的SQE,客户端装置可识别具有足够数目个空闲WB的空闲区域,例如在BAR820中的已用WB与空闲WB之间。
图9说明具有LBAn的起始LBA、3个LBA扇区的大小及BAR1_Offset的起始位置的实例SQE 905。写入缓冲区列表(WBL)可管理与SQE 905相关联的写入数据逻辑块,例如,第一LBA缓冲区906、第二LBA缓冲区907及第三LBA缓冲区908。例如,可在WBL等中管理每一WB的地址。起始逻辑块地址LBAn“ADDRESS”可等于BAR1+SQE.BAR1_Offset,且后续WB可相应地寻址,例如ADDRESS+1*LBA_SIZE处的LBAn+1、ADDRESS+2*LBA_SIZE处的LBAn+2等。
图10说明使用中的实例BAR 1020,其包含VFn的BAR1空间中的六个已用WB以便在媒体管理***(MMS)、非易失性存储器(NVM)等中写入与图9的SQE 905相关联的数据。
图11说明事务(例如写入与图9的SQE 905相关联的数据)完成之后的实例BAR1120,其包含VFn的BAR1空间中的三个已用WB。
图12说明例如使用主机接口电路控制一或多个虚拟功能(VF)与媒体管理***(MMS)之间的通信(例如写入操作)的实例方法1200。
在实例中,客户端装置可通过使用通信接口(例如***组件互连高速(PCIe)接口(例如,PCIe端点))将新提交队列条目(SQE)写入到基址寄存器(BAR)(例如VF的基址寄存器#0(BAR0))来发布命令。
在1205处,可从一或多个VF接收命令,例如写入命令,其包含将数据写入到MMS(包含例如一或多个非易失性存储器(NVM)媒体装置)的一或多个提交队列条目(SQE)。在实例中,主机接口电路可包含经配置以从一或多个VF接收一或多个SQE且管理主机接口电路的SQ的提交队列(SQ)电路。在其它实例中,主机接口电路可接收一或多个其它命令,例如写入命令等。
在1210处,可协调一或多个经接收SQE与例如来自主机接口电路的一组可用写入缓冲区(WB)的可用WB。在实例中,主机接口电路可包含经配置以管理与主机接口电路相关联的一组WB的写入缓冲区列表(WBL)电路。
在实例中,经接收SQE可与特定数目个WB相关联。当主机接口电路中存在足够资源来将一或多个经接收SQE保持在SQ中时(包含例如存在足够可用WB来保持、管理或接收与一或多个经接收SQE相关联的数据),那么可将一或多个SQE添加到SQ。在实例中,SQ电路可将一或多个经接收SQE添加到SQ。相比之下,当主机接口电路中不存在足够资源来将一或多个经接收SQE保持在SQ中时(例如包含不存在足够可用WB来保持、管理或接收与一或多个经接收SQE相关联的数据),可不将一或多个SQE添加到SQ,且可将此通知提供到一或多个VF、客户端装置等。
在1215处,可例如使用WB存取电路管理一或多个VF对可用WB的WB存取。例如,当存在足够资源来将一或多个经接收SQE保持在SQ中时,WB存取电路可经配置以例如使用通信接口的BAR(例如基址寄存器#1(BAR1))提供对来自客户端装置或一或多个VF的写入数据的存取。
在实例中,每一SQE可能需要主机接口电路的一定数目个WB来保持与所述SQE相关联的写入数据。当接收SQE需要一定数目个WB且所述数目个WB可用时,WB存取电路可将对数据写入的存取提供到可用WB。随着数据从个别WB写入到MMS,个别WB空闲以接收额外写入数据。在某些实例中,可在接收与个别WB的SQE相关联的所有写入数据之前,将数据从个别WB写入到MMS。在实例中,即使写入命令完全执行所需的WB多于当前可用WB,主机接口电路仍可接收及接受写入命令,因为随着将数据写入到MMS,个别WB可空闲以接收额外写入数据。在其它实例中,如果写入命令完全执行所需的WB多于当前可用WB,或如果所需的WB数目超过可用WB达阈值,那么可实施一或多种传统数据传送方案,例如传统中断、直接将数据从主机存储器拉取到WB等中。
在1220处,可将例如指示成功地将数据写入到MMS、命令失败等的通知提供到一或多个VF。可使用命令队列管理器电路提供通知。如果不存在足够可用WB来保持、管理或接收与一或多个经接收SQE相关联的数据,那么命令队列管理器电路可将命令完成通知提供到通信接口,从而反映命令失败。
在某些实例中,本文中所描述的基础方法可扩展到一或多个其它规范,包含例如根据NVMe规范进行通信的NVM高速(NVMe)接口。
图13说明根据本发明的实施例的信息处置***1300的实例框图,信息处置***1300并入包含存储器装置1307的至少一个芯片或芯片组合件1304。在实例中,存储器装置1307可包含多个堆叠式存储器单元阵列或一或多个非易失性存储器(NVM)媒体装置,例如本文中所描述。
图13中所说明的信息处置***1300可包含电子计算装置,例如桌上型或膝上型计算机、平板计算机、移动电子装置或智能电话、游戏机、车辆或飞机、或一或多个其它电子装置或电子装置组件。
信息处置***1300包含经配置以提供跨信息处置***1300的各种组件的通信的***总线1302。***总线1302可经实施为单个总线或总线组合。
芯片组合件1304可包含处理器1306、一或多个额外逻辑芯片1308或一或多个其它组件。一或多个额外逻辑芯片1308可尤其包含模/数转换器(ADC)或一或多个其它电路,例如专用集成电路(ASIC)等。
信息处置***1300可包含一或多个外部组件1311(例如外部存储器),一或多个外部组件1311又可包含模块化存储器1312(例如一或多个硬盘驱动器等)、或一或多个可卸除媒体1313或可卸除***装置1315(例如压缩光盘(CD)、数字视频光盘(DVD)、快闪驱动器等)。在某些实例中,本文中所描述存储器装置中的一或多者可为一或多个外部组件1311。
信息处置***1300还可包含显示器1309、键盘/控制器1314(例如,鼠标、触摸屏、触摸板或其它用户输入装置)或一或多个其它***组件1310(例如,扬声器、麦克风、相机等)。
额外注释及实例
标的物(例如,一种***)的实例(例如,“实例1”)可包含主机接口电路,所述主机接口电路经配置以控制一组虚拟功能(VF)与媒体管理***(MMS)之间的通信。所述主机接口电路可包含命令队列管理器电路,所述命令队列管理器电路经配置以整合来自所述组VF的命令,以使用所述命令将来自一组可用写入缓冲区(WB)的WB动态地分配给所述组VF,且将命令提供到所述MMS。对于所述组VF中的每一VF,所述主机接口电路可包含:VF提交队列电路,其经配置以管理来自所述组VF的相应VF的提交队列(SQ),且从所述相应VF接收命令,包含一或多个提交队列条目(SQE);及VF写入缓冲区列表(WBL)电路,其经配置以管理所述相应VF的待决写入列表且协调所述一或多个经接收SQE与经分配WB。所述主机接口电路可包含WB存取电路,所述WB存取电路经配置以管理所述组VF的WB存取且将写入数据提供到所述MMS。
在实例2中,实例1的标的物可任选地经配置使得所述VF提交队列电路经配置以确定是否存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,其中如果存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么所述VF提交队列电路经配置以将所述一或多个经接收SQE添加到所述SQ;且其中如果不存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么所述命令队列管理器电路经配置以提供命令失败通知。
在实例3中,实例1到2中任何一或多个实例的标的物可任选地经配置使得每一SQE需要一定数目个经分配WB来将写入数据提供到所述MMS,且在将写入数据提供到所述MMS之后,所述经分配WB空闲以接收额外写入数据。
在实例4中,实例1到3中任何一或多个实例的标的物可任选地经配置使得第一经分配WB经配置以接收对应于SQE的初始写入数据,且在将与所述SQE相关联的所有数据逻辑块接收到所述经分配WB之前将所述初始写入数据提供到所述MMS。
在实例5中,实例1到4中任何一或多个实例的标的物可任选地经配置以包含非易失性存储器(NVM)控制器,其包含:所述主机接口电路;通信接口;及所述MMS,其中所述MMS经配置以耦合到NVM媒体装置,所述主机接口电路经配置以使用通信接口控制客户端装置与所述组VF之间的通信,且所述通信接口包含***组件互连高速(PCIe)接口。
在实例6中,实例1到5中任何一或多个实例的标的物可任选地经配置使得所述VF提交队列电路经配置以使用通信接口的一或多个基址寄存器(BAR)接收所述一或多个SQE且接收写入数据。
在实例7中,实例1到6中任何一或多个实例的标的物可任选地经配置使得所述命令队列管理器电路经配置以从所述相应VF接收读取命令,将所述读取命令发送到所述MMS,从所述MMS接收对应于所述读取命令的读取数据,且将读取数据提供到所述相应VF。
标的物(例如,一种用来控制一组虚拟功能(VF)与媒体管理***(MMS)之间的通信的方法)的实例(例如,“实例8”)可包含:使用命令队列管理器电路整合来自所述组VF的命令,且使用所述命令将来自一组可用写入缓冲区(WB)的WB动态地分配给所述组VF;对于所述组VF中的每一VF:使用VF提交队列电路管理来自所述组VF的相应VF的提交队列(SQ),且从所述相应VF接收命令,其包含一或多个提交队列条目(SQE);及使用VF写入缓冲区列表(WBL)电路管理所述相应VF的待决写入列表且协调所述一或多个经接收SQE与经分配WB;以及使用WB存取电路管理所述组VF的WB存取且将写入数据提供到所述MMS。
在实例9中,实例8的标的物可任选地经配置以包含确定是否存在足够资源来将所述一或多个经接收SQE保持在所述SQ中;及如果存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么使用所述VF提交队列电路将所述一或多个经接收SQE添加到所述SQ;或如果不存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么使用所述命令队列管理器电路提供命令失败通知。
在实例10中,实例8到9中任何一或多个实例的标的物可任选地经配置使得管理所述组VF的WB存取包含:在经分配WB处接收对应于SQE的写入数据;及将写入数据从所述经分配WB提供到所述MMS,其中每一SQE需要一定数目个经分配WB来将写入数据提供到所述MMS,且在将写入数据提供到所述MMS之后,来自所述组WB的所述经分配WB空闲以接收额外写入数据。
在实例11中,实例8到10中任何一或多个实例的标的物可任选地经配置以包含:在第一经分配WB处接收对应于SQE的初始写入数据;及在接收所述经分配WB的写入数据之后,在所述组WB接收与个别WB的所述SQE相关联的所有逻辑块之前,将所述初始写入数据从所述经分配WB提供到所述MMS。
在实例12中,实例8到11中任何一或多个实例的标的物可任选地经配置以包含使用***组件互连高速(PCIe)接口控制客户端装置与所述组VF之间的通信,其中将写入数据提供到所述MMS包含将写入数据提供到非易失性存储器(NVM)装置。
在实例13中,实例8到12中任何一或多个实例的标的物可任选地经配置使得接收所述一或多个SQE且管理所述组VF的WB存取包含使用通信接口的一或多个基址寄存器(BAR)。
标的物(例如,至少一种机器可读媒体)的实例(例如,“实例14”)可包含指令,所述指令在由主机接口电路的处理电路执行时使所述主机接口电路控制一组虚拟功能(VF)与媒体管理***(MMS)之间的通信,包含:整合来自所述组VF的命令;使用所述命令将来自一组可用写入缓冲区(WB)的WB动态地分配给所述组VF;对于所述组VF中的每一VF:管理来自所述组VF的相应VF的提交队列(SQ);从所述相应VF接收命令,其包含一或多个提交队列条目(SQE);及协调所述一或多个经接收SQE与经分配WB;以及使用所述经分配WB管理所述组VF的WB存取且将写入数据提供到所述MMS。
在实例15中,实例14的标的物可任选地经配置以包含指令,所述指令在由所述主机接口电路的所述处理电路执行时使所述主机接口电路:确定是否存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,且如果存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么将所述一或多个经接收SQE添加到所述SQ;或如果不存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么提供命令失败通知。
在实例16中,实例14到15中任何一或多个实例的标的物可任选地经配置使得在由所述主机接口电路的所述处理电路执行时使所述主机接口电路管理所述一或多个VF对可用WB的WB存取的所述指令包含用来进行以下操作的指令:在经分配WB处接收对应于SQE的写入数据;及将写入数据从所述经分配WB提供到所述MMS,其中每一SQE需要一定数目个经分配WB来将写入数据提供到所述MMS,且在将写入数据提供到所述MMS之后,来自所述组WB的所述经分配WB空闲以接收额外写入数据。
在实例17中,实例14到16中任何一或多个实例的标的物可任选地经配置以包含指令,所述指令在由所述主机接口电路的所述处理电路执行时使所述主机接口电路:在第一经分配WB处接收对应于SQE的初始写入数据;及在接收所述经分配WB的写入数据之后,在所述组WB接收与个别WB的所述SQE相关联的所有逻辑块之前,将所述初始写入数据从所述经分配WB提供到所述MMS。
在实例18中,实例14到17中任何一或多个实例的标的物可任选地经配置以包含指令,所述指令在由所述主机接口电路的所述处理电路执行时使所述主机接口电路:使用***组件互连高速(PCIe)接口控制客户端装置与所述组VF之间的通信。
在实例19中,实例14到18中任何一或多个实例的标的物可任选地经配置使得所述指令在由所述主机接口电路的所述处理电路执行时使所述主机接口电路:从通信接口的一或多个基址寄存器BAR接收所述一或多个SQE且接收写入数据。
在实例20中,实例14到19中任何一或多个实例的标的物可任选地经配置以包含指令,所述指令在由所述主机接口电路的所述处理电路执行时使所述主机接口电路:从所述相应VF接收读取命令;将所述读取命令发送到所述MMS;从所述MMS接收对应于所述读取命令的读取数据;且将读取数据提供到所述相应VF。
标的物(例如,一种***或设备)的实例(例如,“实例21”)可任选地组合实例1到20中任何一或多实例的任何部分或任何部分组合,以包含“用于执行实例1到20的任何一或多个功能或方法的任何部分的部件”,或包含指令的“机器可读媒体”(例如,非暂时性等),所述指令在由机器执行时使机器执行实例1到20的任何一或多个功能或方法的任何部分。
上文详细描述包含对附图的参考,所述附图形成详细描述的部分。附图以说明方式展示其中可实践本发明的特定实施例。这些实施例在本文中也被称为“实例”。此类实例可包含除所展示或所描述元件以外的元件。然而,本发明人还预期其中仅提供所展示或所描述元件的实例。此外,本发明人还预期关于特定实例(或其一或多个方面)或关于本文中所展示或所描述的其他实例(或其一或多个方面)使用所展示或所描述元件(或其一或多个方面)的任何组合或排列的实例。
本文件中所引用的所有公开案、专利及专利文件的全部内容犹如个别地以引用方式并入那样以引用方式并入本文中。如果本文件与以引用方式并入的文件之间的用法不一致,那么应将(若干)所并入引用中的用法视为对本文件的补充;如果矛盾不可调和,那么以本文件中的用法为准。
在本文件中,如专利文件中常见,术语“一(a/an)”独立于“至少一个”或“一或多个”的任何其它情况或用法使用以包含一或多个。在本文件中,除非另有指示,否则术语“或”用来指代非排他性,使得“A或B”包含“A而非B”、“B而非A”以及“A及B”。在所附权利要求书中,术语“包含”及“其中”用作相应术语“包括”及“在其中”的普通英语等效词。而且,在所附权利要求书中,术语“包含”及“包括”是开放式的,即,在权利要求中包含除此术语之后所列的元件以外的元件的***、装置、物品或过程仍被认为落入所附权利要求书的范围内。
在各种实例中,本文中所描述的组件、控制器、处理器、单元、引擎或表可尤其包含存储在物理装置上的物理电路或固件(例如,控制器可包含控制电路等)。如本文中所使用,“处理器”表示任何类型的计算电路,例如但不限于微处理器、微控制器、图形处理器、数字信号处理器(DSP)、或任何其它类型的处理器或处理电路,包含处理器或多核装置群组。
如本文中所使用,操作存储器单元或媒体装置包含从存储单元或媒体装置读取、写入到存储单元或媒体装置、或擦除存储单元或媒体装置。将存储单元或媒体装置置于预期状态的操作在本文中被称为“编程”,且可包含写入到存储单元或媒体装置或从存储单元或媒体装置擦除两者(即,存储单元可经编程为擦除状态)。
将理解,当元件被称为“在另一元件上”、“连接到另一元件”或“与另一元件耦合”时,其可直接在另一元件上、直接与另一元件连接或耦合,或可存在中间元件。相反,当元件被称为“直接在另一元件上”、“直接连接到另一元件”或“直接与另一元件耦合”时,不存在中间元件或层。如果两个元件在附图中被展示为用线连接在一起,那么除非另有指示,否则两个元件可耦合或直接耦合。
本文中所描述的方法实例可至少部分地为机器或计算机实施的。一些实例可包含编码有指令的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如上述实例中所描述的方法。此类方法的实施方案可包含代码,例如微代码、汇编语言代码、高级语言代码等。此代码可包含用于执行各种方法的计算机可读指令。代码可形成计算机程序产品的部分。此外,代码可例如在执行期间或在其它时间有形地存储在一或多个易失性或非易失性有形计算机可读媒体上。这些有形计算机可读媒体的实例可包含但不限于硬盘、可卸除磁盘、可卸除光盘(例如,压缩光盘及数字视频光盘)、磁带盒、存储卡或存储棒、随机存取存储器(RAM)、只读存储器(ROM)等。
上文描述旨在为说明性的且非限制性的。例如,上述实例(或其一或多个方面)可彼此组合使用。在审阅上文描述之后,例如所属领域一般技术人员可使用其它实施例。提供符合37C.F.R.§1.72(b)的说明书摘要以允许读者快速地确定技术发明的实质。应理解,说明书摘要将不会用来解释或限制权利要求书的范围或含义。另外,在上文具体实施方式中,可将各种特征分组在一起以简化本发明。这不应被解释为意指所主张的揭示特征对于任何权利要求都是必不可少的。而是,发明标的物可并非在于特定揭示的实施例的所有特征。因此,所附权利要求书由此并入到具体实施方式中,其中每一权利要求独立地作为单独实施例,且应预期,此类实施例可以各种组合或排列彼此组合。本发明的范围应参考所附权利要求书连同此权利要求书所赋予的等效物的全部范围一起来确定。
Claims (18)
1.一种电子***,其包括:
主机接口电路,其经配置以控制一组虚拟功能VF与媒体管理***MMS之间的通信,所述主机接口电路包含:
命令队列管理器电路,其经配置以整合来自所述一组VF的命令,以使用所述命令将来自一组可用写入缓冲区WB的WB动态地分配给所述一组VF,且将命令提供到所述MMS;
对于所述一组VF中的每一VF:
VF提交队列电路,其经配置以管理来自所述一组VF的相应VF的提交队列SQ,且从所述相应VF接收命令,其包含一或多个提交队列条目SQE;及
VF写入缓冲区列表WBL电路,其经配置以管理所述相应VF的待决写入列表且协调所述一或多个经接收SQE与经分配WB;及
WB存取电路,其经配置以管理所述一组VF的WB存取且将写入数据提供到所述MMS,
其中所述主机接口电路经配置以:分配第一多个WB以接收第一SQE的多个数据逻辑块,在第一WB处接收所述第一SQE的第一数据逻辑块,以及在接收所述第一SQE的所有所述多个数据逻辑块并将其提供到经分配第一多个WB之前,将所述第一数据逻辑块提供到第一经分配WB以提供到所述MMS。
2.根据权利要求1所述的电子***,其中所述VF提交队列电路经配置以确定是否存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,
其中如果存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么所述VF提交队列电路经配置以将所述一或多个经接收SQE添加到所述SQ;且
其中如果不存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么所述命令队列管理器电路经配置以提供命令失败通知。
3.根据权利要求1所述的电子***,其中每一SQE需要一定数目个经分配WB来将写入数据提供到所述MMS,且
其中在将写入数据提供到所述MMS之后,所述经分配WB空闲以接收额外写入数据。
4.根据权利要求1所述的电子***,其包括所述第一经分配WB,所述第一经分配WB经配置以接收所述第一数据逻辑块,且在所述主机接口电路接收与所述第一SQE相关联的所有数据逻辑块并将其提供到所述经分配第一多个WB之前将所述第一数据逻辑块提供到所述MMS。
5.根据权利要求1所述的电子***,其包含:
非易失性存储器NVM控制器,其包含:
所述主机接口电路;
通信接口;及
所述MMS,
其中所述MMS经配置以耦合到NVM媒体装置,
其中所述主机接口电路经配置以使用所述通信接口控制客户端装置与所述一组VF之间的通信,且
其中所述通信接口包含***组件互连高速PCIe接口。
6.根据权利要求1所述的电子***,其中所述VF提交队列电路经配置以使用通信接口的一或多个基址寄存器BAR接收所述一或多个SQE且接收写入数据。
7.根据权利要求1所述的电子***,其中所述命令队列管理器电路经配置以从所述相应VF接收读取命令,将所述读取命令发送到所述MMS,从所述MMS接收对应于所述读取命令的读取数据,且将读取数据提供到所述相应VF。
8.一种用来控制一组虚拟功能VF与媒体管理***MMS之间的通信的方法,所述方法包括:
使用命令队列管理器电路整合来自所述一组VF的命令,且使用所述命令将来自一组可用写入缓冲区WB的WB动态地分配给所述一组VF;
对于所述一组VF中的每一VF:
使用VF提交队列电路管理来自所述一组VF的相应VF的提交队列SQ,且从所述相应VF接收命令,其包含一或多个提交队列条目SQE;及
使用VF写入缓冲区列表WBL电路管理所述相应VF的待决写入列表且协调所述一或多个经接收SQE与经分配WB;
使用WB存取电路管理所述一组VF的WB存取且将写入数据提供到所述MMS;分配第一多个WB以接收第一SQE的多个数据逻辑块;
在第一WB处接收所述第一SQE的第一数据逻辑块且将所述第一数据逻辑块提供到第一经分配WB;以及
使用所述第一经分配WB,在接收所述第一SQE的所有所述多个数据逻辑块并将其提供到经分配第一多个WB之前,将所述第一数据逻辑块提供到所述MMS。
9.根据权利要求8所述的方法,其包含:
确定是否存在足够资源来将所述一或多个经接收SQE保持在所述SQ中;及
如果存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么使用所述VF提交队列电路将所述一或多个经接收SQE添加到所述SQ;或
如果不存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么使用所述命令队列管理器电路提供命令失败通知。
10.根据权利要求8所述的方法,其中管理所述一组VF的WB存取包含:
在经分配WB处接收对应于SQE的写入数据;及
将写入数据从所述经分配WB提供到所述MMS,
其中每一SQE需要一定数目个经分配WB来将写入数据提供到所述MMS,且其中在将写入数据提供到所述MMS之后,来自所述一组可用WB的所述经分配WB空闲以接收额外写入数据。
11.根据权利要求8所述的方法,其包含:
使用***组件互连高速PCIe接口控制客户端装置与所述一组VF之间的通信,
其中将写入数据提供到所述MMS包含将写入数据提供到非易失性存储器NVM装置。
12.根据权利要求8所述的方法,其中接收所述一或多个SQE且管理所述一组VF的WB存取包含使用通信接口的一或多个基址寄存器BAR。
13.至少一种非易失性机器可读媒体,其包含指令,所述指令在由主机接口电路的处理电路执行时使所述主机接口电路控制一组虚拟功能VF与媒体管理***MMS之间的通信,包含:
整合来自所述一组VF的命令;
使用所述命令将来自一组可用写入缓冲区WB的WB动态地分配给所述一组VF;
对于所述一组VF中的每一VF:
管理来自所述一组VF的相应VF的提交队列SQ;
从所述相应VF接收命令,其包含一或多个提交队列条目SQE;及
协调所述一或多个经接收SQE与经分配WB;及
使用所述经分配WB管理所述一组VF的WB存取且将写入数据提供到所述MMS;
分配第一多个WB以接收第一SQE的多个数据逻辑块;
在第一WB处接收所述第一SQE的第一数据逻辑块且将所述第一数据逻辑块提供到第一经分配WB;以及
使用所述第一经分配WB,在接收所述第一SQE的所有所述多个数据逻辑块并将其提供到经分配第一多个WB之前,将所述第一数据逻辑块提供到所述MMS。
14.根据权利要求13所述的至少一种非易失性机器可读媒体,其包含指令,所述指令在由所述主机接口电路的所述处理电路执行时使所述主机接口电路:
确定是否存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,且如果存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么将所述一或多个经接收SQE添加到所述SQ;或
如果不存在足够资源来将所述一或多个经接收SQE保持在所述SQ中,那么提供命令失败通知。
15.根据权利要求13所述的至少一种非易失性机器可读媒体,其中在由所述主机接口电路的所述处理电路执行时使所述主机接口电路管理所述一或多个VF对可用WB的WB存取的所述指令包含用来进行以下操作的指令:
在经分配WB处接收对应于SQE的写入数据;及
将写入数据从所述经分配WB提供到所述MMS,
其中每一SQE需要一定数目个经分配WB来将写入数据提供到所述MMS,且其中在将写入数据提供到所述MMS之后,来自所述一组可用WB的所述经分配WB空闲以接收额外写入数据。
16.根据权利要求13所述的至少一种非易失性机器可读媒体,其包含指令,所述指令在由所述主机接口电路的所述处理电路执行时使所述主机接口电路:
使用***组件互连高速PCIe接口控制客户端装置与所述一组VF之间的通信。
17.根据权利要求13所述的至少一种非易失性机器可读媒体,其中所述指令在由所述主机接口电路的所述处理电路执行时使所述主机接口电路:
从通信接口的一或多个基址寄存器BAR接收所述一或多个SQE且接收写入数据。
18.根据权利要求13所述的至少一种非易失性机器可读媒体,其包含指令,所述指令在由所述主机接口电路的所述处理电路执行时使所述主机接口电路:
从所述相应VF接收读取命令;
将所述读取命令发送到所述MMS;
从所述MMS接收对应于所述读取命令的读取数据;且
将读取数据提供到所述相应VF。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/485,877 | 2017-04-12 | ||
US15/485,877 US10503434B2 (en) | 2017-04-12 | 2017-04-12 | Scalable low-latency storage interface |
PCT/US2018/026527 WO2018191124A1 (en) | 2017-04-12 | 2018-04-06 | Scalable low-latency storage interface |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110730945A CN110730945A (zh) | 2020-01-24 |
CN110730945B true CN110730945B (zh) | 2023-10-27 |
Family
ID=63790647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880038637.6A Active CN110730945B (zh) | 2017-04-12 | 2018-04-06 | 可扩展的低时延存储接口 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10503434B2 (zh) |
EP (1) | EP3610365A4 (zh) |
CN (1) | CN110730945B (zh) |
WO (1) | WO2018191124A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503434B2 (en) | 2017-04-12 | 2019-12-10 | Micron Technology, Inc. | Scalable low-latency storage interface |
US10963295B2 (en) * | 2017-09-08 | 2021-03-30 | Oracle International Corporation | Hardware accelerated data processing operations for storage data |
US10540219B2 (en) * | 2017-09-13 | 2020-01-21 | Toshiba Memory Corporation | Reset and error handling in application specific integrated circuits |
US10528414B2 (en) * | 2017-09-13 | 2020-01-07 | Toshiba Memory Corporation | Centralized error handling in application specific integrated circuits |
KR102471219B1 (ko) | 2018-06-30 | 2022-11-25 | 후아웨이 테크놀러지 컴퍼니 리미티드 | NVMe 기반의 데이터 판독 방법, 장치, 및 시스템 |
WO2020000485A1 (zh) * | 2018-06-30 | 2020-01-02 | 华为技术有限公司 | 一种基于NVMe的数据写入方法、装置及*** |
US10768837B2 (en) * | 2018-10-31 | 2020-09-08 | EMC IP Holding Company LLC | Non-disruptive migration of a virtual volume in a clustered data storage system |
KR20210080009A (ko) * | 2019-12-20 | 2021-06-30 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스 |
US11036625B1 (en) * | 2020-04-24 | 2021-06-15 | Micron Technology, Inc. | Host-resident translation layer write command associated with logical block to physical address of a memory device |
US11789634B2 (en) | 2020-07-28 | 2023-10-17 | Samsung Electronics Co., Ltd. | Systems and methods for processing copy commands |
US11733918B2 (en) | 2020-07-28 | 2023-08-22 | Samsung Electronics Co., Ltd. | Systems and methods for processing commands for storage devices |
US11380376B2 (en) * | 2020-08-26 | 2022-07-05 | Micron Technology, Inc. | Apparatuses and methods to perform low latency access of a memory |
KR20220087297A (ko) * | 2020-12-17 | 2022-06-24 | 삼성전자주식회사 | 처리 코드를 실행하는 스토리지 장치 및 이의 동작 방법 |
US11842083B2 (en) | 2021-02-03 | 2023-12-12 | Infortrend Technology, Inc. | Storage system architecture with dual storage virtualization controllers and the data access method thereof |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6189033B1 (en) * | 1998-07-16 | 2001-02-13 | Hewlett-Packard Company | Method and system for providing performance guarantees for a data service system of a data access network system |
CN106371888A (zh) * | 2015-07-22 | 2017-02-01 | 三星电子株式会社 | 支持虚拟机的存储设备,包括其的存储***和其操作方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9092429B2 (en) * | 2012-10-23 | 2015-07-28 | Analog Devices Global | DMA vector buffer |
US10003265B2 (en) * | 2014-07-28 | 2018-06-19 | Rohm Co., Ltd. | Switching power supply device |
KR102398213B1 (ko) | 2015-03-09 | 2022-05-17 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법 |
US9760281B2 (en) * | 2015-03-27 | 2017-09-12 | Intel Corporation | Sequential write stream management |
US11042300B2 (en) * | 2015-03-31 | 2021-06-22 | Toshiba Memory Corporation | Command load balancing for NVME dual port operations |
US10114675B2 (en) | 2015-03-31 | 2018-10-30 | Toshiba Memory Corporation | Apparatus and method of managing shared resources in achieving IO virtualization in a storage device |
KR102309798B1 (ko) | 2015-04-16 | 2021-10-06 | 삼성전자주식회사 | Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법 |
US9910798B2 (en) | 2015-10-05 | 2018-03-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Storage controller cache memory operations that forego region locking |
US10007443B1 (en) * | 2016-03-31 | 2018-06-26 | EMC IP Holding Company LLC | Host to device I/O flow |
US10503434B2 (en) | 2017-04-12 | 2019-12-10 | Micron Technology, Inc. | Scalable low-latency storage interface |
-
2017
- 2017-04-12 US US15/485,877 patent/US10503434B2/en active Active
-
2018
- 2018-04-06 CN CN201880038637.6A patent/CN110730945B/zh active Active
- 2018-04-06 WO PCT/US2018/026527 patent/WO2018191124A1/en unknown
- 2018-04-06 EP EP18784568.0A patent/EP3610365A4/en not_active Withdrawn
-
2019
- 2019-11-12 US US16/681,316 patent/US10970003B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6189033B1 (en) * | 1998-07-16 | 2001-02-13 | Hewlett-Packard Company | Method and system for providing performance guarantees for a data service system of a data access network system |
CN106371888A (zh) * | 2015-07-22 | 2017-02-01 | 三星电子株式会社 | 支持虚拟机的存储设备,包括其的存储***和其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US10503434B2 (en) | 2019-12-10 |
EP3610365A1 (en) | 2020-02-19 |
US20200081659A1 (en) | 2020-03-12 |
EP3610365A4 (en) | 2021-01-27 |
US20180300064A1 (en) | 2018-10-18 |
CN110730945A (zh) | 2020-01-24 |
WO2018191124A1 (en) | 2018-10-18 |
US10970003B2 (en) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110730945B (zh) | 可扩展的低时延存储接口 | |
US11960725B2 (en) | NVMe controller memory manager providing CMB capability | |
KR101301840B1 (ko) | 비휘발성 메모리 장치의 데이터 처리 방법 | |
US11334493B2 (en) | Memory system and operating method thereof | |
US11762590B2 (en) | Memory system and data processing system including multi-core controller for classified commands | |
US11360706B2 (en) | Memory system with program mode switching based on mixed and sequential workloads | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
US11494318B2 (en) | Controller and operation method thereof | |
US20230072589A1 (en) | Hierarchical memory systems | |
CN111796759A (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
US11556276B2 (en) | Memory system and operating method thereof | |
EP4018326A1 (en) | Three tiered hierarchical memory systems | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
CN113448487A (zh) | 写入闪存管理表的计算机可读取存储介质、方法及装置 | |
US20230376340A1 (en) | Memory system and operating method thereof | |
US20230359578A1 (en) | Computing system including cxl switch, memory device and storage device and operating method thereof | |
EP4276642A1 (en) | Computing system including cxl switch, memory device and storage device and operating method thereof | |
US20210255807A1 (en) | Hierarchical memory systems | |
CN116149540A (zh) | 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置 | |
CN111159065A (zh) | 带有关键字的硬件缓存管理单元(bmu) | |
WO2021034599A1 (en) | Hierarchical memory systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |