七つの威力
Atom CPU の話。
私の LOOX U/C30 は Atom の中でも Z520 1.33GHz と言う CPU を使っている。
調べてみると、Atom は次のようなバリエーションがある。
・A330/230
デスクトップ用
1.60GHz Hyper-Threadingと64bitに対応
330はデュアルコア
・N270(1.60GHz)
NetBook に多く使われている
1.60GHz Hyper-Threadingに対応
・Z540(1.86GHz)/ Z530(1.60GHz) /Z520(1.33GHz)
より小型の NetBook などに使われている
仮想化技術とHyper-Threadingに対応
ええ? 仮想化技術とHyper-Threadingに対応??
じゃあ、早速、試してみよう。
仮想化技術
Ubuntu 8.04 上に、KVMを使って、Debian etch をインストしてみた。ちゃんと動く。試して無いけど、Windows Xp だって動くだろう。
LOOX U の小さな画面に複数の OS を出しても実用的じゃ無いけど、とにかく動く。
こんな機能があるとは、驚いた。
Hyper-Threading
Hyper-Threadingに対応しているので、Ubuntu 8.04 からでも、Windows Xp からでも CPU は二つに見える。
調べてみると、Atom は、従来の Out-of order 型ではなく、in-order 型パイプラインを持っているらしい。従来の Out-of order 型パイプラインでは、先読みするので、プログラム中の命令の前後関係に依存性があっても大丈夫で、普通のプログラミングでも高速化の対象となる。しかし、この先読みするための回路が大きくなり、消費電力が増える。
Atom は、低消費電力化のために、先読みするための回路を省略して 2 Way の in-order 型パイプラインとした。in-order 型の場合、依存性のある命令の同時実行はできない。このため、ハイパースレッド方式として、依存性のない命令をそれぞれのスレッド毎にやらせてる必要がある。つまり、マルチスレッドやマルチコアに対応したプログラムでなければ、パイプラインを有効利用して、パフォーマンスを上げることはできない。
本当にそうか、試してみた。
以前、デュアルコア対応プログラミングとデュアルコアで小惑星探査軌道計算で試験したプログラムを、そのまま使った。
まずは、ruby で作った円周率を求めるプログラムだが、
・Atom Z520 Ubuntu 8.04
・シングルコア用プログラム 159秒 デュアルコア用プログラム 124秒
・Athlon64 X2 4200+ (2.2GHz) Linux etch
・シングルコア用プログラム 58秒 デュアルコア用プログラム 29秒
と言う結果になった。CPUコアが2つあるAthlon64 X2 では、プログラムによって2倍のパフォーマンスが出るが、Atom の場合、本当にCPUコアが2つあるわけではないので、パフォーマンスは3割アップに留まっている。
次に小惑星探査軌道計算だ。小惑星30個の計算の場合、
・Atom Z520 48分16秒=2896秒 (シングルコア用プログラム)
・Atom Z520 36分54秒=2214秒 (デュアルコア用プログラム)
・Athlon64 X2 4200+ 12分46秒=766秒 (デュアルコア用プログラム)
と言う結果になった。Atom同士では、プログラムの違いによって、パフォーマンスは3割アップになったのは、円周率計算と同じだ。
Athlon64 X2に比べると、周波数とコア数の違いが、そのまま出ているような結果になっている。
思ったより、性能が良いなあ。
消費電力優先設計だから、もっと性能が悪いかと思っていた。
予想外の結果と言えるのが、円周率計算よりも小惑星計算の方が善戦したことだ。円周率計算は Ruby スクリプトなので整数演算主体。それに対して、小惑星計算はコンパイルした浮動小数点演算の塊。整数演算向きと言われる Atom なら、円周率計算の方が良くなると思ったのだが、逆だった。
64bit
対応していないと聞いても、念のため 64bit 版の Ubuntu を USBメモリから起動しようとしたが、対応していないとエラーメッセージが出てブートが止まった。
まあ、64bitに対応していないのだから、当たり前だが。
« デジカメを買った | Main | 紅玉 »
The comments to this entry are closed.
Comments