Bitcoin x86 for Windows

3 件のメッセージ サトシ・ナカモト 2010年7月27日 — 2010年7月27日

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でも生成なしで実行できるだろう。