これまでの高速化の軌跡を、Core i7 870 と Atom D330 とでまとめてみました。
項目 | i7 860 (fps) | D330 (fps) | 概要 |
---|---|---|---|
オリジナル | 15 | 2.3 | 単一スレッド処理 |
並列化 | 62 | 7.1 | 複数スレッド処理 |
並列化 (2) | 70 | 7.6 | 複数スレッド処理 + ループ展開 |
並列化 (3) | 81 | 8.5 | 複数スレッド処理 + ループ展開 + ブレンド処理最適化 (C++) |
並列化 + SIMD | 125 | 14.1 | 複数スレッド処理 + ループ展開 + ブレンド処理最適化 (SSE2) |
並列化 + SIMD (2) | 166 | 19.2 | 複数スレッド処理 + ループ展開 + ブレンド処理最適化 + 読み込み処理最適化 (SSE2) |
D330 は論理コアの数が 4 なのですが、物理コアは 2 コア (SMT 有) です。上記『オリジナル』と『並列化』の比が 3 倍以上となっていることから、SMT の効果が 1.5 倍分は効いていることになります。SMT おそるべし。Atom はインオーダー実行なので、よほど Atom に特化して最適化されたコードでないと、単一スレッド処理では実行ユニットがひまひまなのかも。アウトオブオーダーの代わりに SMT 用意したのだとすれば、それはちょっと正解かも、と思えるくらいの速度比です。
さらに D330 は SSE2 を使ったときの速度向上っぷりが半端でないです。上記『並列化 (3)』と『並列化 + SIMD (2)』の速度比が 2.25 倍となっており、SSE2 さいこーって状態です。(それでも、i7 870 の『オリジナル』をやっと超える程度の速度なんですけれど…)
Atom はなかなか面白いプロセッサだと思ってます。踏ん張れば、Core i7 の 1 コア分くらいの働きをするプロセッサということです。