(57)【要約】複数のプロセッサ要素（６）からプロセッサ・システムが形成される。処理要素を伴った使用のために、複数のレジスタ（８）が提供され、命令デコーダ（４）は、マルチプル・レジスタ・ロード命令としての少なくとも１つの超長命令語（ＶＬＩＷ）の第１の部分をデコードするために構成される。ＶＬＩＷの２番目に長い部分は、複数のレジスタの複数の個々のレジスタのローディングをエネーブルするためのデータとしてデコードされる。【特許請求の範囲】
【請求項１】
処理要素のアレイ、当該処理要素と共に使用するための複数のレジスタ、及び、マルチプル・レジスタ・ロード命令としての少なくとも１つの超長命令語（ＶＬＩＷ）の第１の部分及び複数のレジスタのうちの複数の個々のレジスタのローディングをエネーブルするためのデータとしてのＶＬＩＷの２番目に大きな部分をデコードするために構成された命令デコーダ、を備えるプロセッサ・システム。
【請求項２】
ＶＬＩＷ命令の前記２番目に大きい部分が、複数の単一ビットであって、その命令によってアドレス指定された各レジスタに対して当該複数の単一ビットの１つずつが、そのレジスタのローディングをエネーブルする、複数の単一ビットを含む、請求項１に記載のプロセッサ・システム。
【請求項３】
各（every）レジスタに対して単一ビットが存在する、請求項２に記載のプロセッサ・システム。
【請求項４】
ＶＬＩＷ命令が、レジスタ内にロードされるべきデータのためのメモリ・アドレスを含む、以上のいずれかの請求項に記載のプロセッサ・システム。
【請求項５】
連続的メモリ・アドレスをアドレス指定し、当該連続的アドレスからデータを、連続的にアドレス指定されたレジスタ内にロードする手段を含む、請求項４に記載のプロセッサ・システム。
【請求項６】
単一ビットが、対応付けられたレジスタのローディングをエネーブルするための第１の値、及び、そのレジスタのローディングをディス・エーブルするための第２の値をとる、請求項２に記載のプロセッサ・システム。
【請求項７】
データを、プロセッサ・システム内の処理要素のアレイに対応付けられた複数のレジスタ内にローディングするための方法であって、
マルチプル・ロード命令としてのＶＬＩＷ命令の第１の部分を識別し、
レジスタのローディングをエネーブルするためのデータとしてのＶＬＩＷ命令の２番目に大きな部分を識別し、そして、
ＶＬＩＷ命令の第２の部分内のデータに従属して、レジスタをローディングする、
ステップを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の独立処理要素（independent processing elements）をアドレス指定（address）するために使用されるタイプの超長命令語（ＶＬＩＷ）を用いたマルチプル・レジスタ・ロードを伴うマルチプル・プロセス又はシステムに関連し、特に、大きな数のオペレーションを平行して実行するプロセッサのアレイとともに使用され得るマルチプル・レジスタ・ロード（multiple register loads）に関連する。
【背景技術】
【０００２】
プロセッサ・システムにおいて、複数の独立の処理要素（processing elements）、処理得を実行するために処理要素によって要求されるデータ値を格納するためのレジスタ・バンク、メモリからレジスタ・バンク内にデータ値を挿入するためのメモリ・ユニット、及び、処理要素にオペレーション・コードを提供するための命令デコーダ、が一般的に提供される。そのようなシステムは、超長命令語（ＶＬＩＷ）（一般的に、６４ビットを超え、いくつかのフィールド内に分割され、独立処理要素を制御する）として知られるものによってアドレス指定される。ＶＬＩＷは、命令デコーダ（又はＶＬＩＷプロセッサ）に提供される。ＶＬＩＷプロセッサは通常、ロード／ストア・アーキテクチャとして知られるものに基礎を置く。この中において、限定された数のＶＬＩＷフィールドが使用されて、アドレス・ユニットを介して、レジスタ・バンク内のプロセッサ・レジスタのローディング／ストアリングを制御する。
【０００３】
例えば、データ・ベクトル又はマトリックスを処理するために、処理要素をセット・アップするときに、これらのオペレーションを、いくつかの反復ループとして実行するために、コードを構造化する（structure）ことが通常の慣習である。これが為されるときに、反復ループの実行が要求されるコードのラインの殆どが、ループ実行が始まる前に、プロセッサ状態を初期化するために用いられる場合がしばしば起こる。これには、種々のレジスタへの、データ値のローディングが含まれる。ＶＬＩＷ内の限定された数のフィールドだけが、プロセッサ・レジスタのローディング／ストアリングのために使用されるので、このタイプの処理を実行するためのプロセッサのセット・アップは、マルチプル命令語（その各々が、小さな数のレジスタのローディングを指定する）を必要とすることになる。もし、より大きな数のレジスタが使用されているならば、このプロセスは複数回反復される必要がある。これを理由として、命令メモリは効率的に使用されず、命令メモリが、所定の機能（function）を実行するために、シリコンのより大きな領域が要求される。これはより高価となり、メモリのサイズが重要なファクターである場合に、特に問題となり得る。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明の好ましい実施例は、マルチプル・レジスタ・ロード命令として超長命令語（ＶＬＩＷ）の第１の部分をデコードし、システムと対応付けられたレジスタ・バンク内のマルチプル・レジスタのローディングを可能とするためのデータとしてＶＬＩＷ命令語の２番目に大きい部分をデコードするように構成された命令デコーダを伴うプロセッサ・システムを提供する。
【０００５】
好ましくは、命令の２番目に大きな部分は、複数の単一ビット・フィールド（そのレジスタのローディングを可能とするために、その命令によってアドレス指定される各レジスタに対して１つづつ）を含む。
【０００６】
好ましくは、命令の２番目に大きな部分は、システム内の各（every）レジスタに対して単一のビット・フィールドを含む。
本発明は、より正確には添付の請求項（これに対して、今、参照が為されるべきである）において規定される。
【発明を実施するための最良の形態】
【０００７】
本発明の好ましい実施例が、添付の図面を参照した例を用いてこれから詳細に説明される。
【０００８】
図１に示されるＶＬＩＷ命令語は、トータルで９６ビットが、１３個の不均等であるが固定された長さの命令フィールドに分割されたものを含む。各フィールドは、単一の処理要素を制御するために使用される。処理要素の機能性（functionality）は、残りのビットがデータ（それについてオペレーションが実行されるべき）のためのソース及び行先レジスタを指定するために使用されているような、フィールド内のビットのサブ・セットによって規定される。最初の２つのフィールド（フィールド１及び２）は、処理要素への後続の命令で使用されるレジスタを初期化するために要求されるロード／ストア・タイプのオペレーションを規定するために使用される。
【０００９】
命令フィールド１は、図２に、より詳細に示される。このフィールドは、トータルで２０ビットである。最初の６ビットは、オペレーション・コード（opcode）である。これは、このフィールドを最初に、ロード／ストア命令として認識することになる命令デコーダによって実行されるべきオペレーションを規定（define）するために用いられる。命令フィールドの残りの１４ビットは、５つの別個の値、すなわち、arg１からarg５として番号付けされた引数（arguments）である。opcode及び引数は、１つのクロック・サイクルでのプロセッサ要素のオペレーション、及び、処理されるべきデータのソース及び行先のために使用されるレジスタを完全に規定する。
【００１０】
本発明の実施例におけるマルチプル・レジスタ・ロードで使用される命令のフォーマットが、図３に示される。この中で、図１のフィールド１〜１２は、６ビットのopcode及びarg１からarg３に番号付けされた３つの引数によって置換されている。opcodeは、既知の処理システムでは使用されていない特別の意味を持ち、即時（immediate）引数として提供されたアドレスからのマルチプル・ロードを指定するか、レジスタ内に保持されたアドレスからのマルチプル・ロードを指定するかのいずれかのために使用される。arg１は、メモリ内のデータのフォーマットを指定するために使用される。これは、複合（complex）或いは倍精度フォーマットであり得る。arg２は、opcodeが即時アドレスからのロードを指定する場合の１６ビット即時（immediate）アドレスか、opcodeがレジスタ内に保持されたアドレスからのロードを指定する場合のアドレス・レジスタの身元（identity）か、のいずれかを保持する。
【００１１】
arg３は、レジスタ・ロード・マスクである。これは、複数の単一ビット（各々が、ロードされ得るレジスタに対応する）を含むフィールドを備える。もし、ビット・フィールドが、１を含むならば、その位置と対応付けられたレジスタのロードが、エネーブルされる。もし、フィールドが、０を含むならば、ロードが、ディス・エーブルされる。この特定の例において、マシン（machine）は、データ処理要素と対応付けられた３６個のレジスタ、及び、アドレシング・ユニットと対応付けられた更なる３１個のレジスタを持つ。それ故、arg1のサイズは６７ビットである。この命令におけるopcode及び引数のサイズは勿論、アプリケーションに固有のものである。本システムは、プロセッサ要素アレイ及びロードされるべきレジスタ・バンクのサイズに従って、命令をデコードするために構成されうる。
【００１２】
レジスタ内にロードされるべき値を保持するメモリは、好ましくは、１つの増分（unity increment）にリニア（linearly）にアクセスされる。レジスタ・ロード・マークで指定された、各レジスタに対する自動増加が実行される。それ故、一旦初期アドレスが、アクセスされると、システムは、各レジスタ内に交互に（in turn）値をロードしつつ、連続的アドレスを通じて循環（cycle through）する。
【００１３】
好ましくは、いくつかのレジスタがロードされるべきでない場合には、レジスタ・ロードが、到達される（reached）まで、自動増加（autoincrement）は、ディス・エーブルされる。それ故、もし、レジスタのうち２８だけがロードされるべきであったならば、２８の連続的メモリ位置が、それらの中にロードされるべきデータの格納のために使用されることになろう。
【００１４】
単一のＶＬＩＷ命令内で指定されるが、マルチプル・レジスタ・ロードの実行は、いくつかのマシン実行サイクルを消費することが理解されるであろう。レジスタ・ロード・マスクによって指定されたように、個々のレジスタ・ロードを満足させるために要求されるマルチプル・メモリ・アクセスを生成するために、プロセッサの命令デコーダ・ユニットはこの命令の順序付けを取り扱う。図３に与えられる例において、フィールド13は依然としてそのプロセッサ要素の制御のために利用可能である（全てのシステムがこれを許容する訳ではないが）。もしマシンが、より少ないレジスタしか包含しないならば、レジスタ・ロード・マスクはより短くなり、マルチプル・ロード・オペレーションを伴って、他のプロセッサ要素を平行に制御するために、より多くのフィールドが利用可能となり得ることになる。
【００１５】
図４は、システム（その中で本発明が実現され得る）のブロック図を示す。これは、ＶＬＩＷ命令メモリ２を含む。これは、命令デコーダ４にカップルされる。命令デコーダは、それにＶＬＩＷ命令を提供するＶＬＩＷ命令メモリ４に命令フェッチ信号５を送る。命令デコーダは、プロセッサ要素６にカップルされて、ＶＬＩＷ命令メモリ２から検索されたＶＬＩＷ命令語からそれらのプロセッサ要素に行先を定められたopcodesを提供する。それは、レジスタ８のバンク（これらは次に、レジスタ８内にロードされうる値を格納するデータ・メモリ１０にカップルされる）にもカップルされる。
【００１６】
通常のオペレーションにおいて、命令デコーダ４は、プロセッサ要素６が、図１のフォーマット（すなわち、夫々１つが、それに対して行先が定められた、opcode及びアクセスされるべきレジスタを指定する種々の引数を備える、図２のタイプのフィールドを持つ）を持つ、ＶＬＩＷ命令内で受け取ったopcodesを実行することをひき起こす。
【００１７】
命令デコーダ４が、図３のフォーマットを有するマルチプル・ロード命令を受け取るときに、それは、マルチプル・ロードopcodeとして初期opcodeを認識する。メモリ内のデータのフォーマットは、arg１及びarg２によって識別され、次に、もしopcodeがレジスタ内に保持されたアドレスからのロードを指定し、もしopcodeが即時アドレスからのロード或いはアドレス・レジスタの身元（identity）を指定するならば、１６ビット即時（immediate）アドレスを指定する。
【００１８】
もし、命令が即時メモリからロードされるべきものならば、データは最初は、データ・メモリ１０で指定された即時アドレスから、レジスタの最初のものの中にロードされる。連続的アクセスは次に、各レジスタに対するそれぞれのビットが、ロードをエネーブルするか否かに従属して、データ・メモリ10の連続的アドレスから値を、レジスタ８内にロードする。
【００１９】
opcode６は、各レジスタが、その中にロードされたデータ・メモリからの同じ値を持たねばならぬことを指定し得るか、或いは、それは、連続的メモリ位置が、使用されるべきことを指定し得る。
【図面の簡単な説明】
【００２０】
【図１】ＶＬＩＷ命令語の例を示す。
【図２】図１のＶＬＩＷ命令語の命令フィールド１を詳細に示す。
【図３】本発明の実施例で使用される命令語を示す。
【図４】本発明を実現するシステムのブロック図を示す。
2006526194.tif 000002
【誤訳訂正書】
【提出日】平成17年9月28日(2005.9.28)
【誤訳訂正１】
【訂正対象書類名】図面
【訂正対象項目名】図４
【訂正方法】変更
【訂正の内容】
【図４】
2006526194.tif 000003
【手続補正１】
【補正対象書類名】      図面
【補正対象項目名】      図１
【補正方法】            追加
【補正の内容】
【図１】
2006526194.tif 000004
【手続補正２】
【補正対象書類名】      図面
【補正対象項目名】      図２
【補正方法】            追加
【補正の内容】
【図２】
2006526194.tif 000005
【手続補正３】
【補正対象書類名】      図面
【補正対象項目名】      図３
【補正方法】            追加
【補正の内容】
【図３】
2006526194.tif 000006