(57)【要約】【課題】  並列処理時の共有メモリへのアクセス数を減少させたマルチプロセッサシステムを提供する。【解決手段】  サブプロセッサユニット２０，３０から共通にアクセス可能なローカルコントローラ３００を設置し、ローカルコントローラ３００に、並列処理における個々の処理のステータス情報を記憶するフラグレジスタ３１０を備える。サブプロセッサユニット２０，３０は、ローカルコントローラ３００からステータス情報を読み取りつつ、並列処理を実行する。【選択図】        図１
2006099206.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理を並列に実行するマルチプロセッサシステムであって、
前記複数の処理を並列に実行するよう命令を出力するメインプロセッサユニットと、
前記命令を受けて前記複数の処理を並列に実行する複数のサブプロセッサユニットと、
前記複数のサブプロセッサユニットと接続されており、個々の処理のステータスを示すステータス情報を記憶するローカルコントローラと、
を備え、
各サブプロセッサユニットは、前記ステータス情報を前記ローカルコントローラから読み取り、実行が開始されていない処理が存在する場合には当該処理の実行を開始するとともに、当該処理の実行が開始されたことを示すように前記ステータス情報を変更させる、
マルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムであって、
前記ローカルコントローラは、前記メインプロセッサユニットと接続されており、
前記サブプロセッサユニットは、前記ローカルコントローラを経由して、前記メインプロセッサユニットから、前記個々の処理の処理情報を受信して当該処理を実行し、
前記ローカルコントローラは、前記処理情報を経由する際に、前記個々の処理の前記ステータス情報を書き換える、
マルチプロセッサシステム。
【請求項３】
請求項２記載のマルチプロセッサシステムであって、
前記メインプロセッサユニットと前記サブプロセッサユニットとの間で前記処理情報を送受信するローカルバスと、前記命令を送受信するシステムバスとが、別個に設けられている、
マルチプロセッサシステム。
【請求項４】
請求項２又は３記載のマルチプロセッサシステムであって、
前記処理情報は、処理の対象である処理対象データと、該処理対象データに対する処理の内容を示す処理内容指示とを含む、
マルチプロセッサシステム。
【請求項５】
請求項１ないし４のいずれかに記載のマルチプロセッサシステムであって、
前記マルチプロセッサシステムは、画像データで表わされる画像領域を複数のバンドに区分し、バンド毎に、前記画像データの異なる色成分に異なる処理をそれぞれ実行し、1つのバンドの処理を終えた後に、次のバンドの処理を実行するためのシステムである、
マルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理を実行するマルチプロセッサシステムに関する。
【背景技術】
【０００２】
図４は、従来のマルチプロセッサシステムを示す説明図である。従来のマルチプロセッサシステムは、並列処理を実行するよう命令を出力するメインプロセッサユニット１０Ａと、命令を受けて並列処理を実行するサブＣＰＵ２５Ａ〜４５Ａとを備えている。メインプロセッサユニット１０Ａは、メインＣＰＵ１５ＡとＤＲＡＭ１４Ａを備えている。メインプロセッサユニット１０Ａは、ＤＲＡＭ１４Ａに、サブＣＰＵ２５Ａ〜４５Ａが並列処理を実行する際に必要となる処理情報を保存する。更に、メインプロセッサユニット１０Ａは、ＤＲＡＭ１４Ａに、並列処理される個々の処理のステータスを示すステータス情報を保存し、管理する。サブＣＰＵ２５Ａ〜４５Ａは、ＤＲＡＭ１４Ａにアクセスし、ステータス情報を一定間隔で確認しながら並列処理を実行する。また、サブＣＰＵ２５Ａ〜４５Ａは、並列処理における個々の処理を実行する際、ＤＲＡＭ１４Ａから処理情報を読み込み、処理を実行する。サブＣＰＵ２５Ａ〜４５Ａは、処理終了後、終了情報をＤＲＡＭ１４Ａに書きこむ。
【０００３】
【特許文献１】特開平６−２４３０３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のマルチプロセッサシステムでは、ステータス情報の確認などによって、メインプロセッサユニット１０ＡとサブＣＰＵ２５Ａ〜４５Ａの共有メモリとしてのＤＲＡＭ１４ａへのアクセスが頻発するという問題があった。アクセスが頻発すると、例えば、サブＣＰＵ２５Ａ〜４５Ａが、ＤＲＡＭ１４Ａから処理情報を読み込み、処理を実行しようとしても、他のサブＣＰＵ２５Ａ〜４５ＡがＤＲＡＭ１４Ａのステータス情報の確認を行なっている最中であるため、処理の実行を待たなければならないという事態も発生する。つまり、アクセスが頻発すると、並列処理の処理効率も悪くなる。
【０００５】
本発明は、上記した問題点を解決するためになされたものであり、並列処理時の共有メモリへのアクセス数を減少させたマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題の少なくとも一部を解決するため、本発明によるマルチプロセッサシステムは、
複数の処理を並列に実行するマルチプロセッサシステムであって、
前記複数の処理を並列に実行するよう命令を出力するメインプロセッサユニットと、
前記命令を受けて前記複数の処理を並列に実行する複数のサブプロセッサユニットと、
前記複数のサブプロセッサユニットと接続されており、個々の処理のステータスを示すステータス情報を記憶するローカルコントローラと、
を備え、
各サブプロセッサユニットは、前記ステータス情報を前記ローカルコントローラから読み取り、実行が開始されていない処理が存在する場合には当該処理の実行を開始するとともに、当該処理の実行が開始されたことを示すように前記ステータス情報を変更させる
ことを特徴とする。
【０００７】
本発明によれば、サブプロセッサユニットがステータス情報をローカルコントローラから読み取るため、サブプロセッサユニットの共有メモリへのアクセス数を減少させることができる。サブプロセッサユニットが、個々の処理の処理情報を共有メモリから受信しなければならない場合であっても、共有メモリへのアクセス数が少ないので、円滑に処理情報を受信することができ、複数の処理を並列に実行する処理（以下、並列処理と呼ぶ）の処理効率を向上させることができる。
【０００８】
前記ローカルコントローラは、前記メインプロセッサユニットと接続されており、
前記サブプロセッサユニットは、前記ローカルコントローラを経由して、前記メインプロセッサユニットから、前記個々の処理の処理情報を受信して当該処理を実行し、
前記ローカルコントローラは、前記処理情報を経由する際に、前記個々の処理の前記ステータス情報を書き換えるものとしても良い。
【０００９】
これによれば、ローカルコントローラは、処理情報を経由する際にステータス情報を書き換えるので、サブプロセッサユニットなどからのステータス情報の書き換え指示を受ける必要もなく、ステータス情報の書き換えを簡便に行なうことができる。
【００１０】
前記メインプロセッサユニットと前記サブプロセッサユニットとの間で前記処理情報を送受信するローカルバスと、前記命令を送受信するシステムバスとが、別個に設けられているものとしても良い。
【００１１】
これによれば、ローカルバスとシステムバスという２つのバスを使ってデータの送受信を行なうので、１つのバスでデータの送受信を行なうことに比べ、円滑に送受信を行なうことができる。
【００１２】
前記処理情報は、処理の対象である処理対象データと、該処理対象データに対する処理の内容を示す処理内容指示とを含むものとしても良い。
【００１３】
これによれば、サブプロセッサユニットは、並列処理時に、処理対象データ毎に異なる処理を行なうことが可能である。
【００１４】
前記マルチプロセッサシステムは、画像データで表わされる画像領域を複数のバンドに区分し、バンド毎に、前記画像データの異なる色成分に異なる処理をそれぞれ実行し、1つのバンドの処理を終えた後に、次のバンドの処理を実行するためのシステムであるものとしても良い。
【００１５】
これによれば、バンド毎の並列処理を複数回繰り返して、画像データの並列処理を完了させることができる。
【００１６】
なお本発明は他にも種々の形態で実現可能である。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明の一実施例としてのマルチプロセッサシステムを示すブロック図である。マルチプロセッサシステムは、並列処理を実行するよう命令を出力するメインプロセッサユニット１０と、命令を受けて並列処理を実行するサブプロセッサユニット２０，３０と、共有メモリ１００と、ローカルコントローラ３００と、システムバス２００と、ローカルバス４００〜４０３を備えている。ローカルコントローラ３００は、入出力コントローラであり、フラグレジスタ３１０を備えている。フラグレジスタ３１０は、並列処理される個々の処理のステータスを示すステータス情報をフラグとして記憶している。フラグは、図１において６個存在し、「０」又は「１」を示している。
【００１８】
メインプロセッサユニット１０は、システムバスＩ／Ｆ１１と、ＩＲＡＭ（Ｉｎｔｅｌｌｉｇｅｎｔ  ＲＡＭ）１３と、ＤＲＡＭ１４と、メインＣＰＵ１５と、ローカルバスＩ／Ｆ１２とを備えている。サブプロセッサユニット２０，３０も、メインプロセッサユニット１０と同じ構成である。
【００１９】
システムバス２００は、共有メモリ１００と、各プロセッサユニット１０，２０，３０のシステムバスＩ／Ｆ１１，２１，３１とを互いに接続している。ローカルバス４００は、ＤＲＡＭ１４と、ローカルコントローラ３００とを接続している。ローカルバス４０１，４０２，４０３は、それぞれ、ローカルバスＩ／Ｆ１２，２２，３２と、ローカルコントローラ３００とを接続している。
【００２０】
本実施例のマルチプロセッサシステムでは、画像処理のうち、色変換処理とハーフトーン処理を実行する。図２は、画像処理対象の画像データＧＤを示す説明図である。この画像データＧＤは、７バンドで構成されている。1バンドは２ラインである。マルチプロセッサシステムは、画像データＧＤの画像処理を、１バンド単位で順次実行する。メインＣＰＵ１５が色変換処理をした後、サブＣＰＵ２５，３５がハーフトーン処理を並列処理で実行する。以下、具体的に説明する。
【００２１】
メインＣＰＵ１５は、バンド１のデータの色変換処理を実行し、Ｒ（レッド）、Ｇ（グリーン）、Ｂ（ブルー）の３色で表現されているデータを、Ｃ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロー）、Ｋ（ブラック）、ＬＣ（ライトシアン）、ＬＭ（ライトマゼンタ）の６色で表現されるデータに変換する。そして、メインＣＰＵ１５は、色変換処理後のバンド１の６色分のデータと、そのデータに対する処理の内容を示す処理内容指示とを処理情報として、ＤＲＡＭ１４の所定のアドレスに保存する（図１の矢印Ａ１）。
【００２２】
図３は、処理情報ＰＩを示す説明図である。処理情報ＰＩは、識別番号ＰＩＤと色別バンドデータＣＢＤと処理内容指示ＣＩを備える。メインＣＰＵ１５は、色変換処理後のバンド１の６色分のデータを、色別のデータに編集し、色別バンドデータＣＢＤとして保存する。そして、色別バンドデータＣＢＤ毎に、処理内容指示ＣＩを指定する。図中の「Ｄ」は、ディザ法でハーフトーン処理することを示し、図中の「Ｅ」は、誤差拡散法でハーフトーン処理することを示す。処理内容指示ＣＩは、色別に予め定められていても良いし、ユーザからの入力に従って指定するものとしても良い。更に、メインＣＰＵ１５は、色別バンドデータＣＢＤ毎に識別番号ＰＩＤを割り振る。色別バンドデータＣＢＤは、本発明の処理対象データに相当する。ここでは、処理対象データは６個であるが、６個とは限らず、何個あっても良い。マルチプロセッサシステムは、各色別バンドデータＣＢＤに対するハーフトーン処理を並列処理で実行する。
【００２３】
以下、図１を用いて説明する。メインＣＰＵ１５は、１バンド分の処理情報ＰＩを保存すると、ローカルコントローラ３００のフラグレジスタ３１０に、色別バンドデータ数分、つまり６個分のフラグを用意させる。そして、各フラグと、各色の処理情報ＰＩを記憶するアドレスと、６つの識別番号ＰＩＤとの対応関係をＤＲＡＭ１４内に設定する。フラグは、「０」であれば未処理であることを示し、「１」であれば処理中または処理済であること（即ち処理が開始されたこと）を示す。並列処理に移行する前のフラグの値は、メインＣＰＵ１５からの指定により、すべて「０」にセットされている。
【００２４】
メインＣＰＵ１５は、６個分のフラグの設定が完了すると、システムバス２００を使用し、サブプロセッサユニット２０，３０に対して並列処理を実行するよう命令する（矢印Ａ２ａ、Ａ２ｂ）。
【００２５】
サブプロセッサユニット２０，３０は、メインプロセッサユニット１０から命令を受けると、並列処理を開始する。具体的には、まずフラグレジスタ３１０のフラグの値を確認する（の矢印Ａ３ａ、Ａ３ｂ）。そして、値が「０」であるフラグに関連したＤＲＡＭ１４のアドレスから、１色分の処理情報ＰＩを受信する（矢印Ａ４ａ、Ａ４ｂ）。処理情報ＰＩの受信の際には、ローカルバス４００を使用し、ローカルコントローラ３００を経由して、ローカルバス４０２またはローカルバス４０３を使用する。
【００２６】
ローカルコントローラ３００は、１色分の処理情報ＰＩを転送する際、処理情報ＰＩに含まれている識別番号ＰＩＤをデコーダ（図示せず）で認識し、その識別番号ＰＩＤに関連したフラグの値を「１」に変更する。フラグの値を変更する方法としては、これ以外にも様々に考えられる。例えば、サブプロセッサユニット２０，３０がローカルバスＩ／Ｆ２２，３２を介して１色分の処理情報ＰＩを読み込む際に、サブプロセッサユニット２０，３０が、その色の識別番号ＰＩＤに応じたローカルコントローラ３００上のフラグの値を「１」に変更させるものとしても良い。更に、ソフトウェアでフラグの値を変更するものとしても良い。
【００２７】
サブプロセッサユニット２０，３０のサブＣＰＵ２５，３５は、受信した１色分の処理情報ＰＩに含まれる色別バンドデータＣＢＤを処理内容指示ＣＩで示された指示に従い処理する。そして、処理済データを、システムバス２００を使用し、共有メモリ１００に保存する（矢印Ａ５ａ、Ａ５ｂ）。
【００２８】
処理が終わったサブプロセッサユニット２０，３０は、再度、フラグレジスタ３１０のフラグの値を確認する（矢印Ａ３ａ、Ａ３ｂ）。そして、値が「０」であるフラグに関連したアドレスから、処理情報ＰＩを受信し（矢印Ａ４ａ、Ａ４ｂ）、受信した処理情報ＰＩの識別番号ＰＩＤに関連したフラグの値を「１」に変更し、処理情報ＰＩの色別バンドデータＣＢＤを処理内容指示ＣＩで示された指示に従い処理する。そして、処理済データを、共有メモリ１００に保存する（矢印Ａ５ａ、Ａ５ｂ）。サブプロセッサユニット２０，３０は、フラグレジスタ３１０のフラグの値が全て「１」になるまで、これらの処理を繰り返す。
【００２９】
フラグレジスタ３１０のフラグの値が全て「１」になったことを確認したサブプロセッサユニット２０，３０は、システムバス２００を使用して、メインプロセッサユニット１０に対して、並列処理が終了したことを示す割り込み信号を出力する。システムバスＩ／Ｆ１１にはＡＮＤ回路（図示せず）が備えられており、サブプロセッサユニット２０，３０の両方から並列処理が終了したことを示す割り込み信号を受信したら、始めてメインプロセッサユニット１０に対して割り込みが発生する構成となっている。メインプロセッサユニット１０は、割り込みが発生したら、サブプロセッサユニット２０，３０の割り込み信号をクリアする。
【００３０】
以上により、マルチプロセッサシステムは、図２の画像データＧＤのバンド１の色変換処理とハーフトーン処理を実行する。メインプロセッサユニット１０は、サブプロセッサユニット２０，３０がハーフトーン処理を実行している間、画像データＧＤのバンド２の色変換処理を実行している。メインプロセッサユニット１０は、サブプロセッサユニット２０，３０の割り込み信号をクリアしたら、色変換処理後のバンド２のデータと、そのデータに対する処理の内容を示す処理内容指示ＣＩとを処理情報ＰＩとしてＤＲＡＭ１４に保存する（図１の矢印Ａ１）。保存したら、サブプロセッサユニット２０，３０に対して並列処理を実行するよう命令する（矢印Ａ２ａ、Ａ２ｂ）。サブプロセッサユニット２０，３０は、バンド２のハーフトーン処理をバンド１の場合と同様に並列処理で実行する。
【００３１】
以上のメインプロセッサユニット１０による色変換処理と、サブプロセッサユニット２０，３０によるハーフトーン処理をバンド１のデータからバンド７のデータまで繰り返すことで、マルチプロセッサシステムは、画像データＧＤの画像処理を実行する。
【００３２】
以上のように、本実施例では、ステータス情報（フラグ）をローカルコントローラ３００に記憶させたので、サブプロセッサユニット２０，３０は、フラグをローカルコントローラ３００から読み取ることができる（矢印Ａ３ａ、Ａ３ｂ）。これにより、サブプロセッサユニット２０，３０からメインプロセッサユニット１０のＤＲＡＭ１４へのアクセス数を減少させることができる。サブプロセッサユニット２０，３０は、ＤＲＡＭ１４へのアクセス数が少ないので、ＤＲＡＭ１４から円滑に処理情報ＰＩを受信することができ、並列処理の処理効率を向上させることができる。
【００３３】
また、本実施例では、ローカルコントローラ３００が１色分の処理情報ＰＩを転送する際に、自身のハードウェア回路でフラグを書き換えるので、フラグの書き換えを簡便に高速で行なうことができる。更に、本実施例では、ローカルバス４００〜４０３を使って処理情報ＰＩなどの送受信を行なうので、システムバス２００によるデータの送受信を邪魔しない。また、処理情報ＰＩに処理内容指示ＣＩを含めることにより、色別バンドデータＣＢＤ毎に異なる方法で処理を行なうことが可能である。
その他の実施例：
【００３４】
（１）上記実施例では、サブプロセッサユニットは２個であるが、何個あっても良い。また、上記実施例では、メインプロセッサユニット１０は並列処理以外の色変換処理を行なうものとしたが、メインプロセッサユニット１０もサブプロセッサユニット２０，３０と共に並列処理（上記実施例ではハーフトーン処理）を行なうものとしても良い。
【００３５】
（２）上記実施例では、並列処理の例として画像処理を示しているが、マルチプロセッサシステムによって実行可能な並列処理は画像処理に限らず様々である。
【００３６】
（３）上記実施例では、処理情報ＰＩは識別番号ＰＩＤと色別バンドデータＣＢＤと処理内容指示ＣＩを備えるものとしたが、処理情報ＰＩはこれらの一部のみを備えるものであっても良い。例えば、処理情報ＰＩは色別バンドデータＣＢＤのみで、色別バンドデータＣＢＤに対する処理内容はサブプロセッサユニット２０，３０で記憶しているものとしても良い。処理内容がすべての色別バンドデータＣＢＤに対して同じである場合などは、特に、サブプロセッサユニット２０，３０で記憶しているものとしても良い。
【００３７】
（４）上記実施例では、メインＣＰＵ１５は、システムバス２００を使用し、サブプロセッサユニット２０，３０に対して並列処理を実行するよう命令したが（矢印Ａ２ａ、Ａ２ｂ）、ローカルバス４０１〜４０３を使用し、ローカルコントローラ３００を経由して、命令するものとしても良い。また、サブプロセッサユニット２０，３０は、システムバス２００を使用して、メインプロセッサユニット１０に対して、並列処理が終了したことを示す割り込み信号を出力したが、この場合も、ローカルバス４０１〜４０３を使用し、ローカルコントローラ３００を経由して、割り込み信号を出力するものとしても良い。または、ローカルバス４０１〜４０３やローカルバスＩ／Ｆ１２，２２，３２は備えず、ローカルコントローラ３００はシステムバス２００上にあるものとしても良い。ローカルコントローラ３００は、サブプロセッサユニット２０，３０から共通にアクセス可能であれば良い。
【００３８】
（５）上記実施例では、ローカルコントローラ３００は、処理情報ＰＩを転送する際、処理情報ＰＩの識別番号ＰＩＤに関連したフラグの値を「１」に変更していたが、フラグの値を変更するタイミングはこれに限らない。更に、ステータス情報は、「０」か「１」かのフラグに限らず、様々に設定可能である。例えば、ステータス情報は、「０」か「１」か「２」の値であり、「０」であれば未処理で、「１」であれば処理中で、「２」であれば処理済であることを示すものであっても良い。このようなステータス情報は、次のように実現可能である。即ち、ローカルコントローラ３００が、処理情報ＰＩを転送する際、処理情報ＰＩの識別番号ＰＩＤに応じたフラグの値を「１」に変更する。そして、サブプロセッサユニット２０，３０が、色別バンドデータＣＢＤに対する処理を終えた際に、処理済の色別バンドデータＣＢＤの識別番号ＰＩＤを含む終了情報をローカルコントローラ３００に対して送信し、ローカルコントローラ３００がフラグの値を「２」に変更するものとしても良い。
【００３９】
（６）上記実施例では、サブプロセッサユニット２０，３０が、それぞれＤＲＡＭ２４，３４を備えているが、これらは備えていなくても良い。また、ローカルバス４００やＤＲＡＭ１４も備えていなくても良い。その場合、並列処理される全ての処理に関する処理情報ＰＩは、予めメインプロセッサユニット１０がシステムバス２００を使ってサブプロセッサユニット２０，３０に送信しておくものとしても良い。つまり、サブプロセッサユニット２０，３０が、並列処理前または処理中に処理情報ＰＩを取得できれば良い。フラグは、並列処理される全ての処理の数だけ存在し、その値は、サブプロセッサユニット２０，３０が、自身が処理する処理対象データの識別番号ＰＩＤに応じて変更すれば良い。このようにすれば、並列処理時のＤＲＡＭ１４へのアクセス数を更に減少させることができる。
【００４０】
以上、実施例に基づき本発明に係るマルチプロセッサシステムを説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれることはもちろんである。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施例としてのマルチプロセッサシステムを示すブロック図。
【図２】画像処理対象の画像データＧＤを示す説明図。
【図３】処理情報ＰＩを示す説明図。
【図４】従来のマルチプロセッサシステムを示す説明図。
【符号の説明】
【００４２】
１０，１０Ａ...メインプロセッサユニット
１５，１５Ａ...メインＣＰＵ
２０，３０...サブプロセッサユニット
２５Ａ〜４５Ａ...サブＣＰＵ
２５，３５...サブＣＰＵ
１１，２１，３１...システムバスＩ／Ｆ
１２，２２，３２...ローカルバスＩ／Ｆ
１３，２３，３３...ＩＲＡＭ
１４，２４，３４......ＤＲＡＭ
１００...共有メモリ
２００...システムバス
３００...ローカルコントローラ
３１０...フラグレジスタ
４００...ローカルバス
４０１，４０２，４０３...ローカルバス
ＧＤ...画像データ
【図１】
2006099206.tif 000003
【図２】
2006099206.tif 000004
【図３】
2006099206.tif 000005
【図４】
2006099206.tif 000006