(57)【要約】【課題】小面積で高速に行列演算及び高速フーリエ変換を行うことができる処理装置を提供することを課題とする。【解決手段】処理装置は、行列演算処理命令が入力されると、演算部が行列演算を行うように制御し、高速フーリエ変換が複数のステージの処理に分割された複数の高速フーリエ変換ステージ処理命令が入力されると、演算部が高速フーリエ変換処理をステージ単位で行うように制御するコントローラを有し、コントローラは、演算部が高速フーリエ変換のあるステージの処理を実行している最中に行列演算処理命令が入力された場合に、演算部が実行している高速フーリエ変換のステージの処理が終了すると、演算部に行列演算処理命令に対応する行列演算処理を実行させ、演算部が行列演算処理を終了すると、終了した高速フーリエ変換のステージの次のステージの処理を演算部に実行させる。【選択図】図７
2016045703.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するメモリと、
データの演算を行う演算部と、
前記メモリに記憶されているデータを前記演算部の入力端子に出力し、前記演算部の出力端子のデータを前記メモリに書き込むメモリコントローラと、
行列演算処理命令が入力されると、前記演算部が行列演算を行うように制御し、高速フーリエ変換が複数のステージの処理に分割された複数の高速フーリエ変換ステージ処理命令が入力されると、前記演算部が前記高速フーリエ変換処理をステージ単位で行うように制御するコントローラとを有し、
前記コントローラは、前記演算部が前記高速フーリエ変換のあるステージの処理を実行している最中に前記行列演算処理命令が入力された場合に、前記演算部が実行している前記高速フーリエ変換のステージの処理が終了すると、前記演算部に前記行列演算処理命令に対応する行列演算処理を実行させ、前記演算部が前記行列演算処理を終了すると、前記終了した高速フーリエ変換のステージの次のステージの処理を前記演算部に実行させる処理装置。
【請求項２】
さらに、前記メモリコントローラを介して前記メモリからデータが入力され、前記演算部の第１の入力端子にデータを出力する第１のファーストインファーストアウトメモリと、
前記メモリコントローラを介して前記メモリからデータが入力され、前記演算部の第２の入力端子にデータを出力する第２のファーストインファーストアウトメモリと、
前記演算部の第１の出力端子のデータが入力され、前記メモリコントローラを介して前記メモリにデータを出力する第３のファーストインファーストアウトメモリと、
前記演算部の第２の出力端子のデータが入力され、前記メモリコントローラを介して前記メモリにデータを出力する第４のファーストインファーストアウトメモリとを有することを特徴とする請求項１記載の処理装置。
【請求項３】
前記メモリコントローラは、前記高速フーリエ変換の１個のステージのデータを複数のデータの組みに分割し、前記分割された複数のデータの組みを順に前記メモリから前記第１及び第２のファーストインファーストアウトメモリに出力することを特徴とする請求項２記載の処理装置。
【請求項４】
さらに、前記演算部の前記第１及び第２の出力端子のデータを入力し、前記高速フーリエ変換の各ステージに応じて、前記入力したデータの位置を入れ替えて前記第３及び第４のファーストインファーストアウトメモリに出力するスイッチを有することを特徴とする請求項２又は３記載の処理装置。
【請求項５】
前記スイッチは、前記演算部の出力データを入力し、前記行列演算命令に応じて、前記演算部の出力データを選択し、前記選択したデータを出力することを特徴とする請求項４記載の処理装置。
【請求項６】
前記メモリコントローラは、前記高速フーリエ変換の各ステージに応じて、前記第３及び第４のファーストインファーストアウトメモリの出力データを前記メモリの異なるアドレスに書き込むことを特徴とする請求項２〜５のいずれか１項に記載の処理装置。
【請求項７】
データを記憶するメモリと、
データの演算を行う演算部と、
前記メモリに記憶されているデータを前記演算部の入力端子に出力し、前記演算部の出力端子のデータを前記メモリに書き込むメモリコントローラと、
行列演算処理命令が入力されると、前記演算部が行列演算を行うように制御し、高速フーリエ変換が複数のステージの処理に分割された複数の高速フーリエ変換ステージ処理命令が入力されると、前記演算部が前記高速フーリエ変換処理をステージ単位で行うように制御するコントローラとを有する処理装置の処理方法であって、
前記演算部が前記高速フーリエ変換のあるステージの処理を実行している最中に前記行列演算処理命令が入力された場合に、前記演算部が実行している前記高速フーリエ変換のステージの処理が終了すると、前記演算部が前記行列演算処理命令に対応する行列演算処理を実行し、
前記演算部が前記行列演算処理を終了すると、前記終了した高速フーリエ変換のステージの次のステージの処理を前記演算部が実行する処理装置の処理方法。
【請求項８】
データを記憶するメモリと、
データの演算を行う演算部と、
前記メモリに記憶されているデータを前記演算部の入力端子に出力し、前記演算部の出力端子のデータを前記メモリに書き込むメモリコントローラとを有する処理装置を制御するコンピュータに実行させるプログラムであって、
行列演算処理命令が入力されると、前記演算部が行列演算を行うように制御し、高速フーリエ変換が複数のステージの処理に分割された複数の高速フーリエ変換ステージ処理命令が入力されると、前記演算部が前記高速フーリエ変換処理をステージ単位で行うように制御する処理をコンピュータに実行させるプログラムであって、
前記演算部が前記高速フーリエ変換のあるステージの処理を実行している最中に前記行列演算処理命令が入力された場合に、前記演算部が実行している前記高速フーリエ変換のステージの処理が終了すると、前記演算部に前記行列演算処理命令に対応する行列演算処理を実行させ、
前記演算部が前記行列演算処理を終了すると、前記終了した高速フーリエ変換のステージの次のステージの処理を前記演算部に実行させる、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置、処理装置の処理方法及びプログラムに関する。
【背景技術】
【０００２】
プロセッサにおいて高速フーリエ変換演算用のバタフライ演算を実施するための方法が知られている（特許文献１参照）。バタフライ演算に対する第１組の入力がｒ１＋ｊｉ１及びｒ２＋ｊｉ２であり、回転因子ＷｎがＷｎ＝ｅ-j2π/N＝ｃｏｓ（２π／Ｎ）−ｊｓｉｎ（２π／Ｎ）＝ａ＋ｊｂと表され、バタフライ演算が第１組のレジスタにｒ１、ｉ１、ｒ２及びｉ２を格納するステップが行われる。回転因子を行列レジスタに格納するステップが行われる。行列レジスタと第１組のレジスタとの間で第１の行列ベクトル乗算演算を実行するステップが行われる。
【０００３】
また、フーリエ変換を実行するために改良された処理エンジンが知られている（特許文献２参照）。命令プロセッサは、シーケンシャルな命令ソフトウェア・コマンドを処理する。フーリエ変換エンジンは、命令プロセッサに接続され、連続したデータのストリームについて、フーリエ変換を実行する。フーリエ変換エンジンは、命令プロセッサから、ソフトウェア・タスクのセットを介して、設定情報及び演算データを受け取る。
【０００４】
また、バタフライ演算装置が知られている（特許文献３参照）。第１及び第２の乗算器は、並列に設けられる。第１の加減算器は、第１及び第２の乗算器の出力に動作的に接続される。第２及び第３の加減算器は、第１の加減算器の出力に動作的に接続され、並列に配置される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２８５１０５号公報
【特許文献２】特表２０１１−５１６９４９号公報
【特許文献３】特開２００３−１６０５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
無線通信のベースバンド処理では、行列演算及び高速フーリエ変換（ＦＦＴ）が必須である。行列演算及び高速フーリエ変換に対してそれぞれアクセラレータを設計し、それらの処理を同時かつ高速に実行する。しかし、近年、ベースバンド処理における行列演算の量が著しく増加したことにより、行列演算アクセラレータの回路面積が増加してしまい、行列演算アクセラレータ及び高速フーリエ変換アクセラレータを並置する構成では、携帯機器向けの半導体チップに実装可能な回路面積を満たすことができなくなってきたという課題がある。
【０００７】
本発明の目的は、小面積で高速に行列演算及び高速フーリエ変換を行うことができる処理装置、処理装置の処理方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
処理装置は、データを記憶するメモリと、データの演算を行う演算部と、前記メモリに記憶されているデータを前記演算部の入力端子に出力し、前記演算部の出力端子のデータを前記メモリに書き込むメモリコントローラと、行列演算処理命令が入力されると、前記演算部が行列演算を行うように制御し、高速フーリエ変換が複数のステージの処理に分割された複数の高速フーリエ変換ステージ処理命令が入力されると、前記演算部が前記高速フーリエ変換処理をステージ単位で行うように制御するコントローラとを有し、前記コントローラは、前記演算部が前記高速フーリエ変換のあるステージの処理を実行している最中に前記行列演算処理命令が入力された場合に、前記演算部が実行している前記高速フーリエ変換のステージの処理が終了すると、前記演算部に前記行列演算処理命令に対応する行列演算処理を実行させ、前記演算部が前記行列演算処理を終了すると、前記終了した高速フーリエ変換のステージの次のステージの処理を前記演算部に実行させる。
【発明の効果】
【０００９】
小面積で高速に行列演算及び高速フーリエ変換を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、行列演算アクセラレータ及び高速フーリエ変換（ＦＦＴ）アクセラレータの構成例を示す図である。
【図２】図２は、本実施形態による行列演算及びＦＦＴアクセラレータの構成例を示す図である。
【図３】図３（Ａ）及び（Ｂ）は、高速フーリエ変換を行うためのバタフライ演算を示す図である。
【図４】図４は、バタフライ演算による高速フーリエ変換の例を示す図である。
【図５】図５（Ａ）及び（Ｂ）は、バタフライ演算器を示す図である。
【図６】図６（Ａ）〜（Ｃ）は、行列演算処理及びＦＦＴ処理の例を示す図である。
【図７】図７（Ａ）〜（Ｃ）は、行列演算処理及びＦＦＴ処理の例を示す図である。
【図８】図８は、行列データの例を示す図である。
【図９】図９（Ａ）及び（Ｂ）は、行列演算を行う場合のスイッチの処理例を示す図である。
【図１０】図１０（Ａ）及び（Ｂ）は、ＦＦＴを行うバタフライ演算器及びスイッチの第１及び第２のステージの処理例を示す図である。
【図１１】図１１（Ａ）及び（Ｂ）は、ＦＦＴを行うバタフライ演算器及びスイッチの第３及び第４のステージの処理例を示す図である。
【図１２】図１２は、ＦＦＴを行うバタフライ演算器及びスイッチの第５〜第９のステージの処理例を示す図である。
【図１３】図１３は、行列演算及びＦＦＴアクセラレータの一部の構成例を示す図である。
【図１４】図１４（Ａ）及び（Ｂ）は、第１〜第５のステージにおけるメモリコントローラの読み出しアドレス及び書き込みアドレスを示す図である。
【図１５】図１５（Ａ）及び（Ｂ）は、第６のステージにおけるメモリコントローラの読み出しアドレス及び書き込みアドレスを示す図である。
【図１６】図１６（Ａ）及び（Ｂ）は、第７のステージにおけるメモリコントローラの読み出しアドレス及び書き込みアドレスを示す図である。
【図１７】図１７（Ａ）及び（Ｂ）は、第８のステージにおけるメモリコントローラの読み出しアドレス及び書き込みアドレスを示す図である。
【図１８】図１８（Ａ）及び（Ｂ）は、第９のステージにおけるメモリコントローラの読み出しアドレス及び書き込みアドレスを示す図である。
【図１９】図１９は、無線通信装置の構成例を示す図である。
【発明を実施するための形態】
【００１１】
図１は、行列演算アクセラレータ１００及び高速フーリエ変換（ＦＦＴ）アクセラレータ１２０の構成例を示す図である。行列演算アクセラレータ１００は行列演算を行い、ＦＦＴアクセラレータ１２０は高速フーリエ変換を行う。例えば、行列演算アクセラレータ１００及びＦＦＴアクセラレータ１２０は、無線通信装置内に設けられる。
【００１２】
行列演算アクセラレータ１００は、コントローラ１０１、入力バッファ１０２、演算部１０３、出力バッファ１０４、メモリコントローラ１０５、及びメモリ１０６を有する。コントローラ１０１は、外部から行列演算命令を入力し、行列演算命令に応じて、入力バッファ１０２、演算部１０３、出力バッファ１０４及びメモリコントローラ１０５を制御する。入力バッファ１０２は、第１のファーストインファーストアウト（ＦＩＦＯ）メモリ１０７及び第２のＦＩＦＯメモリ１０８を有する。演算部１０３は、複数の算出論理演算ユニット（ＡＬＵ）１０９及びスイッチ１１０を有する。出力バッファ１０４は、第３のＦＩＦＯメモリ１１１及び第４のＦＩＦＯメモリ１１２を有する。
【００１３】
メモリ１０６には、複数の行列データが記憶されている。メモリコントローラ１０５は、メモリ１０６から行列データを読み出し、第１のＦＩＦＯメモリ１０７及び第２のＦＩＦＯメモリ１０８に出力する。第１のＦＩＦＯメモリ１０７及び第２のＦＩＦＯメモリ１０８は、それぞれ、ファーストインファーストアウトにより、行列データを複数のＡＬＵ１０９に出力する。複数のＡＬＵ１０９は、例えば行列の四則演算等の行列演算を行う。スイッチ１１０は、複数のＡＬＵ１０９の出力データを選択的に第３のＦＩＦＯメモリ１１１及び第４のＦＩＦＯメモリ１１２に出力する。例えば、行列データが複素数データである場合、スイッチ１１０は、複素数データのうちの実数データ又は虚数データを選択して出力することができる。第３のＦＩＦＯメモリ１１１及び第４のＦＩＦＯメモリ１１２は、それぞれ、ファーストインファーストアウトにより、行列データをメモリコントローラ１０５に出力する。メモリコントローラ１０５は、第３のＦＩＦＯメモリ１１１及び第４のＦＩＦＯメモリ１１２の出力データをメモリ１０６に書き込む。
【００１４】
ＦＦＴアクセラレータ１２０は、コントローラ１２１、入力スイッチ１２２、メモリ１２３、バタフライ演算器１２４、出力スイッチ１２５、メモリコントローラ１２６、及びメモリ１２７を有する。コントローラ１０１は、外部からＦＦＴ命令を入力し、ＦＦＴ命令に応じて、入力スイッチ１２２、メモリ１２３、バタフライ演算器１２４、出力スイッチ１２５、及びメモリコントローラ１２６を制御する。
【００１５】
メモリ１２７には、高速フーリエ変換をするためのデータが記憶されている。メモリコントローラ１２６は、メモリ１２７からデータを読み出し、入力スイッチ１２２に出力する。入力スイッチ１２２は、データの位置を入れ替えてバタフライ演算器１２４に出力する。メモリ１２３には、回転因子データＷnが記憶されている。バタフライ演算器１２４は、入力スイッチ１２２から入力したデータ及びメモリ１２３から入力した回転因子データＷnを基にバタフライ演算を行い、データを出力スイッチ１２５に出力する。出力スイッチ１２５は、データの位置を入れ替えてメモリコントローラ１２６に出力する。メモリコントローラ１２６は、出力スイッチ１２５の出力データをメモリ１２７に書き込む。
【００１６】
図１９は、本実施形態による無線通信装置１９０１の構成例を示す図である。無線通信装置１９０１は、ベースバンド処理装置１９０２を有する。ベースバンド処理装置１９０２は、行列演算及びＦＦＴアクセラレータ２００を有する。
【００１７】
図２は、本実施形態による行列演算及びＦＦＴアクセラレータ２００の構成例を示す図である。行列演算及びＦＦＴアクセラレータ２００は、図１の行列演算アクセラレータ１００の機能及びＦＦＴアクセラレータ１２０の両方の機能を有し、行列演算及び高速フーリエ変換を行うことができる。行列演算及びＦＦＴアクセラレータ２００は、図１の行列演算アクセラレータ１００及びＦＦＴアクセラレータ１２０に対して、ハードウェアを共有化することにより、面積を小さくすることができる。すなわち、行列演算及びＦＦＴアクセラレータ２００は、図１の行列演算アクセラレータ１００に対してメモリ２０３を追加した構成であり、メモリ２０３以外のハードウェアを共有することができる。
【００１８】
行列演算及びＦＦＴアクセラレータ２００は、処理装置であり、コントローラ２０１、入力バッファ２０２、メモリ２０３、演算部２０４、出力バッファ２０５、メモリコントローラ２０６、及びメモリ２０７を有する。コントローラ２０１は、外部から命令を入力し、命令に応じて、入力バッファ２０２、メモリ２０３、演算部２０４、出力バッファ２０５及びメモリコントローラ２０６を制御する。入力バッファ２０２は、第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９を有する。演算部２０４は、複数のＡＬＵ２１０及びスイッチ２１１を有する。出力バッファ２０５は、第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３を有する。メモリ２０７には、複数の行列データ及び高速フーリエ変換のためのデータが記憶される。
【００１９】
まず、行列演算及びＦＦＴアクセラレータ２００が行列演算を行う場合を説明する。メモリコントローラ２０６は、メモリ２０７から行列データを読み出し、第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に出力する。第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９は、それぞれ、ファーストインファーストアウトにより、行列データを複数のＡＬＵ２１０に出力する。複数のＡＬＵ２１０は、例えば行列の四則演算等の行列演算を行う。スイッチ２１１は、複数のＡＬＵ２１０の出力データを選択的に第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３に出力する。例えば、行列データが複素数データである場合、スイッチ２１１は、複素数データのうちの実数データ又は虚数データを選択して出力することができる。第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３は、それぞれ、ファーストインファーストアウトにより、行列データをメモリコントローラ２０６に出力する。メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３の出力データをメモリ２０７に書き込む。
【００２０】
次に、図３（Ａ）及び（Ｂ）等を参照しながら、行列演算及びＦＦＴアクセラレータ２００が高速フーリエ変換する処理を説明する。
【００２１】
図３（Ａ）は、高速フーリエ変換を行うためのバタフライ演算の記号を示す図である。バタフライ演算は、第１の入力データＸ１及び第２の入力データＸ２を入力し、下記の演算を行い、第１の出力データＹ１及び第２の出力データＹ２を出力する。ここで、Ｗnは回転因子データであり、Ｎは高速フーリエ変換のデータ数である。
Ｙ１＝Ｘ１＋Ｘ２×Ｗn
Ｙ２＝Ｘ１−Ｘ２×Ｗn
Ｗn＝ｅｘｐ（−２πｊ×ｎ／Ｎ）
【００２２】
図３（Ｂ）は、バタフライ演算器ＥＸの構成例を示す図である。バタフライ演算器ＥＸは、ＡＬＵ３０１及び３０２を有する。ＡＬＵ３０１及び３０２は、図２のＡＬＵ２１０に対応する。ＡＬＵ２１０は、複数のバタフライ演算器ＥＸを構成することができる。回転因子データＷnは、図２のメモリ２０３に記憶されている。ＡＬＵ３０１は、第２の入力データＸ２及び回転因子データＷnの乗算を行い、データＸ２×Ｗnを出力する。ＡＬＵ３０２は、第１の入力データＸ１及びＡＬＵ３０１の出力データを入力し、加算による第１の出力データＹ１及び減算による第２の出力データＹ２を出力する。
【００２３】
図２において、１個のバタフライ演算を行う場合を説明する。メモリコントローラ２０６は、メモリ２０７から第１の入力データＸ１及び第２の入力データＸ２を読み出し、第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９を介して、ＡＬＵ２１０に第１の入力データＸ１及び第２の入力データＸ２を出力する。メモリ２０３は、回転因子データＷnをＡＬＵ２１０に出力する。ＡＬＵ２１０は、第１の入力データＸ１、第２の入力データＸ２及び回転因子データＷnを基にバタフライ演算を行い、第１の出力データＹ１及び第２の出力データＹ２を、第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３を介して、メモリコントローラ２０６に出力する。メモリコントローラ２０６は、第１の出力データＹ１及び第２の出力データＹ２をメモリ２０７に書き込む。
【００２４】
図４は、バタフライ演算による高速フーリエ変換の例を示す図であり、図５（Ａ）の１６個のバタフライ演算器ＥＸ１〜ＥＸ１６により行われる。バタフライ演算器ＥＸ１〜ＥＸ１６は、それぞれ、図３（Ａ）のバタフライ演算器ＥＸに対応し、図２のＡＬＵ２１０により構成される。高速フーリエ変換のポイント数は３２の場合、第１〜第５のステージを実行することにより、高速フーリエ変換が完了する。
【００２５】
第１のステージでは、３２個の入力データがメモリ２０７から入力バッファ２０２を介してバタフライ演算器ＥＸ１〜ＥＸ１６に入力される。バタフライ演算器ＥＸ１〜ＥＸ１６は、３２個のデータを入力し、３２個のデータを出力する。例えば、バタフライ演算器ＥＸ１は、０番目の入力データ及び１６番目の入力データを基にバタフライ演算を行い、０番目の出力データ及び１番目の出力データを出力する。バタフライ演算器ＥＸ２は、８番目の入力データ及び２４番目の入力データを基にバタフライ演算を行い、１６番目の出力データ及び１７番目の出力データを出力する。バタフライ演算器ＥＸ１〜ＥＸ１６が出力する３２個のデータは、スイッチ２１１及び出力バッファ２０５を介して、メモリ２０７に書き込まれる。この３２個のデータが第２のステージの入力データになる。
【００２６】
第２のステージでは、３２個の入力データがメモリ２０７から入力バッファ２０２を介してバタフライ演算器ＥＸ１〜ＥＸ１６に入力される。バタフライ演算器ＥＸ１〜ＥＸ１６は、３２個のデータを入力し、３２個のデータを出力する。例えば、バタフライ演算器ＥＸ１は、０番目の入力データ及び１６番目の入力データを基にバタフライ演算を行い、０番目の出力データ及び２番目の出力データを出力する。バタフライ演算器ＥＸ２は、１番目の入力データ及び１７番目の入力データを基にバタフライ演算を行い、１番目の出力データ及び３番目の出力データを出力する。バタフライ演算器ＥＸ１〜ＥＸ１６が出力する３２個のデータは、スイッチ２１１及び出力バッファ２０５を介して、メモリ２０７に書き込まれる。この３２個のデータが第３のステージの入力データになる。
【００２７】
第３のステージでは、３２個の入力データがメモリ２０７から入力バッファ２０２を介してバタフライ演算器ＥＸ１〜ＥＸ１６に入力される。バタフライ演算器ＥＸ１〜ＥＸ１６は、３２個のデータを入力し、３２個のデータを出力する。例えば、バタフライ演算器ＥＸ１は、０番目の入力データ及び１６番目の入力データを基にバタフライ演算を行い、０番目の出力データ及び４番目の出力データを出力する。バタフライ演算器ＥＸ２は、１番目の入力データ及び１７番目の入力データを基にバタフライ演算を行い、１番目の出力データ及び５番目の出力データを出力する。バタフライ演算器ＥＸ１〜ＥＸ１６が出力する３２個のデータは、スイッチ２１１及び出力バッファ２０５を介して、メモリ２０７に書き込まれる。この３２個のデータが第４のステージの入力データになる。
【００２８】
第４のステージでは、３２個の入力データがメモリ２０７から入力バッファ２０２を介してバタフライ演算器ＥＸ１〜ＥＸ１６に入力される。バタフライ演算器ＥＸ１〜ＥＸ１６は、３２個のデータを入力し、３２個のデータを出力する。例えば、バタフライ演算器ＥＸ１は、０番目の入力データ及び１６番目の入力データを基にバタフライ演算を行い、０番目の出力データ及び８番目の出力データを出力する。バタフライ演算器ＥＸ２は、１番目の入力データ及び１７番目の入力データを基にバタフライ演算を行い、１番目の出力データ及び９番目の出力データを出力する。バタフライ演算器ＥＸ１〜ＥＸ１６が出力する３２個のデータは、スイッチ２１１及び出力バッファ２０５を介して、メモリ２０７に書き込まれる。この３２個のデータが第５のステージの入力データになる。
【００２９】
第５のステージでは、３２個の入力データがメモリ２０７から入力バッファ２０２を介してバタフライ演算器ＥＸ１〜ＥＸ１６に入力される。バタフライ演算器ＥＸ１〜ＥＸ１６は、３２個のデータを入力し、３２個のデータを出力する。例えば、バタフライ演算器ＥＸ１は、０番目の入力データ及び１６番目の入力データを基にバタフライ演算を行い、０番目の出力データ及び１６番目の出力データを出力する。バタフライ演算器ＥＸ２は、１番目の入力データ及び１７番目の入力データを基にバタフライ演算を行い、１番目の出力データ及び１７番目の出力データを出力する。バタフライ演算器ＥＸ１〜ＥＸ１６が出力する３２個のデータは、スイッチ２１１及び出力バッファ２０５を介して、メモリ２０７に書き込まれる。この３２個のデータが高速フーリエ変換の最終データになる。
【００３０】
図２のＡＬＵ２１０の個数は、有限である。ＡＬＵ２１０が図５（Ａ）のように１６個のバタフライ演算器ＥＸ１〜ＥＸ１６を構成する場合には、上記のように、各ステージを１サイクルで実行可能である。例えば、第３のステージでは、１６個のバタフライ演算器ＥＸ１〜ＥＸ１６は、１６個のバタフライ演算４０１を１サイクルで実行する。
【００３１】
これに対し、ＡＬＵ２１０が図５（Ｂ）のように８個のバタフライ演算器ＥＸ１〜ＥＸ８を構成する場合には、各ステージを２サイクルで実行する。例えば、第３のステージの場合、第１のサイクルでは、８個のバタフライ演算器ＥＸ１〜ＥＸ８は、上側の８個のバタフライ演算４０２を実行し、第２のサイクルでは、８個のバタフライ演算器ＥＸ１〜ＥＸ８は、下側の８個のバタフライ演算４０３を実行する。
【００３２】
本実施形態によれば、行列演算に使用するＡＬＵ２１０の個数で、任意のＦＦＴデータ数の高速フーリエ変換を行うことができる。すなわち、メモリコントローラ２０６は、高速フーリエ変換の１個のステージのデータを複数のデータの組みに分割し、分割された複数のデータの組みを順にメモリ２０７から第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に出力する。これにより、各ステージを複数サイクルで実行する。
【００３３】
図６（Ａ）は、図１の行列演算アクセラレータ１００及びＦＦＴアクセラレータ１２０の処理例を示す図である。ＦＦＴアクセラレータ１２０は、時刻ｔ１で第１のＦＦＴ命令が入力されると、時刻ｔ１〜ｔ３でＦＦＴ処理Ｐｆ１を行う。行列演算アクセラレータ１００は、時刻ｔ２で第１の行列演算命令が入力されると、時刻ｔ２〜ｔ３で行列演算処理Ｐｍ１を行う。ＦＦＴアクセラレータ１２０は、時刻ｔ３で第２のＦＦＴ命令が入力されると、時刻ｔ３〜ｔ５でＦＦＴ処理Ｐｆ２を行う。行列演算アクセラレータ１００は、時刻ｔ４で第２の行列演算命令が入力されると、時刻ｔ４〜ｔ５で行列演算処理Ｐｍ２を行う。ＦＦＴアクセラレータ１２０は、時刻ｔ５で第３のＦＦＴ命令が入力されると、時刻ｔ５〜ｔ６でＦＦＴ処理Ｐｆ３を行う。行列演算処理Ｐｍ１は、ＦＦＴ処理Ｐｆ１に対して並列に行われる。行列演算処理Ｐｍ２は、ＦＦＴ処理Ｐｆ２に対して並列に行われる。
【００３４】
これに対し、図２の行列演算及びＦＦＴアクセラレータ２００は、行列演算処理及びＦＦＴ処理を並列に行うことができない。例えば、行列演算処理は、ＦＦＴ処理に対して優先度が高い。その場合、行列演算及びＦＦＴアクセラレータ２００は、図６（Ｂ）又は（Ｃ）の処理を行うことが考えられる。
【００３５】
図６（Ｂ）は、行列演算及びＦＦＴアクセラレータ２００の処理例を示す図である。行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ１で第１のＦＦＴ命令が入力されると、時刻ｔ１〜ｔ３でＦＦＴ処理Ｐｆ１を行う。行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ２で第１の行列演算命令が入力されると、ＦＦＴ処理Ｐｆ１が終了するまで待機し、時刻ｔ３〜ｔ４で行列演算処理Ｐｍ１を行う。行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ３で第２のＦＦＴ命令が入力されると、行列演算処理Ｐｍ１が終了するまで待機する。行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ４で第２の行列演算命令が入力されると、時刻ｔ４〜ｔ５で行列演算処理Ｐｍ２を行う。行列演算及びＦＦＴアクセラレータ２００は、行列演算処理Ｐｍ２が終了すると、時刻ｔ５〜ｔ６で、時刻ｔ３で入力された第２のＦＦＴ命令に対応するＦＦＴ処理Ｐｆ２を行う。しかし、この場合、行列演算処理Ｐｍ１は優先度が高いのに、第１の行列演算命令が入力された時刻ｔ２から時刻ｔ３まで、行列演算処理Ｐｍ１の実行が待機される。これでは、優先度の高い行列演算命令の処理速度が低下してしまう課題がある。
【００３６】
図６（Ｃ）は、行列演算及びＦＦＴアクセラレータ２００の他の処理例を示す図である。行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ１で第１のＦＦＴ命令が入力されると、時刻ｔ１でＦＦＴ処理Ｐｆ１を開始する。行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ２で第１の行列演算命令が入力されると、ＦＦＴ処理Ｐｆ１を中断し、内部状態をメモリ又はレジスタに退避し、行列演算処理Ｐｍ１を開始する。行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ３で行列演算処理Ｐｍ１が終了すると、メモリ又はレジスタの内部状態を復元し、中断していたＦＦＴ処理Ｐｆ１を再開する。ＦＦＴ処理Ｐｆ１は、時刻ｔ４で終了する。また、行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ３で第２のＦＦＴ命令が入力されると、ＦＦＴ処理Ｐｆ１が終了するまで待機する。行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ４で第２の行列演算命令が入力されると、時刻ｔ４〜ｔ５で行列演算処理Ｐｍ２を行う。行列演算及びＦＦＴアクセラレータ２００は、行列演算処理Ｐｍ２が終了すると、時刻ｔ５〜ｔ６で、時刻ｔ３で入力された第２のＦＦＴ命令に対応するＦＦＴ処理Ｐｆ２を行う。これにより、優先度が高い行列演算処理Ｐｍ１を高速に実行することができる。しかし、ＦＦＴ処理Ｐｆ１の中断及び再開を行うために、内部状態の退避及び復元を行う複雑な制御が必要になるため、コントローラ２０１の回路面積が大きくなってしまう課題がある。
【００３７】
次に、図７（Ａ）〜（Ｃ）を参照しながら、優先度の高い行列演算命令を高速に実行し、かつ面積を小さくすることができる行列演算及びＦＦＴアクセラレータ２００を説明する。
【００３８】
図７（Ａ）は、図６（Ａ）と同じであり、図１の行列演算アクセラレータ１００及びＦＦＴアクセラレータ１２０の処理例を示す図である。
【００３９】
図７（Ｂ）は、図２の行列演算及びＦＦＴアクセラレータ２００が行うＦＦＴ処理の例を示す図である。図７（Ａ）のＦＦＴ処理Ｐｆ１は、例えば図４のように第１〜第５のステージを有し、図７（Ｂ）のＦＦＴの第１のステージの処理Ｐｆ１ａ、ＦＦＴの第２のステージの処理Ｐｆ１ｂ、ＦＦＴの第３のステージの処理Ｐｆ１ｃ、ＦＦＴの第４のステージの処理Ｐｆ１ｄ及びＦＦＴの第５のステージの処理Ｐｆ１ｅに分割される。
【００４０】
同様に、図７（Ａ）のＦＦＴ処理Ｐｆ２は、例えば図４のように第１〜第５のステージを有し、図７（Ｂ）のＦＦＴの第１のステージの処理Ｐｆ２ａ、ＦＦＴの第２のステージの処理Ｐｆ２ｂ、ＦＦＴの第３のステージの処理Ｐｆ２ｃ、ＦＦＴの第４のステージの処理Ｐｆ２ｄ及びＦＦＴの第５のステージの処理Ｐｆ２ｅに分割される。
【００４１】
同様に、図７（Ａ）のＦＦＴ処理Ｐｆ３は、例えば図４のように第１〜第５のステージを有し、図７（Ｂ）のＦＦＴの第１のステージの処理Ｐｆ３ａ、ＦＦＴの第２のステージの処理Ｐｆ３ｂ、ＦＦＴの第３のステージの処理Ｐｆ３ｃ、ＦＦＴの第４のステージの処理Ｐｆ３ｄ及びＦＦＴの第５のステージの処理Ｐｆ３ｅに分割される。
【００４２】
行列演算及びＦＦＴアクセラレータ２００には、高速フーリエ変換が複数のステージの処理に分割された複数の高速フーリエ変換ステージ処理命令が順に入力される。例えば、ＦＦＴの第１のステージ命令ｆｆｔ（１）、ＦＦＴの第２のステージ命令ｆｆｔ（２）、ＦＦＴの第３のステージ命令ｆｆｔ（３）、ＦＦＴの第４のステージ命令ｆｆｔ（４）、ＦＦＴの第５のステージ命令ｆｆｔ（５）が順に入力される。行列演算及びＦＦＴアクセラレータ２００は、ＦＦＴの第１のステージ命令ｆｆｔ（１）が入力されると、ＦＦＴの第１のステージの処理Ｐｆ１ａを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、ＦＦＴの第２のステージ命令ｆｆｔ（２）が入力されると、ＦＦＴの第２のステージの処理Ｐｆ１ｂを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、ＦＦＴの第３のステージ命令ｆｆｔ（３）が入力されると、ＦＦＴの第３のステージの処理Ｐｆ１ｃを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、ＦＦＴの第４のステージ命令ｆｆｔ（４）が入力されると、ＦＦＴの第４のステージの処理Ｐｆ１ｄを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、ＦＦＴの第５のステージ命令ｆｆｔ（５）が入力されると、ＦＦＴの第５のステージの処理Ｐｆ１ｅを行う。ＦＦＴ処理Ｐｆ２ａ〜Ｐｆ２ｅ及びＦＦＴ処理Ｐｆ３ａ〜Ｐｆ３ｅも同様である。
【００４３】
図７（Ｃ）は、図２の行列演算及びＦＦＴアクセラレータ２００が行う行列演算処理及びＦＦＴ処理の例を示す図である。図７（Ｃ）のＦＦＴの各ステージ命令の入力時刻は、図７（Ｂ）のものと同じである。
【００４４】
行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ１で第１のＦＦＴの第１のステージ命令が入力されると、第１のＦＦＴ処理の第１のステージの処理Ｐｆ１ａを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、第１のＦＦＴの第２のステージ命令が入力されると、第１のＦＦＴの第２のステージの処理Ｐｆ１ｂを行う。次に、行列演算及びＦＦＴアクセラレータ２００には、時刻ｔ２で、第１のＦＦＴの第３のステージ命令及び第１の行列演算命令が入力される。行列演算命令は、ＦＦＴ命令より優先度が高いので、行列演算及びＦＦＴアクセラレータ２００は、第１の行列演算命令に対応する行列演算処理Ｐｍ１を実行する。第１のＦＦＴの第３のステージ命令は、待機させられる。同様に、行列演算処理Ｐｍ１の実行中に入力された第１のＦＦＴの第４のステージ命令及び第１のＦＦＴの第５のステージ命令も、待機させられる。
【００４５】
次に、行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ３で、行列演算処理Ｐｍ１が終了すると、第１のＦＦＴの第３のステージ命令に対応する第１のＦＦＴの第３のステージの処理Ｐｆ１ｃを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、第１のＦＦＴの第４のステージ命令に対応する第１のＦＦＴの第４のステージの処理Ｐｆ１ｄを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、第１のＦＦＴの第５のステージ命令に対応する第１のＦＦＴの第５のステージの処理Ｐｆ１ｅを行う。
【００４６】
次に、行列演算及びＦＦＴアクセラレータ２００は、時刻ｔ４で第２の行列演算命令が入力されると、時刻ｔ４〜ｔ５で行列演算処理Ｐｍ２を行う。次に、行列演算及びＦＦＴアクセラレータ２００は、第２のＦＦＴの第１のステージ命令に対応する第２のＦＦＴの第１のステージの処理Ｐｆ２ａを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、第２のＦＦＴの第２のステージ命令に対応する第２のＦＦＴの第２のステージの処理Ｐｆ２ｂを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、第２のＦＦＴの第３のステージ命令に対応する第２のＦＦＴの第３のステージの処理Ｐｆ２ｃを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、第２のＦＦＴの第４のステージ命令に対応する第２のＦＦＴの第４のステージの処理Ｐｆ２ｄを行う。次に、行列演算及びＦＦＴアクセラレータ２００は、第２のＦＦＴの第５のステージ命令に対応する第２のＦＦＴの第５のステージの処理Ｐｆ２ｅを行う。
【００４７】
コントローラ２０１は、行列演算処理命令が入力されると、複数のＡＬＵ（演算器）２１０が行列演算を行うように制御する。また、コントローラ２０１は、ＦＦＴが複数のステージの処理に分割された複数のＦＦＴステージ処理命令が入力されると、複数のＡＬＵ２１０がＦＦＴ処理をステージ単位で行うように制御する。
【００４８】
また、コントローラ２０１は、複数のＡＬＵ２１０がＦＦＴのあるステージの処理Ｐｆ１ｂを実行している最中に、行列演算命令が入力されると、複数のＡＬＵ２１０が実行しているＦＦＴのステージの処理Ｐｆ１ｂが終了すると、複数のＡＬＵ２１０に行列演算命令に対応する行列演算処理Ｐｍ１を行うように制御する。そして、コントローラ２０１は、複数のＡＬＵ２１０が行列演算処理Ｐｍ１を終了すると、終了した高速フーリエ変換のステージの次のステージの処理Ｐｆ１ｃを複数のＡＬＵ２１０が行うように制御する。
【００４９】
図８は、行列データの例を示す図である。行列８０１は、例えば２行２列の行列である。第１行第１列のデータは、複素数データａ＋ｉｂであり、実数部ａ及び虚数部ｂを有し、行列データ８０２の最下位ビット（ＬＳＢ）側から１番目のデータである。第１行第２列のデータは、複素数データｃ＋ｉｄであり、実数部ｃ及び虚数部ｄを有し、行列データ８０２の最下位ビット（ＬＳＢ）側から２番目のデータである。第２行第１列のデータは、複素数データｅ＋ｉｆであり、実数部ｅ及び虚数部ｆを有し、行列データ８０２の最下位ビット（ＬＳＢ）側から３番目のデータである。第２行第２列のデータは、複素数データｇ＋ｉｈであり、実数部ｇ及び虚数部ｈを有し、行列データ８０２の最下位ビット（ＬＳＢ）側から４番目のデータである。例えば、実数部及び虚数部は、それぞれ、１６ビットである。
【００５０】
図９（Ａ）及び（Ｂ）は、行列演算を行う場合の図２のスイッチ２１１の処理例を示す図である。
【００５１】
図９（Ａ）は、スイッチ２１１が行列の対角成分ベクトル抽出を行う処理例を示す図である。スイッチ２１１は、３行３列の行列９０２に対応する行列データ９０１を入力すると、第１行第１列の複素数データ、第２行第２列の複素数データ、及び第３行第３列の複素数データを、出力データ９０３として出力する。
【００５２】
図９（Ｂ）は、スイッチ２１１が行列の対角成分実数部抽出を行う処理例を示す図である。スイッチ２１１は、３行３列の行列９１２に対応する行列データ９１１を入力すると、第１行第１列の実数部データ、第２行第２列の実数部データ、及び第３行第３列の実数部データを、出力データ９１３として出力する。
【００５３】
同様に、スイッチ２１１は、行列の対角成分虚数部抽出を行うことができる。また、スイッチ２１１は、行列の実数部抽出を行うことができる。また、スイッチ２１１は、行列の虚数部抽出を行うことができる。また、スイッチ２１１は、入力した行列データを変換なしで、そのまま出力することができる。
【００５４】
以上のように、スイッチ２１１は、複数のＡＬＵ２１０の出力データを入力し、行列演算命令に応じて、複数のＡＬＵ２１０の出力データを選択し、選択したデータを出力することができる。
【００５５】
図１０（Ａ）、（Ｂ）、図１１（Ａ）、（Ｂ）及び図１２は、ＦＦＴを行うバタフライ演算器ＥＸ１〜ＥＸ１６及びスイッチ２１１の各ステージの処理例を示す図である。例えば、ＦＦＴデータ数が５１２であり、１サイクルのデータ数が３２である。この場合、第１〜第９のステージの処理が行われる。各ステージのサイクル数は、５１２／３２＝１６である。５１２個のデータは、３２個のデータに１６分割される。各サイクルで３２個のデータが処理され、１６サイクルで５１２個のデータが処理される。
【００５６】
図１０（Ａ）は、ＦＦＴの第１のステージの処理例を示す図である。第１の入力データ１００１は、図３（Ｂ）の第１の入力データＸ１に対応し、図２の第１のＦＩＦＯメモリ２０８の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子にそれぞれ出力される。第２の入力データ１００２は、図３（Ｂ）の第２の入力データＸ２に対応し、図２の第２のＦＩＦＯメモリ２０９の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子にそれぞれ出力される。
【００５７】
第１のＦＩＦＯメモリ２０８は、メモリコントローラ２０６を介してメモリ２０７から第１の入力データ１００１を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子に第１の入力データ１００１を出力する。第２のＦＩＦＯメモリ２０９は、メモリコントローラ２０６を介してメモリ２０７から第２のデータ１００２を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子に第２の入力データ１００２を出力する。
【００５８】
１６個のバタフライ演算器ＥＸ１〜ＥＸ１６は、第１の入力端子に第１の入力データ１００１を入力し、第２の入力端子に第２の入力データ１００２を入力し、第１の出力端子から第１の出力データ１００３を出力し、第２の出力端子から第２の出力データ１００４を出力する。第１の出力データ１００３は、図３（Ｂ）の第１の出力データＹ１に対応する。第２の出力データ１００４は、図３（Ｂ）の第２の出力データＹ２に対応する。例えば、バタフライ演算器ＥＸ１は、図４の第１のステージと同様に、０番目の入力データ及び１６番目の入力データを入力し、０番目の出力データ及び１番目の出力データを出力する。バタフライ演算器ＥＸ２は、図４の第１のステージと同様に、１番目の入力データ及び１７番目の入力データを入力し、２番目の出力データ及び３番目の出力データを出力する。なお、図１０（Ａ）、（Ｂ）、図１１（Ａ）、（Ｂ）及び図１２では、図４に対して、バタフライ演算器ＥＸ１〜ＥＸ１６の順番を変えて示している。
【００５９】
スイッチ２１１は、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の出力データ１００３及び第２の出力データ１００４を入力し、第１の出力データ１００３及び第２の出力データ１００４の位置を入れ替えて、第３の出力データ１００５及び第４の出力データ１００６を出力する。第１の出力データ１００３は０番目、２番目及び４番目等の出力データを有し、第２の出力データ１００４は１番目、３番目及び５番目等の出力データを有する。これに対し、第３の出力データ１００５は０番目、１番目及び２番目等の出力データを有し、第４の出力データ１００６は１６番目、１７番目及び１８番目等の出力データを有する。第３の出力データ１００５は、図２の第３のＦＩＦＯメモリ２１２に出力される。第４の出力データ１００６は、図２の第４のＦＩＦＯメモリ２１３に出力される。このデータの位置の入れ替えにより、次の第２のステージのバタフライ演算器ＥＸ１〜ＥＸ１６の入力データの位置が決まる。これにより、図１の入力スイッチ１２２が不要になる。
【００６０】
図１０（Ｂ）は、ＦＦＴの第２のステージの処理例を示す図である。第１の入力データ１０１１は、図３（Ｂ）の第１の入力データＸ１に対応し、図２の第１のＦＩＦＯメモリ２０８の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子にそれぞれ出力される。第２の入力データ１０１２は、図３（Ｂ）の第２の入力データＸ２に対応し、図２の第２のＦＩＦＯメモリ２０９の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子にそれぞれ出力される。
【００６１】
第１のＦＩＦＯメモリ２０８は、メモリコントローラ２０６を介してメモリ２０７から第１の入力データ１０１１を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子に第１の入力データ１０１１を出力する。第２のＦＩＦＯメモリ２０９は、メモリコントローラ２０６を介してメモリ２０７から第２のデータ１０１２を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子に第２の入力データ１０１２を出力する。
【００６２】
１６個のバタフライ演算器ＥＸ１〜ＥＸ１６は、第１の入力端子に第１の入力データ１０１１を入力し、第２の入力端子に第２の入力データ１０１２を入力し、第１の出力端子から第１の出力データ１０１３を出力し、第２の出力端子から第２の出力データ１０１４を出力する。第１の出力データ１０１３は、図３（Ｂ）の第１の出力データＹ１に対応する。第２の出力データ１０１４は、図３（Ｂ）の第２の出力データＹ２に対応する。例えば、バタフライ演算器ＥＸ１は、図４の第２のステージと同様に、０番目の入力データ及び１６番目の入力データを入力し、０番目の出力データ及び２番目の出力データを出力する。バタフライ演算器ＥＸ２は、図４の第２のステージと同様に、１番目の入力データ及び１７番目の入力データを入力し、１番目の出力データ及び３番目の出力データを出力する。
【００６３】
スイッチ２１１は、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の出力データ１０１３及び第２の出力データ１０１４を入力し、第１の出力データ１０１３及び第２の出力データ１０１４の位置を入れ替えて、第３の出力データ１０１５及び第４の出力データ１０１６を出力する。第１の出力データ１０１３は０番目、１番目及び４番目等の出力データを有し、第２の出力データ１０１４は２番目、３番目及び６番目等の出力データを有する。これに対し、第３の出力データ１０１５は０番目、１番目及び２番目等の出力データを有し、第４の出力データ１０１６は１６番目、１７番目及び１８番目等の出力データを有する。第３の出力データ１０１５は、図２の第３のＦＩＦＯメモリ２１２に出力される。第４の出力データ１０１６は、図２の第４のＦＩＦＯメモリ２１３に出力される。このデータの位置の入れ替えにより、次の第３のステージのバタフライ演算器ＥＸ１〜ＥＸ１６の入力データの位置が決まる。
【００６４】
図１１（Ａ）は、ＦＦＴの第３のステージの処理例を示す図である。第１の入力データ１１０１は、図３（Ｂ）の第１の入力データＸ１に対応し、図２の第１のＦＩＦＯメモリ２０８の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子にそれぞれ出力される。第２の入力データ１１０２は、図３（Ｂ）の第２の入力データＸ２に対応し、図２の第２のＦＩＦＯメモリ２０９の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子にそれぞれ出力される。
【００６５】
第１のＦＩＦＯメモリ２０８は、メモリコントローラ２０６を介してメモリ２０７から第１の入力データ１１０１を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子に第１の入力データ１１０１を出力する。第２のＦＩＦＯメモリ２０９は、メモリコントローラ２０６を介してメモリ２０７から第２のデータ１１０２を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子に第２の入力データ１１０２を出力する。
【００６６】
１６個のバタフライ演算器ＥＸ１〜ＥＸ１６は、第１の入力端子に第１の入力データ１１０１を入力し、第２の入力端子に第２の入力データ１１０２を入力し、第１の出力端子から第１の出力データ１１０３を出力し、第２の出力端子から第２の出力データ１１０４を出力する。第１の出力データ１１０３は、図３（Ｂ）の第１の出力データＹ１に対応する。第２の出力データ１１０４は、図３（Ｂ）の第２の出力データＹ２に対応する。例えば、バタフライ演算器ＥＸ１は、図４の第３のステージと同様に、０番目の入力データ及び１６番目の入力データを入力し、０番目の出力データ及び４番目の出力データを出力する。バタフライ演算器ＥＸ２は、図４の第３のステージと同様に、１番目の入力データ及び１７番目の入力データを入力し、１番目の出力データ及び５番目の出力データを出力する。
【００６７】
スイッチ２１１は、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の出力データ１１０３及び第２の出力データ１１０４を入力し、第１の出力データ１１０３及び第２の出力データ１１０４の位置を入れ替えて、第３の出力データ１１０５及び第４の出力データ１１０６を出力する。第１の出力データ１１０３は０番目、１番目及び２番目等の出力データを有し、第２の出力データ１１０４は４番目、５番目及び６番目等の出力データを有する。これに対し、第３の出力データ１１０５は０番目、１番目及び２番目等の出力データを有し、第４の出力データ１１０６は１６番目、１７番目及び１８番目等の出力データを有する。第３の出力データ１１０５は、図２の第３のＦＩＦＯメモリ２１２に出力される。第４の出力データ１１０６は、図２の第４のＦＩＦＯメモリ２１３に出力される。このデータの位置の入れ替えにより、次の第４のステージのバタフライ演算器ＥＸ１〜ＥＸ１６の入力データの位置が決まる。
【００６８】
図１１（Ｂ）は、ＦＦＴの第４のステージの処理例を示す図である。第１の入力データ１１１１は、図３（Ｂ）の第１の入力データＸ１に対応し、図２の第１のＦＩＦＯメモリ２０８の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子にそれぞれ出力される。第２の入力データ１１１２は、図３（Ｂ）の第２の入力データＸ２に対応し、図２の第２のＦＩＦＯメモリ２０９の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子にそれぞれ出力される。
【００６９】
第１のＦＩＦＯメモリ２０８は、メモリコントローラ２０６を介してメモリ２０７から第１の入力データ１１１１を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子に第１の入力データ１１１１を出力する。第２のＦＩＦＯメモリ２０９は、メモリコントローラ２０６を介してメモリ２０７から第２のデータ１１１２を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子に第２の入力データ１１１２を出力する。
【００７０】
１６個のバタフライ演算器ＥＸ１〜ＥＸ１６は、第１の入力端子に第１の入力データ１１１１を入力し、第２の入力端子に第２の入力データ１１１２を入力し、第１の出力端子から第１の出力データ１１１３を出力し、第２の出力端子から第２の出力データ１１１４を出力する。第１の出力データ１１１３は、図３（Ｂ）の第１の出力データＹ１に対応する。第２の出力データ１１１４は、図３（Ｂ）の第２の出力データＹ２に対応する。例えば、バタフライ演算器ＥＸ１は、図４の第４のステージと同様に、０番目の入力データ及び１６番目の入力データを入力し、０番目の出力データ及び８番目の出力データを出力する。バタフライ演算器ＥＸ２は、図４の第４のステージと同様に、１番目の入力データ及び１７番目の入力データを入力し、１番目の出力データ及び９番目の出力データを出力する。
【００７１】
スイッチ２１１は、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の出力データ１１１３及び第２の出力データ１１１４を入力し、第１の出力データ１１１３及び第２の出力データ１１１４の位置を入れ替えて、第３の出力データ１１１５及び第４の出力データ１１１６を出力する。第１の出力データ１１１３は０番目、１番目及び２番目等の出力データを有し、第２の出力データ１１１４は８番目、９番目及び１０番目等の出力データを有する。これに対し、第３の出力データ１１１５は０番目、１番目及び２番目等の出力データを有し、第４の出力データ１１１６は１６番目、１７番目及び１８番目等の出力データを有する。第３の出力データ１１１５は、図２の第３のＦＩＦＯメモリ２１２に出力される。第４の出力データ１１１６は、図２の第４のＦＩＦＯメモリ２１３に出力される。このデータの位置の入れ替えにより、次の第５のステージのバタフライ演算器ＥＸ１〜ＥＸ１６の入力データの位置が決まる。
【００７２】
図１２は、ＦＦＴの第５〜第９のステージの処理例を示す図である。第１の入力データ１２０１は、図３（Ｂ）の第１の入力データＸ１に対応し、図２の第１のＦＩＦＯメモリ２０８の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子にそれぞれ出力される。第２の入力データ１２０２は、図３（Ｂ）の第２の入力データＸ２に対応し、図２の第２のＦＩＦＯメモリ２０９の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子にそれぞれ出力される。
【００７３】
第１のＦＩＦＯメモリ２０８は、メモリコントローラ２０６を介してメモリ２０７から第１の入力データ１２０１を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の入力端子に第１の入力データ１２０１を出力する。第２のＦＩＦＯメモリ２０９は、メモリコントローラ２０６を介してメモリ２０７から第２のデータ１２０２を入力し、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第２の入力端子に第２の入力データ１２０２を出力する。
【００７４】
１６個のバタフライ演算器ＥＸ１〜ＥＸ１６は、第１の入力端子に第１の入力データ１２０１を入力し、第２の入力端子に第２の入力データ１２０２を入力し、第１の出力端子から第１の出力データ１２０３を出力し、第２の出力端子から第２の出力データ１２０４を出力する。第１の出力データ１２０３は、図３（Ｂ）の第１の出力データＹ１に対応する。第２の出力データ１２０４は、図３（Ｂ）の第２の出力データＹ２に対応する。例えば、バタフライ演算器ＥＸ１は、図４の第５のステージと同様に、０番目の入力データ及び１６番目の入力データを入力し、０番目の出力データ及び１６番目の出力データを出力する。バタフライ演算器ＥＸ２は、図４の第４のステージと同様に、１番目の入力データ及び１７番目の入力データを入力し、１番目の出力データ及び１７番目の出力データを出力する。
【００７５】
スイッチ２１１は、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１の出力データ１２０３及び第２の出力データ１２０４を入力し、そのまま、第３の出力データ１２０５及び第４の出力データ１２０６として出力する。第３の出力データ１２０５は、第１の出力データ１２０３と同じである。第４の出力データ１２０６は、第２の出力データ１２０４と同じである。第３の出力データ１２０５は、図２の第３のＦＩＦＯメモリ２１２に出力される。第４の出力データ１２０６は、図２の第４のＦＩＦＯメモリ２１３に出力される。第５〜第９のステージでは、スイッチ２１１は、データの位置の入れ替えを行わず、後述の方法により、メモリコントローラ２０６がデータの位置の入れ替えを行い、次のステージのバタフライ演算器ＥＸ１〜ＥＸ１６の入力データの位置を決める。
【００７６】
図１３は、図２の行列演算及びＦＦＴアクセラレータ２００の一部の構成例を示す図である。４個のバンクＢＫ０、ＢＫ１、ＢＫ２及びＢＫ３は、図２のメモリ２０７に対応し、図１４（Ａ）、（Ｂ）、図１５（Ａ）、（Ｂ）、図１６（Ａ）、（Ｂ）、図１７（Ａ）、（Ｂ）、図１８（Ａ）、（Ｂ）に示すように、それぞれ、０〜Ｎ（５１２）のアドレスにデータが格納される。第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９には、バンクＢＫ０〜ＢＫ３から読み出されたデータが記憶される。第１の入力データ１３０１は、第１のＦＩＦＯメモリ２０８の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６に入力される。第２の入力データ１３０２は、第２のＦＩＦＯメモリ２０９の出力データであり、バタフライ演算器ＥＸ１〜ＥＸ１６に入力される。第３の出力データ１３０３は、図２のスイッチ２１１の出力データであり、第３のＦＩＦＯメモリ２１２に入力される。第４の出力データ１３０４は、図２のスイッチ２１１の出力データであり、第４のＦＩＦＯメモリ２１３に入力される。第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３の出力データは、バンクＢＫ０〜ＢＫ３に書き込まれる。
【００７７】
図１４（Ａ）、（Ｂ）、図１５（Ａ）、（Ｂ）、図１６（Ａ）、（Ｂ）、図１７（Ａ）、（Ｂ）、図１８（Ａ）、（Ｂ）において、かっこ内の数字はサイクル番号を示す。各ステージでは、５１２個のデータを３２個のデータに１６サイクル分割する。すなわち、各ステージは、１６サイクルで処理される。各サイクルでは、３２個のデータが処理される。
【００７８】
図１４（Ａ）は、ＦＦＴの第１〜第５のステージにおいてメモリコントローラ２０６がバンクＢＫ０〜ＢＫ３から第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出すアドレスを示す図であり、図１３の第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出されるデータをそれぞれ図１３と同じハッチで示す。第１のサイクルでは、メモリコントローラ２０６は、バンクＢＫ０の「０」のアドレスから、０番目〜１５番目のデータを読み出して第１のＦＩＦＯメモリ２０８に出力し、バンクＢＫ０の「２５６」のアドレスから、２５６番目〜２７１番目のデータを読み出して第２のＦＩＦＯメモリ２０９に出力する。第２のサイクルでは、メモリコントローラ２０６は、バンクＢＫ１の「１６」のアドレスから、１６番目〜３１番目のデータを読み出して第１のＦＩＦＯメモリ２０８に出力し、バンクＢＫ１の「２７２」のアドレスから、２７２番目〜２８７番目のデータを読み出して第２のＦＩＦＯメモリ２０９に出力する。
【００７９】
図１４（Ｂ）は、ＦＦＴの第１〜第５のステージにおいてメモリコントローラ２０６が第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３からバンクＢＫ０〜ＢＫ３に書き込むアドレスを示す図であり、図１３の第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３に書き込まれるデータをそれぞれ図１３と同じハッチで示す。第１のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する０番目〜１５番目のデータをバンクＢＫ０の「０」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する１６番目〜３１番目のデータをバンクＢＫ１の「１６」のアドレスに書き込む。第２のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する３２番目〜４７番目のデータをバンクＢＫ２の「３２」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する４８番目〜６３番目のデータをバンクＢＫ３の「４８」のアドレスに書き込む。
【００８０】
以上のように、第１〜第５のステージでは、スイッチ２１１がデータの位置の入れ替えを行うので、メモリコントローラ２０６は、データの位置の入れ替えを行わない。
【００８１】
図１５（Ａ）は、ＦＦＴの第６のステージにおいてメモリコントローラ２０６がバンクＢＫ０〜ＢＫ３から第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出すアドレスを示す図であり、図１３の第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出されるデータをそれぞれ図１３と同じハッチで示す。図１５（Ａ）は図１４（Ａ）と同じであり、第６のステージでは、メモリコントローラ２０６は、第１〜第５のステージと同じ読み出しを行う。
【００８２】
図１５（Ｂ）は、ＦＦＴの第６のステージにおいてメモリコントローラ２０６が第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３からバンクＢＫ０〜ＢＫ３に書き込むアドレスを示す図であり、図１３の第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３に書き込まれるデータをそれぞれ図１３と同じハッチで示す。第１のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する０番目〜１５番目のデータをバンクＢＫ０の「０」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する３２番目〜４７番目のデータをバンクＢＫ２の「３２」のアドレスに書き込む。第２のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する１６番目〜３１番目のデータをバンクＢＫ１の「１６」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する４８番目〜６３番目のデータをバンクＢＫ３の「４８」のアドレスに書き込む。図１５（Ｂ）の書き込みにより、データの位置の入れ替えが行われ、次の第７のステージのバタフライ演算器ＥＸ１〜ＥＸ１６の入力データの位置が決まる。これにより、図１の入力スイッチ１２２が不要になる。
【００８３】
図１６（Ａ）は、ＦＦＴの第７のステージにおいてメモリコントローラ２０６がバンクＢＫ０〜ＢＫ３から第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出すアドレスを示す図であり、図１３の第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出されるデータをそれぞれ図１３と同じハッチで示す。図１６（Ａ）は図１４（Ａ）と同じであり、第７のステージでは、メモリコントローラ２０６は、第１〜第５のステージと同じ読み出しを行う。
【００８４】
図１６（Ｂ）は、ＦＦＴの第７のステージにおいてメモリコントローラ２０６が第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３からバンクＢＫ０〜ＢＫ３に書き込むアドレスを示す図であり、図１３の第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３に書き込まれるデータをそれぞれ図１３と同じハッチで示す。第１のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する０番目〜１５番目のデータをバンクＢＫ０の「０」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する６４番目〜７９番目のデータをバンクＢＫ０の「６４」のアドレスに書き込む。第２のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する１６番目〜３１番目のデータをバンクＢＫ１の「１６」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する８０番目〜９５番目のデータをバンクＢＫ１の「８０」のアドレスに書き込む。図１６（Ｂ）の書き込みにより、データの位置の入れ替えが行われ、次の第８のステージのバタフライ演算器ＥＸ１〜ＥＸ１６の入力データの位置が決まる。
【００８５】
図１７（Ａ）は、ＦＦＴの第８のステージにおいてメモリコントローラ２０６がバンクＢＫ０〜ＢＫ３から第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出すアドレスを示す図であり、図１３の第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出されるデータをそれぞれ図１３と同じハッチで示す。図１７（Ａ）は図１４（Ａ）と同じであり、第８のステージでは、メモリコントローラ２０６は、第１〜第５のステージと同じ読み出しを行う。
【００８６】
図１７（Ｂ）は、ＦＦＴの第８のステージにおいてメモリコントローラ２０６が第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３からバンクＢＫ０〜ＢＫ３に書き込むアドレスを示す図であり、図１３の第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３に書き込まれるデータをそれぞれ図１３と同じハッチで示す。第１のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する０番目〜１５番目のデータをバンクＢＫ０の「０」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する１２８番目〜１４３番目のデータをバンクＢＫ０の「１２８」のアドレスに書き込む。第２のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する１６番目〜３１番目のデータをバンクＢＫ１の「１６」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する１４４番目〜１５９番目のデータをバンクＢＫ１の「１４４」のアドレスに書き込む。図１７（Ｂ）の書き込みにより、データの位置の入れ替えが行われ、次の第９のステージのバタフライ演算器ＥＸ１〜ＥＸ１６の入力データの位置が決まる。
【００８７】
図１８（Ａ）は、ＦＦＴの第９のステージにおいてメモリコントローラ２０６がバンクＢＫ０〜ＢＫ３から第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出すアドレスを示す図であり、図１３の第１のＦＩＦＯメモリ２０８及び第２のＦＩＦＯメモリ２０９に読み出されるデータをそれぞれ図１３と同じハッチで示す。図１８（Ａ）は図１４（Ａ）と同じであり、第９のステージでは、メモリコントローラ２０６は、第１〜第５のステージと同じ読み出しを行う。
【００８８】
図１８（Ｂ）は、ＦＦＴの第９のステージにおいてメモリコントローラ２０６が第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３からバンクＢＫ０〜ＢＫ３に書き込むアドレスを示す図であり、図１３の第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３に書き込まれるデータをそれぞれ図１３と同じハッチで示す。第１のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する０番目〜１５番目のデータをバンクＢＫ０の「０」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する２５６番目〜２７１番目のデータをバンクＢＫ０の「２５６」のアドレスに書き込む。第２のサイクルでは、メモリコントローラ２０６は、第３のＦＩＦＯメモリ２１２が出力する１６番目〜３１番目のデータをバンクＢＫ１の「１６」のアドレスに書き込み、第４のＦＩＦＯメモリ２１３が出力する２７２番目〜２８７番目のデータをバンクＢＫ１の「２７２」のアドレスに書き込む。図１８（Ｂ）の書き込みにより、データの位置の入れ替えが行われ、ＦＦＴの最終データの位置が決まる。
【００８９】
以上のように、第１〜第５のステージでは、スイッチ２１１により、データの位置の入れ替えを行い、第６〜第９のステージでは、メモリコントローラ２０６の書き込みにより、データの位置の入れ替えを行う。これにより、図１の入力スイッチ１２２が不要になり、面積を小さくすることができる。
【００９０】
スイッチ２１１は、複数のバタフライ演算器ＥＸ１〜ＥＸ１６の第１及び第２の出力端子のデータを入力し、ＦＦＴの各ステージに応じて、入力したデータの位置を入れ替えて第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３に出力する。
【００９１】
メモリコントローラ２０６は、ＦＦＴの各ステージに応じて、第３のＦＩＦＯメモリ２１２及び第４のＦＩＦＯメモリ２１３の出力データをメモリ２０７の異なるアドレスに書き込む。
【００９２】
ＦＦＴデータ数（例えば５１２）が１サイクルのデータ数（例えば３２）より多い場合には、上記のように、一部のステージでは、スイッチ２１１により、データの位置の入れ替えを行い、他部のステージでは、メモリコントローラ２０６の書き込みにより、データの位置の入れ替えを行う。
【００９３】
また、ＦＦＴデータ数が１サイクルのデータ数以下である場合には、上記の第１〜第５のステージのように、すべてのステージで、スイッチ２１１により、データの位置の入れ替えを行う。
【００９４】
本実施形態による行列演算及びＦＦＴアクセラレータ２００は、小面積で行列演算及び高速フーリエ変換を行うことができる。
【００９５】
また、コントローラ２０１は、プログラムを実行することにより上記の処理を行うコンピュータであってもよい。すなわち、本実施形態は、コンピュータがプログラムを実行することによって実現することもできる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体及び上記のプログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００９６】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００９７】
２００  行列演算及びＦＦＴアクセラレータ
２０１  コントローラ
２０２  入力バッファ
２０３  メモリ
２０４  演算部
２０５  出力バッファ
２０６  メモリコントローラ
２０７  メモリ
２０８  第１のＦＩＦＯメモリ
２０９  第２のＦＩＦＯメモリ
２１０  ＡＬＵ
２１１  スイッチ
２１２  第３のＦＩＦＯメモリ
２１３  第４のＦＩＦＯメモリ
【図１】
2016045703.tif 000003
【図２】
2016045703.tif 000004
【図３】
2016045703.tif 000005
【図４】
2016045703.tif 000006
【図５】
2016045703.tif 000007
【図６】
2016045703.tif 000008
【図７】
2016045703.tif 000009
【図８】
2016045703.tif 000010
【図９】
2016045703.tif 000011
【図１０】
2016045703.tif 000012
【図１１】
2016045703.tif 000013
【図１２】
2016045703.tif 000014
【図１３】
2016045703.tif 000015
【図１４】
2016045703.tif 000016
【図１５】
2016045703.tif 000017
【図１６】
2016045703.tif 000018
【図１７】
2016045703.tif 000019
【図１８】
2016045703.tif 000020
【図１９】
2016045703.tif 000021