现以DDR为例进行功耗计算,此过程可以推广到SDRAM和DDR2功耗计算。DRAM器件功耗难以准确计算的原因是由于该类器件工作状态繁多,且系统运行过程这些状态还不断切换,这些都为功耗的计算造成了阻碍。具体计算内存的功耗不是很容易的事,我们计算的结果只是一个假定工作条件下的平均值。为了估算内存芯片功耗,首先必须了解芯片的一些基本功能,下图是DDR功能模块图:
从上图可以看到,每个BANK都有一个SENSE AMPLIRERS(读出放大器),在进行读、写、自动刷新等操作时,需要先把存储阵列中的数据进行缓存后才能进行操作,SENSE AMPLIRERS就是这个缓存器。
DDR大致有以下几种工作状态,总结如下:
Precharge(预充电)、ACTIVE(激活)、读、写、自动刷新、自刷新。
预充电(Precharge)
指关闭所有行地址线(rowline),所有列地址线(bitline)接1/2Vcc源经过足够长时间冲或放电使列地址电容电压值达到1/2VCC的动作。对不同列地址进行读或写都要进行新的预充电。
芯片上电后最先做的动作就是预充电,它是其他操作的基础。
ACTIVE(激活)
用简单的一句话来描述,激活命令的作用就是将选择地址的bit信号送入读出放大器,以供下一步的读或写做准备。从字面上来理解,就是将存储矩阵电路中位信号发送到读出放大器以供外设使用,也就是将存储信号激活。
读
芯片上电确定地址,进行预充电再进行激活处理将数值发送到读出处理器,再发送到I/O口;这就是读操作的全部流程。
写
芯片上电确定地址,进行激活处理将外设传递数据保存到读出处理器,再通过预充电操作将数据压入存储矩阵电路。
计算内存电源消耗的最重要的参数是操作电流Idd参数,这些值在标准的内存芯片参考手册上都可以查到。下面的列表介绍了 DDR 内存芯片的各种Idd电流的具体含义:操作电流可分为如下几部分:
后台电源消耗(Background Power)-对应静态功耗
CKE 低电平节能状态的预充电模式:P(Pre_down)=Idd2p*VDD
CKE有效 Standby状态的预充电模式:P(Pre_stby)=Idd2f*VDD
CKE 低电平节能状态的激活模式:P(ACT_down)=Idd3p*VDD
CKE 有效 Standby 状态的预充电模式:P(ACT_stby)=Idd3n*VDD
自动刷新电流:P (REF)=(Idd5/6–Idd2p)*VDD
激活时操作电流(Activate Power)
Active 到 Precharge 操作过程中的消耗:P(ACT)=(Idd0-Idd3n)*VDD*[Trc(spec)/TACT(actual)]
读写操作电流(Read/Write Power)
写操作的功耗:P(wr) =(Idd4w - Idd3n)*VDD*WR%
读操作的功耗:P(rd) =(Idd4r - Idd3n)*VDD*RD%
读操作时 I/O功耗:P(DQ) =(Vout * Iout)*N*RD%
操作电流可分为如下几部分:
后台电源消耗(Background Power)-对应静态功耗
CKE 低电平节能状态的预充电模式:P(Pre_down)=Idd2p*VDD
CKE有效 Standby状态的预充电模式:P(Pre_stby)=Idd2f*VDD
CKE 低电平节能状态的激活模式:P(ACT_down)=Idd3p*VDD
CKE 有效 Standby 状态的预充电模式:P(ACT_stby)=Idd3n*VDD
自动刷新电流:P (REF)=(Idd5/6–Idd2p)*VDD
激活时操作电流(Activate Power)
Active 到 Precharge 操作过程中的消耗:P(ACT)=(Idd0-Idd3n)*VDD*[Trc(spec)/TACT(actual)]
读写操作电流(Read/Write Power)
写操作的功耗:P(wr) =(Idd4w - Idd3n)*VDD*WR%
读操作的功耗:P(rd) =(Idd4r - Idd3n)*VDD*RD%
读操作时 I/O功耗:P(DQ) =(Vout * Iout)*N*RD%
其中WR%和RD%指写/读操作在ACT周期中占的比重,Vout和Iout指DQ管脚的输出电压和电流,N指芯片上DQ和DQS的数目。带入相应的公式即可算出芯片的功耗:
操作电流可分为如下几部分:
后台电源消耗(Background Power)-对应静态功耗
CKE 低电平节能状态的预充电模式:P(Pre_down)=Idd2p*VDD
CKE有效 Standby状态的预充电模式:P(Pre_stby)=Idd2f*VDD
CKE 低电平节能状态的激活模式:P(ACT_down)=Idd3p*VDD
CKE 有效 Standby 状态的预充电模式:P(ACT_stby)=Idd3n*VDD
自动刷新电流:P (REF)=(Idd5/6–Idd2p)*VDD
激活时操作电流(Activate Power)
Active 到 Precharge 操作过程中的消耗:P(ACT)=(Idd0-Idd3n)*VDD*[Trc(spec)/TACT(actual)]
读写操作电流(Read/Write Power)
写操作的功耗:P(wr) =(Idd4w - Idd3n)*VDD*WR%
读操作的功耗:P(rd) =(Idd4r - Idd3n)*VDD*RD%
读操作时 I/O功耗:P(DQ) =(Vout * Iout)*N*RD%