(57)【要約】【課題】記憶媒体に存在するデータを複数のＣＰＵで共有する車載情報端末を提供する。【解決手段】切替制御回路２４は、MAILBOXレジスタとパーティションレジスタを備えている。一方のＣＰＵがバス権を要求するときは、MAILBOXレジスタへバス権要求を示す値を書き込み他方のＣＰＵへバス権要求を通知する。他方のＣＰＵでは、MAILBOXレジスタを参照することにより、バス権を要求されていることがわかる。他方のＣＰＵがパーティションに対して何らかの変更を加えていた場合、パーティションレジスタの、変更を加えたパーティションに対応するビットを１にする。その後、MAILBOXレジスタを用いて他方のＣＰＵへＨＤＤアクセスを終えたことを通知する。通知を受け取ったＣＰＵは、パーティションレジスタを調べ、どのパーティションが更新されているのかを確認する。その後、必要に応じて、ＨＤＤから更新されたデータを読み込む。【選択図】図１
2010055295.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶媒体と、
前記記憶媒体との間でデータ授受を行って第１の処理を行う第１のプロセッサと、
前記記憶媒体との間でデータ授受を行って第２の処理を行う第２のプロセッサと、
前記第１および第２のプロセッサの前記記憶媒体に対するバス権を調停する調停回路とを有し、
前記調停回路は、前記第１および第２のプロセッサ間で互いに通信を行う通信レジスタを有することを特徴とする車載情報端末。
【請求項２】
請求項１に記載の車載情報端末において、
前記調停回路は、前記通信レジスタのデータを参照して前記第１および第２のプロセッサのバス権を制御する制御ロジック回路を有することを特徴とする車載情報端末。
【請求項３】
請求項２に記載の車載情報端末において、
前記通信レジスタには、前記第１および第２のプロセッサからのバス権要求コマンドとバス権解放コマンドとを書き込むビットが設けられ、
制御ロジック回路は、前記ビットのバス権要求コマンドとバス権解放コマンドのデータを参照して前記第１および第２のプロセッサのバス権を制御することを特徴とする車載情報端末。
【請求項４】
請求項１乃至３のいずれか一項に記載の車載情報端末において、
前記記憶媒体は一つのメモリ装置であり、前記メモリ装置は記憶領域を複数の領域に分割して使用され、
前記調停回路はさらに、前記メモリ装置の分割領域ごとのデータ更新の有無を記録する分割領域レジスタを有し、
前記各分割領域へは前記第１および第２のプロセッサがアクセス可能に構成され、
前記分割領域レジスタは、前記第１および第２のプロセッサのいずれか一方から前記メモリ装置の各分割領域にアクセスが行われたとき、前記アクセスした前記分割領域ごとのデータ更新情報を記録することを特徴とする車載情報端末。
【請求項５】
請求項４に記載の車載情報端末において、
前記第１および第２のプロセッサのいずれか他方が前記メモリ装置にアクセスする際、前記分割領域レジスタの前記データ更新情報にしたがったデータ処理を行うことを特徴とする車載情報端末。
【請求項６】
請求項１乃至５のいずれか一項に記載の車載情報端末において、
前記第１および第２のプロセッサから前記記憶媒体へのアクセスはＡＴＡＰＩ規格に準拠して行われ、
前記第１および第２のプロセッサと前記レジスタとの間のデータの授受はＡＴＡＰＩバス上のコマンドに従って行うことを特徴とする車載情報端末。
【請求項７】
請求項６に記載の車載情報端末において、
前記通信レジスタおよび分割領域レジスタはＡＴＡＰＩ規格に準拠したＡＴＡＰＩレジスタとして割り当てられているレジスタ領域を利用することを特徴とする車載情報端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードディスクなどの記憶媒体にアクセスする複数のプロセッサのバス権調停に関する。
【背景技術】
【０００２】
車両を目的地まで誘導するナビゲーション機能と、音楽ＣＤからハードディスク（ＨＤＤ）にリッピングした音楽データを再生出力する機能を備えた車載ナビゲーション装置が知られている（非特許文献１）。
【０００３】
【非特許文献１】富士通テン技報  Vol.22  No.1  ３頁〜１１頁
【０００４】
非特許文献１の装置では、１台のハードディスクにナビゲーションに必要な地図データや地点データとともに、音楽ＣＤからリッピングした音楽データを記憶する。この装置では、ナビゲーション用ＣＰＵ（メインＣＰＵ）でナビゲーション処理を行い、ミュージック用ＣＰＵ（サブＣＰＵ）で音楽データを再生し、また、音楽データをエンコードしてＨＤＤに記憶するリッピング処理を行う。このような従来装置では調停回路を利用して複数のＣＰＵとＨＤＤとの調停を行っている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来装置の調停回路では、複数のＣＰＵが１台のハードディスクへ書き込みを行う場合、書き込みを行うタイミングによってはデータに矛盾が生じる場合がある。そのため、ハードディスクのパーティションをＣＰＵごとに分け、各々のＣＰＵがアクセスするデータを限定していた。この場合、複数のＣＰＵでハードディスク上にあるデータを共有できない。
【０００６】
発明者等は、調停回路が複数のＣＰＵからのバス権要求コマンドとバス権解放コマンドを認識するだけで調停を行っていることに問題があると仮設して、上記問題点を鋭意検証した。その結果、複数のＣＰＵ間同士で互いに通信を行いつつ調停を行えば、ＨＤＤのパーティションを共有したデータ処理など、さらに高度なデータ処理を行えることの知見を得て本発明を完成させた。
【課題を解決するための手段】
【０００７】
請求項１の発明による車載情報端末は、データを記憶する記憶媒体と、前記記憶媒体との間でデータ授受を行って第１の処理を行う第１のプロセッサと、前記記憶媒体との間でデータ授受を行って第２の処理を行う第２のプロセッサと、前記第１および第２のプロセッサの前記記憶媒体に対するバス権を調停する調停回路とを有し、前記第１および第２のプロセッサ間の通信を行う通信レジスタを前記調停回路に設けるようにしたことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数のＣＰＵ間で互いに通信を行いつつバス権調停を行うことができ、高度なデータ処理を行うことができる。
【発明を実施するための最良の形態】
【０００９】
――第１の実施の形態――
本発明による車載情報端末をナビゲーション装置に適用した第１の実施形態の構成を図１に示す。図１のナビゲーション装置は、地図表示、経路誘導などの通常のナビゲーション機能の他に、音楽や映像再生機能を有する。この実施の形態では、音楽再生機能、音楽リッピング機能、地上デジタル放送視聴および録画機能をナビゲーション装置が備えているものとして説明する。なお、本明細書において、音楽データや地上デジタル放送映像データをストリーム系データまたはマルチメディア系データと呼び、これらのストリーム系データまたはマルチメディア系データは連続的に転送される。これに対して、ナビゲーション処理における地図スクロール時のスクロールデータやガイダンスデータは間欠的にデータ転送される。
【００１０】
ナビゲーション装置は、ナビゲーション用メインＣＰＵ（プロセッサ）１０Ａと、音楽／映像再生用サブＣＰＵ（プロセッサ）１０Ｂと、ＦＰＧＡ等で構成される調停回路２０を主要部とする制御回路１０とを備えている。制御回路１０には、ハードディスクドライブ（ＨＤＤ）５０と、装填されたＣＤやＤＶＤなどから音楽データや映像データを読み取るＤＶＤドライブ６０と、自車両の現在位置を検出する位置検出装置７１と、地上デジタル放送受信回路７２と、地図を表示したり地上デジタル放送の映像を表示する表示モニタ７３と、経路案内の音声を出力したり受信した地上デジタル放送の音声を出力するスピーカ７４と、各種入力装置７５とが接続されている。
【００１１】
制御回路１０のメインＣＰＵ１０Ａには、プログラムなどを書き込んだフラッシュメモリ１１と、ＣＰＵ１０Ａには含まれないが装置として必要な論理演算を実行するＡＳＩＣ１２と、メインＣＰＵ１０Ａの演算処理で使用する各種データを一時保存するＤＲＡＭ１３とがバスで接続されている。制御回路１０のサブＣＰＵ１０Ｂには、プログラムなどを書き込んだフラッシュメモリ１４と、音楽ＣＤから取得した音楽データを再生処理したりリッピング処理を行うＤＳＰ１５と、ＤＳＰ１５の信号処理で得られる各種データを一時保存するＤＲＡＭ１６と、サブＣＰＵ１０Ｂの演算処理で使用する各種データを一時保存するＤＲＡＭ１７とが接続されている。
【００１２】
ＨＤＤ５０は、内蔵する磁気ハードディスクに記憶した地図データおよび音楽データの読み出し／書き込みを行う高速大容量記憶媒体および読み取り装置である。ＨＤＤ５０の音楽データはリッピング処理によってエンコードされた音楽データである。ＤＶＤドライブ６０は、セットした音楽ＣＤに記憶されている音楽データあるいは映像ＤＶＤに記憶されている映像データの読み出し／書き込みを行う読み取り／書き込み装置である。音楽ＣＤや映像ＤＶＤはＨＤＤ５０に比べて低速小容量記憶媒体である。
【００１３】
ハードディスクドライブ（ＨＤＤ）５０およびＤＶＤドライブ６０は、ATAPI(AT Attachment Packet Interface)に準拠したIDE(Integrated Drive Electronics)インターフェースを使用してメインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂとの間でコマンド授受あるいはデータ授受を行う。調停回路２０は、メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂの、ＨＤＤ５０およびＤＶＤドライブ６０に対するバス権（アクセス権）を調停している。
【００１４】
メインＣＰＵ１０Ａは、フラッシュメモリ１１に格納された制御プログラムを実行して各種のナビゲーション処理を実行する。ＤＲＡＭ１３には、ナビゲーション処理で使用するデータや演算データが一時的に保存される。メインＣＰＵ１０Ａは、位置検出装置７１で検出された車両の現在位置を入力し、ＨＤＤ５０の地図データに基づいて自車位置周辺の地図を表示モニタ７３に表示する。あるいは、自車位置から目的地までの経路を探索し、推奨経路に沿って乗員を案内する経路誘導を行う。
【００１５】
サブＣＰＵ１０Ｂは、フラッシュメモリ１４に格納された制御プログラムを実行して音楽再生処理や映像再生処理などを行う。サブＣＰＵ１０Ｂは、ＤＶＤドライブ６０にセットされた音楽ＣＤに記憶された音楽データをＤＳＰ１５で再生してスピーカ７４から出力する。サブＣＰＵ１０Ｂの制御の下、ＤＳＰ１５は、ＤＶＤドライブ６０から読み込んだ音楽データをリッピング処理し、サブＣＰＵ１０Ｂは、リッピング処理によりエンコードされた音楽データなどのストリーム系データをバッファメモリ４２にいったん記憶し、後述するバス権設定処理の制御の下で決定されるタイミングでバッファメモリ４１からＨＤＤ５０に転送して記憶する。
【００１６】
サブＣＰＵ１０Ｂは、地上デジタル放送受信回路７２で受信した地上デジタル放送の映像を表示モニタ７３に表示し、スピーカ７４からその音声を出力することにより、いわゆる地デジ放送を視聴する処理を行う。地上デジタル放送を録画する処理もサブＣＰＵ１０Ｂにより行われる。この場合、受信した映像や音声はＤＲＡＭ１７に一時的に格納され、表示モニタ７３とスピーカ７４により乗員に提供する。ＤＲＡＭ１７には、音楽データや映像データの処理（エンターテイメント処理）で使用されるデータや演算データも一時的に保存される。
【００１７】
以上のように、メインＣＰＵ１０Ａはナビゲーション処理を実行するプロセッサであり、たとえば、経路探索処理、地図スクロール処理、地図データ読み出し処理などを実行する。また、サブＣＰＵ１０Ｂは、たとえば、音楽データのリッピング処理、ＣＤ／ＤＶＤデータ読み出し処理、地上デジタル放送録画処理などを実行するプロセッサである。
【００１８】
図２に詳細に示すように、調停回路２０は、Host I/F２１と、Device I/F２２および２３と、Arbiterと呼ばれる切替制御回路２４、第１および第２のブリッジ回路２５および２６とを備えたプログラマブルゲートアレイ回路として構成することができる。
【００１９】
Host I/F２１はＨＤＤ５０およびＤＶＤドライブ６０と接続され、Device I/F２２はメインＣＰＵ１０Ａと接続され、Device I/F２３はサブＣＰＵ１０Ｂと接続されている。メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂは、バス権要求信号をDevice I/F２２および２３を経由して切替制御回路２４へ送信する。ブリッジ回路２５および２６は、いずれか一方のＣＰＵをＨＤＤ５０またはＤＶＤドライブ６０と接続するスイッチ回路であり、Device I/F２２および２３とHost I/F２１との間にそれぞれ設けられる。切替制御回路２４は、メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂから出力されるバス権要求信号に基づいてブリッジ回路２５，２６を制御してバス接続を切り替える。
【００２０】
切替制御回路２４によるバス権調停は次の通りである。
（１）メインＣＰＵ１０Ａからのみバス権を要求されている場合、切替制御回路２４は、バス権をメインＣＰＵ１０Ａに与えるようにブリッジ回路２５，２６を切替制御する。
【００２１】
（２）サブＣＰＵ１０Ｂからのみバス権を要求されている場合、切替制御回路２４は、バス権をサブＣＰＵ１０Ｂに与えるようにブリッジ回路２５，２６を切替制御する。
【００２２】
（３）メインＣＰＵ１０ＡによりＨＤＤ５０へデータが転送されているとき、サブＣＰＵ１０Ｂがバス権を要求すると、切替制御回路２４は、バス権をメインＣＰＵ１０ＡからサブＣＰＵ１０Ｂに引き渡し、サブＣＰＵ１０Ｂからのデータ転送が終了すると、メインＣＰＵ１０Ａにバス権を与える。
【００２３】
（４）サブＣＰＵ１０ＢによりＨＤＤ５０へのデータが転送されているとき、メインＣＰＵ１０Ａがバス権を要求すると、切替制御回路２４は、サブＣＰＵ１０Ｂによるデータの転送が終わるまで待機する。サブＣＰＵ１０Ｂがデータの転送を終えると、切替制御回路２４は、バス権をサブＣＰＵ１０ＢからメインＣＰＵ１０Ａに引き渡す。
【００２４】
上記の（３）および（４）は、サブＣＰＵ１０Ｂによるデータ転送がメインＣＰＵ１０Ａよりも常に優先されることを意味している。
【００２５】
次に、本実施形態における、切替制御回路２４へのバス権要求方法およびバス権設定方法について説明する。切替制御回路２４は、MAILBOXレジスタとパーティションレジスタを備えている。これらのレジスタは各ＣＰＵから値の読み書きが可能となっている。一方のＣＰＵがMAILBOXレジスタに何らかの値を書き込むと、切替制御回路２４は、他方のＣＰＵに対して割り込みコマンドを送信する。
【００２６】
一方のＣＰＵがバス権を要求するとき、一方のＣＰＵがMAILBOXレジスタへバス権要求フラグを書き込むと、切替制御回路２４は他方のＣＰＵに割り込みコマンドを送信する。割り込みコマンドを受信した他方のＣＰＵは、MAILBOXレジスタを参照することにより、一方のＣＰＵがバス権を要求していることを認識する。他方のＣＰＵがバス権を一方のＣＰＵへ渡してもよい状態になったとき、他方のＣＰＵはMAILBOXレジスタへ、バス権解放フラグを書き込む。これにより、切替制御回路２４は一方のＣＰＵに割り込みコマンドを送信する。割り込みコマンドを受信した一方のＣＰＵは、バス権を獲得できたことを認識する。以上のようにして、バス権の調停が行われる。
【００２７】
MAILBOXレジスタには、上述したバス権要求フラグとバス権解放フラグに加えて、ＨＤＤ５０のデータを更新したか否かを示すデータ更新フラグが存在する。MAILBOXレジスタへバス権解放フラグを書き込むとき、データ更新フラグに対して同時に書き込みが行われる。ＨＤＤ５０に存在するデータのうち、どのデータが更新されたかは、パーティションレジスタに記録される。
【００２８】
バス権を獲得し、ＨＤＤ５０のデータの書き換えを終えたＣＰＵは、MAILBOXレジスタへデータ更新フラグとバス権解放フラグを書き込む前に、パーティションレジスタへ後述するデータの書き込みを行う。一方のＣＰＵがバス権を解放したことを認識した他方のＣＰＵは、MAILBOXレジスタの値を参照し、ＨＤＤ５０のデータが更新されているか否かを判定する。データが更新されていた場合は、パーティションレジスタの値を参照して、どのデータが更新されているかを確認し、必要に応じて更新されたデータの読み込みを行う。
【００２９】
次に、上述したレジスタの詳細を説明する。前述の通り、メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂと、ＨＤＤ５０またはＤＶＤドライブ６０とは、ＡＴＡＰＩに準拠したインタフェースを用いて、データおよびコマンドの授受を行う。上記の通信を行うとき、通信の主体であるメインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂはホストと呼ばれ、記憶装置であるＨＤＤ５０およびＤＶＤドライブ６０はデバイスと呼ばれる。
【００３０】
各々のデバイスは、ＡＴＡＰＩによって規定される複数のレジスタを備えている。ホストはこれらのレジスタに対し読み書きを行うことで、各種の制御を行う。レジスタは１つにつき８ビットの大きさである。レジスタには、読み取り専用および書き込み専用であるものも存在する。図３は、本実施形態におけるレジスタの一覧を示す図である。
【００３１】
ホストが読み書きを行うレジスタは、列８１に示すChip Selectと呼ばれる２つのデータＣＳ０，ＣＳ１と、列８２に示すDevice Addressと呼ばれる３つのデータＤＡ０〜ＤＡ２によって特定される。例えば、行８４に示すように、ＣＳ１、ＣＳ０、ＤＡ２、ＤＡ１、ＤＡ０がそれぞれＨｉｇｈ、Ｌｏｗ、Ｌｏｗ、Ｌｏｗ、Ｌｏｗであれば、ホストが読み書きを行うレジスタはＤＡＴＡレジスタである。
【００３２】
列８３に示すレジスタのうち、符号２１で示す２つのレジスタ、すなわちMAILBOXレジスタとパーティションレジスタは、本実施形態において独自に割り当てた、切替制御回路２４が備えるレジスタである。Device I/F２２および２３は、メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂから、上記２つのレジスタへアクセスするための信号が送信されたことを検知した場合、上記の信号をＨＤＤ５０やＤＶＤドライブ６０にではなく、切替制御回路２４に対して送信する。すなわち、ＣＰＵがMAILBOXレジスタおよびパーティションレジスタに対して読み書きを行うと、切替制御回路２４が備えるレジスタに対する読み書きが行われる。
【００３３】
以下、MAILBOXレジスタおよびパーティションレジスタについて説明する。MAILBOXレジスタは、２つのＣＰＵが互いに通信を行うために利用するレジスタである。図４は、MAILBOXレジスタの詳細を示す図である。図４（ａ）を用いて、MAILBOXレジスタの動作を説明する。
【００３４】
メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂのいずれか一方のＣＰＵから、切替制御回路２４のMAILBOXレジスタ９０へ何らかの値を書き込むと、書き込みと同時に、他方のＣＰＵに対する割り込みコマンドを発生する。割り込みコマンドを受信したＣＰＵは、MAILBOXレジスタの値を読むことで、割り込みコマンドを発生させたＣＰＵがMAILBOXへ書き込んだ値を知ることができる。
【００３５】
本実施形態におけるMAILBOXレジスタへの値の割り付けを図４（ｂ）に示す。図中に「＃」で示されたビットは、使用されていないビットであり、どのような値をとってもよい。ビット０は、ＨＤＤ５０へのアクセスが終了し、バス権を明け渡してもよいことを示すビットである。ビット１は、ＨＤＤ５０のデータを更新したか否かを示すビットである。ビット１が１であった場合、ＨＤＤ５０に何らかの変更が加えられたことを示している。ビット２は、バス権要求の有無を識別するビットであり、ＣＰＵがバス権の要求を行うときに１が書き込まれる。ビット０とビット２が同時に１になることはない。
【００３６】
ＣＰＵがバス権の要求を行うとき、MAILBOXレジスタには「１００」が書き込まれる。すなわち、ビット２には１が、ビット１およびビット０には０が書き込まれる。ＣＰＵがＨＤＤ５０への書き込みを終了し、バス権の解放を行うとき、MAILBOXレジスタには「０１１」が書き込まれる。ＣＰＵがＨＤＤ５０のデータを書き換えずにバス権の解放を行う場合には、MAILBOXレジスタには「００１」が書き込まれる。
【００３７】
なお、一方のＣＰＵがMAILBOXレジスタのビット０、すなわちバス権を明け渡してもよいことを示すビットに１を書き込んでも、実際のバス権が即座に他方のＣＰＵに切り替わるとは限らない。例えば、他方のＣＰＵがＨＤＤ５０に対して転送したいデータを持っていない状態であれば、切替制御回路２４はバス権の要求が行われるまで、バス権の切り替えを行わない。
【００３８】
次に、パーティションレジスタの詳細を説明する。図５は、パーティションレジスタの定義を示す図である。ＨＤＤ５０には６つのパーティションが存在し、各パーティションにはそれぞれ地図データと，音楽データと，その他４種類のデータが記録される。パーティションレジスタのビット０がパーティション０に対応し、ビット１がパーティション１に、ビット２がパーティション２に対応している。その他のビットも同様である。
【００３９】
パーティションの記録データに対して何らかの変更を加えたＣＰＵは、パーティションレジスタの、変更を加えたパーティションに対応するビットを１に、それ以外のビットを０に設定する。そして、MAILBOXレジスタのバス権解放フラグをセットすることにより、他方のＣＰＵへＨＤＤ５０への書き込みを終えたことを通知する。他方のＣＰＵは、まずMAILBOXレジスタを調べて、ＨＤＤ５０のデータが更新されたか否かを判定する。データが更新されていた場合、パーティションレジスタを調べ、どのパーティションが更新されているのかを確認する。ＤＲＡＭに読み込み済みのデータを含むパーティションの記録データが更新されていれば、必要に応じて、ＨＤＤ５０から更新されたデータを読み込む。
【００４０】
次に、制御回路の具体的な処理内容について、図面を用いて説明する。図６〜８は、制御回路による処理全体を説明するフローチャートである。なお、図６および図７は、それぞれサブＣＰＵ１０ＢおよびメインＣＰＵ１０ＡとＨＤＤ５０とのデータ転送処理を説明するフローチャートである。また、図８は、ゲートアレイで構成される切替制御回路で行われる調停ロジックを説明するフローチャートである。
【００４１】
図６を参照し、サブＣＰＵ１０Ｂによるデータ転送処理を説明する。ステップＳ１１では、ＨＤＤ５０との間で転送するデータがあるか否かを判定する。転送データがなければ否定判定が行われ、ステップＳ１２に進む。転送データがある場合、ステップＳ１７へ進む。
【００４２】
ステップＳ１２では、メインＣＰＵ１０ＡがMAILBOXレジスタへ書き込みを行ったことによる割り込みが発生したか否かを判定する。この割り込みは、メインＣＰＵ１０Ａがバス権を要求する（後述する図７のステップＳ３９）か、あるいはバス権を解放する（後述する図７のステップＳ３５あるいはステップＳ４７）ことにより発生する。割り込みが発生していなければ否定判定が行われ、ステップＳ１１へ戻る。割り込みが発生していた場合はステップＳ１３へ進む。
【００４３】
ステップＳ１３では、MAILBOXレジスタの値を確認する。ステップＳ１４では、ステップＳ１３で読み込んだMAILBOXレジスタの値を調べ、ビット２が１であるか否かを判定する。すなわち、ステップＳ１２で発生したメインＣＰＵ１０Ａによる割り込みが、バス権要求によるものか否かを判定する。メインＣＰＵ１０Ａによるバス権要求が行われている場合、ステップＳ１５へ進み、MAILBOXレジスタへサブＣＰＵ１０Ｂのバス権解放を示す値を書き込む。具体的には、ビット０を１に、その他のビットを０に設定する。その後、ステップＳ１１へ戻る。他方、メインＣＰＵ１０Ａによるバス権要求が行われていない場合、すなわちメインＣＰＵ１０Ａがバス権を解放している場合には、ステップＳ１６へ進み、パーティションレジスタの値を取得してパーティション情報を確認し、必要に応じてＨＤＤ５０からデータを読み直す。その後、ステップＳ１１へ戻る。
【００４４】
ステップＳ１７では、図３に符号８５で示されている、ＨＤＤ５０のSTATUSレジスタの値を読み込む。STATUSレジスタの値を読み込んだ結果は、ＨＤＤ５０へアクセス可能な場合はReady、アクセス不可能な場合はBusyとなる。ステップＳ１８では、STATUSレジスタの値がReadyであるか否かを判定する。Readyであった場合は肯定判定がなされ、ステップＳ２２へ進む。他方、Busyであった場合はステップＳ１９へ進み、MAILBOXレジスタへバス権要求を示す値を書き込む。具体的には、ビット２を１に、その他のビットを０に設定する。
【００４５】
ステップＳ２０では、ステップＳ１９で行ったバス権要求によって、メインＣＰＵ１０Ａがバス権を解放したことに起因する割り込みが発生したか否かを判定する。割り込みが発生していれば肯定判定が行われ、ステップＳ２１へ進む。メインＣＰＵ１０Ａが後述する図７のステップＳ３５あるいはステップＳ４７において、MAILBOXレジスタのビット０に１を書き込むと、この割り込みが発生する。ステップＳ２１では、パーティションレジスタの値を取得してパーティション情報を確認し、必要に応じてＨＤＤ５０からデータを読み直す。その後、ステップＳ１７へ戻る。
【００４６】
ステップＳ２２では、サブＣＰＵ１０ＢのＤＲＡＭ１７とＨＤＤ５０とのデータ転送を開始する。本実施の形態では、サブＣＰＵ１０Ｂを常にメインＣＰＵ１０Ａに対して優先させている。そのため、メインＣＰＵ１０Ａによる割り込みが発生しても、データ転送を中断しない。データ転送が終了したらステップＳ２３へ進む。ステップＳ２３では、パーティションレジスタの、データ転送により更新されたパーティションに対応するビットを１に、それ以外のビットを０に設定する。ステップＳ２４では、MAILBOXレジスタへ「０１１」または「００１」を書き込む。ここでビット０はバス権を明け渡してもよいことを示し、ビット１はＨＤＤ５０のデータを更新したか否かを示す。その後、ステップＳ１１へ戻る。
【００４７】
図７を参照し、メインＣＰＵ１０Ａによるデータ転送処理を説明する。ステップＳ３１では、ＨＤＤ５０との間で転送するデータがあるか否かを判定する。転送データがなければ否定判定が行われ、ステップＳ３２に進む。転送データがある場合、ステップＳ３７へ進む。
【００４８】
ステップＳ３２では、サブＣＰＵ１０ＢがMAILBOXレジスタへ書き込みを行ったことによる割り込みが発生したか否かを判定する。この割り込みは、サブＣＰＵ１０Ｂがバス権を要求する（図６のステップＳ１９）か、あるいはバス権を解放する（図６のステップＳ１５あるいはステップＳ２４）ことにより発生する。割り込みが発生していなければ否定判定が行われ、ステップＳ３１へ戻る。割り込みが発生していた場合はステップＳ３３へ進む。ステップＳ３３では、MAILBOXレジスタの値を確認する。ステップＳ３４では、ステップＳ３３で読み込んだMAILBOXレジスタの値を調べ、ビット２が１であるか否かを判定する。すなわち、ステップＳ３２で発生した割り込みが、バス権要求によるものか否かを判定する。サブＣＰＵ１０Ｂによるバス権要求が行われている場合、ステップＳ３５へ進み、MAILBOXレジスタへバス権の解放を示す値を書き込む。具体的には、ビット０を１に、その他のビットを０に設定する。その後、ステップＳ３１へ戻る。他方、サブＣＰＵ１０Ｂによるバス権要求が行われていない場合、すなわちサブＣＰＵ１０Ｂがバス権を解放している場合には、ステップＳ３６へ進み、パーティションレジスタの値を取得してパーティション情報を確認し、必要に応じてＨＤＤ５０からデータを読み直す。その後、ステップＳ３１へ戻る。
【００４９】
ステップＳ３７では、ＨＤＤ５０のSTATUSレジスタの値を読み込む。ステップＳ３８では、STATUSレジスタの値がReadyであるか否かを判定する。Readyであった場合は肯定判定がなされ、ステップＳ４２へ進む。他方、Busyであった場合はステップＳ３９へ進み、MAILBOXレジスタへバス権要求を示す値を書き込む。具体的には、ビット２を１に、その他のビットを０に設定する。
【００５０】
ステップＳ４０では、ステップＳ３９で行ったバス権要求によって、サブＣＰＵ１０Ｂがバス権を解放したことに起因する割り込みが発生したか否かを判定する。割り込みが発生していれば肯定判定が行われ、ステップＳ４１へ進む。サブＣＰＵ１０Ｂが図６のステップＳ１５あるいはステップＳ２４において、MAILBOXレジスタのビット０に１を書き込むと、この割り込みが発生する。ステップＳ４１では、パーティションレジスタの値を取得してパーティション情報を確認し、必要に応じてＨＤＤ５０からデータを読み直す。その後、ステップＳ３７へ戻る。
【００５１】
ステップＳ４２では、メインＣＰＵ１０ＡのＤＲＡＭ１３とＨＤＤ５０との間でデータ転送を開始する。ステップＳ４３では、サブＣＰＵ１０Ｂがバス権を要求した（図６のステップＳ１９）ことによる割り込みが発生したか否かを判定する。割り込みが発生していれば肯定判定が行われ、ステップＳ４４でデータ転送を中止してステップＳ４６へ進む。他方、ステップＳ４３で否定判定がなされた場合はステップＳ４５へ進む。ステップＳ４５では、ＨＤＤ５０との間のデータ転送が完了したか否かを判定する。データ転送が終了していれば肯定判定が行われ、ステップＳ４６へ進む。他方、転送すべきデータが残っていた場合は、ステップＳ４２へ戻る。ステップＳ４６では、パーティションレジスタの、データ転送により更新されたパーティションに対応するビットを１に、それ以外のビットを０に設定する。ステップＳ４７では、MAILBOXレジスタへ「０１１」または「００１」を書き込む。ここでビット０はバス権を明け渡してもよいことを示し、ビット１はＨＤＤ５０のデータを更新したか否かを示す。その後、ステップＳ３１へ戻る。
【００５２】
図８を参照して、調停回路２０の調停ロジックについて説明する。ステップＳ５１では、メインＣＰＵ１０ＡによりMAILBOXレジスタへの書き込みが行われたか否かを判定する。このMAILBOXレジスタへの書き込みは、メインＣＰＵ１０Ａがバス権を要求する（図７のステップＳ３９）か、あるいはバス権を解放する（図７のステップＳ３５あるいはステップＳ４７）ことにより行われる。値が書き込まれていれば肯定判定がなされ、ステップＳ５２へ進む。他方、否定判定がなされた場合はステップＳ５７へ進む。
【００５３】
ステップＳ５２では、サブＣＰＵ１０Ｂに対して割り込みを発生させる。ステップＳ５３では、ステップＳ５１で行われたメインＣＰＵ１０ＡによるMAILBOXレジスタへの書き込みが、バス権要求によるものか否かを判定する。すなわち、MAILBOXレジスタのビット２が１であるか否かを判定する。ビット２が１であれば肯定判定が行われ、ステップＳ５４へ進む。他方、否定判定がなされた場合はステップＳ５１へ戻る。
【００５４】
ステップＳ５４では、サブＣＰＵ１０ＢによりMAILBOXレジスタへの書き込みが行われたか否かを判定する。このMAILBOXレジスタへの書き込みは、メインＣＰＵ１０Ａによるバス権の要求によって、サブＣＰＵ１０Ｂがバス権を解放する（図６のステップＳ１５あるいはステップＳ２４）ことにより行われる。書き込みが行われていればステップＳ５５へ進む。ステップＳ５５では、ブリッジ回路２５を制御し、メインＣＰＵ１０ＡがＨＤＤ５０へアクセス可能な状態にする。ステップＳ５６では、ステップＳ５４で行われたサブＣＰＵ１０ＢによるMAILBOXレジスタへの書き込みによって、メインＣＰＵ１０Ａに対する割り込みを発生させ、ステップＳ５１へ戻る。
【００５５】
ステップＳ５７では、サブＣＰＵ１０ＢによりMAILBOXレジスタへの書き込みが行われたか否かを判定する。このMAILBOXレジスタへの書き込みは、サブＣＰＵ１０Ｂがバス権を要求する（図６のステップＳ１９）か、あるいはバス権を解放する（図６のステップＳ１５あるいはステップＳ２４）ことにより行われる。値が書き込まれていれば肯定判定がなされ、ステップＳ５８へ進む。他方、否定判定がなされた場合はステップＳ５１へ戻る。
【００５６】
ステップＳ５８では、メインＣＰＵ１０Ａに対して割り込みを発生させる。ステップＳ５９では、ステップＳ５７で行われたサブＣＰＵ１０ＢによるMAILBOXレジスタへの書き込みが、バス権要求によるものか否かを判定する。すなわち、MAILBOXレジスタのビット２が１であるか否かを判定する。ビット２が１であれば肯定判定が行われ、ステップＳ６０へ進む。他方、否定判定がなされた場合はステップＳ５１へ戻る。
【００５７】
ステップＳ６０では、メインＣＰＵ１０ＡによりMAILBOXレジスタへの書き込みが行われたか否かを判定する。このMAILBOXレジスタへの書き込みは、メインＣＰＵ１０Ａがバス権を解放する（図７のステップＳ３５あるいはステップＳ４７）ことにより行われる。書き込みが行われていればステップＳ６１へ進む。ステップＳ６１では、ブリッジ回路２６を制御し、サブＣＰＵ１０ＢがＨＤＤ５０へアクセス可能な状態にする。ステップＳ６２では、ステップＳ６０で行われたメインＣＰＵ１０ＡによるMAILBOXレジスタへの書き込みによって、サブＣＰＵ１０Ｂに対する割り込みを発生させ、ステップＳ５１へ戻る。
【００５８】
次に、具体例を用いて、図６〜８に示したフローチャートを説明する。メインＣＰＵ１０ＡとサブＣＰＵ１０Ｂが共にＨＤＤ５０の読み書きを行っていないとき、メインＣＰＵ１０ＡはステップＳ３１とステップＳ３２を繰り返し、サブＣＰＵ１０ＢはステップＳ１１とステップＳ１２を繰り返す。また、切替制御回路２４はステップＳ５１とステップＳ５７を繰り返す。互いのＣＰＵがＨＤＤ５０に対する読み書きを行っていない場合であっても、バス権はいずれかのＣＰＵに対して与えられている。ここでは、バス権はメインＣＰＵ１０Ａにあるものとする。
【００５９】
ここで、説明を簡単にするため、サブＣＰＵ１０ＢがＨＤＤ５０から音楽データを読み出すことを考える。ステップＳ１１からステップＳ１７へ進み、STATUSレジスタを読む。バス権がメインＣＰＵ１０Ａにあるため、STATUSレジスタの値はBusyとなっている。これにより、ステップＳ１８からステップＳ１９に進み、MAILBOXレジスタへ「１００」を書き込む。サブＣＰＵ１０Ｂはその後ステップＳ２０に進み、メインＣＰＵ１０Ａによる割り込みを待ち続ける。
【００６０】
切替制御回路２４は、ステップＳ５７においてサブＣＰＵ１０ＢによるMAILBOXレジスタの更新を検出し、ステップＳ５８でメインＣＰＵ１０Ａに対する割り込みを発生させる。その後ステップＳ５９に進み、サブＣＰＵ１０Ｂがバス権の要求を行ったことを検知してステップＳ６０へ進む。そして、ステップＳ６０でメインＣＰＵ１０ＡによるMAILBOXレジスタの更新を待ち続ける。
【００６１】
メインＣＰＵ１０Ａは、ステップＳ３２でサブＣＰＵ１０Ｂによる割り込みが発生したことを検出する。ステップＳ３３でMAILBOXレジスタの値を確認するとサブＣＰＵ１０Ｂがバス権を要求していることがわかるので、ステップＳ３４からステップＳ３５へ進む。そして、ステップＳ３５でMAILBOXレジスタに「００１」を書き込む。ビット１が０となっているのは、メインＣＰＵ１０ＡがＨＤＤ５０のデータを更新していないためである。その後、ステップＳ３１に戻り、ステップＳ３１とステップＳ３２の処理を繰り返す。
【００６２】
切替制御回路２４は、ステップＳ６０においてメインＣＰＵ１０ＡがMAILBOXレジスタに書き込みを行ったことを検出し、ステップＳ６１に進む。そして、ステップＳ６１においてブリッジ回路２６を有効にし、サブＣＰＵ１０ＢがＨＤＤに対して読み書きを行えるようにする。その後、ステップＳ６２でサブＣＰＵ１０Ｂに対する割り込みを発生させ、ステップＳ５１とステップＳ５７を繰り返す処理に戻る。
【００６３】
サブＣＰＵ１０Ｂは、ステップＳ２０において上記の割り込みを検出し、ステップＳ２１においてパーティション情報の確認を行う。パーティションが更新されていないので、そのままステップＳ１７に進み、再度STATUSレジスタの確認を行う。切替制御回路２４がブリッジ回路２６を有効にしたことにより、今回はSTATUSレジスタの値がReadyとなっているので、ステップＳ１８からステップＳ２２へ進み、ＨＤＤ５０からの音楽データの読み出しを開始する。以降、データの読み出しが終了するか割り込みが発生するまでステップＳ２２、Ｓ２３、Ｓ２４の処理を繰り返す。
【００６４】
サブＣＰＵ１０ＢによるＨＤＤ５０からのデータの読み出しが終了したら、ステップＳ２３において、パーティションレジスタへの書き込みを行う。今回はＨＤＤ５０のデータを書き換えていないので、パーティションレジスタの全ビットを０に設定する。そしてステップＳ２４において、MAILBOXレジスタへ「００１」を書き込む。ビット１を０に設定しているのは、上記の通り、今回はＨＤＤ５０のデータを書き換えていないためである。その後ステップＳ１１に戻り、ステップＳ１１とステップＳ１２の処理を繰り返す。
【００６５】
切替制御回路２４は、ステップＳ５７においてサブＣＰＵ１０ＢによるMAILBOXレジスタへの書き込みを検出する。ステップＳ５８でメインＣＰＵ１０Ａに対して割り込みを発生させ、ステップＳ５９でサブＣＰＵ１０ＢによるMAILBOXレジスタへの書き込みがバス権要求ではないこと、すなわちMAILBOXレジスタのビット２が０であることを検知する。その後、ステップＳ５１とステップＳ５７を繰り返す処理に戻る。
【００６６】
メインＣＰＵ１０Ａは、ステップＳ３２でサブＣＰＵ１０Ｂによる割り込みが発生したことを検出する。ステップＳ３３でMAILBOXレジスタの値を確認すると、サブＣＰＵ１０Ｂがバス権を解放したことがわかるので、ステップＳ３４からステップＳ３６へ進む。そして、ステップＳ３６でパーティションレジスタを確認し、ＨＤＤ５０のデータが書き換えられていないことを認識する。その後、ステップＳ３１に戻り、ステップＳ３１とステップＳ３２の処理を繰り返す。
【００６７】
以上が、サブＣＰＵ１０ＢによるＨＤＤ５０との音楽データの読み込み及び書き込み処理の流れである。
【００６８】
次に、サブＣＰＵ１０Ｂによるデータの読み込み中に、メインＣＰＵ１０Ａが地図データの読み込みを行う場合を考える。上述の場合と同様に、メインＣＰＵ１０ＡはステップＳ３１とステップＳ３２を繰り返し、サブＣＰＵ１０ＢはステップＳ１１とステップＳ１２を繰り返し、切替制御回路２４はステップＳ５１とステップＳ５７を繰り返している状態を初期状態とする。また、バス権はサブＣＰＵ１０Ｂにあるものとする。
【００６９】
初めに、サブＣＰＵ１０ＢがステップＳ１１からステップＳ１７へ進み、STATUSレジスタを読む。バス権がサブＣＰＵ１０Ｂにあるため、STATUSレジスタの値はReadyとなっている。これにより、ステップＳ１８からステップＳ２２に進み、ＨＤＤ５０との間でデータ転送を行う。
【００７０】
切替制御回路２４は、ステップＳ５１においてメインＣＰＵ１０ＡによるMAILBOXレジスタの更新を検出し、ステップＳ５２でサブＣＰＵ１０Ｂに対する割り込みを発生させる。その後ステップＳ５３に進み、メインＣＰＵ１０Ａがバス権の要求を行ったことを検知してステップＳ５４へ進む。そして、ステップＳ５４でサブＣＰＵ１０ＢによるMAILBOXレジスタの更新を待ち続ける。
【００７１】
サブＣＰＵ１０Ｂは、ステップＳ１２でメインＣＰＵ１０Ａによる割り込みが発生したことを検出する。ステップＳ１３でMAILBOXレジスタの値を確認するとメインＣＰＵ１０Ａがバス権を要求していることがわかるので、ステップＳ１４からステップＳ１５へ進む。そして、ステップＳ１５でMAILBOXレジスタに「００１」を書き込む。ビット１が０となっているのは、サブＣＰＵ１０ＢがＨＤＤ５０のデータを更新していないためである。その後、ステップＳ１１に戻り、ステップＳ１１とステップＳ１２の処理を繰り返す。
【００７２】
切替制御回路２４は、ステップＳ５４においてサブＣＰＵ１０ＢがMAILBOXレジスタに書き込みを行ったことを検出し、ステップＳ５５に進む。そして、ステップＳ５５においてブリッジ回路２６を有効にし、メインＣＰＵ１０ＡがＨＤＤに対して読み書きを行えるようにする。その後、ステップＳ５６でメインＣＰＵ１０Ａに対する割り込みを発生させ、ステップＳ５１とステップＳ５７を繰り返す処理に戻る。
【００７３】
メインＣＰＵ１０Ａは、ステップＳ４０において上記の割り込みを検出し、ステップＳ４１においてパーティション情報の確認を行う。パーティションが更新されていないので、そのままステップＳ３７に進み、再度STATUSレジスタの確認を行う。切替制御回路２４がブリッジ回路２６を有効にしたことにより、今回はSTATUSレジスタの値がReadyとなっているので、ステップＳ３８からステップＳ４２へ進み、ＨＤＤ５０からの地図データの読み出しを開始する。以降、データの読み出しが終了するか割り込みが発生するまでステップＳ４２、Ｓ４３、Ｓ４５の処理を繰り返す。
【００７４】
次に、サブＣＰＵ１０Ｂによる音楽データの再生中に、メインＣＰＵ１０Ａが音楽再生に関するデータを書き込む場合を考える。いま、パーティション１に音楽データと再生時に優先する音楽ジャンルとが記録されているものとする。各々の音楽データには音楽ジャンルが設定されている。再生時に優先する音楽ジャンルは、例えばユーザが好む音楽ジャンルなどであり、ユーザにより事前に入力されたものがパーティション１に記録されている。サブＣＰＵ１０Ｂは、音楽再生時に上記の音楽ジャンル情報を読み出し、これに基づいて音楽データの再生順を決定する。
【００７５】
音楽データの再生を行うとき、サブＣＰＵ１０Ｂは、ＨＤＤ５０から再生する音楽データを読み出す。ステップＳ１１からステップＳ１７に進み、STATUSレジスタを読む。バス権がサブＣＰＵ１０ＢにあればSTATUSレジスタの値はReadyとなっているので、ステップＳ１８からステップＳ２２へ進む。そして、ステップＳ２２で再生を行う音楽データを読み出す。ステップＳ２３では、パーティションレジスタの全ビットを０に設定する。その後、ステップＳ２４でMAILBOXレジスタに「００１」を書き込む。サブＣＰＵ１０Ｂは、音楽データの再生が終了する度に上記の処理を繰り返し、異なる音楽データの再生を行う。
【００７６】
サブＣＰＵ１０Ｂによる音楽再生中に、メインＣＰＵ１０Ａが、パーティション１に記録されている再生時に優先する音楽ジャンルを書き換える場合を考える。メインＣＰＵ１０ＡはステップＳ３１からステップＳ３７に進み、STATUSレジスタを読む。バス権がサブＣＰＵ１０Ｂにあれば、STATUSレジスタの値はBusyとなっている。これにより、ステップＳ３８からステップＳ３９に進み、MAILBOXレジスタへ「１００」を書き込む。メインＣＰＵ１０Ａはその後ステップＳ４０に進み、サブＣＰＵ１０Ｂによる割り込みを待ち続ける。
【００７７】
切替制御回路２４は、ステップＳ５１においてメインＣＰＵ１０ＡによるMAILBOXレジスタの更新を検出し、ステップＳ５２でサブＣＰＵ１０Ｂに対する割り込みを発生させる。その後ステップＳ５３に進み、メインＣＰＵ１０Ａがバス権の要求を行ったことを検知してステップＳ５４へ進む。そして、ステップＳ５４でサブＣＰＵ１０ＢによるMAILBOXレジスタの更新を待ち続ける。
【００７８】
サブＣＰＵ１０Ｂは、ステップＳ１２でメインＣＰＵ１０Ａによる割り込みが発生したことを検出する。ステップＳ１３でMAILBOXレジスタの値を確認すると、メインＣＰＵ１０Ａがバス権を要求していることがわかるので、ステップＳ１４からステップＳ１５へ進み、MAILBOXレジスタに「００１」を書き込む。サブＣＰＵ１０Ｂはその後ステップＳ１１に戻る。
【００７９】
切替制御回路２４は、ステップＳ５４においてサブＣＰＵ１０ＢがMAILBOXレジスタに書き込みを行ったことを検出し、ステップＳ５５に進む。そして、ステップＳ５５においてブリッジ回路２５を有効にし、メインＣＰＵ１０ＡがＨＤＤに対して読み書きを行えるようにする。その後、ステップＳ５６でメインＣＰＵ１０Ａに対する割り込みを発生させ、ステップＳ５１とステップＳ５７を繰り返す処理に戻る。
【００８０】
メインＣＰＵ１０Ａは、ステップＳ４０において上記の割り込みを検出し、ステップＳ４１においてパーティション情報の確認を行う。パーティションが更新されていないので、そのままステップＳ３７に進み、再度STATUSレジスタの確認を行う。切替制御回路２４がブリッジ回路２５を有効にしたことにより、今回はSTATUSレジスタの値がReadyとなっているので、ステップＳ３８からステップＳ４２へ進み、ＨＤＤ５０のパーティション１に記録されている、再生時に優先する音楽ジャンルの書き換えを開始する。
【００８１】
書き換えが完了したら、メインＣＰＵ１０ＡはステップＳ４６へ進み、パーティションレジスタへの書き込みを行う。パーティション１の書き換えを行ったので、パーティション１に対応するビットすなわちビット１を１に設定し、それ以外のビットを０に設定する。そして、ステップＳ４７において、MAILBOXレジスタへ「０１１」を書き込む。ＨＤＤ５０のデータを更新したので、ビット１を１に設定している。その後、ステップＳ３１へ戻る。
【００８２】
切替制御回路２４は、ステップＳ６０においてメインＣＰＵ１０ＡがMAILBOXレジスタに書き込みを行ったことを検出し、ステップＳ６１に進む。そして、ステップＳ６１においてブリッジ回路２６を有効にし、サブＣＰＵ１０ＢがＨＤＤに対して読み書きを行えるようにする。その後、ステップＳ６２でサブＣＰＵ１０Ｂに対する割り込みを発生させ、ステップＳ５１とステップＳ５７を繰り返す処理に戻る。
【００８３】
サブＣＰＵ１０Ｂは、ステップＳ１２でメインＣＰＵ１０Ａによる割り込みが発生したことを検出する。ステップＳ１３でMAILBOXレジスタの値を確認すると、メインＣＰＵ１０Ａがバス権を解放したことがわかるので、ステップＳ１４からステップＳ１６へ進む。そして、ステップＳ１６でパーティションレジスタを確認する。ここで、音楽データを含むパーティション１が更新されていることを検出し、再生時に優先する音楽ジャンルを再度読み込む必要があることを認識する。その後、ステップＳ２２へ進み、再生時に優先する音楽ジャンルを読み出す。新しく読み出したデータは、これ以降の音楽の再生順を決定するために用いられる。
【００８４】
以上が、サブＣＰＵ１０Ｂによる音楽データの再生中に、メインＣＰＵ１０Ａが音楽再生に関するデータの書き換えを行う場合の処理の流れである。サブＣＰＵ１０ＢとメインＣＰＵ１０Ａが同一のパーティションに対して書き込みを含むアクセスを行う場合には、上述と同様の流れとなる。例えば、サブＣＰＵ１０Ｂが地上デジタル放送の録画処理をあるパーティションに対して行っているときに、メインＣＰＵ１０Ａが同一のパーティションへ位置データを書き込む場合についても、同様の流れでＨＤＤ５０へのアクセスの調停が行われる。
【００８５】
以上説明した第１の実施の形態によるナビゲーション装置によれば、次のような作用効果を奏することができる。
（１）複数のＣＰＵが通信を行うための通信レジスタであるMAILBOXレジスタを用意し、割り込みを受けたＣＰＵが割り込みの要因を確認できるようにした。これにより、割り込みへの対処を容易に行うことができる。
（２）ＨＤＤに記憶されているデータの、パーティション（分割領域）ごとの更新有無を記録するパーティションレジスタ（分割領域レジスタ）を用意し、各ＣＰＵがＨＤＤへのアクセスを行った後に、アクセス内容に応じてパーティションレジスタを更新するようにした。これにより、ＨＤＤに記録されているデータの再読込が必要か否かをパーティションごとに判定できる。
（３）MAILBOXレジスタおよびパーティションレジスタを、ＡＴＡＰＩレジスタとしてアクセス可能にした。これにより、追加の信号線を用意することなく、調停制御を行うことができる。
【００８６】
上述した第１の実施の形態では、MAILBOXレジスタおよびパーティションレジスタを、未使用となっていたＡＴＡＰＩレジスタに割り当てていた。以下に詳述する第２の実施の形態では、ＡＴＡＰＩ規格で使用されていないビットを用いて利用可能なレジスタを拡張し、上記の２つのレジスタを割り当てる。
【００８７】
――第２の実施の形態――
本実施形態によるナビゲーション装置は、切替制御回路２４が備えるレジスタの読み書きを行う際に、特別な手順を必要とする。ナビゲーション装置の電源オン直後は、メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂから、切替制御回路２４が備えるレジスタへの読み書きを行えない状態となっている。
【００８８】
切替制御回路２４は、メインＣＰＵ１０ＡおよびサブＣＰＵ１０ＢがＡＴＡバス上に送信する、ＨＤＤ５０またはＤＶＤドライブ６０のレジスタへの書き込み信号を常時監視している。所定のレジスタへの書き込みが検知されたとき、切替制御回路２４はブリッジ回路２５および２６を制御すると共に、切替制御回路２４が備えるレジスタへの読み書きを行えるようにする。これにより、メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂから切替制御回路２４が備えるレジスタへ、バス権の要求などを行えるようになる。
【００８９】
本実施形態におけるナビゲーション装置は、図９に示すレジスタを備える。斜線で示したレジスタは使用しない。列９３が通常のデバイスが備えるレジスタであり、列９４が切替制御回路２４が備えるレジスタである。
【００９０】
図９に示したレジスタのうち、ＤＥＶＩＣＥレジスタについてより詳細に説明する。図１０は、ＤＥＶＩＣＥレジスタのビットごとの機能を示した図である。ビット４は、アクセス対象のデバイスを選択するＤＥＶビットである。本実施形態においては、ＤＥＶビットが０の場合はＨＤＤ５０が、１の場合はＤＶＤドライブ６０が選択される。
【００９１】
ビット７およびビット５は、ＡＴＡＰＩ規格に準拠して、以前何らかの意味を与えられて使用されていたが、現在のＡＴＡＰＩ規格では使用されていないビットである。これらのビットへどのような値を書き込んでも、デバイスの動作には影響しない。
【００９２】
本実施形態では、ＤＥＶＩＣＥレジスタのビット７を用いて、メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂから読み書き可能なレジスタの切り替えを行う。図１１は、レジスタの切り替えの概略を示す図である。符号８６は切替制御回路２４が備えるレジスタを、符号８７はＨＤＤ５０が備えるレジスタを表す。以下、この図を基にレジスタの切り替え動作を説明する。なお、図１１では、Device I/F２２およびHost I/F２１を省略した。
【００９３】
通常、切替制御回路２４およびブリッジ回路２５は図１１（ａ）あるいは図１１（ｂ）に示す状態となっている。図１１（ａ）はメインＣＰＵ１０Ａにバス権が与えられている状態、図１１（ｂ）はメインＣＰＵ１０Ａにバス権が与えられていない状態である。レジスタ８６の斜線は、レジスタ８６が読み書きできない状態となっていることを示す。
【００９４】
図１１（ａ）に示す状態のとき、メインＣＰＵ１０ＡはＨＤＤ５０のレジスタ８７へ読み書きを行える。一方、図１１（ｂ）に示す状態のときは、ブリッジ回路２５により信号が遮断されるため、ＨＤＤ５０のレジスタ８７へ読み書きを行うことはできない。いずれの状態であっても、切替制御回路２４は、メインＣＰＵ１０ＡからＡＴＡバスへ送信される信号を監視している。
【００９５】
ここでメインＣＰＵ１０Ａが、ＤＥＶＩＣＥレジスタのビット７へ１を書き込む信号を送信したとする。送信前の状態が図１１（ａ）に示す状態であれば、図１１（ｃ）に示すように、送信した信号はＨＤＤ５０に到達する。すなわち、レジスタ８７に含まれるＤＥＶＩＣＥレジスタのビット７へ１が書き込まれる。一方、送信前の状態が図１１（ｂ）に示す状態であった場合は、図１１（ｄ）に示すように、送信した信号はブリッジ回路２５により遮断され、ＨＤＤ５０へは到達しない。なお、ＤＥＶＩＣＥレジスタのビット７へ値を書き込んでも、前述の通りＨＤＤ５０の動作には何ら影響を与えない。
【００９６】
図１１（ｃ）と図１１（ｄ）のいずれの場合であっても、メインＣＰＵ１０Ａが送信した信号は切替制御回路２４へ到達する。そして、切替制御回路２４は、メインＣＰＵ１０ＡがＤＥＶＩＣＥレジスタのビット７へ１を書き込もうとしたことを検知し、メインＣＰＵ１０Ａから切替制御回路２４が備えるレジスタ８６へ読み書きができるようにする。その結果、図１１（ｅ）に示す状態となる。
【００９７】
図１１（ｅ）では、ブリッジ回路２５によりメインＣＰＵ１０ＡとＨＤＤ５０とが遮断されているため、メインＣＰＵ１０Ａからの信号はＨＤＤ５０に到達しない。また、切替制御回路２４が備えるレジスタ８６は、読み書きが行える状態となっている。この状態でメインＣＰＵ１０Ａは、レジスタ８６へバス権要求などの必要な操作を行う。
【００９８】
必要な操作をすべて終えたメインＣＰＵ１０Ａは、図１１（ｆ）に示すように、ＤＥＶＩＣＥレジスタのビット７へ０を書き込む信号を送信する。切替制御回路２４はこの信号を検知し、レジスタ８６へ読み書きを行えなくする。結果として、メインＣＰＵ１０Ａがバス権を取得していれば図１１（ａ）に示す状態へ、そうでないなら図１１（ｂ）に示す状態へ移る。
【００９９】
以上のようにして、メインＣＰＵ１０ＡおよびサブＣＰＵ１０Ｂは、読み書きを行うレジスタの切り替えを行う。そして各々のＣＰＵは、切替制御回路２４が備える、図９の列９４で示したレジスタを用いてバス権調停を行う。
【０１００】
上述した第２の実施の形態によるナビゲーション装置によれば、第１の実施の形態によるナビゲーション装置で得られる作用効果に加えて、次の作用効果が得られる。すなわち、既存のＡＴＡＰＩレジスタの、使用されていないビットを用いて、操作対象のレジスタが切り替わるようにした。これにより、多数のレジスタを調停制御などのために割り当てることができる。
【０１０１】
次のような変形も本発明の範囲内である。
（１）パーティションの更新情報通知，割り込みの発生，および割り込みの原因通知は、必ずしもレジスタで行う必要はない。例えば、追加の信号線を用意し、上記の操作を信号線で行ってもよい。
（２）データの更新を通知する単位は、パーティション単位でなくてもよい。例えば、ディレクトリ単位やファイル単位で更新が行われたか否かを通知してもよい。
（３）調停回路に用意されたレジスタには、調停制御以外の用途のものが含まれていてもよい。例えば、調停回路の表面温度などのセンサ値や、デバッグ用の統計情報などを取得できるようにしてもよい。
（４）サブＣＰＵをメインＣＰＵよりも常に優先させる必要はない。例えば、各々のＣＰＵが実行する処理ごとに優先度を与え、より優先度の高い処理を実行しているＣＰＵが優先されるようにしてもよい。
【０１０２】
（５）ＨＤＤの複数のパーティションをメインＣＰＵとサブＣＰＵが共有しない場合、MAILBOXレジスタ（通信レジスタ）にはバス権要求コマンドとバス権開放コマンドを記録するビットのみを設け、通信レジスタを参照してメインＣＰＵとサブＣＰＵなど複数のプロセッサのバス権を調停してもよい。この場合、調停回路には、通信レジスタのデータを参照して複数のプロセッサのバス権を制御する制御ロジック回路が設けられる。制御ロジック回路は、ビットのバス権要求コマンドとバス権解放コマンドのデータを参照して複数のプロセッサのバス権を制御する。
（６）通信レジスタにメインＣＰＵとサブＣＰＵからの他のコマンドを記録し、ＨＤＤと複数のＣＰＵとの間で他の高度なデータ処理を行うようにしてもよい。
（７）以上では、ＡＴＡＰＩ規格に準拠してＨＤＤと複数のプロセッサとの間でのデータ授受を行う車載情報端末を例示したが、本発明は他の規格に準拠したシステム構成の車載情報端末にも適用できる。
【０１０３】
本発明の特徴を損なわない限り、本発明は上記実施の形態に限定されるものではなく、本発明の技術的思想の範囲内で考えられるその他の形態についても、本発明の範囲内に含まれる。
【図面の簡単な説明】
【０１０４】
【図１】第１の実施形態の構成を示すブロック図である。
【図２】調停回路２０の詳細な構成を示すブロック図である。
【図３】第１の実施形態におけるレジスタの一覧を示す図である。
【図４】MAILBOXレジスタの詳細を示す図である。
【図５】パーティションレジスタの定義を示す図である。
【図６】第１の実施形態における、サブＣＰＵ１０Ｂによるデータ転送処理のフローチャートである。
【図７】第１の実施形態における、メインＣＰＵ１０Ａによるデータ転送処理のフローチャートである。
【図８】第１の実施形態における、切替制御回路２４で行われる調停ロジックを説明するフローチャートである。
【図９】第２の実施形態におけるレジスタの一覧を示す図である。
【図１０】ＤＥＶＩＣＥレジスタのビットごとの機能を示した図である。
【図１１】第２の実施形態におけるレジスタの切り替えの概略を示す図である。
【符号の説明】
【０１０５】
１０  制御回路
１０Ａ  メインＣＰＵ
１０Ｂ  サブＣＰＵ
２４  切替制御回路
５０  ＨＤＤ
【図１】
2010055295.tif 000003
【図２】
2010055295.tif 000004
【図３】
2010055295.tif 000005
【図４】
2010055295.tif 000006
【図５】
2010055295.tif 000007
【図６】
2010055295.tif 000008
【図７】
2010055295.tif 000009
【図８】
2010055295.tif 000010
【図９】
2010055295.tif 000011
【図１０】
2010055295.tif 000012
【図１１】
2010055295.tif 000013