JP2013517552A - メディア処理のためのハードウェア仮想化 - Google Patents

メディア処理のためのハードウェア仮想化 Download PDF

Info

Publication number
JP2013517552A
JP2013517552A JP2012548501A JP2012548501A JP2013517552A JP 2013517552 A JP2013517552 A JP 2013517552A JP 2012548501 A JP2012548501 A JP 2012548501A JP 2012548501 A JP2012548501 A JP 2012548501A JP 2013517552 A JP2013517552 A JP 2013517552A
Authority
JP
Japan
Prior art keywords
operating mode
cpu
operating
real
virtual
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.)
Granted
Application number
JP2012548501A
Other languages
English (en)
Other versions
JP5875193B2 (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.)
Marvell Israel MISL Ltd
Original Assignee
Marvell Israel MISL Ltd
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 Marvell Israel MISL Ltd filed Critical Marvell Israel MISL Ltd
Publication of JP2013517552A publication Critical patent/JP2013517552A/ja
Application granted granted Critical
Publication of JP5875193B2 publication Critical patent/JP5875193B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)

Abstract

仮想プロセッサを実装するための方法及びシステムが開示される。例えば、一実施形態において、複数の仮想プロセッサとして動作するよう構成された処理装置であって、1以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行するためのコードを含む第1プログラム実行メモリを有する第1仮想プログラム空間と、1以上のリアルタイム処理を実行するためのコードを含む第2プログラム実行メモリを有する第2仮想プログラム空間と、第1オペレーティングモード及び第2オペレーティングモードで動作する中央処理演算装置(CPU)であって、第2仮想オペレーティングモードを使用することなく、及び、第2オペレーティングモードで実行される1以上のリアルタイム処理に大きな影響を与えることなく、第1オペレーティングモードのための第1仮想プログラム空間を使用してオペレーティングシステム及びアプリケーションアクティビティを実行するCPUとを備える。
【選択図】図1

Description

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

Claims (20)

  1. 複数の仮想プロセッサとして動作するよう構成された処理装置であって、
    1以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行するためのコードを含む第1プログラム実行メモリを有する第1仮想プログラム空間と、
    1以上のリアルタイム処理を実行するためのコードを含む第2プログラム実行メモリを有する第2仮想プログラム空間と、
    第1オペレーティングモード及び第2オペレーティングモードで動作する中央処理演算装置(CPU)であって、前記第2仮想プログラム空間を使用することなく、及び、前記第2オペレーティングモードで実行される1以上の前記リアルタイム処理に大きな影響を与えることなく、前記第1オペレーティングモードのための前記第1仮想プログラム空間を使用してオペレーティングシステム及びアプリケーションアクティビティを実行するCPUと
    を備える処理装置。
  2. 前記第2仮想プログラム空間は更に、第2記憶メモリを有する請求項1に記載の処理装置。
  3. 前記オペレーティングシステム及び前記第1オペレーティングモードの任意のアプリケーションのうちの少なくとも1つが、前記第2記憶メモリを変更することを防ぐアクセス回路を更に備える請求項2に記載の処理装置。
  4. 前記第2仮想プログラム空間は更に、第2入出力回路のセットを有する請求項1に記載の処理装置。
  5. 前記オペレーティングシステム及び前記第1オペレーティングモードの任意のアプリケーションのうちの少なくとも1つが、前記第2入出力回路のセットを変更することを防ぐアクセス回路を更に備える請求項4に記載の処理装置。
  6. 前記CPUに、前記第1オペレーティングモードから前記第2オペレーティングモードへの切り替えを行わせるマスク不可能な優先度の高い割り込みを生成する割り込み制御回路を更に備える請求項1に記載の処理装置。
  7. 前記CPUが前記第2オペレーティングモードで動作している間に、前記第1オペレーティングモードのCPU動作状態が保存されるように、優先度の高い割り込みが起動された場合には前記CPUの動作状態を格納する第1状態記憶メモリを更に備える請求項6に記載の処理装置。
  8. 前記CPUが前記第1オペレーティングモードで動作している間に、前記第2オペレーティングモードのCPU動作状態を格納する第2状態記憶メモリを更に備える請求項6に記載の処理装置。
  9. 前記第2オペレーティングモードの間に、前記CPUがボイスオーバーインターネットプロトコル(VoIP)メディア処理をサポートするようにプログラムされている請求項6に記載の処理装置。
  10. 前記第2仮想プログラム空間は更に、メディアパケットを受信すると、優先度の高い割り込みをトリガする第2入出力回路のセットを有する請求項1に記載の処理装置。
  11. 前記優先度の高い割り込みを周期的にトリガするタイマ回路を更に備え、
    前記タイマ回路は、前記処理装置がメディアパケットを受信する間隔よりも短い間隔で前記優先度の高い割り込みを周期的にトリガし、
    前記第1仮想プログラム空間において実行される少なくとも1つのアプリケーションのレイテンシを低減させるような態様で、前記1以上のリアルタイム処理は、複数のタイムスロットにわたってメディアパケットを処理する請求項10に記載の処理装置。
  12. 前記複数のタイムスロットの期間の長さ及び周期のうちの少なくとも一方が、前記メディアパケットのサービス品質(QoS)要求を考慮して動的に調整可能である請求項11に記載の処理装置。
  13. 1つの中央演算処理装置(CPU)で複数の仮想プロセッサを実行する方法であって、
    1以上の非リアルタイムアプリケーションをサポート可能な非リアルタイムオペレーティングシステムを実行する第1プログラム実行メモリを有する第1仮想プログラム空間を規定する段階と、
    1以上のリアルタイム処理を実行するための第2プログラム実行メモリを有する第2仮想プログラム空間を規定する段階と、
    第1オペレーティングモードと第2オペレーティングモードとの間で前記CPUの切り替えを行う段階と
    を備え、
    前記切り替える段階によって、前記第1オペレーティングモードの間に発生する任意のオペレーティングアクティビティが前記第2オペレーティングモードの間に実行されるリアルタイム処理に大きな影響を与えることなく、前記第1オペレーティングモードの間に前記CPUが前記第1仮想プログラム空間から動作を行う方法。
  14. 前記第2仮想プログラム空間を規定する段階は、前記第2仮想プログラム空間の一部として第2記憶メモリを規定する段階を有し、
    前記オペレーティングシステム及び前記第1オペレーティングモードの全てのアプリケーションは、前記第2記憶メモリを変更することができない請求項13に記載の方法。
  15. 前記第2仮想プログラム空間を規定する段階は、前記第2仮想プログラム空間の一部として第2入出力回路のセットを規定する段階を有し、
    前記オペレーティングシステム及び前記第1オペレーティングモードの全てのアプリケーションは、前記第2入出力回路のセットを変更することができない請求項14に記載の方法。
  16. 前記CPUを前記第2オペレーティングモードへと切り替えるために、前記第1オペレーティングモードで動作している間に、マスク不可能な優先度の高い割り込みのストリームを生成する段階を更に備える請求項15に記載の方法。
  17. 優先度の高い割り込みを生成する段階は、
    前記CPUが前記第2オペレーティングモードで動作している間に前記第1オぺレーティングモードのCPU動作状態が保存されているように、前記CPUの動作状態を格納する段階を有する請求項16に記載の方法。
  18. 前記第2オペレーティングモードの間に、ボイスオーバーインターネットプロトコル(VoIP)メディアを処理するように前記CPUを動作させる段階を更に備える請求項16に記載の方法。
  19. メディアパケットのストリームを受信したことに応答して、マスク不可能な優先度の高い割り込みのストリームを生成する段階を更に備える請求項15に記載の方法。
  20. 前記マスク不可能な優先度の高い割り込みのストリームを生成する段階は、
    前記第1仮想プログラム空間において実行される少なくとも1つのアプリケーションのレイテンシを低減させるような態様で、前記第2仮想プログラム空間の前記1以上のリアルタイム処理が、複数のタイムスロットにわたってメディアパケットを処理するように、メディアパケットの受信間隔よりも短い間隔で割り込みを生成することを含む請求項19に記載の方法。
JP2012548501A 2010-01-13 2011-01-13 メディア処理のためのハードウェア仮想化 Expired - Fee Related JP5875193B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US29471110P 2010-01-13 2010-01-13
US61/294,711 2010-01-13
PCT/IB2011/000271 WO2011086473A2 (en) 2010-01-13 2011-01-13 Hardware virtualization for media processing

Publications (2)

Publication Number Publication Date
JP2013517552A true JP2013517552A (ja) 2013-05-16
JP5875193B2 JP5875193B2 (ja) 2016-03-02

Family

ID=44211929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012548501A Expired - Fee Related JP5875193B2 (ja) 2010-01-13 2011-01-13 メディア処理のためのハードウェア仮想化

Country Status (4)

Country Link
US (2) US8893143B2 (ja)
JP (1) JP5875193B2 (ja)
CN (2) CN102667725B (ja)
WO (1) WO2011086473A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016529614A (ja) * 2013-08-26 2016-09-23 ヴイエムウェア インコーポレイテッドVMware,Inc. 待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013072773A2 (en) * 2011-11-18 2013-05-23 Marvell World Trade Ltd. Data path acceleration using hw virtualization
KR20130063825A (ko) * 2011-12-07 2013-06-17 삼성전자주식회사 운영체제에서 동적으로 선점 구간을 조정하는 장치 및 방법
CN102833175B (zh) * 2012-09-21 2016-05-04 中国科学院声学研究所 基于异构操作系统的实时中继传输引擎及方法
CN102902576B (zh) * 2012-09-26 2014-12-24 北京奇虎科技有限公司 一种渲染网页的方法、服务器和系统
GB2516435A (en) * 2013-04-05 2015-01-28 Continental Automotive Systems Embedded memory management scheme for real-time applications
DE102016214117A1 (de) * 2016-08-01 2018-02-01 Siemens Aktiengesellschaft Ermitteln einer Ausführungszeit eines Anwenderprogramms
US20180152319A1 (en) * 2016-11-28 2018-05-31 Schlumberger Technology Corporation Well Construction Site Communications Network
US11281482B2 (en) 2016-12-14 2022-03-22 Intel Corporation I/O emulation with abortion in virtualized environments including transfer of portions of non-real time I/O emulation to work threads prior to switching contexts
EP3540539A1 (de) * 2018-03-15 2019-09-18 Siemens Aktiengesellschaft Verfahren zur rechnergestützten simulation des betriebs einer automatisiert arbeitenden maschine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11149385A (ja) * 1997-09-12 1999-06-02 Hitachi Ltd マルチos構成方法
WO2008077628A2 (en) * 2006-12-22 2008-07-03 Virtuallogix Sa System for enabling multiple execution environments to share a device
JP2009206608A (ja) * 2008-02-26 2009-09-10 Nec Engineering Ltd 通信装置
WO2009157178A1 (ja) * 2008-06-24 2009-12-30 パナソニック株式会社 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI108478B (fi) * 1998-01-21 2002-01-31 Nokia Corp Sulautettu jõrjestelmõ
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
US8612992B2 (en) * 2003-04-09 2013-12-17 Jaluna Sa Operating systems
JP3953449B2 (ja) * 2003-08-26 2007-08-08 富士通株式会社 タスク管理プログラムおよびタスク制御装置
JP2007509387A (ja) * 2003-09-30 2007-04-12 ジャルナ エスアー オペレーティングシステム
KR20070003765A (ko) * 2003-10-01 2007-01-05 쟈루나 에스에이 운영체제
US7363411B2 (en) * 2003-10-06 2008-04-22 Intel Corporation Efficient system management synchronization and memory allocation
JP4112511B2 (ja) * 2004-02-17 2008-07-02 富士通株式会社 タスク管理プログラムおよびタスク管理装置
JP3862715B2 (ja) * 2004-06-01 2006-12-27 株式会社ソニー・コンピュータエンタテインメント タスク管理方法、タスク管理装置、半導体集積回路、電子装置、およびタスク管理システム
US9619279B2 (en) * 2004-08-18 2017-04-11 Red Bend Software Sas Operating systems sharing supervisor address space with same virtual to physical mapping for supervisor address space using same translation formula with different translation tree
EP1669864B1 (en) * 2004-12-03 2010-06-02 STMicroelectronics Srl A process for managing virtual machines in a physical processing machine, corresponding processor system and computer program product therefor
US7748003B2 (en) * 2004-12-20 2010-06-29 International Business Machines Corporation Hard real-time response
WO2007092951A2 (en) * 2006-02-09 2007-08-16 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
JP2008108075A (ja) * 2006-10-25 2008-05-08 Matsushita Electric Ind Co Ltd タスク切替え制御方法及びコンピュータシステム
WO2009064864A1 (en) * 2007-11-13 2009-05-22 Rockwell Automation Technologies, Inc. Industrial controller using shared memory multicore architecture
JPWO2012001787A1 (ja) * 2010-06-30 2013-08-22 富士通株式会社 情報処理装置、情報処理方法、および情報処理プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11149385A (ja) * 1997-09-12 1999-06-02 Hitachi Ltd マルチos構成方法
WO2008077628A2 (en) * 2006-12-22 2008-07-03 Virtuallogix Sa System for enabling multiple execution environments to share a device
JP2009206608A (ja) * 2008-02-26 2009-09-10 Nec Engineering Ltd 通信装置
WO2009157178A1 (ja) * 2008-06-24 2009-12-30 パナソニック株式会社 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016529614A (ja) * 2013-08-26 2016-09-23 ヴイエムウェア インコーポレイテッドVMware,Inc. 待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ
JP2016529613A (ja) * 2013-08-26 2016-09-23 ヴイエムウェア インコーポレイテッドVMware,Inc. 待ち時間の影響を受けやすい仮想マシンをサポートするように構成されるcpuスケジューラ

Also Published As

Publication number Publication date
US20110173362A1 (en) 2011-07-14
CN102667725A (zh) 2012-09-12
WO2011086473A3 (en) 2011-10-13
US20150074310A1 (en) 2015-03-12
US8893143B2 (en) 2014-11-18
CN102667725B (zh) 2015-09-16
CN105183555A (zh) 2015-12-23
WO2011086473A2 (en) 2011-07-21
JP5875193B2 (ja) 2016-03-02
US9189267B2 (en) 2015-11-17

Similar Documents

Publication Publication Date Title
JP5875193B2 (ja) メディア処理のためのハードウェア仮想化
US8578138B2 (en) Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US7356026B2 (en) Node translation and protection in a clustered multiprocessor system
US6587937B1 (en) Multiple virtual machine system with efficient cache memory design
US6925547B2 (en) Remote address translation in a multiprocessor system
US11048569B1 (en) Adaptive timeout mechanism
US6070219A (en) Hierarchical interrupt structure for event notification on multi-virtual circuit network interface controller
US20070011507A1 (en) System and method for remote system support
JP2004252591A (ja) 計算機システム、i/oデバイス及びi/oデバイスの仮想共有方法
JP2011507128A (ja) プロセッサで実行中のプログラムソフトウェアをプロファイルするためのメカニズム
JPH06202883A (ja) プロセス間通信装置及び通信方法
JPH06309252A (ja) 相互接続インタフェース
JP2007058601A (ja) タスク実行装置および方法
WO2001046800A2 (en) Dual-mode processor
US20230333935A1 (en) Quick start method
US20090007110A1 (en) Interrupt processing method and system
JPWO2011016115A1 (ja) リセット方法及び監視装置
JP2000076087A (ja) マルチオペレーティングシステム制御方法
Li et al. Quest-V: A virtualized multikernel for high-confidence systems
JP2012190460A (ja) プロセッサのフォールト・トレランスを改善するための装置
JP2000222376A (ja) 計算機システムとその運用方法
US8209565B2 (en) Data processing device and bus access control method therein
US10956248B1 (en) Configurable reporting for device conditions
US10803007B1 (en) Reconfigurable instruction
JP2010015364A (ja) マルチプロセッサシステム及び情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150605

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: 20151222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160118

R150 Certificate of patent or registration of utility model

Ref document number: 5875193

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees