説明

マルチプロセッサシステム

【課題】 並列処理時の共有メモリへのアクセス数を減少させたマルチプロセッサシステムを提供する。
【解決手段】 サブプロセッサユニット20,30から共通にアクセス可能なローカルコントローラ300を設置し、ローカルコントローラ300に、並列処理における個々の処理のステータス情報を記憶するフラグレジスタ310を備える。サブプロセッサユニット20,30は、ローカルコントローラ300からステータス情報を読み取りつつ、並列処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、並列処理を実行するマルチプロセッサシステムに関する。
【背景技術】
【0002】
図4は、従来のマルチプロセッサシステムを示す説明図である。従来のマルチプロセッサシステムは、並列処理を実行するよう命令を出力するメインプロセッサユニット10Aと、命令を受けて並列処理を実行するサブCPU25A〜45Aとを備えている。メインプロセッサユニット10Aは、メインCPU15AとDRAM14Aを備えている。メインプロセッサユニット10Aは、DRAM14Aに、サブCPU25A〜45Aが並列処理を実行する際に必要となる処理情報を保存する。更に、メインプロセッサユニット10Aは、DRAM14Aに、並列処理される個々の処理のステータスを示すステータス情報を保存し、管理する。サブCPU25A〜45Aは、DRAM14Aにアクセスし、ステータス情報を一定間隔で確認しながら並列処理を実行する。また、サブCPU25A〜45Aは、並列処理における個々の処理を実行する際、DRAM14Aから処理情報を読み込み、処理を実行する。サブCPU25A〜45Aは、処理終了後、終了情報をDRAM14Aに書きこむ。
【0003】
【特許文献1】特開平6−243031号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のマルチプロセッサシステムでは、ステータス情報の確認などによって、メインプロセッサユニット10AとサブCPU25A〜45Aの共有メモリとしてのDRAM14aへのアクセスが頻発するという問題があった。アクセスが頻発すると、例えば、サブCPU25A〜45Aが、DRAM14Aから処理情報を読み込み、処理を実行しようとしても、他のサブCPU25A〜45AがDRAM14Aのステータス情報の確認を行なっている最中であるため、処理の実行を待たなければならないという事態も発生する。つまり、アクセスが頻発すると、並列処理の処理効率も悪くなる。
【0005】
本発明は、上記した問題点を解決するためになされたものであり、並列処理時の共有メモリへのアクセス数を減少させたマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題の少なくとも一部を解決するため、本発明によるマルチプロセッサシステムは、
複数の処理を並列に実行するマルチプロセッサシステムであって、
前記複数の処理を並列に実行するよう命令を出力するメインプロセッサユニットと、
前記命令を受けて前記複数の処理を並列に実行する複数のサブプロセッサユニットと、
前記複数のサブプロセッサユニットと接続されており、個々の処理のステータスを示すステータス情報を記憶するローカルコントローラと、
を備え、
各サブプロセッサユニットは、前記ステータス情報を前記ローカルコントローラから読み取り、実行が開始されていない処理が存在する場合には当該処理の実行を開始するとともに、当該処理の実行が開始されたことを示すように前記ステータス情報を変更させる
ことを特徴とする。
【0007】
本発明によれば、サブプロセッサユニットがステータス情報をローカルコントローラから読み取るため、サブプロセッサユニットの共有メモリへのアクセス数を減少させることができる。サブプロセッサユニットが、個々の処理の処理情報を共有メモリから受信しなければならない場合であっても、共有メモリへのアクセス数が少ないので、円滑に処理情報を受信することができ、複数の処理を並列に実行する処理(以下、並列処理と呼ぶ)の処理効率を向上させることができる。
【0008】
前記ローカルコントローラは、前記メインプロセッサユニットと接続されており、
前記サブプロセッサユニットは、前記ローカルコントローラを経由して、前記メインプロセッサユニットから、前記個々の処理の処理情報を受信して当該処理を実行し、
前記ローカルコントローラは、前記処理情報を経由する際に、前記個々の処理の前記ステータス情報を書き換えるものとしても良い。
【0009】
これによれば、ローカルコントローラは、処理情報を経由する際にステータス情報を書き換えるので、サブプロセッサユニットなどからのステータス情報の書き換え指示を受ける必要もなく、ステータス情報の書き換えを簡便に行なうことができる。
【0010】
前記メインプロセッサユニットと前記サブプロセッサユニットとの間で前記処理情報を送受信するローカルバスと、前記命令を送受信するシステムバスとが、別個に設けられているものとしても良い。
【0011】
これによれば、ローカルバスとシステムバスという2つのバスを使ってデータの送受信を行なうので、1つのバスでデータの送受信を行なうことに比べ、円滑に送受信を行なうことができる。
【0012】
前記処理情報は、処理の対象である処理対象データと、該処理対象データに対する処理の内容を示す処理内容指示とを含むものとしても良い。
【0013】
これによれば、サブプロセッサユニットは、並列処理時に、処理対象データ毎に異なる処理を行なうことが可能である。
【0014】
前記マルチプロセッサシステムは、画像データで表わされる画像領域を複数のバンドに区分し、バンド毎に、前記画像データの異なる色成分に異なる処理をそれぞれ実行し、1つのバンドの処理を終えた後に、次のバンドの処理を実行するためのシステムであるものとしても良い。
【0015】
これによれば、バンド毎の並列処理を複数回繰り返して、画像データの並列処理を完了させることができる。
【0016】
なお本発明は他にも種々の形態で実現可能である。
【発明を実施するための最良の形態】
【0017】
図1は、本発明の一実施例としてのマルチプロセッサシステムを示すブロック図である。マルチプロセッサシステムは、並列処理を実行するよう命令を出力するメインプロセッサユニット10と、命令を受けて並列処理を実行するサブプロセッサユニット20,30と、共有メモリ100と、ローカルコントローラ300と、システムバス200と、ローカルバス400〜403を備えている。ローカルコントローラ300は、入出力コントローラであり、フラグレジスタ310を備えている。フラグレジスタ310は、並列処理される個々の処理のステータスを示すステータス情報をフラグとして記憶している。フラグは、図1において6個存在し、「0」又は「1」を示している。
【0018】
メインプロセッサユニット10は、システムバスI/F11と、IRAM(Intelligent RAM)13と、DRAM14と、メインCPU15と、ローカルバスI/F12とを備えている。サブプロセッサユニット20,30も、メインプロセッサユニット10と同じ構成である。
【0019】
システムバス200は、共有メモリ100と、各プロセッサユニット10,20,30のシステムバスI/F11,21,31とを互いに接続している。ローカルバス400は、DRAM14と、ローカルコントローラ300とを接続している。ローカルバス401,402,403は、それぞれ、ローカルバスI/F12,22,32と、ローカルコントローラ300とを接続している。
【0020】
本実施例のマルチプロセッサシステムでは、画像処理のうち、色変換処理とハーフトーン処理を実行する。図2は、画像処理対象の画像データGDを示す説明図である。この画像データGDは、7バンドで構成されている。1バンドは2ラインである。マルチプロセッサシステムは、画像データGDの画像処理を、1バンド単位で順次実行する。メインCPU15が色変換処理をした後、サブCPU25,35がハーフトーン処理を並列処理で実行する。以下、具体的に説明する。
【0021】
メインCPU15は、バンド1のデータの色変換処理を実行し、R(レッド)、G(グリーン)、B(ブルー)の3色で表現されているデータを、C(シアン)、M(マゼンタ)、Y(イエロー)、K(ブラック)、LC(ライトシアン)、LM(ライトマゼンタ)の6色で表現されるデータに変換する。そして、メインCPU15は、色変換処理後のバンド1の6色分のデータと、そのデータに対する処理の内容を示す処理内容指示とを処理情報として、DRAM14の所定のアドレスに保存する(図1の矢印A1)。
【0022】
図3は、処理情報PIを示す説明図である。処理情報PIは、識別番号PIDと色別バンドデータCBDと処理内容指示CIを備える。メインCPU15は、色変換処理後のバンド1の6色分のデータを、色別のデータに編集し、色別バンドデータCBDとして保存する。そして、色別バンドデータCBD毎に、処理内容指示CIを指定する。図中の「D」は、ディザ法でハーフトーン処理することを示し、図中の「E」は、誤差拡散法でハーフトーン処理することを示す。処理内容指示CIは、色別に予め定められていても良いし、ユーザからの入力に従って指定するものとしても良い。更に、メインCPU15は、色別バンドデータCBD毎に識別番号PIDを割り振る。色別バンドデータCBDは、本発明の処理対象データに相当する。ここでは、処理対象データは6個であるが、6個とは限らず、何個あっても良い。マルチプロセッサシステムは、各色別バンドデータCBDに対するハーフトーン処理を並列処理で実行する。
【0023】
以下、図1を用いて説明する。メインCPU15は、1バンド分の処理情報PIを保存すると、ローカルコントローラ300のフラグレジスタ310に、色別バンドデータ数分、つまり6個分のフラグを用意させる。そして、各フラグと、各色の処理情報PIを記憶するアドレスと、6つの識別番号PIDとの対応関係をDRAM14内に設定する。フラグは、「0」であれば未処理であることを示し、「1」であれば処理中または処理済であること(即ち処理が開始されたこと)を示す。並列処理に移行する前のフラグの値は、メインCPU15からの指定により、すべて「0」にセットされている。
【0024】
メインCPU15は、6個分のフラグの設定が完了すると、システムバス200を使用し、サブプロセッサユニット20,30に対して並列処理を実行するよう命令する(矢印A2a、A2b)。
【0025】
サブプロセッサユニット20,30は、メインプロセッサユニット10から命令を受けると、並列処理を開始する。具体的には、まずフラグレジスタ310のフラグの値を確認する(の矢印A3a、A3b)。そして、値が「0」であるフラグに関連したDRAM14のアドレスから、1色分の処理情報PIを受信する(矢印A4a、A4b)。処理情報PIの受信の際には、ローカルバス400を使用し、ローカルコントローラ300を経由して、ローカルバス402またはローカルバス403を使用する。
【0026】
ローカルコントローラ300は、1色分の処理情報PIを転送する際、処理情報PIに含まれている識別番号PIDをデコーダ(図示せず)で認識し、その識別番号PIDに関連したフラグの値を「1」に変更する。フラグの値を変更する方法としては、これ以外にも様々に考えられる。例えば、サブプロセッサユニット20,30がローカルバスI/F22,32を介して1色分の処理情報PIを読み込む際に、サブプロセッサユニット20,30が、その色の識別番号PIDに応じたローカルコントローラ300上のフラグの値を「1」に変更させるものとしても良い。更に、ソフトウェアでフラグの値を変更するものとしても良い。
【0027】
サブプロセッサユニット20,30のサブCPU25,35は、受信した1色分の処理情報PIに含まれる色別バンドデータCBDを処理内容指示CIで示された指示に従い処理する。そして、処理済データを、システムバス200を使用し、共有メモリ100に保存する(矢印A5a、A5b)。
【0028】
処理が終わったサブプロセッサユニット20,30は、再度、フラグレジスタ310のフラグの値を確認する(矢印A3a、A3b)。そして、値が「0」であるフラグに関連したアドレスから、処理情報PIを受信し(矢印A4a、A4b)、受信した処理情報PIの識別番号PIDに関連したフラグの値を「1」に変更し、処理情報PIの色別バンドデータCBDを処理内容指示CIで示された指示に従い処理する。そして、処理済データを、共有メモリ100に保存する(矢印A5a、A5b)。サブプロセッサユニット20,30は、フラグレジスタ310のフラグの値が全て「1」になるまで、これらの処理を繰り返す。
【0029】
フラグレジスタ310のフラグの値が全て「1」になったことを確認したサブプロセッサユニット20,30は、システムバス200を使用して、メインプロセッサユニット10に対して、並列処理が終了したことを示す割り込み信号を出力する。システムバスI/F11にはAND回路(図示せず)が備えられており、サブプロセッサユニット20,30の両方から並列処理が終了したことを示す割り込み信号を受信したら、始めてメインプロセッサユニット10に対して割り込みが発生する構成となっている。メインプロセッサユニット10は、割り込みが発生したら、サブプロセッサユニット20,30の割り込み信号をクリアする。
【0030】
以上により、マルチプロセッサシステムは、図2の画像データGDのバンド1の色変換処理とハーフトーン処理を実行する。メインプロセッサユニット10は、サブプロセッサユニット20,30がハーフトーン処理を実行している間、画像データGDのバンド2の色変換処理を実行している。メインプロセッサユニット10は、サブプロセッサユニット20,30の割り込み信号をクリアしたら、色変換処理後のバンド2のデータと、そのデータに対する処理の内容を示す処理内容指示CIとを処理情報PIとしてDRAM14に保存する(図1の矢印A1)。保存したら、サブプロセッサユニット20,30に対して並列処理を実行するよう命令する(矢印A2a、A2b)。サブプロセッサユニット20,30は、バンド2のハーフトーン処理をバンド1の場合と同様に並列処理で実行する。
【0031】
以上のメインプロセッサユニット10による色変換処理と、サブプロセッサユニット20,30によるハーフトーン処理をバンド1のデータからバンド7のデータまで繰り返すことで、マルチプロセッサシステムは、画像データGDの画像処理を実行する。
【0032】
以上のように、本実施例では、ステータス情報(フラグ)をローカルコントローラ300に記憶させたので、サブプロセッサユニット20,30は、フラグをローカルコントローラ300から読み取ることができる(矢印A3a、A3b)。これにより、サブプロセッサユニット20,30からメインプロセッサユニット10のDRAM14へのアクセス数を減少させることができる。サブプロセッサユニット20,30は、DRAM14へのアクセス数が少ないので、DRAM14から円滑に処理情報PIを受信することができ、並列処理の処理効率を向上させることができる。
【0033】
また、本実施例では、ローカルコントローラ300が1色分の処理情報PIを転送する際に、自身のハードウェア回路でフラグを書き換えるので、フラグの書き換えを簡便に高速で行なうことができる。更に、本実施例では、ローカルバス400〜403を使って処理情報PIなどの送受信を行なうので、システムバス200によるデータの送受信を邪魔しない。また、処理情報PIに処理内容指示CIを含めることにより、色別バンドデータCBD毎に異なる方法で処理を行なうことが可能である。
その他の実施例:
【0034】
(1)上記実施例では、サブプロセッサユニットは2個であるが、何個あっても良い。また、上記実施例では、メインプロセッサユニット10は並列処理以外の色変換処理を行なうものとしたが、メインプロセッサユニット10もサブプロセッサユニット20,30と共に並列処理(上記実施例ではハーフトーン処理)を行なうものとしても良い。
【0035】
(2)上記実施例では、並列処理の例として画像処理を示しているが、マルチプロセッサシステムによって実行可能な並列処理は画像処理に限らず様々である。
【0036】
(3)上記実施例では、処理情報PIは識別番号PIDと色別バンドデータCBDと処理内容指示CIを備えるものとしたが、処理情報PIはこれらの一部のみを備えるものであっても良い。例えば、処理情報PIは色別バンドデータCBDのみで、色別バンドデータCBDに対する処理内容はサブプロセッサユニット20,30で記憶しているものとしても良い。処理内容がすべての色別バンドデータCBDに対して同じである場合などは、特に、サブプロセッサユニット20,30で記憶しているものとしても良い。
【0037】
(4)上記実施例では、メインCPU15は、システムバス200を使用し、サブプロセッサユニット20,30に対して並列処理を実行するよう命令したが(矢印A2a、A2b)、ローカルバス401〜403を使用し、ローカルコントローラ300を経由して、命令するものとしても良い。また、サブプロセッサユニット20,30は、システムバス200を使用して、メインプロセッサユニット10に対して、並列処理が終了したことを示す割り込み信号を出力したが、この場合も、ローカルバス401〜403を使用し、ローカルコントローラ300を経由して、割り込み信号を出力するものとしても良い。または、ローカルバス401〜403やローカルバスI/F12,22,32は備えず、ローカルコントローラ300はシステムバス200上にあるものとしても良い。ローカルコントローラ300は、サブプロセッサユニット20,30から共通にアクセス可能であれば良い。
【0038】
(5)上記実施例では、ローカルコントローラ300は、処理情報PIを転送する際、処理情報PIの識別番号PIDに関連したフラグの値を「1」に変更していたが、フラグの値を変更するタイミングはこれに限らない。更に、ステータス情報は、「0」か「1」かのフラグに限らず、様々に設定可能である。例えば、ステータス情報は、「0」か「1」か「2」の値であり、「0」であれば未処理で、「1」であれば処理中で、「2」であれば処理済であることを示すものであっても良い。このようなステータス情報は、次のように実現可能である。即ち、ローカルコントローラ300が、処理情報PIを転送する際、処理情報PIの識別番号PIDに応じたフラグの値を「1」に変更する。そして、サブプロセッサユニット20,30が、色別バンドデータCBDに対する処理を終えた際に、処理済の色別バンドデータCBDの識別番号PIDを含む終了情報をローカルコントローラ300に対して送信し、ローカルコントローラ300がフラグの値を「2」に変更するものとしても良い。
【0039】
(6)上記実施例では、サブプロセッサユニット20,30が、それぞれDRAM24,34を備えているが、これらは備えていなくても良い。また、ローカルバス400やDRAM14も備えていなくても良い。その場合、並列処理される全ての処理に関する処理情報PIは、予めメインプロセッサユニット10がシステムバス200を使ってサブプロセッサユニット20,30に送信しておくものとしても良い。つまり、サブプロセッサユニット20,30が、並列処理前または処理中に処理情報PIを取得できれば良い。フラグは、並列処理される全ての処理の数だけ存在し、その値は、サブプロセッサユニット20,30が、自身が処理する処理対象データの識別番号PIDに応じて変更すれば良い。このようにすれば、並列処理時のDRAM14へのアクセス数を更に減少させることができる。
【0040】
以上、実施例に基づき本発明に係るマルチプロセッサシステムを説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれることはもちろんである。
【図面の簡単な説明】
【0041】
【図1】本発明の一実施例としてのマルチプロセッサシステムを示すブロック図。
【図2】画像処理対象の画像データGDを示す説明図。
【図3】処理情報PIを示す説明図。
【図4】従来のマルチプロセッサシステムを示す説明図。
【符号の説明】
【0042】
10,10A...メインプロセッサユニット
15,15A...メインCPU
20,30...サブプロセッサユニット
25A〜45A...サブCPU
25,35...サブCPU
11,21,31...システムバスI/F
12,22,32...ローカルバスI/F
13,23,33...IRAM
14,24,34......DRAM
100...共有メモリ
200...システムバス
300...ローカルコントローラ
310...フラグレジスタ
400...ローカルバス
401,402,403...ローカルバス
GD...画像データ

【特許請求の範囲】
【請求項1】
複数の処理を並列に実行するマルチプロセッサシステムであって、
前記複数の処理を並列に実行するよう命令を出力するメインプロセッサユニットと、
前記命令を受けて前記複数の処理を並列に実行する複数のサブプロセッサユニットと、
前記複数のサブプロセッサユニットと接続されており、個々の処理のステータスを示すステータス情報を記憶するローカルコントローラと、
を備え、
各サブプロセッサユニットは、前記ステータス情報を前記ローカルコントローラから読み取り、実行が開始されていない処理が存在する場合には当該処理の実行を開始するとともに、当該処理の実行が開始されたことを示すように前記ステータス情報を変更させる、
マルチプロセッサシステム。
【請求項2】
請求項1記載のマルチプロセッサシステムであって、
前記ローカルコントローラは、前記メインプロセッサユニットと接続されており、
前記サブプロセッサユニットは、前記ローカルコントローラを経由して、前記メインプロセッサユニットから、前記個々の処理の処理情報を受信して当該処理を実行し、
前記ローカルコントローラは、前記処理情報を経由する際に、前記個々の処理の前記ステータス情報を書き換える、
マルチプロセッサシステム。
【請求項3】
請求項2記載のマルチプロセッサシステムであって、
前記メインプロセッサユニットと前記サブプロセッサユニットとの間で前記処理情報を送受信するローカルバスと、前記命令を送受信するシステムバスとが、別個に設けられている、
マルチプロセッサシステム。
【請求項4】
請求項2又は3記載のマルチプロセッサシステムであって、
前記処理情報は、処理の対象である処理対象データと、該処理対象データに対する処理の内容を示す処理内容指示とを含む、
マルチプロセッサシステム。
【請求項5】
請求項1ないし4のいずれかに記載のマルチプロセッサシステムであって、
前記マルチプロセッサシステムは、画像データで表わされる画像領域を複数のバンドに区分し、バンド毎に、前記画像データの異なる色成分に異なる処理をそれぞれ実行し、1つのバンドの処理を終えた後に、次のバンドの処理を実行するためのシステムである、
マルチプロセッサシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2006−99206(P2006−99206A)
【公開日】平成18年4月13日(2006.4.13)
【国際特許分類】
【出願番号】特願2004−281594(P2004−281594)
【出願日】平成16年9月28日(2004.9.28)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】