(57)【要約】【課題】２つのオペランドのうちの一方に対して所定の演算処理を行う追加機能を有する加減算回路においてパス遅延を小さくする。【解決手段】加減算回路は、第１オペランドをビット単位反転して第１反転オペランドを出力する反転回路と、所定の演算処理を行う機能を有し第２オペランドを出力する回路と、前記第１反転オペランドと前記第２オペランドとからキャリーを生成するキャリー生成回路と、前記キャリーと前記第１オペランドと前記第２オペランドとのビット単位ＸＯＲを演算するＸＯＲ演算回路とを含む。【選択図】図２
2019194772.tif 000002
【特許請求の範囲】
【請求項１】
第１オペランドをビット単位反転して第１反転オペランドを出力する反転回路と、
所定の演算処理を行う機能を有し第２オペランドを出力する回路と、
前記第１反転オペランドと前記第２オペランドとからキャリーを生成するキャリー生成回路と、
前記キャリーと前記第１オペランドと前記第２オペランドとのビット単位ＸＯＲを演算するＸＯＲ演算回路と
を含む加減算回路。
【請求項２】
前記ＸＯＲ演算回路は、
前記第１反転オペランドと前記第２オペランドとのビット単位ＸＯＲを演算した値をビット単位反転して得られる第１演算値を演算する回路と、
前記第１演算値と前記キャリーとのビット単位ＸＯＲを演算する回路と
を含む請求項１記載の加減算回路。
【請求項３】
前記ＸＯＲ演算回路は、
前記第１反転オペランドと前記第２オペランドとのビット単位ＸＯＲを演算した値である第１演算値を演算する回路と、
前記第１演算値と前記キャリーとのビット単位ＸＯＲを演算した値をビット単位反転する回路と
を含む請求項１記載の加減算回路。
【請求項４】
前記ＸＯＲ演算回路は、
前記第１オペランドと前記第２オペランドとのビット単位ＸＯＲを演算した値である第１演算値を演算する回路と、
前記第１演算値と前記キャリーとのビット単位ＸＯＲを演算する回路と
を含む請求項１記載の加減算回路。
【請求項５】
第１オペランドと第２オペランドとの加減算を行うとともに、前記加減算の対象となる第２オペランドに対して所定の演算処理を行う機能を有する加減算回路において、
第１オペランドをビット単位反転して第１反転オペランドを生成し、
前記第１反転オペランドと前記第２オペランドとからキャリーを生成し、
前記キャリーと前記第１オペランドと前記第２オペランドとのビット単位ＸＯＲを演算する
各段階を含む加減算回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、加減算回路および加減算回路の制御方法に関する。
【背景技術】
【０００２】
プロセッサの動作周波数は、レジスタ間の全てのパスの中で遅延が最大のパス（クリティカルパス）の遅延量（遅延時間）により決まってくる。遅延が最大のパスに存在する回路を遅延が比較的小さなパスに移動させることができれば、各パスの遅延が全体的に平坦化されて、動作周波数を改善させることができる。固定小数点加算器のパス遅延は、以下の理由によりプロセッサの動作周波数の基準となることが多く、加算器におけるパス遅延を平坦化することができると、プロセッサ動作速度の改善に直結する。
【０００３】
プロセッサの加算器が、第１のオペランドＯＰ１と第２のオペランドＯＰ２とに対して「ＯＰ１−ＯＰ２」の減算を実行する場合、通常は「ＯＰ１＋〜ＯＰ２＋１」の演算を実行する。ここで〜ＯＰ２はＯＰ２に対する１の補数、即ちＯＰ２のビット毎の反転値である。この構成の加減算器では、ビット毎の反転演算を実行する反転回路がＯＰ２側のパスに設けられることになり、ＯＰ２側のパスの遅延が大きくなる。更に、一般的な命令セットアーキテクチャでは、符号拡張、ゼロ拡張、ビットシフト等の追加機能のための回路がＯＰ２側のパスに設けられていることが多い。従って、これらの回路のためにＯＰ２側のパスが、最大の遅延量を有するクリティカルパスとなっていた。
【０００４】
ＯＰ２側の遅延量を削減するために、ＯＰ２側の反転回路をＯＰ１側に設ける技術が提案されている（例えば特許文献１および特許文献２参照）。しかしながら、この技術では全体のパスの遅延量が改善されないという問題点があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平４−２８０３１９号公報
【特許文献２】特開平４−２１８８３１号公報
【特許文献３】特開２０１６−２２４５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以上を鑑みると、２つのオペランドのうちの一方に対して所定の演算処理を行う追加機能を有する加減算回路においてパス遅延を小さくすることが望まれる。
【課題を解決するための手段】
【０００７】
加減算回路は、第１オペランドをビット単位反転して第１反転オペランドを出力する反転回路と、所定の演算処理を行う機能を有し第２オペランドを出力する回路と、前記第１反転オペランドと前記第２オペランドとからキャリーを生成するキャリー生成回路と、前記キャリーと前記第１オペランドと前記第２オペランドとのビット単位ＸＯＲを演算するＸＯＲ演算回路とを含む。
【発明の効果】
【０００８】
少なくとも１つの実施例によれば、２つのオペランドのうちの一方に対して所定の演算処理を行う追加機能を有する加減算回路においてパス遅延を小さくすることができる。
【図面の簡単な説明】
【０００９】
【図１】加減算回路の構成の一例を示す図である。
【図２】加減算回路の第１実施例の構成を示す図である。
【図３】加減算回路の第２実施例の構成を示す図である。
【図４】加減算回路の第３実施例の構成を示す図である。
【図５】反転回路の構成の一例を示す図である。
【図６】ビット単位ＸＯＲ演算回路の構成の一例を示す図である。
【図７】ビット単位ＸＯＲ演算＆反転回路の構成の一例を示す図である。
【図８】２入力のＸＯＲゲートの回路構成の一例を示す図である。
【図９】３入力のＸＯＲゲートの回路構成の一例を示す図である。
【図１０】キャリー生成回路の構成の一例を示す図である。
【図１１】図１０に示されるＰＧ生成回路の構成の一例を示す図である。
【図１２】４ビットＣＬＡの構成の一例を示す図である。
【図１３】図１０に示すキャリー生成回路の一部を拡大して詳細な構成を示す図である。
【発明を実施するための形態】
【００１０】
以下に説明する図面において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００１１】
図１は、加減算回路の構成の一例を示す図である。図１を用いて、従来の加減算回路の構成について説明する。図１に示す加減算回路は、追加機能回路５と加減算器１０とを含む。加減算器１０は、反転回路１１、ビット単位ＸＯＲ演算回路１２、キャリー生成回路１３、およびビット単位ＸＯＲ演算回路１４を含む。
【００１２】
加減算器１０は第１オペランドＯＰ１と第２オペランドＯＰ２との加算又は減算を実行する。加算処理の場合は制御信号Ｃが０に設定され、減算処理の場合は制御信号Ｃが１に設定される。
【００１３】
加算処理の場合に制御信号Ｃが０に設定されると、反転回路１１は反転処理を実行せずに第２オペランドＯＰ２がそのままビット単位ＸＯＲ演算回路１２とキャリー生成回路１３とに供給される。また第１オペランドＯＰ１もビット単位ＸＯＲ演算回路１２とキャリー生成回路１３とに供給される。
【００１４】
キャリー生成回路１３はＣＬＡ（Carry Look-Ahead Adder：桁上げ先見加算回路）のキャリー生成部分であり、第１オペランドＯＰ１と第２オペランドＯＰ２とから各ビット毎に０または１の値を有するキャリー（桁上げ信号）を生成する。ビット単位ＸＯＲ演算回路１２は、第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲ（排他的論理和）を演算して得られる第１演算値を出力する。ビット単位ＸＯＲ演算回路１４は、キャリーと第１演算値とのビット単位ＸＯＲを演算して得られる加算結果を出力する。キャリー生成回路１３による桁上げ先見によるキャリー生成演算を行うことにより、下位ビットから上位ビットまでキャリーを順次伝搬させることのない高速な加算処理が可能となる。
【００１５】
減算処理の場合に制御信号Ｃが１に設定されると、反転回路１１はビット単位反転処理を実行することにより、第２オペランドＯＰ２のビット単位反転値（ＯＰ２に対する１の補数）である〜ＯＰ２を生成する。ここで演算子"〜"はビット単位反転を表す。この第２反転オペランド〜ＯＰ２はビット単位ＸＯＲ演算回路１２とキャリー生成回路１３とに供給される。また第１オペランドもビット単位ＸＯＲ演算回路１２とキャリー生成回路１３とに供給される。また制御信号Ｃの値１もビット単位ＸＯＲ演算回路１２とキャリー生成回路１３とに供給される。
【００１６】
ビット単位ＸＯＲ演算回路１２、キャリー生成回路１３、およびビット単位ＸＯＲ演算回路１４は、加算処理の場合と同様にして第１オペランドＯＰ１と第２反転オペランド〜ＯＰ２との加算処理を実行すると共に、最下位ビットに１を加算する。これにより「ＯＰ１＋〜ＯＰ２＋１」が計算される。〜ＯＰ２＋１＝−ＯＰ２であるので、この計算により「ＯＰ１−ＯＰ２」の減算処理が実行される。
【００１７】
図１の加減算回路では、所定の演算処理を行う機能を有し第２オペランドを出力する追加機能回路５が設けられている。追加機能回路５による論理演算の例としては、メモリアクセスのためのアドレス計算において、ベースアドレスである第１オペランドＯＰ１に対してオフセットである第２オペランドＯＰ２を加算する際、第２オペランドＯＰ２を加工する処理等がある。例えば、オペランドのデータサイズが６４ビット長である場合、６４ビットより短いビット数で表現されている整数値を６４ビットのデータサイズに合わせるときに、第２オペランドＯＰ２に対して符号拡張またはゼロ拡張処理が実行される。またアドレス計算においては、オフセットである第２オペランドＯＰ２に対して、拡張処理後に左シフトする処理が実行される場合がある。オペランドが６４ビット長である場合、追加機能回路５は、通常５段程度の論理ゲートを有する回路構成となる。
【００１８】
なお追加機能回路５として設けられている機能としては、これらの例に限定されるものではない。例えば、右シフトやローテート等の追加機能が追加機能回路５に設けられていてもよい。
【００１９】
図１に示す加減算回路では、第２オペランドＯＰ２側のパスに追加機能回路５および反転回路１１が設けられており、第１オペランドＯＰ１側のパスと比較して遅延が大きくなっている。この第２オペランドＯＰ２側のパスの大きな遅延量のために、加減算回路の動作周波数を高くして高速な動作を実現することが困難となる。
【００２０】
図２は、加減算回路の第１実施例の構成を示す図である。図２に示す加減算回路は、追加機能回路５、加減算器２０、および反転回路３０を含む。加減算器２０は、ビット単位ＸＯＲ演算＆反転回路２１、キャリー生成回路２２、およびビット単位ＸＯＲ演算回路２３を含む。
【００２１】
図２および以降の同様の図において、各ボックスで示される各回路ブロックと他の回路との境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各回路ブロックは、他の回路ブロックと物理的にある程度分離された１つの回路モジュールであってもよいし、或いは他の回路ブロックと物理的に一体となった回路モジュール中の１つの機能を示したものであってもよい。例えば反転回路３０は加減算器２０の内部に含まれていてもよい。また例えば、ビット単位ＸＯＲ演算＆反転回路２１において反転処理は全ビットの値が１であるデータと反転対象のデータとのＸＯＲ演算により実現することができる。即ち、ビット単位ＸＯＲ演算＆反転回路２１は全てＸＯＲ演算で実現されることになり、ビット単位ＸＯＲ演算回路２３とビット単位ＸＯＲ演算＆反転回路２１とは全てビット単位ＸＯＲ演算を実行する回路になる。この場合、ビット単位ＸＯＲ演算＆反転回路２１への２つの入力データと、全ビットの値が１であるデータと、キャリー生成回路２２が出力するキャリーデータとの４つのデータについて、４ビット入力のＸＯＲゲートによりビット単位ＸＯＲ演算を実行してもよい。
【００２２】
追加機能回路５は図１で説明した追加機能回路５と同様の回路である。追加機能回路５は所定の演算処理を行う機能を有し、必要に応じて所定の演算処理により加工したうえで、第２オペランドＯＰ２を出力する。
【００２３】
加減算器２０は第１オペランドＯＰ１と第２オペランドＯＰ２との加算又は減算を実行する。加算処理の場合は制御信号Ｃが０に設定され、減算処理の場合は制御信号Ｃが１に設定される。制御信号Ｃは反転回路３０にも印加される。制御信号Ｃが０の場合、反転回路３０は第１オペランドＯＰ１をそのまま出力する。制御信号Ｃが１の場合、反転回路３０は第１オペランドＯＰ１をビット単位反転して第１反転オペランド〜ＯＰを出力する。
【００２４】
加算処理の場合に制御信号Ｃが０に設定されると、ビット単位ＸＯＲ演算＆反転回路２１は、第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算して得られる第１演算値を出力する。制御信号Ｃが０の場合、ビット単位ＸＯＲ演算＆反転回路２１における反転処理は実行されない。
【００２５】
キャリー生成回路２２はＣＬＡのキャリー生成部分であり、第１オペランドＯＰ１と第２オペランドＯＰ２とから各ビット毎に０または１の値を有するキャリー（桁上げ信号）を生成する。ビット単位ＸＯＲ演算回路２３は、キャリーと第１演算値とのビット単位ＸＯＲを演算して得られる加算結果を出力する。キャリー生成回路２２による桁上げ先見によるキャリー生成演算を行うことにより、下位ビットから上位ビットまでキャリーを順次伝搬させることのない高速な加算処理が可能となる。
【００２６】
減算処理の場合に制御信号Ｃが１に設定されると、ビット単位ＸＯＲ演算＆反転回路２１は、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算した値をビット単位反転して得られる第１演算値を出力する。このように制御信号Ｃが１の場合、ビット単位ＸＯＲ演算＆反転回路２１における反転処理が実行される。
【００２７】
キャリー生成回路２２はＣＬＡのキャリー生成部分であり、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とから各ビット毎に０または１の値を有するキャリー（桁上げ信号）を生成する。ビット単位ＸＯＲ演算回路２３は、キャリーと第１演算値とのビット単位ＸＯＲを演算して得られる減算結果を出力する。キャリー生成回路２２による桁上げ先見によるキャリー生成演算を行うことにより、下位ビットから上位ビットまでキャリーを順次伝搬させることのない高速な減算処理が可能となる。
【００２８】
以下に、上記の演算により「ＯＰ１−ＯＰ２」の減算処理結果が得られることについて説明する。
【００２９】
ビット単位ＸＯＲ演算＆反転回路２１の出力する第１演算値は、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算した値をビット単位反転した値である。ここでビット単位反転は、反転対象のデータと全ビットの値が１であるデータ（ＡＬＬ１と表記する）とのビット単位ＸＯＲを演算する操作として表現できる。従って、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２との加算演算のキャリー（キャリー生成回路１３の出力）をＣＲと表記すると、ビット単位ＸＯＲ演算回路２３の出力ＯＵＴは以下のように表すことができる。
【００３０】
ＯＵＴ＝ＣＲ∧（〜ＯＰ１∧ＯＰ２∧ＡＬＬ１）
ここで演算子"∧"はビット単位ＸＯＲを表す。ＸＯＲ演算では結合法則が成り立つので、出力ＯＵＴを表す上記の式は以下のように変形することができる。
ＯＵＴ＝ＣＲ∧（〜ＯＰ１∧ＯＰ２∧ＡＬＬ１）
＝（ＣＲ∧〜ＯＰ１∧ＯＰ２）∧ＡＬＬ１
＝〜（ＣＲ∧〜ＯＰ１∧ＯＰ２）
＝〜（〜ＯＰ１＋ＯＰ２）
ここで「〜Ｘ＝ＡＬＬ１−Ｘ＝（ＡＬＬ１＋１）−Ｘ−１＝−Ｘ−１」であるので、結局出力ＯＵＴは以下のようになる。
ＯＵＴ＝〜（〜ＯＰ１＋ＯＰ２）
＝−（〜ＯＰ１＋ＯＰ２）−１
＝−（〜ＯＰ１）−ＯＰ２−１
＝−（−ＯＰ１−１）−ＯＰ２−１
＝ＯＰ１−ＯＰ２
従って、制御信号Ｃを１に設定した減算処理の場合において、図２に示す加減算器２０の出力は、第１オペランドＯＰ１から第２オペランドＯＰ２を減算した値となる。
【００３１】
図２の構成において、ＸＯＲを計算する側、即ちビット単位ＸＯＲ演算回路２１の側では、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲ演算値を反転した値「〜ＯＰ１∧ＯＰ２∧ＡＬＬ１」を計算している。ここで
〜ＯＰ１∧ＯＰ２∧ＡＬＬ１＝ＯＰ１∧ＯＰ２
であるので、ＸＯＲを計算する側、即ちビット単位ＸＯＲ演算回路２１の側では、第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲ演算値を計算していることになる。ビット単位ＸＯＲ演算＆反転回路２１の演算とビット単位ＸＯＲ演算回路２３の演算とを纏めて考えると、キャリーと第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算していることになる。但し、キャリーを計算する側、即ちキャリー生成回路２２の側では、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とのキャリーを計算している。
【００３２】
以上のように、図２に示す加減算回路では、キャリー生成回路２２が第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とからキャリーを生成する。そしてＸＯＲ演算回路（２１＋２３）が、キャリーと第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算していることになる。
【００３３】
図２に示す第１実施例の加減算回路では、反転回路１１が第２オペランドＯＰ２側に設けられていた図１に示す従来の加減算回路と比較して、反転回路３０が第１オペランドＯＰ１側に移されている。これにより第１オペランドＯＰ１側と第２オペランドＯＰ２側とを比較したとき、従来クリティカルパスであった第２オペランドＯＰ２側のパスの遅延量が小さくなっている。また図１に示す従来の加減算回路では不要であったビット単位反転処理が、図２に示す第１実施例の加減算回路ではビット単位ＸＯＲ演算＆反転回路２１において実行されているが、この反転処理はキャリー生成回路２２の処理と並行して実行される。従って、ビット単位ＸＯＲ演算＆反転回路２１における反転処理はキャリー生成回路２２によるキャリー生成処理の間に実行されることになり、加減算器２０の入力から出力までのパスの遅延に着目した場合に、遅延を増加させる要因とはならない。このようにして、図２に示す第１実施例の加減算回路では、２つのオペランドのうちの一方に対して所定の演算処理を行う追加機能を有する構成において、パス遅延を小さくすることができる。
【００３４】
図３は、加減算回路の第２実施例の構成を示す図である。図３に示す加減算回路は、追加機能回路５、加減算器２０Ａ、および反転回路３０を含む。加減算器２０Ａは、ビット単位ＸＯＲ演算回路２１Ａ、キャリー生成回路２２、およびビット単位ＸＯＲ演算＆反転回路２３Ａを含む。
【００３５】
ビット単位ＸＯＲ演算側の反転機能が、図２に示す第１実施例の加減算回路ではビット単位ＸＯＲ演算＆反転回路２１に設けられていたのに対して、図３に示す第２実施例の加減算回路ではビット単位ＸＯＲ演算回路２３に設けられている。この点以外には第２実施例の加減算回路と第１実施例の加減算回路とに違いはない。
【００３６】
加算処理の場合に制御信号Ｃが０に設定されると、ビット単位ＸＯＲ演算回路２１Ａは、第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算して得られる第１演算値を出力する。キャリー生成回路２２は、第１オペランドＯＰ１と第２オペランドＯＰ２とから各ビット毎に０または１の値を有するキャリーを生成する。ビット単位ＸＯＲ演算＆反転回路２３Ａは、第１演算値とキャリーとのビット単位ＸＯＲを演算して得られる加算結果を出力する。制御信号Ｃが０の場合、ビット単位ＸＯＲ演算＆反転回路２３Ａにおける反転処理は実行されない。
【００３７】
減算処理の場合に制御信号Ｃが１に設定されると、ビット単位ＸＯＲ演算回路２１Ａは、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算して得られる第１演算値を出力する。キャリー生成回路２２は、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とから各ビット毎に０または１の値を有するキャリーを生成する。ビット単位ＸＯＲ演算＆反転回路２３Ａは、第１演算値とキャリーとのビット単位ＸＯＲを演算した値をビット単位反転して得られる減算結果を出力する。制御信号Ｃが１の場合、ビット単位ＸＯＲ演算＆反転回路２３Ａにおける反転処理が実行される。
【００３８】
図３の構成において、ビット単位ＸＯＲ演算回路２１Ａの演算とビット単位ＸＯＲ演算＆反転回路２３Ａの演算とを纏めて考えると、キャリーと第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算していることになる。但し、キャリーを計算する側、即ちキャリー生成回路２２の側では、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とのキャリーを計算している。
【００３９】
以上のように、図３に示す加減算回路では、キャリー生成回路２２が第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とからキャリーを生成する。そしてＸＯＲ演算回路（２１Ａ＋２３Ａ）が、キャリーと第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算していることになる。従って、第１実施例の場合と同様に、「ＯＰ１−ＯＰ２」の減算結果を出力することができる。
【００４０】
図３に示す第２実施例の加減算回路では、反転回路１１が第２オペランドＯＰ２側に設けられていた図１に示す従来の加減算回路と比較して、反転回路３０が第１オペランドＯＰ１側に移されている。これにより第１オペランドＯＰ１側と第２オペランドＯＰ２側とを比較したとき、従来クリティカルパスであった第２オペランドＯＰ２側のパスの遅延量が小さくなっている。また図１に示す従来の加減算回路では不要であったビット単位反転処理が、図３に示す第２実施例の加減算回路ではビット単位ＸＯＲ演算＆反転回路２３Ａにおいて実行されているが、この反転処理はＸＯＲ演算として実行することができる。ＸＯＲゲートは、後述するように、２入力のＸＯＲ演算であっても３入力のＸＯＲ演算であっても、入力数に関わらずトランジスタ２段の論理回路により実現することができる。従ってビット単位ＸＯＲ演算＆反転回路２３Ａにおける反転処理は、適切な回路構成を有するＸＯＲゲートを用いれば、トランジスタの段数で数えた場合の遅延量を増加させる要因にはならない。このようにして、図３に示す第２実施例の加減算回路では、２つのオペランドのうちの一方に対して所定の演算処理を行う追加機能を有する構成において、パス遅延を小さくすることができる。
【００４１】
図４は、加減算回路の第３実施例の構成を示す図である。図４に示す加減算回路は、追加機能回路５、加減算器２０Ｂ、および反転回路３０を含む。加減算器２０Ｂは、ビット単位ＸＯＲ演算回路２１Ａ、キャリー生成回路２２、およびビット単位ＸＯＲ演算回路２３を含む。
【００４２】
図２に示す第１実施例の加減算回路では反転回路３０の生成する第１反転オペランド〜ＯＰ１がビット単位ＸＯＲ演算＆反転回路２１に供給されていた。それに対して図４に示す第３実施例の加減算回路では、反転していない第１オペランドＯＰ１がビット単位ＸＯＲ演算回路２１Ａに供給されている。この点以外には第３実施例の加減算回路と第１実施例の加減算回路とに違いはない。
【００４３】
加算処理の場合に制御信号Ｃが０に設定されると、ビット単位ＸＯＲ演算回路２１Ａは、第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算して得られる第１演算値を出力する。キャリー生成回路２２は、第１オペランドＯＰ１と第２オペランドＯＰ２とから各ビット毎に０または１の値を有するキャリーを生成する。ビット単位ＸＯＲ演算回路２３は、第１演算値とキャリーとのビット単位ＸＯＲを演算して得られる加算結果を出力する。
【００４４】
減算処理の場合に制御信号Ｃが１に設定されると、ビット単位ＸＯＲ演算回路２１Ａは、第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算して得られる第１演算値を出力する。キャリー生成回路２２は、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とから各ビット毎に０または１の値を有するキャリーを生成する。ビット単位ＸＯＲ演算回路２３は、第１演算値とキャリーとのビット単位ＸＯＲを演算して得られる減算結果を出力する。
【００４５】
図４の構成において、ビット単位ＸＯＲ演算回路２１Ａの演算とビット単位ＸＯＲ演算回路２３の演算とを纏めて考えると、キャリーと第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算していることになる。但し、キャリーを計算する側、即ちキャリー生成回路２２の側では、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とのキャリーを計算している。
【００４６】
以上のように、図４に示す加減算回路では、キャリー生成回路２２が第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とからキャリーを生成する。そしてＸＯＲ演算回路（２１Ａ＋２３）が、キャリーと第１オペランドＯＰ１と第２オペランドＯＰ２とのビット単位ＸＯＲを演算していることになる。従って、第１実施例の場合と同様に、「ＯＰ１−ＯＰ２」の減算結果を出力することができる。
【００４７】
図４に示す第３実施例の加減算回路では、反転回路１１が第２オペランドＯＰ２側に設けられていた図１に示す従来の加減算回路と比較して、反転回路３０が第１オペランドＯＰ１側に移されている。これにより第１オペランドＯＰ１側と第２オペランドＯＰ２側とを比較したとき、従来クリティカルパスであった第２オペランドＯＰ２側のパスの遅延量が小さくなっている。また図２に示す第１実施例の加減算回路および図３に示す第２実施例の加減算回路には存在したＸＯＲ演算側のビット単位反転処理が、図４に示す第３実施例の加減算回路では存在しない。従って、図４に示す第３実施例の加減算回路では、２つのオペランドのうちの一方に対して所定の演算処理を行う追加機能を有する構成において、パス遅延を小さくすることができる。
【００４８】
図５は、反転回路３０の構成の一例を示す図である。図５に示す反転回路３０は、Ｎビット長である第１オペランドＯＰ１と、０または１の値に設定される制御信号ＣをＮビット並べたＮビット長のデータとのビット単位ＸＯＲ演算を実行するＸＯＲ回路３０−１を含む。ＸＯＲ回路３０−１は、２入力のＸＯＲゲートをＮ個並列に並べることにより実現できる。
【００４９】
図６は、ビット単位ＸＯＲ演算回路２３の構成の一例を示す図である。ビット単位ＸＯＲ演算回路２１Ａも図６に示すビット単位ＸＯＲ演算回路２３と同様の構成であってよい。図６に示すビット単位ＸＯＲ演算回路２３は、Ｎビット長である第１データＤ１とＮビット長である第２データＤ２とのビット単位ＸＯＲ演算を実行するＸＯＲ回路２３−１を含む。ＸＯＲ回路２３−１は、２入力のＸＯＲゲートをＮ個並列に並べることにより実現できる。
【００５０】
図７は、ビット単位ＸＯＲ演算＆反転回路２１の構成の一例を示す図である。ビット単位ＸＯＲ演算＆反転回路２３Ａも図７に示すビット単位ＸＯＲ演算＆反転回路２１と同様の構成であってよい。ビット単位ＸＯＲ演算＆反転回路２１は、Ｎビット長である第１データＤ１と、Ｎビット長である第２データＤ２と、０または１の値に設定される制御信号ＣをＮビット並べたＮビット長のデータとのビット単位ＸＯＲ演算を実行するＸＯＲ回路２１−１を含む。ＸＯＲ回路２１−１は、３入力のＸＯＲゲートをＮ個並列に並べることにより実現できる。
【００５１】
図８は、２入力のＸＯＲゲートの回路構成の一例を示す図である。図８に示す２入力のＸＯＲゲートを、図５に示すＸＯＲ回路３０−１や図６に示すＸＯＲ回路２３−１として用いることができる。図８に示す２入力のＸＯＲゲートは、ＰＭＯＳトランジスタ４０乃至４４とＮＭＯＳトランジスタ４５乃至４９とを含む。この２入力のＸＯＲゲートにおいて、入力から出力までの最長の経路におけるトランジスタ段数は２段である。
【００５２】
図９は、３入力のＸＯＲゲートの回路構成の一例を示す図である。図９に示す３入力のＸＯＲゲートを、図７に示すＸＯＲ回路２１−１として用いることができる。図８に示す２入力のＸＯＲゲートは、ＰＭＯＳトランジスタ５１乃至６２、ＮＭＯＳトランジスタ６３乃至７４、およびインバータ７５乃至７７を含む。インバータ７５乃至７７の各々は、ＮＭＯＳトランジスタとＰＭＯＳトランジスタとの直列接続により実現できるので、トランジスタ段数が１段となる。従って、図９に示す３入力のＸＯＲゲートにおいて、入力から出力までの最長の経路におけるトランジスタ段数は２段である。
【００５３】
図８に示す２入力ＸＯＲゲートの場合も図９に示す３入力ＸＯＲゲートの場合も、入力から出力までのトランジスタ段数は２段であり、トランジスタ段数で数えた場合の遅延量は同等である。図９に示す構成のＸＯＲゲートを使用することにより、図３に示す第２実施例の加減算回路において、ビット単位ＸＯＲ演算＆反転回路２３Ａにおける反転処理を、遅延時間の増大なく組み入れることが可能となる。
【００５４】
図１０は、キャリー生成回路２２の構成の一例を示す図である。図１０に示すキャリー生成回路２２は、ＰＧ生成回路８０、４ビットＣＬＡ８１−１乃至８１−１６、４ビットＣＬＡ８２−１乃至８２−４、および４ビットＣＬＡ８３を含む。図１０に示すキャリー生成回路２２において、入力データである第１オペランドＯＰ１および第２オペランドＯＰ２の各々が６４ビット長であり、出力データであるキャリーが６４ビット長である。なお前述のようにキャリー生成回路２２への入力は、加算処理の場合においては第１オペランドＯＰ１および第２オペランドＯＰ２であり、減算処理の場合においては第１反転オペランド〜ＯＰ１および第２オペランドＯＰ２である。図１０では便宜上、入力の一方を第１オペランドＯＰ１として示してある。
【００５５】
図１１は、図１０に示されるＰＧ生成回路８０の構成の一例を示す図である。図１１に示すＰＧ生成回路８０は、ＡＮＤ回路９１とＸＯＲ回路９２とを含む。ＡＮＤ回路９１は、６４ビット長である第１オペランドＯＰ１と６４ビット長である第２オペランドＯＰ２とのビット単位ＡＮＤを演算する。ＡＮＤ回路９１は、２入力のＡＮＤゲートを６４個並列に並べることにより実現できる。ＸＯＲ回路９２は、６４ビット長である第１オペランドＯＰ１と６４ビット長である第２オペランドＯＰ２とのビット単位ＸＯＲを演算する。ＸＯＲ回路９２は、２入力のＸＯＲゲートを６４個並列に並べることにより実現できる。ＰＧ生成回路８０は、６４ビット長のＧ信号Ｇ０、および６４ビット長のＰ信号Ｐ０を出力する。
【００５６】
図１２は、４ビットＣＬＡの構成の一例を示す図である。図１２に示す４ビットＣＬＡ１００は、図１０に示す４ビットＣＬＡ８１−１乃至８１−１６、４ビットＣＬＡ８２−１乃至８２−４、および４ビットＣＬＡ８３の各々として用いることができる。なおここに示す４ビットＣＬＡ１００は、４ビットのＣＬＡ（Carry Look-Ahead Adder：桁上げ先見加算回路）のキャリー生成部分である。
【００５７】
４ビットＣＬＡ１００は、ＡＮＤゲート１０１−１乃至１０１−１０、ＯＲゲート１０２−１乃至１０２−４、ＡＮＤゲート１０３、およびＯＲゲート１０４を含む。図１２に示す例では、ＰＧ生成回路８０が生成する６４ビット長のＰ信号Ｐ０［６３：０］および６４ビット長のＧ信号Ｇ０［６３：０］のうち、下４ビットであるＰ０［３：０］およびＧ０［３：０］を入力信号として示してある。即ち、図１０の構成における４ビットＣＬＡ８１−１として、４ビットＣＬＡ１００が用いられる場合の入力信号が示されている。図１２においてＰ０［３：０］はＰ０［３］乃至Ｐ０［０］として、またＧ０［３：０］はＧ０［３］乃至Ｇ０［０］として示されている。ここで、Ｚ［Ｘ：Ｙ］は、データＺの第Ｙビットから第Ｘビット（Ｘ＞Ｙ）を示し、Ｚ［Ｘ］はデータＺの第Ｘビットを示す。また４ビットＣＬＡ１００には、入力キャリーＣｉｎが印加される。
【００５８】
４ビットＣＬＡ１００により、４ビット分のキャリーＣ［０］乃至Ｃ［３］を略同時に並行して計算することができる。４ビットＣＬＡ１００のような回路構成をそのまま６４ビットに拡張することにより、６４ビットのキャリーを略同時に並行して計算することができる。但し、そのような構成ではゲート数が膨大な数となるために、図１０に示されるキャリー生成回路２２では、複数個の４ビットＣＬＡ１００を組み合わせて４ビット毎にキャリーを生成する構成となっている。また４ビットＣＬＡ１００からは、Ｐ１信号およびＧ１信号が出力される。
【００５９】
図１３は、図１０に示すキャリー生成回路２２の一部を拡大して詳細な構成を示す図である。図１３には、図１０に示される４ビットＣＬＡ８１−１乃至８１−４と４ビットＣＬＡ８２−１との詳細な接続関係が示されている。４ビットＣＬＡ８１−１乃至８１−４にはそれぞれ、Ｐ０［３：０］およびＧ０［３：０］、Ｐ０［７：４］およびＧ０［７：４］、Ｐ０［１１：８］およびＧ０［１１：８］、Ｐ０［１５：１２］およびＧ０［１５：１２］が入力されている。４個の４ビットＣＬＡ８１−１乃至８１−４がそれぞれ出力する４個のＰ１信号およびＧ１信号が、Ｐ０［０］およびＧ０［０］、Ｐ０［１］およびＧ０［１］、Ｐ０［２］およびＧ０［２］、Ｐ０［３］およびＧ０［３］として、４ビットＣＬＡ８２−１へ入力される。また４ビットＣＬＡ８１−１および８２−１には、入力キャリーＣｉｎが印加される。
【００６０】
図１３に示すのと同様の接続関係が、図１０に示される４ビットＣＬＡ８１−５乃至８１−８と４ビットＣＬＡ８２−２との接続にも適用される。図１０に示される４ビットＣＬＡ８１−９乃至８１−１２と４ビットＣＬＡ８２−３との接続、および４ビットＣＬＡ８１−１３乃至８１−１６と４ビットＣＬＡ８２−４との接続についても同様である。
【００６１】
図１０乃至図１３に示す構成を有するキャリー生成回路２２において、４ビットＣＬＡ８１−１乃至８１−１６から、６４ビット分のキャリーＣ［６４：０］が出力される。このキャリーＣ［６４：０］が、図２乃至図４に示される次段のビット単位ＸＯＲ演算回路２３またはビット単位ＸＯＲ演算＆反転回路２３Ａに供給される。
【００６２】
図１０に示すキャリー生成回路２２の場合、入力から出力までの経路の長さは、ゲート段数で数えて１７段相当となる。従って、図２に示す第１実施例の構成において、ビット単位ＸＯＲ演算＆反転回路２１が１７段以下の構成であれば、加減算器２０の入力から出力までの遅延量がビット単位ＸＯＲ演算＆反転回路２１の反転処理により増加することはない。例えば、ビット単位ＸＯＲを１段目の２入力ＸＯＲゲートにより実行し、反転演算を２段目の２入力ＸＯＲゲートにより実行するように、２入力ＸＯＲゲートを２段縦続接続したとしても、反転演算により全体の遅延時間が影響を受けることはない。
【００６３】
なお図１０に示すキャリー生成回路２２の構成では、図１１に示されるようにＰＧ生成回路８０のＸＯＲ回路９２が、第１オペランドＯＰ１（または第１反転オペランド〜ＯＰ１）と第２オペランドＯＰ２とのビット単位ＸＯＲを演算している。このビット単位ＸＯＲの演算は図２のビット単位ＸＯＲ演算＆反転回路２１や図３のビット単位ＸＯＲ演算回路２１Ａが実行するビット単位ＸＯＲと同一の計算である。従って、図２に示す第１実施例および図３に示す第２実施例の場合、キャリー生成回路２２のＰＧ生成回路８０のＸＯＲ回路９２を、ビット単位ＸＯＲ演算＆反転回路２１またはビット単位ＸＯＲ演算回路２１ＡのＸＯＲ回路と共通化できる。一方、図４に示す第４実施例の場合、キャリー生成回路２２のＰＧ生成回路８０のＸＯＲ回路９２を、ビット単位ＸＯＲ演算回路２１ＡのＸＯＲ回路と共通化することはできない。
【００６４】
また図２乃至図４に示す第１乃至第３実施例の加減算回路では、ＣＬＡ（Carry Look-Ahead Adder：桁上げ先見加算回路）を用いた構成となっているが、キャリーを他の方式にて演算する構成であってもよく、特定の構成に限定されない。例えば、桁上げ伝播加算回路（Ripple Carry Adder）において、第１反転オペランド〜ＯＰ１と第２オペランドＯＰ２とからキャリーを計算し、第１オペランドＯＰ１と第２オペランドＯＰ２とキャリーとのビット単位ＸＯＲにより和を計算してよい。また同様に、例えば桁上げ選択加算回路（Carry Select Adder）や桁上げ飛び越し加算回路（Carry Skip Adder）を用いてもよい。
【００６５】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００６６】
５  追加機能回路
１０  加減算器
１１  反転回路
１２  ビット単位ＸＯＲ演算回路
１３  キャリー生成回路１３
１４  ビット単位ＸＯＲ演算回路
２０  加減算器
２１  ビット単位ＸＯＲ演算＆反転回路
２１Ａ  ビット単位ＸＯＲ演算
２２  キャリー生成回路
２３  ビット単位ＸＯＲ演算回路
２３Ａ  ビット単位ＸＯＲ演算＆反転回路
３０  反転回路
【図１】
2019194772.tif 000003
【図２】
2019194772.tif 000004
【図３】
2019194772.tif 000005
【図４】
2019194772.tif 000006
【図５】
2019194772.tif 000007
【図６】
2019194772.tif 000008
【図７】
2019194772.tif 000009
【図８】
2019194772.tif 000010
【図９】
2019194772.tif 000011
【図１０】
2019194772.tif 000012
【図１１】
2019194772.tif 000013
【図１２】
2019194772.tif 000014
【図１３】
2019194772.tif 000015