違います。スラッシュドット記事からもリンクされている hwbot.org フォーラムへの投稿 [hwbot.org]中で引用されている、パッチ(?)作者の The Stilt さんのコメントには次のように書かれています。
So, why are all of the 15h (Bulldozer) based CPU/APU/NPUs performing so bad in SuperPI? Some people say it is because 15h family has 50% less FPs per core than the preceeding 10h family.
In 15h family a compute unit (two cores) share a FP when the 10/12h family had a dedicated FP for each of the cores. If this would be the only reason, the issue would be solved when the "slave" core of the CU is disabled, leaving a "private" FP for the "master" (BSC) core. However this is not the case and it even shouldn't be as SuperPI is single threaded, remember?
訳ではないけれど僕の理解できる範囲でまとめると:
Bulldozer マイクロアーキテクチャーを使う CPU でスーパーπが遅くなる原因について、 Bulldozer では 2 個のコアで FPU を共有しているせいだと言う人もいる。それならコアの一つを停止すれば速度低下が起きなくなるはずだが、実際にはそんなことはない。また、もともとスーパーπはシングルスレッドプログラムなので、これが速度低下の原因になるとは理屈の上でも考えられない。
AMD documents: #47414 (Software Optimization Guide for AMD Family 15h Processors) [amd.com] & #26569 (AMD64 Architecture Programmer?s Manual Volume 5: 64-Bit Media and x87 Floating-Point Instructions) should explain how the x87 instructions are executed on 15h family. The latter one I cannot provide as it is confidential (?).
と、「confidential (?)」だから提供できないと書かれているドキュメント、検索したら support.amd.com に普通に PDF ファイルが置いてあるようなのですが…。
ベンチの為のパッチって意味があるのかな (スコア:1)
べっちマークの為のパッチはあまり意味が無いような気がします。それどころか利用者をだましているような気すらします。
どうなんでしょう?
Re:ベンチの為のパッチって意味があるのかな (スコア:1)
BIOSの一部を書き換えちゃうのか、BIOSの何かのスイッチ(起動時のBIOSセットアップ画面からいじれないなにか?)をON/OFFしてるだけなのか、OSに対するパッチとかなのか。
効果としてはx87命令を多用する任意のソフトウェアが高速化されそうに見える一方で、意味がないというツッコミも入ってるし。 今現在x87命令を多用するようなソフトはもうないから、実用上ほぼ無意味、ぐらいの事なのかな?
Re: (スコア:0)
>今現在x87命令を多用するようなソフトはもうないから、実用上ほぼ無意味、
FFTの素朴な実装とか、多用しそうな気がするのですが。
あとはExcelとかで計算速くなったりしないのかな?
Re:ベンチの為のパッチって意味があるのかな (スコア:2)
コンパイラもそういう最適化はするでしょうから、昔にコンパイルされたツールか、わざわざアセンブラで書かれたものか以外ではそもそもx87系の命令は出てこないというのも、あり得るのかな、と。
# SSEの更に次の次ぐらいまで出ていたんですね、当たり前の技術になってしまってて話題にならないので名前も知りませんでした・・・。
Re:ベンチの為のパッチって意味があるのかな (スコア:3, 参考になる)
ええ、実際そういう流れになっています。
特に、64ビット(x86-64)だとSSE2(単精度・倍精度のスカラ演算ができる)が標準装備なので、どこのコンパイラもx87ではなくSSE2を使ったコードを出力します。
32ビットでも、たとえばVisual C++ 2012はx87ではなくSSE2を使うオプションがデフォルトになっています。
/arch (x86) [microsoft.com]
Re: (スコア:0)
MinGWはmathライブラリはFPUを使うコードになってるみたいです。
Re: (スコア:0)
コンパイル時のオプションで,
コンパイラが直接SSEを出力するか
FPUを使うライブラリをリンクするかが
切り替わるようになっていませんか?
Re: (スコア:0)
Bulldozerアーキテクチャの特徴 [ascii.jp]として、2つのCPUコアでFPUを共有する構成になっているそうです。
SuperPIはシングルスレッドでFPUをぶん回すアプリなので、このFPUを共有する仕組みがオーバーヘッドになって性能が低下する、という理屈のようです。
件のパッチは、FPUを共有する片方のコアを停止させて、共有のオーバーヘッドをなくすという仕組みなのかな? だとすると、シングルスレッドで高FPU負荷なアプリであれば同様に性能が上がる一方で、マルチスレッドアプリでは逆に性能が低下するという結果になるんじゃないでしょうか。
Re:ベンチの為のパッチって意味があるのかな (スコア:2)
違います。スラッシュドット記事からもリンクされている hwbot.org フォーラムへの投稿 [hwbot.org]中で引用されている、パッチ(?)作者の The Stilt さんのコメントには次のように書かれています。
訳ではないけれど僕の理解できる範囲でまとめると:
でも速度低下の原因が何だと書いているのかは、僕の背景知識が足りなくて読み取れませんでした。
Re: (スコア:0)
「原因がなんだ」というのは書いてない様に見えますね…、CPUの(?)レジスタをいじったら速くなったと言っていますが、そのレジスタがなんであるかはAMDのドキュメントにない(仕様が非公開)なのでわからないらしいです。
非公開のレジスタをいじりまくって偶然発見した…のでしょうか?
Re:ベンチの為のパッチって意味があるのかな (スコア:2)
情報ありがとうございます。確かにそう書いてありますね。 (#2407576 を書いた時点ではいろいろ見間違えていたせいで理解できていませんでした。)
The Stilt さんのその後のコメントもちょっと読んでみました。このコメント [hwbot.org]には、「技術的な背景は調査中」としながら、「予想」として、デフォルトでは x87 命令の一つが無効化 (block) または部分的に無効化されていて、スーパーπではこの命令を多用するので、この命令を有効にすると速くなるということかも、と書いてあるように見えます。でも僕は意味がよくわかっていないので気になる人は原文を読んでください (投げた)。
僕の予想では、この命令を有効にすると CPU が賢くなりすぎて人間に対し反逆を企てることがわかったので、無効にして CPU を出荷したのだと思います。つまり The Stilt さんのせいで人類滅亡の危機…!
Re:ベンチの為のパッチって意味があるのかな (スコア:1)
一番の大本のスレッドはここですね。
http://www.xtremesystems.org/forums/showthread.php?286448-The-Book-of-... [xtremesystems.org]
ここでは、作者がAMDのconfidentialなドキュメントも参照していることが示唆されています。
(社内のドキュメントなのか、NDA下で契約先に開示されているドキュメントなのかは不明ですが…、Programmer's Guideだから社外向けのモノかな)
このレジスタはデフォルトでon(=blocked)になっていて旧来のBIOS他からは誰もoffにしにきていない、そのため特定のerrata修正で後天的にblockされたわけではなさそう(HWの工場出荷時の設定のまま動いている)…、などとは書かれていますが結局このblockされている機能が何なのかは書かれていないですね。
NDA下で契約先に開示されているドキュメント (スコア:0)
Microsoft か Sony の関係者なんだと思いますよ。
とりあえず言えるのはここまで。
Re:ベンチの為のパッチって意味があるのかな (スコア:2)
リンクありがとうございます。元の掲示板まで調べていませんでした。
ところで、紹介していただいた元掲示板での The Stilt さんのコメント [xtremesystems.org]で、
と、「confidential (?)」だから提供できないと書かれているドキュメント、検索したら support.amd.com に普通に PDF ファイルが置いてあるようなのですが…。
Re:ベンチの為のパッチって意味があるのかな (スコア:1)
そのことをそのまま連絡すれば反応が返ってくるのではないでしょうか?
Re:ベンチの為のパッチって意味があるのかな (スコア:2)
そうかもしれませんが、べつに反応が欲しいわけでもないので。 shibuya さん (でも誰でも) が連絡したければご自由にどうぞ。
Re: (スコア:0)
非公開のレジスタを偶然いじって高速化できた、は流石に信じられないな
知ってた以外に考えられない
Re: (スコア:0)
残り3セットのCPUコア対+FPUユニッツで、OS等の残りスレッドを走らせれば良いのでは?
Re:ベンチの為のパッチって意味があるのかな (スコア:1)
特定の製品が有利になるための贔屓パッチではなく、
特定の製品が本気を出せない不備を取り除くためのパッチなら、むしろ公平でしょう。
Re: (スコア:0)
x87命令セット最適化の結果スーパーπの計算が速くなるなら問題無いんじゃない?