JP3729881B2 - 並列加算および平均演算を行うための回路およびその方法 - Google Patents
並列加算および平均演算を行うための回路およびその方法 Download PDFInfo
- Publication number
- JP3729881B2 JP3729881B2 JP29423194A JP29423194A JP3729881B2 JP 3729881 B2 JP3729881 B2 JP 3729881B2 JP 29423194 A JP29423194 A JP 29423194A JP 29423194 A JP29423194 A JP 29423194A JP 3729881 B2 JP3729881 B2 JP 3729881B2
- Authority
- JP
- Japan
- Prior art keywords
- word
- bit
- result
- bits
- sub
- 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
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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
- G06F7/508—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using carry look-ahead circuits
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49963—Rounding to nearest
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Description
【産業上の利用分野】
本発明はコンピュータに関し、特に、コンピュータで使用するための算術演算装置に関する。
【0002】
【従来の技術】
コンピュータは通常、所定の最大ビット数の数値を加算する加算器を含む算術演算論理装置を備えている。マイクロプロセッサ等では、32ビット長および64ビット長のワード用の加算器が一般的である。それら加算器はまた、それよりもずっと小さなワードについても機能するが、その場合には、加算器に含まれる論理回路の大部分がアイドル状態となる。例えば、64ビット加算器を使用して2つの8ビットワードを加算することができる。この加算は、対応する64ビットワードの最下位部分に各8ビットワードを置き、次いでその64ビットワードを加算することにより行われる。この加算処理中には、各ワードの上位7バイトの加算に関する論理回路が事実上アイドル状態になる。したがって、この演算中には加算器の能力の7/8が無駄になっている。
【0003】
マルチメディアデータ処理では、多数の小さなワード対の加算を伴う計算に出会うことが多い。例えば、2つのグレースケール画像を加算して加算画像を生成することに関する問題について考察する。画像の各画素は典型的には、その画像中の対応する一点における光強度を表す1バイトの整数として格納される。記憶空間は常に貴重なものであるので、画像の画素は一般にはワードへとパックされる。コンピュータの基本ワードサイズが32ビットであれば、1ワードにつき4つの画素をパックすることができる。各画像は100万個の画素を有することができる。したがって、加算画像の計算には、構成要素となる各画像から得た2つの画素を加算して加算画像中の対応画素を生成することが含まれる。各画像に100万個の画素が存在する場合には、そのような加算を100万回実行しなければならない。各加算では、構成要素となる各画像から1つずつ得た2ワードの「アンパック」を行い、そのアンパックが行われた2つの1バイトを加算し、その結果を加算画像における1ワード内の正しい1バイト中に記憶させる、ということが必要とされる。
【0004】
コンピュータの基本ワードサイズが32ビットである場合、そのコンピュータは、32ビット加算器を有するのが普通である。上述のような計算時には、加算器の加算能力の75%がアイドル状態となる。したがって、従来の算術演算論理装置は、この種の画像計算を実行する際には最適には使用されていない。
【0005】
この種の演算で行われる計算の回数は過度なものとなり得る。このため、特殊並列コンピュータアーキテクチャを使用して、加算画像コマンドを実行してから加算画像が完成するまでの時間を短縮させることが多い。その全ての加算は互いに独立したものであり、このため、その加算は順序にかかわらず並列に実行することができる。M個の加算器を備えたコンピュータは、原則的には、メモリから加算器への画素の移動がネックにならない限り、1/Mの時間で結果を提供することができる。したがって、多数の加算を並列に実行することが可能なコンピュータアーキテクチャを提供するのが有用であろう。残念ながら、このような追加の加算器とそれらを制御するのに必要なハードウェアとを提供するコストは法外な金額になることが多い。
【0006】
上述の画像加算に関する問題には平均画像の生成が含まれることが多いことにも留意されたい。構成要素となる各画像中の対応画素の平均である画素を有する画像は、上述の加算画像の画素を生成してその各加算画像画素の強度を2で除算したものと等価である。この種の画像計算は、それによりオーバーフローが防止されるので好適なものである。構成要素となる各画像の2つの対応する画素値が128よりも大きな値を有する場合には、その加算画像画素は8ビットの整数として表すことができないものとなる。この問題を回避するために平均画像が使用される。これは、構成要素となる画像の画素が1バイト整数であれば平均画像画素は常に1バイト整数として表すことができるからである。
【0007】
【発明が解決しようとする課題】
広範には、本発明の目的は、改良された加算器を提供することにある。
【0008】
本発明の別の目的は、加算器の幅よりも小さなワードを伴う多数の加算を行う際に高効率で動作する加算器を提供することにある。
【0009】
本発明のもう1つの目的は、単一のマシンサイクルで2つの数の平均を生成することのできる加算器を提供することにある。
【0010】
本発明の更なる目的は、加算器の幅よりも小さな数の対の多数の平均値を計算するように適応させた加算器を提供することにある。
【0011】
本発明の上述その他の目的は、本発明の以下の詳細な説明および図面から当業者にとって明らかなものとなろう。
【0012】
【課題を解決するための手段】
本発明は、2つの整数の平均を生成するためにも使用することのできる算術演算論理装置である。この算術演算論理装置は、入力された整数のサブワードについて並列に演算を行う複数の副加算器へと分割可能な加算器を含む。したがって、この加算器は、各整数がある所定の長さのものである1組の2つの整数を加算するために、また、各整数の長さの合計が所定の長さ以下である場合には複数組の2つの整数を加算するために使用することができる。この加算器は、順序正しく接続された複数の加算器段から構成される。各加算器段は、1つ以上のビットについて演算を行って合計ビットおよび桁上げ出力ビットを生成する。入力されたワードがサブワードへと区画化される際に桁上げ出力がサブワードの境界を横切って伝搬するのを防止するために、サブワードの考え得る境界に切断回路が設けられる。
【0013】
2つのオペランドの平均を計算することのできる本発明の実施例では、算術演算論理装置の各出力ビットに、副加算器によって生成された結果に対して右シフト演算を実施するマルチプレクサが含まれる。結果の最上位ビットに接続されたマルチプレクサは、対応するサブワードの最上位ビットを加算することにより生成された桁上げビットへと前記最上位ビットを接続する。各結果の最下位ビットに接続されたマルチプレクサは、平均結果の偏りを防ぐために奇数丸め(round odd)方式を実施するよう修正可能なものである。
【0014】
【実施例】
本発明は、複数の部分ワード加算または平均演算を並列に実行するように構成することのできる改良された加算器である。図1を参照すると、本発明による加算器10は、2つのNビットオペランド12,14を受容する。第1オペランドの各ビットをXi(i=0〜N-1)で示し、第2オペランドの各ビットをYiで示す。それらオペランドは、通常はコンピュータのプロセッサ中の2つのレジスタに格納される。しかし、本発明は、コンピュータ中に含まれない回路という形で実施することができる。加算器10は、従来の加算器として動作する場合には、XおよびYの2の補数の和と1ビット桁上げ出力とを有するNビット出力ワード16を生成する。以下の説明では、加算器10の出力16の各ビットをZiで示すこととする。加算結果は通常は、CPUのレジスタの1つに再び格納される。
【0015】
以下の説明では、様々なワード中のビットに最下位のものから最上位のものへと番号付けしてある。即ち、X0はオペランドXの最下位ビットであり、XN-1はオペランドXの最上位ビットである。ワードY,Zについても同様の規則を用いることとする。
【0016】
本発明は、各オペランドを複数のサブワードへと分割することを可能にする。説明を簡単にするため、まず、各オペランドを部分オペランドへと1回だけ分割することに関して本発明を説明することとする。この場合、オペランドXの最初のkビットX0〜Xk-1は、ワードXの第1の部分オペランド18の各ビットであり、残りのビットXk〜XN-1は、ワードXの第2の部分オペランド17の各ビットである。同様に、オペランドYを部分ワード19,20へと分割する。この態様では、ビットZ0〜Zk-1は部分オペランド18,20の和のビットであり、ビットZk〜ZN-1は部分オペランド17,19の和のビットである。以下の説明では、それら2つの結果を部分和またはサブワード和と称することとする。以下で詳細に説明するように、本発明は、2つの部分オペランドの各々の平均値を計算するのに使用することも可能なものである。平均値を計算する場合、ビットZ0〜Zk-1は部分オペランド18,20の平均のビットであり、ビットZk〜ZN-1は部分オペランド17,19の平均のビットである。
【0017】
まず、桁上げ伝搬(carry propagate)アーキテクチャとしても知られるリップル桁上げ(ripple carry)アーキテクチャを利用した単一ビット加算段から構成された加算器に関して本発明を説明することとする。また、本発明による教示を他の加算器アーキテクチャに利用する方法については後に詳述することとする。次に図2を参照する。同図は、加算のみを実行する本発明による加算器30の一部を示すブロック図である。即ち、加算器30は平均計算を実行しない。加算器30は、1ビット加算器段のアレイで構成されている。本発明は、加算器が部分ワードについて並列加算を実行できるように段を減結合させる(decouple)ことができる点で従来の加算器とは異なるものである。各々の単一ビット加算器は、オペランドXからの1ビットおよびオペランドYからの1ビットの2ビットと、i番目の段に関してCiで示す加算器の前段からの桁上げビットとを加算して、和ビットおよび新しい桁上げビットを生成する。図2に示す2つの段は、部分オペランド18,20の最上位ビットと部分オペランド17,19の最下位ビットとを加算するのに使用される単一ビット加算器である。例えば、単一ビット加算器31は、ビットCk-2,Xk-1,Yk-1を加算して和ビットSk-1および桁上げビットCk-1を生成する。以下の説明では、ビットXp,Ypを加算して和ビットSpを生成する加算器の段を、加算器のp番目の段と称することにする。桁上げ伝搬を使用する従来の加算器では、各段からの桁上げビットは、1ビット加算器のアレイにおいて各段の桁上げビット入力をその前段の桁上げビット出力に接続することにより、次の段へ伝搬される。
【0018】
本発明では、2つの部分オペランドを分離する境界の直前の段からの桁上げビットがブロック化回路33に接続されている。単一のワードとして扱われるレジスタ12,14の内容全体について演算を行う従来の加算器として加算器30を使用する場合には、ブロック化回路33が、単一ビット加算器31の桁上げ出力を単一ビット加算器32の桁上げ入力に接続する。加算器30を使用して各レジスタ中のビットk-1とビットkとの間の部分ワード境界で2つの加算を並列に実行する場合には、ブロック化回路33は単に、単一ビット加算器31からの桁上げビットが単一ビット加算器32の桁上げ入力に伝搬するのを防止する。これは、1ビット信号Mkに応じて行われる。ビットMkを指定する方法について以下で詳述する。加算器30の残りの段では、他の全ての単一ビット加算器の桁上げ出力が従来の態様で接続される。このため、桁上げビットは、特定の部分オペランドについて演算を行う加算器30の各セクション内で従来の態様で伝搬する。各加算器段からの和ビットは、対応する出力ポートのビットに接続される。
【0019】
従来の加算器では、オペランドの最上位ビットについて演算を行う単一ビット加算器からの桁上げビットを使用してオーバーフローを検出する。この態様を各部分オペランド毎に実施する場合には、各部分オペランドの最上位ビットの加算による桁上げビットが適当なオーバーフロー回路に接続される。本発明の一実施例では、桁上げビットの論理和が求められ、その結果として得られるビットを使用してオーバーフローが検出される。そのビットは、オーバーフロー時にトラップをトリガするのに使用可能なものであり、また、そのビットと単一ビットレジスタの内容との論理和を求めることもできる。後者の場合、プログラムは、レジスタの内容を検査して、最後にレジスタが検査されてからの演算でオーバーフローになったものがあるか否かを判定することができる。
【0020】
平均計算を実施しない場合には、本発明は、2つの部分オペランド間の境界にまたがる可能性のある各々の段対の間にブロック化回路33等のブロック化回路を単に設けることにより、従来の加算器から構成することができる。X入力およびY入力を任意の数の任意のサイズの部分オペランドへと分割する場合には、各々の単一ビット加算器対の間にブロック化セクションを設ける。このブロック化セクションは、各部分オペランドの最上位ビットの位置を指定するビットMkを有するマスクにより構成される。以下の説明では、このマスクを境界マスクと称することにする。この境界マスクの各ビットは、加算器中のレジスタに格納可能なものであり、また、加算器が存在するプロセッサの命令デコード回路により実行される命令から直接生成することも可能なものである。
【0021】
本発明の上記実施例は、オペランドの加算を実行する。ブロック化回路33は、ブロック化回路のところに境界を有する副加算器へと加算器が分割される加算中に、桁上げビットを0と置換する。また、加算器が同様に分割される2の補数の減算に加算器を使用する場合には、桁上げビットを0ではなく1にしなければならない。図2に示すブロック化回路33は、「0」または「1」の値を有する入力Fを供給することにより加算および減算を両方とも実施する。ブロック化回路33で境界が活動状態である場合、Fの値は、次の段に与えられる値となる。また境界が非活動状態である場合には、ブロック化回路33は単に桁上げビットCk-1を次段に送る。
【0022】
本発明の上述の実施例は平均計算を実行しないものである。これらの実施例は従来に勝る重要な利点を提供するものであるが、本発明の好適実施例は、平均を計算する機能を提供する追加的なハードウェアを提供するものとなる。次いで、平均計算を実行するのに必要となる追加的なハードウェアについて説明することとする。2つのオペランドの平均は、2つのオペランドの和を2で除算した値である。2で除算することは、2つのオペランドの和を右に1ビットだけシフトさせることと等価である。その和の最下位ビットは失われる。平均の最上位ビットは、部分オペランドの最上位ビットについて演算を行う単一ビット加算器の桁上げ出力となる。例えば、部分オペランド18,20の平均は、SiをZi-1(i=1,..,k-1)に経路指定し、S0を廃棄し、Ck-1をZk-1に経路指定することによって計算することができる。
【0023】
入力の部分オペランドへの所与の分割に関し、3種類の段がある。部分オペランドの最下位ビットの加算を行う段は、平均計算を実行する際にその和ビットを廃棄する。以下の説明では、この種の段を最下位ビット段と称することにする。また、部分オペランドの最上位ビットの加算を行う段は、その加算により生成された桁上げビットをその加算結果の最上位ビットへ経路指定し、その和ビットをその加算結果の最上位ビットの次のビットへ経路指定すると共に、桁上げ伝搬チェーンを断たなければならない。以下の説明では、この種の段を最上位ビット段と称することにする。また、最下位ビットと最上位ビットとの間のビットの加算を行う段は、その段が加算を実行する際に使用する位置の1つ右の位置にその段の和ビットを経路指定しなければならない。即ち、i番目の段は、その和ビットをZi-1に経路指定する。以下の説明では、この種の段を内側ビット段と称することにする。
【0024】
部分オペランドの境界をワード中の任意の点に位置させることができる実施例が可能ではあるが、一般には、少数の位置にのみ境界を設ける方が有用となる。例えば、通常32ビットワードの加算を行うコンピュータで加算器を使用する場合には、そのような4バイトのワードを分割する境界が一層有用なものとなる。これは、そのようなシステムでは部分オペランドが通常は1バイトまたは2バイトとなるからである。この場合、各加算器段は、上述の3つの役割のうちの多くとも2つで機能することができなければならない。段(N-1)は最上位ビット段として働くだけでよい。同様に、段0は最下位ビット段として働くだけでよい。その他の全ての段は、加算器を全ワード加算に使用する場合には内側ビット段として機能することができなければならない。更に、並列サブワード加算または平均の最上位ビット段または最下位ビット段になることができる段は、それらの構成へと切り替えることができなければならない。
【0025】
各段の間には差が存在し、その差は、加算器段がXレジスタおよびYレジスタのビットから和ビットを如何に生成するかの詳細にではなく、各々の加算器段により生成される和信号Siが加算器の出力ビットZiに経路指定される態様にある。次に図3を参照する。同図は、本発明による加算器100の一部を示すブロック図である。加算器100は、加算セクション102が典型例である複数の4ビット加算セクションから構成されている。加算セクション102は、X,Yレジスタのビットq〜q+3について演算を行って和ビットSq〜Sq+3を生成する。各加算セクションは、Xレジスタから4ビット、Yレジスタから4ビットを受容してそれらに対応する4つの和ビットを生成する点で、4つの上述の単一ビット加算器と機能的に等価なものである。更に、加算セクション102は、桁上げビットCq+3を生成し、桁上げビットCq-1を受容する。ブロック化回路110,112は、加算セクション102の両側に示されている。
【0026】
加算器100は、N個の和ビットSi(i=0〜N-1)を生成する。加算器100を単一オペランド加算器として使用する場合には、i番目の和ビットSiはその加算器のi番目の出力ビットZiに経路指定される。各出力ラインZiはマルチプレクサに接続される。典型的なマルチプレクサを図3に符号121,124で示す。マルチプレクサは、平均信号Aにより制御される。Aが偽である場合、SiはZiに接続される(i=0〜N-1)。またAが真である場合には、段の種類に関して上記説明の3つの可能性が存在する。結果の内側のビットにのみなることができる出力ラインに接続されたマルチプレクサは、Si+1をZiに接続する。マルチプレクサ122,123はそのようなマルチプレクサの例である。
【0027】
第2の種類のマルチプレクサは、結果の内側ビットまたは最上位ビットのいずれかになることのできる出力ラインに接続されたものである。そのようなマルチプレクサを符号121で示す。これらのマルチプレクサを最上位ビットマルチプレクサと称することとする。最上位ビットマルチプレクサは、3→1マルチプレクサであり、この3→1マルチプレクサは、Aと、そのマルチプレクサが結果の最上位ビットに接続されているか否かを判定するマスクビットとに応じて動作する。Aが偽である場合、最上位ビットマルチプレクサはZiをSiに接続する。また、Aが真であり、マスクビットもまた真である場合には、最上位ビットマルチプレクサはZiをCiに接続する。ここで、Ciは、Siを生成した段により生成される桁上げビットである。また、Aが真であり、マスクビットが偽である場合には、最上位ビットマルチプレクサはZiをSi+1に接続する。ZN-1に接続されたマルチプレクサは、2→1マルチプレクサで十分である最上位ビットマルチプレクサである、ということに留意されたい。これは、そのマルチプレクサが内側マルチプレクサになり得ないからである。
【0028】
第3の種類のマルチプレクサは、結果の内側ビットまたは最下位ビットのいずれかとなることのできる出力ラインに接続されたものである。このようなマルチプレクサを符号124で示す。これを最下位ビットマルチプレクサと称することにする。平均演算の結果を切り捨てることになる場合、即ち、結果の決定時にシフトアウトされたビットを無視することになる場合には、最下位ビットマルチプレクサは、内側ビットマルチプレクサと同じである。
【0029】
切り捨ては、右にシフトすることにより整数除算の結果を丸める方法として使用することができるが、他の形の丸めでは防止可能な望ましくない問題を発生させることがある。画像中の隣接画素の平均を求めることによりその画像のサイズを縮小する場合を考察する。即ち、4画素からなる各グループを1画素に置き換え、その1画素が、置換される4画素の平均と等しい値を有している、といった場合である。画像はI×I画素アレイにより表される。画素の削減は、アレイ中の奇数行および偶数行の平均を求めてI×I/2画素アレイを生成することにより達成することができる。次いで、その中間アレイの奇数列および偶数列の平均を求めて最終的な(I/2)×(I/2)アレイを生成する。様々な平均演算が常に切り捨てられる場合には、最終的な画像は元の画像とは異なる統計的特性を有するものとなる。例えば、縮小された画像は、元のアレイよりも低い平均光強度を有するものとなる。この種のアーチファクトを避けることが重要であることが多い。本発明は、この種の偏った(biased)丸めを避けるための手段を提供する。
【0030】
本発明の好適実施例では、奇数丸め論理を使用してこの偏りを防止している。奇数丸めシステムでは、右シフトにより丸め誤差が発生した場合に、最も近い奇数の整数に結果が丸められる。丸めを行う前の答えが正確である場合には変更は加えられない。丸め誤差は、結果から1がシフトオフされる場合に必ず発生する。これは、シフトされる前の最下位ビットが「1」である場合に発生する。この場合、結果の最下位ビットは「1」にセットされる。また、シフトアウトされるビットが「0」である場合には、そのシフトを行った後でも結果は正確であり、結果の最下位ビットは変更されない。本発明が奇数丸めを使用するのは、単一のORゲート131をマルチプレクサに追加することで奇数丸めシステムを実施できるからである。したがって、偏らない丸めが使用される最下位ビットマルチプレクサでは、Aが真であり、当該マルチプレクサが結果の最下位ビットであることをマスクビットが示す場合に、前記マルチプレクサが、Ziに接続するための信号(Si+1 OR Si)を選択する。また、Aが偽である場合にはSiがZiに接続される。また、Aが真であり、出力ラインが結果の内側ビットに接続されていることをマスクビットが示す場合には、マルチプレクサはZiをSi+1に接続する。
【0031】
Sの値が一様に分散されている場合にはこの形態の丸めで得られる平均誤差が0であることを示すことができる。偶数丸め(round even)システムもまた丸めの偏りを防止することが可能であるということに留意されたい。偶数丸めシステムでは、丸め誤差が発生し、丸めを行う前の結果が奇数である場合に、その結果が最も近い偶数整数に丸められる。しかし、偶数丸め機構を実施するのに必要とされるハードウェアの方がはるかに複雑なものである。
【0032】
上述のマルチプレクサは、限られた数の考え得る部分オペランド境界しか実施されないことを仮定したものである。しかし、加算器が任意の境界を有する場合には、0番目の段および(N-1)番目の段を除いた各出力ラインに取り付けられたマルチプレクサは、3つの考え得るマルチプレクサ機能のうちのいずれをも機能することができなければならない。これら機能を提供するマルチプレクサ構成200のブロック図を図4に示す。マルチプレクサ構成200は、4→1マルチプレクサ201から構成される。以下の説明では、マルチプレクサ200が出力ラインZqに接続されているものと仮定する。マルチプレクサ201は、平均信号およびマスクビットの状態に応じてSq+1、Sq、Cq、または(Sq+1 OR Sq)をZqに接続する。マルチプレクサ201は、最下位ビットマルチプレクサまたは最上位ビットマルチプレクサとして両方とも適切に機能しなければならないので、MqおよびMq+1の状態を共に判定することができなければならない。
【0033】
本発明は、従来の加算器に比較してわずかしか複雑でない加算器での並列加算または平均を提供することに加え、計算の始めにデータがワードとしてパックされる多種類の計算の全体的な計算効率も向上させるものである。ここで、32ビットワードサイズを有するコンピュータ上で上述の画像サイズの縮小を行う際の問題について考察する。各画素が1バイトの整数で表される場合、記憶空間を節約するために画像データは通常はワードとしてパックされる。したがって、画像中の各水平ラインはI/4個の32ビットワードで表される。奇数ラインの画素をその奇数ラインに続く偶数ラインの画素に加算するために、その奇数ラインの4画素を含む1ワードをXレジスタに入力し、そのワードに対応する偶数ラインからのワードをYレジスタに入力することができる。次いで、結果的に得られる画像ラインのパックされた1ワードとしてZレジスタの内容を直接メモリに格納することができる。この演算は、個々のバイトをアンパックして結果を再パックする必要なしに実行することができる。したがって、本発明は、単一の加算命令で4画素を処理することを可能にし、従来の加算器で必要とされるパック命令およびアンパック命令を不要とするものである。最後に、本発明は、2つの画素の平均を自動的に生成し、これにより、各加算後の1回のシフト演算を不要にする。
【0034】
更に、並列サブワード加算命令は、従来の全ワード加算命令以下の複雑さを有するものである。従来の全ワード加算では、オペランドを有する2つのレジスタ、および結果を保持するための第3のレジスタを、プログラマが指定する。本発明も同様に、3つのレジスタを指定するだけでよい。部分オペランドフィールドにおいて考え得る加算器の構成が少数しかない場合には、それら構成を加算命令に含めることができ、この場合には、対応するマスクビットを命令デコード回路が生成することができる。したがって、加算器のセットアップを行うための命令が別に必要となることはない。
【0035】
上記説明は、入力ワードおよび出力ワードがプロセッサのレジスタ中に格納されていると仮定したものである。出力値および/または入力値が加算命令または平均命令で指定された場所に送られ、あるいはその場所から受容される本発明の実施例は、当業者には明らかなものであろう。例えば、加算命令は、レジスタの最下位ビットにそれぞれロードされる和を受容するための複数のレジスタを指定することができる。同様に、レジスタ以外の場所、例えばメモリやその他の機能ユニットに直接結果を送ることができる。更に、他の機能ユニットまたはメモリから各オペランドを送り出すことが可能であることも明らかであろう。
【0036】
上記実施例は、並列部分サブワード平均に関して説明したものであるが、本発明を使用してワードXおよびワードYの内容全体に対して平均命令を実行することも可能であることは当業者には明らかであろう。そのような実施例は、1マシンサイクル中に2つの演算、即ち加算と2による除算とを行うことができる、という利益を提供するものである。
【0037】
本発明の上記実施例は、桁上げ伝搬型の加算器に関して説明したものである。本発明の好適実施例では、キャリールックアヘッドアーキテクチャが使用される。これは、遅延が一層少ないからである。キャリールックアヘッド加算器では、桁上げ生成回路が、加算器の各ビットに対応して伝搬信号および生成信号を1つずつ生成する。これらの信号を上述の桁上げビットと類似の態様で使用して、加算器を並列サブワード加算器に分割することが可能となる。段kがサブワード結果の最上位ビットについて演算を行うように加算器を分割する場合を考察する。図2に示したブロック化回路33等のブロック化回路を桁上げ生成論理回路中に挿入して、伝搬ビットおよび生成ビットが実行中の演算の種類に応じて、即ち加算または減算に応じて強制的に適当な値になるようにすることができる。段kで、分割されていないワードについて加算器を使用している場合には、そのブロック化回路は、その段kに対応する伝搬ビットおよび生成ビットの値の修正を行うことはない。
【0038】
本発明の上記実施例は、本発明により実行される様々な演算をトリガするための手段としての命令に関して説明したものであるが、本発明の演算は、予め格納されているコンピュータプログラムの命令により生成されたのではない電気信号によってトリガ可能なものである、ということが当業者には明らかであろう。したがって、特許請求の範囲で使用する「命令」という用語は、他の形態の信号によりトリガされる演算もまた含むものである。更に、コンピュータの一部ではない回路で本発明を使用することも可能であることが当業者には明らかであろう。
【0039】
本発明の上記実施例は、符号なし整数の平均を求めることに関して説明したものであるが、本発明の教示は符号付き整数にも適用可能であることが当業者には明らかであろう。この場合には、和の最上位ビットから結果の最上位ビットへと桁上げ出力ビットを移動させる代わりに、結果の最上位ビットが次のようにして求められる。即ち、2つのオペランドが同じ符号のものである場合には、上記と同様に結果の最上位ビットが桁上げ出力ビットとなる。また、2つのオペランドが異なる符号のものである場合には、結果の最上位ビットは、右シフトを行う前の和の最上位ビットとなる。即ち、結果の最上位ビットは、(Xp AND Yp) OR (Xp OR Yp) AND バーCp-1となる。キャリールックアヘッド加算器の場合には、この式は、Gp OR Pp AND バーCp-1となる。ここで、Gp,Ppは、最上位ビットに関する生成ビットおよび伝搬ビットである。
【0040】
当業者であれば、上記説明および図面から本発明の様々な修正例が明らかとなろう。したがって、本発明は特許請求の範囲によってのみ制限されるものである。
【0041】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
【0042】
1.ビットXiを有するワードXとビットYiを有するワードYとの内容について演算を行ってビットZiを有する結果ワードを生成する装置であって、i=0〜N-1であり、Z0が前記サブワードの内の1つの最下位ビットであり、ZN-1が前記サブワードの内の1つの最上位ビットである、前記装置において、この装置が、前記ワードXと前記ワードYと前記結果ワードとを複数のサブワードへと区画化する手段であって、前記ワードXの各サブワードに対応して前記ワードYおよび前記結果ワードのサブワードが1つずつ存在する、前記区画化手段と、
第1の命令に応じて前記Xの各サブワードとそれに対応する前記Yの各サブワードとの和を生成する手段であって、その結果が、前記結果ワードの対応するサブワードを決定する、前記和生成手段と
を備えていることを特徴とする、前記装置。
2.第2の命令に応じて前記ワードX中の各サブワードとそれに対応する前記ワードY中のサブワードとの差を生成する手段であって、その結果が、前記結果ワードの対応するサブワードを決定する、前記手段を更に備えている、前項1記載の装置。
【0043】
3.第3の命令に応じて前記ワードX中の各サブワードとそれに対応する前記ワードY中のサブワードとの和を2で除算した値を生成する手段であって、その結果が、前記結果ワードの対応するサブワードを決定する、前記手段を更に備えている、前項1記載の装置。
【0044】
4.前記の2での除算の結果として丸め誤差が生じた場合に、前記の各結果が1つ下の奇数整数に丸められる、前項3記載の装置。
【0045】
5.第4の命令に応じて前記ワードX中の各サブワードとそれに対応する前記ワードY中のサブワードとの差を2で除算した値を生成する手段であって、その結果が、前記結果ワードの対応するサブワードを決定する、前記手段を更に備えている、前項2記載の装置。
【0046】
6.前記装置が、前記ワードXからの1つ以上のビットと前記ワードYから得た対応するビットとについて演算を行う演算手段と、前記ワードXの各ビットに対応して生成ビットおよび伝搬ビットを1つずつ生成する手段とを備え、前記区画化手段が、前記生成ビットおよび前記伝搬ビットを強制的に、前記ワードXの前記ビットがサブワードの最上位ビットである場合に実行される演算により決定される値にする手段を備えている、前項1記載の装置。
【0047】
7.前記装置が、直列に接続された複数の加算段を備えており、その各加算段が、前記ワードXからの1つ以上のビットとそれに対応する前記ワードYから得たビットとについて演算を行う手段と、前記加算段からの桁上げビットを前記直列接続中の次の加算段へ伝搬させる手段とを備えており、前記区画化手段が、前記桁上げビットを強制的に、前記加算段が前記ワードX中の異なるサブワードのビットについて演算を行う場合に実行される演算により決定される値にする手段を備えている、前項1記載の装置。
【0048】
8.前記加算段が、Xiについての演算から導出されるN個の結果ビットSi(i=0〜N-1)を生成し、前記装置が、前記結果ビットの内の1つを示す信号を各々が生成するN個の多重化手段を更に備え、その多重化手段は、前記の各結果ビットZp(p=0〜N-1)毎に1つずつあり、Zpに対応する前記多重化手段が、前記第1の命令に応じてSpをZpに接続する、前項7記載の装置。
【0049】
9.Zpに対応する前記多重化手段が、Zpが1つの前記サブワードの内側にある場合に前記第3の命令に応じてZpをSp+1に接続し、Zpが前記結果サブワードの内の1つの最上位ビットである場合にはZpをCpに接続し、そのCpは、Zpを含む結果サブワードに対応する前記Xのサブワードの最上位ビットについて演算を行う前記加算段により生成される前記桁上げビットである、前項8記載の装置。
【0050】
10.Zpに対応する前記多重化手段が、Zpが前記結果サブワードの内の1つの最下位ビットである場合にZpを(Sp+1 OR Sp)へ接続する手段を更に備えている、前項9記載の装置。
【0051】
11.前記演算手段が、Xiについての演算から導出されるN個の結果ビットSi(i=0〜N-1)を生成し、前記装置が、前記結果ビットの内の1つを示す信号を生成するN個の多重化手段を更に備えており、前記多重化手段が前記の各結果ビットZp(p=0〜N-1)毎に1つずつあり、Zpに対応する前記多重化手段が前記第1の命令に応じてSpをZpに接続する、前項6記載の装置。
【0052】
12.サブワードの最上位ビットとなることができる各ビットXpに対応する桁上げビットCpを生成する手段を更に備え、Zpに対応する前記多重化手段が、Zpが前記サブワードの内の1つの内側にある場合に前記第3の命令に応じてZpをSp+1に接続し、Zpが前記結果サブワードの内の1つの最上位ビットである場合にZpをCpに接続し、Cpが、Zpを含む結果サブワードに対応するXのサブワードの最上位ビットについて演算を行う前記加算段により生成される桁上げビットである、前項11記載の装置。
【0053】
13.Zpに対応する前記多重化手段が、Zpが前記結果サブワードの内の1つの最下位ビットである場合にZpを(Sp+1 OR Sp)に接続する手段を更に備えている、前項12記載の装置。
【0054】
14.ビットXiを有するワードXと、ビットYiを有するワードYとの内容について演算を行ってビットZiを有する結果ワードを生成する装置であって、i=0〜N-1であり、Z0が最下位ビットであり、ZN-1が最上位ビットである、前記装置において、平均命令に応じて前記ワードXおよび前記ワードYの和を生成する手段と、その和をシフトさせて前記ワードZを生成する手段とを備えることを特徴とする、前記装置。
【0055】
15.前記シフトの結果として丸め誤差が生じた場合に、前記ワードZが1つ下の奇数整数へと丸められる、前項14記載の装置。
【0056】
16.前記装置が、直列に接続された複数の加算段を備えており、その各加算段が、前記ワードXからの1つ以上のビットとそれに対応する前記ワードYから得た対応するビットとについて演算を行う手段を備えており、それら加算段がN個の結果ビットSi(i=0〜N-1)を生成し、SiがXiおよび桁上げ出力ビットCN-1についての演算から導出され、および、前記装置がN個の多重化手段を更に備えており、その各多重化手段が、前記結果ビットの内の1つを示す信号を生成し、前記の各結果ビットZp(p=0〜N-1)毎に1つずつ存在し、そのZpに対応する前記多重化手段が前記平均命令に応じてSpをZpに接続する、前項14記載の装置。
【0057】
17.差命令に応じて前記ワードXと前記ワードYとの差を2で除算した値を生成する手段を更に備えており、その生成結果が前記結果ワードを決定する、前項14記載の装置。
【0058】
18.Zpに対応する前記多重化手段が、p=0〜N-2である場合に前記平均命令に応じてZpをSp+1へ接続し、p=N-1である場合にはZpをCN-1へ接続する、前項16記載の装置。
【0059】
19.Zpに対応する前記多重化手段が、p=0である場合にZpを(Sp+1 OR Sp)へ接続する手段を更に備えている、前項18記載の装置。
【0060】
20.サブワードの最上位ビットとなることができる各ビットXpに対応する桁上げビットCpを生成する手段を更に備え、Zpに対応する前記多重化手段が、Zpが前記サブワードの内の1つの内側にある場合に前記第3の命令に応じてZpをSp+1へ接続し、Zpが前記結果サブワードの内の1つの最上位ビットである場合にはZpをSpに接続する、前項11記載の装置。
【0061】
【発明の効果】
本発明は上述のように構成したので、加算器の幅よりも小さなワードを伴う多数の加算を行う際に高効率で動作し、また単一のマシンサイクルで2つの数の平均を生成することのできる加算器を提供することができる。
【図面の簡単な説明】
【図1】本発明による加算器を示すブロック図である。
【図2】加算のみを実行する本発明による加算器の一部を示すブロック図である。
【図3】本発明による加算器の一部を示すブロック図である。
【図4】本発明の実施例を構築するのに利用可能なマルチプレクサ構成を示すブロック図である。
【符号の説明】
10 加算器
12,14 Nビットオペランド
16 Nビット出力ワード
Xi,Yi ビット
X0, Y0 最下位ビット
XN-1,YN-1 最上位ビット
17,18,19,20 部分オペランド
Claims (16)
- ビットXiを有するワードXの内容とビットYiを有するワードYの内容について演算を行ってビットZiを有する結果ワードZを生成する装置であって、i=0〜N-1であり、Z0が前記結果ワードZの最下位ビットであり、ZN−1が前記結果ワードZの最上位ビットであり、
前記ワードXと前記ワードYと前記結果ワードZとをそれぞれ、複数のサブワードへと区画化する手段であって、前記ワードXの各サブワードに対応して前記ワードYのサブワードおよび前記結果ワードZのサブワードが1つずつ存在することからなる、手段と、
演算手段
を備え、
前記演算手段は、第1の命令に応じて前記Xの各サブワードの各ビットとそれに対応する前記Yの各サブワードの各ビットとを加算する第1の演算を実施し、及び、第2の命令に応じて、前記Xの各サブワードの各ビットとそれに対応する前記Yの各サブワードの各ビットとを加算し、かつ、その加算結果を2で除算する第2の演算を実施するものであり、さらに、前記第1の演算中の前記加算と前記第2の演算中の前記加算のそれぞれにおいて、N個のビットX i (i = 0 〜 N-1) のそれぞれに対応する、N個の各生成ビットS i (i = 0 〜 N-1) およびN個の各伝搬ビットを生成し、
前記区画化する手段は、前記ワードXの前記ビットがサブワードの最上位ビットである場合には、前記生成ビットおよび前記伝搬ビットを、実行されている演算によって決定される値にする第1のビット値設定手段を備え、
前記演算手段は、N個の第1の多重化手段を備え、該N個の第1の多重化手段の各々は、前記結果ワードZのビットの内の1つを表す信号を生成し、該第1の多重化手段は、前記結果ワードZの各ビットZ p (p = 0 〜 N-1) 毎に1つずつあり、Z p に対応する前記第1の多重化手段の各々は、前記第1の命令に応じてS p をZ p に接続することからなる、装置。 - サブワードの最上位ビットである各ビットXpに対応する桁上げビットCpを生成する手段を更に備え、Zpに対応する前記第1の多重化手段が、前記第2の命令に応じて、Zpが前記サブワードの内の1つの内側にある場合にはZ pをSp+1に接続し、Zpが前記結果ワードZのサブワードの内の1つの最上位ビットである場合には、ZpをCpに接続し、Cpが、Zpを含む前記結果ワードZのサブワードに対応する前記Xのサブワードの最上位ビットについて演算を行う前記演算手段により生成される前記桁上げビットである、請求項1の装置。
- Zpに対応する前記第1の多重化手段が、Zpが前記結果ワードZのサブワードの内の1つの最下位ビットである場合に、Zpを(Sp+1 OR Sp)へ接続する手段を更に備える、請求項2の装置。
- サブワードの最上位ビットである各ビットXpに対応する桁上げビットCpを生成する手段を更に備え、Zpに対応する前記第1の多重化手段が、前記第2の命令に応じて、Zpが前記結果ワードZのサブワードの内の1つの内側にある場合にはZ pをSp+1に接続し、Zpが前記結果ワードZのサブワードの内の1つの最上位ビットである場合には、ZpをSpに接続する、請求項1の装置。
- 桁上げビット伝搬手段を備え、さらに、前記演算手段の代わりとして、直列に接続された複数の加算段を備えており、その各加算段が、前記ワードXからの1つ以上のビットとそれに対応する前記ワードYから得たビットとについて演算を行う手段を備え、前記桁上げビット伝搬手段は、前記各加算段からの桁上げビットを前記直列接続中の次の加算段へ伝搬させ、前記区画化する手段は、前記第1のビット値設定手段に代えて第2のビット値 設定手段を備え、該第2のビット値設定手段は、前記加算段が前記ワードX中の異なるサブワード間のビットについて演算を行う場合には、前記桁上げビットを、実行されている演算により決定される値にすることからなる、請求項1の装置。
- 前記加算段が、Xi (i = 0 〜 N-1)についての演算から導出される結果ワードZのN個のビットSi(i=0〜N-1)を生成し、前記演算手段が、前記N個の第1の多重化手段に代えて、N個の第2の多重化手段を備え、該N個の第2の多重化手段の各々は、前記結果ワードZの各ビットを表す信号を生成し、該第2の多重化手段は、前記結果ワードZの各ビットZp(p=0〜N-1)毎に1つずつあり、Zpに対応する前記第2の多重化手段の各々は、前記第1の命令に応じてSpをZpに接続する、請求項5の装置。
- Zpに対応する前記第2の多重化手段が、前記第2の命令に応じて、Zpが前記結果ワードZのサブワードの内の1つの内側にある場合にはZ pをSp+1に接続し、Zpが前記結果ワードZのサブワードの内の1つの最上位ビットである場合にはZpをCpに接続し、そのCpは、Zpを含む前記結果ワードZのサブワードに対応する前記Xのサブワードの最上位ビットについて演算を行う前記加算段により生成される前記桁上げビットである、請求項6の装置。
- Zpに対応する前記第2の多重化手段が、Zpが前記結果ワードZのサブワードの内の1つの最下位ビットである場合にZpを(Sp+1 OR Sp)へ接続する手段を更に備える、請求項7の装置。
- ビットXiを有するワードXの内容とビットYiを有するワードYの内容について演算を行ってビットZiを有する結果ワードZを生成する装置(i=0〜N-1)であって、Z0が前記結果ワードZの最下位ビットであり、ZN−1が前記結果ワードZの最上位ビットであり、
前記ワードXと前記ワードYと前記結果ワードZとをそれぞれ、複数のサブワードへと区画化する手段であって、前記ワードXの各サブワードに対応して前記ワードYのサブワードおよび前記結果ワードZのサブワードが1つずつ存在することからなる、手段と、
演算手段と、
丸め手段
を備え、
前記演算手段は、第1の命令に応じて前記Xの各サブワードの各ビットとそれに対応する前記Yの各サブワードの各ビットとを加算する第1の演算を実施し、及び、第2の命令に応じて、前記Xの各サブワードの各ビットとそれに対応する前記Yの各サブワードの各ビットとを加算し、かつ、その加算結果を2で除算する第2の演算を実施するものであり、さらに、前記第1の演算中の前記加算と前記第2の演算中の前記加算のそれぞれにおいて、N個のビットX i (i = 0 〜 N-1) のそれぞれに対応する、N個の各生成ビットS i (i = 0 〜 N-1) およびN個の各伝搬ビットを生成し、
前記区画化する手段は、前記ワードXの前記ビットがサブワードの最上位ビットである場合には、前記生成ビットおよび前記伝搬ビットを、実行されている演算によって決定される値にする手段を備え、
前記演算手段は、N個の第1の多重化手段を備え、該N個の第1の多重化手段の各々は、前記結果ワードZのビットの内の1つを表す信号を生成し、該第1の多重化手段は、前記結果ワードZの各ビットZ p (p = 0 〜 N-1) 毎に1つずつあり、Z p に対応する前記第1の多重化手段の各々は、前記第1の命令に応じてS p をZ p に接続し、
前記丸め手段は、前記2での除算の結果として丸め誤差が生じた場合に、その除算結果を1つ下の奇数整数に丸めることからなる、装置。 - ビットXiを有するワードXの内容とビットYiを有するワードYの内容について演算を行ってビットZiを有する結果ワードZを生成する装置であって、i=0〜N-1であり、Z0が前記結果ワードZの最下位ビットであり、ZN−1が前記結果ワードZの最上位ビットであり、
前記ワードXと前記ワードYと前記結果ワードZとをそれぞれ、複数のサブワードへと区画化する手段であって、前記ワードXの各サブワードに対応して前記ワードYのサブワードおよび前記結果ワードZのサブワードが1つずつ存在することからなる、手段と、
演算手段
を備え、
前記演算手段は、第1の命令に応じて前記Xの各サブワードの各ビットとそれに対応する前記Yの各サブワードの各ビットとを加算する第1の演算を実施し、第2の命令に応じて前記Xの各サブワードの各ビットとそれに対応する前記Yの各サブワードの各ビットとの減算を行う第2の演算を実施し、第3の命令に応じて前記Xの各サブワードの各ビットとそれに対応する前記Yの各サブワードの各ビットとの減算を行い、かつ、その減算結果を2で除算する第3の演算を実施するものであり、さらに、前記第1の演算中の前記加算、前記第2の演算中の前記減算及び前記第3の演算中の前記減算のそれぞれにおいて、N個のビットX i (i = 0 〜 N-1) のそれぞれに対応する、N個の各生成ビットS i (i = 0 〜 N-1) およびN個の各伝搬ビットを生成し、
前記区画化する手段は、前記ワードXの前記ビットがサブワードの最上位ビットである場合には、前記生成ビットおよび前記伝搬ビットを、実行されている演算によって決定される値にする手段を備え、
前記演算手段は、N個の多重化手段を備え、該N個の多重化手段の各々が、前記結果ワードZの各ビットを表す信号を生成し、該多重化手段は、前記結果ワードZの各ビットZ p (p = 0 〜 N-1) 毎に1つずつあり、Z p に対応する前記多重化手段の各々は、前記第1の命令及び前記第2の命令に応じてS p をZ p に接続することからなる、装置。 - 前記第2の命令が平均命令であり、前記除算がシフト操作によって行われる、請求項9の装置。
- 前記装置が、前記演算手段に代えて、直列に接続された複数の加算段を備えており、その各加算段が、前記ワードXからの1つ以上のビットとそれに対応する前記ワードYから得たビットとを加算する演算を行う手段を備えており、それら加算段が、X i ( i= 0 〜 N-1) についての演算から導出されるN個の生成ビットSi と、桁上げ出力ビットC N−1 を生成し、および、前記装置が、前記N個の第1の多重化手段に代えて、N個の第2の多重化手段を備えており、その第2の多重化手段の各々が、前記結果ワードZの各ビットの内の1つを表す信号を生成し、かつ、前記結果ワードZの各ビットZp(p=0〜N-1)毎に1つずつ存在し、Zpに対応する前記第2の多重化手段が前記平均命令に応じてSpをZ p+1 に接続する、請求項11の装置。
- Zpに対応する前記第2の多重化手段が、p=0〜N-2である場合には前記平均命令に応じてZpをSp+1へ接続し、p=N-1である場合にはZpをCN−1へ接続する、請求項12の装置。
- Zpに対応する前記第2の多重化手段が、p=0である場合にはZpを(Sp+1 OR Sp)へ接続する手段を更に備える、請求項13の装置。
- 減算命令に応じて前記ワードXと前記ワードYとの差を2で除算した値を生成する手段を更に備えており、その生成結果が前記結果ワードを決定することからなる、請求項11の装置。
- 前記1つ下の奇数整数への丸めは、前記シフト操作によるシフトの結果として丸め誤差が生じた場合に行われる、請求項11の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US158649 | 1993-11-29 | ||
US08/158,649 US5883824A (en) | 1993-11-29 | 1993-11-29 | Parallel adding and averaging circuit and method |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07210369A JPH07210369A (ja) | 1995-08-11 |
JP3729881B2 true JP3729881B2 (ja) | 2005-12-21 |
Family
ID=22569081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP29423194A Expired - Fee Related JP3729881B2 (ja) | 1993-11-29 | 1994-11-29 | 並列加算および平均演算を行うための回路およびその方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5883824A (ja) |
EP (1) | EP0656582B1 (ja) |
JP (1) | JP3729881B2 (ja) |
DE (1) | DE69435047T2 (ja) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US5953241A (en) * | 1995-08-16 | 1999-09-14 | Microunity Engeering Systems, Inc. | Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction |
US6295599B1 (en) * | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
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 |
EP0789870B1 (en) * | 1995-09-01 | 2003-01-15 | Philips Electronics North America Corporation | Method and apparatus for custom operations of a processor |
US6003125A (en) * | 1997-01-24 | 1999-12-14 | Texas Instruments Incorporated | High performance adder for multiple parallel add operations |
US6408320B1 (en) * | 1998-01-27 | 2002-06-18 | Texas Instruments Incorporated | Instruction set architecture with versatile adder carry control |
US7395302B2 (en) | 1998-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing horizontal addition and subtraction |
US6230257B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US7392275B2 (en) * | 1998-03-31 | 2008-06-24 | Intel Corporation | Method and apparatus for performing efficient transformations with horizontal addition and subtraction |
US6211892B1 (en) * | 1998-03-31 | 2001-04-03 | Intel Corporation | System and method for performing an intra-add operation |
US6449629B1 (en) * | 1999-05-12 | 2002-09-10 | Agere Systems Guardian Corp. | Three input split-adder |
US6512523B1 (en) * | 2000-03-27 | 2003-01-28 | Intel Corporation | Accurate averaging of elements using integer averaging |
GB2362732B (en) * | 2000-05-23 | 2004-08-04 | Advanced Risc Mach Ltd | Parallel processing of multiple data values within a data word |
US6748411B1 (en) * | 2000-11-20 | 2004-06-08 | Agere Systems Inc. | Hierarchical carry-select multiple-input split adder |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US7219118B2 (en) * | 2001-11-06 | 2007-05-15 | Broadcom Corporation | SIMD addition circuit |
US7558816B2 (en) * | 2001-11-21 | 2009-07-07 | Sun Microsystems, Inc. | Methods and apparatus for performing pixel average operations |
US7254599B2 (en) * | 2002-05-30 | 2007-08-07 | Sun Microsystems, Inc. | Average code generation circuit |
US7149768B2 (en) * | 2002-10-15 | 2006-12-12 | Ceva D.S.P. Ltd. | 3-input arithmetic logic unit |
JP4317738B2 (ja) * | 2003-12-17 | 2009-08-19 | 富士通株式会社 | 平均値算出装置および平均値算出方法 |
US20090070400A1 (en) * | 2007-09-12 | 2009-03-12 | Technology Properties Limited | Carry-select adder |
US8036484B2 (en) * | 2007-10-16 | 2011-10-11 | Broadcom Corporation | In-place averaging of packed pixel data |
CN101803205B (zh) * | 2008-08-15 | 2013-12-18 | Lsi公司 | 近码字的ram列表解码 |
US9524572B2 (en) * | 2010-11-23 | 2016-12-20 | Microsoft Technology Licensing, Llc | Parallel processing of pixel data |
KR102072543B1 (ko) * | 2013-01-28 | 2020-02-03 | 삼성전자 주식회사 | 복수 데이터 형식을 지원하는 가산기 및 그 가산기를 이용한 복수 데이터 형식의 가감 연산 지원 방법 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3987291A (en) * | 1975-05-01 | 1976-10-19 | International Business Machines Corporation | Parallel digital arithmetic device having a variable number of independent arithmetic zones of variable width and location |
US4137568A (en) * | 1977-04-11 | 1979-01-30 | Pitney-Bowes, Inc. | Circuit for establishing the average value of a number of input values |
JPS59161731A (ja) * | 1983-03-07 | 1984-09-12 | Hitachi Ltd | バレルシフタ |
JPS6124331A (ja) * | 1984-07-12 | 1986-02-03 | Nec Corp | アナログ−デイジタル変換器 |
US4707800A (en) * | 1985-03-04 | 1987-11-17 | Raytheon Company | Adder/substractor for variable length numbers |
DE3509762A1 (de) * | 1985-03-19 | 1986-09-25 | Battelle-Institut E.V., 6000 Frankfurt | Schaltungsanordnung zur mittelwertbildung |
JPS61239327A (ja) * | 1985-04-16 | 1986-10-24 | Nec Corp | オ−バフロ−検出方式 |
US4914617A (en) * | 1987-06-26 | 1990-04-03 | International Business Machines Corporation | High performance parallel binary byte adder |
US5189636A (en) * | 1987-11-16 | 1993-02-23 | Intel Corporation | Dual mode combining circuitry |
US5047975A (en) * | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
-
1993
- 1993-11-29 US US08/158,649 patent/US5883824A/en not_active Expired - Lifetime
-
1994
- 1994-08-02 EP EP94112045A patent/EP0656582B1/en not_active Expired - Lifetime
- 1994-08-02 DE DE69435047T patent/DE69435047T2/de not_active Expired - Fee Related
- 1994-11-29 JP JP29423194A patent/JP3729881B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5883824A (en) | 1999-03-16 |
JPH07210369A (ja) | 1995-08-11 |
EP0656582A1 (en) | 1995-06-07 |
EP0656582B1 (en) | 2007-11-21 |
DE69435047D1 (de) | 2008-01-03 |
DE69435047T2 (de) | 2008-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3729881B2 (ja) | 並列加算および平均演算を行うための回路およびその方法 | |
JP3573808B2 (ja) | 論理演算装置 | |
US5448509A (en) | Efficient hardware handling of positive and negative overflow resulting from arithmetic operations | |
EP0924601B1 (en) | Parallel data processing in a single processor | |
US6009451A (en) | Method for generating barrel shifter result flags directly from input data | |
US5644522A (en) | Method, apparatus and system for multiply rounding using redundant coded multiply result | |
US5696959A (en) | Memory store from a selected one of a register pair conditional upon the state of a selected status bit | |
US5761726A (en) | Base address generation in a multi-processing system having plural memories with a unified address space corresponding to each processor | |
US5446651A (en) | Split multiply operation | |
US5596763A (en) | Three input arithmetic logic unit forming mixed arithmetic and boolean combinations | |
US5606677A (en) | Packed word pair multiply operation forming output including most significant bits of product and other bits of one input | |
US5600847A (en) | Three input arithmetic logic unit with mask generator | |
US5465224A (en) | Three input arithmetic logic unit forming the sum of a first Boolean combination of first, second and third inputs plus a second Boolean combination of first, second and third inputs | |
US5742538A (en) | Long instruction word controlling plural independent processor operations | |
US6016538A (en) | Method, apparatus and system forming the sum of data in plural equal sections of a single data word | |
EP0755015B1 (en) | Combining data values | |
EP0754998A1 (en) | An arithmetic unit | |
US6067613A (en) | Rotation register for orthogonal data transformation | |
US6026484A (en) | Data processing apparatus, system and method for if, then, else operation using write priority | |
JPH0823811B2 (ja) | 3オペランド演算論理機構におけるオーバーフローを決定する方法及び算術上のオーバーフローを検出する機構 | |
JPH0850578A (ja) | 算術論理演算装置及び制御方法 | |
US5235539A (en) | Method and apparatus for generating carry out signals | |
US5689695A (en) | Conditional processor operation based upon result of two consecutive prior processor operations | |
JPH0822451A (ja) | 演算器およびマイクロプロセッサ | |
US6035310A (en) | Method and circuit for performing a shift arithmetic right operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040728 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040803 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20041102 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20041108 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050531 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050826 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20050831 |
|
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: 20051004 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051005 |
|
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: 20091014 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091014 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101014 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |