3. CPUとTDP

まず何は無くともCPUですね。 スピード狂(失礼!)の皆さんにしてみれば「当然Pentium4の3GHzで決まりでしょ、Linuxでハイパースレッドも対応してるし」という人と「俺はAMD派だから Athlon XP 3200+ しかない」となるのでしょうね。 個人用のデスクトップパソコンであればこれで良いのでしょうが、SOHO向けサーバとしては限りなくNGです。 CPUのクロック周波数とTDPの比較

CPUはパソコンを構成する部品の中でも最も熱くなる部品です。 TDPという言葉をご存知ですか? Thermal Design Powerの略でCPUの発熱量を表す目安です。 右のグラフは代表的なCPUを選んでクロック周波数とTDP(最大値)との関係を比べたものです。 Athlon XPに関しては実クロック周波数ではなく、製品名に付けられたモデル ナンバーとの関係を示しています。

図で低い方のレベルである 60Wとはどの程度の発熱量かというと、電子工作をやったことがある人ならわかると思いますが、60Wの半田ごてを想像してみてください。ICの半田付けに使われるこては大体15W程ですからその4倍の容量です。実際60Wの半田ごてはちょっとした板金の接合に使われるほどのものなのです。増してやPentium4-3GHzのように80Wを超えるとなると、ちょっとした電熱器に匹敵します。

結論から言いますと、通常の空冷でCPUの周囲温度40℃程度の環境下で連続運転に耐えるレベルまで冷やせるのはせいぜいTDPで60Wまでです。またCPUの最大許容温度(最大ダイ温度)はインテル系で約70℃,AMD系だと約90℃です。

TDPと上昇温度の関係はCPUクーラーの冷却能力やケース内の空気速度などに依存します。この冷却能力を表す指数は「熱抵抗」と呼ばれ、℃/Wという単位で表します。これは電力消費1W当り何℃の温度上昇が起こるかを表すものであり、値が小さいほど冷却能力が高いといえます。例えば、0.5℃/Wの熱抵抗をもつCPUクーラーを装着したCPUが60Wの電力を消費しているとすると、 0.5[℃/W]×60['W']=30[℃] の温度上昇となり、周囲温度40℃とすればCPUの温度は何と70℃にもなります。これがTDP80WのCPUだと80℃に・・・ 危険ですね。周囲温度40℃はパソコンのケース内温度ですから決して高いものではありません。

さて、それではグラフでTDPが60W以下のCPUを見てみましょう。Pentium4かCeleronの2.4GHz以下を選択することになることがわかります。 では性能を考慮してPentium4で決まりでしょうか?
ここで疑問が沸きます。

  • 「性能」ってどのくらいあればいいの?
  • そもそも2.4GHz以下のCeleronとPentium4のTDPが同じって本当?

こんな疑問をもつのは私だけ? 疑問が沸いたら調べるのはエンジニアの基本。 とにかく調べてみましょう。


4. CPUの性能と発熱

とにかく実際にCPUの温度を測ってみます。 測定環境は当社LinuxサーバCシリーズと同じもので、概略は次の通りです。

項目 仕様
OS Redhat Linux 9
チップセット Intel 845G
メモリ PC2100 DDR 512MB
HDD 80GB×2 RAID1構成
グラフィックス NVIDIA GeForce3MX
ドライブ FDD×1, DVD−ROM×1
LAN 100Base-TX 1ポート

また測定条件は次の通りです。

  1. CPUはCeleron 2.2GHz, Celeron 2.4GHz, Pentium4 2.4GHzの3種類でいずれも1.525V品。
  2. CPUクーラはリテール版に付属するものは使わず、すべてのCPUで同一のものを用いる。用いたCPUクーラの諸元は次の通り。
     
    メーカ: SPEEZE
    型式: 9U236B1L3
    材質: アルミ
    ファン: サイズ7cm, 2500rpm固定スピード, 7枚羽
    熱抵抗値: 0.41℃/W
    エアフロー: 22.05CFM
    ノイズレベル: 25dB(A)
    メーカサイト: http://www.speeze.com/
    外観
    【参考】 リテール版CPUに付属する標準CPUクーラはCeleron,Pentium4共に温度感知による自動変速タイプ。またCeleron用は7枚羽であるのに対し、Pentium4用は11枚羽。 本実験では同一条件を期すため、敢えてリテール版付属品は使わない。

  3. CPUの温度計測はCPUチップ内のサーモセンサをモニタする。Linux用の温度計測ドライバ lm_sensors 組込みによる。 lm_sensorsの配布元は http://www2.lm-sensors.nu/~lm78/
  4. ケース外部と内部の温度も電子温度計で計測する。
  5. CPUに負荷をかけるため、カーネルのコンパイルを連続5回まわし続けた時の温度とCPUアイドル率(CPUの余裕度)をモニタする。

上記の条件で行った実験結果を、コンパイル開始後の経過時間と温度の関係として下のグラフに示します。

CPUの負荷による温度変化のグラフ
ケース外温度は23℃でコンスタント,内部温度はアイドル時27℃・ピーク時30℃
コンパイル中のCPUアイドル率は、ほぼ0%をキープ

結果を見てすぐにわかるのは、さすがにPentium4はCeleronより速いということですね。各CPU共、温度が下がり始めるところが5回のコンパイルを終了したところです。 メモリを512MB積んだマシンですから、一度読み込んだファイルはメインメモリを使ったバッファキャッシュに残るため、2回目のコンパイルではディスクからの読み込みはほとんど発生しません。このためディスクI/Oの待ちはほとんど無く、CPUの性能が大きく効いてきます。

CeleronとPentium4の大きな違いはL2キャッシュのサイズです。 Pentium4は512KBでCeleronは4分の1の128KBです。 CPUのキャッシュはチップ上で比較的大きな面積を占めるため、このサイズによって消費電力が変わるのは当然です。上のグラフでは、この違いがCeleron 2.4GとPentium4 2.4Gで約2〜4℃の温度差となって見えています。 ちなみにこれら2つのCPUのスペック上のTDP値はいずれも59.8Wで同一です。 またコンパイルのようなCPUをフルに使った繰り返し処理ではキャッシュの大きさがものを言います。 Pentium4が圧倒的に速いのはこのためです。

逆にキャッシュのサイズが同じCeleron2.2Gと2.4Gではほとんど同着といったところです。温度は予想に反して2.2Gの方が若干高めに出ていますが、これはチップの個体差と思われます。

なお、この実験ではCPUを限界まで回していないことをお断りしておきます。 コンパイルという処理はCPUの整数演算部だけで事足りるからです。例えばFPU(浮動小数点演算ユニット),MMX処理部(マルチメディア用拡張命令処理部),SSE2処理部(ストリーミングSIMD拡張命令2処理部)などかなりの部分は使われていません。

逆にCPUがほとんど使われていないアイドル状態では、いずれのCPUも驚くほどの低発熱であることがわかります。 ケース内温度27℃に対してCPUコア温度29℃ですから、その差僅か2℃です。これはアイドル状態が比較的長いサーバにとっては、熱対策のみならず、省エネの点でもありがたい特性です。
CPUの処理性能の飛躍的な向上の裏で、このような高度な省エネ技術が着実に開発されて、実装されているのですね。この部分の設計チームに敬意を表します。

さて、改めてこの実験でわかったことをまとめてみます。

  1. 同一周波数のCeleronとPentium4では、TDPの仕様が同じだとしても実際の発熱量はCeleronの方が低い。
  2. 同一周波数のCeleronとPnetium4でカーネルのコンパイル時間を比較するとPentium4の方が圧倒的に短い。
  3. 同じCeleron同士では、10%程度の周波数の違いは性能や発熱量に表れない。
  4. CPUのアイドル状態の温度上昇は2℃程度である。

今回はここまでです。 これまでの結果から、少し発熱量が多いもののPentium4の2.4GHzがSOHO向けサーバ用CPUとして有力候補ですね。 でもコンパイルの早さが重要なのでしょうか?
次回はWebアクセス処理能力を比較しながら、CPUの選定について解説していきます。 ご期待ください。

(石)