CN116166415A - 装置控制器、存储装置及其方法 - Google Patents
装置控制器、存储装置及其方法 Download PDFInfo
- Publication number
- CN116166415A CN116166415A CN202211349754.9A CN202211349754A CN116166415A CN 116166415 A CN116166415 A CN 116166415A CN 202211349754 A CN202211349754 A CN 202211349754A CN 116166415 A CN116166415 A CN 116166415A
- Authority
- CN
- China
- Prior art keywords
- command
- logic
- commit
- queue
- executable
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Abstract
提供了一种装置控制器、存储装置及其方法。一种包括非易失性存储器的存储装置的装置控制器从提交队列中查看命令,并且基于装置资源的状态来确定所查看的命令是否是可执行的。响应于确定了所述命令是可执行的,所述装置控制器取出所述命令,将所述装置资源分配给所取出的命令,并且执行所述命令。
Description
相关申请的交叉引用
本申请要求于2021年11月25日在韩国知识产权局提交的韩国专利申请No.10-2021-0164973的优先权,并且要求于2022年5月3日在韩国知识产权局提交的韩国专利申请No.10-2022-0054905的优先权,这些韩国专利申请的全部内容通过引用并入本文。
技术领域
本公开涉及基于非易失性存储器的存储装置、装置控制器及其方法。
背景技术
读取资源和写入资源可以分开地存在于诸如固态硬盘(SSD)的基于非易失性存储器的存储装置的资源池中。读取资源和写入资源中的每一者可以用于处理特定类型的输入/输出(I/O)。资源池还可以包括由所有类型的I/O共享的共享资源。
一旦共享资源被用尽,存储装置就可以暂时停止处理所有I/O类型的命令,直到共享资源再次可用。特别地,如果存储装置取出大量的写入命令,则几乎所有共享资源都可能被写入命令占用。一般而言,处理写入命令花费较长时间,所以共享资源可能被长久地占用。因此,尽管读取命令能够使用读取资源,但是存储装置可以不处理读取命令,因为所有共享资源都被耗尽。此外,如果存储装置在写入资源被耗尽时带来写入命令,则存储装置可以封锁共享资源直到写入资源可用。然后,即使存储装置带来读取命令,它也可以不处理读取命令。以这种方式,其他命令可能由于一些资源的耗尽而被搁置,并且等待命令可以在命令处理流水线中引起瓶颈,使得由于该命令的时延增加,命令处理效率可能降低。
发明内容
一些实施例可以提供一种基于非易失性存储器的存储装置、一种装置控制器、以及一种用于提高命令处理效率的方法。
根据一些实施例,可以提供一种包括非易失性存储器的存储装置的装置控制器。所述装置控制器可以包括装置资源、命令取出逻辑、命令预处理逻辑和命令处理逻辑。所述命令取出逻辑可以从多个提交队列当中的第一提交队列中查看(peek)第一命令,并且响应于确定了所述第一命令是可执行的,取出所述第一命令。所述命令预处理逻辑可以基于所述装置资源的状态来确定所述命令取出逻辑所查看的所述第一命令是否是可执行的。响应于确定了所述第一命令是可执行的,所述命令处理逻辑可以将所述装置资源分配给所述命令取出逻辑取出的所述第一命令并且执行所述第一命令。
在一些实施例中,所述命令取出逻辑在查看所述第一命令时可以不移动所述第一提交队列的头指针,并且在查看所述第一命令之后通过移动所述第一提交队列的所述头指针来取出所述第一命令。
在一些实施例中,所述命令取出逻辑可以从所述多个提交队列当中的第二提交队列中查看第二命令。所述命令预处理逻辑可以基于所述装置资源的状态来确定所述第二命令是否是可执行的,并且响应于确定了所述第二命令是不可执行的将所述第二提交队列标记为等待所述装置资源的等待状态。
在一些实施例中,所述命令取出逻辑可以响应于确定了所述第二命令是不可执行的丢弃所述第二命令而不取出所述第二命令。
在一些实施例中,所述命令预处理逻辑可以基于所述装置资源的状态来确定被标记为所述等待状态的所述第二提交队列是否是可处理的。响应于确定了所述第二提交队列是可处理的,所述命令取出逻辑可以从所述第二提交队列中查看所述第二命令,并且所述命令预处理逻辑可以确定所述第二命令是否是可执行的。
在一些实施例中,当所述装置资源当中的所述第二命令等待的资源是可用的时,所述命令预处理逻辑可以确定所述第二提交队列是可处理的。
在一些实施例中,所述命令预处理逻辑可以使被标记为处于所述等待状态的所述第二提交队列优先于所述多个提交队列当中的剩余提交队列。
在一些实施例中,所述装置控制器还可以包括待处理命令队列。所述命令取出逻辑可以从所述第一提交队列中查看所述第一命令和第二命令。响应于所述命令预处理逻辑确定所述第一命令是可执行的并且所述第二命令是不可执行的,所述命令取出逻辑可以取出所述第一命令和所述第二命令,并且所述命令预处理逻辑可以将所述第二命令存储在所述待处理命令队列中。
在一些实施例中,所述命令预处理逻辑可以基于所述装置资源的状态来确定存储在所述待处理命令队列中的第三命令是否是可执行的。所述命令处理逻辑可以响应于确定了所述待处理命令队列中的所述第三命令是可执行的,执行所述待处理命令队列中的所述第三命令。
在一些实施例中,所述命令预处理逻辑可以使所述待处理命令队列优先于所述多个提交队列。
在一些实施例中,所述命令取出逻辑可以从所述第一提交队列中查看所述第一命令和第二命令。所述命令取出逻辑可以响应于所述命令预处理逻辑确定所述第一命令是可执行的并且所述第二命令是不可执行的,从所述第一提交队列中取出所述第一命令并且将所述第二命令打包在所述第一提交队列中。
在一些实施例中,所述命令取出逻辑可以将所述第一提交队列的头指针移动所述第一命令的数目,并且从所述头指针被移动到的条目开始打包所述第二命令。
在一些实施例中,所述命令预处理逻辑可以基于所述装置资源的状态来确定被所述命令取出逻辑打包了所述第二命令的所述第一提交队列是否是可处理的。响应于确定了所述第一提交队列是可处理的,所述命令取出逻辑可以从所述第一提交队列中查看所述第二命令,并且所述命令预处理逻辑可以确定所述第二命令是否是可执行的。
在一些实施例中,所述命令预处理逻辑可以使所述第一提交队列优先于所述多个提交队列当中的剩余提交队列。
在一些实施例中,所述命令预处理逻辑可以在所述装置资源当中的用于执行所述第一命令的资源是可用的时,确定所述第一命令是可执行的并且取出所述第一命令。
在一些实施例中,所述装置资源可以包括专用于读取命令的读取资源、专用于写入命令的写入资源、以及由所述读取命令和所述写入命令共享的共享资源。所述命令预处理逻辑可以在所述读取资源和所述写入资源当中与所述第一命令的输入/输出类型对应的资源以及所述共享资源是可用的时,确定用于执行所述第一命令的资源是可用的并且可以取出所述第一命令。
在一些实施例中,所述装置资源可以包括用于执行所述第一命令的多种类型的资源。当所述多种类型的资源当中的至少一部分类型的资源是不可用的时,所述命令预处理逻辑可以确定用于执行所述第一命令的所述资源是不可用的。
在一些实施例中,当所述装置资源当中用于执行所述第一命令的所述资源是不可用的时,所述命令预处理逻辑可以不将所述装置资源分配给所述第一命令。
根据一些实施例,可以提供一种包括非易失性存储器和装置控制器的存储装置。所述装置控制器可以控制对所述非易失性存储器的访问,从提交队列查看命令而不移动所述提交队列的头指针,基于装置资源的状态来确定所述命令是否是可执行的,并且响应于确定了所述命令是可执行的移动所述提交队列的所述头指针。
根据一些实施例,可以提供一种由包括非易失性存储器的存储装置执行的方法。所述方法可以包括:从提交队列中查看命令;基于装置资源的状态来确定所述命令是否是可执行的;响应于确定了所述命令是可执行的,取出所述命令;以及响应于确定了所述命令是可执行的,将所述装置资源分配给所述命令并且执行所述命令。
附图说明
图1是根据实施例的存储系统的示例性框图。
图2是根据实施例的存储系统的示例性框图。
图3是根据实施例的存储装置中的装置控制器的示例性框图。
图4是根据实施例的示出了装置控制器的装置资源的示例性框图。
图5和图6是说明了图3所示的装置控制器的示例性操作的图。
图7是根据实施例的示出了存储装置中的装置控制器的操作的示例性流程图。
图8是根据实施例的存储装置的装置控制器的示例性框图。
图9是根据实施例的存储装置中的装置控制器的示例性框图。
图10是说明了图9所示的装置控制器的示例性操作的图。
图11是根据实施例的示出了存储装置中的装置控制器的操作的示例性流程图。
图12是根据另一实施例的存储装置中的装置控制器的示例性框图。
图13是说明了图12所示的装置控制器的示例性操作的图。
图14是根据实施例的示出了存储装置中的装置控制器的操作的示例性流程图。
图15是根据一个实施例的计算机装置的示例性框图。
具体实施方式
在以下详细描述中,简单地通过说明的方式来示出并描述了仅本发明的某些实施例。如本领域的技术人员将认识到的那样,在不脱离本发明的精神或范围的所有情况下,可以以各种不同方式修改所描述的实施例。
附图和说明书将被视为在性质上是说明性的而非限制性的。贯穿本说明书,相似的附图标记指定相似的元素。除非另外具体地指示,否则操作或步骤的顺序不限于各图中呈现的次序。可以改变操作或步骤的顺序,可以合并若干操作或步骤,可以细分某个操作或步骤,并且可以不执行特定操作或步骤。
如本文所使用的,除非上下文另外清楚地指示,否则单数形式“一”和“一个”也旨在包括复数形式。尽管可以在本文中使用诸如第一、第二等的术语来描述各种元素、部件、步骤和/或操作,但是这些术语仅用于将一个元素、部件、步骤或操作与另一元素、部件、步骤或操作区分开,而不暗示次序或数值含义。
图1是根据实施例的存储系统的示例性框图。
参考图1,存储系统100可以包括主机装置110和存储装置120。
主机装置110可以包括可以与存储装置120接口的计算平台(或计算装置)。作为非限制性示例,主机装置110可以是台式计算机、服务器计算机、平板计算机、膝上型计算机、诸如智能电话的移动电话、多媒体播放器、游戏机、电视或各种类型的物联网(IoT)装置。
主机装置110可以包括处理器111和主机存储器112。处理器111可以通过执行指令来执行各种操作(例如,诸如算术、逻辑、控制和输入/输出(I/O)操作的操作)。作为非限制性示例,处理器111可以是中央处理单元(CPU)、图形处理单元(GPU)、微处理器或应用处理器(AP)。主机存储器112可以是由处理器111访问和使用的系统存储器。作为非限制性示例,主机存储器112可以包括诸如动态随机存取存储器(DRAM)的随机存取存储器,但是不限于此。
存储装置120可以是基于非易失性存储器的存储装置,并且可以包括装置控制器121和非易失性存储器122。装置控制器121可以控制对非易失性存储器122的访问。在一些实施例中,装置控制器121可以支持快速非易失性存储器(NVMe)协议作为用于访问非易失性存储器122的协议。在一些实施例中,非易失性存储器可以包括基于闪存的存储器,作为非限制性示例,诸如NAND闪存。在一些实施例中,作为非限制性示例,非易失性存储器可以包括相变存储器、电阻式存储器、磁阻式存储器、铁电存储器或聚合物存储器等。
在一些实施例中,存储装置120可以可移动地连接到主机装置110。在其他实施例中,存储装置120可以被集成到主机装置110中或者不可移动地连接到主机装置110。
主机装置110可以通过向存储装置120提交命令来执行各种操作。例如,主机装置110可以通过向存储装置120提交读取命令而从存储装置120读取数据,或者通过向存储装置120提交写入命令而向存储装置120写入数据。
为了主机装置110从存储装置120读取或者写入数据,处理器111可以生成命令(例如,读取命令或写入命令),并且将该命令提交(或者写入)到主机存储器112的提交队列(SQ)112a。在一些实施例中,提交队列112a可以支持NVMe协议。装置控制器121可以查看(peek)提交到主机存储器112的提交队列112a的命令,以基于装置控制器121的装置资源状态来确定命令是否是可执行的,并且可以响应于确定了命令是可执行的,取出并执行命令。在一些实施例中,“查看”命令可以是指将命令从提交队列带到装置控制器并将该命令留在提交队列中以便被再次带出的操作。因此,装置控制器121可以通过在不移动提交队列112a的头指针的情况下从提交队列112a带出命令来查看命令,并且在查看命令之后通过移动提交队列112a的头指针从提交队列112a中取出命令。装置控制器121可以通过执行读取命令将数据从非易失性存储器122转移到主机存储器112,或者可以通过执行写入命令将数据从主机存储器112转移到非易失性存储器122。
图2是根据实施例的存储系统的示例性框图。
参考图2,存储系统200可以包括主机装置210和存储装置220。
主机装置210可以包括处理器211和主机存储器212。存储装置220可以包括装置控制器221和非易失性存储器222。与参考图1描述的实施例不同,装置控制器221还可以包括存储器缓冲器221a,在该存储器缓冲器221a中形成了来自主机装置210的命令将被提交(或者写入)到的提交队列。在一些实施例中,存储器缓冲器221a可以是支持NVMe协议的控制器存储器缓冲器(CMB)。
为了主机装置210从存储装置220读取或者写入数据,处理器211可以生成命令并且将该命令提交到存储器缓冲器221a的提交队列。装置控制器221可以查看提交到存储器缓冲器221a的提交队列的命令,基于装置控制器221的装置资源状态来确定命令是否是可执行的,并且响应于确定了命令是可执行的,取出并执行命令。装置控制器221可以在不移动提交队列的头指针的情况下从提交队列中查看命令,并且通过移动提交队列的头指针从提交队列中取出命令。装置控制器221可以通过执行读取命令将数据从非易失性存储器222转移到主机存储器212,或者可以通过执行写入命令将数据从主机存储器212转移到非易失性存储器222。
图3是根据实施例的存储装置中的装置控制器的示例性框图,图4是根据实施例的示出了装置控制器的装置资源的示例性框图,图5和图6是说明了图3所示的装置控制器的示例性操作的图。
参考图3,装置控制器300可以包括命令取出逻辑310、命令预处理逻辑320、命令处理逻辑330和装置资源340。
在一些实施例中,装置控制器300还可以包括存储器缓冲器350,并且存储器缓冲器350可以包括多个提交队列351、352...35n。在一些实施例中,多个提交队列351至35n可以形成在主机装置的主机存储器(例如,图1中的112)中。可以将提交队列351至35n分别表达为SQ1、SQ2...SQn。主机装置可以生成命令并且将所生成的命令提交到提交队列35i。在一些实施例中,在将命令提交到提交队列35i之后,主机装置可以用新的尾指针更新装置控制器300中与提交队列35i对应的寄存器(例如,SQ尾门铃寄存器)。
命令取出逻辑310可以从提交队列35i中查看命令。当从提交队列35i中查看命令时,命令取出逻辑310可以不移动提交队列35i的头指针。命令取出逻辑310可以将所查看的命令暂时存储在装置控制器300的缓冲器或包括装置控制器300的存储装置的缓冲器中。在一些实施例中,命令取出逻辑310可以从提交队列351至35n当中选择目标提交队列35i并且从所选择的提交队列35i中查看命令。命令取出逻辑310可以基于例如装置控制器300支持的仲裁机制来选择目标提交队列35i。在一些实施例中,命令取出逻辑310可以基于仲裁突发大小和提交队列35i中的可用命令的数目来确定要从提交队列35i中查看的命令的数目。仲裁突发大小可以意指可以一次从提交队列中启动的命令的最大数目。例如,命令取出逻辑310可以将仲裁突发大小和提交队列35i中的可用命令的数目中的较小者确定为要从提交队列35i中查看的命令的数目。提交队列35i中的可用命令的数目可以对应于从提交队列35i的头到尾的命令的数目。头可以是由提交队列35i中的头指针指示的条目,而尾可以是由提交队列35i中的尾指针指示的条目。因此,命令取出逻辑310可以从提交队列35i的头起查看确定数目的命令。
命令预处理逻辑320可以基于装置资源340的状态来确定查看到的命令是否是可执行的。命令预处理逻辑320可以通过确定用于执行查看到的命令的装置资源340是否是可用的来确定查看到的命令是否是可执行的。在一些实施例中,装置资源340可以包括专用于读取命令的读取资源341和专用于写入命令的写入资源342。装置资源340还可以包括由读取命令和写入命令共享的共享资源343。
命令预处理逻辑320可以在确定装置资源340当中用于执行查看到的命令的资源是可用的时确定查看到的命令是可执行的。在一些实施例中,由于资源的类型可以依据查看到的命令的I/O类型而不同,所以命令预处理逻辑320可以基于查看到的命令的I/O类型、共享资源343、以及读取资源341和写入资源342当中与I/O类型对应的资源来确定用于执行查看到的命令的资源是否是可用的。在一些实施例中,由于所需资源的量可以依据查看到的命令的大小而变化,所以命令预处理逻辑320可以基于查看到的命令的I/O类型和大小来确定用于执行查看到的命令的资源是否是可用的。当因为装置资源340当中用于执行查看到的命令的资源被占用以进行其他I/O处理所以它们是不可用的时,命令预处理逻辑320可以确定查看到的命令不是可执行的。例如,命令预处理逻辑320可以在因为读取资源341或共享资源343被占用所以它们是不可用的时确定读取命令不是可执行的,而在读取资源341和共享资源343是可用的时确定读取命令是可执行的。另外,命令预处理逻辑320可以在因为写入资源342或共享资源343被占用所以它们是不可用的时确定写入命令不是可执行的,而在写入资源342和共享资源343是可用的时确定写入命令是可执行的。
当确定查看到的命令是可执行的时,命令预处理逻辑320可以通过命令取出逻辑310取出相应命令并且指示命令处理逻辑330执行所取出的命令。命令取出逻辑310可以通过将提交队列35i中的头指针移动取出的命令(条目)的数目来从提交队列35i中取出命令。因此,可以将提交队列35i的头指针移动到所取出的命令的下一个条目。
命令处理逻辑330可以将装置资源340分配给所取出的命令并且执行所取出的命令。在一些实施例中,命令处理逻辑330可以将所取出的命令放置到命令处理流水线中以进行执行。命令处理逻辑330可以将所取出的命令放置到命令处理流水线的命令处理队列中,从命令处理队列中检索命令,并且执行命令。命令处理流水线可以包括使用装置资源340来执行命令处理(命令执行)的一组处理引擎。
当命令预处理逻辑320确定查看到的命令不是可执行的时,命令处理逻辑330可以不取出查看到的命令。因此,提交队列35i的头指针可以被维持而不被移动。命令预处理逻辑320可以不指示命令处理逻辑330执行命令,并且可以丢弃查看到的命令而不取出该命令。因此,命令处理逻辑330可以不将装置资源340分配给查看到的命令并且可以不将查看到的命令放置到命令处理流水线中。另外,命令预处理逻辑320可以将提交队列35i标记为资源等待状态。在一些实施例中,资源等待状态可以包括指示等待资源的信息。指示等待资源的信息可以包括例如等待资源的类型和等待资源的量。
在处理了目标提交队列35i之后,装置控制器300可以从多个提交队列351至35n当中选择下一个目标提交队列35j,并且可以重复从目标提交队列35j中查看命令并且确定命令是否可执行的操作。
在一些实施例中,命令预处理逻辑320可以监测装置资源340的状态并且基于装置资源340的状态来确定被标记为等待状态的提交队列35i是否是可处理的。在一些实施例中,当用于被标记为等待状态的提交队列35i的资源变得可用时,命令预处理逻辑320可以确定提交队列35i是可处理的。当确定提交队列35i是可处理的时,命令预处理逻辑320可以将提交队列35i指定为可用的提交队列35i。因此,如上所述,可以执行从提交队列35i中查看命令并且确定命令是否可执行的操作。在一些实施例中,当被标记为等待状态的提交队列35i的资源变得可用时,命令预处理逻辑320可以从提交队列35i中取出命令并且指示命令处理逻辑330执行命令而不再次执行查看命令的操作。在一些实施例中,当资源变得可用时,命令预处理逻辑320可以使被标记为等待状态的提交队列35i优先于其他提交队列。例如,命令预处理逻辑320可以将被标记为等待状态的提交队列35i添加到可用的提交队列的列表的头。
在一些实施例中,当命令处理逻辑330完成特定I/O类型的命令的执行时,用于特定I/O类型的资源可以变得可用。当命令处理逻辑330在命令处理流水线中完成特定类型的处理时,用于特定类型的资源可以变得可用。例如,当命令处理逻辑330完成读取命令的执行时,读取资源341和共享资源343可以变得可用。当命令处理逻辑330完成写入命令的执行时,写入资源342和共享资源343可以变得可用。
参考图4,在一些实施例中,读取资源341、写入资源342或共享资源343可以包括各种类型的资源。读取资源341可以包括读取缓冲器341a或直接存储器存取(DMA)读取描述符341b中的至少一者,并且写入资源342可以包括写入缓冲器342a或DMA写入描述符342b中的至少一者。
读取缓冲器341a可以暂时存储从非易失性存储器(例如,图1中的122或图2中的222)读取的数据,并且DMA读取描述符341b可以存储与从存储装置到主机存储器(例如,图1中的112或图2中的212)的DMA转移相关的信息。写入缓冲器342a可以暂时存储要写入到非易失性存储器122或222的数据,并且DMA写入描述符342b可以存储与从主机存储器112或212到存储装置的DMA转移相关的信息。
共享资源343可以包括多种类型的共享资源。多种类型的共享资源可以包括以下项中的至少一者:地址转换缓存(ATC)资源343a、主机连接资源343b、标签资源343c、通道资源343d、核心资源343e、地址转换资源343f、物理区域页(PRP)/散点聚集列表(SGL)缓冲器343g或命令完成资源343h。
地址转换缓存343a可以存储当将由从命令中解析的PRP或SGL指向的虚拟地址转换成主机存储器112或212的物理地址时使用的地址转换数据。主机连接资源343b可以包括与用于与主机连接的接口(例如,快速外围部件互连(PCIe)接口)相关的资源。标签资源343c可以包括资源(标签),该资源(标签)被分配用于命令处理流水线内的命令的唯一标识。通道资源343d可以包括与装置控制器300和非易失性存储器122或222之间的通道相关的资源。核心资源343e可以包括用于在命令处理逻辑中处理命令的处理核心资源。地址转换资源343f可以包括将从命令解析的逻辑地址(例如,逻辑块地址(LBA))转换成物理地址(例如,非易失性存储器122或222的物理页号(PPN))的资源。PRP/SGL缓冲器343g可以暂时存储从命令解析的PRP或SGL。命令完成资源343h可以包括用于处理命令完成的资源。
在需要不同类型的资源来执行命令的情况下,如果一些类型的资源是可用的但是一些其他类型的资源是不可用的,则命令预处理逻辑320可以确定命令不是可执行的并且可以不取出命令。此外,如果在多种类型的共享资源343a-343h当中一些类型的共享资源(例如,标签资源343c)是可用的但是一些其他类型的共享资源(例如,地址转换资源343f)是不可用的,则命令预处理逻辑320可以确定共享资源343是不可用的。
例如,如图5和图6所示,假定两个写入命令和两个读取命令被输入到提交队列SQ1,四个写入命令和一个读取命令被输入到提交队列SQ2,四个读取命令和一个写入命令被输入到提交队列SQ3,头指针指向提交队列SQ1、SQ2和SQ3中的第一条目,并且仲裁突发大小是四。在图5和图6中,写入命令由“W”表示,读取命令由“R”表示。此外,假定装置资源340当中的写入资源342被耗尽并且是不可用的。
在这种情况下,常规装置控制器可以从提交队列SQ1中取出写入命令并且等待,直到用于执行所取出的写入命令的写入资源342变得可用。此外,装置控制器可以封锁共享资源343,直到写入资源变得可用。当写入资源342变得可用时,装置控制器可以执行从提交队列SQ1中取出的写入命令和读取命令,然后从下一个提交队列SQ2中取出命令。因此,由于所有命令的执行都等待直到资源变得可用,所以时延可能增加。此外,由于即使当写入命令正在等待时写入命令也占用着共享资源343,所以即使在读取资源341是可用的时取出读取命令,也可能不执行读取命令直到共享资源343变得可用。
在一些实施例中,如图5所示,命令取出逻辑310可以从提交队列SQ1、SQ2和SQ3当中选择目标提交队列SQ1,并且从提交队列SQ1中查看两个写入命令和两个读取命令。由于用于执行写入命令的写入资源342是不可用的,所以命令预处理逻辑320可以将提交队列SQ1标记为处于资源等待状态。在这种情况下,由于从提交队列SQ1中查看到命令,所以提交队列SQ1的头指针可以维持而不移动。命令取出逻辑310可以从下一个提交队列SQ2中取出四个写入命令。类似地,因为用于执行写入命令的写入资源342是不可用的,所以命令预处理逻辑320可以将提交队列SQ2标记为处于资源等待状态。在这种情况下,由于从提交队列中查看到命令,所以提交队列SQ2的头指针可以维持而不移动。
如图6所示,命令预处理逻辑320可以从下一个提交队列SQ3中查看四个读取命令。由于用于执行读取命令的读取资源341和共享资源343是可用的,所以命令取出逻辑310可以取出读取命令,并且命令处理逻辑330可以执行所取出的读取命令。在这种情况下,由于提交队列SQ3的命令被取出,所以提交队列SQ3的头指针可以被移动。因此,能够首先执行立即可执行的命令而不用等待被占用的资源(写入资源342)的释放,从而减少了等待时间并且同时提高了命令处理效率。
图7是根据实施例的示出了存储装置中的装置控制器的操作的示例性流程图。
参考图7,在S730,当存在可用的提交队列时,则在S735,装置控制器可以从可用的提交队列当中选择目标提交队列。在一些实施例中,可用的提交队列可以是未被标记为处于资源等待状态的提交队列。在S730,当没有可用的提交队列时,装置控制器可以结束操作。在S740,当在目标提交队列中存在命令时,则在S745,装置控制器可以从目标提交队列中查看命令。在S745,装置控制器可以从目标提交队列中查看命令并且维持头指针而不移动它。在一些实施例中,在S745,装置控制器可以从目标提交队列中查看与仲裁突发大小和目标提交队列中的可用命令的数目的最小数目相对应的命令。
在S750,装置控制器可以基于包括装置资源的状态的信息来确定查看到的命令是否是可执行的。在一些实施例中,在S750,装置控制器可以基于装置资源的状态、命令的I/O类型和命令的大小来确定命令是否是可执行的。在S750,当确定命令是可执行的时,则在S755,装置控制器可以取出命令并且将命令放置在命令处理流水线(或命令处理队列)中以执行命令。在S755,装置控制器可以通过移动目标提交队列中的头指针来取出命令。接下来,装置控制器可以在S740再次检查在目标提交队列中是否存在下一个命令。
在S750,当确定命令不是可执行的时,则在S760,装置控制器可以将目标提交队列标记为处于资源等待状态并且在S730检查是否存在可用的提交队列。在一些实施例中,资源等待状态可以包括指示等待资源的信息。作为非限制性示例,指示等待资源的信息可以包括等待资源的类型或等待资源的量中的至少一者。
在S740,当在目标提交队列中没有命令时,则在S730和S735,装置控制器可以从可用的提交队列当中选择下一个目标提交队列,并且重复参考S740至S760描述的操作。
在一些实施例中,为了处理被标记为处于等待状态的提交队列,在S710,装置控制器可以检查是否存在被指定为处于资源等待状态的提交队列。在S710,当不存在被标记为处于资源等待状态的提交队列时,在S730和S735,装置控制器可以从可用的提交队列当中选择目标提交队列,并且重复参考S740至S760描述的操作。
在S710,当存在被标记为处于资源等待状态的提交队列时,则在S715,装置控制器可以从被标记为处于资源等待状态的提交队列当中选择提交队列。在S720,装置控制器可以基于装置资源的状态来确定是否能够释放所选择的提交队列的处于等待状态的资源。在一些实施例中,在S720,装置控制器可以基于装置资源的状态和资源等待状态的信息来确定是否能够释放所选择的提交队列的处于等待状态的资源。例如,当与等待资源的类型和等待资源的量相对应的资源在装置资源中是可用的时,装置控制器可以释放所选择的提交队列的处于等待状态的资源。当不能释放处于等待状态的资源时,在S710,装置控制器可以确定是否存在被标记为资源等待状态的另一提交队列。
当能够释放处于等待状态的资源时,在S725,装置控制器可以将所选择的提交队列添加到可用的提交队列的列表。在一些实施例中,装置控制器可以将所选择的提交队列添加到可用的提交队列的列表的头,使得能够根据仲裁机制首先选择所选择的提交队列。接下来,在S710,装置控制器可以检查是否存在被标记为处于资源等待状态的另一提交队列,并且重复参考S715至S725描述的操作或参考S730至S760描述的操作。
接下来,参考图8描述地址转换资源被用作共享资源的示例性实施例。
图8是根据实施例的存储装置的装置控制器的示例性框图。
参考图8,装置控制器800可以包括命令取出逻辑810、命令预处理逻辑820、命令处理逻辑830和地址转换电路840。
在一些实施例中,装置控制器800还包括存储器缓冲器850,并且存储器缓冲器850可以包括多个提交队列851、852...85n。在一些实施例中,多个提交队列851至85n可以形成在主机装置的主机存储器(例如,图1中的112)中。
地址转换电路840可以包括地址转换缓存(ATC)841和控制逻辑842。地址转换缓存841可以具有多个条目,并且每个条目可以存储当将虚拟地址转换成主机存储器(例如,图1中的112或图2中的212)的物理地址时要使用的地址转换数据。虚拟地址可以是由命令的PRP或SGL指向的地址。控制逻辑842可以确定命令(即,命令的虚拟地址)是否命中地址转换缓存841。如果发生命中,则控制逻辑842可以基于命中的条目,将命令的虚拟地址转换成物理地址。如果命令未命中地址转换缓存841,则控制逻辑842向主机装置(例如,图1中的110或图2中的210)请求与命令的虚拟地址对应的物理地址。在一些实施例中,控制逻辑842可以经由地址转换服务(ATS)/页请求接口(PRI)请求物理地址。
命令取出逻辑810可以从提交队列851至85n中选择目标提交队列85i,并且从所选择的提交队列85i中查看命令。
命令预处理逻辑820可以基于所查看的命令是否命中地址转换缓存841来确定命令是否是可执行的。如果命令命中了地址转换缓存841,则命令预处理逻辑820可以确定命令是可执行的,通过命令取出逻辑810取出命令,并且指示命令处理逻辑830执行该命令。命令处理逻辑830可以将命令放置到命令处理流水线中,通过地址转换电路840将命令的虚拟地址转换成物理地址,并且执行命令。即使所查看的命令命中了地址转换缓存841,如果用于执行所查看的命令的其他资源不足,则命令预处理逻辑820也可以确定命令不是可执行的。
如果所查看的命令错过地址转换缓存841,则地址转换电路840的控制逻辑842可以向主机装置请求与所查看的命令的虚拟地址对应的物理地址,并且命令预处理逻辑820可以将提交队列85i标记为处于资源等待状态。当控制逻辑842从主机装置接收到物理地址并且然后地址转换缓存841变得可用时,装置控制器800可以释放提交队列85i的处于等待状态的资源并且执行提交队列85i的命令。
图9是根据实施例的存储装置中的装置控制器的示例性框图,图10是说明了图9所示的装置控制器的示例性操作的图。
参考图9,装置控制器900可以包括命令取出逻辑910、命令预处理逻辑920、命令处理逻辑930、装置资源940和待处理(pending)命令队列960。
在一些实施例中,装置控制器900还可以包括存储器缓冲器950,并且存储器缓冲器950可以包括多个提交队列951、952...95n。在一些实施例中,提交队列951至95n可以形成在主机装置的主机存储器(例如,图1中的112)中。
在一些实施例中,待处理命令队列960可以包括存储不可执行的读取命令的待处理读取命令队列961以及存储不可执行的写入命令的待处理写入命令队列962。在一些实施例中,可以基于仲裁突发大小、提交队列951至95n的数目以及装置控制器900能够同时地执行的命令的最大数目来设置待处理命令队列的大小。
命令取出逻辑910可以从提交队列95i中查看命令。当从提交队列95i中查看到命令时,命令取出逻辑910可以不移动提交队列95i的头指针。在一些实施例中,命令取出逻辑910可以从提交队列951至95n当中选择目标提交队列95i并且从目标提交队列95i中查看命令。
命令预处理逻辑920可以基于装置资源940的状态来确定查看到的命令是否是可执行的。在一些实施例中,装置资源940可以包括用于处理读取命令的读取资源941和用于处理写入命令的写入资源942。装置资源940还可以包括由读取命令和写入命令共享的共享资源943。
当确定查看到的命令是可执行的时,命令预处理逻辑920可以通过命令取出逻辑910取出命令并且指示命令处理逻辑930执行所取出的命令。命令取出逻辑910可以移动提交队列95i的头指针以从提交队列95i中取出命令。命令处理逻辑930可将装置资源940分配给取出的命令并且执行取出的命令。当确定查看到的命令不是可执行的时,命令预处理逻辑920可以在不进行资源分配的情况下将不可执行的命令放置到待处理命令队列960中,并且通过命令取出逻辑910取出命令。也就是说,随着不可执行的命令被移动到待处理命令队列960,命令取出逻辑910可以移动提交队列95i中的头指针。
在一些实施例中,当在查看到的命令当中确定一些命令是可执行的并且剩余命令不是可执行的时,命令预处理逻辑920可以指示命令处理逻辑930执行可执行的命令并且将不可执行的命令放置到待处理命令队列960中。例如,当由命令取出逻辑910从提交队列95i中查看到的命令包括读取命令和写入命令,并且读取资源941是可用的但写入资源942被耗尽时,命令预处理逻辑920可以将写入命令放置到待处理写入命令队列962中,并且命令处理逻辑930可以执行读取命令。当待处理命令队列960满了时,命令预处理逻辑920可以丢弃查看到的命令而不将它放置到待处理命令队列960中。在一些实施例中,当查看到的命令被丢弃时,命令预处理逻辑920可以将提交队列95i标记为处于资源等待状态,如参考图3至图8所描述的那样。
在处理了目标提交队列95i之后,装置控制器900可以从提交队列951至95n当中选择下一个目标提交队列95j,并且重复从所选择的提交队列95j中查看命令并且确定所查看的命令是否可执行的操作。
在一些实施例中,命令预处理逻辑920可以监测装置资源940的状态,并且当用于执行存储在命令待处理队列960中的命令的资源变得可用时,取出存储在命令待处理队列960中的命令并且指示命令处理逻辑930执行所取出的命令。在一些实施例中,命令预处理逻辑920还可以执行查看存储在命令待处理队列960中的命令并且确定所查看的命令是否是可执行的过程。
例如,如图10所示,假定两个写入命令W0和W1以及一个读取命令R0被输入到提交队列SQ1,一个读取命令R1以及两个写入命令W2和W3被输入到提交队列SQ2,两个写入命令W4和W5以及一个读取命令R2被输入到提交队列SQ3,头指针指向提交队列SQ1、SQ2和SQ3中的第一条目,并且仲裁突发大小是三。此外,假定装置资源940当中的写入资源942被耗尽并且是不可用的。
命令取出逻辑910可以从提交队列SQ1、SQ2和SQ3当中选择目标提交队列SQ1,并且从提交队列SQ1中查看命令W0、W1和R0。由于写入资源942是不可用的,所以命令预处理逻辑920可以将写入命令W0和W1放置到待处理写入命令队列962中。此外,由于读取资源941和共享资源943是可用的,所以命令预处理逻辑920可以指示命令处理逻辑930执行读取命令R0,并且命令处理逻辑930可以执行读取命令R0。
命令取出逻辑910可以选择下一个目标提交队列SQ2并且从提交队列SQ2中查看命令R1、W2和W3。命令预处理逻辑920可以指示命令处理逻辑930执行读取命令R1,并且命令处理逻辑930可以执行读取命令R1。此外,由于写入资源942是不可用的,所以命令预处理逻辑920可以将写入命令W2和W3放置到待处理写入命令队列962中。
命令取出逻辑910可以选择下一个目标提交队列SQ3并且从提交队列SQ3中查看命令W4、W5和R2。由于写入资源942是不可用的,所以命令预处理逻辑920可以将写入命令W4和W5放置到待处理写入命令队列962中,并且指示命令处理逻辑930执行读取命令R2。
当写入资源942变得可用时,命令预处理逻辑920可以从待处理写入命令队列962中取出写入命令W0至W5,并且指示命令处理逻辑930执行写入命令W0至W5。
图11是示出了根据实施例的存储装置中的装置控制器的操作的示例性流程图。
参考图11,在S1130,当存在可用的提交队列时,在S1135,装置控制器可以从可用的提交队列当中选择目标提交队列。在S1130,当没有可用的提交队列时,装置控制器可以结束操作。在S1140,当在目标提交队列中存在命令时,则在S1145,装置控制器可从目标提交队列中查看命令。在S1145,装置控制器可以从目标提交队列中查看命令并且维持头指针而不移动它。
在S1150,装置控制器可以基于包括装置资源的状态的信息来确定所查看的命令是否是可执行的。在S1150,当在所查看的命令当中存在可执行的命令时,在S1155,装置控制器可以取出可执行的命令并且将可执行的命令放置到命令处理流水线(或命令处理队列)中以执行命令。在S1155,装置控制器可以通过在目标提交队列中移动头指针来取出命令。在S1150,如果在所取出的命令当中存在不可执行的命令,则在S1160,装置控制器可以将不可执行的命令放置到待处理命令队列中。在一些实施例中,在S1160,装置控制器可以将不可执行的命令放置到待处理命令队列中并且从提交队列中取出命令。在S1160,装置控制器可以通过在目标提交队列中移动头指针来取出命令。
在S1140,装置控制器可以检查在目标提交队列中是否存在下一个命令。在S1140,当在目标提交队列中存在下一个命令时,装置控制器可以重复参考S1145至S1160描述的操作。
在S1140,当在目标提交队列中没有命令时,在S1130和S1135,装置控制器可以从可用的提交队列当中选择下一个目标提交队列,并且重复参考S1140至S1160描述的操作。
在一些实施例中,为了处理待处理命令队列,在S1110,装置控制器可以检查在待处理命令队列中是否存在命令。在S1110,如果在待处理命令队列中没有命令,则在S1130和S1135,装置控制器可以从可用的提交队列当中选择目标提交队列,并且重复参考S1140至S1160描述的操作。
在S1110,当在待处理命令队列中存在命令时,在S1120,装置控制器可以确定待处理命令队列的命令是否是可执行的。在一些实施例中,装置控制器可以在S1120基于装置资源的状态和待处理命令队列的I/O类型来确定待处理命令队列的命令是否是可执行的。例如,装置控制器可以在共享资源和读取资源是可用的时确定待处理读取命令队列中的命令是可执行的,并且在共享资源和写入资源是可用的时确定待处理写入命令队列中的命令是可执行的。当待处理命令队列的命令是可执行的时,在S1125,装置控制器可以取出并执行待处理命令队列的命令。
在S1120,当待处理命令队列的命令是不可执行的时,在S1130和S1135,装置控制器可以从可用的提交队列中选择目标提交队列,并且重复参考S1140至S1160描述的操作。
图12是根据另一实施例的存储装置中的装置控制器的示例性框图,并且图13是说明了图12所示的装置控制器的示例性操作的图。
参考图12,装置控制器1200可以包括命令取出逻辑1210、命令预处理逻辑1220、命令处理逻辑1230和装置资源1240。
在一些实施例中,装置控制器1200还可以包括存储器缓冲器1250,并且存储器缓冲器1250可以包括多个提交队列1251、1252、...125n。在一些实施例中,提交队列1251至125n可以形成在主机装置的主机存储器(例如,图1的112)中。
命令取出逻辑1210可以从提交队列125i中查看命令。当从提交队列125i中查看到命令时,命令取出逻辑1210可以不移动提交队列125i的头指针。在一些实施例中,命令取出逻辑1210可以从提交队列1251至125n当中选择目标提交队列125i并且从所选择的目标提交队列125i中查看命令。
命令预处理逻辑1220可以基于装置资源1240的状态来确定所查看的命令是否是可执行的。在一些实施例中,装置资源1240可以包括用于处理读取命令的读取资源1241以及用于处理写入命令的写入资源1242。装置资源1240还可以包括由读取命令和写入命令共享的共享资源1243。
当确定所查看的命令是可执行的时,命令预处理逻辑1220可以取出所查看的命令并且指示命令处理逻辑1230执行所取出的命令。命令取出逻辑1210可以移动提交队列125i的头指针以从提交队列中取出命令。命令处理逻辑1230可以将装置资源1240分配给所取出的命令并且执行所取出的命令。在一些实施例中,当确定所查看的命令是不可执行的时,命令预处理逻辑1220可以指示命令取出逻辑1210将不可执行的命令推送回到提交队列125i。在一些实施例中,命令取出逻辑1210可以操纵提交队列125i的头指针以将不可执行的指令打包(pack)在提交队列125i中。因此,可以在提交队列125i中执行乱序指令处理。
在一些实施例中,命令取出逻辑1210可以从提交队列125i的头到尾顺序地查看命令,并且命令预处理逻辑1220可以确定所查看的命令是否是可执行的。当在所查看的命令当中确定一些命令是可执行的并且其他命令不是可执行的时,命令预处理逻辑1220可以指示命令处理逻辑1230执行可执行的命令,并且可以将不可执行的命令打包在提交队列125i中。当由命令取出逻辑1210从提交队列125i中查看到的命令包括读取命令和写入命令,并且读取资源1241是可用的但写入资源1242被耗尽时,命令处理逻辑1230可以取出并执行读取命令。命令取出逻辑1210可以将提交队列125i的头指针移动所取出的读取命令的数目,并且从由所移动的头指针指示的头条目开始打包写入命令。
在一些实施例中,当在主机存储器112中形成提交队列125i时,命令取出逻辑1210可以向主机装置请求提交队列125i的写入许可,并且可以在从主机装置接收到写入许可之后将命令打包在提交队列125i中。
在一些实施例中,命令预处理逻辑1220可以如参考图3至图7所描述的那样将命令被打包在其中的提交队列125i标记为处于资源等待状态。在一些实施例中,命令预处理逻辑1220可以设置指示了经打包的提交队列125i等待的等待资源的信息。作为非限制性示例,指示等待资源的信息可以包括等待资源的类型或等待资源的量中的至少一者。
如图13所示,例如,假定写入命令W0和W1、读取命令R0、写入命令W2、读取命令R1和写入命令W3被顺序地输入到提交队列SQ。此外,假定装置资源1240当中的写入资源1242被耗尽并且是不可用的。
命令取出逻辑1210可以从提交队列SQ中顺序地查看命令,并且取出读取命令R0和R1,因为读取资源1241和共享资源1243是可用的。命令处理逻辑1230可以将资源分配给所取出的读取命令R0和R1并且执行所取出的读取命令R0和R1。此外,由于命令取出逻辑1210已取出两个读取命令R0和R1,所以命令取出逻辑1210可以将提交队列SQ的头指针从‘h’移动到‘h-2’,并且从由头指针‘h-2’指示的提交队列SQ的条目开始再次打包写入命令W0、W1、W2和W3。
在一些实施例中,命令预处理逻辑1220可以监测装置资源1240的状态,并且确定用于命令已被再次打包在其中的提交队列SQ的资源是否变得可用。当资源变得可用时,命令预处理逻辑1220可以将提交队列SQ指定为可用的提交队列。因此,如上所述,可以执行从提交队列SQ中查看命令并且确定所查看的命令是否可执行的操作。在一些实施例中,当资源变得可用时,命令预处理逻辑1220可以使命令已被再次打包在其中的提交队列SQ优先于其他提交队列。例如,命令预处理逻辑1220可以将命令已被再次打包在其中的提交队列SQ添加到可用提交队列的列表的头。
在一些实施例中,命令预处理逻辑1220可以从提交队列1251至125n中选择下一个目标提交队列125j,并且可以执行从所选择的提交队列125j中查看命令并且确定所查看的命令是否可执行的操作。
图14是示出了根据实施例的存储装置中的装置控制器的操作的示例性流程图。
参考图14,在S1430,当存在可用的提交队列时,在S1435,装置控制器可以从可用的提交队列中选择目标提交队列。在S1430,当没有可用的提交队列时,装置控制器可以结束操作。在S1440,当在目标提交队列中存在命令时,在S1445,装置控制器可以从目标提交队列中查看命令。在S1445,装置控制器可以从目标提交队列中查看命令并且维持头指针而不移动它。
在S1450,装置控制器可以基于包括装置资源的状态的信息来确定所查看的命令是否是可执行的。在S1450,当所查看到的命令不是可执行的时,装置控制器可以在S1440再次检查在目标提交队列中是否存在下一个命令。在S1450,当确定所查看的命令是可执行的时,在S1455,装置控制器可以取出命令并且将命令放置到命令处理流水线(或命令处理队列)中以执行命令。接下来,在S1440,装置控制器可以再次检查在目标提交队列中是否存在下一个命令。
在S1440,在查看命令直到目标提交队列的尾之后,在S1460,装置控制器可以检查在目标提交队列中是否存在不可执行的命令。如果没有不可执行的命令,则在S1430和S1435,装置控制器可以从可用的提交队列当中选择下一个目标提交队列。如果存在不可执行的命令,则在S1465,装置控制器可以将不可执行的命令打包在目标提交队列中。装置控制器可以将目标提交队列的头指针移动取出的命令的数目,并且从由经移动的头指针指示的头条目开始打包不可执行的命令。在一些实施例中,装置控制器可以将经打包的提交队列标记为处于资源等待状态。接下来,在S1430和S1435,装置控制器可以从可用的提交队列当中选择下一个目标提交队列,并且重复参考步骤S1440至S1465描述的操作。
在一些实施例中,为了对经打包的提交队列进行优先化,在S1410,装置控制器可以检查是否存在经打包的提交队列。在一些实施例中,在S1410,装置控制器可以检查是否存在处于等待状态的资源的提交队列。在S1410,如果不存在经打包的提交队列,则在S1430和S1435,装置控制器可以从可用的提交队列当中选择提交队列,并且重复参考S1440至S1465描述的操作。
在S1410,当存在经打包的提交队列时,则在S1415装置控制器可以从经打包的提交队列当中选择提交队列。在S1420装置控制器可以基于装置资源的状态来确定所选择的提交队列是否是可处理的。在一些实施例中,在S1420装置控制器可以基于装置资源的状态以及指示所选择的提交队列等待的资源的信息来确定所选择的提交队列是否是可处理的。例如,当与等待资源的类型和量对应的资源在装置资源中是可用的时,装置控制器可以确定所选择的提交队列是可处理的。
当所选择的提交队列是可处理的时,则在S1425装置控制器可以将所选择的提交队列添加到可用的提交队列的列表。在一些实施例中,装置控制器可以将所选择的提交队列添加到可用的提交队列的列表的头,使得能够根据仲裁机制首先选择所选择的提交队列。当所选择的提交队列不是可处理的时,则在S1410装置控制器可以检查是否存在另一打包的提交队列,并且重复参考S1415至S1425描述的操作或参考S1430至S1465描述的操作。
图15是根据一个实施例的计算机装置的示例性框图。
参考图15,计算装置1500可以包括处理器1510、存储器1520、存储器控制器1530、存储装置1540、通信接口1550和总线1560。计算装置1500还可以包括其他一般部件。
处理器1510可以控制计算装置1500的每个部件的整体操作。处理器1510可以用诸如中央处理单元(CPU)、应用处理器(AP)和图形处理单元(GPU)的各种处理单元中的至少一者来实现。
存储器1520可以存储各种数据和指令。存储器控制器1530可以控制从存储器1520转移来的数据或指令和转移到存储器1520的数据或指令。在一些实施例中,存储器控制器1530可以作为与处理器1510分开的芯片被提供。在一些实施例中,存储器控制器1530可以作为处理器1510的内部部件被提供。
存储装置1540可以非暂时性地存储程序和数据。在一些实施例中,可以将存储装置1540实现为参考图1至图14描述的存储装置。通信接口1550可以支持计算装置1500的有线或无线因特网通信。另外,通信接口1550可以支持除因特网通信以外的各种通信方法。总线1560可以提供计算装置1500的部件之间的通信功能。总线1560可以根据部件之间的通信协议包括至少一种类型的总线。
在一些实施例中,参考图1至图14描述的每个逻辑或两个或更多个逻辑的组合可以用数字电路、可编程或非可编程逻辑器件或阵列、专用集成电路(ASIC)等来实现。
虽然本发明已经结合目前被认为是优选实施例的实施例进行了描述,但是应当理解,本发明不限于所公开的实施例。相反,本发明旨在涵盖包括在所附权利要求的精神和范围内的各种修改和等同布置。
Claims (20)
1.一种包括非易失性存储器的存储装置的装置控制器,包括:
装置资源;
命令取出逻辑,所述命令取出逻辑被配置为从多个提交队列当中的第一提交队列中查看第一命令,并且响应于确定了所述第一命令是可执行的取出所述第一命令;
命令预处理逻辑,所述命令预处理逻辑被配置为基于所述装置资源的状态来确定所述命令取出逻辑查看到的所述第一命令是否是可执行的;以及
命令处理逻辑,所述命令处理逻辑被配置为响应于确定了所述第一命令是可执行的,将所述装置资源分配给所述命令取出逻辑取出的所述第一命令并且执行所述第一命令。
2.根据权利要求1所述的装置控制器,其中所述命令取出逻辑被配置为在查看所述第一命令时不移动所述第一提交队列的头指针,并且在查看所述第一命令之后通过移动所述第一提交队列的所述头指针来取出所述第一命令。
3.根据权利要求1所述的装置控制器,其中所述命令取出逻辑被配置为从所述多个提交队列当中的第二提交队列中查看第二命令,并且
其中所述命令预处理逻辑被配置为基于所述装置资源的状态来确定所述第二命令是否是可执行的,并且响应于确定了所述第二命令是不可执行的将所述第二提交队列标记为处于等待所述装置资源的等待状态。
4.根据权利要求3所述的装置控制器,其中所述命令取出逻辑被配置为:响应于确定了所述第二命令是不可执行的,丢弃所述第二命令而不取出所述第二命令。
5.根据权利要求3所述的装置控制器,其中所述命令预处理逻辑被配置为:基于所述装置资源的状态来确定被标记为处于所述等待状态的所述第二提交队列是否是可处理的,并且
其中,响应于确定了所述第二提交队列是可处理的,所述命令取出逻辑从所述第二提交队列中查看所述第二命令,并且所述命令预处理逻辑确定所述第二命令是否是可执行的。
6.根据权利要求5所述的装置控制器,其中所述命令预处理逻辑被配置为在所述装置资源当中的所述第二命令所等待的资源是可用的时,确定所述第二提交队列是可处理的。
7.根据权利要求6所述的装置控制器,其中所述命令预处理逻辑被配置为使被标记为处于所述等待状态的所述第二提交队列优先于所述多个提交队列当中的剩余提交队列。
8.根据权利要求1所述的装置控制器,所述装置控制器还包括待处理命令队列,
其中所述命令取出逻辑被配置为从所述第一提交队列中查看所述第一命令和所述第二命令,并且
其中响应于所述命令预处理逻辑确定了所述第一命令是可执行的并且所述第二命令是不可执行的,所述命令取出逻辑取出所述第一命令和所述第二命令,并且所述命令预处理逻辑将所述第二命令存储在所述待处理命令队列中。
9.根据权利要求8所述的装置控制器,其中所述命令预处理逻辑被配置为基于所述装置资源的状态来确定存储在所述待处理命令队列中的第三命令是否是可执行的,并且
其中所述命令处理逻辑被配置为:响应于确定了所述待处理命令队列中的所述第三命令是可执行的,执行所述待处理命令队列中的所述第三命令。
10.根据权利要求9所述的装置控制器,其中所述命令预处理逻辑被配置为使所述待处理命令队列优先于所述多个提交队列。
11.根据权利要求1所述的装置控制器,其中所述命令取出逻辑被配置为从所述第一提交队列中查看所述第一命令和第二命令,并且
其中所述命令取出逻辑被配置为:响应于所述命令预处理逻辑确定了所述第一命令是可执行的并且所述第二命令是不可执行的,从所述第一提交队列中取出所述第一命令并且将所述第二命令打包到所述第一提交队列中。
12.根据权利要求11所述的装置控制器,其中所述命令取出逻辑被配置为将所述第一提交队列的头指针移动所述第一命令的数目,并且从所述头指针被移动到的条目开始打包所述第二命令。
13.根据权利要求11所述的装置控制器,其中所述命令预处理逻辑被配置为基于所述装置资源的状态来确定被所述命令取出逻辑打包了所述第二命令的所述第一提交队列是否是可处理的,其中响应于确定了所述第一提交队列是可处理的,所述命令取出逻辑从所述第一提交队列中查看所述第二命令,并且所述命令预处理逻辑确定所述第二命令是否是可执行的。
14.根据权利要求13所述的装置控制器,其中所述命令预处理逻辑被配置为使所述第一提交队列优先于所述多个提交队列当中的剩余提交队列。
15.根据权利要求1所述的装置控制器,其中所述命令预处理逻辑被配置为当所述装置资源当中的用于执行所述第一命令的资源是可用的时,确定所述第一命令是可执行的并且取出所述第一命令。
16.根据权利要求15所述的装置控制器,其中所述装置资源包括专用于读取命令的读取资源、专用于写入命令的写入资源、以及由所述读取命令和所述写入命令共享的共享资源,并且
其中所述命令预处理逻辑被配置为:当所述读取资源和所述写入资源当中的与所述第一命令的输入/输出类型对应的资源以及所述共享资源是可用的时,确定用于执行所述第一命令的所述资源是可用的并且取出所述第一命令。
17.根据权利要求15所述的装置控制器,其中所述装置资源包括用于执行所述第一命令的多种类型的资源,并且
其中所述命令预处理逻辑被配置为当所述多种类型的资源当中的至少一部分类型的资源是不可用的时,确定用于执行所述第一命令的所述资源是不可用的。
18.根据权利要求15所述的装置控制器,其中所述命令预处理逻辑被配置为当所述装置资源当中的用于执行所述第一命令的所述资源是不可用的时,不将所述装置资源分配给所述第一命令。
19.一种存储装置,所述存储装置包括:
非易失性存储器;以及
装置控制器,所述装置控制器被配置为:
控制对所述非易失性存储器的访问;
从提交队列中查看命令而不移动所述提交队列的头指针;
基于装置资源的状态来确定所述命令是否是可执行的;以及
响应于确定了所述命令是可执行的,移动所述提交队列的所述头指针。
20.一种由包括非易失性存储器的存储装置执行的方法,所述方法包括:
从提交队列中查看命令;
基于装置资源的状态来确定所述命令是否是可执行的;
响应于确定了所述命令是可执行的,取出所述命令;以及
响应于确定了所述命令是可执行的,将所述装置资源分配给所述命令并且执行所述命令。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0164973 | 2021-11-25 | ||
KR20210164973 | 2021-11-25 | ||
KR10-2022-0054905 | 2022-05-03 | ||
KR1020220054905A KR102553878B1 (ko) | 2021-11-25 | 2022-05-03 | 비휘발성 메모리 기반의 저장 장치, 장치 컨트롤러 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116166415A true CN116166415A (zh) | 2023-05-26 |
Family
ID=84358992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211349754.9A Pending CN116166415A (zh) | 2021-11-25 | 2022-10-31 | 装置控制器、存储装置及其方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230359392A1 (zh) |
EP (1) | EP4187364A1 (zh) |
CN (1) | CN116166415A (zh) |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806143B1 (en) * | 2009-10-09 | 2014-08-12 | Netapp, Inc. | Queuing received write blocks for reducing file fragmentation |
US8966164B1 (en) * | 2013-09-27 | 2015-02-24 | Avalanche Technology, Inc. | Storage processor managing NVME logically addressed solid state disk array |
US8874836B1 (en) * | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
KR102330389B1 (ko) * | 2014-07-24 | 2021-11-24 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
KR101730991B1 (ko) * | 2014-10-28 | 2017-04-28 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US9760281B2 (en) * | 2015-03-27 | 2017-09-12 | Intel Corporation | Sequential write stream management |
US10019161B2 (en) * | 2015-08-31 | 2018-07-10 | Sandisk Technologies Llc | Out of order memory command fetching |
US10642500B2 (en) * | 2015-09-28 | 2020-05-05 | Sandisk Technologies Llc | Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues |
US11467769B2 (en) * | 2015-09-28 | 2022-10-11 | Sandisk Technologies Llc | Managed fetching and execution of commands from submission queues |
US10509569B2 (en) * | 2017-03-24 | 2019-12-17 | Western Digital Technologies, Inc. | System and method for adaptive command fetch aggregation |
US10452278B2 (en) * | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
US10466904B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10466903B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
US10564853B2 (en) * | 2017-04-26 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for locality detection to identify read or write streams in a memory device |
US10387081B2 (en) * | 2017-03-24 | 2019-08-20 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10296473B2 (en) * | 2017-03-24 | 2019-05-21 | Western Digital Technologies, Inc. | System and method for fast execution of in-capsule commands |
JP2018169810A (ja) * | 2017-03-30 | 2018-11-01 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
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 |
-
2022
- 2022-10-31 CN CN202211349754.9A patent/CN116166415A/zh active Pending
- 2022-11-09 US US17/983,458 patent/US20230359392A1/en active Pending
- 2022-11-10 EP EP22206564.1A patent/EP4187364A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230359392A1 (en) | 2023-11-09 |
EP4187364A1 (en) | 2023-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110088723B (zh) | 用于对提交队列和完成队列进行处理并且做出仲裁的系统和方法 | |
CN110088725B (zh) | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 | |
KR102353782B1 (ko) | NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 | |
US8838879B2 (en) | Memory system | |
US9317204B2 (en) | System and method for I/O optimization in a multi-queued environment | |
US8683126B2 (en) | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory | |
US20130212319A1 (en) | Memory system and method of controlling memory system | |
KR102387932B1 (ko) | 멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템 | |
US9423979B2 (en) | Memory system and memory controller for determining whether one or plurality of pointers can be stored in a second buffer and for executing data transfer between data buffer and host using the pointers | |
US20170235671A1 (en) | Computing device, data transfer method between coprocessor and non-volatile memory, and computer-readable recording medium | |
US10782915B2 (en) | Device controller that schedules memory access to a host memory, and storage device including the same | |
US11016904B2 (en) | Storage device for performing map scheduling and electronic device including the same | |
US10782919B2 (en) | Command processing method and storage controller using the same | |
JP2021526255A (ja) | 分散集積リストの順不同処理の方法 | |
CN109213423B (zh) | 基于地址屏障无锁处理并发io命令 | |
CN112445423A (zh) | 存储器系统、计算机系统及其数据管理方法 | |
CN111258932A (zh) | 加速ufs协议处理的方法与存储控制器 | |
EP3270293B1 (en) | Two stage command buffers to overlap iommu map and second tier memory reads | |
US10459662B1 (en) | Write failure handling for a memory controller to non-volatile memory | |
US10042773B2 (en) | Advance cache allocator | |
US8713204B2 (en) | High-performance AHCI interface | |
EP4187364A1 (en) | Non-volatile memory-based storage device, device controller and method thereof | |
JP5254710B2 (ja) | データ転送装置、データ転送方法およびプロセッサ | |
KR102553878B1 (ko) | 비휘발성 메모리 기반의 저장 장치, 장치 컨트롤러 및 방법 | |
EP3916567A1 (en) | Method for processing page fault by processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |