CN113934666B - 数据接口桥的预取 - Google Patents
数据接口桥的预取 Download PDFInfo
- Publication number
- CN113934666B CN113934666B CN202110797371.7A CN202110797371A CN113934666B CN 113934666 B CN113934666 B CN 113934666B CN 202110797371 A CN202110797371 A CN 202110797371A CN 113934666 B CN113934666 B CN 113934666B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- interface
- prefetch
- processing 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 277
- 239000000872 buffer Substances 0.000 claims abstract description 197
- 238000012545 processing Methods 0.000 claims description 68
- 238000000034 method Methods 0.000 claims description 41
- 238000013500 data storage Methods 0.000 claims description 32
- 230000004044 response Effects 0.000 claims description 26
- 230000009977 dual effect Effects 0.000 claims description 5
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 230000003068 static effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 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
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 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
- 238000013507 mapping 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
- 230000017702 response to host 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
Classifications
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
-
- 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
-
- 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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及数据接口桥的预取。本文中所描述的各种实施例提供使用用于所述数据接口桥的预取缓冲器,所述预取缓冲器可与存储器子系统一起使用以增加来自耦合到所述数据接口桥的存储器装置的数据的读取存取或依序读取存取。
Description
技术领域
本公开的实施例大体上涉及存储器装置,且更具体来说,涉及用于数据接口桥的预取缓冲器的序列,所述预取缓冲器可与存储器子系统一起使用。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以将数据存储在存储器装置处且从存储器装置检索数据。
发明内容
本公开的一方面是针对一种系统,其包括:第一数据接口,其根据第一类型的数据接口标准;第二数据接口,其根据第二类型的数据接口标准,所述第二类型不同于所述第一类型;预取缓冲器的集合;和处理装置,其以操作方式耦合到所述第一数据接口、所述第二数据接口和所述预取缓冲器集合,所述处理装置配置成进行包括以下各项的操作:从耦合到所述第一数据接口的第一装置接收从耦合到所述第二数据接口的第二装置上的数据存储位置读取第一数据的请求,所述数据存储位置对应于与所述请求相关联地提供的存储器地址;和响应于所述请求:基于所述存储器地址从所述预取缓冲器集合或所述第二装置中的一个将所述第一数据提供到所述第一装置,所述第一数据通过所述第一数据接口提供到所述第一装置;确定是否从所述预取缓冲器集合或所述第二装置中的至少一个将所述第一数据提供到所述第一装置;和基于预取策略且基于所述确定是否将所述第一数据从所述预取缓冲器集合或所述第二装置中的至少一个提供到所述第一装置,将第二数据从所述第二装置预取到所述预取缓冲器集合,所述第二数据在对应于依序存储器地址集合的数据存储位置集合处存储在所述第二装置上,且所述依序存储器地址集合依序在所述存储器地址之后。
本公开的另一方面是针对一种方法,其包括:通过接口桥的第一数据接口从第一装置接收将第一数据写入到第二装置上的对应于存储器地址的数据存储位置的请求,所述第一装置耦合到所述第一数据接口,所述第二装置耦合到所述接口桥的第二数据接口,所述第一数据接口是根据第一类型的数据接口标准,所述第二数据接口根据第二类型的数据接口标准,且所述第二类型的数据接口标准不同于所述第一类型的数据接口标准;和响应于所述请求:通过所述接口桥确定现有数据当前是否与所述存储器地址相关联地存储在所述接口桥的预取缓冲器集合上;和响应于确定现有数据当前与所述存储器地址相关联地存储在所述预取缓冲器集合上,将所述第一数据与所述存储器地址相关联地写入到至少所述预取缓冲器集合以及所述第二装置两者,所述第一数据通过所述第二数据接口写入到所述第二装置。
本公开的又一方面是针对至少一个机器可读介质,其包括指令,所述指令在由与接口桥相关联的处理装置执行时使得所述处理装置进行包括以下各项的操作:从耦合到所述接口桥的第一数据接口的第一装置接收从耦合到所述接口桥的第二数据接口的第二装置上的数据存储位置读取第一数据的请求,所述数据存储位置对应于与所述请求相关联地提供的存储器地址,所述第一数据接口是根据第一类型的数据接口标准,所述第二数据接口是根据第二类型的数据接口标准,且所述第二类型的数据接口标准不同于所述第一类型的数据接口标准;和响应于所述请求:基于所述存储器地址从所述第二装置或所述接口桥的预取缓冲器集合中的一个将所述第一数据提供到所述第一装置,所述第一数据通过所述第一数据接口提供到所述第一装置;确定是否从所述预取缓冲器集合或所述第二装置中的至少一个将所述第一数据提供到所述第一装置;和基于所述确定是否将所述第一数据从所述预取缓冲器集合或所述第二装置中的至少一个提供到所述第一装置,将第二数据从所述第二装置预取到所述预取缓冲器集合,所述第二数据在对应于依序存储器地址集合的数据存储位置集合处存储在所述第二装置上,且所述依序存储器地址集合依序在所述存储器地址之后。
附图说明
根据下文提供的详细描述且根据本公开的各种实施例的附图将更加充分地理解本公开。然而,附图不应视为将本公开限制于特定实施例,而是仅用于解释和理解。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。
图2是说明根据本公开的一些实施例的具有预取缓冲器的数据接口之间的接口桥的实例的图。
图3至6是根据本公开的一些实施例的用于数据接口桥的预取缓冲器的实例方法的流程图。
图7提供说明在进行使用如本文中所描述的预取缓冲器的方法的一些实施例的上下文中的计算环境的组件之间的交互的交互图。
图8是可在其中操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的方面是针对使用用于数据接口桥的预取缓冲器,所述预取缓冲器可与存储器子系统一起使用以增加来自耦合到数据接口桥的存储器装置的数据的读取存取或依序读取存取。存储器子系统可以是存储装置、存储器模块,或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(如存储数据的存储器装置)的存储器子系统。主机系统可将存取请求发送到存储器子系统,以便在存储器子系统处存储数据和从存储器子系统读取数据。
主机系统可将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便将数据存储在存储器子系统处的存储器装置上,且从存储器子系统上的存储器装置读取数据。如由主机请求指定,待读取或写入的数据在下文中称为“主机数据”。主机请求可包含用于主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、名字空间),其是主机系统与主机数据相关联的位置。逻辑地址信息(例如,LBA、名字空间)可以是主机数据的元数据的部分。元数据还可包含错误处置数据(例如,ECC码字、奇偶检验码)、数据版本(例如,用于区分所写入数据的期限)、有效位图(其LBA或逻辑传送单元含有有效数据)等。
存储器子系统可对存储在存储器装置上的主机数据起始介质管理操作,如写入操作。举例来说,存储器子系统的固件可将先前写入的主机数据从存储器装置上的位置重写到新位置,作为垃圾收集管理操作的部分。重写的数据(例如,如通过固件起始)在下文中称为“垃圾收集数据”。
下文中的“用户数据”大体指代主机数据和垃圾收集数据。下文中的“系统数据”指代由存储器子系统产生和/或维护以用于响应于主机请求而进行操作和用于介质管理的数据。系统数据的实例包含但不限于系统表(例如,逻辑到物理地址映射表)、来自记录的数据、暂存(scratch pad)数据等。
存储器装置可以是非易失性存储器装置。非易失性存储器装置是一或多个裸片的封装。每一裸片可由一或多个平面构成。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面由物理块集合构成。对于一些存储器装置,块是可擦除的最小区域。每一块由页集构成。每一页由存储数据位的存储器单元集合构成。存储器装置可以是原始存储器装置(例如,NAND),其在外部例如由外部控制器管理。存储器装置可以是受管理存储器装置(例如,受管理NAND),其是与本地嵌入式控制器组合以用于相同存储器装置封装中的存储器管理的原始存储器装置。
为了促进具有特定类型的数据接口的目标装置的存取,主机系统或存储器子系统可使用数据接口桥(下文称为接口桥),其使得主机系统/存储器子系统能够使用另一类型的数据接口存取目标装置。举例来说,关于包括根据外围组件互连高速(PCI-E或PCIe)标准(例如,数据接口包括PCI-E物理层)的数据接口的一或多个装置,主机系统或存储器子系统控制器可使用传统接口桥从使用根据不同数据接口标准(如双数据速率(DDR)存储器标准(例如,DDR4存储器标准,其中另一数据接口包括DDR4物理层))的数据接口的一或多个个别装置存取(例如,读取存取)数据。
本公开的方面通过接口桥改进装置(例如,存储器装置)的数据存取,所述接口桥包含用于存储从装置预取的数据的预取缓冲器。对于一些实施例,预取缓冲器有效地放置/使用于(不同类型的)接口桥的两个接口之间以加速通过接口桥的读取存取。举例来说,接口桥可包括确定性数据接口(如根据DDR存储器标准的数据接口)和非确定性数据接口(如根据PCI-E标准的数据接口)。根据一些实施例,从耦合到接口桥的非确定性数据接口的装置(例如,存储器装置)预取数据,其中预取可基于可或可不由预取策略限定的一或多个准则的满意度。对于各种实施例,预取的数据存储在预取缓冲器上。最终,可通过耦合到确定性数据接口的装置(例如,主机系统、存储器子系统控制器,或存储器子系统控制器的处理装置)经由接口桥接器的确定性数据接口存取存储在预取缓冲器上的预取的数据。取决于实施例,预取缓冲器可包括一或多个静态随机存取存储器(SRAM)装置、动态随机存取存储器(DRAM)装置、寄存器或组相联(set-associative)高速缓存(例如,N向组相联高速缓存,如双向组相联高速缓存)。
对于一些实施例,用于接口桥的预取缓冲器是写通缓冲器。因此,在接口桥耦合在目标装置与主机系统或存储器子系统控制器(例如,其处理装置)之间的情况下,在通过接口桥从主机系统/存储器子系统控制器接收对目标装置的数据写入请求的情况下,且在数据写入请求在预取缓冲器上产生写入命中的情况下,可将数据写入请求的数据写入到预取缓冲器和目标装置两者(例如,在目标装置是存储器装置的情况下,写入到目标装置的扇区高速缓存或页高速缓存)。
与不使用如本文中所描述的预取缓冲器的接口桥相比,各种实施例的使用可增加来自耦合到接口桥的数据接口(例如,非确定性数据接口)的装置的数据的读取存取或依序读取存取。举例来说,关于使用接口桥从使用非PCI-E数据接口(如DDR(例如,DDR4)数据接口)的PCI-E存储器装置(例如,包括三维(3D)交叉点存储器介质或NAND型存储器介质的PCI-E存储器装置)存取数据的主机系统或存储器子系统控制器,各种实施例可通过使用预取缓冲器存储来自PCI-E装置的预取的数据而减少依序读取存取命中的等待时间。通过使用预取缓冲器,当来自主机系统/存储器子系统控制器的读取存取请求在预取缓冲器上产生读取存取命中时,接口桥可通过提供来自预取缓冲器所请求数据而不是必须提供来自PCI-E装置的所请求数据而对所述请求作出响应。
如本文中所使用,数据接口桥(或接口桥)包括具有桥接根据不同(例如,不兼容)数据接口标准(例如,确定性和非确定性数据接口标准)操作的硬件数据接口之间的通信的逻辑的组件。举例来说,给定接口桥可使得主机系统或存储器子系统控制器(例如,其处理装置)能够使用非PCI-E数据接口(如DDR数据接口)与具有PCI-E数据接口的目标装置传达数据。
根据一些实施例,接口桥将(例如,存储器子系统控制器的)存储器子系统的处理装置耦合到存储器子系统的存储器装置。举例来说,接口桥可形成存储器子系统控制器的部分,或可形成存储器子系统的部分,同时在存储器子系统控制器外部(例如,在存储器子系统内,接口桥耦合在存储器子系统控制器与存储器装置之间)。基于准则集(例如,由预取策略限定),在请求数据的任何部分以用于由耦合到接口桥的存储器子系统控制器的处理装置读取之前,接口桥可使得将数据(例如,数据的一或多个扇区或页)从存储器装置预取到接口桥的预取缓冲器中。举例来说,在实施例的存储器子系统从主机系统接收针对指定存储器地址的数据读取请求的情况下,存储器子系统控制器的处理装置可产生对应数据读取请求且经由接口桥将所述对应数据读取请求发送到存储器装置。如果对应数据读取请求在预取缓冲器上产生读取命中,那么接口桥可通过将数据从依序在来自存储器装置(例如,NAND型存储器装置)的指定存储器地址之后的一或多个依序存储器地址预取(例如,预取数据的下64个或128个字节)到预取缓冲器来作出响应。在这样做时,如果接口桥随后从(存储器子系统控制器的)处理装置接收对来自那些依序存储器地址中的至少一个的数据的数据读取请求,那么数据读取请求将在预取缓冲器上产生读取命中,且接口桥可提供来自预取缓冲器的所请求数据,而不是必须从存储器装置获得所请求数据。对于各种实施例,从预取缓冲器提供所请求数据可产生比从存储器装置提供所请求数据更快的读取存取(其还可实现更多读取带宽),尤其是在其中主机系统依序存取数据(例如,从依序存储器地址请求数据读取)的情形中。
如本文中所使用,将数据预取到接口桥的预取缓冲器可包括在接口桥关于所述数据从另一装置(例如,存储器子系统控制器的主机系统或处理装置)接收数据存取请求之前,将数据从一个装置(例如,非易失性存储器装置)预取(例如,复制)到接口桥的预取缓冲器。举例来说,在接口桥从主机系统或存储器子系统控制器(例如,其处理装置)接收数据读取请求以明确地提取一个更多扇区且将所述一个更多扇区提供到主机系统之前,可将数据的一或多个扇区(例如,128个字节)从存储器装置提取(例如,复制)到预取缓冲器。在另一情况下,在接口桥从主机系统/存储器子系统控制器接收数据读取请求以明确地提取一个更多页且将所述一个更多页提供到主机系统之前,可将数据的一或多个页(例如,64个字节)从存储器装置提取(例如,复制)到预取缓冲器。
如本文中所使用,关于数据读取请求(例如,从主机系统到存储器子系统),关于预取缓冲器的读取命中可指其中预取缓冲器可满足数据读取请求的情况(例如,预取缓冲器当前正存储由数据读取请求所请求的数据的有效副本),且关于预取缓冲器的读取未中可指其中预取缓冲器无法满足数据读取请求的情况(例如,预取缓冲器当前未存储由数据读取请求所请求的数据的副本,或副本无效)。另外,如本文中所使用,写入命中和写入未中可指用于预取缓冲器的类似情形,但关于来自主机系统或存储器子系统控制器(例如,其处理装置)的数据写入请求。
如本文中所使用,预取缓冲器可包括组相联高速缓存。举例来说,实施例的预取缓冲器可实施N向组相联高速缓存,如双向组相联高速缓存。在预取缓冲器内,对与特定存储器地址相关联的数据的命中或未中检测可包括基于特定存储器地址和高速缓存存储器装置内的标签的关联搜索而确定标签。
虽然本文中关于形成存储器子系统的部分的接口桥描述各种实施例,但对于一些实施例,接口桥在存储器子系统外部且可用于将主机系统耦合到存储器子系统(或另一装置)。
本文中所公开的是用于使用用于接口桥的预取缓冲器的系统的一些实例,如本文中所描述。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含介质,如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或这种的组合。
存储器子系统110可以是存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、安全数字(SD)卡、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储器(UFS)驱动器和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可以是计算装置,如桌上型计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的这种计算装置。
计算环境100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与...耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,不具有介入组件),无论有线还是无线,包含如电连接、光学连接、磁性连接和其类似物的连接。
主机系统120可包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器),和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110(例如)将数据写入到存储器子系统110且从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、小型计算机系统接口(SCSI)、双数据速率(DDR)存储器总线、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR),或任何另一接口。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口来存取组件(例如,存储器装置130)。物理主机接口可提供接口以用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号。图1说明存储器子系统110作为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是(但不限于)随机存取存储器(RAM),如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)类型快闪存储器和就地写入存储器,如三维交叉点(“3D交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来进行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可进行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND类型快闪存储器包含例如二维NAND(2DNAND)和三维NAND(3DNAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,如多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,如SLC、MLC、TLC、QLC或这种的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,和MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可分组为可指代用于存储数据的存储器装置的逻辑单元的页。对于一些类型的存储器(例如,NAND),页可分组以形成块。
虽然描述了非易失性存储器组件,如NAND型存储器(例如,2D NAND、3D NAND)和3D交叉点非易失性存储器单元阵列,但存储器装置130可基于任何其它类型的非易失性存储器,如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器,和电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置130通信以进行操作,如在存储器装置130处读取数据、写入数据或擦除数据,和其它这种操作。存储器子系统控制器115可包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以进行本文中所描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适处理器。
存储器子系统控制器115可包含配置成执行存储在本地存储器119中的指令的处理器(处理装置)117。在所说明实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于进行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
在一些实施例中,本地存储器119可包含存储存储器指针、提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,且可改为依靠(例如,由外部主机系统或由与存储器子系统分离的处理器或控制器提供的)外部控制。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适当的命令,以实现对存储器装置130和/或存储器装置140的所要存取。存储器子系统控制器115可负责其它操作,如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作和与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统120接收到的命令转换成命令指令以存取存储器装置130和/或存储器装置140,以及将与存储器装置130和/或存储器装置140相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地介质控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130进行介质管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与本地控制器(例如,本地介质控制器135)组合以在同一存储器装置封装内进行介质管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统控制器115包含数据接口之间的接口桥112(下文称为接口桥112)、用于接口桥的预取器113(下文称为预取器113)和预取缓冲器114。对于一些实施例,存储器装置130、140中的一或两个操作经由接口桥112耦合到处理器117的存储器子系统110的装置。预取缓冲器114可包括一或多个SRAM装置、一或多个寄存器或组相联高速缓存的一或多个集合。另外,对于一些实施例,预取器113根据本文中所描述的方法实现或促进将数据预取到预取缓冲器114。
根据一些实施例,存储器子系统110从主机系统120接收从存储器装置130、140中的一个上的对应于指定存储器地址的数据存储位置读取第一数据的请求,所述指定存储器地址可与所述请求相关联地提供。基于来自主机系统120的请求,(存储器子系统控制器115的)处理器117可产生用于存储器装置130、140中的一或多个的一或多个数据读取请求以从主机系统120读取第一数据。为了这样做,根据一些实施例,处理器117将一或多个数据读取请求发送到接口桥112,且接口桥112通过基于存储器地址将第一数据从预取缓冲器114中的一个或存储器装置130、140(充当非高速缓存存储器装置)中的一或多个提供到处理器117而对一或多个数据读取请求作出响应。举例来说,如果(从存储器装置130、140中的一或多个)读取第一数据的一或多个数据读取请求产生与预取缓冲器114的读取命中,那么可将第一数据从预取缓冲器114提供到处理器117。如果(从存储器装置130、140中的一或多个)读取第一数据的一或多个数据读取请求与预取缓冲器114产生读取未中,那么可将第一数据从存储器装置130、140中的一或多个提供到处理器117。举例来说,接口桥112可通过将第一数据从存储器装置130、140中的一或多个复制到预取缓冲器114且接着将第一数据从预取缓冲器114提供到处理器117而从存储器装置130、140中的一或多个提供第一数据。
对于一些实施例,预取器113使得接口桥112能够通过确定是否将第一数据从预取缓冲器114中的至少一个或存储器装置130、140中的一个提供到处理器117而进一步对从处理器117接收到的一或多个数据读取请求作出响应。如本文中所指出,如果确定从处理器117接收到的一或多个数据读取请求产生预取缓冲器114的读取命中,那么预取缓冲器114将第一数据提供到处理器117。如果确定从处理器117接收到的一或多个数据读取请求产生预取缓冲器114的读取未中,那么存储器装置130、140中的一个将第一数据提供到处理器117。
对于一些实施例,预取器113使得存储器子系统控制器115能够通过基于准则集(例如,由预取策略限定)且基于确定是否将第一数据从预取缓冲器114中的至少一个或存储器装置130、140中的一个提供到处理器117来将第二数据从存储器装置130、140中的一或多个预取到预取缓冲器114,而进一步对从处理器117接收到的一或多个数据读取请求作出响应。根据各种实施例,第二数据(预取到预取缓冲器114)在对应于依序存储器地址集合的数据存储位置集合处存储在存储器装置130、140中的一个上,所述依序存储器地址集合依序在指定存储器地址之后。预取到预取缓冲器114的数据量(即,第二数据的大小)可取决于预取的深度(预取深度)设定。预取深度设定可限定(例如)依序存储器地址集合中的依序存储器地址的数目,其可确定第二数据的大小。对于一些实施例,预取深度设定可由预取策略定义、可预定义(例如,由制造商)、可使用一或多个寄存器定义,或可动态地设定。
对于各种实施例,预取策略定义一或多个准则,所述准则在满足时使得将第二数据预取到预取缓冲器114。举例来说,可定义预取策略以使得响应于响应于将第一数据从预取缓冲器114(例如,预取缓冲器114上的读取命中)提供到处理器117而从预取缓冲器114提供第一数据,可将第二数据从存储器装置130、140中的一或多个复制到预取缓冲器114。可定义预取策略以使得响应于将第二数据从预取缓冲器114(例如,预取缓冲器114上的读取命中)提供到处理器117,可将第三数据(表示额外预取数据)从存储器装置130、140中的一或多个复制到预取缓冲器114。另外,可定义预取策略以使得响应于每一读取请求,可将来自下一地址的数据预取到预取缓冲器114(例如,从存储器装置130、140中的一或多个复制到预取缓冲器114)。
根据一些实施例,存储器子系统110从主机系统120接收将第一数据写入到存储器装置130、140中的一个上的对应于指定存储器地址的数据存储位置的请求,所述指定存储器地址可结合请求提供或作为请求的部分提供。基于来自主机系统120的请求,(存储器子系统控制器115的)处理器117可产生用于存储器装置130、140中的一或多个的一或多个数据写入请求以写入来自主机系统120的第一数据。为了这样做,根据一些实施例,处理器117将一或多个数据写入请求发送到接口桥112,且接口桥112通过确定第一数据当前是否存储在预取缓冲器114上(例如,确定一或多个数据写入请求是否产生与预取缓冲器114的写入命中)而对一或多个数据写入请求作出响应。另外,对于一些实施例,预取器113使得接口桥112能够通过将第一数据写入到至少预取缓冲器114和存储器装置130、140中的一或多个两者而对确定第一数据当前存储在预取缓冲器114上(例如,确定存在与预取缓冲器114的写入命中)作出响应。
虽然预取器113和预取缓冲器114说明为与接口桥112分离,但预取器113、预取缓冲器114或两者可实施(至少部分地)为接口桥112的组件。另外,虽然接口桥112说明为存储器子系统控制器115的部分,但对于一些实施例,接口桥112可实施为存储器子系统110的与存储器子系统控制器115分离的组件。
图2是说明根据本公开的一些实施例的具有预取缓冲器的数据接口之间的接口桥230(下文称为接口桥230)的实例的图。在图2中,处理装置220经由接口桥230耦合到一或多个PCI-E装置240。虽然相对于一或多个PCI-E装置240描述图2,但一些实施例可涉及具有根据不同数据接口标准的数据接口的装置。如所展示,接口桥230包括一或多个确定性数据接口232、预取器234、预取缓冲器236和一或多个非确定性数据接口238。预取器234使得接口桥230能够根据本文中相对于预取缓冲器236所描述的各种实施例进行。处理装置220可表示主机系统(例如,120)或存储器子系统(例如,117)中的一个。一或多个确定性数据接口232的实例可包含但不限于一或多个存储器数据接口,如根据DDR存储器标准(例如,DDR4存储器标准)的存储器数据接口。因此,一或多个确定性数据接口232可包含包括DDR4物理层的数据接口。一或多个非确定性数据接口238的实例可包含但不限于根据PCI-E标准的一或多个数据接口(例如,装置接口)。因此,一或多个非确定性数据接口238可包含包括PCI-E物理层的数据接口。一或多个PCI-E装置240的实例可包含但不限于非易失性存储器装置,如三维交叉点存储器装置或NAND型存储器装置。
图3至6是根据本公开的一些实施例的用于数据接口桥的预取缓冲器的实例方法的流程图。方法300、400、500、600可由处理逻辑进行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法300、400、500、600中的至少一种基于预取器113通过图1的接口桥112(或接口桥112的处理装置)进行。虽然以特定顺序或次序展示,但除非另外规定,否则所述过程的次序可修改。因此,应理解所说明实施例仅作为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每一实施例中并非需要全部过程。其它过程流程是可能的。
对于一些实施例,相对于存储器子系统(例如,110)进行方法300、400、500、600中的一或多种,所述存储器子系统包括接口桥(例如,112)、预取缓冲器(例如,114)集合、作为耦合到接口桥的第一装置操作的处理器(例如,117),和作为耦合到接口桥的第二装置操作的存储器装置(例如,130、140)。
现参考图3的方法300,在操作302处,接口桥(例如,112)从耦合到接口桥的第一数据接口的第一装置(例如,117)接收从耦合到接口桥的第二数据接口的第二装置(例如,130、140)上的数据存储位置读取第一数据的请求,其中数据存储位置对应于存储器地址。对于一些实施例,结合通过操作302接收到的请求或作为通过操作302接收到的请求的部分从第一装置接收存储器地址。对于各种实施例,通过接口桥(例如,112)从第一装置(例如,117)通过接口桥(例如,112)的第一数据接口接收请求。
在操作304处,接口桥(例如,112)通过基于存储器地址确定第一数据当前是否存储在预取缓冲器集合上(例如,确定请求是否在预取缓冲器114上产生读取命中)而对操作302的请求作出响应。
在操作306处,接口桥(例如,112)基于预取策略且基于对第一数据当前是否存储在预取缓冲器(例如,114)集合上的确定(通过操作304)而将第二数据从第二装置(例如,130、140)预取到预取缓冲器(例如,114)集合。根据一些实施例,将第二数据(预取到预取缓冲器集合)在对应于依序存储器地址集合的数据存储位置集合处存储在第二装置(例如,130、140)上,其中依序存储器地址集合依序在(与通过操作302接收到的请求相关联的)存储器地址之后。对于各种实施例,通过接口桥(例如,112)的第二数据接口从第二装置(例如,130、140)预取第二数据。
对于一些实施例,响应于确定(在操作304处)第一数据当前存储在预取缓冲器集合上(例如,确定请求在预取缓冲器114上产生读取命中),接口桥(例如,112)通过将第二数据从第二装置(例如,130、140)复制到预取缓冲器(例如,114)集合而将第二数据从第二装置(例如,130、140)预取到预取缓冲器(例如,114)集合。
然而,在操作304处,接口桥(例如,112)可确定第一数据当前未存储在预取缓冲器集合上(例如,确定请求在预取缓冲器114上产生读取未中)。响应于这一确定,接口桥(例如,112)可通过将来自第二装置(例如,130、140)上的对应于依序存储器地址集合的数据存储位置集合的至少第二数据复制到预取缓冲器(例如,114)集合而将第二数据从第二装置(例如,130、140)预取到预取缓冲器(例如,114)集合。在这样做时,一些实施例可在将数据从第二装置预取到预取缓冲器之前预取下一数据序列。
现参考图4的方法400,操作402类似于相对于图3的方法300所描述的操作302。在操作404处,接口桥(例如,112)通过基于存储器地址将第一数据从预取缓冲器(例如,114)集合、第二装置(例如,130、140)中的一个提供到第一装置(例如,117)而对操作402的请求作出响应。
对于一些实施例,操作404包括接口桥(例如,112)基于存储器地址确定第一数据当前是否存储在预取缓冲器集合上(例如,确定请求是否在预取缓冲器114上产生读取命中);和响应于确定第一数据当前存储在预取缓冲器集合上,将第一数据从预取缓冲器集合提供到第一装置(例如,117)。对于各种实施例,通过接口桥(例如,112)的第一数据接口将第一数据提供到第一装置(例如,117)。
对于一些实施例,操作404包括接口桥(例如,112)基于存储器地址确定第一数据当前是否存储在预取缓冲器集合上(例如,确定请求是否在预取缓冲器114上产生读取命中);和响应于确定第一数据当前未存储在预取缓冲器集合上,基于存储器地址确定接口桥(例如,112)可将第一数据从第二装置(例如,130、140)提供到第一装置(例如,117)。对于一些实施例,将第一数据从第二装置提供到第一装置包括将第一数据从第二装置复制到预取缓冲器集合,和从预取缓冲器集合提供第一数据的副本。对于各种实施例,通过接口桥(例如,112)的第二数据接口从第二装置(例如,130、140)复制第一数据。
在操作406处,接口桥(例如,112)确定是否(通过操作404)将第一数据从预取缓冲器(例如,114)集合或第二装置(例如,130、140)中的至少一个提供到第一装置(例如,117)。
在操作408处,接口桥(例如,112)基于预取策略且基于是否从预取缓冲器(例如,114)集合或第二装置(例如,130、140)中的至少一个提供第一数据的确定(通过操作404)而将第二数据从第二装置(例如,130、140)预取到预取缓冲器(例如,114)集合。对于一些实施例,第二数据在对应于依序存储器地址集合的数据存储位置集合处存储在第二装置上,且所述依序存储器地址集合依序在存储器地址之后。
对于一些实施例,响应于确定(在操作406处)将第一数据从预取缓冲器(例如,114)集合提供到第一装置(例如,117),接口桥(例如,112)通过将第二数据从第二装置(例如,130、140)复制到预取缓冲器(例如,114)集合而将第二数据从第二装置(例如,130、140)预取到预取缓冲器(例如,114)集合。
然而,在操作406处,接口桥(例如,112)可确定将第一数据从第二装置(例如,130、140)提供到第一装置(例如,117)。响应于这一确定,接口桥(例如,112)可通过将至少第二数据从第二装置(例如,130、140)上的对应于依序存储器地址集合的数据存储位置集合复制到预取缓冲器(例如,114)集合而将第二数据从第二装置(例如,130、140)提取到预取缓冲器(例如,114)集合(如果其尚未作为操作404的部分发生)。另外,接口桥(例如,112)可进一步将第三数据从第二装置(例如,130、140)上的对应于依序存储器地址的第二集合的数据存储位置的第二集合预取到预取缓冲器(例如,114)集合,其中依序存储器地址的第二集合依序在依序存储器地址集合之后。在这样做时,一些实施例可在将第二数据从预取缓冲器(例如,114)集合提供到第一装置(例如,117)之前预取下一数据序列。
现参考图5的方法500,操作502到508分别类似于相对于图4的方法400所描述的操作402到408。在操作510处,接口桥(例如,112)从第一装置(例如,117)接收将第三数据写入到第二装置(例如,130、140)上的对应于第二存储器地址的第二存储位置的第二请求。举例来说,写入请求可以是用第三数据覆写或更新第一数据(由操作504响应于通过操作502接收到的请求而提供)。
在操作512处,接口桥(例如,112)通过确定现有数据当前是否与第二存储器地址相关联地存储在预取缓冲器集合上(例如,确定第二请求是否在预取缓冲器114上产生写入命中)而对操作510的第二请求作出响应。
在操作514处,接口桥(例如,112)通过将第三数据与第二存储器地址相关联地写入到至少预取缓冲器(例如,114)集合和第二装置(例如,130、140)两者而对现有数据当前与第二存储器地址相关联地存储在预取缓冲器(例如,114)集合上的确定(通过操作512)作出响应。举例来说,可首先将第三数据写入到预取缓冲器(例如,114)集合,且接着将其从预取缓冲器集合写入到第二装置(例如,130、140)。以这种方式,对于一些实施例,预取缓冲器(例如,114)可操作为写通缓冲器。对于各种实施例,通过接口桥(例如,112)的第二数据接口将第三数据写入到第二装置(例如,130、140)。
虽然未说明,但对于一些实施例,接口桥(例如,112)从第一装置(例如,117)接收指令以启用或停用将数据(从第二装置(例如,130、140))预取到预取缓冲器(例如,114)集合。举例来说,在主机系统(例如,主机侧软件)确定主机系统正请求比非依序读取(例如,随机存取读取)更多的依序读取的情况下,主机系统可将指令发送到存储器子系统以启用将数据预取到预取缓冲器(例如,114)集合。这一指令可由存储器子系统的处理器(例如,117)接收,且处理器(例如,117)可将对应指令发送到接口桥(例如,112)以启用预取。替代地,在主机系统(例如,主机侧软件)确定主机系统正请求比依序读取更多的非依序读取(例如,随机存取读取)的情况下,主机系统可将指令发送到存储器子系统(例如,且由处理器117接收)以停用将数据预取到预取缓冲器(例如,114)集合。这一指令可由存储器子系统的处理器(例如,117)接收,且处理器(例如,117)可将对应指令发送到接口桥(例如,112)以停用预取。
现参考图6的方法600,在操作602处,接口桥(例如,112)从第一装置(例如,117)接收将第一数据写入到第二装置(例如,130、140)上的对应于存储器地址的数据存储位置的请求。对于一些实施例,结合通过操作602接收到的请求或作为通过操作602接收到的请求的部分从主机系统接收存储器地址。对于各种实施例,通过接口桥(例如,112)从第一装置(例如,117)通过接口桥(例如,112)的第一数据接口接收请求。
在操作604处,接口桥(例如,112)通过确定现有数据当前是否与存储器地址相关联地存储在预取缓冲器集合上(例如,确定请求是否在预取缓冲器114上产生写入命中)而对操作602的请求作出响应。
在操作606处,接口桥(例如,112)通过将第一数据与存储器地址相关联地写入到至少预取缓冲器(例如,114)集合和第二装置(例如,130、140)两者而对现有数据当前与存储器地址相关联地存储在预取缓冲器(例如,114)集合上的确定(通过操作604)作出响应。举例来说,可首先将第一数据写入到预取缓冲器(例如,114)集合,且接着将其从预取缓冲器集合写入到第二装置(例如,130、140)。以这种方式,对于一些实施例,预取缓冲器(例如,114)可操作为写通缓冲器。对于各种实施例,通过接口桥(例如,112)的第二数据接口将第一数据写入到第二装置(例如,130、140)。
图7提供说明在进行使用如本文中所描述的预取缓冲器的方法的一些实施例的上下文中的计算环境100的组件之间的交互的交互图。方法的操作可由处理逻辑进行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,所述方法由作为第一装置操作的存储器子系统(例如,110)的处理器(例如,117)、作为第二装置操作的存储器装置(例如,130、140)、耦合处理装置和存储器装置的接口桥(例如,112)和预取缓冲器(例如,114)或其某一组合进行。虽然操作以特定顺序或次序来展示,但是除非另外规定,否则所述过程的次序可修改。因此,应理解所说明实施例仅作为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每一实施例中并非需要全部过程。在图7中所说明的实例的上下文中,主机系统可包含主机系统120,处理器可包含存储器子系统控制器115的处理器117,接口桥可包含存储器子系统控制器115的接口桥112,预取缓冲器可包含预取缓冲器114,且存储器装置可包含存储器装置130或140。
如图7中所展示,在操作702处,主机系统120发送从存储器子系统110上的对应于存储器子系统110的存储器地址的数据存储位置读取第一数据的请求。在操作710处,处理器117接收请求。响应于请求,在操作712处,处理器117借助于接口桥112从存储器装置130、140请求第一数据。在操作720处,接口桥112借助于接口桥112的第一数据接口从处理器117接收请求。响应于请求,接口桥112将第一数据从预取缓冲器114或存储器装置130、140中的至少一个提供到处理器117。特定来说,基于请求,操作722可包括搜索预取缓冲器114以寻找所述请求的存储器地址上的读取命中。如果在预取缓冲器114上产生读取命中,那么在操作730处,预取缓冲器114向接口桥112提供用于处理器117的所请求第一数据。如果在预取缓冲器114上产生读取未中,那么在操作740处,存储器装置130、140(经由第二数据接口)向接口桥112提供用于处理器117的所请求第一数据。
最终,在操作714处,处理器117经由第一数据接口从接口桥112接收第一数据。在操作716处,处理器117将从接口桥112接收到的第一数据提供到主机系统120。随后,在操作704处,主机系统120从存储器子系统110(即,处理器117)接收第一数据。
在操作724处,接口桥112确定是否从预取缓冲器114或存储器装置130、140中的至少一个提供第一数据。基于预取策略和操作724的确定,在操作726处,接口桥112将第二数据从存储器装置130、140预取到预取缓冲器114。因此,在操作742处,存储器装置130、140提供用于预取的第二数据,且在操作732处,预取缓冲器114存储从存储器装置130、140预取的第二数据。
图8说明呈计算机系统800形式的实例机器,在其内可执行指令集以使得所述机器进行本文中论述的方法中的任何一或多种。在一些实施例中,计算机系统800可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于进行本文中所描述的操作。在替代性实施例中,所述机器可连接(例如,联网)到局域网(LAN)、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,虽然说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述机器单独地或共同地执行指令集(或多个指令集)以进行本文中所论述的方法中的任何一或多种。
实例计算机系统800包含处理装置802、主存储器804(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器806(例如,快闪存储器、静态随机存取存储器(SRAM)等)和数据存储装置818,其经由总线830彼此通信。
处理装置802表示一或多个通用处理装置,如微处理器、中央处理单元或其类似物。更特定来说,处理装置802可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置802还可以是一或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或其类似物。处理装置802配置成执行用于进行本文中所论述的操作和步骤的指令826。计算机系统800可进一步包含网络接口装置808以通过网络820通信。
数据存储装置818可包含机器可读存储介质824(也称为计算机可读介质),在其上存储有一或多个指令826集或体现本文中所描述的方法或功能中的任何一或多种的软件。指令826还可在其由计算机系统800执行期间完全或至少部分地驻存在主存储器804内和/或处理装置802内,主存储器804和处理装置802也构成机器可读存储介质。机器可读存储介质824、数据存储装置818和/或主存储器804可对应于图1的存储器子系统110。
在一个实施例中,指令826包含用以实施对应于使用如本文中所描述的具有接口桥的预取缓冲器(例如,图1的预取器113)的功能性的指令。虽然在实例实施例中将机器可读存储介质824展示为单个介质,但术语“机器可读存储介质”应认为包含存储一或多个指令集的单个介质或多个介质。还应认为术语“机器可读存储介质”包含能够存储或编码供机器执行且使得机器进行本公开的方法中的任何一或多种的指令集的任何介质。因此,应认为术语“机器可读存储介质”包含但不限于固态存储器、光学介质和磁性介质。
已关于计算机存储器内的数据位的操作的算法和符号表示而呈现先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量呈能够存储、组合、比较和以其它方式操纵的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、编号或其类似物是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便标签。本公开可指操纵计算机系统的寄存器和存储器内的表示为物理(电子)量的数据且将所述数据变换成计算机系统存储器或寄存器或其它这种信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于进行本文中的操作的设备。这一设备可以出于所需目的而专门建构,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储介质中,如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的介质,其各自连接到计算机系统总线。
本文中呈现的算法和显示本质上并不与任何特定计算机或另一设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明建构用以进行所述方法更加专用的设备是方便的。将如下文描述中所阐述而表现用于各种这些系统的结构。此外,不参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读介质。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、快闪存储器组件等。
在前述说明书中,本公开的实施例已经参考其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中所阐述的本公开的实施例的更广精神和范围的情况下对其进行各种修改。因此,应在说明性意义上而非限制性意义上看待本说明书和附图。
Claims (20)
1.一种接口桥,其包括:
确定性数据接口,其根据存储器标准;
非确定性数据接口,其根据不同于所述存储器标准的数据接口标准;以及
预取缓冲器的集合,所述接口桥经配置以执行包括以下各项的操作:
从耦合到所述确定性数据接口的存储器子系统的处理装置接收从耦合到所述非确定性数据接口的所述存储器子系统的存储器装置上的数据存储位置读取第一数据的请求,所述数据存储位置对应于与所述请求相关联地提供的存储器地址;以及
响应于所述请求:
基于所述存储器地址从所述预取缓冲器集合或所述存储器装置中的一个将所述第一数据提供到所述处理装置,所述第一数据通过所述确定性数据接口提供到所述处理装置;
确定是否从所述预取缓冲器集合或所述存储器装置中的至少一个将所述第一数据提供到所述处理装置;以及
基于预取策略且基于确定是否将所述第一数据从所述预取缓冲器集合或所述存储器装置中的至少一个提供到所述处理装置,通过所述非确定性数据接口将第二数据从所述存储器装置预取到所述预取缓冲器集合,所述第二数据在对应于依序存储器地址集合的数据存储位置集合处存储在所述存储器装置上,且所述依序存储器地址集合依序在所述存储器地址之后。
2.根据权利要求1所述的接口桥,其中所述存储器标准包括双数据速率DDR存储器标准。
3.根据权利要求1所述的接口桥,其中所述数据接口标准包括外围组件互连高速PCI-E标准。
4.根据权利要求1所述的接口桥,其中从所述存储器装置预取到所述预取缓冲器集合包括:
响应于确定从所述预取缓冲器集合将所述第一数据提供到所述处理装置:
将所述第二数据从所述存储器装置复制到所述预取缓冲器集合。
5.根据权利要求1所述的接口桥,其中从所述预取缓冲器集合或所述存储器装置中的一个将所述第一数据提供到所述处理装置包括:
基于所述存储器地址确定所述第一数据当前是否存储在所述预取缓冲器集合上;以及
响应于确定所述第一数据当前存储在所述预取缓冲器集合上,将所述第一数据从所述预取缓冲器集合提供到所述处理装置。
6.根据权利要求1所述的接口桥,其中从所述预取缓冲器集合或所述存储器装置中的一个将所述第一数据提供到所述处理装置包括:
基于所述存储器地址确定所述第一数据当前是否存储在所述预取缓冲器集合上;以及
响应于确定所述第一数据当前未存储在所述预取缓冲器集合上,将所述第一数据从所述存储器装置提供到所述处理装置。
7.根据权利要求6所述的接口桥,其中将所述第一数据从所述存储器装置提供到所述处理装置包括:
将所述第一数据从所述存储器装置复制到所述预取缓冲器集合;以及
从所述预取缓冲器集合提供所述第一数据的副本。
8.根据权利要求1所述的接口桥,其中所述操作进一步包括:
从所述处理装置接收将第三数据写入到所述存储器装置上的第二数据存储位置的第二请求,所述第二数据存储位置对应于与所述第二请求相关联地提供的第二存储器地址;以及
响应于所述第二请求:
确定现有数据当前是否与所述第二存储器地址相关联地存储在所述预取缓冲器集合上;以及
响应于确定现有数据当前与所述第二存储器地址相关联地存储在所述预取缓冲器集合上,将所述第三数据与所述存储器地址相关联地写入到至少所述预取缓冲器集合以及所述存储器装置两者,所述第三数据通过所述非确定性数据接口写入到所述存储器装置。
9.根据权利要求1所述的接口桥,其中所述预取缓冲器集合包括静态随机存取存储器SRAM装置集合、硬件寄存器集合以及组相联快取集合中的至少一个。
10.根据权利要求1所述的接口桥,其中所述操作进一步包括:
从所述处理装置接收指令以启用或停用将数据从所述存储器装置预取到所述预取缓冲器集合。
11.根据权利要求1所述的接口桥,其中所述处理装置是所述存储器子系统的存储器子系统控制器的一部分。
12.根据权利要求1所述的接口桥,其中所述请求由所述处理装置基于从主机系统到所述处理装置的另一请求产生。
13.根据权利要求1所述的接口桥,其中所述存储器装置是非易失性存储器装置。
14.根据权利要求13所述的接口桥,其中所述非易失性存储器装置包括NAND型存储器装置。
15.一种用于数据处理的方法,其包括:
通过接口桥的确定性数据接口从存储器子系统的处理装置接收从所述存储器子系统的存储器装置上的对应于存储器地址的数据存储位置读取第一数据的请求,所述处理装置耦合到所述确定性数据接口,所述存储器装置耦合到所述接口桥的非确定性数据接口,所述确定性数据接口是根据存储器标准,且所述非确定性数据接口根据不同于所述存储器标准的数据接口标准;以及
响应于所述请求:
通过所述接口桥且基于所述存储器地址从所述存储器装置或所述接口桥的预取缓冲器集合中的一个将所述第一数据提供到所述处理装置,所述第一数据通过所述确定性数据接口提供到所述处理装置;
确定是否从所述预取缓冲器集合或所述存储器装置中的至少一个将所述第一数据提供到所述处理装置;以及
基于预取策略且基于确定是否将所述第一数据从所述预取缓冲器集合或所述存储器装置中的至少一个提供到所述处理装置,通过所述非确定性数据接口将第二数据从所述存储器装置预取到所述预取缓冲器集合,将所述第二数据在对应于依序存储器地址集合的数据存储位置集合处存储在所述存储器装置上,且所述依序存储器地址集合依序在所述存储器地址之后。
16.根据权利要求15所述的方法,其中所述存储器标准包括双数据速率DDR存储器标准。
17.根据权利要求15所述的方法,其中所述数据接口标准包括外围组件互连高速PCI-E标准。
18.根据权利要求15所述的方法,其中从所述存储器装置预取到所述预取缓冲器集合包括:
响应于确定从所述预取缓冲器集合将所述第一数据提供到所述处理装置:
将所述第二数据从所述存储器装置复制到所述预取缓冲器集合。
19.根据权利要求15所述的方法,其中从所述预取缓冲器集合或所述存储器装置中的一个将所述第一数据提供到所述处理装置包括:
基于所述存储器地址确定所述第一数据当前是否存储在所述预取缓冲器集合上;以及
响应于确定所述第一数据当前存储在所述预取缓冲器集合上,将所述第一数据从所述预取缓冲器集合提供到所述处理装置。
20.至少一个非暂时性机器可读介质,其包括指令,所述指令在由接口桥执行时使得所述接口桥执行包括以下各项的操作:
从耦合到所述接口桥的确定性数据接口的存储器子系统的处理装置接收从耦合到所述接口桥的非确定性数据接口的存储器装置上的数据存储位置读取第一数据的请求,所述数据存储位置对应于与所述请求相关联地提供的存储器地址,所述确定性数据接口是根据存储器标准,所述非确定性数据接口是根据不同于所述存储器标准的数据接口标准;以及
响应于所述请求:
基于所述存储器地址从所述存储器装置或所述接口桥的预取缓冲器集合中的一个将所述第一数据提供到所述处理装置,所述确定性数据通过所述第一数据接口提供到所述处理装置;
确定是否从所述预取缓冲器集合或所述存储器装置中的至少一个将所述第一数据提供到所述处理装置;以及
基于预取策略且基于确定是否将所述第一数据从所述预取缓冲器集合或所述存储器装置中的至少一个提供到处理装置,将第二数据从所述存储器装置预取到所述预取缓冲器集合,所述第二数据在对应于依序存储器地址集合的数据存储位置集合处存储在所述存储器装置上,且所述依序存储器地址集合依序在所述存储器地址之后。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/928,766 | 2020-07-14 | ||
US16/928,766 US11372763B2 (en) | 2020-07-14 | 2020-07-14 | Prefetch for data interface bridge |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113934666A CN113934666A (zh) | 2022-01-14 |
CN113934666B true CN113934666B (zh) | 2024-04-26 |
Family
ID=79274481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110797371.7A Active CN113934666B (zh) | 2020-07-14 | 2021-07-14 | 数据接口桥的预取 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11372763B2 (zh) |
CN (1) | CN113934666B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11372762B2 (en) | 2020-07-14 | 2022-06-28 | Micron Technology, Inc. | Prefetch buffer of memory sub-system |
US11989142B2 (en) * | 2021-12-10 | 2024-05-21 | Samsung Electronics Co., Ltd. | Efficient and concurrent model execution |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236540A (zh) * | 2007-01-29 | 2008-08-06 | 国际商业机器公司 | 用于提供动态存储器预取的系统和方法 |
CN103907095A (zh) * | 2011-07-11 | 2014-07-02 | 内存技术有限责任公司 | 移动存储器高速缓存读取优化 |
CN110659220A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 基于非统一存储器访问(numa)特性的增强数据预取的装置、方法和系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6895475B2 (en) * | 2002-09-30 | 2005-05-17 | Analog Devices, Inc. | Prefetch buffer method and apparatus |
JP4945200B2 (ja) | 2006-08-29 | 2012-06-06 | 株式会社日立製作所 | 計算機システム及びプロセッサの制御方法 |
US8589632B1 (en) * | 2007-03-09 | 2013-11-19 | Cypress Semiconductor Corporation | Arbitration method for programmable multiple clock domain bi-directional interface |
US7660933B2 (en) * | 2007-10-11 | 2010-02-09 | Broadcom Corporation | Memory and I/O bridge |
US8423736B2 (en) | 2010-06-16 | 2013-04-16 | International Business Machines Corporation | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer |
JP2012133416A (ja) * | 2010-12-17 | 2012-07-12 | Toshiba Corp | メモリシステム |
US10592450B2 (en) * | 2016-10-20 | 2020-03-17 | Micron Technology, Inc. | Custom compute cores in integrated circuit devices |
US11188256B2 (en) * | 2018-06-19 | 2021-11-30 | Western Digital Technologies, Inc. | Enhanced read-ahead capability for storage devices |
CN109284240B (zh) * | 2018-10-15 | 2020-06-16 | 上海兆芯集成电路有限公司 | 存储器集成电路及其预取方法 |
US11372762B2 (en) | 2020-07-14 | 2022-06-28 | Micron Technology, Inc. | Prefetch buffer of memory sub-system |
-
2020
- 2020-07-14 US US16/928,766 patent/US11372763B2/en active Active
-
2021
- 2021-07-14 CN CN202110797371.7A patent/CN113934666B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236540A (zh) * | 2007-01-29 | 2008-08-06 | 国际商业机器公司 | 用于提供动态存储器预取的系统和方法 |
CN103907095A (zh) * | 2011-07-11 | 2014-07-02 | 内存技术有限责任公司 | 移动存储器高速缓存读取优化 |
CN110659220A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 基于非统一存储器访问(numa)特性的增强数据预取的装置、方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113934666A (zh) | 2022-01-14 |
US11372763B2 (en) | 2022-06-28 |
US20220019536A1 (en) | 2022-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11656983B2 (en) | Host-resident translation layer write command | |
US11741013B2 (en) | Prefetch buffer of memory sub-system | |
CN113010449B (zh) | 用于存储器子系统中命令的有效处理的方法、系统和非暂时性计算机可读存储媒体 | |
US11829636B2 (en) | Cold data identification | |
CN113934666B (zh) | 数据接口桥的预取 | |
CN115145838A (zh) | 在与非存储器中存储逻辑到物理映射 | |
CN115080458A (zh) | 在存储器子系统中高速缓存逻辑到物理映射信息 | |
CN115048043A (zh) | 基于整合存储器区描述数据的操作 | |
CN112948284A (zh) | 高速缓存媒体中的动态存取粒度 | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
CN113093990B (zh) | 存储器子系统处的数据块切换 | |
US11971816B2 (en) | Host system notification based on entry miss | |
US11698756B2 (en) | Cache-based memory read commands | |
US11797198B2 (en) | Memory instruction for memory tiers | |
US11403228B2 (en) | Memory device page program sequence | |
US11809332B2 (en) | Prefetch data associated with TLB fill requests | |
US11947453B2 (en) | Memory device with on-die cache | |
US20240103752A1 (en) | Managing trim commands in a memory sub-system | |
KR20240039284A (ko) | 스토리지 장치, 호스트 장치 및 전자 장치 |
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 |