(57)【要約】通信(例えば、ＣＤＭＡ）システムに含まれている、種々のアプリケーションのためのデジタル信号の処理の技術。循環バッファのポインター位置が循環バッファの長さ、２の累乗に整列される開始アドレス、および開始アドレスから前記長さおよび前記長さ以上の２の累乗未満だけ離れて配置される終端アドレスの確立により決定される。方法とシステムは循環バッファ内のアドレスのための現在ポインター位置、開始アドレスおよび終端アドレス間のビットのストライド値、ストライド値に現在ポインター位置を加えることにより循環バッファ内の新しいポインター位置を決定する。調整されたポインター位置は、長さをもった新しいポインター位置の算術演算による循環バッファ内にある。【選択図】      図７
2009512942.tif 000002
【特許請求の範囲】
【請求項１】
循環バッファをアドレスする方法であって、
前記循環バッファのアドレス指定可能な範囲を制限するために前記循環バッファの長さを確立することと、
前記循環バッファの開始アドレスを確立し、前記開始アドレスを２の累乗に整列させること、
前記循環バッファの終端アドレスを確立し、前記終端アドレスは前記開始アドレスから前記長さおよび前記長さ以上の前記２の累乗未満だけ離れて配置されること、
前記循環バッファ内のアドレスのための現在ポインター位置を決定し、前記現在ポインター位置は前記開始アドレスおよび前記終端アドレスの間にあること、
前記開始アドレスおよび前記終端アドレスの間のビットのストライド値を決定すること、
前記現在ポインター位置から前記ストライド値のビット数をシフトすることにより、前記循環バッファ内の新しいポインター位置を決定すること、
前記長さを用いて前記新しいポインター位置の算術演算により、前記循環バッファ内のあるべき調整されたポインター位置を決定すること、のステップを含む方法。
【請求項２】
（ａ）前記新しいポインター位置が前記終端アドレス未満の場合に、新しいポインター位置にあるべき前記調整されたポインター位置を調整し、（ｂ）前記新しいポインター位置が前記終端アドレス以上の場合に、前記新しいポインター位置から前記長さを引くことにより前記調整されたポインターを調整することにより、正のストライドの場合に、前記調整されたポインター位置の位置を設定するステップをさらに含む、請求項１の方法。
【請求項３】
（ａ）前記新しいポインター位置が前記開始アドレス以上の場合、新しいポインター位置であるべき前記調整されたポインター位置を調整し、（ｂ）前記新しいポインター位置が前記開始アドレス未満である場合に、前記新しいポインター位置へ前記長さを加えることにより前記調整されたポインターを調整することにより、負のストライドの場合に、前記調整されたポインター位置の位置を設定するステップをさらに含む、請求項１の方法。
【請求項４】
前記新しいポインター位置を決定し、かつ前記調整されたポインター位置を決定する前記ステップに先立って、前記開始アドレスの最下位ビットをゼロに設定するステップをさらに含む請求項１の方法。
【請求項５】
アドレス生成ユニットにおける前記正のストライドに前記現在ポインターとしてマスクされたアドレスを加え、かつ算術論理ユニット加算器における合計から前記長さを引き算することにより、正のストライドの場合に、前記調整されたポインター位置を引き出すステップをさらに含む請求項１の方法。
【請求項６】
アドレス生成ユニットにおける前記負のストライドに前記現在のポインターとしてマスクされたアドレスを加えることにより、負のストライドの場合に前記調整されたポインター位置を引き出し、かつ負の合計の場合に、前記アドレス生成ユニットから直接前記調整されたポインター位置を引き出し、そうでなければ、算術論理ユニットの合計に前記長さを加えることにより前記調整されたポインター位置を引き出し、および前記算術論理ユニットから前記調整されたポインター位置を引き出すステップをさらに含む請求項１の方法。
【請求項７】
前記新しいポインター位置を生成する際にアドレス生成ユニットの加算器へ入力を生成するため、現在ポインタ入力のマスクを行うＡＮＤゲートを使用するステップをさらに含む請求項１の方法。
【請求項８】
前記現在ポインター位置および前記ストライドの合計を引き出し、
算術論理ユニットにおける加算器回路への第１の入力として前記合計を、かつ前記加算器回路への第２の入力として前記長さまたは前記長さの２の補数のいずれかをマスクしかつ表示するステップをさらに含む請求項１の方法。
【請求項９】
循環バッファをアドレスすることを確立するシステムであって、
循環バッファの確立し、前記循環バッファが、
前記循環バッファのアドレス指定可能な範囲を制限するために前記循環バッファの長さ、
前記循環バッファの２の累乗に整列している開始アドレス、
前記開始アドレスから前記長さおよび前記長さ以上の前記２の累乗未満だけ離れて配置される、前記循環バッファのための終端アドレス、
前記循環バッファ内のアドレスのための現在ポインター位置を決定するためのアドレス生成ユニットであって、前記現在ポインター位置が前記開始アドレスおよび前記終端アドレスの間にあるアドレス生成ユニット、
前記開始アドレスおよび前記終端アドレスの間のビットのストライド値を決定するために、前記アドレス生成ユニットに関連したストライド決定命令、
前記現在ポインター位置から前記ストライド値のビット数をシフトすることにより、前記循環バッファ内の新しいポインター位置を決定するために前記アドレス生成ユニットに関連した新しいポインター位置命令、
前記長さと前記新しいポインター位置の算術演算により前記循環バッファ内であるべき調整されたポインター位置を決定するため、前記アドレス生成ユニットに関連した調整されたポインター位置命令を含むシステム。
【請求項１０】
前記調整されたポインター位置命令が、（ａ）前記新しいポインター位置が前記終端アドレス未満の場合に、新しいポインター位置にあるべき前記調整されたポインター位置を調整し、（ｂ）前記新しいポインター位置が前記終端アドレス以上の場合に、前記新しいポインター位置から前記長さを引くことにより前記調整されたポインターを調整することにより、正のストライドの場合に、前記調整されたポインター位置の位置を設定する命令をさらに含む、請求項９のシステム。
【請求項１１】
前記調整されたポインター位置命令が、（ａ）前記新しいポインター位置が前記開始アドレス以上の場合、新しいポインター位置であるべき前記調整されたポインター位置を調整し、（ｂ）前記新しいポインター位置が前記開始アドレス未満である場合に、前記新しいポインター位置へ前記長さを加えることにより前記調整されたポインターを調整することにより、負のストライドの場合に、前記調整されたポインター位置の位置を設定する命令をさらに含む、請求項９のシステム。
【請求項１２】
前記新しいポインター位置命令は、前記新しいポインター位置を決定し、かつ前記調整されたポインター位置を決定することに先立って、前記開始アドレスの最下位ビットをゼロに設定する命令をさらに含む、請求項９のシステム。
【請求項１３】
前記調整されたポインター位置命令は、前記アドレス生成ユニットにおける前記正のストライドに前記現在ポインターとしてマスクされたアドレスを加え、かつ算術論理ユニット加算器における合計から前記長さを引き算することにより、正のストライドの場合に、前記調整されたポインター位置を引き出す命令をさらに含む請求項９のシステム。
【請求項１４】
前記調整されたポインター位置命令は、前記アドレス生成ユニットにおける前記負のストライドに前記現在のポインターとしてマスクされたアドレスを加えることにより、負のストライドの場合に前記調整されたポインター位置を引き出し、かつ負の合計の場合に、前記アドレス生成ユニットから直接前記調整されたポインター位置を引き出し、そうでなければ、算術論理ユニットの合計に前記長さを加えることにより前記調整されたポインター位置を引き出し、および前記算術論理ユニットから前記調整されたポインター位置を引き出す命令をさらに含む請求項９のシステム。
【請求項１５】
前記現在ポインタ位置、前記ストライド値および前記調整されたポインター位置の決定における前記アドレス生成ユニットと協働する算術論理ユニットをさらに含み、
前記アドレス生成ユニットはＡＮＤゲートと加算器回路を含み、
前記調整されたポインター位置命令は、ＡＮＤゲートを使用して前記新しいポインター位置を生成する際にアドレス生成ユニットの加算器へ入力を生成するために、現在ポインタ入力のマスクを行なう命令をさらに含む請求項９のシステム。
【請求項１６】
前記現在ポインター位置、前記ストライド値および前記調整されたポインター位置の決定の際に前記アドレス生成ユニットと協働する算術論理ユニット、
前記現在ポインタ位置および前記ストライドの合計を引き出すための前記調整されたポインター位置命令に関連した合計命令、
算術論理ユニットにおける加算器回路への第１の入力として前記合計を、および前記加算器回路への第２の入力として前記長さまたは前記長さの２の補数をマスクしかつ表示するマスキング命令をさらに含む請求項９のシステム。
【請求項１７】
デジタル信号を処理し、循環バッファ制御およびアドレシング手段を含むデジタル信号プロセッサであって、
前記循環バッファのアドレス指定可能な範囲を制限するために前記循環バッファの長さを確立する手段と、
前記循環バッファの開始アドレスを確立し、前記開始アドレスを２の累乗に整列させる手段と、
前記循環バッファの終端アドレスを確立し、前記終端アドレスは前記開始アドレスから前記長さおよび前記長さ以上の前記２の累乗未満だけ離れて配置される手段と、
前記循環バッファ内のアドレスのための現在ポインター位置を決定し、前記現在ポインター位置は前記開始アドレスおよび前記終端アドレスの間にある手段と、
前記開始アドレスおよび前記終端アドレスの間のビットのストライド値を決定する手段と、
前記現在ポインター位置から前記ストライド値のビット数をシフトすることにより、前記循環バッファ内の新しいポインター位置を決定する手段と、
前記長さを用いて前記新しいポインター位置の算術演算により、前記循環バッファ内のあるべき調整されたポインター位置を決定する手段とを含むデジタル信号プロセッサ。
【請求項１８】
（ａ）前記新しいポインター位置が前記終端アドレス未満の場合に、新しいポインター位置にあるべき前記調整されたポインター位置を調整し、（ｂ）前記新しいポインター位置が前記終端アドレス以上の場合に、前記新しいポインター位置から前記長さを引くことにより前記調整されたポインターを調整することにより、正のストライドの場合に、前記調整されたポインター位置の位置を設定する手段をさらに含む、請求項１７のデジタル信号プロセッサ。
【請求項１９】
（ａ）前記新しいポインター位置が前記開始アドレス以上の場合、新しいポインター位置であるべき前記調整されたポインター位置を調整し、（ｂ）前記新しいポインター位置が前記開始アドレス未満である場合に、前記新しいポインター位置へ前記長さを加えることにより前記調整されたポインターを調整することにより、負のストライドの場合に、前記調整されたポインター位置の位置を設定する手段をさらに含む、請求項１７のデジタル信号プロセッサ。  
【請求項２０】
前記新しいポインター位置を決定し、かつ前記調整されたポインター位置を決定する前記ステップに先立って、前記開始アドレスの最下位ビットをゼロに設定する手段をさらに含む請求項１７のデジタル信号プロセッサ。
【請求項２１】
アドレス生成ユニットにおける前記正のストライドに前記現在ポインターとしてマスクされたアドレスを加え、かつ算術論理ユニット加算器における合計から前記長さを引き算することにより、正のストライドの場合に、前記調整されたポインター位置を引き出す手段をさらに含む請求項１７のデジタル信号プロセッサ。
【請求項２２】
アドレス生成ユニットにおける前記負のストライドに前記現在のポインターとしてマスクされたアドレスを加えることにより、負のストライドの場合に前記調整されたポインター位置を引き出し、かつ負の合計の場合に、前記アドレス生成ユニットから直接前記調整されたポインター位置を引き出し、そうでなければ、算術論理ユニットの合計に前記長さを加えることにより前記調整されたポインター位置を引き出し、および前記算術論理ユニットから前記調整されたポインター位置を引き出す手段をさらに含む、請求項１７のデジタル信号プロセッサ。
【請求項２３】
前記新しいポインター位置を生成する際にアドレス生成ユニットの加算器へ入力を生成するため、現在ポインタ入力のマスクを行うＡＮＤゲートを使用する手段をさらに含む請求項１７のデジタル信号プロセッサ。
【請求項２４】
前記現在ポインター位置および前記ストライドの合計を引き出す手段と、
算術論理ユニットにおける加算器回路への第１の入力として前記合計を、かつ前記加算器回路への第２の入力として前記長さまたは前記長さの２の補数のいずれかをマスクしかつ表示する手段とをさらに含む請求項１７のデジタル信号プロセッサ。
【請求項２５】
デジタル信号プロセッサで命令を処理するため具体化されたコンピュータ読取り可能なプログラムコード手段を有するコンピュータ使用可能な媒体であって、
循環バッファの長さを確立し、前記長さは前記循環バッファのアドレス指定可能な範囲を制限するためであるコンピュータ読取り可能なプログラムコード手段と、
前記循環バッファの開始アドレスを確立し、前記開始アドレスが２の累乗に整列されるコンピュータ読取り可能なプログラムコード手段と、前記長さおよび
前記循環バッファの終端アドレスを確立し、前記終端アドレスが前記長さおよび前記長さ以上の前記２の累乗未満だけ前記開始アドレスから離れて配置されるコンピュータ読取り可能なプログラムコード手段と、
前記循環バッファ内のアドレスのための現在ポインター位置を決定し、前記現在ポインター位置が前記開始アドレスおよび前記終端アドレスの間にあるコンピュータ読取り可能なプログラムコード手段と、
前記開始アドレスおよび前記終端アドレスの間のビットのストライド値を決定するためのコンピュータ読取り可能なプログラムコード手段と、
前記現在ポインター位置から前記ストライド値のビット数をシフトすることにより、前記循環バッファ内の新しいポインター位置を決定するためのコンピュータ読取り可能なプログラムコード手段と、
前記長さを用いて前記新しいポインター位置の算術演算により、前記循環バッファ内にあるべき調整されたポインター位置を決定するためのコンピュータ読取り可能なプログラムコード手段とを含む、コンピュータ使用可能な媒体。
【請求項２６】
（ａ）前記新しいポインター位置が前記終端アドレス未満の場合に、新しいポインター位置にあるべき前記調整されたポインター位置を調整し、（ｂ）前記新しいポインター位置が前記終端アドレス以上の場合に、前記新しいポインター位置から前記長さを引くことにより前記調整されたポインターを調整することにより、正のストライドの場合に、前記調整されたポインター位置の位置を設定するコンピュータ読取り可能なプログラムコード手段をさらに含む、請求項２５のコンピュータ使用可能な媒体。
【請求項２７】
（ａ）前記新しいポインター位置が前記開始アドレス以上の場合、新しいポインター位置であるべき前記調整されたポインター位置を調整し、（ｂ）前記新しいポインター位置が前記開始アドレス未満である場合に、前記新しいポインター位置へ前記長さを加えることにより前記調整されたポインターを調整することにより、負のストライドの場合に、前記調整されたポインター位置の位置を設定するコンピュータ読取り可能なプログラムコード手段をさらに含む、請求項２５のコンピュータ使用可能な媒体。
【発明の詳細な説明】
【発明の分野】
【０００１】
示された主題は、データ処理に関係がある。特に、この開示は基準化可能でプログラム可能な循環バッファのための新規かつ改善されたポインター計算方法およびシステムに関係がある。
【発明の背景】
【０００２】
電子機器および支援するソフトウェアアプリケーションはますます信号処理を含んでいる。ホームシアター、コンピュータグラフィックス、医用画像および遠隔通信はすべて、信号処理技術に依存する。信号処理は複素数の速い数値演算だが反復のアルゴリズムを要求する。多くのアプリケーションが実時間の計算を要求し、つまり、信号が時間の連続関数であり、それは数の処理のためにサンプリングされ、デジタルに変換されなくてはならない。したがって、プロセッサは、それらが到着するときサンプル上で個別の計算を行なうアルゴリズムを実行しなくてはならない。デジタル信号プロセッサ（ＤＳＰ）のアーキテクチャはそのようなアルゴリズムを扱うために最適化される。よい信号処理エンジンの特徴は、典型的に速く柔軟な演算計算ユニット、計算ユニットへおよび計算ユニットからの拘束を受けないデータの流れ、計算ユニットにおける拡張精度および動的範囲、２重のアドレス発生器、効率的なプログラム順序付けおよびプログラミングの容易さを含み得る。
【０００３】
ＤＳＰ技術の約束する１つのアプリケーションは、衛星上または地球上のリンクのユーザ間の音声およびデータ通信をサポートする符号分割多元接続（ＣＤＭＡ）システムのような通信システムを含んでいる。多元接続通信システムにおけるＣＤＭＡ技術の使用は、「ＳＰＲＥＡＤ  ＳＰＥＣＴＲＵＭ  ＭＵＬＴＩＰＬＥ  ＡＣＣＥＳＳ  ＣＯＭＭＵＮＩＣＡＴＩＯＮ  ＳＹＳＴＥＭ  ＵＳＩＮＧ  ＳＡＴＥＬＬＩＴＥ  ＯＲ  ＴＥＲＲＥＳＴＲＩＡＬ  ＲＥＰＥＡＴＥＲＳ」と題する米国特許第４，９０１，３０７号、および「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＧＥＮＥＲＡＴＩＮＧ  ＷＡＶＥＦＯＲＭＳ  ＩＮ  Ａ  ＣＥＬＬＵＬＡＲ  ＴＥＬＥＨＡＮＤＳＥＴ  ＳＹＳＴＥＭ」と題する米国特許第５，１０３，４５９号に開示され、両方は請求された主題の譲受人に譲渡された。
【０００４】
ＣＤＭＡシステムは、１つ以上の遠隔通信および今のストリームビデオ、標準に一致するように典型的に設計される。そのような第1世代標準は「ＴＩＡ／ＥＩＡ／ＩＳ−９５  Terminal-Base Station Compatibility Standard for Dual-Mode Wideband Spread Spectrum Cellular System」であり、以下にＩＳ−９５標準と呼ばれる。ＩＳ−９５  ＣＤＭＡシステムは音声データとパケットデータを送信することができる。より効率的にパケットデータを送信することができるより新しい世代標準は、「第３世代Partnership Project」（３ＧＰＰ）と命名された協会によって提示され、公に容易に利用可能であるドキュメント番号３Ｇ  ＴＳ  ２５．２１１、３Ｇ  ＴＳ  ２５．２１２、３Ｇ  ＴＳ  ２５．２１３および３Ｇ  ＴＳ  ２５．２１４を含む一組のドキュメントで具体化された。３ＧＰＰ標準は以下にＷ−ＣＤＭＡ標準と呼ばれる。また無線ハンドセットがますます使用する他に多くのものと同様に、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６３およびＷＭＶ（Ｗｉｎｄｏｗｓ（登録商標）  Ｍｅｄｉａ  Ｖｉｄｅｏ）のようなビデオ圧縮標準がある。
【０００５】
多くのアプリケーションでは、バッファが広く使用される。普通のタイプはそれ自体のまわりで折り返す循環バッファであり、その結果、最低に番号付けされた入力は、それらがバッファ長または範囲により物理的に離れているが、その最高に番号付けされた入力隣接して概念的にまたは論理的に位置づけられる。循環バッファはバッファに直接アクセスを提供し、その結果、呼プログラムに、または呼プログラムからデータをコピーする余分なステップなしで、呼プログラムが決まった場所に出力データを構築し、または決まった場所に入力データを解析することを可能にする。この直接アクセスを促進するために、循環バッファは、出力または入力のいずれかのための位置をバッファする基準がすべてメモリの単一の連続ブロックにあることを確かめる。これは、データの循環が循環バッファ終端位置に到着する場合に、分離したバッファスペースに対処することを持たない呼プログラムの問題を回避する。その結果、呼プログラムは、アプリケーションが循環バッファ中で直接作動していることに気づいている必要なしに、利用可能な種々様々のアプリケーションを使用し得る。
【０００６】
１つのタイプの循環バッファは、２の累乗である長さをもつのと同様に整列された両方とも２の累乗であるバッファを必要とする。そのような循環バッファでは、ポインター計算は単にマスキングステップを含んでいる。これは単純な計算を提供するが、２の累乗であるバッファ長の要求は、そのような循環バッファをあるアルゴリズムまたは実施によって使用可能でなくする。
【０００７】
循環バッファの使用において、バッファの長さは開始位置および終了位置を含んでいる。多くのアプリケーションについては、開始位置および終了位置について決定できるかまたはプログラム可能であることが望ましい。循環バッファのプログラム可能な開始位置および終了位置を用いて、種々様々のアルゴリズムおよびプロセスは循環バッファを使用することができる。さらに、異なるアルゴリズムおよびプロセス変更として、循環バッファの
演算はまた増加した演算効率性およびユーティリィティを提供するように変化することができる。
【０００８】
循環バッファの特別の位置をアドレス指定する際に、特別のバッファ位置をアドレス指定するポインターは、バッファ位置を上下いずれかに移動するだろう。このプロセスは不運にも、完全に効率的であるとは言い難い。しばしば、そのプロセスは、それが３つの加算／減算演算を必要とするという点で厄介である。第１の演算は、現在のバッファポインターにストライドを加えることにより新しいバッファポインターを生成することを必要とする。第２の演算は、新しいポインターがバッファアドレス範囲をオーバーフローしたかアンダーフローしたかどうかを判断することを必要とする。その後、第３の演算は、オーバーフローまたはアンダーフローの場合に新しいポインターを調整することを必要とする。これらの３つの演算は、完全にパイプライン化された演算に３つの別個の加算器を必要とするか、または代わりに非パイプライン可能なマルチサイクル演算になる循環的なアドレス指定を必要とする。これらの演算の数を減らすことが可能ならば、これらの演算がＤＳＰおよび他のアプリケーション中に多数回起こるので、その領域および/または少数の加算器の省電力または性能向上から著しいＤＳＰ改良をもたらすことができる。
【０００９】
したがって、循環バッファのクラスがプログラム可能なバッファ長をサポートする基準化可能でプログラム可能な循環バッファのクラスにおいて使用可能なポインター計算方法について、必要が存在する。
【００１０】
更に、ラップアラウンド状態を検知するためきるだけ少ない加算を必要とし、一時的ポインターが循環バッファ境界を越える場合、ポインター値の調整を許容する基準化可能でプログラム可能な循環バッファのクラスのためのポインター計算方法に必要が存在する。
【発明の開示】
【発明の概要】
【００１１】
基準化可能でプログラム可能な循環バッファのためのポインター計算方法およびシステムを作り使用するための技術が示され、その技術は、関連するデジタルプロセッサの速度およびサービス品質を増加させるのと同様に、パソコン、携帯情報端末、無線ハンドセットおよび同様の電子装置のためのますます強健なソフトウェアアプリケーションを処理するため、デジタル信号プロセッサ演算およびデジタル信号プロセッサの命令の効率的な使用の両方を改善する。
【００１２】
示された主題の１つの態様によれば、循環バッファポインター位置の決定のための方法とシステムが提供される。循環バッファ内のポインター位置は、循環バッファの長さ、２の累乗に整列される開始アドレス、および開始アドレスから前記長さおよび前記長さ以上の２の累乗未満だけ離れて配置される終端アドレスの確立により決定される。方法とシステムは、循環バッファ内のアドレスのための現在ポインター位置、開始アドレスおよび終端アドレス間のビットのストライド値、ストライド値のビット数によって現在ポインター位置から変位される循環バッファ内の新しいポインター位置を決定する。調整されたポインター位置は、長さをもつ新しいポインター位置の算術演算による循環バッファ内にある。正のストライドの場合には、新しいポインター位置が終端アドレス未満である場合、新しいポインター位置であるために調整されたポインター位置を調整することにより、調整されたポインター位置は決定される。代わりに、新しいポインター位置が終端アドレス以上の場合、新しいポインター位置から長さを引くことにより調整されたポインターを調整する。負のストライドの場合には、新しいポインター位置が前記開始アドレス以上の場合、新しいポインター位置であるために調整されたポインター位置を調整することにより、調整されたポインター位置が設定される。代わりに、新しいポインター位置が前記開始アドレス未満である場合、新しいポインター位置へ長さを加えることにより調整されたポインターを調整する。
【００１３】
追加の新規な特徴と同様にこれらおよび示された主題の他の態様も、ここに提供される記述から明白になる。この要約の意図は、請求された主題の包括的な記述であるのではなく、むしろ主題の機能性のうちのいくらかの短い概観を提供することである。ここで提供される他のシステム、方法、特徴および利点は、次の図および詳細な説明を検査することにより当業者に明白になるだろう。この記述内に含まれているすべての追加のシステム、方法、特徴および利点が請求項の範囲内であることが意図される。
【００１４】
示された主題の特徴、特質および利点は、同様な参照文字が全体を通して相応的に識別する図面と共に取られるとき、以下に示された詳細な説明から明白になるだろう。
【詳細な説明】
【００１５】
マルチスレッドデジタル信号プロセッサのための基準化可能でプログラム可能な循環バッファの新規および改善されたポインター計算方法およびシステムの示された主題は、マルチスレッド処理を含む非常に種々様々のデジタル信号処理アプリケーションにおけるアプリケーションを持っている。そのような１つのアプリケーションが遠隔通信、および特に、１つ以上のデジタル信号処理回路を使用する無線ハンドセットに現われる。したがって、図１は示された実施例を実施することができる通信システム１０の単純化されたブロック図である。送信機ユニット１２において、データ源１４からデータをフォーマットし、コード化し、処理して１つ以上のアナログ信号を生成する送信（ＴＸ）データプロセッサ１６へ、データはセットで典型的に送られる。その後、アナログ信号は変調し、フィルタにかけ、増幅しベースバンド信号を上方変換して変調された信号を生成する送信機（ＴＭＴＲ）１８に供給される。次に、変調された信号はアンテナ２０によって１つ以上の受信機ユニットに送信される。
【００１６】
受信機ユニット２２において、送信された信号はアンテナ２４によって受信され、受信機（ＲＣＶＲ）２６に供給される。受信機２６内では、受信信号は増幅され、フィルタにかけられ、下方変換され、復調され、デジタル化されて同相（Ｉ）および直角位相（Ｑ）サンプルを生成する。その後、サンプルは送信データを回復するために受信（ＲＸ）データプロセッサ２８によって復号され処理される。受信機ユニット２２の復号および処理は、送信機ユニット１２で行なわれたコード化および処理に補足的なやり方で行なわれる。次に、回復されたデータはデータシンク３０に供給される。
【００１７】
上に記述された信号処理は音声、ビデオ、パケットデータ、メッセージ及び一方向通信の他のタイプの通信をサポートする。双方向通信システムは２ウェイのデータ伝送をサポートする。しかしながら、他の方向の信号処理は単純化のために図１で示されない。通信システム１０は、符号分割多元接続（ＣＤＭＡ）システム、時分割多元接続（ＴＤＭＡ）通信システム（例えば、ＧＳＭシステム）、周波数分割多元接続（ＦＤＭＡ）通信システム、または地上のリンクに関するユーザ間の音声およびデータ通信をサポートする他の多元接続通信システムであり得る。特定の実施例では、通信システム１０はＷ−ＣＤＭＡ標準に一致するＣＤＭＡシステムである。
【００１８】
図２は図１の送信データプロセッサ１６および受信データプロセッサ２８として役立つＤＳＰ４０アーキテクチャを示す。ＤＳＰ４０は、ここで示された教示と概念を有効に使用する多数の可能なデジタル信号プロセッサの実施例の単に１つの実施例を表わすことを認識すべきである。したがってＤＳＰ４０において、スレッドＴ０ないしＴ５（「Ｔ０：Ｔ５」）は異なるスレッドからの命令のセットを含んでいる。命令ユニット（ＩＵ）４２はスレッドＴ０：Ｔ５のために命令を取り出す。ＩＵ４２は命令待ち行列（ＩＱ）４４の中に命令Ｉ０ないしＩ３（「Ｉ０：Ｉ３」）を待ち行列にする。ＩＱ４４はプロセッサパイプライン４６の中に命令Ｉ０：Ｉ３を出す。プロセッサパイプライン４６はデータ経路と同様に制御回路も含む。ＩＱ４４から、単一のスレッド、例えばスレッドＴ０が復号および発行回路４８により選択されてもよい。パイプライン論理制御ユニット（ＰＬＣ）５０は、復号および発行回路４８およびＩＵ４２に論理制御を提供する。
【００１９】
ＩＵ４２の中のＩＱ４４は、命令ストリームのスライディングバッファを維持する。ＤＳＰ４０がサポートする６つのスレッドＴ０：Ｔ５の各々は、個別の８つのエントリーＩＱ４４を持っており、各エントリーは１つのＶＬＩＭパケットまたは４つまでの個別命令を記憶し得る。復号および発行回路４８論理は、各パイプラインＳＬＯＴ０：ＳＬＯＴ３のための制御バスおよびオペランドを生成するのと同様に、ＶＬＩＭパケットまたは一度に２つまでのスーパースカラー命令を復号しかつ発行するすべてのスレッドによって共有される。さらに、復号および発行回路４８は、例えば、スーパースカラー発行技術を使用して、使用している命令発行のためのＩＱ４４エントリーにおける２つの最も古い有効な命令間のスロット割り当ておよび従属性チェックを入れる。ＰＬＣ５０論理は、例外の解決およびスレッドエネーブル／ディスエーブル、再生条件、維持プログラム・フローなどのようなパイプライン機能停止条件の検出のため、すべてのスレッドによって共有される。
【００２０】
演算において、選択されたスレッドの汎用レジスタファイル（ＧＲＦ）５２および制御レジスタファイル（ＣＲＦ）５４が読まれ、またデータはＳＬＯＴ０：ＳＬＯＴ３のために実行データパスに送られる。ＳＬＯＴ０：ＳＬＯＴ３は、この例において、本実施例中で使用された組合せをグループ化するパケットのために備える。ＳＬＯＴ０：ＳＬＯＴ３からの出力はＤＳＰ４０の演算から結果を返す。
【００２１】
したがって、本実施例は、６つまでのスレッド、Ｔ０：Ｔ５を備えた単一のマイクロプロセッサを使用して、ヘテロジニアス要素プロセッサ（ＨＥＰ）システムのハイブリッドを使用してもよい。プロセッサパイプライン４６は、ＩＵ４２からのデータ項目を取り出すのに必要なプロセッササイクルの最少数と一致して、６つのパイプライン段階を持っている。ＤＳＰ４０は、プロセッサパイプライン４６内の異なるスレッドＴ０：Ｔ５の命令を同時に実行する。すなわち、ＤＳＰ４０は６つの独立したプログラムカウンタ、プロセッサパイプライン４６内のスレッドＴ０：Ｔ５の命令を識別する内部タグ付けメカニズム、およびスレッドスイッチを引き起こすメカニズムを提供する。スレッドスイッチオーバヘッドはゼロからほんの少数のサイクルまで変わる。
【００２２】
図３は示された主題の１つの明示のためにＤＳＰ４０のマイクロアーキテクチャーの概要を供給する。ＤＳＰ４０のマイクロアーキテクチャーの実施はインターリーブされたマルチスレッディング（ＩＭＴ）をサポートする。ここに開示された主題は単一のスレッドの実行モデルを処理する。ＩＭＴのソフトウェアモデルは共有メモリーマルチプロセッサと見なすことができる。単一のスレッドは、すべてのレジスタおよび利用可能な命令を有する完全な単一プロセッサＤＳＰ４０と見る。コヒーレントな共有メモリ設備を通して、このスレッドは他のスレッドと通信し同期することができる。これらの他のスレッドが同じプロセッサまたは別のプロセッサ上で走行しているかどうかは、ユーザレベルソフトウェアに大部分はトランスペアレントである。
【００２３】
図３に変わって、ＤＳＰ４０のための現在のマイクロアーキテクチャー６０は制御ユニット（ＣＵ）６２を含み、それはプロセッサパイプライン４６のための多くの制御機能を行なう。ＣＵ６２はスレッドをスケジュールし、ＩＵ４２からの混合された１６ビットおよび３２ビットの命令をリクエストする。さらにＣＵ６２は３つの実行ユニット、シフトタイプユニット（ＳＵ）６４、掛け算タイプユニット（ＭＵ）６６およびロード／記憶ユニット（ＤＵ）６８に命令をスケジュールし、発行する。ＣＵ６２はさらにスーパースカラー従属性チェックを行なう。バスインターフェースユニット（ＢＩＵ）７０はＩＵ４２およびＤＵ６８をシステムバス（示されない）へインターフェースする。
【００２４】
ＳＬＯＴ０とＳＬＯＴ１パイプラインはＤＵ６８にあり、ＳＬＯＴ２はＭＵ６６にあり、また、ＳＬＯＴ３はＳＵ６４にある。ＣＵ６２はパイプラインＳＬＯＴ０：ＳＬＯＴ３にソースペランドおよび制御バスを供給し、ＧＲＦ５２およびＣＲＦ５４ファイル更新を扱う。ＧＲＦ５２は単一のレジスタとして、または整列された６４ビットのペアとしてアクセスすることができる３２の３２ビットレジスタを保持する。マイクロアーキテクチャー６０は、スーパースカラーおよびＶＬＩＭ実行の利点を混合するハイブリッド実行モデルを特色とする。スーパースカラーの発行は、ソフトウェア情報が独立した命令を見つけるために必要ではないという長所を持つ。復号段階ＤＥは、ＤＳＰ４０での実行およびさらなる処理のためにそのような命令を準備するように、命令の最初の復号を行なう。レジスタファイルパイプライン段階ＲＦは、レジストリファイル更新を提供する。２つの実行パイプライン段階ＥＸｌとＥＸ２は命令実行をサポートし、一方第３の実行パイプライン段階ＥＸ３は命令実行およびレジスタファイル更新の両方を提供する。実行中に、（ＥＸｌ、ＥＸ２およびＥＸ３）およびライトバック（ＷＢ）パイプライン段階ＩＵ４２が実行される次のＩＱ４４エントリーを構築する。最後に、ライトバックパイプライン段階（ＷＢ）はレジスタ更新を行なう。レジスタファイル演算に対するスタッガーされた書込みは、ＩＭＴのマイクロアーキテクチャーにより可能であり、スレッド当たりの書き込みポートの数を節約する。パイプラインが６つの段階を持つので、ＣＵ５２は６つまでの異なるスレッドを発行し得る。
【００２５】
図４は示された主題を適用する代表的なデータユニット、ＤＵ６８ブロック区分を示す。ＤＵ６８はアドレス生成ユニットＡＧＵ８０を含み、それはさらにＣＵ６２から入力を受け取るためのＡＧＵ０８１およびＡＧＵｌ８３を含む。ここに示された主題は、ＡＧＵ８０の演算により主要なアプリケーションを持っている。ロード／記憶制御ユニットＬＣＵ８２は、データキャッシュユニット、ＤＣＵ８６と通信するのと同様に、またＣＵ６２と通信し、ＡＧＵ８０およびＡＬＵ８４に制御信号を供給する。ＡＬＵ８４はまたＡＧＵ８０およびＣＵ６２から入力を受け取る。ＡＧＵ８０からの出力はＤＣＵ８６へ行く。ＤＣＵ８６はメモリ管理ユニット（「ＭＭＵ」）８７およびＣＵ６２と通信する。ＤＣＵ８６はＳＲＡＭ状態アレイ回路８８、記憶整列器回路９０、ＣＡＭタグアレイ９２、ＳＲＡＭデータアレイ９４およびロード整列器回路９６を含んでいる。
【００２６】
さらに請求された主題が作動し得るＤＵ６８の作動について説明するために、次の記述のいくつかのパーティションによってそこで行なわれた基本的な機能が今言及される。特に、ＤＵ６８は、ＡＬＵ８４からのロードタイプ、記憶タイプおよび３２ビットの命令を実行する。ＤＵ６８の主な特徴は、ＳＬＯＴ０とＳＬＯＴ１の２つの並列パイプラインを使用して、ＤＳＰ４０パイプライン段階、ＤＥ、ＲＦ、ＥＸ１、ＥＸ２、ＥＸ３およびＷＢパイプライン段階の全部における完全にパイプライン化された演算を含んでいる。ＤＵ６８はＶＬＩＷまたはスーパースカラー二重性命令発行のいずれかを受け入れ得る。好ましくは、ＳＬＯＴ０はキャッシュ不可能な、またはキャッシュ可能なロードまたは記憶命令、３２ビットのＡＬＵ８４命令およびＤＣＵ８６命令を実行する。ＳＬＯＴ１はキャッシュ不可能な、またはキャッシュ可能なロード命令および３２ビットのＡＬＵ８４命令を実行する。
【００２７】
ＤＵ６８は、直接のオペランドを含むＤＥパイプライン段階においてＣＵ６０からの１サイクル当たり２つまでの復号された命令を受ける。ＲＦパイプライン段階では、ＤＵ６８は適切なスレッド固有レジスタから汎用のレジスタ（ＧＰＲ）および/または制御レジスタ（ＣＲ）ソースオペランドを受け取る。ＧＰＲオペランドはＣＵ６０中のＧＰＲレジスタファイルから受信される。ＥＸ１パイプライン段階では、ＤＵ６８はロードまたは記憶のメモリ命令の有効なアドレス（ＥＡ）を生成する。ＥＡはＭＭＵ８７に提示され、それは物理アドレス翻訳およびページレベル許可チェックに仮想を行ない、ページレベル属性を提供する。キャッシュ可能な位置へのアクセスについては、ＤＵ６８は物理アドレスによりＥＸ２パイプライン段階におけるデータキャッシュタグを調べる。アクセスがヒットする場合、ＤＵ６８はＥＸ３パイプライン段階においてデータアレイアクセスを行なう。
【００２８】
キャッシュ可能なロードのために、キャッシュからのデータ読み出しは、ＧＰＲを指定された命令に書かれるべきＷＢパイプライン段階におけるＣＵ６０へ指定されかつ駆動されるように拡張された、適切なアクセスサイズ、ゼロ／符号によって整列される。キャッシュ可能な記憶のため、記憶されるべきデータは、ＥＸ１パイプライン段階のＣＵ６０中のスレッド固有レジスタに読み出され、ＥＸ２パイプライン段階でヒット上のデータキャッシュアレイに書き込まれる。ロードと記憶の両方については、自動インクリメントされたアドレスは、ＥＸ１とＥＸ２のパイプライン段階で生成され、ＧＰＲを指定された命令に書き込まれＥＸ３パイプライン段階でＣＵ６０へ駆動される。
【００２９】
ＤＵ６８はまたＤＣＵ８６を管理するためのキャッシュ命令を実行する。その命令は特定のキャッシュ線がロックおよびアンロックされること、無効にすること、およびＧＰＲに指定されたキャッシュラインに割り付けることを可能にする。全体的にキャッシュを無効にする命令がさらにある。これらの命令はロードおよび記憶命令に似ているパイプラインで送られる。データキャッシュを捕らえそこなうキャッシュ可能な位置へロードおよび記憶するため、およびキャッシュ不可能なアクセスのため、ＤＵ６８はＢＩＵ７０にリクエストを提示する。キャッシュ不可能なロードは読み出されたリクエストを示す。記憶ヒット、的外れおよびキャッシュ不可能な記憶は書き込みリクエストを示す。ＤＵ６８は顕著な読み出しを追跡し、またラインフィルはＢＩＵ７０にリクエストする。ＤＵ６８は非ブロッキング相互スレッドを提供し、つまり、１つ以上のスレッドが顕著なロードリクエストの未決の完成を妨げられる間に他のスレッドによってアクセスを許可する。
【００３０】
本開示が関係するＡＧＵ８０はＡＧＵ８０のデータ経路の同一の２つのインスタンス、ＳＬＯＴ０のための一つおよびＳＬＯＴ１のための一つを供給する。しかしながら、示された主題はＡＬＵ８４のような、ＤＵ６８の他のブロックにおいて作動してもよいし、実際に存在し作動することに注意を要す。示された主題の機能および構造を理解する実例となる目的のために、注意が向けられるが、ＡＧＵ８０に対してここに提供された典型的な教示にしたがって各スロット用に有効アドレス（ＥＡ）および自動インクリメントされたアドレス（ＡＩＡ）の両方を生成する。
【００３１】
ＬＣＵ８２はロードおよび記憶命令の実行を可能にし、それは記憶命令と同様にキャッシュヒット、キャッシュミスおよびキャッシュ不可能なロードを含み得る。本実施例では、ロードパイプラインはＳＬＯＴ０とＳＬＯＴ１のために同一である。ＬＣＵ８２による記憶実行は、キャッシュヒット命令、ライトバックキャッシュヒット命令、キャッシュミス命令、キャッシュ不可能なライト命令を介して記憶命令パイプラインライトを供給する。記憶命令は、本実施例でＳＬＯＴ０でのみ実行する。書き込みを介しての記憶において、書き込みリクエストはヒット条件にかかわらずＢＩＵ７０に提示される。ライトバック記憶においては、ミスがある場合、およびヒットがない場合、書き込みリクエストがＢＩＵ７０に提示される。ライトバック記憶ヒットにおいては、キャッシュライン状態が更新される。記憶ミスはＢＩＵ７０に書き込みリクエストを提示し、キャッシュにおけるラインを割り付けない。
【００３２】
ＡＬＵ８４は各スロットについて１つＡＬＵ０８５およびＡＬＵｌ８９を含んでいる。ＡＬＵ８４は、ＤＵ６８内に算術／転送／比較（ＡＴＣ）演算を行なうためデータ経路を含んでいる。これらは３２ビット加算、引き算、否定、比較、登録転送およびＭＵＸ登録命令を含んでいてもよい。さらに、ＡＬＵ８４は、ＡＩＡ計算のための循環的アドレッシングを完了する。
【００３３】
図５は示された主題の教示で使用するための循環バッファの演算を概念的に示す。多数の実行スレッドがＤＳＰ４０で並列に走るようにスケジュールされる場合、それらはそれらの個々のループ実行時のジッタを増加させる方法で対話するかもしれない。ＡＧＵ８０がＬＣＵ８２に大きなデータ量を転送しなければならない場合、技術は決定論的なデータストリーミングを実施する。データ損失を回避するために、ＬＣＵ８２は、それが準備できるとすぐに、データを検索することにより獲得コンポーネントに遅れずについていくことができなければならない。
【００３４】
図５を参照すると、多くのセクションへバッファメモリを割り付ける循環バッファ１００を示す。動作において、ＡＧＵ８０は循環バッファ１００のセクション、例えばセクション１０２を満たし、一方ＬＣＵ８２が別のセクション、例えばセクション１０４からできるだけ早くデータを読み込む。循環バッファ１００は、それらが任意の時間に異なるバッファセクションにデータを読み書きするので、ＬＣＵ８２およびＡＧＵ８０の両方が同時にバッファにデータをアクセスすることを可能にする。したがって、循環バッファ１００は、例えばセクション１０２の初めに連続して書き込み、一方セクション１０４から読み出す。ＡＧＵ８０の１つの責務はデータが上書きされないように、ＡＧＵ８０に遅れずについていくことを含んでいる。同期機構は、新しいデータが利用可能な場合、ＡＧＵ８０がＬＣＵ８２に通知することを可能にする。
【００３５】
図６は示された主題の１つの実施のためのアドレッシングモード、オフセット選択および有効アドレス選択オプションを表わす表１０６を提供する。したがって、図６の表はＤＵ６８によって実行される命令のために復号する主な命令をリストする。多くの復号機能性はＣＵ６０に存在し、復号信号は復号命令配達の一部としてＤＵ６８に駆動される。このように、自動インクリメントおよびスタックポインター相対アドレス指定モードのない間接的なものがＩｍｍオフセットＭＵＸ選択およびＡｄｄ ＥＡ ＭＵＸ選択を使用する。自動インクリメント直接アドレス指定モードを備えた間接的かつ循環的なものはＩｍｍオフセットＭＵＸ選択およびＲＦ ＥＡ ＭＵＸ選択を使用する。 自動インクリメント・レジスタを備えた間接的なもの、および自動インクリメント・レジスタアドレッシング・モードを備えた循環的なものはＭオフセットＭＵＸ選択およびＲＦ ＥＡ ＭＵＸ選択を使用する。最後に、自動インクリメント・レジスタアドレッシング・モードを備えたビット逆転されたものはＭオフセットＭＵＸ選択およびＢＲｅｖ、またはビット逆転ＥＡ ＭＵＸ選択を使用する。ここで記述された様々な復号機能を行なうことで、本方法およびシステムは、ここで記述されるような次のポインター位置計算操作を行なってもよい。
【００３６】
図７は本開示の実施例を特徴であり、第１にアルゴリズム的なプロセスのための定義を確立することを含んでいる。そのような定義のうち、Ｍが整数を表わし、Ｍビット加算器を参照するとしよう；Ｎが０より大きいかつＭより小さい整数、即ち、０＜Ｎ＜Ｍであるとしよう。Ｎは基準化可能であり、０＜Ｎ＜Ｍ内でプログラム可能であると仮定する。更に、Ｍ-ビット加算器に基準としてＭを設定する。循環バッファ１００は２Ｎに整列されたベースポインターとして形成され、プログラム可能な長さＬ、ここにＬ＜２Ｎを持つ。
【００３７】
これらの定義で、図７に今言及され、それは、基準化可能でプログラム可能な循環バッファのための本ポインター計算方法およびシステムを行なうために実例となる概要のブロック図１１０を提供する。ブロック図１１０は１１２において入力として現在のポインターＲ、１１４においてベースマスク発生器入力、１１６においてストライド入力、１１８においてストライド方向（正の方向について０、または負の方向について１のいずれか）を含んでいる。現在ポインター入力ＲはＡＮＤゲート１２０および１２２に行く。ベースマスク発生器入力１１４はＡＮＤゲート１２０およびインバータ１２４に行き、ＡＮＤゲート１２０にオフセット・マスクを供給する。Ｎの値に基づいて、ベースマスク発生器１１４はビットＮ−１：０のマスクを生成する。すなわちビットＢＭ−１：ＢＮはすべて０に設定され、一方、ビットＢＮ−１：Ｂ０はすべて１に設定される。ＡＮＤゲート１２０からの出力はＭ-ビット加算器１２６にポインター・オフセットを供給する。
【００３８】
ストライド入力１１６はＭＵＸ１２８およびＭＵＸ１２８に逆転された入力を供給するインバータ１３０に行く。ストライド方向入力１１８はまた、ＭＵＸ１２８、Ｍ-ビット加算器１２６、ＭＵＸ１３２およびインバータ１３４に行く。ＡＮＤゲート１２０は現在ポインター入力１１２およびベースマスク発生器１１４からのベースマスクのビットごとのＡＮＤとしてポインター・オフセットを引き出す。ＡＮＤゲート１２２は現在ポインター１１２およびインバータ１２４からのオフセット・マスク論理積からポインター・ベース１３６を引き出し、そのオフセット・マスクはベースマスク発生器１１４からの反転出力である。
【００３９】
Ｍ-ビット加算器１２６はＭ-ビット加算器１４０の被加数１３８を生成する。被加数はＡＮＤゲート１２０からのポインター・オフセット、ＭＵＸ１２８からの多重化出力、およびストライド方向１１８入力の合計に引き出す。Ｍ-ビット加算器１４０は被加数１３８、ＭＵＸ１３２からの多重化出力およびインバータ１３４から合計１４２を引き出す。合計１４２は被加数１３８プラス／マイナス循環バッファ長さ１４４に等しい。循環バッファ長さ１４４はインバータ１４６および長さ入力１４８からの入力に応じてＭＵＸ１３２から引き出す。合計１４２、被加数１３８およびＭ-ビット加算器１４０からの最上位ビットＭ１８３はＭＵＸ１５０に供給され、新しいポインター・オフセット１５２を産出する。最後に、ＯＲゲート１５４は、ＭＵＸ１５０およびポインター・ベース１３６からの多重化出力を使用して論理和演算を行ない、所望の新しいポインター１５６を産出する。
【００４０】
既知の方法に関する示されたプロセスの明瞭な利点は、２つの加算、つまりＭ-ビット加算器１２６および１４０の演算だけの要求を含んでいる。示されたプロセスおよびシステムはまた、循環バッファのファミリーを引き出すためにＮとＭを変えることを可能にする。そういうものとして、示された実施例は、電力、速度および領域設計要件にわたって設計最適化を提供する。更に、本プロセスおよびシステムは符号付きオフセットおよびプログラム可能な循環バッファ長さを支援する。本実施例の別の利点は中間ビット桁上げ項を必要とすることなく一般的なＭ-ビット加算器だけを要求することを含んでいる。さらに、示された実施例は、正および負のストライドの両方について同じデータ経路を使用してもよい。
【００４１】
本方法の有益な効果を例証するために、次の例が提供される。Ｎが５に等しく、Ｌが３０（即ち、Ｂ０１１１１０）に等しいとしよう。ＭがＮ＋１＝６に等しい。現在ポインターＰ、現在のストライドＳ、およびストライドの符号Ｄ、その全部が次の例における変数である。示されたプロセス例の結果は、循環バッファ１００内の様々な新しいポインター位置を提供する。
【００４２】
第１の例において、Ｐ＝６２（Ｂ１１１１１０）、Ｓ＝１（Ｂ０００００１）およびＤ＝正（Ｂ０）（それはオーバーフローの場合である）としよう。そのような場合、ベース・マスク発生器１１４からのマスクは０１１１１１であり、ＡＮＤゲート１２０からのポインター・オフセットは０１１１１０であり、ＡＮＤゲート１２２からのポインター・ベース１３６は１０００００である。Ｍ-ビット加算器１２６からの被加数１３８は０１１１１０＋０００００１＝０１１１１１である。合計１４２は０１１１１１＋１００００１＋０００００１＝０００００１になる。新しいポインター・オフセットは合計１４２の０であるビット６に基づいて決定される。これは新しいポインター・オフセットとして、０００００１である合計１４２の選択における結果をもたらす。新しいポインターはそのとき０００００１＋１０００００＝１００００１になる。
【００４３】
第２の例において、Ｐ＝６２（Ｂ１１１１１０）、Ｓ＝１（Ｂ０００００１）およびＤ＝負（Ｂ１）としよう。そのような場合、ベース・マスク発生器１１４からのマスクは０１１１１１であり、ＡＮＤゲート１２０からのポインター・オフセットは０１１１１０であり、また、ＡＮＤゲート１２２からのポインター・ベース１３６は１０００００である。Ｍ-ビット加算器１２６からの被加数１３８は０１１１１０＋１１１１１０＋０００００１＝０１１１０１である。合計１４２は０１１１０１＋０１１１１０＝１１１０１１になる。新しいポインター・オフセットは、合計１４２について１であるビット６に基づいて決定される。これは新しいポインター・オフセットとして０１１１０１である被加数１３８の選択における結果をもたらす。そのとき、新しいポインターは０１１１０１＋１０００００＝１１１１０１になる。
【００４４】
第３の例において、Ｐ＝３３（Ｂ１００００１）、Ｓ＝１（Ｂ０００００１）、およびＤ＝正（Ｂ０）であるとしよう。そのような場合、ベース・マスク発生器１１４からのマスクは０１１１１１であり、ＡＮＤゲート１２０からのポインター・オフセットは０００００１であり、また、ＡＮＤゲート１２２からのポインター・ベース１３６は１０００００である。Ｍ-ビット加算器１２６からの被加数１３８は０００００１＋０００００１＋００００１０＝０１１１０１である。合計１４２は００００１０＋１００００１＝１００１００になる。新しいポインター・オフセットは被加数１３８について１であるビット６に基づいて決定される。これは新しいポインター・オフセットとして００００１０である被加数１３８の選択における結果をもたらす。新しいポインターはそのとき００００１０＋１０００００＝１０００１０になる。
【００４５】
第４の例において、Ｐ＝３３（Ｂ１００００１）、Ｓ＝１（Ｂ０００００１）、およびＤ＝負（Ｂ１）（それはアンダーフローの場合である）としよう。そのような場合、ベース・マスク発生器１１４からのマスクは０１１１１１であり、ＡＮＤゲート１２０からのポインター・オフセットは０００００１であり、ＡＮＤゲート１２２からのポインター・ベース１３６は１０００００である。Ｍ-ビット加算器１２６からの被加数１３８は０００００１＋１１１１１０＋０００００１＝０１１１０１である。合計１４２は００００００＋０１１１１０＝０１１１１０になる。新しいポインター・オフセットは合計１４２について１であるビット６に基づいて決定される。これは新しいポインター・オフセットとして０１１１１０である合計１４２の選択における結果をもたらす。新しいポインターはそのとき０１１１０１＋１０００００＝１１１１１０になる。
【００４６】
したがって、示された主題は、基準化可能でプログラム可能な循環バッファ１００のためのポインター計算方法およびシステムを提供し、循環バッファ１００の開始位置が循環バッファ１００のサイズに相当する２の累乗に整列する。個別のレジスタが循環バッファ１００の長さを含んでいる。循環バッファ１００のベースを整列させることによって、示された主題はポインター位置を達成するために単に減算演算に要求する。そのようなプロセスにより、ここに記述されたように２つのＭ-ビット加算器を使用する２つの加算だけが必要である。本アプローチはＮとＭを変えることを可能にし、多くの異なる電力、速度および領域メトリクスに亘って循環バッファ１００の最適のファミリーを引き出す。本方法およびシステムは符号付オフセットおよびプログラム可能な長さを支援する。さらに、示された主題は、中間ビット桁上げ項なしで一般的なＭ-ビット加算器だけを要求し、一方正および負のストライドの両方について同じデータ経路を使用する。
【００４７】
本方法およびシステムは、バッファ長Ｌを含むことができるメモリサイズに相当する２の累乗に整列される開始位置（Ｓ）を備える。バッファ長ＬはＤＵ６８における状態として記憶される必要があるかもしれないし、ないかもしれない。プロセスはＬ以上の２の累乗であるビット数Ｂをとる。ポインターＲはベースおよびベース＋Ｌの間になる値を取られる。したがって、そのプロセスはコンピュータ命令を使用し、修正済のポインターＲ’を引き出すために一定値を加えるか引くことにより、オリジナルのポインターＲを修正する。次に、開始位置Ｓは、Ｂビットの最下位ビット（ＬＳＢ）をゼロに設定することにより調整される。その後、そのプロセスはＳとＬの論理和をとることにより終了位置Ｅを決定する。修正済のポインターＲ’が一定数を加えることにより引き出される場合、プロセスは修正済のポインターＲ’から終了位置Ｅを引き、新しいオフセット位置Ｏを引き出すことを含んでいる。オフセット位置Ｏが正の場合、最終結果は決定された開始位置Ｓおよび引き出されたオフセット位置Ｏの論理和をとることから引き出される。修正済のポインターＲ’が一定数を引き算することにより引き出される場合、そのプロセスは終了位置Ｅから修正済のポインターＲ’を引き、新しいオフセット位置Ｏを引き出すことを含んでいる。修正済のポインターＲ’の値Ｂ＋１に相当するビットが、オリジナルのポインターＲの値Ｂ＋１に相当するビットと等しくない場合、最終結果は、新しいポインター位置Ｒ’を確立するため新しい開始位置Ｓおよび新しいオフセットＯの論理和である。そうでなければ、新しいオフセットＯは修正済のポインター位置Ｒ’を決定する。
【００４８】
示された主題の変化は、ビット数Ｌの長さを符号化する代わりに、終端アドレスＥを直接に符号化することを含んでいてもよい。これは任意のサイズの循環バッファを許容し、一方循環バッファ計算のサイズおよび複雑さを減少する。
【００４９】
本教示の別のアプリケーションをさらに例証するために、図８は、データ経路、ＳＬＯＴ０のための一つおよびＳＬＯＴ１のための一つを生成するアドレスの２つの同一のインスタンスを提供するＡＧＵ８０の部分として、ＤＳＰ４０における使用のため示された主題の他の実施例を提供する。ＡＧＵ８０は各スロットのための有効アドレス（ＥＡ）および自動インクリメントされたアドレス（ＡＩＡ）の両方を生成する。ＥＡ生成はアドレッシングモードに基づき、（ａ）レジスタモード、（ｂ）即時のオフセットを加えられたレジスタモードおよび（ｃ）ビット反転モードにおいて評価されてもよい。図８に現れるデータ経路は以下のように記述された最終３：１ＥＡ多重化装置を備えた各方法を示す。
【００５０】
したがって、図８を参照して、アドレス発生プロセス１６０が現われる。アドレス発生プロセス１６０において、ＣＵ６０からＡＧＵ８０の中への即時のオフセット入力は、最大シフトされた即時のオフセット幅（１９ビット）に拡張された符号／ゼロであると予想される。ＡＧＵ８０符号／ゼロは３２ビットまでオフセットを拡張する。
【００５１】
図８の実施例はまた、アドレッシングモードに基づいて、自動インクリメントされたアドレス発生プロセスを提供する。自動インクリメントされたアドレス発生プロセスは、（ａ）即時のオフセット・モードを加えられたレジスタ、（ｂ）Ｍレジスタオフセット・モードを加えられたレジスタ、および（ｃ）即時のオフセット・モードで循環的に加えられたレジスタで評価されてもよい。図８のアドレス発生プロセス１６０はこれらの方法の各々を示す。
【００５２】
非循環的自動インクリメントされたアドレス計算がＡＧＵ８０で完成され、循環的自動インクリメントされたアドレス計算はまた図示された例においてＡＬＵ８２を要求することに注意を要す。ロードまたは記憶命令が、ＥＡを生成するためプリ・インクリメントおよびＡＩＡを生成するためポスト・インクリメントの両方をすることができないので、同じ加算器はＥＡおよびＡＩＡの両方のために共有されることができる。
【００５３】
循環的なアドレッシングモードでは、アドレス発生プロセス１６０は、正か負の何れかであり得るストライドによって分離されたアクセスにより循環バッファ１００を維持する。ポインターの現在値はストライドに加えられる。結果が循環バッファ１００のアドレス範囲をオーバーフローまたはアンダーフローのいずれかである場合、バッファ長はポインターが循環バッファ１００内の位置へポイントバックするように引き算されるか加算される（それぞれ）。
【００５４】
ＤＳＰ４０において、循環バッファ１００の開始アドレスは、バッファの長さより大きい２の最も小さな累乗に整列する。即時のオフセットであるストライドが正の場合、加算は２つの可能性に帰着する。合計は、それが最終のＡＩＡ値である場合に循環バッファ長さ内にあるか、またはバッファ長が減算されることを必要とする場合に、それはバッファ長より大きい。ストライドが負の場合、加算は再び２つの結果に帰着することができる。
【００５５】
合計が開始アドレス以上の場合、それは最終のＡＩＡ値である。合計が開始アドレス未満である場合、バッファ長が加えられる必要がある。ここにデータ経路は、Ｋが命令指定された即時値であるとして、開始アドレスが２（Ｋ＋２）に整列される場合、および長さが２（Ｋ＋２）未満であることを要求される場合の平均をとる。Ｒｘ［３１：（Ｋ＋２）］値は加算に先立ってゼロにマスクされる。逆のマスクは後の使用のために接頭辞ビット［３１：（Ｋ＋２）］を維持する。ＡＧＵ８０加算器においてマスクされたＲｘをストライドに加え、ＡＬＵ８２加算器において合計から長さを引くことにより、ストライド（即時のオフセット）が正である場合、バッファオーバフローが決定される。結果が正である場合、ＡＩＡ［（Ｋ＋２）−ｌ：０］がＡＬＵ８２加算器から来る、そうでなければ、結果はＡＧＵ８０加算器から来る。ＡＩＡ［３１：（Ｋ＋２）］はＲｘ［３１：（Ｋ＋２）］に等しい。
【００５６】
マスクされたＲｘをＡＧＵ加算器におけるストライドに加えることにより、ストライドが負の場合、バッファアンダーフローが決定される。この合計が正の場合、ＡＩＡ［（Ｋ＋２）−ｌ：０］はＡＧＵ８０加算器から来る。合計が負の場合、長さはＡＬＵ８２加算器において合計に加えられ、ＡＩＡ［（Ｋ＋２）−ｌ：０］がＡＬＵ８２加算器から来る。再び、ＡＩＡ［３１：（Ｋ＋２）］はＲｘ［３１：（Ｋ＋２）］に等しい。
【００５７】
長さがＡＬＵ８２加算器において加えられるか引かれるかは、オフセットの符号によって決定されることに注意を要す。ＰＯＲ選択による重要な点は、臨界のパスにある加算器のＲｘ入力へマスクを行なうＡＮＤゲートを加えるということである。代替実施は以下のとおりである。
【００５８】
この場合、Ｒｘはストライドに加えられる。ＡＧＵ８０加算器（それはＡＩＡについて非臨界である）の合計はマスクされ、その結果、合計［（Ｋ＋２）−ｌ：０］のみがＡＬＵ８２加算器に１つの入力として提示され、一方長さまたはその２の補数が他の入力として提示される。ストライドが正の場合、長さはＡＬＵ加算器においてマスクされた合計から引かれる。結果が正の場合、ＡＩＡ［（Ｋ＋２）−ｌ：０］はＡＧＵ８０加算器から来る、またオーバーフローは生じない、そうでなければ結果はＡＬＵ加算器（オーバーフロー）から来る。ＡＩＡ［３ｌ：（Ｋ＋２）］は常にＲｘ［３１：（Ｋ＋２）］に等しい。
【００５９】
ストライドが負の場合、ＡＧＵ加算器合計［３１：２（Ｋ＋２）］がＲｘ［３１：（Ｋ＋２）］と比較される。これらの接頭辞ビットが同じに止まる場合、これはアンダーフローが生じなかったことを意味する。この場合、ＡＩＡ［（Ｋ＋２）−ｌ：０］はＡＧＵ８０加算器から来る。接頭辞ビットが異なる場合、アンダーフローがあった。この場合、長さはＡＧＵ８０加算器においてマスクされた合計に加えられる。この場合、ＡＩＡ［（Ｋ＋２）：０］はＡＧＵ８０加算器から来る。再び、ＡＩＡ［３１：（Ｋ＋２）］は常にＲｘ［３１：（Ｋ＋２）］に等しい。このアプローチでマスキングＡＮＤは、臨界のパスから除去される。しかしながら、２８ビットの比較器は加えられる。
【００６０】
ここに記述された処理の特徴および機能は、様々な方法で実施することができる。例えば、上記演算を行うＤＳＰ４０だけでなく、また現在の実施例が特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、マイクロプロセッサまたはここに記述された機能を行なうように設計された他の電子回路で実施されてもよい。したがって、好ましい実施例の先の記述はどんな当業者も請求された主題を作るか使用することを可能にするために提供される。これらの実施例への様々な修正は技術に熟練している人々に容易に明白になり、ここに定義された総括的な法則は、革新的な才能の使用なく他の実施例に適用されてもよい。したがって、請求された主題は、ここに示された実施例に制限されたようには意図されず、ここに示された法則と新規の特徴と一致する最も広い範囲を与えられるべきである。
【図面の簡単な説明】
【００６１】
【図１】本実施例を実施するための通信システムの単純化されたブロック図である。
【図２】本実施例の教示を進展するためのＤＳＰアーキテクチャを示す。
【図３】示された実施例を使用するパイプライン中の制御ユニット、データユニットおよび他のデジタル信号プロセッサ機能ユニットのトップレベル図を示す。
【図４】請求された主題の使用のためにアドレス生成ユニットを含む、示された主題のために区分する代表的なデータユニットブロックを示す。
【図５】示された主題の教示で使用するための循環バッファの演算を概念的に示す。
【図６】示された主題の１つの実施のためのアドレッシングモード、オフセット選択および有効アドレス選択オプションを表わす表を提供する。
【図７】示された主題による基準化可能でプログラム可能な循環バッファのためのポインター計算方法およびシステムのブロック図を描写する。
【図８】関連するＤＳＰの実行パイプライン内に作動するような示された主題の実施例を提供する。
【図１】
2009512942.tif 000003
【図２】
2009512942.tif 000004
【図３】
2009512942.tif 000005
【図４】
2009512942.tif 000006
【図５】
2009512942.tif 000007
【図６】
2009512942.tif 000008
【図７】
2009512942.tif 000009
【図８】
2009512942.tif 000010
【国際調査報告】
2009512942.tif 000011
2009512942.tif 000012
2009512942.tif 000013