JP4647307B2 - スケーラブルプロセッサにおける自動タスク分散 - Google Patents

スケーラブルプロセッサにおける自動タスク分散 Download PDF

Info

Publication number
JP4647307B2
JP4647307B2 JP2004500179A JP2004500179A JP4647307B2 JP 4647307 B2 JP4647307 B2 JP 4647307B2 JP 2004500179 A JP2004500179 A JP 2004500179A JP 2004500179 A JP2004500179 A JP 2004500179A JP 4647307 B2 JP4647307 B2 JP 4647307B2
Authority
JP
Japan
Prior art keywords
subsequence
processing
instruction
instructions
available
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 - Lifetime
Application number
JP2004500179A
Other languages
English (en)
Other versions
JP2005524143A (ja
JP2005524143A5 (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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Koninklijke Philips Electronics NV
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 Koninklijke Philips NV, Koninklijke Philips Electronics NV filed Critical Koninklijke Philips NV
Publication of JP2005524143A publication Critical patent/JP2005524143A/ja
Publication of JP2005524143A5 publication Critical patent/JP2005524143A5/ja
Application granted granted Critical
Publication of JP4647307B2 publication Critical patent/JP4647307B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Power Sources (AREA)

Description

本発明は、命令(instruction)のシーケンスに基づいて情報を処理するための装置及び方法に関し、特にスケーラブルディジタル信号プロセッサ(scalable digital signal processor)でリソース(resource)を処理することをスケジューリングする方法に関する。
ディジタル信号プロセッサ(DSP)は、厳格にリアルタイムで処理するという制約(hard realtime constraint)でタスク(task)を実行するように設計される。それ故に演算電力(computing power)が重視される。演算電力を決定するいくつかの要因(ファクタ)が存在する。好ましくは最も明らかな要因はクロック周波数であるが、必ずしも唯一の要因ではない。他の重要な要因は、オペレーション(すなわち命令セット)の表現電力(expressive power)、オペレーションを実行するために必要とされるクロックサイクルの数、並列に実行され得るオペレーションの数、連続オペレーションの間のパイプラインの量、及び分岐(branch)が実行されるときの無駄なクロックサイクルに関する犠牲(ペナルティ(penalty))等である。
DSPプロセッサにおいて、性能を向上させるための基本概念は命令レベルの並列処理(parallelism)を使用することにある。本願において、単一のクロックサイクルでプロセッサコアに供給される完全なプログラム情報として命令が参照されるであろう。従って単一の命令が、同じクロックサイクルにおける並列のいくつかのオペレーションの実行を含み得る。プロセッサにおけるオペレーションの並行実行(concurrent excurtion)を可能にするため、三つの構造的な手段がハードウエアにおいてとられ得る。これらは、オーバラップ実行(overlapped execution)、機能ユニットパイプライン(functional unit pipelining)、及び複数機能ユニット(multiple functional unit)である。オーバラップ実行は、プロセッサが同時に複数命令(multiple instruction)で動作していること、すなわちフェッチ(命令取り出し(fetch))、デコード(解読(decode))、及び実行(execute)の各々異なるフェーズ(段階)において複数命令が活性化させられていることを意味する。
命令レベルの並列処理を使用するために、オペレーション間の依存性が決定されなければならない。当該依存性を考慮すると、オペレーションは、ある特定の機能ユニット上においてある特定の時点でスケジューリングされなければならず、その結果は蓄積(deposite)され得るレジスタが割り当てられなければならない。命令レベル並列処理を使用することは、プログラマ、コンパイラ(compiler)、又はランタイムハードウエア(runtime hardware)の何れかのタスクとなる。とられる構造的な手法に依存して、前記三つの手法のうちの一つに重点がおかれる。
従来のDSPにおいて、現在の状態(current state)に依存して、シーケンスにおける一つの位置から他の位置に飛ぶ(jump)機能を伴うシーケンスで命令が実行される。この機能により、所与のアプリケーションが、一度実行される命令と一度よりも多く実行される命令又は命令の短いシーケンスとから構成される状態がもたらされる。アプリケーションが、所与のDSP上の自身の実行の間、モニタされる場合、プロファイルが生成され得る。ここでアプリケーションの異なる部分は異なる反復インデックス(repetition index)rで与えられる。
図1は、命令のシーケンスが一連の水平バー(bar)によって示されている概略図を示す。各々のバーは単一の命令に対応する。更に点線の枠内に含まれるそれらの命令は、命令の繰り返しサブシーケンス(repeated sub−sequence)を形成する。各々の繰り返しサブシーケンスにおいて示されている反復インデックスrは、反復レートを表す。ここでインデックスr=0は、最も頻繁に実行されるサブシーケンスに対応し、インデックス無しは、命令がたった一度だけ実行されることを意味する。従って、図1に示されている命令のシーケンスにおいて、中央部分に示されている繰り返しサブシーケンスは、最も頻繁に実行されるサブシーケンスとなり、上部繰り返しサブシーケンスは、2番目に最も頻繁に実行されるサブシーケンスとなり、下部繰り返しサブシーケンスは、3番目に最も頻繁に実行されるサブシーケンスとなる。
しかしながら当該命令のシーケンスがDSPの単一のプロセッサコアによって実行される場合、命令メモリは、同じサブシーケンスをフェッチするために複数回アクセスされ、このことにより処理が遅延させられると共に動作性能が低減させられる。
米国特許第US5796989号公報は、プロセッサによって引き受けられる命令の実行を最適化するためのシステムを開示している。特に命令コードシーケンスが再編成(reprganise)されるので、最も頻繁に発生する命令をエミュレート(emulate)するために使用される固有コード(native code)は互いにグループ化される。その結果、頻繁に発生するエミュレート命令のための固有コードが、メモリからキャッシュにロードされるとき、キャッシュが、後続するエミュレート命令のための固有コードを含む可能性は最大限化される。従って、最も頻繁に受信される命令が、容易にアクセス可能な態様で記憶され、処理レイテンシ(processing latency)は低減される。
本発明の目的は、処理効率が更に改善され得る、命令のシーケンスに基づいて情報を処理するための装置及び方法を提供することにある。
当該目的は、請求項1に記載の方法、請求項12に記載の装置、及び請求項18に記載のコンパイラによって達成される。
従って、繰り返しサブシーケンスの反復レートが特定されるという事実のために、低い反復レートで残存するシーケンスがコアプロセッサによって従来態様で実行される一方、高い反復シーケンスを消費するリソースは外部処理ユニットに委ねられ得る(defer)。その結果、動作特性は外部処理リソースを加えることによって改善され得る。更に、外部処理ユニットの種類及び数が個々に選択されてもよいという事実のために、柔軟な処理システムがもたらされ得る。最も多い反復サブシーケンス(repetitive sub−sequence)は外部処理ユニットに委託されるので、命令メモリへのアクセスは低減され、その結果システム電力要求が軽減される。
外部処理ユニットはプロセッサコアに自身の存在(availability)の信号を送出し得る信号送出機能部(signalling function)がもたらされる場合、プラグアンドプレイ(plug‘n’play)動作モードが確立され得る。当該モードにおいて、外部処理ユニットは選択的に加えられ、自動的にタスク分散(task distribution)にあるとみなされる。異なる外部リソースと自己拡張型(self−expandable)プロセッサ自身(コアプロセッサ)との間の実行オーバラップのために、コアプロセッサ自体の動作性能に対応する最小限の動作性能が常に保証される一方、増大された動作性能がもたらされ得る。装置の柔軟性のために、現在及び将来のDSP世代との互換性(compatibility)が想定され得る。
本発明の有利な更なる展開は、従属請求項において規定される。
好ましくは、インデックス情報を含む命令が生成され得ると共に命令のシーケンスに加えられ得る。インデックス情報は、他の検出された繰り返しサブシーケンスの反復レートと比較される、繰り返しサブシーケンスの反復レートの順位(ranking)に比例してセットされる整数を有していてもよい。特にアプリケーションが整数を、使用可能なソースの数と比較することによって決定されてもよい。それから前記整数が、使用可能な処理リソースの数よりも小さな全ての繰り返しサブシーケンスは、選択された処理リソースに割り当てられる。
更にインデックス情報が、繰り返しシーケンスにおける命令の数を示す情報を有していてもよい。
繰り返しサブシーケンスが所定の期間の間、もはや検出されない場合、繰り返しサブシーケンスを消去するための命令は生成され、消去された繰り返しサブシーケンスが割り当てられている処理ユニットはリセットされる。
更に繰り返しサブシーケンスによって使用される処理レジスタを特定するための命令が生成されてもよい。ここで、特定された処理レジスタをロック(lock)するための命令が使用される。
インデックス情報を含む命令が、対応する繰り返しサブシーケンスは処理リソースに既に割り当てられていることを示すとき、処理リソースが活性化されてもよい。この場合、活性化ステップが、対応する繰り返しサブシーケンスに従って他の処理ソースをプログラムするステップを有していてもよく、又は対応する繰り返しサブシーケンスを処理リソースのメモリにアップロード(upload)するステップを有していてもよい。
外部処理ユニットの存在の信号が中央処理ユニット(central processing unit)に送出されてもよく、使用可能な外部処理ユニットの数が前記信号送出に基づいてカウントされてもよい。
処理装置において接続手段は、繰り返しサブシーケンスが割り当てられ得る少なくとも一つの外部処理ユニットを接続するためにもたらされてもよい。更に少なくとも一つの外部処理ユニットと、対応する繰り返しサブシーケンスとの間の割り当てを示す割り当て情報を記憶するためにメモリテーブルがもたらされてもよい。外部処理ユニットは、処理コア及び/又は構成可能な論理ブロック(configurable logic block)を有していてもよい。
更にインデックス情報に基づいて、繰り返しサブシーケンスを少なくとも一つの外部処理ユニットのうちの使用可能な一つにマッピングするためにマッピング手段がもたらされてもよい。
インデックス情報を特定する命令を繰り返しサブシーケンスに加えるためにコンパイラがもたらされてもよい。繰り返しサブシーケンスに先行するように更なる命令が加えられてもよい。
更に、繰り返しサブシーケンスはもはや使用されないことを示す命令、及び/又は繰り返しサブシーケンスによって使用される処理レジスタを特定するための命令を加えるためにコンパイラが構成されてもよい。更に、繰り返しサブシーケンスの順位をそれらの反復レートに基づいて決定するためにコンパイラが構成されてもよい。
以下、本発明は添付図面を参照して好ましい実施例に基づいてより詳細に記載されるであろう。
好ましい実施例が、この場合図2に示されている自己拡張型DSP(Se−DSP)に基づいて記載されるであろう。
図2によればSe−DSP10は、処理リソース20乃至23が接続され得る複数のポートを有する。本願においてリソースは、再構成可能なコア(reconfigurable core)、又はエンベデッドメモリ(embedded memory)を備える小さな処理コア(small processing core)の何れかとなる。この構成のために、Se−DSP10は、そのときリソースの最大限まで使用可能な処理リソース20乃至23に依存して自身の最適な形態でアプリケーションを実行し得る。図2の場合、構成可能な論理ブロック、すなわちフィールドプログラマブルゲートアレイ(Field Programmable Gate Arrey(FPGA))又は自身のメモリを備えるプロセッサコアであってもよい、四つまでの更なる処理リソース又はユニットが接続され得るか、又は付けられ得る。
図3は、図1の繰り返しシーケンスを、Se−DSP10における使用可能な処理リソース又はユニット(共通ユニット(Co−unit))にマッピングするためのマッピング機能部の簡略図を示す。好ましい実施例によれば、Se−DSP10は使用可能な更なる処理ユニット20乃至23上において、より高い反復レートで繰り返しシーケンス又は反復シーケンスをマッピングし得るメカニズムがもたらされる。それによって、このような繰り返しサブシーケンスがSe−DSP10において検出されるとすぐに、対応する処理は処理ユニット20乃至23のうちの所定の一つに渡されるか、又は割り当てられるので、Se−DSP10が、割り当てられた繰り返しサブシーケンスに後続するその後のシーケンス命令に基づいて処理し続けてもよい。その結果Se−DSP10が、残存する、より少ない反復命令又はサブシーケンスの処理を継続させる間、繰り返しサブシーケンスは並行して処理され得る。
図4は、元のプログラムコードがコンパイラ30においてコンパイルされる、Se−DSP10における処理の概略ブロック図を示す。コンパイラは、命令の繰り返しシーケンス、すなわちループ又は関数呼び出し(function call)を特定すると共にコンパイル時にこれらのシーケンス又はサブシーケンスの順位をそれらの反復レートに基づいて決定するように構成される。繰り返しサブシーケンスの信号送出は少なくとも一つの更なる命令に基づいていてもよい。それによって、繰り返しサブシーケンスについての情報が実行時にSe−DSP10に通知され得る。
更にSe−DSP10が、いくつの更なる外部処理ユニット20乃至2nは付けられているかを決定し得るメカニズムがもたらされる。更にSe−DSP10は使用可能な処理ユニット20乃至2n上においてより高い反復レートで、検出された繰り返しサブシーケンスをマッピングし得る他のメカニズムがもたらされる。
これを実現するために、Se−DSP10は更なる命令、例えば呼び出された
Figure 0004647307
と、内部メモリ又はテーブル40とを備えている。更なる命令が、コンパイラ30によって命令の各々の反復シーケンスを区切る(delimit)ために使用される。当該命令は反復インデックスr及びシーケンスにおける命令の数をもたらす。好ましい実施例によれば、ゼロが最も高い反復レートを備えるサブシーケンスに対するインデックスとなる場合、反復インデックスrはゼロよりも大きな数又はゼロに等しい数となる。それ故に、更なるリソースの数nが付けられている場合、nよりも小さな反復インデックスrを備える全てのサブシーケンスは更なるリソース、例えば処理ユニット20乃至2nにマッピングされ得る。
内部メモリ又はテーブル40は、繰り返しサブシーケンスについての情報を記憶するために使用される。テーブルが可能な処理ユニット毎に一つのエントリ(項目(entry))を有していてもよい。繰り返しサブシーケンスが更なる処理ユニットにマッピングされる度に、対応するエントリはセットされる。すなわち各々の処理ユニットのポート名がテーブル40に書き込まれる。テーブル40は反復インデックスrによってインデックスされる。
従って、汎用DSPは、使用可能な処理リソースに依存して自身の最適な形態でアプリケーションを実行し得る。汎用DSPのアーキテクチャは、処理リソースが接続され得る複数のポートによって拡張される。ここで処理リソースは、エンベデッドメモリを備える小さな処理コア若しくは構成可能なコア、又はプログラマブル論理ユニットの何れかに対応する。更に内部テーブル40及び少なくとも一つの更なる命令が、一度よりも多く実行される命令のシーケンス及び自身の反復インデックスを特定するために必要とされる。ソフトウエア側から、コンパイラは反復インデックスrを生成するように構成される。反復インデックスrの生成は、最新のVLIW(超長命令語(Very Large Instructional Word))コンパイラにおいてもたらされる統計データ(statistics)と同様の統計データの生成に基づいていてもよい。
従って好ましい実施例によれば、より高い反復レートを備える命令の繰り返しシーケンスは使用可能な接続処理リソースに委ねられ、残存する命令コードはDSPによって従来態様で実行される。
好ましい実施例によれば、二つの更なる命令が加えられてもよい。第一の廃棄命令(discard instruction)は、命令自身によって特定される反復インデックスrを備える繰り返しサブシーケンスを消去することをSe−DSP10に知らせるために使用されてもよい。この場合、この繰り返しサブシーケンスがマッピングされている処理ユニットはリセットされる。このことは、当該ユニットが自身の初期状態又はリセット状態にもたらされることを意味する。それから、より低い反復レート、すなわちより高い反復インデックスrを備える繰り返しサブシーケンスが、このリセット処理ユニット上にマッピングされ得る。
更に第二のマスク命令(mask instruction)が、Se−DSP10の内部レジスタを特定するために使用され得る。当該命令は各々の繰り返しサブシーケンスによって使用されるであろう。このマスク命令は反復インデックス命令に後続する。このマスク命令によって、特定されたレジスタが効果的にロックされる。すなわちそれらの使用は、対応する繰り返しサブシーケンスが完了されるまで可能にならない。このように繰り返しサブシーケンスの実行は、アプリケーションが、特定されたレジスタのうちの一つにアクセスしようとする時点までSe−DSP10を停止(stall)させないであろう。従ってレジスタロッキング(register locking)により、繰り返しサブシーケンスの実行は、残存する処理リソースをロック又は停止させないという利点がもたらされる。それによって、繰り返し及び非繰り返し命令の並行実行が可能になる。一旦繰り返しサブシーケンスがマッピングされると共にSe−DSP10の内部テーブル40に記憶されると、Se−DSP10によって再度フェッチされないであろう。実際既に内部テーブル40に記憶又は格納(register)されている、マッピングされたサブシーケンスのための反復インデックス命令が検出されると、分岐動作(branch operation)が開始され、マッピングされた処理ユニットは活性化される。それ故に命令メモリ(図4において図示略)に対するアクセスが低減される。
使用可能な更なる処理ユニット20乃至2nの数は、例えばリセット動作の直後にSe−DSP10によって決定される。例えば各々の外部処理ユニット20乃至2nは、簡単な信号、例えば1ビット信号によって自身の存在の信号を送出してもよく、Se−DSP10は、更なる処理ユニット20乃至2nから受信される信号を単純にカウントしてもよい。更なるユニットがもたらされない場合、Se−DSP10は従来のDSPとして動作する。
処理ユニット20乃至2nに対する繰り返しサブシーケンスのマッピングは、各々の処理ユニットの種類又は特質に依存している。FPGAの場合、マッピングは、対応してFPGAをプログラムすることによって行われてもよい。メモリを備える処理コアの場合、マッピングは繰り返しサブシーケンスを処理コアのメモリにアップロードすることによって行われてもよい。処理ユニット20乃至2nは何れかの従来態様でSe−DSP10のレジスタファイルにアクセスしている。当該ユニットはSe−DSP10と同じ集積回路上に構成されてもよく、外部回路上にもたらされてもよい。
図4は、Se−DSP10の処理動作を示す概略的な流れ図を示す。
第一のステップS100において、Se−DSP10のコアは、何れかの外部リソース、例えば更なる処理ユニット20乃至2nが使用可能かどうかを検出する。これは、外部処理リソースから受信される、対応する通知信号(notification signal)をカウントすることによって実現され得る。リソースが使用可能である場合、外部処理ユニット20乃至2nの数nはステップS101において内部テーブル40に記憶され、外部処理ユニット20乃至2nはステップS102においてそれらのリセット状態にもたらされる。それからアプリケーションが開始され、ステップS103において第一の命令が命令メモリから読み出される。外部処理リソースがステップS100において検出されない場合、Se−DSP10は、繰り返しサブシーケンスに対するいかなる照合機能(マッチング機能(matching function))も有さない従来のDSPとして動作する。
ステップS104において読み出し命令は、既に内部テーブル40に記憶されている、割り当てられたシーケンスを示すかどうかが確認される。そうなる場合、対応する処理リソース、例えば処理ユニットはステップS108において活性化され、プロシージャはサブシーケンス命令を読み出すためにステップ103に戻される。読み出し命令が、ステップS104において割り当てられたシーケンスを示さない場合、読み出し命令はステップS105において反復又は繰り返しサブシーケンスを示すかどうかが確認される。そうなる場合、対応する反復インデックス命令によって示される反復インデックスrは、使用可能な処理リソース21乃至2nの数nよりも小さいかどうかがステップS106において確認される。そうなる場合、各々の繰り返しサブシーケンスは、ステップS107において使用可能な処理リソースに割り当てられ、選択された処理リソースはステップS108において活性化される。更に対応するエントリが、選択された処理リソースを特定する内部テーブル40に加えられる。ステップS107における割り当ては、繰り返しサブシーケンスを処理リソースの内部メモリに記憶することによって、又は処理リソースを構成するために繰り返しサブシーケンスを使用することによって行われてもよい。読み出し命令がいかなる繰り返しサブシーケンスも示さない場合、又は反復インデックスrが使用可能な処理リソースの数よりも小さくならない場合、プロシージャは、読み出し命令が従来態様でSe−DSP10において実行されるステップS109に先行する。それからフローは、後続する命令を読み出すためにステップS103に戻る。Se−DSP10のコアは、繰り返されたサブシーケンス又は割り当てられたサブシーケンスに後続するその後の命令を、このようなサブシーケンスの一つの結果又は複数の結果がその後の命令のために必要とされるまで実行し始める。
従って、サブシーケンス又はタスクは外部処理ユニット、例えばSe−DSP10に使用可能な共通プロセッサ(co−processor)に柔軟に割り当てられ得る。その結果、外部処理ユニットがそれらのエンベデッドメモリを使用していると共にそれに対応してプログラムされているので、命令メモリに対するメモリアクセスは低減され得る。これにより電力も節減される。
本発明が上記の好ましい実施例に限定されず、情報が命令のシーケンスに基づいて処理されるアーキテクチャを処理するいかなるスケーラブルデータにおいても使用され得ることは注意されるべきである。好ましい実施例は請求項の範囲内でこのように変更されてもよい。
繰り返しサブシーケンスを有する命令のシーケンスの概略図を示す。 本発明が実現され得る、自己拡張型ディジタル信号プロセッサの簡略図を示す。 本発明の好ましい実施例による、使用可能な外部処理ユニットへの、繰り返しサブシーケンスのマッピングを示す簡略化されたブロック図を示す。 好ましい実施例による、処理装置の概略図を示す。 好ましい実施例による、処理方法の流れ図を示す。

Claims (9)

  1. 命令のシーケンスに基づいて情報をプロセッサコア及び処理リソースで並行処理するための方法であって、
    )前記命令のシーケンスにおいて繰り返しサブシーケンスを検出するステップと、
    )前記繰り返しサブシーケンスの反復レートを示すインデックス情報をもたらすステップと、
    )前記繰り返しサブシーケンスが所定の期間の間にもはや検出されない場合、前記繰り返しサブシーケンスを消去するための命令を生成するステップと、
    d)何れかの前記処理リソースが使用可能かどうかを検出するステップと、
    前記処理リソースが使用可能である場合、前記インデックス情報に基づいて前記処理リソースと前記繰り返しサブシーケンスとの間の割り当てを決定するステップと、
    前記繰り返しサブシーケンスを消去するための命令に応じて、前記消去された繰り返しサブシーケンスが割り当てられている処理リソースをリセットするステップと
    を有する方法において、
    前記インデックス情報は、他の検出された繰り返しサブシーケンスの反復レートと比較される、前記繰り返しサブシーケンスの前記反復レートの順位がセットされる整数を有し、
    前記割り当ては前記整数を前記使用可能な処理リソースの数と比較することによって決定され、
    前記整数が前記使用可能な処理リソースの数よりも小さくなる全ての繰り返しサブシーケンスは各々、選択された各々の前記使用可能な処理リソースに割り当てられて処理される一方、残存するサブシーケンスは前記プロセッサコアによって実行される
    方法
  2. 前記インデックス情報を含む命令を生成すると共に前記命令を前記命令のシーケンスに加えるステップを更に有する請求項1に記載の方法。
  3. 前記インデックス情報が、前記繰り返しサブシーケンスにおける命令の数を示す情報を有する請求項1又は2に記載の方法。
  4. 前記繰り返しサブシーケンスによって使用される処理レジスタを特定するための命令を生成するステップと、
    前記繰り返しサブシーケンスによって使用される処理レジスタを特定するための命令を使用して、前記特定された処理レジスタをロックするステップを更に有する請求項1乃至の何れか一項に記載の方法。
  5. 前記インデックス情報を含む前記命令対応する繰り返しサブシーケンス前記処理リソースに既に割り当てられているとき、前記処理リソースを活性化させるステップを更に有する請求項2に記載の方法。
  6. 前記割り当てを決定するステップが、前記対応する繰り返しサブシーケンスに従って前記処理リソースをプログラムするか、又は前記対応する繰り返しサブシーケンスを前記処理リソースのメモリにアップロードするステップを有する請求項に記載の方法。
  7. 処理リソースの存在をプロセッサコアに信号送出すると共に、前記信号送出に基づいて、使用可能な前記処理リソースの数をカウントするステップを更に有する請求項1乃至の何れか一項に記載の方法。
  8. 命令のシーケンスに基づいて情報をプロセッサコア及び処理リソースで並行処理するための装置であって、
    a)前記命令のシーケンスにおいて繰り返しサブシーケンスを検出すると共に、前記繰り返しサブシーケンスの反復レートを示すインデックス情報をもたらすための手段と、
    )前記繰り返しサブシーケンスが所定の期間の間にもはや検出されない場合、前記繰り返しサブシーケンスを消去するための命令を生成する手段と、
    c)何れかの前記処理リソースが使用可能かどうかを検出する手段と、
    前記処理リソースが使用可能である場合、前記インデックス情報に基づいて前記繰り返しサブシーケンスを前記処理リソースに割り当てるためのリソース制御手段と、
    前記繰り返しサブシーケンスを消去するための命令に応じて前記消去された繰り返しサブシーケンスが割り当てられている処理リソースをリセットする手段と
    を有する装置において、
    前記繰り返しサブシーケンスが割り当てられ得る少なくとも一つの処理リソースを前記プロセッサコアに接続するための接続手段を更に有し、
    前記少なくとも一つの処理リソースと、対応する繰り返しサブシーケンスとの間の割り当てを示す割り当て情報を記憶するためのメモリテーブルを更に有し、
    前記接続手段に接続される前記少なくとも一つの処理リソースの数を決定するための手段を更に有し、
    前記インデックス情報に基づいて、前記繰り返しサブシーケンスを前記少なくとも一つの処理リソースのうちの使用可能な一つにマッピングするためのマッピング手段を更に有し、
    前記インデックス情報は、他の検出された繰り返しサブシーケンスの反復レートと比較される、前記繰り返しサブシーケンスの前記反復レートの順位がセットされる整数を有し、
    前記割り当ては前記整数を前記使用可能な処理リソースの数と比較することによって決定され、
    前記整数が前記使用可能な処理リソースの数よりも小さくなる全ての繰り返しサブシーケンスは各々、選択された各々の前記使用可能な処理リソースに割り当てられて処理される一方、残存するサブシーケンスは前記プロセッサコアによって実行される
    装置
  9. 前記装置はディジタル信号プロセッサであり、前記少なくとも一つの処理リソースはプロセッサコア及び/又は構成可能な論理ブロックである請求項に記載の装置。
JP2004500179A 2002-04-25 2003-04-04 スケーラブルプロセッサにおける自動タスク分散 Expired - Lifetime JP4647307B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP02076642 2002-04-25
PCT/IB2003/001399 WO2003091874A2 (en) 2002-04-25 2003-04-04 Automatic task distribution in scalable processors

Publications (3)

Publication Number Publication Date
JP2005524143A JP2005524143A (ja) 2005-08-11
JP2005524143A5 JP2005524143A5 (ja) 2006-05-25
JP4647307B2 true JP4647307B2 (ja) 2011-03-09

Family

ID=29265963

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004500179A Expired - Lifetime JP4647307B2 (ja) 2002-04-25 2003-04-04 スケーラブルプロセッサにおける自動タスク分散

Country Status (6)

Country Link
US (1) US7765533B2 (ja)
EP (1) EP1502182B1 (ja)
JP (1) JP4647307B2 (ja)
CN (1) CN1650258A (ja)
AU (1) AU2003214567A1 (ja)
WO (1) WO2003091874A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7519621B2 (en) * 2004-05-04 2009-04-14 Pagebites, Inc. Extracting information from Web pages
JP4585809B2 (ja) * 2004-08-02 2010-11-24 株式会社リコー 画像処理制御装置
FR2893156B1 (fr) * 2005-11-04 2008-02-15 Commissariat Energie Atomique Procede et systeme de calcul intensif multitache et multiflot en temps reel.
US20100174884A1 (en) * 2005-12-27 2010-07-08 Matsushita Electric Industrial Co., Ltd. Processor having reconfigurable arithmetic element
JP4778359B2 (ja) * 2006-05-17 2011-09-21 エヌイーシーコンピュータテクノ株式会社 エミュレーション方法及びコンピュータシステム
US7984269B2 (en) * 2007-06-12 2011-07-19 Arm Limited Data processing apparatus and method for reducing issue circuitry responsibility by using a predetermined pipeline stage to schedule a next operation in a sequence of operations defined by a complex instruction
US20100057514A1 (en) * 2008-08-29 2010-03-04 International Business Machines Corporation Effective task distribution in collaborative software development
US8327351B2 (en) * 2009-04-30 2012-12-04 Sap Ag Application modification framework
US9631396B2 (en) * 2011-06-20 2017-04-25 Eddie Leach Do-it-yourself fence
CN108614736B (zh) 2018-04-13 2021-03-02 杭州中天微系统有限公司 实现资源索引替换的装置及处理器
GB2594498B (en) 2020-04-30 2022-06-01 Advanced Risc Mach Ltd Instruction scheduling

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5457799A (en) * 1994-03-01 1995-10-10 Digital Equipment Corporation Optimizer for program loops
US5497373A (en) * 1994-03-22 1996-03-05 Ericsson Messaging Systems Inc. Multi-media interface
US5752035A (en) * 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
US5696956A (en) * 1995-11-08 1997-12-09 Digital Equipment Corporation Dynamically programmable reduced instruction set computer with programmable processor loading on program number field and program number register contents
US6044225A (en) * 1996-03-13 2000-03-28 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller
US5963972A (en) * 1997-02-24 1999-10-05 Digital Equipment Corporation Memory architecture dependent program mapping
US5966534A (en) * 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US6327704B1 (en) * 1998-08-06 2001-12-04 Hewlett-Packard Company System, method, and product for multi-branch backpatching in a dynamic translator
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6912706B1 (en) * 2001-08-15 2005-06-28 Xilinx, Inc. Instruction processor and programmable logic device cooperative computing arrangement and method

Also Published As

Publication number Publication date
JP2005524143A (ja) 2005-08-11
US20050132345A1 (en) 2005-06-16
WO2003091874A2 (en) 2003-11-06
EP1502182A2 (en) 2005-02-02
AU2003214567A1 (en) 2003-11-10
WO2003091874A3 (en) 2004-03-11
US7765533B2 (en) 2010-07-27
CN1650258A (zh) 2005-08-03
EP1502182B1 (en) 2016-10-05

Similar Documents

Publication Publication Date Title
JP6660991B2 (ja) マルチスレッドプロセッサでのタスクのスケジューリング
US7493475B2 (en) Instruction vector-mode processing in multi-lane processor by multiplex switch replicating instruction in one lane to select others along with updated operand address
US7594102B2 (en) Method and apparatus for vector execution on a scalar machine
US10430190B2 (en) Systems and methods for selectively controlling multithreaded execution of executable code segments
JP4484925B2 (ja) Simdデバイスにおける制御フロー管理のための方法及び装置
JP5356531B2 (ja) シーケンス検出又は命令に関連付けられた情報に基づいた命令の最適化性能
JP4647307B2 (ja) スケーラブルプロセッサにおける自動タスク分散
JP2004302706A (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
EA004071B1 (ru) Управляющий программный продукт и система обработки данных
JP2005524143A5 (ja)
US10606641B2 (en) Scheduling tasks in a multi-threaded processor
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US7162620B2 (en) Methods and apparatus for multi-processing execution of computer instructions
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
CN113296788A (zh) 指令调度方法、装置、设备、存储介质及程序产品
JP7510253B2 (ja) 分岐予測器
US7028162B2 (en) Configurable processing block capable of interacting with external hardware
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
US20030120899A1 (en) Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
US20030182511A1 (en) Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor
US20060190709A1 (en) Method and system for branch prediction
JPH08305547A (ja) Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム
EP1496431A2 (en) High level micro-controller
JP2017199223A (ja) 演算実行装置、および、演算実行方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060403

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061219

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070319

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070619

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080521

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080707

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080822

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100601

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101021

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

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

Free format text: PAYMENT UNTIL: 20131217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4647307

Country of ref document: JP

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term