(57)【要約】 【課題】  高い転送スループットおよび柔軟性を備え、ストリームデータを効率的に扱うデータ処理装置を実現する。【解決手段】  複数のロードストアインタフェース（８０１、８０４）と、複数のメモリバンク（８２１）と、入力ポート（８５０）および出力ポート（８６０）の少なくとも一方からなる入出力ポートと、クロスバスイッチ（８１０）を含むプロセッサブロックを１つ以上具備し、該クロスバスイッチは該ロードストアインタフェースと該メモリバンクと該入出力ポートを互いに接続し、該ロードストアインタフェースは該メモリバンクへのデータ転送を制御するようにデータ処理装置を構成する。【選択図】        図７
2006139670.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上のプロセッサブロックを有するデータ処理装置であって、
前記プロセッサブロックは、複数の演算ユニットを備えそれらの接続形態と機能が切り換え可能にされた演算部と、並列アクセス可能な複数バンクを有するローカルメモリ部と、外部インタフェース部と、バススイッチ部と、制御部とを有し、
前記演算部における一部の演算ユニットは他の演算ユニットへの演算オペランドのロード要求と他の演算ユニットによる演算結果のストア要求とを生成可能であり、
前記バススイッチ部は、前記演算部と、前記ローカルメモリ部と、前記外部インタフェース部との間の接続を選択可能とするデータ処理装置。
【請求項２】
前記制御部は前記演算部に対して演算ユニットの接続形態と機能を決定し、
前記制御部は前記バススイッチ部による接続形態を決定する請求項1記載のデータ処理装置。
【請求項３】
前記制御部は前記演算部に対して演算ユニットの接続形態と機能を決定し、
前記バススイッチ部はアクセスアドレスに応じて接続形態が決定される請求項1記載のデータ処理装置。
【請求項４】
前記演算部は、マトリクス状に配置された複数の第１の演算ユニットと、前記第１の演算ユニットと前記バススイッチ部との間に配置された第２の演算ユニットとを有し、
前記第２の演算ユニットは、前記ロード要求とストア要求を生成可能である請求項1記載のデータ処理装置。
【請求項５】
前記ローカルメモリ部は複数のアクセスポートを有し、一方のアクセスポートは前記外部インタフェース部に接続され外部からアクセス可能にされ、他方のアクセスポートは前記バススイッチ部に接続され前記第２の演算ユニットからアクセス可能にされる請求項４記載のデータ処理装置。
【請求項６】
前記第１の演算ユニットは、演算器と、前記演算器へのオペランドの入力を切り換える入力スイッチと、前記入力スイッチを介して入力されたオペランド間のディレイ調整を行うディレイ調整ユニットと、前記演算器の出力経路を切り換える出力スイッチと、前記出力スイッチを介して出力されたデータを保持するパイプラインラッチと、前記制御部からの指示に従って前記第１の演算ユニットの動作を制御する第１の演算制御ユニットとを有する請求項５記載のデータ処理装置。
【請求項７】
前記第２の演算ユニットは、アドレス生成ユニットと、前記アドレス生成ユニットで生成されたアドレスを用いて前記ロード要求とストア要求を生成するロードストア制御ユニットと、前記制御部からの指示に従って前記第２の演算ユニットの動作を制御する第２の演算制御ユニットとを有する請求項５記載のデータ処理装置。
【請求項８】
前記第２の演算ユニットは、前記バススイッチ部に対して所定の要求フォーマットに従いデータを送信し、所定の応答フォーマットに従って受信されたデータを処理する請求項７記載のデータ処理装置。
【請求項９】
前記バススイッチ部は、前記第２の演算ユニット、前記ローカルメモリ部及び前記外部インタフェース部との間の接続経路を確立するためのスイッチマトリクスと、前記要求フォーマット及び応答フォーマットと前記ローカルメモリ部に対するアクセス手順との間の変換を行うメモリインタフェースとを有する請求項８記載のデータ処理装置。
【請求項１０】
前記プロセッサブロックの外部インタフェース部はアクセスポートを有し、
前記アクセスポートはデータ処理装置の外部とインタフェース可能にされる請求項１記載のデータ処理装置。
【請求項１１】
前記プロセッサブロックを複数個有し、
前記プロセッサブロックの外部インタフェース部はアクセスポートを有し、
一のプロセッサブロックの前記アクセスポートは他のプロセッサブロックの前記アクセスポートに接続される請求項１記載のデータ処理装置。
【請求項１２】
前記一のプロセッサブロックは、前記アクセスポートを介して前記他のプロセッサブロックのローカルメモリ部をアクセス可能である請求項１１記載のデータ処理装置。
【請求項１３】
複数個のプロセッサブロックを有するデータ処理装置であって、
前記プロセッサブロックは、複数の演算ユニットを備えそれらの接続形態と機能が切り換え可能にされた演算部とローカルメモリ部とを有し、
一のプロセッサブロックは他のプロセッサブロックに接続されるデータ処理装置。
【請求項１４】
前記ローカルメモリ部は並列アクセス可能な複数バンクを有する請求項１３記載のデータ処理装置。
【請求項１５】
前記演算部は演算オペランドのロード要求と演算結果のストア要求とを生成可能である請求項１３記載のデータ処理装置。
【請求項１６】
前記一のプロセッサブロックと他のプロセッサブロックは専用バスで接続される請求項１３記載のデータ処理装置。
【請求項１７】
複数個のプロセッサブロックを有するデータ処理装置であって、
前記プロセッサブロックは、複数の演算ユニットを備えそれらの接続形態と機能が切り換え可能にされた演算部とローカルメモリ部とを有し、
一のプロセッサブロックは他の一のプロセッサブロックのローカルメモリ部に書き込み可能であるデータ処理装置。
【請求項１８】
前記ローカルメモリ部は並列アクセス可能な複数バンクを有する請求項１７記載のデータ処理装置。
【請求項１９】
前記演算部における一部の演算ユニットは他の演算ユニットへの演算オペランドのロード要求と他の演算ユニットによる演算結果のストア要求とを生成可能である請求項１７記載のデータ処理装置。
【請求項２０】
前記一のプロセッサブロックは他のプロセッサブロックのローカルメモリ部に書き込みを行うための専用バスを有する請求項１７記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関し、特に、複数配置された演算ユニットの機能や接続をプログラマブルに切り換え可能にされたデータ処理装置に関し、例えばフレキシブルプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
画像、音声などのマルチメディア処理機能や、有線および無線通信機能を内蔵した携帯情報機器が広く一般的に利用されるようになり、これらの機器を小型かつ安価に提供するため、データ処理装置の高性能化、高機能化および低消費電力化が求められている。一方において、技術開発の進歩とともに策定された多様な規格や標準に速やかに対応することが製品価値を大きく左右するため、機器製造後にソフトウェアにより容易に機能を変更または追加可能とすることにより、製品開発期間を短縮するだけでなく、製品寿命を延長することが必要とされる。
【０００３】
上記のデータ処理装置を実現する第１の手段として、複数の動作モードのようにあらかじめ準備された限定的な機能変更のみ可能となる専用の論理回路を設計し、それらを組み合わせた専用ＬＳＩを搭載する方法がある。この専用ＬＳＩは、高性能化、低消費電力化の達成という観点では一般的にもっとも優れた実現手段と考えられるが、専用ＬＳＩの再設計を行わない限り機能の変更・追加ができないだけでなく、設計に要する開発期間が長いことなどから、実現手段としては選択しにくい。
【０００４】
第２の手段としては、汎用のマイクロプロセッサを搭載し、プロセッサ上で実行される一連の命令列からなるソフトウェアにより各種処理を実現する方法がある。この場合、ソフトウェアを修正または追加することにより、データ処理装置のハードウェアを変更することなく高機能化、機能の変更および追加を実現できる。しかしながら、最先端のマイクロプロセッサにおいても同時に実行可能な命令はたかだか数命令であり、命令の逐次処理を基本とするデータ処理装置で高スループットの処理を実現するには、極めて高いクロック周波数で動作するプロセッサを搭載しなければならず、消費電力が増大する。さらに、プロセッサの処理性能を引き出すため、分岐予測など演算以外の制御論理を必要とし、演算器本体の論理規模が相対的に低下することから、ハードウェア規模に対する処理効率が低下するという欠点が挙げられる。
【０００５】
これらの２つの手段の中間に相当しより実際的な実現手段として、近年Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）と呼ばれる再構成可能なＬＳＩが注目され、徐々に適用範囲を広げつつある。ＦＰＧＡは、多数のＬｏｏｋｕｐ  Ｔａｂｌｅ（ＬＵＴ）が経路変更可能なバスにより接続された内部構成をもち、ＬＵＴの動作内容やＬＵＴ間の接続を定義する構成情報をＬＳＩに外付けされたメモリから読み込むことにより、ＬＳＩ内に任意の機能を実現できるという特長がある。基本的に、ＬＵＴの動作内容およびＬＵＴ間の接続は１ビット単位で設定可能であるため、所定の機能をＬＳＩ上に実現する際の柔軟性が高い反面、画像・音声処理など多ビットの演算を主体とする応用分野では面積オーバヘッドが大きいという問題がある。
【０００６】
このような技術的背景に鑑み、８〜３２ビット幅程度の粗粒度の演算を単位とする演算器を備え、演算性能と柔軟性を高次元でバランスさせることを目的としたフレキシブルプロセッサ技術が公知であり、例えば以下の特許文献１に記載されている。上述のＦＰＧＡはＮＡＮＤやＮＯＲ回路等の論理ゲートをアレイ状に配置し、その接続配線を切り換えるのに対し、このフレキシブルプロセッサ技術は、論理ゲートでなく演算ユニットをアレイ状に配置し、コンフィグレーション情報により演算ユニットの機能及び各演算ユニット間の配線を切り換える技術とされる。
【０００７】
【特許文献１】特開２００１−３１２４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本願発明者は、フレキシブルプロセッサ技術を実用性の点から検討することにより、以下の解決すべき課題を見出した。
【０００９】
まず、フレキシブルプロセッサを利用したデータ処理性能についてであるが、特にデータ処理の前後で発生するデータ転送に伴う処理オーバヘッドが考慮されなければならない。そうでないなら、実際の製品に適用するにあたり、演算器のみの見かけのデータ処理性能とシステム全体としてのデータ処理性能の間で乖離を生ずる懸念がある。複数の演算ユニットを並列的に動作させていくには一度に必要なオペランドの数も多くなり、ロード・ストア処理が頻繁に行わなければならないからである。
【００１０】
また、フレキシブルプロセッサが主に対象とする画像および音声処理応用では、データ入出力がストリーム形式である可能性が高いと考えられる。このため、システム全体として高いデータ転送性能、すなわち高い転送スループットおよび転送制御の柔軟性を備え、これによってストリームデータを効率的に処理できるフレキシブルプロセッサの実現に方法を検討する必要がある。
【００１１】
さらに、フレキシブルプロセッサにおけるプログラミングの概念が、一般的なマイクロプロセッサとは大きく異なる。演算ユニットの接続状態に沿って個々の演算ユニットが順次データ処理を行なうことができるように演算処理の指示を分配しなければならないからである。したがって、ソフトウェア開発の難易度が増大すると考えられる。このため、ソフトウェア再利用性を維持しつつ、そのデータ処理性能をスケーラブルに変更可能となるようフレキシブルプロセッサを構成することの必要性が本発明者によって見出された。要するに、所要のタスクを実行するのに、新たに別のソフトウェアを開発するのに比べて既存のソフトウェアを組み合わせて流用できるようになっているほうが望ましく、また、データ処理性能を向上させるには複数の演算ユニットによる既存の処理単位を複数倍にする方が望ましい、ということが本発明者によって見出された。
【００１２】
本発明の代表的な目的の一つは、柔軟性の高いデータ転送を実現できる動的再構成可能なデータ処理装置を提供することにある。
【００１３】
本発明の他の代表的な目的の一つは、高いソフトウェア再利用性の実現に資することができる動的再構成可能なデータ処理装置を提供することにある。
【００１４】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１５】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１６】
〔１〕データ処理装置は一つ以上のプロセッサブロック（４５０）を有し、前記プロセッサブロックは、複数の演算ユニットを備えそれらの接続形態と機能が切り換え可能にされた演算部（８００）と、並列アクセス可能な複数バンク（８２１）を有するローカルメモリ部（８２０）と、外部インタフェース部（８４０、８５０，８６０）と、バススイッチ部（８１０）と、制御部（８３０）とを有する。前記演算部における一部の演算ユニット（８０１、８０４）は他の演算ユニット（８０２，８０３）への演算オペランドのロード要求と他の演算ユニットによる演算結果のストア要求とを生成可能であり、前記バススイッチ部は、前記演算部と、前記ローカルメモリ部と、前記外部インタフェース部との間の接続を選択可能とする。
【００１７】
演算部はプロセッサブロックの接続形態と機能の切り換えに応じてその演算機能が動的に再構成可能にされ、再構成された演算機能による演算処理の前後で必要なデータ転送を行う場合、上記バススイッチ部は、前記演算部に前記ローカルメモリ部又は前記外部インタフェース部からオペランドを転送し、演算部による演算結果をローカルメモリ部又は前記外部インタフェース部に転送することができる。これにより、フレキシブルプロセッサのようなデータ処理装置において柔軟性の高いデータ転送が実現される。
【００１８】
〔２〕具体的な形態として、前記制御部は前記演算部に対して演算ユニットの接続形態と機能を決定し、前記制御部は前記バススイッチ部による接続形態を決定する。この場合にはローカルメモリ部の複数バンクには共通アドレスをマッピングすれば足りる。一方、前記バススイッチ部がアクセスアドレスに応じてその接続形態を決定する場合には、ローカルメモリ部の複数バンクには異なるアドレスをマッピングすることが必要になる。
【００１９】
〔３〕別の具体的な形態として、前記演算部は、マトリクス状に配置された複数の第１の演算ユニット（８０２、８０３）と、前記第１の演算ユニットと前記バススイッチ部との間に配置された第２の演算ユニット（８０１、８０２）とを有し、前記第２の演算ユニットが前記ロード要求とストア要求を生成可能である。
【００２０】
更に具体的な形態として、前記ローカルメモリ部は複数のアクセスポートを有し、一方のアクセスポートは前記外部インタフェース部に接続され外部からアクセス可能にされ、他方のアクセスポートは前記バススイッチ部に接続され前記第２の演算ユニットからアクセス可能にされる。
【００２１】
更に具体的な形態として、前記第１の演算ユニットは、演算器と、前記演算器へのオペランドの入力を切り換える入力スイッチと、前記入力スイッチを介して入力されたオペランド間のディレイ調整を行うディレイ調整ユニットと、前記演算器の出力経路を切り換える出力スイッチと、前記出力スイッチを介して出力されたデータを保持するパイプラインラッチと、前記制御部からの指示に従って前記第１の演算ユニットの動作を制御する第１の演算制御ユニットとを有する。
【００２２】
更に具体的な形態として、前記第２の演算ユニットは、アドレス生成ユニット（９２１）と、前記アドレス生成ユニットで生成されたアドレスを用いて前記ロード要求とストア要求を生成するロードストア制御ユニット（９２０、９２２、９２３、９２６）と、前記制御部からの指示に従って前記第２の演算ユニットの動作を制御する第２の演算制御ユニットとを有する。
【００２３】
更に具体的な形態として、前記第２の演算ユニットは、前記バススイッチ部に対して所定の要求フォーマットに従いデータを送信し、所定の応答フォーマットに従って受信されたデータを処理する。
【００２４】
更に具体的な形態として、前記バススイッチ部は、前記第２の演算ユニット、前記ローカルメモリ部及び前記外部インタフェース部との間の接続経路を確立するためのスイッチマトリクスと、前記要求フォーマット及び応答フォーマットと前記ローカルメモリ部に対するアクセス手順との間の変換を行うメモリインタフェース（９３１）とを有する。
【００２５】
〔４〕更に別の具体的な形態として、前記プロセッサブロックの外部インタフェース部はアクセスポート（８５０．８６０）を有し、前記アクセスポートはデータ処理装置の外部とインタフェース可能にされる。前記アクセスポートに外部メモリを接続して利用可能になる。
【００２６】
〔５〕更に別の具体的な形態として、前記プロセッサブロックを複数個有し、前記プロセッサブロックの外部インタフェース部はアクセスポートを有し、一のプロセッサブロックの前記アクセスポートは他のプロセッサブロックの前記アクセスポートに接続される。例えば個々のプロセッサブロックで処理可能なタスクＡとＢを想定したとき、タスクＡ，Ｂを実現するためのコンフィグレーション情報、即ち、プロセッサブロックの接続形態と機能の切り換えに応じてその演算機能を再構成するためのソフトウェアが用意されている場合には、前段のプロセッサブロックでタスクＡを処理し、その処理結果を次段のプロセッサブロックが受け取ってタスクＢを処理するという、パイプライン的な直列処理にて、タスクＡ＋Ｂの処理を実現することができる。タスクＡ＋Ｃのタスクであれば個々のタスクＡ，Ｃに対応する前記コンフィグレーション情報を流用して、タスクＡ＋Ｃをパイプライン的に処理することができる。プロセッサブロックの直列接続段数がｎ段であればｎ種類のタスクを合わせたタスクを既存のｎ種類の個々のコンフィグレーション情報を流用して処理することができる。これに対し、例えば演算部における演算ユニットの数を２倍としたプロセッサブロックを用いてＡ＋Ｂのタスクを処理する場合にはタスクＡ＋Ｂの演算処理時間は上記と同じになるが、既存のタスクＡとＢのコンフィギュレーション情報を流用することはできないから、タスクＡ＋Ｂの新たなコンフィギュレーション情報を生成することが必要になる。この意味において、高いソフトウェア再利用性を実現することができる。
【００２７】
具体的な形態として前記一のプロセッサブロックは、前記アクセスポートを介して前記他のプロセッサブロックのローカルメモリ部をアクセス可能である。
【００２８】
〔６〕別の観点によるデータ処理装置は、複数個のプロセッサブロックを有し、前記プロセッサブロックは、複数の演算ユニットを備えそれらの接続形態と機能が切り換え可能にされた演算部とローカルメモリ部とを有し、一のプロセッサブロックは他のプロセッサブロックに接続される。これにより、高いソフトウェア再利用性を実現することができる。
【００２９】
具体的な形態として、前記ローカルメモリ部は並列アクセス可能な複数バンクを有する。並列動作する複数の演算ユニットが並列的にローカルメモリ部を利用することができる。
【００３０】
具体的な形態として、前記演算部は演算オペランドのロード要求と演算結果のストア要求とを生成可能である。
【００３１】
具体的な形態として、前記一のプロセッサブロックと他のプロセッサブロックは専用バスで接続される。
【００３２】
〔７〕更に別の観点によるデータ処理装置は、複数個のプロセッサブロックを有し、前記プロセッサブロックは、複数の演算ユニットを備えそれらの接続形態と機能が切り換え可能にされた演算部とローカルメモリ部とを有し、一のプロセッサブロックは他の一のプロセッサブロックのローカルメモリ部に書き込み可能である。
【００３３】
具体的な形態として、前記ローカルメモリ部は並列アクセス可能な複数バンクを有する。また、前記演算部における一部の演算ユニットは他の演算ユニットへの演算オペランドのロード要求と他の演算ユニットによる演算結果のストア要求とを生成可能である。また、前記一のプロセッサブロックは他のプロセッサブロックのローカルメモリ部に書き込みを行うための専用バスを有する。
【発明の効果】
【００３４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００３５】
すなわち、柔軟性の高いデータ転送を実現できる。また、複数のプロセッサブロックを直列的に接続することによって高いソフトウェア再利用性を実現することができる。
【発明を実施するための最良の形態】
【００３６】
以下、本発明の好適な実施の形態について、添付図面を参照しながら説明する。特に制限されないが、実施例のデータ処理ＬＳＩを構成する回路素子は、公知のＣＭＯＳ（相補型ＭＯＳトランジスタ）やバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような１個の半導体基板上に形成される。
【００３７】
図１にデータ処理システムの実施例を示す。データ処理システムは、データ処理ＬＳＩ（ＤＰＬＳＩ）１００、外部記憶装置（ＥＭＲＹ）５１０および入出力装置（ＩＯＥ）６１０から構成され、さらにデータ処理ＬＳＩ１００は、特に制限されないが、主コントローラ（ＭＣＮＴ）２００、主メモリ（ＭＭＲＹ）３００、フレキシブルプロセッサ（ＦＰＲＣ）４００、外部記憶装置インタフェース（ＥＭＩＦ）５００、及び入出力インタフェース（ＩＯＩＦ）６００を含み、それらはシステムバス７００により相互に接続され、１個の半導体チップに形成される。
【００３８】
主プロセッサ２００は、一般的なマイクロプロセッサと同様の固有の命令セットを備えるデータ処理装置であり、主メモリ３００または外部記憶装置接続バス７３０により接続された外部記憶装置５１０に格納された制御プログラム（図示せず）に従いシステムの動作を制御し、またデータ処理を実行する。
【００３９】
主メモリ３００は、図示しないが制御プログラム、データ等ソフトウェアを実行するための情報を保持するものであり、例えばＳＲＡＭ、ＤＲＡＭ、フリップフロップのような記憶機能を備える素子により構成される。なお、主メモリ３００はデータ処理ＬＳＩ１００と同一チップであっても別々のチップであっても構わない。
【００４０】
フレキシブルプロセッサ４００は、プログラムにより定義可能な構成情報に基づき所定の演算を行うデータ処理装置であり、主メモリ３００、入出力バス７２０により接続された外部記憶装置５１０、または入出力装置６１０から入力されたデータに対し所定の演算を実行し、結果を主メモリ３００、外部記憶装置５１０、または入出力装置６１０へ出力可能となるよう構成される。さらに、その動作内容は、制御バス７１０により接続された主コントローラ２００から制御されるよう構成されることが望ましい。
【００４１】
外部記憶装置インタフェース５００は、特に制限されないが、ハードディスクドライブ、ＣＤ−ＲＯＭドライブなどの外部記憶装置５１０を、外部記憶装置接続バス７３０により接続するためのインタフェースであり、所定のプロトコルによりシステムバス７００上の各モジュールと外部記憶装置５１０の間でのデータ転送を可能とする。
【００４２】
入出力装置インタフェース６００は、特に制限されないが、画像入出力装置、音声入出力装置、Ａ／Ｄコンバータ、Ｄ／Ａコンバータなどの入出力装置６１０を、入出力装置接続バス７４０により接続するためのインタフェースであり、所定のプロトコルによりシステムバス７００上の各モジュールと入出力装置６１０の間でのデータ転送を可能とする。
【００４３】
以下、フレキシブルプロセッサ４００の構成について詳しく述べる。
【００４４】
図２に、フレキシブルプロセッサ４００の第１の実施例を示す。フレキシブルプロセッサ４００は、特に制限されないが、副コントローラ（ＳＣＮＴ）４１０、１つ以上のフレキシブルプロセッサブロック（ＦＰＢ）４５０−１〜４５０−２、および周辺モジュール（ＰＭＤＬ）４６０を含み、それらがプロセッサ内部バス４７０により相互に接続されている。さらに望ましくは、バスブリッジ（ＢＢＲＧ）４２０、共有レジスタ（ＳＨＲＥＧ）４３０、共有メモリ（ＳＨＭＲＹ）４４０を備え、主コントローラ２００または主メモリ３００との間で所定の制御信号またはデータを転送できるよう構成する。
【００４５】
副プロセッサ４１０は、一般的なマイクロプロセッサと同様の固有の命令セット、もしくはその一部を備えるデータ処理装置であり、主プロセッサ２００が制御バス７１０を経由して共有レジスタ４３０に設定した所定のコマンドに応じ、制御用メモリ（図示せず）に格納された制御プログラムを実行することにより、フレキシブルプロセッサブロック４５０−１〜４５０−２、および周辺モジュール４６０の動作を制御する。
【００４６】
バスブリッジ４２０は、システムバス７００上で所定のアドレス空間へのアクセスが発生した場合に、共有メモリ４４０へ接続される共有メモリバス４９１を制御するとともに、システムバス７００に対して所定の応答を行う。
【００４７】
共有レジスタ４３０は、主コントローラ２００からは制御バス７１０により、副コントローラ４１０からは共有レジスタバス４９０により読み書き可能であり、特に制限されないが、主コントローラ２００からのコマンド要求フィールド、副コントローラ４１０からのコマンド応答フィールドを含むよう構成される。これにより、主コントローラ２００は、副コントローラ４１０に対し、例えばリセット、起動、スタンバイ、副コントローラへの割り込み、共有メモリからのデータ転送、共有メモリへのデータ転送、副コントローラ４１０の制御プログラムの更新などのコマンドを発生させ、副コントローラ４１０は前記コマンドに対する完了通知、エラー通知などの応答を行うことができ、主コントローラ２００と副コントローラ４１０の間の良好な連携制御を実現できる。さらに、共有レジスタ４３０内に副コントローラ４１０からの割り込み要求フィールド、主コントローラ２００からの割り込み応答フィールドを設けることにより、より柔軟かつ効率的な双方向の連携制御が可能となる。
【００４８】
共有メモリ４４０は、同時に読み書き可能な２つのポートを備え、システムバス７００上、フレキシブルプロセッサ４００の内部バス４７０上のそれぞれ所定のアドレス空間へのアクセスにより読み書き可能な２ポート型のメモリである。これにより、システムバス７００、プロセッサ４００の内部バス４７０間のデータ共有および相互転送が可能となるだけでなく、バス間の独立性が高まることによりフレキシブルプロセッサ４００の動作制御が容易になる。図６の（ａ）、（ｂ）に、それぞれシステムバス７００上、プロセッサ４００の内部バス４７０上に割り当てられた共有メモリ４４０のアドレス空間の例を示す。ＣＲＯＭは制御用ＲＯＭ、ＣＲＡＭは制御用ＲＡＭ、ＯＰＬＭＲＹは演算用ローカルメモリ、ＰＭＣＲＥＧは周辺モジュール制御レジスタ、ＳＨＭＲＹは共有メモリ４４０である。
【００４９】
フレキシブルプロセッサブロック４５０−１〜４５０−２は、副コントローラ４１０上で実行されるプログラムにより定義可能でありブロック内部に保持される構成情報（図示せず）、および副コントローラ４１０からブロック制御バス４７１を介して転送される制御信号に基づき所定の演算を行う。それぞれプロセッサ内部バス４７０とは独立した入力バス４８０−１〜４８０−２、出力バス４８１−１〜４８１−２を備える（これらをまとめたものが入出力バス７２０である）ことにより、プロセッサ４００の内部バス４７０の帯域を占有することなく、高スループットの演算データ供給、および演算結果出力を実現できる。このため、例えば画像や音声などのマルチメディア系ストリームデータを高速処理することが求められるタスクの実行に好適である。
【００５０】
周辺モジュール４６０は、特に制限されないが、ＤＭＡコントローラ、タイマ、プロセッサなどであり、副コントローラ４１０、およびフレキシブルプロセッサブロック４５０−１〜４５０−２と連係動作することにより、制御効率および演算能力の向上を実現する。
【００５１】
図３に、フレキシブルプロセッサ４００の第２の実施例を示す。第１の実施例に対し、本実施例ではフレキシブルプロセッサブロック４５０−１の出力バス４８１−１、フレキシブルプロセッサブロック４５０−２の入力バス４８０−２をプロセッサ４００内部で連結したブロック間バス４８２を備える点が相違である。これにより、プロセッサ内部バス４７０の帯域を占有することなく、複数のフレキシブルプロセッサブロック間でオーバヘッドの小さいデータ転送が可能となるため、複数ブロックをパイプライン様に連携させたスケーラブルかつ高効率な、ストリームデータの処理に好適なプロセッサを実現できる。
【００５２】
図４に、フレキシブルプロセッサ４００の第３の実施例を示す。第１の実施例に対し、本実施例では入力バス４８０−１〜４８０−２および出力バス４８１−１〜４８１−２をプロセッサ４００内部で対向接続したブロック間バス４８２、４８３を備え、プロセッサ４００外部への入出力バスが省略された点が相違である。これにより、プロセッサ内部バス４７０の帯域を占有することなく、複数のフレキシブルプロセッサブロック間でオーバヘッドの小さい双方向データ転送が可能となるだけでなく、演算セルや演算用ローカルメモリなどのハードウェアリソースの相互利用を実現することにより、データ検索、連想処理などに好適なプロセッサを実現できる。
【００５３】
図５に、フレキシブルプロセッサ４００の第４の実施例を示す。第１の実施例に対し、本実施例ではバスブリッジ４２０にシステムバス７００およびプロセッサ内部バス４７０から共有メモリ４４０へのアクセスを調停する機能を追加するとともに、共有メモリ４４０を容量あたりの面積を削減可能な１ポート型に置換し、さらに主コントローラとの間の連携制御を単純化することにより共有レジスタ４３０を削減した点が相違である。これにより、フレキシブルプロセッサ４００の半導体チップ上での面積削減、もしくはチップ上での同一面積との制約下では共有メモリ４４０の容量増大などが可能となる。
【００５４】
図２から図５は、本発明が適用されたフレキシブルプロセッサ４００の代表的な実施例であり、例えば第４の実施例をもとに入出力バスを対向接続するなど、実施例の一部を自由に組み合わせたフレキシブルプロセッサの実現を排除するものではない。また、フレキシブルプロセッサブロック数、プロセッサ内部バス本数、ブロック制御バスとプロセッサ内部バスの統合の有無などは、フレキシブルプロセッサ４００に要求される実現コストやデータ処理性能に応じて自由に選択され、組み合わされるものである。
【００５５】
続いて、フレキシブルプロセッサブロックの構成について詳述する。
【００５６】
図７に、フレキシブルプロセッサブロックの実施例を示す。フレキシブルプロセッサブロック４５０−１は、特に制限されないが、演算部としての演算アレイ（ＯＰＡＲＹ）８００、ローカルメモリ部としての演算用ローカルメモリ（ＯＰＬＭＲＹ）８２０、入力ポート（ＩＰＲＴ）８５０または出力ポート（ＯＰＲＴ）８６０の少なくとも一方を含み、それらがバススイッチ部としてのクロスバスイッチ（ＣＢＳＷ）８１０により相互に接続されている。さらに望ましくは、制御部としてのコンフィギュレーション・シーケンスコントローラ（ＣＳＣＮＴ）８３０、バスインタフェース（ＢＳＩＦ）８４０を備え、それぞれ副コントローラ４１０と連携した状態管理、高速なデータ転送が可能となるよう構成する。
【００５７】
演算アレイ８００は、一般的なプロセッサにおける算術論理演算ユニットと同程度の演算性能を備え、２次元的に配列された第１の演算ユニットとしての演算セル（ＯＰＣ）８０２−１〜８０２−８、８０３−１〜８０３−８、およびそれらの左右端に配置され、メモリアクセス制御機能若しくはロード・ストア機能に特化した第２の演算ユニットとしてのロードストアセル（ＲＳＣ）８０１−１〜８０１−８、８０４−１〜８０４−８から構成される。演算セル８０２−１〜８０２−８、８０３−１〜８０３−８は、特に制限されないが、それぞれ上下左右の４方向に隣接する４セルとの間でのみ相互接続することにより、隣接セル間に限定された高い動作周波数でのデータ転送が可能である。ここで、各演算セルの入出力インタフェースのみ統一されていれば機能は単一である必要はなく、実行すべきタスクの備える演算特性に応じ、例えば加減算のみ実行可能な演算セルと累積演算のみ実行可能な演算セルを最適なパタンで配置することにより、すべての演算を実行可能な単一種の演算セルを配置する場合と比較し、半導体チップ上の面積を削減することができ、面積あたりの性能の高い演算アレイを実現できる。さらに、上下および左右方向の演算セル数は、要求されるコストおよび演算性能により任意に設定できることは言うまでもない。ロードストアセル８０１−１〜８０１−８、８０４−１〜８０４−８は、演算セルの左右端に配置され、特に制限されないが、一方は右側（または左側）に隣接する演算セルとの間でのみ、他方はクロスバスイッチ８１０との間で相互接続される。各演算セルおよびロードストアセルの動作内容は、コンフィギュレーション・シーケンスコントローラ８３０から演算アレイ制御バス８３１を経由して出力される構成情報（ＣＮＦＤＡＴ）、または前記構成情報から変換される情報により定義される。ロードストアセル８０１−１〜８０１−８、８０４−１〜８０４−８は、演算セル８０２−１〜８０２−８、８０３−１〜８０３−８への演算オペランドのロード要求と演算セル８０２−１〜８０２−８、８０３−１〜８０３−８による演算結果のストア要求とを生成可能である。
【００５８】
クロスバスイッチ８１０は、演算アレイ８００、演算用ローカルメモリ８２０、入力ポート８５０、出力ポート８６０の間の柔軟なデータ転送を実現するため、接続経路を任意に設定可能となるように構成される。クロスバスイッチ８１０の動作内容は、コンフィギュレーション・シーケンスコントローラ８３０からクロスバスイッチ制御バス８３２を経由して出力される構成情報、または前記構成情報から変換される情報により定義される。
【００５９】
演算用ローカルメモリ８２０は、特に制限されないが、２以上のポートを備える複数のメモリバンク（ＭＢＮＫ）８２１−１〜８２１−１０から構成され、それぞれクロスバスイッチ８１０およびブロック内部バス８７０から独立にアクセス可能である。メモリバンク数、メモリバンク容量、および各メモリバンクのポート数は、要求されるコストおよび演算性能により任意に設定可能である。また、クロスバスイッチ８１０、ブロック内部バス８７０と演算用ローカルメモリ８２０の間に図示しないアクセス調停回路を挿入することにより、１ポート型または２ポート型のメモリバンクで擬似的に３以上のポートを備えるメモリバンクを構成してもよい。
【００６０】
コンフィギュレーション・シーケンスコントローラ８３０は、演算アレイ８００およびクロスバスイッチ８１０の構成情報を格納するコンフィギュレーションデータバッファ（図示せず）、構成情報の更新条件を格納するシーケンス制御テーブル（図示せず）を含み、演算アレイ８００およびクロスバスイッチ８１０の構成情報をそれぞれ演算アレイ制御バス８３１、およびクロスバスイッチ制御バス８３２へ出力する。なお、構成情報の更新条件としては、特に制限されないが、演算アレイ８００内の所定のセルから出力されるトリガバス８０５、８０６の値、経過サイクル数などを指定できる。
【００６１】
バスインタフェース８４０は、プロセッサ内部バス４７０およびブロック制御バス４７１と、ブロック内部バス８７０、８７１とを接続することにより、演算用ローカルメモリ８２０の内容などのフレキシブルプロセッサブロックの内部状態を読み書きし、また副コントローラ４１０とともにフレキシブルプロセッサブロックの動作を連携制御できるように構成される。さらに、特に制限されないが、メモリバンク間でのデータコピー、複数のメモリバンクへ所定の順序およびアドレスパタンでアクセスしデータ転送を行うインターリーブ転送、複数のメモリバンクへ同時にアクセスしデータ転送を行う並列転送などの機能を備えることにより、フレキシブルプロセッサブロック内外のデータ転送効率を向上させてもよい。
【００６２】
入力ポート８５０は、１つ以上の入力ポートコントローラ（ＩＰＰ）８５１−１〜８５１−８から構成され、必要に応じて入力バス４８０−１とクロスバスイッチ８１０との間の同期をとる。フレキシブルプロセッサブロックで実行されるタスクに要求される入力ポート数が限定的である場合、入力ポート数を実行に必要な最小数とすることで、面積あたりの性能の高いデータ処理ＬＳＩを実現できる。ただし、複数のフレキシブルプロセッサブロックによる連携処理を実現する場合には、特に制限されないが、入力ポート８５０がデータ転送のボトルネックとなることを避けるため、入力ポート数を演算アレイ８００内のロードストアセル数の２分の１（すなわち演算アレイ８００内の片側分のロードストアセル数）以上とすることが望ましい。
【００６３】
出力ポート８６０は、１つ以上の出力ポートコントローラ（ＯＰＰ）８６１−１〜８６１−８から構成され、必要に応じて出力バス４８１−１とクロスバスイッチ８１０との間の同期をとる。フレキシブルプロセッサブロックで実行されるタスクに要求される出力ポート数が限定的である場合、出力ポート数を実行に必要な最小数とすることで、面積あたりの性能の高いデータ処理ＬＳＩを実現できる。ただし、複数のフレキシブルプロセッサブロックによる連携処理を実現する場合には、特に制限されないが、出力ポート８６０がデータ転送のボトルネックとなることを避けるため、出力ポート数を演算アレイ８００内のロードストアセル数の２分の１（すなわち演算アレイ８００内の片側分のロードストアセル数）以上とすることが望ましい。
【００６４】
入力ポート８５０および出力ポート８６０をクロスバスイッチ８１０と接続することにより、プロセッサ内部バス４７０などを経由せず、転送オーバヘッドのない効率的なストリームデータ処理が可能となる。すなわち、入力ポート８５０から演算用ローカルメモリ８２０への転送経路を設定することにより、入力ポートからのストリームデータを直接演算用ローカルメモリ８２０に格納することができ、演算アレイ８００から出力ポート８６０への転送経路を設定することにより、演算結果を直接ストリームデータとして出力可能となる。
【００６５】
なお、以上フレキシブルプロセッサブロック４５０−１について説明したが、フレキシブルプロセッサブロック４５０−２も同様である。また、特に制限されないが、フレキシブルプロセッサブロック内のすべての演算データにイネーブル情報を付加することにより、無効な演算およびメモリアクセスが抑止されるよう構成するとよい。また、入力ポート８５０及び出力ポート８６０を介して外部メモリ５１０をアクセスする場合にはメモリアクセスに必要なプロトコルに従ってデータのアライメントやストロー部信号の生成は、特に制限されないが、入力ポート８５０及び出力ポート８６０が行う。
【００６６】
図８に、演算セルの第１の実施例を示す。演算セル８０２−１（８０２−２〜８０２−８、８０３−１〜８０３−８）は、特に制限されないが、算術論理演算命令、フロー制御命令を実行可能な算術論理演算ユニット（ＡＬＵ）９００、シフト命令、ローテート命令、符号拡張命令、スワップ命令を実行可能なシフト演算ユニット（ＳＦＴＵ）９０１、データのスルー出力、定数出力を発生可能なデータスルーユニット（ＤＴＨＵ）９０２、前記演算ユニットへの入力オペランドを隣接する４セルの出力から選択する入力スイッチ（ＩＳＷ）９０３、オペランド間のディレイ調整を行うためのデータディレイユニット（ＤＤＵ）９０４、隣接する４セルへの出力データを選択する出力スイッチ（ＯＳＷ）９０５、パイプラインラッチ（ＰＬＡＴ）９０６、演算アレイ制御バス８３１の内容に応じて演算セルの動作を制御するセル制御ユニット（ＣＣＮＴＵ）９０７、セル制御バス９０８により構成される。前記命令は、１クロックサイクルのスループット、１クロックサイクルの最小レイテンシで実行される。
【００６７】
図９に、演算セルの第２の実施例を示す。演算セル８０２−１（８０２−２〜８０２−８、８０３−１〜８０３−８）は、特に制限されないが、累算命令、乗算命令、積和演算命令、飽和つき加減算命令、カウント命令を実行可能な積和演算ユニット（ＭＡＣＵ）９１０、データのスルー出力、定数出力を発生可能なデータスルーユニット（ＤＴＨＵ）９１１、前記演算ユニットへの入力オペランドを隣接する４セルの出力から選択する入力スイッチ（ＩＳＷ）９１２、オペランド間のディレイ調整および中間演算結果の保持を行うためのデータディレイユニット（ＤＤＵ）９１３、隣接する４セルへの出力データを選択する出力スイッチ（ＯＳＷ）９１４、パイプラインラッチ（ＰＬＡＴ）９１５、演算アレイ制御バス８３１の内容に応じて演算セルの動作を制御するセル制御ユニット（ＣＣＮＴＵ）９１６、セル制御バス９１７により構成される。前記命令は、１クロックサイクルのスループット、命令により１〜２クロックサイクルの最小レイテンシで実行される。
【００６８】
図１０に、ロードストアセルの実施例を示す。ロードストアセル８０１−１（８０１−２〜８０１−８、８０４−１〜８０４−８）は、特に制限されないが、リード信号やライト信号などに所定のメモリアクセス要求信号を発生させるアクセス制御ユニット（ＡＣＵ）９２０、少なくとも演算用ローカルメモリ８２０へのアクセスアドレスを生成するアドレス生成ユニット（ＡＧＵ）９２１、ストアデータを出力するストアデータ出力ユニット（ＳＤＧＵ）９２２、所定のメモリアクセス用データフォーマットを生成するアドレス／データマルチプレクサ（ＡＤＭＰＸ）９２３、ロードデータのアライメントおよび符号拡張を行うロードデータ生成ユニット（ＤＧＵ）９２６、パイプラインラッチ（ＰＬＡＴ）９２４、９２５、９２７、演算アレイ制御バス８３１の内容に応じてロードストアセルの動作を制御するセル制御ユニット（ＣＣＮＴＵ）９２８、セル制御バス９２９により構成される。前記アクセス制御ユニット（ＡＣＵ）９２０、ストアデータ出力ユニット（ＳＤＧＵ）９２２、アドレス／データマルチプレクサ（ＡＤＭＰＸ）９２３、ロードデータ生成ユニット（ＤＧＵ）９２６は、アドレス生成ユニット（ＡＧＵ）９２１で生成されたアドレスを用いてロード要求とストア要求を生成するロードストア制御ユニットを構成する。尚、本セルの目標動作周波数に応じ、パイプラインラッチの一部を省略可能である。アドレス生成ユニット９２１は、加算器（図示せず）を備え、セルの構成情報として基準アドレス、アドレス増分、加算回数を指定することにより所定のパタンのアドレスを生成できるほか、隣接する演算セルから出力されたデータ値をアドレスとして使用するよう構成することにより、ランダムアドレスへのメモリアクセスを可能とする。さらに、アドレス生成ユニット９２１は、リードポインタおよびライトポインタ（図示せず）を備え、アクセス制御ユニット９２０と連携し、所定のメモリバンクを論理的にＦＩＦＯバッファとして利用可能となるよう構成することにより、実行されるタスクにおけるストリームデータの取り扱いを容易とする。
【００６９】
ロードストアセル８０１−１（８０１−２〜８０１−８、８０４−１〜８０４−８）は、特に制限されないが、図１１に示す３つの基本命令を実行可能であり、クロスバスイッチ８１０に対し所定の要求フォーマット（ＲＥＱＦＲＭ）に従いデータを送信し、所定の応答フォーマット（ＡＣＫＦＲＭ）に従い受信されたデータを処理することにより、演算用ローカルメモリ８２０へのアクセスを実現する。図１１に示される基本命令（ＩＮＳＴ）はシングルロード（ＳＬＯＤ）、シングルストア（ＳＳＴＲ）、パラレルロード（ＰＬＯＤ）とされる。ロードストアセルがシングルロード（ＳＬＯＤ）又はパラレルロード（ＰＬＯＤ）命令を実行すると、要求フォーマットに従ってロード要求を生成してクロスバスイッチ８１０に与える。クロスバススイッチはそのロードアドレス（ＬＯＤＡＤＲＳ）からデータをリードし、リードデータをロードデータ（ＬＯＤＤＡＴ）として含む応答フォーマットをそのロードストアセルに返す。応答フォーマットが返されたロードストアセルは応答ファーマットに含まれるロードデータ（ＬＯＤＤＡＴ）を後段の演算セルに向けて出力する。パラレルロードはロードアドレスＬＯＤＡＤＲＳ０とＬＯＤＡＤＲＳ１が一緒に供給され、ロードデータＬＯＤＤＡＴ０、ＬＯＤＤＡＴ１が一緒に返される。ロードストアセルがシングルストア（ＳＳＴＲ）命令を実行すると、要求フォーマットに従ってストア要求を生成してクロスバスイッチ８１０に与える。クロスバススイッチはそのストアアドレス（ＳＴＲＡＤＲＳ）にストアデータ（ＳＴＲＤＡＴ）を書き込み、その応答フォーマットを対応するロードストアセルに返す。ＮＯＮで示される領域は未使用領域である。要求フォーマット（ＲＥＱＦＲＭ）の先頭３ビットのうち、先等の第1ビットはその要求の有効性を示す有効フラグ、第２及び第３ビットは要求の種別を示すコマンドである。応答フォーマット（ＡＣＫＦＲＭ）の先頭１ビットはその要求の有効性を示す有効フラグである。この例では有効フラグは論理値“１”が有効を意味する。前記要求フォーマットに含む有効フラグ及びコマンドは例えばアドレス生成ユニット９２１が生成する。
【００７０】
図１２に、クロスバスイッチの実施例を示す。クロスバスイッチ８１０は、特に制限されないが、入出力間での接続経路を確立するスイッチマトリクス（ＳＷＭＴＲＸ）９３０、図１１に示す要求フォーマットおよび応答フォーマットと、メモリバンク８２１−１〜８２１−１０に対する所定の読み書き手順との間の変換を行うメモリインタフェース（ＭＩＦ）９３１−１〜９３１−１０、パイプラインラッチ（ＰＬＡＴ）９３２、９３３、９３４、９３５−１〜９３５−１０、９３６、クロスバスイッチ制御バス８３２の内容に応じてクロスバスイッチの動作を制御するクロスバ制御ユニット（ＣＢＣＮＴ）９３７、クロスバ制御バス９３８により構成される。なお、本クロスバスイッチの目標動作周波数に応じ、パイプラインラッチの一部を省略可能である。
【００７１】
以下、スイッチマトリクス９３０の構成について詳しく述べる。
【００７２】
図１３に、スイッチマトリクスの第１の実施例（スタティック構成）を示す。スイッチマトリクス（ＳＷＭＴＲＸ）９３０は、特に制限されないが、入力データをスイッチマトリクス内部に展開するスイッチマトリクス内部バス９４０、クロスバスイッチの構成情報からクロスバ制御ユニット９３７により準静的に生成されるクロスバ制御バス９３８の内容に応じ出力データのマスクおよび選択を行う出力マスクつきセレクタ（ＳＥＬ）９４１−１〜９４１−１０、９４２−１〜９４２−８、９４３−１〜９４３−８、所定の入力データをマスクする出力マスク（ＭＳＫ）９４４−１〜９４４−８により構成される。なお、特に制限されないが、前記出力マスクつきセレクタ９４１，９４２，９４３はそれぞれ独立に、すべての入力から１つの選択するよう構成してもよいし、一部の入力から１つの選択をする、もしくは所定の１入力のみ選択可能なよう制限することにより、半導体チップ上の実装面積を削減するよう構成してもよい。前記出力マスク（ＭＳＫ）９４４−１〜９４４−８は出力ポート８６０からの出力をロードストアセル８０４からの入力に限定する。入力ポートからの入力に対してはその接続先を制限していないので実害はない。半導体チップ上の実装面積を削減するためである。
【００７３】
図１３の例では、クロスバスイッチの接続経路はその構成情報により準静的に決定されるため、経路を変更する場合には構成情報を変更しなければならないことに注意されたい。
【００７４】
図１４に、スイッチマトリクスの第２の実施例（ダイナミック構成）を示す。スイッチマトリクス（ＳＷＭＴＲＸ）９３０は、特に制限されないが、入力データをスイッチマトリクス内部に展開するスイッチマトリクス内部バス９５０、入力データを一時保持し、図１１に示す要求フォーマットのアドレスフィールドからアクセス先メモリバンクを判定（プリデコード）し、必要に応じて応答フォーマットの応答先情報を該入力データに埋め込むマトリクス入力バッファ／アドレスプリデコーダ（ＩＢＡＤ）９５１−１〜９５１−１０、９５２−１〜９５２−８、９５３−１〜９５３−８、９５４−１〜９５４−８、マトリクス出力バッファ制御バス９６１の内容に応じ出力データを選択し一時保持するマトリクス出力バッファ（ＭＯＢ）９５５−１〜９５５−１０、９５６−１〜９５６−８、９５７−１〜９５７−８、９５８−１〜９５８−８、プリデコード結果を出力するプリデコード結果バス９５９、前記プリデコード結果バス９５９の内容をもとに前記マトリクス出力バッファ制御バスに所定の制御信号を出力する内部バスアービタ（ＡＲＢＴ）９６０から構成される。なお、特に制限されないが、前記マトリクス出力バッファへの入力はそれぞれ独立に、全ての入力から１つの選択をするよう構成してもよいし、一部の入力から１つの選択をする、もしくは所定の１入力のみ選択可能なよう制限することにより、半導体チップ上の実装面積を削減するよう構成してもよい。また、特に制限されないが、複数の入力により前記マトリクス入力バッファおよび前記スイッチマトリクス内部バスを共有することにより、さらに半導体チップ上の実装面積を削減するよう構成してもよい。本実施例では、クロスバスイッチの接続経路はアクセスアドレスにより動的に決定されるため、クロスバスイッチの構成情報が不要である。
【００７５】
図１５にスタティック構成をもつクロスバスイッチ８１０を備えたフレキシブルプロセッサブロック（ＦＰＢ）４５０における、各メモリバンク（ＭＢＮＫ）８２１のアドレス空間を示す。図１６にダイナミック構成をもつクロスバスイッチ８１０を備えたフレキシブルプロセッサブロック（ＦＰＢ）４５０における、各メモリバンク（ＭＢＮＫ）８２１のアドレス空間を示す。図１１に示す要求フォーマットのアドレスフィールドのアドレス（ＬＯＤＡＤＲＳ、ＳＴＲＡＤＲＳ、ＬＯＤＡＤＲＳ０、ＬＯＤＡＤＲＳ１）としてアクセス先メモリバンクのアドレスを指定することにより、該メモリバンクへのアクセスが可能となる。スタティック構成の場合、アクセス先メモリバンクはクロスバスイッチ８１０の構成情報（コンフィグレーション情報）により決定されるため、すべてのメモリバンクのアドレス空間は図１５に代表的に示されるように１つに縮退する。Ｓ−ＦＰＢは同一フレキシブルプロセッサブロック内のバンクメモリ８２１−１〜８２１−１０を意味する。Ｆ−ＦＰＢは図３に例示されるような下流側のフレキシブルプロセッサブロック内のバンクメモリ８２１−１〜８２１−１０を意味する。ＡＳＰＣはフレキシブルプロセッサのアドレス空間である。
【００７６】
一方、ダイナミック構成の場合、図１６に例示されるように、各メモリバンクのアドレス空間は互いに異なり、更に、入出力ポートを介して接続された２つの隣接するフレキシブルプロセッサブロック間でのシームレスなメモリアクセスを実現するため、隣接フレキシブルプロセッサブロック内の各メモリバンクのアドレス空間が単一アドレス空間内に定義される。Ｓ−ＦＰＢ、ＡＳＰＣの意味は図１５の場合と同じである。Ａ−ＦＰＢは隣接するフレキシブルプロセッサブロック内のバンクメモリ８２１−１〜８２１−１０を意味する。
【００７７】
本発明におけるデータ処理装置で所定のアプリケーションを実行するにあたり、アプリケーションを構成する複数のタスクを、それぞれの処理内容および演算特性に応じ主コントローラ２００、副コントローラ４１０、およびフレキシブルプロセッサブロック４５０−１〜４５０−２のいずれかに割り当て、主メモリ３００や共有メモリ４４０を介して相互に連携処理することにより、高いアプリケーション処理性能を実現することが可能である。
【００７８】
このとき、フレキシブルプロセッサブロックを構成する演算アレイ８００内の演算セル８０１〜８０４の数は有限であり、実行すべきタスクの規模が単一の演算アレイ８００に割り当てられない場合がある。そこで、タスクを単一の演算アレイ８００に割り当てられる規模に分割し、フレキシブルプロセッサブロック４５０の動作内容を定義する構成情報を更新しながら分割されたタスクを逐次実行することにより、小規模のハードウェアでタスク全体を処理することが可能となる。一方、将来より微細な半導体製造プロセスを利用するなどの理由により、フレキシブルプロセッサのハードウェア規模を増大させることが可能になった場合をあらかじめ考慮すると、ハードウェア規模に対してスケーラブルに処理性能が向上するだけでなく、従来のソフトウェアを再利用することによりデータ処理システムの開発期間を短縮可能であるという特徴をもつよう、フレキシブルプロセッサブロック４５０を構成することが望まれる。
【００７９】
本願発明者は、フレキシブルプロセッサブロック４５０が備える入出力ポート８５０，８６０の応用方法を検討し、入出力ポート８５０，８６０を介して複数フレキシブルプロセッサブロック４５０を連結することにより、以下に例示して説明する新たな価値を見出した。
【００８０】
例えばフレキシブルプロセッサ４００で実行すべきタスクとしてタスク１（ＴＳＫ１）、タスク２（ＴＳＫ２）があり、タスク１はそれぞれサブタスクＡ（ＳＵＢＴＳＫＡ）からサブタスクＢ（ＳＵＢＴＳＫＢ）を連続処理することにより実行され、タスク２はそれぞれサブタスクＡ（ＳＵＢＴＳＫＡ）からサブタスクＣ（ＳＵＢＴＳＫＣ）を連続処理することにより実行されるものとする。ただし、サブタスクＡ、サブタスクＢ、サブタスクＣはそれぞれ（現在の）フレキシブルプロセッサブロック４５０に割り当て可能な規模のタスクであるとする。
【００８１】
図１７には１つのフレキシブルプロセッサブロックを用いたタスク１（ＴＳＫ１）の処理フロー、図１８には１つのフレキシブルプロセッサブロックを用いたタスク２（ＴＳＫ２）の処理フローを示す。例えば図２の一つのフレキシブルプロセッサブロック４５０−１を用いてタスク１、タスク２を実行する場合を示す。タスク１はサブタスクＡ（ＳＵＢＴＳＫＡ）からサブタスクＢ（ＳＵＢＴＳＫＢ）を直列に処理することにより実行され、タスク２はサブタスクＡ（ＳＵＢＴＳＫＡ）からサブタスクＣ（ＳＵＢＴＳＫＣ）を直列に処理することにより実行されるものとする。例えば図１７においてサブタスクＡ（ＳＵＢＴＳＫＡ）の実行結果が全てローカルメモリ８２０に退避された後、その退避された実行結果を用いてサブタスクＢ（ＳＵＢＴＳＫＢ）の処理が行われる。図１８の場合も同様である。
【００８２】
図１９には図３の態様で連結した２つのフレキシブルプロセッサブロック４５０−１、４５０−２を用いたタスク１（ＴＳＫ１）の処理フローを示す。図２０には図３の態様で連結した２つのフレキシブルプロセッサブロック４５０−１、４５０−２を用いたタスク２（ＴＳＫ２）の処理フローを示す。タスク１は、フレキシブルプロセッサブロック４５０−１によるサブタスクＡ（ＳＵＢＴＳＫＡ）の実行と、サブタスクＡの実行で逐次得られる演算結果を順次受け取ってサブタスクＡの処理に並行するサブタスクＢ（ＳＵＢＴＳＫＢ）の実行とによって実現される。図１７のように、サブタスクＡ（ＳＵＢＴＳＫＡ）の実行結果が全てローカルメモリ８２０に退避されるのを待ってサブタスクＢの処理に遷移することを要しない。複数のフレキシブルプロセッサブロック間においても所謂パイプライン的な処理が可能にされる。図２０の場合も同様である。
【００８３】
図２１には演算アレイ８００内のセル８０１〜８０４の数を２倍にした１つのフレキシブルプロセッサブロックを用いたタスク１（ＴＳＫ１）の処理フローを示す。図２２には演算アレイ８００内のセル８０１〜８０４の数を２倍にした１つのフレキシブルプロセッサブロックを用いたタスク２（ＴＳＫ２）の処理フローを示す。図２３には２個のフレキシブルプロセッサブロックを連結し、入出力ポートを経由してタスクの実行結果をブロック間で転送することによりサブタスクをパイプライン処理可能であることを示す。
【００８４】
図１９及び図２０による処理性能と、図２１及び図２２による処理性能とはほぼ同等であり、各サブタスクの実行時間が適切に調整されている場合、いずれもハードウェア規模に対してスケーラブルに処理性能が向上する。しかしながら、図１９及び図２０においては、各サブタスク向けに最適化されたフレキシブルプロセッサブロックの構成情報を再利用できるのに対し、図２１及び図２２では演算アレイ８００内のデータ転送に関する制約により、サブタスクＡおよびサブタスクＢを連結したタスク１（ＳＵＢＴＳＫＡ＆Ｂ）、サブタスクＡおよびサブタスクＣを連結したタスク２（ＳＵＢＴＳＫＡ＆Ｃ）の全体について構成情報を再調整しなければならず、ソフトウェアを再利用できない点が相違している。以上のことから、図３、図２３に例示されるようにフレキシブルプロセッサブロックを直列的に接続して用いることにより、ハードウェア規模に対してスケーラブルに処理性能が向上し、同時にフレキシブルプロセッサブロック単位でのソフトウェア再利用性を実現できることが明らかとなる。
【００８５】
以上より、実用的なフレキシブルプロセッサを実現することができる。すなわち、ロードストアインタフェース８０１，８０４、メモリバンク８２１、入出力ポート８５０，８６０を互いにクロスバスイッチ８１０で接続することにより、それらの間で柔軟性の高いデータ転送が可能になる。これにより、データ転送にともなうオーバヘッドを削減でき、各演算セルの利用効率、およびフレキシブルプロセッサブロックのデータ処理性能を向上させることができる。また、入出力ポートを介して複数のフレキシブルプロセッサブロックを連結し、ブロック間でタスクを連携処理させることにより、ブロック単位でのソフトウェア再利用性を維持しながら、ハードウェア規模に対してスケーラブルに処理性能が向上するフレキシブルプロセッサを実現することができる。
【００８６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８７】
例えば、フレキシブルプロセッサブロックを直列的に接続する場合の接続段数は２段に限定されず、それいじょうであってもよい。更に、複数個のフレキシブルプロセッサブロックをリング状に接続してもよい。また、フレキシブルプロセッサはそれ単独で一つの半導体集積回路として実現することが可能であることは言うまでもない。また、アドレス、データ及び制御信号はマルチプレクスしてバスの乗せるようにしてもよい。
【図面の簡単な説明】
【００８８】
【図１】データ処理システムを例示するブロック図である。
【図２】フレキシブルプロセッサの第１の例を示すブロック図である。
【図３】フレキシブルプロセッサの第２の例を示すブロック図である。
【図４】フレキシブルプロセッサの第３の例を示すブロック図である。
【図５】フレキシブルプロセッサの第４の例を示すブロック図である。
【図６】共有メモリのアドレス空間を示すアドレスマップである。
【図７】フレキシブルプロセッサブロックの一例を示すブロック図である。
【図８】演算セルの第１の例を示すブロック図である。
【図９】演算セルの第２の例を示すブロック図である。
【図１０】ロードストアセルの一例を示すブロック図である。
【図１１】メモリアクセスのデータフォーマットを例示する説明図である。
【図１２】クロスバスイッチの一例を示すブロック図である。
【図１３】スイッチマトリクスの第１の例を示すブロック図である。
【図１４】スイッチマトリクスの第２の例を示すブロック図である。
【図１５】スタティック構成をもつクロスバスイッチを備えたフレキシブルプロセッサブロックにおける、各メモリバンクのアドレス空間を示すアドレスマップである。
【図１６】ダイナミック構成をもつクロスバスイッチを備えたフレキシブルプロセッサブロックにおける、各メモリバンクのアドレス空間を示すアドレスマップである。
【図１７】１つのフレキシブルプロセッサブロックを用いたタスク１（ＴＳＫ１）の処理フローを示すフローチャートである。
【図１８】１つのフレキシブルプロセッサブロックを用いたタスク２（ＴＳＫ２）の処理フローを示すフローチャートである。
【図１９】図３の態様で連結した２つのフレキシブルプロセッサブロックを用いたタスク１（ＴＳＫ１）の処理フローを示すフローチャートである。
【図２０】図３の態様で連結した２つのフレキシブルプロセッサブロックを用いたタスク２（ＴＳＫ２）の処理フローを示すフローチャートである。
【図２１】演算アレイ内のセルの数を２倍にした１つのフレキシブルプロセッサブロックを用いたタスク１（ＴＳＫ１）の処理フローを示すフローチャートである。
【図２２】演算アレイ内のセルの数を２倍にした１つのフレキシブルプロセッサブロックを用いたタスク２（ＴＳＫ２）の処理フローを示すフローチャートである。
【図２３】２個のフレキシブルプロセッサブロックを連結し、入出力ポートを経由してタスクの実行結果をブロック間で転送することによりサブタスクをパイプライン処理可能であることを示すブロック図である。
【符号の説明】
【００８９】
１００  データ処理ＬＳＩ
２００  主コントローラ
３００  主メモリ
４００  フレキシブルプロセッサ
４１０  副コントローラ
４２０  バスブリッジ
４３０  共有レジスタ
４４０  共有メモリ
４５０−１、４５０−２  フレキシブルプロセッサブロック
４６０  周辺モジュール
４７０  プロセッサ内部バス
４７１  ブロック制御バス
４８０−１、４８０−２  入力バス
４８１−１、４８１−２  出力バス
４９０  共有レジスタバス
４９１  共有メモリバス
５００  外部記憶装置インタフェース
６００  入出力装置インタフェース
７００  システムバス
７１０  制御バス
７２０  入出力バス
【図１】
2006139670.tif 000003
【図２】
2006139670.tif 000004
【図３】
2006139670.tif 000005
【図４】
2006139670.tif 000006
【図５】
2006139670.tif 000007
【図６】
2006139670.tif 000008
【図７】
2006139670.tif 000009
【図８】
2006139670.tif 000010
【図９】
2006139670.tif 000011
【図１０】
2006139670.tif 000012
【図１１】
2006139670.tif 000013
【図１２】
2006139670.tif 000014
【図１３】
2006139670.tif 000015
【図１４】
2006139670.tif 000016
【図１５】
2006139670.tif 000017
【図１６】
2006139670.tif 000018
【図１７】
2006139670.tif 000019
【図１８】
2006139670.tif 000020
【図１９】
2006139670.tif 000021
【図２０】
2006139670.tif 000022
【図２１】
2006139670.tif 000023
【図２２】
2006139670.tif 000024
【図２３】
2006139670.tif 000025