JP5692089B2 - プロセッサ、プロセッサによるループ回数制御方法 - Google Patents

プロセッサ、プロセッサによるループ回数制御方法 Download PDF

Info

Publication number
JP5692089B2
JP5692089B2 JP2011543167A JP2011543167A JP5692089B2 JP 5692089 B2 JP5692089 B2 JP 5692089B2 JP 2011543167 A JP2011543167 A JP 2011543167A JP 2011543167 A JP2011543167 A JP 2011543167A JP 5692089 B2 JP5692089 B2 JP 5692089B2
Authority
JP
Japan
Prior art keywords
loop
data
counter
instruction
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.)
Active
Application number
JP2011543167A
Other languages
English (en)
Other versions
JPWO2011065145A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2011543167A priority Critical patent/JP5692089B2/ja
Publication of JPWO2011065145A1 publication Critical patent/JPWO2011065145A1/ja
Application granted granted Critical
Publication of JP5692089B2 publication Critical patent/JP5692089B2/ja
Active 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/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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

Landscapes

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

Description

本発明は、ハードウエアループ機能を具備したプロセッサに関し、特に、ループ回数を制御するプロセッサに関する。
プロセッサにおいては、プログラムを構成する命令は、命令メモリに格納される。プログラムが、1つもしくは複数の命令を繰り返し使用する繰り返し構造を持つ場合、条件分岐命令を使用してループプログラムを作成することで、命令メモリの容量を削減することができる。但し、条件分岐命令を使用すると、ループ末尾からループ先頭(もしくはループ外)に戻るためのオーバヘッドが生じる。
特に、パイプラインプロセッサにおいては、条件分岐命令を使用する場合、すでにフェッチされたパイプライン内の命令が無効になり、分岐先の命令が新たにフェッチされるため、オーバヘッドが顕著になる。
このため、プロセッサは、一般的に、ループ命令を用いて、ループ先頭アドレス、ループ末尾アドレス、ループ回数をレジスタに設定し、ハードウエアでオーバヘッドなしにループ処理を管理し実行する機能を具備している。本機能は、ハードウエアループ機能、Zero overhead loop機能、Zero delay loop機能、ループ命令機能などと呼称される。なお、本明細書では、以降、特に断らないかぎり、これらを総称して、ハードウエアループ機能と呼称する。
図1に、関連する、ハードウエアループ機能を具備したプロセッサの構成を示す。本関連技術の詳細は、特許文献1および特許文献2に開示されている。
図1に示すように、関連技術のプロセッサ1002は、プログラムカウンタ100と、命令メモリ200と、命令デコーダ300と、演算部400と、データメモリ500と、ループカウンタ600と、ループ制御部700と、を有している。
プログラムカウンタ100は、発行する命令の命令アドレスを、命令メモリ200およびループ制御部700に通知する。プログラムカウンタ100は、通常、命令アドレスを順次インクリメントし、インクリメントした命令アドレスを通知していくが、演算部400もしくはループ制御部700により、後述する命令アドレスジャンプ先が設定された場合は、設定されたジャンプ先の命令アドレスを通知する。
命令メモリ200は、プログラムカウンタ100から通知された命令アドレスに従って命令をフェッチし、フェッチした命令を命令デコーダ300に発行する。
命令デコーダ300は、命令メモリ200により発行された命令をデコードし、デコードした命令を演算制御信号として演算部400へ通知する。また、命令デコーダ300は、ループ命令が発行された時は、ループ先頭アドレスおよびループ末尾アドレスをループ制御部700に設定する。
演算部400は、命令デコーダ300から通知された演算制御信号に従って、各種演算を行う。演算部400は、演算に必要なデータをデータメモリ500からロードして、内部に具備するレジスタファイルに格納し、そのデータを用いて演算を行う。また、演算部400は、演算結果をデータメモリ500に格納することもできる。また、演算部400は、ループ命令をデコードした演算制御信号が通知された時は、ループ回数をループカウンタ600へ設定する。また、演算部400は、条件分岐命令をデコードした演算制御信号が通知された時は、状態(例えば、レジスタファイル値や、DMAC(Data Memory Access Controller)3000から通知されるデータ転送完了通知信号)が演算制御信号で規定した条件に一致した場合、命令アドレスジャンプ先をプログラムカウンタ100へ設定し、プログラム進行を分岐することができる。
データメモリ500は、演算部400からのデータの格納および演算部400へのデータのロードを行う。また、データメモリ500とプロセッサ外部の外部メモリ4000間で、外部バス2000を介してデータ転送を行うことができる。データ転送は、DMAC3000で管理する。DMAC3000は、プロセッサ1002を含む外部装置から入力されたDMAC設定に基づいてデータ転送を管理する。
ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ先頭アドレスに一致した場合、ループカウンタ600へデクリメント信号を通知する。
ループカウンタ600は、演算部400により設定されたループ回数をループカウント値の初期値とし、ループ制御部700からデクリメント信号が通知される度に、ループカウント値を1デクリメントし、デクリメントしたループカウント値をループ制御部700に通知する。
ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ末尾アドレスと一致し、かつ、ループカウンタ600から通知されたループカウント値が0以外の場合、ループ先頭アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知する。
また、ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ末尾アドレスと一致し、かつ、ループカウンタ600から通知されたループカウント値が0の場合、ループ末尾アドレスの次の命令アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知する。
上述のように、上記関連技術では、ループ命令の発行前に、ループ回数が判明していて、ループ回数の情報を演算部400で保持しておく必要がある。
しかし、アプリケーションの中には、ループ回数がループ内処理データ量に依存し、外部メモリ4000からデータメモリ500に対し、ループ内処理データの転送が完了した後に、ループ内処理データ量の情報が転送されるものもある。
こうしたアプリケーションの場合、ループ内処理データとループ内処理データ量の情報とがデータメモリ500に転送された後に、ループ処理を開始する必要があるため、データメモリ500の容量の増大や処理遅延の増大を招く。
図2に、図1に示した関連技術のプロセッサ1002において、ループ内処理データの転送後に、ループ内処理データ量の情報が転送される場合の処理フローを示す。
図2に示すように、まず、外部メモリ4000からデータメモリ500に対し、ループ内処理データが転送され(ステップS101)、その後、ループ内処理データ量の情報が転送される(ステップS102)。
演算部400は、ループ内処理データ量の情報の転送完了を確認した後、ループ内処理データ量を基にループ回数を算出する(ステップS103)。なお、転送完了は、DMAC3000から通知されるデータ転送完了通知信号で確認することができる。
以降に、ループ命令が発行されると(ステップS104のYes)、演算部400により算出されたループ回数が、ループカウント値の初期値としてループカウンタ600に設定される。また、ループ先頭アドレスおよびループ末尾アドレスがループ制御部700に設定される(ステップS105)。
ループ命令の発行後は、命令アドレスがループ先頭アドレスに一致するまで、プログラムが進められる。
命令アドレスがループ先頭アドレスに一致すると(ステップS106のYes)、ループ制御部700は、デクリメント信号をループカウンタ600へ通知し、ループカウンタ600は、ループカウント値を1減らす(ステップS107)。その後、命令アドレスがループ末尾アドレスに達するまで、演算部400によるループ内処理が進められる(ステップS108)。
命令アドレスがループ末尾アドレスに一致すると(ステップS109のYes)、ループ制御部700は、ループ完了判定処理を行う。
ループカウント値が0以外の場合(ステップS110のNo)、ループ制御部700は、ループ処理は完了していないと判定し、ループ先頭アドレスを命令アドレスジャンプ先として、プログラムカウンタ100に通知する(ステップS111)。
一方、ループカウント値が0の場合(ステップS110のYes)、ループ制御部700は、ループ処理が完了したと判定し、ループ末尾アドレスの次の命令アドレスを命令アドレスジャンプ先として、プログラムカウンタ100に通知する(ステップS112)。
これにより、ループ内処理を、設定されたループ回数分だけ実行することができる。
特開平07−200292号公報 特開平09−237186号公報
上述のように、特許文献1および特許文献2に開示されたプロセッサにおいては、ループ命令の発行前に、ループ回数が判明していなければならない。
このため、ループ回数がループ内処理データ量に依存し、外部からループ内処理データがデータメモリに転送された後にループ内処理データ量が判明するアプリケーションの場合、ループ内処理データとループ内処理データ量の情報がデータメモリに格納された後に、ループ処理を開始するため、データメモリの容量の増大や処理遅延の増大を招くという課題がある。
本発明は、上記課題に鑑みてなされたものであって、データメモリの容量を低減し、かつ処理遅延を低減することができるプロセッサ、プロセッサによるループ回数制御方法を提供することを目的とする。
本発明のプロセッサは、
ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、0にリセットされるループカウンタと、
前記ループ内処理に用いるデータが、外部から転送されるデータメモリと、
前記データメモリに転送されたデータを用いて前記ループ内処理を実行する演算部と、
外部から前記データメモリに対して一定量のデータが転送される度に、前記ループカウンタを1インクリメントするデータカウンタと、
前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記演算部に対し、前記ループ内処理を実行させるループ制御部と、を有する。
本発明のループ回数制御方法は、
プロセッサによるループ回数制御方法であって、
ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、ループカウンタを0にリセットするステップと、
外部からデータメモリに対して、前記ループ内処理に用いるデータが一定量転送される度に、前記ループカウンタを1インクリメントするステップと、
前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記ループ内処理を実行するステップと、を有する。
本発明のプロセッサは、ループ命令が発行されると、ループカウンタを0にリセットし、ループ内処理に用いるデータがデータメモリに一定量転送される度に、ループカウンタをインクリメントし、ループカウンタのループカウント値が0でない場合に、ループカウンタをデクリメントしてループ内処理を実行する。
すなわち、本発明のプロセッサは、ループ回数を設定せずに、データメモリに転送されてきたデータのデータ量に応じて、ループ内処理を繰り返し実行する。
このため、ループ回数がループ内処理に用いるデータのデータ量に依存し、そのデータが外部からデータメモリに転送された後に、そのデータのデータ量が判明するアプリケーションの場合でも、データ転送開始直後からループ処理を開始できる。
よって、関連技術と比較して、データメモリの容量を低減し、かつ処理遅延を低減することができるという効果が得られる。
関連技術のプロセッサの構成を示すブロック図である。 関連技術のプロセッサの動作を説明するフローチャートである。 本発明の第1の実施形態のプロセッサの構成を示すブロック図である。 本発明の第1の実施形態のプロセッサの動作を説明するフローチャートである。 本発明の第2の実施形態のプロセッサの構成を示すブロック図である。
以下に、本発明を実施するための形態について図面を参照して説明する。
(第1の実施形態)
図3に、本発明の第1の実施形態のプロセッサの構成を示す。
図3に示すように、本実施形態のプロセッサ1000は、プログラムカウンタ100と、命令メモリ200と、命令デコーダ300と、演算部400と、データメモリ500と、ループカウンタ600と、ループ制御部700と、データカウンタ800と、を有している。
すなわち、本実施形態のプロセッサ1000は、図1の関連技術のプロセッサ1002と比較して、データカウンタ800が追加された点が異なり、それ以外の構成要素は同じである。
関連技術のプロセッサ1002では、ループカウンタ600に対し、演算部400からループ回数が設定されていた。これに対して、本実施形態のプロセッサ1000では、ループカウンタ600に対し、命令デコーダ300からループカウントリセットが設定される。また、ループ制御部700は、命令メモリ200に対し、強制NOP(No Operation)通知を行い、NOP命令を強制発行させることができる。
追加したデータカウンタ800は、外部バス2000に接続され、外部メモリ4000からデータメモリ500へのデータ転送をモニタし、ループ内処理データが一定量転送される度に、ループカウンタ600へインクリメント信号を通知する。このループカウンタ600をインクリメントするデータ単位を、インクリメントデータ単位と呼称する。インクリメントデータ単位は、命令デコーダ300から設定される。
プログラムカウンタ100は、発行する命令の命令アドレスを、命令メモリ200およびループ制御部700に通知する。プログラムカウンタ100は、通常、命令アドレスを順次インクリメントし、インクリメントした命令アドレスを通知していくが、演算部400もしくはループ制御部700により、後述する命令アドレスジャンプ先が設定された場合は、設定されたジャンプ先の命令アドレスを通知する。
命令メモリ200は、プログラムカウンタ100から通知された命令アドレスに従って命令をフェッチし、フェッチした命令を命令デコーダ300に発行する。但し、命令メモリ200は、ループ制御部700から強制NOP通知を受信した場合は、NOP命令を命令デコーダ300に発行する。
命令デコーダ300は、命令メモリ200により発行された命令をデコードし、デコードした命令を演算制御信号として演算部400へ通知する。また、命令デコーダ300は、ループ命令が発行された時は、ループ先頭アドレスおよびループ末尾アドレスをループ制御部700に設定するとともに、インクリメントデータ単位をデータカウンタ800に設定する。
演算部400は、命令デコーダ300から通知された演算制御信号に従って、各種演算を行う。演算部400は、演算に必要なデータをデータメモリ500からロードして、内部に具備するレジスタファイルに格納し、そのデータを用いて演算を行う。また、演算部400は、演算結果をデータメモリ500に格納することもできる。また、演算部400は、ループ命令をデコードした演算制御信号が通知された時は、ループ回数をループカウンタ600へ設定する。また、演算部400は、条件分岐命令をデコードした演算制御信号が通知された時は、状態(例えば、レジスタファイル値や、DMAC3000から通知されるデータ転送完了通知信号)が演算制御信号で規定した条件に一致した場合、命令アドレスジャンプ先をプログラムカウンタ100へ設定し、プログラム進行を分岐することができる。
データメモリ500は、演算部400からのデータの格納および演算部400へのデータのロードを行う。また、データメモリ500とプロセッサ外部の外部メモリ4000間で、外部バス2000を介してデータ転送を行うことができる。データ転送は、DMAC3000で管理する。DMAC3000は、プロセッサ1002を含む外部装置から入力されたDMAC設定に基づいてデータ転送を管理する。
ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ先頭アドレスに一致した場合、ループカウンタ600から通知されたループカウント値が0か否かを判定する。0の場合、ループ制御部700は、ループカウント値が1以上になるまで、ループ先頭アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知するとともに、命令メモリ200に強制NOP通知を行い、プログラム進行を停止する。一方、ループカウント値が1以上の場合、ループ制御部700は、ループカウンタ600へデクリメント信号を通知する。
データカウンタ800は、上述のように、外部バス2000に接続され、外部メモリ4000からデータメモリ500へのデータ転送をモニタし、インクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
ループカウンタ600は、命令デコーダ300からループカウンタリセットが設定されると、ループカウント値を0にリセットし、データカウンタ800からインクリメント信号が通知される度に、ループカウント値を1インクリメントし、ループ制御部700からデクリメント信号が通知される度に、ループカウント値を1デクリメントする。
ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ末尾アドレスと一致し、かつ、ループカウンタ600から通知されたループカウント値が0以外の場合、ループ先頭アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知する。
また、ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ末尾アドレスと一致し、かつ、ループカウンタ600から通知されたループカウント値が0の場合、ループ末尾アドレスの次の命令アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知する。
以下、本実施形態のプロセッサ1000の動作について説明する。
図4に、図3に示した本実施形態のプロセッサ1000の処理フローを示す。
図4に示すように、ループ命令が発行されると(ステップS201のYes)、ループカウンタ600にカウンタリセットが設定される。また、ループ先頭アドレスおよびループ末尾アドレスがループ制御部700に設定され、インクリメントデータ単位がデータカウンタ800に設定される(ステップS202)。
次に、外部メモリ4000からデータメモリ500へのループ内処理データの転送を開始する(ステップS203)。データカウンタ800は、インクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
ループ命令の発行およびデータ転送の開始後は、命令アドレスがループ先頭アドレスに一致するまで、プログラムが進められる。
命令アドレスがループ先頭アドレスに一致すると(ステップS204のYes)、ループ制御部700は、ループカウント値が0か否かを判定する(ステップS205)。
ループカウント値が0の場合(ステップS205のYes)、ループ制御部700は、ループカウント値が1以上になるまで、ループ先頭アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知するとともに(ステップS206)、命令メモリ200に強制NOP通知を行い、プログラム進行を停止する(ステップS207)。
一方、ループカウント値が1以上の場合(ステップS205のNo)、ループ制御部700は、ループカウンタ600へデクリメント信号を通知し、ループカウンタ600は、ループカウント値を1減らす(ステップS208)。
その後、命令アドレスがループ末尾アドレスに達するまで、演算部400によるループ内処理が進められる(ステップS209)。
命令アドレスがループ末尾アドレスに一致すると(ステップS210のYes)、ループ制御部700は、ループカウント値を基に、現時点までに転送されたループ内処理データ分の処理が終了したか判定を行う。
ループカウント値が0以外の場合は(ステップS211のNo)、ループ制御部700は、処理が完了していないと判定し、ループ先頭アドレスを命令アドレスジャンプ先として、プログラムカウンタ100に通知する(ステップS212)。
一方、ループカウント値が0の場合は(ステップS211のYes)、ループ制御部700は、処理が完了したと判定し、命令メモリ200は、条件分岐命令を発行し(ステップS213)、演算部400は、データ転送完了判定を行う(ステップS214)。転送完了は、DMAC3000から通知されるデータ転送完了通知信号で確認することができる。
データ転送が完了していない場合は(ステップS214のNo)、演算部400は、ループ先頭アドレスを命令アドレスジャンプ先として、プログラムカウンタ100に通知する(ステップS215)。
一方、データ転送が完了していた場合は(ステップS214のYes)、演算部400は、そのままプログラムを進める(ステップS216)。
これにより、全てのループ内処理データに対するループ内処理を実行することができる。
上述したように本実施形態では、ループ命令が発行されると、ループカウンタ600を0にリセットし、ループ内処理データがデータメモリ500に一定量転送される度に、ループカウンタ600を1インクリメントし、ループカウンタ600のループカウント値が0でない場合に、ループカウンタ600を1デクリメントしてループ内処理を実行する。
すなわち、本実施形態では、ループ回数を設定せずに、データメモリ600に転送されてきたループ内処理データのデータ量に応じて、ループ内処理を繰り返し実行する。
このため、ループ回数がループ内処理データ量に依存し、外部からループ内処理データがデータメモリに転送された後にループ内処理データ量が判明するアプリケーションの場合でも、データ転送開始直後から、ループ処理を開始できる。
よって、関連技術と比較して、データメモリ600の容量を低減し、かつ処理遅延を低減することができるという効果が得られる。
なお、本実施形態では、データ転送完了判定を、条件分岐命令を発行して、演算部400で行っているが、データ転送完了通知をループ制御部700に入力し、命令アドレスがループ末尾アドレスに一致したときに、ループ抜け条件に、データ転送完了判定結果を加えることも、もちろん可能である。
(第2の実施形態)
図5に、本発明の第2の実施形態のプロセッサの構成を示す。
図5に示すように、本実施形態のプロセッサ1001は、データカウンタ800に対し、命令デコーダ300からデータカウント条件を設定している点以外は、第1の実施形態の構成と同じである。
命令デコーダ300は、命令メモリ200からループ命令が発行された時は、ループ先頭アドレス、ループ末尾アドレスをループ制御部700に設定し、ループカウンタリセットをループカウンタ600へ設定し、データカウント条件およびインクリメントデータ単位をデータカウンタ800へ設定する。
データカウンタ800は、外部バス2000に接続され、外部メモリ4000からデータメモリ500へのデータ転送をモニタし、データカウント条件を満たすインクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
データカウント条件は、例えば、データの値の範囲を規定したものでも良い。この場合、データカウンタ800は、データカウント条件により規定された範囲内にある値のインクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
また、データカウント条件は、データメモリ500のアドレスの範囲を規定したものでも良い。この場合、データカウンタ800は、データカウント条件により規定された範囲内のアドレスにインクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されものでない。本発明の構成や詳細には、本発明の範囲内で当業者が理解し得る様々な変更をすることができる。
本出願は、2009年11月24日に出願された日本出願特願2009−266347を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (4)

  1. ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、0にリセットされるループカウンタと、
    前記ループ内処理に用いるデータが、外部から転送されるデータメモリと、
    前記データメモリに転送されたデータを用いて前記ループ内処理を実行する演算部と、
    外部から前記データメモリに対して一定量のデータが転送される度に、前記ループカウンタを1インクリメントするデータカウンタと、
    前記ループカウンタのループカウント値が0である場合は、該ループカウント値が1以上になるまで待ち合わせを行い、前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記演算部に対し、前記ループ内処理を実行させるループ制御部と、を有することを特徴とするプロセッサ。
  2. 前記データカウンタは、予めデータカウント条件が設定され、外部から前記データメモリに対して、前記データカウント条件を満たす一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項1に記載のプロセッサ。
  3. プロセッサによるループ回数制御方法であって、
    ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、ループカウンタを0にリセットするステップと、
    外部からデータメモリに対して、前記ループ内処理に用いるデータが一定量転送される度に、前記ループカウンタを1インクリメントするステップと、
    前記ループカウンタのループカウント値が0である場合は、該ループカウント値が1以上になるまで待ち合わせを行い、前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記ループ内処理を実行するステップと、を有することを特徴とするループ回数制御方法。
  4. 前記ループカウンタを1インクリメントするステップでは、外部から前記データメモリに対して、予め設定されたデータカウント条件を満たす一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項に記載のループ回数制御方法。
JP2011543167A 2009-11-24 2010-10-15 プロセッサ、プロセッサによるループ回数制御方法 Active JP5692089B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011543167A JP5692089B2 (ja) 2009-11-24 2010-10-15 プロセッサ、プロセッサによるループ回数制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009266347 2009-11-24
JP2009266347 2009-11-24
PCT/JP2010/068116 WO2011065145A1 (ja) 2009-11-24 2010-10-15 プロセッサ、プロセッサによるループ回数制御方法
JP2011543167A JP5692089B2 (ja) 2009-11-24 2010-10-15 プロセッサ、プロセッサによるループ回数制御方法

Publications (2)

Publication Number Publication Date
JPWO2011065145A1 JPWO2011065145A1 (ja) 2013-04-11
JP5692089B2 true JP5692089B2 (ja) 2015-04-01

Family

ID=44066250

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011543167A Active JP5692089B2 (ja) 2009-11-24 2010-10-15 プロセッサ、プロセッサによるループ回数制御方法

Country Status (3)

Country Link
US (1) US9286066B2 (ja)
JP (1) JP5692089B2 (ja)
WO (1) WO2011065145A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9459871B2 (en) * 2012-12-31 2016-10-04 Intel Corporation System of improved loop detection and execution
US9710272B2 (en) * 2014-04-25 2017-07-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Computer processor with generation renaming
US10209992B2 (en) 2014-04-25 2019-02-19 Avago Technologies International Sales Pte. Limited System and method for branch prediction using two branch history tables and presetting a global branch history register
GB2548603B (en) 2016-03-23 2018-09-26 Advanced Risc Mach Ltd Program loop control
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
CN108595210B (zh) * 2018-04-09 2021-12-10 杭州中天微系统有限公司 实现零开销循环的处理器
CN109739557B (zh) * 2019-01-08 2022-02-18 郑州云海信息技术有限公司 零开销循环装置及实现方法、系统、设备、计算机介质
US11182160B1 (en) * 2020-11-24 2021-11-23 Nxp Usa, Inc. Generating source and destination addresses for repeated accelerator instruction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5776650A (en) * 1980-10-31 1982-05-13 Fujitsu Ltd Loop counter control system
JPS60147841A (ja) * 1984-01-11 1985-08-03 Fujitsu Ltd ル−プ制御方式
JPH08314719A (ja) * 1995-05-12 1996-11-29 Matsushita Electric Ind Co Ltd プロセッサ及び翻訳装置
JPH09251437A (ja) * 1996-03-18 1997-09-22 Toshiba Corp 計算機装置及び連続データサーバ装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4885682A (en) * 1986-12-01 1989-12-05 Nec Corporation Microprogram controller for detecting the occurrence of an interrupt request or a termination of a string instruction
US5680600A (en) * 1989-10-13 1997-10-21 Texas Instruments Incorporated Electronic circuit for reducing controller memory requirements
JPH07200292A (ja) 1993-12-28 1995-08-04 Mitsubishi Electric Corp パイプライン式プロセッサ
JPH09237186A (ja) 1996-03-04 1997-09-09 Hitachi Ltd ループ制御装置およびプロセッサ
US5774711A (en) * 1996-03-29 1998-06-30 Integrated Device Technology, Inc. Apparatus and method for processing exceptions during execution of string instructions
US6035378A (en) * 1997-12-16 2000-03-07 Ncr Corporation Method and apparatus for dynamically monitoring memory page access frequency in a non-uniform memory access computer system
US6658552B1 (en) * 1998-10-23 2003-12-02 Micron Technology, Inc. Processing system with separate general purpose execution unit and data string manipulation unit
JP2001202236A (ja) * 2000-01-20 2001-07-27 Fuji Xerox Co Ltd プログラマブル論理回路装置によるデータ処理方法、プログラマブル論理回路装置、情報処理システム、プログラマブル論理回路装置への回路再構成方法
US6671799B1 (en) * 2000-08-31 2003-12-30 Stmicroelectronics, Inc. System and method for dynamically sizing hardware loops and executing nested loops in a digital signal processor
US7065636B2 (en) 2000-12-20 2006-06-20 Intel Corporation Hardware loops and pipeline system using advanced generation of loop parameters
JP2004021890A (ja) 2002-06-20 2004-01-22 Pacific Design Kk データ処理装置
JP2004070642A (ja) 2002-08-06 2004-03-04 Fujitsu Access Ltd 共有メモリを介してデータ転送を行う通信システム
US7366885B1 (en) * 2004-06-02 2008-04-29 Advanced Micro Devices, Inc. Method for optimizing loop control of microcoded instructions
US7937574B2 (en) * 2007-07-17 2011-05-03 Advanced Micro Devices, Inc. Precise counter hardware for microcode loops

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5776650A (en) * 1980-10-31 1982-05-13 Fujitsu Ltd Loop counter control system
JPS60147841A (ja) * 1984-01-11 1985-08-03 Fujitsu Ltd ル−プ制御方式
JPH08314719A (ja) * 1995-05-12 1996-11-29 Matsushita Electric Ind Co Ltd プロセッサ及び翻訳装置
JPH09251437A (ja) * 1996-03-18 1997-09-22 Toshiba Corp 計算機装置及び連続データサーバ装置

Also Published As

Publication number Publication date
US9286066B2 (en) 2016-03-15
JPWO2011065145A1 (ja) 2013-04-11
US20120226894A1 (en) 2012-09-06
WO2011065145A1 (ja) 2011-06-03

Similar Documents

Publication Publication Date Title
JP5692089B2 (ja) プロセッサ、プロセッサによるループ回数制御方法
JP6883564B2 (ja) 動的ベクトル長のループを用いたベクトル処理
TWI571744B (zh) 數位信號處理資料傳送技術
US20080141013A1 (en) Digital processor with control means for the execution of nested loops
KR20070080089A (ko) 재구성 어레이에서의 인터럽트 처리 방법 및 장치
WO2009113034A1 (en) Look-ahead task management
JP2008077294A (ja) マイクロプロセッサおよびそれを用いたマイクロコンピュータ
JP3749233B2 (ja) パイプラインでの命令実行方法及び装置
JP6900363B2 (ja) データ処理
JP2007207145A (ja) ループ制御回路及びループ制御方法
US20150058602A1 (en) Processor with adaptive pipeline length
JP2006146758A (ja) コンピュータシステム
JP5233078B2 (ja) プロセッサ及びその処理方法
JP2011108140A (ja) データ処理装置
US8701119B1 (en) Parsing XML in software on CPU with multiple execution units
JP2017016250A (ja) バリア同期装置、バリア同期方法及びプログラム
JP3602801B2 (ja) メモリデータアクセス構造およびその方法
JP2010015298A (ja) 情報処理装置及び命令フェッチ制御方法
JP5007860B2 (ja) ベクトル処理装置
JP6160571B2 (ja) データ処理装置
JP2014160393A (ja) マイクロプロセッサ及び演算処理方法
JP5541544B2 (ja) コンピュータ装置、データ転送方法、及びプログラム
JP4305400B2 (ja) マイクロコンピュータ
JP2011248454A (ja) プロセッサ装置及びプロセッサ装置の制御方法
JP6658123B2 (ja) 並列処理装置、並列処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130910

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141202

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: 20150106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150119

R150 Certificate of patent or registration of utility model

Ref document number: 5692089

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150