(57)【要約】  拡張性を損なうこと無く、サブプロセッサを並列制御するため、マルチプロセッサシステム１を構成する実行制御回路３０は、メインプロセッサ１０により指定された処理シーケンスＳＥＱに基づき各サブプロセッサ２０＿１〜２０＿３に対する処理コマンドＣＭＤを発行すると共に、各サブプロセッサ２０＿１〜２０＿３による処理コマンドＣＭＤに応じた処理の実行結果を示す処理ステータスＳＴＳを取得する。調停回路４０は、実行制御回路３０と各サブプロセッサ２０＿１〜２０＿３との間で、処理コマンドＣＭＤ及び処理ステータスＳＴＳの転送を調停する。
2010016169.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのメインプロセッサと、
複数のサブプロセッサと、
前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得する実行制御手段と、
前記実行制御手段と各サブプロセッサの間で、前記処理コマンド及び実行結果の転送を調停する調停手段と、
を備えたマルチプロセッサシステム。
【請求項２】
請求項１において、
前記調停手段が、
前記処理コマンドを前記実行制御手段から各サブプロセッサへ転送するためのコントロールバスを、制御するコントロールバス制御手段と、
前記実行結果を各サブプロセッサから前記実行制御手段へ転送するためのステータスバスに対するアクセスを、調停するステータスバス調停手段と、
を含むことを特徴としたマルチプロセッサシステム。
【請求項３】
請求項１において、
前記実行制御手段を複数備え、
前記調停手段が、前記処理コマンドを前記実行制御手段から各サブプロセッサへ転送するためのコントロールバスに対するアクセスを調停するコントロールバス調停手段と、前記実行結果を各サブプロセッサから前記実行制御手段へ転送するためのステータスバスに対するアクセスを調停するステータスバス調停手段とを含むことを特徴としたマルチプロセッサシステム。
【請求項４】
請求項２又は３において、
各サブプロセッサが、
前記コントロールバスから前記処理コマンドを受信するコマンド受信制御手段と、
前記ステータスバスに対して前記実行結果を送信するステータス通知制御手段と、
を含むことを特徴としたマルチプロセッサシステム。
【請求項５】
請求項１〜４のいずれか一項において、
前記処理コマンドが、前記処理を指定するための処理ＩＤを含み、
前記実行結果が、前記処理ＩＤと前記処理のステータスとを含むことを特徴としたマルチプロセッサシステム。
【請求項６】
請求項１〜５のいずれか一項において、
前記実行制御手段が、前記実行結果をＦＩＦＯ（Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ）バッファに格納することを特徴としたマルチプロセッサシステム。
【請求項７】
請求項６において、
前記調停手段が、前記実行結果にその転送元を示すサブプロセッサＩＤを付加して前記実行制御手段へ転送し、
前記実行制御手段が、前記ＦＩＦＯバッファに、前記サブプロセッサＩＤと前記実行結果とを対応付けて格納することを特徴としたマルチプロセッサシステム。
【請求項８】
請求項１〜５のいずれか一項において、
前記実行制御手段が、
前記メインプロセッサからのコマンドを格納するコマンドＦＩＦＯ領域と、前記実行結果を格納するステータスＦＩＦＯ領域と、前記メインプロセッサへの割り込み通知内容を格納する割込ＦＩＦＯ領域とが同一アドレス空間上に形成されたメモリと、
各ＦＩＦＯ領域のベースアドレス及び格納可能なデータの段数に基づき、各ＦＩＦＯ領域中の所望のデータにアクセスするための前記メモリ上のアドレスを発生するアドレス発生手段と、
を含むことを特徴としたマルチプロセッサシステム。
【請求項９】
請求項８において、
前記調停手段が、前記実行結果にその転送元を示すサブプロセッサＩＤを付加して前記実行制御手段へ転送し、
前記実行制御手段が、前記ステータスＦＩＦＯ領域に、前記サブプロセッサＩＤと前記実行結果とを対応付けて格納することを特徴としたマルチプロセッサシステム。
【請求項１０】
請求項８又は９において、
前記アドレス発生手段が、前記メインプロセッサからのコマンド、前記実行結果、及び前記割り込み通知内容各々のデータビット幅に応じて前記メモリ上のアドレスを発生し、
前記実行制御手段が、各データビット幅と前記メモリのデータビット幅との相違に基づき、前記メモリに接続される並列データバスの内から、前記メインプロセッサからのコマンド、前記実行結果、及び前記割り込み通知内容各々のアクセスに用いるデータバスを決定するデータバス決定手段をさらに含むことを特徴としたマルチプロセッサシステム。
【請求項１１】
請求項８〜１０のいずれか一項において、
各ＦＩＦＯ領域が、前記実行制御手段内に設けた制御用プロセッサにより使用されるデータメモリ中に形成されることを特徴としたマルチプロセッサシステム。
【請求項１２】
請求項８〜１１のいずれか一項において、
各ＦＩＦＯ領域に、前記メインプロセッサ又は前記実行制御手段内に設けた制御用プロセッサに複数のデータを連続してアクセスさせるためのアクセスアドレスを割り当てたことを特徴とするマルチプロセッサシステム。
【請求項１３】
請求項１〜１２のいずれか一項において、
マルチバンク化された共有メモリをさらに備え、
各サブプロセッサが、前記共有メモリを介して前記処理に必要な入力データの取得及び前記処理により得たデータの出力を行うことを特徴としたマルチプロセッサシステム。
【請求項１４】
請求項１〜１３のいずれか一項において、
前記調停手段を通過する前記処理コマンド及び実行結果を外部にモニタ出力するモニタ手段をさらに備えたことを特徴とするマルチプロセッサシステム。
【請求項１５】
少なくとも１つのメインプロセッサと、複数のサブプロセッサとを備えたマルチプロセッサシステムの制御方法であって、
前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得し、
前記処理コマンドの各サブプロセッサへの転送、及び前記実行結果の前記メインプロセッサへの転送を調停するマルチプロセッサシステムの制御方法。
【請求項１６】
請求項１５において、
前記メインプロセッサにより複数の処理シーケンスが指定される場合、
前記処理コマンドの発行及び前記実行結果の取得を、処理シーケンス毎に並列に行うことを特徴としたマルチプロセッサシステムの制御方法。
【請求項１７】
請求項１５又は１６において、
前記処理コマンドに、前記処理を指定するための処理ＩＤを含め、
前記実行結果に、前記処理ＩＤと前記処理のステータスとを含めることを特徴としたマルチプロセッサシステムの制御方法。
【請求項１８】
請求項１５〜１７のいずれか一項において、
前記取得した実行結果を順次記憶することを特徴としたマルチプロセッサシステムの制御方法。
【請求項１９】
請求項１８において、
前記実行結果にその転送元を示すサブプロセッサＩＤを付加し、
前記サブプロセッサＩＤと前記実行結果とを対応付けて記憶することを特徴としたマルチプロセッサシステムの制御方法。
【請求項２０】
請求項１５〜１９のいずれか一項において、
前記調停した処理コマンド及び実行結果を、外部にモニタ出力することを特徴とするマルチプロセッサシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム及びその制御方法に関し、特に複数のサブプロセッサを並列制御するマルチプロセッサシステム及びその制御方法に関する。
【背景技術】
【０００２】
マルチプロセッサシステムは、一般に、各サブプロセッサの機能が均質(ホモジニアス)且つ対称に割り当てられたＳＭＰ(Ｓｙｍｍｅｔｒｉｃ Ｍｕｌｔｉ−Ｐｒｏｃｅｓｓｏｒ)型のものと、各サブプロセッサの機能が不均質(ヘテロジニアス)且つ非対称に割り当てられたＡＭＰ(Ａｓｙｍｍｅｔｒｉｃ Ｍｕｌｔｉ−Ｐｒｏｃｅｓｓｏｒ)型のものとに分類される。【０００３】
ここで、ＡＭＰ型のマルチプロセッサシステムにおいては、従来、メインプロセッサが他の複数のサブプロセッサを直接制御する方式が一般的であった。これは、システム全体を管理して主要な処理を行うメインプロセッサが、機能分散された各サブプロセッサの起動制御も実行するものである。各サブプロセッサに対する制御は、メインプロセッサがアクセス権を持つシステムバスを用いて行われる。各サブプロセッサからの処理完了通知は、各サブプロセッサから割込信号をメインプロセッサに対して入力し、メインプロセッサがシステムバスを用いて各サブプロセッサの状態を確認することにより行われる。これにより、システム全体の状態管理や各サブプロセッサの状態管理を一箇所に集約できるため、マルチプロセッサシステム全体の制御シーケンスの検討及び実装が容易となるという利点や、デバッグ時の可観測性も高いという利点があった。【０００４】
しかしながら、上記の方式には、近年のシステムＬＳＩ(Ｌａｒｇｅ Ｓｃａｌｅ Ｉｎｔｅｇｒａｔｉｏｎ)の大規模化や複雑化に伴い、システムＬＳＩ全体の処理が破綻してしまうという問題があった。その主な要因は、システムＬＳＩ内に搭載されるサブプロセッサ数の増加により、従来のメインプロセッサが全体の制御を行うアーキテクチャでは、処理負荷がメインプロセッサに集中して輻輳してしまうためである。【０００５】
この問題に対処するための関連技術１〜３が既に提案されている。以下、これらの関連技術１〜３を順に説明する。【０００６】
[関連技術１]
特許文献１には、メインプロセッサに代わってサブプロセッサを並列制御する実行制御装置を備えたマルチプロセッサシステムが記載されている。ここで、実行制御装置は、大略、２つ以上のサブプロセッサをパイプライン的に並列動作させることで、メインプロセッサからの負荷分散と各サブプロセッサの稼働率向上を図るものである。【０００７】
具体的には、このマルチプロセッサシステムは、図２２に示す如く、メインプロセッサとして機能するマスタプロセッサ１１１０と、サブプロセッサとして機能するスレーブプロセッサ１１２０及びＤＭＡ(Ｄｉｒｅｃｔ Ｍｅｍｏｒｒｙ Ａｃｃｅｓｓ)コントローラ１１３０と、スレーブプロセッサ１１２０の作業領域として用いられるローカルメモリ１１２１と、メインメモリ１１４０と、コマンド実行制御装置１１５０とで構成されている。この例では、ＤＭＡコントローラ１１３０は、ローカルメモリ１１２１とメインメモリ１１４０の間のデータ転送を制御する。なお、ローカルメモリ１１２１には、４つのバンク＃０〜＃３が割り当てられている。【０００８】
また、コマンド実行制御装置１１５０は、マスタプロセッサ１１１０により使用される複数のコマンドが予め格納された通信メモリ１１５１と、マスタプロセッサ１１１０からのコマンド列を受け付けるコマンドキュー１１５２と、このコマンドキュー１１５２にて受け付けたコマンド列内の各コマンドをスレーブプロセッサ１１２０及びＤＭＡコントローラ１１３０に並列実行させる実行制御部１１６０と、スレーブプロセッサ１１２０及びＤＭＡコントローラ１１３０からコマンドの実行完了を示す完了通知信号を受信する完了受付部１１５３と、この完了通知信号をマスタプロセッサ１１１０からの要求に応じて伝達する完了通知部１１７０と、を備えている。【０００９】
また、実行制御部１１６０は、次コマンドＩＤ保持部１１６１及び１１６２、並びにバンクテーブル１１６３を有する。ここで、次コマンドＩＤ保持部１１６１及び１１６２は、実行制御部１１６０がスレーブプロセッサ１１２０及びＤＭＡコントローラ１１３０に次に実行させるべきコマンドのＩＤを格納するためのメモリ領域である。また、バンクテーブル１１６３は、コマンドにてローカルメモリ１１２１へのアクセスを指示する際に用いる仮想バンク番号と、ローカルメモリ１１２１内のバンクを実際に特定する物理バンク番号とを対応付けて管理する。【００１０】
また、完了通知部１１７０内には、各コマンドの実行が完了したか否かを管理するための完了テーブル１１７１が設けられている。【００１１】
[関連技術２]
また、図示されないが、他のサブプロセッサの状態を確認するためにステータスレジスタを実装する技術が一般に知られている。具体的には、或るサブプロセッサが自身の状態変化を通知したい場合にステータスレジスタに状態変化を書き込むと、通知先の他のサブプロセッサに対する割込信号が発生する。当該割込信号を受けたサブプロセッサは、ステータスレジスタから状態変化を取得する。【００１２】
[関連技術３]
また、特許文献２には、２つのプロセッサ同士間の通信をＦＩＦＯ(Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ)バッファを用いて行うマルチプロセッサシステムが記載されている。具体的には、このマルチプロセッサシステムは、図２３に示す如く、プロセッサ２１０１及び２１０２同士間の通信に用いるＦＩＦＯバッファ２１０３と、このＦＩＦＯバッファに対するアクセスを制御するアクセス制御回路２１０４とを有する。また、アクセス制御回路２１０４内にはＦＩＦＯバッファ２１０３のデータ段数を設定するための容量設定レジスタ２１０５が設けられており、このレジスタ２１０５の設定値に応じてプロセッサ２１０１及び２１０２の各々に対するＦＩＦＯバッファ２１０３の容量配分が行われる。また、プロセッサ２１０１及び２１０２からのＦＩＦＯバッファ２１０３に対するアクセスは、書込ポインタ２１０６及び２１０８、並びに読出ポインタ２１０７及び２１０９をそれぞれ用いて制御される。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００３−２０８４１２号公報
【特許文献２】特開２００３−０３６２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、上記の関連技術１〜３には、マルチプロセッサシステムの拡張性が低いという課題があった。その理由は、回路構成がサブプロセッサ数に依存してしまうためである。【００１５】
具体的には、まず上記の関連技術１の実行制御装置では、各サブプロセッサから並行して完了通知信号が入力される等の理由により、内部の回路構成が接続されるサブプロセッサ数に依存する。上述した通り、近年のシステムＬＳＩでは複数のサブプロセッサが１チップに集積されることが一般的であり、短い期間でのシステムの拡張(すなわち、サブプロセッサ数の増設)を求められるが、システム拡張の度毎に実行制御装置の回路構成を変更する必要が生じてしまう。【００１６】
また、上記の関連技術２では、必要となるステータスレジスタ数がサブプロセッサ数やステータス数(状態変化の種別数)等に依存して変わるため、やはりシステム拡張の度毎に回路構成を変更する必要がある。これに対処するために予め多くのステータスレジスタを実装しておく対策が考えられるが、この場合、開発コストが増大してしまう。【００１７】
また、上記の関連技術３では、プロセッサ数に依存してＦＩＦＯの個数やプロセッサ間の通信経路を増やす必要があり、やはりシステム拡張の度毎に回路構成の変更が生じてしまう。【００１８】
従って、本発明は、拡張性を損なうこと無く、サブプロセッサを並列制御することが可能なマルチプロセッサシステム及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記の目的を達成するため、本発明の一態様に係るマルチプロセッサシステムは、少なくとも１つのメインプロセッサと、複数のサブプロセッサと、前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得する実行制御回路と、前記実行制御回路と各サブプロセッサの間で、前記処理コマンド及び実行結果の転送を調停する調停回路とを備える。【００２０】
また、本発明の一態様に係るマルチプロセッサシステムの制御方法は、少なくとも１つのメインプロセッサと、複数のサブプロセッサとを備えたマルチプロセッサシステムの制御方法を提供する。この制御方法は、前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得し、前記処理コマンドの各サブプロセッサへの転送、及び前記実行結果の前記メインプロセッサへの転送を調停する。
【発明の効果】
【００２１】
本発明では、調停回路(又はこれに相当する処理)にてサブプロセッサ数に依存するインタフェース部分を吸収するため、サブプロセッサ数が増減しても実行制御回路の構成(又はこれに相当する処理)には変更が生じない。従って、マルチプロセッサシステムの拡張性を、上記の関連技術１〜３と比較して大幅に向上させることが可能となる。また、サブプロセッサを並列制御するため、メインプロセッサの処理負荷の低減、及びサブプロセッサの稼働率の向上を図ることができる。
【図面の簡単な説明】
【００２２】
【図１】本発明に係るマルチプロセッサシステムの各実施の形態に共通の構成例を示したブロック図である。
【図２】本発明に係るマルチプロセッサシステムの各実施の形態で共通に用いる処理シーケンスの構成例を示した図である。
【図３】本発明に係るマルチプロセッサシステムの各実施の形態に共通の動作例を示したシーケンス図である。
【図４】本発明に係るマルチプロセッサシステムの実施の形態１の構成例を示したブロック図である。
【図５】本発明に係るマルチプロセッサシステムの実施の形態１における処理シーケンスの設定動作例を示したブロック図である。
【図６】本発明に係るマルチプロセッサシステムの実施の形態１における処理コマンドの発行動作例を示したブロック図である。
【図７】本発明に係るマルチプロセッサシステムの実施の形態１における処理ステータスの通知動作例を示したブロック図である。
【図８】本発明に係るマルチプロセッサシステムの実施の形態１に用いる処理ステータスのフォーマット例を示した図である。
【図９】本発明に係るマルチプロセッサシステムの実施の形態１における処理完了の通知動作例を示したブロック図である。
【図１０】本発明に係るマルチプロセッサシステムの適用例１を示したブロック図である。
【図１１】本発明に係るマルチプロセッサシステムの適用例２を示したブロック図である。
【図１２】本発明に係るマルチプロセッサシステムの実施の形態２の構成例を示したブロック図である。
【図１３】本発明に係るマルチプロセッサシステムの実施の形態２に用いる制御レジスタ、ＦＩＦＯ管理部、及びＦＩＦＯメモリ制御部の構成例を示したブロック図である。
【図１４】本発明に係るマルチプロセッサシステムの実施の形態２に用いるＦＩＦＯメモリ制御部によるアドレス変換処理例及びデータバスアクセスの調停処理例を示した図である。
【図１５Ａ】本発明に係るマルチプロセッサシステムの実施の形態２に用いるＦＩＦＯメモリ制御部によるデータ変換処理の一例を示した図である。
【図１５Ｂ】本発明に係るマルチプロセッサシステムの実施の形態２に用いるＦＩＦＯメモリ制御部によるデータ変換処理の他の例を示した図である。
【図１６】本発明に係るマルチプロセッサシステムの実施の形態２に用いる実行制御回路のアドレスマップ例を示した図である。
【図１７】本発明に係るマルチプロセッサシステムの実施の形態３の構成例を示したブロック図である。
【図１８】本発明に係るマルチプロセッサシステムの実施の形態３に用いるデータメモリ制御部によるアドレス変換処理例及びデータバスアクセスの調停処理例を示した図である。
【図１９】本発明に係るマルチプロセッサシステムの実施の形態３に用いる実行制御回路のアドレスマップ例を示した図である。
【図２０】本発明に係るマルチプロセッサシステムの実施の形態４の構成例を示したブロック図である。
【図２１】本発明に係るマルチプロセッサシステムの実施の形態５の構成例を示したブロック図である。
【図２２】本発明の関連技術１に係るマルチプロセッサシステムの構成例を示したブロック図である。
【図２３】本発明の関連技術３に係るマルチプロセッサシステムの構成例を示したブロック図である。
【発明を実施するための形態】
【００２３】
以下、本発明に係るマルチプロセッサシステムの実施の形態１〜５を、図１〜図１４、図１５Ａ及び図１５Ｂ、並びに図１６〜図２１を参照して説明する。なお、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００２４】
まず、実施の形態１〜５に係るマルチプロセッサシステムに共通の構成例及び動作例を、図１〜図３を参照して概略的に説明する。
【００２５】
図１に示すマルチプロセッサシステム１は、メインプロセッサ(以下、ＭＰと略称することがある)１０と、ｎ個(ｎは２以上の整数)のサブプロセッサ(機能ブロック)２０＿１〜２０＿ｎと、メインプロセッサ１０により指定された処理シーケンスＳＥＱに基づき各サブプロセッサ２０＿１〜２０＿ｎに対する処理コマンドＣＭＤを発行すると共に、各サブプロセッサ２０＿１〜２０＿ｎによる処理コマンドＣＭＤに応じた処理の実行結果を示す処理ステータスＳＴＳを取得する実行制御回路３０と、この実行制御回路３０と各サブプロセッサ２０＿１〜２０＿ｎの間で、処理コマンドＣＭＤ及び処理ステータスＳＴＳの転送を調停する調停回路４０とで構成されている。また、実行制御回路２０は、処理シーケンスＳＥＱに基づく処理が全て完了した場合、処理完了通知ＮＴＦをメインプロセッサ１０へ通知する。
【００２６】
なお、サブプロセッサ２０＿１〜２０＿ｎには、同一の機能を割り当てても良いし、互いに異なる機能を割り当てても良い。すなわち、マルチプロセッサシステム１は、ＳＭＰ型及びＡＭＰ型のいずれのマルチプロセッサシステムとしても動作できる。
【００２７】
ここで、上記の処理シーケンスＳＥＱは、各サブプロセッサに実行させる処理を定義した構造体と、当該処理によって得られるデータを定義した構造体とを相互にリンクさせた構造体群である。図２に、処理シーケンスＳＥＱの具体例を示す。図示の例では、処理シーケンスＳＥＱは、下記(１)〜(４)を示している。
(１)処理ＰＡによる出力データとしてデータＤ０及びＤ１が得られる。
(２)処理ＰＢは、データＤ０を入力データとし、データＤ２を出力データとする。
(３)処理ＰＣは、データＤ１を入力データとし、データＤ３を出力データとする。
(４)処理ＰＤは、処理ＰＡ及びＰＢにより得られたデータＤ２及びＤ３を入力データとする。
【００２８】
この場合、実行制御回路３０は、処理ＰＡを実行させたサブプロセッサからデータＤ０の出力完了を示す処理ステータスＳＴＳを受信すると、処理ＰＢの起動を要求する処理コマンドＣＭＤを発行する。データＤ１の出力完了を示す処理ステータスＳＴＳを受信すると、実行制御回路３０は、処理ＰＣの起動を要求する処理コマンドＣＭＤを発行する。また、実行制御回路３０は、処理ＰＢ及びＰＣを実行させた２つのサブプロセッサからデータＤ２及びＤ３の出力完了を示す処理ステータスＳＴＳを共に受信すると、処理ＰＤの起動を要求する処理コマンドＣＭＤを発行する。なお、図示を省略するが、処理ＰＡ〜ＰＤの起動をそれぞれ要求するための処理コマンドＣＭＤは、処理シーケンスＳＥＱ内の構造体中に定義される。
【００２９】
次に、マルチプロセッサシステム１の全体動作を、図３を参照して説明する。
【００３０】
図３に示すように、まずメインプロセッサ１０は、サブプロセッサを動作させるためのパラメータ(入力データを含む)が存在する場合、当該パラメータを、例えば各サブプロセッサからアクセス可能な共有メモリ５０に格納する(ステップＳ１)。そして、メインプロセッサ１０は、実行制御回路３０に対して処理シーケンスＳＥＱを与える(ステップＳ２)。
【００３１】
図２に示した処理シーケンスＳＥＱを例に取ると、実行制御回路３０は、例えばサブプロセッサ２０＿１に対して処理ＰＡの起動を要求する処理コマンドＣＭＤ１を発行し、調停回路４０に与える。調停回路４０は、処理コマンドＣＭＤ１をサブプロセッサ２０＿１へ転送する(ステップＳ３)。
【００３２】
サブプロセッサ２０＿１は、処理コマンドＣＭＤ１に従って、共有メモリ５０から処理ＰＡに必要なパラメータを読み出して処理ＰＡを実行する(ステップＳ４及びＳ５)。そして、サブプロセッサ２０＿１は、処理ＰＡにより得たデータＤ０を共有メモリ５０に書き込む(ステップＳ６)。
【００３３】
この後、サブプロセッサ２０＿１は、処理ＰＡの完了を示す処理ステータスＳＴＳ１を調停回路４０に通知する。調停回路４０は、処理ステータスＳＴＳ１を実行制御回路３０へ転送する(ステップＳ７)。
【００３４】
実行制御回路３０は、処理ＰＡの完了を認識すると、処理シーケンスＳＥＱに従い、例えばサブプロセッサ２０＿２に対して、処理ＰＢの起動を要求する処理コマンドＣＭＤ２を調停回路４０を介して与える(ステップＳ８)。
【００３５】
サブプロセッサ２０＿２は、処理コマンドＣＭＤ２に従って、共有メモリ５０から処理ＰＢに必要なデータＤ０を読み出して処理ＰＢを実行する(ステップＳ９及びＳ１０)。そして、サブプロセッサ２０＿２は、処理ＰＢにより得たデータＤ２を共有メモリ５０に書き込む(ステップＳ１１)と共に、調停回路４０を介して処理ＰＢの完了を示す処理ステータスＳＴＳ２を実行制御回路３０へ転送する(ステップＳ１２)。
【００３６】
また、図示されないが、上記のステップＳ８と並行して、実行制御回路３０は、処理シーケンスＳＥＱに従い、サブプロセッサ２０＿１或いはサブプロセッサ２０＿３〜２０＿ｎのいずれかに対して、処理ＰＣの起動を要求する処理コマンドを与える。この処理コマンドを受けたサブプロセッサは、上記のステップＳ９〜Ｓ１２と並行して処理ＰＣを実行し、これにより得たデータＤ１の共有メモリ５０への書込、及び処理ＰＣの完了を示す処理ステータスの実行制御回路３０への転送を行う。そして、実行制御回路３０は、サブプロセッサ２０＿１〜２０＿ｎのいずれかに対して、処理ＰＤの起動を要求する処理コマンドを与える。この処理コマンドを受けたサブプロセッサは、処理ＰＤを実行し、これにより得たデータの共有メモリ５０への書込、及び処理ＰＤの完了を示す処理ステータスの実行制御回路３０への転送を行う。
【００３７】
そして、実行制御回路３０は、処理ＰＡ〜ＰＤが全て完了したことを認識すると、処理完了通知ＮＴＦをメインプロセッサ１０へ通知する(ステップＳ１３)。処理完了通知ＮＴＦを受けたメインプロセッサ１０は、共有メモリ５０から処理ＰＤの出力データを読み出す(ステップＳ１４)。
【００３８】
このように、マルチプロセッサシステム１は、サブプロセッサをその数に依存せず並列制御することができる。また、一連の処理シーケンスが完了するまでメインプロセッサ１０によるサブプロセッサ２０＿１〜２０＿ｎに対する実行制御が不要であり、以てメインプロセッサ１０の処理負荷を低減することができる。なお、上記の共有メモリ５０は必須では無く、例えば、処理コマンドＣＭＤ中に各処理に必要なパラメータを含ませ、処理ステータスＳＴＳ又は処理完了通知ＮＴＦ中に各処理による出力データを含ませることにより、メインプロセッサ１０とサブプロセッサ２０＿１〜２０＿ｎとの間でデータを授受するようにしても良い。
【００３９】
以下、実施の形態１〜５を、図４〜図１４、図１５Ａ及び図１５Ｂ、並びに図１６〜図２１を参照して詳細に説明する。
【００４０】
[実施の形態１]
[構成例]
図４に示す本実施の形態に係るマルチプロセッサシステム１ａは、メインプロセッサ１０と、ｎ個のサブプロセッサ２０＿１〜２０＿ｎと、メインプロセッサ１０にシステムバスＢ１を介して接続された実行制御回路３０ａと、この実行制御回路３０ａにコントロールバスＢ２及びステータスバスＢ３を介して接続され、これらのバスＢ２及びＢ３にサブプロセッサ２０＿１〜２０＿ｎを並列接続する調停回路４０と、周辺ブロック(ペリフェラル)として、システムバスＢ１及び実行制御回路３０ａに接続された割込コントローラ６０とで構成されている。ここで、コントロールバスＢ２は、上述した処理コマンドＣＭＤを転送するためのバスであり、ステータスバスＢ３は、処理ステータスＳＴＳを転送するためのバスである。
【００４１】
また、実行制御回路３０ａは、メインプロセッサ１０とのインタフェース(以下、ＭＰインタフェース)ＩＦ１と、コントロールバスＢ２とのインタフェース(以下、Ｂ２インタフェース)ＩＦ２と、ステータスバスＢ３とのインタフェース(以下、Ｂ３インタフェース)ＩＦ３と、割込コントローラ６０とのインタタフェース(以下、割込インタフェース)ＩＦ４とを有する。
【００４２】
さらに、実行制御回路３０ａは、制御プロセッサ(以下、ＣＰと略称することがある)３１と、ＩＦ１を介してメインプロセッサ１０から入力された処理シーケンスＳＥＱを格納するデータメモリＭＥＭ１と、処理シーケンスＳＥＱの構造体解析を行うための命令コードが予め格納された命令メモリＭＥＭ２と、ＩＦ１を介してメインプロセッサ１０から入力されたコマンド(例えば、処理シーケンスＳＥＱの開始を指示するコマンド(以下、シーケンス開始コマンド))を格納するコマンドＦＩＦＯ３２と、ＩＦ３を介して入力された処理ステータスＳＴＳを格納するステータスＦＩＦＯ３３と、メインプロセッサ１０への割込要因の通知に用いる割込ＦＩＦＯ３４とを備える。ここで、割込ＦＩＦＯ３４を用いるため、一般的な割込要因レジスタを実装する(すなわち、レジスタ数が割込要因数に依存する)マルチプロセッサシステムと比較して拡張性が高い。また、ステータスＦＩＦＯ３３を用いるため、上記の関連技術２に示したようなステータスレジスタを実装するマルチプロセッサシステムと比較して拡張性が高い。また、冗長なハードウェアリソースの実装が不要であるため、開発コストの増大を回避することができる。
【００４３】
また、データメモリＭＥＭ１、命令メモリＭＥＭ２、コマンドＦＩＦＯ３２、及び割込ＦＩＦＯ３４は、ＭＰバスＢ４を介してＩＦ１に接続されている。また、コントロールバスＢ２、データメモリＭＥＭ１、コマンドＦＩＦＯ３２、ステータスＦＩＦＯ３３、及び割込ＦＩＦＯ３４は、ＣＰバスＢ５を介して相互接続されている。さらに、バススイッチＳＷにより、ＣＰバスＢ５のアクセス権をメインプロセッサ１０と制御プロセッサ３１とで選択できるようにしている。通常運用時は、図示の如く、制御プロセッサ３１がＣＰバスＢ５のアクセス権を取得する。一方、テスト時等は、メインプロセッサ１０がＣＰバスＢ５のアクセス権を取得する。
【００４４】
また、調停回路４０は、コントロールバスＢ２への処理コマンドＣＭＤの転送を制御するコントロールバス制御回路４１と、処理ステータスＳＴＳの転送に際し、サブプロセッサ２０＿１〜２０＿ｎからのステータスバスＢ３に対するアクセスを調停するステータスバス調停回路４２とを備える。図示の如く、コントロールバス制御回路４１及びステータスバス調停回路４２は、それぞれ、シングルレイヤバス構成で簡易に実現することができる。
【００４５】
また、各サブプロセッサ２０＿１〜２０＿ｎは、コントロールバスＢ２を介して実行制御回路３０ａからの処理コマンドＣＭＤを受信するコマンド受信制御部２１と、ステータスバスＢ３を介して実行制御回路３０ａに対し処理ステータスＳＴＳを通知するステータス通知制御部２２とを備える。すなわち、コマンド受信制御部２１は、コントロールバスＢ２のスレーブ(受け側)として接続され、取得した処理コマンドＣＭＤをサブプロセッサ内部に伝達する機能を有する。また、ステータス通知制御部２２は、ステータスバスＢ３のマスタ(送り側)として接続され、サブプロセッサ内部で生成された処理ステータスＳＴＳを実行制御回路３０ａに転送する機能を有する。
【００４６】
[動作例]
次に、本実施の形態の動作を、図５〜図９を参照して説明する。ここで、図５〜図７及び図９は、それぞれ、図３に示したステップＳ２(以下、処理シーケンス設定動作)、ステップＳ３(以下、処理コマンド発行動作)、ステップＳ７(以下、処理ステータス通知動作)、及びステップＳ１３(以下、処理完了通知動作)に相当する動作を示している。また、図８は、本実施の形態に用いる処理ステータスＳＴＳのフォーマット例を示している。
【００４７】
[処理シーケンス設定動作例]
図５に示すように、まずメインプロセッサ１０が、実行制御回路３０ａ内のＭＰインタフェースＩＦ１及びＭＰバスＢ４を介して、処理シーケンスＳＥＱをデータメモリＭＥＭ１に格納する(ステップＳ２１)。そして、メインプロセッサ１０は、シーケンス開始コマンドＣＭＤ２２をコマンドＦＩＦＯ３２に書き込む(ステップＳ２２)。この時、コマンドＦＩＦＯ３２により発生された割込信号が制御プロセッサ３１で受信される。割込信号を受けた制御プロセッサ３１は、コマンドＦＩＦＯ３２からシーケンス開始コマンドＣＭＤ２２を取得する(ステップＳ２３)。なお、処理シーケンスＳＥＱは、命令メモリＭＥＭ２内の命令コードと同様、初期起動時等に予めデータメモリＭＥＭ１に格納しておいても良い。
【００４８】
[処理コマンド発行動作例]
上記の処理シーケンス設定動作の後、まず制御プロセッサ３１は、図６に示す如くデータメモリＭＥＭ１から処理シーケンスＳＥＱを読み出す(ステップＳ３１)。
【００４９】
そして、制御プロセッサ３１は、命令メモリＭＥＭ２から読み出した命令コードＩＮＳを実行して、処理シーケンスＳＥＱ中に定義された処理とデータのリンク関係を解析し、以て次に発行すべき処理コマンドを決定する。また、制御プロセッサ３１は、取得済みの処理ステータスＳＴＳから、どの処理が実行されたか及びどのサブプロセッサが稼働中なのかを認識し、処理コマンドの発行先を決定する。具体的には、制御プロセッサ３１は、次に実行すべき処理に必要な入力データが揃っており、出力データの書込先が空いており、且つ当該処理を実行可能なサブプロセッサ(演算リソース)が稼働中でない状態に在る場合に、当該サブプロセッサを処理コマンドの発行先として決定する。
【００５０】
今、次に発行すべき処理コマンドを図３に示した処理コマンドＣＭＤ１と決定し、その発行先をサブプロセッサ２０＿１と決定したとすると、制御プロセッサ３１は、処理コマンドＣＭＤ１を、バススイッチＳＷ、ＣＰバスＢ５、Ｂ２インタフェースＩＦ２、及びコントロールバスＢ２を順に経由して調停回路４０内のコントロールバス制御回路４１に与える。コントロールバス制御回路４１は、実行制御回路３０ａからのコントロールバスアクセスに対してアドレスデコードを行い、その結果として選択したサブプロセッサ２０＿１へ処理コマンドＣＭＤ１を転送する。サブプロセッサ２０＿１内のコマンド受信制御部２１は、処理コマンドＣＭＤ１中に設定された処理ＩＤ(命令番号)等の必要パラメータをサブプロセッサ２０＿１内部に伝達し、以て処理ＩＤに応じた処理を実行する(ステップＳ３２)。
【００５１】
なお、入力データが連続して発生するような処理の場合、制御プロセッサ３１は、一連の処理をサブプロセッサ２０＿１〜２０＿ｎにパイプライン的に並列実行させることもできる。
【００５２】
[処理ステータス通知動作例]
上記の処理コマンド発行動作の後、図７に示すように、サブプロセッサ２０＿１内のステータス通知制御部２２が、図３に示した処理ステータスＳＴＳ１をステータスバスＢ３へ出力する。ステータスバス調停回路４２は、処理ステータスＳＴＳ１を実行制御回路３０ａへ転送する。ここで、他のサブプロセッサからのステータスバスアクセスが競合した場合、ステータスバス調停回路４２は、ラウンドロビン方式等を用いてアクセス調停を行い、その結果として選択したサブプロセッサからの処理ステータスを実行制御回路３０ａへ転送する。実行制御回路３０ａ内のＢ３インタフェースＩＦ３は、処理ステータスＳＴＳ１をステータスＦＩＦＯ３３に格納する(ステップＳ７１)。
【００５３】
この時、ステータスＦＩＦＯ３３により発生された割込信号が制御プロセッサ３１で受信される。割込信号を受けた制御プロセッサ３１は、ステータスＦＩＦＯ３３から処理ステータスＳＴＳ１を取得する(ステップＳ７２)。
【００５４】
ここで、処理ステータスＳＴＳのフォーマット例を図８に示す。この例では、処理ステータスＳＴＳを３２ビットで構成し、ＭＳＢ(Ｍｏｓｔ Ｓｉｇｎｉｆｉｃａｎｔ Ｂｉｔ)から８ビット分をサブプロセッサＩＤの設定領域、次の８ビット分を処理ＩＤの設定領域、最後の１６ビット分をステータス値(入力データ読出完了、出力データ書込完了、処理完了等を示す値)の設定領域として割り当てている。サブプロセッサ２０＿１〜２０＿ｎは、処理ＩＤをステータスバスＢ３のアドレス信号[７：０]とし、ステータス値をデータ信号[１５：０]としてステータスバス調停回路４２へ出力する。ステータスバス調停回路４２は、処理ＩＤ及びステータス値に、サブプロセッサＩＤを転送アドレス信号の上位ビット[１５：８]として付加して実行制御回路３０ａへ転送する。また、Ｂ３インタフェースＩＦ３は、サブプロセッサＩＤ、処理ＩＤ、及びステータス値を１つの処理ステータスＳＴＳとしてステータスＦＩＦＯ３３に格納する。
【００５５】
これにより、制御プロセッサ３１は、ステータスＦＩＦＯ３３から処理ステータスＳＴＳを読み出すことのみで、どのサブプロセッサによるどの処理がどのような状態に在るかを認識することができる。
【００５６】
[処理完了通知動作例]
上記の処理ステータス通知動作により処理シーケンスＳＥＱの完了(全ての処理の完了)を認識した場合、制御プロセッサ３１は、図９に示す如くシーケンス完了(図３に示した処理完了通知ＮＴＦ)を示す割込要因データＤＩを割込ＦＩＦＯ３４に格納する(ステップＳ１３１)。この時、割込ＦＩＦＯ３４により発生された割込信号ＳＩが、割込インタフェースＩＦ２を介して割込コントローラ６０で受信される。割込の発生は、割込コントローラ６０からメインプロセッサ１０へ伝達される(ステップＳ１３２)。そして、メインプロセッサ１０は、ＭＰインタフェースＩＦ１及びＭＰバスＢ４を介して割込ＦＩＦＯ３４から割込要因データＤＩを取得し、以てシーケンス完了を認識する(ステップＳ１３３)。
【００５７】
次に、本実施の形態に係るマルチプロセッサシステム１ａのデータ処理システムへの適用例１、及びコーデックシステムへの適用例２を、それぞれ、図１０及び図１１を参照して説明する。
【００５８】
[適用例１]
図１０に示すデータ処理システム２は、マルチプロセッサシステム１ａと同様のメインプロセッサ１０、実行制御回路３０ａ、調停回路４０、及び割込コントローラ６０を備えている。また、システムバスＢ１には、外部メモリ(図示せず)へのアクセスを制御するメモリコントローラ７０が接続されている。また、サブプロセッサとして、システム外部にデータＤｏｕｔを送信するデータ送信機能ブロック２３＿１と、システム外部からデータＤｉｎを受信するデータ受信機能ブロック２３＿２と、受信データＤｉｎからタイミング信号ＴＳを生成して機能ブロック２３＿１及び２３＿２に与えるタイミング機能ブロック２３＿３と、機能ブロック２３＿２から出力された受信データＤｉｎに対して所定の処理を施し、処理されたデータＤｆをメモリコントローラ７０を介して外部メモリに記憶するデータ処理機能ブロック２３＿４とを用いている。ここで、機能ブロック２３＿１〜２３＿４の各々は、上述したコマンド受信制御部２１及びステータス通知制御部２２を有する。なお、図１０に一点鎖線で示すように、システムバスＢ１からコントロールバス制御回路４１にアクセスできるようにしても良い。この場合、メインプロセッサ１０から機能ブロック２３＿１〜２３＿４を直接制御することも可能となる。
【００５９】
データ受信動作において、メインプロセッサ１０が実行制御回路３０ａに対して受信処理シーケンスとその開始コマンドを与えると、実行制御回路３０ａは、受信処理シーケンスを解析し、タイミング機能ブロック２３＿３へタイミング信号ＴＳの生成開始を要求する処理コマンドを発行する。タイミング機能ブロック２３＿３からタイミング信号ＴＳの生成開始処理完了を示す処理ステータスを受けると、実行制御回路３０ａは、データ受信機能ブロック２３＿２へデータＤｉｎの受信開始を要求する処理コマンドを発行する。データ受信機能ブロック２３＿２から受信開始処理の完了を示す処理ステータスを受けると、実行制御回路３０ａは、データ処理機能ブロック２３＿４へ処理データＤｆの外部メモリへの書込を要求する処理コマンドを発行する。データ処理機能ブロック２３＿４から処理データＤｆの書込処理完了を示す処理ステータスを受けると、実行制御回路３０ａは、メインプロセッサ１０へ受信処理完了を示す割込を通知する。
【００６０】
この時、データ処理機能ブロック２３＿４が、データ受信機能ブロック２３＿２から受信データＤｉｎを取得したタイミングで取得完了を示す処理ステータスを発行する。これにより、実行制御回路３０ａは、データ受信機能ブロック２３＿２に対して、次のタイミング信号ＴＳにおいて受信データＤｉｎをデータ処理機能ブロック２３＿４へ出力するよう要求する処理コマンドを発行することができる。このため、データ受信機能ブロック２３＿２は、データ処理機能ブロック２３＿４の動作状態を確認する必要が無い。従って、データ処理システム２は、データＤｉｎの受信処理と、処理データＤｆの外部メモリへの書込処理とを同時に実行することができる。結果として、各機能ブロックは、パイプライン的に並列動作することとなる。
【００６１】
一方、データ送信動作において、実行制御回路３０ａは、タイミング機能ブロック２３＿３からのタイミング信号ＴＳの生成開始処理完了と、メインプロセッサ１０からの送信データＤｏｕｔの外部メモリへの書込完了とを受けて、データ送信機能ブロック２３＿１に対して、送信データＤｏｕｔのシステム外部への送信を要求する処理コマンドを発行する。この時、データ送信機能ブロック２３＿１が、外部メモリから送信データＤｏｕｔを取得したタイミングで取得完了を示す処理ステータスを発行する。これにより、実行制御回路３０ａは、メインプロセッサ１０に対して、次の送信データＤｏｕｔを外部メモリへ書き込み可能であることを示す割込を通知することができる。このため、メインプロセッサ１０は、データ送信機能ブロック２３＿１の動作状態を確認する必要が無い。従って、データ処理システム２は、データＤｏｕｔの送信処理と、次の送信データＤｏｕｔの外部メモリへの書込処理とを同時に実行することができる。結果として、各機能ブロックは、パイプライン的に並列動作することとなる。
【００６２】
また、図１０に点線で示す如くデータ処理機能ブロック２３＿５を追加する場合、データ送信機能ブロック２３＿６を追加する場合、或いはデータ送信機能ブロック２３＿１の機能を拡張する場合のいずれであっても、実行制御回路３０ａの回路構成を全く変更する必要が無い。
【００６３】
[適用例２]
図１１に示すコーデックシステム３は、サブプロセッサとして、上記の適用例１で示した機能ブロック２３＿１〜２３＿６に代えて、システム外部とのデータ信号Ｄｏｕｔ及びＤｉｎの送受信を行う送受信機能ブロック２４＿１と、受信データＤｉｎに対して復号化処理を施して復号データＤｄを得る復号化機能ブロック２４＿２〜２４＿４と、メインプロセッサ１０から与えられた処理データＤｆに対して符号化処理を施し符号データＤｅを得る符号化機能ブロック２４＿５及び２４＿６とを用いている。ここで、機能ブロック２４＿１〜２４＿６の各々は、上述したコマンド受信制御部２１及びステータス通知制御部２２を有する。また、受信データＤｉｎ、復号データＤｄ、処理データＤｆ、及び符号データＤｅの授受は、マルチバンク型の共有メモリ５０を介して行う。このため、機能ブロック２４＿１〜２４＿６からは、異なるバンクに対して並列にアクセスすることができる。また、各データの授受が共有メモリ５０を介して行われるため、機能ブロック同士間で直接通信を行う必要は無い。また、メインプロセッサ１０が処理に必要なパラメータを共有メモリ５０に予め書き込むことにより、各機能ブロックは、実行制御回路３０ａから起動を要求する処理コマンドを受信すると自律的に共有メモリ５０からパラメータを取得する。このため、実行制御回路３０ａは、処理ＩＤと、共有メモリ５０上のパラメータの格納アドレス(ポインタ)とを含む処理コマンドを発行すれば良く、各機能ブロックを共通に制御することができる。なお、図１１に一点鎖線で示すように、システムバスＢ１からコントロールバス制御回路４１にアクセスできるようにしても良い。この場合、メインプロセッサ１０から機能ブロック２４＿１〜２４＿６を直接制御することも可能となる。
【００６４】
データ符号化動作において、メインプロセッサ１０が実行制御回路３０ａに対して符号化処理シーケンスとその開始コマンドを与えると、実行制御回路３０ａは、符号化処理シーケンスを解析し、メインプロセッサ１０から処理データＤｆの共有メモリ５０への書込完了を受けて、符号化機能ブロック２４＿５へ処理データＤｆの符号化処理を要求する処理コマンドを発行する。符号化機能ブロック２４＿５から符号化処理の完了を示す処理ステータスを受けると、実行制御回路３０ａは、符号化機能ブロック２４＿６へ処理データＤｆの符号化処理を要求する処理コマンドを発行する。符号化機能ブロック２４＿６から符号化処理の完了を示す処理ステータスを受けると、実行制御回路３０ａは、送受信機能ブロック２４＿１に対して、符号データＤｅのシステム外部への送信を要求する処理コマンドを発行する。
【００６５】
この時、符号化機能ブロック２４＿５が、メインプロセッサ１０からの処理データＤｆを共有メモリ５０から取得したタイミングで取得完了を示す処理ステータスを発行する。これにより、実行制御回路３０ａは、メインプロセッサ１０に対して、次のフレーム分の処理データＤｆを共有メモリ５０へ書き込み可能であることを示す割込を通知することができる。このため、メインプロセッサ１０は、符号化機能ブロック２４＿５による符号化処理と並行して、処理データＤｆの共有メモリ５０への書込処理を実行することができる。結果として、各機能ブロックは、パイプライン的に並列動作することとなる。
【００６６】
一方、データ復号化動作においては、メインプロセッサ１０が実行制御回路３０ａに対して復号化処理シーケンスとその開始コマンドを与えると、実行制御回路３０ａは、復号化処理シーケンスを解析し、定常的且つ周期的に発生する送受信機能ブロック２４＿１からの受信データＤｉｎの共有メモリ５０への書込完了を示す処理ステータスを受けて、復号化機能ブロック２４＿２へ受信データＤｉｎに対する復号化処理を要求する処理コマンドを発行する。復号化機能ブロック２４＿２から復号化処理の完了を示す処理ステータスを受けると、実行制御回路３０ａは、復号化機能ブロック２４＿３へ受信データＤｉｎに対する復号化処理を要求する処理コマンドを発行する。復号化機能ブロック２４＿３から復号化処理の完了を示す処理ステータスを受けると、実行制御回路３０ａは、復号化機能ブロック２４＿４へ受信データＤｉｎに対する復号化処理を要求する処理コマンドを発行する。復号化機能ブロック２４＿４から復号化処理の完了を示す処理ステータスを受けると、実行制御回路３０ａは、メインプロセッサ１０に対して、復号データＤｄが共有メモリから読み出し可能であることを示す割込を通知する。
【００６７】
この時、復号化機能ブロック２４＿３が、受信データＤｉｎを共有メモリ５０から取得したタイミングで取得完了を示す処理ステータスを発行する。これにより、実行制御回路３０ａは、復号化機能ブロック２４＿２に対して、次のフレーム分の受信データＤｉｎの共有メモリ５０からの読出を要求する処理コマンドを発行することができる。このため、復号化機能ブロック２４＿２は、復号化機能ブロック２４＿３の動作状態を確認する必要が無い。従って、復号化処理と、受信データＤｉｎの読出処理とを同時に実行することができる。結果として、各機能ブロックは、パイプライン的に並列動作することとなる。
【００６８】
また、復号化機能ブロック２４＿２〜２４＿４、並びに符号化機能ブロック２４＿５及び２４＿６には、それぞれ、複数の符号化方式に対応するものを用いても良い。この場合、復号化機能ブロック及び符号化機能ブロックは、実行回路３０ａから受けた処理コマンド(処理ＩＤ)に従って符号化方式を選択する。実行制御回路３０ａには、各方式に対応する処理シーケンスを設定する。システム全体を或る符号化方式から他の符号化方式に変更する場合は、メインプロセッサ１０が当該他の符号化方式用の処理シーケンスを実行制御回路３０ａに設定することによって、容易に符号化方式を切り替えることができる。また、上述した通り、ステータスＦＩＦＯ３３には、処理ＩＤとステータス値とをセットにして格納するため、ステータスＦＩＦＯ３３を各符号化方式で共用することができる。
【００６９】
このように、本実施の形態に係るマルチプロセッサシステムは、種々のシステムに適用することができる。また、システムの再構成や再利用が容易であるというメリットもある。なお、上記のデータ処理システム２及びコーデックシステム３は、それぞれ後述する実施の形態２〜５に係るマルチプロセッサシステムを用いて構成しても良い。
【００７０】
次に、実施の形態２を図１２〜図１４、図１５Ａ及び図１５Ｂ、並びに図１６を参照して説明する。
【００７１】
[実施の形態２]
[構成例]
図１２に示す本実施の形態に係るマルチプロセッサシステム１ｂは、図４に示したマルチプロセッサシステム１ａ内の実行制御回路３０ａに代えて、実行制御回路３０ｂを備えている点が上記の実施の形態１と異なる。なお、図示を省略するが、マルチプロセッサシステム１ｂは、マルチプロセッサシステム１ａと同様、ｎ個のサブプロセッサ２０＿１〜２０＿ｎ、及びこれらのサブプロセッサと実行制御回路３０ｂの間で処理コマンドＣＭＤ及び処理ステータスＳＴＳの転送を調停する調停回路４０を備えている。
【００７２】
実行制御回路３０ｂは、図４に示したコマンドＦＩＦＯ３２、ステータスＦＩＦＯ３３、及び割込ＦＩＦＯ３４に代えて、ＦＩＦＯメモリＭＥＭ３、ＦＩＦＯメモリ制御部３５、コマンドＦＩＦＯ管理部３６、ステータスＦＩＦＯ管理部３７、割込ＦＩＦＯ管理部３８、及び制御レジスタＲＥＧを有する。ＦＩＦＯメモリＭＥＭ３のアドレス空間上には、コマンドＦＩＦＯ３２、ステータスＦＩＦＯ３３、及び割込ＦＩＦＯ３４にそれぞれ相当するコマンドＦＩＦＯ領域、ステータスＦＩＦＯ領域、及び割込ＦＩＦＯ領域が形成されている。ＦＩＦＯメモリ制御部３５は、ＦＩＦＯメモリＭＥＭ３に対するアクセスを制御する。コマンドＦＩＦＯ管理部３６は、コマンドＦＩＦＯ領域についての管理情報を保持する。ステータスＦＩＦＯ管理部３７は、ステータスＦＩＦＯ領域についての管理情報を保持する。割込ＦＩＦＯ管理部３８は、割込ＦＩＦＯ領域についての管理情報を保持する。制御レジスタＲＥＧは、コマンドＦＩＦＯ領域、ステータスＦＩＦＯ領域、割込ＦＩＦＯ領域、及びＦＩＦＯメモリＭＥＭ３についての制御情報を保持する。
【００７３】
また、ＦＩＦＯメモリ制御部３５、コマンドＦＩＦＯ管理部３６、ステータスＦＩＦＯ管理部３７、割込ＦＩＦＯ管理部３８、及び制御レジスタＲＥＧは、それぞれＭＰバスＢ４及びＣＰバスＢ５に接続されている。ＦＩＦＯメモリ制御部３５には、Ｂ３インタフェースＩＦ３を介して、ステータスバスＢ３からの処理ステータスＳＴＳが入力される。また、制御レジスタＲＥＧは、ステータスＦＩＦＯ管理部３７により発生された割込信号を、割込インタフェースＩＦ４を介して割込コントローラ６０に与える一方、コマンドＦＩＦＯ管理部３６及び割込ＦＩＦＯ管理部３８により発生された割込信号を制御プロセッサ３１に与える。
【００７４】
具体的には、各ＦＩＦＯ管理部３６〜３８は、図１３に示す如く、管理レジスタ１０１、マスクレジスタ１０２、クリアレジスタ１０３、及びマスク回路１０４を備えている。管理レジスタ１０１は、各ＦＩＦＯ領域への書込アドレスを管理するための書込ポインタＷＰ、各ＦＩＦＯ領域からの読出アドレスを管理するための読出ポインタＲＰ、各ＦＩＦＯ領域に格納されているデータ数を保持する格納データ数ＮＵＭ、及び各ＦＩＦＯ領域がＦｕｌｌ状態又はＥｍｐｔｙ状態に在るか否かを示す状態フラグＦＬＧを有する。マスクレジスタ１０２は、各ＦＩＦＯ領域への書込アクセスが生じた際に、管理レジスタ１０１から発生される割込信号ＳＩを制御レジスタＲＥＧへ与えるか否か(割込をマスクするか否か)を示す２値データを保持する。クリアレジスタ１０３は、管理レジスタ１０１内の情報をクリアするか否かを示す２値データを保持する。マスク回路１０４は、マスクレジスタ１０２の出力値に応じて割込信号ＳＩをマスクする。
【００７５】
ここで、状態フラグＦＬＧは、ＦＩＦＯ領域の状態を表示及び観測するために用いられる。状態フラグＦＬＧは、例えばＥｍｐｔｙフラグとＦｕｌｌフラグの２ビットで構成され、ＦＩＦＯ領域がＥｍｐｔｙ状態に在る場合にＥｍｐｔｙフラグが"１"となり、ＦＩＦＯ領域がＦｕｌｌ状態に或る場合にはＦｕｌｌフラグが"１"となる。Ｆｕｌｌフラグは、ＦＩＦＯ領域からデータを読み出すことで"０"に戻る。また、クリアレジスタ１０３に"１"を書き込むことにより、管理レジスタ１０１内の各情報がゼロに初期化される。さらに、マスクレジスタ１０２は、ＦＩＦＯ領域にデータを書き込んだ時に発生する割込信号の出力をマスクするために用いられる。マスクレジスタ１０２の値が"１"(マスク状態)に設定されている場合、ＦＩＦＯ領域にデータが書き込まれても割込信号は出力されない。但し、マスク解除したタイミング(マスクレジスタ１０２の値が"１"→"０"に変化したタイミング)で、ＦＩＦＯ領域内にデータが存在する場合には、割込信号が出力される。これにより、ＦＩＦＯ内データの取りこぼしや不要な割り込み信号の発生を防止することができる。
【００７６】
また、制御レジスタＲＥＧには、ＦＩＦＯメモリＭＥＭ３上に割り当てた各ＦＩＦＯ領域のベースアドレスＢＡ、各ＦＩＦＯ領域に格納可能なデータ段数ＤＥＰ、並びに各ＦＩＦＯ領域に格納されるデータ(すなわち、上述した処理コマンドＣＭＤ、処理ステータスＳＴＳ、及び割込要因データＤＩ)のデータビット幅ＷＩＤが記憶されている。この内、段数ＤＥＰ及びデータビット幅ＷＩＤは、各ＦＩＦＯ管理部３６〜３８に与えられる。
【００７７】
ここで、上記の書込ポインタＷＰは、書込イネーブル信号ＷＥがアクティブになる度毎に、データビット幅ＷＩＤ(バイト単位数)分だけインクリメントされる。例えば、データビット幅ＷＩＤ＝"１６ビット"の場合、書込ポインタＷＰは、ＦＩＦＯ領域にデータが書き込まれる度毎に２ずつインクリメントされ、データビット幅ＷＩＤ＝"３２ビット"の場合には４ずつインクリメントされる。但し、書込ポインタＷＰの値が段数ＤＥＰ分に達したらゼロに初期化され、上記のインクリメントが再び行われる。読出ポインタＲＰは、読出イネーブル信号ＲＥがアクティブになる度毎に、書込ポインタＷＰと同様のインクリメントが行われる。格納データ数ＮＵＭは、ＦＩＦＯ領域に格納されているデータ数を表示及び観測するために用いられる。格納データ数ＮＵＭは、読出ポインタＲＰの値と書込ポインタＷＰの値との差分から算出する。すなわち、データ数ＮＵＭは、ＦＩＦＯ領域にデータが書き込まれると１ずつ増加し、読み出されると1ずつ減少する。
【００７８】
また、ＦＩＦＯメモリ制御部３５は、制御インタフェース２０１、アドレス／データ変換回路２０２＿１〜２０２＿３、及びアービタ回路２０３を備えている。制御インタフェース２０１は、各ＦＩＦＯ領域への書込イネーブル信号ＷＥ及び読出イネーブル信号ＲＥを管理レジスタ１０１に与える一方、書込ポインタＷＰ、読出ポインタＲＰ、ベースアドレスＢＡ、及びデータビット幅ＷＩＤを受信する。アドレス／データ変換回路２０２＿１〜２０２＿３は、ステータスバスＢ３、ＭＰバスＢ４、ＣＰバスＢ５にそれぞれ接続されており、制御インタフェース２０１から出力された書込ポインタＷＰ、読出ポインタＲＰ、ベースアドレスＢＡ、及びデータビット幅ＷＩＤに基づくアドレスの変換処理を行う。さらに、アドレス／データ変換回路２０２＿１〜２０２＿３は、データビット幅ＷＩＤとＦＩＦＯメモリＭＥＭ３のデータビット幅(すなわち、ＭＥＭ３に接続される並列データバス幅)との相違(差分)に基づき、データバスに転送する若しくはデータバスから取得したデータの変換処理を行う。アービタ回路２０３は、アドレス／データ変換回路２０２＿１〜２０２＿３によるデータバスアクセスを調停する。
【００７９】
[動作例]
次に、本実施の形態の動作を、図１４、図１５Ａ及び図１５Ｂ、並びに図１６を参照して説明する。なお、実行制御回路３０ｂにおけるＦＩＦＯ領域アクセスに係る動作以外については、図４に示したマルチプロセッサ１ａと同様であるため、その説明を省略する。
【００８０】
図１４は、ＦＩＦＯメモリ制御部３５によるアドレス変換処理例及びデータバスアクセスの調停処理例を示している。
【００８１】
まず、ＦＩＦＯメモリＭＥＭ３のアドレス空間上には、割込ＦＩＦＯ領域ＡＲ＿Ｉ、コマンドＦＩＦＯ領域ＡＲ＿Ｃ、及びステータスＦＩＦＯ領域ＡＲ＿Ｓが形成されている。ここで、割込ＦＩＦＯ領域ＡＲ＿Ｉのベースアドレス及び領域長は、それぞれＢＡ＿Ｉ及び"段数ＤＥＰ＿Ｉ×データビット幅ＷＩＤ_I"に設定されている。同様に、コマンドＦＩＦＯ領域ＡＲ＿Ｃのベースアドレス及び領域長は、それぞれＢＡ＿Ｃ及び"段数ＤＥＰ＿Ｃ×データビット幅ＷＩＤ_Ｃ"に設定され、ステータスＦＩＦＯ領域ＡＲ＿Ｓのベースアドレス及び領域長は、それぞれＢＡ＿Ｓ及び"段数ＤＥＰ＿Ｓ×データビット幅ＷＩＤ_Ｓ"に設定されている。なお、各ＦＩＦＯ領域の領域長は、ベースアドレスＢＡ及び段数ＤＥＰの設定値を変更することにより可変にできる。
【００８２】
図示の如く、制御プロセッサ３１による割込要因データＤＩの書込アクセスが発生した場合(ステップＳ１３１１)、ＦＩＦＯメモリ制御部３５内のアドレス／データ変換回路２０２＿３は、ベースアドレスＢＡ＿Ｉに、制御インタフェース２０１から受信した割込ＦＩＦＯ領域ＡＲ＿Ｉの書込ポインタＷＰ＿Ｉの値を加算して、ＦＩＦＯメモリＭＥＭ３上の書込アドレスＷＡを発生する(ステップＳ１３１２)。この時、アドレス／データ変換回路２０２＿３からのデータバスアクセスが、ステータスバスＢ３及びメインプロセッサ１０の少なくとも一方からのデータバスアクセスと競合していれば、アービタ回路２０３がアクセス調停を行う(ステップＳ２０００)。具体的には、アービタ回路２０３は、「ラウンドロビン方式」や「メインプロセッサ１０＞制御プロセッサ３１＞ステータスバスＢ３の順の優先度方式」等を用いて、アクセス調停(アービトレーション)を実施する。
【００８３】
また、制御プロセッサ３１による処理コマンドＣＭＤの読出アクセスが発生した場合(ステップＳ２３１)、アドレス／データ変換回路２０２＿３は、ベースアドレスＢＡ＿Ｃに、コマンドＦＩＦＯ領域ＡＲ＿Ｃの読出ポインタＲＰ＿Ｃの値を加算して、ＦＩＦＯメモリＭＥＭ３上の読出アドレスＲＡを発生する(ステップＳ２３２)。同様にして、処理ステータスＳＴＳの読出アクセスが発生した場合(ステップＳ７２１)、アドレス／データ変換回路２０２＿３は、ベースアドレスＢＡ＿Ｓに、ステータスＦＩＦＯ領域ＡＲ＿Ｓの読出ポインタＲＰ＿Ｓの値を加算して読出アドレスＲＡを発生する(ステップＳ７２２)。
【００８４】
一方、ステータスバスＢ３による処理ステータスＳＴＳの書込アクセスが発生した場合(ステップＳ７１１)、ＦＩＦＯメモリ制御部３５内のアドレス／データ変換回路２０２＿１は、ベースアドレスＢＡ＿Ｓに、ステータスＦＩＦＯ領域ＡＲ＿Ｓの書込ポインタＷＰ＿Ｓの値を加算して書込アドレスＷＡを発生する(ステップＳ７１２)。なお、処理ステータスＳＴＳは、図８に示したようなフォーマットでそのままステータスＦＩＦＯ領域ＡＲ＿Ｓ中に書き込まれる。
【００８５】
また、メインプロセッサ１０による割込要因データＤＩの読出アクセスが発生した場合(ステップＳ１３３１)、ＦＩＦＯメモリ制御部３５内のアドレス／データ変換回路２０２＿２は、ベースアドレスＢＡ＿Ｉに、割込ＦＩＦＯ領域ＡＲ＿Ｉの読出ポインタＲＰ＿Ｉの値を加算して読出アドレスＲＡを発生する(ステップＳ１３３２)。同様にして、処理コマンドＣＭＤの書込アクセスが発生した場合(ステップＳ２２１)、アドレス／データ変換回路２０２＿２は、ベースアドレスＢＡ＿Ｃに、コマンドＦＩＦＯ領域ＡＲ＿Ｃの書込ポインタＷＰ＿Ｃの値を加算して書込アドレスＷＡを発生する(ステップＳ２２２)。
【００８６】
上記のステップＳ２３２、Ｓ７２２、Ｓ７１２、Ｓ１３３２、及びＳ２２２のいずれかで書込アドレスＷＡ又は読出アドレスＲＡが発生した場合も、アービタ回路２０３によるアクセス調停が行われる。
【００８７】
なお、図示されないが、制御プロセッサ３１は、例えばメモリテストを目的として、ＦＩＦＯメモリＭＥＭ３のアドレス値を直接指定し、通常のメモリアクセスと同様にランダムアクセスすることもできる。
【００８８】
また、ＦＩＦＯメモリ制御部３５は、図１５Ａ及び図１５Ｂに示すデータ変換処理を行う。例えば、図１５Ａに示す如く割込要因データＤＩのデータビット幅ＷＩＤ＿Ｉが"８ビット"である一方、データバス幅が"３２ビット"であり、且つ書込アドレスＷＡ＝"０ｘ０４０Ａ"に対する書込を行う場合、ＦＩＦＯメモリ制御部３５内のアドレス／データ変換回路２０２＿３は、データバス[２３：１６]を用いて割込要因データＤＩをＦＩＦＯメモリＭＥＭ３へ転送し、以てＦＩＦＯメモリＭＥＭ３上のアドレス"０ｘ０４０８"に対応する領域の１６〜２３ビット目に割込要因データＤＩを書き込む。
【００８９】
一方、上記の処理により書き込まれた割込要因データＤＩを読み出す場合(すなわち、読出アドレスＲＡ＝"０ｘ０４０Ａ"に対する読出を行う場合)、アドレス／データ変換回路２０２＿２が、ＦＩＦＯメモリＭＥＭ３からデータバス[２３：１６]を介して８ビット分の割込要因データＤＩ[７：０]を読み出す。
【００９０】
また、図１５Ｂに示す如く処理コマンドＣＭＤのデータビット幅ＷＩＤ＿Ｃが"１６ビット"であり、且つ書込アドレスＷＡ＝"０ｘ０５０Ａ"に対する書込を行う場合、アドレス／データ変換回路２０２＿２は、データバス[３１：１６]を用いて処理コマンドＣＭＤをＦＩＦＯメモリＭＥＭ３へ転送し、以てＦＩＦＯメモリＭＥＭ３上のアドレス"０ｘ０５０８"に対応する領域の１６〜３１ビット目に処理コマンドＣＭＤを書き込む。
【００９１】
一方、上記の処理により書き込まれた処理コマンドＣＭＤを読み出す場合(すなわち、読出アドレスＲＡ＝"０ｘ０５０８"に対する読出を行う場合)、アドレス／データ変換回路２０２＿３が、ＦＩＦＯメモリＭＥＭ３からデータバス[３１：１６]を介して１６ビット分の処理コマンドＣＭＤ[１５：０]を読み出す。
【００９２】
また、図１６は、メインプロセッサ１０及び制御プロセッサ３１から見た実行制御回路３０ｂのアドレスマップ例を示している。例えば、図示の如く各ＦＩＦＯ管理部３６〜３８については、図１３に示した管理レジスタ１０１、マスクレジスタ１０２、及びクリアレジスタ１０３各々のアクセスアドレスＡＡのみがマッピングされている。一方、ＦＩＦＯ領域(割込要因データ読出アクセス領域、コマンド書込アクセス領域、割込要因データ書込アクセス領域、コマンド読出アクセス領域、及びステータス読出アクセス領域)のアクセスアドレスＡＡは、ＦＩＦＯメモリ制御部３５のアドレス空間にマッピングされている。すなわち、例えば、制御プロセッサ３１は、ステータス読出アクセス領域のアクセスアドレスＡＡ＝"０ｘ００…０３０８"に対して連続してアクセスすることにより、実際には図１４に示したステータスＦＩＦＯ領域ＡＲ＿Ｓ内の連続したアドレスから処理ステータスＳＴＳの順次読出を行うことができる。
【００９３】
このように、割込ＦＩＦＯ領域ＡＲ＿Ｉ、コマンドＦＩＦＯ領域ＡＲ＿Ｃ、及びステータスＦＩＦＯ領域ＡＲ＿Ｓを１つのメモリ上に形成するため、ＦＩＦＯ領域中に格納するデータの段数及びビット幅を可変にでき、以て上記の実施の形態１と比較してよりマルチプロセッサシステムの拡張性を向上させることができる。すなわち、ＬＳＩ開発後の仕様変更等により処理ステータス、処理コマンド、割込要因の各々の数やフォーマットが変更されても柔軟に対応できる。
【００９４】
次に、実施の形態３を図１７〜図１９を参照して説明する。
【００９５】
[実施の形態３]
[構成例]
図１７に示す本実施の形態に係るマルチプロセッサシステム１ｃは、実行制御回路３ｃが、図１２に示した実行制御回路３０ｂ内のＦＩＦＯメモリＭＥＭ３及びＦＩＦＯメモリ制御部３５に代えて、データメモリＭＥＭ１に対するアクセスを制御するデータメモリ制御部３９を備えている点が上記の実施の形態２と異なる。すなわち、本実施の形態では、上記の実施の形態２で示した割込ＦＩＦＯ領域ＡＲ＿Ｉ、コマンドＦＩＦＯ領域ＡＲ＿Ｃ、及びステータスＦＩＦＯ領域ＡＲ＿ＳをデータメモリＭＥＭ１のアドレス空間上に形成している。また、データメモリ制御部３９は、ＭＰバスＢ４及びＣＰバスＢ５に接続されている。データメモリ制御部３９には、Ｂ３インタフェースＩＦ３を介してステータスバスＢ３からの処理ステータスＳＴＳが入力される。
【００９６】
なお、図示を省略するが、マルチプロセッサシステム１ｃは、図４に示したマルチプロセッサシステム１ａと同様、ｎ個のサブプロセッサ２０＿１〜２０＿ｎ、及びこれらのサブプロセッサと実行制御回路３０ｃの間で処理コマンドＣＭＤ及び処理ステータスＳＴＳの転送を調停する調停回路４０を備えている。
【００９７】
[動作例]
次に、本実施の形態の動作を、図１８及び図１９を参照して説明する。なお、実行制御回路３０ｃにおけるＦＩＦＯ領域アクセスに係る動作以外については、図４に示したマルチプロセッサ１ａと同様であるため、その説明を省略する。
【００９８】
図１８は、データメモリ制御部３９によるアドレス変換処理例及びデータバスアクセス調停処理例を示している。制御プロセッサＣＰ３1及びメインプロセッサ１０がステップＳ２１００及びＳ２２００の処理をそれぞれ実行できる点が、図１４に示したアドレス変換処理例及びデータバスアクセス調停処理例と異なる。すなわち、ＦＩＦＯ領域ＡＲ＿Ｉ、ＡＲ＿Ｃ、及びＡＲ＿ＳをデータメモリＭＥＭ１に形成した場合、制御プロセッサＣＰ３1及びメインプロセッサ１０は、各ＦＩＦＯ領域へのアクセスと、データ領域ＡＲ＿Ｄに対するランダムアクセスとを単一のデータメモリＭＥＭ１を用いて行うことができる。
【００９９】
図１９は、メインプロセッサ１０及び制御プロセッサ３１から見た実行制御回路３０ｃのアドレスマップ例を示している。図１６に示した実行制御回路３０ｂのアドレスマップと異なる点は、ＦＩＦＯ領域のアクセスアドレスＡＡが、各領域に対して１つでは無く、少なくとも各領域の先頭と末尾とを含んで複数割り当てられていることである。すなわち、本実施の形態においては、ＦＩＦＯ領域が、一定領域幅のアドレス空間としてマッピングされている。
【０１００】
従って、マッピングされたアドレス空間内であれば、どのアドレスにアクセスしても同一のＦＩＦＯアクセス(ＦＩＦＯ領域内のデータに対する順次アクセス)となる。一方、メインプロセッサ１０及び制御プロセッサ３１は、複数のアクセスアドレスを用いることにより、インクリメンタルバーストアクセス(ＦＩＦＯ領域内の連続したデータに対するバーストアクセス)を行うこともできる。この場合、ＦＩＦＯアクセス処理を高速化できる。
【０１０１】
次に、実施の形態４を、図２０を参照して説明する。
【０１０２】
[実施の形態４]
図２０に示す本実施の形態に係るマルチプロセッサシステム１ｄは、図４に示したマルチプロセッサシステム１ａの構成に加えて、調停回路４０内のコントロールバス制御回路４１及びステータスバス調停回路４２をそれぞれ通過する処理コマンドＣＭＤ及び処理ステータスＳＴＳを外部にモニタ出力するバスモニタ８０を備えている。なお、このバスモニタ８０は、図１２及び図１７にそれぞれ示したマルチプロセッサシステム１ｂ及び１ｃ内に設けても良い。この場合も、以下の説明は同様に適用される。また、上記の適用例２のように共有メモリを用いてサブプロセッサ同士間で通信を行う場合には、その通信の観測を、共有メモリバスにバスモニタ８０を接続して行うようにしても良い。
【０１０３】
動作においては、バスモニタ８０が、実行制御回路３０ａからサブプロセッサ２０＿１〜２０＿ｎへの処理開始等を要求するコマンドと、サブプロセッサ２０＿１〜２０＿ｎから実行制御回路３０ａへの処理完了通知やエラー通知等を外部にモニタ出力する。これにより、各サブプロセッサの処理実行に関する略全ての動作状態を観測することが可能となる。このように高い観測性(デバッグ容易性)が得られるのは、処理ステータスＳＴＳの転送に専用線や専用バスを用いず、実行制御回路３０ａとサブプロセッサ２０＿１〜２０＿ｎの間の通信を全て共通バス化しているためである。
【０１０４】
次に、実施の形態５を、図２１を参照して説明する。
【０１０５】
[実施の形態５]
図２１に示す本実施の形態に係るマルチプロセッサシステム１ｅは、２つの実行制御回路３０＿１及び３０＿２を備えている。また、調停回路４０は、図４等に示したコントロールバス制御回路４１に代えて、処理コマンドＣＭＤの転送に際し、実行制御回路３０＿１及び３０＿２からのコントロールバスＢ２に対するアクセスを調停するコントロールバス調停回路４３を有する。なお、調停回路は実行制御回路毎に設けても良い。実行制御回路は３つ以上設けても良い。また、メインプロセッサは複数設けても良い。また、実行制御回路３０＿１及び３０＿２には、図４に示した実行制御回路３０ａ、図１２に示した実行制御回路３０ｂ、及び図１７に示した実行制御回路３０ｃのいずれを用いても良い。
【０１０６】
動作においては、メインプロセッサ１０が、実行制御回路３０＿１及び３０＿２に対して互いに異なる処理シーケンスを設定し、以て実行制御を並列に行わせる。また、コントロールバス調停回路４３は、実行制御回路３０＿１及び３０＿２からのコントロールバスＢ２に対するアクセスが競合した場合、ラウンドロビン方式等を用いてアクセス調停を行った上でアドレスデコードを行い、選択した実行制御回路からの処理コマンドをサブプロセッサへ転送する。同様にして、ステータスバス調停回路４２は、サブプロセッサ２０＿１〜２０＿ｎからのステータスバスＢ３に対するアクセスが競合した場合のアクセス調停を行う。
【０１０７】
これにより、システム全体として更なる負荷分散を図ることができる。また、システム全体の処理負荷が低減されるため、サブプロセッサ数を増加させることもできる。また、実行制御回路を複数備えることにより、例えシステムの大規模化に伴ってサブプロセッサ数が急増しても、実行制御に伴う処理負荷を低減できるため、システム全体の処理破綻を回避できる。なお、実行制御回路を増設する場合であっても、その回路構成の変更は不要である。
【０１０８】
なお、上記の実施の形態によって本発明は限定されるものではなく、特許請求の範囲の記載に基づき、当業者によって種々の変更が可能なことは明らかである。
【０１０９】
この出願は、２００８年８月７日に出願された日本出願特願２００８−２０３７６８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１０】
本発明は、マルチプロセッサシステム及びその制御方法に適用され、特に複数のサブプロセッサを並列制御するマルチプロセッサシステム及びその制御方法に適用される。
【符号の説明】
【０１１１】
１, １ａ〜１ｅ  マルチプロセッサシステム
２  データ処理システム
３  コーデックシステム
１０  メインプロセッサ(ＭＰ)
２０＿１〜２０＿ｎ  サブプロセッサ(機能ブロック)
２１  コマンド受信制御部
２２  ステータス通知制御部
２３＿１, ２３＿６  データ送信機能ブロック
２３＿２  データ受信機能ブロック
２３＿３  タイミング機能ブロック
２３＿４, ２３＿５  データ処理機能ブロック
２４＿１  送受信機能ブロック
２４＿２〜２４＿４  復号化機能ブロック
２４＿５〜２４＿６  符号化機能ブロック
３０, ３０ａ〜３０ｃ, ３０＿１〜３０＿２  実行制御回路
３１  制御プロセッサ(ＣＰ)
３２  コマンドＦＩＦＯ
３３  ステータスＦＩＦＯ
３４  割込ＦＩＦＯ
３５  ＦＩＦＯメモリ制御部
３６  コマンドＦＩＦＯ管理部
３７  ステータスＦＩＦＯ管理部
３８  割込ＦＩＦＯ管理部
３９  データメモリ制御部
４０  調停回路
４１  コントロールバス制御回路
４２  ステータスバス調停回路
４３  コントロールバス調停回路
５０  共有メモリ
６０  割込コントローラ
７０  メモリコントローラ
８０  バスモニタ
１０１  管理レジスタ
１０２  マスクレジスタ
１０３  クリアレジスタ
１０４  マスク回路
ＡＡ  アクセスアドレス
ＡＢ  アクセス先ブロック
ＡＲ＿Ｃ  コマンドＦＩＦＯ領域
ＡＲ＿Ｄ  データ領域
ＡＲ＿Ｉ  割込ＦＩＦＯ領域
ＡＲ＿Ｓ  ステータスＦＩＦＯ領域
Ｂ１  システムバス
Ｂ２  コントロールバス
Ｂ３  ステータスバス
Ｂ４  ＭＰバス
Ｂ５  ＣＰバス
ＢＡ, ＢＡ＿Ｉ, ＢＡ＿Ｓ, ＢＡ＿Ｃ  ベースアドレス
ＣＭＤ, ＣＭＤ１, ＣＭＤ２, ＣＭＤ２２  処理コマンド
Ｄ０〜Ｄ３  データ
Ｄｄ  復号データ
Ｄｅ  符号データ
ＤＥＰ, ＤＥＰ＿Ｉ, ＤＥＰ＿Ｓ, ＤＥＰ＿Ｃ  段数
Ｄｆ  処理データ
ＤＩ  割込要因データ
Ｄｉｎ  受信データ
Ｄｏｕｔ  送信データ
ＦＬＧ  状態フラグ
ＩＦ１  ＭＰインタフェース
ＩＦ２  Ｂ２インタフェース
ＩＦ３  Ｂ３インタフェース
ＩＦ４  割込インタフェース
ＩＮＳ  命令コード
ＭＥＭ１  データメモリ
ＭＥＭ２  命令メモリ
ＭＥＭ３  ＦＩＦＯメモリ
ＮＴＦ  処理完了通知
ＮＵＭ  格納データ数
ＰＡ〜ＰＤ  処理
ＲＡ  読出アドレス
ＲＥ  読出イネーブル信号
ＲＥＧ  制御レジスタ
ＲＰ, ＲＰ＿Ｉ, ＲＰ＿Ｓ, ＲＰ＿Ｃ  読出ポインタ
ＳＥＱ  処理シーケンス
ＳＩ  割込信号
ＳＴＳ, ＳＴＳ１, ＳＴＳ２  処理ステータス
ＳＷ  バススイッチ
ＷＡ  書込アドレス
ＷＥ  書込イネーブル信号
ＷＩＤ, ＷＩＤ＿Ｉ, ＷＩＤ＿Ｓ, ＷＩＤ＿Ｃ  データビット幅
ＷＰ, ＷＰ＿Ｉ, ＷＰ＿Ｓ, ＷＰ＿Ｃ  書込ポインタ
【図１】
2010016169.tif 000003
【図２】
2010016169.tif 000004
【図３】
2010016169.tif 000005
【図４】
2010016169.tif 000006
【図５】
2010016169.tif 000007
【図６】
2010016169.tif 000008
【図７】
2010016169.tif 000009
【図８】
2010016169.tif 000010
【図９】
2010016169.tif 000011
【図１０】
2010016169.tif 000012
【図１１】
2010016169.tif 000013
【図１２】
2010016169.tif 000014
【図１３】
2010016169.tif 000015
【図１４】
2010016169.tif 000016
【図１５Ａ】
2010016169.tif 000017
【図１５Ｂ】
2010016169.tif 000018
【図１６】
2010016169.tif 000019
【図１７】
2010016169.tif 000020
【図１８】
2010016169.tif 000021
【図１９】
2010016169.tif 000022
【図２０】
2010016169.tif 000023
【図２１】
2010016169.tif 000024
【図２２】
2010016169.tif 000025
【図２３】
2010016169.tif 000026
【手続補正書】
【提出日】平成23年2月7日(2011.2.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのメインプロセッサと、
複数のサブプロセッサと、
前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得する実行制御手段と、
前記実行制御手段と各サブプロセッサの間で、前記処理コマンド及び実行結果の転送を調停する調停手段と、を備え、
前記調停手段が、
前記処理コマンドを前記実行制御手段から各サブプロセッサへ転送するためのコントロールバスを、制御するコントロールバス制御手段と、
前記実行結果を各サブプロセッサから前記実行制御手段へ転送するためのステータスバスに対するアクセスを、調停するステータスバス調停手段と、
を含むマルチプロセッサシステム。
【請求項２】
少なくとも１つのメインプロセッサと、
複数のサブプロセッサと、
前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得する、複数の実行制御手段と、
各実行制御手段と各サブプロセッサの間で、前記処理コマンド及び実行結果の転送を調停する調停手段と、を備え、
前記調停手段が、
前記処理コマンドを各実行制御手段から各サブプロセッサへ転送するためのコントロールバスに対するアクセスを調停するコントロールバス調停手段と、
前記実行結果を各サブプロセッサから各実行制御手段へ転送するためのステータスバスに対するアクセスを調停するステータスバス調停手段と、
を含むマルチプロセッサシステム。
【請求項３】
請求項１又は２において、
各サブプロセッサが、
前記コントロールバスから前記処理コマンドを受信するコマンド受信制御手段と、
前記ステータスバスに対して前記実行結果を送信するステータス通知制御手段と、
を含むことを特徴としたマルチプロセッサシステム。
【請求項４】
請求項１〜３のいずれか一項において、
前記処理コマンドが、前記処理を指定するための処理ＩＤを含み、
前記実行結果が、前記処理ＩＤと前記処理のステータスとを含むことを特徴としたマルチプロセッサシステム。
【請求項５】
請求項１〜４のいずれか一項において、
前記実行制御手段が、前記実行結果をＦＩＦＯ（Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ）バッファに格納することを特徴としたマルチプロセッサシステム。
【請求項６】
請求項５において、
前記調停手段が、前記実行結果にその転送元を示すサブプロセッサＩＤを付加して前記実行制御手段へ転送し、
前記実行制御手段が、前記ＦＩＦＯバッファに、前記サブプロセッサＩＤと前記実行結果とを対応付けて格納することを特徴としたマルチプロセッサシステム。
【請求項７】
請求項１〜４のいずれか一項において、
前記実行制御手段が、
前記メインプロセッサからのコマンドを格納するコマンドＦＩＦＯ領域と、前記実行結果を格納するステータスＦＩＦＯ領域と、前記メインプロセッサへの割り込み通知内容を格納する割込ＦＩＦＯ領域とが同一アドレス空間上に形成されたメモリと、
各ＦＩＦＯ領域のベースアドレス及び格納可能なデータの段数に基づき、各ＦＩＦＯ領域中の所望のデータにアクセスするための前記メモリ上のアドレスを発生するアドレス発生手段と、
を含むことを特徴としたマルチプロセッサシステム。
【請求項８】
請求項７において、
前記調停手段が、前記実行結果にその転送元を示すサブプロセッサＩＤを付加して前記実行制御手段へ転送し、
前記実行制御手段が、前記ステータスＦＩＦＯ領域に、前記サブプロセッサＩＤと前記実行結果とを対応付けて格納することを特徴としたマルチプロセッサシステム。
【請求項９】
請求項７又は８において、
前記アドレス発生手段が、前記メインプロセッサからのコマンド、前記実行結果、及び前記割り込み通知内容各々のデータビット幅に応じて前記メモリ上のアドレスを発生し、
前記実行制御手段が、各データビット幅と前記メモリのデータビット幅との相違に基づき、前記メモリに接続される並列データバスの内から、前記メインプロセッサからのコマンド、前記実行結果、及び前記割り込み通知内容各々のアクセスに用いるデータバスを決定するデータバス決定手段をさらに含むことを特徴としたマルチプロセッサシステム。
【請求項１０】
請求項７〜９のいずれか一項において、
各ＦＩＦＯ領域が、前記実行制御手段内に設けた制御用プロセッサにより使用されるデータメモリ中に形成されることを特徴としたマルチプロセッサシステム。
【請求項１１】
請求項７〜１０のいずれか一項において、
各ＦＩＦＯ領域に、前記メインプロセッサ又は前記実行制御手段内に設けた制御用プロセッサに複数のデータを連続してアクセスさせるためのアクセスアドレスを割り当てたことを特徴とするマルチプロセッサシステム。
【請求項１２】
請求項１〜１１のいずれか一項において、
マルチバンク化された共有メモリをさらに備え、
各サブプロセッサが、前記共有メモリを介して前記処理に必要な入力データの取得及び前記処理により得たデータの出力を行うことを特徴としたマルチプロセッサシステム。
【請求項１３】
請求項１〜１２のいずれか一項において、
前記調停手段を通過する前記処理コマンド及び実行結果を外部にモニタ出力するモニタ手段をさらに備えたことを特徴とするマルチプロセッサシステム。
【請求項１４】
少なくとも１つのメインプロセッサと、複数のサブプロセッサとを備えたマルチプロセッサシステムの制御方法であって、
前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得し、
前記処理コマンドの各サブプロセッサへの転送、及び前記実行結果の前記メインプロセッサへの転送を調停し、
前記メインプロセッサにより複数の処理シーケンスが指定される場合、前記処理コマンドの発行及び前記実行結果の取得を、処理シーケンス毎に並列に行う、
ことを含むマルチプロセッサシステムの制御方法。
【請求項１５】
請求項１４において、
前記処理コマンドに、前記処理を指定するための処理ＩＤを含め、
前記実行結果に、前記処理ＩＤと前記処理のステータスとを含めることを特徴としたマルチプロセッサシステムの制御方法。
【請求項１６】
請求項１４又は１５において、
前記取得した実行結果を順次記憶することを特徴としたマルチプロセッサシステムの制御方法。
【請求項１７】
請求項１６において、
前記実行結果にその転送元を示すサブプロセッサＩＤを付加し、
前記サブプロセッサＩＤと前記実行結果とを対応付けて記憶することを特徴としたマルチプロセッサシステムの制御方法。
【請求項１８】
請求項１４〜１７のいずれか一項において、
前記調停した処理コマンド及び実行結果を、外部にモニタ出力することを特徴とするマルチプロセッサシステムの制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
上記の目的を達成するため、本発明の一態様に係るマルチプロセッサシステムは、少なくとも１つのメインプロセッサと、複数のサブプロセッサと、前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得する実行制御回路と、前記実行制御回路と各サブプロセッサの間で、前記処理コマンド及び実行結果の転送を調停する調停回路とを備える。前記調停手段は、前記処理コマンドを前記実行制御手段から各サブプロセッサへ転送するためのコントロールバスを、制御するコントロールバス制御手段と、前記実行結果を各サブプロセッサから前記実行制御手段へ転送するためのステータスバスに対するアクセスを、調停するステータスバス調停手段とを含む。
また、本発明の他の一態様に係るマルチプロセッサシステムは、少なくとも１つのメインプロセッサと、複数のサブプロセッサと、前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得する、複数の実行制御手段と、各実行制御手段と各サブプロセッサの間で、前記処理コマンド及び実行結果の転送を調停する調停手段とを備える。前記調停手段は、前記処理コマンドを各実行制御手段から各サブプロセッサへ転送するためのコントロールバスに対するアクセスを調停するコントロールバス調停手段と、前記実行結果を各サブプロセッサから各実行制御手段へ転送するためのステータスバスに対するアクセスを調停するステータスバス調停手段とを含む。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
また、本発明の一態様に係るマルチプロセッサシステムの制御方法は、少なくとも１つのメインプロセッサと、複数のサブプロセッサとを備えたマルチプロセッサシステムの制御方法を提供する。この制御方法は、前記メインプロセッサにより指定された処理シーケンスに基づき各サブプロセッサに対する処理コマンドを発行すると共に、各サブプロセッサによる前記処理コマンドに応じた処理の実行結果を取得し、前記処理コマンドの各サブプロセッサへの転送、及び前記実行結果の前記メインプロセッサへの転送を調停し、前記メインプロセッサにより複数の処理シーケンスが指定される場合、前記処理コマンドの発行及び前記実行結果の取得を、処理シーケンス毎に並列に行うことを含む。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００７３
【補正方法】変更
【補正の内容】
【００７３】
また、ＦＩＦＯメモリ制御部３５、コマンドＦＩＦＯ管理部３６、ステータスＦＩＦＯ管理部３７、割込ＦＩＦＯ管理部３８、及び制御レジスタＲＥＧは、それぞれＭＰバスＢ４及びＣＰバスＢ５に接続されている。ＦＩＦＯメモリ制御部３５には、Ｂ３インタフェースＩＦ３を介して、ステータスバスＢ３からの処理ステータスＳＴＳが入力される。また、制御レジスタＲＥＧは、割込ＦＩＦＯ管理部３８により発生された割込信号を、割込インタフェースＩＦ４を介して割込コントローラ６０に与える一方、コマンドＦＩＦＯ管理部３６及びステータスＦＩＦＯ管理部３７により発生された割込信号を制御プロセッサ３１に与える。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７６
【補正方法】変更
【補正の内容】
【００７６】
また、制御レジスタＲＥＧには、ＦＩＦＯメモリＭＥＭ３上に割り当てた各ＦＩＦＯ領域のベースアドレスＢＡ、各ＦＩＦＯ領域に格納可能なデータ段数ＤＥＰ、並びに各ＦＩＦＯ領域に格納されるデータ(すなわち、上述したシーケンス開始コマンドＣＭＤ２２、処理ステータスＳＴＳ、及び割込要因データＤＩ)のデータビット幅ＷＩＤが記憶されている。この内、段数ＤＥＰ及びデータビット幅ＷＩＤは、各ＦＩＦＯ管理部３６〜３８に与えられる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
また、制御プロセッサ３１によるシーケンス開始コマンドＣＭＤ２２の読出アクセスが発生した場合(ステップＳ２３１)、アドレス／データ変換回路２０２＿３は、ベースアドレスＢＡ＿Ｃに、コマンドＦＩＦＯ領域ＡＲ＿Ｃの読出ポインタＲＰ＿Ｃの値を加算して、ＦＩＦＯメモリＭＥＭ３上の読出アドレスＲＡを発生する(ステップＳ２３２)。同様にして、処理ステータスＳＴＳの読出アクセスが発生した場合(ステップＳ７２１)、アドレス／データ変換回路２０２＿３は、ベースアドレスＢＡ＿Ｓに、ステータスＦＩＦＯ領域ＡＲ＿Ｓの読出ポインタＲＰ＿Ｓの値を加算して読出アドレスＲＡを発生する(ステップＳ７２２)。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００８５
【補正方法】変更
【補正の内容】
【００８５】
また、メインプロセッサ１０による割込要因データＤＩの読出アクセスが発生した場合(ステップＳ１３３１)、ＦＩＦＯメモリ制御部３５内のアドレス／データ変換回路２０２＿２は、ベースアドレスＢＡ＿Ｉに、割込ＦＩＦＯ領域ＡＲ＿Ｉの読出ポインタＲＰ＿Ｉの値を加算して読出アドレスＲＡを発生する(ステップＳ１３３２)。同様にして、シーケンス開始コマンドＣＭＤ２２の書込アクセスが発生した場合(ステップＳ２２１)、アドレス／データ変換回路２０２＿２は、ベースアドレスＢＡ＿Ｃに、コマンドＦＩＦＯ領域ＡＲ＿Ｃの書込ポインタＷＰ＿Ｃの値を加算して書込アドレスＷＡを発生する(ステップＳ２２２)。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００９１
【補正方法】変更
【補正の内容】
【００９１】
一方、上記の処理により書き込まれた処理コマンドＣＭＤを読み出す場合(すなわち、読出アドレスＲＡ＝"０ｘ０５０Ａ"に対する読出を行う場合)、アドレス／データ変換回路２０２＿３が、ＦＩＦＯメモリＭＥＭ３からデータバス[３１：１６]を介して１６ビット分の処理コマンドＣＭＤ[１５：０]を読み出す。
【国際調査報告】
2010016169.tif 000027
2010016169.tif 000028
2010016169.tif 000029
2010016169.tif 000030
2010016169.tif 000031
2010016169.tif 000032
2010016169.tif 000033