CN112447216B - 命令延迟 - Google Patents
命令延迟 Download PDFInfo
- Publication number
- CN112447216B CN112447216B CN202010875804.1A CN202010875804A CN112447216B CN 112447216 B CN112447216 B CN 112447216B CN 202010875804 A CN202010875804 A CN 202010875804A CN 112447216 B CN112447216 B CN 112447216B
- Authority
- CN
- China
- Prior art keywords
- command
- component
- memory
- active
- memory device
- 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 claims abstract description 200
- 230000004044 response Effects 0.000 claims abstract description 84
- 238000000034 method Methods 0.000 claims description 86
- 230000003111 delayed effect Effects 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 23
- 230000000694 effects Effects 0.000 claims description 8
- 238000010926 purge Methods 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 21
- 238000003860 storage Methods 0.000 description 19
- 238000007726 management method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011065 in-situ storage Methods 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
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
- G11C7/222—Clock generating, synchronizing or distributing circuits within memory device
-
- 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/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address interface arrangements, e.g. address buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种命令延迟。一种设备包括存储器组件、延迟组件和耦合到所述延迟组件的命令组件。所述命令组件可以被配置成将接收到的与访问所述存储器组件中的物理地址相关联的命令输入到执行队列中并且将所述命令标记为活动。所述命令组件可以被配置成将所述活动命令发送到所述存储器组件以被执行。所述命令组件可以被配置成响应于经由所述延迟组件从所述存储器组件接收到指示所述活动命令已被执行的消息而从所述执行队列中清除所述活动命令。所述延迟组件可以被配置成在将所述消息发送到所述命令组件之前将来自所述存储器组件的所述消息延迟特定的时间段。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,并且更明确地说,涉及命令延迟。
背景技术
存储器子系统可以包括存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。通常,主机系统可利用存储器子系统在存储器组件处存储数据以及从存储器组件检索数据。
发明内容
实施例涉及一种设备,其包含:存储器装置;延迟组件;以及命令组件,其耦合到延迟组件,其中命令组件被配置成:将接收到的与访问存储器装置中的物理地址相关联的命令输入到执行队列中并且将命令标记为活动;将活动命令发送到存储器装置以被执行;以及响应于从存储器装置经由延迟组件接收到指示活动命令已被执行的消息,从执行队列中清除活动命令;其中延迟组件被配置成:在将消息发送到命令组件之前,将来自存储器装置的消息延迟特定的时间段。
另一实施例涉及一种方法,其包含:接收命令,其与存储器装置的物理地址相关联;跟踪命令及其相关联的物理地址以及是否已经使用执行队列来执行命令;从存储器装置接收指示命令已被执行的消息,其中消息包括用于标识执行队列中的命令的命令标识(ID);在从执行队列中清除命令之前,由处理装置在接收到消息时延迟特定的时间段。
另一实施例涉及一种系统,其包含:存储器装置;以及处理装置,其耦合到存储器装置以执行包含以下的操作:接收命令,所述命令与存储器装置中的物理地址相关联;跟踪接收到的命令中的哪些是:待定命令,其中待定命令指示先前接收到的命令所关联的物理地址与待定命令所关联的物理地址相同;或者活动命令,其中活动命令指示在相应活动命令之前没有接收到具有相同物理地址的要执行的命令,并且命令中的每一个与在命令组件中标识相应命令的命令标识(ID)相关联;接收从存储器装置发送的响应,响应具有与已被执行的活动命令相对应的命令ID;以及响应于从存储器装置接收到响应,从命令组件清除与命令ID相关联的活动命令;其中存储器装置发送响应与命令组件清除活动命令之间的时间段相对于写入命令和读取命令不同。
附图说明
通过下面给出的详细描述和本公开的各种实施例的附图,将更全面地理解本公开。
图1示出了根据本公开的一些实施例的包括存储器子系统的实例计算环境。
图2示出了根据本公开的一些实施例的与命令跟踪相关联的命令流水线的实例。
图3是根据本公开的一些实施例的使用命令组件的实例方法的流程图。
图4A-D各自是根据本公开的一些实施例的对应于使用命令组件的方法的实例计算环境。
图5是根据本公开的一些实施例的对应于使用命令组件的方法的实例计算环境。
图6A-6C各自是根据本公开的一些实施例的对应于使用命令组件的方法的实例计算环境。
图7是根据本公开的一些实施例的命令跟踪的实例方法的流程图。
图8是可以在其中操作本公开中的实施例的的实例计算机系统的框图。
具体实施方式
本公开的各方面针对包括命令延迟的存储器子系统。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的混合。以下结合图1来描述存储装置和存储器模块的实例。一般来说,主机系统可以利用包括一或多个存储器组件(例如存储数据的存储器装置)的存储器子系统。主机系统可以提供要存储在存储器子系统中的数据,并且可以请求从存储器子系统中检索数据。
存储器组件可包括存储来自主机系统的数据的非易失性存储器装置。非易失性存储器装置是一或多个管芯的封装。可以将封装中的管芯分配给用于与存储器子系统控制器通信的一或多个通道。非易失性存储器装置包含单元(即,存储信息的电子电路),所述单元被分组为页以存储数据位。非易失性存储器装置可包括三维交叉点(“3D交叉点”)存储器装置,所述三维交叉点存储器装置是可以结合可堆叠交叉网格化数据访问阵列基于体电阻的改变而执行位存储的非易失性存储器的交叉点阵列。这种非易失性存储器装置可以将跨越晶粒和通道的页分组以形成管理单元(MU)。MU可以包括用户数据和对应的元数据。存储器子系统控制器可以将用户数据和相应的元数据作为管理单元发送到存储器装置以及从存储器装置接收用户数据和相应的元数据。非易失性存储器装置的另一实例是与非(NAND)存储器装置。对于NAND型存储器,可将页分组以形成块。以下结合图1来描述非易失性存储器装置的其它实例。
主机系统可以将访问请求(例如,写入命令、读取命令)发送到存储器子系统,例如将数据存储在存储器子系统处的存储器装置上以及从存储器子系统上的存储器装置读取数据。由主机请求指定的要读取或写入的数据在下文中被称为“主机数据”。主机请求可以包括主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、命名空间),所述逻辑地址信息是主机系统与主机数据相关联的位置。逻辑地址信息(例如LBA、命名空间)可以是主机数据的元数据的一部分。
存储器子系统可以将逻辑地址信息映射到与存储器子系统上的一或多个存储器装置相关联的物理地址(例如,物理MU地址、物理块地址),并且将主机数据写入到物理地址和/或从物理地址读取主机数据。存储器子系统(例如,SSD)可以包括可以跟踪命令和/或防止对与存储器装置相关联的物理地址的访问的计算组件。在一些常规方法中,可能无法跟踪对特定物理地址位置的访问,并且访问次序可能重叠或在时间上太接近,从而导致访问不正确的数据并且将不正确的数据存储回存储器装置。
本公开的各方面通过使用后续命令对存储器中的同一物理访问的访问中引入延迟来解决以上和其它缺陷。更具体地说,为了执行与物理地址相关联的后续命令,从命令组件中清除先前接收到的与物理地址相关联的命令。可以有意地延迟已被执行的被跟踪命令的清除,从而延长防止后续命令对相关联的物理地址的访问的阻断。在执行命令之后引入的这种延迟可以防止多次访问的重叠或者防止时间太接近的多次访问并且避免数据中的错误。
图1示出了根据本公开的一些实施例的包括存储器子系统110的实例计算环境100。存储器子系统110可以包括介质,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或其组合。
存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的混合。存储装置的实例包括固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用闪存(UFS)驱动器和硬盘驱动器(HDD)。存储器模块的实例包括双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)和非易失性双列直插式存储器模块(NVDIMM)。
计算环境100可以包括耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1示出了耦合到一个存储器子系统110的主机系统120的一个实例。主机系统120例如使用存储器子系统110将数据写入存储器子系统110以及从存储器子系统110读取数据。如这里所使用的,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有介入组件),无论是有线还是无线,包括例如电、光、磁等的连接。
主机系统120可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人驾驶飞机、火车、汽车或其它运输工具)、启用物联网的装置、嵌入式计算机(例如,包括在交通工具、工业设备或联网的商业装置中的嵌入式计算机)或包括存储器和处理装置的此类计算装置。主机系统120可以经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包括但不限于串行高级技术附件(SATA)接口、快速外围组件互连(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接SCSI(SAS)等。物理主机接口可以用于在主机系统120与存储器子系统110之间传输数据。主机系统120还可以在存储器子系统110通过PCIe接口与主机系统120耦合时利用NVM Express(NVMe)接口来访问存储器组件(例如,存储器装置130)。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。
存储器装置可以包括不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包括与非(NAND)型快闪存储器和原位写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可以结合可堆叠的交叉网格数据访问阵列,基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中可以在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。
尽管描述了例如3D交叉点型和NAND型存储器的非易失性存储器装置,但是存储器装置130可以基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选择存储器、其它基于硫族化物的存储器、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、或非(NOR)闪存以及电可擦除可编程只读存储器(EEPROM)。
一种类型的存储器单元(例如,单级单元(SLC))可以每单元存储一个位。其它类型的存储器单元(例如,多级单元(MLC)、三级单元(TLC)和四级单元(QLC))可以每单元存储多个位。在一些实施例中,存储器装置130中的每一个可以包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或其任何组合。在一些实施例中,特定存储器装置可以包括存储器单元的SLC部分和MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可以分组为指代用于存储数据的存储器装置的逻辑单元的页或码字。对于某些类型的存储器(例如,NAND),可以将页分组以形成块。某些类型的存储器(例如3D交叉点)可以将跨越晶粒和通道的页分组以形成管理单元(MU)。
存储器子系统控制器115(或为简单起见为控制器115)可以与存储器装置130通信以执行例如在存储器装置130处读取数据、写入数据或擦除数据的操作及其它此类操作。存储器子系统控制器115可以包括硬件,例如一或多个集成电路和/或分立元件、缓冲存储器或其组合。硬件可以包括具有专用(即,硬编码)逻辑的数字电路以执行这里描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子系统控制器115可以包括被配置成执行存储在本地存储器103中的指令的处理器(处理装置)117。在示出的实例中,存储器子系统控制器103的本地存储器115包括嵌入式存储器,所述嵌入式存储器被配置成存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程和例行程序的指令,包括处理存储器子系统110与主机系统120之间的通信。
在一些实施例中,本地存储器103可以包括存储存储器指针、提取的数据等的存储器寄存器。本地存储器103还可以包括例如用于存储微代码的只读存储器(ROM)。而图1中的实例存储器子系统110已被示出为包括存储器子系统控制器115,在本公开的另一实施例中,存储器子系统110可以不包括存储器子系统控制器115,并且可以作为替代依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
一般来说,存储器子系统控制器115可以从主机系统120接收命令或操作并且可以将命令或操作转换成指令或适当命令以实现对存储器装置130的所需访问。存储器子系统控制器115可以负责与存储器装置130相关联的其它操作,例如损耗平衡操作、垃圾收集操作、检错和纠错码(ECC)操作、加密操作、高速缓存操作以及逻辑地址(例如,逻辑块地址(LBA)、名字空间)和物理地址(例如,物理MU地址、物理块地址)之间的地址转换。存储器子系统控制器115还可以包括主机接口电路以通过物理主机接口与主机系统120通信。主机接口电路可以将从主机系统处接收到的命令转换成命令指令以访问存储器装置130以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可以包括未示出的附加电路或组件。在一些实施例中,存储器子系统110可以包括高速缓存或缓冲器(例如,DRAM)和地址电路(例如,行解码器和列解码器),所述地址电路可以从存储器子系统控制器115接收地址并且解码所述地址以访问存储器装置130。
在一些实施例中,存储器装置130包括本地介质控制器135,所述本地介质控制器135结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可以从外部管理存储器装置130(例如,在存储器装置130上执行介质管理操作)。在一些实施例中,存储器装置130是受管存储器装置,所述存储器装置是与本地控制器(例如,本地控制器135)组合的原始存储器装置,用于同一存储器装置封装内的介质管理。受管存储器装置的一个实例是受管NAND(MNAND)装置。
存储器子系统控制器115包括命令组件113,所述命令组件可以被配置成跟踪与用于执行的命令指令相关联的存储器的物理地址。命令组件113可将命令及其相关联的物理地址输入到执行队列中,并在条目中指示所述命令是否是活动的(指示相关联的命令正被发送到存储器组件以供执行)、待定的(指示相关联的命令正等待在执行队列中直到授予许可或允许发送所述命令以供执行)和/或在相关命令完成时从执行队列中清除命令条目。所述指示可以包括设置位、设置旗标或可以被参考的另一指示符。如图1所展示的,命令组件113可以包括各种电路119以便于跟踪命令及其与命令相关联的相关联的物理地址。例如,电路119可以包括ASIC、FPGA、状态机和/或其它逻辑电路形式的专用电路,所述专用电路可以允许命令组件113跟踪和/或监视命令和对应的物理地址。
在一个实施例中,命令组件113包括内容可寻址存储器(CAM)组件。在CAM中,可以将搜索数据与已存储的数据表进行比较,由此可以返回匹配数据的地址。在此情况下,可使用“命中”和“未命中”来搜索CAM中的条目,“命中”指示针对特定地址的命令已存在于CAM中(例如,传入命令所针对的物理地址与已存在于CAM中的命令的物理地址匹配),“未命中”指示针对特定地址的命令未存在于CAM中(例如,传入命令所针对的物理地址与已存在于CAM中的命令的物理地址不匹配)。如本文中所进一步描述的,在各种实施例中,CAM未命中导致将传入命令标记为“活动”(例如,准备好发送到存储器组件以供执行),且CAM命中导致将传入命令标记为“待定”,并且引入延迟以防止待定命令的状态改变为活动,直到完成对同一地址的先前活动命令之后的特定的时间段为止。
存储器子系统控制器115可以包括延迟组件181。在一些实施例中,延迟组件181是先进先出(FIFO)缓冲器。延迟组件181可以接收来自存储器装置140的数据并且可以延迟数据被传送到命令组件113达特定时间段。在一些实施例中,响应于与写入命令相关联的数据比响应于与读取命令相关联的数据可以延迟得更长。举例来说,响应于存储器装置140发送指示已在存储器装置140中完成写入命令的消息或响应,延迟组件181可以将消息或响应延迟得比完成读取命令的情况长。在一些实施例中,指示读取命令已被执行的消息或响应可以完全绕过延迟组件181并且被直接传送到命令组件113,如以下将进一步描述的。
如结合图2更详细地描述的,可以在执行多个命令之前将数据传送到命令电路119以便验证存储器中的物理地址位置未被另一命令作为目标。例如,命令电路119可以用于通过维护接收到的命令的列表以及判断命令是待定的还是活动的来跟踪和/或监视多个命令的执行,并且可以在命令已被执行时清除命令条目。与其中即使与相同物理地址相关联的另一命令可能尚未完成执行也不阻断命令的执行的方法相反,如下所述,对存取物理地址的阻断可以用于防止在完成所述命令中的至少一个的执行之前与相同物理地址相关联的一个以上命令的重叠。因此,一次仅执行对特定物理地址的一个命令,其中下一待定命令被保持(或阻断),直到来自存储器的响应返回与在特定物理地址处执行的命令相关联的命令ID为止。
在先前的一些方法中,作为实例,主机120可以访问存储器140中的物理位置,并且固件(例如,控制器的固件)可以对访问存储器作出后续请求,其在时间上非常相近,以至于主机120的访问仍在发生或刚刚发生,存储器就可以具有来自访问的可影响固件的访问的某些滞后效应。同样地,主机120可以访问存储器140并且将处理的中间结果存储回存储器,而固件想要访问主机的处理结果,即使该处理尚未完成。这些情况可能导致被视为最终结果的数据和中间结果出错。举例来说,主机120可以访问数据以对数据执行多个读取操作、写入操作、分析操作等,并且此类操作的最终数据可能由于重叠数据访问而出错。例如,固件可以访问数据以刷新数据、执行多个时钟周期操作等,并且期望刷新或执行对最终数据的操作。
如下所述,为了避免对存储器中相同物理位置处的相同数据的重叠访问,可以跟踪命令以及其相关联的地址,并且如果初始访问尚未完成,则可以阻断对相同物理地址的后续访问尝试。此外,访问相同物理访问的尝试可以被延迟到超过先前命令的完成。例如,主机可以请求对特定物理地址的访问以执行命令(例如对存储在第一物理地址中的数据的写入操作)。命令组件可以跟踪执行队列中的特定物理地址并将与该特定物理地址相关联的命令条目标记为“活动”。有效指定可以指示访问特定物理地址处的数据的请求已被接收并且被发送到存储数据的存储器组件。一旦已经对特定物理地址处的数据执行了命令,则指示已经执行了命令的响应可以在被发送到命令组件之前被延迟,并且与特定物理地址相关联的命令条目的“活动”状态的移除可以被延迟和/或命令条目从执行队列的移除可以被延迟。一旦延迟完成,就允许随后访问特定物理地址处的数据的请求。
如果在第一请求的命令条目仍然“活动”时在命令组件处接收到访问特定物理地址处的数据的后续请求,则命令组件可以将后续请求的物理地址与执行队列中的物理地址进行比较(这将导致后续请求的物理地址与初始请求的特定物理地址的匹配)。由于在该物理地址处已经存在命令的“活动”状态,因此随后的请求可以被标记为“待定”,可以被输入到执行队列中,并且与和特定物理地址条目相关联的先前命令条目链接。指示初始命令已被执行的响应可被发送到延迟组件(例如,FIFO组件),并且一旦被称为延迟的特定时间段已完成,则初始命令条目可以被从执行队列中清除,并且后续命令条目(由于执行队列中的链接)可以被发送到存储器组件以供执行。在命令的每次执行之后,可以在执行队列中搜索到要执行的后续命令条目的链接(这将包括在已经接收到的命令指令被首先处理时执行与已经接收到的相同物理地址相关联的命令的任何请求)。
以此方式,尽管命令被列为“待定”并等待执行先前接收到的命令,但是随后接收到但与存储器组件中的不同物理地址相关联的命令可以被执行,直到允许执行下一链接命令为止。命令执行的排序可以是基于时间的,直到物理地址匹配为止,在这种情况下,定时可以基于对与相同物理地址相关联的命令的执行的确认来重新排序,如上所述。
图2示出了根据本公开的一些实施例的与命令跟踪相关联的命令流水线201的实例。流水线201可以包括介质,例如存储器装置240(例如,存储器组件),所述介质可以类似于图1中所说明的存储器装置140。另外,命令流水线201可以包括命令组件213,所述命令组件可以类似于图1中示出的命令组件113。命令组件213可以通过多路复用器(“mux”)224和逻辑到物理(“L2P”)组件226接收主机命令(例如,从主机接收到的命令)223和/或固件命令(例如,可经执行以执行与固件命令相关联的功能的固件)225。例如,主机(例如,主机120)可以发送包括主机命令223的请求以对存储在存储器240中的数据执行读取操作。主机可以发送包括主机命令223的请求以对存储在存储器240中的数据执行写入操作。例如,可以执行固件以发送包括固件命令225的请求,以刷新存储在存储器240中的数据。可以执行固件以发送包括固件命令225的请求,以对存储在存储器240中的数据执行与特定时钟周期相关联的操作。在主机命令223和固件命令225两者被一前一后地接收的情况下,存储器240可能被访问,其在时间上非常接近,以至于可能出现对存储在存储器中的数据的影响,改变存储在数据中的值和/或在数据中和在对数据执行的后续操作中产生错误。
主机可以发送或固件可以被执行以发送包括主机命令223或固件命令225的请求,以通过经由多路复用器224发送请求来对存储器240中的数据执行操作。如果同时从主机和/或通过固件接收到命令,则可以执行简单的循环优先级。来自一个接口(例如,主机120或固件)的命令的请求流可以按先进先出(FIFO)次序处理,并且来自所述接口中的任意一个的请求也可以如同单个流按FIFO顺序相对于彼此那样处理。在一些实施例中,组件可以在多路复用器224和L2P组件226之间,并且可以将具有多个被标识的物理地址位置的命令分割成标识单个物理地址位置的单个命令。L2P组件226将逻辑地址映射到物理地址。
所发送的请求最初可以被发送到L2P组件226以将与逻辑地址相关联的数据转换成与物理地址相关联。例如,主机命令223可以被发送到多路复用器224,并且可以与存储器240中的逻辑地址相关联,并且L2P组件226可以将数据与物理地址相关联。在一个实例中,与固件命令225的执行相关联的地址可能已经是物理地址。固件命令225可以使用逻辑到物理转换从L2P组件226发送到命令组件213。在一些实施例中,拆分组件(未示出)可以在命令组件213和存储器240之间。拆分组件可以将标识多个通道和/或管芯的命令拆分成标识单个通道和/或管芯的单个命令。在这个实例中,命令组件213可以首先向拆分组件发送要执行的命令,然后拆分组件将所处理的命令传送到存储器240以供执行。
当从主机或通过在命令组件213处执行固件而接收到命令时,命令组件213确定与所述命令相关联的物理地址是否也与已接收到的命令相关联。命令组件213中的执行队列可以列出指示所有已接收到的命令连同其对应物理地址的条目。执行队列中的条目中的每一个可以指示命令是活动的(指示命令已被发送到存储器以供执行)还是待定的(指示命令被延迟或被阻断发送到存储器,直到指示与同一物理地址相关联的所有先前接收到的命令已被执行的响应为止)。
为了避免对存储器240的访问的重叠,命令组件213可以防止一个命令对存储在存储器240的同一物理地址中的数据的访问(因为可能已经使用了其它命令来访问该同一物理地址)直到初始访问已经完成。举例来说,可以在命令组件213处接收与特定物理地址相关联的命令。可以将特定物理地址与执行队列中的条目进行比较,以确定该特定物理地址是否已经在执行队列中并且与先前接收到的命令相关联。在执行队列中为接收到的命令生成条目,并且如果存在与特定物理地址相关联的先前接收到的命令的条目,则该条目被指示为待定。在待定命令的情况下,将链接输入到活动命令条目中,使得当执行活动命令时,所述链接被访问并且指示命令组件213处理随后接收到的与同一物理地址相关联的命令。
执行队列中的每个条目包括用于标识队列中的特定条目的命令标识(ID)、与接收到的命令相关联的特定物理地址以及条目的状态(在该实例中,该状态将是待定的)。在一个实例中,可能已经有先前接收到的命令,但是如果先前接收到的命令已被执行并且从执行队列中清除,则接收到的命令可以被指示为活动并且被发送用于执行。如果特定物理地址和与执行队列中的命令相关联的另一物理地址不匹配,则将接收到的命令的条目指示为活动并且将命令发送到存储器用于执行。
在先前接收到的命令是活动的并且还将被执行的情况下,可以延迟或保持待定命令条目,直到从存储器240接收到如箭头232所示出的指示活动命令已被执行的响应。一旦接收到响应232,(现在已被执行的先前接收到的命令的)活动命令条目中的链接可以指示命令组件213接下来处理接收到的命令。此外,如箭头233所示出的响应可以被发送到主机或附加固件以被执行,其验证命令已被执行。可以清除(先前接收到的命令的)活动命令条目,并且可以将(接收到的命令的)待定命令条目更新为活动命令条目。然而,如果在先前接收到的命令之后但在接收到的命令之前发送了中间命令,则接收到的命令将被延迟,直到中间命令被执行。在这个实例中,先前接收到的命令条目将链接到中间命令条目,并且中间命令条目将链接到接收到的命令条目。以这种方式,可以跟踪与同一物理地址相关联的命令的次序以避免对物理地址的重复访问。
在一些实施例中,如下面将结合图3-7进一步描述的,来自存储器240的响应可以如箭头234所指示,被发送到延迟组件281(例如图1中的延迟组件181)并且被延迟特定的时间段。在特定时间段完成(或期满)时,如箭头236所指示,可以将响应发送到命令组件213。在一些实施例中,当命令是写入命令时,响应可以在延迟组件281处被延迟,而当命令是读取命令时,响应可以绕过延迟组件281。在一些实施例中,与写入命令相关联的响应可以由延迟组件281延迟并且与读取命令相关联的响应可以发送到延迟组件281,但可以不由延迟组件281延迟。
在接收到对应于不同物理地址并且不对应于执行队列中的另一物理地址的命令的情况下,所述命令可以被指示为活动并且以常规FIFO方式(例如,以它被接收的时间顺序)被执行。这样,命令相对于具有相同物理地址的其它命令被延迟,但是具有不同物理地址的命令以它们被接收的时间顺序被执行,而不存在已经在执行队列中并且与另一命令相关联的不同物理地址。
在一些实施例中,写入阻断FIFO可以用于固件写入(FW)命令。写入阻断FIFO的逻辑可以确保被阻断的写入(由于与活动命令的冲突而被标记为待定)也将导致随后的写入在其后以FIFO顺序被阻断。因为FW数据缓冲器可以仅提供FIFO访问而不提供随机访问,所以这可以以与从主机到达的写入数据(例如,主机命令223)或作为固件(例如,固件命令225)相同的顺序对准要转发的所有FW写入命令。
例如,以这种方式使用写入阻断FIFO可以保持所有写入按照它们被接收的顺序执行。在这个实例中,FW写入可以按顺序执行,因为写入数据从固件以与命令相同的顺序到达。因此,如果FW写入中的一个由于与较早命令的冲突而被阻断,则它被输入到写入阻断FIFO中并且变为待定,并且来自固件的所有后续写入命令也将在第一写入命令之后以FIFO顺序输入到写入阻断FIFO中。一旦从命令组件中清除了较早命令的活动状态,写入阻断FIFO中的第一待定写入将被释放并加载到命令组件中并变为活动。在写入阻断FIFO顶部的任何随后的写入也将被释放(如果它在命令组件中没有冲突),并且将在命令组件中变为活动。这个过程可以继续,直到写入阻断FIFO为空或者写入中的一个命中命令组件中的冲突。如果在写入阻断FIFO顶部的写入命令碰巧命中命令部分中的冲突,则它将不会在那时被释放,并且它后面的所有后续写入命令也将被保持。这可以保持写入命令的顺序。在一些实例中,可以从一个输入端口(例如从固件)接收写入命令并使其进入写入阻断FIFO,并且来自不同输入端口(例如来自主机)的所有写入可以绕过写入阻断FIFO并直接进入命令组件。这可以允许来自主机的写入命令不按顺序执行,而来自固件的写入命令仅按顺序执行。
图3是根据本公开的一些实施例的使用命令组件的实例方法的流程图340。方法340可以由处理逻辑来执行,所述处理逻辑可以包括硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法340由图1中的命令组件113和/或图2中的命令组件执行。尽管以特定的次序或顺序示出,但除非另有说明,可以修改过程的顺序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的顺序执行,并且一些过程可以并行执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程也是可能的。
在框351,该方法开始,并且在352,命令被接收。命令可以在命令组件(例如分别在图1和2中的命令组件113、213)处接收。在框354,响应于接收到命令,方法340可以包括确定指向或对应于以同一物理地址为目标的另一活动或待定命令先前是否已被接收到并被列在执行队列中。在一个实例中,执行队列可以包括128个命令的列表的条目位置。当接收到命令时,可以在这些入口位置之一处将每个命令输入到执行队列中。执行中的条目中的每一个可以由指示特定命令的对应命令标识(ID)来标识,所述命令标识用于在后续操作中定位该特定命令(例如从执行队列中清除该命令)。该确定可以包括将接收到的命令和相关联的物理地址与执行队列中的条目中的每一个进行比较。在框362,方法340可以包括,响应于执行队列中没有与接收到的命令匹配的条目(指示执行队列中没有命令与和接收到的命令相同的物理地址相关联),接收到的命令及其相关联的物理地址可以作为活动被输入到执行队列中并且被发送到存储器用于执行。
在框356,方法340可以包括,响应于执行队列中匹配所接收到的命令的条目(指示先前接收到的命令与存储器中与当前接收到的命令相同的物理地址相关联),接收到的命令及其相关联的物理地址作为待定被输入到执行队列中并且将所接收到的命令链接到匹配的先前命令。这样,执行队列中的待定条目指示命令已被接收但被延迟直到先前接收到的命令(具有相同的物理地址)已被执行。在一些实施例中,与相同物理地址全部相关联的条目也可基于接收时间来排序以维持命令执行的顺序(其也将基于具有相同物理地址的命令之间的链接来维持)。
在框358,确定是否已经执行了先前的命令。如果已经执行了先前的命令(由接收到的响应指示),则从执行队列中清除先前的命令的条目,如框360所示。如下面将结合图4A-4D描述的那样,可以延迟发送到命令组件的响应。例如,写入命令可以由存储器执行,并且存储器可以向命令组件发送响应。然而,可以在存储器和命令组件之间的延迟组件处延迟响应。这样,响应被延迟了特定的时间段,从而延迟了对命令组件的执行队列中相关联的写入命令的清除。接收到的命令可以被延迟并保持待定,直到从存储器接收到指示先前接收到的命令已被执行的响应。来自存储器的响应可以包括与该条目相关联的命令ID,使得被执行的命令的条目可以位于执行队列中并被清除。在框362,响应于清除先前接收到的命令条目,接收到的命令条目可以被输入为活动命令并且被发送到存储器用于执行。
响应于执行队列中没有与接收到的命令匹配的条目(指示先前接收到的命令与存储器中的不同物理地址相关联),如方法340的框362所示,接收到的命令及其相关联的物理地址作为活动被输入到执行队列中,并且接收到的命令被发送到存储器用于执行。接收到的命令还可以被标记为执行队列中的“最老”条目,以维持命令的时间顺序。
在框364,可以确定是否从存储器接收到指示所接收到的命令已被执行的响应。接收到的命令可以保持为执行队列中的活动条目,直到从存储器接收到指示所接收到的命令已被执行的响应。在366,当接收到指示接收到的命令已被执行的响应时,可以清除执行队列中对应于先前接收到的命令的条目。在368,响应于清除所接收到的命令条目,可以针对要执行的下一命令检查执行队列。
在执行上述流程图340的方法的同时,如果接收到与同一物理地址相关联的附加命令(在接收接收到的命令之后但在执行接收到的命令之前),则该附加命令将已被链接到所接收到的命令并且被指示为待定。检查执行队列是否有下一命令将识别到附加命令的链接,并且附加命令将被改变为活动命令并且被发送到存储器用于执行。然而,如果在执行流程图340的方法的同时接收到与不同物理地址相关联的后续命令,则对执行队列的检查将标识要以按时接收到后续命令的顺序发送到存储器用于执行的后续命令。例如,如果在接收接收到的命令之后但在执行先前接收到的命令之前接收到后续命令中的一个,则所述将后续命令中的一个发送到存储器用于执行(因为接收到的命令将仍然是待定命令)。
图4A-D各自是根据本公开的一些实施例的对应于使用命令组件的方法的实例计算环境。图4A是对应于使用命令组件413的方法的实例计算环境405-1。命令组件413可以包括多个条目471-1、471-2、…、471-N(以下统称为条目471)。条目471可以用于输入写入请求(并因此输入写入或读取命令)及其相关联的物理地址以及状态指示符(例如第一条目471-1的状态指示符473-1)。命令组件413可以用作内容可寻址存储器(CAM)以确定接收到的请求的物理地址是否与条目471中的一个的对应物理地址匹配(当存在匹配时称为CAM“命中”并且当不存在匹配时称为CAM“未命中”)。
命令组件413可接收由箭头472指示的第一写入请求,所述写入请求包括与存储器中的第一物理地址相关联的第一写入命令。第一写入请求可以被输入到命令组件的第一条目471-1中。第一条目471-1可以包括状态部分473-1,所述状态部分473-1指示第一条目471-1是活动的还是待定的。由于这是第一写入请求并且不存在与相同物理地址相关联的其它活动命令,因此第一条目471-1被指示为“活动”。响应于第一写入请求是命令组件413中的活动条目,可以将第一写入请求(例如,第一写入命令)发送到存储器,如箭头474所指示。
图4B是对应于使用命令组件413的方法的实例计算环境405-2。在第一写入请求被发送到存储器之后(如图4A所示出的),如箭头476所指示,第二写入请求可以被发送到命令组件413。将第二写入请求的物理地址与命令组件413中的当前条目进行比较,如框475所指示,以确定是否存在与接收到的第二写入请求相关联的物理地址和已经作为条目存储在命令组件413中的物理地址的匹配,如箭头477所展示的。在这个实例中,与第二写入请求相关联的物理地址和与第一写入请求相关联的物理地址相匹配,因此存在匹配。由于该匹配,第二写入请求被输入为第二条目471-2,并且其状态指示符473-2是“待定”。
图4C是对应于使用命令组件413的方法的实例计算环境405-3。在将第二写入请求输入到命令组件413的执行队列中作为待定条目之后,指示写入命令已完成的响应(“响应写入完成”)可以被发送到主机和/或固件,如箭头482所指示,并且还被发送到延迟组件(例如,延迟FIFO)481,如箭头484所指示。所述响应可以同时或同步地发送到主机/固件和延迟组件481。延迟组件481可以将响应延迟特定的时间段并且防止响应在主机/固件可接收响应的同时去往命令组件413。特定的时间段可以在大约0-5微秒之间、在大约20-30微秒之间,大约25微秒、2微秒等。例如,特定存储器单元技术如果在特定的时间段内在先前的写入操作之后被读取或写入则可能易于出错。例如,如果存储器单元在先前的写入操作的0-5微秒内被写入,则可能发生错误,因为存储器单元没有足够的时间来平衡或达到指示特定值的期望电压。
在一些实施例中,延迟组件481可以是SRAM延迟FIFO,其是保存用于写入完成的命令ID的旋转FIFO。FIFO的深度可以确定延迟。读取和/或写入指针可以周期性地递增(例如在每个时钟周期)。例如,写入指针可以跟随读取指针,并且在执行写入命令之后,读取指针可以在SRAM FIFO的整个深度被读取之后命中相同的位置。例如,如果SRAM是8,192深并且周期等于5纳秒,则延迟可以是40.9微秒(例如,8,129×5ns-40.9微秒)。
当写入完成响应到达延迟FIFO时,写入完成响应可以包括输入SRAM延迟FIFO的命令ID(标识命令组件413中的写入命令)。当从SRAM延迟FIFO发送出命令ID时,命令ID用作对命令组件413的查找并从命令组件413清除。从命令组件413的活动写入命令的清除可以使得命令组件413通过被清除的写入命令的链接(如果写入命令具有与下一个写入命令相同的物理地址)去往执行队列中的下一个写入/读取命令,或者以其被接收的顺序去往下一个写入命令(如果下一个写入命令与不同的物理地址相关联)。
在一些实施例中,与正被执行的读取命令相关联的响应可以不在延迟组件481中被延迟,或者可以绕过延迟组件481并直接去往命令组件413(如结合图5所示出并描述的)。
图4D是对应于使用命令组件413的方法的实例计算环境405-4。在将响应发送到命令组件413(经由延迟组件481)之后,可以清除第一写入请求条目471-1(如图4D所示出的)。第二写入请求条目471-2是具有相同物理地址的下一个写入命令,并且状态指示符473-2被改变为“活动”。“活动”状态允许命令组件413向存储器发送第二写入请求(对于第二写入命令),如箭头488所指示。在存储器中执行第二写入命令,并且重复该方法(将响应发送回主机/固件和延迟组件481等)。
图5是根据本公开的一些实施例的对应于使用命令组件的方法的实例计算环境507。图5中示出的实例与存储器中读取命令的执行相关联。如图5所示出的,由箭头582指示的指示已完成读取命令的响应(“响应读取完成”)被同时或同步地发送到主机/固件和586到命令组件513。延迟组件581被示出为被旁路,因此在这个实例中响应不被延迟。
无论响应的延迟(指示命令的执行已经发生)是由延迟组件581的旁路还是由不延迟响应的延迟组件581引起,所示延迟发生在写入到写入(W2W)命令和/或写入到读取(W2R)命令之后,并且不发生在读取到写入(R2W)命令或读取到读取(R2R)命令之后。在这些情况下不同地对待初始读取操作,例如,因为与在写入操作之后立即读取或写入相比,如果在读取之后立即读取或写入,则存储器单元不易于出错。写入操作的性质可以对单元具有滞后效应(其在读取操作之后不会发生),并且如果在过于接近写入操作发生的后续时间内访问单元,那么其可能对单元执行的后续读取或写入操作具有负面影响。
图6A-6C各自是根据本公开的一些实施例的对应于使用命令组件的方法的实例计算环境。与图6A-6C相关联的方法包括使用计数器而不是延迟FIFO(如图4A-4D所描述的)来延迟来自存储器的指示命令执行的响应。图6A是计算环境609-1的实例。计算环境609-1包括命令组件613。
命令组件613可以包括多个条目671-1、671-2、…、671-N,其中命令连同对应的物理地址和相关联的状态指示符673-1、673-2等一起被输入。如所示出的,与第一写入命令相关联的第一写入请求可以被接收并且在命令组件613中作为第一条目671-1被输入。第一条目671-1可以具有指示为“活动”的状态指示符673-1,因为在这个实例中,先前没有接收到具有相同物理地址的命令。随后的第二写入请求可以被接收并作为第二条目671-2被输入。因为在这个实例中,这个第二写入请求与和第一写入请求相同的物理地址相关联,第二条目与“待定”的状态指示符673-2相关联且将保持待定直到第一写入请求完成为止。
图6B是根据本公开的一些实施例的对应于使用命令组件的方法的实例计算环境609-2。在这个实例中,响应于从存储器接收到“第一写入完成”,使用时间计数器690来确定延迟是否已期满并且可以清除写入命令。状态指示符673-1被改变为“延迟”,并且几个输入被用于确定延迟装置695中是否发生了延迟命中。这个“延迟”可以是和“活动”和“待定”状态并列的第三状态。3位时间延迟字段696(使用位9:7)用于每个条目。3位时间戳696中的时间计数器690的值可以在加法器697中被加到恒定值并且被存储到命令组件613的时间延迟字段691。响应于接收到第一写入完成响应,3位时间延迟时间戳696从时间计数器690被捕获并相加,并且一个百(100)位时间延迟694被加到3位时间戳696的加法器697。例如,如果时间计数器690每5纳秒递增一次(对于核心时钟周期),那么7位可以每0.64微秒触发一次。如果位9:7被捕获为时间戳696,则100位时间延迟694被添加并保存在时间延迟字段691中。所保存的时间延迟字段691可以与运行时间计数器690进行比较,并且比较命中(在延迟命中695处)将在大约2.56微秒之后的1.92微秒处发生。“+1”输入692可以被输入到多路复用器693以使得时间计数器690每周期增加+1,这可以保持相对的“实时”。
图6C是根据本公开的一些实施例的对应于使用命令组件的方法的实例计算环境609-3。一旦延迟命中发生,如结合图6B所示出和描述的,第二写入请求条目671-1可以被改变为“活动”的状态指示符673-1并且被发送到存储器,如箭头688所指示的。
图7是根据本公开的一些实施例的对应于命令组件的实例方法711的流程图。方法711可以由处理逻辑来执行,所述处理逻辑可以包括硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法711由图1中的命令组件113和/或图2中的命令组件213执行。尽管以特定的次序或顺序示出,但除非另有说明,可以修改过程的顺序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的顺序执行,并且一些过程可以并行执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程也是可能的。
在操作742,方法711包括接收(例如,在命令组件处接收)与存储器装置的物理地址相关联的命令。方法711可以进一步包含确定接收到的附加命令是否与物理地址相关联。响应于接收到的附加命令与物理地址相关联,所述方法可以包括将接收到的命令输入到执行队列中并标记为待定。响应于所接收到的附加命令与不同于所述物理地址的物理地址相关联,所述方法可以包括将接收到的附加命令输入到执行队列中,并且将接收到的附加命令发送到存储器组件以被执行。所述方法可以包括,响应于附加命令被标记为待定并且响应于命令被从执行队列中清除,将附加命令从待定改变为活动。
在操作744,方法711包括跟踪(例如,由命令组件跟踪)命令及其相关联的物理地址,以及是否已使用执行队列来执行命令。
在操作746,方法711包括从存储器装置处接收(例如,在延迟组件处接收)指示命令已被执行的消息,其中所述消息包括用于标识执行队列中的命令的命令标识(ID)。方法711还可以进一步包括接收用于标识执行队列中的命令的命令标识(ID),并且命令ID用于清除命令。
在操作748,方法711包括在接收到消息时延迟从执行队列中清除命令的特定时间段。方法711可以进一步包括在特定时间段期满时经由延迟组件向命令组件发送消息。在一些实例中,对于执行的写入命令和执行的读取命令,特定时间段可以不同。在一些实例中,执行的写入命令的特定时间段比执行的读取命令的特定时间段长。
所述方法可以进一步包括在接收到消息时从执行队列中清除命令。所述方法可以进一步包括在经由延迟组件将消息发送到命令组件之前经由存储器组件将消息发送到发送命令的主机。所述方法可以进一步包括经由存储器组件将消息发送到发送命令的主机。所述方法可以进一步包括在将消息发送到主机的同时将消息发送到延迟组件。消息的接收可以在去往命令组件的途中在延迟组件中被延迟。所述方法可以进一步包括在从执行队列中清除命令之前经由存储器组件将消息发送到发送命令的主机。
在本公开的一些实施例中,方法711进一步包括响应于接收到的命令与不与另一命令相关联的物理地址相关联,将所接收到的命令指定为活动命令。方法711进一步包括响应于接收到的命令与物理地址相关联而将接收到的命令指定为待定命令,所述物理地址与活动命令相关联,其中活动命令是尚未执行的命令。方法711进一步包括,响应于将接收到的命令指定为待定命令,将活动命令与待定命令链接。链接可以响应于正在执行的活动命令而引导命令组件执行待定命令。方法711进一步包括,响应于正在执行的活动命令,将待定命令指定为下一活动命令,并将下一活动命令发送到存储器组件以被执行。
图8示出了计算机系统841的实例机器,在所述机器中可以执行用于使机器执行本文讨论的一或多个方法的指令集。在一些实施例中,计算机系统841可以对应于主机系统(例如,图1中的主机系统120),所述主机系统包括、耦合到或利用存储器子系统(例如,图1中的存储器子系统110)或者可以用于执行控制器的操作(例如,执行操作系统以执行对应于图1中的命令组件113的操作)。在替换实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。所述机器可以作为客户机-服务器网络环境中的服务器或客户机、作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户机来操作。
所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥,或能够执行指定该机器要采取的动作的一组指令(顺序的或其它)的另一机器。此外,虽然示出了单个机器,但是术语“机器”还应当被理解为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的一或多个的机器的集合。
实例计算机系统841包括处理装置802、主存储器604(例如,只读存储器(ROM)、闪存、例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等的动态随机存取存储器(DRAM))、静态存储器806(例如,闪存、静态随机存取存储器(SRAM)等)以及数据储存系统818,它们经由总线830彼此通信。
处理装置802表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或者实现其它指令集的处理器,或者实现指令集组合的处理器。处理装置802还可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置802被配置成执行用于执行本文所讨论的操作和步骤的指令826。计算机系统841还可以包括网络接口装置808以通过网络820进行通信。
数据储存系统818可以包括机器可读存储介质824(也被称为计算机可读介质),所述可读存储介质824上存储有一或多个指令集826或软件,所述指令集826或软件体现本文描述的一或多个方法或功能。指令826还可以完全或至少部分地驻留在主存储器804内和/或处理装置802内,在其由计算机系统841执行期间,主存储器804和处理装置802也构成机器可读存储介质。机器可读存储介质824、数据储存系统818和/或主存储器804可以对应于图1中的存储器子系统110。
在一个实施例中,指令826包括用于实现与计算组件(例如,图1中的计算组件113)相对应的功能的指令。所述指令可以包括命令指令813和/或延迟指令881,所述命令指令813与用命令组件(例如图1中的命令组件113)执行操作相关联,所述延迟指令881与用延迟组件(例如分别在图1、2和4A-4D中的延迟组件181,281,481)执行操作相关联。尽管机器可读存储介质824在实例实施例中被展示为单个介质,但是术语“机器可读存储介质”应当被理解为包括存储一或多个指令集的一或多个介质。术语“机器可读存储介质”还应当被理解为包括能够存储或编码由机器执行的指令集并且使得机器执行本公开中的一或多个方法的介质。因此,术语“机器可读存储介质”应被认为包括但不限于固态存储器、光介质和磁介质。
前文详细描述的一些部分已经以对计算机存储器内的数据位的操作的算法和符号表示的方式来呈现。这些算法描述和表示是数据处理领域内的技术人员用来最有效地向本领域的其他技术人员传达其工作实质的方式。在此,算法通常被认为是导致期望结果的自相容操作序列。这些操作是需要对物理量进行物理操作的操作。通常,尽管不是必须的,这些量采取能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。主要出于通用的原因,将这些信号称为位、值、元件、符号、字符、项、数字等有时被证明是方便的。
然而,应当记住,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。本公开可以涉及计算机系统或类似的电子计算装置的动作和过程,该计算机系统或类似的电子计算装置将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和变换为类似地表示为计算机系统存储器或寄存器或其它这种信息存储系统内的物理量的其它数据。
本公开还涉及用于执行本文中的操作的设备。所述设备可以为预期目的而专门构造,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以存储在计算机可读存储介质中,例如但不限于,包括软盘、光盘、CD-ROM和磁光盘的各类型的盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或者适合于存储电子指令的介质的类型,其中的每一个都耦合到计算机系统总线。
这里给出的算法和显示并不固有地与特定计算机或其它设备相关。各种通用系统可以与根据这里的教导的程序一起使用,或者可以证明构造更专用的设备来执行该方法是方便的。用于各种这些系统的结构将在下面的描述中给出。此外,没有参考特定编程语言来描述本公开。应了解,可以使用各种编程语言来实施本文所描述的本公开的教导。
本公开可以作为计算机程序产品或软件来提供,其可以包括其上存储有指令的机器可读介质,所述指令可以用于对计算机系统(或其他电子装置)编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如计算机)可读形式存储信息的机制。在一些实施例中,机器可读(例如,计算机可读)介质包括例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存组件等的机器(例如,计算机)可读存储介质。
在前述说明书中,已经参考其特定实例实施例描述了本公开的实施例。显然,可以对其进行各种修改,而不背离如在所附权利要求中阐述的本公开的实施例的更宽的精神和范围。因此,说明书和附图被认为是说明性的而不是限制性的。
Claims (18)
1.一种存储器设备,其包含:
存储器装置;
延迟组件,其包括先进先出FIFO缓冲器;以及
命令组件,其包括逻辑电路且耦合到所述延迟组件,其中所述命令组件被配置成:
将接收到的与访问所述存储器装置中的物理地址相关联的命令输入到执行队列中并且将所述命令标记为活动;
将活动命令发送到所述存储器装置以被执行;以及
响应于从所述存储器装置接收到指示所述活动命令已被执行的消息,从所述执行队列中清除所述活动命令;
其中所述延迟组件被配置成:
在将来自所述存储器装置的与写入命令相关联的消息发送到所述命令组件之前,将与写入命令相关联的所述消息延迟达预定的时间段,并且
其中响应于所述命令为写入命令,延迟的所述预定的时间段长于执行读取命令与通过所述命令组件接收到指示所述读取命令已被执行的消息之间的时间段。
2.根据权利要求1所述的存储器设备,其中所述命令组件被配置成:
将与所述物理地址相关联并且在所述命令之后接收到的附加命令输入到所述执行队列中;
将所述附加命令标记为待定;以及
响应于从所述执行队列中清除所述活动命令将所述附加命令从待定更改为活动。
3.根据权利要求1所述的存储器设备,其中:
所述命令组件被配置成将写入命令作为活动输入到所述执行队列中;以及
所述延迟组件被配置成延迟指示活动写入命令已被执行的所述消息。
4.根据权利要求3所述的存储器设备,其中:
所述命令组件被配置成将读取命令作为活动输入到所述执行队列中;以及
所述延迟组件被配置成在接收到指示所述活动写入命令已被执行的消息时发送所述消息。
5.根据权利要求1所述的存储器设备,其中所述命令组件被配置成:
将读取命令作为活动命令输入到所述执行队列中。
6.根据权利要求1所述的存储器设备,其中所述命令组件是内容可寻址存储器CAM组件。
7.一种操作存储器装置的方法,所述方法包含:
接收命令,其与所述存储器装置的物理地址相关联;
跟踪所述命令及其相关联的物理地址以及是否已经使用执行队列来执行所述命令;
从所述存储器装置接收指示所述命令已被执行的消息,其中所述消息包括用于标识所述执行队列中的所述命令的命令标识ID;以及
在从所述执行队列中清除所述命令之前,由处理装置在接收到所述消息时延迟预定的时间段,其中已被执行的写入命令的所述预定的时间段长于已被执行的读取命令的所述预定的时间段。
8.根据权利要求7所述的方法,其进一步包含:
确定所述预定的时间段的期满;以及
从所述执行队列中清除所述命令。
9.根据权利要求7所述的方法,其进一步包含在将所述消息发送到命令组件之前将所述消息发送到主机,其中所述命令组件包括所述执行队列。
10.根据权利要求7所述的方法,其进一步包含:
将所述消息同步地发送到主机和延迟组件。
11.根据权利要求10所述的方法,其进一步包含将从所述执行队列中清除所述命令延迟一个时间量,所述时间量等于向所述主机发送所述消息到所述延迟组件将所述消息发送到命令组件之间的时间段。
12.根据权利要求7所述的方法,其进一步包含在从所述执行队列中清除所述命令之前将所述消息发送到主机。
13.根据权利要求7所述的方法,其进一步包含:
确定接收到的附加命令是否与所述物理地址相关联;以及
响应于所述接收到的附加命令与所述物理地址相关联,将所述接收到的附加命令输入到执行队列中并且标记为待定;以及
响应于所述接收到的附加命令与不同于所述物理地址的物理地址相关联,将所述接收到的附加命令输入到所述执行队列中并且将所述接收到的附加命令发送到所述存储器装置以被执行。
14.根据权利要求13所述的方法,其中,响应于所述附加命令被标记为待定并且响应于所述命令被从所述执行队列中清除,将所述附加命令从待定改变为活动。
15.根据权利要求7所述的方法,其中所述预定的时间段对于已被执行的写入命令和已被执行的读取命令是不同的。
16.一种存储器系统,其包含:
存储器装置;以及
处理装置,其耦合到存储器装置以执行包含以下的操作:
接收命令,所述命令与存储器装置中的物理地址相关联;
跟踪所述接收到的命令中的哪些是:
待定命令,其中待定命令指示先前接收到的命令所关联的物理地址与所述待定命令所关联的物理地址相同;或者
活动命令,其中活动命令指示在相应活动命令之前没有接收到具有相同物理地址的要执行的命令;并且
其中所述待定命令中的每一个和所述活动命令中的每一个与在命令组件中标识相应命令的命令标识ID相关联;
接收从所述存储器装置发送的响应,所述响应具有与已被执行的活动命令相对应的所述命令ID中的一个;以及
响应于从所述存储器装置接收到响应,从所述命令组件清除与所述命令ID相关联的所述活动命令;以及
延迟组件,其由控制器执行,以执行操作而从所述存储器装置接收所述响应并且延迟发送所述响应到所述命令组件达预定的时间段,
其中响应于所述活动命令为写入命令,所述存储器装置发送所述响应与所述命令组件清除所述活动命令之间的时间段大于响应于所述活动命令为读取命令的时间段。
17.根据权利要求16所述的存储器系统,其中所述命令组件被配置成接收所述响应并将所述活动命令改变成延迟命令。
18.根据权利要求16所述的存储器系统,其进一步包含时间计数器,其中:
所述时间计数器被配置成向所述命令组件发送时间数据;以及
所述命令组件被配置成基于所述时间数据来确定延迟清除所述活动命令的时间段。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/554,332 | 2019-08-28 | ||
US16/554,332 US11093244B2 (en) | 2019-08-28 | 2019-08-28 | Command delay |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112447216A CN112447216A (zh) | 2021-03-05 |
CN112447216B true CN112447216B (zh) | 2024-03-29 |
Family
ID=74682364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010875804.1A Active CN112447216B (zh) | 2019-08-28 | 2020-08-27 | 命令延迟 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11093244B2 (zh) |
CN (1) | CN112447216B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11991232B2 (en) * | 2021-05-28 | 2024-05-21 | Spotify Ab | Command buffering |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104981789A (zh) * | 2013-03-15 | 2015-10-14 | 美光科技公司 | 用于可变延时存储器操作的设备及方法 |
CN106104698A (zh) * | 2014-06-27 | 2016-11-09 | 超威半导体公司 | 用于产生具有可编程延迟的动态随机存取存储器(dram)命令的存储器物理层接口逻辑 |
CN110073322A (zh) * | 2017-03-24 | 2019-07-30 | 西部数据技术公司 | 用于快速执行封装体内命令的系统和方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08203265A (ja) * | 1995-01-26 | 1996-08-09 | Nec Eng Ltd | 遅延回路 |
US7467256B2 (en) * | 2004-12-28 | 2008-12-16 | Intel Corporation | Processor having content addressable memory for block-based queue structures |
KR100868251B1 (ko) * | 2007-03-22 | 2008-11-12 | 주식회사 하이닉스반도체 | 반도체 메모리장치 |
US8316219B2 (en) | 2009-08-31 | 2012-11-20 | International Business Machines Corporation | Synchronizing commands and dependencies in an asynchronous command queue |
US8131889B2 (en) | 2009-11-10 | 2012-03-06 | Apple Inc. | Command queue for peripheral component |
US9021146B2 (en) | 2011-08-30 | 2015-04-28 | Apple Inc. | High priority command queue for peripheral component |
US8762771B2 (en) * | 2011-11-04 | 2014-06-24 | Lsi Corporation | Method for completing write operations to a RAID drive pool with an abnormally slow drive in a timely fashion |
US8880819B2 (en) * | 2011-12-13 | 2014-11-04 | Micron Technology, Inc. | Memory apparatuses, computer systems and methods for ordering memory responses |
KR20130068481A (ko) * | 2011-12-15 | 2013-06-26 | 에스케이하이닉스 주식회사 | 상 변화 메모리 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치 |
US20130298034A1 (en) * | 2012-05-02 | 2013-11-07 | Google, Inc. | Delayed command servicing in an application executed on a network accessible device |
US9116625B2 (en) * | 2012-05-11 | 2015-08-25 | Micron Technology, Inc. | Write command overlap detection |
US10019174B2 (en) * | 2015-10-27 | 2018-07-10 | Sandisk Technologies Llc | Read operation delay |
KR20170136382A (ko) * | 2016-06-01 | 2017-12-11 | 주식회사 맴레이 | 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서 |
US10452278B2 (en) * | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
KR102669517B1 (ko) * | 2018-12-14 | 2024-05-29 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
-
2019
- 2019-08-28 US US16/554,332 patent/US11093244B2/en active Active
-
2020
- 2020-08-27 CN CN202010875804.1A patent/CN112447216B/zh active Active
-
2021
- 2021-08-16 US US17/403,079 patent/US12020030B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104981789A (zh) * | 2013-03-15 | 2015-10-14 | 美光科技公司 | 用于可变延时存储器操作的设备及方法 |
CN106104698A (zh) * | 2014-06-27 | 2016-11-09 | 超威半导体公司 | 用于产生具有可编程延迟的动态随机存取存储器(dram)命令的存储器物理层接口逻辑 |
CN110073322A (zh) * | 2017-03-24 | 2019-07-30 | 西部数据技术公司 | 用于快速执行封装体内命令的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US11093244B2 (en) | 2021-08-17 |
US12020030B2 (en) | 2024-06-25 |
US20210373887A1 (en) | 2021-12-02 |
CN112447216A (zh) | 2021-03-05 |
US20210064369A1 (en) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628319B2 (en) | Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same | |
CN115080472B (zh) | 支持非确定性命令的存储器子系统 | |
US10168951B2 (en) | Methods for accessing data in a circular block mode and apparatuses using the same | |
CN113126903A (zh) | 用于在存储器接口中实现写后读命令的系统和方法 | |
KR102341240B1 (ko) | 비휘발성 메모리에서의 동작 충돌 핸들링 | |
CN111722795A (zh) | 存储系统以及用于控制存储系统的方法 | |
CN112835828B (zh) | 用于非连续源及目的地存储器地址的直接存储器存取(dma)命令 | |
CN113093990B (zh) | 存储器子系统处的数据块切换 | |
CN112447216B (zh) | 命令延迟 | |
KR20220065817A (ko) | 하이브리드 dimm의 전송 파이프라인에서의 데이터 의존도 관리 | |
CN113971001B (zh) | 存储器装置中的存储流量模式检测 | |
US11531622B2 (en) | Managing data dependencies for out of order processing in a hybrid DIMM | |
CN112447227A (zh) | 命令跟踪 | |
CN117916719A (zh) | 存储器中的存取跟踪 | |
CN113012741B (zh) | 用于存储器子系统的媒体管理的弹性缓冲器 | |
CN113126906B (zh) | 用于元数据指示的方法和系统 | |
CN114144756B (zh) | 使用写入事务数据选择读取电压 | |
CN113129974A (zh) | 跟踪在存储器装置处执行的操作 | |
CN114817095B (zh) | 用于自动字线状态旁路管理的系统、方法及存储媒体 | |
CN113010447B (zh) | 用于存储器子系统的媒体管理的快照读取优化 | |
CN117174135A (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 |