JP4526560B2 - プロセッサおよび信号処理方法 - Google Patents
プロセッサおよび信号処理方法 Download PDFInfo
- Publication number
- JP4526560B2 JP4526560B2 JP2007314439A JP2007314439A JP4526560B2 JP 4526560 B2 JP4526560 B2 JP 4526560B2 JP 2007314439 A JP2007314439 A JP 2007314439A JP 2007314439 A JP2007314439 A JP 2007314439A JP 4526560 B2 JP4526560 B2 JP 4526560B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- unit
- loop
- address
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims description 8
- 230000003252 repetitive effect Effects 0.000 claims description 16
- 230000007246 mechanism Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 12
- 238000000034 method Methods 0.000 description 9
- 101000984753 Homo sapiens Serine/threonine-protein kinase B-raf Proteins 0.000 description 7
- 102100027103 Serine/threonine-protein kinase B-raf Human genes 0.000 description 7
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop 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)
Description
例えば、フィルタ演算等をDSPに実行させる場合に、繰り返し処理がプログラムされることが多い。このようなプログラムを効率的に実行するには、分岐命令を使わずに繰り返しを実現するための専用のループ支援機構を持つことは有用である。
このようなループ支援機構を用いることで、「繰り返す」という動作(繰り返し回数をチェックし、未完了であればループの先頭へ分岐する動作)を自動化し、理想的にはサイクルペナルティなしにループ中の命令を実行することができる。
このようなDSPの内部にはループ支援機構が備えられ、プログラム中の繰り返し構造をその先頭・終端の命令のアドレスで回路中に表現・保持する。また、それら先頭・終端の命令のアドレスを保持するアドレスレジスタを初期化することでループ構造を宣言する専用命令を備えていることもある。
そして、ループ支援機構は、DSPがループを実行中であるとき、ループの繰り返しが間際なく行われるように、命令フェッチに干渉する。具体的には、ループ支援機構は、フェッチがループ終端に到達すると、次にフェッチすべき命令がある場所としてループ先頭アドレスを示す。この指示によりDSPは、その内部に、実行すべき命令をループ構造に沿って先行して用意することができる。これにより、サイクルペナルティなしの繰り返しのための必要条件が満たされる。このようなDSPは、例えば、可変長命令を採用しておりフェッチ幅が命令幅ではないなどといった理由のため、内部に命令キューを持つこともある。
しかしながら、ループ支援機構と分岐予測機構は、いずれも命令フェッチに干渉するものであるため、単純に組み合わせただけでは両者が競合したときに最適な先行命令フェッチを行えない可能性があり、両者を調停してそのような事態を回避するための複雑な機構が必要になるという問題がある。
そして、前記命令実行部は架空の分岐命令を認識すると、分岐動作そのものは行わないものの、一般の分岐命令と同様に、分岐命令が存在したことを前記分岐予測部に記憶させる。架空分岐命令は、分岐元のプログラムアドレスをループ末尾の命令アドレス、分岐先のアドレスをループ先頭の命令アドレスとしている。分岐予測部は、常時、前記命令実行部における分岐命令による分岐の結果に関する分岐情報を記憶し、当該分岐情報に基づいて、前記命令取得部において分岐命令が取得された場合の分岐先を予測し、当該予測した分岐先から順次に命令を取得するように前記命令取得部を制御している。分岐予測部は、架空の分岐命令によりループの存在を記憶することとなる。
これにより、繰り返し命令による繰り返し処理を、分岐予測部による分岐予測処理によって実現でき、繰り返し(ループ)支援機構と分岐予測機構との間の複雑な調停が不要になり、簡単な構成で実現が可能になる。
これにより、ループ終了処理を実現できる。
これにより、同一のループを次に実行する際に、ループ形成用分岐制御を指示しなくても、分岐予測部による予測により、ループの末尾の命令から先頭の命令に自動的に分岐できる。
第3の観点の発明のプロセッサは、メモリアクセスのためのプログラムカウンタを含む命令フェッチ部と、命令実行部と、ブロツクリピート命令に基づくブロックリピート動作(ブロックリピード命令が指示するループ(繰り返し動作))の実行を制御するループ制御部と、上記命令フェッチ部のプログラムカウンタのアドレス値を監視し、命令の分岐を予測したときに上記命令フェッチ部に分岐先アドレスを供給する分岐予測部とを有し、パイプライン処理により命令の実行を行なうプロセッサであって、上記ブロックリピート動作が最初に実行されるときに、上記分岐予測部に対して、上記ブロックリピート動作の対象の命令群の末尾のアドレスの命令が上記命令群の先頭のアドレスへの分岐命令であると学習させるステップと、上記ブロックリピート動作が2回目以降に実行されるときに、上記命令フェッチ部の上記プログラムカウンタのアドレス値が上記命令群の末尾のアドレスになると、上記分岐予測部が上記命令フェッチ部に対して、上記命令群の先頭のアドレスを分岐先のアドレスとして供給するステップとを実行する。
以下、本発明の実施形態の関連技術について説明する。
図1は、当該関連技術に係るループ支援機構を備えたDSP101の構成図である。
図1に示すDSP101では、命令実行部119においてループ構造宣言命令(ブロックリピート命令)が実行されると、繰り返し構造(ループ)が認識される。これにより、ループ制御部123内のレジスタRSAに対してループのスタートアドレスSAが書き込まれ、レジスタREAに対してループのエンドアドレスEAが書き込まれ、レジスタBRAFに記憶されているブロックリピートアクティブフラグAFがアクティブを示す論理値「1」に書き換えられる。繰り返し回数(ループ回数)を初期値として示すブロックリピートカウント値BRCVは、レジスタBRCに対して事前に書き込んでおく。
コントローラ149は、フェッチプログラムカウンタPC−Fが指し示すアドレスとループのエンドアドレスEAとが一致したタイミングにおいて、ブロックリピートアクティブフラグAFがアクティブを示し、且つブロックリピートカウンタ値BRCVが非「0」であるという繰り返し条件を満たしているかを判定する。そして、コントローラ149は、上記繰り返し条件を満たしていると判定した場合に、命令フェッチ部113のセレクタ133にループのスタートアドレスSAを供給する。これにより、命令実行部119においてループ繰り返し条件を判断する前に、ブロック内のスタートアドレスSAの命令がメモリアクセス部137によってメモリ111からキュー115にフェッチされる。
なお、上述したフェッチプログラムカウンタPC−Fが指し示すアドレスと、ループのエンドアドレスEAとが一致/不一致のいずれかであるかの比較処理は、値の一致判定ではなく、エンドアドレスEAに存在する命令の末尾を含むフェッチが行われたか否かを判定する。例えば、「EA+最大命令長−1」のアドレス分のフェッチが行われたか否かを判定する。
また、セレクタ133では、ループ制御部123からのスタートアドレスSAではなく、エンドアドレスEAに対してエンドアドレスにおける命令の長さが加算されたアドレスが選択される。これにより、メモリアクセス部137によって、ループに続く命令がキュー115にフェッチされ、ループから抜けることになる。
図2に示すDSP201では、分岐予測部221において、命令実行部219で実行した分岐命令を記憶する。そして、分岐予測部221は、フェッチプログラムカウンタPC−Fが指し示すアドレスを常時監視し、その履歴を基に分岐予測を行う。分岐予測部221は、当該分岐予測の結果に基づいて、セレクタ233の選択するアドレスを切り換える。
すなわち、分岐予測部221は、過去に命令実行部219が実行した分岐命令を記憶し、フェッチアドレスと、その記憶したアドレスとを常時比較し、命令実行部219が次に分岐命令を実行することを予測する。分岐予測部221は、分岐命令を予測した場合に、フェッチプログラムカウンタPC−Fが分岐先のアドレスを指し示すように制御する。
一方、命令実行部219は、分岐予測が外れた場合、例えば、分岐をせずに次のアドレスの命令を実行することになった場合には、分岐予測によってキュー215およびディスパッチ部217に取り込まれた命令を消去すると共に、上記次のアドレスをフェッチプログラムカウンタPC−Fが指し示すように制御する。この場合には、次のアドレスの命令をメモリ11からフェッチしてキュー215およびディスパッチ部217を介して命令実行部219に投入する時間的なレイテンシが発生する。
なお、分岐予測が当たったか否かは、命令実行部219が分岐命令に対応する条件判定処理を行うことで判定される。
以下、本発明の実施形態に係るDSPについて説明する。
本実施形態のDSPは、分岐予測機構とループ支援機構とを簡単な構成で併せ持つものである。
図3は、本発明の実施形態に係るDSP1の構成図である。
図3に示すように、DSP1は、例えば、メモリ11、命令フェッチ部13、命令キュー15、ディスパッチ部17、命令実行部19、分岐予測部21およびループ制御部23を有する。
すなわち、DSP1では、命令実行部19がブロックリピート命令(ループ宣言命令)を実行した後、ディスパッチプログラムカウンタPC−Dがループ(ブロックリピート動作の対象の命令群)の最後の命令のアドレスを指し示したタイミング(当該最後の命令が命令実行部19に投入されるタイミング)で、ループ制御部23がループ先頭への分岐を命令フェッチ部13へ指示し、上記ループの先頭の命令に分岐させる。これにより、フェッチプログラムカウンタPC−Fが上記ループの先頭の命令のアドレスSAを指し示す。またループ制御部23は同時に、「架空の分岐命令(擬似分岐命令)」を命令実行部19に投入する。
その後、分岐予測部21は、フェッチプログラムカウンタPC−Fが、次に上記ループの最後の命令のアドレスEAを指し示すと、分岐を予測して、セレクタ33を介して、上記ブロックの最初の命令のアドレスSAをフェッチプログラムカウンタPC−Fに指定させる。
[メモリ11]
メモリ11は、SRAM(static RAM)等のメモリであり、命令実行部19が実行するプログラムのオブジェクトコードを記憶する。当該コードには、複数の一群の命令(コード)を指定された回数繰り返し実行することを指示するブロックリピート命令(ループ構造宣言命令)が含まれている。
また、上記コードに含まれる命令は、可変長命令である。
命令フェッチ部13は、例えば、加算器31、セレクタ33、フェッチプログラムカウンタ35およびメモリアクセス部37を有する。
加算器31は、フェッチプログラムカウンタ35が指し示すアドレスに、所定のフェッチ幅を加算したアドレスADR31をセレクタ33に出力する。
セレクタ33は、加算器31からのアドレスADR31と、命令実行部19からのアドレスADR19と、分岐予測部21からのアドレスADR21と、ループ制御部23からのアドレスのなかから一つのアドレスを選択してフェッチプログラムカウンタPC−Fに出力する。
キュー15は、メモリアクセス部37から入力した、連続した可変長の命令よりなる命令列から、ディスパッチ部17が命令を個別に取り出すまで、命令列を保持する。
すなわち、メモリアクセス部37から渡される(フェッチされる)単位が命令ではないため、キュー15を設けて命令をディスパッチ部17に出力するように調整を行う。キュー15は、FIFO形式で命令を入出力する。
ディスパッチ部17は、キュー15から入力した命令列中の先頭にある命令を認識し、その長さを調べ、命令実行部19に出力する。同時にその命令の長さをキュー15に渡し、次の命令を出力させるようにする。
DSP1では、上述したように、分岐予測部21の機能により、分岐条件やループ条件を判断せずに、分岐先あるいはループの先頭の命令を先行してキュー15にフェッチする。この場合に、ディスパッチ部17やループ制御部49において、分岐条件やループ条件が最終的に判定された後に、予測の正誤に応じて適切な命令をディスパッチして命令実行部19に投入することで、プログラムを正しく実行することができる。
ディスパッチ部17は、ディスパッチプログラムカウンタPC−Dを有し、命令実行部19に出力しようとしている命令のアドレスをループ制御部23に出力する。
命令実行部19は、ディスパッチ部17から入力された命令をデコードし、デコード結果に基づいて処理を実行する。命令実行部19は、例えば、分岐用実行部と演算用実行部等が多重化されており、それぞれにおいて命令の実行が行なわれる。図3においては、簡略的に分岐用実行部のみを示している。
命令実行部19は、例えば、1サイクルに2命令を実行する構成を有し、2つのパイプラインを備えている。
命令実行部19は、一つのパイプラインの命令レジスタIRの後段にセレクタ51を配置している。セレクタ51は、通常は、ディスパッチ部17から命令レジスタIRに入力された命令を選択して後段のパイプラインに投入する。一方、セレクタ51は、ループ制御部23からの命令(後述する「架空の分岐命令」)を入力した場合には、これを選択して後段のパイプラインに投入する。
分岐予測部21は、命令実行部19において、実行された分岐命令のアドレスと、その分岐先のアドレスとを記憶する。
また、分岐予測部21は、フェッチプログラムカウンタPC−Fが指し示すアドレスを監視し、フェッチプログラムカウンタPC−Fのアドレスと記憶している分岐命令のアドレス及び分岐先のアドレスとを基に分岐予測を行う。具体的には、分岐予測部21は、フェッチプログラムカウンタPC−Fが、記憶されている過去に分岐を実行した分岐命令のアドレスを指し示した場合に、上記記憶されているアドレス等を参照して過去の分岐先のアドレスをフェッチプログラムカウンタPC−Fが指し示すようにセレクタ33を制御する。
一方、分岐予測が外れた場合(分岐をせずに次のアドレスの命令を実行することになった場合)には、命令実行部19が、分岐予測によってキュー15およびディスパッチ部17に取り込まれた命令を消去すると共に、上記次のアドレスをフェッチプログラムカウンタPC−Fが指し示すように制御する。
このように分岐予測が外れた場合には、次のアドレスの命令をメモリ11からフェッチしてキュー15およびディスパッチ部17を介して命令実行部19に投入するまでの時間的なレイテンシが発生する。
なお、分岐予測が当たったか否かは、命令実行部19が分岐命令に対応する条件判定処理を行ない、与えられた分岐予測の情報と比較することで判定される。
この場合には、命令実行部19(分岐用実行部)は分岐予測部21に対して、アドレスEAにあるループの最後の命令があたかも分岐命令であったかのような挙動を示し、それにより分岐予測部21では、アドレスSAに対応するループの最初の命令に分岐したことが記憶される。
そして、分岐予測部21は、フェッチプログラムカウンタPC−Fが、次に上記ループの最後の命令のアドレスEAを指し示すと、分岐を予測して、セレクタ33を介して、上記ループの最初の命令のアドレスSAをフェッチプログラムカウンタPC−Fに指定させる。これにより、ループが分岐予測によって実現される。
ループ制御部23は、レジスタRSA,REA,BRC,BRAFおよび比較器41を有する。
レジスタRSAには、ループの先頭のアドレスSAが書き込まれる。
レジスタREAには、ループの末尾のアドレスEAが書き込まれる。
レジスタBRCには、ブロック繰り返しカウンタBRCVが書き込まれる。
レジスタBRAFには、ブロック繰り返しアクティブフラグAFが書き込まれる。
具体的には、コントローラ49は、ブロックリピート命令(ループ宣言命令)実行開始後(アクティブフラグAFが論理値「0」から「1」に切り換った後)に、最初に比較値CVが論理値「0」から「1」に切り換ったタイミング(ループの最後の命令が命令実行部19に投入されるタイミング)で、ループを形成するため、フェッチプログラムカウンタPC−Fが上記ブロックの先頭の命令のアドレスSAを指し示すようにセレクタ33を制御する。換言すれば、アドレスSAを次のフェッチアドレスとして与える。また、ループの先頭アドレスSAに分岐することを示す「架空の分岐命令」を命令実行部19のセレクタ51に出力する。
図4は、図3に示すDSP1の動作例を説明するためのタイミングチャートである。
図4(A)はフェッチプログラムカウンタPC−Fが示すアドレスを示す図、図4(B)は命令実行部19の命令レジスタIRに投入された命令を示す図、図4(C)はレジスタBRAFに格納されたブロック繰り返しアクティブフラグAFの状態を示す図、図4(D)はレジスタRSAに格納されたアドレスを示す図、図4(E)はレジスタREAに格納されたアドレスを示す図、図4(F)はレジスタBRCに格納されたブロック繰り返しカウンタBRCVの値を示す図である。
図4において、「I」は命令を示している。
図5は、図1に示すDSP1の動作例を説明するためのフローチャートである。
メモリアクセス部37は、フェッチプログラムカウンタPC−Fが指し示すアドレスを基にメモリ11にアクセスを行って、メモリ11から命令を読み出してキュー15に格納する。このとき、アドレスADR31は、フェッチ幅だけ順次加算した値になるため、メモリアクセス部37からフェッチ幅を単位として命令がキュー15に読み出される。
命令実行部19は、命令レジスタIRに格納された命令を実行する。
DSP1は、上述した動作により、フェッチプログラムカウンタPC−Fを基にメモリ11から読み出された命令を、キュー15およびディスパッチ部17を介して命令実行部19に供給して順に実行する。
命令実行部19は、ブロックリピート命令BRを実行して繰り返し構造(ループ)を認識すると、ループ制御部23内のレジスタBRAFに格納されたブロックリピートアクティブフラグAFを論理値「1」に設定する。
また、命令実行部19は同時に、ループ制御部23内のレジスタRSAに対してループ(ブロックリピート動作の対象の一連の命令群)のスタートアドレスSAを書き込む。また、命令実行部19は、レジスタREAに対してループのエンドアドレスEAを書き込む(図5のステップST2)。
これにより、命令フェッチ部13ではセレクタ33によってループ制御部23が出力した先頭アドレスSAが選択されて、フェッチプログラムカウンタPC−Fが当該アドレスSAを指し示す[図4のタイミングC1]。
そして、フェッチプログラムカウンタPC−Fがループの末尾のアドレスEAを次に指し示したときに、分岐予測部21によってアドレスSAへの分岐予測が自動的に行われる。すなわち、分岐予測部21からループの先頭のアドレスSAがセレクタ33に出力され、これが選択されてフェッチプログラムカウンタPC−Fに格納される。
これにより、フェッチプログラムカウンタPC−Fが、ループの末尾のアドレスEAに続いて、ループの先頭のアドレスSAを指し示す[図4のタイミングC3→C4]。
これにより、ループのフェッチが、ループ制御部23による制御なしに、分岐予測部21による分岐予測により実現される(図5のステップST5)。
そして、コントローラ49は、上記非繰り返し条件が満たされたがフェッチにおいては繰り返しが予測されていたと判断すると、ループ制御部23が命令フェッチ部13に上記ループの最後のアドレスEAの次のアドレスの命令Inextに分岐するよう指示を行う(図5のステップST7)[図4のタイミングC11]。
そして、メモリアクセス部37が、当該次のアドレスを基にメモリ11から命令Inextをフェッチしてキュー15に出力する。これにより、数サイクル遅れて、命令Inextが命令実行部19の命令レジスタIRに書き込まれて実行される。
すなわち、当業者は、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
Claims (9)
- 命令を順次に取得する命令取得部と、
前記命令取得部において取得された命令を実行する命令実行部と、
前記命令実行部において分岐命令が実行されると、当該分岐命令による分岐の結果に関する分岐情報を記憶し、当該分岐情報に基づいて、前記命令取得部において分岐命令が取得された場合の分岐先を予測し、当該予測した分岐先から順次に命令を取得するように前記命令取得部を制御する分岐予測部と、
前記命令実行部において分岐命令を用いずに一連の命令群を繰り返し実行する場合、その最初の実行において、前記一連の命令群の末尾の命令から先頭の命令へ分岐するためのループ開始用分岐を前記命令取得部に指示し、前記一連の命令群の最後の実行において、前記命令群の末尾の命令から先頭の命令へのループのための分岐を無効にする制御を行うループ制御部と、
を有し、
前記ループ制御部が、前記一連の命令群の最初の実行において前記ループ開始用分岐を前記命令取得部に指示するとき、前記命令実行部に対して前記一連の命令群の最後の命令に付随する分岐命令として扱われる擬似的な分岐命令を提供し、そして、前記分岐予測部が前記一連の命令群の最後の命令を分岐命令として記憶する、
プロセッサ。 - 前記ループ制御部は、前記一連の命令群の最後の実行において、当該一連の命令群の末尾の命令から前記一連の命令群の次の命令へ分岐するためのループ終了用分岐を前記命令取得部に指示する、請求項1に記載のプロセッサ。
- 前記分岐予測部が、前記ループ終了用分岐の分岐情報の記憶を行わない、請求項2に記載のプロセッサ。
- 前記ループ制御部は、前記一連の命令群の最初の実行において、前記分岐予測部が繰り返し処理用の擬似的な分岐命令による分岐を予測している場合、前記命令取得部への前記ループ開始用分岐の指示を行わない、請求項1〜3の何れかに記載のプロセッサ。
- 前記命令取得部によって取得された命令を前記命令実行部に供給するまで当該命令を保持する記憶部をさらに有し、
前記ループ制御部は、前記ループ終了用分岐を前記命令取得部に指示する場合に、前記記憶部に記憶された命令のうち前記一連の命令群内の命令の記憶を消去する、請求項2に記載のプロセッサ。 - 命令を命令取得部で順次に取得して当該命令を命令実行部で実行する信号処理方法であって、
分岐命令が実行されると、当該分岐命令による分岐の結果に関する分岐情報を記憶する記憶工程と、
前記記憶工程で記憶した前記分岐情報に基づいて分岐先を予測する予測工程と、
前記予測工程で予測した分岐先から順次に命令を取得する取得工程と、
前記命令実行部において分岐命令を用いずに一連の命令群を繰り返し実行する場合、その最初の実行において、前記一連の命令群の末尾の命令から先頭の命令へ分岐するためのループ開始用分岐を前記命令取得部に指示すると共に前記一連の命令群の末尾の命令を分岐命令として学習させるループ開始制御工程と、
前記一連の命令群の繰り返し実行の最後の実行において、前記一連の命令群の末尾の命令から先頭の命令へのループのための分岐を無効にする制御を行うループ終了工程と、
を有する信号処理方法。 - メモリアクセスのためのプログラムカウンタを含む命令フェッチ部と、命令実行部と、ブロックリピート命令に基づくブロックリピート動作の実行を制御するループ制御部と、上記命令フェッチ部のプログラムカウンタのアドレス値を監視し、命令の分岐を予測したときに上記命令フェッチ部に分岐先アドレスを供給する分岐予測部とを有し、パイプライン処理により命令の実行を行なうプロセッサにおいて、
上記ブロックリピート動作が最初に実行されるときに、上記分岐予測部に対して、上記ブロックリピート動作の対象の命令群の末尾のアドレスの命令が上記命令群の先頭のアドレスへの分岐命令であると学習させるステップと、
上記ブロックリピート動作が2回目以降に実行されるときに、上記命令フェッチ部の上記プログラムカウンタのアドレス値が上記命令群の末尾のアドレスになると、上記分岐予測部が上記命令フェッチ部に対して、上記命令群の先頭のアドレスを分岐先のアドレスとして供給するステップと、
を実行するプロセッサ。 - 請求項7に記載のプロセッサにおいて、
上記分岐予測部の上記学習のために、上記ループ制御部が上記命令実行部に対してブロックリピート動作の対象の命令群の末尾の命令に付随する分岐命令として扱われる擬似的な分岐命令を供給する、プロセッサ。 - 請求項7に記載のプロセッサにおいて、
上記ブロックリピート動作の1回目の実行時において、上記ループ制御部が、上記命令フェッチ部に対して、上記命令群の末尾のアドレスの次のフィッチ先のアドレスとして、上記命令群の先頭のアドレスを供給すると共に、上記命令実行部に対してブロックリピート動作の対象の命令群の末尾の命令に付随する分岐命令として扱われる擬似的な分岐命令を供給する、プロセッサ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007314439A JP4526560B2 (ja) | 2007-12-05 | 2007-12-05 | プロセッサおよび信号処理方法 |
US12/329,103 US7886134B2 (en) | 2007-12-05 | 2008-12-05 | Loop iteration prediction by supplying pseudo branch instruction for execution at first iteration and storing history information in branch prediction unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007314439A JP4526560B2 (ja) | 2007-12-05 | 2007-12-05 | プロセッサおよび信号処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009140137A JP2009140137A (ja) | 2009-06-25 |
JP4526560B2 true JP4526560B2 (ja) | 2010-08-18 |
Family
ID=40722888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007314439A Active JP4526560B2 (ja) | 2007-12-05 | 2007-12-05 | プロセッサおよび信号処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7886134B2 (ja) |
JP (1) | JP4526560B2 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7987347B2 (en) * | 2006-12-22 | 2011-07-26 | Broadcom Corporation | System and method for implementing a zero overhead loop |
US7991985B2 (en) * | 2006-12-22 | 2011-08-02 | Broadcom Corporation | System and method for implementing and utilizing a zero overhead loop |
US9367471B2 (en) | 2012-09-10 | 2016-06-14 | Apple Inc. | Fetch width predictor |
US9280344B2 (en) * | 2012-09-27 | 2016-03-08 | Texas Instruments Incorporated | Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination |
US9459871B2 (en) * | 2012-12-31 | 2016-10-04 | Intel Corporation | System of improved loop detection and execution |
US20140215185A1 (en) * | 2013-01-29 | 2014-07-31 | Atmel Norway | Fetching instructions of a loop routine |
US9798542B2 (en) * | 2014-04-25 | 2017-10-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Zero overhead looping by a decoder generating and enqueuing a branch instruction |
GB2548604B (en) | 2016-03-23 | 2018-03-21 | Advanced Risc Mach Ltd | Branch instruction |
GB2548602B (en) * | 2016-03-23 | 2019-10-23 | Advanced Risc Mach Ltd | Program loop control |
GB2548603B (en) | 2016-03-23 | 2018-09-26 | Advanced Risc Mach Ltd | Program loop control |
US11216279B2 (en) * | 2018-11-26 | 2022-01-04 | Advanced Micro Devices, Inc. | Loop exit predictor |
CN118171711B (zh) * | 2024-05-15 | 2024-07-19 | 上海为旌科技有限公司 | 一种指令调度方法、系统、存储介质和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0338726A (ja) * | 1989-07-06 | 1991-02-19 | Oki Electric Ind Co Ltd | 分岐命令処理装置 |
JPH04264923A (ja) * | 1991-02-20 | 1992-09-21 | Nec Corp | 情報処理装置 |
US6003128A (en) * | 1997-05-01 | 1999-12-14 | Advanced Micro Devices, Inc. | Number of pipeline stages and loop length related counter differential based end-loop prediction |
JP2001109627A (ja) * | 1999-10-08 | 2001-04-20 | Texas Instr Japan Ltd | プロセッサ |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5949995A (en) * | 1996-08-02 | 1999-09-07 | Freeman; Jackie Andrew | Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code |
US6282633B1 (en) * | 1998-11-13 | 2001-08-28 | Tensilica, Inc. | High data density RISC processor |
US20050102659A1 (en) * | 2003-11-06 | 2005-05-12 | Singh Ravi P. | Methods and apparatus for setting up hardware loops in a deeply pipelined processor |
US7272704B1 (en) * | 2004-05-13 | 2007-09-18 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | Hardware looping mechanism and method for efficient execution of discontinuity instructions |
-
2007
- 2007-12-05 JP JP2007314439A patent/JP4526560B2/ja active Active
-
2008
- 2008-12-05 US US12/329,103 patent/US7886134B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0338726A (ja) * | 1989-07-06 | 1991-02-19 | Oki Electric Ind Co Ltd | 分岐命令処理装置 |
JPH04264923A (ja) * | 1991-02-20 | 1992-09-21 | Nec Corp | 情報処理装置 |
US6003128A (en) * | 1997-05-01 | 1999-12-14 | Advanced Micro Devices, Inc. | Number of pipeline stages and loop length related counter differential based end-loop prediction |
JP2001109627A (ja) * | 1999-10-08 | 2001-04-20 | Texas Instr Japan Ltd | プロセッサ |
Also Published As
Publication number | Publication date |
---|---|
US7886134B2 (en) | 2011-02-08 |
US20090150658A1 (en) | 2009-06-11 |
JP2009140137A (ja) | 2009-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4526560B2 (ja) | プロセッサおよび信号処理方法 | |
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
KR101827747B1 (ko) | 동일한 데이터 조건에 의존하는 인접 명령의 실행 제어 | |
JP6660991B2 (ja) | マルチスレッドプロセッサでのタスクのスケジューリング | |
KR102102166B1 (ko) | 심드 구조 기반의 쓰레드 분기 관리 장치 및 방법 | |
JP2011086298A (ja) | プログラム・フロー制御 | |
JP3977931B2 (ja) | データプロセッサにおける条件分岐実行を制御するための方法および装置 | |
EP1853995A2 (en) | Method and apparatus for managing a return stack | |
JP4134179B2 (ja) | ソフトウエアによる動的予測方法および装置 | |
JP2005504390A (ja) | ジャバハードウェアアクセラレータ用の投機的実行 | |
JP5128382B2 (ja) | 複数のロード命令を実行するための方法および装置 | |
CN106843816A (zh) | 一种分支预测控制方法及装置 | |
JP7510253B2 (ja) | 分岐予測器 | |
JP5209390B2 (ja) | 情報処理装置及び命令フェッチ制御方法 | |
JP2008071061A (ja) | 情報処理装置 | |
KR20120036210A (ko) | 파이프라인 제어 위험 감소를 위한 처리장치 및 컴파일 장치와, 파이프라인 제어 위험 감소를 위한 동적 조건 분기 처리 방법 | |
US9983932B2 (en) | Pipeline processor and an equal model compensator method and apparatus to store the processing result | |
US8266414B2 (en) | Method for executing an instruction loop and a device having instruction loop execution capabilities | |
CN111782272B (zh) | 一种vliw处理器中重复程序的执行控制方法及装置 | |
US9207922B2 (en) | Compiling method and apparatus for scheduling block in pipeline | |
CN111782273B (zh) | 一种提高重复程序执行性能的软硬件协同缓存装置 | |
JP5511299B2 (ja) | データ演算装置の制御回路及びデータ演算装置 | |
US7389407B1 (en) | Central control system and method for using state information to model inflight pipelined instructions | |
JP5679263B2 (ja) | 情報処理装置及びマイクロ命令処理方法 | |
JPH08171491A (ja) | ディスパッチされた制御転送命令状態に基づきより高速で命令を先取りするための方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20090924 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091201 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100122 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100511 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100511 |
|
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: 20100601 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100601 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130611 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4526560 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |