(57)【要約】各々がそれぞれ下位部分と上位部分のような第１の部分と第２の部分に分割可能である少なくとも第１および第２の入力オペランドに算術演算を実行するための算術演算装置である。この算術演算装置は第１の演算回路、第２の演算回路、選択回路、および飽和回路を有する。桁上げ伝搬加算器を含むことが可能である第１の演算回路は、少なくとも暫定合計および桁上げ出力を発生させるために入力オペランドの第１の部分を処理する。二重加算器および事前の飽和検出器を含むことが可能である第２の演算回路は、１つまたは複数の暫定合計およびいくつかの飽和フラグを発生させるために入力オペランドの第２の部分を処理する。選択回路は、第１の演算回路の桁上げ出力に基づいて第２の演算回路の１つまたは複数の出力を選択するように構成される。飽和回路は第１の演算回路および選択回路の対応する出力部に連結された入力部を有し、算術演算の結果を発生させるように構成される。
2006528389.tif 000002
【特許請求の範囲】
【請求項１】
各々が第１の部分と第２の部分に分割可能である少なくとも第１および第２の入力オペランドに算術演算を実行するための算術演算装置であって、
前記入力オペランドの前記第１の部分を処理するように構成された第１の演算回路と、
前記入力オペランドの前記第２の部分を処理するように構成された第２の演算回路であって、前記入力オペランドの前記第２の部分から算出される１つまたは複数の暫定合計を利用して事前の飽和検出を実行するようにさらに構成された演算回路と、
前記第１の演算回路の桁上げ出力に基づいて前記第２の演算回路の複数の出力のうちの１つまたは複数を選択するように構成された選択回路と、
前記第１の演算回路および前記選択回路の対応する出力部に連結された入力部を有し、前記算術演算の結果を発生するように構成された飽和回路とを有する算術演算装置。
【請求項２】
前記算術演算が加算演算と減算演算のうちの１つを含む、請求項１に記載の算術演算装置。
【請求項３】
前記入力オペランドの所定の１つの前記第１および第２の部分が前記所定の入力オペランドのそれぞれの上位および下位の部分を含む、請求項１に記載の算術演算装置。
【請求項４】
前記入力オペランドの各々がｎビットを含み、それが前記下位部分についてはｋビットであり、前記上位部分についてはｎ−ｋビットである、請求項３に記載の算術演算装置。
【請求項５】
前記入力オペランドが混合型の数の形式であり、所定のオペランドの前記上位部分が少なくともｇ個の保護ビットおよび正負符号ビットを含み、ここでｎ−ｋ≧ｇ＋１である、請求項４に記載の算術演算装置。
【請求項６】
前記第１の演算回路が桁上げ伝搬加算器を含む、請求項１に記載の算術演算装置。
【請求項７】
前記第１の演算回路がｋビットの桁上げ伝搬加算器を含み、これがそれぞれの入力オペランドＡおよびＢの下位部分Ａ［ｋ−１：０］およびＢ［ｋ−１：０］を入力として受け取る、請求項５に記載の算術演算装置。
【請求項８】
前記桁上げ伝搬加算器が暫定合計Ｔ［ｋ−１：０］および桁上げ出力Ｃ［ｋ］を
｛Ｃ［ｋ］，Ｔ［ｋ−１：０］｝＝Ａ［ｋ−１：０］＋Ｂ［ｋ−１：０］
として計算し、ここで｛Ｃ，Ｔ｝がＣとＴが連結することを示す、請求項７に記載の算術演算装置。
【請求項９】
前記第２の演算回路が二重加算器および事前の飽和検出部分を含む、請求項１に記載の算術演算装置。
【請求項１０】
前記第２の演算回路が（ｎ−ｋ＋１）ビットの二重加算器を有し、これがそれぞれの入力オペランドＡおよびＢの上位部分Ａ［ｎ−１：ｋ］およびＢ［ｎ−１：ｋ］を入力として受け取り、少なくとも２つの暫定合計を計算するように構成される、請求項５に記載の算術演算装置。
【請求項１１】
前記二重加算器が次の２つの暫定合計、
Ｔ＿０［ｎ：ｋ−１］＝｛Ａ［ｎ−１］，Ａ［ｎ−１：ｋ］｝＋｛Ｂ［ｎ−１］，Ｂ［ｎ−１：ｋ］｝
Ｔ＿１［ｎ：ｋ−１］＝｛Ａ［ｎ−１］，Ａ［ｎ−１：ｋ］｝＋｛Ｂ［ｎ−１］，Ｂ［ｎ−１：ｋ］｝＋１
を計算する、請求項１０に記載の算術演算装置。
【請求項１２】
前記二重加算器によって計算された前記２つの暫定合計が、次の飽和フラグすなわちＳａｔ＋＿０，Ｓａｔ＋＿１，Ｓａｔ−＿０，およびＳａｔ−＿１の少なくともサブセットを計算する前記第２の演算回路の事前の飽和検出部分に入力として印加される、請求項１０に記載の算術演算装置。
【請求項１３】
前記飽和フラグＳａｔ＋＿０，Ｓａｔ＋＿１，Ｓａｔ−＿０，およびＳａｔ−＿１が、
Ｓａｔ＋＿０＝ｎｏｔ（Ｔ＿０［ｎ］）ａｎｄ（Ｔ＿０［ｎ−１］ｏｒＴ＿０［ｎ−２］ｏｒ．．．ｏｒＴ＿０［ｎ−ｇ−１］）
Ｓａｔ＋＿１＝ｎｏｔ（Ｔ＿１［ｎ］）ａｎｄ（Ｔ＿１［ｎ−１］ｏｒＴ＿１［ｎ−２］ｏｒ．．．ｏｒＴ＿１［ｎ−ｇ−１］）
Ｓａｔ−＿０＝（Ｔ＿０［ｎ］）ａｎｄ  ｎｏｔ（Ｔ＿０［ｎ−１］ａｎｄＴ＿０［ｎ−２］ａｎｄ．．．ａｎｄＴ＿０［ｎ−ｇ−１］）
Ｓａｔ−＿１＝（Ｔ＿１［ｎ］）ａｎｄ  ｎｏｔ（Ｔ＿１［ｎ−１］ａｎｄＴ＿１［ｎ−２］ａｎｄ．．．ａｎｄＴ＿１［ｎ−ｇ−１］）
として計算される、請求項１２に記載の算術演算装置。
【請求項１４】
前記飽和フラグＳａｔ＋＿０およびＳａｔ＋＿１が、
Ｓａｔ＋＿０＝Ｔ＿０［ｎ］ｏｒＴ＿０［ｎ−１］ｏｒＴ＿０［ｎ−２］ｏｒ．．．ｏｒＴ＿０［ｎ−ｇ］
Ｓａｔ＋＿１＝Ｔ＿１［ｎ］ｏｒＴ＿１［ｎ−１］ｏｒＴ＿１［ｎ−２］ｏｒ．．．ｏｒＴ＿１［ｎ−ｇ］
として計算される、請求項１２に記載の算術演算装置。
【請求項１５】
前記選択回路がマルチプレクサを含む、請求項１に記載の算術演算装置。
【請求項１６】
前記選択回路がマルチプレクサを含み、これが制御入力部で前記第１の演算回路の桁上げ伝搬加算器から桁上げ出力Ｃ［ｋ］を受け取り、前記第２の演算回路によって作り出される１つまたは複数の前記飽和フラグおよび暫定合計を複数の選択可能な入力部で受け取る、請求項１２に記載の算術演算装置。
【請求項１７】
前記マルチプレクサが、
（ｉ）前記桁上げ出力Ｃ［ｋ］＝０であるときに暫定合計Ｔ［ｎ−１：ｋ］＝Ｔ＿０［ｎ−１：ｋ］、および正の飽和ビットＳａｔ＋＝Ｓａｔ＋＿０と負の飽和ビットＳａｔ−＝Ｓａｔ−＿０のうちの少なくとも一方を出力し、
（ｉｉ）前記桁上げ出力Ｃ［ｋ］＝１であるときに暫定合計Ｔ［ｎ−１：ｋ］＝Ｔ＿１［ｎ−１：ｋ］、および正の飽和ビットＳａｔ＋＝Ｓａｔ＋＿１と負の飽和ビットＳａｔ−＝Ｓａｔ−＿１のうちの少なくとも一方を出力するように動作する、請求項１６に記載の算術演算装置。
【請求項１８】
前記飽和回路が前記選択回路によって供給される１つまたは複数の飽和ビットに基づいて、前記算術演算の前記結果が飽和させられるはずであるかどうかを判定する、請求項１に記載の算術演算装置。
【請求項１９】
受け取られる正の飽和ビットＳａｔ＋＝１であれば、正のオーバーフローが生じており、前記算術演算の前記結果を、指定された数の形式の最も正の表現可能な数へと飽和させることを前記飽和回路が判定する、請求項１８に記載の算術演算装置。
【請求項２０】
受け取られる負の飽和ビットＳａｔ−＝１であれば、負のオーバーフローが生じており、前記算術演算の前記結果を、指定された数の形式の最も負の表現可能な数へと飽和させることを前記飽和回路が判定する、請求項１８に記載の算術演算装置。
【請求項２１】
印加される制御信号に応答して少なくとも、飽和を伴った算術演算の第１のタイプと飽和を伴わない算術演算の第２のタイプとの間で制御可能な選択を提供するように構成される、請求項１に記載の算術演算装置。
【請求項２２】
印加される制御信号に応答して、加算演算の能力と減算演算の能力との間で制御可能な選択を提供するように構成される、請求項１に記載の算術演算装置。
【請求項２３】
印加される制御信号に応答して少なくとも、２の補数の算術演算と正負符号なしの算術演算との間で制御可能な選択を提供するように構成される、請求項１に記載の算術演算装置。
【請求項２４】
各々が第１の部分と第２の部分に分割可能である少なくとも第１および第２の入力オペランドに算術演算を実行するための方法であって、
第１の演算回路内で前記入力オペランドの前記第１の部分を処理するステップと、
前記入力オペランドの前記第２の部分から内部で計算される１つまたは複数の暫定合計を利用して事前の飽和検出を実行するように構成された第２の演算回路内で前記入力オペランドの前記第２の部分を処理するステップと、
前記第１の演算回路および前記第２の演算回路に連結された飽和回路内で前記算術演算の結果を生じさせるステップとを含み、
前記第１の演算回路の桁上げ出力に応答して、前記第２の演算回路の複数の出力のうちの１つまたは複数が前記飽和回路への印加のために選択される方法。
【請求項２５】
複数の算術演算装置と、
各々が第１の部分と第２の部分に分割可能である少なくとも第１および第２の入力オペランドに算術演算を実行するように構成された少なくとも１つの前記算術演算装置と、
前記入力オペランドの前記第１の部分を処理するように構成された第１の演算回路と、
前記入力オペランドの前記第２の部分を処理するように構成され、前記入力オペランドの前記第２の部分から内部で計算される１つまたは複数の暫定合計を利用して事前の飽和検出を実行するようにさらに構成された第２の演算回路と、
前記第１の演算回路の桁上げ出力に基づいて前記第２の演算回路の複数の出力のうちの１つまたは複数を選択するように構成された選択回路と、
前記第１の演算回路および前記選択回路の対応する出力部に連結された入力部を有し、前記算術演算の結果を発生させるように構成された飽和回路とを有する集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、本願明細書に参照で組み入れられる２００３年７月２３日にＭ．Ｊ．Ｓｃｈｕｌｔｅらの名前で提出された「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｔｗｏ’ｓ  Ｃｏｍｐｌｅｍｅｎｔ  Ａｄｄｉｔｉｏｎ  ｗｉｔｈ  Ｆａｓｔ  Ｓａｔｕｒａｔｉｏｎ」という表題の米国仮特許出願番号６０／４８９３４７号の優先権を主張するものである。
【０００２】
本発明は概してデジタル・データ・プロセッサの分野に関し、さらに特定するとデジタル信号プロセッサ（ＤＳＰ）または他のタイプのデジタル・データ・プロセッサに使用するための算術処理操作とそれに付随する処理回路に関する。
【背景技術】
【０００３】
殆どのＤＳＰおよびマルチメディア・プロセッサを含めたデジタル・データ・プロセッサは２進固定小数点の算術を使用し、演算は整数、小数、または正負符号なしの、もしくは２の補数の２進形式の混合された数で実行される。ＤＳＰおよびマルチメディアの用途は、プロセッサが算術を飽和させる処理と所定の２進形式の数字に算術をラップアラウンドする処理の両方を実行するように構成されることをしばしば必要とする。算術を飽和させる処理では、指定された数字形式で表わすには大き過ぎる計算結果はオーバーフロー状態につながり、最も正の数または最も負の数へと飽和させられる。算術をラップアラウンドする処理では、オーバーフローする結果は、指定された数字表現に適合し得ないいずれの数字も単純に破棄されるようにラップアラウンド処理される。
【０００４】
図１はデジタル・プロセッサに共通して使用される３つの範例の２進数形式を具体的に示している。
【０００５】
示された最初の形式は混合された数の形式であって、１つの正負符号ビット、ｇ個の保護ビット、およびｆ個の小数ビットを含む。保護ビットは中間計算でのオーバーフローの尤度を下げるために使用される付加的な整数ビットである。２進小数点は保護ビットと小数ビットとの間にある。オペランドを表現するための通常の４０ビットの混合型の数の形式は１つの正負符号ビット、８個の保護ビット、および３１個の小数ビットを含む。
【０００６】
第２の形式は小数形式であって、１つの正負符号ビットおよびｆ個の小数ビットを含むが保護ビットを含まない。この特定の形式での２進小数点は正負符号ビットと小数ビットとの間にある。オペランドのための通常の３２ビット小数形式は１つの正負符号ビットおよび３１個の小数ビットを含む。
【０００７】
第３の形式は符号拡張型小数形式であって、ｇ個の拡張ビット、１つの正負符号ビット、およびｆ個の小数ビットを含む。２進点は符号ビットと小数ビットの間にあり、拡張ビットは符号ビットと同等である。その結果、この形式は小数形式の飽和結果が符号拡張され、それにより、結果が混合型の数の形式と同じビット数を有するようになることを可能にする。
【０００８】
様々な用途で、混合型の数の形式、小数の形式、または符号拡張型小数形式でオペランドに演算を実行すること、および混合型の数の形式、小数の形式、または符号拡張型小数形式である飽和結果を作り出すことが有用である。
【０００９】
入力を受け入れ、混合型の数の形式、小数の形式、または符号拡張型小数形式の結果を作り出すことが可能な１つの加算器または他の算術装置を有することもやはり有用である。
【００１０】
オーバーフローの検出および２の補数の加算による飽和を実行するために当該技術で知られているいくつかの技法がある。例えば、入力および結果のオペランドがすべて同じ形式を使用するとき、入力および結果のオペランドの正負符号ビットを調べることによってオーバーフローがしばしば検出される。もしも入力の複数のオペランドが同じ正負符号を有し、結果の正負符号が異なっていればオーバーフローが生じており、その結果は飽和させられるはずであり、そうでない場合、オーバーフローは生じなかったと保証される。この同じ状態を検出するための他の方法は、正負符号ビットを出入りする桁上げを調べることである。もしも正負符号ビットに入る桁上げが正負符号ビットを出る桁上げと異なっていればオーバーフローが生じており、その結果は飽和させられるはずであり、そうでない場合、オーバーフローは生じなかったと保証される。入力および結果のオペランドが同じ形式を使用するときにこれらの技法は良好にはたらくけれども、入力および結果のオペランドが異なる形式を有するときにそれらは概して使用されることが不可能である。
【００１１】
入力のオペランドが混合型の数の形式であり、結果のオペランドが小数の形式もしくは符号拡張型小数形式であるときに２の補数の飽和加算を実行するための単刀直入のメカニズムは混合型の数の形式で結果を作り出すステップ、その後、オーバーフローが生じたかどうか、および最終結果が飽和させられるはずであるかどうかを判定するためにその結果および入力オペランドの正負符号ビットを調べるステップを含む。これは、オーバーフローが混合型の数の形式で生じるかどうかを検出する１つの回路、および混合型の数の結果が小数形式で厳密に表現されることが不可能であるかどうかを検出することが可能な第２の回路を有することによって達成されることが可能である。第１の回路は上述したように入力オペランドの正負符号ビットおよび結果の正負符号ビットを調べることによってオーバーフローを検出することが可能である。第２の回路は結果の正負符号ビットを結果の保護ビットと比較することによってオーバーフローを検出することが可能である。符号ビットがこれらの保護ビットのいずれとも異なる場合、オーバーフローが生じる。この手法はオーバーフローを正確に検出するけれども、オーバーフローが生じたかどうかを判定する前に結果の保護ビットが計算されなければならない。
【００１２】
図２は、入力オペランドが混合型の数の形式であり、最終結果が符号拡張型小数形式でｇ＝３およびｆ＝４である場合について２の補数の加算のいくつかの範例を示している。各々の式の左側は２の補数の値を与え、右側は１０進の値を与える。
【００１３】
第１の範例では２つの正の数０．５０と０．７５が合計される。それらの合計１．２５は符号拡張型小数形式として厳密に表わされることが不可能であるので、正のオーバーフローが生じ、合計は指定された形式では最も正の数へと飽和させられ、このケースでは０．９３７５である。
【００１４】
第２の範例では２つの負の数−０．２５と−２．００が合計される。それらの合計−２．２５は符号拡張型小数形式として厳密に表わされることが不可能であるので、負のオーバーフローが生じ、合計は指定された形式では最も負の数へと飽和させられ、このケースでは−１．００である。
【００１５】
第３の範例では正の数１．５０と負の数−２．００が合計される。それらの合計−０．５０は符号拡張型小数形式として厳密に表わされることが可能であるのでオーバーフローは起こらず、最終合計が飽和させられることはない。
【特許文献１】米国仮特許出願番号６０／４８９３４７号
【特許文献２】米国特許出願番号１０／２６９３７２号
【発明の開示】
【発明が解決しようとする課題】
【００１６】
上記に示されたように、図２に示されたタイプの２の補数の加算演算を実行するための従来式の技法は、それらの技法が、入力オペランドが結果と同じ形式であることを必要とするか、またはオーバーフローの検出が始まり得る前に保護ビットの計算を必要とするという点で問題が多い。
【００１７】
したがって、上述の従来式の技法の欠点を伴わずにデジタル・データ・プロセッサの中で加算もしくは他の演算を実行することが可能な改善された算術演算装置に関してニーズが存在する。
【課題を解決するための手段】
【００１８】
具体例となる実施形態の本発明は、入力オペランドが結果と同じ形式であることを必要とせずに、かつオーバーフローの検出が始まり得る前に保護ビットの計算をすることを必要とせずに２の補数または正負符号なしの加算もしくは減算を実行することが可能な算術演算装置を提供する。
【００１９】
本発明の一態様によると、算術演算装置は少なくとも第１および第２の入力オペランドに算術演算を実行するように動作する。入力オペランドの各々は、それぞれの下位の方の部分と上位の方の部分といったように第１の部分と第２の部分に分けられることが可能である。この算術演算装置は第１の演算回路、第２の演算回路、選択回路、および飽和回路を含む。桁上げ伝搬加算器を含むことが可能である第１の演算回路は暫定合計および桁上げ出力を発生させるために入力オペランドの第１の部分を処理する。二重加算器および事前の飽和検出器を含むことが可能である第２の演算回路は１つまたは複数の暫定合計およびいくつかの飽和フラグを発生させるために入力オペランドの第２の部分を処理する。選択回路は第１の演算回路の桁上げ出力に基づいて第２の演算回路の１つまたは複数の出力を選択するように構成される。飽和回路は、第１の演算回路および選択回路の対応する出力部へと連結された入力部を有し、算術演算の結果を発生させるように構成される。
【００２０】
具体例となる実施形態では、入力オペランドの各々はｎビットを含み、下位部分についてはｋビット、上位部分についてはｎ−ｋビットである。さらに特定すると、入力オペランドは混合型の数の形式であって、所定のオペランドの上位の方の部分は少なくともｇ個の保護ビットおよび正負符号ビットを含み、ここでｎ−ｋ≧ｇ＋１である。
【００２１】
具体例の実施形態の第１の演算回路はｋビットの桁上げ伝搬加算器を有し、これがそれぞれの入力オペランドＡおよびＢの下位の方の部分のＡ［ｋ−１：０］およびＢ［ｋ−１：０］を入力として受け取り、暫定合計Ｔ［ｋ−１：０］および桁上げ出力Ｃ［ｋ］を計算する。
【００２２】
具体例の実施形態の第２の演算回路は（ｎ−ｋ＋１）ビットの二重加算器を有し、これがそれぞれの入力オペランドＡおよびＢの上位の方の部分のＡ［ｎ−１：ｋ］およびＢ［ｎ−１：ｋ］を入力として受け取る。この二重加算器が暫定合計Ｔ＿０［ｎ：ｋ−１］およびＴ＿１［ｎ：ｋ−１］を計算し、それらが第２の演算回路の事前の飽和検出部分に入力として加えられる。この事前の飽和検出部分は正の飽和フラグＳａｔ＋＿０およびＳａｔ＋＿１、および／または負の飽和フラグＳａｔ−＿０およびＳａｔ−＿１といったいくつかの飽和フラグを計算する。
【００２３】
具体例の実施形態の選択回路はマルチプレクサを有し、これが制御入力部で第１の演算回路の桁上げ伝搬加算器から桁上げ出力Ｃ［ｋ］を受け取り、複数の選択可能な入力部で第２の演算回路によって作り出された１つまたは複数の飽和フラグおよび暫定合計を受け取る。このマルチプレクサは、（ｉ）桁上げ出力Ｃ［ｋ］＝０であるときに暫定合計Ｔ［ｎ−１：ｋ］＝Ｔ＿０［ｎ−１：ｋ］、および正の飽和ビットＳａｔ＋＝Ｓａｔ＋＿０と負の飽和ビットＳａｔ−＝Ｓａｔ−＿０のうちの少なくとも一方を出力し、（ｉｉ）桁上げ出力Ｃ［ｋ］＝１であるときに暫定合計Ｔ［ｎ−１：ｋ］＝Ｔ＿１［ｎ−１：ｋ］、および正の飽和ビットＳａｔ＋＝Ｓａｔ＋＿１と負の飽和ビットＳａｔ−＝Ｓａｔ−＿１のうちの少なくとも一方を出力するように動作する。
【００２４】
具体例の実施形態の飽和回路は算術演算の結果が飽和させられるかどうかを選択回路によって供給される１つまたは複数の飽和ビットに基づいて判定する。例えば、もしも受け取った正の飽和ビットＳａｔ＋＝１であれば、飽和回路は正のオーバーフローが生じていたと判定し、算術演算の結果を指定された数の形式の最も正の表現可能な数へと飽和させる。同様に、もしも受け取った負の飽和ビットＳａｔ−＝１であれば、飽和回路は負のオーバーフローが生じていたと判定し、算術演算の結果を指定された数の形式の最も負の表現可能な数へと飽和させる。
【００２５】
本発明の別の態様によると、算術演算装置は印加される制御信号に応答して飽和を伴った算術演算の少なくとも第１のタイプと飽和を伴わない算術演算の少なくとも第２のタイプとの間で制御可能な選択を提供するように構成されることが可能である。
【００２６】
本発明のさらに別の態様によると、算術演算装置は印加される制御信号に応答して加算演算の能力と減算演算の能力との間で制御可能な選択を提供するように構成されることが可能である。
【発明を実施するための最良の形態】
【００２７】
いくつかの範例の算術演算装置およびそれに付随する処理演算の背景で本発明が以下で説明されるであろう。しかしながら、本発明が特定の示された配列を必要とするわけではないこと、および他のタイプの処理回路を使用して実施されることが可能であることは理解されるはずである。
【００２８】
本願明細書に述べられるような所定の算術演算装置は集積回路の一部分として導入されることが可能である。例えば、この算術演算装置は１つまたは複数の集積回路として導入されるデジタル・データ・プロセッサの一要素を含むことが可能である。
【００２９】
図３は本発明の具体例の実施形態による算術演算装置３００を示している。この実施形態の算術演算装置３００は、それぞれのレジスタ３０２および３０４に保存された入力オペランドＡおよびＢの対を処理する。２つの入力オペランドＡおよびＢは下位の方の部分３０２Ｌ、３０４Ｌ、および上位の方の部分３０２Ｍ、２０４Ｍへと分割される。入力オペランドの各々はｎビットであると仮定され、下位の方の部分についてはｋビット、上位の方の部分についてはｎ−ｋビットである。この特定の実施形態については、入力オペランドは混合型の数の形式であり、所定のオペランドの最上位部分が少なくともｇ個の保護ビットおよび正負符号ビットを含むと仮定される（すなわちｎ−ｋ≧ｇ＋１）。もちろん、所定の実施形態の背景で本願明細書に関するこれらおよびその他の仮定は他の実施形態に当てはまる必要はない。例えば、入力オペランドは小数の形式、符号拡張型小数形式、または他の形式であることが可能である。
【００３０】
下位の方の部分Ａ［ｋ−１：０］およびＢ［ｋ−１：０］はｋビットの桁上げ伝搬加算器３０６に入力として供給される。桁上げ伝搬加算器３０６は本願明細書でさらに概して「第１の演算回路」と称されるものの範例である。桁上げ伝搬加算器３０６は暫定合計Ｔ［ｋ−１：０］および桁上げ出力ビットＣ［ｋ］を
｛Ｃ［ｋ］，Ｔ［ｋ−１：０］｝＝Ａ［ｋ−１：０］＋Ｂ［ｋ−１：０］
として計算し、ここで｛Ｃ，Ｔ｝はＣとＴが連結されることを示し、Ａ［ｋ−１：０］はＡのｋ個の最下位ビットを意味する（すなわちＡ［０］からＡ［ｋ−１］）。同時に、上位部分Ａ［ｎ−１：ｋ］およびＢ［ｎ−１：ｋ］は１ビットで符号拡張され、（ｎ−ｋ＋１）ビットの二重加算器および事前の飽和検出素子３０８に入力として供給される。素子３０８は本願明細書でさらに概して「第２の演算回路」と称されるものの範例である。素子３０８の（ｎ−ｋ＋１）ビットの二重加算器部分は次の２つの暫定合計、
Ｔ＿０［ｎ：ｋ−１］＝｛Ａ［ｎ−１］，Ａ［ｎ−１：ｋ］｝＋｛Ｂ［ｎ−１］，Ｂ［ｎ−１：ｋ］｝    （Ｃ［ｋ］＝０のときに使用される）
Ｔ＿１［ｎ：ｋ−１］＝｛Ａ［ｎ−１］，Ａ［ｎ−１：ｋ］｝＋｛Ｂ［ｎ−１］，Ｂ［ｎ−１：ｋ］｝＋１    （Ｃ［ｋ］＝１のときに使用される）
を計算する。
【００３１】
その結果、Ｔ＿１［ｎ：ｋ−１］は常にＴ＿０［ｎ：ｋ−１］よりも１大きい。Ａ［ｎ−１：ｋ］とＢ［ｎ−１：ｋ］を符号拡張することによって、暫定合計Ｔ＿０［ｎ］およびＴ＿１［ｎ］の最上位ビットは常に加算の結果に関して真の正負符号を含み、飽和に関して正確な方向を判定するために使用されることが可能である。
素子３０８の二重加算器部分の出力Ｔ＿０［ｎ：ｋ−１］およびＴ＿１［ｎ：ｋ−１］は素子３０８の事前の飽和検出部分に入力として供給され、それが次の飽和フラグを計算し、
Ｓａｔ＋＿０＝ｎｏｔ（Ｔ＿０［ｎ］）ａｎｄ（Ｔ＿０［ｎ−１］ｏｒＴ＿０［ｎ−２］ｏｒ．．．ｏｒＴ＿０［ｎ−ｇ−１］）
Ｓａｔ＋＿１＝ｎｏｔ（Ｔ＿１［ｎ］）ａｎｄ（Ｔ＿１［ｎ−１］ｏｒＴ＿１［ｎ−２］ｏｒ．．．ｏｒＴ＿１［ｎ−ｇ−１］）
Ｓａｔ−＿０＝（Ｔ＿０［ｎ］）ａｎｄ  ｎｏｔ（Ｔ＿０［ｎ−１］ａｎｄＴ＿０［ｎ−２］ａｎｄ．．．ａｎｄＴ＿０［ｎ−ｇ−１］）
Ｓａｔ−＿１＝（Ｔ＿１［ｎ］）ａｎｄ  ｎｏｔ（Ｔ＿１［ｎ−１］ａｎｄＴ＿１［ｎ−２］ａｎｄ．．．ａｎｄＴ＿１［ｎ−ｇ−１］）
ここでｇは保護ビットの数であり、Ｔ＿０［ｎ−ｇ−１］およびＴ＿１［ｎ−ｇ−１］は符号拡張型小数形式での暫定合計の正負符号ビットである。したがって、最上位暫定合計ビットＴ＿０［ｎ］またはＴ＿１［ｎ］がゼロであり、かついずれかの保護ビットまたは正負符号ビットが１であれば最終結果は最も正の数へと飽和させられるはずである。最上位暫定合計ビットＴ＿０［ｎ］またはＴ＿１［ｎ］が１であり、かついずれかの保護ビットまたは正負符号ビットがゼロであればそれは最も負の数へと飽和させられるはずである。
【００３２】
桁上げ伝搬加算器３０６から出る桁上げ出力Ｃ［ｋ］は選択信号としてマルチプレクサ３１０の制御入力部へと印加される。マルチプレクサ３１０は本願明細書でさらに概して「選択回路」と称されるものの範例である。マルチプレクサ３１０はＣ［ｋ］＝０のときにＴ［ｎ−１：ｋ］＝Ｔ＿０［ｎ−１：ｋ］、Ｓａｔ＋＝Ｓａｔ＋＿０、およびＳａｔ−＝Ｓａｔ−＿０を出力し、Ｃ［ｋ］＝１のときにＴ［ｎ−１：ｋ］＝Ｔ＿１［ｎ−１：ｋ］、Ｓａｔ＋＝Ｓａｔ＋＿１、およびＳａｔ−＝Ｓａｔ−＿１を出力する。
【００３３】
飽和論理３１２は本願明細書でさらに概して「飽和回路」と称されるものの範例である。飽和論理３１２は暫定合計Ｔ［ｎ−１：０］、および飽和ビットＳａｔ＋とＳａｔ−を受け取る。もしもＳａｔ＋＝１であれば、正のオーバーフローが生じており、結果は最も正の表現可能な数へと飽和させられるはずである。もしもＳａｔ−＝１であれば、負のオーバーフローが生じており、結果は最も負の表現可能な数へと飽和させられるはずである。それ以外の場合ではオーバーフローは生じておらず、正しい結果はＴ［ｎ−１：０］である。
【００３４】
入力オペランドＡおよびＢに関して実行される加算演算の結果Ｓ［ｎ−１：０］はレジスタ３１４に保存される。
【００３５】
図４は範例となる図２の加算演算の実行の中で図３の算術演算装置によって作り出される信号値を示している。３つの範例すべてでｎ＝８、ｆ＝４、およびｋ＝ｎ−（ｇ＋１）＝４である。前に与えられた飽和フラグのための式を使用して、値Ｔ＿０［８：４］はＳａｔ＋＿０およびＳａｔ−＿０を計算するために使用され、その一方でＴ＿１［８：４］はＳａｔ＋＿１およびＳａｔ−＿１を計算するために使用される。
【００３６】
第１の範例ではＣ［４］＝１であるので選択される値は
Ｔ［８：４］＝Ｔ＿１［８：４］＝００００１、Ｓａｔ＋＝Ｓａｔ＋＿１＝１、およびＳａｔ−＝Ｓａｔ−＿１＝０
である。Ｓａｔ＋＝１であるので合計は最も正の表現可能な数へと飽和させられる。
【００３７】
第２の範例ではＣ［４］＝０であるので選択される値は
Ｔ［８：４］＝Ｔ＿０［８：４］＝１１１０１、Ｓａｔ＋＝Ｓａｔ＋＿０＝０、およびＳａｔ−＝Ｓａｔ−＿０＝１
である。Ｓａｔ−＝１であるので合計は最も負の表現可能な数へと飽和させられる。
【００３８】
第３の範例ではＣ［４］＝０であるので選択される値は
Ｔ［８：４］＝Ｔ＿０［８：４］＝１１１１１、Ｓａｔ＋＝Ｓａｔ＋＿０＝０、およびＳａｔ−＝Ｓａｔ−＿０＝０
である。Ｓａｔ＋＝０であるので合計は飽和させられず、それゆえにＳ［７：０］＝Ｔ［７：０］である。
【００３９】
図５は、図３の算術演算装置が加算器かまたは減算器のどちらかとして制御可能な演算のために適することが可能となる方式を具体的に示している。この実施形態で、算術演算装置５００は素子３０２、３０４、３０８、３１０、３１２、および３１４を有し、すべてが前に図３に関連して述べられたように実質的に動作するように構成される。算術演算装置５００はさらに、図３の桁上げ伝搬加算器３０６と実質的に同じ方式で動作するがしかし桁上げ入力ｃｉｎを受け取るための追加の入力端子を有する桁上げ伝搬加算器３０６’を有する。
【００４０】
算術演算装置５００の入力部５０２に印加される制御信号ｓｕｂは入力オペランドＡおよびＢの加算または減算のどちらが実行されるかを制御する。ｓｕｂがゼロに設定されるとき、インバータ５０４および５０６が無効化され、算術演算装置５００は図３のように入力オペランドＡおよびＢを加算する。減算を実行するためにｓｕｂ制御信号は１に設定され、それが第２の入力オペランドＢを反転させ、桁上げ入力ｃｉｎを１に設定する。
【００４１】
この図に示されたインバータ５０４および５０６は多入力の条件付きインバータとして導入されることが可能であり、それにより、ｓｕｂが１のときにそれらは入力を反転させ、ｓｕｂが０のときに入力を反転させない。
【００４２】
図６は、図３の算術演算装置が正負符号なしの加算での使用に適することが可能となる方式を具体的に示している。この実施形態で、算術演算装置６００は素子３０２、３０４、３０６、および３１４を有し、すべてが実質的に前に図３に関連して述べられたように動作するように構成される。算術演算装置６００は改造された素子３０８’、３１０’、および３１２’をさらに有し、それらは実質的に図３に関連して述べられたように動作するがしかし正負符号なしの加算をサポートするための簡単な改造を伴う。
【００４３】
正負符号なしの加算のケースでは、いずれかの保護ビットが１であればオーバーフローが起こり、結果は最大の表現可能な数へと飽和させられる。正負符号なしの加算についてはオーバーフローは起こり得ず、それゆえにＳａｔ−＿０およびＳａｔ−＿１に関して前述された式は必要とされない。したがって、素子３０８’の事前の正飽和検出部分は次の
Ｓａｔ＋＿０＝Ｔ＿０［ｎ］ｏｒＴ＿０［ｎ−１］ｏｒＴ＿０［ｎ−２］ｏｒ．．．ｏｒＴ＿０［ｎ−ｇ］
Ｓａｔ＋＿１＝Ｔ＿１［ｎ］ｏｒＴ＿１［ｎ−１］ｏｒＴ＿１［ｎ−２］ｏｒ．．．ｏｒＴ＿１［ｎ−ｇ］
のように正の飽和フラグだけを計算するように構成される。同様に、飽和論理３１２’は正負符号なしの数に関して正の飽和を扱うことだけを必要とする。結果として、改造されたマルチプレクサ３１０’は６個の入力部と３個の出力部ではなく４つの入力部と２つの出力部しか有さない。
【００４４】
本発明による所定の算術演算装置が２の補数かまたは正負符号なしの算術のどちらかの選択可能な能力のために構成されることが可能であることは当業者にとって明らかであろう。
【００４５】
また、図６の算術演算装置も、加算または減算を実行するように図５と関連して述べられたそれと同様の方式で構成されることが可能である。
【００４６】
図７は、図３または図５のそれのような算術演算装置が飽和またはラップアラウンド算術のどちらかの制御可能な選択のために適合させられることが可能となる方式を例示している。ラップアラウンド算術により、オーバーフローが生じるときに指定された形式に合わないいずれの未使用のビットも単純に破棄される（すなわち結果は飽和させられない）。したがって、ラップアラウンド算術を実行するために、算術演算装置７００は飽和論理３１２によって常にＴ［ｎ−１：０］が選択されるように改造される。
【００４７】
これはそれぞれのＡＮＤゲート７０２および７０４を使用し、各々の飽和信号Ｓａｔ＋およびＳａｔ−と制御信号ｓａｔとの論理的ＡＮＤを実行することによって図７の実施形態で達成される。制御信号ｓａｔは、飽和加算が実行されるときに１であり、ラップアラウンド加算が実行されるときに０である。したがって、ｓａｔ＝１のときに両方のＡＮＤゲートの出力はゼロであり、それにより、Ｔ［ｎ−１：０］が選択され、これはラップアラウンド加算に対応する。ｓａｔが１であるとき、Ｓａｔ＋およびＳａｔ−に関する値は変わらずにＡＮＤゲートを通過し、これは飽和加算に対応する。
【００４８】
同様の改造が図６の配列に為されることが可能であり、それにより、その実施形態での飽和またはラップアラウンド算術の制御可能な選択を可能にする。
【００４９】
前に示したように、本発明はデジタル・データ・プロセッサの中に都合良く導入されることが可能である。そのようなプロセッサのさらに特定の範例は、本願明細書に参照で組み入れられ、本出願と共通して譲受される２００２年１０月１１日に提出された「Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ  Ｗｉｔｈ  Ｅｆｆｉｃｉｅｎｔ  Ｐｒｏｃｅｓｓｉｎｇ  Ｆｏｒ  Ｃｏｎｖｅｒｇｅｎｃｅ  Ｄｅｖｉｃｅ  Ａｐｐｌｉｃａｔｉｏｎｓ」という表題の米国特許出願番号１０／２６９３７２号に述べられたタイプのマルチスレッド型プロセッサである。
【００５０】
上述の具体例の実施形態での本発明は従来式の技法と比較していくつかの大きな利点を提供する。
【００５１】
例えば、述べられた実施形態は混合型の数の形式でオペランドに演算を実行すること、および小数の形式または符号拡張型小数形式である飽和結果を作り出すことが可能である。したがって、この算術演算装置は入力オペランドが結果と同じ形式であることを必要としない。さらに、これらの算術演算装置はオーバーフロー検出が始まることが可能となる前の保護ビットの計算を必要としない。
【００５２】
さらに、デジタル信号処理およびマルチメディアの用途は飽和算術およびラップアラウンド算術の機能を必要とする可能性が高いので、上述のように制御入力に基づいて飽和かまたはラップアラウンドのどちらかの算術を実行する算術演算装置を使用して大幅なコストの削減が達成されることが可能である。
【００５３】
図３、５、６、および７に示された特定の回路配列が単に具体的な範例の方式で提示されること、および当業者に明らかであろうから明確には示されていない追加または代替の要素が含まれ得ることは気付かれるはずである。例えば、第１と第２の演算回路、選択回路、および飽和回路の数多くの代替の配列が本発明の実施に使用され得ることに当業者は気付くであろう。また、異なる暫定合計、飽和フラグ、飽和ビット、制御信号または他の信号と同様に、異なる単一もしくは複数の桁上げ出力もいずれかの組み合わせで使用されることが可能である。
【００５４】
本発明が上述の特定の算術演算を必要とするわけではないこともやはり強調されるべきである。他のタイプの算術演算およびそれに付随する数の形式が利用されることが可能である。
【００５５】
したがって、本発明の上述の実施形態は単なる具体的な例であると意図され、添付の特許請求項の範囲内の数多くの代替の実施形態は当業者に明らかであろう。
【図面の簡単な説明】
【００５６】
【図１】従来式の混合型の数、小数、および符号拡張型小数形式を具体的に示す図である。
【図２】多様な入力オペランドおよび結果の形式を備えた従来式の２の補数の飽和加算の３つの範例を示す図である。
【図３】本発明に従って、事前の飽和検出を備えて２の補数の加算を実行するように構成された算術演算装置の具体的な実施形態を示す概略図である。
【図４】範例となる図２の２の補数の飽和加算演算の実行の中で図３の算術演算装置によって作り出される信号値を示す図である。
【図５】本発明に従って加算または減算を実行するように制御可能である算術演算装置の具体例の実施形態を示す概略図である。
【図６】本発明に従って正負符号なしの加算を実行するように構成された算術演算装置の具体例の実施形態を示す概略図である。
【図７】飽和またはラップアラウンド算術の制御可能な選択を可能にするように図３または図５に示されたタイプの算術演算装置を構成するための１つの見込まれる技法の範例を示す図である。
【図１】
2006528389.tif 000003
【図２】
2006528389.tif 000004
【図３】
2006528389.tif 000005
【図４】
2006528389.tif 000006
【図５】
2006528389.tif 000007
【図６】
2006528389.tif 000008
【図７】
2006528389.tif 000009
【国際調査報告】
2006528389.tif 000010