パワーゲートで電源をオフにする

ダイナミック電力の削減のところで、使用していない論理ブロックへのクロックの供給を止めるクロックゲートという手法を説明したが、それと同様に、使用していない論理ブロックへの電源の供給を止めるパワーゲートという手法がある。電源を止めてしまえば、当然、リーク電流も無くなり電力消費を抑えられる。

電源をオフにするには、例えば電源端子と論理ブロックの電源の間にPMOSトランジスタを入れ、論理ブロックを動作させる場合には、そのPMOSトランジスタをオンにして電源を供給し、その論理ブロックを使用しない場合にはPMOSトランジスタをオフにして電源端子と論理ブロックの電源を切れば良い。しかし、論理ブロックの大きさと必要な電流にもよるが、必要な電流を流したときのPMOSトランジスタでの電圧降下を10mV程度かそれ以下にするためには、相当大きなPMOSトランジスタが必要になる。

2010年のISSCCでAMDはLlanoプロセサコアを発表した。このLlanoコアの電源スイッチは図1.42に示すように、 NMOSトランジスタを使いグランド側を切る設計となっている。そしてこのスイッチトランジスタであるがトランジスタの合計のチャネル幅Wは1.38mという巨大なトランジスタ(実際は小さなトランジスタを多数並列に接続)が使われている。

図1.42 ISSCC 2010で発表されたAMD Llanoコアの電源スイッチ

また、電源スイッチトランジスタのリーク電流が大きいとリーク電流削減の役には立たないので、オフリーク電流が小さいことに加えて、接合リークも少ないことが要求される。Intelがどちらか言えばOn抵抗の大きいPMOSを電源スイッチに使っているのは、 PMOSトランジスタの方が接合リークは小さいからであると思われるが、AMDはSOIプロセスなのでNMOSでも接合リークが少ないことから、PMOSよりもオン電流が大きくOn抵抗が低いNMOSを電源スイッチに使ったと考えられる。

このような電源スイッチを入れることで電源を切る仕組みができるのであるが、いつ、電源を切断したり、投入したりするのかという問題がある。クロックゲートの場合は僅かな遅延時間でクロックのオン/オフを制御できるが、巨大なトランジスタを使う電源のスイッチはマイクロ秒のオーダの時間が掛かる。また、電源を切ると論理ブロックの中に含まれるFFやSRAMに記憶されていた情報が無くなってしまう。このため、電源を再投入すると、初期化状態から処理を再開するということになってしまう。

さらに、電源を切ると、LlanoのようにVss側を切ると、コア内の全部の信号線の電位は徐々にVdd方向に上がっていく。このため、元々、0Vであった信号線をVddまで充電するための電流が流れて、電源を切るために電力を必要する。そして、この電荷は電源を再投入した時に放電されて熱となる。ということで、頻繁にオン、オフを行うとそのための電力消費が大きくなってしまい、省電力にはならない。

一般にハードウェアでは、ミリ秒かそれ以上の長い期間、その論理ブロックが使われないかどうかということは分からないので、ハードウェアが提供する機能は電源スイッチまでで、それをオン/オフする指令は全体を管理するOSから出されるという制御方法が一般的である。このようなパワーゲートはサーバ用プロセサでも有効性が高いが、大部分の時間は使っていない論理ブロックが殆どという携帯デバイスでは特に有効である。