(57)【要約】【課題】データ処理中にＦＩＦＯモジュールにアクセスを受け付けられないロック状態となったときにリセットを受け付けない複数のプロセッサから構成されていても、ロック状態から復旧してデータ処理をやり直す。【解決手段】メインプロセッサ７０は、第２プロセッサ５２が出力ロック状態のときには、ＦＩＦＯモジュール４０のフル状態を解除することにより第２プロセッサ５２のＦＩＦＯモジュール４０への出力をＦＩＦＯモジュール４０が受け付けるようにして、第２プロセッサ５２のＦＩＦＯモジュール４０への出力を終了させてその第２プロセッサ５２がリセットを受け付けられる状態にすると共に、第２プロセッサ５２、第３プロセッサ５３及びＦＩＦＯモジュール４０をリセットしたあと、第２及び第３プロセッサにそれぞれ第２及び第３処理開始要求を再送信する。【選択図】図１
2010039618.tif 000002
【特許請求の範囲】
【請求項１】
メインプロセッサと、
データを記憶すると共に該記憶したデータを入力された順に出力し、該出力したデータを削除するＦＩＦＯモジュールと、
前記メインプロセッサから前段処理開始要求を受信したとき、外部から入力したデータに所定の前段処理を実行し該前段処理を実行したあとのデータを前記ＦＩＦＯモジュールに出力する前段プロセッサと、
前記メインプロセッサから後段処理開始要求を受信したとき、前記ＦＩＦＯモジュールから前記前段処理が実行されたあとのデータを入力して所定の後段処理を実行する後段プロセッサと、
を備え、
前記前段プロセッサは、前記後段プロセッサがフリーズして前記ＦＩＦＯモジュールから前記前段処理が実行されたあとのデータを入力する動作を停止したことにより前記ＦＩＦＯモジュールがフル状態になったとき、前記前段処理を実行したあとのデータの前記ＦＩＦＯモジュールへの出力が前記ＦＩＦＯモジュールに受け付けられず前記メインプロセッサからのリセットを受け付けない出力ロック状態になり、
前記メインプロセッサは、前記前段プロセッサが前記出力ロック状態のときには、前記ＦＩＦＯモジュールのフル状態を解除することにより前記前段プロセッサの前記ＦＩＦＯモジュールへの出力を前記ＦＩＦＯモジュールが受け付けるようにして、前記前段プロセッサの前記ＦＩＦＯモジュールへの出力を終了させて該前段プロセッサがリセットを受け付けられる状態にすると共に、前記前段プロセッサ、前記後段プロセッサ及び前記ＦＩＦＯモジュールをリセットしたあと、該前段及び後段プロセッサにそれぞれ前記前段及び後段処理開始要求を再送信する、
マルチプロセッサシステム。
【請求項２】
前記前段プロセッサは、前記メインプロセッサから前記前段処理開始要求を受信したとき、外部から入力したデータに前記前段処理を実行し該前段処理を実行したあとのデータを前記ＦＩＦＯモジュールに出力する動作を予め定められた全データについて順次実行したあと前記メインプロセッサに前段処理終了返答を送信し、
前記メインプロセッサは、前記前段処理開始要求を前記前段プロセッサに送信してから前記前段処理終了返答を前記前段プロセッサから受信することなく所定の待ち時間が経過したときには、前記ＦＩＦＯモジュールがフル状態か否かを判定し、フル状態のときには前記前段プロセッサが前記出力ロック状態にあると判断する、
請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記メインプロセッサは、前記ＦＩＦＯモジュールのフル状態を解除するにあたり、フル状態を解除するフル状態解除指令を前記ＦＩＦＯモジュールに送信し、
前記ＦＩＦＯモジュールは、前記フル状態解除指令を受信したときには、前記前段プロセッサの前記ＦＩＦＯモジュールへのデータの出力を受け付けて該データを入力し、既に記憶されているデータに上書きするか又はそのまま破棄する、
請求項１又は２に記載のマルチプロセッサシステム。
【請求項４】
メインプロセッサと、
データを記憶すると共に該記憶したデータを入力された順に出力し、該出力したデータを削除するＦＩＦＯモジュールと、
前記メインプロセッサから前段処理開始要求を受信したとき、外部から入力したデータに所定の前段処理を実行し該前段処理を実行したあとのデータを前記ＦＩＦＯモジュールに出力する前段プロセッサと、
前記メインプロセッサから後段処理開始要求を受信したとき、前記ＦＩＦＯモジュールから前記前段処理が実行されたあとのデータを入力して所定の後段処理を実行する後段プロセッサと、
を備え、
前記後段プロセッサは、前記前段プロセッサがフリーズして前記前段処理の実行を停止するか又は前記前段処理を実行したあとのデータを前記ＦＩＦＯモジュールへ出力する動作を停止したことにより前記ＦＩＦＯモジュールがエンプティ状態になったとき、前記前段処理が実行されたあとのデータの前記ＦＩＦＯモジュールからの入力が前記ＦＩＦＯモジュールに受け付けられず前記メインプロセッサからのリセットを受け付けない入力ロック状態になり、
前記メインプロセッサは、前記後段プロセッサが前記入力ロック状態のときには、前記ＦＩＦＯモジュールのエンプティ状態を解除することにより前記後段プロセッサの前記ＦＩＦＯモジュールからの入力を前記ＦＩＦＯモジュールが受け付けるようにして、前記後段プロセッサの前記ＦＩＦＯモジュールからの入力を終了させて該後段プロセッサがリセットを受け付けられる状態にすると共に、前記前段プロセッサ、前記後段プロセッサ及び前記ＦＩＦＯモジュールをリセットしたあと、該前段及び後段プロセッサにそれぞれ前記前段及び後段処理開始要求を再送信する、
マルチプロセッサシステム。
【請求項５】
前記後段プロセッサは、前記メインプロセッサから前記後段処理開始要求を受信したとき、前記ＦＩＦＯモジュールから前記前段処理が実行されたあとのデータを入力して前記後段処理を実行し該後段処理を実行したあとのデータを外部へ出力する動作を予め定められた全データについて順次実行したあと前記メインプロセッサに後段処理終了返答を送信し、
前記メインプロセッサは、前記後段処理開始要求を前記後段プロセッサに送信してから前記後段処理終了返答を前記後段プロセッサから受信することなく所定の待ち時間が経過したときには、前記ＦＩＦＯモジュールがエンプティ状態か否かを判定し、エンプティ状態のときには前記後段プロセッサが前記入力ロック状態にあると判断する、
請求項４に記載のマルチプロセッサシステム。
【請求項６】
前記メインプロセッサは、前記ＦＩＦＯモジュールのエンプティ状態を解除するにあたり、エンプティ状態を解除するエンプティ状態解除指令を前記ＦＩＦＯモジュールに送信し、
前記ＦＩＦＯモジュールは、前記エンプティ状態解除指令を受信したときには、前記後段プロセッサの前記ＦＩＦＯモジュールからの入力を受け付けて前記後段プロセッサへヌルデータ又は意味のないデータを出力する、
請求項４又は５に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに関する。
【背景技術】
【０００２】
従来、複数のプロセッサを備えデータを処理するマルチプロセッサシステムが知られている。例えば、特許文献１に記載のマルチプロセッサシステム１００は、図９に示すように、一連の処理を実行する複数のプロセッサ１２１，１２２と、ＦＩＦＯモジュール１１１とを備えている。プロセッサ１２１は、入力したデータに所定の前段処理を実行して、ＦＩＦＯモジュール１１１へ出力し、プロセッサ１２２は、ＦＩＦＯモジュール１１１から入力したデータに所定の後段処理を実行して出力する。また、このマルチプロセッサシステム１００では、各プロセッサ１２１，１２２がパイプライン処理によりデータを処理可能となっている。
【特許文献１】特開平１１−２７２６２７号公報（段落０００４〜０００７）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、特許文献１に記載のマルチプロセッサシステムでは、どちらか一方のプロセッサが何らかの理由によりフリーズした場合、他方のプロセッサがロック状態となってしまう場合があった。例えば、プロセッサ１２２がフリーズしたとすると、このプロセッサ１２２へデータを出力していたＦＩＦＯモジュール１１１は、データを出力することがなくなってついにはフル状態つまり空き領域がない状態になる。すると、プロセッサ１２１は、そのＦＩＦＯモジュール１１１にデータを出力しても受け付けられない状態（出力ロック状態）となる。また、プロセッサ１２１がフリーズしたとすると、このプロセッサ１２１からデータを入力していたＦＩＦＯモジュール１１１は、データが入力されることがなくなってついにはエンプティ状態つまり記憶されたデータがなくなった状態になる。そして、プロセッサ１２２は、そのＦＩＦＯモジュール１１１からデータを入力しようとしても受け付けられない状態（入力ロック状態）となる。ここで、プロセッサ１２１，１２２がフリーズした場合にはリセットを受け付けて再起動が可能であるが、プロセッサ１２１，１２２がロック状態の場合にはリセットを受け付けずデータ処理をやり直すことができないことがあった。
【０００４】
本発明は、上述した課題に鑑みなされたものであり、データ処理中にＦＩＦＯモジュールにアクセスを受け付けられないロック状態となったときにリセットを受け付けない複数のプロセッサから構成されていても、ロック状態から復旧してデータ処理をやり直すことができるマルチプロセッサシステムを提供することを主目的とする。
【課題を解決するための手段】
【０００５】
本発明は、上述の目的を達成するために以下の手段を採った。
【０００６】
本発明の第１のマルチプロセッサシステムは、
メインプロセッサと、
データを記憶すると共に該記憶したデータを入力された順に出力し、該出力したデータを削除するＦＩＦＯモジュールと、
前記メインプロセッサから前段処理開始要求を受信したとき、外部から入力したデータに所定の前段処理を実行し該前段処理を実行したあとのデータを前記ＦＩＦＯモジュールに出力する前段プロセッサと、
前記メインプロセッサから後段処理開始要求を受信したとき、前記ＦＩＦＯモジュールから前記前段処理が実行されたあとのデータを入力して所定の後段処理を実行する後段プロセッサと、
を備え、
前記前段プロセッサは、前記後段プロセッサがフリーズして前記ＦＩＦＯモジュールから前記前段処理が実行されたあとのデータを入力する動作を停止したことにより前記ＦＩＦＯモジュールがフル状態になったとき、前記前段処理を実行したあとのデータの前記ＦＩＦＯモジュールへの出力が前記ＦＩＦＯモジュールに受け付けられず前記メインプロセッサからのリセットを受け付けない出力ロック状態になり、
前記メインプロセッサは、前記前段プロセッサが前記出力ロック状態のときには、前記ＦＩＦＯモジュールのフル状態を解除することにより前記前段プロセッサの前記ＦＩＦＯモジュールへの出力を前記ＦＩＦＯモジュールが受け付けるようにして、前記前段プロセッサの前記ＦＩＦＯモジュールへの出力を終了させて該前段プロセッサがリセットを受け付けられる状態にすると共に、前記前段プロセッサ、前記後段プロセッサ及び前記ＦＩＦＯモジュールをリセットしたあと、該前段及び後段プロセッサにそれぞれ前記前段及び後段処理開始要求を再送信するものである。
【０００７】
この第１のマルチプロセッサシステムでは、メインプロセッサは、前段プロセッサが出力ロック状態のときには、ＦＩＦＯモジュールのフル状態を解除することにより前段プロセッサのＦＩＦＯモジュールへの出力をＦＩＦＯモジュールが受け付けるようにして、前段プロセッサのＦＩＦＯモジュールへの出力を終了させてその前段プロセッサがリセットを受け付けられる状態にすると共に、前段プロセッサ、後段プロセッサ及びＦＩＦＯモジュールをリセットしたあと、前段及び後段プロセッサにそれぞれ前段及び後段処理開始要求を再送信する。したがって、データ処理中にＦＩＦＯモジュールにアクセスを受け付けられないロック状態となったときにリセットを受け付けない複数のプロセッサから構成されていても、ロック状態から復旧してデータ処理をやり直すことができる。
【０００８】
本発明の第１のマルチプロセッサシステムにおいて、前記前段プロセッサは、前記メインプロセッサから前記前段処理開始要求を受信したとき、外部から入力したデータに前記前段処理を実行し該前段処理を実行したあとのデータを前記ＦＩＦＯモジュールに出力する動作を予め定められた全データについて順次実行したあと前記メインプロセッサに前段処理終了返答を送信し、前記メインプロセッサは、前記前段処理開始要求を前記前段プロセッサに送信してから前記前段処理終了返答を前記前段プロセッサから受信することなく所定の待ち時間が経過したときには、前記ＦＩＦＯモジュールがフル状態か否かを判定し、フル状態のときには前記前段プロセッサが前記出力ロック状態にあると判断するものとしてもよい。こうすれば、出力ロック状態の発生を比較的容易且つ確実に判定することができる。ここで、「所定の待ち時間」は、予め実験やシミュレーション等により、データのサイズと、メインプロセッサが前段プロセッサへ前段処理開始要求を送信してから前段プロセッサがそのデータを入力し前段処理を実行しＦＩＦＯモジュールへ記憶するのに要する時間との関係を求め、この関係と今回処理するデータのサイズとに基づいて、前段処理開始要求を送信してからＦＩＦＯモジュールへの記憶までを完了することの可能な範囲に設定してもよい。また、フル状態でないときには、出力ロック状態でないと判断して前段プロセッサ、後段プロセッサ及びＦＩＦＯモジュールをリセットするものとしてもよい。
【０００９】
本発明の第１のマルチプロセッサシステムにおいて、前記メインプロセッサは、前記ＦＩＦＯモジュールのフル状態を解除するにあたり、フル状態を解除するフル状態解除指令を前記ＦＩＦＯモジュールに送信し、前記ＦＩＦＯモジュールは、前記フル状態解除指令を受信したときには、前記前段プロセッサの前記ＦＩＦＯモジュールへのデータの出力を受け付けて該データを入力し、既に記憶されているデータに上書きするか又はそのまま破棄するものとしてもよい。
【００１０】
本発明の第２のマルチプロセッサシステムは、
メインプロセッサと、
データを記憶すると共に該記憶したデータを入力された順に出力し、該出力したデータを削除するＦＩＦＯモジュールと、
前記メインプロセッサから前段処理開始要求を受信したとき、外部から入力したデータに所定の前段処理を実行し該前段処理を実行したあとのデータを前記ＦＩＦＯモジュールに出力する前段プロセッサと、
前記メインプロセッサから後段処理開始要求を受信したとき、前記ＦＩＦＯモジュールから前記前段処理が実行されたあとのデータを入力して所定の後段処理を実行する後段プロセッサと、
を備え、
前記後段プロセッサは、前記前段プロセッサがフリーズして前記前段処理の実行を停止するか又は前記前段処理を実行したあとのデータを前記ＦＩＦＯモジュールへ出力する動作を停止したことにより前記ＦＩＦＯモジュールがエンプティ状態になったとき、前記前段処理が実行されたあとのデータの前記ＦＩＦＯモジュールからの入力が前記ＦＩＦＯモジュールに受け付けられず前記メインプロセッサからのリセットを受け付けない入力ロック状態になり、
前記メインプロセッサは、前記後段プロセッサが前記入力ロック状態のときには、前記ＦＩＦＯモジュールのエンプティ状態を解除することにより前記後段プロセッサの前記ＦＩＦＯモジュールからの入力を前記ＦＩＦＯモジュールが受け付けるようにして、前記後段プロセッサの前記ＦＩＦＯモジュールからの入力を終了させて該後段プロセッサがリセットを受け付けられる状態にすると共に、前記前段プロセッサ、前記後段プロセッサ及び前記ＦＩＦＯモジュールをリセットしたあと、該前段及び後段プロセッサにそれぞれ前記前段及び後段処理開始要求を再送信するものである。
【００１１】
この第２のマルチプロセッサシステムでは、メインプロセッサは、後段プロセッサが入力ロック状態のときには、ＦＩＦＯモジュールのエンプティ状態を解除することにより後段プロセッサのＦＩＦＯモジュールからの入力をＦＩＦＯモジュールが受け付けるようにして、後段プロセッサのＦＩＦＯモジュールからの入力を終了させて後段プロセッサがリセットを受け付けられる状態にすると共に、前段プロセッサ、後段プロセッサ及びＦＩＦＯモジュールをリセットしたあと、前段及び後段プロセッサにそれぞれ前段及び後段処理開始要求を再送信する。したがって、データ処理中にＦＩＦＯモジュールにアクセスを受け付けられないロック状態となったときにリセットを受け付けない複数のプロセッサから構成されていても、ロック状態から復旧してデータ処理をやり直すことができる。
【００１２】
本発明の第２のマルチプロセッサシステムにおいて、前記後段プロセッサは、前記メインプロセッサから前記後段処理開始要求を受信したとき、前記ＦＩＦＯモジュールから前記前段処理が実行されたあとのデータを入力して前記後段処理を実行し該後段処理を実行したあとのデータを外部へ出力する動作を予め定められた全データについて順次実行したあと前記メインプロセッサに後段処理終了返答を送信し、前記メインプロセッサは、前記後段処理開始要求を前記後段プロセッサに送信してから前記後段処理終了返答を前記後段プロセッサから受信することなく所定の待ち時間が経過したときには、前記ＦＩＦＯモジュールがエンプティ状態か否かを判定し、エンプティ状態のときには前記後段プロセッサが前記入力ロック状態にあると判断するものとしてもよい。こうすれば、入力ロック状態の発生を比較的容易且つ確実に判定することができる。ここで、「所定の待ち時間」は、予め実験やシミュレーション等により、データのサイズと、メインプロセッサが後段プロセッサへ後段処理開始要求を送信してから後段プロセッサがそのデータをＦＩＦＯモジュールから入力し後段処理を実行し出力するのに要する時間との関係を求め、この関係と今回処理するデータのサイズとに基づいて、後段処理開始要求を送信してから後段プロセッサによる後段処理を実行した後のデータの出力までを完了することの可能な範囲に設定してもよい。また、エンプティ状態でないときには、入力ロック状態でないと判断して前段プロセッサ、後段プロセッサ及びＦＩＦＯモジュールをリセットするものとしてもよい。
【００１３】
本発明の第２のマルチプロセッサシステムにおいて、前記メインプロセッサは、前記ＦＩＦＯモジュールのエンプティ状態を解除するにあたり、エンプティ状態を解除するエンプティ状態解除指令を前記ＦＩＦＯモジュールに送信し、前記ＦＩＦＯモジュールは、前記エンプティ状態解除指令を受信したときには、前記後段プロセッサの前記ＦＩＦＯモジュールからの入力を受け付けて前記後段プロセッサへヌルデータ又は意味のないデータを出力するものとしてもよい。
【発明を実施するための最良の形態】
【００１４】
次に、本発明を実施するための最良の形態を図面を用いて説明する。図１は印刷用の画像データを生成する本実施形態の画像処理装置２０の構成の概略を示す構成図である。本実施形態の画像処理装置２０は、図１に示すように、メインメモリ３０と、ＦＩＦＯモジュール４０と、第１〜第４プロセッサ５１〜５４と、メインプロセッサ７０とを備えている。
【００１５】
メインメモリ３０は、バス１２を介してメインプロセッサ７０及び第１〜第４プロセッサ５１〜５４に接続され、各種データやプログラムを格納するものである。このメインメモリ３０には、ＲＧＢデータバッファ３０ａや中間データバッファ３０ｂ、イメージバッファ３０ｃなどの記憶領域が設けられている。ＲＧＢデータバッファ３０ａは、第１プロセッサ５１から出力されたデータを一時的に記憶する記憶領域である。中間データバッファ３０ｂは、第３プロセッサ５３から出力されたデータを一時的に記憶する記憶領域である。イメージバッファ３０ｃは、第４プロセッサ５４から出力されたデータを一時的に記憶する領域である。
【００１６】
ＦＩＦＯモジュール４０は、先に入力したデータから先に出力するいわゆるファーストインファーストアウト方式でデータを記憶するものである。このＦＩＦＯモジュール４０は、メモリ部４０ａとフラグ設定部４０ｂとを含んで構成され、第２プロセッサ５２と第３プロセッサ５３とに接続されている。また、このＦＩＦＯモジュール４０は、データ転送モードと、データ強制入力モードと、データ強制出力モードとを有している。データ転送モードは、データを記憶すると共に記憶したデータを入力された順に出力し、出力したデータを削除するモードである。このデータ転送モードに設定されているときには、ＦＩＦＯモジュール４０のフラグ設定部４０ｂは、メモリ部４０ａの記憶容量に空きのないフル状態となったときにフルフラグＦｆを値１にセットしフル状態でなくなったときにフルフラグＦｆを値０にリセットする。また、メモリ部４０ａにデータが記憶されていないエンプティ状態となったときにエンプティフラグＦｅを値１に設定し、エンプティ状態でなくなったときに値０にリセットする。データ強制入力モードは、フル状態であってもフルフラグＦｆを値０とし、第２プロセッサ５２のこのＦＩＦＯモジュール４０へのデータの出力を受け付けてその出力されたデータを入力し、既に記憶されているデータに上書きするモードである。したがって、ＦＩＦＯモジュール４０に記憶されたデータのうちの上書きされた分だけデータが失われる。なお、入力したデータを上書きするかわりに破棄してもよい。データ強制出力モードは、エンプティ状態であってもエンプティフラグＦｅを値０とし、第３プロセッサ５３のこのＦＩＦＯモジュール４０からの入力を受け付けて第３プロセッサ５３へヌルデータを出力するモードである。したがって、出力されるデータはこのＦＩＦＯモジュールに入力されたデータと無関係なデータとなる。なお、ヌルデータを出力する代わりに意味のないデータ（例えば、ランダムな値）を出力してもよい。また、このＦＩＦＯモジュール４０は、入力したデータの記憶が完了したときに第２プロセッサ５２に入力完了信号を送信し、記憶しているデータの出力が完了したときに第３プロセッサ５３に出力完了信号を送信する。
【００１７】
第１プロセッサ５１は、第１処理として、画像データのデコード処理、リサイズ処理及びレイアウト処理を実行するものである。デコード処理はＪＰＥＧ画像データなどの符号化された画像データをデコードしＲＧＢ画像データを生成する処理である。リサイズ処理は、ＲＧＢ画像データの解像度を変換する処理である。レイアウト処理は、リサイズ後のＲＧＢ画像データによる画像を印刷用紙に合わせて配置するようにしたＲＧＢ画像データを生成する処理である。この第１プロセッサ５１は、メインプロセッサ７０からの第１処理の開始要求を表す第１処理開始要求を入力し、メインメモリ３０からの画像データの入力、第１処理及びメインメモリ３０へのデータの記憶の完了を表すメインプロセッサ７０への第１処理完了返答を出力する。
【００１８】
第２プロセッサ５２は、第２処理として、色変換処理及びスムージング処理を実行するものである。この第２プロセッサ５２は、メインメモリ３０から処理の対象となるＲＧＢデータをバス１２を介して入力し、色変換処理及びスムージング処理を実行し、処理後のデータをＦＩＦＯモジュール４０へ出力する。また、この第２プロセッサ５２は、ＦＩＦＯモジュール４０へのデータの出力が終了したあと及びフリーズしたときには、割り込み処理によるリセットを受け付けることが可能となっている。また、ＦＩＦＯモジュール４０へのデータの出力が終了するまでは割り込み処理によるリセットを受け付けることが不可能となっている。このため、色変換処理及びスムージング処理後のデータのＦＩＦＯモジュール４０への出力がＦＩＦＯモジュール４０に受け付けられない出力ロック状態となったときには、割り込み処理によるリセットを受け付けることが不可能である。また、第２プロセッサ５２は、データを一時記憶する内部メモリ５２ａを備えている。更に、この第２プロセッサ５２は、メインプロセッサ７０からの第２処理の開始要求を表す第２処理開始要求及びＦＩＦＯモジュール４０からの入力完了信号を入力し、メモリ３０からのＲＧＢ画像データの入力、第２処理及びＦＩＦＯモジュール４０へのデータの記憶の完了を表すメインプロセッサ７０への第２処理終了返答を出力する。
【００１９】
第３プロセッサ５３は、第３処理として、ハーフトーン処理のうちのエンコーディング処理（以下、ハーフトーンエンコード処理という）を実行するものである。この第３プロセッサ５３は、ＦＩＦＯモジュール４０から第２プロセッサ５２による色変換処理及びスムージング処理の実行後のデータを入力し、ハーフトーンエンコード処理を実行し、処理後のデータをバス１２を介してメインメモリ３０へ出力する。また、この第３プロセッサ５３は、ＦＩＦＯモジュール４０からのデータの入力が終了したあと及びフリーズしたときには、割り込み処理によるリセットを受け付けることが可能となっている。また、ＦＩＦＯモジュール４０からのデータの入力が終了するまでは割り込み処理によるリセットを受け付けることが不可能となっている。このため、色変換処理及びスムージング処理後のデータのＦＩＦＯモジュール４０からの入力がＦＩＦＯモジュール４０に受け付けらない入力ロック状態となったときには、割り込み処理によるリセットを受け付けることが不可能である。また、第３プロセッサ５３は、データを一時記憶する内部メモリ５３ａを備えている。更に、この第３プロセッサ５３は、メインプロセッサ７０からの第３処理の開始要求を表す第３処理開始要求及びＦＩＦＯモジュール４０からの出力完了信号を入力し、ＦＩＦＯモジュール４０からのデータの入力、第３処理及びメインメモリ３０へのデータの出力の完了を表すメインプロセッサ７０への第３処理終了返答を出力する。
【００２０】
第４プロセッサ５４は、第４処理として、ハーフトーン処理のうちのデコード処理（以下、ハーフトーンデコード処理という）、及び、２値化データの並び換え処理を実行するものである。この第４プロセッサ５４は、バス１２を介してデータを入力し、処理後のデータをバス１２を介してメインメモリ３０へ出力する。この第４プロセッサ５４は、メインプロセッサ７０からの第４処理の開始要求を表す第４処理開始要求を入力し、メインメモリ３０からのデータの入力、第４処理及びメインメモリ３０へのデータの記憶の完了を表すメインプロセッサ７０への第４処理完了返答を出力する。
【００２１】
メインプロセッサ７０は、画像処理装置２０の全体を制御するものである。このメインプロセッサ７０は、第１〜第４プロセッサ５１〜５４からそれぞれ第１〜第４処理終了返答を入力する。また、第１〜第４プロセッサ５１〜５４への第１〜第４処理開始要求や第２プロセッサ５２、第３プロセッサ５３及びＦＩＦＯモジュール４０へのリセット要求などを出力する。また、このメインプロセッサ７０は、ＦＩＦＯモジュール４０のフルフラグＦｆ及びエンプティフラグＦｅの値を検知することが可能である。
【００２２】
次に、こうして構成された本実施形態の画像処理装置２０の動作、特に、メインメモリ３０に記憶されたＪＰＥＧ画像データをハーフトーン処理の施されたイメージデータへと変換する動作について説明する。図２は、メインプロセッサ７０により実行される色変換・ハーフトーン処理ルーチンの一例を示すフローチャートである。このルーチンは、例えば、メインメモリ３０にＪＰＥＧ画像データが記憶された状態で、画像処理装置２０の図示しない画像処理ボタンが押下されて、画像処理の要求がメインプロセッサ７０に入力されたときに実行される。このルーチンを実行するとメインプロセッサ７０は、まず、画像データをＲＧＢ画像データへと変換する第１処理開始要求を第１プロセッサ５１に送信する（ステップＳ１００）。この第１処理開始要求を受信した第１プロセッサ５１は、メインメモリ３０に記憶されているＪＰＥＧ画像データをバス１２を介して入力し、入力したＪＰＥＧ画像データにデコード処理、リサイズ処理及びレイアウト処理を実行する。そして、これらの処理を実行した後のＲＧＢ画像データをバス１２を介してメインメモリ３０のＲＧＢデータバッファ３０ａへ出力し、第１処理の終了を表す第１処理終了返答をメインプロセッサ７０に送信する。
【００２３】
次に、メインプロセッサ７０は、第１プロセッサ５１からの第１処理終了返答を受信するのを待って（ステップＳ１１０）、閾値Ｔｒｅｆ１，Ｔｒｅｆ２を設定する（ステップＳ１２０）。ここで、ＲＯＭ３２には、予め実験やシミュレーション等によりこのＲＧＢ画像データのサイズと、メインプロセッサ７０が第２処理開始要求を第２プロセッサ５２に送信してから第２プロセッサ５２がＦＩＦＯモジュール４０へ第２処理を実行したあとのデータを出力するまでの時間との関係を示す第２処理完了時間テーブルが記憶されているものとする。また、このＲＯＭ３２には、予め実験やシミュレーション等によりこのＲＧＢ画像データのサイズと、メインプロセッサ７０が第３処理開始要求を第３プロセッサ５３に送信してから第３プロセッサ５３がメインメモリ３０へ第３処理を実行したあとのデータを出力するまでの時間との関係を示す第３処理完了時間テーブルが記憶されているものとする。そして、閾値Ｔｒｅｆ１は、ＲＧＢデータバッファ３０ａに記憶されたＲＧＢ画像データのサイズと、このＲＯＭ３２に記憶された第２処理完了時間テーブルとに基づいて、そのＲＧＢ画像データに第２処理を実行してＦＩＦＯモジュール４０へデータの出力を完了すると見込まれる時間にマージンを加えて設定するものとする。また、閾値Ｔｒｅｆ２は、ＲＧＢデータバッファ３０ａに記憶されたＲＧＢ画像データのサイズと、このＲＯＭ３２に記憶された第３処理完了時間テーブルとに基づいて、ＦＩＦＯモジュール４０に出力された第２処理を実行したあとのデータに第３処理を実行してメインメモリ３０へデータの出力を完了すると見込まれる時間にマージンを加えて設定するものとする。
【００２４】
続いて、第２処理開始要求を第２プロセッサ５２に送信すると共に（ステップＳ１３０）、タイマＴ１をリセットして、スタートさせる（ステップＳ１４０）。そして、第３処理開始要求を第３プロセッサ５３に送信すると共に（ステップＳ１５０）、タイマＴ２をリセットして、スタートさせる（ステップＳ１６０）。
【００２５】
ここで、第２処理開始要求を受信した第２プロセッサ５２の動作及び第３処理開始要求を受信した第３プロセッサ５３の動作について説明する。まず、第２プロセッサ５２の動作について説明する。図３は、第２プロセッサ５２により実行される色変換処理ルーチンの一例を示すフローチャートである。このルーチンは、第２プロセッサ５２が第２処理開始要求を受信したときに実行される。このルーチンが開始されると、第２プロセッサ５２は、まず、カウンタｉを値０にリセットする（ステップＳ３００）。次に、カウンタｉの値を値１だけインクリメントし（ステップＳ３１０）、第ｉライン内の１つのＲＧＢデータを取得し内部メモリ５２ａにコピーする（ステップＳ３２０）。ここで、ＲＧＢ画像データの内の同一のラインについて、最初にこのステップＳ３１０の処理を実行するときには、第ｉライン内の端のＲＧＢデータを取得し、以降このステップＳ３１０の処理を実行する度に、順次第ｉライン内の隣のＲＧＢデータを取得していくものとする。また、ＲＧＢ画像データの冒頭のラインを第１ラインとする。続いて、取得したＲＧＢデータに対してエッジ判定を実行し（ステップＳ３３０）、色空間をＲＧＢからＣＭＹＫへ変換する色変換処理を実行し（ステップＳ３４０）、エッジ情報に基づいてＣＭＹＫデータを補正するスムージング処理を実行する（ステップＳ３５０）。なお、エッジ判定、色変換処理及びスムージング処理は周知の方法で行うものとし、これらの処理は本発明の中核をなさないから、詳細な説明を省略する。そして、ＦＩＦＯモジュール４０内のフルフラグＦｆが値１か否かを判定する（ステップＳ３６０）。フルフラグＦｆが値１のときには、ＦＩＦＯモジュール４０がフル状態であるため、フル状態が解消されてフルフラグＦｆが値０となるまでステップＳ３６０の処理を繰り返し実行する。ステップＳ３６０でフルフラグＦｆが値０のときには、ＦＩＦＯモジュール４０へデータを出力する（ステップＳ３７０）。そして、ＦＩＦＯモジュール４０から入力完了信号を受信するのを待って（ステップＳ３８０）、第ｉライン内の全てのデータについてステップＳ３２０〜Ｓ３８０の処理を実行したか否かを判定する（ステップＳ３９０）。ここで、全てのデータについて処理を実行したか否かは、例えば、第１プロセッサ５１がＪＰＥＧ画像データをＲＧＢ画像データに変換する際に、そのＲＧＢ画像データの画像サイズをメインメモリ３０に記憶しておき、この記憶された画像サイズと、その第ｉラインのうちそれまでに処理したＲＧＢデータの数とから判定することができる。続いて、カウンタｉが値ｍ未満か否かを判定する（ステップＳ４００）。ここで、値ｍは、ＲＧＢ画像データを構成するラインの総数である。カウンタｉが値ｍ未満のときには、処理すべきラインが残っていると判断し、ステップＳ３１０〜３９０の処理を実行する。カウンタｉが値ｍ未満でないつまり値ｍになったときには、全てのラインについて処理が終了したと判断し、第２処理終了返答をメインプロセッサ７０に送信し（ステップＳ４１０）、本ルーチンを終了する。このようにして、ＲＧＢ画像データを構成する各点のＲＧＢデータをＣＭＹＫ画像データを構成する各点のＣＭＹＫデータへと色変換してＦＩＦＯモジュール４０へ出力するのである。
【００２６】
次に、第３プロセッサ５３の動作について説明する。図４は、第３プロセッサ５３により実行されるハーフトーンエンコード処理ルーチンの一例を示すフローチャートである。このルーチンは、第３プロセッサ５３が第３処理開始要求を受信したときに実行される。このルーチンが開始されると、第３プロセッサ５３は、まず、カウンタｊを値０にリセットする（ステップＳ５００）。次に、カウンタｊの値を値１だけインクリメントし（ステップＳ５１０）、ＣＭＹＫ画像データの第ｊライン用のハーフトーンエンコード処理用のエンコードテーブルのデータをバス１２を介してメインメモリ３０から読み出し内部メモリ５３ａに記憶する（ステップＳ５２０）。続いて、ＦＩＦＯモジュール４０内のエンプティフラグＦｅが値１か否かを判定する（ステップＳ５３０）。エンプティフラグＦｅが値１のときには、ＦＩＦＯモジュール４０がエンプティ状態であるため、エンプティ状態が解消されてエンプティフラグＦｅが値０となるまでステップＳ５３０の処理を繰り返し実行する。ステップＳ５３０でエンプティフラグＦｅが値０のときには、ＦＩＦＯモジュール４０から第ｉライン内の１つのデータを取得する（ステップＳ５４０）。ここで、ＦＩＦＯモジュール４０は、ＦＩＦＯ方式でデータの入出力を行うため、ＦＩＦＯモジュール４０が第２プロセッサ５２から入力した順に第３プロセッサ５３へデータを出力する。このため、第３プロセッサ５３は、ＦＩＦＯモジュール４０が第２プロセッサ５２から入力した順、即ち、ライン内の端から１つずつ隣に移動していく順にデータを入力することになる。そして、ＦＩＦＯモジュール４０から出力完了信号を受信するのを待って（ステップＳ５５０）、ハーフトーンエンコード処理を実行して（ステップＳ５６０）、処理後のデータを中間データとしてメインメモリ３０の中間データバッファ３０ｂへ出力する（ステップＳ５７０）。なお、ハーフトーンエンコード処理は周知の方法で行うものとし、この処理は本発明の中核をなさないから、詳細な説明を省略する。続いて、第ｊライン内の全てのデータについてステップＳ５３０〜Ｓ５７０の処理を実行したか否かを判定する（ステップＳ５８０）。ここで、全てのデータについて処理を実行したか否かは、例えば、第１プロセッサがＪＰＥＧ画像データをＲＧＢ画像データに変換する際に、そのＲＧＢ画像データの画像サイズをメインメモリ３０に記憶しておき、この記憶された画像サイズと、その第ｊラインのうちそれまでに処理したＣＭＹＫデータの数とから判定することができる。続いて、カウンタｊが値ｍ未満か否かを判定する（ステップＳ５９０）。ここで、値ｍは、ＲＧＢ画像データを構成するラインの総数である。カウンタｊが値ｍ未満のときには、処理すべきラインが残っていると判断し、ステップＳ５１０〜５８０の処理を再度実行する。カウンタｊが値ｍ未満でないつまり値ｍになったときには、全てのラインについて処理が完了したと判断し、第３処理終了返答をメインプロセッサ７０に送信し（ステップＳ６００）、本ルーチンを終了する。
【００２７】
さて、図２のフローチャートに戻り、メインプロセッサ７０は、ステップＳ１６０でタイマＴ２をリセット・スタートしたあと、第２処理終了返答を第２プロセッサ５２から受信したか否かを判定する（ステップＳ１７０）。第２処理終了返答を受信していないときには、タイマＴ１が閾値Ｔｒｅｆ１を超えたか否かを判定し（ステップＳ１８０）、タイマＴ１が閾値Ｔｒｅｆ１以下のときには、再度ステップＳ１７０の処理を実行する。なお、第２処理終了返答を受信していない場合には、当然、第３処理終了返答も受信していないことになる。ステップＳ１７０で第２処理終了返答を受信したときには、第３処理終了返答を第３プロセッサから受信したか否かを判定する（ステップＳ１９０）。第３処理終了返答を受信していないときには、タイマＴ２が閾値Ｔｒｅｆ２を超えたか否かを判定し（ステップＳ２００）、タイマＴ２が閾値Ｔｒｅｆ２以下のときには、再度ステップＳ１９０の処理を実行する。ステップＳ１９０で第３処理終了返答を受信したときには、第４プロセッサ５４に、第４処理開始要求を送信し（ステップＳ２１０）、その後第４処理終了返答を受信するのを待って、本ルーチンを終了する。この第４処理開始要求を受信した第４プロセッサ５４は、中間データバッファ３０ｂからバス１２を介して中間データを入力し、第４処理として、ハーフトーン処理のデコード処理及び２値化処理を実行し、処理後のデータをイメージデータとしてイメージバッファ３０ｃへ出力する。なお、ハーフトーン処理のデコード処理及び２値化処理は周知の方法で行うものとし、これらの処理は本発明の中核をなさないから、詳細な説明を省略する。
【００２８】
ここで、第２及び第３処理終了返答を正常に受信した場合のメインプロセッサ７０、第２プロセッサ５２、第３プロセッサ５３及びＦＩＦＯモジュール４０の動作について図を用いて説明する。図５は、メインプロセッサ７０、第２プロセッサ５２、第３プロセッサ５３及びＦＩＦＯモジュール４０の動作を説明する説明図である。図示するように、メインプロセッサ７０からの第２及び第３処理開始要求のあったあとは、第２プロセッサ５２によるＦＩＦＯモジュール４０へのデータの出力と、第３プロセッサ５３によるＦＩＦＯモジュール４０からのデータの入力とを繰り返し実行する。そして、第２プロセッサ５２は、カウンタｉが値ｍとなって処理すべきラインが無くなると、第２処理終了返答をメインプロセッサ７０へ送信し、第３プロセッサ５３は、カウンタｊが値ｍとなって処理すべきラインが無くなると、第３処理終了返答をメインプロセッサ７０へ送信する。
【００２９】
さて、図２のフローチャートに戻り、メインプロセッサ７０は、ステップＳ１８０で、タイマＴ１が閾値Ｔｒｅｆ１を超えたと判定したときには、ＦＩＦＯモジュール４０がフル状態か否かを判定する（ステップＳ２２０）。ここで、ＦＩＦＯモジュール４０がフル状態か否かは、ＦＩＦＯモジュール４０のフルフラグＦｆが値１か否かを確認することにより行うものとする。また、ＦＩＦＯモジュール４０がフル状態となるのは、例えば、第３プロセッサ５３がフリーズしてＦＩＦＯモジュール４０から第２処理の実行されたあとのデータを入力する動作を停止した場合が考えられる。ＦＩＦＯモジュール４０がフル状態のときには、ＦＩＦＯモジュール４０が出力ロック状態になっていると判断し、フル状態解除指令をＦＩＦＯモジュール４０に送信し（ステップＳ２３０）、第２プロセッサ５２から第２処理終了返答を受信したか否かを判定する（ステップＳ２４０）。フル状態解除指令を受信したＦＩＦＯモジュール４０は、データ強制入力モードへと切り替える。すると、第２プロセッサ５２は、第２処理を実行したデータをＦＩＦＯモジュール４０へ出力すると共に、ＦＩＦＯモジュール４０は、データの入力を受け付け、その入力したデータを既に記憶したデータに上書きし入力完了信号を第２プロセッサへ送信する。こうすることで、やがて、第２プロセッサ５２はＦＩＦＯモジュール４０へのデータの出力を終了し、メインプロセッサ７０へ第２処理終了返答を送信すると共に、割り込み処理によるリセットを受け付けられる状態となる。一方、ステップＳ２２０でＦＩＦＯモジュール４０がフル状態でないときには、ＦＩＦＯモジュール４０がエンプティ状態か否かを判定する（ステップＳ２５０）。ここで、ＦＩＦＯモジュール４０がエンプティ状態か否かは、ＦＩＦＯモジュール４０のエンプティフラグＦｅが値１か否かを確認することにより行うものとする。ＦＩＦＯモジュール４０がエンプティ状態のときには、ＦＩＦＯモジュール４０が入力ロック状態になっていると判断し、エンプティ状態解除指令をＦＩＦＯモジュール４０に送信し（ステップＳ２６０）、第３プロセッサ５３から第３処理終了返答を受信したか否かを判定する（ステップＳ２７０）。ここで、エンプティ状態解除指令を受信したＦＩＦＯモジュール４０は、データ強制出力モードへと切り替える。すると、ＦＩＦＯモジュール４０は、ヌルデータを第３プロセッサ５３へ出力すると共に、第３プロセッサ５３は、色変換処理及びスムージング処理を実行したあとのデータをＦＩＦＯモジュール４０から入力し、第３処理を実行して、処理後のデータをバス１２を介してメインメモリ３０のイメージバッファ３０ｃに出力する。こうすることで、やがて、第３プロセッサ５３は、ＦＩＦＯモジュール４０からのデータの入力を終了し、メインプロセッサ７０へ第３処理終了返答を送信すると共に、割り込み処理によるリセットを受け付けられる状態となる。
【００３０】
ステップＳ２４０で第２処理終了返答を受信したとき、ステップＳ２７０で第３処理終了返答を受信したとき、ステップＳ２５０でＦＩＦＯモジュール４０はエンプティ状態でないと判定したとき又はステップＳ２００でタイマＴ２が閾値Ｔｒｅｆ２を超えたと判定したときには、第２及び第３プロセッサ５２，５３をリセットし（ステップＳ２８０）、ＦＩＦＯモジュール４０をリセットする（ステップＳ２９０）。そして、ステップＳ１３０以降の処理を実行することによって、第２処理開始要求を第２プロセッサ５２に送信すると共に第３処理開始要求を第３プロセッサ５３に再送信する。なお、ステップＳ２５０でＦＩＦＯモジュール４０がエンプティ状態でないと判定したときには、フル状態でもないことから、第２及び第３プロセッサ５２，５３が共にフリーズしたと判断して、両者をリセットして各処理開始要求を再送信するのである。
【００３１】
ここで、データ処理中に第２プロセッサ５２の出力ロック状態が発生するときのメインプロセッサ７０，第２及び第３プロセッサ５２，５３、ＦＩＦＯモジュール４０の動作を図を用いて説明する。図６は第２プロセッサ５２の出力ロック状態が発生するときのメインプロセッサ７０，第２及び第３プロセッサ５２，５３、ＦＩＦＯモジュール４０の動作説明図である。まず、メインプロセッサ７０は、第２プロセッサ５２に第２処理開始要求を送信してタイマＴ１をスタートさせ（時刻ｔ１）、第３プロセッサ５３に第３処理開始要求を送信してタイマＴ２をスタートさせる（時刻ｔ２）。その後、第３プロセッサ５３がフリーズすると（時刻ｔ３）、ＦＩＦＯモジュール４０がフル状態となって、第２プロセッサからのデータの出力をＦＩＦＯモジュール４０が受け付けなくなる。この結果、第２プロセッサ５２は、同じデータのＦＩＦＯモジュール４０のフルフラグＦｆの判定を繰り返し行う状態となる。このとき、ＦＩＦＯモジュール４０からの入力完了信号は第２プロセッサ５２には送信されず、第２プロセッサ５２からの第２処理終了返答もメインプロセッサ７０には送信されない。また、第３プロセッサ５３はフリーズしているため、第３処理終了返答もメインプロセッサ７０には送信されない。そして、タイマＴ１が閾値Ｔｒｅｆ１を超えると（時刻ｔ４）、メインプロセッサ７０は、ＦＩＦＯモジュール４０へフル状態解除指令を送信する（時刻ｔ５）。すると、ＦＩＦＯモジュール４０はデータ強制入力モードに切り替え、第２プロセッサ５２からのデータの入力を受け付けられるようになって、やがて入力完了信号を第２プロセッサ５２に出力する（時刻ｔ６）。すると、第２プロセッサは第２処理終了返答をメインプロセッサ７０に送信する（時刻ｔ７）。すると、この第２処理終了返答を受信したメインプロセッサ７０は、割り込み処理により第２プロセッサ５２をリセットし（時刻ｔ８）、第３プロセッサ５３をリセットし（時刻ｔ９）、ＦＩＦＯモジュール４０をリセットする（時刻ｔ１０）。そして、第２プロセッサ５２に第２処理開始要求を再送信し（時刻ｔ１１）、第３プロセッサ５３に第３処理開始要求を再送信する（時刻ｔ１２）。
【００３２】
次に、データ処理中に第３プロセッサ５３の入力ロック状態が発生するときのメインプロセッサ７０，第２及び第３プロセッサ５２，５３、ＦＩＦＯモジュール４０の動作を図を用いて説明する。図７は第３プロセッサ５２の入力ロック状態が発生するときのメインプロセッサ７０，第２及び第３プロセッサ５２，５３、ＦＩＦＯモジュール４０の動作説明図である。まず、メインプロセッサ７０は、第２プロセッサ５２に第２処理開始要求を送信してタイマＴ１をスタートさせ（時刻ｔ２１）、第３プロセッサ５３に第３処理開始要求を送信してタイマＴ２をスタートさせる（時刻ｔ２２）。その後、第２プロセッサ５２がフリーズすると（時刻ｔ２３）、ＦＩＦＯモジュール４０がエンプティ状態となって、第３プロセッサがＦＩＦＯモジュール４０からデータを入力するのをそのＦＩＦＯモジュール４０が受け付けなくなる。この結果、第３プロセッサ５３は、ＦＩＦＯモジュール４０のエンプティフラグＦｅの判定を繰り返し行う状態となる。このとき、ＦＩＦＯモジュール４０からの出力完了信号は第３プロセッサ５３には送信されず、第３プロセッサ５３らの第３処理終了返答もメインプロセッサ７０には送信されない。また、第２プロセッサ５２はフリーズしているため、第２処理終了返答もメインプロセッサ７０には送信されない。そして、タイマＴ１が閾値Ｔｒｅｆ１を超えると（時刻ｔ２４）、メインプロセッサ７０は、ＦＩＦＯモジュール４０へエンプティ状態解除指令を送信する（時刻ｔ２５）。すると、ＦＩＦＯモジュール４０はデータ強制出力モードに切り替え、第３プロセッサ５３へのデータの出力を受け付けられるようになって、やがて出力完了信号を第３プロセッサ５３に出力する（時刻ｔ２６）。すると、第３プロセッサは第３処理終了返答をメインプロセッサ７０に送信する（時刻ｔ２７）。すると、この第３処理終了返答を受信したメインプロセッサ７０は、割り込み処理により第２プロセッサ５２をリセットし（時刻ｔ２８）、第３プロセッサ５３をリセットし（時刻ｔ２９）、ＦＩＦＯモジュール４０をリセットする（時刻ｔ３０）。そして、第２プロセッサ５２に第２処理開始要求を再送信し（時刻ｔ３１）、第３プロセッサ５３に第３処理開始要求を再送信する（時刻ｔ３２）。
【００３３】
ここで、本実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。本実施形態の画像処理装置２０が本発明のマルチプロセッサシステムに相当し、第２プロセッサ５２が前段プロセッサに相当し、第３プロセッサ５３が後段プロセッサに相当する。また、第２処理が前段処理に相当し、第３処理が後段処理に相当し、第２処理開始要求が前段処理開始要求に相当し、第３処理開始要求が後段処理開始要求に相当し、第２処理終了返答が前段処理終了返答に相当し、第３処理終了返答が後段処理終了返答に相当する。
【００３４】
以上詳述した本実施形態の画像処理装置２０によれば、データ処理中にＦＩＦＯモジュール４０にアクセスを受け付けられないロック状態となったときにリセットを受け付けない第２及び第３プロセッサ５２，５３を含んで構成されていても、ロック状態から復旧してデータ処理をやり直すことができる。また、各プロセッサ５２，５３がロック状態か否かの判定を各処理開始要求を送信したあとの経過時間とＦＩＦＯモジュール４０の状態（フル又はエンプティ）に基づいて行うため、比較的容易且つ確実に判定することができる。
【００３５】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【００３６】
例えば、上述した実施形態では、入力ロック状態及び出力ロック状態の両方のロック状態を解除可能なものとしたが、どちらか一方の状態のみ解除可能なものとしてもよい。例えば、第２プロセッサ５２の出力ロック状態のみ解除可能とする場合には、ステップＳ２５０〜Ｓ２７０の処理を省略すればよい。また、第３プロセッサ５３の入力ロック状態のみ解除可能とする場合は、ステップＳ２２０〜Ｓ２４０の処理を省略すればよい。
【００３７】
上述した実施形態では、図２の色変換・ハーフトーン処理ルーチンを実行し、第２処理終了返答及び第３処理終了返答を受信したか否かを判定するものとしたが、第３処理終了返答を受信したか否かのみ判定するものとしてもよい。具体的には、図８に示す色変換・ハーフトーン処理ルーチンを実行するものとしてもよい。この図８において、図２と同じ処理については同じステップ番号を付してその説明を省略する。図８に示すように、ステップＳ１１０で肯定判定されたときには、閾値Ｔｒｅｆ２を設定する（ステップＳ７００）。この処理は、閾値Ｔｒｅｆ１を設定しない以外はステップＳ１２０と同様の処理である。そして、ステップＳ１３０，Ｓ１５０，Ｓ１６０，Ｓ１９０の処理を実行し、ステップＳ１９０で第３処理終了返答を受信していないときには、ステップＳ２００以降の処理を実行し、第３処理終了返答を受信したときには、ステップＳ２１０以降の処理を実行するものとしてもよい。
【００３８】
上述した実施形態では、図２のルーチンのステップＳ２５０でＦＩＦＯモジュール４０がエンプティ状態であると判定したときには、ステップＳ２６０，Ｓ２７０の処理を実行してから、ステップＳ２８０で第２プロセッサをリセットするものとしたが、ステップＳ２５０でＦＩＦＯモジュール４０がエンプティ状態であると判定したときには、第２プロセッサ５２をリセットしてから、ステップＳ２６０，Ｓ２７０の処理を実行するものとしてもよい。また、図２のルーチンのステップＳ２２０でＦＩＦＯモジュール４０がフル状態であると判定したときには、ステップＳ２３０，Ｓ２４０の処理を実行してから、ステップＳ２８０で第３プロセッサ５３をリセットするものとしたが、ステップＳ２２０でＦＩＦＯモジュール４０がフル状態であると判定したときには、第３プロセッサをリセットしてから、ステップＳ２３０，Ｓ２４０の処理を実行するものとしてもよい。
【００３９】
上述した実施形態では、第２プロセッサ５２と第３プロセッサ５３との間にＦＩＦＯモジュール４０を設けた構成としたが、パイプライン処理によりデータ処理を実行するものであれば、第２プロセッサ５２と第３プロセッサ５３との間以外のプロセッサ間にＦＩＦＯモジュールを設ける構成としてもよい。例えば、第１プロセッサ５１と第２プロセッサ５２との間にＦＩＦＯモジュールを設ける構成としてもよい。このとき、第１プロセッサは、第１処理を実行したあとのＲＧＢデータをこのＦＩＦＯモジュールに出力し、第２プロセッサ５２は、このＦＩＦＯモジュールからＲＧＢデータを入力する。なお、第３プロセッサ５３と第４プロセッサ５４との間についても同様である。
【００４０】
上述した実施形態では、第２プロセッサ５２は、フルフラグＦｆが値０となるまでＦＩＦＯモジュール４０へのデータの出力を試行せずフルフラグＦｆが値１か否かの判定を繰り返し実行するものとしたが、フルフラグＦｆの値を判定せず、入力完了信号を受信していない間は、入力完了信号が受信されると見込まれる所定時間が経過する毎にＦＩＦＯモジュール４０への同じデータの出力を試行するものとしてもよい。また、第３プロセッサ５３は、エンプティフラグＦｅが値０となるまでＦＩＦＯモジュール４０からのデータの入力を試行せずエンプティフラグＦｅが値１か否かの判定を繰り返し実行するものとしたが、エンプティフラグＦｅの値を判定せず、出力完了信号を受信していない間は、出力完了信号が受信されると見込まれる所定時間が経過する毎にＦＩＦＯモジュール４０からのデータの入力を試行するものとしてもよい。
【００４１】
上述した実施形態では、ＪＰＥＧ画像ファイルからハーフトーン処理されたイメージデータを得るまでの処理を実行するものとして説明したが、２以上のプロセッサにより一連の処理をパイプライン処理によって分担して処理し、プロセッサの間にＦＩＦＯモジュールを介してデータのやり取りを行うものであれば、如何なる処理を実行するものに適用しても構わない。
【図面の簡単な説明】
【００４２】
【図１】画像処理装置２０の構成の概略を示す構成図。
【図２】色変換・ハーフトーン処理ルーチンの一例を示すフローチャート。
【図３】色変換処理ルーチンの一例を示すフローチャート。
【図４】ハーフトーンエンコード処理ルーチンの一例を示すフローチャート。
【図５】第２及び第３プロセッサ５２，５３等の正常時の動作説明図。
【図６】第２及び第３プロセッサ５２，５３等の出力ロック状態での動作説明図。
【図７】第２及び第３プロセッサ５２，５３等の入力ロック状態での動作説明図。
【図８】他の色変換・ハーフトーン処理ルーチンの一例を示すフローチャート。
【図９】従来のマルチプロセッサシステム１００の構成の概略を示す構成図。
【符号の説明】
【００４３】
１２  バス、２０  画像処理装置、３０  メインメモリ、３０ａ  ＲＧＢデータバッファ、３０ｂ  中間データバッファ、３０ｃ  イメージバッファ、３２  ＲＯＭ、４０  ＦＩＦＯモジュール、４０ａ  メモリ部、４０ｂ  フラグ設定部、５１  第１プロセッサ、５２  第２プロセッサ、５２ａ，５３ａ  内部メモリ、５３  第３プロセッサ、５４  第４プロセッサ、７０  メインプロセッサ。
【図１】
2010039618.tif 000003
【図２】
2010039618.tif 000004
【図３】
2010039618.tif 000005
【図４】
2010039618.tif 000006
【図５】
2010039618.tif 000007
【図６】
2010039618.tif 000008
【図７】
2010039618.tif 000009
【図８】
2010039618.tif 000010
【図９】
2010039618.tif 000011