アカウント名:
パスワード:
命令デコーダかL1命令キャッシュ、あるいはRyzenで新設されたμOPキャッシュ辺りに問題がある可能性が高く、Twitterではマイクロコードの更新で直るのか疑問視する意見もあった。
マイクロコードか設定でキャッシュを無効化する対策がされるだろうから、修正できるでしょ。#あれ、なんか既視感 [wikipedia.org]がある話の気が
タレコミのリンク先を見てると、分岐予測で何かコケてる気がするんですけどね。http://www.4gamer.net/games/300/G030061/20170228119/ [4gamer.net]分岐予測で、積極的にニューラルネットワークを使ってるので、そこのアルゴリズムのバグが絡んでるんじゃないかという臭いがプンプンしますけどね。変なアドレスに飛ばすとか、キャッシュページ間違えるとか、分岐予測の結果を出すときか外した時に間違ったアドレスを振り出してるような…
となると、マイクロコードかもしれないし、ハードコーディングされてるかもしれない(;´Д`)
このCPUは知らないけど、一般的なCPUでは分岐する時には既に予測に従って実行(投機実行)されてるんだよ予測先が間違ってれば、既に実行されている結果も間違ってるわけで
予測先が間違ってれば、既に実行されている結果も間違ってるわけで
そのどっちが正しいかという予測が間違ってるんじゃなく、予測先が実行できないような変なところを指してるから問題になってる。
上のコメントにも出てたけど、CPUはケーキか煎餅どちらか予測していていつもは、ああケーキだね、こんどは煎餅だねってなるんだけど、
今回の件は、ケーキだと予測したけど本当は煎餅だったね、てへ☆彡って話じゃなく、ごく希に片方が毒饅頭にかわるからヤベェって話だよ
taka2氏が言ってるのは、Ryzenの設計上は一体化しているけども、理論的にはケーキと毒饅頭を持ってくるまでが分岐予測で、食うのは投機実行という別の機構だっていう話。
ACさんが言ってる"遅くなるだけ"というのは、投機実行やキャッシュ機構にバグがなければ、毒饅頭はそのまま捨てられてキャッシュメモリ帯域や容量が無駄になるだけ、全体的に遅くなるだけだということ。
alp氏が"分岐予測 Hitで違うストリームを食わされる"と言っているのは、「(分岐予測バグによって)投機実行機構に間違ったopが実際に渡されれば」ということ。
だもんで「すれ違ってる」と言ってる。
すみません、直下にぶら下がってないのでコメントに気づいてませんでした。
ケーキと煎餅の例で言うならば、・(狭義の)分岐予測: どちらの注文が入るか確定していない状況で、どちらを注文する確率が高いか予想する部分。・投機実行: 予測に基づいて調理を始める。予測が当たれば出来たをものそのまま提供。外れたら作りかけのものは捨てて、注文通りのものを調理する。・(広義の)分岐予測: 狭義の分岐予測に基づいて厨房にオーダーを出すところまでひっくるめた大枠。と考えるべきでしょう。
> 理論的にはケーキと毒饅頭を持ってくるまでが分岐予測
違います。「(狭義の)分岐予測」はあくまで「ケーキか煎餅かを予測」するところまで。分岐予測が間違えても注文処理に時間がかかる(遅くなる)だけ。「煎餅が来るはずなのに毒饅頭が出てきた」としたら、それは「(狭義の)分岐予測は煎餅と予想した」が、「厨房が毒饅頭を作ってきた」という状況。で、「実際の注文は煎餅だった(予測が当たった)ので、できたものをそのまま客に出す」ことにした場合、その結果は「客に毒饅頭を食わせる」ことになります。
これは、「狭義の分岐予測」には問題はないが、予測に基づいた厨房処理のどこかに問題ある状況であり、それをひっくるめた全体の「広義の分岐予測」には問題がある状態。
たとえを止めて普通に書くと、「(広義の)分岐予測」=「(狭義の)分岐予測」+「分岐先予測」+「分岐予測・分岐先予測の結果に基づいた命令フェッチ」という処理構成において、「分岐予測に基づいた『命令フェッチ処理』がおかしい」と推測される状況で、あるAC氏他は「それは『(狭義の)分岐予測』の問題ではない」と主張していますし、alp氏他は「それは『(広義の)分岐予測』の問題である」と主張しているわけですが、これは分岐予測の定義がずれてるだけで、どちらが間違っているとかいう話ではないでしょう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー
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: (スコア:1)
予測先が間違ってれば、既に実行されている結果も間違ってるわけで
そのどっちが正しいかという予測が間違ってるんじゃなく、予測先が実行できないような変なところを指してるから問題になってる。
上のコメントにも出てたけど、CPUはケーキか煎餅どちらか予測していて
いつもは、ああケーキだね、こんどは煎餅だねってなるんだけど、
今回の件は、ケーキだと予測したけど本当は煎餅だったね、てへ☆彡って話じゃなく、
ごく希に片方が毒饅頭にかわるからヤベェって話だよ
Re: (スコア:0)
taka2氏が言ってるのは、Ryzenの設計上は一体化しているけども、理論的にはケーキと毒饅頭を持ってくるまでが分岐予測で、食うのは投機実行という別の機構だっていう話。
ACさんが言ってる"遅くなるだけ"というのは、投機実行やキャッシュ機構にバグがなければ、毒饅頭はそのまま捨てられてキャッシュメモリ帯域や容量が無駄になるだけ、全体的に遅くなるだけだということ。
alp氏が"分岐予測 Hitで違うストリームを食わされる"と言っているのは、「(分岐予測バグによって)投機実行機構に間違ったopが実際に渡されれば」ということ。
だもんで「すれ違ってる」と言ってる。
Re:AMDではまれによくある事 (スコア:1)
すみません、直下にぶら下がってないのでコメントに気づいてませんでした。
ケーキと煎餅の例で言うならば、
・(狭義の)分岐予測: どちらの注文が入るか確定していない状況で、どちらを注文する確率が高いか予想する部分。
・投機実行: 予測に基づいて調理を始める。予測が当たれば出来たをものそのまま提供。外れたら作りかけのものは捨てて、注文通りのものを調理する。
・(広義の)分岐予測: 狭義の分岐予測に基づいて厨房にオーダーを出すところまでひっくるめた大枠。
と考えるべきでしょう。
> 理論的にはケーキと毒饅頭を持ってくるまでが分岐予測
違います。「(狭義の)分岐予測」はあくまで「ケーキか煎餅かを予測」するところまで。分岐予測が間違えても注文処理に時間がかかる(遅くなる)だけ。
「煎餅が来るはずなのに毒饅頭が出てきた」としたら、それは「(狭義の)分岐予測は煎餅と予想した」が、「厨房が毒饅頭を作ってきた」という状況。
で、「実際の注文は煎餅だった(予測が当たった)ので、できたものをそのまま客に出す」ことにした場合、その結果は「客に毒饅頭を食わせる」ことになります。
これは、「狭義の分岐予測」には問題はないが、予測に基づいた厨房処理のどこかに問題ある状況であり、
それをひっくるめた全体の「広義の分岐予測」には問題がある状態。
たとえを止めて普通に書くと、
「(広義の)分岐予測」=「(狭義の)分岐予測」+「分岐先予測」+「分岐予測・分岐先予測の結果に基づいた命令フェッチ」
という処理構成において、「分岐予測に基づいた『命令フェッチ処理』がおかしい」と推測される状況で、
あるAC氏他は「それは『(狭義の)分岐予測』の問題ではない」と主張していますし、
alp氏他は「それは『(広義の)分岐予測』の問題である」と主張しているわけですが、
これは分岐予測の定義がずれてるだけで、どちらが間違っているとかいう話ではないでしょう。