Google の中の人いわく「低電力もいいけれど,シングル・スレッド性能が大事」

IEEE MICRO から面白そうな記事のメモ.

"Challenges and Opportunities for Extremely Energy-Efficient Processors,"
Trevor Mudge and Urs Hölzle, IEEE MICRO, Vol. 30, Issue 4, pp. 20-24, Jul.-Aug. 2010

電源電圧を閾値電圧付近まで下げた,超低電力というか超高効率プロセッサのアーキテクチャや使い方の注意点について,ミシガン大学Google の中の人が語る.

Trevor Mudge@ミシガン大学いわく,

  • 消費電力は 1/10 になるが,性能も 1/10 になる&信頼性が下がるという欠点がある.
  • 従って,シングルスレッド性能は期待できない.性能はコア数で稼ぐ.web サーバ系に向く.
  • キャッシュはコアほど電圧を (性能も) 下げられない.複数のコアが L1 キャッシュを共有するとよい.キャッシュ・コヒーレンシのためのトラフィックも減る.
  • "Boosting." 同一スループットでも,低電力が重要なときは例えば 250MHz 4 並列,レイテンシが重要なときは 1GHz シングルにする (Fig. 1).
  • DRAM を積層して低電力インターフェース (I/F) でつなぐと,メモリ I/F の電力が W 単位から mW 単位になる.システム全体の電力の 40% がメモリなので効果的.

Google の中の人いわく,シングル・スレッド性能を軽視してはいけない.

  • シングルスレッド性能がそれなりにあるものを "brawny (たくましい) core," 低いものを "wimpy (ひ弱な) core" と呼ぶことにする
  • スレッド数が増えすぎると,シリアライズや同期のコストが増え,削減が困難になる
  • ソフトウェア開発コストが無視されがち.サーバへのひとつの要求はシングル・スレッドで書きたい.これを,コアの性能が低すぎて分割しなくてはいけなくなると大変.
  • コア数が増えすぎると,インフラ系のオーバーヘッドが無視できない.brawny コアに集約して,例えばメモリ上のデータを共有したほうがよいことがある
  • brawny core を分割して使う方が,wimpy core をまとめる努力より簡単
  • 超並列アルゴリズムはえてして非効率.狭い範囲の情報だけで判断せねばならないから

こんな記事を思い出した.
ARMプロセッサ搭載サーバーが、英ARM社のウェブ・サイトで稼働中