JP4147423B2 - 任意精度演算器、任意精度演算方法、および電子機器 - Google Patents

任意精度演算器、任意精度演算方法、および電子機器 Download PDF

Info

Publication number
JP4147423B2
JP4147423B2 JP2004328984A JP2004328984A JP4147423B2 JP 4147423 B2 JP4147423 B2 JP 4147423B2 JP 2004328984 A JP2004328984 A JP 2004328984A JP 2004328984 A JP2004328984 A JP 2004328984A JP 4147423 B2 JP4147423 B2 JP 4147423B2
Authority
JP
Japan
Prior art keywords
bit
input value
arbitrary precision
input
arithmetic unit
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
Application number
JP2004328984A
Other languages
English (en)
Other versions
JP2006139566A (ja
Inventor
信雄 唐木
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004328984A priority Critical patent/JP4147423B2/ja
Priority to US11/213,790 priority patent/US7844654B2/en
Priority to KR1020050088641A priority patent/KR20060051572A/ko
Priority to TW094134852A priority patent/TWI308717B/zh
Priority to CNB2005101202798A priority patent/CN100375011C/zh
Publication of JP2006139566A publication Critical patent/JP2006139566A/ja
Application granted granted Critical
Publication of JP4147423B2 publication Critical patent/JP4147423B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/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; CALCULATING OR 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/3812Devices capable of handling different types of numbers
    • G06F2207/3816Accepting numbers of variable word length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/386Special constructional features
    • G06F2207/3872Precharge of output to prevent leakage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/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/501Half or full adders, i.e. basic adder cells for one denomination
    • G06F7/5016Half or full adders, i.e. basic adder cells for one denomination forming at least one of the output signals directly from the minterms of the input signals, i.e. with a minimum number of gate levels

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)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Description

本発明は加減算を行う演算器に関し、特にコンパイラが取り扱える精度に制限されない任意精度の可変長データの演算に適した任意精度演算器に関する。
従来、プロセッサ内部で加減算を行う演算器は、固定長の整数を取り扱うことを前提としていた。例えば、8ビットCPU(中央演算装置)には、算術四則演算用に8ビット固定長の全加算器や、アドレス生成に併用できるような16ビット固定長の全加算器が用いられていた。
また、可変長データがソフトウェア記述により指定されている場合には、ソフトウェア言語のコンパイラが、固定長の全加算器に対する繰り返し演算で可変長データの演算を実現できるように命令セットを生成していた。
このようなコンパイラ処理によって、上記のようにハードウェアによって取り扱える語語長が規定された固定長の全加算器を用いていても、可変長データを取り扱う演算が実行できるように構成されていた。
しかしながら、プログラミング言語毎に、取り扱うことのできるデータの精度(語長)が定められているため、取り扱える精度を超える演算は困難であった。可変長データが取り扱えるといっても、極端に桁数の大きい演算を実施できるものではなかった。
例えば、10,000桁の数値同士の演算を実施したくても、従来のコンピュータ装置では、コンパイラが提供した計算アルゴリズムで演算できる精度を超えてしまい、対応できなかった。これに対応するには、数値の桁数に応じて、つまり取り扱う数値の精度に応じて、特別な数値の取り扱いを可能とするように計算アルゴリズムを変更する必要があったが、このような措置を取ろうとすれば、プログラミングが複雑化してしまっていた。
もちろん、演算器が一時に取り扱うことのできる固定長を多くすることで取り扱うことのできるデータの桁数も増える。しかし、これではハードウェアが大きく複雑になる。何よりも、ある桁数から計算アルゴリズムを変更せざるを得ない、という本質的な問題を解決してはいなかった。
そこで、本発明は、データの精度がどのようなものであっても同一の計算アルゴリズムを適用して演算できる任意精度演算器を比較的簡単な構成で実現することを課題とする。
上記の課題を解決するために、本発明の任意精度演算器は、任意精度の演算をするために、第1任意精度数値および第2任意精度数値のそれぞれを下位からN(Nは自然数)ビットずつに分割して、Nビット長の複数の第1入力値および複数の第2入力値として順に出力する親プロセス部と、前記Nビット長のうち第1ビットの第1入力値と、前記Nビット長のうち第1ビットの第2入力値と、および前記第1ビットの第1入力値と前記第1ビットの第2入力値とを繋ぐ第1ビットに対応するキャリーと、を入力し、第1演算を実施し、前記第1演算が完了すると、前記親プロセス部に前記Nビット長のうち第2ビットの第1入力値と前記Nビット長のうち第2ビットの第2入力値とを自律的に要求するとともに、前記第1演算で発生した、前記第2ビットに対応するキャリーを前記第1演算に続く第2演算に自律的に加えるNビット演算器と、前記Nビット演算器による演算により発生したキャリーを保持する保持回路と、前記第1入力値と前記第2入力値と前記キャリーの全てがNullであることを検出するNull検出回路と、を備え、前記Nビット演算器がハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されている。
例えば、親プロセス部では、ハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されている任意精度演算器の任意精度演算方法であって、第1任意精度数値および第2任意精度数値のそれぞれを下位からN(Nは自然数)ビットずつに分割するステップと、分割された分割された前記第1の任意精度数値をNビット長の第1入力値として、前記第2の任意精度数値をNビット長の第2入力値として順に出力するステップと、次のNビットの演算が自律的に要求される毎に、次のNビットの前記第1入力値および前記第2入力値の出力を許可するステップと、前記演算で発生したキャリーを次のNビットの演算に加えるステップと、前記第1入力値と前記第2入力値と前記キャリーのすべてがNullであった場合に演算を終了するステップと、を備える任意精度演算方法が実施される。
また例えば、Nビット演算器では、ハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されている任意精度演算器の任意精度演算方法であって、第1任意精度数値が下位からN(Nは自然数)ビットずつに分割されて供給されたNビット長の第1入力値と、第2任意精度数値が下位からNビットずつに分割されて供給されたNビット長の第2入力値との演算を実施するステップと、前記演算が完了する毎に次のNビットの演算を自律的に要求するステップと、前記演算で発生したキャリーを次のNビットの演算に加えるステップと、前記第1入力値と前記第2入力値と前記キャリーのすべてがNullであった場合に演算を終了するステップと、を備える任意精度演算方法が実施される。
上記構成やステップによれば、親プロセスにおいて、任意精度の、例えば非常に多い桁数の数値が、そのシステムに備えられているNビットの固定長のデータに下位側(LSB)から順に分割され、下位のNビットからNビット演算器に送られる。Nビット演算器では、供給されたNビットの数値の演算を実行し、キャリーが発生すれば、次に送られてくるNビットの数値に加えられるように保持する。またNビット演算が終了する度に親プロセスに次のNビット数値に供給を要求する。親プロセスでは、この要求を受けて次のNビットの出力を許可する。この構成により、順次下位からNビットずつ数値が供給され、固定長(Nビット)やコンパイラの取り扱う精度に影響されず、極めて精度の高い、すなわち桁数の多い数値の演算も取り扱えるようになる。ハードウェアは、Nビットの演算器のみで足りるため、ハードウェア構成も極めて簡単にしたまま高精度の演算が可能となる。
特に、本発明では、入出力情報の少なくとも1以上が2線エンコード方式により符号化されている点にも特徴がある。2線エンコード方式によれば、別途クロックを必要とせずデータの送受信が可能であり、回路構成を簡単にできる。
また本発明は、ハンドシェイク方式によって駆動される非同期式回路構成を備えることにも特徴がある。本発明の処理は同様の処理の要求と出力とが繰り返し実行されるものであり、ハンドシェイクにより実行される非同期式の処理において、最大限にパフォーマンスを引き上げることができる。このため任意精度数値の桁数が多くても、高速に処理が行われる。
また、本発明の任意精度演算器は、第1任意精度数値が下位からN(Nは自然数)ビットずつに分割されて供給されたNビット長の第1入力値と、第2任意精度数値が下位からNビットずつに分割されて供給されたNビット長の第2入力値とを自律的に入力し加算するNビット全加算器と、前記Nビット全加算器による加算により発生したキャリーを、次のNビットの演算における最下位ビットに出力し加算可能に保持する保持回路と、前記第1入力値と前記第2入力値と前記キャリーの全てがNullであることを検出するNull検出回路と、を備え、前記Nビット全加算器がハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されていることを特徴とする。
この構成は、Nビット演算器の構成に対応している。Nビット全加算器において加算され、発生したキャリーは、保持回路に保持される。保持回路に保持されたキャリーは、次のNビット数値の最下位ビットに加算される。これにより、Nビットずつに分割された数値同士をキャリーで繋ぎながら何段にも繰り返すことが可能となる。
本発明の任意精度演算器は、第2の入力値の論理否定を生成する論理否定回路と、加算か減算かを指示するオペレータが減算であることを示している場合に、論理否定された該第2の入力値を該Nビット全加算器に出力する選択回路とを備える。
この構成は、Nビット演算器の構成を示しており、減算をする場合に、第2の入力値の論理否定が選択回路により選択され、Nビット全加算器で第1の入力値と加算されるので、結果的に両入力値の減算が実施されるよう動作する。
ここで、保持回路は、オペレータが減算であることを示している場合に、演算開始後の最初のNビット演算時には値1をNビット全加算器に供給し、それ以降のNビット演算時には前回の加算で発生したキャリーをNビット全加算器に供給するように構成することは好ましい。第1の入力値から第2の入力値を減算する場合、正確には第2の入力値の2の補数を演算し、その2の補数と第1の入力値を加える。当該Nビット演算器のための構成によれば、オペレータが減算を示している場合に、最初に値1が加算器に加えられ、1の補数表現である第2の入力値の論理否定値と加えられるので、結局、第2の入力値の2の補数が第1の入力値と加えられることになる。このため、オペレータを保持回路に出力するだけで、正確な減算が可能となる。
また本発明は、第1の入力値と第2の入力値とを同一の入力線から入力して、それぞれラッチし、Nビット全加算器に供給するラッチ回路を備えていてもよい。この構成は、変形例に属し、ラッチ回路が同一の入力線から時間差で第1の入力値と第2の入力値を入力し、それぞれをラッチして出力するので、入力線数を制限しコンパクトな構成を実現可能である。
また、ラッチ回路は、オペレータをさらに入力し、該オペレータを選択回路に供給してから、第1の入力値と第2の入力値とをラッチするように構成してもよい。先にオペレータをラッチして加算減算の別を切り替えてから、入力値をそれぞれラッチする構成である。
また、本発明の任意精度演算器は、任意精度の演算をするために、第1任意精度数値および第2任意精度数値のそれぞれを下位からN(Nは自然数)ビットずつに分割する手段と、分割された前記第1任意精度数値をNビット長の第1入力値として、前記第2任意精度数値をNビット長の第2の入力値として順にNビット演算器へと出力する手段と、前記Nビット演算器による演算により発生したキャリーを保持する保持手段と、前記第1入力値と前記第2入力値と前記キャリーの全てがNullであることを検出する検出手段と、を備え、前記Nビット演算器がハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されていることを特徴とする。
この構成は、親プロセス部の構成を示している。双方の任意精度数値が下位からNビットずつに分割され、それぞれ分割された第1の入力値および第2の入力値が出力される。任意精度の数値が入力されたとしても、固定長(Nビット)の演算器においてそのまま演算できる形式に変形され出力されるので、任意精度の演算が可能となる。
ここで、Nビット演算器から次のNビットの演算が要求される毎に、次のNビットの該第1の入力値と該第2の入力値とを出力することは好ましい。この構成によれば、Nビット演算の完了を受けて次のNビットの数値が出力されるので、演算器の速度によって入力値の出力タイミングを変更しなくてもよいし、特に、要求の発生とともに出力をするハンドシェイク形式であるため、非同期式回路構成に適する。
また、Nビット演算器に加算させるか減算させるかを示すオペレータを出力可能に構成されており、最上位のNビットの演算が終了した場合に、該オペレータとして任意精度演算の終了を示す識別情報を出力するように構成することは好ましい。この構成によれば、Nビット演算器側においてオペレータを監視することにより、任意精度数値の演算完了を認識することが可能となる。
また本発明は、グローバルクロックによって駆動される同期式回路構成を備えていてもよい。同期式回路構成によっても、確実に実施される構成である。
また本発明は、本発明の任意精度演算器を備える電子機器でもある。本発明の任意精度演算器を備えることによって高精度の演算を簡単な回路で実現できるので、大凡このような演算を必要とする装置一般において、有用性が高い。
次の本発明の実施の形態を、図面を参照しながら説明する。
以下の実施の形態は、本発明の例示であり、その開示に限定されることなく本発明は種々に変形して適用することが可能である。
(実施形態1)
本発明の実施形態1は、Nビット(Nは1以上の整数)の固定長加算器を用いて任意精度演算器を構成する例に関する。
図1に本発明の任意精度演算器のシステム図を示す。図1に示すように、本任意精度演算器は、親プロセス部2とNビット演算器1とで構成されている。
親プロセス部2は、第1の任意精度数値Xおよび第2の任意精度数値Yのそれぞれを下位からNビットずつに分割して、Nビット長の第1の入力値(X1、X2、…、Xm)および第2の入力値(Y1、Y2、…、Ym)として順に出力するよう構成されている。Nビット演算器1は、供給された第1の入力値(X1、X2、…、Xm)と第2の入力値(Y1、Y2、…、Ym)との演算を実施する。そして、演算が完了するごとに親プロセス部2に次のNビットの演算を要求する信号PCを出力するとともに、該演算で発生したキャリーを次のNビットの演算に加えるものである。
なお、本明細書で、大文字で「X」というように表記する場合は元の任意精度数値であることを示し、「Xn」(1≦n≦m)というように記載するときは任意精度数値から分割された、Nビット長の各Nビットブロックを示す。また、小文字で「x(n)」(0≦n≦N−1)というように記載する場合はNビットブロック中のnビット目のビットデータ、「x_1」や「x_0」と記載する場合はビットデータが2線エンコード方式(Dual-rail Encoding)で符号化された、2線のそれぞれのデータを示す。
具体的には、親プロセス部2は、分割手段21と出力手段22とを備えている。分割手段21は、第1の任意精度数値Xおよび第2の任意精度数値Yのそれぞれを下位からNビットずつに分割し、Nの倍数で正規化するものである。第1の任意精度数値Xおよび第2の任意精度数値Yの双方は、Nビットごとに同一数m(mは1以上の整数)に分割される。例えば、図2に示すように、第1の任意精度数値XがPビット(N<P≦m*N)、第2の任意精度数値YがQビット(P<Q)であったとする。下位からNビットごとに分割していった場合、Yについてはm個目のNビットブロックにMSBが分配される。m個目のNビットのうち、MSB以上の桁数のビットは“0”とされる。ところが、第1の任意精度数値Xの方が、第2の任意精度数値Yよりビット数が少ないため、XのMSBは、途中(例えばm−2番目)のNビットブロックに配置される。Yと同様に、任意精度数値Xのm−2番目のMSB以上は“0”とされる。さらに残りのm−1番目およびm番目のNビットブロックも総て“0”とされる。
出力手段22は、分割された第1の任意精度数値XをNビット長の第1の入力値(X1、X2、…、Xm)として、第2の任意精度数値YをNビット長の第2の入力値(Y1、Y2、…、Ym)として順にNビット演算器1へと出力する。ここで、出力手段22は、Nビット演算器1から次のNビットの演算が要求される毎に、次のNビットの第1の入力値と第2の入力値とを出力する。すなわち、出力手段22は、Nビット演算器1からの要求信号であるプリチャージ信号PC(Pre Charge)が送信されるたびに、次のNビットブロックを出力するようになっている。
また、親プロセス部2では、Nビット演算器1に加算させるか減算させるかを示すオペレータOperatorを出力可能に構成されている。このオペレータOperatorは、最上位のNビットの演算が終了した場合に、オペレータOperatorとして任意精度演算の終了を示す識別情報Nullを出力するように構成されている。
上記した親プロセス部2の構成によれば、Nビット演算の完了を受けて次のNビットの数値が出力されるので、Nビット演算器1の処理速度によって出力手段22による出力タイミングを変更しなくてもよい。特に、要求の発生とともに出力をするハンドシェイク形式であるため、非同期式回路構成に適する。この構成の詳細は後述する。
また親プロセスで無ければm個のNビットブロックの演算が終了したことを知り得ないが、この親プロセス部2の構成によれば、Nビット演算器1においてオペレータOperatorを監視することにより、任意精度数値の演算完了を認識することが可能となる。
図2にNビット演算器1の構成図を示す。このNビット演算器1は同期式回路構成によっても非同期式回路構成によっても構成することができる。
図2に示すNビット演算器1は、Nビット全加算器10、選択回路11、論理否定回路12、および保持回路13を備えている。Nビット全加算器10は、第1の任意精度数値Xが下位からNビットずつに分割されて供給されたNビット長の第1の入力値(X1、X2、…、Xm)と、第2の任意精度数値が下位からNビットずつに分割されて供給されたNビット長の第2の入力値(Y1、Y2、…、Ym)とを加算するものである。当該加算器は固定長(Nビット)の加算器である。論理否定回路12は、第2の入力値(Y1、Y2、…、Ym)の論理否定を生成するものである。すなわち第2の入力値の1の補数を演算する。選択回路11は、加算か減算かを指示するオペレータOperatorが減算であることを示している場合に、第2の入力値に代えて論理否定回路12から供給された、論理否定演算された第2の入力値をNビット全加算器10に入力するものである。オペレータOperatorは、計算開始と演算方法を指定するものである。例えば、“0”である場合に「加算」を示し、“1”である場合に「減算」を示す。選択回路11はいわゆるマルチプレクサであり、オペレータOperatorが“0”である場合には論理否定演算されていない、親プロセス部2から供給された第2の入力値をそのまま出力するが、オペレータOperatorが“1”である場合には論理否定演算された第2の入力値を出力するようになっている。この構成により、Nビット全加算器10側では加算演算を実施するだけで、加算と減算とが実現される。保持回路13は、Nビット全加算器10による加算により発生したキャリーCarryを、次のNビットの演算における最下位ビットに加算可能に保持するラッチ回路として機能する。オペレータOperatorにおいて“1”を減算と定義した場合、最初のNビット演算時にオペレータの値“0”をキャリー入力Cinとして加えることは好ましい。減算は、減数の2の補数を被減数と加算することで実施される。論理否定回路12では、1の補数が生成されるため、これにオペレータOperatorの“1”を加えれば、2の補数が生成でき、正確な減算が実施できるからである。
なお、図2の回路では、オペレータOperatorは直接、選択回路11に供給されていたが、一旦、オペレータOperatorを保持回路13に入力し、保持回路13経由で、または、別個のラッチ回路経由で、選択回路11に供給されるように構成してもよい。例えば、後述する2線エンコード方式により符号化されたオペレータOperatorを供給するようにした場合、オペレータは2ビット構成となり4つの値を取り得る(表1参照)。そのうち例えば無効符号語である“Null”を非演算時の識別子、有効符号語である“0”/“1”を演算内容が加算か減算かを指示する識別子としてとして規定しておく。そしてオペレータが“Null”以外の有効符号語になった時に、その有効符号語をラッチし、その有効符号語が示す演算内容で演算を開始させる。この有効符号語は、次にオペレータに無効符号語“Null"が出力されるまで保持される。このように構成することで、オペレータOperatorの制御により、演算開始と演算内容を同時に指示できるのである。オペレータOperatorを保持する回路と、キャリーCarryを保持する保持回路13とは同一の回路にしても別の回路にしてもよい。
上記したNビット演算器1の構成によれば、論理否定回路12を備え、選択回路11でオペレータOperatorの値により、第2の入力値をそのまま出力するか、論理否定して出力するかを選択するようにしたので、オペレータOperatorの値により加算か減算かを指定することが可能である。
また上記したNビット演算器1の構成によれば、保持回路13は、前回の加算で発生したキャリーCarryをNビット全加算器10に供給するように構成されているので、Nビットずつに分割された入力値同士をキャリーで繋ぎながら、何段にも繰り返すことが可能となる。このため、桁数に無関係に、任意精度の数値の加減算が自在に行える。
図3に、非同期式回路構成でNビット演算器を構成した実施例を示す。
図3に示すように、実施例のNビット演算器1は、Nビット全加算器10として、N個の非同期1ビット全加算器10(0)〜10(N−1)が連結されて構成されている。選択回路11はパラレルにNビット長の第2の入力値y(0)〜y(N−1)を出力する。論理否定回路12(0)〜12(N−1)は、ビットごとに設けられている。
非同期1ビット全加算器10(n)、選択回路11、論理否定回路12(n)、保持回路13の総ての回路構成は、非同期式回路構成を備えている。各回路の各ビット入出力が2線エンコード方式により符号化されており、非同期に動作する。非同期1ビット全加算器10(n)や論理否定回路12(n)が各々2線エンコード方式で符号化された1ビットデータを扱う他は、基本的な動作は図2のものと同様である。本実施例1では、各データ線を通常の同期型回路構成で構成する場合のように1本の信号線で構成してあるように示してあるが、2線エンコード方式により符号化してもよい。2線エンコード方式による符号化を利用する場合には、各信号線は二本が束ねられている。すなわち、図中で、例えばX(n)と表記されるデータ線は、符号化されたXn_1およびXn_0の2線より構成されている。
表1に2線エンコード方式でビットbを符号化した場合の真理値表を示す。
Figure 0004147423
表1に示すように、ビットデータbは2線式エンコードにより{b_1,b_0}に変換される。ビットデータbは有効符号語としての"0"又は"1"と、無効符号語としての"Null"の値をとる。有効符号語としての"0"は{0,1}に、"1"は{1,0}にそれぞれ変換され、無効符号語としての"Null"は{0,0}に変換される。データの入出力は有効符号語を用いて行われるが、無効符号語“Null"は、非演算時を示す他、データ間の区別のために利用される。すなわち、同一の有効符号語が連続して非同期1ビット全加算器10に入力されると、受信回路ではデータの到着を認識できないため、有効符号語と無効符号語を交互に伝送することで、有効符号語を識別できるようにしている。
例えば、4ビットのデータ “1”、“1”、“0”、“1”は、2線エンコードにより各々[1,0]、[1,0]、[0,1]、[1,0]と符号化されて入力される。このエンコード方式は例示に過ぎず、符号化方法を限定するものではないが、少なくとも有効符号語“1”と“0”、および無効符号語“Null”を符号化できる方式であることが望まれる。
なお、{1,1}は通常あってはならない状態であり、仮にこのような値が入力された場合には回路側で排除することが考えられる。検出時点で動作を停止して異常発生警報を出力することは、誤動作の報知と誤ったデータの伝播を防止する上で好ましい。
このような2線エンコード方式による符号化を非同期式回路構成と併せて用いれば、ビット間のデータ到来に時間差が生じても、それを許容する回路を構成できる。すなわち、ビットデータごとの信号線における素子遅延および配線遅延に由来してデータが異なる時間に到着したとしても、非同期式回路においては総ての入力が揃って出力されるため、本質的に最後に届くデータの到着を待って動作するよう構成されているからである。
図3に示される各ビットデータは、表1のようなスキームに基づき符号化される。すなわち、第1の入力値Xのビットデータ入力値x(n)は、2線エンコードにより{x_1,x_0}に変換される。同様に、第2の入力値Yのビットデータ、キャリー入力Cin(n)、加算出力z(n)、キャリー出力Cout(n)についても、それぞれ同様に、2線エンコードにより{y_1,y_0},{Cin_1,Cin_0},{z_1,z_0},{Cout_1,Cout_0}に変換される。
表2に各々の非同期1ビット全加算器10(n)の真理値表を示す。
Figure 0004147423
非同期1ビット全加算器10(n)では、2線エンコード方式により符号化された第1の入力値Xのビットデータ入力値x(n)と第2の入力値Yのビットデータy(n)を入力し、1段下位の非同期1ビット全加算器10(n―1)から入力されたキャリーCout(n―1)をキャリー入力Cin(n)として加算するようになっている。最下段の非同期1ビット全加算器10(0)のキャリー入力Cin(0)としては、保持回路13で保持されていた、直前のNビットブロックの加算による最終的なキャリー出力、すなわち最上段の非同期1ビット全加算器10(N−1)からのキャリー出力Cout(N−1)が加算されるようになっている。キャリーCarryは、発生したキャリーが“1”の場合には{1,0}、“0”の場合には[0,1]と符号化される。入力値x(n)、y(n)、Cin(n)のうちいずれか一つでも“Null”(=[0,0])であれば、出力z(n)、Cout(n)の値も“Null" (=[0,0])となる。総ての入力に有効符号語である“0”か“1”かが入力された場合に、非同期1ビット全加算器10(n)は、一定の遅延時間経過後に、表2の真理値表に基づいて、出力z(n)およびCout(n)に“0”か“1”を出力する。
第1の入力値x(n)、第2の入力値y(n)、およびキャリー入力Cin(n)を入力値とし、和出力z(n)、およびキャリー出力Cout(n)を出力値とすると、1ビット全加算においては、(1)式、および(2)式が成立する。
z(n)=x(n)(+)y(n)(+)Cin(n)…(1)
Cout(n)=X(n)・Y(n)+Y(n)・Cin(n)+Cin(n)・X(n)…(2)
ここで、(+)は排他的論理和を示すものとする。表2は(1)式、および(2)式の真理値表であり、入出力間の全ての組み合わせを示している。
図4に非同期1ビット全加算器10(n)のブロック図、図5にNull検出回路の回路図、図6〜図9にZ_1、Z_0、Cout_1、Cout_0の各々の出力回路の回路図を示す。これらの回路は例示に過ぎず、種々変更して構成可能である。
図4に示すように、非同期1ビット全加算器10(n)は、例えば、Null検出回路170、Z_1出力回路100、Z_0出力回路120、Cout_1出力回路140、Cout_0出力回路160を備えて構成されている。各回路は非同期式回路構成を備えている。
図5に示すNull検出回路170は、総ての入力値x(n)、y(n)、Cin(n)が“Null"となった場合に、プリチャージ信号PC(Pre-Charge)に“L”レベルを出力し、それ以外の場合に“H”レベルを出力するようになっている。総ての入力値が“Null”になるのは、非演算時およびデータ間の区切り区間においてである。図6〜図9の回路図から判るように、各出力回路ではこのプリチャージ状態において出力が“L"レベルとなり、従って総ての出力z(n)およびCout(n)に“Null"が出力されることになる。
図6に示すZ_1出力回路100ではトランジスタ101〜113が、図7に示すZ_0出力回路120ではトランジスタ121〜133が、図8に示すCout_1出力回路140ではトランジスタ141〜153が、図9に示すCout_0出力回路160ではトランジスタ161〜173がそれぞれ図示されたように接続されている。インバータ114、134、154、174はそれぞれが論理を反転するインバータ回路となっている。
プリチャージ信号PCが入力されているトランジスタ101、121、141、161がPチャネルMOSFETで構成されており、プリチャージ信号PCが入力される状態(入力値が総て“Null”の場合には出力が“L”レベルに、それ以外の場合には、各入力値の示す有効符号語(“0”か“1”か)に応じて出力が定まることになる。それ以外のトランジスタは、NチャネルMOSFETで構成されおり、入力値が“H”レベルの場合に導通し、“L”レベルの場合に遮断状態となる。そのためカスケード接続されているトランジスタ、例えば図6のZ_1出力回路100におけるトランジスタ102〜104は、入力値X_1、y_0、Cin_0の総てが“H”レベルとなった場合、すなわちX_1、y_0、Cin_0が{1、1、1}になった場合に低電位電源が印加され、Z_1が{1}となる。このような構成により、表2の真理値表に従って出力が規定される。
なお、PチャネルMOSFETがオンからオフになるタイミングとしては、少なくとも何れかのNチャネルMOSFETがオフからオンになるタイミングよりも遅くならないように配慮し、高電位電源Vddから接地電位Vssへ向けて貫通電流が流れないようにするのが望ましい。また、必要に応じてNチャネルMOSFETの接続関係を最適化し、トランジスタ数を削減してもよい。例えば、トランジスタ104と107とは単一のトランジスタに代替できる。また、(2)式から明らかなように入力値x(n)、y(n)が"1"のときはキャリー入力Cinの値に関係なく、キャリー出力Coutは必ず"1"になるため、x_1とy_1がそれぞれ"1"のときには、Cin_1が"1"であるか "0"であるかを問わずに、Cout_1が"1"になるように組み合わせ回路を構成してもよい。また、出力回路として、NチャネルMOSFETの回路網に替えて複数のPチャネルMOSFETで構成された回路網を採用してもよい。
表3に論理否定回路12(n)の真理値表を示す。
Figure 0004147423
表3に示すように、入力値Inが無効符号語の“Null”である場合には同じく“Null"を出力値Outとするが、有効符号語の“0”または“1”である場合にはその論理を反転して、“1”および“0”を出力するようになっている。
親プロセス部2から供給されるオペレータOperatorも2線エンコード方式により符号化されており、加算の場合には“0”、減算の場合には“1”に、一つの任意精度数値XおよびYの演算が総て終了した非演算期間(演算終了時)には“Null”が出力されるようになっている。選択回路11は、オペレータOperatorが有効符号語である“0”の場合には加算をするため、論理否定回路12(n)を経ていない第2の入力値y(n)を選択する。オペレータOperatorが有効符号語である“1”の場合には減算をするため、論理否定回路12(n)を経て、表3の真理値表に従い論理反転された第2の入力値y(n)を選択する。また選択回路11は、オペレータOperatorが“Null”である場合、総ての出力を“Null”とする。
図10に、本発明のNビット演算器においてN=1として構成した1ビット演算器の実施例を示す。
図10に示すように、この1ビット演算器1bでは1ビットデータのみを扱うため、2線エンコード方式により符号化された第1の入力値、x_1、x_0、第2の入力値y_1、y_0、およびオペレータOperator、Operator_1、Operator_0のみが入力データになっている。このため、1ビット演算器1bには、実施例1で説明した非同期1ビット全加算器10bが一つのみ設けられている。非同期1ビット全加算器10bの構成は、実施例1で示したものと同様であり(図4〜9参照)、特に変更はない。すなわち、表2の真理値表に基づいて動作するようになっている。
論理否定回路12も1ビットデータに対応するよう一つのみ設けられている。選択回路11は、1ビットデータのみを取り扱う点を除き実施例1と同様である。すなわち、選択回路はオペレータ{Operator_1,Operator_0}によって制御される。オペレータOperatorが{0,1}の場合には第2の入力値yが反転せずに出力され、[1,0]の場合には論理否定回路12で論理反転された入力値が出力される。{0,0}の場合、つまり“Null"入力の場合には”Null"を出力する。
保持回路13は、オペレータOperatorとして無効符号語である“Null"が入力されている場合には“0”を出力し、“Null"から最初に入力された有効符号語として “0”が入力されている場合には “0”を出力し、“1”が入力されている場合には“1”を出力するようになっている。この値“1”と入力値yの論理反転とを合算することにより、減算が正確に演算できる。すなわち、減算は、厳密には2の補数表現された値を加えることによって実施される。オペレータOperatorが“Null"から有効符号語に変化すると、演算が開始される。演算開始直後に入力されたオペレータの値は、キャリーCinの代わりに非同期1ビット全加算器1bに加えられる。オペレータが加算を示す“0”である場合には“0”がキャリー入力Cinされるが、“0”入力なので加算値に変更を加えない。ところが、オペレータが減算を示す“1“である場合、“1”がキャリー入力Cinされる。このキャリー入力Cinは、論理否定回路12で生成された第2の入力値yの1の補数表現に同時に加算されることになる。このため、結局、非同期1ビット全加算器10bには2の補数表現された第2の入力値yが加えられたことと同等になる。これによって第1の入力値xから第2の入力値yを減算することに等しい演算が実施される。
保持回路13には、別途、非同期1ビット全加算器10bのキャリー出力Cout_1およびCout_0がそのまま入力されている。演算開始後、オペレータOperatorをキャリー入力Cinに加える最初の1ビット演算がされ、その結果としてのキャリー出力Coutが入力されると、保持回路13はこれをラッチする。そして次のビットの演算のために一旦キャリー出力Coutが“Null”になると、その後は保持回路13に保持された前回の演算のキャリー出力Coutがキャリー入力Cinに加算されるようになる。
なお、この保持回路によるオペレータOperatorのラッチは必須ではない。誤差として値1を許容する場合には、オペレータOperatorの値のラッチをせず、したがって、演算開始後、最初の演算に、キャリー入力Cinが常に“0”であるように構成してもよい。
親プロセス部2においても、この1ビット演算器1bに対応して、1ビットデータを順次出力するように構成されている。すなわち図1の親プロセス部2において、N=1とし、分割手段21が任意精度数値XおよびYを1ビットずつに分割し、出力手段22が1ビットずつ下位から任意精度数値XおよびYを読み出し、プリチャージ信号PCに対応させて出力する。
図11に、本実施例の1ビット演算器1bを用いて4ビット精度の加減算を行った場合のタイミングチャートを示す。
図11に示すように、このタイミングチャートでは、4相ハンドシェイキングのスキームが適用されている。すなわち、演算開始前、親プロセス部2は全入力に“Null”を出力している。演算開始後は、以下のI〜IVの手順が1ビット演算毎に、計4回繰り返される。
(I)入力値xおよびyに該当ビットデータが出力される;
(II)所定時間経過後、加算器より出力値zおよびキャリー出力Coutが出力される;
(III)出力値zが外部で取り込まれ、キャリー出力Coutが保持回路13に取り込まれた後、入力値xおよびyに“Null"が出力される;
(IV)所定時間経過後、加算器の出力値zおよびキャリー出力Coutに“Null”が出力される。
図11では、第1の入力値x、第2の入力値y、およびオペレータOperatorとして、以下のものを例示してある。
入力値x:“1101”=({1,0},{1,0},{0,1},{1,0});
入力値y:“1000”=({1,0},{0,1},{0,1},{0,1});および
オペレータOperator:“0”={0,1}(加算)。
図11のタイミングチャートから判るように、本実施例では、親プロセス部2は、1ビット演算毎に、オペレータOperatorに“Null”を出力することを禁止している。このように親プロセスの処理を構成することによって、保持回路13はオペレータOperatorが無効符号語である“Null”状態から有効符号語に変わった際に一度だけ、その有効符号語(当該タイミングチャートでは“0”)をラッチして、次にオペレータに“Null”が出力されるまで、その状態を保持する。この構成によれば、最初にオペレータに加算か減算かを指定する“0”または“1”を出力すればビット演算が完了するまで同じ演算内容を持続することができる。また、オペレータOperatorに“Null"を出力することでビット演算終了を1ビット演算器1bに通知することができる。
以上、当該実施形態1によれば、Nビットの繰り返し演算、極端には実施例記載のように、1ビット単位の繰り返し演算によっても任意精度数値の加減算が可能となる。
本実施形態1によれば、オペレータOperatorの“Null"出力を任意精度演算の終了を示す識別情報として利用するので、Nビット演算器側においてオペレータを監視することにより、任意精度数値の演算完了を認識することが可能となる。
本実施形態1によれば、保持回路13が、オペレータOperatorが減算を示していたときに、“1”をNビット全加算器に出力し、一方の入力値の論理反転と加算されるようになっているので、オペレータOperatorを減算の指示の他に減算時に加える数値情報も含めることができる。このため、正確な減算を簡単な回路で実現可能である。
本実施形態1によれば、同期式回路で構成することも、非同期式回路で構成することも可能である。特に非同期式回路構成を備えている場合、グローバルクロックで動作する同期式回路で生じ易いクロック遅延、クロックスキュー、クロックジッター等の問題が無い。
非同期式回路においては、最小機能回路はイベント駆動によって制御され、自律的に動作する必要があると判断した場合と、他律的に動作する必要があると判断した場合にのみ動作する。つまり、各々の最小機能回路は他の最小機能回路とは独立して並列動作が可能であり、他の最小機能回路の処理が完了するまでウェイティングする必要がない。最小機能回路は所望の処理を実行する準備が完了した段階で処理を進めることができる。このため、単純な加減算を繰り返し行うことにより任意精度演算を可能とする本発明のような回路に非同期式回路構成は適する。このため任意精度数値の桁数が多くても、高速に処理が行われる。
(実施形態2)
本発明の実施形態2は、Nビット演算器における入力線数を削減した構成に関する。
図12に実施形態2のNビット演算器1cの構成図を示す。
図12に示すように、本実施形態2のNビット演算器1cは、図2で説明した実施形態1のNビット演算器1の構成に、さらにラッチ回路14を加えた構成を備えている。ラッチ回路14は、第1の入力値Xと第2の入力値Yとを同一の入力線Dから入力して、それぞれラッチし、Nビット全加算器10に供給するものである。また、ラッチ回路14は、オペレータOperatorをさらに入力し、該オペレータを選択回路11に供給してから、第1の入力値Xと第2の入力値Yとをラッチするように構成されている。オペレータOperatorは、入力線D経由で送られてくるものでよい。その他の構成は実施形態1と同様の構成を備えている。
すなわち、ラッチ回路14は、同一の入力線Dから時間差を持って送られてくるオペレータOperator、第1の入力値X、第2の入力値Yをそれぞれラッチし、対応する回路に出力するように構成されている。
親プロセス部2では、当該Nビット演算器1cに対応させて、オペレータOperator、第1の入力値X、第2の入力値Yを順次送り出すよう構成されている。各々のデータの間では“Null”を出力することで、第1の入力値、第2の入力値のそれぞれを区別させる。データ送出の順番を予め定めておくことで、各々のデータが正しく反映させる。例えば、第1の入力値X、第2の入力値Yの順で値が送られてくるものとすれば、親プロセスでは、オペレータOperatorを“Null”から加算か減算かに応じて“0”や“1”を送出し、選択回路11を切り替えさせる。次いで“Null”を送出してから第1の入力値Xを出力する。ラッチ回路14からはNビット全加算器10に第1の入力値Xが出力される。次いで“Null”を出力してからし、次に“Null”を送出してから第2の入力値Yを出力する。オペレータOperatorにより加算が示されているなら、選択回路11は論理否定されていない第2の入力値Yを選択し、Nビット全加算器10には正論理のYが供給される。減算が示されているなら、選択回路11は論理否定された第2の入力値Yを選択肢、Nビット全加算器10には負論理のYが供給される。
なお、オペレータを入力線Dに含めて出力するように構成してもよい。この場合、オペレータOperator、第1の入力値X、第2の入力値Yがそれぞれ時間差でラッチ回路14に供給される。
本実施形態2の構成によれば、上記実施形態1と同様の効果を奏する他、ラッチ回路が同一の入力線から時間差で第1の入力値と第2の入力値を入力し、それぞれをラッチして出力するので、入力線数を制限しコンパクトな構成を実現可能である。
(実施形態3)
本発明の任意精度演算器は、任意のコンピュータ装置に適用可能であり、そのようなコンピュータ装置を組み込んだ任意の電子機器に適用可能である。
図13にこのような電子機器の一例であるノート型パーソナルコンピュータ装置の概観図を示す。このパーソナルコンピュータ装置1000は、液晶ディスプレイ1001、キーボード1002を備え、内部にマイクロプロセッサ回路1004を備えている。本発明の任意精度演算器は、このようなマイクロプロセッサ回路1004の演算器として適用可能である。
その他、本発明の任意精度演算器は大凡演算を必要とする機器一般に適用可能であり、ノート型コンピュータ装置等のコンピュータの他、例えば、電卓、電子手帳、携帯型情報端末(PAD)、携帯電話、ICカード、スマート・カード等に適用可能である。本発明の任意精度演算器を備えることによって高精度の演算を簡単な回路で実現できるので、大凡このような演算を必要とする装置一般において、有用性が高い。
本発明の任意精度演算器のシステム図 実施形態1のNビット演算器のブロック図 実施例1のNビット演算器のブロック図 実施例1の非同期1ビット全加算器のブロック図 Null検出回路の回路図 z_1出力回路の構成図 z_0出力回路の構成図 Cout_1出力回路の構成図 Cout_0出力回路の構成図 実施例2の1ビット演算器のブロック図 実施例2の1ビット演算器のタイミングチャート 実施形態2のNビット演算器のブロック図 実施形態3の電子機器の例
符号の説明
1、1b、1c…ビット演算器、2…親プロセス部、10…Nビット全加算器、10(0)、10(1)、10(N−1)、10(n)、10b…非同期1ビット全加算器、11…選択回路、12…論理否定回路、13…保持回路、14…ラッチ回路、21…分割手段、21…分割手段、22…出力手段、100、120、140、160…出力回路、101〜113、121〜133、141〜153、161〜173…トランジスタ、114、134、154、174…インバータ、180…検出回路、1000…パーソナルコンピュータ装置、1001…液晶ディスプレイ、1002…キーボード、1004…マイクロプロセッサ回路、Carry…キャリー、Cin…キャリー入力、Cout…キャリー出力、D…入力線、In…入力値、Operator…オペレータ、Out…出力値、PC…プリチャージ信号、Vdd…高電位電源、Vss…接地電位、x、x(0)、x(1)、x(N−1)、X1、X2、Xm…第1の入力値、X…第1の任意精度数値、y、y(0)、y(1)、y(N−1)、Y1、Y2、Ym…第2の入力値、Y…第2の任意精度数値、z、z(0)、z(1)、z(N−1)、Z…出力値

Claims (12)

  1. 任意精度の演算をするために、第1任意精度数値および第2任意精度数値のそれぞれを下位からN(Nは自然数)ビットずつに分割して、Nビット長の複数の第1入力値および複数の第2入力値として順に出力する親プロセス部と、
    前記Nビット長のうち第1ビットの第1入力値と、前記Nビット長のうち第1ビットの第2入力値と、および前記第1ビットの第1入力値と前記第1ビットの第2入力値とを繋ぐ第1ビットに対応するキャリーと、を入力し、第1演算を実施し、前記第1演算が完了すると、前記親プロセス部に前記Nビット長のうち第2ビットの第1入力値と前記Nビット長のうち第2ビットの第2入力値とを自律的に要求するとともに、前記第1演算で発生した、前記第2ビットに対応するキャリーを前記第1演算に続く第2演算に自律的に加えるNビット演算器と、
    前記Nビット演算器による演算により発生したキャリーを保持する保持回路と、
    前記第1入力値と前記第2入力値と前記キャリーの全てがNullであることを検出するNull検出回路と、を備え、
    前記Nビット演算器がハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されている、
    ことを特徴とする任意精度演算器。
  2. 第1任意精度数値が下位からN(Nは自然数)ビットずつに分割されて供給されたNビット長の第1入力値と、第2任意精度数値が下位からNビットずつに分割されて供給されたNビット長の第2入力値とを自律的に入力し加算するNビット全加算器と、
    前記Nビット全加算器による加算により発生したキャリーを、次のNビットの演算における最下位ビットに出力し加算可能に保持する保持回路と、
    前記第1入力値と前記第2入力値と前記キャリーの全てがNullであることを検出するNull検出回路と、を備え、
    前記Nビット全加算器がハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されている、
    ことを特徴とする任意精度演算器。
  3. 請求項1又は2に記載の任意精度演算器において、
    前記第2入力値の論理否定を生成する論理否定回路と、
    加算か減算かを指示するオペレータが減算であることを示している場合に、論理否定された前記第2の入力値を該Nビット全加算器に出力する選択回路とを備える、
    ことを特徴とする任意精度演算器。
  4. 請求項3に記載の任意精度演算器において、
    前記保持回路は、前記オペレータが減算であることを示している場合に、演算開始後の最初のNビット演算時には値1を前記Nビット全加算器に供給し、それ以降のNビット演算時には前回の加算で発生したキャリーを前記Nビット全加算器に供給する、
    ことを特徴とする任意精度演算器。
  5. 請求項4に記載の任意精度演算器において、
    前記第1の入力値と前記第2の入力値とを同一の入力線から入力して、それぞれラッチし、前記Nビット全加算器に供給するラッチ回路を備える、
    ことを特徴とする任意精度演算器。
  6. 請求項5に記載の任意精度演算器において、
    前記ラッチ回路は、前記オペレータをさらに入力し、前記オペレータを前記選択回路に供給してから、前記第1の入力値と前記第2の入力値とをラッチする、
    ことを特徴とする任意精度演算器。
  7. 任意精度の演算をするために、第1任意精度数値および第2任意精度数値のそれぞれを下位からN(Nは自然数)ビットずつに分割する手段と、
    分割された前記第1任意精度数値をNビット長の第1入力値として、前記第2任意精度数値をNビット長の第2の入力値として順にNビット演算器へと出力する手段と、
    前記Nビット演算器による演算により発生したキャリーを保持する保持手段と、
    前記第1入力値と前記第2入力値と前記キャリーの全てがNullであることを検出する検出手段と、を備え、
    前記Nビット演算器がハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されている、
    ことを特徴とする任意精度演算器。
  8. 請求項1に記載の任意精度演算器において、
    前記Nビット演算器から次のNビットの演算が要求される毎に、次のNビットの前記第1入力値と前記第2入力値とを出力する、
    ことを特徴とする任意精度演算器。
  9. 請求項8に記載の任意精度演算器において、
    前記Nビット演算器に加算させるか減算させるかを示すオペレータを出力可能に構成されており、最上位のNビットの演算が終了した場合に、前記オペレータとして任意精度演算の終了を示す識別情報を出力する、
    ことを特徴とする任意精度演算器。
  10. 請求項1乃至9のいずれか一項に記載の任意精度演算器を備えることを特徴とする電子機器。
  11. ハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されている任意精度演算器の任意精度演算方法であって、
    第1任意精度数値および第2任意精度数値のそれぞれを下位からN(Nは自然数)ビットずつに分割するステップと、
    分割された分割された前記第1の任意精度数値をNビット長の第1入力値として、前記第2の任意精度数値をNビット長の第2入力値として順に出力するステップと、
    次のNビットの演算が自律的に要求される毎に、次のNビットの前記第1入力値および前記第2入力値の出力を許可するステップと、
    前記演算で発生したキャリーを次のNビットの演算に加えるステップと、
    前記第1入力値と前記第2入力値と前記キャリーのすべてがNullであった場合に演算を終了するステップと、
    を備えることを特徴とする任意精度演算方法。
  12. ハンドシェイク方式によって駆動される非同期式回路構成を備え、入出力情報の少なくとも1以上が2線エンコード方式により符号化されている任意精度演算器の任意精度演算方法であって、
    第1任意精度数値が下位からN(Nは自然数)ビットずつに分割されて供給されたNビット長の第1入力値と、第2任意精度数値が下位からNビットずつに分割されて供給されたNビット長の第2入力値との演算を実施するステップと、
    前記演算が完了する毎に次のNビットの演算を自律的に要求するステップと、
    前記演算で発生したキャリーを次のNビットの演算に加えるステップと、
    前記第1入力値と前記第2入力値と前記キャリーのすべてがNullであった場合に演算を終了するステップと、
    を備えることを特徴とする任意精度演算方法。
JP2004328984A 2004-11-12 2004-11-12 任意精度演算器、任意精度演算方法、および電子機器 Expired - Fee Related JP4147423B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2004328984A JP4147423B2 (ja) 2004-11-12 2004-11-12 任意精度演算器、任意精度演算方法、および電子機器
US11/213,790 US7844654B2 (en) 2004-11-12 2005-08-30 Arithmetic unit of arbitrary precision, operation method for processing data of arbitrary precision and electronic equipment
KR1020050088641A KR20060051572A (ko) 2004-11-12 2005-09-23 임의 정밀도 연산기, 임의 정밀도 연산 방법, 및 전자 기기
TW094134852A TWI308717B (en) 2004-11-12 2005-10-05 Electronic equipment
CNB2005101202798A CN100375011C (zh) 2004-11-12 2005-11-09 任意精度运算器、任意精度运算方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004328984A JP4147423B2 (ja) 2004-11-12 2004-11-12 任意精度演算器、任意精度演算方法、および電子機器

Publications (2)

Publication Number Publication Date
JP2006139566A JP2006139566A (ja) 2006-06-01
JP4147423B2 true JP4147423B2 (ja) 2008-09-10

Family

ID=36387728

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004328984A Expired - Fee Related JP4147423B2 (ja) 2004-11-12 2004-11-12 任意精度演算器、任意精度演算方法、および電子機器

Country Status (5)

Country Link
US (1) US7844654B2 (ja)
JP (1) JP4147423B2 (ja)
KR (1) KR20060051572A (ja)
CN (1) CN100375011C (ja)
TW (1) TWI308717B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4525801B2 (ja) * 2008-06-20 2010-08-18 横浜ゴム株式会社 タイヤ騒音低減装置
JP2010057019A (ja) * 2008-08-29 2010-03-11 Sony Corp 撮像素子及び撮像装置
US20100115232A1 (en) * 2008-10-31 2010-05-06 Johnson Timothy J Large integer support in vector operations
US8095767B2 (en) * 2008-12-30 2012-01-10 Microsoft Corporation Arbitrary precision floating number processing
US9348558B2 (en) * 2013-08-23 2016-05-24 Texas Instruments Deutschland Gmbh Processor with efficient arithmetic units
CN108256645B (zh) * 2018-01-19 2021-02-26 上海兆芯集成电路有限公司 数据位宽可调适的处理器
US11455143B2 (en) * 2020-05-07 2022-09-27 Meta Platforms, Inc. Using a low-bit-width dot product engine to sum high-bit-width numbers
US11275559B2 (en) * 2020-07-02 2022-03-15 Qualcomm Incorproated Circular accumulator for floating point addition

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3290511A (en) * 1960-08-19 1966-12-06 Sperry Rand Corp High speed asynchronous computer
US3751650A (en) * 1971-06-28 1973-08-07 Burroughs Corp Variable length arithmetic unit
US4219874A (en) * 1978-03-17 1980-08-26 Gusev Valery Data processing device for variable length multibyte data fields
US4258419A (en) * 1978-12-29 1981-03-24 Bell Telephone Laboratories, Incorporated Data processing apparatus providing variable operand width operation
DE3040931C1 (de) * 1980-10-30 1982-04-29 Siemens AG, 1000 Berlin und 8000 München Verfahren und Anordnung zur Verknuepfung von Operanden variabler Laenge in Datenverarbeitungsanlagen
US4680701A (en) * 1984-04-11 1987-07-14 Texas Instruments Incorporated Asynchronous high speed processor having high speed memories with domino circuits contained therein
SU1413624A1 (ru) * 1987-03-09 1988-07-30 Предприятие П/Я А-3886 Арифметическое устройство с переменной длиной операндов
US5084834A (en) * 1988-04-18 1992-01-28 General Electric Company Digit-serial linear combining apparatus
JPH02171923A (ja) 1988-12-26 1990-07-03 Toshiba Corp 浮動小数点加減算装置
US5023826A (en) * 1990-01-11 1991-06-11 Bull Hn Information Systems Inc. Apparatus for skipping arithmetic calculations involving leading zeros
US5168571A (en) * 1990-01-24 1992-12-01 International Business Machines Corporation System for aligning bytes of variable multi-bytes length operand based on alu byte length and a number of unprocessed byte data
JPH0635669A (ja) 1992-07-21 1994-02-10 Mitsubishi Electric Corp 中央演算処理装置
JPH06332671A (ja) 1993-05-27 1994-12-02 Toshiba Corp 高速加算演算器
DE4334294C1 (de) * 1993-10-08 1995-04-20 Ibm Prozessor für Zeichenketten variabler Länge
US6152613A (en) * 1994-07-08 2000-11-28 California Institute Of Technology Circuit implementations for asynchronous processors
US6643677B2 (en) * 1995-06-05 2003-11-04 Kabushiki Kaisha Toshiba Digital arithmetic integrated circuit
US6055620A (en) * 1997-09-18 2000-04-25 Lg Semicon Co., Ltd. Apparatus and method for system control using a self-timed asynchronous control structure
US6044453A (en) * 1997-09-18 2000-03-28 Lg Semicon Co., Ltd. User programmable circuit and method for data processing apparatus using a self-timed asynchronous control structure
US6230175B1 (en) * 1997-11-11 2001-05-08 Matsushita Electric Industrial Co., Ltd. Reconfigurable digit-serial arithmetic system having a plurality of digit-serial arithmetic units
CN1099161C (zh) * 1998-01-14 2003-01-15 北京多思科技工业园股份有限公司 数据移位部件
JP2001109613A (ja) 1999-10-05 2001-04-20 Mitsubishi Electric Corp 演算装置
JP2002099447A (ja) * 2000-09-22 2002-04-05 Fujitsu Ltd プロセッサ
JP3912545B2 (ja) * 2004-03-24 2007-05-09 セイコーエプソン株式会社 非同期加算器、非同期プロセッサ、及び電子機器

Also Published As

Publication number Publication date
US7844654B2 (en) 2010-11-30
TW200634616A (en) 2006-10-01
CN100375011C (zh) 2008-03-12
CN1773451A (zh) 2006-05-17
KR20060051572A (ko) 2006-05-19
US20060106903A1 (en) 2006-05-18
TWI308717B (en) 2009-04-11
JP2006139566A (ja) 2006-06-01

Similar Documents

Publication Publication Date Title
Gladshtein Quantum-dot cellular automata serial decimal adder
US6009451A (en) Method for generating barrel shifter result flags directly from input data
Vergos et al. On modulo 2^ n+ 1 adder design
TWI308717B (en) Electronic equipment
JP2004342106A (ja) 可変幅の符号付きおよび符号なしオペランドのためのモジュラ2進乗算器
JP3536063B2 (ja) デジタル乗算システム
JP2596909B2 (ja) 最小/最大検索命令を有するデジタル処理装置
JPH0480815A (ja) 絶対値演算回路
JPH09222991A (ja) 加算方法および加算器
US8041927B2 (en) Processor apparatus and method of processing multiple data by single instructions
EP0936537B1 (en) Cyclic redundancy check in a computer system
US6065034A (en) Circuit and method employing an adder for sign extending operands
US5978826A (en) Adder with even/odd 1-bit adder cells
Kwak et al. High-speed CORDIC based on an overlapped architecture and a novel σ-prediction method
JPH0473173B2 (ja)
WO2012077185A1 (ja) 10進絶対値加算器
US5926407A (en) Combined add/shift structure
Srivastava Completion Detection in Asynchronous Circuits: Toward Solution of Clock-Related Design Challenges
JPS595344A (ja) 並列シフト回路
JP2907276B2 (ja) 演算処理装置
JP3336986B2 (ja) 信号処理プロセッサ及びそれに用いる丸め機能付き積和演算器
JP3096574B2 (ja) 倍精度乗算を実行する方法及び演算装置
Aziz et al. Secure Genomic String Search with Parallel Homomorphic Encryption
US6041341A (en) Method and circuit for adding operands of multiple size
JP3551291B2 (ja) シリアル数値演算装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080115

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080411

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080418

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: 20080528

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080610

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110704

Year of fee payment: 3

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: 20110704

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120704

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees