CN114003168B - 用于处理命令的存储设备和方法 - Google Patents
用于处理命令的存储设备和方法 Download PDFInfo
- Publication number
- CN114003168B CN114003168B CN202110850755.0A CN202110850755A CN114003168B CN 114003168 B CN114003168 B CN 114003168B CN 202110850755 A CN202110850755 A CN 202110850755A CN 114003168 B CN114003168 B CN 114003168B
- Authority
- CN
- China
- Prior art keywords
- command
- controller
- queue
- storage device
- host
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000008569 process Effects 0.000 claims abstract description 15
- 230000004044 response Effects 0.000 claims 4
- 230000005540 biological transmission Effects 0.000 claims 1
- 239000000872 buffer Substances 0.000 description 16
- 238000004891 communication Methods 0.000 description 11
- 239000007787 solid Substances 0.000 description 11
- 238000012546 transfer Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010200 validation analysis 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/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/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/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0658—Controller construction 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]
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 Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
Abstract
公开了一种用于处理从主机到存储设备的命令的方法和系统。存储设备的第一控制器经由第一队列从主机接收第一命令。第一个队列被暴露给主机。存储设备基于第一命令生成第二命令,并且经由第二队列将第二命令提交给存储设备的第二控制器。第二命令和第二队列不暴露给主机。第二控制器获得并处理来自第二队列的第二命令,其中,该处理用于访问存储设备的非易失性存储介质。基于第二命令的状态,第一控制器向主机传输用于指示第一命令完成的信号。
Description
技术领域
根据本公开的实施例的一个或多个方面涉及存储设备,并且更具体地,涉及用于访问存储设备的处理命令。
背景技术
主机计算设备可以利用存储接口协议来访问非易失性存储设备,例如固态驱动器(SSD)。非易失性存储设备可以包括用于处理使用协议生成的命令的控制器。随着协议的发展,越来越多的特征(例如命令)可以被添加到协议中。如果不重新设计固态硬盘控制器,传统固态硬盘可能无法处理添加的功能。因此,希望有一种即使命令被添加到协议中,也能够处理来自主机的命令的固态硬盘控制器,而不必重新设计固态硬盘控制器。
发明内容
本公开的实施例针对一种用于处理从主机到存储设备的命令的方法。所述方法包括由存储设备的第一控制器经由第一队列从主机接收第一命令。第一个队列被暴露给主机。存储设备基于第一命令生成第二命令,并且经由第二队列将第二命令提交给存储设备的第二控制器。第二命令和第二队列不暴露给主机。第二控制器获得并处理来自第二队列的第二命令,其中所述处理用于访问存储设备的非易失性存储介质。基于第二命令的状态,第一控制器向主机传输用于指示第一命令完成的信号。
根据一个实施例,第二命令包括第一命令的一部分。
根据一个实施例,第一命令与操作以及第一存储器范围和第二存储器范围相关联,其中,第二命令包括操作和第一存储器范围。所述操作可以包括解除分配第一存储器范围和第二存储器范围。在一个实施例中,所述方法还包括由存储设备生成包括操作和第二存储器范围的第三命令;由存储设备经由第二队列向第二控制器提交第三命令;以及由第二控制器获得并处理来自第二队列的第三命令。根据一个实施例,第一控制器向主机传输用于指示第一命令完成的信号基于第二命令的状态和第三命令的状态。第二命令和第三命令可以同时获得和处理。
根据一个实施例,第二命令不同于第一命令。
根据一个实施例,存储设备是非易失性存储设备,第一控制器和第二控制器遵守非易失性存储器快速(NVMe)协议,第一队列包括遵守NVMe协议的提交队列,第一命令包括NVMe命令。
根据一个实施例,所述方法还包括由第二控制器向第一完成队列提交第一完成状态,其中,第一完成队列未暴露给主机。
根据一个实施例,信号的传输包括基于对第一完成队列的第一完成状态的处理向第二完成队列提交第二完成状态,其中,第二完成队列暴露给主机。
本公开的实施例还涉及一种存储设备,该存储设备包括非易失性存储介质,以及耦合到非易失性存储介质的一个或多个处理器。一个或多个处理器可以被配置为分别:经由第一控制器和第一队列从主机接收第一命令,其中,第一队列暴露给主机;基于第一命令生成第二命令;经由第二队列向第二控制器提交第二命令,其中,第二命令和第二队列未暴露给主机;经由第二控制器获得并处理来自第二队列的第二命令,其中,一个或多个处理器还被配置为访问存储设备的非易失性存储介质以处理第二命令;并且基于第二命令的状态,经由第一控制器向主机传输用于指示第一命令完成的信号。
本领域技术人员应该认识到,本公开的实施例允许处理命令和/或扩展,而不必重新设计传统存储控制器。此外,将主机命令分成可以并行处理的两个或多个内部命令可以导致存储设备的更好性能和/或处理开销的减少。
当参考以下详细描述、所附权利要求和附图考虑时,将更充分地理解本公开的实施例的这些和其他特征、方面和优点。当然,本发明的实际范围由所附权利要求来限定。
附图说明
参考以下附图来描述本实施例的非限制性和非穷尽性实施例,其中除非另有说明,否则在各个视图中相同的附图标记指代相同的部件。
图1是根据一个实施例的数据存储和检索系统的框图;
图2是根据一个实施例的用于提交和处理与存储通信协议相关联的命令或供应商定义的命令的各种模块的概念布局图;
图3是根据一个实施例的作为提交队列条目(SQE)存储在内部提交队列中的内部命令的布局框图;和
图4是根据一个实施例的用于处理数据集管理(DSM)命令的流程图,该命令用于从给定命名空间解除分配(取消映射)给定的一组逻辑块地址范围。
具体实施方式
在下文中,将参考附图更详细地描述示例性实施例,在所有附图中,相同的附图标记指代相同的元件。然而,本公开可以以各种不同的形式实施,并且不应被解释为仅限于这里所示的实施例。相反,提供这些实施例作为示例,使得本公开将是彻底和完整的,并且将向本领域技术人员充分传达本公开的方面和特征。因此,对于本领域普通技术人员来说对于完全理解本公开的方面和特征不是必需的过程、元件和技术可以不被描述。除非另有说明,在所有附图和书面描述中,相同的附图标记表示相同的元件,因此,其描述可以不重复。此外,在附图中,为了清楚起见,元件、层和区域的相对尺寸可能被放大和/或简化。
主机计算设备可以利用通信协议来访问非易失性存储设备,例如固态驱动器(SSD)。非易失性存储设备可以包括用于处理使用协议生成的命令的控制器。随着协议的发展,越来越多的特征(例如命令)可以被添加到协议中。如果不重新设计固态硬盘控制器,传统固态硬盘可能无法处理添加的功能。因此,希望有一种即使命令被添加到协议中,也能够处理来自主机的命令的固态硬盘控制器,而不必重新设计固态硬盘控制器。
一般而言,本公开的实施例用于被配置为处理遵循通信协议的、来自主机的命令的存储设备。通信协议可以是例如非易失性存储器快速(NVMe)协议,但是本公开的实施例不限于此,并且可以扩展到本领域技术人员将理解的其他协议。
在一个实施例中,来自主机的命令被分解成由存储设备执行的一个或多个内部命令。存储设备可以包括内部控制器,该内部控制器被配置为获取并执行一个或多个内部命令。在一个实施例中,在主机和内部控制器之间没有建立通信路径。因此,内部控制器不会暴露给主机。
在一个实施例中,主机使用诸如NVMe接口的接口将主机命令提交到被暴露给主机并与存储设备相关联的外部提交队列。存储设备的外部控制器可以获取/获得主机命令,并将所获取的命令传递给存储设备的处理器以生成内部命令。内部命令可以被提交给一个或多个内部提交队列。在一个实施例中,内部提交队列和内部控制器未暴露给主机(例如隐藏)。
内部控制器可以获取/获得内部命令,并且将它们作为遵守通信协议(例如,NVMe协议)的标准命令或供应商特定命令分派给处理器执行,就好像这些命令源自主机一样。在一个实施例中,内部命令由存储设备获取/获得并彼此同时(例如并行)执行。术语“同时”和“并行”可以表示基本上同时,或者以比顺序处理更快的速率等等。
图1是根据一个实施例的数据存储和检索系统100的框图。该系统包括配置有相同或不同操作系统的一个或多个主机设备102a-102b(统称为102)。一个或多个主机设备102可以通过存储接口总线106a、106b(统称为106)耦合到数据存储设备104。存储接口总线106可以是例如外围组件互连快速(PCIe)总线。在一个实施例中,主机设备102使用存储接口协议,通过存储接口总线106从数据存储设备104接收数据和向数据存储设备104传输数据。存储接口协议可以是2020年3月9日发布的NVMe协议,在http://nvmexpress.org处可用的NVM快速基础规范修订版1.4a(或之前或未来的修订版),其内容通过引用结合于此。出于描述本实施例的目的,NVMe协议被用作示例。然而,本领域技术人员应该理解,各种实施例可以扩展到类似于NVMe协议的其他当前或未来的存储接口协议,而不脱离本发明概念的精神和范围。
主机102可以是具有被配置为处理数据的处理器108a、108b(统称为108)的计算设备。处理器108可以是通用中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或配置有软件指令、微码和/或固件的任何其他形式的处理单元。
在一个实施例中,处理器108耦合到主机存储器空间110a、110b(统称为110)。主机存储器空间110可以是静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。应用程序可以存储在主机存储器空间110中,用于由处理器108执行。该应用可以请求向存储设备104存储数据或从存储设备104检索数据。应用程序可以基于数据的存储或检索来生成输出。输出例如可以是在显示设备上显示检索到的数据。在一个实施例中,存储设备使用内部命令来处理来自应用程序的请求,允许以更快的速度和更少的开销来处理请求。
主机存储器空间110还可以存储一个或多个外部提交队列(SQ)112a、112b(统称为112),以及一个或多个外部完成队列(CQ)114a、114b(统称为114)。主机102可以使用外部提交队列112来提交存储设备104执行的存储接口命令,并且在命令已经被执行之后,使用外部完成队列114从存储设备104接收完成消息。在一些实施例中,外部提交队列112和外部完成队列114被包括在存储设备104的控制器存储器缓冲器(CMB)中,而不是主机存储器空间110中(或在其之外)。因此,对主机存储器空间110的引用可以被理解为包括对CMB的引用。在任一情况下,外部提交队列112来提交存储设备104被暴露给主机,并且可由主机访问。
在一个实施例中,主机存储器空间110存储物理区域页面(PRP)/分散聚集列表(SGL)条目116a、116b(统称为116)和其他数据117a、117b(统称为117)。例如,PRP/SGL条目116可以描述主机存储器空间110的物理存储器位置,用于针对NVMe读命令写入从存储设备104读取的数据,以及针对NVMe写命令读取要写入存储设备104的数据。对于某些存储接口命令,逻辑块地址(LBA)范围可以作为数据117存储在主机存储器空间中,而不是包括命令本身中的范围。这种命令的一个示例是数据集管理解除分配命令,该命令可用于解除分配/取消映射主机提供的LBA范围。
存储设备104可以是非易失性存储设备,例如固态驱动器(SSD)。存储设备104可以包括通信接口118、NVMe子系统120和设备控制器122。尽管NVMe子系统120和设备控制器122被描绘为单独的模块,但是应当理解,NVMe子系统和设备控制器122的功能也可以被合并为单个模块。在一个实施例中,通信接口118包括PCIe端口和端点,其允许从主机102到存储设备104的入口通信,以及从存储设备104到主机102的出口通信。
NVMe子系统120可以包括但不限于一个或多个外部控制器124、124b(统称为124)和一个或多个内部控制器126。外部控制器124和内部控制器126可以通过一个或多个处理器来实现,例如专用集成电路(ASIC)。在一个实施例中,一个或多个外部控制器124经由PCIe接口118暴露给主机,并且被调用来处理外部提交队列112和外部完成队列114的队列操作。例如,特定的外部控制器124可以在特定的外部提交队列112中获取存储接口命令,并且基于所请求的命令的状态(例如,所请求的命令已经完成的指示)在相应的外部完成队列114中放置完成状态。
在一个实施例中,特定的外部控制器124与一个或多个命名空间相关联。在这点上,存储设备104的逻辑空间可以被分成一个或多个逻辑空间/命名空间,每个命名空间由唯一的命名空间标识(NSID)来标识。例如,假设1TB存储设备使用4K逻辑块,则可能会分配三个具有以下容量的命名空间:512GB、256GB和256GB。由主机102提交的命令可以被定向到经由NSID标识的特定命名空间。
在一个实施例中,一个或多个内部控制器126未暴露给主机102(例如隐藏),并且主机102不可访问。在这点上,在主机102和内部控制器126之间没有提供通信接口(例如,PCIe接口)。根据一个实施例,内部控制器126可以模仿(mimic)外部控制器124的功能。在这点上,内部控制器可以与设备控制器122交互,就好像它是外部控制器124一样。
在一个实施例中,存储设备104包括存储一个或多个内部提交队列130和一个或多个内部完成队列132的内部CMB 128。CMB 128可以存储其他数据134(例如,内部数据缓冲器)和内部PRP/SGL条目136。在一个实施例中,内部控制器126访问内部CMB 128,以获取和处理由设备控制器126提交的内部命令。内部CMB 128的内容和内部命令的处理可以不暴露给主机(例如隐藏),并且主机不可访问。
在一个实施例中,设备控制器122与外部控制器124和内部控制器126交互,以执行主机102请求的命令。设备控制器122可以包括但不限于一个或多个处理器140和介质接口142。一个或多个处理器140可以被配置为执行计算机可读指令,用于处理去往和来自外部控制器124和内部控制器126的命令,以及用于管理存储设备104的操作。由一个或多个处理器140执行的计算机可读指令可以是例如固件代码。
在一个示例中,一个或多个处理器140可以被配置为与外部控制器124和内部控制器126交互,用于接收去往或来自NVM介质144的写或读命令。一个或多个处理器140可以通过介质接口142与NVM介质144交互,以实现写或读动作。NVM介质144可以包括一种或多种类型的非易失性存储器,例如闪存。
在一个实施例中,存储设备104还包括内部存储器138,用于在存储设备104操作期间的短期存储或临时存储器。内部存储器138可以包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和/或数据紧密耦合存储器(DTCM)。内部存储器138可以代替内部CMB128或者除了内部CMB 128之外使用,用于存储存储在内部CMB 128中的一些或全部数据,例如内部提交队列130、完成队列132、数据134、PRP/SGL条目136等。因此,对内部CMB 128的引用可以理解为包括对内部存储器138的引用。
图2是根据一个实施例的用于提交和处理与存储接口协议相关联的命令或供应商定义的命令的各种模块的概念布局图。各种模块可以由外部控制器124和/或内部控制器126托管。此外,尽管一个或多个模块被假设为独立的功能单元,但是本领域技术人员将认识到,在不脱离本发明概念的精神和范围的情况下,模块的功能可以被组合或集成到单个模块中,或者进一步细分为更多的子模块。
在一个实施例中,命令模块200和PRP/SGL获取模块202的实例被包括在外部控制器124和内部控制器126中。命令模块200可以包括例如命令仲裁子模块、命令获取子模块、命令解析器子模块和命令调度(dispatcher)子模块。命令获取子模块可以被配置为从外部提交队列112获取主机命令,或者从内部提交队列130获取内部命令。命令仲裁子模块可以被配置为调用仲裁突发策略来在各种控制器之间以及在所选控制器的各种提交队列之间进行仲裁,以挑选从中获取命令的提交队列。命令解析器子模块可以被配置为解析提交给外部或内部控制器的命令,用于检查和验证命令格式、NSID有效性、预留状态、是否需要LBA检查、基于命名空间格式的保护信息有效性等。命令解析器子模块还可以被配置为与LBA重叠检查器(未示出)接合(interface),以基于编程的配置信息,如果LBA重叠检查对于该命令是必要的,则传递该命令。命令解析器子模块还可以确定命令是否应该绕过主机子系统直接发送到介质接口,以提高系统性能。LBA重叠检查器可以负责检查主机或内部命令当前是否与新到达的命令在相同的范围内被处理。如果答案是肯定的,则LBA重叠检查器可以保持新到达的命令,直到先前获取的、以及当前正在处理的命令完成。命令调度硬件子模块可以负责基于命令的类型(例如,性能、非性能或管理)将命令分发到各种处理器。
SGL/PRP获取模块202可以被配置为从主机存储器中获取PRP或SLG条目116(在外部控制器124的情况下),或者从内部CMB 128中获取PRP或SGL条目136(在内部控制器126的情况下)。在一个实施例中,命令模块200和SGL/PRP获取模块202分别在获取命令和PRP/SGL条目时遵循存储接口协议。
在一个实施例中,主机102向外部提交队列112之一提交存储接口命令。外部控制器124之一的命令模块200(例如,命令获取子模块)从外部提交队列112获取/获得命令,并将该命令传递给设备控制器122用于进一步处理。根据主机提交的命令的类型,设备控制器122可以访问主机存储器110,用于读取处理获取的命令所需的数据117,例如LBA范围。在一个实施例中,如果主机102提交的命令是数据传输命令,则与外部控制器124相关联的SGL/PRP获取模块202可以从主机存储器110或CMB获取SGL/PRP条目116,用于读取或写入与数据传输命令相关联的数据。
在一个实施例中,设备控制器122被配置成基于获取的命令生成一个或多个内部命令。一个或多个内部命令可以包括获取的命令的一部分(例如,获取的命令中的操作码)。在一个实施例中,一个或多个内部命令不同于获取的命令。例如,内部命令可以具有不同于获取的命令中的操作码的操作码。
类似于主机102向外部提交队列112提交NVMe命令的方式,设备控制器122可以向内部提交队列130提交一个或多个内部命令。例如,设备控制器122可以通过更新硬件门铃寄存器来通知内部控制器126的命令模块200已经提交了一个或多个内部命令。在一些情况下,主机102提交的命令可以被分解成多个内部命令。在一个实施例中,多个内部命令由一个或多个内部控制器126同时(例如并行)提交和处理,从而允许存储设备104的性能提高。
在一个实施例中,如果内部命令需要数据传输,内部控制器126的SGL/PRP获取模块202可以从内部CMB 128获取内部SGL/PRP条目136,用于读取或写入与内部命令相关联的数据。内部SGL/PRP条目136可以由设备控制器122生成。在一个实施例中,对于需要从NVM介质144传输的读取操作,内部SGL/PRP条目136可以用于目的地缓冲器204。对于需要传输到NVM介质144的写入操作,内部SGL/PRP条目136可以用于源缓冲器206。
在一个实施例中,传输队列模块208可以被配置为基于命令类型(例如,读取或写入)来处理向/从中间缓冲器(未示出)传输数据的内部请求。例如,对于内部读取或写入操作,传输队列模块208可以从设备控制器122获得关于用于控制直接存储器访问的某些数据结构的信息,包括传输描述符(TR)和直接存储器访问(DMA)描述符。TR描述符可以包含用于数据传输的命令类型(例如读取或写入)。DMA描述符可以包含关于命令类型的中间缓冲区的信息。例如,如果命令类型是内部读取命令,则中间缓冲器可以是介质接口142用来临时保持从NVM介质144读取的数据的中间读取缓冲器。如果命令类型是内部写入命令,则中间缓冲器可以是由介质接口142用来临时保持要写入到NVM介质144的数据的中间写入缓冲器。
在一个实施例中,DMA管理器模块210接收DMA描述符以及SGL/PRP条目136,并将数据从源缓冲器206传输到NVM介质144(经由DMA描述符中提供的中间缓冲器)以用于内部写入操作,或者从NVM介质(经由DMA描述符中提供的中间缓冲器)传输到目的缓冲器204以用于内部读取操作。
图3是根据一个实施例的作为提交队列条目(SQE)存储在内部提交队列130中的内部命令的布局框图。在一个实施例中,根据用于生成外部命令的存储接口协议来生成内部命令。在这方面,内部命令的大小可以是64字节,并且可以包括命令标识符(ID)300、操作码(OpCode)302、命名空间ID304、缓冲区地址306和命令参数308。命令ID 300可以是内部命令被提交到的内部提交队列130内的命令ID。
OpCode 302可以识别要执行的特定命令。在一个实施例中,OpCode是标识NVM命令(例如,写入、读取、管理、数据集管理或供应商特定命令)的NVMe操作码。在一些实施例中,OpCode在内部命令集中标识内部控制器126可以单独访问的新命令。
命名空间ID 304可以标识由OpCode 302标识的命令在其上操作的命名空间。缓冲器地址306可以包括内部CMB 128中的内部PRP/SGL条目136(或指向PRP/SGL条目的指针)。与要执行的命令相关联的任何参数可以被存储为命令参数308。
图4是根据一个实施例的用于处理由主机102提交给外部提交队列112的数据集管理(DSM)命令的流程图,用于从给定的命名空间解除分配(取消映射)给定的一组LBA范围。该过程开始,并且在框400中,外部控制器124之一从外部提交队列112获取命令,并且将其传递给设备控制器122,用于由处理器140进行预处理。
在框402中,处理器140采取某些预处理动作,包括例如通过存储接口总线106开始主机直接存储器访问操作,以将LBA范围从主机存储器110传送到存储设备的内部存储器138。此外,处理器140可以解析LBA范围以识别非连续LBA范围的总数。
在框404中,处理器140为由处理器识别的每个非连续LBA范围生成内部取消映射(unmap)命令。在一个实施例中,取消映射命令为不是存储接口协议的一部分的命令。处理器140可以将内部取消映射命令提交给一个或多个内部提交队列130。
在框406-412中处理为每个LBA范围提交的取消映射命令。尽管针对单个LBA范围的一个取消映射命令描述了该处理,但是应当理解,根据框406-412,也可以并行处理针对其他LBA范围提交的其他取消映射命令。
在框406中,内部控制器126从内部提交队列130获取并处理取消映射命令。内部控制器126的命令模块200可以被调用来从内部提交队列130获取取消映射命令。在一个实施例中,假设取消映射命令的处理不需要数据传输,则不调用内部控制器126的SGL/PRP获取模块202,并且不创建内部PRP/SGL列表136。
在框408中,内部控制器126(例如,LBA重叠检查器)确定内部取消映射命令中的LBA范围是否与代表主机126正在处理的命令的LBA重叠。例如,取消映射命令的LBA范围可以与主机126当前进行读取操作的LBA地址重叠。如果检测到重叠,内部控制器126可以等待直到主机命令完成,然后继续LBA范围的取消映射。
然而,如果没有检测到重叠,则在框410,内部控制器126经由设备控制器122向介质接口142传输一个或多个命令,用于在NVM介质上执行LBA范围的实际取消映射操作。应当理解,命令解析器子模块也可以被调用来在将一个或多个命令传递到介质接口142之前执行对取消映射命令的其他检查和验证,例如检查和验证命令格式、NSID有效性、预留状态、是否需要LBA检查、基于命名空间格式的保护信息有效性等。
一旦确定了取消映射操作的完成状态,内部控制器126在框412中向与提交内部取消映射命令的内部提交队列130相关联的内部完成队列132提交内部完成条目。
在框414中,处理器140确定所提交的DSM解除分配命令的所有LBA范围是否都已被解除分配(例如,基于内部取消映射命令的状态)。如果答案为是,则在框416中,外部控制器124向外部完成队列114提交外部完成条目,该外部完成队列114对应于DSM解除分配命令被提交到的外部提交队列112。
应当理解,根据本公开实施例的DSM解除分配命令的处理为数据存储设备104的功能提供了技术改进。例如,由于将DSM解除分配命令拆分为独立的取消映射命令,每个命令都具有单独的LBA范围,因此对LBA范围的并行处理允许存储设备具有更好的性能。此外,检查每个LBA范围的重叠(例如,通过硬件)减少了处理器140的开销,因为可以避免范围的手动锁定和解锁。此外,在存储设备包括两个子系统(例如,用于与主机102交互的主机子系统和用于与NVM介质144交互的闪存子系统)的实施例中,专用处理器(例如,处理器140)执行固件,主机子系统(例如,运行在处理器140上的固件)的开销可以减少,因为内部命令可以在没有主机子系统太多参与的情况下被处理。
应当理解,上述一个或多个处理器可以包括例如专用集成电路(ASIC)、通用或专用中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)和/或诸如现场可编程门阵列的可编程逻辑器件。在这里使用的处理器中,每个功能可以由硬件、固件和/或软件来执行。处理器可以制造在单个印刷电路板(PCB)上,或者分布在几个互连的印刷电路板上。处理器可以包含其他处理电路;例如,处理电路可以包括互连在PCB上的两个处理电路,FPGA和CPU。
应当理解,尽管在此术语“第一”、“第二”、“第三”等可以用来描述各种元件、组件、区域、层和/或部分,这些元件、组件、区域、层和/或部分不应该被这些术语所限制。这些术语仅用于区分一个元件、组件、区域、层或部分与另一个元件、组件、区域、层或部分。因此,在不脱离本发明构思的精神和范围的情况下,这里讨论的第一元件、部件、区域、层或部分可以被称为第二元件、部件、区域、层或部分。
这里使用的术语仅用于描述特定实施例的目的,并不旨在限制本发明的概念。如这里所使用的,术语“基本上”、“大约”和类似的术语被用作近似术语,而不是程度术语,并且旨在说明本领域普通技术人员将会认识到的测量或计算值中的固有偏差
如这里所使用的,单数形式“一”和“一个”旨在也包括复数形式,除非上下文清楚地指出不是这样。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。如本文所用,术语“和/或”包括一个或多个相关列出项目的任何和所有组合。在元素列表之前使用诸如“至少一个”之类的表达时,其修饰整个元素列表,而不是修饰列表中的单个元素。此外,当描述本发明概念的实施例时,使用“可以”是指“本公开的一个或多个实施例”。此外,术语“示例性的”旨在指示例或说明。如本文所用,术语“使用”可被认为与术语“利用””同义。
应当理解,当一个元件或层被称为“在另一个元件或层上”、“连接到”、“耦合到”或“邻近”另一个元件或层时,它可以直接在另一个元件或层上、直接连接到、耦合到或邻近另一个元件或层,或者可以存在一个或多个中间元件或层。相反,当一个元件或层被称为“直接在另一个元件或层上”、“直接连接到另一个元件或层”、“直接耦合到另一个元件或层”或“紧邻另一个元件或层”时,不存在中间元件或层。
本文所述的任何数值范围旨在包括在所述范围内包含的相同数值精度的所有子范围。例如,“1.0至10.0”的范围旨在包括所述最小值1.0和所述最大值10.0之间(并包括这两者)的所有子范围,即,具有等于或大于1.0的最小值和等于或小于10.0的最大值,例如,2.4至7.6。本文所述的任何最大数值限制旨在包括其中包含的所有较低数值限制,而本说明书所述的任何最小数值限制旨在包括其中包含的所有较高数值限制。
尽管这里已经具体描述和示出了用于处理存储接口命令的系统和方法的示例性实施例,但是许多修改和变化对于本领域技术人员来说是显而易见的。因此,应当理解,根据本公开的原理构造的用于处理存储接口命令的系统和方法可以不同于这里具体描述的方式来实施。本公开也在以下权利要求及其等同物中定义。
Claims (18)
1.一种用于处理从主机到存储设备的命令的方法,所述方法包括:
由所述存储设备的第一控制器经由第一队列从所述主机接收第一命令,其中,所述第一队列暴露给所述主机;
由所述存储设备将所述第一命令生成为第二命令;
由所述存储设备将所述第二命令存储在第二队列中;
由所述存储设备更新寄存器以通知所述存储设备的第二控制器;
响应于更新所述寄存器,由所述第二控制器从所述第二队列检索所述第二命令;
由所述第二控制器获得并处理来自所述第二队列的所述第二命令,其中,所述处理用于访问所述存储设备的非易失性存储介质;
响应于确定所述第二命令中的逻辑块地址范围不同于代表所述主机处理的命令的逻辑块地址,访问所述非易失性存储介质;以及
基于所述第二命令的状态,由所述第一控制器向所述主机传输信号,所述信号指示所述第一命令完成。
2.根据权利要求1所述的方法,其中,所述第二命令包括所述第一命令的一部分。
3.根据权利要求2所述的方法,其中,所述第一命令与操作以及第一存储器范围和第二存储器范围相关联,其中,所述第二命令包括所述操作和所述第一存储器范围,所述方法还包括:
由所述存储设备生成包括所述操作和第二存储器范围的第三命令;
由所述存储设备经由所述第二队列向所述第二控制器提交所述第三命令;以及
由所述第二控制器获得并处理来自所述第二队列的所述第三命令,
其中,由所述第一控制器向所述主机传输用于指示所述第一命令完成的信号基于所述第二命令的状态和所述第三命令的状态。
4.根据权利要求3所述的方法,其中,所述操作包括解除分配所述第一存储器范围和第二存储器范围。
5.根据权利要求3所述的方法,其中,所述第二命令和第三命令被同时获得和处理。
6.根据权利要求1所述的方法,其中,所述第二命令不同于所述第一命令。
7.根据权利要求1所述的方法,其中,所述存储设备是非易失性存储设备,所述第一控制器和所述第二控制器遵守非易失性存储器快速NVMe协议,所述第一队列包括遵守NVMe协议的提交队列,并且所述第一命令包括NVMe命令。
8.根据权利要求1所述的方法,进一步包括:
由所述第二控制器向第一完成队列提交第一完成状态。
9.根据权利要求8所述的方法,其中,所述信号的传输包括基于对所述第一完成队列的所述第一完成状态的处理,向第二完成队列提交第二完成状态,其中,所述第二完成队列暴露给所述主机。
10.一种存储设备,包括:
非易失性存储介质;
耦合到所述非易失性存储介质的一个或多个处理器,所述一个或多个处理器被配置成分别:
经由第一控制器和第一队列从主机接收第一命令,其中,所述第一队列被暴露给所述主机;
将所述第一命令生成为第二命令;
将所述第二命令存储在第二队列中;
更新寄存器以通知所述存储设备的第二控制器;
响应于更新所述寄存器,由所述第二控制器从所述第二队列检索所述第二命令;
经由所述第二控制器获得并处理来自所述第二队列的所述第二命令,其中,所述一个或多个处理器还被配置为访问所述存储设备的非易失性存储介质以处理所述第二命令;
响应于确定所述第二命令中的逻辑块地址范围不同于代表所述主机处理的命令的逻辑块地址,访问所述非易失性存储介质;以及
基于所述第二命令的状态,经由所述第一控制器向所述主机传输用于指示所述第一命令完成的信号。
11.根据权利要求10所述的存储设备,其中,所述第二命令包括所述第一命令的一部分。
12.根据权利要求11所述的存储设备,其中,所述第一命令与操作以及第一存储器范围和第二存储器范围相关联,其中,所述第二命令包括所述操作和所述第一存储器范围,并且其中,所述一个或多个处理器还被配置为:
生成包括所述操作和所述第二存储器范围的第三命令;
经由所述第二队列向所述第二控制器提交所述第三命令;以及
经由所述第二控制器从所述第二队列获得所述第三命令,
其中,经由所述第一控制器向所述主机传输用于指示所述第一命令完成的信号基于所述第二命令的状态和所述第三命令的状态。
13.根据权利要求12所述的存储设备,其中,所述操作包括解除分配所述第一存储器范围和第二存储器范围。
14.根据权利要求12所述的存储设备,其中,所述第二命令和第三命令被同时获得和处理。
15.根据权利要求10所述的存储设备,其中,所述第二命令不同于所述第一命令。
16.根据权利要求10所述的存储设备,其中,所述存储设备是非易失性存储设备,所述第一控制器和所述第二控制器遵守非易失性存储器快速NVMe协议,所述第一队列包括遵守NVMe协议的提交队列,并且,所述第一命令包括NVMe命令。
17.根据权利要求10所述的存储设备,其中,所述一个或多个处理器还被配置为:
经由所述第二控制器向第一完成队列提交第一完成状态。
18.根据权利要求17所述的存储设备,其中,所述信号的传输包括基于对所述第一完成队列的所述第一完成状态的处理,向第二完成队列提交第二完成状态,其中,所述第二完成队列被暴露给所述主机。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063057720P | 2020-07-28 | 2020-07-28 | |
US63/057,720 | 2020-07-28 | ||
US17/024,598 US11733918B2 (en) | 2020-07-28 | 2020-09-17 | Systems and methods for processing commands for storage devices |
US17/024,598 | 2020-09-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114003168A CN114003168A (zh) | 2022-02-01 |
CN114003168B true CN114003168B (zh) | 2024-02-06 |
Family
ID=75746493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110850755.0A Active CN114003168B (zh) | 2020-07-28 | 2021-07-27 | 用于处理命令的存储设备和方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11733918B2 (zh) |
EP (1) | EP3945406A1 (zh) |
JP (1) | JP2022025037A (zh) |
KR (1) | KR20220014276A (zh) |
CN (1) | CN114003168B (zh) |
TW (1) | TW202205100A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022021026A (ja) * | 2020-07-21 | 2022-02-02 | キオクシア株式会社 | メモリシステムおよびコマンドをフェッチする方法 |
US20220187992A1 (en) * | 2020-12-16 | 2022-06-16 | Kioxia Corporation | Systems and methods for data copy offload for storage devices |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176858A (zh) * | 2013-03-11 | 2013-06-26 | 北京忆恒创源科技有限公司 | 具有多个固态盘的存储设备 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9467512B2 (en) | 2012-01-17 | 2016-10-11 | Intel Corporation | Techniques for remote client access to a storage medium coupled with a server |
JP2014130387A (ja) * | 2012-12-27 | 2014-07-10 | Fujitsu Ltd | ストレージコントローラ選択システム、ストレージコントローラ選択方法、およびストレージコントローラ選択プログラム |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US8954657B1 (en) * | 2013-09-27 | 2015-02-10 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
US9009397B1 (en) | 2013-09-27 | 2015-04-14 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
US9727503B2 (en) * | 2014-03-17 | 2017-08-08 | Mellanox Technologies, Ltd. | Storage system and server |
JP6181860B2 (ja) * | 2014-04-28 | 2017-08-16 | 株式会社日立製作所 | ストレージ装置とそのデータ処理方法及びストレージシステム |
KR102330389B1 (ko) * | 2014-07-24 | 2021-11-24 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
KR102480016B1 (ko) | 2015-08-18 | 2022-12-21 | 삼성전자 주식회사 | 다수의 맵핑 단위를 이용하는 불휘발성 메모리 시스템 및 그 동작방법 |
US20170123721A1 (en) | 2015-10-28 | 2017-05-04 | Sandisk Technologies Inc. | System and method for utilization of a data buffer by command completion in parts |
US10423568B2 (en) | 2015-12-21 | 2019-09-24 | Microsemi Solutions (U.S.), Inc. | Apparatus and method for transferring data and commands in a memory management environment |
JP6448570B2 (ja) | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US10509592B1 (en) | 2016-07-26 | 2019-12-17 | Pavilion Data Systems, Inc. | Parallel data transfer for solid state drives using queue pair subsets |
US10735513B2 (en) | 2016-09-08 | 2020-08-04 | Toshiba Memory Corporation | Remote NVMe activation |
US9927999B1 (en) * | 2016-09-09 | 2018-03-27 | Western Digital Technologies, Inc. | Trim management in solid state drives |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10331584B2 (en) | 2017-03-09 | 2019-06-25 | Toshiba Memory Corporation | Internal system namespace exposed through use of two local processors and controller memory buffer with two reserved areas |
US10282094B2 (en) | 2017-03-31 | 2019-05-07 | Samsung Electronics Co., Ltd. | Method for aggregated NVME-over-fabrics ESSD |
US10503434B2 (en) | 2017-04-12 | 2019-12-10 | Micron Technology, Inc. | Scalable low-latency storage interface |
CN110770710B (zh) | 2017-05-03 | 2023-09-05 | 艾德蒂克通信公司 | 用于控制数据加速的装置和方法 |
JP6981096B2 (ja) * | 2017-08-17 | 2021-12-15 | 富士フイルムビジネスイノベーション株式会社 | 情報処理装置 |
CN114546293A (zh) | 2017-09-22 | 2022-05-27 | 慧荣科技股份有限公司 | 快闪存储器的数据内部搬移方法以及使用该方法的装置 |
TWI639921B (zh) | 2017-11-22 | 2018-11-01 | 大陸商深圳大心電子科技有限公司 | 指令處理方法及使用所述方法的儲存控制器 |
CA3021969A1 (en) | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
KR102446733B1 (ko) * | 2017-11-30 | 2022-09-23 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치 |
US10846017B2 (en) | 2017-12-14 | 2020-11-24 | Western Digital Technologies, Inc. | Secure digital (SD) to NVMe buffer manager |
US10466906B2 (en) | 2017-12-19 | 2019-11-05 | Western Digital Technologies, Inc. | Accessing non-volatile memory express controller memory manager |
US11669267B2 (en) * | 2018-02-09 | 2023-06-06 | Western Digital Technologies, Inc. | Completion entry throttling using host memory |
US10489085B2 (en) * | 2018-02-28 | 2019-11-26 | Micron Technology, Inc. | Latency-based scheduling of command processing in data storage devices |
KR20190110360A (ko) * | 2018-03-20 | 2019-09-30 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 시스템 및 그 동작 방법 |
US10671314B2 (en) | 2018-06-07 | 2020-06-02 | Circuit Blvd., Inc. | Method of copying data between open-channel solid state drives (SSDs) and an apparatus performing the same |
US11614986B2 (en) | 2018-08-07 | 2023-03-28 | Marvell Asia Pte Ltd | Non-volatile memory switch with host isolation |
US11188496B2 (en) | 2018-09-13 | 2021-11-30 | Toshiba Memory Corporation | System and method for storing data using ethernet drives and ethernet open-channel drives |
US10866740B2 (en) | 2018-10-01 | 2020-12-15 | Western Digital Technologies, Inc. | System and method for performance-based multiple namespace resource allocation in a memory |
KR20200074647A (ko) * | 2018-12-17 | 2020-06-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US10824574B2 (en) * | 2019-03-22 | 2020-11-03 | Dell Products L.P. | Multi-port storage device multi-socket memory access system |
US10915264B2 (en) * | 2019-04-11 | 2021-02-09 | Intel Corporation | Apparatus, systems, and methods to reclaim storage associated with cached data |
KR20200126531A (ko) * | 2019-04-30 | 2020-11-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 커맨드 수행 방법 |
JP2021033845A (ja) * | 2019-08-28 | 2021-03-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11042481B1 (en) * | 2019-12-19 | 2021-06-22 | Micron Technology, Inc. | Efficient processing of commands in a memory sub-system |
US11726704B2 (en) * | 2020-03-31 | 2023-08-15 | Kioxia Corporation | Buffer optimization for solid-state drives |
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 |
JP2022016899A (ja) * | 2020-07-13 | 2022-01-25 | キオクシア株式会社 | メモリシステム及び情報処理システム |
-
2020
- 2020-09-17 US US17/024,598 patent/US11733918B2/en active Active
-
2021
- 2021-04-19 KR KR1020210050603A patent/KR20220014276A/ko active Search and Examination
- 2021-04-26 TW TW110114904A patent/TW202205100A/zh unknown
- 2021-04-30 EP EP21171585.9A patent/EP3945406A1/en not_active Ceased
- 2021-07-20 JP JP2021119943A patent/JP2022025037A/ja active Pending
- 2021-07-27 CN CN202110850755.0A patent/CN114003168B/zh active Active
-
2023
- 2023-07-20 US US18/224,523 patent/US20230359396A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176858A (zh) * | 2013-03-11 | 2013-06-26 | 北京忆恒创源科技有限公司 | 具有多个固态盘的存储设备 |
Also Published As
Publication number | Publication date |
---|---|
US11733918B2 (en) | 2023-08-22 |
US20230359396A1 (en) | 2023-11-09 |
CN114003168A (zh) | 2022-02-01 |
JP2022025037A (ja) | 2022-02-09 |
EP3945406A1 (en) | 2022-02-02 |
US20220035564A1 (en) | 2022-02-03 |
TW202205100A (zh) | 2022-02-01 |
KR20220014276A (ko) | 2022-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102466353B1 (ko) | SSD 스토리지의 NVMe 명령간 연관을 위한 시스템 및 방법 | |
US10331600B1 (en) | Virtual I/O queuing | |
US7287101B2 (en) | Direct memory access using memory descriptor list | |
US7805543B2 (en) | Hardware oriented host-side native command queuing tag management | |
US10007443B1 (en) | Host to device I/O flow | |
TW201905714A (zh) | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 | |
US20230359396A1 (en) | Systems and methods for processing commands for storage devices | |
US8930568B1 (en) | Method and apparatus for enabling access to storage | |
EP4220419B1 (en) | Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests | |
US9367478B2 (en) | Controlling direct memory access page mappings | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
US8902915B2 (en) | Dataport and methods thereof | |
CN110275840A (zh) | 在存储器接口上的分布式过程执行和文件系统 | |
US10552349B1 (en) | System and method for dynamic pipelining of direct memory access (DMA) transactions | |
US11789634B2 (en) | Systems and methods for processing copy commands | |
US7895387B1 (en) | Devices and methods for sharing common target device with two different hosts according to common communication protocol | |
CN113742115B (zh) | 用于通过处理器处理页面错误的方法 | |
EP3945407A1 (en) | Systems and methods for processing copy commands | |
US20140136796A1 (en) | Arithmetic processing device and method for controlling the same | |
US20220137998A1 (en) | Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
EP1990725A1 (en) | Central processing unit, central processing unit control method, and information processing system | |
CN117348794A (zh) | 在具有高并行度的系统中管理队列的系统和方法 |
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 |