2010-11-28 1 views
2

私はブランチ遅延スロットで遊んでいました。スピムでそれを試してみました。私の驚きのためにmipsブランチ遅延スロットは連続ブランチを伝播しますか?

j some 
j a 
j b 
j c 
j d 
ori $9, $0, 13 

some: 
a: 
b: 
c: 
d: 

はそれが変わっ$ 9 13 だから私の質問は、遅延スロットが伝播することができているか、これはスピムのもので、実際のMIPS32プロセッサ上では発生しませんか? これが予想される動作であれば、誰かがそこで起こっていることについて少し啓発を与えることができますか?

答えて

1

免責事項として、実際のMIPSマシンで作業したことはありませんが、ブランチ遅延スロットを別のブランチに使用すると、問題が発生する可能性はほとんどあります。 MIPSのようなプロセッサの一般的なプラクティスの1つは、何も実行されていないことを確かめるために、ori $0, $0, 0などのノーオペレーションのためにブランチ遅延スロットを使用することです。

+0

私はそのようなことをするつもりはないと知っています。私はそれをやりません。私は遅延スロットについてもっと理解しようとしています。つまり、ブランチ後の次の命令は、ブランチがトリガーされても実行準備が整っていることを理解しています。しかし、私はいくつかの命令が実行されることはありません。また、各支店に1サイクルかかるのですか? ちょうど私の心に来たことは、ルールが '各支店ごとに、次の命令が実行される'場合は、それが伝播することを完全に意味するということです。 お返事いただき、ありがとうございました。 –

+0

はい、ブランチごとに1つのサイクルがわかりますが、無条件に「some」にジャンプし、最初の遅延スロットで「a」へのジャンプを無視することは、おそらく完全に正当なことでしょう。 –

+0

誰かがそれに追加するものがあればちょっと待って、それに答えてフラグを立てます。ありがとうございました。 –

5

分岐命令を分岐遅延スロットに配置すると、結果が不定になることが記載されています。

関連する問題