CN115080472B - 支持非确定性命令的存储器子系统 - Google Patents
支持非确定性命令的存储器子系统 Download PDFInfo
- Publication number
- CN115080472B CN115080472B CN202210812077.3A CN202210812077A CN115080472B CN 115080472 B CN115080472 B CN 115080472B CN 202210812077 A CN202210812077 A CN 202210812077A CN 115080472 B CN115080472 B CN 115080472B
- Authority
- CN
- China
- Prior art keywords
- command
- deterministic
- commands
- queue
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 214
- 230000004044 response Effects 0.000 claims abstract description 115
- 238000012545 processing Methods 0.000 claims description 96
- 238000000034 method Methods 0.000 claims description 40
- 230000010354 integration Effects 0.000 claims description 14
- 230000009977 dual effect Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 208000033748 Device issues Diseases 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism 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
- 239000000126 substance Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- 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/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of 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/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
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
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)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
本申请涉及支持非确定性命令的存储器子系统。从命令队列中选择第一非确定性读取命令进行发出。该命令队列包含同时未处理的并且置于等待状态的包含该第一非确定性读取命令的非确定性读取命令。从非易失性存储器组件接收指示与该未处理的非确定性读取命令之一相关联的数据可用的第一中间响应。当接收到该第一中间响应时,将第一发送命令插入到发送队列中。从该发送队列中选择该第一发送命令进行发出并从该发送队列中移除。接收对对应非确定性读取命令的响应。该对应非确定性读取命令是该未处理的非确定性读取命令之一。该响应指示该对应非确定性读取命令并且包含与对应非确定性读取命令相关联的数据。从该命令队列中移除该对应非确定性读取命令。
Description
分案申请的相关信息
本申请是申请日为2019年8月23日、申请号为“201980063547.7”、发明名称为“支持非确定性命令的存储器子系统”的发明专利申请的分案申请。
优先权申请
本申请要求于2018年8月24日提交的美国申请序列号16/111,869的优先权,所述美国申请以全文引用的方式并入本文中。
技术领域
本公开的实施例总体上涉及存储器子系统,并且更具体地,涉及支持到存储器组件的具有无序响应的非确定性命令的存储器子系统。
背景技术
存储器子系统可以是如固态驱动器(SSD)等存储系统,并且可以包含一或多个存储数据的存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。通常,主机系统可以利用存储器子系统来将数据存储在存储器组件处并从存储器组件中检索数据。
发明内容
描述一种系统。在一些实例中,所述系统可包括:多个存储器组件;以及处理装置。所述存储器组件包括接收确定性命令的易失性存储器组件和接收非确定性命令的非易失性存储器组件。所述处理装置与所述多个存储器组件操作性地耦接以执行包括以下的操作:从命令队列中选择将要发出的第一非确定性读取命令并且选择第二非确定性读取命令,所述第二非确定性读取命令处于等待状态;在选择所述第一非确定性读取命令后,使所述第一非确定性读取命令处于所述等待状态;从所述非易失性存储器组件接收第一中间响应,所述第一中间响应指示与处于所述等待状态的所述非确定性读取命令之一相关联的数据可用;当接收到所述第一中间响应时,将第一发送命令插入到发送队列中;以先进先出的顺序执行所述发送队列中的命令;以及在接收到对所述第一发送命令的响应后,确定对所述第一发送命令的所述响应包含与第一非确定性读取命令相关联的数据,并且从所述命令队列中删除所述第一非确定性读取命令。
描述一种方法。在一些实例中,所述方法可包括:从命令队列中选择将要发出的第一非确定性读取命令并且选择第二非确定性读取命令,所述第二非确定性读取命令处于等待状态;在选择所述第一非确定性读取命令后,使所述第一非确定性读取命令处于所述等待状态;从非易失性存储器组件接收第一中间响应,所述第一中间响应指示与处于所述等待状态的所述非确定性读取命令之一相关联的数据可用;当接收到所述第一中间响应时,将第一发送命令插入到发送队列中;在接收到对所述第一发送命令的响应后,确定对所述第一发送命令的所述响应包括与第一非确定性读取命令相关联的数据,并且从所述命令队列中删除所述第一非确定性读取命令;检测所述命令队列中的第一非确定性写入命令;当写入积分寄存器中没有写入积分可用,所述命令队列中没有非确定性读取命令并且没有未处理的虚拟读取命令时,发出虚拟读取命令;以及设置虚拟读取未处理DRO寄存器以指示虚拟读取命令未处理。
描述一种包括指令的非暂时性计算机可读存储媒体。在一些实例中,所述指令当由处理装置执行时使所述处理装置执行包括以下的操作:检测命令队列中的第一非确定性写入命令;当写入积分寄存器中没有写入积分可用,所述命令队列中没有非确定性读取命令并且没有未处理的虚拟读取命令时,发出虚拟读取命令;设置虚拟读取未处理DRO寄存器以指示虚拟读取命令未处理;从非易失性存储器组件接收第一中间响应,所述第一中间响应指示与所述虚拟读取命令相关联的数据可用;当接收到所述第一中间响应时,将第一发送命令插入到发送队列中;以先进先出的顺序执行所述发送队列中的命令;以及接收对所述虚拟读取命令的响应,其中对所述虚拟读取命令的所述响应指示与所述虚拟读取命令的关联性并且不包括数据;通过增加可用写入积分的数量来更新所述写入积分寄存器;以及设置所述DRO寄存器以指示没有未处理的虚拟读取命令。
附图说明
根据下文给出的详细描述和本公开的各个实施例的附图,将更充分地理解本公开。
图1展示了根据本公开的一些实施例的包含存储器子系统的示例计算环境。
图2是根据本公开的一些实施例的用于在存储器子系统中支持非确定性读取命令的示例方法的流程图。
图3是根据本公开的一些实施例的支持命令队列中的命令(包含非确定性读取命令(XREAD))的命令控制器的实例。
图4是根据本公开的一些实施例的用于在存储器子系统中支持非确定性写入命令的示例方法的流程图。
图5是根据本公开的一些实施例的支持命令队列中的命令(包含非确定性写入命令(XWRITE))的命令控制器的实例。
图6是本公开的实施例可以在其中操作的示例计算机系统的框图。
具体实施方式
本公开的各方面涉及支持到存储器组件的非确定性命令的存储器子系统。存储器子系统在下文中也被称为“存储器装置”。存储器子系统的实例是如固态驱动器(SSD)等存储系统。在一些实施例中,存储器子系统是混合存储器/存储子系统。通常,主机系统可以利用包含一或多个存储器组件的存储器子系统。主机系统可以提供要存储在存储器子系统处的数据,并且可以请求从存储器子系统中检索数据。
存储器子系统可以包含可以存储来自主机系统的数据的多个存储器组件。多个存储器组件可以是易失性存储器组件、非易失性存储器组件或其组合。到易失性存储器组件的命令可以被称为确定性命令,而到非易失性存储器组件的命令可以被称为非确定性命令。常规存储器控制器支持命令的无序完成,以允许不同易失性存储器组件(例如,动态随机存取存储器(DRAM))类型连接到同一通道的不同组。常规的存储器控制器功能依赖于以下假设:针对特定组的读取命令的任何集合将以读取命令被发出到所述组的顺序来获得响应。
然而,如非易失性双列直插式存储器模块协议(NVDIMM-P)等用于非易失性存储器组件的最新协议使得能够将非易失性存储器组件与易失性存储器组件(例如,DRAM)一起连接在同一通道上。当使用如NVDIMM-P等协议调度命令时,常规存储器控制器所依赖的假设不再成立。换句话说,发出到同一组的非确定性读取命令可以返回无序响应,使得常规存储器控制器无法支持这些用于非易失性存储器组件的最新协议。
本公开的各方面通过具有一种存储器子系统解决了上述和其它缺陷,所述存储器子系统包含对命令队列和存储器控制器的调度逻辑的扩展以支持如NVDIMM-P等非确定性命令。这些扩展允许对非确定性命令进行高效调度,而不会对到如DRAM等易失性存储器组件的确定性命令的调度具有不利影响。进一步地,这些扩展对使用到达顺序和用于调度目的的其它命令状态信息的服务质量(QoS)的存储器控制器现有命令调度策略(例如,先备、先到、先提供(first-ready,first-come,first-service,FRFCFS))的操作无害。
图1展示了根据本公开的一些实施例的包含存储器子系统110的示例计算环境100。存储器子系统110可以包含媒体,如存储器组件112A到112N。存储器组件112A到112N可以是易失性存储器组件、非易失性存储器组件或其组合。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合存储器/存储子系统。通常,计算环境100可以包含使用存储器子系统110的主机系统120。例如,主机系统120可以将数据写入存储器子系统110并且从存储器子系统110读取数据。
主机系统120可以是计算装置,如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。主机系统120可以包含或耦接到存储器子系统110,使得主机系统120可以从存储器子系统110读取数据或将数据写入所述存储器子系统。主机系统120可以通过物理主机接口耦接到存储器子系统110。如本文所使用的,“耦接到”通常指组件之间的连接,所述连接可以是间接的通信连接或直接的通信连接(例如,无中间组件),无论是有线的或无线的,包含如电、光、磁性等连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接的SCSI(SAS)等。物理主机接口可以用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦接时,主机系统120可以进一步利用NVM快速(NVMe)接口以对存储器组件112A到112N进行存取。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。
存储器组件112A到112N可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(negative-and)(NAND(与非))型闪速存储器。存储器组件112A到112N中的每个存储器组件可以包含如单级单元(SLC)或多级单元(MLC)(例如,三级单元(TLC)或四级单元(QLC))等存储器单元的一或多个阵列。在一些实施例中,特定存储器组件可以包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每个存储器单元可以存储由主机系统120使用的数据的一或多个位(例如,数据块)。尽管描述了如与非型闪速存储器等非易失性存储器组件,但是存储器组件112A到112N可以基于如易失性存储器等任何其它类型的存储器。在一些实施例中,存储器组件112A到112N可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、或非(negative-or)(NOR(或非))闪速存储器、电可擦可编程只读存储器(EEPROM)以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列与可堆叠交叉网格数据存取阵列结合可以基于体电阻的改变执行位存储。另外,与许多基于闪速的存储器相比,交叉点非易失性存储器可以执行写入原地(in-place)操作,其中可以对非易失性存储器单元进行编程而无需先前擦除非易失性存储器单元。此外,存储器组件112A到112N的存储器单元可以被分组为存储器页面或数据块,所述存储器页面或数据块可以指用于存储数据的存储器组件的单元。在一个示例实施例中,存储器组件112A到112N还可以包含非易失性双列直插式存储器模块(NVDIMM)。
存储器系统控制器115(以下被称为“控制器”)可以与存储器组件112A到112N通信以执行如在存储器组件112A到112N处读取数据、写入数据或擦除数据等操作以及其它此类操作。控制器115可以包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器或其组合。控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。控制器115可以包含被配置成执行存储在本地存储器119中的指令的处理器(处理装置)117。在所展示的实例中,控制器115的本地存储器119包含嵌入式存储器,所述嵌入式存储器被配置成存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程和例程(包含处理存储器子系统110与主机系统120之间的通信)的指令。在一些实施例中,本地存储器119可以包含存储存储器指针、所获取数据等的存储器寄存器。本地存储器119还可以包含用于存储微代码的只读存储器(ROM)。虽然图1中的示例存储器子系统110被展示为包含控制器115,但是在本公开的另一个实施例中,存储器子系统110可以不包含控制器115,而是可以依赖于(例如,由外部主机或与存储器子系统分离的处理器或控制器提供的)外部控制。
通常,控制器115可以从主机系统120接收命令或操作并且可以将命令或操作转换为指令或适当的命令以实现对存储器组件112A到112N的期望存取。控制器115可以负责其它操作,如损耗均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作以及与存储器组件112A到112N相关联的逻辑块地址与物理块地址之间的地址转换。控制器115可以进一步包含主机接口电路系统,以通过物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收的命令转换为命令指令以存取存储器组件112A到112N并将与存储器组件112A到112N相关联的响应转换为用于主机系统120的信息。
存储器子系统110还可以包含未展示的另外的电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓存或缓冲器(例如,DRAM)和可以从控制器115接收地址并解码所述地址以对存储器组件112A到112N进行存取的地址电路系统(例如,行解码器和列解码器)。
来自主机系统120的命令可以包含到作为易失性存储器组件的存储器组件112A到112N的确定性命令和到作为非易失性存储器组件的存储器组件112A到112N的非确定性命令。确定性命令可以是例如到易失性存储器组件的行激活(ACT)、读取命令(READ)和写入命令(WRITE)。非确定性命令可以是例如NVDIMM-P命令,如读取命令(XREAD)、写入命令(XWRITE)、中间响应(RSP_N)、虚拟读取命令、对虚拟读取命令的响应、发送命令等。
存储器子系统110包含命令控制器113,所述命令控制器可以用于支持从主机系统120接收到的非确定性命令。在一些实施例中,控制器115包含命令控制器113的至少一部分。例如,控制器115可以包含被配置成执行存储在本地存储器119中的用于执行本文所描述的操作的指令的处理器117(处理装置)。在一些实施例中,命令控制器113是主机系统120、应用或操作系统的一部分。
命令控制器113提供对命令队列和控制器115的调度逻辑的扩展,以使得能够支持到存储子系统110的存储器组件112A到112N的非确定性命令。存储器组件112A到112N包含一或多个非易失性存储器组件和一或多个易失性存储器组件。一个非易失性存储器组件(如NVDIMM)放置在通道的一个组中,并且一或多个易失性存储器组件(如DRAM)放置在同一通道的其它组中。命令控制器113可以包含用于通道的每个组的非确定性发送队列、用于通道的每个组的虚拟读取未处理(“DRO”)寄存器、用于通道的每个组的写入积分寄存器以及用于通道的每个组的非确定性读取队列。在一个示例实施例中,为通道的每个组提供发送队列,以允许处理对非确定性命令的中间响应、发送命令和无序非确定性读取响应。在一个示例实施例中,为通道的每个组提供DRO寄存器和写入积分寄存器,以确保虚拟读取命令的正确传输并避免写入缓冲器溢出。使用这些结构,命令控制器113允许在命令队列中使到易失性的存储器组件112A到112N的确定性命令与到非易失性的存储器组件112A到112N的具有无序响应的非确定性命令交错。下文描述关于特性组件113的操作的进一步的细节。
图2是根据本公开的一些实施例的用于在存储器子系统中支持非确定性读取命令的示例方法200的流程图。方法200可以由处理逻辑执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的命令控制器113执行。尽管以特定序列或顺序示出,但除非另有指定,否则可以修改过程的顺序。因此,所展示的实施例应被理解为只是实例,并且所展示的过程可以以不同的顺序执行,并且一些过程可以并行地执行。另外,可以在各个实施例中省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
在操作210处,处理装置从命令队列中选择第一非确定性读取命令进行发出。命令队列可以包含多个非确定性读取命令,所述多个非确定性读取命令包含第一非确定性读取命令和第二非确定性读取命令。第二非确定性读取命令可以处于等待状态。
在操作220处,在选择第一非确定性读取命令后,处理装置使第一非确定性读取命令处于等待状态。在此阶段,第一非确定性读取命令和第二非确定性读取命令两者同时处于等待状态。处于等待状态的第一非确定性读取命令和第二非确定性读取命令也被称为未处理命令。
命令队列包含在命令队列中交错的确定性命令和非确定性命令。在一个示例实施例中,对非确定性命令的响应是无序接收的。非确定性命令可以是例如NVDIMM-P命令。在此实例中,非确定性读取命令是XREAD命令,并且第一中间响应是RSP_N命令。命令队列还可以包含同时未处理的并且置于等待状态的一或多个非确定性读取命令,所述一或多个非确定性读取命令包含第一非确定性读取命令。为了维持到达顺序,处于等待状态的非确定性读取命令保留在命令队列中,但是处理装置不能再选择发出处于等待状态的非确定性读取命令。非确定性命令的等待状态类似于针对易失性存储器组件的激活命令。
在操作230处,处理装置从包含在存储器组件112A到112N中的非易失性存储器组件接收第一中间响应。第一中间响应指示与处于等待状态的非确定性读取命令之一相关联的数据可用或已准备好进行从一个非易失性存储器组件传输。在一个示例实施例中,中间响应(例如,NVDIMM-P协议中的RSP_N)使得发出到同一组的非确定性读取命令的行为能够返回对那些非确定性读取命令的无序响应。为了避免数据总线冲突,处理装置在单独的总线上接收对每个非确定性读取命令的中间响应。当处理装置接收到第一中间响应并且存在到同一组的多个未处理的非确定性读取命令时,处理装置不知道哪个未处理的非确定性读取命令的数据已准备好进行传输。
在操作240处,当接收到第一中间响应时,处理装置将第一发送命令插入到发送队列中。在一个示例实施例中,处理装置将第一发送命令插入到与第一中间响应相关联的组的发送队列中。在此实施例中,插入到与第一中间响应相关联的组的发送队列中的第一发送命令确保使得第一发送命令可用而不改变命令队列中的命令的排序。在一个示例实施例中,在操作230之后,处理装置可以基于正在实施的选择策略从命令队列中选择任何确定性命令。
在一个示例实施例中,处理装置选择命令队列中包含的第一确定性命令进行发出。第一确定性命令可以是行激活(ACT)、读取命令(READ)或写入命令(WRITE)。当第一确定性命令是行激活(ACT)时,在选择第一确定性命令后,处理装置使第一确定性命令处于等待状态,并且当第一确定性命令完成时,处理装置从命令队列移除第一确定性命令。
当第一确定性命令是读取命令(READ)或写入命令(WRITE)时,在选择第一确定性命令后,从命令队列中移除第一确定性命令。
在操作250处,处理装置以先进先出(FIFO)的顺序执行发送队列中的命令。在一个示例实施例中,处理装置从发送队列中选择第一发送命令进行发出并从发送队列中移除。发送队列可以包含同时未处理的一或多个发送命令,所述一或多个发送命令包含第一发送命令。基于选择策略来调度发送队列中的一或多个发送命令以进行优先提供。可以基于发送队列中的先进先出顺序(FIFO)提供用于通道的每个组的发送队列。在一个示例实施例中,发送命令指示非易失性存储器组件传输与已准备好进行传输的非确定性读取命令相对应的数据。
在操作260处,在接收到对第一发送命令的响应后,处理装置确定对第一发送命令的响应包含与第一非确定性读取命令相关联的数据,并且从命令队列中删除第一非确定性读取命令。在一个示例实施例中,所述响应指示对应非确定性读取命令。换句话说,所述响应标识与其相关联的未处理的非确定性读取命令。因此,当存在到同一组的多个未处理的非确定性读取命令时,一旦处理装置接收到对发出的发送命令的响应,处理装置就仅知道可以从命令队列中撤出哪些未处理的非确定性读取命令。
在一个示例实施例中,在命令队列包含交错的确定性命令和具有无序响应的非确定性命令的情况下,处理装置可以支持具有无序响应的非确定性命令,而不会干扰将确定性命令发出到与易失性存储器组件(例如,DRAM)相关联的组。在一个示例实施例中,处理装置可以在方法200内的操作中的任何操作之前或之后选择并发出确定性命令。
图3是根据本公开的一些实施例的支持命令队列中的命令(包含非确定性读取命令(XREAD))的命令控制器的实例。
如图3所示,在此示例实施例中,非确定性命令(例如,XREAD和SEND命令)与命令队列的确定性命令(例如,到DRAM的ACT和WRITE)交错。
在第二时间步骤(例如,第二列)处,命令控制器选择XREAD 1进行发出并使其处于等待状态。在第三时间步骤(例如,第三列)处,命令控制器选择XREAD 0进行发出并使其处于等待状态。处于等待状态的命令也被称为是未处理的。
在此实例中,XREAD 1和XREAD 0两者在命令队列中同时处于等待状态。通过将命令设置为等待状态,命令控制器将知道不再次选择这些命令进行发出。然而,命令控制器将这些命令留在队列中,以维持命令的到达顺序以调度将来的命令。
在第四时间步骤(例如,第四列)处,命令控制器从非易失性存储器组件(例如,NVDIMM-P装置)中的至少一个非易失性存储器组件接收中间响应(RSP_N 0)。在图3中,符号RSP_N 0并不指示此中间响应对应于XREAD 0,而是指示这是由命令控制器接收到的第一中间响应(例如,顺序位置0)。
在此时间点(即,第四时间步骤)处,发送中间响应的NVDIMM-P装置指示数据对于处于等待状态的XREAD之一(例如,XREAD 0或XREAD 1)可用,但是接收此中间响应(例如,RSP_N 0)的命令控制器不具有对处于等待状态的XREAD之一的指示。在接收到中间响应(RSP_N 0)后,命令控制器将SEND命令推送到SEND队列中。
在此实例中,命令控制器接下来向易失性组件(例如,DRAM装置)发出ACT 0,并且在第五时间步骤(例如,第五列)处使所述确定性命令(ACT 0)处于等待状态。在此实例中,在此时间点(例如,第五时间步骤)处,尽管SEND命令处于命令队列中,但是命令选择逻辑确定应该在未决的SEND命令之前选择ACT 0。在一个示例实施例中,命令控制器基于正在实施的选择策略来选择此确定性命令(ACT 0)。
接下来,在第六时间步骤处,命令控制器从非易失性存储器组件(例如,NVDIMM-P装置)接收第二中间响应(例如,RSP_N 1),所述第二中间响应指示数据对于处于等待状态的另一个XREAD命令可用。由于存在两个处于等待状态的XREAD命令和两个接收到的中间响应,因此数据已为处于等待状态的两个XREAD命令准备就绪。
在第七时间步骤处,命令控制器将确定性命令(ACT 1)发出到易失性存储器组件(例如,DRAM装置)并使所述确定性命令处于等待状态。在一个示例实施例中,命令控制器基于正在实施的选择策略来选择此确定性命令(ACT 1)。
在下一个步骤中,命令控制器选择可用的SEND命令,发出所述命令并将其从SEND队列中移除。在此实例中,在SEND命令处于飞行状态时,ACT 1完成,并且对应的队列条目(ACT 1)转换为列命令READ 3。换句话说,处于等待状态的ACT 1从命令队列中移除并由新命令(例如,确定性命令READ 3)代替。
在下一个时间步骤处,命令控制器选择非确定性读取命令(XREAD 2)进行发出,并且立即接收中间响应(RSP_N 2),此时命令控制器将另一个SEND命令插入到SEND队列中。
接下来发出列命令XWRITE 1,此后接收到对SEND命令的响应,所述响应是对XREAD0的响应(例如,XREAD 0响应)。如图3所示,尽管XREAD 0命令是在XREAD1命令之后发出的,但是与XREAD 0相对应的数据是在XREAD 1的数据之前返回的。
然后,由于完成了正在提供的XREAD 0,因此命令控制器从命令队列移除所述命令。在图3所示的最后时间步骤处,命令控制器选择SEND命令进行发出并将其从SEND队列中移除。
图4是根据本公开的一些实施例的用于在存储器子系统中支持非确定性写入命令的示例方法400的流程图。方法400可以由处理逻辑执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的命令控制器113执行。尽管以特定序列或顺序示出,但除非另有指定,否则可以修改过程的顺序。因此,所展示的实施例应被理解为只是实例,并且所展示的过程可以以不同的顺序执行,并且一些过程可以并行地执行。另外,可以在各个实施例中省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。在一个示例实施例中,图2中的方法200和图4中的方法400也可以组合。
在操作410处,处理装置检测命令队列中的第一非确定性写入命令。第一非确定性写入命令是从主机系统120接收到的非确定性命令。第一非确定性写入命令可以是NVDIMM-P XWRITE命令。
在操作415处,处理装置确定写入积分寄存器中是否有写入积分可用。在一个示例实施例中,被评估的写入积分寄存器是与第一非确定性写入命令相对应的组的写入积分寄存器。
由于将与非确定性写入命令相关联的数据提交给非易失性存储器组件花费某一非确定性量的时间,因此写入积分确保一次缓冲有限数量的非确定性写入命令。为了防止处理装置超出保存与非确定性写入命令相关联的数据的缓冲器的限度,向处理装置提供多个写入积分,所述写入积分指示可用的缓冲空间。例如,如果写入积分的数量达到0,则处理装置不能再发出非确定性写入命令,直到写入积分的数量增加为止。
如果在操作415处处理装置确定写入积分可用,则在操作420处,处理装置发出第一非确定性写入命令。在操作425处,处理装置使写入积分寄存器减量。例如,处理装置可以将写入积分寄存器中的写入积分的数量减少一个。
如果在操作415处处理装置确定写入积分不可用,则在操作430处处理装置确定命令队列中是否存在任何非确定性读取命令。在一个示例实施例中,处理装置确定命令队列是否包含与在操作410处检测到的非确定性写入命令的组相同的组的任何非确定性读取命令。
如果在操作430处处理装置确定命令队列中存在非确定性读取命令,则在操作435处,处理装置不发出虚拟读取命令。
当处理装置确定没有写入积分可用时,处理装置需要一种构件来接收以下通知:先前传输的写入数据已被提交给非易失性存储器组件并且另外的写入积分可用。在一个示例实施例中,在接收到每个非确定性读取响应的情况下,处理装置设置写入积分寄存器以指示自从上一次接收到非确定性读取响应以来,写入积分已变为可用的数量。因此,在操作435处,处理装置此时不发出虚拟读取命令,因为对写入积分寄存器的更新将会被返回有对命令队列中同一组中的非确定性读取命令的响应。换句话说,处理装置不需要发出虚拟读取命令即可获得对写入积分寄存器的更新。
如果在操作430处处理装置确定命令队列中不存在非确定性读取命令,则在操作440处,处理装置确定是否存在未处理的虚拟读取命令。在一个示例实施例中,处理装置确定是否存在与在操作410处检测到的非确定性写入命令的组相同的组的虚拟读取命令。
处理装置将虚拟读取命令发出到非易失性存储器组件,以接收对虚拟读取命令的响应,所述响应指示可用的写入积分的数量。在一个示例实施例中,处理装置一次不向同一组发出多于一个虚拟读取命令。如果在操作440处处理装置确定存在未处理的虚拟读取命令,则在操作435处,处理装置不发出虚拟读取命令。
如果在操作440处处理装置确定不存在未处理的虚拟读取命令,则在操作445处,处理装置发出虚拟读取命令。因此,在操作445处,当(i)写入积分寄存器中没有写入积分可用,(ii)命令队列中没有非确定性读取命令并且(iii)没有未处理的虚拟读取命令时,处理装置发出虚拟读取命令。在一个示例实施例中,发出的虚拟读取命令的组与在操作410处检测到的非确定性写入命令的组相同。在一个示例实施例中,与在图2中讨论的非确定性读取命令类似地提供发出的虚拟读取命令。
在操作450处,处理装置设置虚拟读取未处理(“DRO”)寄存器以指示虚拟读取命令未处理。在一个示例实施例中,处理装置设置与在操作445处发出的虚拟读取命令相对应的组的DRO寄存器。被设置为指示虚拟读取命令未处理的DRO寄存器用作对处理装置不向通道的所述组发出另一个虚拟读取命令的指示或提醒。
在操作455处,处理装置从非易失性存储器组件接收第一中间响应,所述第一中间响应指示与虚拟读取命令相关联的数据可用。如上面在图2中所讨论的,尽管在操作455处,第一中间响应不指示其对应于哪个未处理的非确定性读取命令,但是除了虚拟读取命令之外,不存在未处理的非确定性读取命令。因此,处理装置确定第一中间响应与虚拟读取命令相关联。应注意的是,尽管第一中间响应指示与虚拟读取命令相关联的数据可用,但是如以下所讨论的,对虚拟读取命令的响应可以不包含数据。因此,来自非易失性存储器组件的第一中间响应可以指示与虚拟读取命令相关联的响应可用。
在操作460处,当接收到第一中间响应时,处理装置将第一发送命令插入到发送队列中。如在图2中,可以将第一发送命令插入到与第一中间响应相关联的组的发送队列中以确保使得第一发送命令可用而不改变命令队列中的命令的排序。在一个示例实施例中,在操作460之后,处理装置可以基于正在实施的选择策略从命令队列中选择任何确定性命令。
在操作465处,处理装置以先进先出(FIFO)的顺序执行发送队列中的命令。在一个示例实施例中,处理装置从发送队列中选择第一发送命令进行发出并从发送队列中移除。发送队列可以包含同时未处理的一或多个发送命令,所述一或多个发送命令包含第一发送命令。基于选择策略来调度发送队列中的一或多个发送命令以进行优先提供。可以基于发送队列中的先进先出顺序(FIFO)提供用于通道的每个组的发送队列。在一个示例实施例中,发送命令指示非易失性存储器组件传输与已准备好进行传输的非确定性读取命令相对应的数据。
在操作470处,处理装置接收对虚拟读取命令的响应。对虚拟读取命令的响应可以指示一个写入积分已变为可用。对虚拟读取命令的响应还指示与虚拟读取命令的关联性并且不包含数据。在此实施例中,当从对虚拟读取命令作出响应的非易失性存储器组件发送最终响应时,所述非易失性存储器组件不将任何数据放置在数据总线上。
在操作475处,处理装置通过增加可用写入积分的数量来更新写入积分寄存器。在一个示例实施例中,处理装置将可用写入积分的数量增加一个。在操作480处,处理装置设置DRO寄存器以指示没有未处理的虚拟读取命令。
图5是根据本公开的一些实施例的支持命令队列中的命令(包含非确定性写入命令(XWRITE))的命令控制器的实例。在图5中,在执行开始时(例如,第一列),命令控制器具有一个写入积分。命令控制器在第二时间步骤处发出第一非确定性写入命令(XWRITE 0)并且使写入积分寄存器减量。
在此实例中,应注意,尽管队列中存在另一个非确定性写入命令(XWRITE 1),但是由于命令队列中存在到同一组的非确定性读取命令(XREAD 0),所以命令控制器此时不调度虚拟读取。相应地,由于对写入计数器的更新将会被返回有对此非确定性读取命令(XREAD 0)的响应,因此命令控制器不需要发出虚拟读取即可获得对写入计数器的更新。在后续时间步骤(例如,第四列)处,从非易失性存储器组件(例如,NVDIMM-P装置)接收中间响应(例如,RSP_N 0),因此命令控制器将SEND命令插入在SEND队列中。
在第五时间步骤处,命令控制器将确定性命令(ACT 1)发出到易失性存储器组件(例如,DRAM装置)。在一个示例实施例中,命令控制器基于正在实施的选择策略来选择此确定性命令(ACT 1)。
在第六时间步骤处,命令控制器发出排队的SEND命令并且从SEND队列中移除SEND命令。在第七时间步骤处,命令控制器接收对XREAD 0的响应并且指示仍然没有写入积分可用。此时,命令控制器认识到其需要调度虚拟读取来获得对写入积分的更新。因此,在第八时间步骤处,命令控制器发出虚拟读取并且将虚拟读取未处理(DRO)寄存器设置为真。在第九时间步骤处,返回中间响应(例如,RSP_N 1)。在第十时间步骤处,命令控制器将SEND命令插入到SEND队列中。
在下一个时间步骤处,命令控制器确定ACT 1完成并从命令队列中移除已完成的ACT 1命令并且在命令队列中接收新条目。在此实例中,ACT 1命令转换为列命令(READ3),所述列命令是确定性命令。在下一个时间步骤处,命令控制器选择SEND 1进行发出并且从SEND队列中移除SEND 1。在第十二时间步骤处,命令控制器选择作为列命令的确定性读取命令(READ 1)并且将所述确定性读取命令发出到易失性存储器组件(例如,DRAM装置)。在一个示例实施例中,命令控制器基于正在实施的选择策略来选择此确定性命令(READ 1)。然后,返回指示一个写入积分已变为可用的虚拟读取响应。命令控制器更新用于所述组的写入积分(WC)寄存器,从而使XWRITE 1可发出。在图5中的最后一个时间步骤处,命令控制器在所示的最后一个时间步骤中发出XWRITE 1。
图6展示了计算机系统600的示例机器,可以在所述计算机系统内执行用于使机器执行本文所讨论的方法中的任何一或多种方法的指令集。在一些实施例中,计算机系统600可以对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦接到或利用存储器子系统(例如,图1的存储器子系统110)或可以用于执行控制器的操作(例如,以执行操作系统,从而执行与图1的命令控制器113相对应的操作)。在替代实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可以在客户端-服务器网络环境中以服务器或客户端机器的能力进行操作,作为对等(或分布式)网络环境中的对等机器,或作为云计算基础架构或环境中的服务器或客户端机器。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web电器、服务器、网络路由器、交换机或桥接器、或能够(顺序地或以其它方式)执行指定所述机器要采取的动作的指令集的任何机器。进一步地,尽管展示了单个机器,但是术语“机器”还应该被视为包含单独地或联合地执行一个指令集(或多个指令集)以执行本文所讨论的方法中的任何一或多种方法的机器的任何集合。
示例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、闪速存储器、DRAM(如同步DRAM(SDRAM)或兰巴斯(Rambus)DRAM(RDRAM)等))、静态存储器606(例如,闪速存储器、静态随机存取存储器(SRAM)等)以及数据存储系统618,其经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器或实施指令集的组合的处理器。处理装置602还可以是一或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602被配置成执行用于执行本文所讨论的操作和步骤的指令626。计算机系统600可以进一步包含网络接口装置608以通过网络620进行通信。
数据存储系统618可以包含其上存储有使本文所描述的方法或功能中的任何一或多种方法或功能具体化的指令626的一或多个集或软件的机器可读存储媒体624(也称为计算机可读媒体)。指令626还可以在由计算机系统600执行所述指令期间完全或至少部分地驻留在主存储器604和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可以对应于图1的存储器子系统110。
在一个示例实施例中,指令626包含用于实施与命令控制器(例如,图1的命令控制器113)相对应的功能的指令。尽管在示例实施例中示出的机器可读存储媒体624是单个媒体,但术语“机器可读存储媒体”应当被视为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码由机器执行且使机器执行本公开的方法中的任何一或多种方法的指令集的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不局限于固态存储器、光学媒体和磁性媒体。
已经在对计算机存储器内的数据位的操作的算法和符号表示方面呈现了前面详细描述的说明的一些部分。这些算法描述和表示是数据处理领域的技术人员用来向本领域的其它技术人员最有效地传递其工作实质的方式。算法在此处并且通常被认为是产生期望结果的操作的自相一致序列。所述操作是需要对物理量进行物理操纵的操作。通常但不一定,这些量采用能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。已经证明有时候,主要出于通用的原因,将这些信号称作位、值、元素、符号、字符、术语、数字等是便利的。
然而,应当记住,所有这些术语和类似术语应当与适当的物理量相关联,并且仅仅是应用于这些量的方便标记。本公开可以涉及计算机系统或类似的电子计算装置的动作和过程,所述计算机系统或类似的电子计算装置对在计算机系统的寄存器和存储器内表示为物理(电子)量的数据进行操纵,并将其转换为在计算机系统的存储器或寄存器或其它此类信息存储系统内以类似方式表示为物理量的其它数据。
本公开还涉及一种用于执行本文的操作的设备。此设备可以被专门构造用于所需目的,或者其可以包含通过计算机中存储的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储媒体中,所述计算机可读存储媒体如但不限于各自耦接到计算机系统总线的任何类型的盘(包含软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或者适合于存储电子指令的任何类型的媒体。
本文所呈现的算法和显示并非固有地与任何特定计算机或其它设备相关。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明,构造用于执行所述方法的更具专用性的设备是方便的。用于各种这些系统的结构将如下文的描述中阐述那样显现。另外,本公开不参考任何特定的编程语言进行描述。应理解,可以使用各种编程语言来实施如本文描述的本公开的教导。
本公开可以被提供为计算机程序产品或软件,所述计算机程序产品或软件可以包含其上存储有指令的机器可读媒体,所述指令可以用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、闪速存储器组件等。
在前述说明书中,已经参考其具体示例实施例对本公开的实施例进行描述。将显而易见的是,在不脱离如以下权利要求书中阐述的本公开的实施例的更广泛的精神和范围的情况下,可以对所述实施例进行各种修改。因此,说明书和附图应被视为说明性意义的,而不是限制性意义的。
Claims (20)
1.一种系统,其包括:
多个存储器组件,所述存储器组件包括接收确定性命令的易失性存储器组件和接收非确定性命令的非易失性存储器组件;以及
处理装置,所述处理装置与所述多个存储器组件操作性地耦接以执行包括以下的操作:
从命令队列中选择将要发出的第一非确定性读取命令并且选择第二非确定性读取命令,所述第二非确定性读取命令处于等待状态;
在选择所述第一非确定性读取命令后,使所述第一非确定性读取命令处于所述等待状态;
从所述非易失性存储器组件接收第一中间响应,所述第一中间响应指示与处于所述等待状态的所述非确定性读取命令之一相关联的数据可用;
当接收到所述第一中间响应时,将第一发送命令插入到发送队列中,其中所述第一发送命令指示所述非易失性存储器组件传输与所述非确定性读取命令之一相关联的所述数据;
以先进先出的顺序执行所述发送队列中的命令;以及
在接收到对所述第一发送命令的响应后,
确定对所述第一发送命令的所述响应包含与第一非确定性读取命令相关联的数据,并且
从所述命令队列中删除所述第一非确定性读取命令。
2.根据权利要求1所述的系统,其中所述命令队列包括所述确定性命令和所述非确定性命令,其中所述确定性命令和所述非确定性命令在所述命令队列中交错,其中对所述非确定性命令的响应是无序接收的。
3.根据权利要求2所述的系统,其中所述处理装置进一步用于执行包括以下的操作:
选择包含在所述命令队列中的将要发出的第一确定性命令,其中所述第一确定性命令是以下之一:行激活(ACT)、读取命令(READ)或写入命令(WRITE);
当所述第一确定性命令是所述行激活(ACT)时,
在选择所述第一确定性命令后,使所述第一确定性命令处于所述等待状态,并且
当所述第一确定性命令完成时,从所述命令队列中移除所述第一确定性命令,并且
当所述第一确定性命令是所述读取命令(READ)或所述写入命令(WRITE)时,
在选择所述第一确定性命令后,从所述命令队列中移除所述第一确定性命令。
4.根据权利要求1所述的系统,其中所述易失性存储器组件是动态随机存取存储器DRAM,并且所述非易失性存储器组件是非易失性双列直插式存储器模块NVDIMM,其中所述非确定性命令是NVDIMM-P命令,其中所述非确定性读取命令是XREAD命令,并且所述第一中间响应是RSP_N命令。
5.根据权利要求4所述的系统,其中所述非易失性存储器组件放置在通道的第一组中,并且所述易失性存储器组件放置在所述通道的第二组中。
6.根据权利要求1所述的系统,其中所述发送队列包括包含所述第一发送命令的同时未处理的多个发送命令,其中基于选择策略来调度所述发送队列中的所述多个发送命令进行优先提供。
7.根据权利要求1所述的系统,其中所述处理装置进一步用于执行包括以下的操作:
检测所述命令队列中的第一非确定性写入命令,其中所述第一非确定性写入命令是NVDIMM-P XWRITE命令;
当写入积分寄存器中有写入积分可用时,发出所述第一非确定性写入命令;以及
使所述写入积分寄存器减量。
8.根据权利要求1所述的系统,其中所述处理装置进一步用于执行包括以下的操作:
检测所述命令队列中的第一非确定性写入命令,其中所述第一非确定性写入命令是NVDIMM-P XWRITE命令;
当写入积分寄存器中没有写入积分可用,所述命令队列中没有非确定性读取命令并且没有未处理的虚拟读取命令时,发出虚拟读取命令;以及
设置虚拟读取未处理DRO寄存器以指示虚拟读取命令未处理。
9.根据权利要求8所述的系统,其中所述处理装置进一步用于执行包括以下的操作:
从所述非易失性存储器组件接收第二中间响应,所述第二中间响应指示与所述虚拟读取命令相关联的响应可用;
当接收到所述第二中间响应时,将第二发送命令插入到所述发送队列中;
接收对所述虚拟读取命令的响应,其中对所述虚拟读取命令的所述响应指示与所述虚拟读取命令的关联性并且不包括数据;
通过增加可用写入积分的数量来更新所述写入积分寄存器;以及
设置所述DRO寄存器以指示没有未处理的虚拟读取命令。
10.一种方法,其包括:
从命令队列中选择将要发出的第一非确定性读取命令并且选择第二非确定性读取命令,所述第二非确定性读取命令处于等待状态;
在选择所述第一非确定性读取命令后,使所述第一非确定性读取命令处于所述等待状态;
从非易失性存储器组件接收第一中间响应,所述第一中间响应指示与处于所述等待状态的所述非确定性读取命令之一相关联的数据可用;
当接收到所述第一中间响应时,将第一发送命令插入到发送队列中,其中所述第一发送命令指示所述非易失性存储器组件传输与所述非确定性读取命令之一相关联的所述数据;
以先进先出的顺序执行所述发送队列中的命令;以及
在接收到对所述第一发送命令的响应后,
确定对所述第一发送命令的所述响应包括与第一非确定性读取命令相关联的数据,并且
从所述命令队列中删除所述第一非确定性读取命令;
检测所述命令队列中的第一非确定性写入命令;
当写入积分寄存器中没有写入积分可用,所述命令队列中没有非确定性读取命令并且没有未处理的虚拟读取命令时,发出虚拟读取命令;以及
设置虚拟读取未处理DRO寄存器以指示虚拟读取命令未处理。
11.根据权利要求10所述的方法,其进一步包括:
从所述非易失性存储器组件接收第二中间响应,所述第二中间响应指示与所述虚拟读取命令相关联的响应可用;
当接收到所述第二中间响应时,将第二发送命令插入到所述发送队列中;
接收对所述虚拟读取命令的响应,其中对所述虚拟读取命令的所述响应指示与所述虚拟读取命令的关联性并且不包括数据;
通过增加可用写入积分的数量来更新所述写入积分寄存器;以及
设置所述DRO寄存器以指示没有未处理的虚拟读取命令。
12.根据权利要求10所述的方法,其进一步包括:
当写入积分寄存器中有写入积分可用时,发出所述第一非确定性写入命令;以及
使所述写入积分寄存器减量。
13.根据权利要求10所述的方法,其中所述命令队列包括确定性命令和非确定性命令,其中所述确定性命令和所述非确定性命令在所述命令队列中交错,并且其中对所述非确定性命令的响应是无序接收的。
14.根据权利要求10所述的方法,其中所述发送队列包括同时未处理的多个发送命令,其中所述多个发送命令包括所述第一发送命令,其中基于选择策略来调度所述发送队列中的所述多个发送命令进行优先提供。
15.根据权利要求10所述的方法,其中所述命令队列包括确定性命令和非确定性命令,其中易失性存储器组件是接收所述确定性命令的动态随机存取存储器DRAM,并且所述非易失性存储器组件是接收所述非确定性命令的非易失性双列直插式存储器模块NVDIMM,其中所述非确定性命令是NVDIMM-P命令,其中所述非确定性读取命令是XREAD命令,并且所述第一中间响应是RSP_N命令,并且其中所述第一非确定性写入命令是NVDIMM-P XWRITE命令。
16.根据权利要求15所述的方法,其中所述非易失性存储器组件放置在通道的第一组中,并且所述易失性存储器组件放置在所述通道的第二组中。
17.一种非暂时性计算机可读存储媒体,其包括指令,所述指令当由处理装置执行时使所述处理装置执行包括以下的操作:
检测命令队列中的第一非确定性写入命令;
当写入积分寄存器中没有写入积分可用,所述命令队列中没有非确定性读取命令并且没有未处理的虚拟读取命令时,发出虚拟读取命令;
设置虚拟读取未处理DRO寄存器以指示虚拟读取命令未处理;
从非易失性存储器组件接收第一中间响应,所述第一中间响应指示与所述虚拟读取命令相关联的数据可用;
当接收到所述第一中间响应时,将第一发送命令插入到发送队列中,其中所述第一发送命令指示所述非易失性存储器组件传输与所述虚拟读取命令相关联的所述数据;
以先进先出的顺序执行所述发送队列中的命令;以及
接收对所述虚拟读取命令的响应,其中对所述虚拟读取命令的所述响应指示与所述虚拟读取命令的关联性并且不包括数据;
通过增加可用写入积分的数量来更新所述写入积分寄存器;以及
设置所述DRO寄存器以指示没有未处理的虚拟读取命令。
18.根据权利要求17所述的非暂时性计算机可读存储媒体,其中所述处理装置进一步用于执行包括以下的操作:
当写入积分寄存器中有写入积分可用时,发出所述第一非确定性写入命令;以及
使所述写入积分寄存器减量。
19.根据权利要求17所述的非暂时性计算机可读存储媒体,其中所述命令队列包括确定性命令和非确定性命令,其中所述确定性命令和所述非确定性命令在所述命令队列中交错,并且其中对所述非确定性命令的响应是无序接收的。
20.根据权利要求19所述的非暂时性计算机可读存储媒体,其中易失性存储器组件是接收所述确定性命令的动态随机存取存储器DRAM,并且所述非易失性存储器组件是接收所述非确定性命令的非易失性双列直插式存储器模块NVDIMM,其中所述非确定性命令是NVDIMM-P命令,其中所述第一非确定性写入命令是NVDIMM-P XWRITE命令,其中所述非易失性存储器组件放置在通道的第一组中,并且所述易失性存储器组件放置在所述通道的第二组中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210812077.3A CN115080472B (zh) | 2018-08-24 | 2019-08-23 | 支持非确定性命令的存储器子系统 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/111,869 | 2018-08-24 | ||
US16/111,869 US10503438B1 (en) | 2018-08-24 | 2018-08-24 | Memory sub-system supporting non-deterministic commands |
CN201980063547.7A CN112771492A (zh) | 2018-08-24 | 2019-08-23 | 支持非确定性命令的存储器子系统 |
PCT/US2019/047976 WO2020041745A1 (en) | 2018-08-24 | 2019-08-23 | Memory sub-system supporting non-deterministic commands |
CN202210812077.3A CN115080472B (zh) | 2018-08-24 | 2019-08-23 | 支持非确定性命令的存储器子系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980063547.7A Division CN112771492A (zh) | 2018-08-24 | 2019-08-23 | 支持非确定性命令的存储器子系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115080472A CN115080472A (zh) | 2022-09-20 |
CN115080472B true CN115080472B (zh) | 2024-06-25 |
Family
ID=68766114
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210812077.3A Active CN115080472B (zh) | 2018-08-24 | 2019-08-23 | 支持非确定性命令的存储器子系统 |
CN201980063547.7A Pending CN112771492A (zh) | 2018-08-24 | 2019-08-23 | 支持非确定性命令的存储器子系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980063547.7A Pending CN112771492A (zh) | 2018-08-24 | 2019-08-23 | 支持非确定性命令的存储器子系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10503438B1 (zh) |
EP (1) | EP3841456A4 (zh) |
KR (1) | KR20210035910A (zh) |
CN (2) | CN115080472B (zh) |
WO (1) | WO2020041745A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099778B2 (en) * | 2018-08-08 | 2021-08-24 | Micron Technology, Inc. | Controller command scheduling in a memory system to increase command bus utilization |
US10901657B2 (en) * | 2018-11-29 | 2021-01-26 | International Business Machines Corporation | Dynamic write credit buffer management of non-volatile dual inline memory module |
US11507522B2 (en) * | 2019-12-06 | 2022-11-22 | Advanced Micro Devices, Inc. | Memory request priority assignment techniques for parallel processors |
US11144450B2 (en) * | 2019-12-19 | 2021-10-12 | Micron Technology, Inc. | Maintaining sequentiality for media management of a memory sub-system |
US11099786B2 (en) * | 2019-12-30 | 2021-08-24 | Advanced Micro Devices, Inc. | Signaling for heterogeneous memory systems |
US11137943B2 (en) | 2020-03-04 | 2021-10-05 | Micron Technology, Inc. | Internal commands for access operations |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8115773B2 (en) * | 2007-06-07 | 2012-02-14 | Apple Inc. | Serializing command streams for graphics processors |
EP2096564B1 (en) * | 2008-02-29 | 2018-08-08 | Euroclear SA/NV | Improvements relating to handling and processing of massive numbers of processing instructions in real time |
US8019950B1 (en) * | 2008-03-27 | 2011-09-13 | Xilinx, Inc. | Memory controller interface for an embedded processor block core in an integrated circuit |
JP2010129106A (ja) * | 2008-11-25 | 2010-06-10 | Samsung Electronics Co Ltd | 不揮発性半導体記憶装置 |
US9135192B2 (en) * | 2012-03-30 | 2015-09-15 | Sandisk Technologies Inc. | Memory system with command queue reordering |
US9336167B2 (en) * | 2012-12-13 | 2016-05-10 | Texas Instruments Incorporated | I2C controller register, control, command and R/W buffer queue logic |
CN103870415B (zh) * | 2012-12-13 | 2019-02-19 | 德州仪器公司 | 用于在总线上执行事务的方法及系统 |
US9196347B2 (en) * | 2013-03-14 | 2015-11-24 | International Business Machines Corporation | DRAM controller for variable refresh operation timing |
US20150145875A1 (en) * | 2013-11-27 | 2015-05-28 | Aashish Pangam | Command scheduler for a display device |
KR102249416B1 (ko) * | 2014-06-11 | 2021-05-07 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 구동 방법 |
US10152237B2 (en) * | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
US10579560B2 (en) * | 2016-08-31 | 2020-03-03 | Futurewei Technologies, Inc. | Transaction-based hybrid memory |
-
2018
- 2018-08-24 US US16/111,869 patent/US10503438B1/en active Active
-
2019
- 2019-08-23 WO PCT/US2019/047976 patent/WO2020041745A1/en unknown
- 2019-08-23 EP EP19852801.0A patent/EP3841456A4/en not_active Withdrawn
- 2019-08-23 CN CN202210812077.3A patent/CN115080472B/zh active Active
- 2019-08-23 CN CN201980063547.7A patent/CN112771492A/zh active Pending
- 2019-08-23 KR KR1020217008280A patent/KR20210035910A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
US10503438B1 (en) | 2019-12-10 |
CN115080472A (zh) | 2022-09-20 |
CN112771492A (zh) | 2021-05-07 |
EP3841456A4 (en) | 2022-05-25 |
WO2020041745A1 (en) | 2020-02-27 |
EP3841456A1 (en) | 2021-06-30 |
KR20210035910A (ko) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115080472B (zh) | 支持非确定性命令的存储器子系统 | |
CN112534393B (zh) | 存储器系统中的写入积分的主动返回 | |
US11113198B2 (en) | Timed data transfer between a host system and a memory sub-system | |
US11709632B2 (en) | Input/output size control between a host system and a memory sub-system | |
US20210271424A1 (en) | Quality of service control for read operations in memory systems | |
CN112585570B (zh) | 存储器系统中用于提高命令总线利用率的控制器命令调度 | |
US11294820B2 (en) | Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system | |
CN112805676B (zh) | 基于数据总线模式对读取操作和写入操作的调度 | |
CN113360089B (zh) | 用于存储器子系统的命令批处理 | |
CN113424165B (zh) | 在存储器子系统处的编程操作的中断 | |
CN114556312A (zh) | 在混合式dimm中管理数据相依性以用于无序处理 | |
US11782643B2 (en) | Partial execution of a write command from a host system | |
CN113012741B (zh) | 用于存储器子系统的媒体管理的弹性缓冲器 | |
CN112447216B (zh) | 命令延迟 | |
US12112786B2 (en) | Command scheduling component for memory | |
CN118692519A (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 |