1.本技术涉及内存刷新领域,具体而言本技术实施例涉及一种内存刷新计数的方法、装置以及内存控制器。
背景技术:
2.为了防止数据被破坏,动态随机存取存储器dram(dynamic random access memory)设计中加入了动态刷新机制。dram刷新过程中,首先读取原本的数据,将电容的电平与参考电平进行比较,判断数据的1/0值后,再将原数据写回。写回的过程中将电容完全充满电荷(如果数据为1)。
3.dram刷新每间隔一段时间进行一次,对随时间流失的电荷进行补充。间隔的时间不能太长,间隔太长可能导致刷新时数据电平已经无法辨认。但间隔的时间也不能太短,因为充电期间不能进行正常的读写,过于频繁的刷新会导致dram的吞吐性能下降。一般来说,间隔时间的下限由dram本身的属性决定,比如dram的容量密度、运行频率等。而间隔时间上限则由性能吞吐的需求决定。
4.因此,如何改进内存控制器以使其更好的调度与刷新相关的
命令就成了亟待解决的技术问题。
技术实现要素:
5.本技术实施例的目的在于提供一种内存刷新计数的方法、装置以及内存控制器,通过本技术的实施例可以在内存控制器上采用尽可能少的逻辑电路即实现对dram存储器的刷新计数。
6.第一方面,本技术实施例提供一种内存刷新计数的方法,应用于内存控制器中,
所述方法包括:获取影响自刷新计
数值的
目标命令;根据所述目标命令的类型确认调整与所述目标命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器进行存储,所述逻辑块为内存中的逻辑单元。
7.本技术的一些实施例通过识别影响刷新计数值的命令来即时更改刷新计数值,可以完成对内存刷新命令更准确的调度,最终提升内存存取数据的能力。
8.在一些实施例中,所述获取影响自刷新计数值的目标命令,包括:若当前命令包括的影响自刷新计数值的命令的个数为非零时,则从所述当前命令中获取所述目标命令;或者,若确认当前命令的个数为零或确认所述当前命令未包括影响自刷新计数值的命令时,则从命令缓存区获取所述目标命令。
9.本技术的一些实施例通过引入命令缓存区来暂存来不及计数的影响刷新的命令,在保证即时处理当前命令的基础上还可以保证计数器的计数值尽可能准确。
10.在一些实施例中,所述若当前命令包括的影响自刷新计数值的命令的个数为非零时,则从所述当前命令中获取所述目标命令,包括:若确认所述影响自刷新计数值的命令的个数为一个,则将所述影响自刷新计数值的命令作为所述目标命令;所述根据所述目标命
令的类型确认调整与所述命令对应的逻辑块的刷新计数值,包括:根据设定的匹配次序获取所述目标命令的命令类型,其中,所述设定的匹配次序包括:激活、rfm和ref;根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值。
11.本技术的一些实施例对于仅有一个命令时的当前命令,需要依次判断这个命令是否属于激活、ref和rfm命令,这样至少可以保证激活命令被优先进行计数处理,由于激活类型的命令active较多选用优先处理这类命令至少能够达到节约命令缓存空间的功效,节省了逻辑资源。
12.在一些实施例中,若所述内存控制器用于向ddr5内存进行命令和数据调度,则影响所述自刷新计数值的命令类型包括:激活命令、rfm以及ref;所述若当前命令包括的影响自刷新计数值的命令的个数为非零时,则从所述当前命令中获取所述目标命令,包括:若确认所述影响自刷新计数值的命令的个数为多个时,则执行如下操作:确认多个命令中包括所述激活命令时,则将所述激活命令作为所述目标命令,并将所述多个命令中剩余命令存入所述命令缓存区;若确认所述多个命令中不包括所述激活命令时,则将所述多个命令中包括的所述rfm类型的命令作为所述目标命令,并将所述多个命令中剩余命令存入所述命令缓存区;或者,若确认所述多个命令中无所述激活命令且无所述rfm类型的命令时,则将所述ref类型的命令作为所述目标命令,并将所述多个命令中剩余命令存入所述命令缓存区;所述根据所述目标命令的类型确认调整与所述目标命令对应的逻辑块的刷新计数值,包括:根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值。
13.本技术的一些实施例针对多发射命令(即在内存控制器中一个上升沿或者下降沿同时发送多余一个命令)的内存控制器,需要优先对激活命令进行刷新计时更新处理,之后再对rfm命令进行刷新计时更新处理,最后对ref命令进行刷新计时更新处理,由于激活命令active较多选用优先处理这类命令至少能够达到节约命令缓存空间的功效,节省了逻辑资源。
14.在一些实施例中,所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值,包括:若所述目标命令的类型为所述激活命令时,则执行如下调整策略:从所述随机存取存储器读出与所述目标命令所对应的逻辑块的当前刷新计数值,并将所述当前计数值加一,得到更新刷新计数值;将所述更新刷新计数值写回所述当前刷新计数值在所述随机存取存储器的原地址单元。
15.本技术的一些实施例提供了一种对于激活命令所对应逻辑块的刷新计数值的更新策略。
16.在一些实施例中,在将所述更新计数值写回在所述随机存取存储器的原地址单元之后,所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值还包括:确认所述更新刷新计数值等于设定阈值,则根据配置发出rfm请求。
17.本技术的一些实施例还提供了一种调度rfm请求的方式。
18.在一些实施例中,所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值,包括:若所述目标命令的类型为所述ref命令类型的命令时,则执行如下调整策略:从所述随机存取存储器读出与所述目标命令所对应的逻辑块的当前刷新计数值;根据内存属性对所述当前刷新计数值进行清零或者减半操作得到更新刷新计数值;将所述更新刷新计数值写回所述当前刷新计数值在所述随机存取存储器的原地址单元。
19.本技术的一些实施例提供了一种针对ref命令进行刷新计数更新的方法。
20.在一些实施例中,所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值,包括:若所述目标命令的类型为所述rfm命令类型的命令时,则执行如下调整策略:从所述随机存取存储器读出与所述目标命令所对应的逻辑块的当前刷新计数值;将所述当前刷新计数值置零得到更新刷新计数值;将所述更新刷新计数值写回所述当前刷新计数值在所述随机存取存储器的原地址单元。
21.本技术的一些实施例提供了一种针对rfm命令进行刷新计数更新的方法。
22.第二方面,本技术的一些实施例提供一种内存刷新计数的装置,所述装置包括:当前命令获取模块,被配置为获取影响自刷新计数值的目标命令;计数值调整模块,被配置为根据所述目标命令的类型确认调整与所述命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器进行存储,所述逻辑块为内存中的逻辑单元。
23.第三方面,本技术的一些实施例提供一种内存刷新计数的装置,所述装置包括:随机存取存储器,被配置为用于存储与逻辑块对应的刷新计数值;多个运算器,被配置为对从所述随机存取存储器读取的当前刷新计数值进行运算操作得到更新刷新计数值;控制模块,被配置为:获取影响自刷新计数值的目标命令;根据所述目标命令的类型确认调整与所述命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器进行存储,所述逻辑块为内存中的逻辑单元。
24.在一些实施例中,所述内存包括一个或多个rank,且所述rank包括多个bankgroup,且每个bankgroup包括多个逻辑块bank,其中,所述随机存取存储器包括多个可寻址的存储单元,且每个可寻址的存储单元被配置为用于同时存储各个bankgroup中同样编号的逻辑块bank所对应的刷新计数值。
25.在一些实施例中,所述每个可寻址的存储单元的位宽为k比特,则所述可寻址的存储单元被配置为用于存储由多个同样编号的逻辑块所对应的刷新计数值所组成的k比特的字。
26.在一些实施例中,所述装置还包括:命令缓存单元,被配置为缓存当前命令中包括的部分影响自刷新计数值的命令。
27.第四方面,本技术的一些实施例提供一种内存控制器,所述内存控制器包括如上述第三方面任意实施例所述的内存刷新计数的装置。
28.在一些实施例中,所述内存控制器还包括:命令调度单元,所述命令调度单元被配置为向内存发送命令。
附图说明
29.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
30.图1为本技术实施例提供的芯片产品的结构示意图;
31.图2为本技术实施例提供的内存刷新计数的装置的组成框图之一;
32.图3为本技术实施例提供的内存刷新计数的方法的流程图;
33.图4为本技术实施例提供的内存刷新计数的装置的组成框图之二。
具体实施方式
34.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
35.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
36.以下专有名词来源jedec标准组织制定《jesd79-5》标准规范:
37.dram(dynamic random access memory):动态随机存取存储器
38.bank:逻辑块,由多行组成;
39.bankgroup:可以由一个或多个bank组成;
40.active:激活命令;
41.self refresh:自刷新;
42.ref:refresh command,或则auto refresh;
43.rfm:refresh management;
44.raa计数:rolling accumulated act(raa)count.
45.raammt:raa maximum management threshold
46.下面以ddr5内存为例简单阐述内存结构以阐述相关技术的内存自刷新计数装置的结构。由于使用ddr5的系统需要大量的存储容量,所以要求内存控制器dram controller占用大量资源。以服务器芯片为例,ddr5内存可以支持多达10多个ddr channel,每个channel支持4个rank,每个rank可以支持8个plane,甚至16个plane,每个plane支持4个bankgroup,每个bankgroup最多可以8个逻辑块bank,所以每个channel可以支持1024~2048个逻辑块bank,而每个bank需要独立使用一个10位计数器raa,但是由于raa的控制比较复杂,为了便于控制通常采用触发器来实现。也就是说,相关技术由于为了实时准确记录每个逻辑块bank的状态,需要为每个bank设置独立的raa计数值,每个计数器都采用一个十位触发器和一个独立的十位加法器这必将占用大量的资源。
47.本技术的实施例涉及一种dram(dynamic random access memory,动态随机存取存储器)的刷新间隔的计时实现方法。需要说明的是,ddr5中存在三种刷新方式,即:auto refresh、self refresh和rfm,其中,self refresh是当dram处于低功耗状态时自主完成的,不需要内存控制器dram controller参与,而auto refresh和rfm是由dram controller完成调度的,本技术实施例的刷新计数涉及的是针对这两种命令的计时和调度。
48.对于auto fresh,ddr5要求在常温下每32ms刷新一遍所有dram存储单元,这是一项相当耗时的操作。为避免每32ms出现一次大的停顿,这一过程被分为8192个较小的刷新操作。在每个操作中,计算机的存储器控制器向dram芯片发送刷新命令。在接收到指令后,芯片将刷新其单元总数的1/8192。计算一下:32ms/8192=3.9μs。为简化dram控制器设计,dram控制器只需要在每个刷新周期向每个rank发送8192个刷新。根据自身密度决定刷新行数,dram控制器发送2个刷新命令之间的间隔为刷新周期的1/8192,定义为tref1;dram芯片执行一个刷新命令的时间取决于dram芯片的密度,定义为trec,因此每个间隔内需要刷新的行数增多,刷新所占的时间比例不断增大。
49.同时dram为了避免对特定的行高强度的密集访问带来数据的不稳定,在原来的auto refresh基础之上再引入了额外的refresh命令rfm
50.(refresh management),对每个逻辑块bank进行监控,监测每个bank执行激活命令active的次数进行计数(raa:rolling accumulated act count),如果该计数值大于预定的阈值(raammt:raa maximum management threshold)后,就执行一次rfm命令,同时相应bank的raa清零。同时ref命令对于恢复频繁访问bank内的存储单元的电压有同样的效果。因此也可以根据dram的属性(可以读取其属性),决定是否更改每个bank对应的rra值。但是正如前文所述,为了确定这些命令的执行次数以即时调整内存的刷新针对每个板卡涉及的计数器都采用一个十位触发器和一个独立的十位加法器这必将占用大量的资源。
51.至少为了解决上述问题,本技术的一些实施例采用较少的逻辑正确地实现rfm计时和命令调度,并节省资源。由于内存控制单元dram controller平均每周期执行的命令数小于1个,至少为了达到该技术目的,在本技术的一些实施例中,可以采用ram、32个简单运算器、一个少量深度的命令缓冲和控制模块实现针对所有bank的刷新计数。例如,ram的规格320bitx64,简单运算器包括32个10bit的运算器,命令缓冲器用于存储不能合并的并发命令。每个ram存储单元的320位用于存储每个物理rank的所有bank的raa计数值。
52.请参看图1,图1为相关技术的芯片产品,该芯片产品包括内存控制器100以及内存200。
53.内存控制器100被配置为管理与规划cpu与dram之间的数据传输,因此内存控制器的设计决定了dram的访问延迟与带宽效率特性。例如,内存控制器的主要作用就是输出dram内部状态机的输入信号来控制该状态机的状态切换完成dram读写及刷新操作。所以在内存控制器设计中需要仲裁器(arbiter)来确定当前哪一个用户接口可以优先访问dram并给出dram内部状态机所需的状态跳转信号以完成访存操作,并且在内存控制器中需要单独的运算器及存储单元。存储单元记录各bank的当前刷新时间,通过运算器来计算dram各bank下一次的刷新时间,如果某一bank达到了下一次刷新周期那么仲裁器应将dram刷新命令作为最高优先级放入命令队列池中输出至dram芯片以完成数据的充电操作。
54.图1的内存200为dram存储器,例如,该dram存储器包括ddr5存储器。
55.需要说明的是,与相关技术方案的内存控制器100不同的是本技术实施例的内存控制器未采用计数器来记录刷新计数值,而是采用ram来存储刷新技术值(如图2所示),并设计了配套的控制逻辑(如图3所示)来巧妙利用很少的逻辑资源即实现了刷新计数。
56.可以理解的是内存控制器100还包括命令调度单元(图中未示出),所述命令调度单元被配置为向内存发送命令。
57.下面结合图2示例性阐述本技术一些实施例提供的内存刷新计数的装置。
58.如图2,本技术一些实施例提供的内存刷新计数的装置包括:随机存取存储器110、多个运算器120、控制模块130以及命令缓存单元140。
59.随机存取存储器110被配置为用于存储与逻辑块对应的刷新计数值。多个运算器120被配置为对从所述随机存取存储器读取的当前刷新计数值进行运算操作得到更新刷新计数值。例如,运算器120为加法器。
60.随机存取存储器110接收来自于控制模块130的读写使能信号以及读写地址信号,以完成对在该随机存取存储器110中所存的针对各逻辑块bank刷新计数值的更新操作。需
要说明的是,该随机存取存储器110的深度与dram所支持的rank数和dram颗粒的构成等相关,每个可寻址单元的位数与dram所支持的rank数和dram颗粒的构成相关。
61.图2中运算器120的数目与dram颗粒的构成相关,其中,每个运算器通过与随机存取存储器的连线获取与一个逻辑块bank对应的刷新计数值,并对该刷新计数值根据策略完成更新操作,得到更新刷新计数值,之后再通过通路将该更新刷新计数值发送至原存储单元中。
62.随机存取存储器(英语:random access memory,缩写:ram),它可以随时读写(刷新时除外),而且速度很快。ram工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息,它与rom的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。ram在计算机和数字系统中用来暂时存储程序、数据和中间结果。随机存取存储器(ram)既可向指定单元存入信息又可从指定单元读出信息,任何ram中存储的信息在断电后均会丢失,所以ram是易失性存储器。
63.例如,以由于ddr5为例,但是本技术的技术方案的应用场景不限于ddr5。由于ddr5每个物理rank最大支持的bankgroup数为8,每个bankgroup有2个或则4个bank,所以每个物理rank里最多含有4x8=32个bank。在refab/rfmab命令每次刷新所有的rank,refsb/rfmsb命令每次命令只刷新每个bankgroup中的指定bank。在本技术的一些实施例中,采用ram和加法器方案来计数。
64.控制模块130被配置为:获取影响自刷新计数值的目标命令;根据所述目标命令的类型确认调整与该目标命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器进行存储,所述逻辑块为内存中的逻辑单元,由多行组成。
65.如图2所示,该控制模块130会向运算器发送运算控制信号,以触发相应运算器完成对当前刷新计数值的更新操作得到更新刷新计数值。图2的控制模块130可以分别从当前待发射命令(或称为当前命令)或者命令缓存单元140中获取影响自刷新计数值的目标命令,在本技术的一些实施例中,该控制模块优先从当前待发射命令中挑选一个影响刷新计数值的命令作为目标命令(剩余待发射命令中属于影响刷新计数值的命令将存入命令缓存单元(或称为命令缓存区)等待被进行和目标命令相同的处理),并对目标命令所要操作的逻辑块进行刷新计数值的更新操作,如果确认当前待发射命令中无影响自刷新计数值的命令,则该控制模块130会从命令缓存单元140中读取命令进行与针对目标命令相同的操作。需要说明的是,对于该控制模块130的工作过程可参考下文结合图3的阐述,为避免重复在此不做过多赘述。
66.为了通过少数几个运算单元即可实现对ram中存储的各逻辑块bank的刷新计数的更新操作,在一些实施例中,所述内存包括一个或多个rank,且所述rank包括多个bankgroup,且每个bankgroup包括多个逻辑块bank,其中,所述随机存取存储器包括多个可寻址的存储单元,且每个可寻址的存储单元被配置为用于同时存储各个bankgroup中同样编号的逻辑块bank所对应的刷新计数值。
67.在一些实施例中,所述每个可寻址的存储单元的位宽为k比特,则所述可寻址的存储单元被配置为用于存储由多个同样编号的逻辑块所对应的刷新计数值所组成的k比特的字,其中,k的取值为2的整数次幂。例如,在本技术的一些实施例中将计数器排列按如下方法组织存储在raa计数ram里:每个bankgroup选取同样的编号的bank对应的计数器(每个计
数器位宽10bit)组成一个位宽为32x10bit=320bit的字放在同一ram的地址里。
68.命令缓存单元140(或称为命令缓存区)被配置为缓存当前命令中包括的部分影响自刷新计数值的命令,当命令被执行(即执行了自刷新计数更新操作后)会被后从命令缓冲单元140中删除。图2的控制模块130向命令缓存单元140发送读使能信号以从该命令缓存单元140读取缓存的命令,且该控制模块130还接收来自于命令缓存单元140返回的命令,之后该控制模块130会对接收的命令进行类型分析以及根据类型分析结果完成相应逻辑块bank的刷新计数值的更新操作。需要说明的是,由于命令缓存单元140的存储容量有限,因此本技术的一些实施例需要将出现频率最高的命令(例如,激活命令active)尽量优先处理,而减少该类命令在该命令缓存单元140中的存储量。
69.下面结合图3示例性阐述由图2的控制模块130执行的内存刷新技术的方法。
70.如图3所示,本技术实施例提供一种内存刷新计数的方法,应用于内存控制器中,该方法包括:s101,获取影响自刷新计数值的目标命令;以及s102,根据所述目标命令的类型确认调整与所述命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器(例如图2的随机存取存储器110)进行存储,所述逻辑块为内存(如图1中的内存200)中的逻辑单元,由多行组成。
71.也就是说,本技术的一些实施例通过识别影响刷新计数值的命令来即时更改刷新计数值,可以完成对内存刷新命令更准确的调度,最终提升内存存取数据的能力,且这些刷新计数值存储在ram上,因此有效节省了计算器的数量。
72.本技术的一些实施例为了避免同时对多个影响刷新计数值的命令进行刷新计数值更新操作,而设置了命令缓存区。下面结合命令缓存区示例性阐述s101的目标命令的获取过程。
73.在本技术的一些实施例中,s101示例性包括:若当前命令包括的影响自刷新计数值的命令的个数为非零时,则从所述当前命令中获取所述目标命令;或者,若确认当前命令的个数为零或确认所述当前命令未包括影响自刷新计数值的命令时,则从命令缓存区获取所述目标命令。本技术的一些实施例通过引入命令缓存区来暂存来不及计数的影响刷新的命令,在保证即时处理当前命令的基础上还可以保证计数器的计数值尽可能准确。
74.需要说明的是,s101涉及的当前命令即图2示出的当前待发射命令(即当前时刻需要向内存发送的命令)。在一些实施例中,当前待发射命令可能为一个、两个或者四个等,本技术的实施例不限定当前待发设命令的数目。可以理解的是,待发射命令的数目虽然为多个,但是这多个命令中也可能不包括影响刷新计数值的目标命令(例如,影响刷新计数值的命令的类型包括激活命令active、ref以及rfm命令时,当前命令不属于这三类命令中任一一种命令)。在本技术的一些实施例中,该命令缓存区仅用于存储影响自刷新计数值且不能即时被处理的命令。
75.下面结合几个示例阐述s101和s102。
76.在本技术的一些实施例中,当前命令中仅包括一个影响自刷新计数值的命令,则s101包括:若确认所述影响自刷新计数值的命令的个数为一个,则将所述影响自刷新计数值的命令作为所述目标命令,相应的s102包括:根据设定的匹配次序获取所述目标命令的命令类型,其中,所述设定的匹配次序包括:激活、rfm和ref;根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值。
77.例如,当前命令包括激活命令active以及读使能这两个命令,则确认这两个命令中的激活命令active属于影响自刷新计数值的命名,则将该命令作为目标命令继续执行s102的操作,而对于读使能命令则直接由命令调度器完成命令调度即可。
78.也就是说,本技术的一些实施例对于仅有一个属于影响自刷新计数值的命令时的当前命令,需要依次判断这个命令是否属于激活、ref和rfm命令,这样至少可以保证激活命令被优先进行计数处理,由于激活命令active较多则选择优先处理这类命令至少能够达到节约命令缓存空间的功效,节省了逻辑资源。
79.在一些实施例中,所述内存控制器用于向ddr5内存进行命令和数据调度,影响所述自刷新计数值的命令类型包括:激活命令、rfm以及ref;s101示例性包括:若确认所述影响自刷新计数值的命令的个数为多个时,则执行如下操作:确认多个命令中包括所述激活命令时,则将所述激活命令作为所述目标命令,并将所述多个命令中剩余命令存入命令缓存区;若确认所述多个命令中不包括所述激活命令时,则将所述多个命令中包括的所述rfm类型的命令作为所述目标命令,并将所述多个命令中剩余命令存入命令缓存区;或者若确认所述多个命令中无所述激活命令且无所述rfm类型的命令时,则将所述ref类型的命令作为所述目标命令,并将所述多个命令中剩余命令存入命令缓存区;相应的s102包括:根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值。
80.例如,当前命令包括激活active、ref以及读使能这三个命令,则确认这激活active和ref命令均属于影响自刷新计数值的命名,则将激活active作为目标命令继续执行s102的操作,而对于ref命令则需要存入命令缓存区等待后续时刻再对该命令执行s102的操作,对于读使能命令则直接由命令调度器完成命令调度即可。
81.也就是说,本技术的一些实施例针对多发射命令(即在内存控制器中一个上升沿或者下降沿同时发送多余一个命令)且该多发射命令中包括多个影响自刷新计数的命令时,需要优先对激活命令进行刷新计时更新处理,之后再对rfm命令进行刷新计时更新处理,最后对ref命令进行刷新计时更新处理,由于激活类型的命令active较多选用优先处理这类命令至少能够达到节约命令缓存空间的功效,节省了逻辑资源。
82.下面以active、ref以及rfm这三类影响自刷新计数的命令为例,示例性阐述s102执行刷新计数更新操作。
83.在一些实施例中,s102包括的所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值的过程示例性包括:若所述目标命令的类型为所述激活命令时,则执行如下调整策略:从所述随机存取存储器读出与所述目标命令所对应的逻辑块的当前刷新计数值,并将所述当前计数值加一,得到更新刷新计数值;将所述更新刷新计数值写回所述当前刷新计数值在所述随机存取存储器的原地址单元。本技术的一些实施例提供了一种对于激活命令所对应逻辑块的刷新计数值的更新策略。在一些实施例中,在将所述更新计数值写回在所述随机存取存储器的原地址单元之后,所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值还包括:确认所述更新刷新计数值等于设定阈值,则根据配置发出rfm请求。
84.在一些实施例中,s102包括的所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值示例性包括:若所述目标命令的类型为所述ref命令类型的命令时,则执行如下调整策略:从所述随机存取存储器读出与所述目标命令所对应的逻辑块的当前
刷新计数值;根据内存属性对所述当前刷新计数值进行清零或者减半操作得到更新刷新计数值;将所述更新刷新计数值写回所述当前刷新计数值在所述随机存取存储器的原地址单元。本技术的一些实施例提供了一种针对ref命令进行刷新计数更新的方法。
85.在一些实施例中,s102包括的所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值示例性包括:若所述目标命令的类型为所述rfm命令类型的命令时,则执行如下调整策略:从所述随机存取存储器读出与所述目标命令所对应的逻辑块的当前刷新计数值;将所述当前刷新计数值置零得到更新刷新计数值;将所述更新刷新计数值写回所述当前刷新计数值在所述随机存取存储器的原地址单元。本技术的一些实施例提供了一种针对rfm命令进行刷新计数更新的方法。
86.下面以dd5以及两发射命令为例示例阐述内存刷新技术的方法。
87.由于ddr5支持rfm,同时还支持ref。依赖于dram的属性,ref也会对每个bank的raa计数产生影响。由于active的作用对象是作用于单独的bank。所以以bank为单位,为每个bank分配一个独立计数器。对于每个bank的raa,都执行下面的流程完成相应的rfm调度。
88.以由于ddr5为例,下面的原理不限于ddr5。由于ddr5每个物理rank最大支持的bankgroup数为8,每个bankgroup有2个或则4个bank,所以每个物理rank里最多含有4x8=32个bank。在refab/rfmab命令每次刷新所有的rank,refsb/rfmsb命令每次命令只刷新每个bankgroup中的指定bank。在本技术的一些实施例中,采用ram和加法器方案来计数。并将计数器排列按如下方法组织存储在raa计数ram里:每个bankgroup选取同样的编号的bank对应的计数器(每个计数器位宽10bit)组成一个位宽为32x10bit=320bit的字放在同一ram的地址里。将所有的bank对应计数器按照一定的对应关系存放在raa计数ram里以方便读取。
89.由于内存控制器(dram controller)平均每周期执行的命令数小于1个,所以可以采用ram和32个简单运算器实现,以及一个少量深度的命令缓冲和控制逻辑实现,如图2。ram的位宽320bit(ram的深度由所支持的rank数和dram颗粒的构成决定),和32个10bit的简单运算器,命令缓冲器用于存储不能即时合并处理的并发命令,然后本装置在没有执行active,rfm,ref命令周期执行命令缓冲里的命令。每个ram存储单元320位用于存储每个物理rank的所有bank的raa计数值。本文以支持两发射命令的dram controller为例,具体实现流程如下:
90.1、dram controller复位后,对全部的bank的raa计数清零;
91.2、计算当前命令中包含active命令,ref(以下统指refab和refsb)和rfm(以下统指rfmab和rfmsb)命令的个数。
92.(1)如果命令个数是0,则检查命令缓冲区是否有缓存的命令,如有则选取最前面的命令作为当前命令,然后执行第3步;
93.(2)如果命令个数是1,选取最前面的命令作为当前命令,然后执行第3步;
94.(3)如果命令个数是2(最多包含1个active命令)。则按以下情况执行:1)如果包含active命令则先选取active作为当前命令,将剩下的命令存入命令缓冲里,然后执行第3步;2)如果包含rfm命令,先选取rfm作为当前命令,将剩下的命令存入命令缓冲里等待,然后执行第4步;3)否则选取人一个ref命令作为当前命令,将剩下的命令存入命令缓冲器里等待,然后执行第5步;
95.3、判断目标命令是否是active命令。
96.(1)如果不是,则执行第4步;
97.(2)如果是则读出ram中对应active命令所在bank对应的ram地址单元的raa计数,并将对应bank的raa计数器加1得到新值;然后判断当前bank的raa是否等于raammt的值;1)如果相等,根据配置将0或者新值的1/2写回ram原地址单元,发出rfm请求;2)如果不相等,将新值写回ram原地址单元,继续执行第4步。
98.4、判断目标命令是否是ref命令。
99.(1)如果不ref命令,继续执行第5步;
100.(2)如果是,则读出ram中对应ref命令所在bank对应的ram地址单元的raa计数,并根据dram的属性mr59[7:6]的值决定是否将相应bank的raa值清零还是减半,并写回ram原地址单元,然后回到第2步。
[0101]
5、判断目标命令是否是rfm命令。
[0102]
(1)如果不是rfm命令,然后回到第2步;
[0103]
(2)如果是,则读出ram中对应rfm命令所在bank对应的ram地址单元的raa计数,并将相应的bank的raa值清零并写回ram原地址单元,然后回到第2步。
[0104]
可以理解的是,采用本技术一些实施例提供的内存刷新计数的方法和装置可以节省内存控制器dram controller中大量的逻辑,进而减少芯片面积。首先用ram代替同容量触发器可以节省大量资源,其次可以节省大量的运算器。需要说明的是,上述示例的流程是以双发射的dram controller作为例子来讲述的,可以按照同样的原理将上述示例推广的至单发射,和四发射命令的例子中。
[0105]
请参考图4,图4示出了本技术实施例提供的内存刷新计数的装置,应理解,该装置与上述图3方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置的具体功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。装置包括至少一个能以软件或固件的形式存储于存储器中或固化在装置的操作系统中的软件功能模块,该内存刷新计数的装置包括:目标命令获取模块101以及计数值调整模块102。
[0106]
目标命令获取模块101被配置为获取影响自刷新计数值的目标命令。
[0107]
计数值调整模块102被配置为根据所述目标命令的类型确认调整与所述命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器进行存储。
[0108]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
[0109]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基
于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0110]
另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0111]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0112]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0113]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
[0114]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
技术特征:
1.一种内存刷新计数的方法,应用于内存控制器中,其特征在于,所述方法包括:获取影响自刷新计数值的目标命令;根据所述目标命令的类型确认调整与所述目标命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器进行存储,所述逻辑块为内存中的逻辑单元。2.如权利要求1所述的方法,其特征在于,所述获取影响自刷新计数值的目标命令,包括:若当前命令包括的影响自刷新计数值的命令的个数为非零时,则从所述当前命令中获取所述目标命令;或者若确认当前命令的个数为零或确认所述当前命令未包括影响自刷新计数值的命令时,则从命令缓存区获取所述目标命令。3.如权利要求2所述的方法,其特征在于,所述若当前命令包括的影响自刷新计数值的命令的个数为非零时,则从所述当前命令中获取所述目标命令,包括:若确认所述影响自刷新计数值的命令的个数为一个,则将所述影响自刷新计数值的命令作为所述目标命令;所述根据所述目标命令的类型确认调整与所述目标命令对应的逻辑块的刷新计数值,包括:根据设定的匹配次序获取所述目标命令的命令类型,其中,所述设定的匹配次序包括:激活、rfm和ref;根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值。4.如权利要求2所述的方法,其特征在于,若所述内存控制器用于向ddr5内存进行命令和数据调度,则影响所述自刷新计数值的命令类型包括:激活命令、rfm以及ref;所述若当前命令包括的影响自刷新计数值的命令的个数为非零时,则从所述当前命令中获取所述目标命令,包括:若确认所述影响自刷新计数值的命令的个数为多个时,则执行如下操作:确认多个命令中包括所述激活命令时,则将所述激活命令作为所述目标命令,并将所述多个命令中剩余命令存入所述命令缓存区;若确认所述多个命令中不包括所述激活命令时,则将所述多个命令中包括的所述rfm类型的命令作为所述目标命令,并将所述多个命令中剩余命令存入所述命令缓存区;或者若确认所述多个命令中无所述激活命令且无所述rfm类型的命令时,则将所述ref类型的命令作为所述目标命令,并将所述多个命令中剩余命令存入所述命令缓存区;所述根据所述目标命令的类型确认调整与所述目标命令对应的逻辑块的刷新计数值,包括:根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值。5.如权利要求4所述的方法,其特征在于,所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值,包括:若所述目标命令的类型为所述激活命令时,则执行如下调整策略:从所述随机存取存储器读出与所述目标命令所对应的逻辑块当前刷新计数值,并将所述当前刷新计数值加一,得到更新刷新计数值;将所述更新刷新计数值写回所述当前刷新计数值在所述随机存取存储器的原地址单
元。6.如权利要求5所述的方法,其特征在于,在将所述更新计数值写回在所述随机存取存储器的原地址单元之后,所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值还包括:确认所述更新刷新计数值等于设定阈值,则根据配置发出rfm请求。7.如权利要求4所述的方法,其特征在于,所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值,包括:若所述目标命令的类型为所述ref命令类型的命令时,则执行如下调整策略:从所述随机存取存储器读出与所述目标命令所对应的逻辑块的当前刷新计数值;根据内存属性对所述当前刷新计数值进行清零或者减半操作得到更新刷新计数值;将所述更新刷新计数值写回所述当前刷新计数值在所述随机存取存储器的原地址单元。8.如权利要求4所述的方法,其特征在于,所述根据与所述目标命令的命令类型对应的调整策略调整所述刷新计数值,包括:若所述目标命令的类型为所述rfm命令类型的命令时,则执行如下调整策略:从所述随机存取存储器读出与所述目标命令所对应的逻辑块的当前刷新计数值;将所述当前刷新计数值置零得到更新刷新计数值;将所述更新刷新计数值写回所述当前刷新计数值在所述随机存取存储器的原地址单元。9.一种内存刷新计数的装置,其特征在于,所述装置包括:当前命令获取模块,被配置为获取影响自刷新计数值的目标命令;计数值调整模块,被配置为根据所述目标命令的类型确认调整与所述目标命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器进行存储,所述逻辑块为内存中的逻辑单元。10.一种内存刷新计数的装置,其特征在于,所述装置包括:随机存取存储器,被配置为用于存储与逻辑块对应的刷新计数值;多个运算器,被配置为对从所述随机存取存储器读取的当前刷新计数值进行运算操作得到更新刷新计数值;控制模块,被配置为:获取影响自刷新计数值的目标命令;根据所述目标命令的类型确认调整与所述目标命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器进行存储,所述逻辑块为内存中的逻辑单元。11.如权利要求10所述的装置,其特征在于,所述内存包括一个或多个rank,且所述rank包括多个bankgroup,且每个bankgroup包括多个逻辑块bank,其中,所述随机存取存储器包括多个可寻址的存储单元,且每个可寻址的存储单元被配置为用于同时存储各个bankgroup中同样编号的逻辑块bank所对应的刷新计数值。12.如权利要求11所述的装置,其特征在于,所述每个可寻址的存储单元的位宽为k比特,则所述可寻址的存储单元被配置为用于存储由多个同样编号的逻辑块所对应的刷新计数值所组成的k比特的字。
13.如权利要求10所述的装置,其特征在于,所述装置还包括:命令缓存单元,被配置为缓存当前命令中包括的部分影响自刷新计数值的命令。14.一种内存控制器,其特征在于,所述内存控制器包括如权利要求10-13任一项所述的内存刷新计数的装置。15.如权利要求14所述的内存控制器,其特征在于,所述内存控制器还包括:命令调度单元,所述命令调度单元被配置为向内存发送命令。
技术总结
本申请实施例提供一种内存刷新计数的方法、装置以及内存控制器,该内存刷新计数的方法,应用于内存控制器中,所述方法包括:获取影响自刷新计数值的目标命令;根据所述目标命令的类型确认调整与所述命令对应的逻辑块的刷新计数值,其中,所述刷新计数值采用随机存取存储器进行存储,所述逻辑块为内存中的逻辑单元。本申请的一些实施例通过识别影响刷新计数值的命令来即时更改刷新计数值,可以完成对内存刷新命令更准确的调度,最终提升内存存取数据的能力。据的能力。据的能力。
技术研发人员:
江山刚 李涛
受保护的技术使用者:
海光信息技术股份有限公司
技术研发日:
2021.12.15
技术公布日:
2022/3/25