CN110537172B - 混合存储器模块 - Google Patents

混合存储器模块 Download PDF

Info

Publication number
CN110537172B
CN110537172B CN201880025729.0A CN201880025729A CN110537172B CN 110537172 B CN110537172 B CN 110537172B CN 201880025729 A CN201880025729 A CN 201880025729A CN 110537172 B CN110537172 B CN 110537172B
Authority
CN
China
Prior art keywords
address
cache
data
volatile
component
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
CN201880025729.0A
Other languages
English (en)
Other versions
CN110537172A (zh
Inventor
F·A·韦尔
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.)
Rambus Inc
Original Assignee
Rambus Inc
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 Rambus Inc filed Critical Rambus Inc
Publication of CN110537172A publication Critical patent/CN110537172A/zh
Application granted granted Critical
Publication of CN110537172B publication Critical patent/CN110537172B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0893Caches characterised by their organisation or structure
    • 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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/0871Allocation or management of cache space
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0864Addressing 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
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • 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/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • 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/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Dram (AREA)

Abstract

混合存储器模块包括相对快速且持久的动态随机存取存储器(DRAM)的缓存,以服务于大量相对较慢并且对磨损敏感的闪存。该模块上的地址缓冲器维护地址的静态随机存取存储器(SRAM)缓存以用于DRAM中所缓存的数据。DRAM和SRAM缓存一起加快读写访问速度,并且减少了针对大量非易失性存储器的磨损。

Description

混合存储器模块
技术领域
所公开的实施例总体上涉及存储器系统、组件和方法。
附图说明
在附图的各图中通过示例而非限制的方式图示了详细描述,并且其中,相同的附图标记指代类似的元件,并且其中:
图1A描绘了存储器系统100,其中母板105支持与混合存储器模块115通信的存储器控制器110。
图1B描绘了图1A的存储器系统100,但是包括粗虚线箭头以图示数据的64B缓存行如何从单个闪存组件130F被分发到一级(rank)十个类似突出显示的DRAM组件130D。
图2描绘了根据一个实施例的图1A和图1B的存储器切片125[4]。
图3以强调低阶模块半部115(0)的功能方面的方式描绘了图1的存储器系统100。
图4A图示了图3的DRAM缓存330,其包括被划分为2Λ19个4KB组的80字节(80B)缓存行400的32个集合Set[31:0]。
图4B图示了根据一个实施例的图3的闪存空间335中的64B缓存行如何映射到DRAM存储器空间330中的80B缓存行400。
图4C图示了SRAM地址缓存119的实施例的组织。
图5是图示了当所请求的缓存行在DRAM存储器330中并且该缓存行的地址在SRAM地址缓存119中可用时,对模块半部115(0)的读取访问的时序图500。
图6是图示了当所请求的缓存行在DRAM存储器330中并且在SRAM地址缓存119中不存在用于该缓存行的地址标签时,对模块半部115(0)的读取访问的时序图600。
图7是图示了当在DRAM存储器330中不存在所请求的缓存行并且在SRAM地址缓存119中不存在该缓存行的地址时,对模块半部115(0)的读取访问的时序图700。
图8是图示了当所请求的缓存行在DRAM存储器330中并且该缓存行的地址在SRAM地址缓存119中可用时,对模块半部115(0)的写入访问的时序图800。
具体实施方式
混合存储器模块采用相对快速、持久且昂贵的动态随机存取存储器(DRAM)组件来缓存在大量相对较慢、对磨损敏感且廉价的非易失性存储器中所存储的数据子集。DRAM组件与映射到非易失性存储器中的地址的地址标签相关联地存储数据的子集。存储器模块上的地址缓冲器组件将地址标签的子集缓存在静态随机存取存储器(SRAM)中。DRAM和SRAM缓存一起加快了读取访问和写入访问,并且减少了大量非易失性存储器的磨损。地址缓冲器组件还管理DRAM缓存与非易失性存储器之间的通信,以适应不同的访问粒度,减少所需的存储器事务数量,并且使进出非易失性存储器的数据流最小化。因此,存储器模块将非易失性存储器的非易失性和降低的每比特价格与DRAM的速度和持久性组合在一起。
图1A描绘了存储器系统100,其中母板105支持存储器控制器110,该存储器控制器110经由二十对半字节宽(四位或x4)的主数据端口DQu/DQv以及两个主命令和地址(CA)端口DCA0和DCA1来与混合存储器模块115通信。存储器模块115在逻辑上被分为可以单独或一起控制的两个模块半部115(0)和115(1),以通过模块连接器116传递40位或80位数据。为了本公开的目的,半部115(0)和115(1)是相同的;以下讨论集中于低阶模块半部115(0)。模块半部115(0)和115(1)之间的链路117允许两者在80位模式下响应相同的命令。
模块半部115(0)包括本地地址缓冲器118(0)(有时被称为寄存器或寄存时钟驱动器(RCD))或者模块控制器。地址缓冲器118(0)是集成电路(IC)组件,它在外部控制器110的方向上管理五个存储器切片125[4:0]。地址缓冲器118(0)是复杂的本地控制器,其使用多集合的SRAM地址缓存119来管理读写访问,以加快缓存命中和缓存未命中决策的速度,并且因此提高速度性能。
每个切片125[4:0]包括两个非易失性存储器组件130F、两个DRAM组件130D和数据缓冲器(DB)组件135。存储器组件130F是NAND闪存组件,但是可以使用其他类型的非易失性存储器。DRAM组件130D共同具有例如闪存组件130F的存储容量的十六分之一(1/16*)。在其他任务中,每个DB组件135与地址缓冲器118(0)一起工作以管理相同切片的DRAM组件130D与来自相同或不同切片的闪存组件130F之间的数据流。以下讨论集中于存储器切片125[4],模块半部115(0)中最靠近地址缓冲器118(0)的切片。其余切片125[3:0]基本上相同。在其他实施例中,DRAM和闪存可以以不同方式被布置。例如,在将DRAM组件130D组织成切片的情况下,闪存组件130F可能与这些切片的全部或子集分离。例如,只有具有一个或多个DRAM组件的每个其他切片还可以包括闪存。
地址缓冲器118(0)经由链路CA0[15:0]从外部控制器110接收命令,并且经由链路Stat0[1:0]返回状态信息。地址缓冲器118(0)还控制:经由本地通信总线BCOM的DB组件135[4:0];经由DRAM控制总线CS/CA(用于片选/命令和地址)的DRAM组件130D;以及经由闪存数据和控制总线ADQf的闪存组件130F。在一个实施例中,总线ADQf符合称为“开放NAND闪存接口”ONFI的接口规范。其他实施例可以使用不同的接口以及不同类型的易失性和非易失性存储器。
保持集中于切片125[4],DB组件135[4]经由八个主数据链路DQp[39:32]与控制器110通信,以及经由对应的八个次级数据链路DQs[39:32]与DRAM组件130D通信。读写存储器访问以16位的突发来完成,所以DB组件135[4]针对每个存储器访问传递128位(4x2x16b=128b),并且模块半部115(0)的五个切片125[4:0]与外部控制器110通信累计640位(5x128b=640b)。因此,使用10位字节,模块半部115(0)表现出64字节(64B)的访问粒度。DRAM组件130D被共同采用为缓存存储器,并且在DRAM组件130D存储器与控制器110或闪存组件130F之间转移的数据集被称为“缓存行”。每个缓存行提供64B的数据,并且可以包括附加的位以用于例如误差检测和校正(EDC)、奇偶校验以及各种与缓存相关的功能。下面结合图4A和4B详细描述使用80B缓存行来存储64B数据和相关信息的实施例。
外部控制器110发布读取命令,该命令从闪存组件130F中的特定地址请求信息。如果所请求的数据被缓存在DRAM组件130D中,则地址缓冲器118(0)经由五个DB组件135[4:0]来管理来自一级十个DRAM组件130D该缓存行的递送。在该上下文中,“一级”指代地址缓冲器118(0)响应于主机侧的存储器请求而访问(读取或写入)的组件集合。每个DRAM组件130D具有4位的数据宽度,所以模块半部115(0)具有40位的级宽度。
如果所请求的数据不在缓存中(所谓的缓存未命中),则地址缓冲器118(0)经由本地总线ADQf从一个或多个闪存组件130F读取所请求的数据,并且跨模块半部115(0)的全部十个DRAM组件130D均匀地分发所请求的缓存行。本地双向或成对的单向菊花链数据总线DQt在地址缓冲且器118(0)与每个切片125[4:0]之间提供点对点连接。在每个DRAM组件130D中缓存每个缓存行的子集支持用于主机控制器110的并行高速读写访问。将完整的闪存缓存行存储在各个闪存组件130F中有助于快速且高效地进行缓存回写和垃圾回收过程。
图1B描绘了图1A的存储器系统100,但是包括粗虚线箭头以图示数据的64B或80B缓存行如何从单个闪存组件130F(使用粗体边界突出显示)分发到一级十个同样突出显示的DRAM组件130D。在宽模式下,模块115支持一级二十个DRAM组件130D;地址缓冲器118(0)和118(1)之间的链路117允许来自一个或多个闪存组件130F的缓存行跨所有二十个DRAM组件130D被分布。
图2描绘了根据一个实施例的图1A和图1B的存储器切片125[4]。DRAM组件130D中的每个DRAM组件包括DRAM组件接口DQ[3:0],该DRAM组件接口DQ[3:0]支持经由两个次级数据链路组DQ[35:32]和DQ[39:36]中的一个相应的次级数据链路组被连接到数据缓冲器组件135的4位数据宽度(“易失性数据宽度”)。闪存组件130F中的每个闪存组件包括经由多分支总线ADQf[15:0]被连接到地址缓冲器118(0)的闪存组件接口FQ(图1A和1B)。组件接口FQ和总线ADQf均支持16位数据宽度(“非易失性数据宽度”)。操纵逻辑200和205允许DRAM组件130D经由主数据链路DQp[39:32]与控制器110进行数据通信,或者经由本地总线DQt与闪存组件130F进行数据通信。操纵逻辑205和通过DB组件135的链路DQt另外允许切片125[4]在地址缓冲器118(0)与相邻切片125[3:0]之间传递数据。下面结合图3对此功能进行了详细说明。
图2附加地示出了用于闪存组件130F的封装选项215以及用于DRAM组件130D的备选封装选项220和225。闪存封装选件215包括例如通过硅通孔(TSV)互连的八个闪存设备或“管芯”的两个堆栈。在该示例中,闪存组件130F在模块基板230的任一侧上。DRAM封装选件220包括例如通过TSV互连的八个DRAM管芯的两个堆栈。地址缓冲器118(0)因此选择一级(arank of)DRAM管芯,从每个DRAM组件130D选择一个DRAM管芯,以用于每个存储器进行访问。每个DRAM堆栈包括具有数据缓冲逻辑的主管芯235。在封装选项225中,DRAM组件130D是两个封装的堆栈,一个封装位于模块基板230的任一侧。DRAM组件130D用作例如高达闪存组件130F提供的存储空间的十六分之一的缓存存储装置。也可以使用具有相同或不同数目的DRAM或非易失性存储器管芯或封装的其他备选布置。
图3以强调低阶模块半部115(0)的功能方面的方式描绘了图1的存储器系统100。DB组件135[4]和地址缓冲器118(0)包括许多暗示缓冲器的三角形,并且被包括在内以突出显示信息流的方向。信号缓冲器的选择和放置以及信号的路由通常在本领域技术人员的能力范围内。在经由本地通信总线BCOM的地址缓冲器118(0)的指示下,每个DB组件135经由八个主数据链路DQp与存储器控制器110通信,将读取的数据递送到读取队列300,并且将来自写入队列301的写入数据接收到数据缓冲器302中。队列300和301以及控制器110的其他元件是常规的,所以省略详细讨论。
地址缓冲器118(0)响应于来自控制器110的读写队列326和327的命令和地址来管理进出DRAM缓存330的数据流,并且将状态信息传回到控制器110中的状态寄存器328。地址缓冲器118(0)附加地在SRAM地址缓存119、DRAM缓存330与闪存地址空间335之间保持一致性。
结合图1A所引入的模块半部115(0)的十个DRAM组件130D被共同描绘为DRAM地址空间330,其在逻辑上被分为4KB组332的32个集合Set[31:0]。集合Set[31:0]中的每一个在4KB组332中包括524KB,以用于存储数据的64GB的总可用DRAM地址空间。模块半部115(0)的十个闪存组件130F在闪存地址空间335中被共同描绘为4KB组的阵列333。闪存地址空间335存储的缓存行是DRAM空间330的16倍,所以使用比DRAM地址空间330多四位(AF[39:30]与AD[35:30])来指定闪存地址。非易失性4KB组333中的每一个包括64个64B缓存行。总可用闪存空间为2Λ40字节或1TB。闪存地址空间335中的任何4KB组333在DRAM地址空间330中可以具有对应的4KB组332。
地址缓冲器118(0)中的控制逻辑可以部分地取决于针对数据预留了多少空间来管理被缓存在DRAM 330中的任意数量的集合。将缓存标签嵌入80B缓存行的“额外”部分使DRAM缓存空间的总量不是2的幂。例如,如果一些DRAM地址空间将留出用于缓冲器空间(例如,用于写聚合)或地址映射表(例如,在闪存地址空间到物理存储器空间之间),则这种灵活性很有用。每个缓存集的大小可以是物理地址空间的偶数因子;SRAM和DRAM缓存通常都将支持2的幂数的缓存行。在一些实施例中,闪存地址空间可以大于物理存储器,留出额外的非易失性存储装置以用于例如管理擦除块旋转。
在一些实施例中,DRAM地址空间330的一部分被用于将脏页的回写聚合到闪存地址空间335。脏页从DRAM集合Set[31:0]移动到回写区域,以等待回写过程。聚合回写操作提高了速度性能,因为在DRAM地址空间330内移动4KB页面仅消耗几百纳秒,而写入闪存地址空间335的程序操作则消耗数十微秒。回写聚合可以利用以下事实:即使DRAM地址空间330缓存的物理存储器空间为2的幂,DRAM地址空间330也可以支持非2的幂数的集合,并且每个集合具有2的幂数的缓存行。DRAM地址空间330还可以被用于DRAM与闪存地址之间的地址映射以用于例如支持磨损平衡的页面旋转。
地址缓冲器118(0)包括地址映射逻辑310、脏组缓冲器315、状态逻辑320和数据/地址选择逻辑325。映射逻辑310组合来自SRAM地址缓存119的地址位和控制器地址AC[39:6]以提供用于DRAM缓存330和脏组缓冲器315的DRAM地址,并且附加地支持用于DRAM和缓冲器读写访问的控制信令。每次地址映射逻辑310向给定的64B缓存行进行写入时,地址映射逻辑310在缓冲器315中附加地写入包含64B的4KB组332的地址,其中地址A作为缓冲器入口地址,并且地址D作为指定DRAM地址空间330中的脏组的地址字段的地址位AD[35:12]。缓冲器315因此维护包括至少一个脏缓存行的块的列表332。缓冲器315中的条目的聚合随后被用于将脏位写入每个4KB脏组中的第一缓存行地址处的DRAM缓存330中。从缓冲器315到DRAM缓存330的脏位更新可以在空闲时间期间被执行,或者以其他方式与存储器事务交错以限制干扰。如下面详细描述的,这些组级脏位允许地址缓冲器118(0)快速找到干净的4KB组以清除4KB闪存组。
图4A图示了图3的DRAM缓存330,其包括被划分成2Λ19个4KB组的80字节(80B)缓存行400的32个集合Set[31:0]。每个缓存行400包括五个字段,用以存储所缓存的数据的64B数据字段;用以存储奇偶校验位的奇偶校验位字段P;支持缓存的有效位字段V、脏位D和DRAM标签字段TagD;以及用以存储纠错和检测(EDC)位的EDC字段。
控制器110和/或相关联的处理器具有对管理64B缓存行的读取和写入的低级缓存的访问。SRAM地址缓存119和DRAM缓存330将缓存局部性扩展到4KB,以提高较低级缓存之外的针对缓存行的命中率。假设分页系统具有4KB的粒度,则对给定4KB内的64B缓存行的访问提供了对相同页内的其他缓存行进行后续访问的极大可能性。不同的4KB页面可以属于不同的进程,所以缓存局部性往往不会扩展到页面之外。在其他实施例中,缓存行和缓存块的大小可以不同。
图4B图示了根据一个实施例的图3的闪存空间335中的64B缓存行如何映射到DRAM存储器空间330中的80B缓存行400。控制器地址AC[39:0]指定2Λ40个个体数据字节(1TB)。模块115递送64B缓存行,所以不使用六个最低有效位AC[5:0]。闪存寻址在堆栈中容纳多达64(2Λ6)个闪存设备,其中每个设备具有16KB(2Λ14)个擦除块。每个擦除块依次包括64个闪存页,每个闪存页具有256(2Λ8)个64B缓存行。不使用六字节地址位。最终,DRAM寻址在堆栈中容纳多达8(2Λ3)个DRAM设备,其中每个设备具有16个(2Λ4)存储体。每个DRAM存储体依次包括64K(2Λ16)个排(row),每行具有128(2Λ7)个64B缓存行。五个最高有效位AD[35:31]区分了图4A所描绘的32个集合Set[31:0]。
图4C图示了SRAM地址缓存119的实施例的组织。像DRAM缓存330一样,SRAM地址缓存119被分成32个集合SetS[31:0]。每个集合包括256个标签位置,每个位置依次包括20位的索引字段ACtS和5位的标签字段TagS,总计204,800位。解码器410对控制器地址位AC[19:12]进行解码以选择一排标签位置。逻辑415将高阶地址位AC[39:20]与全部32个集合中的所选择排的索引字段进行比较。在匹配的情况下,SRAM地址缓存119传送所选择排的5位标签字段TagS的内容,并且设置为DRAM地址位AD[35:31]以选择DRAM缓存330内的包括所请求的数据的集合。在该示例中,控制器地址位AC[39:20]与集合SetS2的第三排匹配,该集合因此递送了其5位标签TagS。地址位AC[30:6]不变地作为DRAM地址位AD[30:6]而被传递,以选择所选择DRAM集合内的缓存行。
图5是图示了当所请求的缓存行在DRAM存储器330中并且该缓存行的地址在SRAM地址缓存119中可用时,对模块半部115(0)的读取访问的时序图500。图5和后续时序图涉及图3中引入的信号和信号线。通常,信号以及其相关联的节点承载相同的名称(designation)。从上下文将清楚给定名称是指信号还是对应的节点。
当外部控制器110通过指定控制器地址AC[39:6]的主链路CSp/Cap发布读取请求时,读取事务开始(505)。该样本事务中涉及的信号用粗体边界突出显示,以区别于交错的事务。事务流水线提高了存储器吞吐量。
地址缓冲器118(0)将地址位AC[39:12]传送到SRAM地址缓存119,其在时间tTAG内考虑位AC[39:20]以确定所请求的数据是否在DRAM缓存330中。如果出现匹配,则SRAM缓存119将高阶DRAM地址位AD[35:31]递送到地址映射逻辑310,该地址映射逻辑310将它们与控制器地址位AC[30:6]连接起来以形成所请求的64B缓存行的DRAM地址AD[35:6](507)。DRAM地址位AD[35:31]指定DRAM缓存330中所请求的缓存行的集合Set[i],并且控制器地址位AC[30:6]指定所指定服软集合Set[i]内的偏移。
DRAM存储器空间330通过次级数据链路DQ响应地递送所寻址的数据(510)。然后,该数据行经由主链路DQp以由地址缓冲器118(0)施加的缓冲器延迟tBUF发送到控制器110(515)。地址缓冲器118(0)指导状态逻辑320向状态寄存器328发布SRAM命中信号520,以使控制器110知道所递送的读取数据是所请求的数据。因此,模块115从接收到请求505大约30ns内返回所请求的64B缓存行。因此,结束了其中SRAM地址缓存119产生命中的读取事务。尽管未示出,但是地址缓冲器118(0)可以考虑用于错误检测和校正的奇偶校验位和EDC位。奇偶校验位和EDC位的使用是本领域技术人员充分理解的。
图6是图示了当所请求的缓存行在DRAM存储器330中并且在SRAM地址缓存119中不存在该缓存行的地址标签时,对模块半部115(0)的读取访问的时序图600。如在图5的示例中一样,当外部控制器110通过指定控制器地址AC[39:6]的主链路CSp/CAp发出读取请求时,读取事务开始(505)。然而,这次,地址位AC[39:20]在SRAM地址缓存119中不匹配。地址缓冲器118(0)因此尝试在DRAM缓存330中找到所请求的缓存行条目。为此,地址映射逻辑310向DRAM缓存330发布32个连续的读取请求610,通过对AD[35:31]的每个值增加偏移AC[30:6]来针对每个集合Set[31:0]发布一个请求。每个读取请求返回具有DRAM标签620的缓存行615,该DRAM标签620经由连接Qt被传送到地址映射逻辑310。地址缓冲器118(0)指导状态逻辑320针对这些读取中的每个读取来向状态寄存器328发布未命中信号625,使得控制器110忽略这些读取数据。针对最终的DRAM未命中,未命中信号625可以向控制器110指示针对闪存访问的需要。
可以组织DRAM存储器330,使得将32次读取的序列中的每次读取被定向到连续的存储体,使得每个存储体有时间在后续访问之前完成排周期。在该示例中,读取数据615在10ns的排到列读取延迟tRCD和15ns的读取延迟tRD之后首先出现。访问被流水线化,使得每个附加的缓存行需要附加的2.5ns。因此,全部的32次读取都在80ns的时间tDsi内被完成。可以响应标签命中而停止DRAM读取访问,所以DRAM缓存命中的平均时间tDSi将接近40ns。
如果32个标签620中的一个标签与地址位AC[39:20]相匹配(DRAM缓存命中),则地址缓冲器118(0)利用针对所请求的缓存行的地址和标签信息来更新SRAM地址缓存119。尽管可以使用其他替换策略,但也可以随机选择SRAM地址缓存119中的更新的集合和行。来自控制器110的请求505的重试然后将导致SRAM缓存命中,并且以结合图5详细描述的方式来递送所请求的缓存行。在其他实施例中,所请求的缓存行被保留在地址缓冲器118(0)中,以响应于重试而加快缓存行的递送。从接收到请求505的第一实例起,模块115在大约150ns内返回所请求的64B缓存行。其他事务可以在请求505的第一实例与重试之间被流水线化,以利用可用数据带宽。因此,结束读取事务,其中SRAM地址缓存119产生未命中,并且DRAM缓存330a产生命中。
图7是图示了当在DRAM存储器330中不存在所请求的缓存行并且在SRAM地址缓存119中不存在该缓存行的地址时,对模块半部115(0)的读取访问的时序图700。从读取延迟的角度来看,这是最坏的情况,因为相对较大的4KB数据组333从相对较慢的闪存地址空间335移动到DRAM缓存330中,这一过程大约需要3.5us。
地址缓冲器118(0)选择DRAM缓存330中的干净条目。为此,地址映射逻辑310向DRAM缓存33发布32个连续的读取请求710,通过利用原始请求505的AC[30:12]和位AC[11:6]=000000b的偏移来对AD[35:31]的每个值递增,对每个集合Set[31:0]发出一个请求。每个读取请求返回具有DRAM脏位720的缓存行715,其后者经由连接Qt被传送到地址映射逻辑310。地址缓冲器118(0)指导状态逻辑320针对这些读取中的每个读取向状态寄存器328发布未命中信号725,使得控制器110忽略这些读取数据,并且考虑脏位720以标识干净的4KB组(即,没有任何被重写的缓存行的4KB组332)以从闪存地址空间335清除新的4KB组333。如先前所提到的,在缓存行写入期间,使用在缓冲器315中累积的数据将具有至少一个脏缓存行的每个4KB组332的第一缓存行标记为“脏”。
在搜索干净的4KB组332时,地址缓冲器118(0)通过总线ADQf[15:0]将所请求数据的闪存地址730传送到闪存地址空间335。在闪存读取延迟tRDF之后,地址缓冲器118(0)在时间段tTRF内从闪存地址空间335接收所请求的4KB块735,更新SRAM地址缓存119。使用一系列本地写入命令740,地址缓冲器118(0)将4KB块735作为本地数据总线DQs[39:0]上的一系列数据745写入到DRAM存储器330,并且将状态信号750传送到控制器110以推进针对所请求的缓存行进行重试。此后,来自控制器110的请求505的重试将导致SRAM缓存命中,并且所请求的缓存行的递送将如先前所提到的那样进行。在一些实施例中,当所请求的缓存行可用时并且在将整个4KB块缓存在DRAM存储器330中之前,地址缓冲器118(0)允许从控制器110重试。如果闪存地址空间335允许对读取数据进行重新排序,则首先可以向所请求的缓存行提供4KB组的全部64个缓存行的传送。
地址缓冲器118(0)可以维护计数器(未示出),该计数器记录DRAM缓存330中干净的4KB块332的数目。如果该数目低于阈值,则4KB块332中的一个或多个可以被块333从闪存地址空间335重写。这种回写过程可以被调度以在空闲时段期间进行。
图8是图示了当所请求的缓存行在DRAM存储器330中并且该缓存行的地址在SRAM地址缓存119中可用时,对模块半部115(0)的写访问的时序图800。当外部控制器110通过指定控制器地址AC[39:6]的主链路CSp/Cap发布写入请求805时,写入事务开始。地址缓冲器118(0)将地址位AC[39:12]传送到SRAM地址缓存119,其在时间tTAG内考虑位AC[39:20]以确定所请求的数据是否在DRAM缓存330中。如果出现匹配,则SRAM缓存119将高阶DRAM地址位AD[35:31]递送到地址映射逻辑310,该地址映射逻辑310将它们与控制器地址位AC[30:6]级联以形成所请求的64B缓存行的DRAM地址AD[35:6]。DRAM地址位AD[35:31]指定集合和控制器地址位AC[30:6]、所请求的缓存行的集合内的偏移。访问被完全流水线化。
控制器110在主数据线DQp[39:0]上传送被定时到请求805的写入数据815。在缓冲器延迟tBUF之后,地址缓冲器118(0)经由次级数据线DQs[39:0]将具有有效位和脏位(820)的写入数据响应地传送到DRAM存储器空间330。如果支持,则地址缓冲器118(0)附加地计算奇偶校验位和EDC位以用于与写入数据一起存储。地址逻辑210更新缓冲器315,使其包括与DRAM缓存330中的脏缓存行相关联的4KB组的地址位AD[35:12]。如先前所提到的,该信息支持用于将块从闪存地址空间335加载到DRAM缓存330的块清除过程。地址缓冲器118(0)指示状态逻辑320向状态寄存器328发布SRAM命中信号825,以向控制器110报告成功写入。
尽管已经结合特定实施例描述了主题,但是还设想了其他实施例。其他变型对于本领域技术人员来说将是显而易见的。因此,所附权利要求的精神和范围不应限于前述描述。仅应按照35U.S.C.§112的第六段要求的方式解释明确引用“用于……的装置”或“用于……的步骤”的那些权利要求。

Claims (19)

1.一种存储器模块,包括:
定义非易失性地址空间的非易失性存储器组件,所述非易失性地址空间用以将数据存储在非易失性存储器地址处;
定义易失性地址空间的易失性存储器组件,所述易失性地址空间用以利用第一地址标签来缓存在所述非易失性地址空间中所存储的所述数据,所述第一地址标签对应于所述数据的所述非易失性存储器地址;以及
地址缓冲器组件,被配置用以控制读写访问,用以缓存与在所述易失性地址空间中所缓存的所述数据相对应的第二地址标签,以及用以管理进出所述易失性存储器组件的数据流。
2.根据权利要求1所述的存储器模块,其中所述易失性地址空间被分成易失性地址的集合,每个集合用以存储所述数据的块,每个块用以存储所述数据的缓存行。
3.根据权利要求2所述的存储器模块,其中所述易失性地址空间进一步包括回写缓冲空间,所述地址缓冲器组件用以将所述缓存行中的脏缓存行合计到所述回写缓冲空间中。
4.根据权利要求2所述的存储器模块,所述第二地址标签中的每个第二地址标签与所述数据的所述块中的一个块相对应。
5.根据权利要求1所述的存储器模块,其中所述地址缓冲器组件包括用于缓存所述第二地址标签的静态随机存取存储器。
6.根据权利要求1所述的存储器模块,进一步包括地址逻辑部,所述地址逻辑部用以:在所述地址缓冲器组件评估对第二地址的第二访问请求的同时,响应于对第一地址的第一访问请求而访问所述易失性存储器组件。
7.根据权利要求1所述的存储器模块,所述易失性存储器组件用以将所述数据缓存在缓存行中,每个缓存行具有存储装置,所述存储装置用于所述第一地址标签中的一个第一地址标签以及脏位和有效位中的至少一项。
8.根据权利要求1所述的存储器模块,其中所述第一地址标签具有第一数目的地址位,并且所述第二地址标签具有第二数目的地址位,所述第二数目的地址位少于所述第一数目的地址位。
9.根据权利要求1所述的存储器模块,其中在所述易失性地址空间中所存储的所述数据被存储在缓存行中;并且所述第二地址标签中的每个第二地址标签指定多个所述缓存行的块。
10.根据权利要求1所述的存储器模块,其中所述地址缓冲器在将脏位写入到所述易失性存储器组件之前合计所述脏位。
11.根据权利要求1所述的存储器模块,其中所述地址缓冲器将所述数据的缓存行从所述非易失性存储器地址移动到所述易失性存储器组件,所述数据的所述缓存行包括所述数据的所述缓存行中的所请求的一个缓存行,并且其中所述非易失性存储器组件将所述缓存行重新排序,以使所述缓存行中的所述所请求的一个缓存行的提供提前。
12.根据权利要求1所述的存储器模块,所述易失性存储器组件将缓存行存储在所述易失性地址空间中,所述地址缓冲器进一步包括脏组缓冲器以存储针对所述缓存行的组的写入地址。
13.根据权利要求12所述的存储器模块,所述地址缓冲器用以:对于对所述地址缓冲器组件的缓存未命中,将脏位存储在所述脏组缓冲器中。
14.根据权利要求13所述的存储器模块,所述地址缓冲器用以将来自所述脏组缓冲器的所述脏位写入到所述易失性存储器组件的所述缓存行中的一个缓存行,所述缓存行中的所述一个缓存行是所述组中的一个组中的多个缓存行中的一个缓存行。
15.根据权利要求14所述的存储器模块,其中所述地址缓冲器检查所述组的所述脏位以清除干净组中的所述缓存行。
16.根据权利要求2所述的存储器模块,其中所述易失性地址空间被分成易失性地址的多个集合,并且其中所述多个集合能够以一个集合的增量而被调整。
17.一种用于缓存来自非易失性存储器组件的数据的方法,所述数据被组织为在非易失性存储器地址处被存储的缓存行,所述方法包括:
将所述缓存行从所述非易失性存储器地址复制到第一随机存取存储器组件中的易失性存储器地址;
在所述第一随机存取存储器组件中存储第一地址标签,其中所述缓存行中的每个缓存行被复制到所述第一随机存取存储器组件中的所述易失性存储器地址中的一个易失性存储器地址;以及
在地址缓冲器组件所包括的第二随机存取存储器组件中缓存第二地址标签,所述第二地址标签对应于在所述第一随机存取存储器组件中的所述易失性存储器地址中所存储的所述缓存行的子集,
由所述地址缓冲器组件控制读写访问,以及由所述地址缓冲器组件管理进出所述第一随机存取存储器组件的数据流。
18.根据权利要求17所述的方法,其中所述第一随机存取存储器组件包括DRAM,并且所述第二随机存取存储器组件包括SRAM。
19.根据权利要求17所述的方法,其中所述非易失性存储器组件包括闪存。
CN201880025729.0A 2017-06-15 2018-05-15 混合存储器模块 Active CN110537172B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762520065P 2017-06-15 2017-06-15
US62/520,065 2017-06-15
PCT/US2018/032674 WO2018231408A1 (en) 2017-06-15 2018-05-15 Hybrid memory module

Publications (2)

Publication Number Publication Date
CN110537172A CN110537172A (zh) 2019-12-03
CN110537172B true CN110537172B (zh) 2024-03-12

Family

ID=64659242

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880025729.0A Active CN110537172B (zh) 2017-06-15 2018-05-15 混合存储器模块

Country Status (4)

Country Link
US (3) US11080185B2 (zh)
EP (1) EP3639145B1 (zh)
CN (1) CN110537172B (zh)
WO (1) WO2018231408A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11656995B2 (en) * 2019-11-26 2023-05-23 Micron Technology, Inc. Dynamic access granularity in a cache media
US20210357739A1 (en) * 2020-05-14 2021-11-18 Micron Technology, Inc. Memory device to train neural networks
US11403034B1 (en) 2021-06-11 2022-08-02 International Business Machines Corporation Non-volatile storage class memory data flow with mismatched block sizes

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5133060A (en) * 1989-06-05 1992-07-21 Compuadd Corporation Disk controller includes cache memory and a local processor which limits data transfers from memory to cache in accordance with a maximum look ahead parameter
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
CN103026346A (zh) * 2010-07-27 2013-04-03 国际商业机器公司 包括固态存储器设备的存储系统中的逻辑到物理地址映射
US9262318B1 (en) * 2013-03-13 2016-02-16 Marvell International Ltd. Serial flash XIP with caching mechanism for fast program execution in embedded systems
CN106484628A (zh) * 2015-08-27 2017-03-08 三星电子株式会社 基于事务的混合存储器模块

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06318174A (ja) 1992-04-29 1994-11-15 Sun Microsyst Inc キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
JPH07271672A (ja) 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
US5875451A (en) 1996-03-14 1999-02-23 Enhanced Memory Systems, Inc. Computer hybrid memory including DRAM and EDRAM memory components, with secondary cache in EDRAM for DRAM
US5809562A (en) 1996-05-20 1998-09-15 Integrated Device Technology, Inc. Cache array select logic allowing cache array size to differ from physical page size
US5835929A (en) 1996-05-20 1998-11-10 Integrated Device Technology, Inc. Method and apparatus for sub cache line access and storage allowing access to sub cache lines before completion of a line fill
US5781926A (en) 1996-05-20 1998-07-14 Integrated Device Technology, Inc. Method and apparatus for sub cache line access and storage allowing access to sub cache lines before completion of line fill
US6212602B1 (en) 1997-12-17 2001-04-03 Sun Microsystems, Inc. Cache tag caching
US6516386B1 (en) 1997-12-31 2003-02-04 Intel Corporation Method and apparatus for indexing a cache
US6654854B1 (en) 1999-06-25 2003-11-25 Hewlett-Packard Development Company, L.P. Caching method using cache tag and cache data stored in dynamic RAM embedded in logic chip
US6449694B1 (en) 1999-07-27 2002-09-10 Intel Corporation Low power cache operation through the use of partial tag comparison
TW451139B (en) 1999-12-03 2001-08-21 Compal Electronics Inc A cache memory system
JP3732397B2 (ja) 2000-10-05 2006-01-05 株式会社日立製作所 キャッシュシステム
US6798813B2 (en) * 2001-07-09 2004-09-28 Coherent, Inc. Closed-loop purging system for laser
US6865646B2 (en) 2001-12-31 2005-03-08 Intel Corporation Segmented distributed memory module cache
US7432754B2 (en) * 2006-07-27 2008-10-07 Freescale Semiconductor, Inc. Voltage control circuit having a power switch
US8745315B2 (en) * 2006-11-06 2014-06-03 Rambus Inc. Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory
JP5100176B2 (ja) * 2007-03-29 2012-12-19 株式会社東芝 マルチプロセッサシステム
US8806144B2 (en) * 2009-05-12 2014-08-12 Stec, Inc. Flash storage device with read cache
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5133060A (en) * 1989-06-05 1992-07-21 Compuadd Corporation Disk controller includes cache memory and a local processor which limits data transfers from memory to cache in accordance with a maximum look ahead parameter
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
CN103026346A (zh) * 2010-07-27 2013-04-03 国际商业机器公司 包括固态存储器设备的存储系统中的逻辑到物理地址映射
US9262318B1 (en) * 2013-03-13 2016-02-16 Marvell International Ltd. Serial flash XIP with caching mechanism for fast program execution in embedded systems
CN106484628A (zh) * 2015-08-27 2017-03-08 三星电子株式会社 基于事务的混合存储器模块

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Cheng-Chieh Huang et al..ATCache: Reducing DRAM Cache Latency via a Small SRAM Tag Cache.《2014 23rd International Conference on Parallel Architecture and Compilation Techniques (PACT)》.2017,第51-60页. *

Also Published As

Publication number Publication date
US20230229593A1 (en) 2023-07-20
US11080185B2 (en) 2021-08-03
US11573897B2 (en) 2023-02-07
CN110537172A (zh) 2019-12-03
EP3639145B1 (en) 2024-03-20
US20210042226A1 (en) 2021-02-11
EP3639145A4 (en) 2021-03-24
WO2018231408A1 (en) 2018-12-20
US20210397554A1 (en) 2021-12-23
EP3639145A1 (en) 2020-04-22

Similar Documents

Publication Publication Date Title
CN108572796B (zh) 具有异构nvm类型的ssd
US20220083236A1 (en) Cache line data
US11456025B2 (en) Hybrid memory module
US10860244B2 (en) Method and apparatus for multi-level memory early page demotion
US11573897B2 (en) Hybrid memory module
US8850115B2 (en) Memory package utilizing at least two types of memories
US11714752B2 (en) Nonvolatile physical memory with DRAM cache
US20220406354A1 (en) Hybrid Memory Module
CN105103235A (zh) 具有用于更高性能和能量效率的去耦比特的非易失性多级单元存储器
US11645006B2 (en) Read performance of memory devices
WO2018090255A1 (zh) 内存访问技术
CN109891397A (zh) 用于固态装置中的操作系统高速缓冲存储器的设备及方法
CN113243007A (zh) 存储级存储器访问
US11782788B2 (en) Error-correction-detection coding for hybrid memory module
KR20230142795A (ko) Zns 디바이스들에서의 상이한 기입 우선순위화
WO2021055624A1 (en) Low latency cache for non-volatile memory in a hybrid dimm
CN110968527B (zh) Ftl提供的缓存
US20240061786A1 (en) Systems, methods, and apparatus for accessing data in versions of memory pages
WO2024097493A1 (en) Write buffer linking for easy cache reads

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