(57)【特許請求の範囲】
【請求項１】
以下の(a)ないし(d)を設け、ビットＸi（iは０から（Ｎ−１）までの整数）を有する語Ｘを、Ｎより小さい非負整数である整数ｍについてｍ桁だけシフトして、ビットＹi（iは０から（Ｎ−１）までの整数）を有する語Ｙを得るシフト及び丸め回路：
(a) 複数の信号入力端子：前記信号入力端子の各々は前記ビットＸiの１つを受け取り、ここで０から（Ｎ−１）の整数iの各々について前記ビットＸiに対応する１つの前記信号入力端子が存在する；
(b) 複数の信号出力端子：０から（Ｎ−１）の整数iの各々について前記ビットＹiに対応する１つの前記信号出力端子が存在する；
(c) 複数の多重化回路：前記多重化回路の各々は複数の入力端子及び出力端子を有し、前記多重化回路の前記入力端子の少なくとも１つは前記信号入力端子の１つに接続され、前記多重化回路の各々は自己の前記出力端子を１つの前記信号出力端子に接続し、１から（Ｎ−１−ｍ）の整数iの各々についてＹiに対応する前記信号出力端子に接続された前記多重化回路はＹiに対応する前記信号出力端子をＸi+mに対応する前記信号入力端子に接続する；
(d) 他の多重化回路：前記他の多重化回路は複数の入力端子及び出力端子を有し、前記他の多重化回路の前記出力端子はＹ0に接続され、前記他の多重化回路の前記入力端子の１つは値（Ｘ0 ＯＲ Ｘ1 ＯＲ ... Ｘm）を有する信号を生成する回路に接続される。
【請求項２】
前記語Ｘが符号なしの整数である場合、（ｐ＋ｍ）＞（Ｎ−１）を満足するＹpに対応する前記信号出力端子に接続されている前記多重化回路は、前記Ｙpに対応する前記信号出力端子を論理０に接続することを特徴とする請求項１記載のシフト及び丸め回路。
【請求項３】
前記語Ｘが符号付きの整数である場合、（ｐ＋ｍ）≧（Ｎ−１）を満足するＹpに対応する前記信号出力端子に接続されている前記多重化回路は、Ｙpに対応する前記信号出力端子をＸN-1に対応する前記信号入力端子に接続することを特徴とする請求項１記載のシフト及び丸め回路。
【請求項４】
以下のステップ(a)ないし(d)を設け、ビットＸi（iは０から（Ｎ−１）までの整数）を有する語Ｘをｍ桁（ｍはＮより小さい非負整数）だけシフトして、ビットＹi（iは０から（Ｎ−１）までの整数）を有する語Ｙを得る方法：
(a) 各々が前記ビットＸiの１つを受け取り、また０から（Ｎ−１）の整数iの各々についてＸiに対応するものが１つ存在する複数の入力端子を設ける；
(b) ０から（Ｎ−１）の整数iの各々についてＹiに対応するものが１つ存在する複数の出力端子を設ける；
(c) １つまたは複数の多重化回路を用いて、１から（Ｎ−１−ｍ）の整数iの各々についてＹiに対応する前記出力端子の各々をＸi+mに対応する前記入力端子に接続する；
(d) 値（Ｘ0 ＯＲ Ｘ1 ＯＲ ... Ｘm）を有する信号を生成し、多重化回路を用いて前記生成された信号をＹ0に接続する。
【請求項５】
前記語Ｘが符号なしの整数である場合、（ｐ＋ｍ）＞（Ｎ−１）を満足するＹpに対応する前記出力端子を論理０に接続するステップを設けたことを特徴とする請求項４記載の方法。
【請求項６】
前記語Ｘが符号付きの整数である場合、（ｐ＋ｍ）≧（Ｎ−１）を満足するＹpに対応する前記出力端子を前記ＸN-1に対応する前記入力端子に接続するステップを設けたことを特徴とする請求項４記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はコンピュータに関し、更に詳細にはそれに使用する算術装置に関する。
【０００２】
【従来技術及びその問題点】
ディジタルコンピュータで行なわれる多数の計算は整数を２の冪乗で割ることを含んでいる。たとえば、Haar変換を利用する画像圧縮計算では隣接ピクセル値の和及び差を２で割る計算が必要である。同様に、２進分数による乗算は複数の加算演算に分解することができ、ここで１つのオペランドが整数を２の冪乗で割りこの結果結果を第２の整数に加えることで生成する。
【０００３】
整数の２mによる割算を行なう最も速い方法は整数をｍ桁だけ右にシフトすることである。このようなシフトは単一の命令サイクルで実行することができる。従って、この手順は重要な利点を持っている。残念ながら、この方法により得られる結果は常にシフトアウトされたビットを捨てて下方に丸められる。このような下方への丸めを以下の説明では切り捨てと呼ぶ。このような下方への丸めは多くの状況では許容できるが、これが望ましくない場合も多数存在する。たとえば、各計算が前の計算の結果を用いる一連の計算を行なおうとすれば、すべての計算が切り捨てを利用している場合丸め誤差は更に大きくなるであろう。
【０００４】
加えて、多くの値から成る集合の上で演算するときある統計的性質を維持するのが重要な場合がしばしばある。画像内の隣接ピクセルを平均することにより画像の大きさを縮小する場合を考える。つまり、４ピクセルから成る各グループを置き換えられる４ピクセルの平均に等しい値を持つ１つのピクセルで置き換える。画像はＩ×Ｉのピクセルアレイで表される。このピクセルの縮小は先ずアレイの奇数行及び偶数行を平均してＩ×I/2の中間アレイを作ることにより達成することができる。この中間アレイの奇数列及び偶数列は次に平均されて最終の（I/2）×（I/2）アレイを発生する。各種平均化演算が常に切り捨ての場合のように下方への丸めを行えば、最終画像は元の画像とは異なる統計的性質を持つことになる。たとえば、縮小された画像は元のアレイより低い平均光度を持つことになる。この種のアーティファクトを回避することがしばしば重要になる。
【０００５】
【目的】
本発明の目的は、一般的に言えば、整数を２の冪乗で割った結果を丸める改良された方法及び装置を提供することである。
【０００６】
本発明の別の目的は、結果を偏らせることなく整数を２の冪乗で割る方法及び装置を提供することである。
【０００７】
本発明のこれらの及び他の目的は当業者には本発明の次の詳細な説明及び付図から明らかになるであろう。
【０００８】
【概要】
本発明の一実施例によれば、０から（Ｎ−１）までの整数ｉについてビットＸiを有する語Ｘを、非負整数であり且つｍ≦μ≦Ｎ−１である整数ｍについて、ｍ桁だけシフトして、０から（Ｎ−１）までの整数ｉについてのビットＹiを有する語Ｙを得る装置が与えられる。この装置は複数の入力端子を持ち、これら入力装置の各々は前記ビットＸiの１つを受け取り、また０から（Ｎ−１）までの整数ｉについて、各Ｘiに対応する入力端子が１つ存在する。同様に、この装置は０から（Ｎ−１）までの整数ｉについて各Ｙiに対応するものが１つ存在する複数の出力端子を備えている。シフト動作は複数の多重化回路の支援のもとに達成される。各多重化回路は出力端子の１つに接続されている。Ｙiに対応する出力端子に接続されている多重化回路はＹiに対応する出力端子を１から（Ｎ−１−ｍ）までの整数ｉについてＸi+mに対応する入力端子に接続する。Ｙ0に接続されている多重化回路はＹ0を値（Ｘ0 ＯＲ Ｘ1 ＯＲ .....Ｘm）を有する信号に接続する。（ｐ＋ｍ）＞（Ｎ−１）を満足するＹpに対応する出力端に接続されている多重化回路は、Ｘが符号なしの整数であればＹpに対応する出力端子を論理０に接続する。（ｐ＋ｍ）≧（Ｎ−１）を満足するＹpに対応する出力端子に接続されている多重化回路は、Ｘが符号付きの整数であればＹpに対応する出力端子をＸN-1に対応する入力端子に接続する。
【０００９】
【実施例】
上に記した通り、Ｘを２mで割ることはＸが２進数で整数であればＸをｍだけ右にシフトすることと等価である。「１」の値を有するビットがシフトによって語からこぼれ落ちた場合、丸め誤差が生じているといわれる。偏りのない結果に導く可能な丸め方法は２つあり、これらを奇数丸め及び偶数丸めという。偶数丸めシステムでは、演算結果は丸め誤差が生ずれば最も近い偶整数に丸められる。奇数丸めシステムでは、演算結果は丸め誤差が生ずれば最も近い奇整数に丸められる。浮動小数点ハードウェアでは偶数丸めが通常採用される。その理由は、ある形態の偶数丸めの方がある種の計算で累積誤差が少なくなるからである。
【００１０】
本発明によるシフト及び丸め回路100の一実施例のブロツク図である図１を参照する。本発明は、このようなシステムを実施するのに必要なハードウェアが整数除算の場合特に簡単であるから奇数丸めシステムを使用している。整数Ｘを２mで割った結果Ｙを考える。Ｘは、０から（Ｎ−１）までの整数ｉについて、ビットＸiを有し、またＸ0はＸの最下位ビットであるとする。Ｘは典型的には幾つかのレジスタに保持され、そのビットは入力線111により本発明の実施例に対して与えられる。各入力線にはそれが接続されているビットのラベルが付けられている。Ｙは一組の出力線110に乗っているビット信号により表される。シフト動作は、ｍから（Ｎ−１）までの整数ｉについて、ＸiをＹi-mに導く多重化回路の助けを借りて行なわれる。多重化回路の例を101−104で示してある。一般に、多重化回路は（μ＋１）対１のマルチプレクサである。ここでμはｍに許される最大の数である。μの可能な最大値はＮ−１である。各マルチプレクサはｍ番目のマルチプレクサ入力線上の入力線をディジタル信号ｍに応答して出力線110に接続する。
【００１１】
Ｙの最上位ビットに接続されているマルチプレクサは、それに対して対応するＸビットが存在しない多数の入力を備えている。これらの入力は図１に示す実施例では論理０に接続されているが、当業者には、これらマルチプレクサを、Ｎ−１より大きい入力線を選択すれば論理０に接続されている入力を入力線に接続することにより、入力線の本数が図１に示すものよりも少ないマルチプレクサで置き換えることができることが明らかであろう。しかし、以下の説明を簡単にするため、各マルチプレクサは（μ＋１）対１のマルチプレクサであると仮定する。シフト及び丸め回路100が符号なしの整数についての演算を行っていれば、マルチプレクサは、対応するＸビットの添字がＮ−１より大きくなってしまう場合には論理０に接続される入力を選択する。（ｐ＋ｍ）＞（Ｎ−１）であれば、Ｙpに接続されているマルチプレクサはＹpを論理０に接続する。
【００１２】
回路100が符号付き整数についての演算を行っていれば、Ｙの最上位ビットに接続されているマルチプレクサがＹをＸN-1に接続することにより、符号ビットを保存する。従って、（ｐ＋ｍ）≧（Ｎ−１）であれば、Ｙpに接続されているマルチプレクサがＹpをＸN-1が接続されている入力線に接続する。マルチプレクサには、これを満足するように接続できる入力せんが常に１本存在する。
【００１３】
Ｙ０に接続されているマルチプレクサ105は本発明の実施例に使用されている奇数丸めシステムを実現する。マルチプレクサ105は丸め信号Ｒ及びＸのシフト桁数を指定するシフト信号ｍに応答する。丸め信号Ｒに応答して奇数丸めを行なうには、マルチプレクサ105はマルチプレクサ105へのｍ番目の入力を選択することによりＹの最下位ビットを（Ｘ0 ＯＲ Ｘ1 ＯＲ .....Ｘm）で置き換える。マルチプレクサ105へのｍ番目の入力はＸ0からＸmまでの入力を有するＯＲ回路に接続されている。ＯＲ回路の例を115−117で示してある。シフトされてこぼれ落ちたＸのビットのどれかが「１」であれば、丸め誤差が生じている。この場合には、Ｙの最下位ビットは強制的に「１」にさせられる。すなわち、演算結果は最も近い奇数に丸められる。丸め誤差が生じていなければ、Ｙの最下位ビットはＸmである。
【００１４】
この形式の丸め処理によって得られる平均誤差はＸの値の最下位（ｍ＋１）ビットが一様に分布していれば０であることを示すことができる。偶数丸めシステムも丸めにおける偏りを防止していることに注目すべきである。しかし、偶数丸めシステムを実現するのに必要なハードウェアは上に記したものよりかなり複雑であり、従って奇数丸めシステムの方が望ましい。
【００１５】
本発明を整数の２mによる除算に関する局面での有用性の見地から説明してきたが、当業者には本発明が整数ばかりでなく固定小数点での演算にも有用であることが明らかであろう。
【００１６】
本発明に対する種々の修正が前述の説明及び付図から当業者には明らかであろう。従って、本発明の技術的範囲は特許請求の範囲によってのみ限定されるものである。
【００１７】
以下に本発明の実施態様の例を列挙する。
【００１８】
［実施態様１］以下の(a)ないし(d)を設け、ビットＸi（ここでｉは０から（Ｎ−１）までの整数）を有する語Ｘを、非負整数であり且つｍ≦μ≦Ｎ−１である整数ｍについてｍ桁だけシフトして、ビットＹiを有する語Ｙを得るシフト及び丸め回路：
(a)複数の入力端子：前記入力端子の各々はＸiの１つを受け取り、Ｘiの各々に対応する１つの前記入力端子が存在する；
(b)複数の出力端子：Ｙiの各々に対応する前記出力端子が１つ存在する；
(c)複数の第１の多重化回路：前記第１の多重化回路の各々は前記出力端子の１つに接続され、Ｙj（ｊは１から（Ｎ−１−ｍ）までの整数）に対応する前記出力端子に接続されている前記第１の多重化回路はＹjに対応する前記出力端子をＸj+mに対応する前記入力端子に接続する；
(d)第２の多重化回路：前記第２の多重化回路は、Ｙ0に接続され、Ｙ0をＸ0ないしＸmについて論理和を取った値を有する信号に接続する。
【００１９】
［実施態様２］Ｘが符号なしの整数である場合、（ｐ＋ｍ）＞（Ｎ−１）を満足するＹpに対応する前記出力端子に接続されている前記第２の多重化回路は、前記Ｙpに対応する前記出力端子を論理０に接続することを特徴とする実施態様１記載のシフト及び丸め回路。
【００２０】
［実施態様３］Ｘが符号付きの整数である場合、（ｐ＋ｍ）≧（Ｎ−１）を満足するＹpに対応する前記出力端子に接続されている前記第２の多重化回路はＹpに対応する前記出力端子をＸN-1に対応する前記入力端子に接続することを特徴とする実施態様１記載のシフト及び丸め回路。
【００２１】
［実施態様４］以下のステップ(a)ないし(d)を設け、ビットＸｉ（ｉは０から（Ｎ−１）までの整数）を有する語Ｘをｍ桁（ｍはｍ≦μ≦Ｎ−１を満足する非負整数）だけシフトして、ビットＹiを有する語Ｙを得る方法：
(a)各々が前記ビットＸiの１つを受け取り、またＸiの各々に対応するものが１つ存在する複数の入力端子を設けるステップ；
(b)各Ｙｉに対応するものが１つ存在する複数の出力端子を設けるステップ；
(c)Ｙiに対応する前記出力端子の各々をＸi+mに対応する前記入力端子に接続するステップ；
(d)Ｙ0をＸ0ないしＸmの論理和の値を有する信号に接続するステップ。
【００２２】
［実施態様５］前記Ｘが符号なしの整数である場合、（ｐ＋ｍ）＞（Ｎ−１）を満足する前記Ｙpに対応する前記出力端子を論理０に接続するステップを設けたことを特徴とする実施態様４記載の方法。
【００２３】
［実施態様６］前記Ｘが符号付きの整数である場合、（ｐ＋ｍ）≧（Ｎ−１）を満足するＹpに対応する前記出力端子を前記ＸN-1に対応する前記入力端子に接続するステップを設けたことを特徴とする実施態様４記載の方法。
【００２４】
【効果】
以上詳細に説明したように、本発明によれば、２の冪乗による除算を高速かつわずかな丸め誤差で計算することができる。
【図面の簡単な説明】
【図１】本発明の一実施例のブロック図。
【符号の説明】
101−105：多重化回路
110：出力端子
111：入力端子
115−117：ＯＲ回路
【図１】
0003645298.tif 000002