12/03/24 22:22:22.48
>>780 ifが優先されると思ってたのは>>767 とお前ぐらいだよ
787:デフォルトの名無しさん
12/03/24 22:25:19.71
>>785
ごめん。もう今更何を言おうが>>780のせいで信用ないわ。
788:デフォルトの名無しさん
12/03/24 22:34:54.17
>>782
ああ投棄実行ね投機の変換ミスそのままにしてたわ
789:デフォルトの名無しさん
12/03/24 22:48:33.55
投棄実行については誤解してたわ。
2つの分岐を両方実行して実際実行対象にならなかった方の結果を破棄するものだと思ってた。
790:デフォルトの名無しさん
12/03/24 22:50:38.87
>大概returnやthrowが行われるからifをすっ飛ばせば速いのは解る。
もう一度考えてみたけど、この意味が全然理解できない。
ぱっと見で、何故returnや、
増してthrowなどという言葉が出るのかわからない。
(GP等の例外の割り込みは全く別物)
で、次の行の
>反復も反復する事を優先した方が早いのは解る。
の意味は、「ループであることが推測されるから分岐すると予測する」だよね?
それとの対比で、「ifをすっとばせば」の意味が
「ifの内部は実行されないと予測」と捉えれば
「ifの部分での分岐は分岐すると予測すれば
if内部のreturnやthrowに制御が来ないので別の分岐の予測を避けられる」という意味にもとれる。
それならようやく意味が通じるような気がして、そういう意味だと思ったんだけど。
つまり、ifの部分(=前方分岐)を「分岐すると予測する」という意味だと。
でもそれ(前方へ分岐すると予測する)は実際のプロセッサの動作とは違うわけで
ならばどういう意味なのか、さっぱりわからなくなってしまってね。
791:デフォルトの名無しさん
12/03/24 23:00:43.72
お前の文章が解らんわ
792:デフォルトの名無しさん
12/03/24 23:01:04.27
一応。
突然returnやthrowが出てくるのが
if (xx) return
という意味じゃないか、というのも勝手に俺が頭の中で補って想像しただけで
実際には何の説明も無く(ifの多くがreturnやthrowというのにも同意しにくい)
唐突な「rerturnやthrow」「すっ飛ばす」を必死に理解しようとしたのがそもそもの間違いかもね。
793:デフォルトの名無しさん
12/03/24 23:01:51.31
実行時の分岐予測って、どうなってるのかわかってないと、グダグダでしょ
794:デフォルトの名無しさん
12/03/24 23:04:39.09
>>792
>>779で補足だしてるだろしつこいわ
795:デフォルトの名無しさん
12/03/24 23:09:08.21
>>790 >>792 ウゼェ・・・
796:デフォルトの名無しさん
12/03/24 23:18:44.32
>>794
>>779だとしたら>>780だっての。
「前方分岐は分岐しないと予測する」のが実際のプロセッサの動作なわけ。
>>779の「throwなんか滅多に起こらないから実行しない(と予測する)」は
「前方分岐は分岐すると予測する」ことになるから実際の動作と矛盾するという話。
それを、「わかってないくせに」の根拠の一つにしたんだよ。
実際、「分岐予測とはどういうものか」も「なぜ分岐予測するのか」もわかってなかったわけでしょ(>>789)。
797:デフォルトの名無しさん
12/03/25 01:09:12.01
口汚い言葉で罵倒せずには居られない奴って下品・・・。
団子さんの紳士っぷりを少しは見習ったらどうだろうか。
798:デフォルトの名無しさん
12/03/25 01:16:07.87
もう>>780はいいから団子さんこないかな
799:デフォルトの名無しさん
12/03/25 01:24:14.75
え?指摘するの780だけ?
露骨だなぁ。恥ずかしくないんだろうか。
800:デフォルトの名無しさん
12/03/25 02:30:29.23
お前がなwww
801:デフォルトの名無しさん
12/03/25 03:19:03.04
頭が悪すぎて理解できなかったらしいから仕方ないな。
802:デフォルトの名無しさん
12/03/25 14:12:21.08
>>796
投機実行という言葉については誤解してました。
分岐予測については、分岐ミスでパイプラインに読み込んだ
命令を破棄が発生するという認識です。
そもそも、それが気にならないのであれば分岐予測なんて
気にする必要はないでしょう。
803:デフォルトの名無しさん
12/03/25 16:12:43.94
インテルの最適化マニュアルだと
>インテルPentiumM プロセッサー、インテルCoreSolo プロセッサー、インテルCoreDuoプロセッサーは、
>ジャンプの向きに従った条件分岐を静的には予測しない。これらのプロセッサーでは、
>すべての条件分岐は、最初に発生したときでも動的に予測される。
と書いてあって、wikiで調べたらPenM以降は広域分岐予測を取り入れた関係で静的予測はしなくなったみたいだね
URLリンク(ja.wikipedia.org)
>>768の
>PM,Core2はランダム
というよりも、「前に実行した別の分岐命令の結果も影響する」とした方が適切みたいだ
分岐予測に関して
URLリンク(news.mynavi.jp)
の第167回からの解説が参考になるよ
804:デフォルトの名無しさん
12/03/25 18:09:59.76
>>803
なるほど。いい話が聞けました。ありがとうございます。
805:デフォルトの名無しさん
12/03/28 00:06:00.96
>>803
>と書いてあって、wikiで調べたらPenM以降は広域分岐予測を取り入れた関係で静的予測はしなくなったみたいだね
P4もグローバル履歴を使ってるよ
おそらくだけど ある分岐命令を最初に実行したかどうかはBTBのエントリが割り当てられているかで判断するので
分岐先予測より分岐予測のヒット率が十分に高い場合は動的分岐予測が当たる条件で誤って静的予測してしまう確率が高いから
1回目の分岐予測を諦めても静的予測をやめたほうがヒット率が上がるということなんじゃないだろうか
806:デフォルトの名無しさん
12/03/28 00:11:22.64
×分岐先予測より分岐予測のヒット率が十分に高い場合
○BTBのヒット率より分岐予測のヒット率が高い場合