多端口寄存器堆的低功耗设计方法
扫描二维码
随时随地手机看文章
寄存器堆是构成微处理器的重要部件,缓存和传输操作数是它的基本作用,其性能优劣将直接影响处理器的处理能力。随着处理器并行处理能力的加强,寄存器堆的端口越来越多,端口的增加不但增加了功耗,也加大了读写延时,限制了处理器时钟频率的提高,成为高性能微处理器的片上存储瓶颈。
高速和低功耗是多端口寄存器堆的设计目标,但是两者之间相互约束。在Motorola的M.CORE处理器中,寄存器堆的功耗占整个芯片的16%,在数据通路中的比例更是高达42%。有研究表明,寄存器堆的功耗达到整个处理器芯片功耗的25%。因此,高速低功耗的多端口寄存器堆的设计成为未来存储器设计中极具挑战性的工作。
1 寄存器堆的功耗组成
1.1 寄存器堆的总体结构
目前寄存器堆所采用的基本组成单元是6T SRAM。寄存器堆在电路结构上,可分为四个部分。第一是由存储单元构成的存储阵列;第二是由地址缓冲器、译码器、字线及其驱动器构成的地址路径;第三是由数据缓冲器、读写放大器、位线及其预充电路构成的数据路径;第四是读写控制逻辑。如图1所示。
1.2 多端口寄存器堆结构
多端口的存储单元一般每个端口都有自己的字线和位线,从而保证各个端口能够同时独立工作,以满足指令级并行的微处理器工作要求。但是这同时也导致了寄存器堆功耗的迅速提高。多端口读写位线一般有差分式和单端式两种,差分式读写以更高的数据准确性和读写速度应用于多数的多端口设计。其结构如图2所示。
1.3 多端口寄存器堆的功耗组成
1.3.1 基本单元SRAM
基本单元SRAM的功耗主要由三个部分组成。一是动态功耗,即电容充放电所消耗的功耗。二是短路功耗,即电源和地导通时所消耗的功耗。三是MOS管泄漏电流所引起的静态功耗。在三种功耗中动态功耗所占比重最大,而SRAM中位线连接许多存储体单元,其电容负载很大,位线充放电所引起的动态功耗就很大,占到总体动态功耗的80%,所以优化位线动态功耗对整个SRAM功耗降低影响很大。
1.3.2 电路组成部分
在多流水线结构的指令集并行微处理器中,一个时钟周期内可能对寄存器堆同时进行读写操作,假设每个操作的功耗是独立的,那么寄存器堆的总功耗即为每个操作所用功耗乘以单位时间内的操作次数。每个操作的功耗是电路各部分功耗的总和:译码逻辑功耗,存储阵列功耗,敏感放大器功耗,以及对敏感放大电路、预充电路和写驱动电路控制的驱动信号的功耗。因此,要降低寄存器堆的功耗,就应该同时从基本单元SRAM以及各个电路组成部分入手。
2 降低寄存器堆功耗的主要途径
2.1 降低电压摆幅
SRAM的动态功耗可由式(1)表示:
其中,α是活动因子,f是时钟频率,CL是负载电容,Vswing是信号摆幅,VDD是电源电压,位线动态功耗可以用式(2)表示:
f和Cbitload分别是位线的转换频率和电容负载,Vswing是位线电压摆幅,VDD是电源电压。由(2)式可以看出在转换频率和电源电压固定的条件下,可以通过减少位线电压摆幅来优化位线功耗,由于SRAM进行写操作时Vswing达到VDD,而读操作时Vswing很小,所以Vswing研究主要在写操作周期。
采用电荷分享方法的低位线摆幅(LVBS)低功耗SRAM结构设计可以降低位线电压幅值,如图3所示,当clk为0时,连接data_outO和data_outl的传输门关闭,无论data_in为何值,电荷分享驱动电路中两个MOS管中只有一个能被打开,所以输出data_out0和data_outl中只有一个输出为VDD,另一个输出则为GND。当clk为1时,两个MOS管同时关闭,异或非门输出为1,传输门打开。只要输出负载电容相等,根据电荷守恒定律,data_out0和data_out1的电压都变为VDD/2,即电压摆幅减少了50%,根据式(1)可知,位线动态功耗降低,从而达到降低寄存器堆功耗的目的。
2.2 减小负载电容
由式(2)可知,在转换频率和电源电压固定的条件下,位线功耗的优化的另一种方法是降低位线电容,通过对存储体阵列进行分割,减少位线上的存储单元数目,来实现负载电容的减小。而且对于大容量的寄存器堆,字线上连接的存储单元的数目也很大,它的功耗将随阵列列数的增加而成线性增加,而位线的延迟将随阵列行数的增加成平方关系增大。采用字线分割和位线分割技术可以将存储阵列进行分块来减小字线和位线上的负载电容及连线延迟。但是分的块数过多又会带来过多的辅助电路的开销,文献列出了各种阵列分割方法的功耗优化算法,通过综合由分块结构带来的功耗节约和功耗开销,最终确定寄存器堆的分块结构,才能达到减小功耗的目的。
2.3 采用门控时钟
由式(1)和式(2)可知,大部分的功耗都是由逻辑转换期间电路中电容的充放电引起的动态功耗,因此动态的关闭处于空闲状态逻辑的时钟,减少电路中冗余的状态翻转,降低开关的活动频率f,使更多的逻辑电路单元处于未激活的状态来降低功耗。采用门控时钟,通过在空闲状态隔离开时序元件和时钟网络来减少功耗,是一种降低动态功耗的有效技术。
门控时钟是通过一个控制信号来使能寄存器的时钟端,当使能信号有效时时钟翻转,否则时钟保持稳定,让部分电路处于空闲状态,达到节省功耗的目的。图4给出了门控时钟的示意图,图(a)是传统的寄存器设计,无论数据端输入数据更新与否,寄存器的时钟端始终处于翻转状态,如果寄存器需要保持原来的状态,还需要将寄存器的输出数据反馈回输入端与输入信号进行选操作,由控制逻辑产生的选择信号En决定寄存器输出数据。图(b)是采用门控时钟后的电路,En作为使能信号,只有当它有效时,寄存器实际的时钟输入端才会产生脉冲,将输入的数据更新到寄存器。门控时钟可以切断空闲时钟,减小时钟线的负载电容,降低动态功耗。同时在控制电路的设计中,可以采用门控时钟对分块的存储阵列进行控制。通过门控时钟控制信号使能,某一时刻仅有要使用的块被选中激活,其他块处于待命状态,这样就大大降低了整个寄存器堆的功耗了。
2.4 灵敏放大器
寄存器堆中的灵敏放大器是存储单元读操作中的关键部分,高速的灵敏放大电路可以降低位线上的电压摆幅,减小敏感放大器功耗,降低读操作的时间。
读操作位线功耗可由下式估算:
其中,Lcell是存储单元的电流,Tw1是字线上脉冲的宽度。
要降低读操作的功耗,由上式可知,只要降低Lcell和Tw1即可。而Icell必须要大于灵敏放大器工作的输入电流。因此,尽量采用低工作电流的灵敏放大器成为减小读操作位线功耗的重要途径。
通常的电压型灵敏运放为了避免电压的小幅摆动,往往采用层次结构,但这样带来的不利是延时和功耗的增加,电路变得复杂。电流型的灵敏运放电路能够快速检测到位线上电流的小幅摆动,而且可以降低读操作的功耗,成为高速SRAM设计的首选。当它工作时,位线电平几乎保持不变,因而基本上消除了位线电容充放电引起的功耗,但是代之以短路电流功耗,如果不对接地电流进行限制,就会大大抵消抑制位线电容充放电带来的功耗节省,甚至可能增加功耗。差分电流型的灵敏运放电路能提高寄存器堆的读取速度,并且有效地降低灵敏放大器功耗。因此,针对不同规模的寄存器堆,要选择合适类型的灵敏放大器,才能达到高速低功耗的要求。
3 总结
多端口寄存器堆的低功耗不能仅仅针对某个单元或某个部分进行,而应该结合它的基本组成单元和它的电路结构,分析其功耗组成,从中找到节约功耗的有效方法。本文总结了几种降低多端口寄存器堆功耗的方案,对各个组成电路结构,有针对性地进行功耗优化,包括降低字位线电压摆幅,减小负载电容,采用门控时钟,以及选用合适的灵敏放大器等方法,从而达到降低寄存器堆总功耗的目的。