本64bitカウンターは、ベンチマークプログラムなのですが、
作ろうとしたほんとうのきっかけは、「はたして、64bitとはどれ
ぐらいの数なのだろうか?」という疑問でした。
| 32bitは2の32剰 = | 4,294,967,296 |
| 64bitは2の64剰 = | 18,446,744,073,709,551,615 |
単純に言ってしまえば、それだけのことですが、実はとてつもない大きな数だったの です。PCで数えさせてみれば、どうだろうか、最初は待ってられるレベルかなと思って いました。ちなみに32bit(10進数で約43億弱)は最近のPCで数えさせるとほんの数秒です。 しかし、この数秒がとんでもないことに...
PCの64bit化に移行しようとしている昨今、その大きさを体感してみたいという方も いらっしゃるかと思います。あらためてとてつもない数であることを体感するでしょう。 また、コンピューターの歴史上、現在の素子を使うならばアドレッシングに関して64bitが最終局面ではないか と予感させられてしまうところがあります。(注:演算ユニットに関しては、32bit時代から既に128bit化されている)
以前、RC5-64クラッキングで
盛り上がった時期がありました。結局は同じ性格を持っているかもしれません。参加された方なら
手分けすればと思いつくかもしれませんが、カウントアップでそれは反則でしょう。
このプログラムはベンチマークプログラムですのでマシンごとに比較してみるのも面白いと思います。
せっかくの64bitなので、32bitモジュールだけでなく、64bitネ
イティブモジュールもx64/IA64版双方共に同梱し、可能な限り
カウントアップのパフォーマンスが上がるようにしています。
<★重要★マルチCPU、デュアルコアCPU、HT対応CPUを使われる方へ>
参考までに他の大きな数との比較
<★CPU発熱用に貢献>
<プログラムが書ける方へ>
このプログラムが十分なパフォーマンスを出し尽くしているか否かは自信がありません。
特にカウントアップ部をマルチスレッド化しても、逆効果だったところが、なんとも残念です。
コードを変更すればうまく行くのか?それとも理論的に無理なのか?結論も出ていません。
Ver1.0からソースコードを同梱(srcフォルダ下に)していますので、改変していただける方が居ま
したら、ぜひトライして見て
ください。また可能でしたら公開していただければ幸いです。その場合、当方のバージョンは
WEBから削除いたしますので、ご一報下さい。もし公開がご面倒な場合は、ご連絡いただければ
代行いたします。コーディングの経過はsrc\README.TXTに書いておきましたので必ずご参照下
さい。
本プログラムは、ひとつのメモリ/変数(64bit整数)のカウントアップと比較処理
の連続になっています。CPUの消費率の高い処理の反面、単調な処理の羅列が競合を生むのか、
マルチスレッド化(処理の並列化)を行っても、HT対応CPUやマルチCPU、デュアルコアCPU上において
逆に遅くなってしまうという結果が出ています。ソース(C言語)を色々と変えてみて
チャレンジしたのですがとりあえず断念です。ですから本プログラムでは、これらのCPUを使用しても
CPU消費率は論理CPUの数分だけ比率が下がってしまい効果は現れないはずです。
リベンジというわけではありませんが、残念に感じる方は、ぜひこれらの
環境で「64bitカウンター」を2つ以上同時実行して、シングルコアCPUと比較して
見て下さい。こちらの方は大変興味深い分析が出来るはずです。→ 参考:64bit.jpサイトでの結果
比較項目 通称 単位 10進数での表記
32bit 4GB(ギガバイト) バイト 4,294,967,296
DNAの塩基の数 約60億個 個 6,000,000,000
宇宙の星雲の数 約3000億個 個 300,000,000,000
人間の細胞の数 約100兆 個 100,000,000,000,000
日本の借金 約800兆円 円 800,000,000,000,000
地球(太陽系)の寿命 あと50億年 秒 157,784,630,400,000,000
64bit 16EB(エクサバイト) バイト 18,446,744,073,709,551,615
寒い地方では、よくノートPCなどを暖房器具替わりにするらしいのですが、CPUの発熱用には
この「64bitカウンター」が最も適しているらしいです。最近のCPUやOSは大変よく出来ていて、使って
いない状態では発熱してくれません。進歩の賜物なのでしょうけど、ありがた迷惑
な人もいらっしゃるようですね。稼動中にDISKはほぼ使いませんので一番効率よく温まるらしいです。
なんだか予期せぬ使い方で感謝されたことがあります。まあ役立つんだったらいいかぁ。
本ソフトはx64版も同梱していますので「x64ソフトコンテスト」に
「4次元ウィンドウ x64 Edition」の応募のついでに応募していたのですが、
なんと意外にもこの「64bitカウンター」で日本AMD賞を
いただきました。CPUメーカーの観点として、32bitコードより64bitネイティブコードの方が高速であることのわかりやすい
例であることを評価してくれたようです。確かにこれ以上わかりやすい例はないかもしれませんねぇ。
少し技術的なことで、あとで判ってきたことですが、64bitモジュール(x64版)が倍速化するのは、SSEやSSE2インス
トラクションのデフォルト利用だけでなく、変数のアライメント(並び順)にも大きく影響し、ソースコードにて
変数定義の順番を少し変更するだけで極端に高速になったりするようです。この64bitカウンターの
ソースコード(同梱)は一番わかりやすい例になるはずです。64bitの世界ではコンパイラの最適化が発揮できる
ようなコーディングを心がける必要がありそうです。
[HOME]