(57)【要約】【課題】メインプロセッサの状況にかかわらずサブプロセッサの動作の確認を行うことが可能なマルチプロセッサシステムを提供する。【解決手段】マルチプロセッサシステム１０は、ＤＤＲ３３と、このＤＤＲ３３の初期設定を行うメインプロセッサ１１と、メインプロセッサ１１によるＤＤＲ３３の初期設定が行われて該ＤＤＲ３３に各サブプロセッサ用の動作プログラムが格納されたあと自身のサブプロセッサ用の動作プログラムを読み出して実行する第１〜第６サブプロセッサ２１〜２６と、メインプロセッサ１１による初期設定の必要がなく各サブプロセッサの動作を確認するための各サブプロセッサ用のセルフテストプログラムを格納したサブプロセッサ用ＲＯＭ３４とを備えている。各サブプロセッサ２１〜２６は、メインプロセッサ１１によるＤＤＲ３３の設定が行われる前にサブプロセッサ用ＲＯＭ３４から自身のセルフテストプログラムを読み出して実行する。【選択図】図１
2010020538.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリと、
前記共有メモリに接続され、該共有メモリの設定を行うメインプロセッサと、
前記共有メモリに接続され、前記メインプロセッサによる前記共有メモリの設定が行われて該共有メモリにサブプロセッサ用プログラムが格納されたあと該サブプロセッサ用プログラムを読み出して実行するサブプロセッサと、
前記サブプロセッサに接続され、前記メインプロセッサによる設定の必要がなく、前記サブプロセッサの動作を確認するためのセルフテストプログラムを格納したセルフテスト用メモリと、
を備え、
前記サブプロセッサは、前記メインプロセッサによる前記共有メモリの設定が行われる前に前記セルフテスト用メモリから前記セルフテストプログラムを読み出して実行する、
マルチプロセッサシステム。
【請求項２】
前記セルフテスト用メモリは、前記セルフテストプログラムとして、前記サブプロセッサが有する命令セットに含まれるすべての命令を前記サブプロセッサに実行させるプログラムを格納している、
請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記セルフテスト用メモリは、前記セルフテストプログラムのほかに前記サブプロセッサのブートプログラムを格納している、
請求項１又は２に記載のマルチプロセッサシステム。
【請求項４】
前記サブプロセッサは、前記メインプロセッサによる前記共有メモリの設定が行われる前にテスト実行要求があったとき、前記セルフテスト用メモリから前記セルフテストプログラムを読み出して実行し、該セルフテストの結果を所定の報知手段により報知する、
請求項１〜３のいずれか１項に記載のマルチプロセッサシステム。
【請求項５】
前記メインプロセッサは、前記サブプロセッサが前記セルフテストプログラムを読み出して実行する時点では、前記共有メモリの設定を行うための準備が整っていない状態である、
請求項１〜４のいずれか１項に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに関する。
【背景技術】
【０００２】
従来より、複数のプロセッサと、バスによって各プロセッサに接続されたメモリアクセスコントローラと、メモリアクセスコントローラに接続された共有メモリとを備えたマルチプロセッサシステムが知られている。例えば、特許文献１のマルチプロセッサシステムでは、各プロセッサは、メモリアクセスコントローラを介して共有メモリ内に情報を書き込む機能と、共有メモリ内の情報を読み出す機能を有している。また、各プロセッサの動作手順を定めるプログラムも共有メモリ内に記憶され、各プロセッサはそのプログラムに従って動作する。そして、各プロセッサの動作の確認は、共有メモリに格納されたプログラムを用いて行われる。
【特許文献１】特開平１０−１８７４８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、こうしたマルチプロセッサシステムにおいて、メインプロセッサと、このメインプロセッサからの指示を受けて各種処理を実行するサブプロセッサとがバスによって接続され、メインプロセッサによって共有メモリを初期設定する構成となっている場合がある。その場合には、メインプロセッサが共有メモリの初期設定を行ったあとその共有メモリに動作手順を定めるプログラムが格納される。このため、メインプロセッサが共有メモリの初期設定を行ったあとでなければ、サブプロセッサの動作の確認を行うことができなかった。
【０００４】
本発明は、上述した課題に鑑みなされたものであり、メインプロセッサの状況にかかわらずサブプロセッサの動作の確認を行うことが可能なマルチプロセッサシステムを提供することを主目的とする。
【課題を解決するための手段】
【０００５】
本発明は、上述の主目的を達成するために以下の手段を採った。
【０００６】
本発明のマルチプロセッサシステムは、
共有メモリと、
前記共有メモリに接続され、該共有メモリの設定を行うメインプロセッサと、
前記共有メモリに接続され、前記メインプロセッサによる前記共有メモリの設定が行われて該共有メモリにサブプロセッサ用プログラムが格納されたあと該サブプロセッサ用プログラムを読み出して実行するサブプロセッサと、
前記サブプロセッサに接続され、前記メインプロセッサによる設定の必要がなく、前記サブプロセッサの動作を確認するためのセルフテストプログラムを格納したセルフテスト用メモリと、
を備え、
前記サブプロセッサは、前記メインプロセッサによる前記共有メモリの設定が行われる前に前記セルフテスト用メモリから前記セルフテストプログラムを読み出して実行するものである。
【０００７】
このマルチプロセッサシステムでは、サブプロセッサは、メインプロセッサによる共有メモリの設定が行われる前にセルフテスト用メモリからセルフテストプログラムを読み出して実行する。ここで、セルフテスト用メモリは、メインプロセッサによる設定の必要がないものである。このため、メインプロセッサがまともに動作するか否かにかかわらず、つまりメインプロセッサの状況にかかわらず、サブプロセッサはセルフテストプログラムにしたがって動作の確認を行うことができる。
【０００８】
本発明のマルチプロセッサシステムにおいて、前記セルフテスト用メモリは、前記セルフテストプログラムとして、前記サブプロセッサが有する命令セットに含まれるすべての命令を前記サブプロセッサに実行させるプログラムを格納していてもよい。例えば、サブプロセッサが基本命令セットのほかに追加命令セットを付加することができるコンフィギュラブルプロセッサの場合には、基本命令セットに含まれる命令のみをサブプロセッサに実行させるのではなく、追加命令セットに含まれる命令もサブプロセッサに実行させることになるため、サブプロセッサの動作の確認を十分に行うことができる。
【０００９】
本発明のマルチプロセッサシステムにおいて、前記セルフテスト用メモリは、前記セルフテストプログラムのほかに前記サブプロセッサのブートプログラムを格納していてもよい。こうすれば、サブプロセッサのブートプログラムをセルフテスト用メモリとは別のメモリに格納する必要がないため、ハードウェア構成が複雑にならない。
【００１０】
本発明のマルチプロセッサシステムにおいて、前記サブプロセッサは、前記メインプロセッサによる前記共有メモリの設定が行われる前にテスト実行要求があったとき、前記セルフテスト用メモリから前記セルフテストプログラムを読み出して実行し、該セルフテストの結果を所定の報知手段により報知してもよい。こうすれば、マルチプロセッサシステムを開発中のオペレータはセルフテストの結果を認識することができる。ここで、報知手段としては、例えば視覚に訴える表示手段（ランプなど）であってもよいし、聴覚に訴える音発生手段（スピーカなど）であってもよい。
【００１１】
本発明のマルチプロセッサシステムにおいて、前記メインプロセッサは、前記サブプロセッサが前記セルフテストプログラムを読み出して実行する時点では、前記共有メモリの設定を行うための準備が整っていない状態であってもよい。こうすれば、メインプロセッサが共有メモリの設定を行うための準備が整っていない状態であっても、サブプロセッサの動作の確認を行うことができるため、マルチプロセッサシステムの開発手順の自由度が高まり、ひいては開発中のマルチプロセッサシステムを早期に完成させることができる。
【発明を実施するための最良の形態】
【００１２】
次に、本発明の実施の形態を図面に基づいて説明する。図１は、本発明の一実施形態であるマルチプロセッサシステム１０の構成の概略を示す構成図である。
【００１３】
本実施形態のマルチプロセッサシステム１０は、図１に示すように、バス１２を介して、メインプロセッサ１１と、このメインプロセッサ１１からの指示に基づいて動作する第１〜第６サブプロセッサ２１〜２６と、バス１２の使用許可を調停したり共有メモリであるＤＤＲ−ＳＤＲＡＭ（以下、ＤＤＲという）３３のアクセスを制御したり第１〜第６サブプロセッサ２１〜２６のリセットを制御したりするコントローラ３１とが接続されている。また、コントローラ３１には、メインプロセッサ１１や第１〜第６サブプロセッサ２１〜２６が印刷時に実行する動作プログラムが格納されたプログラム格納用ＲＯＭ３２、このプログラム格納用ＲＯＭ３２に格納された動作プログラムがロードされるＤＤＲ３３、第１〜第６サブプロセッサ２１〜２６に共通のブートプログラムや第１〜第６サブプロセッサ２１〜２６ごとに設定された第１〜第６セルフテストプログラムが格納されたサブプロセッサ用ＲＯＭ３４などが接続されている。
【００１４】
メインプロセッサ１１や第１〜第６サブプロセッサ２１〜２６は、図示しないが、いずれも、計算に使われるデータを一時的に記憶するレジスタ、実際に計算を実行する算術論理ユニット、バスに対してデータや信号の送受を行うバスインタフェース、プロセッサ内の各モジュール（レジスタ、算術論理ユニット、バスインタフェースなど）の動作を制御するシーケンサなどを備えている。
【００１５】
メインプロセッサ１１は、第１〜第６サブプロセッサ２１〜２６に指令を出力することにより、印刷制御の全体を司る役割を果たすものである。ここで、印刷制御とは、印刷対象の画像データに基づいて印刷イメージデータを生成し、その印刷イメージデータが図示しない印刷処理装置によって印刷されるよう制御することをいう。
【００１６】
第１サブプロセッサ２１は、コンフィギュラブルプロセッサであり、図２に示すように、各サブプロセッサ２１〜２６に共通の基本命令セットと該基本命令セットとは異なる自己に固有の第１追加命令セットとを有している。ここで、基本命令セットとしては、例えば、加算、減算、ループなどが挙げられる。第１追加命令セットには、予めこの第１サブプロセッサ２１に用意された命令セットの中からオペレータが選択したオプション命令セットとオペレータが自身によって作成した自由作成命令セットとが含まれる。前者としては１６ビット乗算やバイトアクセス、オーバーヘッドなしのループなどが挙げられ、後者としては加算して乗算して更に加算する処理などが挙げられる。また、第１サブプロセッサ２１が実行する第１サブプロセッサ用の動作プログラム（ブートプログラムを除く）は、ＤＤＲ３３に格納されているが、図３に示すように、第１サブプロセッサ２１が有する命令セット（基本命令セットと第１追加命令セットとを含む命令セット）に対応する第１コンパイラによって、ソースコードプログラムがコンパイルされてマシンコードプログラムに変換されたものである。第１サブプロセッサ２１の動作プログラムは、ＤＤＲ３３のジャンプテーブル（後述）から第１サブプロセッサ２１の識別番号ＩＤに対応するアドレスを取得し、その取得したアドレスを使ってＤＤＲ３３から読み出すようになっている。
【００１７】
第２〜第６サブプロセッサ２２〜２６は、第１サブプロセッサ２１と同様の構成であり、図２に示すように、共通の基本命令セットのほか自己に固有の第２〜第６追加命令セットをそれぞれ有している。また、第２〜第６サブプロセッサ２２〜２６が実行する第２〜第６サブプロセッサ用の動作プログラム（ブートプログラムを除く）は、ＤＤＲ３３に格納されているが、図３に示すように、第２〜第６サブプロセッサ２２〜２６が有する各命令セットに対応する第２〜第６コンパイラによって、それぞれソースコードプログラムがコンパイルされてマシンコードプログラムに変換されたものである。これらのプログラムは、第１サブプロセッサ２１と同様にしてＤＤＲ３３から読み出すようになっている。
【００１８】
プログラム格納用ＲＯＭ３２は、各プロセッサ用の動作プログラムを格納している。具体的には、メインプロセッサ用の動作プログラムとしては印刷制御の全体を司るプログラム、第１サブプロセッサ用の動作プログラムとしては画像処理やリサイズ、レイアウトのプログラム、第２サブプロセッサ用の動作プログラムとしてはＪＰＥＧ展開プログラム、第３サブプロセッサ用の動作プログラムとしてはフォーマット変換プログラム、第４サブプロセッサ用の動作プログラムとしては画像補正プログラム、第５サブプロセッサ用の動作プログラムとしては色変換やハーフトーンエンコードのプログラム、第６サブプロセッサ用の動作プログラムとしてはハーフトーンでコードのプログラムなどが挙げられる。
【００１９】
ＤＤＲ３３は、第１〜第６サブプロセッサ２１〜２６のそれぞれの識別番号ＩＤに対応するアドレスを記憶したジャンプテーブルと、このジャンプテーブルに記憶されたアドレスを先頭アドレスとする各プロセッサ用の動作プログラムとを格納している。ジャンプテーブルや各プロセッサ用の動作プログラムは、もともとプログラム格納用ＲＯＭ３２に格納されているものであり、初期設定時にメインプロセッサ１１によってプログラム格納用ＲＯＭ３２からＤＤＲ３３へロードされる。
【００２０】
サブプロセッサ用ＲＯＭ３４は、第１〜第６サブプロセッサ２１〜２６がアクセス可能なメモリであり、第１〜第６サブプロセッサ２１〜２６に共通のブートプログラムと、第１〜第６サブプロセッサ２１〜２６のそれぞれに固有の第１〜第６セルフテストプログラムとを格納している。ブートプログラムは、図４に示すように、第１〜第６サブプロセッサ２１〜２６に共通の基本命令セットに対応する基本コンパイラによってソースコードのブートプログラムがコンパイルされてマシンコードのブートプログラムに変換されたものである。このブートプログラムは、サブプロセッサ用ＲＯＭ３４から先頭アドレスを使って読み出せるようになっている。また、サブプロセッサ用ＲＯＭ３４には、ブートプログラムに続いて、第１〜第６セルフテストプログラムが順に格納されている。第１〜第６セルフテストプログラムは、図５に示すように、第１〜第６サブプロセッサ２１〜２６が有する各命令セットに対応する第１〜第６コンパイラによってソースコードのセルフテストプログラムがコンパイルされてマシンコードのセルフテストプログラムに変換されたものである。これらの第１〜第６セルフテストプログラムは、サブプロセッサ用ＲＯＭ３４から各先頭アドレスを使って読み出せるようになっている。なお、サブプロセッサ用ＲＯＭ３４には、各サブプロセッサ２１〜２６の識別番号ＩＤと各セルフテストプログラムの先頭アドレスとを対応づけたジャンプテーブルが記憶されており、各サブプロセッサ２１〜２６はこのジャンプテーブルに基づいて自身のセルフテストプログラムを読み出す。また、第１〜第６セルフテストプログラムは、対応するサブプロセッサが有する命令セットのすべての命令を実行するように記述されている。例えば、第１セルフテストプログラムは、第１サブプロセッサ２１が有する命令セット（つまり図２に示す基本命令セットと第１追加命令セット）のすべての命令を実行するように記述されている。
【００２１】
なお、図１に示すように、コントローラ３１には、その他に、メインプロセッサ１１によるＤＤＲ３３へのジャンプテーブルや各サブプロセッサ用プログラムのロードが終了したときにオンされるＤＤＲ設定終了フラグを格納するＤＤＲ設定終了フラグレジスタ３５、オペレータの図示しないスイッチ操作によってセルフテスト開始信号が入力されたときにオンされるセルフテストフラグを格納するセルフテストフラグレジスタ３６、セルフテストの実行時などに各サブプロセッサ２１〜２６によって読み書きされる共通のＲＡＭ３７などが接続されている。また、コントローラ３１は、バス１２とは別の信号線１１ａ，２１ａ〜２６ａによっても各プロセッサ１１，２１〜２６に接続されている。これらの信号線１１ａ，２１ａ〜２６ａは、例えば各プロセッサ１１，２１〜２６から出力されたバス獲得要求ＲＥＱをコントローラ３１が入力したり、コントローラ３１から出力されたバス使用許可ＧＮＴを各プロセッサ１１，２１〜２６が入力したりするのに利用される。また、第１〜第６サブプロセッサ２１〜２６には、第１〜第６セルフテストの結果を表示する第１〜第６ＬＥＤ２１ｂ〜２６ｂをそれぞれ備えている。
【００２２】
次に、こうして構成された本実施形態のマルチプロセッサシステム１０の動作、特にシステムリセットを解除する場合の動作について説明する。図６及び図７は、それぞれ、メインプロセッサ１１及び第１〜第６サブプロセッサ２１〜２６により実行される処理ルーチンのフローチャートである。ここで、システムリセット信号がオンのときにはコントローラ３１がメインプロセッサ１１及び第１〜第６サブプロセッサ２１〜２６のそれぞれに対してリセット信号を出力してリセットをかけ続ける。その結果、各プロセッサ１１，２１〜２６は動作を全く実行しない状態となり、各種のフラグはすべてリセットされてオフの状態となる。一方、システムリセット信号がオフのときつまりシステムリセットが解除されると、コントローラ３１は、各プロセッサ１１，２１〜２６のそれぞれに対して出力していたリセット信号を停止することによりリセットを解除する。図６及び図７の処理ルーチンは、このようにリセットが解除されたときに開始される。
【００２３】
メインプロセッサ１１は、リセットが解除されると、まず、各種の初期設定を実行したあと、プログラム格納用ＲＯＭ３２からジャンプテーブルや各サブプロセッサ用の動作プログラムをＤＤＲ３３にロードすると共に、図示しないＵＳＢの初期化や割り込みのプライオリティの設定などを行う（ステップＳ１００）。そして、これらの設定が終了したあと、ＤＤＲ設定終了フラグをオンにし（ステップＳ１１０）、その後、プログラム格納用ＲＯＭ３２に格納されたメインプロセッサ用のアプリプログラムを実行し（ステップＳ１２０）、アプリプログラムの実行後、この処理ルーチンを終了する。
【００２４】
一方、第１〜第６サブプロセッサ２１〜２６は、リセットが解除されると、まず、サブプロセッサ用ＲＯＭ３４からブートプログラムのコードを読み込んでプロセッサ自身の初期化などのブートを実行する（ステップＳ２００）。ここで、サブプロセッサ用ＲＯＭ３４に格納されているマシンコードのブートプログラムは、ソースコードのブートプログラムを第１〜第６サブプロセッサ２１〜２６に共通の基本命令セットに対応するコンパイラによってコンパイルしたものであるため、第１〜第６サブプロセッサ２１〜２６が実施不能な命令は存在しない。したがって、第１〜第６サブプロセッサ２１〜２６のいずれもブートを開始したあと滞りなくブートを終了することができる。続いて、第１〜第６サブプロセッサ２１〜２６は、セルフテストフラグレジスタ３６を読み出してセルフテストフラグをチェックし（ステップＳ２１０）、セルフテストフラグがオンかオフかを判定する（ステップＳ２２０）。セルフテストフラグは、リセットが解除された直後はオフの状態であるが、オペレータが図示しないセルフテスト用のスイッチを押下したときにオンになる。このスイッチに連動して、第１〜第６ＬＥＤ２１ｂ〜２６ｂがすべて点灯する。
【００２５】
そして、セルフテストフラグがオンだった場合には、サブプロセッサ用ＲＯＭ３４に格納されている第１〜第６セルフテストプログラムのうち、自身のサブプロセッサに対応するセルフテストプログラムをサブプロセッサ用ＲＯＭ３４から読み出して実行する（ステップＳ２３０）。第１サブプロセッサ２１を例に挙げれば、加算、減算、ループなどの基本命令セットに含まれるすべての命令に加えて、１６ビット乗算や加算して乗算して更に加算する処理などの第１追加命令セットに含まれるすべての命令を試験的に実行し、すべての命令が支障なく実行できたか否かを確認する。また、第１サブプロセッサ２１に内蔵されたレジスタの特定のアドレスへの書き込みを行ったあと該アドレスからの読み込みを行い、書き込んだデータと読み込んだデータとが一致しているか否かを確認したり、バスインタフェースを介して共通のＲＡＭ３７の特定のアドレスへの書き込みを行ったあと該アドレスからの読み込みを行い、書き込んだデータと読み込んだデータとが一致しているか否かを確認したりもする。このように、各サブプロセッサ２１〜２６は、それぞれに対応するセルフテストプログラムを実行することにより、各サブプロセッサの命令セットに含まれるすべての命令を実行する。そして、各サブプロセッサ２１〜２６は、それぞれに対応するセルフテストプログラムを実行した結果が良好か不良かを判定し（ステップＳ２４０）、結果が良好だった場合つまりセルフテストプログラムをすべて支障なく実行できた場合には、自身のサブプロセッサに接続されたＬＥＤを消灯し（ステップＳ２５０）、結果が不良だった場合つまりセルフテストプログラムのいずれか一つでも支障があった場合合には、自身のサブプロセッサに接続されたＬＥＤを点灯する（ステップＳ２６０）。そして、ステップＳ２５０又はステップＳ２６０のあと、セルフテストフラグをオフにする（ステップＳ２６５）。このように第１〜第６ＬＥＤ２１ｂ〜２６ｂの点灯・消灯が制御されるため、オペレータは第１〜第６ＬＥＤ２１ｂ〜２６ｂの点灯・消灯によってテスト結果が良好か不良かを視覚的に認識することができる。
【００２６】
ステップＳ２６５のあと又はステップＳ２２０でセルフテストフラグがオフだった場合には、ＤＤＲ設定終了フラグレジスタ３５のＤＤＲ設定終了フラグを読み出してそのフラグをチェックし（ステップＳ２７０）、そのフラグがオンかオフかを判定する（ステップＳ２８０）。そして、ＤＤＲ設定終了フラグがオフだった場合には、ステップＳ２１０に戻る。一方、ＤＤＲ設定終了フラグがオンだった場合には、メインプロセッサ１１がＤＤＲ３３にジャンプテーブルや各サブプロセッサ２１〜２６の動作プログラムをロード済みであるから、ＤＤＲ３３のジャンプテーブルから自身のサブプロセッサの識別番号ＩＤに対応するアドレスを読み出し（ステップＳ２９０）、このアドレスを先頭アドレスとするサブプロセッサ用の動作プログラムを実行し（ステップＳ３００）、この処理ルーチンを終了する。
【００２７】
なお、メインプロセッサ１１及び第１〜第６サブプロセッサ２１〜２６は、バス１２を介してプログラム格納用ＲＯＭ３２やＤＤＲ３３，サブプロセッサ用ＲＯＭ３４等に接続されているため、同時に各ルーチンを実行することはできない。このため、実際には、メインプロセッサ１１及び第１〜第６サブプロセッサ２１〜２６が信号線１１ａ，２１ａ〜２６ａを介してコントローラ３１にバス獲得要求ＲＥＱを出力し、コントローラ３１が予め定められた優先順位に従って最も優先順位の高いプロセッサにバス使用許可ＧＮＴを与える、というバス調停が行われる。バス使用許可ＧＮＴが与えられたプロセッサは、次回、優先順位が最下位になる。例えば、各サブプロセッサ２１〜２６は、ブートを実行するにあたり、コントローラ３１へバス獲得要求ＲＥＱを出力し、バス使用許可ＧＮＴが与えられたあとブートプログラムの一部を読み出して実行し、その後まだブートプログラムのすべてを実行していなかった場合には、再度、コントローラ３１へバス獲得要求ＲＥＱを出力し、バス使用許可ＧＮＴが与えられたあとブートプログラムの次の一部を読み出して実行する。そして、ブートプログラムのすべてを実行するまでこれを繰り返す。セルフテストを実行する場合もこれと同様である。
【００２８】
ここで、本実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。本実施形態のＤＤＲ３３が本発明の共有メモリに相当し、メインプロセッサ１１がメインプロセッサに相当し、第１〜第６サブプロセッサ２１〜２６のいずれかがサブプロセッサに相当し、サブプロセッサ用ＲＯＭ３４がセルフテスト用メモリに相当する。
【００２９】
以上詳述した本実施形態のマルチプロセッサシステム１０によれば、第１〜第６サブプロセッサ２１〜２６は、メインプロセッサ１１によるＤＤＲ３３の初期設定が行われる前にサブプロセッサ用ＲＯＭ３４から自身のセルフテストプログラムを読み出して実行する。ここで、サブプロセッサ用ＲＯＭ３４は、メインプロセッサ１１による初期設定の必要がないものである。このため、第１〜第６サブプロセッサ２１〜２６は、メインプロセッサ１１がまともに動作するか否かにかかわらず、つまりメインプロセッサ１１の状況にかかわらず、各セルフテストプログラムにしたがって動作の確認を行うことができる。
【００３０】
また、第１セルフテストプログラムは、第１サブプロセッサ２１が有する命令セット（基本命令セットと第１追加命令セットとを含む）に含まれるすべての命令を第１サブプロセッサ２１に実行させるプログラムであるため、第１サブプロセッサ２１の動作の確認を十分に行うことができる。第２〜第６セルフテストプログラムについても同様である。
【００３１】
更に、第１〜第６セルフテストプログラムとブートプログラムとは共にサブプロセッサ用ＲＯＭ３４に格納されているため、それぞれを別のメモリに格納する場合に比べてハードウェア構成が複雑にならない。
【００３２】
更にまた、第１〜第６サブプロセッサ２１〜２６のセルフテストの結果を第１〜第６ＬＥＤ２１ｂ〜２６ｂにより報知するため、マルチプロセッサシステム１０を開発中のオペレータはセルフテストの結果を視覚的に認識することができる。
【００３３】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【００３４】
例えば、上述した実施形態では、メインプロセッサ１１は、第１〜第６サブプロセッサ２１〜２６がそれぞれ第１〜第６セルフテストプログラムを読み出して実行する時点では、ＤＤＲ３３の初期設定を行うための準備が整っていることを前提として説明したが、その時点では、ＤＤＲ３３の初期設定を行うための準備が整っていない状態（例えばメインプロセッサ１１の動作プログラムが未完成の状態）であってもよい。このようにメインプロセッサ１１がＤＤＲ３３の初期設定を行うための準備が整っていない状態であっても、第１〜第６サブプロセッサ２１〜２６はそれぞれ第１〜第６セルフテストプログラムを用いて動作の確認を行うことができるため、マルチプロセッサシステム１０の開発手順の自由度が高まり、ひいては開発中のマルチプロセッサシステム１０を早期に完成させることができる。
【００３５】
上述した実施形態では、図７のステップＳ２５０又はＳ２６０のあと、セルフテストフラグのオフ（ステップＳ２６５）、ＤＤＲ設定終了フラグのチェック（ステップＳ２７０）に進んだが、ステップＳ２５０又はＳ２６０のあとはそのまま無限ループに入るようにしてもよい。
【００３６】
上述した実施形態では、マルチプロセッサシステム１０はメインプロセッサ１１と第１〜第６サブプロセッサ２１〜２６とを備えるものとしたが、メインプロセッサ１１と１つのサブプロセッサとを備えるものとしてもよい。この場合でも、上述した実施形態と同様の効果が得られる。
【００３７】
上述した実施形態では、サブプロセッサ用ＲＯＭ３４に第１〜第６セルフテストプログラムとブートプログラムとを格納したが、第１〜第６セルフテストプログラムをセルフテスト用ＲＯＭに格納しブートプログラムをブート用ＲＯＭに格納してもよい。この場合、上述した実施形態と比べてハードウェア構成が若干複雑になるものの、それ以外は上述した実施形態と同様の効果が得られる。
【００３８】
上述した実施形態では、印刷制御を実行するマルチプロセッサシステム１０に本発明を適用したが、印刷制御以外の制御を実行するマルチプロセッサシステムに本発明を適用してもよい。
【図面の簡単な説明】
【００３９】
【図１】マルチプロセッサシステム１０の構成の概略を示す構成図。
【図２】各サブプロセッサ２１〜２６の命令セットを示す説明図。
【図３】サブプロセッサ用プログラムのコンパイルの様子を表す説明図。
【図４】ブートプログラムのコンパイルの様子を表す説明図。
【図５】セルフテストプログラムのコンパイルの様子を表す説明図。
【図６】メインプロセッサ１１の処理ルーチンのフローチャート。
【図７】各サブプロセッサ２１〜２６の処理ルーチンのフローチャート。
【符号の説明】
【００４０】
１０  マルチプロセッサシステム、１１  メインプロセッサ、１１ａ  信号線、１２  バス、２１〜２６  第１〜第６サブプロセッサ、２１ａ〜２６ａ  信号線、２１ｂ〜２６ｂ  第１〜第６ＬＥＤ、３１  コントローラ、３２  プログラム格納用ＲＯＭ、３３  ＤＤＲ−ＳＤＲＡＭ、３４  サブプロセッサ用ＲＯＭ、３５  ＤＤＲ設定終了フラグレジスタ、３６  セルフテストフラグレジスタ、３７  共通のＲＡＭ。
【図１】
2010020538.tif 000003
【図２】
2010020538.tif 000004
【図３】
2010020538.tif 000005
【図４】
2010020538.tif 000006
【図５】
2010020538.tif 000007
【図６】
2010020538.tif 000008
【図７】
2010020538.tif 000009