JP2005526322A - 制御ワード巻き上げ - Google Patents

制御ワード巻き上げ Download PDF

Info

Publication number
JP2005526322A
JP2005526322A JP2004505874A JP2004505874A JP2005526322A JP 2005526322 A JP2005526322 A JP 2005526322A JP 2004505874 A JP2004505874 A JP 2004505874A JP 2004505874 A JP2004505874 A JP 2004505874A JP 2005526322 A JP2005526322 A JP 2005526322A
Authority
JP
Japan
Prior art keywords
control
sequence
configuration
data path
control word
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.)
Granted
Application number
JP2004505874A
Other languages
English (en)
Other versions
JP3924577B2 (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 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 Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of JP2005526322A publication Critical patent/JP2005526322A/ja
Application granted granted Critical
Publication of JP3924577B2 publication Critical patent/JP3924577B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/30181Instruction operation extension or modification
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/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/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
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

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)
  • Logic Circuits (AREA)

Abstract

本発明は、データ処理プログラムの少なくとも2つの命令のシーケンスをデータパスを制御するために使用されるコードワードのシーケンスに復号するための方法および装置に関し、コードワードのシーケンスにおいて変化しない不変コードワード部分は、分離して生成され、コードワードのシーケンス中に固定されるデータパスの一部を構成するために使用される。これにより、必要なマイクロコードメモリの大きさは縮小され、電力消費は減少する。

Description

本発明は、データ処理プログラムの少なくとも2つの命令のシーケンスを、例えば、デジタルシグナルプロセッサなどのデータパスを制御するために使用されるコードワードのシーケンスに復号するための方法および装置に関する。
コンピュータアーキテクチャは、制御ワードによって制御される固定データパスから成る。この制御ワードは、いくつかの部分から成り、それぞれがデータパスの部分を制御する。これらの部分は、マルチプレクサ、レジスタアドレス、算術論理演算装置(ALU)またはその他の機能ユニットなどのためのオペレーションコードを備える。発行されたそれぞれの命令は、通常は、命令のバイナリーフォーマットを、対応する制御ワードに変換する命令デコーダにより、またはマイクロストア、すなわち制御ワードを直接含むメモリにより、新しい制御ワードを生成する。
プロセッサがループ機能を実行する場合、対応する手順が、命令のシーケンスとしてだけでなく、時間を競うパイプライン回路として解釈されても良い。このような、パイプライン回路では、データは、各クロック期間でデータフローグラフのエッジを移動する。グラフのエッジは、レジスタによって実現される。他方、データフローグラフは、命令スケジューラにより決定されるような、異なる動作が所定の順序で行われるプログラムにより、実現されても良い。命令はまた、1つずつ行われるか、または、プロセッサアーキテクチャが平行的な処理をサポートする場合は、平行性をもって行われても良い。これらの動作を実行するために、プロセッサにおいてそれぞれの制御ワードが各命令についてデータフローグラフの一部を構成し、エッジは、一般的なプロセッサレジスタによって実現される。
しかしながら、電力損失と領域に関する組み込み型システムのコストは、プログラム記憶装置に必要なメモリにより決定される大きなものである。高いレベルのコンパイルは一般に、手作業のアセンブリコードと比較して、コードサイズに関して不利になる。コードサイズを許容範囲にとどめておくために、効果的な命令符号化とコード圧縮が、新しいプロセッサコアの設計において極めて重要である。さらに、プログラムの異なる部分のパフォーマンスに関しての異なる制約についての説明は、コード密度とパフォーマンスの間の兼ね合いを考慮に入れる。
米国特許文献第5862384号は、更新変数表において認識される更新変数に基づくループからループの不変式を移すように配置された最適化セクションが設けられた、コンパイラ最適化装置について開示している。これは、実行された命令文の合計数を減らし、効果的な処理の最適化と処理速度の加速に結びつく。
しかしながら、ループを代表するような、特定の命令シーケンスは、固定部分と標準部分を持つ制御ワードのシーケンスになる。制御ワードの固定部分は変化しないが、構成メモリコンテキストは、このような不変シーケンスの実行時間によって決定された多くのサイクルの間に、書き換えられる。この時間の不利益が処理パフォーマンスの低下と電力消費の増加につながる。
従って、本発明の目的は、命令シーケンスを符号化するための復号の方法および装置を提供することであり、これにより、処理パフォーマンスを向上させ、電力消費を削減することができる。
この目的は、請求項1に記載された方法および請求項20に記載された装置により、達成される。
固定回路の実現とプログラムベースの実行の実現との2つの両極端の間にある方法が、ループに入る前のデータフローグラフの一部がループ中に固定されるように構成するために、設けられる。これはデータパスの一部を固定すること、すなわち制御ワードのいくつかの部分を固定することと対応する。このことは、各サイクルで発行される制御ワードをより限定することになるため、電力消費および(マイクロ)コードサイズは減少する。この技術は、制御ワードは、制御ワードの巻き上げの一種とみなされる。ここで、コンパイラ用語「巻き上げ」は、ループ不変制御信号(例えば、オプコード、アドレスなど)をループの外に移動することを意味する。しかしながら、命令スケジュールが変わらないため、コンパイラに関しては、この技術はほとんどインパクトがない。それぞれのコードワードシーケンス、例えば、ループ内で命令を符号化することのみが、影響を受ける。特に、制御ワードの不変部分、すなわち固定部分は、命令デコーダまたはマイクロストアからはもはや発生せず、他の場所で、例えば分離したメモリから得ることが可能である。他の選択として、再構成可能なハードウェア、例えば組み込み型のフィールドプログラマブルゲートアレイ(FPGA)を不変部分の配線を処理するために使用することができる。
制御ワードの不変部分は、制御ワードごとに重複して複製されることはないため、必要なマイクロコードメモリサイズは減少する。
専用メモリの選択において、専用メモリは、ルックアップテーブルまたは、内容参照可能メモリであって良い。専用メモリは、データパスの複数の機能ユニットの間で共有できる。あるいは、複数の専用メモリが、データパスのそれぞれの機能ユニットに割り当てられる。
さらに、不変のコードワード部分は、専用メモリをアドレス指定するために用いられ、データパスを制御するために使用される展開された新しいコードを得ることができる。これは、元のコードワードのシーケンスと同じ接続を用いることによって達成される。その際、接続は、マルチプレクサの機能を介して選択されることが可能である。
不変コードワード部分のビット位置は、構成マスクを用いることによりコードワードにおいて特定することができる。特に、機能をロードした制御ワードは、コードワードのビットを制御レジスタの適切な位置に向けるように、構成マスクに基づいて制御される。これは、構成マスクが、制御レジスタに接続するためのスイッチング信号を生成する構成マスクを用いることで達成される。専用メモリの大きさは、命令レジスタの大きさと一致する。
再構成可能なハードウェアの選択において、構成コンテキストは、不変コードワード部分に基づいて選択される。さらに、再構成可能なハードウェアにマップされた回路を制御する制御ビットの数は、不変制御の部分を構成自体に組み入れることにより、減少させることができる。これにより、コードワードの不変部分は、巻き上げられると共に、再構成可能なハードウェアにマップされた回路を制御するのに必要な命令ワード幅を縮小する。その上、最も大きい不変のコードワード部分を持つそれらの命令は、少なくとも1つの命令から選択され、選択された命令は、再構成可能なハードウェアにマッピングするために用いることができる。ゆえに、再構成可能なハードウェアは、巻き上げから最も大きな利益を得るそれらの命令または命令シーケンスに使用される。
その他の有益な発展は、従属請求項において定義される。
デジタルシグナルプロセッサにおけるコードシーケンスの例として、ループ機能の復号と処理に基づいて、好ましい実施形態を以下に述べる。好ましい実施形態によれば、データフローグラフの一部はループに入る前に、ループ中に固定されるように構成される。これはデータパスの一部を固定することに対応しており、すなわち制御ワードのいくつかの部分を固定することに対応している。
一般に、ループ不変データフローグラフに対して制御ワードの一部を固定することは、次のような意味を持つ。
機能ユニットとレジスタファイルの間の接続を固定する、
レジスタファイルスペース内でアドレスを固定する、
機能ユニットのためのオプコードを固定する。
制御ワードの固定部分の生成は、任意のループ不変データフローパスと関連して、ループに対するコード生成または命令復号の間に起こる。そして、ループの実行中に、制御ワードの標準部分または可変部分は、局所的命令デコーダまたはマイクロストアから得られる。制御ワードの固定部分または不変の部分は、コードワードのシーケンス中に固定されるデータパスの一部分を構成するために使用される。
第1の好ましい実施形態によれば、コードワードの固定部分は、ルックアップテーブルまたは内容参照可能メモリ(CAM:content addressable memory)として実現される専用メモリブロックから得られる。考慮されたアーキテクチャにおける命令階層によって、専用メモリブロックは、プロセッサアーキテクチャに全体的に、もしくは局所的に配置される。
第2の好ましい実施形態によれば、制御ワードの固定部分は、プロセッサアーキテクチャに設けられる再構成可能なハードウェアまたはロジック装置の再構成可能な観点を固定するために用いることができる。
次に、第1の実施形態の実現の例を、図1から図6を参照して説明する。
図1は、専用メモリブロックを配置するための上記2つのアプローチを持つ、デジタルシグナルプロセッサアーキテクチャの一部分の概略図を示す。図1の左上に示されているように、制御ワード10は、標準または可変部分11と、固定または不変部分12から成る。固定部分12は、ループ中に変化しない。第1のアプローチによれば、図1の右上の部分に示されているように、専用メモリブロック26は、レジスタファイル21が接続される第1の機能ユニットクラスタ23の命令デコーダ24に接続されている。レジスタファイル21は、マルチプレクサ22を介して、相互接続線からアクセスすることが可能である。従って、第1のアプローチにおいて、専用メモリブロック26は、制御ワードの固定部分がいくつかの機能ユニットクラスタの間で共有されるように、全体的に配置される。なお、レジスタファイル21のレジスタもまた、マルチプレクサ22を通らずに、デコーダ24から直接アドレス指定される。アドレス指定のこの部分は、制御ワードの固定部分12に対応し、ループ中変化しないままである。
図1の右下部分に示される第2の可能なアプローチによれば、専用メモリブロック25は、所定の機能ユニットクラスタ、例えば機能ユニットクラスタ23内に配置され、このクラスタに固有のものである。再び、専用メモリブロック25は、機能ユニットクラスタ23の命令デコーダ24に接続される。制御ワード12の固定部分は、両方のアプローチにおいて、元のビット幅を縮小するために(例えばコンパイラまたはアセンブラにより)符号化することができる。そして、固定部分は、その後それぞれの専用メモリブロック25,26において展開または複号化され、変更された命令タイプが得られる新しい制御ワードになる。
図2は、標準および変更された命令のタイプの双方によって制御されるレジスタファイル21の例を示す。標準の命令タイプは、制御ワード10の標準部分11に基づいて得られ、一方変更された命令タイプはそれぞれの専用メモリ25,26を介して制御ワード10の固定部分12に基づいて得られる。特に、ループ中、標準と変更の命令タイプは双方とも、必要な処理とループのレジスタ機能を提供するように、命令デコーダ24によって生成される。なお、制御ワード10の固定部分12および標準部分11から標準および変更された命令タイプへの変換は、それぞれ図2には示されていない。実装化の全コスト、特に配線のコストを縮小するために、それぞれの専用メモリブロック25,26によって生成される新しい制御ワードは、標準命令デコーダ24のような制御された資源への接続と同一の接続を使用することができる。図2で示されるように、選択は、レジスタファイル21のそれぞれの入力に設けられた局部的なマルチプレクサを使用することによって達成される。従って、制御ワード10の標準部分11および固定部分12から得られる制御信号の双方を、レジスタファイル21を制御するために用いることができる。
制御ワード10のループ不変または固定部分12は、ループ変化または標準部分11から分離されていることにより、アプリケーションの各ループは、ループ不変部分または構成そのものを持つことになる。残りの部分は、ループ実行中に変えることができる。これは、構成部分はループ内で制御ワードごとに重複して複製されないため、必要なマイクロコードメモリサイズを縮小する。実際には、ループ実行中に変化しない制御ビットは、制御ワードに任意に分散させることができる。すると、問題は、適切な構成および標準ビットをマイクロコードメモリからロードする実行中、プロセッサデータパスの資源が制御される、命令デコーダ24での制御レジスタの適切なビット位置にある。これは、アプリケーションにおいて各ループに、制御レジスタにおいてどのビット位置がループ不変で、どれがそうでないかを特定する構成マスクを提供することにより解決される。そして、制御ワードローダは、構成部分におけるビットを、構成マスクの制御の下で制御レジスタの適切な位置に向ける。すると、ループの実行が始まる。標準部分11から得るすべての制御ワードに対して、制御ワードローダは、専用メモリブロック25または26に定義されたループの、事前ロードされた構成を変えずに、各ビットを制御レジスタ内の適切な位置に向ける。
図3は、構成部分を標準部分から分離させる制御データ内のいくつかの点における単純なカットによる制御データの簡略化した生成を表す概略図を示す。図3によれば、制御レジスタ50は、それぞれのレジスタファイルおよびランダムアクセスメモリ(RAM)52を持つ、2つの算術論理演算装置(ALU)54と、2つの乗算/アキュウムレートユニット(MAC)53とを備えるプロセッサデータパス41を制御するように設けられる。図3に示されているように、ループ実行中に変化しない制御ビットは、すなわち構成部分62のビットは、制御レジスタ50の対応する部分へ直接送られる。一方、マイクロコードメモリ51に格納される制御データの標準部分11は、ループ実行中に変化し、制御レジスタ50の残りの部分に供給される。この単純化された状況は、アーキテクチャによって実施され、巻き上げの可能性を逃したコンパイラによって活用されるが、一般的な場合、ループ不変のビットは、図3に示すように、すべてが連続した順序で互いに隣接しているという保証はない。制御ワードの巻き上げの可能性を最大に活用するには、さらなる一般的な解決策が要求される。
そこで、図4では、一般的な場合を示し、制御レジスタ50における線が引かれた位置は、ループ不変または構成ビットに対応する。図4から推測できるように、ループ実行中に変化しない制御ビットは、特に順序もなく、制御レジスタ50における制御ワードに任意に分配される。問題は、ループ実行中に、マイクロコードメモリ51からの固有の構成および標準ビットを、制御レジスタの適切なビット位置にロードすることである。これを達成するために、すでに述べたように、構成マスク61が、図1の専用メモリブロック25,26におけるすべての構成と共に設けられる。新しいループが実行される場合、対応する構成マスク61が、マイクロコードメモリ51からの制御データを、制御レジスタ50の適切な位置に、構成マスクレジスタ63により定められたようにロードする責任を負う制御ワードローダ64の構成マスクレジスタ63に、ロードされる。そして、ループの実行が始まる。標準部分11の制御データごとに、制御ワードローダ64は、専用メモリ25,26から得られた、事前ロードされた構成62を変えずに、各ビットを制御レジスタ50の適切な位置に向ける。
なお、構成マスクレジスタ63のゼロと1のパターンは、制御信号ではなく、単に制御ワードのどのビット位置がループ不変で、どの位置がそうでないかを特定するものである。他方、ループ構成62においてゼロと1は、実際に制御信号であり、プロセッサデータパス、例えば機能ユニット、レジスタアドレス、マルチプレクサの選択入力などに対するオプコードを制御する。
図5は、図4に示される制御ワードローダ64のアーキテクチャを表す概略図を示す。図5に示されるように、プログラムカウンタPCは、マイクロコード記憶装置51、または命令メモリもしくはキャッシュに格納された制御ワード10の実際の標準部分11を指定する。すでに述べたように、残りの固定部分または構成は専用メモリ25,26に格納される。従って、通常の命令メモリまたはマイクロコード記憶装置51は、制御ワード10の標準部分のみを含む。そして、新しい構成は、ソフトウェア制御の下で制御レジスタ50にロードされる。しかしながら、このロード機能は、図5には示されていない。専用メモリ25,26の各制御ワードの大きさは、プロセッサの命令レジスタ50にあるものと同じでも良い。このように、各構成62と共に、対応するループの第1の制御ワードまたは命令の標準部分11に対応するビットもまた、専用メモリブロック25,26に格納されても良い。ワードサイズが同一であるという事実により、専用メモリブロック25,26のワード(構成)は、図5に示される制御ワードローダ64に設けられたプログラム可能クロスポイントスイッチ73をまったく経由することなく、プロセッサの命令レジスタに直接ロードされることが可能である。そうすることにより、ループの制御ワードの第1の標準部分11は、自動的に並行してロードされる。
プログラム可能クロスポイントスイッチ73は、マルチプレクサチェーンから構成され、各マルチプレクサは、マスク解釈ロジック71からの一連のビットにより制御される。特に、プログラム可能クロスポイントスイッチ73は、制御可能なトライステートバッファを有することができ、一方、すべての個々のマルチプレクサとバッファ制御ビットの集まりが、スイッチ制御信号72を作成する。マスク解釈ロジック71は、構成マスクレジスタ63の内容をスイッチ制御信号72に変換するように配置される。マスク解釈ロジック71の使用は、次の2点の利点を提供する。第1に、ループ構成マスク61のセマンティクスから、特定のスイッチアーキテクチャを切り離す。このことは、例えば、以前のヴァージョンとのバイナリコードの互換性を保ちながら、スイッチのアップグレードを可能にする。第2に、構成マスクレジスタ63のビット数は、概してスイッチ制御信号72を作り上げているビットより、はるかに少ないため、ループ構成61に必要なメモリ容量における縮小を可能にする。それにもかかわらず、システムは、ループ構成マスク63とマスク解釈ロジック71を設けずに配置することができる。その場合、ループ構成61のビットは、スイッチ制御信号72を直接形成する。
これまでに述べたように、第1の好ましい実施形態では、構成マスクのゼロと1のパターンは、制御ワードのどのビット位置がループ不変で、どのビット位置がそうでないかを符号化する。実際、マスク解釈ロジック71はスイッチアーキテクチャからループ構成マスクのセマンティクスから切り離す。構成マスクの情報を符号化するほかのいくつかの形式も使用でき、情報を格納するのに必要なビット幅を縮小することになる。
プログラム可能クロスポイントスイッチ73は、すべてに接続できるが、その必要はない。例えば、標準部分11の第1のビットは、制御レジスタ50のどのビット位置にでも送ることができるが、標準部分11の第2のビット位置は、制御レジスタ50の第1のビット位置に送れる必要がない。さらに、標準部分11の第3のビット位置は、制御レジスタ50の第1と第2のビット位置に送れる必要がない。同様の推論が、より上位のビットに適用可能である。この推論を適用することにより、接続のいくつかは、使われることはなくなるので、物理的にクロスポイントスイッチ73から取り除くことができる。
図6は、プログラム可能クロスポイントスイッチ73の実施形態の簡単な場合の例を示する。マイクロコード記憶装置51から得られる命令の標準部分11が2つのビットのみを含み、一方、制御されたプログラムデータパスは制御レジスタ50において4つのビットが必要である場合である。従って、マイクロコード記憶装置51から得られる命令は、2つのビットを備え、制御レジスタ50は4つのビットを備える。すると、クロスポイントスイッチ73の接続パスは、スイッチ制御信号72に基づくマルチプレクサおよびトライステートバッファを介して制御される。この場合、命令の左のビット、すなわち標準部分11は、右端のビット位置を除いて、制御レジスタ50のすべてのビット位置に、切り替えられる。一方、命令の右のビットは、左端のビット位置を除いて、制御レジスタのすべてのビット位置に切り替えることができる。
図7は、第2の実施形態による復号するアーキテクチャの概略図を示し、制御ワード10の固定部分12が再構成可能レジスタファイル31を制御するように使用される。再構成可能なハードウェア資源の特殊な性質により、より高い柔軟性が可能であり、さらにコスト効果を改善するために利用できる。第2の好ましい実施形態において使用できる再構成可能なハードウェア装置の例は、組み込み型FPGAである。
レジスタファイル31が再構成可能なロジックに実現される場合、すべての資源は、空間的にマップされる。資源への制御は、構成メモリビットを通して達成される。構成メモリ32は、新しい型のデータフローグラフが実行される時、新しい構成コンテキストと共にロードされる。内部構成コントローラ33は、制御ワード10の固定部分12に基づいた正しい構成コンテキストを選択する処理をする。制御ワード10の固定部分12は、いくつかのサイクルに対して変化しないため、構成メモリコンテキストのリロードに関連する潜在的な再構成の時間の不利益は、重要ではない。
再構成可能レジスタ31が、標準の制御ワードを用いるように配置される場合、構成コンテキストはレジスタファイルに適合される。
再構成可能レジスタファイル31は、さらに、構成メモリ32におけるビット状態に基づいて制御される構成可能なロジックアレイ34を備える。これにより、構成可能インターフェイス35が、所望の入力と出力、および/又は制御ワードを供給するように構成できる。これにより、機能ユニットへの接続がプログラム可能になるだけでなく、例えば、レジスタファイル21の深さへの接続も可能になる。さらに、再構成可能なロジックにおける、FIFO(First-in-first-out)やスタックなど特殊化されたレジスタファイルアーキテクチャの実現が可能になる。FIFOやスタックなどの構造に必要とされる単純化されたアドレス方式により、レジスタファイルをアドレス指定するのに必要な制御ワードの標準部分11の大きさを、かなり縮小することができる。
図8aは、第2の好ましい実施形態によるプロセッサアーキテクチャを示し、プロセッサデータパス41と、再構成可能なハードウェアとしてのFPGAブロック31とを備えるデータパスを制御するためのプロセッサコントローラ40を伴う。FPGAブロック31は、アプリケーション特定装置ASUと関連レジスタファイルRFとからなる回路を実現するように配置される。アプリケーション特定装置ASUは、柔軟に組み立てられているため、アプリケーションの異なるループ内で使用されることが可能である。
図8aに示される本ケースでは、アプリケーション特定装置ASUおよびレジスタファイルRFは、アプリケーションのクリティカルループを加速するように配置され、そのアーキテクチャは柔軟性があるため、FPGAブロック31がすべてのクリティカルループで使用できる。なお、種々のループは、アプリケーション特定装置ASUに種々の動作を実行することを要求する。または関連レジスタファイルRFにおいて、種々のレジスタをアドレス指定することを要求する。この柔軟性を考慮にいれると、関連レジスタファイルRFおよびアプリケーション特定装置ASUのポートは、プロセッサデータパス41で発行された命令および制御信号のビットによって制御される。図8aでは、12の制御ビットが、読み込みアドレスを関連レジスタファイルRFに供給するために、関連レジスタファイルにアドレスを書き込むために、および、アプリケーション特定装置ASUのオプコードのために、それぞれ必要とされる。
しかしながら、これらの制御パラメータの多くは、特定のループ内で変化しない。従って、その特定のループまたは他の命令シーケンスに対して、FPGAブロック31にマップされた回路を制御するために、命令ワードにおいて12の制御ビットを供給する必要はない。従って、命令ワード幅は縮小し、命令メモリを節約する。
図8bは、ループの制御ワードのループ不変部分が巻き上げられた場合のFPGAブロック31の構成を示す。特に、特定のループ内で、アプリケーション特定装置ASUと関連レジスタファイルRFの間の6つの接続は、決して変化しないため、6つのレジスタが明示的にアドレスされる必要がない。このことは、3から1ビットに読み込みアドレスの幅を縮小する。また、アプリケーション特定装置ASUの動作の部分集合のみが、特定のループ内で必要とされるため、それぞれのオプコードの所定のビットがループ内で重複し、またFPGA構成そのものにおいて配線できる。その結果、全体として、7つのビットのみが(3つのホワイトアドレスビット、1つの読み込みアドレスビット、および3つのオプコードビット)、命令ワードにおいて特定のループ内でFPGAブロック31を制御するために必要である。
FPGAブロック31が柔軟性があるという事実により、FPGAブロックにマップされる変化するハードウェア構成は、制御ビットの縮小した数を正確に解釈するように再構成することができる。図8bでは、例えば、関連レジスタファイルRFのレジスタとアプリケーション特定装置ASUの間の二地点間接続(6つの対応する矢印で示される)が行われ、関連レジスタファイルRFのアドレスデコーダマルチプレクサの大きさが縮小され、そしてアプリケーション特定装置ASUの内部構成は、より小さい3ビットのオプコードを正しく解釈するために変えられる。場合によっては、与えられたループ内では実行されない動作に対応するソフト回路の部分を廃棄することにより、アプリケーション特定装置ASUそのものを小さく作ることが可能である。
従って、一般的な方策は、FPGAブロック31を制御するために使用可能な命令ワードにおけるビットの数を制限し、故に、命令メモリを節約する。縮小であるにもかかわらず、FPGAブロック31はなお、アプリケーションにおいていくつかの異なるクリティカルループに、巻き上げの概念を使用することにより使用することができる。
別の一般的な方策は、アプリケーションにおいて、どのクリティカルループが最も大きいループ不変部分を持つか、また巻き上げから一番利益を得るかを調べる。すると、これらのループは、FPGAブロック31のような再構成可能なハードウェア装置にマッピングするために選ばれ、ハード配線された装置およびプロセッサデータパス41の残りのレジスタファイルにマップされる代わりに、巻き上げを活用する。
なお、本発明は前述した好ましい実施形態に限定されることなく、少なくとも2つのデータ処理プログラムの命令のシーケンスをデータパスを制御するのに使用されるコードワードのシーケンスに復号する、プロセッサ環境に使用することができる。特に、提案された巻き上げの概念は、変化する部分と変化しない部分を持つコードワードシーケンスに復号される他の命令シーケンスにも使用できる。従って、好ましい実施形態は、添付された請求項の範囲内で変化することができる。
次に、本発明は、好ましい実施形態に基づいて図面を参照して詳細に説明される。
図1は、第1の好ましい実施形態による、2つの復号の選択を表す概略図を示す。 図2は、レジスタファイルのマルチプレクサベースの選択の例を示す。 図3は、第1の好ましい実施形態による制御ワードの標準部分からの構成部分の単純なカットでの分離を表す原理図である。 図4は、第1の好ましい実施形態によるコードワードの構成部分と標準部分を結合するための構成マスクおよび制御ワードローダの使用を表す原理図を示す。 図5は、第1の好ましい実施形態に使用できる制御ワードローダのアーキテクチャを表す概略図を示す。 図6は、図5による制御ワードローダのアーキテクチャに使用できるプログラム可能クロスポイントスイッチの例を示す。 図7は、第2の好ましい実施形態による、固定制御ワードに基づく再構成可能レジスタファイルを制御するアプローチを表す概略図を示す。 図8aは、第2の好ましい実施形態において使用可能な再構成可能ロジック装置の概略図を示す。 図8bは、第2の好ましい実施形態において使用可能な再構成可能ロジック装置の概略図を示す。

Claims (26)

  1. データ処理プログラムの少なくとも2つの命令のシーケンスを、データパスを制御するために使用されるコードワードのシーケンスに、復号する方法であって、前記方法は、
    a)前記コードワードのシーケンスにおいて変化しない不変コードワード部分を分離する工程と、
    b)前記不変コードワード部分を、前記コードワードのシーケンス中に固定される前記データパスの一部を構成するために使用する工程と、を備えることを特徴とする方法。
  2. 前記分離された不変コードワード部分を、専用メモリをアドレス指定するために使用する工程をさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記専用メモリをルックアップテーブル又は内容参照可能メモリとして実現する工程をさらに備えることを特徴とする請求項2に記載の方法。
  4. 前記専用メモリを前記データパスの複数の機能ユニットの間で共有する工程をさらに備えることを特徴とする請求項2または請求項3に記載の方法。
  5. 前記データパスのそれぞれの前記機能ユニットに割り当てられた複数の前記専用メモリを提供する工程をさらに備えることを特徴とする請求項2乃至請求項4のいずれかに記載の方法。
  6. 前記不変コードワード部分を新しいコードワードに拡張する工程と、前記新しいコードワードを前記データパスを制御するために使用する工程を、さらに備えることを特徴とする請求項2乃至請求項5のいずれかに記載の方法。
  7. 前記コードワードのシーケンスと同一の接続を使用して、前記データパスを、前記新しいコードワードによって制御する工程をさらに備えることを特徴とする請求項6に記載の方法。
  8. 前記同一の接続をマルチプレクサ機能を介して選択する工程をさらに備えることを特徴とする請求項7に記載の方法。
  9. 制御ワードにおける前記不変コードワード部分のビット位置を特定するための構成マスクを使用する工程をさらに備えることを特徴とする請求項2乃至請求項8のいずれかに記載の方法。
  10. 前記構成マスクは符号化されることを特徴とする請求項9に記載の方法。
  11. 前記構成マスクに基づいて、前記コードワードのビットを制御レジスタの適切な位置に向けるように制御ワードロード機能を制御する工程をさらに備えることを特徴とする請求項10に記載の方法。
  12. 前記構成マスクはバイナリパターンであることを特徴とする請求項10または請求項11に記載の方法。
  13. 前記制御レジスタに接続するためのスイッチング信号を生成するために、前記構成マスクを使用する工程をさらに含むことを特徴とする請求項12に記載の方法。
  14. 前記専用メモリの大きさを命令レジスタの大きさに対応するように選択する工程をさらに備えることを特徴とする請求項2乃至請求項13のいずれかに記載の方法。
  15. 前記データパスの前記部分を、再構成可能なハードウェアを使用することにより構成する工程をさらに備えることを特徴とする請求項1に記載の方法。
  16. 前記不変コードワード部分に基づいて構成コンテキストを選択する工程をさらに備えることを特徴とする請求項15に記載の方法。
  17. 前記再構成可能なハードウェアを制御する制御ビットの数を、前記コードワードのシーケンスに必要な構成に基づいて、減少させる工程をさらに備えることを特徴とする請求項15または請求項16に記載の方法。
  18. 前記少なくとも2つの命令のシーケンスを、最も大きい不変コードワード部分を持つ命令から選択し、前記選択された命令を前記再構成可能なハードウェアにマッピングする工程をさらに備えることを特徴とする請求項15乃至請求項17のいずれかに記載の方法。
  19. 前記少なくとも2つの命令のシーケンスは、前記データ処理プログラムのループ本体を形成することを特徴とする請求項1乃至請求項18のいずれかに記載の方法。
  20. データ処理プログラムの少なくとも2つの命令のシーケンスを、データパスを制御するために使用されるコードワードのシーケンスに復号する装置であって、前記装置は、
    a)前記コードワードにおいて変化しない不変コードワード部分を分離して生成する生成手段と、
    b)前記不変コードワード部分を受け取り、前記コードワードのシーケンス中に固定される前記データパスの一部を構成する構成手段、とを備えることを特徴とする装置。
  21. 前記構成手段は、前記不変コードワード部分に対応する新しい制御ワードを格納するための専用メモリ手段を備えることを特徴とする請求項20に記載の装置。
  22. 前記構成手段は、前記専用メモリ手段からの新しい制御ワードを前記データパスを制御する制御信号に復号するための復号手段をさらに備えることを特徴とする請求項21に記載の装置。
  23. 制御ワードロード手段を制御して、前記コードワードのシーケンスの可変コード部分におけるビットを、制御レジスタの適切なビット位置にロードする、構成マスクレジスタを、さらに備えることを特徴とする請求項20に記載の装置。
  24. 前記制御ワードロード手段は、プログラム可能なクロスポイントスイッチを備えることを特徴とする請求項23に記載の装置。
  25. 前記制御ワードロード手段は、前記プログラム可能なクロスポイントスイッチと前記構成マスクレジスタとに接続される、マスク解釈ロジックをさらに備えることを特徴とする請求項24に記載の装置。
  26. 前記構成手段は、前記不変コードワード部分に基づく再構成可能なハードウェア手段を備えることを特徴とする請求項20に記載の装置。
JP2004505874A 2002-05-22 2003-04-25 制御ワード巻き上げ Expired - Fee Related JP3924577B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP02077020 2002-05-22
PCT/IB2003/001849 WO2003098431A2 (en) 2002-05-22 2003-04-25 Method and apparatus for decoding instruction sequences

Publications (2)

Publication Number Publication Date
JP2005526322A true JP2005526322A (ja) 2005-09-02
JP3924577B2 JP3924577B2 (ja) 2007-06-06

Family

ID=29433173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004505874A Expired - Fee Related JP3924577B2 (ja) 2002-05-22 2003-04-25 制御ワード巻き上げ

Country Status (8)

Country Link
US (1) US20060059475A1 (ja)
EP (1) EP1509840B1 (ja)
JP (1) JP3924577B2 (ja)
KR (1) KR20040111650A (ja)
CN (1) CN1324458C (ja)
AU (1) AU2003223057A1 (ja)
TW (1) TW200404256A (ja)
WO (1) WO2003098431A2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602005018736D1 (de) * 2004-12-22 2010-02-25 Ericsson Telefon Ab L M Wasserzeichenmarkierung eines Computerprogrammcodes mittels äquivalenter mathematischer Ausdrücke
US9477467B2 (en) 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US9904549B2 (en) * 2015-12-26 2018-02-27 Intel Corporation Method and apparatus for loop-invariant instruction detection and elimination
US10229470B2 (en) * 2016-08-05 2019-03-12 Intel IP Corporation Mechanism to accelerate graphics workloads in a multi-core computing architecture
US11044099B2 (en) * 2018-12-28 2021-06-22 Intel Corporation Technologies for providing certified telemetry data indicative of resources utilizations
CN114489792B (zh) * 2021-03-25 2022-10-11 沐曦集成电路(上海)有限公司 处理器装置及其指令执行方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01284926A (ja) * 1988-05-12 1989-11-16 Fujitsu Ltd 演算装置の命令読出方式
US5941986A (en) * 1993-04-30 1999-08-24 Intel Corporation Micro-code sequencer with branch-taken and branch-not-taken micro-code vectors sharing common address to eliminate taken branch penalties
JPH09198254A (ja) * 1996-01-17 1997-07-31 Nec Ic Microcomput Syst Ltd コンパイラの最適化装置及びその方法
US5812856A (en) * 1997-06-23 1998-09-22 Motorola, Inc. Efficient ROM and PLA recoding to save chip area
US6198691B1 (en) * 1997-07-03 2001-03-06 Microchip Technology Incorporated Force page paging scheme for microcontrollers of various sizes using data random access memory
US6044429A (en) * 1997-07-10 2000-03-28 Micron Technology, Inc. Method and apparatus for collision-free data transfers in a memory device with selectable data or address paths
GB2359641B (en) * 2000-02-25 2002-02-13 Siroyan Ltd Mapping circuitry and method

Also Published As

Publication number Publication date
CN1656444A (zh) 2005-08-17
AU2003223057A8 (en) 2003-12-02
WO2003098431A3 (en) 2004-03-11
WO2003098431A2 (en) 2003-11-27
CN1324458C (zh) 2007-07-04
TW200404256A (en) 2004-03-16
KR20040111650A (ko) 2004-12-31
EP1509840A2 (en) 2005-03-02
AU2003223057A1 (en) 2003-12-02
US20060059475A1 (en) 2006-03-16
EP1509840B1 (en) 2018-08-08
JP3924577B2 (ja) 2007-06-06

Similar Documents

Publication Publication Date Title
KR100300001B1 (ko) 명령어요소들의재조합에의한서로다른명령어코드들사이의동적변환
US7249351B1 (en) System and method for preparing software for execution in a dynamically configurable hardware environment
JP3762841B2 (ja) 処理デバイスに命令ストリームを供給する方法及び装置
US6948158B2 (en) Retargetable compiling system and method
CN1148647C (zh) 数据处理系统及其控制方法
US7120903B2 (en) Data processing apparatus and method for generating the data of an object program for a parallel operation apparatus
US7313671B2 (en) Processing apparatus, processing method and compiler
JPH09128238A (ja) Cpuデータ経路における同時入出力動作のための複数レジスタバンクシステム
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
US5964861A (en) Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set
US20060265571A1 (en) Processor with different types of control units for jointly used resources
WO2002003592A2 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
JP3924577B2 (ja) 制御ワード巻き上げ
JP3805314B2 (ja) プロセッサ
JP2006236106A (ja) データ処理装置及びデータ処理方法
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
KR100308211B1 (ko) 압축 명령을 갖는 마이크로 컴퓨터 시스템
US8549466B2 (en) Tiered register allocation
JP2002333976A (ja) マイクロプロセッサ
US20070169022A1 (en) Processor having multiple instruction sources and execution modes
WO2005036384A2 (en) Instruction encoding for vliw processors
US6038659A (en) Method for using read-only memory to generate controls for microprocessor
EP0862111B1 (en) Dynamic conversion between different instruction codes by recombination of instruction elements
JP2004302827A (ja) マイクロコントローラ
JPH11306015A (ja) 演算処理方法及びそれを用いたマイクロコンピュータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070226

R150 Certificate of patent or registration of utility model

Ref document number: 3924577

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20120302

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20120302

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130302

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130302

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140302

Year of fee payment: 7

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

LAPS Cancellation because of no payment of annual fees