アカウント名:
パスワード:
命令デコーダかL1命令キャッシュ、あるいはRyzenで新設されたμOPキャッシュ辺りに問題がある可能性が高く、Twitterではマイクロコードの更新で直るのか疑問視する意見もあった。
マイクロコードか設定でキャッシュを無効化する対策がされるだろうから、修正できるでしょ。#あれ、なんか既視感 [wikipedia.org]がある話の気が
タレコミのリンク先を見てると、分岐予測で何かコケてる気がするんですけどね。http://www.4gamer.net/games/300/G030061/20170228119/ [4gamer.net]分岐予測で、積極的にニューラルネットワークを使ってるので、そこのアルゴリズムのバグが絡んでるんじゃないかという臭いがプンプンしますけどね。変なアドレスに飛ばすとか、キャッシュページ間違えるとか、分岐予測の結果を出すときか外した時に間違ったアドレスを振り出してるような…
となると、マイクロコードかもしれないし、ハードコーディングされてるかもしれない(;´Д`)
お前、正しい動作と単に(すごく)遅いのことの区別もついていないのかよ……
分岐予測ってのは、分岐の両方が正常に動作するコードである必要はあるんだよ。食レポを求められているが、ケーキと煎餅のどっちの感想が欲しいか未確定なのが分岐予測。両方食ってみて片方が毒饅頭だとそのままレビュアーは死ぬ。
分岐予測と投機実行を混同してない?
分岐予測は間違っても速度が遅いメモリへのアクセスが発生するだけ
投機実行は分岐する場合/しない場合の両方で計算結果正しい必要がある
#但し、Rizen は投機実行するアーキなのは知られているので、そもそも遅くなるとか馬鹿じゃないかとしか思えないけど。
現代のアークテクチャは分岐多段で複数のストリームで投機実行をかけますが、ここでは話を簡単にするために一方向の分岐で考えましょう。 命令実行時、デコーダで分岐命令が検知された場合は、分岐先を登記実行するわけですけど、その際にそのストリームについているタグとして、普通は当該分岐命令で分岐したかしないかが必ず含まれます。 また、分岐先アドレスと分岐先フェッチに使うアドレスは別のゲートですから、同じであるという保証なんかどこにもないです。今そういうレベルの話をしている。 で、実際に分岐判定が下ったとき、どのストリームを選択するかの判定をしなければいけないわけですが、この際にストリームの判定をするのに使うのも、当該分岐命令で分岐したかしないかで、いまはその分岐命令の判定時のフラグ判定が化けたか、あるいは分岐先アドレスのフェッチが化けたか、っていっているわけですから、プロセッサ実行時にそれが検知できるわけがないし、実行結果も正しくない。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
AMDではまれによくある事 (スコア:1)
マイクロコードか設定でキャッシュを無効化する対策がされるだろうから、修正できるでしょ。
#あれ、なんか既視感 [wikipedia.org]がある話の気が
Re: (スコア:2)
タレコミのリンク先を見てると、分岐予測で何かコケてる気がするんですけどね。
http://www.4gamer.net/games/300/G030061/20170228119/ [4gamer.net]
分岐予測で、積極的にニューラルネットワークを使ってるので、そこのアルゴリズムのバグが絡んでるんじゃないかという臭いがプンプンしますけどね。変なアドレスに飛ばすとか、キャッシュページ間違えるとか、分岐予測の結果を出すときか外した時に間違ったアドレスを振り出してるような…
となると、マイクロコードかもしれないし、ハードコーディングされてるかもしれない(;´Д`)
Re: (スコア:1)
石によって頻度がばらつくようですし、リンク手繰るような分岐では出なくて、分岐で処理を大きく変える処理が多いようなアプリで出ているっぽい。
Re: (スコア:1)
分岐予測は予測でしかないから、本来とは違うものが出力されても遅くなるだけでプログラムは正しく実行されるんだよ
Re: (スコア:0)
Re: (スコア:0)
お前、正しい動作と単に(すごく)遅いのことの区別もついていないのかよ……
Re: (スコア:0)
分岐予測ってのは、分岐の両方が正常に動作するコードである必要はあるんだよ。
食レポを求められているが、ケーキと煎餅のどっちの感想が欲しいか未確定なのが分岐予測。
両方食ってみて片方が毒饅頭だとそのままレビュアーは死ぬ。
Re: (スコア:0)
分岐予測と投機実行を混同してない?
分岐予測は間違っても
速度が遅いメモリへのアクセスが発生するだけ
投機実行は
分岐する場合/しない場合の両方で
計算結果
正しい必要がある
Re: (スコア:1)
#但し、Rizen は投機実行するアーキなのは知られているので、そもそも遅くなるとか馬鹿じゃないかとしか思えないけど。
Re: (スコア:0)
仮に実行するというのは、計算結果をバッファにため込んで一切の副作用は起きない
分岐予測が正しいと分かった時点で、バッファを吐き出して状態に反映する
予測が間違っていたら、バッファを破棄して分岐命令から(新しい投機)実行を続ける
分岐予測はする・しないの1ビットの判断しかなくて、分岐先アドレスの計算は予測ではなくて確定的に計算できるから、ここれが壊れたら正しくないパスを予測するようになる
そうなれば間違ったパスを仮実行しがちになって、仮実行の結果がバンバン破棄されて遅くはなるけど、動作がめちゃくちゃになることはない
alpさんもさ、
> 分岐予測はその本来の目的からしてかならず分岐先の命令をプリフェッチするので、それが狂ったら投機実行などやっていなくても動作はめちゃめちゃになる。
と言い張るんなら、俺が書いたのと同程度には詳しいメカニズムを書いてごらんよ
Re:AMDではまれによくある事 (スコア:1)
現代のアークテクチャは分岐多段で複数のストリームで投機実行をかけますが、ここでは話を簡単にするために一方向の分岐で考えましょう。
命令実行時、デコーダで分岐命令が検知された場合は、分岐先を登記実行するわけですけど、その際にそのストリームについているタグとして、普通は当該分岐命令で分岐したかしないかが必ず含まれます。
また、分岐先アドレスと分岐先フェッチに使うアドレスは別のゲートですから、同じであるという保証なんかどこにもないです。今そういうレベルの話をしている。
で、実際に分岐判定が下ったとき、どのストリームを選択するかの判定をしなければいけないわけですが、この際にストリームの判定をするのに使うのも、当該分岐命令で分岐したかしないかで、いまはその分岐命令の判定時のフラグ判定が化けたか、あるいは分岐先アドレスのフェッチが化けたか、っていっているわけですから、プロセッサ実行時にそれが検知できるわけがないし、実行結果も正しくない。
Re: (スコア:0)
> いまはその分岐命令の判定時のフラグ判定が化けたか、
分岐条件が化けた、ってことですね
分岐予測関係ないじゃん
> あるいは分岐先アドレスのフェッチが化けたか
命令フェッチアドレスが化けた、ってことですね
分岐予測関係ないじゃん
で、他の説よりもあなたの説がよりもっともらしい、というのは示せますか?
ryzenの問題はランダムとは言い切れないようですが