(57)【特許請求の範囲】
【請求項１】
有限インパルス応答（ＦＩＲ）フィルタリングのための装置であって、
プログラム・メモリ・ユニットから命令を受け取るプログラム制御ユニットと、２つ以上の乗加算器のチェーンとを含むプロセッサを備え、各乗加算器が乗算器および加算器を含み、前記チェーンの第１の乗加算器の出力結果が前記チェーンの第２の後続乗加算器の加算器への入力として供給されるように前記２つ以上の乗加算器が配置されており、前記チェーンの最後の乗加算器の出力結果が、前記チェーンの前記第１の乗加算器の加算器への入力として供給され、
前記乗加算器は、ＦＩＲフィルタリングの各サイクルにおいて、ＦＩＲフィルタの係数およびデータ入力を受け取るように構成され、前記チェーンは、前記乗加算器の数に等しい数のサイクルの間、前記乗加算器に関する個々のインデックス毎に係数を維持し、ＦＩＲフィルタの係数の数が前記乗加算器の数よりも多い場合、前記係数を、個々のインデックスに前記乗加算器の数を加えたものに等しい新たなインデックスを有する新たな係数に置換えるように構成されている、装置。
【請求項２】
前記第２の乗加算器の前記乗算器は、２つのオペランドを受け取って乗じ、前記第２の乗加算器の前記加算器は、前記第２の乗加算器の前記乗算器からの出力結果と前記第１の乗加算器の出力とを受け取って加算する、請求項１に記載の装置。
【請求項３】
前記第１の乗加算器の前記加算器は、前記第１の乗加算器の前記乗算器の積と前記最後の乗加算器の前記出力結果とを加算すること、及び前記チェーンの前記最後の乗加算器の乗算器の積と事前に記憶された値とを加算することのうちの少なくとも一方を行う、請求項１に記載の装置。
【請求項４】
前記チェーンの前記第１の乗加算器は、前記第１の乗加算器の前記加算器の前記出力または前記第１の乗加算器の前記加算器への入力としての前記最後の乗加算器の前記加算器の出力のいずれかを選択するマルチプレクサを備える、請求項１に記載の装置。
【請求項５】
前記乗加算器の各々は、それぞれの加算器の出力を所定の時間保持するためのメモリ素子を備える、請求項１に記載の装置。
【請求項６】
前記チェーンの前記乗加算器の少なくとも１つは、前記乗加算器の前記加算器の前記出力または先行する乗加算器の前記加算器の出力のいずれかを前記乗加算器の前記加算器への入力として選択するマルチプレクサを備える、請求項１に記載の装置。
【請求項７】
有限インパルス応答（ＦＩＲ）フィルタリングのための方法であって、
２つ以上の乗加算器のチェーンを提供することであって、各乗加算器が乗算器および加算器を含み、前記２つ以上の乗加算器のチェーンの第１の乗加算器の出力結果が、前記チェーンの第２の後続乗加算器への入力として供給され、前記チェーンの最後の乗加算器の出力結果が、前記チェーンの前記第１の乗加算器の加算器に入力として供給される、前記チェーンを提供すること、
各サイクルにおいて、前記乗加算器へのＦＩＲフィルタの係数およびデータ入力を受け取ることであって、前記乗加算器の数に等しい数のサイクルの間、前記乗加算器に関する個々のインデックス毎に係数を維持すること、ＦＩＲフィルタの係数の数が前記乗加算器の数よりも多い場合、前記係数を、個々のインデックスに前記乗加算器の数を加えたものに等しい新たなインデックスを有する新たな係数に置換えることを含む、前記受け取ること
を備える、方法。
【請求項８】
前記第２の乗加算器の前記乗算器によって２つのオペランドを乗じること、
前記第２の乗加算器の加算器によって、前記第２の乗加算器の前記乗算器からの出力結果と前記チェーンの前記第１の乗加算器の加算器の出力とを加算すること
をさらに備える、請求項７に記載の方法。
【請求項９】
前記第１の乗加算器の前記加算器によって、前記第１の乗加算器の前記乗算器の積を前記最後の乗加算器の前記出力結果に加算することをさらに備える、請求項７に記載の方法。
【請求項１０】
前記チェーンの前記乗加算器の少なくとも１つのマルチプレクサによって、前記乗加算器の前記加算器の前記出力または先行する乗加算器の加算器の出力のいずれかを前記乗加算器の前記加算器への入力として選択することをさらに備える、請求項７に記載の方法。
【請求項１１】
前記第１の乗加算器の前記加算器によって、前記最後の乗加算器の乗算器の積を事前に記憶された値に加算することをさらに備える、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチＭＡＣアーキテクチャに関し、詳しくは、性能を犠牲にせずに低電力を実現するためのマルチＭＡＣアーキテクチャに関する。
【背景技術】
【０００２】
多くのディジタル信号プロセッサ（ＤＳＰ）アーキテクチャなどのハードウェア・アクセラレータ・アプリケーションでは、一連の乗算および／または累算を含み得る。したがって、高性能を実現するために、複数のハイスループット乗加算（ＭＡＣ）ユニットが採用され得る。
【先行技術文献】
【非特許文献】
【０００３】
エイ．ティ．エルドーアン(A.T Erdogan)、外１名，「係数順序付けアルゴリズムに基づく低電力ＦＩＲフィルタの実施（Low Power FIR Filter Implementations Based on Coefficient Ordering Algorithm）」，ＶＬＳＩシステム設計（ＩＳＶＬＳＩ’０４）におけるＶＬＳＩの新たな動向に関するＩＥＥＥコンピュータ学会年次シンポジウムの会議録，２００４年
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数のＭＡＣユニットを同時に使用することによって性能を最大化すると、高いワット損をもたらし得る。しかし、たとえば、携帯用電子機器市場における今日の多くのアプリケーションでは、低い消費電力が求められる。それ故に、性能を犠牲にせずに低電力を実現するためのマルチＭＡＣアーキテクチャが必要である。
【図面の簡単な説明】
【０００５】
【図１】本発明の実施形態に従う例示的なデバイスの高レベルブロック図である。
【図２】本発明の実施形態に従う例示的なマルチＭＡＣ構成のブロック図である。
【図３】本発明の実施形態に従う例示的なマルチＭＡＣ構成のブロック図である。
【図４】本発明の実施形態に従う例示的なマルチＭＡＣ構成のブロック図である。
【図５】本発明の例証的な実施形態に従うＭＡＣ演算をスケジュールする方法のフローチャートである。
【発明を実施するための形態】
【０００６】
本発明と見なされる主題は、本明細書の結びの部分で具体的に指摘されて明確に主張される。しかし、本発明の実施形態は、これらの目的、特徴および利点とともに、編成および動作方法の両方に関して、添付図面を読解するときに以下の詳細な説明を参照することにより最もよく理解され得る。
【０００７】
説明を簡単かつ明瞭にするために、図に示される素子は必ずしも一定の縮尺で描かれていないことは理解されよう。たとえば、素子のいくつかの寸法は、分かりやすくするために他の素子に比べて誇張され得る。さらに、適当であると考えられる場合、参照番号は対応する素子または類似の素子を示すために図の中で繰り返され得る。
【０００８】
以下の詳細な説明において、本発明の完全な理解を与えるために多くの具体的詳細が記述される。しかし、本発明はこれら具体的詳細がなくても実施され得ることを当業者は理解されよう。他の例においては、本発明が曖昧にならないように、周知の方法、手順、および構成部品は詳しく記載されていない。
【０００９】
本発明の実施形態はこの点に関して限定されないが、たとえば、「処理する」、「計算する」、「決定する」、「確立する」、「解析する」、「チェックする」などの用語を利用する説明では、コンピュータのレジスタおよび／またはメモリ内で物理（たとえば、電子的）量として表されたデータを操作し、および／またはこれらのデータを演算および／または処理を実行するための命令を記憶する場合のコンピュータのレジスタおよび／またはメモリまたは情報記憶媒体内で物理量として同様に表された他のデータに変換するコンピュータ、計算プラットフォーム、コンピューティングシステムなどの電子計算装置の演算および／または処理に言及され得る。
【００１０】
本発明の実施形態はこの点に関して限定されないが、本明細書において使用される「複数という用語は、たとえば、「多数の」または「２つ以上の」を含み得る。「複数」）という用語は、本明細書を通じて、２つ以上の構成部品、デバイス、素子、ユニット、パラメータなどを示すために使用され得る。
【００１１】
本発明の実施形態は、オーディオおよび音声信号処理、ソナーおよびレーダー信号処理、センサーアレイ処理、スペクトル推定、統計的信号処理、ディジタル画像処理、通信用信号処理、生体信号処理、地震データ処理など、様々な分野における信号処理に使用され得る。本発明の実施形態は、たとえば、有限インパルス応答（ＦＩＲ）フィルタ処理およびハードウェアアクセラレータにおけるディジタル信号プロセッサ（ＤＳＰ）で実施され得る。説明を簡単にするために、本発明の一部の実施形態はＦＩＲフィルタに関して記載されるが、本発明はＦＩＲフィルタに限定されるものではなく、任意の乗算および累算（マルチＭＡＣ）アーキテクチャに適用可能である。
【００１２】
本発明の実施形態は、各々が乗算器および加算器を備える２つ以上の乗加算器のチェーンを含んでいてもよい。乗加算器は、チェーンの第１の乗加算器の出力結果がチェーンの第２の後続乗加算器の加算器への入力として供給され、チェーンの最後の乗加算器の出力結果がチェーンの第１の乗加算器の加算器への入力として提供されるように配置されてもよい。
【００１３】
ここで、本発明の実施形態に従ってプロセッサを含む例示的なデバイスのブロック図である図１を参照する。例示的なデバイス１００は、プロセッサ１０１と、データ・メモリ・ユニット１０２と、プログラム・メモリ・ユニット１０３とを備える。デバイス１００は、コンピュータデバイス、携帯デバイス、家電製品デバイスなど、任意のディジタルデバイスであってもよい。プロセッサ１０１は、ディジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）であってもよく、任意の他のハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せで実施されてもよい。プロセッサ１０１は、データ・メモリ・バス１０４を介してデータ・メモリ・ユニット１０２に結合され、プログラム・メモリ・バス１０５を介してプログラム・メモリ・ユニット１０３に結合される。データ・メモリ１０２およびプログラムメモリ１０３は、２つの別々のメモリとして実施されてもよく、単一のメモリユニット内に集積されてもよい。
【００１４】
図１に関して、プロセッサ１０１に対する例示的なアーキテクチャが記載されるが、他のアーキテクチャも可能であることを当業者は理解されたい。プロセッサ１０１は、プログラム制御ユニット１０８、ロード／記憶ユニット１０７、算術論理ユニット（ＡＬＵ）１１１、およびメモリコントローラ１０９を含む。メモリコントローラ１０９は、データ・メモリ・バス１０４に結合されたデータ・メモリ・コントローラ（図示せず）と、プログラム・メモリ・バス１０５に結合されたプログラム・メモリ・コントローラ（図示せず）とを含む。ロード／記憶ユニット１０７は、データ・メモリ・ユニット１０２からのロード動作およびデータ・メモリ・ユニット１０２への記憶動作を実行する。プログラム制御ユニット１０８は、プログラム・メモリ・ユニット１０３から機械語命令を検索、デコード、およびディスパッチし、一般に、プログラムの流れを管理する。
【００１５】
ＡＬＵ１１１は、２つ以上の乗加算（ＭＡＣ）ユニットまたは構造体と算術論理演算を備えるマルチ乗加算（ＭＡＣ）ユニットまたはマルチ乗加算器１１０と、機能ユニット１１２とを含む。機能ユニット１１２は、加算機能、減算機能、ビット操作、算術論理演算および／または他の一般演算、ならびにこれらの任意の組合せを含む１つまたは複数の機能性を実行してもよい。図１の例示的な説明においては、単一のマルチＭＡＣユニットおよび単一の機能ユニットが示されるが、本発明はこの点において限定されるものではなく、本発明の実施形態に従っていかなる数のマルチＭＡＣユニットおよび機能ユニットが使用されてもよいことを当業者は理解されたい。
【００１６】
マルチＭＡＣユニット１１０は、複数のＭＡＣユニットを同時に使用することによってプロセッサの性能を最大にする。マルチＭＡＣユニット１１０は、低いワット損を有する複数のＭＡＣユニットでのＭＡＣ演算のスケージューリングを可能にするように構成される。
【００１７】
デバイス１００は、処理機能または演算を実行し得るか、あるいは処理機能または演算の実行に関与し得る他のブロック、モジュール、演算、およびユニットをさらに含んでいてもよいことに留意されたい。図１の例示的な説明において、プロセッサ１０１は、プログラム制御ユニット１０８、ロード／記憶ユニット１０７、ＡＬＵ１１１、およびメモリコントローラ１０９を含むが、本発明は、この点に関して限定されず、本発明の実施形態に従って、任意の数の任意の種類のブロック、ユニット、および／またはモジュールがプロセッサ１０１およびデバイス１００に含まれてもよいことを当業者は理解されたい。
【００１８】
ここで、本発明の例証的な実施形態に従って例示的なマルチＭＡＣユニットのブロック図である図２を参照する。マルチＭＡＣユニット２００などのマルチＭＡＣユニットは、図１のプロセッサ１０１などのプロセッサの一部であってもよい。マルチＭＡＣユニット２００は、複数のＭＡＣユニットまたは構造体、たとえば、ＭＡＣユニット２１０、ＭＡＣユニット２２０、ＭＡＣユニット２３０、およびＭＡＣユニット２４０を含む。図２の例示的な説明には４つのＭＡＣユニットが示されるが、本発明はこの点に関して限定されず、本発明の実施形態に従って、２つ以上のＭＡＣユニットが使用されてもよいことを当業者は理解されたい。
【００１９】
ＭＡＣユニットの各々は、乗算器、加算器、およびメモリ素子またはユニットを含んでいてもよい、たとえば、ＭＡＣユニット２１０は、乗算器２１１、加算器２１２、およびメモリユニットまたは素子２１３を含み、ＭＡＣユニット２２０は、乗算器２２１、加算器２２２、およびメモリ素子２２３を含み、ＭＡＣユニット２３０は、乗算器２３１、加算器２３２、およびメモリ素子２３３を含み、ＭＡＣユニット２４０は、乗算器２４１、加算器２４２、およびメモリ素子２４３を含む。メモリ素子２１３、２２３、２３３、および２４３は、クロック信号２０１によって動作されるクロックドメモリ素子であり、各メモリ素子は、クロック信号によって決定される所定期間、それぞれの加算器から受け取られた値を記憶してもよい。
【００２０】
ＭＡＣユニット２１０、２２０、２３０、および２４０の各々は、入力オペランドを受け取るための２つの入力信号を含む。入力オペランドは、たとえば、図１のロード／記憶ユニット１０７を介してデータ・メモリ１０２から受け取られる。たとえば、ＭＡＣユニット２１０の乗算器２１１は、入力信号２１４を介して係数値と入力信号２１５を介してデータ値とを受け取り、ＭＡＣユニット２２０の乗算器２２１は入力信号２２４を介して係数値と入力信号２２５を介してデータ値とを受け取り、ＭＡＣユニット２３０の乗算器２３１は入力信号２３４を介して係数値と入力信号２３５を介してデータ値とを受け取り、ＭＡＣユニット２４０の乗算器２４１は入力信号２４４を介して係数値と入力信号２４５を介してデータ値とを受け取る。
【００２１】
本発明の例示的な実施形態に従って、マルチＭＡＣユニット２００は、ＦＩＲフィルタ処理に使用される。有限インパルス応答（ＦＩＲ）フィルタは、入力信号を出力信号に関係付ける次式によって規定される。
【００２２】
ｙ［ｎ］＝Σｃ［ｉ］・ｘ［ｎ−ｉ］
ここで、ｘ［ｎ］は入力信号のデータ値を表し、ｃ［ｉ］は係数値を表し、ｙ［ｎ］は出力信号を表し、和はフィルタ次数Ｎに従ってゼロに等しいｉからＮに等しいｉまでのすべてのｉ係数にわたって取られ、ここで、Ｎ次フィルタは式の右辺に（ｎ＋１）項を有する。
【００２３】
単一のＭＡＣ構成において、ＭＡＣユニットは、入力信号の係数値とデータ値とを入力オペランドとして受け取り、単一のＭＡＣ演算をクロックサイクルごとに実行する。係数値ｃ［ｉ］にはデータ値ｘ［ｎ−ｉ］が乗じられ、結果は単一の累算器にｙ［ｎ］出力信号として累算される。次のサイクルで、係数ｃ［ｉ＋１］にはデータ値ｘ［ｎ−ｉ−１］が乗じられ、結果は同じｙ［ｎ］出力に累算される。
【００２４】
マルチＭＡＣアーキテクチャにおいて、演算は並列処理されてもよい。たとえば、４−ＭＡＣアーキテクチャでは、各々が次式に従って異なる出力信号ｙ［ｎ］〜ｙ［ｎ＋３］に対応する４つのＭＡＣ演算がサイクルごとに行なわれてもよい。
【００２５】
ｙ［ｎ］＝Σｃ［ｉ］・ｘ［ｎ−ｉ］
ｙ［ｎ＋１］＝Σｃ［ｉ］・ｘ［ｎ＋１−ｉ］
ｙ［ｎ＋２］＝Σｃ［ｉ］・ｘ［ｎ＋２−ｉ］
ｙ［ｎ＋３］＝Σｃ［ｉ］・ｘ［ｎ＋３−ｉ］
本発明の実施形態に従って、ワット損を低減しうる効率的な方法でユニット２１０〜２４０などの４つの有効なＭＡＣユニットで４並列演算がスケジュールされてもよい。各ＭＡＣユニットに対して、出力の計算に必要なすべてのサイクルに対して乗算器への入力オペランドとして単一の係数値を使用することによって、比較的低いワット損が実現され得る。
【００２６】
表１および２は、８サイクル間に同じ係数入力を使用すると同時にデータ被乗数入力がサイクルごとに次のデータインデックスで置き換えられる、４並列ＭＡＣユニットに対するスケジュールを示す。これらの８サイクル中、１１の異なる出力信号が４つのＭＡＣユニット（ｙ［ｎ＋ｋ−７］〜ｙ［ｎ＋ｋ＋３］）によって処理されている。
【００２７】
【表１】
0005544240.tif 000002
【００２８】
【表２】
0005544240.tif 000003
本発明の例示的な実施形態に従って表１および２に示されるように、サイクルごとに、４つのＭＡＣ演算が行なわれる。たとえば、サイクル１は、以下の演算を含む。すなわち、（１）ＭＡＣユニット２１０の乗算器２１１の入力ノード２１４で受け取られた係数ｃ［１］は被乗数ｘ［ｎ］を乗じられて、ＭＡＣユニット２１０の加算器または累算器２１２で出力信号ｙ［ｎ＋１］に累算され、（２）ＭＡＣユニット２２０の乗算器２２１の入力ノード２２４で受け取られた係数ｃ［２］は被乗数ｘ［ｎ］を乗じられて、ＭＡＣユニット２２０の加算器または累算器２２２で出力信号ｙ［ｎ＋２］に累算され、（３）ＭＡＣユニット２３０の乗算器２３１の入力ノード２３４で受け取られた係数ｃ［３］は被乗数ｘ［ｎ］を乗じられて、ＭＡＣユニット２３０の加算器または累算器２３２で出力信号ｙ［ｎ＋３］に累算され、（４）ＭＡＣユニット２４０の乗算器２４１の入力ノード２４４で受け取られた係数ｃ［４］は被乗数ｘ［ｎ］を乗じられて、ＭＡＣユニット２４０の加算器または累算器２４２で出力信号ｙ［ｎ＋４］に累算される。結果は、信号線２４６を介してメモリ素子２４３からシフトアウトされ（shifted out）、必要に応じて、バッファー（図示せず）に記憶されて、その後のサイクルで、たとえば、係数ｃ［１］の結果を累算するためにＭＡＣユニット２１０に戻される。
【００２９】
本発明の例示的な実施形態に従って、ＭＡＣユニット２１０、２２０、２３０、および２４０の各々はすべてのサイクルで同じ係数入力を受け取り、すなわち、ＭＡＣユニット２１０、２２０、２３０、および２４０の乗算器は、たとえば、所定の時間、一定または不変である、有限インパルス応答フィルタの係数を受け取る。たとえば、同じ係数値ｃ［ｋ］は、表１の列２に示されるように、指定されたｋ〜ｋ＋７すべてのサイクル間にＭＡＣユニット２１０の乗算器２１１の入力信号２１４で受け取られる。同様に、係数ｃ［ｋ＋１］は、表１の列５に示されるように、８サイクル間にＭＡＣユニット２２０の乗算器２２１の入力ノード２２４で受け取られ、係数ｃ［ｋ＋２］は、表２の列２に示されるように、すべてのサイクル間にＭＡＣユニット２３０の乗算器２３１の入力２３４で受け取られ、係数ｃ［ｋ＋３］は、表２の列５に示されるように、８サイクル間にＭＡＣユニット２４０の乗算器２４１の入力２４４で受け取られる。
【００３０】
一部の例では、ＭＡＣユニットの数は、各出力信号ｙ［ｎ］の計算に使用される係数の数より少なくてもよい。たとえば、各出力信号ｙ［ｎ］には８つのｃ［ｉ］係数を使用してもよい。したがって、各出力信号に対する最初の４つの係数に基づいて累算を終了した後、累算は次の組の係数ｃ［５］〜ｃ［８］に対する各１１の出力信号に対して続いてもよい。たとえば、ＭＡＣユニット２１０は次のサイクル間に係数ｃ［５］を受け取ってもよく、ＭＡＣユニット２２０は次のサイクル間に係数ｃ［６］を受け取ってもよく、ＭＡＣユニット２３０は次のサイクル間に係数ｃ［７］を受け取ってもよく、ＭＡＣユニット２４０は次のサイクル間に係数ｃ［８］を受け取ってもよい。
【００３１】
サイクルごとのデータ被乗数入力は、次のデータインデックスで置き換えられる。たとえば、サイクルｋの後のＭＡＣユニット２１０において、データｘ［ｎ］はデータｘ［ｎ−１］で置き換えられ、サイクルｋ＋ｍの後、データｘ［ｎ−ｍ］はデータｘ［ｎ−ｍ−１］で置き換えられる。したがって、サイクル２は、以下の演算を含む。すなわち、（１）ＭＡＣユニット２１０の乗算器２１１の入力信号２１４で受け取られる係数ｃ［１］は、被乗数ｘ［ｎ−１］を乗じられて、ＭＡＣユニット２１０の加算器または累算器２１２で出力信号ｙ［ｎ］に累算され、（２）ＭＡＣユニット２２０の乗算器２２１の入力信号２２４で受け取られる係数ｃ［２］は、被乗数ｘ［ｎ−１］を乗じられて、ＭＡＣユニット２２０の加算器２２２で出力信号ｙ［ｎ＋１］に累算され、（３）ＭＡＣユニット２３０の乗算器２３１の入力信号２３４で受け取られる係数ｃ［３］は、被乗数ｘ［ｎ−１］を乗じられて、ＭＡＣユニット２３０の加算器または累算器２３２で出力信号ｙ［ｎ＋２］に累算され、（４）ＭＡＣユニット２４０の乗算器２４１の入力信号２４４で受け取られる係数ｃ［４］は、被乗数ｘ［ｎ−１］を乗じられて、ＭＡＣユニット２４０の加算器２４２で出力信号ｙ［ｎ＋３］に累算される。結果は、信号線２４６を介してメモリ素子２４３からシフトアウトされてもよく、必要に応じて、バッファ（図示せず）に記憶されて、その後のサイクルで、たとえば、係数ｃ［１］の結果を累算するためにＭＡＣユニット２１０に戻されてもよい。
【００３２】
本発明の実施形態に従って、表１および２に示されるように、たとえば、８つの乗算項を有する所与の出力信号の場合、各乗算の出力結果は、異なる累算器あるいは加算器２１２、２２２、２３２、または２４２に累算され、ここで、各サイクルに対して別のＭＡＣユニットが使用される。最後のＭＡＣユニットでは、結果がマルチＭＡＣユニット２００からシフトアウトされて、スケジュールの後の段階で新たな係数を累積するために使用される。
【００３３】
これは、累算器の出力結果を次のサイクルのために隣接するＭＡＣユニットにシフトすることによって実施される。たとえば、ＭＡＣユニット２１０の加算器２１２のサイクルｋにおける出力結果は、メモリ素子２１３および出力線２１６を介して次のサイクル用にＭＡＣユニット２２０の加算器２２２に移動、シフト、またはマッピングされる。表１で示されるように、ＭＡＣユニット２１０の累算器２１２はサイクルｋで出力信号ｙ［ｎ＋ｋ］を保持し、ＭＡＣユニット２２０の累算器２２２は次のサイクルｋ＋１で出力信号ｙ［ｎ＋ｋ］を保持する。さらに、ＭＡＣユニット２２０の累算器２２２のサイクルｋ＋１における出力結果は、メモリ素子２２３および出力線２２６を介して次のサイクル用にＭＡＣユニット２３０の加算器または累算器２３２に移動、シフト、またはマッピングされる。表２で示されるように、ＭＡＣユニット２３０の累算器または加算器２３２は、サイクルｋ＋２で出力信号ｙ［ｎ＋ｋ］を保持する。さらに、ＭＡＣユニット２３０の累算器２３２のサイクルｋ＋２における出力結果は、メモリ素子２３３および信号線２３６を介して次のサイクル用にＭＡＣユニット２４０の加算器２４２に移動、シフト、またはマッピングされる。表２で示されるように、ＭＡＣユニット２４０の累算器または加算器２４２は、サイクルｋ＋３で出力信号ｙ［ｎ＋ｋ］を保持する。出力信号ｙ［ｎ＋ｋ］に対するＭＡＣユニット２４０の累算器２４２の出力結果は、メモリ素子２４３および信号線２４６を介してマルチＭＡＣユニット２００の最終結果としてシフトアウトされる。
【００３４】
表１および２で示されるように、図２によって実施されるスケジュールは、４つの「スタンドアロン」ＭＡＣユニットを使用することに関連してワット損が減少し、各ＭＡＣユニットは、４つすべての乗算器への入力としての同じ係数ｃ［ｉ］と、異なるデータ被乗数ｘ［ｎ−ｉ］〜ｘ［ｎ＋３−ｉ］とを用いて異なる出力信号ｙ［ｎ］を累算する。「スタンドアロン」構成の次のサイクルで、係数ｃ［ｉ＋１］は４つすべての乗算器への入力として使用され、各乗算器は次のデータ被乗数ｘ［ｎ−ｉ−１］〜ｘ［ｎ＋３−ｉ−１］を使用する。表１および２で示されるスケジュールは、マルチＭＡＣアーキテクチャにおいて有用なＭＡＣユニットの数が出力信号における係数の数を超えないときには、最適であるかもしれないが、係数の数が有用なＭＡＣユニットあるいは同時に処理するＭＡＣユニットの数よりも多い場合には、出力の各々を記憶および再ロードするという点ではコスト高であるかもしれない。
【００３５】
図２には４つのＭＡＣユニットが図示さているが、マルチＭＡＣアーキテクチャは任意数のＭＡＣユニットに一般化されてもよいことを当業者は理解されたい。ＭＡＣユニットの数がＰであれば、出力信号ｙ［ｎ］はシフトアウトされる前にＰ回演算される。ＭＡＣユニットの数がｉ係数の数よりも多いかｉ係数の数に等しいとき、表１〜２で示されるスケジュールは、ワット損および帯域幅の両方の点から効率的な最適スケジュールである。しかし、出力信号ｉの計算に使用される係数の数がＭＡＣユニットの数Ｐよりも多ければ、各出力信号ｙ［ｎ］の部分的な出力結果はマルチＭＡＣユニットに再ロードして戻される必要がある。部分的な出力信号結果の記憶および再ロード操作は、一定の条件において、記憶、帯域幅、およびワット損の点で効率を低下させ得る。
【００３６】
ここで、本発明の一部の実施形態に従って例示的なマルチＭＡＣユニットのブロック図である図３を参照する。マルチＭＡＣユニットなどのマルチＭＡＣユニットは、図１のプロセッサ１０１などのプロセッサなどの一部であってもよい。マルチＭＡＣユニット３００は、複数のＭＡＣユニットまたは構造体、たとえば、ＭＡＣユニット３１０、ＭＡＣユニット３２０、ＭＡＣユニット３３０、およびＭＡＣユニット３４０を含む。各マルチＭＡＣユニット３１０〜３４０は、それぞれ乗算器、加算器、および累算器を含む。マルチＭＡＣユニット３００は、図２のマルチＭＡＣユニット２００に類似しており、類似した素子は類似した数字で参照される。図３の例示的な説明では４つのＭＡＣユニットが示されているが、本発明は、この点に関して限定されず、本発明の実施形態に従って２つ以上のＭＡＣユニットが使用されてもよいことを当業者は理解されたい。
【００３７】
本発明の実施形態に従って、マルチＭＡＣユニット３４０のメモリ素子２４３は、信号線２４６を介してマルチＭＡＣユニット３１０の加算器２１２に結合される。マルチＭＡＣユニット３００のアーキテクチャは、表３および４で示されるスケジュールの使用を可能にする。このようなスケジュールは、出力信号の計算に使用される係数の数がマルチＭＡＣユニットにおけるＭＡＣ構造体の数よりも多いとき適切である。
【００３８】
本発明の実施形態に従って、スケジュールは、４つのＭＡＣユニットを有するマルチＭＡＣユニット３００によって実施される。各ＭＡＣユニットは、４つのサイクル間に同じ係数オペランドを入力として受け取る。このとき、係数インデックスは、４だけインクリメントされる。一般に、Ｐ個のＭＡＣユニットを有するアーキテクチャは、係数インデックスを新しいインデックスｋ＋Ｐで置き換える前に、Ｐサイクルの間、すべての乗算器への係数入力の係数インデックスｋを維持する。このようなスケジュールは、結果を記憶する前に、すべてのｉ係数に対して出力ｙ［ｎ］で動作する間、乗算器のワット損を最適化し得る。
【００３９】
表３および４は、４サイクル間、同じ係数入力を使用し、この後、係数インデックスを４だけインクリメントし、別のサイクル間、新しい係数入力を使用する４並列のＭＡＣユニットに対するスケジュールを示す。このスケジュールでは、データ被乗数入力はサイクルごとに次のデータインデックスで置き換えられる。これら８サイクルの間、４つの出力信号が４つのＭＡＣユニット（ｙ［ｎ＋ｋ−３］〜ｙ［ｎ＋ｋ］）によって処理されている。
【００４０】
【表３】
0005544240.tif 000004
【００４１】
【表４】
0005544240.tif 000005
表３および４で示されるように、係数ｃ［ｋ］は４サイクル間（サイクルｋ〜サイクルｋ＋３）にＭＡＣユニット３１０の乗算器２１１の入力２１４で受け取られ、４サイクル後、係数ｃ［ｋ＋４］は別の４サイクル間（サイクルｋ＋４〜サイクルｋ＋７）に同じ入力で受け取られる。表３および４でさらに示されるように、データ被乗数入力は、サイクルごとに次のデータインデックスで置き換えられる。たとえば、ＭＡＣユニット３１０において、サイクルｋ後に、データｘ［ｎ］はデータｘ［ｎ−１］で置き換えられ、サイクルｋ＋ｍ後に、データｘ［ｎ−ｍ］はデータｘ［ｎ−ｍ−１］で置き換えられる。
【００４２】
これは、次のサイクル用に累算器の出力結果を隣接するＭＡＣユニットにシフトすることによって実施される。各乗算の出力は、サイクルごとに異なる累算器に累算される。たとえば、８つの乗算項を有する所与の出力信号では、各乗算の出力結果は、異なる累算器２１２、２２２、２３２、または２４２に累算され、この場合、各サイクルの間に別のＭＡＣユニットが使用される。４サイクル後、結果はチェーン２４０についてＭＡＣユニットからチェーン２１０の第１のＭＡＣユニットに移動される。
【００４３】
これは、次のサイクルのために累算器出力の各々を隣接するＭＡＣユニットにシフトすることによって実施される。最後のＭＡＣユニットの出力は、第１のＭＡＣユニットの加算器にシフトバックされる（shifted back）。
【００４４】
たとえば、ＭＡＣユニット３１０の加算器２１２の出力２１６はＭＡＣユニット３２０の加算器２２２に移動され、ＭＡＣユニット３２０の加算器２２２の出力２２６はＭＡＣユニット３３０の加算器２３２に移動され、ＭＡＣユニット３３０の加算器２３２の出力２３６はＭＡＣユニット３４０の加算器２４２に移動され、出力２４６はＭＡＣユニット３１０の加算器２１２への入力としてシフトバックされる。
【００４５】
たとえば、ＭＡＣユニット３１０の累算器２１２のサイクルｋにおける出力結果は、次のサイクル用にＭＡＣユニット３２０の加算器２２２に信号線２１６を介して移動、シフト、またはマッピングされる。表３で示されるように、ＭＡＣ３１０の累算器２１２は、サイクルｋにおいて出力信号ｙ［ｎ＋ｋ］を保持し、ＭＡＣユニット３２０の累算器２２２は次のサイクルｋ＋１において出力信号ｙ［ｎ＋ｋ］を保持する。さらに、ＭＡＣユニット３２０の累算器２２２のサイクルｋ＋１における出力結果は、次のサイクル用にＭＡＣユニット３３０の加算器２３２に信号線２２６を介して移動、シフト、またはマッピングされる。表４で示されるように、ＭＡＣユニット３３０の累算器２３２は、サイクルｋ＋２において出力信号ｙ［ｎ＋ｋ］を保持する。さらに、ＭＡＣユニット３３０の累算器２３２のサイクルｋ＋２における出力結果は、次のサイクル用にＭＡＣユニット３４０の加算器２４２に信号線２３６を介して移動、シフト、またはマッピングされる。表４で示されるように、ＭＡＣユニット３４０の累算器２４２は、サイクルｋ＋３において出力信号ｙ［ｎ＋ｋ］を保持する。出力信号ｙ［ｎ＋ｋ］に対するＭＡＣユニット３４０の累算器２４２のサイクルｋ＋３における出力結果は、信号線２４６を介してＭＡＣユニット３１０の累算器または加算器２１２にシフトバックされる。
【００４６】
スケジュールは別の４サイクル間続き、出力信号ｙ［ｎ＋ｋ］に対するマルチＭＡＣユニットの最終出力結果は、８つのすべての係数に対するすべての乗算を含む。
４つのＭＡＣユニットを有する図３に示されるマルチＭＡＣアーキテクチャにおいて、加算器の各出力ｙ［ｎ］は、４回演算され、第１の加算器２１２にシフトバックされる前に４つの乗算器の４つの乗算の結果が累算される。このアーキテクチャはＰ個のＭＡＣユニットを有するアーキテクチャに一般化されてもよく、この場合、各出力はシフトバックされる前にＰ回演算されてもよいことを当業者は理解されたい。
【００４７】
図３で示されるシステムおよび方法の実際の実験結果から、このようなアーキテクチャは、各々が「スタンドアロン」ＭＡＣとして働く複数のＭＡＣユニットを有するシステムと比較して、およそ２３％の省電力を実現し得ることを証明した。２３％の省電力は、ランダム係数入力およびランダムデータ入力を用いて測定された。多くのアプリケーションで見られるランダム係数入力および緩慢に変化するデータ入力を採用したところ、各々が「スタンドアロン」ＭＡＣとして動作する複数のＭＡＣユニットを有するシステムと比較して、およそ５０％の省電力が得られた。
【００４８】
ここで、本発明の実施形態に従って例示的なマルチＭＡＣユニットのブロック図である図４を参照する。たとえば、マルチＭＡＣユニット４００は、たとえば、図１のマルチＭＡＣユニット１１０として実施される。本発明の実施形態に従って、マルチＭＡＣユニット４００のアーキテクチャは、２つ以上のスケジュールの実施を可能にする。マルチＭＡＣユニット４００は、複数のＭＡＣユニットまたはＭＡＣ構造体、たとえば、ＭＡＣユニット４１０、ＭＡＣユニット４２０、ＭＡＣユニット４３０、およびＭＡＣユニット４４０を含む。図４の例示的な説明では４つのＭＡＣユニットが示されているが、本発明はこの点に関して限定されず、本発明の実施形態に従って２つ以上のＭＡＣユニットが使用されてもよいことを当業者は理解されたい。
【００４９】
ＭＡＣユニット４１０〜４４０の各々は、ＭＡＣユニット２００および３００と同様に、乗算器、加算器、およびメモリ素子を含み、さらにマルチプレクサを含む。たとえば、ＭＡＣユニット４１０はマルチプレクサ４１９を含み、ＭＡＣユニット４２０はマルチプレクサ４２９を含み、ＭＡＣユニット４３０はマルチプレクサ４３９を含み、ＭＡＣユニット４４０はマルチプレクサ４４９を含む。
【００５０】
累算器の出力は別のＭＡＣユニットにシフトされてサイクルごとに異なる累算器に累算されるか、あるいは、同じ加算器に累算される。ＭＡＣユニット４１０、４２０、４３０、および４４０の各々において、加算器の出力を同じ加算器への入力として使用するか、それとも加算器の出力を隣接するＭＡＣユニットの加算器への入力としてシフトするかどうかに関して選択がなされる。このような論理は、図４で示されるマルチプレクサ４１９、４２９、４３９、および４４９によって実施される。マルチプレクサ４２９は、加算器２１２の出力と加算器２２２の出力から選択し、出力の一方を加算器２２２の入力に移動する。マルチプレクサ４３９は、加算器２２２の出力と加算器２３２の出力から選択し、出力の一方を加算器２３２の入力に移動する。マルチプレクサ４４９は、加算器２３２の出力と加算器２４２の出力から選択し、出力の一方を加算器２４２の入力に移動する。マルチプレクサ４１９は、加算器２１２の出力と加算器２４２の出力から選択し、出力の一方を加算器２１２の入力に移動する。
【００５１】
図４に示されるアーキテクチャは任意数のＭＡＣユニットを備えるアーキテクチャに一般化されてもよいことを当業者は理解されたい。２つのＭＡＣユニット、すなわち、第１および第２のＭＡＣユニットを備えるアーキテクチャを有する本発明の実施形態は、第１の加算器の出力または第２の加算器の出力のいずれかを第１の加算器への入力として選択するための第１のマルチプレクサと、第２の加算器の出力または第１の加算器の出力のいずれかを第２の加算器への入力として選択するための第２のマルチプレクサとを含む。
【００５２】
ここで、本発明の実施形態に従って多数のＭＡＣユニットでのＭＡＣ演算をスケジュールする方法のフローチャートである図５を参照する。方法の演算は、たとえば、図１のマルチＭＡＣユニット１１０、図２のマルチＭＡＣユニット２００、図３のマルチＭＡＣユニット３００、および／または他の適切なユニット、デバイス、および／またはシステムによって実施される。
【００５３】
ボックス５００で示されるように、方法は、２つ以上の乗加算器またはＭＡＣユニットのチェーンの各乗加算器によってオペランドを受け取るステップを含む。各ＭＡＣユニットは、少なくとも１つの乗算器および加算器を含む。たとえば、２−ＭＡＣユニットの実施は、第１のＭＡＣユニット「Ａ」および第２のＭＡＣユニット「Ｂ」を含む。ＭＡＣユニット［Ａ］は第１の乗算器「Ａ」および第１の加算器「Ａ」を含み、ＭＡＣユニット［Ｂ］は第２の乗算器「Ｂ」および第２の加算器「Ｂ」を含む。
【００５４】
ボックス５１０で示されるように、方法は、ＭＡＣユニットの各々の乗算器によって、受け取られたオペランドを乗じることを含む。たとえば、方法は、第１の乗算器「Ａ」によって２つのオペランドを乗じること、第２の乗算器「Ｂ」によって他の２つのオペランドを乗じることを含む。乗算は同時に実行されてもよく、たとえば、乗算プロセスはクロック信号によって同期化されてもよい。本発明の実施形態に従って、第１の乗算器によって乗じられる２つのオペランドの一方は、所定期間、たとえば、所定クロックサイクル間一定であり、第２の乗算器によって乗じられる２つのオペランドの一方は、所定期間、たとえば、所定クロックサイクル間一定である。
【００５５】
ボックス５２０で示されるように、方法は、第２の乗算器「Ｂ」の積を第２の加算器「Ｂ」によって第１の加算器「Ａ」の出力に加算することを含む。第１の乗算器「Ａ」の積が、たとえば、図２で示されるように、第１の加算器「Ａ」への唯一の入力である場合、第１の加算器「Ａ」の出力は、第１の乗算器「Ａ」の積と同じである。一部の実施形態において、加算器「Ａ」は、別の入力、たとえば、図３で示され、さらにボックス５３０で示されるように、第２の加算器「Ｂ」から出力される記憶された結果を受け取るので、第１の加算器「Ａ」の出力は第１の乗算器「Ａ」の積とは異なる。加算器「Ａ」および加算器「Ｂ」の加算結果の各々は、専用のクロックメモリ素子、たとえば、Ｄ型フリップフロップ素子に移動されて記憶される。たとえば、第２の乗算器「Ｂ」の積と第１のＭＡＣユニットの第１の加算器「Ａ」の出力との和は、所定期間、たとえば、１クロックサイクル間、第１の加算器「Ａ」に結合された第１のメモリ素子に保存される。
【００５６】
本発明の一部の実施形態に従って、ボックス５３０で示されるように、方法は、オプションとして、第２の加算器「Ｂ」の出力を第１の加算器「Ａ」によって第１の乗算器「Ａ」の積に加算することを含む。第２の加算器「Ｂ」の累算された出力結果は次のクロックサイクルにおいて第１の乗算器「Ａ」の結果に加算されていること、すなわち、第２の加算器「Ｂ」の累算された出力結果は乗算器「Ａ」によって２つの新しいオペランドを乗じる結果に加算されていることを当業者は理解されたい。
【００５７】
図５の方法の例示的なフローチャートには２つのＭＡＣユニットが示されているが、本発明はこの点に関して限定されず、本発明の実施形態に従って、ＭＡＣユニットのチェーンが２つ以上のＭＡＣユニットを含んでいてもよいことを当業者は理解されたい。２つ以上のＭＡＣユニットを有する任意の実施において、ＭＡＣユニットの各々の各加算器はその出力を連続的に後続または隣接するＭＡＣユニットの加算器に移動してもよいが、第１のＭＡＣユニットの第１の加算器は最後の加算器の出力を受け取ってもよく、この出力を次のサイクルで第１のＭＡＣの第１の乗算器の積、すなわち、第１の乗算器によって乗じられる次の２つのオペランドの積に加算してもよい。本発明の実施形態に従って、他の演算または何組かの演算が使用されてもよい。
【００５８】
本発明の実施形態は、コンピュータまたはプロセッサ可読媒体、あるいは、コード化命令または記憶命令、たとえば、プロセッサまたはコントローラによって実行されるとき本明細書で開示された方法を実行するコンピュータ実行可能命令を含む、たとえば、メモリ、ディスクドライブ、またはＵＳＢフラッシュメモリなどのコンピュータまたはプロセッサ記憶媒体などの品目を含んでいてもよい。
【００５９】
本発明の実施形態は、複数の中央処理装置（ＣＰＵ）またはその他の適切な多目的または特定のプロセッサまたはコントローラ、複数の入力ユニット、複数の出力ユニット、複数のメモリユニット、複数の記憶ユニットなどの構成要素を含んでいてもよいが、これらに限定されない。このようなシステムは、さらに、他の適切なハードウェア構成要素および／またはソフトウェア構成要素を含んでいてもよい。一部の実施形態において、このようなシステムは、たとえば、パーソナルコンピュータ、デスクトップコンピュータ、モバイルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、端末、ワークステーション、サーバーコンピュータ、携帯端末（ＰＤＡ）デバイス、タブレットコンピュータ、ネットワークデバイスなど適切なコンピュータデバイスを含んでいてもよく、あるいはこれらのデバイスであってもよい。
【００６０】
本発明のいくつかの特徴が本明細書において図示され説明されてきたが、ここで多くの修正形態、代替形態、変更形態、および等効物が当業者に思い浮かぶであろう。したがって、添付の特許請求の範囲は本発明の真の趣旨の範囲内に入るようなすべての修正形態および変更形態を網羅することが意図されていることを理解されたい。
【００６１】
本発明の実施形態に従って、最小値の「Ｐ」を有するアーキテクチャは、２つのＭＡＣユニットに等しく、すなわち、第１および第２のＭＡＣユニットを含んでいてもよく、第１のＭＡＣユニットは第１の乗算器および第１の加算器を備えていてもよく、第１の乗算器は２つのオペランドを受け取って乗じてもよく、第２のＭＡＣユニットは第２の乗算器および第２の加算器を備えていてもよく、第２の乗算器は２つのオペランドを受け取って乗じてもよく、第２の加算器は第２の乗算器の積を受け取って第１の加算器の出力に加算してもよい。第１の加算器は、オプションとして、第１の乗算器の積を受け取って第２の加算器（図３で示される）の出力に加算してもよく、あるいは、第１の加算器は、オプションとして、第１の乗算器の積を受け取って事前に記憶された出力に加算してもよい。別の実施形態は、第３の乗算器および第３の加算器を備える第３のＭＡＣユニットをさらに備えていてもよく、第３の乗算器は２つのオペランドを受け取って乗じてもよく、第３の加算器は第３の乗算器の積を受け取って第２の加算器の出力に加算してもよい。第１の加算器は、オプションとして、第１の乗算器の積を受け取って第３の加算器（図３で示される）の出力に加算してもよい。
【００６２】
本発明の実施形態に従って、第１の乗算器によって受け取られる２つのオペランドの一方は、所定期間、たとえば、所定数のクロックサイクル間に同じであってもよく、第２の乗算器によって受け取られる２つのオペランドの一方は、所定期間、たとえば、所定数のクロックサイクル間同じであってもよい。第１のＭＡＣユニットは、所定期間、たとえば、所定数のクロックサイクル間第１の加算器の出力を保持するための第１のメモリ素子をさらに備えていてもよく、第２のＭＡＣユニットは、所定期間、たとえば、所定数のクロックサイクル間第２の加算器の出力を保持するための第２のメモリ素子を備えていてもよい。
【符号の説明】
【００６３】
１００  デバイス
１０１  プロセッサ
１０２  データ・メモリ・ユニット
１０３  プログラム・メモリ・ユニット
１０４  データ・メモリ・バス
１０５  プログラム・メモリ・バス
１０７  ロード／記憶ユニット
１０８  プログラム制御ユニット
１０９  メモリコントローラ
１１０  マルチMACユニット
１１１  算術論理ユニット（ＡＬＵ）
１１２  機能ユニット
２００、３００、４００  マルチＭＡＣユニット
２０１  クロック信号
２１０、２２０、２３０、２４０、３１０、３２０、３３０、３４０、４１０、４２０、４１０、４２０、４３０、４４０  ＭＡＣユニット
２１１、２２１、２３１、２４１  乗算器
２１２、２２２、２３２、２４２  加算器
２１３、２２３、２３３、２４３  メモリユニットまたは素子
２１４、２１５、２２４、２２５、２３４、２３５、２４４、２５５  入力信号
２１６、２２６、２３６、２４６  出力線
２２６、２３６、２４６  信号線
４１９、４２９、４３９、４４９  マルチプレクサ
５００、５１０、５２０、５３０  ボックス
【図１】
0005544240.tif 000006
【図２】
0005544240.tif 000007
【図３】
0005544240.tif 000008
【図５】
0005544240.tif 000009
【図４】
0005544240.tif 000010