(57)【要約】【課題】  共有ＲＡＭに頼ることなく、複数の中央処理装置のチップ間通信を減らすこと。【解決手段】  データ記憶手段２３は、データを記憶する。中央処理装置２と、他の中央処理装置１とは、通信路３を介して接続される。中央処理装置２は、データ記憶手段２３へのデータ書込みに基づいて、データ記憶手段２３に記憶されているデータを、当該通信路３を介して当該他の中央処理装置１へ送信する。また、中央処理装置２は、通信路３により接続された他の中央処理装置１からコールバックを要求する通知があると、その通知を実行するタスクをタスク記憶手段２３に登録し、データ記憶手段２３へのデータ書込みがあると、その書込み後のデータを他の中央処理装置１へ送信した後に、タスク記憶手段２３の登録に基づいてコールバックのための通知を実行する。【選択図】  図１
2006350892.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するデータ記憶手段と、
通信路を介して他の中央処理装置が接続され、上記データ記憶手段へのデータ書込みに基づいて、上記データ記憶手段に記憶されているデータを、当該通信路を介して当該他の中央処理装置へ送信する中央処理装置と、
を有することを特徴とするマルチＣＰＵ装置。
【請求項２】
前記中央処理装置に実行させるタスクを記憶するタスク記憶手段を有し、
前記中央処理装置は、前記通信路により接続された前記他の中央処理装置からコールバックを要求する通知があると、その通知を実行するタスクを上記タスク記憶手段に登録し、前記データ記憶手段へのデータ書込みがあると、その書込み後のデータを前記他の中央処理装置へ送信した後に、上記タスク記憶手段の登録に基づいて上記コールバックのための通知を実行すること、
を特徴とする請求項１記載のマルチＣＰＵ装置。
【請求項３】
前記中央処理装置は、前記他の中央処理装置からの前記コールバックの通知に基づく処理の完了が通知された後に、前記コールバックの通知を実行するタスクの実行の後に実行するタスクを実行することを特徴とする請求項１または２記載のマルチＣＰＵ装置。
【請求項４】
通信路を介して他の中央処理装置が接続される中央処理装置により、データ記憶手段にデータを書き込むステップと、
上記データの書込みに基づいて、上記データ記憶手段に記憶されているデータを他の中央処理装置へ送信するステップと、
を有することを特徴とするＣＰＵ間通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチＣＰＵ装置およびＣＰＵ間通信方法に関する。
【背景技術】
【０００２】
特許文献１は、プリンタを開示する。このプリンタは、複数の「タスク」（「プロセス」と呼ばれることもある）のいずれかを排他的に実行するＣＰＵを有する。具体的にはたとえば、ＣＰＵは、印刷処理言語解釈タスク、印刷処理タスク、遅延タスク、印刷制御タスク、印刷タスクなどのタスクを排他的に選択して実行する。
【０００３】
【特許文献１】特開２００１−１５９８号公報（発明の詳細な説明、図面など）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１にあるように、プリンタなどの各種のコンピュータ制御機器は、その中央処理装置が、各種のタスクを実行することで所望の機能を実現している。このようなコンピュータ制御機器においてその処理能力や処理速度を向上させる場合、１つの選択肢として、複数の中央処理装置を用い、その複数の中央処理装置に機能を分散させることが考えられる。
【０００５】
しかしながら、たとえば１つの装置の機能を複数の中央処理装置に分散させて実現しようとする場合、以下のような課題がある。
【０００６】
１つの装置の機能を複数の中央処理装置にて実現する場合、その複数の中央処理装置同士をたとえば通信路で接続する。そして、ある中央処理装置は、そのタスク実行に基づいて、他の中央処理装置が保持するデータへアクセスすることになる。この場合、各中央処理装置は、他の中央処理装置が保持するデータを利用する度に、通信路を用いて他の中央処理装置に頻繁にアクセスしなければならない。複数の中央処理装置を使用することによるパフォーマンスの向上効果を、期待通りに得ることは難しい。
【０００７】
このような問題を解決するための１つの手法として、複数の中央処理装置が共通してアクセス可能な共有ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を使用することが考えられる。しかしながら、共有ＲＡＭは一般的なＲＡＭに比べて割高であり、また、共有ＲＡＭへのアクセスの排他制御などの処理が必要である。その結果、共有ＲＡＭを使用した場合、システムの高価格化や複雑化を避けることができない。また、共有ＲＡＭへのアクセスの排他制御により、メモリアクセスレイテンシによるパフォーマンス低下が発生し、複数の中央処理装置を使用したことによるメリットを得難くなってしまう。
【０００８】
本発明は、共有ＲＡＭに頼ることなく、複数の中央処理装置のチップ間通信を減らすことができるマルチＣＰＵ装置およびＣＰＵ間通信方法を得ることを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係るマルチＣＰＵ装置は、データを記憶するデータ記憶手段と、通信路を介して他の中央処理装置が接続され、データ記憶手段へのデータ書込みに基づいて、データ記憶手段に記憶されているデータを、当該通信路を介して当該他の中央処理装置へ送信する中央処理装置と、を有するものである。
【００１０】
この構成を採用すれば、中央処理装置は、データ記憶手段に記憶されるデータを他の中央処理装置へ送信することができる。他の中央処理装置は、その受信したデータを使用することができる。その結果、他の中央処理装置は、データ記憶手段に記憶されるデータを利用する度に、データ記憶手段にアクセスする必要がなくなる。共有ＲＡＭに頼ることなく、複数の中央処理装置によるチップ間通信の回数を減らすことができる。
【００１１】
本発明に係るマルチＣＰＵ装置は、上述した発明の構成に加えて、中央処理装置に実行させるタスクを記憶するタスク記憶手段を有し、中央処理装置が、通信路により接続された他の中央処理装置からコールバックを要求する通知があると、その通知を実行するタスクをタスク記憶手段に登録し、データ記憶手段へのデータ書込みがあると、その書込み後のデータを他の中央処理装置へ送信した後に、タスク記憶手段の登録に基づいてコールバックのための通知を実行するものである。
【００１２】
この構成を採用すれば、中央処理装置は、データ記憶手段へのデータ書込みに基づいて、他の中央処理装置へコールバックのための通知を実行することができる。これにより、他の中央処理装置は、コールバック通知に基づいて、更新されたデータを用いて、タスクを実行することができる。
【００１３】
本発明に係るマルチＣＰＵ装置は、上述した発明の各構成に加えて、中央処理装置が、他の中央処理装置からのコールバックの通知に基づく処理の完了が通知された後に、コールバックの通知を実行するタスクの実行の後に実行するタスクを実行するものである。
この構成を採用すれば、中央処理装置で実行されるタスクおよび他の中央処理装置で実行されるタスクを、それらのタスクを１つの中央処理装置で実行した場合と同様の順番で実行することができる。
【００１４】
本発明に係るＣＰＵ間通信方法は、通信路を介して他の中央処理装置が接続される中央処理装置により、データ記憶手段にデータを書き込むステップと、データの書込みに基づいて、データ記憶手段に記憶されているデータを他の中央処理装置へ送信するステップと、を有するものである。
【００１５】
この方法を採用すれば、データ記憶手段が記憶するデータが書込みにより更新されると、他の中央処理装置へ送信される。他の中央処理装置は、その受信したデータを使用することができる。その結果、他の中央処理装置は、データ記憶手段に記憶されるデータを利用する度に、データ記憶手段にアクセスする必要がなくなる。共有ＲＡＭに頼ることなく、複数の中央処理装置によるチップ間通信の回数を減らすことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態に係るマルチＣＰＵ装置およびＣＰＵ間通信方法を、図面に基づいて説明する。ＣＰＵ間通信方法は、マルチＣＰＵ装置の動作の一部として説明する。
【００１７】
図１は、本発明の実施の形態に係るマルチＣＰＵ装置を示す装置構成図である。マルチＣＰＵ装置は、フロントエンドチップ１と、バックエンドチップ２との２つのＩＣチップを有する。
【００１８】
フロントエンドチップ１は、中央処理装置１１と、ＲＡＭ１２と、データ記憶手段およびタスク記憶手段としての記憶デバイス１３と、ＬＶＤＳ（Ｌｏｗ  Ｖｏｌｔａｇｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｓｉｇｎａｌｉｎｇ）Ｉ／Ｆ１４と、これらを接続するシステムバス１５と、を有する。また、バックエンドチップ２は、中央処理装置２１と、ＲＡＭ２２と、データ記憶手段およびタスク記憶手段としての記憶デバイス２３と、ＬＶＤＳＩ／Ｆ２４と、これらを接続するシステムバス２５と、を有する。
【００１９】
フロントエンドチップ１のＬＶＤＳＩ／Ｆ１４は、バックエンドチップ２のＬＶＤＳＩ／Ｆ２４と、通信路としての信号線３により接続される。ＬＶＤＳＩ／Ｆ１４，２４は、送信するデータが供給されると、差動電圧信号を信号線３へ出力する。差動電圧信号は、たとえば約０．９Ｖ程度の振幅を有する正弦波が、送信データに応じて変調された信号であればよい。ＬＶＤＳＩ／Ｆ１４，２４は、信号線３から差動電圧信号を受信する。ＬＶＤＳＩ／Ｆ１４，２４は、受信した差動電圧信号から、受信データを生成する。
【００２０】
フロントエンドチップ１の記憶デバイス１３は、フロントエンドＡＰ（アプリケーション）プログラム３１と、ＲＴＯＳ（リアルタイムオペレーティングシステム）ブリッジプログラム３２と、ＲＴＯＳプログラム３３と、通信プロトコルハンドラプログラム３４と、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ドライバプログラム３５と、を記憶する。
【００２１】
バックエンドチップ２の記憶デバイス２３は、バックエンドＡＰプログラム４１と、ＲＴＯＳブリッジプログラム４２と、ＲＴＯＳプログラム４３と、通信プロトコルハンドラプログラム４４と、Ｉ／Ｏドライバプログラム４５と、を記憶する。
【００２２】
フロントエンドチップ１の中央処理装置１１は、記憶デバイス１３に記憶されるこれらのプログラムをＲＡＭ１２に読み込んで実行することで、各種の機能を実現する。バックエンドチップ２の中央処理装置２１は、記憶デバイス２３に記憶されるこれらのプログラムをＲＡＭ２２に読み込んで実行することで、各種の機能を実現する。
【００２３】
図２は、図１のマルチＣＰＵ装置に実現される機能のスタック構造を示す図である。  
【００２４】
フロントエンドチップ１の中央処理装置１１は、具体的には、フロントエンドＡＰプログラム３１をＲＡＭ１２に読み込んで実行することで、フロントエンドＡＰ部５１を実現する。中央処理装置１１は、ＲＴＯＳブリッジプログラム３２をＲＡＭ１２に読み込んで実行することで、ＲＴＯＳブリッジ部５２を実現する。中央処理装置１１は、ＲＴＯＳプログラム３３をＲＡＭ１２に読み込んで実行することで、ＲＴＯＳ部５３を実現する。中央処理装置１１は、通信プロトコルハンドラプログラム３４をＲＡＭ１２に読み込んで実行することで、通信プロトコルハンドラ部５４を実現する。中央処理装置１１は、Ｉ／Ｏドライバプログラム３５をＲＡＭ１２に読み込んで実行することで、Ｉ／Ｏドライバ部５５を実現する。
【００２５】
バックエンドチップ２の中央処理装置２１は、具体的には、バックエンドＡＰプログラム４１をＲＡＭ２２に読み込んで実行することで、バックエンドＡＰ部６１を実現する。中央処理装置２１は、ＲＴＯＳブリッジプログラム４２をＲＡＭ２２に読み込んで実行することで、ＲＴＯＳブリッジ部６２を実現する。中央処理装置２１は、ＲＴＯＳプログラム４３をＲＡＭ２２に読み込んで実行することで、ＲＴＯＳ部６３を実現する。中央処理装置２１は、通信プロトコルハンドラプログラム４４をＲＡＭ２２に読み込んで実行することで、通信プロトコルハンドラ部６４を実現する。中央処理装置２１は、Ｉ／Ｏドライバプログラム４５をＲＡＭ２２に読み込んで実行することで、Ｉ／Ｏドライバ部６５を実現する。
【００２６】
Ｉ／Ｏドライバ部５５，６５は、送信データをＬＶＤＳＩ／Ｆ１４，２４へ供給する。Ｉ／Ｏドライバ部５５，６５は、ＬＶＤＳＩ／Ｆ１４，２４から受信データを供給される。
【００２７】
通信プロトコルハンドラ部５４，６４は、送信するデータが供給されると、そのデータを元データとして、所定の通信プロトコルにより送信するための送信データを生成する。通信プロトコルハンドラ部５４，６４は、生成した送信データを、Ｉ／Ｏドライバ部５５，６５へ供給する。通信プロトコルハンドラ部５４，６４は、Ｉ／Ｏドライバ部５５，６５から受信データが供給されると、そのデータを所定の通信プロトコルにより処理し、元データを生成する。
【００２８】
ＲＴＯＳ部５３，６３は、中央処理装置１１，２１によるプログラムの実行を管理する。中央処理装置１１，２１は、上述した各種のプログラムを実行することで、タスクを生成する。ＲＴＯＳを使用する場合、上述した各種のプログラムは、一般的に複数の関数の集合体として記述される。関数は、たとえば機能に対応する。中央処理装置１１，２１は、たとえばこの関数毎にタスクを生成する。
【００２９】
タスクの管理状態としては、実行状態、実行可能状態、待ち状態、休止状態などがある。タスクの実行状態とは、現在、そのタスクが中央処理装置１１，２１により実行されている状態である。タスクの実行可能状態とは、タスク側の実行準備が整っているが、中央処理装置１１，２１により実行されていない状態である。実行可能状態にあるタスクが複数ある場合において、実行状態のタスクの実行が終了すると、中央処理装置１１，２１は、その実行可能状態にあるタスクの中の最も優先度が高いタスクを実行する。タスクの待ち状態とは、タスク側の実行準備が整っていない状態である。たとえば、タスクが、イベントフラグのクリアを待っている状態である。タスクの休止状態とは、タスクが起動されていない状態である。一般的なタスクは、新しく生成されると、まずこの状態になる。
【００３０】
ＲＴＯＳ部５３，６３は、プログラムに基づいて中央処理装置１１，２１により生成されるタスクの状態を管理する。ＲＴＯＳ部５３，６３は、たとえば、待ち状態にあるタスクや休止状態にあるタスクを、実行可能状態にする。ＲＴＯＳ部５３，６３は、実行状態のタスクの実行が完了すると、実行可能状態にあるタスクの中から優先度が高いものを、次に実行するタスクとして選択する。中央処理装置１１，２１は、ＲＴＯＳ部５３，６３により選択されたタスクを実行する。ＲＴＯＳ部５３，６３は、実行が完了した不要なタスクを、休止状態にする。
【００３１】
また、ＲＴＯＳ部５３，６３は、タスク間通信機能を有する。タスク間通信機能には、たとえばタスク間メッセージや、イベントフラグなどがある。タスク間通信機能を用いることで、あるタスク（以下、タスクＡとよぶ）は、他のタスク（以下、タスクＢとよぶ）へデータを供給したり、そのタスクの状態を通知したりすることができる。
【００３２】
タスク間メッセージを使用する場合、たとえばＲＴＯＳ部５３は、タスクＢへ引き渡すパラメータデータを、パラメータブロックとして、ＲＡＭ１２のメモリ空間に書き込む。ＲＴＯＳ部５３は、そのパラメータブロックの先頭アドレスの情報などをパラメータとする、タスク間メッセージを生成する。ＲＴＯＳ部５３は、生成したタスク間メッセージをタスクＢへ供給する。タスクＢを実行するとき、中央処理装置１１は、タスク間メッセージにて指定される先頭アドレスから、パラメータデータを読み込む。中央処理装置１１は、読み込んだパラメータデータを使用して、タスクＢを実行する。
【００３３】
なお、供給元のタスクは、供給先のタスクへのタスク間メッセージの内容として、パラメータブロックの先頭アドレスの情報を通知する。タスク間メッセージにより、パラメータブロックのデータそのものは供給されない。そのため、供給元のタスクは、タスク間メッセージを使用することで、任意のデータ量のデータを供給先のタスクへ供給することができる。
【００３４】
以上のように、ＲＴＯＳを実行する中央処理装置１１，２１は、プログラムを実行すると、そのプログラムに基づいてタスクを生成し、生成したタスクを所定の順番で実行する。また、ＲＴＯＳを実行する中央処理装置１１，２１は、タスク間メッセージなどを使用して、タスク間で必要なデータを供給する。その結果、中央処理装置１１，２１は、プログラムを実行することで、そのプログラムにコード化されている機能を実現する。
【００３５】
また、ＲＴＯＳ部５３，６３は、割込ハンドラ部５７，６７を有する。
【００３６】
割込ハンドラ部５７，６７は、中央処理装置１１，２１に割込要求があるとき、割込処理を実行する。中央処理装置１１，２１に割込要求をするものとしては、たとえばＬＶＤＳＩ／Ｆ１４，２４がある。ＬＶＤＳＩ／Ｆ１４，２４から割込要求があると、割込ハンドラ部５７，６７は、通信プロトコルハンドラ部５４，６４およびＩ／Ｏドライバ部５５，６５を用いて、ＬＶＤＳＩ／Ｆ１４，２４からデータを取得する。
【００３７】
なお、これらＲＴＯＳ部５３，６３、割込ハンドラ部５７，６７なども、中央処理装置１１，２１がＲＴＯＳプログラム３３，４３を実行することで実現される。そのため、中央処理装置１１，２１によりタスクとして実行される。ただし、ＲＴＯＳ部５３，６３のタスクは、一般的に、他のプログラムに基づく他のタスクより優先度が高いタスクとして、中央処理装置１１，２１により実行される。
【００３８】
また、割込ハンドラ部５７，６７などは、ＲＴＯＳプログラム３３，４３による他の機能と同様に、ＲＴＯＳプログラム３３，４３において複数の関数の集合体として記述される。ＲＴＯＳ部５３，６３は、割込ハンドラ部５７，６７などをＲＴＯＳ部５３，６３の外部のプログラムから直接的あるいは間接的に呼び出すための、システムコールと呼ばれる関数を有する。
【００３９】
ＲＴＯＳブリッジ部５２，６２は、システムコールで不足するＡＰＩ（アプリケーションプログラムインターフェイス）を、フロンドエンドＡＰ部５１あるいはバックエンドＡＰ部６１に提供する。ＲＴＯＳブリッジ部５２，６２は、たとえば、ＲＴＯＳ部５３，６３により定義されていない、マルチＣＰＵ装置が組み込まれる機器で特有に使用する、新たな関数を提供する。この関数は、ＲＴＯＳブリッジ部５２，６２の外部のプログラム、たとえばフロントエンドＡＰプログラム３１などから呼び出し可能な関数である。
【００４０】
ＲＴＯＳブリッジ部５２，６２は、ＤＳＭ（Ｄｅｆａｕｌｔ  Ｓｅｔｔｉｎｇ  ｓｔａｔｕｓ  Ｍａｎａｇｅｒ）部５８，６８を有する。ＤＳＭ部５８，６８は、タスクの実行を管理する。ＤＳＭ部５８，６８は、タスク登録データ６０，７０と、ステータス設定データ５９，６９と、を有する。タスク登録データ６０，７０およびステータス設定データ５９，６９は、データ記憶手段およびタスク記憶手段としての記憶デバイス１３，２３に記憶される。なお、タスク登録データ６０，７０およびステータス設定データ５９，６９は、ＲＡＭ１２，２２に記憶されてもよい。
【００４１】
後述する図５などに示すように、タスク登録データ６０，７０は、複数のタスク管理番号を有する。タスク登録データ６０，７０には、タスク管理番号毎に、中央処理装置１１，２１が実行するタスク管理ブロック７１が登録される。タスク管理ブロック７１は、たとえば、そのタスクに対応する実行プログラムが記憶されている記憶デバイス１３，２３の先頭アドレス、そのタスクの実行ステータス設定データなどが含まれる。各タスク管理番号には、複数のタスク管理ブロック７１が登録可能である。１つのタスク管理番号に複数のタスク管理ブロック７１が登録されている場合、たとえばその登録順番にてタスクは実行される。
【００４２】
ステータス設定データ５９，６９は、たとえばタスク登録データ６０，７０に登録されるタスクのステータスデータ、設定データなどを有する。
【００４３】
ＤＳＭ部５８，６８は、たとえばコールバック関数登録メッセージなどによるタスクの登録依頼があると、その依頼されたタスクのタスク管理ブロック７１をタスク登録データ６０，７０に登録し、その依頼されたタスクに関するステータスデータ、設定データなどを初期値とともにステータス設定データ５９，６９に登録する。その後、ＤＳＭ部５８，６８は、コールバック関数登録メッセージなどに基づいて、必要なメッセージ構造体を生成する。
【００４４】
図３は、ＤＳＭ部５８，６８が生成するメッセージ構造体のデータ構造を示す説明図である。図３のメッセージ構造体は、新たなコールバック関数を登録したときにＤＳＭ部５８，６８が生成するものであり、コールバック通知を要求するものである。メッセージ構造体は、複数のパラメータを有する。図３のメッセージ構造体では、パラメータのデータとして、コールバック関数を新たに登録したことを通知するデータ、そのコールバック関数を登録したタスク管理番号（図３では「１」）のデータと、ＣＰＵ番号（図３では「１」）のデータなどを有する。なお、ＣＰＵ番号とは、マルチＣＰＵ装置において、中央処理装置毎に割り当てられる識別番号である。この実施の形態において以下の説明では、フロントエンドチップ１にＣＰＵ番号「１」が割り当てられ、バックエンドチップ２にＣＰＵ番号「２」が割り当てられているものとして説明する。
【００４５】
フロントエンドＡＰ部５１およびバックエンドＡＰ部６１は、マルチＣＰＵ装置が組み込まれる機器で必要とする機能を実現する。たとえば、マルチＣＰＵ装置が組み込まれる機器において機能Ａおよび機能Ｂの２つの機能が必要である場合、フロントエンドＡＰ部５１のタスクとして機能Ａが実現され、バックエンドＡＰ部６１のタスクとして機能Ｂが実現される。
【００４６】
フロントエンドＡＰ部５１およびバックエンドＡＰ部６１は、ＲＴＯＳ部５３，６３により、機能毎にあるいは機能を更に細分化した関数毎に機能タスクが生成される。この機能タスクの実行は、ＲＴＯＳ部５３，６３により管理される。また、機能タスクは、ＲＴＯＳ部５３，６３およびＲＴＯＳブリッジ部５２，６２が提供するＡＰＩとしての関数を使用し、タスク間メッセージなどを使用してタスク間通信を行う。
【００４７】
次に、以上の構成を有する、実施の形態に係るマルチＣＰＵ装置の動作を説明する。
【００４８】
図４は、フロントエンドチップ１で実行されるフロントエンドＡＰ部５１のタスクＡが所謂コールバック関数のタスクである場合のシーケンスを示す図である。すなわち、タスクＡは、バックエンドチップ２で実行されるバックエンドＡＰ部６１のタスクＢによるステータス設定データ６９への書込み処理に基づいて処理を実行する。
【００４９】
この場合、バックエンドチップ２の中央処理装置２１が、中央処理装置に相当し、フロントエンドチップ１の中央処理装置１１が、他の中央処理装置に相当する。
【００５０】
フロントエンドチップ１で実行されるタスクＡについてのコールバック関数登録メッセージが供給される（ステップＳＴ１）と、フロントエンドチップ１のＤＳＭ部５８は、タスクＡの情報を、フロントエンドチップ１のタスク登録データ６０およびステータス設定データ５９に登録する（ステップＳＴ２）。なお、図４では、タスクＡについてのコールバック関数登録メッセージは、タスクＡ自身により生成されているが、この他にもたとえば、コールバック関数登録メッセージは、フロントエンドチップ１で実行されるタスクＡ以外のタスクにより生成されてもよい。
【００５１】
図５は、フロントエンドチップ１のタスク登録データ６０に、タスクＡのタスク管理ブロック７１が登録される直前における、フロントエンドチップ１のタスク登録データ６０およびバックエンドチップ２のタスク登録データ７０を示す図である。それぞれのタスク登録データ６０，７０は、０〜ｎまでの（ｎ＋１）個のタスク管理番号を有する。バックエンドチップ２のタスク登録データ７０のタスク管理番号「１」には、タスクＢのタスク管理ブロック７１が登録されている。
【００５２】
図６は、フロントエンドチップ１のタスク登録データ６０に、タスクＡのタスク管理ブロック７１が登録された直後における、フロントエンドチップ１のタスク登録データ６０およびバックエンドチップ２のタスク登録データ７０を示す図である。図６において、フロントエンドチップ１のタスク登録データ６０には、タスク管理番号「１」に、タスクＡのタスク管理ブロック７１が登録される。
【００５３】
コールバック関数であるタスクＡのタスク管理ブロック７１をタスク登録データ６０に登録した後、ＤＳＭ部５８は、そのコールバック通知待ちのタスクＡが、フロントエンドチップ１で実行されるタスクからのコールバック通知待ちであるか、あるいは、バックエンドチップ２で実行されるタスクからのコールバック通知待ちであるか、を判断する（ステップＳＴ３）。なお、ＤＳＭ部５８は、たとえばフロントエンドチップ１で実行されるタスクのリストなどを有し、そのリスト中にコールバック通知元のタスクが含まれていないことを確認することで、コールバック通知元のタスクがフロントエンドチップ１で実行されるタスクでないと判断すればよい。
【００５４】
コールバック通知元のタスクＢがフロントエンドチップ１で実行されるタスクでない場合、ＤＳＭ部５８は、コールバック通知を要求するメッセージ構造体を生成する。コールバック通知を要求するメッセージ構造体は、図３に示すように、そのパラメータとして、コールバック関数のタスクＡを登録したことを通知するデータと、コールバック関数のタスクＡを登録したタスク管理番号「１」と、ＣＰＵ番号「１」などを有する。
【００５５】
ＤＳＭ部５８は、生成したメッセージ構造体を、図２に示すように、通信プロトコルハンドラ部５４へ供給する。フロントエンドチップ１の通信プロトコルハンドラ部５４は、供給されたメッセージ構造体を所定の通信プロトコルにより送信するための送信データを生成し、Ｉ／Ｏドライバ部５５へ供給する。フロントエンドチップ１のＩ／Ｏドライバ部５５は、送信データをＬＶＤＳＩ／Ｆ１４へ供給する。フロントエンドチップ１のＬＶＤＳＩ／Ｆ１４は、送信するデータに応じた差動電圧信号を、信号線３へ出力する。
【００５６】
フロントエンドチップ１のＬＶＤＳＩ／Ｆ１４が出力した差動電圧信号は、バックエンドチップ２のＬＶＤＳＩ／Ｆ２４により受信される。バックエンドチップ２のＬＶＤＳＩ／Ｆ２４は、バックエンドチップ２の中央処理装置２１に割込み要求を出力する。
【００５７】
バックエンドチップ２の中央処理装置２１に割込要求があると、バックエンドチップ２の割込ハンドラ部６７は、割込処理を実行する。割込ハンドラ部６７は、通信プロトコルハンドラ部６４およびＩ／Ｏドライバ部６５を用いて、ＬＶＤＳＩ／Ｆ２４からデータを取得する。バックエンドチップ２のＩ／Ｏドライバ部６５は、ＬＶＤＳＩ／Ｆ２４から受信データを供給されると、これを通信プロトコルハンドラ部６４へ供給する。通信プロトコルハンドラ部６４は、受信データを割込ハンドラ部６７へ供給する。
【００５８】
これにより、フロントエンドチップ１のＤＳＭ部５８は、バックエンドチップ２の割込ハンドラ部６７へ、コールバック通知を要求するメッセージ構造体を送信する（ステップＳＴ４）。
【００５９】
メッセージ構造体を受信した割込ハンドラ部６７は、メッセージ構造体の内容を解析する。そして、メッセージ構造体がコールバック通知を要求するものである場合、メッセージ構造体の送信先として、バックエンドチップ２のＤＳＭ部６８を特定する。割込ハンドラ部６７は、メッセージ構造体のパラメータに基づくコールバック関数登録メッセージを生成し、ＤＳＭ部６８へ供給する（ステップＳＴ５）。このコールバック関数登録メッセージには、たとえば、メッセージ構造体に含まれる情報として、コールバック関数を登録したタスク管理番号「１」と、ＣＰＵ番号「１」などが含まれる。
【００６０】
バックエンドチップ２のＤＳＭ部６８は、割込ハンドラ部６７からコールバック関数登録メッセージが供給されると、このコールバック関数登録メッセージに基づいて、バックエンドチップ２のタスク登録データ７０に、コールバック通知を実行するタスクのタスク管理ブロック７１を追加登録する（ステップＳＴ６）。
【００６１】
図７は、バックエンドチップ２のＤＳＭ部６８が、フロントエンドチップ１へコールバック通知を実行するタスクのタスク管理ブロック７１をタスク登録データ７０に追加登録したときの状態を示す図である。バックエンドチップ２のタスク登録データ７０のタスク管理番号「１」には、タスクＢのタスク管理ブロック７１の次に、コールバック通知を実行するタスクのタスク管理ブロック７１が登録される。コールバック通知を実行するタスクのタスク管理ブロック７１は、コールバック先のタスク（ここではタスクＡ）が実行されるＣＰＵの番号「ＣＰＵ１（フロントエンドチップ１のＣＰＵ番号）」、タスク管理番号「０１（タスクＡが登録された番号）」などが登録される。
【００６２】
バックエンドチップ２のタスク登録データ７０にコールバック通知を実行するタスクのタスク管理ブロック７１が追加登録されている状態で、たとえばバックエンドチップ２の中央処理装置２１が、タスク管理番号「１」のタスクＢを実行する。
【００６３】
図８は、バックエンドチップ２のタスク登録データ７０に、タスクＣのタスク管理ブロック７１を登録した状態を示す図である。タスクＣのタスク管理ブロック７１は、たとえばタスクＢの実行に伴って、タスク登録データ７０に登録される。
【００６４】
また、タスクＢの実行により、中央処理装置２１は、ステータス設定データ６９に対して、Ｗｒｉｔｅメッセージにより書込みアクセス（Ｗｒｉｔｅアクセス）する。ＤＳＭ部６８は、ステータス設定データ６９に、そのＷｒｉｔｅメッセージにより指定されたデータを書き込む（ステップＳＴ７）。
【００６５】
Ｗｒｉｔｅメッセージによりステータス設定データ６９を更新すると、バックエンドチップ２のＤＳＭ部６８は、ステータス設定データ６９の同期処理を開始する（ステップＳＴ８）。バックエンドチップ２のＤＳＭ部６８は、具体的には、それが管理するステータス設定データ６９を、フロントエンドチップ１のＤＳＭ部５８へ送信する。
【００６６】
バックエンドチップ２のＤＳＭ部６８が管理するステータス設定データ６９は、具体的には、バックエンドチップ２の通信プロトコルハンドラ部６４、Ｉ／Ｏドライバ部６５、ＬＶＤＳＩ／Ｆ２４、信号線３、フロントエンドチップ１のＬＶＤＳＩ／Ｆ１４、Ｉ／Ｏドライバ部５５、通信プロトコルハンドラ部５４および割込ハンドラ部５７を介して、フロントエンドチップ１のＤＳＭ部５８へ送信される。
【００６７】
フロントエンドチップ１のＤＳＭ部５８は、バックエンドチップ２のＤＳＭ部６８からステータス設定データ６９を受信すると、受信したステータス設定データ６９で、自分のステータス設定データ５９を更新する。これにより、フロントエンドチップ１のステータス設定データ５９の内容は、バックエンドチップ２のステータス設定データ６９の内容と一致する。ステータス設定データ５９，６９は、同期する。
【００６８】
ステータス設定データ６９の同期処理が完了すると、バックエンドチップ２のＤＳＭ部６８は、フロントエンドチップ１へのコールバック通知の要否を判断する（ステップＳＴ９）。ＤＳＭ部６８は、具体的には、タスク登録データ７０においてタスクＢのタスク管理ブロック７１の次に登録されているタスク管理ブロック７１が、フロントエンドチップ１へのコールバック通知を実行するタスクのタスク管理ブロック７１であるか否かを判断する。図８では、タスクＢのタスク管理ブロック７１の次には、タスクＡへコールバック通知するタスクのタスク管理ブロック７１が登録されている。
【００６９】
タスク登録データ７０に基づいてコールバック通知が必要であると判断すると、バックエンドチップ２のＤＳＭ部６８は、タスクＢの実行が完了した後に、タスクＢの次にタスク管理ブロック７１が登録されているタスクを実行し、コールバック通知のためのメッセージ構造体を生成する。コールバック通知のためのメッセージ構造体には、タスク登録データ７０に登録されているコールバック通知先のタスク管理番号「０１」、ＣＰＵ番号「ＣＰＵ１」などが含まれる。
【００７０】
図９は、バックエンドチップ２からフロントエンドチップ１へ、コールバック通知を実行するときの状態を示す図である。バックエンドチップ２の中央処理装置２１は、タスク管理番号「１」に登録されているタスク管理ブロック７１に基づいてタスクを実行し、メッセージ構造体によりコールバック通知を実行する。
【００７１】
ＤＳＭ部６８は、生成したメッセージ構造体を、フロントエンドチップ１の割込ハンドラ部５７へ送信する（ステップＳＴ１０）。コールバック通知のためのメッセージ構造体は、具体的には、バックエンドチップ２の通信プロトコルハンドラ部６４、Ｉ／Ｏドライバ部６５、ＬＶＤＳＩ／Ｆ部２４、信号線３、フロントエンドチップ１のＬＶＤＳＩ／Ｆ１４、Ｉ／Ｏドライバ部５５、および通信プロトコルハンドラ部５４を介して、割込ハンドラ部５７へ送信される。
【００７２】
また、ＤＳＭ部６８は、生成したメッセージ構造体を送信した後、そのコールバック通知をしたタスクのタスク管理ブロック７１が登録されていたタスク管理番号の実行を禁止（ロック）する（ステップＳＴ１１）。
【００７３】
コールバック通知のためのメッセージ構造体が供給されると、割込ハンドラ部５７は、タスク管理番号「１」を含むＷｒｉｔｅメッセージを生成し、ＤＳＭ部５８へ供給する（ステップＳＴ１２）。
【００７４】
フロントエンドチップ１のＤＳＭ部５８は、Ｗｒｉｔｅメッセージが供給されると、タスクＡに対してコールバック通知メッセージを供給する（ステップＳＴ１３）。フロントエンドチップ１の中央処理装置１１は、タスクＡを実行する（ステップＳＴ１４）。
【００７５】
以上の一連の処理により、フロントエンドチップ１の中央処理装置１１は、バックエンドチップ２で実行されるタスクＢからのコールバック通知により、コールバック関数のタスクＡを実行することができる。また、そのフロントエンドチップ１のステータス設定データ５９は、そのコールバック関数のタスクを実行する前に同期処理されているので、フロントエンドチップ１は、その更新後に同期処理されたステータス設定データ５９にアクセスし、コールバック関数のタスクＡを適切に実行することができる。
【００７６】
コールバック関数のタスクとしてのタスクＡの実行が完了する（ステップＳＴ１５）と、フロントエンドチップ１のＤＳＭ部５８は、そのタスクＡの実行が、バックエンドチップ２からのコールバック通知に基づいて実行されたものであるか否かを判断する（ステップＳＴ１６）。ＤＳＭ部５８は、たとえば、そのタスクＡが割込みハンドラ部５７からのＷｒｉｔｅメッセージに基づいて実行されている場合、バックエンドチップ２からのコールバック通知に基づいて実行されたものであると判断すればよい。
【００７７】
バックエンドチップ２からのコールバック通知に基づいてタスクＡを実行したと判断すると、フロントエンドチップ１のＤＳＭ部５８は、コールバック実行完了通知のメッセージ構造体を生成し、バックエンドチップ２の割込ハンドラ部６７へ送信する（ステップＳＴ１７）。割込ハンドラ部６７は、このメッセージ構造体に基づいて、ＤＳＭ部６８へコールバック実行完了通知メッセージを供給する（ステップＳＴ１８）。
【００７８】
図１０は、フロントエンドチップ１からバックエンドチップ２へ、コールバック実行完了通知を実行するときの、タスク登録データ６０，７０の状態を示す図である。
【００７９】
割込ハンドラ部６７からコールバック実行完了通知メッセージが供給されると、ＤＳＭ部６８は、コールバック通知をしたタスクのタスク管理ブロック７１が登録されていたタスク管理番号のロックを解除し（ステップＳＴ１９）、タスク登録データ７０においてコールバック通知のタスクのタスク管理ブロック７１の次に登録されるタスク管理ブロック７１のタスクＣを実行する。
【００８０】
これにより、フロントエンドチップ１においてコールバック関数であるタスクＡが実行され、バックエンドチップ２は、その実行の完了を待ってタスクＣを実行することができる。フロントエンドチップ１とバックエンドチップ２とは、それらが実行する複数のタスクを１つの中央処理装置で実行した場合と同様の順番で実行することができる。
【００８１】
なお、以上の説明では図４に基づいてバックエンドチップ２のタスクＢからフロントエンドチップ１のタスクＡへ、ステータス設定データ６９と、コールバック通知のためのメッセージ構造体とを送信する場合を説明している。逆に、フロントエンドチップ１のタスクからバックエンドチップ２のタスクへ、図４と同様の動作シーケンスにより、ステータス設定データ５９と、コールバック通知のためのメッセージ構造体とを送信することもできる。
【００８２】
次に、図１のマルチＣＰＵ装置を組み込んだ組込機器の一例として、プリンタ複合機を説明する。
【００８３】
図１１は、図１に示すマルチＣＰＵ装置をプリンタ複合機に適用する場合における、フロントエンドＡＰ部５１とバックエンドＡＰ部６１との機能切り分けの一例を示す図である。プリンタ複合機は、図示外のコンピュータに接続され、そのコンピュータからの印刷指示に基づいて画像を印刷する他にも、たとえばそれに装着された図示外のフラッシュメモリなどの半導体メモリに記憶される画像ファイルの画像を印刷する機能や、図示外のスキャナで読み込んだ画像を印刷する機能などを有するものである。
【００８４】
プリンタ複合機の中央処理装置は、アプリケーションプログラムを実行することで、基本的に、ファイルシステム管理部８１、ユーザインタフェース部８２、ファイルリスト管理部８３、画像デコード部８４、画像レイアウト部８５、二値化処理部８６、インターレース処理部８７、データ処理コントローラ部８８、カードプリントファンクション部８９などを実現する必要がある。
【００８５】
ファイルシステム管理部８１は、プリンタ複合機の図示外の画像ファイルを管理する。プリンタ複合機の画像ファイルは、たとえばプリンタ複合機に装着された半導体メモリに記憶される画像ファイルである。
【００８６】
ユーザインタフェース部８２は、プリンタ複合機の図示外の入力デバイスおよび表示デバイスを制御する。ユーザインタフェース部８２は、ユーザ操作により印刷する画像を選択したり、その画像を印刷する用紙やレイアウトを選択したりする。
【００８７】
ファイルリスト管理部８３は、ユーザインタフェース部８２が選択した印刷設定情報を保持する。印刷設定情報には、たとえば選択された画像ファイルのファイル名や、印刷する用紙のサイズやレイアウト、画像補正処理の要否などの印刷条件などが含まれる。
【００８８】
画像デコード部８４は、印刷する画像ファイルのデータを読み込み、その読込データに基づいて画像データを生成する。
【００８９】
画像レイアウト部８５は、ファイルリスト管理部８３が保持する印刷設定情報を読み込み、用紙毎のデータを生成する。画像レイアウト部８５は、読み込んだ印刷設定情報に基づいて用紙の印刷範囲などを特定し、その印刷範囲内に印刷する画像をレイアウトした印刷イメージデータを生成する。
【００９０】
二値化処理部８６は、画像レイアウト部８５が生成した印刷イメージデータを、二値化データへ変換する。
【００９１】
インターレース処理部８７は、二値化処理部８６が生成した二値化データを印刷エンジン９０が印刷する順番に並べ替え、必要な制御コードを挿入し、印刷制御データを生成する。インターレース処理部８７が生成した印刷制御データは、印刷エンジン９０へ供給される。印刷エンジン９０は、印刷制御データに基づいて用紙への印刷を実行する。
【００９２】
データ処理コントローラ部８８は、画像レイアウト部８５、画像デコード部８４、二値化処理部８６およびインターレース処理部８７の間でのデータフローを管理し、制御する。たとえば、二値化処理部８６が生成した二値化データは、インターレース処理部８７へ供給される。データ処理コントローラ部８８は、この二値化データなどのデータの流れを管理する。二値化データの場合、二値化処理部８６は、生成した二値化データをデータ処理コントローラ部８８へ供給する。データ処理コントローラ部８８は、供給された二値化データをインターレース処理部８７へ供給する。このようにデータフローを管理し、制御することで、データ処理コントローラ部８８は、印刷処理のどの工程までの処理が完了しているか否かなどを一元的に管理することができる。
【００９３】
カードプリントファンクション部８９は、データ処理コントローラ部８８にデータフローの制御（ジョブの連続起動やキャンセル処理など）や動作条件などを設定したり、データ処理コントローラ部８８から印刷の進捗状況情報を取得したりする。
【００９４】
図１１のプリンタ複合機では、プリンタ用のアプリケーションプログラムに基づくこれらの基本的な機能を、フロントエンドチップ１とバックエンドチップ２とで分散して実行する。具体的には、フロントエンドＡＰ部５１は、ファイルシステム管理部８１、ユーザインタフェース部８２、ファイルリスト管理部８３、カードプリントファンクション部８９を有する。バックエンドＡＰ部６１は、画像デコード部８４、画像レイアウト部８５、二値化処理部８６、インターレース処理部８７、データ処理コントローラ部８８を有する。
【００９５】
そのため、図１１のプリンタ複合機では、ファイルリスト管理部８３は、ユーザインタフェース部８２が選択した画像や用紙などの印刷に関する情報を印刷設定情報として保持し、画像レイアウト部８５へ送信する。画像レイアウト部８５は、その情報やファイルシステム管理部８１から取得した画像に関する情報に基づいて、印刷レイアウトなどを決定する。また、画像デコード部８４は、ファイルシステム管理部８１から印刷する画像の画像データを取得する。画像レイアウト部８５は、画像デコード部８４によりデコードされた画像を、印刷レイアウトにしたがって割り付けた用紙サイズの印刷イメージを生成する。二値化処理部８６は、印刷イメージデータを、二値化データへ変換する。インターレース処理部８７は、二値化データから印刷制御データを生成する。印刷エンジン９０は、印刷制御データに基づいて用紙への印刷を実行する。
【００９６】
また、図１１のプリンタ複合機において、フロントエンドチップ１およびバックエンドチップ２は共に、ＲＴＯＳ部５３，６３の割込ハンドラ部５７，６７と、ＲＴＯＳブリッジ部５２，６２のＤＳＭ部５８，６８とを有する。プリンタ複合機の上述した各機能は、タスク単位で実行され、メッセージ構造体などを用いたタスク間通信機能により、互いにデータを送受する。
【００９７】
そして、たとえば、ファイルシステム管理部８１は、画像データを所定のデータ量毎に分割して送信したい場合がある。この場合、コールバック通知機能を利用すればよい。
【００９８】
具体的には、フロントエンドチップ１のＤＳＭ部５８は、ファイルシステム管理部８１が所定のデータ量のデータをバックエンドチップ２へ送信すると、コールバック通知を要求するメッセージ構造体をバックエンドチップ２へ送信する。バックエンドチップ２のＤＳＭ部６８は、画像レイアウト部８５や画像デコード部８４がその所定のデータ量のデータに対する処理が完了すると、コールバック通知をフロントエンドチップ１へ送信する。
【００９９】
これにより、ファイルシステム管理部８１と、画像レイアウト部８５や画像デコード部８４とは、互いに処理の同期をとりながら、それぞれの処理を適切に実行することができる。
【０１００】
このように、図１１のプリンタ複合機においてフロントエンドチップ１およびバックエンドチップ２は協働して動作し、１つのチップにおいてプリンタ複合機用のアプリケーションプログラムを実行する場合と同様に、印刷処理を実行することができる。
【０１０１】
以上のように、この実施の形態では、フロントエンドチップ１とバックエンドチップ２とは、記憶デバイス１３，２３に記憶されるステータス設定データ５９，６９に対して書込みアクセスがあると、その書込み更新後のステータス設定データ５９，６９を互いに送受する。したがって、フロントエンドチップ１の中央処理装置１１およびバックエンドチップ２の中央処理装置２１は、それぞれの記憶デバイス１３，２３に記憶されるステータス設定データ５９，６９へアクセスすることで、所定の処理を実行することができる。中央処理装置１１，２１は、データを利用する度に、他方のチップの記憶デバイス１３，２３にアクセスする必要がなくなる。また、共有ＲＡＭに頼ることなく、２つの中央処理装置１１，２１によるチップ間通信の回数を減らすことができる。
【０１０２】
この実施の形態では、フロントエンドチップ１の中央処理装置１１およびバックエンドチップ２の中央処理装置２１は互いに、記憶デバイス１３，２３のステータス設定データ５９，６９への書込みアクセスに基づいて、コールバック通知のためのメッセージ構造体を送受する。これにより、中央処理装置１１，２１は、コールバック通知に基づいて、且つ、同期処理により更新されたステータス設定データ５９，６９を用いて、コールバック通知を要求するタスクを実行することができる。
【０１０３】
この実施の形態では、フロントエンドチップ１の中央処理装置１１およびバックエンドチップ２の中央処理装置２１は互いに、コールバック通知に基づいてタスクを実行した後に、そのコールバック実行完了を通知するメッセージ構造体を送受する。したがって、２つの中央処理装置１１，２１により実行されるタスクは、それらのタスクを１つの中央処理装置で実行した場合と同様の順番で実行される。
【０１０４】
また、フロントエンドチップ１のフロントエンドＡＰ部５１のタスクと、バックエンドチップ２のバックエンドＡＰ部６１のタスクとは、それぞれに提供されるＡＰＩを用いて、互いにデータおよびメッセージを送受する。したがって、フロントエンドチップ１とバックエンドチップ２との間でのステータス設定データやメッセージ構造体の送受信処理は、タスク間メッセージを送受する動作に隠蔽される。したがって、フロントエンドＡＰ部５１およびバックエンドＡＰ部６１として、１つのメモリ空間を使用する中央処理装置上で動作するプログラムを流用することができる。１つのメモリ空間を使用する中央処理装置上で動作するソフトウェア資産を流用することができる。
【０１０５】
その結果、タスク間メッセージを送受することで１つの中央処理装置上で動作可能な複数の機能タスクを実現するプログラムを用いて、フロントエンドＡＰ部５１およびバックエンドＡＰ部６１を容易に実現し、マルチＣＰＵ装置で動作する複数の機能タスクを容易に実現することができる。また、フロントエンドＡＰ部５１と、バックエンドＡＰ部６１とは、フロントエンドチップ１とバックエンドチップ２とが共にアクセス可能な共用ＲＡＭを用いなくとも、データや指示の送受が可能である。
【０１０６】
また、フロントエンドチップ１とバックエンドチップ２との間でのタスク間メッセージの送受には、割り込み処理を使用している。したがって、フロントエンドチップ１およびバックエンドチップ２として、割り込み処理機能を有する汎用的な中央処理装置を用いることができる。
【０１０７】
以上の実施の形態は、本発明の好適な実施の形態の例であるが、本発明は、これに限定されるものではなく、発明の要旨を逸脱しない範囲において種々の変形、変更が可能である。
【０１０８】
上記実施の形態では、フロントエンドチップ１とバックエンドチップ２とは、ＬＶＤＳＩ／Ｆ１４，２４を有し、差動電圧信号によりデータを送受している。この他にもたとえば、フロントエンドチップ１と、バックエンドチップ２とは、ＴＴＬ（Ｔｒａｎｓｉｓｔｏｒ−Ｔｒａｎｓｉｓｔｏｒ  Ｌｏｇｉｃ）Ｉ／Ｆを有し、０〜５Ｖの電圧を有するＴＴＬ信号によりデータを送受するようにしてもよい。
【０１０９】
上記実施の形態では、フロントエンドチップ１とバックエンドチップ２とは、タスク間メッセージの内容を、図３に例示するメッセージ構造体により送受している。この他にもたとえば、フロントエンドチップ１とバックエンドチップ２とは、タスク間メッセージそのものを送受するようにしてもよい。また、上記実施の形態では、メッセージ構造体によりタスク間メッセージの内容を送受しているが、この他にもたとえばメッセージ構造体により、イベントフラグの内容などの所謂タスク間通信機能に用いる情報を送受してもよい。この場合であっても、ステータス設定データ５９，６９の更新をデータの変化タイミングとし、そのデータの変化タイミングをトリガとしてタスクを実行することができる。
【０１１０】
上記実施の形態では、フロントエンドチップ１のＤＳＭ部５８とバックエンドチップ２のＤＳＭ部６８とは、タスク登録データ６０，７０に、コールバック通知を実行するタスクのタスク管理ブロック７１を登録し、その後この登録の有無に基づいて、コールバック通知を実行している。この他にもたとえば、ＤＳＭ部５８，６８は、タスク登録データ６０，７０とは別の、たとえばコールバック関数有無テーブルを設け、このコールバック関数有無テーブルにコールバック通知の要求を登録し、この登録の有無に基づいてコールバック通知を実行するようにしてもよい。
【０１１１】
上記実施の形態では、マルチＣＰＵ装置は、フロントエンドチップ１とバックエンドチップ２との２つのＩＣチップにより構成されている。この他にもたとえば、マルチＣＰＵ装置は、３つ以上のＩＣチップにより構成されていてもよい。また、中央処理装置とＲＡＭとを有するＣＰＵユニットが、１つのＩＣチップ内に複数組実装されているＩＣチップであってもよい。さらには、マルチＣＰＵ装置は、複数組のＣＰＵユニットを有するＩＣチップと、他のＩＣチップとにより構成されていてもよい。
【０１１２】
上記実施の形態では、マルチＣＰＵ装置を、プリンタ複合機へ応用した場合を例示している。この他にもたとえば、マルチＣＰＵ装置は、プリンタ、スキャナ、デジタルカメラ、プロジェクタ、携帯電話端末、その他のコンピュータ制御により動作する組込機器などに応用するようにしてもよい。
【産業上の利用可能性】
【０１１３】
本発明は、プリンタ複合機、プリンタ、スキャナ、デジタルカメラ、プロジェクタ、携帯電話端末、その他のコンピュータ制御により動作する組込機器などで利用することができる。
【図面の簡単な説明】
【０１１４】
【図１】本発明の実施の形態に係るマルチＣＰＵ装置を示す装置構成図である。
【図２】図１のマルチＣＰＵ装置に実現される機能のスタック構造を示す図である。
【図３】ＤＳＭ部が生成するメッセージ構造体のデータ構造を示す説明図である。
【図４】コールバック処理の流れを示すシーケンス図である。
【図５】タスク登録データの、コールバック関数タスクＡ登録前の初期状態である。
【図６】タスク登録データに、コールバック関数タスクＡが登録された状態である。
【図７】タスクＡへのコールバック通知タスクが登録された状態である。
【図８】コールバック通知タスクの後にタスクＣが登録された状態である。
【図９】タスク登録データの、コールバック通知時の状態である。
【図１０】タスク登録データの、コールバック実行完了通知時の状態である。
【図１１】図１に示すマルチＣＰＵ装置をプリンタ複合機に適用した例である。
【符号の説明】
【０１１５】
３  信号線（通信路）、１１，２１  中央処理装置（中央処理装置および他の中央処理装置）、１３，２３  記憶デバイス（データ記憶手段、タスク記憶手段）、５９，６９  ステータス設定データ（データ）、６０，７０  タスク登録データ
【図１】
2006350892.tif 000003
【図２】
2006350892.tif 000004
【図３】
2006350892.tif 000005
【図４】
2006350892.tif 000006
【図５】
2006350892.tif 000007
【図６】
2006350892.tif 000008
【図７】
2006350892.tif 000009
【図８】
2006350892.tif 000010
【図９】
2006350892.tif 000011
【図１０】
2006350892.tif 000012
【図１１】
2006350892.tif 000013