(57)【特許請求の範囲】
【請求項１】
コンピュータの演算において、メモリからデータエンティティを選択して前記データエンティティをレジスタファイルに書き込むための方法であって、
前記データエンティティを選択するための前記メモリ内のアドレスを指定し、
前記データエンティティを書き込むための前記レジスタファイル内のレジスタを指定し、
前記メモリから選択され前記レジスタファイルに書き込まれる前記データエンティティ中のものを選択するのに使用するマスクを提供し、
前記マスクに従って前記アドレスから開始する前記データエンティティを選択し、
前記マスクに従って前記データエンティティを前記レジスタファイルに書き込み、
前記メモリ内の前記アドレスと前記レジスタファイル内の前記レジスタを指定する単一の命令が、前記マスクに従って、選択的に、前記メモリから前記データエンティティを読み取り、前記データエンティティを前記レジスタファイル内の複数のレジスタに書き込む、ことを実行することを含む方法。
【請求項２】
前記実行することが、命令セットアーキテクチャ（ＩＳＡ）に従って実施されたストリームロード（Ｓｔｒｅａｍ  Ｌｏａｄ）命令の実行の結果起こる請求項１に記載の方法。
【請求項３】
前記ストリームロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始する前記レジスタファイルの第１のレジスタ、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す請求項２に記載の方法。
【請求項４】
前記ストリームロードの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（Ｄｙｎａｍｉｃ  Ｍｕｌｔｉ−ｓｔｒｅａｍｉｎｇ）（ＤＭＳ）プロセッサで行われ、前記ストリームロード命令が実行されている間、前記第１のストリームが非活動状態に留まる請求項２に記載の方法。
【請求項５】
前記ストリームロードの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記第１のストリームが、前記ストリームロード命令が実行される間、前記ストリームロード命令によって影響されるメモリの値に依存しない命令を実行する請求項２に記載の方法。
【請求項６】
コンピュータの演算において、レジスタファイルからデータエンティティを選択して前記データエンティティをメモリに書き込むための方法であって、
前記データエンティティを選択するための前記レジスタファイル内のレジスタを指定し、
前記データエンティティを書き込むための前記メモリ内のアドレスを指定し、
前記レジスタファイルから選択され前記メモリに書き込まれる前記データエンティティ中のものを選択するのに使用するマスクを提供し、
前記マスクに従って前記レジスタファイル内の前記レジスタから開始する前記データエンティティを選択し、
前記マスクに従って前記データエンティティを前記アドレスで前記メモリに書き込み、
前記メモリ内の前記アドレスと前記レジスタファイル内の前記レジスタを指定する単一の命令が、前記マスクに従って、選択的に、前記レジスタファイルから前記データエンティティを読み取り、前記データエンティティを前記メモリ内の前記アドレスに書き込む、ことを実行することを含む方法。
【請求項７】
前記実行することが、命令セットアーキテクチャ（ＩＳＡ）に従って実施されたストリームストア（Ｓｔｒｅａｍ  Ｓｔｏｒｅ）命令の結果起こる請求項６に記載の方法。
【請求項８】
前記ストリームストア命令の引数が、データエンティティの読取りを開始するレジスタ、前記データエンティティの書込みを開始する前記メモリのアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す請求項７に記載の方法。
【請求項９】
前記ストリームストアの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記ストリームストア命令が実行されている間、前記第１のストリームが非活動状態に留まる請求項７に記載の方法。
【請求項１０】
前記ストリームストアの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記第１のストリームが、前記ストリームストア命令が実行される間、前記ストリームストア命令によって影響されるメモリの値に依存しない命令を実行する請求項７に記載の方法。
【請求項１１】
コンピュータの演算において、メモリからデータエンティティを選択して前記データエンティティをレジスタファイルに書き込むための方法であって、
（ａ）第１のアドレスとの関係でコピーするエンティティの第１のマップを照会するステップと、
（ｂ）前記マップによって示されたエンティティを選択して読み取るステップと、
（ｃ）第１のレジスタとの関係で、前記メモリからコピーした前記エンティティを書き込む位置の第２のマップを照会するステップと、
（ｄ）前記第２のマップに従って前記エンティティを前記レジスタファイルに書き込むステップとを含む方法。
【請求項１２】
前記ステップが、命令セットアーキテクチャ（ＩＳＡ）に従って実施されたマスクされたロード（Ｍａｓｋｅｄ  Ｌｏａｄ）命令の結果起こる請求項１１に記載の方法。
【請求項１３】
前記マスクされたロード命令の引数が、マスクを配置するための開始メモリアドレス、使用するマスク番号、ならびに前記レジスタファイルにデータエンティティの書込みを開始する第１のレジスタを示す請求項１２に記載の方法。
【請求項１４】
前記第１のおよび前記第２のマップがビットストリングとして実施され、前記ストリングのビット位置が、メモリから選択されるべきデータエンティティの位置、およびデータエンティティが書き込まれるべきレジスタを示す請求項１１に記載の方法。
【請求項１５】
ビットストリングマップが、サブマスクとして表現され、サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能である請求項１４に記載の方法。
【請求項１６】
前記マスクされたロードの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記マスクされたロード命令が実行されている間、前記第１のストリームが非活動状態に留まる請求項１２に記載の方法。
【請求項１７】
前記マスクされたロードの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記第１のストリームが、前記マスクされたロード命令が実行される間、前記マスクされたロード命令によって影響されるメモリの値に依存しない命令を実行する請求項１２に記載の方法。
【請求項１８】
コンピュータの演算において、レジスタファイルからデータエンティティを選択して前記データエンティティをメモリに書き込むための方法であって、
（ａ）第１のレジスタとの関係で読み取るエンティティの第１のマップを照会するステップと、
（ｂ）前記マップによって示されたエンティティを選択して読み取るステップと、
（ｃ）第１のアドレスとの関係で、前記レジスタファイルから読み取った前記エンティティを書き込む位置の第２のマップを照会するステップと、
（ｄ）前記第２のマップに従って前記エンティティを前記メモリに書き込むステップとを含む方法。
【請求項１９】
前記ステップが、命令セットアーキテクチャ（ＩＳＡ）に従って実施されたマスクされたストア（Ｍａｓｋｅｄ  Ｓｔｏｒｅ）命令の結果起こる請求項１８に記載の方法。
【請求項２０】
前記マスクされたストア命令の引数が、マスクを配置するための前記第１レジスタ、複数のマスクからの使用するマスク番号、ならびに前記メモリにデータエンティティの書込みを開始する前記第１のアドレスを示す請求項１９に記載の方法。
【請求項２１】
前記第１のおよび前記第２のマップがビットストリングとして実施され、前記ストリングのビットの位置が、読み取られるべきデータエンティティの位置、およびデータエンティティが書き込まれるべきレジスタを示す請求項１８に記載の方法。
【請求項２２】
ビットストリングマップが、サブマスクとして表現され、サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能である請求項２１に記載の方法。
【請求項２３】
前記マスクされたストアの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記マスクされたストア命令が実行されている間、前記第１のストリームが非活動状態に留まる請求項１９に記載の方法。
【請求項２４】
前記マスクされたストアの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記第１のストリームが、前記マスクされたストア命令が実行される間、前記マスクされたストア命令によって影響されるメモリの値に依存しない命令を実行する請求項１９に記載の方法。
【請求項２５】
マスクされたストリームロード命令を実行するコンピュータシステムであって、前記マスクされたストリームロード命令は、
前記命令の指示と、
データエンティティの読取りを開始するメモリの第１のアドレスを示す第１の引数と、
前記メモリから読み取った前記データエンティティの書込みを開始するレジスタファイルの第１のレジスタを示す第２の引数と、
前記データエンティティの中のどれが前記メモリから読み取られるかを定義する、マスクを示す第３の引数とを含む、コンピュータシステム。
【請求項２６】
ストリームストア命令を実行するコンピュータシステムであって、前記ストリームストア命令は、
前記命令の指示と、
データエンティティの読取りを開始するレジスタファイルの第１のアドレスを示す第１の引数と、
前記レジスタファイルから読み取った前記データエンティティの書込みを開始するメモリの第１のアドレスを示す第２の引数と、
前記データエンティティの中のどれが前記レジスタファイルから読み取られるかを定義する、マスクを示す第３の引数とを含む、コンピュータシステム。
【請求項２７】
マスクされたロード命令を実行するコンピュータシステムであって、前記マスクされたロード命令は、
前記命令の指示と、
読み取るべきデータエンティティを示すマスクを配置するメモリの第１のアドレスを示す第１の引数と、
前記メモリから読み取った前記データエンティティの書込みを開始するレジスタファイルの第１のレジスタを示す第２の引数と、
読取りおよび書込みを行うべき前記データエンティティを選択するのに使用するマスク番号を示す第３の引数とを含むコンピュータシステム。
【請求項２８】
マスクされたストア命令を実行するコンピュータシステムであって、前記マスクされたストア命令は、
前記命令の指示と、
読み取るべきデータエンティティを示すマスクを配置するレジスタファイルの第１のレジスタを示す第１の引数と、
前記レジスタファイルから読み取った前記データエンティティの書込みを開始するメモリの第１のアドレスを示す第２の引数と、
コピーおよび書込みを行うべき前記データエンティティを選択するのに使用するマスク番号を示す第３の引数とを含むコンピュータシステム。
【請求項２９】
ＣＰＵと、
前記ＣＰＵに接続されたメモリと、
レジスタファイルとを含む計算システムであって、
前記ＣＰＵが、前記メモリから前記レジスタファイルにデータエンティティをロードする際、ストリームロード命令に規定されたある数のデータエンティティを読み取り、前記ストリームロード命令に規定されたレジスタから開始する、前記ストリームロード命令に規定されたマスク内で指定された前記レジスタファイルのレジスタに前記データエンティティを書き込むことを特徴とするシステム。
【請求項３０】
メモリから前記レジスタファイルにデータエンティティを転送することが、命令セットアーキテクチャ（ＩＳＡ）に従って実施され、前記ＣＰＵによって実行されるストリームロード命令の結果起こる請求項２９に記載のシステム。
【請求項３１】
前記ストリームロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始する前記レジスタファイルの第１のレジスタ、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す請求項３０に記載のシステム。
【請求項３２】
前記ストリームロードの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記ストリームロード命令が実行されている間、前記第１のストリームが非活動状態に留まる請求項３０に記載のシステム。
【請求項３３】
前記ストリームロードの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記第１のストリームが、前記ストリームロード命令が実行される間、前記ストリームロード命令によって影響されるメモリの値に依存しない命令を実行する請求項３０に記載のシステム。
【請求項３４】
ＣＰＵと、
前記ＣＰＵに接続されたメモリと、
レジスタファイルとを含む計算システムであって、
前記ＣＰＵが、前記レジスタファイルから前記メモリにデータエンティティをストアする際、ストリームストア命令に規定されたある数のデータエンティティを前記レジスタファイルから読み取り、前記ストリームストア命令に規定されたマスク内で指定された前記メモリのアドレス指定された場所に前記データエンティティを書き込むことを特徴とするシステム。
【請求項３５】
前記レジスタファイルからメモリにデータエンティティをストアすることが、命令セットアーキテクチャ（ＩＳＡ）に従って実施され、前記ＣＰＵによって実行されるストリームストア命令の結果起こる請求項３４に記載のシステム。
【請求項３６】
前記ストリームストア命令の引数が、データエンティティの読取りを開始する第１のレジスタファイル、前記データエンティティを書き込むメモリの第１のアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す請求項３５に記載のシステム。
【請求項３７】
前記ストリームストアの実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記ストリームストア命令が実行されている間、前記第１のストリームが非活動状態に留まる請求項３５に記載のシステム。
【請求項３８】
前記ストリームストアの実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記第１のストリームが、前記ストリームストア命令が実行される間、前記ストリームストア命令によって影響されるメモリの値に依存しない命令を実行する請求項３５に記載のシステム。
【請求項３９】
ＣＰＵと、
メモリと、
レジスタファイルとを含む計算システムであって、
前記ＣＰＵが、前記メモリから前記レジスタファイルにデータエンティティをロードする際、第１のアドレスで前記メモリに入り、マスクに従ってデータエンティティを読み取り、前記マスクに従って前記レジスタファイルのレジスタに前記データエンティティを書き込むことを特徴とするシステム。
【請求項４０】
メモリから前記レジスタファイルにデータエンティティをロードすることが、命令セットアーキテクチャ（ＩＳＡ）に従って実施され、前記ＣＰＵによって実行されるマスクされたロード命令の結果起こる請求項３９に記載のシステム。
【請求項４１】
前記マスクされたロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始する前記レジスタファイルの第１のレジスタ、ならびにデータエンティティの読取りおよび書込みのための前記メモリおよび前記レジスタファイルの相対位置を示すのに使用するストアされたマスクを示すマスク番号を示す請求項４０に記載のシステム。
【請求項４２】
前記ストアされたマスクが、２ビットストリングベクトルとして実施され、前記第１のアドレスとの関係でどのデータエンティティを読み取るかを第１のベクトルが示し、前記第１のレジスタとの関係でどのレジスタに前記データエンティティを書き込むかを第２のベクトルが示す請求項４１に記載のシステム。
【請求項４３】
ビットストリングマップが、サブマスクとして表現され、サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能である請求項４２に記載のシステム。
【請求項４４】
前記マスクされたロードの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記マスクされたロード命令が実行されている間、前記第１のストリームが非活動状態に留まる請求項４０に記載のシステム。
【請求項４５】
前記マスクされたロードの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記第１のストリームが、前記マスクされたロード命令が実行される間、前記マスクされたロード命令によって影響されるメモリの値に依存しない命令を実行する請求項４０に記載のシステム。
【請求項４６】
ＣＰＵと、
メモリと、
レジスタファイルとを含む計算システムであって、
前記ＣＰＵが、前記レジスタファイルから前記メモリにデータエンティティをストアする際、第１のレジスタで前記レジスタファイルに入り、マスクに従って前記レジスタファイルからデータエンティティを読み取り、第１のアドレスから開始して、やはりマスクに従って前記データエンティティをメモリのアドレス指定された場所に書き込むことを特徴とするシステム。
【請求項４７】
前記レジスタファイルからメモリにデータエンティティをストアすることが、命令セットアーキテクチャ（ＩＳＡ）に従って実施され、前記ＣＰＵによって実行されるマスクされたストア命令の結果起こる請求項４６に記載のシステム。
【請求項４８】
前記マスクされたストア命令の引数が、データエンティティの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始する前記レジスタファイルの第１のレジスタ、ならびに前記データエンティティの読取りおよび書込みのための前記メモリおよび前記レジスタファイルの相対位置を示すのに使用するストアされたマスクを示すマスク番号を示す請求項４７に記載のシステム。
【請求項４９】
前記ストアされたマスクが、２ビットストリングベクトルとして実施され、前記第１のレジスタとの関係でどのデータエンティティを読み取るかを第１のベクトルが示し、前記第１のアドレスとの関係でどのレジスタに前記データエンティティを書き込むかを第２のベクトルが示す請求項４８に記載のシステム。
【請求項５０】
ビットストリングマップが、サブマスクとして表現され、サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能である請求項４９に記載のシステム。
【請求項５１】
前記マスクされたストアの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記マスクされたストア命令が実行されている間、前記第１のストリームが非活動状態に留まる請求項４７に記載のシステム。
【請求項５２】
前記マスクされたストアの前記実行が、第１のスレッドを実行する第１のストリームによって動的マルチストリーミング（ＤＭＳ）プロセッサで行われ、前記第１のストリームが、前記マスクされたストア命令が実行される間、前記マスクされたストア命令によって影響されるメモリの値に依存しない命令を実行する請求項４７に記載のシステム。
【請求項５３】
第１の複数ｋ個の個別ストリームと、
第２の複数ｍ個のマスクまたはマスクセットとを含む動的マルチストリーミングプロセッサであって、
前記第２の複数ｍ個の個別マスクまたはマスクセットが、マスクされたロード動作および／またはマスクされたストア演算を行うため、前記第１の複数ｋ個のストリームの個々のストリームを排他的に使用するように専用に供されるプロセッサ。
【請求項５４】
個々のマスクまたはマスクセットが、前記個々のマスクまたは前記個々のマスクセットを専用とするストリームによってのみ変更可能である請求項５３に記載のＤＭＳプロセッサ。
【請求項５５】
複数ｋ個の個別ストリームと、
マスクされたロードおよびマスクされたストア演算を行う際に使用するための１組のマスクまたはマスクセットであって、単一の命令を実行した結果として、かつ前記マスクに従って複数のデータエンティティをロードまたはストアするマスクまたはマスクセットと、
キャッシュメモリと、
システムメモリとを含む動的マルチストリーミング（ＤＭＳ）プロセッサシステムであって、
マスクされたロードまたはマスクされたストア演算を行う際、前記システムが前記システムメモリと１つまたは複数のレジスタファイルの間で直接にデータエンティティを転送することを特徴とするシステム。
【発明の詳細な説明】
【０００１】
発明の分野
本発明は、デジタル処理の分野に関し、より詳細には、コンピュータの演算においてデータエンティティをロードし、ストアするための方法および装置に関する。
【０００２】
関連出願の相互参照
本発明は、２０００年１月１８日出願の仮出願第６０／１７６９３７号に対する優先権を主張し、また、本発明は、１９９８年１２月１６日出願の同時係属出願第０９／２１６０１７号、１９９９年１月２７日出願の同時係属出願第０９／２４００１２号、１９９９年３月２２日出願の同時係属出願第０９／２７３８１０号、１９９９年５月１４日出願の同時係属出願第０９／３１２３０２号に関し、また一部継続出願である以上に列挙する４件に関し、４件すべてを参照により本件に組み込む。
【０００３】
発明の背景
本発明は、ソフトウェアからの命令を実行する際のＣＰＵ動作の分野に関する。当技術分野で知られるとおり、多くの種類の命令セットアーキテクチャ（ＩＳＡ）が存在し、いくつかのアーキテクチャが、多くのコンピュータオペレーションで好まれるようになっている。これらアーキテクチャの１つが、よく知られているＭＩＰＳ  ＩＳＡであり、本明細書では、いくつかの例でＭＩＰＳ  ＩＳＡを使用する。ただし、本発明は、ＭＩＰＳ  ＩＳＡには限定されない。
【０００４】
命令を実行する際にコンピュータプロセスにおいて必要な動作の１つが、汎用メモリまたはキャッシュメモリと、データが即時にアクセス可能であるＣＰＵのレジスタファイルとの間でデータエンティティを移動することである。複数のデータエンティティをロードまたはストアしてからでなければ、実行を開始または継続できないとき、従来の命令セットアーキテクチャでは、いくつかの命令が必要とされる。データにアクセスする必要があるアプリケーションでは、既知のパターンで関連するデータエンティティをロードまたはストアすることが可能な単一の命令を有することが望ましく、またそのような動作が可能な単一の命令が、多くのコンピュータ演算の速度および効率を相当に向上させることを本発明者は発見した。
【０００５】
したがって、明らかに必要とされているのは、メモリの中で既知の位置関係を有するデータエンティティを示すための単一の命令を含み、該単一命令を実行した結果として一連のそのようなデータエンティティをロードまたはストアするための方法および装置である。
【０００６】
発明の概要
本発明の好ましい実施形態では、コンピュータ演算において、メモリからデータエンティティを選択し、データエンティティをレジスタファイルに書き込むための方法が提供され、本方法は、（ａ）第１のアドレスから開始してＮ個のエンティティを選択して読み取るステップと、（ｂ）メモリのエンティティの順序で第１のレジスタからのレジスタ・ファイルにエンティティを書き込むステップとを含む。好ましい実施形態では、ステップは、命令セットアーキテクチャ（ＩＳＡ）に従って実施されるストリームロード（Ｓｔｒｅａｍ  Ｌｏａｄ）命令の結果起こり、ＩＳＡは、ＭＩＰＳであることが可能である。また、好ましい実施形態では、ストリームロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、データエンティティの書込みを開始するレジスタファイルの第１のレジスタ、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【０００７】
本発明の別の態様では、コンピュータ演算において、レジスタファイルからデータエンティティを選択し、データエンティティをメモリに書き込むための方法が提供され、本方法は、（ａ）第１のレジスタから開始してＮ個のエンティティを選択して読み取るステップと、（ｂ）レジスタファイルのエンティティの順序で第１のアドレスからメモリにエンティティを書き込むステップとを含む。好ましい実施形態では、ステップは、命令セットアーキテクチャ（ＩＳＡ）に従って実施されるストリームストア命令の結果起こり、ＩＳＡは、ＭＩＰＳである。また、好ましい実施形態では、ストリームストア命令の引数が、データエンティティの読取りを開始するレジスタ、データエンティティの書込みを開始するメモリのアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【０００８】
本発明の別の態様では、コンピュータ演算において、メモリからデータエンティティを選択し、データエンティティをレジスタファイルに書き込むための方法が提供され、本方法は、（ａ）第１のアドレスとの関係で、コピーするエンティティの第１のマップを照会するステップと、（ｂ）マップによって示されるエンティティを選択して読み取るステップと、（ｃ）第１のレジスタとの関係で、メモリからコピーしたエンティティを書き込む位置の第２のマップを照会するステップと、（ｄ）第２のマップに従ってエンティティをレジスタファイルに書き込むステップとを含む。好ましい実施形態では、ステップは、命令セットアーキテクチャ（ＩＳＡ）に従って実施されるマスクされたロード（Ｍａｓｋｅｄ  Ｌｏａｄ）命令の結果起こる。また、好ましい実施形態では、ＩＳＡは、ＭＩＰＳである。また、好ましい実施形態では、マスクされたロード命令の引数が、マスクの位置決めをするための開始メモリアドレス、使用するマスク番号、およびレジスタファイルにデータエンティティの書込みを開始する第１のレジスタを示す。いくつかの実施形態では、第１のおよび第２のマップは、ビットストリングとして実施され、ストリングにおけるビットの位置が、メモリから選択されるべきデータエンティティの位置、およびデータエンティティが書き込まれるべきレジスタを示す。
【０００９】
本発明のさらに別の態様では、レジスタファイルからデータエンティティを選択し、データエンティティをメモリに書き込むための方法が提供され、本方法は、（ａ）第１のレジスタとの関係で、読み取るエンティティの第１のマップを照会するステップと、（ｂ）マップによって示されるエンティティを選択して読み取るステップと、（ｃ）第１のアドレスとの関係で、レジスタファイルから読み取ったエンティティを書き込む位置の第２のマップを照会するステップと、（ｄ）第２のマップに従ってエンティティをメモリファイルに書き込むステップとを含む。好ましい実施形態では、ステップは、命令セットアーキテクチャ（ＩＳＡ）に従って実施されるマスクされたストア（Ｍａｓｋｅｄ  Ｓｔｏｒｅ）命令の結果起こり、ＩＳＡは、ＭＩＰＳであることが可能である。また、好ましい実施形態では、マスクされたストア命令の引数が、マスクを位置決めするための開始レジスタ、番号を使用するマスク、およびメモリへのデータエンティティの書込みを開始する第１のレジスタを示す。いくつかの実施形態では、第１のおよび第２のマップは、ビットストリングとして実施され、ストリングにおけるビットの位置が、読み取られるべきデータエンティティの位置、およびデータエンティティが書き込まれるべきレジスタを示す。
【００１０】
本発明のさらに別の実施形態では、コンピュータ演算において使用するためのストリームロード命令が提供され、本命令は、命令の指示と、データエンティティの読取りを開始するメモリの第１のアドレスを示す第１の引数と、メモリから読み取ったデータエンティティの書込みを開始するレジスタファイルの第１のレジスタを示す第２の引数と、読取りおよび書込みを行うデータエンティティの数を示す第３の引数とを含む。
【００１１】
別の態様では、ストリーム・ストア命令が提供され、本命令は、命令の指示と、データエンティティの読取りを開始するレジスタファイルの第１のアドレスを示す第１の引数と、レジスタファイルから読み取ったデータエンティティの書込みを開始するメモリの第１のアドレスを示す第２の引数と、読取りおよび書込みを行うデータエンティティの数を示す第３の引数とを含む。
【００１２】
さらに別の態様では、マスクされたロード命令が提供され、本命令は、命令の指示と、読み取るべきデータエンティティを示すマスクを配置するメモリの第１のアドレスを示す第１の引数と、メモリから読み取ったデータエンティティの書込みを開始するレジスタファイルの第１のレジスタを示す第２の引数と、読取りおよび書込みを行うデータエンティティを選択するのに使用するマスク番号を示す第３の引数とを含む。
【００１３】
さらに別の態様では、マスクされたストア命令が提供され、本命令は、命令の指示と、読み取るべきデータエンティティを示すマスクを配置するレジスタファイルの第１のレジスタを示す第１の引数と、レジスタファイルから読み取ったデータエンティティの書込みを開始するメモリの第１のアドレスを示す第２の引数と、コピーおよび書込みを行うデータエンティティを選択するのに使用するマスク番号を示す第３の引数とを含む。
【００１４】
別の態様では、ＣＰＵと、メモリと、レジスタファイルとを含む計算システムが提供される。システムは、メモリからレジスタファイルにデータエンティティをロードする際、ＣＰＵが、所定の数のデータエンティティを読み取り、所定の第１のレジスタから開始して、メモリと同じ順序でデータエンティティをレジスタファイルのレジスタに書き込むことを特徴とする。システムの好ましい実施形態では、メモリからレジスタファイルにデータエンティティを転送することは、命令セットアーキテクチャ（ＩＳＡ）に従って実施され、ＣＰＵによって実行されるストリームロード命令の結果起こり、ＩＳＡは、ＭＩＰＳであることが可能である。いくつかの実施形態では、ストリームロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、データエンティティの書込みを開始するレジスタファイルの第１のレジスタ、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【００１５】
さらに別の態様では、ＣＰＵと、メモリと、レジスタファイルとを含む計算システムが提供される。システムは、レジスタファイルからメモリにデータエンティティをストアする際、ＣＰＵが、レジスタファイルから所定の数のデータエンティティを読み取り、所定の第１のアドレスから開始して、レジスタファイルと同じ順序でデータエンティティをメモリのアドレス指定された場所に書き込むことを特徴とする。好ましい実施形態では、レジスタファイルからメモリにデータエンティティをストアすることは、命令セットアーキテクチャ（ＩＳＡ）に従って実施され、ＣＰＵによって実行されるストリームストア命令の結果起こり、ＩＳＡは、ＭＩＰＳであることが可能である。また、好ましい実施形態では、ストリームストア命令の引数が、データエンティティを読み取る第１のレジスタファイル、データエンティティを書き込むメモリの第１のアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【００１６】
別の態様では、ＣＰＵと、メモリと、レジスタファイルとを含む計算システムが提供される。このシステムは、レジスタファイルからメモリにデータエンティティをストアする際、ＣＰＵが、レジスタファイルから所定の数のデータエンティティを読み取り、所定の第１のアドレスから開始して、レジスタファイルと同じ順序でデータエンティティをメモリのアドレス指定された場所に書き込むことを特徴とする。好ましい実施形態では、レジスタファイルからメモリにデータエンティティをストアすることは、命令セットアーキテクチャ（ＩＳＡ）に従って実施され、ＣＰＵによって実行されるストリームストア命令の結果起こり、ＩＳＡは、ＭＩＰＳであることが可能である。いくつかの実施形態では、ストリームストア命令の引数が、データエンティティを読み取る第１のレジスタファイル、データエンティティを書き込むメモリの第１のアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【００１７】
別の態様では、ＣＰＵと、メモリと、レジスタファイルとを含む計算システムが提供される。メモリからレジスタファイルにデータエンティティをロードする際、ＣＰＵは、第１のアドレスに関する所定のパターンに従ってデータエンティティを読み取り、第１のレジスタに関する所定のパターンでデータエンティティをレジスタファイルのレジスタに書き込む。好ましい実施形態では、メモリからレジスタファイルにデータエンティティをロードすることは、命令セットアーキテクチャ（ＩＳＡ）に従って実施され、ＣＰＵによって実行されるマスクされたロード命令の結果起こり、ＩＳＡは、ＭＩＰＳであることが可能である。いくつかの実施形態では、マスクされたロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、データエンティティの書込みを開始するレジスタファイルの第１のレジスタ、ならびにデータエンティティの読取りおよび書込みのためのメモリおよびレジスタファイルの相対位置を示すのに使用するストアされたマスクを示すマスク番号を示す。さらに、ストアされたマスクは、２ビットストリングベクトルとして実施することが可能であり、第１のアドレスとの関係でどのデータエンティティを読み取るかを第１のベクトルが示し、第１のレジスタとの関係でどのレジスタにデータエンティティを書き込むかを第２のベクトルが示す。
【００１８】
さらに別の態様では、ＣＰＵと、メモリと、レジスタファイルとを含む計算システムが提供される。システムでは、レジスタファイルからメモリにデータエンティティをストアする際、ＣＰＵが、所定のパターンに従ってレジスタファイルからデータエンティティを読み取り、第１のアドレスから開始して、やはり所定のパターンに従ってデータエンティティをメモリのアドレス指定された場所に書き込む。好ましい実施形態では、レジスタファイルからメモリにデータエンティティをストアすることは、命令セットアーキテクチャ（ＩＳＡ）に従って実施され、ＣＰＵによって実行されるマスクされたストア命令の結果起こり、ＩＳＡは、ＭＩＰＳであることが可能である。好ましい実施形態では、マスクされたロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、データエンティティの書込みを開始するレジスタファイルの第１のレジスタ、ならびにデータエンティティの読取りおよび書込みのためのメモリおよびレジスタファイルの相対位置を示すのに使用するストアされたマスクを示すマスク番号を示す。いくつかの実施形態では、ストアされたマスクは、２ビットストリングベクトルとして実施され、第１のレジスタとの関係でどのデータエンティティを読み取るかを第１のベクトルが示し、第１のアドレスとの関係でどのレジスタにデータエンティティを書き込むかを第２のベクトルが示す。
【００１９】
さらに別の態様では、動的マルチストリーミング（ＤＭＳ）プロセッサが提供され、本プロセッサは、第１の複数ｋ個の個別ストリームと、第２の複数ｍ個のマスクまたはマスクセットとを含む。第２の複数ｍ個の個別マスクまたはマスクセットは、マスクされたロードおよび／またはマスクされたストア演算を行うため、第１の複数ｋ個のストリームの個々のストリームを排他的に使用するように専用に供される。好ましい実施形態では、個々のマスクまたはマスクセットは、個々のマスクまたはマスクセットを専用とするストリームによってのみ変更可能である。
【００２０】
さらに別の態様では、動的マルチストリーミング（ＤＭＳ）プロセッサシステムが提供され、本システムは、複数ｋ個の個別ストリームと、マスクされたロード動作およびマスクされたストア演算を行う際に使用するための１組のマスクまたはマスクセットを含み、単一の命令を実行した結果として、かつマスク、キャッシュメモリ、およびシステムメモリに従って複数のデータエンティティがロードされるか、またはストアされる。システムは、マスクされたロード動作またはマスクされたストア演算を行う際、システムメモリと１つまたは複数のレジスタファイルの間で直接にデータエンティティを転送することを特徴とする。
【００２１】
以下、詳細な実施を可能にすることにおいて教示する本発明の実施形態では、単一の命令に従って複数のデータエンティティの読取りおよび書込みを行うことができ、実行時に多くのサイクルを節約し、連続的にまたは事前にストアされた位置マスクに従って読取りおよび書込みを行うため、データエンティティを選択できる、コンピュータシステムにおけるロードおよびストア演算のための方法および装置が、初めて提供される。
【００２２】
好ましい実施形態の説明
以上に概略で説明したように、コンピュータ演算の技術分野において、いくつかの異なる命令セットアーキテクチャ（ＩＳＡ）が存在する。命令セットアーキテクチャは、一般的に言って、ＣＰＵが命令として解釈する２進ワードにおけるビットおよびビットのセットの配列である。よく知られているＭＩＰＳ  ＩＳＡは、好ましい実施形態で本発明を実施する際に本発明者によって使用されたアーキテクチャであるが、本発明は、もちろん、ＭＩＰＳ  ＩＳＡに限定されない。この理由で、ＭＩＰＳアーキテクチャで知られる命令語の部分の特定の使用は、本明細書では詳細に説明しない。ＭＩＰＳアーキテクチャが、新しい命令を実施するのに使用できる未使用の演算コードを提供することは、よく知られており、本発明者は、ＭＩＰＳの好ましい実施形態では、この特徴を利用している。
【００２３】
本発明は、おそらく、あらゆるＩＳＡに適用されるので、本発明者は、以下のように新規で明白でない機能を導入する命令を特定して説明する。
【００２４】
Ｉｎｓｔｒｕｃｔｉｏｎ  Ａ，Ｂ，Ｃ
ただし、Ａ、Ｂ、Ｃは、命令を実行する際に行われる機能に関するパラメータを定義する引数である。
【００２５】
図１Ａは、ＣＰＵがデータを取り出すことができるキャッシュメモリまたはシステムメモリなどの任意のメモリであることが可能なメモリ１１、およびレジスタファイル１５を示す概略図である。メモリ１１は、好ましい実施形態では３２ビットのワード幅を有し、またレジスタファイル１５も同様に、レジスタ幅を有する。ワード幅およびレジスタ幅は、好ましくは同じであるが、本発明の別の実施形態では異なる可能性がある。
【００２６】
図１のメモリおよびレジスタファイルの図の下に、本発明の実施形態によるストリームロード命令のための論理構造が存在する。命令構造の中には、命令演算コード（ストリームロードのための）、および第１の引数＠、第２の引数「第１のレジスタ」、および第３の引数「Ｎ」の３つの引数が存在する。図を参照すると、ＣＰＵは、この命令を実行するとき、命令演算コードから、演算の順序がどのようであるかを知り、メモリ１１からワードを取り、ワードをレジスタファイル１５に書き込む。引数は、パラメータを提供する。
【００２７】
示した例では、ＣＰＵは、図１Ａで斜線部分のワード１３として示すメモリ１１のアドレス＠から開始して、Ｎ個の連続するワードを読み取り、これらＮ個のワードを同じ順序で、レジスタファイルでワード１７のブロックを提供するレジスタの「第１のレジスタ」から開始してレジスタファイル１５に書き込む。
【００２８】
本発明の代替の実施形態では、メモリのワード幅が、レジスタファイルのレジスタの幅と異なる可能性があるため、メモリから選択されたワードは、複数のレジスタに影響を与える、または１つのレジスタを満たさない可能性がある。メモリワードが、例えば、レジスタ幅の２倍である場合、１つのメモリワードは、２つの連続するレジスタを満たすことになり、ある選択された数のメモリワードは、その２倍の数のレジスタを満たすことになる。他方、メモリワードが、レジスタ幅の１／２である場合、単一のレジスタを満たすのに２つのメモリワードが必要とされることになる。
【００２９】
図１Ｂは、図１Ａと同様の概略図であるが、対の他方のストリームストア命令を描いており、ＣＰＵが、命令を実行して、レジスタの「第１のレジスタ」から開始してレジスタファイル１５からＮ個の連続するワード（ワード１７）を読み取り、これらＮ個のワードを同じ順序で、引数で定義されるアドレス＠から開始してワード１３を提供するメモリ１１に書き込む。
【００３０】
本明細書で定義する新しい命令は、いくつかの実例で重要な用例を有し、その１つが、ネットワークのパケット経路指定におけるパケットの処理にマルチストリーミングプロセッサを適用することにある。ただし、これらの命令には、広い範囲の適用において実質的にあらゆる種類のプロセッサを使用する、他の多数の使用法がある。
【００３１】
パケット処理では、多数のパケットが、同一の構造を有し、パケットがルータに運び込まれ、メモリ１１などのメモリにストアされると、ある規則に従って処理されるよう、レジスタファイルにあるヘッダフィールドをロードする必要がある。構造は分かっているので、ヘッダを含むバイトをメモリに連続的に記憶することができ、処理のためにパケットに関するすべての必要なデータをレジスタファイルにロードし、処理の後にレジスタをストアするように新しいストリームロード命令および新しいストリームストア命令の引数を構造化することができる。もちろん、ストアするのは、ロードで使用するレジスタと同じレジスタであることも、異なるレジスタであることも可能である。同様に、多数の実例でコンピュータの演算を向上させる、ストリームロードおよびストリームストアに関する他の多数の可能な適用例が存在する。
【００３２】
本発明の代替の実施形態では、メモリでも、レジスタファイルでもワードが連続するという制限のない、複数のワードをロードし、ストアする新しいコマンドを構造化することにより、本発明の機能性を相当に強化することができると本発明者は判断した。新しいコマンドを、それぞれ、マスクされたロードおよびマスクされたストアと命名する。
【００３３】
図２Ａは、マスクされたロードの例を示すメモリ１１およびレジスタファイル１５の概略図である。本例におけるメモリ１１は、１バイト幅であり、メモリ１１で０から７まで任意に番号を付けた８個のメモリワードを示している。各ワードは、当技術分野で知られるとおり、メモリアドレスを有する。本例におけるレジスタファイル１５は、４バイト幅であり、左側で０から７まで任意に番号を付けたレジスタに構成して、示されている。図の下には、３つの引数を有するマスクされたロード命令の構成例がある。第１の引数は、メモリ１１のアドレスであり、第２の引数は、レジスタファイルの第１のレジスタであり、また第３の引数は、この場合、マスク番号である。
【００３４】
図２Ｂは、２つの列を有するマスク例を示し、左側の列は、示すとおり、メモリバイト番号を表し、右側の列は、相対レジスタ番号を表している。これは、図２Ａのマスクされたロード例に関するマスクである。メモリバイト番号０、３、５、７を左側の列にリストし、相対レジスタ番号０、０、２、３を右側の列にリストしていることに留意されたい。マスクは、どのメモリバイトを読み取り、それらのバイトをレジスタファイルのどこに書き込むかをマスクされたロード命令に知らせる。
【００３５】
図２Ａを再び参照すると、相対メモリバイト０、３、５、７に斜線が入っている（それぞれ別の仕方で）ことに留意されたい。マスクされたロード命令のアドレス（＠）引数は、メモリのどこにマスクを配置するかをＣＰＵに知らせ、マスクは、開始アドレスとの関係で読み取るバイトを選択する。レジスタファイルは、４バイト幅であるので、メモリから４バイトをレジスタファイルの単一のレジスタに並べて書き込むことができる。本例では、デフォルトでは、選択されたバイトは、各レジスタの最下位バイトから開始してレジスタファイルに書き込まれ、最下位バイトは、デフォルトでは、本例の右端のバイトである。
【００３６】
マスクは、相対メモリバイト番号０が、相対レジスタ番号０に行くことを示している。これは、命令の第２の引数によって示される第１のレジスタである。したがって、メモリバイト０は、レジスタファイルの相対レジスタ０の最下位バイトに書き込まれるものとして示している。次にマスクは、相対メモリバイト３もレジスタファイルの相対レジスタ０に書き込まれることを示している。これは、相対レジスタ０に行く第２のバイトであり、レジスタファイルの示されたレジスタの最下位から２番目のバイトに書き込まれる。メモリバイト５は、相対レジスタ２に書き込まれ、レジスタ２に行く唯一のバイトであるため、最下位の位置に行く。相対メモリバイト７は、マスクに従って相対レジスタ３に行き、このことも図２Ａで示している。斜交平行線は、メモリからレジスタファイルへのデータの移動を共通に示す。
【００３７】
本例では、デフォルトで、次のエンティティが別のレジスタに書き込まれるようになるまで、メモリから選択されたデータエンティティは、最下位バイトから開始してレジスタに書き込まれる。これは、レジスタにおける選択されたバイトの配置の一例に過ぎない。その他の任意の配置も、マスクによって示されることが可能であり、示した簡単なマスクは、レジスタにおけるバイトの配置を示すより多くの列を有することも可能であった。多くのマスク実施およびデフォルトが、本発明の趣旨および範囲で可能である。
【００３８】
ストリームロードおよびストリームストア演算のケースで前述したのと同様に、マスクされたロード演算も、マッチするマスクされたストア命令を有する。ストアの場合、命令アーキテクチャにおいて、選択されたビットが、ロード演算ではなくストアを示し、引数は、マスクされたロードと同じ構造を有する。
【００３９】
当分野の技術者には、本発明の様々な実施形態で、マスクは、任意の数であることが可能であり、ロードされるバイトの数および位置を定義する各マスクの長さも、異なる実施形態で様々でありうることが明白であろう。本発明の一実施形態では、先に簡単に説明した、経路指定装置においてデータパケットを処理する状況では有用である。この特定のケースでは、経路指定のためにデータパケットを処理する際、マスクを実施して、例えば、パケットのあるヘッダなどのメモリからのデータエンティティのあるパターンを捕捉することができる。
【００４０】
また、本発明のいくつかの実施形態では、マスクされたロードおよびマスクされたストア命令が、動的マルチストリーミングプロセッサを使用するパケット処理のために使用されるスレッド（ソフトウェア）で使用される。これらのプロセッサは、複数の物理的ストリームを有し、各ストリームは、別個のスレッドをサポートすることができ、また各ストリームは、通常、専用のレジスタファイルを有する。この場合、マスクセットを記憶して、個々のストリームに専用とする、あるいは２つ以上のまたはすべてのストリームによって共用することが可能である。そのような動的マルチストリーミング（ＤＭＳ）プロセッサを前述の「関連出願の相互参照」でリストした優先権出願で詳細に説明している。
【００４１】
好ましい実施形態では、マスクは、プログラミング可能であり、したがって、必要に応じてマスクセットを交換または変更することができる。マスクは、様々な方法で記憶することができる。マスクは、例えば、システムメモリに記憶して、システムからアクセス可能にすること、またはプロセッサ上にある、またはない隠れたレジスタの中に、またはプログラマブルＲＯＭ装置の中に記憶してアクセス可能にすることが可能である。いくつかの実施形態では、マスクをリンクして、より大きいマスクを作成し、再プログラミングすることなしにマスクを変更できるようにする機構が提供される。本発明の一実施形態では、３２個のマスクが提供され、最大で８個のマスクをリンクすることができる。いくつかのケースでは、命令が、マスキングに必要なビットを受け容れるのに十分な幅を持つ場合、マスクを命令自体の中に記憶することができる。命令の幅が、例えば、６４ビットである場合、３２ビットだけが命令自体に必要であり、その他の３２ビットをマスクベクトルにすることができる。
【００４２】
プログラミングの可能性について、マスクは、様々な方法でプログラミング、そして／または変更することができる。プログラミングは、人間の介入を必要とするという意味で、手作業で、またはマスクを使用する処理システムの動的処置によって変更可能である。処理システムの動的処置による場合、ＤＭＳプロセッサへの適用において、あるソフトウェア負担が存在する可能性がある、というのは、１つのストリームが、マスクまたは１組のマスクをロードまたはストア演算で使用している場合、他のストリームが、そのマスクまたはマスクセットを更新しないことを保証しなければならないからである。したがって、ＤＭＳプロセッサのケースでは、マスクをストリームの専用にすることが好ましい。ｋ個のストリームを有するようなプロセッサシステムでは、ｋ個のストリームのそれぞれに専用のマスクまたは一組のマスクが存在して、特定のストリームは、自らのマスクまたは自らのマスクセットだけを使用でき、更新できる。
【００４３】
以上の説明では、マスクされたロードまたはマスクされたストア演算に関して、メモリ源およびデータエンティティの宛先の特別の区別は行わなかった。ただし、当技術分野では、最新技術のプロセッサが、システムメモリだけを使用して直接に動作するのではなく、通常、キャッシュメモリを使用して動作することがよく知られている。キャッシュメモリおよびキャッシュ動作は、当技術分野ではよく知られており、本明細書で詳細に説明する必要はない。
【００４４】
本発明により、ＤＭＳプロセッサとともに使用されるマスクされたロードおよびマスクされたストア演算の一実施形態では、マスクされたロード／ストアは、メモリアクセスがキャッシュ可能な空間に属する場合でさえ、キャッシュをバイパスする（すなわち、要求されたデータがキャッシュに存在するかどうかを問い合わせることなしに、アクセスが、直接メモリに行く）選択をすることが可能である。この場合、データの整合性を保証するのはソフトウェアである。データキャッシュをバイパスする場合、データキャッシュに対する読取り／書込みポートは、他のストリームによる通常のロード／ストアで行われる他のアクセスのために解放される。キャッシュへのポートはコストがかかる。
【００４５】
本発明の好ましい実施形態では、マスク（または、いくつかのケースでは、マスクの部分）が、２つのベクトルとして実施され、各ベクトルは、３２ビットのワードとして書き込まれ、記憶される。図３Ａは、ベクトル−マスクを示す図であり、図３Ｂは、図３Ａのベクトル−マスクに従ってバイトがメモリ１７からファイル１９に転送される、メモリ１７およびレジスタファイル（コンテキストレジスタ）１９を示す図である。
【００４６】
次に図３Ａを参照すると、各サブマスクに、選択ベクトルおよびレジスタベクトルの２つのベクトルが存在する。図３Ａに示すようにサブマスクは、完全なマスクであることが可能であり、完全なマスクは、最大で８個の（この実施形態では）サブマスクから構成される。これを以下により詳細に説明する。
【００４７】
次に図３Ａのサブマスク０を参照すると、選択ベクトルのビット０、１、７、１２、１３に１が存在する。１は、選択ベクトルのどの位置でも、メモリからレジスタファイルに転送されるべき相対ビットを選択するためのものである。その他のビットは、ゼロである。もちろん、その逆を真にすることも可能である。
【００４８】
次に図３Ｂを参照すると、メモリ１７が、３２バイト幅として構成されている。本例では、用途は、パケット処理であり、操作されるデータエンティティは、パケットのためのヘッダフィールドからのバイトである。前述のとおり、データエンティティを選択するための開始位置が、第１の引数＠（アドレスに関しては、図２Ａを参照）としてマスクされたロード命令において与えられている。第３の引数は、マスタ番号を提供し、マスク番号は、このケースでは、図３Ａの２ベクトルサブマスクである。メモリ１７に記憶され、図３Ａのサブマスク０によって転送されるべきものとして示されるパケットヘッダに関係するバイトを、それぞれ異なる斜線を入れて、斜線部分として図３Ｂのメモリ１７に示している。３２バイトのパケットヘッダからの任意の組合せのバイトまたはすべてのバイトをレジスタファイルに転送するために選択することができる。
【００４９】
サブマスク０のレジスタベクトルは、選択されたバイトを書き込むレジスタファイルにおける相対位置を示す。この特定の例では、レジスタベクトルの１つの位置だけに１が存在する、つまり位置１２だけに１が存在することに留意されたい。レジスタベクトルの１の意義は、レジスタファイルにバイトを記憶すべきレジスタにインデックスを付けることである。他の例では、レジスタベクトルに複数の１が存在することが可能である。
【００５０】
次に図３Ｂを参照すると、第１のレジスタ（ＦＲ）から開始してレジスタファイルにバイトが記憶される。記憶のための第１のレジスタ（ローディング開始レジスタ）は、マスクされたロード命令の第２の引数である。他の適用および他の実施では、様々な理由で様々なデフォルトが存在することが可能である。本例におけるマスクされたロード命令は、メモリ１７から第１のレジスタでレジスタファイル１９に選択されたバイトのローディングを開始し、デフォルトは、最下位の位置から隣接する位置に順に、レジスタベクトルによってレジスタにインデックスが付けられるまでロードすることである。別の実施形態では、別の順序を使用することも可能である。したがって、バイト０、１、７が右（最下位）から第１のレジスタにロードされる。図３Ａのレジスタベクトルの位置１２における１が、レジスタにインデックスを付けており、したがって、バイト１２および１３が、レジスタＦＲ＋１の最初の２つの位置にロードされる。メモリ１７から選択されているバイトは他に存在しないので、動作は、これで終了である。
【００５１】
本明細書で前述し、例示するとおり、サブマスク０は、完全なマスクである。ただし、好ましい実施形態では、最大で８個のサブマスクを組み合せてマスクを構成することができる。本実施形態における各サブマスクは、図３Ｂに示すとおり、マスク終了ビットを有する。マスク終了ビットの１は、サブマスクが、特定の命令にマスクを形成するように組み合わされる最後のサブマスクであることを示す。
【００５２】
以上に説明したベクトルマスクの例は、一例に過ぎないことを強調しておく。本発明の趣旨および範囲の中で他の多くのマスキングスキームが可能である。例えば、第１のアドレスで開始して選択されるように示される第１のデータエンティティが、第１のレジスタにコピーされ、選択されるデータエンティティ間の１つまたは複数のゼロが、レジスタファイルに後続のエンティティが配置されるレジスタのインデックスを示すように、選択および配置が、単一のベクトルによって示されることが可能である。多くのこのようなスキームが可能であり、比較的少数を本明細書で例により示している。
【００５３】
当分野の技術者には、ストリームロード命令およびストリームストア命令のケースで前述したのと同様に、マスクされたストアも、詳細に説明したマスクされたロード命令とほぼ同じように実施できることが明白であろう。
【００５４】
本例のストア演算では、データエンティティが書き込まれないレジスタファイルのバイトが存在することに留意されたい。これらのバイトを残すか、または消去するかの選択が存在する。好ましい実施形態では、未使用のバイトは消去される。
【００５５】
当分野の技術者には、本発明の趣旨および範囲を逸脱することなく、前述した本発明の実施形態において行うのが可能な多くの変形が存在することが明白であろう。例えば、マスクを構造化し、実施することができる多種多様なやり方が存在し、また、マスクを記憶し、プログラミングし、交換し、変更することができる多種多様なやり方が存在する。同様に、使用する命令セットアーキテクチャに応じて、マスクされたロードおよびマスクストア命令を定義し、実施することができる様々なやり方が存在する。同様に、本明細書で例として使用したパケット処理の適用例を超えて、このような独自の命令に多数の適用例が存在し、新しい命令は、本発明者が特に関心を持つ動的マルチストリーミング（ＤＭＳ）プロセッサを含め、多くの種類のプロセッサで役立つ可能性がある。
【００５６】
ＤＭＳプロセッサについては、本出願は、ＤＭＳプロセッサの態様、および機能を教示する４つのケースに関連し、該４件すべてを前述の「相互参照」のセクションでリストしており、該４件すべてが、参照により本件に組み込まれる。以上に教示するようにストリームおよびマスクされたロード／ストア命令の使用は、ＤＳＭプロセッサにおいて特に興味を引くものである、というのは、機能ユニットの中でマスクされたロード／ストア命令が実行されている間、スレッドで、新しい命令を実行するストリームは、非活動状態に留まることができるからである。したがって、他のストリームが、プロセッサの残りのリソースを使用することができる。ただし、新しい命令を実行するストリームは、マスクされたロード／ストアが完了するまで、アイドル状態にある必要はない。命令が、実行中のマスクされたロード／ストア命令によって影響されるレジスタの値に依存しない限り、ストリームは続行して、さらなる命令を実行することができる。言い換えれば、ストリームは、順序によらず、命令を実行することが可能である。
【００５７】
以上に加えて、本発明の様々な実施形態において、細分性の幅広い選択が存在する。使用した例では、バイトを選択したが、他の実施形態では、細分性は、メモリのビットであっても、ワードであっても、またはブロックであってもよい。ワードを使用するケースでは、レジスタがワード幅と同じ幅である場合、レジスタベクトルは必要ない。さらに、ストリームロードおよびストア演算は、単に、マスクされたロードおよびストア演算の特定のケースであることに留意されたい。
【００５８】
本発明の用途が広く、また範囲も広いが、本発明は、頭記の特許請求の範囲によってのみ制限されるべきである。
【図面の簡単な説明】
【図１Ａ】  本発明の実施形態によるストリームロード演算を示すメモリおよびレジスタファイルの概略図である。
【図１Ｂ】  本発明の実施形態によるストリームストア演算を示すメモリおよびレジスタファイルの概略図である。
【図２Ａ】  本発明の実施形態によるマスクされたロード演算を示すメモリおよびレジスタファイルの概略図である。
【図２Ｂ】  本発明の実施形態による例としてのマスクを示す図である。
【図２Ｃ】  本発明の実施形態による１組のマスクを示す図である。
【図３Ａ】  本発明の実施形態によりベクトルとして実施されたサブマスクを含むマスクを示す図である。
【図３Ｂ】  本発明の実施形態によるマスクされた演算におけるメモリおよびレジスタファイルを示す図である。
【図１Ａ】
0003721129.tif 000002
【図１Ｂ】
0003721129.tif 000003
【図２Ａ】
0003721129.tif 000004
【図２Ｂ】
0003721129.tif 000005
【図２Ｃ】
0003721129.tif 000006
【図３Ａ】
0003721129.tif 000007
【図３Ｂ】
0003721129.tif 000008