(57)【特許請求の範囲】
【請求項１】
処理システムであって、
ＶＩＭメモリ位置内のスロットに命令を格納するための超長命令語（ＶＬＩＷ）命令メモリ（ＶＩＭ）を有する第１の処理要素（ＰＥ）と、
命令タイプのグループを定義する複数のグループ・ビットおよび実行ユニット・タイプを定義する複数のユニット・フィールド・ビットおよび命令タイプを定義するＯＰコードを有する機能命令を格納するための第１のレジスタと、
複数のグループ・ビットを解読し、解読されたグループ・ビットに基づいて複数のユニット・フィールド・ビットを解読するためのプリデコーダと、
前記機能命令の実行に先立って、解読されたユニット・フィールド・ビットに対応するＶＩＭ内にある前記スロットのうちの適切な１つに、前記ＯＰコードを含む機能命令をロードするためのロード機構とを含むシステム。
【請求項２】
ＶＬＩＷを実行するためのアドレス・オフセットおよびベース・アドレス・レジスタへのベース・ポインタを含んでいる実行ＶＬＩＷ命令（ＸＶ）である制御命令を実行可能な、請求項１に記載のシステム。
【請求項３】
ＶＬＩＷをロード或いは修正するためのアドレス・オフセットおよびベース・アドレス・レジスタへのベース・ポインタを含んでいるロード／修正ＶＬＩＷ命令（ＬＶ）である制御命令を実行可能な、請求項１に記載のシステム。
【請求項４】
記憶部がよりコンパクトになるように、機能命令がＶＩＭに格納される前に、前記機能命令から前記グループ・ビットおよび前記ユニット・フィールド・ビットが取り除かれる、請求項１に記載のシステム。
【請求項５】
機能命令が前記ＶＩＭに格納される前に、機能命令から前記グループ・ビットおよび前記ユニット・フィールド・ビットが取り除かれ、少なくとも１つの置換ビットが前記グループ・ビットまたは前記ユニット・フィールド・ビットのいずれかの位置に追加される、請求項１に記載のシステム。
【請求項６】
前記置換ビットがイネーブル／ディスエーブル・ビットである、請求項５に記載のシステム。
【請求項７】
前記置換ビットが動作コード拡張ビットである、請求項５に記載のシステム。
【請求項８】
前記置換ビットがレジスタ・ファイル拡張ビットである、請求項５に記載のシステム。
【請求項９】
前記置換ビットが条件付き実行拡張ビットである、請求項５に記載のシステム。
【請求項１０】
複数の実行ユニットならびに第１および第２のレジスタ・バンクをさらに含み、
レジスタ・ファイル拡張ビットが使用され、複数の実行ユニットが前記第１のレジスタ・バンクまたは前記第２のレジスタ・バンクからの読取りまたはそこへの書込みを行う、請求項８に記載のシステム。
【請求項１１】
機能命令を格納するための、前記第１のレジスタとは異なる第２のレジスタと、
前記第１のレジスタの出力を前記第２のレジスタの入力に接続するためのバイパス径路と、
機能命令が前記ＶＩＭにロードされることなく前記第１のレジスタから前記第２のレジスタに渡される、バイパス動作を選択するための選択機構とをさらに含み、
前記第２のレジスタは、前記処理システムの実行ユニットのデコード段階を先取りする請求項１に記載のシステム。
【請求項１２】
制御命令が前記第２のレジスタ内に格納される前に、１つまたは複数の前記グループ・ビットおよびユニット・フィールド・ビットが置き換えられる、請求項１１に記載のシステム。
【請求項１３】
ネットワーク・インターフェース接続を介して前記第１のＰＥに接続された少なくとも１つの追加ＰＥをさらに含み、各ＰＥが、それによって制御される受信ポートに接続された関連付けられたクラスタ・スイッチを有する、請求項１に記載のシステム。
【請求項１４】
前記関連付けられたクラスタ・スイッチが、ＰＥのクラスタ内にＰＥ間の独立した径路を提供するために相互接続されたマルチプレクサを備えた、請求項１３に記載のシステム。
【請求項１５】
前記第１のＰＥに接続されたシーケンス・プロセッサ（ＳＰ）をさらに含み、制御命令と前記機能命令の両方を前記第１のＰＥに提供し、前記制御命令は、実行ＶＬＩＷ命令（ＸＶ）または、ＶＬＩＷをロードあるいは修正するためのロード／修正ＶＬＩＷ命令（ＬＶ）のいずれかであり、ＸＶ命令およびＬＶ命令の両方が、ＶＬＩＷを実行するためのアドレス・オフセットおよびベース・ポインタを含んでいる、請求項１に記載のシステム。
【請求項１６】
ＳＰに接続された少なくとも１つの追加ＰＥをさらに含み、前記ＸＶ命令が前記第１のＰＥおよび前記少なくとも１つの追加ＰＥの両方に同期的に提供されるために、同じＶＩＭアドレスで異なるＶＬＩＷを実行するときに、前記ＰＥを同期的多重命令多重データ・ストリーム（ＳＭＩＭＤ）マシンとして動作させ、同じＶＩＭアドレスで同じＶＬＩＷを実行する場合は前記ＰＥが単一命令多重データ（ＳＩＭＤ）マシンとして動作する、請求項１５に記載のシステム。
【請求項１７】
複数のＰＥが前記ＳＰに接続され、前記複数のＰＥが１つまたは複数のＰＥの第１グループおよび第２グループに編成された、請求項１６に記載のシステム。
【請求項１８】
ＰＥの前記第１グループが、動作サイクル中に第１のＶＩＭアドレスにあるＶＬＩＷ命令に対して動作し、ＰＥの前記第２グループが、動作サイクル中に同じ第１のＶＩＭアドレスにある異なるＶＬＩＷ命令に対して動作する、請求項１７に記載のシステム。
【請求項１９】
各ＰＥが受信ポートを有し、前記受信ポートでデータを受け取るかどうかを制御する通信制御の受信モデルに従って前記複数のＰＥが動作する、請求項１７に記載のシステム。
【請求項２０】
各ＰＥが、受信ポートに接続された入力マルチプレクサを有し、前記入力マルチプレクサを制御することによって通信を制御する、請求項１９に記載のシステム。
【請求項２１】
前記複数のＰＥが前記複数のＰＥのそれぞれについてＶＩＭ内の同じ位置に協働受信命令を格納することで協働するようにプログラミングされており、それによって、１つのＰＥが、他のＰＥのひとつがデータを使用可能にしている径路を指定する受信命令を有する、請求項１９に記載のシステム。
【請求項２２】
個別のＰＥのオンまたはオフをマスキングするためのマスキング機構をさらに含む、請求項１７に記載のシステム。
【請求項２３】
ＶＬＩＷのローディング動作中に、ＶＬＩＷはＯＮにマスクされたＰＥのＶＩＭにロードされ、ＶＬＩＷはＯＦＦにマスクされたＰＥのＶＩＭにはロードされない、請求項２２に記載のシステム。
【請求項２４】
同じサイクル中に、異なるＰＥが異なるＶＬＩＷを実行する、請求項１７に記載のシステム。
【請求項２５】
前記ＶＩＭが、格納ユニット命令、ロード・ユニット命令、演算論理ユニット命令、乗積算ユニット命令、またはデータ選択ユニット命令といったタイプの機能命令を格納するためのスロットを備えた、請求項１に記載のシステム。
【請求項２６】
複数のＰＥが使用され、ＶＬＩＷスロットが異なるタスクに関連付けられており、ＰＥが同じサイクル中に異なるタスクに対して複数の動作を同時に実行することができる、請求項２５に記載のシステム。
【請求項２７】
処理システムの運転方法であって、
第１の処理要素（ＰＥ）内にある超長命令語（ＶＬＩＷ）命令メモリ（ＶＩＭ）内に格納すべき第１のＶＬＩＷ機能命令をフェッチするステップであって、前記ＶＬＩＷ機能命令が、命令タイプのグループを定義する複数のグループ・ビットと、実行ユニット・タイプを定義する複数のユニット・フィールド・ビットと、命令タイプを定義するＯＰコードとを有するステップと、
第１のレジスタ内に前記第１のＶＬＩＷ機能命令を格納するステップと、
プリデコーダを利用して、前記複数のグループ・ビットを解読するステップと、
解読された前記グループ・ビットに基づいて前記複数のユニット・フィールド・ビットを解読するステップと、
前記第１の機能命令の実行に先立って、前記ＶＩＭのロード機構を用いて、解読された前記ユニット・フィールド・ビットに対応する前記ＶＩＭ内の適切なアドレスに前記ＯＰコードを含む前記機能命令をロードするステップと
を含む方法。
【請求項２８】
ＶＬＩＷを実行するためのアドレス・オフセットおよびベース・アドレス・レジスタへのベース・ポインタを含んでいる実行ＶＬＩＷ命令（ＸＶ）である制御命令を受け取るステップをさらに含む、請求項２７に記載の方法。
【請求項２９】
ＶＬＩＷをロードあるいは修正するためのアドレス・オフセットおよびベース・アドレス・レジスタへのベース・ポインタを含んでいるロード／修正ＶＬＩＷ命令（ＬＶ）である制御命令を受け取るステップをさらに含む、請求項２７に記載の方法。
【請求項３０】
記憶部がよりコンパクトになるように、機能命令がＶＩＭに格納される前に、前記機能命令から前記グループ・ビットおよび前記ユニット・フィールド・ビットを取り除くステップをさらに含む、請求項２７に記載の方法。
【請求項３１】
前記機能命令がＶＩＭに格納される前に、前記機能命令からグループ・ビットおよびユニット・フィールド・ビットを取り除くステップと、少なくとも１つの置換ビットをグループ・ビットまたはユニット・フィールド・ビットのいずれかの位置に追加するステップとをさらに含む、請求項２７に記載の方法。
【請求項３２】
バイパス命令を受け取るステップと、第１のＶＬＩＷ機能命令をＶＩＭ内にロードせずに、前記第１のレジスタとは異なる第２のレジスタ内に格納するステップとをさらに含み、前記第２のレジスタは、前記処理システムの実行ユニットのデコード段階を先取りする、請求項２７に記載の方法。
【請求項３３】
前記第１のＰＥに接続されたシーケンス・プロセッサ（ＳＰ）から、制御命令と第１のＰＥへの前記機能命令の両方を受け取るステップをさらに含み、前記制御命令が、アドレスオフセットおよびベースポインタにより特定される前記ＶＩＭ中のアドレスにおけるＶＬＩＷ内に機能命令をロードするためのアドレスオフセットおよびベースポインタを含むロード／修正ＶＬＩＷ命令（ＬＶ）である、請求項２７に記載の方法。
【発明の詳細な説明】
【０００１】
関連出願
本発明は、「Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｅｆｆｉｃｉｅｎｔ  Ｓｙｎｃｈｒｏｎｏｕｓ  ＭＩＭＤ  ＶＬＩＷ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ」という名称で１９９７年１１月７日に出願された、米国特許仮出願第６０／０６４６１９号の特典を請求するものである。
【０００２】
発明の分野
所与の数の平行処理要素を伴う任意の単一命令多重データ・ストリーム（ＳＩＭＤ）の場合、使用可能な並行処理要素または言い換えれば使用可能な計算リソースを、効率的に使用することができないアルゴリズムが存在する。多重命令多重データ・ストリーム（ＭＩＭＤ）クラスのマシンは、これらアルゴリズムの中のいくつかをより効率的に実行するが、各プロセッサ上にある別の命令ストリームをサポートするために追加のハードウェアが必要であり、密結合されたプログラムの実施に伴う通信待ち時間により性能が低下する。本発明は、ハードウェアのコストおよび複雑さを削減すると同時に、ＳＩＭＤマシンならびにＭＩＭＤマシンの最高の特性を維持し、通信待ち時間を最小限に抑えるこれらのアルゴリズムを実行するためのよりよいマシン編成を対象とする。本発明は、ＭＩＭＤの計算自律性レベルをＳＩＭＤのｉＶＬＩＷ（間接的超長命令語）処理要素に提供すると同時に、ＳＩＭＤマシン編成内で使用される単一制御スレッドを維持する。したがって本発明は、同期ＭＩＭＤ（ＳＭＩＭＤ）という用語を用いて記述される。
【０００３】
発明の背景
主要な平行プログラミング・モデルには、ＳＩＭＤモデルおよびＭＩＭＤモデルの２つがある。ＳＩＭＤモデルには、同期ロック・ステップ・モードで複数の処理要素（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ−ＰＥ）を制御する単一のプログラム・スレッドがある。それぞれのＰＥが、同じ命令を異なるデータ上で実行する。これは、制御の複数のプログラム・スレッドが存在し、通信前に独立したプログラム・スレッドを同期させるための要件により、任意のプロセッサ間動作が、複数プロセッサ間で通信を行うときに発生する待ち時間に対処しなければならない、ＭＩＭＤモデルとは対照的である。ＳＩＭＤに伴う問題は、プロセッサ内に存在する使用可能な並行処理を、すべてのアルゴリズムが効率的に使用できるわけではないことである。異なるアルゴリズム内にある固有の並行処理の量は異なっており、ＳＩＭＤマシン上で多彩なアルゴリズムを効率的に実施するときの難点に通じている。ＭＩＭＤマシンに伴う問題は、１つのアルゴリズムの処理に関して協働するために、プロセッサを効率的に同期化させるときの難点につながる、複数プロセッサ間での通信の待ち時間である。典型的には、各ＭＩＭＤ  ＰＥは、ハードウェアがかなりの量になる可能性のある、独自の命令順序付け機構を持たなければならないため、ＭＩＭＤマシンはＳＩＭＤマシンに比べて実施のコストも多くなる。ＭＩＭＤマシンは、本質的に、独立した並行処理要素を管理するために必要なプログラミング制御も、より複雑である。したがって、平行処理要素が使用されるときに、多彩なコンテキストにおいて、いろいろなレベルのプログラムの複雑さおよび通信待ち時間が発生する。以下でより詳細に論じるように、こうした問題を効率的に解決することが非常に有利である。
【０００４】
発明の概要
本発明は、１９９７年６月３０日出願の米国特許出願第０８／８８５３１０号、１９９７年１０月１０日出願の米国第０８／９４９１２２号、１９９８年１０月９日出願の米国第０９／１６９２５５号、１９９８年１０月９日出願の米国第０９／１６９２５６号、および１９９８年１０月９日出願の米国第０９／１６９０７２号、１９９７年１２月４日出願の「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｄｙｎａｍｉｃａｌｌｙ  Ｍｏｄｉｆｙｉｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  ｉｎ  ａ  Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ  Ｐｒｏｃｅｓｓｏｒ」という名称の仮出願第６０／０６７５１１号、１９９７年１２月１８日出願の「Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｓｃａｌａｂｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ」という名称の仮出願第６０／０６８０２１号、１９９８年１月１２日出願の「Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｔｏ  Ｄｙｎａｍｉｃａｌｌｙ  Ｅｘｐａｎｄ  ｔｈｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｐｉｐｅｌｉｎｅ  ｏｆ  ａ  Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ  Ｐｒｏｃｅｓｓｏｒ」という名称の仮出願第６０／０７１２４８号と、１９８８年１月２８日出願の「Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｔｏ  Ｓｕｐｐｏｒｔ  Ｃｏｎｄｉｔｉｏｎａｌ  Ｅｘｅｃｕｔｉｏｎ  ｉｎ  ａ  ＶＬＩＷ−Ｂａｓｅｄ  Ａｒｒａｙ  Ｐｒｏｃｅｓｓｏｒ  ｗｉｔｈ  Ｓｕｂｗｏｒｄ  Ｅｘｅｃｕｔｉｏｎ」という名称の仮出願第６０／０７２９１５号、１９９８年３月１２日出願の「Ｒｅｇｉｓｔｅｒ  Ｆｉｌｅ  Ｉｎｄｅｘｉｎｇ  Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｐｒｏｖｉｄｉｎｇ  Ｉｎｄｉｒｅｃｔ  Ｃｏｎｔｒｏｌ  ｏｆ  Ｒｅｇｉｓｔｅｒ  ｉｎ  ａ  ＶＬＩＷ  Ｐｒｏｃｅｓｓｏｒ」という名称の仮出願第６０／０７７７６６号、１９９８年７月９日出願の「Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ａｄｄｒｅｓｓｉｎｇ  ｉｎ  Ｉｎｄｉｒｅｃｔ  ＶＬＩＷ  Ｐｒｏｃｅｓｓｏｒｓ」という名称の仮出願第６０／０９２１３０号、１９９８年１０月９日出願の「Ｅｆｆｉｃｉｅｎｔ  Ｃｏｍｐｌｅｘ  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  ａｎｄ  Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ  （ＦＦＴ）  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｎ  ｔｈｅ  ＭａｎＡｒｒａｙ」という名称の仮出願第６０／１０３７１２号、および１９９８年１１月３日出願の「Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｉｍｐｒｏｖｅｄ  Ｍｏｔｉｏｎ  Ｅｓｔｉｍａｔｉｏｎ  ｆｏｒ  Ｖｉｄｅｏ  Ｅｎｃｏｄｉｎｇ」という名称の仮出願第＿＿＿＿＿号に、それぞれその様々な態様がより詳細に記載されたＭａｎＡｒｒａｙアーキテクチャと共に使用されることが好ましく、これらはすべて本発明の譲受人に譲渡され、完全に本発明に組み込まれる。
【０００５】
本発明により、ＭａｎＡｒｒａｙのｉＶＬＩＷ（間接的超長命令語）と共に使用するのに好適なＭａｎＡｒｒａｙプロセッサは、間接的超長命令語アーキテクチャを提供するために、処理要素（ＰＥ）のスケーラブル配列のための配列制御装置として動作するシーケンス・プロセッサ（ＳＰ）を有する配列プロセッサとして実施される可能性がある。本発明による間接超長命令語（ｉＶＬＩＷ）は、ＳＩＭＤ配列制御装置のシーケンス・プロセッサすなわちＳＰによって、ｉＶＬＩＷ命令メモリ（ＶＩＭ）内で構成される可能性がある。ＶＩＭは各処理要素すなわちＰＥ内に存在し、複数のｉＶＬＩＷを含むことが好ましい。１つのｉＶＬＩＷがＶＩＭ内で構成された後、好ましい実施形態中では「ｉＶＬＩＷを実行する」ために、ＸＶと呼ばれる他のＳＰ命令がすべてのＰＥ内の同一のＶＩＭアドレスでｉＶＬＩＷを同時に実行する。すべてのＰＥのＶＩＭが同じ命令を含んでいる場合、ＳＩＭＤ動作が発生する。ＸＶ命令と、各ＰＥ内に存在する単一の同一ｉＶＬＩＷとの間には、１対１のマッピングが存在する。
【０００６】
ＭａｎＡｒｒａｙ上で実行中の一定アルゴリズムの効率を上げるために、ＶＬＩＷ実行（ＸＶ）命令によって開始される間接的実行及び複数のＰＥ内の同じＶＬＩＷメモリ・アドレスに格納された異なるＶＬＩＷ命令により、ＶＬＩＷメモリ内に格納されたＶＬＩＷ命令に対して間接的に動作することが可能である。ＳＰ命令によってこのｉＶＬＩＷセットがすべてのＰＥにまたがって同時に実行されると、同期ＭＩＭＤすなわちＳＭＩＭＤが発生する。ＸＶ命令と、各ＰＥ内に存在する複数の異なるｉＶＬＩＷとの間に、１対多マッピングが存在する。ＸＶ命令の発行を伴う単一の制御ポイントＳＰにより、複数の異なるｉＶＬＩＷ実行が同期的に起こるため、特殊な同期化機構は必要ない。ＰＥとＭａｎＡｒｒａｙネットワークとの間の通信を管理するために受信モデルを使用することから、下記でさらに詳しく述べるように、ＭＩＭＤ動作に共通の特性である通信待ち時間が避けられる。さらに、実行の同期位置が１箇所であるため、各ＰＥ内にある別々のプログラム・フローに対して追加のＭＩＭＤハードウェアは必要ない。この方法では、マシンはハードウェアのコストを削減すると同時に通信待ち時間も最低限に抑えながら、ＳＭＩＭＤ動作をサポートするように編成される。
【０００７】
ＭａｎＡｒｒａｙの間接的ＶＬＩＷすなわちｉＶＬＩＷは、プログラム制御の下でローディングされることが好ましいが、代替形態のｉＶＬＩＷのダイレクト・メモリ・アクセス（ＤＭＡ）ローディング、および固定ｉＶＬＩＷを含むＲＯＭによるＶＩＭアドレス空間の１セクション実施も除外されない。一定レベルの動的プログラム・フレキシビリティを維持するために、全ＶＩＭでない場合はＶＩＭの一部が、典型的にランダム・アクセス・タイプのメモリになる。ランダム・アクセス・タイプのＶＩＭをロードするためには、区切り符号命令、ｉＶＬＩＷのロードの場合はＬＶが、区切り符号の後に続く一定数の命令が実行されるのではなくＶＩＭ内にロードされることを指定する。ＳＩＭＤ動作の場合、各ＰＥは各ＶＩＭアドレスについて同じ命令を受け取る。ＳＭＩＭＤ動作用にセットアップするには、各ＰＥ内の同じＶＩＭアドレスに異なる命令をロードする必要がある。
【０００８】
これは現在の好ましい実施形態では、ＶＩＭのローディングがＯＮにマスクされたＰＥ上でのみ発生するように機能する、マスキング機構によって達成される。ＯＦＦにマスクされたＰＥは区切り符号命令を実行しないため、区切り符号に続く指定された命令セットをＶＩＭ内にロードしない。あるいは、異なる命令がＰＥローカル・メモリから平行にロードされるか、またはＶＩＭがＤＭＡ転送のターゲットになることができる。異なる命令を同じＶＩＭアドレス内にローディングするための代替方法は、ＬＶ命令に続く第２の３２ビット制御ワードを有する第２のＬＶ命令、ＬＶ２を使用することである。第１および第２の制御ワードは、ＰＥラベルを追加できるように、それらの間のビットを再配置する。この第２のＬＶ２方法は、ＰＥがマスクされる必要がなく、異なるシステムを実施するときに何らかの利点を与える場合がある。異なる命令を、異なるＰＥ上にある同じＶＩＭアドレス内に選択的にローディングすることによって、ＭａｎＡｒｒａｙがＳＭＩＭＤ動作用にセットアップされる。
【０００９】
ＳＭＩＭＤ動作を実施するときに遭遇する１つの問題は、処理要素間通信を処理することである。ＳＩＭＤモードでは、配列内のすべてのＰＥが同じ命令を実行中である。典型的には、これらのＳＩＭＤ  ＰＥ間通信命令は、送信モデルを使用するとみなされる。言い換えれば、ＳＩＭＤの送信モデル通信命令は、各ＰＥがそのデータをどの方向へ、すなわちどのターゲットＰＥへ送信すべきかを示す。ＳＥＮＤ−ＷＥＳＴなどの通信命令に遭遇すると、各ＰＥは、位相的にその西隣として定義されたＰＥにデータを送信する。送信モデルは、送信元ＰＥおよび受信側ＰＥの両方を指定する。ＳＥＮＤ−ＷＥＳＴの例では、各ＰＥがその西側にあるＰＥにそのデータを送信し、その東側にあるＰＥからデータを受信する。ＳＩＭＤモードでは、これは問題ではない。
【００１０】
送信モデルを使用するＳＭＩＭＤモードの動作では、複数の処理要素がすべて同じ隣のＰＥへデータの送信を試行することができる。ＭａｎＡｒｒａｙにおけるこのような処理要素は、１回に他の１つの処理要素からのみ受信できる受信ポートを１つだけ有すると定義される可能性があるので、この試行は危険な状況を表す。各処理要素が１つの受信ポートを有すると定義されるときは、このように試行された動作は首尾良く完了できず、通信ハザードを引き起こすことになる。
【００１１】
上記の通信ハザードを避けるために、ＰＥ間の通信には受信モデルが使用される。各処理要素は受信モデルを使用して、どの処理要素から受信するかを選択するスイッチを制御する。任意の２つの処理要素が同じ受信ポートを争うことはあり得ないため、通信ハザードが発生することはあり得ない。定義上、各ＰＥはそれ専用の受信ポートを制御し、ターゲットＰＥを指定せずにデータを使用可能にする。受信モデルを使用して処理要素間に任意の意味ある通信を発生させるためには、使用可能にされたデータをＰＥが協働して受信するようにプログラムされなければならない。同期ＭＩＭＤ（ＳＭＩＭＤ）を使用して、協働命令がすべて同じｉＶＬＩＷ位置に存在する場合にこれが発生するように保証される。ＳＭＩＭＤを使用しない場合、複雑な機構は、通信を同期化して受信モデルを使用する必要が生じることになる。
【００１２】
本発明をより完全に理解すれば、以下の詳細な説明および添付の図面から本発明の特徴および利点が明らかになろう。
【００１３】
詳細な説明
本発明に関して使用するための、現在好ましい間接的超長命令語（ｉＶＬＩＷ）制御命令の１セットについて、以下に詳細に記載する。図１は、アドレス「ｉ」でｉＶＬＩＷを実行するためのシステムを示し、ここでｉＶＬＩＷは、ＰＥ０〜ＰＥ３のＰＥからなる２×２のＭａｎＡｒｒａｙ１００内で、各ＶＩＭ内の垂直なボックス・セットＳＬＡＭＤ１０５で示され、Ｓ＝ストア、Ｌ＝ロード、Ａ＝演算論理ユニット（ＡＬＵ）、Ｍ＝乗積算ユニット、およびＤ＝データ選択ユニット（ＤＳＵ）の命令セットを表す。図１では、２×２のＭａｎＡｒｒａｙ１００は、３２ビット命令を単一の３２ビット・バスを介して配列ＰＥに送出する、シーケンス・プロセッサ（ＳＰ）制御装置１０２をさらに含む。３２ビット命令の１タイプは、実行ｉＶＬＩＷ（ＸＶ）命令であり、これは実行されることが望ましいｉＶＬＩＷを示すポインタを生成するためにＶＩＭベース・アドレスと共に使用される、ＶＩＭアドレス・オフセット値を含む。ＰＥ１０４は、クラスタ・スイッチ１０７によって相互接続される。
【００１４】
本発明により使用されるように適合されたＳＰ１０２およびＭａｎＡｒｒａｙアーキテクチャ内の各ＰＥ１０４は、図１に示すように、ある量のｉＶＬＩＷメモリ（ＶＩＭ）１０６を含む。各ＶＩＭ１０６は、複数のＶＬＩＷ命令アドレス１０３を保持するための格納スペースを含み、各アドレスは８つまでの単体の命令を格納することができる。現在好ましい実施形態では、各ｉＶＬＩＷ命令が５つまでの単体の(simplex)命令を含むことが可能であって、格納ユニット１０８、ロード・ユニット１１０、演算論理ユニット１１２（ＡＬＵ）、乗積算ユニット１１４（ＭＡＵ）、およびデータ選択ユニット１１６（ＤＳＵ）のそれぞれと関連付けられる。たとえば、ＶＩＭアドレス「ｉ」にあるｉＶＬＩＷ命令１０５は、５つの命令ＳＬＡＭＤを含む。
【００１５】
図２は、基本的なｉＶＬＩＷデータ・パス配列２００を示し、これによってフェッチされた命令が、ＶＩＭロードおよび格納制御機能２２に接続された命令レジスタ２０に格納される。このＶＩＭロードおよび格納制御機能は、ＶＩＭ２４にインターフェース信号を送る。ＶＩＭ２４はＶＩＭ１０６に対応しており、図２に示されるように、図１の各ＶＩＭ１０６は関連付けられたレジスタおよび制御を有する。ＶＩＭ２４の出力は、ｉＶＬＩＷレジスタ２６にパイプライン処理される。図３は、０、１、．．．Ｎ−１のＮ個のエントリを備えた５スロットｉＶＬＩＷのＶＩＭ３００を示す。各ＶＩＭ３００のアドレス位置には、格納、ロード、ＡＬＵ、ＭＡＵ、およびＤＳＵの命令３０１〜３０５用の格納スペースが含まれる。拡張されたＡＬＵスロット・ビュー３０３'は、ビットｄ１「ｄ」がハイライト表示された３２ビットの格納スペースを示す。ＶＩＭ記憶装置内の命令を使用する方法について、以下でより詳細に論じる。
【００１６】
ｉＶＬＩＷ命令をＰＥのＶＩＭの配列内に集合的にロードするか、あるいは単数または複数のＰＥをマスクするために特別な命令を使用して、各ＰＥのＶＩＭへ個別にロードすることが可能である。ＶＩＭ内のｉＶＬＩＷ命令は、単一命令として実行されると、ＶＩＭメモリ・アドレスに配置された単体の命令を同時実行させる、実行ＶＬＩＷ（ＸＶ）命令を介して実行するためにアクセスされる。ＸＶ命令は、以下を同時実行させることができる。
【００１７】
１．個別のＳＰまたはＰＥのＶＩＭアドレスに配置された、すべての単体の命令。
【００１８】
２．同じ相対ＶＩＭアドレスにあるすべてのＰＥに配置された、すべての命令。
【００１９】
３．同じ相対ＶＩＭアドレスにあるすべてのＰＥのサブセットまたはグループに配置された、すべての命令。
【００２０】
ｉＶＬＩＷメモリをロード／修正し、ｉＶＬＩＷ命令を実行するのに必要な制御命令は、以下の２つだけである。
【００２１】
１．図４Ａに示されたＶＬＩＷメモリ・アドレスロード／修正（ＬＶ）命令。
【００２２】
２．図４Ｂに示されたＶＬＩＷ実行（ＸＶ）命令。
【００２３】
図４Ａに示されたＬＶ命令４００は、符号化ブロック４１０に示されるような３２ビット符号化のためのものであり、以下でさらに述べるように、構文／演算ブロック４２０に示される現在の好ましい構文／演算を有する。ＬＶ命令４００は、指定されたＳＰまたはＰＥのＶＬＩＷメモリ（ＶＩＭ）の個別の命令スロットをロードおよび／または使用不能にするために使用される。ＶＩＭアドレスは、図４Ａの符号化ブロック４１０の中で、基本ＶＩＭアドレス・レジスタＶｂ（Ｖ０またはＶ１）と、ビット・ブロック４１１のビット０〜７に示された符号なし８ビット・オフセットＶＩＭＯＦＦＳとの合計として計算される。ＶＩＭアドレスは、ハードウェア構成用の有効領域内でなければならず、そうでなければこの命令の演算は定義されない。
【００２４】
個別の命令スロットの任意の組み合わせは、使用不能スロットパラメータ「ｄ＝｛ＳＬＡＭＤ｝」を介して使用不能にすることができるが、ここでＳ＝ストアユニット（ＳＵ）、Ｌ＝ロード・ユニット（ＬＵ）、Ａ＝演算論理ユニット（ＡＬＵ）、Ｍ＝乗積算ユニット（ＭＡＵ）、およびＤ＝データ選択ユニット（ＤＳＵ）である。ブランクの「ｄ＝」パラメータは、どんなスロットも使用不能にしない。指定されたスロットは、ロードされる任意の命令の前に使用不能にされる。
【００２５】
ロードする命令の数は、ＩｎｓｔｒＣｎｔパラメータを利用して指定される。本実施態様では、有効値は０〜５である。ＬＶに続く次のＩｎｓｔｒＣｎｔ命令は、指定されたＶＩＭにロードされる。ユニット作用フラグ（ＵＡＦ）のパラメータ「Ｆ＝［ＡＭＤ］」は、どの演算命令スロット（Ａ＝ＡＬＵ、Ｍ＝ＭＡＵ、Ｄ＝ＤＳＵ）が、指定されたＶＩＭが実行されたときに条件フラグを設定できるかを選択する。ブランクの「Ｆ＝」は、ＡＬＵ命令スロットを選択する。ＬＶ命令の処理中には、どの演算フラグも影響を受けず、サイクル数は、１に、ロードされる命令数を加えた数である。
【００２６】
図４Ｂに示されたＸＶ命令４２５も、符号化ブロック４３０に示すような３２ビット符号化用であり、以下でさらに述べるような、構文／演算ブロック４３５に示された現在の好ましい構文／演算を有する。ＸＶ命令４２５は、指定されたＳＰまたはＰＥのＶＬＩＷメモリ（ＶＩＭ）の個別の命令スロットを実行するのに使用される。ＶＩＭアドレスは、図４Ｂの符号化ブロック４３０の中で、基本ＶＩＭアドレス・レジスタＶｂ（Ｖ０またはＶ１）と、ビット・ブロック４３１のビット０〜７に示された符号なし８ビット・オフセットＶＩＭＯＦＦＳとの合計として計算される。ＶＩＭアドレスは、ハードウェア構成用の有効領域内でなければならず、そうでなければこの命令の演算は定義されない。
【００２７】
個別の命令スロットの任意の組み合わせは、実行スロットパラメータ「Ｅ＝｛ＳＬＡＭＤ｝」を介して実行することができるが、ここでＳ＝ストアユニット（ＳＵ）、Ｌ＝ロード・ユニット（ＬＵ）、Ａ＝演算論理ユニット（ＡＬＵ）、Ｍ＝乗積算ユニット（ＭＡＵ）、およびＤ＝データ選択ユニット（ＤＳＵ）である。ブランク「Ｅ＝」パラメータは、どんなスロットも実行しない。ユニット作用フラグ（ＵＡＦ）パラメータ「Ｆ＝［ＡＭＤＮ］」は、ＬＶ命令を介してロードされたときに、ＶＬＩＷに指定されたＵＡＦをオーバライドする。このオーバライドは、どの演算命令スロット（Ａ＝ＡＬＵ、Ｍ＝ＭＡＵ、Ｄ＝ＤＳＵ）が、このＶＬＩＷの実行について条件フラグを設定できるか、あるいはどれでもないか（Ｎ＝ＮＯＮＥ）を選択する。このオーバライドは、ＬＶ命令が指定したＵＡＦ設定に影響を与えない。ブランクの「Ｆ＝」は、ＶＬＩＷがロードされたときに指定されたＵＡＦを選択する。
【００２８】
条件フラグは、元のＬＶ命令からの「Ｆ＝」パラメータの設定によって指定されたスロット内にある個別の単体の命令によって、またはＸＶ命令内の「Ｆ＝［ＡＭＤ］」パラメータによってオーバライドされたときに設定される。条件フラグは、「Ｆ＝Ｎ」のときには影響を受けない。演算は１サイクル中に発生する。パイプラインに関する考慮事項は、実行される各スロット内にある個別の単体の命令に基づいて考慮しなければならない。これらｉＶＬＩＷ命令内にある個別のフィールドの説明は、図４Ｃおよび４Ｄに示される。図４Ｃおよび４Ｄは、名前４４２、ビット数４４４、および説明／値４４６で作表された命令フィールド定義４４０を示す。図４Ｅおよび４Ｆはそれぞれ、現在の好ましいＡＤＤ命令、および２×２ＭａｎＡｒｒａｙ構成内にある３つの同期ＭＩＭＤ  ｉＶＬＩＷのためのスロット記憶装置を示す。
【００２９】
図４Ｅに示されたＡＤＤ命令４５０は、符号化ブロック４５５に示されるような３２ビット符号化用でもあり、以下でさらに述べるように、構文／演算ブロック４６０に示された現在の好ましい構文／演算を有する。ＡＤＤ命令４５０は、ソース・レジスタＲｘおよびＲｙの合計をターゲット・レジスタＲｔに格納するのに使用される。演算スカラ・フラグは最下位演算に影響を与えるが、ここでＮ＝結果の合計のＭＳＢであり、結果がゼロの場合はＺ＝１で、そうでなければ０、オーバフローが発生した場合はＶ＝１で、そうでなければ０、ならびに桁上がりが発生した場合はＣ＝１で、そうでなければ０である。ｖビットは、符号付き演算に対して有意であり、Ｃビットは符号なし演算に対して有意である。サイクル数は１である。
個別、グループ、および「同期ＭＩＭＤ」のＰＥのｉＶＬＩＷ演算
ＬＶおよびＸＶ命令は、プログラマによって画定された個別のＰＥまたはＰＥグループ内で、ｉＶＬＩＷ命令をロード、修正、ディスエーブル、または実行するために使用することができる。これを行うために、数ある中で特に各ＰＥをイネーブルまたはディスエーブルにする、各ＰＥに配置された制御レジスタを修正する命令によって、個別のＰＥがイネーブルまたはディスエーブルされる。個別のＰＥまたはＰＥのグループをロードおよび動作させるために、個別のＰＥをイネーブルし、他のすべてをディスエーブルするように制御レジスタが修正される。これで通常のｉＶＬＩＷ命令は、イネーブルされたＰＥ上でのみ動作することになる。
【００３０】
図５を参照すると、ｉＶＬＩＷのロードおよびフェッチ・パイプラインの態様が、ｉＶＬＩＷシステム５００に関して記載されている。図５は、他の態様の中で、ＶＩＭメモリから命令を選択できるようにするための選択機構を示す。フェッチされた命令は、第１の命令レジスタ（ＩＲ１）５１０にロードされる。レジスタ５１０は、一般に図２の命令レジスタ２０に対応する。ＩＲ１の出力は、第２の命令レジスタ（ＩＲ２）５１４をロードする前のパイプライン・サイクルの初期に、プリデコーダまたはプリデコード機能５１２内で、プリデコードされる。ＩＲ１内の命令が非ゼロ命令カウントを伴うロードｉＶＬＩＷ命令（ＬＶ）であると、プリデコーダ５１２は、ＬＣ演算サイクルをセットアップするために使用されるＬＶｃ１制御信号５１５を生成し、加算器５０４によってパス５０３を介してＬＭ命令内に含まれたオフセット値に追加された、指定のＶｂレジスタ５０２を使用して、ＶＩＭアドレス５１１が計算される。その結果生じるＶＩＭアドレス５１１は、レジスタ５０６内に格納され、マルチプレクサ５０８を介してＶＩＭ５１６をアドレス指定するために渡される。ＶＩＭ５１６は、一般に図１のＶＩＭ１０６に対応する。レジスタ５０６は、ＬＶ動作中にＶＩＭアドレス５０７を保持する必要がある。ＶＩＭアドレス５１１およびＬＶ制御状態は、ＬＶ命令の後に受け取った命令を、ＶＩＭ５１６にロードすることができる。ＬＶが受け取られたサイクルの終わりに、命令をＶＩＭ５１６へローディングするときに使用するために、図４Ａに示された使用不能ビット１０〜１７がｄビット・レジスタ５１８にロードされる。ＶＩＭ５１６にロードされることになっている、ＩＲ１  ５１０内の次の命令を受け取ると同時に、Ｓｔｏｒｅｃ１  ５１９、Ｌｏａｄｃ１  ５２１、ＡＬＵｃ１  ５２３、ＭＡＵｃ１  ５２５、またはＤＳＵｃ１  ５２７の命令タイプに応じて、適切な制御信号が生成される。プリデコード機能５１２は、図４Ａ、Ｂ、およびＥに示された命令タイプを定めるグループ・ビット（ビット３０および３１）、ならびに図４Ｄおよび４Ｅに示されたユニット・フィールド・ビット（実行ユニット・タイプを指定するビット２７および２８）の単純な解読に基づいて提供されることが好ましい。このプリデコードステップを使用することによって、ＩＲ１  ５１０内の命令を、正しい機能ユニット位置にあるＶＩＭ５１６にロードすることができる。たとえば、命令のＬＶリストに含まれる図４ＥのＡＤＤ命令の場合、この命令がＩＲ１  ５１０内で受信されると、この命令がＶＩＭ５１６内のＡＬＵ命令スロット５２０にロードされるべきであることを、プリデコード機能５１２によって決定することができる。さらに、その機能スロット位置に対して適切なｄビット５３１が、そのスロットのビット３１にロードされる。ロードされたｄビットは、元の命令からのグループ・コード・ビット位置の１つを占有する。
【００３１】
ＩＲ１  ５１０内のＸＶ命令を受信すると同時に、ＶＩＭアドレス５１１は、加算器５０４によってパス５０３を介してＸＶ命令内に含まれたオフセット値に追加された、指定されたＶｂレジスタ５０２を使用して計算される。その結果生じるＶＩＭアドレス５０７は、マルチプレクサ５０８を介してＶＩＭをアドレス指定するために渡される。指定アドレスにあるｉＶＬＩＷがＶＩＭ５１６から読み取られ、マルチプレクサ５３０、５３２、５３４、５３６、および５３８を介してＩＲ２レジスタ５１４に渡される。読取られたＶＩＭアクセス・タイミングのクリティカル・パスを最小限に抑えるための代替形態として、ＶＩＭ５１６の出力を、復号状態論理の前に出力がマルチプレクサを介して渡されるレジスタにラッチすることができる。
【００３２】
ＸＶ命令を実行するために、ＩＲ２ＭＵＸ１制御信号５３３はプリデコードＸＶｃ１制御信号５１７と共に、すべてのＩＲ２マルチプレクサ５３０、５３２、５３４、５３６、および５３８に、ＶＩＭ出力パス５４１、５４３、５４５、５４７、および５４９を選択させる。この時点で、ｉＶＬＩＷの並列処理実行性能を同時発生で提供しながら、パイプライン５４０、５４２、５４４、５４６、および５４８の５つの個別のデコード段階および実行段階が完了する。単一の３２ビット命令が独自にＰＥまたはＳＰ内で実行できるようにするために、バイパスＶＩＭパス５３５が示される。たとえば、シンプレックスＡＤＤ命令が、平行配列の実行のためにＩＲ１  ５１０内に受信されると、プリデコード機能５１２は、ＩＲ２ＭＵＸ１制御信号５３３を生成するが、この信号は、命令タイプのプリデコード信号すなわちＡＤＤの場合信号５２３と共に、ＸＶ５１７またはＬＶ５１５のアクティブ制御信号なしで、ＡＬＵマルチプレクサ５３４にバイパスパス５３５を選択させる。
【００３３】
ＭａｎＡｒｒａｙは様々な数のＰＥで構成することが可能であるため、図６では、図５に示されたシステム５００などのｉＶＬＩＷシステムの例示的ＳＩＭＤ  ｉＶＬＩＷの使用法を示す。図６では、ＰＥ０〜ＰＥＪまでの番号が付けられたＰＥによって示されるように、Ｊ＋１個のＰＥがある。ロード・ユニットおよびＭＡＵ命令スロットが使用不能であり、３つの命令がＶＩＭアドレス２７でロードされることを示す、ＬＶコードの一部が図６に示される。このローディング動作は、図４Ａに示された構文に基づいてＬＶ命令６０１から決定される。すべてのＰＥがＯＮにマスクされると仮定すると、表示された３つの命令６０３、６０５、および６０７は、配列内にあるそれぞれのＪ＋１  ＰＥ内のＶＩＭアドレス２７にロードされることになる。このローディングの結果は、ＶＩＭ内の適切な実行スロットに格納された命令、すなわちＡＬＵスロット内の命令６０３、ＤＳＵスロット内の命令６０５、および格納ユニット・スロット内の命令６０７を示すことによって、図６に表示される。
【００３４】
図３、５、および６によってカバーされた前述の考察で、プリデコード機能はＶＩＭスロット・フィールドの複数のビット３１位置に、ＶＩＭローディング・シーケンスを開始したＬＶ命令から生成された、図５に示された格納ｄビット５１８が書き込めるようにすることに留意されたい。さらに、演算命令内のユニット・フィールド、ビット２７および２８は、たとえば図４Ｅをみればわかるように、どのＶＩＭスロットに演算命令がロードされるのかを決めるのに必要であることに留意されたい。したがって、ＩＲ１内の命令は具体的に言えば、プリデコード機能を使用してＶＩＭ内の実行ユニット・スロットに関連付けられるため、グループ・ビットおよびユニット・フィールド・ビットはＶＩＭ内に格納する必要がなく、前の考察で単一のｄビットを使用して実証したように、他の目的に使用することができる。ＶＩＭスロット内の特定のビット位置は、図７のＶＩＭ  ７００に示され、ここで命令グループ・ビット、すなわち図４Ｅのビット３０のうちの１つ、ならびに命令ユニット・フィールド・ビット、すなわちビット２７および２８が、図７では７２１とラベル表示されたＯＰコード拡張ビット３０には「ｏ」、７２３とラベル表示されたレジスタ・ファイル拡張ビット２８には「ｒ」、７２５とラベル表示された条件付き実行拡張ビット２７には「ｃ」という、変換拡張オプション・ビットによってＶＩＭ  ７００内で置き換えられる。これらの追加ビットは、プログラマがそこへロードできるかまたはそこから格納できる、図８Ａに示された雑レジスタ８５０内に別々に格納される。これらのビットは、３２ビット命令形式の命令符号化ビットがないために提供できなかった、拡張機能を提供する。ＯＰコード拡張ビット「ｏ」の場合、１セットの命令を新しいセットの命令にマッピングすることが可能である。レジスタ拡張ビット「ｒ」の場合、レジスタ・ファイル・スペースを２倍にし、追加のレジスタ・スペースか、あるいは２つのレジスタ・バンクを２つのコンテキスト間で分けられるようにする高速コンテキスト・スイッチング機構として動作することのいずれかを提供する、２バンクのレジスタを有することが可能である。条件実行拡張ビット「ｃ」の場合、２つの異なる条件セットを指定するか、またはプログラマ制御の下で異なる条件付き実行機能性を指定することが可能である。
【００３５】
図８Ａは、ｏ、ｒ、およびｃビット・レジスタ８５０の追加、ならびに１組のプリデコード制御信号８１５、８１７、８１９、８２１、８２３、８２５、８２７、および８３３を示す、ｉＶＬＩＷ変換拡張ロードおよびフェッチ・パイプラインの態様を図示した、ｉＶＬＩＷシステム８００を示す。これらの解放されたビットは他の目的で使用できることに留意されたい。たとえば、すべての３ビットをレジスタ・ファイル拡張に使用して、３つのオペランド命令に個別に制御を与えるか、または３２×３２レジスタの８つまでのバンクを与えるかのいずれかが可能である。
【００３６】
単一の３２ビット命令それ自体をｉＶＬＩＷのＰＥまたはｉＶＬＩＷのＳＰで実行させるために、ＶＩＭをバイパスする径路８３５を図８Ａに示す。たとえば、単体のＡＤＤ命令が平行配列実行のためにＩＲ１  ８１０に受信されると、プリデコード機能８１２がＩＲ２ＭＵＸ２制御信号８３３を生成するが、これは命令タイププリデコード信号、すなわちＡＤＤの場合には信号８２３と共に、およびＸＶ８１７またはＬＶ８１５のアクティブ制御信号なしで、ＡＬＵマルチプレクサ８３４にバイパスパス８３５を選択させる。本明細書に記載のように、バイパス動作はパイプラインの全段階で生じるものであるため、バイパスされた命令内のグループ・ビットおよびユニット・フィールド・ビットを、ＩＲ２ラッチ段階に入ったときに置き換えることができる。これは、図８Ａ中で、マルチプレクサ８３０、８３２、８３４、８３６、および８３８への入力の適切なビット位置を置き換えるのに使用される、「ｏ、ｒ、およびｃ」ビット信号パス８５１で示される。
【００３７】
ＶＩＭのｉＶＬＩＷ記憶装置は代替形式が可能であり、技術および設計の考慮事項によって決められることがで好ましいことに留意されたい。たとえば、図８Ｂは、図７および８Ａからの代替形式ＶＩＭ８００'を示す。実行スロット当たりｄビットが、追加のビット「ｏ、ｒ、ｃ、およびｕａｆ」ビットと共にグループにまとめられる。これらの１０ビットは、各スロット当たりビット０〜２６、２９に画定された実行ユニット機能ビットから、別々にグループ化される。「ｕａｆ」ビットはどの演算ユニットが実行時にフラグに影響を与えるかに関係するため、ＬＶ命令からの図４Ａのユニット作用フィールド（ｕａｆ）ビット２２および２３は、単一のｉＶＬＩＷのＶＩＭアドレスに格納される必要がある。他の記憶装置形式も可能であり、たとえば、ｄビットを、機能ビットおよび、別々に格納された「ｕａｆ」ビットなどのｉＶＬＩＷ全体に関連付けられたビットと共に格納することができる。ｋスロットｉＶＬＩＷの場合、ｋ＊３２ビットは必ずしもＶＩＭに格納される必要はないことにも留意されたい。プリデコード機能により、ｋ３２ビット命令を格納するのに必要であると仮定される追加ビットをｋ＊３２ビット・スペースに格納できるだけでなく、ビットをすべて使用する必要がない場合は、ｋ＊３２ビット・スペースを減らすこともできる。これは図８Ｂに示されており、ＶＩＭアドレス当たりの記憶装置ビットの合計数は、実行ユニット・スロット位置（０〜２６および２９）当たり必要な２８ビットの５倍に５つのｄビットを加え、さらに３つの「ｏ、ｒ、およびｃ」ビットと２つの「ｕａｆ」ビットを加えることで得られ、必要と仮定される５＊３２＝１６０ビットよりも１０少ない、ｉＶＬＩＷアドレス当たり合計１５０ビットとなる。その結果、機能性は向上し、ＶＩＭメモリ・スペースは削減される。一般に追加情報は、ＶＩＭ内で実行ユニットごとに、またはそのＶＩＭアドレスに格納されたｉＶＬＩＷを介して制御に影響を与える別々の個別ビットとして、個別に格納することができる。たとえば、１６の追加のロード即時ビットを、別々の「定数」レジスタ内に格納し、ＶＩＭアドレス内にロードして、ロード・ユニットの容量を拡張し、３２ビットの即時データをロードすることができる。この拡張を達成するには、ＶＩＭデータ幅を適切に拡張しなければならない。格納されたｉＶＬＩＷのサイズが、命令サイズの倍数から減結合され、これによって格納されたｉＶＬＩＷが、要件に応じて、ｋ命令ｉＶＬＩＷに対するｋ＊３２ビットよりも大きいかまたは小さくなるようにすることができる。
【００３８】
図１には示したが図９または図１０では図を見やすくするために示していないＳＰ制御装置１０２およびＰＥ配列からなる、図９のプロセッサ９００または図１０のプロセッサ１０００などのプロセッサ内では、ＰＥ間通信を処理しているときにＳＭＩＭＤ動作を実施すると、問題が発生する可能性がある。典型的なＳＩＭＤモードの通信は、すべてのＰＥが同じＰＥ間通信命令を実行するように指定する。各ＰＥ内で同じであるこのＳＩＭＤのＰＥ間命令は、ＰＥ間で画定された共通の動作に確実に従うために、共通の制御機構を必要とする。一般に、ＳＥＮＤ−ＷＥＳＴなどの単一の命令が配列内にあるすべてのＰＥに送出される、送信モデルが使用される。ＳＩＭＤのＰＥ間通信命令は、ＰＥ間のネットワーク・インターフェースの制御を調整し、各ＰＥがＰＥ間命令によって位相的に定められたＰＥにデータを送信できるようにするものである。すべてのＰＥが同じ命令を受け取るので、この単一ＳＩＭＤ命令を解釈し、図９に示すように、単一のＰＥによってネットワーク・インターフェース９１１を制御することができる。図９に示すＭａｎＡｒｒａｙ  ２×２クラスタ・スイッチは、ＤＳＵ間のインターフェース入出力（Ｉ／Ｏ）バスに対して、４つの４対１マルチプレクサ９２０、９２２、９２４、および９２６で構成されることに留意されたい。これらのバスは、８、９、１６、３２、６４または他の数のビット、ビット・バスであってもよく、制限はない。単一の４対１マルチプレクサを制御するには、２ビットを制御して、可能な４つのパスから１つを選択するだけでよい。これは必要に応じてより大きなマルチプレクサを使用して、ＰＥのより大きなクラスタに拡張することができる。ＳＩＭＤシステム内でも、図１０に示したような、ＰＥ間のインターフェース・ネットワークに対する集中制御を有することが可能である。図１０では、集中制御装置１０１０が、他のＰＥがネットワーク内で実行するのと同じ、ディスパッチされたＰＥ間通信命令１０１１をＳＰ制御装置から受け取る。この機構により、ネットワーク接続をサイクルごとに変更することができる。ＳＩＭＤ送信モデルの２つの属性は、すべてのＰＥに対する共通の命令と、送信側ならびに受信側の仕様である。ＳＩＭＤモードでは、この方法は問題ではない。
【００３９】
送信モデルをＳＭＩＭＤモードに拡張しようとすると、別の問題が発生する可能性がある。こうした問題の１つが、ＳＭＩＭＤモードでは、各ＰＥが異なるＰＥ間通信命令を受信できるので、多重処理要素すべてが単一のＰＥに対するデータ送信を試みることが可能なことである。ＳＩＭＤ送信モデルの２つの属性は即時に分析され、すなわち共通のＰＥ間命令を有し、ソースとターゲットの両方、言い換えれば送信側と受信側の両方を指定する。単一サイクル通信を備えたＳＩＭＤモデル内の同じＰＥが複数のＰＥターゲットを有すると、通信ハザードとなる。この通信ハザードは図９に示すが、ＰＥ１、２、および３のＤＳＵがデータをＰＥ０に送信する一方で、ＰＥ０はデータをＰＥ３に送信する。ＰＥ０は３つのデータ入力を受け取ることはできない。他のシステムでは、多くの場合この種の問題を解決するために、インターフェース・バッファおよび優先度制御論理を挿入して、１つまたは複数の競合パスを遅延させる。この方法は、ＰＥ内で実行されるｉＶＬＩＷ命令のプログラミング中に、単一サイクルの通信動作をスケジューリングしなければならないため、ＳＭＩＭＤ処理の持つ本来的な同期的性質を妨害する。同期ＭＩＭＤ要件を妨害せずにこの通信ハザードを避けるためには、受信モデルを使用するのが好都合である。送信モデルによって送信された、単一ＰＥ内または集中制御機構内に配置されたネットワーク制御の単一ポイントが、受信モデルでは、分散ネットワーク・インターフェース制御に置き換えられる。各ＰＥが、専用の受信ポートを制御する。受信モデルは、ネットワーク・インターフェースを介して受信パスを指定する。ＭａｎＡｒｒａｙネットワークの場合、各ＰＥが、クラスタ・スイッチの専用のマルチプレクサ入力パスを制御する。
【００４０】
この配列は、図１１に２×２配列のプロセッサ１１００として示され、各ＰＥがそれぞれ、そのマルチプレクサ１１２０、１１２２、１１２４、または１１２６の専用の制御を有する。たとえば、ＰＥ０はその入力マルチプレクサ１１２０を制御するために、制御信号１１１１を有する。さらに受信モデルは、ターゲットＰＥを指定せずに、インターフェース・ネットワークへのＰＥ出力ポート上でデータを使用可能にしなければならない。したがって、受信モデルを使用して、処理要素間で任意の有意な通信を発生させるためには、使用可能にされたデータを受信するときに協働するように、ＰＥをプログラミングしなければならない。同期ＭＩＭＤを使用すると、協働命令が同じｉＶＬＩＷ位置内に存在すれば、この協働が発生することが保証される。ＸＶ命令が実行されるときのこの命令の位置を使用して、協働ＰＥは正しいＰＥ間通信命令を実行し、任意の２つまたはそれ以上のＰＥ間でデータを移動させる。一般に、ＰＥの１配列内には、複数のＰＥグループが存在できる。こうしたそれぞれのグループ内では、１つまたは複数のＰＥが別のＰＥからデータを受け取ると同時に、別のグループ内で、１つまたは複数のＰＥが異なるＰＥからデータを受け取ることができる。グループのサイズは、２つのＰＥから全配列のＰＥまで変更可能である。図１１では、図を見やすくするため、図１のＳＰ制御装置１０２などのＳＰを示していない。しかし、前記に参照によって組み込まれた米国仮出願第６０／０７７４５７で教示されたように、ＳＰの機能性はＰＥ０などのＰＥに併合可能であるか、または、ＳＰの機能性はすべてのＰＥに追加可能であるが、このように機能性を向上させることは相対的にコストがかかることは理解されるであろうとはいえ、こうした制御装置は含まれることが好ましい。
【００４１】
図４Ｆは、２×２  ＭａｎＡｒｒａｙ構成中にある３つの同期ＭＩＭＤのｉＶＬＩＷの定義４７０を示す。上位セクション４８０は、演算の記述を示す。下位セクション４９０は、それぞれＬＵ、ＭＡＵ、ＡＬＵ、ＤＳＵ、およびＳＵ内にロードされた、対応する命令記憶術を示す。各ｉＶＬＩＷには、各ＰＥに１行ずつ、計４行が含まれており、それぞれの間が太い黒線で区切られている。図の一番左の列は、ＰＥのｉＶＬＩＷ命令メモリ（ＶＩＭ）内でｉＶＬＩＷがロードされるアドレスを示す。次の列は、ＰＥ番号を示す。各ｉＶＬＩＷには、各ＰＥについて１行が含まれ、そのＰＥのＶＩＭエントリにロードされる命令を示す。残りの列には、ロード・ユニット（ＬＵ）、乗積算ユニット（ＭＡＵ）、演算論理ユニット（ＡＬＵ）、データ選択ユニット（ＤＳＵ）、およびストアユニット（ＳＵ）の５つの実行ユニットについて、それぞれの命令がリスト表示されている。
【００４２】
たとえば、ＰＥ２  ４９５のＶＩＭのエントリ番号２９には、ｌｉ.ｐ.ｗ Ｒ３,Ａ１＋,Ａ７、ｆｍｐｙ.ｐｍ.１ｆｗ Ｒ５,Ｒ２,Ｒ３１、ｆａｄｄ.ｐａ.１ｆｗ Ｒ９,Ｒ７,Ｒ５、およびｐｅｘｃｈｇ.ｐｄ.ｗ Ｒ８,Ｒ０,２ｘ２_ＰＥ３なる４つの命令がロードされる。これらの命令は、図４Ｆの次の行から最終行まで見られる。同じＶＩＭのエントリ（２９）でも、ＶＩＭのエントリ２９上でこれらのＰＥに対応する行、すなわちＰＥ０  ４９１、ＰＥ２  ４９３、およびＰＥ３  ４９７を見ればわかるように、ＰＥ０、１、および３には異なる命令が含まれる。
【００４３】
以下の例１−１は、図４Ｆに定義されたような、ＰＥのＶＩＭメモリをロードする命令シーケンスを示す。異なる命令を、同じアドレスの異なるＰＥのＶＩＭにロードするために、ＰＥマスキングが使用されることに留意されたい。
【００４４】
例１−１  同期ＭＩＭＤ ｉＶＬＩＷのＰＥのＶＩＭへのローディング
【００４５】
【表１】
0004156794.tif 000002
【００４６】
【表２】
0004156794.tif 000003
【００４７】
【表３】
0004156794.tif 000004
以下の例１−２は、図４Ｆのコード例１−１によってロードされた、エントリを実行する命令シーケンスを示す。ＰＥマスキングは不要であることに留意されたい。指定されたＶＩＭエントリは、ＰＥ０、ＰＥ１、ＰＥ２、およびＰＥ３の各ＰＥで実行される。
【００４８】
例１−２  ＰＥ ＶＩＭからの同期ＭＩＭＤ ｉＶＬＩＷの実行
【００４９】
【表４】
0004156794.tif 000005
実行される例示アルゴリズムの説明
図４Ｆで画定されたｉＶＬＩＷは、ＰＥのローカル・データ・メモリに格納された３×１の変数ベクトルのストリームを使用して、３×１の定数ベクトルの内積を得るために使用される。各ＰＥが、ベクトルの１成分を格納する。ＰＥ１は成分ｘを格納し、ＰＥ２は成分ｙを格納し、ＰＥ３は成分ｚを格納する。ＰＥ０は何の成分も格納しない。定数ベクトルは、ＰＥレジスタ内、この場合は計算レジスタＲ３１内で、同じ形式で保持される。
【００５０】
冗長な計算や遊休ＰＥを避けるために、ｉＶＬＩＷは同時に３つの変数ベクトル上で動作する。ＰＥの上でのベクトル成分の分布により、第４番目のベクトルの内積を計算するためにＰＥ０を使用することはできない。ＰＥ０は、将来のアルゴリズム段階に対して何らかのセットアップを処理する代わりに使用されるのが有利である。ｉＶＬＩＷのロード・スロットに見られるように、ベクトル１がｉＶＬＩＷ２７にロードされる（前述のように、成分的にはＰＥを横断する）と、ベクトル２はｉＶＬＩＷ  ２８にロードされ、ベクトル３はｉＶＬＩＷ２９にロードされる（ｌｉ．ｐ．ｗ  Ｒ＊，Ａ１＋，Ａ７）。ＰＥ１は、３つの各ベクトルについて、内積の成分ｘを計算する。ＰＥ２は成分ｙを計算し、ＰＥ３は成分ｚを計算する（ｆｍｐｙ．ｐｍ．１ｆｗ  Ｒ＊，Ｒ＊，Ｒ３１）。この時点で、ＰＥ１に対するベクトル１の内積の成分ｙおよびｚ、ＰＥ２に対するベクトル２内積の成分ｘおよびｚ、ＰＥ３に対するベクトル３の内積の成分ｘおよびｙを得るために、ＰＥ間の通信が発生しなければならない。この通信は、ｐｅｘｃｈｇ命令を介してＤＳＵ内で発生する。この方法では、それぞれのＰＥが、固有の内積結果の成分を同時に合計している（ｆａｄｄ．ｐａ．１ｆｗ  Ｒ９，Ｒ７，Ｒ＊およびｆａｄｄ．ｐａ．１ｆｗ  Ｒ１０，Ｒ９，Ｒ８）。次いでこれらの結果、ＰＥメモリに格納される（ｓｉ．ｐ．ｗ  Ｒ１０，＋Ａ２，Ａ６）。各ＰＥはあらゆる第３番目の結果を計算し、格納することに留意されたい。次いで、結果の最終セットが、ＰＥ１、２、および３から順繰りにアクセスされる。
【００５１】
さらに、各ＰＥはその内積結果とゼロ（ＰＥレジスタＲ０内に保持）との比較を実行し（ｆｃｍｐＬＥ．ｐａ．１ｆｗ  Ｒ１０，Ｒ０）、その内積が負であったなら、計算された内積の代わりに条件付きでゼロを格納する（ｔ．ｓｉｉ．ｐ．ｗ  Ｒ０，Ａ２＋，０）。すなわち、その比較は、Ｒ１０がＲ０より小さいということが真であるかを判定する。負の値を取り除くこの内積の実施は、たとえば、３次元グラフィックス・アプリケーションのためのライティング計算で使用される。
【００５２】
ここまで本発明について、本発明を実施するための現在の好ましい方法および装置のコンテキストで開示してきたが、当分野の一般技術者であれば、様々な代替および変形の実施態様がすでに明らかであろう。たとえば、本発明は、命令をＶＩＭにロードし、さらにその命令を実行するための機能を除外するものではない。この機能は、命令の形式およびハードウェアの複雑さなど、他の考慮すべき点の中で、現在の好ましいプログラミング・モデルを必要以上に複雑化してしまうものであるとみなされた。したがって、ロードｉＶＬＩＷ区切り符号方式が選択されたのである。
【図面の簡単な説明】
【図１】  本発明による、ＭａｎＡｒｒａｙの間接的ＶＬＩＥＷ命令メモリの様々な態様を示す。
【図２】  基本的なｉＶＬＩＷデータ・パスを示す。
【図３】  ＡＬＵスロットの拡大図を備えた、５スロットｉＶＬＩＷを示す。
【図４Ａ】  ＬＶロード／修正ＶＬＩＷ命令を示す。
【図４Ｂ】  ＸＶ実行ＶＬＩＷ命令を示す。
【図４Ｃ】  命令フィールド定義を示す。
【図４Ｄ】  他の命令フィールド定義を示す。
【図４Ｅ】  ＡＤＤ命令を示す。
【図４Ｆ】  ２×２  ＭａｎＡｒｒａｙ構成における、３つの同期ＭＩＭＤ  ｉＶＬＩＷ用のスロット記憶装置を示す。
【図５】  本発明による、ｉＶＬＩＷロードおよびフェッチ・パイプラインを示す。
【図６】  ＳＩＭＤ  ｉＶＬＩＷ配列処理の態様を示す。
【図７】  ｉＶＬＩＷ変換拡張を示す。
【図８Ａ】  ｉＶＬＩＷ変換拡張のロードおよびフェッチ・パイプラインを示す。
【図８Ｂ】  ＶＩＭ  ｉＶＬＩＷ記憶装置用の代替形式を示す。
【図９】  送信モデルを使用したＳＭＩＭＤ通信に関する、送信モデル・クラスタ・スイッチ制御および例示的障害を示す。
【図１０】  中央クラスタ・スイッチ制御を備えた送信モデルを示す。
【図１１】  ＳＭＩＭＤモード動作中の通信ハザードを避けるために使用される、受信モデル・クラスタ・スイッチ制御を示す。
【図１】
0004156794.tif 000006
【図２】
0004156794.tif 000007
【図３】
0004156794.tif 000008
【図４Ａ】
0004156794.tif 000009
【図４Ｂ】
0004156794.tif 000010
【図４Ｃ】
0004156794.tif 000011
【図４Ｄ】
0004156794.tif 000012
【図４Ｅ】
0004156794.tif 000013
【図４Ｆ１】
0004156794.tif 000014
【図４Ｆ２】
0004156794.tif 000015
【図５】
0004156794.tif 000016
【図６】
0004156794.tif 000017
【図７】
0004156794.tif 000018
【図８Ａ】
0004156794.tif 000019
【図８Ｂ】
0004156794.tif 000020
【図９】
0004156794.tif 000021
【図１０】
0004156794.tif 000022
【図１１】
0004156794.tif 000023