一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

具有多个优先级队列的受管理存储器系统的制作方法

2022-06-01 07:15:01 来源:中国专利 TAG:

具有多个优先级队列的受管理存储器系统
1.交叉引用
2.本专利申请案主张加托(gatto)等人在2020年11月18日申请的标题为“具有多个优先级队列的受管理存储器系统(managed memory systems with multiple priority queues)”的第16/951,985号美国专利申请案的优先权,所述美国专利申请案转让给本受让人并且明确地以全文引用的方式并入本文中。
技术领域
3.本技术领域涉及具有多个优先级队列的受管理存储器系统。


背景技术:

4.存储器装置广泛用于将信息存储在例如计算机、无线通信装置、相机、数字显示器等的各种电子装置中。通过将存储器装置内的存储器单元编程为各种状态来存储信息。举例来说,二进制存储器单元可被编程为通常对应于逻辑1或逻辑0的两个支持状态中的一个。在一些实例中,单个存储器单元可支持多于两个可能状态,存储器单元可存储所述两个可能状态中的任一个。为了存取由存储器装置存储的信息,组件可读取或感测存储器装置内的一或多个存储器单元的状态。为了存储信息,组件可将存储器装置内的一或多个存储器单元写入或编程到相应状态。
5.存在各种类型的存储器装置,包含磁性硬盘、随机存取存储器(ram)、只读存储器(rom)、动态ram(dram)、同步动态ram(sdram)、铁电ram(feram)、磁性ram(mram)、电阻式ram(rram)、快闪存储器、相变存储器(pcm)、3维交叉点存储器(3d交叉点)、或非(nor)和与非(nand)存储器装置等。存储器装置可以是易失性或非易失性的。除非由外部电源周期性地刷新,否则易失性存储器单元(例如,dram单元)可能随时间推移而丢失其编程状态。非易失性存储器单元(例如,nand存储器单元)即使在不存在外部电源的情况下仍可在很长一段时间内维持其编程状态。


技术实现要素:

6.描述一种存储代码的非暂时性计算机可读媒体。在一些实例中,存储代码的非暂时性计算机可读媒体可包含在由存储器装置的处理器执行时致使所述存储器装置进行以下操作的指令:在接口处从主机接收存储器存取命令;将所述存储器存取命令存储于命令队列中;确定与第一优先级相关联的存储器存取命令第一子集和与第二优先级相关联的存储器存取命令第二子集;将与所述第一优先级相关联的所述存储器存取命令第一子集从所述命令队列路由到第一队列;将与所述第二优先级相关联的所述存储器存取命令第二子集从所述命令队列路由到第二队列;将与所述存储器存取命令相关联的数据存储于与所述接口耦合的缓冲器中;通过包含所述一或多个处理器的处理器在存储控制器处根据第一处理程序处理从所述第一队列到第三队列的所述存储器存取命令第一子集,所述第三队列与所述第一优先级相关联;通过所述处理器在所述存储控制器处根据第二处理程序处理从所述
第二队列到第四队列的所述存储器存取命令第二子集,所述第四队列与所述第二优先级相关联,其中所述处理器的执行单元根据用于所述第一优先级和所述第二优先级之间的优先级排序的一或多个参数,并行地运行所述第一处理程序和第二处理程序;和通过所述存储控制器将与所述存储器存取命令相关联的所述数据在所述缓冲器和包括多个存储器单元的存储性存储器之间移动。
7.描述一种设备。所述设备可包含接口,其被配置成从主机接收存储器存取命令并且发送和接收与所述存储器存取命令相关联的数据。所述接口可包含:命令队列,其被配置成存储由所述接口接收到的所述存储器存取命令;和处理器。所述处理器可包含:执行单元;第一队列,其被配置成存储与第一优先级相关联的存储器存取命令第一子集;第二队列,其被配置成存储与第二优先级相关联的存储器存取命令第二子集;和一或多个命令路由器,其被配置成从所述命令队列获得所述存储器存取命令,确定所述存储器存取命令第一子集和第二子集,并且将所述第一子集和第二子集分别存储于所述第一队列和第二队列。所述接口可另外包含:缓冲器,其与所述接口耦合并被配置成存储与所述存储器存取命令相关联的所述数据;存储性存储器,其具有多个存储器单元;和存储控制器,其被配置成在所述缓冲器和所述存储性存储器之间移动与所述存储器存取命令相关联的所述数据。所述存储控制器可包含:与所述第一优先级相关联的第三队列;和与所述第二优先级相关联的第四队列。所述处理器可被配置成根据第一处理程序处理从所述第一队列到所述第三队列的所述存储器存取命令第一子集并且根据第二处理程序处理从所述第二队列到所述第四队列的所述存储器存取命令第二子集,其中所述第一处理程序和第二处理程序被配置成通过所述执行单元根据用于所述第一优先级和所述第二优先级之间的优先级排序的一或多个参数而并行地运行。
8.描述了一种存储器装置。所述存储器装置可包含:存储性存储器,其具有多个存储器单元;和处理器,其与所述存储性存储器耦合。所述处理器可为可操作的以致使所述存储器装置进行以下操作:在接口处从主机接收存储器存取命令;将所述存储器存取命令存储于命令队列中;确定与第一优先级相关联的存储器存取命令第一子集和与第二优先级相关联的存储器存取命令第二子集;将与所述第一优先级相关联的所述存储器存取命令第一子集从所述命令队列路由到第一队列;将与所述第二优先级相关联的所述存储器存取命令第二子集从所述命令队列路由到第二队列;将与所述存储器存取命令相关联的数据存储于与所述接口耦合的缓冲器中;在存储控制器处根据第一处理程序处理从所述第一队列到第三队列的所述存储器存取命令第一子集,所述第三队列与所述第一优先级相关联;在所述存储控制器处根据第二处理程序处理从所述第二队列到第四队列的所述存储器存取命令第二子集,所述第四队列与所述第二优先级相关联,其中执行单元根据用于所述第一优先级和所述第二优先级之间的优先级排序的一或多个参数,并行地运行所述第一处理程序和第二处理程序;和通过所述存储控制器将与所述存储器存取命令相关联的所述数据在所述缓冲器和所述存储性存储器之间移动。
附图说明
9.图1说明根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的系统的实例。
10.图2说明根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的系统的实例。
11.图3说明根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的系统的实例。
12.图4说明根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的系统控制图的实例。
13.图5示出说明根据本公开的方面的支持具有多个优先级队列的受管理存储器系统的状态机的实例的图式。
14.图6示出根据本公开的方面的支持具有多个优先级队列的受管理存储器系统的存储器系统的框图。
15.图7示出说明根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的方法的流程图。
具体实施方式
16.当前受管理nand系统以硬件和固件的组合予以实施。硬件可包含用于数据和命令处理(例如将命令进行排队)的逻辑以及用于在接口和缓冲器之间移动数据并且进行缓冲和存储的逻辑。固件可执行命令处理。在一些情况下,命令可与多个不同优先级相关联。因为固件正在具有执行单元(例如,单个执行单元)的处理器(例如,cpu)上运行,所以根据命令的优先权管理命令处理会在实施命令处理优先级并且防止归因于多个队列优先级发生暂停方面存在挑战。
17.本文中所描述的技术涉及实施用于处置来自硬件和固件队列的命令的多个处理程序。受管理nand系统可在前端和后端实施用于接收命令的命令队列和针对每个优先级的单独硬件队列。处理器可并行地运行命令处置器处理程序并且根据优先级将来自前端的硬件队列的命令移动到后端的硬件队列。举例来说,固件中的命令处置器可具有与优先级排序相关联的参数,且处理程序的执行可受所述参数控制或被所述参数告知。受管理nand系统可具有用于从前端到后端的命令传送的单独总线。
18.首先在如参考图1和2所描述的系统和装置的上下文中描述本公开的特征。在如参考图3-5所描述的系统、装置和图式的上下文中描述本公开的特征。通过涉及如参考图6和7所描述的涉及具有多个优先级队列的受管理存储器系统的设备图和流程图说明并且参考所述设备图和流程图描述本公开的这些和其它特征。
19.图1是根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的系统100的实例。系统100包含与存储器系统110耦合的主机系统105。
20.存储器系统110可以是或包含任何装置或装置的集合,其中装置或装置的集合包含至少一个存储器阵列。例如,存储器系统110可为或包含通用快闪存储(ufs)装置、嵌入式多媒体控制器(emmc)装置、快闪装置、通用串行总线(usb)快闪装置、安全数字(sd)卡、固态驱动器(ssd)、硬盘驱动器(hdd)、双列直插式存储器模块(dimm)、小型dimm(so-dimm),或非易失性dimm(nvdimm),以及其它可能性。
21.系统100可包含在计算装置中,所述计算装置如台式计算机、手提式计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具物联网
(iot)功能的装置、嵌入式计算机(例如,包含在交通工具、工业设备或联网商业装置中的嵌入式计算机),或包含存储器和处理装置的任何其它计算装置。
22.系统100可包含可与存储器系统110耦合的主机系统105。在一些实例中,此耦合可包含与主机系统控制器106的接口,所述主机系统控制器106可以是配置成使得主机系统105根据如本文中所描述的实例执行各种操作的控制组件的实例。主机系统105可包含一或多个装置,且在一些情况下,可包含处理器芯片组和通过处理器芯片组执行的软件堆栈。举例来说,主机系统105可包含被配置成用于与存储器系统110或其中的装置通信的应用程序。处理器芯片组可包含一或多个核心、一或多个高速缓存器(例如,主机系统105本地的或包含在主机系统105的存储器)、存储器控制器(例如,nvdimm控制器)和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统105可使用存储器系统110例如将数据写入到存储器系统110以及从存储器系统110读取数据。虽然图1中示出一个存储器系统110,但应理解,主机系统105可与任何数量的存储器系统110耦合。
23.主机系统105可经由至少一个物理主机接口与存储器系统110耦合。在一些情况下,主机系统105及存储器系统110可经配置以使用相关联协议经由物理主机接口通信(例如,以在存储器系统110与主机系统105之间交换或以其它方式传达控制、地址、数据和其它信号)。物理主机接口的实例可包含但不限于串行高级技术附件(sata)接口、ufs接口、emmc接口、外围组件互连高速(pcie)接口、usb接口、光纤通道、小型计算机系统接口(scsi)、串行附接scsi(sas)、双数据速率(ddr)、双列直插式存储器模块(dimm)接口(例如,支持ddr的dimm套接接口)、开放nand快闪接口(onfi)和低功率双数据速率(lpddr)。在一些实例中,一或多个此类接口可包含在主机系统105的主机系统控制器106与存储器系统110的存储器系统控制器115中或以其它方式在其间得到支持。在一些实例中,主机系统105可经由用于包含在存储器系统110中的每一存储器装置130或存储器装置140的相应物理主机接口,或经由用于包含在存储器系统110中的每一类型的存储器装置130或存储器装置140的相应物理主机接口而与存储器系统110耦合(例如,主机系统控制器106可与存储器系统控制器115耦合)。
24.存储器系统110可包含存储器系统控制器115、存储器装置130和存储器装置140。存储器装置130可包含第一类型的存储器单元(例如,一种类型的非易失性存储器单元)的一或多个存储器阵列,且存储器装置140可包含第二类型的存储器单元(例如,一种类型的易失性存储器单元)的一或多个存储器阵列。虽然在图1的实例中展示一个存储器装置130和一个存储器装置140,但应理解,存储器系统110可包含任何数量的存储器装置130和存储器装置140,且在一些情况下,存储器系统110可不具有存储器装置130或存储器装置140。
25.存储器系统控制器115可与主机系统105耦合并通信(例如,经由物理主机接口),并且可以是被配置成致使存储器系统110根据如本文所描述的实例执行各种操作的控制组件的实例。存储器系统控制器115还可与存储器装置130或存储器装置140耦合和通信以进行例如在存储器装置130或存储器装置140处读取数据、写入数据、擦除数据或刷新数据的操作,以及可通常被称为存取操作的其它此类操作。在一些情况下,存储器系统控制器115可从主机系统105接收命令且与一或多个存储器装置130或存储器装置140通信以执行此类命令(例如,在一或多个存储器装置130或存储器装置140内的存储器阵列处)。举例来说,存储器系统控制器115可从主机系统105接收命令或操作并且可将所述命令或操作转换成指
令或适当命令以实现对存储器装置130或存储器装置140的所要存取。且在一些情况下,存储器系统控制器115可与主机系统105以及一或多个存储器装置130或存储器装置140交换数据(例如,响应于或以其它方式结合来自主机系统105的命令)。举例来说,存储器系统控制器115可将与存储器装置130或存储器装置140相关联的响应(例如,数据包或其它信号)转换成用于主机系统105的对应信号。
26.存储器系统控制器115可配置成用于与存储器装置130或存储器装置140相关联的其它操作。例如,存储器系统控制器115可执行或管理操作,例如耗损均衡操作、垃圾收集操作、错误检测操作或错误校正操作等错误控制操作、加密操作、高速缓存操作、媒体管理操作、背景刷新、健康监测,以及与来自主机系统105的命令相关联的逻辑地址(例如,逻辑块地址(lba))和与存储器装置130或存储器装置140内的存储器单元相关联的物理地址(例如,物理块地址)之间的地址转换。
27.存储器系统控制器115可包含硬件,如一或多个集成电路或离散组件、缓冲器存储器或其组合。硬件可包含具有专用(例如,硬译码)逻辑的电路系统,以执行本文中归于存储器系统控制器115的操作。存储器系统控制器115可以是或包含微控制器、专用逻辑电路(例如,现场可编程门阵列(fpga)、专用集成电路(asic)、数字信号处理器(dsp)),或任何其它合适的处理器或处理电路。
28.存储器系统控制器115还可包含本地存储器120。在一些情况下,本地存储器120可包含只读存储器(rom)或其它存储器,其可存储可由存储器系统控制器115执行的操作代码(例如,可执行指令)以执行本文中归于存储器系统控制器115的功能。在一些情况下,本地存储器120可另外或替代地包含静态随机存取存储器(sram)或其它存储器,其可由存储器系统控制器115用于例如与本文中归因于存储器系统控制器115的功能有关的内部存储或计算。
29.存储器装置140可包含易失性存储器单元的一或多个阵列。举例来说,存储器装置140可包含随机存取存储器(ram)存储器单元,如动态ram(dram)存储器单元和同步dram(sdram)存储器单元。在一些实例中,存储器装置140可(例如,由主机系统105)支持相对于存储器装置130具有减少的等待时间的随机存取操作,或可提供相对于存储器装置130的一或多个其它性能差异。
30.存储器装置130可包含非易失性存储器单元的一或多个阵列。举例来说,存储器装置130可包含nand(例如,nand快闪)存储器、rom、相变存储器(pcm)、自选存储器、其它基于硫族化物的存储器、铁电ram(feram)、磁性ram(mram)、nor(例如,nor快闪)存储器、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻式随机存取存储器(rram)、基于氧化物的rram(oxram)和电可擦除可编程rom(eeprom)。
31.在一些实例中,存储器装置130或存储器装置140可分别包含(例如,在同一裸片上或同一封装内)本地控制器135或本地控制器145,其可执行存储器装置130或存储器装置140的一或多个存储器单元上的操作。本地控制器135或本地控制器145可结合存储器系统控制器115操作,或可执行本文中归于存储器系统控制器115的一或多个功能。
32.在一些情况下,存储器装置130可以是或包含nand装置(例如,nand快闪装置)。存储器装置130可为或包含存储器裸片160。例如,在一些情况下,存储器装置130可以是包含一或多个裸片160的封装。在一些实例中,裸片160可以是从晶片切割的一块电子级半导体
(例如,从硅晶片切割的硅裸片)。每个裸片160可包含一或多个平面165,并且每个平面165可包含相应的块170的集,其中每个块170可包含相应的页175的集,并且每个页175可包含存储器单元集。
33.在一些情况下,nand存储器装置130可包含被配置成各自存储一个信息位的存储器单元,其可被称为单层级单元(slc)。另外或替代地,nand存储器装置130可包含配置成各自存储多个信息位的存储器单元,如果配置成各自存储两个信息位,则其可称为多层级单元(mlc),如果配置成各自存储三个信息位,则其可称为三层级单元(tlc),如果配置成各自存储四个信息位,则其可称为四层级单元(qlc),或更一般地称为多层级存储器单元。多层级存储器单元可相对于slc存储器单元提供更大的存储密度,但在一些情况下,可能涉及用于支持电路系统的更窄读取或写入裕度或更大复杂度。
34.在一些情况下,平面165可以指块170的群组,并且在一些情况下,并行操作可在不同平面165内进行。例如,并行操作可在不同块170内的存储器单元上执行,只要不同块170是在不同平面165中即可。在一些情况下,在不同平面165中执行并行操作可具有一或多个限制,例如相同操作是在相应平面165内具有相同页地址的不同页175内的存储器单元上执行的(例如,涉及命令解码、页地址解码电路系统或跨平面165共享的其它电路系统)。
35.在一些情况下,块170可包含组织成行(页175)和列(例如,串,未展示)的存储器单元。举例来说,同一页175中的存储器单元可共享共同字线(例如,与其耦合),并且同一串中的存储器单元可共享共同数字线(其可替代地被称为位线)(例如,与其耦合)。
36.对于一些nand架构,存储器单元可在第一粒度级别(例如,在页粒度级别)读取和编程(例如,写入),但可在第二粒度级别(例如,在块粒度级别)擦除。也就是说,页175可为可独立地编程或读取(例如,作为单个编程或读取操作的一部分同时编程或读取)的存储器(例如,存储器单元的集合)的最小单元,且块170可为可独立地擦除(例如,作为单个擦除操作的一部分同时擦除)的存储器(例如,存储器单元的集合)的最小单元。此外,在一些情况下,nand存储器单元可在其可用新数据重写之前进行擦除。因此,举例来说,在一些情况下,可直到包含页175的整个块170已被擦除才更新所使用的页175。
37.系统100可包含支持具有多个优先级队列的受管理存储器系统的任何数量的非暂时性计算机可读媒体。举例来说,主机系统105、存储器系统控制器115、存储器装置130或存储器装置140可包含或以其它方式可存取存储指令(例如,固件)的一或多个非暂时性计算机可读媒体以用于执行本文中归属于主机系统105、存储器系统控制器115、存储器装置130或存储器装置140的功能。举例来说,此类指令当由主机系统105(例如,由主机系统控制器106)、由存储器系统控制器115、由存储器装置130(例如,由本地控制器135)或由存储器装置140(例如,由本地控制器145)执行时可致使主机系统105、存储器系统控制器115、存储器装置130或存储器装置140执行本文所描述的相关联功能。
38.在一些情况下,存储器系统110可利用存储器系统控制器115来提供受管理存储器系统,所述受管理存储器系统可包含例如一或多个存储器阵列和与本地(例如,裸片上或封装中)控制器(例如,本地控制器135或本地控制器145)组合的相关电路系统。受管理存储器系统的实例是受管理nand(mnand)系统。
39.图2说明根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的系统200的实例。系统200可以是参考图1所描述的系统100的实例。系统200可包含存储器
系统210,其配置成存储从主机系统205接收到的数据,且当由主机系统205使用存取命令(例如,读取命令或写入命令)来请求时,将数据发送到主机系统205。系统200可实施参考图1所描述的系统100的方面。举例来说,存储器系统210和主机系统205可分别是存储器系统110和主机系统105的实例。
40.如下文所描述,存储器系统210可包含存储器装置集240,以例如响应于从主机系统205接收到存取命令而存储在存储器系统210与主机系统205之间传送的数据。存储器装置集240可包含如参考图1和2所描述的一或多个存储器装置。举例来说,存储器装置集240可包含nand存储器、pcm、自选存储器、3d xpoint、其它基于硫族化物的存储器、feram、mram、nor(例如,nor快闪)存储器、stt-mram、cbram、rram,或oxram。
41.存储器系统210可包含存储控制器230以用于控制直接进出存储器装置集240的数据的传送,例如用于存储数据、检索数据,和确定将存储数据和从中检索数据的存储器方位。存储控制器230可使用特定于每种类型的存储器装置的协议直接或经由总线(未示出)与存储器装置240通信。在一些情况下,单个存储控制器230可用于控制相同或不同类型的多个存储器装置。在一些情况下,存储器系统210可包含多个存储控制器230,例如,用于每一类型的存储器装置240的不同存储控制器230。在一些情况下,存储控制器230可实施如参考图1所描述的本地控制器135的方面。
42.存储器系统210可另外包含用于与主机系统205通信的接口220,以及用于临时存储正在主机系统与存储器装置集240之间传送的数据的缓冲器225。接口220、缓冲器225和存储控制器230可提供与在主机系统205和存储器装置集240之间移动数据(例如,由数据路径250所示)相关联的功能,并且可统称为数据路径组件。
43.在传送期间使用缓冲器225临时存储数据可允许在处理命令时缓冲数据,由此减少命令之间的时延并且允许与命令相关联的任意数据大小。这也可允许处置命令脉冲串并且可与突发异步地存储或发射所缓冲数据。缓冲器225可包含相对快速存储器,例如某些类型的易失性存储器,例如dram、3d xpoint或mram和/或硬件加速器以允许进出缓冲器225的数据的快速存储和检索。缓冲器225可包含用于缓冲器225与其它组件之间的双向数据传送的数据路径开关组件(例如,交叉点开关)。
44.数据在缓冲器225内的临时存储可指在执行存取命令期间数据在缓冲器225中的存储。也就是说,在完成存取命令后,相关联数据可能不再维持在缓冲器225中(例如,可用额外存取命令的数据覆写)。此外,缓冲器225可以是非高速缓存缓冲器。也就是说,数据可能不由主机系统205直接从缓冲器225读取。举例来说,可将读取命令放置到队列中,而无需将地址与已在缓冲器中的地址进行匹配的操作(例如,无需高速缓存地址匹配、内容可寻址存储器(cam)或查找操作)。
45.存储器系统210可另外包含用于执行从主机系统205接收的命令且在移动数据时控制数据路径组件的存储器系统控制器215。存储器系统控制器215可以是参考图1所描述的存储器系统控制器115的实例。总线235可用于在系统组件之间通信。
46.在一些情况下,一或多个队列(例如,接收到的命令队列260、缓冲器队列265和存储队列270)可用于控制存取命令的处理和对应数据的移动。这在例如由存储器系统210并行处理来自主机系统205的多于一个存取命令时可为有益的。虽然接收到的命令队列260、缓冲器队列265和存储队列270分别描绘于接口220、存储器系统控制器215和存储控制器
230处,但这仅为说明性的。队列(如果使用)可定位于存储器系统210内的任何位置。在一些情况下,接收到的命令队列260和存储队列270可为硬件队列(例如,分别处于接口220和存储控制器230中的专用寄存器或存储器)。
47.在主机系统205与存储器装置集240之间传送的数据可在存储器系统210中采用与非数据信息(例如,命令、状态信息)不同的路径。举例来说,存储器系统210中的系统组件可使用总线235彼此通信,而数据可通过数据路径组件而不是总线235使用数据路径250。存储器系统控制器215可通过在总线235上与数据路径组件通信(例如,使用特定于存储器系统210的协议)而控制如何以及何时在主机系统205与存储器装置集240之间传送数据。
48.当主机系统205将存取命令发射到存储器系统210时,接口220可例如根据协议(例如,ufs协议或emmc协议)接收命令。因此,接口220可视为存储器系统210的前端。在接收到每一存取命令后,接口220可例如经由总线235将命令传达到存储器系统控制器215。在一些情况下,可通过接口220将每一命令添加到命令队列260,以将命令传达到存储器系统控制器215。
49.存储器系统控制器215可确定已基于来自接口220的通信而接收到存取命令。在一些情况下,存储器系统控制器215可确定已通过从接收到的命令队列260检索命令而接收到存取命令。在例如已经由存储器系统控制器215从接收到的命令队列260检索命令之后,可将所述命令从所述命令队列260移除。在一些情况下,存储器系统控制器215可致使接口220例如经由总线235从接收到的命令队列260移除命令。
50.在确定已接收到存取命令后,存储器系统控制器215可执行存取命令。对于读取命令,这可意味着从存储器装置集240获得数据并且将数据发射到主机系统205。对于写入命令,这可意味着从主机系统205接收数据并且将数据移动到存储器装置集240。
51.在任一情况下,存储器系统控制器215可将缓冲器225用于正在从主机系统205接收的或正发送到主机系统205的数据的临时存储。缓冲器225可视为存储器系统210的中端。在一些情况下,缓冲器地址管理(例如,在缓冲器中为方位寻址的指针)可由硬件电路(例如,逻辑门电路)执行。
52.为了处理从主机系统205接收到的写入命令,存储器系统控制器215可首先确定缓冲器225是否具有足够可用空间来存储与命令相关联的数据。举例来说,存储器系统控制器215可例如经由固件(例如,控制器固件)确定在缓冲器225内可用于存储与写入命令相关联的数据的空间量。
53.在一些情况下,缓冲器队列265可用于辅助与写入命令相关联的数据的缓冲器存储。缓冲器队列265可包含与当前存储在缓冲器225中的数据相关联的存取命令。在一些情况下,存取命令可通过存储器系统控制器215添加到缓冲器队列265并且在相关联数据存储于缓冲器225中时可保留于缓冲器队列265中。在一些情况下,缓冲器队列265中的每一命令可与缓冲器225处的地址相关联。也就是说,可维持指示与每一命令相关联的数据存储在缓冲器225中何处的指针。使用缓冲器队列265,可并行处理多个存取命令。
54.如果缓冲器225具有足够空间来存储写入数据,则存储器系统控制器215可使接口220例如经由总线235根据协议(例如,ufs协议或emmc协议)将可用性的指示发射到主机系统205(例如,“准备好传送”指示)。当接口220随后从主机系统205接收到与写入命令相关联的数据时,接口220可使用数据路径250将数据传送到缓冲器225以供临时存储。在一些情况
下,接口220可从缓冲器队列265获得缓冲器225内存储数据的方位。接口220可例如经由总线235向存储器系统控制器215指示何时已完成到缓冲器225的数据传送。
55.一旦写入数据已通过接口220存储在缓冲器225中,就可将数据从缓冲器225传送出来并且存储在存储器装置240中。这可使用存储控制器230完成。举例来说,存储器系统控制器215可例如经由总线235使得存储控制器230使用数据路径250从缓冲器225中检索出数据并且将数据传送到存储器装置240。存储控制器230可视为存储器系统210的后端。存储控制器230可例如经由总线235向存储器系统控制器215指示何时已完成到存储器装置集240中的存储器装置的数据传送。
56.在一些情况下,存储队列270可用于辅助写入数据的传送。存储队列270可包含用于每个存取命令的条目,并且可包含例如缓冲器指针(例如,地址),其可指示与命令相关联的数据存储在缓冲器225中的何处,以及存储指针(例如,地址),其可指示存储器装置集240中与数据相关联的方位。在一些情况下,存储控制器230可从缓冲器队列265或存储队列270获得缓冲器225内的要从中获得数据的方位。存储控制器230可管理存储器装置集240内用于存储数据(例如,执行耗损均衡、垃圾收集等)的方位。可例如通过存储器系统控制器215将条目添加到存储队列270。在完成数据传送后,可例如通过存储控制器230或存储器系统控制器215从存储队列270移除所述条目。
57.为了处理从主机系统205接收到的读取命令,存储器系统控制器215可再次首先确定缓冲器225是否具有足够可用空间来存储与命令相关联的数据。举例来说,存储器系统控制器215可例如经由固件(例如,控制器固件)或硬件确定缓冲器225内可用于存储与读取命令相关联的数据的空间量。
58.在一些情况下,缓冲器队列265可用于以与上文关于写入命令所论述的方式类似的方式来辅助与读取命令相关联的数据的缓冲器存储。
59.如果缓冲器225具有足够空间来存储读取数据,那么存储器系统控制器215可例如经由总线235致使存储控制器230从存储器装置240检索与读取命令相关联的数据且使用数据路径250将数据存储在缓冲器225中以用于临时存储。存储控制器230可例如经由总线235向存储器系统控制器215指示何时已完成到缓冲器225的数据传送。
60.在一些情况下,存储队列270可用于辅助读取数据的传送。在一些情况下,存储控制器230可从存储队列270获得存储器装置集240内从中检索数据的方位。在一些情况下,存储控制器230可从缓冲器队列265获得缓冲器225内将存储数据的方位。在一些情况下,存储控制器230可从存储队列270获得缓冲器225内将存储数据的方位。
61.一旦数据已通过存储控制器230存储在缓冲器225中,就可将数据从缓冲器225传送出并发送到主机系统205。举例来说,存储器系统控制器215可例如经由总线235致使接口220使用数据路径250从缓冲器225中检索出数据,并且例如根据协议(例如,ufs协议或emmc协议)将数据发射到主机系统205。接口220可例如经由总线235向存储器系统控制器215指示何时已完成到主机系统205的数据传送。
62.存储器系统控制器215可根据次序(例如,根据接收到的命令队列260的次序,以先进先出次序)执行所接收命令。对于每一命令,存储器系统控制器215可致使对应于命令的数据移动进出缓冲器225,如上文所论述。当数据移动到缓冲器225中且存储在缓冲器225内时,命令可保持在缓冲器队列265中。当已完成命令的处理时(例如,当已从缓冲器225传送
出对应于存取命令的数据时),可例如通过存储器系统控制器215从缓冲器队列265移除命令。当从缓冲器队列265移除命令时,先前存储与所述命令相关联的数据的地址可用于存储与新命令相关联的数据。
63.存储器系统控制器215可另外经配置用于与存储器装置集240相关联的操作。举例来说,存储器系统控制器215可执行或管理操作,例如耗损均衡操作、垃圾收集操作、例如错误检测操作或错误校正操作的错误控制操作、加密操作、高速缓存操作、媒体管理操作、后台刷新、健康监测,以及与来自主机系统205的命令相关联的逻辑地址(例如,逻辑块地址(lba))和与存储器装置集240内的存储器单元相关联的物理地址(例如,物理块地址)之间的地址转译。也就是说,主机系统205可发出指示一或多个lba的命令,且存储器系统控制器215可识别由lba指示的一或多个物理块地址。在一些情况下,一或多个邻接lba可为非邻接的物理块地址。在一些情况下,存储控制器230可经配置以结合或代替存储器系统控制器215执行以上操作中的一或多个。在一些情况下,存储器系统控制器215可进行存储控制器230的功能且可省略存储控制器230。
64.图3说明根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的系统300的实例。系统300可被配置成存储从主机系统305接收到的数据,且当由主机系统305使用存储器存取命令(例如,读取命令或写入命令)来请求时,将数据发送到主机系统305。系统300可以是参考图2所描述的系统200或存储器系统210的实例。
65.系统300可包含用于在主机系统305和存储装置325之间移动数据的前端310、中端315和后端320。系统300还可包含通过经由高优先级总线302和低优先级总线303与组件通信来控制数据移动的cpu 330。高优先级总线302与低优先级总线303相比可用于较高优先级业务。在一些情况下,可存在仅单个总线而非单独的高优先级总线和低优先级总线。系统300可实施参考图2所描述的存储器系统210的方面。举例来说,前端310、中端315和后端320可分别并入有接口220、缓冲器225和存储控制器230的方面。因而,前端310、中端315和后端320在本文中可以被分别称为接口220、缓冲器225和存储控制器230。cpu 330可为存储器系统控制器215的实例并且可包含执行单元(未示出)。cpu 330可包含单个执行单元。执行单元可包含例如算术逻辑单元(alu)、控制单元(cu)、地址产生单元(agu)、浮点单元(fpu)、加载-存储单元(lsu)或分支执行单元(beu),并且可称为“核心”。
66.系统300还可包含控制存取命令的处理和对应数据的移动的一或多个队列。命令(命令)队列335可用于存储从主机系统305接收的存取命令。命令队列335可为参考图2论述的接收到的命令队列260的实例。
67.提交队列(sq)340和完成队列(cq)345可用于存储关于正在处理的每个存取命令的信息,包含例如命令、与命令相关联的一或多个存储器方位和处理状态。可存在用于不同优先级的存取命令的单独sq 340和cq 345。举例来说,如图3所示,sq 340和cq 345可包含用于第一优先级的存取命令的sq 340-a和340-c以及cq 345-a和345-c,以及用于第二优先级的存取命令的sq 340-b和340-d和cq 345-b和345-d。在一些情况下,第一优先级相对于第二优先级可对应于较高优先级。因此,“高”优先级和“低”优先级可在本文中用以指代“第一”优先级和“第二”优先级。虽然本文中的论述是针对两个优先级,但应理解,本文中所论述的概念可适用于处理大于两个优先级的存取命令的系统。举例来说,对于具有大于两个优先级的系统,可使用对应于额外优先级的额外sq 340和cq 345。
68.当主机系统305将存取命令发射到系统300时,可在前端310例如通过主机协议接口350接收到所述命令。存取命令可例如通过前端310添加到命令队列335,以将所述命令传达给cpu 330。在一些情况下,存取命令可按从主机系统305接收的次序添加到命令队列335。
69.cpu 330可确定已使用命令队列335接收到存取命令。在一些情况下,cpu 330可当接收到存取命令时从前端310接收例如irq信号的信号。在一些情况下,cpu 330可监测命令队列335或其状态以确定何时已接收到新存取命令。
70.存取命令信息可例如通过cpu 330经由高优先级总线302或低优先级总线303从命令队列335获得。cpu 330接着可确定存取命令的优先级和类型,随后将存取命令排队以用于执行,相应地,如下文更详细地论述。可例如通过cpu 330从命令队列移除存取命令。
71.为处理从主机系统305接收的写入命令,对应于写入命令的条目可例如通过cpu 330基于命令的优先级添加到前端cq 345-a或cq 345-b。在一些情况下,cq 345条目可包含指示中端315的缓冲器355内暂时存储数据的方位的方位指针(例如,指向存储器方位的指针)。在一些情况下,前端可从中端315的硬件加速器获得下一个将使用的缓冲器指针。缓冲器队列可用于跟踪缓冲器355,如参考图2所论述。
72.基于对应前端cq 345条目中的信息,从主机系统305接收的数据可例如通过前端310例如经由多点桥接器370存储于缓冲器355中。可例如通过前端310或cpu 330移除对应于写入命令的前端cq 345条目。当数据已存储于缓冲器355中时,条目可例如通过前端310基于命令的优先级添加到前端sq 340-a或sq 340-b,以指示对应于写入命令的数据处于缓冲器355中。
73.基于添加到前端sq 340-a或sq 340-b的条目,对应条目可例如通过cpu 330基于命令的优先级添加到后端sq 340-c或sq 340-d。后端sq 340条目可包含指向缓冲器355内已存储数据的方位的指针。后端sq 340条目可包含指示存储装置325内存储数据的方位的方位指针(例如,指向存储器装置240内的存储器方位的指针)。当不再需要时,可例如通过cpu 330移除前端sq 340条目。
74.使用后端sq 340-c和sq 340-d,可例如通过仲裁逻辑确定后端320处理对应命令的次序。虽然可使高优先级sq 340-c中的命令优先,但应仍以及时方式处理低优先级sq 340-d。仲裁逻辑可为确保此操作发生的一种方式。仲裁逻辑也可优化处理命令。在一个实例中,仲裁逻辑可监测高优先级sq 340-c和低优先级sq 340-d,确定处理对应命令的次序,并且将条目对应地从每个队列移动到单独后端队列。后端320可基于其在所述单独队列中的次序来处理所述命令。如下文所论述,还可使用其它仲裁方案。
75.当对应于添加到后端sq 340的条目的写入命令经处理时,对应于写入命令的数据可通过后端320从缓冲器355检索并且例如通过存储控制器360基于后端sq 340条目存储于存储装置325中。存储控制器360可为参考图2论述的存储控制器230的实例。
76.存储装置325可包含参考图2所描述的一或多个存储器装置240。举例来说,存储器装置集240可包含nand存储器、pcm、自选存储器、3d xpoint、其它基于硫族化物的存储器、feram、mram、nor(例如,nor快闪)存储器、stt-mram、cbram、rram或oxram。为与存储器装置通信,存储控制器360可使用一或多个存储接口365,其各自采用特定于存储器装置类型的一或多个协议。当不再需要时,可例如通过后端320或cpu 330移除对应于写入命令的后端
sq 340条目。
77.当数据已存储于存储装置325中时,条目可例如通过后端320基于命令的优先级添加到后端cq 345-c或cq 345-d,以指示对应于写入命令的数据已成功地写入到存储装置325。基于添加到后端cq 345的条目,cpu 330可获悉命令成功完成。可例如通过cpu 330移除对应的后端cq 345条目。
78.为处理从主机系统305接收的读取命令,对应于读取命令的一或多个条目可例如通过cpu 330基于命令的优先级添加到后端sq 340-c或sq 340-d。在一些情况下,单个sq 340条目可用于读取命令。在一些情况下,读取命令可经解码为数个内部读取命令条目以添加到对应后端sq 340。在一些情况下,后端sq 340条目可包含指示存储装置325内将从中获得数据的方位的方位指针(例如,指向存储器装置240内的存储器方位的指针)。在一些情况下,sq 340条目可包含指示缓冲器355内将暂时存储数据的方位的方位指针(例如,指向存储器方位的指针)。在一些情况下,后端可从中端315的硬件加速器获得下一个将使用的缓冲器指针。
79.使用对应后端sq 340条目中的信息,与读取命令相关联的数据可例如通过存储控制器360经由存储接口365从存储装置325检索,并且可暂时将数据存储于缓冲器355中。当不再需要时,可例如通过后端320或cpu 330移除后端sq 340条目。当数据已存储于缓冲器355中时,条目可例如通过后端320基于命令的优先级添加到后端cq 345-c或cq 345-d,以指示对应于读取命令的数据处于缓冲器355中。
80.基于添加到后端cq 345-c或cq 345-d的条目,对应条目可例如通过cpu 330基于命令的优先级添加到前端cq 345-a或cq 345-b。前端cq 345条目可包含指向缓冲器355内存储数据的方位的指针。当不再需要时,可例如通过cpu 330移除后端cq 345条目。
81.基于添加到前端cq 345-a或cq 345-b的条目,对应于读取命令的数据可从缓冲器355(例如,使用对应cq 345条目内的方位指针)获得并且例如通过前端310经由主机协议接口350发射到主机系统305。当不再需要时,可例如通过cpu 330或前端310移除前端cq 345条目。
82.在确定将读取命令发射到主机系统305的次序时,可使高优先级cq 345-a中的条目优先于低优先级cq 345-b中的条目。当数据已发射到主机系统305时,条目可例如通过前端310基于命令的优先级添加到前端sq 340-a或sq 340-b,以指示数据已成功地发射到主机。基于添加到前端sq 340的条目,cpu 330可获知命令成功完成。可例如通过cpu 330移除对应前端sq 340条目。
83.图4说明根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的系统控制图400的实例。系统控制图400示出从主机接收的存取命令在流过图3的系统300时被cpu 330如何处理。在一些情况下,cpu 330内示出的处理程序和队列可经执行并定位于固件内,且前端310和后端320内的队列可定位于硬件内。在一些情况下,处理程序中的一些或全部可由cpu 330的执行单元运行。使用系统控制图400中示出的队列和其它部分,可根据所接收到的命令在队列内的优先级和位置来处理所述所接收到的命令。
84.如参考图3所描述,从主机系统305接收的存取命令可添加到命令队列335。命令可通过cpu 330从命令队列335检索并且通过命令处置器405。命令处置器405可解码所述命令以确定每个命令的优先级等级。在一些系统中,存取命令中的一或多个字段可指示命令的
优先级等级。每一命令可基于所确定的优先级从命令队列路由到对应的优先级队列410。举例来说,如果命令是高优先级,那么可将其放置于高优先级队列410-a中;如果命令是低优先级,那么可将其放置于低优先级队列410-b中。
85.一或多个命令路由器415可确定应如何路由优先级队列410中的存取命令。为进行此操作,命令路由器415可确定对应于每一命令的存取类型。举例来说,命令路由器415可确定存取命令是读取命令还是写入命令。每一命令可基于所确定的优先级和类型而放置于对应处置器队列420中。举例来说,对于来自高优先级队列410-a的命令,如果命令是写入类型,那么可将其放置于高写入处置器队列420-a1中,且如果命令是读取类型,那么可将其放置于高读取处置器队列420-a2中。对于来自低优先级队列410-b的命令,如果命令是写入类型,那么可将其放置于低写入处置器队列420-b1中,且如果命令是读取类型,那么可将其放置于低读取处置器队列420-b2中。虽然示出了两个命令路由器415-a和415-b,但其可组合成单个路由器(视需要)。
86.仲裁逻辑还可供命令路由器415用于确定可处理高优先级命令和低优先级命令的次序。此仲裁逻辑可以与上文参考图3所论述的仲裁逻辑组合使用或代替所述仲裁逻辑。如上文所论述,虽然高优先级存取命令可优先于低优先级存取命令,但仍可以及时方式(例如,不暂停)处理低优先级命令。下文参考图5论述此类仲裁逻辑的一个实例。在一个实例中,当低优先级命令尚未在最小时间帧内经处理时,可将所述命令在次序上向上移动。
87.一或多个处理程序处置器425可处理处置器队列420中的存取命令。在一些情况下,单独处理程序处置器425可用于每个处置器队列420。举例来说,高写入处理程序处置器425-a1可处理高写入处置器队列420-a1中的存取命令,高读取处理程序处置器425-a2可处理高读取处置器队列420-a2中的存取命令,低写入处理程序处置器425-b1可处理低写入处置器队列420-b1中的存取命令,且低读取处理程序处置器425-b2可处理低读取处置器队列420-b2中的存取命令。
88.在一些情况下,每个处理程序处置器425可独立于其它处理程序处置器运行。也就是说,处理程序处置器425可彼此并行地运行。换句话说,处理程序处置器可各自为处于作用中的处理程序,但在给定指令循环仅执行一个处理程序。处理程序处置器425中的每一个可为不同线程。执行单元可根据线程或处理程序排程在处理程序处置器425之间切换(例如,切除例如程序计数器、寄存器、堆栈指针、存储器地址、页表或内核资源等资源)。在一些情况下,处理程序处置器425之间的切换会考虑处理程序处置器425的优先级排序(例如,与低读取处理程序处置器425-b2相比,可为高读取处理程序处置器425-a2提供更多处理资源或执行循环)。在一些情况下,当存取命令添加到处置器队列420时,可激活与处置器队列相关联的处理程序处置器425以开始命令执行。
89.为执行存取命令,处理程序处置器425可使用前端310和后端320。举例来说,为例如以参考图3论述的方式控制命令的处理,处理程序处置器425可使用写入命令状态机430或读取命令状态机435(如果适用的话)。在一个实例中,写入命令状态机430或读取命令状态机435执行存取命令的优先级排序可基于每个处置器队列420中的命令数目。写入命令状态机430或读取命令状态机435可基于来自前端sq 340的输入440和来自后端cq 345的输入445,操控前端cq 345和后端sq 340,如上文所论述。高优先级处理程序处置器425-a可利用高优先级cq和sq,且低优先级处理程序处置器425-b可利用低优先级sq和cq。
90.举例来说,对于写入命令,写入处理程序处置器425-a1和425-b1可i)将条目添加到前端cq 345以使前端310知道写入命令,并且包含指向缓冲器中将存储所接收数据的方位的指针;ii)从前端sq 340确定数据何时已存储于缓冲器中;iii)将条目添加到后端sq 340以使后端320知道写入命令,并且包含指向缓冲器中数据所在的方位的指针和指向存储装置325中将存储数据的方位的指针;和iv)从后端cq 345确定对应于写入命令的数据何时已成功写入到存储装置325。
91.作为另一实例,对于读取命令,读取处理程序处置器425-a2和425-b2可i)将条目添加到后端sq 340以使后端320知道读取命令,并且包含指向存储装置325中将被读取的数据所在的方位的指针和指向缓冲器中将存储数据的方位的指针;ii)从后端cq 345确定数据何时已存储于缓冲器中;iii)将条目添加到前端cq 345以使前端310知道读取命令,并且包含指向缓冲器中数据所在的方位的指针;和iv)从前端sq 340确定对应于读取命令的数据何时已成功发射到主机系统305。
92.处理程序处置器425可并行地运行以处理其相应处置器队列420中的存取命令。在一些情况下,可使用任务排程器(未示出)避免处理程序处置器425之间的冲突并且基于例如存取命令的优先级、每个处置器队列420是有多少个存取命令等各种因素对存取命令的执行进行优先级排序。
93.cpu 330的处理程序和/或队列中的一或多个可视需要进行组合。举例来说,命令处置和命令路由可组合以使得当从命令队列335检索存取命令时,可将所述存取命令放置于其对应的处置器队列420中而无需首先放置于优先级队列410中。
94.处理程序可用于额外优先级和/或类型。举例来说,如果使用第三优先级,那么cpu 330可使用三个优先级队列410、三个路由器415、六个处置器队列420和六个处理程序处置器425。这可适用于容纳其它优先级数目和存取类型。
95.图5示出说明根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的状态机500的实例的图式。状态机500可为可防止归因于多个队列优先级发生暂停的防暂停处理程序的实例。状态机500可处置并行高优先级业务和低优先级业务以使得低优先级命令可不暂停。状态机500可为参考图4论述的仲裁逻辑的实例。
96.在操作期间,命令路由器415可周期性地分析优先级队列410并且使用经修改轮询技术将其中的任一命令移动到处置器队列420。在每个分析期间,命令路由器415可确定分别处于高优先级队列410-a和低优先级队列410-b内的命令nh和n
l
的数目。当优先级队列410中的至少一个不为空(nh》0或n
l
》0)时,可在状态505进入状态机500。如果高优先级队列410-a不为空(nh》0),那么逻辑可沿循路径510进行状态525。如果高优先级队列410-a为空且低优先级队列不为空(nh=0,n
l
》0),那么逻辑可沿循路径515进入状态530。
97.在状态525,对应于nh的命令可从高优先级队列410-a路由到相应高写入处置器队列420-a1或高读取处置器队列420-a2。也就是说,作为nh的部分被计数的每一命令可从高优先级队列410-a移除或移出队列并且添加到高处置器队列420-a中的一个。在路由期间,命令处置器405可将新条目添加到高优先级队列410-a。可忽略并且不路由这些新条目。也就是说,在下一次进入状态525之前可能并不考虑路由新条目。
98.一旦在状态525中完成命令路由,便可再次检查优先级队列410以确定是否在路由期间将任何新命令添加到了队列。为进行此操作,可再次确定分别处于高优先级队列410-a
和低优先级队列410-b内的命令nh和n
l
的数目。如果低优先级队列410-b不为空(n
l
》0)而高优先级队列410-a为空(nh=0)或达到防暂停条件(例如,已连续处理来自高优先级队列410-a的第一数量的命令),那么逻辑可沿循路径540进入状态530以将新近添加的低优先级条目路由到低处置器队列420-b中的一个。如果低优先级队列410-b为空但高优先级队列410-a不为空(nh》0,n
l
=0),那么逻辑可再次进入状态525,如由路径535所示,以将新近添加的高优先级条目路由到高处置器队列420-a中的一个。如果这两个优先级队列均为空(nh=0,n
l
=0),那么可退出状态机500。
99.在状态530,对应于n
l
的命令可从低优先级队列410-b路由到相应低写入处置器队列420-b1或低读取处置器队列420-b2。也就是说,作为n
l
的部分被计数的每一命令可从低优先级队列410-b移除或移出队列并且添加到低处置器队列420-b中的一个。在路由期间,命令处置器405可将新条目添加到低优先级队列410-b。可忽略并且不路由这些新条目。也就是说,在下一次进入状态530之前可能并不考虑路由新条目。
100.一旦在状态530中完成命令路由,便可再次检查优先级队列410以确定是否在路由期间将任何新命令添加到了队列。为进行此操作,可再次确定分别处于高优先级队列410-a和低优先级队列410-b内的命令nh和n
l
的数目。如果高优先级队列410-a不为空(nh》0)而低优先级队列410-a为空(n
l
=0)或达到防暂停条件(例如,已连续处理来自高优先级队列410-a的第二数量的命令),那么逻辑可沿循路径520进入状态525以将新近添加的高优先级条目路由到高处置器队列420-a中的一个。在一些情况下,第二命令数量可低于第一命令数量。如果高优先级队列410-a为空但低优先级队列410-b不为空(nh=0,n
l
》0),那么逻辑可再次进入状态530,如由路径545所示,以将新近添加的低优先级条目路由到低处置器队列420-b中的一个。如果这两个优先级队列均为空(nh=0,n
l
=0),那么可退出状态机500。
101.以上文所论述的方式沿着路径520和540在状态525和530之间移动可继续直到这两个优先级队列均变为空为止,此时,可退出状态机500。这可允许以及时方式执行低优先级命令并且不暂停。
102.图6示出根据本文所公开的实例的支持具有多个优先级队列的受管理存储器系统的存储器系统605的框图600。存储器系统605可为如参考图2-5描述的存储器系统的方面的实例。存储器系统605可包含主机接口610、命令优先级确定器615、命令路由器620、数据路由器625、命令处理器630和存储控制器635。这些模块中的每一个可直接或间接地(例如,经由一或多个总线)彼此通信。
103.主机接口610可在接口处从主机接收存储器存取命令。在一些实例中,主机接口610可将存储器存取命令存储于命令队列中。在一些实例中,主机接口610可通过接口将从缓冲器检索的数据发送到主机。在一些实例中,主机接口610可将与存储器存取命令第一子集相关联的第一数据子集发送到主机。在一些实例中,主机接口610可将与存储器存取命令第二子集相关联的第二数据子集发送到主机。在一些实例中,主机接口610可通过接口从主机接收与存储器写入命令相关联的数据。
104.命令优先级确定器615可确定与第一优先级相关联的存储器存取命令第一子集和与第二优先级相关联的存储器存取命令第二子集。在一些情况下,存储器存取命令第一子集可与关联于第一优先级的读取命令相关联。在一些情况下,存储器存取命令第二子集可与关联于第二优先级的读取命令相关联。在一些实例中,命令优先级确定器615可确定与关
联于第一优先级的写入命令相关联的存储器存取命令第三子集和与关联于第二优先级的写入命令相关联的存储器存取命令第四子集。
105.命令路由器620可将与第一优先级相关联的存储器存取命令第一子集从命令队列路由到第一队列。在一些实例中,命令路由器620可将与第二优先级相关联存储器存取命令第二子集从命令队列路由到第二队列。在一些实例中,命令路由器620可将与第一优先级相关联的存储器存取命令第三子集从命令队列路由到第五队列。在一些实例中,命令路由器620可将与第二优先级相关联的存储器存取命令第四子集从命令队列路由到第六队列。
106.数据路由器625可将与存储器存取命令相关联的数据存储于与接口耦合的缓冲器中。在一些实例中,数据路由器625可通过接口从缓冲器检索与存储器读取命令相关联的数据。
107.命令处理器630可通过包含执行单元的处理器在存储控制器处根据第一处理程序处理从第一队列到第三队列的存储器存取命令第一子集,所述第三队列与第一优先级相关联。在一些实例中,命令处理器630可通过处理器在存储控制器处根据第二处理程序处理从第二队列到第四队列的存储器存取命令第二子集,所述第四队列与第二优先级相关联。在一些实例中,执行单元可根据用于第一优先级和第二优先级之间的优先级排序的一或多个参数,并行地运行第一处理程序和第二处理程序。
108.在一些实例中,当存储器存取命令尚未在最小时间帧内经处理时,命令处理器630可将第四队列的存储器存取命令在次序上向上移动。在一些实例中,命令处理器630可通过处理器在存储控制器处根据第三处理程序处理从第五队列到第三队列的存储器存取命令第三子集。在一些实例中,命令处理器630可通过处理器在存储控制器处根据第四处理程序处理从第六队列到第四队列的存储器存取命令第四子集。在一些实例中,执行单元可根据用于第一优先级和第二优先级之间的优先级排序的一或多个参数,将第三处理程序和第四处理程序与第一处理程序和第二处理程序并行地运行。
109.在一些情况下,存储器存取命令包含存储器读取命令。在一些情况下,存储器存取命令包含存储器写入命令。
110.存储控制器635可将与存储器存取命令相关联的数据在缓冲器和包含存储器单元集的存储性存储器之间移动。在一些实例中,存储控制器635可基于第三队列和第四队列的内容在缓冲器和存储性存储器之间移动数据。在一些实例中,存储控制器635可基于第三队列和第四队列的相应第一优先级和第二优先级,确定处理第三队列和第四队列的存储器存取命令的次序。在一些实例中,存储控制器635可基于处理第三队列和第四队列的存储器存取命令的次序,在缓冲器和存储性存储器之间移动数据。
111.在一些实例中,存储控制器635可将与存储器读取命令相关联的数据从存储性存储器移动到缓冲器。在一些实例中,存储控制器635可将数据从缓冲器移动到存储性存储器。在一些实例中,存储控制器635可基于仲裁逻辑将数据从缓冲器移动到存储性存储器,所述仲裁逻辑基于第三队列和第四队列的相应第一优先级和第二优先级,确定处理第三队列和第四队列的存储器存取命令的次序。
112.图7示出说明根据本公开的方面的支持具有多个优先级队列的受管理存储器系统的方法的流程图。方法700的操作可由如本文中所描述的存储器系统或其组件实施。举例来说,可由如参考图6所描述的存储器系统执行方法700的操作。在一些实例中,存储器系统可
执行指令集以控制存储器系统的功能元件来执行所描述的功能。另外或替代地,存储器系统可使用专用硬件执行所描述的功能的方面。
113.在705处,存储器系统可在接口处从主机接收存储器存取命令。可根据本文中所描述的方法执行705的操作。在一些实例中,可由参考图6所描述的主机接口执行705的操作的方面。
114.在710处,存储器系统可将存储器存取命令存储于命令队列中。可根据本文中所描述的方法执行710的操作。在一些实例中,可由参考图6所描述的主机接口执行710的操作的方面。
115.在715处,存储器系统可确定与第一优先级相关联的存储器存取命令第一子集和与第二优先级相关联的存储器存取命令第二子集。可根据本文中所描述的方法执行715的操作。在一些实例中,可由参考图6所描述的命令优先级确定器执行715的操作的方面。
116.在720处,存储器系统可将与第一优先级相关联的存储器存取命令第一子集从命令队列路由到第一队列。可根据本文中所描述的方法执行720的操作。在一些实例中,可由参考图6所描述的命令路由器执行720的操作的方面。
117.在725处,存储器系统可将与第二优先级相关联的存储器存取命令第二子集从命令队列路由到第二队列。可根据本文中所描述的方法执行725的操作。在一些实例中,可由参考图6所描述的命令路由器执行725的操作的方面。
118.在730处,存储器系统可将与存储器存取命令相关联的数据存储于与接口耦合的缓冲器中。可根据本文中所描述的方法执行730的操作。在一些实例中,可由参考图6所描述的命令路由器执行730的操作的方面。
119.在735处,存储器系统可通过包含执行单元的处理器在存储控制器处根据第一处理程序处理从第一队列到第三队列的存储器存取命令第一子集,所述第三队列与第一优先级相关联。可根据本文中所描述的方法执行735的操作。在一些实例中,可由参考图6所描述的命令处理器执行735的操作的方面。
120.在740处,存储器系统可通过处理器在存储控制器处根据第二处理程序处理从第二队列到第四队列的存储器存取命令第二子集,所述第四队列与第二优先级相关联,其中执行单元根据用于第一优先级和第二优先级之间的优先级排序的一或多个参数,并行地运行第一处理程序和第二处理程序。可根据本文中所描述的方法执行740的操作。在一些实例中,可由参考图6所描述的命令处理器执行740的操作的方面。
121.在745处,存储器系统可通过存储控制器将与存储器存取命令相关联的数据在缓冲器和包含存储器单元集的存储性存储器之间移动。可根据本文中所描述的方法执行745的操作。在一些实例中,可由参考图6所描述的存储控制器执行745的操作的方面。
122.在一些实例中,如本文中所描述的设备可执行一或多种方法,例如方法700。所述设备可包含用于以下操作的特征、装置或指令(例如,非暂时性计算机可读媒体存储的可由处理器执行的指令):在接口处从主机接收存储器存取命令;将存储器存取命令存储于命令队列中;确定与第一优先级相关联的存储器存取命令第一子集和与第二优先级相关联的存储器存取命令第二子集;将与第一优先级相关联的存储器存取命令第一子集从命令队列路由到第一队列;将与第二优先级相关联的存储器存取命令第二子集从命令队列路由到第二队列;将与存储器存取命令相关联的数据存储于与接口耦合的缓冲器中;通过包含执行单
元的处理器在存储控制器处根据第一处理程序处理从第一队列到第三队列的存储器存取命令第一子集,所述第三队列与第一优先级相关联;通过处理器在存储控制器处根据第二处理程序处理从第二队列到第四队列的存储器存取命令第二子集,所述第四队列与第二优先级相关联,其中执行单元根据用于第一优先级和第二优先级之间的优先级排序的一或多个参数,并行地运行第一处理程序和第二处理程序;和通过存储控制器将与存储器存取命令相关联的数据在缓冲器和包含存储器单元集的存储性存储器之间移动。
123.在本文所描述的方法700和设备的一些实例中,在缓冲器和存储性存储器之间移动数据可包含用于以下操作的操作、特征、装置或指令:基于第三队列和第四队列的内容,在缓冲器和存储性存储器之间移动数据。
124.本文所描述的方法700和设备的一些实例可另外包含用于以下操作的操作、特征、装置或指令:通过存储控制器基于第三队列和第四队列的相应第一优先级和第二优先级,确定处理第三队列和第四队列的存储器存取命令的次序。
125.在本文所描述的方法700和设备的一些实例中,在缓冲器和存储性存储器之间移动数据可包含用于以下操作的操作、特征、装置或指令:基于处理第三队列和第四队列的存储器存取命令的次序,在缓冲器和存储性存储器之间移动数据。
126.在本文所描述的方法700和设备的一些实例中,确定处理第三队列和第四队列的存储器存取命令的次序可包含用于以下操作的操作、特征、装置或指令:当所述存储器存取命令尚未在最小时间帧内经处理时,将第四队列的存储器存取命令在次序上向上移动。
127.在本文所描述的方法700和设备的一些实例中,存储器存取命令包含存储器读取命令。在本文所描述的方法700和设备的一些实例中,存储器存取命令包含存储器写入命令。
128.在本文所描述的方法700和设备的一些实例中,在缓冲器和存储性存储器之间移动数据可包含用于以下操作的操作、特征、装置或指令:通过存储控制器将与存储器读取命令相关联的数据从存储性存储器移动到缓冲器。
129.本文所描述的方法700和设备的一些实例可另外包含用于以下操作的操作、特征、装置或指令:通过接口从缓冲器检索与存储器读取命令相关联的数据;和通过接口将从缓冲器检索的数据发送到主机。
130.在本文所描述的方法700和设备的一些实例中,将从缓冲器检索的数据发送到主机可包含用于以下操作的操作、特征、装置或指令:将与存储器存取命令第一子集相关联的第一数据子集发送所述主机,以及将与存储器存取命令第二子集相关联的第二数据子集发送到主机。
131.本文所描述的方法700和设备的一些实例可另外包含用于以下操作的操作、特征、装置或指令:通过接口从主机接收与存储器写入命令相关联的数据。
132.在本文所描述的方法700和设备的一些实例中,在缓冲器和存储性存储器之间移动数据可包含用于以下操作的操作、特征、装置或指令:通过存储控制器将数据从缓冲器移动到存储性存储器。
133.在本文所描述的方法700和设备的一些实例中,将数据从缓冲器移动到存储性存储器可包含用于以下操作的操作、特征、装置或指令:通过存储控制器基于仲裁逻辑将数据从缓冲器移动到存储性存储器,所述仲裁逻辑基于第三队列和第四队列的相应第一优先级
和第二优先级,确定处理第三队列和第四队列的存储器存取命令的次序。
134.在本文所描述的方法700和设备的一些实例中,所述存储器存取命令第一子集可与关联于所述第一优先级的读取命令相关联,且所述存储器存取命令第二子集可与关联于所述第二优先级的读取命令相关联。
135.本文所描述的方法700和设备的一些实例可另外包含用于以下操作的操作、特征、装置或指令:确定与关联于所述第一优先级的写入命令相关联的存储器存取命令第三子集和与关联于所述第二优先级的写入命令相关联的存储器存取命令第四子集;将与所述第一优先级相关联的所述存储器存取命令第三子集从所述命令队列路由到第五队列;将与所述第二优先级相关联的所述存储器存取命令第四子集从所述命令队列路由到第六队列;通过所述处理器在所述存储控制器处根据第三处理程序处理从所述第五队列到所述第三队列的所述存储器存取命令第三子集;和通过所述处理器在所述存储控制器处根据第四处理程序处理从所述第六队列到所述第四队列的所述存储器存取命令第四子集,其中所述执行单元可根据用于所述第一优先级和所述第二优先级之间的优先级排序的所述一或多个参数,将所述第三处理程序和第四处理程序与所述第一处理程序和第二处理程序并行地运行。
136.应注意,上文所描述的方法描述了可能的实施方案,且操作和步骤可经重新布置或以其它方式修改,且其它实施方案是可能的。另外,可组合来自所述方法中的两种或更多种的部分。
137.描述一种设备。所述设备可包含接口,其被配置成从主机接收存储器存取命令并且发送和接收与所述存储器存取命令相关联的数据。所述接口可包含处理器。所述处理器可包含第一队列,其被配置成存储与第一优先级相关联的存储器存取命令第一子集;第二队列,其被配置成存储与第二优先级相关联的存储器存取命令第二子集;一或多个命令路由器,其被配置成从所述命令队列获得所述存储器存取命令,确定所述存储器存取命令第一子集和第二子集,并且将所述第一子集和第二子集分别存储于所述第一队列和第二队列。所述设备还可包含缓冲器,其与所述接口耦合并被配置成存储与所述存储器存取命令相关联的所述数据。所述设备还可包含存储性存储器,其包含多个存储器单元。所述设备还可包含存储控制器,其被配置成在所述缓冲器和所述存储性存储器之间移动与所述存储器存取命令相关联的所述数据。所述存储控制器可包含与所述第一优先级相关联的第三队列和与所述第二优先级相关联的第四队列。所述处理器可被配置成根据第一处理程序处理从所述第一队列到所述第三队列的所述存储器存取命令第一子集并且根据第二处理程序处理从所述第二队列到所述第四队列的所述存储器存取命令第二子集,其中所述第一处理程序和第二处理程序被配置成通过所述执行单元根据用于所述第一优先级和所述第二优先级之间的优先级排序的一或多个参数而并行地运行。
138.在一些实例中,存储控制器可另外包含仲裁逻辑,所述仲裁逻辑被配置成基于所述第三队列和第四队列的所述相应第一优先级和第二优先级,确定处理所述第三队列和第四队列的所述存储器存取命令的次序。在一些实例中,存储控制器可被配置成基于处理所述第三队列和第四队列的所述存储器存取命令的所述次序,移动与所述第三队列和第四队列的所述存储器存取命令相关联的所述数据。
139.在一些实例中,所述处理器可另外包含第五队列和第六队列。存储器存取命令第一子集可与关联于所述第一优先级的读取命令相关联。所述存储器存取命令第二子集可与
关联于所述第二优先级的读取命令相关联。所述第五队列可被配置成存储与关联于所述第一优先级的写入命令相关联的存储器存取命令第三子集。所述第六队列可被配置成存储与关联于所述第二优先级的写入命令相关联的存储器存取命令第四子集。
140.在一些实例中,所述一或多个命令路由器可被进一步配置成确定所述存储器存取命令第三子集和第四子集并且将所述第三子集和第四子集分别存储于所述第五队列和第六队列中。所述处理器可被进一步配置成根据第三处理程序处理从所述第五队列到所述第三队列的所述存储器存取命令第三子集并且根据第四处理程序处理从所述第六队列到所述第四队列的所述存储器存取命令第四子集。所述第三处理程序和第四处理程序可被配置成通过所述执行单元根据用于所述第一优先级和所述第二优先级之间的优先级排序的一或多个参数,与所述第一处理程序和第二处理程序并行地运行。
141.在一些实例中,所述处理器可另外包含用于以下操作的操作、特征、装置或指令:逻辑,其被配置成当与所述第二优先级相关联的存储器存取命令可能尚未在最小时间帧内经处理时,处理所述存储器存取命令。
142.可使用多种不同技术和技艺中的任一个来表示本文中所描述的信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。一些图式可将信令说明为单个信号;然而,所属领域的一般技术人员应理解,信号可表示信号的总线,其中总线可具有各种位宽度。
143.如本文中所使用,术语“电子通信”、“导电接触”、“连接”和“耦合”可指代支持信号在组件之间流动的组件之间的关系。如果组件之间存在可在任何时间支持信号在组件之间流动的导电路径,那么组件被视为彼此电子通信(或彼此导电接触,或彼此连接,或彼此耦合)。在任何给定时间,基于包含所连接组件的装置的操作,彼此电子连通(或导电接触或连接或耦合)的组件之间的导电路径可以是开路或闭路。所连接组件之间的导电路径可以是组件之间的直接导电路径,或所连接组件之间的导电路径可以是可包含如开关、晶体管或其它组件的中间组件的间接导电路径。在一些实例中,可例如使用例如开关或晶体管等一或多个中间组件来中断所连接组件之间的信号流一段时间。
144.如本文中所使用,术语“耦合”指代从组件之间的开路关系移动到组件之间的闭路关系的条件,在所述开路关系中,信号当前不能够经由导电路径在所述组件之间传达,在所述闭路关系中,信号能够经由所述导电路径在所述组件之间传达。当例如控制器等组件将其它组件耦合在一起时,组件起始允许信号经由先前不准许信号流动的导电路径在其它组件之间流动的改变。
145.如本文中所使用,术语“隔离”是指信号当前不能在组件之间流动的组件之间的关系。如果组件之间存在开路,则组件彼此隔离。举例来说,由定位在两个组件之间的开关间隔开的组件在开关断开时彼此隔离。当控制器分隔开两个组件时,所述控制器实现以下改变:阻止信号使用先前准许信号流动的导电路径在组件之间流动。
146.本文中论述的装置,包含存储器阵列,可形成于例如硅、锗、硅锗合金、砷化镓、氮化镓等半导体衬底上。在一些实例中,衬底是半导体晶片。在其它实例中,衬底可以是绝缘体上硅(soi)衬底,例如玻璃上硅(sog)或蓝宝石上硅(sop),或另一衬底上的半导体材料的外延层。可通过使用包含但不限于磷、硼或砷的各种化学物质的掺杂来控制衬底或衬底的
子区的导电性。可在衬底的初始形成或生长期间,通过离子植入或通过任何其它掺杂方法执行掺杂。
147.本文结合附图阐述的描述内容描述了实例配置,且并不表示可以实施的或在权利要求书的范围内的所有实例。本文中所使用的术语“示范性”是指“充当实例、例子或说明”,且不“优选于”或“优于”其它实例。详细描述包含具体细节,以提供对所描述技术的理解。然而,可在没有这些具体细节的情况下实践这些技术。在一些情况下,以框图形式示出熟知结构和装置,以免混淆所描述实例的概念。
148.在附图中,类似组件或特征可以具有相同的参考标记。另外,可通过在参考标记之后跟着短划线及在类似组件当中进行区分的第二标记来区分相同类型的各种组件。如果说明书中仅使用第一参考标记,那么描述适用于具有相同第一参考标记的类似组件中的任一个,与第二参考标记无关。
149.本文中所描述的部分或所有功能可在硬件、由处理器执行的软件软件、固件或其任何组合中实施。如果以由处理器执行的软件实施,那么功能可为存储于计算机可读媒体上或经由计算机可读媒体传输的一或多个指令或代码。其它实例和实施在本公开和所附权利要求书的范围内。举例来说,归因于软件的性质,上文所描述的功能可使用由处理器执行的软件、硬件、固件、硬连线或任何这些的组合实施。实施功能的特征还可物理上位于各种位置处,包含经分布以使得功能的部分在不同物理方位处实施。
150.举例来说,可用通用处理器、dsp、asic、fpga或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其设计成执行本文中所描述的功能的任何组合来实施或执行结合本文中的公开内容而描述的各种说明性块和模块。通用处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可被实施为计算装置的组合(例如,dsp与微处理器的组合、多个微处理器、结合dsp核心的一或多个微处理器,或任何其它此配置)。
151.并且,如本文中所使用,包含在权利要求书中,项目的列表(例如,以例如“中的至少一个”或“中的一或多个”的短语开始的项目的列表)中所使用的“或”指示包含性列表,使得(例如)a、b或c中的至少一个的列表意指a或b或c或ab或ac或bc或abc(即,a和b和c)。另外,如本文所用,短语“基于”不应理解为提及封闭条件集。举例来说,在不脱离本公开的范围的情况下,描述为“基于条件a”的示范性步骤可基于条件a和条件b两者。换句话说,如本文所用,短语“基于”应同样地解释为短语“至少部分地基于”。
152.提供本文中的描述使得所属领域的技术人员能够进行或使用本公开。所属领域技术人员将清楚对本公开的各种修改,且本文中所定义的一般原理可应用于其它变化形式而不会脱离本公开的范围。因此,本公开不限于本文所述的实例和设计,而是被赋予与本文所揭示的原理和新颖特征一致的最宽范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献