パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Ryzenで発生しているSEGV問題、原因はCPUのキャッシュ?」記事へのコメント

  • 命令デコーダかL1命令キャッシュ、あるいはRyzenで新設されたμOPキャッシュ辺りに問題がある可能性が高く、Twitterではマイクロコードの更新で直るのか疑問視する意見もあった。

    マイクロコードか設定でキャッシュを無効化する対策がされるだろうから、修正できるでしょ。
    #あれ、なんか既視感 [wikipedia.org]がある話の気が

    • タレコミのリンク先を見てると、分岐予測で何かコケてる気がするんですけどね。
      http://www.4gamer.net/games/300/G030061/20170228119/ [4gamer.net]
      分岐予測で、積極的にニューラルネットワークを使ってるので、そこのアルゴリズムのバグが絡んでるんじゃないかという臭いがプンプンしますけどね。変なアドレスに飛ばすとか、キャッシュページ間違えるとか、分岐予測の結果を出すときか外した時に間違ったアドレスを振り出してるような…

      となると、マイクロコードかもしれないし、ハードコーディングされてるかもしれない(;´Д`)

      • 私も分岐予測系だと思うけど、ロジックじゃなくて内部ノイズかクロストークで弱い FF がラッチできないか反転しているような顔つきかなと。

        石によって頻度がばらつくようですし、リンク手繰るような分岐では出なくて、分岐で処理を大きく変える処理が多いようなアプリで出ているっぽい。
        • by Anonymous Coward
          あのさあ、お前らバカだろ

          分岐予測は予測でしかないから、本来とは違うものが出力されても遅くなるだけでプログラムは正しく実行されるんだよ
          • あきれた。CPU 知らないでしょ。分岐予測 Hit で違うストリーム教えられたらまともに動くわけもない。
            • by Anonymous Coward

              お前、正しい動作と単に(すごく)遅いのことの区別もついていないのかよ……

              • by Anonymous Coward

                分岐予測ってのは、分岐の両方が正常に動作するコードである必要はあるんだよ。
                食レポを求められているが、ケーキと煎餅のどっちの感想が欲しいか未確定なのが分岐予測。
                両方食ってみて片方が毒饅頭だとそのままレビュアーは死ぬ。

              • by Anonymous Coward on 2017年06月24日 12時08分 (#3233400)

                分岐予測と投機実行を混同してない?

                分岐予測は間違っても
                速度が遅いメモリへのアクセスが発生するだけ

                投機実行は
                分岐する場合/しない場合の両方で
                計算結果
                正しい必要がある

                親コメント
              • 必ずしも投機実行ではない。分岐予測はその本来の目的からしてかならず分岐先の命令をプリフェッチするので、それが狂ったら投機実行などやっていなくても動作はめちゃめちゃになる。

                #但し、Rizen は投機実行するアーキなのは知られているので、そもそも遅くなるとか馬鹿じゃないかとしか思えないけど。

                親コメント
              • by Anonymous Coward
                分岐予測を用いた投機実行というのは、ある分岐について可能性の高いほうのパスを仮に実行するものだ
                仮に実行するというのは、計算結果をバッファにため込んで一切の副作用は起きない
                分岐予測が正しいと分かった時点で、バッファを吐き出して状態に反映する
                予測が間違っていたら、バッファを破棄して分岐命令から(新しい投機)実行を続ける

                分岐予測はする・しないの1ビットの判断しかなくて、分岐先アドレスの計算は予測ではなくて確定的に計算できるから、ここれが壊れたら正しくないパスを予測するようになる
                そうなれば間違ったパスを仮実行しがちになって、仮実行の結果がバンバン破棄されて遅くはなるけど、動作がめちゃくちゃになることはない

                alpさんもさ、
                > 分岐予測はその本来の目的からしてかならず分岐先の命令をプリフェッチするので、それが狂ったら投機実行などやっていなくても動作はめちゃめちゃになる。
                と言い張るんなら、俺が書いたのと同程度には詳しいメカニズムを書いてごらんよ
              • 分岐判定と投機実行は一応別の話だということがわかっていないようだが、Rizen は投機実行なアーキなので、投機と組み合わせた場合で話をしようか。

                現代のアークテクチャは分岐多段で複数のストリームで投機実行をかけますが、ここでは話を簡単にするために一方向の分岐で考えましょう。
                命令実行時、デコーダで分岐命令が検知された場合は、分岐先を登記実行するわけですけど、その際にそのストリームについているタグとして、普通は当該分岐命令で分岐したかしないかが必ず含まれます。
                また、分岐先アドレスと分岐先フェッチに使うアドレスは別のゲートですから、同じであるという保証なんかどこにもないです。今そういうレベルの話をしている。
                で、実際に分岐判定が下ったとき、どのストリームを選択するかの判定をしなければいけないわけですが、この際にストリームの判定をするのに使うのも、当該分岐命令で分岐したかしないかで、いまはその分岐命令の判定時のフラグ判定が化けたか、あるいは分岐先アドレスのフェッチが化けたか、っていっているわけですから、プロセッサ実行時にそれが検知できるわけがないし、実行結果も正しくない。

                親コメント
              • by Anonymous Coward
                よくわかりました

                > いまはその分岐命令の判定時のフラグ判定が化けたか、

                分岐条件が化けた、ってことですね
                分岐予測関係ないじゃん

                > あるいは分岐先アドレスのフェッチが化けたか

                命令フェッチアドレスが化けた、ってことですね
                分岐予測関係ないじゃん

                で、他の説よりもあなたの説がよりもっともらしい、というのは示せますか?
                ryzenの問題はランダムとは言い切れないようですが

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

処理中...