DDR内存控制器自动变频的方法及系统技术方案

技术编号:25987931 阅读:81 留言:0更新日期:2020-10-20 18:55
本申请公开了一种DDR内存控制器自动变频的方法。步骤S10:初始化DDR内存控制器。步骤S20:DDR内存控制器计算每一个变频时间间隔t_interval内当前频点Freq_cur下的DDR SDRAM的带宽利用率u_cal。步骤S30:DDR内存控制器计算变频步长freq_step、变频时间间隔t_interval的新取值、新频点值Freq_new。步骤S40:DDR内存控制器以最高频点Freq_max和最低频点Freq_min分别作为上下限对新频点值Freq_new进行调整。步骤S50:DDR内存控制器根据新频点值Freq_new对DDR SDRAM发起或不发起硬件变频,并更新最近一次的变频状态last_fc。步骤S60:DDR内存控制器更新变频时间间隔t_interval为其新取值,回到步骤S20。上述方法给出了一种以硬件形式实现DDR SDRAM自动变频的方法。

【技术实现步骤摘要】
DDR内存控制器自动变频的方法及系统
本申请涉及一种内存控制器(MemoryController)的实现方法。
技术介绍
DDRSDRAM(DoubleDataRateSynchronousDynamicRandom-AccessMemory,双倍数据率同步动态随机存取存储器)是电子设备中常见的一种存储器。其中的术语DDR(doubledatarate,双倍数据率)是指在系统时钟信号的上升沿和下降沿都传输数据。DDR内存控制器(DDRmemorycontroller)用来驱动DDRSDRAM。DDRSDRAM的运行频率的高低对电子设备的功耗有较大影响。如果DDRSDRAM的频率一直处于较高状态,那么在电子设备处于待机或不调用应用程序时,会造成资源浪费以及较大的功耗。如果DDRSDRAM的频率—直处于较低状态,则无法满足运行应用程序的需要。因而,为了优化系统功耗,就需要对DDRSDRAM的频率进行变频处理。传统的DDR内存控制器采用软件变频方法,软件在固定时间内,通过读取DDR内存控制器的参数,计算出DDRSDRAM的利用率,并决定是否变频,以及变到哪个频率点,然后再发起变频。其缺点是整个变频过程时间较长,需要重复不断地执行,消耗CPU的资源,增加系统的功耗。
技术实现思路
本申请所要解决的技术问题是提供一种DDR内存控制器自动变频的方法,DDR内存控制器通过统计一段时间内的读写命令数和时钟数,计算DDRSDRAM的带宽利用率。当带宽利用率超过设置的上下门限时,设置新的DDRSDRAM的频点值,DDR内存控制器自动发起DDRSDRAM变频到新的频点值上去。为解决上述技术问题,本申请提出了一种DDR内存控制器自动变频的方法,包括如下步骤。步骤S10:初始化DDR内存控制器,设置最高频点Freq_max、最低频点Freq_min、每个频点的利用率上门限u_max[i]、每个频点的利用率下门限u_min[i]、采集时间间隔t_def_itvl、最小采集时间间隔t_min_itvl,令变量“变频时间间隔t_interval”初始取值等于采集时间间隔t_def_itvl。步骤S20:DDR内存控制器自动统计每一个变频时间间隔t_interval内的读写命令数rw_command_number和时钟数clock_cycle;每经过一个变频时间间隔t_interval,利用读写命令数rw_command_number和时钟数clock_cycle计算出当前频点Freq_cur下的DDRSDRAM的带宽利用率u_cal,同时将读写命令数rw_command_number和时钟数clock_cycle均恢复默认值0。步骤S30:DDR内存控制器计算变频步长freq_step、变频时间间隔t_interval的新取值、新频点值Freq_new。步骤S40:DDR内存控制器以最高频点Freq_max和最低频点Freq_min分别作为上下限对新频点值Freq_new进行调整。步骤S50:DDR内存控制器根据新频点值Freq_new对DDRSDRAM发起或不发起硬件变频,并更新最近一次的变频状态last_fc。步骤S60:DDR内存控制器更新变频时间间隔t_interval为其新取值,回到步骤S20开启下一个以变频时间间隔的新取值为时间周期的统计和计算。上述方法给出了一种以硬件形式(DDR内存控制器)实现DDRSDRAM自动变频的方法。进一步地,所述步骤S10中,0≤Freq_min≤Freq_max<Freq_number;其中,Freq_number是指DDR内存控制器支持的频点数量,每个频点对应不同的频率。这是Freq_min和Freq_max优选应满足的条件。进一步地,所述步骤S10中,所有频点对应的频率值按照升序或降序排列。这是各频点的优选排列方式。进一步地,所述步骤S10中,0<u_min[i]≤u_max[i]<100,i的取值在0到Freq_num-1之间。这是u_min[i]和u_max[i]优选应满足的条件。进一步地,所述步骤S20中,当前频点Freq_cur为频点i时,0≤i<Freq_num,u_cal的计算公式为u_cal[i]=((rw_command_number*burst_size)/(clock_cycle/frequency[i]))/full_bandwidth[i]*100%;其中,burst_size是DDR内存控制器发起一次读写访问的数据量;frequency[i]是频点i时的DDR内存控制器的频率;full_bandwidth[i]是频点i时的理论满带宽。这里给出了DDRSDRAM的带宽利用率u_cal的一种示例性的计算方式。进一步地,所述步骤S30中,DDR内存控制器计算变频步长freq_step和变频时间间隔t_interval的新取值采用如下方式。DDR内存控制器比较当前频点Freq_cur下的DDRSDRAM的带宽利用率u_cal和当前频点Freq_cur下的利用率上门限u_max[Freq_cur]、当前频点Freq_cur下的利用率下门限u_min[Freq_cur]。条件一是指last_fc=1并且u_cal>u_max[Freq_cur]。条件二是指last_fc=-1并且u_cal<u_min[Freq_cur]。其中,last_fc是指DDR内存控制器最近一次的变频状态;last_fc取值为0表示DDR内存控制器最近一次没有变频;last_fc取值为1表示DDR内存控制器的最近一次变频为升频;last_fc取值为-1表示DDR内存控制器的最近一次变频为降频。如果满足条件一或条件二,那么freq_step=freq_step+1;此时,如果满足t_interval/2>t_min_itvl,则t_interval=t_interval/2;如果不满足t_interval/2>t_min_itvl,则t_interval=t_min_itvl。如果不满足条件一也不满足条件二,则freq_step=1;t_interval=t_def_itvl。这是步骤S30的一种优选的实现方式。进一步地,所述步骤S30中,DDR内存控制器计算新频点值Freq_new采用如下方式。当last_fc=-1:如果u_cal<u_min[Freq_cur],新频点值Freq_new=Freq_cur-freq_step;如果u_cal>u_max[Freq_cur]+u_anti_jitter,新频点值Freq_new=Freq_cur+freq_step;如果u_min[Freq_cur]≤u_cal≤u_max[Freq_cur]+u_anti_jitter,新频点值Freq_new=Freq_cur。当last_fc=1:如果u_cal>u_max[Freq_cur],新频点值Freq_new=Freq_cur+freq_step;如果u_cal<u_min[Freq_cur]-u_anti_jitter,新频点值Freq_ne本文档来自技高网...

【技术保护点】
1.一种DDR内存控制器自动变频的方法,其特征是,包括如下步骤;/n步骤S10:初始化DDR内存控制器,设置最高频点Freq_max、最低频点Freq_min、每个频点的利用率上门限u_max[i]、每个频点的利用率下门限u_min[i]、采集时间间隔t_def_itvl、最小采集时间间隔t_min_itvl,令变量“变频时间间隔t_interval”初始取值等于采集时间间隔t_def_itvl;/n步骤S20:DDR内存控制器自动统计每一个变频时间间隔t_interval内的读写命令数rw_command_number和时钟数clock_cycle;每经过一个变频时间间隔t_interval,利用读写命令数rw_command_number和时钟数clock_cycle计算出当前频点Freq_cur下的DDRSDRAM的带宽利用率u_cal,同时将读写命令数rw_command_number和时钟数clock_cycle均恢复默认值0;/n步骤S30:DDR内存控制器计算变频步长freq_step、变频时间间隔t_interval的新取值、新频点值Freq_new;/n步骤S40:DDR内存控制器以最高频点Freq_max和最低频点Freq_min分别作为上下限对新频点值Freq_new进行调整;/n步骤S50:DDR内存控制器根据新频点值Freq_new对DDR SDRAM发起或不发起硬件变频,并更新最近一次的变频状态last_fc;/n步骤S60:DDR内存控制器更新变频时间间隔t_interval为其新取值,回到步骤S20开启下一个以变频时间间隔的新取值为时间周期的统计和计算。/n...

【技术特征摘要】
1.一种DDR内存控制器自动变频的方法,其特征是,包括如下步骤;
步骤S10:初始化DDR内存控制器,设置最高频点Freq_max、最低频点Freq_min、每个频点的利用率上门限u_max[i]、每个频点的利用率下门限u_min[i]、采集时间间隔t_def_itvl、最小采集时间间隔t_min_itvl,令变量“变频时间间隔t_interval”初始取值等于采集时间间隔t_def_itvl;
步骤S20:DDR内存控制器自动统计每一个变频时间间隔t_interval内的读写命令数rw_command_number和时钟数clock_cycle;每经过一个变频时间间隔t_interval,利用读写命令数rw_command_number和时钟数clock_cycle计算出当前频点Freq_cur下的DDRSDRAM的带宽利用率u_cal,同时将读写命令数rw_command_number和时钟数clock_cycle均恢复默认值0;
步骤S30:DDR内存控制器计算变频步长freq_step、变频时间间隔t_interval的新取值、新频点值Freq_new;
步骤S40:DDR内存控制器以最高频点Freq_max和最低频点Freq_min分别作为上下限对新频点值Freq_new进行调整;
步骤S50:DDR内存控制器根据新频点值Freq_new对DDRSDRAM发起或不发起硬件变频,并更新最近一次的变频状态last_fc;
步骤S60:DDR内存控制器更新变频时间间隔t_interval为其新取值,回到步骤S20开启下一个以变频时间间隔的新取值为时间周期的统计和计算。


2.根据权利要求1所述的DDR内存控制器自动变频的方法,其特征是,所述步骤S10中,0≤Freq_min≤Freq_max<Freq_number;其中,Freq_number是指DDR内存控制器支持的频点数量,每个频点对应不同的频率。


3.根据权利要求2所述的DDR内存控制器自动变频的方法,其特征是,所述步骤S10中,所有频点对应的频率值按照升序或降序排列。


4.根据权利要求2所述的DDR内存控制器自动变频的方法,其特征是,所述步骤S10中,0<u_min[i]≤u_max[i]<100,i的取值在0到Freq_num-1之间。


5.根据权利要求2所述的DDR内存控制器自动变频的方法,其特征是,所述步骤S20中,当前频点Freq_cur为频点i时,0≤i<Freq_num,u_cal的计算公式为u_cal[i]=((rw_command_number*burst_size)/(clock_cycle/frequency[i]))/full_bandwidth[i]*100%;其中,burst_size是DDR内存控制器发起一次读写访问的数据量;frequency[i]是频点i时的DDR内存控制器的频率;full_bandwidth[i]是频点i时的理论满带宽。


6.根据权利要求2所述的DDR内存控制器自动变频的方法,其特征是,所述步骤S30中,DDR内存控制器计算变频步长freq_step和变频时间间隔t_interval的新取值采用如下方式;
DDR内存控制器比较当前频点Freq_cur下的DDRSDRAM的带宽利用率u_cal和当前频点Freq_cur下的利用率上门限u_max[Freq_cur]、当前频点Freq_cur下的利用率下门限u_min[Freq_cur];
条件一是指last_fc=1并且u_cal>u_max[Freq_cur];
条件二是指last_fc=-1并且u_cal<u_min[Freq_cur];
其中,last_fc是指DDR内存控制器最近一次的变频状态;last_fc取值为0表示DDR内存控制器最近一次没有变频;last_fc取值为1表示DDR内存控制器的最近一次变频为升频;last_fc取值为-1表示DDR内存控制器的最近一次变频为降频;
如果满足条件一或条件二,那么freq_step=freq_step+1;此时,如果满足t_interval/2>t_min_itvl,则t_interval=t_interval/2;如果不满足t_interval/2>t_min_itvl,则t_interval=t_min_itvl;
如果不满足条件一也不满足条件二,则freq_step=1;t_interval=t_def_itvl。


7.根据权利要求6所述的DDR内存控制器自动变频的方法,其特征是,所述步骤S30中,DDR内存控制器计算新频点值Fr...

【专利技术属性】
技术研发人员:周侨高玫涛陆顺
申请(专利权)人:翱捷科技股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1