(57)【要約】【課題】予備系への負荷を抑えながら画音同期精度の低下を抑制し、かつ、音切れの発生を防止すること。【解決手段】本発明に係るマルチコアシステム２は、プロセッサコア６１上で動作し、ミキシングした合成音声データをＤＭＡ転送用バッファ６３に格納する主系プログラム６１０と、プロセッサコア６２上で動作する予備系プログラム６２０と、ＤＭＡ転送用バッファ６３から転送される合成音声データを順次格納して再生する音声出力部６４を備える。予備系のプログラム６２０は、ＤＭＡ転送完了割込み要求の受信に応じてタイマーを設定し、タイマーがタイムアウトした場合には、ＤＭＡ転送用バッファ６３の合成音声データの格納量が所定のデータ量に達しているか否かを判定し、所定のデータ量に達していないときには、主系プログラム６１０が実行していた合成音声データのミキシング及び格納を引き継いで実行する。【選択図】図１
2011164525.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサコア上で動作し、第１及び第２の音声データをミキシングして、当該ミキシングした合成音声データをＤＭＡ転送用バッファに格納する主系プログラムと、
第２のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムと、
前記ＤＭＡ転送用バッファから転送される合成音声データを順次格納し、当該格納した合成音声データを再生する音声出力部と、を備え、
前記予備系プログラムは、
ＤＭＡ転送完了割込み要求の受信に応じてタイマーを設定し、所定の時間経過後に前記タイマーがタイムアウトした場合に、前記ＤＭＡ転送用バッファに格納されている合成音声データの格納量が、前記音声出力部に格納されている合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定し、当該所定のデータ量に達していないときには、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いで実行する
ことを特徴とするマルチコアシステム。
【請求項２】
前記タイマーがタイムアウトする所定の時間を、
ＤＭＡアンダーランエラー発生時間から、前記主系のプログラムが実行していた合成音声データのミキシングを前記予備系のプログラムが引き継いだ場合に前記予備系のプログラムがミキシング処理に要する時間を控除して算出したミキシング処理終了時間とする
ことを特徴とする請求項１に記載のマルチコアシステム。
【請求項３】
前記音声出力部は、
前記ＤＭＡ転送用バッファから転送される合成音声データをエンキューして、前記再生をする合成音声データがデキューされるＦＩＦＯバッファを有し、
前記ＦＩＦＯバッファに格納されている合成音声データが所定の単位デキューされる毎に、前記予備系プログラムにＦＩＦＯ境界割り込みを出力し、
前記予備系プログラムは、
前記タイマーがタイムアウトした場合に、前記音声出力部に対して前記ＦＩＦＯ境界割り込みの出力を許可し、前記音声出力部からのＦＩＦＯ境界割り込みを受信する都度、前記ＤＭＡ転送用バッファに格納されている合成音声データの格納量が、前記ＦＩＦＯバッファに格納されている合成音声データの格納量に応じて定める所定の閾値に達しているか否かを判定し、当該所定の閾値に達していないときに、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いで実行する
ことを特徴とする請求項１又は２に記載のマルチコアシステム。
【請求項４】
前記マルチコアシステムは、
前記ＤＭＡ転送用バッファに格納された合成音声データを前記ＦＩＦＯバッファに転送して、当該転送が完了した場合に、ＤＭＡ転送完了割り込みを前記予備系プログラムに出力するＤＭＡコントローラを更に備え、
前記予備系プログラムは、
前記タイマーがタイムアウトした場合に、前記ＤＭＡコントローラからの前記ＤＭＡ転送完了割り込みを受信したときに、前記ＦＩＦＯ境界割り込みの出力を有効にするＦＩＦＯ境界割り込み開始要求を前記音声出力部に出力し、
前記合成音声データのミキシング及び格納を完了した場合に、前記ＦＩＦＯ境界割り込みの出力を無効にするＦＩＦＯ境界割り込み停止要求を前記音声出力部に出力する
ことを特徴とする請求項３に記載のマルチコアシステム。
【請求項５】
前記音声出力部は、
Ｉ２Ｓデバイスと、ＤＡコンバータを含む音声出力装置と、を有し、
前記Ｉ２Ｓデバイスは、
前記ＤＭＡ転送用バッファから転送される合成音声データをエンキューして、前記再生をする合成音声データがデキューされるＦＩＦＯバッファを有し、
前記音声出力装置は、
前記ＦＩＦＯバッファからデキューされた合成音声データをアナログ信号に変換して再生する
ことを特徴とする請求項１に記載のマルチコアシステム。
【請求項６】
第１のプロセッサコア上で動作し、第１及び第２の音声データをミキシングして、当該ミキシングした合成音声データをＤＭＡ転送用バッファに格納する主系プログラムと、第２のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムと、前記ＤＭＡ転送用バッファから転送される合成音声データを順次格納し、当該格納した合成音声データを再生する音声出力部と、を備えたマルチコアシステムの制御方法であって、
前記予備系プログラムを用いて、
ＤＭＡ転送完了割込み要求の受信に応じてタイマーを設定するステップと、
所定の時間経過後に前記タイマーがタイムアウトした場合に、前記ＤＭＡ転送用バッファに格納されている合成音声データの格納量が、前記音声出力部に格納されている合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定するステップと、
前記所定のデータ量に達していないときには、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いで実行するステップと、を実行する
ことを特徴とするマルチコアシステムの制御方法。
【請求項７】
複数のプロセッサコアと、ＤＭＡ転送用バッファから転送される合成音声データを順次格納して再生する音声出力部と、を含むマルチコアシステムにおいて、前記複数のプロセッサコア上でそれぞれ動作する複数のプログラムのうちで、第１のプロセッサコア上で動作し、第１及び第２の音声データをミキシングして、当該ミキシングした合成音声データをＤＭＡ転送用バッファに格納するプログラムを主系プログラムとして、第２のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムであって、
ＤＭＡ転送完了割込み要求の受信に応じてタイマーを設定するステップと、
所定の時間経過後に前記タイマーがタイムアウトした場合に、前記ＤＭＡ転送用バッファに格納されている合成音声データの格納量が、前記音声出力部の格納量に応じて定める所定のデータ量に達しているか否かを判定するステップと、
前記所定のデータ量に達していないときには、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いで実行するステップと、を前記プロセッサコアに実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアシステム、マルチコアシステムの制御方法及びプログラムに関する。
【背景技術】
【０００２】
複数のＣＰＵ(Central Processing Unit)コアを内蔵したマルチコアで構成され、組み込み用途向けのプロセッサ(ＭＰＵ：Micro Processing Unit)が開発されている。これらのプロセッサは、周辺デバイスも含めてワンチップ化されている。また、マルチコアＣＰＵ上において、異なる複数のＯＳ(Operating System)を動作させる技術が知られている。
【０００３】
また、ＭＰＵの機能として、単一の割り込み要求(ＩＲＱ：Interrupt ReQuest)を、複数のＣＰＵコアへと通知する手段が知られている。さらに、ＭＰＵは、レジスタ設定に基づいて、どの割り込み要求をどのＣＰＵコアに対して割り当てるかを設定することができる。
【０００４】
また、例えば、図８に示すように、ＭＰＵ５０内部のＣＰＵからＡＤＡＣ５１(Audio DAC)に対して、Ｉ２Ｓ(Inter-IC Sound)バスを経由して、音声データを転送する技術が知られている。音声データは、例えば、ＰＣＭ(Pulse Code Modulation)音声である。なお、Ｉ２Ｓは、音声データのインターフェイスデバイスを構成する、ＰＨＩＬＩＰＳ(登録商標)社製のシリアル通信フォーマットである。Ｉ２Ｓ規格では、ＰＣＭ音声や圧縮音声(μ−ｌａｗやＡＤＰＣＭなど)を、Ｉ２Ｓバスを経由してＡＤＡＣに出力することができる。
【０００５】
また、図８において、Ｉ２Ｃ(Inter-Integrated Circuit)バスは、ＰＨＩＬＩＰＳ(登録商標)社で開発されたデバイス制御用のシリアルバスである。ＡＤＡＣ５１は、音声データをステレオ音声に変換する。ＤＡＣは、Ｄ／Ａコンバータである。ＡＤＡＣから出力されるアナログ音声(ステレオ)が、スピーカーにおいて再生される。
【０００６】
また、ＦＩＦＯ(First In First Out)バッファを備えるＩ２Ｓデバイスが知られている。このようなＩ２Ｓデバイスは、ＦＩＦＯバッファに格納されている音声データをデキューしてＩ２Ｓバスを経由してＡＤＡＣに出力する。そして、ＦＩＦＯバッファからデキューされて減少したデータのサイズが４、８、１６、３２バイト等の境界に達した場合、割り込み(以下、「ＦＩＦＯ境界割り込み」とする)を発生させることが可能なＩ２Ｓデバイスがある。一般的に、この割り込みは、ＰＩＯ(Programmed Input/Output)転送に使用される。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本願の出願人は、先に出願した特願２００９−１９０１０３において、単一のマルチコアＣＰＵ上で複数のＯＳを動作させ、それら複数のＯＳでＩ２Ｓデバイスを共有するマルチコアシステムにおいて、Ｉ２Ｓデバイスの制御を行う主系ＯＳがカーネルパニック又はフリーズ等のために動作不能となった場合においても、他の予備系ＯＳに切替えてＩ２Ｓデバイスの制御を継続可能とする技術を開示している。これにより、簡易な構成で音切れの発生を防止することができる。
【０００８】
図９を参照して、特願２００９−１９０１０３に記載された技術を簡単に説明する。
特願２００９−１９０１０３では、複数ＯＳからの同時音声出力時におけるＤＭＡ(Direct Memory Access)アンダーランエラー発生回避のため、２つの解決手段（解決手段１、解決手段２）を定義している。
【０００９】
解決手段１では、ＤＭＡ転送終了割り込みを複数ＯＳ（ＯＳ［１］３１０、ＯＳ［２］３２０）で受信し、予備系ＯＳ（ＯＳ［１］３１０）側のドライバ管理部３１５が有する割り込みハンドラを用いて２系統のＨＷ(Hard Ware)タイマー２１７を設定し、主系ＯＳ（ＯＳ［２］３２０）側のＤＭＡ転送完了割り込みスレッド３１９でＨＷタイマー２１７を解除する。解決手段２では、ＨＷタイマー２１７がタイムアウトした場合、主系ドライバコア部３２７（サウンドドライバの一機能）を主系（ドライバコア部３２７）から予備系（ドライバコア部３１４）へと切り替え、音声データの整合性をとる。
【００１０】
解決手段１では、主系側のＤＭＡ転送完了割り込みスレッド３２９における処理方法を、音声ミキシング処理時間とＤＭＡ転送間隔との大小関係に応じて、２つのパターン（パターンＡ、パターンＢ）から選択する。図１０に示すように、「ＤＭＡ転送間隔＞(ミキシング処理時間×２)」である場合には、パターンＡを選択し、「ＤＭＡ転送間隔≦(ミキシング処理時間×２)」である場合には、パターンＢを選択する。
【００１１】
パターンＡでは、図１１の（Ａ）図に示すように、「ミキシング処理→ＤＭＡ転送開始要求」の順で処理を行う。また、パターンＢでは、図１１の（Ｂ）図に示すように、「ＤＭＡ転送開始要求→ミキシング処理」の順で処理を行う。
【００１２】
しかし、パターンＢでは、ＤＭＡ転送を行う音声データを１パケット（ＤＭＡ転送サイズ）分先読みする都合上、アプリケーションが参照可能なパラメータである音声データの再生済みサンプル数と、実際の音声データの再生済みサンプル数がずれてしまう。すなわち、パターンＢでは、音声データを１パケット分先読みするため、画音同期を行う動画プレーヤーで動画を再生する場合、実際に再生中の音声データと、動画プレーヤーが再生中と認識する音声データが１パケット分ずれてしまい、画音同期の精度が低下してしまうという課題があった。
【００１３】
そこで、特願２００９−２６２５４５に記載された技術では、図１２に示すように、「ミキシング処理時間＜ＤＭＡ転送間隔＜（ミキシング処理時間×２）」である場合には、パターンＢではなくパターンＡを選択するものとして、「主系→予備系切り替えのための異常検出手段」を新たに定義している。
【００１４】
この異常検出手段では、ＤＭＡ転送完了割り込みを受信した場合に、Ｉ２ＳデバイスのＦＩＦＯ境界割り込みを予備系側で受信することを許可する。そして、予備系側のドライバ管理部がＦＩＦＯ境界割り込みを受信した場合には、ＦＩＦＯバッファ内のデータ数とＤＭＡ転送用バッファに蓄えられているデータのサンプル数とを比較する。比較の結果、ＤＭＡ転送用バッファに蓄えられているサンプル数がＦＩＦＯバッファ内のデータ数から計算される閾値に達していない場合には、ドライバコア部に関して主系から予備系への切り替えを行う。尚、ＦＩＦＯ境界割り込みとは、ＦＩＦＯバッファに溜まっているデータが４バイト境界になった都度、発生する割り込みである。
【００１５】
しかしながら、特願２００９−２６２５４５では、ＤＭＡ転送完了割り込みの受信をトリガとしてＩ２ＳデバイスのＦＩＦＯ境界割り込みを許可するものである。このため、ＤＭＡ転送割り込みスレッドでのミキシング処理中においてもＦＩＦＯ境界割り込みが発生することになり、予備系側のパフォーマンスが低下するという課題があった。
【００１６】
本発明の目的は、上述した課題を解決するために、予備系への負荷を抑えながら画音同期精度の低下を抑制し、かつ、音切れの発生を防止することが可能なマルチコアシステム、マルチコアシステムの制御方法及びプログラムを提供することである。
【課題を解決するための手段】
【００１７】
本発明の第１の態様に係るマルチコアシステムは、第１のプロセッサコア上で動作し、第１及び第２の音声データをミキシングして、当該ミキシングした合成音声データをＤＭＡ転送用バッファに格納する主系プログラムと、第２のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムと、前記ＤＭＡ転送用バッファから転送される合成音声データを順次格納し、当該格納した合成音声データを再生する音声出力部と、を備え、前記予備系プログラムは、ＤＭＡ転送完了割込み要求の受信に応じてタイマーを設定し、所定の時間経過後に前記タイマーがタイムアウトした場合に、前記ＤＭＡ転送用バッファに格納されている合成音声データの格納量が、前記音声出力部に格納されている合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定し、当該所定のデータ量に達していないときには、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いで実行するものである。
【００１８】
本発明の第２の態様に係るマルチコアシステムの制御方法は、第１のプロセッサコア上で動作し、第１及び第２の音声データをミキシングして、当該ミキシングした合成音声データをＤＭＡ転送用バッファに格納する主系プログラムと、第２のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムと、前記ＤＭＡ転送用バッファから転送される合成音声データを順次格納し、当該格納した合成音声データを再生する音声出力部と、を備えたマルチコアシステムの制御方法であって、前記予備系プログラムを用いて、ＤＭＡ転送完了割込み要求の受信に応じてタイマーを設定するステップと、所定の時間経過後に前記タイマーがタイムアウトした場合に、前記ＤＭＡ転送用バッファに格納されている合成音声データの格納量が、前記音声出力部に格納されている合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定するステップと、前記所定のデータ量に達していないときには、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いで実行するステップと、を実行するものである。
【００１９】
本発明の第３の態様に係るプログラムは、複数のプロセッサコアと、ＤＭＡ転送用バッファから転送される合成音声データを順次格納して再生する音声出力部と、を含むマルチコアシステムにおいて、前記複数のプロセッサコア上でそれぞれ動作する複数のプログラムのうちで、第１のプロセッサコア上で動作し、第１及び第２の音声データをミキシングして、当該ミキシングした合成音声データをＤＭＡ転送用バッファに格納するプログラムを主系プログラムとして、第２のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムであって、ＤＭＡ転送完了割込み要求の受信に応じてタイマーを設定するステップと、所定の時間経過後に前記タイマーがタイムアウトした場合に、前記ＤＭＡ転送用バッファに格納されている合成音声データの格納量が、前記音声出力部の格納量に応じて定める所定のデータ量に達しているか否かを判定するステップと、前記所定のデータ量に達していないときには、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いで実行するステップと、を前記プロセッサコアに実行させるものである。
【発明の効果】
【００２０】
上述した本発明の各態様により、予備系への負荷を抑えながら画音同期精度の低下を抑制し、かつ、音切れの発生を防止することが可能なマルチコアシステム、マルチコアシステムの制御方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施の形態に係るマルチコアシステムのハードウェア構成の概要を示すブロック図である。
【図２】本発明の実施の形態に係るマルチコアシステムのハードウェア構成を示すブロック図である。
【図３】本発明の実施の形態に係るマルチコアシステムの機能構成を示すブロック図である。
【図４】本発明の実施の形態に係る動作シーケンス図である。
【図５】本発明に関連する技術の動作シーケンス図である。
【図６】本発明の実施の形態に係るＦＩＦＯ境界割り込み回数と閾値との関係を示す表である。
【図７】本発明に関連する技術のＦＩＦＯ境界割り込み回数と閾値との関係を示す表である。
【図８】本発明に関連する技術を説明するための図である。
【図９】本発明に関連する技術を説明するための図である。
【図１０】本発明に関連する技術を説明するための図である。
【図１１】本発明に関連する技術を説明するための図である。
【図１２】本発明及び本発明に関連する技術における選択パターンを説明するための図である。
【発明を実施するための形態】
【００２２】
まず、図１を参照して、本発明の実施の形態に係るマルチコアシステムの概要について説明する。図１は、本実施の形態に係るマルチコアシステムのハードウェア構成の概要を示すブロック図である。
【００２３】
マルチコアシステム２は、プロセッサコア６１、６２と、ＤＭＡ転送用バッファ６３と、音声出力部６４と、を備える。
【００２４】
プロセッサコア６１は、主系として動作するプログラム６１０を動作させる。プロセッサコア６２は、主系プログラムの予備系として動作するプログラム６２０を動作させる。プログラム６１０は、第１及び第２の音声データをミキシングして、ミキシングした合成音声データをＤＭＡ転送用バッファ６３に格納する。
【００２５】
ＤＭＡ転送用バッファ６３は、プログラム６１０、６２０がミキシングした合成音声データを格納する。音声出力部６４は、ＤＭＡ転送用バッファ６３から転送される合成音声データを順次格納し、格納した合成音声データを再生する。
【００２６】
続いて、本発明の実施の形態に係るマルチコアシステムの処理の概要について説明する。
主系のプログラム６１０は、第１及び第２の音声データをミキシングして、ミキシングした合成音声データをＤＭＡ転送用バッファ６３に格納する。そして、ＤＭＡ転送用バッファ６３に格納された合成音声データが一定のデータ量に達したときに、ＤＭＡ転送用バッファ６３に格納された合成音声データが音声出力部６４に転送される。音声出力部６４は、ＤＭＡ転送用バッファ６３から転送された合成音声データを順次格納し、当該格納した合成音声データを再生する。
【００２７】
予備系のプログラム６２０は、ＤＭＡ転送完了割込み要求の受信に応じてタイマーを設定する。そして、予備系のプログラム６２０は、所定の時間経過後にタイマーがタイムアウトした場合に、ＤＭＡ転送用バッファ６３に格納されている合成音声データの格納量が、音声出力部６４に格納されている合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定する。判定の結果、所定のデータ量に達していないときには、予備系のプログラム６２０は、主系プログラム６１０が実行していた合成音声データのミキシング及び格納を引き継いで実行する。
【００２８】
続いて、図２及び図３を参照して、本発明の実施の形態に係るマルチコアシステムの構成について説明する。図２は、本実施の形態に係るマルチコアシステムのハードウェア構成を示すブロック図である。
【００２９】
図２に示すように、マルチコアシステム１は、組み込み用のＭＰＵ１０と、音声出力装置２０と、外部共有メモリとしてのＳＤＲＡＭ(Synchronous Dynamic Random Access Memory)３０と、を備えている。
【００３０】
ＭＰＵ１０は、マルチコアＣＰＵと、周辺デバイス(Ｉ２Ｓデバイス１３、Ｉ２Ｃデバイス１４、ＤＭＡコントローラ１５)とがワンチップ化されたＩＣ(Integrated Circuit)である。ＣＰＵ１１、１２は、それぞれ１つ又は複数のＣＰＵコアを含む。例えば、４つのＣＰＵコアを有するマルチコアＣＰＵのうち、ＣＰＵ１１は１つのＣＰＵコアを含み、ＣＰＵ１２は３つのＣＰＵコアを含む。また、ＣＰＵ１１、１２は、複数のマルチコアＣＰＵから構成されるようにしてもよい。ＣＰＵコアは、プロセッサコア６１、６２に相当する。
【００３１】
ＭＰＵ１０は、マルチコアＣＰＵ上において複数のＯＳを動作させる。ＯＳ１１０がＣＰＵ１１上において動作する。ＯＳ１２０がＣＰＵ１２上において動作する。ここで、ＯＳ１１０とＯＳ１２０は異なる種類のＯＳである。例えば、ＯＳ１１０をμＩＴＲＯＮ等のリアルタイムＯＳとし、ＯＳ１２０は高機能組み込みＯＳとする組み合わせが考えられる。高機能組み込みＯＳとは、例えば、組み込みＬｉｎｕｘ(登録商標)やＷｉｎｄｏｗｓ  ＣＥ(登録商標)等である。
【００３２】
ＯＳ１１０上において、アプリケーションプログラム１１１(図では、略して「アプリ」として示す)、及びデバイスドライバであるサウンドドライバ１１２が動作する。アプリケーションプログラム１１１から出力された音声データが、サウンドドライバ１１２へと入力される。また、ＯＳ１２０上において、アプリケーションプログラム１２１、１２２、１２３(図では、略して「アプリ」としてそれぞれ示す)、サウンドサーバ１２４、及びデバイスドライバであるサウンドドライバ１２５が動作する。アプリケーションプログラム１２１及びアプリケーションプログラム１２２から出力された音声データは、サウンドサーバ１２４へと入力される。サウンドサーバ１２４から出力される音声データと、アプリケーションプログラム１２３から出力された音声データとが、サウンドドライバ１２５へと入力される。
【００３３】
Ｉ２Ｓデバイス１３は、Ｉ２Ｓバス(Ｉ２Ｓ  ｂｕｓ)を経由して音声データをＡＤＡＣ＆ＡＭＰ２１へと送信する、１系統のデバイスである。Ｉ２Ｓデバイス１３はＦＩＦＯバッファ１３１を備えており、ＦＩＦＯバッファ１３１に音声データを格納する。ここでは、Ｉ２Ｓデバイス１３は、音声データとして、ステレオＰＣＭを扱う。
【００３４】
Ｉ２Ｃデバイス１４は、デバイス制御用のシリアルバスである。Ｉ２Ｃデバイス１４は、ＡＤＡＣが備えるレジスタへの読み書きを行うために使用される。
【００３５】
ＤＭＡコントローラ１５は、ＭＰＵ１０の外部に接続されたＳＤＡＲＭ３０と、他のデバイス間のＤＭＡ転送を制御する。ここでは、ＳＤＲＡＭ３０上のＯＳ間共有メモリ４０から、Ｉ２Ｓデバイス１３のＦＩＦＯバッファ１３１への音声データの転送を、ＤＭＡコントローラ１５の１チャンネルを用いて行う。
【００３６】
尚、本実施の形態では、通常、ＯＳ１２０側のサウンドドライバ１２５が、音声ミキシング処理及び周辺デバイス(Ｉ２Ｓデバイス１３、Ｉ２Ｃデバイス１４、ＤＭＡコントローラ１５)の制御を行うものとして説明する。
【００３７】
音声出力装置２０は、ＡＤＡＣ＆ＡＭＰ２１と、スピーカー２２とを備えている。ＡＤＡＣ＆ＡＭＰ２１は、音声出力装置２０の外部インタフェースを構成する。ＡＤＡＣ＆ＡＭＰ２１は、Ｉ２Ｓバスを経由して送信される音声データをアナログ信号に変換及び増幅して、スピーカー２２を用いて再生する。Ｉ２Ｓデバイス１３及び音声出力装置２０は、音声出力部６４に相当する。
【００３８】
ＳＤＲＡＭ３０は、ＭＰＵ１０の外部にバスを介して接続される、揮発性のメモリ(ＲＡＭ)である。ＳＤＲＡＭ３０には、ＯＳ間共有メモリ４０として、ＭＰＵ１０の複数のＯＳが共有するメモリ空間が確保される。
【００３９】
ＯＳ間共有メモリ４０内には、サウンドキュー(サウンドキュー４１、サウンドキュー４２、サウンドキュー４３)及びＤＭＡ転送用バッファ４４が設定される。サウンドキューは、アプリケーションプログラムが出力した音声データを格納するリングバッファである。サウンドキューとして、音声データを出力するアプリケーションプログラムの数に相当する数のキューが作成される。ここでは、ＯＳ１１０のアプリケーションプログラム１１１と、ＯＳ１２０のサウンドサーバ１２４と、ＯＳ１２０のアプリケーションプログラム１２３とに相当する、３個のサウンドキュー(サウンドキュー４１、サウンドキュー４２、サウンドキュー４３)が作成される。サウンドキュー(サウンドキュー４１、サウンドキュー４２、サウンドキュー４３)の音声データが音声ミキシング処理された後に、ＤＭＡ転送用バッファ４４に格納される。なお、サウンドキューは、リングバッファ以外のキューイング手段を用いて構成するものとしてもよい。
【００４０】
図３は、本実施の形態に係るマルチコアシステムの機能構成を示すブロック図である。図３では、図２において示したサウンドドライバ１１２を、上位アプリＩ／Ｆ部１１３とドライバコア部１１４に分割して示している。また、サウンドドライバ１２５を、上位アプリＩ／Ｆ部１２６とドライバコア部１２７に分割して示している。また、上位アプリＩ／Ｆ部１１３は、サンプリングレート変換機能１１６を有する。また、上位アプリＩ／Ｆ部１２６は、サンプリングレート変換機能１３０を有する。
【００４１】
上位アプリＩ／Ｆ部１１３は、アプリケーションプログラム１１１から出力された音声データをＯＳ間共有メモリ４０内のサウンドキュー４１に格納する。このときに、上位アプリＩ／Ｆ部１１３のサンプリングレート変換機能１１６は、アプリケーションプログラム１１１から受け取った音声データに対して、サンプリングレートの変換や量子化ビット数の変換を必要に応じて行い、その出力結果を、ＯＳ間共有メモリ４０内のサウンドキュー４１へと格納する。
【００４２】
上位アプリＩ／Ｆ部１２６は、サウンドサーバ１２４とアプリケーションプログラム１２３とから出力された音声データをＯＳ間共有メモリ４０内のサウンドキュー４２、４３に格納する。このときに、上位アプリＩ／Ｆ部１２６のサンプリングレート変換機能１３０は、サウンドサーバ１２４とアプリケーションプログラム１２３とから受け取った音声データに対して、サンプリングレートの変換や量子化ビット数の変換を必要に応じて行い、その出力結果を、ＯＳ間共有メモリ４０内のサウンドキュー４２、４３へと格納する。サンプリングレート変換機能１１６、１３０は、例えば、４８ｋＨｚ  ２４ｂｉｔの音声を、４４．１ｋＨｚ  １６ｂｉｔの音声へと変換する。
【００４３】
ドライバコア部１１４、１２７は、ＯＳ間共有メモリ４０の各サウンドキューに格納されている音声データをミキシングし、音声ミキシング処理後の音声データを、ＤＭＡ転送を用いてＩ２Ｓデバイス１３のＦＩＦＯバッファ１３１へと転送する。尚、本実施の形態では、サウンドドライバ１１２、１２５の一部であって、音声ミキシング処理及びＩ２Ｓデバイス１３、Ｉ２Ｃデバイス１４の制御を行う機能部分を、ドライバコア部１１４、１２５として定義する。また、音声ミキシング処理とは、各ＯＳ上で動作する複数のアプリケーションプログラムからの音声データをミキシングして、単一の音声データとしてＤＭＡ転送用の領域(ＤＭＡ転送用バッファ４４)にコピーする処理を指す。
【００４４】
本実施の形態では、システム動作時に、複数のＯＳのうち、１つのＯＳ(主系)のドライバコア部のみが動作する。その他のＯＳ(予備系)のドライバコア部は、通常は待機状態となっており、主系側のＯＳがカーネルパニックやフリーズ等した場合にのみ動作する。なお、主系とは、正常時に動作するドライバコア部を有するシステムを指す。予備系とは、主系側の動作不能となった時に動作するドライバコア部を有するシステムを指す。ここで、主系及び予備系とは、あくまでもサウンド再生機能(サウンドドライバの一部機能)についての主系及び予備系であり、主系ＯＳ及び予備系ＯＳのことではない。すなわち、予備系側のＯＳとは、サウンド再生機能に関する予備系としての機能を備えているＯＳのことを指す。
【００４５】
ソフトウェアミキサ１２８は、ドライバコア部１２７が呼び出す関数である。ソフトウェアミキサ１２８は、各サウンドキューに格納された音声データをミキシングし、ＤＭＡ転送用バッファ４４に格納する。
【００４６】
共通割り込み制御部１６は、各ＣＰＵコアに対して、割り込み要求(ＩＲＱ)の割り振りを行う。共通割り込み制御部１６は、基本的には、ＭＰＵ１０内にハードウェアの機能として備えられる。なお、ハードウェアの機能として共通割り込み制御部１６がＭＰＵ１０内に搭載されていない場合には、ソフトウエアの機能として実装することも可能である。
【００４７】
共通割込み制御部１６に入力される割り込み要求は、音声データのＤＭＡ転送が完了した場合に、ＤＭＡコントローラ１５が発行するＤＭＡ転送完了割り込みと、Ｉ２Ｓデバイス１３が発行するＦＩＦＯ境界割り込みと、を含む。ＤＭＡコントローラ１５は、音声データのＤＭＡ転送が完了した場合に、ＤＭＡ転送完了割り込みを発行する。ＤＭＡ転送完了割り込みの発生から一定の時間内にＤＭＡ転送開始要求が無い場合には、Ｉ２Ｓデバイス１３のＦＩＦＯバッファ１３１が空となり、Ｉ２Ｓアンダーランエラーが発生する。また、Ｉ２Ｓデバイス１３は、ＦＩＦＯバッファ１３１に溜まっているデータが４バイト境界になった都度、ＦＩＦＯ境界割り込みを発行する。
【００４８】
ドライバ管理部１１５は、予備系側のＯＳの割り込みハンドラが呼び出す関数群である。ドライバ管理部１１５は、ＨＷタイマー１７の設定、ＦＩＦＯ境界割り込みの開始／停止命令の設定や、主系のドライバコア部を用いた動作を予備系のドライバコア部を用いた動作へと切り替える切り替え処理を行う。尚、ここでは、ＨＷタイマー１７は、ＭＰＵ１０が備えるハードウェアタイマーを指す。
【００４９】
続いて、本発明の実施の形態に係るマルチコアシステムの動作を概略的に説明する。
まず、ＤＭＡ転送処理及び音声ミキシング処理の流れについて説明する。
ＳＤＲＡＭ３０からＦＩＦＯバッファ１３１に対してＤＭＡ転送が行われた後に、複数のＯＳ１１０、１２０がＤＭＡ転送完了割り込みを受信する。主系側のＯＳ１２０が正常に動作している場合には、受信したＤＭＡ転送完了割り込みが、ＤＭＡ転送完了割り込みスレッド１２９に到達する。そして、ＤＭＡ転送完了割り込みスレッド１２９は音声データのＤＭＡ転送完了割り込みをトリガとして動作し、ＤＭＡ転送完了割り込みスレッド１２９内において音声データの音声ミキシング処理及びＤＭＡ転送開始要求処理が行われる。そして、ＤＭＡ転送用バッファ４４に格納された音声ミキシング処理後の音声データが、ＳＤＲＡＭ３０からＦＩＦＯバッファ１３１に対してＤＭＡ転送される。
【００５０】
尚、マルチコアシステム１では、音声ミキシング処理及びＤＭＡ転送開始要求処理の処理順序に関して、主系側のＯＳ１２０における音声ミキシング処理時間とＩ２Ｓアンダーランエラーの関係に基づいて、上述したパターンＡ又はパターンＢのいずれかのパターンが選択される。本実施の形態では、ＤＭＡアンダーランエラーとミキシング処理時間は実施環境のスペックに応じて決まるため、選択条件「音声ミキシング処理時間＜ＤＭＡ転送間隔＜(音声ミキシング処理時間×２)」を満たす場合を対象とし、パターンＡが予め選択されるものとして説明する。すなわち、本実施の形態では、ＤＭＡ転送開始要求処理に先立ち、音声ミキシング処理が行われる。
【００５１】
次に、本発明の実施の形態に係るマルチコアシステムの動作のうち、主系側のＯＳの監視機能と、予備系への切り替え機能について説明する。
まず、予備系側のＯＳ１１０がＤＭＡ転送完了割込みを受信した場合には、予備系側のＯＳ１１０のドライバ管理部１１５が、ＨＷタイマー１７を設定する。
【００５２】
設定されたＨＷタイマー１７の解除は、主系側のＯＳ１２０のＤＭＡ転送完了割り込みスレッド１２９が行う。具体的には、主系側のＯＳ１２０のＤＭＡ転送完了割り込みスレッド１２９にＤＭＡ転送完了割り込みが到達した場合には、ＤＭＡ転送完了割り込みスレッド１２９が、上記設定されたＨＷタイマー１７を解除する。また、ＨＷタイマー１７は、ミキシング終了処理時間（ＤＭＡアンダーランエラー発生時間−予備系での音声ミキシング処理時間）の経過時にタイムアウトする。これにより、主系側のＯＳ１２０のＤＭＡ転送完了割り込みスレッド１２９にＤＭＡ転送完了割り込みが到達せず、かつ、ミキシング終了処理時間が経過した場合には、設定したＨＷタイマー１７が解除されずにタイムアウトする。
【００５３】
タイムアウトしたＨＷタイマー１７は、予備系側のＯＳ１１０のドライバ管理部１１５へとタイマー割り込みを発行する。予備系側のＯＳ１１０のドライバ管理部１１５は、ＨＷタイマー１７からのタイマー割り込みを受信した場合には、Ｉ２Ｓデバイス１３に対してＦＩＦＯ境界割り込みの開始を要求する。このように、選択条件「音声ミキシング処理時間＜ＤＭＡ転送間隔＜(音声ミキシング処理時間×２)」を満たす場合において、予備系側のドライバ管理部１１５がＤＭＡ転送完了割込みを受信したときには、ミキシング終了処理時間の経過をトリガとして、Ｉ２Ｓデバイス１３からのＦＩＦＯ境界割り込みの開始を許可する。
【００５４】
予備系側のＯＳ１１０のドライバ管理部１１５は、Ｉ２Ｓデバイス１３からのＦＩＦＯ境界割り込みを受信した場合、ＤＭＡ転送用バッファ４４に格納されている音声データのサンプル数が所定の閾値に達しているか否かを判定する。判定の結果、音声データのサンプル数が、ＦＩＦＯバッファ１３１に格納されている音声データのサンプル数から算出される所定の閾値に達していない場合、ドライバ管理部１１５は、主系のドライバコア部１２７を用いた動作を予備系のドライバコア部１１４を用いた動作へと切り替える切り替え処理を行う。ドライバ管理部１１５は、予備系への切替え処理を行った後、Ｉ２Ｓデバイス１３からのＦＩＦＯ境界割り込みの受信を禁止する。
【００５５】
これにより、ＤＭＡ転送用バッファ４４の音声データの格納量が、必要なデータ量となっているか否かを比較判定することで、主系側のＯＳ１２０の動作不能を監視することが可能となる。
【００５６】
尚、所定の閾値とは、ＦＩＦＯバッファ１３１に格納されている残りの音声データが全てデキューされるまでに、残りの音声ミキシング処理及びＤＭＡ転送開始要求処理の実行を完了させることが可能なサンプル数の音声データがＤＭＡ転送用バッファ４４に格納されているかどうかを判定するための基準値である。つまり、ＤＭＡ転送用バッファ４４に格納されている音声データのサンプル数が、所定の閾値に達している場合は、その時点から残りの音声ミキシング処理及びＤＭＡ転送開始要求処理を実行しても、Ｉ２Ｓアンダーランエラーが発生しないことになる。
【００５７】
ＦＩＦＯバッファ１３１に格納されている音声データのサンプル数は、例えば、ＦＩＦＯバッファ１３１のレジスタを参照することによって特定することができる。また、ＦＩＦＯ境界割り込みが発生した回数によって、ＦＩＦＯバッファ１３１からデキューされた音声データのサイズが分かる。そのため、そのサイズによってＦＩＦＯバッファ１３１からデキューされた音声データのサンプル数が分かるため、ＦＩＦＯ境界割り込みが発生した回数から、ＦＩＦＯバッファ１３１に格納されている音声データのサンプル数を算出するようにしてもよい。
【００５８】
予備系のドライバコア部１１４へと動作が切り替えられた場合には、予備系のドライバコア部１１４は、主系側のドライバコア部１２７が途中まで行った音声ミキシング処理を引き継いで実行する。予備系のドライバコア部１１４は、ＤＭＡ転送用バッファ４４に格納されている音声データのサンプル数を参照することで、主系側のドライバコア部１２７がミキシングした音声データのサンプル数を特定することができる。これにより、サウンドキュー４１、４２、４３に格納されている音声データのうちから、引き継いでミキシングを開始する音声データを特定することができる。なお、ＤＭＡ転送用バッファ４４に格納されている音声データのサンプル数は、ソフトウェアミキサ１２８がＯＳ間共有メモリ４０にその値を格納しておくことによって特定することができるようにしてもよく、ＤＭＡ転送用バッファ４４に格納されている音声データのサンプル数を数えることによって特定することができるようにしてもよい。
【００５９】
続いて、図４及び図５を参照して、本実施の形態に係る動作及び本発明に関連する技術の動作を説明する。尚、図３に示したように、ＦＩＦＯ境界割り込みは共通割り込み制御部１６を経由してドライバ管理部１１５に出力されるが、図４及び図５ではその点について省略して記載している。
【００６０】
図４は、本実施の形態に係る動作シーケンス図である。ここでは、正常に動作している主系側のＯＳ１２０が、ＤＭＡ転送完了割り込みを受信した後の処理について説明する。
まず、ＤＭＡ転送完了割り込みをＭＰＵ１０が受信した場合には、共通割り込み制御部１６は、複数のＣＰＵコアに対して、割り込み要求(ＩＲＱ)を送信する(Ｓ１０１)。
【００６１】
共通割込み制御部１６から割り込み要求を受信した場合、予備系側のＯＳ１１０上において動作するドライバ管理部１１５は、ＨＷタイマー１７を設定する（Ｓ１０２）。
また、共通割込み制御部１６から割り込み要求を受信した場合、主系側のＯＳ１２０は、割込みハンドラを用いてＤＭＡ転送完了割り込みスレッド１２９に対して割り込みを出力する。そして、ＤＭＡ転送完了割り込みスレッド１２９は、音声データのＤＭＡ転送完了割り込みをトリガとして動作し、ＤＭＡ転送完了割り込みスレッド１２９内において音声データの音声ミキシング処理及びＤＭＡ転送開始要求処理が行われる。
【００６２】
ミキシング終了処理時間が経過することでＨＷタイマー１７がタイムアウトした場合には、ＨＷタイマー１７は、予備系側のドライバ管理部１１５に対してタイマー割り込みを出力する（Ｓ１０４）。タイマー割り込みを受信した予備系側のドライバ管理部１１５は、Ｉ２Ｓデバイス１３に対してＦＩＦＯ境界割り込み開始要求を行う（Ｓ１０５）。すなわち、ＨＷタイマー１７のタイムアウトをトリガとして、Ｉ２Ｓデバイス１３からのＦＩＦＯ境界割り込みを許可する。尚、ＨＷタイマー１７がタイムアウトするよりも前に、ＤＭＡ転送完了割込みスレッド１２９がミキシング処理を完了してタイマーを解除した場合には、タイマー割込みとＦＩＦＯ境界割込みは発生しない。タイマーの解除後、ＤＭＡ転送完了割込みスレッド１２９は、ＤＭＡ転送開始要求を行う。
【００６３】
ＦＩＦＯ境界割り込み開始要求を受信したＩ２Ｓデバイス１３は、予備系側のドライバ管理部１１５に対してＦＩＦＯ境界割り込みの出力を開始する（Ｓ１０６）。そして、ＦＩＦＯ境界割り込みを受信した予備系側のドライバ管理部１１５は、ＤＭＡ転送用バッファ４４に格納されている音声データのサンプル数を取得して、取得したサンプル数が閾値に達しているか否かを判定する。
【００６４】
判定の結果、サンプル数が閾値に達している場合には、ドライバ管理部１１５は、主系側のドライバコア１２７が正常に動作して音声ミキシング処理を行っているため、予備系のドライバコア部１１４への動作の切り替えは行わない。一方で、サンプル数が閾値に達していない場合には、主系側のドライバコア部１２７が正常に動作していないため、ドライバ管理部１１５は、予備系のドライバコア部１１４への動作の切り替えを行う。具体的には、ドライバ管理部１１５は、予備系側のドライバコア部１１４に対して音声ミキシング処理の開始を要求する。これにより、予備系側のドライバコア部１１４が、音声ミキシング処理を開始する。
【００６５】
音声ミキシング処理が正常に終了した場合、主系側のドライバコア部１２７は、ＦＩＦＯ境界割り込み停止要求をＩ２Ｓデバイス１３に対して出力する(Ｓ１０７)。Ｉ２Ｓデバイス１３は、ＦＩＦＯ境界割り込み停止要求の出力を受けると、ＦＩＦＯ境界割り込みの出力を停止する。
【００６６】
尚、予備系のドライバコア部１１４への動作が切り替えられた場合には、予備系のドライバコア部１１４は、Ｉ２Ｓデバイス１３に対してＦＩＦＯ境界割り込み停止要求を出力する。Ｉ２Ｓデバイス１３は、ＦＩＦＯ境界割り込み停止要求の出力を受けると、ＦＩＦＯ境界割り込みの出力を停止する。そして、予備系のドライバコア部１１４は、主系側のＯＳ１２０が動作不能となったところから、音声データの音声ミキシング処理を引き継いで行う。
【００６７】
図５は、本発明に関連する技術（特願２００９−２６２５４５）の動作シーケンス図である。ここでは、正常に動作している主系側のＯＳ１２０が、ＤＭＡ転送完了割り込みを受信した後の処理について説明する。尚、特願２００９−２６２５４５に開示されるマルチコアシステムは、本実施の形態に係るマルチコアシステムと略同様の構成を有しているが、ＨＷタイマーを利用しておらず、予備系側のドライバ管理部が有する機能が異なっている。また、図５において示すＳ２０１の処理は図４で示したＳ１０１での処理と同一であるため、ここではその説明を省略する。
【００６８】
共通割込み制御部１６から割り込み要求を受信した場合、予備系側のドライバ管理部は、Ｉ２Ｓデバイス１３に対してＦＩＦＯ境界割り込み開始要求を行う（Ｓ２０２）。すなわち、共通割込み制御部１６からの割り込み要求の受信をトリガとして、Ｉ２Ｓデバイス１３からのＦＩＦＯ境界割り込みを許可する。
【００６９】
また、共通割込み制御部１６から割り込み要求を受信した場合、主系側のＯＳ１２０は、割込みハンドラを用いてＤＭＡ転送完了割り込みスレッド１２９に対して割り込みを出力する。そして、ＤＭＡ転送完了割り込みスレッド１２９内において音声データの音声ミキシング処理及びＤＭＡ転送開始要求処理が行われる。
【００７０】
ＦＩＦＯ境界割り込み開始要求を受信したＩ２Ｓデバイス１３は、予備系側のドライバ管理部に対してＦＩＦＯ境界割り込みの出力を開始する（Ｓ２０４）。予備系側のドライバ管理部は、ＤＭＡ転送用バッファ４４に格納されている音声データのサンプル数が、閾値に達しているか否かを判定し、判定結果に応じて、予備系のドライバコア部への動作の切り替えを行う。
【００７１】
音声ミキシング処理が終了した場合、主系側のドライバコア部１２７は、ＦＩＦＯ境界割り込み停止要求をＩ２Ｓデバイス１３に対して出力する(Ｓ２０５)。Ｉ２Ｓデバイス１３は、ＦＩＦＯ境界割り込み停止要求の出力を受けると、ＦＩＦＯ境界割り込みの出力を停止する。
【００７２】
続いて、図６及び７を参照して、本発明に関連する技術に対する、本実施の形態の効果について説明する。
図６及び７では、マルチコアシステム１の動作スペックとして、音声サンプリング周波数が約４８０００Ｈｚ（実際の値は、１／（０．００００１８７５）＝５３３３３．３３Ｈｚ）であり、Ｉ２Ｓアンダーランエラー発生時間が１２００μｓであり、音声ミキシング処理時間が６５０μｓであり、ＤＭＡ転送単位が１０２４サンプルである場合に決定される閾値の一例を示している。約４８０００Ｈｚという値は、ＭＰＥＧ(Moving Picture Experts Group)動画における音声出力等で使用される周波数である。また、この例では、ＨＷタイマー１７がタイムアウトする時間は５５０μｓ（１２００μｓ−６５０μｓ）である。
【００７３】
また、図６及び７では、ＦＩＦＯバッファ１３１は、段数が３２段であり、４段分のデータを送出するのに１５０μｓ(１段分の送出に３７．５μｓ)が必要な場合を例示している。ここで、１段に１サンプルの音声データが格納されている。また、ミキシングされた音声データのサイズが４ｂｙｔｅであるものとする。つまり、ＦＩＦＯバッファ１３１に格納されている音声データが３２(４ｂｙｔｅ×８段)バイト減少する毎に、ＦＩＦＯ境界割り込みが発生する場合について例示している。
【００７４】
図６及び７において、「ＦＩＦＯ境界割り込み回数」は、ＤＭＡ転送完了割り込みの受信時を起点とした割り込みの回数を示す。また、「ＦＩＦＯ境界割り込みが発生する時間」は、ＤＭＡ転送完了割り込みの受信時を起点とした時間を示す。尚、閾値は、ＦＩＦＯバッファ１３１に格納されている音声データのサンプル数と、音声サンプリング周波数から算出可能である。
【００７５】
図６に示す閾値の例について説明する。例えば、２回目のＦＩＦＯ境界割り込みが発生した場合、ＦＩＦＯバッファ１３１の残りサンプル数は１２サンプルである（すなわち、１２サンプルが送出される）。このため、１５０μｓ（残り１２サンプルを１５０μｓで）が経過するとＩ２Ｓアンダーランエラーが発生すると算出することができる。ここで、１５０μｓの余裕を持ってＤＭＡ転送単位のサンプル数の音声データのミキシングが完了していることを期待値とした場合、２回目のＦＩＦＯ境界割り込みが発生した時点で、ＤＭＡ転送用バッファ４４には１８サンプルの音声データが格納されている必要がある。このため、閾値を「１８」としている。
【００７６】
予備系側のドライバ管理部１１５は、例えば、ＦＩＦＯバッファ１３１の残りサンプル数や音声サンプリング周波数から閾値を算出する計算式や、ＦＩＦＯバッファ１３１の残りサンプル数から閾値を特定する図６に示したテーブルなどを参照可能となるように構成することで、閾値を特定可能とする。この計算式又はテーブルは、例えば、ドライバ管理部１１５自身や、ＯＳ間共有メモリ４０が有することで、ドライバ管理部１１５が参照可能とする。
【００７７】
図６及び図７に示すように、本発明に関連する技術（図７）ではＦＩＦＯ境界割り込みの発生回数が７回となるのに対して、本実施の形態（図６）では４回に留まる。すなわち、本発明に関連する技術に比べて、本実施の形態によれば、ＦＩＦＯ境界割り込みの発生回数を少なくすることができる。従って、予備系側のパフォーマンスへの影響を軽減することができる。
【００７８】
以上に説明した本実施の形態によれば、単一のマルチコアＣＰＵ上にそれぞれ搭載された複数のＯＳ間が、音声出力用のＩ２Ｓバスを共有するマルチコアシステムにおいて、主系側のＯＳがダウンした場合においても予備系側のＯＳからの音声出力が途切れることを回避することができる。
さらに、本実施の形態によれば、「ミキシング処理時間＜ＤＭＡ転送間隔＜（ミキシング処理時間×２）」である場合において、予備系側ＯＳのパフォーマンスを低下させずに、アプリケーションが参照可能なパラメータである音声データの再生済みサンプル数と、実際の音声データの再生済みサンプル数との誤差を最小にすることができる。
【００７９】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、ＭＰＵ１０が２つのＯＳ１１０、１２０を備えている場合を例に説明したが、本発明はこれに限定されない。すなわち、ＭＰＵ１０が３つ以上のＯＳを備えるものとしてもよい。かかる場合には、予備系側のＯＳが複数存在することになる。
【符号の説明】
【００８０】
１  マルチコアシステム、
１０  ＭＰＵ、
１１、１２  ＣＰＵ、
１３  Ｉ２Ｓデバイス、
１４  Ｉ２Ｃデバイス、
１５  ＤＭＡコントローラ、
１６  共通割り込み制御部、
１７  ＨＷタイマー、
２０  音声出力装置、
２１  ＡＤＡＣ＆ＡＭＰ、
２２  スピーカー、
３０  ＳＤＲＡＭ、
４０  ＯＳ間共有メモリ、
４１、４２、４３  サウンドキュー、
４４  ＤＭＡ転送用バッファ、
１１０、１２０  ＯＳ、
１３１  ＦＩＦＯバッファ、
１１１、１２１、１２２、１２３  アプリ、
１１２、１２５  サウンドドライバ、
１１３、１２６  上位アプリＩ／Ｆ部、
１１４、１２７  ドライバコア部、
１１５  ドライバ管理部、
１１６、１３０  サンプリングレート変換機能、
１２４  サウンドサーバ、
１２８  ソフトウェアミキサ、
１２９  ＤＭＡ転送割り込みスレッド、
２  マルチコアシステム、
６１、６２  プロセッサコア、
６３  ＤＭＡ転送用バッファ、
６４  音声出力部、
６１０、６２０  プログラム、
５０  組み込み用ＭＰＵ、
５１  ＡＵＤＩＯ  ＤＡＣ、
２１６  共通割り込み制御部、
２１７  ＨＷタイマー、
２３０  ＳＤＲＡＭ、
２４０  ＯＳ間共有メモリ、
２４１、２４２、２４３  サウンドキュー、
２４４  ＤＭＡ転送用バッファ、
３１０  ＯＳ［１］、
３１１  アプリ［１］、
３１３  上位アプリＩ／Ｆ部、
３１４  ドライバコア部、
３１５  ドライバ管理部、
３２０  ＯＳ［２］、
３２３  アプリ［４］
３２４  サウンドサーバ、
３２６  上位アプリＩ／Ｆ部、
３２７  ドライバコア部、
３２８  ソフトウェアミキサ、
３２９  ＤＭＡ転送完了割り込みスレッド、
【図１】
2011164525.tif 000003
【図２】
2011164525.tif 000004
【図３】
2011164525.tif 000005
【図４】
2011164525.tif 000006
【図５】
2011164525.tif 000007
【図６】
2011164525.tif 000008
【図７】
2011164525.tif 000009
【図８】
2011164525.tif 000010
【図９】
2011164525.tif 000011
【図１０】
2011164525.tif 000012
【図１１】
2011164525.tif 000013
【図１２】
2011164525.tif 000014