(57)【特許請求の範囲】
【請求項１】
複数の仮想プロセッサとして動作するよう構成された処理装置であって、
１以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行するためのコードを含む第１プログラム実行メモリによって提供されるメモリ空間を有する第１仮想プログラム空間と、
１以上のリアルタイム処理を実行するためのコードを含む第２プログラム実行メモリによって提供されるメモリ空間を有する第２仮想プログラム空間と、
第１オペレーティングモード及び第２オペレーティングモードで動作する中央処理演算装置（ＣＰＵ）であって、前記第２仮想プログラム空間を使用することなく、及び、前記第２オペレーティングモードで実行される１以上の前記リアルタイム処理に影響を与えることなく、前記第１オペレーティングモードのための前記第１仮想プログラム空間を使用してオペレーティングシステム及びアプリケーションアクティビティを実行するＣＰＵと、
前記ＣＰＵに前記第１オペレーティングモードから前記第２オペレーティングモードへの切り替えを行わせる割り込みを、周期的にトリガするタイマ回路と
を備え、
前記タイマ回路は、前記処理装置がメディアパケットを受信する間隔よりも短い間隔で前記割り込みを周期的にトリガする
処理装置。
【請求項２】
複数の仮想プロセッサとして動作するよう構成された処理装置であって、
１以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行するためのコードを含む第１プログラム実行メモリによって提供されるメモリ空間を有する第１仮想プログラム空間と、
１以上のリアルタイム処理を実行するためのコードを含む第２プログラム実行メモリによって提供されるメモリ空間を有する第２仮想プログラム空間と、
第１オペレーティングモード及び第２オペレーティングモードで動作する中央処理演算装置（ＣＰＵ）であって、前記第２仮想プログラム空間を使用することなく、及び、前記第２オペレーティングモードで実行される１以上の前記リアルタイム処理に影響を与えることなく、前記第１オペレーティングモードのための前記第１仮想プログラム空間を使用してオペレーティングシステム及びアプリケーションアクティビティを実行するＣＰＵと
を備え、
前記第２仮想プログラム空間は更に、メディアパケットを受信すると、前記ＣＰＵに前記第１オペレーティングモードから前記第２オペレーティングモードへの切り替えを行わせる割り込みをトリガする第２入出力回路のセットにアクセスするためのメモリ空間を有する
処理装置。
【請求項３】
前記第２仮想プログラム空間は更に、第２入出力回路のセットにアクセスするためのメモリ空間を有する
請求項１に記載の処理装置。
【請求項４】
前記第２仮想プログラム空間は更に、メディアパケットを受信すると、前記ＣＰＵに前記第１オペレーティングモードから前記第２オペレーティングモードへの切り替えを行わせる前記割り込みをトリガする第２入出力回路のセットにアクセスするためのメモリ空間を有する
請求項１に記載の処理装置。
【請求項５】
前記オペレーティングシステム及び前記第１オペレーティングモードの任意のアプリケーションのうちの少なくとも１つが、前記第２入出力回路のセットを変更することを防ぐアクセス回路を更に備える請求項２から４のいずれか一項に記載の処理装置。
【請求項６】
前記第２仮想プログラム空間は更に、第２記憶メモリによって提供されるメモリ空間を有する
請求項１から５のいずれか一項に記載の処理装置。
【請求項７】
前記オペレーティングシステム及び前記第１オペレーティングモードの任意のアプリケーションのうちの少なくとも１つが、前記第２記憶メモリを変更することを防ぐアクセス回路
を更に備える請求項６に記載の処理装置。
【請求項８】
マスク不可能な前記割り込みを生成する割り込み制御回路
を更に備える請求項１から７のいずれか一項に記載の処理装置。
【請求項９】
前記ＣＰＵが前記第２オペレーティングモードで動作している間に前記第１オペレーティングモードのＣＰＵ動作状態が保存されるように、前記割り込みが起動された場合に前記ＣＰＵの動作状態を格納する第１状態記憶メモリ
を更に備える請求項１から８のいずれか一項に記載の処理装置。
【請求項１０】
前記ＣＰＵが前記第１オペレーティングモードで動作している間に前記第２オペレーティングモードのＣＰＵ動作状態を格納する第２状態記憶メモリ
を更に備える請求項１から９のいずれか一項に記載の処理装置。
【請求項１１】
前記第２オペレーティングモードの間に、前記ＣＰＵがボイスオーバーインターネットプロトコル（ＶｏＩＰ）メディア処理をサポートするようにプログラムされている
請求項１から１０のいずれか一項に記載の処理装置。
【請求項１２】
前記１以上のリアルタイム処理は、複数のタイムスロットにわたってメディアパケットを処理し、
前記複数のタイムスロットの期間の長さ及び周期のうちの少なくとも一方が、前記メディアパケットのサービス品質（ＱｏＳ）要求に応じて動的に調整可能である請求項１から１１のいずれか一項に記載の処理装置。
【請求項１３】
１つの中央演算処理装置（ＣＰＵ）で複数の仮想プロセッサを実行する方法であって、
１以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行する第１プログラム実行メモリによって提供されるメモリ空間を有する第１仮想プログラム空間を規定する段階と、
１以上のリアルタイム処理を実行するための第２プログラム実行メモリによって提供されるメモリ空間を有する第２仮想プログラム空間を規定する段階と、
前記ＣＰＵに第１オペレーティングモードから第２オペレーティングモードへの切り替えを行わせる割り込みをメディアパケットの受信間隔よりも短い間隔で周期的にトリガして、割り込みのストリームを生成する段階と、
前記第１オペレーティングモードと前記第２オペレーティングモードとの間で前記ＣＰＵの切り替えを行う段階と
を備え、
前記切り替える段階によって、前記第１オペレーティングモードの間に発生する任意のオペレーティングアクティビティが前記第２オペレーティングモードの間に実行されるリアルタイム処理に影響を与えることなく、前記第１オペレーティングモードの間に前記ＣＰＵが前記第１仮想プログラム空間から動作を行う方法。
【請求項１４】
１つの中央演算処理装置（ＣＰＵ）で複数の仮想プロセッサを実行する方法であって、
１以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行する第１プログラム実行メモリによって提供されるメモリ空間を有する第１仮想プログラム空間を規定する段階と、
１以上のリアルタイム処理を実行するための第２プログラム実行メモリによって提供されるメモリ空間と、メディアパケットを受信すると前記ＣＰＵに第１オペレーティングモードから第２オペレーティングモードへの切り替えを行わせる割り込みをトリガする第２入出力回路のセットにアクセスするためのメモリ空間とを有する第２仮想プログラム空間を規定する段階と、
前記メディアパケットのストリームを受信したことに応答して、前記割り込みのストリームを生成する段階と、
前記第１オペレーティングモードと前記第２オペレーティングモードとの間で前記ＣＰＵの切り替えを行う段階と
を備え、
前記切り替える段階によって、前記第１オペレーティングモードの間に発生する任意のオペレーティングアクティビティが前記第２オペレーティングモードの間に実行されるリアルタイム処理に影響を与えることなく、前記第１オペレーティングモードの間に前記ＣＰＵが前記第１仮想プログラム空間から動作を行う方法。
【請求項１５】
前記割り込みのストリームを生成する段階は、前記メディアパケットのストリームを受信したことに応答して、前記ＣＰＵに前記第１オペレーティングモードから前記第２オペレーティングモードへの切り替えを行わせる、マスク不可能な割り込みのストリームを生成する段階を有する
請求項１３に記載の方法。
【請求項１６】
前記第２仮想プログラム空間を規定する段階は、前記第２仮想プログラム空間の一部として第２記憶メモリによって提供されるメモリ空間を規定する段階を有し、
前記オペレーティングシステム及び前記第１オペレーティングモードの全てのアプリケーションは、前記第２記憶メモリを変更することができない
請求項１３から１５のいずれか一項に記載の方法。
【請求項１７】
前記第２仮想プログラム空間を規定する段階は、前記第２仮想プログラム空間の一部として第２入出力回路のセットにアクセスするためのメモリ空間を規定する段階を有し、
前記オペレーティングシステム及び前記第１オペレーティングモードの全てのアプリケーションは、前記第２入出力回路のセットを変更することができない
請求項１６に記載の方法。
【請求項１８】
前記ＣＰＵを前記第２オペレーティングモードへと切り替えるために、前記第１オペレーティングモードで動作している間に、マスク不可能な前記割り込みのストリームを生成する段階を更に備える
請求項１３から１７のいずれか一項に記載の方法。
【請求項１９】
前記割り込みのそれぞれの前記生成に応じて、前記ＣＰＵが前記第２オペレーティングモードで動作している間に前記第１オぺレーティングモードのＣＰＵ動作状態が保存されているように、前記ＣＰＵの動作状態を格納する段階
を更に備える請求項１３から１８のいずれか一項に記載の方法。
【請求項２０】
前記第２オペレーティングモードの間に、ボイスオーバーインターネットプロトコル（ＶｏＩＰ）メディアを処理するように前記ＣＰＵを動作させる段階
を更に備える請求項１３から１９のいずれか一項に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
［優先権情報］
本願は、２０１０年１月１３日出願の米国仮出願61/294,711号"HARDWARE VIRTUALIZATION FOR VoIP MEDIA PROCESSING（ＶｏＩＰメディア処理のためのハードウェア仮想化）"の優先権を主張するものであり、前記出願の内容は、参照により本明細書に組み込まれる。
【０００２】
本発明の理解するための背景を、一般的に説明することを目的として、背景技術を説明する。以下、背景技術の章において説明される範囲及び出願時には従来技術として認められていない側面の範囲において、本願発明者の仕事は、本開示に対して明示的に又は非明示的にも、従来技術であるとは認めていない。
【０００３】
コンピュータベースの処理システムは、今では、現代の消費者家電の実質的に全てで使用されている。例えば、住居用ゲートウェイは、多くの場合、２つ又は３つのプロセッサを含み、これに加えて、それぞれが異なる機能を実行するプロセッサを有するその他の様々な電子ハードウェアを含む。一例として、ゲートウェイのような電気通信デバイス内の第１プロセッサを単独で、ボイスオーバーアイピー（voice over IP）、テレビジョンオーバーアイピー（television over IP）又はビデオオーバーアイピー（video over IP）のようなストリーミング媒体の処理に使用することができ、電気通信デバイス内の第２プロセッサを、ストリーミング媒体を提供するといった様々なアプリケーション、又は、インタラクティブゲーム及びカレンダーを提供するためのアプリケーション等を実行するのに使用してもよい。本明細書において、"プロセッサ"という言葉は、個別のデバイス及びマルチコアプロセッサデバイス内の多数プロセッサのうちの１つを指す。
【０００４】
複数のプロセッサを使用することによってプロセッサの安定性を得ることが望ましいが、複数のプロセッサを使用することは相当のコストがかかる。従来の実装では、リアルタイム媒体処理が好適に保護されない、同時に実行されるアプリケーションプログラムに"グリッチ"が発生する可能性がある、又は、ソフトウェアの更新が必要となることから、理論上、リアルタイム媒体処理及びソフトウェア層における様々なその他のアプリケーションの両方をサポートするように構成される従来の１つのプロセッサを使用した方法は避けられていた。
【発明の概要】
【０００５】
本発明の様々な側面及び実施形態について、以下に詳細に説明する。
【０００６】
一実施形態において、複数の仮想プロセッサとして動作するよう構成された処理装置であって、１以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行するためのコードを含む第１プログラム実行メモリを有する第１仮想プログラム空間と、１以上のリアルタイム処理を実行するためのコードを含む第２プログラム実行メモリを有する第２仮想プログラム空間と、第１オペレーティングモード及び第２オペレーティングモードで動作する中央処理演算装置（ＣＰＵ）であって、第２仮想オペレーティングモードを使用することなく、及び、第２オペレーティングモードで実行される１以上のリアルタイム処理に大きな影響を与えることなく、第１オペレーティングモードのための第１仮想プログラム空間を使用してオペレーティングシステム及びアプリケーションアクティビティを実行するＣＰＵとを備える。
【０００７】
別の実施形態では、１つの中央演算処理装置（ＣＰＵ）で複数の仮想プロセッサを実行する方法であって、方法は、１以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行する第１プログラム実行メモリを有する第１仮想プログラム空間を規定する段階と、１以上のリアルタイム処理を実行するためのコードを含む第２プログラム実行メモリを有する第２仮想プログラム空間を規定する段階と、第１オペレーティングモードと第２オペレーティングモードとの間でＣＰＵの切り替えを行う段階とを備え、切り替える段階によって、第１オペレーティングモードの間に発生する任意のオペレーティングアクティビティが第２オペレーティングモードの間に実行されるリアルタイム処理に大きな影響を与えることなく、第１オペレーティングモードの間にＣＰＵが第１仮想プログラム空間から操作を行う。
【０００８】
例として提示される本開示の様々な実施形態が添付の図面を参照して、以下に詳細に説明される。図面において、同様な参照番号は同様な構成要素を指している。
【図面の簡単な説明】
【０００９】
【図１】２つの別個の仮想プロセッサとして機能可能な処理システムを示した図である。
【図２】図１のＣＰＵの詳細を示した図である。
【図３】図１の２つの仮想プロセッサを実装するためのタイミング図である。
【図４】開示される方法のオペレーション及び１つのプロセッサを使用して複数の仮想プロセッサを実行するシステムの概略を示したフローチャートである。
【発明を実施するための形態】
【００１０】
具体的な例及び／又は具体的な実施形態と共に、以下に開示される方法及びシステムを概略的に説明されている。例えば、詳細な例及び／又は実施形態を参照する場合、この背後にある原理は１つの実施形態に限定されず、当業者であれば理解できるように、そうでないと明示されない限り、その他の方法及びシステムに拡張して使用されてもよい。
【００１１】
以下、２つの別個の仮想プロセッサとして動作するよう構成される１つの中央演算処理装置（ＣＰＵ）を有する処理システムについて説明される。一実施形態において、１つの仮想プロセッサは、オペレーティングシステムを使用して汎用アプリケーションを実行するように構成され、もう１つの仮想プロセッサは、信頼性の高い態様でリアルタイム処理を実行するように構成される。以下に説明する方法及びシステムの利点のうちの１つは、周知のオペレーティングシステムの明確なマルチプロセッシング（例えば、１つのソフトウェア層における異なるアプリケーションを実行する異なる複数のウインドウ）とは異なり、以下に説明される仮想プロセッサの実施形態は、異なる複数のハードウェアスレッドを使用するように設計されているため、一方の仮想プロセッサに問題が生じたとしても、もう一方の仮想プロセッサがタイムクリティカルなオペレーションを実行することができる。したがって、一実施形態において、１つのＣＰＵが使用されるが、一方の仮想プロセッサにおいて再起動を必要とするような"クラッシュ"状態が発生していたとしても、中断することなくもう一方の仮想プロセッサにより、様々なリアルタイムクリティカルな処理オペレーションを信頼性高く実行することができる。
【００１２】
図１には、一実施形態に係る、２つの別個の仮想プロセッサとして機能するように構成される処理装置１００が示されている。図１に示すように、処理装置１００は、ＣＰＵ１１０、メモリ管理ユニット（ＭＭＵ）１１２、割り込み制御回路１１４、タイマ回路１１６、第１仮想プログラム空間１２０及び第２仮想プログラム空間１３０を備える。第１仮想プログラム空間１２０及び第２仮想プログラム空間１３０は、ＣＰＵ１１０で利用可能な全メモリ空間１１１内に画定される別個の空間である。
【００１３】
一実施形態において、第１仮想プログラム空間１２０は、第１プログラム実行メモリ１２２、第１記憶メモリ１２４、及び、キーパッド、ディスプレイ、スピーカ等任意の数の様々な周辺機器と接続される第１入出力回路１２６の１セットを有する。第１プログラム実行メモリ１２２は、厳密な応答時間を要求しないヒューマンインタラクティブアプリケーション（例えば、キーパッド入力及び表示）のような複数のアプリケーションをサポート可能な非リアルタイムオペレーティングシステム（ＯＳ）を実行するコードを含む。第１記憶メモリ１２４は、第１プログラム実行メモリ１２２に存在するアプリケーション及びＯＳをサポートするべく、揮発性及び不揮発性ランダムアクセスメモリ（ＲＡＭ）のような、書き込み及び読み出しが可能な任意の種類及び任意の数のメモリを含む。
【００１４】
一実施形態において、第２仮想プログラム空間１３０は、第２プログラム実行メモリ１３２、第２記憶メモリ１３４、及び、時分割多重（ＴＤＭ）態様で無線媒体ベースのパケットを送受信するポート、Ｔ１／Ｅ１データインターフェース、イーサーネットインターフェース等の任意の数の様々な通信／媒体周辺機器と接続される第２入出力回路１３６のセットを有する。
【００１５】
第２プログラム実行メモリ１３２には、入力される及び出力される媒体をタイムリーに処理可能な、複数のリアルタイム処理を実行するよう構成されるコードが書き込まれている。例えば、一実施形態において、第２プログラム実行メモリ１３２は、ボイスオーバーインターネットプロトコル（ＶｏＩＰ）処理のためのコード、及び／又は、任意の数のボイスコーデック、ＤＴＭＦリレーサポート、パケットロス隠蔽、エコー除去、音声アクティビティ検出、コンフォートノイズ生成、ユニバーサルマルチトーン生成及び／又は検出、セルラーＩＤ生成及び／又は検出、音声ミキシング、ファックス生成及びデコードのためのコードを含む。第１記憶メモリ１２４と同様に、第２記憶メモリ１３４は、リアルタイム処理をサポートするべく、読み出し及び書き込み可能な任意の数及び任意の種類のメモリを含む。
【００１６】
本開示の目的から、メモリ１２２、１２４、１３２及び１３４は、論理的に異なるエンティティとして描かれているが、ある実施形態では、これらは物理的に１つのメモリユニットに統合されていてもよい。特定の実施形態では、例えば、第１記憶メモリ１２４及び第２記憶メモリ１３４は、１つのＲＡＭの２つの別個の部分として存在し、第１プログラム実行メモリ１２２及び第２プログラム実行メモリ１３２は、リードオンリーメモリ（ＲＯＭ）のような別の１つのメモリデバイスの異なる部分として存在する。これに替えて、別の実施形態では、４つのメモリ１２２、１２４、１３２及び１３４の全てが、１つのメモリデバイスの異なる部分として、又は、１つの集積回路に組み込まれる異なるメモリセグメントとして存在する。
【００１７】
一般的に、第１オペレーティング空間のＯＳ及びアプリケーションが、第２オペレーティング空間１３０のリアルタイム処理の性能に"明確な悪影響を与えない"限りにおいて、第１オペレーティング空間１２０と第２オペレーティング空間１３０との間のリソースの重複が可能である。例えば、第１プログラム実行メモリ１２２及び第２プログラム実行メモリ１３２は、第２オペレーティング空間１３０のリアルタイム処理の性能に明確な悪影響を与えない限り、コードの重複を防ぐべく、例えば、ＲＯＭに埋め込まれたベーシック入出力システム（ＢＩＯＳ）のような、共通コードセグメントを共有することができる。また、本開示のコンテキストにおいて、第２オペレーティング空間１３０のリアルタイム処理の性能への明確な悪影響について考えることなく、コード実行にトランスパレント（性能向上を除く）なキャッシュメモリのような特定のメモリリソースを、オペレーティング空間１２０及び１３０の間で共有することができる。
【００１８】
動作時には、処理装置１００は、全てのデバイス１１０〜１３６が、所定の状態又は初期状態に設定されるように、電力投入リブートのようなハードウェア初期化プロセスを実行する。
【００１９】
動作時には、ＣＰＵ１１０は、割り込み制御回路１１４、タイマ回路１１６及び第２仮想プログラム空間１３０の第２入出力回路１３６のセットを初期化する。割り込み制御回路１１４及びタイマ回路１１６の一部又は全体を、第２仮想プログラム空間１３０の一部として考える。様々な実施形態において、ＭＭＵ１１２、割り込み制御回路１１４、タイマ回路１１６、及び、場合によっては第２入出力回路１３６のセットの一部は、プログラミングされない"固定"デバイスであり、その振る舞いに対してＣＰＵが非常に限定された影響を与える又は全く影響を与えない。このような実施形態において、第２仮想プログラム空間１２０の初期化は、例えば、回路バッファをゼロにする、又は、第２記憶メモリ１３４のポインタをゼロにするといったように、非常に限定されたタスクである。
【００２０】
ＭＭＵ１１２は、ＣＰＵ１１０が要求するメモリ及び周辺デバイスへのアクセスを扱う役割をするハードウェア構成要素である。その機能には、仮想アドレスの物理アドレスへの変換（すなわち、仮想メモリ管理）、メモリ保護、キャッシュ制御及びバス調停が含まれる。このＭＭＵ１１２は、メモリ保護が破られた時に、割り込み又はフラグを生成するように構成されている。
【００２１】
割り込み制御回路１１４は、１以上のＣＰＵアクセス可能ラインに、複数の割り込みソースを組み合わせて、割り込み出力に優先順位レベルを割り当てるのに使用されるデバイスである。この割り込み制御回路１１４は、ＴＤＭフレーム境界を示す割り込みのような、マスク不可能な優先順位の高い割り込みをＣＰＵ１１０に示す能力、及び、複数の優先順位の低い割り込みを示す能力を有する。
【００２２】
タイマ回路１１６は、優先順位の高い、マスク不可能及び／又は優先順位の低い割り込みを、周期的に生成するために使用されるカウンタである。
【００２３】
一実施形態において、ＣＰＵ１１０は更に、第１仮想プログラム空間１２０の第１入出力回路１２６のセットを初期化し、その後に、ＯＳの初期化を行い、サービスアプリケーションを更新するよう指示されたアプリケーション等の、第１プログラム実行メモリの特に指定されたアプリケーションを初期化する。
【００２４】
図１の実施形態において、割り込み制御回路１１４は、ＣＰＵ１１０が通常は（直接又は間接的に）マスクできない"優先度の高い"割り込みを含む。したがって、初期化の後は、ＣＰＵ１１０は、このようなマスク不可能な優先度の高い割り込みによって、第１仮想プログラム空間１２０のリソースを使用する第１（非リアルタイム）オペレーティングモードから、第２仮想プログラム空間１３０のリソースを使用する第２（リアルタイム）オペレーティングモードへの切り替えを余儀なくされる。第２オペレーティングモードから第１オペレーティングモードへと戻る切り替えは、適切な割り込みリターンコマンドを使用して行われる。このように、２つの"仮想プロセッサ"が維持される。マスク不可能であり優先順位の高い割り込みの例としては、インテル（登録商標）８０８６ベースのプロセッサで知られているマスク不可割り込み（non-maskable interrupt：ＮＭＩ）ライン、及び、ＡＲＭプロセッサで知られている高速割り込み（fast interrupt：ＦＩＱ）ラインが含まれる。
【００２５】
様々な実施形態において、１つの仮想プロセッサ内で発生する障害のような任意のアクティビティは、他の仮想プロセッサにほぼ干渉しないようにするのが望ましい。このようにするために、ＭＭＵ１１２は、第１オペレーティング空間１２０から動作するソフトウェアが、第２オペレーティング空間１３０のメモリ及び任意のデバイスに、弊害をもたらすような態様で影響を与えることがないようにしている。例えば、ＭＭＵ１１２を使用して、ＣＰＵ１１０が、第１仮想プログラム空間１２０のＯＳ及び／又は任意のアプリケーションからのコードを実行している時、すなわち、第１オペレーティングモードにある時には、ＣＰＵ１１０は、第２記憶メモリ１３４又は第２入出力回路１３６にアクセスしない、又は、これらメモリ及び回路にアクセスしないように指示される。同様に、一実施形態において、ＭＭＵ１１２を使用して、ＣＰＵ１１０が第２オペレーティングモードにある時には、ＣＰＵ１１０が第１記憶メモリ１２４又は第１入出力回路１２６にアクセスしない、又は、これらメモリ及び回路を変更しないようにするのが有用である。第１仮想プログラム空間１２０と第２仮想プログラム空間１３０との間でのリソースの排他性を確かにする、又は、少なくとも不干渉性を保証することにより、一方のオペレーティングモードで発生し他のオペレーティングモードに明確に影響を与える可能性のある障害等のアクティビティを、有効に防ぐことができる。
【００２６】
１つの仮想プロセッサが、別の仮想プロセッサのオペレーションに明確に干渉しないことを確かにするために、一実施形態では、ＣＰＵが第２オペレーティングモードで動作している間に、第１オペレーティングモードのＣＰＵオペレーティング状態が保存されるような高い優先度の割り込みが起動された場合には、ＣＰＵ１１０のオペレーティング状態が格納される。このようなオペレーティング状態は、第２記憶メモリに位置するソフトウェアスタックへとオペレーティング状態をプッシュ（pushing）することにより保存され、ソフトウェアスタックから格納されたデータを適切なＣＰＵレジスタへと引き出す（pulling)ことにより回復することができる。これに替えて、このオペレーティング状態を、ＣＰＵ１１０内に構築された特別な記憶メモリに格納してもよい。
【００２７】
図２には、本開示の一実施形態に係る、図１のＣＰＵ１００の一部が示されており、ステータスフラグレジスタ２１０、データレジスタのセット２１２、アドレスポインタのセット２１４及びプログラムカウンタ２１６が含まれている。図２に示されているレジスタは、ＡＲＭラインのプロセッサを含むＣＰＵの大方の種類に典型的に存在するレジスタ２１０−２１６として描かれているが、図２に示されたレジスタ／オペレーティング状態２１０−２１６は、割り込み設定に格納及び読み出しを行うのに有用な種類及びオペレーティング状態の数を包括的に示しているわけではない。図２に示されるように、ＣＰＵ１１０が、高レベル割り込みをトリガするある信号を受信すると、様々なレジスタ２１０−２１６の値が、専用記憶装置２２０−２２６に格納される。また、図２に示されるように、高レベル割り込みから戻る際には、対応する専用記憶装置２２０−２２６により、様々なレジスタ２１０−２１６の値を回復させることができる。したがって、ＣＰＵが優先度の高い割り込みを提供し、優先度の高い割り込みから戻るときに、クリティカルなオペレーティング状態が保存される。
【００２８】
第１オペレーティングモードのオペレーティング状態を保存することと同様に、一実施形態において、第１オペレーティングモードから遷移する時には、次の高レベル割り込みがＣＰＵで受信される時にオペレーティング状態が迅速に回復されるように、ＣＰＵは、第２オペレーティングモードの様々なオペレーティング状態を格納する。
【００２９】
割り込み駆動型のシステムの場合、割り込み又は割り込みのストリームをトリガするのに、複数の有用なスキームが存在する。例えば、規則的な間隔又は不規則な間隔でメディアパケットのストリームが受信される実施形態では、第２入出力回路１３６のセットを残すＦＬＡＧ信号のようなある形式のセマフォを使用して、割り込み制御信号１１４における優先度の高い割り込みをトリガする。このような割り込みスキームにより、メディアパケットを、"必要に応じて"適切にリアルタイム処理することが可能となる。
【００３０】
別の実施形態では、図１のタイマ回路１１６のようなタイミング回路を使用して、優先度の高い割り込みを周期的にトリガする。タイマ回路１１６の周期性が十分であると仮定すると、優先度の高い割り込みが提供される場合にはこの期間に、メディアパケットが障害なく適切に処理される。
【００３１】
一実施形態において、タイマ回路１１６は、処理装置１００が送受信するメディアパケットの間隔よりも短い間隔で、優先度の高い割り込みを周期的にトリガする。一実施形態において、第２仮想プログラム空間１３０のリアルタイム処理が、複数のタイムスロットにわたってメディアパケットを処理するように適切に設定される場合、第１仮想プログラム空間１２０において実行されるアプリケーションは、大幅に短縮されたレイテンシで実行される。
【００３２】
図３には、図１の処理装置１００が、第１オペレーティングモードと第２オペレーティングモードとの間の切り替えを行う好適な割り込みスキームのタイミング図３００が示されている。図３に示す例では、メディアパケット（図示せず）は、１０ミリ秒／パケットのレートで時分割多重（ＴＤＭ）方式で送受信される。しかしながら、第２オペレーティングモードのタイムスロットの正確な期間及び周波数は、メディアパケットのサービス要求（ＱｏＳ）を考慮して動的に変更可能であることから、割り込みは、２ミリ秒毎に発生するように設定される。このように、図１のＣＰＵ１１０のようなＣＰＵの処理帯域幅は、第１（非リアルタイム）オペレーティングモード（ＯＭ）の第１フレーム／タイムスロット３１０のセット、及び、第２（リアルタイム）オペレーティングモードの第２フレーム／タイムスロット３２０のセットへと分割される。このように処理帯域幅を配置することにより、第１仮想プロセッサ及び第２仮想プロセッサを確立できるだけでなく、第１オペレーティングモードの間に実行されるアプリケーションのレイテンシを低減することができる。例えば、タイミング解像度が８ミリ秒から２ミリ秒へと上がる場合、第１オペレーティングモードの間に実行されるオンラインゲームをサポートするホームゲートウェイアプリケーションは、本来の性能を向上させることができると考えられる。
【００３３】
図４には、本開示の一実施形態に係る、１つのＣＰＵを使用した複数の仮想プロセッサのオペレーションを示したフローチャートが示されている。すなわち、図４のフローチャートは、マルチプロセッサ又は１つのプロセッサ上でのソフトウェアマルチタスクを使用したマルチスレッドと比較した、１つのプロセッサ上のマルチスレッドのハードウェア仮想化の方法を示している。以下に説明する段階は、説明を容易にするために特定のシーケンスで発生するように説明されているが、様々なオペレーションの順番は、実施形態によって異なってもよい。また、様々なオペレーションは、同時に発生してもよいし、重複するような態様で発生してもよい。
【００３４】
プロセスは段階Ｓ４０２から開始し、１つのＣＰＵ及び２つの別個のオペレーティング空間、すなわち、第１（リアルタイム）オペレーティング空間及び第２（非リアルタイム）オペレーティング空間を有する処理装置のハードウェアリセットが実行される。次に、段階Ｓ４０４において、リアルタイム処理に使用される第２オペレーティング空間が初期化される。上記したように、初期化は、記憶メモリ、入出力回路、タイミング回路及び割り込み制御回路の初期化を伴ってもよい。入出力回路、タイミング回路及び割り込み制御回路がＣＰＵによってプログラム可能である場合、タイミング及び／又は割り込み回路は、メディアパケットの受信に応答して、又は、受信されたメディアパケットの間隔よりも（場合によっては）短い間隔で割り込みが生成されるある周期に従って、マスク不可能な優先度の高い割り込みを生成するように構成される。しかしながら、入出力回路、タイミング回路及び割り込み制御回路が変更できないような別の実施形態では、ＣＰＵがこのようなデバイスの初期化を行うことは不可能であり、優先度の高い割り込みの生成は、ハードウェアアーキテクチャの機能となる。制御は、段階Ｓ４０６に移る。
【００３５】
段階Ｓ４０６において、非リアルタイムプログラム空間のためのオペレーティング空間が初期化される。上記したように、一実施形態において、この初期化には、メモリ及び／又は入出力回路のようなハードウェアの初期化、及び、オペレーティングシステム及びオペレーティングシステム上で実行される様々なアプリケーションの初期化が含まれる。制御は、段階Ｓ４１０に移る。
【００３６】
段階Ｓ４１０において、優先度の高い割り込みが生成されたかの判断がなされる。上記したように、このような優先度の高い割り込みを使用して、オペレーティングシステム及び段階Ｓ４０６のアプリケーションを実行する第１オペレーティングモードと、段階Ｓ４０４のリアルタイム処理が実行される第２オペレーティングモードとの間の切り替えをＣＰＵが行うことが可能とされる。優先度の高い割り込みが生成されている場合には、制御が段階Ｓ４１２に移り、生成されていなかった場合には、制御が段階Ｓ４２２に移る。
【００３７】
段階Ｓ４１２において、優先度の高い割り込みに応答して、段階Ｓ４０４のリアルタイム処理が実行されると同時に、この処理は、オペレーティングシステムによる影響から保護される、又は、任意の非リアルタイムアプリケーシは別の段階で実行される。様々な実施形態において、上記したように、段階Ｓ４０６において初期化される少なくとも１つのアプリケーションのレイテンシを短縮するような態様で、リアルタイム処理は、複数のタイムスロットにわたるストリーミングメディアパケットを処理する。次に、段階Ｓ４１４において、第２オペレーティングモードから第１オペレーティングモードへのリターンが実行される。そして、制御が段階Ｓ４１０に戻り、そこで更なる割り込みが受信され、各割り込みについて、受信された割り込みが優先度の高い割り込みであるか否かの判断がなされる。
【００３８】
段階Ｓ４２２において、受信された割り込みが優先度の高い割り込みではないと判断された場合には、段階４０６において初期化された非リアルタイムアプリケーションが、サポーティングＯＳ機能と共に実行される。上記したように、例えば、何かの事情でリアルタイム処理によって使用されているメモリ又は入出力回路を変更してしまったことにより、ＯＳ及び／又は非リアルタイムアプリケーションが段階Ｓ４１２のリアルタイム処理と干渉してしまうのを防ぐために、図１のＭＭＵ１１２のようなある種のハードウェア保護を組み込むことは有用である。次に、段階Ｓ４３０において、オペレーティングシステム又は複数のアプリケーションのうちの１つにおいて、障害が発生したか否かの判断が行われる。障害の例として、例えば、無効なメモリロケーション又はリソースへのアクセスが試みられた、又は、無限ソフトウェアループが使用された及び無限ソフトウェアループがウォッチドッグタイマの使用により特定されたことを示す情報がＭＭＵから送信されたことが含まれる。障害が発生した場合には、制御がＳ４３２に移り、発生していない場合には、制御が段階Ｓ４１０に戻る。
【００３９】
段階Ｓ４３２において、段階Ｓ４０６と関連付けられているハードウェアにおいてソフトウェアリブートオペレーションが実行され、制御が段階Ｓ４０６に戻り、オペレーティングシステム及びアプリケーションが、再初期化される。ソフトウェアリブートオペレーションは、優先度の高い割り込みの使用を必要としないことから、第１オペレーティングモードの間にＣＰＵが通常アクセス可能なデバイス及びメモリ空間にのみ、影響を与える。したがって、第２オペレーティングモードのリアルタイム処理は、影響を受けないままである。
【００４０】
本発明が、例として提示された特定の実施形態に関連して説明されたが、当業者であれば、数多くの代替、改良及び変形が思いつくことは明らかである。したがって、本明細書に記載された本発明の実施形態は、例示に過ぎず、限定することを意図していない。本発明の範囲内において、変更を行うことが可能である。
［項目１］
複数の仮想プロセッサとして動作するよう構成された処理装置であって、
１以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行するためのコードを含む第１プログラム実行メモリを有する第１仮想プログラム空間と、
１以上のリアルタイム処理を実行するためのコードを含む第２プログラム実行メモリを有する第２仮想プログラム空間と、
第１オペレーティングモード及び第２オペレーティングモードで動作する中央処理演算装置（ＣＰＵ）であって、前記第２仮想プログラム空間を使用することなく、及び、前記第２オペレーティングモードで実行される１以上の前記リアルタイム処理に大きな影響を与えることなく、前記第１オペレーティングモードのための前記第１仮想プログラム空間を使用してオペレーティングシステム及びアプリケーションアクティビティを実行するＣＰＵと
を備える処理装置。
［項目２］
前記第２仮想プログラム空間は更に、第２記憶メモリを有する項目１に記載の処理装置。
［項目３］
前記オペレーティングシステム及び前記第１オペレーティングモードの任意のアプリケーションのうちの少なくとも１つが、前記第２記憶メモリを変更することを防ぐアクセス回路を更に備える項目２に記載の処理装置。
［項目４］
前記第２仮想プログラム空間は更に、第２入出力回路のセットを有する項目１に記載の処理装置。
［項目５］
前記オペレーティングシステム及び前記第１オペレーティングモードの任意のアプリケーションのうちの少なくとも１つが、前記第２入出力回路のセットを変更することを防ぐアクセス回路を更に備える項目４に記載の処理装置。
［項目６］
前記ＣＰＵに、前記第１オペレーティングモードから前記第２オペレーティングモードへの切り替えを行わせるマスク不可能な優先度の高い割り込みを生成する割り込み制御回路を更に備える項目１に記載の処理装置。
［項目７］
前記ＣＰＵが前記第２オペレーティングモードで動作している間に、前記第１オペレーティングモードのＣＰＵ動作状態が保存されるように、優先度の高い割り込みが起動された場合には前記ＣＰＵの動作状態を格納する第１状態記憶メモリを更に備える項目６に記載の処理装置。
［項目８］
前記ＣＰＵが前記第１オペレーティングモードで動作している間に、前記第２オペレーティングモードのＣＰＵ動作状態を格納する第２状態記憶メモリを更に備える項目６に記載の処理装置。
［項目９］
前記第２オペレーティングモードの間に、前記ＣＰＵがボイスオーバーインターネットプロトコル（ＶｏＩＰ）メディア処理をサポートするようにプログラムされている項目６に記載の処理装置。
［項目１０］
前記第２仮想プログラム空間は更に、メディアパケットを受信すると、優先度の高い割り込みをトリガする第２入出力回路のセットを有する項目１に記載の処理装置。
［項目１１］
前記優先度の高い割り込みを周期的にトリガするタイマ回路を更に備え、
前記タイマ回路は、前記処理装置がメディアパケットを受信する間隔よりも短い間隔で前記優先度の高い割り込みを周期的にトリガし、
前記第１仮想プログラム空間において実行される少なくとも１つのアプリケーションのレイテンシを低減させるような態様で、前記１以上のリアルタイム処理は、複数のタイムスロットにわたってメディアパケットを処理する項目１０に記載の処理装置。
［項目１２］
前記複数のタイムスロットの期間の長さ及び周期のうちの少なくとも一方が、前記メディアパケットのサービス品質（ＱｏＳ）要求を考慮して動的に調整可能である項目１１に記載の処理装置。
［項目１３］
１つの中央演算処理装置（ＣＰＵ）で複数の仮想プロセッサを実行する方法であって、
１以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行する第１プログラム実行メモリを有する第１仮想プログラム空間を規定する段階と、
１以上のリアルタイム処理を実行するための第２プログラム実行メモリを有する第２仮想プログラム空間を規定する段階と、
第１オペレーティングモードと第２オペレーティングモードとの間で前記ＣＰＵの切り替えを行う段階と
を備え、
前記切り替える段階によって、前記第１オペレーティングモードの間に発生する任意のオペレーティングアクティビティが前記第２オペレーティングモードの間に実行されるリアルタイム処理に大きな影響を与えることなく、前記第１オペレーティングモードの間に前記ＣＰＵが前記第１仮想プログラム空間から動作を行う方法。
［項目１４］
前記第２仮想プログラム空間を規定する段階は、前記第２仮想プログラム空間の一部として第２記憶メモリを規定する段階を有し、
前記オペレーティングシステム及び前記第１オペレーティングモードの全てのアプリケーションは、前記第２記憶メモリを変更することができない項目１３に記載の方法。
［項目１５］
前記第２仮想プログラム空間を規定する段階は、前記第２仮想プログラム空間の一部として第２入出力回路のセットを規定する段階を有し、
前記オペレーティングシステム及び前記第１オペレーティングモードの全てのアプリケーションは、前記第２入出力回路のセットを変更することができない項目１４に記載の方法。
［項目１６］
前記ＣＰＵを前記第２オペレーティングモードへと切り替えるために、前記第１オペレーティングモードで動作している間に、マスク不可能な優先度の高い割り込みのストリームを生成する段階を更に備える項目１５に記載の方法。
［項目１７］
優先度の高い割り込みを生成する段階は、
前記ＣＰＵが前記第２オペレーティングモードで動作している間に前記第１オぺレーティングモードのＣＰＵ動作状態が保存されているように、前記ＣＰＵの動作状態を格納する段階を有する項目１６に記載の方法。
［項目１８］
前記第２オペレーティングモードの間に、ボイスオーバーインターネットプロトコル（ＶｏＩＰ）メディアを処理するように前記ＣＰＵを動作させる段階を更に備える項目１６に記載の方法。
［項目１９］
メディアパケットのストリームを受信したことに応答して、マスク不可能な優先度の高い割り込みのストリームを生成する段階を更に備える項目１５に記載の方法。
［項目２０］
前記マスク不可能な優先度の高い割り込みのストリームを生成する段階は、
前記第１仮想プログラム空間において実行される少なくとも１つのアプリケーションのレイテンシを低減させるような態様で、前記第２仮想プログラム空間の前記１以上のリアルタイム処理が、複数のタイムスロットにわたってメディアパケットを処理するように、メディアパケットの受信間隔よりも短い間隔で割り込みを生成することを含む項目１９に記載の方法。
【図１】
0005875193.tif 000002
【図２】
0005875193.tif 000003
【図３】
0005875193.tif 000004
【図４】
0005875193.tif 000005