
こんにちは。コンピューターアーキテクチャのパイプラインの項目の勉強をしていて、データハザードについて分からない問題があったので、質問させていただきます。
以下の二つのパイプラインの動作がよくわかりません。
基本的にはフォワーディングによって解決するデータハザードですが、メモリアドレス生成のときはフォワーディングは間に合わないので、結果の格納(W)が終わらないと命令フェッチ(F)ができないそうです。つまり
add r1, r2 .r3 F D E W
lw r4, dpl(r1) F X X DEW
となるそうです。しかし
ld r2, c(r1)
subi r1, r1, 4
のように「ロード命令の次に算術命令」という順番ですと、ハザードは生じないそうです。
下の場合は上と違いr1のデータを更新するだけなのでフォワーディングによって改善ができるという解釈でよろしいのでしょうか?
上は本に書いてあったものなのですが、下のはインターネットから調べたものなのであっていない可能性があるので質問しました。
ちなみに両者ともロード命令の場合なのですが、ストア命令でも同じような振る舞いになるのでしょうか?
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
「データハザード」ってのは, 端的にいうと「ある命令で得られた結果をそのあとの命令で使うために, 前の命令が終わるまで『あとの命令』の実行を止めなきゃならない」って状態.
ここに挙がっている例だと, 上のやつは add で得られた r1 を次の lw で使うから, 「r1 が得られるまで lw を実行できない」ということになる. ところが下の場合には ld の結果である r2 はそのあとで使わないから, ここで見えている分についてはハザードは生じていない (さらにあとの命令で r2 を使っていたら, ld とのタイミングでハザードが起きるかもしれん). あるいは,
ld r1, c(r2)
subi r1, r1, 4
なら明らかにハザードが起きる.
そして, はっきりいうと「ロードの場合はメモリからレジスタにデータを移すので算術命令のデータがメモリに書き込まれるまではストールしてしまう」というのは何をいっているのかよくわからん. もっというと「算術命令のデータがメモリに書き込まれる」とか「算術命令がメモリにデータを書き込む」とかの意味がわからん. どういうこと? どうせ MIPS かなんかの RISC なんだろうから, そもそも「算術命令の結果」がメモリに書き込まれることはありえないよ.
それぞれの命令を実行するために「確定していなければならないデータ」がなんなのか, そしてそれらが「どのタイミングで確定するのか」を確認してください. ここの例だと「add の結果がどこで出てきてどのタイミングにフォワーディングできるのか」とか「メモリアドレスをどのタイミングで生成するのか」とか, です.
とはいえ, 上の例で「どのステージが同時に起きているのか」がわからないんだよね.... add の D と lw の F が同じクロックと思っていい?
参考URL:http://akademeia.info/index.php?%A5%D1%A5%A4%A5% …
返事が遅れてしまい申し訳ありません。
おっしゃる通り、上の例でのステージはaddのDとlwのFが同じクロックです。そしてハザードが生じ、addのWの次のクロックにlwのDが来ています。
アドレスが生成されるので、算術命令の書き込みが完了しないとロード命令は実行できないと参考書に書いてあったので、算術命令によってメモリの書き込みがされるのかなと思っていました。それは間違いなのですね。
下の例についての解説ありがとうございます。非常にわかりやすいです。なにがいつ使われるということを意識するのが大切なのですね。
No.2
- 回答日時:
下の例って, フォワーディングするまでもなくそもそもハザード起きてないよね. そこは理解できてる?
で, 今の例とは無関係だけど確かにフォワーディングすればハザードの解消はできる. ただ, 「ロードするための余計な時間」はどうしても必要だ (からストールの可能性は覚悟しなきゃならない) し, 「フォワーディングしてハザードを解消できるかどうか」は単に「必要なデータをいつ供給できるか」ということによる. それがわかっていれば「ストアのときにどうか」もわかるはずなんだけどね....
>下の例って, フォワーディングするまでもなくそもそもハザード起きてないよね. そこは理解できてる
正直微妙です。まだ算術命令でのデータの依存関係と混乱しています。
ロードの場合はメモリからレジスタにデータを移すので算術命令のデータがメモリに書き込まれるまではストールしてしまうという上の例の説明は言われて納得しました。
それを考えると、ストア命令の場合はレジスタからメモリにデータを書き込むので、算術命令がメモリにデータを書き込むまで待機している必要はないからハザードは起こらないと考えられると思っています。
しかし、メモリのどこにストアすればいいのかを確かめるために算術命令がメモリに書き込むまで待機する必要があるのかもしれないとも思っています。
つまり、まだ動作原理をしっかりと理解できていません。。。
No.1
- 回答日時:
下の例で「ハザードは生じない」なら, そもそもフォワーディングの必要がない. つまり「フォワーディングによって改善ができる」と解釈する余地が存在しない.
どうも「データハザード」や「フォワーディング」の理解があやふやな気がする.
わかりにくい文章ですみません。
私は上の場合はアドレス生成なので、どうしてもハザードが生じてしまうが、下の場合はフォワーディングをすれば「ハザードは生じない」ということを言いたかったのです。
本題なのですが、「ロード命令の次に算術命令」という場合はフォワードィングによるハザードの改善は可能ということでよろしいのでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows11でタスクバー・スタ...
-
Microsoftのページだけ全て「申...
-
エクスプローラのアクティブウ...
-
windows11 きれいなロック画面...
-
Windows11 デスクトップ アイコ...
-
勝手に無変換になる
-
写真をコピーしたら作成日時が...
-
w11 24H2 ISOファイルの大きさ...
-
Windows11のデスクトップのアプ...
-
ホーム及びロック画面の消費が1...
-
MS-DOS 6.22のダウンロード
-
「Wi-Fiアダプターへのアクセス...
-
シャットダウンで壁紙がなくなる
-
ARM系CPU搭載のパソコンが日本...
-
初期化後の任意のアプリの復元
-
窓を表示させない
-
Win11にできますか?
-
Windowsの"legacy"ってなんです...
-
「ウインドウズアップデートの...
-
Windows11のシステム通知音が小...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ビット数と情報量について
-
iPhone11を使っていて急に動か...
-
pthread_detach
-
なぜRISCが速い?
-
64bitOSを本来の性能で稼動させ...
-
macbookproでイラレ&フォトショ...
-
MS office 2001 for Mac イン...
-
パソコンの動作が起動から30分...
-
ps5起動した時めっちゃうるさい...
-
ガラケーのメールの添付資料の...
-
NEC lavieアプリナビ非表示
-
”他のWinVNCサーバーが既に起動...
-
PSPで□+△+SELECT+STARTを押しな...
-
Acrobat Reader DCの拡大鏡機能...
-
紙copiLite(Ver2.96 無償版)で
-
RagnarokOnline(別窓同時起動...
-
文字化けのフォルダーが削除で...
-
重くなったパソコンの写真を削...
-
4Kネイティブの外付けHDD...
-
ozzio tx1425sdpr os vista vis...
おすすめ情報