(57)【要約】【課題】演算とデータ転送とを同時に行なうことが可能なプロセッサを提供すること。【解決手段】メモリコントローラ１７は、ＰＥコントローラ１９から出力されるＰＥ１１が使用しない空きバンク情報と、バスコントローラ１８から出力されるデータ転送に使用される使用バンク情報とが一致する場合に、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。したがって、ＰＥ１１によるデータ読み出しおよびデータ書き込みと、外部との間のデータ転送とが並行して行なわれ、ＰＥ１１の処理時間を短縮することが可能となる。【選択図】図４
2008102599.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを並列に演算する演算手段と、
複数のバンクに分けられた記憶手段と、
外部と前記複数のバンクとの間のデータ転送の経路と、前記複数のバンクと前記演算手段との間のデータ読み出しおよびデータ書き込みの経路とを切り換える切換手段と、
前記演算手段によって使用されない空きバンク情報に基づいて、前記切換手段による切り換えを制御する制御手段とを含む、プロセッサ。
【請求項２】
前記制御手段は、前記空きバンク情報と前記外部との間のデータ転送に使用される使用バンク情報とが一致する場合に、前記外部との間のデータ転送と前記演算手段によるデータ読み出しおよびデータ書き込みとを可能にする、請求項１記載のプロセッサ。
【請求項３】
前記制御手段は、前記空きバンク情報と前記外部との間のデータ転送に使用される使用バンク情報とが一致しない場合に、前記外部との間のデータ転送を優先する、請求項１または２記載のプロセッサ。
【請求項４】
前記制御手段は、前記空きバンク情報と前記外部との間のデータ転送に使用される使用バンク情報とが一致しない場合に、前記演算手段によるデータ読み出しおよびデータ書き込みを優先する、請求項１または２記載のプロセッサ。
【請求項５】
前記制御手段は、前記空きバンク情報と前記外部との間のデータ転送に使用される使用バンク情報とが一致しない場合、前記演算手段によるデータ読み出しおよびデータ書き込みを優先し、前記外部との間のデータ転送に使用されるバンクが所定時間空かない場合には、前記演算手段によるデータ読み出しおよびデータ書き込みを停止して、前記外部との間のデータ転送を優先する、請求項１または２記載のプロセッサ。
【請求項６】
前記制御手段は、前記演算手段によって使用されないバンクを、前記外部との間のデータ転送で使用されるバンクとする、請求項１記載のプロセッサ。
【請求項７】
前記制御手段は、前記演算手段によって使用されないバンクが複数ある場合には、当該複数のバンクを前記外部との間のデータ転送で使用されるバンクとする、請求項６記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算すべきデータを複数部分に分け、複数部分に対して逐次演算を行なうプロセッサに関し、特に、演算の実行中にデータの入出力が可能なプロセッサに関する。
【背景技術】
【０００２】
近年、携帯端末機器の普及に伴い、音声や画像のような大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。一般に、このようなデジタル信号処理には、専用の半導体装置としてＤＳＰ（Digital Signal Processor）が用いられることが多い。しかしながら、処理対象のデータが非常に多い場合には、専用ＤＳＰを用いたとしても性能を飛躍的に向上させることは難しい。たとえば、演算対象のデータが１万組ある場合には、１つ１つのデータに対する演算を１マシンサイクルで実行できたとしても、演算のために最低でも１万サイクルが必要になる。すなわち、１つ１つのデータに対する処理は高速であるが、データ処理が直列であるため、データ量が多くなるとそれに比例して処理時間が長くなってしまう。
【０００３】
処理対象のデータが多い場合には、並列演算によって処理性能を向上させることが可能である。すなわち、演算器を複数個用意し、それらを同時に動作させることで複数のデータ処理を同時に行なうことが可能である。このとき、複数のデータに対して同じ演算を行なう場合には、ＳＩＭＤ（Single Instruction stream-Multiple Data stream）と呼ばれる方式を採用することにより、高い並列性を保ったまま演算器の面積を削減することが可能である。すなわち、データ処理器を複数用意するが、命令を解釈して処理を制御する制御部を共通にすることで、小さい面積で高い性能を発揮させることができる。
【０００４】
処理するデータが多い場合、算術演算の基本である加算をビットシリアルで行なった方が面積あたりの性能が上がる。たとえば、１ビット加算器３２個（以下、Ａとする。）と３２ビット加算器１個（以下、Ｂとする。）とを考える。これらＡおよびＢは、３２個の加算を行なうサイクル数は３２で同じである。しかし、１サイクル内で直列的に演算される長さは異なる。たとえば、Ｂを１ビット加算器の３２直列で実現した場合、ＡとＢとの面積は等しくなるが、演算時間はＢの方が３２倍長くなる。一方、Ｂをキャリールックアヘッドなどの高速演算器で実現した場合、Ｂの方が演算時間は短くなるが、面積はＡよりも大きくなる。したがって、Ａの方がＢよりも面積あたりの性能は高い。
【０００５】
また、乗算器の場合には、２次のブースのアルゴリズムを用いて２ビット処理を行なうと、１ビット処理に比べて部分積の加算の数を半分に減らすことができる。
【０００６】
このように、非常に多くの加算、乗算を行なう場合には、１ビットまたは２ビットのシリアル演算に基づくＳＩＭＤ方式により、面積あたりの性能を上げることが可能となる。また、この方式は、処理するデータのデータ幅が固定されないため、様々な用途に用いることができる。これに関連する技術として、下記の特許文献１および特許文献２に開示された発明がある。
【０００７】
特許文献１に開示されたデータ変換装置において、データ処理器は所定数のデータを同時に並行して処理が可能である。バッファメモリは、逐次的に入力されるデータを蓄えることができ、データ処理器に対しては処理に適したビット幅の単位で所定数のデータを同時に並行して入出力可能である。制御情報メモリは、データバッファ機能とは別の機能ＬＵＴ（Look Up Table）を指定する情報および使用領域情報を含むバッファメモリ制御情報データを記憶する。そして、バッファコントローラは、制御情報データに基づいてバッファメモリにデータバッファ機能領域とＬＵＴ機能領域とを割付けて各機能領域がデータ処理器への並列入出力に適した形になるように、バッファメモリとデータ処理器との間のデータ転送ラインを適応的に定める。
【０００８】
特許文献２に開示された画像処理装置においては、画像処理プロセッサに転送制御部が設けられる。転送制御部は、プロセッサ・アレー部が画像処理を行なっていないアイドル・サイクル・タイム中に、プロセス・コントローラより追加、更新の画像処理手順および画像処理のためのデータが転送され、ホストバッファがこれらを一時記憶する。そして、ホスト・バッファからプログラムＲＡＭ、データＲＡＭへ追加、更新の画像処理手順および画像処理のためのデータが転送される。
【特許文献１】特開２００３−２０３２２５号公報
【特許文献２】特開２００１−７６１２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ＳＩＭＤ方式のプロセッサは、データメモリに格納される演算データに対して演算を実行する。したがって、演算前に演算に使用されるデータを外部からデータメモリに入力し、演算後に演算結果のデータをデータメモリから外部に出力する必要があるため、データメモリのデータの入出力中はプロセッサが演算を行なうことができない。そのため、全体の処理時間が長くなるといった問題点があった。
【００１０】
上述した特許文献１に開示されたデータ変換装置は、演算に使用しないバッファにデータを蓄えておき、必要なときに、演算で使用するバッファに並列に転送するものであるため、プロセッサの処理時間を短縮することはできない。
【００１１】
また、特許文献２に開示された画像処理装置は、処理のアイドル・サイクル中にデータの入出力を行なうものであるため、アイドル・サイクルが少ない場合には処理時間を短縮することができない。
【００１２】
本発明は、上記問題点を解決するためになされたものであり、その目的は、演算とデータ転送とを同時に行なうことが可能なプロセッサを提供することである。
【課題を解決するための手段】
【００１３】
本発明の一実施例によれば、ＰＥ（Processor Element）と、複数のバンク０〜３と、スイッチングネットワークと、メモリコントローラとを含んだプロセッサが提供される。メモリコントローラは、ＰＥが使用しない空きバンク情報と、データ転送に使用される使用バンク情報とが一致する場合に、全ての通信が可能となるようにバンク０〜３およびスイッチングネットワークを制御する。
【発明の効果】
【００１４】
この実施例によれば、ＰＥによるデータ読み出しおよびデータ書き込みと、外部との間のデータ転送とが並行して行なわれ、ＰＥの処理時間を短縮することが可能となる。
【発明を実施するための最良の形態】
【００１５】
図１は、ビットシリアル演算を説明するための図である。ビットシリアル演算は、下位側ビットから順に行なわれる。まず、メモリマット１０２に格納されているデータａの下位ビットａ［０］がＡＬＵ（Arithmetic Logic Unit）１０１−１〜１０１−ｍに転送される。次に、データｂの下位ビットｂ［０］が同様にＡＬＵ１０１−１〜１０１−ｍに転送される。ＡＬＵ１０１−１〜１０１−ｍは、この２つの入力データを用いて加算演算を行なう。演算結果はｂ［０］に書込まれる。この処理がａ［１］およびｂ［１］に対しても行なわれる。加算演算においては桁上がりが生じる可能性があるため、この桁上がり値がｂ［２］に書込まれる。これによって、データａとデータｂとの加算が全てのエントリに対して完了し、演算結果がｂとして得られる。
【００１６】
図２は、ＰＥによる演算実行とデータの入出力とが同時に行なえない場合の問題点を説明するための図である。図２に示すように、データの入出力が行われているときに、ＰＥによる演算を停止させていたため、全体の処理時間が長くなるといった問題点がある。
【００１７】
図３は、メモリを演算用とＤＭＡ（Direct Memory Access）転送用との２バンクに分けたプロセッサの構成例を示す図である。このプロセッサは、ＰＥ１１１と、バンク０のローカルメモリ（以下、ＬＭ−バンク０と呼ぶ。）１１２と、バンク１のローカルメモリ（以下、ＬＭ−バンク１と呼ぶ。）１１３と、スイッチングネットワーク１１４と、メモリコントローラ（ＭＥＭ−ｃｎｔ）１１５と、ＰＥコントローラ（ＰＥ−ｃｎｔ）１１６とを含む。
【００１８】
ＬＭ−バンク０（１１２）には、外部バス１１７およびスイッチングネットワーク１１４を介して演算用のデータがＤＭＡ転送によって書き込まれる。ＬＭ−バンク０（１１２）に書き込まれたデータは、ＰＥ１１１によって演算用データとして読み出される。ＰＥ１１１による演算結果は、順次ＬＭ−バンク０（１１２）に書き込まれる。そして、ＬＭ−バンク０（１１２）に書き込まれた演算結果は、スイッチングネットワーク１１４および外部バス１１７を介してＤＭＡ転送によって外部に転送される。
【００１９】
同様に、ＬＭ−バンク１（１１３）には、外部バス１１７およびスイッチングネットワーク１１４を介して演算用のデータがＤＭＡ転送によって書き込まれる。ＬＭ−バンク１（１１３）に書き込まれたデータは、ＰＥ１１１によって演算用データとして読み出される。ＰＥ１１１による演算結果は、順次ＬＭ−バンク１（１１３）に書き込まれる。そして、ＬＭ−バンク１（１１３）に書き込まれた演算結果は、スイッチングネットワーク１１４および外部バス１１７を介してＤＭＡ転送によって外部に転送される。
【００２０】
スイッチングネットワーク１１４は、データの転送経路を切り換え、ＬＭ−バンク０（１１２）およびＬＭ−バンク１（１１３）のいずれか一方をＰＥ１１１のための演算用メモリとし、他方をデータ入出力用（ＤＭＡ転送用）メモリとする。
【００２１】
メモリコントローラ１１５は、ＰＥコントローラ１１６からの指示を受け、スイッチングネットワーク１１４の切り換えと、ＬＭ−バンク０（１１２）およびＬＭ−バンク１（１１３）のリード／ライト制御とを行なう。
【００２２】
ＰＥコントローラ１１６は、フェッチした命令のデコード結果に基づいて、ＰＥ１１１による演算の制御と、メモリコントローラ１１５に対する指示とを行なう。
【００２３】
図３に示すプロセッサにおいては、データの転送経路を切り換えて、２つのバンクの一方を演算用メモリとし、他方をＤＭＡ転送用メモリとするため、演算に使用しないデータメモリがデータメモリ全体の１／２を占めることになり、面積あたりの演算能力が低下するといった問題点がある。
【００２４】
（第１の実施の形態）
図４は、本発明の第１の実施の形態におけるプロセッサの構成例を示すブロック図である。このプロセッサは、ＰＥ１１と、バンク０〜３のローカルメモリ（以下、ＬＭ−バンク０〜３と呼ぶ。）１２〜１５と、スイッチングネットワーク１６と、メモリコントローラ（ＭＥＭ−ｃｎｔ）１７と、バスコントローラ（ＢＵＳ−ｃｎｔ）１８と、ＰＥコントローラ（ＰＥ−ｃｎｔ）１９と、バッファ２０とを含む。
【００２５】
ＰＥ１１は、１ビットまたは２ビットごとにシリアルに演算を実行する。ＰＥ１１は、スイッチングネットワーク１６を介してローカルメモリと３つのポートで接続されており、ＬＭ−バンク０〜３（１２〜１５）のいずれか２つを演算データ読み出し用メモリとして使用し、残りのいずれか一方を演算結果書き込み用のメモリとして使用する。
【００２６】
ＬＭ−バンク０〜３（１２〜１５）のいずれか１つに、スイッチングネットワーク１６を介してバッファ２０から演算用のデータが転送される。ＬＭ−バンク０〜３（１２〜１５）のいずれか２つに格納されるデータは、ＰＥ１１によって演算用データとして読み出される。ＰＥ１１による演算結果は、順次ＬＭ−バンク０〜３（１２〜１５）のいずれか１つに書き込まれる。そして、ＬＭ−バンク０〜３（１２〜１５）のいずれか１つに格納される演算結果が、スイッチングネットワーク１６を介してバッファ２０に転送される。
【００２７】
ＰＥ１１が演算を行なう際に、ＬＭ−バンク０〜３（１２〜１５）のいずれか２つがデータ読み出し用のメモリとして使用され、残りのいずれか一方が演算結果書き込み用のメモリとして使用され、残りの１つがバッファ２０との間のデータ転送用メモリとして使用される。メモリコントローラ１７は、それぞれのバンクに対して別のアドレスを指定することが可能である。
【００２８】
スイッチングネットワーク１６は、データの転送経路を切り換え、ＬＭ−バンク０〜３（１２〜１５）のいずれか２つをデータ読み出し用のメモリとし、残りのいずれか一方を演算結果書き込み用のメモリとし、残りの１つをバッファ２０との間のデータ転送用メモリとする。
【００２９】
メモリコントローラ１７は、バスコントローラ１８およびＰＥコントローラ１９からの情報を受け、スイッチングネットワーク１６の切り換えと、ＬＭ−バンク０〜３（１２〜１５）のリード／ライト制御とを行なう。
【００３０】
バスコントローラ１８は、バスの制御を行なうとともに、バッファ２０からバンク使用要求を受け、どのバンクを使用するかを示す情報を使用バンク情報としてメモリコントローラ１７に出力する。
【００３１】
ＰＥコントローラ１９は、フェッチした命令のデコード結果に基づいて、ＰＥ１１による演算の制御と、メモリコントローラ１７に対する指示とを行なう。ＰＥコントローラ１９は、ＰＥ１１が使用しないバンクの情報を空きバンク情報としてメモリコントローラ１７に出力する。
【００３２】
バッファ２０は、外部バス２１を介して外部との間でデータ転送を行なうときに、データを一時的に格納する。また、バッファ２０は直交変換の機能を有している。ＰＥ１１は、１ビットまたは２ビットごとに演算を実行するため、ＬＭ−バンク０〜３（１２〜１５）にも１ビットまたは２ビット単位でデータを格納する必要がある。そのため、バッファ２０は、外部からワード単位で転送される複数のデータに対して直交変換を行ない、複数のデータを１ビットまたは２ビット単位のデータに変換してＬＭ−バンク０〜３（１２〜１５）に転送する。
【００３３】
図５は、本発明の第１の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。図５においては、左上に要求バンク番号を記載し、右下に実行バンク番号を記載するものとする。
【００３４】
タイミングＴ０において、ＰＥ１１がバンク０およびバンク３を読み出し用メモリとして使用し、バンク２を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ１９は、空きバンク情報として「バンク１」をメモリコントローラ１７に出力する。
【００３５】
また、タイミングＴ０において、バッファ２０がバンク１をデータ転送用メモリとして使用することを要求している。このとき、バスコントローラ１８は、使用バンク情報として「バンク１」をメモリコントローラ１７に出力する。
【００３６】
メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断し、ＰＥコントローラ１９およびバスコントローラ１８に対して実行可能信号を出力する。そして、メモリコントローラ１７は、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００３７】
タイミングＴ１〜Ｔ３においても同様に、メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断する。そして、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００３８】
図６は、本発明の第１の実施の形態におけるプロセッサの処理の他の一例を説明するためのタイミングチャートである。
【００３９】
タイミングＴ０において、ＰＥ１１がバンク０およびバンク３を読み出し用メモリとして使用し、バンク２を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ１９は、空きバンク情報として「バンク１」をメモリコントローラ１７に出力する。
【００４０】
また、タイミングＴ０において、バッファ２０がバンク０をデータ転送用メモリとして使用することを要求している。このとき、バスコントローラ１８は、使用バンク情報として「バンク０」をメモリコントローラ１７に出力する。
【００４１】
メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致していないので、要求を全て実行するのは不可能であると判断する。このとき、メモリコントローラ１７は、バッファ２０の要求を優先し、バスコントローラ１８に対して実行可能信号を出力するとともに、ＰＥコントローラ１９に対しては実行不可能信号を出力する。そして、メモリコントローラ１７は、バッファ２０との通信のみが可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００４２】
タイミングＴ１において、ＰＥ１１がバンク０およびバンク３を読み出し用メモリとして使用し、バンク２を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ１９は、空きバンク情報として「バンク１」をメモリコントローラ１７に出力する。
【００４３】
また、タイミングＴ１において、バッファ２０がバンク１をデータ転送用メモリとして使用することを要求している。このとき、バスコントローラ１８は、使用バンク情報として「バンク１」をメモリコントローラ１７に出力する。
【００４４】
メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断し、ＰＥコントローラ１９およびバスコントローラ１８に対して実行可能信号を出力する。そして、メモリコントローラ１７は、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００４５】
タイミングＴ２〜Ｔ３においても同様に、メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断する。そして、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００４６】
このように、ＰＥ１１からの要求バンク番号と、バッファ２０からの要求バンク番号とが共にローテーションする。そのため、一度バンクの競合が解消されると、それ以降はバンクの競合がなくなり全ての要求が実行可能となる。
【００４７】
以上説明したように、本実施の形態におけるプロセッサによれば、ＰＥ１１が使用しないバンク番号を示す空きバンク情報と、バッファ２０が使用するバンク番号を示す使用バンク情報とが一致する場合に、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御するようにしたので、ＰＥ１１の演算を停止することなくバッファ２０との間のデータ転送を行なうことが可能となった。したがって、プロセッサの処理時間を短縮することが可能となった。
【００４８】
また、ＰＥ１１およびバッファ２０の要求が競合する場合には、バッファ２０の要求を優先するようにしたので、データ転送を高速に行なうことが可能となった。
【００４９】
（第２の実施の形態）
本発明の第２の実施の形態におけるプロセッサの構成例は、図４に示す第１の実施の形態におけるプロセッサの構成例と同様である。また、第２の実施の形態において、全ての要求が実行可能な場合の処理は、図５に示す第１の実施の形態において説明した処理と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００５０】
図７は、本発明の第２の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。
【００５１】
タイミングＴ０において、ＰＥ１１がバンク０およびバンク３を読み出し用メモリとして使用し、バンク２を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ１９は、空きバンク情報として「バンク１」をメモリコントローラ１７に出力する。
【００５２】
また、タイミングＴ０において、バッファ２０がバンク２をデータ転送用メモリとして使用することを要求している。このとき、バスコントローラ１８は、使用バンク情報として「バンク２」をメモリコントローラ１７に出力する。
【００５３】
メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致していないので、要求を全て実行するのは不可能であると判断する。このとき、メモリコントローラ１７は、ＰＥ１１の要求を優先し、ＰＥコントローラ１９に対して実行可能信号を出力するとともに、バスコントローラ１８に対しては実行不可能信号を出力する。そして、メモリコントローラ１７は、ＰＥ１１との通信のみが可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００５４】
タイミングＴ１において、ＰＥ１１がバンク１およびバンク０を読み出し用メモリとして使用し、バンク３を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ１９は、空きバンク情報として「バンク２」をメモリコントローラ１７に出力する。
【００５５】
また、タイミングＴ１において、バッファ２０がバンク２をデータ転送用メモリとして使用することを要求している。このとき、バスコントローラ１８は、使用バンク情報として「バンク２」をメモリコントローラ１７に出力する。
【００５６】
メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断し、ＰＥコントローラ１９およびバスコントローラ１８に対して実行可能信号を出力する。そして、メモリコントローラ１７は、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００５７】
タイミングＴ２〜Ｔ３においても同様に、メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断する。そして、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００５８】
このように、ＰＥ１１からの要求バンク番号と、バッファ２０からの要求バンク番号とが共にローテーションする。そのため、一度バンクの競合が解消されると、それ以降はバンクの競合がなくなり全ての要求が実行可能となる。
【００５９】
以上説明したように、本実施の形態におけるプロセッサによれば、ＰＥ１１およびバッファ２０の要求が競合する場合には、ＰＥ１１の要求を優先するようにしたので、第１の実施の形態において説明したバンクの競合がない場合の効果に加えて、ＰＥ１１における演算を高速に行なうことが可能となった。
【００６０】
（第３の実施の形態）
本発明の第３の実施の形態におけるプロセッサの構成例は、図４に示す第１の実施の形態におけるプロセッサの構成例と同様である。また、第３の実施の形態において、全ての要求が実行可能な場合の処理は、図５に示す第１の実施の形態において説明した処理と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００６１】
図８は、本発明の第３の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。
【００６２】
タイミングＴ０において、ＰＥ１１がバンク０およびバンク３を読み出し用メモリとして使用し、バンク２を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ１９は、空きバンク情報として「バンク１」をメモリコントローラ１７に出力する。
【００６３】
また、タイミングＴ０において、バッファ２０がバンク０をデータ転送用メモリとして使用することを要求している。このとき、バスコントローラ１８は、使用バンク情報として「バンク０」をメモリコントローラ１７に出力する。
【００６４】
メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致していないので、要求を全て実行するのは不可能であると判断する。このとき、メモリコントローラ１７は、ＰＥ１１およびバッファ２０の要求が競合し、かつ、バッファ２０が待たされたサイクル数が「０」であるので、ＰＥ１１の要求を優先し、ＰＥコントローラ１９に対して実行可能信号を出力するとともに、バスコントローラ１８に対しては実行不可能信号を出力する。
【００６５】
そして、メモリコントローラ１７は、ＰＥ１１との通信のみが可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。ここで、メモリコントローラ１７は、バッファ２０が待たされたサイクル数を「０」から「１」に更新する。
【００６６】
タイミングＴ１において、ＰＥ１１がバンク１およびバンク０を読み出し用メモリとして使用し、バンク３を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ１９は、空きバンク情報として「バンク２」をメモリコントローラ１７に出力する。
【００６７】
また、タイミングＴ１において、バッファ２０がバンク０をデータ転送用メモリとして使用することを要求している。このとき、バスコントローラ１８は、使用バンク情報として「バンク０」をメモリコントローラ１７に出力する。
【００６８】
メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致していないので、要求を全て実行するのは不可能であると判断する。このとき、メモリコントローラ１７は、ＰＥ１１およびバッファ２０の要求が競合し、かつ、バッファ２０が待たされたサイクル数が「１」であるので、ＰＥ１１の要求を優先し、ＰＥコントローラ１９に対して実行可能信号を出力するとともに、バスコントローラ１８に対しては実行不可能信号を出力する。
【００６９】
そして、メモリコントローラ１７は、ＰＥ１１との通信のみが可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。ここで、メモリコントローラ１７は、バッファ２０が待たされたサイクル数を「１」から「２」に更新する。
【００７０】
タイミングＴ２において、ＰＥ１１がバンク２およびバンク１を読み出し用メモリとして使用し、バンク０を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ１９は、空きバンク情報として「バンク３」をメモリコントローラ１７に出力する。
【００７１】
また、タイミングＴ２において、バッファ２０がバンク０をデータ転送用メモリとして使用することを要求している。このとき、バスコントローラ１８は、使用バンク情報として「バンク０」をメモリコントローラ１７に出力する。
【００７２】
メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致していないので、要求を全て実行するのは不可能であると判断する。このとき、メモリコントローラ１７は、ＰＥ１１およびバッファ２０の要求が競合し、かつ、バッファ２０が待たされたサイクル数が「２」であるので、バッファ２０の要求を優先し、バスコントローラ１８に対して実行可能信号を出力するとともに、ＰＥコントローラ１９に対しては実行不可能信号を出力する。
【００７３】
そして、メモリコントローラ１７は、バッファ２０との通信のみが可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。ここで、メモリコントローラ１７は、バッファ２０が待たされたサイクル数を「２」から「０」に更新する。
【００７４】
タイミングＴ３において、ＰＥ１１がバンク２およびバンク１を読み出し用メモリとして使用し、バンク０を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ１９は、空きバンク情報として「バンク３」をメモリコントローラ１７に出力する。
【００７５】
また、タイミングＴ３において、バッファ２０がバンク１をデータ転送用メモリとして使用することを要求している。このとき、バスコントローラ１８は、使用バンク情報として「バンク１」をメモリコントローラ１７に出力する。
【００７６】
メモリコントローラ１７は、ＰＥコントローラ１９から受けた空きバンク情報と、バスコントローラ１８から受けた使用バンク情報とが一致していないので、要求を全て実行するのは不可能であると判断する。このとき、メモリコントローラ１７は、ＰＥ１１およびバッファ２０の要求が競合し、かつ、バッファ２０が待たされたサイクル数が「０」であるので、ＰＥ１１の要求を優先し、ＰＥコントローラ１９に対して実行可能信号を出力するとともに、バスコントローラ１８に対しては実行不可能信号を出力する。
【００７７】
そして、メモリコントローラ１７は、ＰＥ１１との通信のみが可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。ここで、メモリコントローラ１７は、バッファ２０が待たされたサイクル数を「０」から「１」に更新する。
【００７８】
なお、以上の説明においては、ＰＥ１１およびバッファ２０の要求が競合し、かつ、バッファ２０が待たされたサイクル数が「２」の場合に、バッファ２０の要求を優先するようにしたが、バッファ２０の要求を優先するときのサイクル数がこれ以外の値であってもよい。また、ＰＥ１１が待たされたサイクル数をカウントし、ＰＥ１１が待たされたサイクル数が所定値のときにのみＰＥ１１の要求を優先するようにしてもよい。
【００７９】
以上説明したように、本実施の形態におけるプロセッサによれば、ＰＥ１１およびバッファ２０の要求が競合し、かつ、バッファ２０が待たされたサイクル数が所定値のときにのみバッファ２０の要求を優先するようにしたので、第１の実施の形態において説明したバンクの競合がない場合の効果に加えて、バッファ２０との間のデータ転送のレイテンシを保証することが可能となった。
【００８０】
（第４の実施の形態）
図９は、本発明の第４の実施の形態におけるプロセッサの構成例を示すブロック図である。本実施の形態におけるプロセッサは、図４に示す第１の実施の形態におけるプロセッサと比較して、ＰＥコントローラが有する空きバンク情報がバスコントローラにも入力される点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００８１】
図１０は、本発明の第４の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。
【００８２】
タイミングＴ０において、ＰＥ１１がバンク０およびバンク３を読み出し用メモリとして使用し、バンク２を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ３２は、空きバンク情報として「バンク１」をメモリコントローラ１７およびバスコントローラ３１に出力する。
【００８３】
また、タイミングＴ０において、バスコントローラ３１は空きバンク情報として「バンク１」を受けているので、使用バンク情報として「バンク１」をメモリコントローラ１７に出力する。
【００８４】
メモリコントローラ１７は、ＰＥコントローラ３２から受けた空きバンク情報と、バスコントローラ３１から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断し、ＰＥコントローラ３２およびバスコントローラ３１に対して実行可能信号を出力する。そして、メモリコントローラ１７は、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００８５】
タイミングＴ１〜Ｔ３においても同様に、メモリコントローラ１７は、ＰＥコントローラ３２から受けた空きバンク情報と、バスコントローラ３１から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断する。そして、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００８６】
以上説明したように、本実施の形態におけるプロセッサによれば、バスコントローラ３１がＰＥコントローラ３２から空きバンク情報を受け、その空きバンクを使用バンクとするようにしたので、ＰＥ１１およびバッファ２０の要求が競合することがなくなり、ＰＥ１１の演算を停止することなくバッファ２０との間のデータ転送を行なうことが可能となった。したがって、プロセッサの処理時間を短縮すること可能となった。
【００８７】
（第５の実施の形態）
本発明の第５の実施の形態におけるプロセッサの構成例は、図９に示す第４の実施の形態におけるプロセッサの構成例と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００８８】
図１１は、本発明の第５の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。
【００８９】
タイミングＴ０において、ＰＥ１１がバンク０を読み出し用メモリとして使用し、バンク３を書き込み用メモリとして使用することを要求している。このとき、ＰＥコントローラ３２は、空きバンク情報として「バンク１、バンク２」をメモリコントローラ１７およびバスコントローラ３１に出力する。
【００９０】
また、タイミングＴ０において、バスコントローラ３１は空きバンク情報として「バンク１、バンク２」を受けているので、使用バンク情報として「バンク１、バンク２」をメモリコントローラ１７に出力する。
【００９１】
メモリコントローラ１７は、ＰＥコントローラ３２から受けた空きバンク情報と、バスコントローラ３１から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断し、ＰＥコントローラ３２およびバスコントローラ３１に対して実行可能信号を出力する。そして、メモリコントローラ１７は、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００９２】
タイミングＴ１〜Ｔ３においても同様に、メモリコントローラ１７は、ＰＥコントローラ３２から受けた空きバンク情報と、バスコントローラ３１から受けた使用バンク情報とが一致しているので、全ての要求が実行可能であると判断する。そして、全ての通信が可能となるようにＬＭ−バンク０〜３（１２〜１５）およびスイッチングネットワーク１６を制御する。
【００９３】
以上説明したように、本実施の形態におけるプロセッサによれば、複数バンクが空きバンクの場合に、バスコントローラ３１がＰＥコントローラ３２から複数の空きバンク情報を受け、その複数の空きバンクを使用バンクとするようにしたので、第４の実施の形態において説明した効果に加えて、バッファ２０との間のデータ転送をさらに高速に行なうことが可能となった。
【００９４】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００９５】
【図１】ビットシリアル演算を説明するための図である。
【図２】ＰＥによる演算実行とデータの入出力とが同時に行なえない場合の問題点を説明するための図である。
【図３】メモリを演算用とＤＭＡ転送用との２バンクに分けたプロセッサの構成例を示す図である。
【図４】本発明の第１の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図５】本発明の第１の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。
【図６】本発明の第１の実施の形態におけるプロセッサの処理の他の一例を説明するためのタイミングチャートである。
【図７】本発明の第２の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。
【図８】本発明の第３の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。
【図９】本発明の第４の実施の形態におけるプロセッサの構成例を示すブロック図である。
【図１０】本発明の第４の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。
【図１１】本発明の第５の実施の形態におけるプロセッサの処理の一例を説明するためのタイミングチャートである。
【符号の説明】
【００９６】
１１，１１１  ＰＥ、１２〜１５，１１２，１１３  ＬＭ−バンク、１６，１１４  スイッチングネットワーク、１７，１１５  メモリコントローラ、１８，３１  バスコントローラ、１９，３２，１１６  ＰＥコントローラ、２０  バッファ、２１，１１７  外部バス、１０１−１〜１０１−ｍ  ＡＬＵ、１０２  メモリマット。
【図１】
2008102599.tif 000003
【図２】
2008102599.tif 000004
【図３】
2008102599.tif 000005
【図４】
2008102599.tif 000006
【図５】
2008102599.tif 000007
【図６】
2008102599.tif 000008
【図７】
2008102599.tif 000009
【図８】
2008102599.tif 000010
【図９】
2008102599.tif 000011
【図１０】
2008102599.tif 000012
【図１１】
2008102599.tif 000013