JP3584053B2 - 複合オペランド内の多ビット要素を選択するためのマスク - Google Patents
複合オペランド内の多ビット要素を選択するためのマスク Download PDFInfo
- Publication number
- JP3584053B2 JP3584053B2 JP31778593A JP31778593A JP3584053B2 JP 3584053 B2 JP3584053 B2 JP 3584053B2 JP 31778593 A JP31778593 A JP 31778593A JP 31778593 A JP31778593 A JP 31778593A JP 3584053 B2 JP3584053 B2 JP 3584053B2
- Authority
- JP
- Japan
- Prior art keywords
- mask
- operand
- bit
- data item
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 150000001875 compounds Chemical class 0.000 title description 16
- 238000012545 processing Methods 0.000 claims description 87
- 239000002131 composite material Substances 0.000 claims description 43
- 238000000034 method Methods 0.000 claims description 36
- 239000011159 matrix material Substances 0.000 claims description 11
- 230000003213 activating effect Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 13
- 230000015654 memory Effects 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000010191 image analysis Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000007480 spreading Effects 0.000 description 2
- 241000277331 Salmonidae Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/764—Masking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Description
本発明は複数データ項目について選択的に演算を実行する技術に関する。
【0002】
従来技術の多くは複数データ項目に対して選択的に演算を実行している。その幾つかの例は、それぞれのデータ項目が画像内の画素に関連し得るような画像処理の分野にみられる。
【0003】
ブルームバーグ(Bloomberg )らの米国特許第5,048,109号(ブルームバーグ109号)では文書の反転表示部分を検出するための技術を開示している。その第4段59行から64行では原本画像内の注目している領域に対応する実質的にオン画素で詰まった領域を含む画像としてマスクが定義されている。図1aに関連して説明されているように、グレースケール・スキャナは画素当たり複数ビットを出力可能で、またグレースケールの走査は2進化して反転表示画像(HI)を生成できる。図1bに関連して説明されているように、反転表示になっていない領域から画素を除去しつつ反転表示領域はその全体を残すことによって、HIから反転表示領域(HR)マスクを生成できる。HRマスクは各種の方法に利用が可能である。
【0004】
画像処理におけるマスクを生成使用するためのその他の技術はブルームバーグの米国特許第5,065,437号およびブルームバーグらの米国特許第5,131,049号に開示されている。
【0005】
マホーニー(Mahoney )のヨーロッパ特許第460,970号では第1に選択演算を実行して類似した値でラベル付けした一組の画素を選択し、ついで選択した画素の組に処理を施す選択的処理技術を開示している。
【0006】
本発明では、グレースケールまたはカラー画素値などの多ビットデータ項目を処理する上での問題を取り扱う。
【0007】
多ビットデータ項目の演算は条件式であることが多い。基準に合致するデータ項目についてだけ演算を実行するが、その他のデータ項目には波及しない。つまり選択的にデータ項目に対して演算する必要があることが多い。
【0008】
従来技術をデータ項目に選択的演算を行なうために使用することが出来る。マスクを生成して前出のブルームバーグ109号に記載されているように使用することが可能である。選択的処理は前出のマホーニーが記載したように実行することが可能である。
【0009】
従来技術において、単一の処理装置(processor) は一度に1つの多ビットデータ項目についてのみ演算を行なえるのが普通である。これは処理装置がそれぞれの多ビットデータ項目の幅より2倍以上大きい場合には特に非効率的であるといえる。
【0010】
本発明の1つの態様は複数の多ビット要素データ項目を含む複合オペランド内部に存在する要素データ項目の部分集合に対して並列的に演算を行なうための技術の発見に基づくものである。本技術では、本明細書において「マスク・オペランド」と称する特別なオペランドを使用している。
【0011】
1つの技術では、マスクオペランドおよび複合オペランドに対して並列的に論理演算を実行して複合オペランドから要素の部分集合を含む結果オペランドを取得する。1つまたはそれ以上の演算を結果オペランドに対して並列的に実行することが出来る。たとえば、変更した結果データ項目を部分集合内のそれぞれの要素について取得することができ、また変更していない結果データ項目をその他の要素について取得することが出来る。
【0012】
別の技術ではマスクオペランドと、これの反転と、2つの複合オペランドに対して並列的に論理演算を実行して複合オペランドを併合する。この技術は複合オペランドを上述のようにして得た変更を加えた結果データ項目と併合するために実施することが出来る。結果オペランドは複合オペランドと等しいが、選択した要素に対して演算が実行された点で異なっている。本技術は位置の揃った要素のそれぞれの対の極大と極小を選択することによって2つの複合オペランドを併合するためにも使用することが可能である。
【0013】
ある種の目的のために、マスクオペランドをあらかじめ取得しておき、それ以降での使用のために保存することが可能である。しかし基準に合致する要素データ項目を合致しない要素から区別するマスクオペランドを取得することが必要となる場合が多い。たとえば、少なくとも閾値と同じだけ大きいまたは大きくない要素だけまたは定数と等しいまたは等しくない要素だけ、または範囲内に収まるまたは収まらない要素だけを選択することが望ましいことがある。このような状況では、マスクオペランドはこれが選択する要素が利用できない限り取得することが不可能である。
【0014】
本発明の別の態様はマスクオペランドが選択する要素を含む複合オペランドを用いてマスクオペランドを取得することが可能な技術の発見に基づくものである。これらの技術はマスクオペランドが区別できる要素に対して並列的に演算を実行することによりマスクオペランドを準備することを可能にしている。
【0015】
本発明の技術は多ビットデータ項目に対して効率的な演算を行なうことが出来るので有利である。幾つかの技術を使用して複数の多ビット要素データ項目を含む複合オペランドからマスクオペランドを取得し、分岐やその他の条件式演算を並列的に実行することが可能になっている。その他の技術はマスクオペランドおよび1つまたはそれ以上の複合オペランドを複数の多ビット要素データ項目とあわせて用い並列的に演算を実行する。このような技術を用いれば広範な演算を実施することが可能になる。
【0016】
図1はそれぞれの画素に関連する多ビット要素データ項目を含む複合オペランドからのマスクオペランドと部分オペランドを取得するためにマスクオペランドと複合オペランドを用いる演算の積を表わす概略流れ図である。
【0017】
図2はソフトウェア製品からの命令を処理装置が実行してマスクオペランドを取得または使用するようなシステムの部材を表わす概略ブロック図である。
【0018】
図3は処理装置が複合オペランドを含むマスクオペランドを使用することの出来る動作を表わす流れ図である。
【0019】
図4は処理装置が複合オペランドを用いてマスクオペランドを取得できるような動作を表わす流れ図である。
【0020】
図5は図4のマスクオペランドを取得する際に使用することの出来るKビットのシフト回路を表わす概略回路図である。
【0021】
図6は図4の動作の実施例でマスクオペランドをどのように取得し得るかを表わす概略流れ図である。
【0022】
図7は図4の動作の別の実施例でマスクオペランドをどのように取得し得るかを表わす概略流れ図である。
【0023】
図8は図3の動作の実施例で後続の演算のために要素を選択するのにマスクオペランドを使用する動作を表わす流れ図である。
【0024】
図9はマスクオペランドとその反転を用いて複合オペランドをどのように併合するかを表わす概略流れ図で要素の選択のために図8の動作と類似の動作を用いている。
【0025】
図10は2つの複合オペランドの極大または極小の対を取得するためにマスクオペランドを使用する際の動作を示す流れ図で、それぞれの対の極大または極小を選択するために図8と類似した動作を用いている。
【0026】
図11は図3の動作の別の実施例で、並列的に乗算を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【0027】
図12は図3の動作の別の実施例で、並列的に復元除算を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【0028】
図13は図3の動作の別の実施例で、除算を実行するためにマスクオペランドを使用する際の動作を示す別の流れ図である。
【0029】
図14は図3の動作の別の実施例で、閾値旋回を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【0030】
図1から図5は本発明の一般的特徴を図示したものである。図1では複合オペランドから要素データ項目を選択するために使用することの出来るマスクオペランドを取得するために複合オペランドをどのように使用することが出来るかを模式的に図示している。図2は図1と同様の技術によって処理装置が実行可能な命令を表わす命令データを有するソフトウェア製品を表わす。図3はマスクオペランドを使用する際の一般的動作を表わす。図4はマスクオペランドを取得する際の一般的動作を表わす。図5はマスクオペランドの取得で使用するためのKビットのシフト回路を含む処理装置の一般的部材を表わす。
【0031】
図1では、複合オペランド10はそれぞれが2ビットを含む要素データ項目12、14、16を含む。要素12は値「11」、要素14は値「10」、また要素16は値「01」を有する。
【0032】
マスクオペランド20は複合オペランド10から生成でき、「10」に等しい値を有する複合オペランド10内の要素だけを選択するという意味においてこれはフィルタである。つまり、マスクオペランドは要素12と位置の揃ったビット桁(bit position)22でオフとなり、要素14と位置の揃ったビット桁24でオンとなり、要素16と位置の揃ったビット桁26でオフとなる。
【0033】
複合オペランド10とマスクオペランド20がAND処理(論理積)されると、結果30は結果データ項目32、34、36を含むことになる。ビット桁22と26がオフなのでデータ項目32と36はそれぞれ論理積演算の結果として0のみを含むが、一方でデータ項目34はビット桁24がオンなので要素14からの値「10」を有している。
【0034】
図2はソフトウェア製品60を示し、これは図2に図示したのと同様な部材を含むシステム内で使用することが出来る製造物である。ソフトウェア製品60は保存媒体アクセス装置64からアクセス可能なデータ保存媒体62を含む。データ保存媒体62はたとえば1つまたはそれ以上のフロッピーディスクの組などの磁気媒体、1つまたはそれ以上のCD−ROMの組などの光学媒体、半導体メモリ、またはデータを保存するために適切な何らかのほかの媒体であってよい。
【0035】
データ保存媒体62は保存媒体アクセス装置64がたとえばマイクロプロセッサなどで有り得る処理装置66に提供可能なデータを保存する。処理装置66は入力回路70からデータを受信するために接続してある。データは何らかの適切な供給源、たとえばファクシミリ(ファックス)装置や、デジタル複写機のスキャナまたはコンピュータの入出力装置で有り得るようなスキャナ、キーボードとマウスまたはペン型または鉄筆型入力装置などのユーザ入力装置で制御するフォームエディタまたはその他の対話型画像エディタであり得るようなエディタ、またはデータ転送能力を有するローカルエリアネットワークまたはその他のネットワークであり得るようなネットワークなどから取得することが出来る。データは画像に関連したものであり得る。
【0036】
処理装置66はまた出力回路80へデータを提供するためにも接続してある。データはこのあとファクシミリ装置、印刷装置、表示装置、またはネットワークへ提供可能である。印刷装置はデジタル複写機の印刷装置またはコンピュータの入出力装置のことがある。
【0037】
データ保存媒体62に加えて、ソフトウェア製品60は保存媒体62に保存されるデータを含む。保存されたデータはマスク取得命令80およびマスク使用命令82を表わす命令データを含んでいる。処理装置66は命令80を実行して複合オペランド中の複数の要素データ項目のそれぞれについてマスクデータ項目を取得することが出来る。マスクデータ項目をあわせてマスクオペランドが構成される。処理装置66は命令82を実行して複合オペランドおよびマスクオペランドに対して論理演算を行ない、それぞれの要素の結果データ項目を得ることが出来る。要素のマスクデータ項目が第1の値を有する場合、結果データ項目は要素と同じ値を有することになる。要素のマスクデータ項目が第2の値を有する場合、結果データ項目はそのすべてのビットにおいて第1の値または第2の値のいずれかで均一な値を有することになる。
【0038】
処理装置66はメモリ84にアクセスすることにより演算を実行する要素データ項目を取得することが出来る。データのそれぞれの項目はたとえば画像の画素に関連し得るものである。データ項目はそれぞれ1ビット以上を含むことが出来る。保存媒体62に保存されたデータも、入力回路70から受信したデータ項目をメモリ84内に保存し、メモリ84から演算のためにデータ項目を取り込み、または出力回路72へ提供し、または演算により得られたデータ項目をメモリ84内に保存するため処理装置66が実行しうる命令を表わすデータを含むことが可能である。
【0039】
処理装置66は複数の処理桁(processing position) 92を含む処理回路90を含む。処理装置66はたとえば従来のマイクロプロセッサであってもよい。処理桁92のそれぞれは1ビットについての演算を実行することが出来る。処理回路90はアレイを構成させるように処理桁92を対にして接続する桁接続回路(position connecting circuitry) 94を含む。対の1つの処理桁からの信号は桁接続回路94によって別の処理ユニットへ転送することが可能である。
【0040】
演算を実行している複合オペランド中のそれぞれの要素データ項目は処理桁92のそれぞれの部分行列内に存在することが出来る。処理装置66はマスク取得命令80を実行してそれぞれの要素の部分行列内にマスクデータ項目を取得できる。処理装置は命令82を用いてマスクを実行し部分行列内のそれぞれの要素およびマスクデータ項目に対して論理演算を実行できる。
【0041】
図3はマスクオペランドを使用するために図2の処理回路90などの処理回路を有する処理装置を作動させる方法における一般的動作を示す。囲み100の動作は複合オペランドとマスクオペランドを処理回路90に提供するもので、それぞれの要素データ項目およびそれらのそれぞれのマスクデータ項目はそれぞれ処理桁92の部分行列に提供される。囲み102の動作では処理回路90を作動させて複合オペランドとマスクオペランドを用いた並列論理演算を実行してそれぞれの部分行列内に結果データ項目を取得している。
【0042】
図4も同様にマスクオペランドを使用するために図2の処理回路90などの処理回路を有する処理装置を作動させる方法における一般的動作を示す。囲み106の動作は処理回路90に複合オペランドを提供するもので、それぞれの要素が処理桁92のそれぞれの部分行列に提供される。囲み108の動作は処理回路90を作動させて複合オペランドに対して演算を実行し、それぞれの部分行列内にマスクデータ項目を取得する。マスクデータ項目をあわせてマスクオペランドが形成される。
【0043】
図5は図4の囲み108におけるマスクデータ項目を取得するために使用可能な特別回路を有する処理装置110を示している。図2の処理装置66は処理装置110の特徴を用いて実現してもよい。
【0044】
処理装置110はM個の処理桁122から124を有する処理回路120を含む。処理回路120はまたビットを単一サイクル中にK桁シフトさせるためのシフト回路126を含む。ここでM>Kである。制御回路128は処理回路120へまた特にKビットのシフト回路126に制御信号を供給する。
【0045】
制御信号は処理回路120に複合オペランドに対する演算を行なわせて、結果データ項目とそれぞれの要素についてのフラグビットを取得することが出来る。それぞれのフラグビットは処理桁122から124の要素の部分集合の最上位ビットに隣接する処理桁内に配置される。
【0046】
制御信号はまた処理回路120とKビットシフト回路126に結果データ項目とフラグビットを用いた演算を実行させ、フラグビットが部分集合の最下位ビット内に存在し部分集合内のその他のビットすべてはフラグビットと同一の値またはその反転と同一の値のいずれかを有するようなフラグビット・オペランドを取得することが出来る。そのため、Kビットのシフト回路126は隣接する最上位ビットから最下位ビットへのフラグビットの移動を迅速に行なえるような任意の性能拡張である。2つの桁の距離がKビットではない場合、追加の単一シフトをKビット分のシフトの前または後に行なうことが出来る。
【0047】
さらに、制御信号は処理回路120にフラグビット・オペランドを使用する並列算術演算を実行させてマスクオペランドを取得することが出来る。
【0048】
図1から図5を参照して上記で説明した一般的特徴は広範な部材を用いまた各種の演算を用い多様な方法で実施することが出来る。たとえば、上述の一般的特徴の幾つかは従来の処理装置を用いて実施可能であるが、その他の特徴は特別設計の処理装置を用いて実施できるものである。
【0049】
図6および図7は1つ以上のデータ項目に対して並列に演算可能な処理ユニットに応用可能な図4に図示した一般的段階の実施を図示したものである。図8から図14も1つ以上のデータ項目に対して並列に演算可能な処理ユニットに同様に応用可能な図4に図示した一般的段階の実施を図示したものである。図示した実施は並列に演算するこのような多数の処理ユニットを使用しこれらの間の桁接続回路を設けまたは設けずに実施することが出来る。
【0050】
図6および図7は画像処理において要素データ項目からマスクオペランドを取得するような図4に関連して説明した一般的動作の2種類の実施例を示す。図6ではフラグビットのオペランドをシフトしまたOR(論理和)演算することによってどのようにマスクオペランドが得られるかを示す。図7は最下位ビットの桁にあるフラグビットのオペランドに対して算術演算を行なうことによりどのようにマスクオペランドが得られるかを示している。
【0051】
図6のオペランド130はそれぞれが要素の最上位ビット桁に隣接するフラグビット132と134を生成した演算から得られる。フラグビット132は部分行列136内の要素が要素の第1の部分集合内にあることを表わしており、フラグビット134は部分病裂138内の要素が第2の部分集合内にあることを表わしている。
【0052】
オペランド130はフラグ選択オペランド140とAND演算(論理積)される。フラグ選択オペランド140はフラグビット桁142および144でオンの値またフラグビットを含まないすべての桁でオフの値を有する。つまりフラグビット・オペランド150はフラグビット値152および154とフラグビットを含まない桁では「0」を有することになる。
【0053】
シフトしたフラグビット・オペランド160と170はフラグビット・オペランド150の右方向へのシフトから得られ、フラグビット値162および164は右方向に1ビットシフトされておりまたフラグビット値172および174は右向きに2ビットシフトされている。つまりオペランド150、160、170に対する論理和演算でマスクオペランド180が得られる。
【0054】
マスクデータ項目182はフラグビット132と要素136のビット桁に均一に値「1」を含む。マスクデータ項目184はフラグビット134と要素138のビット桁に均一に値「0」を含む。
【0055】
図6の論理和演算は段階的に直前の結果とそれぞれのシフト演算から得られたシフトしたフラグビット・オペランドと論理和演算を行ない次の結果を生成するように実行することが可能である。
【0056】
図6の技術を変更してAND(論理積)演算を用いることが可能である。フラグビット以外のビットはフラグビット・オペランド内で値「1」から開始してこれを可能にすることが出来る。
【0057】
図6の技術は要素の端部でまたはこれに隣接してのどちらかにフラグビットを有して開始できる。それぞれの要素が隣接するバッファビットを有する場合、フラグビットはバッファビット内で始まりこれもバッファビットを含むマスクデータ項目を取得することが可能である。ただしフラグビットが要素の最下位ビットにある場合には、図7の技術がより効率的であろう。
【0058】
フラグビット・オペランド200はフラグビット202と204を含む。フラグビット202は要素206の最下位ビットであり、一方フラグビット204は要素208の最下位ビットである。
【0059】
フラグビット・オペランド200は各種の方法で取得できる。要素が奇数と偶数に分割されている場合、フラグビット・オペランド200は単純に図6のオペランド140と類似のオペランドと論理和演算を行ないフラグビットを選択することにより取得することが可能である。フラグビットが最初にどこかほかに位置してる場合、これをどちらの順序でも選択およびシフトしてフラグビット・オペランド200を得ることが出来る。フラグビットが要素の最上位ビットでまたはこれに隣接して始まる場合、図5に図示したようなKビットのシフト回路を用いてこれを最下位ビットへより迅速に移動することが出来る。
【0060】
フラグビット・オペランド200をそれぞれのデータ項目が最上位ビットで「0」の値またその他のすべてのビットで「1」の値を有するような定数オペランド210へ加算する。定数データ項目212をデータ項目206へ加算しまた定数データ項目214をデータ項目208へ加算する。
【0061】
さもなくばフラグビット200をそれぞれのデータ項目が最上位ビットで「1」の値またその他のすべてのビットで「0」の値を有するような定数オペランド210から減算してもよい。フラグビット・オペランド200はそれぞれの部分行列の最上位ビットの桁で「0」を有しており、部分行列間で借り信号は伝達されないことになる。
【0062】
マスクオペランド220は最上位ビットにフラグビット値226および228を有しその他のすべてのビットで対向する値を有するマスクデータ項目222および224を含む。マスクオペランド220は最上位ビットが使用中に影響を受けないバッファビットである場合には直接使用することが出来る。または最上位ビットには論理積または論理和演算によってすべて均一な値を与えておいてもよい。またはXOR(排他的論理和)演算により最上位ビットを反転させるかまたはその他のすべてのビットを反転させるかのいずれかを実行することも出来る。
【0063】
図7の技術はフラグビット・オペランド200が効率的に得られる場合は図6の技術よりも効率的であり得る。マスクオペランド220を得るためにはただ1つの算術演算だけしか必要としない。
【0064】
図8から図14ではマスクオペランドを用いて画像処理演算を実行するような図3に関連して説明した一般的動作の実施を図示している。図8は演算を実行する要素データ項目を選択するためにどのようにマスクオペランドを使用できるかを示す。図9はマスクオペランドとその反転を用いて2つの結果がどのように得られるかを示す。図10は極大または極小要素をそれぞれの桁で得るためにマスクオペランドをどのように使用できるかを示す。図11はマスクオペランドを使用する乗算を示す。図12および図13はマスクオペランドを用いる除算を示す。図14はマスクオペランドを用いる閾値旋回を示す。
【0065】
図8において、囲み240の動作はそれぞれの要素データ項目を処理桁のそれぞれの部分行列に提供する。たとえば、この動作は要素を直接読み込む入力演算または入力データを用いて部分行列内の要素を取得するような一連の画像処理演算で有り得る。
【0066】
囲み242の動作ではそれぞれの要素データ項目を用いてマスクデータ項目を得ている。一般にこの動作は、要素が第1の部分集合または第2の部分集合内に存在することを示す1ビットたとえばフラグビットを取得することによって行なう。たとえば、フラグビットは要素が定数に等しいか、閾値より大きいか、または値の範囲内にあるかを示すことが出来る。
【0067】
フラグビットを用いて図6および図7に関連して上述したようにマスクデータ項目を取得することが出来る。それぞれのマスクデータ項目はこれのすべてのビットにおいて均一にオフまたはオンである。
【0068】
囲み244の動作では、図1の論理積演算で示したように、それぞれの要素をこれのマスクデータ項目と論理積または論理和演算している。論理積をとる場合、この動作はマスクデータ項目がオンであれば要素と同じ値を取得するが、マスクデータ項目がオフであればすべてのビットで値「0」を生成する。論理和をとる場合、この動作はマスクデータ項目がオフであれば要素と同じ値を取得するが、マスクデータ項目がオンであればすべてのビットで値「0」を生成する。
【0069】
囲み246の動作では、囲み244からの結果データ項目に演算を行なっている。このような演算の幾つかの例を以降の図9から図14に図示した。
【0070】
図9において、複合オペランド250は値「10」を図1の複合オペランドのそれぞれの要素に加算することによって得ている。要素間の桁上げ信号は阻止されている。要素252は値「01」を有し、要素254は値「00」、また要素256は値「11」を有している。
【0071】
マスクオペランド260は図1のマスクオペランド20の反転で、マスクデータ項目262、264、266はそれぞれマスクデータ項目22、24、26から反転したものである。その結果、マスクオペランド260および20は補数の関係にある。
【0072】
複合オペランド250およびマスクオペランド260を論理積演算して結果データ項目272、274、276を有する結果270が得られる。マスクデータ項目262と266がオンであるため、データ項目272は値「01」を有しまたデータ項目276は値「11」を有している。
【0073】
結果270を図1からの結果30と論理和演算して併合した結果280が得られる。データ項目282はデータ項目272の値を、データ項目284は値を、データ項目286はデータ項目276の値を有している。つまり、併合結果280は複合オペランド10において値「10」を値「10」と等しくない要素に加算した版である。
【0074】
よって図9は演算を実行する要素データ項目を選択するためにどのようにマスクオペランドを使用できるかを示している。図9ではまた併合可能な2つの結果を得るためにどのようにマスクオペランドとその反転を使用できるかを示している。図10ではこの使用法の別の実施例を示す。
【0075】
囲み290の動作は第1と第2の複合オペランドを提供しており、それぞれの部分行列がそれぞれの複合オペランドから1つづつ一対の要素を受信する。
【0076】
囲み292の動作はそれぞれ第1の要素をそれぞれ第2の要素から減算し、要素間の借り信号を阻止する。
【0077】
囲み294の動作は符号フラグビットを用いてマスクオペランドを得ている。マスクオペランドは第1のオペランドが第2のオペランドより大きい部分行列ではオンまたそれ以外ではオフになっている。
【0078】
囲み296の動作はマスクオペランドと2つの複合オペランドの一方との論理積をとって1つの結果を生成しまた反転マスクオペランドとその他の複合オペランドの論理積をとって別の結果を得ている。マスクが第1のオペランドとまた反転マスクが第2のオペランドと論理積演算される場合、それぞれの結果は極大を含む。マスクが第2のオペランドとまた反転マスクが第1のオペランドと論理積演算される場合には、それぞれの結果は極小を含む。
【0079】
囲み298の動作は囲み296からの結果を論理和して併合結果を得ている。併合結果はすべての部分行列内に最大値またはすべての部分行列内に最小値を含み、囲み296の動作がどのように実行されたかで変化する。
【0080】
図10の技術は囲み296で論理和また囲み298で論理積をとることにより変更してもよい。これにより複合オペランドが囲み296で切り換えられた場合にも同じ結果が得られる。
【0081】
図11は乗算を実行するためにどのようにマスクオペランドを使用できるかを示している。囲み300の動作はそれぞれが複数の多ビット要素データ項目を有する乗数と被乗数の2つの複合オペランドを提供する。さらに、囲み300の動作ではそれぞれのビット位置に「0」を有する積ベクトルを得ている。
【0082】
囲み310の動作は乗数要素のそれぞれのビットを取り扱うまで反復するループを開始する。言い換えれば、すべての乗算要素がKビットを有するなら、K回反復が行なわれる。
【0083】
囲み312の動作はそれぞれの乗算要素の現在のビット桁における値をフラグビットとして用いてマスクオペランドを得ている。現在のビット桁は最上位ビットまたは最下位ビットのいずれかであり得る。囲み312の動作は図6および図7に関連して上述したようにマスクを得ることが出来る。
【0084】
囲み314の動作は囲み312からのマスクを被乗数と論理積する。つまり、乗数要素が現在のビット桁に「1」を有する場合、位置揃えした被乗数要素の値が保存されるが、乗数要素が「0」を有する場合には結果データ項目はすべて「0」を有することになる。
【0085】
囲み316の動作は囲み314からの結果データ項目を積ベクトルに加算する。次に、囲み318の動作は積ベクトルと乗数を1ビットシフトして次の反復に備える。現在の桁が最上位ビットならシフトは左向きに行なうことが出来、最下位ビットでは右向きである。
【0086】
乗数要素のすべてのKビットの桁を扱った時点で、囲み320の動作は積を提供する。この動作は積データ項目を適切に位置付けるのに必要なすべてのシフト動作、たとえば囲み318のKビットの右向きシフトの後でKビットの左へのシフトなどを含むことが出来る。
【0087】
囲み316および318の動作をあわせてKビットを越えて延在する積を生成することが出来る。たとえば、乗数要素と位置揃えした被乗数要素両方の値が(2K −1)に等しい場合、積は(22K−2(K+1) +1)で、K>2において2Kビットを必要とする。つまり、図9の動作は要素間信号が無効な結果を導かないような方法で実行する必要がある。
【0088】
有効な結果を保証する1つの方法は乗数と被乗数要素両方を拡散し、隣接する要素がKビットだけ離れるようにすることである。囲み300の動作は拡散演算を実行することが出来る。左向きのシフトが囲み318で実行される場合、拡散演算ではそれぞれの要素の最上位ビットに隣接するK個の「0」ビットを加算でき、右向きのシフトが実行される場合には、拡散演算は最下位ビットに隣接するK個の「0」ビットを加算できる。
【0089】
有効な結果を保証する別の方法は乗数、被乗数、積のそれぞれの要素データ項目に隣接してバッファビットを含めることである。この方法では多くの要素に対して並列演算が可能であるが、単精度の乗算結果が生成される。これはそれぞれの積データ項目がKビットしか含んでいないためである。バッファビットは囲み300の動作で含めることが出来、乗数および積では囲み310で始まるループのそれぞれの反復の前または後に消去することが出来る。
【0090】
それぞれ倍精度の結果の下側半分を得るためには、囲み312の動作で最上位ビットからマスクデータ項目を取得し、囲み318の動作では左にシフトしてよい。マスクの取得でさらに大きい効率のためには、囲み300の動作は乗数を右向きに(K−1)ビットあらかじめシフトしておき、最下位ビットの桁に最上位ビットを配置すれば、前述の図7に図示した技術を用いることが出来る。
【0091】
それぞれ倍精度の結果の上側半分を得るためには、囲み312の結果で最下位ビットからマスクデータ項目を取得し、囲み318の動作は右向きにシフトしてよい。
【0092】
図12では除算を実行するためにマスクオペランドをどのように使用できるかを示している。囲み340の動作はそれぞれが複数の多ビット要素データ項目を含む除数と被除数の2つの複合オペランドを提供する。除数と被乗数は両方ともそれぞれのよその最上位ビットに隣接してバッファビットを有し、バッファビットは値「0」で始まっている。さらに、囲み340の動作でそれぞれのビット桁が「0」の商ベクトルを得ている。
【0093】
囲み350の動作は被乗数のそれぞれのビットを取り扱うまで反復するループを開始する。それぞれの反復では現在被除数の最上位ビットとなっているビットを取り扱う。
【0094】
囲み352の動作はすべての被除数バッファビットを値「1」に設定した後で被除数から除数を減算することから始まる。除数要素が被除数要素より大きい場合、減算により差分と、隣接するバッファビットを値「0」に変更して符号フラグビットを提供する借りビットが生成される。
【0095】
囲み354の動作は囲み352からの結果とバッファビットの各桁がオンでそれ以外はオフのバッファビット選択オペランドと論理積を行ない、フラグビット・オペランドを得ている。囲み354の動作はまたフラグビット・オペランドと商の論理和によって商を更新している。
【0096】
囲み356の動作ではフラグビット・オペランドを反転し、図6および図7に関連して上述したような技術であるがバッファビットの各桁をオフとしてある技術を用い、反転したフラグビット・オペランドを使ってマスクオペランドを得ている。囲み356の動作では次にマスクオペランドと除数を論理積し、負の差分データ項目を導くようなそれぞれの除数要素を選択する。
【0097】
囲み358の動作は次に囲み356からの選択した除数を囲み352からの差分に加算して次の被除数を得ている。加算する前に、差分のバッファビットには論理積演算により値「0」が与えられる。したがって差分が負のところでは除数がまた加算されて正の値が保持される。
【0098】
囲み360の動作では、次の被除数と商をシフトする。囲み360の動作はまた論理積演算を行ないシフトした次の被除数のすべてのバッファビットに値「0」を与えている。
【0099】
被除数のすべてのビット桁を取り扱った時点で、囲み370の動作は商を提供する。商はこれが提供される前に、囲み360で左向きにKシフトした後にKだけ右シフトするなど、適切にシフトされる。
【0100】
図12の動作は特別な条件では変更することが出来る。たとえば、除数要素が被除数要素より大幅に小さい値を必ず有している場合、除数を左向きに適切なビット数だけシフトして開始することによりさらに有意義な商データ項目を得ることが出来る。一般に、シフトした商は少なくとも被除数のそれの半分の値を有する。
【0101】
図12は復元除算を図示している。非復元除算は従来の非復元被除数アルゴリズムを変更することで実行させることが出来る。従来のアルゴリズムで極性にしたがって分岐する場合に、マスクオペランドを生成できる。マスクとその反転を用いれば正または負のいずれかの除数要素の版がそれぞれの部分行列内で選択可能である。商は直前の結果が正の場合にはバッファビットのベクトルを加算することでまた直前の結果が負の場合には反転したバッファビットのベクトルを減算することで得られ、ここでもマスクとその反転が使用される。
【0102】
乗算同様に、除算も被除数および除数要素とは異なる長さの結果データ項目を得ることが出来る。すべての被除数がKビットの要素を有しかつすべての除数が(K/2)ビットの要素を有する場合、(K/2)ビットの商が得られる。これによって結果で不要なビット桁を排除するように部分抽出または減少することが出来る。
【0103】
図13は任意のKビットの値の除算を実行可能な動作を表わしている。囲み400の動作は除数と被除数を提供し図10の囲み340のように商を初期化する。囲み400の動作はまた指数iを0に初期化する。
【0104】
囲み410の動作は3つのループの第1を開始する。第1のループはiのそれぞれの値について第1のマスクオペランドが得られるまで反復する。第2のループは第1のマスクオペランドを用いてiのそれぞれの値について第2のマスクオペランドが得られるまで反復する。第3のループは第2のマスクオペランドを用いて商ビットを得るように部分行列を選択する。
【0105】
第1のループの囲み412の動作はそれぞれの除数要素の最下位ビットをフラグビットとして用いてマスクMi を得ている。要素の最下位ビットからマスクを迅速に取得するための技術については図7に関連して前述したとおりである。
【0106】
囲み414の動作では除数を右方向にシフトしまたiを1つ増加させて第1のループを終わる。その結果、第1のループではM0 からM(K−1) までのK個のマスクが生成される。
【0107】
囲み416の動作では第2のループを準備する。マスクM(K−1) はK個の変更したマスクの1つの変更マスクMA(K−1) として扱われる。指数iはまた0から始まる。囲み420の動作は第2のループの(K−1)回の反復を開始する。
【0108】
第2のループは囲み422の動作で実行される。変更マスクMA(K−2−i) がマスクM(K−1−i) とM(K−2−i) の論理和により得られる。指数iを1つ増加する。第2のループではK個のマスクMA0 からMA(K−1) が生成される。すべての除数要素について最上位ビットがビットiにある場合、マスクMAi+1 からMA(K−1) はすべて「0」でマスクMA0 からMAi はすべて「1」となる。
【0109】
囲み424の動作はそれぞれのマスクMAi を左向きにiビットだけシフトし、シフトした除数要素が相互に影響しあわないようにこれを位置合わせして除算の準備を行なう。囲み424の動作ではまた除数をこれの元の桁まで左向きにKビットだけシフトしiを0に戻す。
【0110】
囲み430の動作は第3のループのK回の反復を開始する。それぞれの反復で復元または非復元除算のいずれかにより、それぞれの要素について1つの商ビットが得られる。
【0111】
第3のループにおける囲み432の動作では現在の除数要素とMAi の論理積をとり除数要素を選択する。囲み434の動作では選択した除数要素と被除数を用いて次の商ビットを取得し、被除数を更新する。
【0112】
囲み436の動作では商とマスクMAi の論理積をとり選択していない部分行列内のすべての商ビットを0にする。この動作により除数要素の最上位の0ではないビットが被除数の最上位ビットと位置が揃うまで除数要素に対して演算が実行されないことになる。
【0113】
囲み438の動作では除数を右向きにシフトし商を左向きにシフトし、iを1つ増加させて次の反復の準備を行なう。さらに、囲み438の動作では除数のバッファビットを消去することが出来る。
【0114】
第3のループのK回の反復の後、囲み440の動作で適宜シフトした商を提供する。
【0115】
図13の技術は複雑な条件付き作業が条件分岐を実行するためにマスクオペランドを用いて実施できることを示している。
【0116】
図14は閾値旋回を表わす。閾値旋回では1ビットのデータ項目を受信して1ビットのデータ項目を生成するが、中間の演算では多ビットデータ項目を使用する。閾値旋回において、構成素子は目的の桁に対して定義された桁を有する整数重みの行列である。構成素子は供給源ビットマップ内に配置されており、ビットマップ内の桁と同じ桁にある整数重みを加算して、和を閾値と比較する。閾値を越えている場合には宛先の桁は1となり、それ以外では0となる。
【0117】
図14において、供給源と宛先のデータ項目は例として画素値で表わしているが、図示した実施はその他のデータ項目のアレイに応用できるものである。囲み460の動作では供給源の画素を拡散してマスクデータ項目を含み構成素子のそれぞれの整数重みと同じビット数を有するマスクを得ている。囲み462における動作では囲み460からのマスクを用いて値「1」を有する供給源画素に対する重みを選択する。構成素子のそれぞれの桁について和を得るために選択した重みを加算する。
【0118】
囲み464の動作は和を閾値と比較して宛先画素の値を表わす符号フラグビットを取得する。囲み466の動作は囲み464からの結果を部分抽出して宛先画素だけを選択する。
【0119】
図14の技術はすべての構成素子の桁についての和を保持している。本技術はまた重みに対してマスクを位置付けるために広範囲のシフトを必要とする。完了時に和を提供し、和が提供された後に完了した和で占有されていたメモリを開放し、またより少ないシフト演算を実行する方法を発見することで、このような非効率を減少させることが可能となり得る。
【0120】
閾値旋回はマスクを用いることなく実行することも出来る。たとえば、一連の供給源ビットを用いて参照テーブルにアクセスし、幾つかの宛先桁についての和を取得し、また宛先ビットを生成するために和を取得して使用することが出来る。
【0121】
上述の実施例はマスクオペランドの多数の使用方法の幾つかを図示したものである。一般に、多くの演算は従来においてここのデータ項目について条件分岐を実施する直列処理装置を用いて実施されているようなデータ駆動型分岐を含むものである。
【0122】
直列演算が幾つかの分岐に関連するが広範囲な分岐には関係しない場合、充分に効率的な並列演算に変換することが可能である。並列演算はたとえばSMID装置上で実施することが可能である。
【0123】
直列演算から並列演算へ変換するための1つの基準は2進分岐に関係がある。分岐で理想的な処理装置に部分演算Aまたは部分演算Bのいずれかをデータ項目の値にしたがって実行させるような場合には部分演算AまたはBがこれについて実行すべきかを表わすそれぞれの要素データ項目についてのフラグビットを取得し、このフラグビットを用いてマスクオペランドを取得し、部分演算AおよびBの両方を並列にすべての要素について実行し、Aの結果とマスクオペランドとの論理積を行ない、Bの結果とマスクオペランドの反転との論理積をとり、また論理積をとった結果の論理和によって併合結果を得る。
【0124】
別の基準はデータ項目で示される回数にわたって反復する演算に関係する。最悪の場合では必要な回数だけ演算を実行するが、マスクを用いて図13に図示したようにそれぞれの要素についての計算を制御する。たとえば、ある程度の反復回数が残るまで結果が保存されないようにマスクを用いることが可能である。またはある程度の反復回数の後で結果が更新されないようにマスクを用いることが可能である。
【0125】
上述の一般的実施の特徴は広範なデータ処理用途に使用可能である。しかしある種の画像処理においてはそれぞれの要素データ項目について順次実行するよりも迅速に実行しうることで特に有用であると推測される。特に、上述の特徴をセラ(Serra, J. )の「画像分析と数学的変換(Image Analysis and Mathematical Morphology)」、アカデミックプレス刊、1982年、およびセラ(Serra, J. )の「画像分析と数学的変換第2巻:理論的な進歩(Image Analysis and Mathematical Morphology, Volume 2: Theoretical Advances )」、アカデミックプレス刊、1988年、に解説されているのと同様の技術を実施するために使用することが出来る。このような技術はたとえば雑音の除去またはその他の情報を含まない特徴の除去、歪曲補正、データ符号化、自動フォーム作成または制御シート作成のための部分の抽出、印刷装置特有の補正などの文書サービスを提供するために使用することが出来る。このような文書サービスは、ファクシミリ装置および複写装置を含むデジタル複写装置において、印刷装置またはその他の画像出力装置用の画像を定義するデータを生成する装置において、スキャナまたはその他の画像入力装置から受信した画像を定義するデータについて演算するまた画像処理を行なうその他の装置において、使用することが出来る。
【0126】
上述の一般的実施の特徴はまた、各種のその他の用途において、たとえば特定の特徴の組み合わせを含む画像について画像データベースの検索や、封筒の住所の走査、高速スキャナからのフォームの解釈、人工視覚、および処理に特有の印刷画像の補正および確認などにおいても有用であろう。
【0127】
本発明は各種のその他の画像処理演算、たとえば画素の計数、グレースケールの形態変更、グレースケールの回転、エラー分散画像の生成および歪曲検出などを実行するために応用することも可能である。
【0128】
本発明は画像に関連しないデータに使用することも可能である。本発明はたとえば有限微分解析または物理現象のシミュレーションを実行するために使用することが出来る。
【0129】
本発明はマスクオペランドが選択すべき要素データ項目とオンビットの位置が揃っておりそれ以外ではオフビットを有するような、また要素を選択するために論理積演算がマスクオペランドと複合オペランドに対して実行されるような実施に関連して説明した。本発明はまた選択すべき要素データ項目とオフビットの位置が揃っておりそれ以外ではオンビットを有するようなマスクオペランドを用いて、要素を選択するためにマスクオペランドと複合オペランドに対して論理和演算を実行することにより実施することも可能である。
【0130】
本発明はフラグビットが要素データ項目に隣接して得られるような実施に関連して説明した。本発明はまたフラグビットが何らかのほかの位置で得られこれから要素に対して伝播し得るような、たとえば要素内の桁などで実施することも可能である。
【0131】
本発明はフラグビットを用いてマスクオペランドを直接に取得するような実施に関連して説明した。本発明はまたフラグビットを反転させるかまたはこれを用いてマスクオペランドを取得する前に何らかの変更を加えるような方法で実施することが出来る。たとえば、他のビットの影響を与えることなくすべてのフラグビットを排他的論理和演算で反転させることが可能である。
【0132】
本発明はフラグビット・オペランドをシフトまたは論理和演算することによりまたはフラグビット・オペランドと定数オペランドに対して並列に算術演算を実行することにより、フラグビットを用いてマスクオペランドを取得するような実施に関連して説明した。本発明はまたフラグビットを用いてマスクオペランドを取得するための他の技術により実施してもよい。
【0133】
本発明は加算および減算を用いてフラグビットを取得する実施に関連して説明した。その他の算術演算を用いてフラグビットを取得することも可能である。
【0134】
本発明は画像に関するデータに対して演算を行なう実施に関連して説明したが、画像に関連しないデータに対して演算を行なうために実施することも可能である。
【0135】
本発明は従来のマイクロプロセッサを用いる実施に関連して説明したが、本発明はまた縮小命令セット計算機(RISC)チップまたはメインフレーム・コンピュータ、ミニコンピュータ、スーパーコンピュータ、または何らかのその他の計算装置を含むその他の何らかの処理装置により実施することが可能である。
【0136】
本発明は処理装置とメモリを含むシステムにおいて使用するための、メモリからのデータに対して演算を実行するために処理装置が実行できる命令を表わすデータを含むようなソフトウェア製品に関連して説明した。システムのメモリは当然のことながらシステム内で使用する際にソフトウェア製品を含み、命令ならびにデータは一般に処理装置からアクセス可能な何らかのメモリ装置内に任意に保存することが出来る。たとえば、本発明はソフトウェア製品内にではなくメモリ内に保存された命令を表わすデータを用いて容易に実施することが可能である。
【0137】
本発明は単純な構造の複合オペランドに関連して説明した。上述の実施例において、全ての要素データ項目はおなじ長さであり複合オペランド内部の要素は相互に関連していなくとも良い。本発明は処理装置の幅の制約内で、さらなる構造を有する複合オペランドで実施することも可能である。たとえば、複合オペランドは、他のオペランドがおなじ位置にある同じ幅の要素と位置が揃っているならば、異なる幅の要素データ項目を含んでいてもよい。また、要素データ項目は2つまたはそれ以上のグループに構成され、それぞれのグループの要素が関連していてもよい。それぞれのグループの要素が同じ画素に関連している場合、それぞれの要素はそれぞれの閾値減少のための値を保持することが可能である。より一般的には、それぞれのグループ内の要素が物理的シミュレーション空間内の同じ位置に関連している場合、1つの要素がその位置での値を保持しまた別の位置がその位置での導関数を保持することが可能である。
【図面の簡単な説明】
【図1】それぞれの画素に関連する多ビット要素データ項目を含む複合オペランドからのマスクオペランドと部分オペランドを取得するためにマスクオペランドと複合オペランドを用いる演算の積を表わす概略流れ図である。
【図2】ソフトウェア製品からの命令を処理装置が実行してマスクオペランドを取得または使用するようなシステムの部材を表わす概略ブロック図である。
【図3】処理装置が複合オペランドを含むマスクオペランドを使用することの出来る動作を表わす流れ図である。
【図4】処理装置が複合オペランドを用いてマスクオペランドを取得できるような動作を表わす流れ図である。
【図5】図4のマスクオペランドを取得する際に使用することの出来るKビットのシフト回路を表わす概略回路図である。
【図6】図4の動作の実施例でマスクオペランドをどのように取得し得るかを表わす概略流れ図である。
【図7】図4の動作の別の実施例でマスクオペランドをどのように取得し得るかを表わす概略流れ図である。
【図8】図3の動作の実施例で後続の演算のために要素を選択するのにマスクオペランドを使用する動作を表わす流れ図である。
【図9】マスクオペランドとその反転を用いて複合オペランドをどのように併合するかを表わす概略流れ図で要素の選択のために図8の動作と類似の動作を用いている。
【図10】2つの複合オペランドの極大または極小の対を取得するためにマスクオペランドを使用する際の動作を示す流れ図で、それぞれの対の極大または極小を選択するために図8と類似した動作を用いている。
【図11】図3の動作の別の実施例で、並列的に乗算を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【図12】図3の動作の別の実施例で、並列的に復元除算を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【図13】図3の動作の別の実施例で、除算を実行するためにマスクオペランドを使用する際の動作を示す別の流れ図である。
【図14】図3の動作の別の実施例で、閾値旋回を実行するためにマスクオペランドを使用する際の動作を示す流れ図である。
【符号の説明】
10 複合オペランド、12,14,16 要素データ項目、20 マスクオペランド、22,24,26 ビット桁、30 結果、32,34,36 結果データ項目、60 ソフトウェア、62 データ保存媒体、64 保存媒体アクセス装置、66 処理装置、70 入力回路、72 出力装置、80 マスク取得命令、82 命令、84 メモリ、90 処理回路、92 処理桁、110 処理装置、120 処理回路、126 シフト回路、128 制御回路、130オペランド、132,134 フラグビット、136,138 要素、140フラグ選択オペランド、142,144 フラグビット桁、150,160 フラグビット・オペランド、166 Kビットシフト回路、170 フラグビット・オペランド、180 マスクオペランド、182,184 マスクデータ項目、200 フラグビット・オペランド、202,204 フラグビット、206要素データ項目、208 要素、210 定数オペランド、212,214定数データ項目、220 マスクオペランド、222,224 マスクデータ項目、226,228 フラグビット値、250 複合オペランド、252 要素、260 マスクオペランド、262,264,266 マスクデータ項目、270 結果、272,274,276 結果データ項目、280 併合結果
Claims (2)
- 1ビットを用いた演算をそれぞれが実行するための複数の処理桁を有し、オペランドを用いて並列的に演算を実行するための処理回路を含む処理装置を作動させるための方法であって、
それぞれが1ビット以上を含む複数の第1の要素データ項目を含み、前記処理回路内の処理桁のそれぞれの部分行列にそれぞれが提供される第1の複合オペランドと、第1の要素データ項目それぞれについて前記第1の要素データ項目の処理桁の部分集合にそれぞれが提供され、また前記第1の要素データ項目それぞれについて前記第1の要素データ項目と位置の揃ったそれぞれのビットを含み、さらに第1の部分集合と第2の部分集合を含んでおり、かつまた前記第1の部分集合内の第1の要素データ項目内のビットと位置が揃えてあるそれぞれのビットが第1の値を有し、前記第2の部分集合内の第1の要素データ項目内のビットと位置が揃えてあるそれぞれのビットが第2の値を有する第1のマスクデータ項目を含む第1のマスクオペランドとを前記処理回路へ提供する段階と、
前記第1の複合オペランドと前記第1のマスクオペランドとを用いてそれぞれの第1の要素データ項目の部分集合においてそれぞれの結果データ項目を取得する第1の論理演算を並列に実行し、前記第1の部分集合内のそれぞれの第1の要素データ項目の前記結果データ項目が前記第1の要素データ項目と同じ値を有し、前記第2の部分集合内のそれぞれの第1の要素データ項目の前記結果データ項目がすべてのビットで均一な値を有し、前記第2の部分集合内のそれぞれの第1の要素データ項目の前記結果データ項目のすべてのビットでの均一な値が前記第1の値と前記第2の値の一方となるように前記処理回路を作動させる段階を含む、前記方法。 - 1ビットを用いた演算をそれぞれが実行するための複数の処理桁を有し、オペランドを用いて並列的に演算を実行するための処理回路を含む処理装置を作動させるための方法であって、
それぞれが1ビット以上を含む複数の要素データ項目を含み、それぞれが前記処理回路内の処理桁のそれぞれの部分集合に提供される複合オペランドを前記処理回路に提供する段階と、
前記複合オペランドを用いて前記要素データ項目内のそれぞれにビットについて前記要素データ項目内のビットと位置が揃っているそれぞれのビットを含む要素データ項目のそれぞれの前記部分集合内にそれぞれのマスクデータ項目を取得するマスク取得演算を並列的に実行し、前記要素データ項目が第1の部分集合と第2の部分集合を含み、前記第1の部分集合内の要素データ項目内のビットと位置が揃えてあるマスクデータ項目内のそれぞれのビットが第1の値を有し、前記第2の部分集合内の要素データ項目内のビットと位置が揃えてあるマスクデータ項目内のそれぞれのビットが第2の値を有し、前記マスクデータ項目をあわせてマスクオペランドを構成するように前記処理回路を作動させる段階を含む、前記方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/993,938 US5651121A (en) | 1992-12-18 | 1992-12-18 | Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand |
US993938 | 1992-12-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06222918A JPH06222918A (ja) | 1994-08-12 |
JP3584053B2 true JP3584053B2 (ja) | 2004-11-04 |
Family
ID=25540099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP31778593A Expired - Fee Related JP3584053B2 (ja) | 1992-12-18 | 1993-12-17 | 複合オペランド内の多ビット要素を選択するためのマスク |
Country Status (4)
Country | Link |
---|---|
US (1) | US5651121A (ja) |
EP (1) | EP0602886B1 (ja) |
JP (1) | JP3584053B2 (ja) |
DE (1) | DE69328070T2 (ja) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5751614A (en) * | 1994-03-08 | 1998-05-12 | Exponential Technology, Inc. | Sign-extension merge/mask, rotate/shift, and boolean operations executed in a vectored mux on an ALU |
US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
JPH0969047A (ja) | 1995-09-01 | 1997-03-11 | Sony Corp | Risc型マイクロプロセッサおよび情報処理装置 |
JP3433588B2 (ja) * | 1995-10-19 | 2003-08-04 | 株式会社デンソー | マスクデータ生成回路及びビットフィールド操作回路 |
US6036350A (en) * | 1995-12-20 | 2000-03-14 | Intel Corporation | Method of sorting signed numbers and solving absolute differences using packed instructions |
US5907842A (en) * | 1995-12-20 | 1999-05-25 | Intel Corporation | Method of sorting numbers to obtain maxima/minima values with ordering |
US5983291A (en) * | 1996-09-24 | 1999-11-09 | Cirrus Logic, Inc. | System for storing each of streams of data bits corresponding from a separator thereby allowing an input port accommodating plurality of data frame sub-functions concurrently |
US5832288A (en) * | 1996-10-18 | 1998-11-03 | Samsung Electronics Co., Ltd. | Element-select mechanism for a vector processor |
US5946222A (en) * | 1996-12-20 | 1999-08-31 | Oak Technology, Inc. | Method and apparatus for performing a masked byte addition operation |
US20020132252A1 (en) * | 1997-06-16 | 2002-09-19 | Genentech, Inc. | Secreted and transmembrane polypeptides and nucleic acids encoding the same |
US6117508A (en) | 1997-06-27 | 2000-09-12 | Dyneon Llc | Composite articles including a fluoropolymer blend |
US6081824A (en) * | 1998-03-05 | 2000-06-27 | Intel Corporation | Method and apparatus for fast unsigned integral division |
JP4131349B2 (ja) * | 1998-12-09 | 2008-08-13 | ソニー株式会社 | データ変換装置およびデータ変換方法、記録媒体、並びにデータ変換システム |
US6470440B1 (en) * | 1999-05-20 | 2002-10-22 | International Business Machines Corporation | Vector compare and maximum/minimum generation apparatus and method therefor |
US7120781B1 (en) * | 2000-06-30 | 2006-10-10 | Intel Corporation | General purpose register file architecture for aligned simd |
AU2002212570A1 (en) * | 2000-10-24 | 2002-05-15 | Hmi Co., Ltd. | Random number generator |
US6944753B2 (en) * | 2001-04-11 | 2005-09-13 | International Business Machines Corporation | Fixed point unit pipeline allowing partial instruction execution during the instruction dispatch cycle |
US6952711B2 (en) | 2001-06-01 | 2005-10-04 | Microchip Technology Incorporated | Maximally negative signed fractional number multiplication |
US7020788B2 (en) | 2001-06-01 | 2006-03-28 | Microchip Technology Incorporated | Reduced power option |
US20020184566A1 (en) | 2001-06-01 | 2002-12-05 | Michael Catherwood | Register pointer trap |
US7467178B2 (en) | 2001-06-01 | 2008-12-16 | Microchip Technology Incorporated | Dual mode arithmetic saturation processing |
US6975679B2 (en) | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Configuration fuses for setting PWM options |
US7003543B2 (en) * | 2001-06-01 | 2006-02-21 | Microchip Technology Incorporated | Sticky z bit |
US6934728B2 (en) | 2001-06-01 | 2005-08-23 | Microchip Technology Incorporated | Euclidean distance instructions |
US6937084B2 (en) | 2001-06-01 | 2005-08-30 | Microchip Technology Incorporated | Processor with dual-deadtime pulse width modulation generator |
US6985986B2 (en) * | 2001-06-01 | 2006-01-10 | Microchip Technology Incorporated | Variable cycle interrupt disabling |
US6976158B2 (en) | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Repeat instruction with interrupt |
US7007172B2 (en) | 2001-06-01 | 2006-02-28 | Microchip Technology Incorporated | Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US7430574B2 (en) * | 2004-06-24 | 2008-09-30 | Intel Corporation | Efficient execution and emulation of bit scan operations |
US7610472B2 (en) * | 2005-06-05 | 2009-10-27 | Apple Inc. | Performing variable and/or bitwise shift operation for a shift instruction that does not provide a variable or bitwise shift option |
WO2007083199A1 (en) * | 2006-01-18 | 2007-07-26 | Freescale Semiconductor, Inc. | Device and method for finding extreme values in a data block |
US9069547B2 (en) | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US9003170B2 (en) * | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
US9323531B2 (en) * | 2013-03-15 | 2016-04-26 | Intel Corporation | Systems, apparatuses, and methods for determining a trailing least significant masking bit of a writemask register |
US9880839B2 (en) * | 2014-04-24 | 2018-01-30 | Intel Corporation | Instruction that performs a scatter write |
US9262704B1 (en) * | 2015-03-04 | 2016-02-16 | Xerox Corporation | Rendering images to lower bits per pixel formats using reduced numbers of registers |
US10423411B2 (en) * | 2015-09-26 | 2019-09-24 | Intel Corporation | Data element comparison processors, methods, systems, and instructions |
US11500680B2 (en) * | 2020-04-24 | 2022-11-15 | Alibaba Group Holding Limited | Systolic array-friendly data placement and control based on masked write |
US11410580B2 (en) * | 2020-08-20 | 2022-08-09 | Facebook Technologies, Llc. | Display non-uniformity correction |
CN112799637B (zh) * | 2021-01-22 | 2023-03-14 | 西安电子科技大学 | 一种并行环境下高吞吐量的模逆计算方法及系统 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4139899A (en) * | 1976-10-18 | 1979-02-13 | Burroughs Corporation | Shift network having a mask generator and a rotator |
US4180861A (en) * | 1978-03-31 | 1979-12-25 | Ncr Corporation | Selectively operable mask generator |
DE3040931C1 (de) * | 1980-10-30 | 1982-04-29 | Siemens AG, 1000 Berlin und 8000 München | Verfahren und Anordnung zur Verknuepfung von Operanden variabler Laenge in Datenverarbeitungsanlagen |
US4592005A (en) * | 1982-07-06 | 1986-05-27 | Sperry Corporation | Masked arithmetic logic unit |
US4785393A (en) * | 1984-07-09 | 1988-11-15 | Advanced Micro Devices, Inc. | 32-Bit extended function arithmetic-logic unit on a single chip |
US5034900A (en) * | 1984-10-05 | 1991-07-23 | Hitachi, Ltd. | Method and apparatus for bit operational process |
JPS6266377A (ja) * | 1985-09-19 | 1987-03-25 | Fujitsu Ltd | マスクパタ−ン生成方式 |
US5056041A (en) * | 1986-12-31 | 1991-10-08 | Texas Instruments Incorporated | Data processing apparatus with improved bit masking capability |
US4775952A (en) * | 1986-05-29 | 1988-10-04 | General Electric Company | Parallel processing system apparatus |
US5060280A (en) * | 1986-09-30 | 1991-10-22 | Canon Kabushiki Kaisha | Masking control for image processing systems |
US4864529A (en) * | 1986-10-09 | 1989-09-05 | North American Philips Corporation | Fast multiplier architecture |
US5129092A (en) * | 1987-06-01 | 1992-07-07 | Applied Intelligent Systems,Inc. | Linear chain of parallel processors and method of using same |
JP2613223B2 (ja) * | 1987-09-10 | 1997-05-21 | 株式会社日立製作所 | 演算装置 |
US5129066A (en) * | 1987-09-17 | 1992-07-07 | International Business Machines Corporation | Bit mask generator circuit using multiple logic units for generating a bit mask sequence |
US4953119A (en) * | 1989-01-27 | 1990-08-28 | Hughes Aircraft Company | Multiplier circuit with selectively interconnected pipelined multipliers for selectively multiplication of fixed and floating point numbers |
US5131049A (en) * | 1989-12-08 | 1992-07-14 | Xerox Corporation | Identification, characterization, and segmentation of halftone or stippled regions of binary images by growing a seed to a clipping mask |
US5065437A (en) * | 1989-12-08 | 1991-11-12 | Xerox Corporation | Identification and segmentation of finely textured and solid regions of binary images |
US5048109A (en) * | 1989-12-08 | 1991-09-10 | Xerox Corporation | Detection of highlighted regions |
US5267051A (en) * | 1989-12-22 | 1993-11-30 | Eastman Kodak Company | High speed compression of imagery data |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
US5280547A (en) * | 1990-06-08 | 1994-01-18 | Xerox Corporation | Dense aggregative hierarhical techniques for data analysis |
JPH0454679A (ja) * | 1990-06-25 | 1992-02-21 | Nec Corp | 演算装置 |
JP2601960B2 (ja) * | 1990-11-15 | 1997-04-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理方法及びその装置 |
US5315699A (en) * | 1991-03-20 | 1994-05-24 | Research Development Corporation Of Japan | Filtering operation method for very high-speed image processing system |
JP3366633B2 (ja) * | 1991-11-27 | 2003-01-14 | セイコーエプソン株式会社 | ピクセル変更システム及びピクセル変更方法 |
US5450604A (en) * | 1992-12-18 | 1995-09-12 | Xerox Corporation | Data rotation using parallel to serial units that receive data from memory units and rotation buffer that provides rotated data to memory units |
US5375080A (en) * | 1992-12-18 | 1994-12-20 | Xerox Corporation | Performing arithmetic on composite operands to obtain a binary outcome for each multi-bit component |
US5437045A (en) * | 1992-12-18 | 1995-07-25 | Xerox Corporation | Parallel processing with subsampling/spreading circuitry and data transfer circuitry to and from any processing unit |
US5408670A (en) * | 1992-12-18 | 1995-04-18 | Xerox Corporation | Performing arithmetic in parallel on composite operands with packed multi-bit components |
US5428804A (en) * | 1992-12-18 | 1995-06-27 | Xerox Corporation | Edge crossing circuitry for SIMD architecture |
US5450603A (en) * | 1992-12-18 | 1995-09-12 | Xerox Corporation | SIMD architecture with transfer register or value source circuitry connected to bus |
-
1992
- 1992-12-18 US US07/993,938 patent/US5651121A/en not_active Expired - Lifetime
-
1993
- 1993-12-08 EP EP93309860A patent/EP0602886B1/en not_active Expired - Lifetime
- 1993-12-08 DE DE69328070T patent/DE69328070T2/de not_active Expired - Lifetime
- 1993-12-17 JP JP31778593A patent/JP3584053B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5651121A (en) | 1997-07-22 |
DE69328070D1 (de) | 2000-04-20 |
EP0602886B1 (en) | 2000-03-15 |
JPH06222918A (ja) | 1994-08-12 |
EP0602886A2 (en) | 1994-06-22 |
DE69328070T2 (de) | 2000-07-13 |
EP0602886A3 (en) | 1994-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3584053B2 (ja) | 複合オペランド内の多ビット要素を選択するためのマスク | |
US5408670A (en) | Performing arithmetic in parallel on composite operands with packed multi-bit components | |
US4635292A (en) | Image processor | |
JP3637923B2 (ja) | 処理装置を作動させる方法 | |
US6370558B1 (en) | Long instruction word controlling plural independent processor operations | |
US6173394B1 (en) | Instruction having bit field designating status bits protected from modification corresponding to arithmetic logic unit result | |
US5841684A (en) | Method and apparatus for computer implemented constant multiplication with multipliers having repeated patterns including shifting of replicas and patterns having at least two digit positions with non-zero values | |
US7536430B2 (en) | Method and system for performing calculation operations and a device | |
US5220525A (en) | Recoded iterative multiplier | |
US5506799A (en) | Booth array multiplying circuit having carry correction | |
US5949920A (en) | Reconfigurable convolver circuit | |
US9910826B2 (en) | SIMD implementation of stencil codes | |
US6173305B1 (en) | Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder | |
US5623683A (en) | Two stage binary multiplier | |
US4949295A (en) | Transformation of divisor and dividend in digital division | |
US4677583A (en) | Apparatus for decimal multiplication | |
JPH09288722A (ja) | 高性能バンド結合機能 | |
US7167885B2 (en) | Emod a fast modulus calculation for computer systems | |
JP2002519957A (ja) | 符号関数を処理する方法および装置 | |
US20070083584A1 (en) | Integrated multiply and divide circuit | |
JP2001084242A (ja) | 可変演算プロセッサ | |
US20220334799A1 (en) | Method of Performing Hardware Efficient Unbiased Rounding of a Number | |
JP2862388B2 (ja) | 超高速画像処理システムのフィルタリング処理方式 | |
Suchitra et al. | Accelerating rotation of high-resolution images | |
ASHER et al. | Adaptive booth algorithm for three-integers multiplication for reconfigurable mesh |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040312 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040610 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040702 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040802 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080806 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080806 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090806 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090806 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100806 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110806 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110806 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120806 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |