(57)【要約】単一命令多重データ（ＳＩＭＤ）処理能力を有するプロセッサにおいて多重データ項目の処理中に算術フラグを抽出し結合させる方法および計算機プログラムが提供される。ＳＩＭＤプロセッサでは、数個のデータ片が所定の時間において同じ命令によって操作される。しかしながら、この命令の実行による結果は操作されているデータに従って変化する。この方法および計算機プログラムによって、これらの算術フラグを抽出し結合する単純なメカニズムがプロセッサ効率を最大限にするとともに、スペースの削減、電力要求およびプロセッサによって生じた熱を低減することを可能にする。
2006518060.tif 000002
【特許請求の範囲】
【請求項１】
複数の算術フラグを結合するための装置において、
複数の算術フラグを検査し、前記複数の算術フラグのフィールド・サイズを決定し、前記フィールド・サイズの決定に基づいて前記複数の算術フラグを単一の結合算術フラグ変数に結合する結合関数モジュールから成り、前記複数の算術フラグは、数学的動作が複数のデータ項目に関してプロセッサによって実行された後に、前記複数のデータ項目のステータスを表示することを特徴とする装置。
【請求項２】
前記結合算術フラグ変数の前記ステータスを決定し、前記プロセッサに前記ステータスに基づいた適切な動作を実行させる状態検査モジュール、
をさらに含むことを特徴とする請求項１記載の装置。
【請求項３】
前記フィールド・サイズが１ニブル、バイト、ハーフ・ワードまたはワードの長さに基づくことを特徴とする請求項１記載の装置。
【請求項４】
前記複数の算術フラグは、
負のデータ値、０のデータ値、データ値中の桁上げの発生、または前記複数のデータ項目中におけるデータ項目中のオーバーフロー条件、
をさらに含むことを特徴とする請求項３記載の装置。
【請求項５】
前記結合関数モジュールは、ＡＮＤまたはＯＲ動作のいずれかを行なうことを特徴とする請求項４記載の装置。
【請求項６】
前記条件によって決定された前記ステータスはさらに、
いずれかのデータ項目がオーバーフローしたこと、
いずれのデータ項目もオーバーフローしていないこと、
いずれかのデータ項目が正または０であること、
いずれかのデータ項目が負であること、
いずれかのデータ項目が０であること、
いずれのデータ項目も０ではないこと、
いずれかのデータ項目は桁上げを有していること、
いずれのデータ項目も桁上げを有していないこと、
すべてのデータ項目がオーバーフローしたこと、
すべてのデータ項目がオーバーフローしていないこと、
すべてのデータ項目が正または０であること、
すべてのデータ項目が負であること、
すべてのデータ項目が０であること、
すべてのデータ項目が０ではないこと、
すべてのデータ項目が桁上げを有していること、および、
すべてのデータ項目が桁上げを有していないこと、
を含むことを特徴とする請求項２記載の装置。
【請求項７】
プロセッサへの提示のために複数の算術フラグを結合する方法において、
結合プロセスを基礎にすべき複数の算術フラグのフィールド・サイズを決定する段階であって、ここで数学的な動作が複数のデータ項目に関してプロセッサによって実行された後に、前記複数の算術フラグが前記複数のデータ項目のステータスを表わす、段階と、
前記フィールド・サイズに基づく前記複数の算術フラグを抽出する段階と、
結合プロセスが選択される場合選択される機能に基づいて前記複数の算術フラグを結合する段階と、
前記プロセッサによるアクセスのための宛先レジスタ中に前記複数の算術フラグの結合の結果を格納する段階と、
から構成されることを特徴とする方法。
【請求項８】
前記フィールド・サイズが１ニブル、バイト、ハーフ・ワードまたはワードの長さに基づくことを特徴とする請求項７記載の方法。
【請求項９】
前記複数の算術フラグは、
負のデータ値、０のデータ値、データ値中の桁上げの発生、または前記複数のデータ項目中におけるデータ項目中のオーバーフロー条件、
をさらに含むことを特徴とする請求項８記載の方法。
【請求項１０】
前記機能は、ＡＮＤまたはＯＲ動作のいずれかを行なうことを特徴とする請求項９記載の方法。
【請求項１１】
前記機能は前記複数のデータ項目の前記ステータスを決定するために使用され、前記ステータスは、
いずれかのデータ項目がオーバーフローしたこと、
いずれのデータ項目もオーバーフローしていないこと、
いずれかのデータ項目が正または０であること、
いずれかのデータ項目が負であること、
いずれかのデータ項目が０であること、
いずれのデータ項目も０ではないこと、
いずれかのデータ項目は桁上げを有していること、
いずれのデータ項目も桁上げを有していないこと、
すべてのデータ項目がオーバーフローしたこと、
すべてのデータ項目がオーバーフローしていないこと、
すべてのデータ項目が正または０であること、
すべてのデータ項目が負であること、
すべてのデータ項目が０であること、
すべてのデータ項目が０ではないこと、
すべてのデータ項目が桁上げを有していること、および、
すべてのデータ項目が桁上げを有していないこと、
を含むことを特徴とする請求項１０記載の方法。
【請求項１２】
結合プロセスを基礎にすべき複数の算術フラグのフィールド・サイズを決定し、ここで数学的な動作が複数のデータ項目に関してプロセッサによって実行された後に、前記複数の算術フラグが前記複数のデータ項目のステータスを表わし、
前記フィールド・サイズに基づく前記複数の算術フラグを抽出し、
結合プロセスが選択される場合選択される機能に基づいて前記複数の算術フラグを結合し、
前記プロセッサによるアクセスのための宛先レジスタ中に前記複数の算術フラグの結合の結果を格納する、
ことになるプロセッサによって実行される際に命令を格納するデータ格納媒体からなることを特徴とする装置。
【請求項１３】
前記フィールド・サイズが１ニブル、バイト、ハーフ・ワードまたはワードの長さに基づくことを特徴とする請求項１２記載の装置。
【請求項１４】
前記複数の算術フラグは、
負のデータ値、０のデータ値、データ値中の桁上げの発生、または前記複数のデータ項目中におけるデータ項目中のオーバーフロー条件、
をさらに含むことを特徴とする請求項１３記載の装置。
【請求項１５】
前記機能は、ＡＮＤまたはＯＲ動作のいずれかを行なうことを特徴とする請求項１４記載の装置。
【請求項１６】
前記機能は前記複数のデータ項目の前記ステータスを決定するために使用され、前記ステータスは、
いずれかのデータ項目がオーバーフローしたこと、
いずれのデータ項目もオーバーフローしていないこと、
いずれかのデータ項目が正または０であること、
いずれかのデータ項目が負であること、
いずれかのデータ項目が０であること、
いずれのデータ項目も０ではないこと、
いずれかのデータ項目は桁上げを有していること、
いずれのデータ項目も桁上げを有していないこと、
すべてのデータ項目がオーバーフローしたこと、
すべてのデータ項目がオーバーフローしていないこと、
すべてのデータ項目が正または０であること、
すべてのデータ項目が負であること、
すべてのデータ項目が０であること、
すべてのデータ項目が０ではないこと、
すべてのデータ項目が桁上げを有していること、および、
すべてのデータ項目が桁上げを有していないこと、
を含むことを特徴とする請求項１５記載の装置。
【請求項１７】
プロセッサへの提示のために複数の算術フラグを結合する方法において、
結合プロセスを基礎にすべき複数の算術フラグのフィールド・サイズを決定する段階であって、ここで数学的な動作が複数のデータ項目に関してプロセッサによって実行された後に、前記複数の算術フラグが複数のデータ項目のステータスを表わす、段階と、
前記フィールド・サイズに基づく前記複数の算術フラグを抽出する段階と、
前記プロセッサによるアクセスのための宛先レジスタ中に前記複数の前記算術フラグの抽出の結果を格納する段階と、
から構成されることを特徴とする方法。
【請求項１８】
前記フィールド・サイズが１ニブル、バイト、ハーフ・ワードまたはワードの長さに基づくことを特徴とする請求項１７記載の方法。
【請求項１９】
前記複数の算術フラグは、
負のデータ値、０のデータ値、データ値中の桁上げの発生、または前記複数のデータ項目中におけるデータ項目中のオーバーフロー条件、
をさらに含むことを特徴とする請求項１８記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、単一命令多重データ（ＳＩＭＤ：single instruction multiple data）管理のための方法および計算機プログラムに関する。さらに詳しくは、本発明は、個々のデータ項目に関連する算術フラグを管理し、その結果、ＳＩＭＤ能力を備えるプロセッサがこれらの算術フラグを論理的に結合することができるとともに、多重データ項目の同時処理が単純で効率的な方法で同時に行われることができる。
【背景技術】
【０００２】
コンピュータの急速な発達で、プロセッサ速度、処理能力、通信および耐障害性の分野で多くの進歩が見られた。初期のコンピュータ・システムは、プロセッサ、メモリおよび周辺機器がすべて単一のバスを経由して通信するスタンド・アロンの装置であった。その後、パフォーマンスを改善するために、いくつかのプロセッサは、１つまたはそれ以上のバスを使用してメモリと周辺装置を相互に結合した。さらに、個別のコンピュータ・システムは、共有メモリ、シリアルおよびパラレル・ポート、ローカル・エリア・ネットワーク（ＬＡＮ）および広域ネットワーク（ＷＡＮ）のような異なる通信メカニズムを経由して共にリンクされた。さらに、プロセッサの命令処理を改善するために、パイプライン方式が開発され、プロセッサがステージの命令を実行することを可能にするとともに、単一のプロセッサが、異なる実行ステージで異なる命令を同時に実行することができた。
【０００３】
プロセッサの性能を強化するために考案されたさらなる発達は、単一命令多重データ（ＳＩＭＤ）として知られる技術の利用である。ＳＩＭＤは、数個の異なるデータ片がプロセッサによって同時にアクセスされ算術上操作される技術である。数個のデータ片を同時に操作するこの能力は、プロセッサの性能を飛躍的に強化する。しかしながら、たとえ同じ算術演算が行なわれることがあっても、各データ片に対する結果およびステータスは異なることがある。例えば、データは、負、０、桁上げあるいはオーバーフロー・コンディションを有することがある。ＳＩＭＤプロセッサが８個以上のデータ片を同時に操作することができるので、プロセッサは少なくとも８セットのこれらのコンディション・フラグを維持するために要求される。さらに、ＳＩＭＤ処理の利益を受け取るために、これらのコンディションまたは算術フラグを論理的に結合することが必要であり、その結果、適切な動作が適切な条件の下で生じる。多くの起こりうる出現の様々な結合の下で、８個以上のデータ片を操作することが必要となるので、プロセッサやマイクロプロセッサの設計に組み込まれなければならないロジックは非常に扱いにくいものとなる。マイクロプロセッサ上の貴重なスペースはこの処理に専念しなければならないが、速度、サイズ、必要とされる電力、およびプロセッサから発生した熱は、極めて深刻に影響を受けることがある。
【０００４】
したがって、必要なことは、適切な動作が適切な条件の下で行なわれるように、単純な方法で算術またはコンディション・フラグを結合する方法および計算機プログラムを提供することである。さらに、この方法および計算機プログラムによって、単純な方法ですべての算術機能およびコンディション・フラグの検査が直ちに可能となる。さらに、必要なときに、この方法および計算機プログラムは、個々のデータ項目のための個々の算術フラグを簡単に抽出することができるであろう。
【０００５】
前記および本発明のよりよい理解は、本発明の開示部分を形成する以下の実施例の詳細な説明および請求項を、それらと関連する添付図面と共に参照することにより明白になるであろう。前述および後述、または図示された開示情報は発明の実施例を開示することを目的とするが、これらは単に図示や例示のためのものであり、本発明はそれらによって制限されないことを理解すべきである。本発明の精神および範囲は、特許請求の範囲に記載された事項によってのみ制限される。
【発明の開示】
【０００６】
本発明の詳細な説明を始める前に、以下の記述について若干の説明をする。適切な場合には、同じ参照番号や文字が、異なる図面において、同一あるいは対応または類似する要素を示すために使用される。さらに、以下の詳細な記述では、具体的なサイズ／モデル／数値／レンジが与えられることがあるが、本発明はその同じものに限定されるものではない。最後の注記として、コンピュータ・ネットワークの周知のコンポーネントは、具体例と議論を簡単にするために図中には示されないが、発明を不明瞭にするものではない。
【０００７】
図１Ａ〜図１Ｄは、データ項目に関係する算術フラグを示すために利用されるＳＩＭＤワードの代表的な例であり、本発明の実施例にＳＩＭＤ能力を具備するプロセッサによって操作される。図１Ａは、８セットのＳＩＭＤフラグを収容するＳＩＭＤワードを表わし、１２０，１２５，１３０，１３５，１４０，１４５，１５０，１５５とラベル付けされる。各ＳＩＭＤセット（１２０，１２５，１３０，１３５，１４０，１４５，１５０，１５５）は、それぞれ、Ｎ，Ｚ，Ｃ，Ｖと指定される４つの変数を有する。Ｎは、負の値を有するデータ項目を表わす。Ｚは、０値を具備するデータ項目を表わす。Ｃは、データ項目中の桁上げ条件を表わし、それは符号ビットを有するバイトまたはワードに対するオーバーフローの場合に生じる。Ｖは、関連するデータ項目に対して生じたオーバーフロー条件を表わす。Ｎ，Ｚ，ＣおよびＶは算術フラグの例だけであることに注意すべきである。当業者によって理解されるように、さらに多くのフラグまたは条件が演算機能によって生成された結果のために作成される。したがって、図１Ａ〜図１Ｄ中に示されたフラグは、実例としてのみ提供され、本発明がフラグまたは条件のみの使用に制限されることを意図するものではない。
【０００８】
図１Ａを参照して、８セットの算術フラグ（１２０，１２５，１３０，１３５，１４０，１４５，１５０，１５５）は、フラグの各セットが個々のデータ項目に関係して示される。したがって、Ｎ，Ｚ，ＣおよびＶからなるフラグの第１セットは、第１のデータ項目１２０に関連する一方、第２の１２５、第３の１３０および第８の１５５は、図２にさらに図示される第１、第２、第３、第４から第８までのデータ項目に関連し、次に議論される。この特定のＳＩＭＤワードが３２ビットを含むことに注目されるべきである。しかしながら、本発明は、３２ビットのＳＩＭＤワードの使用に制限されるものではない。６４ビットのＳＩＭＤワードを使用することが可能であり、そこでは本発明の実施例が６４ビットのＳＩＭＤワードの動作に利用されてもよい。
【０００９】
図１Ｂを参照して、図示されたＳＩＭＤワードは図１Ａの中で示されるものに類似していることに注目すべきであるが、しかし、算術フラグ（１２０，１２５，１３０，１３５）の４セットだけが設定される。図１Ａのように、各バイトが値０で占められた最小位ビットを具備するという例外を除いて、同じＮ，Ｚ，ＣおよびＶの指定が使用される。
【００１０】
図１Ｃを参照すると、この図は、算術フラグ（１２０，１２５）の２セットだけが表わされるという例外を除いて、図１Ａおよび図１Ｂに類似する。したがって、各ハーフ・ワード中で使用されない各最小位ビットは、値０で満たされる。
【００１１】
図１Ｄを参照すると、この図は、算術フラグ（１２０）の１セットだけが表わされるという例外を除いて、図１Ａ、図１Ｂおよび図１Ｃに類似する。したがって、各ワード中で使用されない最小位ビットは値０で満たされる。
【００１２】
図２は、本発明の実施例のシステム図である。図１Ｂ中で図示されるように、算術フラグ１２０，１２５，１３０，１３５は図２の中で示される。しかしながら、さらに、算術フラグ１２０，１２５，１３０，１３５は各々データ項目１００，１０５，１１０，１１５にそれぞれ関係する。すでに議論されたように、プロセッサ１６５のようなＳＩＭＤ可能なプロセッサが有効に複数のデータ片（１００から１１５）を順番に操作するために、算術フラグ１００，１２５，１３０，１３５中で示される数学的な動作の結果を論理的に結合することが必要である。これは、図３〜図６に関して図示され議論された方法および動作を利用する結合関数モジュール１６０によって達成される。結合関数モジュール１６０によって行なわれる結合関数の結果は、結合した算術フラグ変数１７０である。その後、状態検査モジュール１７５は、結合した算術フラグ変数１７０に基づいて実行する次の動作を決定するために利用される。これらの動作はさらに詳細に後述されるであろう。
【００１３】
さらに図２を参照して、すでに議論されたように、パイプライン方式はコンピュータ・アーキテクチャの共通の形式である。プロセッサ１６５では、パイプライン方式における少なくとも３つのステージが示される。パイプライン方式の第１ステージは、フェッチ１８０動作で、その動作では命令が実行のためにメモリ（図示せず）から取り出される。パイプライン方式の第２ステージはその命令がプロセッサによって解読されるデコード動作１８５である。最後に、この例におけるプロセッサのパイプラインの最終ステージは、命令が状態検査モジュール１７５からの入力に基づいて実行される実行１９０ステージである。当業者に理解されるように、図２の中で示される本例のプロセッサのパイプラインは単なる実例である。さらに多くのステージのパイプライン方式が可能である。
【００１４】
本発明によって使用されるロジックの詳細な議論へ進む前に、図３〜図６に示されるフローチャートは、例えば、フロッピー・ディスク、ＣＤ−ＲＯＭ（コンパクト・ディスク・リード・オンリ・メモリ）、ＥＰ−ＲＯＭ（消去可能ＰＲＯＭ）、ＲＡＭ（ランダム・アクセス・メモリ）、ハードディスクなどの記憶媒体上に組み込まれた計算機プログラムの例えば、コード、コードのセクション、命令、コマンド、オブジェクト、ハードウェアまたはその他同種のものに応答する内蔵ソフトウェア、ファームウェア、ハードウェア、プロセスまたは動作を含むことを言及しなければならない。さらに、計算機プログラムは、任意の言語で書くことができ、例えばＣ＋＋に制限されるものではない。さらに、図３〜図６に示されるロジックは、図２で示されるモジュールおよびプロセッサ１６５によって実行される。
【００１５】
図３は、本発明の一般的な実施例におけるフローチャートの一例である。図３中に図示されたフローチャートの中で利用されるロジックは、図１Ａから図１Ｂに図示された算術フラグを組み合わせ、グループ化し、あるいは抽出するために用いられる。状態検査モジュール１７５によって実行される機能は下記機能を含むが、しかしこれらに制限されるものではない。
１．  いずれかのフィールドがオーバーフローしている場合、
２．  いずれのフィールドもオーバーフローしていない場合、
３．  いずれかのフィールドが正の（あるいは０）場合、
４．  いずれかのフィールドが負の場合、
５．  いずれかのフィールドが０である場合、
６．  いずれのフィールドも０でない場合、
７．  いずれかのフィールドが桁上げを有している場合、
８．  いずれかのフィールドが桁上げを有していない場合、
９．  すべてのフィールドがオーバーフローしている場合、
１０．  すべてのフィールドがオーバーフローしていない場合、
１１．  いずれかのフィールドが正の（あるいは０）場合、
１２．  すべてのフィールドが負の場合、
１３．  すべてのフィールドが０である場合、
１４．  すべてのフィールドが０でない場合、
１５．  すべてのフィールドが桁上げを有している場合、
１６．  すべてのフィールドが桁上げを有していない場合。
【００１６】
当業者によって理解されるように、前述の機能は、未満、越える、以下および以上を含むあらゆる数学的機能を含むように拡大されてもよい。追加の数学的な動作および機能が本発明と共に使用される。
【００１７】
さらに図３を参照して、動作２００で処理を開始し、直ちに動作２１０へ進む。動作２１０で、フィールド・サイズは抽出または結合機能のどれに基づかせるべきかについて決定される。フィールド・サイズは、ニブル、バイト、ハーフ・ワード、ワードまたはダブル・ワードのサイズであるが、しかしそれに制限されるものではない。抽出および／または結合機能は、議論した前述の１６項目の何かあるいはあらゆる他の機能を含んでもよく、それはコンピュータまたはプロセッサによって実行される数学的な動作のステータスまたは結果を記述しまたは組み合わせてもよい。その後、動作２２０へ処理が進み、抽出過程が実行されるかどうかが判断される。抽出過程が実行されると、その後処理は動作２３０へ進む。動作２３０では、図１Ａ〜図１Ｄで図示されたフラグは、動作２１０で決定されたフィールド・サイズおよび特定のデータ項目に基づいて抽出される。その後、処理は動作２７０へ進み、そこで抽出された情報が宛先レジスタに格納される。一度、格納されると、処理は動作２８０へ移り、ここで処理は終了する。図６で示される実施例において、抽出過程がさらに後ほど詳細に議論される。
【００１８】
動作２２０において、抽出過程が所望されないと判断される場合はそのとき、処理は動作２４０へ進む。動作２４０では、図１Ａ〜図１Ｄで図示された算術フラグのための状態検査モジュール１７５によって実行される結合プロセスが所望されるかどうかが決定される。結合プロセスが所望されない場合、その時、処理は動作２８０へ進み、そこで再び処理は終了する。しかしながら、状態検査モジュール１７５によって実行される結合プロセスが、図１Ａ〜図１Ｄに示されるいくつかのデータ項目に関連したフラグに対して所望される場合、処理は動作２５０に移る。動作２５０では、ＳＩＭＤ  ＰＳＲレジスタ中の各データ項目のフラグは、動作２１０で決定されたフィールド・サイズに基づいて抽出される。その後、処理は動作２６０に移り、各データ項目の抽出されたフラグが所望された機能に基づいて、結合される。ＡＮＤ動作およびＯＲ動作のための結合機能のための具体例は、それぞれ図４および図５の議論でさらに詳述される。その後、処理は動作２７０に移り、結合フラグの結果がプロセッサによるアクセスのために宛先レジスタに格納される。その後、処理は動作２８０で終了する。
【００１９】
図４は、本発明の実施例で使用されるＡＮＤ関数のフローチャートの１つで、状態検査モジュール１７５によって実行される。このＡＮＤ動作のための処理は動作３００で始まり、直ちに、動作３１０へ進む。動作３１０では、データ・フィールド・サイズが長さにして４ビット（１ニブル）かどうかは決定される。データ・フィールド・サイズがそのとき４ビットの長さである場合、処理は動作３２０に移る。動作３２０では、宛先レジスタのビット３１〜２８は、ＳＩＭＤ  ＰＳＲレジスタのビット２７〜２４とアンドされ、ビット２３〜２０とアンドされ、ビット１９〜１６とアンドされ、ビット１５〜１２とアンドされ、ビット１１〜８とアンドされ、ビット７〜４とアンドされ、ビット３〜０とアンドされたビット３１〜２８と等しく設定される。その後、処理は動作３２０に移り、宛先レジスタの残るビット２７〜０が０に設定される。その後、処理は動作３９５に移り、処理は終了する。
【００２０】
さらに図４を参照して、動作３１０では、４ビットのデータ・フィールドが指定されないと判断される場合、そのとき処理は動作３４０に移る。動作３４０では、８ビット（バイト）のデータ・フィールドが指定されるかどうかが決定される。８つのビット・データ・フィールドが、図１Ｂの中で示されるＳＩＭＤデータ・ワードで指定される場合、処理は動作３５０に移る。動作３５０では、宛先レジスタのビット３１〜２４は、ＳＩＭＤ  ＰＳＲレジスタのビット２３〜１６とアンドされ、ビット１５〜８とアンドされ、ビット７〜０とアンドされたビット３１〜２４に等しく設定される。その後、処理は動作３６０に移り、宛先レジスタのビット２３〜０が０に設定される。その後、処理は動作３９５に移り、処理は終了する。
【００２１】
さらに図４を参照して、動作３４０では、８ビット・データ・フィールドが指定されないと判断される場合、そのとき処理は動作３７０に移る。動作３７０では、１６ビット（ハーフ・ワード）のデータ・フィールドが指定されるかどうかが決定される。図１Ｃの中で示されるように、１６ビットのデータ・フィールドが指定される場合、処理は動作３８０に移る。動作３８０では、宛先レジスタのビット３１〜１６は、ＳＩＭＤ  ＰＳＲレジスタのビット１５〜０とアンドされたビット３１〜１６に等しく設定される。その後、処理は動作３９０に移り、宛先レジスタのビット１５〜０が０に設定される。その後、処理は動作３９５に移り、処理は終了する。
【００２２】
図５は、本発明の実施例で使用されるＯＲ機能のフローチャートの１つで、状態検査モジュール１７５によって実行されてもよい。このＯＲ動作のための処理は動作４００で開始し、直ちに、動作４１０へ進む。動作４１０では、データ・フィールド・サイズが４ビット（１ニブル）の長さかどうかが決定される。データ・フィールド・サイズが４ビットの長さである場合、そのとき処理は動作４２０に移る。動作４２０では、宛先レジスタのビット３１〜２８は、ＳＩＭＤ  ＰＳＲレジスタのビット２７〜２４とオアされ、ビット２３〜２０とオアされ、ビット１９〜１６とオアされ、ビット１５〜１２とオアされ、ビット１１〜８とオアされ、ビット７〜４とオアされ、ビット３〜０とオアされたビット３１〜２８に等しく設定される。その後、処理は動作４２０に移り、宛先レジスタの残るビット２７〜０が０に設定される。その後、処理は動作４９５に移り、処理は終了する。
【００２３】
さらに図５を参照して、動作４１０では、４ビットのデータ・フィールドが指定されないと判断される場合、そのとき処理は動作４４０に移る。動作４４０では、８ビット（バイト）のデータ・フィールドが指定されるかどうかが決定される。８つのビット・データ・フィールドが、図１Ｂの中で示されるＳＩＭＤデータ・ワードで指定される場合、処理は動作４５０に移る。動作４５０では、宛先レジスタのビット３１〜２４は、ＳＩＭＤ  ＰＳＲレジスタのビット２３〜１６とオアされ、ビット１５〜８とオアされ、ビット７〜０とオアされたビット３１〜２４に等しく設定される。その後、処理は動作４６０に移り、宛先レジスタのビット２３〜０が０に設定される。その後、処理は動作４９５に移り、処理は終了する。
【００２４】
さらに図５を参照して、動作４４０では、８ビット・データ・フィールドが指定されないと判断される場合、そのとき処理は動作４７０に移る。動作４７０では、１６ビット（ハーフ・ワード）のデータ・フィールドが指定されるかどうかが決定される。図１Ｃの中で示されるように、１６ビットのデータ・フィールドが指定される場合、処理は動作４８０に移る。動作４８０では、宛先レジスタのビット３１〜１６は、ＳＩＭＤ  ＰＳＲレジスタのビット１５〜０とオアされたビット３１〜１６と等しく設定される。その後、処理は動作４９０に移り、宛先レジスタのビット１５〜０が０に設定される。その後、処理は動作４９５に移り、処理は終了する。
【００２５】
図６は、本発明の実施例で使用される抽出機能のフローチャートで、状態検査モジュール１７５によって実行されてもよい。抽出機能は、動作５００中の実行を始めて、動作５１０に直ちに移る。動作５１０では、図１Ａに示されたＳＩＭＤワードのためのデータ・フィールドが４ビット（１ニブル）の長さであるかどうかが決定される。データ・フィールドが動作５１０で、４ビットの長さである場合、処理は動作５２０に進む。動作５２０では、宛先レジスタのビット３１〜２８はＳＩＭＤ  ＰＳＲレジスタのニブル２〜０に等しく設定される。その後、処理は動作５７０に移り、そこで処理が終了する。
【００２６】
しかしながら、動作５１０では、データ・フィールドが４ビットの長さに等しくないと判断される場合、そのとき処理は動作５３０に移る。動作５３０では、データ・フィールドが８ビット（１バイト）の長さであるかどうかが決定される。図１Ｂで示されるように、ＳＩＭＤワードのデータ・フィールドが８ビットの長さにである場合、その処理は動作５４０に移る。動作５４０では、宛先レジスタのビット３１〜２４は、ＳＩＭＤ  ＰＳＲレジスタのバイト１〜０に等しく設定される。その後、再び、処理は動作５７０に移り、そこで処理が終了する。
【００２７】
さらに図６を参照すると、動作５３０では、ＳＩＭＤワードのデータ・フィールドが１バイトの長さでないことが決定される場合、その処理は動作５５０に移る。動作５５０では、ＳＩＭＤワードのデータ・フィールド長が１６ビット（ハーフ・ワード）の長さであるかどうかが決定される。ＳＩＭＤワードのデータ・フィールドが１６ビットの長さである場合、処理は動作５６０に移る。動作５６０では、宛先レジスタのビット３１〜１６は、ＳＩＭＤ  ＰＳＲレジスタのハーフ・ワード０と等しく設定される。その後、処理は動作５７０に移り、そこで処理が終了する。さらに、動作５５０で、ＳＩＭＤワードのデータ・フィールド長が１６ビットでない決定される場合、そのとき処理は動作５７０に移り、そこで処理が終了する。
【００２８】
本発明による利点は、単純で、信頼でき、高速の方法および計算機プログラムが提供され、それは数学的な動作を主題とするＳＩＭＤ可能なプロセッサが多重データ項目に関連した算術フラグを抽出しおよび／または結合することを可能にすることである。この方法および計算機プログラムは、本質的に、複雑なロジックがスペース、所要電力、およびプロセッサによって生成された熱を削減することを要求するものではない。さらに、この方法および計算機プログラムは、必要とされるロジックの単純性によりＳＩＭＤ可能なプロセッサが最大効率で動作することを可能にする。
【００２９】
ここにわずかの例を示し記述する一方、当業者に知られているような多数の変更および修正が本発明の実施例になされることが理解される。したがって、ここに示され記述された詳細に制限されるものではなく、添付された請求項の範囲によって包含される変更および修正をすべてカバーするものである。
【図面の簡単な説明】
【００３０】
【図１Ａ】本発明の実施例の中で使用され、プロセッサ・ステータス・レジスタ（ＰＳＲ）に格納された８つのデータ項目のためのＳＩＭＤワードの算術フラグの実施例である。
【図１Ｂ】本発明の実施例の中で使用されるＰＳＲに格納された４つのデータ項目のためのＳＩＭＤワード中における算術フラグの実施例である。
【図１Ｃ】本発明の実施例の中で使用されるＰＳＲに格納された２つのデータ項目のためのＳＩＭＤワード中における算術フラグの実施例である。
【図１Ｄ】本発明の実施例の中で使用されるＰＳＲに格納された１つのデータ項目のためのＳＩＭＤワード中における算術フラグの実施例である。
【図２】本発明の実施例のシステム図である。
【図３】本発明の一般的な実施例のフローチャートである。
【図４】本発明の実施例の中で使用されるＡＮＤ機能のフローチャートである。
【図５】本発明の実施例の中で使用されるＯＲ機能のフローチャートである。
【図６】本発明の実施例の中で使用される抽出機能のフローチャートである。
【図１Ａ】
2006518060.tif 000003
【図１Ｂ】
2006518060.tif 000004
【図１Ｃ】
2006518060.tif 000005
【図１Ｄ】
2006518060.tif 000006
【図２】
2006518060.tif 000007
【図３】
2006518060.tif 000008
【図４】
2006518060.tif 000009
【図５】
2006518060.tif 000010
【図６】
2006518060.tif 000011
【国際調査報告】
2006518060.tif 000012
2006518060.tif 000013
2006518060.tif 000014