(57)【特許請求の範囲】
【請求項１】
１ビットを用いた演算をそれぞれが実行するための複数の処理桁を有し、オペランドを用いて並列的に演算を実行するための処理回路を含む処理装置を作動させるための方法であって、
それぞれが１ビット以上を含む複数の第１の要素データ項目を含み、前記処理回路内の処理桁のそれぞれの部分行列にそれぞれが提供される第１の複合オペランドと、第１の要素データ項目それぞれについて前記第１の要素データ項目の処理桁の部分集合にそれぞれが提供され、また前記第１の要素データ項目それぞれについて前記第１の要素データ項目と位置の揃ったそれぞれのビットを含み、さらに第１の部分集合と第２の部分集合を含んでおり、かつまた前記第１の部分集合内の第１の要素データ項目内のビットと位置が揃えてあるそれぞれのビットが第１の値を有し、前記第２の部分集合内の第１の要素データ項目内のビットと位置が揃えてあるそれぞれのビットが第２の値を有する第１のマスクデータ項目を含む第１のマスクオペランドとを前記処理回路へ提供する段階と、
前記第１の複合オペランドと前記第１のマスクオペランドとを用いてそれぞれの第１の要素データ項目の部分集合においてそれぞれの結果データ項目を取得する第１の論理演算を並列に実行し、前記第１の部分集合内のそれぞれの第１の要素データ項目の前記結果データ項目が前記第１の要素データ項目と同じ値を有し、前記第２の部分集合内のそれぞれの第１の要素データ項目の前記結果データ項目がすべてのビットで均一な値を有し、前記第２の部分集合内のそれぞれの第１の要素データ項目の前記結果データ項目のすべてのビットでの均一な値が前記第１の値と前記第２の値の一方となるように前記処理回路を作動させる段階を含む、前記方法。
【請求項２】
１ビットを用いた演算をそれぞれが実行するための複数の処理桁を有し、オペランドを用いて並列的に演算を実行するための処理回路を含む処理装置を作動させるための方法であって、
それぞれが１ビット以上を含む複数の要素データ項目を含み、それぞれが前記処理回路内の処理桁のそれぞれの部分集合に提供される複合オペランドを前記処理回路に提供する段階と、
前記複合オペランドを用いて前記要素データ項目内のそれぞれにビットについて前記要素データ項目内のビットと位置が揃っているそれぞれのビットを含む要素データ項目のそれぞれの前記部分集合内にそれぞれのマスクデータ項目を取得するマスク取得演算を並列的に実行し、前記要素データ項目が第１の部分集合と第２の部分集合を含み、前記第１の部分集合内の要素データ項目内のビットと位置が揃えてあるマスクデータ項目内のそれぞれのビットが第１の値を有し、前記第２の部分集合内の要素データ項目内のビットと位置が揃えてあるマスクデータ項目内のそれぞれのビットが第２の値を有し、前記マスクデータ項目をあわせてマスクオペランドを構成するように前記処理回路を作動させる段階を含む、前記方法。
【発明の詳細な説明】
【０００１】
本発明は複数データ項目について選択的に演算を実行する技術に関する。
【０００２】
従来技術の多くは複数データ項目に対して選択的に演算を実行している。その幾つかの例は、それぞれのデータ項目が画像内の画素に関連し得るような画像処理の分野にみられる。
【０００３】
ブルームバーグ（Ｂｌｏｏｍｂｅｒｇ  ）らの米国特許第５，０４８，１０９号（ブルームバーグ１０９号）では文書の反転表示部分を検出するための技術を開示している。その第４段５９行から６４行では原本画像内の注目している領域に対応する実質的にオン画素で詰まった領域を含む画像としてマスクが定義されている。図１ａに関連して説明されているように、グレースケール・スキャナは画素当たり複数ビットを出力可能で、またグレースケールの走査は２進化して反転表示画像（ＨＩ）を生成できる。図１ｂに関連して説明されているように、反転表示になっていない領域から画素を除去しつつ反転表示領域はその全体を残すことによって、ＨＩから反転表示領域（ＨＲ）マスクを生成できる。ＨＲマスクは各種の方法に利用が可能である。
【０００４】
画像処理におけるマスクを生成使用するためのその他の技術はブルームバーグの米国特許第５，０６５，４３７号およびブルームバーグらの米国特許第５，１３１，０４９号に開示されている。
【０００５】
マホーニー（Ｍａｈｏｎｅｙ  ）のヨーロッパ特許第４６０，９７０号では第１に選択演算を実行して類似した値でラベル付けした一組の画素を選択し、ついで選択した画素の組に処理を施す選択的処理技術を開示している。
【０００６】
本発明では、グレースケールまたはカラー画素値などの多ビットデータ項目を処理する上での問題を取り扱う。
【０００７】
多ビットデータ項目の演算は条件式であることが多い。基準に合致するデータ項目についてだけ演算を実行するが、その他のデータ項目には波及しない。つまり選択的にデータ項目に対して演算する必要があることが多い。
【０００８】
従来技術をデータ項目に選択的演算を行なうために使用することが出来る。マスクを生成して前出のブルームバーグ１０９号に記載されているように使用することが可能である。選択的処理は前出のマホーニーが記載したように実行することが可能である。
【０００９】
従来技術において、単一の処理装置（ｐｒｏｃｅｓｓｏｒ）  は一度に１つの多ビットデータ項目についてのみ演算を行なえるのが普通である。これは処理装置がそれぞれの多ビットデータ項目の幅より２倍以上大きい場合には特に非効率的であるといえる。
【００１０】
本発明の１つの態様は複数の多ビット要素データ項目を含む複合オペランド内部に存在する要素データ項目の部分集合に対して並列的に演算を行なうための技術の発見に基づくものである。本技術では、本明細書において「マスク・オペランド」と称する特別なオペランドを使用している。
【００１１】
１つの技術では、マスクオペランドおよび複合オペランドに対して並列的に論理演算を実行して複合オペランドから要素の部分集合を含む結果オペランドを取得する。１つまたはそれ以上の演算を結果オペランドに対して並列的に実行することが出来る。たとえば、変更した結果データ項目を部分集合内のそれぞれの要素について取得することができ、また変更していない結果データ項目をその他の要素について取得することが出来る。
【００１２】
別の技術ではマスクオペランドと、これの反転と、２つの複合オペランドに対して並列的に論理演算を実行して複合オペランドを併合する。この技術は複合オペランドを上述のようにして得た変更を加えた結果データ項目と併合するために実施することが出来る。結果オペランドは複合オペランドと等しいが、選択した要素に対して演算が実行された点で異なっている。本技術は位置の揃った要素のそれぞれの対の極大と極小を選択することによって２つの複合オペランドを併合するためにも使用することが可能である。
【００１３】
ある種の目的のために、マスクオペランドをあらかじめ取得しておき、それ以降での使用のために保存することが可能である。しかし基準に合致する要素データ項目を合致しない要素から区別するマスクオペランドを取得することが必要となる場合が多い。たとえば、少なくとも閾値と同じだけ大きいまたは大きくない要素だけまたは定数と等しいまたは等しくない要素だけ、または範囲内に収まるまたは収まらない要素だけを選択することが望ましいことがある。このような状況では、マスクオペランドはこれが選択する要素が利用できない限り取得することが不可能である。
【００１４】
本発明の別の態様はマスクオペランドが選択する要素を含む複合オペランドを用いてマスクオペランドを取得することが可能な技術の発見に基づくものである。これらの技術はマスクオペランドが区別できる要素に対して並列的に演算を実行することによりマスクオペランドを準備することを可能にしている。
【００１５】
本発明の技術は多ビットデータ項目に対して効率的な演算を行なうことが出来るので有利である。幾つかの技術を使用して複数の多ビット要素データ項目を含む複合オペランドからマスクオペランドを取得し、分岐やその他の条件式演算を並列的に実行することが可能になっている。その他の技術はマスクオペランドおよび１つまたはそれ以上の複合オペランドを複数の多ビット要素データ項目とあわせて用い並列的に演算を実行する。このような技術を用いれば広範な演算を実施することが可能になる。
【００１６】
図１はそれぞれの画素に関連する多ビット要素データ項目を含む複合オペランドからのマスクオペランドと部分オペランドを取得するためにマスクオペランドと複合オペランドを用いる演算の積を表わす概略流れ図である。
【００１７】
図２はソフトウェア製品からの命令を処理装置が実行してマスクオペランドを取得または使用するようなシステムの部材を表わす概略ブロック図である。
【００１８】
図３は処理装置が複合オペランドを含むマスクオペランドを使用することの出来る動作を表わす流れ図である。
【００１９】
図４は処理装置が複合オペランドを用いてマスクオペランドを取得できるような動作を表わす流れ図である。
【００２０】
図５は図４のマスクオペランドを取得する際に使用することの出来るＫビットのシフト回路を表わす概略回路図である。
【００２１】
図６は図４の動作の実施例でマスクオペランドをどのように取得し得るかを表わす概略流れ図である。
【００２２】
図７は図４の動作の別の実施例でマスクオペランドをどのように取得し得るかを表わす概略流れ図である。
【００２３】
図８は図３の動作の実施例で後続の演算のために要素を選択するのにマスクオペランドを使用する動作を表わす流れ図である。
【００２４】
図９はマスクオペランドとその反転を用いて複合オペランドをどのように併合するかを表わす概略流れ図で要素の選択のために図８の動作と類似の動作を用いている。
【００２５】
図１０は２つの複合オペランドの極大または極小の対を取得するためにマスクオペランドを使用する際の動作を示す流れ図で、それぞれの対の極大または極小を選択するために図８と類似した動作を用いている。
【００２６】
図１１は図３の動作の別の実施例で、並列的に乗算を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【００２７】
図１２は図３の動作の別の実施例で、並列的に復元除算を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【００２８】
図１３は図３の動作の別の実施例で、除算を実行するためにマスクオペランドを使用する際の動作を示す別の流れ図である。
【００２９】
図１４は図３の動作の別の実施例で、閾値旋回を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【００３０】
図１から図５は本発明の一般的特徴を図示したものである。図１では複合オペランドから要素データ項目を選択するために使用することの出来るマスクオペランドを取得するために複合オペランドをどのように使用することが出来るかを模式的に図示している。図２は図１と同様の技術によって処理装置が実行可能な命令を表わす命令データを有するソフトウェア製品を表わす。図３はマスクオペランドを使用する際の一般的動作を表わす。図４はマスクオペランドを取得する際の一般的動作を表わす。図５はマスクオペランドの取得で使用するためのＫビットのシフト回路を含む処理装置の一般的部材を表わす。
【００３１】
図１では、複合オペランド１０はそれぞれが２ビットを含む要素データ項目１２、１４、１６を含む。要素１２は値「１１」、要素１４は値「１０」、また要素１６は値「０１」を有する。
【００３２】
マスクオペランド２０は複合オペランド１０から生成でき、「１０」に等しい値を有する複合オペランド１０内の要素だけを選択するという意味においてこれはフィルタである。つまり、マスクオペランドは要素１２と位置の揃ったビット桁（ｂｉｔ  ｐｏｓｉｔｉｏｎ）２２でオフとなり、要素１４と位置の揃ったビット桁２４でオンとなり、要素１６と位置の揃ったビット桁２６でオフとなる。
【００３３】
複合オペランド１０とマスクオペランド２０がＡＮＤ処理（論理積）されると、結果３０は結果データ項目３２、３４、３６を含むことになる。ビット桁２２と２６がオフなのでデータ項目３２と３６はそれぞれ論理積演算の結果として０のみを含むが、一方でデータ項目３４はビット桁２４がオンなので要素１４からの値「１０」を有している。
【００３４】
図２はソフトウェア製品６０を示し、これは図２に図示したのと同様な部材を含むシステム内で使用することが出来る製造物である。ソフトウェア製品６０は保存媒体アクセス装置６４からアクセス可能なデータ保存媒体６２を含む。データ保存媒体６２はたとえば１つまたはそれ以上のフロッピーディスクの組などの磁気媒体、１つまたはそれ以上のＣＤ−ＲＯＭの組などの光学媒体、半導体メモリ、またはデータを保存するために適切な何らかのほかの媒体であってよい。
【００３５】
データ保存媒体６２は保存媒体アクセス装置６４がたとえばマイクロプロセッサなどで有り得る処理装置６６に提供可能なデータを保存する。処理装置６６は入力回路７０からデータを受信するために接続してある。データは何らかの適切な供給源、たとえばファクシミリ（ファックス）装置や、デジタル複写機のスキャナまたはコンピュータの入出力装置で有り得るようなスキャナ、キーボードとマウスまたはペン型または鉄筆型入力装置などのユーザ入力装置で制御するフォームエディタまたはその他の対話型画像エディタであり得るようなエディタ、またはデータ転送能力を有するローカルエリアネットワークまたはその他のネットワークであり得るようなネットワークなどから取得することが出来る。データは画像に関連したものであり得る。
【００３６】
処理装置６６はまた出力回路８０へデータを提供するためにも接続してある。データはこのあとファクシミリ装置、印刷装置、表示装置、またはネットワークへ提供可能である。印刷装置はデジタル複写機の印刷装置またはコンピュータの入出力装置のことがある。
【００３７】
データ保存媒体６２に加えて、ソフトウェア製品６０は保存媒体６２に保存されるデータを含む。保存されたデータはマスク取得命令８０およびマスク使用命令８２を表わす命令データを含んでいる。処理装置６６は命令８０を実行して複合オペランド中の複数の要素データ項目のそれぞれについてマスクデータ項目を取得することが出来る。マスクデータ項目をあわせてマスクオペランドが構成される。処理装置６６は命令８２を実行して複合オペランドおよびマスクオペランドに対して論理演算を行ない、それぞれの要素の結果データ項目を得ることが出来る。要素のマスクデータ項目が第１の値を有する場合、結果データ項目は要素と同じ値を有することになる。要素のマスクデータ項目が第２の値を有する場合、結果データ項目はそのすべてのビットにおいて第１の値または第２の値のいずれかで均一な値を有することになる。
【００３８】
処理装置６６はメモリ８４にアクセスすることにより演算を実行する要素データ項目を取得することが出来る。データのそれぞれの項目はたとえば画像の画素に関連し得るものである。データ項目はそれぞれ１ビット以上を含むことが出来る。保存媒体６２に保存されたデータも、入力回路７０から受信したデータ項目をメモリ８４内に保存し、メモリ８４から演算のためにデータ項目を取り込み、または出力回路７２へ提供し、または演算により得られたデータ項目をメモリ８４内に保存するため処理装置６６が実行しうる命令を表わすデータを含むことが可能である。
【００３９】
処理装置６６は複数の処理桁（ｐｒｏｃｅｓｓｉｎｇ  ｐｏｓｉｔｉｏｎ）  ９２を含む処理回路９０を含む。処理装置６６はたとえば従来のマイクロプロセッサであってもよい。処理桁９２のそれぞれは１ビットについての演算を実行することが出来る。処理回路９０はアレイを構成させるように処理桁９２を対にして接続する桁接続回路（ｐｏｓｉｔｉｏｎ  ｃｏｎｎｅｃｔｉｎｇ  ｃｉｒｃｕｉｔｒｙ）  ９４を含む。対の１つの処理桁からの信号は桁接続回路９４によって別の処理ユニットへ転送することが可能である。
【００４０】
演算を実行している複合オペランド中のそれぞれの要素データ項目は処理桁９２のそれぞれの部分行列内に存在することが出来る。処理装置６６はマスク取得命令８０を実行してそれぞれの要素の部分行列内にマスクデータ項目を取得できる。処理装置は命令８２を用いてマスクを実行し部分行列内のそれぞれの要素およびマスクデータ項目に対して論理演算を実行できる。
【００４１】
図３はマスクオペランドを使用するために図２の処理回路９０などの処理回路を有する処理装置を作動させる方法における一般的動作を示す。囲み１００の動作は複合オペランドとマスクオペランドを処理回路９０に提供するもので、それぞれの要素データ項目およびそれらのそれぞれのマスクデータ項目はそれぞれ処理桁９２の部分行列に提供される。囲み１０２の動作では処理回路９０を作動させて複合オペランドとマスクオペランドを用いた並列論理演算を実行してそれぞれの部分行列内に結果データ項目を取得している。
【００４２】
図４も同様にマスクオペランドを使用するために図２の処理回路９０などの処理回路を有する処理装置を作動させる方法における一般的動作を示す。囲み１０６の動作は処理回路９０に複合オペランドを提供するもので、それぞれの要素が処理桁９２のそれぞれの部分行列に提供される。囲み１０８の動作は処理回路９０を作動させて複合オペランドに対して演算を実行し、それぞれの部分行列内にマスクデータ項目を取得する。マスクデータ項目をあわせてマスクオペランドが形成される。
【００４３】
図５は図４の囲み１０８におけるマスクデータ項目を取得するために使用可能な特別回路を有する処理装置１１０を示している。図２の処理装置６６は処理装置１１０の特徴を用いて実現してもよい。
【００４４】
処理装置１１０はＭ個の処理桁１２２から１２４を有する処理回路１２０を含む。処理回路１２０はまたビットを単一サイクル中にＫ桁シフトさせるためのシフト回路１２６を含む。ここでＭ＞Ｋである。制御回路１２８は処理回路１２０へまた特にＫビットのシフト回路１２６に制御信号を供給する。
【００４５】
制御信号は処理回路１２０に複合オペランドに対する演算を行なわせて、結果データ項目とそれぞれの要素についてのフラグビットを取得することが出来る。それぞれのフラグビットは処理桁１２２から１２４の要素の部分集合の最上位ビットに隣接する処理桁内に配置される。
【００４６】
制御信号はまた処理回路１２０とＫビットシフト回路１２６に結果データ項目とフラグビットを用いた演算を実行させ、フラグビットが部分集合の最下位ビット内に存在し部分集合内のその他のビットすべてはフラグビットと同一の値またはその反転と同一の値のいずれかを有するようなフラグビット・オペランドを取得することが出来る。そのため、Ｋビットのシフト回路１２６は隣接する最上位ビットから最下位ビットへのフラグビットの移動を迅速に行なえるような任意の性能拡張である。２つの桁の距離がＫビットではない場合、追加の単一シフトをＫビット分のシフトの前または後に行なうことが出来る。
【００４７】
さらに、制御信号は処理回路１２０にフラグビット・オペランドを使用する並列算術演算を実行させてマスクオペランドを取得することが出来る。
【００４８】
図１から図５を参照して上記で説明した一般的特徴は広範な部材を用いまた各種の演算を用い多様な方法で実施することが出来る。たとえば、上述の一般的特徴の幾つかは従来の処理装置を用いて実施可能であるが、その他の特徴は特別設計の処理装置を用いて実施できるものである。
【００４９】
図６および図７は１つ以上のデータ項目に対して並列に演算可能な処理ユニットに応用可能な図４に図示した一般的段階の実施を図示したものである。図８から図１４も１つ以上のデータ項目に対して並列に演算可能な処理ユニットに同様に応用可能な図４に図示した一般的段階の実施を図示したものである。図示した実施は並列に演算するこのような多数の処理ユニットを使用しこれらの間の桁接続回路を設けまたは設けずに実施することが出来る。
【００５０】
図６および図７は画像処理において要素データ項目からマスクオペランドを取得するような図４に関連して説明した一般的動作の２種類の実施例を示す。図６ではフラグビットのオペランドをシフトしまたＯＲ（論理和）演算することによってどのようにマスクオペランドが得られるかを示す。図７は最下位ビットの桁にあるフラグビットのオペランドに対して算術演算を行なうことによりどのようにマスクオペランドが得られるかを示している。
【００５１】
図６のオペランド１３０はそれぞれが要素の最上位ビット桁に隣接するフラグビット１３２と１３４を生成した演算から得られる。フラグビット１３２は部分行列１３６内の要素が要素の第１の部分集合内にあることを表わしており、フラグビット１３４は部分病裂１３８内の要素が第２の部分集合内にあることを表わしている。
【００５２】
オペランド１３０はフラグ選択オペランド１４０とＡＮＤ演算（論理積）される。フラグ選択オペランド１４０はフラグビット桁１４２および１４４でオンの値またフラグビットを含まないすべての桁でオフの値を有する。つまりフラグビット・オペランド１５０はフラグビット値１５２および１５４とフラグビットを含まない桁では「０」を有することになる。
【００５３】
シフトしたフラグビット・オペランド１６０と１７０はフラグビット・オペランド１５０の右方向へのシフトから得られ、フラグビット値１６２および１６４は右方向に１ビットシフトされておりまたフラグビット値１７２および１７４は右向きに２ビットシフトされている。つまりオペランド１５０、１６０、１７０に対する論理和演算でマスクオペランド１８０が得られる。
【００５４】
マスクデータ項目１８２はフラグビット１３２と要素１３６のビット桁に均一に値「１」を含む。マスクデータ項目１８４はフラグビット１３４と要素１３８のビット桁に均一に値「０」を含む。
【００５５】
図６の論理和演算は段階的に直前の結果とそれぞれのシフト演算から得られたシフトしたフラグビット・オペランドと論理和演算を行ない次の結果を生成するように実行することが可能である。
【００５６】
図６の技術を変更してＡＮＤ（論理積）演算を用いることが可能である。フラグビット以外のビットはフラグビット・オペランド内で値「１」から開始してこれを可能にすることが出来る。
【００５７】
図６の技術は要素の端部でまたはこれに隣接してのどちらかにフラグビットを有して開始できる。それぞれの要素が隣接するバッファビットを有する場合、フラグビットはバッファビット内で始まりこれもバッファビットを含むマスクデータ項目を取得することが可能である。ただしフラグビットが要素の最下位ビットにある場合には、図７の技術がより効率的であろう。
【００５８】
フラグビット・オペランド２００はフラグビット２０２と２０４を含む。フラグビット２０２は要素２０６の最下位ビットであり、一方フラグビット２０４は要素２０８の最下位ビットである。
【００５９】
フラグビット・オペランド２００は各種の方法で取得できる。要素が奇数と偶数に分割されている場合、フラグビット・オペランド２００は単純に図６のオペランド１４０と類似のオペランドと論理和演算を行ないフラグビットを選択することにより取得することが可能である。フラグビットが最初にどこかほかに位置してる場合、これをどちらの順序でも選択およびシフトしてフラグビット・オペランド２００を得ることが出来る。フラグビットが要素の最上位ビットでまたはこれに隣接して始まる場合、図５に図示したようなＫビットのシフト回路を用いてこれを最下位ビットへより迅速に移動することが出来る。
【００６０】
フラグビット・オペランド２００をそれぞれのデータ項目が最上位ビットで「０」の値またその他のすべてのビットで「１」の値を有するような定数オペランド２１０へ加算する。定数データ項目２１２をデータ項目２０６へ加算しまた定数データ項目２１４をデータ項目２０８へ加算する。
【００６１】
さもなくばフラグビット２００をそれぞれのデータ項目が最上位ビットで「１」の値またその他のすべてのビットで「０」の値を有するような定数オペランド２１０から減算してもよい。フラグビット・オペランド２００はそれぞれの部分行列の最上位ビットの桁で「０」を有しており、部分行列間で借り信号は伝達されないことになる。
【００６２】
マスクオペランド２２０は最上位ビットにフラグビット値２２６および２２８を有しその他のすべてのビットで対向する値を有するマスクデータ項目２２２および２２４を含む。マスクオペランド２２０は最上位ビットが使用中に影響を受けないバッファビットである場合には直接使用することが出来る。または最上位ビットには論理積または論理和演算によってすべて均一な値を与えておいてもよい。またはＸＯＲ（排他的論理和）演算により最上位ビットを反転させるかまたはその他のすべてのビットを反転させるかのいずれかを実行することも出来る。
【００６３】
図７の技術はフラグビット・オペランド２００が効率的に得られる場合は図６の技術よりも効率的であり得る。マスクオペランド２２０を得るためにはただ１つの算術演算だけしか必要としない。
【００６４】
図８から図１４ではマスクオペランドを用いて画像処理演算を実行するような図３に関連して説明した一般的動作の実施を図示している。図８は演算を実行する要素データ項目を選択するためにどのようにマスクオペランドを使用できるかを示す。図９はマスクオペランドとその反転を用いて２つの結果がどのように得られるかを示す。図１０は極大または極小要素をそれぞれの桁で得るためにマスクオペランドをどのように使用できるかを示す。図１１はマスクオペランドを使用する乗算を示す。図１２および図１３はマスクオペランドを用いる除算を示す。図１４はマスクオペランドを用いる閾値旋回を示す。
【００６５】
図８において、囲み２４０の動作はそれぞれの要素データ項目を処理桁のそれぞれの部分行列に提供する。たとえば、この動作は要素を直接読み込む入力演算または入力データを用いて部分行列内の要素を取得するような一連の画像処理演算で有り得る。
【００６６】
囲み２４２の動作ではそれぞれの要素データ項目を用いてマスクデータ項目を得ている。一般にこの動作は、要素が第１の部分集合または第２の部分集合内に存在することを示す１ビットたとえばフラグビットを取得することによって行なう。たとえば、フラグビットは要素が定数に等しいか、閾値より大きいか、または値の範囲内にあるかを示すことが出来る。
【００６７】
フラグビットを用いて図６および図７に関連して上述したようにマスクデータ項目を取得することが出来る。それぞれのマスクデータ項目はこれのすべてのビットにおいて均一にオフまたはオンである。
【００６８】
囲み２４４の動作では、図１の論理積演算で示したように、それぞれの要素をこれのマスクデータ項目と論理積または論理和演算している。論理積をとる場合、この動作はマスクデータ項目がオンであれば要素と同じ値を取得するが、マスクデータ項目がオフであればすべてのビットで値「０」を生成する。論理和をとる場合、この動作はマスクデータ項目がオフであれば要素と同じ値を取得するが、マスクデータ項目がオンであればすべてのビットで値「０」を生成する。
【００６９】
囲み２４６の動作では、囲み２４４からの結果データ項目に演算を行なっている。このような演算の幾つかの例を以降の図９から図１４に図示した。
【００７０】
図９において、複合オペランド２５０は値「１０」を図１の複合オペランドのそれぞれの要素に加算することによって得ている。要素間の桁上げ信号は阻止されている。要素２５２は値「０１」を有し、要素２５４は値「００」、また要素２５６は値「１１」を有している。
【００７１】
マスクオペランド２６０は図１のマスクオペランド２０の反転で、マスクデータ項目２６２、２６４、２６６はそれぞれマスクデータ項目２２、２４、２６から反転したものである。その結果、マスクオペランド２６０および２０は補数の関係にある。
【００７２】
複合オペランド２５０およびマスクオペランド２６０を論理積演算して結果データ項目２７２、２７４、２７６を有する結果２７０が得られる。マスクデータ項目２６２と２６６がオンであるため、データ項目２７２は値「０１」を有しまたデータ項目２７６は値「１１」を有している。
【００７３】
結果２７０を図１からの結果３０と論理和演算して併合した結果２８０が得られる。データ項目２８２はデータ項目２７２の値を、データ項目２８４は値を、データ項目２８６はデータ項目２７６の値を有している。つまり、併合結果２８０は複合オペランド１０において値「１０」を値「１０」と等しくない要素に加算した版である。
【００７４】
よって図９は演算を実行する要素データ項目を選択するためにどのようにマスクオペランドを使用できるかを示している。図９ではまた併合可能な２つの結果を得るためにどのようにマスクオペランドとその反転を使用できるかを示している。図１０ではこの使用法の別の実施例を示す。
【００７５】
囲み２９０の動作は第１と第２の複合オペランドを提供しており、それぞれの部分行列がそれぞれの複合オペランドから１つづつ一対の要素を受信する。
【００７６】
囲み２９２の動作はそれぞれ第１の要素をそれぞれ第２の要素から減算し、要素間の借り信号を阻止する。
【００７７】
囲み２９４の動作は符号フラグビットを用いてマスクオペランドを得ている。マスクオペランドは第１のオペランドが第２のオペランドより大きい部分行列ではオンまたそれ以外ではオフになっている。
【００７８】
囲み２９６の動作はマスクオペランドと２つの複合オペランドの一方との論理積をとって１つの結果を生成しまた反転マスクオペランドとその他の複合オペランドの論理積をとって別の結果を得ている。マスクが第１のオペランドとまた反転マスクが第２のオペランドと論理積演算される場合、それぞれの結果は極大を含む。マスクが第２のオペランドとまた反転マスクが第１のオペランドと論理積演算される場合には、それぞれの結果は極小を含む。
【００７９】
囲み２９８の動作は囲み２９６からの結果を論理和して併合結果を得ている。併合結果はすべての部分行列内に最大値またはすべての部分行列内に最小値を含み、囲み２９６の動作がどのように実行されたかで変化する。
【００８０】
図１０の技術は囲み２９６で論理和また囲み２９８で論理積をとることにより変更してもよい。これにより複合オペランドが囲み２９６で切り換えられた場合にも同じ結果が得られる。
【００８１】
図１１は乗算を実行するためにどのようにマスクオペランドを使用できるかを示している。囲み３００の動作はそれぞれが複数の多ビット要素データ項目を有する乗数と被乗数の２つの複合オペランドを提供する。さらに、囲み３００の動作ではそれぞれのビット位置に「０」を有する積ベクトルを得ている。
【００８２】
囲み３１０の動作は乗数要素のそれぞれのビットを取り扱うまで反復するループを開始する。言い換えれば、すべての乗算要素がＫビットを有するなら、Ｋ回反復が行なわれる。
【００８３】
囲み３１２の動作はそれぞれの乗算要素の現在のビット桁における値をフラグビットとして用いてマスクオペランドを得ている。現在のビット桁は最上位ビットまたは最下位ビットのいずれかであり得る。囲み３１２の動作は図６および図７に関連して上述したようにマスクを得ることが出来る。
【００８４】
囲み３１４の動作は囲み３１２からのマスクを被乗数と論理積する。つまり、乗数要素が現在のビット桁に「１」を有する場合、位置揃えした被乗数要素の値が保存されるが、乗数要素が「０」を有する場合には結果データ項目はすべて「０」を有することになる。
【００８５】
囲み３１６の動作は囲み３１４からの結果データ項目を積ベクトルに加算する。次に、囲み３１８の動作は積ベクトルと乗数を１ビットシフトして次の反復に備える。現在の桁が最上位ビットならシフトは左向きに行なうことが出来、最下位ビットでは右向きである。
【００８６】
乗数要素のすべてのＫビットの桁を扱った時点で、囲み３２０の動作は積を提供する。この動作は積データ項目を適切に位置付けるのに必要なすべてのシフト動作、たとえば囲み３１８のＫビットの右向きシフトの後でＫビットの左へのシフトなどを含むことが出来る。
【００８７】
囲み３１６および３１８の動作をあわせてＫビットを越えて延在する積を生成することが出来る。たとえば、乗数要素と位置揃えした被乗数要素両方の値が（２Ｋ  −１）に等しい場合、積は（２２Ｋ−２（Ｋ＋１）  ＋１）で、Ｋ＞２において２Ｋビットを必要とする。つまり、図９の動作は要素間信号が無効な結果を導かないような方法で実行する必要がある。
【００８８】
有効な結果を保証する１つの方法は乗数と被乗数要素両方を拡散し、隣接する要素がＫビットだけ離れるようにすることである。囲み３００の動作は拡散演算を実行することが出来る。左向きのシフトが囲み３１８で実行される場合、拡散演算ではそれぞれの要素の最上位ビットに隣接するＫ個の「０」ビットを加算でき、右向きのシフトが実行される場合には、拡散演算は最下位ビットに隣接するＫ個の「０」ビットを加算できる。
【００８９】
有効な結果を保証する別の方法は乗数、被乗数、積のそれぞれの要素データ項目に隣接してバッファビットを含めることである。この方法では多くの要素に対して並列演算が可能であるが、単精度の乗算結果が生成される。これはそれぞれの積データ項目がＫビットしか含んでいないためである。バッファビットは囲み３００の動作で含めることが出来、乗数および積では囲み３１０で始まるループのそれぞれの反復の前または後に消去することが出来る。
【００９０】
それぞれ倍精度の結果の下側半分を得るためには、囲み３１２の動作で最上位ビットからマスクデータ項目を取得し、囲み３１８の動作では左にシフトしてよい。マスクの取得でさらに大きい効率のためには、囲み３００の動作は乗数を右向きに（Ｋ−１）ビットあらかじめシフトしておき、最下位ビットの桁に最上位ビットを配置すれば、前述の図７に図示した技術を用いることが出来る。
【００９１】
それぞれ倍精度の結果の上側半分を得るためには、囲み３１２の結果で最下位ビットからマスクデータ項目を取得し、囲み３１８の動作は右向きにシフトしてよい。
【００９２】
図１２では除算を実行するためにマスクオペランドをどのように使用できるかを示している。囲み３４０の動作はそれぞれが複数の多ビット要素データ項目を含む除数と被除数の２つの複合オペランドを提供する。除数と被乗数は両方ともそれぞれのよその最上位ビットに隣接してバッファビットを有し、バッファビットは値「０」で始まっている。さらに、囲み３４０の動作でそれぞれのビット桁が「０」の商ベクトルを得ている。
【００９３】
囲み３５０の動作は被乗数のそれぞれのビットを取り扱うまで反復するループを開始する。それぞれの反復では現在被除数の最上位ビットとなっているビットを取り扱う。
【００９４】
囲み３５２の動作はすべての被除数バッファビットを値「１」に設定した後で被除数から除数を減算することから始まる。除数要素が被除数要素より大きい場合、減算により差分と、隣接するバッファビットを値「０」に変更して符号フラグビットを提供する借りビットが生成される。
【００９５】
囲み３５４の動作は囲み３５２からの結果とバッファビットの各桁がオンでそれ以外はオフのバッファビット選択オペランドと論理積を行ない、フラグビット・オペランドを得ている。囲み３５４の動作はまたフラグビット・オペランドと商の論理和によって商を更新している。
【００９６】
囲み３５６の動作ではフラグビット・オペランドを反転し、図６および図７に関連して上述したような技術であるがバッファビットの各桁をオフとしてある技術を用い、反転したフラグビット・オペランドを使ってマスクオペランドを得ている。囲み３５６の動作では次にマスクオペランドと除数を論理積し、負の差分データ項目を導くようなそれぞれの除数要素を選択する。
【００９７】
囲み３５８の動作は次に囲み３５６からの選択した除数を囲み３５２からの差分に加算して次の被除数を得ている。加算する前に、差分のバッファビットには論理積演算により値「０」が与えられる。したがって差分が負のところでは除数がまた加算されて正の値が保持される。
【００９８】
囲み３６０の動作では、次の被除数と商をシフトする。囲み３６０の動作はまた論理積演算を行ないシフトした次の被除数のすべてのバッファビットに値「０」を与えている。
【００９９】
被除数のすべてのビット桁を取り扱った時点で、囲み３７０の動作は商を提供する。商はこれが提供される前に、囲み３６０で左向きにＫシフトした後にＫだけ右シフトするなど、適切にシフトされる。
【０１００】
図１２の動作は特別な条件では変更することが出来る。たとえば、除数要素が被除数要素より大幅に小さい値を必ず有している場合、除数を左向きに適切なビット数だけシフトして開始することによりさらに有意義な商データ項目を得ることが出来る。一般に、シフトした商は少なくとも被除数のそれの半分の値を有する。
【０１０１】
図１２は復元除算を図示している。非復元除算は従来の非復元被除数アルゴリズムを変更することで実行させることが出来る。従来のアルゴリズムで極性にしたがって分岐する場合に、マスクオペランドを生成できる。マスクとその反転を用いれば正または負のいずれかの除数要素の版がそれぞれの部分行列内で選択可能である。商は直前の結果が正の場合にはバッファビットのベクトルを加算することでまた直前の結果が負の場合には反転したバッファビットのベクトルを減算することで得られ、ここでもマスクとその反転が使用される。
【０１０２】
乗算同様に、除算も被除数および除数要素とは異なる長さの結果データ項目を得ることが出来る。すべての被除数がＫビットの要素を有しかつすべての除数が（Ｋ／２）ビットの要素を有する場合、（Ｋ／２）ビットの商が得られる。これによって結果で不要なビット桁を排除するように部分抽出または減少することが出来る。
【０１０３】
図１３は任意のＫビットの値の除算を実行可能な動作を表わしている。囲み４００の動作は除数と被除数を提供し図１０の囲み３４０のように商を初期化する。囲み４００の動作はまた指数ｉを０に初期化する。
【０１０４】
囲み４１０の動作は３つのループの第１を開始する。第１のループはｉのそれぞれの値について第１のマスクオペランドが得られるまで反復する。第２のループは第１のマスクオペランドを用いてｉのそれぞれの値について第２のマスクオペランドが得られるまで反復する。第３のループは第２のマスクオペランドを用いて商ビットを得るように部分行列を選択する。
【０１０５】
第１のループの囲み４１２の動作はそれぞれの除数要素の最下位ビットをフラグビットとして用いてマスクＭｉ  を得ている。要素の最下位ビットからマスクを迅速に取得するための技術については図７に関連して前述したとおりである。
【０１０６】
囲み４１４の動作では除数を右方向にシフトしまたｉを１つ増加させて第１のループを終わる。その結果、第１のループではＭ０  からＭ（Ｋ−１）  までのＫ個のマスクが生成される。
【０１０７】
囲み４１６の動作では第２のループを準備する。マスクＭ（Ｋ−１）  はＫ個の変更したマスクの１つの変更マスクＭＡ（Ｋ−１）  として扱われる。指数ｉはまた０から始まる。囲み４２０の動作は第２のループの（Ｋ−１）回の反復を開始する。
【０１０８】
第２のループは囲み４２２の動作で実行される。変更マスクＭＡ（Ｋ−２−ｉ）  がマスクＭ（Ｋ−１−ｉ）  とＭ（Ｋ−２−ｉ）  の論理和により得られる。指数ｉを１つ増加する。第２のループではＫ個のマスクＭＡ０  からＭＡ（Ｋ−１）  が生成される。すべての除数要素について最上位ビットがビットｉにある場合、マスクＭＡｉ＋１  からＭＡ（Ｋ−１）  はすべて「０」でマスクＭＡ０  からＭＡｉ  はすべて「１」となる。
【０１０９】
囲み４２４の動作はそれぞれのマスクＭＡｉ  を左向きにｉビットだけシフトし、シフトした除数要素が相互に影響しあわないようにこれを位置合わせして除算の準備を行なう。囲み４２４の動作ではまた除数をこれの元の桁まで左向きにＫビットだけシフトしｉを０に戻す。
【０１１０】
囲み４３０の動作は第３のループのＫ回の反復を開始する。それぞれの反復で復元または非復元除算のいずれかにより、それぞれの要素について１つの商ビットが得られる。
【０１１１】
第３のループにおける囲み４３２の動作では現在の除数要素とＭＡｉ  の論理積をとり除数要素を選択する。囲み４３４の動作では選択した除数要素と被除数を用いて次の商ビットを取得し、被除数を更新する。
【０１１２】
囲み４３６の動作では商とマスクＭＡｉ  の論理積をとり選択していない部分行列内のすべての商ビットを０にする。この動作により除数要素の最上位の０ではないビットが被除数の最上位ビットと位置が揃うまで除数要素に対して演算が実行されないことになる。
【０１１３】
囲み４３８の動作では除数を右向きにシフトし商を左向きにシフトし、ｉを１つ増加させて次の反復の準備を行なう。さらに、囲み４３８の動作では除数のバッファビットを消去することが出来る。
【０１１４】
第３のループのＫ回の反復の後、囲み４４０の動作で適宜シフトした商を提供する。
【０１１５】
図１３の技術は複雑な条件付き作業が条件分岐を実行するためにマスクオペランドを用いて実施できることを示している。
【０１１６】
図１４は閾値旋回を表わす。閾値旋回では１ビットのデータ項目を受信して１ビットのデータ項目を生成するが、中間の演算では多ビットデータ項目を使用する。閾値旋回において、構成素子は目的の桁に対して定義された桁を有する整数重みの行列である。構成素子は供給源ビットマップ内に配置されており、ビットマップ内の桁と同じ桁にある整数重みを加算して、和を閾値と比較する。閾値を越えている場合には宛先の桁は１となり、それ以外では０となる。
【０１１７】
図１４において、供給源と宛先のデータ項目は例として画素値で表わしているが、図示した実施はその他のデータ項目のアレイに応用できるものである。囲み４６０の動作では供給源の画素を拡散してマスクデータ項目を含み構成素子のそれぞれの整数重みと同じビット数を有するマスクを得ている。囲み４６２における動作では囲み４６０からのマスクを用いて値「１」を有する供給源画素に対する重みを選択する。構成素子のそれぞれの桁について和を得るために選択した重みを加算する。
【０１１８】
囲み４６４の動作は和を閾値と比較して宛先画素の値を表わす符号フラグビットを取得する。囲み４６６の動作は囲み４６４からの結果を部分抽出して宛先画素だけを選択する。
【０１１９】
図１４の技術はすべての構成素子の桁についての和を保持している。本技術はまた重みに対してマスクを位置付けるために広範囲のシフトを必要とする。完了時に和を提供し、和が提供された後に完了した和で占有されていたメモリを開放し、またより少ないシフト演算を実行する方法を発見することで、このような非効率を減少させることが可能となり得る。
【０１２０】
閾値旋回はマスクを用いることなく実行することも出来る。たとえば、一連の供給源ビットを用いて参照テーブルにアクセスし、幾つかの宛先桁についての和を取得し、また宛先ビットを生成するために和を取得して使用することが出来る。
【０１２１】
上述の実施例はマスクオペランドの多数の使用方法の幾つかを図示したものである。一般に、多くの演算は従来においてここのデータ項目について条件分岐を実施する直列処理装置を用いて実施されているようなデータ駆動型分岐を含むものである。
【０１２２】
直列演算が幾つかの分岐に関連するが広範囲な分岐には関係しない場合、充分に効率的な並列演算に変換することが可能である。並列演算はたとえばＳＭＩＤ装置上で実施することが可能である。
【０１２３】
直列演算から並列演算へ変換するための１つの基準は２進分岐に関係がある。分岐で理想的な処理装置に部分演算Ａまたは部分演算Ｂのいずれかをデータ項目の値にしたがって実行させるような場合には部分演算ＡまたはＢがこれについて実行すべきかを表わすそれぞれの要素データ項目についてのフラグビットを取得し、このフラグビットを用いてマスクオペランドを取得し、部分演算ＡおよびＢの両方を並列にすべての要素について実行し、Ａの結果とマスクオペランドとの論理積を行ない、Ｂの結果とマスクオペランドの反転との論理積をとり、また論理積をとった結果の論理和によって併合結果を得る。
【０１２４】
別の基準はデータ項目で示される回数にわたって反復する演算に関係する。最悪の場合では必要な回数だけ演算を実行するが、マスクを用いて図１３に図示したようにそれぞれの要素についての計算を制御する。たとえば、ある程度の反復回数が残るまで結果が保存されないようにマスクを用いることが可能である。またはある程度の反復回数の後で結果が更新されないようにマスクを用いることが可能である。
【０１２５】
上述の一般的実施の特徴は広範なデータ処理用途に使用可能である。しかしある種の画像処理においてはそれぞれの要素データ項目について順次実行するよりも迅速に実行しうることで特に有用であると推測される。特に、上述の特徴をセラ（Ｓｅｒｒａ，  Ｊ．  ）の「画像分析と数学的変換（Ｉｍａｇｅ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｍａｔｈｅｍａｔｉｃａｌ  Ｍｏｒｐｈｏｌｏｇｙ）」、アカデミックプレス刊、１９８２年、およびセラ（Ｓｅｒｒａ，  Ｊ．  ）の「画像分析と数学的変換第２巻：理論的な進歩（Ｉｍａｇｅ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｍａｔｈｅｍａｔｉｃａｌ  Ｍｏｒｐｈｏｌｏｇｙ，  Ｖｏｌｕｍｅ  ２：    Ｔｈｅｏｒｅｔｉｃａｌ  Ａｄｖａｎｃｅｓ  ）」、アカデミックプレス刊、１９８８年、に解説されているのと同様の技術を実施するために使用することが出来る。このような技術はたとえば雑音の除去またはその他の情報を含まない特徴の除去、歪曲補正、データ符号化、自動フォーム作成または制御シート作成のための部分の抽出、印刷装置特有の補正などの文書サービスを提供するために使用することが出来る。このような文書サービスは、ファクシミリ装置および複写装置を含むデジタル複写装置において、印刷装置またはその他の画像出力装置用の画像を定義するデータを生成する装置において、スキャナまたはその他の画像入力装置から受信した画像を定義するデータについて演算するまた画像処理を行なうその他の装置において、使用することが出来る。
【０１２６】
上述の一般的実施の特徴はまた、各種のその他の用途において、たとえば特定の特徴の組み合わせを含む画像について画像データベースの検索や、封筒の住所の走査、高速スキャナからのフォームの解釈、人工視覚、および処理に特有の印刷画像の補正および確認などにおいても有用であろう。
【０１２７】
本発明は各種のその他の画像処理演算、たとえば画素の計数、グレースケールの形態変更、グレースケールの回転、エラー分散画像の生成および歪曲検出などを実行するために応用することも可能である。
【０１２８】
本発明は画像に関連しないデータに使用することも可能である。本発明はたとえば有限微分解析または物理現象のシミュレーションを実行するために使用することが出来る。
【０１２９】
本発明はマスクオペランドが選択すべき要素データ項目とオンビットの位置が揃っておりそれ以外ではオフビットを有するような、また要素を選択するために論理積演算がマスクオペランドと複合オペランドに対して実行されるような実施に関連して説明した。本発明はまた選択すべき要素データ項目とオフビットの位置が揃っておりそれ以外ではオンビットを有するようなマスクオペランドを用いて、要素を選択するためにマスクオペランドと複合オペランドに対して論理和演算を実行することにより実施することも可能である。
【０１３０】
本発明はフラグビットが要素データ項目に隣接して得られるような実施に関連して説明した。本発明はまたフラグビットが何らかのほかの位置で得られこれから要素に対して伝播し得るような、たとえば要素内の桁などで実施することも可能である。
【０１３１】
本発明はフラグビットを用いてマスクオペランドを直接に取得するような実施に関連して説明した。本発明はまたフラグビットを反転させるかまたはこれを用いてマスクオペランドを取得する前に何らかの変更を加えるような方法で実施することが出来る。たとえば、他のビットの影響を与えることなくすべてのフラグビットを排他的論理和演算で反転させることが可能である。
【０１３２】
本発明はフラグビット・オペランドをシフトまたは論理和演算することによりまたはフラグビット・オペランドと定数オペランドに対して並列に算術演算を実行することにより、フラグビットを用いてマスクオペランドを取得するような実施に関連して説明した。本発明はまたフラグビットを用いてマスクオペランドを取得するための他の技術により実施してもよい。
【０１３３】
本発明は加算および減算を用いてフラグビットを取得する実施に関連して説明した。その他の算術演算を用いてフラグビットを取得することも可能である。
【０１３４】
本発明は画像に関するデータに対して演算を行なう実施に関連して説明したが、画像に関連しないデータに対して演算を行なうために実施することも可能である。
【０１３５】
本発明は従来のマイクロプロセッサを用いる実施に関連して説明したが、本発明はまた縮小命令セット計算機（ＲＩＳＣ）チップまたはメインフレーム・コンピュータ、ミニコンピュータ、スーパーコンピュータ、または何らかのその他の計算装置を含むその他の何らかの処理装置により実施することが可能である。
【０１３６】
本発明は処理装置とメモリを含むシステムにおいて使用するための、メモリからのデータに対して演算を実行するために処理装置が実行できる命令を表わすデータを含むようなソフトウェア製品に関連して説明した。システムのメモリは当然のことながらシステム内で使用する際にソフトウェア製品を含み、命令ならびにデータは一般に処理装置からアクセス可能な何らかのメモリ装置内に任意に保存することが出来る。たとえば、本発明はソフトウェア製品内にではなくメモリ内に保存された命令を表わすデータを用いて容易に実施することが可能である。
【０１３７】
本発明は単純な構造の複合オペランドに関連して説明した。上述の実施例において、全ての要素データ項目はおなじ長さであり複合オペランド内部の要素は相互に関連していなくとも良い。本発明は処理装置の幅の制約内で、さらなる構造を有する複合オペランドで実施することも可能である。たとえば、複合オペランドは、他のオペランドがおなじ位置にある同じ幅の要素と位置が揃っているならば、異なる幅の要素データ項目を含んでいてもよい。また、要素データ項目は２つまたはそれ以上のグループに構成され、それぞれのグループの要素が関連していてもよい。それぞれのグループの要素が同じ画素に関連している場合、それぞれの要素はそれぞれの閾値減少のための値を保持することが可能である。より一般的には、それぞれのグループ内の要素が物理的シミュレーション空間内の同じ位置に関連している場合、１つの要素がその位置での値を保持しまた別の位置がその位置での導関数を保持することが可能である。
【図面の簡単な説明】
【図１】それぞれの画素に関連する多ビット要素データ項目を含む複合オペランドからのマスクオペランドと部分オペランドを取得するためにマスクオペランドと複合オペランドを用いる演算の積を表わす概略流れ図である。
【図２】ソフトウェア製品からの命令を処理装置が実行してマスクオペランドを取得または使用するようなシステムの部材を表わす概略ブロック図である。
【図３】処理装置が複合オペランドを含むマスクオペランドを使用することの出来る動作を表わす流れ図である。
【図４】処理装置が複合オペランドを用いてマスクオペランドを取得できるような動作を表わす流れ図である。
【図５】図４のマスクオペランドを取得する際に使用することの出来るＫビットのシフト回路を表わす概略回路図である。
【図６】図４の動作の実施例でマスクオペランドをどのように取得し得るかを表わす概略流れ図である。
【図７】図４の動作の別の実施例でマスクオペランドをどのように取得し得るかを表わす概略流れ図である。
【図８】図３の動作の実施例で後続の演算のために要素を選択するのにマスクオペランドを使用する動作を表わす流れ図である。
【図９】マスクオペランドとその反転を用いて複合オペランドをどのように併合するかを表わす概略流れ図で要素の選択のために図８の動作と類似の動作を用いている。
【図１０】２つの複合オペランドの極大または極小の対を取得するためにマスクオペランドを使用する際の動作を示す流れ図で、それぞれの対の極大または極小を選択するために図８と類似した動作を用いている。
【図１１】図３の動作の別の実施例で、並列的に乗算を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【図１２】図３の動作の別の実施例で、並列的に復元除算を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【図１３】図３の動作の別の実施例で、除算を実行するためにマスクオペランドを使用する際の動作を示す別の流れ図である。
【図１４】図３の動作の別の実施例で、閾値旋回を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【符号の説明】
１０    複合オペランド、１２，１４，１６    要素データ項目、２０    マスクオペランド、２２，２４，２６    ビット桁、３０    結果、３２，３４，３６    結果データ項目、６０    ソフトウェア、６２    データ保存媒体、６４    保存媒体アクセス装置、６６    処理装置、７０    入力回路、７２    出力装置、８０    マスク取得命令、８２    命令、８４    メモリ、９０    処理回路、９２    処理桁、１１０    処理装置、１２０    処理回路、１２６    シフト回路、１２８    制御回路、１３０オペランド、１３２，１３４    フラグビット、１３６，１３８    要素、１４０フラグ選択オペランド、１４２，１４４    フラグビット桁、１５０，１６０    フラグビット・オペランド、１６６    Ｋビットシフト回路、１７０    フラグビット・オペランド、１８０    マスクオペランド、１８２，１８４    マスクデータ項目、２００    フラグビット・オペランド、２０２，２０４    フラグビット、２０６要素データ項目、２０８    要素、２１０    定数オペランド、２１２，２１４定数データ項目、２２０    マスクオペランド、２２２，２２４    マスクデータ項目、２２６，２２８    フラグビット値、２５０    複合オペランド、２５２    要素、２６０    マスクオペランド、２６２，２６４，２６６    マスクデータ項目、２７０    結果、２７２，２７４，２７６    結果データ項目、２８０    併合結果
【図１】
0003584053.tif 000002
【図２】
0003584053.tif 000003
【図３】
0003584053.tif 000004
【図４】
0003584053.tif 000005
【図５】
0003584053.tif 000006
【図６】
0003584053.tif 000007
【図７】
0003584053.tif 000008
【図８】
0003584053.tif 000009
【図９】
0003584053.tif 000010
【図１０】
0003584053.tif 000011
【図１１】
0003584053.tif 000012
【図１２】
0003584053.tif 000013
【図１３】
0003584053.tif 000014
【図１４】
0003584053.tif 000015