JP4526560B2 - プロセッサおよび信号処理方法 - Google Patents

プロセッサおよび信号処理方法 Download PDF

Info

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
Application number
JP2007314439A
Other languages
English (en)
Other versions
JP2009140137A (ja
Inventor
博之 水野
Original Assignee
日本テキサス・インスツルメンツ株式会社
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 日本テキサス・インスツルメンツ株式会社 filed Critical 日本テキサス・インスツルメンツ株式会社
Priority to JP2007314439A priority Critical patent/JP4526560B2/ja
Priority to US12/329,103 priority patent/US7886134B2/en
Publication of JP2009140137A publication Critical patent/JP2009140137A/ja
Application granted granted Critical
Publication of JP4526560B2 publication Critical patent/JP4526560B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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 or 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)

Description

本発明は、分岐予測機構およびループ支援機構に特徴を有するプロセッサおよび信号処理方法に関するものである。
例えば、複雑高度な命令セットを持つCISC(Complex Instruction Set Computer)型のDSP(Digital Signal Processor)がある。このようなDSPは、DSP処理に特有のプログラム中の繰り返し構造を支援するハードウェア資源を備えている。さらにこのハードウェア資源を操作する専用命令を備えていることもある。
例えば、フィルタ演算等をDSPに実行させる場合に、繰り返し処理がプログラムされることが多い。このようなプログラムを効率的に実行するには、分岐命令を使わずに繰り返しを実現するための専用のループ支援機構を持つことは有用である。
このようなループ支援機構を用いることで、「繰り返す」という動作(繰り返し回数をチェックし、未完了であればループの先頭へ分岐する動作)を自動化し、理想的にはサイクルペナルティなしにループ中の命令を実行することができる。
このようなDSPの内部にはループ支援機構が備えられ、プログラム中の繰り返し構造をその先頭・終端の命令のアドレスで回路中に表現・保持する。また、それら先頭・終端の命令のアドレスを保持するアドレスレジスタを初期化することでループ構造を宣言する専用命令を備えていることもある。
専用命令が命令実行部で実行されることで、ループ支援機構のアドレスレジスタが初期化される。ループの繰り返し回数は、別の命令を用いて事前に回数レジスタを初期化しておくことで指示する。
そして、ループ支援機構は、DSPがループを実行中であるとき、ループの繰り返しが間際なく行われるように、命令フェッチに干渉する。具体的には、ループ支援機構は、フェッチがループ終端に到達すると、次にフェッチすべき命令がある場所としてループ先頭アドレスを示す。この指示によりDSPは、その内部に、実行すべき命令をループ構造に沿って先行して用意することができる。これにより、サイクルペナルティなしの繰り返しのための必要条件が満たされる。このようなDSPは、例えば、可変長命令を採用しておりフェッチ幅が命令幅ではないなどといった理由のため、内部に命令キューを持つこともある。
特開2001−109627号公報
ところで、近年、DSPでは、DSP処理の割合を減少させ、制御コード(条件判断と分岐を主とするプログラムまたはルーチン)の処理の割合を増やした場合に適合するために、制御コード実行時の所要サイクルの低減を狙って新たに分岐予測機構を搭載することがある。
ところで、上述したようなCISC型のDSPでは、制御コードの処理の割合を増大させた場合の処理の効率化を図るために、ループ支援機構と分岐予測機構との双方を共存させたいという要請がある。
しかしながら、ループ支援機構と分岐予測機構は、いずれも命令フェッチに干渉するものであるため、単純に組み合わせただけでは両者が競合したときに最適な先行命令フェッチを行えない可能性があり、両者を調停してそのような事態を回避するための複雑な機構が必要になるという問題がある。
本発明はかかる事情に鑑みてなされたものであり、その目的は、ループ支援機構と分岐予測機構との双方を備えた場合に、プログラムの先行フェッチを最適に、且つ簡単な構成で処理することができるプロセッサおよび信号処理方法を提供することにある。
上述した従来技術の問題点を解決し、上述した目的を達成するために、第1の観点の発明のプロセッサは、命令を順次に取得する命令取得部と、前記命令取得部において取得された命令を実行する命令実行部と、前記命令実行部において分岐命令が実行されると、当該分岐命令による分岐の結果に関する分岐情報を記憶し、当該分岐情報に基づいて、前記命令取得部において分岐命令が取得された場合の分岐先を予測し、当該予測した分岐先から順次に命令を取得するように前記命令取得部を制御する分岐予測部と、前記命令実行部において命令群を繰り返し実行する場合、その最初の実行において、前記命令群の末尾の命令から先頭の命令へ分岐するためのループ開始用分岐を前記命令取得部に指示し、前記命令群の最後の実行において、前記命令群の末尾の命令から先頭の命令への分岐を無効にする制御を行うループ制御部とを有する。
第1の観点の発明のプロセッサでは、命令実行部がプログラム中の繰り返し構造(ループ)を実行するとき、ループ制御部は、その最初の周回(実行)において、当該ループの末尾の命令から先頭の命令へ分岐するためのループ形成制御(ループ開始用分岐)を前記命令取得部に指示し、同時に架空の分岐命令を前記命令実行部に与える。命令取得部がループ開始指示に従うことにより、プロセッサは前記ループの末尾の命令から先頭の命令へ分岐する。
そして、前記命令実行部は架空の分岐命令を認識すると、分岐動作そのものは行わないものの、一般の分岐命令と同様に、分岐命令が存在したことを前記分岐予測部に記憶させる。架空分岐命令は、分岐元のプログラムアドレスをループ末尾の命令アドレス、分岐先のアドレスをループ先頭の命令アドレスとしている。分岐予測部は、常時、前記命令実行部における分岐命令による分岐の結果に関する分岐情報を記憶し、当該分岐情報に基づいて、前記命令取得部において分岐命令が取得された場合の分岐先を予測し、当該予測した分岐先から順次に命令を取得するように前記命令取得部を制御している。分岐予測部は、架空の分岐命令によりループの存在を記憶することとなる。
これにより、繰り返し命令による繰り返し処理を、分岐予測部による分岐予測処理によって実現でき、繰り返し(ループ)支援機構と分岐予測機構との間の複雑な調停が不要になり、簡単な構成で実現が可能になる。
好適には、第1の観点の発明のプロセッサの前記ループ制御部は、前記命令群の最後の実行において、当該命令群の末尾の命令から前記命令群の次の命令へ分岐するためのループ終了用分岐を前記命令取得部に指示する。
これにより、ループ終了処理を実現できる。
好適には、第1の観点の発明のプロセッサの前記分岐予測部は、前記ループ終了用分岐情報の記憶を行わない。
これにより、同一のループを次に実行する際に、ループ形成用分岐制御を指示しなくても、分岐予測部による予測により、ループの末尾の命令から先頭の命令に自動的に分岐できる。
好適には、第1の観点の発明のプロセッサの前記ループ制御部は、前記命令群の最初の実行において、前記分岐予測部が繰り返し処理用の架空分岐命令による分岐を予測している場合、前記命令取得部への前記ループ開始用分岐の指示を行わない。
好適には、第1の観点の発明のプロセッサは、前記命令取得部によって取得された命令を前記命令実行部に供給するまで当該命令を保持する記憶部をさらに有し、前記ループ制御部は、前記ループ終了用分岐を前記命令取得部に指示する場合に、前記記憶部に記憶された命令のうち前記命令群内の命令の記憶を消去する。
第2の観点の発明の信号処理方法は、命令を命令取得部で順次に取得して当該命令を命令実行部で実行する信号処理方法であって、分岐命令が実行されると、当該分岐命令による分岐の結果に関する分岐情報を記憶する記憶工程と、前記記憶工程で記憶した前記分岐情報に基づいて分岐先を予測する予測工程と、前記予測工程で予測した分岐先から順次に命令を取得する取得工程と、前記命令実行部において命令群を繰り返し実行する場合、その最初の実行において、前記命令群の末尾の命令から先頭の命令へ分岐するためのループ開始用分岐を前記命令取得部に指示するループ開始制御工程と、前記命令群の繰り返し実行の最後の実行において、前記命令群の末尾の命令から先頭の命令への分岐を無効にする制御を行うループ終了工程とを有する。
第3の観点の発明のプロセッサは、メモリアクセスのためのプログラムカウンタを含む命令フェッチ部と、命令実行部と、ブロツクリピート命令に基づくブロックリピート動作(ブロックリピード命令が指示するループ(繰り返し動作))の実行を制御するループ制御部と、上記命令フェッチ部のプログラムカウンタのアドレス値を監視し、命令の分岐を予測したときに上記命令フェッチ部に分岐先アドレスを供給する分岐予測部とを有し、パイプライン処理により命令の実行を行なうプロセッサであって、上記ブロックリピート動作が最初に実行されるときに、上記分岐予測部に対して、上記ブロックリピート動作の対象の命令群の末尾のアドレスの命令が上記命令群の先頭のアドレスへの分岐命令であると学習させるステップと、上記ブロックリピート動作が2回目以降に実行されるときに、上記命令フェッチ部の上記プログラムカウンタのアドレス値が上記命令群の末尾のアドレスになると、上記分岐予測部が上記命令フェッチ部に対して、上記命令群の先頭のアドレスを分岐先のアドレスとして供給するステップとを実行する。
本発明によれば、ループ支援機構と分岐予測機構との双方を備えた場合に、簡単な構成で両者の統合が行われ、最適な先行命令フェッチを行うことができるプロセッサおよび信号処理方法を提供することができる。
<本発明の実施形態の関連技術>
以下、本発明の実施形態の関連技術について説明する。
図1は、当該関連技術に係るループ支援機構を備えたDSP101の構成図である。
図1に示すDSP101では、命令実行部119においてループ構造宣言命令(ブロックリピート命令)が実行されると、繰り返し構造(ループ)が認識される。これにより、ループ制御部123内のレジスタRSAに対してループのスタートアドレスSAが書き込まれ、レジスタREAに対してループのエンドアドレスEAが書き込まれ、レジスタBRAFに記憶されているブロックリピートアクティブフラグAFがアクティブを示す論理値「1」に書き換えられる。繰り返し回数(ループ回数)を初期値として示すブロックリピートカウント値BRCVは、レジスタBRCに対して事前に書き込んでおく。
ループ制御部123は、コントローラ149,249を備えており、繰り返し動作を少ないサイクルペナルティで実現するループ支援機構である。
コントローラ149は、フェッチプログラムカウンタPC−Fが指し示すアドレスとループのエンドアドレスEAとが一致したタイミングにおいて、ブロックリピートアクティブフラグAFがアクティブを示し、且つブロックリピートカウンタ値BRCVが非「0」であるという繰り返し条件を満たしているかを判定する。そして、コントローラ149は、上記繰り返し条件を満たしていると判定した場合に、命令フェッチ部113のセレクタ133にループのスタートアドレスSAを供給する。これにより、命令実行部119においてループ繰り返し条件を判断する前に、ブロック内のスタートアドレスSAの命令がメモリアクセス部137によってメモリ111からキュー115にフェッチされる。
なお、上述したフェッチプログラムカウンタPC−Fが指し示すアドレスと、ループのエンドアドレスEAとが一致/不一致のいずれかであるかの比較処理は、値の一致判定ではなく、エンドアドレスEAに存在する命令の末尾を含むフェッチが行われたか否かを判定する。例えば、「EA+最大命令長−1」のアドレス分のフェッチが行われたか否かを判定する。
コントローラ249は、ディスパッチプログラムカウンタPC−Dが指し示すアドレスとループ(ブロックリピート)のエンドアドレスEAとが一致したタイミングにおいて、ブロックリピートアクティブフラグAFがアクティブを示し、且つブロックリピートカウンタ値BRCVが「0」であるという繰り返し(ループ)終了条件を満たしているか否かを判定する。そして、コントローラ249は、上記繰り返し終了条件を満たしていると判定した場合に、キュー115およびディスパッチ部117に格納されたループ内の命令を破棄する。なお、ディスパッチプログラムカウンタPC−Dは、ディスパッチ部117から命令実行部119に出力される命令のアドレスを示している。
また、セレクタ133では、ループ制御部123からのスタートアドレスSAではなく、エンドアドレスEAに対してエンドアドレスにおける命令の長さが加算されたアドレスが選択される。これにより、メモリアクセス部137によって、ループに続く命令がキュー115にフェッチされ、ループから抜けることになる。
上述したように、DSP101では、ループ制御部123を備えることで、ループを少ないサイクルペナルティで実現できる。
図2は、当該関連技術に係る分岐予測機構を備えたDSP201の構成図である。
図2に示すDSP201では、分岐予測部221において、命令実行部219で実行した分岐命令を記憶する。そして、分岐予測部221は、フェッチプログラムカウンタPC−Fが指し示すアドレスを常時監視し、その履歴を基に分岐予測を行う。分岐予測部221は、当該分岐予測の結果に基づいて、セレクタ233の選択するアドレスを切り換える。
すなわち、分岐予測部221は、過去に命令実行部219が実行した分岐命令を記憶し、フェッチアドレスと、その記憶したアドレスとを常時比較し、命令実行部219が次に分岐命令を実行することを予測する。分岐予測部221は、分岐命令を予測した場合に、フェッチプログラムカウンタPC−Fが分岐先のアドレスを指し示すように制御する。
これにより、命令実行部219において分岐命令を実行する前に、分岐した場合に用いられる命令をフェッチしてキュー215に格納でき、分岐予測が当たった場合には、命令実行部219による分岐処理は行われずに、分岐レイテンシを抑えることができる。
一方、命令実行部219は、分岐予測が外れた場合、例えば、分岐をせずに次のアドレスの命令を実行することになった場合には、分岐予測によってキュー215およびディスパッチ部217に取り込まれた命令を消去すると共に、上記次のアドレスをフェッチプログラムカウンタPC−Fが指し示すように制御する。この場合には、次のアドレスの命令をメモリ11からフェッチしてキュー215およびディスパッチ部217を介して命令実行部219に投入する時間的なレイテンシが発生する。
なお、分岐予測が当たったか否かは、命令実行部219が分岐命令に対応する条件判定処理を行うことで判定される。
また、分岐予測部221が予測した分岐は、上述したようにフェッチプログラムカウンタPC−Fに反映されると同時に、キュー215中で専用のFIFO(First In First Out)に蓄えられる。当該FIFO内の予測情報は、ディスパッチ部217から命令実行部219に当該分岐命令が投入されるときに、当該命令と併せて渡される。命令実行部219では、命令の実行結果が予測と比較され、予測が誤りだったと判明した場合には、数サイクルのレイテンシ(値は命令に依存し、最小で5サイクル)を伴いながら明示的に分岐が実行される。
上述したように、DSP201では、分岐予測部221を備えることで、分岐命令を少ないサイクルペナルティで実行できる。
<本発明の実施形態>
以下、本発明の実施形態に係るDSPについて説明する。
本実施形態のDSPは、分岐予測機構とループ支援機構とを簡単な構成で併せ持つものである。
図3は、本発明の実施形態に係るDSP1の構成図である。
図3に示すように、DSP1は、例えば、メモリ11、命令フェッチ部13、命令キュー15、ディスパッチ部17、命令実行部19、分岐予測部21およびループ制御部23を有する。
ここで、命令フェッチ部13が本発明の命令取得部の一例であり、命令実行部19が本発明の命令実行部の一例である。また、分岐予測部21が本発明の分岐予測部の一例であり、ループ制御部23が本発明のループ制御部の一例である。尚、命令取得部に、命令キュー、ディスパッチ部が含まれる場合もある。
図3に示すように、DSP1は、分岐予測部21とループ制御部23との双方を備え、分岐予測とループ制御との統合を簡単な構成で実現する。
すなわち、DSP1では、命令実行部19がブロックリピート命令(ループ宣言命令)を実行した後、ディスパッチプログラムカウンタPC−Dがループ(ブロックリピート動作の対象の命令群)の最後の命令のアドレスを指し示したタイミング(当該最後の命令が命令実行部19に投入されるタイミング)で、ループ制御部23がループ先頭への分岐を命令フェッチ部13へ指示し、上記ループの先頭の命令に分岐させる。これにより、フェッチプログラムカウンタPC−Fが上記ループの先頭の命令のアドレスSAを指し示す。またループ制御部23は同時に、「架空の分岐命令(擬似分岐命令)」を命令実行部19に投入する。
そして、命令実行部19において、上記架空の分岐命令は、アドレスEAにあるループの最後の命令に付随していたように扱われ、アドレスSAにあるループの最初の命令に分岐したことが分岐予測部21に記憶される。
その後、分岐予測部21は、フェッチプログラムカウンタPC−Fが、次に上記ループの最後の命令のアドレスEAを指し示すと、分岐を予測して、セレクタ33を介して、上記ブロックの最初の命令のアドレスSAをフェッチプログラムカウンタPC−Fに指定させる。
このように、DSP1では、分岐予測およびループ支援のいずれもフェッチプログラムカウンタPC−Fへ働きかけるものであることを利用して、ループにおける最初の周回(実行)において架空の分岐命令を投入し、以後、分岐予測部21にループの末尾において先頭への分岐を予測させることで、ループ処理を分岐予測処理に吸収させる。これにより、分岐予測機構とループ支援機構との間で複雑な調停を行う必要がなくなり、簡単な構成で両者の統合を実現することが可能になる。
以下、図3に示す各構成要素について説明する。
[メモリ11]
メモリ11は、SRAM(static RAM)等のメモリであり、命令実行部19が実行するプログラムのオブジェクトコードを記憶する。当該コードには、複数の一群の命令(コード)を指定された回数繰り返し実行することを指示するブロックリピート命令(ループ構造宣言命令)が含まれている。
また、上記コードに含まれる命令は、可変長命令である。
[命令フェッチ部13]
命令フェッチ部13は、例えば、加算器31、セレクタ33、フェッチプログラムカウンタ35およびメモリアクセス部37を有する。
加算器31は、フェッチプログラムカウンタ35が指し示すアドレスに、所定のフェッチ幅を加算したアドレスADR31をセレクタ33に出力する。
セレクタ33は、加算器31からのアドレスADR31と、命令実行部19からのアドレスADR19と、分岐予測部21からのアドレスADR21と、ループ制御部23からのアドレスのなかから一つのアドレスを選択してフェッチプログラムカウンタPC−Fに出力する。
メモリアクセス部37は、メモリ11内のアドレスのうち、フェッチプログラムカウンタPC−Fが指し示すアドレスから、上記フェッチ幅を単位として命令をフェッチする(読み出す)。メモリアクセス部37は、上記読み出した命令をキュー15に出力する。
[キュー15]
キュー15は、メモリアクセス部37から入力した、連続した可変長の命令よりなる命令列から、ディスパッチ部17が命令を個別に取り出すまで、命令列を保持する。
すなわち、メモリアクセス部37から渡される(フェッチされる)単位が命令ではないため、キュー15を設けて命令をディスパッチ部17に出力するように調整を行う。キュー15は、FIFO形式で命令を入出力する。
[ディスパッチ部17]
ディスパッチ部17は、キュー15から入力した命令列中の先頭にある命令を認識し、その長さを調べ、命令実行部19に出力する。同時にその命令の長さをキュー15に渡し、次の命令を出力させるようにする。
DSP1では、上述したように、分岐予測部21の機能により、分岐条件やループ条件を判断せずに、分岐先あるいはループの先頭の命令を先行してキュー15にフェッチする。この場合に、ディスパッチ部17やループ制御部49において、分岐条件やループ条件が最終的に判定された後に、予測の正誤に応じて適切な命令をディスパッチして命令実行部19に投入することで、プログラムを正しく実行することができる。
ディスパッチ部17は、ディスパッチプログラムカウンタPC−Dを有し、命令実行部19に出力しようとしている命令のアドレスをループ制御部23に出力する。
[命令実行部19]
命令実行部19は、ディスパッチ部17から入力された命令をデコードし、デコード結果に基づいて処理を実行する。命令実行部19は、例えば、分岐用実行部と演算用実行部等が多重化されており、それぞれにおいて命令の実行が行なわれる。図3においては、簡略的に分岐用実行部のみを示している。
命令実行部19は、例えば、1サイクルに2命令を実行する構成を有し、2つのパイプラインを備えている。
命令実行部19は、一つのパイプラインの命令レジスタIRの後段にセレクタ51を配置している。セレクタ51は、通常は、ディスパッチ部17から命令レジスタIRに入力された命令を選択して後段のパイプラインに投入する。一方、セレクタ51は、ループ制御部23からの命令(後述する「架空の分岐命令」)を入力した場合には、これを選択して後段のパイプラインに投入する。
なお、命令実行部19は、ディスパッチ部17から入力した可変長の命令をデコードし、使用するデータのアドレス(実効アドレス)を計算する。そして、命令実行部19は、使用する整数データの読み出し動作を行う。そして、命令実行部19は、整数演算を行い、結果を出力する。
[分岐予測部21]
分岐予測部21は、命令実行部19において、実行された分岐命令のアドレスと、その分岐先のアドレスとを記憶する。
また、分岐予測部21は、フェッチプログラムカウンタPC−Fが指し示すアドレスを監視し、フェッチプログラムカウンタPC−Fのアドレスと記憶している分岐命令のアドレス及び分岐先のアドレスとを基に分岐予測を行う。具体的には、分岐予測部21は、フェッチプログラムカウンタPC−Fが、記憶されている過去に分岐を実行した分岐命令のアドレスを指し示した場合に、上記記憶されているアドレス等を参照して過去の分岐先のアドレスをフェッチプログラムカウンタPC−Fが指し示すようにセレクタ33を制御する。
これにより、命令実行部19において分岐命令を実行する前に、分岐した場合に用いられる命令をフェッチすることができ、分岐予測が当たった場合には、分岐先の命令は既にキュー15に格納されているため、命令実行部19による分岐処理は行われずに、分岐レイテンシを抑えることができる。
一方、分岐予測が外れた場合(分岐をせずに次のアドレスの命令を実行することになった場合)には、命令実行部19が、分岐予測によってキュー15およびディスパッチ部17に取り込まれた命令を消去すると共に、上記次のアドレスをフェッチプログラムカウンタPC−Fが指し示すように制御する。
このように分岐予測が外れた場合には、次のアドレスの命令をメモリ11からフェッチしてキュー15およびディスパッチ部17を介して命令実行部19に投入するまでの時間的なレイテンシが発生する。
なお、分岐予測が当たったか否かは、命令実行部19が分岐命令に対応する条件判定処理を行ない、与えられた分岐予測の情報と比較することで判定される。
ところで、ループ制御部23によって命令実行部19に「架空の分岐命令」が投入され、ループ制御部23からセレクタ33に、ループの先頭のアドレスSAが出力され、当該アドレスがフェッチプログラムカウンタPC−Fに設定された場合を考える。
この場合には、命令実行部19(分岐用実行部)は分岐予測部21に対して、アドレスEAにあるループの最後の命令があたかも分岐命令であったかのような挙動を示し、それにより分岐予測部21では、アドレスSAに対応するループの最初の命令に分岐したことが記憶される。
そして、分岐予測部21は、フェッチプログラムカウンタPC−Fが、次に上記ループの最後の命令のアドレスEAを指し示すと、分岐を予測して、セレクタ33を介して、上記ループの最初の命令のアドレスSAをフェッチプログラムカウンタPC−Fに指定させる。これにより、ループが分岐予測によって実現される。
[ループ制御部23]
ループ制御部23は、レジスタRSA,REA,BRC,BRAFおよび比較器41を有する。
レジスタRSAには、ループの先頭のアドレスSAが書き込まれる。
レジスタREAには、ループの末尾のアドレスEAが書き込まれる。
レジスタBRCには、ブロック繰り返しカウンタBRCVが書き込まれる。
レジスタBRAFには、ブロック繰り返しアクティブフラグAFが書き込まれる。
比較器41は、ディスパッチプログラムカウンタPC−Dが示す値と、レジスタREAから読み出されたループの末尾のアドレスEAとを比較し、一致していれば論理値「1」を示す比較値をコントローラ49に出力する。
コントローラ49は、レジスタRSAに記憶された繰り返し演算の先頭のアドレスSAと、比較器41からの比較値CVと、レジスタBRCに記憶されたブロック繰り返しカウンタ値BRCVと、レジスタBRAFに記憶されたブロック繰り返しアクティブフラグとAFに基づいて、ループ制御処理を行う。
具体的には、コントローラ49は、ブロックリピート命令(ループ宣言命令)実行開始後(アクティブフラグAFが論理値「0」から「1」に切り換った後)に、最初に比較値CVが論理値「0」から「1」に切り換ったタイミング(ループの最後の命令が命令実行部19に投入されるタイミング)で、ループを形成するため、フェッチプログラムカウンタPC−Fが上記ブロックの先頭の命令のアドレスSAを指し示すようにセレクタ33を制御する。換言すれば、アドレスSAを次のフェッチアドレスとして与える。また、ループの先頭アドレスSAに分岐することを示す「架空の分岐命令」を命令実行部19のセレクタ51に出力する。
命令実行部19は「架空の分岐命令」を実行したかのように振舞い、それが分岐予測部21によって学習される。これにより、フェッチプログラムカウンタPC−FがアドレスEAを次に指し示したときに、分岐予測部21によってアドレスSAへの分岐予測が自動的に行われる。そのため、ループ制御部23は、ループ実現のため、フェッチプログラムカウンタPC−Fを常時監視し、ブロックの末尾のアドレスEAから先頭のアドレスSAに戻すという機構を独自に持つ必要がない。
また、コントローラ49は、ループの最後の命令がディスパッチ部17から命令実行部19に出力されると、レジスタBRCに記憶されたブロックリピートカウンタ値BRCVを「1」だけデクリメントする。
コントローラ49は、比較値CVが論理値「0」から「1」に切り換ったタイミング(ループの最後の命令が命令実行部19に投入されたタイミング)で、ブロック繰り返しカウンタ値BRCVが「0」かつアクティブフラグAFが論理値「1」であるという非繰り返し条件(ループ終了条件)を満たしたか否かを判断する。コントローラ49は、ループのエンドアドレスEAよりスタートアドレスSAへの分岐が予測され、かつ上記終了条件が満たされたと判断すると、その予測を取り消すために、命令フェッチ部13に対し、上記ループの最後のアドレスEAの次のアドレスへ分岐するよう指示を出す。これにより、処理がループから抜ける。
また、コントローラ49は、上記非繰り返し条件を満たすと、キュー15およびディスパッチ部17に残っている上記ループに対応した命令を消去(リフレッシュ)する。
以下、図3に示すDSP1によるブロックリピート命令(ループ宣言命令)およびループの実行に係る動作例を説明する。
図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の動作例を説明するためのフローチャートである。
例えば、命令実行部19において、分岐命令以外の非制御命令が順次実行されている状態では、加算器31からのアドレスADR31がセレクタ33で選択され、フェッチプログラムカウンタPC−Fに設定される。
メモリアクセス部37は、フェッチプログラムカウンタPC−Fが指し示すアドレスを基にメモリ11にアクセスを行って、メモリ11から命令を読み出してキュー15に格納する。このとき、アドレスADR31は、フェッチ幅だけ順次加算した値になるため、メモリアクセス部37からフェッチ幅を単位として命令がキュー15に読み出される。
そして、ディスパッチ部17が、キュー15からFIFO方式で命令を読み出して命令実行部19の命令レジスタIRに格納する。
命令実行部19は、命令レジスタIRに格納された命令を実行する。
DSP1は、上述した動作により、フェッチプログラムカウンタPC−Fを基にメモリ11から読み出された命令を、キュー15およびディスパッチ部17を介して命令実行部19に供給して順に実行する。
そして、ディスパッチ部17から命令実行部19にブロックリピート命令BR(ループ宣言命令)が出力され、命令実行部19がブロックリピート命令BRを実行する(図5のステップST1)。
命令実行部19は、ブロックリピート命令BRを実行して繰り返し構造(ループ)を認識すると、ループ制御部23内のレジスタBRAFに格納されたブロックリピートアクティブフラグAFを論理値「1」に設定する。
また、命令実行部19は同時に、ループ制御部23内のレジスタRSAに対してループ(ブロックリピート動作の対象の一連の命令群)のスタートアドレスSAを書き込む。また、命令実行部19は、レジスタREAに対してループのエンドアドレスEAを書き込む(図5のステップST2)。
その後、ループ制御部23のコントローラ49は、ブロックリピート命令実行後(アクティブフラグAFが論理値「0」から「1」に切り換った後)に、最初に比較値CVが論理値「0」から「1」に切り換ったタイミング(ループの最後の命令が命令実行部19に投入されたタイミング)を検知すると(図5のステップST3)、ループの先頭アドレスSAに分岐することを命令フェッチ部13に指示する。
これにより、命令フェッチ部13ではセレクタ33によってループ制御部23が出力した先頭アドレスSAが選択されて、フェッチプログラムカウンタPC−Fが当該アドレスSAを指し示す[図4のタイミングC1]。
またループ制御部23のコントローラ49は、上記分岐指示と同時に、この分岐を分岐予測器21に学習させるために「架空の分岐命令」を命令実行部19のセレクタ51に出力する(図5のステップST4)。 当該架空分岐命令は、分岐予測部21によって学習される。
その後、セレクタ33はアドレスADR31を選択してフェッチプログラムカウンタPC−Fに出力し、メモリアクセス部37によって、ループ内の命令が順にフェッチされる。
そして、フェッチプログラムカウンタPC−Fがループの末尾のアドレスEAを次に指し示したときに、分岐予測部21によってアドレスSAへの分岐予測が自動的に行われる。すなわち、分岐予測部21からループの先頭のアドレスSAがセレクタ33に出力され、これが選択されてフェッチプログラムカウンタPC−Fに格納される。
これにより、フェッチプログラムカウンタPC−Fが、ループの末尾のアドレスEAに続いて、ループの先頭のアドレスSAを指し示す[図4のタイミングC3→C4]。
以後、フェッチプログラムカウンタPC−Fがループの末尾のアドレスEAを指し示す度に、分岐予測部21による分岐予測が機能して、アドレスEAに続いてアドレスSAを示すようにフェッチプログラムカウンタPC−Fが制御される。
これにより、ループのフェッチが、ループ制御部23による制御なしに、分岐予測部21による分岐予測により実現される(図5のステップST5)。
上述したループの実行において、ループ制御部23のコントローラ49は、ループの最後の命令がディスパッチ部17から命令実行部19に出力されると、レジスタBRCに記憶されたブロックリピートカウンタ値BRCVを「1」だけデクリメントする。
コントローラ49は、比較値CVが論理値「0」から「1」に切り換ったタイミング(ループの最後の命令が命令実行部19に投入されるタイミング)で、ブロック繰り返しカウンタ値BRCVが「0」かつアクティブフラグAFが論理値「1」であるという非繰り返し条件を満たしたか否かを常に判定する(図5のステップST6)。
そして、コントローラ49は、上記非繰り返し条件が満たされたがフェッチにおいては繰り返しが予測されていたと判断すると、ループ制御部23が命令フェッチ部13に上記ループの最後のアドレスEAの次のアドレスの命令Inextに分岐するよう指示を行う(図5のステップST7)[図4のタイミングC11]。
そして、メモリアクセス部37が、当該次のアドレスを基にメモリ11から命令Inextをフェッチしてキュー15に出力する。これにより、数サイクル遅れて、命令Inextが命令実行部19の命令レジスタIRに書き込まれて実行される。
また、コントローラ49は、上記繰り返し予測の取り消し動作を行ったとき、キュー15およびディスパッチ部17に残っている上記ループに対応した命令を消去(リフレッシュ)する。
また、本実施形態では、上述する繰り返し予測の取り消し動作を行ったとき、分岐予測部21において繰り返しのための分岐命令の記憶を取り除かない。これにより、ループの最後の命令に対応した「架空の分岐命令」の実行の記憶がそのまま分岐予測部21で有効になり、次に同一ループを再度実行するときに、ループの末尾のアドレスEAから先頭のアドレスSAに分岐するという予測がなされ、上記図5のステップST4の「ループ形成分岐」が不要になる。これにより、レイテンシをさらに短くできる。このとき、Nサイクルの本体をM回繰り返すようなループを、「M×N+5」サイクルで実現できる。ここで、5サイクルは、ループを抜けるための処理に伴うサイクルである。
以上説明したように、DSP1では、繰り返し演算を行う場合に、ループの最初の周回(実行)の最後の命令の位置で、ループの最初のアドレスSAに分岐する「架空の分岐命令」を発行し、それを分岐予測部21に学習させる。これにより、その後、ループ制御部23による制御を行うことなく、分岐予測部21の分岐予測により、ループの最後の命令をフェッチした直後にループの最初の命令を自動的にフェッチさせること(繰り返し処理)ができる。すなわち、DSP1によれば、ループ処理を分岐予測処理に吸収させることで、分岐予測機構とループ支援機構とを備えた場合でも、両機構の間で複雑な調停を行う必要がなく、簡単な構成で実現することが可能になる。
本発明は上述した実施形態には限定されない。
すなわち、当業者は、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
例えば、上述した実施形態では、分岐予測部21からループ形成のための分岐の記憶を取り除かない場合を例示したが、これを取り除くようにさせてもよい。この場合には、次にブロックリピート命令を実行する際に、図4および図5と同様に処理が行われる。また、プログラムの命令が可変長の場合を例に説明したが、命令が固定長であってもよい。
本発明は、分岐予測機構およびループ支援機構とを併用するシステムに適用可能である。
本発明の実施形態の関連技術に係るループ支援機構を備えたDSPの構成図である。 本発明の実施形態の関連技術に係る分岐予測機構を備えたDSPの構成図である。 本発明の実施形態に係るDSPの構成図である。 図3に示すDSPの動作例を説明するためのタイミングチャートであり、図4(A)はフェッチプログラムカウンタPC−Fが示すアドレスを示す図、図4(B)は命令実行部の命令レジスタIRに投入された命令を示す図、図4(C)はレジスタBRAFに格納されたブロック繰り返しアクティブフラグAFの状態を示す図、図4(D)はレジスタRSAに格納されたアドレスを示す図、図4(E)はレジスタREAに格納されたアドレスを示す図、図4(F)はレジスタBRCに格納されたブロック繰り返しカウンタBRCVの値を示す図である。 図1に示すDSP1の動作例を説明するためのフローチャートである。
符号の説明
1…DSP、11…メモリ、13…命令フェッチ部、15…キュー、17…ディスパッチ部、19…命令実行部、21…分岐予測部、31…加算器、33…セレクタ、37…メモリアクセス部、41…比較器、49…コントローラ、51…セレクタ、PC−F…フェッチプログラムカウンタ、PC−D…ディスパッチプログラムカウンタ

Claims (9)

  1. 命令を順次に取得する命令取得部と、
    前記命令取得部において取得された命令を実行する命令実行部と、
    前記命令実行部において分岐命令が実行されると、当該分岐命令による分岐の結果に関する分岐情報を記憶し、当該分岐情報に基づいて、前記命令取得部において分岐命令が取得された場合の分岐先を予測し、当該予測した分岐先から順次に命令を取得するように前記命令取得部を制御する分岐予測部と、
    前記命令実行部において分岐命令を用いずに一連の命令群を繰り返し実行する場合、その最初の実行において、前記一連の命令群の末尾の命令から先頭の命令へ分岐するためのループ開始用分岐を前記命令取得部に指示し、前記一連の命令群の最後の実行において、前記命令群の末尾の命令から先頭の命令へのループのための分岐を無効にする制御を行うループ制御部と、
    を有し、
    前記ループ制御部が、前記一連の命令群の最初の実行において前記ループ開始用分岐を前記命令取得部に指示するとき、前記命令実行部に対して前記一連の命令群の最後の命令に付随する分岐命令として扱われる擬似的な分岐命令を提供し、そして、前記分岐予測部が前記一連の命令群の最後の命令を分岐命令として記憶する、
    プロセッサ。
  2. 前記ループ制御部は、前記一連の命令群の最後の実行において、当該一連の命令群の末尾の命令から前記一連の命令群の次の命令へ分岐するためのループ終了用分岐を前記命令取得部に指示する、請求項1に記載のプロセッサ。
  3. 前記分岐予測部が、前記ループ終了用分岐の分岐情報の記憶を行わない、請求項2に記載のプロセッサ。
  4. 前記ループ制御部は、前記一連の命令群の最初の実行において、前記分岐予測部が繰り返し処理用の擬似的な分岐命令による分岐を予測している場合、前記命令取得部への前記ループ開始用分岐の指示を行わない、請求項1〜3の何れかに記載のプロセッサ。
  5. 前記命令取得部によって取得された命令を前記命令実行部に供給するまで当該命令を保持する記憶部をさらに有し、
    前記ループ制御部は、前記ループ終了用分岐を前記命令取得部に指示する場合に、前記記憶部に記憶された命令のうち前記一連の命令群内の命令の記憶を消去する、請求項2に記載のプロセッサ。
  6. 命令を命令取得部で順次に取得して当該命令を命令実行部で実行する信号処理方法であって、
    分岐命令が実行されると、当該分岐命令による分岐の結果に関する分岐情報を記憶する記憶工程と、
    前記記憶工程で記憶した前記分岐情報に基づいて分岐先を予測する予測工程と、
    前記予測工程で予測した分岐先から順次に命令を取得する取得工程と、
    前記命令実行部において分岐命令を用いずに一連の命令群を繰り返し実行する場合、その最初の実行において、前記一連の命令群の末尾の命令から先頭の命令へ分岐するためのループ開始用分岐を前記命令取得部に指示すると共に前記一連の命令群の末尾の命令を分岐命令として学習させるループ開始制御工程と、
    前記一連の命令群の繰り返し実行の最後の実行において、前記一連の命令群の末尾の命令から先頭の命令へのループのための分岐を無効にする制御を行うループ終了工程と、
    を有する信号処理方法。
  7. メモリアクセスのためのプログラムカウンタを含む命令フェッチ部と、命令実行部と、ブロックリピート命令に基づくブロックリピート動作の実行を制御するループ制御部と、上記命令フェッチ部のプログラムカウンタのアドレス値を監視し、命令の分岐を予測したときに上記命令フェッチ部に分岐先アドレスを供給する分岐予測部とを有し、パイプライン処理により命令の実行を行なうプロセッサにおいて、
    上記ブロックリピート動作が最初に実行されるときに、上記分岐予測部に対して、上記ブロックリピート動作の対象の命令群の末尾のアドレスの命令が上記命令群の先頭のアドレスへの分岐命令であると学習させるステップと、
    上記ブロックリピート動作が2回目以降に実行されるときに、上記命令フェッチ部の上記プログラムカウンタのアドレス値が上記命令群の末尾のアドレスになると、上記分岐予測部が上記命令フェッチ部に対して、上記命令群の先頭のアドレスを分岐先のアドレスとして供給するステップと、
    を実行するプロセッサ。
  8. 請求項7に記載のプロセッサにおいて、
    上記分岐予測部の上記学習のために、上記ループ制御部が上記命令実行部に対してブロックリピート動作の対象の命令群の末尾の命令に付随する分岐命令として扱われる擬似的な分岐命令を供給する、プロセッサ。
  9. 請求項7に記載のプロセッサにおいて、
    上記ブロックリピート動作の1回目の実行時において、上記ループ制御部が、上記命令フェッチ部に対して、上記命令群の末尾のアドレスの次のフィッチ先のアドレスとして、上記命令群の先頭のアドレスを供給すると共に、上記命令実行部に対してブロックリピート動作の対象の命令群の末尾の命令に付随する分岐命令として扱われる擬似的な分岐命令を供給する、プロセッサ。
JP2007314439A 2007-12-05 2007-12-05 プロセッサおよび信号処理方法 Active JP4526560B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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