Bitcoin x86 for Windows

4 件のメッセージ Olipro, サトシ・ナカモト 2010年7月25日 — 2010年7月27日
Olipro 2010年7月25日 原文 · 個別ページ

x86 Windowsユーザーはおそらくx64スレッドを読もうともしないだろうと思い、新しいトピックを作成しました。ただし、ここに来たからには、この投稿を読んだ後にあのスレッドの5ページ目も読むことをお勧めします。

さて、基本的に新しいSHAキャッシュ最適化を施したビットコインのビルドを2種類コンパイルしました。1つはSSE命令セットに対して完全に最適化されたビルドで、最新のCPUが必要です。もう1つはSSE最適化なしでコンパイルされており、XP以降を動作可能なほぼすべてのCPUで動作するはずです。SSE版は非SSE版より若干高速で、どちらもx64ビルドには劣ります。64ビットOSをお使いの方は、これらを使う必要はありません。

ただし、同梱のlibeay32.dllにはSSEが含まれている可能性があるため、どちらも動作しない場合は、そのDLLを標準のビットコインに同梱されているものに置き換えてください

ビルドはこちらからダウンロードできます

Quote from: Olipro on July 26, 2010, 01:04:41 PMCrypto++ 5.6.0: http://www.cryptopp.com/ Cached SHA256: http://pastebin.com/rJAYZJ32(これは他の場所でも公開されていると思いますが、IRCでリンクを教えてもらいました) キャッシュされたSHA256の状態のアイデアをSVNのrev 113に追加した。高速化は約70%だ。x64スレッドでのあなたの投稿に基づいて、tcatmの功績とした。

Crypto++ 5.6.0のASM SHAコードをMinGWでコンパイルできるが、実行するとすぐにクラッシュする。MASM(Microsoftのアセンブラ)用と書かれており、サンプルのコマンドラインはVisual C++のもののようだ。MSVCとIntelコンパイラでしか動作しないのだろうか?

Quote from: BlackEye on July 25, 2010, 10:12:23 PMCrypto++ 5.6.0のSHA256機能をBitcoinに統合することができました。これはSSE2アセンブリコードを使用した最速のSHA256です。Bitcoinがブロックハッシュ関数にアラインされていないデータを送っていたため、MOVDQA命令をMOVDQUに変更する必要がありました。

Crypto++ 5.6.0のSHA256機能を使うのが今のところ最善の方向だと思う。 Crypto++ 5.6.0ライブラリのサブセットをSVNに追加した。SHAと11個の汎用依存ファイルだけに絞り込んだ。SHA以外の暗号は含まれていないはずだ。

データフィールドをアラインしたところ、動作した。ASM SHA-256は約48%高速だ。合計の高速化はバージョン0.3.3と比べて約2.5倍だ。

SSE2を使用しているようだ。コンパイル時にコンパイラ環境に基づいてビルド設定を自動的に決定する。

実行時にSSE2の検出も行っているようだが、利用できない場合に実際にフォールバックするかどうかは判断しにくい。リリースビルドにはSSE2を入れたいと思う。SSE2は最初のPentium 4から存在している。Pentium 3以前のものでは遅すぎて、生成しようとしても電気代の無駄になるだろう。

これはSVN rev 114だ。

了解だ、ありがとう。生成(Generate)をオンにしなければ正常に動作するかどうかも知りたい。SSE2命令を実際に実行しない限り、ロードはできるはずだと思う。少なくともPentium 3でも生成なしで実行できるだろう。