(57)【要約】【課題】  画像のブロックの効率的な比較を可能にする並列サブワード比較命令ならびに関連する演算を提供する。【解決手段】  本発明は、命令の結果用の結果レジスタサブワード位置を選択できる並列サブワード（例えば比較）命令（またはこのような命令の組）を提供する。この新規な命令により、従来技術の複数の並列サブワード命令の結果を結合することを可能にする専用化された「シフト」命令は不要になる。したがって、プログラミングが簡単になり、性能が向上する。また、本発明は、この新規な命令を利用するプログラム、および、この新規な命令を実行するデータプロセッサも提供する。【選択図】図１
2004303204.tif 000002
【特許請求の範囲】
【請求項１】
データプロセッサ（１００）であって、
結果レジスタを含む複数のレジスタ（ＲＧＳ）と、
命令デコーダ（ＤＥＣ）と、
実行ユニット（ＥＸＵ）と
を備え、
前記命令デコーダは、関連した特徴的な演算の結果を前記結果レジスタ内の複数の結果レジスタサブワード位置のうちの選択されたいずれか１つに記憶することを一括して可能にする１つまたは２つ以上の並列サブワード命令のサブセットを含む命令セット（ＩＮＳ）の命令（１１２）をデコードし、前記実行ユニットは、該命令（１１２）を実行する
データプロセッサ。
【請求項２】
前記サブセットは、
選択可能な前記複数の位置に対応する複数の命令
を含み、
該命令のそれぞれは、前記関連した演算の結果を、対応する前記選択可能な位置に記憶する
請求項１に記載のデータプロセッサ。
【請求項３】
前記複数の命令のそれぞれは、前記結果レジスタの選択されていない位置内のビット位置と、前記選択された位置内のビット位置とを上書きする
請求項２に記載のデータプロセッサ。
【請求項４】
前記複数の命令のそれぞれは、前記結果レジスタの選択されていない位置内のビット位置は元のまま放置するが、前記選択された位置内のビット位置は元のまま放置しない
請求項２に記載のデータプロセッサ。
【請求項５】
前記サブセットは、
前記選択可能な位置のそれぞれに記憶される前記結果の複数の複製を生成する特徴的な命令
を含む
請求項２に記載のデータプロセッサ。
【請求項６】
前記サブセットは、
前記結果を、命令が連続的に繰り返される回数に依存する位置に記憶する該命令
を含む
請求項１に記載のデータプロセッサ。
【請求項７】
前記選択可能な位置の少なくとも１対は、重なり合う
請求項１に記載のデータプロセッサ。
【請求項８】
前記選択可能な位置は、相互に相容れない
請求項１に記載のデータプロセッサ。
【請求項９】
コンピュータ可読媒体（１１０）であって、
関連した特徴的な演算の結果を複数の結果レジスタサブワード位置のうちの選択されたいずれか１つに記憶することを一括して可能にする並列サブワード命令を含む命令からなるプログラム（１１２）
を含むコンピュータ可読媒体。
【請求項１０】
前記サブセットは、
選択可能な前記複数の位置に対応する複数の命令
を含み、
該命令のそれぞれは、前記関連した演算の結果を、対応する前記選択可能な位置に記憶する
請求項９に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理に関し、特に、データプロセッサが実行できる命令に関する。
本発明の主目的は、マルチメディアアプリケーションに共通の一定の状況において、プロセッサの性能を改善する並列サブワード比較命令を提供することである。
【背景技術】
【０００２】
現代の進歩の多くは、コンピュータ技術の進展に関係している。
通常のコンピュータは、命令からなるプログラムに従ってデータに演算を実行する１つまたは２つ以上のプロセッサを含む。
各マイクロプロセッサには、命令セット、すなわち、マイクロプロセッサが実行できる一組の命令が関係している。
特定のアプリケーションの状況におけるプロセッサの性能は、そのアプリケーションが要求するタスクを、そのプロセッサの命令セットを使用して、どれだけ効率的に記述できるかに大きく依存する。
【０００３】
コンピュータは、より強力になるにつれて、例えば実時間のビデオ操作といったますます要求の厳しいアプリケーションに直面してきた。
ビデオは、通常、同期した画像ストリームとして表される。
各画像は、画像要素（画素）からなる２次元アレイとして描写することができる。
各画素は、通常、１つの色次元あたり１つのマルチビット（例えば８ビット）色値によって描写される。
多くのアプリケーション、例えばビデオ圧縮は、画素をブロック（例えば８×８の画素ブロック）にグループ化する。
【０００４】
一般の２値画像演算（例えば同じ画像または異なる画像のブロック間の比較）は、同時に処理するように、２×６４×８ビット（２つのブロック、１ブロックあたり６４画素、１画素あたり８ビット）のオペランドデータを必要とすることがある。
ますます普及している６４ビットプロセッサを使用すると、２値画像ブロックの比較は、オペランド用に８対の６４ビットレジスタを使用し、中間結果および最終結果の記憶用に付加的なレジスタを使用して実施することができる。
【０００５】
全部で、６４回の比較が必要となる。
各比較の結果は、１ビットの情報にされる。
全体で６４回の比較の結果は、単一の６４ビットワードとすることができ、これは、単一の結果レジスタに記憶することができる。
これらの６４回の比較をどれだけ効率的に行うことができるかは、マイクロプロセッサに付随した命令セットに依存する。
ワード比較命令を使用すると、８ビットデータを有し一定値を書き加えたオペランドを作成しなければならない。
次いで、ワードが比較される。
次いで、１ビット値が、結果レジスタの適切なビット位置に記憶される。
以後の結果は、これまでの結果を消去しないように、結果レジスタの適切な位置に記憶しなければならない。
したがって、ワード比較命令を使用すると、画像ブロックの比較を完了するのに、６４個の比較命令および多くの他の命令が必要となる。
【０００６】
プロセッサの中には、並列サブワード比較命令を提供するものがある。
一対の６４ビットレジスタに適用するように、それらのレジスタに記憶された８対の８ビットサブワードを並列に比較して、８ビットの結果を生成することができる。
この結果は、例えば、結果レジスタの下位８ビット位置に記憶することができる。
この結果を上位のビット位置にシフトして、他の対のレジスタに対して行われる並列サブワード比較演算の結果用の場所を作ることができる。
画像ブロックの比較を完了するには、８個のサブワード命令、７個のシフト命令、および７個の（結果を結合する）ＯＲ命令が必要となり、合計で２２個の命令が必要となる。
【０００７】
命令の総数は、並列サブワード比較命令の特定の実施に依存する。
例えば、IntelのＩｔａｎｉｕｍプロセッサで使用される別の並列サブワード比較命令は、各サブワード比較結果の８個の複製を、結果レジスタの対応するサブワード位置に記憶することができる。
この場合、８個の並列サブワード比較命令の結果を単一の結果として配置するのに、さらに多くの補助命令が必要となる。
したがって、画像ブロックの比較に必要な命令の総数は、最初の例の場合に提供されるものの２倍よりも多くなる可能性がある。
【０００８】
いずれにしても、画像ブロックの比較を実施するのに必要な命令数は、所望のものよりも多い。
命令を逐次的に実行すると、極めて多くの時間が費やされる。
命令を並列に実行すると、プロセッサが、画像ブロックの比較演算と並行して他の演算を実行する能力が制限される。
【０００９】
もちろん、１６レジスタ並列サブワード比較命令が利用可能であるならば、画像ブロックの比較を１命令で実行することができる。
しかしながら、このような命令は、ハードウェアの観点からは、実施が複雑なものとなり、おそらく、ソフトウェアの観点からは、特殊すぎるものとなる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
画像のブロックの比較をより効率的に行うことを可能にする並列サブワード比較命令、ならびに関連する演算が必要とされている。
【課題を解決するための手段】
【００１１】
本発明は、命令の結果用の結果レジスタサブワード位置を選択できる並列サブワード（例えば比較）命令（またはこのような命令の組）を提供する。
この新規な命令により、従来技術の複数の並列サブワード命令の結果を結合することを可能にする専用化された「シフト」命令は不要になる。
したがって、プログラミングが簡単になり、性能が向上する。
また、本発明は、この新規な命令を利用するプログラム、および、この新規な命令を実行するデータプロセッサも提供する。
【００１２】
「目標位置設定（targeting）」手法、「複製（replicating）」手法、および「シフト（shifting）」手法が、レジスタ内の位置を選択するために提供される。
目標位置設定手法では、命令が、レジスタ内の位置を（直接的または間接的に）識別し、その位置に、命令の結果が記憶される。
単一の命令が、結果の位置を指定する１つのフィールドを含むことができる。
あるいは、位置ごとに別々の命令を設けることができる。
複製手法では、命令が、すべての位置に結果の複製を記憶するので、選択された位置には、必然的に、複製が記憶される。
シフト手法では、命令は、命令の結果を記憶する前に、結果レジスタの内容をシフトする。
したがって、このシフト並列サブワード命令を繰り返すことにより、必要に応じて、選択された位置に結果を移動させることができる。
シフト命令を使用するのではなく、並列サブワード命令を繰り返すことにより、これまでの結果がシフトされるので、次の結果をこれまでの結果と結合することが可能になる。
【００１３】
「上書き」手法および「内容保存」手法が、命令の結果を記憶する必要のないレジスタの位置を処理するために提供される。
上書き手法では、命令は、選択可能な位置のすべてを（例えば、すべてゼロの値で）上書きする。
「内容保存」手法では、選択されていない位置は、当該命令が実行される前のレジスタに存在する情報を維持する。
「シフト」命令は、本来は内容を保存するものである一方、「複製」命令は、一般的に「上書き」するものである。
上書き手法および内容保存手法の双方を、目標位置設定並列サブワード命令のコンテキストで実施することができる。
内容保存手法は、別個の結合命令の必要性を緩和するので、性能を向上させることができる。
他方、内容保存手法は、マイクロプロセッサでは通常実施されない追加のハードウェアを必要とする。
上書き手法は、標準的な２ポート読み出し機能のみを必要とする。
【００１４】
「重なり合う」レジスタ内位置および「別個の」レジスタ内位置が、上記すべての手法に対して提供される。
通常、並列サブワード命令の連続した繰り返しによって、前の結果が、上書き（命令が同じレジスタに書き込む場合）もされず、マスク（その後のビットごとの結合のために、命令が、異なるレジスタに書き込む場合）もされないように、別個の（重なり合わない）レジスタ内位置が望まれる。
位置が重なり合う場合、結果は、容易に上書きされるか、または、マスクされる。
これは、暗号方式において役立つことがある。
適切な暗号鍵にアクセスできる加入者は、上書きされた情報を組み換え（recombination）用に別々に供給することができる。
このような暗号方式は、ビデオコンテンツを公衆のチャネル（例えばインターネット）により配布することを商業的に実現することができる。
【発明の効果】
【００１５】
本発明は、複数の並列サブワード演算の結果を結合するのに必要な命令数を大幅に削減する。
本発明は、さらに、この削減の大きさとハードウェアの複雑さとのトレードオフにおける設計の柔軟性を提供する。
一般的に、本発明は、特にマルチメディアアプリケーションの状況において、プログラミングを簡単にし、スループットを向上させる。
この後者の状況では、本発明は、準備ができている暗号化メカニズムも提供する。
上記に加えた、または、上記に代えた他の利点および特徴は、添付図面を参照して以下の説明から明らかになる。
【発明を実施するための最良の形態】
【００１６】
図１に示すように、コンピュータシステムＡＰ１は、マイクロプロセッサ１００およびメモリ１１０を含む。
メモリ１１０の内容には、プログラムデータ１１１、および、プログラム１１２を構成する命令が含まれる。
マイクロプロセッサ１１０は、実行ユニットＥＸＵ、命令デコーダＤＥＣ、レジスタＲＧＳ、アドレスジェネレータＡＤＧ、およびルータＲＴＥを含む。
【００１７】
一般的に、実行ユニットＥＸＵは、プログラム１１２に従ってデータ１１１に演算を実行する。
このため、実行ユニットＥＸＵは、（内部データバスＤＴＢに付属する制御線を使用して）必要な次の命令またはデータのアドレスをアドレスバスＡＤＲに沿って生成するようにアドレスジェネレータＡＤＧに命令することができる。
メモリ１１０は、要求されたアドレスに記憶された内容をデータ／命令バスＤＩＢに沿って供給することにより応答する。
【００１８】
ルータＲＴＥは、内部データバスＤＴＢに付属する指示子線に沿って実行ユニットＥＸＵから受信した指示子により決定されるように、命令を命令デコーダＤＥＣに命令バスＩＮＢを介して送り、データを内部データバスＤＴＢに沿って送る。
復号された命令は、制御線ＣＣＤを介して実行ユニットＥＸＵに供給される。
データは、通常、命令に従ってレジスタＲＧＳの内外に転送される。
【００１９】
マイクロプロセッサ１００には、命令デコーダＤＥＣが復号でき、かつ、実行ユニットＥＸＵが実行できる複数の命令からなる命令セットＩＮＳが関連する。
プログラム１１２は、命令セットＩＮＳから選択された複数の順序付けられた命令の組である。
説明の目的のため、マイクロプロセッサ１００、その命令セットＩＮＳ、およびプログラム１１２が、以下に説明するすべての命令の例を提供する。
本発明の通常のマイクロプロセッサ、命令セット、およびプログラムは、説明する命令の一部のみを実施する。
【００２０】
目標位置設定／上書き／別個の命令ＰＣｏｍｐＴＯＳ０、ＰＣｏｍｐＴＯＳ１、ＰＣｏｍｐＴＯＳ２、ＰＣｏｍｐＴＯＳ３、ＰＣｏｍｐＴＯＳ４、ＰＣｏｍｐＴＯＳ５、ＰＣｏｍｐＴＯＳ６、およびＰＣｏｍｐＴＯＳ７を次のように構文解析することができる。
すなわち、「（８ビットサブワードを使用して）並列サブワード比較を実行して、その結果を、結果レジスタのｎ番目（ｎ＝０〜７）の８ビットサブワード（バイト）位置に記憶する」と構文解析することができる。
この比較演算の場合、対応するサブワードの内容が等しいときは、「１」が記憶され、そうでないときは、「０」が記憶される。
しかしながら、他のサブワード比較命令では、他の関係、例えば「以上」などに基づいて「１」および「０」の結果を割り当てることができる。
【００２１】
合計で６４バイトのすべての比較演算に対して、プログラム１１２は、８回の並列サブワード比較演算を必要とする。
これらの並列サブワード比較演算の第１のものが、ＰＣｏｍｐＴＯＳ０というインスタンスである。
このＰＣｏｍｐＴＯＳ０は、オペランドレジスタＲＡ０およびＲＢ０の内容に、並列サブワード比較演算を実行して、その比較演算の結果を結果レジスタＲＣ０の最下位の８ビットワード位置に記憶することを指定する（すべてのレジスタは、レジスタＲＧＳのバンクに存在する）。
この並列サブワード比較演算の開始時および終了時を、図２の上部に示す３つのレジスタに示す。
各レジスタを１６進形式で表す値により示す。
オペランドレジスタの３つの下位バイト（８ビットサブワード）は等しいが、それ以外のバイトは等しくない。
したがって、比較結果は、２進数で０００００１１１、すなわち１６進数で０７となる。
この結果は、レジスタＲＣ０の最下位サブワード位置に記憶される。
サブワード位置の残りは、１６進数でＸＸと表される「非データ」０で満たされる。
【００２２】
命令ＰＣｏｍｐＴＯＳ１は、レジスタＲＡ１およびＲＢ１の内容に第２の並列サブワード比較演算を実行し、その結果を結果レジスタＲＣ１の２番目の下位サブワード位置に記憶する。
レジスタＲＡ１およびＲＢ１の内容の比較は、比較結果が２進数で０００１０１１１、すなわち１６進数で１７となることを示す。
したがって、結果レジスタＲＣ１の２番目の下位サブワード位置には、１７が記憶される。
【００２３】
同様に、ＰＣｏｍｐＴＯＳ２が、レジスタＲＡ２およびＲＢ２の内容に適用されて、１６進数の比較結果２７が結果レジスタＲＣ２の３番目の下位サブワード位置に記憶される。
同様に、結果レジスタＲＣ３の４番目の下位サブワード位置には、比較結果３７が記憶され、結果レジスタＲＣ４の５番目の下位サブワード位置には、比較結果４７が記憶され、結果レジスタＲＣ５の６番目の下位サブワード位置には、比較結果５７が記憶され、結果レジスタＲＣ６の７番目の下位サブワード位置には、比較結果６７が記憶され、結果レジスタＲＣ７の８番目の下位サブワード位置（すなわち最上位サブワード位置）には、比較結果７７が記憶される。
【００２４】
結果レジスタＲＣ０、ＲＣ１、…、ＲＣ７の内容をＯＲ演算（または加算）して、レジスタＲＤ０の記憶内容に示すように、並列サブワード比較の最終結果を得ることができる。
一度に加算またはＯＲ演算を２つのレジスタに実行すると仮定すると、これに対応する７個の命令が、８回の並列比較演算に加えて必要となる。
オペランドの比較から開始して最終の単一レジスタの結果で終了するまでの命令の総数は、１５個となる。
【００２５】
結果の位置を指定できるので、背景技術では、すべての対のレジスタにわたって結果を結合するのに必要とされたシフト命令は、必要とされない。
８×８の画素ブロックの比較の場合、これにより、７個のシフト演算が省かれる。
したがって、８×８の画像ブロックの比較を行うのに必要な命令の総数は、２２から１５に削減され、概ね１／３の削減となる。
【００２６】
目標位置設定／内容保存／別個の変形命令は、命令ＰＣｏｍｐＴＰＳ０〜ＰＣｏｍｐＴＰＳ７を使用して実施される。
これらの命令は、結果のビット位置が、結果により決まらない限り、結果のビット位置を変更しないで放置しておくものである（一方、前述の命令セットは、未確定の結果ビットをゼロに設定する）。
したがって、図２で「ＸＸ」とマークしたサブワード位置は、強制的にゼロにされるのではなく、変更されないで放置される。
この場合、すべての結果レジスタを最終結果レジスタＲＤ０に直接書き込むことができる。
一方、追加のハードウェア、例えば３ポート読み出し用の設備が、この内容保存変形命令を可能にするのに必要となる。
したがって、追加のハードウェアコストおよび実行が複雑になるというコストはかかるが、この１レジスタ並列サブワード比較手順は、８個の命令しか消費しない（これに対して、２レジスタの変形命令では１５個、従来技術では２２個を消費する）。
【００２７】
並列サブワード比較命令のこの目標位置設定変形命令では、暗示的または明示的のいずれかで結果の位置を指定しなければならない。
サブワードの位置ごとに異なる命令を使用することにより、結果の位置を暗示的に指定することができる。
結果の位置の指定用として命令に確保されたフィールドに値を入力することによって、結果の位置を明示的に指定することができる。
あるいは、命令は、結果の位置を示す値が記憶された位置を明示的または暗示的に指し示すことができる。
例えば、命令は、結果が記憶されるサブワード位置を示す値を記憶するレジスタを指し示すことができる。
さらに別の方法としては、サブワード位置を、結果が記憶されるレジスタと関連付けるものがある。
例えば、結果がレジスタＲＣ０に記憶される場合には、その結果は、最下位サブワード位置に記憶されるが、結果がレジスタＲＣ１に記憶される場合には、その結果は、２番目の下位サブワード位置に記憶される。
【００２８】
シフト／内容保存／別個の変形命令は、ＰＣｏｍｐＳＰＳ命令を使用して実施される。
このＰＣｏｍｐＳＰＳ命令は、比較結果を記憶する前に、結果レジスタの内容を１サブワード（ここでは１バイト）分、左にシフトする。
したがって、この命令のインスタンスを連続的に使用すると、前の結果は、上書きされるのではなく、「邪魔にならないように」移動される。
図３に示すように、レジスタＲＡ０およびＲＢ０に記憶されたオペランドをＰＣｏｍｐＳＰＳにより比較した結果（０７）は、最初、結果レジスタＲＤ０の最下位バイトに記憶される。
次に、レジスタＲＡ１およびＲＢ１に記憶されたオペランドをＰＣｏｍｐＳＰＳにより比較すると、その結果（１７）もレジスタＲＤ０の最下位バイトに記憶される。
一方、図３に示すように、この結果を記憶する前に、レジスタの内容は、１バイト分、左にシフトされ、それによって、前の結果（０７）は保存される。
図３に示すように、ＰＣｏｍｐＳＰＳの８回の繰り返しにより、レジスタＲＤ０に、所望の８個の比較結果が得られる。
目標位置設定手法の内容保存変形命令と同様に、追加のハードウェア、例えば３ポート読み出し用の設備が、シフト／内容保存／別個の変形命令の利点を得るために必要となる。
【００２９】
複製／上書き／別個の変形命令は、ＰＣｏｍｐＲＯＳ命令を使用して実施される。
このＰＣｏｍｐＲＯＳ命令は、結果を複数個複製して記憶するものである。
図２のデータを使用した場合のＰＣｏｍｐＲＯＳ命令の結果を図４のレジスタＲＣ０〜ＲＣ７に示す。
単一のＰＣｏｍｐＲＯＳ命令の演算を図５に示す。
これらのレジスタのそれぞれは、図２および図３では１つずつ記憶された各結果の８個の複製を記憶することに留意されたい。
【００３０】
これらの結果は、合成演算（mix operation）を使用して結合される。
ＭＩＸ８命令をこれらの結果レジスタに使用すると、レジスタＲＤ０〜ＲＤ３の結果が得られる。
ＭＩＸ１６命令をこれらのレジスタの対に適用すると、レジスタＲＥ０およびＲＥ１に示す結果が得られる。
最後に、ＭＩＸ３２命令を適用すると、レジスタＲＦ０に示す結果が得られ、この結果は、図４のＲＤ０に記憶された結果と同じである。
ＰＣｏｍｐＲＯＳ命令の場合、このような８個の命令に、４個のＭＩＸ８命令、２個のＭＩＸ１６命令、および１個のＭＩＸ３２命令を加えた合計１５個の命令が必要となる。
これは、ＰＣｏｍｐＴＯＳＮ命令の使用に必要な命令数と同数であり、固定したサブワード位置に単一の複製が結果的に記憶される命令を使用したものよりも７個少ない。
【００３１】
２個の連続する比較（または他の特徴を有する）命令が、同じタイプの命令である場合について検討しているが、本発明は、同じタイプの命令であることを必要としない。
例えば、シフトを行うタイプの命令は、シフトを行わない命令の後に続くことができる。
また、複製命令は、複製を行わない命令の前に来ることもできるし、後に続くこともできる。
さらに、２個の命令が必要とする演算は、同じである必要はない。
例えば、一方は２値比較であり、他方は「ゼロ比較（equals zero）」命令であってもよい。
【００３２】
このように、本発明は、並列サブワード比較命令に必要な命令数を大幅に削減できるさまざまなタイプの命令を提供する。
例示した実施の形態は、結果の位置を指定するものおよび結果を複数個複製するものの双方を提供しているが、本発明は、これら２つのタイプの一方を含むが他方を含まない命令セットも提供する。
【００３３】
例示の実施の形態では、レジスタは６４ビットであり、サブワードは８ビットであるので、１つのレジスタあたり８つの相互に相容れないサブワード位置が存在する。
レジスタサイズおよびサブワードサイズのこの選択により、結果は、１サブワード長となる。
より長いサブワード、例えば１６ビットを使用すると、１つの６４ビットレジスタあたり４つの１６ビットサブワードだけが存在し、したがって、１つの結果につき４ビットが存在する。
このように、レジスタには、１６個の相互に相容れない４ビットの結果の位置が存在することができる。
並列サブワード比較演算に対してこれらのいずれの選択も可能にするように、命令セットを設計することができる。
したがって、このような命令の１つのフォーマットは、ＰＣｏｍｐ（第１のオペランドレジスタ、第２のオペランドレジスタ、結果レジスタ、サブワードサイズ、結果レジスタにおける結果の目標位置）とすることができる。
【００３４】
また、目標位置設定／シフト命令または複製命令は、例えば、サブワードサイズ、ピッチ、およびオフセットといった一定の変数を暗示的または明示的に指定することもできる。
例えば、サブワードサイズを指定することができる。
加えて、結果の間隔を指定することができる。
この間隔は、デフォルトでは、図５に示すように、位置が互いに対して隣接するようになっている。
しかしながら、複製は、図６に示すように、１ビットまたは２ビット以上離れるように、より長いピッチで表すことができる。
図６では、ピッチが、複製の長さの２倍となっている。
【００３５】
ピッチが、サブワードサイズの整数倍（好ましくは２の累乗）となるように選択し、かつ、オフセットをさまざまなサブワード単位数で変えることにより、合成演算を使用することなく、単一のレジスタ内に複数のサブワード比較演算を表すことができる。
例えば、ピッチを１６ビットに設定し、オフセットを０から８ビットに変えることにより、未確定のビットを変更せずに放置することを条件に、２つの結果を同じレジスタに書き込むことが可能になる。
これにより、結果を結合する際のＭｉｘ８命令が不要となる。
したがって、並列レジスタ並列サブワード比較手順に必要な命令の総数は、１５に代わって１１となる。
【００３６】
ピッチを３２ビットに設定し、オフセットをサブワード単位で変えると、Ｍｉｘ８命令およびＭｉｘ１６命令が必要なくなる。
その場合、８個の並列比較および１個のＭｉｘ３２命令の合計９個の命令が必要とされる。
最後に、ピッチがレジスタ長（６４ビット）に等しい場合には、この状況は、上述したＰＣｏｍｐＴＰＳＮ命令に対応し、この場合、所望の結果を達成するのに、８個の並列サブワード比較命令だけが必要とされる。
【００３７】
あるいは、位置のピッチを、結果を表すのに必要なビット数よりも少なくすることができる。
図７では、ピッチは、結果の複製の長さの半分である。
したがって、いくつかのビット位置には、２ビット以上が記憶されることになる。
これは可能ではないので、ある種の解決策を組み込まなければならない。
値の１つを優先させることもできるし、値についてある２項関数を使用して、ビット位置に記憶するものを決定することもできる。
図７では、衝突するビットにＸＯＲ演算を行って、記憶結果を得ている。
暗号のアプリケーションの場合、ＯＲ演算ではなく、ＸＯＲ演算により、比較結果を結合することができる。
失われる情報は、より少なくなる。
また、その結果すなわちＸＯＲ演算は、暗号方式の一般的な目標である白色雑音として見える可能性がより高くなる。
上書きされた情報は、データを適切に再組み立てするのに必要なユーザ復号鍵により再供給することができる。
【００３８】
本発明は、比較演算だけでなく、単項演算、２項演算、およびより高次の演算を含む他の演算にも適用される。
レジスタ長は、変えることができ、２の累乗である必要はない。
サブワード長は、変えることができ、２の累乗である必要はない。
結果の複製の個数は、１つ、２つ、一定数、またはレジスタを満たすのに必要などのような個数にもすることができる。
レジスタが、複製の長さと等しくない場合、レジスタの下位ビットは、結果の下位ビットを保持する必要はない。
演算結果により決まらない結果レジスタのビットは、変更せずに放置することもできるし、ゼロまたは１のいずれかに設定することもできる。
例示した実施の形態に対するこれらの変更および他の変更、ならびに、例示した実施の形態の変形は、本発明によって提供される。
本発明の範囲は、添付の特許請求の範囲によってのみ限定される。
【図面の簡単な説明】
【００３９】
【図１】本発明による命令セットを有するマイクロプロセッサを含むコンピュータシステムの概略図である。
【図２】本発明による、プログラムが目標位置設定／上書き／別個の並列サブワード比較命令の実行を含むプログラムの概略図である。
【図３】本発明による、シフト／内容保存／別個の並列サブワード比較命令の実行を含むプログラムの概略図である。
【図４】本発明による、複製／上書き／別個の並列サブワード比較命令の結果の合成を含むプログラムの概略図である。
【図５】結果の複製のピッチが結果の複製の長さと等しい、本発明による複製／上書き／別個の並列サブワード比較命令の実行を含むプログラムの概略図である。
【図６】結果の複製のピッチが結果の複製の長さを越える、本発明による複製／上書き／別個の並列サブワード比較命令の実行を含むプログラムの概略図である。
【図７】結果の複製のピッチが結果の複製の長さよりも小さい、本発明による複製／上書き／別個の並列サブワード比較命令の実行を含むプログラムの概略図である。
【符号の説明】
【００４０】
１００・・・マイクロプロセッサ、
１１０・・・メモリ、
１１１・・・プログラムデータ、
１１２・・・プログラム命令、
【図１】
2004303204.tif 000003
【図２】
2004303204.tif 000004
【図３】
2004303204.tif 000005
【図４】
2004303204.tif 000006
【図５】
2004303204.tif 000007
【図６】
2004303204.tif 000008
【図７】
2004303204.tif 000009