(57)【要約】【課題】可変長データに対する演算処理と、固定長データに対する演算処理とを効率的に行なうことが可能なデータ処理装置を提供すること。【解決手段】データ処理装置１００は、ＳＩＭＤ方式の複数のＰＥ１（５）と、複数のＰＥ１（５）のそれぞれに対応して設けられる複数のＳＲＡＭｓ２と、複数のＰＥ２（７）とを含む。複数のＰＥ１（５）のそれぞれは、対応する１つのＳＲＡＭｓ２に格納されるデータに対して演算を行なう。また、複数のＰＥ２（７）のそれぞれは、対応する複数個のＳＲＡＭｓ２に格納されるデータに対して演算を行なう。したがって、複数のＳＲＡＭｓ２を共有することができ、可変長データに対する演算処理と、固定長データに対する演算処理とを効率的に行なうことが可能となる。【選択図】図１
2012174016.tif 000002
【特許請求の範囲】
【請求項１】
ＳＩＭＤ演算方式の複数の第１のプロセッサと、
前記複数の第１のプロセッサのそれぞれに対応して設けられる複数の記憶手段と、
複数の第２のプロセッサとを含み、
前記複数の第１のプロセッサのそれぞれは、前記複数の記憶手段の中の対応する１つの記憶手段に格納されるデータに対して演算を行ない、
前記複数の第２のプロセッサのそれぞれは、前記複数の記憶手段の中の対応する複数個の記憶手段に格納されるデータに対して演算を行なう、データ処理装置。
【請求項２】
前記第１のプロセッサは可変ビット長データの演算を行ない、前記第２のプロセッサは固定ビット長データの演算を行なうことを特徴とする、請求項１記載のデータ処理装置。
【請求項３】
前記データ処理装置はさらに、データを直交変換するための直交変換手段を含み、
前記直交変換手段は、外部から受けたデータを直交変換して、前記複数の第１のプロセッサ用のデータとして前記複数の記憶手段に格納し、外部から受けたデータをそのまま前記複数の第２のプロセッサ用のデータとして前記複数の記憶手段に格納する、請求項１記載のデータ処理装置。
【請求項４】
前記直交変換手段は、前記複数の記憶手段に記憶される前記複数の第１のプロセッサによる演算結果を直交変換して外部に出力し、前記複数の記憶手段に記憶される前記複数の第２のプロセッサによる演算結果をそのまま外部に出力する、請求項３記載のデータ処理装置。
【請求項５】
前記データ処理装置はさらに、前記複数の第１のプロセッサおよび前記複数の第２のプロセッサと、前記複数の記憶手段との間に設けられ、前記複数の記憶手段に格納されるデータを対応する第１のプロセッサ以外の別の第１のプロセッサに移動して供給するデータ移動手段を含む、請求項１〜４のいずれかに記載のデータ処理装置。
【請求項６】
前記データ処理装置はさらに、マイクロコードプログラムを記憶する命令記憶手段と、
前記命令記憶手段に記憶されるマイクロコードプログラムを解釈して、前記複数の第１のプロセッサおよび前記複数の第２のプロセッサに選択的に演算処理を行なわせる制御手段とを含む、請求項１〜５のいずれかに記載のデータ処理装置。
【請求項７】
前記複数の第２のプロセッサのそれぞれが浮動小数点演算器によって構成され、前記複数の記憶手段の中の前記浮動小数点演算器のデータ長に対応する個数の記憶手段からデータを受けて演算処理を行なう、請求項１〜６のいずれかに記載のデータ処理装置。
【請求項８】
前記複数の第２のプロセッサのそれぞれが積和演算器によって構成され、前記複数の記憶手段の中の前記積和演算器のデータ長に対応する個数の記憶手段からデータを受けて演算処理を行なう、請求項１〜６のいずれかに記載のデータ処理装置。
【請求項９】
データ処理装置にミリ波レーダの信号処理を行なわせるデータ処理方法であって、
前記データ処理装置は、ＳＩＭＤ演算方式の複数の第１のプロセッサと、
前記複数の第１のプロセッサのそれぞれに対応して設けられる複数の記憶手段と、
前記複数の記憶手段の中の複数個の記憶手段に対応して設けられる複数の第２のプロセッサとを含み、
前記複数の第１のプロセッサに前記複数の記憶手段に記憶されるデータの演算を行なわせることにより、前記ミリ波レーダによって得られた情報がデジタルに変換された後のデータに対してゲイン調整およびクリッピング処理を行なわせるステップと、
前記複数の第１のプロセッサに、前記クリッピング処理後のデータに対して間引き処理およびフィルタ処理を行なわせるステップと、
前記複数の第１のプロセッサまたは前記複数の第２のプロセッサに、前記フィルタ処理後のデータを浮動小数点値に変換させて前記複数の記憶手段に格納させるステップと、
前記複数の第２のプロセッサに、前記複数の記憶手段に記憶される前記浮動小数点値を用いた高速フーリエ変換を行なわせるステップとを含む、データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを有するデータ処理装置に関し、特に、可変長ビットの演算を行なうことが可能なプロセッサと、主に固定長ビットの演算を行なうプロセッサとを有するデータ処理装置およびそのデータ処理方法に関する。
【背景技術】
【０００２】
近年、音声や画像といった大量のデータを高速に処理するデジタル信号処理の重要性が高まってきている。このようなデジタル信号処理においては、一般に専用の半導体装置としてＤＳＰ（Digital Signal Processor）が用いられることが多い。しかしながら、信号処理アプリケーション、特に画像処理アプリケーションにおいては、処理対象のデータ量が非常に大きいため、ＤＳＰでも処理能力が十分ではない。
【０００３】
これに対して、複数の演算器を並列に動作させることによって高い信号処理性能を実現する並列プロセッサ技術の開発が進んでいる。このような専用プロセッサをＣＰＵ（Central Processing Unit）に付随するアクセラレータとして用いれば、組み込み機器に搭載されるＬＳＩのように低消費電力、低コストが要求される場合においても高い信号処理性能を実現することができる。
【０００４】
このような並列プロセッサの１つとして、単一命令複数データ流（ＳＩＭＤ：Single Instruction Multiple Data stream）の演算方式を採用しているＳＩＭＤ型プロセッサを挙げることができる。
【０００５】
ＳＩＭＤ型プロセッサは、細粒度演算コアを有しており、整数演算や固定小数点演算に適したプロセッサである。ここで、細粒度演算コアとは、複数回の演算によって可変長ビットの演算が可能な演算コアを指すものとする。
【０００６】
ＳＩＭＤ型プロセッサの中でも、メモリと密結合した１〜２ビット単位で演算を行なう細粒度演算器（以下、ＰＥ（Processor Element）とも呼ぶ。）を１０２４個搭載した超並列プロセッサ（以下、このようなプロセッサをマトリクス型超並列プロセッサ（ＭＸ）とも呼ぶ。）は、大量の整数演算や固定小数点演算を短時間で行なうことができる。
【０００７】
また、マトリクス型超並列プロセッサは、細粒度演算器を利用するため、必要なビット長の演算のみを行なうことができ、消費電力を削減することができるため、汎用ＤＳＰなどと比較して高い消費電力性能比を得ることができる。
【０００８】
また、マトリクス型超並列プロセッサは、予め作成されたプログラムをロードして実行することができるため、これを制御するＣＰＵと同時に並列演算を行なうことが可能である。また、後述のように、演算器間でデータ移動を行なうためのエントリコミュニケータ（ＥＣＭ）を搭載しており、ＶＬＩＷ（Very Long Instruction Word）命令をサポートしたコントローラによって演算と同時にデータの交換を行なうことができるため、単に演算器を並列配置したプロセッサよりも効率よくデータ供給を行なえる。
【０００９】
一方、浮動小数点演算器（ＦＰＵ）などの粗粒度演算コアは、固定長の浮動小数点演算に特化した演算器であり、ＣＰＵに接続して使用される。ここで、粗粒度演算コアとは、１回の演算によって固定長ビットの演算が可能な演算コアを指すものとする。
【００１０】
浮動小数点演算器は、浮動小数点演算用のレジスタを有しており、演算対象となるデータはこのレジスタ経由でＣＰＵまたはメモリから供給される。また、ＣＰＵが実行命令の解釈を行ない、浮動小数点演算器に対する演算要求を行なう。浮動小数点演算器は、パイプライン構成となっており、単一の演算処理が１サイクルで完了しなくても連続的にデータを供給することによって、実質的には１演算／サイクルを実現する。これらに関連する技術として、下記の特許文献１〜２に開示された発明がある。
【００１１】
特許文献１は、異なるデータ型フォーマットの各々に専用のハードウェアを必要としない浮動小数点ユニットを提供することを目的とする。特許文献１に記載の装置は、複数のデータ型フォーマットに対して乗算累算演算を実行できる標準乗算累算ユニット（ＭＡＣ）を含む浮動小数点ユニットを含む。標準ＭＡＣは、在来のデータ型フォーマットと単一命令多重データ（ＳＩＭＤ）型フォーマットとに対して演算するよう構成される。従って専用のＳＩＭＤ用ＭＡＣユニットが必要ないので、ダイの面積を大幅に節約する。ＳＩＭＤ命令がＭＡＣユニットの１つにより演算される場合、データは６４ビットワードとして、上位と下位のＭＡＣユニットに与えられる。また、各ＭＡＣユニットは、６４ビットワードの上位半分又は下位半分の何れかを選択させる１つ以上のビットを受取る。各ＭＡＣユニットは各々の３２ビットワードに対して演算を行なう。その演算の結果は、浮動小数点ユニットのバイパスブロックにより６４ビットワードに合体される。
【００１２】
特許文献２は、ＣＰＵを代表例とするマイクロプロセッサとＦＰＵ（浮動小数点演算処理装置）を代表例とする専用プロセッサとの並行処理を可能とした情報処理装置において、マイクロプロセッサの待ち時間を短縮し処理能力を向上することを目的とする。情報処理装置は、マルチＦＰＵ構成とする。ＦＰＵ接続制御部におけるＦＰＵ状態レジスタが複数のＦＰＵの状態を監視しておく。複数のＣＰＵのいずれかからＦＰＵ接続制御部におけるＦＰＵ状態解読部に要支援命令のリクエストがあると、ＦＰＵ状態レジスタの情報に基づいて非動作で空いている状態のＦＰＵをリクエストをしたＣＰＵにつなぐようにＦＰＵ選択部を制御する。また、一時記憶レジスタ選択制御部から一時記憶レジスタ選択部の制御を介して一時記憶レジスタの使用エリアにデータ破壊の不具合が生じないようにする。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００１−０２７９４５号公報
【特許文献２】特開２００１−１６７０５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上述のように、マトリクス型超並列プロセッサは、１〜２ビットの単位でデータに対する演算を行なうため、演算対象データのビット長に応じて処理サイクルが増加するが、任意ビット長の演算が可能である。しかしながら、マトリクス型超並列プロセッサに搭載される細粒度演算器は整数演算を目的としているため、浮動小数点のようなデータに対する演算を行なうためには、「デコード」、「演算」および「エンコード」の各処理を経る必要があり、非常に低速となってしまう。
【００１５】
また、マトリクス型超並列プロセッサは、たとえば１０２４並列で演算処理を行なうため、まとまった量のデータに対する演算でなければ性能を発揮することができない。したがって、小タップのフィルタ処理など、並列度が小さくデータを頻繁に入れ替える必要がある演算には適していない。
【００１６】
一方、浮動小数点演算器は、通常ＣＰＵとコプロセッサ接続されており、ＣＰＵが命令およびデータの供給を制御している。また、１つの浮動小数点演算器が１度に処理できる演算は１種類であり、１演算は複数サイクルで処理される。したがって、パイプラインに命令を連続的に供給すると共に、レジスタにデータを連続的に供給することによって性能を発揮させることは可能ではあるが、ＣＰＵが介在して制御を行なうため効率よく稼動させることは難しい。
【００１７】
近年、組み込み機器分野においては、低消費電力と高速演算性能とが要求されており、特に、車載機器などでは安全性向上のために画像処理と信号処理とを組み合わせたシステムが採用されつつある。したがって、このようなシステムでは、画像処理と信号処理とを効率的に行なうことが可能な機構が熱望されている。
【００１８】
本発明は、上記問題点を解決するためになされたものであり、その目的は、可変長データに対する演算処理と、固定長データに対する演算処理とを効率的に行なうことが可能なデータ処理装置およびそのデータ処理方法を提供することである。
【課題を解決するための手段】
【００１９】
本発明の一実施例によれば、複数のプロセッサを含んだデータ処理装置が提供される。データ処理装置は、ＳＩＭＤ方式の複数のＰＥ１と、複数のＰＥ１のそれぞれに対応して設けられる複数のＳＲＡＭと、複数のＰＥ２とを含む。複数のＰＥ１のそれぞれは、複数のＳＲＡＭの中の対応する１つのＳＲＡＭに格納されるデータに対して演算を行なう。また、複数のＰＥ２のそれぞれは、複数のＳＲＡＭの中の対応する複数個のＳＲＡＭに格納されるデータに対して演算を行なう。
【発明の効果】
【００２０】
本発明の一実施例によれば、複数のＰＥ１のそれぞれが、複数のＳＲＡＭの中の対応する１つのＳＲＡＭに格納されるデータに対して演算を行ない、複数のＰＥ２のそれぞれが、複数のＳＲＡＭの中の対応する複数個のＳＲＡＭに格納されるデータに対して演算を行なうので、複数のＳＲＡＭを共有することができ、可変長データに対する演算処理と、固定長データに対する演算処理とを効率的に行なうことが可能となる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施の形態におけるデータ処理装置の構成例を示すブロック図である。
【図２】ＳＲＡＭ２の内部構成をさらに詳細に説明するための図である。
【図３】ＰＥ１（５）の内部構成をさらに詳細に説明するための図である。
【図４】ＰＥ２（７）の内部構成をさらに詳細に説明するための図である。
【図５】ＥＣＭ４の内部構成およびその動作を説明するための図である。
【図６】直交変換器１０の動作を説明するための図である。
【図７】命令ＲＡＭ１１に格納されるマイクロコードプログラムの一例を示す図である。
【図８】上述のＶＬＩＷ命令を用いたアドレッシング制御を説明するための図である。
【図９】図１に示すデータ処理装置１００を含んだシステムの処理手順を説明するためのフローチャートである。
【図１０】ＰＥ１（５）によるＰＥ１命令実行時の処理手順を説明するためのフローチャートである。
【図１１】ＰＥ２（７）によるＰＥ２命令実行時の処理手順を説明するためのフローチャートである。
【図１２】本発明の第２の実施の形態における周辺監視システムのミリ波レーダの信号処理の一例を示す図である。
【図１３】本発明の第２の実施の形態におけるＦＰＵによって処理される浮動小数点値のデータ構造を説明するための図である。
【図１４】本発明の第２の実施の形態における周辺監視システムのデータ処理装置のデータ配置を説明するための図である。
【図１５】本発明の第２の実施の形態における周辺監視システムの処理手順を説明するためのフローチャートである。
【図１６】ＦＰＵ７による浮動小数点演算の一例を示す図である。
【図１７】本発明の第２の実施の形態におけるデータ処理装置のアドレッシングモードの一例を示す図である。
【図１８】本発明の第２の実施の形態におけるシステムの他の一例を示す図である。
【発明を実施するための形態】
【００２２】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるデータ処理装置の構成例を示すブロック図である。このデータ処理装置１００は、バスコントローラ１と、ＳＲＡＭ（Static Random Access Memory）アレイ３と、エントリコミュニケータ（ＥＣＭ）４と、ＰＥ１演算アレイ６と、ＰＥ２演算アレイ８と、直交変換器１０と、命令ＲＡＭ１１と、コントローラ１２とを含む。また、このデータ処理装置１００は、汎用ＣＰＵ１３、ＤＭＡＣ（Direct Memory Access Controller）１４および外部ＲＡＭ１５と接続されている。
【００２３】
汎用ＣＰＵ１３は、外部ＲＡＭ１５に格納されるマイクロコードプログラムを読み出し、データ処理装置１００の内部バス２３を介して命令ＲＡＭ１１に転送する。データ処理装置１００は、命令ＲＡＭ１１に格納されたマイクロコードプログラムを実行することによって演算処理を行なう。このマイクロコードプログラムの転送は、ＤＭＡＣ１４によるＤＭＡ転送であってもよい。
【００２４】
また、汎用ＣＰＵ１３は、ＤＭＡＣ１４を制御して、外部ＲＡＭ１５に格納される演算対象データをデータ処理装置１００にＤＭＡ転送することによって、データ処理装置１００に演算対象データを与える。
【００２５】
バスコントローラ１は、データ処理装置１００の内部バスの制御を行なう。たとえば、ＤＭＡＣ１４によってＤＭＡ転送されたデータを受け、直交変換器１０に入力させる。直交変換器１０は、入力したデータをそのまま、または直交変換してＳＲＡＭアレイ３に書き込む。また、バスコントローラ１は、汎用ＣＰＵ１３からの要求により、ＳＲＡＭアレイ３からデータを読み出して直交変換器１０に出力する。直交変換器１０は、入力したデータをそのまま、または直交変換して外部ＲＡＭ１５にＤＭＡ転送する。
【００２６】
ＰＥ１演算アレイ６は、２ビットの細粒度演算コアであるＰＥ１（５）を２５６個有しており、ＰＥ１（５）のそれぞれが少ビット単位で繰り返し演算処理を行なうことにより、任意ビット長データの演算を行なうことができる。ＰＥ１（５）による処理時間は処理対象データのビット長に依存しており、主に信号処理の初段の処理、たとえばＡ／Ｄ変換されたデータの入力直後の処理や、画像処理などの短ビット長の単純な整数演算を大量に行なう処理に適している。なお、ＰＥ１（５）の数は、これに限られるものではない。
【００２７】
ＰＥ２演算アレイ８は、３２ビットの粗粒度演算コアであるＰＥ２（７）を８個有しており、ＰＥ２（７）のそれぞれが固定ビット長データの演算を行なうことができる。ＰＥ２（７）による処理時間は処理対象データのビット長には依存せず、演算するデータ数のみに依存する。ＰＥ２（７）は、固定ビット長で演算が行なえるため、浮動小数点演算器などのように特殊な演算を行なうことができ、信号処理に適している。また、ＰＥ２（７）は、細粒度演算器に比べて並列度が小さいため、少ないデータの処理にも適している。なお、ＰＥ２（７）の数は、これに限られるものではない。
【００２８】
ＳＲＡＭアレイ３は、２ビットバスのＳＲＡＭｓ（２）を２５６個有している。図１に示すように、２５６個のＰＥ１（５）と、８個のＰＥ２（７）とがＥＣＭ４を介して２５６個のＳＲＡＭｓ２に接続されている。１つのＳＲＡＭｓ２が１つのＰＥ１（５）に対応するように接続され、後述のように全てのＰＥ１（５）が同時にサイクル単位で１ビットまたは２ビットのデータを読み書き可能な構成となっている。なお、ＳＲＡＭｓ２の数は、これに限られるものではない。
【００２９】
また、３２個のＳＲＡＭｓ２が１つのＰＥ２（７）に対応するように接続され、３２ビットのデータがビット分解されて、３２個のＳＲＡＭｓ（２）のそれぞれに１ビットずつ格納される。これによって、ＰＥ２（７）がサイクル単位で３２ビット長のデータの読み出し／書き込みを行なえるようになる。
【００３０】
コントローラ１２は、命令ＲＡＭ１１に格納されるマイクロコードプログラムを順次読み出して解釈し、ＳＲＡＭアレイ３、ＥＣＭ４、ＰＥ１アレイ６、ＰＥ２アレイ８を制御して、演算処理を行なう。
【００３１】
図２は、ＳＲＡＭ２の内部構成をさらに詳細に説明するための図である。ＳＲＡＭ２は、２５６ビットのＳＲＡＭ１６を４個有しており、これらのＳＲＡＭ１６が連続したアドレスに配置されている。アドレスを指定することによって、ＳＲＡＭ１６のそれぞれの任意の位置の１ビットデータ、または偶数ビット番目から格納される連続した２ビットデータを一度に読み出すことができる。これら４つのＳＲＡＭ１６は、同時にデータの読み出し／書込みが可能であり、それぞれをバンク１〜バンク４と呼ぶことにする。
【００３２】
図３は、ＰＥ１（５）の内部構成をさらに詳細に説明するための図である。ＰＥ１（５）は、ＳＲＡＭｓ２内のあるＳＲＡＭ１６（たとえば、バンク４）からの２ビットデータの読み出しと、別のＳＲＡＭ１６（たとえば、バンク３）に対する２ビットデータの読み出し／書き込みとを同時に行なうことができる。また、ＰＥ１（５）は、ＳＲＡＭ１６内の偶数ビット番目から格納される連続した２ビットデータ、または任意位置の１ビットデータの読み書きが可能である。
【００３３】
ＰＥ１（５）は、内部に演算用レジスタ（Ｘ０，Ｘ１）１７を有しており、バンク４から読み込んだ２ビットのデータをこの演算用レジスタ１７に格納する。それと同時に、ＰＥ１（５）は、バンク３から２ビットデータを読み出して、演算用レジスタ１７に格納される値との演算を行ない、バンク３の同じアドレスに上書きする。
【００３４】
ＰＥ１（５）は、２ビットの加算器と、ブースデコーダとを有しており、１ビットまたは２ビットデータの加減算、乗算、１ビット単位の論理演算を行なうことができる。加算器は、キャリー情報を内部レジスタに保持するため、１ビットまたは２ビットデータの演算を繰り返すことで、複数サイクルを要することにはなるが、任意ビット長データの演算を行なうことができる。
【００３５】
図４は、ＰＥ２（７）の内部構成をさらに詳細に説明するための図である。ＰＥ２（７）は、３２ビットデータの２つ分（たとえば、バンク３とバンク４）の読み出しと、３２ビットデータ（たとえば、バンク２）の書き込みとを同時に行なうことができる。ＰＥ８（７）は、３２個のＳＲＡＭ１６のそれぞれの下位１ビットをまとめて３２ビットのデータとして読み出し／書き込みを行なう。
【００３６】
ＰＥ２（７）は、内部に２つの３２ビットの演算用レジスタ（Ｒ０，Ｒ１）１８を有しており、読み出した２つの３２ビットデータをこれらの演算用レジスタ１８に格納する。また、ＰＥ２（７）は、パイプラインを有する構成の演算器であり、複数サイクル後に先程読み出した２つのデータの演算結果を別の内部レジスタ（Ｒ２）に出力する。その後、ＰＥ２（７）は、内部レジスタ（Ｒ２）に格納される演算結果を別バンクの３２個のＳＲＡＭ１６に書き込む。このようにして、パイプラインを停止させることなく、コントローラ１２によって要求された命令の連続実行が可能となる。
【００３７】
図５は、ＥＣＭ４の内部構成およびその動作を説明するための図である。図５（ａ）は、ＥＣＭ４の内部接続を示している。ＥＣＭ４は、２のべき乗距離（１，２，４，８，１６，３２，６４，１２８）にある演算コアに接続されており、接続されている演算コア間では１サイクルでデータを移動、交換することができる。図５（ａ）においては、セレクタ（ＳＥＬ）４１のそれぞれが、１，２，４の距離にある演算コアに接続される場合を示している。
【００３８】
２のべき乗距離にない演算コアへのデータ移動は、２のべき乗距離にある演算器へのデータ移動を複数回組み合わせることにより、シフトレジスタのような動作によって実現可能である。たとえば、６エントリ分のデータ移動を行なう場合には、４エントリ分の移動＋２エントリ分の移動のように、２サイクルに分けて実行される。
【００３９】
また、ＰＥ２（７）によって演算が行なわれる場合には、３２のＮ倍エントリ単位でデータ移動することで、演算コア間のデータ移動に対応することができる。
【００４０】
ＳＲＡＭｓ２から読み出されたデータは、指定されたＥＣＭ４内にブロードキャストされる。そして、コントローラ１２が全セレクタ４１に対して、いずれの距離からのデータを読み出すかを指定し、選択されたデータのみがＰＥ１（５）に入力される。そのため、全エントリのデータは、等しく同じ距離を移動することになる。
【００４１】
２ビット演算コアであるＰＥ１（５）に演算を行なわせる場合には、ＥＣＭ４を使用してデータを移動することで演算対象のデータを入れ替えることができる。また、ＰＥ２（７）に演算を行なわせる場合には、演算対象のデータが３２個のＳＲＡＭｓ２にまたがって格納されているため、３２未満の距離でデータを移動させるとデータのビットシフトを行なうことができる。逆に、３２以上の距離でデータを移動させると演算対象のデータを入れ替えることができる。
【００４２】
図５（ｂ）は、ＥＣＭ４を用いた演算処理の一例を示す図である。まず、ステップ１においては、ＳＲＡＭ１６のエントリ＃０〜＃３に格納されるデータａ０〜ａ３がテンポラリレジスタ（Ｔｅｍｐ．Ｒｅｇ．）にロードされる。
【００４３】
ステップ２において、ＥＣＭ４によってテンポラリレジスタに格納されるデータａ０〜ａ３が１ビットずつシフトされる。そして、ステップ３において、ＳＲＡＭ１６に格納されるデータｂ０〜ｂ３が読み出されて、テンポラリレジスタに格納されるデータとの演算が行なわれ、ＳＲＡＭ１６のデータｂ０〜ｂ３が格納されていたのと同じアドレスに演算結果が上書きされる。
【００４４】
図５（ｃ）は、図５（ａ）に示すセレクタ４１の内部構成をさらに詳細に説明するための図である。セレクタ４１は、ＮチャネルＭＯＳトランジスタ４２−１〜４２−ｋと、ＰチャネルＭＯＳトランジスタ４３および４６と、インバータ４４および４５とを含む。
【００４５】
ＶＣＨ＿ＩＮ＿１〜ＶＣＨ＿ＩＮ＿ｋに、２のべき乗距離にあるエントリの出力が接続される。ＶＣＨ＿ＳＥＬ＿１〜ＶＣＨ＿ＳＥＫ＿ｋのいずれか１つがハイレベル（以下、Ｈレベルと略す。）となって、そのＮチャネルＭＯＳトランジスタに接続されるエントリの出力が選択される。
【００４６】
セレクタ（ＳＥＬ）５１の一方の端子には、セレクタ４１によって選択されたエントリの出力が接続され、他方の端子には、そのＰＥ１（５）に対応するＳＲＡＭｓ２の出力が接続される。セレクタ（ＳＥＬ）５１は、ＶＣＨ＿ＩＥ信号に応じて、セレクタ４１によって選択されたエントリの出力と、ＰＥ１（５）に対応するＳＲＡＭｓ２の出力とのいずれかを選択して出力する。
【００４７】
テンポラリレジスタ５２は、セレクタ（ＳＥＬ）５１からの出力を一時的に保持し、セレクタ（ＳＥＬ）５３に出力する。セレクタ（ＳＥＬ）５３は、テンポラリレジスタ５２に保持される値と、ＰＥ１（５）に対応するＳＲＡＭｓ２の出力とのいずれかを選択して出力する。
【００４８】
他のエントリにデータを転送するときにＶＣＨ＿ＯＥ信号がＨレベルとなり、バッファ５４がセレクタ（ＳＥＬ）５３から出力される値を他のエントリに出力する。また、セレクタ（ＳＥＬ）５３から出力される値に対して演算を行なう場合には、ＡＬＵ５５がその演算結果（ＡＬＵ＿ＯＵＴ）を出力する。
【００４９】
たとえば、図５（ｂ）のステップ１に示すようにテンポラリレジスタにデータａ０〜ａ３がロードされる場合には、セレクタ（ＳＥＬ）５１がＳＲＡＭｓ２の出力（ＳＲＡＭ＿ＯＵＴ）を選択してテンポラリレジスタ５２に出力する。テンポラリレジスタ５２は、その値を保持する。
【００５０】
図５（ｂ）のステップ２に示すように、テンポラリレジスタが保持する値をシフトする場合には、セレクタ５３がテンポラリレジスタ５２が保持する値を選択して出力する。バッファ５４は、セレクタ５３から出力される値をＶＣＨ＿ＯＵＴに出力する。このとき、セレクタ４１は、隣のエントリからの出力を選択するように設定されており、セレクタ５１は、隣のエントリのデータを選択してテンポラリレジスタ５２に出力する。テンポラリレジスタ５２は、その値を保持することによって、図５（ｂ）のステップ２に示すシフト動作が完了する。
【００５１】
図５（ｂ）のステップ３に示すように、ＰＥ１（５）が演算を行なう場合には、演算器（ＡＬＵ）５５が、セレクタ（ＳＥＬ）５３を介してテンポラリレジスタ５２に保持される値を受けて演算を行なう。
【００５２】
図６は、直交変換器１０の動作を説明するための図である。直交変換器１０は、２系統のデータ入出力ポートを有しており、一方のポート２０を介して外部ＲＡＭ１５に格納されるデータを受け、直交変換した後のデータを他方のポート２１を介してＳＲＡＭ１６に格納するか、または、直交変換せずに同じデータを他方のポート２１を介してＳＲＡＭ１６に格納する。
【００５３】
逆に、直交変換器１０は、ポート２１を介してＳＲＡＭ１６に格納されるデータを受け、直交変換した後のデータをポート２０を介して外部ＲＡＭ１５に転送するか、または、直交変換せずに同じデータをポート２０を介して外部ＲＡＭ１５に転送することも可能である。
【００５４】
また、直交変換器１０は、ポート２１を介してＳＲＡＭ１６に格納されるデータを受け、直交変換した後のデータを再度ポート２１を介してＳＲＡＭ１６に格納することも可能である。
【００５５】
図６（ａ）は、ＰＥ１（５）用のデータをＳＲＡＭ１６に格納するときの直交変換器１０の動作を示している。図６（ａ）においては、外部ＲＡＭ１５に格納される８ビット長データ８個をＰＥ１（５）用に転送する場合を示している。なお、３２ビット長データを３２個受けて直交変換し、ＳＲＡＭ１６に転送するようにしてもよい。
【００５６】
上述のように、ＰＥ１（５）が使用するデータは対応する１つのＳＲＡＭ１６内にビットストリームとして格納される必要がある。そのため、直交変換器１０は、ポート２０を介して外部ＲＡＭ１５から８ビット長のデータを受け、８個のデータを順次バッファリングする。そして、直交変換器１０は、バッファリングした各データの同じビット位置にあるデータを８個まとめて、ポート２１を介してＳＲＡＭ１６にデータ２２を転送する。
【００５７】
そして、次のビット位置にあるデータを８個まとめて、次のアドレスのＳＲＡＭ１６に転送する。これを繰り返すことによって、外部から入力されたデータを直交変換し、ＰＥ１（５）用データとしてＳＲＡＭ１６に格納することができる。
【００５８】
図６（ｂ）は、ＰＥ２（７）用のデータをＳＲＡＭ１６に格納するときの直交変換器１０の動作を示している。図６（ｂ）においては、外部メモリ１５に格納される８ビット長データをＰＥ２（７）用に転送する場合を示している。なお、３２ビット長データを受けて、そのままＳＲＡＭ１６に転送するようにしてもよい。
【００５９】
ＰＥ２（７）用のデータは、３２個のＳＲＡＭ１６にまたがって格納される必要があるため、直交変換器１０はレジスタ操作による直交変換を行なわずにデータをＳＲＡＭ１６に転送する。直交変換器１０は、ポート２０を介して外部ＲＡＭ１５から８ビット長のデータを受け、ビット分割をせずにそのままポート２１を介してＳＲＡＭ１６にデータ２３を転送する。
【００６０】
このようにして、直交変換器１０は、同一のＳＲＡＭ内にＰＥ１（５）用のデータと、ＰＥ２（７）用のデータとを混在して格納することが可能となる。
【００６１】
図７は、命令ＲＡＭ１１に格納されるマイクロコードプログラムの一例を示す図である。命令には、“コントローラ命令”、“ＰＥ１命令”、“ＰＥ２命令”の３種類があり、これらを組み合わせたＶＬＩＷ命令として命令ＲＡＭ１１に格納される。
【００６２】
図７（ａ）に示すように、ＭＯＤＥレジスタの設定にかかわらず、命令の最上位ビットが“１”の場合には、コントローラ命令であることを示す。また、命令の最上位ビットが“０”の場合には、ＰＥ１命令またはＰＥ２命令であることを示す。
【００６３】
図７（ｂ）に示すように、ＭＯＤＥレジスタの設定が“０”であり、かつ命令の最上位ビットが“０”の場合には、コントローラ命令とＰＥ１命令との混在であることを示す。図７（ｂ）においては、ＰＥ１命令として、“ｌｏａｄ命令”、“ａｌｕ命令”、“ｍｏｄｅ命令”が記述されている。なお、“ｍｏｄｅ命令”は、１ビットと２ビットとの切り替えを行なう命令である。
【００６４】
図７（ｃ）に示すように、ＭＯＤＥレジスタの設定が“１”であり、かつ命令の最上位ビットが“０”の場合には、コントローラ命令とＰＥ２命令との混在であることを示す。
【００６５】
図７（ｄ）に示すように、コントローラ１２は、まず命令の最上位ビットをデコードし、これが“１”の場合にはコントローラ命令、“０”の場合にはＰＥ１命令またはＰＥ２命令と判断する。そして、コントローラ１２は、ＭＯＤＥレジスタの設定によってＰＥ１命令であるか、ＰＥ２命令であるかを判断する。
【００６６】
コントローラ１２は、コントローラ命令によってＭＯＤＥレジスタ設定を変更することができるため、ＰＥ１演算器およびＰＥ２演算器の選択は、命令の実行時に動的に行なうことができる。また、コントローラ１２は、命令が“ＰＥ１命令”または“ＰＥ２命令”とを含む場合には、個々の演算器の命令だけでなくコントローラ命令のサブセットを含めて、複数の命令を同時に実行することができる。
【００６７】
コントローラ１２は、命令がＰＥ１命令を含む場合には、ＰＥ１（５）に“ｌｏａｄ命令”と“ａｌｕ命令”とを出力する。ＰＥ１（５）は、図３に示すように、“ｌｏａｄ命令”によって、ＳＲＡＭ１６から２ビットデータをＰＥ１（５）内のレジスタに読み込み、“ａｌｕ命令”によってＳＲＡＭ１６から読み出したデータとレジスタのデータとの演算を行ない、演算結果をＳＲＡＭ１６の２ビットに上書きする。この動作を１サイクルで行なうことができるため、これを連続的に行なうことによって任意ビット長データの演算を行なうことができる。
【００６８】
コントローラ１２は、命令がＰＥ２命令を含む場合には、ＰＥ２（７）にＰＥ２命令を出力する。ＰＥ２（７）は、内部にパイプラインを有した高度な演算を行なうことができる演算コアであり、図４に示すように、演算の途中結果を格納するレジスタ１８を有している。ＰＥ２（７）は、コントローラ１２から受けたＰＥ２命令によって、ＳＲＡＭ１６からデータを必要個数だけ読み出し、内部のシーケンサにしたがって演算を行なう。そして、ＰＥ２（７）は、演算結果をレジスタを経由して再度ＳＲＡＭ１６に遅延書き込みする。
【００６９】
一般的に、ＰＥ２（７）によるデータの入力から演算結果の出力まで数サイクルを要するが、内部レジスタへのデータ読み出しと内部レジスタからのデータ書き込みとを同時に行なうことができる。したがって、パイプライン処理を行なうことによって、コントローラ１２がＰＥ２（７）に対して連続的に演算要求を行なうことができ、見かけ上１演算／サイクルを実現することができる。
【００７０】
また、上述のように、ＳＲＡＭ１６が４バンクで構成されているため、ＰＥ２（７）の演算中であっても、すなわち最大３バンクにアクセスしていても、残り１バンクを用いてデータの入出力を行なうことができる。これによって、ＰＥ１（５）またはＰＥ２（７）による演算と、汎用ＣＰＵ１３またはＤＭＡＣ１４による外部ＲＡＭ１５とＳＲＡＭ１６との間のデータ転送とを並行して行なうことができ、システム全体の性能を向上させることができる。
【００７１】
図８は、上述のＶＬＩＷ命令を用いたアドレッシング制御を説明するための図である。なお、ここではアドレッシング制御について間単に説明するが、詳細な説明は第２の実施の形態において説明するものとする。
【００７２】
図８（ａ）は、コントローラ命令サブセット（ｖｉ命令）を示している。ｖｉ０において、“ｍｖｉｎｃ  ｍｐ，ｒ０，ｒ１”は、レジスタｒ０の値をレジスタｍｐに代入し、レジスタｒ０の値とレジスタｒ１の値とを加算してレジスタｒ０に代入することを示している。また、ｖｉ０において、“ｍｖｉｎｃ  ａｐ，ｒ２，ｒ３”は、レジスタｒ２の値をレジスタａｐに代入し、レジスタｒ２の値とレジスタｒ３の値とを加算してレジスタｒ２に代入することを示している。
【００７３】
図８（ｂ）は、コントローラ命令サブセットとＰＥ２命令（ＦＰＵ命令）とを含んだＶＬＩＷ命令を示している。加算命令“ｆａｄｄ  ａｐ２，ａｐ，ｍｐ”は、レジスタａｐの値とレジスタｍｐの値とを加算してレジスタａｐ２に格納することを示している。コントローラ命令として、図８（ａ）に示すｖｉ０命令が記述されているため、レジスタａｐにレジスタｒ２とレジスタｒ３とを加算した値が代入される。同様に、レジスタｍｐにレジスタｒ０とレジスタｒ１とを加算した値が代入される。これによって、次にデータを読み出すＳＲＡＭ１６のアドレス（ａｐ，ｍｐ）を、レジスタｒ３またはレジスタｒ１で制御することができる。
【００７４】
また、乗算命令“ｆｍｕｌ  ａｐ２，ａｐ，ｍｐ”は、レジスタａｐの値とレジスタｍｐの値とを乗算してレジスタａｐ２に格納することを示している。また、積和命令“ｆｍａｃ  ａｐ，ｍｐ”は、レジスタａｐの値とレジスタｍｐの値とを乗算してアキュムレータの値に順次加算することを示している。これらの命令についても同様に、ｖｉ０命令によってアドレッシング制御を行なうことができる。
【００７５】
図９は、図１に示すデータ処理装置１００を含んだシステムの処理手順を説明するためのフローチャートである。まず、汎用ＣＰＵ１３が、外部ＲＡＭ１５からマイクロコードプログラムを読み出して、データ処理装置１００内の命令ＲＡＭ１１に転送する（Ｓ１１）。そして、汎用ＣＰＵ１３またはＤＭＡＣ１４によって外部ＲＡＭ１５に格納される処理対象のデータが直交変換器１０に転送される。
【００７６】
次に、転送される処理対象のデータがＰＥ１用データであるか、ＰＥ２用データであるかが判定される（Ｓ１２）。ＰＥ１用データであれば（Ｓ１２，Ｙｅｓ）、直交変換器１０が処理対象データに対して直交変換を行ない（Ｓ１３）、処理対象データをデータレジスタバンク（ＳＲＡＭｓ２）に転送する（Ｓ１５）。また、ＰＥ２用データであれば（Ｓ１２，Ｎｏ）、直交変換器１０が処理対象データをそのままデータレジスタバンク（ＳＲＡＭｓ２）に転送する（Ｓ１５）。
【００７７】
次に、汎用ＣＰＵ１３は、実行開始アドレスを指定してコントローラ１２を起動させる（Ｓ１６）。
【００７８】
コントローラ１２は、命令ＲＡＭ１１からの命令読み出しを開始し、読み出した命令をデコードする（Ｓ１７）。そして、コントローラ１２は、命令がＰＥ１命令であるか、ＰＥ２命令であるかを判定する（Ｓ１８）。
【００７９】
ＰＥ１命令であれば（Ｓ１８，Ｙｅｓ）、コントローラ１２は、全てのＰＥ１（５）に対して実行命令を発行し（Ｓ１９）、ステップＳ１７に戻って以降の処理を繰り返す。また、ＰＥ２命令であれば（Ｓ１８，Ｎｏ）、コントローラ１２は、全てのＰＥ２（７）に対して実行命令を発行し（Ｓ２１）、ステップＳ１７に戻って以降の処理を繰り返す。
【００８０】
また、ＰＥ２命令でもなければ、すなわちコントローラ命令であれば（Ｓ２０，Ｎｏ）、コントローラ１２は、そのコントローラ命令を実行する（Ｓ２２）。このとき、演算完了を示す停止命令であれば（Ｓ２３，Ｙｅｓ）、コントローラ１２は、演算結果を外部ＲＡＭ１５に転送し（Ｓ２４）、処理を終了する。また、停止命令でなければ（Ｓ２３，Ｎｏ）、ステップＳ１７に戻って以降の処理を繰り返す。
【００８１】
図１０は、ＰＥ１（５）によるＰＥ１命令実行時の処理手順を説明するためのフローチャートである。まず、ＰＥ１（５）は、ＳＲＡＭ１６の指定番地１から演算対象データ（演算値１）を読み出す（Ｓ３１）。そして、ＰＥ１（５）は、演算値１と内部レジスタ値との演算を行なう（Ｓ３２）。
【００８２】
次に、ＰＥ１（５）は、ＳＲＡＭ１６の指定番地１に演算結果を上書きし（Ｓ３３）、ＳＲＡＭ１６の指定番地２から演算値２を読み出す（Ｓ３４）。そして、ＥＣＭ４によるデータ移動が有効か否かを判定する（Ｓ３５）。
【００８３】
ＥＣＭ４によるデータ移動が有効であれば（Ｓ３５，Ｙｅｓ）、指定されたデータ線（エントリ）からデータを読み込み、ＰＥ１（５）の内部レジスタに格納して（Ｓ３６）、処理を終了する。また、ＥＣＭ４によるデータ移動が無効であれば（Ｓ３５，Ｎｏ）、そのまま処理を終了する。
【００８４】
図１１は、ＰＥ２（７）によるＰＥ２命令実行時の処理手順を説明するためのフローチャートである。まず、ＰＥ２（７）は、ＳＲＡＭ１６の指定番地１から演算値１を読み出し、内部レジスタに演算値１を格納する（Ｓ４１）。また、ＳＲＡＭ１６の指定番地２から演算値２を読み出し、内部レジスタに演算値２を格納する（Ｓ４２）。
【００８５】
次に、ＰＥ２（７）は、演算値１と演算値２との演算を行ない、内部レジスタに演算結果を格納する（Ｓ４３）。そして、ＳＲＡＭ１６の指定番地３に演算結果を格納し（Ｓ４４）、処理を終了する。
【００８６】
以上説明したように、本実施の形態におけるデータ処理装置によれば、ＰＥ１（５）のそれぞれに対応してＳＲＡＭｓ２が設けられると共に、３２個のＳＲＡＭｓ２に対応してＰＥ２（７）が設けられるようにしたので、ＰＥ１（５）とＰＥ２（７）とがＳＲＡＭｓ２を共有することが可能となった。
【００８７】
また、直交変換器１０は、ＰＥ１用データの場合にはデータに対して直交変換を行なってＳＲＡＭｓ２に格納し、ＰＥ２用データの場合にはデータをそのままＳＲＡＭｓ２に格納するようにしたので、ＳＲＡＭｓ２にＰＥ１用データとＰＥ２用データとを混在して格納することが可能となった。
【００８８】
また、コントローラ１２が、ＭＯＤＥレジスタの設定に応じてＰＥ１（５）およびＰＥ２（７）に対して選択的に演算を行なわせるようにしたので、ＰＥ１（５）に可変長ビットのデータの演算を行なわせ、ＰＥ２（７）に固定長ビットのデータの演算を行なわせるといった、演算器が得意とする演算を選択的に行なわせることが可能となった。
【００８９】
（第２の実施の形態）
本発明の第２の実施の形態は、第１の実施の形態において説明したデータ処理装置１００を車載機器の１つであるミリ波レーダによる周辺監視システムに適用するものである。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００９０】
図１２は、本発明の第２の実施の形態における周辺監視システムのミリ波レーダの信号処理の一例を示す図である。図示しないミリ波レーダによって得られた情報がＡＤＣ（Analog Digital Converter）６１によって１２ビット長のデジタルデータに変換されて、外部ＲＡＭ１５に格納される。データ処理装置１００は、第１の実施の形態において説明した手順によって、外部ＲＡＭ１５から１２ビット長のデータを入力し、桁合わせや符号拡張などによるゲイン処理、クリッピング処理を行なう（６２）。そして、間引き処理を行なった後、データを浮動小数点値に変換してローパスフィルタ等の信号処理演算を行ない（６３）、ＦＦＴ（Fast Fourier Transform）による周波数解析を行なう（６４）。
【００９１】
通常、汎用ＣＰＵなどは、１６、３２ビットの固定ビット長のレジスタを使用して演算を行なうが、ミリ波レーダのＡＤＣ６１から入力される１２ビット長のデータを処理する場合、使用しない上位ビット分の面積や消費電力が無駄になってしまう。このようなデータに対しては、細粒度演算器を用いる方が効率的に処理が行なえる。
【００９２】
しかしながら、細粒度演算器は、上述のように信号処理に必要な浮動小数点演算を高速に行なうことができない。そこで、本実施の形態における周辺監視システムでは、図１２に示すように、細粒度演算コアであるＰＥ１（５）がゲイン調整、クリッピング処理（６２）および間引き処理（６３）を行ない、その演算結果を浮動小数点値に変換した後、粗粒度演算コアであるＦＰＵがフィルタ処理（６３）およびＦＦＴによる周波数解析（６４）を行なうものである。
【００９３】
図１３は、本発明の第２の実施の形態におけるＦＰＵによって処理される浮動小数点値のデータ構造を説明するための図である。この浮動小数点値は、ＩＥＥＥ７５４によって規定される単精度の浮動小数点値データ構造であり、最上位の符号ビット（１ビット）と、８ビットの指数部と、２３ビットの仮数部とを含む。
【００９４】
図１４は、本発明の第２の実施の形態における周辺監視システムのデータ処理装置のデータ配置を説明するための図である。図１４に示すデータ処理装置は、図１に示す本発明の第１の実施の形態におけるデータ処理装置１００と比較して、ＰＥ２（７）をＦＰＵ７に置換した点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００９５】
また、図１５は、本発明の第２の実施の形態における周辺監視システムの処理手順を説明するためのフローチャートである。図１４および図１５を参照しながら、本実施の形態における周辺監視システムのミリ波レーダの信号処理について説明する。なお、コントローラ１２が命令ＲＡＭ１１に格納されるマイクロコードプログラムを実行することによって、これらの処理が行なわれる。
【００９６】
まず、外部ＲＡＭ１５に格納されるＡＤＣ６１からの１２ビット長のデータが順次直交変換器１０に入力される。直交変換器１０は、１２ビット長のデータ２５６個を直交変換し、図１４のデータ３１，３２（整数値１〜１６）のように格納する（Ｓ５１）。なお、図１４においては、整数値１〜１６のみが記載されているが、２５６個の整数値が２５６個のＳＲＡＭｓ２に格納されるものとする。
【００９７】
次に、コントローラ１２は、ＰＥ１（５）に整数値１〜２５６の演算を行なわせることによりゲイン調整およびクリッピング処理を行ない、１６ビット長のデータに丸める（Ｓ５２）。この処理は、全てのＰＥ１（５）によって並列に実行される。
【００９８】
次に、コントローラ１２は、ＥＣＭ４およびＰＥ１（５）を制御して丸めたデータに対して間引き処理およびフィルタ処理を行なう（Ｓ５３）。そして、フィルタ演算結果を浮動小数点値に変換し、ＦＰＵ用データ２３として浮動小数点値１〜６をＳＲＡＭｓ２に格納する（Ｓ５４）。この整数値から浮動小数点値への変換は、ＰＥ１（５）によって２５６個のデータを並列にデコード、エンコードすることによって行なうことができるが、ＦＰＵ７の機能を用いて行なうことも可能である。
【００９９】
次に、コントローラ１２は、ＦＰＵ７に浮動小数点値を用いたＦＦＴ演算を行なわせる（Ｓ５５）。ＦＦＴのバタフライ演算で必要となるデータ交換は、後述のようにＥＣＭ４を用いて行なうことが可能である。
【０１００】
細粒度演算コアであるＰＥ１（５）は２５６個のデータを並列に演算することが可能であるが、ＦＰＵ用のデータ構造では演算の並列度が８並列となってしまう。そのため、データ種別や処理内容に応じてＰＥ１（５）による演算と、ＦＰＵ７による演算とを適宜切り替える必要があるが、上述のようにコントローラ１２がマイクロコードプログラムを解釈することによってこの切り替えを動的に行なう。
【０１０１】
図１６は、ＦＰＵ７による浮動小数点演算の一例を示す図である。図１６においては、Ｃｎ＝Ｂｎ＋Ｄｎ、Ｇｎ＝Ｆｎ＋Ｈｎの演算を行なった後、Ａｎ＝Ｆｎ＋Ｄｎ、Ｅｎ＝Ｂｎ＋Ｈｎの演算を行なう場合を示している。
【０１０２】
まず、図１６（ａ）に示すように、演算に必要なデータＢｎ，Ｄｎ、Ｆｎ、Ｈｎがバンク２およびバンク４に転送されて配置される。バンク２の０〜３１エントリにデータＢｎが配置され、バンク２の３２〜６３エントリにデータＦｎが配置される。また、バンク４の０〜３１エントリにデータＤｎが配置され、バンク４の３２〜６３エントリにデータＨｎが配置される。なお、０〜３１エントリがＦＰＵ１に接続され、３２〜６３エントリがＦＰＵ２に接続されている。
【０１０３】
最初に、ＦＰＵ１およびＦＰＵ２が、Ｃｎ＝Ｂｎ＋ＤｎおよびＧｎ＝Ｆｎ＋Ｈｎの演算を同時に行なう。ＦＰＵ１とＦＰＵ２とがＳＩＭＤ接続されているため、それぞれがエントリの同じ位置にある異なる内容のデータを対象に同じ演算を行なう。汎用ＣＰＵなどを用いた場合には、ＣｎとＧｎとを別々に演算する必要があるが、本実施の形態においては、ＦＰＵ１およびＦＰＵ２がＳＩＭＤ型並列演算プロセッサによって構成されるため、ＣｎとＧｎとを同時に演算することができる。
【０１０４】
次に、図１６（ｂ）に示すように、ＰＥ１（５）およびＥＣＭ４によるエントリ間通信機能によって、データＢｎとＦｎとを交換する。上述のように、ＥＣＭ４は２のべき乗距離にあるエントリに接続しており、１サイクル毎に最大２ビットの値を別エントリに移動、交換することができる。
【０１０５】
このデータ移動、変換はＰＥ１（５）を用いて行なわれるため、ＦＰＵ用に格納された浮動小数点値が１ビット毎に分割され、個々のエントリに対応するＰＥ１（５）が３２エントリ上下のエントリ値と交換を行なう。このとき、ＰＥ１（５）は最大２ビット単位で処理を行なうことができるため、連続的に配置された２つの浮動小数点値を同時に移動、交換することができる。
【０１０６】
最後に、図１６（ｃ）に示すように、ＦＰＵ１およびＦＰＵ２が、Ａｎ＝Ｆｎ＋ＤｎおよびＥｎ＝Ｂｎ＋Ｈｎの演算を同時に行なう。
【０１０７】
ここで、Ｂｎ、Ｄｎ、Ｆｎ、Ｈｎのそれぞれに属するデータが１０個ずつある場合における演算量を考える。汎用ＣＰＵなどでは、全ての演算をシーケンシャルに行なう必要があるため、Ｃｎ、Ｇｎ、Ａｎ、Ｅｎを求めるためにそれぞれ１０回ずつの演算が必要であり、合計４０回の演算が必要となる。また、データ交換を行なうためには、テンポラリレジスタｔｍｐ＝Ｂｎ、Ｂｎ＝Ｆｎ、ｔｍｐ＝Ｆｎなどのように３回のデータコピーが必要となる。したがって、ＣｎおよびＧｎ、またはＡｎおよびＥｎのデータ演算、移動処理回数は、それぞれ１０＋３０＋１０＝５０回となる。
【０１０８】
一方、本実施の形態においては、ＦＰＵ１およびＦＰＵ２がＣｎおよびＧｎの演算、またはＡｎおよびＥｎの演算を同時に行なうことができるため、演算回数はそれぞれ１０回となる。また、ＰＥ１（５）およびＥＣＭ４によって２つの浮動小数点値を同時に交換できる。したがって、図１６（ａ）に示すステップ１の演算処理が１０回、図１６（ｂ）に示すステップ２のデータ移動処理が５回、図１６（ｃ）に示すステップ３の演算処理が１０回の合計２５回となる。
【０１０９】
このように、本実施の形態においては、データ演算、データ移動回数を削減することができる。さらに、ＰＥ１（５）は、ＦＰＵ用データのそれぞれのビットに対して個別に処理を行なえるため、たとえば浮動小数点値の絶対値を計算する場合には、図１４に示すようにＦＰＵ用に格納されたデータの符号ビット３３に対応するＰＥ１（５）のみを動作させることで、ＦＰＵを動作させることなく絶対値計算を行なえることになり、消費電力を削減することができる。この絶対値計算の処理としては、符号ビットが“１”であれば符号ビットを“０”にし、符号ビットが“０”であればそのままとする。
【０１１０】
図１７は、本発明の第２の実施の形態におけるデータ処理装置のアドレッシングモードの一例を示す図である。信号処理においては様々なアドレッシングモードが必要となるが、図１７（ａ）〜図１７（ｃ）にその具体例を示している。
【０１１１】
図１７（ａ）は、配列内の対応する各要素を演算し、その演算結果を別の配列の対応する要素に格納する場合を示す。ＦＰＵ１がＡｎ＝Ｂｎ×Ｃｎの演算を行なって演算結果Ａｎを格納する場合であるが、データの読み出すアドレスおよびデータを書き込むアドレスの全てが順次インクリメントされる。
【０１１２】
図１７（ｂ）は、配列内の全ての要素Ｂｎに固定係数Ｃ０を乗算し、その演算結果を別の配列の対応する要素に格納する場合を示す。要素Ｂｎを読み出すアドレスおよび要素Ａｎを書き込むアドレスが順次インクリメントされ、要素Ｃ０を読み出すアドレスが固定とされる。
【０１１３】
図１７（ｃ）は、配列Ｂｎと配列Ｃｎとの乗算結果を順次加算（積算）してアキュムレータに格納しておき、最後にその総和をＡ０に格納する場合を示す。要素ＢｎおよびＣｎを読み出すアドレスが順次インクリメントされ、要素Ａ０を書き込むアドレスが固定とされる。この処理は、配列の対応する要素同士の乗算結果を積算することができるので、信号処理でよく使用される畳み込み積分演算などに有効である。
【０１１４】
これらのアドレッシングモードは、コントローラ１２が実行するＶＬＩＷ命令によって実現可能である。図８に示したように、コントローラ１２が、ＰＥ１（５）およびＦＰＵ７が演算対象とするデータの位置を演算の種類と共に指定する。コントローラ１２は、このデータ位置を内部のレジスタ（ｍｐ，ａｐ，ｍｐ２，ａｐ２）に保持しており、これらのレジスタの値をＦＰＵ７の演算命令と同じサイクルで変更することによって、任意の飛び幅でデータをアクセスすることができる。
【０１１５】
コントローラ１２は、共通命令の１つとして図８（ａ）に示すようなｖｉ命令を実行する。ｖｉ命令は、よく使用されるコントローラ１２のレジスタ演算式を定義した８個の命令群であり、１つの制御命令と２つの操作命令とを同時に指定することができる。どのｖｉ命令を読み出すかはコントローラ命令サブセットによって指定される。残りのビットには、ＰＥ１（５）やＦＰＵ７の演算命令が記述される。
【０１１６】
図８（ｂ）に示すように、１行に記述されたコントローラ命令サブセットとＦＰＵ命令とが同時に実行される。たとえば、加算命令が実行されると同時に、コントローラ１２がコントローラ命令サブセットで指定されたｖｉ命令を解釈してレジスタの値を更新する。
【０１１７】
“ｍｖｉｎｃ  ｍｐ，ｒ０，ｒ１”においては、レジスタｒ０に配列の開始位置を指定し、レジスタｒ１に飛び幅を指定することによって、図１７に示すような連続したアドレッシングだけでなく、一定飛び幅のアドレッシングモードも実現することができる。ミリ波レーダ処理で使用されるＦＦＴにおいてはバタフライ演算が行なわれるが、このＶＬＩＷ命令によってバタフライ演算を効率よく行なうことができる。
【０１１８】
図１８は、本発明の第２の実施の形態におけるシステムの他の一例を示す図である。図１８に示すデータ処理装置は、図１に示す本発明の第１の実施の形態におけるデータ処理装置１００と比較して、ＰＥ２（７）を３２ビット整数積和演算器（ＭＡＣ）７に置換した点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【０１１９】
ＰＥ１（５）によって、図１８に示すＭＡＣ演算用データ（整数値１７〜２２）の任意ビット位置のマスク処理を行なったり、ＥＣＭ４によって整数値１７の上位２ビットを整数値２０の下位にビットシフトしたりすることが可能となる。
【０１２０】
一般的なＳＩＭＤ型並列演算器においては、各演算器に対応したデータを入れ替えたりする機能が不十分であったため、汎用ＣＰＵなどがデータ交換を行なったり、ビットシフトしたりする必要があった。本実施の形態においては、ＭＡＣ用データを２５６ビットの循環型データと見なすことができ、ＰＥ１（５）がこれらの任意ビットを個別に演算することが可能となる。
【０１２１】
以上説明したように、本実施の形態における周辺監視システムによれば、入力データに応じて使用する演算コアを選択するようにマイクロコードプログラムを作成することにより、効率的に演算処理が行なえるようになり、電力性能比を向上させることが可能となった。
【０１２２】
また、ＳＩＭＤ接続したＦＰＵ７を並列に動作させて浮動小数点演算を行なうようにしたので、単一の演算しか実行できないＣＰＵやＤＳＰよりも高速に演算処理を行なうことが可能となった。
【０１２３】
また、ＰＥ１（５）およびＥＣＭ４を用いてＦＰＵ間のデータ移動、データ交換を行なうようにしたので、少ないオペレーション数でデータ移動、データ交換を行なうことが可能となった。
【０１２４】
また、データが連続して並んでいない場合であっても、コントローラ１２がＶＬＩＷ命令によるレジスタ演算を行なうことによって、柔軟なアドレッシングモードをサポートすることが可能となった。
【０１２５】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２６】
１  バスコントローラ、２  ＳＲＡＭｓ、３  ＳＲＡＭアレイ、４  ＥＣＭ、５  ＰＥ１、６  ＰＥ１演算アレイ、７  ＰＥ２、８  ＰＥ２演算アレイ、９  レジスタ、１０  直交変換器、１１  命令ＲＡＭ、１２  コントローラ、１３  汎用ＣＰＵ、１４  ＤＭＡＣ、１５  外部ＲＡＭ、１６  ＳＲＡＭ、２３  内部バス、４１  セレクタ、４２−１〜４２−ｋ  ＮチャネルＭＯＳトランジスタ、４３，４６  ＰチャネルＭＯＳトランジスタ、４４，４５  インバータ、５１，５３  セレクタ、５２  テンポラリレジスタ、５４  バッファ、５５  ＡＬＵ、１００  データ処理装置。
【図１】
2012174016.tif 000003
【図２】
2012174016.tif 000004
【図３】
2012174016.tif 000005
【図４】
2012174016.tif 000006
【図５】
2012174016.tif 000007
【図６】
2012174016.tif 000008
【図７】
2012174016.tif 000009
【図８】
2012174016.tif 000010
【図９】
2012174016.tif 000011
【図１０】
2012174016.tif 000012
【図１１】
2012174016.tif 000013
【図１２】
2012174016.tif 000014
【図１３】
2012174016.tif 000015
【図１４】
2012174016.tif 000016
【図１５】
2012174016.tif 000017
【図１６】
2012174016.tif 000018
【図１７】
2012174016.tif 000019
【図１８】
2012174016.tif 000020