- Core 2 Duoはやっぱりもっさりだった Part13
275 :Socket774[sage]:2007/01/26(金) 15:37:36 ID:I6wB/cIp - >>259
> Memory Disambiguation お前が 語句を理解してないただの馬鹿だということはわかった。 http://www.c.csce.kyushu-u.ac.jp/lab_db/papers/paper/pdf/2002/metsugi02_3.pdf 以降チラ裏 K8にせよCoreMAにせよ、L1キャッシュからレジスタに 読み出すのに3クロック、L2だとそれ以上のレイテンシを生じる。、 高IPCを維持するには、ロードは必要になる前に先行して 実行しないといけないし、実際両者そうやっている。 ストア命令が前にあり書き込み先が解ってない場合は 後続のロード命令を先に実行することはできない。 なぜなら書き込み先アドレスが読み込み先と同値であれば 読み込んだデータに矛盾が生じてしまうから。 アドレスが重ならないと仮定して投機ロードする手もあるが、 重複が生じたらパイプラインを破棄して読み直す必要がある。 CoreMAでは過去の書き込み先のパターンから書き込み先のアドレスを 予測してやることで、投機ロードするかしないかを選択することができる。 CoreMAの速さの秘密はこの辺の機構にこそあると言ってもいい。
|
- Core 2 Duoはやっぱりもっさりだった Part13
278 :Socket774[sage]:2007/01/26(金) 16:15:37 ID:I6wB/cIp - ただ単にmemory disambiguationの説明をしただけなのにそこに突っ込む必要がどこにあるのかな
自称「両方持ってる」奴ならシミュレーションくらい簡単に出来ると思うがなw 無論それだけじゃない。 あくまで投機ロードを補助する技術だから効果的な投機ロード技術が実装されてる必要がある。
|
- Core 2 Duoはやっぱりもっさりだった Part13
279 :Socket774[sage]:2007/01/26(金) 16:17:33 ID:I6wB/cIp - >>277
恥の上塗りか データの投機ロードとプリフェッチの違いを 学位持ちでも納得するように簡潔に説明してくれ
|
- Core 2 Duoはやっぱりもっさりだった Part13
282 :Socket774[sage]:2007/01/26(金) 16:27:55 ID:I6wB/cIp - http://pc.watch.impress.co.jp/docs/2006/0306/kaigai247.htm
> ●【投機ロード】を可能にするMemory Disambiguation > > メモリマネージメントでは、【プリフェッチ】を強化し「Memory Disambiguation」を実装する。 > この2つは密接な関係にある。データのロードはレイテンシが長いので、できるだけ前 > もってロードしておきたい。つまり、ロード命令をできるだけ前に実行するように命令 > 順序を並べ替えたい。 > > しかし、ロード命令より前の方にストア命令がある場合、通常は、それ以上前に > ロード命令を実行することができない。それは、ストア命令がストアするはずの > メモリアドレスから先にデータをロードしてしまうことになるかもしれないからだ。 > アドレスが前もってわかればコンパイラレベルで最適化が可能だが、実際には > 実行時にならないとアドレスの依存関係が判明しないことが多い。そのため、 > ロードをストアの前に出すためには、動的に依存関係を判定するメカニズムが必要になる。 > Memory Disambiguationは、こうしたデータ依存関係の曖昧さ(ambiguity)を解決する機構だ。 > 何らかの方法で、アドレスの依存関係を解消またはチェックできれば、ロード命令を > ストア命令よりも前に実行。演算命令が実行される時には、オペランドがレジスタに > 格納されているように配置することができ、ロードレイテンシを隠蔽できるわけだ。 >>281 > 予測の段階でコア(レジスタだっけ?)にまでデータを送るのがメモリ投機 > キャッシュに入れるだけで待機させとくのがプリフェッチだろ キャッシュのレベルやレジスタに依存して使い分ける語彙じゃない。 もう少しお勉強してこいハゲ。
|
- Core 2 Duoはやっぱりもっさりだった Part13
284 :Socket774[sage]:2007/01/26(金) 16:37:21 ID:I6wB/cIp - 「語彙」という単語が読めなかったのか 真性だな
|
- Core 2 Duoはやっぱりもっさりだった Part13
287 :Socket774[sage]:2007/01/26(金) 17:19:29 ID:I6wB/cIp - モダンなCPUアーキテクチャにおいて、データプリフェッチは予測に基づいて行われるから
下位キャッシュ→上位キャッシュあるいはキャッシュからレジスタファイルへの転送に おいて「投機ロード」と「ハードウェアプリフェッチ」は、ほぼ同等の意味合いで使われるんだよ 後藤氏の「Memory Dis〜」の説明しかり。
|
- Core 2 Duoはやっぱりもっさりだった Part13
291 :Socket774[sage]:2007/01/26(金) 17:35:40 ID:I6wB/cIp - ローカリティヒント命令のことを言ってるのかな?
ソフトに組み込むことで明示的に読み込む「ヒント」は与えることはできるが 最終的に判断するのはハードだ。 たとえばNetBurstではprefetchntaからprefetcht0まで全部同じ動き(L2までの読み込み)だ。 L1への読み込みは自動に頼るのみ。 L1が小さいからprefetcht0でL1に読むようにしてしまうとかえってパイプラインを乱すかららしい。
|
- Core 2 Duoはやっぱりもっさりだった Part13
292 :Socket774[sage]:2007/01/26(金) 17:38:20 ID:I6wB/cIp - > 「たまにしか予測ミスしないというふれこみのくせに実際ミスしたらしばらく機能完全停止する」くらいでかいペナルティを受ける
> C2Dもっさもさ伝説にはこの件がかなり関係すると思ってる 後続の命令を破棄してパイプラインをリフィルするのにたかだか10数クロック程度でしかないが 何が問題なのかね? L2からのロードレイテンシ程度でしかない。
|
- Core 2 Duoはやっぱりもっさりだった Part13
295 :Socket774[sage]:2007/01/26(金) 17:54:52 ID:I6wB/cIp - 命令の分岐に関わるならまだしもデータ予測ミスなら
ただ単にレジスタを割り当てなおすだけだからな。
|
- Core 2 Duoはやっぱりもっさりだった Part13
299 :Socket774[sage]:2007/01/26(金) 18:08:50 ID:I6wB/cIp - 命令のリタイヤはインオーダで行われるから絶対あり得ないな
常識もないのか
|
- 【コンロ】INTEL Core 2 Duo/Quad Part61【ケンツ】
444 :Socket774[sage]:2007/01/26(金) 18:21:39 ID:I6wB/cIp - OS自体の実行はな。
カーネルをメモリになるべく割り当てるようなオプションならもともとあるだろ。 アプリケーションを使うならページの外に追い出されたら意味ないべ。 シリコンディスクが手軽にできるくらいにならないと駄目だね。
|
- Core 2 Duoはやっぱりもっさりだった Part13
304 :Socket774[sage]:2007/01/26(金) 18:34:54 ID:I6wB/cIp - リタイヤを保留というより実行を保留する。
たとえば次のような場合 mov [memAddress1], edx add eax, [memAddress2] まずMemory Dis〜に基づいてmemAddress2を投機ロードするだろうが、 addの実行はAddress1が確定するまで待っておくだけでいい。 Address1とAddress2のアドレスが重複してしまっても値を読み直すだけで済む。 ずれてなければedxの値をそのままコピーしてしまう手もあるだろう。 add命令のレイテンシもたかだか1程度なので、危険をおかしてまで ストアの前に実行する必要は無いし、実際やらない筈だ。
|
- Core 2 Duoはやっぱりもっさりだった Part13
305 :Socket774[sage]:2007/01/26(金) 18:39:31 ID:I6wB/cIp - >>302
事実があるならきちんと引用するように。 君みたいな捏造デムパの妄言なんて誰も信じませんよ。
|
- Core 2 Duoはやっぱりもっさりだった Part13
307 :Socket774[sage]:2007/01/26(金) 18:45:18 ID:I6wB/cIp - >>306
資料キボンヌ 間違えた場合にリタイヤせずに命令を再実行すれば原理的には帳尻は合うだろうが。
|
- Core 2 Duoはやっぱりもっさりだった Part13
314 :Socket774[sage]:2007/01/26(金) 20:13:11 ID:I6wB/cIp - >>312
THX つか、Flashかよ
|