JP5209390B2 - 情報処理装置及び命令フェッチ制御方法 - Google Patents

情報処理装置及び命令フェッチ制御方法 Download PDF

Info

Publication number
JP5209390B2
JP5209390B2 JP2008173410A JP2008173410A JP5209390B2 JP 5209390 B2 JP5209390 B2 JP 5209390B2 JP 2008173410 A JP2008173410 A JP 2008173410A JP 2008173410 A JP2008173410 A JP 2008173410A JP 5209390 B2 JP5209390 B2 JP 5209390B2
Authority
JP
Japan
Prior art keywords
instruction
address
loop
fetch
information processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008173410A
Other languages
English (en)
Other versions
JP2010015298A (ja
Inventor
英之 三輪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2008173410A priority Critical patent/JP5209390B2/ja
Priority to US12/482,938 priority patent/US8307195B2/en
Publication of JP2010015298A publication Critical patent/JP2010015298A/ja
Application granted granted Critical
Publication of JP5209390B2 publication Critical patent/JP5209390B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、マイクロプロセッサ、DSP(Digital Signal Processor)等の情報処理装置に関し、特に、情報処理装置による命令フェッチの制御技術に関する。
情報処理装置は、命令メモリ(例えば命令キャッシュ、ROM)から命令をフェッチする命令フェッチ部と、フェッチされた命令をデコードして実行する命令実行部を有する。また、命令実行部に対して滞りなく命令を供給するために、命令フェッチ部と命令実行部との間に命令バッファを配置した構成が一般的である。このような構成を有する情報処理装置では、命令フェッチ部は、命令実行部における命令デコード以降のパイプライン処理とは独立に命令のフェッチを順次行ない、命令メモリから取得した命令を命令バッファに格納する。この命令デコード以降の処理とは独立に行なわれる先行的な命令フェッチ動作は、命令プリフェッチと呼ばれる。
より具体的に述べると、命令フェッチ部は、フェッチ対象命令のアドレスを格納するレジスタであるフェッチポインタを有しており、フェッチポインタの値を命令メモリに供給する。命令フェッチ部は、命令メモリからのデータ読み出し単位、言い換えると命令メモリと情報処理装置との間のバス幅に応じて、フェッチポインタの値を順次更新しながら命令フェッチを行なう。また、命令フェッチ部は、割り込みの発生、例外の発生、分岐命令のデコード等を契機としてフェッチポインタの値を分岐先アドレスに不連続に変更するための機構を有する。
特開2007−207145号公報 特開2004−30137号公報
上述した従来の情報処理装置は、ループ命令に基づくループ処理を実行する場合に、各ループの度に無駄な命令フェッチ動作が発生するという問題がある。ループ処理では、ループ内の先頭命令から終端命令までが所定の回数だけ繰り返し実行される。ループ処理の実行中にループ終端命令がデコードされると、次回のループを開始するために、ループ先頭命令のアドレスによってフェッチポインタが更新される。さらに、命令バッファ内に既に格納されているループ終端命令以降の命令が無効化される。命令フェッチはキャッシュメモリへのアクセス処理であるため、無駄な命令フェッチは消費電力の増加の原因となる。
ところで、特許文献1は、パイプライン構造を有する情報処理装置において、デコードフェーズにてループ命令がデコードされた場合に、実行フェーズにおけるループ命令の実行が完了するまで後続命令に対するパイプライン処理を停止する技術を開示している。当該技術は、ループ終端アドレスが確定されてループ終了判定が可能となるよりも前に、ループ終端命令の後ろに続くループ外の命令が実行されることを防止できる。しかしながら、特許文献1は、ループ処理を繰り返す過程において、命令フェッチ部による無駄な命令フェッチを防止するための技術については開示していない。このため、特許文献1に開示された情報処理装置では、ループ終端命令がデコードされるまでの間、ループ外の後続命令を取得するための無駄な命令フェッチが発生してしまう。
本発明の第1の態様にかかる情報処理装置は、命令フェッチ部、命令バッファ、命令実行部、及び命令フェッチ制御部を有する。前記命令フェッチ部は、命令メモリに対してフェッチアドレスを供給する。前記命令バッファは、前記フェッチアドレスで指定されるアドレスから読み出された命令を格納する。前記命令実行部は、前記命令バッファから供給される命令をデコードして実行する。そして、前記命令フェッチ制御部は、前記命令実行部がループ処理を実行している間において、前記フェッチアドレスが第1のアドレス以降である場合に、前記命令フェッチ部による前記命令メモリへの前記フェッチアドレスの供給を停止させる。ここで、ループ処理とは、前記命令実行部がループ命令をデコードしたことに応じて所定回数だけ繰り返し実行される処理である。また、第1のアドレスとは、前記ループ処理に含まれる終端命令のアドレスより後のアドレスである。
このような構成により、前記第1の態様にかかる情報処理装置は、ループ終端命令がデコードされているか否かに関わらず、フェッチアドレスと第1のアドレスとの比較によって、ループ外の後続命令のフェッチを停止することができる。
本発明により、ループ処理実行中におけるループ外の命令に対する無駄な命令フェッチを抑制することが可能な情報処理装置を提供できる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
<発明の実施の形態1>
本実施の形態にかかる情報処理装置1の構成を図1に示す。図1において、命令メモリ10は、命令群を含むプログラムが記憶されたメモリである。命令メモリ10は、例えば、命令キャッシュ、ROM(Read Only Memory)又はこれらの組合せである。
命令フェッチ部11は、命令メモリ10から命令フェッチを行なう。フェッチされた命令は、命令バッファ12に格納される。命令バッファ12は、命令メモリ10からフェッチされた命令を格納する一時記憶領域である。命令メモリ10と命令フェッチ部11及び命令バッファ12との間は、フェッチアドレスが転送されるアドレスバス(不図示)と命令メモリから読み出された命令データが転送されるデータバス(不図示)により接続されている。命令フェッチ部11は、フェッチポインタ111に保持されたフェッチアドレスをアドレスバスに出力する。これに応じて命令メモリ10から読み出された命令データは、命令バッファ12に格納される。
命令実行部13は、命令をデコードして実行する。図1の例では、命令実行部13は、命令デコード部131、プログラムカウンタ132、レジスタファイル133、演算回路134、及びデータメモリアクセス回路135を有する。
命令デコード部131は、命令バッファ12から取得した命令をデコードする。また、命令デコード部131は、レジスタファイル133から命令オペランドをフェッチする。さらに、命令デコード部131は、デコードされた命令がループ命令であった場合に、後述するループ処理制御部16と協調して、ループ命令に基づくループ処理の実行を制御する。
なお、特許文献1に示されているように、命令デコード部131でループ命令がデコードされた場合、後続命令に対するパイプライン処理をループ命令の実行完了まで停止させてもよい。また、パイプライン処理を停止させずに、ループ命令の遅延スロットにNOP命令を必要数だけ配置してもよい。
プログラムカウンタ132は、命令デコード部131にてデコードが開始された命令、つまりデコードステージにて処理中の命令アドレスを指し示すカウンタである。命令が逐次実行されている場合には、プログラムカウンタ132の値は命令長に相当する値ずつ更新されるが、割り込み発生時や分岐命令が存在する場合には分岐先のアドレスによって不連続に更新される。
レジスタファイル133は、複数のレジスタを含む。レジスタファイル133は、例えば、後述する演算回路134の入出力データの格納場所、データメモリアクセス回路135によるアドレス演算のためのベースアドレス又はインデックスアドレス等の格納場所として使用される。また、レジスタファイル133は、実行中のプログラム状態の格納場所として使用される。
演算回路134は、命令デコード部131による命令デコード結果に応じた演算、例えば算術演算及び論理演算を実行する。
データメモリアクセス回路135は、データメモリ14からレジスタファイル133へのデータロード、データメモリ14へのデータストアを行なう。
続いて、以下では、ループ処理の実行を制御するための構成要素につて説明する。LSA(Loop Start Address)レジスタ151は、ループ処理に含まれる先頭命令のアドレス(以下、LSAと呼ぶ)を保持するレジスタである。LEA(Loop End Address)レジスタ152は、ループ処理に含まれる終端命令のアドレス(以下、LEAと呼ぶ)を保持するレジスタである。LC(Loop Counter)レジスタ153は、残りループ回数を保持するレジスタである。LCレジスタ153の値は、1ループ終了の度にデクリメントされる。なお、LCレジスタ153を順次インクリメントし、所定数に到達したことによってループ終了を判定することも可能である。
ループ処理の制御に必要なLSA、LEA及びLCの値は、例えば、ループ命令のオペランドによって指定される。また、図示しない計算回路が、オペランドに含まれる情報(例えば、ループ命令アドレスからのオフセット値)に基づいてLSA及びLEAを計算してもよい。また、LSAは、ループ命令に引き続いて後続命令をデコードした結果に基づいて決定してもよい。例えば、ループ命令の後に位置する命令のうち、NOP(No Operation)命令を除く最初の命令のアドレスをLSAとすればよい。
ループ処理制御部16は、ループ命令に基づくループ処理の実行を制御する。より具体的に述べると、ループ処理制御部16は、プログラムカウンタ132に保持されたPC値とLEAとの比較、次ループ実行のためのプログラムカウンタ132の更新、LCレジスタ153のデクリメント、及び、LCレジスタ153の値に基づくループ終了判定を行なう。図1に示す比較器161は、PC値とLEAとを比較する回路である。また、比較器162は、LCレジスタ153の値をループ終了判定のための所定値(例えばゼロ)と比較する回路である。
続いて、ループ処理実行中の命令フェッチの停止制御を行うための構成要素であるLNFA計算回路171、LNFAレジスタ172、及び命令フェッチ制御部18について説明する。
LNFA計算回路171は、ループ終端命令アドレスLEAに基づいて、LNFA(Loop Next Fetch Address)を計算する。ここで、LNFAとは、ループ外の後続命令のアドレスであって、命令フェッチ制御部18による命令フェッチの停止制御に使用されるアドレスである。LNFAレジスタ172は、LNFA計算回路171によって計算されたLNFAを格納するレジスタである。
例えば、LNFA計算回路171は、命令メモリ10と命令バッファ12との間のデータバス幅を用いて、命令メモリ10から読み出されるループ終端命令を含むデータブロックの最終アドレスを計算すればよい。そして、LNFA計算回路171は、当該最終アドレス又はこれ以降のアドレスをLNFAとすればよい。このようにLNFAを計算する理由は、スーパースカラ構成や、VLIW(Very Long Instruction Word)アーキテクチャが採用されている場合には、命令メモリ10のライン幅及びデータバス幅が命令長の数倍とされ、命令メモリ10から複数の命令が同時にフェッチされるためである。言い換えると、ループ外の後続命令であっても、ループ終端命令と同時にフェッチされる場合があるためである。
命令フェッチ制御部18は、LNFAレジスタ172に保持されているフェッチアドレスとフェッチポインタ111の値とを比較し、フェッチアドレスがLNFA以上となる場合に、命令フェッチ部11による命令メモリ10へのフェッチアドレスの供給を停止させる。
なお、命令フェッチ制御部18は、命令実行部13がループ命令に基づくループ処理を実行している間に限り、命令フェッチの停止制御を行なう。ループ処理中であるか否かの判定には、ループ処理制御部16によるループ終了判定を利用すればよい。例えば、命令フェッチ制御部18は、比較器162の比較結果を利用すればよい。
続いて以下では、本実施の形態にかかる情報処理装置1による命令フェッチ停止制御の具体的な効果を簡単なプログラム例を用いて説明する。図2は、ループ命令を含むプログラム例である。ニーモニック"LOOP 16"で表される図2の1行目の命令は、ループ命令である。図2の例では、ループ命令の第1オペランドは、ループ回数を示す。
図2の2行目は、1行目のループ命令の遅延スロットに配置されたNOP命令である。
図2の4〜6行目の命令(INST1〜3)は、ループ内の命令である。つまり、INST1がループ先頭命令であり、INST3がループ終端命令である。
図2の3〜5行目の命令(INST4〜6)は、ループ外の命令である。
次に、情報処理装置1と従来の情報処理装置との命令フェッチ動作の違いについて、図3A及びBのパイプライン図を用いて説明する。図3Aは、情報処理装置1が図2に示したプログラム例を実行すると仮定した場合のパイプライン図である。一方、図3Bは、特許文献1に開示された従来の情報処理装置が図2に示したプログラム例を実行すると仮定した場合のパイプライン図である。図3A及びBは、9ステージのパイプラインを示している。具体的に述べると、IF1〜IF3の3ステージは、命令フェッチステージである。IF1〜IF3ステージでは、フェッチアドレスに対応する物理アドレスの生成、フェッチアドレス(物理アドレス)の命令メモリ10への転送、命令メモリ10から命令バッファ12への命令読み出し等が行なわれる。
DE1及びDE2は、命令デコードステージである。DE1及びDE2ステージでは、命令デコード部131による命令デコードが行なわれる。
ACは、レジスタアクセスステージであり、命令デコード部131によるレジスタファイル133のリードが行なわれる。
EX1〜EX3の3ステージは、実行ステージである。EX1〜EX3ステージでは、演算回路134による演算実行及びレジスタファイル133へのライトバックが行なわれる。また、実行命令がロード命令またはストア命令である場合、データメモリアクセス回路135によるデータメモリ14のアクセスが行なわれる。
図3A及びBの例では、C6サイクルにおいてループ終端命令(INST3)がデコードされる。したがって、分岐予測等の追加機構を設けない場合、早くてもC6サイクル、通常は図3A及びBに示すようにC7サイクルにおいて、次ループのためのループ先頭命令(INST1)のフェッチが行なわれる。
特許文献1に開示されているような従来の情報処理装置は、C6サイクルの時点で既にループ外の命令INST4〜6の命令フェッチが行なわれている(図3Bに斜線で示すステージ)。しかしながら、ループ処理の途中では、ループ終端命令INST3の次にループ先頭命令INST1に分岐する。したがって、命令INST4〜6のフェッチは無駄な動作である。
これに対して、本実施の形態にかかる情報処理装置1では、命令フェッチ制御部18がループ外の命令INST4〜6のフェッチを停止させる。したがって、図3Aに示すように、ループ外の命令INST4〜6のフェッチ動作は発生しない。
上述したように、本実施の形態にかかる情報処理装置1は、ループ処理が実行されている間、LNFA以降に対する命令フェッチを停止させるため、ループ外の後続命令に対する無駄な命令フェッチを抑制できる。
また、情報処理装置1は、フェッチポインタ111に保持されたフェッチアドレスとLNFAの比較結果に基づいて命令フェッチの停止制御を行うため、ループ終端命令のデコード結果を待つことなく、命令フェッチを速やかに停止可能である。
また、情報処理装置1は、命令メモリ10と命令バッファ12との間のデータバス幅を用いて、命令メモリ10から読み出されるループ終端命令を含むデータブロックの最終アドレスを計算し、この計算結果を用いてLNFAを決定する。このため、命令フェッチ部11によるループ処理命令の正常なフェッチを阻害することがない。
ところで、命令フェッチ制御部18は、命令実行部13がループ命令に基づくループ処理を実行している間に限り、命令フェッチの停止制御を行なうと説明した。しかしながら、命令フェッチ制御部18が命令フェッチの停止制御を開始するタイミングは、初回ループ処理の開始と一致していなくてもよい。なぜなら、命令フェッチの停止制御を開始可能なタイミングは、LEA及びLNFAの決定タイミングに依存するため、命令フェッチの停止制御は、必ずしも第1ループから実行しなくてもよい。
また、命令フェッチ制御部18が命令フェッチの停止制御の終了タイミングは、最終ループの終了と一致していなくてもよい。例えば、命令フェッチの停止制御の終了タイミングは、最終ループより1ループ前としてもよい。最終ループの終了後にはループ終端命令に引き続いてループ外命令を実行する必要がある。したがって、最終ループのためのループ終端命令の命令フェッチに続いてループ外命令の命令フェッチを速やかに行なうことによって、パイプラインストールの発生を回避できる。
<発明の実施の形態2>
上述した情報処理装置1は、ループ終端アドレスLEAを用いてLNFAを計算する構成について説明した。発明の実施の形態1で述べたLNFA計算回路171は、LNFAを正確に計算することが困難な場合がある。例えば、命令が可変長であるときや、命令メモリ10内の命令格納がワード境界及びライン境界に対して非整列である場合等は、LNFAを計算によって予測的に決定することが困難である。この場合、LNFA計算回路171は、LNFAを十分に余裕のある大きな値とすることで、ループ終端命令の正常なフェッチに対する妨害を避けることができる。しかしながら、いくつかのループ外命令の無駄なフェッチを許容しなければならない。これに対して、本実施の形態にかかる情報処理装置2は、ループ処理の実行結果を観測し、これに基づいてLNFAを決定する。以下では、情報処理装置1と情報処理装置2の差分であるLNFAの決定動作について詳しく説明する。
情報処理装置2の構成を図4に示す。図4において、LNFA決定回路271は、ループ命令に基づく少なくとも1回のループが実行された際に、命令メモリ10から読み出されたループ終端命令を含むデータブロックの最終アドレスを取得する。そして、LNFA決定回路271は、LNFAを当該最終アドレス以降に決定する。決定したLNFAは命令フェッチ制御部18に供給される。いち早くLNFAを決定するためには、LNFA決定回路271は、第1ループの実行結果に応じてLNFAを決定すればよい。
図5は、LNFA決定回路271の動作例を示すフローチャートである。ステップS11では、LNFA決定回路271が、命令デコード部131からループ終端命令アドレスLEAを取得する。ステップS12では、命令フェッチ部11による第1ループでのLEAの命令フェッチを観測する。ステップS13では、ループ終端命令を含むデータブロックの最終アドレスを命令フェッチ部11から取得する。ステップS14では、ステップS13で取得された最終アドレス以降のアドレスをLNFAに決定する。最後に、ステップS15では、決定したLNFAをLNFAレジスタ172に格納する。
上述したように、本実施の形態にかかる情報処理装置2は、少なくとも1回のループ処理が実行される際のループ終端命令のフェッチ動作を観測してLNFAを決定する。よって、情報処理装置2は、実測に基づく正確なLNFAを用いて命令フェッチ停止制御を行うことができる。このため、LNFAを計算によって予測的に決定することが困難な場合にも、ループ外の命令の無駄なフェッチを効率よく抑制できる。
<その他の実施の形態>
上述した情報処理装置2は、LNFAの決定が遅れるため、少なくとも1回のループに対しては、命令フェッチ停止制御を実行できない。これを改善するため、上述した情報処理装置1が有するLNFA計算回路171を情報処理装置2に追加してもよい。このような構成によって、例えば、第1ループでは、LNFA計算回路171によって計算されたLNFAを用いて命令フェッチ停止制御を実行できる。また、第2ループ以降では、LNFA決定回路271により決定されたLNFAを用いて命令フェッチ停止制御を実行できる。
また、ループ処理の過程でループ先頭に戻る際のループ先頭命令のフェッチを速やかに行なうために、上述した情報処理装置1及び2に、公知の分岐予測機構や、特開2005−284814公報に開示されているループ先頭命令の供給機構などを追加してもよい。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
発明の実施の形態1にかかる情報処理装置のブロック図である。 ループ命令を含むプログラム例を示す図である。 図1の情報処理装置による、ループ処理に関する命令群のパイプライン処理を示す図である。 従来の情報処理装置による、ループ処理に関する命令群のパイプライン処理を示す比較図である。 発明の実施の形態2にかかる情報処理装置のブロック図である。 発明の実施の形態2にかかる情報処理装置におけるLNFA決定手順を示すフローチャートである。
符号の説明
1、2 情報処理装置
10 命令メモリ
11 命令フェッチ部
111 フェッチポインタ
12 命令バッファ
13 命令実行部
131 命令デコード部
132 プログラムカウンタ
133 レジスタファイル
134 演算回路
135 データメモリアクセス回路
14 データメモリ
151 LSAレジスタ
152 LEAレジスタ
153 LCレジスタ
16 ループ処理制御部
161、162 比較器
171 LNFA計算回路
172 LNFAレジスタ
18 命令フェッチ制御部
181 比較器
271 LNFA決定回路

Claims (13)

  1. 命令メモリに対してフェッチアドレスを供給する命令フェッチ部と、
    前記フェッチアドレスで指定されるアドレスから読み出された命令を格納する命令バッファと、
    前記命令バッファから供給される命令をデコードして実行する命令実行部と、
    前記命令実行部がループ命令をデコードしたことに応じて前記ループ命令に基づくループ処理が実行されている間において、前記フェッチアドレスが前記ループ処理に含まれる終端命令のアドレスより後の第1のアドレス以降である場合に、前記命令フェッチ部による前記命令メモリへの前記フェッチアドレスの供給を停止させる命令フェッチ制御部と、
    を備える情報処理装置。
  2. 前記第1のアドレスは、前記終端命令をフェッチするための前記命令メモリへのアクセスによって前記命令メモリから読み出される、前記終端命令を含むデータブロックの最終アドレス以降である、請求項1に記載の情報処理装置。
  3. 前記命令メモリと前記情報処理装置との間のバス幅と前記終端命令のアドレスに基づいて、前記第1のアドレスを算出するアドレス計算回路をさらに備える、請求項1又は2に記載の情報処理装置。
  4. 前記第1のアドレスを決定するアドレス決定回路をさらに備え、
    前記アドレス決定回路は、前記ループ命令に基づく少なくとも1回のループが実行された際に前記命令メモリから読み出された前記終端命令を含むデータブロックの最終アドレスを取得し、前記第1のアドレスを前記最終アドレス以降に決定する、請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記命令フェッチ部は、前記フェッチアドレスが格納されるアドレスレジスタを備え、
    前記命令フェッチ制御部は、前記アドレスレジスタの値と前記第1のアドレスとの比較結果に基づいて、前記フェッチアドレスの供給を停止させる、請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記ループ処理の実行回数に応じてインクリメント又はデクリメントされるループカウンタをさらに備え、
    前記命令フェッチ制御部は、前記ループカウンタの値に基づいて、前記フェッチアドレスの供給停止制御の終了を判定する、請求項1乃至5のいずれか1項に記載の情報処理装置。
  7. 前記命令実行部によってデコードされた命令が前記ループ命令である場合に、前記ループ処理の実行を制御するループ処理制御部をさらに備え、
    前記命令フェッチ制御部は、前記ループ処理制御部による前記ループ処理の終了判定に応じて、前記フェッチアドレスの供給停止制御を終了する、請求項1乃至5のいずれか1項に記載の情報処理装置。
  8. 前記命令フェッチ制御部は、前記ループ処理の最終回に含まれる命令が前記命令実行部にて実行されている間に、前記フェッチアドレスの供給停止制御を終了する、請求項6又は7に記載の情報処理装置。
  9. 情報処理装置における命令フェッチの制御方法であって、
    ループ命令がデコードされたことに応じて前記ループ命令に基づくループ処理が実行されている間において、命令フェッチの対象命令のアドレスであるフェッチアドレスが前記ループ処理に含まれる終端命令のアドレスより後の第1のアドレス以降であるか否かを判定し、
    前記フェッチアドレスが前記第1のアドレス以降である場合に、命令メモリへの前記フェッチアドレスの供給を停止させる、
    命令フェッチの制御方法。
  10. 前記第1のアドレスは、前記終端命令をフェッチするための前記命令メモリへのアクセスによって、前記命令メモリから読み出される前記終端命令を含むデータブロックの最終アドレス以降である、請求項9に記載の方法。
  11. 前記命令メモリと前記情報処理装置との間のバス幅と前記終端命令のアドレスに基づいて、前記第1のアドレスを算出する、請求項9又は10に記載の方法。
  12. 前記ループ命令に基づく少なくとも1回のループが実行された際に前記命令メモリから読み出された前記終端命令を含むデータブロックの最終アドレスを取得し、前記第1のアドレスを前記最終アドレス以降に決定する、請求項9乃至11のいずれか1項に記載の方法。
  13. 前記ループ処理の最終回に含まれる命令が実行されている間に、前記フェッチアドレスの供給停止制御を終了する、請求項9乃至12のいずれか1項に記載の方法。
JP2008173410A 2008-07-02 2008-07-02 情報処理装置及び命令フェッチ制御方法 Expired - Fee Related JP5209390B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008173410A JP5209390B2 (ja) 2008-07-02 2008-07-02 情報処理装置及び命令フェッチ制御方法
US12/482,938 US8307195B2 (en) 2008-07-02 2009-06-11 Information processing device and method of controlling instruction fetch

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008173410A JP5209390B2 (ja) 2008-07-02 2008-07-02 情報処理装置及び命令フェッチ制御方法

Publications (2)

Publication Number Publication Date
JP2010015298A JP2010015298A (ja) 2010-01-21
JP5209390B2 true JP5209390B2 (ja) 2013-06-12

Family

ID=41465249

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008173410A Expired - Fee Related JP5209390B2 (ja) 2008-07-02 2008-07-02 情報処理装置及び命令フェッチ制御方法

Country Status (2)

Country Link
US (1) US8307195B2 (ja)
JP (1) JP5209390B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10346173B2 (en) 2011-03-07 2019-07-09 Oracle International Corporation Multi-threaded instruction buffer design
GB2501299A (en) 2012-04-19 2013-10-23 Ibm Analysing computer program instructions to determine if an instruction can be replaced with a trap or break point.
US20200133672A1 (en) * 2018-10-26 2020-04-30 Arizona Board Of Regents On Behalf Of Arizona State University Hybrid and efficient approach to accelerate complicated loops on coarse-grained reconfigurable arrays (cgra) accelerators

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4910664A (en) * 1987-11-27 1990-03-20 Mitsubishi Denki Kabushiki Kaisha Data processor with apparatus for reducing loop processing time
JP2977099B2 (ja) * 1990-12-20 1999-11-10 富士電機株式会社 演算処理装置
WO1998036351A1 (fr) * 1997-02-17 1998-08-20 Hitachi, Ltd. Processeur de donnees
JPH1185515A (ja) * 1997-09-10 1999-03-30 Ricoh Co Ltd マイクロプロセッサ
EP0992916A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
JP2000322257A (ja) * 1999-05-10 2000-11-24 Nec Corp 条件分岐命令の投機的実行制御方法
JP3698123B2 (ja) 2002-06-25 2005-09-21 セイコーエプソン株式会社 情報処理装置及び電子機器
JP4610218B2 (ja) 2004-03-30 2011-01-12 ルネサスエレクトロニクス株式会社 情報処理装置
JP2007207145A (ja) 2006-02-06 2007-08-16 Nec Electronics Corp ループ制御回路及びループ制御方法

Also Published As

Publication number Publication date
JP2010015298A (ja) 2010-01-21
US20100005276A1 (en) 2010-01-07
US8307195B2 (en) 2012-11-06

Similar Documents

Publication Publication Date Title
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
JP5815596B2 (ja) プロシージャリターンシーケンスを加速するための方法およびシステム
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
WO2015024452A1 (zh) 一种分支预测方法及相关装置
US20060259742A1 (en) Controlling out of order execution pipelines using pipeline skew parameters
JP2006318051A (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
US20230273797A1 (en) Processor with adaptive pipeline length
US7877578B2 (en) Processing apparatus for storing branch history information in predecode instruction cache
JP2000322257A (ja) 条件分岐命令の投機的実行制御方法
JP5209390B2 (ja) 情報処理装置及び命令フェッチ制御方法
JP2004145454A (ja) 情報処理装置及び情報処理方法
JP5902208B2 (ja) データ処理装置
JP2008071061A (ja) 情報処理装置
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JP5696210B2 (ja) プロセッサ及びその命令処理方法
JP2021168036A (ja) 演算処理装置
JP5440083B2 (ja) シミュレーション装置、方法およびプログラム
US20220308888A1 (en) Method for reducing lost cycles after branch misprediction in a multi-thread microprocessor
US20220308887A1 (en) Mitigation of branch misprediction penalty in a hardware multi-thread microprocessor
US11314505B2 (en) Arithmetic processing device
US20230315446A1 (en) Arithmetic processing apparatus and method for arithmetic processing
US20230205535A1 (en) Optimization of captured loops in a processor for optimizing loop replay performance
JP4151497B2 (ja) パイプライン処理装置
US20100153688A1 (en) Apparatus and method for data process
WO2022212220A1 (en) Mitigation of branch misprediction penalty in a hardware multi-thread microprocessor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110302

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130221

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160301

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5209390

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees