ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

Athlon64

友達と話してて気づいた。
そういえば Athlon64 はメモリコントローラが CPU 内蔵だった。


展開のコードをメインで使ってるマシン ( PentiumM 1.4GHz ) と
エンコード等の実験用マシン ( Athlon64 3200+ ) で走らせてみると
実クロックで 1.4GHz : 2.0GHz の差しかないのに、処理時間に4倍以上の差がある。
( 1400 : 3200 よりも差が大きい )


…というのも、今まで使ってきた(展示とか実験とか)展開コードは
試しに書いたフレームワークの枠内でずーっと書いてきてるから
実際のメモリに対してはほとんど相関のないランダムアクセスがかかってる。


そういう仮定の元、展開のコードだけをばっさり書き直してみると
1割ほど処理速度が上がった。実時間にして 3ms 程度。


メモリには 32Bytes 単位でアクセスしてキャッシュに入れられるから、
アラインメントをあわせれば以後 32Bytes はほぼノンペナルティでアクセスできることになる。
キャッシュに入ればランダムアクセスとか関係ないわけで、そういうアプローチで最適化。