[go: up one dir, main page]

JP5382133B2 - マルチコアシステム、マルチコアシステムの制御方法及びプログラム - Google Patents

マルチコアシステム、マルチコアシステムの制御方法及びプログラム Download PDF

Info

Publication number
JP5382133B2
JP5382133B2 JP2011541787A JP2011541787A JP5382133B2 JP 5382133 B2 JP5382133 B2 JP 5382133B2 JP 2011541787 A JP2011541787 A JP 2011541787A JP 2011541787 A JP2011541787 A JP 2011541787A JP 5382133 B2 JP5382133 B2 JP 5382133B2
Authority
JP
Japan
Prior art keywords
program
dma transfer
data
audio data
synthesized
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011541787A
Other languages
English (en)
Other versions
JPWO2011061878A1 (ja
Inventor
賢太郎 笹川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011541787A priority Critical patent/JP5382133B2/ja
Publication of JPWO2011061878A1 publication Critical patent/JPWO2011061878A1/ja
Application granted granted Critical
Publication of JP5382133B2 publication Critical patent/JP5382133B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • G11B27/034Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10629Data buffering arrangements, e.g. recording or playback buffers the buffer having a specific structure
    • G11B2020/10638First-in-first-out memories [FIFO] buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10675Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10675Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control
    • G11B2020/1074Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control involving a specific threshold value
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10814Data buffering arrangements, e.g. recording or playback buffers involving specific measures to prevent a buffer underrun

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Circuit For Audible Band Transducer (AREA)
  • Communication Control (AREA)

Description

本発明は、マルチコアシステム、マルチコアシステムの制御方法及びプログラムに関する。

複数のCPU(Central Processing Unit)コアを内蔵したマルチコアで構成された組み込み用途向けのプロセッサ(MPU:Micro Processing Unit)が開発されている。これらのプロセッサは、周辺デバイスも含めてワンチップ化されている。マルチコアCPU上において、異なる複数のOS(Operating System)を動作させる技術が知られている。また、MPUの機能として、単一の割り込み要求(IRQ:Interrupt ReQuest)を、複数のCPUコアへと通知する手段が知られている。さらに、MPUは、レジスタ設定に基づいて、どの割り込み要求をどのCPUコアに対して割り当てるかを設定することができる。
また、例えば、図8に示すように、MPU50内部のCPUからADAC(Audio DAC)51に対して、I2S(Inter-IC Sound)バスを経由して、音声データを転送する技術が知られている。音声データは、例えば、PCM(Pulse Code Modulation)音声である。なお、I2Sは、音声データのインターフェイスデバイスを構成する、PHILIPS(登録商標)社製のシリアル通信フォーマットである。I2S規格では、PCM音声や圧縮音声(μ−lawやADPCMなど)を、I2Sバスを経由してADAC51に出力することができる。また、図8において、I2C(Inter-Integrated Circuit)バスは、PHILIPS(登録商標)社で開発されたデバイス制御用のシリアルバスである。ADAC51は、音声データをステレオ音声に変換する。DACは、D/Aコンバータである。ADAC51から出力されるアナログ音声(ステレオ)が、スピーカーにおいて再生される。
また、FIFO(First In First Out)バッファを備えるI2Sデバイスが知られている。このようなI2Cデバイスは、FIFOバッファに格納される音声データをデキューしてI2Sバスを経由してADACに出力する。そして、FIFOバッファからデキューされて減少したデータのサイズが4、8、16、32バイト等の境界に達した場合、割り込み(以下、「FIFO境界割り込み」とする)を発生させることが可能なI2Sデバイスがある。一般的に、この割り込みは、PIO(Programmed Input/Output)転送に使用される。
本願の出願人は、先に出願した特願2009−190103において、単一のマルチコアCPU上で複数のOSを動作させる技術を開示している。この技術は、それら複数のOSでI2Cデバイスを共有する場合に、I2Sデバイスを制御するOSがカーネルパニック又はフリーズ等によって動作不能となっても、他のOSでI2Cデバイスを制御することができる。これにより、簡易な構成で音切れの発生を防止することができる。
ここで、図9を参照して、特願2009−190103に開示の技術について説明する。図9Aは、音声データ及び処理の流れを示している。主系側のOSは、DMA転送完了割り込みをトリガーとして動作し、音声データの音声ミキシング処理及びDMA転送要求処理を行う。これにより、音声ミキシング処理後の音声データがFIFOに対してDMA転送される。
しかし、主系側のOSが動作不能となった場合には、一定の時間内にDMA転送要求処理が行われなくなる。そのため、I2Sアンダーランエラーが発生する。すなわち、DMA転送間隔(DMA転送完了割り込みの発生からI2Sアンダーランエラーが発生するまでの時間を示す)が一定時間を超えた場合には、FIFOが空となって音切れが発生する。
そこで、この技術では、I2Sデバイスに含まれるFIFOに対して音声データのDMA転送が行われた後に、複数のOSでDMA(Direct Memory Access)転送割り込みを受信するようにしている。予備系側のOSは、DMA転送完了割り込みをトリガーとして動作し、HW(Hard Ware)タイマーを設定する。また、主系側のOSは、音声データの音声ミキシング処理及びDMA転送要求処理を行って、HWタイマーを解除するようにしている。これにより、主系側のOSが動作不能となったことを、HWタイマーのタイムアウトによって検出可能としている。そして、HWタイマーがタイムアウトした場合、主系側のOSが動作不能となっていることになる。そのため、主系側のOSから予備系側のOSへと切り替えて、音声ミキシング処理及びDMA転送要求処理を継続する。これにより、FIFOバッファが空になって音切れが発生することを防止している。
このように、この技術では、主系側のOSの動作不能を検出した予備系側のOSが、主系側のOSに代わって音声ミキシング処理等を継続して行うものである。また、この技術は、I2Sアンダーランエラーが発生しないようにするため、音声ミキシング処理等を行うDMA転送割り込みスレッドの処理方法を、DMA転送完了割り込みの受信に応じて選択することができるようにしている。
具体的には、音声ミキシング処理時間とDMA転送間隔(≒I2Sアンダーランエラー発生時間)の大小関係に応じて、パターンA、Bのいずれかの処理方法を選択するようにしている。なお、音声ミキシング処理時間及びDMA転送間隔は、実装環境のスペックから算出することができる。実装環境のスペックとは、例えば、I2SデバイスのFIFOバッファの段数、音声サンプリング周波数、DMA転送サイズ及びCPUクロック等である。
図9Bを参照して、パターンA、Bの選択条件について説明する。図9Bは、パターンA、Bの選択条件における音声ミキシング処理時間とI2Sアンダーランエラー発生時間の関係を示す。
選択条件「DMA転送間隔>(音声ミキシング処理時間×2)」を満たす場合には、パターンAを選択する。パターンAは、音声ミキシング処理に続いて、DMA転送開始要求処理を行う。つまり、この条件に該当するときは、主系のOSによる音声ミキシング処理後のHWタイマーの解除が行われずに予備系のOSに切り替えられ、予備系のOSにより音声ミキシング処理を行った後にDMA転送を開始するものとしても、I2Sアンダーランエラー発生時間経過前にDMA転送を行うことができるからである。
選択条件「DMA転送間隔≦(音声ミキシング処理時間×2)」を満たす場合には、パターンBを選択する。パターンBは、DMA転送開始要求処理に続いて、音声ミキシング処理を行う。つまり、この条件に該当するときは、主系のOSによる音声ミキシング処理後のHWタイマーの解除が行われずに予備系のOSに切り替えられ、予備系のOSにより音声ミキシング処理を行った後にDMA転送を開始すると、I2Sアンダーランエラー発生時間経過後にDMA転送が行われることになってしまうからである。
また、パターンBに該当するときは、DMA転送開始要求処理を音声ミキシング処理よりも先に行う。そのため、図10に示すように、音声データを1パケット(DMA転送サイズ)分先読みして用意しておく。つまり、音声データがダブルバッファリングされる。しかし、パターンBでは、音声データを1パケット分先読みする。そのため、画音同期を行う動画プレーヤーで動画を再生する場合、実際に再生中の音声データと、動画プレーヤーが再生中と認識する音声データが1パケット分ずれてしまい、画音同期の精度が低下してしまうという問題があった。
ここで、図11を参照して、この問題について具体的に説明する。図11は、主系側のOSがOS72であり、予備系側のOSがOS71の場合について例示している。OS71は、ミキシング済みカウンタ712を有する。OS72は、ミキシング済みカウンタ722を有する。まず、主系側のOS72上で動作するアプリケーションプログラム(図においては、略して「APP」として示す)721は、サウンドキュー82に音声データをエンキューする。アプリケーションプログラム721は、例えば、サンプリング周波数が48000Hzで、16bitステレオの音声を含む動画を再生する。また、アプリケーションプログラム721は、例えば、4096byte単位、かつ、(1024/48000)秒間隔で音声データを送出する。
予備系側のOS71上で動作するアプリケーションプログラム(図においては、略して「APP」として示す)711は、サウンドキュー81に音声データをエンキューする。そして、主系側のOS72上で動作するソフトウェアミキサ723は、サウンドキュー81、82からデキューした音声データをミキシングする。ソフトウェアミキサ723は、ミキシング後の音声データをDMA転送用の音声データとしてDMA転送用バッファ73に格納する。DMA転送用バッファ73に格納された音声データは、I2SデバイスのFIFO74に転送される。そして、FIFO74からデキューされた音声データはADAC75によって再生される。
このように、ソフトウェアミキサ723は、複数のアプリケーションプログラムから出力された異なるサンプリング周波数及び量子化ビット数の音声データを単一の音声データに変換する。また、ソフトウェアミキサ723は、音声データをミキシングする毎に、ミキシング済みサンプル数カウンタ722のカウンタ値を、ミキシングして生成した音声データのサンプル数分、カウントアップする。
主系側のOS72上で動作するアプリケーションプログラム721は、ミキシング済みサンプル数カウンタ722のカウンタ値を参照することで、音声データの送出間隔の計算及び画音同期を行う。つまり、アプリケーションプログラム721は、画音同期を行って動画を再生する場合、ミキシング済みの音声データのサンプル数に対応する画像を再生する。したがって、パターンBのように、音声データを1パケット分先読みしてミキシングを行う処理方法では、再生される画像が実際に出力されている音声と大きくずれてしまい、画音同期の精度が低下してしまう。
本発明の目的は、上述した課題を解決するために、画音同期の精度の低下を抑制しつつ、音切れの発生を防止することができるマルチコアシステム、マルチコアシステムの制御方法及びプログラムを提供することである。
本発明の第1の態様にかかるマルチコアシステムは、第1のプロセッサコア上で動作し、第1及び第2の音声データをミキシングして、当該ミキシングした合成音声データをDMA転送用バッファに格納する主系プログラムと、第2のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムと、前記DMA転送用バッファから転送される合成音声データを順次格納し、当該格納した合成音声データを再生する音声出力部と、を備え、前記予備系プログラムは、前記DMA転送用バッファに格納される合成音声データの格納量が、前記音声出力部に格納される合成音声データの格納量に応じて定める所定のデータ量に達していない場合、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いて実行することを特徴とする。
本発明の第2の態様にかかるマルチコアシステムの制御方法は、第1のプロセッサコア上で動作し、第1及び第2の音声データをミキシングして、当該ミキシングした合成音声データをDMA転送用バッファに格納する主系プログラムと、第2のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムと、前記DMA転送用バッファから転送される合成音声データを順次格納し、当該格納した合成音声データを再生する音声出力部と、を備えたマルチコアシステムの制御方法であって、前記DMA転送用バッファに格納される合成音声データの格納量が、前記音声出力部に格納される合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定するステップと、前記所定のデータ量に達していると判定した場合に、前記予備系プログラムが、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いて実行するステップと、を備えることを特徴とする。
本発明の第3の態様にかかるプログラムは、転送されてくる合成音声データを順次格納し、当該格納した合成音声データを再生する音声出力部に対して転送される合成音声データを格納するDMA転送用バッファに、第1及び第2の音声データをミキシングした合成音声データを格納する主系プログラムとは異なるプロセッサコア上で、当該主系のプログラムの予備系として動作する予備系のプログラムであって、前記DMA転送用バッファに格納される合成音声データの格納量が、前記音声出力部に格納される合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定するステップと、前記所定のデータ量に達していると判定した場合に、前記予備系プログラムが、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いて実行するステップと、を前記プロセッサコアに実行させることを特徴とする。
上述した本発明の各態様により、画音同期の精度の低下を抑制しつつ、音切れの発生を防止することができるマルチコアシステム、マルチコアシステムの制御方法及びプログラムを提供することができる。
本発明の実施の形態にかかるマルチコアシステムのハードウェア構成の概要を示すブロック図である。 本発明の実施の形態にかかるマルチコアシステムのハードウェア構成を示すブロック図である。 本発明の実施の形態にかかるマルチコアシステムの機能構成を示すブロック図である。 本発明の実施の形態にかかるFIFO境界割り込み回数と閾値との関係を示す図である。 本発明の実施の形態にかかる主系側のOSが正常に動作している状態での、音声ミキシング処理及びDMA転送処理を説明するシーケンス図である。 本発明の実施の形態にかかる主系側のOSが動作不能となった状態での、音声ミキシング処理及びDMA転送処理を説明するシーケンス図である。 本発明の実施の形態にかかるサウンドキューに関するパラメータを説明するための図である。 本発明に関連する技術を説明するための図である。 本発明に関連する技術の音声データ及び処理の流れを示す図である。 本発明に関連する技術の音声データ及び処理の流れを示す図である。 本発明に関連する技術の音声ミキシング処理及びDMA転送開始要求処理の処理方法を説明するための図である。 本発明に関連する技術の画音同期の精度が低下してしまうという問題を説明するための図である。
まず、図1を参照して、本発明の実施の形態にかかるマルチコアシステムの概要について説明する。図1は、本実施の形態にかかるマルチコアシステムのハードウェア構成の概要を示すブロック図である。
マルチコアシステム2は、プロセッサコア61、62と、DMA転送用バッファ63と、音声出力部64と、を備える。
プロセッサコア61は、主系として動作するプログラム610を動作させる。
プロセッサコア62は、予備系として動作するプログラム620を動作させる。
DMA転送用バッファ63は、プログラム61、62がミキシングした合成音声データを格納する。
音声出力部64は、DMA転送用バッファ63から転送される合成音声データを順次格納し、格納した合成音声データを再生する。
プログラム610は、第1及び第2の音声データをミキシングして、ミキシングした合成音声データをDMA転送用バッファ63に格納する。プログラム61は、主系として動作するプログラムである。
プログラム620は、主系プログラムの予備系として動作する。
続いて、本発明の実施の形態にかかるマルチコアシステムの処理の概要について説明する。
主系のプログラム610は、第1及び第2の音声データをミキシングして、ミキシングした合成音声データをDMA転送用バッファ63に格納する。そして、DMA転送用バッファ63に格納された合成音声データが一定のデータ量に達したときに、DMA転送用バッファ63に格納された合成音声データが音声出力部64に転送される。音声出力部64は、DMA転送用バッファ63から転送された合成音声データを順次格納し、当該格納した合成音声データを再生する。
予備系のプログラム620は、DMA転送用バッファ63に格納される合成音声データの格納量が、音声出力部64に格納される合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定する。そして、所定のデータ量に達していない場合、主系プログラムが610実行していた合成音声データのミキシング及び格納を引き継いて実行する。
続いて、図2及び図3を参照して、本発明の実施の形態にかかるマルチコアシステムの構成について説明する。図2は、本実施の形態にかかるマルチコアシステムのハードウェア構成を示すブロック図である。
図2に示すように、マルチコアシステム1は、組み込み用のMPU10と、音声出力装置20と、SDRAM(Synchronous Dynamic Random Access Memory)30と、を備えている。SDRAMは、外部共有メモリとして機能する。
MPU10は、マルチコアCPUと、周辺デバイス(I2Sデバイス13、I2Cデバイス14、DMAC15)とがワンチップ化されたIC(Integrated Circuit)である。CPU11、12は、それぞれ1つ又は複数のCPUコアを含む。例えば、4つのCPUコアを有するマルチコアCPUのうち、CPU11はCPUコア1つを含み、CPU12はCPUコア3つを含む。また、CPU11、12は、複数のマルチコアCPUから構成されるようにしてもよい。CPUコアは、プロセッサコア61、62に相当する。
MPU10は、マルチコアCPU上において、複数のOSを動作させる。OS110がCPU11上において動作する。OS120がCPU12上において動作する。なお、OS110とOS120は異なる種類のOSである。例えば、OS110をμITRON等のリアルタイムOSとし、OS120は高機能組み込みOSとする組み合わせが考えられる。高機能組み込みOSとは、例えば、組み込みLinux(登録商標)やWindows CE(登録商標)等である。
OS110上において、アプリケーションプログラム111(図においては、略して「APP」として示す)、及びデバイスドライバであるサウンドドライバ112が動作する。アプリケーションプログラム111から出力された音声データが、サウンドドライバ112へと入力される。また、OS120上において、アプリケーションプログラム121、122、123(図においては、略して「APP」としてそれぞれ示す)、サウンドサーバ124、及びデバイスドライバであるサウンドドライバ125が動作する。アプリケーションプログラム121及びアプリケーションプログラム122から出力された音声データは、サウンドサーバ124へと入力される。サウンドサーバ124から出力される音声データと、アプリケーションプログラム123から出力された音声データとが、サウンドドライバ125へと入力される。
I2Sデバイス13は、I2Sバス(I2S bus)を経由して音声データをADAC&AMP21へと送信する。I2Sデバイス13は、1系統のデバイスである。I2Sデバイス13はFIFO131を備える。I2Sデバイス13は、FIFO131に音声データを格納する。ここでは、I2Sデバイス13は、音声データとして、ステレオPCMを扱う。
I2Cデバイス14は、デバイス制御用のシリアルバスである。I2Cデバイス14は、ADACが備えるレジスタへの読み書きを行うために使用される。
DMAC(DMA Contoroller)15は、MPU10の外部に接続されたSDARM30と、他のデバイス間のDMA転送を制御する。ここでは、SDRAM30上のOS間共有メモリ40から、I2Sデバイス13のFIFO131への音声データの転送を、DMAC15の1チャンネルを用いて行う。
なお、本実施の形態では、通常、OS120側のサウンドドライバ125が、音声ミキシング処理及び周辺デバイス(I2Sデバイス13、I2Cデバイス14、DMAC15)の制御を行うものとして説明する。
音声出力装置20は、ADAC&AMP21と、スピーカー22とを備えている。ADAC&AMP21は、音声出力装置20の外部インタフェースを構成する。ADAC&AMP21は、I2Sバスを経由して送信される音声データをアナログ信号に変換・増幅する。ADAC&AMP21は、アナログ信号をスピーカー22を用いて再生する。I2Sデバイス13及び音声出力装置20は、音声出力部64に相当する。
SDRAM30は、MPU10の外部にバスを介して接続される、揮発性のメモリ(RAM)である。SDRAM30には、OS間共有メモリ40として、MPU10のOSが共有するメモリ空間が確保される。
OS間共有メモリ40内には、サウンドキュー(サウンドキュー41、サウンドキュー42、サウンドキュー43)及びDMA転送用バッファ44が設定される。サウンドキューは、アプリケーションプログラムが出力した音声データを格納するリングバッファである。サウンドキューとして、音声データを出力するアプリケーションプログラムの数に相当する数のキューが作成される。ここでは、OS110のアプリケーションプログラム111と、OS120のサウンドサーバ124と、OS120のアプリケーションプログラム123とに相当する、3個のサウンドキュー(サウンドキュー41、サウンドキュー42、サウンドキュー43)が作成される。サウンドキュー(サウンドキュー41、サウンドキュー42、サウンドキュー43)の音声データが音声ミキシング処理された後に、DMA転送用バッファ44に格納される。なお、サウンドキューは、リングバッファ以外のキューイング手段を用いて構成するものとしてもよい。
図3は、本実施の形態にかかるマルチコアシステムの機能構成を示すブロック図である。図3では、図2において示したサウンドドライバ112を、上位アプリI/F部113とドライバコア部114に分割して示している。また、サウンドドライバ125を、上位アプリI/F部126とドライバコア部127に分割して示している。上位アプリI/F部113は、サンプリングレート変換機能116を有する。上位アプリI/F部126は、サンプリングレート変換機能130を有する。
上位アプリI/F部113は、アプリケーションプログラム111から出力された音声データをOS間共有メモリ40内のサウンドキュー41に格納する。このときに、上位アプリI/F部113のサンプリングレート変換機能116は、アプリケーションプログラム111から受け取った音声データに対して、サンプリングレートの変換や量子化ビット数の変換を必要に応じて行う。上位アプリI/F部113は、変換後の音声データを、OS間共有メモリ40内のサウンドキュー41へと格納する。
上位アプリI/F部126は、サウンドサーバ124とアプリケーションプログラム123とから出力された音声データをOS間共有メモリ40内のサウンドキュー42、43に格納する。このときに、上位アプリI/F部126のサンプリングレート変換機能130は、サウンドサーバ124とアプリケーションプログラム123とから受け取った音声データに対して、サンプリングレートの変換や量子化ビット数の変換を必要に応じて行う。上位アプリI/F部126は、変換後の音声データを、OS間共有メモリ40内のサウンドキュー42、43へと格納する。サンプリングレート変換機能116、130は、例えば、48kHz 23bitの音声を、44.1kHz 16bitの音声へと変換する。
ドライバコア部114、127は、OS間共有メモリ40の各サウンドキューに格納された音声データをミキシングする。ドライバコア部114、127は、音声ミキシング処理後の音声データを、DMA転送を用いてI2Sデバイス13のFIFO131へと転送する。なお、本実施の形態では、サウンドドライバ112、125の一部であって、音声ミキシング処理及びI2Sデバイス13、I2Cデバイス14の制御を行う機能部分を、ドライバコア部114、125として定義する。また、音声ミキシング処理とは、各OS上で動作する複数のアプリケーションプログラムから出力された音声データをミキシングして、単一の音声データとしてDMA転送用の領域(DMA転送用バッファ44)にコピーする処理を指す。
本実施の形態では、システム動作時に、複数のOSのうち、1つのOS(主系)のドライバコア部のみが動作する。その他のOS(予備系)のドライバコア部は、通常は待機状態となっている。予備系は、主系側のOSがカーネルパニックやフリーズ等した場合にのみ動作する。なお、主系とは、正常時に動作するドライバコア部を有するシステムを指す。予備系とは、主系側の動作不能となった時に動作するドライバコア部を有するシステムを指す。ここで、主系及び予備系とは、あくまでもサウンド再生機能(サウンドドライバの一部機能)についての主系及び予備系であり、主系OS及び予備系OSのことではない。すなわち、予備系側のOSとは、サウンド再生機能に関する予備系としての機能を備えているOSのことを指す。
ソフトウェアミキサ128は、ドライバコア部127が呼び出す関数である。ソフトウェアミキサ128は、各サウンドキューに格納された音声データをミキシングする。ソフトウェアミキサ128は、ミキシング後の音声データをDMA転送用バッファ44に格納する。
共通割り込み制御部16は、各CPUコアに対して、割り込み要求(IRQ)の割り振りを行う。共通割り込み制御部16は、基本的には、MPU10内にハードウェアの機能として備えらえる。なお、共通割り込み制御部16がMPU10内にハードウェアの機能として搭載されていない場合には、ソフトウエアの機能として実装することも可能である。
共通割込み制御部16に入力される割り込み要求は、音声データのDMA転送が完了した場合に、DMAC15が発行するDMA転送完了割り込みと、I2Sデバイス13が発行するFIFO境界割り込みである。DMA転送完了割り込みの発生から一定の時間内にDMA転送要求が無い場合には、I2Sデバイス13のFIFO131のバッファが空となり、I2Sアンダーランエラーが発生する。
ドライバ管理部115は、予備系側のOSの割り込みハンドラが呼び出す関数群である。ドライバ管理部115は、HWタイマー17の設定、FIFO境界割り込みのON/OFFの設定や、主系のドライバコア部を用いた動作を予備系のドライバコア部を用いた動作へと切り替える切り替処理を行う。なお、ここでは、HWタイマー17は、MPU10が備えるハードウェアタイマーを指す。
続いて、本発明の実施の形態にかかるマルチコアシステムの動作を概略的に説明する。
SDRAM30からFIFO131に対してDMA転送が行われた後に、複数のOS110、120がDMA転送完了割り込みを受信する。主系側のOS120が正常に動作している場合には、受信したDMA転送完了割り込みが、DMA転送完了割り込みスレッド129に到達する。そして、DMA転送完了割り込みスレッド129は、音声データのDMA転送完了割り込みをトリガーとして動作し、音声データの音声ミキシング処理及びDMA転送要求処理を行う。そして、DMA転送用バッファ44に格納された音声ミキシング処理後の音声データが、SDRAM30からFIFO131に対してDMA転送される。
なお、音声ミキシング処理及びDMA転送開始要求処理の処理順序に関して、主系側のOS120における音声ミキシング処理時間とI2Sアンダーランエラーの関係に基づいて、パターンA又はパターンBのいずれかのパターンを選択する。
選択条件「DMA転送間隔>(音声ミキシング処理時間×2)」を満たす場合には、パターンAを選択する。そして、パターンAでは、音声ミキシング処理に続いて、DMA転送開始要求処理を行うという順序で処理が行われる。すなわち、この場合には、DMA転送開始要求処理に先立ち、音声ミキシング処理を行う。
選択条件「DMA転送間隔≦(音声ミキシング処理時間×2)」を満たす場合には、パターンBを選択する。そして、パターンBでは、DMA転送開始要求処理に続いて、音声ミキシング処理を行うという順序で処理が行われる。すなわち、この場合には、音声ミキシング処理に先立ち、DMA転送開始要求処理を行う。また、DMA転送を行う音声データの1パケット(=DMA転送サイズ)分の先読みを行うために、音声データのダブルバッファリング処理が必要となる。
また、本実施の形態では、選択条件「音声ミキシング処理時間<DMA転送間隔≦(音声ミキシング処理時間×2)」を満たす場合には、選択条件「DMA転送間隔≦(音声ミキシング処理時間×2)」を満たすときであっても、パターンAを選択する。つまり、パターンBの選択条件は、正確には、「音声ミキシング処理時間≧DMA転送間隔」かつ「DMA転送間隔≦(音声ミキシング処理時間×2)」となる。
続いて、本発明の実施の形態にかかるマルチコアシステムの主系側のOS120の監視機能について説明する。まず、選択条件「DMA転送間隔>(音声ミキシング処理時間×2)」を満たすときにパターンAを選択した場合と、パターンBを選択した場合について説明する。
この場合に予備系側のOS110がDMA転送完了割込みを受信したときは、予備系側のOS110が備える割り込みハンドラによって動作するドライバ管理部115が、HWタイマー17を設定する。そして、DMA転送完了割り込みが、主系側のOS120のDMA転送完了割り込みスレッド129に到達した場合には、DMA転送完了割り込みスレッド129が、設定したHWタイマー17を解除する。これにより、DMA転送完了割り込みが、主系側のOS120のDMA転送完了割り込みスレッド129にまで到達しなかった場合には、設定したHWタイマー17は解除されずにタイムアウトする。したがって、HWタイマー17のタイムアウトの有無に基づいて、主系側のOS120の動作不能を監視することが可能となる。
次に、選択条件「音声ミキシング処理時間<DMA転送間隔≦(音声ミキシング処理時間×2)」を満たすときにパターンAを選択した場合について説明する。
この場合に予備系側のOS110がDMA転送完了割込みを受信したときは、予備系側のOS110が備える割り込みハンドラによって動作するドライバ管理部115が、I2Sデバイス13のFIFO境界割り込みの受信を許可する。また、予備系側のOS110がFIFO境界割り込みを受信した場合、ドライバ管理部115は、DMA転送用バッファ44に格納されている音声データのサンプル数が所定の閾値に達しているか否かを判定する。判定の結果、音声データのサンプル数が、FIFO131に格納されている音声データのサンプル数から算出される所定の閾値に達していない場合、ドライバ管理部115は、主系のドライバコア部127を用いた動作を予備系のドライバコア部114を用いた動作へと切り替える切り替処理を行う。
ここで、所定の閾値とは、FIFO131に格納されている残りの音声データが全てデキューされるまでに、残りの音声ミキシング処理及びDMA転送要求処理の実行を完了させることが可能なサンプル数の音声データがDMA転送用バッファ44に格納されているかどうかを判定するための基準値である。つまり、DMA転送用バッファ44に格納されている音声データのサンプル数が、所定の閾値に達している場合は、その時点から残りの音声ミキシング処理及びDMA転送要求処理を実行しても、I2Cアンダーランエラーが発生しないことになる。
FIFO131に格納される音声データのサンプル数は、例えば、FIFO131のレジスタを参照することによって特定することができる。また、FIFO境界割り込みが発生した回数によって、FIFO131からデキューされた音声データのサイズが分かる。さらに、そのサイズによってFIFO131からデキューされた音声データのサンプル数が分かる。そのため、FIFO境界割り込みが発生した回数から、FIFO131に格納されている音声データのサンプル数を算出するようにしてもよい。
ここで、予備系のドライバコア部114に動作を切り替えた場合、予備系のドライバコア部114は、主系側のドライバコア部127が途中まで行った音声ミキシング処理を引き継いで実行する。予備系のドライバコア部114は、DMA転送用バッファ44に格納される音声データのサンプル数を参照することで、主系側のドライバコア部127がミキシングした音声データのサンプル数を特定することができる。これにより、サウンドキュー41、42、43に格納される音声データのうちから、引き継いでミキシングを開始する音声データを特定することができる。なお、DMA転送用バッファ44に格納される音声データのサンプル数は、ソフトウェアミキサ128がOS間共有メモリ40にその値を格納しておくことによって特定することができるようにしてもよく、DMA転送用バッファ44に格納されている音声データのサンプル数を数えることによって特定することができるようにしてもよい。
続いて、図4を参照して、閾値の一例について説明する。図4は、FIFO境界割り込み回数と閾値との関係を示す図である。
図4は、マルチコアシステム1の動作スペックとして、音声サンプリング周波数が約48000Hzであり、I2Sアンダーランエラー発生時間が1200μsであり、音声ミキシング処理時間が700μsであり、DMA転送単位が1024サンプルである場合に決定される閾値の一例を示す図である。約48000Hzという値は、MPEG(Moving Picture Experts Group)動画における音声出力等で使用される周波数である。FIFO131は、段数が64段であり、8段分のデータを送出するのに150μs(1段分の送出に1/約48000Hz≒18.75μs)が必要な場合について例示している。ここで、1段に1サンプルの音声データが格納されている。また、ミキシングされた音声データのサイズが4byteであるものとする。つまり、FIFO131に格納される音声データが32(4byte×8段)バイト減少する毎に、FIFO境界割り込みが発生する場合について例示している。
図4の「FIFO境界割り込み回数」は、DMA転送完了割り込みの受信時を起点とした割り込みの回数を示す。また、「FIFO境界割り込みが発生する時間」は、DMA転送完了割り込みの受信時を起点とした時間を示す。なお、閾値は、FIFO131に格納される音声データのサンプル数と、音声サンプリング周波数から算出可能である。
例えば、7回目のFIFO境界割り込みが発生した場合、FIFO131の残りサンプル数は8サンプルである。したがって、8サンプルが送出される150μsが経過するとI2Sアンダーランエラーになると算出することができる。ここで、150μsの余裕をもってDMA転送単位のサンプル数の音声データのミキシングが完了していることを期待値とした場合、7回目のFIFO境界割り込みが発生した時点で、DMA転送用バッファ44に1024サンプルの音声データが格納されている必要がある。この場合、図4に示すように、閾値を「1024」とする。
ドライバ管理部115は、例えば、FIFO131の残りサンプル数や音声サンプリング周波数から閾値を算出する計算式や、図4に示すようにFIFO131の残りサンプル数から閾値を特定するテーブルを参照することができるようにすることで閾値を特定可能とする。この計算式又はテーブルは、例えば、ドライバ管理部115や、OS間共有メモリ40が有することで、ドライバ管理部115が参照可能とする。
続いて、図5及び図6を参照して、主系側のOS120の動作不能を検出した場合における、ドライバコア部の切り替え動作について説明する。まず、図5を参照して、主系側のOS120が正常に動作している場合において、DMA転送完了割り込みを受信した後の処理について説明する。図5は、主系側のOS120が正常に動作している状態での、音声ミキシング処理及びDMA転送処理を説明するシーケンス図である。なお、FIFO境界割り込みは、図3に示すように共通割り込み制御部16を経由してドライバ管理部115に出力されるが、図5及び図6ではその点について省略して記載している。
まず、DMA転送完了割り込みをMPU10が受信した場合には、共通割り込み制御部16は、複数のCPUコアに対して、割り込み要求(IRQ)を送信する(S101)。
次に、予備系側のOS110上において動作するドライバ管理部115は、共通割込み制御部16から割り込み要求(IRQ)を受信すると、FIFO境界割り込み開始要求をI2Sデバイス13に出力する(S102)。I2Sデバイス13は、FIFO境界割り込み開始要求の出力を受けると、FIFO境界割り込みの出力を開始する。
次に、ドライバ管理部115は、FIFO境界割り込みの出力を受けると、DMA転送用バッファ44に格納される音声データのサンプル数を取得する。ドライバ管理部115は、取得したサンプル数が閾値に達しているか否かを判定する(S103)。ドライバ管理部115は、サンプル数が閾値に達している場合、主系側のドライバコア127が正常に動作して音声ミキシング処理を行っているため、予備系のドライバコア部114への動作の切り替えは行わない。
次に、主系側のドライバコア部127は、音声ミキシング処理が正常に終了した場合、FIFO境界割り込み停止要求をI2Sデバイスに出力する(S104)。I2Sデバイス13は、FIFO境界割り込み停止要求の出力を受けると、FIFO境界割り込みの出力を停止する。
次に、図6を参照して、主系側のOS120が動作不能となった場合に、予備系側のOSを用いて、音声ミキシング処理及びDMA転送処理を継続して行う処理について説明する。図6は、主系側のOS120が動作不能となった状態での、音声ミキシング処理及びDMA転送処理を説明するシーケンス図である。なお、図6において示すS201及びS202での処理は図5で示したS101及びS101での処理と同一であるため、ここではその説明を省略する。
ドライバ管理部115は、FIFO境界割り込みの出力を受けると、DMA転送バッファに格納される音声データのサンプル数を取得する。ドライバ管理部115は、取得したサンプル数が閾値に達しているか否かを判定する(S203)。ここで、図6において、主系側のOS120が動作不能となった場合には、音声ミキシング処理が行われなくなり、サンプル数が閾値に達しなくなる。ドライバ管理部115は、サンプル数が閾値に達していない場合、主系側のドライバコア部127が正常に動作していないため、予備系のドライバコア部114への動作の切り替えを行う。具体的には、ドライバ管理部115は、予備系側のドライバコア部114に対して音声ミキシング処理の開始を要求する。これにより、予備系側のドライバコア部114が、音声ミキシング処理を開始する。
予備系のドライバコア部114は、動作の切り替え後、I2Sデバイスに対してFIFO境界割り込み停止要求を出力する(S204)。I2Sデバイス13は、FIFO境界割り込み停止要求の出力を受けると、FIFO境界割り込みの出力を停止する。そして、予備系のドライバコア部114は、主系側のOS120が動作不能となったところから、音声データの音声ミキシング処理を引き継いで行う。
ここで、図7を参照して、主系側のOS120が動作不能となったところから、音声データの音声ミキシング処理を引き継いで行う処理について具体的に説明する。
図7に示すように、本実施の形態では、各サウンドキュー(リングバッファ)に対して、一般的なリングバッファのパラメータ(front、rear)に加えて、パラメータfront2を追加する。ここで、frontは、主系側のドライバコア部127が使用する、デキュー用のパラメータである。また、rearは、各OSの上位アプリI/F部126、113が使用する、エンキュー用のパラメータである。また、front2は、予備系側のドライバコア部114が使用する、デキュー用のパラメータである。
パラメータfront2は、音声ミキシング処理中に主系側のOS120が動作不能となってしまった場合に、音声データの整合性を保つために使用する。例えば、予備系側のOS110が待機している時に、主系側のドライバコア部127が、DMA転送開始要求後に、I2Sデバイス13のFIFO131における最初のフル割り込みの発生をトリガーとして、DMA転送の転送回数分、front2をカウントする。なお、front2のカウント方法としてはこれに限定されず、より簡易的な方法を用いてもよい。例えば、主系側のDMA転送完了割り込みスレッドが、スレッドの出口においてfront2をカウントする構成としてもよい。つまり、I2Sデバイス13のFIFO131におけるフル割り込みを禁止して実施してもよい。
主系側のOS120が正常に動作している場合には、DMA転送完了割り込みスレッド129は、frontを用いて示す位置からの音声データ(図7において斜線を用いて示す部分)をデキューする。このデキュー処理は、frontを用いてカウントされる。つまり、音声データをデキューする毎に、デキューした音声データのサンプル数分、frontをカウントしていく。次いで、主系側のドライバコア部127が、呼び出したソフトウェアミキサ関数を用いて、サウンドキューから出力された複数の音声データの音声ミキシング処理を行う。次いで、DMA転送用バッファ44に格納された音声ミキシング処理後の音声データが、SDRAM30からI2Sデバイス13のFIFO131へとDMA転送される。ここでは、このDMA転送回数が、front2を用いてカウントされる。つまり、DMA転送する毎に、DMA転送された音声データのサンプル数分、front2をカウントしていく。
したがって、主系側のOS120が正常に動作している場合には、frontとfront2を同じ位置から開始させた後に、front2はfrontに追従して変化する。これに対して、主系側のOS120が動作不能となってしまった場合には、音声データのデキューが途中で停止し、frontのカウントが停止する。また、主系側のOS120)が動作不能になることでDMA転送が行われなくなるために、front2についてもカウントが停止し、front2の位置は更新されない。
ここで、図7に示すように、主系側のOS120が動作不能となって、front及びfront2が停止した場合に、切り替えた予備系側のドライバコア部114が、呼び出したソフトウェアミキサ関数を用いて、frontが示す位置から音声データのデキューを開始した状況を想定する。この状況において、frontを用いて示す位置から音声データのデキューを開始すると、欠損している可能性のある音声データをデキューすることになり、音声データの整合性を保証することができない。このため、主系側のOS120が動作不能となって、front及びfront2が停止した場合に、切り替えた予備系側のドライバコア部114が、呼び出したソフトウェアミキサ関数を用いて、front2が示す位置から音声データのデキューを開始する。このようにすることで、主系側のOS120が動作不能となるよりも前の音声データからデキューを開始することができるため、切り替えの前後での音声データの整合性を保証することができる。
ここで、選択条件「音声ミキシング処理時間<DMA転送間隔≦(音声ミキシング処理時間×2)」を満たしてパターンAを選択している場合には、DMA転送用バッファ44を参照して、DMA転送用バッファ44に格納されている音声データのサンプル数を−1したサンプル数分、front2をカウントする。そして、front2が示す位置から音声データのデキューを開始する。
ここで、DMA転送用バッファ44に格納されている音声データのうち、欠損している可能性のある音声データは、主系側のドライバコア部127が最後に音声ミキシングして格納していた音声データとなる。したがって、このように、予備系側のドライバコア部114において、主系側のドライバコア部127が最後に音声ミキシングして格納していた音声データから音声ミキシング処理を引き継いで実行するようにすることで、切り替えの前後での音声データの整合性を保証することができる。つまり、予備系側のドライバコア部114は、サウンドキュー41、42、43の位置のうち、DMA転送用バッファ44に格納されている音声データの格納量が示す位置よりも少なくとも1サンプル前の位置から、音声ミキシング処理を引き継いで実行する。
また、このように、予備系側のドライバコア部114において、音声ミキシング処理を引き継いで実行するようにすることで、主系側から予備系側への切り替えの前後を通じての音声ミキシング処理時間を、ほぼ1回分の音声ミキシング処理時間とすることができる。そのため、「音声ミキシング処理時間<DMA転送間隔≦(音声ミキシング処理時間×2)」の条件となる場合にパターンAを選択しても、I2Sアンダーランエラーを発生させることなく、主系側から予備系への切り替えを行うことができる。
また、予備系側のOS110へと切り替えた場合に、新しく主系側となった予備系側のドライバコア部114が音声ミキシング処理を行っている最中には、主系側であったドライバコア部127からのDMAレジスタアクセスを禁止することで、音声データの整合性を保証する。例えば、主系側のOS120が認識している共有メモリ(SDRAM30)上の周辺デバイス(I2Sデバイス13、DMAC15)のベースアドレスを、予備系側のドライバ管理部110が一時的に、SDRAM30上において未使用領域等の無効アドレスに変更する。これによって、切り替え前に主系であったOS120がレジスタへとアクセスすることを禁止することができる。
以上に説明した本実施の形態によれば、複数のOS間で音声出力のI2Sバスを共有する構成において、片方のOSの動作が停止した場合においても、もう片方のOS側からの音声出力が途切れることを防止することができる。そのときに、「音声ミキシング処理時間<DMA転送間隔≦(音声ミキシング処理時間×2)」となる場合であっても、画音同期の精度が低下しないパターンAによって主系から予備系への切り替えを可能としている。そのため、画音同期の精度の低下を抑制しつつ、音切れの発生を防止することができる。
また、本実施の形態によれば、予備系でFIFO境界割り込みを受信したときの主系から予備系への切り替えの要否の判定は、OS間共有メモリに格納される音声データのサンプル数を参照するだけで可能である。そのため、処理速度を低下させることがない。
また、本実施の形態では、FIFO境界割り込みを許可している期間も、数十ms毎のDMA転送サイクルのうちの数百μsオーダーの期間である。そのため、予備系側でのパフォーマンスへの影響は非常に少ない。
また、本実施の形態では、サウンドドライバを上位アプリI/F部とドライバコア部に分離しており、サンプリングレート変換機能を上位アプリI/F部に有するようにしている。したがって、主系側のドライバコア部のみが動作不能となった場合であっても、主系の上位アプリI/F部におけるサンプリングレート変換処理を継続することができる。そのため、予備系のドライバコア部に音声ミキシング処理の実行を切り替えることで、主系側のOSで生成される音声データも継続して再生することが可能である。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、MPU10が2つのOS110、120を備えている場合を例に説明したが、本発明はこれに限定されない。すなわち、MPU10が3つ以上のOSを備えるものとしてもよい。かかる場合には、予備系側のOSが複数存在することになる。
上述した主系又は待機系における動作を実行するプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
この出願は、2009年11月18日に出願された日本出願特願2009−262545を基礎とする優先権を主張し、その開示の全てをここに取り込む。
1 マルチコアシステム
10、50 MPU
11、12 CPU
13 I2Sデバイス
14 I2Cデバイス
15 DMAコントローラ
16 共通割り込み制御部
17 HWタイマー
20 音声出力装置
21、51 ADAC&AMP
22 スピーカー
30 SRAM
40 OS間共有メモリ
41、42、43、81、82 サウンドキュー
44、63、73 DMA転送用バッファ
61、62 プロセッサコア
64 音声出力部
71、72、110、120 OS
74、131 FIFO
75 ADAC
111、121、122、123、711、721 アプリ
112、125 サウンドドライバ
113、126 上位アプリI/F部
114、127 ドライバコア部
115 ドライバ管理部
116、130 サンプリングレート変換機能
124 サウンドサーバ
128 ソフトウェアミキサ
129 DMA転送割り込みスレッド
610、620 プログラム
712、722 ミキシング済みサンプル数カウンタ

Claims (11)

  1. 第1のプロセッサコア上で動作し、第1及び第2の音声データをミキシングして、当該ミキシングした合成音声データをDMA転送用バッファに格納する主系プログラムと、
    第2のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムと、
    前記DMA転送用バッファから転送される合成音声データを順次格納し、当該格納した合成音声データを再生する音声出力手段と、を備え、
    前記予備系プログラムは、前記DMA転送用バッファに格納される合成音声データの格納量が、前記音声出力手段に格納される合成音声データの格納量に応じて定める所定のデータ量に達していない場合、前記主系プログラムが実行していた前記第1及び第2の音声データのミキシング及び格納を引き継い実行することを特徴とするマルチコアシステム。
  2. 前記予備系プログラムは、前記音声出力手段に格納されている合成音声データの格納量が所定の単位減少する毎に、前記DMA転送用バッファに格納される合成音声データの格納量が、前記音声出力手段に格納されている合成音声データの減少量に応じて定める所定の閾値に達しているか否かを判定し、当該所定の閾値に達してない場合に、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いて実行することを特徴とする請求項1に記載のマルチコアシステム。
  3. 前記音声出力手段は、前記DMA転送用バッファから転送される合成音声データをエンキューして、前記再生をする合成音声データがデキューされるFIFOバッファを有することを特徴とする請求項1に記載のマルチコアシステム。
  4. 前記音声出力手段は、前記FIFOバッファに格納されている合成音声データが所定の単位デキューされる毎に、前記予備系プログラムにFIFO境界割り込みを出力し、
    前記予備系プログラムは、前記音声出力手段からのFIFO割り込みに応じて、前記DMA転送用バッファに格納される合成音声データの格納量が、前記FIFOバッファに格納されている合成音声データの格納量に応じて定める所定の閾値に達しているか否かを判定し、当該所定の閾値に達していない場合に、前記主系プログラムが実行していた合成音声データのミキシング及び格納を引き継いて実行することを特徴とする請求項3に記載のマルチコアシステム。
  5. 前記マルチコアシステムは、前記DMA転送用バッファに格納された合成音声データを前記FIFOバッファに転送して、当該転送が完了した場合に、DMA転送完了割り込みを前記予備系プログラムに出力するDMAコントローラを更に有し、
    前記予備系プログラムは、前記DMAコントローラからの前記DMA転送完了割り込みに応じて、前記FIFO境界割り込みの出力を有効にするFIFO境界割り込み開始要求を前記音声出力手段に出力し、
    前記主系プログラムは、前記合成音声データのミキシング及び格納を完了した場合に、前記FIFO境界割り込みの出力を無効にするFIFO境界割り込み停止要求を前記音声出力手段に出力することを特徴とする請求項4に記載のマルチコアシステム。
  6. 前記主系プログラムは、第1のオペレーティングシステムと、前記第1のオペレーティングシステムにおいて動作する第1のサウンドドライバを含み、
    前記予備系プログラムは、第2のオペレーティングシステムと、前記第2のオペレーティングシステムにおいて動作する第2のサウンドドライバを含み、
    前記第2のサウンドドライバは、前記第1のサウンドドライバが実行していた合成音声データのミキシング及び格納を引き継いで実行することを特徴とする請求項1乃至5のいずれか1項に記載のマルチコアシステム。
  7. 前記マルチコアシステムは、前記1の音声データが格納される第1のリングバッファと、前記第2の音声データが格納される第2のリングバッファとをさらに備え、
    前記主系プログラムのサウンドドライバは、前記第1及び第2のリングバッファから前記第1及び第2の音声データを順次取得し、
    前記第2のサウンドドライバは、前記合成音声データのミキシング及び格納を引き継いで実行する場合に、前記第1及び第2のリングバッファの位置のうち、前記DMA転送用バッファに格納されている合成音声データの格納量が示す位置よりも少なくとも1サンプル前の位置から、前記第1及び第2の音声データのミキシング及び格納を引き継いで実行することを特徴とする請求項6に記載のマルチコアシステム。
  8. 前記主系プログラムは、前記第1の音声データを生成する第1のアプリケーションプログラムを更に含み、
    前記予備系プログラムは、前記第2の音声データを生成する第2のアプリケーションプログラムを更に含み、
    前記第1のサウンドドライバは、前記第1のアプリケーションプログラムが生成した第1の音声データのサンプリングレートを変換して前記第1のリングバッファに格納するインタフェース手段と、前記合成音声データのミキシング及び格納を実行するドライバコア手段とを含み、
    前記第2のサウンドドライバは、前記第2のアプリケーションプログラムが生成した第2の音声データのサンプリングレートを変換して前記第2のリングバッファに格納するインタフェース手段と、前記合成音声データのミキシング及び格納を実行するドライバコア手段と含むことを特徴とする請求項7に記載のマルチコアシステム。
  9. 前記音声出力手段は、I2Sデバイスと、DAコンバータを含む音声出力装置とを含み、
    前記I2Sデバイスは、前記DMA転送用バッファから転送される合成音声データをエンキューして、前記再生をする合成音声データがデキューされるFIFOバッファを有し、
    前記音声出力装置は、前記FIFOバッファからデキューされた合成音声データをアナログ信号に変換して再生することを特徴とする請求項1に記載のマルチコアシステム。
  10. 第1のプロセッサコア上で動作する主系プログラムが、第1及び第2の音声データをミキシングして、当該ミキシングした合成音声データをDMA転送用バッファに格納し、
    音声出力手段が、前記DMA転送用バッファから転送される合成音声データを順次格納し、当該格納した合成音声データを再生し、
    第2のプロセッサコア上で動作し、前記主系プログラムの予備系として動作する予備系プログラムが、前記DMA転送用バッファに格納される合成音声データの格納量が、前記音声出力手段に格納される合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定し、
    前記所定のデータ量に達していると判定した場合に、前記予備系プログラムが、前記主系プログラムが実行していた前記第1及び第2の音声データのミキシング及び格納を引き継い実行するマルチコアシステムの制御方法。
  11. 主系プログラムとは異なるプロセッサコア上で、当該主系プログラムの予備系として動作するプログラムであって、
    転送されてくる合成音声データを順次格納し、当該格納した合成音声データを再生する音声出力手段に対して転送され、前記主系プログラムが第1及び第2の音声データをミキシングした合成音声データが格納されるDMA転送用バッファに格納される合成音声データの格納量が、前記音声出力手段に格納される合成音声データの格納量に応じて定める所定のデータ量に達しているか否かを判定する処理と、
    前記所定のデータ量に達していると判定した場合に、前記主系プログラムが実行していた前記第1及び第2の音声データのミキシング及び格納を引き継い実行する処理と、を前記プロセッサコアに実行させることを特徴とするプログラム。
JP2011541787A 2009-11-18 2010-08-04 マルチコアシステム、マルチコアシステムの制御方法及びプログラム Expired - Fee Related JP5382133B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011541787A JP5382133B2 (ja) 2009-11-18 2010-08-04 マルチコアシステム、マルチコアシステムの制御方法及びプログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009262545 2009-11-18
JP2009262545 2009-11-18
JP2011541787A JP5382133B2 (ja) 2009-11-18 2010-08-04 マルチコアシステム、マルチコアシステムの制御方法及びプログラム
PCT/JP2010/004911 WO2011061878A1 (ja) 2009-11-18 2010-08-04 マルチコアシステム、マルチコアシステムの制御方法及びプログラムが格納された非一時的な可読媒体

Publications (2)

Publication Number Publication Date
JPWO2011061878A1 JPWO2011061878A1 (ja) 2013-04-04
JP5382133B2 true JP5382133B2 (ja) 2014-01-08

Family

ID=44059366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011541787A Expired - Fee Related JP5382133B2 (ja) 2009-11-18 2010-08-04 マルチコアシステム、マルチコアシステムの制御方法及びプログラム

Country Status (4)

Country Link
US (1) US8892230B2 (ja)
JP (1) JP5382133B2 (ja)
CN (1) CN102667745B (ja)
WO (1) WO2011061878A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5382133B2 (ja) * 2009-11-18 2014-01-08 日本電気株式会社 マルチコアシステム、マルチコアシステムの制御方法及びプログラム
US9236064B2 (en) * 2012-02-15 2016-01-12 Microsoft Technology Licensing, Llc Sample rate converter with automatic anti-aliasing filter
CN107239420B (zh) 2012-11-21 2020-05-05 相干逻辑公司 具有散布处理器dma-fifo的处理系统
CN104516779B (zh) * 2013-09-27 2020-03-24 联想(北京)有限公司 一种系统切换方法及芯片
WO2015096001A1 (en) * 2013-12-23 2015-07-02 Intel Corporation System-on-a-chip (soc) including hybrid processor cores
US10467696B1 (en) * 2015-07-31 2019-11-05 Integral Development Corp. Timing mechanisms to enhance the security of online networks
JP7230799B2 (ja) * 2017-03-28 2023-03-01 ソニーグループ株式会社 情報処理装置、情報処理方法、およびプログラム
TWI643185B (zh) * 2017-04-26 2018-12-01 瑞昱半導體股份有限公司 音訊處理裝置及方法
CN109313566B (zh) * 2017-12-27 2022-06-07 深圳前海达闼云端智能科技有限公司 一种虚拟机的音频播放方法及其装置、移动终端
JP6695955B1 (ja) 2018-11-27 2020-05-20 レノボ・シンガポール・プライベート・リミテッド 信号処理装置、制御方法、及びプログラム
DE102019203130A1 (de) 2019-03-07 2020-09-10 Continental Automotive Gmbh Nahtlose Audioübergabe in einem Mehrprozessor-Audiosystem
CN111258937B (zh) * 2020-01-23 2021-08-03 烽火通信科技股份有限公司 一种环式链表dma的传输方法及系统
CN111338998B (zh) * 2020-02-20 2021-07-02 深圳震有科技股份有限公司 基于amp系统的flash访问处理方法及装置
CN111427817B (zh) * 2020-03-23 2021-09-24 深圳震有科技股份有限公司 一种amp系统双核共用i2c接口的方法、存储介质及智能终端
CN111427806A (zh) * 2020-03-23 2020-07-17 深圳震有科技股份有限公司 一种双核amp系统共用串口的方法、存储介质及智能终端
CN115696173B (zh) * 2022-09-14 2025-12-19 合肥杰发科技有限公司 一种芯片、车用音源播放方法、车载设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006035386A (ja) * 2004-07-28 2006-02-09 Musashi Seimitsu Ind Co Ltd 歯車の歯面における歯すじの修正方法
JP2006085386A (ja) * 2004-09-15 2006-03-30 Sony Corp 情報処理装置および方法、並びにプログラム
JP2006146937A (ja) * 2004-11-24 2006-06-08 Toshiba Corp データのリアルタイム処理を行うための方法及びシステム

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5357511A (en) * 1993-03-22 1994-10-18 Peak Audio, Inc. Distributed processing in a digital audio mixing network
JP3193525B2 (ja) * 1993-05-31 2001-07-30 キヤノン株式会社 情報処理装置
ATE188793T1 (de) * 1994-10-12 2000-01-15 Touchtunes Music Corp Intelligentes system zur numerischen audio- visuellen reproduktion
US5850628A (en) * 1997-01-30 1998-12-15 Hasbro, Inc. Speech and sound synthesizers with connected memories and outputs
JPH11196386A (ja) * 1997-10-30 1999-07-21 Toshiba Corp コンピュータシステムおよびクローズドキャプション表示方法
FR2849327A1 (fr) * 2002-12-20 2004-06-25 St Microelectronics Sa Procede et dispositif de decodage audio/video, circuit pilote video et boitier decodeur l'incorporant
US7529467B2 (en) * 2004-02-28 2009-05-05 Samsung Electronics Co., Ltd. Storage medium recording text-based subtitle stream, reproducing apparatus and reproducing method for reproducing text-based subtitle stream recorded on the storage medium
US7774512B2 (en) * 2005-02-08 2010-08-10 Sony Computer Entertainment Inc. Methods and apparatus for hybrid DMA queue and DMA table
CA2615471C (en) * 2005-07-15 2014-10-21 Mattel Inc. Interactive electronic device with digital and analog data links
US7590772B2 (en) * 2005-08-22 2009-09-15 Apple Inc. Audio status information for a portable electronic device
US7814166B2 (en) * 2006-01-27 2010-10-12 Sony Computer Entertainment Inc. Methods and apparatus for virtualizing an address space
DE102006055930A1 (de) 2006-11-27 2008-05-29 Siemens Ag Bildverarbeitungssystem zum Verarbeiten wenigstens eines Bild-Datensatzes mit einer schnellen Bildverarbeitungsvorrichtung und Verfahren zum Bildverarbeiten
US8037221B2 (en) * 2008-01-16 2011-10-11 International Business Machines Corporation Dynamic allocation of DMA buffers in input/output adaptors
JP2009190103A (ja) 2008-02-13 2009-08-27 Hitachi High-Tech Control Systems Corp 半導体搬送装置
US20090248300A1 (en) * 2008-03-31 2009-10-01 Sony Ericsson Mobile Communications Ab Methods and Apparatus for Viewing Previously-Recorded Multimedia Content from Original Perspective
CN100562864C (zh) 2008-06-03 2009-11-25 浙江大学 一种嵌入式异构多核体系片上通信的实现方法
JP4683116B2 (ja) * 2008-11-12 2011-05-11 ソニー株式会社 情報処理装置、情報処理方法、情報処理プログラムおよび撮像装置
JP5099090B2 (ja) 2009-08-19 2012-12-12 日本電気株式会社 マルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサ
WO2011027302A1 (en) * 2009-09-02 2011-03-10 Plurality Ltd. Associative distribution units for a high flow-rate synchronizer/scheduler
JP5382133B2 (ja) * 2009-11-18 2014-01-08 日本電気株式会社 マルチコアシステム、マルチコアシステムの制御方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006035386A (ja) * 2004-07-28 2006-02-09 Musashi Seimitsu Ind Co Ltd 歯車の歯面における歯すじの修正方法
JP2006085386A (ja) * 2004-09-15 2006-03-30 Sony Corp 情報処理装置および方法、並びにプログラム
JP2006146937A (ja) * 2004-11-24 2006-06-08 Toshiba Corp データのリアルタイム処理を行うための方法及びシステム

Also Published As

Publication number Publication date
CN102667745B (zh) 2015-04-08
CN102667745A (zh) 2012-09-12
WO2011061878A1 (ja) 2011-05-26
US20120221134A1 (en) 2012-08-30
US8892230B2 (en) 2014-11-18
JPWO2011061878A1 (ja) 2013-04-04

Similar Documents

Publication Publication Date Title
JP5382133B2 (ja) マルチコアシステム、マルチコアシステムの制御方法及びプログラム
CN102473128B (zh) 多核系统、多核系统的控制方法以及多处理器
US6898723B2 (en) Method for verifying clock signal frequency of computer sound interface that involves checking whether count value of counter is within tolerable count range
US11579803B2 (en) NVMe-based data writing method, apparatus, and system
CN105190561B (zh) 双主机嵌入式共享装置控制器
JP2004348246A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP4456404B2 (ja) データ処理装置および割込処理方法
CN109599133B (zh) 语言音轨的切换方法、装置、计算机设备及存储介质
JP5375650B2 (ja) マルチコアシステム、マルチコアシステムの制御方法及びプログラム
CN101303642B (zh) 指令发送装置及其方法
WO2007099613A1 (ja) コマンド選択方法、装置、コマンド投入方法、及び装置
US7321945B2 (en) Interrupt control device sending data to a processor at an optimized time
CN108459837A (zh) 一种音频数据处理方法和装置
EP1366421B1 (en) Digital signal processor interrupt accelerator
US11803499B2 (en) Method of operating audio subsystem for USB module, system-on-chip performing the same and method of operating system-on-chip using the same
CN102403008A (zh) 音频播放中数据流断点续接的方法和系统、fifo控制器
WO2007099659A1 (ja) データ転送装置及びデータ転送方法
CN106354556A (zh) 一种音频传输方法及电子装置
CN100383770C (zh) 一种基于主从通信方式的主节点链路层优化方法
CN113455011B (zh) 用于媒体设备中的数据管理的系统和方法
CN114691386B (zh) 事件触发主控端、控制芯片及控制方法
JP2005292375A (ja) オーディオ再生装置およびクロック周波数制御方法
JP2020034990A (ja) 情報処理装置および設定プログラム
JP2006113716A (ja) 半導体集積回路
JP2012103892A (ja) トランザクション制御装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130801

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130903

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130916

R150 Certificate of patent or registration of utility model

Ref document number: 5382133

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees