CN113126903A - 用于在存储器接口中实现写后读命令的系统和方法 - Google Patents
用于在存储器接口中实现写后读命令的系统和方法 Download PDFInfo
- Publication number
- CN113126903A CN113126903A CN202011589045.9A CN202011589045A CN113126903A CN 113126903 A CN113126903 A CN 113126903A CN 202011589045 A CN202011589045 A CN 202011589045A CN 113126903 A CN113126903 A CN 113126903A
- Authority
- CN
- China
- Prior art keywords
- address
- write
- read
- data
- command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 228
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000004044 response Effects 0.000 claims abstract description 52
- 239000000872 buffer Substances 0.000 claims description 84
- 238000012545 processing Methods 0.000 claims description 47
- 238000012937 correction Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function 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
- 230000002085 persistent effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0653—Monitoring storage devices or 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/0656—Data buffering 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
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
- G11C2029/5606—Error catch memory
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)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及用于在存储器接口中实现写后读命令的系统和方法。存储器子系统的接口可以接收寻址到第一地址的写命令和寻址到第二地址的读命令,并且可以接收对应于写命令的数据。接口可以确定第一地址是否与第二地址匹配,响应于确定第一地址与第二地址匹配,可以丢弃读命令和第二地址,并且可以将数据提供给主机。
Description
优先权信息
本申请要求2019年12月30日提交的序列号为62/954,869的美国临时申请的优先权,其内容通过引用并入本文。
技术领域
本公开的实施例总体上涉及存储器子系统,并且更具体地,涉及在接口中实现写后读命令。
背景技术
存储器子系统可以包含一或多个存储数据的存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器组件。通常,主机系统可以利用存储器子系统在存储器装置处存储数据并从存储器装置中检索数据。
发明内容
根据一个实施例,提供了一种用于在存储器接口中实现写后读命令的系统。所述系统包括:存储器装置;处理装置,所述处理装置耦合到所述存储器装置并被配置为控制用于所述存储器装置的高速缓存存储器;以及接口,所述接口耦合到所述处理装置并被配置为:接收寻址到第一地址的写命令和寻址到第二地址的读命令;接收对应于所述写命令的数据;确定所述第一地址是否与所述第二地址匹配;以及响应于确定所述第一地址与所述第二地址匹配:丢弃所述读命令和所述第二地址;以及将所述数据提供给主机。
根据另一实施例,提供了一种用于在存储器接口中实现写后读命令的方法。所述方法包括:在存储器子系统的接口处接收寻址到第一地址的写命令和寻址到第二地址的读命令;确定所述第一地址是否与所述第二地址匹配;确定对应于所述写命令的数据是否损坏;响应于确定所述第一地址与所述第二地址匹配并且所述数据未损坏:丢弃所述读命令和所述第二地址;以及将所述数据提供给主机;以及响应于确定所述第一地址与所述第二地址不匹配或所述数据已损坏,将所述读命令和所述第二地址提供给处理装置。
根据进一步的实施例,提供了一种用于在存储器接口中实现写后读命令的系统。所述系统包括:存储器装置;处理装置,所述处理装置耦合到所述存储器装置并被配置为控制用于所述存储器装置的高速缓存存储器;接口,所述接口耦合到所述处理装置并被配置为:接收寻址到第一地址的写命令以及寻址到第二地址的第一读命令和第二读命令;接收对应于所述写命令的数据;响应于确定所述第一地址与所述第二地址匹配并且所述数据未损坏:丢弃所述第一读命令、所述第二读命令和所述第二地址;以及将所述数据提供给主机;以及响应于确定所述第一地址与所述第二地址不匹配或所述数据已损坏,将所述第一读命令、所述第二读命令和所述第二地址提供给所述处理装置进行处理。
附图说明
通过下面给出的详细描述和通过本公开的各种实施例的附图,可以更充分地理解本公开。
图1示出了根据本公开的一些实施例的示例性计算系统,所述示例性计算系统包含存储器子系统,所述存储器子系统包括接口和高速缓存控制器。
图2示出了根据本公开的一些实施例的计算系统的接口的示例。
图3是根据本公开的一些实施例的用于接口的示例性方法的流程图。
图4是在其中本公开的实施例可以操作的示例性计算机系统的框图。
具体实施方式
本公开的各方面涉及在存储器接口中实现写后读命令的存储器子系统。存储器子系统可以是存储装置、存储器模块、或者存储装置和存储器模块的混合体。下面结合图1描述存储装置和存储器模块的示例。通常,主机系统可以利用包含一或多个装置(诸如存储数据的存储器装置)的存储器子系统。主机系统可以提供要存储在存储器子系统处的数据,并且可以请求从存储器子系统中检索数据。
主机系统可以向存储器子系统发送访问请求(例如,写命令、读命令),诸如以将数据存储在存储器子系统处的存储器装置上,并从存储器子系统上的存储器装置读取数据。在下文中将由主机请求所指定的要读取或写入的数据称为“主机数据”。主机请求可以包含用于主机数据的逻辑地址信息(例如,逻辑块地址(LBA),命名空间),所述逻辑地址信息是主机系统与主机数据相关联的位置。逻辑地址信息可以是主机数据的元数据的一部分。
存储器子系统可以在接收到写命令之后接收读命令。读命令可以在执行写命令之前和接收到写命令之后接收。读命令和写命令可以寻址到存储器子系统的存储器装置的相同地址和/或相同逻辑块。在某些情况下,在不从存储器装置中检索数据的情况下处理读命令可能是有益的。例如,存储器装置的常规高速缓存控制器可以能够从高速缓存存储器中检索数据以服务于读命令。然而,从高速缓存存储器中检索数据可能利用高速缓存控制器的处理装置。
本公开的各方面解决了以上和其他缺陷。存储器子系统的接口可以在接收到对相同地址的写命令后接收读命令。如本文所使用的,相同地址可以引用相同逻辑地址、相同物理地址和/或相同逻辑块。接口可以提供对应于写命令的数据以处理读命令。可以将数据提供给主机,作为对接收到读命令的响应。在存储器子系统的接口中处理写命令可以将工作从高速缓存控制器转移到接口,这可以释放高速缓存控制器的资源来处理其他命令。通过从高速缓存存储器和/或存储器子系统的存储器装置中检索数据,与在高速缓存控制器中处理的读命令相比,可以以较小的延迟来操纵在接口中操纵(例如处理)的读命令。
本文中的附图遵循编号惯例,其中最前面的数字或多个数字对应于附图编号,而其余数字标识图中的元件或组件。可以通过使用类似的数字来标识不同附图之间的类似元件或组件。例如,在图1中109可以标引元件“09”,在图2中类似的元件可以标引为209。应当理解,可以添加、交换和/或消除本文各种实施例中所示的元件,以便提供本公开的多个附加实施例。另外,应当理解,附图中提供的元件的比例和相对标度旨在说明本发明的某些实施例,而不应被认为是限制性的。
图1示出了根据本公开的一些实施例的示例性计算系统100,所述示例性计算系包含存储器子系统103。存储器子系统103可以包含介质,诸如一或多个易失性存储器装置、一或多个非易失性存储器装置、或它们的组合。
存储器子系统103可以是存储装置、存储器模块或存储装置和存储器模块的混合体。存储装置的示例包含固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用闪存存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的示例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可以是计算装置,诸如台式计算机、膝上型计算机、网络服务器、移动装置、载具(例如,飞机、无人机、火车、汽车或其他交通工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,包含在车辆、工业装置或联网的商业装置中的计算机)或包含存储器和处理装置的这种计算装置。
计算系统100可以包含耦合到一或多个存储器子系统103的主机系统102。在一些实施例中,主机系统102耦合到不同类型的存储器子系统103。图1示出了耦合到一个存储器子系统103的主机系统102的示例。如本文所使用的,“耦合到”或“与……耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含诸如电连接、光连接、磁连接等之类的连接。
主机系统102可以包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可以包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统102使用存储器子系统103,例如以将数据写入存储器子系统103并从存储器子系统103读取数据。
主机系统102可以经由物理主机接口109耦合到存储器子系统103。接口109可以在存储器子系统103的内部。物理主机接口的示例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、小型计算机系统接口(SCSI)、双倍数据速率(DDR)内存总线、双列直插式存储器模块(DIMM)接口(例如支持双倍数据速率(DDR)的DIMM插槽接口)、开放式NAND闪存接口(ONFI)、双倍数据速率(DDR)、低功耗双倍数据速率(LPDDR)或任何其他接口。接口109可以用于在主机系统102和存储器子系统103之间传输命令、地址和/或数据。当存储器子系统103通过PCIe接口与主机系统102耦合时,主机系统102可以进一步利用NVM快速(NVMe)接口来访问组件(例如,存储器装置105)。物理主机接口可以提供用于在存储器子系统103和主机系统102之间传递控制、地址、数据和其他信号的接口。图1示出了存储器子系统103作为示例。通常,主机系统102可以经由同一通信连接、多个单独的通信连接和/或通信连接的组合来访问多个存储器子系统。
存储器装置105、112可以包含不同类型的非易失性存储器装置105和/或易失性存储器装置112的任何组合。易失性存储器装置(例如,存储器装置112)可以是但不限于随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置105)的一些示例包含与非(NAND)型闪存存储器和就位写入存储器,诸如三维交叉点(“3D交叉点”)存储器装置,它是非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可以结合可堆叠的交叉网格数据访问阵列,基于体电阻的变化执行位存储。另外,与许多基于闪存的存储器相比,交叉点非易失性存储器可以执行就位写入操作,其中可以对非易失性存储器单元进行编程而无需事先擦除非易失性存储器单元。NAND型闪存存储器包含例如二维NAND(2D NAND)和三维NAND(3DNAND)。
存储器装置105中的每个可以包含一或多个存储器单元阵列。一种类型的存储器单元,例如单级单元(SLC),可以每单元存储一位。其他类型的存储器单元(诸如多级单元(MLC)、三级单元(TLC)、四级单元(QLC)和五级单元(PLC))可以每单元存储多个位。在一些实施例中,存储器装置105和112中的每个可以包含一或多个存储器单元阵列,诸如SLC、MLC、TLC、QLC或它们的任何组合。在一些实施例中,特定的存储器装置可以包含存储器单元的SLC部分、MLC部分、TLC部分、QLC部分或PLC部分。存储器装置105和112的存储器单元可以被分组为页面,这些页面可以指代用于存储数据的存储器装置的逻辑单元。利用某些类型的存储器(例如,NAND),可以将页面分组以形成块。
尽管描述了诸如非易失性存储器单元的3D交叉点阵列和和非易失性存储器单元的NAND型存储器(例如2D NAND,3D NAND)和3D交叉点阵列之类的非易失性存储器装置105,但是存储器装置105可以基于任何其他类型的非易失性存储器,诸如只读存储器(ROM)、相变存储器(PlocCM)、自选存储器、其他基于硫族化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)闪存存储器以及电可擦可编程只读存储器(EEPROM)。
存储器子系统控制器104(或为简单起见,控制器104)可以与存储器装置105通信以执行诸如在存储器装置105处读取数据、写入数据或擦除数据之类的操作以及其他这种操作。存储器子系统控制器104可以包含诸如一或多个集成电路和/或分立组件之类的硬件、缓冲存储器或它们的组合。存储器子系统控制器104可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其他合适的处理器。
存储器子系统控制器104可以包含处理器107(例如处理装置),所述处理器被配置为执行存储在本地存储器108中的指令以执行本文所述的操作。在所示的示例中,存储器子系统控制器104的本地存储器108包含嵌入式存储器,所述嵌入式存储器被配置为存储用于执行各种过程、操作、逻辑流以及例程的指令,它们控制存储器子系统103的操作,包含处理存储器子系统103和主机系统102之间的通信。
在一些实施例中,本地存储器108可以包含存储存储器指针、所获取的数据等的存储器寄存器。例如,本地存储器108还可以包含用于存储微代码的只读存储器(ROM)。虽然图1中的示例性存储器子系统103已被示出为包含存储器子系统控制器104,但是在本公开的另一实施例中,存储器子系统103并不包含存储器子系统控制器104,并且可以替代地依赖于外部控制(例如,由外部主机或者由与存储器子系统分开的处理器或控制器提供的控制)。
通常,存储器子系统控制器104可以从主机系统102接收命令或操作,并且可以将命令或操作转换为指令或适当的命令以实现对存储器装置105和/或存储器装置112的期望访问。存储器子系统控制器104可以负责其他操作,诸如损耗均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、缓存操作以及逻辑地址(例如,逻辑块地址(LBA),命名空间)和与存储器装置105相关联的物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器104可以进一步包含主机接口电路系统,以经由物理主机接口与主机系统102通信。主机接口电路系统可以将从主机系统接收到的命令转换为命令指令以访问存储器装置105和/或存储器装置112,以及将与存储器装置105和/或存储器装置112相关联的响应转换为用于主机系统102的信息。
存储器子系统103还可以包含未示出的附加电路系统或组件。在一些实施例中,存储器子系统103可以包含可以从存储器子系统控制器104接收地址并对地址进行解码以访问存储器装置105的高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器)。
在一些实施例中,存储器装置105包含本地媒体控制器110,所述本地媒体控制器与存储器子系统控制器104结合操作以在存储器装置105的一或多个存储器单元上执行操作。外部控制器(例如,存储器子系统控制器104)可以从外部管理存储器装置105(例如,在存储器装置105上执行媒体管理操作)。在一些实施例中,存储器装置105是被管理的存储器装置,其是与同一存储器装置封装内用于媒体管理的本地控制器(例如,本地控制器110)组合的原始存储器装置。被管理的存储器装置的示例是被管理的NAND(MNAND)装置。
在至少一个实施例中,接口109与DDR-4NVDIMM-P协议兼容,并且具有与DDR-4NVDIMM-P物理插槽兼容的引脚。例如,接口109可以包含NVDIMM-P CA物理层(PHY)、NVDIMM-P事件PHY和NVDIMM-P DQ PHY。NVDIMM-P命令/地址(CA)PHY可以耦合到用于处理主机命令的命令解码器。接口109可以包含用于存储命令和与其相关联的地址的存储器(例如,内容可寻址存储器)。接口109可以比较从主机系统102接收到的命令,以确定在其他可能的存储器装置中是否存在两个或更多个到存储器装置105的同一地址的写命令。
NVDIMM-P CA PHY可以被配置为针对奇偶校验错误和不可校正的ECC(UECC)错误共享单个警报信号。然而,单个警报信号上的奇偶校验错误和UECC错误的等待时间和脉冲宽度不同。在一些实施例中,NVDIMM-P CA PHY可以耦合到奇偶校验寄存器和错误寄存器。奇偶校验寄存器可以被配置为跟踪奇偶校验错误的单个警报信号的等待时间和脉冲宽度。错误寄存器可以被配置为跟踪UECC错误的等待时间和脉冲宽度。单个警报生成逻辑可以使用奇偶校验寄存器和错误寄存器基于错误的类型(奇偶校验或UECC),生成具有适当的断言时间(例如,从等待时间开始)和脉冲宽度的警报信号。寄存器可以用相应的等待时间和脉冲宽度进行编程。
NVDIMM-P DQ PHY可以耦合到错误电路系统,并经由错误电路系统耦合到写缓冲器,以用于将数据写入存储器子系统103。错误电路系统可以包含在接口109中。相对于图2对错误电路系统进行了更详细地描述。NVDIMM-P DQ PHY也可以耦合到读缓冲器,以用于从存储器子系统103接收数据。
NVDIMM-P DQ PHY可以耦合到命令解码器,以向主机提供存储器子系统103准备好从其接收命令的指示。在一些实施例中,命令解码器可以基于可用的写信用量来提供这种指示。接口109可以具有专用于存储来自高速缓存控制器111的写信用的存储器。在至少一个实施例中,每个写命令等于一个写信用。对于接口109提供给高速缓存控制器111的每个写命令,消耗一个写信用。一旦高速缓存控制器111已处理了写命令,它就可以通过向接口109发信号以指示写完成来释放写信用。作为非限制性示例,接口109可以存储10个写信用,这意味着接口109对于高速缓存控制器可以具有至多10个未完成的写命令,此后,接口109将向主机102指示无法从其接收附加的写命令。
相对于图2示出并描述了接口109的一些附加细节。最终,接口109耦合到存储器子系统控制器104(并且由此耦合到存储器装置105)并且耦合到高速缓存控制器111(并且由此耦合到高速缓存存储器112,因为高速缓存控制器111耦合到高速缓存存储器112)。高速缓存控制器111还可以耦合到存储器子系统控制器104。
为了提供大容量和持久性存储,存储器子系统103的后端包含非易失性存储器单元的3D交叉点阵列作为存储器装置105。然而,3D交叉点存储器的延迟比典型的DRAM高得多。因此,为了缩小典型的DRAM和3D交叉点存储器之间的延迟间隙,存储器子系统103在由存储器装置105提供的后端存储和接口109之间包含较高速度的高速缓存存储器112。高速缓存存储器112可以包含DRAM、SRAM、延迟减少的DRAM第三代(RLDRAM3)或它们的组合。RLDRAM3是一种具有类SRAM接口的DRAM。RLDRAM3通常比SRAM具有更低的延迟和更大的容量。RLDRAM3通常具有比DRAM更好的性能,特别是对于背对背读写访问或完全随机访问。
NVDIMM-P事件PHY可以耦合到事件管理器,以用于在存储器子系统103中接收事件的报告。例如,事件管理器可以从存储器子系统103(或与其相关联的传输管理器)接收就绪信号。就绪信号可以指示来自任何来源的任何响应或事件(例如紧急事件、中断、读取就绪等)。对于不同来源,这种响应或事件可以是同时发生的。响应或事件可以由事件管理器序列化。事件管理器可以使用单个响应计数器来跟踪响应和事件。每当任何响应就绪或事件发生时,单个响应计数器就会递增一(即使是同时发生)。单个响应计数器可以为未决的紧急事件设置标志。响应于设置了标志,一旦当前发生的事件或响应完成,就可以处理最早的已标志紧急事件。可以通过单个响应计数器的操作来对紧急事件赋予优先级。
高速缓存控制器111可以管理从主机102接收到的命令、地址和/或数据(用于存储器装置105),并在执行命令和/或将数据存储在存储器装置105中之前将它们存储在高速缓存存储器112中。相关联的命令和/或地址可以存储在接口109内部的存储器中,并在被传输到如本文所述的高速缓存控制器111之前,由命令构建器和/或命令管理器(未具体示出)进行操作。在一些实施例中,高速缓存存储器112可以存储从存储器装置105中检索到的数据,然后将其发送给主机102。高速缓存存储器112可以比存储器装置105更快地读取和写入。这样,对高速缓存存储器112而不是存储器装置105读取和写入在执行写命令和/或读命令时提供低延迟可能是有益的。
接口109可以标记寻址到与读命令相同的地址的写命令。接口可以通过添加或修改与命令相关联的元数据来标记命令。例如,接口可以向与命令相关联的元数据添加指示所述命令已被标记的位。标记的命令可以用于确定是否将对应于标记的命令的数据转发到接口109的读缓冲器。读缓冲器可以用于将数据提供给主机系统102。响应于将存储在读缓冲器中的数据提供给主机系统102,接口109可以丢弃(例如,删除)读命令。接口109可以丢弃读命令,而无需将读命令提供给高速缓存控制器111和/或利用高速缓存控制器111处理读命令。接口109可以响应于接收到寻址到与写命令相同的地址的读命令(对于所述写命令伴随数据仍在接口中(例如,在写缓冲器中)),使伴随数据被存储在读缓冲器中、使伴随数据从读缓冲器被传输到主机以满足读命令,并且删除读命令(相对于高速缓存存储器112或存储器装置105无需实际执行读命令)。
在接口109中标记写命令可以减少高速缓存控制器111的工作量。在一些实施例中,写命令可以从接口109和高速缓存控制器111的外部被标记,并被接口109丢弃。
在各种情况下,高速缓存控制器111可以将数据从存储器装置105移动到高速缓存存储器112,而无需使用存储器子系统控制器104。高速缓存控制器111还可以在使用存储器子系统控制器104的情况下将数据从存储器装置105移动到高速缓存存储器112。
图2示出了根据本公开的一些实施例的计算系统的接口209的示例。接口209类似于图1的接口109。接口209可以包含比较器221、命令缓冲器222、写缓冲器224和读缓冲器230,通常被称为“缓冲器222、224和230”。接口还可以包含错误校正电路系统,为方便起见,其被标记为“ECC电路系统223”。ECC电路系统223可以是错误检测和/或校正电路系统,诸如校正码(ECC)电路系统、循环冗余校验(CRC)电路系统、其他错误检测和/或校正电路系统或它们的组合。
如本文所使用的,缓冲器222、224和230和/或错误存储器229可以包含存储在诸如SRAM或不同类型的存储器之类的存储器中的数据结构。例如,缓冲器222、224和230以及错误存储器229可以被存储在寄存器中。缓冲器222、224和230可以是先进先出(FIFO)数据结构,其保持与命令(例如,读命令和/或写命令)、地址和/或数据的接收相关联的次序。
接口209可以接收命令、地址和/或数据。例如,可以通过命令解码器来解码由接口209接收到的命令。接收到的命令可以用于向存储器子系统(例如,图1的存储器子系统103)的存储器装置读取或写入数据。例如,可以使用命令将由接口209接收到的数据写入也由接口209接收到的地址。该地址可以是托管接口的存储器子系统的存储器装置的存储器单元的地址。
由接口209接收到的数据可以在提供给存储器子系统以便存储在存储器子系统的存储器装置中之前,提供给高速缓存控制器211以便临时存储在高速缓存存储器212中。这样,可以通过将与对应于写命令的数据存储到高速缓存存储器212来实现对存储器装置的地址的写命令。当存储器子系统就绪时,可以根据与写命令相关联的地址将高速缓存存储器212所存储的数据提供给存储器装置。在至少一个实施例中,发送写命令和相关联的地址的主机可能不知道数据被存储在寻址位置之前数据被临时存储在高速缓存存储器212中。
在各种示例中,可以在接口209接收到写命令和/或读命令之前,将标识(ID)225分配给写命令和/或读命令。例如,ID 225可以由主机分配给写命令和/或读命令。可以为读命令分配读ID,并且为写命令分配写ID。命令缓冲器222可以存储对应于写命令和/或读命令的ID 225和地址226。例如,命令缓冲器222中的每个条目可以包含写ID或读ID和地址,其中写ID和地址对应于写命令,并且读ID和地址对应于读命令。对应于读命令的地址226可以标识要被读取的存储器单元。对应于写命令的地址226可以标识要被写入的存储器单元。地址226可以是物理地址和/或逻辑地址,以及可以使用的其他类型的存储器地址。在至少一个实施例中,命令缓冲器222可以存储ID 225和地址226,直到与相关地址相关联的存储器子系统已执行了对应的写命令为止。例如,命令缓冲器222可以在已将写命令和伴随数据提供给高速缓存控制器211之前以及在已将写命令和伴随数据提供给存储器子系统之前,存储特定的写ID 225和地址226。这样的实施例在允许接口209从接口109向主机提供写数据并且在将读命令提供给存储器子系统或由其执行之前从命令管线中丢弃读命令方面可能是有益的。
比较器221可以比较地址226,以确定地址226中的任何两个或更多个是同一地址还是重叠地址。例如,比较器221可以将具有第一地址的第一写ID与具有第二地址的第二读ID进行比较。如果第一地址和第二地址匹配,则比较器221可以确定具有第一写ID和第二读ID的命令可以被实现为分别向存储器装置的同一地址写入和读取。对多个命令写入和读取到同一地址的确定可用于识别分别将存储器子系统的存储器装置写入和读取到同一地址的写命令和读命令。
可以基于从主机接收命令的次序来顺序分配命令ID。在各种情况下,比较器221还可以确定在接收到写命令之后是否接收到读命令。例如,比较器221可以比较写命令和读命令的ID,以确定写ID的编号是否小于读ID。在一些实施例中,比较器221可以在将读命令插入命令缓冲器222之前确定写命令是否被插入命令缓冲器222。写命令寻址到与读命令相同的地址以及在接收到读命令之前接收到写命令的确定可以用于识别写命令和/或读命令。
响应于确定所识别的命令写入同一地址,比较器221可以标记命令和/或对应的ID225。比较器221可以通过向ECC电路系统223发送指示以上情况的信号来使ECC电路系统223标记所识别的写命令和/或读命令。在这样的示例中,ECC电路系统223可以将稍后接收到的读命令标记为错误的,而不考虑对读命令(或伴随数据)执行错误检查和/或不考虑在执行的情况下读命令(或伴随数据)是否通过错误检查。标记读命令可以包含在读命令的元数据中设置一个位。接口209、高速缓存控制器211和/或存储器子系统控制器可以被配置为从读命令的元数据读取所述位,并且响应于所述位被设置,可以删除读命令。
ECC电路系统223可以包含错误存储器229和被配置为根据错误校正码进行操作的电路系统228(“ECC 228”)。错误存储器229可以存储ID 225、ECC 228的ECC结果227,以及关于ID 225是否对应于寻址到与读命令相同的地址的写命令的确定。常规ECC电路系统223并不存储关于ID 225是否对应于寻址到与读命令相同的地址的写命令的确定。ECC电路系统223可以根据ECC 228进行操作,以检测和/或校正对应于接口209所接收的命令的数据的损坏。ECC电路系统223可以根据ECC 228识别未损坏的数据和/或包含损坏的数据。ECC电路系统223可以利用错误存储器229来识别损坏的数据。错误存储器229可以存储包括写ID(例如,ID 225)和ECC结果227的条目。将写ID 225与接口209所接收的数据的ECC结果227相关联可以允许将数据与写命令相关联。例如,错误存储器229中的每个条目可以包含对应于写命令的写ID和ECC 228的结果。ECC 228可以确定数据是否损坏。例如,ECC 228可以确定对应于写ID的数据是否损坏。所述确定可以作为ECC结果227存储在错误存储器229中。
错误存储器229还可以存储对具有写ID 225的写命令是否具有与具有读ID的对应读命令相同的地址的确定。错误存储器229可以将确定存储在表示写后读结果235的字段中。例如,比较器221可以响应于识别写后读依赖性,将写后读结果235存储在错误存储器229中。如本文所使用的,写后读依赖性描述了在接收到写命令之后接收到读命令,其中读命令和写命令寻址到同一地址。例如,具有特定值的位可以表示不存在写后读依赖性,而具有不同值的位可以表示存在写后读依赖性。
在ECC 228已确定写数据未损坏之后,可以将接口209所接收的写数据存储在写缓冲器222中。例如,可以将数据从ECC电路系统223提供给写缓冲器222。写缓冲器222的每个条目可以包含写ID和对应于写命令的数据。如果错误存储器229指示不存在写后读依赖性,则可以将ECC 228的结果、数据231、写ID 225、读ID 225和/或地址226提供给高速缓存控制器211。如果存在写后读依赖性,则可以将ECC 228、数据231、写ID 225和对应的地址226提供给高速缓存控制器211。响应于写后读结果235指示读命令和写命令寻址到同一存储器地址,可以不将读命令和任何相关联的地址从命令缓冲器222提供给高速缓存控制器211。
在各种情况下,写后读结果235和ECC结果227可以用于确定是否向高速缓存控制器211提供写命令和/或读命令。例如,如果ECC结果227指示对应于写命令的数据已损坏,则可以将寻址到同一地址和/或不同地址的写命令和读命令两者都提供给高速缓存控制器211。如ECC结果227所指示的写数据已损坏的指示使得所述写数据不可访问,并且这样可避免被用于实现对应的读命令。如果ECC结果227指示对应于写命令的数据未损坏,并且写后读结果235指示写命令寻址到读命令所寻址到的同一地址,则接口可以向高速缓存控制器211提供写命令而不是读命令。假设写入数据将被存储到将被读取以处理读命令的同一地址,则写数据可用于实现读命令。如果ECC结果227指示对应于写命令的数据未损坏,并且写后读结果235指示写命令寻址到与读命令所寻址到的不同的地址,则接口209可以向高速缓存控制器211提供写命令和读命令。然而,假设与将存储写数据的地址不同的地址将被读取以实现读命令,则接口209可以不利用写数据来实现读命令。高速缓存控制器211可以执行其接收的读命令和写命令。
存储在写缓冲器224中的写数据231可以响应于写后读依赖性的识别以及未指示写数据231已损坏而被提供给读缓冲器230。可以经由一或多条线234将写数据231提供给读缓冲器230。线234可以将写缓冲器224耦合到读缓冲器230,使得可以将数据从写缓冲器224提供给读缓冲器230。这样,写后读结果235和ECC结果227可以用于确定是否将数据从写缓冲器224转发到读缓冲器230。
如果数据是从写缓冲器224提供给读缓冲器230的,则假设数据可以从读缓冲器230提供给主机系统,可以从命令缓冲器222中丢弃写命令和/或相关联的写ID。这样,在这种情况下,处理读命令包含确定是否存在写后读依赖性,将对应于写命令的数据从写缓冲器224存储在读缓冲器230中,以及将数据从读缓冲器230提供给主机。可以在不将读命令提供给高速缓存控制器211、不访问高速缓存存储器212、不将读命令提供给存储器子系统控制器和/或不对存储器子系统的存储器装置提供访问的情况下处理读命令。
在一些示例中,比较器221可以包含被配置为确定是否存在如由错误存储器229所识别的写后读依赖性(例如,写后读结果235)的电路系统。如果识别出写后读依赖性,则比较器221可以从错误存储器229中识别与写后读依赖性相关联的写ID 225。响应于确定写命令和读命令寻址到同一地址,比较器可以将写ID 225交叉引用到比较器221所存储的读ID225。比较器221随后可以利用写ID从写缓冲器224中访问写数据231,并且利用读ID将写数据作为读数据存储到读缓冲器230。例如,比较器221可以导致在读缓冲器230中创建新条目,所述新条目包括读ID和作为读数据的写数据。可以将写数据存储到读缓冲器230,而无需将数据从高速缓存存储器212传输到读缓冲器230,或者无需将数据从存储器子系统的不同存储器装置传输到读缓冲器。
比较器221可以利用ECC电路系统223标记从与未决写命令相同的地址读取的命令。例如,比较器221可以在错误存储器229中标记从与未决写命令相同的地址读取的命令。例如,比较器221可以识别对应于寻址到同一地址的写命令和读命令的写ID和读ID。所识别的写ID可用于修改错误存储器229的条目。写ID可以用于更新写后读结果235。比较器221可以在内部或在比较器外部但在接口209内部的存储器中存储写ID和读ID。所存储的命令、写ID和/或读ID可用于从写缓冲器224检索在写ID下的写数据231,并在写ID下将写数据231存储到读缓冲器230。
错误存储器229可用于同时提供关于ECC 228的结果的信息和关于哪些命令从同一地址写入和读取数据的信息。信息可以被提供给高速缓存控制器211以及被配置为将写数据作为读数据存储在读缓冲器230中的电路系统。
错误存储器229还可以用于确定是否释放写ID的目的。例如,如果利用写后读结果235识别并标记了写后读依赖性,则可以使用与写后读依赖性相关联的写ID来防止释放写ID。传统上,可以通过从写缓冲器224和/或命令缓冲器222向高速缓存控制器211提供写命令(例如,写ID)和对应的写数据来释放写ID。在将写ID、相关联的地址226和/或写数据231提供给高速缓存控制器211之后,则可以从写缓冲器224、命令缓冲器222和/或错误存储器229中丢弃(例如,删除)写ID。从写缓冲器224、命令缓冲器222和/或错误存储器229中丢弃写ID可以使写ID可用于与不同的传入写命令一起使用。
尽管未示出,但是比较器221可以在接口209和高速缓存控制器211的外部实现。外部比较器221可以在错误存储器229中标记命令。从接口209和/或高速缓存控制器211外部标记命令可以导致利用标记的命令的写数据对读命令进行处理,而无需将读命令提供给高速缓存控制器211。
高速缓存控制器211可以实现未标记的命令。例如,高速缓存控制器211可以将数据写入高速缓存存储器和/或可以将数据提供给存储器子系统控制器(例如,图1中的存储器子系统控制器104)以用于写入存储器子系统的存储器装置。
可以通过不同的流接收命令、地址和/或数据。ECC电路系统223可以被配置为利用错误存储器229来描述命令的地址和对应于命令的数据两者的属性。属性可以包含读命令和写命令是将数据存储到同一地址还是从同一地址读取数据。属性还可以包含对应于写命令的数据是否损坏。这样,标记写命令可以包含描述利用命令缓冲器222接收到的命令流的属性、存储在写缓冲器224中的数据流的属性和/或存储在读缓冲器230中的数据流的属性,假设该数据从写缓冲器224存储到读缓冲器230。
在各种示例中,比较器221可以识别寻址到与读命令相同的地址的两个或更多个写命令。比较器221可以存储分别对应于写命令和读命令的写ID和读ID。可以利用对应于写命令的写ID在错误存储器229中标记写命令中的每个。错误存储器229可以用于确定是否在读缓冲器230中存储对应于写命令的数据。
在一些示例中,比较器221可以识别从标记的写命令接收到的最后的(例如,最新的)写命令。比较器221可以传输对应于所接收和所识别的最新写命令的写数据231。可以利用对应于读命令的读ID将写数据231从写缓冲器224存储到读缓冲器230。这样,读缓冲器230的条目可以包含读ID 225和读数据233。响应于处理读命令,可以释放所识别的写命令的ID。
在一些示例中,写命令和多个读命令可以寻址到同一地址。比较器221可以识别正寻址到同一地址的写命令和读命令。写ID和读ID可以由比较器221进行存储。比较器221可以利用错误存储器229和由比较器221执行的比较的写后读结果235来标记写命令。接口209可以利用线使写数据存储到读缓冲器230。例如,接口209可以生成进入读缓冲器230的第一条目,所述第一条目包括第一读ID和写数据。在其中两个读命令和写命令寻址到同一地址的示例中,接口209随后可以生成进入读缓冲器230的第二条目,所述第二条目包括第二读ID和写数据。在各种示例中,将数据从读缓冲器230提供给主机可以包含将数据从读缓冲器230提供给输入/输出线以将数据提供给主机。
图3是根据本公开的一些实施例的用于接口的示例性方法380的流程图。方法380可以由处理逻辑来执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或它们的组合。在一些实施例中,方法380由图1的接口109执行。尽管以特定的顺序或次序显示,除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应当仅被理解为示例,并且所示出的过程可以以不同的次序执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其他处理流程也是可能的。
在操作381处,可以在存储器子系统的接口处接收寻址到第一地址的写命令和寻址到第二地址的读命令。在操作382处,可以关于第一地址是否与第二地址匹配作出确定。在操作383处,可以关于对应于写命令的数据是否损坏作出确定。在操作384处,响应于确定第一地址与第二地址匹配并且数据未损坏,可以丢弃读命令和第二地址,并且可以将数据提供给主机。在操作385处,响应于确定第一地址与第二地址不匹配或数据已损坏,可以将读命令和第二地址提供给高速缓存控制器。
在各种示例中,方法380可以进一步包含响应于确定第一地址与第二地址匹配,识别寻址到第一地址的写命令的写ID和寻址到第二地址的读命令的读ID。可以将数据存储在读缓冲器中。还可以将数据与读缓冲器中的读ID相关联。
响应于确定第一地址与第二地址不匹配并且数据未损坏,可以将写命令和第一地址提供给高速缓存控制器。响应于确定数据已损坏,可以将写命令和第一地址提供给高速缓存控制器以由高速缓存控制器丢弃。例如,高速缓存控制器可以响应于数据已损坏的确定而丢弃命令和/或对应的数据。可以利用接口的错误校正电路系统将数据识别为损坏的。
在各种情况下,可以接收具有与对应于写命令的写ID不同的写ID的不同写命令。可以作出在接收到不同的写命令之前接收到写命令的确定。可以利用写ID将所述确定存储在错误校正电路系统中。
还可以关于在不同的写命令之前是否接收到写命令作出确定。响应于确定在写命令之后接收到不同的写命令,可以利用读ID将不同的数据提供给主机。将数据提供给主机还可以包含响应于确定在写命令之前接收到不同的写命令而将数据提供给主机。
图4示出了计算机系统490的示例性机器,在其中可以执行用于使所述机器执行本文所讨论的方法中的一或多个的一组指令。在一些实施例中,计算机系统490可以对应于主机系统(例如,图1的主机系统102),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统103),或者可以用于执行控制器的操作(例如,执行操作系统以执行对应于图1的接口109的操作)。在另选的实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其他机器。机器可以在客户端-服务器网络环境中以服务器或客户端机器的身份运行,作为对等(或分布式)网络环境中的对等机器,或者作为云计算基础架构或环境中的服务器或客户端机器。
机器可以是个人计算机(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络装置、服务器、网络路由器、交换机或网桥或能够执行指定该机器要采取的动作的一组指令(顺序指令或以其他方式)的任何机器。进一步,虽然示出了单个机器,但是术语“机器”也应被理解为包含机器的集合,这些机器单独地或共同地执行一组(或多组)指令以执行本文所讨论的方法中的一或多个。
示例性计算机系统490包含处理装置492、主存储器494(例如,只读存储器(ROM)、闪存存储器、诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)之类的动态随机存取存储器(DRAM)等)、静态存储器498(例如,闪存存储器、静态随机存取存储器(SRAM)等)和数据存储系统499,它们经由总线497彼此通信。
处理装置492表示一或多个通用处理装置,诸如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器或实现指令集的组合的处理器。处理装置492还可以是一或多个专用处理装置,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置492被配置为执行指令493,以用于执行本文所讨论的操作和步骤。计算机系统490可以进一步包含网络接口装置495,以通过网络496进行通信。
数据存储系统499可以包含机器可读存储介质491(也称为计算机可读介质),在其上存储体现本文所述方法或功能中的任何一或多个的一或多组指令493或软件。在计算机系统490执行指令493的过程中,所述指令也可以全部或至少部分地驻留在主存储器494内和/或处理装置492内,主存储器494和处理装置492也构成机器可读存储介质。机器可读存储介质491、数据存储系统499和/或主存储器494可以对应于图1的存储器子系统103。
在一个实施例中,指令493包含用于实现对应于计算组件(例如,图1的接口109)、的功能的指令。指令可以包含与在存储器子系统的接口(例如,图1中的接口109)中合并写命令相关联的命令指令489。尽管在示例性实施例中将机器可读存储介质491示出为单个介质,但是术语“机器可读存储介质”应被认为包含存储一或多组指令的单个介质或多个介质。术语“机器可读存储介质”也应被认为包含能够存储或编码一组指令以供机器执行并且使机器执行本公开的方法中的一或多个的介质。因此,术语“机器可读存储介质”应被认为包含但不限于固态存储器、光学介质和磁性介质。
已根据对计算机存储器内的数据位的操作的算法和符号表示呈现了前述详细描述的某些部分。这些算法描述和表示是数据处理领域技术人员用来最有效地向本领域其他技术人员传达其工作实质的方式。这里,算法通常被认为是导致期望结果的自洽操作序列。操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采取能够被存储、组合、比较和以其他方式操纵的电信号或磁信号的形式。主要出于通用的原因,已证明有时将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。
然而,应当牢记,所有这些和类似术语均应与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。本公开可以涉及计算机系统或类似电子计算装置的动作和过程,所述计算机系统或类似电子计算装置将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似地表示为计算机系统存储器或寄存器或其他这种信息存储系统内的物理量的其他数据。
本公开还涉及用于执行本文中的操作的设备。该设备可以被专门构造用于预期目的,或者它可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读存储介质中,诸如但不限于,多种类型的磁盘(包含软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适于存储电子指令的任何类型的介质,每个都耦合到计算机系统总线。
本文中呈现的算法和显示并非固有地与特定计算机或其他设备相关。各种通用系统可以与根据本文教导的程序一起使用,或者构造更专用的设备以执行方法可能证明是方便的。如以上描述中所阐述的,将出现用于各种这些系统的结构。另外,本公开并未参考特定编程语言进行描述。应当理解,可以使用各种编程语言来实现对如本文所述的本公开的教导。
本公开可以被提供为计算机程序产品或软件,其可以包含其上存储有指令的机器可读介质,所述指令可以用于对计算机系统(或其他电子装置)进行编程以执行根据本公开的过程。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的机制。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存存储器组件等。
在前述说明书中,已参考本公开的特定示例性实施例描述了本公开的实施例。将显而易见的是,在不脱离如以下权利要求书中阐述的本公开的实施例的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性的而不是限制性的。
Claims (20)
1.一种用于在存储器接口中实现写后读命令的系统,包括:
存储器装置(105);
处理装置(111,211),所述处理装置耦合到所述存储器装置并被配置为控制用于所述存储器装置的高速缓存存储器(112,212);以及
接口(109,209),所述接口耦合到所述处理装置并被配置为:
接收寻址到第一地址(226)的写命令和寻址到第二地址(226)的读命令;
接收对应于所述写命令的数据(231);
确定所述第一地址是否与所述第二地址匹配;以及
响应于确定所述第一地址与所述第二地址匹配:
丢弃所述读命令和所述第二地址;以及
将所述数据提供给主机(102)。
2.根据权利要求1所述的系统,其中所述接口被进一步配置为响应于确定所述第一地址与所述第二地址不匹配,将所述读命令和所述第二地址提供给所述处理装置。
3.根据权利要求1至2中任一项所述的系统,其中所述接口进一步用于响应于确定所述第一地址与所述第二地址匹配,在不将所述读命令和所述第二地址提供给所述处理装置的情况下将所述数据提供给所述主机。
4.根据权利要求3所述的系统,其中所述接口被进一步配置为:
将所接收的读命令存储到命令缓冲器(222);以及
响应于确定所述第一地址与所述第二地址匹配,在将所述命令缓冲器中的命令提供给所述处理装置之前,从所述命令缓冲器中丢弃所述读命令和所述第二地址。
5.根据权利要求4所述的系统,其中所述接口被进一步配置为将来自写缓冲器(224)的所述数据提供给读缓冲器(230),以将所述数据提供给所述主机。
6.根据权利要求5所述的系统,其中所述接口被进一步配置为将来自所述读缓冲器的所述数据提供给输入/输出线,以将所述数据提供给所述主机。
7.根据权利要求4所述的系统,其中所述接口被进一步配置为将来自所述写缓冲器的所述数据提供给输入/输出线,以将所述数据提供给所述主机。
8.一种用于在存储器接口中实现写后读命令的方法,包括:
在存储器子系统(103)的接口(109,209)处接收寻址到第一地址(226)的写命令和寻址到第二地址(226)的读命令;
确定所述第一地址是否与所述第二地址匹配;
确定对应于所述写命令的数据(231)是否损坏;
响应于确定所述第一地址与所述第二地址匹配并且所述数据未损坏:
丢弃所述读命令和所述第二地址;以及
将所述数据提供给主机(102);以及
响应于确定所述第一地址与所述第二地址不匹配或所述数据已损坏,将所述读命令和所述第二地址提供给处理装置(211)。
9.根据权利要求8所述的方法,进一步包括响应于确定所述第一地址与所述第二地址匹配,识别寻址到所述第一地址的所述写命令的写标识ID(225)和寻址到所述第二地址的所述读命令的读ID(225)。
10.根据权利要求9所述的方法,进一步包括将所述数据存储在读缓冲器(230)中,并将所述读缓冲器中的所述数据与所述读ID相关联。
11.根据权利要求8所述的方法,进一步包括响应于确定所述第一地址与所述第二地址不匹配并且所述数据未损坏,将所述写命令和所述第一地址提供给所述处理装置。
12.根据权利要求8所述的方法,进一步包括响应于确定所述第一地址确实与所述第二地址不匹配并且所述数据未损坏,将所述读命令和所述第二地址提供给所述处理装置。
13.根据权利要求8至12中任一项所述的方法,进一步包括响应于确定所述数据已损坏,将所述写命令和所述第一地址提供给所述处理装置以由所述处理装置丢弃。
14.根据权利要求8至12中任一项所述的方法,进一步包括利用错误校正电路系统(223)来确定对应于所述写命令的所述数据是否损坏。
15.根据权利要求14所述的方法,进一步包括:
接收具有与对应于所述写命令的写ID(225)不同的写ID(225)的不同写命令;
确定在所述不同的写命令之前接收到写命令;以及
利用所述不同的写ID将对所述第一地址是否与所述第二地址匹配的所述确定存储在所述错误校正电路系统中。
16.根据权利要求15所述的方法,进一步包括:
确定在所述不同的写命令之前是否接收到所述写命令;
响应于确定在所述写命令之后接收到所述不同的写命令,利用所述读ID将所述不同的数据(231)提供给所述主机;并且
其中将所述数据提供给所述主机进一步包括响应于确定在所述写命令之前接收到所述不同的写命令而将所述数据提供给所述主机。
17.一种用于在存储器接口中实现写后读命令的系统,包括:
存储器装置(105);
处理装置(111,211),所述处理装置耦合到所述存储器装置并被配置为控制用于所述存储器装置的高速缓存存储器(112,212);
接口(109,209),所述接口耦合到所述处理装置并被配置为:
接收寻址到第一地址(226)的写命令以及寻址到第二地址(226)的第一读命令和第二读命令;
接收对应于所述写命令的数据(231);
响应于确定所述第一地址与所述第二地址匹配并且所述数据未损坏:
丢弃所述第一读命令、所述第二读命令和所述第二地址;以及
将所述数据提供给主机(102);以及
响应于确定所述第一地址与所述第二地址不匹配或所述数据已损坏,将所述第一读命令、所述第二读命令和所述第二地址提供给所述处理装置进行处理。
18.根据权利要求17所述的系统,其中所述接口被进一步配置为:
利用所述写命令的写ID(225)将所述数据未损坏的第一确定存储在错误校正电路系统(223)中;
利用所述写ID将所述第一地址与所述第二地址匹配的第二确定存储在所述错误校正电路系统中;以及
避免释放所述写ID,直到已利用分别对应于所述第一读命令和所述第二读命令的第一读ID(225)和第二读ID(225)将所述数据存储到读缓冲器(230)为止。
19.根据权利要求18所述的系统,其中所述接口被进一步配置为响应于所述第二确定而不管所述写命令是否已被提供给所述处理装置,避免释放所述写ID,直到所述数据已被存储到所述读缓冲器为止。
20.根据权利要求17至19中任一项所述的系统,其中所述接口被进一步配置为:
利用所述写命令的写ID将所述数据已损坏的确定存储在错误校正电路系统中;以及
响应于将所述写命令提供给所述处理装置而释放所述写ID,而不管所述第一地址是否与所述第二地址匹配。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962954869P | 2019-12-30 | 2019-12-30 | |
US62/954,869 | 2019-12-30 | ||
US16/928,564 US11907572B2 (en) | 2019-12-30 | 2020-07-14 | Interface read after write |
US16/928,564 | 2020-07-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113126903A true CN113126903A (zh) | 2021-07-16 |
Family
ID=76546227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011589045.9A Pending CN113126903A (zh) | 2019-12-30 | 2020-12-29 | 用于在存储器接口中实现写后读命令的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11907572B2 (zh) |
CN (1) | CN113126903A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023035427A1 (zh) * | 2021-09-07 | 2023-03-16 | 苏州浪潮智能科技有限公司 | 基于fifo存储器的信息生成方法、装置、设备及介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11573891B2 (en) | 2019-11-25 | 2023-02-07 | SK Hynix Inc. | Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device |
KR102456176B1 (ko) * | 2020-05-21 | 2022-10-19 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
CN113918216A (zh) * | 2020-07-10 | 2022-01-11 | 富泰华工业(深圳)有限公司 | 数据读/写处理方法、装置及计算机可读存储介质 |
US20230161506A1 (en) * | 2021-11-19 | 2023-05-25 | Cryptography Research, Inc. | Multiple host memory controller |
KR20230106920A (ko) * | 2022-01-07 | 2023-07-14 | 삼성전자주식회사 | 스토리지 시스템 및 이를 포함하는 컴퓨팅 시스템 |
US12072761B2 (en) * | 2022-06-02 | 2024-08-27 | Micron Technology, Inc. | Memory sub-system addressing for data and additional data portions |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5280579A (en) * | 1990-09-28 | 1994-01-18 | Texas Instruments Incorporated | Memory mapped interface between host computer and graphics system |
US20100211746A1 (en) * | 2009-02-17 | 2010-08-19 | Fujitsu Microelectronics Limited | Cache device |
US20140040550A1 (en) * | 2011-09-30 | 2014-02-06 | Bill Nale | Memory channel that supports near memory and far memory access |
US20140143476A1 (en) * | 2012-11-16 | 2014-05-22 | Rotem Sela | Usage of cache and write transaction information in a storage device |
US20140372696A1 (en) * | 2013-06-18 | 2014-12-18 | Arm Limited | Handling write requests for a data array |
US20160110250A1 (en) * | 2014-10-20 | 2016-04-21 | Electronics And Telecommunications Research Institute | Cache memory with fault tolerance |
US20170194039A1 (en) * | 2016-01-06 | 2017-07-06 | Renesas Electronics Corporation | Semiconductor memory device |
CN109992537A (zh) * | 2018-01-02 | 2019-07-09 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7065050B1 (en) | 1998-07-08 | 2006-06-20 | Broadcom Corporation | Apparatus and method for controlling data flow in a network switch |
US7519788B2 (en) | 2004-06-04 | 2009-04-14 | Micron Technology, Inc. | System and method for an asynchronous data buffer having buffer write and read pointers |
JP2008009699A (ja) | 2006-06-29 | 2008-01-17 | Matsushita Electric Ind Co Ltd | 不揮発性メモリの書き込み方法 |
US7552252B2 (en) * | 2006-07-18 | 2009-06-23 | Via Technologies, Inc. | Memory interface circuit and method |
US8762682B1 (en) * | 2010-07-02 | 2014-06-24 | Western Digital Technologies, Inc. | Data storage apparatus providing host full duplex operations using half duplex storage devices |
US8634267B2 (en) | 2012-05-14 | 2014-01-21 | Sandisk Technologies Inc. | Flash memory chip power management for data reliability and methods thereof |
KR20190083150A (ko) * | 2018-01-03 | 2019-07-11 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
-
2020
- 2020-07-14 US US16/928,564 patent/US11907572B2/en active Active
- 2020-12-29 CN CN202011589045.9A patent/CN113126903A/zh active Pending
-
2024
- 2024-01-11 US US18/410,175 patent/US20240152294A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5280579A (en) * | 1990-09-28 | 1994-01-18 | Texas Instruments Incorporated | Memory mapped interface between host computer and graphics system |
US20100211746A1 (en) * | 2009-02-17 | 2010-08-19 | Fujitsu Microelectronics Limited | Cache device |
US20140040550A1 (en) * | 2011-09-30 | 2014-02-06 | Bill Nale | Memory channel that supports near memory and far memory access |
US20140143476A1 (en) * | 2012-11-16 | 2014-05-22 | Rotem Sela | Usage of cache and write transaction information in a storage device |
US20140372696A1 (en) * | 2013-06-18 | 2014-12-18 | Arm Limited | Handling write requests for a data array |
US20160110250A1 (en) * | 2014-10-20 | 2016-04-21 | Electronics And Telecommunications Research Institute | Cache memory with fault tolerance |
US20170194039A1 (en) * | 2016-01-06 | 2017-07-06 | Renesas Electronics Corporation | Semiconductor memory device |
CN109992537A (zh) * | 2018-01-02 | 2019-07-09 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023035427A1 (zh) * | 2021-09-07 | 2023-03-16 | 苏州浪潮智能科技有限公司 | 基于fifo存储器的信息生成方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US11907572B2 (en) | 2024-02-20 |
US20240152294A1 (en) | 2024-05-09 |
US20210200470A1 (en) | 2021-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907572B2 (en) | Interface read after write | |
CN113031856B (zh) | 存储器子系统中的断电数据保护 | |
US11630778B2 (en) | Efficient processing of commands in a memory sub-system | |
US20210334200A1 (en) | Storing translation layer metadata in host memory buffer | |
US11531622B2 (en) | Managing data dependencies for out of order processing in a hybrid DIMM | |
CN113066519A (zh) | 存储器子系统自测操作 | |
US11675701B2 (en) | Hardware-based coherency checking techniques | |
CN113126906B (zh) | 用于元数据指示的方法和系统 | |
CN113012741B (zh) | 用于存储器子系统的媒体管理的弹性缓冲器 | |
US11372716B2 (en) | Detecting special handling metadata using address verification | |
US11620242B2 (en) | Determining write commands for deletion in a host interface | |
US11789663B2 (en) | Execution of commands addressed to a logical block | |
CN113126899B (zh) | 完全多平面操作启用 | |
CN113253918B (zh) | 用于存储器子系统的介质管理的数据流处理 | |
CN113495695B (zh) | 用于存取命令的高速缓存标识符 | |
US11656938B2 (en) | Preemptive read verification after hardware write back | |
US20240319873A1 (en) | Managing write command execution during a power failure in a memory sub-system | |
CN115512749A (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 |