(57)【特許請求の範囲】
【請求項１】
デバイス制御、および／または所定のデータ処理を行う、複数のスレッドと、
前記複数のスレッドを使用してアプリケーションを構成する制御スレッドと、を備えるデータ処理装置において、
各々の前記スレッドの組合せと、一つの前記スレッドの実行に他のスレッドの処理結果を必要とするか否かの依存関係と、で、前記アプリケーションを定義し、
前記制御スレッドは、
所定の間隔で、および／または、各スレッドの処理完了時点で、繰り返し、前記スレッドの実行可否を調べ、
実行可能な前記スレッドが複数ある場合、前記依存関係に基づく実行順序が遅い順に前記スレッドの実行を指示する
ことを特徴とするデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置において、
前記アプリケーションが複数定義され、
前記制御スレッドは、
各々の前記アプリケーションに与えられた優先順位に従い制御対象となった前記アプリケーションを定義する前記スレッドに実行を指示し、
前記指示を与えた前記アプリケーションの制御が前記制御スレッドに戻ったとき、当該アプリケーションの優先順位を、他の前記アプリケーションより低くする
ことを特徴とするデータ処理装置。
【請求項３】
請求項２記載のデータ処理装置において、
前記優先順位が等しいアプリケーション間では、最後に実行を指示した前記スレッドに対応するアプリケーションの前記優先順位を低くする
ことを特徴とするデータ処理装置。
【請求項４】
請求項１から３のいずれか一に記載のデータ処理装置において、
前記スレッドは、
周辺デバイスを制御するデバイス制御スレッドと、
ＣＰＵで実行する所定のデータ処理の各々に対応したＣＰＵ処理スレッドと、を含み、
前記実行の指示を受けた前記デバイス制御スレッドは、
前記指示に従い、対応する前記周辺デバイスを制御し、
前記周辺デバイスからの完了通知に応答して、前記周辺デバイスの処理結果と前記完了通知を前記制御スレッドに送り、
前記実行の指示を受けた前記ＣＰＵ処理スレッドの各々は
前記指示に従い、前記所定のデータ処理を実行し、
前記所定のデータ処理の処理結果と通知を前記制御スレッドに送る
ことを特徴とするデータ処理装置。
【請求項５】
複数の周辺デバイスを動作順序に従って動作させるアプリケーションを定義したアプリケーション管理テーブル、
前記複数の周辺デバイスの各々に対応して、前記周辺デバイスに処理すべき入力データを用意し、前記周辺デバイスに動作指示するデバイス制御スレッド、及び、
前記デバイス制御スレッドより高い優先度を有し、前記周辺デバイスで処理すべき前記入力データを有する前記デバイス制御スレッドの中で、前記アプリケーション管理テーブルで定義された前記動作順序が後の前記デバイス制御スレッドを選択して、実行させる制御スレッドを備え、
前記デバイス制御スレッドからの実行に応答して、選択された前記デバイス制御スレッドは、前記周辺デバイスに動作指示した後、前記周辺デバイスによる前記入力データの処理が完了するまで、前記制御スレッドに制御を戻す
ことを特徴とするデータ処理装置。
【請求項６】
請求項５記載のデータ処理装置において、
前記制御スレッドは、
前記制御の戻りに応答して、前記周辺デバイスで処理すべき入力データを有する前記デバイス制御スレッドの中で、前記動作順序が、実行中の前記デバイス制御スレッドより前で、かつ最も後の前記デバイス制御スレッドを新たに選択して、実行させる
ことを特徴とするデータ処理装置。
【請求項７】
請求項６記載のデータ処理装置において、
前記制御スレッドは、
実行中の前記デバイス制御スレッドに対応する前記周辺デバイスと、新たに選択した前記デバイス制御スレッドに対応する前記周辺デバイスとを並列動作させる
ことを特徴とするデータ処理装置。
【請求項８】
請求項５記載のデータ処理装置において、
前記デバイス制御スレッドは、
前記複数の周辺デバイスの中で複数の動作種別を有する周辺デバイスの各々の動作種別に対応して設けられる
ことを特徴とするデータ処理装置。
【請求項９】
請求項８記載のデータ処理装置において、
前記制御スレッドは、
前記アプリケーション管理テーブルで定義された第1のアプリケーションを処理するための、前記周辺デバイスの第1の動作種別の動作を制御する第1のデバイス制御スレッドと、前記アプリケーション管理テーブルで定義された第２のアプリケーションを処理するための、前記周辺デバイスの第２の動作種別の動作を制御する第２のデバイス制御スレッドとの動作タイミングが重なったとき、前記周辺デバイスが前記第１の動作種別と前記第２の動作種別との動作が交互に制御されるように、前記第１のデバイス制御スレッドと前記第２のデバイス制御スレッドとの実行を制御する
ことを特徴とするデータ処理装置。
【請求項１０】
複数の周辺デバイスを動作順序に従って動作させるアプリケーションを定義したアプリケーション管理テーブルと、前記複数の周辺デバイスの各々に対応して、前記周辺デバイスを制御するデバイス制御スレッドと、制御スレッドとを有するデータ処理装置におけるデータ処理方法であって、
前記デバイス制御スレッドは、前記周辺デバイスに処理すべき入力データを用意し、
前記制御スレッドは、
前記周辺デバイスで処理すべき前記入力データを有する前記デバイス制御スレッドの中で、前記アプリケーション管理テーブルで定義された前記動作順序が後の前記デバイス制御スレッドを選択し、選択した前記デバイス制御スレッドを実行し、
前記デバイス制御スレッドからの実行に応答して、選択された前記デバイス制御スレッドは、
前記周辺デバイスに動作指示した後、前記周辺デバイスによる前記入力データの処理が完了するまで、前記制御スレッドに制御を戻す
ことを特徴とするデータ処理方法。
【請求項１１】
請求項１０記載のデータ処理方法において、
前記制御スレッドは、
前記制御の戻りに応答して、前記周辺デバイスで処理すべき入力データを有する前記デバイス制御スレッドの中で、前記動作順序が、実行中の前記デバイス制御スレッドより前で、かつ最も後の前記デバイス制御スレッドを新たに選択して、新たに選択した前記デバイス制御スレッドを実行する
ことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及びデータ処理方法に係り、特に複数のデバイスでデータ処理を実現するものに関する。
【背景技術】
【０００２】
近年、カーナビゲーションシステムで取り扱われるデータは、地図だけにとどまらず、マルチメディアデータ（動画、及び音楽、音声等）が利用されるようになった。このため、主たる経路案内と同時に、テレビ放送等の動画をリアルタイムに動画用コーデックで変換してハードディスクに録画する機能や、DVD等の光ディスクにデジタルデータとして記録されている動画コンテンツデータをディスプレイ装置に表示する機能、CDや携帯音楽プレーヤに記録されている音楽データをハードディスクに記録する機能等のアプリケーションプログラムが同時に動作する。また、これらの機能を実現するために、カーナビゲーションシステムのCPUには、テレビチューナ、動画用コーデック回路、ハードディスクIF回路、DVD等の光ディスクIF回路、表示装置IF回路、携帯音楽プレーヤIF回路等様々な高機能周辺デバイスが接続されている。
【０００３】
この様に、一つのアプリケーションプログラムが複数の周辺デバイスを利用するため、その制御が複雑になり、応答速度やスループットが悪くなる問題があった。また、複数のアプリケーションプログラムで周辺デバイスを共用し、各々のアプリケーションプログラムの高い応答速度やスループットを実現できない問題がある。
【０００４】
これに対し、特許文献１では、各デバイスで処理されるデータの依存関係からデバイス間をFIFOで接続し、各デバイスでパイプライン的にデータを処理させる事によってスループットを高める技術を開示している。
【０００５】
また、特許文献２は、アプリケーションプログラムの優先順位を決め、優先制御を行うことで、複数アプリケーションプログラムを同時に実行する技術を開示している。たとえば、優先順位がレベル１のスレッドを、レベル２、レベル３のスレッドよりも優先して実行する。
【０００６】
また、組み込みOSでは、レベル１のスレッドによって実行されるレベル３のスレッドが、レベル１の要求によって処理を始める場合にはレベル１の優先順位を継承できる仕組みを設けている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−２７２６２７号公報
【特許文献２】特開平５−２５０１８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１記載の技術では、各デバイスの用途が固定されている場合、アプリケーションの切替によるデバイスの使用順序の変更が出来ない問題がある。さらに、デバイスの使用順序の異なるアプリケーションを同時に実行すること出来ない。
【０００９】
また、特許文献２記載の技術では、優先制御は優先順位の高いスレッドが結果的に優先順位の低いスレッドに待たされる現象（プライオリティ・インバージョン）などの問題がある。たとえば、優先順位がレベル１のスレッドが、レベル３のスレッドの処理結果を用いる必要があり、レベル２のスレッドを待たせて処理を始める場合を考える。レベル３のスレッドは、レベル２のスレッドより優先順位が低いので、レベル３のスレッドは実行待ちのレベル２のスレッドの処理を待ってから開始することになる。この結果、レベル１のスレッドは、自分より優先順位の低いレベル２の処理に待たされてしまう。
【００１０】
また、組み込みOSでは、レベル１のスレッドによって実行されるレベル３のスレッドが、レベル１の要求によって処理を始める場合にはレベル１の優先順位を継承できる仕組みを設けている。これによって、レベル１のスレッドがレベル２のスレッドに待たされることがないようにしている。しかし、入出力デバイスを使用するアプリケーションでは問題がある。２つのスレッドを入出力それぞれのデバイスを制御する構成した場合、出力デバイス用スレッドの優先順位を高くする。これは、出力側の処理が進まず、入力側の処理ばかりが進み、メモリを多く消費し、レイテンシ、スループットが低下することを防ぐためである。入力デバイス用スレッドの優先順位を３、出力デバイス用スレッドの優先順位を１とする。このとき出力デバイス用スレッドは優先順位の低い入力用スレッドに対する入力を契機に動作するため、入力用スレッドの優先順位を上げることができない。このため、レベル２のスレッドを持つ他のアプリケーションの実行によって、入出デバイスを使用するアプリケーションの処理が待たされてしまう。
【００１１】
解決しようとする第一の問題点は、応答速度と、スループットが高く、複数デバイスを共有するアプリケーションプログラムを実現に当たって、デバイスの使用順序の切替が出来ない点である。この問題点により、デバイスの使用順序の異なるアプリケーションを同時に実行することが出来ない。
【００１２】
第二の問題は、優先制御は優先順位の高いスレッドが結果的に優先順位の低いスレッドに待たされる点である。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、開示されるデータ処理装置は、処理データの依存関係から、周辺デバイスの動作指示タイミングを決定し、パイプライン処理を実現する。
【００１４】
開示されるデータ処理装置のより具体的な態様は次のような構成である。独立動作可能な周辺デバイスの各々に対応したデバイス制御スレッドと、ＣＰＵで実行する所定のデータ処理の各々に対応したＣＰＵ処理スレッドと、デバイス制御スレッドとＣＰＵ処理スレッドを使用してアプリケーションを構築するための複数の処理部を備える制御スレッドと、複数の処理部の組合せで、アプリケーションを定義し、実行管理するアプリケーション管理テーブルとを備え、制御スレッドは、複数の処理部の各々に関連付けられた、デバイス制御スレッド及びＣＰＵ処理スレッドの各スレッドからの出力データを確認し、出力データが存在するデバイス制御スレッド及びＣＰＵ処理スレッドに対応する複数の処理部の中で、アプリケーション管理テーブルで定義されるアプリケーションの処理の終端に近い処理部から優先的に実行して、デバイス制御スレッド及びＣＰＵ処理スレッドの実行およびデータの入出力を指示し、デバイス制御スレッドの各々は指示に従い、対応する周辺デバイスを制御し、周辺デバイスからの完了通知に応答して、周辺デバイスの処理結果と完了通知を制御スレッドに送り、ＣＰＵ処理スレッドの各々は指示に従い、所定のデータ処理を実行し、所定のデータ処理の処理結果と通知を制御スレッドに送る。
【００１５】
開示されるデータ処理装置の他の態様は、複数の周辺デバイスを動作順序に従って動作させるアプリケーションを定義したアプリケーション管理テーブル、複数の周辺デバイスの各々に対応して、周辺デバイスを制御するデバイス制御スレッド、及び、デバイス制御スレッドより高い優先度を有し、周辺デバイスで処理すべき入力データを有するデバイス制御スレッドの中で、アプリケーション管理テーブルで定義された動作順序が後のデバイス制御スレッドを選択して、実行させる制御スレッドを備える。
【００１６】
開示されるデータ処理装置のさらに他の態様は、デバイス制御スレッドは、複数の周辺デバイスの中で複数の動作種別を有する周辺デバイスの各々の動作種別に対応して設けられる。
【発明の効果】
【００１７】
本発明のデータ処理装置及びその方法によれば、応答速度とスループットが高く、複数デバイスを共有するアプリケーションプログラムを実行できる。
【図面の簡単な説明】
【００１８】
【図１】データ処理装置のブロック図である。
【図２】データ処理装置のアプリケーション管理テーブルの構成例である。
【図３】データ処理装置のＣＰＵ、周辺デバイスの動作タイミングチャートである。
【図４】データ処理装置のアプリケーション管理テーブルの他の構成例である。
【発明を実施するための形態】
【００１９】
以下、実施例を図面を用いて説明する。
【実施例１】
【００２０】
図１は、実施例１のデータ処理装置のブロック図である。図２は、アプリケーション管理テーブルの構成例であり、図３は、ＣＰＵ、周辺デバイスの動作タイミングチャートである。
【００２１】
図１において、データ処理装置は、ＣＰＵ１０１、メモリ１０２、並びに、入力装置１０３、テレビチューナ１０４、デコーダ１０５、ネットワークインタフェース１０６、ＤＶＤ／ＣＤ１０７、暗号回路１０８、ＨＤＤ/不揮発メモリ１０９、及びディスプレイ１１０の周辺デバイスがバスにより接続された構成である。ＣＰＵ１０１は、後述する各処理を実行する。メモリ１０２は、ＣＰＵ１０１の実行するプログラム、ＣＰＵ１０１及び各周辺デバイス１０３〜１１０の入出力データを格納する。周辺デバイスとしての入力装置１０３は、スイッチ、ボタン、タッチパネル、マウスなどである。デコーダ１０５は、テレビチューナやネットワーク、ＤＶＤ、ＨＤＤから送られる映像、音楽などのコンテンツデータのデコードを行う。ネットワークインタフェース１０６は、携帯電話、ＣＡＮなどのネットワークインタフェース回路である。ＤＶＤ／ＣＤ１０７は、更新地図、映像、音楽、写真などが格納されたＤＶＤ／ＣＤメディア及びＤＶＤ／ＣＤインタフェース回路である。暗号回路１０８は、暗号化されたデータの復号やデータの暗号化を行う。ＨＤＤ／不揮発メモリ１０９は、ＨＤＤ/不揮発メモリなどのストレージとのインタフェース回路およびＨＤＤ／不揮発メモリである。ディスプレイ１１０は、本データ処理装置の処理結果を表示する。
【００２２】
ＣＰＵ１０１は、プログラム（処理部、スレッド）の組み合わせを実行することにより、アプリケーションを実行することになる。処理部及びスレッドは、いずれも処理部またはスレッドと呼んでも良いが、ここでは説明を分かり易くするために、２種の呼称を用いる。処理部については後述する。
【００２３】
スレッドには、各周辺デバイスの動作を制御するデバイス制御スレッド１１２、１１３、１１５、及び１１７、ＣＰＵ１０１により所定の機能を実行するＣＰＵ処理スレッド１１４、及び１１６、並びに制御スレッド１１１がある。制御スレッド１１１は、デバイス制御スレッド１１２、１１３、１１５及び１１７、並びにＣＰＵ処理スレッド１１４及び１１６の並列実行を、各々に対応する処理部を介して制御する。すなわち、各処理部は、制御スレッド１１１に含まれる。デバイス制御スレッド１１２、１１３、１１５、１１７は、制御スレッド１１１による制御の下で、各周辺デバイスを並列に動作させる。以上のように、制御スレッド１１１による制御を実現するために、制御スレッド１１１の優先度を他のスレッドより高く設定しておく。
【００２４】
本実施例のデバイス制御スレッド１１２、１１３、１１５及び１１７、並びに、ＣＰＵ処理スレッド１１４及び１１６は、次のとおりである。ＤＶＤ制御スレッド１１２は、制御スレッド１１１の指示に従い、ＤＶＤ／ＣＤ１０７の制御と入出力データの管理を行う。暗号回路制御スレッド１１３は、制御スレッド１１１の指示に従い、暗号回路１０８の制御と入出力データの管理を行う。伸張スレッド１１４は、制御スレッド１１１の指示に従い、ＣＰＵ１０１の処理として、圧縮されているデータの伸張処理を行う。ＨＤＤ制御スレッド１１５は、制御スレッド１１１の指示に従い、ＨＤＤ/不揮発メモリ１０９の制御と入出力データの管理を行う。地図表示データ作成スレッド１１６は、ＣＰＵ１０１の処理として、地図データをディスプレイ１１０で表示可能な形式のデータへ変換する。ディスプレイ制御スレッド１１７は、ディスプレイ１１０の制御と入力データの管理を行う。
【００２５】
図２に、アプリケーション管理テーブル１１８の構成例を示す。アプリケーション管理テーブル１１８は、デバイス制御スレッド１１２、１１３、１１５及び１１７とＣＰＵ処理スレッド１１４及び１１６との各スレッドを組み合わた構成及び動作順序によりアプリケーションを定義し、制御スレッド１１１が、アプリケーション管理テーブル１１８を参照して、ＣＰＵ１０１、周辺デバイスの並列動作制御を管理する。
【００２６】
アプリケーション管理テーブル１１８は、アプリケーションＩＤ、処理部ＩＤ、処理部関連スレッドＩＤ、前処理部ＩＤ、前処理部出力バッファフラグの項目をもつ。なお、図２では、アプリケーションＩＤとしてアプリケーションの名称を示すが、各処理部のＩＤ及び各処理部に関連するスレッドIDは、図面の複雑化を避けるために、図1に示す各処理部及びスレッドの符号で示している。アプリケーションＩＤ欄には、地図更新アプリケーション２０１のＩＤ、、ルート案内アプリケーション２０２のＩＤを図示している。アプリケーション管理テーブル１１８の、地図更新アプリケーション２０１及びルート案内アプリケーション２０２の各行は各アプリケーションの構成を表している。
【００２７】
地図更新アプリケーション２０１の行の処理部ＩＤは、地図更新アプリケーション２０１を構成するＤＶＤリード部１４３、復号部１４４、伸張部１４５、及びＨＤＤライト部１４６の各処理部である。処理関連スレッドＩＤは、地図更新アプリケーション２０１を構成する各処理部が利用するスレッドを表している。。図２は、ＤＶＤリード部１４３はＤＶＤ制御スレッド１１２を、復号部１４４は暗号回路制御スレッド１１３を、伸張部１４５は伸張スレッド１１４を、ＨＤＤライト部１４６はＨＤＤ制御スレッド１１５を、各々利用することを表している。
【００２８】
前処理部ＩＤは、アプリケーションを構成している処理部の依存関係を表している。地図更新アプリケーション２０１の処理部の依存関係として、ＤＶＤリード部１４３の実行順序が、地図更新アプリケーション２０１の処理の先頭であり、ＤＶＤリード部１４３の処理結果を復号部１４４が利用し、復号部１４４の出力を伸張部１４５が利用し、伸張部１４５の出力をＨＤＤライト部１４６が利用することを表している。これは、ＤＶＤリード部１４３でＤＶＤ制御スレッド１１２を介して、ＤＶＤ／ＣＤ１０７からリードしたデータを、復号部１４４が暗号回路制御スレッド１１３を介して暗号回路１０８を使って復号し、復号されたデータを伸張部１４５が伸張スレッド１１４を使って伸張し、伸張されたデータをＨＤＤライト部１４６がＨＤＤ制御スレッド１１５を介してＨＤＤ/不揮発メモリ１０９に書き込むアプリケーションであることを表している。つまり、データはＤＶＤリード部１４３、復号部１４４、伸張部１４５、ＨＤＤライト部１４６の順で処理される。
【００２９】
本実施形態では、複数の処理部の一連の処理をスムーズに実行するため処理の終端に近い処理部を優先的に実行する。このため、地図更新アプリケーション２０１の実行において、処理部の優先順位は、ＤＶＤリード部１４３、復号部１４４、伸張部１４５、ＨＤＤライト部１４６の順で高くなり、ＨＤＤライト部１４６の優先順位が最も高い。
【００３０】
前処理部出力バッファフラグは、前処理部の出力データの有無を表す。つまり、地図更新アプリケーションＤ２０１の暗号回路制御スレッド１１３の行の前処理部出力バッファフラグは、暗号回路制御スレッド１１３が処理すべきデータが存在するかを表し、図２の「無」は処理すべきデータが存在しないことを表している。このフラグが「有」の場合は、処理部の優先順位に従って、暗号回路制御スレッド１１３が実行される。
【００３１】
制御スレッド１１１と、デバイス制御スレッド１１２、１１３、１１５及び１１７）並びにＣＰＵ処理スレッド１１４及び１１６とのデータの受け渡しについて説明する。このデータの受け渡しには、メモリ１０２を介した通信を利用する。
【００３２】
ＤＶＤ制御スレッド制御キュー１１９には、制御スレッド１１１がＤＶＤ制御スレッド１１２に対する制御情報を格納する。ＤＶＤ制御スレッド入力バッファキュー１２０は、制御スレッド１１１がＤＶＤ制御スレッド１１２に与える入力バッファが設定される。ＤＶＤ制御スレッド出力バッファキュー１２１には、ＤＶＤ制御スレッド１１２の出力データが格納される。ＤＶＤ制御スレッド通知１２２は、ＤＶＤ制御スレッド１１２から制御スレッド１１１に処理完了などを通知する信号線（メモリ１０２上のフラグ）である。
【００３３】
１２３は、暗号回路制御スレッド制御キュー１２３は、制御スレッド１１１が暗号回路制御スレッド１１３に対する制御情報を格納する。暗号回路制御スレッド入力バッファキュー１２４は、制御スレッド１１１が暗号回路制御スレッド１１３に与える入力データが格納されるバッファが設定される。暗号回路制御スレッド出力バッファキュー１２５には、暗号回路制御スレッド１１３が暗号回路１０８を利用して暗復号した結果の出力データが格納される。暗号回路制御スレッド通知１２６は、暗号回路制御スレッド１１３から制御スレッド１１１に処理完了などを通知する信号線である。
【００３４】
伸張スレッド制御キュー１２７は、制御スレッド１１１が伸張スレッド１１４に対する制御情報を格納する。伸張スレッド入力バッファキュー１２８は、制御スレッド１１１が伸張スレッド１１４に与える伸張対象である入力データの格納されたバッファが設定される。伸張スレッド出力バッファキュー１２９には、伸張スレッド１１４が伸張した結果の出力データが格納される。伸張スレッド通知１３０は、伸張スレッド１１４から制御スレッド１１１に処理完了などを通知する信号線である。
【００３５】
ＨＤＤ制御スレッド制御キュー１３１は、制御スレッド１１１がＨＤＤ制御スレッド１１５に対する制御情報を格納する。ＨＤＤ制御スレッド入力バッファキュー１３２は、制御スレッド１１１が、ＨＤＤ/不揮発メモリ１０９に書き込むデータを格納するバッファが設定される。ＨＤＤ制御スレッド出力バッファキュー１３３には、ＨＤＤ制御スレッド１１５がＨＤＤ/不揮発メモリ１０９から読み出したデータが格納される。ＨＤＤ制御スレッド通知１３４は、ＨＤＤ制御スレッド１１５から制御スレッド１１１に処理完了などを通知する信号線である。
【００３６】
地図表示データ作成スレッド制御キュー１３５は、制御スレッド１１１が地図表示データ作成スレッド１１６に対する制御情報を格納する。地図表示データ作成スレッド入力バッファキュー１３６は、制御スレッド１１１が、地図表示データ作成スレッド１１６に地図データを格納する入力バッファが設定される。地図表示データ作成スレッド出力バッファキュー１３７には、地図表示データ作成スレッド１１６が入力された地図データを基に作成した表示用データが格納される。地図表示データ作成スレッド通知１３８は、地図表示データ作成スレッド１１６から制御スレッド１１１に処理完了などを通知する信号線である。
【００３７】
ディスプレイ制御スレッド制御キュー１３９は、制御スレッド１１１がディスプレイ制御スレッド１１７に対する制御情報を格納する。ディスプレイ制御スレッド入力バッファキュー１４０は、制御スレッド１１１が、ディスプレイ１１０に表示する表示データを格納するバッファが設定される。ディスプレイ制御スレッド出力バッファキュー１４１には、ディスプレイ制御スレッド１１７が制御スレッド１１１に送るデータが格納される。ディスプレイ制御スレッド通知１４２は、ディスプレイ制御スレッド１１７から制御スレッド１１１に処理完了などを通知する信号線である。
【００３８】
制御スレッド１１１内の処理部の1つである制御部１５０によって制御され、デバイス制御スレッド１１２、１１３、１１５及び１１７、並びに、ＣＰＵ処理スレッド１１４及び１１６を制御する処理部を説明する。
【００３９】
ＤＶＤリード部１４３は、ＤＶＤ制御スレッド１１２を介して、ＤＶＤ／ＣＤ１０７に格納されている地図、映像、音楽などのデータを読み出す。復号部１４４は、暗号回路制御スレッド１１３を介して、暗号回路１０８を制御し、暗号化されたデータを復号する。伸張部１４５は、伸張スレッド１１４をＣＰＵ１０１で実行することによって、圧縮されたデータを伸張する。ＨＤＤライト部１４６は、ＨＤＤ制御スレッド１１５を介して、ＨＤＤ/不揮発メモリ１０９を制御し、更新地図、更新地図関連情報、映像、音楽、動作記録などのデータをＨＤＤ/不揮発メモリ１０９に書き込む。ＨＤＤリード部１４７は、ＨＤＤ制御スレッド１１５を介して、ＨＤＤ/不揮発メモリ１０９を制御し、地図、地図関連情報、映像、音楽、動作記録などのデータをＨＤＤ/不揮発メモリ１０９から読み出す。地図表示データ作成部１４８は、地図表示データ作成スレッド１１６をＣＰＵ１０１で実行させることによって、地図および地図関連情報を、ディスプレイ制御スレッド１１７がディスプレイ１１０へ表示可能なデータ列に変換する。表示部１４９は、ディスプレイ制御スレッド１１７を介して、ディスプレイ１１０を制御し、入力された表示データを表示する。
【００４０】
制御部１５０は、アプリケーション管理テーブル１１８で定義されるアプリケーションの構成に従って、処理部１４３〜１４９の各々に関連するスレッドを順に制御する。指示ＩＤ１５１は、制御部１５０が制御中の処理部１４３〜１４９を指し、制御部１５０によって更新される。
【００４１】
地図更新アプリケーション２０１を例にアプリケーションの動作を説明する。図３は、横軸を時間として、ＤＶＤ／ＣＤ１０７、暗号回路１０８、ＣＰＵ１０１、暗号回路１０８の動作を示している。まず、時刻Ｔ１（以下、時刻Ｔｎを単にＴｎで示す。）で制御スレッド１１１は、ＣＰＵ１０１で実行される。制御スレッド１１１の制御部１５０は各処理部に関連付けられたスレッドからの出力を確認する。つまり、アプリケーション管理テーブル１１８の地図更新アプリケーション２０１の行の前処理部出力バッファフラグを確認する。図２は初期状態を表しており、どの処理部も処理できるデータを持っていないため、前処理部出力バッファフラグはすべて「無」となっている。ＤＶＤリード部１４３は、入力データを必要としない処理のため、前処理部出力バッファフラグは‘−(ハイフォン)’となっており、実行可能である。このため、制御部１５０は、ＤＶＤリード部１４３を実行する。ＤＶＤリード部１４３は、ＤＶＤ制御スレッド制御キュー１１９に読み込み指示を与え、ＤＶＤ制御スレッド入力バッファキュー１２０に読み込み結果データを格納するバッファを与えて、ＤＶＤ制御スレッド出力バッファキュー１２１にデータが届いていないことを確認し処理を終了する。ＤＶＤ制御スレッド１１２は、ＤＶＤ制御スレッド制御キュー１１９より読み込み指示を受取ると、ＤＶＤ制御スレッド入力バッファキュー１２０で示されているバッファにデータを格納するようＤＶＤ／ＣＤ１０７を制御し、ＤＶＤ／ＣＤ１０７の処理が完了するまで、ＣＰＵ１０１を利用せず待機する。Ｔ２で、ＤＶＤ／ＣＤ１０７は、ＤＶＤリード部１４３からの制御で読み込みを開始し、Ｔ３で読み込みを完了する。図３に示す３０１は、Ｔ２の制御で、ＤＶＤ／ＣＤ１０７が動作している期間（Ｔ２〜Ｔ３）を表している。
【００４２】
Ｔ３で、ＤＶＤ制御スレッド１１２は、アプリケーション管理テーブル１１８の処理部ＩＤが復号部１４４の行の前処理出力バッファフラグを「無」に戻して、ＤＶＤ制御スレッド出力バッファキュー１２１に読み込み結果データを格納し、ＤＶＤ制御スレッド通知１２２でＤＶＤリード部１４３に通知する。この通知を受け、ＤＶＤリード部１４３は、アプリケーション管理テーブル１１８の地図更新アプリケーション２０１の前処理ＩＤがＤＶＤリード部１４３である行の前処理出力バッファフラグを有に変更し、制御部１５０に処理を移す。
【００４３】
Ｔ３での制御内容を説明したが、ＤＶＤ制御スレッド１１２、制御スレッド１１１のＤＶＤリード部１４３などの制御主体の遷移について、説明する。Ｔ３において、ＤＶＤ／ＣＤ１０７が所定の動作を完了すると、動作完了に伴いＣＰＵ１０１に対して完了割り込みを発生する。ＣＰＵ１０１に対する割り込みは、説明を省略しているＯＳの割込み処理ルーチンで解析され、所定の処理を実行する。ここでは、ＤＶＤ／ＣＤ１０７からの割り込みであると解析し、所定の処理としてＤＶＤ制御スレッド１１２を実行する。ＤＶＤ制御スレッド１１２からのＤＶＤ制御スレッド通知１２２も、ＣＰＵに対する割り込み(ソフトウェア割込み)である。ＯＳの割込み処理ルーチンは、ＤＶＤ制御スレッド通知１２２の割り込みであると解析し、ＤＶＤ制御スレッド通知１２２であることをパラメータとし、所定の処理として制御スレッド１１１を実行する。制御スレッド１１１は、パラメータを参照して、ＤＶＤリード部１４３を実行する。ＤＶＤリード部１４３から制御部１５０への制御主体の遷移は、制御スレッド１１１の処理シーケンスによって決定される。たとえば、パラメータが設定されていないときは、制御部１５０を実行するようにする。
【００４４】
制御部１５０は、Ｔ１の処理と同様に、前処理出力バッファフラグを確認する。処理部ＩＤが復号部１４４の行の前処理出力バッファフラグが「有」となっており、復号部１４４とＤＶＤリード部１４３が実行可能である。前処理部ＩＤを確認すると、復号部１４４の処理がＤＶＤリード部１４３のデータを利用しているため、復号部１４４の処理を優先して実行する。復号部１４４は、ＤＶＤリード部１４３と同様に暗号回路制御スレッド制御キュー１２３に復号指示、暗号回路制御スレッド入力バッファキュー１２４にＤＶＤ制御スレッド出力バッファキュー１２１から受取ったデータを格納する。ＤＶＤリード部１４３は、Ｔ１からＴ２の期間と同様の動作をする。
【００４５】
Ｔ４から、ＤＶＤ／ＣＤ１０７と暗号回路１０８が並列に動作し、Ｔ５でＤＶＤ／ＣＤ１０７と暗号回路１０８の処理が完了する（図３の３０５及び３０２）。また、Ｔ５でＤＶＤ制御スレッド１１２、暗号回路制御スレッド１１３の処理が再開される。ＤＶＤ制御スレッド１１２、暗号回路制御スレッド１１３の処理が再開されると、アプリケーション管理テーブル１１８の処理部ＩＤの復号部１４４と伸張部１４５との行の前処理部出力バッファフラグが「有」となり、ＤＶＤ制御スレッド出力バッファキュー１２１に読み込んだデータが格納され、、ＤＶＤ制御スレッド通知１２２に読み込み完了通知が出力され、暗号回路制御スレッド出力バッファキュー１２５に復号されたデータが格納され、暗号回路制御スレッド通知１２６に復号完了通知が出力される。
【００４６】
簡単のため、並列して動作する各デバイスの動作開始時間と完了時間が一致する例を示したが、これらが一致している必要はない。これらの通知を受け、制御部１５０は、アプリケーション管理テーブル１１８を確認して、ＤＶＤリード部１４３、復号部１４４、伸張部１４５を実行する。アプリケーション管理テーブル１１８の示す各処理部の依存関係から、伸張部１４５がもっとも優先順位が高く、ＤＶＤリード部１４３がもっとも優先順位が低くなる。
【００４７】
これによって、ＤＶＤ制御スレッド１１２、暗号回路制御スレッド１１３、伸張スレッド１１４が実行され、Ｔ６より、ＤＶＤ／ＣＤ１０７、暗号回路１０８、ＣＰＵ１０１が並列に動作し、Ｔ７でこれらのデバイスの処理が完了する(図３の３０９、３０６及び３０３)。Ｔ７でこれらのデバイスの処理が完了すると、アプリケーション管理テーブル１１８の地図更新アプリケーション２０１の処理ＩＤが復号部１４４、伸張部１４５、ＨＤＤライト部１４６の行の前処理部出力バッファフラグが「有」になる。このフラグを参照して制御部１５０が制御を行うので、Ｔ８より、ＤＶＤ／ＣＤ１０７、暗号回路１０８、ＣＰＵ１０１、ＨＤＤ/不揮発メモリ１０９が並列して動作し、Ｔ９でこれらのデバイスの処理が完了する(図３の３１３、３１０、３０７及び３０４)。Ｔ８より、３０４の期間でＨＤＤ/不揮発メモリ１０９により処理されるデータは、３０１の期間でＤＶＤ／ＣＤ１０７から読み出され、３０２の期間で暗号回路１０８で復号化され、３０３の期間で伸張されたデータである。
【００４８】
スレッドの優先順位としては、ＣＰＵ１０１と周辺デバイス１０３〜１１０の並列動作のため、ＣＰＵ処理スレッド１１４及び１１６より、デバイス制御スレッド１１２、１１３、１１５、及び１１７の優先順位を高くする。また、これらのスレッドの動作タイミングを正しく決定するため、制御スレッド１１１の優先順位は、ＣＰＵ処理スレッド１１４及び１１６と、デバイス制御スレッド１１２、１１３、１１５、及び１１７より高くする。
【００４９】
並列して動作する各デバイスの動作開始時間と完了時間が一致しない場合において、上述の優先順位による制御を実現するための制御主体の遷移について説明する。各デバイスの動作開始時間と完了時間が一致しない場合、デバイス制御スレッド１１２、１１３、１１５及び１１７、並びに、ＣＰＵ処理スレッド１１４及び１１６のいずれかが実行中に、実行中以外のスレッドの実行開始のトリガーが発生する。このトリガーは、ＤＶＤ／ＣＤ１０７などの周辺デバイスからの割込みとデバイス制御スレッド１１２、１１３、１１５及び１１７からの割り込みである。周辺デバイスからの割込みに関しては、対応するデバイス制御スレッド１１２、１１３、１１５及び１１７のいずれかへのトリガーであるが、このトリガーにより実行開始すべきデバイス制御スレッドと実行中のスレッドとの、アプリケーション管理テーブル１１８で定義される優先順位（同じデータを順次処理する下流側にあるスレッドの方が優先順位が高い）に従って、実行順序が制御される。デバイス制御スレッド１１２、１１３、１１５及び１１７からの割り込みに関しては、前述したようにデバイス制御スレッド１１２、１１３、１１５及び１１７からの終了通知であるので、制御スレッド１１１の優先順位が他のスレッドより優先度が高いので、制御スレッド１１１を実行するように制御される。
【００５０】
以上の構造と制御で、各周辺デバイスが並列に動作できるタイミングで制御可能になり、高い応答速度とスループットを実現できる。
【００５１】
また、この様なしくみにより、同じ装置で、ルート案内アプリケーション２０２のような、ＨＤＤリード部１４７、地図表示データ作成部１４８、表示部１４９の順でデータを処理するアプリケーションも実現できる。アプリケーション管理テーブル１１８に示すようにルート案内アプリケーション２０２は定義できる。ルート案内アプリケーション２０２の定義に従って、同様の制御をすることで、ＨＤＤ/不揮発メモリ１０９、ＣＰＵ１０１、ディスプレイ１１０を並列に動作させることができる。地図更新アプリケーション２０１では、ＨＤＤ/不揮発メモリ１０９を優先して動作さていたところを、ルート案内アプリケーション２０２では、ＨＤＤ/不揮発メモリ１０９をもっとも低い優先順位で動作させている。この様に、アプリケーション管理テーブル１１８の定義で、柔軟に周辺デバイスの使用順序(動作順序)を変更することができる。
【００５２】
ここまで、地図更新アプリケーション２０１、ルート案内アプリケーション２０２の動作について説明してきたが、地図検索アプリケーションでも同様である。地図検索アプリケーションは、データをＨＤＤ/不揮発メモリ１０９から読み出して、ＣＰＵ１０１で読み出したデータから条件に一致するデータを表示用データに変換し、ディスプレイ１１０で表示する。このとき、ＨＤＤ/不揮発メモリ１０９、ＣＰＵ１０１、ディスプレイ１１０を並列に動作させる。同様に、ルート案内アプリケーション、テレビ録画アプリケーション、音楽再生アプリケーション、映像再生アプリケーション、ＣＤリッピングアプリケーションなども実現でき、自由に切替できる。
【実施例２】
【００５３】
地図更新アプリケーション２０１とルート案内アプリケーション２０２を並列に動作させることもできる。この場合、制御部１５０は、指示ＩＤ１５１で最後に制御したアプリケーションＩＤを記録する。次に制御部１５０に制御が戻ったとき、指示ＩＤ１５１に記録されているアプリケーションＩＤの処理の優先順位を低くすることで、地図更新アプリケーション２０１とルート案内アプリケーション２０２が共有するＨＤＤ/不揮発メモリ１０９、ＣＰＵ１０１をどちらかのアプリケーションが占有し、他のアプリケーションの動作を阻害することを防ぐことができる。ＨＤＤ/不揮発メモリ１０９を共有する、ＨＤＤライト部１４６、ＨＤＤリード部１４７で行われるようなデータに依存関係が無い処理に関しては、優先順位を持たせず、動作タイミングが重なった場合は、交互に動作させることになる。地図更新アプリケーション２０１とルート案内アプリケーション２０２でＨＤＤ/不揮発メモリ１０９を使用する処理で優先順位の逆転があるが、データに依存関係の無い処理であるので、他の処理を待たせることが無い。これによって、周辺デバイスの使用順序の異なるアプリケーションプログラムを並列に実行することが可能になる。
【実施例３】
【００５４】
ＨＤＤは、処理スループットの揺らぎの大きいデバイスである。この様な、揺らぎの大きいデバイスを利用し、複数のアプリケーション利用時にその揺らぎが並列動作中の全アプリケーション影響があると問題の有るケースがある。たとえば、地図更新アプリケーション２０１とルート案内アプリケーション２０２で更新より、ルート案内を優先する場合を考える。この場合、図４のように、アプリケーション管理テーブル１１８にアプリケーション優先順位を追加して制御することで、ルート案内のタイミングを守ることが出来る。制御部１５０に制御が戻ったとき、優先順位の高いアプリケーションＩＤ行の処理部ＩＤに関連付けられているデバイスに、前処理部によって用意されたデータ処理させる。優先順位が同じアプリケーションに関しては、実施例２同様、指示ＩＤ１５１で記録している最後に制御したアプリケーションの優先順位を低くすることで、効率よく並列化する。この様にすることで、スループットを保証したいルート案内アプリケーション２０２と、可能な限り高いスループットで処理できれば良い地図更新アプリケーション２０１を共存させることが出来る。
【００５５】
本実施形態によれば、データ処理装置は、アプリケーションプログラムで使用する入力から、出力までに使用する各周辺デバイスの処理順序をソフトウェアで管理する。そして、データに依存関係がある処理に関しては、処理待ちのデータが存在し、かつ、出力デバイス等の終端に近い処理を優先的に実行する。このため、スムーズに各周辺デバイスが並列に動作できるタイミングで制御可能になり、高い応答速度とスループットを実現しながら、柔軟に周辺デバイスの使用順序を変更することが出来る。
【００５６】
さらに、データに依存関係が無い処理に関しては、優先順位を持たせない。これによって、優先順位の逆転があったとしても、データに依存関係の無い処理であれば、他の処理を待たせることが無い。これによって、周辺デバイスの使用順序の異なるアプリケーションプログラムを並列に実行することが可能になる。たとえば、ルート案内のタイミングを守らなければならないルーと案内のアプリケーションプログラムと、データを取りこぼすことが許されないTV放送の録画アプリケーションプログラムの並列実行が可能になる。
【００５７】
同じ、仕組みで処理グループ毎に優先順位を持たせることもできる。この場合、スループットを保証する処理と、可能な限り高いスループットで処理できれば良い処理を共存させることができる。スループットを保証したい処理の優先順位を高くすることで、スループットの低い処理を待たせることができる。重要な処理のスループット保証を実現しながら、優先順位の低い処理を、実行可能な最大のスループットで動作させることができる。たとえば、ルート案内のタイミングを守らなければならないルーと案内のアプリケーションプログラムと、できる限り短時間で実行したい、新しい地図などのダウンロードアプリケーションプログラムの並列実行が可能になる。ルート案内処理負荷が低い期間はダウンロード処理スループットを上げ、ダウンロード時間を短縮する。負荷が高い期間は、ダウンロード処理スループットを下げ、ルート案内処理タイミングを保証することができる。
【産業上の利用可能性】
【００５８】
テレビ、レコーダ、セットトップボックス、携帯電話、複合機など、複数の周辺デバイスを利用するシステムに適用できる。
【符号の説明】
【００５９】
１０１：ＣＰＵ、１０２：メモリ、１０３：入力装置、１０４：テレビチューナ、１０５：デコーダ、１０６：ネットワーク、１０７：ＤＶＤ／ＣＤ、１０８：暗号回路、１０９：ＨＤＤ/不揮発メモリ、１１０：ディスプレイ、１１１：制御スレッド、１１２：ＤＶＤ制御スレッド、１１３：暗号回路制御スレッド、１１４：伸張スレッド、１１５：ＨＤＤ制御スレッド、１１６：地図表示データ作成スレッド、１１７：ディスプレイ制御スレッド、１１８：アプリケーション管理テーブル、１１９：ＤＶＤ制御スレッド制御キュー、１２０：ＤＶＤ制御スレッド入力バッファキュー、１２１：ＤＶＤ制御スレッド出力バッファキュー、１２２：ＤＶＤ制御スレッド通知、１２３：暗号回路制御スレッド制御キュー、１２４：暗号回路制御スレッド入力バッファキュー、１２５：暗号回路制御スレッド出力バッファキュー、１２６：暗号回路制御スレッド通知、１２７：伸張スレッド制御キュー、１２８：伸張スレッド入力バッファキュー、１２９：伸張スレッド出力バッファキュー、１３０：伸張スレッド通知、１３１：ＨＤＤ制御スレッド制御キュー、１３２：ＨＤＤ制御スレッド入力バッファキュー、１３３：ＨＤＤ制御スレッド出力バッファキュー、１３４：ＨＤＤ制御スレッド通知、１３５：地図表示データ作成スレッド制御キュー、１３６：地図表示データ作成スレッド入力バッファキュー、１３７：地図表示データ作成スレッド出力バッファキュー、１３８：地図表示データ作成スレッド通知、１３９：ディスプレイ制御スレッド制御キュー、１４０：ディスプレイ制御スレッド入力バッファキュー、１４１：ディスプレイ制御スレッド出力バッファキュー、１４２：ディスプレイ制御スレッド通知、１４３：ＤＶＤリード部、１４４：復号部、１４５：伸張部、１４６：ＨＤＤライト部、１４７：ＨＤＤリード部、１４８：地図表示データ作成部、１４９：表示部、１５０：制御部、１５１：指示ＩＤ。
【図１】
0005452125.tif 000002
【図２】
0005452125.tif 000003
【図３】
0005452125.tif 000004
【図４】
0005452125.tif 000005