アカウント名:
パスワード:
命令デコーダかL1命令キャッシュ、あるいはRyzenで新設されたμOPキャッシュ辺りに問題がある可能性が高く、Twitterではマイクロコードの更新で直るのか疑問視する意見もあった。
マイクロコードか設定でキャッシュを無効化する対策がされるだろうから、修正できるでしょ。#あれ、なんか既視感 [wikipedia.org]がある話の気が
タレコミのリンク先を見てると、分岐予測で何かコケてる気がするんですけどね。http://www.4gamer.net/games/300/G030061/20170228119/ [4gamer.net]分岐予測で、積極的にニューラルネットワークを使ってるので、そこのアルゴリズムのバグが絡んでるんじゃないかという臭いがプンプンしますけどね。変なアドレスに飛ばすとか、キャッシュページ間違えるとか、分岐予測の結果を出すときか外した時に間違ったアドレスを振り出してるような…
となると、マイクロコードかもしれないし、ハードコーディングされてるかもしれない(;´Д`)
このCPUは知らないけど、一般的なCPUでは分岐する時には既に予測に従って実行(投機実行)されてるんだよ予測先が間違ってれば、既に実行されている結果も間違ってるわけで
どこにぶら下げるか迷ったんですが、ここに。なんかね、言葉の定義の問題ですれ違ってるだけで、それを説明しないといつまで経っても平行線でしょう。
・狭義の(本来の)「分岐予測」 条件分岐命令で、「分岐する場合と分岐しない場合と、どちらが確率が高いか」を判定するもの。分岐予測器の出力に基づいて、分岐する可能性が高いなら分岐先の命令を投機実行するし、分岐しない可能性が高いなら続く命令を投機実行するだけ。 その後、実際の条件判定結果に基づいて、当たっていればそのまま実行継続するし、外れたなら既に実行された結果を差し戻す。 分岐予測には「予測先」なんて概念はありません。分岐予測が「分岐する」と判定した時に投機実行するのは、「実際の分岐命令の分岐先」であり、「予測」ではありません。だから、「分岐予測を間違えても遅くなるだけで結果はおかしくならない」です。
・狭義の分岐予測とは異なる「分岐先予測」分岐予測とは別に「分岐先予測」という技術もあります。「分岐するかどうか」ではなく、「分岐先がどこになるか」を予測することで、分岐先命令のフェッチ待ち時間によるオーバーヘッドを減らす技術
・広義の(CPU構成要素としての)「分岐予測ユニット」Ryzenの「分岐予測ユニット」は、分岐予測と分岐先予測とμOpキャッシュとが一体になっていて、予測に基づいて実行すべきμOpコードを直接出力します。ここが間違えたら、まったく異なる命令を実行してしまう可能性があります。
この「狭義の分岐予測」と「分岐予測ユニット」のどちらについて語るのかを明確にせずに議論してるからすれ違ってる感じですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー
AMDではまれによくある事 (スコア:1)
マイクロコードか設定でキャッシュを無効化する対策がされるだろうから、修正できるでしょ。
#あれ、なんか既視感 [wikipedia.org]がある話の気が
Re: (スコア:2)
タレコミのリンク先を見てると、分岐予測で何かコケてる気がするんですけどね。
http://www.4gamer.net/games/300/G030061/20170228119/ [4gamer.net]
分岐予測で、積極的にニューラルネットワークを使ってるので、そこのアルゴリズムのバグが絡んでるんじゃないかという臭いがプンプンしますけどね。変なアドレスに飛ばすとか、キャッシュページ間違えるとか、分岐予測の結果を出すときか外した時に間違ったアドレスを振り出してるような…
となると、マイクロコードかもしれないし、ハードコーディングされてるかもしれない(;´Д`)
Re: (スコア:1)
石によって頻度がばらつくようですし、リンク手繰るような分岐では出なくて、分岐で処理を大きく変える処理が多いようなアプリで出ているっぽい。
Re: (スコア:1)
分岐予測は予測でしかないから、本来とは違うものが出力されても遅くなるだけでプログラムは正しく実行されるんだよ
Re: (スコア:0)
このCPUは知らないけど、一般的なCPUでは分岐する時には既に予測に従って実行(投機実行)されてるんだよ
予測先が間違ってれば、既に実行されている結果も間違ってるわけで
Re:AMDではまれによくある事 (スコア:2)
どこにぶら下げるか迷ったんですが、ここに。
なんかね、言葉の定義の問題ですれ違ってるだけで、それを説明しないといつまで経っても平行線でしょう。
・狭義の(本来の)「分岐予測」
条件分岐命令で、「分岐する場合と分岐しない場合と、どちらが確率が高いか」を判定するもの。分岐予測器の出力に基づいて、分岐する可能性が高いなら分岐先の命令を投機実行するし、分岐しない可能性が高いなら続く命令を投機実行するだけ。
その後、実際の条件判定結果に基づいて、当たっていればそのまま実行継続するし、外れたなら既に実行された結果を差し戻す。
分岐予測には「予測先」なんて概念はありません。分岐予測が「分岐する」と判定した時に投機実行するのは、「実際の分岐命令の分岐先」であり、「予測」ではありません。だから、「分岐予測を間違えても遅くなるだけで結果はおかしくならない」です。
・狭義の分岐予測とは異なる「分岐先予測」
分岐予測とは別に「分岐先予測」という技術もあります。「分岐するかどうか」ではなく、「分岐先がどこになるか」を予測することで、分岐先命令のフェッチ待ち時間によるオーバーヘッドを減らす技術
・広義の(CPU構成要素としての)「分岐予測ユニット」
Ryzenの「分岐予測ユニット」は、分岐予測と分岐先予測とμOpキャッシュとが一体になっていて、
予測に基づいて実行すべきμOpコードを直接出力します。
ここが間違えたら、まったく異なる命令を実行してしまう可能性があります。
この「狭義の分岐予測」と「分岐予測ユニット」のどちらについて語るのかを明確にせずに議論してるからすれ違ってる感じですね。