(57)【要約】  【課題】オーバーフローの発生を高速に検出できる加算回路を提供する。  【解決手段】入力データの第１桁から第１６桁までを加算した結果における第１５桁から第１６桁へのキャリー信号ｃ１４が、入力データの第１桁から第１５桁までのビット信号（ａ０〜ａ１５，ｂ０〜ｂ１５）と、第１桁に対して入力されるキャリー信号ＣＩＮとに基づいて生成され、ＣＬＡ２０４より出力される。次いで、この生成されたキャリー信号ｃ１４と、入力データの第１６桁のビット信号（ａ１５，ｂ１５）とに基づいて、第１６桁から第１７桁へのキャリー信号ｃ１５が生成され、ＣＩＡ２０５より出力される。そして、このキャリー信号ｃ１４およびｃ１５が排他的ＮＯＲ回路２０６において演算されることにより、オーバーフロー検出信号ＯＶＦ１６が生成される。【選択図】      図６
2005202885.tif 000002
【特許請求の範囲】
【請求項１】
入力される第１のデータおよび第２のデータを加算する加算回路であって、
上記第１のデータおよび上記第２のデータの所定の下位桁から第ｍ桁（ｍは２より大きい自然数を示す）までを加算した結果における第（ｍ−１）桁から第ｍ桁への第（ｍ−１）キャリー信号を、上記第１のデータおよび上記第２のデータの上記所定の下位桁から上記第（ｍ−１）桁までのビット信号と、上記所定の下位桁に対して入力されるキャリー信号とに基づいて生成する第１のキャリー信号生成回路と、
上記生成された第（ｍ−１）キャリー信号と、上記第１のデータおよび上記第２のデータの上記第ｍ桁のビット信号とに基づいて、上記第ｍ桁から第（ｍ＋１）桁への第ｍキャリー信号を生成する第２のキャリー信号生成回路と、
上記生成された第（ｍ−１）キャリー信号と第ｍキャリー信号とに所定の論理演算を行い、当該演算結果を、上記第ｍ桁を符号桁とした上記所定の下位桁から第ｍ桁までの加算結果にオーバーフローが発生するか否かを示す信号として出力する論理演算回路と、
を有する加算回路。
【請求項２】
上記第（ｍ＋１）桁から上記第（ｍ＋１）桁を超える所定の上位桁までの加算演算を実行する第１の演算モードにおいて、上記第（ｍ＋１）桁に対して入力されるキャリー信号を選択し、上記所定の下位桁から上記第（ｍ＋１）桁を超える所定の上位桁までの加算演算を実行する第２の演算モードにおいて、上記第１のデータおよび上記第２のデータの第ｍ桁のビット信号同士の論理積に応じた第ｍキャリー生成信号を選択する第１の選択回路と、
上記第１の演算モードにおいて、上記第１の選択回路で選択された信号を選択し、上記第２の演算モードにおいて、上記生成された第（ｍ−１）キャリー信号または上記第１の選択回路において選択された信号の何れかを、上記第１のデータおよび上記第２のデータの第ｍ桁のビット信号同士の排他的論理和に応じた第ｍキャリー伝播信号に基づいて選択し、選択結果の信号を上記第（ｍ＋１）桁に対するキャリー信号として出力する第２の選択回路と、を有する、
請求項１に記載の加算回路。
【請求項３】
入力される第１のデータおよび第２のデータを加算する加算回路であって、
上記第１のデータおよび上記第２のデータの所定の下位桁から第ｑ桁（ｑは２より大きい自然数を示す）までを加算した結果における第ｐ桁（ｐは１より大きくｑより小さい自然数）のビット信号が第１の値を有すると仮定した場合に、上記加算結果における第（ｐ＋１）桁から上記第ｑ桁までのビット信号が全て第１の値になるか否かを判定する第１のビット値判定回路と、
上記加算結果における上記第ｐ桁のビット信号が第２の値を有すると仮定した場合に、上記加算結果における上記第（ｐ＋１）桁から上記第ｑ桁までのビット信号が全て第２の値になるか否かを判定する第２のビット値判定回路と、
上記第１のデータおよび上記第２のデータの上記第ｐ桁のビット信号同士の排他的論理和に応じた第ｐキャリー伝播信号に基づいて、上記第１のビット値判定回路の判定信号または上記第２のビット値判定回路の判定信号の何れか一方を選択する第１の選択回路と、
上記第ｐキャリー伝播信号に基づいて、上記第１のビット値判定回路の判定信号または上記第２のビット値判定回路の判定信号のうち、上記第１の選択回路で選択されない他方の判定信号を選択する第２の選択回路と、
上記加算結果における第（ｐ−１）桁から上記第ｐ桁への第（ｐ−１）キャリー信号に基づいて、上記第１の選択回路または上記第２の選択回路の何れかにおいて選択された判定信号を選択し、当該選択した判定信号を、上記第ｐ桁を符号桁とした上記所定の下位桁から上記第ｐ桁までの加算結果にオーバーフローが発生するか否かを示す信号として出力する第３の選択回路と、
を有する加算回路。
【請求項４】
上記第１のビット値判定回路は、
上記第（ｐ＋１）桁から上記第ｑ桁までの各桁に対応するビット値をそれぞれ算出する第１のビット値算出回路であって、上記第１のデータおよび上記第２のデータの第ｋ桁（ｋはｐから（ｑ−１）までの自然数を示す）の加算結果が上記第１の値を有すると仮定した場合における第（ｋ＋１）桁の加算結果のビット値を、上記第１のデータおよび上記第２のデータの第ｋ桁および第（ｋ＋１）桁のビット信号に基づいてそれぞれ算出する第１のビット値算出回路と、
上記第１のビット値算出回路において算出された各桁のビット値が全て上記第１の値であるか否かを判定する第１の判定回路とを含み、
上記第２のビット値判定回路は、
上記第（ｐ＋１）桁から上記第ｑ桁までの各桁に対応するビット値をそれぞれ算出する第２のビット値算出回路であって、上記第１のデータおよび上記第２のデータの第ｋ桁の加算結果が上記第２の値を有すると仮定した場合における第（ｋ＋１）桁の加算結果のビット値を、上記第１のデータおよび上記第２のデータの第ｋ桁および第（ｋ＋１）桁のビット信号に基づいてそれぞれ算出する第２のビット値算出回路と、
上記第２のビット値算出回路において算出された各桁のビット値が全て上記第２の値であるか否かを判定する第２の判定回路とを含む、
請求項３に記載の加算回路。
【請求項５】
入力される第１のデータおよび第２のデータを加算する加算回路であって、
上記第１のデータおよび上記第２のデータの所定の下位桁から第ｑ桁（ｑは２より大きい自然数を示す）までを加算した結果における第（ｐ−１）桁から上記第ｐ桁への第（ｐ−１）キャリー信号が第１の値を有すると仮定した場合の、上記第ｐ桁から上記第ｑ桁までの各桁の加算結果を予測する第１の加算結果予測回路と、
上記第（ｐ−１）キャリー信号が第２の値を有すると仮定した場合の、上記第ｐ桁から上記第ｑ桁までの各桁の加算結果を予測する第２の加算結果予測回路と、
上記第１の加算結果予測回路で予測される第（ｐ＋１）桁から第ｑ桁までの加算結果が全て上記第１の値になるか否かを判定する第１の判定回路と、
上記第１の加算結果予測回路で予測される第（ｐ＋１）桁から第ｑ桁までの加算結果が全て上記第２の値になるか否かを判定する第２の判定回路と、
上記第２の加算結果予測回路で予測される第（ｐ＋１）桁から第ｑ桁までの加算結果が全て上記第１の値になるか否かを判定する第３の判定回路と、
上記第２の加算結果予測回路で予測される第（ｐ＋１）桁から第ｑ桁までの加算結果が全て上記第２の値になるか否かを判定する第４の判定回路と、
上記第１のデータおよび上記第２のデータの上記第ｐ桁のビット信号同士の排他的論理和に応じた第ｐキャリー伝播信号に基づいて、上記第１の判定回路の判定信号または上記第２の判定回路の判定信号の何れか一方を選択する第１の選択回路と、
上記第ｐキャリー伝播信号に基づいて、上記第３の判定回路の判定信号または上記第４の判定回路の判定信号の何れか一方を選択する第２の選択回路と、
上記第（ｐ−１）キャリー信号に基づいて、上記第１の選択回路または上記第２の選択回路の何れかにおいて選択された判定信号を選択し、当該選択した判定信号を、上記第ｐ桁を符号桁とした上記所定の下位桁から上記第ｐ桁までの加算結果にオーバーフローが発生するか否かを示す信号として出力する第３の選択回路と、
を有する加算回路。
【請求項６】
上記第ｑ桁を符号桁とした上記所定の下位桁から上記第ｑ桁までの加算結果にオーバーフローが発生するか否かを、上記第（ｐ−１）キャリー信号が第１の値を有する第１の場合および当該第（ｐ−１）キャリー信号が第２の値を有する第２の場合のそれぞれについて予測するオーバーフロー予測回路と、
上記第ｐ桁を符号桁とした加算結果を取得する演算モードまたは上記第ｑ桁を符号桁とした加算結果を取得する演算モードの何れかを指定する演算モード指定信号に基づいて、上記第１の選択回路において選択される判定信号または上記オーバーフロー予測回路における上記第１の場合の予測信号を選択する第４の選択回路と、
上記演算モード指定信号に基づいて、上記第２の選択回路において選択される判定信号または上記オーバーフロー予測回路における上記第２の場合の予測信号を選択する第５の選択回路と、
を有し、
上記第３の選択回路は、上記第（ｐ−１）キャリー信号に基づいて、上記第４の選択回路または上記第５の選択回路の何れかにおいて選択された信号を選択し、当該選択した信号を、上記第ｐ桁を符号桁とした上記所定の下位桁から上記第ｐ桁までの加算結果にオーバーフローが発生するか否かを示す信号、または、上記第ｑ桁を符号桁とした上記所定の下位桁から上記第ｑ桁までの加算結果にオーバーフローが発生するか否かを示す信号として出力する、
請求項３、４または５の何れか一に記載の加算回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は加算回路に係り、特に、算術論理演算装置等に用いられるオーバーフロー検出機能を備えた加算回路に関するものである。
【背景技術】
【０００２】
一般に、ＤＳＰ（digital signal processor）などのプロセッサは、算術演算（加算、乗算など）や論理演算（ビット反転、ビット・シフトなど）を行う算術論理演算装置（arithmetic logic unit：ＡＬＵ）を備えている。
【０００３】
ＡＬＵが実行する各種の算術演算は、加算演算を基本として、その結果を利用している。通常、ＡＬＵの加算回路は、加算結果にオーバーフローが発生するか否かを検出する機能を備えており、オーバーフローが検出された場合、ＡＬＵはその出力を強制的に所定値（例えば正の最大値や負の最小値）に補正する処理を行う。
特許文献１には、このようなオーバーフロー補正を行う演算装置に関する技術が記載されている。
【０００４】
ここで、オーバーフロー検出機能を備えた加算回路の従来例を説明する。
【０００５】
以下に述べる加算回路は、４０ビットの信号［ａ０，…，ａ３９］および［ｂ０，…，ｂ３９］と、最下位桁（第１桁）へのキャリー信号ＣＩＮとを入力し、その加算結果として、４０ビットの信号［ｓ０，…，ｓ３９］を出力する。
【０００６】
また、この加算回路は、４０ビットモードと３２ビットモードの２つの演算モードを有し、さらに、これらの各演算モードにおいて通常モードとデュアルモードを有する。
【０００７】
４０ビットモードにおいて、加算回路は、第４０桁を最上位桁とした加算演算を行う。また、第４０桁を符号桁とした加算演算におけるオーバーフローの有無を示す信号として、オーバーフロー検出信号ＯＶＦを出力する。
一方、３２ビットモードにおいては、第３２桁を最上位桁とした加算演算を行う。ただし、この場合、上記のオーバーフロー検出信号ＯＶＦは、第３２桁を符号桁とした加算演算におけるオーバーフローの有無を示す信号として出力する。
【０００８】
また、通常モードにおいて、加算回路は、第１桁から最上位桁（４０ビットモードでは第４０桁、３２ビットモードでは第３２桁）までの加算演算を単独に実行する。
デュアルモードにおいては、第１桁から第１６桁までの加算演算および第１７桁から最上位桁までの加算演算を並列に実行する。
【０００９】
デュアルモードの場合、加算回路は、最下位桁へのキャリーとして、下位側（第１桁〜第１６桁）の加算演算についてはキャリー信号ＣＩＮを入力し、上位側（第１７桁〜最上位桁）の加算演算についてはキャリー信号Ｃｄｕａｌを入力する。また、第１６桁を符号桁とした下位側の加算演算におけるオーバーフローの有無を示す信号として、オーバーフロー検出信号ＯＶＦ１６を出力する。
【００１０】
図１２は、このような加算回路において、デュアルモード時の下位１６ビットのオーバーフロー検出信号ＯＶＦ１６を生成する回路の構成例を示すブロック図である。
図１２に示す回路は、キャリー生成信号出力回路１，…，４，１１，１２と、キャリー伝播信号出力回路５，…，１０と、セレクタ１３および１４と、キャリー・セレクト・アダー（carry select adder：ＣＳＡと略記する）１５と、排他的ＮＯＲ回路１６とを有する。
【００１１】
オーバーフロー検出信号ＯＶＦ１６は、デュアルモードにおいて第１６桁を符号桁とした２の補数形式の入力データの加算結果にオーバーフローが発生する場合に‘０’、オーバーフローが発生しない場合に‘１’となる信号であり、次式で表される。
【００１２】
【数１】
2005202885.tif 000003
【００１３】
ただし、キャリー信号ｃｉ（ｉは０から３９までの整数を示す）は、第（ｉ＋１）桁から第（ｉ＋２）桁へのキャリーを示す。
図１２に示す回路では、このオーバーフロー検出信号ＯＶＦ１６を算出するにあたり、先ずキャリー信号ｃ１１およびｃ１５を桁上げ先見方式によって算出する。
【００１４】
図１２に示す回路のうち、キャリー生成信号出力回路（１〜４，１１，１２）、キャリー伝播信号出力回路（５〜１０）、セレクタ（１３、１４）で構成される部分は、キャリー信号Ｃ１１およびキャリー信号Ｃ１５を生成する桁上げ先見回路である。
この桁上げ先見回路は、中間的なキャリー生成信号およびキャリー伝播信号を２段階に分けて生成して、最終的なキャリー信号（Ｃ１１、Ｃ１５）を得るものである。
【００１５】
キャリー信号Ｃ１１およびＣ１５は、それぞれ次式で表される。
【００１６】
【数２】
2005202885.tif 000004
【００１７】
ただし、上式中における記号ｐｉおよびｇｉは、第（ｉ＋１）桁のキャリー伝播信号およびキャリー生成信号をそれぞれ示しており、次式で表される。
【００１８】
【数３】
2005202885.tif 000005
【００１９】
キャリー生成信号出力回路１，２，３，４は、キャリー生成信号Ｇ３＿０，Ｇ７＿４，Ｇ１１＿８，Ｇ１５＿１２をそれぞれ生成する。
キャリー生成信号Ｇ（ｊ＋３）＿ｊ（ここで、ｊは整数０，４，８，または１２を示す）は、４ビットの入力データ［ａｊ，…，ａ（ｊ＋３）］および［ｂｊ，…，ｂ（ｊ＋３）］を加算した場合に、この４ビットに対する下位からのキャリー信号Ｃ（ｊ−１）（ｊ＝０の場合はＣＩＮ）に依存せずに、上位へのキャリー信号ｃ（ｊ＋３）が‘１’になるか否かを示す信号であり、この信号が‘１’の場合、下位からのキャリーに依らずキャリー信号ｃ（ｊ＋３）は‘１’になる。
キャリー生成信号Ｇ（ｊ＋３）＿ｊは次式で表される。
【００２０】
【数４】
2005202885.tif 000006
【００２１】
キャリー伝播信号出力回路５，６，７，８は、キャリー伝播信号Ｐ３＿０，Ｐ７＿４，Ｐ１１＿８，Ｐ１５＿１２をそれぞれ生成する。
キャリー伝播信号Ｐ（ｊ＋３）＿ｊ（ここで、ｊは整数０，４，８，または１２を示す）は、４ビットの入力データ［ａｊ，…，ａ（ｊ＋３）］および［ｂｊ，…，ｂ（ｊ＋３）］を加算した場合に、この４ビットに対する下位からのキャリー信号Ｃ（ｊ−１）（ｊ＝０の場合はＣＩＮ）に依存して、上位へのキャリー信号ｃ（ｊ＋３）が変化するか否かを示す信号であり、この信号が‘１’の場合、下位からのキャリーに依存して上位へのキャリー信号ｃ（ｊ＋３）は‘１’または‘０’に変化する。
キャリー伝播信号Ｐ（ｊ＋３）＿ｊは次式で表される
【００２２】
【数５】
2005202885.tif 000007
【００２３】
キャリー伝播信号出力回路９，１０は、キャリー伝播信号Ｐ１１＿０，Ｐ１５＿０をそれぞれ生成する。
キャリー伝播信号Ｐ１１＿０およびＰ１５＿０は、それぞれ次式で表される。
【００２４】
【数６】
2005202885.tif 000008
【００２５】
キャリー生成信号出力回路１１，１２は、キャリー生成信号Ｇ１１＿０，Ｇ１５＿０をそれぞれ生成する。
キャリー生成信号Ｇ１１＿０およびＧ１５＿０は、それぞれ次式で表される。
【００２６】
【数７】
2005202885.tif 000009
【００２７】
ここで、式（８）および式（１０）を式（２）に代入すると、キャリー信号ｃ１１は次式のように表される。
【００２８】
【数８】
2005202885.tif 000010
【００２９】
また、式（９）および式（１１）を式（３）に代入すると、キャリー信号Ｃ１５は次式のように表される。
【００３０】
【数９】
2005202885.tif 000011
【００３１】
セレクタ１３は、キャリー伝播信号Ｐ１１＿０が‘０’のときにキャリー生成信号Ｇ１１＿０を選択し、キャリー伝播信号Ｐ１１＿０が‘１’のときにキャリー信号ＣＩＮを選択して出力する。
キャリー伝播信号Ｐ１１＿０が‘１’になると、キャリー生成信号ｇ０〜ｇ１１が全て‘０’になり、キャリー生成信号Ｇ１１＿０は‘０’になることから、セレクタ１３の出力信号は式（１２）に示すキャリー信号ｃ１１と等しくなる。
【００３２】
セレクタ１４は、キャリー伝播信号Ｐ１５＿０が‘０’のときにキャリー生成信号Ｇ１５＿０を選択し、キャリー伝播信号Ｐ１５＿０が‘１’のときにキャリー信号ＣＩＮを選択して出力する。
上述と同様に、キャリー伝播信号Ｐ１５＿０が‘１’になるとキャリー生成信号Ｇ１５＿０は‘０’になることから、セレクタ１４の出力信号は式（１３）に示すキャリー信号ｃ１５と等しくなる。
【００３３】
ＣＳＡ１５は、キャリー信号ｃ１１が‘１’と‘０’の場合における第１３桁〜第１６桁の各桁の加算値を予め算出し、当該算出した２通りの加算値から、キャリー信号ｃ１１の値に応じて選択した一方を、加算結果ｓ１２〜ｓ１５として出力する。
また、ＣＳＡ１５は、第１５桁のキャリーについても同様に、予め算出した２通りのうちの一方をキャリー信号ｃ１１の値に応じて選択し、これをキャリー信号ｃ１４として出力する。
【００３４】
排他的ＮＯＲ回路１６は、ＣＳＡ１５より出力されるキャリー信号ｃ１４と、セレクタ１４より出力されるキャリー信号ｃ１５との排他的反転論理和を演算する。式（１）の関係より、排他的ＮＯＲ回路１６の演算結果はオーバーフロー検出信号ＯＶＦ１６となる。
【００３５】
図１３は、第１７桁へのキャリー信号Ｃ１５Ａを出力する回路の構成例を示すブロック図である。図１２と同一符号は同一の構成要素を示す。
【００３６】
セレクタ１７は、デュアルモード指定信号Ｍｄｕａｌが‘１’の場合に外部から入力されるキャリー信号Ｃｄｕａｌを選択し、デュアルモード指定信号Ｍｄｕａｌが‘０’の場合は、図１２に示す回路で生成される下位１６ビットのキャリー信号ｃ１５を選択して出力する。セレクタ１７の出力信号が、第１７桁へのキャリー信号Ｃ１５Ａとなる。
【００３７】
図１４は、オーバーフロー検出信号ＯＶＦを生成する回路の構成例を示すブロック図である。
図１４に示す回路は、ＣＳＡ１８と、ＡＮＤ回路１９と、ＮＯＲ回路２０と、ＯＲ回路２１と、セレクタ２２および２３とを有する。
【００３８】
図１４に示す回路は、４０ビットモードのオーバーフロー検出信号ＯＶＦ４０および３２ビットモードのオーバーフロー検出信号ＯＶＦ３２をそれぞれ算出する。
【００３９】
オーバーフロー検出信号ＯＶＦ４０は、第４０桁を符号桁とした２の補数形式の入力データの加算結果にオーバーフローが発生する場合に‘０’、オーバーフローが発生しない場合に‘１’となる信号であり、次式で表される。
【００４０】
【数１０】
2005202885.tif 000012
【００４１】
また、オーバーフロー検出信号ＯＶＦ３２は、第３２桁を符号桁とした２の補数形式の入力データの加算結果にオーバーフローが発生する場合に‘０’、オーバーフローが発生しない場合に‘１’となる信号であり、次式で表される。
【００４２】
【数１１】
2005202885.tif 000013
【００４３】
式（１５）から分かるように、３２ビットモードの場合、加算結果ｓ３１〜ｓ３９が全て‘１’でなく、かつ全て‘０’でもない場合にオーバーフローとなる。
【００４４】
ＣＳＡ１８は、キャリー信号ｃ３０が‘１’と‘０’の場合における第３２桁〜第４０桁の各桁の加算値を予め算出し、当該算出した２通りの加算値から、キャリー信号ｃ３０の値に応じて選択した一方を、加算結果ｓ３１〜ｓ３９として出力する。
また、これらの加算値とともに予め算出される第３９桁および第４０桁のキャリーを用いて、キャリー信号ｃ３０が‘０’，‘１’の場合に４０ビットモードのオーバーフローが発生するか否かを予測する信号ＳＣ０，ＳＣ１をそれぞれ算出する。
【００４５】
キャリー信号ｃ３０が‘０’の場合における第３９桁，第４０桁のキャリー算出値をそれぞれキャリー信号ｃ３８＿０，ｃ３９＿０とし、キャリー信号ｃ３０が‘１’の場合における第３９桁，第４０桁のキャリー算出値をそれぞれキャリー信号ｃ３８＿１，ｃ３９＿１とすると、オーバーフローの予測信号ＳＣ０およびＳＣ１は次式のように表される。
【００４６】
【数１２】
2005202885.tif 000014
【００４７】
セレクタ２２は、ＣＳＡ１８において算出されるオーバーフローの予測信号ＳＣ０およびＳＣ１を入力し、キャリー信号ｃ３０が‘０’の場合に予測信号ＳＣ０、キャリー信号ｃ３０が‘１’の場合に予測信号ＳＣ１を出力する。この出力信号は、オーバーフロー検出信号ＯＶＦ４０としてセレクタ２３に入力される。
【００４８】
ＡＮＤ回路１９は、ＣＳＡ１８において算出される加算結果ｓ３１〜ｓ３９の論理積を演算する。この演算結果は、式（１５）の右辺第１項と等しい値を有する。
【００４９】
ＮＯＲ回路２０は、ＣＳＡ１８において算出される加算結果ｓ３１〜ｓ３９の反転論理和を演算する。この演算結果は、式（１５）の右辺第２項と等しい値を有する。
【００５０】
ＯＲ回路２１は、ＡＮＤ回路１９およびＮＯＲ回路２０の出力信号の論理和を演算する。この演算結果は、オーバーフロー検出信号ＯＶＦ３２としてセレクタ２３に入力される。
【００５１】
セレクタ２３は、入力された２つのオーバーフロー検出信号ＯＶＦ３２，ＯＶＦ４０から、モード指定信号Ｍ４０に応じて一方の信号を選択し、これをオーバーフロー検出信号ＯＶＦとして出力する。
【特許文献１】特開平７−１８２１４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００５２】
ところで、図１２に示す回路では、キャリー信号ｃ１５およびオーバーフロー検出信号ＯＶＦ１６の生成を高速化するために、２つのキャリー信号ｃ１４、ｃ１５の生成処理を並列に実行している。すなわち、キャリー信号ｃ１４を生成するための桁上げ先見回路（９，１１）と、キャリー信号ｃ１５を生成するための桁上げ先見回路（１０，１２）とを、それぞれ独立に設けている。
そのため、これらの回路を駆動する前段の桁上げ先見回路（１〜８）にとって容量性負荷が増大し、消費電力の増加やオーバーフロー検出信号ＯＶＦ１６のスピードの低下といった不利益がある。
【００５３】
また、図１３に示す回路では、キャリー信号ｃ１５Ａを生成する信号の中で最も高速性を要求されるキャリー生成信号Ｇ１５＿０が、出力に到達するまでに２段のセレクタ（１４，１７）を通過しなければならない。そのため、キャリー信号ｃ１５Ａの生成が遅くなり、演算スピードが低下するという不利益がある。
【００５４】
さらに、図１４に示す回路では、最も遅延する信号であるキャリー信号ｃ３０が到着した後で、加算結果ｓ３１〜３９、ＡＮＤ回路１９およびＮＯＲ回路２０の出力信号０、オーバーフロー検出信号ＯＶＦ３２、オーバーフロー検出信号ＯＶＦの順に信号が確定する。すなわち、高速性を要求されるキャリー信号ｃ３０のパスが長いため、オーバーフロー検出信号ＯＶＦのスピードが低下するという不利益がある。
【００５５】
本発明はかかる事情に鑑みてなされたものであり、その目的は、オーバーフローの発生を高速に検出することができる加算回路を提供することにある。
【課題を解決するための手段】
【００５６】
上記の目的を達成する第１の発明は、入力される第１のデータおよび第２のデータを加算する加算回路であって、上記第１のデータおよび上記第２のデータの所定の下位桁から第ｍ桁（ｍは２より大きい自然数を示す）までを加算した結果における第（ｍ−１）桁から第ｍ桁への第（ｍ−１）キャリー信号を、上記第１のデータおよび上記第２のデータの上記所定の下位桁から上記第（ｍ−１）桁までのビット信号と、上記所定の下位桁に対して入力されるキャリー信号とに基づいて生成する第１のキャリー信号生成回路と、上記生成された第（ｍ−１）キャリー信号と、上記第１のデータおよび上記第２のデータの上記第ｍ桁のビット信号とに基づいて、上記第ｍ桁から第（ｍ＋１）桁への第ｍキャリー信号を生成する第２のキャリー信号生成回路と、上記生成された第（ｍ−１）キャリー信号と第ｍキャリー信号とに所定の論理演算を行い、当該演算結果を、上記第ｍ桁を符号桁とした上記所定の下位桁から第ｍ桁までの加算結果にオーバーフローが発生するか否かを示す信号として出力する論理演算回路とを有する。
【００５７】
上記第１の発明の加算回路は、上記第（ｍ＋１）桁から上記第（ｍ＋１）桁を超える所定の上位桁までの加算演算を実行する第１の演算モードにおいて、上記第（ｍ＋１）桁に対して入力されるキャリー信号を選択し、上記所定の下位桁から上記第（ｍ＋１）桁を超える所定の上位桁までの加算演算を実行する第２の演算モードにおいて、上記第１のデータおよび上記第２のデータの第ｍ桁のビット信号同士の論理積に応じた第ｍキャリー生成信号を選択する第１の選択回路と、上記第１の演算モードにおいて、上記第１の選択回路で選択された信号を選択し、上記第２の演算モードにおいて、上記生成された第（ｍ−１）キャリー信号または上記第１の選択回路において選択された信号の何れかを、上記第１のデータおよび上記第２のデータの第ｍ桁のビット信号同士の排他的論理和に応じた第ｍキャリー伝播信号に基づいて選択し、選択結果の信号を上記第（ｍ＋１）桁に対するキャリー信号として出力する第２の選択回路とを有しても良い。
【００５８】
上記の目的を達成する第２の発明は、上記第１のデータおよび上記第２のデータの所定の下位桁から第ｑ桁（ｑは２より大きい自然数を示す）までを加算した結果における第ｐ桁（ｐは１より大きくｑより小さい自然数）のビット信号が第１の値を有すると仮定した場合に、上記加算結果における第（ｐ＋１）桁から上記第ｑ桁までのビット信号が全て第１の値になるか否かを判定する第１のビット値判定回路と、上記加算結果における上記第ｐ桁のビット信号が第２の値を有すると仮定した場合に、上記加算結果における上記第（ｐ＋１）桁から上記第ｑ桁までのビット信号が全て第２の値になるか否かを判定する第２のビット値判定回路と、上記第１のデータおよび上記第２のデータの上記第ｐ桁のビット信号同士の排他的論理和に応じた第ｐキャリー伝播信号に基づいて、上記第１のビット値判定回路の判定信号または上記第２のビット値判定回路の判定信号の何れか一方を選択する第１の選択回路と、上記第ｐキャリー伝播信号に基づいて、上記第１のビット値判定回路の判定信号または上記第２のビット値判定回路の判定信号のうち、上記第１の選択回路で選択されない他方の判定信号を選択する第２の選択回路と、上記加算結果における第（ｐ−１）桁から上記第ｐ桁への第（ｐ−１）キャリー信号に基づいて、上記第１の選択回路または上記第２の選択回路の何れかにおいて選択された判定信号を選択し、当該選択した判定信号を、上記第ｐ桁を符号桁とした上記所定の下位桁から上記第ｐ桁までの加算結果にオーバーフローが発生するか否かを示す信号として出力する第３の選択回路とを有する。
【００５９】
上記の目的を達成する第３の発明は、上記第１のデータおよび上記第２のデータの所定の下位桁から第ｑ桁（ｑは２より大きい自然数を示す）までを加算した結果における第（ｐ−１）桁から上記第ｐ桁への第（ｐ−１）キャリー信号が第１の値を有すると仮定した場合の、上記第ｐ桁から上記第ｑ桁までの各桁の加算結果を予測する第１の加算結果予測回路と、上記第（ｐ−１）キャリー信号が第２の値を有すると仮定した場合の、上記第ｐ桁から上記第ｑ桁までの各桁の加算結果を予測する第２の加算結果予測回路と、上記第１の加算結果予測回路で予測される第（ｐ＋１）桁から第ｑ桁までの加算結果が全て上記第１の値になるか否かを判定する第１の判定回路と、上記第１の加算結果予測回路で予測される第（ｐ＋１）桁から第ｑ桁までの加算結果が全て上記第２の値になるか否かを判定する第２の判定回路と、上記第２の加算結果予測回路で予測される第（ｐ＋１）桁から第ｑ桁までの加算結果が全て上記第１の値になるか否かを判定する第３の判定回路と、上記第２の加算結果予測回路で予測される第（ｐ＋１）桁から第ｑ桁までの加算結果が全て上記第２の値になるか否かを判定する第４の判定回路と、上記第１のデータおよび上記第２のデータの上記第ｐ桁のビット信号同士の排他的論理和に応じた第ｐキャリー伝播信号に基づいて、上記第１の判定回路の判定信号または上記第２の判定回路の判定信号の何れか一方を選択する第１の選択回路と、上記第ｐキャリー伝播信号に基づいて、上記第３の判定回路の判定信号または上記第４の判定回路の判定信号の何れか一方を選択する第２の選択回路と、上記第（ｐ−１）キャリー信号に基づいて、上記第１の選択回路または上記第２の選択回路の何れかにおいて選択された判定信号を選択し、当該選択した判定信号を、上記第ｐ桁を符号桁とした上記所定の下位桁から上記第ｐ桁までの加算結果にオーバーフローが発生するか否かを示す信号として出力する第３の選択回路とを有する。
【００６０】
上記第２の発明および上記第３の発明の加算回路は、上記第ｑ桁を符号桁とした上記所定の下位桁から上記第ｑ桁までの加算結果にオーバーフローが発生するか否かを、上記第（ｐ−１）キャリー信号が第１の値を有する第１の場合および当該第（ｐ−１）キャリー信号が第２の値を有する第２の場合のそれぞれについて予測するオーバーフロー予測回路と、上記第ｐ桁を符号桁とした加算結果を取得する演算モードまたは上記第ｑ桁を符号桁とした加算結果を取得する演算モードの何れかを指定する演算モード指定信号に基づいて、上記第１の選択回路において選択される判定信号または上記オーバーフロー予測回路における上記第１の場合の予測信号を選択する第４の選択回路と、上記演算モード指定信号に基づいて、上記第２の選択回路において選択される判定信号または上記オーバーフロー予測回路における上記第２の場合の予測信号を選択する第５の選択回路とを有しても良い。また、上記第３の選択回路は、上記第（ｐ−１）キャリー信号に基づいて、上記第４の選択回路または上記第５の選択回路の何れかにおいて選択された信号を選択し、当該選択した信号を、上記第ｐ桁を符号桁とした上記所定の下位桁から上記第ｐ桁までの加算結果にオーバーフローが発生するか否かを示す信号、または、上記第ｑ桁を符号桁とした上記所定の下位桁から上記第ｑ桁までの加算結果にオーバーフローが発生するか否かを示す信号として出力しても良い。
【発明の効果】
【００６１】
本発明によれば、オーバーフローの発生を高速に検出できるという利点がある。
【発明を実施するための最良の形態】
【００６２】
以下、本発明をＡＬＵの加算回路に適用した２つの実施形態について、図面を参照して説明する。
【００６３】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係る加算回路の構成の一例を示すブロック図である。
【００６４】
以下に述べる加算回路は、上述した従来例と同様に、４０ビットの信号［ａ０，…，ａ３９］および［ｂ０，…，ｂ３９］と、第１桁へのキャリー信号ＣＩＮとを入力し、その加算結果として、４０ビットの信号［ｓ０，…，ｓ３９］を出力する。
【００６５】
また、２つの演算モード（４０ビットモード、３２ビットモード）を有し、各演算モードにおいて通常モードとデュアルモードを有する。
すなわち、４０ビットモードにおいては、第４０桁を最上位桁とした加算演算を行い、当該加算演算におけるオーバーフローの有無を示すオーバーフロー検出信号ＯＶＦを出力する。
３２ビットモードにおいては、第３２桁を最上位桁とした加算演算を行い、上記のオーバーフロー検出信号ＯＶＦとして、第３２桁を符号桁とした加算演算におけるオーバーフローの有無を示す信号を出力する。
通常モードにおいては、第１桁から最上位桁（第４０桁または第３２桁）までの加算演算を単独に実行する。
デュアルモードにおいては、第１桁から第１６桁までの加算演算および第１７桁から最上位桁までの加算演算を並列に実行する。この場合、最下位桁へのキャリーとして、下位側の加算演算についてはキャリー信号ＣＩＮを入力し、上位側の加算演算についてはキャリー信号Ｃｄｕａｌを入力する。また、第１６桁を符号桁とした下位側の加算演算におけるオーバーフローの有無を示すオーバーフロー検出信号ＯＶＦ１６を出力する。
【００６６】
この加算回路は、図１の例において、論理演算部１００および加算部２００を有する。
加算部２００は、キャリー・インクリメント・アダー（carry increment adder：ＣＩＡと略記する）２０１，２０２，２０５と、キャリー・セーブ・アダー（ＣＳＡ）２０３と、桁上げ先見回路２０４，２０８と、キャリー信号出力回路２０７と、排他的ＮＯＲ回路２０６と、オーバーフロー検出信号出力回路２０９とを有する。
まず、これらの構成についてそれぞれ説明する。
【００６７】
［論理演算部１００］
論理演算部１００は、４０ビットの信号［ａ０，…，ａ３９］および［ｂ０，…，ｂ３９］を入力し、この入力データの各桁のビット信号に対して、制御信号Ｓｃｏｎｔに応じた論理演算を行う。
【００６８】
図２は、論理演算部１００に含まれる、第（ｉ＋１）桁の演算ユニット１００＿ｉの構成例を示すブロック図である。この演算ユニット１００＿ｉは、信号Ｌ１〜Ｌ５を含んだ制御信号Ｓｃｏｎｔに応じて、入力ビット信号ａｉおよびｂｉに所定の論理演算を行う回路である。
図２にの例において、演算ユニット１００＿ｉは、ＡＮＤ回路１０１と、ＯＲ回路１０２と、ＮＯＴ回路１０３と、排他的ＮＯＲ回路１０４と、排他的ＯＲ回路１０５と、出力回路１０６とを有する。
【００６９】
ＡＮＤ回路１０１は、入力ビット信号ａｉおよびｂｉと、制御信号Ｓｃｏｎｔに含まれる信号Ｌ１とを入力し、この３入力の論理積を信号ｇｉとして出力する。
ＯＲ回路１０２、排他的ＮＯＲ回路１０４、排他的ＯＲ回路１０５は、何れも入力ビット信号ａｉおよびｂｉを入力する。この２入力について、ＯＲ回路１０２は論理和、排他的ＮＯＲ回路１０４は排他的反転論理和、排他的ＯＲ回路１０５は排他的論理和をそれぞれ演算する。
ＮＯＴ回路１０３は、入力ビット信号ｂｉを論理反転する。
【００７０】
出力回路１０６は、制御信号Ｓｃｏｎｔに含まれる信号Ｌ２〜Ｌ５に応じて、ＯＲ回路１０２、ＮＯＴ回路１０３、排他的ＮＯＲ回路１０４および排他的ＯＲ回路１０５の各出力信号から任意の信号を選び、その論理和を信号ｐｉとして出力する。
【００７１】
このような構成により、演算ユニット１００＿ｉは、入力ビット信号ａｉおよびｂｉの論理積を信号ｇｉとして出力することができる。
また、入力ビット信号ａｉおよびｂｉの論理和、排他的反転論理和もしくは排他的論理和、または入力ビット信号ｂｉの論理反転を、信号ｐｉとして出力することが可能である。更に、これらの論理演算結果の一部または全部についての論理和演算を行い、これを信号ｐｉとして出力することも可能である。
【００７２】
なお、加算演算を行う場合には、信号ｐｉが式（４）に示すキャリー伝播信号となり、信号ｇｉが式（５）に示すキャリー生成信号となるように、演算ユニット１００＿ｉへ入力する制御信号Ｓｃｏｎｔを設定するものとする。
【００７３】
［ＣＩＡ２０１］
ＣＩＡ２０１は、論理演算部１００から出力される第１桁〜第１５桁のキャリー伝播信号ｐ０〜ｐ１４およびキャリー生成信号ｇ０〜ｇ１４と、第１桁へのキャリー信号ＣＩＮとを入力し、これに応じた加算結果ｓ０〜ｓ１４を出力する。
ＣＩＡ２０１は、第１桁〜第１５桁の信号（ｐ０〜ｐ１４，ｇ０〜ｇ１４）の入力とともに下位側から上位側に向かって局所的なキャリー生成信号およびキャリー伝播信号を順次に伝播させる回路を有しており、この局所的キャリー生成信号およびキャリー伝播信号とキャリー信号ＣＩＮとに応じて、各桁の加算結果ｓ１〜ｓ１４を算出する。
【００７４】
図３は、ＣＩＡ２０１の構成の一例を示すブロック図である。
図３に例示するＣＩＡ２０１は、局所的キャリー伝播信号ｐ１＿０，…，ｐ１３＿０を出力する２入力のＡＮＤ回路２１０＿０，…，２１０＿１２と、局所的キャリー生成信号ｇ１＿０，…，ｇ１３＿０を出力する３入力のＡＮＤ−ＯＲ複合回路２１２＿０，…，２１２＿１２と、キャリー信号ｃ０，…，ｃ１３を出力する３入力のＡＮＤ−ＯＲ複合回路２１１＿０，…，２１１＿１３と、加算結果ｓ０，…，ｓ１４を出力する２入力の排他的ＯＲ回路２１３＿０，…，２１３＿１４とを有する。
【００７５】
２入力のＡＮＤ回路２１０＿０，…，２１０＿１２は、この順序で縦続に接続されており、局所的キャリー伝播信号の出力結果をそれぞれ次段に入力する。
２入力のＡＮＤ回路２１０＿０は、キャリー伝播信号ｐ０およびｐ１の論理積を局所的キャリー伝播信号ｐ１＿０として出力する。
２入力のＡＮＤ回路２１０＿ｋ（ここで、ｋは、１から１２までの整数を示す）は、前段から出力される局所的キャリー伝播信号ｐｋ＿０とキャリー伝播信号ｐ（ｋ＋１）との論理積を、局所的キャリー伝播信号ｐ（ｋ＋１）＿０として出力する。
局所的キャリー伝播信号ｐ１＿０，…，ｐ１３＿０は、次式で表される。
【００７６】
【数１３】
2005202885.tif 000015
【００７７】
３入力のＡＮＤ−ＯＲ複合回路２１２＿０，…，２１２＿１２は、この順序で縦続に接続されており、局所的キャリー生成信号の出力結果をそれぞれ次段に入力する。
すなわち、３入力のＡＮＤ−ＯＲ複合回路２１２＿０は、キャリー生成信号ｇ０とキャリー伝播信号ｐ１との論理積とキャリー生成信号ｇ１との論理和を、局所的キャリー生成信号ｇ１＿０として出力する。
３入力のＡＮＤ−ＯＲ複合回路２１２＿ｋ（ここで、ｋは、１から１２までの整数を示す）は、前段から出力される局所的キャリー生成信号ｇｋ＿０とキャリー伝播信号ｐ（ｋ＋１）との論理積とキャリー生成信号ｇ（ｋ＋１）との論理和を、局所的キャリー生成信号ｇ（ｋ＋１）＿０として出力する。
局所的キャリー生成信号ｇ１＿０，…，ｇ１３＿０は、次式で表される。
【００７８】
【数１４】
2005202885.tif 000016
【００７９】
ＡＮＤ−ＯＲ複合回路２１１＿０は、キャリー信号ＣＩＮとキャリー伝播信号ｐ０との論理積とキャリー生成信号ｇ０との論理和を、第２桁へのキャリー信号ｃ０として出力する。
ＡＮＤ−ＯＲ複合回路２１１＿ｋ（ここで、ｋは、１から１２までの整数を示す）は、キャリー信号ＣＩＮと局所的キャリー伝播信号ｐｋ＿０との論理積と局所的キャリー生成信号ｇｋ＿０との論理和を、第（ｋ＋１）桁へのキャリー信号ｃｋとして出力する。
キャリー信号ｃｋは次式で表される。
【００８０】
【数１５】
2005202885.tif 000017
【００８１】
排他的ＯＲ回路２１３＿０は、キャリー信号ＣＩＮとキャリー伝播信号ｐ０との排他的論理和を、第１桁の加算結果ｓ０として出力する。
排他的ＯＲ回路２１３＿ｋ（ここで、ｋは、１から１２までの整数を示す）は、キャリー信号ｃ（ｋ−１）とキャリー伝播信号ｐｋとの排他的論理和を、第（ｋ＋１）桁の加算結果ｓｋとして出力する。
【００８２】
［ＣＩＡ２０２］
ＣＩＡ２０２は、論理演算部１００から出力される第１７桁〜第３１桁のキャリー伝播信号ｐ１６〜ｐ３０およびキャリー生成信号ｇ１６〜ｇ３０と、キャリー出力回路２０７より出力される第１７桁へのキャリー信号ｃ１５Ａとを入力し、これに応じた加算結果ｓ１６〜ｓ３０を出力する。
ＣＩＡ２０２は、第１７桁〜第３１桁の信号（ｐ１６〜ｐ３０，ｇ１６〜ｇ３０）の入力とともに下位側から上位側に向かって局所的なキャリー生成信号およびキャリー伝播信号を順次に伝播させる回路を有しており、この局所的キャリー生成信号およびキャリー伝播信号と下位からのキャリー信号ｃ１５Ａとに応じて、各桁の加算結果ｓ１６〜ｓ３０を算出する。
【００８３】
なお、ＣＩＡ２０２の回路構成は、例えば図３に示すＣＩＡ２０１と同様な構成を１６ビットに拡張したものでも良い。
すなわち、図３と同様な回路を１６ビットに拡張し、その下位１５ビットの回路には、第１桁〜第１５桁の信号（ｐ０〜ｐ１４，ｇ０〜ｇ１４）およびキャリー信号ＣＩＮの代わりに、第１７桁〜第３０桁の信号（ｐ１６〜ｐ２９，ｇ１６〜ｇ２９）およびキャリー信号ｃ１５Ａを入力する。拡張した１６ビット目の回路には、第３１桁の信号（ｐ３０，ｇ３０）と下位からの信号（局所的キャリー伝播信号、局所的キャリー生成信号、キャリー信号）を入力する。このような回路により、第１７桁〜第３１桁の各桁のキャリー信号ｃ１６〜ｃ３０と加算結果ｓ１６〜ｓ３１を得ることができる。
【００８４】
［ＣＳＡ２０３］
ＣＳＡ２０３は、キャリー信号ｃ３０が‘１’と‘０’の場合における第３２桁〜第４０桁の各桁の加算値を予め算出し、当該算出した２通りの加算値から、キャリー信号ｃ３０の値に応じて選択した一方を、加算結果ｓ３１〜ｓ３９として出力する。
また、これらの加算値とともに予め算出される第３９桁および第４０桁のキャリーを用いて、キャリー信号ｃ３０が‘０’，‘１’の場合における４０ビットモードのオーバーフローの予測信号ＳＣ０，ＳＣ１をそれぞれ算出する。
【００８５】
図４は、ＣＳＡ２０３の構成の一例を示すブロック図である。
図４に例示するＣＳＡ２０３は、キャリー信号ｃ３０が‘０’の場合における加算値ｓ３１＿０，…，ｓ３９＿０を算出する全加算器２３０＿３１，…，２３０＿３９と、キャリー信号ｃ３０が‘１’の場合における加算値ｓ３１＿１，…，ｓ３９＿１を算出する全加算器２３１＿３１，…，２３１＿３９と、加算結果ｓ３１，…，ｓ３９を出力するセレクタ２３２＿３１，…，２３２＿３９と、オーバーフローの予測信号ＳＣ０，ＳＣ１を出力する排他的ＮＯＲ回路２３３＿０，２３３＿１とを有する。
【００８６】
全加算器２３０＿３１，…，２３０＿３９には、第３２桁から第４０桁までのキャリー伝播信号およびキャリー生成信号（ｐ３１およびｇ３１，…，ｐ３９およびｇ３９）がそれぞれ入力される。
また、全加算器２３０＿３１，…，２３０＿３９は、この順序で縦続に接続されており、初段の全加算器２３０＿３１にはキャリー信号として‘０’の信号が入力され、これに続く各段の全加算器には、前段で算出されたキャリー信号が入力される。
【００８７】
全加算器２３１＿３１，…，２３１＿３９には、第３２桁から第４０桁までのキャリー伝播信号およびキャリー生成信号（ｐ３１およびｇ３１，…，ｐ３９およびｇ３９）がそれぞれ入力される。
また、全加算器２３１＿３１，…，２３１＿３９は、この順序で縦続に接続されており、初段の全加算器２３０＿３１にはキャリー信号として‘１’の信号が入力され、これに続く各段の全加算器には、前段で算出されたキャリー信号が入力される。
【００８８】
図５は、上述した全加算器（２３０＿３１〜２３０＿３９、２３１＿３１〜２３１＿３９）の構成の一例を図解したブロック図である。
図５に例示する全加算器は、排他的ＯＲ回路２３３およびＡＮＤ−ＯＲ複合回路２３４を有する。
記号ｐ，ｇ，ｃｉｎは全加算器に入力されるキャリー伝播信号，キャリー生成信号，キャリー信号をそれぞれ示し、記号ｓ，ｃｏｕｔは全加算器から出力される加算値，キャリー信号をそれぞれ示す。
【００８９】
排他的ＯＲ回路２３３は、前段の全加算器からのキャリー信号ｃｉｎとキャリー伝播信号ｐとの排他的論理和を、加算値ｓとして出力する。
ＡＮＤ−ＯＲ複合回路２３４は、キャリー信号ｃｉｎとキャリー伝播信号ｐとの論理積とキャリー生成信号ｇとの論理和を、キャリー信号ｃｏｕｔとして後段の全加算器に出力する。
【００９０】
セレクタ２３２＿ｊ（ここで、ｊは３１から３９までの整数を示す）は、キャリー信号ｃ３０を‘０’と仮定した全加算器２３０＿ｊの加算結果ｓｊ＿０と、キャリー信号ｃ３０を‘１’と仮定した全加算器２３１＿ｊの加算結果ｓｊ＿１とを入力し、キャリー信号ｃ３０の値に応じて選択した一方の信号を加算結果ｓｊとして出力する。
【００９１】
［ＣＬＡ２０４］
ＣＬＡ２０４は、第１５桁から第１６桁へのキャリー信号ｃ１４を、第１桁から第１５桁までのキャリー伝播信号ｐ０〜ｐ１４およびキャリー生成信号ｇ０〜ｇ１４と、第１桁に対して入力されるキャリー信号ＣＩＮとに基づいて生成する。
このＣＬＡ２０４と、図２に例示する演算ユニット１００＿０〜１００＿１４とを含んだ回路は、第１の発明における第１のキャリー信号生成回路の一実施形態である。
【００９２】
図６は、ＣＬＡ２０４の構成の一例を図解したブロック図であり、これに関連するＣＩＡ２０５および排他的ＮＯＲ回路２０６も同図に図示している。
図６に例示するＣＬＡ２０４は、キャリー信号出力回路２４０，２４７と、キャリー生成信号出力回路２４１，…，２４３と、キャリー伝播信号出力回路２４４，…，２４６とを有する。
【００９３】
キャリー信号出力回路２４０は、次式で表される第３桁から第４桁へのキャリー信号ｃ２を生成する。
【００９４】
【数１６】
2005202885.tif 000018
【００９５】
キャリー生成信号出力回路２４１，２４２，２４３は、キャリー生成信号Ｇ６＿３，Ｇ１０＿７，Ｇ１４＿１１をそれぞれ生成する。
キャリー生成信号Ｇ（ｊ＋３）＿ｊ（ここで、ｊは整数３，７，または１１を示す）は、４ビットの入力データ［ａｊ，…，ａ（ｊ＋３）］および［ｂｊ，…，ｂ（ｊ＋３）］を加算した場合に、この４ビットに対する下位からのキャリー信号Ｃ（ｊ−１）に依存せずに、上位へのキャリー信号ｃ（ｊ＋３）が‘１’になるか否かを示す信号であり、この信号が‘１’の場合、下位からのキャリーに依らずキャリー信号ｃ（ｊ＋３）は‘１’になる。
キャリー生成信号Ｇ（ｊ＋３）＿ｊは式（６）で表される。
【００９６】
キャリー伝播信号出力回路２４４，２４５，２４６は、キャリー伝播信号Ｐ６＿３，Ｐ１０＿７，Ｐ１４＿１１をそれぞれ生成する。
キャリー伝播信号Ｐ（ｊ＋３）＿ｊ（ここで、ｊは整数３，７，または１１を示す）は、４ビットの入力データ［ａｊ，…，ａ（ｊ＋３）］および［ｂｊ，…，ｂ（ｊ＋３）］を加算した場合に、この４ビットに対する下位からのキャリー信号Ｃ（ｊ−１）に依存して、上位へのキャリー信号ｃ（ｊ＋３）が変化するか否かを示す信号であり、この信号が‘１’の場合、下位からのキャリーに依存して上位へのキャリー信号ｃ（ｊ＋３）は‘１’または‘０’に変化する。
キャリー伝播信号Ｐ（ｊ＋３）＿ｊは式（７）で表される
【００９７】
キャリー信号出力回路２４７は、キャリー信号ｃ２、キャリー生成信号Ｇ１１＿０，Ｇ１５＿０、キャリー伝播信号Ｐ６＿３，Ｐ１０＿７，Ｐ１４＿１１に基づいて、次式で表されるキャリー信号ｃ１４を生成する。
【００９８】
【数１７】
2005202885.tif 000019
【００９９】
［ＣＩＡ２０５］
ＣＩＡ２０５は、ＣＬＡ２０４において生成された第１５桁から第１６桁へのキャリー信号ｃ１４と、第１６桁のキャリー伝播信号ｐ１５およびキャリー生成信号ｇ１５とに基づいて、通常モードにおける第１６桁から第１７桁へのキャリー信号ｃ１５を生成する。
このＣＩＡ２０５と、図２に例示する演算ユニット１００＿１５とを含んだ回路は、第１の発明における第２のキャリー信号生成回路の一実施形態である。
【０１００】
キャリー信号ｃ１５は、キャリー信号ｃ１４、キャリー伝播信号ｐ１５およびキャリー生成信号ｇ１５に基づいて、次式のように計算することができる。
【０１０１】
【数１８】
2005202885.tif 000020
【０１０２】
［排他的ＮＯＲ回路２０６］
排他的ＮＯＲ回路２０６は、ＣＬＡ２０４より出力されるキャリー信号ｃ１４と、ＣＩＡ２０５より出力されるキャリー信号ｃ１５との排他的反転論理和を演算する。既に述べた式（１）の関係より、排他的ＮＯＲ回路２０６の演算結果はオーバーフロー検出信号ＯＶＦ１６となる。
この排他的ＮＯＲ回路２０６は、第１の発明における論理演算回路の一実施形態である。
【０１０３】
［キャリー信号出力回路２０７］
キャリー信号出力回路２０７は、第１７桁へのキャリー信号ｃ１５Ａとして、デュアルモードの場合、外部より供給されるキャリー信号Ｃｄｕａｌを出力し、通常モードの場合、下位桁からのキャリー信号ｃ１５を出力する。
【０１０４】
モード指定信号Ｍｄｕａｌが‘１’の場合にデュアルモードになり、当該信号が‘０’の場合に通常モードになるものとすると、キャリー信号ｃ１５Ａは次式で表される。
【０１０５】
【数１９】
2005202885.tif 000021
【０１０６】
式（２６）に式（２５）を代入して整理すると、キャリー信号ｃ１５Ａは次式のように表される。
【０１０７】
【数２０】
2005202885.tif 000022
【０１０８】
上式の関係から、キャリー信号ｃ１５の代わりにキャリー信号ｃ１４、キャリー伝播信号ｐ１５およびキャリー生成信号ｇ１５を用いても、キャリー信号ｃ１５Ａを生成できることが分かる。
【０１０９】
図７は、キャリー信号出力回路２０７の構成の一例を示すブロック図である。
図７に例示するキャリー信号出力回路２０７は、ＮＯＴ回路２７０と、ＡＮＤ回路２７１と、セレクタ２７２，２７３とを有する。
セレクタ２７２は、第１の発明における第１の選択回路の一実施形態である。
ＮＯＴ回路２７０、ＡＮＤ回路２７１、およびセレクタ２７３を含む回路は、第１の発明における第２の選択回路の一実施形態である。
【０１１０】
セレクタ２７２は、デュアルモードにおいてキャリー信号Ｃｄｕａｌを選択し、通常モードにおいてキャリー生成信号ｇ１５を選択する。すなわち、モード指定信号Ｍｄｕａｌが‘１’の場合にキャリー信号Ｃｄｕａｌを選択し、モード指定信号Ｍｄｕａｌが‘０’の場合にキャリー生成信号ｇ１５を選択する。
【０１１１】
ＮＯＴ回路２７０は、モード指定信号Ｍｄｕａｌを論理反転して出力する。
ＡＮＤ回路２７１は、ＮＯＴ回路２７０の出力信号とキャリー伝播信号ｐ１５との論理積を演算し、その演算結果をセレクタ２７３のコントロール信号として出力する。
【０１１２】
セレクタ２７３は、ＡＮＤ回路２７１の出力信号が‘０’の場合、セレクタ２７２で選択された信号を選択し、ＡＮＤ回路２７１の出力信号が‘１’の場合、キャリー信号ｃ１４を選択する。
【０１１３】
図７に示すキャリー信号出力回路２０７の動作は次のようになる。
【０１１４】
デュアルモードすなわちモード指定信号Ｍｄｕａｌが‘１’の場合、ＡＮＤ回路２７１の出力信号が‘０’になるため、セレクタ２７２ではキャリー信号Ｃｄｕａｌが選択され、セレクタ２７３ではセレクタ２７２の出力信号が選択される。したがって、この場合、キャリー信号ｃ１５Ａとしてキャリー信号Ｃｄｕａｌが出力される。
【０１１５】
通常モードすなわちモード指定信号Ｍｄｕａｌが‘０’の場合、セレクタ２７２では常にキャリー生成信号ｇ１５が選択される。また、ＡＮＤ回路２７１の出力信号はキャリー伝播信号ｐ１５と等しくなる。したがって、この場合、キャリー伝播信号ｐ１５が‘１’であればキャリー信号ｃ１４が、キャリー伝播信号ｐ１５が‘０’であればキャリー生成信号ｇ１５が、キャリー信号ｃ１５Ａとして出力される。
一方、キャリー信号ｃ１５は、式（２５）から分かるように、キャリー伝播信号ｐ１５が‘１’の場合にキャリー生成信号ｇ１５が‘０’になるためキャリー信号ｃ１４と等しくなり、キャリー伝播信号ｐ１５が‘０’の場合にキャリー生成信号ｇ１５と等しくなる。
したがって、通常モードの場合、キャリー信号ｃ１５Ａとしてキャリー信号ｃ１５が出力される。
【０１１６】
［ＣＬＡ２０８］
ＣＬＡ２０８は、第３１桁から第３２桁へのキャリー信号ｃ３０を、第１７桁から第３１桁までのキャリー伝播信号ｐ１６〜ｐ３０およびキャリー生成信号ｇ１６〜ｇ３０と、第１７桁に対して入力されるキャリー信号ｃ１５Ａとに基づいて生成する。
【０１１７】
ＣＬＡ２０８は、例えば図６に示すＣＬＡ２０４と同様な構成によって実現可能である。すなわち、第１桁〜第１５桁の信号（ｐ０〜ｐ１４，ｇ０〜ｇ１４）およびキャリー信号ＣＩＮの代わりに、第１７桁〜第３１桁の信号（ｐ１６〜ｐ３０，ｇ１６〜ｇ３０）およびキャリー信号ｃ１５Ａを図６と同様な回路に入力することにより、キャリー信号ｃ３０を得ることができる。
【０１１８】
［オーバーフロー検出信号出力回路２０９］
オーバーフロー検出信号出力回路２０９は、４０ビットモードの場合、第４０桁を符号桁とした加算演算におけるオーバーフローの有無を示し、３２ビットモードの場合、第３２桁を符号桁とした加算演算におけるオーバーフローの有無を示す、オーバーフロー検出信号ＯＶＦを出力する。
【０１１９】
４０ビットモードの場合、オーバーフロー検出信号出力回路２０９は、オーバーフロー検出信号ＯＶＦとして式（１４）で表されるオーバーフロー検出信号ＯＶＦ４０を出力する。
この場合、オーバーフロー検出信号出力回路２０９は、ＣＳＡ２０３から出力されるオーバーフローの予測信号ＳＣ０，ＳＣ１の一方をキャリー信号ｃ３０の値に応じて選択して出力する。
【０１２０】
一方、３２ビットモードの場合、オーバーフロー検出信号出力回路２０９は、オーバーフロー検出信号ＯＶＦとして式（１５）で表されるオーバーフロー検出信号ＯＶＦ３２を出力する。
【０１２１】
式（１５）における第３２桁の加算結果ｓ３１を、キャリー信号ｃ３０とキャリー伝播信号ｐ３１との排他的論理和に置き換えると、式（１５）は次式のように変形される。
【０１２２】
【数２１】
2005202885.tif 000023
【０１２３】
ただし、上式における変数ＡＬＬ１およびＡＬＬ０は次式で表される。
【０１２４】
【数２２】
2005202885.tif 000024
【０１２５】
式（２９）から分かるように、加算結果ｓ３２〜ｓ３９が全て‘１’でなければ変数ＡＬＬ１は‘０’になる。変数ＡＬＬ１が仮に‘１’であっても、加算結果ｓ３１が‘１’でなければ、式（２８）において変数ＡＬＬ１を含む項は全て‘０’になる。すなわち、加算結果ｓｊ（ここで、ｊは３２〜３９の整数を示す）が仮に‘１’であっても、その前桁の加算結果ｓ（ｊ−１）が‘１’でなければ、式（２８）の結果は変数ＡＬＬ１が‘０’の場合と同じになる。
ここで、前桁の加算結果ｓ（ｊ−１）が‘１’であると仮定した場合における加算結果ｓｊを‘ｐ１＿ｓｊ’とすると、この加算結果ｐ１＿ｓｊは次式で表される。
【０１２６】
【数２３】
2005202885.tif 000025
【０１２７】
式（２９）における加算結果ｓ３２〜ｓ３９を上式の加算結果ｐ１＿ｓ３２〜ｐ１＿ｓ３９に置き換えたものを‘ｐＡＬＬ１’とすると、式（２８）において変数ＡＬＬ１を次式に表される変数ｐＡＬＬ１へ置き換えても、式（２８）の結果は変化しない。
【０１２８】
【数２４】
2005202885.tif 000026
【０１２９】
また、式（３０）から分かるように、加算結果ｓ３２〜ｓ３９が全て‘０’でなければ変数ＡＬＬ０は‘０’になる。変数ＡＬＬ０が仮に‘１’であっても、加算結果ｓ３１が‘０’でなければ、式（２８）において変数ＡＬＬ０を含む項は全て‘０’になる。すなわち、加算結果ｓｊ（ここで、ｊは３２〜３９の整数を示す）が仮に‘０’であっても、その前桁の加算結果ｓ（ｊ−１）が‘０’でなければ、式（２８）の結果は変数ＡＬＬ０が‘０’の場合と同じになる。
ここで、前桁の加算結果ｓ（ｊ−１）が‘０’であると仮定した場合における加算結果ｓｊを‘ｐ０＿ｓｊ’とすると、この加算結果ｐ０＿ｓｊは次式で表される。
【０１３０】
【数２５】
2005202885.tif 000027
【０１３１】
式（３０）における加算結果ｓ３２〜ｓ３９を上式の加算結果ｐ０＿ｓ３２〜ｐ０＿ｓ３９に置き換えたものを‘ｐＡＬＬ０’とすると、式（２８）において変数ＡＬＬ０を次式に表される変数ｐＡＬＬ０へ置き換えても、式（２８）の結果は変化しない。
【０１３２】
【数２６】
2005202885.tif 000028
【０１３３】
したがって、式（２８）に示すオーバーフロー検出信号ＯＦＶ３２は、次式で表すことができる。
【０１３４】
【数２７】
2005202885.tif 000029
【０１３５】
式（３５）の関係を用いると、オーバーフロー検出信号出力回路２０９は、キャリー信号ｃ３０の到着を待たずに式（３５）における第１項および第２項の括弧内の計算を実行し、この計算結果の一方をキャリー信号ｃ３０に応じて切り替えて出力する構成にすることができる。
【０１３６】
図８は、オーバーフロー検出信号出力回路２０９の構成の一例を示すブロック図であり、これに関連するＣＳＡ２０３も同図に図示している。
図８に例示するオーバーフロー検出信号出力回路２０９は、第１のビット値判定回路２９０と、第２のビット値判定回路２９１と、セレクタ２９２，…，２９６とを有する。
第１のビット値判定回路２９０は、第２の発明における第１のビット値判定回路の一実施形態である。
第２のビット値判定回路２９１は、第２の発明における第２のビット値判定回路の一実施形態である。
セレクタ２９２は、第２の発明における第１の選択回路の一実施形態である。
セレクタ２９３は、第２の発明における第２の選択回路の一実施形態である。
セレクタ２９６は、第２の発明における第３の選択回路の一実施形態である。
セレクタ２９４は、第２の発明および第３の発明における第４の選択回路の一実施形態である。
セレクタ２９５は、第２の発明および第３の発明における第５の選択回路の一実施形態である。
ＣＳＡ２０３は、第２の発明および第３の発明におけるオーバーフロー予測回路の一実施形態である。
【０１３７】
第１のビット値判定回路２９０は、所定の下位桁（通常モードにおいて第１桁、デュアルモードにおいて第１７桁）から第４０桁までを加算した結果における第３２桁のビット信号ｓ３１が‘０’と仮定した場合に、この加算結果における第３３桁から第４０桁までのビット信号ｓ３２〜ｓ３９が全て‘０’になるか否かを判定する。そして、この判定の結果を示す判定信号として、ビット信号ｓ３２〜ｓ３９が全て‘０’になる場合に‘１’、当該信号が全て‘０’にならない場合に‘０’となる判定信号を出力する。
すなわち、第１のビット値判定回路２９０は、式（３４）に示す変数ｐＡＬＬ０の算出結果を上述の判定信号として出力する。
【０１３８】
図９は、第１のビット値判定回路２９０の構成の一例を示すブロック図である。
第１のビット値判定回路２９０は、例えば図９に示すように、ＯＲ回路２９０＿１，…，２９０＿８と、排他的ＯＲ回路２９０＿９，…，２９０＿１６と、ＮＯＲ回路２９０＿１７とを有する。
ＯＲ回路２９０＿１，…，２９０＿８、および排他的ＯＲ回路２９０＿９，…，２９０＿１６を含む回路は、第２の発明における第１のビット値算出回路の一実施形態である。
ＮＯＲ回路２９０＿１７は、第２の発明における第１の判定回路の一実施形態である。
【０１３９】
ＯＲ回路２９０＿ｊ（ここで、ｊは１から８までの整数を示す）は、入力ビット信号ａ（ｊ＋３０）とｂ（ｊ＋３０）との論理和を出力する。
排他的ＯＲ回路２９１＿（ｊ＋８）は、ＯＲ回路２９０＿ｊの出力信号とキャリー伝播信号ｐ（ｊ＋３１）との排他的論理和を出力する。この出力信号は、加算結果ｓ（ｊ＋３０）が‘０’であると仮定した場合における加算結果ｐ０＿ｓ（ｊ＋３１）と等しい。
ＮＯＲ回路２９０＿１７は、排他的ＯＲ回路２９０＿９〜２９０＿１６の出力信号の反転論理和を演算し、これを変数ｐＡＬＬ０の算出結果として出力する。
【０１４０】
第２のビット値判定回路２９１は、所定の下位桁（通常モードにおいて第１桁、デュアルモードにおいて第１７桁）から第４０桁までを加算した結果における第３２桁のビット信号ｓ３１が‘１’と仮定した場合に、この加算結果における第３３桁から第４０桁までのビット信号ｓ３２〜ｓ３９が全て‘１’になるか否かを判定する。そして、この判定結果を示す信号として、ビット信号ｓ３２〜ｓ３９が全て‘１’になる場合に‘１’、当該信号が全て‘１’にならない場合に‘０’となる判定信号を出力する。
すなわち、第１のビット値判定回路２９１は、式（３２）に示す変数ｐＡＬＬ１の算出結果を上述の判定信号として出力する。
【０１４１】
図１０は、第２のビット値判定回路２９１の構成の一例を示すブロック図である。
第２のビット値判定回路２９１は、例えば図１０に示すように、排他的ＯＲ回路２９１＿１，…，２９１＿８と、ＡＮＤ回路２９１＿９とを有する。
排他的ＯＲ回路２９１＿１，…，２９１＿８を含む回路は、第２の発明における第２のビット値算出回路の一実施形態である。
ＡＮＤ回路２９１＿９は、第２の発明における第２の判定回路の一実施形態である。
【０１４２】
排他的ＯＲ回路２９１＿ｊ（ここで、ｊは１から８までの整数を示す）は、キャリー生成信号ｇ（ｊ＋３０）とキャリー伝播信号ｐ（ｊ＋３１）との排他的論理和を演算する。この演算結果は、加算結果ｓ（ｊ＋３０）が‘１’であると仮定した場合における加算結果ｐ１＿ｓ（ｊ＋３１）と等しい。
ＡＮＤ回路２９１＿９は、排他的ＯＲ回路２９１＿１〜２９１＿８の出力信号の論理積を演算し、これを変数ｐＡＬＬ１の算出結果として出力する。
【０１４３】
セレクタ２９２は、第３２桁のキャリー伝播信号ｐ３１に基づいて、第１のビット値判定回路２９０の判定信号または第２のビット値判定回路２９１の判定信号の何れか一方を選択する。
すなわち、第３２桁のキャリー伝播信号ｐ３１が‘１’の場合、第２のビット値判定回路２９１の判定信号（ｐＡＬＬ１）を選択し、キャリー伝播信号ｐ３１が‘０’の場合、第１のビット値判定回路２９０の判定信号（ｐＡＬＬ０）を選択する。
【０１４４】
セレクタ２９３は、キャリー伝播信号ｐ３１に基づいて、第１のビット値判定回路２９０の判定信号または第２のビット値判定回路２９１の判定信号のうち、セレクタ２９２で選択されない他方の判定信号を選択する。
すなわち、キャリー伝播信号ｐ３１が‘１’の場合、第１のビット値判定回路２９０の判定信号（ｐＡＬＬ０）を選択し、キャリー伝播信号ｐ３１が‘０’の場合、第２のビット値判定回路２９１の判定信号（ｐＡＬＬ１）を選択する。
【０１４５】
セレクタ２９４は、モード指定信号Ｍ４０に基づいて、セレクタ２９２の出力信号またはＣＳＡ２０３のオーバーフロー予測信号ＳＣ０を選択する。
すなわち、モード指定信号Ｍ４０が‘０’になる３２ビットモードにおいてセレクタ２９２の出力信号を選択し、モード指定信号Ｍ４０が‘１’になる４０ビットモードにおいてＣＳＡ２０３のオーバーフロー予測信号ＳＣ０を選択する。
【０１４６】
セレクタ２９５は、モード指定信号Ｍ４０に基づいて、セレクタ２９３の出力信号またはＣＳＡ２０３のオーバーフロー検出信号ＳＣ１を選択する。
すなわち、モード指定信号Ｍ４０が‘０’になる３２ビットモードにおいてセレクタ２９３の出力信号を選択し、モード指定信号Ｍ４０が‘１’になる４０ビットモードにおいてＣＳＡ２０３のオーバーフロー検出信号ＳＣ１を選択する。
【０１４７】
セレクタ２９６は、キャリー信号ｃ３０に基づいて、セレクタ２９４の出力信号またはセレクタ２９５の出力信号を選択し、当該選択結果をオーバーフロー検出信号ＯＶＦとして出力する。
すなわち、キャリー信号ｃ３０が‘０’の場合にセレクタ２９４の出力信号を選択し、キャリー信号ｃ３０が‘１’の場合にセレクタ２９５の出力信号を選択する。
【０１４８】
図８に示すオーバーフロー検出信号出力回路２０９の動作は次のようになる。
【０１４９】
４０ビットモードすなわちモード指定信号Ｍ４０が‘１’の場合、ＣＳＡ２０３において予測されるオーバーフロー予測信号ＳＣ０およびＳＣ１がそれぞれセレクタ２９４および２９５において選択され、セレクタ２９６に入力される。
キャリー信号ｃ３０がセレクタ２９６に到着すると、このキャリー信号ｃ３０の値に応じて、オーバーフロー予測信号ＳＣ０またはＳＣ１の一方がセレクタ２９６により選択され、オーバーフロー検出信号ＯＶＦとして出力される。
【０１５０】
３２ビットモードすなわちモード指定信号Ｍ４０が‘０’の場合、セレクタ２９６には、セレクタ２９４を介してセレクタ２９２の出力信号が入力されるとともに、セレクタ２９５を介してセレクタ２９３の出力信号が入力される。
また、キャリー伝播信号ｐ３１の値に応じて、セレクタ２９２および２９３の一方から第１のビット値判定回路２９０の判定信号（ｐＡＬＬ０）、他方から第２のビット値判定回路２９１の判定信号（ｐＡＬＬ１）が出力される。すなわち、キャリー伝播信号ｐ３１が‘１’の場合、セレクタ２９２から第２のビット値判定回路２９１の判定信号（ｐＡＬＬ１）、セレクタ２９３から第１のビット値判定回路２９０の判定信号（ｐＡＬＬ０）が出力され、キャリー伝播信号ｐ３１が‘０’の場合は上述と逆の信号がセレクタ２９２および２９３からそれぞれ出力される。
【０１５１】
キャリー信号ｃ３０がセレクタ２９６に到着すると、このキャリー信号ｃ３０の値に応じて、セレクタ２９２または２９３の一方の出力信号がセレクタ２９６により選択され、オーバーフロー検出信号ＯＶＦとして出力される。
すなわち、キャリー信号ｃ３０が‘０’の場合はセレクタ２９２の出力信号、キャリー信号ｃ３０が‘１’の場合はセレクタ２９３の出力信号が選択される。
【０１５２】
したがって、キャリー信号ｃ３０が‘０’でキャリー伝播信号ｐ３１が‘０’の場合およびキャリー信号ｃ３０が‘１’でキャリー伝播信号ｐ３１が‘１’の場合は、第１のビット値判定回路２９０の判定信号（ｐＡＬＬ０）がオーバーフロー検出信号ＯＶＦとして出力される。
キャリー信号ｃ３０が‘０’でキャリー伝播信号ｐ３１が‘１’の場合およびキャリー信号ｃ３０が‘１’でキャリー伝播信号ｐ３１が‘０’の場合は、第２のビット値判定回路２９１の判定信号（ｐＡＬＬ１）がオーバーフロー検出信号ＯＶＦとして出力される。
すなわち、式（３５）の関係を満たすオーバーフロー検出信号ＯＶＦが出力される。
【０１５３】
ここで、上述した構成を有する加算回路の動作について説明する。
【０１５４】
加算演算を行う場合、制御信号Ｓｃｏｎｔに所定の値が設定され、論理演算部１００からキャリー生成信号（ｇ０〜ｇ３９）およびキャリー伝播信号（ｐ０〜ｐ３９）が出力される。
【０１５５】
論理演算部１００よりこれらの信号（ｇ０〜ｇ３９，ｐ０〜ｐ３９）が出力されると、ＣＬＡ２０４においてキャリー信号ｃ１４の生成が実行され、これと並行して、ＣＩＡ２０１において第１桁〜第１５桁の加算結果ｓ０〜ｓ１４の算出が実行される。
また、ＣＳＡ２０３では、キャリー信号ｃ３０が‘０’と‘１’の場合における第３２桁〜第４０桁の加算結果（ｓ３１＿０〜ｓ３９＿０，ｓ３１＿１〜ｓ３９＿１）の算出およびオーバーフロー予測信号（ＳＣ０，ＳＣ１）の生成が実行される。
キャリー信号出力回路２０７では、セレクタ２７２および２７３における信号の選択が実行される。
オーバーフロー検出信号出力回路２０９では、第１のビット値判定回路２９０および第２のビット値判定回路２９１における判定信号の生成、セレクタ２９２〜２９５における信号の選択が、キャリー信号ｃ３０の到着を待たずに実行される。
【０１５６】
通常モードの場合、ＣＬＡ２０４から出力されるキャリー信号ｃ１４が確定すると、このキャリー信号ｃ１４がキャリー信号出力回路２０７のセレクタ２７３に到達し、第１７桁へのキャリー信号ｃ１５Ａが確定する。次いで、この確定したキャリー信号ｃ１５ＡがＣＩＡ２０２およびＣＬＡ２０８に入力されると、ＣＩＡ２０２における第１７桁〜第３１桁の加算結果ｓ０〜ｓ１４の算出と、ＣＬＡ２０８におけるキャリー信号ｃ３０の生成とが並行して実行される。
また、キャリー信号ｃ１４が確定すると、ＣＩＡ２０５において第１６桁の加算結果ｓ１５の算出が実行される。
【０１５７】
一方、デュアルモードの場合、ＣＬＡ２０４から出力されるキャリー信号ｃ１４とは無関係に第１７桁へのキャリー信号ｃ１５Ａがキャリー信号Ｃｄｕａｌとして確定するため、ＣＩＡ２０２における第１７桁〜第３１桁の加算結果ｓ１６〜ｓ３０の算出と、ＣＬＡ２０８におけるキャリー信号ｃ３０の生成は、第１桁〜第１４桁の処理とほぼ並行して実行される。
ただし、ＣＩＡ２０５における第１６桁の加算結果ｓ１５の算出については、通常モードと同様に、キャリー信号ｃ１４の確定を待って実行される。
また、ＣＩＡ２０５において加算結果ｓ１５の算出とともにキャリー信号ｃ１５の生成が実行され、このキャリー信号ｃ１５が確定すると、排他的ＮＯＲ回路２０６においてキャリー信号ｃ１４およびｃ１５の排他的論理和演算が実行され、デュアルモード時の下位側のオーバーフロー検出信号ＯＶＦ１６が生成される。
【０１５８】
ＣＬＡ２０８から出力されるキャリー信号ｃ３０が確定すると、その値に応じて、ＣＳＡ２０３により予め算出された２通りの加算結果の一方が選択され、加算結果ｓ３１〜ｓ３９として出力される。
また、確定したキャリー信号ｃ３０の値に応じて、オーバーフロー検出信号出力回路２０９のセレクタ２９６に入力される２つの信号の一方がオーバーフロー検出信号ＯＶＦとして出力される。この２つの信号は、キャリー信号ｃ３０の到着を待たずに生成される信号であるため、キャリー信号ｃ３０がセレクタ２９６に到着するとオーバーフロー検出信号ＯＶＦは素早く確定する。
【０１５９】
以上説明したように、本実施形態に係る加算回路によれば、入力データの第１桁から第１６桁までを加算した結果における第１５桁から第１６桁へのキャリー信号ｃ１４が、入力データの第１桁から第１５桁までのビット信号（ａ０〜ａ１５，ｂ０〜ｂ１５）と、第１桁に対して入力されるキャリー信号ＣＩＮとに基づいて生成され、ＣＬＡ２０４より出力される。次いで、この生成されたキャリー信号ｃ１４と、入力データの第１６桁のビット信号（ａ１５，ｂ１５）とに基づいて、第１６桁から第１７桁へのキャリー信号ｃ１５が生成され、ＣＩＡ２０５より出力される。そして、このキャリー信号ｃ１４およびｃ１５が排他的ＮＯＲ回路２０６において演算されることにより、オーバーフロー検出信号ＯＶＦ１６が生成される。
したがって、図１２に示すように、キャリー信号ｃ１１およびｃ１５を並行して生成する従来の方式に比べて、桁上げ先見回路の回路規模が小さくなり、駆動する素子の数が減るため、消費電力を削減することができる。また、図１２に示す桁上げ先見回路と比べて、１段目のキャリー生成信号出力回路やキャリー伝播信号出力回路に対して容量性の負荷となる２段目の回路の数を減らすことができるため、オーバーフロー検出信号ＯＶＦ１６の生成を高速化することができる。
【０１６０】
また、本実施形態に係る加算回路によれば、セレクタ２７２において、第１７桁から所定の上位桁（３２ビットモード時に第３２桁、４０ビットモード時に第４０桁）までの加算演算を実行するデュアルモードの場合にキャリー信号Ｃｄｕａｌが選択され、第１桁から上記所定の上位桁までの加算演算を実行する通常モードの場合に第１６桁のキャリー生成信号ｇ１５が選択される。セレクタ２７３では、デュアルモードの場合、セレクタ２７２の出力信号が選択され、通常モードの場合、第１６桁のキャリー伝播信号ｐ１５に応じてキャリー信号ｃ１４またはセレクタ２７２の出力信号の何れかが選択される。そして、このセレクタ２７３の選択結果が、上記第１７桁に対するキャリー信号ｃ１５ＡとしてＣＬＡ２０８やＣＩＡ２０２に出力される。
したがって、キャリー信号ｃ１５Ａを生成する信号の中で最も高速性を要求されるクリティカルな信号（ｃ１４）は、出力に到達するまでに１段のセレクタ（２７３）を通過するだけでよく、同様な信号（Ｇ１５＿０）が２段のセレクタ（１４，１７）を通過しなければならない図１３の回路に比べて、キャリー信号ｃ１５Ａの生成を高速化することができる。
【０１６１】
更に、本実施形態に係る加算回路によれば、第１のビット値判定回路２９０において、入力データの所定の下位桁（通常モード時に第１桁、デュアルモード時に第１７桁）から第４０桁までを加算した結果における第３２桁のビット信号が‘０’を有すると仮定した場合に、この加算結果における第３３桁から第４０桁までのビット信号ｓ３２〜ｓ３９が全て‘０’になるか否かが判定される。第２のビット値判定回路２９１では、上記加算結果における第３２桁のビット信号が‘１’を有すると仮定した場合に、上記加算結果における第３３桁から第４０桁までのビット信号ｓ３２〜ｓ３９が全て‘１’になるか否かが判定される。セレクタ２９２では、第３２桁のキャリー伝播信号ｐ３１に基づいて、第１のビット値判定回路２９０の判定信号（ｐＡＬＬ０）または第２のビット値判定回路２９１の判定信号（ｐＡＬＬ１）の何れか一方が選択される。セレクタ２９３では、キャリー伝播信号ｐ３１に基づいて、第１のビット値判定回路２９０の判定信号（ｐＡＬＬ０）または第２のビット値判定回路２９１の判定信号（ｐＡＬＬ１）のうち、セレクタ２９２で選択されない他方の判定信号が選択される。そして、３２ビットモードの場合、セレクタ２９６では、第３１桁から第３２桁へのキャリー信号ｃ３０に基づいて、セレクタ２９２またはセレクタ２９３の何れかにおいて選択された判定信号が選択され、当該選択結果が３２ビットモード時のオーバーフロー検出信号ＯＶＦとして出力される。
したがって、最も遅延する信号であるキャリー信号ｃ３０の確定を待つことなく、最終段のセレクタ２９６の入力信号までを生成することが可能であり、キャリー信号ｃ３０が確定した場合にはセレクタ２９６のコントロールのみでオーバーフロー検出信号ＯＶＦを確定させることができる。したがって、キャリー信号ｃ３０が値の確定後に幾つもの回路を通過する必要がある図１４に示す回路に比べて、３２ビットモード時のオーバーフロー検出信号ＯＶＦを大幅に高速化することができる。
【０１６２】
また、本実施形態によれば、ＣＳＡ２０３において、キャリー信号ｃ３０が‘０’となる第１の場合およびキャリー信号ｃ３０が‘１’となる第２の場合のそれぞれについて、４０ビットモード時にオーバーフローが発生するか否かが予測され、その予測信号ＳＣ０およびＳＣ１が生成される。セレクタ２９４では、モード指定信号Ｍ４０に基づいて、セレクタ２９２より出力される判定信号または上記第１の場合の予測信号ＳＣ０が選択される。セレクタ２９５では、モード指定信号Ｍ４０に基づいて、セレクタ２９３より出力される判定信号または上記第２の場合の予測信号ＳＣ１が選択される。そして、セレクタ２９６では、キャリー信号ｃ３０に基づいて、セレクタ２９４または２９５の何れかにおいて選択された信号が選択される。
したがって、３２ビットモードおよび４０ビットモードの何れにおいても、キャリー信号ｃ３０の確定を待つことなく最終段のセレクタ２９６の入力信号までを生成することが可能であり、両モードのオーバーフローを高速に検出することができる。
【０１６３】
＜第２の実施形態＞
次に、本発明の第２の実施形態について述べる。
【０１６４】
図１１は、第２の実施形態に係るオーバーフロー検出信号出力回路２０９Ａの構成の一例を示すブロック図である。
本実施形態に係る加算回路は、第１の実施形態に係る上述した加算回路において、図８に示すオーバーフロー検出信号出力回路２０９を図１１に示するオーバーフロー検出信号出力回路２０９Ａに置き換えたものであり、その他の構成は上述した加算回路と同じである。
【０１６５】
図１１に例示するオーバーフロー検出信号出力回路２０９Ａは、オーバーフロー検出信号出力回路２０９と同じセレクタ２９２〜２９６を有するとともに、第１のビット値判定回路２９０および第２のビット値判定回路２９１の代わりとして、第１の判定回路２９７＿０、第２の判定回路２９８＿０、第３の判定回路２９７＿１、および第４の判定回路２９８＿１を有する。
なお、第１の判定回路２９７＿０は、第３の発明における第１の判定回路の一実施形態である。
第２の判定回路２９８＿０は、第３の発明における第２の判定回路の一実施形態である。
第３の判定回路２９７＿１は、第３の発明における第３の判定回路の一実施形態である。
第４の判定回路２９８＿１は、第３の発明における第４の判定回路の一実施形態である。
また、ＣＳＡ２０３は、第３の発明における第１の加算結果予測回路および第２の加算結果予測回路の一実施形態である。
【０１６６】
第１の判定回路２９７＿０は、ＣＳＡ２０３においてキャリー信号ｃ３０を‘０’と仮定して予め算出される加算値ｓ３２＿０〜ｓ３９＿０を入力し、これらが全て‘０’になる場合に‘１’、全て‘０’にならない場合に‘０’となる判定信号ＡＬＬ０＿０を出力する。
第２の判定回路２９８＿０は、この予測の加算値ｓ３２＿０〜ｓ３９＿０が全て‘１’になる場合に‘１’、全て‘１’にならない場合に‘０’となる判定信号ＡＬＬ１＿０を出力する。
【０１６７】
第３の判定回路２９７＿１は、ＣＳＡ２０３においてキャリー信号ｃ３０を‘１’と仮定して予め算出される加算値ｓ３２＿１〜ｓ３９＿１を入力し、これらが全て‘０’になる場合に‘１’、全て‘０’にならない場合に‘０’となる判定信号ＡＬＬ０＿１を出力する。
第４の判定回路２９８＿１は、この予測の加算値ｓ３２＿１〜ｓ３９＿１が全て‘１’になる場合に‘１’、全て‘１’にならない場合に‘０’となる判定信号ＡＬＬ１＿１を出力する。
【０１６８】
セレクタ２９２には、第１のビット値判定回路２９０の判定信号（ｐＡＬＬ０）の代わりに第１の判定回路２９７＿０の判定信号ＡＬＬ０＿０が入力され、第２のビット値判定回路２９１の判定信号（ｐＡＬＬ１）の代わりに第２の判定回路２９８＿０の判定信号ＡＬＬ１＿０が入力される。
セレクタ２９３には、第１のビット値判定回路２９０の判定信号（ｐＡＬＬ０）の代わりに第３の判定回路２９７＿１の判定信号ＡＬＬ０＿１が入力され、第２のビット値判定回路２９１の判定信号（ｐＡＬＬ１）の代わりに第４の判定回路２９８＿１の判定信号ＡＬＬ１＿１が入力される。
【０１６９】
その他、セレクタ２９２〜２９６の入力信号とその切り替え動作については、図８に示すオーバーフロー検出信号出力回路２０９と同様である。
【０１７０】
上述した構成を有するオーバーフロー検出信号出力回路２０９Ａによると、式（２８）の第１項における変数ＡＬＬ０およびＡＬＬ１を上述した判定信号ＡＬＬ０＿１およびＡＬＬ１＿１に置換するとともに、式（２８）の第２項における変数ＡＬＬ０およびＡＬＬ１を上述した判定信号ＡＬＬ０＿０およびＡＬＬ１＿０に置換して計算した信号が、３２ビットモードのオーバーフロー検出信号として得られる。
【０１７１】
式（２８）の第１項は、キャリー信号ｃ３０が‘１’でなければ‘０’になるため、キャリー信号ｃ３０を‘１’と仮定して得られる判定信号ＡＬＬ０＿１およびＡＬＬ１＿１を変数ＡＬＬ０およびＡＬＬ１に置き換えても、式（２８）の値は変わらない。また、式（２８）の第２項は、キャリー信号ｃ３０が‘０’でなければ‘０’になるため、キャリー信号ｃ３０を‘０’と仮定して得られる判定信号ＡＬＬ０＿０およびＡＬＬ１＿０を変数ＡＬＬ０およびＡＬＬ１に置き換えても、式（２８）の値は変わらない。
したがって、図１１に示すようにＣＳＡ２０３の予測値を利用する方法でも、３２ビットモードのオーバーフロー検出信号を得ることが可能である。
【０１７２】
また、図１１に示すオーバーフロー検出信号出力回路２０９Ａにおいても、キャリー信号ｃ３０の確定を待つことなく、最終段のセレクタ２９６の入力信号までを生成可能であり、３２ビットモード時におけるオーバーフローを高速に検出することができる。
【０１７３】
なお、本発明は上述した実施形態に限定されず、種々の改変が可能である。
【０１７４】
例えば、上述した実施形態において扱われる各種の信号のデータ長や、論理回路の構成などは説明上の一例であり、任意に変更可能である。
【０１７５】
また、加算結果を算出する加算器の構成や、桁上げ先見回路の構成も一例であり、他の種々の構成に変更可能である。
【図面の簡単な説明】
【０１７６】
【図１】本発明の第１の実施形態に係る加算回路の構成の一例を示すブロック図である。
【図２】論理演算部１００に含まれる各桁の演算ユニットの構成例を示すブロック図である。
【図３】キャリー・インクリメント・アダーの構成の一例を示すブロック図である。
【図４】キャリー・セレクト・アダーの構成の一例を示すブロック図である。
【図５】キャリー・セレクト・アダーに含まれる全加算器の構成の一例を図解したブロック図である。
【図６】桁上げ先見回路の構成の一例を図解したブロック図である。
【図７】キャリー信号出力回路の構成の一例を示すブロック図である。
【図８】オーバーフロー検出信号出力回路の構成の一例を示すブロック図である。
【図９】第１のビット値判定回路の構成の一例を示すブロック図である。
【図１０】第２のビット値判定回路の構成の一例を示すブロック図である。
【図１１】第２の実施形態に係るオーバーフロー検出信号出力回路の構成の一例を示すブロック図である。
【図１２】従来の加算回路において、下位１６ビットのオーバーフロー検出信号を生成する回路の構成例を示すブロック図である。
【図１３】従来の加算回路において、第１７桁へのキャリー信号を出力する回路の構成例を示すブロック図である。
【図１４】従来の加算回路において、上位側のオーバーフロー検出信号を生成する回路の構成例を示すブロック図である。
【符号の説明】
【０１７７】
１００…論理演算部、２００…加算部、２０１，２０２，２０５…キャリー・インクリメント・アダー（ＣＩＡ）、２０３…キャリー・セレクト・アダー（ＣＳＡ）、２０４，２０８…桁上げ先見回路（ＣＬＡ）、２０６，２９０＿９〜２９０＿１６，２９１＿１〜２９１＿８…排他的ＮＯＲ回路、２０７，２４０，２４７…キャリー信号出力回路、２０９，２０９Ａ…オーバーフロー検出信号出力回路、２３０＿０〜２０３＿３９，２３１＿３１〜２３１＿３９…全加算器、２４１〜２４３…キャリー生成信号出力回路、２４４〜２４６…キャリー伝播信号出力回路、２７０…ＮＯＴ回路、２７１，２９１＿９…ＡＮＤ回路、２９０＿１〜２９０＿８…ＯＲ回路、２９０＿１７…ＮＯＲ回路、２７２，２７３，２９２〜２９６…セレクタ、２９０…第１のビット値判定回路、２９１…第２のビット値判定回路、２９７＿０…第１の判定回路、２９８＿０…第２の判定回路、２９７＿１…第３の判定回路、２９８＿１…第４の判定回路
【図１】
2005202885.tif 000030
【図２】
2005202885.tif 000031
【図３】
2005202885.tif 000032
【図４】
2005202885.tif 000033
【図５】
2005202885.tif 000034
【図６】
2005202885.tif 000035
【図７】
2005202885.tif 000036
【図８】
2005202885.tif 000037
【図９】
2005202885.tif 000038
【図１０】
2005202885.tif 000039
【図１１】
2005202885.tif 000040
【図１２】
2005202885.tif 000041
【図１３】
2005202885.tif 000042
【図１４】
2005202885.tif 000043