基于事务的混合存储器模块的制作方法

文档序号:12176877阅读:255来源:国知局
基于事务的混合存储器模块的制作方法与工艺

技术领域

本公开一般涉及存储器模块,更具体地说,涉及基于事务的混合存储器模块(transaction-based hybrid memory modules)。



背景技术:

固态驱动器(SSD)将数据存储在非旋转存储介质(诸如,动态随机存取存储器(DRAM)和闪存)中。DRAM速度快,对重复的读/写周期具有高耐用性和低延迟。闪存通常更便宜,不需要刷新,并且消耗更少的功率。由于它们的独特特性,DRAM通常被用于存储操作指令和过渡数据,而闪存被用于存储应用和用户数据。

DRAM和闪存可被一起用于各种计算环境中。例如,数据中心要求高容量、高性能、低功耗和低成本的存储器解决方案。如今的用于数据中心的存储器解决方案主要是基于DRAM。DRAM提供高性能,但是闪存比DRAM更密集,消耗更少功率并且更便宜。

由于操作原理的差异,单独的存储器控制器被用于控制DRAM和闪存。例如,DRAM是可字节寻址,然而闪存是可块寻址。闪存需要损耗平衡和垃圾回收,然而DRAM存储器需要刷新。此外,例如,包括DRAM和闪存两者的混合存储器系统需要用于DRAM与闪存之间的数据传输的接口。此外,混合存储器需要用于DRAM与闪存之间的数据传输的映射表。当保存和传输数据时,DRAM与闪存之间的地址映射可造成开销。结果,混合存储器系统的性能可能由于开销而劣化。



技术实现要素:

根据一个实施例,一种混合存储器模块包括:动态随机存取存储器(DRAM)高速缓存、闪存和存储器控制器。DRAM高速缓存包括一个或多个DRAM装置和一个DRAM控制器,闪存包括一个或多个闪存装置和闪存控制器。存储器控制器与DRAM控制器和闪存控制器相连接。

根据一个实施例,公开一种用于操作包括DRAM高速缓存和闪存的混合存储器模块的方法。所述方法包括:从主机存储器控制器接收存储器事务请求;将存储器事务请求存储在混合存储器模块的缓冲器中;检查混合存储器模块的高速缓存标签,并且确定存储器事务请求包括访问DRAM高速缓存的请求;基于高速缓存标签来执行存储器事务请求。

现在将参照附图和权利要求中所指明的,来更加具体地描述包括事件的实施方式和组合的各种新颖的细节的以上和其他的优选特征。将理解,这里描述的具体系统和方法仅通过实例的方式示出,并且不作为限制。如本领域技术人员将理解的,在不脱离本公开的范围的情况下,可在各种和大量的实施例中采用这里描述的原理和特征。

附图说明

作为本说明的部分包括的附图示出本优选实施例,并且与上面提供的一般性描述以及下面提供的优选实施例的详细描述一起用于解释并教导这里描述的原理。

图1示出根据一个实施例的示例混合存储器模块的架构;

图2A是根据一个实施例的读取命中操作的示例流程图;

图2B是根据一个实施例读取缺失(read miss读取未命中)操作的示例流程图;

图3A是根据一个实施例的写入命中操作的示例流程图;

图3B是根据一个实施例的写入缺失(write miss写入未命中)操作的示例流程图。

为了说明的目的,贯穿附图,附图不需要按比例绘制,并且相同结构或功能的元件通常由相同参考标号来表示。附图仅意图帮助这里描述的各种实施例的描述。附图没有描述这里公开的教导的每个方面,并且不限制权利要求的范围。

具体实施方式

这里公开的特征和教导中的每一个可被单独地使用或与其他特征和教导结合地使用,以提供基于事务的混合存储器模块以及操作其的方法。参照附图对单独地和组合地利用这些额外的特征和教导中的许多特征和教导的代表性示例进行更加详细地描述。该详细描述意图仅意在向本领域技术人员教授本教导的实践方面的更多细节,而不意在限制权利要求的范围。因此,在详细的描述中公开的特征的组合在最广泛的意义上可不需要实施教导,相反仅被教授用于描述本教导的具体地代表性示例。

在下面的描述中,仅为了说明的目的,阐述特定的术语以提供对本公开的全面理解。然而,对本领域技术人员将清楚的是,不要求这些特定的细节实践本公开的教导。

根据在计算机存储器内的对数据位的操作的算法和符号表示来呈现这里详细描述的一些部分。数据处理领域中的技术人员使用这些算法的描述和表示,以将他们工作的实质有效地传达给本领域其他技术人员。在此算法一般被认为是导致期望的结果的前后一致顺序的步骤。该步骤是需要物理量的物理运算的步骤。通常,虽然不是必须的,但是这些量表现为能够被储存、传送、组合、比较、或其他操作的电或磁信号的形式。主要由于普遍使用的原因,已证明有时将这些信号称为位、值、元件、符号、字符、术语、数字等是方便的。

然而,应注意,所有这些和相似的术语将与适当的物理量相关联,并且仅被应用于这些量的方便标记。除非特别说明,否则如从下面的讨论中显而易见的是,应理解,贯穿描述,利用诸如“处理”、“计算”、“确定”、“显示”等的术语的讨论表示计算机系统的动作和进程,或者相似的电子计算装置,该电子计算装置操纵在计算机系统的寄存器和存储器内作为物理(电子)量表示的数据,并将其转换为在计算机系统存储器或寄存器或其他这样的信息存储器、传输或显示装置内作为物理量相似表示的其他数据。

将从下面的实施方式呈现针对不同的这些系统要求的结构。将理解,不同的编程语言可被用于实现这里所描述的公开的教导。

此外,为了提供本教导的额外的有用实施例,可以以不具体和明确地列举的方式来组合代表性示例与独立权利要求的各种特征。还应清楚地注意到,为了原始公开的目的,也为了限定要求保护的主题的目的,实体的组的所有值的范围或标志公开每个可能的中间值或中间实体。还应清楚地注意到,设计附图中示出的组件的维度和形状以帮助理解如何实践本教导,而不是意在限制在示例中示出的维度和形状。

本公开提供一种包括易失性存储器(例如,DRAM)和非易失性存储器(例如,闪存)的基于事务的混合存储器模块以及操作其的方法。在一个实施例中,本基于事务的混合存储器模块包括DRAM高速缓存和闪存。就此而言,混合存储器模块在此还被称为DRAM-flash或DRAM-flash存储器模块。DRAM高速缓存被用作前端存储器高速缓存,而闪存被用作后端存储器。主机存储器控制器可具有针对混合存储器模块的基于事务的存储器接口。可在事务的基础上异步地处理来自主机计算机(或主机计算机的CPU)的存储器访问请求。可将存储器访问请求存储在缓冲器中,并可一次处理一个存储器访问请求。DRAM高速缓存和闪存两者可位于同一存储器模块,并在单个存储器地址空间中进行操作。本基于事务的混合存储器模块可提供类似闪存的容量、功率和成本以及类似DRAM的性能。

混合存储器模块可包括动态随机存取存储器(DRAM)高速缓存、闪存和存储器控制器。DRAM高速缓存可包括一个或多个DRAM装置和DRAM控制器,闪存可包括一个或多个闪存装置和闪存控制器。存储器控制器可与DRAM控制器和闪存控制器相连接,并可包括缓冲器和高速缓存标签。基于事务的存储器接口可被配置为耦接存储器控制器与主机存储器控制器。存储器控制器的缓冲器可存储从主机存储器控制器接收的存储器事务请求,高速缓存标记可指示从主机存储器控制器接收的存储器事务请求包括访问DRAM高速缓存的请求。

图1示出根据一个实施例的示例混合存储器模块的架构。混合存储器模块100可包括:可包括DRAM装置131的前端DRAM高速缓存110、包括闪存装置141的后端闪存120以及可与DRAM高速缓存110的DRAM控制器130和闪存120的闪存控制器140相连接的主控制器150。混合存储器模块100可通过基于事务(例如,异步)的存储器接口155,与主机存储器控制器160连接。与同步存储器接口不同,本基于事务的接口可将混合存储器模块100与主机存储器控制器160解耦,允许设计的灵活性。当耦接的存储器模块的存储器访问延迟是非确定性的时,可使用基于事务的存储器接口155。

主控制器150可包括高速缓存标签151和用于高速缓存的暂时存储的缓冲器152。主控制器150负责高速缓存管理和流控制。DRAM控制器130可表现得像DRAM装置131的存储器控制器,并且管理存储器事务、命令调度以及DRAM维护活动(诸如,存储器刷新)。闪存控制器140可表现得像闪存装置141的固态驱动器(SSD)控制器,并且管理地址转换、垃圾回收、损耗平衡和调度。

将在参照相关联的操作流程的四个使用情况中解释主机存储器控制器160与混合存储器模块100之间的存储器事务和接口。闪存的读/写粒度(例如,4KB)可根据闪存产品来变化。行缓冲器(或页)的大小(例如,2KB)也可根据DRAM产品来变化。在下面的示例中,假设DRAM高速缓存110和闪存120的访问粒度分别是64B和4KB,并且存储器控制器读/写请求的大小是64B。然而,应理解,这些仅仅是示例的大小,在不脱离本公开的范围的情况下,可使用DRAM高速缓存110和闪存120的访问粒度的其他大小和存储器控制器读/写请求的其他大小。

图2A是根据一个实施例的读取命中操作(hit operation)的示例流程图。当通过基于事务的存储器接口155从主机存储器控制器160接收请求(步骤201)时,主控制器150可检查高速缓存标签151(步骤202)。可将从主机存储器控制器160接收的请求存储在缓冲器152中。缓冲器152也可存储用于DRAM高速缓存110与闪存120之间以及主控制器150与主机存储器控制器160之间的数据传输的暂时数据。高速缓存标签151可指示请求是否包括到DRAM高速缓存110的存储器事务和来自DRAM高速缓存110的存储器事务。

当缓冲器152中存在待定的请求时,主控制器150可将请求进行解码,以确定与请求相关联的存储器地址或存储器地址的范围。主控制器150可在DRAM高速缓存110中保持特定的数据(例如,频繁使用的数据),并且设置高速缓存标签151以指示与保持的数据相关联的存储器地址。高速缓存标签151可以是来自存储器地址的解码数字,并且被用于确定请求的数据是否在高速缓存中。高速缓存可包括多个高速缓存线(cache line,高速缓存行)。每个高速缓存线可具有其独特的索引和标签。当存储器请求进入时,主控制器150的解码器(未示出)可确定与存储器地址相关联的索引和高速缓存标签。基于索引和高速缓存标签,主控制器150的高速缓存控制器(未示出)可确定任意高速缓存线是否具有相同的索引和高速缓存标签。当存在匹配时,被称为高速缓存命中(cache hit)。当不存在匹配时,被称为高速缓存缺失(cache miss,高速缓存未命中)。当主控制器150通过参照高速缓存标签151确定请求包括读取指令并且DRAM高速缓存110包括与读取地址相关联的数据(这里称为读取命中(步骤203))时,主控制器150可指示DRAM控制器130访问DRAM高速缓存110。DRAM控制器130可访问DRAM高速缓存110(步骤204),并且从DRAM高速缓存110接收64B数据(步骤205)。然后,DRAM控制器130可将64B数据返回到主控制器150(步骤206),并且主控制器150可通过链路总线将64B数据发送到主机存储器控制器160(步骤207)。因为主机存储器控制器160与存储器模块100之间的接口是基于事务的,所以从DRAM高速缓存110返回的数据的时序可能是非确定性的。如将在下面进一步详细地解释的,从DRAM高速缓存110和闪存120返回的数据的延迟可能是不同的。

图2B是根据一个实施例的读取缺失(读取未命中)操作的示例流程图。当高速缓存标签151指示来自主机存储器控制器160的请求包括未被存储在DRAM高速缓存中的读取存储器事务,然后可从闪存120获得数据时(这里称为读取缺失(图2A中的步骤211)),主控制器150可确定数据被存储在闪存120中,并且指示闪存控制器140从闪存120上的相应的存储器地址读取数据。闪存控制器140可访问闪存120(步骤212),并且从闪存120接收4KB数据(闪存120的访问粒度)(步骤213)。然后,闪存控制器140可将4KB数据返回到主控制器150(步骤214)。主控制器150可从接收的4KB数据选择相关的64B,并且通过链路总线将该64B(DRAM高速缓存110的访问粒度)发送到主机存储器控制器160(步骤215)。

主控制器150还可找到DRAM高速缓存页(4KB)以将其清除(evict)。如果对应于4KB数据的DRAM高速缓存页是干净的(步骤216),则主控制器150可将4KB数据写入到DRAM控制器130,并且随后DRAM控制器130可将4KB数据写入到DRAM高速缓存110(步骤217)。DRAM高速缓存110可使用存储在闪存120中的4KB数据进行更新。高速缓存中的多个高速缓存线中的每一个可具有索引、标签和页面重写标志位(dirty bit,脏位)。主控制器150可通过参照页面重写标志位来确定高速缓存线(高速缓存行)的脏(dirtiness)。最初,所有页面重写标志位被设置为0,这表示高速缓存线/行是干净的。高速缓存中的数据是闪存120中的数据的子集。干净表示针对相同的地址,高速缓存中的数据与闪存120中的数据是相同的。相反地,脏表示针对相同的地址,从闪存120中的数据来更新高速缓存中的数据,因而闪存120中的数据是陈旧的。当脏高速缓存线被清除时,必须更新闪存120中的相应的数据。当干净的高速缓存线被清除时,不需要更新。

如果DRAM高速缓存是脏的(步骤216),则主控制器150可指示DRAM控制器130从DRAM高速缓存110读取4KB脏数据。DRAM控制器130可从DRAM高速缓存110访问并且接收4KB脏数据(步骤218)。然后,DRAM控制器130可将4KB脏数据返回到主控制器150,并且主控制器150可指示闪存控制器140将4KB脏数据写回到闪存120(步骤219)。然后,主控制器150可将新的4KB数据写入到DRAM控制器130,并且DRAM控制器130可将新的4KB数据写入到DRAM高速缓存110(步骤220)。可使用存储在闪存120中的新的4KB数据来更新DRAM高速缓存110。

接下来,将参照图1的本混合存储器模块100的架构来解释写入命中和写入缺失操作。参照图3A和图3B描述的示例流程图采用写通式(write-through)高速缓存策略。然而,应理解,在不脱离本公开的范围的情况下,本公开可采用其他高速缓存策略。针对写通式高速缓存策略,对于前端DRAM高速缓存110和后端闪存120两者同步地处理写入请求。图3A是根据一个实施例的写入命中操作的示例流程图。当通过基于事务的存储器接口155从主机存储器控制器160接收请求(步骤301)时,主控制器150可检查高速缓存标签151(步骤302),并且确定从主机存储器控制器160接收的请求包括写入到DRAM高速缓存110的写入命令(步骤303),这里被称为为写入命中。在写入命中的情况下,存储器事务可按下面的顺序发生。主控制器150可将从主机存储器控制器160接收的64B数据写入到DRAM控制器130(步骤304)。然后,DRAM控制器130可将64B数据写入到DRAM高速缓存110(步骤305)。主控制器150可将高速缓存页标记为脏,并且DRAM高速缓存110中的数据可被更新(步骤306)。当在图2B的步骤218至步骤220中发生随后的对高速缓存页的读取缺失操作时,可清除被标记为脏的高速缓存页。

图3B是根据一个实施例的写入缺失操作的示例流程图。主控制器150可检查高速缓存标签151,以确定从主机存储器控制器160接收的请求包括写入到闪存120的写入指令(步骤311),这里被称为写入缺失。在写入缺失的情况下,存储器事务可按下面的顺序发生。首先,主控制器150可确定DRAM高速缓存页是干净还是脏(步骤312)。如果DRAM高速缓存页是脏,则主控制器150可指示DRAM控制器130从DRAM高速缓存110读取4KB脏数据。DRAM控制器130可从DRAM高速缓存110访问并接收4KB脏数据,并且将4KB脏数据返回到主控制器150(步骤313)。然后,主控制器150可将4KB脏数据写回到闪存控制器140,并且闪存控制器140可将4KB脏数据写入到闪存120(步骤314)。

当主控制器150确定DRAM高速缓存页是干净(步骤312)时,或在脏数据被写入到闪存120之后(步骤314),主控制器150准备更新高速缓存页中的从主机存储器控制器160接收的数据。主控制器150可将从主机存储器控制器160接收的64B数据写入到DRAM控制器130(步骤315)。然后,DRAM控制器130可将64B数据写入到DRAM高速缓存110(步骤316)。主控制器150可将高速缓存页标记为脏(步骤317)。

根据一些实施例,在不脱离本公开的范围的情况下,主控制器150可采用各种高速缓存策略。在一个实施例中,主控制器150可采用写回式(write-back)高速缓存策略。当主控制器150采用写回式高速缓存策略时,主控制器150最初写入到前端DRAM高速缓存110,并可延迟对后端闪存120的写入,直到包括数据的高速缓冲块被新数据修改或替代。为了跟踪已经被写入新数据的数据的地址,主控制器150将这些重新写入的地址标记为“脏”,并且当从前端DRAM高速缓存110清除数据时,新数据被写入到后端闪存120。

在另一个实施例中,主控制器150可采用绕写式(write-around)高速缓存策略。绕写式高速缓存策略与写通式高速缓存策略相似,但数据被直接写入到后端的闪存120中,而绕过前端DRAM高速缓存110。这可减少被充满随后将被重新读取的写入请求的高速缓存。

为了实现更好的性能和更快的响应,本混合存储器模块可将闪存页映射为DRAM页。DRAM高速缓存与闪存之间的页映射可允许本混合存储器模块采用open-page(开放页)策略。open-page策略在访问DRAM高速缓存中的页时,确保更快的存储器访问。例如,当从DRAM高速缓存110读取数据或将数据写入到DRAM高速缓存110时,本混合存储器模块仅需要进行一个DRAM行激活,让DRAM行缓冲器保持打开,然后可利用open-page策略来发出一系列的列访问。针对DRAM存储器,当使用open-page策略时,如果一系列的访问发生在相同行(这里被称为行缓冲器命中),则本基于事务的混合存储器模块可避免关闭行和重新打开行的开销,因而可实现更好和更快的性能。

针对包括DRAM存储器和闪存两者的本混合存储器架构,DRAM存储器可用作闪存的高速缓存。更频繁访问的数据可从闪存移动到DRAM高速缓存,而较不频繁访问的数据可从DRAM高速缓存移动到闪存。DRAM高速缓存与闪存之间的数据的频繁移动可能是昂贵的。为了最小化成本,本混合存储器可采用通过将闪存页映射为DRAM页的open-page策略。例如,可将4KB的闪存页映射为两个2KB的DRAM页。

根据一个实施例,本混合存储器模块可支持检查点(checkpointing)。每当设置检查点(例如,将数据从DRAM位置复制到闪存位置)时,主控制器150都可执行将数据从DRAM高速缓存110写回到闪存120。

根据一个实施例,本混合存储器模块可支持预取。主控制器150可预先将与特定页高度相关联的多个闪存页提取到DRAM高速缓存110,以提高性能。

根据一个实施例,存储器模块包括:包括一个或多个DRAM装置和DRAM控制器的动态随机存取存储器(DRAM)高速缓存、包括一个或多个闪存装置和闪存控制器的闪存、与DRAM控制器和闪存控制器相连接的存储器控制器以及被配置为耦接存储器控制器与主机存储器控制器的基于事务的存储器接口。

存储器控制器可包括被配置为存储暂时性高速缓存数据和高速缓存标签的缓冲器。高速缓存标签可指示:从主机存储器控制器接收的存储器事务请求包括用于访问DRAM高速缓存的请求。

存储器控制器可基于高速缓存标签,确定来自主机存储器控制器的存储器事务请求是读取命中、读取缺失、写入命中或写入缺失。

存储器控制器可将来自闪存的闪存页映射到DRAM高速缓存的一个或多个DRAM页。

当存储器模块的存储器访问延迟是非确定的时,基于事务的接口可允许主机存储器控制器访问存储器模块。

存储器控制器可基于高速缓存标签,确定从主机存储器控制器接收的存储器事务请求是从DRAM高速缓存读取的读取请求还是写入到DRAM高速缓存的写入请求,并且DRAM控制器可响应于存储器事务请求来管理DRAM高速缓存的存储器事务和命令调度。

存储器控制器可基于高速缓存标签,确定从主机存储器控制器接收的存储器事务请求是从闪存读取的读取请求还是写入到闪存的写入请求,而且闪存控制器可响应于存储器事务请求来管理闪存的地址变换、垃圾回收、损耗平衡和调度。

根据一个实施例,用于操作包括DRAM高速缓存和闪存的混合存储器模块的方法可包括:从主机存储器控制器异步地接收存储器事务请求;将存储器事务请求存储在混合存储器模块的缓冲器中;检查混合存储器模块的高速缓存标签,并且确定存储器事务请求包括访问存储在DRAM高速缓存中的数据的请求;基于高速缓存标签来执行存储器事务请求。

该方法还可包括:基于高速缓存标签来确定存储器事务请求是从DRAM高速缓存读取的读取请求;从DRAM高速缓存接收对应于存储器事务请求的DRAM数据;将DRAM数据提供给主机存储器控制器。

该方法还可包括将存储器事务请求和高速缓存标签存储在缓冲器中。

该方法还可包括将来自闪存的闪存页映射为DRAM高速缓存的一个或多个DRAM页。

该方法还可包括:基于高速缓存标签,确定存储器事务请求是从DRAM高速缓存读取的读取请求或写入到DRAM高速缓存的写入请求;响应于存储器事务请求,来管理DRAM高速缓存的存储器事务和命令调度。

该方法还可包括:基于高速缓存标签,确定存储器事务请求是从闪存读取的读取请求或写入到闪存存储器的写入请求;响应于存储器事务请求,管理闪存的地址变换、垃圾回收、损耗平衡和调度。

该方法还可包括:确定DRAM高速缓存页是脏的;从DRAM高速缓存页读取脏数据;将脏数据写入到闪存。

该方法还可包括:将从主机存储器控制器接收的数据写入到DRAM高速缓存;将DRAM高速缓存标记为脏。

该方法还可包括:保持DRAM高速缓存的DRAM高速缓存页打开;执行对打开的DRAM高速缓存页的一系列列访问。

该方法还可包括:确定存储在闪存中的被主机存储器控制器频繁地请求的数据;基于被主机存储器控制器请求的数据的频率,将存储在闪存中的数据映射到DRAM高速缓存。

DRAM高速缓存和闪存的访问延迟是非确定的。

已在上文描述了上面的示例实施例,以示出实现用于通过主存储器系统连接协同处理器和输入/输出装置的系统和方法的各种实施例。对本领域普通技术人员来说,将发生来自本公开的示例实施例的各种变形和偏差。在权利要求中阐述了意图存在于在本公开的范围内的主题。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1