分岐遅延スロットとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 分岐遅延スロットの意味・解説 

遅延スロット

(分岐遅延スロット から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/10/28 00:59 UTC 版)

遅延スロット(ちえんスロット)またはディレイスロット: Delay slot)は、直前の命令が効力を発揮する前に実行される命令のスロット(位置)を指す。最も典型的な形態としては、RISCDSPアーキテクチャでの分岐命令(遅延分岐[1])の直後の位置の命令がある。この命令は分岐が実際に行われる前に実行される。従って、その命令は(その場所が遅延スロットであることを理解していないと)無意味な位置にあるように見える。アセンブラは一般に自動的な命令の並べ替えを行い、コンパイラやプログラマが遅延スロットを気にせずにコードを書けるようにしている。


  1. ^ L.Hennessy, John; A.Patterson, David (1994). Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann Publishers. p. 443,A-37. ISBN 1-55860-281-X 
  2. ^ A.Patterson, David; L.Hennessy, John (1990). Computer Archtecture A Quantitative Approach. Morgan Kaufmann Publishers. p. 274. ISBN 1-55860-069-8 
  3. ^ 分岐スロット中に分岐命令を記述することは禁止されていた(動作保証されていなかった)
  4. ^ The TMS320C30 Floating-Point Digital Signal Processor”. ti.com. p. 14. 2023年10月28日閲覧。
  5. ^ a b The RISC-V Instruction Set Manual Volume I: Unprivileged ISA” (PDF). pp. 154-155 (2019年6月8日). 2019年12月12日閲覧。
  6. ^ OpenRISC 1000 Architecture Manual, Architecture Version 1.3” (PDF). p. 17 (2019年6月4日). 2019年12月12日閲覧。


「遅延スロット」の続きの解説一覧

分岐遅延スロット

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/12/30 03:03 UTC 版)

遅延スロット」の記事における「分岐遅延スロット」の解説

分岐命令があるとき、パイプライン上その直後位置する遅延スロットを分岐遅延スロット(branch delay slot)と呼ぶ。分岐遅延スロットは主にDSPアーキテクチャや古いRISCアーキテクチャ見られるMIPSPA-RISCSuperHSPARCなどは1つの分岐遅延スロットを持つRISCアーキテクチャである。PowerPCARMDEC Alpha などは分岐遅延スロットを持たない1つの分岐遅延スロットを持つ DSP アーキテクチャとしては、μPD77230、TMS320C3x などがある。SHARC という DSP は2個の分岐遅延スロットを持つ。つまり、分岐実際に行われる前に直後2つ命令実行する。 以下のコード例は、SHARC DSP遅延スロット示したのであるレジスタ R0 から R9番号順にゼロクリアしている(R6次にクリアされているのは R9 ではなく R7 である)。どの命令も2回実行されることはない。 R0 = 0; CALL fn (DB); /* 下の "fn" というラベルのついた関数コール */ R1 = 0; /* 第一遅延スロット */ R2 = 0; /* 第二遅延スロット */ /***** ここで CALL効果発揮する *****/ R6 = 0; /* CALL/RTS はここに復帰する */ JUMP end (DB); R7 = 0; /* 第一遅延スロット */ R8 = 0; /* 第二遅延スロット */ /***** ここで JUMP効果発揮する *****/ /* 以下の4命令は、関数 "fn" として上から呼び出される */fn: R3 = 0; RTS (DB); /* 呼び出し元(遅延スロットの後)へ戻る */ R4 = 0; /* 第一遅延スロット */ R5 = 0; /* 第二遅延スロット */ /***** ここで RTS効果発揮する *****/end: R9 = 0; パイプライン・アーキテクチャの目標は、常にパイプライン命令満たしておくことである。分岐遅延スロットはそのための副作用である。分岐命令パイプラインある程度進んだ時点でないと分岐先が決まらないため、分岐命令次に実行される命令は既にパイプライン上に存在している。例えば、R3000パイプラインは5段であり、1段目は命令フェッチ2段目は命令デコード3段目はアドレス計算である。従って、2段目で分岐命令であると判明した時点パイプラインフリーズさせ、3段目でアドレス計算行いプログラムカウンタ書き換えるが、既に分岐命令次の命令パイプライン上にある。これを無効化しないことでパイプライン効率上げようとすると、分岐遅延スロットが生じる。分岐遅延スロットでは分岐命令結果依存しない任意の命令実行できるこのような最適化は、コンパイラ命令を分岐遅延スロットに移動させることでなされるまた、デバッガブレークポイント設定する場合や、ステップ実行をする場合、分岐遅延スロットは特殊な取り扱い必要になる。つまり、ブレークポイントについては分岐遅延スロットでは設定できないようにするか、もし設定できるようにするなら分岐遅延スロットからの実行再開後、該当する分岐命令のターゲットアドレスに分岐するように単なる実行再開とは区別した動作が必要となる。ステップ実行場合分岐遅延ステップ実行においては分岐遅延スロットの命令まで含めてまとめて実行しステップ実行後にプログラムカウンタ指し示すアドレスとしては分岐命令のターゲットアドレスになるようにするか、もしステップ実行で分岐遅延スロットでも命令境界ステップ実行するようにするなら、分岐遅延スロットからの実行再開後、該当する分岐命令のターゲットアドレスに分岐するように単なるステップ実行とは区別した動作が必要となる。 分岐遅延スロット数は、パイプライン段数、レジスタ・フォワーディングの有無分岐条件計算されるのがパイプラインの何段目か、分岐先予測行っているかなどの様々な要素影響するバイナリ互換を保つには、分岐遅延スロット数を変更することはできない。従って、技術の進歩によって遅延スロット不要となっても、それを維持し続けることになる。 遅延スロット存在は高パフォーマンスを保つ実装複雑化させることを意味し例えRISC-V においてはオプションで分岐遅延スロットを持つ OpenRISC設計異なり、これを条件コードとともに廃することを選択している。 遅延スロットは高パフォーマンスを保つ実装複雑化させるだけでなく、割り込み受付機構複雑化させる。デバッガ遅延スロットブレークポイント設定する場合や、ステップ実行をする場合、分岐遅延スロットに対して特殊な取り扱い必要になるのと同様割り込み受付機構CPUにて制御複雑化する。

※この「分岐遅延スロット」の解説は、「遅延スロット」の解説の一部です。
「分岐遅延スロット」を含む「遅延スロット」の記事については、「遅延スロット」の概要を参照ください。

ウィキペディア小見出し辞書の「分岐遅延スロット」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「分岐遅延スロット」の関連用語

分岐遅延スロットのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



分岐遅延スロットのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの遅延スロット (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの遅延スロット (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS