本願発明者は、フレキシブルプロセッサ技術を実用性の点から検討することにより、以下の解決すべき課題を見出した。
まず、フレキシブルプロセッサを利用したデータ処理性能についてであるが、特にデータ処理の前後で発生するデータ転送に伴う処理オーバヘッドが考慮されなければならない。そうでないなら、実際の製品に適用するにあたり、演算器のみの見かけのデータ処理性能とシステム全体としてのデータ処理性能の間で乖離を生ずる懸念がある。複数の演算ユニットを並列的に動作させていくには一度に必要なオペランドの数も多くなり、ロード・ストア処理が頻繁に行わなければならないからである。
また、フレキシブルプロセッサが主に対象とする画像および音声処理応用では、データ入出力がストリーム形式である可能性が高いと考えられる。このため、システム全体として高いデータ転送性能、すなわち高い転送スループットおよび転送制御の柔軟性を備え、これによってストリームデータを効率的に処理できるフレキシブルプロセッサの実現に方法を検討する必要がある。
さらに、フレキシブルプロセッサにおけるプログラミングの概念が、一般的なマイクロプロセッサとは大きく異なる。演算ユニットの接続状態に沿って個々の演算ユニットが順次データ処理を行なうことができるように演算処理の指示を分配しなければならないからである。したがって、ソフトウェア開発の難易度が増大すると考えられる。このため、ソフトウェア再利用性を維持しつつ、そのデータ処理性能をスケーラブルに変更可能となるようフレキシブルプロセッサを構成することの必要性が本発明者によって見出された。要するに、所要のタスクを実行するのに、新たに別のソフトウェアを開発するのに比べて既存のソフトウェアを組み合わせて流用できるようになっているほうが望ましく、また、データ処理性能を向上させるには複数の演算ユニットによる既存の処理単位を複数倍にする方が望ましい、ということが本発明者によって見出された。
本発明の代表的な目的の一つは、柔軟性の高いデータ転送を実現できる動的再構成可能なデータ処理装置を提供することにある。
本発明の他の代表的な目的の一つは、高いソフトウェア再利用性の実現に資することができる動的再構成可能なデータ処理装置を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕データ処理装置は一つ以上のプロセッサブロック(450)を有し、前記プロセッサブロックは、複数の演算ユニットを備えそれらの接続形態と機能が切り換え可能にされた演算部(800)と、並列アクセス可能な複数バンク(821)を有するローカルメモリ部(820)と、外部インタフェース部(840、850,860)と、バススイッチ部(810)と、制御部(830)とを有する。前記演算部における一部の演算ユニット(801、804)は他の演算ユニット(802,803)への演算オペランドのロード要求と他の演算ユニットによる演算結果のストア要求とを生成可能であり、前記バススイッチ部は、前記演算部と、前記ローカルメモリ部と、前記外部インタフェース部との間の接続を選択可能とする。
演算部はプロセッサブロックの接続形態と機能の切り換えに応じてその演算機能が動的に再構成可能にされ、再構成された演算機能による演算処理の前後で必要なデータ転送を行う場合、上記バススイッチ部は、前記演算部に前記ローカルメモリ部又は前記外部インタフェース部からオペランドを転送し、演算部による演算結果をローカルメモリ部又は前記外部インタフェース部に転送することができる。これにより、フレキシブルプロセッサのようなデータ処理装置において柔軟性の高いデータ転送が実現される。
〔2〕具体的な形態として、前記制御部は前記演算部に対して演算ユニットの接続形態と機能を決定し、前記制御部は前記バススイッチ部による接続形態を決定する。この場合にはローカルメモリ部の複数バンクには共通アドレスをマッピングすれば足りる。一方、前記バススイッチ部がアクセスアドレスに応じてその接続形態を決定する場合には、ローカルメモリ部の複数バンクには異なるアドレスをマッピングすることが必要になる。
〔3〕別の具体的な形態として、前記演算部は、マトリクス状に配置された複数の第1の演算ユニット(802、803)と、前記第1の演算ユニットと前記バススイッチ部との間に配置された第2の演算ユニット(801、802)とを有し、前記第2の演算ユニットが前記ロード要求とストア要求を生成可能である。
更に具体的な形態として、前記ローカルメモリ部は複数のアクセスポートを有し、一方のアクセスポートは前記外部インタフェース部に接続され外部からアクセス可能にされ、他方のアクセスポートは前記バススイッチ部に接続され前記第2の演算ユニットからアクセス可能にされる。
更に具体的な形態として、前記第1の演算ユニットは、演算器と、前記演算器へのオペランドの入力を切り換える入力スイッチと、前記入力スイッチを介して入力されたオペランド間のディレイ調整を行うディレイ調整ユニットと、前記演算器の出力経路を切り換える出力スイッチと、前記出力スイッチを介して出力されたデータを保持するパイプラインラッチと、前記制御部からの指示に従って前記第1の演算ユニットの動作を制御する第1の演算制御ユニットとを有する。
更に具体的な形態として、前記第2の演算ユニットは、アドレス生成ユニット(921)と、前記アドレス生成ユニットで生成されたアドレスを用いて前記ロード要求とストア要求を生成するロードストア制御ユニット(920、922、923、926)と、前記制御部からの指示に従って前記第2の演算ユニットの動作を制御する第2の演算制御ユニットとを有する。
更に具体的な形態として、前記第2の演算ユニットは、前記バススイッチ部に対して所定の要求フォーマットに従いデータを送信し、所定の応答フォーマットに従って受信されたデータを処理する。
更に具体的な形態として、前記バススイッチ部は、前記第2の演算ユニット、前記ローカルメモリ部及び前記外部インタフェース部との間の接続経路を確立するためのスイッチマトリクスと、前記要求フォーマット及び応答フォーマットと前記ローカルメモリ部に対するアクセス手順との間の変換を行うメモリインタフェース(931)とを有する。
〔4〕更に別の具体的な形態として、前記プロセッサブロックの外部インタフェース部はアクセスポート(850.860)を有し、前記アクセスポートはデータ処理装置の外部とインタフェース可能にされる。前記アクセスポートに外部メモリを接続して利用可能になる。
〔5〕更に別の具体的な形態として、前記プロセッサブロックを複数個有し、前記プロセッサブロックの外部インタフェース部はアクセスポートを有し、一のプロセッサブロックの前記アクセスポートは他のプロセッサブロックの前記アクセスポートに接続される。例えば個々のプロセッサブロックで処理可能なタスクAとBを想定したとき、タスクA,Bを実現するためのコンフィグレーション情報、即ち、プロセッサブロックの接続形態と機能の切り換えに応じてその演算機能を再構成するためのソフトウェアが用意されている場合には、前段のプロセッサブロックでタスクAを処理し、その処理結果を次段のプロセッサブロックが受け取ってタスクBを処理するという、パイプライン的な直列処理にて、タスクA+Bの処理を実現することができる。タスクA+Cのタスクであれば個々のタスクA,Cに対応する前記コンフィグレーション情報を流用して、タスクA+Cをパイプライン的に処理することができる。プロセッサブロックの直列接続段数がn段であればn種類のタスクを合わせたタスクを既存のn種類の個々のコンフィグレーション情報を流用して処理することができる。これに対し、例えば演算部における演算ユニットの数を2倍としたプロセッサブロックを用いてA+Bのタスクを処理する場合にはタスクA+Bの演算処理時間は上記と同じになるが、既存のタスクAとBのコンフィギュレーション情報を流用することはできないから、タスクA+Bの新たなコンフィギュレーション情報を生成することが必要になる。この意味において、高いソフトウェア再利用性を実現することができる。
具体的な形態として前記一のプロセッサブロックは、前記アクセスポートを介して前記他のプロセッサブロックのローカルメモリ部をアクセス可能である。
〔6〕別の観点によるデータ処理装置は、複数個のプロセッサブロックを有し、前記プロセッサブロックは、複数の演算ユニットを備えそれらの接続形態と機能が切り換え可能にされた演算部とローカルメモリ部とを有し、一のプロセッサブロックは他のプロセッサブロックに接続される。これにより、高いソフトウェア再利用性を実現することができる。
具体的な形態として、前記ローカルメモリ部は並列アクセス可能な複数バンクを有する。並列動作する複数の演算ユニットが並列的にローカルメモリ部を利用することができる。
具体的な形態として、前記演算部は演算オペランドのロード要求と演算結果のストア要求とを生成可能である。
具体的な形態として、前記一のプロセッサブロックと他のプロセッサブロックは専用バスで接続される。
〔7〕更に別の観点によるデータ処理装置は、複数個のプロセッサブロックを有し、前記プロセッサブロックは、複数の演算ユニットを備えそれらの接続形態と機能が切り換え可能にされた演算部とローカルメモリ部とを有し、一のプロセッサブロックは他の一のプロセッサブロックのローカルメモリ部に書き込み可能である。
具体的な形態として、前記ローカルメモリ部は並列アクセス可能な複数バンクを有する。また、前記演算部における一部の演算ユニットは他の演算ユニットへの演算オペランドのロード要求と他の演算ユニットによる演算結果のストア要求とを生成可能である。また、前記一のプロセッサブロックは他のプロセッサブロックのローカルメモリ部に書き込みを行うための専用バスを有する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、柔軟性の高いデータ転送を実現できる。また、複数のプロセッサブロックを直列的に接続することによって高いソフトウェア再利用性を実現することができる。
以下、本発明の好適な実施の形態について、添付図面を参照しながら説明する。特に制限されないが、実施例のデータ処理LSIを構成する回路素子は、公知のCMOS(相補型MOSトランジスタ)やバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。
図1にデータ処理システムの実施例を示す。データ処理システムは、データ処理LSI(DPLSI)100、外部記憶装置(EMRY)510および入出力装置(IOE)610から構成され、さらにデータ処理LSI100は、特に制限されないが、主コントローラ(MCNT)200、主メモリ(MMRY)300、フレキシブルプロセッサ(FPRC)400、外部記憶装置インタフェース(EMIF)500、及び入出力インタフェース(IOIF)600を含み、それらはシステムバス700により相互に接続され、1個の半導体チップに形成される。
主プロセッサ200は、一般的なマイクロプロセッサと同様の固有の命令セットを備えるデータ処理装置であり、主メモリ300または外部記憶装置接続バス730により接続された外部記憶装置510に格納された制御プログラム(図示せず)に従いシステムの動作を制御し、またデータ処理を実行する。
主メモリ300は、図示しないが制御プログラム、データ等ソフトウェアを実行するための情報を保持するものであり、例えばSRAM、DRAM、フリップフロップのような記憶機能を備える素子により構成される。なお、主メモリ300はデータ処理LSI100と同一チップであっても別々のチップであっても構わない。
フレキシブルプロセッサ400は、プログラムにより定義可能な構成情報に基づき所定の演算を行うデータ処理装置であり、主メモリ300、入出力バス720により接続された外部記憶装置510、または入出力装置610から入力されたデータに対し所定の演算を実行し、結果を主メモリ300、外部記憶装置510、または入出力装置610へ出力可能となるよう構成される。さらに、その動作内容は、制御バス710により接続された主コントローラ200から制御されるよう構成されることが望ましい。
外部記憶装置インタフェース500は、特に制限されないが、ハードディスクドライブ、CD−ROMドライブなどの外部記憶装置510を、外部記憶装置接続バス730により接続するためのインタフェースであり、所定のプロトコルによりシステムバス700上の各モジュールと外部記憶装置510の間でのデータ転送を可能とする。
入出力装置インタフェース600は、特に制限されないが、画像入出力装置、音声入出力装置、A/Dコンバータ、D/Aコンバータなどの入出力装置610を、入出力装置接続バス740により接続するためのインタフェースであり、所定のプロトコルによりシステムバス700上の各モジュールと入出力装置610の間でのデータ転送を可能とする。
以下、フレキシブルプロセッサ400の構成について詳しく述べる。
図2に、フレキシブルプロセッサ400の第1の実施例を示す。フレキシブルプロセッサ400は、特に制限されないが、副コントローラ(SCNT)410、1つ以上のフレキシブルプロセッサブロック(FPB)450−1〜450−2、および周辺モジュール(PMDL)460を含み、それらがプロセッサ内部バス470により相互に接続されている。さらに望ましくは、バスブリッジ(BBRG)420、共有レジスタ(SHREG)430、共有メモリ(SHMRY)440を備え、主コントローラ200または主メモリ300との間で所定の制御信号またはデータを転送できるよう構成する。
副プロセッサ410は、一般的なマイクロプロセッサと同様の固有の命令セット、もしくはその一部を備えるデータ処理装置であり、主プロセッサ200が制御バス710を経由して共有レジスタ430に設定した所定のコマンドに応じ、制御用メモリ(図示せず)に格納された制御プログラムを実行することにより、フレキシブルプロセッサブロック450−1〜450−2、および周辺モジュール460の動作を制御する。
バスブリッジ420は、システムバス700上で所定のアドレス空間へのアクセスが発生した場合に、共有メモリ440へ接続される共有メモリバス491を制御するとともに、システムバス700に対して所定の応答を行う。
共有レジスタ430は、主コントローラ200からは制御バス710により、副コントローラ410からは共有レジスタバス490により読み書き可能であり、特に制限されないが、主コントローラ200からのコマンド要求フィールド、副コントローラ410からのコマンド応答フィールドを含むよう構成される。これにより、主コントローラ200は、副コントローラ410に対し、例えばリセット、起動、スタンバイ、副コントローラへの割り込み、共有メモリからのデータ転送、共有メモリへのデータ転送、副コントローラ410の制御プログラムの更新などのコマンドを発生させ、副コントローラ410は前記コマンドに対する完了通知、エラー通知などの応答を行うことができ、主コントローラ200と副コントローラ410の間の良好な連携制御を実現できる。さらに、共有レジスタ430内に副コントローラ410からの割り込み要求フィールド、主コントローラ200からの割り込み応答フィールドを設けることにより、より柔軟かつ効率的な双方向の連携制御が可能となる。
共有メモリ440は、同時に読み書き可能な2つのポートを備え、システムバス700上、フレキシブルプロセッサ400の内部バス470上のそれぞれ所定のアドレス空間へのアクセスにより読み書き可能な2ポート型のメモリである。これにより、システムバス700、プロセッサ400の内部バス470間のデータ共有および相互転送が可能となるだけでなく、バス間の独立性が高まることによりフレキシブルプロセッサ400の動作制御が容易になる。図6の(a)、(b)に、それぞれシステムバス700上、プロセッサ400の内部バス470上に割り当てられた共有メモリ440のアドレス空間の例を示す。CROMは制御用ROM、CRAMは制御用RAM、OPLMRYは演算用ローカルメモリ、PMCREGは周辺モジュール制御レジスタ、SHMRYは共有メモリ440である。
フレキシブルプロセッサブロック450−1〜450−2は、副コントローラ410上で実行されるプログラムにより定義可能でありブロック内部に保持される構成情報(図示せず)、および副コントローラ410からブロック制御バス471を介して転送される制御信号に基づき所定の演算を行う。それぞれプロセッサ内部バス470とは独立した入力バス480−1〜480−2、出力バス481−1〜481−2を備える(これらをまとめたものが入出力バス720である)ことにより、プロセッサ400の内部バス470の帯域を占有することなく、高スループットの演算データ供給、および演算結果出力を実現できる。このため、例えば画像や音声などのマルチメディア系ストリームデータを高速処理することが求められるタスクの実行に好適である。
周辺モジュール460は、特に制限されないが、DMAコントローラ、タイマ、プロセッサなどであり、副コントローラ410、およびフレキシブルプロセッサブロック450−1〜450−2と連係動作することにより、制御効率および演算能力の向上を実現する。
図3に、フレキシブルプロセッサ400の第2の実施例を示す。第1の実施例に対し、本実施例ではフレキシブルプロセッサブロック450−1の出力バス481−1、フレキシブルプロセッサブロック450−2の入力バス480−2をプロセッサ400内部で連結したブロック間バス482を備える点が相違である。これにより、プロセッサ内部バス470の帯域を占有することなく、複数のフレキシブルプロセッサブロック間でオーバヘッドの小さいデータ転送が可能となるため、複数ブロックをパイプライン様に連携させたスケーラブルかつ高効率な、ストリームデータの処理に好適なプロセッサを実現できる。
図4に、フレキシブルプロセッサ400の第3の実施例を示す。第1の実施例に対し、本実施例では入力バス480−1〜480−2および出力バス481−1〜481−2をプロセッサ400内部で対向接続したブロック間バス482、483を備え、プロセッサ400外部への入出力バスが省略された点が相違である。これにより、プロセッサ内部バス470の帯域を占有することなく、複数のフレキシブルプロセッサブロック間でオーバヘッドの小さい双方向データ転送が可能となるだけでなく、演算セルや演算用ローカルメモリなどのハードウェアリソースの相互利用を実現することにより、データ検索、連想処理などに好適なプロセッサを実現できる。
図5に、フレキシブルプロセッサ400の第4の実施例を示す。第1の実施例に対し、本実施例ではバスブリッジ420にシステムバス700およびプロセッサ内部バス470から共有メモリ440へのアクセスを調停する機能を追加するとともに、共有メモリ440を容量あたりの面積を削減可能な1ポート型に置換し、さらに主コントローラとの間の連携制御を単純化することにより共有レジスタ430を削減した点が相違である。これにより、フレキシブルプロセッサ400の半導体チップ上での面積削減、もしくはチップ上での同一面積との制約下では共有メモリ440の容量増大などが可能となる。
図2から図5は、本発明が適用されたフレキシブルプロセッサ400の代表的な実施例であり、例えば第4の実施例をもとに入出力バスを対向接続するなど、実施例の一部を自由に組み合わせたフレキシブルプロセッサの実現を排除するものではない。また、フレキシブルプロセッサブロック数、プロセッサ内部バス本数、ブロック制御バスとプロセッサ内部バスの統合の有無などは、フレキシブルプロセッサ400に要求される実現コストやデータ処理性能に応じて自由に選択され、組み合わされるものである。
続いて、フレキシブルプロセッサブロックの構成について詳述する。
図7に、フレキシブルプロセッサブロックの実施例を示す。フレキシブルプロセッサブロック450−1は、特に制限されないが、演算部としての演算アレイ(OPARY)800、ローカルメモリ部としての演算用ローカルメモリ(OPLMRY)820、入力ポート(IPRT)850または出力ポート(OPRT)860の少なくとも一方を含み、それらがバススイッチ部としてのクロスバスイッチ(CBSW)810により相互に接続されている。さらに望ましくは、制御部としてのコンフィギュレーション・シーケンスコントローラ(CSCNT)830、バスインタフェース(BSIF)840を備え、それぞれ副コントローラ410と連携した状態管理、高速なデータ転送が可能となるよう構成する。
演算アレイ800は、一般的なプロセッサにおける算術論理演算ユニットと同程度の演算性能を備え、2次元的に配列された第1の演算ユニットとしての演算セル(OPC)802−1〜802−8、803−1〜803−8、およびそれらの左右端に配置され、メモリアクセス制御機能若しくはロード・ストア機能に特化した第2の演算ユニットとしてのロードストアセル(RSC)801−1〜801−8、804−1〜804−8から構成される。演算セル802−1〜802−8、803−1〜803−8は、特に制限されないが、それぞれ上下左右の4方向に隣接する4セルとの間でのみ相互接続することにより、隣接セル間に限定された高い動作周波数でのデータ転送が可能である。ここで、各演算セルの入出力インタフェースのみ統一されていれば機能は単一である必要はなく、実行すべきタスクの備える演算特性に応じ、例えば加減算のみ実行可能な演算セルと累積演算のみ実行可能な演算セルを最適なパタンで配置することにより、すべての演算を実行可能な単一種の演算セルを配置する場合と比較し、半導体チップ上の面積を削減することができ、面積あたりの性能の高い演算アレイを実現できる。さらに、上下および左右方向の演算セル数は、要求されるコストおよび演算性能により任意に設定できることは言うまでもない。ロードストアセル801−1〜801−8、804−1〜804−8は、演算セルの左右端に配置され、特に制限されないが、一方は右側(または左側)に隣接する演算セルとの間でのみ、他方はクロスバスイッチ810との間で相互接続される。各演算セルおよびロードストアセルの動作内容は、コンフィギュレーション・シーケンスコントローラ830から演算アレイ制御バス831を経由して出力される構成情報(CNFDAT)、または前記構成情報から変換される情報により定義される。ロードストアセル801−1〜801−8、804−1〜804−8は、演算セル802−1〜802−8、803−1〜803−8への演算オペランドのロード要求と演算セル802−1〜802−8、803−1〜803−8による演算結果のストア要求とを生成可能である。
クロスバスイッチ810は、演算アレイ800、演算用ローカルメモリ820、入力ポート850、出力ポート860の間の柔軟なデータ転送を実現するため、接続経路を任意に設定可能となるように構成される。クロスバスイッチ810の動作内容は、コンフィギュレーション・シーケンスコントローラ830からクロスバスイッチ制御バス832を経由して出力される構成情報、または前記構成情報から変換される情報により定義される。
演算用ローカルメモリ820は、特に制限されないが、2以上のポートを備える複数のメモリバンク(MBNK)821−1〜821−10から構成され、それぞれクロスバスイッチ810およびブロック内部バス870から独立にアクセス可能である。メモリバンク数、メモリバンク容量、および各メモリバンクのポート数は、要求されるコストおよび演算性能により任意に設定可能である。また、クロスバスイッチ810、ブロック内部バス870と演算用ローカルメモリ820の間に図示しないアクセス調停回路を挿入することにより、1ポート型または2ポート型のメモリバンクで擬似的に3以上のポートを備えるメモリバンクを構成してもよい。
コンフィギュレーション・シーケンスコントローラ830は、演算アレイ800およびクロスバスイッチ810の構成情報を格納するコンフィギュレーションデータバッファ(図示せず)、構成情報の更新条件を格納するシーケンス制御テーブル(図示せず)を含み、演算アレイ800およびクロスバスイッチ810の構成情報をそれぞれ演算アレイ制御バス831、およびクロスバスイッチ制御バス832へ出力する。なお、構成情報の更新条件としては、特に制限されないが、演算アレイ800内の所定のセルから出力されるトリガバス805、806の値、経過サイクル数などを指定できる。
バスインタフェース840は、プロセッサ内部バス470およびブロック制御バス471と、ブロック内部バス870、871とを接続することにより、演算用ローカルメモリ820の内容などのフレキシブルプロセッサブロックの内部状態を読み書きし、また副コントローラ410とともにフレキシブルプロセッサブロックの動作を連携制御できるように構成される。さらに、特に制限されないが、メモリバンク間でのデータコピー、複数のメモリバンクへ所定の順序およびアドレスパタンでアクセスしデータ転送を行うインターリーブ転送、複数のメモリバンクへ同時にアクセスしデータ転送を行う並列転送などの機能を備えることにより、フレキシブルプロセッサブロック内外のデータ転送効率を向上させてもよい。
入力ポート850は、1つ以上の入力ポートコントローラ(IPP)851−1〜851−8から構成され、必要に応じて入力バス480−1とクロスバスイッチ810との間の同期をとる。フレキシブルプロセッサブロックで実行されるタスクに要求される入力ポート数が限定的である場合、入力ポート数を実行に必要な最小数とすることで、面積あたりの性能の高いデータ処理LSIを実現できる。ただし、複数のフレキシブルプロセッサブロックによる連携処理を実現する場合には、特に制限されないが、入力ポート850がデータ転送のボトルネックとなることを避けるため、入力ポート数を演算アレイ800内のロードストアセル数の2分の1(すなわち演算アレイ800内の片側分のロードストアセル数)以上とすることが望ましい。
出力ポート860は、1つ以上の出力ポートコントローラ(OPP)861−1〜861−8から構成され、必要に応じて出力バス481−1とクロスバスイッチ810との間の同期をとる。フレキシブルプロセッサブロックで実行されるタスクに要求される出力ポート数が限定的である場合、出力ポート数を実行に必要な最小数とすることで、面積あたりの性能の高いデータ処理LSIを実現できる。ただし、複数のフレキシブルプロセッサブロックによる連携処理を実現する場合には、特に制限されないが、出力ポート860がデータ転送のボトルネックとなることを避けるため、出力ポート数を演算アレイ800内のロードストアセル数の2分の1(すなわち演算アレイ800内の片側分のロードストアセル数)以上とすることが望ましい。
入力ポート850および出力ポート860をクロスバスイッチ810と接続することにより、プロセッサ内部バス470などを経由せず、転送オーバヘッドのない効率的なストリームデータ処理が可能となる。すなわち、入力ポート850から演算用ローカルメモリ820への転送経路を設定することにより、入力ポートからのストリームデータを直接演算用ローカルメモリ820に格納することができ、演算アレイ800から出力ポート860への転送経路を設定することにより、演算結果を直接ストリームデータとして出力可能となる。
なお、以上フレキシブルプロセッサブロック450−1について説明したが、フレキシブルプロセッサブロック450−2も同様である。また、特に制限されないが、フレキシブルプロセッサブロック内のすべての演算データにイネーブル情報を付加することにより、無効な演算およびメモリアクセスが抑止されるよう構成するとよい。また、入力ポート850及び出力ポート860を介して外部メモリ510をアクセスする場合にはメモリアクセスに必要なプロトコルに従ってデータのアライメントやストロー部信号の生成は、特に制限されないが、入力ポート850及び出力ポート860が行う。
図8に、演算セルの第1の実施例を示す。演算セル802−1(802−2〜802−8、803−1〜803−8)は、特に制限されないが、算術論理演算命令、フロー制御命令を実行可能な算術論理演算ユニット(ALU)900、シフト命令、ローテート命令、符号拡張命令、スワップ命令を実行可能なシフト演算ユニット(SFTU)901、データのスルー出力、定数出力を発生可能なデータスルーユニット(DTHU)902、前記演算ユニットへの入力オペランドを隣接する4セルの出力から選択する入力スイッチ(ISW)903、オペランド間のディレイ調整を行うためのデータディレイユニット(DDU)904、隣接する4セルへの出力データを選択する出力スイッチ(OSW)905、パイプラインラッチ(PLAT)906、演算アレイ制御バス831の内容に応じて演算セルの動作を制御するセル制御ユニット(CCNTU)907、セル制御バス908により構成される。前記命令は、1クロックサイクルのスループット、1クロックサイクルの最小レイテンシで実行される。
図9に、演算セルの第2の実施例を示す。演算セル802−1(802−2〜802−8、803−1〜803−8)は、特に制限されないが、累算命令、乗算命令、積和演算命令、飽和つき加減算命令、カウント命令を実行可能な積和演算ユニット(MACU)910、データのスルー出力、定数出力を発生可能なデータスルーユニット(DTHU)911、前記演算ユニットへの入力オペランドを隣接する4セルの出力から選択する入力スイッチ(ISW)912、オペランド間のディレイ調整および中間演算結果の保持を行うためのデータディレイユニット(DDU)913、隣接する4セルへの出力データを選択する出力スイッチ(OSW)914、パイプラインラッチ(PLAT)915、演算アレイ制御バス831の内容に応じて演算セルの動作を制御するセル制御ユニット(CCNTU)916、セル制御バス917により構成される。前記命令は、1クロックサイクルのスループット、命令により1〜2クロックサイクルの最小レイテンシで実行される。
図10に、ロードストアセルの実施例を示す。ロードストアセル801−1(801−2〜801−8、804−1〜804−8)は、特に制限されないが、リード信号やライト信号などに所定のメモリアクセス要求信号を発生させるアクセス制御ユニット(ACU)920、少なくとも演算用ローカルメモリ820へのアクセスアドレスを生成するアドレス生成ユニット(AGU)921、ストアデータを出力するストアデータ出力ユニット(SDGU)922、所定のメモリアクセス用データフォーマットを生成するアドレス/データマルチプレクサ(ADMPX)923、ロードデータのアライメントおよび符号拡張を行うロードデータ生成ユニット(DGU)926、パイプラインラッチ(PLAT)924、925、927、演算アレイ制御バス831の内容に応じてロードストアセルの動作を制御するセル制御ユニット(CCNTU)928、セル制御バス929により構成される。前記アクセス制御ユニット(ACU)920、ストアデータ出力ユニット(SDGU)922、アドレス/データマルチプレクサ(ADMPX)923、ロードデータ生成ユニット(DGU)926は、アドレス生成ユニット(AGU)921で生成されたアドレスを用いてロード要求とストア要求を生成するロードストア制御ユニットを構成する。尚、本セルの目標動作周波数に応じ、パイプラインラッチの一部を省略可能である。アドレス生成ユニット921は、加算器(図示せず)を備え、セルの構成情報として基準アドレス、アドレス増分、加算回数を指定することにより所定のパタンのアドレスを生成できるほか、隣接する演算セルから出力されたデータ値をアドレスとして使用するよう構成することにより、ランダムアドレスへのメモリアクセスを可能とする。さらに、アドレス生成ユニット921は、リードポインタおよびライトポインタ(図示せず)を備え、アクセス制御ユニット920と連携し、所定のメモリバンクを論理的にFIFOバッファとして利用可能となるよう構成することにより、実行されるタスクにおけるストリームデータの取り扱いを容易とする。
ロードストアセル801−1(801−2〜801−8、804−1〜804−8)は、特に制限されないが、図11に示す3つの基本命令を実行可能であり、クロスバスイッチ810に対し所定の要求フォーマット(REQFRM)に従いデータを送信し、所定の応答フォーマット(ACKFRM)に従い受信されたデータを処理することにより、演算用ローカルメモリ820へのアクセスを実現する。図11に示される基本命令(INST)はシングルロード(SLOD)、シングルストア(SSTR)、パラレルロード(PLOD)とされる。ロードストアセルがシングルロード(SLOD)又はパラレルロード(PLOD)命令を実行すると、要求フォーマットに従ってロード要求を生成してクロスバスイッチ810に与える。クロスバススイッチはそのロードアドレス(LODADRS)からデータをリードし、リードデータをロードデータ(LODDAT)として含む応答フォーマットをそのロードストアセルに返す。応答フォーマットが返されたロードストアセルは応答ファーマットに含まれるロードデータ(LODDAT)を後段の演算セルに向けて出力する。パラレルロードはロードアドレスLODADRS0とLODADRS1が一緒に供給され、ロードデータLODDAT0、LODDAT1が一緒に返される。ロードストアセルがシングルストア(SSTR)命令を実行すると、要求フォーマットに従ってストア要求を生成してクロスバスイッチ810に与える。クロスバススイッチはそのストアアドレス(STRADRS)にストアデータ(STRDAT)を書き込み、その応答フォーマットを対応するロードストアセルに返す。NONで示される領域は未使用領域である。要求フォーマット(REQFRM)の先頭3ビットのうち、先等の第1ビットはその要求の有効性を示す有効フラグ、第2及び第3ビットは要求の種別を示すコマンドである。応答フォーマット(ACKFRM)の先頭1ビットはその要求の有効性を示す有効フラグである。この例では有効フラグは論理値“1”が有効を意味する。前記要求フォーマットに含む有効フラグ及びコマンドは例えばアドレス生成ユニット921が生成する。
図12に、クロスバスイッチの実施例を示す。クロスバスイッチ810は、特に制限されないが、入出力間での接続経路を確立するスイッチマトリクス(SWMTRX)930、図11に示す要求フォーマットおよび応答フォーマットと、メモリバンク821−1〜821−10に対する所定の読み書き手順との間の変換を行うメモリインタフェース(MIF)931−1〜931−10、パイプラインラッチ(PLAT)932、933、934、935−1〜935−10、936、クロスバスイッチ制御バス832の内容に応じてクロスバスイッチの動作を制御するクロスバ制御ユニット(CBCNT)937、クロスバ制御バス938により構成される。なお、本クロスバスイッチの目標動作周波数に応じ、パイプラインラッチの一部を省略可能である。
以下、スイッチマトリクス930の構成について詳しく述べる。
図13に、スイッチマトリクスの第1の実施例(スタティック構成)を示す。スイッチマトリクス(SWMTRX)930は、特に制限されないが、入力データをスイッチマトリクス内部に展開するスイッチマトリクス内部バス940、クロスバスイッチの構成情報からクロスバ制御ユニット937により準静的に生成されるクロスバ制御バス938の内容に応じ出力データのマスクおよび選択を行う出力マスクつきセレクタ(SEL)941−1〜941−10、942−1〜942−8、943−1〜943−8、所定の入力データをマスクする出力マスク(MSK)944−1〜944−8により構成される。なお、特に制限されないが、前記出力マスクつきセレクタ941,942,943はそれぞれ独立に、すべての入力から1つの選択するよう構成してもよいし、一部の入力から1つの選択をする、もしくは所定の1入力のみ選択可能なよう制限することにより、半導体チップ上の実装面積を削減するよう構成してもよい。前記出力マスク(MSK)944−1〜944−8は出力ポート860からの出力をロードストアセル804からの入力に限定する。入力ポートからの入力に対してはその接続先を制限していないので実害はない。半導体チップ上の実装面積を削減するためである。
図13の例では、クロスバスイッチの接続経路はその構成情報により準静的に決定されるため、経路を変更する場合には構成情報を変更しなければならないことに注意されたい。
図14に、スイッチマトリクスの第2の実施例(ダイナミック構成)を示す。スイッチマトリクス(SWMTRX)930は、特に制限されないが、入力データをスイッチマトリクス内部に展開するスイッチマトリクス内部バス950、入力データを一時保持し、図11に示す要求フォーマットのアドレスフィールドからアクセス先メモリバンクを判定(プリデコード)し、必要に応じて応答フォーマットの応答先情報を該入力データに埋め込むマトリクス入力バッファ/アドレスプリデコーダ(IBAD)951−1〜951−10、952−1〜952−8、953−1〜953−8、954−1〜954−8、マトリクス出力バッファ制御バス961の内容に応じ出力データを選択し一時保持するマトリクス出力バッファ(MOB)955−1〜955−10、956−1〜956−8、957−1〜957−8、958−1〜958−8、プリデコード結果を出力するプリデコード結果バス959、前記プリデコード結果バス959の内容をもとに前記マトリクス出力バッファ制御バスに所定の制御信号を出力する内部バスアービタ(ARBT)960から構成される。なお、特に制限されないが、前記マトリクス出力バッファへの入力はそれぞれ独立に、全ての入力から1つの選択をするよう構成してもよいし、一部の入力から1つの選択をする、もしくは所定の1入力のみ選択可能なよう制限することにより、半導体チップ上の実装面積を削減するよう構成してもよい。また、特に制限されないが、複数の入力により前記マトリクス入力バッファおよび前記スイッチマトリクス内部バスを共有することにより、さらに半導体チップ上の実装面積を削減するよう構成してもよい。本実施例では、クロスバスイッチの接続経路はアクセスアドレスにより動的に決定されるため、クロスバスイッチの構成情報が不要である。
図15にスタティック構成をもつクロスバスイッチ810を備えたフレキシブルプロセッサブロック(FPB)450における、各メモリバンク(MBNK)821のアドレス空間を示す。図16にダイナミック構成をもつクロスバスイッチ810を備えたフレキシブルプロセッサブロック(FPB)450における、各メモリバンク(MBNK)821のアドレス空間を示す。図11に示す要求フォーマットのアドレスフィールドのアドレス(LODADRS、STRADRS、LODADRS0、LODADRS1)としてアクセス先メモリバンクのアドレスを指定することにより、該メモリバンクへのアクセスが可能となる。スタティック構成の場合、アクセス先メモリバンクはクロスバスイッチ810の構成情報(コンフィグレーション情報)により決定されるため、すべてのメモリバンクのアドレス空間は図15に代表的に示されるように1つに縮退する。S−FPBは同一フレキシブルプロセッサブロック内のバンクメモリ821−1〜821−10を意味する。F−FPBは図3に例示されるような下流側のフレキシブルプロセッサブロック内のバンクメモリ821−1〜821−10を意味する。ASPCはフレキシブルプロセッサのアドレス空間である。
一方、ダイナミック構成の場合、図16に例示されるように、各メモリバンクのアドレス空間は互いに異なり、更に、入出力ポートを介して接続された2つの隣接するフレキシブルプロセッサブロック間でのシームレスなメモリアクセスを実現するため、隣接フレキシブルプロセッサブロック内の各メモリバンクのアドレス空間が単一アドレス空間内に定義される。S−FPB、ASPCの意味は図15の場合と同じである。A−FPBは隣接するフレキシブルプロセッサブロック内のバンクメモリ821−1〜821−10を意味する。
本発明におけるデータ処理装置で所定のアプリケーションを実行するにあたり、アプリケーションを構成する複数のタスクを、それぞれの処理内容および演算特性に応じ主コントローラ200、副コントローラ410、およびフレキシブルプロセッサブロック450−1〜450−2のいずれかに割り当て、主メモリ300や共有メモリ440を介して相互に連携処理することにより、高いアプリケーション処理性能を実現することが可能である。
このとき、フレキシブルプロセッサブロックを構成する演算アレイ800内の演算セル801〜804の数は有限であり、実行すべきタスクの規模が単一の演算アレイ800に割り当てられない場合がある。そこで、タスクを単一の演算アレイ800に割り当てられる規模に分割し、フレキシブルプロセッサブロック450の動作内容を定義する構成情報を更新しながら分割されたタスクを逐次実行することにより、小規模のハードウェアでタスク全体を処理することが可能となる。一方、将来より微細な半導体製造プロセスを利用するなどの理由により、フレキシブルプロセッサのハードウェア規模を増大させることが可能になった場合をあらかじめ考慮すると、ハードウェア規模に対してスケーラブルに処理性能が向上するだけでなく、従来のソフトウェアを再利用することによりデータ処理システムの開発期間を短縮可能であるという特徴をもつよう、フレキシブルプロセッサブロック450を構成することが望まれる。
本願発明者は、フレキシブルプロセッサブロック450が備える入出力ポート850,860の応用方法を検討し、入出力ポート850,860を介して複数フレキシブルプロセッサブロック450を連結することにより、以下に例示して説明する新たな価値を見出した。
例えばフレキシブルプロセッサ400で実行すべきタスクとしてタスク1(TSK1)、タスク2(TSK2)があり、タスク1はそれぞれサブタスクA(SUBTSKA)からサブタスクB(SUBTSKB)を連続処理することにより実行され、タスク2はそれぞれサブタスクA(SUBTSKA)からサブタスクC(SUBTSKC)を連続処理することにより実行されるものとする。ただし、サブタスクA、サブタスクB、サブタスクCはそれぞれ(現在の)フレキシブルプロセッサブロック450に割り当て可能な規模のタスクであるとする。
図17には1つのフレキシブルプロセッサブロックを用いたタスク1(TSK1)の処理フロー、図18には1つのフレキシブルプロセッサブロックを用いたタスク2(TSK2)の処理フローを示す。例えば図2の一つのフレキシブルプロセッサブロック450−1を用いてタスク1、タスク2を実行する場合を示す。タスク1はサブタスクA(SUBTSKA)からサブタスクB(SUBTSKB)を直列に処理することにより実行され、タスク2はサブタスクA(SUBTSKA)からサブタスクC(SUBTSKC)を直列に処理することにより実行されるものとする。例えば図17においてサブタスクA(SUBTSKA)の実行結果が全てローカルメモリ820に退避された後、その退避された実行結果を用いてサブタスクB(SUBTSKB)の処理が行われる。図18の場合も同様である。
図19には図3の態様で連結した2つのフレキシブルプロセッサブロック450−1、450−2を用いたタスク1(TSK1)の処理フローを示す。図20には図3の態様で連結した2つのフレキシブルプロセッサブロック450−1、450−2を用いたタスク2(TSK2)の処理フローを示す。タスク1は、フレキシブルプロセッサブロック450−1によるサブタスクA(SUBTSKA)の実行と、サブタスクAの実行で逐次得られる演算結果を順次受け取ってサブタスクAの処理に並行するサブタスクB(SUBTSKB)の実行とによって実現される。図17のように、サブタスクA(SUBTSKA)の実行結果が全てローカルメモリ820に退避されるのを待ってサブタスクBの処理に遷移することを要しない。複数のフレキシブルプロセッサブロック間においても所謂パイプライン的な処理が可能にされる。図20の場合も同様である。
図21には演算アレイ800内のセル801〜804の数を2倍にした1つのフレキシブルプロセッサブロックを用いたタスク1(TSK1)の処理フローを示す。図22には演算アレイ800内のセル801〜804の数を2倍にした1つのフレキシブルプロセッサブロックを用いたタスク2(TSK2)の処理フローを示す。図23には2個のフレキシブルプロセッサブロックを連結し、入出力ポートを経由してタスクの実行結果をブロック間で転送することによりサブタスクをパイプライン処理可能であることを示す。
図19及び図20による処理性能と、図21及び図22による処理性能とはほぼ同等であり、各サブタスクの実行時間が適切に調整されている場合、いずれもハードウェア規模に対してスケーラブルに処理性能が向上する。しかしながら、図19及び図20においては、各サブタスク向けに最適化されたフレキシブルプロセッサブロックの構成情報を再利用できるのに対し、図21及び図22では演算アレイ800内のデータ転送に関する制約により、サブタスクAおよびサブタスクBを連結したタスク1(SUBTSKA&B)、サブタスクAおよびサブタスクCを連結したタスク2(SUBTSKA&C)の全体について構成情報を再調整しなければならず、ソフトウェアを再利用できない点が相違している。以上のことから、図3、図23に例示されるようにフレキシブルプロセッサブロックを直列的に接続して用いることにより、ハードウェア規模に対してスケーラブルに処理性能が向上し、同時にフレキシブルプロセッサブロック単位でのソフトウェア再利用性を実現できることが明らかとなる。
以上より、実用的なフレキシブルプロセッサを実現することができる。すなわち、ロードストアインタフェース801,804、メモリバンク821、入出力ポート850,860を互いにクロスバスイッチ810で接続することにより、それらの間で柔軟性の高いデータ転送が可能になる。これにより、データ転送にともなうオーバヘッドを削減でき、各演算セルの利用効率、およびフレキシブルプロセッサブロックのデータ処理性能を向上させることができる。また、入出力ポートを介して複数のフレキシブルプロセッサブロックを連結し、ブロック間でタスクを連携処理させることにより、ブロック単位でのソフトウェア再利用性を維持しながら、ハードウェア規模に対してスケーラブルに処理性能が向上するフレキシブルプロセッサを実現することができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、フレキシブルプロセッサブロックを直列的に接続する場合の接続段数は2段に限定されず、それいじょうであってもよい。更に、複数個のフレキシブルプロセッサブロックをリング状に接続してもよい。また、フレキシブルプロセッサはそれ単独で一つの半導体集積回路として実現することが可能であることは言うまでもない。また、アドレス、データ及び制御信号はマルチプレクスしてバスの乗せるようにしてもよい。