JPH06222918A - 複合オペランド内の多ビット要素を選択するためのマスク - Google Patents

複合オペランド内の多ビット要素を選択するためのマスク

Info

Publication number
JPH06222918A
JPH06222918A JP5317785A JP31778593A JPH06222918A JP H06222918 A JPH06222918 A JP H06222918A JP 5317785 A JP5317785 A JP 5317785A JP 31778593 A JP31778593 A JP 31778593A JP H06222918 A JPH06222918 A JP H06222918A
Authority
JP
Japan
Prior art keywords
operand
mask
data item
bit
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.)
Granted
Application number
JP5317785A
Other languages
English (en)
Other versions
JP3584053B2 (ja
Inventor
Daniel Davies
ダニエル・デイビース
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xerox Corp
Original Assignee
Xerox Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xerox Corp filed Critical Xerox Corp
Publication of JPH06222918A publication Critical patent/JPH06222918A/ja
Application granted granted Critical
Publication of JP3584053B2 publication Critical patent/JP3584053B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Abstract

(57)【要約】 【目的】 複数の多ビット要素データ項目を含む複合オ
ペランド内部に存在する要素データ項目の部分集合に対
して並列的に演算を行なう技術を提供する。 【構成】 マスクオペランドは複数の多ビット要素デー
タ項目を有する複合オペランドを用いて得る。マスクオ
ペランドと複合オペランドに対して論理演算を行ない、
要素の部分集合を選択する。ついで選択した要素に対し
てその他の演算を実行する。マスクオペランドとその反
転を用いて、オペランド内の位置の揃っている要素のそ
れぞれの対の極大または極小を選択するなどによって他
の2つのオペランドを併合する。マスクオペランドを用
いて画像を濾過することで、閾値以上の画素、定数に等
しい画素、またはある範囲内の画素を選択し、2つの画
像を比較または統合し、乗算、除算、または閾値旋回を
実行し、またはより一般的にはデータ駆動型分岐の関係
する何らかの画像処理演算を実行することが出来る。

Description

【発明の詳細な説明】
【0001】本発明は複数データ項目について選択的に
演算を実行する技術に関する。
【0002】従来技術の多くは複数データ項目に対して
選択的に演算を実行している。その幾つかの例は、それ
ぞれのデータ項目が画像内の画素に関連し得るような画
像処理の分野にみられる。
【0003】ブルームバーグ(Bloomberg )らの米国特
許第5,048,109号(ブルームバーグ109号)
では文書の反転表示部分を検出するための技術を開示し
ている。その第4段59行から64行では原本画像内の
注目している領域に対応する実質的にオン画素で詰まっ
た領域を含む画像としてマスクが定義されている。図1
aに関連して説明されているように、グレースケール・
スキャナは画素当たり複数ビットを出力可能で、またグ
レースケールの走査は2進化して反転表示画像(HI)
を生成できる。図1bに関連して説明されているよう
に、反転表示になっていない領域から画素を除去しつつ
反転表示領域はその全体を残すことによって、HIから
反転表示領域(HR)マスクを生成できる。HRマスク
は各種の方法に利用が可能である。
【0004】画像処理におけるマスクを生成使用するた
めのその他の技術はブルームバーグの米国特許第5,0
65,437号およびブルームバーグらの米国特許第
5,131,049号に開示されている。
【0005】マホーニー(Mahoney )のヨーロッパ特許
第460,970号では第1に選択演算を実行して類似
した値でラベル付けした一組の画素を選択し、ついで選
択した画素の組に処理を施す選択的処理技術を開示して
いる。
【0006】本発明では、グレースケールまたはカラー
画素値などの多ビットデータ項目を処理する上での問題
を取り扱う。
【0007】多ビットデータ項目の演算は条件式である
ことが多い。基準に合致するデータ項目についてだけ演
算を実行するが、その他のデータ項目には波及しない。
つまり選択的にデータ項目に対して演算する必要がある
ことが多い。
【0008】従来技術をデータ項目に選択的演算を行な
うために使用することが出来る。マスクを生成して前出
のブルームバーグ109号に記載されているように使用
することが可能である。選択的処理は前出のマホーニー
が記載したように実行することが可能である。
【0009】従来技術において、単一の処理装置(proce
ssor) は一度に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は複合オペランド1
0から生成でき、「10」に等しい値を有する複合オペ
ランド10内の要素だけを選択するという意味において
これはフィルタである。つまり、マスクオペランドは要
素12と位置の揃ったビット桁(bit position)22でオ
フとなり、要素14と位置の揃ったビット桁24でオン
となり、要素16と位置の揃ったビット桁26でオフと
なる。
【0033】複合オペランド10とマスクオペランド2
0がAND処理(論理積)されると、結果30は結果デ
ータ項目32、34、36を含むことになる。ビット桁
22と26がオフなのでデータ項目32と36はそれぞ
れ論理積演算の結果として0のみを含むが、一方でデー
タ項目34はビット桁24がオンなので要素14からの
値「10」を有している。
【0034】図2はソフトウェア製品60を示し、これ
は図2に図示したのと同様な部材を含むシステム内で使
用することが出来る製造物である。ソフトウェア製品6
0は保存媒体アクセス装置64からアクセス可能なデー
タ保存媒体62を含む。データ保存媒体62はたとえば
1つまたはそれ以上のフロッピーディスクの組などの磁
気媒体、1つまたはそれ以上のCD−ROMの組などの
光学媒体、半導体メモリ、またはデータを保存するため
に適切な何らかのほかの媒体であってよい。
【0035】データ保存媒体62は保存媒体アクセス装
置64がたとえばマイクロプロセッサなどで有り得る処
理装置66に提供可能なデータを保存する。処理装置6
6は入力回路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を含む。処理装置6
6はたとえば従来のマイクロプロセッサであってもよ
い。処理桁92のそれぞれは1ビットについての演算を
実行することが出来る。処理回路90はアレイを構成さ
せるように処理桁92を対にして接続する桁接続回路(p
osition 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ビットのシフト回路1
26は隣接する最上位ビットから最下位ビットへのフラ
グビットの移動を迅速に行なえるような任意の性能拡張
である。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と13
4を生成した演算から得られる。フラグビット132は
部分行列136内の要素が要素の第1の部分集合内にあ
ることを表わしており、フラグビット134は部分病裂
138内の要素が第2の部分集合内にあることを表わし
ている。
【0052】オペランド130はフラグ選択オペランド
140とAND演算(論理積)される。フラグ選択オペ
ランド140はフラグビット桁142および144でオ
ンの値またフラグビットを含まないすべての桁でオフの
値を有する。つまりフラグビット・オペランド150は
フラグビット値152および154とフラグビットを含
まない桁では「0」を有することになる。
【0053】シフトしたフラグビット・オペランド16
0と170はフラグビット・オペランド150の右方向
へのシフトから得られ、フラグビット値162および1
64は右方向に1ビットシフトされておりまたフラグビ
ット値172および174は右向きに2ビットシフトさ
れている。つまりオペランド150、160、170に
対する論理和演算でマスクオペランド180が得られ
る。
【0054】マスクデータ項目182はフラグビット1
32と要素136のビット桁に均一に値「1」を含む。
マスクデータ項目184はフラグビット134と要素1
38のビット桁に均一に値「0」を含む。
【0055】図6の論理和演算は段階的に直前の結果と
それぞれのシフト演算から得られたシフトしたフラグビ
ット・オペランドと論理和演算を行ない次の結果を生成
するように実行することが可能である。
【0056】図6の技術を変更してAND(論理積)演
算を用いることが可能である。フラグビット以外のビッ
トはフラグビット・オペランド内で値「1」から開始し
てこれを可能にすることが出来る。
【0057】図6の技術は要素の端部でまたはこれに隣
接してのどちらかにフラグビットを有して開始できる。
それぞれの要素が隣接するバッファビットを有する場
合、フラグビットはバッファビット内で始まりこれもバ
ッファビットを含むマスクデータ項目を取得することが
可能である。ただしフラグビットが要素の最下位ビット
にある場合には、図7の技術がより効率的であろう。
【0058】フラグビット・オペランド200はフラグ
ビット202と204を含む。フラグビット202は要
素206の最下位ビットであり、一方フラグビット20
4は要素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を有しその他のすべ
てのビットで対向する値を有するマスクデータ項目22
2および224を含む。マスクオペランド220は最上
位ビットが使用中に影響を受けないバッファビットであ
る場合には直接使用することが出来る。または最上位ビ
ットには論理積または論理和演算によってすべて均一な
値を与えておいてもよい。またはXOR(排他的論理
和)演算により最上位ビットを反転させるかまたはその
他のすべてのビットを反転させるかのいずれかを実行す
ることも出来る。
【0063】図7の技術はフラグビット・オペランド2
00が効率的に得られる場合は図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」を有し、要素2
54は値「00」、また要素256は値「11」を有し
ている。
【0071】マスクオペランド260は図1のマスクオ
ペランド20の反転で、マスクデータ項目262、26
4、266はそれぞれマスクデータ項目22、24、2
6から反転したものである。その結果、マスクオペラン
ド260および20は補数の関係にある。
【0072】複合オペランド250およびマスクオペラ
ンド260を論理積演算して結果データ項目272、2
74、276を有する結果270が得られる。マスクデ
ータ項目262と266がオンであるため、データ項目
272は値「01」を有しまたデータ項目276は値
「11」を有している。
【0073】結果270を図1からの結果30と論理和
演算して併合した結果280が得られる。データ項目2
82はデータ項目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は乗算を実行するためにどのように
マスクオペランドを使用できるかを示している。囲み3
00の動作はそれぞれが複数の多ビット要素データ項目
を有する乗数と被乗数の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の動作は拡散
演算を実行することが出来る。左向きのシフトが囲み3
18で実行される場合、拡散演算ではそれぞれの要素の
最上位ビットに隣接するK個の「0」ビットを加算で
き、右向きのシフトが実行される場合には、拡散演算は
最下位ビットに隣接するK個の「0」ビットを加算でき
る。
【0089】有効な結果を保証する別の方法は乗数、被
乗数、積のそれぞれの要素データ項目に隣接してバッフ
ァビットを含めることである。この方法では多くの要素
に対して並列演算が可能であるが、単精度の乗算結果が
生成される。これはそれぞれの積データ項目がKビット
しか含んでいないためである。バッファビットは囲み3
00の動作で含めることが出来、乗数および積では囲み
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の動作はそれぞれのマスクMA
i を左向きに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回の反復の後、囲み44
0の動作で適宜シフトした商を提供する。
【0115】図13の技術は複雑な条件付き作業が条件
分岐を実行するためにマスクオペランドを用いて実施で
きることを示している。
【0116】図14は閾値旋回を表わす。閾値旋回では
1ビットのデータ項目を受信して1ビットのデータ項目
を生成するが、中間の演算では多ビットデータ項目を使
用する。閾値旋回において、構成素子は目的の桁に対し
て定義された桁を有する整数重みの行列である。構成素
子は供給源ビットマップ内に配置されており、ビットマ
ップ内の桁と同じ桁にある整数重みを加算して、和を閾
値と比較する。閾値を越えている場合には宛先の桁は1
となり、それ以外では0となる。
【0117】図14において、供給源と宛先のデータ項
目は例として画素値で表わしているが、図示した実施は
その他のデータ項目のアレイに応用できるものである。
囲み460の動作では供給源の画素を拡散してマスクデ
ータ項目を含み構成素子のそれぞれの整数重みと同じビ
ット数を有するマスクを得ている。囲み462における
動作では囲み460からのマスクを用いて値「1」を有
する供給源画素に対する重みを選択する。構成素子のそ
れぞれの桁について和を得るために選択した重みを加算
する。
【0118】囲み464の動作は和を閾値と比較して宛
先画素の値を表わす符号フラグビットを取得する。囲み
466の動作は囲み464からの結果を部分抽出して宛
先画素だけを選択する。
【0119】図14の技術はすべての構成素子の桁につ
いての和を保持している。本技術はまた重みに対してマ
スクを位置付けるために広範囲のシフトを必要とする。
完了時に和を提供し、和が提供された後に完了した和で
占有されていたメモリを開放し、またより少ないシフト
演算を実行する方法を発見することで、このような非効
率を減少させることが可能となり得る。
【0120】閾値旋回はマスクを用いることなく実行す
ることも出来る。たとえば、一連の供給源ビットを用い
て参照テーブルにアクセスし、幾つかの宛先桁について
の和を取得し、また宛先ビットを生成するために和を取
得して使用することが出来る。
【0121】上述の実施例はマスクオペランドの多数の
使用方法の幾つかを図示したものである。一般に、多く
の演算は従来においてここのデータ項目について条件分
岐を実施する直列処理装置を用いて実施されているよう
なデータ駆動型分岐を含むものである。
【0122】直列演算が幾つかの分岐に関連するが広範
囲な分岐には関係しない場合、充分に効率的な並列演算
に変換することが可能である。並列演算はたとえばSM
ID装置上で実施することが可能である。
【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 Mathematica
l 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 フラグビット・オペランド、16
6 Kビットシフト回路、170 フラグビット・オペ
ランド、180 マスクオペランド、182,184
マスクデータ項目、200 フラグビット・オペラン
ド、202,204 フラグビット、206要素データ
項目、208 要素、210 定数オペランド、21
2,214定数データ項目、220 マスクオペラン
ド、222,224 マスクデータ項目、226,22
8 フラグビット値、250 複合オペランド、252
要素、260 マスクオペランド、262,264,
266 マスクデータ項目、270 結果、272,2
74,276 結果データ項目、280 併合結果

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 それぞれが1ビット以上を含む複数の要
    素データ項目を含む複合オペランドを用いてマスクに関
    連する演算を実行するために処理装置を作動させること
    であって、前記マスクに関連する演算が前記複合オペラ
    ンドからマスクオペランドを取得する演算またはマスク
    オペランドと前記複合オペランドを用い並列的に実行さ
    れる論理演算であることと、 前記マスクオペランドが前記複合オペランド内のそれぞ
    れのビットについて前記複合オペランド内のビットとそ
    れぞれの位置がそろえてあるビットを含み、前記要素デ
    ータ項目が第1の部分集合と第2の部分集合を含み、前
    記第1の部分集合内のビットと位置が揃っている前記マ
    スクオペランド内のそれぞれのビットが第1の値を有
    し、前記第2の部分集合内のビットと位置が揃っている
    前記マスクオペランド内のそれぞれのビットが第2の値
    を有することを含む、処理装置を作動させるための方
    法。
  2. 【請求項2】 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の値の一方となるように前記処理回
    路を作動させる段階を含む、前記方法。
  3. 【請求項3】 1ビットを用いた演算をそれぞれが実行
    するための複数の処理桁を有しオペランドを用いて並列
    的に演算を実行するための処理回路を含む処理装置を作
    動させるための方法であって、 それぞれが1ビット以上を含む複数の要素データ項目を
    含みそれぞれが前記処理回路内の処理桁のそれぞれの部
    分集合に提供される複合オペランドを前記処理回路に提
    供する段階と、 前記複合オペランドを用いて前記要素データ項目内のそ
    れぞれにビットについて前記要素データ項目内のビット
    と位置が揃っているそれぞれのビットを含む要素データ
    項目のそれぞれの前記部分集合内にそれぞれのマスクデ
    ータ項目を取得するマスク取得演算を並列的に実行し、
    前記要素データ項目が第1の部分集合と第2の部分集合
    を含み、前記第1の部分集合内の要素データ項目内のビ
    ットと位置が揃えてあるマスクデータ項目内のそれぞれ
    のビットが第1の値を有し、前記第2の部分集合内の要
    素データ項目内のビットと位置が揃えてあるマスクデー
    タ項目内のそれぞれのビットが第2の値を有し、前記マ
    スクデータ項目をあわせてマスクオペランドを構成する
    ように前記処理回路を作動させる段階を含む、前記方
    法。
JP31778593A 1992-12-18 1993-12-17 複合オペランド内の多ビット要素を選択するためのマスク Expired - Fee Related JP3584053B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US993938 1992-12-18
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

Publications (2)

Publication Number Publication Date
JPH06222918A true JPH06222918A (ja) 1994-08-12
JP3584053B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016026365A (ja) * 2009-12-22 2016-02-12 インテル・コーポレーション プロセッサ、システムオンチップ(SoC)、ハンドヘルドデバイス、および装置

Families Citing this family (40)

* Cited by examiner, † Cited by third party
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
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method 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
US20030054987A1 (en) * 1997-06-16 2003-03-20 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
JPWO2002037260A1 (ja) * 2000-10-24 2004-03-11 日新電機株式会社 乱数発生装置
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
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
US20020184566A1 (en) 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
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
US7467178B2 (en) 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US6976158B2 (en) 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US7020788B2 (en) 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US6937084B2 (en) 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US6952711B2 (en) 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US6985986B2 (en) * 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US6975679B2 (en) 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
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
US8296548B2 (en) * 2006-01-18 2012-10-23 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
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
CN112799637B (zh) * 2021-01-22 2023-03-14 西安电子科技大学 一种并行环境下高吞吐量的模逆计算方法及系统

Family Cites Families (31)

* Cited by examiner, † Cited by third party
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
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
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
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
WO1993011500A1 (en) * 1991-11-27 1993-06-10 Seiko Epson Corporation Pixel modification unit
US5408670A (en) * 1992-12-18 1995-04-18 Xerox Corporation Performing arithmetic in parallel on composite operands with packed multi-bit components
US5450603A (en) * 1992-12-18 1995-09-12 Xerox Corporation SIMD architecture with transfer register or value source circuitry connected to bus
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
US5428804A (en) * 1992-12-18 1995-06-27 Xerox Corporation Edge crossing circuitry for SIMD architecture
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
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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016026365A (ja) * 2009-12-22 2016-02-12 インテル・コーポレーション プロセッサ、システムオンチップ(SoC)、ハンドヘルドデバイス、および装置
JP2018160288A (ja) * 2009-12-22 2018-10-11 インテル・コーポレーション プロセッサ、方法、プログラム、および機械可読記録媒体
US10372455B2 (en) 2009-12-22 2019-08-06 Intel Corporation Hand held device to perform a bit range isolation instruction
US10579380B2 (en) 2009-12-22 2020-03-03 Intel Corporation System-on-chip (SoC) to perform a bit range isolation instruction
US10579379B2 (en) 2009-12-22 2020-03-03 Intel Corporation Processor to perform a bit range isolation instruction
US10656947B2 (en) 2009-12-22 2020-05-19 Intel Corporation Processor to perform a bit range isolation instruction

Also Published As

Publication number Publication date
EP0602886A2 (en) 1994-06-22
US5651121A (en) 1997-07-22
DE69328070D1 (de) 2000-04-20
DE69328070T2 (de) 2000-07-13
EP0602886B1 (en) 2000-03-15
JP3584053B2 (ja) 2004-11-04
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
US7536430B2 (en) Method and system for performing calculation operations and a device
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
US7774400B2 (en) Method and system for performing calculation operations and a device
KR100291383B1 (ko) 디지털신호처리를위한명령을지원하는모듈계산장치및방법
US5506799A (en) Booth array multiplying circuit having carry correction
JP3637923B2 (ja) 処理装置を作動させる方法
JP3244506B2 (ja) 小型乗算器
US20040122887A1 (en) Efficient multiplication of small matrices using SIMD registers
US6820102B2 (en) DSP unit for multi-level global accumulation
JP3516503B2 (ja) 電子乗算および加算装置および方法
US4477879A (en) Floating point processor architecture which performs square root by hardware
US6173305B1 (en) Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder
US7167885B2 (en) Emod a fast modulus calculation for computer systems
Nakano Prefix-sums algorithms on reconfigurable meshes
EP1936492A1 (en) SIMD processor with reduction unit
JPH07271557A (ja) データ処理乗算装置および方法
JP2002519957A (ja) 符号関数を処理する方法および装置
US20070083584A1 (en) Integrated multiply and divide circuit
US20220334799A1 (en) Method of Performing Hardware Efficient Unbiased Rounding of a Number
WO2008077803A1 (en) Simd processor with reduction unit
CN113590083A (zh) 运算控制方法、装置、系统、存储介质及处理器
JP2777265B2 (ja) 高基数開平演算装置

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