説明

ディジタル論理回路におけるマルチビットベクトルの効率的な比較演算のためのシステムおよび方法

ディジタル論理回路において、2つのマルチビットベクトルの差が、所与の数に等しいか、または所与の2つの数の間にあるかどうかを判定するために必要な論理上および計算上の時間を相当に低減する改良型の技法。一態様例において、このことは、第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]をディジタル論理回路に受け入れることによって達成され、この場合にNは非ゼロの正数である。次いで、第3のNビットベクトルが、A[N−1:0]および〜B[N−1:0]を用いて、ビット単位AND(A[N−1:0]&〜B[N−1:0])演算を実行することによって得られる。さらに、第4のNビットベクトルが、A[N−1:0]および〜B[N−1:0]を用いて、ビット単位XOR(A[N−1:0]^〜B[N−1:0])演算を実行することによって得られる。次いで、第3のNビットベクトルおよび第4のNビットベクトルにおけるビットパターンに基づいて、第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]の差が、所与の数に等しいか、または所与の2つの数(+mおよび+n、m<n)の範囲内にあると宣言される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ディジタル論理回路に関し、より詳細には、ディジタイル集積回路内部の比較論理ユニットに関する。
【背景技術】
【0002】
2つのマルチビットベクトルの比較は、ディジタル論理回路において実行される一般的な演算である。また、ディジタル論理回路においては、等号性(equality)に対する比較演算を実行することも一般的である。さらに、ときには、2つのマルチビットベクトルが、値においてある量だけ異なるかどうかを判定することが必要となる。例えば、2つのマルチビットベクトルの差が、+1、+2、または+nに等しいかどうかを見いだす、比較演算を実行することが必要となることが多い。しばしば、2つのマルチビットベクトルA[N−1:0]およびB[N−1:0]の差が、mおよびnの両方が既知である場合に、+m〜+n(m<n)の範囲内であるかどうかを判定すること、すなわち不等号性(inequality)+m≦A[N−1:0]−B[N−1:0]≦+nを評価することが必要となる。
【0003】
従来より、A[N−1:0]==B[N−1:0]+nなどの等号性を検証するために、2つのマルチビットベクトルに対して実行される比較演算には、ディジタル論理回路において、Nビット加減算器に続いて、Nビットの比較器が必要となる。さらに、2つのベクトル間の差が、ある範囲にあるかどうかを判定する演算を実行する従来式技法では、少なくとも1つの加減算器と複数の比較器とが必要となる。一般的に、ディジタイル回路内のそれぞれの加減算器は、かなりの数の論理ゲートを必要とし、これには大きなシリコン面積が必要となる。さらに、それによって大きな遅延が生じる。
【発明の概要】
【0004】
本発明の一観点によれば、ディジタル論理回路内での2つのマルチビットベクトルの比較方法であって、Nが非ゼロの正の数であるときに、第1のNビットベクトルA[N−1:0]および第2のNビットベクトルB[N−1:0]をディジタル論理回路に受け入れるステップ、A[N−1:0]と、第2のNビットベクトルB[N−1:0]における各ビットを反転することによって得られる〜B[N−1:0]とを用いてビット単位AND(A[N−1:0]&〜B[N−1:0])演算を実行することによって第3のNビットベクトルを得るステップ、A[N−1:0]および〜B[N−1:0]を用いて、ビット単位XOR(A[N−1:0]^〜B[N−1:0])演算を実行することによって第4のNビットベクトルを得るステップ、およびA[N−1:0]とB[N−1:0]の差が、所与の数に等しいか、または、m<nである2つの数、+mおよび+nの所与の範囲内であるかどうかを、第3のNビットベクトルおよび第4のNビットベクトルにおけるビットパターンに基づいて宣言するステップ、を含む方法が提供される。
次いで、本発明の態様を、例としてのみ、添付の図面を参照して説明する。
【図面の簡単な説明】
【0005】
【図1】ディジタル論理回路内での比較演算を実現するための本発明の一態様によるフローチャートである。
【図2】本発明の一態様による、ディジタイル回路において、2つのマルチビットベクトルの差が+1に等しい場合に、比較演算を実現する装置のブロック図である。
【図3】本発明の一態様によるディジタル論理回路において、2つのマルチビットベクトル間の差が+2に等しい場合に、比較演算を実現する装置のブロック図である。
【図4】本発明の一態様によるディジタル論理回路において、2つのマルチビットベクトル間の差が+3に等しい場合に、比較演算を実現するための装置のブロック図である。
【図5】本発明の一態様によるディジタル論理回路において、2つのマルチビットベクトル間の差が0または+1に等しい場合に、比較演算を実現するための装置のブロック図である。
【発明を実施するための形態】
【0006】
本発明の様々な態様についての以下の詳細な説明においては、本明細書の一部を形成する添付の図面を参照し、これらの図面には、本発明を実施することができる具体的な態様が例証として示されている。これらの態様は、当業者が本発明を実施することができるように、十分に詳細な説明がなされており、また、その他の態様を使用してもよいこと、および本発明の範囲から逸脱することなく変更を加えることができることを理解すべきである。したがって、以下の詳細な説明は、限定の意味で解釈すべきではなく、本発明の範囲は、添付の請求の範囲によってのみ定義されるものである。
【0007】
「マルチビットベクトル」および「Nビットベクトル」の用語は、本明細書を通して同義で用いる。また、第1のNビットベクトル、第1のNビットベクトルA[N−1:0]、およびA[N−1:0]の用語は、本明細書を通して同義で用いる。さらに、第2のNビットベクトル、第2のNビットベクトルB[N−1:0]、およびB[N−1:0]の用語も、本明細書を通して同義で用いる。また、「0から1へ」、「0→1」の用語は、本明細書を通して同義で用いる。さらに、「0」および「1」の表記は、ディジタル論理回路の文脈において、それぞれロー論理レベルおよびハイ論理レベルとしての値を示すものとして使用される。
【0008】
また、等号論理A[N−1:0]==B[N−1:0]+nは、本明細書を通して、それと等価な形式、A[N−1:0]−B[N−1:0]==n、A[N−1:0]+〜B[N−1:0]+1==n、およびA[N−1:0]+〜B[N−1:0]==n−1で表わして用いられる。n=1の場合に、比較演算に対してこの等号論理が真であるためには、A[N−1:0]+〜B[N−1:0]の和は0とならなければならない。同様に、この等号性がn=2に対して真であるためには、A[N−1:0]+〜B[N−1:0]は、1とならなくてはならない、などである。
【0009】
図1は、2つのオペランド間の差が所与のnに対して+nに等しいか、または2つの所与の数字、+mおよび+nの範囲内にある場合に、2つのマルチビットベクトルに対して比較演算を実行するための方法例100を示す。ステップ110において、方法100は、第1のNビットベクトルA[N−1:0]および第2のNビットベクトルB[N−1:0]を受け入れることによって開始される。Nビットベクトルは、任意のマルチビットベクトルであってもよい。態様によっては、Nビットベクトルは、8ビットベクトル、16ビットベクトル、24ビットベクトル、32ビットベクトル、または64ビットベクトルである。
【0010】
ステップ120において、〜B[N−1:0]を得るためにB[N−1:0]のビット単位の反転が実行される、すなわちB[N−1:0]の全ビットを反転することによって〜B[N−1:0]が得られる。ステップ130において、第3のNビットベクトルが、受け入れたA[N−1:0]と、得られた〜B[N−1:0]を用いて、ビット単位AND(A[N−1:0]&〜B[N−1:0])演算を実行することによって得られる。ステップ140において、第4のNビットベクトルが、受け入れたA[N−1:0]と得られた〜B[N−1:0]を用いて、ビット単位XOR(A[N−1:0]^〜B[N−1:0])演算を実行することによって得られる。
【0011】
ステップ150において、受け入れたA[N−1:0]とB[N−1:0]の差は、第3のNビットベクトルおよび第4のNビットベクトルにおけるビットパターンに基づいて、所与のnに対して+nに等しいか、またはmおよびnが与えられて、m<nである場合に、+mと+nの範囲内にあると宣言される。例えば、ステップ150では、受け入れたA[N−1:0]とB[N−1:0]の差が0か、または1であるかを、第3のNビットベクトルおよび第4のNビットベクトルのビットパターンに基づいて、判定してもよい。以下の例は、比較演算の具体的な事例について説明するものである。
【0012】
事例(1):等号性A==B+nの評価、n=1の場合(A_EQ_B_PLUS_1)
態様によっては、n=1に対する、比較演算に対して、すなわち受け入れたA[N−1:0]とB[N−1:0]の差は、+1に等しく(すなわちA[N−1:0]==B[N−1:0]+1)、ステップ150において、上記の方法100は、A[N−1:0]と〜B[N−1:0]を加算したときに0となるかどうかを判定する。
【0013】
以下の表の例は、8ビットベクトルを使用して、方法100を図解している。
【表1】

【0014】
上記の例において、任意のビット位置gの右側では、A[N−1:0]および〜B[N−1:0]のすべてのビットは0に等しく、これによって0が合計ビットとなり、繰上りを生じないことが分かる。上記の表の例においては、任意ビット位置gにおいて、A[N−1:0]と〜B[N−1:0]のビットの両方が1に等しく、それによって合計ビットは0となり、繰上りを生じる。任意ビット位置gの左側のすべてのビット位置は、A[N−1:0]または〜B[N−1:0]のいずれかにおいて1を有し、かつ両方が1を有することがなく、その結果として、それらのビット位置は、繰上りを伝播して、合計0を生成することができる。
【0015】
したがって、上記の表の例から、A[N−1:0]−B[N−1:0]==1またはそれと等価なA[N−1:0]+〜B[N−1:0]==0を検出する問題は、A[N−1:0]および〜B[N−1:0]における上記のビットパターンの存在を同定するのと等価であり、この同定は第3のNビットベクトルおよび第4のNビットベクトルによって支援され、これらは、以下のように特徴づけられる。
1.第4のNビットベクトルが右から左にスキャンされるときに、0から1へのビット遷移が1回だけ見つかる。
2.第3のNビットベクトルのビットが、0から1へのビット遷移のビット位置、すなわち任意のビット位置gに、1つだけ1を有する。
【0016】
これらの態様において、ステップ150では、方法100は、第4のNビットベクトルにおいて0から1へのビット遷移が発生する、対応するビット位置におけるビットが、第3のNビットベクトルにおいて1に等しく、かつ残りのビットが0に等しいかどうかをさらに判定する。さらに、ステップ150において、方法100は、第4のNビットベクトルにおいて0から1へのビット遷移が1回だけあるかどうかを判定する。次いで、方法100は、第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]の差を、+1に等しいと宣言するか、または方法100は、A[N−1:0]−B[N−1:0]==+1であると宣言する。
【0017】
第4のNビットベクトルビットにおける0→1のビット遷移の検出は、第4のNビットベクトルビットと、1ビット位置だけ右にシフトされた同ビットとの間でビット単位XOR演算を実行し、それによって、LSBが最右端ビットであると仮定して、第5のNビットベクトルを生成することによって得られる。ビットを右にシフトする一方で、最左端ビットまたはMSBが、右シフトによって生成された空位置にコピーされる。第6のNビットベクトルが、第3のNビットベクトルと第5のNビットベクトルとの間で、ビット単位XOR演算を実行することによって生成される。これらの態様において、第6のNビットベクトルは0だけを有し、これらは、その全ビットに対してNOR演算を行うことによって検出される。このNOR演算の結果として1が得られる場合には、第5のNビットベクトルにおけるビットは、第3のNビットベクトルビットと厳密に一致する。
【0018】
【表2】

【0019】
上記の表において、第4のNビットベクトルビットのMSBを1に等しいとすることは、A[N−1:0]およびB[N−1:0]が正数であって、そのMSBとして0を有することを要求するのと等価である。ベクトルA[N−1:0]およびB[N−1:0]が、その解釈において符号なしの数として扱われる場合には、ベクトルA[N−1:0]およびB[N−1:0]の両方に対して、MSBに対して左の位置に0ビットを加えて、それによって実質的に、2つのマルチビットベクトルの幅を1だけ増大させることができる。
【0020】
上記の方法が正しい結果を得るためには、第4のNビットベクトルは、1回、かつ1回だけの0から1へのビット遷移を有することが必要である。第4のNビットベクトルビットがすべて1に等しく、第3のNビットベクトルビットが0に等しい場合には、第4のNビットベクトルにおける0→1遷移を検証する上記の方法では、正しい結果を得ることができない。この境界事例は、第3のNビットベクトルビットのすべてが0に等しくはないことを要件とすることによって除外することができる。
【0021】
この演算の全体は、以下の論理式を用いて表わすことができる。
A_EQ_B_PLUS_1=
(〜|(XOR[N−1:0]^(XOR[N−1:0]>>I))^AND[N−1:0])&|AND[N−l:0]
または、これと等価に
A_EQ_B_PLUS_1=
(&(XOR[N−1:0]〜^(XOR[N−1:0]>>1))^AND[N−1:0])&|AND[N−1:0]
ここで、AND[N−1:0]は、第3のNビットベクトルであり、XOR[N−1:0]は第4のNビットベクトルである。
【0022】
第4のNビットベクトルのビットシフト動作、すなわちXOR>>1は、MSBを保存する、1ビット位置の算術的右シフトである。「&」、「^」、「|」、および「〜」は、それぞれビット単位のAND、XOR、OR、およびINVERT演算である。式の右辺の最初に含まれる「&」および「|」演算子は、それぞれANDおよびORリダクション演算を意味する。
【0023】
事例(2):等号性A==B+nの評価、n=2の場合(A_EQ_B_PLUS_2)
態様によっては、n=2の場合、すなわち受け入れたA[N−1:0]とB[N−1:0]の差が+2に等しく、A[N−1:0]==B[N−1:0]+2、またはこれと等価にA[N−1:0]+〜B[N−1:0]==+1となる比較演算が、我々の8ビットベクトル実行例を用いて以下の表に図解されている。上記のA[N−1:0]+〜B[N−1:0]の加算工程では、結果として1に等しくなるLSBを除き、すべて0を生成されることが分かる。
【0024】
したがって、A[N−1:0]および〜B[N−1:0]のビットパターンは、以下の表に示すものだけが可能である。
【表3】

【0025】
このように、n=2の場合、すなわち、受け入れたA[N−1:0]とB[N−1:0]の差が+2に等しく、A[N−1:0]==B[N−1:0]+2となる比較演算に対しては、方法100は、ステップ150において、A[N−1:0]および〜B[N−1:0]のLSBが異なるかどうかを判定する(すなわち、方法100は、それらのLSBが、それぞれ、0および1、または1および0であるかどうかを判定する)。A[N−1:0]と〜B[N−1:0]のLSB同士が異なる場合には、方法100は、ステップ150において、第1のNビットベクトルおよび第3のNビットベクトルが加算されるときに、A[N−1:0]および〜B[N−1:0]のその他のすべてのビット、すなわちA[N−1:1]およびB[N−1:1]が0となるかどうかをさらに判定する。これは、ステップ150において、「等号性A==B+nの評価、n=1の場合(A_EQ_B_PLUS_1)」の項において上述したのと同一の演算を、A[N−1:1]および〜B[N−1:1]だけに適用することによって判定することができ、これは本質的にA[N−1:1]+〜B[N−1:1]==0を求めることである。A[N−1:0]および〜B[N−1:0]のLSB同士、すなわちA[0]と〜B[0]が異なり、またA[N−1:0]および〜B[N−1:0]の残りのビット、すなわちA[N−1:1]および〜B[N−1:1]が、加算されたときに0である場合には、方法100は、ステップ150において、受け入れた第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]の差が+2に等しいとして、すなわちn=+2として宣言する。
【0026】
n=2の事例に対する等号性に関する上記の演算は、上述したのと同様の論理表記を使用して、以下の式を用いて表わすことができる。
A_EQ_B_PLUS_2 =
(〜|(XOR[N−1:1]^(XOR[N−1:l]>>1))^AND[N−1:1])&|AND[N−1:1])&XOR[0].
【0027】
事例(3):等号性A=B+nの評価、n=3の場合(A_EQ_B_PLUS_3)
態様によっては、n=3(受け入れたA[N−1:0]とB[N−1:0]の差が+3に等しく、したがってA[N−1:0]==B[N−1:0]+3、またはそれと等価に、A[N−1:0]+〜B[N−1:0]==2)に関する比較演算に対して、加算工程、A[N−1:0]+〜B[N−1:0]は、2値ストリング10を生成する2つのLSBを除くすべての位置で、すべて0を生成する。
【0028】
A[N−1:0]の2つのLSBと、〜B[N−1:0]の関連する2つのLSBとにおける以下の組合せは、10を生成する。
【表4】

【0029】
A[N−1:0]およびB[N−1:0]の2つのLSBが、上記にリストした最初の3つの事例の1つと同じである場合には、第1のNビットベクトルと第2のNビットベクトルが加算されると、A[N−1:0]およびB[N−1:0]のすべての残りのビットは0の群を生成する。これらの態様においては、「等号性A==B+nを評価、n=1の場合」の項を参照して説明した方法を、それらのビット、すなわち[N−1:2]に対して適用することができる。上記の最後の事例と同様に、A[N−1:0]とB[N−1:0]の2つのLSBが同じである場合には、その結果は、第3のLSB位置への繰上り(carry)が生ずる。そのような場合には、2つのLSB位置を除くすべての位置で、すべて0を得るためには、すべての残りのビット、すなわちA[N−1:2]および〜B[N−1:2]は、加算されると、すべて1を生成しなくてはならない。
【0030】
したがって、n=3に対しては、上記の方法100は、ステップ150において、A[N−1:0]の2つのLSBおよび〜B[N−1:0]の関連する2つのLSBが、10および00、00および10、または01および01に等しいかどうかを判定する。A[N−1:0]の2つのLSBと、〜B[N−1:0]の関連する2つのLSBが、10および00、00および10、または01および01に等しい場合には、方法100は、ステップ150において、「等号性A=B+nの評価、n=1の場合」の項を参照して概説したのと同じ演算を、A[N−1:0]および〜B[N−1:0]のビット[N−1:2]に適用することによって、A[N−1:2]+〜B[N−1:2]==0であるかどうかを判定する。これらの2つの検証が成功すれば、方法10は、第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]との差が+3に等しいと宣言する。方法100が、ステップ150において、A[N−1:0]と〜B[N−1:0]の両方の2つのLSBが11であると判定する場合には、方法100は、さらに、第4のベクトル、すなわちXOR[N−1:2]の残りのすべてのビット位置が、すべて1であるかどうかをさらに判定する。次いで、方法100は、第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]の差は+3に等しいと宣言する。
【0031】
以下は、上述の演算シナリオを式形態で説明している。
【表5】

【0032】
事例(4):等号性A==B+nの評価、n>3の場合
n=+3に対する上述の方法を、任意所与の数、すなわちn>3に一般的に拡張することができることが分かる。任意所与のnに対して、A[N−1:0]+〜B[N−1:0]は、n−1に等しい必要がある。さらに、A[N−1:0]および〜B[N−1:0]の適当な数の最下位ビットを検証して、その合計がn−1であるかどうかを知る必要がある。これらの最下位ビットの合計から発生する繰上りがある場合には、第4のNビットベクトル内のビットの残りは、すべて1に等しくなくてはならない。繰上りがない場合には、「等号性A==B+nの評価、n=1の場合」の項において概説した、事例n=1に対する方法が、A[N−1:0]および〜B[N−1:0]の残りのビットに適用されて、それらが加算した場合に0になるかどうかが検証される。
【0033】
事例(5):不等号性m≦A−B≦nの評価
態様によっては、わずかの修正によって、2つの受け入れたマルチビットベクトルの差が+mと+n(m<n)の範囲内であるかどうかを判定するのに、上記の技法を使用することも考えられる。この比較はまた、A[N−1:0]と〜B[N−1:0]の合計の高次ビットにおける0の検出にも関係し、このためには、「等号性A==B+nの評価、n+1の場合」の項において概説したのと同一の方法を、適当なビットに適用することができる。例えば、A[N−1:0]と〜B[N−1:0]の差が、0と+1の間(すなわち、A[N−1:0]==B[N−1:0]またはA[N−1:0]==B[N−1:0]+1)であるか、または0と+2の間(すなわち、A[N−1:0]==B[N−1:0]またはA[N−1:0]==B[N−1:0]+1またはA[N−1:0]==B[N−1:0]+2)であるかを判定することができる。
【0034】
例えば、2つの受け入れたマルチビットベクトルの差が、0と+1の範囲内(すなわちA[N−1:0]==B[N−1:0]またはA[N−1:0]==B[N−1:0]+1)であるかどうかを判定するためには、上記の方法100を、「等号性A==B+nの評価、n=1の場合」の項を参照して、第3のNビットベクトル内に1に等しいビットが少なくとも1つあるかどうかを検証するステップを除去した後に、使用することができる。以前と類似の論理表記を使用して、この不等号性0≦A−B≦1は、以下の式形式で表わすことができる。
A_EQ_B_PLUS_0_OR_1=
(〜|(X0R[N−1:0]^(XOR[N−1:0]>>1))^AND[N−1:0])
【0035】
同様に、2つの受け入れたマルチビットベクトル間の差が、+1または+2にいずれかに等しいか(すなわち、A[N−1:0]==B[N−1:0]+1またはA[N−1:0]==B[N−1:0]+2)どうかを判定するために、「等号性A==B+nの評価、n=2の場合」の項で概説したように、n=+2について上記の方法100を、A[N−1:0]と〜B[N−1:0]のLSBが0および1、または1および0であるかどうかを検証するステップを、A[N−1:0]と〜B[N−1:0]のLSBが、両方とも1ではないかどうかを検証するステップで置き換えた後に、使用することができる。以前と同様の論理表記を使用して、この等号性を、以下の式を使用して表わすことができる。
A_EQ_B_PLUS_1_OR_2=
(〜|(XOR[N−1:1]^(XOR[N−1:l]>>1))^AND[N−1:l])&|AND[N−1:1])&〜AND[0].
【0036】
上記の説明を、異なる所与の数字の範囲に係わる比較演算を実行できるように拡張する方法が、当業者には明らかであるはずである。
フローチャート100は、例示的な態様においては直列に配列されたステップ110〜150を含むが、本発明のその他の態様では、2つ以上のステップを並列に実行することもできる。また、さらに別の態様では、これらのステップを、モジュール間およびそれらを通して通信される、関係する制御信号およびデータ信号を備える、2つ以上の特定の相互接続されたハードウエアモジュールとして、または用途特定集積回路の部分として、実現することもできる。このように、例示的なプロセスフロー図は、ソフトウエア、ファームウエア、および/またはハードウエアの実装に適用することができる。
【0037】
図2に示すディジタル論理回路図200は、2つの受け入れた第1のNビットベクトルと第2のNビットベクトル、それぞれA[N−1:0]とB[N−1:0]の差が+1に等しいかどうかを判定する、上記の比較演算アルゴリズムの実現例を示すものである。図2に示すように、ディジタル論理回路200は、第1の処理経路210、第2の処理経路220、および最終出力モジュール230を含む。
【0038】
動作に際して、第1の処理経路210は、第1のNビットベクトルA[N−1:0]を受け入れる。第1の処理経路210と並列の第2の処理経路220は、第2のNビットベクトルB[N−1:0]を受け入れる。第2の処理経路220は、第2のNビットベクトルB[N−1:0]のビット単位の反転を実行して、〜B[N−1:0]を得る。次いで、処理経路210が、A[N−1:0]と〜B[N−1:0]を用いてビット単位AND(A[N−1:0]&〜B[N−1:0])演算を実行して、第3のNビットベクトルを得る。次いで、第2の処理経路220は、A[N−1:0]と〜B[N−1:0]を用いてビット単位XOR(A[N−1:0]^〜B[N−1:0])演算を実行して、第4のNビットベクトルを得る。
【0039】
態様によっては、第2の処理経路220は、第4のNビットベクトルと、算術的右シフト演算を第4のNビットベクトルに対して実行することによって得られた、別のNビットベクトルとの間のビット単位XNOR演算を実行することによって、第5のNビットベクトルを得る。次いで、第2の処理経路は、第5のNビットベクトルと第3のNビットベクトルにビット単位XOR演算を実行して、第6のNビットベクトルを得る。次いで、最終出力モジュール230、すなわち最終N+1入力ANDゲートが、A[N−1:0]とB[N−1:0]の差が+1に等しいことを宣言する。
【0040】
態様によっては、第2の処理経路220では、第4のNビットベクトルを最下位ビット(LSB)から最上位ビット(MSB)へスキャンするときに、第4のNビットベクトル内に1回だけ0から1へのビット遷移があるかどうかを判定する。次いで、第2の処理経路220では、0から1へのビット遷移が第4のNビットベクトル内で発生する、対応する位置におけるビットが、第3のNビットベクトルにおいて1に等しいかどうか、および第4のNビットベクトル内に1回だけの0から1へのビット遷移がある場合には、残りのビットが0に等しいかどうかを判定する。次いで、最終出力モジュール230は、0から1へのビット遷移が第4のNビットベクトルに発生する、対応する位置におけるビットが、第3のNビットベクトルにおいて1に等しく、残りのビットが0に等しい場合には、第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]との差が+1に等しいと宣言する。
【0041】
図2に示すディジタル論理回路200の動作は、図1を参照してより詳細に説明される。図2では、上述の比較演算が、完全な加算および/または減算を必要とせず、したがって、上記の技法は、必要とする論理ゲート数がより少ないので面積が大幅に小さくなることが分かる。この演算は、必要とする論理深度が大幅に小さいので、高速でもある。
【0042】
図3に示すディジタル論理回路図300は、受け入れたNビットベクトル、A[N−1:0]とB[N−1:0]に対して、その差が+2に等しいかどうかを判定する、上記の比較演算アルゴリズムの実現例を示す。図3に示すように、ディジタル論理回路300は、第1の処理経路310、第2の処理経路320、および最終出力モジュール330を含む。受け入れたNビットベクトル、A[N−1:0]とB[N−1:0]に対して、その差が+2に等しいかどうかを判定する比較演算に使用する、ディジタル論理回路300の動作は、図1を参照してより詳細に説明される。
【0043】
図4に示すディジタル論理回路400は、受け入れたNビットベクトル、A[N−1:0]とB[N−1:0]に対して、その差が+3に等しいかどうかを判定する、上記の比較演算アルゴリズムの実現例を示す。図4に示すように、ディジタル論理回路400は、第1の処理経路410、第2の処理経路420、および最終出力モジュール430を含む。受け入れたNビットベクトルA[N−1:0]とB[N−1:0]に対して、その差が+3に等しいかどうかを判定する、比較演算で使用するためのディジタル論理回路400の動作は、図1を参照してより詳細に説明される。
【0044】
図5に示すディジタル論理回路500は、受け入れたNビットベクトル、A[N−1:0]とB[N−1:0]に対して、その差が0に等しいか、または+1に等しいかどうかを判定する、上記の比較演算アルゴリズムの実現例を示す。図5に示すように、ディジタル論理回路500は、第1の処理経路510、第2の処理経路520、および最終出力モジュール530を含む。受け入れたNビットベクトルA[N−1:0]とB[N−1:0]に対して、差が0に等しいか、または+1に等しいかどうかを判定する、比較演算に使用するための、ディジタル論理回路500の動作は、図1を参照してより詳細に説明される。
【0045】
上記の技法は、実質的に、加算/減算演算を不要にしながら、2つのオペランドに対して比較演算を行い、2つのオペランドの差が0、+1、+2、…+nの内の1つであるか、または、+mと+nの範囲内かどうかを判定する。さらに、上記の技法は、完全な加算または減算を必要としないので、必要とする論理ゲートの数が大幅に少なく、大幅に高速である。さらに、典型的なライブラリセルセットを含む実現形態において、上記の技法は、加算演算または減算演算を使用する従来式技法に必要されるシリコン面積の約3分の1だけを必要とし、論理遅延は約半分である。上記の技法は、任意の差値nに対してスケール変更して適用できる。
【0046】
図1〜5に示した上記の例示態様は、2つのマルチビットベクトルに対する比較演算を実行して、その差が+1、+2、および/または+3であるかどうかを調べることを参照して説明されているが、上記の技法は、2つのマルチビットベクトルの差が+1、+2、または+3であるかどうかを検証することに限定されるものではなく、2つのマルチビットを比較して、差が+1、+2、および/または、nを既知として+nであるかどうかを調べるのに使用することができる。上記の技法の実現形態を、図2〜5での論理ゲートを使用して示したが、それらは実際の論理の深度を実証するためにだけ示されるものであり、異なるゲートを使用することのできる代替実現形態を考えることもできる。
【0047】
上記の説明は、実証を目的とするものであり、限定的なものではない。その他多くの態様が、当業者には明白であろう。したがって、本発明の範囲は、添付の請求の範囲と共に、そのような請求の範囲が資格を有する均等物の全範囲によって決定されるべきである。
本明細書に示すように、本発明は、様々な方法、回路、I/O装置、システムおよび関連する命令を有するマシンアクセス可能な媒体を含む物品を含む、ある数の異なる態様として実現することができる。
【0048】
その他の態様は、当業者には容易に明白になるであろう。要素、アルゴリズム、および演算順序は、すべて特定要件に適合するように変えることができる。図1に示す方法について上述した演算は、本明細書において示して説明したのとは異なる順序で実行することもできる。
図1〜5は、単に描写的なものであり、実スケールを表わしていない。そのある部分は、誇張されており、一方でその他は最小化されていることがある。図1〜5は、当業者が理解することができ、適切に実施することができる、本発明の様々な態様を示す。
【0049】
前述の本発明の態様の詳細な説明においては、本開示を簡略化する目的で、様々な特徴を単一の態様にグループ化した。この開示の方法は、本発明の請求する態様が、各請求項において明白に記述されるよりも多くの特徴を必要とするという意図を反映しているとは解釈されるべきではない。むしろ、添付のクレームが反映するように、本発明の特徴は、単一の開示態様のすべての特徴よりも少ない状態にある。すなわち、添付の請求項は、本発明の態様の詳細な説明に組み入れてあり、各クレームは、別個の好ましい態様としてそれ自体に依拠している。

【特許請求の範囲】
【請求項1】
ディジタル論理回路において、第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]に対する比較演算を実行する方法であって、
B[N−1:0]のビット単位反転を実行して〜B[N−1:0]を得ること;
A[N−1:0]および〜B[N−1:0]を用いてビット単位AND(A[N−1:0]&〜B[N−1:0])演算を実行することによって第3のNビットベクトルを得ること;
A[N−1:0]および〜B[N−1:0]を用いてビット単位XOR(A[N−1:0]^〜B[N−1:0])演算を実行することによって第4のNビットベクトルを得ること;および
第3のNビットベクトルおよび第4のNビットベクトルにおけるビットパターンに基づいて、A[N−1:0]とB[N−1:0]の差が、所与の数に等しいこと、または、m<nである2つの数、+mおよび+nの所与の範囲内であることを宣言すること、を含む前記方法
【請求項2】
第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]を受け入れることをさらに含む、請求項1に記載の方法。
【請求項3】
第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]を受け入れる際に、Nビットベクトルが、8ビットベクトル、16ビットベクトル、24ビットベクトル、32ビットベクトル、または64ビットベクトルである、請求項2に記載の方法。
【請求項4】
第3のNビットベクトルおよび第4のNビットベクトルにおけるビットパターンに基づいて、A[N−1:0]とB[N−1:0]の差が、所与の数に等しいこと、または、m<nである2つの数、+mおよび+nの所与の範囲内であることを宣言することが、
第4のNビットベクトルを最下位ビット(LSB)から最上位ビット(MSB)へとスキャニングすることによって第4のNビットベクトル内に0から1への遷移が1回だけあるかどうかを判定すること、
そうであれば、次いで、第4のNビットベクトルにおいて0から1へのビット遷移が発生する、対応する位置におけるビットが、第3のNビットベクトルにおいて1に等しいかどうか、および残りのビットが0に等しいかどうかを判定すること、および
そうであれば、次いで、第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]が+1に等しいと宣言することを含む、請求項3に記載の方法。
【請求項5】
第3のNビットベクトルおよび第4のNビットベクトルにおけるビットパターンに基づいて、A[N−1:0]とB[N−1:0]の差が、+2に等しいことを宣言することが、
A[N−1:0]のLSBが、B[N−1:0]のLSBと異なるかどうかを判定すること;
そうであれば、残りのビットのLSBから開始して残りのビットの最上位ビット(MSB)へと第4のNビットベクトル内のビットをスキャニングすることによって、第4のNビットベクトルの残りのビット内に、0から1へのビット遷移1が回だけ存在するかどうかを判定すること;
そうであれば、次いで、第4のNビットベクトルの残りのビットにおいて0から1へのビット遷移が発生する、対応する位置におけるビットが、第3のNビットベクトル内で1に等しいかどうか、および残りのビットが0に等しいかどうかを判定すること;および
そうであれば、次いで、A[N−1:0]とB[N−1:0]の差が、+2に等しいことを宣言することを含む、請求項3に記載の方法。
【請求項6】
第3のNビットベクトルおよび第4のNビットベクトルにおけるビットパターンに基づいて、A[N−1:0]とB[N−1:0]の差が、+3に等しいことを宣言することが、
A[N−1:0]の2つのLSBと、〜B[N−1:0]の対応する2つのLSBが、それぞれ、00および10、10および00、または01および01のいずれかであるかどうかを判定すること;
そうであれば、残りのビットにおけるLSBから開始して最上位ビット(MSB)へと第4のNビットベクトル内のビットをスキャニングすることによって、第4のNビットベクトルの残りのビット(ここでの残りのビットはN−1:2を指す)内に、0から1へのビット遷移が1回だけあるかどうかを判定すること;
そうであれば、次いで、第4のNビットベクトルの残りのビットにおいて0から1へのビット遷移が発生する、対応する位置におけるビットが、第3のNビットベクトル内で1に等しいかどうか、および残りのビットが0に等しいかどうかを判定すること;および
そうであれば、次いで、A[N−1:0]とB[N−1:0]の差が+3に等しいことを宣言することを含む、請求項3に記載の方法。
【請求項7】
A[N−1:0]の2つのLSBと、〜B[N−1:0]の2つのLSBにおける対応するビットが、両方とも11に等しいかどうかを判定すること;
そうであれば、第4のNビットベクトルにおける残りのビットが1に等しいかどうかを判定すること;および
そうであれば、A[N−1:0]とB[N−1:0]の差が+3に等しいと宣言することをさらに含む、請求項6に記載の方法。
【請求項8】
第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]に対する比較演算を実行するためのディジタイル論理回路であって、
第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]とを受け入れる第1の処理経路;
第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]とを受け入れる、前記第1の処理経路と並列の第2の処理経路であって、該第2の処理経路は、第2のNビットベクトルB[N−1:0]のビット単位反転を実行して〜B[N−1:0]を取得し、第1の処理経路は、A[N−1:0]と〜B[N−1:0]を用いてビット単位AND(A[N−1:0]&〜B[N−1:0])演算を実行して、第4のNビットベクトルを取得し、第2の処理毛色は、A[N−1:0]および〜B「N−1:0」を用いてビット単位XOR(A〜B)演算を実行して第4のNビットベクトルを取得する、前記第2の処理経路;および
第3のNビットベクトルおよび第4のNビットベクトルのビットパターンに基づいて、A[N−1:0]とB[N−1:0]の差が所与の数に等しいこと、またはm<nである2つの数、+mと+nの所与の範囲内にあることを宣言する、最終出力モジュールを含む、前記ディジタル論理回路。
【請求項9】
Nビットベクトルが、8ビットベクトル、16ビットベクトル、24ビットベクトル、32ビットベクトル、または64ビットベクトルである、請求項8に記載のディジタル論理回路。
【請求項10】
第2の処理経路は、第4のNビットベクトル内のビットを最下位ビット(LSB)から最上位ビット(MSB)までスキャンしたときに、第4のNビットベクトル内に0から1へのビット遷移が1回だけあるかどうかを判定し、
第2の処理経路は、第4のNビットベクトル内で0から1へのビット遷移が発生する対応する位置におけるビットが、第3のNビットベクトル内で1に等しいかどうか、および残りのビットが0に等しいかどうかを判定し、
最終出力モジュールは、第4のNビットベクトル内で0から1へのビット遷移が発生する対応する位置におけるビットが、第3のNビットベクトル内で1に等しく、残りのビットが0に等しい場合に、第1のNビットベクトルA[N−1:0]と第2のNビットベクトルB[N−1:0]の差が+1に等しいと宣言する、請求項9に記載のディジタル論理回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2010−522365(P2010−522365A)
【公表日】平成22年7月1日(2010.7.1)
【国際特許分類】
【出願番号】特願2009−540263(P2009−540263)
【出願日】平成19年12月5日(2007.12.5)
【国際出願番号】PCT/US2007/024852
【国際公開番号】WO2008/070085
【国際公開日】平成20年6月12日(2008.6.12)
【出願人】(501144003)アナログ・デバイシズ・インコーポレーテッド (51)