(57)【要約】アレイ乗算器は、複数のアレイエレメントを含む部分積アレイと、最終桁上げ伝搬加算器とを備える。部分積アレイの対応する大きさよりも小さいオペランドは、アレイの最上位行または列の方にシフトされて、オペランドの積の計算に使用されるアレイエレメントの数を減少させる。アレイエレメントへの電力をオフにすることによって、またはそのシフトされたオペランドを先頭の０で埋めることによって、使用されないアレイエレメント中の切換えアクティビティを低減することができる。本質的でないアレイエレメントをバイパスするバイパス線を部分積アレイ中に有し、部分和および桁上げを最終桁上げ伝搬加算器に直接供給することによって、追加の節電を達成することができる。桁上げ伝搬加算器のエレメントもまた、さらに電力削減を行うためにバイパスされることができる。【選択図】      図５
2008533617.tif 000002
【特許請求の範囲】
【請求項１】
下記を具備する、２つのオペランドを乗算する方法：
前記オペランドの積の計算に使用されるアレイエレメントの数を削減するために少なくとも一つのオペランドが前記アレイの最上位行または列の方にずらされるように、最終桁上げ伝搬加算器とＮ×Ｍアレイエレメントを含むアレイとを備えるアレイ乗算器に２つのオペランドを入力すること、および、
前記オペランドを前記乗算器中で乗算すること。
【請求項２】
２つのオペランドをアレイ乗算器に入力することは、ずらされた各オペランドの最上位ビットが前記アレイの最上位ビットと整列されるように、前記オペランドを前記アレイ乗算器に入力することを具備する、請求項１に記載の方法。
【請求項３】
２つのオペランドをアレイ乗算器に入力することは、少なくとも一つのオペランドの最下位ビットが前記アレイの所定の行または列と整列されるように、前記オペランドを前記アレイ乗算器に入力することを具備する、請求項１に記載の方法。
【請求項４】
ずらされた各オペランドを最下位ビット位置において１つまたは複数の０で埋めて、使用されないアレイエレメントが切り換わらないようにすることをさらに具備する、請求項１に記載の方法。
【請求項５】
使用されないアレイエレメントへの電力をオフにすることをさらに具備する、請求項１に記載の方法。
【請求項６】
前記オペランドのビット幅に依存するある時間で前記オペランドの積を前記アレイ乗算器からフェッチすることによりレイテンシを短縮することをさらに具備する、請求項１に記載の方法。
【請求項７】
選択されたアレイエレメントを前記最終桁上げ伝搬加算器に接続して、前記選択されたアレイエレメントと前記最終桁上げ伝搬加算器との間の使用されないアレイエレメントをバイパスすることをさらに具備する、請求項１に記載の方法。
【請求項８】
選択されたアレイエレメントを前記最終桁上げ伝搬加算器に接続することは、制御信号を生成し、前記制御信号に応答して、前記選択されたアレイエレメントの出力を前記最終桁上げ伝搬加算器に選択的に接続することを具備する、請求項７に記載の方法。
【請求項９】
選択されたアレイエレメントを前記アレイ乗算器の出力に接続して、前記桁上げ伝搬加算器をバイパスすることをさらに具備する、請求項１に記載の方法。
【請求項１０】
選択されたアレイエレメントを前記アレイ乗算器の出力に接続することは、制御信号を生成し、前記制御信号に応答して、前記選択されたアレイエレメントの出力を前記アレイ乗算器のそれぞれの出力に選択的に接続することを具備する、請求項９に記載の方法。
【請求項１１】
下記を具備する、アレイ乗算器：
行と列に配列された複数のアレイエレメントを含むアレイと、
前記アレイに動作可能に接続された最終桁上げ伝搬加算器と、
前記オペランドの積の計算に使用されるアレイエレメントの数を削減するために少なくとも一つのオペランドが前記アレイの最上位行または列の方にずらされるように、２つのオペランドを前記アレイに入力するための制御論理。
【請求項１２】
前記制御論理は、ずらされた各オペランドの最上位ビットが前記アレイの最上位行または列と整列するように、前記オペランドを前記アレイ乗算器に入力する、請求項１１に記載のアレイ乗算器。
【請求項１３】
前記制御論理は、ずらされた各オペランドの最下位ビットが前記アレイの所定の列と整列するように、前記オペランドを前記アレイ乗算器に入力する、請求項１１に記載のアレイ乗算器。
【請求項１４】
前記制御論理は、最下位ビット位置において１つまたは複数の０でずらされた各オペランドを埋めて、使用されないアレイエレメントが切り換わらないようにする、請求項１１に記載のアレイ乗算器。
【請求項１５】
前記制御論理は、使用されないアレイエレメントへの電力をオフにする、請求項１１に記載のアレイ乗算器。
【請求項１６】
前記制御論理はさらに、前記オペランドのビット幅に依存するある時間で前記オペランドの積をアレイ乗算器からフェッチする、請求項１１に記載のアレイ乗算器。
【請求項１７】
前記制御論理は、選択されたアレイエレメントを前記最終桁上げ伝搬加算器に結合して、前記選択されたアレイエレメントと前記最終桁上げ伝搬加算器との間の使用されないアレイエレメントをバイパスする、請求項１１に記載のアレイ乗算器。
【請求項１８】
前記制御論理は、選択されたアレイエレメントのための制御信号を生成することにより前記選択されたアレイエレメントを前記最終桁上げ伝搬加算器に結合する、ここにおいて、前記選択されたアレイエレメントは、前記制御信号に応答して、前記最終桁上げ伝搬加算器に和を出力する、請求項１７に記載のアレイ乗算器。
【請求項１９】
前記制御論理は選択されたアレイエレメントを前記アレイ乗算器のそれぞれの出力に結合して、前記桁上げ伝搬加算器をバイパスする、請求項１１に記載のアレイ乗算器。
【請求項２０】
前記制御論理は、選択されたアレイエレメントのための制御信号を生成することにより前記選択されたアレイエレメントを前記アレイ乗算器の前記それぞれの出力に結合する、ここにおいて、前記選択されたアレイエレメントは、前記アレイ乗算器の前記それぞれの出力に直接的に和を出力する、請求項１９に記載のアレイ乗算器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、ディジタル信号プロセッサのための算術回路に関し、より詳細には、２つのオペランド(operands)の積を計算するためのアレイ乗算器に関する。
【背景技術】
【０００２】
携帯型電子デバイスは、現代の生活にとって、どこにでも存在するものになってきた。携帯型電子デバイスにおける２つの過酷な傾向は、機能増大およびサイズ縮小である。機能増大の要求は、計算能力の増大、特に、一層速くより強力なプロセッサを必要とする。サイズ縮小は、デバイス中のプロセッサおよび他の電子部品に電力を供給するのに使用される電池のサイズを縮小することを必要とする。このため、製造業者は、計算能力、および、したがって電力要件を増大すると同時に電池サイズを縮小するという、一見矛盾する目標に直面している。電池技術の向上はこの問題を部分的に相殺するが、電池サイズの縮小、およびより大きな計算能力の要求は、すべての携帯型電子デバイス電子部品、特にプロセッサに対して、厳しい電力予算を課す。
【０００３】
乗算器は、多くのディジタル信号プロセッサのコア(core)コンポーネントである。アレイ乗算器は、比較的単純かつ規則的な構造であるため、普及しているアーキテクチャである。しかし、アレイ乗算器には、他の乗算器アーキテクチャと比較していくつかの欠点、すなわちレイテンシ(latency)および電力消費の点からみた欠点がある。アレイ乗算器では、結果がアレイを通して伝搬されるのに時間がかかる。結果がアレイを通して伝搬するせいで、アレイ中のトランジスタは、最終的な値に決まる前に複数回(multiple times)切り換わる。この切換えアクティビティ(activity)は、アレイ乗算器中の電力損失の主要な原因である。
【発明の開示】
【サマリー】
【０００４】
本発明は、従来のアレイ乗算器よりもレイテンシが短縮され電力消費がより低いアレイ乗算器に関する。このアレイ乗算器は、部分和を計算して総計するための行と列に配列された複数のアレイエレメントを含む部分積アレイと、最終的な結果ビットを生成するための複数の加算器エレメントを含む桁上げ(carry)伝搬加算器とを備える。Ｎ×Ｍビット精度の乗算(bit accurate multiplication)では（ＮおよびＭはそれぞれ被乗数(multiplicand)および乗数(multiplier)のビット幅である）、部分積アレイは、Ｎ個の行およびＭ個の列を有する。しかし、ＮまたはＭよりも低いビット精度のデータを、同じＮ×Ｍビット乗算器で処理する必要のある時がある。このような場合は、部分積アレイ中の全部ではないアレイエレメントが使用されるように、被乗数および／または乗数がシフトされる(shifted)ことができる。使用されないアレイエレメントは、オフにされるかまたは切り換わらないようにされ、この結果、電力消費はより低くなる。
【０００５】
いくつかの実施形態では、部分積アレイ中にバイパス線を追加して、クリティカルな(critical)遅延パス(path)に属する(fall in)使用されないアレイエレメントおよび／または加算器エレメントをバイパスすることによって、追加のレイテンシ節約および節電を得ることができる。この内部バイパス線により、内部アレイエレメントは、クリティカルな遅延パス中の使用されないアレイエレメントおよび／または加算器エレメントを通って結果ビットをトリクルダウンする(trickling the result bits down)必要なしに、結果ビットを直接出力することが可能になる。いくつかの実施形態では、オペランドを任意の量だけ随意にシフトされる、すなわち、１ビット粒度(granularity)でシフトされることができる。これらの実施形態では、オペランドがシフトされる量は、オペランドの長さによって決定される。オペランドのＭＳＢ（最上位ビット(most significant bit)）が部分積アレイの最上位行または列と整列されるとき、レイテンシおよび電力の最大節約が行われる。より少ないバイパス線を使用する他の実施形態では、オペランドがシフトされる量は、バイパス粒度の位置に依存する。これらの実施形態では、オペランドの最下位ビット(least significant bit)をアレイの所定の行または列と整列させるように、オペランドをシフトされることができる。いずれの場合でも、オペランドのビット精度がアレイの最大サイズ未満である限り、開示する技法によって電力とレイテンシの両方の低減が達成される。バイパス線が桁上げ伝搬加算器を越えて延ばされる場合、電力およびレイテンシの要件をさらに低減することができる。
【発明の実施形態の説明】
【０００６】
図１は、Ｎビットの被乗数ａＮ，ａＮ−１，．．．ａ１，ａ０に、Ｍビットの乗数ｂＭ，ｂＭ−１，．．．ｂ１，ｂ０を掛けるためのアルゴリズムを表形式で示している。Ｎビットの被乗数とＭビットの乗数は両方とも、２進数である。乗算プロセスの第１ステップは、被乗数ビットと乗数ビットの部分積を形成することである。被乗数の各ビットに乗数の第１ビットを掛けて部分積の第１行を形成し、乗数の第２ビットを掛けて部分積の第２行を形成し、乗数の第３ビットを掛けて部分積の第３行を形成し、以下、乗数の最終ビットに達するまで同様にする。第１行の後の部分積の各行は、前の行に関して１ビット位置だけシフトされる。次いで、各列の部分積を桁上げによって合計して、オペランドの最終的な積を得る。
【０００７】
図２は、Ｎ＝Ｍ＝８の場合の、図１の乗算アルゴリズムを実装した例示的なアレイ乗算器１０を示している。アレイ乗算器１０は、Ｎ×Ｍアレイエレメント１４を有する部分積アレイ１２と、Ｎ個の加算器エレメント３２を有する桁上げ伝搬加算器３０と、関連する制御回路４０とを備える。部分積アレイ１２は、被乗数ビットと乗数ビットの部分積を計算し、部分積を累進的に(progressively)合計する。最終的な部分和および部分桁上げは桁上げ伝搬加算器３０に出力され、それは積の最上位ビット（ＭＳＢ）部分を通して桁上げ(carries)を伝搬する。最終的な積の結果ビットは、アレイ乗算器１０の出力１５において提示される。図２に示す８×８の例では、最初の８つの結果ビットは、部分積アレイ１２の第１列にあるそれぞれのアレイエレメント１４によって直接出力される。最後の８つのビットは、桁上げ伝搬加算器３０のそれぞれの加算器エレメント３２によって出力される。制御回路４０は、オペランド、すなわち被乗数および乗数を準備し、後でさらに詳細に述べるようにオペランドの長さに基づいて部分積アレイ１２を構成する。
【０００８】
部分積アレイ１２は、Ｎ個の列とＭ個の行に配列されたＮ×Ｍアレイエレメント１４を含む。以下の考察では、インデックスｉおよびｊは、それぞれ部分積アレイ１２の列および行を表し、ｉ＝０，１，．．．Ｎ−１であり、ｊ＝０，１，．．．Ｍ−１である。図２では、説明のために、列は対角線状に示されている。部分積アレイ１２中の各アレイエレメント１４は、それぞれの被乗数ビットと乗数ビットの部分積を計算し、部分和および桁上げ値を生成する。第１列（被乗数の最下位ビットに対応し、ｉ＝０）のアレイエレメント１４についての部分和は、直接出力され、最終的な積のＬＳＢ部分についての結果ビットを形成する。最後の行（乗数の最上位ビットに対応し、ｊ＝Ｍ−１）のアレイエレメント１４についての部分和は、桁上げ伝搬加算器３０中の対応する加算器エレメント３２に出力される。唯一の例外は、第１列（すなわちｉ＝０）と最後の行（すなわちｊ＝Ｍ−１）とが交差する位置のアレイエレメント１４である。ｉ＝０およびｊ＝Ｍ−１におけるアレイエレメント１４は、桁上げ出力のみを桁上げ伝搬加算器３０に送り、その和出力は、最終的な積のビットを形成する。他のすべてのアレイエレメント１４は、後続のアレイエレメント１４に部分和を出力する。最初のＭ−１の行のアレイエレメント１４は、同じ列の後続のアレイエレメント１４に桁上げ値を出力する。最後の行（乗数の最上位ビットに対応し、ｊ＝Ｍ−１）のアレイエレメント１４は、桁上げ伝搬加算器３０中の対応する加算器エレメント３２に、それらの桁上げ出力を供給する。
【０００９】
図３Ａおよび３Ｂは、例示的なアレイエレメント１４をより詳細に示している。図３Ａには、アレイエレメント１４の一般的な構造が示してあり、これは部分積アレイ１２のすべての位置で使用することができる。図３Ｂには、後述するように部分積アレイ１２中の特定の位置に適合された、アレイエレメント１４の特殊化された形を示す。
【００１０】
図３Ａに示すアレイエレメント１４は、アンドゲート１６および全加算器１８を含む。アンドゲート１６は、被乗数ｘｉと乗数ｙｊの対応ビットの部分積を計算する。加算器１８は、桁上げ入力ＣＩＮと、和入力ＳＩＮと、アンドゲート１６からの部分積ｘｉ・ｙｊとを含む入力値を受け取り、部分和ＳＯＵＴと桁上げ値ＣＯＵＴとを含む出力値を計算する。部分積アレイ１２の第１行（乗数の最下位ビットに対応し、ｊ＝０）および最後の列（被乗数の最上位ビットに対応し、ｉ＝Ｎ−１）のアレイエレメント１４については、和入力ＳＩＮは０である。これらの各アレイエレメント１４は、図３Ｂに示すように、全加算器１８の代わりに半加算器を有することができる。他のすべてのアレイエレメント１４については、和入力ＳＩＮは、部分積アレイ１２のｉ＋１番目の列とｊ−１番目の行の、先行アレイエレメント１４によって提供される。第１行のアレイエレメントについての桁上げ入力は０である。他のすべてのアレイエレメント１４については、桁上げ入力は前の行、同じ列の先行アレイエレメント１４によって提供される。
【００１１】
桁上げ伝搬加算器３０は、図３Ｃ〜３Ｅに示すようなＮの加算器エレメント３２の線形アレイを有する。図３Ｃには、加算器エレメント３２の一般的な構造が示してあり、これは桁上げ伝搬加算器３０のすべての位置で使用することができる。図３Ｄおよび３Ｅには、後述するように部分積アレイ１２中の特定の位置に適合された、加算器エレメント３２の特殊化された形を示す。
【００１２】
図３Ｃに示す加算器エレメント３２は全加算器３４を含み、この全加算器３４は、和入力ＳＩＮと２つの桁上げ入力ＣＩＮおよびＣｉｎとを受け取り、和出力および桁上げ出力ＳＯＵＴおよびＣＯＵＴを生成する。和入力ＳＩＮおよび桁上げ入力ＣＩＮは部分積アレイ１２によって供給され、一方、Ｃｉｎは、ＬＳＢ側の隣接する加算器エレメント３２からのものである。桁上げ伝搬加算器３０のＬＳＢ端における第１の加算器エレメント３２は、Ｃｉｎ＝０を有することになり、あるいは、図３Ｄに示すように、全加算器３４の代わりに半加算器を使用することができる。最後の加算器エレメント３２は、ＳＩＮ＝０を有することになり、あるいは、図３Ｅに示すように、全加算器の代わりに半加算器を使用することができる。最後の加算器エレメント３２を除くすべての加算器エレメント３２についての和入力ＳＩＮは、ｊ＝Ｍ−１およびｉ≠Ｎ−１の、最後の行に対応するアレイエレメント１４からのものである。桁上げ伝搬加算器３０は、オペランドの最終的な積のＭＳＢ部分を通して桁上げを伝搬する。最終的な積のＬＳＢ部分は第１列のアレイエレメント１４の和出力から生成され、ここでｉ＝０である。
【００１３】
制御回路４０は制御論理４２を備え、これはハードウェア、ファームウェア、またはソフトウェアで実施されることができる。制御論理４２は、部分積アレイ１２を構成し、オペランドがどのように部分積アレイ１２に入力されるかを決定する。部分積アレイの最大幅に満たない長さのオペランドは、１または複数の位置シフトされることができる。後でより詳細に述べるように、制御論理４２は、オペランドが部分積アレイ１２に入力されると、オペランドのずれ(displacement)、すなわちオペランドがいつくの位置シフトされるかを決定する。
【００１４】
動作時、被乗数のビットは部分積アレイ１２のそれぞれの列のアレイエレメント１４に供給され、乗数のビットは部分積アレイ１２のそれぞれの行のアレイエレメント１４に供給される。部分積アレイ１２中の部分和の計算により、１度に１つの行が部分積アレイ１２の中を伝搬される。第１行より後の部分積アレイ１２の各行のアレイエレメント１４は、前の行のアレイエレメント１４からの結果を使用して計算を完了しなければならない。したがって、部分積アレイ１２のいくつかのアレイエレメント１４は、最終的な値に決まる前に何度も状態を変更することになる。
【００１５】
第１の実施形態
図４に、一方または両方のオペランドの長さが部分積アレイ１２の最大長に満たないときにアレイ乗算器１０によって損失される電力を削減するための例示的な一方法を示す。図４は、８×８アレイ乗算器１０を使用して４ビット被乗数に３ビット乗数を掛けることを示している。図４に示すように、被乗数および乗数の両者は、シフトされた位置で部分積アレイ１２に入力される。すなわち、オペランドは、部分積アレイ１２の最上位列または行の方にシフトされる。図４に示されている実施形態では、オペランドは、オペランドの最上位ビットを部分積アレイ１２の最上位列および行とそれぞれ整列させるようにシフトされる。オペランドを部分積アレイ１２の最上位ビット位置の方にシフトすることにより、オペランドの積を計算するのに必要なアレイエレメント１４の数が削減される。図４では、計算に必要なアレイエレメント１４および加算器エレメント３２は黒無地(solid black)の正方形として示されている。使用されないアレイエレメント１４および加算器エレメント３２は、白い正方形として示されている。斜線で影を付けたアレイエレメント１４および加算器エレメント３２は、部分積アレイ１２の最大サイズ（この例では８）に満たないビット幅（この例では４）のオペランドの乗算に、厳密にいえば必要ではない。最終的な積の結果ビットは、アレイ乗算器１０の出力１５において提示される。図４に示す４×３の例では、Ｘ０，Ｙ０と、Ｘ０，Ｙ１と、Ｘ０，Ｙ２に対応するアレイエレメント１４によって出力される部分和は、結果の３つのＬＳＢｓを表す。しかし、これらのアレイエレメント１４の部分和は、影付きのアレイエレメント１４（参照番号１０３で示す）および加算器エレメント３２（参照番号１０４で示す）を通って出力１５にトリクルダウンしなければならない。
【００１６】
部分積アレイ１２のクリティカルな遅延パスの外にある使用されないエレメント１４（白い正方形として示されているもの）における切換えアクティビティを低減するために、様々な対策をとることができる。クリティカルな遅延パスの外にある使用されないアレイエレメント１４中の電力消費を減らすために、制御回路４０は単に、部分積アレイ１２中の使用されないアレイエレメント１４への電力をオフにすればよい。その代りに、制御回路４０は、図４に示すように、最下位ビット位置において先頭の０(leading zeros)（被乗数および乗数についてそれぞれ参照番号１０１および１０２で示す）でオペランドを埋めて(pad)、部分積アレイ１２の使用されないアレイエレメント１４中の切換えアクティビティを低減することもできる。先頭の０の連続ストリングが、入力された被乗数および乗数の最下位ビット位置に現れるときは、先頭の０に対応する列および行のアレイエレメント１４は状態を変更せず、したがって、より少ない電力を使用することに留意されたい。
【００１７】
図４に示す実施形態では、影付きのアレイエレメント１４および加算器エレメント３２は、結果が出力１５にトリクルダウンされなければならないので、たとえこれらのエレメントが計算に必要とされていても、オフにされることはできない。後述する後続の実施形態では、参照番号１０３で示される本質的でないアレイエレメント１４および参照番号１０４で示される加算器エレメント３２中の電力消費を削減するための技法について述べる。
【００１８】
制御回路４０は、オペランドの長さに基づいてオペランドをどれだけシフトするかを決定する。上に挙げた例では、オペランドは、オペランドの最上位ビットが部分積アレイ１２の最上位列および行と整列されるようにシフトされる。上に挙げた例では、４ビットの被乗数は最初の４ビット位置において４つの先頭の０  １０１で埋められ、シフトされた被乗数を含む８ビット入力ワードを生成する。制御論理４２は最初の５ビット位置において５つの先頭の０  １０２で３ビットの乗数を埋めて、シフトされた乗数を含む第２の８ビット入力ワードを生成する。
【００１９】
各アレイエレメント１４および加算器エレメント３２が遅延Ｔを有すると仮定すると、ＮＭＡＸ×ＭＭＡＸ乗算器中で２つの数の積を計算するのに必要な総時間は、ＮＭＡＸ×Ｔ＋ＭＭＡＸ×Ｔである。８×８乗算器の場合、遅延またはレイテンシは１６Ｔである。このように、従来の乗算器では、遅延はオペランドの長さに関係なく同じままである。しかし、図２〜４に示したアレイ乗算器では、遅延はオペランドの長さに依存して変動する。例えば、図４に示す４×３乗算の場合、総遅延は（４＋３）×Ｔ、すなわち７Ｔであり、従来の８×８乗算器に勝る１１Ｔの節約である。したがって、オペランドのサイズが縮小すると、２つのオペランドの積を計算するのに必要な時間（レイテンシ）は対応的に短くなる。
【００２０】
第２の実施形態
図５〜７は、アレイ乗算器１０の第２の例示的な実施形態を示している。第２の実施形態は、図２〜４に示した第１の実施形態に類似している。したがって、簡潔かつ明確にするために、２つの実施形態で類似するコンポーネントを示すために同じ参照番号が使用され、以下の考察では、第２の実施形態が第１の実施形態と異なる観点に焦点を合わせる。
【００２１】
第２の実施形態によるアレイ乗算器１０は、列と行に配列された複数のアレイエレメント１４を含む部分積アレイ１２と、加算器エレメント３２の線形アレイを含む桁上げ伝搬加算器３０と、制御回路４０とを備える。部分積アレイ１２中のアレイエレメント１４と、桁上げ伝搬加算器３０中の加算器エレメント３２とは、前述のように相互接続されるが、以下の違いを有する。アレイ乗算器１０の第２の実施形態では、部分積アレイ１２は、垂直列（前述の対角線状の列と区別される）中のアレイエレメント１４を、桁上げ伝搬加算器３０の対応する加算器エレメント３２の和入力ＳＩＮに接続するバイパス線２２を含む。部分積アレイ１２の最後の行のアレイエレメント１４からの和出力は、桁上げ伝搬加算器３０の代わりにバイパス線２２に接続する。バイパス線２２により、内部アレイエレメント１４は、本質的でないアレイエレメント１４をバイパスして、桁上げ伝搬加算器３０に直接に部分和を出力することが可能になる。部分積アレイ１２のＭＳＢコーナ(corner)およびＬＳＢコーナにおける斜線で示されたアレイエレメント１４は、これらのアレイエレメント１４がそれらと並ぶ任意の他のアレイエレメント１４を有しないので、バイパス線２２に接続しないことに留意されたい。
【００２２】
図６Ａおよび６Ｂは、第２の実施形態の例示的なアレイエレメント１４をより詳細に示している。図６Ａは、第２の実施形態のアレイエレメント１４の一般的な構造を示している。図６Ｂは、部分積アレイ１２の最後の行および最初の列のアレイエレメント１４に関する、アレイエレメント１４の特殊化された形を示している。図６Ａに示されている一般化された形では、各アレイエレメント１４は、前述のようにアンドゲート１６および全加算器１８を含む。さらに、アレイエレメントはバイパス回路２０を含む。アンドゲート１６は、被乗数ｘｉと乗数ｙｊの対応ビットの部分積を計算する。加算器１８は桁上げ入力ＣＩＮ、和入力ＳＩＮ、アンドゲート１６からの部分積ｘｉ・ｙｊを含む入力値を受け取り、部分和および桁上げ値を計算する。バイパス回路２０は、加算器１８によって出力された部分和を、和出力ＳＯＵＴまたはバイパス線２２のいずれかに選択的に接続する。各垂直バイパス線２２に沿った最後のアレイエレメント１４については、バイパス回路２０は、図６Ｂに示すように、加算器１８によって出力された部分和をバイパス線２２に選択的に接続する。図５に示す実施形態では、図６Ｂの特殊化されたアレイエレメント１４中には和出力ＳＯＵＴがないことに留意されたい。この結果、オペランドの積は、オペランドのビット幅に依存するある時間で部分積アレイ１２からフェッチされる(fetched)ことができ、これにより、乗算演算に関連するレイテンシが短縮される。
【００２３】
オペランドが図４に示したようにシフトされると、切換えアクティビティおよびレイテンシを低減するために、１つまたは複数の選択された内部アレイエレメント１４から桁上げ伝搬加算器３０に結果を出力し、図４で影付きの正方形で示され参照番号１０３で示されている、任意の介在する本質的でないアレイエレメントをバイパスすることが望ましい。図５に示す実施形態では、本質的なアレイエレメント１４の和出力は、制御回路４０からの制御信号に応答してバイパス回路２０によってバイパス線２２に接続され、本質的でないすべてのアレイエレメント１４は切断される(disconnected)。一般に、任意の与えられた時間で、アレイエレメント１４の各垂直線中の１つのアレイエレメント１４のみがバイパス線２２に接続される。
【００２４】
図７は、図４に示したのと同じ４×３乗算演算に関する、垂直バイパス線２２との様々なアレイエレメント１４の接続状態を示している。図７中の黒無地のアレイエレメント１４は、４×３乗算演算のためにバイパス線２２に接続されるアレイエレメント１４を表す。節電のためにバイパスされる本質的でないアレイエレメント１４は、図７では文字Ｂで識別され、参照番号１０３でまとめて示されている。斜線で示されたアレイエレメント１４は、出力において許容できる電圧レベルを提供するために結果が計算に使用されなくても接続されることができる。その代りに、斜線で示された使用されないアレイエレメント１４をバイパス線２２から切断することもでき、バイパス線２２は接地に引かれてもよい。図７の実施形態は、本質的でないアレイエレメント１０３の追加のバイパスのために、図４の節電に関して追加の節電を有することに留意されたい。
【００２５】
図７に示す実施形態では、制御回路４０は、オペランドを準備することに加えて、制御レジスタ４４を使用して部分積アレイ１２を構成する。一実施形態では、バイパス線２２に接続する各アレイエレメント１４は、対応する単一ビット制御レジスタ４４を有する。制御論理４２は、どのアレイエレメント１４がバイパス線２２に接続すべきかを決定し、対応する制御レジスタ４４に「１」を書き込むことによって、選択されたアレイエレメント１４に関してバイパス回路２０をイネーブルにする(enables)。制御レジスタ４４中の「０」は、アレイエレメント１４をバイパス線２２から切断する。このように、バイパス回路２０は、制御レジスタ４４中のビットに依存して、バイパス線２２への和出力を選択的に接続および切断する。最終的な積の結果ビットは、アレイ乗算器１０の出力１５において生成される。
【００２６】
第３の実施形態
図５〜７に示したアレイ乗算器１０は、オペランドが１ビット粒度でシフトされることを可能にする。１ビット粒度は、任意のサイズのオペランドがオペランドの最上位ビットを部分積アレイの最上位列および行とそれぞれ整列させるために完全にシフトされる、ことを可能にする。しかし、バイパス線２２は、部分積アレイ１２中に寄生容量を導入する可能性がある。したがって、バイパス線２２の数および長さを減らすことが望ましくない可能性がある。
【００２７】
図８は、より少ないバイパス線２２を使用し、したがって寄生容量を減少させるが、より粗い粒度を有する、アレイ乗算器１０の別の実施形態を示している。アレイ乗算器１０は、前述のように、複数のアレイエレメント１４を含む部分積アレイ１２と、加算器エレメント３２の線形アレイを含む桁上げ伝搬加算器３０と、制御回路４０とを備える。制御回路４０は、前述のように動作する制御論理４２および制御レジスタ４４を含む。この実施形態では、参照のために１〜４の番号の付いた、４つの制御レジスタがある。部分積アレイ１２は、部分積アレイ１２の選択されたアレイエレメント１４を桁上げ伝搬加算器３０に接続するバイパス線２２を含む。バイパス線２２に接続されたアレイエレメント１４は、アレイエレメント１４を制御する対応する制御レジスタ４４を示すように番号が付けられている。
【００２８】
図８に示すアレイ乗算器１０は、４×３モード、６×６モード、および８×８モードとして示されている３つの粒度レベルまたは動作モードを有する。４×３動作モードでは、アレイ乗算器１０は、被乗数として長さ４ビットのオペランドと、乗数として長さ３ビットのオペランドとを乗算することができる。６×６動作モードでは、アレイ乗算器１０は、被乗数として長さ６ビットのオペランドと、乗数として長さ６ビットのオペランドとを乗算することができる。８×８動作モードでは、アレイ乗算器１０は、被乗数として長さ８ビットのオペランドと、乗数として長さ８ビットのオペランドとを乗算することができる。制御論理４２は制御レジスタを構成し、図９〜１１に示すように３つの動作モードでオペランドを埋める。図９は４×３モードを示し、図１０は６×６モードを示し、図１１は８×８モードを示している。図９〜１１において、黒で示されているアレイエレメント１４は、バイパス線２２に接続される。一般に、制御論理４２は、使用されるアレイエレメント１４の数を最小限にする動作モードを選択する。例えば、５ビットの被乗数に４ビットの乗数を掛ける乗算を行うために、制御論理４２は６×６動作モードを選択する。４×３モードおよび６×６モードに関しては、図９および１０に示すように、乗数および被乗数をＭＳＢおよびＬＳＢ位置の方にシフトしなければならない。
【００２９】
図１２に、５×４乗算演算を行うためにアレイ乗算器１０の第３の実施形態をどのようにして使用することができるかを示している。この乗算では、６×６モードが制御回路４０によって選択される。被乗数を２ビット位置シフトして、被乗数のＬＳＢを部分積アレイ１２の第３列（ｉ＝２）と整列させる。対照的に、乗数は４ビット位置シフトされ、乗数のＭＳＢを部分積アレイ１２のＭＳＢ行と整列させる。乗数は、乗数のＬＳＢを部分積アレイ１２のＬＳＢ第４行と整列させるように、３ビット位置のみシフトされ得ることに留意されたい。しかし、後者のアプローチは、たとえ最後の行が計算に貢献しなくても、部分和が最後の行を通ってトリクルダウンしなければならないことを意味する。したがって、第３の実施形態は、１ビット粒度で乗数をシフトすることを可能にするが、被乗数については粗い粒度でのシフトだけを可能にする。相殺利益は、より少ないバイパス線、より少ない制御レジスタ、およびより少ない寄生容量である。
【００３０】
第４の実施形態
最初の３つの実施形態では、部分積アレイ１２の本質的でないエレメントのみをバイパスして電力消費を削減した。しかし、図５に示した垂直バイパス線２２を桁上げ伝搬加算器３０を越えて延ばすことができ、それにより、桁上げ伝搬加算器３０の本質的でない加算器エレメント３２をもバイパスすることができる。部分積アレイ１２および桁上げ伝搬加算器３０の構造は、バイパス線が桁上げ伝搬加算器３０を越えて延び、アレイ乗算器１０の出力１５に直接接続することを除いて、第２の実施形態と同じである。図１３に示す第４の実施形態では、最後の行のアレイエレメント１４は、図６Ａに示したように構成され、最後の行のアレイエレメント１４についての和出力は、桁上げ伝搬加算器３０中のそれぞれの加算器エレメント３２の和入力に接続される。図１２の桁上げ伝搬加算器３０は、図１４に示すような修正された加算器エレメント３２を有する。図１４は、全加算器３４とバイパススイッチ３６とを含む加算器エレメント３２の一般的な構造を示している。最初と最後の加算器エレメントは、前述のように半加算器を使用してよい。エレメント３２中の加算器３４をバイパスする必要があるときは、バイパススイッチ３６が開かれて、加算器エレメント３２をバイパス線２２から切断する。加算器エレメント３２を加算に使用しなければならないときは、図１３のバイパススイッチは閉じられる。
【００３１】
一例として、図１５に、アレイ乗算器１０の第４の実施形態を使用した４×３乗算を示す。４×３乗算演算に関する本質的でないアレイエレメント１４および加算器エレメント３２には、文字「Ｂ」で印が付けられている。単一ビット粒度について、制御レジスタ４４は、バイパススイッチ３６を構成するために各修正加算器エレメント３２ならびに各アレイエレメントについて単一のビットレジスタを含むことになる。
【００３２】
第５の実施形態
図１６は、被乗数に関して粗い粒度を用いるアレイ乗算器の第５の実施形態を示している。この実施形態は、バイパス線が桁上げ伝搬加算器３０を越えて延びることを除いて、第３の実施形態と同じである。。部分積アレイ１２および桁上げ伝搬加算器３０の構造は、第２の実施形態と同じだが、以下の違いがある。図１６に示す第５の実施形態では、最後の行のアレイエレメント１４は図６Ａに示したものであり、最後の行のアレイエレメント１４についての和出力は、桁上げ伝搬加算器３０中のそれぞれの加算器エレメントの和入力に接続される。桁上げ伝搬加算器３０は、全加算器３４とバイパススイッチ３６とを含む図１４に示されているような修正加算器エレメント３２を使用する。加算器エレメント３２をバイパスする必要があるときは、バイパススイッチ３６が開かれて、加算器エレメント３２をバイパス線２２から切断する。加算器エレメント３２を加算に使用しなければならないときは、バイパススイッチ３６は閉じられる。
【００３３】
アレイ乗算器の第５の実施形態は、３つの構成モードまたは動作モード、すなわち４×３モード、６×６モード、および８×８モードを有する。必要な制御レジスタ４４は４つのみである。制御論理４２は制御レジスタ４４を構成し、図１７〜１９に示すように３つの動作モードでオペランドを埋める。図１７には４×３モードを示し、図１８には６×６モードを示し、図１９には８×８モードを示す。図１７〜１９において、黒で示すアレイエレメント１４は、バイパス線２２に接続される。一般に、制御論理４２は使用されるアレイエレメント１４の数を最小限にする動作モードを選択する。例えば、５ビットの被乗数に４ビットの乗数を掛ける乗算を行うために、制御論理４２は６×６動作モードを選択する。４×３および６×６モードでは、図１７および１８に示すように、乗数および被乗数をＭＳＢおよびＬＳＢ位置の方にシフトしなければならない。前述のように、被乗数をシフトして、被乗数のＬＳＢをバイパス粒度に依存する所定の列と整列させる。乗数をシフトして、乗数のＭＳＢを部分積アレイ１２のＭＳＢ行と整列させる。
【００３４】
本発明は当然ながら、本発明の本質的な特徴を逸脱することなく、本明細書に具体的に述べた方法以外の方法で実施することもできる。本実施形態は、あらゆる点で例示的であって限定的ではないものと考えるべきであり、添付の特許請求の範囲の意味および等価範囲に入るすべての変更は、それに包含されるものとする。
【図面の簡単な説明】
【００３５】
【図１】２つのオペランドの乗算を表形式で示す概略図。
【図２】２つのオペランドを乗算するためのアレイ乗算器の第１の実施形態を示す概略図。
【図３Ａ】図２のアレイ乗算器中の部分積アレイについてのアレイエレメントを示す概略図。
【図３Ｂ】図２のアレイ乗算器中の部分積アレイについてのアレイエレメントを示す概略図。
【図３Ｃ】図２のアレイ乗算器中の桁上げ伝搬加算器についての加算器エレメントを示す概略図。
【図３Ｄ】図２のアレイ乗算器中の桁上げ伝搬加算器についての加算器エレメントを示す概略図。
【図３Ｅ】図２のアレイ乗算器中の桁上げ伝搬加算器についての加算器エレメントを示す概略図。
【図４】４×３乗算演算を実行する図２のアレイ乗算器を示す概略図。
【図５】１ビットのバイパス粒度を提供するバイパス線を備えるアレイ乗算器の第２の実施形態を示す概略図。
【図６Ａ】図５のアレイ乗算器中の部分積アレイについてのアレイエレメントを示す概略図。
【図６Ｂ】図５のアレイ乗算器中の部分積アレイについてのアレイエレメントを示す概略図。
【図７】４×３乗算演算を実行するように構成された図５のアレイ乗算器を示す概略図。
【図８】粗いバイパス粒度を提供するバイパス線を備えるアレイ乗算器の第３の実施形態を示す概略図。
【図９】４×３乗算演算を実行するように構成されたアレイ乗算器の第３の実施形態を示す概略図。
【図１０】６×６乗算演算を実行するように構成されたアレイ乗算器の第３の実施形態を示す概略図。
【図１１】８×８乗算演算を実行するように構成されたアレイ乗算器の第３の実施形態を示す概略図。
【図１２】５×４乗算を実行するように構成されたアレイ乗算器の第３の実施形態を示す概略図。
【図１３】桁上げ伝搬加算器エレメントを含むように延ばされたバイパス線を備えるアレイ乗算器の第４の実施形態を示す概略図。
【図１４】バイパス回路で向上させた桁上げ伝搬加算器エレメントを示す概略図。
【図１５】４×３乗算演算を実行するように構成された、１ビットのバイパス粒度を提供するバイパス線を備えるアレイ乗算器の第４の実施形態を示す概略図。
【図１６】１ビットのバイパス粒度を提供するバイパス線を備えるアレイ乗算器の第５の実施形態を示す概略図。
【図１７】４×３乗算演算を実行するように構成されたアレイ乗算器の第５の実施形態を示す概略図。
【図１８】６×６乗算演算を実行するように構成されたアレイ乗算器の第５の実施形態を示す概略図。
【図１９】８×８乗算演算を実行するように構成されたアレイ乗算器の第５の実施形態を示す概略図。
【図１】
2008533617.tif 000003
【図２】
2008533617.tif 000004
【図３Ａ】
2008533617.tif 000005
【図３Ｂ】
2008533617.tif 000006
【図３Ｃ】
2008533617.tif 000007
【図３Ｄ】
2008533617.tif 000008
【図３Ｅ】
2008533617.tif 000009
【図４】
2008533617.tif 000010
【図５】
2008533617.tif 000011
【図６Ａ】
2008533617.tif 000012
【図６Ｂ】
2008533617.tif 000013
【図７】
2008533617.tif 000014
【図８】
2008533617.tif 000015
【図９】
2008533617.tif 000016
【図１０】
2008533617.tif 000017
【図１１】
2008533617.tif 000018
【図１２】
2008533617.tif 000019
【図１３】
2008533617.tif 000020
【図１４】
2008533617.tif 000021
【図１５】
2008533617.tif 000022
【図１６】
2008533617.tif 000023
【図１７】
2008533617.tif 000024
【図１８】
2008533617.tif 000025
【図１９】
2008533617.tif 000026
【国際調査報告】
2008533617.tif 000027
2008533617.tif 000028
2008533617.tif 000029