(57)【要約】【課題】簡易な構成で音切れの発生を防止可能なマルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサを提供する。【解決手段】本発明に係るマルチコアシステム１は、複数のＯＳ［１］１１０、ＯＳ［２］１２０がサウンド再生機能に係る主系及び予備系に設定され、予備系のＯＳ［１］１１０は、ＤＭＡ転送完了割り込み要求に応じてタイマー１７を設定して、タイマー１７のタイムアウトの検出に応じて主系のＯＳ［２］１２０の障害を検出し、主系のＯＳ［２］１２０の障害を検出した場合には、予備系のＯＳ［１］１１０を主系のＯＳ［２］１２０として切り替え、予備系のＯＳ［１］１１０側でデバイスドライバ１１４を動作させることで、音声データの音声ミキシング処理及びＤＭＡ転送要求処理を継続して実行する。【選択図】図２
2011043892.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、当該複数のプロセッサ上でそれぞれ動作する複数のオペレーティングシステムと、前記複数のオペレーティングシステムが共有する共有メモリと、前記複数のオペレーティングシステムが共有し、かつ、前記共有メモリに格納された音声データがＤＭＡ転送される周辺デバイスと、を備え、前記複数のオペレーティングシステムがサウンド再生機能に係る主系及び予備系に設定されるマルチコアシステムであって、
前記主系のオペレーティングシステムに含まれるか又は当該主系のオペレーティングシステム上で動作する主系のデバイスドライバと、
前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するドライバ管理部と、
前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するデバイドライバであって、前記ドライバ管理部が管理する予備系のデバイスドライバと、を備え、
前記ドライバ管理部が、
ＤＭＡ転送完了割り込み要求に応じてタイマーを設定して、当該タイマーのタイムアウトの検出に応じて前記主系のオペレーティングシステムの障害を検出し、
前記主系のオペレーティングシステムの障害を検出した場合には、前記予備系のオペレーティングシステムを主系のオペレーティングシステムとして切り替え、前記予備系のデバイスドライバを動作させることで、音声データの音声ミキシング処理及びＤＭＡ転送要求処理を継続して実行する
ことを特徴とするマルチコアシステム。
【請求項２】
単一のＤＭＡ転送完了割り込みを受信し、前記複数のオペレーティングシステムのそれぞれに対して、前記ＤＭＡ転送完了割込みを通知する共通割込み制御部を更に備える
ことを特徴とする請求項１に記載のマルチコアシステム。
【請求項３】
前記ドライバ管理部は、
ＤＭＡ転送完了割り込み要求を受信した場合に、前記音声ミキシング処理終了時間を監視するための第１のタイマーを設定して、当該第１のタイマーのタイムアウトの検出に応じて前記主系のオペレーティングシステムの障害を検出し、
前記主系のデバイスドライバは、
前記ＤＭＡ転送完了割り込み要求に応じて動作することで、音声ミキシング処理を完了した場合には、前記第１のタイマーを解除する
ことを特徴とする請求項１又は２に記載のマルチコアシステム。
【請求項４】
前記ドライバ管理部は、
ＤＭＡ転送完了割り込み要求を受信した場合に、前記音声データのＤＭＡ転送開始時間を監視するための第２のタイマーを設定して、当該第２のタイマーのタイムアウトの検出に応じて前記主系のオペレーティングシステムの障害を検出し、
前記主系のデバイスドライバは、
前記ＤＭＡ転送完了割り込み要求に応じて動作することで、ＤＭＡ転送要求処理を終了した場合には、前記第２のタイマーを解除する
ことを特徴とする請求項１乃至３いずれか１項に記載のマルチコアシステム。
【請求項５】
前記主系のオペレーティングシステムの障害が検出された場合には、
前記予備系のデバイスドライバは、前記音声ミキシング処理に関して、前記障害検出の前後での音声データのストリームデータの整合性を保証する処理を行う
ことを特徴とする請求項１乃至４いずれか１項に記載のマルチコアシステム。
【請求項６】
前記主系のオペレーティングシステムの障害が検出された場合には、
前記予備系のデバイスドライバは、
前記共有メモリから前記周辺デバイスへと音声データをＤＭＡ転送した転送回数をカウントするためのパラメータを用いて、前記障害を検出するよりも前の前記パラメータの値に基づいて、前記共有メモリに格納された音声データの出力処理を開始し、当該出力処理された音声データのミキシング処理を行う
ことを特徴とする請求項５に記載のマルチコアシステム。
【請求項７】
前記主系のオペレーティングシステムの障害が検出された場合には、
前記予備系のデバイスドライバは、
当該障害が検出されたオペレーティングシステムのオペレーションシステムが参照していた前記共有メモリ上の前記周辺デバイスのベースアドレスを、一時的に無効アドレスとする
ことを特徴とする請求項５又は６に記載のマルチコアシステム。
【請求項８】
複数のプロセッサと、当該複数のプロセッサ上でそれぞれ動作する複数のオペレーティングシステムと、前記複数のオペレーティングシステムが共有する共有メモリと、前記複数のオペレーティングシステムが共有し、かつ、前記共有メモリに格納された音声データがＤＭＡ転送される周辺デバイスと、を備え、前記複数のオペレーティングシステムがサウンド再生機能に係る主系及び予備系に設定されるマルチコアシステムの制御方法であって、
前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するドライバ管理部が、ＤＭＡ転送完了割り込み要求に応じてタイマーを設定して、当該タイマーのタイムアウトの検出に応じて前記主系のオペレーティングシステムの障害を検出し、前記主系のオペレーティングシステムの障害を検出した場合には、前記予備系のオペレーティングシステムを主系のオペレーティングシステムとして切り替え、前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するデバイスドライバであって、前記ドライバ管理部が管理する予備系のデバイスドライバを動作させることで、音声データの音声ミキシング処理及びＤＭＡ転送要求処理を継続して実行する
ことを特徴とするマルチコアシステムの制御方法。
【請求項９】
前記主系のオペレーティングシステムの障害が検出された場合には、
前記予備系のデバイスドライバは、
前記音声ミキシング処理に関して、前記障害検出の前後での音声データのストリームデータの整合性を保証する処理を行う
ことを特徴とする請求項８に記載のマルチコアシステムの制御方法。
【請求項１０】
複数のプロセッサと、当該複数のプロセッサ上でそれぞれ動作する複数のオペレーティングシステムと、前記複数のオペレーティングシステムが共有する外部共有メモリから周辺デバイスに対しての、当該外部共有メモリ格納された音声データのＤＭＡ転送を制御するＤＭＡコントローラと、を備え、前記複数のオペレーティングシステムがサウンド再生機能に係る主系及び予備系に設定されるマルチコアプロセッサであって、
前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するドライバ管理部と、
前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するデバイドライバであって、前記ドライバ管理部が管理する予備系のデバイスドライバと、を備え、
前記ドライバ管理部が、
ＤＭＡ転送完了割り込み要求に応じてタイマーを設定して、当該タイマーのタイムアウトの検出に応じて前記主系のオペレーティングシステムの障害を検出し、
前記主系のオペレーティングシステムの障害を検出した場合には、前記予備系のオペレーティングシステムを主系のオペレーティングシステムとして切り替え、前記予備系のデバイスドライバを動作させることで、音声データの音声ミキシング処理及びＤＭＡ転送要求処理を継続して実行する
ことを特徴とするマルチプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサに関する。
【背景技術】
【０００２】
複数のＣＰＵ（Central Processing Unit）コアを内蔵したマルチコアで構成され、組み込み用途向けのプロセッサ(ＭＰＵ：Micro Processing Unit)が開発されている。これらのプロセッサは、周辺デバイスも含めてワンチップ化されている。
【０００３】
マルチコアＣＰＵ上において、異なる複数のＯＳ（Operating System）を動作させる技術が知られている。また、ＭＰＵの機能として、単一の割り込み要求(ＩＲＱ：Interrupt ReQuest)を、複数のＣＰＵコアへと通知する手段が知られている。さらに、ＭＰＵは、レジスタ設定に基づいて、どの割り込み要求をどのＣＰＵコアに対して割り当てるかを設定することができる。
【０００４】
また、例えば図９に示すように、ＭＰＵ５０内部のＣＰＵからＡＤＡＣ（Audio DAC）５１に対して、Ｉ２Ｓ（Inter-IC Sound）バスを経由して、音声データ（例えば、ＰＣＭ（Pulse Code Modulation）音声）を転送する技術が知られている。尚、Ｉ２Ｓは、音声データのインターフェイスデバイスを構成する、ＰＨＩＬＩＰＳ(登録商標)社製のシリアル通信フォーマットである。Ｉ２Ｓ規格では、ＰＣＭ音声や圧縮音声(μ−ｌａｗやＡＤＰＣＭなど)を、Ｉ２Ｓバスを経由してＡＤＡＣ５１に送信することができる。また、図において、Ｉ２Ｃ（Inter-Integrated Circuit）バスは、ＰＨＩＬＩＰＳ(登録商標)社で開発されたデバイス制御用のシリアルバスである。ＡＤＡＣ５１は、音声データをステレオ音声に変換する。ＤＡＣは、Ｄ／Ａコンバータである。ＡＤＡＣ５１から出力されるアナログ音声（ステレオ）が、スピーカーにおいて再生される。
【０００５】
また、例えば図１０に示すように、複数のＯＳからの音声データをネットワークを介して受信し、受信した複数の音声データと同一のクライアントＰＣ内で受信した音声データとをミックスして、単一のステレオ音声へと変換するサウンドサーバ５６が知られている。図に示す例では、ＵＮＩＸ（登録商標）サーバ５２のアプリケーションプログラム[Ａ]及び[Ｂ]（図においては、略してアプリ[Ａ]５３、アプリ[Ｂ]５４として示す）から出力された音声データが、ＴＣＰ／ＩＰを用いてクライアントＰＣ５５へと送信される。クライアントＰＣ５５のサウンドサーバ５６は、ＵＮＩＸサーバ５２から送信された音声データと、アプリケーションプログラム[Ｃ]（図においては、略してアプリ[Ｃ]５７として示す）から出力された音声データとをミキシングして、サウンドドライバ５８へと出力する。尚、サウンドサーバ５６としては、例えば、ＵＮＩＸ（登録商標）では、ＥｓｏｕｎｄやＰｕｌｓｅ  Ａｕｄｉｏがよく知られている。
【０００６】
尚、本発明に関連する他の技術として、特許文献１乃至３に開示される技術がある。例えば、特許文献１に開示されるマルチシステム制御プロセッサによるホスト監視制御方式は、ホストごとに設置した監視タイマーのタイムアウト検出に応じてホストの障害発生を判断し、リカバリが必要と判断した場合には、第１リカバリ順位に指定されているホストがリカバリを開始する。これにより、ホストの障害を人手の介入無しに迅速に検出し、後始末処理を行うリカバリホストを一意に決定する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平４−２１９８６０号公報
【特許文献２】特開２００５−１１５７５１号公報
【特許文献３】特開平２−２８９０２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、単一のマルチコアＣＰＵ上で複数のＯＳを動作させて、ＭＰＵに内蔵した単一のＩ２Ｓデバイスをそれら複数のＯＳ間で共有させる構成において、片方のＯＳに例外(カーネルパニック)が発生した場合や、ＯＳがフリーズした場合（ＯＳが停止又は正常動作しなくなり、入力装置からの入力を受け付けない状態となった場合）には、もう片方のＯＳ側からの音声再生が停止してしまうという問題があった。以下にその理由を説明する。
【０００９】
Ｉ２Ｓデバイスを複数のＯＳ間で共有する場合には、それら複数のＯＳのうちでオーナーとなる一のＯＳのみしかデバイスを制御することができない。このため、片方のＯＳのパニックやフリーズのために、音声データのＤＭＡ（Direct Memory Access）転送が停止してしまう。
【００１０】
また、（音声再生に使用する）Ｉ２Ｓデバイスでは、音声データの前回のＤＭＡ転送が完了した後に、これに続く音声データの受信が一定の時間（数１００μｓ〜数ｍｓ)途絶えた場合（すなわち、ＤＭＡ転送が停止した場合)にはアンダーランエラーとなり、音切れが発生する。このため、ＤＭＡ転送完了時の割り込み発生から、一定の時間内に、次のＤＭＡ転送を開始する必要がある。
【００１１】
さらに、ＯＳの例外発生やフリーズのために、サウンドドライバやサウンドサーバの動作が停止してしまう。
【００１２】
ところで、ＯＳの例外発生やフリーズに起因して音声再生が停止するという課題に対して、例えば図１１に示すような技術が知られている。図に例示する技術では、組み込み用ＭＰＵ６０に搭載したＯＳ毎に専用のＩ２Ｓデバイスを割り当てた上で、ＤＳＰ（Digital Signal Processor）６１等を用いた外部のミキシング機構を追加する構成とすることで、上述した課題に対応を図っている。すなわち、図において、ＯＳ［１］６３に対してＩ２Ｓ＿１を割り当て、ＯＳ［２］６４に対してＩ２Ｓ＿２を割り当てる。サウンドドライバ６５は、ＯＳ［１］のアプリケーションプログラム［１］（図においては、略してアプリ［１］６６として示す）から出力された音声データを、Ｉ２Ｓ＿１を経由してＤＳＰ６１へと出力する。また、サウンドドライバ６７は、ＯＳ［２］６４のアプリケーションプログラム［２］（図においては、略してアプリ［２］６８として示す）から出力された音声データを、Ｉ２Ｓ＿２を経由してＤＳＰ６１へと出力する。そして、ＤＳＰ６１は、Ｉ２Ｓ＿１及びＩ２Ｓ＿２を経由して受信した音声データの音声ミキシング処理を行い、アナログ音声をＡＵＤＩＯ  ＡＭＰ６２へと出力する。
【００１３】
しかし、図１１に例示したように、複数のＩ２ＳデバイスがＭＰＵ内に必ずしも搭載されているわけではない。さらに、外部ミキシング機構の追加は部品点数の増加を招くため、コストアップや回路小型化への弊害となる。このため、図１１に示した技術では、組込技術領域における課題を解決するものとはならなかった。
【００１４】
従って、本発明の目的は、簡易な構成で音切れの発生を防止することができるマルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサを提供することである。
【課題を解決するための手段】
【００１５】
本発明に係るマルチコアシステムは、複数のプロセッサと、当該複数のプロセッサ上でそれぞれ動作する複数のオペレーティングシステムと、前記複数のオペレーティングシステムが共有する共有メモリと、前記複数のオペレーティングシステムが共有し、かつ、前記共有メモリに格納された音声データがＤＭＡ転送される周辺デバイスと、を備え、前記複数のオペレーティングシステムがサウンド再生機能に係る主系及び予備系に設定されるマルチコアシステムであって、前記主系のオペレーティングシステムに含まれるか又は当該主系のオペレーティングシステム上で動作する主系のデバイスドライバと、前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するドライバ管理部と、前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するデバイドライバであって、前記ドライバ管理部が管理する予備系のデバイスドライバと、を備え、前記ドライバ管理部が、ＤＭＡ転送完了割り込み要求に応じてタイマーを設定して、当該タイマーのタイムアウトの検出に応じて前記主系のオペレーティングシステムの障害を検出し、前記主系のオペレーティングシステムの障害を検出した場合には、前記予備系のオペレーティングシステムを主系のオペレーティングシステムとして切り替え、前記予備系のデバイスドライバを動作させることで、音声データの音声ミキシング処理及びＤＭＡ転送要求処理を継続して実行するものである。
【００１６】
また、本発明に係るマルチコアシステムの制御方法は、複数のプロセッサと、当該複数のプロセッサ上でそれぞれ動作する複数のオペレーティングシステムと、前記複数のオペレーティングシステムが共有する共有メモリと、前記複数のオペレーティングシステムが共有し、かつ、前記共有メモリに格納された音声データがＤＭＡ転送される周辺デバイスと、を備え、前記複数のオペレーティングシステムがサウンド再生機能に係る主系及び予備系に設定されるマルチコアシステムの制御方法であって、前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するドライバ管理部が、ＤＭＡ転送完了割り込み要求に応じてタイマーを設定して、当該タイマーのタイムアウトの検出に応じて前記主系のオペレーティングシステムの障害を検出し、前記主系のオペレーティングシステムの障害を検出した場合には、前記予備系のオペレーティングシステムを主系のオペレーティングシステムとして切り替え、前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するデバイスドライバであって、前記ドライバ管理部が管理する予備系のデバイスドライバを動作させることで、音声データの音声ミキシング処理及びＤＭＡ転送要求処理を継続して実行するものである。
【００１７】
また、本発明に係るマルチプロセッサは、複数のプロセッサと、当該複数のプロセッサ上でそれぞれ動作する複数のオペレーティングシステムと、前記複数のオペレーティングシステムが共有する外部共有メモリから周辺デバイスに対しての、当該外部共有メモリ格納された音声データのＤＭＡ転送を制御するＤＭＡコントローラと、を備え、前記複数のオペレーティングシステムがサウンド再生機能に係る主系及び予備系に設定されるマルチコアプロセッサであって、前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するドライバ管理部と、前記予備系のオペレーティングシステムに含まれるか又は当該予備系のオペレーティングシステム上で動作するデバイドライバであって、前記ドライバ管理部が管理する予備系のデバイスドライバと、を備え、前記ドライバ管理部が、ＤＭＡ転送完了割り込み要求に応じてタイマーを設定して、当該タイマーのタイムアウトの検出に応じて前記主系のオペレーティングシステムの障害を検出し、前記主系のオペレーティングシステムの障害を検出した場合には、前記予備系のオペレーティングシステムを主系のオペレーティングシステムとして切り替え、前記予備系のデバイスドライバを動作させることで、音声データの音声ミキシング処理及びＤＭＡ転送要求処理を継続して実行するものである。
【発明の効果】
【００１８】
本発明によれば、簡易な構成で音切れの発生を防止することができるマルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１に係るマルチコアシステムのハードウェア構成を示すブロック図である。
【図２】本発明の実施の形態１に係るマルチコアシステムの機能構成を示すブロック図である。
【図３】本発明の実施の形態１に係る課題解決手段の概略を説明するための図である。
【図４】本発明の実施の形態１に係るＤＭＡ転送完了割り込みスレッド内での音声データ及び処理の流れを説明するための図である。
【図５】本発明の実施の形態１に係る主系側のＯＳが正常動作している場合の、ＤＭＡ転送完了割り込み受信後の処理を示すシーケンス図である。
【図６】本発明の実施の形態１に係る主系側のＯＳに障害発生した場合の、ＤＭＡ転送完了割り込み受信後の処理を示すシーケンス図である。
【図７】本発明の実施の形態１に係るサウンドキューに関する追加パラメータを説明するための図である。
【図８】本発明の実施の形態１に係る切り替え前の主系側のＯＳによるレジスタアクセスの禁止を説明するための図である。
【図９】本発明に関連する技術を説明するための図である。
【図１０】本発明に関連する技術を説明するための図である。
【図１１】本発明に関連する技術を説明するための図である。
【発明を実施するための形態】
【００２０】
本発明に係るマルチコアシステムは、単一のマルチコアＣＰＵ上において複数のＯＳを動作させ、これら複数のＯＳ間で単一のＩ２Ｓデバイスを共有するシステムである。そして、マルチコアシステムは、片方のＯＳに障害が発生してフリーズした場合においても、他の正常に動作しているＯＳ側からの出力音声に対して、音切れの発生を防止することができる。
【００２１】
本発明に係るマルチコアシステムは、以下に説明するように、音声ミキシング処理の最中にＯＳがフリーズしたような場合においても、Ｉ２Ｓデバイスへの音声データ送信タイミングのデッドラインを死守して、ＤＭＡ転送に基づく音切れやノイズの発生を防止することを特徴とする。尚、ここでは、音声ミキシング処理とは、各ＯＳ上で動作する複数のアプリケーションプログラムからの音声データをミキシングして単一の音声とする処理を指す。
【００２２】
実施の形態１．
以下、図面を参照して本発明の実施の形態１について説明する。まず、図１及び図２を参照して、本実施の形態１に係るマルチコアシステムの構成について説明する。図１は、本実施の形態１に係るマルチコアシステムのハードウェア構成を示すブロック図である。
【００２３】
図１に示すように、マルチコアシステム１は、組み込み用のＭＰＵ１０と、音声出力装置２０と、外部共有メモリとしてのＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）３０と、を備えている。
【００２４】
ＭＰＵ１０は、マルチコアＣＰＵと、周辺デバイス（Ｉ２Ｓデバイス１３、Ｉ２Ｃデバイス１４、ＤＭＡＣ１５）とがワンチップ化されたＩＣである。図に示す例では、ＭＰＵ１０は、複数のＣＰＵ（ＣＰＵ［１］１１、ＣＰＵ［２］〜［４］１２）を備えている。
【００２５】
ＭＰＵ１０は、マルチコアＣＰＵ上において、複数のＯＳを動作させる。ＯＳ［１］１１０がＣＰＵ［１］１１上において動作する。ＯＳ［２］１２０がＣＰＵ［２］〜［４］１２上において動作する。尚、ＯＳ［１］１１０とＯＳ［２］１２０は異なる種類のＯＳである。例えば、ＯＳ［１］１１０をμＩＴＲＯＮ等のリアルタイムＯＳとし、ＯＳ［２］１２０は高機能組み込みＯＳ（組み込みＬｉｎｕｘ（登録商標）やＷｉｎｄｏｗｓ  ＣＥ（登録商標）等）とする組み合わせが考えられる。
【００２６】
ＯＳ［１］１１０上において、アプリケーションプログラム［１］１１１（図においては、略してアプリ［１］として示す）、及びデバイスドライバであるサウンドドライバ１１２が動作する。アプリケーションプログラム［１］１１１から出力された音声データが、サウンドドライバ１１２へと入力される。また、ＯＳ［２］１２０上において、アプリケーションプログラム［２］１２１、アプリケーションプログラム［３］１２２、アプリケーションプログラム［４］１２３（図においては、略してアプリ［２］、アプリ［３］、アプリ［４］としてそれぞれ示す）、サウンドサーバ１２４、及びデバイスドライバであるサウンドドライバ１２５が動作する。アプリケーションプログラム［２］１２１及びアプリケーションプログラム［３］１２２から出力された音声データは、サウンドサーバ１２４へと入力される。サウンドサーバ１２４から出力される音声データと、アプリケーションプログラム［４］１２３から出力された音声データとが、サウンドドライバ１２５へと入力される。
【００２７】
Ｉ２Ｓデバイス１３は、Ｉ２Ｓバス（Ｉ２Ｓ  ｂｕｓ）を経由して音声データをＡＤＡＣ＆ＡＭＰ２０へと送信する、１系統のデバイスである。Ｉ２Ｓデバイス１３はＦＩＦＯ１３０を備えており、ＦＩＦＯ１３０に音声データを格納する。ここでは、Ｉ２Ｓデバイス１３は、音声データとして、ステレオＰＣＭを扱う。
【００２８】
Ｉ２Ｃデバイス１４は、デバイス制御用のシリアルバスである。Ｉ２Ｃデバイス１４は、ＡＤＡＣが備えるレジスタへの読み書きを行うために使用される。
【００２９】
ＤＭＡＣ（ＤＭＡ  ｃｏｎｔｏｒｏｌｌｅｒ）１５は、ＭＰＵ１０の外部に接続されたＳＤＡＲＭ３０と、他のデバイス間のＤＭＡ転送を制御する。ここでは、ＳＤＲＡＭ３０上のＯＳ間共有メモリ４０から、Ｉ２Ｓデバイス１３のＦＩＦＯ１３０への音声データの転送を、ＤＭＡＣ１５の１チャンネルを用いて行う。
【００３０】
尚、本実施の形態では、通常、ＯＳ［２］１２０側のサウンドドライバ１２５が、音声ミキシング処理及び周辺デバイス(Ｉ２Ｓデバイス１３、Ｉ２Ｃデバイス１４、ＤＭＡＣ１５)の制御を行うものとして説明する。
【００３１】
音声出力装置２０は、スピーカー２１と、ＡＤＡＣ＆ＡＭＰ２２とを備えている。ＡＤＡＣ＆ＡＭＰ２２は、音声出力装置２０の外部インタフェースを構成する。ＡＤＡＣ＆ＡＭＰ２２は、Ｉ２Ｓバスを経由して送信される音声データをアナログ信号に変換・増幅して、スピーカー２１を用いて再生する。
【００３２】
ＳＤＲＡＭ３０は、ＭＰＵ１０の外部にバスを介して接続される、揮発性のメモリ(ＲＡＭ)である。ＳＤＲＡＭ３０には、ＯＳ間共有メモリ４０として、ＭＰＵ１０のＯＳが共有するメモリ空間が確保される。
【００３３】
ＯＳ間共有メモリ４０内には、サウンドキュー（サウンドキュー４１、サウンドキュー４２、サウンドキュー４３）及びＤＭＡ転送用バッファ４４が設定される。サウンドキューは、アプリケーションプログラムが出力した音声データを格納するリングバッファである。サウンドキューとして、音声データを出力するアプリケーションプログラムの数に相当する数のキューが作成される。ここでは、ＯＳ［１］１１０のアプリケーションプログラム［１］１１１と、ＯＳ［２］１２０のサウンドサーバ１２４と、ＯＳ［２］１２０のアプリケーションプログラム［４］１２３とに相当する、３個のサウンドキュー（サウンドキュー４１、サウンドキュー４２、サウンドキュー４３）が作成される。サウンドキュー（サウンドキュー４１、サウンドキュー４２、サウンドキュー４３）の音声データが音声ミキシング処理された後に、ＤＭＡ転送用バッファ４４に格納される。尚、サウンドキューは、リングバッファ以外のキューイング手段を用いて構成するものとしてもよい。
【００３４】
図２は、本実施の形態１に係るマルチコアシステムの機能構成を示すブロック図である。図２では、図１において示したサウンドドライバ１１２を、上位アプリＩ／Ｆ部１１３とドライバコア部１１４に分割する。また、サウンドドライバ１２５を、上位アプリＩ／Ｆ部１２６とドライバコア部１２７に分割して示している。
【００３５】
上位アプリＩ／Ｆ部１１３は、アプリケーションプログラム[１]１１１から受け取った音声データに対して、サンプリングレートの変換や量子化ビット数の変換（例えば、４８ｋＨｚ  ２３ｂｉｔの音声を、４４．１ｋＨｚ  １６ｂｉｔの音声へと変換)を必要に応じて行い、その出力結果を、ＯＳ間共有メモリ４０内のサウンドキュー４１へと格納する。
【００３６】
また、上位アプリＩ／Ｆ部１２６は、サウンドサーバ１２４とアプリケーションプログラム[４]１２３とから受け取った音声データに対して、サンプリングレートの変換や量子化ビット数の変換を必要に応じて行い、その出力結果を、ＯＳ間共有メモリ４０内のサウンドキュー４２、４３へと格納する。
【００３７】
ドライバコア部１１４、１２７は、ＯＳ間共有メモリ４０の各サウンドキューに格納された音声データをミキシングし、音声ミキシング処理後の音声データを、ＤＭＡ転送を用いてＩ２Ｓデバイス１３のＦＩＦＯ１３０へと転送する。尚、本実施の形態では、サウンドドライバ１１２、１２５の一部であって、音声ミキシング処理及びＩ２Ｓデバイス１３、Ｉ２Ｃデバイス１４の制御を行う機能部分を、ドライバコア部１１４、１２５として定義する。また、音声ミキシング処理とは、各ＯＳ上で動作する複数のアプリケーションプログラムからの音声データをミキシングして、単一の音声データとしてＤＭＡ転送用の領域（ＤＭＡ転送用バッファ４４）にコピーする処理を指す。
【００３８】
本実施の形態では、システム動作時に、複数のＯＳのうち、１つのＯＳ(主系)のドライバコア部のみが動作する。その他のＯＳ（予備系）のドライバコア部は、通常は待機状態となっており、主系側のＯＳがフリーズ等した場合にのみ動作する。尚、主系とは、正常時に動作するドライバコア部を有するシステムを指す。予備系とは、主系側の動作がダウンした時に動作するドライバコア部を有するシステムを指す。ここで、主系及び予備系とは、あくまでもサウンド再生機能(サウンドドライバの一部機能)についての主系及び予備系であり、主系ＯＳ及び予備系ＯＳのことではない。すなわち、予備系側のＯＳとは、サウンド再生機能に関する予備系としての機能を備えているＯＳのことを指す。
【００３９】
ソフトウェアミキサ１２８は、ドライバコア部１２７が呼び出す関数である。ソフトウェアミキサ１２８は、各サウンドキューに格納された音声データをミキシングし、ＤＭＡ転送用バッファ４４に格納する。
【００４０】
ＤＭＡ転送完了割込みスレッド１２９は、音声データのＤＭＡ転送完了割り込みスレッドである。ＤＭＡ転送完了割込みスレッド１２９は、ドライバコア部１２７内に存在し、音声データのＤＭＡ転送完了割り込みをトリガーとして動作する。ＤＭＡ転送完了割込みスレッド１２９内において、音声ミキシング処理及び音声データのＤＭＡ転送要求処理が行われる。
【００４１】
共通割り込み制御部１６は、各ＣＰＵコアに対して、割り込み要求(ＩＲＱ)の割り振りを行う。共通割り込み制御部１６は、基本的には、ＭＰＵ１０内にハードウェアの機能として備えらえる。尚、共通割り込み制御部１６がＭＰＵ１０内にハードウェアの機能として搭載されていない場合には、ソフトウエアの機能として実装することも可能である。
【００４２】
共通割込み制御部１６に入力される割り込み要求は、音声データのＤＭＡ転送が完了した場合に、ＤＭＡＣ１５が発行するＤＭＡ転送完了割り込みである。ＤＭＡ転送完了割り込みの発生から一定の時間内にＤＭＡ転送要求が無い場合には、Ｉ２Ｓデバイス１３のＦＩＦＯ１３０のバッファが空となり、Ｉ２Ｓアンダーランエラーが発生する。
【００４３】
ドライバ管理部１１５は、予備系側のＯＳの割り込みハンドラが呼び出す関数である。ドライバ管理部１１５は、ＨＷ（Ｈａｒｄ  Ｗａｒｅ）タイマー１７の設定や、主系のドライバコア部を用いた動作を予備系のドライバコア部を用いた動作へと切り替える切り替処理を行う。尚、ここでは、ＨＷタイマー１７は、ＭＰＵ１０が備えるハードウェアタイマーを指す。
【００４４】
次に、図３を参照して、本実施の形態１に係るマルチコアシステムを用いた課題解決手段について、その動作を概略的に説明する。マルチコアシステム１は、解決手段[１]２０１及び解決手段[２]２０２を備えており、これら手段における構成及び動作に基づいて、課題を解決することができる。以下、解決手段[１]２０１及び解決手段[２]２０２について説明する。
【００４５】
解決手段[１]２０１においては、共通割込み制御部１６を用いることで、単一のＤＭＡ転送完了割り込みを、複数のＯＳ（ＯＳ[１]１１０、ＯＳ[２]１２０）がそれぞれ受信する。そして、予備系側のＯＳ(ＯＳ[１]１１０)が備える割り込みハンドラが、複数のＨＷタイマー１７（ＨＷタイマー１、ＨＷタイマー２）を設定する。さらに、主系側のＯＳ(ＯＳ[２]１２０)のＤＭＡ転送完了割り込みスレッド１２９が、設定したＨＷタイマー１７を解除する。尚、ＨＷタイマー１７を用いた主系側のＯＳ(ＯＳ[２]１２０)の監視処理と、主系側のＯＳ(ＯＳ[２]１２０)から予備系側のＯＳ(ＯＳ[１]１１０)への切り替え処理の詳細については後述する。また、以下では、ＨＷタイマー１７として複数のＨＷタイマー（ＨＷタイマー１及びＨＷタイマー２）を用いるものとして説明するが、単一のＨＷタイマーを使用して、擬似的に複数のタイマーを実現するものとしてもよい。
【００４６】
仮に、主系側のＯＳ(ＯＳ[２]１２０)の割り込みハンドラ内においてＨＷタイマー１７の設定を行うものとしては、主系側のＯＳ(ＯＳ[２]１２０)に割り当てられたＣＰＵコアのレジスタの内容が壊れていた場合や、ＯＳフリーズ時の多重割り込みが発生した場合などには、ＨＷタイマー１７を適切に設定することができない可能性がある。従って、予備系側のＯＳ(ＯＳ[１]１１０)がＨＷタイマー１７の設定を行う構成とすることで、主系側のＯＳ(ＯＳ[２]１２０)に例外が発生した場合やフリーズした場合などに対しても対応することができる。尚、ＯＳフリーズ時での多重割り込みとは、ＤＭＡ転送完了割り込みを処理している際に他の割り込みが発生して、割り込みハンドラ内でＯＳのシステムコールを呼び出すことを指す。
【００４７】
図４乃至６を参照して、上述した解決手段[１]２０１における処理についてより詳細に説明する。まず、図４を参照して、ＤＭＡ転送完了割り込みスレッド１２９内での音声データ及び処理の流れについて説明する。
【００４８】
図４の左図は、音声データ及び処理の流れを示している。すなわち、ＳＤＲＡＭ３０からＦＩＦＯ１３０に対してＤＭＡ転送が行われた後に、複数のＯＳ（ＯＳ[１]１１０、ＯＳ[２]１２０）がＤＭＡ転送完了割り込みを受信する。主系側のＯＳ(ＯＳ[２]１２０)が正常に動作している場合には、受信したＤＭＡ転送完了割り込みが、ＤＭＡ転送完了割り込みスレッド１２９に到達する。そして、ＤＭＡ転送完了割り込みスレッド１２９は、音声データのＤＭＡ転送完了割り込みをトリガーとして動作し、ＤＭＡ転送完了割り込みスレッド１２９内において音声データの音声ミキシング処理及びＤＭＡ転送要求処理が行われる。そして、ＤＭＡ転送用バッファ４４に格納された音声ミキシング処理後の音声データが、ＳＤＲＡＭ３０からＦＩＦＯ１３０に対してＤＭＡ転送される。
【００４９】
図４の右図は、ＤＭＡ転送完了割り込みスレッド１２９内での音声ミキシング処理及びＤＭＡ転送開始要求処理の処理方法を説明するための図である。ここでは、音声ミキシング処理及びＤＭＡ転送開始要求処理の処理順序に関して、主系側のＯＳ(ＯＳ[２]１２０)における音声ミキシング処理時間とＩ２Ｓアンダーランエラーの関係に基づいて、パターンＡ又はパターンＢのいずれかのパターンを選択する。
【００５０】
上述したように、主系側のＯＳ(ＯＳ[２]１２０)がフリーズした場合には、ＤＭＡ転送完了割り込みが、ＤＭＡ転送完了割り込みスレッド１２９にまで到達しない。このため、ＤＭＡ転送完了割り込みの発生から一定の時間内にＤＭＡ転送要求処理が行われないことになり、Ｉ２Ｓアンダーランエラーが発生する。すなわち、ＤＭＡ転送間隔（ＤＭＡ転送完了割り込みの発生からＩ２Ｓアンダーランエラーが発生するまでの時間を示す。）が一定時間を超えた場合にはアンダーランエラーとなり、音切れが発生する。
【００５１】
音声ミキシング処理時間とＤＭＡ転送間隔(≒Ｉ２Ｓアンダーランエラー発生時間)は、実装環境のスペックに基づいて決定される。従って、音声ミキシング処理時間とＤＭＡ転送間隔の大小関係を用いて規定される選択条件に応じて、ＤＭＡ転送完了割り込みスレッド１２９内での処理方法として、以下で説明するパターンＡ又パターンはＢのいずれかのパターンを選択する。尚、音声ミキシング処理時間及びＤＭＡ転送間隔は、Ｉ２Ｓデバイス１３のＦＩＦＯ１３０の段数、音声サンプリング周波数、ＤＭＡ転送サイズ、ＣＰＵクロック等から算出することができる。
【００５２】
選択条件「ＤＭＡ転送間隔＞(音声ミキシング処理時間×２)」を満たす場合には、パターンＡを選択する。そして、パターンＡでは、音声ミキシング処理に続いて、ＤＭＡ転送開始要求処理を行うという順序で処理が行われる。すなわち、この場合には、ＤＭＡ転送開始要求処理に先立ち、音声ミキシング処理を行う。尚、図４の右図に示すパターンＡが選択された場合に、主系側のＯＳ(ＯＳ[２]１２０)での音声ミキシング処理中にＯＳがフリーズした場合には、主系側のＯＳ（ＯＳ[２]１２０）から予備系側のＯＳ(ＯＳ[１]１１０)へと切り替えて、音声ミキシング処理などが継続される。ＯＳのフリーズ監視方法や、予備系への切り替方法の詳細については後述する。
【００５３】
選択条件「ＤＭＡ転送間隔≦(音声ミキシング処理時間×２)」を満たす場合には、パターンＢを選択する。そして、パターンＢでは、ＤＭＡ転送開始要求処理に続いて、音声ミキシング処理を行うという順序で処理が行われる。すなわち、この場合には、音声ミキシング処理に先立ち、ＤＭＡ転送開始要求処理を行う。また、ＤＭＡ転送を行う音声データについて、１パケット(＝ＤＭＡ転送サイズ)分の先読みを行うために、音声データのダブルバッファリング処理が必要となる。
【００５４】
尚、以下の説明では、主系側のＯＳ(ＯＳ[２]１２０)におけるサウンドドライバのＤＭＡ転送完了割り込みスレッド１２９内での処理方法として、パターンＡを選択した場合（音声ミキシング処理に続いてＤＭＡ転送開始要求処理を行う場合)について説明する。また、パターンＢを選択した場合についても基本的な処理の流れは同一であるため、以下ではパターンＡを代表して説明する。
【００５５】
次に、ＨＷタイマー１７を用いた主系側のＯＳ(ＯＳ[２]１２０)の監視機能について説明する。以下では、２系統のＨＷタイマー１７（ＨＷタイマー１、ＨＷタイマー２）を使用した場合を例に説明する。
【００５６】
上述したように、ＤＭＡ転送完了割込みを受信した場合に、予備系側のＯＳ(ＯＳ[１]１１０)が備える割り込みハンドラが、ＨＷタイマー１７を設定する。そして、ＤＭＡ転送完了割り込みが、主系側のＯＳ(ＯＳ[２]１２０)のＤＭＡ転送完了割り込みスレッド１２９に到達した場合には、ＤＭＡ転送完了割り込みスレッド１２９が、設定したＨＷタイマー１７を解除する。これにより、ＤＭＡ転送完了割り込みが、主系側のＯＳ(ＯＳ[２]１２０)のＤＭＡ転送完了割り込みスレッド１２９にまで到達しなかった場合には、設定したＨＷタイマー１７は解除されずにタイムアウトとなる。従って、ＨＷタイマー１７のタイムアウトの有無に基づいて、主系側のＯＳ(ＯＳ[２]１２０)のフリーズを監視することが可能となる。
【００５７】
具体的には、主系側のＯＳ(ＯＳ[２]１２０)のフリーズを監視するため、ＨＷタイマー１７として、ＨＷタイマー１及びＨＷタイマー２を設定する。ＨＷタイマー１は、音声ミキシング処理終了時間を監視するために使用する。ＨＷタイマー２は、ＤＭＡ転送開始時間を監視するために使用する。尚、ＨＷタイマー１７としてそれぞれ独立した２系統のＨＷタイマー１、ＨＷタイマー２を設定してもよいし、単一のＨＷタイマー１７を設定することで、擬似的に２系統のタイマーを実現することもできる。
【００５８】
主系側のＯＳ(ＯＳ[２]１２０)がフリーズした場合には、主系側のＯＳ（ＯＳ[２]１２０）から予備系側のＯＳ(ＯＳ[１]１１０)へと切り替えて、音声ミキシング処理などを継続する。従って、予備系側のＯＳ(ＯＳ[１]１１０)へと切替えた後に、Ｉ２Ｓデバイス１３におけるアンダーランエラーの発生時間までに、予備系側のＯＳ(ＯＳ[１]１１０)での音声ミキシング処理を完了させる必要がある。このため、ＨＷタイマー１を用いて監視する主系側のＯＳ(ＯＳ[２]１２０)における音声ミキシング処理終了時間は、Ｉ２Ｓデバイス１３におけるアンダーランエラーの発生時間と、予備系側のＯＳ(ＯＳ[１]１１０)における音声ミキシング処理に要する音声ミキシング処理時間とを用いて、「Ｉ２Ｓアンダーランエラー発生時間−(予備系での)音声ミキシング処理時間」として表すことができる。これにより、ＨＷタイマー１を用いることで、音声ミキシング処理中における主系側のＯＳ(ＯＳ[２]１２０)のフリーズを検出することが可能となる。
【００５９】
また、予備系側のＯＳ(ＯＳ[１]１１０)へと切替えた後に、Ｉ２Ｓデバイス１３におけるアンダーランエラーの発生時間までに、予備系側のＯＳ(ＯＳ[１]１１０)でＤＭＡ転送要求処理を完了させる必要がある。このため、ＨＷタイマー２を用いて監視するＤＭＡ転送開始時間は、Ｉ２Ｓデバイス１３におけるアンダーランエラーの発生時間と、ＤＭＡ転送完了割込みスレッド１２９においてＤＭＡ転送要求処理に要するＤＭＡ転送要求処理時間とを用いて、「Ｉ２Ｓアンダーラン発生時間−ＤＭＡ転送要求処理時間」として表すことができる。ＨＷタイマー２を用いることで、複数のＤＭＡ転送完了割り込みスレッド１２９を処理する場合についても監視することができる。このため、主系側のＯＳ(ＯＳ[２]１２０)における音声ミキシング処理時間がＩ２Ｓアンダーランエラー発生時間を超えるような場合についても監視することができる。
【００６０】
次に、図５及び図６を参照して、ＨＷタイマー１７を用いて主系側のＯＳ(ＯＳ[２]１２０)のフリーズを検出した場合における、ドライバコア部の切り替動作について説明する。まず、図５を参照して、主系側のＯＳ(ＯＳ[２]１２０)が正常に動作している場合において、ＤＭＡ転送完了割り込みを受信した後の処理について説明する。
【００６１】
図５は、主系側のＯＳが正常に動作している状態での、音声ミキシング処理及びＤＭＡ転送処理を説明するシーケンス図である。まず、ＤＭＡ転送完了割り込みをＭＰＵ１０が受信した場合には、共通割り込み制御部１６が、複数のＣＰＵコアに対して、割り込み要求(ＩＲＱ)を送信する（Ｓ１０１）。
【００６２】
次いで、予備系側のＯＳ(ＯＳ[１]１１０)上において動作するドライバ管理部１１５は、共通割込み制御部１６から割り込み要求(ＩＲＱ)を受信した場合には、２系統のＨＷタイマー１７を同時にスタートさせる（Ｓ１０２）。尚、設定するＨＷタイマー１のタイムアウト時間としては、例えば、数１００μｓから数ｍｓ程度に設定すればよい。
【００６３】
次いで、主系側のＯＳ(ＯＳ[２]１２０)が正常に動作しているために、ＤＭＡ転送完了割り込みが、ＤＭＡ転送完了割り込みスレッド１２９に到達する。このため、ＤＭＡ転送完了割込みスレッド１２９内では、ＤＭＡ転送完了割り込みをトリガーとして、音声ミキシング処理及び音声データのＤＭＡ転送要求処理が行われる。そして、主系側のドライバコア部１２７のＤＭＡ転送完了割り込みスレッド１２９は、ＨＷタイマー１及びＨＷタイマー２を停止する（Ｓ１０３）。ＨＷタイマー１は音声ミキシング処理の完了時に解除され、ＨＷタイマー２はＤＭＡ転送要求処理の終了時に解除される。
【００６４】
図６は、主系側のＯＳがダウンした場合（予期せず動作停止状態にった場合、又は、ＯＳが異常終了した場合。）に、予備系側のＯＳを用いて、音声ミキシング処理及びＤＭＡ転送処理を継続して行う処理を説明するシーケンス図である。尚、図において示すＳ２０１及びＳ２０２での処理は図５で示したＳ１０１及びＳ１０１での処理と同一であるため、ここではその説明を省略する。
【００６５】
図６において、主系側のＯＳ(ＯＳ[２]１２０)がフリーズしている場合には、Ｓ２０１で送信したＤＭＡ転送完了割り込みが、ＤＭＡ転送完了割り込みスレッド１２９まで到達しない。このため、Ｓ２０２においてＨＷタイマー１７を設定した後に、ＤＭＡ転送完了割込みスレッド１２９内では、音声ミキシング処理及び音声データのＤＭＡ転送要求処理が行われないことになる。従って、予備系側のＯＳ(ＯＳ[１]１１０)のドライバ管理部１１５に対して、ＨＷタイマー１のタイムアウトが通知される（Ｓ２０３）。ＨＷタイマー１がタイムアウトした場合には、ドライバ管理部１１５は、予備系側のドライバコア部１１４に対して音声ミキシング処理の開始を要求する。これにより、予備系側のドライバコア部１１４が、音声ミキシング処理を開始する。
【００６６】
次いで、予備系側のＯＳ(ＯＳ[１]１１０)のドライバ管理部１１５に対して、ＨＷタイマー２のタイムアウトが通知される（Ｓ２０４）。ＨＷタイマー２がタイムアウトした場合には、ドライバ管理部１１５は、共通割込み制御部１６に対して、フリーズしている主系側のＯＳ(ＯＳ[２]１２０)に対するＤＭＡ転送割込みの通知を停止するよう指示する。そして、ドライバ管理部１１５は、予備系側のドライバコア部１１４に対してＤＭＡ転送要求処理の開始を要求する。これにより、予備系側のドライバコア部１１４が、ＤＭＡ転送要求処理を開始する。
【００６７】
再び図３に戻って、解決手段[２]２０２について説明する。上述したように、主系側のＯＳ(ＯＳ[２]１２０)のフリーズのために、設定したＨＷタイマー１７がタイムアウトした場合に、サウンドドライバの一部の機能を主系側のＯＳ(ＯＳ[２]１２０)から予備系側のＯＳ(ＯＳ[１]１１０)へと切り替えが行われる。そして、解決手段[２]２０２においては、音声ミキシング処理を行っている途中に主系側のＯＳ(ＯＳ[２]１２０)がフリーズした後に、予備系側のＯＳ(ＯＳ[１]１１０)が音声ミキシング処理を開始した場合において、フリーズの前後にわたってストリームデータ(音声データ等)の整合性を保証する処理が行われる。
【００６８】
ストリームデータの整合性を保つ処理は、新たに設けたパラメータ用いて行う処理と、主系側であったＯＳ(ＯＳ[２]１２０)が参照していた周辺デバイスのベースアドレスを無効化する処理とから構成される。以下、図７及び図８を参照して、各処理について詳細に説明する。
【００６９】
まず、ストリームデータの整合性を保つ処理の一つである、新たに設けたパラメータを用いて行う処理について説明する。本実施の形態では、サウンドキューのパラメータに関して、一般的なキューのパラメータに加えて、予備系側のＯＳ(ＯＳ[１]１１０)が用いるデキュー専用パラメータを新たに設ける。このパラメータの追加は、主系側のＯＳ(ＯＳ[２]１２０)からのデキュー処理(音声ミキシング処理等)中に、主系側のＯＳ(ＯＳ[２]１２０)がフリーズした場合等において有効となる。
【００７０】
図７を参照してより具体的に説明する。図に示すように、本実施の形態では、各サウンドキュー（リングバッファ）に対して、一般的なリングバッファのパラメータ（ｆｒｏｎｔ、ｒｅａｒ）に加えて、パラメータｆｒｏｎｔ２を追加する。ここで、ｆｒｏｎｔは、主系側のドライバコア部１２７が使用する、デキュー用のパラメータである。また、ｒｅａｒは、各ＯＳの上位アプリＩ／Ｆ部１２６、１１３が使用する、エンキュー用のパラメータである。また、ｆｒｏｎｔ２は、予備系側のドライバコア部１１４が使用する、デキュー用のパラメータである。
【００７１】
パラメータｆｒｏｎｔ２は、音声ミキシング処理中に主系側のＯＳ(ＯＳ[２]１２０)がフリーズしてしまった場合に、音声データの整合性を保つために使用する。例えば、予備系側のＯＳ(ＯＳ[１]１１０)が待機している時に、主系側のドライバコア部１２７が、ＤＭＡ転送開始要求後に、Ｉ２Ｓデバイス１３のＦＩＦＯ１３０における最初のフル割り込みの発生をトリガーとして、ＤＭＡ転送の転送回数分、ｆｒｏｎｔ２をカウントする。尚、ｆｒｏｎｔ２のカウント方法としてはこれに限定されず、より簡易的な方法を用いてもよい。例えば、主系側のＤＭＡ転送完了割り込みスレッドが、スレッドの出口においてｆｒｏｎｔ２をカウントする構成としてもよい。
【００７２】
主系側のＯＳ(ＯＳ[２]１２０)が正常に動作している場合には、ＤＭＡ転送完了割り込みスレッド１２９内において、ｆｒｏｎｔを用いて示す位置からの音声データ（図７において斜線を用いて示す部分）がデキューされる（このデキュー処理は、ｆｒｏｎｔを用いてカウントされる）。次いで、主系側のドライバコア部１２７が、呼び出したソフトウェアミキサ関数を用いて、サウンドキューから出力された複数の音声データのミキシング処理を行う。次いで、ＤＭＡ転送用バッファ４４に格納された音声ミキシング処理後の音声データが、ＳＤＲＡＭ３０からＩ２Ｓデバイス１３のＦＩＦＯ１３０へとＤＭＡ転送される（ここでは、このＤＭＡ転送回数が、ｆｒｏｎｔ２を用いてカウントされる）。
【００７３】
従って、主系側のＯＳ(ＯＳ[２]１２０)が正常に動作している場合には、ｆｒｏｎｔとｆｒｏｎｔ２を同じ位置から開始させた後に、ｆｒｏｎｔ２はｆｒｏｎｔに追従して変化する。これに対して、主系側のＯＳ(ＯＳ[２]１２０)がフリーズした場合には、音声データのデキューが途中で停止し、ｆｒｏｎｔのカウントが停止する。また、主系側のＯＳ(ＯＳ[２]１２０)がフリーズすることでＤＭＡ転送が行われないために、ｆｒｏｎｔ２についてもカウントが停止し、ｆｒｏｎｔ２の位置は更新されない。
【００７４】
ここで、図７に示すように、主系側のＯＳ(ＯＳ[２]１２０)がフリーズして、ｆｒｏｎｔ及びｆｒｏｎｔ２が停止した場合に、切り替えた予備系側のドライバコア部１１４が、呼び出したソフトウェアミキサ関数を用いて、ｆｒｏｎｔを用いて示す位置から音声データのデキューを開始した状況を想定する。この状況において、ｆｒｏｎｔを用いて示す位置から音声データのデキューを開始しては、欠損している可能性のある音声データをデキューすることになり、音声データの整合性を保証することができない。このため、主系側のＯＳ(ＯＳ[２]１２０)がフリーズして、ｆｒｏｎｔ及びｆｒｏｎｔ２が停止した場合に、切り替えた予備系側のドライバコア部１１４が、呼び出したソフトウェアミキサ関数を用いて、ｆｒｏｎｔ２を用いて示す位置から音声データのデキューを開始することで、主系側のＯＳ(ＯＳ[２]１２０)がフリーズするよりも前の音声データからデキューを開始することができるため、フリーズの前後での音声データの整合性を保証することができる。
【００７５】
次に、ストリームデータの整合性を保つ処理の一つである、主系側であったＯＳ(ＯＳ[２]１２０)が参照していた周辺デバイスのベースアドレスを無効化する処理について説明する。予備系側のＯＳ(ＯＳ[１]１１０)へと切り替えた場合に、切り替えた予備系側のドライバコア部１１４（新しく主系側となったドライバコア部）が音声ミキシング処理を行っている最中には、主系側であったドライバコア部１２７（以下、単に（旧）主系側のドライバコア部１２７と称する場合がある。）からのＤＭＡレジスタアクセスを禁止することで、音声データの整合性を保証する。
【００７６】
ここでは、図８に示すように、主系側のＯＳ(ＯＳ[２]１２０)が参照していた共有メモリ（ＳＤＲＡＭ３０）上の周辺デバイス（Ｉ２Ｓデバイス１３、ＤＭＡＣ１５）のベースアドレスを、予備系側のドライバ管理部１１０が一時的に無効アドレスにする（ＳＤＲＡＭ３０上において未使用領域などにする）。これによって、切り替え前に主系であった（旧）主系側のＯＳ(ＯＳ[２]１２０)がレジスタへとアクセスすることを禁止することができる。
【００７７】
以上説明した解決手段１及び解決手段２を用いることで、以下の効果を実現することができる。
まず、複数のＯＳ間で音声出力のＩ２Ｓバスを共有する構成において、片方のＯＳの動作が停止した場合においても、もう片方のＯＳ側からの音声出力が途切れることを防止することができる。また、主系側のサウンドドライバについて、サウンドドライバのＤＭＡ転送完了割り込みスレッド内での処理中に発生するフリーズに対しても対応することができる。
また、複数のＩ２Ｓデバイスや外部サウンドミキサ(ＤＳＰ等)を搭載する必要が無いため、コストダウンを実現することができる。
また、サウンドサーバを必ずしも搭載する必要がないために、ＴＣＰ／ＩＰプロトコルスタックを全てのＯＳに対して搭載する必要がなくなる。このため、ＴＣＰ／ＩＰを搭載することでもたらされる、メモリ使用量及びＣＰＵ負荷の増加や、システム起動時間の遅延などを防止する効果がある。
【００７８】
その他の実施の形態．
上述した実施の形態においては、ＭＰＵ１０が２つのＯＳ（ＯＳ[１]１１０、ＯＳ[２]１２０）を備えている場合を例に説明したが、本発明はこれに限定されない。すなわち、
ＭＰＵ１０が３つ以上のＯＳを備えるものとしてもよい。かかる場合には、予備系側のＯＳが複数存在することになる。
【００７９】
尚、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００８０】
１  マルチコアシステム、
１０  ＭＰＵ、
１１  ＣＰＵ［１］、
１１０  ＯＳ［１］、
１１１  アプリ［１］、
１１２  サウンドドライバ、
１１３  上位アプリＩ／Ｆ部、
１１４  ドライバコア部、
１１５  ドライバ管理部、
１２  ＣＰＵ［２］〜［４］、
１２０  ＯＳ［２］、
１２１  アプリ［２］、
１２２  アプリ［３］、
１２３  アプリ［４］
１２４  サウンドサーバ、
１２５  サウンドドライバ、
１２６  上位アプリＩ／Ｆ部、
１１７  ドライバコア部、
１２８  ソフトウェアミキサ、
１２９  ＤＭＡ転送完了割り込みスレッド、
１３  Ｉ２Ｓデバイス（Ｉ２Ｓ  ｄｅｖｉｃｅ）、
１３０  ＦＩＦＯ、
１４  Ｉ２Ｃデバイス（Ｉ２Ｃ  ｄｅｖｉｃｅ）、
１５  ＤＭＡＣ（ＤＭＡ  ｃｏｎｔｒｏｌｌｅｒ）、
１６  共通割り込み制御部、
１７  ＨＷタイマー、
２０  音声出力装置、
２１  ＡＵＤＩＯ  ＤＡＣ＆ＡＭＰ、
２２  スピーカー、
３０  ＳＤＲＡＭ、
４０  ＯＳ間共有メモリ、
４１、４２、４３  サウンドキュー、
４４  ＤＭＡ転送用バッファ、
５０  ＭＰＵ、
５１  ＡＵＤＩＯ  ＤＡＣ、
５２  ＵＮＩＸ（登録商標）サーバ、
５３  アプリ［Ａ］、
５４  アプリ［Ｂ］、
５５  クライアントＰＣ、
５６  サウンドサーバ、
５７  アプリ［Ｃ］、
５８  サウンドドライバ、
６０  ＭＰＵ、
６１  ＤＳＰ、
６２  ＡＵＤＩＯ  ＡＭＰ、
６３  ＯＳ［１］、
６４  ＯＳ［２］、
６５  サウンドドライバ、
６６  アプリ［１］、
６７  サウンドドライバ、
６８  アプリ［２］、
【図１】
2011043892.tif 000003
【図２】
2011043892.tif 000004
【図３】
2011043892.tif 000005
【図４】
2011043892.tif 000006
【図５】
2011043892.tif 000007
【図６】
2011043892.tif 000008
【図７】
2011043892.tif 000009
【図８】
2011043892.tif 000010
【図９】
2011043892.tif 000011
【図１０】
2011043892.tif 000012
【図１１】
2011043892.tif 000013