(57)【要約】【課題】コストの増大を抑えつつ、求められる低レイテンシを保証する音響信号処理を実現する技術を提供する。【解決手段】コンピュータ装置１において、管理ＯＳ１３１は仮想化支援コンポーネント１３２により、第１の仮想機械ＶＭ１と第２の仮想機械ＶＭ２を構築した後、第１の仮想機械ＶＭ１上でリアルタイムＯＳである第１のＯＳ１１１を、第２の仮想機械ＶＭ２上で汎用ＯＳである第２のＯＳ１２１を各々起動する。第１のＯＳ１１１上では音響信号処理エンジン１１２に従い低レイテンシが求められる音響信号処理が行われる。一方、第２のＯＳ１２１上ではオーディオ編集アプリケーション１２２に従い音響信号処理やＧＵＩに関する処理が行われる。第１の仮想機械ＶＭ１と第２の仮想機械ＶＭ２との間には共有メモリ領域３３を用いた伝送路が構築され、この伝送路を介して第１の仮想機械ＶＭ１と第２の仮想機械ＶＭ２との間にて音響信号の授受が行われる。【選択図】図３
2014027595.tif 000002
【特許請求の範囲】
【請求項１】
リソースとして少なくともプロセッサおよびメモリを有するコンピュータにて行われる音響信号処理方法であって、前記プロセッサが、
前記リソースを用いて第１の仮想機械と第２の仮想機械を構築する仮想機械構築ステップと、
前記第１の仮想機械から音響信号を出力する第１のインタフェース、および、前記第２の仮想機械へ音響信号を入力する第２のインタフェースを構築するインタフェース構築ステップと、
前記第１の仮想機械において、前記第１のインタフェースに音響信号を出力する出力ステップと、
前記第１の仮想機械が前記第１のインタフェースに出力した音響信号を前記メモリに書き込む書込ステップと、
前記書き込まれた音響信号を前記メモリから読み出して前記第２のインタフェースへ出力する読出ステップと、
前記第２の仮想機械において、前記第２のインタフェースから音響信号を入力する入力ステップと
を備える音響信号処理方法。
【請求項２】
前記リソースは、前記コンピュータに接続された外部装置から音響信号を受信するオーディオインタフェースを含み、
前記プロセッサが、
前記第１の仮想機械において、前記オーディオインタフェースにて受信された音響信号を入力するステップと、
前記第１の仮想機械において、前記入力した音響信号に対する信号処理を実行するステップと、
を備え、
前記プロセッサは、前記出力ステップにおいて前記信号処理された音響信号を前記第１のインタフェースに出力し、前記入力ステップにおいて前記第２のインタフェースから前記信号処理された音響信号を入力する
請求項１に記載の音響信号処理方法。
【請求項３】
前記プロセッサは複数のプロセッサコアを含み、
前記プロセッサは、前記仮想機械構築ステップにおいて、前記第１の仮想機械を前記リソースのうち第１のプロセッサコアと前記オーディオインタフェースとを用いて構築し、前記第２の仮想機械を前記リソースのうち第２のプロセッサコアを用いて構築する
請求項２に記載の音響信号処理方法。
【請求項４】
リソースとして少なくともプロセッサおよびメモリを有するコンピュータの前記リソースを用いて第１の仮想機械と第２の仮想機械を構築する手段と、
前記第１の仮想機械から音響信号を出力する第１のインタフェース、および、前記第２の仮想機械へ音響信号を入力する第２のインタフェースを構築する手段と、
前記第１の仮想機械において、前記第１のインタフェースに音響信号を出力する手段と、
前記第１の仮想機械が前記第１のインタフェースに出力した音響信号を前記メモリに書き込む手段と、
前記書き込まれた音響信号を前記メモリから読み出して前記第２のインタフェースへ出力する手段と、
前記第２の仮想機械において、前記第２のインタフェースから音響信号を入力する手段と
を備えたことを特徴とする音響信号処理システム。
【請求項５】
前記リソースは、前記コンピュータに接続された外部装置から音響信号を受信するオーディオインタフェースを含み、
前記第１の仮想機械において、前記オーディオインタフェースにて受信された音響信号を入力する手段と、
前記第１の仮想機械において、前記入力した音響信号に対する信号処理を実行する手段と、
を備え、
前記出力する手段は前記信号処理された音響信号を前記第１のインタフェースに出力し、前記入力する手段は前記第２のインタフェースから前記信号処理された音響信号を入力する
請求項４に記載の音響信号処理システム。
【請求項６】
前記プロセッサは複数のプロセッサコアを含み、
前記仮想機械を構築する手段は、前記第１の仮想機械を前記リソースのうち第１のプロセッサコアと前記オーディオインタフェースとを用いて構築し、前記第２の仮想機械を前記リソースのうち第２のプロセッサコアを用いて構築する
請求項５に記載の音響信号処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音響信号処理の技術に関する。
【背景技術】
【０００２】
音響信号処理を行う装置として、例えば、音響信号の調整やミキシング等を行うディジタルオーディオミキサーが知られている（例えば、特許文献１参照）。特許文献１に記載のようなディジタルオーディオミキサーでは、複数のＤＳＰ（Digital Signal Processor）で低レイテンシ（処理に伴う待ち時間が予め定められた閾値以下であることを、以下「低レイテンシ」という）が求められる音響信号処理を行い、低レイテンシが求められない音響信号処理やＧＵＩ（Graphical User Interface）の表示制御等の他の処理はＣＰＵで行う構成が採用されている。
【０００３】
また、パーソナルコンピュータ等の汎用装置において実行されるプログラムによりＤＡＷ（Digital Audio Workstation）システムを実現する技術が知られている。ＤＡＷシステムにおいては、汎用装置にてＧＵＩの表示制御等を含む種々の処理を実行し、音響信号処理は外部に接続したＤＳＰ又は汎用装置上で動作するソフトウェアで実行される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−１２５４６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ＤＳＰは信号処理に特化したプロセッサであり、ボタン・フェーダ等への操作応答等の割込信号に対応する処理や画面表示処理などはＣＰＵで行う必要がある。そのため、ＤＳＰにて音響信号処理を行う場合、レイテンシが保証される反面、ハードウェアコストが大きくなってしまったり、システム構成が複雑化してしまったりするという問題がある。また、上記汎用装置上で動作するソフトウェアで音響信号処理も行う場合、Ｗｉｎｄｏｗｓ（登録商標）等の汎用ＯＳおよび当該ＯＳ上にて動作するソフトウェアを用いることが一般的であるが、汎用ＯＳでは上記の割込処理の影響で信号処理のレイテンシが保証されない場合がある。そのため、汎用装置上で動作するソフトウェアで音響信号処理も行う場合は、リアルタイム性が求められる音響信号処理には適さない。汎用装置にて所謂リアルタイムＯＳおよび当該ＯＳ上で動作するソフトウェアを用いればレイテンシを保証することは可能であるが、Ｗｉｎｄｏｗ等の汎用ＯＳにて動作するよう作成された既存のソフトウェア（Ｃｕｂａｓｅ（登録商標）等）はそのままでは用いることはできず、ソフトウェアの変更や新規作成を行う必要がある。
【０００６】
本発明は上述の背景に鑑みてなされたものであり、ハードウェアやソフトウェアのコストの増大を抑えつつ、シンプルな構成で音響信号処理に求められる低レイテンシを保証する技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決するために、本発明は、リソースとして少なくともプロセッサおよびメモリを有するコンピュータにて行われる音響信号処理方法であって、前記プロセッサが、前記リソースを用いて第１の仮想機械と第２の仮想機械を構築する仮想機械構築ステップと、前記第１の仮想機械から音響信号を出力する第１のインタフェース、および、前記第２の仮想機械へ音響信号を入力する第２のインタフェースを構築するインタフェース構築ステップと、前記第１の仮想機械において、前記第１のインタフェースに音響信号を出力する出力ステップと、前記第１の仮想機械が前記第１のインタフェースに出力した音響信号を前記メモリに書き込む書込ステップと、前記書き込まれた音響信号を前記メモリから読み出して前記第２のインタフェースへ出力する読出ステップと、前記第２の仮想機械において、前記第２のインタフェースから音響信号を入力する入力ステップとを備える音響信号処理方法を提供する。
【０００８】
上記の音響信号の処理方法の好ましい態様において、前記リソースは、前記コンピュータに接続された外部装置から音響信号を受信するオーディオインタフェースを含み、前記プロセッサが、前記第１の仮想機械において、前記オーディオインタフェースにて受信された音響信号を入力するステップと、前記第１の仮想機械において、前記入力した音響信号に対する信号処理を実行するステップと、を備え、前記プロセッサは、前記出力ステップにおいて前記信号処理された音響信号を前記第１のインタフェースに出力し、前記入力ステップにおいて前記第２のインタフェースから前記信号処理された音響信号を入力する、という構成が採用されてもよい。
【０００９】
また、上記の音響信号の処理方法の好ましい態様において、前記プロセッサは複数のプロセッサコアを含み、前記プロセッサは、前記仮想機械構築ステップにおいて、前記第１の仮想機械を前記リソースのうち第１のプロセッサコアと前記オーディオインタフェースとを用いて構築し、前記第２の仮想機械を前記リソースのうち第２のプロセッサコアを用いて構築する、という構成が採用されてもよい。
【００１０】
また、本発明は、リソースとして少なくともプロセッサおよびメモリを有するコンピュータの前記リソースを用いて第１の仮想機械と第２の仮想機械を構築する手段と、前記第１の仮想機械から音響信号を出力する第１のインタフェース、および、前記第２の仮想機械へ音響信号を入力する第２のインタフェースを構築する手段と、前記第１の仮想機械において、前記第１のインタフェースに音響信号を出力する手段と、前記第１の仮想機械が前記第１のインタフェースに出力した音響信号を前記メモリに書き込む手段と、前記書き込まれた音響信号を前記メモリから読み出して前記第２のインタフェースへ出力する手段と、前記第２の仮想機械において、前記第２のインタフェースから音響信号を入力する手段とを備えたことを特徴とする音響信号処理システムを提供する。
【００１１】
上記の音響信号処理システムの好ましい態様において、前記リソースは、前記コンピュータに接続された外部装置から音響信号を受信するオーディオインタフェースを含み、前記第１の仮想機械において、前記オーディオインタフェースにて受信された音響信号を入力する手段と、前記第１の仮想機械において、前記入力した音響信号に対する信号処理を実行する手段と、を備え、前記出力する手段は前記信号処理された音響信号を前記第１のインタフェースに出力し、前記入力する手段は前記第２のインタフェースから前記信号処理された音響信号を入力する、という構成が採用されてもよい。
【００１２】
また、上述の音響信号処理システムの好ましい態様において、前記プロセッサは複数のプロセッサコアを含み、前記仮想機械を構築する手段は、前記第１の仮想機械を前記リソースのうち第１のプロセッサコアと前記オーディオインタフェースとを用いて構築し、前記第２の仮想機械を前記リソースのうち第２のプロセッサコアを用いて構築する、という構成が採用されてもよい。
【発明の効果】
【００１３】
本発明によれば、ハードウェアやソフトウェアのコストの増大を抑えつつ、求められる低レイテンシを保証する音響信号処理が実現される。
【図面の簡単な説明】
【００１４】
【図１】本発明のコンピュータ装置のハードウェア構成の一例を示すブロック図
【図２】本発明のコンピュータ装置の機能的構成の一例を示すブロック図
【図３】本発明のコンピュータ装置のソフトウェアの論理的構成の一例を示すブロック図
【図４】本発明のコンピュータ装置のブート処理の流れを示すフローチャート
【図５】共有メモリ領域へのアクセス内容を説明するための図
【図６】本発明のコンピュータ装置の構成例を説明するための図
【図７】本発明のコンピュータ装置の構成例を説明するための図
【発明を実施するための形態】
【００１５】
１．構成
以下、図面を参照しながら本発明の実施の形態を説明する。図１は、本発明の実施形態に係るコンピュータ装置１のハードウェア構成の一例を示すブロック図である。コンピュータ装置１は例えばパーソナルコンピュータ等の汎用的なコンピュータ装置であり、本発明に係る音響信号処理を行う。コンピュータ装置１は、プロセッサ１０、メモリ２０、オーディオＩ／Ｆ４０、その他のデバイス５０を有し、これら各部がバス６０を介して接続されている。プロセッサ１０は、例えばＣＰＵであり、４つのプロセッサコア１０1，１０2，１０3，１０4からなるマルチコア・プロセッサである。プロセッサ１０がメモリ２０に記憶されているコンピュータプログラムを読み出して実行することにより、コンピュータ装置１の各部を制御する。メモリ２０は、ＲＯＭ、ＲＡＭ、フラッシュメモリ、ＨＤＤ、光学ドライブ等を適宜組み合わせて構成される。
【００１６】
オーディオＩ／Ｆ４０は、デジタル音響信号を入出力するデータ入出力部である。オーディオＩ／Ｆ４０は、Ｅｔｈｅｒｎｅｔ（登録商標）、ＵＳＢ（Universal Serial Bus）、ＩＥＥＥ１３９４などの伝送路を介して、デジタル音響信号を汎用のオーディオ伝送プロトコル（例えば、ＣｏｂｒａＮｅｔ（登録商標），ＥｔｈｅｒＳｏｕｎｄ（登録商標），Ｄａｎｔｅ（登録商標）等）に従って入出力する。また、ＰＣＩｅ（PCI Express）などのプロセッサのバスをそのまま延長した形式で入出力を行ってもよい。また、他の形式で音響信号の入出力を行ってもよい。また、オーディオＩ／Ｆ４０は、複数チャンネルの音響信号の入出力を行うものであってもよい。オーディオＩ／Ｆ４０は、クロック発信源を備え、このクロック発信源から発信されるクロックに同期してデータの入出力を行う。その他のデバイス５０は、図示しない各種デバイス（キーボード、マウス、タッチパネル等の操作入力デバイスやディスプレイ等の出力デバイス、あるいは他の装置と通信を行う通信デバイス等）との間でデータの入出力を行うＩ／Ｆであり、必要に応じて適宜実装される。
【００１７】
メモリ２０には、第１のＯＳ（Operating System）プログラムＰＲＧ１と、第２のＯＳプログラムＰＲＧ２と、管理ＯＳプログラムＰＲＧ３と、信号処理エンジンプログラムＰＲＧ４と、オーディオ編集アプリケーションプログラムＰＲＧ５等の、各種のコンピュータプログラムが記憶されている。第１のＯＳプログラムＰＲＧ１は、リアルタイムＯＳである第１のＯＳのプログラムである。第２のＯＳプログラムＰＲＧ２は、汎用ＯＳである第２のＯＳのプログラムである。管理ＯＳプログラムＰＲＧ３は、第１のＯＳ及び第２のＯＳを管理するＯＳ（以下「管理ＯＳ」という）のプログラムである。信号処理エンジンプログラムＰＲＧ４は、低レイテンシが求められる音響信号処理を行うアプリケーションを実現するためのプログラムである。すなわち、信号処理エンジンプログラムＰＲＧ４は、従来のディジタルオーディオミキサー等においてＤＳＰ等の専用のプロセッサで実行されていた音響信号処理を行うアプリケーションを実現するためのプログラムである。オーディオ編集アプリケーションプログラムＰＲＧ５は、低レイテンシが必ずしも求められない音響信号の編集や記録あるいはミキシング操作等の各種処理を行うアプリケーションを実現するためのプログラムである。なお、メモリ２０には、図示した以外にも、第１のＯＳ又は第２のＯＳ上で動作する他のプログラムや各種データが記憶されるが、図１においては、図面が煩雑になるのを防ぐためその図示を省略している。
なお、本明細書では、説明の便宜上、応答遅延に対する管理・制御機能を有し「所定の処理命令に対する応答遅延が所定の時間内に完了することが保証できるＯＳ」を「リアルタイムＯＳ」と呼び、「応答遅延にバラつきが生じるなど応答遅延に対する管理・制御機能が無いか当該管理・制御能力に乏しいＯＳ」を「汎用ＯＳ」と呼ぶ。
【００１８】
次に、図２に示すブロック図を参照しながら、コンピュータ装置１の機能的構成の一例について説明する。コンピュータ装置１においては、リソースが仮想化され、２台の仮想機械ＶＭ１、ＶＭ２が構築される。仮想機械ＶＭ１では第１のＯＳ１１１が稼動し、仮想機械ＶＭ２では第２のＯＳ１２１が稼動する。仮想化は管理ＯＳ１３１と仮想化支援コンポーネント１３２により提供される。なお、仮想化技術としては公知の技術を適宜採用することが可能であり、本明細書では仮想化技術に関する詳細な説明は省略する。また、図２においては図面が煩雑になるのを防ぐためＮＩＣ（Network Interface Card）等の一部のリソースの図示を省略している。
【００１９】
続いて、図２に示される各構成部を説明する。リソース群ＲＳ１０に含まれるリソースはコンピュータ装置１が実際に備えるリソースである。メモリ３４は、コンピュータ装置１が有するメモリ２０等の記憶資源のうちコンピュータ装置１が各種処理を実行する上で一時的にデータ等を保持するためのＲＡＭ等である。管理ＯＳ１３１は複数のＯＳを管理するハイパーバイザである。仮想化支援コンポーネント１３２は、管理ＯＳ１３１の上で動作し、コンピュータ装置１の備えるプロセッサ１０、メモリ２０、オーディオＩ／Ｆ４０等の各種リソースを仮想化し、コンピュータ装置１を、第１のＯＳ１１１によって制御される第１の仮想機械ＶＭ１と、第２のＯＳ１２１によって制御される第２の仮想機械ＶＭ２として機能させるコンポーネントである。
【００２０】
本実施形態の仮想化において、仮想化支援コンポーネント１３２はリソース群ＲＳ１０に含まれるリソースのうち、プロセッサコア１０1及び１０2、メモリ３４に含まれる第１のメモリ領域３１、オーディオＩ／Ｆ４０を、各々、仮想的なリソースであるプロセッサコア１０Ｖ1及び１０Ｖ2、メモリ３１Ｖ、オーディオＩ／Ｆ４０Ｖとして第１の仮想機械ＶＭ１にアサインする。以下、互いに対応する物理的なリソースと仮想的なリソースには同じ数字の符号を付すとともに、それらを区別するために仮想的なリソースには「オーディオＩ／Ｆ４０Ｖ」のように、数字の符号の後に「Ｖ」を付加するものとする。また、仮想化支援コンポーネント１３２は仮想的なオーディオＩ／Ｆである仮想オーディオＩ／Ｆ３３１（後述）を第１の仮想機械ＶＭ１にアサインする。第１の仮想機械ＶＭ１にアサインされたこれらの仮想的なリソースはリソース群ＲＳ１１を構成する。
【００２１】
また、仮想化支援コンポーネント１３２はリソース群ＲＳ１０に含まれるリソースのうち、プロセッサコア１０3及び１０4、メモリ３４に含まれる第２のメモリ領域３２、その他のデバイス５０を、各々、仮想的なリソースであるプロセッサコア１０Ｖ3及び１０Ｖ4、メモリ３２Ｖ、その他のデバイス５０Ｖとして第２の仮想機械ＶＭ２にアサインする。また、仮想化支援コンポーネント１３２は仮想的なオーディオＩ／Ｆである仮想オーディオＩ／Ｆ３３２（後述）を第２の仮想機械ＶＭ２にアサインする。第２の仮想機械ＶＭ２にアサインされたこれらの仮想的なリソースはリソース群ＲＳ１２を構成する。
【００２２】
第１のＯＳ１１１は第１のＯＳプログラムＰＲＧ１に従い第１の仮想機械ＶＭ１上で実行されるリアルタイムＯＳであり、例えばＵｂｕｎｔｕ  Ｓｔｕｄｉｏである。また、第２のＯＳ１２１は第２のＯＳプログラムＰＲＧ２に従い第２の仮想機械ＶＭ２上で実行される汎用ＯＳであり、例えばＷｉｎｄｏｗｓ（登録商標）である。第１のＯＳ１１１は、第１の仮想機械ＶＭ１に対し通常のコンピュータ装置に対するものと同様の処理を指示する。また、第２のＯＳ１２１は、第２の仮想機械ＶＭ２に対し通常のコンピュータ装置に対するものと同様の処理を指示する。仮想化支援コンポーネント１３２は第１のＯＳ１１１のリソース群ＲＳ１１に対する指示および第２のＯＳ１２１のリソース群ＲＳ１２に対する指示を必要に応じてフックし、必要に応じてそれらの指示に含まれるアドレス番号やポート番号等のリソースを識別する情報の変換等を行う。例えば、物理的なリソース群ＲＳ１０に含まれるメモリ３４のうちアドレスＡm〜Ａm+n-1（「Ａ」に付された下付文字はアドレス番号を示し、ｍおよびｎは任意の自然数）のメモリ空間を持つ第２のメモリ領域３２が、アドレスＡ0〜Ａn-1のメモリ空間を持つメモリ３２Ｖとして第２の仮想機械ＶＭ２にアサインされている場合を想定する。この場合、例えば第２のＯＳ１２１がメモリ３２ＶのアドレスＡx（ただし、ｘは０≦ｘ≦ｎ−１を満たす任意の自然数）に対するデータの読み書きの指示を行うと、仮想化支援コンポーネント１３２はその指示をフックし、アドレスＡxをアドレスＡx+mに変換し、メモリ３４のアドレスＡx+m（第２のメモリ領域３２のアドレス）に対しデータの読み書きを実行する。このような仮想化支援コンポーネント１３２の役割により、第１のＯＳプログラムＰＲＧ１および第２のＯＳプログラムＰＲＧ２は、通常のコンピュータ装置上で実行されるものに何らの変更を要しない。
また、仮想化支援コンポーネント１３２は伝送用バッファ（後述）として使用される共有メモリ領域を確保する。なお、管理ＯＳ１３１は仮想機械ＶＭ２とリソースを共用しているものとする。
【００２３】
第１のＯＳ１１１は上述したようにリアルタイムＯＳであり、低レイテンシが保証され、所定の処理命令に対する応答遅延が所定の時間内に行われる。この実施形態では、第１のＯＳ１１１上では、信号処理エンジンプログラムＰＲＧ４に従い音響信号処理エンジン１１２が実行される。音響信号処理エンジン１１２は、オーディオＩ／Ｆ４０Ｖ等から入力されたオーディオ信号に信号処理を施し、この信号処理されたオーディオ信号をオーディオＩ／Ｆ４０Ｖ等に対して出力する。これにより第１の仮想機械ＶＭ１では入力される音響信号に対する音響信号処理を低レイテンシにて行うことができる。
【００２４】
一方、第２のＯＳ１２１は上述したように汎用ＯＳであり、汎用ＯＳで動作する一般的なソフトウェアプログラムがそのまま第２のＯＳ１２１上で実行される。この実施形態では、第２のＯＳ１２１上では、オーディオ編集アプリケーションプログラムＰＲＧ５に従いオーディオ編集アプリケーション１２２（例えばＣｕｂａｓｅ（登録商標）等）が実行される。また、この実施形態では、ユーザの操作に応じてマウス、キーボード、タッチパネル等の操作入力デバイスからコンピュータ装置１に入力される割込信号は、その他のデバイス５０Ｖを介して全て第２のＯＳ１２１に供給される。従って、ユーザの操作に応じた割り込み処理等が、第１のＯＳ１１１において実行される処理に影響を与えることはない。なお、音響信号処理エンジン１１２は第１のＯＳ１１１上で動作するソフトウェアプログラムであれば行う音響処理の種別等は限定されず、同様に、オーディオ編集アプリケーション１２２は第２のＯＳ１２１上で動作するソフトウェアプログラムであれば行う音響処理の種別等は限定されない。また、音響信号処理エンジン１１２およびオーディオ編集アプリケーション１２２は各種エフェクト等の音響処理機能を追加および削除可能としたプラグイン形式のモジュールに従い音響処理を実行するものであってもよい。
【００２５】
本実施形態において、音響信号処理エンジン１１２に従い動作する第１の仮想機械ＶＭ１とオーディオ編集アプリケーション１２２に従い動作する第２の仮想機械ＶＭ２との間の音響信号の伝送は、仮想オーディオＩ／Ｆ３３１および仮想オーディオＩ／Ｆ３３２を介して行われる。図３は、第１の仮想機械ＶＭ１と第２の仮想機械ＶＭ２との間で行われる音響信号の伝送の仕組みを説明するために、コンピュータ装置１が有するリソースと上記各仮想機械上にて実行されるソフトウェアコンポーネントとのうち信号の伝送に関与する部分を示した図である。
【００２６】
図３において、第１の仮想機械ＶＭ１上で実行されるオーディオＩ／Ｏドライバ１１６はオーディオＩ／Ｆ４０Ｖ（図２参照）による音響信号の入出力を制御するドライバであり、例えばＡＬＳＡ（Advanced Linux（登録商標） Sound Architecture）やＡＳＩＯ（Audio Stream Input Output）等のコンポーネントである。オーディオＩ／Ｏドライバ１１６が制御するオーディオＩ／Ｆ４０ＶはオーディオＩ／Ｆ４０が仮想化されたものであり、オーディオＩ／Ｆ４０には通信ケーブル等の伝送路２を介して外部のオーディオ機器等が接続される。従って、音響信号処理エンジン１１２はオーディオＩ／Ｏドライバ１１６を用いて、外部のオーディオ機器等との間で伝送路２を介した通常の音響信号の送受信を行うことができる。
【００２７】
第１の仮想機械ＶＭ１が備える仮想オーディオＩ／Ｏドライバ１１９は仮想オーディオＩ／Ｆ３３１による音響信号の入出力を制御するドライバである。同様に、第２の仮想機械ＶＭ２が備える仮想オーディオＩ／Ｏドライバ１２９は仮想オーディオＩ／Ｆ３３２による音響信号の入出力を制御するドライバである。
【００２８】
メモリＡＰＩ１３３およびメモリＡＰＩ１３４は、仮想オーディオＩ／Ｆ３３１および仮想オーディオＩ／Ｆ３３２を構成しており、各仮想機械からメモリ３４に対してデータの読み書きを行うためのインタフェースである。仮想オーディオＩ／Ｏドライバ１１９は音響信号処理エンジン１１２から音響信号の入出力の指示を受けると、メモリＡＰＩ１３３を用いて、メモリ３４上に確保されている伝送用バッファである共有メモリ領域３３に対する音響信号の読み書きを行う。同様に、仮想オーディオＩ／Ｏドライバ１２９はオーディオ編集アプリケーション１２２から音響信号の入出力の指示を受けると、メモリＡＰＩ１３４を用いて、伝送用バッファである共有メモリ領域３３に対する音響信号の読み書きを行う。その結果、第１の仮想機械ＶＭ１と第２の仮想機械ＶＭ２との間で、共有メモリ領域３３を用いた音響信号用の伝送路３が構築される。なお、この実施形態では、オーディオＩ／Ｆ４０が音響信号の伝送におけるクロックマスタとなり、オーディオＩ／Ｆ４０のクロック発信源が発するクロックに同期して、コンピュータ装置１と外部機器との間の音響信号の伝送、および、伝送路３を介した第１の仮想機械ＶＭ１と第２の仮想機械ＶＭ２との間の音響信号の伝送がなされる。仮想オーディオＩ／Ｆ３３１はオーディオＩ／Ｆ４０のクロック発信源が発したクロックと同期し、当該クロックは伝送路３を介して仮想オーディオＩ／Ｆ３３１から仮想オーディオＩ／Ｆ３３２に伝搬され、仮想オーディオＩ／Ｆ３３２は当該クロックに同期する。
【００２９】
仮想オーディオＩ／Ｏドライバ１１９および１２９は、データの読み書き先が通常のオーディオＩ／Ｆ４０が仮想化されたものではなく、共有メモリ領域に対しデータの読み書きを指示するメモリＡＰＩである点を除き、既存のオーディオＩ／Ｏドライバ（例えば、オーディオＩ／Ｏドライバ１１６）と同様に構成することができる。具体的には、第１のＯＳ１１１およびその上で動作する音響信号処理エンジン１１２からみると、オーディオＩ／Ｏドライバ１１６を介して外部のオーディオ機器等との通信接続が確立されており、仮想オーディオＩ／Ｏドライバ１１９を介して第２の仮想機械ＶＭ２との通信接続が確立されていると認識されるだけである。また、第２のＯＳ１２１およびその上で動作するオーディオ編集アプリケーション１２２からみると、仮想オーディオＩ／Ｏドライバ１２９を介して第１の仮想機械ＶＭ１との通信接続が確立されていると認識されるだけである。従って、仮想オーディオＩ／Ｏドライバ１１９および１２９は、ＡＬＳＡやＡＳＩＯ等の任意の仕様あるいは規格等に準拠して構成することができる。このように、各ＯＳおよびそれらのＯＳ上で動作しているソフトウェアコンポーネントからすれば、通常の通信ケーブル等を用いた伝送路（例えば伝送路２）を介した外部機器との間のデータ伝送と、共有メモリ領域３３を用いた伝送路３を介した仮想機械間のデータ伝送とで異なる処理実装を行う必要が無い。
【００３０】
２．動作
２−１．ブート処理
次に、コンピュータ装置１の動作を説明する。図４は、利用者によってコンピュータ装置１の電源がＯＮされた際に実行されるブート処理のフローチャートである。利用者によってコンピュータ装置１の電源がＯＮされると、管理ＯＳ１３１が起動する（ステップＳ１）。管理ＯＳ１３１は、仮想化支援コンポーネント１３２を構築し（ステップＳ２）、ハードウェアの仮想化の準備を行う。次いで、管理ＯＳ１３１はメモリ２０から設定ファイル等を読み出す（ステップＳ３）。この設定ファイルには、構築する仮想機械の数や、確保する共有メモリ領域のサイズ、各仮想機械に割り当てるリソース（プロセッサコア、Ｉ／Ｆ、メモリ領域等）の定義等が含まれる。管理ＯＳ１３１は、設定ファイルに従って共有メモリ領域３３を確保する（ステップＳ４）とともに、第１の仮想機械ＶＭ１、第２の仮想機械ＶＭ２を構築する（ステップＳ５）。具体的には、ステップＳ５において、プロセッサコア１０1、１０2、１０3、１０4を各仮想機械にアサインする処理、Ｉ／Ｆを介したデバイス等からの割り込みリクエストを対応する仮想機械のプロセッサコアにアサインする処理、メモリＡＰＩ１３３および１３４が共有メモリ領域３３にアクセスするためのアドレスマップや割り込みリクエストを準備する処理等が行われる。その結果、リソース群ＲＳ１０に含まれる、コンピュータ装置１が実際に備えるリソースが仮想化され、リソース群ＲＳ１１およびリソース群ＲＳ１２に含まれる、仮想的なリソースが提供される。
【００３１】
次いで、管理ＯＳ１３１は第１のＯＳ１１１と第２のＯＳ１２１の起動を指示する（ステップＳ６）。管理ＯＳ１３１の指示に従い、第１のＯＳ１１１と第２のＯＳ１２１はそれぞれの設定に従って起動処理を行う（ステップＳ７）。その後、管理ＯＳ１３１はこれらのＯＳの監視を行う。
【００３２】
２−２．仮想機械間におけるデータ伝送処理
次に、共有メモリ領域３３を用いて構築される伝送路３を介した仮想機械間のデータ伝送に伴う動作について説明する。以下の説明では、第１のＯＳ１１１および第２のＯＳ１２１は２４ｂｉｔ／９６ｋＨｚの音響信号を処理するものとする。第１のＯＳ１１１側においては、リアルタイムにデータ伝送が行われ、第１のＯＳ１１１側のレイテンシとしては２ｍｓ（１９２サンプル分の時間）が設定されているものとする。一方、第２のＯＳ１２１側においては割り込み等により各種処理や読み／書きが第１のＯＳ１１１側と同等の時間内には完了しない場合があるため、第２のＯＳ１２１側のレイテンシとして、第２のＯＳ１２１の通常の稼動状況であれば問題なく応答できる時間として、第１のＯＳ１１１側のレイテンシの８倍である１６ｍｓ（１５３６サンプル分の時間）が設定されているものとする。
【００３３】
第１のＯＳ１１１は仮想オーディオＩ／Ｏドライバ１１９のために、レイテンシ２ｍｓ分の音響信号を蓄積できるだけのサイズ、すなわち、２４×９６０００×（２／１０００）＝４６０８ｂｉｔ／ｃｈのバッファをメモリ３１Ｖ上に確保する。また、第２のＯＳ１２１は、仮想オーディオＩ／Ｏドライバ１２９のために、その８倍の３６８６４ｂｉｔ／ｃｈのバッファをメモリ３２Ｖ上に確保する。なお、第１のＯＳ１１１および第２のＯＳ１２１が確保するこれらのバッファはダブルバッファ構成であってもよい。その場合、それらのバッファに要するメモリ領域のサイズは倍となる。以下の説明では、第１のＯＳ１１１側及び第２のＯＳ１２１側の各々における伝送単位を「フレーム」と呼ぶ。従って、第１のＯＳ１１１側のフレームのデータサイズは１９２サンプル分のサイズ（４６０８ｂｉｔ）であり、第２のＯＳ１２１側のフレームのデータサイズはその８倍の１５３６サンプル分のデータサイズ（３６８６４ｂｉｔ）である。また、説明の便宜上、共有メモリ領域３３を第１のＯＳ１１１側のフレームのデータサイズに区分した各々を「ブロック」と称する。従って、ブロックのサイズは第１のＯＳ１１１のフレームのサイズと同一であり、この場合、１９２サンプル分のサイズ（４６０８ｂｉｔ）である。
【００３４】
また、ブート処理において、管理ＯＳ１３１が読み出す設定ファイルには共有メモリ領域３３として確保すべきメモリのサイズが定義されており、管理ＯＳ１３１はこれに従って共有メモリ領域３３を確保する。ブート処理において確保された共有メモリ領域３３には、仮想オーディオＩ／Ｆ３３１から仮想オーディオＩ／Ｆ３３２への音響信号の第１の伝送用バッファと、仮想オーディオＩ／Ｆ３３２から仮想オーディオＩ／Ｆ３３１への音響信号の第２の伝送用バッファ（以下、第１の伝送用バッファおよび第２の伝送用バッファを区別しない場合これらを総称して「伝送用バッファ」と呼ぶ）とが設けられる。上述したように、伝送用バッファは、第１のＯＳ１１１側の仮想オーディオＩ／Ｏドライバ１１９と、第２のＯＳ１２１側の仮想オーディオＩ／Ｏドライバ１２９の両方が、同期してデータの読み書きを行うことによりデータ伝送を行うために用いられる。そのため、双方の伝送が破綻することがないよう、伝送用バッファのサイズは仮想オーディオＩ／Ｏドライバ１１９用に確保されるバッファのサイズと仮想オーディオＩ／Ｏドライバ１２９用に確保されるバッファのサイズの公倍数以上である必要があり、メモリリソースの有効利用の観点から、それらの最小公倍数であることが望ましい。この場合、管理ＯＳ１３１により共有メモリ領域３３上に確保される第１の伝送用バッファおよび第２の伝送用バッファのサイズは各々３６８６４ｂｉｔ／ｃｈとなる。なお、伝送用バッファはダブルバッファ構成であってもよい。その場合、それらのバッファに要するメモリ領域のサイズは倍となる。
【００３５】
次いで、第１の仮想機械ＶＭ１と第２の仮想機械ＶＭ２との間のデータ伝送処理が行われる際に伝送用バッファに対しデータの読み書きが行われる様子を説明する。図５はダブルバッファとして構成された１ｃｈ分の伝送用バッファに対するデータの読み書き位置の一例を示した図である。図５において、Ａ面およびＢ面はダブルバッファの各面を示している。Ａ面およびＢ面は各々、図５において０〜１５の番号で示される１６個のブロック（以下、「ブロック［０］」のようにいう）と、ｆｌｇで示される通知用のフラグ領域を含んでいる。ブロック［０］〜［７］は第１の伝送用バッファであり、ブロック［８］〜［１５］は第２の伝送用バッファである。なお、図５において、ｄ［ｉ］は時刻ｔ＝ｉのタイミングで第１のＯＳ１１１側から書き込まれたデータを示し、ｗ［ｉ〜ｉ＋７］は時刻ｔ＝ｉ〜ｉ＋７の期間中の何れかのタイミングで第２のＯＳ１２１側から書き込まれたデータを示している。ここで時刻ｔは第１の仮想機械ＶＭ１が伝送用バッファに読み書きを行うフレームのサイズ（２ｍｓ）を単位時間とした時刻である。
【００３６】
フラグ領域ｆｌｇは、Ａ面とＢ面のいずれに現在データが読み書きされているかを示すフラグを格納する領域である。フラグ領域ｆｌｇに値「０」が格納されている場合、そのフラグは第１のＯＳ１１１がＢ面にデータの読み書きを行っており、第２のＯＳ１２１がＡ面にデータを読み書き可能であることを示す。一方、フラグ領域ｆｌｇに値「１」が格納されている場合、そのフラグは第１のＯＳ１１１がＡ面にデータの読み書きを行っており、第２のＯＳ１２１がＢ面にデータを読み書き可能であることを示す。第１のＯＳ１１１側の処理として、フラグ領域ｆｌｇのフラグは第１のＯＳ１１１によりＡ面もしくはＢ面の最後のブロックへのデータの読み書きが完了した時点で、メモリＡＰＩ１３３を用いてフラグ領域ｆｌｇのフラグの値を更新する。管理ＯＳ１３１はフラグ領域ｆｌｇのフラグを監視しており、フラグの更新が行われると第２のＯＳ１２１に対し、更新後のフラグに応じた面に対するデータの読み書きの開始を通知する。その結果、第１のＯＳ１１１と第２のＯＳ１２１との間で同じブロックに対するデータの読み書きが同時期に発生することはない。
【００３７】
図５（ａ）〜（ｅ）の各々は、時刻ｔのタイミングにおける伝送用バッファの状態を示し、白抜きの矢印が第１のＯＳ１１１側によるデータの読み書きの領域を、また斜線の矢印が第２のＯＳ１２１側によるデータの読み書きの領域を示している。例えば、時刻ｔ＝１６のタイミング（図５（ａ））において、フラグ領域ｆｌｇには「１」が格納されており、第１のＯＳ１１１はＡ面のブロック［０］にデータを書き込むとともに、Ａ面のブロック［８］からデータを読み出す。次の時刻ｔ＝１７のタイミング（図５（ｂ））において、第１のＯＳ１１１はＡ面のブロック［１］にデータを書き込むとともに、Ａ面のブロック［９］からデータを読み出す。このように、第１のＯＳ１１１側ではフレーム単位で読み書き対象のブロック位置を移動させながらＡ面に対するデータの読み書きが時刻ｔ＝２３まで繰り返される。
【００３８】
上記のように、第１のＯＳ１１１によりＡ面に対するデータの読み書きが行われている時刻ｔ＝１６〜２３の間、第２のＯＳ１２１側では仮想オーディオＩ／Ｏドライバ１２９から供給されるクロックに同期した第２のＯＳ１２１側のフレームの期間内（１６ｍｓ）に、Ｂ面に対するデータの読み書きが行われる。第２のＯＳ１２１のフレームのサイズは第１のＯＳ１１１のフレームのサイズの８倍であるため、第２のＯＳ１２１側では８ブロック分のデータがまとめて読み書きされる。
【００３９】
第１のＯＳ１１１側では、時刻ｔ＝２３のタイミングにおいてＡ面のブロック［７］に対するデータの書き込みとＡ面のブロック［１５］からのデータの読み出しが完了すると、メモリＡＰＩ１３３が用いられてフラグ領域ｆｌｇのフラグの値が「０」に書き換えられる。このフラグの更新に応じて、管理ＯＳ１３１は第２のＯＳ１２１に対し、データの読み書き対象をＢ面からＡ面に変更するように通知する。
【００４０】
その後、時刻ｔ＝２４のタイミング（図５（ｃ））において、第１のＯＳ１１１はＢ面のブロック［０］にデータを書き込むとともに、Ｂ面のブロック［８］からデータを読み出す。以降、第１のＯＳ１１１側ではフレーム毎に読み書き対象のブロック位置を移動しながらＢ面に対するデータの読み書きが時刻ｔ＝３１のタイミング（図５（ｄ））まで繰り返される。また、第２のＯＳ１２１側では、時刻ｔ＝２４〜３１の期間内に、Ａ面に対するデータの読み書きが行われる。
【００４１】
第１のＯＳ１１１側では、時刻ｔ＝３１のタイミングにおいてＢ面のブロック［７］に対するデータの書き込みとＢ面のブロック［１５］からのデータの読み出しが完了すると、メモリＡＰＩ１３３が用いられてフラグ領域ｆｌｇのフラグの値が「１」に書き換えられる。このフラグの更新に応じて、管理ＯＳ１３１は第２のＯＳ１２１に対し、データの読み書き対象をＡ面からＢ面に変更するように通知する。その後、図５（ｅ）に示されるように、第１のＯＳ１１１および第２のＯＳ１２１によるデータの読み書きの対象面が再び変更され、時刻ｔ＝１６〜３１までと同様の処理が以降繰り返される。
【００４２】
３．構成例
第１の仮想機械ＶＭ１と第２の仮想機械ＶＭ２とは１つの統合されたシステムとして機能させることができる。この場合、各種処理は要求される低レイテンシの程度に応じて、第１の仮想機械ＶＭ１で動作する第１のＯＳ１１１と第２の仮想機械ＶＭ２で動作する第２のＯＳ１２１との間で適宜分担して行われることが望ましい。例えば、マイクから入力した音響信号の周波数特性を調整してスピーカから出力する等、信号処理の結果を直ちにユーザにフィードバックする必要のある処理（即時性を要する処理）をリアルタイムＯＳである第１のＯＳ１１１で実行し、マイクから入力した音響信号をオーディオデータファイルとして保存する等の即時性を要しない処理を汎用ＯＳである第２のＯＳ１２１で実行されるよう構成することが望ましい。以下にそのようなＯＳ間の処理分担の構成例を示す。
【００４３】
３−１．構成例１
図６は第１のＯＳ１１１上で音響信号処理エンジン１１２がミキシング等の処理を施した音響信号を、第２のＯＳ１２１上でオーディオ編集アプリケーション１２２が記録するように構成したコンピュータ装置１における音響信号の処理の流れを示した図である。
【００４４】
図６において、外部機器（マイク等）から複数チャンネルの音響信号が同時にオーディオＩ／Ｏドライバ１１６に入力される（Ｓ１０１）と、オーディオＩ／Ｏドライバ１１６は入力された音響信号を音響信号処理エンジン１１２に供給する（Ｓ１０２）。
【００４５】
音響信号処理エンジン１１２は、供給された音響信号に対して周波数特性の調整やミキシング等の信号処理を施した後、仮想オーディオＩ／Ｏドライバ１１９に供給する（Ｓ１０３）。仮想オーディオＩ／Ｏドライバ１１９は供給された音響信号を出力する。仮想オーディオＩ／Ｏドライバ１１９から出力された音響信号は共有メモリ領域３３を用いて構築された伝送路を介して仮想オーディオＩ／Ｏドライバ１２９に入力される（Ｓ１０４）。仮想オーディオＩ／Ｏドライバ１２９は入力された音響信号をオーディオ編集アプリケーション１２２に供給する（Ｓ１０５）。オーディオ編集アプリケーション１２２は供給された音響信号（すなわち第１の仮想機械ＶＭ１から伝送されてきた音響信号）をメモリ３２Ｖに記録（すなわち録音）する。
【００４６】
３−２．構成例２
図７は、オーディオ編集アプリケーション１２２において再生された音響信号を音響信号処理エンジン１１２においてマイク等の外部機器から入力される音響信号とミキシング等した後、アンプ等の外部機器に出力するように構成したコンピュータ装置１における音響信号の処理の流れを示した図である。
【００４７】
図７において、外部機器（マイク等）から音響信号がオーディオＩ／Ｏドライバ１１６に入力される（Ｓ２０１）。オーディオＩ／Ｏドライバ１１６は入力された音響信号を音響信号処理エンジン１１２に供給する（Ｓ２０２）。同時に、オーディオ編集アプリケーション１２２は、メモリ３２Ｖに記憶されている音響信号を読み出して再生する。オーディオ編集アプリケーション１２２によって再生された音響信号は、仮想オーディオＩ／Ｏドライバ１２９に供給され（Ｓ３０１）、共有メモリ領域３３を用いて構築された伝送路を介して仮想オーディオＩ／Ｏドライバ１１９に伝送され（Ｓ３０２）、音響信号処理エンジン１１２に供給される（Ｓ３０３）。
【００４８】
音響信号処理エンジン１１２は、ステップＳ２０２においてオーディオＩ／Ｏドライバ１１６から供給される音響信号とステップＳ３０３において仮想オーディオＩ／Ｏドライバ１１９から供給される音響信号とをミキシングし、ミキシングした音響信号をオーディオＩ／Ｏドライバ１１６と仮想オーディオＩ／Ｏドライバ１１９とに供給する（Ｓ４０１）。オーディオＩ／Ｏドライバ１１６に供給された音響信号は外部機器（アンプ等）に出力される（Ｓ４０２）。一方、仮想オーディオＩ／Ｏドライバ１１９に供給された音響信号は、共有メモリ領域３３を用いて構築された伝送路を介して仮想オーディオＩ／Ｏドライバ１２９に伝送され（Ｓ４０３）、オーディオ編集アプリケーション１２２に供給される（Ｓ４０４）。オーディオ編集アプリケーション１２２は、仮想オーディオＩ／Ｏドライバ１２９から供給される音響信号をメモリ３２Ｖに記録（すなわち録音）する。
【００４９】
以上説明したように本実施形態では、コンピュータ装置上で各々独立して動作する複数のＯＳのうち少なくとも一方をリアルタイムＯＳとし、リアルタイムＯＳ上で低レイテンシの保証が求められる音響信号処理が行われ、他のＯＳにおいて即時性が求められない音響信号処理やＧＵＩ処理等が行われる。その結果、ＤＳＰ等のプロセッサを用いる場合と比較し低コストで低レイテンシが求められる音響信号処理が実現される。その際、ＯＳおよびＯＳ上で動作するアプリケーションは既存のものをそのまま用いることができるため、それらの開発コストも要しない。
【００５０】
４．変形例
以上の実施形態は本発明の技術的思想の範囲内において様々に変形可能である。以下にそれらの変形の例を示す。尚、以下の変形例は適宜組み合わせられてもよい。
【００５１】
上述の実施形態では、第１のＯＳ１１１をリアルタイムＯＳとし、低レイテンシが求められる信号処理をリアルタイムＯＳ上で実行される音響信号処理エンジン１１２にて行うものとしたが、リアルタイム用途に対応できる程度処理の応答速度が速いなど、音響信号処理に要求されるレイテンシが達成できる場合には、第１のＯＳ１１１を第２のＯＳ１２１と同様の汎用ＯＳとしてもよい。
【００５２】
また、上述の実施形態では、第１のＯＳ１１１と第２のＯＳ１２１とに各々異なるプロセッサコアをアサインし、第１のＯＳ１１１と第２のＯＳ１２１とは、それぞれアサインされた異なるプロセッサコア上で実行される構成が採用されているが、第１のＯＳ１１１と第２のＯＳ１２１に対するプロセッサコアのアサインの方法はこれに限られない。例えば、管理ＯＳが時分割等により同じプロセッサコアを第１のＯＳ１１１と第２のＯＳ１２１にアサインする構成が採用されてもよい。
【００５３】
また、上述の実施形態では、管理ＯＳ１３１は第２の仮想機械ＶＭ２にアサインされたプロセッサコアやメモリ領域等のリソースを共用するものとしたが、管理ＯＳ１３１は汎用ＯＳ上で動作するハイパーバイザに限られず、コンピュータ装置１のハードウェア上で直接動作するハイパーバイザとして構成されてもよい。また、管理ＯＳ１３１が利用するリソースは第２のＯＳ１２１が利用するリソースに限られず、第１のＯＳ１１１が利用するリソースを管理ＯＳ１３１が共用する構成や、他のいずれのＯＳにも利用されていないリソースを管理ＯＳ１３１が専有する構成が採用されてもよい。あるいは、第１のＯＳ１１１または第２のＯＳ１２１のいずれかが管理ＯＳ１３１としての機能を具備するホストＯＳとして構成し、他方のＯＳをホストＯＳにより管理されるゲストＯＳとして構成してもよい。ただし、第１の仮想機械ＶＭ１はプロセッサコアの一部を専有する等、第１のＯＳ１１１にて実行される音響信号処理の応答遅延の発生を防ぐことが望ましい。
【００５４】
また、上述の実施形態では、コンピュータ装置１において２つの仮想機械が実現される構成が採用されているが、実現される仮想機械の数は３以上であってもよい。従って、それらの仮想機械上で実行されるＯＳの数もまた、３以上であってもよい。この場合、共有メモリ領域を利用した仮想伝送路３を各仮想機械間それぞれに設けることが望ましい。また、ひとつの仮想機械上で複数のＯＳが動作してもよい。
【００５５】
また、上述の実施形態では、コンピュータ装置１のプロセッサ１０はプロセッサコアを４つ備えるものとしたが、コンピュータ装置１のプロセッサが備えるプロセッサコアの数は限定されず、複数の仮想機械のそれぞれに１又は複数のプロセッサコアが割り当てられるものであればよい。
【００５６】
また、上述の実施形態では、第１の仮想機械ＶＭ１および第２の仮想機械ＶＭ２は、起動後常時、仮想化支援コンポーネント１３２の制御下にあることが想定されているが、仮想化処理が完了後は第１の仮想機械ＶＭ１および第２の仮想機械ＶＭ２の一方もしくは両方が、仮想化支援コンポーネント１３２を迂回して直接リソースにアクセスする構成が採用されてもよい。この場合、管理ＯＳ１３１の介入が無い分、一般的に処理速度が速くなる。
【００５７】
また、上述の実施形態では、共有メモリ領域３３上に確保された物理的に同一の伝送用バッファを第１のＯＳ１１１および第２のＯＳ１２１が共用する構成が採用されている。共有メモリ領域３３を用いた伝送路の構築の方法はそれに限られない。例えば、管理ＯＳ１３１が共有メモリ領域３３上に第１のＯＳ１１１用のバッファと第２のＯＳ１２１用のバッファを独立して確保し、管理ＯＳ１３１がそれらのバッファ間でデータをコピーすることによりＯＳ間のデータの共有を実現する構成など、他の構成が採用されてもよい。
【００５８】
また、上述の実施形態では、伝送用バッファに対する第１のＯＳ１１１および第２のＯＳ１２１によるデータの読み書きの制御としては、第１のＯＳ１１１により更新されるフラグを管理ＯＳ１３１が監視し、フラグの更新に応じて第２のＯＳ１２１に対し通知を行う構成が採用されている。管理ＯＳ１３１による伝送用バッファの制御の方法はこれに限られず、例えば管理ＯＳ１３１が第１のＯＳ１１１および第２のＯＳ１２１の伝送用バッファに対するデータの読み書き位置を監視し、一方のＯＳにより所定の領域に対するデータの読み書きが完了すると、他方のＯＳに対しその領域に対するデータの読み書きを開始するように通知する方法、あるいは、管理ＯＳを介さず、共有メモリ内に同期用のデータを配置し、第１のＯＳ１１１および第２のＯＳ１２１がそれぞれこの同期用のデータをポーリングすることでＯＳ間の同期をとる方法など、他の方法が採用されてもよい。
【００５９】
また、上述の実施形態では、第１の仮想機械ＶＭ１においてはオーディオＩ／Ｆ４０Ｖを発信源とするクロック信号が、また第２の仮想機械ＶＭ２においては仮想オーディオＩ／Ｆ３３２から供給されるクロック信号が処理の同期に利用される構成が採用されているが、各仮想機械がいずれのクロック信号を処理の同期に利用するかは任意に変更可能である。例えば、第１の仮想機械ＶＭ１がオーディオＩ／Ｆ４０Ｖを介してデータの送受信を行う外部のオーディオ機器等から受け取るクロック信号を処理の同期に用いる構成が採用されてもよい。
【００６０】
また、上述の実施形態では、第１のＯＳ１１１および第２のＯＳ１２１に従い伝送用バッファに読み書きされるデータのサイズは各ＯＳにおいて設定されている音響信号の処理単位であるフレームのサイズであるものとしたが、伝送用バッファに読み書きするデータのサイズはフレームのサイズと異なってもよい。例えば、第２のＯＳ１２１に従い伝送用バッファに読み書きされるデータのサイズを、第１のＯＳ１１１に従い伝送用バッファに読み書きされるデータのサイズ（第１のＯＳ１１１におけるフレームサイズ）と同一にしてもよい。その場合、例えばメモリＡＰＩ１３４が、仮想オーディオＩ／Ｏドライバ１２９のバッファ（３６８６４ｂｉｔ）から２ｍｓのクロック周期毎に４６０８ｂｉｔずつデータを読み出し、伝送用バッファにそれらのデータを書き込むように構成すればよい。ただし、上述の実施形態のように第２のＯＳ１２１が汎用ＯＳである場合、ジッタの発生防止の観点からは、伝送用バッファへのデータの読み書きのサイズは大きい方が望ましい。
【００６１】
また、上述の実施形態では、第１の仮想機械ＶＭ１と第２の仮想機械ＶＭ２との間で双方向にデータを送受信する場合について説明したが、これに限らず、どちらか一方向のデータ伝送を行う構成であってもよい。例えば、仮想オーディオＩ／Ｆ３３１および３３２が、第１の仮想機械ＶＭ１から第２の仮想機械ＶＭ２へのデータ伝送のみを実現するものであってもよい。
【００６２】
なお、本発明は、プログラム以外に、本発明にかかるプログラムに従いコンピュータが行う処理の方法や、本発明にかかるプログラムがコンピュータに読み取り可能に記録された記録媒体も提供する。また、本発明にかかるプログラムは、記録媒体に記録されてユーザに提供される以外に、インターネット等のネットワークを介して端末装置にダウンロードされることでユーザに提供されてもよい。また、本発明は、本発明にかかるプログラムに従って動作する音響信号処理装置も提供する。
【００６３】
本発明にかかるプログラムに従って動作する音響信号処理装置は、第１のＯＳ１１１、第２のＯＳ１２１、管理ＯＳ１３１がＥＰＲＯＭ等にユーザにより書き換え不可能に記憶され、装置の起動に伴いそれらのＯＳが起動して音響信号処理装置が構築される組み込みシステムとして構成されてもよい。また、この場合において、第１のＯＳ１１１や第２のＯＳ１２１上で実行されるアプリケーションプログラム（音響信号処理エンジン１１２、オーディオ編集アプリケーション１２２等）がＥＰＲＯＭ等にユーザにより書き換え不可能に記憶されている構成が採用されてもよい。
【符号の説明】
【００６４】
１…コンピュータ装置、２，３…伝送路、１０…プロセッサ、２０…メモリ、３４…メモリ、４０…オーディオＩ／Ｆ、５０…その他のデバイス、６０…バス、１１１…第１のＯＳ、１１２…音響信号処理エンジン、１１６…オーディオＩ／Ｏドライバ、１１９…仮想オーディオＩ／Ｏドライバ、１３２…仮想化支援コンポーネント、１３１…管理ＯＳ、１２１…第２のＯＳ、１２２…オーディオ編集アプリケーション、１２９…仮想オーディオＩ／Ｏドライバ、１３３…メモリＡＰＩ、１３４…メモリＡＰＩ、３３１…仮想オーディオＩ／Ｆ、３３２…仮想オーディオＩ／Ｆ。
【図１】
2014027595.tif 000003
【図２】
2014027595.tif 000004
【図３】
2014027595.tif 000005
【図４】
2014027595.tif 000006
【図５】
2014027595.tif 000007
【図６】
2014027595.tif 000008
【図７】
2014027595.tif 000009