(57)【要約】  複数の無線通信方式における種々の変調／復調／同期処理を高速且つ効率的に１つのシステムで実行できるようにするため、プロセッサシステム(１００)を構成する複素演算処理用コプロセッサ(２２)は、主プロセッサ(１０)からの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路(２２)と、前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラ(２０,２１)とを備える。前記複素演算回路(２２)に設けられたトレース回路は、前記メモリから順次読み出された複素数データ系列に対する演算結果データを監視し、前記演算結果データに正規化処理を施すための正規化係数を検出する。
2012111053.tif 000002
【特許請求の範囲】
【請求項１】
主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、
前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラと、を備え、
前記複素演算回路が、
前記メモリから順次読み出された第１の複素数データ系列に対する演算結果データを監視し、前記演算結果データに正規化処理を施すための正規化係数を検出するトレース回路、
を含む複素演算処理用コプロセッサ。
【請求項２】
請求項１において、
前記メモリコントローラが、
前記メモリへの書込アドレスを自律的に発生する第１のアドレスジェネレータ回路と、
前記メモリからの読出アドレスを自律的に発生する第２のアドレスジェネレータ回路と、
前記演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第１のＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ Ｆｉｒｓｔ−Ｏｕｔ）と、
前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第２のＦＩＦＯと、
前記メモリと前記第２のＦＩＦＯの間に設けられ、前記正規化係数を用いて、前記メモリから第２の複素数データ系列として入力される前記演算結果データに正規化処理を施す前処理回路と、
を含むことを特徴とした複素演算処理用コプロセッサ。
【請求項３】
請求項１又は２において、
パイロット信号データを格納するためのレジスタを、さらに備え、
前記複素演算回路が、前記レジスタを介して順次入力されるパイロット信号データ系列を、前記第１の複素数データ系列と共に前記複素演算に供することを特徴とした複素演算処理用コプロセッサ。
【請求項４】
請求項１〜３のいずれか一項において、
前記トレース回路が、
前記演算結果データ中の実数部を示すビット列及び虚数部を示すビット列各々を、負数を呈する場合に反転する反転回路と、
前記反転回路からの出力データに対して累積的な論理和演算を行い、前記論理和演算の結果を前記正規化係数の検出に供する累積論理和回路と、
を含むことを特徴とした複素演算処理用コプロセッサ。
【請求項５】
請求項４において、
前記トレース回路が、
前記演算結果データの内から最小値を検出する検出回路と、
予め設定された動作モードに応じて、前記論理和演算の結果を前記正規化係数の検出に供するか、又は前記最小値を前記正規化係数として検出するかを選択する選択回路と、
をさらに含むことを特徴とした複素演算処理用コプロセッサ。
【請求項６】
請求項２において、
前記前処理回路が、
前記正規化処理として、前記演算結果データに対するシフト処理を行うシフト回路と、
前記シフト回路におけるシフト量を設定するための制御レジスタと、
を含むことを特徴とした複素演算処理用コプロセッサ。
【請求項７】
請求項６において、
前記前処理回路が、
前記正規化処理として、前記演算結果データに対する減算処理を行う減算器と、
前記減算器における減算量と、前記シフト回路又は減算器のいずれを動作させるかを示す動作モードとを設定するための制御レジスタと、
を含むことを特徴とした複素演算処理用コプロセッサ。
【請求項８】
請求項１〜７のいずれか一項において、
前記メモリコントローラは、
前記メモリから読み出した一の複素数データを第１及び第２のレジスタへ格納し、
前記複素演算回路が前記第１のレジスタから前記一の複素数データを取得した場合に、前記第１及び第２のレジスタを前記メモリから読み出した次の複素数データで更新し、
前記複素演算回路が前記第２のレジスタから前記一の複素数データを取得した場合には、前記第１及び第２のレジスタを更新しない、
ことを特徴とする複素演算処理用コプロセッサ。
【請求項９】
主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、
前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラと、を備え、
前記メモリコントローラが、
前記メモリへの書込アドレスを自律的に発生する第１のアドレスジェネレータ回路と、
前記メモリからの読出アドレスを自律的に発生する第２のアドレスジェネレータ回路と、
前記複素演算回路による演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第１のＦＩＦＯと、
前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第２のＦＩＦＯと、
前記メモリと前記第２のＦＩＦＯの間に設けられ、予め定められた正規化係数を用いて、前記複素数データ系列に正規化処理を施す前処理回路と、
を含む複素演算処理用コプロセッサ。
【請求項１０】
請求項１〜９のいずれか一項に記載の複素演算処理用コプロセッサと、
前記複素演算処理用コプロセッサを命令によって制御する主プロセッサと、
を備えたプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複素演算処理用コプロセッサ及びプロセッサシステムに関し、特に無線通信に際して必要な各種の複素演算処理を実行するための技術に関する。
【背景技術】
【０００２】
無線通信システムにおいては、一般的に、送受信データ信号に対する変調／復調処理が必要である。すなわち、送信側では、送信データ信号に対して、ＰＳＫ(Ｐｈａｓｅ Ｓｈｉｆｔ Ｋｅｙｉｎｇ、例えばＢＰＳＫ(Ｂｉｎａｒｙ ＰＳＫ)、ＱＰＳＫ(Ｑｕａｄｒａｔｕｒｅ ＰＳＫ)、又は８ＰＳＫ)やＱＡＭ(Ｑｕａｄｒａｔｕｒｅ Ａｍｐｌｉｔｕｄｅ Ｍｏｄｕｌａｔｉｏｎ、例えば１６ＱＡＭ、６４ＱＡＭ、又は２５６ＱＡＭ)等の変調処理、及び拡散処理等を施す必要がある。一方、受信側では、受信データ信号に対して同期処理、復調処理、逆拡散処理等を施す必要がある。【０００３】
これらの処理は、主に無線シンボル単位(複素数ＩＱ信号)を対象とするため、多くの複素演算処理(複素乗算や複素加算等)を実行する必要がある。また、復調処理では、演算途中データのダイナミックレンジが必要以上に大きくなる。このため、処理の途中段階にて、データ毎の複素演算結果に正規化処理を施した上で次の演算を行う等の処理の効率化も必要である。【０００４】
ここで、従来は、単一の無線通信方式の変調／復調処理、同期処理に高速かつ低消費電力に対応するために、処理毎に専用のハードウェア回路を実装する手法を採用していた。例えば、特許文献１には、ＲＡＫＥ合成に際し、複数の伝送路推定値を用いて正規化係数を算出する専用回路が記載されている。【０００５】
また、近年、複数の無線通信方式に１つのシステムで対応できるようなソフトウェア無線技術への期待が高まっている。しかしながら、規格化或いは標準化されている種々の無線通信方式間においては、これらの変調／復調／同期処理の内容は一部類似しているものもあるものの、基本的には無線通信方式ごとに異なるという性質がある。【０００６】
従って、無線通信方式毎に専用のハードウェア回路を実装する従来手法を用いて、単純に複数の無線通信方式における変調／復調／同期処理に対応しようとした場合、採用する無線通信方式数に相当する複数の専用ハードウェア回路が必要となってしまう。このため、回路の面積オーバヘッドが非常に大きいという問題がある。また、処理の変更や拡張に対する柔軟性が低いという問題もある。【０００７】
これら問題に対処するための関連技術１及び２が既に提案されている。以下、これらの関連技術１及び２を順に説明する。【０００８】
[関連技術１]
特許文献２には、高速性と電力効率を重視して、専用ハードウェア回路を種々のパラメータ設定可能に構成することで、複数の無線通信方式に対応させる手法が記載されている。具体的には、ワイヤレス通信装置を構成する専用の処理エンジンを、複数のベースバンド処理に対応できるように再設定可能に構成し、以て柔軟に複数の無線通信方式に対応させている。【０００９】
しかしながら、この場合、演算式の一部の処理パラメータの変更には比較的容易に対応できるものの、ＣＤＭＡ(Ｃｏｄｅ Ｄｉｖｉｓｉｏｎ Ｍｕｌｔｉｐｌｅ Ａｃｃｅｓｓ)とＯＦＤＭ(Ｏｒｔｈｏｇｏｎａｌ Ｆｒｅｑｕｅｎｃｙ Ｄｉｖｉｓｉｏｎ Ｍｕｌｔｉｐｌｅｘｉｎｇ)のように復調処理の基本的な処理アルゴリズムが異なる無線通信方式には簡単には対応できないという問題がある。【００１０】
また、演算処理データ単位、演算処理の繰り返し回数、細かい演算順序、処理エンジン(専用ハードウェア回路)間の処理順序等の変更にも簡単には対応できない。仮にこれらを変更できるように構成する場合には、専用ハードウェア回路同士間の接続構成が非常に複雑化し、やはり面積オーバヘッドが大きくなるという問題や、今後予想される処理エンジン内における演算順序変更等の仕様拡張には対応できないという問題が発生してしまう。【００１１】
なお、類似技術として、特許文献３及び４には、専用のコプロセッサ(ハードウェア回路)をパラメータ設定可能にし、制御用プロセッサから制御することでシステム変更等に対応する手法が記載されている。【００１２】
しかしながら、上記の特許文献２と同様、一部の処理パラメータや並列処理数の変更等には対応できるものの、ある程度固定された処理範囲内での変更にしか対処し得ない。このため、基本的な処理アルゴリズムや演算順序の変更等には簡単には対応できないという問題がある。【００１３】
[関連技術２]
また、他の関連技術として、特許文献５には、信号処理プロセッサ(ＤＳＰ：Ｄｉｇｉｔａｌ Ｓｉｇｎａｌ Ｐｒｏｃｅｓｓｏｒ)を用いてソフトウェア処理する手法が記載されている。具体的には、一般的な信号処理プロセッサやメモリアクセスを高速化するためのＤＭＡ(Ｄｉｒｅｃｔ Ｍｅｍｏｒｙ Ａｃｃｅｓｓ)コントローラ等を用いて通信処理を実行し、以て種々の信号処理に柔軟に対応させている。【００１４】
しかしながら、無線通信に際しての変調／復調／同期処理においては、複素演算処理のような特殊な演算処理の前後にデータの正規化(より詳細には、正規化係数の算出とこれを用いた正規化処理)が必要である。このため、一般的な信号処理プロセッサでは、これらの処理をパイプライン的に並列に実行可能な専用ハードウェアに比べて多くの処理命令(演算サイクル)が必要であり、処理サイクル数が大幅に増加してしまうという問題がある。【００１５】
また、処理変更に対する柔軟性は確保されるものの、例えばプロセッサからメモリへのアクセスレイテンシが性能オーバヘッドとなる。このため、やはり高速化が難しいという問題もある。メモリアクセスにＤＭＡコントローラを用いたとしても、プロセッサによるソフトウェア処理の場合、メモリのロード/ストア命令と演算処理命令とに別々のサイクルを必要とする。このため、専用ハードウェア処理に比べて低速である。一方、高速化を図る場合にはクロック周波数を上昇させる必要があり、その結果、消費電力が増加してしまうという問題がある。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００３−０１８０８１号公報
【特許文献２】特表２００９−５０５６０８号公報
【特許文献３】特表２００５−５１０１７０号公報
【特許文献４】特開２００６−２６２３２２号公報
【特許文献５】特開平０１−１１６７３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
第１の課題は、無線通信システムにおける変調／復調／同期処理(複素演算処理)において、複数の無線通信方式における種々の変調／復調／同期処理に柔軟に対応できないことである。その理由は、一般的に変調／復調／同期処理の内容は、複数の無線通信方式間にて一部の処理は類似した処理があるものの、基本的にはその処理アルゴリズムや演算順序は各々の無線通信方式の仕様に大きく依存しており、且つ、必要演算量も比較的大きく、無線通信方式毎に専用のハードウェア回路を実装せざるを得ないためである。【００１８】
しかしながら、近年のシステムＬＳＩ(Ｌａｒｇｅ Ｓｃａｌｅ Ｉｎｔｅｇｒａｔｉｏｎ)の大規模化、高速化などによる処理能力向上に伴い、今後は、同一のシステムで複数の無線通信方式に対応できるような、マルチモード無線機やソフトウェア無線機(ＳＤＲ：Ｓｏｆｔｗａｒｅ Ｄｅｆｉｎｅｄ Ｒａｄｉｏ)と呼ばれる無線通信システムの実現が望まれている。更に、将来の仕様変更や機能拡張にも柔軟に対応できることが重要となっている。【００１９】
第２の課題は、柔軟性を重視して、無線通信システムにおける変調／復調／同期処理(複素演算処理)をプロセッサによるソフトウェア処理で実現する場合、正規化処理と複素演算処理を同時に実行する等、メモリアクセスレイテンシも含めて高速に処理できないことである。その理由は、一般的に、無線通信における変調／復調／同期処理では、１つのデータを正規化するためには例えば前後の複数のデータ信号の情報を必要とするためである。専用のハードウェア回路でパイプライン的に並列に実現する場合はそれほど問題とならないが、柔軟性や拡張性を重視してプロセッサによるソフトウェア処理で実現しようとした場合、一般的なプロセッサでは、正規化処理と複素演算処理を同時に実行するのは困難である。また、プロセッサ処理の場合には、一般的にはメモリアクセスするために一定のレイテンシ(サイクル数)が必要となるため、その分だけ演算器の稼働率が低下する、換言すると、処理時間が増加し高速化できないという大きな問題がある。【００２０】
ここで、無線通信における変調／復調処理の処理量は、一般的に要求されるデータ転送レートに依存する。近年の無線通信方式においては要求されるデータ転送レートは増加傾向にあるため、より低消費電力にて高速化を図ることがますます重要となっている。【００２１】
本発明は、上記の課題に鑑みてなされたものであり、複数の無線通信方式における種々の変調／復調／同期処理を、高速且つ効率的に１つのシステムで実行できるようにすることを目的とする。換言すると、本発明の目的は、専用のハードウェア回路で実現するような高速性や低消費電力性と、プロセッサによるソフトウェア処理で実現するような柔軟性との両者を兼ね備えたシステムを提供することにある。
【課題を解決するための手段】
【００２２】
上記の目的を達成するため、本発明の第１の態様に係る複素演算処理用コプロセッサは、主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラとを備える。前記複素演算回路は、前記メモリから順次読み出された第１の複素数データ系列に対する演算結果データを監視し、前記演算結果データに正規化処理を施すための正規化係数を検出するトレース回路を含む。【００２３】
また、本発明の第２の態様に係る複素演算処理用コプロセッサは、主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラとを備える。前記メモリコントローラは、前記メモリへの書込アドレスを自律的に発生する第１のアドレスジェネレータ回路と、前記メモリからの読出アドレスを自律的に発生する第２のアドレスジェネレータ回路と、前記複素演算回路による演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第１のＦＩＦＯと、前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第２のＦＩＦＯと、前記メモリと前記第２のＦＩＦＯの間に設けられ、予め定められた正規化係数を用いて、前記複素数データ系列に正規化処理を施す前処理回路とを含む。【００２４】
さらに、本発明の第３の態様に係るプロセッサシステムは、前記複素演算処理用コプロセッサと、前記複素演算処理用コプロセッサを命令によって制御する主プロセッサとを備える。
【発明の効果】
【００２５】
本発明によれば、複数の無線通信方式における種々の変調／復調／同期処理を、高速且つ効率的に１つのシステムで実行可能である。
【図面の簡単な説明】
【００２６】
【図１】本発明の第１の実施の形態に係るプロセッサシステムの構成例を示したブロック図である。
【図２】本発明の第１の実施の形態に係る複素演算処理用コプロセッサの構成例を示したブロック図である。
【図３Ａ】本発明の第１の実施の形態に係る複素演算処理用コプロセッサに用いるレジスタファイルの構成例を示した図である。
【図３Ｂ】本発明の第１の実施の形態に係る複素演算処理用コプロセッサに用いるレジスタ各々のフォーマット例を示した図である。
【図４】本発明の第１の実施の形態に係る複素演算処理用コプロセッサに用いる命令コードの構成例を示した図である。
【図５】本発明の第１の実施の形態に係る複素演算処理用コプロセッサに用いる複素算術演算器の構成例を示したブロック図である。
【図６】本発明の第１の実施の形態に係る複素演算処理用コプロセッサに用いる複素論理演算器及びトレース回路の構成例を示したブロック図である。
【図７】本発明の第１の実施の形態に係る複素演算処理用コプロセッサに用いるメモリコントローラの書込側の構成例を示したブロック図である。
【図８】本発明の第１の実施の形態に係る複素演算処理用コプロセッサに用いるメモリコントローラの読出側の構成例を示したブロック図である。
【図９】本発明の第１の実施の形態に係るプロセッサシステムの動作例を示したシーケンス図である。
【図１０】本発明の第１の実施の形態に係る複素演算処理用コプロセッサ適用例を示したブロック図である。
【図１１Ａ】図１０に示した適用例における変調処理例を示した図である。
【図１１Ｂ】図１０に示した適用例における復調処理例を示した図である。
【図１２】図１０に示した適用例における送信データに対する変調処理例を示したシーケンス図である。
【図１３】図１０に示した適用例における受信データに対する復調処理例を示したシーケンス図である。
【図１４】本発明の第２の実施の形態に複素演算処理用コプロセッサに用いるトレース回路の構成例を示したブロック図である。
【図１５】本発明の第２の実施の形態に係る複素演算処理用コプロセッサに用いるメモリコントローラの読出側の構成例を示したブロック図である。
【図１６Ａ】本発明の第２の実施の形態に係るプロセッサシステムの一の動作例を示したシーケンス図である。
【図１６Ｂ】本発明の第２の実施の形態に係るプロセッサシステムの他の動作例を示したシーケンス図である。
【発明を実施するための形態】
【００２７】
以下、本発明に係る複素演算処理用コプロセッサ及びこれを適用するプロセッサシステムの第１及び第２の実施の形態を、図１、図２、図３Ａ及び図３Ｂ、図４〜図１０、図１１Ａ及び図１１Ｂ、図１２〜図１５、並びに図１６Ａ及び図１６Ｂを参照して説明する。なお、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００２８】
[第１の実施の形態]
[構成例]
図１に示すように、本実施の形態に係るプロセッサシステム１００は、制御用プロセッサ(Ｐｒｏｃｅｓｓｏｒ Ｃｏｒｅ)１０と、これに接続される複素演算処理用コプロセッサ(以下、コプロセッサと略称することがある) １１とを備えている。プロセッサシステム１００は、外部とのインタフェースとして、ブート制御や割り込み信号入力等を行うためのプロセッサ制御インタフェースと、命令メモリ１０１にアクセスするための命令メモリインタフェースと、ローカルメモリ(データメモリ)１０２にアクセスするためのローカルメモリインタフェースと、外部ペリフェラル(図示せず)に制御アクセスするためのＤＳＰインタフェースと、共有メモリ(図示せず)にストリームアクセスするための共有メモリインタフェースとを含む。また、プロセッサシステム１００は、パイロットジェネレータ７０によって発生される既知のパイロット信号(リファレンス信号)を連続的に入力するためのパイロットデータインタフェースも含む。なお、命令メモリ１０１は、制御用プロセッサ１０の命令メモリインタフェースに直接接続されている。
【００２９】
制御用プロセッサ１０には、コプロセッサインタフェースを備えた一般的な制御用プロセッサ(例えば、ハーバードアーキテクチャ型の３２ビットＲＩＳＣ(Ｒｅｄｕｃｅｄ Ｉｎｓｔｒｕｃｔｉｏｎ Ｓｅｔ Ｃｏｍｐｕｔｅｒ)プロセッサ)を用いることができる。制御用プロセッサ１０は、コプロセッサインタフェースを介してコプロセッサ１１に接続される。そして、命令メモリ１０１は、制御用プロセッサ１０の命令メモリインタフェースに直接接続される。
【００３０】
ここで、メモリセレクタ(ＭＵＸ型バスコントローラ)１２は、制御用プロセッサ１０からのデータアクセスと、コプロセッサ１１からのメモリアクセスを調停する。なお、プロセッサコントローラ１３は、外部からのブート制御、割り込み制御等を行うブロックである。外部からのローカルメモリ１０２や命令メモリ１０１へのアクセスは、外部から各メモリへ直接アクセス可能な(バイパスする)構成にしても良いし、プロセッサ制御インタフェースを介して行うようにしても良い。
【００３１】
一方、コプロセッサ１１は、ローカルメモリコントローラ(ＬＭＣ)２０と、共有メモリコントローラ(ＳＭＣ)２１と、複素演算用のＡＬＵ(Ａｒｉｔｈｍｅｔｉｃ ａｎｄ Ｌｏｇｉｃ Ｕｎｉｔ)２２とを含む。なお、以降の説明においては、ローカルメモリコントローラ(ＬＭＣ)及び共有メモリコントローラ(ＳＭＣ)を区別すること無く、メモリコントローラと総称することがある。
【００３２】
ローカルメモリコントローラ(ＬＭＣ)２０及び共有メモリコントローラ(ＳＭＣ)２１は、ＡＬＵ２２と並列に動作し、以てメモリアクセスレイテンシを隠蔽する。ローカルメモリコントローラ(ＬＭＣ)２０は、ローカルメモリインタフェース(ＬＭＥＭ ＩＦ)を介して、ローカルメモリ１０２に対するストリームアクセス(スプリットトランザクションをサポートするバーストアクセス)が可能である。一方、共有メモリコントローラ(ＳＭＣ)２１は、共有メモリインタフェース(ＳＭＥＭ ＩＦ)を介して、共有メモリに対するストリームアクセスが可能である。
【００３３】
具体的には、図２に示すように、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０及び２１の各々は、ＡＬＵ２２での演算処理とは並列にローカルメモリ及び共有メモリの各々にアクセスするために、内部に、書込アドレスジェネレータ３０と、書込データＦＩＦＯ(Ｆｉｒｓｔ−Ｉｎ Ｆｉｒｓｔ−Ｏｕｔ)３１と、読出アドレスジェネレータ４０と、読出データＦＩＦＯ ４１とを含む。読出アドレスジェネレータ４０は、メモリからの読出に際して、アドレスを投機的に発行するスプリットトランザクション機能を有する。また、各メモリコントローラ２０及び２１は、メモリからの入力データに正規化処理を施す前処理回路４２も含む。
【００３４】
なお、図１及び図２の例では、メモリコントローラが２個実装されているが、メモリコントローラは、１個であっても３個以上実装されても良い。
【００３５】
また、ＡＬＵ ２２は、複素算術演算器５０と、複素論理演算器５１とを含む。これらの演算器５０及び５１は、送信データに対する変調処理、受信データに対するチャネル推定処理や等化処理等の復調処理、同期処理等に用いることができる。具体的には、複素算術演算器５０は、複数の無線通信方式における変調／復調／同期処理にて一般的に用いられる、複素加算(ＣＡＤＤ)、複素減算(ＣＳＵＢ)、複素乗算(ＣＭＵＬ)、複素積和演算(ＣＭＡＣ)、複素共役加算(ＣＪＡＤＤ)、複素共役減算(ＣＪＳＵＢ)、複素共役乗算(ＣＪＭＵＬ)、複素共役積和演算(ＣＪＭＡＣ)、複素絶対値演算(ＣＡＢＳ)等を実行する。一方、複素論理演算器５１は、複素シフト演算(ＣＳＨＩＦＴ)、複素丸め演算(ＣＲＮＤ)、ムーブ命令等を実行する。
【００３６】
そして、ＡＬＵ ２２は、トレース回路６０も含む。トレース回路６０は、演算器５０及び５１から出力される複素演算結果を監視して、正規化係数を検出する。トレース回路６０は、複素演算結果の例えば１系列分の連続データの最大有効ビット位置を、正規化係数として検出する。ここで、最大有効ビット位置とは、符号ビットを除いて、演算結果データが最上位ビット(ＭＳＢ：Ｍｏｓｔ Ｓｉｇｎｉｆｉｃａｎｔ Ｂｉｔ)側から最初に"１"を呈するビットの位置である。
【００３７】
さらに、コプロセッサ１１は、レジスタファイル(ＲＥＧ)２３と、コントローラ(ＣＴＲＬ)２４とを含む。
【００３８】
レジスタファイル(ＲＥＧ)２３は、コプロセッサ命令にて使用可能な複数の汎用レジスタ(制御用プロセッサ１０内に元々設けられているレジスタとは異なる)を含む。但し、レジスタファイル(ＲＥＧ)２３は、制御用プロセッサ１０内のレジスタファイルと兼用できる場合、その設置は必須では無い。
【００３９】
また、コントローラ２４は、コプロセッサ命令をデコードし、その結果に応じて、メモリコントローラ２０及び２１、ＡＬＵ ２２、並びにレジスタファイル(ＲＥＧ)２３に対する制御を行う。
【００４０】
[動作例]
次に、本実施の形態の動作を、図１、図２、図３Ａ及び図３Ｂ、並びに図４〜図９を参照して詳細に説明する。なお、以降の説明においては、メモリコントローラ２０及び２１、ＡＬＵ ２２、並びにレジスタファイル(ＲＥＧ)２３の具体的な構成についても、明らかに理解されるであろう。
【００４１】
図１にプロセッサシステム１００の基本的な動作を示すように、制御用プロセッサ１０は、プロセッサ制御インタフェースや割り込みインタフェースを用いて起動されると、命令メモリ１０１から命令コードをフェッチし、ローカルメモリ(データメモリ)１０２にアクセスしながらプロセッサ処理を実行する。また、制御用プロセッサ１０は、必要に応じて、外部の共有メモリやペリフェラルブロックにもアクセスする。
【００４２】
ここで、制御用プロセッサ１０は、コプロセッサ１１を制御して複素演算処理を実行するために、命令コードとしてコプロセッサ命令を使用する。コプロセッサ命令がフェッチされた場合、制御用プロセッサ１０は、コプロセッサインタフェースを介してコプロセッサ処理を実行する。
【００４３】
この時、図２に示すように、コプロセッサ１１側では、コントローラ２４がコプロセッサ命令をデコードし、ローカルメモリコントローラ(ＬＭＣ)２０、共有メモリコントローラ(ＳＭＣ)２１、ＡＬＵ ２２、及びレジスタファイル(ＲＥＧ)２３を制御することでデコードされたコプロセッサ命令を実行する。
【００４４】
[汎用レジスタファイル２３の構成とこれに基づく動作]
図３Ａに示すように、レジスタファイル(ＲＥＧ)２３は、例えば、１６個の３２ビットレジスタＣＲ０〜ＣＲ１５から成る。コプロセッサ１１は、これらの汎用レジスタＣＲ０〜ＣＲ１５を用いて、コプロセッサ内演算命令や、制御用プロセッサ−コプロセッサ間演算命令などを実行する。また、図３Ｂには、各レジスタに複素数データが格納される場合のビットフォーマットが示されている。この例では、各レジスタの下位１６ｂｉｔに実数部(Ｒｅ)が、上位１６ｂｉｔには虚数部(Ｉｍ)が割り当てられている。
【００４５】
汎用レジスタＣＲ０〜ＣＲ１５の内、幾つかのレジスタは、特殊レジスタとして動作する。
【００４６】
図３Ａに示す例では、レジスタＣＲ０がゼロレジスタ(書込アクセスは無効、読出アクセスの値は常に"０")として動作する。
【００４７】
また、レジスタＣＲ２及びＣＲ３は、メモリアクセス用の特殊レジスタとして動作する。レジスタＣＲ２はローカルメモリアクセス用に割り当てられ、レジスタＣＲ３は共有メモリアクセス用に割り当てられる。この場合、ＡＬＵ ２２からレジスタＣＲ２への書込アクセスが行われると、ローカルメモリコントローラ(ＬＭＣ)２０内の書込データＦＩＦＯ ３１を経由してローカルメモリ１０２にデータが書き込まれる。この時の書込アドレスは、ローカルメモリコントローラ(ＬＭＣ)２０内の書込アドレスジェネレータ３０が指定するアドレスとなる。
【００４８】
これにより、ＡＬＵ ２２及びコントローラ２４は、レジスタＣＲ２への書込だけで、次のコプロセッサ命令を実行可能である。このため、結果として、１[データ／サイクル]の書込スループットでローカルメモリ１０２に演算結果データを書き込むことができる。
【００４９】
一方、事前にローカルメモリコントローラ(ＬＭＣ)２０内の読出アドレスジェネレータ４０等を動作させ、ローカルメモリ１０２上のストリームデータの読出を開始しておくことで、ＡＬＵ ２２は、レジスタＣＲ２への読出アクセスを行うだけで、ローカルメモリ１０２上のデータを、ローカルメモリコントローラ(ＬＭＣ)２０内の前処理回路４２及び読出データＦＩＦＯ ４１を経由して読み出すことが可能である。
【００５０】
この時、ローカルメモリ１０２上のデータは事前にローカルメモリコントローラ(ＬＭＣ)２０内部へ転送されている。このため、ＡＬＵ ２２は、Ｗａｉｔすること無くレジスタＣＲ２への読出アクセスを行うことが可能であり、結果として、１[データ/サイクル]の読出スループットでローカルメモリ１０２から演算対象のデータを読み出すことができる。
【００５１】
同様に、ＡＬＵ ２２は、レジスタＣＲ３に対する書込アクセス及び読出アクセスを実施することで、メモリアクセスレイテンシを隠蔽しながら、共有メモリコントローラ(ＳＭＣ)２１経由で共有メモリにアクセスすることが可能である。
【００５２】
また、パラメータレジスタ設定により、他の２つのレジスタＣＲ４及びＣＲ５をピープ(ＰＥＥＰ)処理用のレジスタとして動作させることも可能である。
【００５３】
前述した通り、レジスタＣＲ２及びＣＲ３は、ローカルメモリ１０２及び共有メモリにそれぞれアクセスするためのレジスタである。これらのレジスタＣＲ２及びＣＲ３に対する読出アクセスを行うと、読出データＦＩＦＯ ４１の状態が更新される。
【００５４】
一方、レジスタＣＲ４及びＣＲ５をピープ処理用のレジスタとして動作させ、これらのレジスタＣＲ４及びＣＲ５への読出アクセスを行った場合、レジスタ(ＬＭＰ)ＣＲ４からはレジスタ(ＬＭ)ＣＲ２と同じデータを、レジスタ(ＳＭＰ)ＣＲ５からはレジスタ(ＳＭ)ＣＲ３と同じデータを読み出すことができる。この時、読出データＦＩＦＯ ４１の状態は更新されない。従って、レジスタＣＲ４及びＣＲ５から読み出したデータは、その後、レジスタＣＲ２及びＣＲ３から再度読み出すことができる。本ピープレジスタ機能は、同一のデータを複数回使用する場合に有用である。特に、種々の無線方式における変調／復調処理では、何度か同じデータを連続して使用する可能性があるため、本機能は非常に有用である。
【００５５】
なお、レジスタＣＲ４及びＣＲ５は、パラメータ設定により、ピープ(ＰＥＥＰ)機能レジスタとして使用するか、通常の汎用レジスタとして使用するかを選択することも可能である。
【００５６】
また、レジスタＣＲ１をパイロット信号(リファレンス信号)アクセス用の特殊レジスタとして動作させる。この場合、事前にパイロットジェネレータ７０等を動作させておくことで、 ＡＬＵ ２２は、レジスタＣＲ１への読出アクセスを行うだけで、パイロットジェネレータ７０から連続的に入力されるパイロット信号(リファレンス信号)を順次読み出すことが可能である。
【００５７】
この時、ＡＬＵ ２２は、Ｗａｉｔすること無くレジスタＣＲ１への読出アクセスを行うことが可能であり、結果として、アクセスレイテンシを隠蔽して、１[データ/サイクル]のスループットで連続したパイロット信号(リファレンス信号)にアクセスすることができる。
【００５８】
さらに、レジスタＣＲ６を、正規化係数算出のためにトレース結果格納用のレジスタとして動作させる。
【００５９】
本レジスタＣＲ６は、コントローラ２４内のＴＲＡＣＩＮＧレジスタ設定が"ＯＦＦ"である時に通常の汎用レジスタとして動作し、"ＯＮ"である時にはＡＬＵ ２２内のトレース回路６０によって、複素演算結果の最大有効ビット位置(正規化係数)を検出するためのトレース結果格納用(累積論理和(ＯＲ)処理用)として用いられる。
【００６０】
このような構成により、ローカルメモリ１０２、外部共有メモリ、及びパイロット信号(リファレンス信号)へのアクセスに汎用レジスタを使用することができる。すなわち、ローカルメモリ１０２、外部共有メモリ、及びパイロット信号(リファレンス信号)へのストリームデータアクセスを、コプロセッサ１１内の汎用レジスタと同様の命令マッピングや処理サイクル数で実行可能である。
【００６１】
なお、図３Ａ及び図３Ｂでは、各レジスタのビットフォーマットを３２ビットとし、実数部(Ｒｅ)１６ビット及び虚数部(Ｉｍ)１６ビットを１複素数データとして格納する場合を扱った。また、３２ビット×１６個のレジスタファイル構成を扱った。しかしながら、レジスタファイル(ＲＥＧ)２３は、このような構成に限らず、１６ビットや６４ビットのレジスタを用いて構成しても良いし、８個や３２個のレジスタ用いて構成しても良い。
【００６２】
[コプロセッサ命令のコード構成とこれに基づく動作]
図４は、コプロセッサ命令の命令コードの構成例を示している。
【００６３】
ＯＰ(Ｏｐｅｒａｔｉｏｎ Ｃｏｄｅ)＝"０"のＣＡＤＤは複素加算命令であり、入力レジスタ(ＣＲｓ、ＣＲｔ)のデータに対して複素加算処理(ＣＡＤＤ)を行い、その結果を出力レジスタ(ＣＲｄ)に出力すべきこと(ＣＲｄ＝ＣＲｓ＋ＣＲｔ)を意味する。ここで、ＣＲｓ、ＣＲｔ、及びＣＲｄは、共にレジスタファイル(ＲＥＧ)２３内の汎用レジスタ番号を示す。
【００６４】
同様に、ＯＰ＝"１"のＣＳＵＢは複素減算命令、ＯＰ＝"２"のＣＭＵＬは複素乗算命令、ＯＰ＝"３"のＣＭＡＣは複素積和演算命令である。また、ＯＰ＝"４"のＣＪＡＤＤは複素共役加算命令、ＯＰ＝"５"のＣＪＳＵＢは複素共役減算命令、ＯＰ＝"６"のＣＪＭＵＬは複素共役乗算命令、ＯＰ＝"７"のＣＪＭＡＣは複素共役積和演算命令であり、ＯＰ＝"８"のＣＡＢＳは複素絶対値演算命令である。これらの命令は、ＡＬＵ ２２内に後述する複素算術演算器５０を実装することで、通常のプロセッサ処理では１複素データ分を処理するのに複数サイクルが必要な算術演算処理を、１サイクルで実行することが可能である。
【００６５】
ＯＰ＝"９"のＣＲＮＤは複素丸め演算命令であり、ＯＰ＝"Ａ"のＣＳＨＬは複素左シフト演算命令(ＣＲｄ＝ＣＲｓ<<ｉｍｍ)、ＯＰ＝"Ｂ"のＣＳＨＲは複素右シフト演算命令(ＣＲｄ＝ＣＲｓ>>ｉｍｍ)である。これらの命令や後述する複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)等は、複素論理演算器５１によって実行される。
【００６６】
ここで、図４の例では、コプロセッサ命令の一部の例として、コプロセッサ内での演算命令のみを示したが、これらの他に、命令コード内の固定ビット(図４の例ではビット[２２：２１])を"１１"以外の値に変更することによって、制御用プロセッサ−コプロセッサ間演算命令やトレース回路６０用のパラメータ設定命令を定義することも可能である。
【００６７】
制御用プロセッサ−コプロセッサ間演算命令の例としては、図４の例ではコプロセッサレジスタ(ＣＲｔ)を用いていた各命令のターゲット(ソース)レジスタ部分を、制御用プロセッサ１１内の汎用レジスタ番号(Ｒｔ)とすることで、コプロセッサレジスタ(ＣＲｓ)と制御プロセッサ１１内の汎用レジスタ(Ｒｔ)の両方を入力として複素演算を実行することが可能となる。また、レジスタ転送命令(ＣＭＯＶＥ)の入力レジスタや出力レジスタに制御用プロセッサ１１内の汎用レジスタ(Ｒｓ、Ｒｄ)を指定することで、制御プロセッサ−コプロセッサ間のレジスタ間転送命令などが定義できる。
【００６８】
さらに、複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)により、指定したコプロセッサレジスタ(ＣＲｓ)の実数部および虚数部の各々の符号ビット(ｓｉｇｎ ｂｉｔ)数を求め、その結果を制御用プロセッサ１１内の汎用レジスタ(Ｒｄ)に格納する命令も定義できる。この複素Ｅｘｐｏｎｅｎｔ命令は、後述する正規化係数の算出に際して使用される命令である。
【００６９】
なお、トレース回路６０用の設定命令等のパラメータレジスタ設定命令は、ＡＬＵ２２やメモリコントローラ(ＬＭＣ、ＳＭＣ)２０及び２１内の種々のパラメータレジスタに、即値又は制御用プロセッサ１１内の汎用レジスタ値を設定できる命令である。
【００７０】
[ＡＬＵ ２２の構成とその動作]
[複素算術演算器５０の構成とその動作]
図５は、ＡＬＵ ２２内の複素算術演算器５０の構成例を示している。
【００７１】
複素算術演算器５０は、そのインタフェースとして、入力データ(ＣＲｓ、ＣＲｔ、 ＣＲｄ)、出力データ(ＣＲｄ)、及び演算モード(ｃｏｎｊ、ｍａｃ、ｓｕｂ)を持つ。
【００７２】
ここで、ＣＲｄが入力と出力の両方のインタフェースを持つのは、積和演算(累積演算)のためである。複素積和演算処理用に４個の乗算器と２個(又は４個)の加算器を設けることで、演算モードに応じて、例えば図４などで定義された各種の複素算術演算命令に１データ/サイクルにて対応することが可能である。
【００７３】
このように、複素算術演算器５０の構成および動作として、使用する複素算術演算命令に依存して動作モードを変更し、複素算術演算を実行することで、種々の無線通信方式の変調／復調／同期処理における複素演算処理に１データ／サイクルにてプログラマブルに対応可能である。
【００７４】
さらに、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０又は２１(レジスタＣＲ２又はＣＲ３等)、並びにパイロットジェネレータ７０(レジスタＣＲ１)を動作させながら、ｆｏｒ文などを用いて繰り返し複素演算処理命令を実行することにより、図５の回路構成では、ローカルメモリ又は共有メモリに格納された長いストリームデータ系列に対する複素演算処理を１データ／サイクルのスループットで実行することが可能である。
【００７５】
[複素論理演算器５１の構成とその動作]
図６は、ＡＬＵ ２２の全体構成例、その内部の複素論理演算器５１の構成例、及びトレース回路６０の構成例を示している。
【００７６】
複素論理演算器５１は、そのインタフェースとして、入力データ(ＣＲｓ、ＣＲｔ(ｉｍｍ))、出力データ(ＣＲｄ)、演算モード(ＡＬＵ＿ｃｏｎｔｒｏｌ)を持つ。
【００７７】
複素論理演算器５１は、主に、複素左シフト命令(ＣＳＨＬ)や複素右シフト命令(ＣＳＨＲ)、複素丸め演算命令(ＣＲＮＤ)のためのシフト回路(Ｓｈｉｆｔｅｒ)と、複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)のための最大有効ビット位置検出回路(Ｐｒｉ＿ｅｎｃ)と、複素ムーブ命令(ＣＭＯＶ)等のためのビットマニピュレータとを含む。
【００７８】
ここで、最大有効ビット位置検出回路(Ｐｒｉ＿ｅｎｃ)は、入力データの最上位ビット(ＭＳＢ)側から何ビット目に始めて有効ビットである"１"が存在するかを検出し、そのビット位置を出力する演算回路である。
【００７９】
複素論理演算器５１は、演算モード(ＡＬＵ＿ｃｏｎｔｒｏｌ)に応じて、例えば図４などで定義された各種の複素論理演算命令に１データ/サイクルにて対応する。
【００８０】
このように、複素論理演算器５１は、使用する複素論理演算命令に依存して動作モードを変更し、複素論理演算を実行することで、種々の無線方式の変調／復調／同期処理における複素論理演算処理に１データ／サイクルにてプログラマブルに対応可能である。
【００８１】
さらに、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０又は２１(レジスタＣＲ２又はＣＲ３等)、並びにパイロットジェネレータ７０(レジスタＣＲ１)を動作させながら、ｆｏｒ文などを用いて繰り返し複素論理処理命令を実行することにより、図６の回路構成では、ローカルメモリ又は共有メモリに格納された長いストリームデータ系列に対する複素演算処理を１データ/サイクルのスループットで実行することが可能である。
【００８２】
[トレース回路６０の構成とその動作]
図６に示すように、トレース回路６０は、複素演算命令の演算結果、トレース制御信号、トレース用の特殊レジスタ(ＣＲ６)値の３つを入力インタフェースとして、トレース演算処理(ＴＲＡＣＥ)を行い、トレース演算結果を再度トレース用の特殊レジスタ(ＣＲ６)に向けて出力する。
【００８３】
ここで、トレース回路６０は、コントローラ２４からのパラメータレジスタ設定命令によるトレース制御により、他の任意の複素演算命令を実行しながら、サイクルオーバヘッドなしに並列にトレース演算処理を実行できるという特徴がある。
【００８４】
トレース回路６０(トレース演算処理)は、トレース後に１回の複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)にて最大有効ビット位置を検出可能なように、複素演算結果の実数部(Ｒｅ)と虚数部(Ｉｍ)の各々における有効ビットを"１"として、トレース用特殊レジスタ(ＣＲ６)を用いながら累積論理和(累積ＯＲ)処理を行う回路である。
【００８５】
すなわち、トレース回路６０は、複素演算結果の実数部(Ｒｅ)と虚数部(Ｉｍ)の各々において、正の数(ｓｉｇｎ ｂｉｔであるＭＳＢが"０")の場合はそのまま累積論理和(累積ＯＲ)処理を行い、負の数(ｓｉｇｎ ｂｉｔであるＭＳＢが"１")の場合には該当する実数部(Ｒｅ)又は虚数部(Ｉｍ)の全ビット分を反転(ＮＯＴ)させて累積論理和(累積ＯＲ)処理を行う。
【００８６】
このようなトレース回路６０を実装することにより、或るデータ系列分の複素演算結果の実数部(Ｒｅ)と虚数部(Ｉｍ)のそれぞれにおける有効ビット位置の最大値を、サイクルオーバヘッドなしに累積処理(トレース)することが可能である。
【００８７】
また、実際の最大有効ビット位置は、トレース後に、最上位ビット(ＭＳＢ)側から最初に"１"となるビット位置を検出する複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)を１回実行することによって求めることが可能であり、実行した複素Ｅｘｐｏｎｅｎｔ命令の結果(ビット位置)を用いて、データのダイナミックレンジを調整するために正規化処理する場合の正規化係数を算出することが容易に可能となる。
【００８８】
ここで、トレース制御信号は、コントローラ２４内のパラメータレジスタ(ＴＲＡＣＩＮＧレジスタ)設定等により、トレース機能が有効(ＯＮ)で、且つ実行する複素演算命令の出力先レジスタ番号が、ＴＲＡＣＩＮＧレジスタにてトレース対象レジスタとして設定されたレジスタ番号と一致する場合にアクティブとなる信号である。
【００８９】
すなわち、トレース対象レジスタ番号を設定できることにより、どの演算結果だけをトレース対象とするかを指定することが可能である。
【００９０】
また、演算結果が３２ビットの実数データフォーマットである場合と、又は図３Ｂに示したような１６ビット×２の複素数データフォーマットである場合とをＴＲＡＣＩＮＧレジスタのトレースモードによって指定可能である。このため、トレースモード設定によって、３２ビット一括でトレース処理するのか、又は１６ビットずつ実数部(Ｒｅ)と虚数部(Ｉｍ)を分離して処理するのかを柔軟に変更することも可能である。
【００９１】
[メモリコントローラ２０及び２１の構成とその動作]
図２に示したように、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０及び２１の各々は、制御用プロセッサ１０及びコプロセッサ１１の演算処理とは並列にローカルメモリ１０２又は共有メモリにアクセスするため、その内部に、書込アドレスジェネレータ３０、書込データＦＩＦＯ ３１、読出アドレスジェネレータ４０、読出データＦＩＦＯ ４１、及び前処理回路４２を含む。
【００９２】
[書込アドレスジェネレータ３０及び書込データＦＩＦＯ ３１の構成とその動作]
コプロセッサ１１からレジスタＣＲ２又はＣＲ３を介してメモリに演算結果であるストリームデータを書き込む場合、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０又は２１において、書込アドレスジェネレータ３０及び書込データＦＩＦＯ ３１が動作する。
【００９３】
図７は、書込アドレスジェネレータ３０及び書込データＦＩＦＯ ３１の構成例を示している。
【００９４】
まず、書込アドレスジェネレータ３０は、制御レジスタとして、スタートレジスタ(ｗ＿ｓｔａｒｔ)、ベースアドレスレジスタ(ｗ＿ｂａｓｅ)、初期ポインタレジスタ(ｗ＿ｐｔｒ)、ステップレジスタ(ｗ＿ｓｔｅｐ)、メモリ長レジスタ(ｗ＿ｌｅｎ)、アクセス回数レジスタ(ｗ＿ｃｎｔ)を含む。
【００９５】
コプロセッサのパラメータ設定命令にてこれらの制御レジスタに値が設定され、起動されると、書込アドレスジェネレータ３０は、書き込みデータＦＩＦＯ ３１からのデータ出力要求の度毎にアドレスを自動的に生成し、発行する。
【００９６】
基本的には、書込アドレスジェネレータ３０は、ベースアドレス(ｗ＿ｂａｓｅ)に対してカレントアドレスポインタの値を加算して得たアドレスを発行する。カレントアドレスポインタは、初期ポインタ(ｗ＿ｐｔｒ)の値を初期値として、アドレス出力の度毎に、その値が更新される。書込アドレスジェネレータ３０は、アドレス出力する度毎に、現在のアドレスに対して３２ビットアドレス単位でステップ数(ｗ＿ｓｔｅｐ)分だけ加算すると共に、メモリ長サイズ(ｗ＿ｌｅｎ)で剰余(Ｍｏｄｕｌｏ)演算して得た結果を、次のカレントアドレスポインタとして出力する。
【００９７】
よって、書込アドレスジェネレータ３０は、上記の制御レジスタに加えて、図７に示す如くカレントアドレスポインタレジスタ、２つの加算器、剰余演算器(比較器と減算器から成る)、並びにアクセス回数カウント用の比較器及び減算器を含む。
【００９８】
このような構成により、任意のメモリ領域に対して、昇順や降順での連続したアドレスでの書込を行うことができる。ステップ数(ｗ＿ｓｔｅｐ)を制御することで任意のアドレス間隔での書込を行うこともできる。また、メモリ長(ｗ＿ｌｅｎ)を制御することで、メモリの途中から書き込み始めて最後まで書き込んだら先頭に戻っての書込を行うこともできる。従って、柔軟なアドレスパタンを生成することができる。
【００９９】
次に、書込データＦＩＦＯ ３１について説明する。
【０１００】
ＡＬＵ ２２からレジスタＣＲ２又はＣＲ３に出力されたデータは、書込データＦＩＦＯ ３１を経由してメモリに出力される。書込データＦＩＦＯ ３１は、データが入力されると、書込アドレスジェネレータ３０と協調動作して、データを順番にメモリ上の書き込みアドレスジェネレータ３０が示すアドレスに格納する。
【０１０１】
このように、ＦＩＦＯを用いてデータ出力することで、制御用プロセッサ１０及びコプロセッサ１１の演算命令とは並列にメモリアクセスでき、メモリ側がＷａｉｔした場合であっても演算命令には影響を与えない。このため、データ書込に際してのメモリアクセスレイテンシを隠蔽することが可能となる。
【０１０２】
ここで、メモリ側のＷａｉｔにより、書込データＦＩＦＯ ３１がＦｕｌｌになってしまった場合に備え、レジスタファイル(ＲＥＧ)２３を介してＡＬＵ ２２側でのコプロセッサ命令の実行をＷａｉｔさせるようなＷａｉｔ制御機構も設ける。この場合、正常にコプロセッサ命令処理の実行を継続することができる。
【０１０３】
[読出アドレスジェネレータ４０、読出データＦＩＦＯ ４１、及び前処理回路４２の構成とその動作]
コプロセッサ１１がレジスタＣＲ２又はＣＲ３を介してメモリからストリームデータを読み出す場合、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０又は２１において、読出アドレスジェネレータ４０、読出データＦＩＦＯ ４１、及び前処理回路４２が動作する。
【０１０４】
図８は、読出アドレスジェネレータ４０、読出データＦＩＦＯ ４１、及び前処理回路４２の構成例を示している。
【０１０５】
まず、読出アドレスジェネレータ４０は、書込アドレスジェネレータ３０と同様、制御レジスタとして、スタートレジスタ(ｒ＿ｓｔａｒｔ)、ベースアドレスレジスタ(ｒ＿ｂａｓｅ)、初期ポインタレジスタ(ｒ＿ｐｔｒ)、ステップレジスタ(ｒ＿ｓｔｅｐ)、メモリ長レジスタ(ｒ＿ｌｅｎ)、アクセス回数レジスタ(ｒ＿ｃｎｔ) を含む。
【０１０６】
コプロセッサのパラメータ設定命令にてこれらの制御レジスタに値が設定され、スタートレジスタ(ｒ＿ｓｔａｒｔ)設定により起動されると、読出アドレスジェネレータ４０は、メモリからの読出アドレスを自律的に生成し、アクセス回数レジスタ(ｒ＿ｃｎｔ)分だけ連続的に発行する。
【０１０７】
読出アドレスを投機的に発行することにより、データ読出に際してのスプリットトランザクションに対応する。
【０１０８】
基本的には、読出アドレスジェネレータ４０は、ベースアドレス(ｒ＿ｂａｓｅ)に対してカレントアドレスポインタの値を加算して得たアドレスを発行する。カレントアドレスポインタは、初期ポインタ(ｒ＿ｐｔｒ)の値を初期値として、アドレス出力の度毎に、その値が更新される。読出アドレスジェネレータ４０は、アドレス出力する度毎に、現在のアドレスに対して３２ビットアドレス単位でステップ数(ｒ＿ｓｔｅｐ)分だけ加算すると共に、メモリ長サイズ(ｒ＿ｌｅｎ)で剰余(Ｍｏｄｕｌｏ)演算して得た結果を、次のカレントアドレスポインタとして出力する。
【０１０９】
よって、読出アドレスジェネレータ４０は、上記の制御レジスタに加えて、図８に示す如く実際にアドレスを計算するためのカレントアドレスポインタレジスタ、２つの加算器、剰余演算器(比較器と減算器から成る)、並びにアクセス回数カウント用の比較器及び減算器を含む。
【０１１０】
このような構成により、任意のメモリ領域に対して、昇順や降順での連続したアドレスでのデータ読出を行うことができる。ステップ数(ｒ＿ｓｔｅｐ)を制御することで任意のアドレス間隔での読出を行うこともできる。また、メモリ長(ｒ＿ｌｅｎ)を制御することで、メモリの途中から読み出し始めて最後まで読み出したら先頭に戻っての読出を行うこともできる。従って、柔軟な読み出しアドレスパタンを生成することができる。
【０１１１】
次に、読出データＦＩＦＯ ４１及び前処理回路４２について説明する。
【０１１２】
メモリから読み出したデータ(ＲＤＡＴ)は、前処理回路４２及び読出データＦＩＦＯ ４１を介して、ＡＬＵ ２２側に転送される。読出データ(ＲＤＡＴ)は、前処理回路４２にまず入力される。
【０１１３】
図８に示すように、前処理回路４２は、左シフト量を設定するための正規化係数レジスタ(ｒ＿ｓｈｉｆｔ)、及び算術左シフトを実施するシフト回路(バレルシフタ)を含む。ここで、左シフト量は、トレース回路６０及び複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)により算出された正規化係数(最大有効ビット位置)に基づき設定される。
【０１１４】
シフト回路(バレルシフタ)は、正規化係数レジスタ(ｒ＿ｓｈｉｆｔ)の設定値(左シフト量)に従い、メモリから読み出した複素数データの実数部(Ｒｅ)と虚数部(Ｉｍ)のそれぞれについて算術左シフトを実行する。
【０１１５】
このように、前処理回路４２を用いて、或る複素数データ系列分に対して全て同様の算術左シフトを実行することにより、当該データ系列の全てのデータに正規化処理を施すことができる。
【０１１６】
また、読出アドレスジェネレータ４０によるメモリへの投機アクセスと、後段の読出データＦＩＦＯ ４１により、前処理回路４２は、制御用プロセッサ１０及びコプロセッサ１１における演算処理に並列して、サイクルオーバヘッド無く動作できる。
【０１１７】
また、前処理回路４２にて正規化処理が施された読出データは、読出データＦＩＦＯ ４１に順次格納され、レジスタファイル２３(レジスタＣＲ２又はＣＲ３)を介してＡＬＵ ２２へ転送される。
【０１１８】
なお、メモリ側のＷａｉｔ等により、読出データＦＩＦＯ ４１内に所望のデータがまだ存在しない(読出データＦＩＦＯ ４１が空の状態にある)場合に備え、レジスタファイル(ＲＥＧ)２３を介してＡＬＵ ２２側でのコプロセッサ命令の実行をＷａｉｔさせるようなＷａｉｔ制御機構も設ける。この場合、正常にコプロセッサ命令処理の実行を継続することができる。
【０１１９】
[プロセッサシステム１００の全体動作例]
図９の部分(ｂ)は、プロセッサシステム１００の全体動作例を示している。具体的には、コプロセッサ１１からレジスタＣＲ２又はＣＲ３を介してメモリ(ローカルメモリ１０２又は共有メモリ１０５(若しくは、図１０に示す共有メモリ２０３))から複素数データ系列(ストリームデータ)を読み出し、チャネル推定等の所望の復調処理(複素演算処理)を行い、処理結果データを、レジスタＣＲ２又はＣＲ３を介してメモリ(ローカルメモリ１０２又は共有メモリ１０５(若しくは２０３))に書き込む場合を扱っている。
【０１２０】
例えば、メモリ上のストリームデータに対してパイロット信号系列との複素共役乗算(ＣＪＭＵＬ)を行い、その後、その結果データに対して更に複素積和演算(ＣＭＡＣ)を行う場合の例である。但し、複素積和演算のためには入力データに正規化処理を施す必要がある場合を扱っている。
【０１２１】
本実施の形態の効果がより理解され得るよう、まずは図９の部分(ａ)を参照して、従来技術である通常のＤＳＰを使用した場合の動作を説明する。そして、これと比較する形で、部分(ｂ)を参照して本実施の形態の全体動作を説明する。
【０１２２】
図９の部分(ａ)に示すように、ＤＳＰは、最初のパイロット信号(リファレンス信号)との複素共役演算(ＣＭＵＬ)に先立って、パイロット信号系列の読出と複素数データ系列の読出とを行う(ステップＳ１０１)。この時、それぞれの読出に係るアドレス計算サイクルやデータ読出サイクルが必要となる。また、複素数データ系列の格納場所が共有メモリ１０５(若しくは２０３)のようにアクセスレイテンシを必要とする場合は、更に追加のアクセスサイクル数が必要となる。
【０１２３】
この後、ＤＳＰは、次の複素積和演算(ＣＭＡＣ)時に入力データに正規化処理を施す必要があるため、複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)を実行し、以て正規化係数(最大有効ビット位置)を算出する。複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)の実行サイクルはデータ毎に必要である。
【０１２４】
そして、ＤＳＰは、これらの処理をｆｏｒ文などで１データ系列分繰り返す。
【０１２５】
この後、ＤＳＰは、データ毎に正規化処理(左シフト処理)を実行し(ステップＳ１０３)、正規化処理に続けて複素積和演算(ＣＭＡＣ)を実行する(ステップＳ１０４)。
【０１２６】
そして、ＤＳＰは、これらの処理をｆｏｒ文などで１データ系列分繰り返し、演算処理を終了する。
【０１２７】
一方、本実施の形態においては、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０及び２１内の各アドレスジェネレータ３０及び４０へのパラメータ設定と起動とが行われる。図９の部分(ｂ)に示すように、メモリコントローラ２０又は２１は、自律的にメモリからデータを読み出し、読み出しデータを読出データＦＩＦＯ ４１に順次格納する(スプリットトランザクション) (ステップＳ１)。
【０１２８】
同様に、パイロットジェネレータ７０に対しても動作開始設定することで、レジスタＣＲ１にパイロット信号データ系列が順次格納される(ステップＳ２)。
【０１２９】
また、コプロセッサのパラメータレジスタ設定命令により、コントローラ２４内のＴＲＡＣＩＮＧレジスタに対するトレース有効設定を実施しておく。
【０１３０】
そして、ＡＬＵ ２２は、レジスタＣＲ１及びＣＲ３を入力、レジスタＣＲ２を出力として複素共役演算命令(ＣＪＭＵＬ)を実行する(ステップＳ３)。これにより、プロセッサシステム１００は、共有メモリアクセスレイテンシ及びパイロットデータのアクセスレイテンシを隠蔽し、且つトレース回路６０で演算結果の最大有効ビット位置をトレースしながら(レジスタＣＲ６を用いて)、演算結果データをローカルメモリ(データメモリ)１０２に格納することが可能である。
【０１３１】
結果として、１データ系列分を処理するｆｏｒ文の中は、同一の複素共役演算命令(ＣＪＭＵＬ)を繰り返すだけとなる。
【０１３２】
次に、ＡＬＵ ２２は、複素積和演算命令(ＣＭＡＣ)の実行に先立ち、複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)を１回だけ実行する(ステップＳ４)。これにより、正規化係数(最大有効ビット位置)が算出される。この正規化係数を、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０及び２１内の正規化係数レジスタ(ｒ＿ｓｈｉｆｔ)に設定しておく。
【０１３３】
そして、ＡＬＵ ２２は、ｆｏｒ文などで１データ系列分の複素積和演算命令(ＣＭＡＣ)を実行する。この時、前処理回路４２は、複素積和演算命令(ＣＭＡＣ)と並行して、入力データに正規化処理(左シフト処理)を施す(ステップＳ５)。
【０１３４】
このように、正規化処理を含むようなチャネル推定等の復調処理(複素演算処理)をプロセッサシステム１００を用いて実行することで、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０及び２１等への設定サイクルが数サイクル必要となるものの、ｆｏｒ文の中の処理命令数は１つ(複素共役乗算命令(ＣＪＭＵＬ)又は複素積和演算命令(ＣＭＡＣ))に限定することが可能である。
【０１３５】
一般的に、１データ系列長(ｆｏｒ文の繰り返し回数)はメモリコントローラ(ＬＭＣ、ＳＭＣ)２０及び２１への設定サイクル数に比べて遥かに長く、ｆｏｒ文の中の処理サイクル数が支配的となる。このため、図９中に点線矢印で示すように、プロセッサシステム１００では、通常ＤＳＰを使用する場合に比べて約２倍以上の高速化が可能となる。すなわち、通常ＤＳＰでは、ｆｏｒ文中に複素演算命令に加えて最大有効ビット位置の検出処理(ＣＥＸＰ)や入力データの正規化処理(ＳＨＩＦＴ)、場合によっては入力データやパイロットデータの読出処理サイクルも必要となる。一方、プロセッサシステム１００では、トレース回路６０及び前処理回路４２へのパラメータ設定により、ｆｏｒ文内における処理サイクル数を低減(並列処理化)することが可能である。
【０１３６】
なお、コプロセッサ１１内には、トレース回路６０又は前処理回路４２の一方を設けても良い。この場合も、演算処理の高速化及び効率化を図れることは明らかである。
【０１３７】
[適用例]
図１０は、上記のプロセッサシステム１００を、一例として、ＩＥＥＥにて規格化されている無線ＬＡＮ(ＩＥＥＥ ８０２．１１ａ)方式やＷｉＭＡＸ(ＩＥＥＥ ８０２．１６ｅ)方式などを含む複数の無線通信方式に対応可能な変調／復調処理モジュール(ＭＯＤＥＭ)に適用した場合の無線通信システムの構成例を示している。
【０１３８】
本無線通信システムは、モデムモジュール(ＭＯＤＥＭ)２００と、ＲＦ(Ｒａｄｉｏ Ｆｒｅｑｕｅｎｃｙ)インタフェースフェースモジュール２０４と、サーチモジュール(Ｓｅａｒｃｈ)２０５と、コーデックモジュール(ＣＯＤＥＣ)２０６とを含む。モデムモジュール(ＭＯＤＥＭ)２００は、送信データに対する変調処理や受信データに対する復調処理を行う。サーチモジュール(Ｓｅａｒｃｈ)２０５は、対向通信装置との間の同期確立やタイミング探査を行う。コーデックモジュール(ＣＯＤＥＣ)２０６は、送信データに対する符号化処理や受信データに対する復号化処理を行う。
【０１３９】
また、本無線通信システムは、汎用プロセッサ(ＣＰＵ)２０１と、リソースマネージャ２０２と、共有メモリ２０３とを含む。汎用プロセッサ(ＣＰＵ)２０１は、上位レイヤ(Ｌａｙｅｒ２/Ｌａｙｅｒ３)の処理を実行する。共有メモリ２０３は、モジュール間でデータを転送するために用いられる。
【０１４０】
そして、モデムモジュール(ＭＯＤＥＭ)２００は、上記のプロセッサシステム１００、命令メモリ(ＩＲＡＭ)１０１、及びデータメモリ(ＤＲＡＭ)１０２、並びにインタフェース制御回路１０３、ＦＦＴ／ＩＦＦＴ処理エンジン１０４、等化処理エンジン(イコライズ処理エンジン)１０６、及びプロセッサシステム１００とＦＦＴ／ＩＦＦＴ処理エンジン１０４の間のデータ転送に用いる共有メモリ１０５を含む。
【０１４１】
すなわち、変調／復調処理の内、その処理量が膨大でプロセッサ処理ではリソースが不足するＦＦＴ/ＩＦＦＴ処理や等化処理(イコライズ処理)のみを専用ハードウェアであるＦＦＴ／ＩＦＦＴ処理エンジン１０４や等化処理エンジン(イコライズ処理エンジン) １０６を用いて実行し、それ以外のチャネル推定処理等の複数の無線通信方式における変調／復調処理については、プロセッサシステム１００を用いて実行する。
【０１４２】
図１１Ａ及び図１１Ｂは、本適用例における変調処理例及び復調処理例をそれぞれ示している。
【０１４３】
図１１Ａに示すように、送信側の変調処理としては、ＣＯＤＥＣモジュール２０６から転送された符号化処理後の送信データ系列に対して、(１)一次変調(ＰＳＫ、ＱＡＭ)処理、(２)ＩＦＦＴ処理およびＧＩ(Ｇｕａｒｄ Ｉｎｔｅｒｖａｌ)挿入、(３)プリアンブル(リファレンス信号)付加の順で処理を実施し、変調後のデータ系列を、シンボル整形処理や送信処理を行うＲＦインタフェースモジュール２０３に共有メモリ２０３経由で転送する。
【０１４４】
一方、図１１Ｂに示すように、受信側の復調処理としては、ＲＦインタフェースモジュール２０４から転送された受信データ系列に対して、ＳＥＡＲＣＨモジュール２０５で検出した受信タイミングにて、(１)ＦＦＴ処理およびＧＩ除去、(２)チャネル推定処理、(３)等化処理(イコライズ)、(４)一次復調(ＰＳＫ、ＱＡＭ)処理の順で処理を実施し、復調後の受信データ系列を、復号化処理を行うＣＯＤＥＣモジュール２０６に共有メモリ２０３経由で転送する。
【０１４５】
図１２は、図１１Ａに示した処理フローを実行する場合のシーケンス図である。
【０１４６】
送信データ系列に対する変調処理の場合、汎用プロセッサ(ＣＰＵ)２０１又はリソースマネージャ２０２が、処理起動コマンドをプロセッサシステム１００に与える(ステップＳ２１)。
【０１４７】
このコマンドを受信したプロセッサシステム１００は、共有メモリコントローラ２１を用いて共有メモリ２０３から入力データ系列を読み出しながらＡＬＵ ２２にて変調処理(ＰＳＫ、ＱＡＭ)を行い、共有メモリコントローラ２１を用いて共有メモリ１０５にデータを格納する(ステップＳ２２)。そして、プロセッサシステム１００は、ＩＦＦＴ処理のために、ＦＦＴ／ＩＦＦＴ処理エンジン１０４に対してメモリアドレスや動作モードなどのパラメータ設定を行い、以てＦＦＴ／ＩＦＦＴ処理エンジン１０４を起動する(ステップＳ２３)。
【０１４８】
ＦＦＴ／ＩＦＦＴ処理エンジン１０４は、設定されたパラメータに従い、ＭＯＤＥＭモジュール２００内部の共有メモリ１０５からデータを読み出しながらＩＦＦＴ処理を行い、処理後の結果データも同様の共有メモリ１０５上に格納する。そして、ＦＦＴ／ＩＦＦＴ処理エンジン１０４は、処理完了割り込みにてプロセッサシステム１００にＩＦＦＴ処理完了を通知する(ステップＳ２４)。
【０１４９】
次いで、プロセッサシステム１００は、共有メモリコントローラ２１やローカルメモリコントローラ２０等を用いて、ＧＩ挿入処理及びプリアンブル付加処理を実施し、共有メモリコントローラ２１を用いてプリアンブル付加後の送信データ系列をＭＯＤＥＭモジュール２００外部の共有メモリ２０３に格納する(ステップＳ２５及びＳ２６)。そして、プロセッサシステム１００は、処理完了通知を汎用プロセッサ(ＣＰＵ)２０１又はリソースマネージャ２０２に通知する(ステップＳ２７)。
【０１５０】
以上のような処理シーケンスを繰り返すことで送信データ系列に対する変調処理を実現する。
【０１５１】
一方、図１３は、図１１Ｂに示した処理フローを実行する場合のシーケンス図である。
【０１５２】
受信データ系列に対する復調処理の場合、汎用プロセッサ(ＣＰＵ)２０１又はリソースマネージャ２０２が、処理起動コマンドをプロセッサシステム１００に与える(ステップＳ３１)。
【０１５３】
このコマンドを受信したプロセッサシステム１００は、ＳＥＡＲＣＨモジュール２０５から通知された動作タイミングに従って、ＦＦＴ処理及びＧＩ除去処理のために、ＦＦＴ／ＩＦＦＴ処理エンジン１０４に対してメモリアドレスや動作モードなどのパラメータ設定を行い、以てＦＦＴ／ＩＦＦＴ処理エンジン１０４を起動する(ステップＳ３２)。
【０１５４】
ＦＦＴ／ＩＦＦＴ処理エンジン１０４は、設定されたパラメータや動作タイミングに従い、ＭＯＤＥＭモジュール２００外部の共有メモリ２０３からデータを読み出しながらＦＦＴ処理を行い、処理後の結果データをＭＯＤＥＭモジュール２００内部の共有メモリ１０５上に格納する。そして、ＦＦＴ／ＩＦＦＴ処理エンジン１０４は、処理完了割り込みにてプロセッサシステム１００にＦＦＴ処理完了を通知する(ステップＳ３３)。
【０１５５】
次いで、プロセッサシステム１００は、共有メモリコントローラ２１を用いて、ＭＯＤＥＭモジュール２００内部の共有メモリ１０５からＦＦＴ後の処理データ系列を読み出し、チャネル推定処理を実施する(ステップＳ３４)。
【０１５６】
次いで、プロセッサシステム１００は、チャネル等化処理のために、等化処理エンジン(イコライズエンジン)１０６に対してメモリアドレスや動作モードなどのパラメータ設定を行い、以て等化処理エンジン(イコライズエンジン)１０６を起動する(ステップＳ３５)。
【０１５７】
等化処理エンジン(イコライズエンジン)１０６は、設定されたパラメータや動作タイミングに従い、ＭＯＤＥＭモジュール２００内部の共有メモリ１０５から受信データ信号とチャネル推定結果を読み出しながら等化処理を行い、処理後の結果データを同様の共有メモリ１０５上に格納する。そして、等化処理エンジン(イコライズエンジン)１０６は、処理完了割り込みにてプロセッサシステム１００に等化処理完了を通知する(ステップＳ３６)。
【０１５８】
最後に、プロセッサシステム１００は、共有メモリコントローラ２１を用いてＭＯＤＥＭモジュール２００内部の共有メモリ１０５から等化処理後の受信データを読み出しながら、ＡＬＵ ２２にて一次復調(ＰＳＫ、ＱＡＭ)処理(デマッピング処理)を行い、復調後のデータをＭＯＤＥＭモジュール２００外部の共有メモリ２０３に格納する(ステップＳ３７)。そして、プロセッサシステム１００は、処理完了通知を汎用プロセッサ(ＣＰＵ)２０１又はリソースマネージャ２０２に通知する(ステップＳ３８)。
【０１５９】
以上のような処理シーケンスを繰り返すことで受信データ系列に対する復調処理を実現する。
【０１６０】
[第２の実施の形態]
本実施の形態に係るプロセッサシステムは、上記の第１の実施の形態と同様に構成できる。但し、本実施の形態においては、トレース回路及び前処理回路を図１４及び図１５にそれぞれ示す如く構成し、以て同期処理等で累積加算を行う場合に、累積加算値がオーバフローするのを防止する。
【０１６１】
ここで、上記の第１の実施の形態では、演算結果データのダイナミックレンジを調整するための正規化処理として、最大有効ビット位置を検出し(トレース回路６０)、入力データに対する算術左シフト処理を実行する(前処理回路４２)ことが可能であった。
【０１６２】
一方、本実施の形態においては、特に同期処理や逆拡散処理等における累積加算処理(積和演算処理)や最大ピーク値検出処理において、その累積加算結果が有効ビット範囲をオーバフローしてしまうのを防止するための正規化処理にも対応可能なようにトレース回路及び前処理回路を構成している。すなわち、本実施の形態と上記の第１の実施の形態とでは、トレース回路及び前処理回路の構成並びに動作が異なる。なお、その他の回路の構成及び動作は、上記の第１の実施の形態と同様である。
【０１６３】
図１４に示すように、本実施の形態に係るトレース回路６１は、上記の第１の実施の形態(図６)に示したトレース回路も実装し、加えて、複素演算結果データとトレース用レジスタ(ＣＲ６)の値の小さい方を選択する最小値検出回路(比較器及びセレクタ)が実装されている。
【０１６４】
また、トレース回路６１は、上記の第１の実施の形態(図６)に示した最大有効ビット位置検出回路(トレース回路６０)と本実施の形態に特有の最小値検出回路の出力を、トレースモード信号に従って選択してトレース用レジスタへ出力する出力セレクタも実装する。
【０１６５】
なお、コントローラ２４には、パラメータレジスタとして、トレースモードレジスタ(ｔｒａｃｅ＿ｍｏｄｅ)及びトレース対象レジスタ番号レジスタ(ｔｒａｃｅ＿ｒｅｇ＿ｎｕｍ)が実装される。
【０１６６】
トレース回路６１は、コントローラ２４内のトレースモードレジスタ設定に応じて、(ａ)最大有効ビット位置をトレースするのか、(ｂ)演算結果の最小値をトレースするのかを選択することが可能である。
【０１６７】
最大有効ビット位置をトレースする場合の動作は、上記の第１の実施の形態(図６)と同様である。
【０１６８】
一方、演算結果の最小値をトレースする場合は、ＡＬＵ ２２での複素演算結果データと、トレース用レジスタ(ＣＲ６)の値とを比較器にて比較し、値の小さい方をセレクタにて選択してトレース用レジスタ(ＣＲ６)に格納する。この処理を、或るデータ系列分の複素演算処理について繰り返すことにより、演算結果データ系列の最小値がトレース用レジスタに格納される。
【０１６９】
なお、本トレース処理は、上記の第１の実施の形態と同様、通常のコプロセッサ命令(複素演算処理)とは並列に実行可能なため、サイクルオーバヘッド無く実行可能である。
【０１７０】
また、トレースモード信号は、複素演算命令の出力先レジスタ番号が、コントローラ２４内のトレース対象レジスタ番号レジスタ(ｔｒａｃｅ＿ｒｅｇ＿ｎｕｍ)に設定されたレジスタ番号と一致する場合にアクティブとなる信号である。すなわち、トレース対象レジスタ番号を設定できることにより、どの演算結果だけをトレース対象とするかを指定することが可能である。
【０１７１】
さらに、演算結果が３２ビットの実数データフォーマットである場合と、又は図３Ｂに示したような１６ビット×２の複素数データフォーマットである場合とをトレースモードレジスタによって指定可能である。このため、トレースモード設定によって、３２ビット一括でトレース処理するのか、又は１６ビットずつ実数部(Ｒｅ)と虚数部(Ｉｍ)を分離して処理するのかを柔軟に変更することも可能である。
【０１７２】
一方、図１５に示すように、本実施の形態に係る前処理回路４３は、上記の第１の実施の形態(図８)に示した算術左シフトを実施する左シフト回路(バレルシフタ)も実装し、加えて、モード設定に応じて、入力データから任意の値を減算する減算器も実装している。
【０１７３】
また、上記の第１の実施の形態(図８)に示した左シフト回路と本実施の形態に特有の減算器の出力を、正規化処理モードレジスタ(ｎ＿ｍｏｄｅ)の設定値に従って選択して読出データＦＩＦＯ ４１へ出力する出力セレクタも実装する。
【０１７４】
なお、前処理回路４３には、上記の正規化処理モードレジスタ(ｎ＿ｍｏｄｅ)に加えて、左シフト量または減算値(量)を設定するための正規化係数レジスタ(ｎ＿ｖａｌｕｅ)もパラメータレジスタとして実装される。
【０１７５】
前処理回路４３は、正規化処理モードレジスタ設定に応じて、(ａ)ダイナミックレンジ調整のための算術左シフトを実施するのか、(ｂ)オーバフロー防止のための減算を実施するのかを選択することが可能である。
【０１７６】
算術左シフトによる正規化処理を実施する場合の動作は、上記の第１の実施の形態(図８)と同様である。
【０１７７】
一方、減算による正規化処理を実施する場合は、入力データ各々から正規化係数レジスタ(ｎ＿ｖａｌｕｅ)に設定された固定値を減算し、読出データＦＩＦＯ ４１へ出力する。
【０１７８】
トレース回路６１を用いて適切な減算値を設定することにより、オーバフローを防止しながら累積加算処理(積和演算処理)を実施することが可能である。
【０１７９】
なお，本正規化処理は、上記の第１の実施の形態と同様，通常のコプロセッサ命令(複素演算処理)とは並列に実行可能なため、サイクルオーバヘッド無く実行可能である。
【０１８０】
図１６Ａ及び図１６Ｂは、本実施の形態に係るプロセッサシステムの動作例をそれぞれ示している。
【０１８１】
まず、図１６Ａに示す正規化処理(以下、正規化処理Ａと呼称する)を実施する場合の動作について説明する。
【０１８２】
ここで、正規化処理Ａは、同期処理や逆拡散処理等の累積加算処理時に、演算結果データの最小値をトレースし、その最小値を全ての演算結果データ(次の処理の入力データ)から減算することで、オーバフローを防止する処理である。
【０１８３】
この場合、プロセッサシステム１００は、最初の累積加算演算(複素積和演算)時に、トレースモードを最小値検出モード設定にしておく。
【０１８４】
ＡＬＵ ２２は、所望の累積加算命令(ＣＭＡＣ)を実行することにより、入出力データのメモリアクセスレイテンシを隠蔽し、演算結果データの最小値をトレース処理しながら(ＣＲ６レジスタを用いて)、処理結果データをメモリ(ローカルメモリ１０２)に格納することが可能である(ステップＳ４１)。
【０１８５】
結果として、１データ系列分を処理するｆｏｒ文の中は、同一の複素積和演算命令(ＣＭＡＣ)を繰り返すだけのサイクル数となる。
【０１８６】
次に、ＡＬＵ ２２は、トレース処理により得られた最小値(レジスタＣＲ６の値)を、ムーブ命令(ＣＭＯＶ)によってメモリコントローラ(ＬＭＣ、ＳＭＣ)２０及び２１内の正規化係数レジスタ(ｎ＿ｖａｌｕｅ)に設定すると共に、正規化処理モード(ｎ＿ｍｏｄｅ)を減算モードに設定する(ステップＳ４２)。
【０１８７】
そして、ＡＬＵ ２２は、次の累積加算命令(複素積和演算命令)を繰り返し実行することにより、１データ系列分の全ての演算結果データに対して、正規化係数に対応する減算処理を実施しながら、所望の累積加算処理を実行することが可能である(ステップＳ４３)。
【０１８８】
この場合、全データから最小値分だけ減算されるため、データ同士間の相対的な差分を維持したままオーバフローを防止できるという利点がある。
【０１８９】
次に、図１６Ｂに示す正規化処理(以下、正規化処理Ｂと呼称する)を実施する場合の動作について説明する。
【０１９０】
ここで、正規化処理Ｂは、同期処理や逆拡散処理等の累積加算処理時に、演算結果データの最大有効ビット位置をトレースし、そのビット位置が所定の閾値を越えた場合に、全ての演算結果データ(次の処理の入力データ)から任意の固定値を減算することで、オーバフローを防止する処理である。
【０１９１】
この場合、プロセッサシステム１００は、最初の累積加算演算(複素積和演算)時に、トレースモードを最大有効ビット位置検出モードに設定しておく。
【０１９２】
ＡＬＵ ２２は、所望の累積加算命令(ＣＭＡＣ)を実行することにより、入出力データのメモリアクセスレイテンシを隠蔽し、演算結果データの最大有効ビット位置をトレース処理しながら(ＣＲ６レジスタを用いて)、処理結果データをメモリ(ローカルメモリ１０２)に格納することが可能である(ステップＳ５１)。
【０１９３】
結果として、１データ系列分を処理するｆｏｒ文の中は、同一の複素積和演算命令(ＣＭＡＣ)を繰り返すだけのサイクル数となる。
【０１９４】
次に、ＡＬＵ ２２は、トレース処理により得られたトレース結果(レジスタＣＲ６の値)から最大有効ビット位置を複素Ｅｘｐｏｎｅｎｔ命令(ＣＥＸＰ)により検出し、比較命令(ＣＭＰ)により閾値と比較する(ステップＳ５２)。
【０１９５】
最大有効ビット位置が閾値を超えていた場合は、メモリコントローラ(ＬＭＣ、ＳＭＣ)２０及び２１内の正規化係数レジスタ(ｎ＿ｖａｌｕｅ)に任意の固定値を設定し、正規化処理モード(ｎ＿ｍｏｄｅ)を減算モードに設定する。
【０１９６】
そして、ＡＬＵ ２２は、次の累積加算命令(複素積和演算命令)を繰り返し実行することにより、１データ系列分の全ての処理結果データに対して、当該固定値分だけ減算する処理を実施しながら、所望の累積加算処理を実行することが可能である(ステップＳ５３)。なお、最大有効ビット位置が閾値を超えていない場合には、正規化処理(減算)を行わずにそのまま累積加算処理を実行する。
【０１９７】
この場合、最大値が閾値を超えた場合に全データから任意の固定値分だけ減算されるため、確実にオーバフローを防止できるという利点がある。
【０１９８】
このように、本実施の形態においては、トレースモード(ｔｒａｃｅ＿ｍｏｄｅ)及び正規化処理モード(ｎ＿ｍｏｄｅ)の設定により、入力データのダイナミックレンジを調整するための正規化処理や、累積加算値のオーバフローを防止するための種々の正規化処理など、無線信号処理で必要となる様々な正規化処理が柔軟に実現可能となる。特に、正規化係数の算出や、入力データに対する正規化処理等の正規化処理のための処理サイクルオーバヘッドや、入出力データのメモリアクセスレイテンシ、パイロットデータのアクセスレイテンシを隠蔽しながら、所望の通複素演算処理を実行可能であるという大きな利点がある。
【０１９９】
上記の第１及び第２の実施の形態によれば、以下の効果が期待できる。
【０２００】
第１の効果は、複数の無線方式における種々の変調／復調／同期処理(複素演算処理)に、柔軟に且つ高速に対応できることである。
【０２０１】
その理由は、プロセッサシステムでは、一般的な制御用プロセッサに複素演算処理用コプロセッサを接続し、１命令/サイクルで、複素加算、複素乗算、複素積和演算等の種々の複素演算処理を実行可能にしたためである。
【０２０２】
また、コプロセッサがメモリにアクセスするためのメモリコントローラを内蔵し、そのメモリコントローラが、複素演算処理を行うコプロセッサ演算命令と実際にメモリアクセスするサイクルとを独立させるためのデータＦＩＦＯを備えることも、柔軟性が向上する理由の１つである。
【０２０３】
特に、メモリコントローラ内に独立したアドレスジェネレータを備えることにより、或るデータ系列分のメモリアクセス時に様々なアドレス順でのアクセス(スプリットトランザクション)が可能であるため、プロセッサ処理によるデータ毎のアドレス計算が不要となり、柔軟且つアクセスレイテンシを隠蔽可能なメモリアクセスが可能という利点がある。
【０２０４】
また、読み出すレジスタ番号によってメモリコントローラがその分だけ内部状態を更新する通常アクセス機能と、データを読み出しても内部状態を更新しないピープ機能との両方を備えることも柔軟性を向上させている。
【０２０５】
さらに、上記の第２の実施の形態に係るトレース回路や前処理回路等の正規化処理用回路を用いることで、種々の無線方式における種々の正規化処理にサイクルオーバヘッド無く柔軟に対応可能であるという大きな利点もある。
【０２０６】
これらのトレース回路や前処理回路では、それぞれ動作モードレジスタを備え、その動作モードレジスタ設定に基づいて、最大有効ビット位置検出や最小値検出などのトレース機能や、算術左シフト処理や減算処理などの前処理機能を可変にできるためである。制御レジスタ設定により動作モードを変更可能なトレース回路と前処理回路の一方だけではなく、両方を共に備えていること(相乗効果)により、様々なデータの正規化処理(正規化係数の算出と実際の正規化処理)に更に柔軟に対応可能である。
【０２０７】
第２の効果は、柔軟性を重視してプロセッサによるソフトウェア処理で実現した場合でも、パイロット信号へのアクセスレイテンシや正規化処理サイクルも隠蔽できるなど、メモリアクセスレイテンシも含めて変調／復調処理(複素演算処理)を高速に実現可能なことである。
【０２０８】
その理由は、プロセッサシステムでは、一般的な制御用プロセッサに複素演算処理専用のコプロセッサを接続し、コプロセッサからメモリへのアクセスには、メモリアクセスレイテンシを隠蔽できるアドレス生成機能やＦＩＦＯ機能、前処理機能を内蔵したメモリコントローラを備えているためである。
【０２０９】
このようなメモリコントローラを用いることで、コプロセッサ命令による変調／復調処理(複素演算処理)と、メモリアクセスを独立して並列に実施することが可能となるため、メモリアクセスレイテンシを隠蔽でき、一般的なプロセッサ処理に比べて、かなり高速に処理可能である。
【０２１０】
また、コプロセッサ内のＡＬＵとして、複素加算、複素乗算、複素積和演算、複素共役加算、複素共役乗算、複素共役積和演算などの種々の複素演算処理を１命令／サイクルの処理スループットで実行可能な複素演算器(複素算術演算器および複素論理演算器)を備えることも高速化が可能な理由の１つである。
【０２１１】
一般的なプロセッサによるソフトウェア処理では、１回の複素乗算処理(４回の乗算)に４サイクル程度は必要であり、複素積和演算処理に６サイクル程度の処理サイクル数が必要である。
【０２１２】
一方、上記の第１及び第２の実施の形態においては、ＡＬＵやメモリコントローラを活用するコプロセッサ処理命令を使用することにより、例えば１複素データ／サイクルの処理スループットで、種々の複素演算処理を実現することが可能である。
【０２１３】
さらに，正規化処理の高速化のため，ＡＬＵ内にトレース回路や、メモリコントローラ内に入力データの前処理回路を備えることにより、種々の無線通信方式における正規化処理(正規化係数の算出と入力データの正規化処理)を、サイクルオーバヘッド無く通常の複素演算処理と並列に実行可能であるという利点もある。
【０２１４】
これは、一般的なプロセッサ処理では、正規化係数の算出のためにデータ毎に少なくとも１命令以上のサイクル数が必要であり、また、実際の正規化処理のためにデータ毎に１命令以上の処理サイクル数が必要であるため、サイクルオーバヘッド無く並列に様々な正規化処理を実現できることは大きな利点である。
【０２１５】
上記の第１及び第２の実施の形態による主たる効果は、これら第１の効果である複数の無線通信方式に対応する柔軟性という利点と、第２の効果である変調／復調処理(複素演算処理)を正規化処理も含めて１データ/サイクルの処理スループットで実現する高速化という２つの利点を、同時に実現できることである。
【０２１６】
その理由は、以下の３点を実現していることの相乗効果によるものである。
【０２１７】
１つ目は，ＡＬＵとして、種々の複素演算処理が可能で、１サイクルで１複素データ分を処理可能な複素演算器と、複素演算器とは並列に動作可能でパラメータ設定も可能なトレース回路を備えることにより、正規化処理を含めて変調／復調処理(複素演算処理)自体の柔軟性と高速性を実現している点である。
【０２１８】
２つ目は、コプロセッサ演算処理とは独立して並列に動作するストリームアクセスを前提としたメモリコントローラやパイロットデータインタフェースを備えており、一般的には高速化が難しいプロセッサのメモリアクセスレイテンシを隠蔽できる点である。ここで、メモリコントローラ内の前処理回路もコプロセッサ処理とは独立して正規化処理が可能であることも高速化の観点で重要なポイントである。
【０２１９】
３つ目は，並列に動作するＡＬＵとメモリコントローラやパイロットジェネレータの間で処理オーバヘッドが発生しないように、データを一時的に格納するＦＩＦＯ、当該ＦＩＦＯが空になったりＦｕｌｌになったりした場合でも、コプロセッサ側の処理が破綻しないようなＷａｉｔ制御機構を備えているためである。
【０２２０】
上記３点の相乗効果により，柔軟性と高速性の両方を実現可能である。
【０２２１】
第３の効果は、複数の無線通信方式における種々の変調／復調処理を、より低消費電力で、すなわち電力効率を高く実現できることである。
【０２２２】
その理由は、上記の第１及び第２の実施の形態では、ＡＬＵが、複素加算処理、複素減算処理、複素乗算処理や複素積和演算処理、そしてこれら各々の複素共役演算処理等を１サイクルで１複素データ分の種々の複素演算処理を実現可能ではあるものの、回路構成としてはほとんど複素積和演算処理分の必要最小限の回路構成で実現しているためである。すなわち、一般的な複数の複素演算命令に対応できる程度の柔軟性を持たせているものの、例えば１複素データ／サイクルの処理スループットに限定した最小限の専用演算器構成とすることで、処理性能と消費電力とのバランスに優れた、電力効率の高いプロセッサシステムを実現可能である。
【０２２３】
ここで、複素演算処理を含む一連の変調／復調処理を全て専用ハードウェア構成で実現する場合は、それぞれ処理データの繰り返し用の回路が必要であるが、上記の第１及び第２の実施の形態においては ｆｏｒ文などの繰り返し処理は、制御用プロセッサ側に元々実装されているループ命令用のループ回路を共用して使用するため、コプロセッサ側には繰り返し制御用の回路は不要である(通常の命令や複数の変調／復調処理命令で共有可能)という利点もある。
【０２２４】
また、処理量が膨大で、専用ハードウェア化した方が電力効率の高いＦＦＴ／ＩＦＦＴ処理や逆拡散処理(Ｄｅｓｐｒｅａｄｉｎｇ)、等化処理(イコライズ処理)や相関処理(Ｃｏｒｒｅｌａｔｉｏｎ)、パイロット信号生成処理(パイロットジェネレータ)については専用ハードウェア構成にて実現し、その他の変調／復調／同期処理については柔軟性を重視して複素演算処理プロセッサにて実現する、など、そのトレードオフに依存して全体のシステム構成を選択可能であり、電力効率を向上できることも本発明の利点である。
【０２２５】
また、プロセッサシステムと各専用ハードウェア回路は並列動作可能なため、低いクロック周波数で動作させることで低消費電力化が可能という利点もある。
【０２２６】
最後に、第４の効果は、複数の無線通信方式における種々の変調／復調処理において、将来的な仕様変更や仕様拡張にも柔軟に対応できることである。
【０２２７】
その理由は、プロセッサシステムは、制御プロセッサと専用ハードウェア回路を組み合わせた構成ではなく、一般的な制御用プロセッサに対して複素演算処理用コプロセッサを接続することで実現したことにより、１サイクル単位で処理(命令)をソフトウェアにて指定可能なためである。すなわち、既存の無線通信方式における変調/復調処理の仕様変更により、その処理アルゴリズムや処理順序、処理パラメータが変更された場合や、仕様拡張により処理が追加された場合などにも、プロセッサのソフトウェア記述変更にて柔軟に対応できるという大きな利点がある。
【０２２８】
なお、ＡＬＵ部分は専用の複素演算処理回路となっているが、一連の変調／復調処理における処理データ単位やループ回数などは制御用プロセッサ内のループ命令(ループ回路)にて対応しているため、その部分(処理データ単位やループ回数など)の変更には元々の制御用プロセッサの機能で対応が可能である。
【０２２９】
また、上記の第２の実施の形態で示したように、様々な正規化処理に対応できるような処理結果データのトレース回路(正規化係数の算出)や入力データの前処理回路(正規化処理)を実装することにより、仕様拡張や仕様変更により新たに正規化処理が必要な場合も柔軟に対応が可能という利点もある。
【０２３０】
なお、上記の実施の形態によって本発明は限定されるものではなく、特許請求の範囲の記載に基づき、当業者によって種々の変更が可能なことは明らかである。
【０２３１】
この出願は、２０１１年２月１５日に出願された日本出願特願２０１１−０２９３２５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０２３２】
本発明は、複素演算処理用コプロセッサ及びプロセッサシステムに適用され、特に無線通信に際して必要な各種の複素演算処理を実行する用途に適用される。【０２３３】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。【０２３４】
（付記１）
主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、
前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラと、を備え、
前記複素演算回路が、
前記メモリから順次読み出された第１の複素数データ系列に対する演算結果データを監視し、前記演算結果データに正規化処理を施すための正規化係数を検出するトレース回路、
を含む複素演算処理用コプロセッサ。【０２３５】
（付記２）付記１において、
前記メモリコントローラが、
前記メモリへの書込アドレスを自律的に発生する第１のアドレスジェネレータ回路と、
前記メモリからの読出アドレスを自律的に発生する第２のアドレスジェネレータ回路と、
前記演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第１のＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ Ｆｉｒｓｔ−Ｏｕｔ）と、
前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第２のＦＩＦＯと、
前記メモリと前記第２のＦＩＦＯの間に設けられ、前記正規化係数を用いて、前記メモリから第２の複素数データ系列として入力される前記演算結果データに正規化処理を施す前処理回路と、
を含むことを特徴とした複素演算処理用コプロセッサ。【０２３６】
（付記３）付記１又は２において、
パイロット信号データを格納するためのレジスタを、さらに備え、
前記複素演算回路が、前記レジスタを介して順次入力されるパイロット信号データ系列を、前記第１の複素数データ系列と共に前記複素演算に供することを特徴とした複素演算処理用コプロセッサ。【０２３７】
（付記４）付記１〜３のいずれか一つにおいて、
前記トレース回路が、
前記演算結果データ中の実数部を示すビット列及び虚数部を示すビット列各々を、負数を呈する場合に反転する反転回路と、
前記反転回路からの出力データに対して累積的な論理和演算を行い、前記論理和演算の結果を前記正規化係数の検出に供する累積論理和回路と、
を含むことを特徴とした複素演算処理用コプロセッサ。【０２３８】
（付記５）付記４において、
前記トレース回路が、
前記演算結果データの内から最小値を検出する検出回路と、
予め設定された動作モードに応じて、前記論理和演算の結果を前記正規化係数の検出に供するか、又は前記最小値を前記正規化係数として検出するかを選択する選択回路と、
をさらに含むことを特徴とした複素演算処理用コプロセッサ。【０２３９】
（付記６）付記１〜３のいずれか一つにおいて、
前記トレース回路が、前記演算結果データの内の最小値を、前記正規化係数として検出する検出回路を含むことを特徴とした複素演算処理用コプロセッサ。【０２４０】
（付記７）付記２において、
前記前処理回路が、
前記正規化処理として、前記演算結果データに対するシフト処理を行うシフト回路と、
前記シフト回路におけるシフト量を設定するための制御レジスタと、
を含むことを特徴とした複素演算処理用コプロセッサ。【０２４１】
（付記８）付記７において、
前記前処理回路が、
前記正規化処理として、前記演算結果データに対する減算処理を行う減算器と、
前記減算器における減算量と、前記シフト回路又は減算器のいずれを動作させるかを示す動作モードとを設定するための制御レジスタと、
を含むことを特徴とした複素演算処理用コプロセッサ。【０２４２】
（付記９）付記２において、
前記前処理回路が、
前記正規化処理として、前記演算結果データに対する減算処理を行う減算器と、
前記減算器における減算量を設定するための制御レジスタと、
を含むことを特徴とした複素演算処理用コプロセッサ。【０２４３】
（付記１０）付記１〜９のいずれか一つにおいて、
前記メモリコントローラは、
前記メモリから読み出した一の複素数データを第１及び第２のレジスタへ格納し、
前記複素演算回路が前記第１のレジスタから前記一の複素数データを取得した場合に、前記第１及び第２のレジスタを前記メモリから読み出した次の複素数データで更新し、
前記複素演算回路が前記第２のレジスタから前記一の複素数データを取得した場合には、前記第１及び第２のレジスタを更新しない、
ことを特徴とする複素演算処理用コプロセッサ。【０２４４】
（付記１１）
主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、
前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラと、を備え、
前記メモリコントローラが、
前記メモリへの書込アドレスを自律的に発生する第１のアドレスジェネレータ回路と、
前記メモリからの読出アドレスを自律的に発生する第２のアドレスジェネレータ回路と、
前記複素演算回路による演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第１のＦＩＦＯと、
前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第２のＦＩＦＯと、
前記メモリと前記第２のＦＩＦＯの間に設けられ、予め定められた正規化係数を用いて、前記複素数データ系列に正規化処理を施す前処理回路と、
を含む複素演算処理用コプロセッサ。【０２４５】
（付記１２）付記２又は１１において、
前記第１及び第２のアドレスジェネレータ回路各々が、
初期ポインタレジスタと、
ステップ数レジスタと、
メモリ長レジスタと、
前記初期ポインタレジスタの値をアドレスポインタの初期値として設定すると共に、アドレス発生の度毎に、前記アドレスポインタの値とステップ数レジスタの値との加算値を前記メモリ長レジスタの値で剰余演算した結果を次のアドレスポインタとして設定するアドレス演算器と、
を含むことを特徴とした複素演算処理用コプロセッサ。【０２４６】
（付記１３）付記１〜１２のいずれか一つに記載の複素演算処理用コプロセッサと、
前記複素演算処理用コプロセッサを命令によって制御する主プロセッサと、
を備えたプロセッサシステム。
【符号の説明】
【０２４７】
１０  制御用プロセッサ
１１  複素演算処理用コプロセッサ
１２  メモリセレクタ(マルチプレクサ型バスコントローラ)
１３  プロセッサコントローラ
２０  ローカルメモリコントローラ
２１  共有メモリコントローラ
２２  ＡＬＵ
２３  レジスタファイル
２４  コントローラ
３０  書込アドレスジェネレータ
３１  書込データＦＩＦＯ
４０  読出アドレスジェネレータ
４１  読出データＦＩＦＯ
４２, ４３  前処理回路
５０  複素算術演算器
５１  複素論理演算器
６０, ６１  トレース回路
７０  パイロットジェネレータ
１００  プロセッサシステム
１０１  命令メモリ
１０２  ローカルメモリ(データメモリ)
１０３  インタフェース制御回路
１０４  ＦＦＴ／ＩＦＦＴ処理エンジン
１０５, ２０３  共有メモリ
１０６  等化処理エンジン
２００  モデムモジュール
２０１  ＣＰＵ
２０２  リソースマネージャ
２０４  ＲＦインタフェースモジュール
２０５  サーチモジュール
２０６  コーデックモジュール
【図１】
2012111053.tif 000003
【図２】
2012111053.tif 000004
【図３Ａ】
2012111053.tif 000005
【図３Ｂ】
2012111053.tif 000006
【図４】
2012111053.tif 000007
【図５】
2012111053.tif 000008
【図６】
2012111053.tif 000009
【図７】
2012111053.tif 000010
【図８】
2012111053.tif 000011
【図９】
2012111053.tif 000012
【図１０】
2012111053.tif 000013
【図１１Ａ】
2012111053.tif 000014
【図１１Ｂ】
2012111053.tif 000015
【図１２】
2012111053.tif 000016
【図１３】
2012111053.tif 000017
【図１４】
2012111053.tif 000018
【図１５】
2012111053.tif 000019
【図１６Ａ】
2012111053.tif 000020
【図１６Ｂ】
2012111053.tif 000021
【国際調査報告】
2012111053.tif 000022
2012111053.tif 000023