本連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。
マイクロプロセサの消費電力が増加し、最上位のPentium 4プロセサでは100Wを超える電力になっているのはご存知の通りである。図1は2001年のISSCCでのIntel社のGelsinger副社長の基調講演で示されたものであり、2005年には数KWになると予想している。また、図2はCPUチップの平方cmあたりの消費電力密度の推移を示した図で、既にホットプレートを超え、原子炉に近づいており、このまま延長すると2010年には太陽表面と同程度となるというショッキングな図である。このように、Intelも消費電力の増加の問題を十分承知していた筈であるが、電気を喰うNetburstアーキテクチャのPentium 4のクロック周波数を上げ続ける路線を継続した。しかし、2004年になってようやく、これではどうにもならないと省電力に舵を切りなおした訳である。
その省電力の切り札がマルチコアである。しかし、1個のプロセサコアでも電気を喰いすぎて困っている時に、それを2個使うと合計の電力が減るというのは常識では理解し難い。ということで、何故、マルチコアで消費電力が減るかということについて述べる。
CMOS回路の消費電力
それには、何故、プロセサが電力を喰うのか? ということから考える必要がある。現在の殆どのCPUチップにはCMOSという半導体技術が用いられている。CMOSは相補型(Complementary)の電界効果型トランジスタ(MOSトランジスタ)を用いる回路形式で、一番簡単な論理回路であるインバータ(否定回路)は図3のような構成になっている。
ここで上側のP型MOSトランジスタは入力が接続されたゲート電極が0Vになると導通(ON)し、ゲート電極がVdd(電源電圧)になると非導通(OFF)になる。下側のN型MOSトランジスタはその逆で、ゲート電極がVddになると導通し、0Vになると非導通になる。つまり、入力が0V(Low)であってもVdd(High)であっても片方がONし、他方がOFFになるので、電源からグランドには電流が流れず、微小な漏れ電流を別とすれば電力を消費しないという優れものである。
では何故、CMOS回路が電力を消費するかというと、図3にCLと書いた負荷容量が付くと、出力をHigh(Vdd)にするためにはP型MOSトランジスタを通して電源から電流を供給してCLを充電してやる必要がある。そしてCLに充電された電荷はN型MOSトランジスタが導通するとグランドに捨てられてしまい、次に出力をHighにするには充電が必要になり、ここで電力を消費するのである。図3に書いたように、CLは実際には配線容量や次段の論理回路の入力容量などからなっている。
負荷容量CLを0VからVddまで1回充放電するには、 CL*Vdd^2のエネルギーが必要である。これを毎クロックサイクル行うとクロック周波数倍のエネルギーとなるが、一般には毎サイクル充放電を行う訳ではないので、これに動作率αというファクターを掛けて、消費電力Pは、
P=αCLVdd^2*fと表わされる。つまり、消費電力は充放電が行われる比率と負荷容量とクロック周波数に比例し、電源電圧の二乗に比例する。但し、ここでは漏れ電流による消費電力は除いて考えている。
プロセサの省電力を考える時には、このα、CL、Vdd、fのいずれか、あるいは複数の要素を減らせば良い訳である。そして、これらの中で一番効くのは二乗に比例する電源電圧Vddである。これがノートPC用の低電力プロセサとして電源電圧を下げたLV(Low Voltage)やULV(Ultra Low Voltage)というタイプが作られる理由である。そして、メカニズムは後に述べるが、電源電圧を下げると動作周波数も低くせざるを得ないので、fが小さくなることにより更に消費電力は下がることになる。
しかし、クロック周波数を下げると、一定の仕事をするのに必要な時間が延びるので、バッテリライフの観点から見た電力(WHr)はクロック周波数には依存せず、電源電圧の2乗だけに比例する。
補足であるが、図3においてより大きな電流を流すことが出来るトランジスタを使うと消費電力が増えると誤解している人があるが、電力の式にはトランジスタが流せる電流に依存する項は無く、トランジスタの強弱はCLを充放電する速度には効くが、第一義的には電力には影響しない。但し、速度を速くするために、大きな電流を流すことの出来る大きなトランジスタを使うと、入力容量が大きくなり、結果として消費電力の増加に繋がる。