JPH09222992A - 演算処理方法 - Google Patents

演算処理方法

Info

Publication number
JPH09222992A
JPH09222992A JP8021001A JP2100196A JPH09222992A JP H09222992 A JPH09222992 A JP H09222992A JP 8021001 A JP8021001 A JP 8021001A JP 2100196 A JP2100196 A JP 2100196A JP H09222992 A JPH09222992 A JP H09222992A
Authority
JP
Japan
Prior art keywords
register
byte
bit
subtraction
result
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.)
Pending
Application number
JP8021001A
Other languages
English (en)
Inventor
Yoshio Horiuchi
内 芳 雄 堀
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP8021001A priority Critical patent/JPH09222992A/ja
Priority to US08/778,328 priority patent/US5754461A/en
Publication of JPH09222992A publication Critical patent/JPH09222992A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/552Powers or roots, e.g. Pythagorean sums
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 動き補償のためのベクトル距離計算などにお
いて、kビットの要素同士の多数回の減算をk×mビッ
ト長レジスタを用いて高速かつ効率的に行う。 【解決手段】 符号なし8ビツトからなる要素同士の減
算(ai−bi)を32ビット長レジスタをもつ演算装置
で行う場合、まず被減数である8ビットデータ4組をレ
ジスタR1にロードし、全体を1ビット右シフトし、バ
イトごとに最上位ビットをONする。次に減数の4組に
ついて同様にレジスタR2にロードして1ビット右シフ
トし、バイトの最上位ビットをOFFする。次に減算処
理(R1−R2)を行う。このとき各バイトでの桁借り
は防止されている。この後、この減算結果に基づきバイ
トごとにテーブルを参照して真の減算結果を得る。各バ
イトの最下位ビットが丸められて減算されるため誤差が
生じるが、ベクトル距離計算全体に及ぼす影響は小さ
い。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ・シ
ステムを用いて四則演算を含む演算処理を行うための演
算処理方法に係り、特に、厖大な繰り返し量の減算処理
を含んだ演算処理を高速且つ効率的に行うための演算処
理方法に関する。更に詳しくは、本発明は、符号なし
(unsigned)のkビットからなる各要素同士の
減算を多数回行うことを含んだ演算処理を、k×mビッ
ト長のレジスタを持つ演算装置を用いて高速且つ効率的
に行うための演算処理方法に関する。
【0002】
【従来の技術】昨今の技術革新に伴い、パーソナル・コ
ンピュータやワークステーションなど、各種コンピュー
タ・システムが開発され、広汎に普及してきている。
【0003】これらコンピュータ・システムは、例えば
グラフィック処理などのような厖大な計算を要する処理
に利用される。特に、カラー動画像を圧縮・伸長する際
には、厖大な計算を要する。
【0004】カラー動画像の圧縮・伸長方式の1つであ
るMPEG(Motion Picture Expe
rts Group)1に従ったカラー動画像の圧縮方
式では、動き補償、すなわちフレーム間予測に基づく時
間的な圧縮を行う。この「動き補償によるフレーム間予
測」の原理は、動画像のフレーム間(またはフィールド
間)の相関を利用して、現フレームと前フレームの間の
画像の動きを求め、この動きに基づいて現フレームの画
像を予測し、これと前フレームの間で予測誤差を求め、
この予測誤差情報と動き情報とを符号化する、というも
のである。ここで、フレーム間の画像の動きを求める方
法としては、「ブロック・マッチング法」と呼ばれる方
法が広く知られている。ブロック・マッチング法とは、
フレーム内の例えば16画素四方の矩形を1単位のマク
ロブロックとし、マクロブロックを256要素からなる
ベクトルとして扱う方法であり、ベクトル間距離が小さ
いマクロブロック同士を「似ている」と考える訳であ
る。
【0005】幾何学の分野では既に周知なように、例え
ばN次元上の2つのベクトルA(a0,a1,a2,…,
N-2,aN-1)及びB(b0,b1,b2,…,bN-2,b
N-1)間のユークリッド距離は、下式(1)によって定
義されている。
【0006】
【数1】
【0007】ベクトルは、例えば256個の要素からな
り、また、各要素は通常8ビットの数値(すなわち2進
数表示では符号なしの8桁)で構成される。したがっ
て、式(1)上では、各要素a0,a1…、及びb0,b1
…はchar形式、すなわち8ビット長の符号なし2進
数データである。また、2つの動きベクトルA及びB間
の距離を計算するには、(ai−bi)という8ビット
(=1バイト)のデータ間の減算処理を少なくとも25
6(=N)回含んでいる訳である(但し、iは0≦i≦
255の整数)。
【0008】ところで、コンピュータ・システム上で
は、四則計算を含む演算処理のほとんどは、メイン・コ
ントローラであるCPUに委ねられる。CPUによる演
算処理は、通常、レジスタ(高速にアクセス可能なCP
U内の記憶素子)を介して行われる。すなわち、メモリ
から取り出された命令や処理データは、一旦レジスタに
書き込まれる。CPUの各演算ユニットは、このレジス
タにアクセスして、所定の演算処理を施し、処理結果を
再びレジスタに戻すようになっているのである。CPU
の演算ユニットには、整数同士の算術演算と論理演算
(AND,OR,NOTなど)を担当する整数論理演算
ユニット(ALU:Arithmetic and Logic Unit)と、
浮動小数点演算を担当する浮動小数点演算ユニット(F
PU:Floating-Point Unit)とがある。これら各演算
ユニットは、一般には、それぞれ専用のレジスタを複数
本備えている。換言すれば、各演算ユニットはこのレジ
スタ幅単位で演算処理を行う能力を持っていることにな
る。最近では、CPUの高パワー化が進み、これに伴っ
て、CPUの入出力用レジスタのビット幅も増大してき
た。例えば、米IBM社、米Motorola社及び米
Apple社が共同開発したRISC(Reduced Instru
ction Set Computer:縮小命令セット)型のCPUチッ
プ"PowerPC 601"("PowerPC"は米I
BM社の商標)/1、あるいは米Intel社製のCPU
チップ"Pentium"では、ALUのレジスタはlo
ng形式、すなわち32ビット(=4バイト)構成とな
っている。また、一部のワークステーションなどでは、
long−long形式、すなわち64ビット構成と、
さらにサイズの大きいものもある。このような長大なレ
ジスタを用いることにより、CPUは一度に多くのデー
タを取り込み、且つ取り込んだデータを自身の高パワー
によって高速に捌くことができる訳である。
【0009】ここで、動き補償のためのベクトル距離計
算における、CPUの計算量について、簡単に考察して
みる。ベクトルの各要素は、通常、符号なし(unsi
gned)の8ビットの数値(すなわち2進数表示で8
桁)で構成される。したがって、1回のベクトル距離計
算では要素の個数に等しい256個の減算処理を含むこ
とになる。また、1つの動きベクトルを探索するために
画面/2/全体を単純に走査する場合には、ベクトルの距
離計算は20000回以上にも及ぶことになる。実際に
は、走査する範囲を限定したり、走査方法の効率化を図
るなどの工夫が施されるであろうが、それでもCPUの
リソースの消費は多大なものである。
【0010】一方、ベクトルの各要素がchar形式す
なわち8ビット長であれば、long形式すなわち32
ビット長のALUのレジスタには、単純には、一度に4
個の要素の値を書き込むことができる。1回当りのデー
タ書き込み量を増やせば、その分演算処理が速くなるの
で、CPUのリソースを解放することが期待できる。し
かしながら、CPUは、自身のレジスタに書き込まれた
32ビットの値を、32ビット構成の単一の値としてし
か取り扱うことができない。すなわち、1バイトのデー
タを同時に4組レジスタに書き込んだとしても、演算処
理する際には、各1バイト間の境界は全く守られないの
である。
【0011】例えば、ai−bi,ai+1−bi+1,ai+2
−bi+2,ai+3−bi+3という4組の減算処理を行う場
合、ALUの第1のレジスタには4組の被減数ai,a
i+1,ai+2,及びai+3を同時に書き込み、また、AL
Uの第2のレジスタには4組の減数bi,bi+1
i+2,及びbi+3を同時に書き込むことができる(図6
(a)参照)。このような同時書き込みにより、1回の
レジスタへの入出力動作によって4組の減算処理を一括
して行うことを期待したい。しかしながら、これら4組
の減算処理をする場合に、ALUは32ビット構成の各
レジスタ内の値を単一の数値としてしか取り扱わない。
すなわち、第1及び第2のレジスタには、実際には4組
の被減数及び減数が書き込まれているが、ALUから見
れば、レジスタ内の各減数間の垣根(図6中の破線部
分)は存在しない。換言すれば、各1バイトの境界は何
ら維持されていないのである。この結果、被減数よりも
減数の方が値が大きい場合(例えば図6に示したレジス
タのうち、上位から3バイト目及び4バイト目)、AL
Uは左隣の上位バイトから桁借りを起こしてしまう。と
ころが、レジスタの各1バイト毎に別個の独立した演算
データが書き込まれているため、上位バイトから桁借り
してしまうと、計算結果が全く狂ってしまう。
【0012】整数同士の減算処理において、減数の方が
被減数よりも大きな値であること(すなわち桁借りを要
すること)は珍しくない。したがって、ALUのレジス
タのビット長だけを考えて、4組の減数及び被減数を同
時にそのまま書き込んだ場合、桁借りの発生のため、各
バイト間の境界は維持されない。桁借りによる誤算を防
止するには、ALUのレジスタには1組の減数及び被減
数を逐次入れること、すなわち1回のレジスタの入出力
で1組の減算処理しか行わないことが単純且つ容易な解
決方法であろう。しかしながら、32ビット長もあるレ
ジスタを用いながら8ビット単位でしか演算処理しない
のは、効率的と言い難い。
【0013】《注釈》 /1/:PowerPCでは、殆どの命令はレジスタのみ
を使用し、メモリに直接アクセスするのはロードやスト
アなどの一部の命令のみである。加えて、加減算、論理
演算などの命令は、結果をレジスタに格納することを含
めて、1サイクルで処理が完了する。他のRISC型C
PUもおそらく同様。 /2/:例えば、代表的な画像フォーマットであるCIF
(Common IntermediateFormat)の画面。CIF画面は
176×144画素で構成される。
【0014】
【発明が解決しようとする課題】本発明の目的は、コン
ピュータ・システムを用いて四則演算を含む演算処理を
行うための、優れた演算処理方法優を提供することにあ
る。
【0015】本発明の更なる目的は、厖大な繰り返し量
の減算処理を含んだ演算処理を高速且つ効率的に行うた
めの、優れた演算処理方法を提供することにある。
【0016】本発明の更なる目的は、符号なしkビット
からなる各要素同士の減算を多数回含んだ演算処理を、
k×mビット長のレジスタを持つ演算装置を用いて高速
且つ効率的に行うための、優れた演算処理方法を提供す
ることにある。
【0017】
【課題を解決するための手段】本発明は、上記課題を参
酌してなされたものであり、その第1の側面は、符号な
しkビットからなるデータ同士の減算を少なくともN回
含む演算処理を、k×mビット長のレジスタを1以上持
つ演算装置を用いて行うための演算処理方法において
(但し、k,m,Nはともに正の整数で、N≧m)、
(a)m組の被減数を前記演算装置の第1のレジスタの
各kビットに書き込む段階と、(b)第1のレジスタを
1ビットだけ下位にシフトする段階と、(c)第1のレ
ジスタ中の各kビットの最上位ビット位置に1を与える
段階と、(d)m組の減数を前記演算装置の第2のレジ
スタの各kビットに書き込む段階と、(e)第2のレジ
スタを1ビットだけ下位にシフトする段階と、(f)第
2のレジスタ中の各kビットの最上位ビット位置に0を
与える段階と、(g)前記(c)段階で得た第1のレジ
スタの内容から前記(f)段階で得た第2のレジスタの
内容を減算処理して、その結果を前記演算装置の第3の
レジスタに書き込む段階と、(h)前記(g)段階で得
た第3のレジスタの上位からkビット毎に取り出す段階
と、(i)前記(h)段階で取り出されたkビットの示
す値を元にして、予め与えられたテーブルを参照し、該
参照結果を該kビットの被減数及び減数による減算結果
とする段階と、を含むことを特徴とする演算処理方法で
ある。
【0018】また、本発明の第2の側面は、符号なし8
ビツト(=1バイト)からなるデータ同士の減算を少な
くともN回含む演算処理を、32ビット(=4バイト)
長のレジスタを1以上持つ演算装置を用いて行うための
演算処理方法において(但し、Nは正の整数で、N≧
4)、(a)4組の被減数を前記演算装置の第1のレジ
スタの各1バイトに書き込む段階と、(b)第1のレジ
スタを1ビットだけ下位にシフトする段階と、(c)第
1のレジスタ中の各1バイトの最上位ビット位置に1を
与える段階と、(d)4組の減数を前記演算装置の第2
のレジスタの各1バイトに書き込む段階と、(e)第2
のレジスタを1ビットだけ下位にシフトする段階と、
(f)第2のレジスタ中の各1バイトの最上位ビット位
置に0を与える段階と、(g)前記(c)段階で得た第
1のレジスタの内容から前記(f)段階で得た第2のレ
ジスタの内容を減算処理して、その結果を前記演算装置
の第3のレジスタに書き込む段階と、(h)前記(g)
段階で得た第3のレジスタの上位から1バイト毎に取り
出す段階と、(i)前記(h)段階で取り出された1バ
イトの示す値を元にして、予め与えられたテーブルを参
照し、該参照結果を該1バイトの被減数及び減数による
減算結果とする段階と、を含むことを特徴とする演算処
理方法である。
【0019】また、本発明の第3の側面は、符号なし8
ビツト(=1バイト)からなる要素同士のN回の減算
(ai−bi:但しiは0〜N−1の正の整数)を、32
ビット(=4バイト)長のレジスタを1以上持つ演算装
置を用いて行うための演算処理方法において(但し、N
は正の整数で、N≧4)、(a)4組の被減数ai,ai
+1,ai+2,及びai+3を前記演算装置の第1のレジスタ
の各1バイトに書き込む段階と、(b)第1のレジスタ
を1ビットだけ下位にシフトする段階と、(c)第1の
レジスタ中の各1バイトを、夫々の最上位ビット位置に
1を与えたa'i,a'i+1,a'i+2,及びa'i+3にする段
階と、(d)4組の減数bi,bi+1,bi+ 2,及びbi+3
を前記演算装置の第2のレジスタの各1バイトに書き込
む段階と、(e)第2のレジスタを1ビットだけ下位に
シフトする段階と、(f)第2のレジスタ中の各1バイ
トを、夫々の最上位ビット位置に0を与えたb'i,b'
i+1,b'i+2,及びb'i+3にする段階と、(g)前記
(c)段階で得た第1のレジスタの内容a'i,a'i+1
a'i+2,a'i+3から前記(f)段階で得た第2のレジス
タの内容b'i,b'i+1,b'i+2,b'i+3を減算して、各
1バイト毎の差cj(=a'i+j−b'i+j:但し、jは0
〜3の正の整数)を前記演算装置の第3のレジスタの各
1バイトに書き込む段階と、(h)第3のレジスタの上
位から1バイト毎にcjを取り出す段階と、(g)予め
与えられたテーブル上の値cjに対応するフィールドを
参照して、該フィールドに格納された値を被減数ai+j
及び減数bi+jによる減算結果として採用する段階と、
を含むことを特徴とする演算処理方法である。
【0020】
【作用】32ビット長のレジスタを持つALUを用い
て、8ビットで構成される要素同士のN回の減算処理
(ai−bi:但しiは0〜N−1の正の整数で、N≧
4)を行う場合を例にとって、本発明の作用を概略的に
説明する。
【0021】(1)まず、ALUの第1のレジスタに
は、4組の被減数ai,ai+1,ai+2,及びai+3が書き
込まれる。また、ALUの第2のレジスタには、4組の
減数bi,bi+1,bi+2,及びbi+3が書き込まれる。例
えば、(ai,ai+1,ai+2,ai+3)=(31,15
7,144,11)であり、且つ、(bi,bi+1,b
i+2,bi+3)=(200,2,207,139)であれ
ば、それぞれのレジスタには、図2(a)及び図3
(a)に示すように、各要素の2進数値が書き込まれる
ことになる。
【0022】(2)次いで、第1のレジスタを全体とし
て1ビットだけ下位(すなわち右側)にシフトし、さら
に、第1のレジスタ中の各1バイトの最上位ビット位置
に1を与える。この結果、第1のレジスタ中の各1バイ
トは、それぞれ、最下位ビットが削られて(すなわち丸
め込まれて)下位に1ビットだけシフトするとともに、
最上位ビットに1が与えられたことになる。例えば、上
位1バイト目に格納されたaiの2進数表示が"0001
1111"であれば"10001111"となり、また、
同2バイト目に格納されたai+1の2進数表示が"100
11101"であれば"11001110"となる。ここ
で、各被減数の最上位ビット位置に1を与えるのは、後
の減算処理の際に桁借りが発生するのを防止する、すな
わち各1バイト間の境界を保証するためである。
【0023】(3)また、第2のレジスタを全体として
1ビットだけ下位(すなわち右側)にシフトし、さら
に、第2のレジスタ中の各1バイトの最上位ビット位置
に0を与える。この結果、第2のレジスタ中の各1バイ
トは、それぞれ、最下位ビットが削られて(すなわち丸
め込まれて)下位に1ビットだけシフトするとともに、
最上位ビットに0が与えられたことになる。例えば上位
1バイト目に格納されたbiの2進数表示が"11001
000"であればb'iは"01100100"となり、ま
た、同2バイト目に格納されたbi+1の2進数表示が"0
0000010"であればb'i+1は"00000001"
となる。ここで、各減数の最上位ビット位置に0を与え
るのは、後の減算処理の際に桁借りが発生するのを防止
する、すなわち各1バイト間の境界を保証するためであ
る。
【0024】(4)次いで、第1のレジスタの内容から
第2のレジスタの内容を減算して、この減算結果を第3
のレジスタに書き込む。この減算処理に先駆けて、第1
及び第2のレジスタの各1バイトは、最下位ビットが丸
め込まれて下位(すなわち右側に)に1ビットだけシフ
トしている。さらに第1のレジスタの各1バイトにだ
け、最上位ビットに桁借り発生防止のために1が与えら
れている。したがって、第1のレジスタと第2のレジス
タの間の減算処理は、各1バイト間で桁借りを起こすこ
となく行われる。すなわち、第3のレジスタの上位から
jバイト目には、第1のレジスタの対応するバイト位置
の値a'i+jから第2のレジスタの対応するバイト位置の
値b'i+jを減算した値cj(=a'i+j−b'i+j)がその
まま書き込まれることになる(但し、jは0〜3の整
数)。
【0025】(5)第3のレジスタの各1バイトの値c
0,c1,c2,及びc3自体は、見せかけのものであり、
減算結果を意味しない。このことは、最下位ビットを丸
め込んだことや、被減数の最上位ビットに1を付与した
ことからも、容易に想像されよう。但し、元の被減数a
i+jと減数bi+jとの差(すなわち真の減算結果)と、こ
の見かけ上の演算結果cj(=a'i+j−b'i+j)との間
には対応関係がある。本発明では、両者の対応関係を予
め計算してテーブル状にして管理しておく(本実施例で
は、このテーブルを「距離テーブル」と呼ぶ)。この距
離テーブル上で、演算結果cjに対応するフィールドを
参照すれば、真の減算結果を見い出すことができる。例
えば、見せかけの演算結果cj(=a'i+j−b'i+j)が"
00101011"、すなわち10進数表示で43の場
合、距離テーブル上の43番目のフィールドにアクセス
して、真の減算結果170を見い出すことができる。こ
こで、元の被減数ai(=31)及び減数bi(=20
0)を減算処理したときの絶対値(=169)と1だけ
相違するのは、最下位1ビットの丸め込み誤差に過ぎな
い。
【0026】しかして、本発明に係る演算処理方法によ
れば、kビットからなる各要素同士の減算を多数回含ん
だ演算処理を行う場合、k×mビット長のレジスタを持
つ演算装置に対して、m組の要素を同時に渡すことがで
きる。換言すればm組の減算処理を一括して実行するこ
とができる。したがって、本発明によれば、厖大な繰り
返し量の減算を、高速且つ効率的に行うことができる訳
である。
【0027】例えば、本発明に係る演算処理方法によっ
てベクトル距離計算を行った場合、4バイト単位で処理
を行うため、ループの底での命令数を減らすことができ
る。また、距離テーブルを用いるため、ベクトルの距離
の定義を簡単に、且つ、余計な命令を増やさずに変更す
ることが可能である。また、この距離の定義を動き補償
に用いる場合には、一方のベクトル(例えばベクトルA
(a0,a1,,…,a254,a255))は固定であり、前
処理により予め計算しておくことができるので、処理の
一部をループ外に出して、さらに命令数を減らすことが
できる。例えば、後述する図1では、バイト間の境界保
証のための前処理を施したベクトルA'(a'0,a'1
a'2,…,a'254,a'255)を予め作成しておける。こ
の場合、ステップS20では、前処理済みの各ベクトル
要素a'0,a'1,a'2,…をレジスタR1にロードでき
る。このため、後続のステップS30及びS40を省略
することができる。
【0028】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
【0029】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施例を詳解する。
【0030】図1には、本発明の一実施例である演算処
理方法をフローチャート化して示している。該フローチ
ャートは、各要素が8ビット(=1バイト)からなる2
つのベクトル(a0,a1,a2,…,aN-2,aN-1)及
びB(b0,b1,b2,…,bN-2,bN-1)間のユーク
リッド距離Dの2乗D2(=|AB|2)を求めるための
ものであるとする。但し、各ベクトルの要素は、符号な
しの8ビット値であるとする。
【0031】まず、ステップS10では、初期設定とし
て、SQDz及びインデックス変数iにそれぞれ0を代
入する。但し、SQDとは、距離の2乗(Squared Dist
ance)を意味する。
【0032】次いで、ステップS20では、ALUの第
1のレジスタ(R1)に、被減数としての4バイト分の
要素(ai,ai+1,ai+2,ai+3)をロードする。例え
ば、(ai,ai+1,ai+2,ai+3)=(31,157,
144,11)であれば、レジスタ(R1)には、これ
ら各要素の2進数値を並べた値"00011111:1
0011101:10010000:0000101
1"が書き込まれる(但し、':'は各1バイトを区切る
ために便宜上表記したに過ぎず、レジスタ(R1)中の
実体的な数値ではない。以下同様)。図2(a)を参照
されたい。
【0033】次いで、ステップS30では、第1のレジ
スタ(R1)を全体として1ビットだけ下位(すなわち
右側)にシフトする。この結果、レジスタ(R1)の値
は、図2(b)に示すように、"00001111:1
1001110:11001000:0000010
1"となる。なお、このような演算処理は、例えばC言
語によれば、右方向への1ビットシフトを意味する"R
1=R1>>1"のように記述される。
【0034】次いで、ステップS40では、第1のレジ
スタ(R1)中の各1バイトの最上位ビット位置に1を
与える。この結果、レジスタ(R1)の値は、図2
(d)に示すように、"10001111:11001
110:11001000:10000101"とな
る。なお、このような演算処理は、例えばC言語によれ
ば、"R1=R1|0x80808080"のように記述
される。演算子"|"は論理演算"OR"を意味し、16進
数表示の"80808080"は2進数表示で"1000
0000:10000000:10000000:10
000000"に対応する(図2(c)参照)。したが
って、レジスタR1とこの値の論理和をとることによっ
て、各1バイトの最上位ビットをONすることができる
訳である。
【0035】ステップS30及びS40による処理の結
果、第1のレジスタ(R1)の内容は、"100011
11:11001110:11001000:1000
0101"となる。略言すれば、ステップS30及びS
40によって、レジスタR1の各1バイトには、見せか
けの被減数a'i,a'i+1,a'i+2,及びa'i+3が、それ
ぞれ生成される訳である。ここで、各被減数の最上位ビ
ット位置に1を与えるのは、後の減算処理の際に桁借り
が発生するのを防止する、すなわち各1バイト間の境界
を保証するためである。
【0036】次いで、ステップS50では、ALUの第
2のレジスタ(R2)に、減数としての4バイト分の要
素(bi,bi+1,bi+2,bi+3)をロードする。例え
ば、(bi,bi+1,bi+2,bi+3)=(200,2,2
07,139であれば、レジスタ(R2)には、これら
各要素の2進数値を並べた値"11001000:00
000010:11001111:10001011"
が書き込まれる(但し、':'は各1バイトを区切るため
に便宜上表記したに過ぎず、レジスタ(R2)中の実体
的な数値ではない。以下同様)。図3(a)を参照され
たい。
【0037】次いで、ステップS60では、第2のレジ
スタ(R2)を全体として1ビットだけ下位(すなわち
右側)にシフトする。この結果、レジスタ(R2)の値
は、図3(b)に示すように、"01100100:0
0000001:01100111:1100010
1"となる。なお、このような演算処理は、例えばC言
語によれば、右方向への1ビットシフトを意味する"R
2=R2>>1"のように記述される。
【0038】次いで、ステップS70では、第2のレジ
スタ(R2)中の各1バイトの最上位ビット位置に0を
与える。この結果、レジスタ(R2)の値は、図3
(d)に示すように、"01100100:00000
001:01100111:01000101"とな
る。なお、このような演算処理は、例えばC言語によれ
ば、"R2=R2&0x7F7F7F7F"のように記述
される。演算子"&"は論理演算"AND"を意味し、16
進数表示の"7F7F7F7F"は2進数表示で"011
111111:011111111:01111111
1:011111111"に対応する(図3(c)参
照)。したがって、レジスタR2とこの値の論理積をと
ることによって、各1バイトの最上位ビットをマスクし
てOFFすることができる訳である。
【0039】ステップS60及びS70による処理の結
果、第2の;レジスタ(R2)の内容は、"01100
100:00000001:01100111:010
00101"となる。略言すれば、ステップS60及び
S70によって、レジスタR2の各1バイトには、見せ
かけの減数b'i,b'i+1,b'i+2,及びb'i+3が、それ
ぞれ生成される訳である。ここで、各減数の最上位ビッ
ト位置に0を与えるのは、後の減算処理の際に桁借りが
発生するのを防止する、すなわち各1バイト間の境界を
保証するためである。
【0040】次いで、ステップS80では、それぞれ4
組の見せかけの被減数及び減数を格納した第1のレジス
タ(R1)と第2のレジスタ(R2)とを減算処理し、
その結果を第3のレジスタ(R3)に格納する。この処
理は、例えばC言語によれば、"R3=R1−R2"のよ
うに記述される。ここで、第1のレジスタ(R1)の各
1バイトの最上位ビットは桁借り防止のためONされ、
且つ、第2のレジスタ(R2)の各1バイトの最上位ビ
ットは桁借り防止のためOFFされている(前述)。し
たがって、レジスタR1及びレジスタR2間の減算処理
のとき、各1バイト間で桁借りを発生することはない。
すなわち、レジスタR3の各1バイトには、レジスタR
1及びレジスタR2の各1バイト同士の減算結果c
0(=a'i−b'i),c1(=a'i+1−b'i+1),c
2(=a'i+2−b'i+2),及びc3(=a'i+3−b'i+3
がそのまま書き込まれる訳である。本実施例では、レジ
スタR3の内容は、図4(c)に示すように、"001
01011:1100110101100001:01
000000"である。この見せかけの演算結果の10
進数表示は、(c0,c1,c2,c3)=(43,20
5,97,64)である。
【0041】次いで、ステップS90では、見せかけの
演算結果をロードした第3のレジスタ(R3)を、上位
より1バイト毎に分割して、各レジスタx0,x1,x
2,x3に格納される。この結果、各レジスタx0,x
1,x2,x3には、それぞれ見せかけの演算結果であ
るc0,c1,c2,c3がロードされることになる。
【0042】言うまでもなく、演算結果(c0,c1,c
2,c3)=(43,205,97,64)自体は、元の
被減数(ai,ai+1,ai+2,ai+3)及び減数(bi
i+1,bi+2,bi+3)同士の減算結果そのものはな
い。但し、これら見せかけの演算結果と真の減算結果と
の間には、一定の対応関係がある。本実施例では、[表
1]に示すような、見せかけの演算結果と真の減算結果
の対応表である「距離テーブル」を予め作成しておく。
この距離テーブルは、見せかけの演算結果kに対応する
真の減算結果を、k番目のフィールドに格納したもので
ある(但し、kは0〜255の整数)。なお、距離テー
ブルの作成方法については、後述する。
【0043】
【表1】 0, 254, 252, 250, 248, 246, 244, 242 240, 238, 236, 234, 232, 230, 228, 226, 224, 222, 220, 218, 216, 214, 212, 210, 208, 206, 204, 202, 200, 198, 196, 194, 192, 190, 188, 186, 184, 182, 180, 178, 176, 174, 172, 170, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 122, 120, 118, 116, 114, 112, 110, 108, 106, 104, 102, 100, 98, 96, 94, 92, 90, 88, 86, 84, 82, 80, 78, 76, 74, 72, 70, 68, 66, 64, 62, 60, 58, 56, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 514, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254
【0044】ステップS100では、各レジスタx0,
x1,x2,x3の値をインデックスとして距離テーブ
ルを参照して、真の減算結果d0(=ai−bi),d
1(=ai+1−bi+1),d2(=ai+2−bi+2),及びd
3(=ai+3−bi+3)を得る。この場合、ステップS1
00は、C言語では下式(2)〜(5)のように記述さ
れる。
【0045】
【数2】 d0 = dist_table[x0] … (2)
【数3】 d1 = dist_table[x1] … (3)
【数4】 d2 = dist_table[x2] … (4)
【数5】 d3 = dist_table[x3] … (5)
【0046】ここで、"dist_table"とは、距
離テーブルのことである。距離テーブルは、例えばC言
語プログラムの中において、"unsigned in
tdist_table[256]"のように宣言され
る配列(後述)である。
【0047】例えば、見せかけの演算結果c0=43で
あれば、[表1]に示した距離テーブル中の43番目の
フィールドに格納された値170が真の減算結果d0
して返される。また他の演算結果がc1=205,c2
97,c3=64であれば、距離テーブル中のそれぞれ
に該当するフィールドから真の減算結果d1=154,
2=62,d3=128が取り出される。ここで、
0,d1,及びd2は、いずれも元の被減数及び減数を
用いた減算結果ai−bi(=169),ai+1−b
i +1(=155),及びai+2−bi+2(=63)とは1
だけ差異が存在する。この差異は元の被減数及び減数の
最下位1ビットを丸め込んだために生じた誤差である。
この誤差は、ベクトル距離計算全体に及ぼす影響は非常
に小さいことが経験則上判明している(但し、動き補償
によるフレーム間予測に適用した場合)。
【0048】次いで、ステップS110では、取り出さ
れた真の減算結果d0,d1,d2,d3の各々を2乗した
ものを、距離の2乗SQD(=|AB|2)に足し合わせ
る。この演算処理は、C言語では"SQD=SQD+(d
0)2+(d1)2+(d2)2+(d3)2"のように記述される。
【0049】次いで、ステップS120では、i+4が
Nを越えたかどうかが判断される。i+4がNを越えて
いなければ、ベクトルの全ての要素の計算が終了してい
ないことを意味する。この場合、iを4だけ増分した後
(ステップS130)、ステップS20に戻って、同様
の処理が繰り返される。
【0050】一方、i+4がNを越えていれば、ベクト
ルの全ての要素の計算が終了したことになるので、判断
ブロックの"Yes"に抜けて、該ルーチンを完了させ
る。最終的な計算結果SQDの値が上式(1)に示した
ベクトルAB間の距離の2乗に等しいことは、容易に理
解できよう。
【0051】なお、図1に示したベクトル距離計算処理
を「動き補償によるフレーム間予測」に用いる場合に
は、一方のベクトルA(a0,a1,,…,a254
255)は固定であり、前処理として予め計算しておく
ことができるので、処理ループの外に出し、さらに命令
数を減らすことができる。
【0052】距離テーブルの作成 図5には、距離テーブルの作成方法の一例をフローチャ
ート化して示している。該フローチャートは、見せかけ
の演算結果がiのときの真の減算結果を基にして距離d
を求めるとともに、距離テーブル(dist_tabl
e)のi番目のフィールドに真の距離値dを書き込む、
という手順で行われる。以下、これを詳細に説明する。
【0053】まず、ステップS200では、インデック
スiに初期値0が代入される。ここでいうインデックス
iとは、図1における配列"dist_table"の添
字、すなわち、レジスタx0,x1,x2,x3などか
ら渡される見せかけの演算結果c0,c1,…に該当す
る。
【0054】次いで、ステップS210では、インデッ
クスiが128未満かどうかが判断される。
【0055】i≧128以上とは、iの2進数表示で最
上位ビットがON(すなわち8桁目が1)であることを
意味する。上述したように、見せかけの被減数a'i
a'i+1…の各最上位ビットには、桁借り防止のために、
1が与えられている。見せかけの演算結果ciの最上位
ビットに、この桁借り防止用の1が残っているというこ
とは、見せかけの被減数a'iの方が見せかけの減数b'i
よりも大きい値であることに相当する。すなわち、減算
a'i−b'i(=ci)は、桁借りを起こすことなく、下
位7ビットだけで行われたことになる。つまり、見せか
けの演算結果ci(すなわちi)の下位7ビットは、真
の減算結果ai−biに等しい(但し、最下位1ビットは
丸め込まれている)、という訳である。そこで、この場
合には、判断ブロックS210の分岐"No"に進んで、
ステップS215では減算値dとしてインデックスiが
そのまま渡される。
【0056】一方、i≦127とは、iの2進数表示で
最上位ビットがOFF(すなわち8桁目が0)であるこ
とを意味する。つまり、見せかけの被減数a'iは見せか
けの減数b'iよりも小さく、見せかけの被減数に与えら
れた桁借り防止用の最上位ビットが減算処理によって失
われたことに相当する。したがって、見せかけの演算
a'i−b'i(=ci)は桁借り防止用の最上位ビットを
用いて行われたものである。当然、その演算結果c
i(=i)の下位7ビットは見せかけの減算値に過ぎ
ず、本来は負の値となる。ところが、ベクトル距離計算
に必要なのは、正負などの符号付き(signed)の
2進数値ではなく、差の絶対値|a'i−b'i|である。
そこで、この場合には、判断ブロックS210の分岐"
Yes"に進んで、演算ci(=i)の負数(すなわち正
負関係を逆転させた値)が減算値dとして渡される。な
お、負数の取り出しは、C言語では、"d=〜i+1"の
ように記述される。演算子"〜"(tilde)は、2進
数値の各桁の0と1を入れ替える操作を意味する。ま
た、演算〜i+1によってiの負数が得られること自体
は、数学の分野では周知である。
【0057】次いで、ステップS230では、減算値d
のうち、実質的な演算結果である下位7ビットが取り出
される。なお、ステップS230における、8ビットの
2進数dからの下位7ビットの取り出しは、C言語で
は、"d=d&7F"のように記述される。演算子"&"は
論理積を意味し、また、16進数表示"7F"は2進数表
示で"01111111"に該当する。したがって、論理
積"d&7F"によって最上位ビットをマスクすることが
できる訳である。なお、ステップS215及びS230
を併せて"d=i&0x7F"と記述し、ステップS22
0及びS230を併せて"d=i|0x80","d=〜
d+1"と記述することもできる(但し、dは8ビット
の整数)。
【0058】ここで、減算の前に、被減数及び減数はそ
れぞれ1ビットだけ右側にシフトしている。このままで
は、減算結果dは絶対値で距離のスケールが2分の1に
なってしまう。そこで、ステップS235では、レジス
タの内容を1ビットだけ左にシフトして元のスケールに
戻してやる。
【0059】次いで、ステップS240では、得られた
真の減算結果d(但し、7ビットに丸め込まれた値)
を、距離テーブル中のi番目のフィールドに書き込む。
この書き込み処理は、配列"dist_table"を用
い、且つ、インデックスiを引数とすることによって、
行われる。例えばC言語では、"dist_table
[i]=d"のように記述される。なお、ベクトル距離
計算では、減算結果を後に2乗することが分かっている
ので(例えば図1のステップS110参照)、dをその
まま距離テーブル中に格納するのではなく、後の処理を
考慮して、2乗(d×d)してから格納するとよ
/3/
【0060】次いで、ステップS250では、iが25
5を越えたかどうかを判断する。iが255未満であれ
ば、全てのインデックスについて処理を終了していない
ので、ステップS260にてiを1だけ増分した後、ス
テップS210に戻って、同様の処理を繰り返す。一
方、iが255に到達していれば、距離テーブルの作成
を完了しているので、判断ブロックS250の分岐"Y
es"に進んで、処理を完了させる。
【0061】図5による処理の結果、表1に示すような
「距離テーブル」が作成される。この距離テーブルは、
例えば図1中のステップS100にて利用される(前
述)。
【0062】要するに、本発明に係る演算処理方法は、
8ビット構成の各要素を7ビットに丸め込む代償とし
て、厖大な繰返し量の減算処理を高速化する、というも
のである。下位1ビットを丸め込み、精度を落とすこと
のトレード・オフとして、計算結果は誤差を含む可能性
があるが、誤差を無視できるような場合(例えば、動き
補償のためのベクトル距離計算など、厳密な距離計算の
結果を必要としない場合)には、非常に効果的である。
【0063】追補 以上、特定の実施例を参照しながら、本発明について詳
解してきた。しかしながら、本発明の要旨を逸脱しない
範囲で当業者が該実施例の修正や代用を成し得ることは
自明である。すなわち、例示という形態で本発明を開示
してきたのであり、限定的に解釈されるべきではない。
本発明の要旨を判断するためには、冒頭に記載した特許
請求の範囲の欄を参酌すべきである。
【0064】《注釈》 /3/:距離テーブルの中身を変えることで、簡単に且つ
実行時の命令を増やすことなく、距離を定義できる訳で
ある。例えばRISC型CPUであるPowerPC
601の場合、乗算の処理は5サイクル程度を要する
が、テーブルから値をロードするだけであれば実質上1
サイクルで済む(但し、1次キャッシュにデータが格納
されている場合)。したがって、距離テーブルに減算値
の2乗を予め入れておくことは、処理全体のパフォーマ
ンスを考えた場合、効果は非常に大きい。
【0065】
【発明の効果】以上詳記したように、本発明によれば、
符号なしkビットからなる各要素同士の減算を多数回含
んだ演算処理を、k×mビット長のレジスタを持つ演算
装置を用いて高速且つ効率的に行うための、優れた演算
処理方法を提供することができる。
【図面の簡単な説明】
【図1】図1は、本発明の一実施例である演算処理方法
をフローチャート化して示した図である。
【図2】図2は、各ステップにおける、ALUの第1の
レジスタ(R1)の内容を示した図である。より具体的
には、図2は、ステップS20にてレジスタR1にロー
ドされたデータがS30及びS40にて処理される様子
を示した図である。
【図3】図3は、各ステップにおける、ALUの第2の
レジスタ(R2)の内容を示した図である。より具体的
には、図3は、ステップS50にてレジスタR2にロー
ドされたデータがS60及びS70にて処理される様子
を示した図である。
【図4】図4は、各ステップにおける、ALUの第1の
レジスタ(R1)、第2のレジスタ(R2)、及び第3
のレジスタ(R3)の内容を示した図である。より具体
的には、図4は、ステップS80における各レジスタR
1,R2,R3の様子を示した図である。
【図5】図5は、距離テーブルの作成方法の一例をフロ
ーチャート化して示した図である。
【図6】図6は、ALUの第1のレジスタに4組の被減
数ai,ai+1,ai+2,及びai +3を同時に書き込み、ま
た、第2のレジスタに4組の減数bi,bi+1,bi+2
及びbi+3を同時に書き込んだ様子を示した図である。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】符号なしkビットからなるデータ同士の減
    算を少なくともN回含む演算処理を、k×mビット長の
    レジスタを1以上持つ演算装置を用いて行うための演算
    処理方法において(但し、k,m,Nはともに正の整数
    で、N≧m)、(a)m組の被減数を前記演算装置の第
    1のレジスタの各kビットに書き込む段階と、(b)第
    1のレジスタを1ビットだけ下位にシフトする段階と、
    (c)第1のレジスタ中の各kビットの最上位ビット位
    置に1を与える段階と、(d)m組の減数を前記演算装
    置の第2のレジスタの各kビットに書き込む段階と、
    (e)第2のレジスタを1ビットだけ下位にシフトする
    段階と、(f)第2のレジスタ中の各kビットの最上位
    ビット位置に0を与える段階と、(g)前記(c)段階
    で得た第1のレジスタの内容から前記(f)段階で得た
    第2のレジスタの内容を減算処理して、その結果を前記
    演算装置の第3のレジスタに書き込む段階と、(h)前
    記(g)段階で得た第3のレジスタの上位からkビット
    毎に取り出す段階と、(i)前記(h)段階で取り出さ
    れたkビットの示す値を元にして、予め与えられたテー
    ブルを参照し、該参照結果を該kビットの被減数及び減
    数による減算結果とする段階と、を含むことを特徴とす
    る演算処理方法。
  2. 【請求項2】符号なし8ビツト(=1バイト)からなる
    データ同士の減算を少なくともN回含む演算処理を、3
    2ビット(=4バイト)長のレジスタを1以上持つ演算
    装置を用いて行うための演算処理方法において(但し、
    Nは正の整数で、N≧4)、(a)4組の被減数を前記
    演算装置の第1のレジスタの各1バイトに書き込む段階
    と、(b)第1のレジスタを1ビットだけ下位にシフト
    する段階と、(c)第1のレジスタ中の各1バイトの最
    上位ビット位置に1を与える段階と、(d)4組の減数
    を前記演算装置の第2のレジスタの各1バイトに書き込
    む段階と、(e)第2のレジスタを1ビットだけ下位に
    シフトする段階と、(f)第2のレジスタ中の各1バイ
    トの最上位ビット位置に0を与える段階と、(g)前記
    (c)段階で得た第1のレジスタの内容から前記(f)
    段階で得た第2のレジスタの内容を減算処理して、その
    結果を前記演算装置の第3のレジスタに書き込む段階
    と、(h)前記(g)段階で得た第3のレジスタの上位
    から1バイト毎に取り出す段階と、(i)前記(h)段
    階で取り出された1バイトの示す値を元にして、予め与
    えられたテーブルを参照し、該参照結果を該1バイトの
    被減数及び減数による減算結果とする段階と、を含むこ
    とを特徴とする演算処理方法。
  3. 【請求項3】符号なし8ビツト(=1バイト)からなる
    要素同士のN回の減算(ai−bi:但しiは0〜N−1
    の正の整数)を、32ビット(=4バイト)長のレジス
    タを1以上持つ演算装置を用いて行うための演算処理方
    法において(但し、Nは正の整数で、N≧4)、(a)
    4組の被減数ai,ai+1,ai+2,及びai+3を前記演算
    装置の第1のレジスタの各1バイトに書き込む段階と、
    (b)第1のレジスタを1ビットだけ下位にシフトする
    段階と、(c)第1のレジスタ中の各1バイトを、夫々
    の最上位ビット位置に1を与えたa'i,a'i+1
    a'i+2,及びa'i+3にする段階と、(d)4組の減数b
    i,bi+1,bi+2,及びbi+3を前記演算装置の第2のレ
    ジスタの各1バイトに書き込む段階と、(e)第2のレ
    ジスタを1ビットだけ下位にシフトする段階と、(f)
    第2のレジスタ中の各1バイトを、夫々の最上位ビット
    位置に0を与えたb'i,b'i+1,b'i+2,及びb'i+3
    する段階と、(g)前記(c)段階で得た第1のレジス
    タの内容a'i,a'i+1,a'i+2,a'i +3から前記(f)
    段階で得た第2のレジスタの内容b'i,b'i+1
    b'i+2,b'i +3を減算して、各1バイト毎の差cj(=
    a'i+j−b'i+j:但し、jは0〜3の正の整数)を前記
    演算装置の第3のレジスタの各1バイトに書き込む段階
    と、(h)第3のレジスタの上位から1バイト毎にcj
    を取り出す段階と、(g)予め与えられたテーブル上の
    値cjに対応するフィールドを参照して、該フィールド
    に格納された値を被減数ai+j及び減数bi+jによる減算
    結果として採用する段階と、を含むことを特徴とする演
    算処理方法。
JP8021001A 1996-02-07 1996-02-07 演算処理方法 Pending JPH09222992A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP8021001A JPH09222992A (ja) 1996-02-07 1996-02-07 演算処理方法
US08/778,328 US5754461A (en) 1996-02-07 1997-01-02 Arithmetic processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8021001A JPH09222992A (ja) 1996-02-07 1996-02-07 演算処理方法

Publications (1)

Publication Number Publication Date
JPH09222992A true JPH09222992A (ja) 1997-08-26

Family

ID=12042871

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8021001A Pending JPH09222992A (ja) 1996-02-07 1996-02-07 演算処理方法

Country Status (2)

Country Link
US (1) US5754461A (ja)
JP (1) JPH09222992A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015143949A (ja) * 2014-01-31 2015-08-06 富士通株式会社 演算プログラム、演算装置および演算方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2362732B (en) * 2000-05-23 2004-08-04 Advanced Risc Mach Ltd Parallel processing of multiple data values within a data word

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210711A (en) * 1992-02-26 1993-05-11 Sony Corporation Of America Very fast variable input multi-bit adder
JP2683488B2 (ja) * 1992-06-30 1997-11-26 インターナショナル・ビジネス・マシーンズ・コーポレイション 3−1論理演算装置
GB2274181B (en) * 1993-01-09 1997-04-02 Digital Equipment Int Summation unit

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015143949A (ja) * 2014-01-31 2015-08-06 富士通株式会社 演算プログラム、演算装置および演算方法

Also Published As

Publication number Publication date
US5754461A (en) 1998-05-19

Similar Documents

Publication Publication Date Title
US6219688B1 (en) Method, apparatus and system for sum of plural absolute differences
US7389317B2 (en) Long instruction word controlling plural independent processor operations
US6473529B1 (en) Sum-of-absolute-difference calculator for motion estimation using inversion and carry compensation with full and half-adders
US5600847A (en) Three input arithmetic logic unit with mask generator
US5995748A (en) Three input arithmetic logic unit with shifter and/or mask generator
US5644522A (en) Method, apparatus and system for multiply rounding using redundant coded multiply result
CN108416431A (zh) 神经网络微处理器与宏指令处理方法
JP3418460B2 (ja) 倍精度除算回路および方法
EP0530372B1 (en) Numerical expression converter and vector processor using the same
JP7096828B2 (ja) 入力オペランド値を処理するための装置及び方法
US5644524A (en) Iterative division apparatus, system and method employing left most one's detection and left most one's detection with exclusive or
KR100432401B1 (ko) 제산 명령 및 잉여 명령을 실행하는 방법 및 이 방법을이용한 데이터 처리 장치
US5479166A (en) Huffman decoding method, circuit and system employing conditional subtraction for conversion of negative numbers
CN108288091B (zh) 采布斯乘法的微处理器
US6173305B1 (en) Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder
JPH03105614A (ja) マトリツクス演算回路
JPH09222992A (ja) 演算処理方法
US20050154773A1 (en) Data processing apparatus and method for performing data processing operations on floating point data elements
JPH09146924A (ja) 演算方法、演算装置及びマイクロプロセッサ
KR100231901B1 (ko) 하나의 명령 주기내에서 0으로 반올림된 두 정수의 평균을 계산하는 방법 및 장치
JP4243277B2 (ja) データ処理装置
JP2807170B2 (ja) 演算装置
KR100264957B1 (ko) 하나의 명령주기내에서 0으로부터 반올림된 두정수의 평균을 계산하는 방법 및 장치
KR100434391B1 (ko) 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법
CN115714865B (zh) 视频编解码处理方法、装置、设备及存储介质