(57)【特許請求の範囲】
【請求項１】
１以上のプログラム可能な処理要素、及び
シーケンサーであって、複数のインタープリテーションレジスタから、命令ストリームの中の命令に含まれるタイプＩＤの値をもとに一つのインタープリテーションレジスタを選択し、当該選択されたインタープリテーションレジスタの値をもとに、複数の命令グループから一つの命令グループを取得し、当該取得された命令グループから、前記命令に含まれるｏｐコードの値をもとにコマンドを決定し、前記処理要素に前記コマンドを送るシーケンサー
を備え、
各インタープリテーションレジスタの値は前記命令の実行によって変更可能であり、異なるオペランドデータフォーマットで動作する同じ演算が、前記複数の命令グループの中の少なくとも二つの異なる命令グループ内の同じｏｐコード位置に定義される、プログラム可能な論理演算装置。
【請求項２】
前記命令ストリームが処理命令とシーケンシング命令の両方を含む、請求項１に記載の演算装置。
【請求項３】
前記命令ストリームが処理命令とシーケンシング命令の両方を含み、前記処理命令と前記シーケンシング命令の両方が前記タイプＩＤを含み、且つ前記タイプＩＤも各命令が処理命令であるか又はシーケンシング命令であるかを示す、請求項１に記載の演算装置。
【請求項４】
前記命令ストリームが処理命令とシーケンシング命令の両方を含み、前記シーケンシング命令が前記インタープリテーションレジスタの少なくとも一部の値を変更するコマンドを含むことができる、請求項１に記載の演算装置。
【請求項５】
前記コマンドが少なくとも１つの前記シーケンサーによって解凍され、前記命令ストリームが処理命令とシーケンシング命令の両方を含み、且つ前記シーケンシング命令が、前記処理要素ではなく前記シーケンサーによって実行される設定コマンドであって、インタープリテーションレジスタの値を変更するコマンドを含む設定コマンドを含むことができる、請求項１に記載の演算装置。
【請求項６】
前記コマンドが少なくとも１つの前記シーケンサーによって解凍され、且つ前記シーケンサーが、ＳＩＭＤコンフィギュレーションに含まれる複数の処理要素に対し、単一の命令ストリームを同報通信する、請求項１に記載の演算装置。
【請求項７】
前記命令の各々が単一のｏｐコードのみを指定する、請求項１に記載の演算装置。
【請求項８】
前記処理命令の各々が、前記インタープリテーションレジスタの各部分を選択するインデックス番号を含み、且つ前記シーケンサーが、前記インタープリテーションレジスタの各部分を使用することにより前記処理命令の各々を解凍する、請求項２−５のいずれか一項に記載の演算装置。
【請求項９】
１以上のプログラム可能な処理要素、及び、少なくとも１つのシーケンサを備える論理演算装置において、命令ストリームを実行する方法であって、
ａ）前記シーケンサが、前記命令ストリームに含まれる各命令のタイプＩＤフィールドをもとに、複数のインタープリテーションレジスタの中から、一つのインタープリテーションレジスタを選択し、前記選択されたインタープリテーションレジスタの値をもとに、複数の命令グループの中から一つの命令グループを取得し、当該取得された命令グループから、各命令のｏｐコードフィールドをもとに、コマンドを決定することによって、命令の各々を解釈し、前記処理要素に前記コマンドを送るステップ、及び
ｂ）前記ステップ（ａ）に従って、前記命令を実行するステップ
を含み、
各インタープリテーションレジスタの値は命令の実行によって変更可能であり、異なるオペランドデータフォーマットで動作する同じ演算が、前記複数の命令グループの中の少なくとも二つの異なる命令グループ内の同じｏｐコード位置に定義される、前記命令ストリームの実行方法。
【請求項１０】
前記命令ストリームが処理命令とシーケンシング命令の両方を含む、請求項９に記載の方法。
【請求項１１】
前記命令ストリームが処理命令とシーケンシング命令の両方を含み、且つ前記タイプＩＤも、各命令が処理命令であるか又はシーケンシング命令であるかを示す、請求項９に記載の方法。
【請求項１２】
前記命令ストリームが処理命令とシーケンシング命令の両方を含み、且つ前記シーケンシング命令が、前記インタープリテーションレジスタの少なくとも一部の値を変更するコマンドを含むことができる、請求項９に記載の方法。
【請求項１３】
前記コマンドが前記少なくとも１つのシーケンサーによって解凍され、前記命令ストリームが処理命令とシーケンシング命令の両方を含み、且つ前記シーケンシング命令が、前記処理要素ではなく前記シーケンサーによって実行される設定コマンドであって、インタープリテーションレジスタの値を変更するコマンドを含む設定コマンドを含むことができる、請求項９に記載の方法。
【請求項１４】
前記コマンドが前記少なくとも１つのシーケンサーによって解凍され、且つ前記シーケンサーが、ＳＩＭＤコンフィギュレーションに含まれる複数の前記処理要素に対し、単一の命令ストリームを同報通信する、請求項９に記載の方法。
【請求項１５】
前記命令の各々が単一のｏｐコードのみを指定する、請求項９に記載の方法。
【請求項１６】
前記処理命令の各々が、前記インタープリテーションレジスタの各特定部分を選択するインデックス番号を含み、且つ前記インタープリテーションレジスタの各特定部分を使用することにより、前記シーケンサーが前記処理命令の各々を解凍する、請求項１０−１３のいずれか一項に記載の方法。
【請求項１７】
ａ）一連の処理命令の各命令のタイプＩＤフィールドをもとに、複数のインタープリテーションレジスタの中から、一つのインタープリテーションレジスタを選択し、前記選択されたインタープリテーションレジスタの値をもとに、複数の命令グループの中から一つの命令グループを取得し、当該取得された命令グループから、各命令のｏｐコードフィールドをもとに、コマンドを決定することによって、命令の各々を解釈するステップであって、前記タイプＩＤフィールドがシーケンサー命令と処理要素命令とを区別し、更には処理要素命令の複数の異なるフォーマットを区別するステップ、及び
ｂ）前記ステップ（ａ）に従って、前記命令を実行するステップ
を含み、
各インタープリテーションレジスタの値は命令の実行によって変更可能であり、異なるオペランドデータフォーマットで動作する同じ演算が、前記複数の命令グループの中の少なくとも二つの異なる命令グループ内の同じｏｐコード位置に定義される、前記一連の処理命令の実行方法。
【請求項１８】
前記シーケンサー命令が、前記インタープリテーションレジスタの少なくとも一部の値を変更するコマンドを含むことができる、請求項１７に記載の方法。
【請求項１９】
前記コマンドが少なくとも１つのシーケンサーによって解凍され、且つ前記シーケンサー命令は前記シーケンサーによってのみ実行される設定コマンドを含むことができる、請求項１７に記載の方法。
【請求項２０】
前記シーケンサー命令が、インタープリテーションレジスタの値を変更するコマンドを含むことができる、請求項１７に記載の方法。
【請求項２１】
前記コマンドが少なくとも１つのシーケンサーによって解凍され、且つ前記シーケンサーが、ＳＩＭＤコンフィギュレーションに含まれる複数の処理要素に対し、単一の命令ストリームを同報通信する、請求項１７に記載の方法。
【請求項２２】
前記処理命令の各々が単一のｏｐコードのみを指定する、請求項１７に記載の方法。
【請求項２３】
命令ストリーム中の処理命令の各々が、ｏｐコードと、複数のインタープリテーションレジスタからの選択を行うタイプＩＤの両方を含み、
前記インタープリテーションレジスタの一部が、選択された前記インタープリテーションレジスタに応じて異なるように、コマンドを解釈するための情報を含み、且つ
前記タイプＩＤの値をもとに複数のインタープリテーションレジスタの中から、一つのインタープリテーションレジスタを選択し、前記選択されたインタープリテーションレジスタに格納された情報をもとに、複数の命令グループの中から一つの命令グループを取得し、当該取得された命令グループから、前記ｏｐコードの値によってコマンドを決定することにより、命令を生成して１以上の処理要素に送るシーケンシング論理が接続され、
各インタープリテーションレジスタの値は命令の実行によって変更可能であり、異なるオペランドデータフォーマットで動作する同じ演算が、前記複数の命令グループの中の少なくとも二つの異なる命令グループ内の同じｏｐコード位置に定義される、演算アーキテクチャ。
【請求項２４】
前記命令ストリームが、前記処理命令と、前記シーケンシング論理によって実行されるシーケンシング命令の両方を含む、請求項２３に記載のアーキテクチャ。
【請求項２５】
前記命令ストリームが前記処理命令とシーケンシング命令の両方を含み、前記処理命令と前記シーケンシング命令の両方が前記タイプＩＤを含み、且つ前記タイプＩＤも各命令が処理命令であるか又はシーケンシング命令であるかを示す、請求項２３に記載のアーキテクチャ。
【請求項２６】
前記命令ストリームが前記処理命令とシーケンシング命令の両方を含み、シーケンシング命令がインタープリテーションレジスタの値を変更するコマンドを含むことができる、請求項２３に記載のアーキテクチャ。
【請求項２７】
前記命令ストリームが、前記処理命令と、前記シーケンシング論理にインタープリテーションレジスタの値を変更させるシーケンシング命令の両方を含む、請求項２３に記載のアーキテクチャ。
【請求項２８】
前記シーケンシング論理が、ＳＩＭＤコンフィギュレーションに含まれる複数の処理要素に対し、単一の命令ストリームを同報通信する、請求項２３に記載のアーキテクチャ。
【請求項２９】
前記処理命令の各々が単一のｏｐコードのみを含む、請求項２３に記載のアーキテクチャ。
【請求項３０】
１のストリーム内において処理命令とシーケンシング命令とが混合されており、各命令はタイプＩＤとｏｐコードを含み、
処理命令を受け取り、複数のインタープリテーションレジスタの中から、前記タイプＩＤの値によって一つのインタープリテーションレジスタを選択し、前記選択されたインタープリテーションレジスタの値によって、複数の命令グループの中から一つの命令グループを取得し、当該取得された命令グループから、前記ｏｐコードの値によってコマンドを決定することにより、１以上の処理要素用の実行可能なコマンドを生成する少なくとも１つのシーケンサーが接続され、且つ
前記接続されるシーケンサーはシーケンシング命令も受け取って、前記シーケンシング命令の少なくとも１つに応じて前記インタープリテーションレジスタの値を変更することができ、
異なるオペランドデータフォーマットで動作する同じ演算が、前記複数の命令グループの中の少なくとも二つの異なる命令グループ内の同じｏｐコード位置に定義される、
演算アーキテクチャ。
【請求項３１】
前記命令ストリームが、前記処理命令とシーケンシング命令の両方を含み、前記処理命令と前記シーケンシング命令の両方が前記タイプＩＤを含み、且つ前記タイプＩＤも、各命令が処理命令であるか又はシーケンシング命令であるかを示す、請求項３０に記載のアーキテクチャ。
【請求項３２】
前記シーケンサーが、ＳＩＭＤコンフィギュレーションに含まれる複数の処理要素に対し、単一の命令ストリームを同報通信する、請求項３０に記載のアーキテクチャ。
【請求項３３】
前記処理命令の各々が単一のｏｐコードのみを含む、請求項３０に記載のアーキテクチャ。
【請求項３４】
請求項１に記載の演算装置を複数個相互接続してなる多重処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサのアーキテクチャにおける命令の処理に関し、特に並行処理アーキテクチャを使用したマルチメディア処理に関する。
【背景技術】
【０００２】
あらゆるマイクロプロセッサ（又はアナログのプログラム可能なプログラマブルロジック）は命令ストリームをハードウエア内の電気的操作に変換しなければならない。最低でも、命令の論理的ビットが適切な電気信号に変換されて物理的装置（例えば、トランジスタ、ゲート、ラッチ、又はレジスタ）に送られなければならない。これを実行するための１つの一般的な方法がマイクロコード化された命令であり、この場合、既知のハードウエア構造内において多数のビットにより様々なラインに適用される信号が指定される。各命令に含まれる殆ど全ての出力が指定されるため、このような命令は必然的に大きくなる。更に、マルチプロセッサを搭載する場合、このような命令は更に扱いにくいものになる。
マイクロコード化されたプログラムのバルクを低減するために様々な試みがなされている。マイクロコードのバルクを低減するために提案されている１つの方法は、「垂直型」マイクロモードとして知られているものである。この方法は、格納要件を低減するために、復号テーブルを使用する。この復号テーブルが定義されることにより、各マイクロコード命令には、命令自体よりずっと短い固有の「名前」が与えられる。（例えば、命令の数が２５６個以下である場合、個別の命令の長さが数百ビットに及ぶ場合も、各々を８ビットの名前で呼ぶことができる。）命令の短い「名前」は垂直型マイクロコードと呼ばれ、実行可能な実際のマイクロコード命令は「水平型」マイクロコードと呼ばれる。この方法では、完全な命令ではなく命令フィールドをコード化するために時にルックアップテーブルが使用される。これにより、ルックアップのために必要なメモリスペースが低減される。適切なフィールドの組み合わせには追加的論理が必要である。垂直型マイクロコード方式は、時間が掛かりすぎるために今では殆ど使用されていない。
プロセッサは通常、限定された量の書き込み可能な制御記憶装置（「ＷＣＳ」）しか有していない。一度にＷＣＳに入れなければならないルーティンが多すぎるとき、何らかのオーバーレイフォームが必要である。設定時にマイクロコードをロードするためにシリアルループを使用することができるが、ホストが命令をロードするには常に非常に時間が掛かるため（例えば、ディスクアクセスにより１００マイクロ秒〜３分／命令）、シリアルループを使用してオーバーレイをロードするのは現実的でない。一部のアレープロセッサはマイクロコードのオーバーレイ機能を提供するが、これらは通常（ｐｏｌｌｅｄ  Ｉ／Ｏ又はＤＭＡを使用する）ホスト駆動型であり、通常のマイクロコードロードメカニズムを介して使用される。
【０００３】
並行処理ハードウエアに対処する１つの方法では、命令レベルの並行性を使用する。この注目すべき例がＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）アーキテクチャである。このアーキテクチャでは、単一の命令が、ハードウエアの別個の並行部分のための複数のフィールド、例えば並行化した別個のＡＬＵや、場合によっては選択的なロジック条件のための複数のフィールドを含むことができる。
【発明の概要】
【０００４】
分類された命令のセットを用いる処理アーキテクチャ
本出願は、新規のインダイレクションレイヤを加えたマイクロプロセッサ等のための新規のアーキテクチャについて記載する。命令のシーケンスには、個々の命令の変換方法を定義したタイプアイデンティファイアが含まれる。（必須ではないが好ましくは、タイプアイデンティファイアは一組のインタープリテーションレジスタを指し示し、選択されたレジスタは、解凍されて実行可能となった命令を生成するために元の命令のｏｐコードと組み合わされる挿入物を含む。）
このアーキテクチャは、従来のＶＬＩＷアーキテクチャが持つ多くの欠点を克服し、様々な実施形態において、少なくとも以下に挙げる利点のうちの１つ以上を提供する。
・既存のプログラムとの下位互換性を維持しながら、命令セットを解凍することができる。
・プログラムコードの密度が従来のＶＬＩＷ命令セットと比べて非常に高い。
・処理されるデータのタイプに関係なくアルゴリズムをコード化することができる。
【図面の簡単な説明】
【０００５】
ここに開示される本発明について、添付図面を参照して説明する。添付図面は、本発明の重要な例示的実施形態を示すものであり、ここで参照することにより本明細書に包含される。
【０００６】
【図１】適切な命令グループを取得するために適切なインタープリテーションレジスタ（この実施例ではタイプレジスタ）のオンザフライ選択を用いて命令を復号する方法の模式図である。
【図２】本発明を有利に実現することが可能なプロセッサアーキテクチャの一実施例を示す。（後述するように、本発明は多数の異なるアーキテクチャにおいても実現することができる。）
【図３】本発明を有利に実現することが可能な処理クラスターの一実施例を示す。（後述するように、本発明は多数の異なるアーキテクチャにおいても実現することができる。）
【発明を実施するための形態】
【０００７】
本出願の多数の新規な教示について、特に上記実施形態を参照して説明する。（例示を目的とするものであり、限定的なものではない。）
分類された命令のセットは、従来のＶＬＩＷアーキテクチャの欠点の多くを克服する新規の命令フォーマット及び復号スキームであり、少なくとも以下の利点を有する：
・既存のプログラムとの下位互換性を保持しながら、命令のセットを解凍することができる。
・従来のＶＬＩＷの命令セットと比較してプログラムコード密度が非常に高い。
・処理されるデータの種類に関係なくアルゴリズムをコード化することができる。
【０００８】
図１は、適切なインタープリテーションレジスタ（この実施例ではタイプレジスタ）のオンザフライ選択を用いて命令を復号することにより適切な命令グループを取得する方法を模式的に示す。図１に示すように、各命令は、タイプレジスタ（１２０）のアレーから１つのタイプレジスタを選択するために使用されるタイプＩＤフィールド（１１０）を含む。各タイプレジスタは使用するべき命令グループ（１３０）を保持しており、命令のＯｐコードフィールドには、マイクロプロセッサに提示される最終命令（１４０）を決定するための命令グループ用インデックスが付与されている。
この例示的な実施形態では、全ての命令は３２ビットの固定サイズを有する。各命令は３ビットのタイプＩＤと、４ビットのＯｐコードフィールドと、条件付命令を示すための１ビットと、オペランドを指定するための２４ビットとを含んでいる。命令は、シーケンサー命令又はＰＥ（処理要素）命令とすることができる。この実施形態では、シーケンサー命令が単一のシーケンサーを導き、これは処理要素を制御するのに必要なハードウエアの償却を助ける。ＰＥ命令は別のレベルのインダイレクションを有する。
【０００９】
この例示的実施形態では、タイプＩＤは３ビットからなる。８つの可能なタイプＩＤの値のうちの２つが、シーケンサー命令を示すために保存され、残りの６つの値が処理要素（ＰＥ）命令を示し、且つ６つのタイプレジスタのうちの１つを選択する。
この例示的実施形態では、各タイプレジスタの幅は６４ビットであり、それぞれが１６個以内の命令を含むことができる６４の可能な命令グループの中から１つを選択するための６ビットのフィールドを含む。各タイプレジスタの残りの５８ビットは、オペランド制御情報を指定する。オペランド制御情報には、これらに限定されないが、ベクトル長、ベクトル要素間の間隔、各ＰＥレジスタファイルを読み書きするときに各オペランドを入れ換えなければならないかどうか、及びＰＥ内の様々なフラグ及びマスクレジスタを使用してベクトル演算の各要素を制御する方法が含まれる。
【００１０】
この例示的実施形態では、ｏｐコードは４ビットである。このコードは、命令グループに含まれる１６個の命令から１の命令を決定するために使用される。典型的には、同じ数学的又は論理的演算（例えば、加算又はビット毎のＸＯＲ）が、複数の異なる命令グループ内の同じＯｐコード位置に定義されるが、これら命令グループの各々は、異なるオペランドデータフォーマット（例えば、３２ビットの浮動小数点又は３２ビットの整数）で動作するように定義される。１６個の数学的又は論理的オペレータが同じオペランドデータフォーマットに必要であるとき、データフォーマット用に複数の命令グループを定義してもよい。２４ビットのオペランド選択フィールドは、典型的には、プログラム実行制御フロー命令のための絶対的又は相対的アドレスを含む。
ごく一般的には、シーケンサー命令は次の５つのグループに分けることができる。
１）プログラム実行フローの制御（ＡｂｓＪｍｐ、ＲｅｌＪｍｐ、ＡｂｓＪｓｒ、ＲｅｌＪｓｒ、ＲｅｔＪｍｐ、ＬｎｋＪｍｐ、ＧｌｃＪｍｐ、ＥｌｓＪｍｐ、ＯｆｆＪｍｐ、Ｒｅｓｕｍｅ等）
２）シーケンサーモードレジスタの更新（ＳｅｔＭｄｅ、ＡｄｄＭｄｅ、ＭｏｖＭｄｅ、ＬｄＮｘｔＵ、ＳｅｔＦｌｇ、ＵｓｅＮｘｔ、ＳｅｔＢｕｆ、ＳｅｔＯｆｆ、ＳｅｔＢＳＭ、ＳｅｔＭｓｋ等）
３）ＰＥレジスタファイルの更新（ＬｄＩｍｍｄ、Ｓｅｑ２Ｐｅ、ＧｅｔＭｅｍ、ＰｕｔＭｅｍ、ＧｅｔＩｎｄ、ＰｕｔＩｎｄ、ＲｄＦｉｆｏ、ＷｒＦｉｆｏ、ＧｅｔＳｔｅ、ＰｕｔＳｔｅ、ＧｅｔＶａｌ、ＰｕｔＶａｌ等）
４）命令キャッシュの制御（ＰＦｅｔｃｈ等）
５）同期（ＣｈｋＰｎｔ等）
【００１１】
シーケンサーモードレジスタの更新（上記グループ２）は、特にデータタイプレジスタに関し、これは例えばＳｅｔＭｄｅを使用してロードされる。
このアーキテクチャの利点の１つは解凍可能な命令セットである。可能な６４個の命令グループのうち９個だけが、ＤＥＳアーキテクチャのＳ２実行用に定義され、残りの５５個の命令は将来的な解凍に使用することができる。既存の命令セットとの間に何のコンフリクトも無く新規の命令グループを追加することが可能であり、これにより、将来生産されるハードウエアで既存のソフトウエアを実行することができる。
【００１２】
別の利点はＶＬＩＷコードの圧縮である。シーケンサー命令は、後続のＰＥ命令に影響するタイプ情報を有するタイプレジスタをロードするために使用される。従来のＶＬＩＷアーキテクチャは全ての命令内にそのような情報を含まなければならないが、Ｓ２タイプレジスタはキャッシュとして働き、ＰＥ命令タイプの局所性を利用してこの情報に必要な更新頻度を減少させる。Ｓ２アセンブラ及びコンパイラは自動的にプログラムコードを分析してタイプレジスタの更新を行うために発行される命令の数を最小化する。各Ｓ２命令の幅は３２ビットであるが、同じ命令セットをＶＬＩＷ表示するためには１の命令につき約９６ビットが必要であるので、プログラムの格納スペースを有意に増大する必要がある。
もう１つの利点はデータタイプの抽出である。処理されるデータのタイプとは関係なくアルゴリズムをコード化することができる。例えば、適切なタイプレジスタ内に指定されている命令グループを単に変更することにより、命令の全く同じシーケンスを実行して３２ビットの浮動小数点又は３２ビットの整数データを処理することができる。
【００１３】
図２は、本発明を有利に実現することが可能なプロセッサアーキテクチャの一実施例を示す。（後述するように、本発明は多数の異なるアーキテクチャにおいても実現することができる。）本明細書の説明には、ＤＥＳアーキテクチャでＳ２を使用するためのレジスタビットフィールド及び命令のサイズに関する情報を含むが、これらの大きさは説明のみを目的とするものである。
Ｓ２は、全てが異なるレジスタファイルに保持される異なるデータの同じ演算に適用される複数の処理要素（例えば８個）を有するＳＩＭＤ（ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ）プロセッサのアレーである。図２は、そのような処理要素を２つ（２２０及び２３０）示している。処理要素の制御に必要なハードウエアを償却するために、単一のシーケンサー（２１０）が使用されている。各処理要素のＲＡＭ（２２１及び２３１）はレジスタファイルを格納する。シーケンサーのＲＡＭ（２１１）は命令を格納する。
【００１４】
図３は、本発明を有利に実現することが可能な処理クラスターの一実施例である。（後述するように、本発明は多数の異なるアーキテクチャにおいても実現することができる。）
メディア処理アレー（３００）は、ビデオ、オーディオ、２Ｄグラフィック、及び３Ｄグラフィックを含む様々なメディア処理をサポートすることができるクラスターの複数の集まりである。ＡＲＭ０（３１０）は、オペレーティングシステムを実行する制御プロセッサである。ＡＲＭ１（３２０）は、単一のユーザーレベルの処理を実行する非同期のコプロセッサである。ＡＲＭ１（３２０）は、プログラムを実行し、メディア処理アレー（３００）に命令を発行する。ＡＲＭ１（３２０）はまた、データストリームを様々なブロックに分類し、その後メディア処理アレー（３００）の様々なクラスターにデータストリームを供給することができる。
【００１５】
ここに開示する様々な実施形態によれば、プログラム可能な論理演算装置が提供され、本装置は、１以上のプログラム可能な処理要素と、命令ストリーム内の復号命令に含まれるタイプＩＤの値によって指定される複数のインタープリテーションレジスタへのインダイレクト式の参照を使用して命令を復号し、それに従って前記処理要素にコマンドを送信するために接続される１のシーケンサーとを備える。
ここに開示する様々な実施形態によれば、一連の処理命令の実行方法が提供され、本方法は、ａ）前記命令のうちの１つのタイプＩＤフィールドに指定される各インタープリテーションレジスタを参照して命令の各々を解釈するステップ、及びｂ）前記ステップ（ａ）に従って前記命令を実行するステップを含む。
【００１６】
ここに開示する様々な実施形態によれば、一連の処理命令の実行方法が提供され、本方法は、ａ）前記命令のうちの１つのタイプＩＤフィールドに指定される各インタープリテーションレジスタへのインダイレクト式の参照を使用して命令の各々を解釈するステップであって、前記タイプＩＤフィールドがシーケンサー命令と処理要素命令とを区別し、且つ処理要素命令用の複数の異なるフォーマットを区別するステップ、及びｂ）前記ステップ（ａ）に従って前記命令を実行するステップを含む。
ここに開示する様々な実施形態によれば演算アーキテクチャが提供され、本アーキテクチャにおいては、各々がコマンドビットと複数のインタープリテーションレジスタからの選択を行うタイプＩＤの両方を含む処理命令が命令ストリームを形成しており、前記インタープリテーションレジスタの一部が、選択された前記インタープリテーションレジスタに応じて前記コマンドをそれぞれ解釈するための情報を含み、且つ前記インタープリテーションレジスタに蓄積された情報と組み合わせて、前記コマンドを解凍するために接続されているシーケンシング論理が、１以上の処理要素に送られるべき解凍済みの命令を生成する。
【００１７】
ここに開示する様々な実施形態によれば演算アーキテクチャが提供され、本アーキテクチャにおいては、処理命令がストリーム内でシーケンシング命令と混合され、少なくとも１つのシーケンサーが接続されて処理命令を受け取り、インタープリテーションレジスタを使用して処理命令の少なくとも一部を解凍することにより、１以上の処理要素のために実行可能なコマンドを生成し、前記接続されたシーケンサーは更に、シーケンシング命令を受け取って、少なくとも１つの前記シーケンシング命令に応じて前記インタープリテーションレジスタに含まれる値を変更することができる。
ここに開示する様々な実施形態によれば、上記のような複数の相互接続されたユニットを備える多重処理システムが提供される。
【００１８】
ここに開示する様々な実施形態によれば、命令にタイプアイデンティファイアが含まれており、このアイデンティファイアが複数のインタープリテーションレジスタのうちの１つを選択する構成のマイクロプロセッサ用のアーキテクチャが提供される。インタープリテーションレジスタは、各命令のｏｐコードを解釈するための情報を保持しており、これにより（タイプアイデンティファイアを用いて）圧縮された命令ストリームを解凍された命令ストリームに変換することができる。好ましくは、タイプアイデンティファイアは、処理要素命令からシーケンサー命令を区別することもでき、更には異なる種類のシーケンサー命令を区別することもできる（異なる種類の処理要素命令を区別することもできる）。
【００１９】
修正と変更
当業者であれば分かるように、本明細書に記載された本発明の構想は、非常に広範な用途に亘って修正及び変更することが可能であり、従ってここに特許申請する主題の範囲は、本明細書に例示する特定の技術のいずれによっても限定されない。
例えば、好ましい実施形態はＳＩＭＤアーキテクチャ（最低のレベル）であるが、本発明の概念は、ＭＩＭＤアーキテクチャ等の、もっと命令レベルの並行性の高い用途に使用することもできる。この簡単な実施例は、単純に別々の単一命令ストリームの命令を連結すること、例えば３つの３２ビットの単一命令ストリームを連結して１つの９６ビットストリームを形成し、３つ（又はそれ以上）のＳＩＭＤマシンに同報通信することであるが、当然ながらＭＩＭＤを利用する他の多くの場合が可能である。また、上述の好ましい実施形態がＳＩＭＤ及びＤＩＭＤの両方であること、つまり最低レベルではＳＩＭＤであるがそれより高次のレベルではＭＩＭＤであることに注意されたい。
【００２０】
別の実施例として、本発明は、当然ながら他のＳＩＭＤアーキテクチャ、及び他のＳＩＭＤ−ＭＩＭＤハイブリッドアーキテクチャにも適用することができる。
また、本発明は、並行処理アークテクチャに適用できるだけでなく、多岐に亘るマイクロプロセッサ型のアーキテクチャ（例えば一般に汎用マイクロプロセッサ、デジタル信号プロセッサ、混合信号プロセッサ、その他専用プロセッサ、マイクロコンピュータ、マイクロコントローラ、統合システム内に埋め込まれたマイクロプロセッサコア、プログラム可能な統合電力装置、及びその他プログラム可能な統合回路装置を含む）にも適用可能である。しかしながら、本発明は、上述したように、並行処理メディアチップにおいて特に効果的である。
【００２１】
別の実施例では、好ましい実施形態のタイプＩＤフィールドのフォーマットの任意性が高く、使用するビット数を随意で増減させることができる。
別の実施例では、好ましい実施形態において「タイプＩＤフィールド」と呼ばれるものに他の専門用語を使用することができる。このフィールドには他の機能を加えることができる（又はそれに他のビットを組み合わせることができる）。
【００２２】
別の実施例では、更に大きな又は複数のタイプＩＤフィールドを使用して複数のインタープリテーションレジスタに適合させることができる。このような実施形態では、２つ（又はそれ以上）の独立のタイプＩＤスペシファイアを独立的に使用して、１又は複数のコマンドフィールドの２（又はそれ以上）のセグメントの解釈を指定することができる。
別の実施例では、登録された数ビットを有する後続の命令のタイプＩＤを変更又は無視するシーケンサーオプションを提供することができる。これは、例えば異なるデータタイプのためにアルゴリズムが返されているとき有効でありうる。
【００２３】
別の実施例では、タイプＩＤフィールドの定義を命令シーケンスによって体系的に変更することができる。この簡単な実施例は、命令２つ（又は４つ）毎にのみタイプＩＤを発行するか、或いは２つ（又は４つ）の連続する命令からなるシーケンスにタイプＩＤサブフィールドを広げることである。しかしながらこれはあまり好ましくない。
プログラマーは、多数の方法で複数のインタープリテーションレジスタを使用することができる。一実施例では、インタープリテーションレジスタを使用して、データ解像度及びデータタイプを変化させることができる。別の実施例では、レジスタを使用することにより、別個の変換ステップを何ら使用する必要無く、フォーマットの異なるデータソースからの入力（及び／又は異なるデータソースへの出力）を扱うことができる。別の実施例では、この能力を使用することにより、ビッグエンディアンとリトルエンディアン等の異なるデータフォーマットを容易に取扱うことができる。
【００２４】
変形例及び使用例を示すのに役立つ追加的な一般的背景は、Jerraya及びWolfによるMultiprocessor Systems-on-Chips (2004); A. TanenbaumによるStructured Computer Organization（2005年第5版）；及びHennessy及びPattersonによるComputer Architecture（2002年第3版）といった文献に見出すことができ、これら全ての内容をここに参照したことにより本明細書に包含する。
本特許出願のいずれの記載も、いずれかの特定の要素、ステップ、又は機能が、請求の範囲に含まれなければならない必須の要素であることを意味するものではない。特許出願の主題の範囲は、請求の範囲によってのみ規定される。更に、それらの請求項のいずれもが、名詞に続く「〜の手段」という明確な用語が無い限り、米国特許法第３５巻１１２条の第６パラグラフの行使を意図するものではない。
【００２５】
出願される請求の範囲は、可能な限り分かり易く表現されたものであり、いずれの主題も意図的に断念、譲与、又は放棄されていない。
【図１】
0005550099.tif 000002
【図２】
0005550099.tif 000003
【図３】
0005550099.tif 000004