DRAM控制器及其控制方法和计算机程序产品与流程

文档序号:12476121阅读:347来源:国知局
DRAM控制器及其控制方法和计算机程序产品与流程

本申请要求2016年4月15日提交的标题为“SANITIZE-AWARE DRAM CONTROLLER”的第62/323,177号美国临时申请的优先权,其全部内容通过引用包含于此。



背景技术:

动态随机存取存储器(DRAM)在现代计算机系统中无处不在。DRAM由于其相对较低的成本、高容量/密度和高速度而无处不在。密度的益处很大程度上是由于用于存储数据位的各单元仅需要电容器和单个晶体管的事实而得到的。这与例如静态随机存取存储器(SRAM)的每单元所需要的硬件相比,明显是更少的硬件。然而,数据位在单元的电容器上的存储暗示了电力消耗成本。这是因为电容器电荷可能随时间经过而泄漏,从而使得单元失去其值。结果,电容器必须周期性地“刷新”以保持其值。这涉及从单元读取当前值并将该值写回至单元,从而“刷新”单元的值。刷新操作与不需要刷新的其它存储器技术相比消耗额外的电力。刷新根据系统对DRAM访问的需求可能带来DRAM的能量消耗中显著的百分比(例如,约20%),并且可能劣化系统性能(例如,约30%)。

本发明的共同发明人之一获得授权的第5,469,559号美国专利说明了用于抑制刷新不包含有效数据的DRAM的所选部分的存储器控制器和方法。这可以减少对于无效数据而言不必要的刷新所消耗的电量。

本发明的发明人提供了提供更多益处的DRAM控制器的实施例。额外的益处主要是通过发明人认识到如下事实而得到的:许多操作系统通过向解除分配的存储器写入零来“净化(sanitize)”该存储器,从而例如通过防止黑客和/或该存储器被分配至的下一用户看到第一个用户的数据来提高系统安全性。



技术实现要素:

本发明提供一种用于控制动态随机存取存储器即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是示出计算系统的框图。

图2是示出根据替代例的计算系统的框图。

图3~5是示出系统的操作的流程图。

图6是示出根据一个实施例的用以进行针对净化后的DRAM块的选择性刷新的系统的操作的流程图。

图7是示出净化检测硬件(SDH)实例的框图。

图8是示出通过采用图7的SDH实例检测为要对DRAM块进行净化的DRAM控制器的操作的流程图。

具体实施方式

术语表

DRAM的块是DRAM中的一个或多个存储单元,其中,针对该一个或多个存储单元,DRAM控制器可以选择性地启用或禁用刷新。例如,数据RAM的(通常被称为)“行”是可刷新的。对于一些DRAM,作为示例,行是512字节的存储。

净化DRAM的块是指将块中的所有位置清除为零值。

现在参考图1,示出用于例示计算系统100的框图。计算系统100包括处理器102、DRAM 104、将处理器102连接至DRAM 104的DRAM控制器103、以及经由DRAM控制器103访问DRAM 104的其它总线主装置(例如,总线主控I/O装置)。处理器102可以是多核处理器。处理器102执行包括系统软件(诸如操作系统和/或系统固件(诸如基本输入/输出系统(BIOS)或可扩展固件等)等)、实用工具和应用程序的程序。DRAM 104被配置为多个DRAM块142。除其它事项外,系统软件还对包括DRAM块142整体的DRAM 104的一部分进行净化。许多操作系统以根据处理器102支持的虚拟存储器系统确定大小的页为粒度来净化存储器。例如,常见页大小为4KB、64KB、1MB、16MB、256MB、1GB和2GB。

DRAM控制器103将DRAM 104中的一个或多个存储单元(例如DRAM 104的行)视为DRAM块142,其中,针对该一个或多个存储单元,DRAM控制器可以选择性地启用或禁用刷新。在一些实施例中,DRAM块142的大小与处理器102的虚拟存储器系统所支持的最小页的大小相对应。例如,如果DRAM控制器可以选择性地启用或禁用刷新所针对的存储单元是512字节的行,并且处理器102所支持的最小页的大小为4KB,则DRAM控制器103将DRAM 104的8个邻接行视为DRAM块142。

DRAM控制器103包括多个净化标志132(还被称为净化位132)以及净化控制器134。在一个实施例中,DRAM控制器103包括针对DRAM 104的各相应DRAM块142的净化位132。

在替代例(这里被称为净化范围实施例)中,各净化位132具有相应的范围寄存器,其中净化位132和范围寄存器一起构成净化对。范围寄存器保持用以指定邻接DRAM块142的范围的地址和计数。该地址指定该范围内的第一个或起始DRAM块142,并且该计数指定该范围内的邻接DRAM块142的数量。如以下更详细所述,如果设置了净化位132,则在相应的范围寄存器中所指定的DRAM块142的范围被视为经过净化。净化控制器134将多个净化对视为如下的池,其中,(例如在图3的块304中)净化控制器134针对邻接DRAM块142的范围可以从该池中进行分配,并且(例如,在图5的块508中)净化控制器134可以解除分配到该池中。如果设置了净化位132,则这表示该净化对已被分配,并且如果清除了净化位132,则这表示该净化对可以自由分配。

现在参考图2,示出用于例示根据替代例的计算系统100的框图。图2的计算系统100与图1的计算系统100类似,并且包括类似的要素。然而,在图2的计算系统100中,DRAM控制器103一体化到处理器102中。更具体地,处理器102包括环形总线226,其中DRAM控制器103连接至该环形总线226。处理器102还包括连接至环形总线226的多个处理器核222。处理器102还包括核222所共用的、连接至环形总线226的末级高速缓存(LLC)224。优选地,DRAM控制器103、LLC 224和各核222具有使它们连接至环形总线226的关联环站点。最后,处理器102包括将I/O装置106连接至环形总线226的I/O环站点228。

现在参考图3,示出用于例示系统100的操作的流程图。流程从块302开始。

在块302中,DRAM控制器103确定为要净化DRAM块142。在一个实施例中,例如,如以下参考图6所述,系统软件向DRAM控制器103告知要净化DRAM块142。在另一实施例中,例如,如以下参考图7和8所述,DRAM控制器103包括通过监视向DRAM块142的零值写入来进行确定的硬件。也考虑到用于确定要净化DRAM块142的其它实施例。流程进入块304。

在块304中,DRAM控制器103设置与块302中所确定的DRAM块142相关联的净化位132。另外,DRAM控制器103禁用DRAM块142的刷新。在净化范围实施例中,DRAM控制器103分配净化对、设置净化位132并且利用范围内的第一个DRAM块142的地址以及具有该范围内的DRAM块142的数量的计数来填充范围寄存器。另外,DRAM控制器103禁用该范围内的所有DRAM块142的刷新。流程在块304处结束。

现在参考图4,示出用于例示系统100的操作的流程图。流程从块402开始。

在块402中,DRAM控制器103接收要从DRAM 104的位置进行读取的请求。基于该位置的地址,该位置关联DRAM块142,即,处于DRAM块142内。流程进入决定块404。

在决定块404中,DRAM控制器103判断是否设置了与所关联的DRAM块142相对应的净化位132。如果是,则流程进入块408;否则,流程进入块406。在净化范围实施例中,净化控制器134判断为读取请求的地址落入设置了净化位132的净化对的范围寄存器中所指定的范围。

在块406中,DRAM控制器103从DRAM 104中读取所指定的位置并且返回所读取到的数据,即,根据DRAM控制器103的正常操作来进行工作。流程在块406处结束。

在块408中,DRAM控制器103不读取DRAM 104,而是针对读取请求返回零值。这是因为在决定块404中判断为要净化读取请求所关联的DRAM块142。流程在块408处结束。

(例如,在块408中)在块被净化的情况下不读取DRAM的优点是:(1)由于不需要为了维持零值而刷新DRAM块,因此可以消耗更少的电力;(2)即使软件请求读取数据,也由于没有为了读取数据而访问DRAM,因此可以消耗更少的电力;以及(3)由于不必为了读取所请求的数据而访问DRAM,因此性能因读取请求的延迟缩短而可以得到改善,由于已知数据的期望值为零,因此所有这些都是可能的。

现在参考图5,示出系统100的操作的流程图。流程从块502开始。

在块502中,DRAM控制器103接收要向DRAM 104的位置写入数据的请求。更具体地,DRAM控制器103判断为要写入的数据具有非零值。基于该位置的地址,该位置关联DRAM块142,即,处于DRAM块142内,或者在净化范围实施例中该位置关联DRAM块142的范围。在替代例中,DRAM控制器103不检查要写入的数据是否非零,而是与数据值无关地进行图5的操作。如果DRAM控制器103接收到将具有零值的数据写入DRAM 104的位置的请求,则在设置了净化位132的情况下,DRAM控制器103不进行向DRAM 104的写入,而在清除了净化位132的情况下,DRAM控制器103将零值写入DRAM 104的指定位置。流程进入决定块504。

在决定块504中,DRAM控制器103判断是否设置了与所关联的DRAM块142或者DRAM块142的范围相对应的净化位132。如果是,则流程进入块508;否则,流程进入块506。在净化范围实施例中,净化控制器134判断为写入请求的地址落入设置了净化位132的净化对的范围寄存器中所指定的范围。

在块506中,DRAM控制器103将所指定的数据写入DRAM 104中的指定位置,即,根据DRAM控制器103的正常操作来进行工作。流程在块506处结束。

在块508中,DRAM控制器103清除与所关联的DRAM块142相对应的净化位132。另外,DRAM控制器103针对所关联的DRAM块142或净化范围实施例中的范围寄存器所关联的DRAM块142的范围重新启用刷新。更进一步地,DRAM控制器103将所指定的数据写入DRAM 104的指定位置。最后,DRAM控制器103将零写入除写入请求所指定的位置以外的、DRAM块142的所有位置或所关联的DRAM块142的范围。流程在块508处结束。

在向净化后的块进行首次非零的写入之前等待向块的其它位置写入零值的优点是:(1)由于与(例如,如美国专利5,469,559中所述的)操作系统指示块已被分配之后立即开始刷新那样相比,针对附加的时间量(并且在一些情况下,在软件对块进行分配之后到对块进行写入之前可能是大量时间)没有对DRAM块进行刷新,因此可以消耗更少电力;(2)操作系统不必进行针对块的所有零的写入,其中为了将这些零写入块、涉及处理器102执行数量级可能为数十到数百的指令。后者的考虑具有如此得到的以下益处:(a)由于处理器102不必执行许多写入指令,因此可以消耗更少电力;(b)由于处理器102不必执行许多写入指令且因而有空执行其它指令,因此可以改善系统性能;以及(c)由于DRAM控制器103在没有额外延迟的情况下向块进行零的写入,因此可以改善系统性能,其中,在处理器102必须执行写入指令然后向DRAM控制器103进行写入请求的情况下将会涉及该额外延迟。应理解,第二个益处(2)可以不通过图7和8的净化检测硬件(SDH)实施例来实现。

现在参考图6,示出用于例示根据一个实施例的用以进行针对净化后的DRAM块142的选择性刷新的系统100的操作的流程图。流程从块602开始。

在块602中,系统软件(例如,操作系统或其它执行程序)决定对DRAM块142进行净化。例如,一些操作系统提供UNIX操作系统和诸如Mac OS X及较新版本的微软视窗(Microsoft Windows)等的相关操作系统中找到的诸如bzero()和memset()等的系统调用,其中,可以调用这些系统调用来净化存储器位置的序列,即,从指定存储器地址开始的指定数量的邻接存储器位置。传统上,实现这些系统调用的例程向指定序列中的所有存储器位置进行一系列的零值的写入。在一个实施例中,利用DRAM控制器103的能力来修改用于实现系统调用的例程。更具体地,该例程检查存储器位置的序列是否包括一个或多个整体DRAM块142。如果是,则代替传统地进行向所包括的块142的一系列零值写入,如参考块604所述,例程向DRAM控制器103进行写入以请求DRAM控制器103净化所包括的块142。流程进入块604。

在块604中,系统软件向DRAM控制器103写入要净化的块142的地址。优选地,DRAM控制器103包括接收地址的控制寄存器。也就是说,通过在包括DRAM 104和DRAM控制器103的系统100上(例如,处理器102上)运行系统软件,可以对控制寄存器进行写入。在净化范围实施例中,系统软件写入该范围的地址和该范围内的DRAM块142的计数两者。流程进入块606。

在块606中,DRAM控制器103针对指定的块142或块142的范围进行图3的操作,即,设置与块142或块142的范围相关联的净化位132并且针对块142或块142的范围禁用刷新。流程在块606处结束。

现在参考图7,示出用于例示净化检测硬件(SDH)实例700的框图。在一个实施例中,DRAM控制器103包括多个SDH实例700,其中,DRAM控制器103(例如,在图8的块806中)从该多个SDH实例700中进行分配,并且(例如,在图8的块818中)解除分配到该多个SDH实例700中。SDH实例700包括有效位702、位图704、地址寄存器708和控制逻辑706。有效位702在为真的情况下表示SDH实例700已被分配,并且在为假的情况下表示SDH实例700可自由分配。位图704包括针对地址保持在地址寄存器708中的DRAM块142的各个位置的位。在各种实施例中,DRAM块142中的位置与对齐字节、16位的半字、32位的字、64位的双字、128位的四倍长字或256位的八倍长字相对应。在一个实施例中,位置与对齐高速缓存线(例如,处理器102的末级高速缓存)相对应。控制逻辑706进行诸如以下参考图8所述的操作等的与读取并更新有效位702、位图704和地址寄存器708相关联的操作。

现在参考图8,示出用于例示通过采用图7的SDH实例700检测为要净化DRAM块142的DRAM控制器103的操作的流程图。流程从块802开始。

在块802中,DRAM控制器103接收向DRAM 104的位置写入数据的请求。基于该位置的地址,该位置关联DRAM块142,即该位置处于DRAM块142内,或者该位置关联净化范围实施例中的DRAM块142的范围。流程进入决定块804。

在决定块804中,DRAM控制器103判断是否已经针对写入请求所关联的DRAM块142或DRAM块142的范围分配了SDH实例700。更具体地,DRAM控制器103判断读取请求的地址的相关部分是否与有效702的SDH实例700的地址708匹配。如果是,则流程进入决定块808;否则,流程进入块806。

在块806中,净化控制器134分配自由的SDH实例700。优选地,分配SDH实例700包括找出自由的SDH实例700(即,有效位702为假的SDH实例700)、将有效位初始化为真、将位图704的所有位清除为零以及将写入请求地址的相关部分写入地址寄存器708。优选地,如果不存在可分配的自由SDH 700,则DRAM控制器103仅继续正常工作,即,不尝试进行对正在净化块142的检测。流程在块806处结束。

在决定块808中,净化控制器134判断要写入的值是否为零。如果是,则流程进入块814;否则,流程进入块812。

在块812中,净化控制器134对先前(在块806中)针对DRAM块142所分配的SDH实例700进行解除分配。优选地,对SDH实例700进行解除分配包括清除有效位702,这样释放了SDH实例700以供后续的分配。流程在块812处结束。

在块814中,净化控制器134设置与块802中通过所接收到的请求而写入的DRAM块142中的位置相关联的位图704的位。流程进入决定块816。

在决定块816中,净化控制器134判断位图704是否已满,即,是否设置了位图704的所有位。如果是,则流程进入块818;否则,流程结束。

在块818中,由于净化控制器134已判断为系统软件已净化了DRAM块142,因此净化控制器134对先前针对DRAM块142所分配的SDH实例700进行解除分配,并且开始如针对图3所述那样进行针对DRAM块142的操作。

已考虑到SDH实例的其它实施例。在一个实施例中,DRAM控制器103假定为了净化块142而进行的一系列零值写入是以固定大小的字来进行的并且从块142中的第一个位置开始。该实施例并不需要位图704,而是需要如下的寄存器,其中该寄存器用于保持在块142内的最近以零值写入的块142的字之后的固定大小的字的索引。在操作期间,DRAM控制器103检测向块142中的第一个位置的数据值的写入。如果针对块142尚未分配SDH实例并且写入的是固定大小的零值的字,则DRAM控制器103分配SDH实例。分配SDF实例包括将寄存器的值初始化为一。如果针对块142已经分配了SDH实例,则DRAM控制器103判断数据值是否为零以及寄存器的索引是否与当前为零值的写入的索引匹配。如果为否,则DRAM控制器103对SDH实例进行解除分配。否则,DRAM控制器103判断寄存器的索引是否是块142中的最高索引。如果是,则DRAM控制器103对SDH实例进行解除分配并且针对该块进行图3的操作;否则,DRAM控制器103使寄存器递增。

尽管这里已经说明了本发明的各种实施例,但应理解,这些实施例仅是以示例而非限制性的方式所呈现的。对于计算机相关领域的技术人员应显而易见,在没有背离本发明的范围的情况下,可以对本发明进行形式和细节方面的各种修改。例如,软件可以启用这里所述的设备和方法的例如功能、制造、建模、模拟、说明和/或测试。这可以经由一般编程语言(例如,C、C++)、包括Verilog HDL、VHDL等的硬件描述语言(HDL)或其它可用程序的使用来实现。这些软件可以放置在诸如磁带、半导体、磁盘或光盘(例如,CD-ROM、DVD-ROM等)等的任何已知的计算机可用介质、网络、配线或其它通信介质中。这里所述的设备和方法的实施例可以包括在诸如(例如,以HDL实现或指定的)处理器核等的半导体知识产权核中并且在生产集成电路时转换成硬件。此外,这里所述的设备和方法可以作为硬件和软件的组合来实现。因而,本发明不应局限于这里所述的任何典型实施例,而应仅根据所附权利要求书及其等同物来限定。具体地,本发明可以在通用计算机中能够使用的处理器装置中实现。最后,本领域技术人员应理解,在没有背离由所附权利要求书限定的本发明的范围的情况下,他们可以容易地使用所公开的概念和特定实施例作为用于设计或修改其它结构的基础,以实施本发明的相同的目的。

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