JPWO2012111053A1 - 複素演算処理用コプロセッサ及びプロセッサシステム - Google Patents

複素演算処理用コプロセッサ及びプロセッサシステム Download PDF

Info

Publication number
JPWO2012111053A1
JPWO2012111053A1 JP2012557668A JP2012557668A JPWO2012111053A1 JP WO2012111053 A1 JPWO2012111053 A1 JP WO2012111053A1 JP 2012557668 A JP2012557668 A JP 2012557668A JP 2012557668 A JP2012557668 A JP 2012557668A JP WO2012111053 A1 JPWO2012111053 A1 JP WO2012111053A1
Authority
JP
Japan
Prior art keywords
complex
processing
circuit
data
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012557668A
Other languages
English (en)
Other versions
JP5920226B2 (ja
Inventor
俊樹 竹内
俊樹 竹内
裕之 井倉
裕之 井倉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2012111053A1 publication Critical patent/JPWO2012111053A1/ja
Application granted granted Critical
Publication of JP5920226B2 publication Critical patent/JP5920226B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4806Computations with complex numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • H04B1/7097Interference-related aspects
    • H04B1/711Interference-related aspects the interference being multi-path interference
    • H04B1/7115Constructive combining of multi-path signals, i.e. RAKE receivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Transceivers (AREA)

Abstract

複数の無線通信方式における種々の変調/復調/同期処理を高速且つ効率的に1つのシステムで実行できるようにするため、プロセッサシステム(100)を構成する複素演算処理用コプロセッサ(22)は、主プロセッサ(10)からの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路(22)と、前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラ(20,21)とを備える。前記複素演算回路(22)に設けられたトレース回路は、前記メモリから順次読み出された複素数データ系列に対する演算結果データを監視し、前記演算結果データに正規化処理を施すための正規化係数を検出する。

Description

本発明は、複素演算処理用コプロセッサ及びプロセッサシステムに関し、特に無線通信に際して必要な各種の複素演算処理を実行するための技術に関する。
無線通信システムにおいては、一般的に、送受信データ信号に対する変調/復調処理が必要である。すなわち、送信側では、送信データ信号に対して、PSK(Phase Shift Keying、例えばBPSK(Binary PSK)、QPSK(Quadrature PSK)、又は8PSK)やQAM(Quadrature Amplitude Modulation、例えば16QAM、64QAM、又は256QAM)等の変調処理、及び拡散処理等を施す必要がある。一方、受信側では、受信データ信号に対して同期処理、復調処理、逆拡散処理等を施す必要がある。
これらの処理は、主に無線シンボル単位(複素数IQ信号)を対象とするため、多くの複素演算処理(複素乗算や複素加算等)を実行する必要がある。また、復調処理では、演算途中データのダイナミックレンジが必要以上に大きくなる。このため、処理の途中段階にて、データ毎の複素演算結果に正規化処理を施した上で次の演算を行う等の処理の効率化も必要である。
ここで、従来は、単一の無線通信方式の変調/復調処理、同期処理に高速かつ低消費電力に対応するために、処理毎に専用のハードウェア回路を実装する手法を採用していた。例えば、特許文献1には、RAKE合成に際し、複数の伝送路推定値を用いて正規化係数を算出する専用回路が記載されている。
また、近年、複数の無線通信方式に1つのシステムで対応できるようなソフトウェア無線技術への期待が高まっている。しかしながら、規格化或いは標準化されている種々の無線通信方式間においては、これらの変調/復調/同期処理の内容は一部類似しているものもあるものの、基本的には無線通信方式ごとに異なるという性質がある。
従って、無線通信方式毎に専用のハードウェア回路を実装する従来手法を用いて、単純に複数の無線通信方式における変調/復調/同期処理に対応しようとした場合、採用する無線通信方式数に相当する複数の専用ハードウェア回路が必要となってしまう。このため、回路の面積オーバヘッドが非常に大きいという問題がある。また、処理の変更や拡張に対する柔軟性が低いという問題もある。
これら問題に対処するための関連技術1及び2が既に提案されている。以下、これらの関連技術1及び2を順に説明する。
[関連技術1]
特許文献2には、高速性と電力効率を重視して、専用ハードウェア回路を種々のパラメータ設定可能に構成することで、複数の無線通信方式に対応させる手法が記載されている。具体的には、ワイヤレス通信装置を構成する専用の処理エンジンを、複数のベースバンド処理に対応できるように再設定可能に構成し、以て柔軟に複数の無線通信方式に対応させている。
しかしながら、この場合、演算式の一部の処理パラメータの変更には比較的容易に対応できるものの、CDMA(Code Division Multiple Access)とOFDM(Orthogonal Frequency Division Multiplexing)のように復調処理の基本的な処理アルゴリズムが異なる無線通信方式には簡単には対応できないという問題がある。
また、演算処理データ単位、演算処理の繰り返し回数、細かい演算順序、処理エンジン(専用ハードウェア回路)間の処理順序等の変更にも簡単には対応できない。仮にこれらを変更できるように構成する場合には、専用ハードウェア回路同士間の接続構成が非常に複雑化し、やはり面積オーバヘッドが大きくなるという問題や、今後予想される処理エンジン内における演算順序変更等の仕様拡張には対応できないという問題が発生してしまう。
なお、類似技術として、特許文献3及び4には、専用のコプロセッサ(ハードウェア回路)をパラメータ設定可能にし、制御用プロセッサから制御することでシステム変更等に対応する手法が記載されている。
しかしながら、上記の特許文献2と同様、一部の処理パラメータや並列処理数の変更等には対応できるものの、ある程度固定された処理範囲内での変更にしか対処し得ない。このため、基本的な処理アルゴリズムや演算順序の変更等には簡単には対応できないという問題がある。
[関連技術2]
また、他の関連技術として、特許文献5には、信号処理プロセッサ(DSP:Digital Signal Processor)を用いてソフトウェア処理する手法が記載されている。具体的には、一般的な信号処理プロセッサやメモリアクセスを高速化するためのDMA(Direct Memory Access)コントローラ等を用いて通信処理を実行し、以て種々の信号処理に柔軟に対応させている。
しかしながら、無線通信に際しての変調/復調/同期処理においては、複素演算処理のような特殊な演算処理の前後にデータの正規化(より詳細には、正規化係数の算出とこれを用いた正規化処理)が必要である。このため、一般的な信号処理プロセッサでは、これらの処理をパイプライン的に並列に実行可能な専用ハードウェアに比べて多くの処理命令(演算サイクル)が必要であり、処理サイクル数が大幅に増加してしまうという問題がある。
また、処理変更に対する柔軟性は確保されるものの、例えばプロセッサからメモリへのアクセスレイテンシが性能オーバヘッドとなる。このため、やはり高速化が難しいという問題もある。メモリアクセスにDMAコントローラを用いたとしても、プロセッサによるソフトウェア処理の場合、メモリのロード/ストア命令と演算処理命令とに別々のサイクルを必要とする。このため、専用ハードウェア処理に比べて低速である。一方、高速化を図る場合にはクロック周波数を上昇させる必要があり、その結果、消費電力が増加してしまうという問題がある。
特開2003−018081号公報 特表2009−505608号公報 特表2005−510170号公報 特開2006−262322号公報 特開平01−116730号公報
第1の課題は、無線通信システムにおける変調/復調/同期処理(複素演算処理)において、複数の無線通信方式における種々の変調/復調/同期処理に柔軟に対応できないことである。その理由は、一般的に変調/復調/同期処理の内容は、複数の無線通信方式間にて一部の処理は類似した処理があるものの、基本的にはその処理アルゴリズムや演算順序は各々の無線通信方式の仕様に大きく依存しており、且つ、必要演算量も比較的大きく、無線通信方式毎に専用のハードウェア回路を実装せざるを得ないためである。
しかしながら、近年のシステムLSI(Large Scale Integration)の大規模化、高速化などによる処理能力向上に伴い、今後は、同一のシステムで複数の無線通信方式に対応できるような、マルチモード無線機やソフトウェア無線機(SDR:Software Defined Radio)と呼ばれる無線通信システムの実現が望まれている。更に、将来の仕様変更や機能拡張にも柔軟に対応できることが重要となっている。
第2の課題は、柔軟性を重視して、無線通信システムにおける変調/復調/同期処理(複素演算処理)をプロセッサによるソフトウェア処理で実現する場合、正規化処理と複素演算処理を同時に実行する等、メモリアクセスレイテンシも含めて高速に処理できないことである。その理由は、一般的に、無線通信における変調/復調/同期処理では、1つのデータを正規化するためには例えば前後の複数のデータ信号の情報を必要とするためである。専用のハードウェア回路でパイプライン的に並列に実現する場合はそれほど問題とならないが、柔軟性や拡張性を重視してプロセッサによるソフトウェア処理で実現しようとした場合、一般的なプロセッサでは、正規化処理と複素演算処理を同時に実行するのは困難である。また、プロセッサ処理の場合には、一般的にはメモリアクセスするために一定のレイテンシ(サイクル数)が必要となるため、その分だけ演算器の稼働率が低下する、換言すると、処理時間が増加し高速化できないという大きな問題がある。
ここで、無線通信における変調/復調処理の処理量は、一般的に要求されるデータ転送レートに依存する。近年の無線通信方式においては要求されるデータ転送レートは増加傾向にあるため、より低消費電力にて高速化を図ることがますます重要となっている。
本発明は、上記の課題に鑑みてなされたものであり、複数の無線通信方式における種々の変調/復調/同期処理を、高速且つ効率的に1つのシステムで実行できるようにすることを目的とする。換言すると、本発明の目的は、専用のハードウェア回路で実現するような高速性や低消費電力性と、プロセッサによるソフトウェア処理で実現するような柔軟性との両者を兼ね備えたシステムを提供することにある。
上記の目的を達成するため、本発明の第1の態様に係る複素演算処理用コプロセッサは、主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラとを備える。前記複素演算回路は、前記メモリから順次読み出された第1の複素数データ系列に対する演算結果データを監視し、前記演算結果データに正規化処理を施すための正規化係数を検出するトレース回路を含む。
また、本発明の第2の態様に係る複素演算処理用コプロセッサは、主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラとを備える。前記メモリコントローラは、前記メモリへの書込アドレスを自律的に発生する第1のアドレスジェネレータ回路と、前記メモリからの読出アドレスを自律的に発生する第2のアドレスジェネレータ回路と、前記複素演算回路による演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第1のFIFOと、前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第2のFIFOと、前記メモリと前記第2のFIFOの間に設けられ、予め定められた正規化係数を用いて、前記複素数データ系列に正規化処理を施す前処理回路とを含む。
さらに、本発明の第3の態様に係るプロセッサシステムは、前記複素演算処理用コプロセッサと、前記複素演算処理用コプロセッサを命令によって制御する主プロセッサとを備える。
本発明によれば、複数の無線通信方式における種々の変調/復調/同期処理を、高速且つ効率的に1つのシステムで実行可能である。
本発明の第1の実施の形態に係るプロセッサシステムの構成例を示したブロック図である。 本発明の第1の実施の形態に係る複素演算処理用コプロセッサの構成例を示したブロック図である。 本発明の第1の実施の形態に係る複素演算処理用コプロセッサに用いるレジスタファイルの構成例を示した図である。 本発明の第1の実施の形態に係る複素演算処理用コプロセッサに用いるレジスタ各々のフォーマット例を示した図である。 本発明の第1の実施の形態に係る複素演算処理用コプロセッサに用いる命令コードの構成例を示した図である。 本発明の第1の実施の形態に係る複素演算処理用コプロセッサに用いる複素算術演算器の構成例を示したブロック図である。 本発明の第1の実施の形態に係る複素演算処理用コプロセッサに用いる複素論理演算器及びトレース回路の構成例を示したブロック図である。 本発明の第1の実施の形態に係る複素演算処理用コプロセッサに用いるメモリコントローラの書込側の構成例を示したブロック図である。 本発明の第1の実施の形態に係る複素演算処理用コプロセッサに用いるメモリコントローラの読出側の構成例を示したブロック図である。 本発明の第1の実施の形態に係るプロセッサシステムの動作例を示したシーケンス図である。 本発明の第1の実施の形態に係る複素演算処理用コプロセッサ適用例を示したブロック図である。 図10に示した適用例における変調処理例を示した図である。 図10に示した適用例における復調処理例を示した図である。 図10に示した適用例における送信データに対する変調処理例を示したシーケンス図である。 図10に示した適用例における受信データに対する復調処理例を示したシーケンス図である。 本発明の第2の実施の形態に複素演算処理用コプロセッサに用いるトレース回路の構成例を示したブロック図である。 本発明の第2の実施の形態に係る複素演算処理用コプロセッサに用いるメモリコントローラの読出側の構成例を示したブロック図である。 本発明の第2の実施の形態に係るプロセッサシステムの一の動作例を示したシーケンス図である。 本発明の第2の実施の形態に係るプロセッサシステムの他の動作例を示したシーケンス図である。
以下、本発明に係る複素演算処理用コプロセッサ及びこれを適用するプロセッサシステムの第1及び第2の実施の形態を、図1、図2、図3A及び図3B、図4〜図10、図11A及び図11B、図12〜図15、並びに図16A及び図16Bを参照して説明する。なお、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
[第1の実施の形態]
[構成例]
図1に示すように、本実施の形態に係るプロセッサシステム100は、制御用プロセッサ(Processor Core)10と、これに接続される複素演算処理用コプロセッサ(以下、コプロセッサと略称することがある) 11とを備えている。プロセッサシステム100は、外部とのインタフェースとして、ブート制御や割り込み信号入力等を行うためのプロセッサ制御インタフェースと、命令メモリ101にアクセスするための命令メモリインタフェースと、ローカルメモリ(データメモリ)102にアクセスするためのローカルメモリインタフェースと、外部ペリフェラル(図示せず)に制御アクセスするためのDSPインタフェースと、共有メモリ(図示せず)にストリームアクセスするための共有メモリインタフェースとを含む。また、プロセッサシステム100は、パイロットジェネレータ70によって発生される既知のパイロット信号(リファレンス信号)を連続的に入力するためのパイロットデータインタフェースも含む。なお、命令メモリ101は、制御用プロセッサ10の命令メモリインタフェースに直接接続されている。
制御用プロセッサ10には、コプロセッサインタフェースを備えた一般的な制御用プロセッサ(例えば、ハーバードアーキテクチャ型の32ビットRISC(Reduced Instruction Set Computer)プロセッサ)を用いることができる。制御用プロセッサ10は、コプロセッサインタフェースを介してコプロセッサ11に接続される。そして、命令メモリ101は、制御用プロセッサ10の命令メモリインタフェースに直接接続される。
ここで、メモリセレクタ(MUX型バスコントローラ)12は、制御用プロセッサ10からのデータアクセスと、コプロセッサ11からのメモリアクセスを調停する。なお、プロセッサコントローラ13は、外部からのブート制御、割り込み制御等を行うブロックである。外部からのローカルメモリ102や命令メモリ101へのアクセスは、外部から各メモリへ直接アクセス可能な(バイパスする)構成にしても良いし、プロセッサ制御インタフェースを介して行うようにしても良い。
一方、コプロセッサ11は、ローカルメモリコントローラ(LMC)20と、共有メモリコントローラ(SMC)21と、複素演算用のALU(Arithmetic and Logic Unit)22とを含む。なお、以降の説明においては、ローカルメモリコントローラ(LMC)及び共有メモリコントローラ(SMC)を区別すること無く、メモリコントローラと総称することがある。
ローカルメモリコントローラ(LMC)20及び共有メモリコントローラ(SMC)21は、ALU22と並列に動作し、以てメモリアクセスレイテンシを隠蔽する。ローカルメモリコントローラ(LMC)20は、ローカルメモリインタフェース(LMEM IF)を介して、ローカルメモリ102に対するストリームアクセス(スプリットトランザクションをサポートするバーストアクセス)が可能である。一方、共有メモリコントローラ(SMC)21は、共有メモリインタフェース(SMEM IF)を介して、共有メモリに対するストリームアクセスが可能である。
具体的には、図2に示すように、メモリコントローラ(LMC、SMC)20及び21の各々は、ALU22での演算処理とは並列にローカルメモリ及び共有メモリの各々にアクセスするために、内部に、書込アドレスジェネレータ30と、書込データFIFO(First−In First−Out)31と、読出アドレスジェネレータ40と、読出データFIFO 41とを含む。読出アドレスジェネレータ40は、メモリからの読出に際して、アドレスを投機的に発行するスプリットトランザクション機能を有する。また、各メモリコントローラ20及び21は、メモリからの入力データに正規化処理を施す前処理回路42も含む。
なお、図1及び図2の例では、メモリコントローラが2個実装されているが、メモリコントローラは、1個であっても3個以上実装されても良い。
また、ALU 22は、複素算術演算器50と、複素論理演算器51とを含む。これらの演算器50及び51は、送信データに対する変調処理、受信データに対するチャネル推定処理や等化処理等の復調処理、同期処理等に用いることができる。具体的には、複素算術演算器50は、複数の無線通信方式における変調/復調/同期処理にて一般的に用いられる、複素加算(CADD)、複素減算(CSUB)、複素乗算(CMUL)、複素積和演算(CMAC)、複素共役加算(CJADD)、複素共役減算(CJSUB)、複素共役乗算(CJMUL)、複素共役積和演算(CJMAC)、複素絶対値演算(CABS)等を実行する。一方、複素論理演算器51は、複素シフト演算(CSHIFT)、複素丸め演算(CRND)、ムーブ命令等を実行する。
そして、ALU 22は、トレース回路60も含む。トレース回路60は、演算器50及び51から出力される複素演算結果を監視して、正規化係数を検出する。トレース回路60は、複素演算結果の例えば1系列分の連続データの最大有効ビット位置を、正規化係数として検出する。ここで、最大有効ビット位置とは、符号ビットを除いて、演算結果データが最上位ビット(MSB:Most Significant Bit)側から最初に"1"を呈するビットの位置である。
さらに、コプロセッサ11は、レジスタファイル(REG)23と、コントローラ(CTRL)24とを含む。
レジスタファイル(REG)23は、コプロセッサ命令にて使用可能な複数の汎用レジスタ(制御用プロセッサ10内に元々設けられているレジスタとは異なる)を含む。但し、レジスタファイル(REG)23は、制御用プロセッサ10内のレジスタファイルと兼用できる場合、その設置は必須では無い。
また、コントローラ24は、コプロセッサ命令をデコードし、その結果に応じて、メモリコントローラ20及び21、ALU 22、並びにレジスタファイル(REG)23に対する制御を行う。
[動作例]
次に、本実施の形態の動作を、図1、図2、図3A及び図3B、並びに図4〜図9を参照して詳細に説明する。なお、以降の説明においては、メモリコントローラ20及び21、ALU 22、並びにレジスタファイル(REG)23の具体的な構成についても、明らかに理解されるであろう。
図1にプロセッサシステム100の基本的な動作を示すように、制御用プロセッサ10は、プロセッサ制御インタフェースや割り込みインタフェースを用いて起動されると、命令メモリ101から命令コードをフェッチし、ローカルメモリ(データメモリ)102にアクセスしながらプロセッサ処理を実行する。また、制御用プロセッサ10は、必要に応じて、外部の共有メモリやペリフェラルブロックにもアクセスする。
ここで、制御用プロセッサ10は、コプロセッサ11を制御して複素演算処理を実行するために、命令コードとしてコプロセッサ命令を使用する。コプロセッサ命令がフェッチされた場合、制御用プロセッサ10は、コプロセッサインタフェースを介してコプロセッサ処理を実行する。
この時、図2に示すように、コプロセッサ11側では、コントローラ24がコプロセッサ命令をデコードし、ローカルメモリコントローラ(LMC)20、共有メモリコントローラ(SMC)21、ALU 22、及びレジスタファイル(REG)23を制御することでデコードされたコプロセッサ命令を実行する。
[汎用レジスタファイル23の構成とこれに基づく動作]
図3Aに示すように、レジスタファイル(REG)23は、例えば、16個の32ビットレジスタCR0〜CR15から成る。コプロセッサ11は、これらの汎用レジスタCR0〜CR15を用いて、コプロセッサ内演算命令や、制御用プロセッサ−コプロセッサ間演算命令などを実行する。また、図3Bには、各レジスタに複素数データが格納される場合のビットフォーマットが示されている。この例では、各レジスタの下位16bitに実数部(Re)が、上位16bitには虚数部(Im)が割り当てられている。
汎用レジスタCR0〜CR15の内、幾つかのレジスタは、特殊レジスタとして動作する。
図3Aに示す例では、レジスタCR0がゼロレジスタ(書込アクセスは無効、読出アクセスの値は常に"0")として動作する。
また、レジスタCR2及びCR3は、メモリアクセス用の特殊レジスタとして動作する。レジスタCR2はローカルメモリアクセス用に割り当てられ、レジスタCR3は共有メモリアクセス用に割り当てられる。この場合、ALU 22からレジスタCR2への書込アクセスが行われると、ローカルメモリコントローラ(LMC)20内の書込データFIFO 31を経由してローカルメモリ102にデータが書き込まれる。この時の書込アドレスは、ローカルメモリコントローラ(LMC)20内の書込アドレスジェネレータ30が指定するアドレスとなる。
これにより、ALU 22及びコントローラ24は、レジスタCR2への書込だけで、次のコプロセッサ命令を実行可能である。このため、結果として、1[データ/サイクル]の書込スループットでローカルメモリ102に演算結果データを書き込むことができる。
一方、事前にローカルメモリコントローラ(LMC)20内の読出アドレスジェネレータ40等を動作させ、ローカルメモリ102上のストリームデータの読出を開始しておくことで、ALU 22は、レジスタCR2への読出アクセスを行うだけで、ローカルメモリ102上のデータを、ローカルメモリコントローラ(LMC)20内の前処理回路42及び読出データFIFO 41を経由して読み出すことが可能である。
この時、ローカルメモリ102上のデータは事前にローカルメモリコントローラ(LMC)20内部へ転送されている。このため、ALU 22は、Waitすること無くレジスタCR2への読出アクセスを行うことが可能であり、結果として、1[データ/サイクル]の読出スループットでローカルメモリ102から演算対象のデータを読み出すことができる。
同様に、ALU 22は、レジスタCR3に対する書込アクセス及び読出アクセスを実施することで、メモリアクセスレイテンシを隠蔽しながら、共有メモリコントローラ(SMC)21経由で共有メモリにアクセスすることが可能である。
また、パラメータレジスタ設定により、他の2つのレジスタCR4及びCR5をピープ(PEEP)処理用のレジスタとして動作させることも可能である。
前述した通り、レジスタCR2及びCR3は、ローカルメモリ102及び共有メモリにそれぞれアクセスするためのレジスタである。これらのレジスタCR2及びCR3に対する読出アクセスを行うと、読出データFIFO 41の状態が更新される。
一方、レジスタCR4及びCR5をピープ処理用のレジスタとして動作させ、これらのレジスタCR4及びCR5への読出アクセスを行った場合、レジスタ(LMP)CR4からはレジスタ(LM)CR2と同じデータを、レジスタ(SMP)CR5からはレジスタ(SM)CR3と同じデータを読み出すことができる。この時、読出データFIFO 41の状態は更新されない。従って、レジスタCR4及びCR5から読み出したデータは、その後、レジスタCR2及びCR3から再度読み出すことができる。本ピープレジスタ機能は、同一のデータを複数回使用する場合に有用である。特に、種々の無線方式における変調/復調処理では、何度か同じデータを連続して使用する可能性があるため、本機能は非常に有用である。
なお、レジスタCR4及びCR5は、パラメータ設定により、ピープ(PEEP)機能レジスタとして使用するか、通常の汎用レジスタとして使用するかを選択することも可能である。
また、レジスタCR1をパイロット信号(リファレンス信号)アクセス用の特殊レジスタとして動作させる。この場合、事前にパイロットジェネレータ70等を動作させておくことで、 ALU 22は、レジスタCR1への読出アクセスを行うだけで、パイロットジェネレータ70から連続的に入力されるパイロット信号(リファレンス信号)を順次読み出すことが可能である。
この時、ALU 22は、Waitすること無くレジスタCR1への読出アクセスを行うことが可能であり、結果として、アクセスレイテンシを隠蔽して、1[データ/サイクル]のスループットで連続したパイロット信号(リファレンス信号)にアクセスすることができる。
さらに、レジスタCR6を、正規化係数算出のためにトレース結果格納用のレジスタとして動作させる。
本レジスタCR6は、コントローラ24内のTRACINGレジスタ設定が"OFF"である時に通常の汎用レジスタとして動作し、"ON"である時にはALU 22内のトレース回路60によって、複素演算結果の最大有効ビット位置(正規化係数)を検出するためのトレース結果格納用(累積論理和(OR)処理用)として用いられる。
このような構成により、ローカルメモリ102、外部共有メモリ、及びパイロット信号(リファレンス信号)へのアクセスに汎用レジスタを使用することができる。すなわち、ローカルメモリ102、外部共有メモリ、及びパイロット信号(リファレンス信号)へのストリームデータアクセスを、コプロセッサ11内の汎用レジスタと同様の命令マッピングや処理サイクル数で実行可能である。
なお、図3A及び図3Bでは、各レジスタのビットフォーマットを32ビットとし、実数部(Re)16ビット及び虚数部(Im)16ビットを1複素数データとして格納する場合を扱った。また、32ビット×16個のレジスタファイル構成を扱った。しかしながら、レジスタファイル(REG)23は、このような構成に限らず、16ビットや64ビットのレジスタを用いて構成しても良いし、8個や32個のレジスタ用いて構成しても良い。
[コプロセッサ命令のコード構成とこれに基づく動作]
図4は、コプロセッサ命令の命令コードの構成例を示している。
OP(Operation Code)="0"のCADDは複素加算命令であり、入力レジスタ(CRs、CRt)のデータに対して複素加算処理(CADD)を行い、その結果を出力レジスタ(CRd)に出力すべきこと(CRd=CRs+CRt)を意味する。ここで、CRs、CRt、及びCRdは、共にレジスタファイル(REG)23内の汎用レジスタ番号を示す。
同様に、OP="1"のCSUBは複素減算命令、OP="2"のCMULは複素乗算命令、OP="3"のCMACは複素積和演算命令である。また、OP="4"のCJADDは複素共役加算命令、OP="5"のCJSUBは複素共役減算命令、OP="6"のCJMULは複素共役乗算命令、OP="7"のCJMACは複素共役積和演算命令であり、OP="8"のCABSは複素絶対値演算命令である。これらの命令は、ALU 22内に後述する複素算術演算器50を実装することで、通常のプロセッサ処理では1複素データ分を処理するのに複数サイクルが必要な算術演算処理を、1サイクルで実行することが可能である。
OP="9"のCRNDは複素丸め演算命令であり、OP="A"のCSHLは複素左シフト演算命令(CRd=CRs<<imm)、OP="B"のCSHRは複素右シフト演算命令(CRd=CRs>>imm)である。これらの命令や後述する複素Exponent命令(CEXP)等は、複素論理演算器51によって実行される。
ここで、図4の例では、コプロセッサ命令の一部の例として、コプロセッサ内での演算命令のみを示したが、これらの他に、命令コード内の固定ビット(図4の例ではビット[22:21])を"11"以外の値に変更することによって、制御用プロセッサ−コプロセッサ間演算命令やトレース回路60用のパラメータ設定命令を定義することも可能である。
制御用プロセッサ−コプロセッサ間演算命令の例としては、図4の例ではコプロセッサレジスタ(CRt)を用いていた各命令のターゲット(ソース)レジスタ部分を、制御用プロセッサ11内の汎用レジスタ番号(Rt)とすることで、コプロセッサレジスタ(CRs)と制御プロセッサ11内の汎用レジスタ(Rt)の両方を入力として複素演算を実行することが可能となる。また、レジスタ転送命令(CMOVE)の入力レジスタや出力レジスタに制御用プロセッサ11内の汎用レジスタ(Rs、Rd)を指定することで、制御プロセッサ−コプロセッサ間のレジスタ間転送命令などが定義できる。
さらに、複素Exponent命令(CEXP)により、指定したコプロセッサレジスタ(CRs)の実数部および虚数部の各々の符号ビット(sign bit)数を求め、その結果を制御用プロセッサ11内の汎用レジスタ(Rd)に格納する命令も定義できる。この複素Exponent命令は、後述する正規化係数の算出に際して使用される命令である。
なお、トレース回路60用の設定命令等のパラメータレジスタ設定命令は、ALU22やメモリコントローラ(LMC、SMC)20及び21内の種々のパラメータレジスタに、即値又は制御用プロセッサ11内の汎用レジスタ値を設定できる命令である。
[ALU 22の構成とその動作]
[複素算術演算器50の構成とその動作]
図5は、ALU 22内の複素算術演算器50の構成例を示している。
複素算術演算器50は、そのインタフェースとして、入力データ(CRs、CRt、 CRd)、出力データ(CRd)、及び演算モード(conj、mac、sub)を持つ。
ここで、CRdが入力と出力の両方のインタフェースを持つのは、積和演算(累積演算)のためである。複素積和演算処理用に4個の乗算器と2個(又は4個)の加算器を設けることで、演算モードに応じて、例えば図4などで定義された各種の複素算術演算命令に1データ/サイクルにて対応することが可能である。
このように、複素算術演算器50の構成および動作として、使用する複素算術演算命令に依存して動作モードを変更し、複素算術演算を実行することで、種々の無線通信方式の変調/復調/同期処理における複素演算処理に1データ/サイクルにてプログラマブルに対応可能である。
さらに、メモリコントローラ(LMC、SMC)20又は21(レジスタCR2又はCR3等)、並びにパイロットジェネレータ70(レジスタCR1)を動作させながら、for文などを用いて繰り返し複素演算処理命令を実行することにより、図5の回路構成では、ローカルメモリ又は共有メモリに格納された長いストリームデータ系列に対する複素演算処理を1データ/サイクルのスループットで実行することが可能である。
[複素論理演算器51の構成とその動作]
図6は、ALU 22の全体構成例、その内部の複素論理演算器51の構成例、及びトレース回路60の構成例を示している。
複素論理演算器51は、そのインタフェースとして、入力データ(CRs、CRt(imm))、出力データ(CRd)、演算モード(ALU_control)を持つ。
複素論理演算器51は、主に、複素左シフト命令(CSHL)や複素右シフト命令(CSHR)、複素丸め演算命令(CRND)のためのシフト回路(Shifter)と、複素Exponent命令(CEXP)のための最大有効ビット位置検出回路(Pri_enc)と、複素ムーブ命令(CMOV)等のためのビットマニピュレータとを含む。
ここで、最大有効ビット位置検出回路(Pri_enc)は、入力データの最上位ビット(MSB)側から何ビット目に始めて有効ビットである"1"が存在するかを検出し、そのビット位置を出力する演算回路である。
複素論理演算器51は、演算モード(ALU_control)に応じて、例えば図4などで定義された各種の複素論理演算命令に1データ/サイクルにて対応する。
このように、複素論理演算器51は、使用する複素論理演算命令に依存して動作モードを変更し、複素論理演算を実行することで、種々の無線方式の変調/復調/同期処理における複素論理演算処理に1データ/サイクルにてプログラマブルに対応可能である。
さらに、メモリコントローラ(LMC、SMC)20又は21(レジスタCR2又はCR3等)、並びにパイロットジェネレータ70(レジスタCR1)を動作させながら、for文などを用いて繰り返し複素論理処理命令を実行することにより、図6の回路構成では、ローカルメモリ又は共有メモリに格納された長いストリームデータ系列に対する複素演算処理を1データ/サイクルのスループットで実行することが可能である。
[トレース回路60の構成とその動作]
図6に示すように、トレース回路60は、複素演算命令の演算結果、トレース制御信号、トレース用の特殊レジスタ(CR6)値の3つを入力インタフェースとして、トレース演算処理(TRACE)を行い、トレース演算結果を再度トレース用の特殊レジスタ(CR6)に向けて出力する。
ここで、トレース回路60は、コントローラ24からのパラメータレジスタ設定命令によるトレース制御により、他の任意の複素演算命令を実行しながら、サイクルオーバヘッドなしに並列にトレース演算処理を実行できるという特徴がある。
トレース回路60(トレース演算処理)は、トレース後に1回の複素Exponent命令(CEXP)にて最大有効ビット位置を検出可能なように、複素演算結果の実数部(Re)と虚数部(Im)の各々における有効ビットを"1"として、トレース用特殊レジスタ(CR6)を用いながら累積論理和(累積OR)処理を行う回路である。
すなわち、トレース回路60は、複素演算結果の実数部(Re)と虚数部(Im)の各々において、正の数(sign bitであるMSBが"0")の場合はそのまま累積論理和(累積OR)処理を行い、負の数(sign bitであるMSBが"1")の場合には該当する実数部(Re)又は虚数部(Im)の全ビット分を反転(NOT)させて累積論理和(累積OR)処理を行う。
このようなトレース回路60を実装することにより、或るデータ系列分の複素演算結果の実数部(Re)と虚数部(Im)のそれぞれにおける有効ビット位置の最大値を、サイクルオーバヘッドなしに累積処理(トレース)することが可能である。
また、実際の最大有効ビット位置は、トレース後に、最上位ビット(MSB)側から最初に"1"となるビット位置を検出する複素Exponent命令(CEXP)を1回実行することによって求めることが可能であり、実行した複素Exponent命令の結果(ビット位置)を用いて、データのダイナミックレンジを調整するために正規化処理する場合の正規化係数を算出することが容易に可能となる。
ここで、トレース制御信号は、コントローラ24内のパラメータレジスタ(TRACINGレジスタ)設定等により、トレース機能が有効(ON)で、且つ実行する複素演算命令の出力先レジスタ番号が、TRACINGレジスタにてトレース対象レジスタとして設定されたレジスタ番号と一致する場合にアクティブとなる信号である。
すなわち、トレース対象レジスタ番号を設定できることにより、どの演算結果だけをトレース対象とするかを指定することが可能である。
また、演算結果が32ビットの実数データフォーマットである場合と、又は図3Bに示したような16ビット×2の複素数データフォーマットである場合とをTRACINGレジスタのトレースモードによって指定可能である。このため、トレースモード設定によって、32ビット一括でトレース処理するのか、又は16ビットずつ実数部(Re)と虚数部(Im)を分離して処理するのかを柔軟に変更することも可能である。
[メモリコントローラ20及び21の構成とその動作]
図2に示したように、メモリコントローラ(LMC、SMC)20及び21の各々は、制御用プロセッサ10及びコプロセッサ11の演算処理とは並列にローカルメモリ102又は共有メモリにアクセスするため、その内部に、書込アドレスジェネレータ30、書込データFIFO 31、読出アドレスジェネレータ40、読出データFIFO 41、及び前処理回路42を含む。
[書込アドレスジェネレータ30及び書込データFIFO 31の構成とその動作]
コプロセッサ11からレジスタCR2又はCR3を介してメモリに演算結果であるストリームデータを書き込む場合、メモリコントローラ(LMC、SMC)20又は21において、書込アドレスジェネレータ30及び書込データFIFO 31が動作する。
図7は、書込アドレスジェネレータ30及び書込データFIFO 31の構成例を示している。
まず、書込アドレスジェネレータ30は、制御レジスタとして、スタートレジスタ(w_start)、ベースアドレスレジスタ(w_base)、初期ポインタレジスタ(w_ptr)、ステップレジスタ(w_step)、メモリ長レジスタ(w_len)、アクセス回数レジスタ(w_cnt)を含む。
コプロセッサのパラメータ設定命令にてこれらの制御レジスタに値が設定され、起動されると、書込アドレスジェネレータ30は、書き込みデータFIFO 31からのデータ出力要求の度毎にアドレスを自動的に生成し、発行する。
基本的には、書込アドレスジェネレータ30は、ベースアドレス(w_base)に対してカレントアドレスポインタの値を加算して得たアドレスを発行する。カレントアドレスポインタは、初期ポインタ(w_ptr)の値を初期値として、アドレス出力の度毎に、その値が更新される。書込アドレスジェネレータ30は、アドレス出力する度毎に、現在のアドレスに対して32ビットアドレス単位でステップ数(w_step)分だけ加算すると共に、メモリ長サイズ(w_len)で剰余(Modulo)演算して得た結果を、次のカレントアドレスポインタとして出力する。
よって、書込アドレスジェネレータ30は、上記の制御レジスタに加えて、図7に示す如くカレントアドレスポインタレジスタ、2つの加算器、剰余演算器(比較器と減算器から成る)、並びにアクセス回数カウント用の比較器及び減算器を含む。
このような構成により、任意のメモリ領域に対して、昇順や降順での連続したアドレスでの書込を行うことができる。ステップ数(w_step)を制御することで任意のアドレス間隔での書込を行うこともできる。また、メモリ長(w_len)を制御することで、メモリの途中から書き込み始めて最後まで書き込んだら先頭に戻っての書込を行うこともできる。従って、柔軟なアドレスパタンを生成することができる。
次に、書込データFIFO 31について説明する。
ALU 22からレジスタCR2又はCR3に出力されたデータは、書込データFIFO 31を経由してメモリに出力される。書込データFIFO 31は、データが入力されると、書込アドレスジェネレータ30と協調動作して、データを順番にメモリ上の書き込みアドレスジェネレータ30が示すアドレスに格納する。
このように、FIFOを用いてデータ出力することで、制御用プロセッサ10及びコプロセッサ11の演算命令とは並列にメモリアクセスでき、メモリ側がWaitした場合であっても演算命令には影響を与えない。このため、データ書込に際してのメモリアクセスレイテンシを隠蔽することが可能となる。
ここで、メモリ側のWaitにより、書込データFIFO 31がFullになってしまった場合に備え、レジスタファイル(REG)23を介してALU 22側でのコプロセッサ命令の実行をWaitさせるようなWait制御機構も設ける。この場合、正常にコプロセッサ命令処理の実行を継続することができる。
[読出アドレスジェネレータ40、読出データFIFO 41、及び前処理回路42の構成とその動作]
コプロセッサ11がレジスタCR2又はCR3を介してメモリからストリームデータを読み出す場合、メモリコントローラ(LMC、SMC)20又は21において、読出アドレスジェネレータ40、読出データFIFO 41、及び前処理回路42が動作する。
図8は、読出アドレスジェネレータ40、読出データFIFO 41、及び前処理回路42の構成例を示している。
まず、読出アドレスジェネレータ40は、書込アドレスジェネレータ30と同様、制御レジスタとして、スタートレジスタ(r_start)、ベースアドレスレジスタ(r_base)、初期ポインタレジスタ(r_ptr)、ステップレジスタ(r_step)、メモリ長レジスタ(r_len)、アクセス回数レジスタ(r_cnt) を含む。
コプロセッサのパラメータ設定命令にてこれらの制御レジスタに値が設定され、スタートレジスタ(r_start)設定により起動されると、読出アドレスジェネレータ40は、メモリからの読出アドレスを自律的に生成し、アクセス回数レジスタ(r_cnt)分だけ連続的に発行する。
読出アドレスを投機的に発行することにより、データ読出に際してのスプリットトランザクションに対応する。
基本的には、読出アドレスジェネレータ40は、ベースアドレス(r_base)に対してカレントアドレスポインタの値を加算して得たアドレスを発行する。カレントアドレスポインタは、初期ポインタ(r_ptr)の値を初期値として、アドレス出力の度毎に、その値が更新される。読出アドレスジェネレータ40は、アドレス出力する度毎に、現在のアドレスに対して32ビットアドレス単位でステップ数(r_step)分だけ加算すると共に、メモリ長サイズ(r_len)で剰余(Modulo)演算して得た結果を、次のカレントアドレスポインタとして出力する。
よって、読出アドレスジェネレータ40は、上記の制御レジスタに加えて、図8に示す如く実際にアドレスを計算するためのカレントアドレスポインタレジスタ、2つの加算器、剰余演算器(比較器と減算器から成る)、並びにアクセス回数カウント用の比較器及び減算器を含む。
このような構成により、任意のメモリ領域に対して、昇順や降順での連続したアドレスでのデータ読出を行うことができる。ステップ数(r_step)を制御することで任意のアドレス間隔での読出を行うこともできる。また、メモリ長(r_len)を制御することで、メモリの途中から読み出し始めて最後まで読み出したら先頭に戻っての読出を行うこともできる。従って、柔軟な読み出しアドレスパタンを生成することができる。
次に、読出データFIFO 41及び前処理回路42について説明する。
メモリから読み出したデータ(RDAT)は、前処理回路42及び読出データFIFO 41を介して、ALU 22側に転送される。読出データ(RDAT)は、前処理回路42にまず入力される。
図8に示すように、前処理回路42は、左シフト量を設定するための正規化係数レジスタ(r_shift)、及び算術左シフトを実施するシフト回路(バレルシフタ)を含む。ここで、左シフト量は、トレース回路60及び複素Exponent命令(CEXP)により算出された正規化係数(最大有効ビット位置)に基づき設定される。
シフト回路(バレルシフタ)は、正規化係数レジスタ(r_shift)の設定値(左シフト量)に従い、メモリから読み出した複素数データの実数部(Re)と虚数部(Im)のそれぞれについて算術左シフトを実行する。
このように、前処理回路42を用いて、或る複素数データ系列分に対して全て同様の算術左シフトを実行することにより、当該データ系列の全てのデータに正規化処理を施すことができる。
また、読出アドレスジェネレータ40によるメモリへの投機アクセスと、後段の読出データFIFO 41により、前処理回路42は、制御用プロセッサ10及びコプロセッサ11における演算処理に並列して、サイクルオーバヘッド無く動作できる。
また、前処理回路42にて正規化処理が施された読出データは、読出データFIFO 41に順次格納され、レジスタファイル23(レジスタCR2又はCR3)を介してALU 22へ転送される。
なお、メモリ側のWait等により、読出データFIFO 41内に所望のデータがまだ存在しない(読出データFIFO 41が空の状態にある)場合に備え、レジスタファイル(REG)23を介してALU 22側でのコプロセッサ命令の実行をWaitさせるようなWait制御機構も設ける。この場合、正常にコプロセッサ命令処理の実行を継続することができる。
[プロセッサシステム100の全体動作例]
図9の部分(b)は、プロセッサシステム100の全体動作例を示している。具体的には、コプロセッサ11からレジスタCR2又はCR3を介してメモリ(ローカルメモリ102又は共有メモリ105(若しくは、図10に示す共有メモリ203))から複素数データ系列(ストリームデータ)を読み出し、チャネル推定等の所望の復調処理(複素演算処理)を行い、処理結果データを、レジスタCR2又はCR3を介してメモリ(ローカルメモリ102又は共有メモリ105(若しくは203))に書き込む場合を扱っている。
例えば、メモリ上のストリームデータに対してパイロット信号系列との複素共役乗算(CJMUL)を行い、その後、その結果データに対して更に複素積和演算(CMAC)を行う場合の例である。但し、複素積和演算のためには入力データに正規化処理を施す必要がある場合を扱っている。
本実施の形態の効果がより理解され得るよう、まずは図9の部分(a)を参照して、従来技術である通常のDSPを使用した場合の動作を説明する。そして、これと比較する形で、部分(b)を参照して本実施の形態の全体動作を説明する。
図9の部分(a)に示すように、DSPは、最初のパイロット信号(リファレンス信号)との複素共役演算(CMUL)に先立って、パイロット信号系列の読出と複素数データ系列の読出とを行う(ステップS101)。この時、それぞれの読出に係るアドレス計算サイクルやデータ読出サイクルが必要となる。また、複素数データ系列の格納場所が共有メモリ105(若しくは203)のようにアクセスレイテンシを必要とする場合は、更に追加のアクセスサイクル数が必要となる。
この後、DSPは、次の複素積和演算(CMAC)時に入力データに正規化処理を施す必要があるため、複素Exponent命令(CEXP)を実行し、以て正規化係数(最大有効ビット位置)を算出する。複素Exponent命令(CEXP)の実行サイクルはデータ毎に必要である。
そして、DSPは、これらの処理をfor文などで1データ系列分繰り返す。
この後、DSPは、データ毎に正規化処理(左シフト処理)を実行し(ステップS103)、正規化処理に続けて複素積和演算(CMAC)を実行する(ステップS104)。
そして、DSPは、これらの処理をfor文などで1データ系列分繰り返し、演算処理を終了する。
一方、本実施の形態においては、メモリコントローラ(LMC、SMC)20及び21内の各アドレスジェネレータ30及び40へのパラメータ設定と起動とが行われる。図9の部分(b)に示すように、メモリコントローラ20又は21は、自律的にメモリからデータを読み出し、読み出しデータを読出データFIFO 41に順次格納する(スプリットトランザクション) (ステップS1)。
同様に、パイロットジェネレータ70に対しても動作開始設定することで、レジスタCR1にパイロット信号データ系列が順次格納される(ステップS2)。
また、コプロセッサのパラメータレジスタ設定命令により、コントローラ24内のTRACINGレジスタに対するトレース有効設定を実施しておく。
そして、ALU 22は、レジスタCR1及びCR3を入力、レジスタCR2を出力として複素共役演算命令(CJMUL)を実行する(ステップS3)。これにより、プロセッサシステム100は、共有メモリアクセスレイテンシ及びパイロットデータのアクセスレイテンシを隠蔽し、且つトレース回路60で演算結果の最大有効ビット位置をトレースしながら(レジスタCR6を用いて)、演算結果データをローカルメモリ(データメモリ)102に格納することが可能である。
結果として、1データ系列分を処理するfor文の中は、同一の複素共役演算命令(CJMUL)を繰り返すだけとなる。
次に、ALU 22は、複素積和演算命令(CMAC)の実行に先立ち、複素Exponent命令(CEXP)を1回だけ実行する(ステップS4)。これにより、正規化係数(最大有効ビット位置)が算出される。この正規化係数を、メモリコントローラ(LMC、SMC)20及び21内の正規化係数レジスタ(r_shift)に設定しておく。
そして、ALU 22は、for文などで1データ系列分の複素積和演算命令(CMAC)を実行する。この時、前処理回路42は、複素積和演算命令(CMAC)と並行して、入力データに正規化処理(左シフト処理)を施す(ステップS5)。
このように、正規化処理を含むようなチャネル推定等の復調処理(複素演算処理)をプロセッサシステム100を用いて実行することで、メモリコントローラ(LMC、SMC)20及び21等への設定サイクルが数サイクル必要となるものの、for文の中の処理命令数は1つ(複素共役乗算命令(CJMUL)又は複素積和演算命令(CMAC))に限定することが可能である。
一般的に、1データ系列長(for文の繰り返し回数)はメモリコントローラ(LMC、SMC)20及び21への設定サイクル数に比べて遥かに長く、for文の中の処理サイクル数が支配的となる。このため、図9中に点線矢印で示すように、プロセッサシステム100では、通常DSPを使用する場合に比べて約2倍以上の高速化が可能となる。すなわち、通常DSPでは、for文中に複素演算命令に加えて最大有効ビット位置の検出処理(CEXP)や入力データの正規化処理(SHIFT)、場合によっては入力データやパイロットデータの読出処理サイクルも必要となる。一方、プロセッサシステム100では、トレース回路60及び前処理回路42へのパラメータ設定により、for文内における処理サイクル数を低減(並列処理化)することが可能である。
なお、コプロセッサ11内には、トレース回路60又は前処理回路42の一方を設けても良い。この場合も、演算処理の高速化及び効率化を図れることは明らかである。
[適用例]
図10は、上記のプロセッサシステム100を、一例として、IEEEにて規格化されている無線LAN(IEEE 802.11a)方式やWiMAX(IEEE 802.16e)方式などを含む複数の無線通信方式に対応可能な変調/復調処理モジュール(MODEM)に適用した場合の無線通信システムの構成例を示している。
本無線通信システムは、モデムモジュール(MODEM)200と、RF(Radio Frequency)インタフェースフェースモジュール204と、サーチモジュール(Search)205と、コーデックモジュール(CODEC)206とを含む。モデムモジュール(MODEM)200は、送信データに対する変調処理や受信データに対する復調処理を行う。サーチモジュール(Search)205は、対向通信装置との間の同期確立やタイミング探査を行う。コーデックモジュール(CODEC)206は、送信データに対する符号化処理や受信データに対する復号化処理を行う。
また、本無線通信システムは、汎用プロセッサ(CPU)201と、リソースマネージャ202と、共有メモリ203とを含む。汎用プロセッサ(CPU)201は、上位レイヤ(Layer2/Layer3)の処理を実行する。共有メモリ203は、モジュール間でデータを転送するために用いられる。
そして、モデムモジュール(MODEM)200は、上記のプロセッサシステム100、命令メモリ(IRAM)101、及びデータメモリ(DRAM)102、並びにインタフェース制御回路103、FFT/IFFT処理エンジン104、等化処理エンジン(イコライズ処理エンジン)106、及びプロセッサシステム100とFFT/IFFT処理エンジン104の間のデータ転送に用いる共有メモリ105を含む。
すなわち、変調/復調処理の内、その処理量が膨大でプロセッサ処理ではリソースが不足するFFT/IFFT処理や等化処理(イコライズ処理)のみを専用ハードウェアであるFFT/IFFT処理エンジン104や等化処理エンジン(イコライズ処理エンジン) 106を用いて実行し、それ以外のチャネル推定処理等の複数の無線通信方式における変調/復調処理については、プロセッサシステム100を用いて実行する。
図11A及び図11Bは、本適用例における変調処理例及び復調処理例をそれぞれ示している。
図11Aに示すように、送信側の変調処理としては、CODECモジュール206から転送された符号化処理後の送信データ系列に対して、(1)一次変調(PSK、QAM)処理、(2)IFFT処理およびGI(Guard Interval)挿入、(3)プリアンブル(リファレンス信号)付加の順で処理を実施し、変調後のデータ系列を、シンボル整形処理や送信処理を行うRFインタフェースモジュール203に共有メモリ203経由で転送する。
一方、図11Bに示すように、受信側の復調処理としては、RFインタフェースモジュール204から転送された受信データ系列に対して、SEARCHモジュール205で検出した受信タイミングにて、(1)FFT処理およびGI除去、(2)チャネル推定処理、(3)等化処理(イコライズ)、(4)一次復調(PSK、QAM)処理の順で処理を実施し、復調後の受信データ系列を、復号化処理を行うCODECモジュール206に共有メモリ203経由で転送する。
図12は、図11Aに示した処理フローを実行する場合のシーケンス図である。
送信データ系列に対する変調処理の場合、汎用プロセッサ(CPU)201又はリソースマネージャ202が、処理起動コマンドをプロセッサシステム100に与える(ステップS21)。
このコマンドを受信したプロセッサシステム100は、共有メモリコントローラ21を用いて共有メモリ203から入力データ系列を読み出しながらALU 22にて変調処理(PSK、QAM)を行い、共有メモリコントローラ21を用いて共有メモリ105にデータを格納する(ステップS22)。そして、プロセッサシステム100は、IFFT処理のために、FFT/IFFT処理エンジン104に対してメモリアドレスや動作モードなどのパラメータ設定を行い、以てFFT/IFFT処理エンジン104を起動する(ステップS23)。
FFT/IFFT処理エンジン104は、設定されたパラメータに従い、MODEMモジュール200内部の共有メモリ105からデータを読み出しながらIFFT処理を行い、処理後の結果データも同様の共有メモリ105上に格納する。そして、FFT/IFFT処理エンジン104は、処理完了割り込みにてプロセッサシステム100にIFFT処理完了を通知する(ステップS24)。
次いで、プロセッサシステム100は、共有メモリコントローラ21やローカルメモリコントローラ20等を用いて、GI挿入処理及びプリアンブル付加処理を実施し、共有メモリコントローラ21を用いてプリアンブル付加後の送信データ系列をMODEMモジュール200外部の共有メモリ203に格納する(ステップS25及びS26)。そして、プロセッサシステム100は、処理完了通知を汎用プロセッサ(CPU)201又はリソースマネージャ202に通知する(ステップS27)。
以上のような処理シーケンスを繰り返すことで送信データ系列に対する変調処理を実現する。
一方、図13は、図11Bに示した処理フローを実行する場合のシーケンス図である。
受信データ系列に対する復調処理の場合、汎用プロセッサ(CPU)201又はリソースマネージャ202が、処理起動コマンドをプロセッサシステム100に与える(ステップS31)。
このコマンドを受信したプロセッサシステム100は、SEARCHモジュール205から通知された動作タイミングに従って、FFT処理及びGI除去処理のために、FFT/IFFT処理エンジン104に対してメモリアドレスや動作モードなどのパラメータ設定を行い、以てFFT/IFFT処理エンジン104を起動する(ステップS32)。
FFT/IFFT処理エンジン104は、設定されたパラメータや動作タイミングに従い、MODEMモジュール200外部の共有メモリ203からデータを読み出しながらFFT処理を行い、処理後の結果データをMODEMモジュール200内部の共有メモリ105上に格納する。そして、FFT/IFFT処理エンジン104は、処理完了割り込みにてプロセッサシステム100にFFT処理完了を通知する(ステップS33)。
次いで、プロセッサシステム100は、共有メモリコントローラ21を用いて、MODEMモジュール200内部の共有メモリ105からFFT後の処理データ系列を読み出し、チャネル推定処理を実施する(ステップS34)。
次いで、プロセッサシステム100は、チャネル等化処理のために、等化処理エンジン(イコライズエンジン)106に対してメモリアドレスや動作モードなどのパラメータ設定を行い、以て等化処理エンジン(イコライズエンジン)106を起動する(ステップS35)。
等化処理エンジン(イコライズエンジン)106は、設定されたパラメータや動作タイミングに従い、MODEMモジュール200内部の共有メモリ105から受信データ信号とチャネル推定結果を読み出しながら等化処理を行い、処理後の結果データを同様の共有メモリ105上に格納する。そして、等化処理エンジン(イコライズエンジン)106は、処理完了割り込みにてプロセッサシステム100に等化処理完了を通知する(ステップS36)。
最後に、プロセッサシステム100は、共有メモリコントローラ21を用いてMODEMモジュール200内部の共有メモリ105から等化処理後の受信データを読み出しながら、ALU 22にて一次復調(PSK、QAM)処理(デマッピング処理)を行い、復調後のデータをMODEMモジュール200外部の共有メモリ203に格納する(ステップS37)。そして、プロセッサシステム100は、処理完了通知を汎用プロセッサ(CPU)201又はリソースマネージャ202に通知する(ステップS38)。
以上のような処理シーケンスを繰り返すことで受信データ系列に対する復調処理を実現する。
[第2の実施の形態]
本実施の形態に係るプロセッサシステムは、上記の第1の実施の形態と同様に構成できる。但し、本実施の形態においては、トレース回路及び前処理回路を図14及び図15にそれぞれ示す如く構成し、以て同期処理等で累積加算を行う場合に、累積加算値がオーバフローするのを防止する。
ここで、上記の第1の実施の形態では、演算結果データのダイナミックレンジを調整するための正規化処理として、最大有効ビット位置を検出し(トレース回路60)、入力データに対する算術左シフト処理を実行する(前処理回路42)ことが可能であった。
一方、本実施の形態においては、特に同期処理や逆拡散処理等における累積加算処理(積和演算処理)や最大ピーク値検出処理において、その累積加算結果が有効ビット範囲をオーバフローしてしまうのを防止するための正規化処理にも対応可能なようにトレース回路及び前処理回路を構成している。すなわち、本実施の形態と上記の第1の実施の形態とでは、トレース回路及び前処理回路の構成並びに動作が異なる。なお、その他の回路の構成及び動作は、上記の第1の実施の形態と同様である。
図14に示すように、本実施の形態に係るトレース回路61は、上記の第1の実施の形態(図6)に示したトレース回路も実装し、加えて、複素演算結果データとトレース用レジスタ(CR6)の値の小さい方を選択する最小値検出回路(比較器及びセレクタ)が実装されている。
また、トレース回路61は、上記の第1の実施の形態(図6)に示した最大有効ビット位置検出回路(トレース回路60)と本実施の形態に特有の最小値検出回路の出力を、トレースモード信号に従って選択してトレース用レジスタへ出力する出力セレクタも実装する。
なお、コントローラ24には、パラメータレジスタとして、トレースモードレジスタ(trace_mode)及びトレース対象レジスタ番号レジスタ(trace_reg_num)が実装される。
トレース回路61は、コントローラ24内のトレースモードレジスタ設定に応じて、(a)最大有効ビット位置をトレースするのか、(b)演算結果の最小値をトレースするのかを選択することが可能である。
最大有効ビット位置をトレースする場合の動作は、上記の第1の実施の形態(図6)と同様である。
一方、演算結果の最小値をトレースする場合は、ALU 22での複素演算結果データと、トレース用レジスタ(CR6)の値とを比較器にて比較し、値の小さい方をセレクタにて選択してトレース用レジスタ(CR6)に格納する。この処理を、或るデータ系列分の複素演算処理について繰り返すことにより、演算結果データ系列の最小値がトレース用レジスタに格納される。
なお、本トレース処理は、上記の第1の実施の形態と同様、通常のコプロセッサ命令(複素演算処理)とは並列に実行可能なため、サイクルオーバヘッド無く実行可能である。
また、トレースモード信号は、複素演算命令の出力先レジスタ番号が、コントローラ24内のトレース対象レジスタ番号レジスタ(trace_reg_num)に設定されたレジスタ番号と一致する場合にアクティブとなる信号である。すなわち、トレース対象レジスタ番号を設定できることにより、どの演算結果だけをトレース対象とするかを指定することが可能である。
さらに、演算結果が32ビットの実数データフォーマットである場合と、又は図3Bに示したような16ビット×2の複素数データフォーマットである場合とをトレースモードレジスタによって指定可能である。このため、トレースモード設定によって、32ビット一括でトレース処理するのか、又は16ビットずつ実数部(Re)と虚数部(Im)を分離して処理するのかを柔軟に変更することも可能である。
一方、図15に示すように、本実施の形態に係る前処理回路43は、上記の第1の実施の形態(図8)に示した算術左シフトを実施する左シフト回路(バレルシフタ)も実装し、加えて、モード設定に応じて、入力データから任意の値を減算する減算器も実装している。
また、上記の第1の実施の形態(図8)に示した左シフト回路と本実施の形態に特有の減算器の出力を、正規化処理モードレジスタ(n_mode)の設定値に従って選択して読出データFIFO 41へ出力する出力セレクタも実装する。
なお、前処理回路43には、上記の正規化処理モードレジスタ(n_mode)に加えて、左シフト量または減算値(量)を設定するための正規化係数レジスタ(n_value)もパラメータレジスタとして実装される。
前処理回路43は、正規化処理モードレジスタ設定に応じて、(a)ダイナミックレンジ調整のための算術左シフトを実施するのか、(b)オーバフロー防止のための減算を実施するのかを選択することが可能である。
算術左シフトによる正規化処理を実施する場合の動作は、上記の第1の実施の形態(図8)と同様である。
一方、減算による正規化処理を実施する場合は、入力データ各々から正規化係数レジスタ(n_value)に設定された固定値を減算し、読出データFIFO 41へ出力する。
トレース回路61を用いて適切な減算値を設定することにより、オーバフローを防止しながら累積加算処理(積和演算処理)を実施することが可能である。
なお,本正規化処理は、上記の第1の実施の形態と同様,通常のコプロセッサ命令(複素演算処理)とは並列に実行可能なため、サイクルオーバヘッド無く実行可能である。
図16A及び図16Bは、本実施の形態に係るプロセッサシステムの動作例をそれぞれ示している。
まず、図16Aに示す正規化処理(以下、正規化処理Aと呼称する)を実施する場合の動作について説明する。
ここで、正規化処理Aは、同期処理や逆拡散処理等の累積加算処理時に、演算結果データの最小値をトレースし、その最小値を全ての演算結果データ(次の処理の入力データ)から減算することで、オーバフローを防止する処理である。
この場合、プロセッサシステム100は、最初の累積加算演算(複素積和演算)時に、トレースモードを最小値検出モード設定にしておく。
ALU 22は、所望の累積加算命令(CMAC)を実行することにより、入出力データのメモリアクセスレイテンシを隠蔽し、演算結果データの最小値をトレース処理しながら(CR6レジスタを用いて)、処理結果データをメモリ(ローカルメモリ102)に格納することが可能である(ステップS41)。
結果として、1データ系列分を処理するfor文の中は、同一の複素積和演算命令(CMAC)を繰り返すだけのサイクル数となる。
次に、ALU 22は、トレース処理により得られた最小値(レジスタCR6の値)を、ムーブ命令(CMOV)によってメモリコントローラ(LMC、SMC)20及び21内の正規化係数レジスタ(n_value)に設定すると共に、正規化処理モード(n_mode)を減算モードに設定する(ステップS42)。
そして、ALU 22は、次の累積加算命令(複素積和演算命令)を繰り返し実行することにより、1データ系列分の全ての演算結果データに対して、正規化係数に対応する減算処理を実施しながら、所望の累積加算処理を実行することが可能である(ステップS43)。
この場合、全データから最小値分だけ減算されるため、データ同士間の相対的な差分を維持したままオーバフローを防止できるという利点がある。
次に、図16Bに示す正規化処理(以下、正規化処理Bと呼称する)を実施する場合の動作について説明する。
ここで、正規化処理Bは、同期処理や逆拡散処理等の累積加算処理時に、演算結果データの最大有効ビット位置をトレースし、そのビット位置が所定の閾値を越えた場合に、全ての演算結果データ(次の処理の入力データ)から任意の固定値を減算することで、オーバフローを防止する処理である。
この場合、プロセッサシステム100は、最初の累積加算演算(複素積和演算)時に、トレースモードを最大有効ビット位置検出モードに設定しておく。
ALU 22は、所望の累積加算命令(CMAC)を実行することにより、入出力データのメモリアクセスレイテンシを隠蔽し、演算結果データの最大有効ビット位置をトレース処理しながら(CR6レジスタを用いて)、処理結果データをメモリ(ローカルメモリ102)に格納することが可能である(ステップS51)。
結果として、1データ系列分を処理するfor文の中は、同一の複素積和演算命令(CMAC)を繰り返すだけのサイクル数となる。
次に、ALU 22は、トレース処理により得られたトレース結果(レジスタCR6の値)から最大有効ビット位置を複素Exponent命令(CEXP)により検出し、比較命令(CMP)により閾値と比較する(ステップS52)。
最大有効ビット位置が閾値を超えていた場合は、メモリコントローラ(LMC、SMC)20及び21内の正規化係数レジスタ(n_value)に任意の固定値を設定し、正規化処理モード(n_mode)を減算モードに設定する。
そして、ALU 22は、次の累積加算命令(複素積和演算命令)を繰り返し実行することにより、1データ系列分の全ての処理結果データに対して、当該固定値分だけ減算する処理を実施しながら、所望の累積加算処理を実行することが可能である(ステップS53)。なお、最大有効ビット位置が閾値を超えていない場合には、正規化処理(減算)を行わずにそのまま累積加算処理を実行する。
この場合、最大値が閾値を超えた場合に全データから任意の固定値分だけ減算されるため、確実にオーバフローを防止できるという利点がある。
このように、本実施の形態においては、トレースモード(trace_mode)及び正規化処理モード(n_mode)の設定により、入力データのダイナミックレンジを調整するための正規化処理や、累積加算値のオーバフローを防止するための種々の正規化処理など、無線信号処理で必要となる様々な正規化処理が柔軟に実現可能となる。特に、正規化係数の算出や、入力データに対する正規化処理等の正規化処理のための処理サイクルオーバヘッドや、入出力データのメモリアクセスレイテンシ、パイロットデータのアクセスレイテンシを隠蔽しながら、所望の通複素演算処理を実行可能であるという大きな利点がある。
上記の第1及び第2の実施の形態によれば、以下の効果が期待できる。
第1の効果は、複数の無線方式における種々の変調/復調/同期処理(複素演算処理)に、柔軟に且つ高速に対応できることである。
その理由は、プロセッサシステムでは、一般的な制御用プロセッサに複素演算処理用コプロセッサを接続し、1命令/サイクルで、複素加算、複素乗算、複素積和演算等の種々の複素演算処理を実行可能にしたためである。
また、コプロセッサがメモリにアクセスするためのメモリコントローラを内蔵し、そのメモリコントローラが、複素演算処理を行うコプロセッサ演算命令と実際にメモリアクセスするサイクルとを独立させるためのデータFIFOを備えることも、柔軟性が向上する理由の1つである。
特に、メモリコントローラ内に独立したアドレスジェネレータを備えることにより、或るデータ系列分のメモリアクセス時に様々なアドレス順でのアクセス(スプリットトランザクション)が可能であるため、プロセッサ処理によるデータ毎のアドレス計算が不要となり、柔軟且つアクセスレイテンシを隠蔽可能なメモリアクセスが可能という利点がある。
また、読み出すレジスタ番号によってメモリコントローラがその分だけ内部状態を更新する通常アクセス機能と、データを読み出しても内部状態を更新しないピープ機能との両方を備えることも柔軟性を向上させている。
さらに、上記の第2の実施の形態に係るトレース回路や前処理回路等の正規化処理用回路を用いることで、種々の無線方式における種々の正規化処理にサイクルオーバヘッド無く柔軟に対応可能であるという大きな利点もある。
これらのトレース回路や前処理回路では、それぞれ動作モードレジスタを備え、その動作モードレジスタ設定に基づいて、最大有効ビット位置検出や最小値検出などのトレース機能や、算術左シフト処理や減算処理などの前処理機能を可変にできるためである。制御レジスタ設定により動作モードを変更可能なトレース回路と前処理回路の一方だけではなく、両方を共に備えていること(相乗効果)により、様々なデータの正規化処理(正規化係数の算出と実際の正規化処理)に更に柔軟に対応可能である。
第2の効果は、柔軟性を重視してプロセッサによるソフトウェア処理で実現した場合でも、パイロット信号へのアクセスレイテンシや正規化処理サイクルも隠蔽できるなど、メモリアクセスレイテンシも含めて変調/復調処理(複素演算処理)を高速に実現可能なことである。
その理由は、プロセッサシステムでは、一般的な制御用プロセッサに複素演算処理専用のコプロセッサを接続し、コプロセッサからメモリへのアクセスには、メモリアクセスレイテンシを隠蔽できるアドレス生成機能やFIFO機能、前処理機能を内蔵したメモリコントローラを備えているためである。
このようなメモリコントローラを用いることで、コプロセッサ命令による変調/復調処理(複素演算処理)と、メモリアクセスを独立して並列に実施することが可能となるため、メモリアクセスレイテンシを隠蔽でき、一般的なプロセッサ処理に比べて、かなり高速に処理可能である。
また、コプロセッサ内のALUとして、複素加算、複素乗算、複素積和演算、複素共役加算、複素共役乗算、複素共役積和演算などの種々の複素演算処理を1命令/サイクルの処理スループットで実行可能な複素演算器(複素算術演算器および複素論理演算器)を備えることも高速化が可能な理由の1つである。
一般的なプロセッサによるソフトウェア処理では、1回の複素乗算処理(4回の乗算)に4サイクル程度は必要であり、複素積和演算処理に6サイクル程度の処理サイクル数が必要である。
一方、上記の第1及び第2の実施の形態においては、ALUやメモリコントローラを活用するコプロセッサ処理命令を使用することにより、例えば1複素データ/サイクルの処理スループットで、種々の複素演算処理を実現することが可能である。
さらに,正規化処理の高速化のため,ALU内にトレース回路や、メモリコントローラ内に入力データの前処理回路を備えることにより、種々の無線通信方式における正規化処理(正規化係数の算出と入力データの正規化処理)を、サイクルオーバヘッド無く通常の複素演算処理と並列に実行可能であるという利点もある。
これは、一般的なプロセッサ処理では、正規化係数の算出のためにデータ毎に少なくとも1命令以上のサイクル数が必要であり、また、実際の正規化処理のためにデータ毎に1命令以上の処理サイクル数が必要であるため、サイクルオーバヘッド無く並列に様々な正規化処理を実現できることは大きな利点である。
上記の第1及び第2の実施の形態による主たる効果は、これら第1の効果である複数の無線通信方式に対応する柔軟性という利点と、第2の効果である変調/復調処理(複素演算処理)を正規化処理も含めて1データ/サイクルの処理スループットで実現する高速化という2つの利点を、同時に実現できることである。
その理由は、以下の3点を実現していることの相乗効果によるものである。
1つ目は,ALUとして、種々の複素演算処理が可能で、1サイクルで1複素データ分を処理可能な複素演算器と、複素演算器とは並列に動作可能でパラメータ設定も可能なトレース回路を備えることにより、正規化処理を含めて変調/復調処理(複素演算処理)自体の柔軟性と高速性を実現している点である。
2つ目は、コプロセッサ演算処理とは独立して並列に動作するストリームアクセスを前提としたメモリコントローラやパイロットデータインタフェースを備えており、一般的には高速化が難しいプロセッサのメモリアクセスレイテンシを隠蔽できる点である。ここで、メモリコントローラ内の前処理回路もコプロセッサ処理とは独立して正規化処理が可能であることも高速化の観点で重要なポイントである。
3つ目は,並列に動作するALUとメモリコントローラやパイロットジェネレータの間で処理オーバヘッドが発生しないように、データを一時的に格納するFIFO、当該FIFOが空になったりFullになったりした場合でも、コプロセッサ側の処理が破綻しないようなWait制御機構を備えているためである。
上記3点の相乗効果により,柔軟性と高速性の両方を実現可能である。
第3の効果は、複数の無線通信方式における種々の変調/復調処理を、より低消費電力で、すなわち電力効率を高く実現できることである。
その理由は、上記の第1及び第2の実施の形態では、ALUが、複素加算処理、複素減算処理、複素乗算処理や複素積和演算処理、そしてこれら各々の複素共役演算処理等を1サイクルで1複素データ分の種々の複素演算処理を実現可能ではあるものの、回路構成としてはほとんど複素積和演算処理分の必要最小限の回路構成で実現しているためである。すなわち、一般的な複数の複素演算命令に対応できる程度の柔軟性を持たせているものの、例えば1複素データ/サイクルの処理スループットに限定した最小限の専用演算器構成とすることで、処理性能と消費電力とのバランスに優れた、電力効率の高いプロセッサシステムを実現可能である。
ここで、複素演算処理を含む一連の変調/復調処理を全て専用ハードウェア構成で実現する場合は、それぞれ処理データの繰り返し用の回路が必要であるが、上記の第1及び第2の実施の形態においては for文などの繰り返し処理は、制御用プロセッサ側に元々実装されているループ命令用のループ回路を共用して使用するため、コプロセッサ側には繰り返し制御用の回路は不要である(通常の命令や複数の変調/復調処理命令で共有可能)という利点もある。
また、処理量が膨大で、専用ハードウェア化した方が電力効率の高いFFT/IFFT処理や逆拡散処理(Despreading)、等化処理(イコライズ処理)や相関処理(Correlation)、パイロット信号生成処理(パイロットジェネレータ)については専用ハードウェア構成にて実現し、その他の変調/復調/同期処理については柔軟性を重視して複素演算処理プロセッサにて実現する、など、そのトレードオフに依存して全体のシステム構成を選択可能であり、電力効率を向上できることも本発明の利点である。
また、プロセッサシステムと各専用ハードウェア回路は並列動作可能なため、低いクロック周波数で動作させることで低消費電力化が可能という利点もある。
最後に、第4の効果は、複数の無線通信方式における種々の変調/復調処理において、将来的な仕様変更や仕様拡張にも柔軟に対応できることである。
その理由は、プロセッサシステムは、制御プロセッサと専用ハードウェア回路を組み合わせた構成ではなく、一般的な制御用プロセッサに対して複素演算処理用コプロセッサを接続することで実現したことにより、1サイクル単位で処理(命令)をソフトウェアにて指定可能なためである。すなわち、既存の無線通信方式における変調/復調処理の仕様変更により、その処理アルゴリズムや処理順序、処理パラメータが変更された場合や、仕様拡張により処理が追加された場合などにも、プロセッサのソフトウェア記述変更にて柔軟に対応できるという大きな利点がある。
なお、ALU部分は専用の複素演算処理回路となっているが、一連の変調/復調処理における処理データ単位やループ回数などは制御用プロセッサ内のループ命令(ループ回路)にて対応しているため、その部分(処理データ単位やループ回数など)の変更には元々の制御用プロセッサの機能で対応が可能である。
また、上記の第2の実施の形態で示したように、様々な正規化処理に対応できるような処理結果データのトレース回路(正規化係数の算出)や入力データの前処理回路(正規化処理)を実装することにより、仕様拡張や仕様変更により新たに正規化処理が必要な場合も柔軟に対応が可能という利点もある。
なお、上記の実施の形態によって本発明は限定されるものではなく、特許請求の範囲の記載に基づき、当業者によって種々の変更が可能なことは明らかである。
この出願は、2011年2月15日に出願された日本出願特願2011−029325を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、複素演算処理用コプロセッサ及びプロセッサシステムに適用され、特に無線通信に際して必要な各種の複素演算処理を実行する用途に適用される。
上記の実施の形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記1)
主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、
前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラと、を備え、
前記複素演算回路が、
前記メモリから順次読み出された第1の複素数データ系列に対する演算結果データを監視し、前記演算結果データに正規化処理を施すための正規化係数を検出するトレース回路、
を含む複素演算処理用コプロセッサ。
(付記2)付記1において、
前記メモリコントローラが、
前記メモリへの書込アドレスを自律的に発生する第1のアドレスジェネレータ回路と、
前記メモリからの読出アドレスを自律的に発生する第2のアドレスジェネレータ回路と、
前記演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第1のFIFO(First−In First−Out)と、
前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第2のFIFOと、
前記メモリと前記第2のFIFOの間に設けられ、前記正規化係数を用いて、前記メモリから第2の複素数データ系列として入力される前記演算結果データに正規化処理を施す前処理回路と、
を含むことを特徴とした複素演算処理用コプロセッサ。
(付記3)付記1又は2において、
パイロット信号データを格納するためのレジスタを、さらに備え、
前記複素演算回路が、前記レジスタを介して順次入力されるパイロット信号データ系列を、前記第1の複素数データ系列と共に前記複素演算に供することを特徴とした複素演算処理用コプロセッサ。
(付記4)付記1〜3のいずれか一つにおいて、
前記トレース回路が、
前記演算結果データ中の実数部を示すビット列及び虚数部を示すビット列各々を、負数を呈する場合に反転する反転回路と、
前記反転回路からの出力データに対して累積的な論理和演算を行い、前記論理和演算の結果を前記正規化係数の検出に供する累積論理和回路と、
を含むことを特徴とした複素演算処理用コプロセッサ。
(付記5)付記4において、
前記トレース回路が、
前記演算結果データの内から最小値を検出する検出回路と、
予め設定された動作モードに応じて、前記論理和演算の結果を前記正規化係数の検出に供するか、又は前記最小値を前記正規化係数として検出するかを選択する選択回路と、
をさらに含むことを特徴とした複素演算処理用コプロセッサ。
(付記6)付記1〜3のいずれか一つにおいて、
前記トレース回路が、前記演算結果データの内の最小値を、前記正規化係数として検出する検出回路を含むことを特徴とした複素演算処理用コプロセッサ。
(付記7)付記2において、
前記前処理回路が、
前記正規化処理として、前記演算結果データに対するシフト処理を行うシフト回路と、
前記シフト回路におけるシフト量を設定するための制御レジスタと、
を含むことを特徴とした複素演算処理用コプロセッサ。
(付記8)付記7において、
前記前処理回路が、
前記正規化処理として、前記演算結果データに対する減算処理を行う減算器と、
前記減算器における減算量と、前記シフト回路又は減算器のいずれを動作させるかを示す動作モードとを設定するための制御レジスタと、
を含むことを特徴とした複素演算処理用コプロセッサ。
(付記9)付記2において、
前記前処理回路が、
前記正規化処理として、前記演算結果データに対する減算処理を行う減算器と、
前記減算器における減算量を設定するための制御レジスタと、
を含むことを特徴とした複素演算処理用コプロセッサ。
(付記10)付記1〜9のいずれか一つにおいて、
前記メモリコントローラは、
前記メモリから読み出した一の複素数データを第1及び第2のレジスタへ格納し、
前記複素演算回路が前記第1のレジスタから前記一の複素数データを取得した場合に、前記第1及び第2のレジスタを前記メモリから読み出した次の複素数データで更新し、
前記複素演算回路が前記第2のレジスタから前記一の複素数データを取得した場合には、前記第1及び第2のレジスタを更新しない、
ことを特徴とする複素演算処理用コプロセッサ。
(付記11)
主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、
前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラと、を備え、
前記メモリコントローラが、
前記メモリへの書込アドレスを自律的に発生する第1のアドレスジェネレータ回路と、
前記メモリからの読出アドレスを自律的に発生する第2のアドレスジェネレータ回路と、
前記複素演算回路による演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第1のFIFOと、
前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第2のFIFOと、
前記メモリと前記第2のFIFOの間に設けられ、予め定められた正規化係数を用いて、前記複素数データ系列に正規化処理を施す前処理回路と、
を含む複素演算処理用コプロセッサ。
(付記12)付記2又は11において、
前記第1及び第2のアドレスジェネレータ回路各々が、
初期ポインタレジスタと、
ステップ数レジスタと、
メモリ長レジスタと、
前記初期ポインタレジスタの値をアドレスポインタの初期値として設定すると共に、アドレス発生の度毎に、前記アドレスポインタの値とステップ数レジスタの値との加算値を前記メモリ長レジスタの値で剰余演算した結果を次のアドレスポインタとして設定するアドレス演算器と、
を含むことを特徴とした複素演算処理用コプロセッサ。
(付記13)付記1〜12のいずれか一つに記載の複素演算処理用コプロセッサと、
前記複素演算処理用コプロセッサを命令によって制御する主プロセッサと、
を備えたプロセッサシステム。
10 制御用プロセッサ
11 複素演算処理用コプロセッサ
12 メモリセレクタ(マルチプレクサ型バスコントローラ)
13 プロセッサコントローラ
20 ローカルメモリコントローラ
21 共有メモリコントローラ
22 ALU
23 レジスタファイル
24 コントローラ
30 書込アドレスジェネレータ
31 書込データFIFO
40 読出アドレスジェネレータ
41 読出データFIFO
42, 43 前処理回路
50 複素算術演算器
51 複素論理演算器
60, 61 トレース回路
70 パイロットジェネレータ
100 プロセッサシステム
101 命令メモリ
102 ローカルメモリ(データメモリ)
103 インタフェース制御回路
104 FFT/IFFT処理エンジン
105, 203 共有メモリ
106 等化処理エンジン
200 モデムモジュール
201 CPU
202 リソースマネージャ
204 RFインタフェースモジュール
205 サーチモジュール
206 コーデックモジュール

Claims (10)

  1. 主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、
    前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラと、を備え、
    前記複素演算回路が、
    前記メモリから順次読み出された第1の複素数データ系列に対する演算結果データを監視し、前記演算結果データに正規化処理を施すための正規化係数を検出するトレース回路、
    を含む複素演算処理用コプロセッサ。
  2. 請求項1において、
    前記メモリコントローラが、
    前記メモリへの書込アドレスを自律的に発生する第1のアドレスジェネレータ回路と、
    前記メモリからの読出アドレスを自律的に発生する第2のアドレスジェネレータ回路と、
    前記演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第1のFIFO(First−In First−Out)と、
    前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第2のFIFOと、
    前記メモリと前記第2のFIFOの間に設けられ、前記正規化係数を用いて、前記メモリから第2の複素数データ系列として入力される前記演算結果データに正規化処理を施す前処理回路と、
    を含むことを特徴とした複素演算処理用コプロセッサ。
  3. 請求項1又は2において、
    パイロット信号データを格納するためのレジスタを、さらに備え、
    前記複素演算回路が、前記レジスタを介して順次入力されるパイロット信号データ系列を、前記第1の複素数データ系列と共に前記複素演算に供することを特徴とした複素演算処理用コプロセッサ。
  4. 請求項1〜3のいずれか一項において、
    前記トレース回路が、
    前記演算結果データ中の実数部を示すビット列及び虚数部を示すビット列各々を、負数を呈する場合に反転する反転回路と、
    前記反転回路からの出力データに対して累積的な論理和演算を行い、前記論理和演算の結果を前記正規化係数の検出に供する累積論理和回路と、
    を含むことを特徴とした複素演算処理用コプロセッサ。
  5. 請求項4において、
    前記トレース回路が、
    前記演算結果データの内から最小値を検出する検出回路と、
    予め設定された動作モードに応じて、前記論理和演算の結果を前記正規化係数の検出に供するか、又は前記最小値を前記正規化係数として検出するかを選択する選択回路と、
    をさらに含むことを特徴とした複素演算処理用コプロセッサ。
  6. 請求項2において、
    前記前処理回路が、
    前記正規化処理として、前記演算結果データに対するシフト処理を行うシフト回路と、
    前記シフト回路におけるシフト量を設定するための制御レジスタと、
    を含むことを特徴とした複素演算処理用コプロセッサ。
  7. 請求項6において、
    前記前処理回路が、
    前記正規化処理として、前記演算結果データに対する減算処理を行う減算器と、
    前記減算器における減算量と、前記シフト回路又は減算器のいずれを動作させるかを示す動作モードとを設定するための制御レジスタと、
    を含むことを特徴とした複素演算処理用コプロセッサ。
  8. 請求項1〜7のいずれか一項において、
    前記メモリコントローラは、
    前記メモリから読み出した一の複素数データを第1及び第2のレジスタへ格納し、
    前記複素演算回路が前記第1のレジスタから前記一の複素数データを取得した場合に、前記第1及び第2のレジスタを前記メモリから読み出した次の複素数データで更新し、
    前記複素演算回路が前記第2のレジスタから前記一の複素数データを取得した場合には、前記第1及び第2のレジスタを更新しない、
    ことを特徴とする複素演算処理用コプロセッサ。
  9. 主プロセッサからの命令に従い、複素数データに対して無線通信に必要な複素演算を実行する複素演算回路と、
    前記複素演算回路と並列に動作し、メモリに対するアクセスを行うメモリコントローラと、を備え、
    前記メモリコントローラが、
    前記メモリへの書込アドレスを自律的に発生する第1のアドレスジェネレータ回路と、
    前記メモリからの読出アドレスを自律的に発生する第2のアドレスジェネレータ回路と、
    前記複素演算回路による演算結果データを一時的に格納し、前記書込アドレスに同期して前記メモリへ出力する第1のFIFOと、
    前記読出アドレスに同期して前記メモリから入力される複素数データ系列を一時的に格納し、前記複素演算回路へ順次出力する第2のFIFOと、
    前記メモリと前記第2のFIFOの間に設けられ、予め定められた正規化係数を用いて、前記複素数データ系列に正規化処理を施す前処理回路と、
    を含む複素演算処理用コプロセッサ。
  10. 請求項1〜9のいずれか一項に記載の複素演算処理用コプロセッサと、
    前記複素演算処理用コプロセッサを命令によって制御する主プロセッサと、
    を備えたプロセッサシステム。
JP2012557668A 2011-02-15 2011-09-15 複素演算処理用コプロセッサ及びプロセッサシステム Active JP5920226B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011029325 2011-02-15
JP2011029325 2011-02-15
PCT/JP2011/005222 WO2012111053A1 (ja) 2011-02-15 2011-09-15 複素演算処理用コプロセッサ及びプロセッサシステム

Publications (2)

Publication Number Publication Date
JPWO2012111053A1 true JPWO2012111053A1 (ja) 2014-07-03
JP5920226B2 JP5920226B2 (ja) 2016-05-18

Family

ID=46672019

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012557668A Active JP5920226B2 (ja) 2011-02-15 2011-09-15 複素演算処理用コプロセッサ及びプロセッサシステム

Country Status (3)

Country Link
US (1) US9383994B2 (ja)
JP (1) JP5920226B2 (ja)
WO (1) WO2012111053A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016537724A (ja) * 2013-11-15 2016-12-01 クゥアルコム・インコーポレイテッドQualcomm Incorporated ベクトル処理動作のために実行ユニットに入力ベクトルデータのインフライトフォーマット変換を提供するためにベクトルデータメモリと実行ユニットとの間でデータフローパスにおいてフォーマット変換回路を利用するベクトル処理エンジン(vpe)および関連するベクトル処理システムと方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6191172B2 (ja) * 2013-03-12 2017-09-06 日本電気株式会社 メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。
CN103793208B (zh) * 2014-01-22 2016-07-06 芯原微电子(上海)有限公司 矢量dsp处理器和协处理器协同运作的数据处理系统
US9710398B2 (en) * 2014-11-18 2017-07-18 International Business Machines Corporation RE-MRU of metadata tracks to reduce lock contention
KR101805866B1 (ko) 2016-11-09 2017-12-07 피앤피넷 주식회사 소프트웨어 디파인드 라디오를 위한 전자 장치 및 그 스케줄링 방법
KR101856006B1 (ko) * 2016-11-09 2018-05-09 피앤피넷 주식회사 소프트웨어 디파인드 라디오를 위한 메모리 구조
JP6863907B2 (ja) * 2018-01-05 2021-04-21 日本電信電話株式会社 演算回路
US10733141B2 (en) * 2018-03-27 2020-08-04 Analog Devices, Inc. Distributed processor system
US11138009B2 (en) * 2018-08-10 2021-10-05 Nvidia Corporation Robust, efficient multiprocessor-coprocessor interface
CN110245096B (zh) * 2019-06-24 2023-07-25 苏州暴雪电子科技有限公司 一种实现处理器直接连接扩展计算模块的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01116730A (ja) 1987-10-30 1989-05-09 Mitsubishi Electric Corp デイジタル信号処理プロセツサ
JP3523008B2 (ja) * 1997-04-01 2004-04-26 株式会社東芝 測角演算回路
JP2002208878A (ja) * 2001-01-05 2002-07-26 Matsushita Electric Ind Co Ltd プリアンブル受信装置及びプリアンブル受信方法
JP2003016051A (ja) * 2001-06-29 2003-01-17 Nec Corp 複素ベクトル演算プロセッサ
JP4588931B2 (ja) 2001-07-05 2010-12-01 株式会社東芝 移動無線端末
DE60230794D1 (de) 2001-11-20 2009-02-26 Mediatek Inc Verfahren und vorrichtungen zur spreizspektrum-signalverarbeitung unter verwendung eines unkonfigurierbaren koprozessors
US7149257B2 (en) * 2003-07-03 2006-12-12 Powerwave Technologies, Inc. Digital predistortion system and method for correcting memory effects within an RF power amplifier
JP2006262322A (ja) * 2005-03-18 2006-09-28 Japan Radio Co Ltd 通信装置
CN101243423B (zh) 2005-08-22 2011-07-06 英特尔公司 具有物理层可重配置处理引擎的无线通信装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016537724A (ja) * 2013-11-15 2016-12-01 クゥアルコム・インコーポレイテッドQualcomm Incorporated ベクトル処理動作のために実行ユニットに入力ベクトルデータのインフライトフォーマット変換を提供するためにベクトルデータメモリと実行ユニットとの間でデータフローパスにおいてフォーマット変換回路を利用するベクトル処理エンジン(vpe)および関連するベクトル処理システムと方法

Also Published As

Publication number Publication date
WO2012111053A1 (ja) 2012-08-23
US20130318329A1 (en) 2013-11-28
JP5920226B2 (ja) 2016-05-18
US9383994B2 (en) 2016-07-05

Similar Documents

Publication Publication Date Title
JP5920226B2 (ja) 複素演算処理用コプロセッサ及びプロセッサシステム
EP3031137B1 (en) Method and apparatus for asynchronous processor based on clock delay adjustment
KR101334860B1 (ko) 고속 회전 연산들을 수행하기 위한 시스템 및 방법
JP2009505215A (ja) 複素ベクトル命令を実行するように構成されるクラスタードsimdマイクロ・アーキテクチャを含むプログラマブル・デジタル信号プロセッサ
US11216276B2 (en) Controlling power state demotion in a processor
US20160054995A1 (en) Single-instruction multiple data processor
US10754818B2 (en) Multiprocessor device for executing vector processing commands
CN115048326A (zh) 用于管理总线通信协议的选择
US20190101969A1 (en) Control Blocks for Processor Power Management
US11188138B2 (en) Hardware unit for controlling operating frequency in a processor
US20170099167A1 (en) System and method for multi-threaded ofdm channel equalizer with coprocessor
WO2015040060A1 (en) Instruction class for digital signal processors
US9274752B2 (en) Leading change anticipator logic
JP2007200180A (ja) プロセッサシステム
US20230103206A1 (en) Caching based on branch instructions in a processor
US20130254516A1 (en) Arithmetic processing unit
US20140122553A1 (en) Vector NCO and Twiddle Factor Generator
CN114661346A (zh) 用于平方差之和的指令和逻辑
Huang et al. A 1.1 G MAC/s sub-word-parallel digital signal processor for wireless communication applications
Nouri et al. Implementation of IEEE-802.11 a/g receiver blocks on a coarse-grained reconfigurable array
CN118276951B (zh) 基于risc-v的指令扩展方法及实现装置
Le-Huu et al. Towards a RISC instruction set architecture for the 32-bit VLIW DSP processor core
JP6191172B2 (ja) メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。
US20220413720A1 (en) Power Limits for Virtual Partitions in a Processor
US11354213B2 (en) Utilization metrics for processing engines

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160328

R150 Certificate of patent or registration of utility model

Ref document number: 5920226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150