掌桥专利:专业的专利平台
掌桥专利
首页

行锤击防御方法、装置及内存控制器

文献发布时间:2024-04-18 20:01:23


行锤击防御方法、装置及内存控制器

技术领域

本发明涉及存储器领域,尤其涉及行锤击防御方法、装置及内存控制器。

背景技术

动态随机存储器(DRAM)设备已被广泛用作现代计算机系统中的主存储器。随着几十年技术发展,存储器单元的特征尺寸逐步减小。随着单元尺寸减小和存储单元密度的增加,DRAM更容易受到寄生效应影响导致数据错误。DRAM特征尺寸的减小会导致称为行锤击的硬件漏洞,它广泛存在于几种主流的DRAM存储设备中,造成严重的安全隐患。行锤漏洞是以足够高的速率打开和关闭一个DRAM的行会导致物理上相邻的行出现位翻转的现象。并且有足够的证据表明,随着工艺进步,DRAM中存储单元的密度提升会导致行锤漏洞更容易被触发。

目前,行锤击防御措施有在DRAM芯片内部进行防御,也有在存储器控制器内进行防御。主要的方法有:行激活计数、行激活触发概率刷新、数据完整性检测、制造工艺改进。但行激活计数随着行锤阈值的减小,需要越来越多的开销。行激活触发概率刷新方式本质上存在安全缺陷。数据完整性检测方式要么无法检测和纠正行锤击引起的位翻转,要么仅具有检测能力。制造工艺改进则大多不能很好的与现有商品DRAM兼容。

但是,随着DRAM特征尺寸的减小,触发行锤击的阈值也变得更小,较小的激活次数就能引起行锤击事件。因此在一个刷新窗口内,更多的行可能是攻击者,这意味着需要大量的资源用于避免行锤击。

发明内容

因此,本发明旨在如何以更少的资源避免行锤击,减少行锤击防御所需要的资源开销,在实现行锤击防御的同时,降低资源占用率。

主要通过以下技术方案实现上述发明目的:

第一方面,行锤击防御方法,应用于内存控制器,包括:

接收所述内存控制器发送的行激活命令,所述行激活命令包含对应的行地址,对所述行地址进行行激活计数,将行激活次数超过第一阈值的行地址作为目标行地址;

对所述目标行地址进行行锤击检测,判断所述目标行地址是否存在行锤击攻击;

若是,则反馈异常信号至所述内存控制器,以便所述内存控制器基于所述异常信号降低所述目标行地址对应的行激活命令的发送密度。

第二方面,行锤击防御装置,应用于内存控制器,包括:

正常行激活过滤模块,用于接收所述内存控制器发送的行激活命令,所述行激活命令包含对应的行地址,对所述行地址进行行激活计数,将行激活次数超过第一阈值的行地址作为目标行地址,并将所述目标行地址和对应的行激活次数发送至行锤击检测模块;

行锤击检测模块,用于对所述目标行地址进行行锤击检测,判断所述目标行地址是否存在行锤击攻击;

行锤击限流模块,用于当判断所述目标行地址存在行锤击攻击时,则反馈异常信号至所述内存控制器,以便所述内存控制器基于所述异常信号降低所述目标行地址对应的行激活命令的发送密度。

第三方面,内存控制器,包括如上所述的行锤击防御装置。

相较于现有技术的有益效果:

本发明应用于内存控制器,通过对内存控制器发送的行激活命令进行行激活计数,从数量庞大的行激活命令中过滤掉正常的行激活命令,只对行激活次数超过第一阈值的目标行地址进行行锤击检测,若行锤击检测结果为存在行锤击攻击,则反馈异常信号至内存控制器,以降低所述目标行地址对应的行激活命令的发送密度,从而实现行锤击防御的目的,避免行锤击现象,由于使用了基于概率的计数器对行激活命令进行行激活计数,不需要为每一行地址分配计数器,从而节省了大量资源,在实现行锤击防御的同时,降低了资源占用率,实现以更少的资源占用的行激活计数方式实现行锤击防御的目的,解决了现有技术中因DRAM特征尺寸的减小而导致需要大量的资源用于避免行锤击的技术问题。

附图说明

图1示出了本发明中行锤击防御装置的结构示意图;

图2示出了本发明中正常行激活过滤模块的结构示意图;

图3示出了本发明中行锤击检测模块的结构示意图;

图4示出了本发明中行锤击限流模块的结构示意图;

图5示出了本发明中行锤击防御方法的流程示意图;

图6示出了本发明中一种电子设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明提供了一种行锤击防御装置100,如图1所示,包括正常行激活过滤模块101、行锤击检测模块102以及行锤击限流模块103。

正常行激活过滤模块101,用于接收所述内存控制器发送的行激活命令,所述行激活命令包含对应的行地址,对所述行地址进行行激活计数,将行激活次数超过第一阈值的行地址作为目标行地址,并将所述目标行地址和对应的行激活次数发送至行锤击检测模块102;从数量庞大的行访问中过滤掉正常的访问,只发送行激活次数异常(行激活次数超过第一阈值)的访问,计算机内存行数可以达到百万,并且触发行锤击阈值也比较大,因此为每一行分配计数器会消耗大量资源。因此,本发明通过正常行激活过滤模块对激活次数异常的行地址进行筛选,有利于节省内存资源开销。

行锤击检测模块102,用于对所述目标行地址进行行锤击检测,判断所述目标行地址是否存在行锤击攻击;

行锤击限流模块103,用于当判断所述目标行地址存在行锤击攻击时,则反馈异常信号至所述内存控制器,以便所述内存控制器基于所述异常信号降低所述目标行地址对应的行激活命令的发送密度,降低所述目标行地址对应的行激活命令的发送密度的具体实施可为:增加所述目标行地址对应的行激活命令的发送时间间隔,增加的目标应以使所述目标行地址对应的行激活命令的发送时间间隔达到行锤击安全时间间隔为宜,行锤击安全时间间隔可通过实际应用场景预设的安全值。

所述行锤击防御装置是应用于内存控制器中,和现有的DRAM有很好的兼容性,通过对内存控制器发送的行激活命令进行行激活计数,从数量庞大的行激活命令中过滤掉正常的行激活命令,只对行激活次数超过第一阈值的目标行地址进行行锤击检测,若行锤击检测结果为存在行锤击攻击,则反馈异常信号至内存控制器,以降低所述目标行地址对应的行激活命令的发送密度,从而实现行锤击防御的目的,避免行锤击现象,由于使用了基于概率的计数器对行激活命令进行行激活计数,不需要为每一行地址分配计数器,从而节省了大量资源,在实现行锤击防御的同时,降低了资源占用率,实现以更少的资源占用的行激活计数方式实现行锤击防御的目的,解决了现有技术中因DRAM特征尺寸的减小而导致需要大量的资源用于避免行锤击的技术问题。

在上述基础上的一个优选实施例中,所述正常行激活过滤模块采用计数式布隆过滤器对所述行地址进行行激活计数。

在上述基础上的一个优选实施例中,如图2所示,所述正常行激活过滤模块101具体包括:第一计数式布隆过滤器10101、第二计数式布隆过滤器10102、第一哈希函数10103、第二哈希函数10104和第三哈希函数10105;

所述第一哈希函数10103、第二哈希函数10104和第三哈希函数10105用于分别对每一个所述行激活命令中包含的行地址计算出相应的第一哈希地址、第二哈希地址和第三哈希地址;通过第一计数式布隆过滤器10101中所述第一哈希地址、第二哈希地址和第三哈希地址对应的第一计数器、第二计数器和第三计数器,对各个行地址相应的第一哈希地址、第二哈希地址和第三哈希地址进行计数;通过所述第二计数式布隆过滤器10102判断第一计数器值、第二计数器值和第三计数器值是否均大于第一阈值,若是,则将均大于第一阈值的第一计数器值、第二计数器值和第三计数器值对应的行地址,作为目标行地址,其中,所述第一计数器值、所述第二计数器值和所述第三计数器值分别是所述第一计数器、所述第二计数器和所述第三计数器对应的计数值。或者,通过所述第一哈希函数、第二哈希函数和第三哈希函数分别计算接收的每一个所述行地址相应的第一哈希地址、第二哈希地址和第三哈希地址;通过第二计数式布隆过滤器10102中所述第一哈希地址、第二哈希地址和第三哈希地址对应的第四计数器、第五计数器和第六计数器,对各个行地址相应的第一哈希地址、第二哈希地址和第三哈希地址进行计数;通过所述第一计数式布隆过滤器10101判断第四计数器值、第五计数器值和第六计数器值是否均大于第一阈值,若是,则将均大于第一阈值的第四计数器值、第五计数器值和第六计数器值对应的行地址,作为目标行地址,其中,所述第四计数器值、所述第五计数器值和所述第六计数器值分别是所述第四计数器、所述第五计数器和所述第六计数器对应的计数值。即,所述第一计数式布隆过滤器10101和第二计数式布隆过滤器10102交替处于激活状态,处于激活状态的计数式布隆过滤器进行第一阈值的判断,处于非激活状态的计数式布隆过滤器进行计数。

例如,在某一个时间片内(可设为行锤击安全时间间隔),接收到有10个行激活命令,记为J

/>

表1

通过表1可知,针对第一计数器JHe

另外,可以理解的是,上述针对计数器或哈希地址的编号并非对计数器个数以及哈希地址个数的限制,仅仅用于区分而已,计数器数量可以根据实际应用场景进行设定。例如,针对行地址e,有相应的第一、第二、第三哈希地址,对应有第一、第二、第三计数器,表示行地址e的3个哈希地址对应有3个计数器来分别对哈希地址进行计数而已;再比如,针对行地址a,也有相应的第一、第二、第三哈希地址,对应有第一、第二、第三计数器,用来对行地址a的第一、第二、第三哈希地址进行计数。因此,可知,对计数器编号并非对计数器数量的限定,例如对于第一计数器,针对不同的行地址,尤其对应不同的第一计数器。对此,本领域技术人员应清楚明白,此处不再赘述。

需要说明的是,正常行激活过滤模块101由两个计数式布隆过滤器实现,两个计数式布隆过滤器维护行访问次数,为了实现较小的面积,每个过滤器使用较小的位数,计数值仅比平均正常的访问次数略大。两个计数式布隆过滤器在不同的时间段内只有一个是激活状态。非激活状态的计数式布隆过滤器仅进行计数。在不同的时间片两个计数式布隆过滤器内轮流进行输出,以保证行锤地址不丢失。具体实施可为:本发明使用的双计数式布隆过滤器由三个定期变化的哈希函数和两个计数器组(所述第一计数式布隆过滤器10101包括第一计数器、第二计数器和第三计数器,所述第二计数式布隆过滤器10102包括第四计数器、第五计数器和第六计数器)组成。当正常行激活过滤模块101接收到激活命令和地址时,会通过哈希函数计算出相应的三个哈希地址,对应哈希地址的三个计数器值加一。然后判断这三个计数值是否都大于设定的第一阈值,若是,则输出目标行地址给行锤击检测模块102,否则不传递信号。双计数式布隆过滤器按周期轮流进行清除,每个周期只有一个过滤器处于激活状态,另一个处于非激活状态。处于激活状态的过滤器会进行阈值判断,非激活状态的过滤器仅进行计数。

在上述基础上的一个优选实施例中,所述行锤击检测模块102具体具体用于:

对所述目标行地址对应的行激活次数进行计数;

判断计数值是否大于第二阈值,若是,则确定所述目标行地址存在行锤击攻击。

需要说明的是,所述行锤击检测模块102使用节省空间算法对所述目标行地址对应的行激活次数进行计数,当所述目标行地址对应的行激活次数超过第二阈值时,该目标行地址存在行锤击攻击,则该目标行地址被列入行锤击限流模块103的黑名单并延迟其访问频率。具体的,如图3所示,行锤击检测模块102内维护一个地址(记录目标行地址)、计数(记录目标行地址对应的行激活次数)和有效位(表示该条记录是否有效,例如1表示有效,0表示无效)的表单,如下表2所述。输入为激活的行地址和正常行激活过滤模块传递的非正常行地址。激活的行地址仅进行计数值的更新,非正常行地址仅进行表单地址的更新。当计数值大于第二阈值的情况时,表明此行是行锤攻击的行,则行锤击检测模块102会将行锤击地址(即存在行锤击攻击的目标行地址)输出给行锤击限流模块103。

表2

由表2可知,设第一阈值为10,第二阈值为30,则凡是行地址对应的行激活次数超过10的行地址被定义为目标行地址,由正常行激活过滤模块101将目标行地址和对应的行激活次数发送给行锤击检测模块102,行锤击检测模块102通过上表2进行记录,并对目标行地址的行激活次数进行计数,当目标行地址1对应的行激活次数40超过第二阈值时,则表示该目标行地址1存在行锤击攻击,则将该目标行地址1发送给行锤击限流模块103。

在上述基础上的一个优选实施例中,所述行锤击限流模块103具体包括:

若所述行锤击判断单元判断所述目标行地址存在行锤击攻击,则将所述目标行地址列入黑名单,并对黑名单中的行地址的激活间隔进行计时;当激活间隔计时超过预设安全值的行地址对应的行激活命令才被允许放行,否则,反馈异常信号至所述内存控制器。

需要说明的是,如图4所示,行锤击限流模块103内维护一个地址、计时和有效位的黑名单(如下表3所示)。输入为激活的行地址和行锤击检测模块传递的行锤击地址。每有一个行锤击地址,行锤击限流模块都会将其添加到黑名单中,黑名单仅在行刷新时清除。计时器每个时钟都会由一个安全计时值递减,直到减到零。每次行激活都会查询黑名单,当行激活地址在黑名单中且计时器值不为零时,发出不安全信号给内存控制器。直到行激活地址不在黑名单或计时器为零时,模块发出安全信号,行激活正常进行。反馈异常信号至所述内存控制器,以便所述内存控制器基于所述异常信号降低所述目标行地址对应的行激活命令的发送密度,即,所述内存控制器基于所述异常信号延长黑名单中的行地址的激活间隔时间,直至安全时间间隔才允许内存控制器发送该黑名单中的行地址对应的行激活命令;通过延缓黑名单中的行地址的行激活命令的发送,达到防御行锤击的目的;但不需要在每行设置分配计数器,从而节省了大量资源,在实现行锤击防御的同时,降低了资源占用率,实现以更少的资源占用的行激活计数方式实现行锤击防御的目的,解决了现有技术中因DRAM特征尺寸的减小而导致需要大量的资源用于避免行锤击的技术问题。

表3

本发明还提供了一种内存控制器,包括如上所述的行锤击防御装置100。通过使用所述行锤击防御装置100,内存控制器有利于节省内存资源开销,提高内存利用率。

本发明还提供了一种行锤击防御方法,应用于内存控制器,如图5所示,包括以下步骤:

步骤S1,接收所述内存控制器发送的行激活命令,所述行激活命令包含对应的行地址;

步骤S2,对所述行地址进行行激活计数,将行激活次数超过第一阈值的行地址作为目标行地址;

步骤S3,对所述目标行地址进行行锤击检测,判断所述目标行地址是否存在行锤击攻击;若是,则转到步骤S4;

步骤S4,反馈异常信号至所述内存控制器,以便所述内存控制器基于所述异常信号降低所述目标行地址对应的行激活命令的发送密度。

在上述基础上的一个优选实施例中,步骤S2中采用计数式布隆过滤器对所述行地址进行行激活计数。

在上述基础上的一个优选实施例中,所述计数式布隆过滤器包括第一计数式布隆过滤器、第二计数式布隆过滤器、第一哈希函数、第二哈希函数和第三哈希函数;步骤S2具体包括:

步骤S201、通过所述第一哈希函数、第二哈希函数和第三哈希函数分别计算接收的每一个所述行地址相应的第一哈希地址、第二哈希地址和第三哈希地址;

步骤S202、通过第一计数式布隆过滤器中所述第一哈希地址、第二哈希地址和第三哈希地址对应的第一计数器、第二计数器和第三计数器,对各个行地址相应的第一哈希地址、第二哈希地址和第三哈希地址进行计数;

步骤S203、通过所述第二计数式布隆过滤器判断第一计数器值、第二计数器值和第三计数器值是否均大于第一阈值,其中,所述第一计数器值、所述第二计数器值和所述第三计数器值分别是所述第一计数器、所述第二计数器和所述第三计数器对应的计数值,若是,则转到步骤204,否则返回步骤S201继续对接收的行地址进行哈希计算;

步骤204、将均大于第一阈值的第一计数器值、第二计数器值和第三计数器值对应的行地址,作为目标行地址。

或者,

步骤S201`、通过所述第一哈希函数、第二哈希函数和第三哈希函数分别计算接收的每一个所述行地址相应的第一哈希地址、第二哈希地址和第三哈希地址;

步骤S202`、通过第二计数式布隆过滤器中所述第一哈希地址、第二哈希地址和第三哈希地址对应的第四计数器、第五计数器和第六计数器,对各个行地址相应的第一哈希地址、第二哈希地址和第三哈希地址进行计数;

步骤S203`、通过所述第一计数式布隆过滤器判断第四计数器值、第五计数器值和第六计数器值是否均大于第一阈值,其中,所述第四计数器值、所述第五计数器值和所述第六计数器值分别是所述第四计数器、所述第五计数器和所述第六计数器对应的计数值,若是,则转到步骤204`,否则返回步骤S201`继续对接收的行地址进行哈希计算;

步骤S204`、将均大于第一阈值的第四计数器值、第五计数器值和第六计数器值对应的行地址,作为目标行地址。

在上述基础上的一个优选实施例中,步骤S3具体包括:

步骤S301、对所述目标行地址对应的行激活次数进行计数;

步骤S302、判断所述目标行地址对应的行激活次数是否大于第二阈值,若是,则转到步骤303,否则,返回执行步骤301,对下一个目标行地址对应的行激活次数进行计数;

步骤303、确定所述目标行地址存在行锤击攻击。

在上述基础上的一个优选实施例中,步骤S4具体包括:

步骤S401、将所述目标行地址列入黑名单,并对黑名单中的行地址的激活间隔进行计时;

步骤S402、判断黑名单中的行地址的激活间隔计时是否超过预设安全值,若是,则转到步骤403,否则,转到步骤404;

步骤403、允许放行激活间隔计时超过预设安全值的行地址对应的行激活命令;

步骤404、反馈异常信号至所述内存控制器,以便所述内存控制器基于所述异常信号降低所述目标行地址对应的行激活命令的发送密度。

由于上述实施例中已经对行锤击防御装置的具体实施方式进行了详细的说明,故在此针对相应的行锤击防御方法的实施方式不再赘述。

本发明另一实施例还提供了一种电子设备,如图6所示,所述设备6包括存储器61、处理器62以及存储在所述存储器61中并可在所述处理器62上运行的计算机程序63,所述处理器62执行所述计算机程序63时实现如上述行锤击防御方法的部分或全部步骤。

本发明另一实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述行锤击防御方法的部分或全部步骤。

以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 终端设备控制方法、终端设备及计算机可读存储介质
  • 终端设备的告警方法、终端设备和计算机可读存储介质
  • 一种存储管理方法、计算机可读存储介质及终端设备
  • 应用兼容性修复方法、终端设备及计算机可读存储介质
  • 条纹投影3D测量方法、终端设备及计算机可读存储介质
  • 一种构建统一ETL的实施方法
技术分类

06120116553806