CMOS回路の動的消費電力の式 P = αCV²f で、αが表すものとして正しいものはどれか。
- Aトランジスタの数
- B1クロックあたりに信号が切り替わる割合(活動率)
- Cチップの温度
活動率、切り替わる容量の合計、電源電圧、クロック周波数、リーク電流を入れると、CMOS回路の動的消費電力と静的消費電力を計算します。電圧と周波数を同じ割合で下げるDVFSを使ったとき、全体の電力がどこまで減るかも比べられます。
動的消費電力は P = αCV²f で、αは1クロックあたりに出力が0から1へ切り替わる確率としています(αを切り替わり全体の割合とする教科書では ½αCV²f と書きます)。静的電力は Ileak × V で見積もり、DVFSの計算ではリーク電流そのものは電圧によらず一定とし、×V の分だけ下がるとしています。短絡電流による電力は含めていません。
ほかの入力は今の値のまま、選んだ入力だけを今の値の1/4〜4倍の範囲で変えたときの結果です。赤い点が今の値です。
CMOS回路では、ゲートの出力が0から1に変わるたびに、負荷の容量Cが電源から CV² のエネルギーを受け取ります。その半分は充電の途中にpMOSで熱になり、容量にたまった残りの半分は、次に1から0に変わるときにnMOSで熱になります。1クロックあたりに0→1の切り替えが起こる確率を活動率αとすると、動的消費電力は P = αCV²f です。既定値の α = 0.1、C = 1 nF、V = 1.0 V、f = 2 GHz では、0.1 × 10⁻⁹ × 1² × 2 × 10⁹ = 0.2 W となります。
トランジスタがオフでも、しきい値以下で流れるサブスレッショルド電流、薄いゲート絶縁膜を通るトンネル電流、接合のリーク電流などが流れ続けます。これによる電力が静的消費電力で、ここでは Ileak × V で見積もります。既定値では 100 mA × 1.0 V = 0.1 W で、合計0.3 Wのうち33.3%を占めます。サブスレッショルド電流は、しきい値電圧を下げると指数関数的に増え、温度が上がっても大きく増えます。微細化に合わせてしきい値電圧を下げてきた結果、静的電力は全体の中で無視できない割合を占めるようになりました。
電源電圧を下げると回路の遅延が大きくなるため、周波数を下げれば、そのぶん電圧も下げられます。電圧と周波数をともにs倍にすると、動的電力は V²f に比例するので s³ 倍になります。既定値で80%にすると、動的電力は 0.8³ = 0.512倍の約0.102 W、静的電力は0.08 Wとなり、合計は0.1824 W(元の60.8%)です。ただし、同じ計算を終える時間は 1/s 倍に延びるので、1回の計算に使う動的なエネルギーは s² 倍の減少にとどまります。静的電力の割合が大きいと、ゆっくり動くぶんリークで失うエネルギーが増える点にも注意が必要です。
式の各項は、それぞれ省電力の手段に対応します。αは使っていない回路のクロックを止めるクロックゲーティングで下げ、Cは配線を短くしたり小さなトランジスタを使ったりして減らします。Vは2乗で効くため効果が最も大きく、負荷に応じて電圧と周波数を変えるDVFSが広く使われています。静的電力には、使わないブロックの電源を切るパワーゲーティングや、速さが必要ない経路にしきい値電圧の高いトランジスタを使う方法が効きます。リークを抑えるためにしきい値電圧を下げられなくなったことが、電源電圧の低下が止まった大きな理由です。
正解:B. 0.1 W
P = αCV²fに値を入れると、0.1×1×10⁻⁹ F×(1 V)²×1×10⁹ Hz=0.1 Wです。容量の単位のナノ(10⁻⁹)と周波数のギガ(10⁹)が打ち消し合うので、計算は簡単になります。実際のチップでは、切り替わる容量は回路の規模に比例して大きくなり、全体の動的消費電力は数十〜数百Wに達することもあります。
正解:A. 電力は8分の1、エネルギーは4分の1になる
電力はV²fに比例するので、Vとfがともに半分なら(1/2)²×1/2=1/8になります。計算にかかる時間は2倍になるので、エネルギーは1/8×2=1/4です。1回の切り替えのエネルギーがCV²に比例するので、エネルギーは電圧の2乗で決まると考えても同じ結果になります。実際には電圧を下げられる範囲に限りがあり、静的な電力もあるので、ここまで理想的には減りません。
動的電力は電圧の2乗に比例するので、周波数が同じなら 0.9² = 0.81倍、つまり約19%減ります。周波数も同じ割合で下げれば 0.9³ ≈ 0.73倍となり、約27%減ります。
どちらも正しく、αの定義が違います。αを1クロックあたりに0→1の切り替えが起こる確率とすると αCV²f、0→1と1→0の両方を数えた切り替えの割合とすると、1回の切り替えあたり ½CV² なので ½αCV²f になります。問題を解くときは、αがどちらの意味かを確かめてください。
使わないブロックの電源を切るパワーゲーティング、しきい値電圧の高いトランジスタの利用、電源電圧を下げること、チップの温度を下げることが効きます。クロックゲーティングは動的電力を減らす方法で、リーク電流は減らせません。