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