CN107870873B - 基于按字节编址闪存的存储器模块和操作其的方法 - Google Patents

基于按字节编址闪存的存储器模块和操作其的方法 Download PDF

Info

Publication number
CN107870873B
CN107870873B CN201710651575.3A CN201710651575A CN107870873B CN 107870873 B CN107870873 B CN 107870873B CN 201710651575 A CN201710651575 A CN 201710651575A CN 107870873 B CN107870873 B CN 107870873B
Authority
CN
China
Prior art keywords
module
prefetch
write
mode
memory
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
Application number
CN201710651575.3A
Other languages
English (en)
Other versions
CN107870873A (zh
Inventor
张牧天
牛迪民
姜冬岩
郑宏忠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN107870873A publication Critical patent/CN107870873A/zh
Application granted granted Critical
Publication of CN107870873B publication Critical patent/CN107870873B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种基于按字节编址闪存的存储器模块和操作其的方法。一种将数据存储在存储器模块中的方法,所述存储器模块包括模块中预取器、模块中预取缓冲器、存储器和存储器控制器,所述方法包括:将地址信息从模块中预取器发送到存储器控制器和预取缓冲器;基于发送到存储器控制器的地址信息与发送到预取缓冲器的地址信息的比较,确定预取精度;基于预取精度,确定预取模式;基于预取模式,将数据存储在存储器中。

Description

基于按字节编址闪存的存储器模块和操作其的方法
本申请要求于2016年9月26日提交到美国专利与商标局的第62/400,048号美国临时申请的优先权和权益,所述美国临时申请的全部内容通过引用包含于此。
技术领域
根据本发明的实施例的一个或多个方面总体涉及一种改进的基于闪存的存储器模块和操作其的方法。
背景技术
在存储器存储领域,使用存储器存储大量数据的数据中心设法实现高容量、高性能、低功耗和低成本。当与动态随机存取存储器(DRAM)相比时,由于闪存能够以降低的成本来提供高容量和高效用电时,所以闪存可以是用于数据中心的可行候选。例如,闪存能够提供每个模块兆兆字节的存储,这是使用DRAM技术所能实现的十倍。此外,闪存使用较低的待机功率。
不幸地,当与DRAM相比时,闪存通常提供较弱的性能同时还具有更受限制的耐久性。例如,针对读取和写入操作,一些类型的闪存(例如,LLNAND或Z-NAND)可具有比使用DRAM技术实现的延迟明显更长的延迟。此外,为使得LLNAND按字节编址,存取粒度是2KB或4KB(而不是64B)。
发明内容
本公开的实施例的方面面向改进的基于闪存的存储器模块,并面向操作其的方法。
根据本发明的实施例,提供一种将数据存储在存储器模块中的方法,所述存储器模块包括模块中预取器、模块中预取缓冲器、存储器和存储器控制器,所述方法包括:将地址信息从模块中预取器发送到存储器控制器和预取缓冲器;基于发送到存储器控制器的地址信息与发送到预取缓冲器的地址信息的比较,确定预取精度;基于预取精度,确定预取模式;基于预取模式,将数据存储在存储器中。
所述方法还可包括:在模块中预取器的地址历史表接收地址信息;基于地址历史表,检测访问模式。
确定预取模式的步骤可包括:使用模块中预取器的预取模式寄存器来确定步幅、方向、粒度、预取时间和暂停时间中的至少一个。
基于存储在地址历史表中的地址历史和确定的预取精度确定步幅、方向、粒度、预取时间和暂停时间中的至少一个。
所述方法还可包括:基于步幅、方向和粒度,产生预取地址。
所述方法还可包括:基于确定的步幅、方向、粒度、预取时间和暂停时间中的至少一个,使用模块中预取器的预取调度器将请求发送到存储器控制器以触发预取操作。
所述方法还可包括:在所述存储器模块的模块中写入缓冲器和写入控制器模块接收地址信息;基于地址信息,确定回写模式和回写时间中的至少一个。
回写模式可包括:立即写入模式,用于将信息尽快写入存储器;或合并写模式,用于将来自写入缓冲器的多个信息块组合在到存储器的单个写入中。
在模块中写入缓冲器和写入控制器模块接收地址信息的步骤可包括在写入地址历史表接收地址信息,并且还可基于写入地址历史表确定回写模式和回写时间中的至少一个。
所述方法还可包括:将确定的回写模式或确定的回写时间发送到写入缓冲器和写入控制器模块的调度器;基于确定的回写模式或确定的回写时间,使用调度器调度从写入缓冲器到存储器的写入。
根据本发明的另一实施例,提供一种存储器模块,包括:存储器控制器;模块中预取器,用于将请求发送到存储器控制器以触发预取操作;模块中预取缓冲器,连接到模块中预取器并被配置为从模块中预取器接收数据;模块中写入缓冲器,用于存储将被写入到存储器的信息;模块中写入控制器,用于调度从模块中写入缓冲器到存储器的写入。
模块中预取器可包括:多个预取模式寄存器,用于确定所述存储器模块的预取模式,所述多个预取模式寄存器包括以下寄存器中的至少一个:步幅寄存器;方向寄存器;粒度寄存器;预取时间寄存器;暂停时间寄存器。
步幅寄存器可被配置为确定顺序预取模式、步幅预取模式或自动预取模式,其中,顺序预取模式使得模块中预取器被配置为顺序访问预取地址,步幅预取模式使得模块中预取器被配置为以偏移方式访问预取地址,自动预取模式使得模块中预取器被配置为基于地址历史和预取精度访问预取地址。此外,方向寄存器可被配置为确定升序模式、降序模式或自动模式,其中,升序模式使得模块中预取器被配置为以升序访问预取地址,降序模式使得模块中预取器被配置为以降序访问预取地址,自动模式使得模块中预取器被配置为基于地址历史和预取精度以降序或升序访问预取地址。此外,粒度寄存器可被配置为确定作为给定大小的固定粒度的粒度或基于地址历史和预取精度的粒度。此外,预取时间寄存器可被配置为确定持续预取模式、到来请求模式、高速缓冲存储器/预取未命中模式或自动模式,其中,持续预取模式使得模块中预取器被配置为持续执行预取,到来请求模式使得模块中预取器被配置为当存在到来请求时执行预取,高速缓冲存储器/预取未命中模式使得模块中预取器被配置为仅当高速缓冲存储器未命中或预取未命中时执行预取,自动模式使得模块中预取器被配置为基于地址历史和预取精度执行预取。此外,暂停时间寄存器可被配置为确定永久暂停模式、永不暂停模式、缓冲器容量模式和自动模式,其中,永久暂停模式使得模块中预取器被禁用,永不暂停模式使得模块中预取器一直被启用,缓冲器容量模式使得模块中预取器被配置为当预取缓冲器充满时被暂停,自动模式使得模块中预取器被配置为基于地址历史和预取精度被暂停。
模块中预取器可包括:预取调度器,用于根据从所述多个预取模式寄存器接收的信息将请求发送到存储器控制器。
模块中写入控制器可包括:多个写入缓冲器寄存器,所述多个写入缓冲器寄存器包括回写模式寄存器和回写时间寄存器。
回写模式寄存器可被配置为确定:立即写入模式,所述立即写入模式使得模块中写入缓冲器和模块中写入控制器模块被配置为将信息尽快写入到所述存储器模块的存储器;合并写模式,所述合并写模式使得模块中写入缓冲器和模块中写入控制器模块被配置为将单独的信息块组合成到存储器的单个写入;或自动模式,所述自动模式使得所述存储器模块被配置为使用写入地址历史表确定是使用立即写入模式还是合并写模式。
当回写模式寄存器确定合并写模式时,回写时间寄存器可被配置为基于时间、基于模块中写入缓冲器的容量或基于根据数据的持久性的优先级来确定用于将数据写入到存储器的时间。
所述存储器模块还可包括:DRAM,用于启用与主机的直接通信并用于作为所述存储器模块的存储器高速缓冲存储器进行操作,其中,模块中预取缓冲器和模块中写入缓冲器是DRAM的组件。
根据本发明的另一实施例,提供一种NVDIMM型模块,包括:存储器;模块中预取缓冲器;模块中预取器,用于确定步幅、方向、粒度、预取时间和暂停时间中的至少一个,并用于基于步幅、方向、粒度、预取时间和暂停时间中的所述至少一个产生预取地址;模块中写入缓冲器和写入控制器模块,用于确定是尽快地写入存储器还是将单独的数据块组合为到存储器的单个写入,并用于调度到存储器的写入。
所述NVDIMM型模块还可包括:存储器控制器,连接到存储器,连接到模块中预取缓冲器并连接到模块中预取器,其中,所述存储器控制器包括模块中写入缓冲器和写入控制器模块。
附图说明
参照说明书、权利要求和附图,本发明的实施例的这些和其他方面将被领会和理解,其中:
图1是描述根据本发明的实施例的基于闪存的存储器模块的组件的框图;
图2是指示根据本发明的实施例的图1的基于闪存的存储器模块的预取器的组件的框图;
图3是根据本发明的实施例的图1的基于闪存的存储器模块的模块中(in-module)写入缓冲器和写入控制器模块的框图。
具体实施方式
本公开的实施例的方面面向改进的基于闪存的存储器模块以及面向操作其的方法。
可通过参照实施例的下面的具体实施方式和附图来更加容易地理解本发明构思的特征和实现本发明构思的方法。以下,将参照附图对示例实施例进行更加具体地描述,在附图中相同的参考标记始终表示相同的元件。然而,本发明可以以各种不同的形式体现,并不应被解释为仅局限于这里示出的示例。相反地,提供这些实施例作为示例,以使本公开将是彻底的和完整的,并且将把本发明的方面和特征充分传达到本领域技术人员。因此,可不描述本领域普通技术人员完全理解本发明的方面和特征所不需要的处理、元件和技术。除非另外记录,否则贯穿附图和写的描述,相同的参考标记表示相同的元件,并因此其描述可不被重复。在附图中,为了清楚,可能夸大元件、层和区域的相对大小。
将理解,尽管可在这里使用术语“第一”、“第二”、“第三”等描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应该由这些术语限制。这些术语用于将一个元件、组件、区域、层或部分与另一个元件、组件、区域、层或部分进行区分。因此,在不脱离本发明的精神和范围的情况下,以下描述的第一元件、组件、区域、层或部分可被称为第二元件、组件、区域、层或部分。
空间相对术语(诸如,“在…以下”、“在…下面”、“低于”、“在…之下”、“在…之上”、“上面的”等)可在这里使用以便于解释描述如在附图中示出的一个元件或特征与另外的元件或特征的关系。将理解,空间相对术语意图包含除了在附图中描述的方向之外的装置在使用或操作中的不同方向。例如,如果翻转在附图中的装置,则被描述为在其他元件或特征“下面”或“以下”或“之下”的元件将会被定向为在其他元件或特征的“上面”。因此,示例术语“在…下面”和“在…之下”可包含上面和下面的两个方向。装置可被另外定向(旋转90度或朝向其他方向),并应该相应地解释这里使用的与空间相关的描述符。
将理解,当元件、层、区域或组件被称为“在……上”、“连接到”或“结合到”另一个元件、层、区域或组件时,它可直接在该另一个元件、层、区域或组件上、连接到或结合到所述另一个元件、层、区域或组件,或者可存在一个或多个中间元件、层、区域或组件。此外,还将理解,当元件或层被称为在两个元件或层“之间”时,该两个元件或层之间可仅有该元件或层,或者还可存在一个或多个中间元件或层。
这里使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用,除非上下文另外明确地指示,否则单数形式也意图包括复数形式。还将理解,当在本说明书中使用术语“包括”和“包含”时,说明存在阐述的特征、整体、步骤、操作、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。如这里所使用,术语“和/或”包括一个或多个关联的列出项的任何和全部组合。当诸如“…中的至少一个”的表述在一列元素之后时,其修饰整列元素,而不是修饰所述列的单个元素。
如这里所使用,术语“基本上”、“大约”和类似术语被用作近似的术语,而不是作为程度的术语,并意图说明将由本领域普通技术人员所认识到的测量或计算的值的固有偏差。此外,在描述本发明的实施例时的“可”的使用表示“本发明的一个或多个实施例”。如这里所使用,术语“使用”和“用于”可被考虑为分别与“利用”和“利用于”同义。此外,术语“示例性”意图表示示例或示出。
当特定实施例可被不同地实现时,特定处理顺序可不同于描述的顺序被执行。例如,可基本上同时执行或以与描述的顺序相反的顺序执行两个连续描述的处理。
可利用任何合适的硬件、固件(例如,专用集成电路)、软件,或者软件、固件和硬件的组合来实现这里描述的根据实施例的电子或电气装置和/或任何其他的相关装置或组件。例如,可在一个集成电路(IC)芯片上或在单独的IC芯片上形成这些装置的各种组件。此外,可在柔性印刷电路膜、载带封装(TCP)、印刷电路板(PCB)上实现这些装置的各种组件,或在一个基底上形成这些装置的各种组件。此外,这些装置的各种组件可以是一个或多个计算装置中的在一个或多个处理器上运行的进程或线程,其中,该一个或多个处理器执行计算机程序指令并与其他系统组件进行交互以执行这里描述的各种功能。计算机程序指令存储在可使用标准存储器装置而被实现在计算装置中的存储器(诸如,例如,随机存取存储器(RAM))中。计算机程序指令还可存储在其他非暂时性计算机可读介质(诸如,例如,CD-ROM、闪存装置等)中。此外,本领域技术人员应认识到,在不脱离描述的实施例的精神和范围的情况下,各种计算装置的功能可被组合或集成到单个计算装置中,或者特定计算装置的功能可分布在一个或多个其他计算装置中。
除非另有定义,否则这里使用的所有术语(包括技术术语和科学术语)具有和本发明所属领域的普通技术人员普遍理解的含义相同的含义。还将理解,除非在这里明确地定义,否则术语(诸如在通用字典中定义的术语)应该被解释为具有与它们在相关领域的语境和/或本说明书中的含义一致的含义,而不应被解释为理想化或过于形式化的含义。
如上所述,当与动态随机存取存储器(DRAM)相比时,基于闪存的存储器可具有一些优势和劣势。当使用基于闪存的存储器时,可看出,预取(即,将数据从存储器传送到暂时存储以供稍后使用和更快存取)可对特定应用(例如,如果相应的访问模式是可预测的)是有用的。例如,关于受限玻尔兹曼机(RBM)或关于机器学习(例如,卷积神经网络的全连接层)使用的预取可通过允许快速访问位于存储器中的公共物理行上的多个数据字来减少延迟。例如,预取总是成功获得期望的数据,则读取延迟可通过使用预取而被减小至纳秒级,其中,读取延迟可通过将预取缓冲器延迟、控制器延迟和协议开销相加在一起来计算。
因此,本发明的实施例提供一种在减轻长访问延迟和提高耐久性的同时还能够实现快速和按字节编址的访问的基于闪存(例如,基于LLNAND)的存储器模块的架构。此外,基于闪存的存储器模块可结合新颖、改进的存储器接口协议使用。此外,这里描述的架构可结合非暂时性双列直插式存储器模块(例如,能够将NAND和DRAM二者映射到存储器地址空间中的NVDIMM-P LLNAND模块)或任何其他基于事务的LLNAND模块(例如,作为使用异步存储器协议的基于潜在未来标准事务的模块的Gen-Z LLNAND模块)使用。
图1是描述根据本发明的实施例的基于闪存的存储器模块的组件的框图。
参照图1,示出了基于闪存的存储器模块(例如,NVDIMM-P模块)100。虽然在这里描述NVDIMM型模块,但是本发明的其他实施例可包括不同类型的DIMM或者不同类型的基于闪存的存储器模块。将把注意力放在实现延迟减少的模块中预取器200(以下,还被称为预取器200)和模块中预取缓冲器160(以下,还被称为预取器缓冲器160)(例如,位于模块100内)上。还将把注意力放在能够在模块中使写合并以提高模块100的耐久性的写入控制器144和写入缓冲器142(例如,如图3所示的模块中写入缓冲器和写入控制器300)上。下面将参照图2和图3对这些组件和特征进行更加详细的描述。此外,应当注意,虽然本实施例指示写入缓冲器142和预取缓冲器160是单独的模块,但是写入缓冲器142和预取缓冲器160可以是单个模块的部分,或者可替代地位于单独的芯片上。在其他实施例中,写入缓冲器142和预取缓冲器160可以是DRAM 110的DRAM缓冲器的单独的逻辑分支。
地址总线(例如,列地址总线CA)170和DQ总线180(例如,数据总线)提供允许模块100与主机之间的通信的存储器接口。此外,前端DRAM 110包括在模块100中,以使得能够与主机的直接通信并用作存储器高速缓冲存储器。数据缓冲器120连接到DRAM 110,其中,数据缓冲器120用作能够与主机通信的暂时存储。寄存时钟驱动器(RCD)缓冲器130也连接到DRAM 100,其中,寄存时钟驱动器(RCD)缓冲器130被用于缓冲与从主机接收的地址信息(例如,列地址信息)对应的信息。
存储器控制器(例如,LLNAND控制器)140被提供作为到存储器/数据存储(例如,后端LLNAND数据存储)150的接口,存储器/数据存储(例如,后端LLNAND数据存储)150能够提供足够用于数据存储的高容量存储器。因此,如果主机想要访问存储在后端LLNAND数据存储150中的数据,则主机必须首先与LLNAND控制器140通信,其中,后端LLNAND数据存储150可包括多个LLNAND模块150a-150z。虽然这里描述了LLNAND控制器140和相应的LLNAND数据存储150,但是基于闪存的存储器的其他类型的存储器控制器和数据存储可关于本发明的其他实施例而被使用。
如下面将进一步参照图3所描述的那样,写入缓冲器142和写入控制器144被安置在LLNAND控制器140内,其中,写入缓冲器142能够暂时存储将被发送到后端LLNAND数据存储150的写入数据,写入控制器144能够调度何时和如何将数据回写到LLNAND数据存储150。高速缓冲存储器控制器146也被安置在LLNAND控制器140内。虽然主机能够直接访问DRAM110,但是在一些示例中,LLNAND控制器140可替代包括在主机内的用于控制模块100的主控制器,而起主控制器的作用,在这种情况下,LLNAND控制器140可使用其中的高速缓冲存储器控制器146访问DRAM110。
预取器200和预取缓冲器160还包括在模块100中,将参照图2对预取器200和预取缓冲器160进行描述。
图2是指示根据本发明的实施例的图1的基于闪存的存储器模块的预取器的组件的框图。
参照图2,本实施例的模块中预取器200包括多个预取模式寄存器210,其中,多个预取模式寄存器210使主机/主控制器能够决定模块100将使用哪种类型的预取模式。
第一预取模式寄存器可被称为步幅寄存器(stride register)210a。步幅寄存器210a确定预取器200是将进行步幅预取(例如,将预取从前一地址偏移某距离“S”的地址)、将进行顺序预取(例如,在顺序预取模式下,顺序预取或使用等于1的步幅距离“S”预取)还是将执行自动预取模式,这可由模块100基于地址历史和预取精度230来确定,其中,地址历史可存储在预取器200中的地址历史表220(以下可使用标号220指示地址历史表220中的地址历史)中,预取精度230可在预取器200内被计算。因此,主机可指定使用顺序预取还是步幅预取,使得模块100将继续使用相应的预取模式,直到主机改变由步幅寄存器210a指示的预取的类型。可选地,主机可允许模块100通过对步幅寄存器210a进行编程来对应于自动预取模式以决定使用哪种预取模式。
第二预取模式寄存器可被称为方向寄存器210b。方向寄存器210b可指定以升序访问预取地址(例如,升序模式,其中,预取地址对应于用于步幅距离的正的“S”)或者以降序访问预取地址(例如,降序模式,其中,预取地址对应于用于步幅距离的负的“S”)。因此,当方向寄存器210b指示降序时,主机将指定以降序预取预取地址;当方向寄存器210b指示升序时,主机将指定以升序预取预取地址。此外,方向寄存器210b可指定自动模式,使得访问预取地址的方向可由模块100(例如,基于地址历史220和计算的预取精度230)确定。
第三预取模式寄存器可被称为粒度(granularity)寄存器210c。粒度寄存器210c可指定粒度是可被固定为4KB的倍数的固定粒度,可指定粒度是固定粒度“N”(其中,“N”可以是任何大小(例如,2KB)),或者可指定自动模式的使用,使得粒度可由模块100(例如,基于地址历史220和计算的预取精度230)确定。
第四预取模式寄存器可被称为预取时间寄存器210d。预取时间寄存器210d可确定模块100何时执行预取。作为第一选项,在持续预取模式下,预取时间寄存器210d使得能够进行持续预取,其中,预取保持持续而不管计算的预取精度230如何。作为第二选项,预取时间寄存器210d可指定模块100仅当存在从主机接收的到来请求时执行预取。作为第三选项,预取时间寄存器210d可确定模块100仅当存在预取未命中或高速缓存未命中(例如,与模块100的DRAM 110对应的DRAM高速缓存未命中)时进行预取。作为第四选项,预取时间寄存器210d可启用自动模式(例如,模块100可基于地址历史220和计算的预取精度230确定何时预取)。
第五预取模式寄存器可被称为被配置为限定预取暂停时间(以下,还可被称为暂停时间)的暂停时间寄存器210e。也就是说,暂停时间寄存器210e可指示模块100何时应该停止预取。例如,作为第一选项,主机/主控制器可设置暂停时间寄存器210e,使得预取被禁用并因此永不被执行(例如,预取器200一直被暂停)。作为第二选项,主机可设置暂停时间寄存器210e,使得预取不管情形如何都发生(例如,预取器200永不被暂停)。作为第三选项,暂停时间寄存器210e可被设置,使得当预取缓冲器160(预取缓冲器160可以是2端口随机存取存储器(RAM))充满时暂停预取操作,当预取缓冲器160具有充足量的可用容量时可不暂停预取操作。作为第四选项,暂停时间寄存器210e可将暂停时间设置为自动模式,使得模块100(例如,基于地址历史220和计算的预取精度230)确定暂停时间。
因此,通过使用描述的寄存器210,预取选项可由主机确定,或可由模块100替代地确定。此外,预取器200可基于存储在地址历史表中的地址历史和确定的预取精度来确定步幅、方向、粒度、预取时间和暂停时间中的至少一个。
预取器200可从模块100的RCD缓冲器130接收与地址信息对应的信息。预取器200可包括解码器240,其中,解码器240能够将从RCD缓冲器130接收的信息解码,并能够单独地将解码的地址信息发送到LLNAND控制器140以及(例如,通过预取缓冲器调度器280)单独地将解码的地址信息发送到预取缓冲器160。可将单独解码的地址信息(即,发送到LLNAND控制器140的解码的地址信息和发送到预取缓冲器160的解码的地址信息)进行彼此比较,以使得能够进行预取精度230的计算。因此,预取精度有效充当发送到预取缓冲器160的反馈信息,以使预取缓冲器160能够基于计算的预取精度230调整和改善它的预取策略/预取模式。
因此,预取器200能够通过使用预取精度230和从地址历史表220获得的地址历史来检测访问模式。预取器200还能够使用步幅寄存器210a、方向寄存器210b、粒度寄存器210c的设置,来分别计算步幅250、计算方向252并计算粒度254,并因此产生将被发送到预取调度器270的预取地址和粒度260。
预取器200还能够使用预取精度230以及地址历史220以及预取时间寄存器210d和暂停时间寄存器210e的设置,来计算预取时间256并计算预取暂停时间258。预取时间和预取暂停时间还可被发送到预取调度器270。基于与步幅、方向、粒度、预取时间和暂停时间中的至少一个对应的信息,预取调度器270能够以请求的形式将信息发送到LLNAND控制器140以触发预取,并使LLNAND控制器140能够决定从LLNAND 150读取什么。
此外,当检测到预取命中,这意味着在预取缓冲器160中找到期望的数据时,预取缓冲器调度器280可简单直接地访问预取缓冲器160,因而避免需要为了期望的数据而访问LLNAND 150。
预取地址还被发送到预取缓冲器调度器280,其中,预取缓冲器调度器280被配置为确定何时从预取缓冲器160读取以及从预取缓冲器160读取什么。预取缓冲器160可以以64B粒度被访问,并可由专用功能寄存器配置。应注意,预取缓冲器160可以是单独的并独立于LLNAND 150的物理的预取模式寄存器210的部分。
图3是根据本发明的实施例的图1的基于闪存的存储器模块的模块中写入缓冲器和写入控制器模块的框图。
参照图3,本实施例的模块中写入缓冲器和写入控制器模块300可具有两个相应的写入缓冲器寄存器310。第一写入缓冲器寄存器可被称为被配置为限定回写模式的回写模式寄存器310a,第二写入缓冲器寄存器可被称为被配置为限定回写时间的回写时间寄存器310b。
针对回写模式寄存器310a,用于回写模式的第一选项是允许立即写入,这意味着无论何时信息被包含在写入缓冲器142中,然后LLNAND控制器140都可尽可能快地将信息回写到LLNAND 150。例如,LLNAND控制器140可立即高效地将64B的信息从写入缓冲器142回写到LLNAND 150。虽然这个立即回写模式增加了写入缓冲器142的可用性,但是应注意,即使当写入信息仅包含64B时也需要2KB写入带宽的LLNAND写入带宽被浪费,这可因而负面影响LLNAND 150的耐久性。
回写模式寄存器310a还可选择采用第二选择,以允许合并写(coalesced write)。虽然用于LLNAND 150的粒度是在2KB范围中,但是用于前端访问(例如,访问DRAM 110)的粒度仅是64B。因此,通过允许合并写,通过组合来自写入缓冲器142的多个信息块以因而产生单个LLNAND写入(例如,大约2KB的LLNAND写入),写入到LLNAND 150的总次数可被减少,因而延长了LLNAND 150的耐久性和寿命,其中,多个信息块中的每个信息块为64B。因此,通过利用合并写选项,浪费的LLNAND写入带宽的量可被减少。然而,写入缓冲器142的可用性可被降低。也就是说,因为多个64B写入会在执行写入之前被排队和合并,所以64B信息块可在它与将被回写到LLNAND 150的足量其他信息块合并之前保持在写入缓冲器142中一个延长的时间段。
回写模式寄存器310a所利用的第三选项可以是自动模式,其中,在自动模式下,模块100可决定使用何种回写模式(例如,立即写入模式或合并写模式)。例如,模块100可使用模块中写入缓冲器和写入控制器模块中的写入地址历史表350来确定最佳回写模式是立即写入模式还是合并写模式。
第二写入缓冲器寄存器可被称为用于配置回写时间的回写时间寄存器310b。回写时间寄存器310b可结合上面描述的合并写模式来使用。如果回写模式寄存器310a选择使用合并写选项,则在不将信息从写入缓冲器142回写到LLNAND 150的情况下,理论上可永久等待。因此,为避免数据永不被回写到LLNAND 150的情境,通过使用回写时间寄存器310b,当利用合并写选项时,可使用与最大等待时间对应的阈值时间或事件。
确定的回写时间330可根据时间、写入缓冲器142的容量或基于持久性的优先级来确定。因为NAND技术具有保存持久数据的好处,所以回写时间寄存器310b可通过确定被标记为持久的信息接收优先级或穿过写入缓冲器142而被回写到LLNAND 150中,来加强持久性。因此,例如,到LLNAND 150的回写可根据下列情况的首先发生来调度:当64B信息块已经在写入缓冲器142中停留超过给定的时间时;当写入缓冲器142达到给定的缓冲器容量(例如,基于在缓冲器容量模式下的写入缓冲器的充满的百分比)时;或者当回写的优先级基于持久性来分配时。
此外,应当注意,在其他实施例中,预取缓冲器160和写入缓冲器142中的一个或二者可被实例化为模块100的DRAM 110的组件。此外,应当注意,在其他实施例中,写入缓冲器142可与写入控制器144是分离的。在本实施例中,模块中写入缓冲器和写入控制器模块300包括写入地址历史表350。因此,写入缓冲器142可将写入地址历史表350用作用于确定回写模式320和回写时间330的基础。当确定回写模式320和回写时间330时,与其对应的信息可被输入到模块中写入缓冲器和写入控制器模块300中的调度器340。调度器340可使用这个信息确定写入缓冲器142何时回写到LLNAND 150、什么信息被回写到LLNAND 150以及信息被回写到LLNAND 150的顺序。
因此,上面描述的实施例提供一种基于闪存的存储器模块,所述基于闪存的存储器模块能够充足地存储大量数据,同时通过基于从地址历史和预取精度确定的访问模式调整预取策略来实现减少的延迟,同时还在基于写入地址历史选择性地调度到存储器的写入来实现提高的耐久性。
前述内容是说明性的示例实施例,并将不被解释为限制示例实施例。虽已经描述了一些示例实施例,但是本领域技术人员将容易理解,在不实质脱离示例实施例的新颖的教导和优点的情况下,很多修改是可能的。因此,全部这样的修改意图包括在如权利要求所限定的示例实施例的范围内。在权利要求书中,手段加功能子句意图覆盖这里描述的执行叙述的功能的结构、以及结构的等同物还有等同的结构。因此,将理解,前述内容是说明性的示例实施例,示例实施例将不被解释为被限制到公开的特定示例实施例,并且对公开的示例实施例以及其他示例实施例的修改意图包括在所附权利要求的范围内。本发明构思由权利要求限定,权利要求具有将包括在其中的权利要求的等同物。

Claims (20)

1.一种将数据存储在存储器模块中的方法,所述存储器模块包括模块中预取器、模块中预取缓冲器、存储器和存储器控制器,所述方法包括:
将解码的第一地址信息和解码的第二地址信息分别从模块中预取器发送到存储器控制器和模块中预取缓冲器;
基于发送到存储器控制器的解码的第一地址信息与发送到模块中预取缓冲器的解码的第二地址信息的比较,确定预取精度;
基于预取精度,确定预取模式;
基于预取模式,将数据存储在存储器中。
2.如权利要求1所述的方法,还包括:
将第一地址信息或第二地址信息作为地址历史存储在模块中预取器的地址历史表中;
基于地址历史表,检测访问模式。
3.如权利要求2所述的方法,其中,确定预取模式的步骤包括:使用模块中预取器的预取模式寄存器来确定步幅、方向、粒度、预取时间和暂停时间中的至少一个。
4.如权利要求3所述的方法,其中,基于存储在地址历史表中的地址历史和确定的预取精度确定步幅、方向、粒度、预取时间和暂停时间中的至少一个。
5.如权利要求3所述的方法,还包括:基于步幅、方向和粒度,产生预取地址。
6.如权利要求3所述的方法,还包括:基于确定的步幅、方向、粒度、预取时间和暂停时间中的至少一个,使用模块中预取器的预取调度器将请求发送到存储器控制器以触发预取操作。
7.如权利要求1所述的方法,还包括:
在所述存储器模块的模块中写入缓冲器和写入控制器模块接收第一地址信息或第二地址信息;
基于第一地址信息或第二地址信息,确定回写模式和回写时间中的至少一个。
8.如权利要求7所述的方法,其中,回写模式包括:立即写入模式,用于将信息尽快回写到存储器;合并写模式,用于将来自所述存储器模块的模块中写入缓冲器和写入控制器模块的多个信息块组合在到存储器的单个写入中。
9.如权利要求7所述的方法,其中,在模块中写入缓冲器和写入控制器模块接收第一地址信息或第二地址信息的步骤包括:将第一地址信息或第二地址信息作为地址历史存储在写入地址历史表中;
其中,还基于写入地址历史表确定回写模式和回写时间中的至少一个。
10.如权利要求7所述的方法,还包括:
将确定的回写模式或确定的回写时间发送到模块中写入缓冲器和写入控制器模块的调度器;
基于确定的回写模式或确定的回写时间,使用调度器调度从写入缓冲器到存储器的写入。
11.一种存储器模块,包括:
存储器控制器,包括模块中写入缓冲器和模块中写入控制器,其中,模块中写入缓冲器用于存储将被写入到存储器的信息,模块中写入控制器用于调度从模块中写入缓冲器到存储器的写入;
模块中预取器,用于将请求发送到存储器控制器以触发预取操作;
模块中预取缓冲器,连接到模块中预取器并被配置为从模块中预取器接收数据,
其中,模块中预取器被配置为:将解码的第一地址信息和解码的第二地址信息分别从模块中预取器发送到存储器控制器和模块中预取缓冲器;基于发送到存储器控制器的解码的第一地址信息与发送到模块中预取缓冲器的解码的第二地址信息的比较,确定预取精度;并且基于预取精度,确定所述存储器模块的预取模式。
12.如权利要求11所述的存储器模块,其中,模块中预取器包括:多个预取模式寄存器,用于确定所述存储器模块的预取模式,所述多个预取模式寄存器包括以下寄存器中的至少一个:
步幅寄存器;
方向寄存器;
粒度寄存器;
预取时间寄存器;
暂停时间寄存器。
13.如权利要求12所述的存储器模块,
其中,步幅寄存器被配置为确定顺序预取模式、步幅预取模式或自动预取模式,其中,顺序预取模式使得模块中预取器被配置为顺序访问预取地址,步幅预取模式使得模块中预取器被配置为以偏移方式访问预取地址,自动预取模式使得模块中预取器被配置为基于地址历史和预取精度访问预取地址,
其中,方向寄存器被配置为确定升序模式、降序模式或自动模式,其中,升序模式使得模块中预取器被配置为以升序访问预取地址,降序模式使得模块中预取器被配置为以降序访问预取地址,自动模式使得模块中预取器被配置为基于地址历史和预取精度以降序或升序访问预取地址,
其中,粒度寄存器被配置为确定作为给定大小的固定粒度的粒度或基于地址历史和预取精度的粒度,
其中,预取时间寄存器被配置为确定持续预取模式、到来请求模式、高速缓冲存储器/预取未命中模式或自动模式,其中,持续预取模式使得模块中预取器被配置为持续执行预取,到来请求模式使得模块中预取器被配置为当存在到来请求时执行预取,高速缓冲存储器/预取未命中模式使得模块中预取器被配置为仅当高速缓冲存储器未命中或预取未命中时执行预取,自动模式使得模块中预取器被配置为基于地址历史和预取精度执行预取;
其中,暂停时间寄存器被配置为确定永久暂停模式、永不暂停模式、缓冲器容量模式或自动模式,其中,永久暂停模式使得模块中预取器被禁用,永不暂停模式使得模块中预取器一直被启用,缓冲器容量模式使得模块中预取器被配置为当预取缓冲器充满时被暂停,自动模式使得模块中预取器被配置为基于地址历史和预取精度被暂停。
14.如权利要求12所述的存储器模块,其中,模块中预取器还包括:预取调度器,用于根据从所述多个预取模式寄存器接收的信息将请求发送到存储器控制器。
15.如权利要求11所述的存储器模块,其中,模块中写入控制器包括:多个写入缓冲器寄存器,所述多个写入缓冲器寄存器包括:
回写模式寄存器;
回写时间寄存器。
16.如权利要求15所述的存储器模块,其中,回写模式寄存器被配置为确定:
立即写入模式,所述立即写入模式使得模块中写入缓冲器和模块中写入控制器被配置为将信息尽快写入到所述存储器模块的存储器;
合并写模式,所述合并写模式使得模块中写入缓冲器和模块中写入控制器被配置为将单独的信息块组合成到存储器的单个写入;或
自动模式,所述自动模式使得所述存储器模块被配置为使用写入地址历史表确定是使用立即写入模式还是合并写模式。
17.如权利要求16所述的存储器模块,其中,当回写模式寄存器确定合并写模式时,回写时间寄存器被配置为基于时间、基于模块中写入缓冲器的容量或基于根据数据的持久性的优先级来确定用于将数据写入到存储器的时间。
18.如权利要求11所述的存储器模块,还包括:DRAM,用于启用与主机的直接通信并用于作为所述存储器模块的存储器高速缓冲存储器进行操作,
其中,模块中预取缓冲器和模块中写入缓冲器是DRAM的组件。
19.一种NVDIMM型模块,包括:
存储器;
模块中预取缓冲器;
模块中预取器,用于确定步幅、方向、粒度、预取时间和暂停时间中的至少一个,并用于基于步幅、方向、粒度、预取时间和暂停时间中的所述至少一个产生预取地址;
模块中写入缓冲器和写入控制器模块,用于确定是尽快地写入存储器还是将单独的数据块组合为到存储器的单个写入,并用于调度到存储器的写入,
其中,模块中预取器被配置为:将解码的第一地址信息和解码的第二地址信息分别从模块中预取器发送到存储器控制器和模块中预取缓冲器;基于发送到存储器控制器的解码的第一地址信息与发送到模块中预取缓冲器的解码的第二地址信息的比较,确定预取精度;并且基于预取精度,确定所述NVDIMM型模块的预取模式。
20.如权利要求19所述的NVDIMM型模块,还包括:存储器控制器,连接到存储器,连接到模块中预取缓冲器并连接到模块中预取器,其中,所述存储器控制器包括模块中写入缓冲器和写入控制器模块。
CN201710651575.3A 2016-09-26 2017-08-02 基于按字节编址闪存的存储器模块和操作其的方法 Active CN107870873B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662400048P 2016-09-26 2016-09-26
US62/400,048 2016-09-26
US15/349,949 2016-11-11
US15/349,949 US10866897B2 (en) 2016-09-26 2016-11-11 Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer

Publications (2)

Publication Number Publication Date
CN107870873A CN107870873A (zh) 2018-04-03
CN107870873B true CN107870873B (zh) 2023-08-08

Family

ID=61686251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710651575.3A Active CN107870873B (zh) 2016-09-26 2017-08-02 基于按字节编址闪存的存储器模块和操作其的方法

Country Status (5)

Country Link
US (1) US10866897B2 (zh)
JP (1) JP2018055683A (zh)
KR (1) KR102381449B1 (zh)
CN (1) CN107870873B (zh)
TW (1) TWI761360B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102353859B1 (ko) * 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
KR102101622B1 (ko) * 2017-12-06 2020-04-17 주식회사 멤레이 메모리 제어 장치 및 이를 포함하는 컴퓨팅 디바이스
US10929291B2 (en) * 2017-12-06 2021-02-23 MemRay Corporation Memory controlling device and computing device including the same
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10713053B2 (en) 2018-04-06 2020-07-14 Intel Corporation Adaptive spatial access prefetcher apparatus and method
US11948073B2 (en) 2018-04-20 2024-04-02 Advanced Micro Devices, Inc. Machine learning inference engine scalability
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
KR20200015233A (ko) 2018-08-03 2020-02-12 삼성전자주식회사 불휘발성 메모리 장치들을 포함하는 반도체 메모리 모듈
TWI703566B (zh) * 2018-08-30 2020-09-01 大陸商合肥沛睿微電子股份有限公司 快閃記憶體控制器及相關的存取方法及電子裝置
TWI698874B (zh) * 2018-08-31 2020-07-11 大陸商合肥沛睿微電子股份有限公司 快閃記憶體控制器及相關的存取方法及電子裝置
CN110888588B (zh) * 2018-09-07 2023-09-01 合肥沛睿微电子股份有限公司 快闪记忆体控制器及相关的访问方法及电子装置
CN111104054B (zh) * 2018-10-29 2023-10-27 伊姆西Ip控股有限责任公司 管理输入/输出操作的方法、装置和计算机程序产品
US11769041B2 (en) 2018-10-31 2023-09-26 Advanced Micro Devices, Inc. Low latency long short-term memory inference with sequence interleaving
JP2020091930A (ja) 2018-12-07 2020-06-11 キオクシア株式会社 半導体記憶装置
CN111353575A (zh) * 2018-12-20 2020-06-30 超威半导体公司 用于卷积神经网络的图块化格式
JP7140972B2 (ja) * 2018-12-21 2022-09-22 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
CN111723918A (zh) 2019-03-18 2020-09-29 超威半导体公司 用于卷积内核的自动生成和调谐工具
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
CN110427332B (zh) 2019-08-05 2021-08-20 上海兆芯集成电路有限公司 数据预取装置、数据预取方法及微处理器
CN110704107B (zh) * 2019-09-30 2022-03-22 上海兆芯集成电路有限公司 预取器、预取器的运作方法及处理器
US11231930B2 (en) * 2019-11-25 2022-01-25 Alibaba Group Holding Limited Methods and systems for fetching data for an accelerator
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11803311B2 (en) 2021-03-31 2023-10-31 Advanced Micro Devices, Inc. System and method for coalesced multicast data transfers over memory interfaces

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001166989A (ja) * 1999-12-07 2001-06-22 Hitachi Ltd プリフェッチ機構を有するメモリシステム及びその動作方法
US20020144062A1 (en) * 2001-03-29 2002-10-03 Hitachi, Ltd. Hardware prefetch system
US6496905B1 (en) * 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
US6571318B1 (en) * 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
CN101236540A (zh) * 2007-01-29 2008-08-06 国际商业机器公司 用于提供动态存储器预取的系统和方法
CN101558391A (zh) * 2006-12-15 2009-10-14 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04233642A (ja) * 1990-07-27 1992-08-21 Dell Usa Corp キャッシュアクセスと並列的にメモリアクセスを行なうプロセッサ及びそれに用いられる方法
JP2881049B2 (ja) * 1991-07-30 1999-04-12 株式会社日立製作所 プリフェッチバッファ
US5721860A (en) * 1994-05-24 1998-02-24 Intel Corporation Memory controller for independently supporting synchronous and asynchronous DRAM memories
US5699548A (en) * 1995-06-01 1997-12-16 Intel Corporation Method and apparatus for selecting a mode for updating external memory
US5941981A (en) * 1997-11-03 1999-08-24 Advanced Micro Devices, Inc. System for using a data history table to select among multiple data prefetch algorithms
US6532505B1 (en) * 1999-11-12 2003-03-11 Infineon Technologies Ag Universal resource access controller
US6496277B1 (en) * 1999-07-23 2002-12-17 Xerox Corporation Data flow control and storage facility for an image reproduction system
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US20070233955A1 (en) 2000-01-06 2007-10-04 Super Talent Electronics Inc. Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces
US6880073B2 (en) * 2000-12-28 2005-04-12 International Business Machines Corporation Speculative execution of instructions and processes before completion of preceding barrier operations
US6499085B2 (en) * 2000-12-29 2002-12-24 Intel Corporation Method and system for servicing cache line in response to partial cache line request
US6801980B2 (en) * 2002-04-25 2004-10-05 International Business Machines Corporation Destructive-read random access memory system buffered with destructive-read memory cache
US6862223B1 (en) 2002-07-05 2005-03-01 Aplus Flash Technology, Inc. Monolithic, combo nonvolatile memory allowing byte, page and block write with no disturb and divided-well in the cell array using a unified cell structure and technology with a new scheme of decoder and layout
US6983356B2 (en) * 2002-12-19 2006-01-03 Intel Corporation High performance memory device-state aware chipset prefetcher
US6976147B1 (en) * 2003-01-21 2005-12-13 Advanced Micro Devices, Inc. Stride-based prefetch mechanism using a prediction confidence value
US7260685B2 (en) * 2003-06-20 2007-08-21 Micron Technology, Inc. Memory hub and access method having internal prefetch buffers
US7238218B2 (en) * 2004-04-06 2007-07-03 International Business Machines Corporation Memory prefetch method and system
US7472222B2 (en) * 2004-10-12 2008-12-30 Hitachi Global Storage Technologies Netherlands B.V. HDD having both DRAM and flash memory
US7743202B2 (en) * 2006-03-09 2010-06-22 Mediatek Inc. Command controller, prefetch buffer and methods for accessing a serial flash in an embedded system
US20090006813A1 (en) * 2007-06-28 2009-01-01 Abhishek Singhal Data forwarding from system memory-side prefetcher
JP4829191B2 (ja) * 2007-08-30 2011-12-07 株式会社東芝 キャッシュシステム
US20090063895A1 (en) * 2007-09-04 2009-03-05 Kurt Smith Scaleable and maintainable solid state drive
US8650364B2 (en) * 2008-05-28 2014-02-11 Vixs Systems, Inc. Processing system with linked-list based prefetch buffer and methods for use therewith
US8274829B2 (en) * 2008-06-09 2012-09-25 Aplus Flash Technology, Inc. Row-decoder and source-decoder structures suitable for erase in unit of page, sector and chip of a NOR-type flash operating below +/− 10V BVDS
US20110047313A1 (en) 2008-10-23 2011-02-24 Joseph Hui Memory area network for extended computer systems
US8019921B2 (en) * 2008-11-14 2011-09-13 GlobalFoundries, Inc. Intelligent memory buffer
CN102156628B (zh) * 2010-04-27 2014-04-02 威盛电子股份有限公司 微处理器、预取数据至微处理器的快取存储器阶层的方法
JP2012064158A (ja) * 2010-09-17 2012-03-29 Toshiba Corp メモリ管理装置及びメモリ管理方法
CN103946826B (zh) * 2011-09-30 2019-05-31 英特尔公司 用于在公共存储器通道上实现多级存储器层级的设备和方法
WO2013100988A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Retrieval of previously accessed data in a multi-core processor
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US9058278B2 (en) * 2012-12-19 2015-06-16 Advanced Micro Devices, Inc. Tracking prefetcher accuracy and coverage
US9146928B1 (en) 2012-12-31 2015-09-29 Emc Corporation Techniques for storing metadata of a filesystem in persistent memory
US9384136B2 (en) * 2013-04-12 2016-07-05 International Business Machines Corporation Modification of prefetch depth based on high latency event
US9785545B2 (en) 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
US10275171B2 (en) 2014-09-16 2019-04-30 Kove Ip, Llc Paging of external memory
US9704563B2 (en) 2014-12-08 2017-07-11 Intel Corporation Apparatus, method and system for performing successive writes to a bank of a dynamic random access memory
US9983997B2 (en) * 2015-07-24 2018-05-29 Futurewei Technologies, Inc. Event based pre-fetch caching storage controller
WO2017023508A1 (en) * 2015-08-06 2017-02-09 Rambus Inc. High performance, high capacity memory modules and systems
US10176090B2 (en) * 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496905B1 (en) * 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
JP2001166989A (ja) * 1999-12-07 2001-06-22 Hitachi Ltd プリフェッチ機構を有するメモリシステム及びその動作方法
US6571318B1 (en) * 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
US20020144062A1 (en) * 2001-03-29 2002-10-03 Hitachi, Ltd. Hardware prefetch system
CN101558391A (zh) * 2006-12-15 2009-10-14 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器
CN101236540A (zh) * 2007-01-29 2008-08-06 国际商业机器公司 用于提供动态存储器预取的系统和方法

Also Published As

Publication number Publication date
KR20180034193A (ko) 2018-04-04
CN107870873A (zh) 2018-04-03
JP2018055683A (ja) 2018-04-05
US20180089087A1 (en) 2018-03-29
TW201814531A (zh) 2018-04-16
TWI761360B (zh) 2022-04-21
US10866897B2 (en) 2020-12-15
KR102381449B1 (ko) 2022-03-31

Similar Documents

Publication Publication Date Title
CN107870873B (zh) 基于按字节编址闪存的存储器模块和操作其的方法
US11074190B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
US11822790B2 (en) Cache line data
US10067872B2 (en) Memory speculation for multiple memories
US20090327584A1 (en) Apparatus and method for multi-level cache utilization
US9135177B2 (en) Scheme to escalate requests with address conflicts
US11188256B2 (en) Enhanced read-ahead capability for storage devices
CN111684427A (zh) 高速缓存控制感知的存储器控制器
US11934317B2 (en) Memory-aware pre-fetching and cache bypassing systems and methods
US9396122B2 (en) Cache allocation scheme optimized for browsing applications
US8977817B2 (en) System cache with fine grain power management
EP2755142B1 (en) Data storage in a mobile device with embedded mass storage device
US10877889B2 (en) Processor-side transaction context memory interface systems and methods
US11354246B2 (en) Memory-side transaction context memory interface systems and methods based on clock cycles and wires
CN114168495A (zh) 存储设备的增强的预读能力
US20190065373A1 (en) Cache buffer

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