(57)【要約】一実施例において、未訂正のターゲット・モジュロ・アドレス、および少なくとも１つの訂正されたターゲット・モジュロ・アドレスを並行して生成するための複数の加算器を含むプロセッサが記述される。比較器は、循環バッファのためのベース・アドレス（ｂ）の関数、循環バッファの長さ（Ｌ）、指標アドレス（Ｉ）、および修正子値（Ｍ）からターゲット・モジュロ・アドレスの１つを選択する。一実施例において、比較器は、Ｉ＋Ｍ＜Ｂのとき第１の訂正されたターゲット・モジュロ・アドレスを、Ｉ＋Ｍ≧Ｂ＋Ｌのとき第２の訂正されたターゲット・モジュロ・アドレスを、そしてＢ≦Ｉ＋Ｍ＜Ｂ＋Ｌのとき未訂正のモジュロ・アドレスを選択する。
2004523823.tif 000002
【特許請求の範囲】
【請求項１】
指標アドレスおよび修正子値の関数としての未訂正のターゲット・モジュロ・アドレス、および、前記指標アドレス、前記修正子値および長さの値の関数としての少なくとも１つの訂正されたターゲット・モジュロ・アドレスを同時に出力する複数の加算器と、
前記修正子値のサインから独立した前記ターゲット・モジュロ・アドレスの１つを選択する比較器と、
から成ることを特徴とする装置。
【請求項２】
前記複数の加算器が、前記指標アドレスプラス前記修正子値に等しい第１ターゲット・モジュロ・アドレスを出力するために適合した第１加算器と、
前記指標アドレスプラス前記修正子値プラス長さの値に等しい第２ターゲット・モジュロ・アドレスを出力するために適合した第２加算器と、
前記指標アドレスプラス前記修正子値マイナス長さの値に等しい第３ターゲット・モジュロ・アドレスを出力するために適合した第３加算器と、
をさらに含むことを特徴とする請求項１記載の装置。
【請求項３】
前記指標アドレスを格納する指標レジスタと、
前記修正子値を格納する修正子レジスタと、
前記長さの値を格納する長さレジスタと、
をさらに含むことを特徴とする請求項２記載の装置。
【請求項４】
前記ターゲット・モジュロ・アドレスの１つを選択するマルチプレクサをさらに含むことを特徴とする請求項１記載の装置。
【請求項５】
前記マルチプレクサを制御する複数の選択信号を出力するために適合した比較器をさらに含むことを特徴とする請求項４記載の装置。
【請求項６】
循環バッファのためのベース・アドレス（ｂ）、前記循環バッファの長さ（Ｌ）、指標アドレス（Ｉ）、および修正子値（Ｍ）の関数として、前記比較器が前記選択信号をアサートすることを特徴とする請求項５記載の装置。
【請求項７】
前記比較器は、前記選択信号をＩ＋Ｍ＜Ｂのとき第１のステートへ、Ｉ＋Ｍ≧Ｂ＋Ｌのとき第２のステートへ、そしてＢ≦Ｉ＋Ｍ＜Ｂ＋Ｌのとき第３のステートへ、アサートすることを特徴とする請求項６記載の装置。
【請求項８】
指標アドレスおよび修正子値の関数としての未訂正のターゲット・モジュロ・アドレス、および、前記指標アドレス、前記修正子値および長さの値の関数としてのパラレル・アドレス中の少なくとも１つの訂正されたターゲット・モジュロ・アドレスを同時に生成する段階と、
前記ターゲット・モジュロ・アドレスの１つを修正子値のサインから独立して選択する段階と、
から成ることを特徴とする方法。
【請求項９】
前記ターゲット・モジュロ・アドレスを生成する段階が、
前記指標アドレスプラス前記修正子値に等しい第１ターゲット・モジュロ・アドレスを生成する段階と、
前記指標アドレスプラス前記修正子値プラス前記長さの値に等しい第２ターゲット・モジュロ・アドレスを生成する段階と、
前記指標アドレスプラス前記修正子値マイナス前記長さの値に等しい第３ターゲット・モジュロ・アドレスを生成する段階と、
をさらに含むことを特徴とする請求項８記載の方法。
【請求項１０】
前記指標アドレス、前記修正子値、および前記長さの値をモジュロ・レジスタの中に格納することをさらに含むことを特徴とする請求項９記載の方法。
【請求項１１】
前記ターゲット・モジュロ・アドレスの１つを選択する段階は、循環バッファのためのベース・アドレス（ｂ）、前記循環バッファの長さ（Ｌ）、指標アドレス（Ｉ）、および修正子値（Ｍ）の関数として、前記ターゲット・モジュロ・アドレスを選択する段階を含むことを特徴とする請求項８記載の方法。
【請求項１２】
前記ターゲット・モジュロ・アドレスの１つを選択する段階は、
Ｉ＋Ｍ＜Ｂのとき第１ターゲット・モジュロ・アドレスを選択する段階と、
Ｉ＋Ｍ≧Ｂ＋Ｌのとき第２ターゲット・モジュロ・アドレスを選択する段階と、
Ｂ≦Ｉ＋Ｍ＜Ｂ＋Ｌのとき第３ターゲット・モジュロ・アドレスを選択する段階と、
を含むことを特徴とする請求項１１記載の方法。
【請求項１３】
フラッシュ・メモリ装置と、
モジュロ・アドレシング・ユニットを含むプロセッサとから構成されるシステムであって、前記プロセッサは、
指標アドレスおよび修正子値の関数としての未訂正のターゲット・モジュロ・アドレス、および、前記指標アドレス、前記修正子値および長さの値の関数としての少なくとも１つの訂正されたターゲット・モジュロ・アドレスを同時に出力する複数の加算器と、
前記修正子値のサインから独立した前記ターゲット・モジュロ・アドレスの１つを選択する比較器と、
から成ることを特徴とするシステム。
【請求項１４】
前記モジュロ・アドレシング・ユニットが、前記ターゲット・モジュロ・アドレスの１つを選択するために、比較器を含むことを特徴とする請求項１３記載のシステム。
【請求項１５】
前記複数の加算器が、
前記指標アドレスプラス前記修正子値に等しい第１ターゲット・モジュロ・アドレスを出力するために適合した第１加算器と、
前記指標アドレスプラス前記修正子値プラス前記長さの値に等しい第２ターゲット・モジュロ・アドレスをを出力するために適合した第２加算器と、
前記指標アドレスプラス前記修正子値マイナス前記長さの値に等しい第３ターゲット・モジュロ・アドレスをを出力するために適合した第３加算器と、
を含むことを特徴とする請求項１３記載のシステム。
【請求項１６】
前記モジュロ・アドレシング・ユニットが、
前記指標アドレスを格納する指標レジスタと、
前記修正子値を格納する修正子レジスタと、
前記長さの値を格納する長さレジスタと、
をさらに含むことを特徴とする請求項１５記載のシステム。
【請求項１７】
前記モジュロ・アドレシング・ユニットが、前記ターゲット・モジュロ・アドレスの１つを選択するためのマルチプレクサを含むことを特徴とする請求項１３記載のシステム。
【請求項１８】
前記モジュロ・アドレシング・ユニットが、前記マルチプレクサを制御する複数の選択信号を出力するために適合した比較器をさらに含むことを特徴とする請求項１７記載のシステム。
【請求項１９】
前記比較器が、循環バッファのためのベース・アドレス（ｂ）、前記循環バッファの長さ（Ｌ）、指標アドレス（Ｉ）、および修正子値（Ｍ）の関数として前記選択信号をアサートすることを特徴とする請求項１８記載のシステム。
【請求項２０】
前記比較器が、Ｉ＋Ｍ＜Ｂのとき第１ステート、Ｉ＋Ｍ≧Ｂ＋Ｌのとき第２ステート、そしてＢ≦Ｉ＋Ｍ＜Ｂ＋Ｌのとき第３ステートの選択信号をアサートすることを特徴とする請求項１９記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタル信号プロセッサ（ＤＳＰ）は、高速フーリエ変換（ＦＦＴ）のようなデジタル信号処理機能をサポートするために特殊なハードウェアをしばしば含む。例えば、多くのＤＳＰが、データの操作や処理のために必要な、モジュロ・アドレシング・レジスタ、および、循環バッファのようなデータ構造にアクセスするための他のハードウェア・サポートを含む。
【発明の開示】
【０００２】
図１は、メモリ・デバイス７に結合されたプロセッサ５を有するシステム２の一例のブロック図である。プロセッサ５は、モジュロ・アドレシング・ユニット４を含み、それは、以下に記述するように、効率的なモジュロ・アドレス計算をサポートするための特殊なハードウェアを含む。ソフトウェア・アプリケーション８は、プロセッサ５によって実行されるときに、循環バッファ６のようなデータを処理するためにデータ構造を生成し維持する機械語命令を含む。メモリ７は、典型的には、開始メモリ・アドレスから終了メモリ・アドレスまでのメモリ・アドレスの範囲上に直線的に循環バッファ６を格納する。メモリ・デバイス７は、フラッシュ・メモリ、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、またはダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）のような異なるメモリ技術を含んでもよい。
【０００３】
ソフトウェア・アプリケーション８によって発行された機械語命令に応答して、モジュロ・アドレシング・ユニット４は、データを格納および取り出すために循環バッファ６と相互作用するのに必要な適切なメモリ・アドレスを計算する。循環バッファ６のメモリ・アドレス範囲は、複数の方法で定義することができる。例えば、以下は例示目的に使用されるものではあるが、メモリ・アドレス範囲は、ベース・アドレス（Ｂ）および長さ（Ｌ）の条件から定義することができる。また、範囲は、ベース・アドレス（ｂ）および終了アドレスの条件から定義することができる。
【０００４】
ソフトウェア・アプリケーション８が循環バッファ６にアクセスしている間、モジュロ・アドレシング・ユニット４は、データの正確なメモリ・アドレスを計算する責任を負う。さらに、モジュロ・アドレシング・ユニット４は、アドレスが、循環バッファ６のメモリ・アドレス範囲の外に位置するかどうか検出するための検出ロジックを含む。そのような状況において、以下に記述されるように、モジュロ・アドレシング・ユニット４は、メモリ・アドレスを循環バッファ６のアドレス範囲内の対応するメモリ・アドレスに「確保(wrap) 」する。
【０００５】
アドレスを循環バッファ６に確保するために、従来のシステムで使用される１つの技術は、ターゲット・アドレスがメモリ領域７Ａ内に位置するように、循環バッファ６の終端を越えてターゲット・アドレスをインクリメントするときに領域条件の外側を検出することである。この時、ターゲット・アドレスは、ターゲット・アドレスからバッファの長さを減じることにより、受理可能なアドレスに引き戻すことができる。同様に、循環バッファ６が終了アドレスから開始アドレスに向かって移動するときのように、修正子(modifier)（Ｍ）が負の数である場合、ターゲット・アドレスがメモリ領域７Ａ内の循環バッファの開始アドレスより下に位置するときに範囲外条件が検出される。この状況において、ターゲット・アドレスは、ターゲット・アドレスに循環バッファの長さを加えることにより、循環バッファへ引き戻すことができる。従来技術の多くは、訂正されたターゲット・アドレスを計算する前に、循環バッファ６が移動している方向を判定する修正子のサインを調査する。以下に記述されるように、モジュロ・アドレシング・ユニット４は、循環バッファが移動している方向とは無関係に、範囲のチェックおよびアドレスの生成をサポートする。
【０００６】
図２は、メモリ・デバイス７内の循環バッファ６の各アクセスの最終ターゲット・メモリ・アドレス１６を計算するモジュロ・アドレシング・ユニット４の一実施例を図示するブロック図である。モジュロ・アドレシング・ユニット４は、それぞれ、循環バッファ６のベース・アドレスおよび長さを格納するためのベース・アドレス・レジスタ２１および長さレジスタ２７のような複数のモジュロ・レジスタ２０を含む。さらに、モジュロ・アドレシング・ユニット４は、循環バッファ６内の現在の位置を指す指標アドレス（Ｉ）の格納のための指標レジスタ２３を含む。修正子レジスタ２５は、循環バッファ６の各アクセスのための指標アドレスＩをインクリメントまたはディクリメントさせることに関して使用される修正子値（Ｍ）を格納する。例えば、循環バッファ６内のメモリ・アドレスＩで第１データ値にアクセスした後、アクセスされた次のデータ値は、典型的にはアドレスＩ＋Ｍであるが、ここではＭは正か負の整数のいずれかである。
【０００７】
修正子（Ｍ）のサインをテストすることなく、ターゲット・アドレスが循環バッファ６のメモリ・アドレス範囲内に位置することを保証するために、モジュロ・アドレシング・ユニット４は、３つの可能性のあるターゲット・アドレスをパラレルに計算する３つの加算器、１２Ａ，１２Ｂ，１２Ｃを含む。加算器１２Ａは、指標値（Ｉ）および修正子値（Ｍ）を受け取り、Ｉ＋Ｍと等しい第１ターゲット・アドレス１４Ａを出力する。加算器１２Ｂは、指標値（Ｉ）、修正子値（Ｍ）およびバッファの長さ（Ｌ）を受け取り、Ｉ＋Ｍ＋Ｌと等しい第２ターゲット・アドレス１４Ｂを出力する。加算器１２Ｃは、Ｉ，Ｍ，Ｌを受け取り、Ｉ＋Ｍ−Ｌと等しい第３の可能性のあるターゲット・アドレス１４Ｃを出力する。このように、ターゲット・アドレス１４Ａ、１４Ｂ，１４Ｃは、それぞれ、（１）未訂正のターゲット・アドレス、
（２）未訂正のターゲット・アドレスが受理可能なアドレス範囲より下に位置するときに使用するために訂正されたターゲット・アドレス、（３）未訂正のターゲット・アドレスが受理可能なアドレス範囲より上に位置するときに使用するために訂正されたターゲット・アドレス、を表す。
【０００８】
可能性のあるターゲット・アドレス１４の演算と並行して、比較器１７は指標アドレス（Ｉ）、修正子値（Ｍ）、バッファ長（Ｌ）およびベース・アドレス（Ｂ）を受け取る。入力に基づいて、マルチプレクサ２０に、最終ターゲット・アドレス１６として、３つの可能性のあるターゲット・アドレス１４Ａ，１４Ｂ，１４Ｃのうちの１つを選択させるために、選択信号１９をアサートする。より詳しくは、比較器１７が選択信号１９をアサートするために適合され、ターゲット・アドレスがアドレスの許容範囲外に位置するかどうか、その結果、訂正されるべきかどうかに基づいて、適切なターゲット・アドレス１４を選択する。特に、比較器１７は、適切なターゲット・アドレス１４を選択する際に修正子のサインを判定する必要はない。モジュロ・アドレシング・ユニット４は、未訂正のターゲット・アドレスおよび２つの訂正されたターゲット・アドレスを計算する複数の加算器１２を含むので、比較器１７は循環バッファ６が移動している方向を判定する必要がない。このように、比較器は、修正子のサインとは無関係に、適切なターゲット・アドレス１４を選ぶことができる。ある実施例において、次の表に示されるように、選択信号１９は、加算器１２によって提供される３つの可能性のあるターゲット・アドレス１４のうちの１つを選択するための４つの状態を定義する２つの信号を含む。
【０００９】
【表１】
2004523823.tif 000003
【００１０】
図３は、循環バッファ６が移動する方向とは無関係に、循環バッファ６内のターゲット・アドレスを計算し選択するためのモジュロ・アドレシング・ユニット４の動作３０のモードの一例を図示するフローチャートである。連続的に図示されているが、以上に記述したように、多くの動作が並行的に生じることもある。
【００１１】
最初に、プロセッサ５のモジュロ・アドレシング・ユニット４が、３つの可能性のあるターゲット・アドレス、すなわち、（１）Ｉ＋Ｍ、（２）Ｉ＋Ｍ＋Ｌ、（３）Ｉ＋Ｍ−Ｌを計算する（３１）。上述のように、第２および第３の可能性のあるターゲット・アドレスがそれぞれ計算され、ターゲット・アドレスが開始アドレスよりも下、あるいは終了アドレスよりも上にある場合には循環バッファ６へターゲット・アドレスを引き戻す。
【００１２】
アドレス計算と並行して、モジュロ・アドレシング・ユニット４は、ターゲット・アドレスが受理可能なアドレス範囲の外部に位置しているかどうか、その結果訂正を必要とするかどうかを判定する。より詳しくは、モジュロ・アドレシング・ユニット４は、Ｉ＋ＭがＢより小さいかどうか、つまり、ターゲット・アドレスが循環バッファ６のアドレス範囲より下に位置するかどうかを判定する（３２）。もしそうであれば、マルチプレクサ１０は、加算器１２Ｂによって提供されるターゲット・アドレス＃２を選択する（３５）。そうでない場合は、モジュロ・アドレシング・ユニット４は、循環バッファ６の上端を越えてターゲット・アドレスが位置しているかどうかを判定し（３３）、もしそうであれば、加算器１２Ｃによって提供されるターゲット・アドレス＃３を選択する（３６）。そうでない場合は、モジュロ・アドレシング・ユニット４は、加算器１２Ａによって供給されるターゲット・アドレス＃１を選択するが、これは循環バッファ６の受理可能なアドレス範囲内に位置し、訂正されない（３４）。
【００１３】
本発明の多様な実施例が記述された。上記のプロセッサは、汎用計算機システム、デジタル処理システム、ラップトップ・コンピュータ、パーソナル・デジタル情報処理端末（ＰＤＡ）および携帯電話を含む多種多様のシステムで実行することができる。そのようなシステムでは、プロセッサは、フラッシュ・メモリ装置、またはオペレーティング・システムおよび他のソフトウェア・アプリケーションを格納するスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のようなメモリ装置に結合される。上記および他の実施例は、添付の請求項の範囲内にある。
【図面の簡単な説明】
【００１４】
【図１】本発明に従ってモジュロ・アドレシングをサポートするために適合されたプログラム可能なプロセッサの一例を図示するブロック図である。
【図２】プログラム可能なプロセッサのモジュロ・アドレシング・ユニットの一例を図示するブロック図である。
【図３】モジュロ・アドレシング・ユニットの動作のモードの一例である。
【図１】
2004523823.tif 000004
【図２】
2004523823.tif 000005
【図３】
2004523823.tif 000006
【国際公開パンフレット】
2004523823.tif 000007
2004523823.tif 000008
2004523823.tif 000009
2004523823.tif 000010
2004523823.tif 000011
2004523823.tif 000012
2004523823.tif 000013
2004523823.tif 000014
2004523823.tif 000015
2004523823.tif 000016
2004523823.tif 000017
2004523823.tif 000018
2004523823.tif 000019
2004523823.tif 000020
2004523823.tif 000021
2004523823.tif 000022
2004523823.tif 000023
2004523823.tif 000024
2004523823.tif 000025
【国際調査報告】
2004523823.tif 000026
2004523823.tif 000027