(57)【特許請求の範囲】
【請求項１】
組み込み装置の代わりに動作する仮想装置にて、リモート処理のために前記組み込み装置における情報をキャプチャするコンピュータ実装方法であって、当該方法は、
組み込み装置において、前記組み込み装置に取り付けられた１つもしくは複数のセンサまたは周辺装置から入力を受信するステップと、
前記入力を受信した前記組み込み装置を識別するステップであり、前記組み込み装置を識別するステップは、前記組み込み装置のタイプおよびインスタンス識別子を判定することを含み、前記インスタンス識別子は、同一タイプの装置の異なるインスタンスを区別する、ステップと、
装置識別を前記仮想装置に処理のために送信するステップと、
前記受信した入力を前記仮想装置に処理のために送信するステップと、
前記組み込み装置において、リモート処理結果を前記仮想装置から受信するステップと、
前記組み込み装置において、前記仮想装置から受信した出力を提供するステップと
を備え、前記各ステップは少なくとも１つのプロセッサによって実行される、
方法。
【請求項２】
組み込み装置の入力を受信するステップは、前記組み込み装置の周囲の環境から１つまたは複数のタイプの入力データをキャプチャし、かつ前記入力を前記仮想装置に提供することを含む、請求項１に記載の方法。
【請求項３】
前記装置識別を前記仮想装置へ送信するステップは、前記仮想装置が前記組み込み装置からの入力をリモートで処理できるように、前記組み込み装置を前記仮想装置に接続するネットワークを介して前記識別を送信することを含む、請求項１に記載の方法。
【請求項４】
前記装置識別を前記仮想装置へ送信するステップは、セットアップ段階を実行して、前記仮想装置に入力を提供すること及び前記仮想装置から出力を受信することのための１つ以上の後続の通信に使用する前記仮想装置との通信のチャネルを開くことを含む、請求項１に記載の方法。
【請求項５】
前記受信した入力を送信するステップは、前記仮想装置が前記受信した入力上でアプリケーション固有処理を実行し、かつ前記組み込み装置に提供するための結果を生成することを要求することを含む、請求項１に記載の方法。
【請求項６】
リモート処理結果を受信するステップは、前記送信した入力を処理することが失敗したかまたは成功したかどうかを示す結果コードを受信することを含む、請求項１に記載の方法。
【請求項７】
リモート処理結果を受信するステップは、前記組み込み装置のユーザへの表示のための出力を受信することを含む、請求項１に記載の方法。
【請求項８】
出力を提供するステップは、前記出力を、前記組み込み装置の周囲の環境において動作を実行する前記組み込み装置の１つまたは複数の出力周辺装置に提供することを含む、請求項１に記載の方法。
【請求項９】
組み込み装置の少なくとも一部の機能を仮想装置にオフロードすることによって前記組み込み装置を仮想化するコンピュータシステムであって、当該システムは、
以下のコンポーネント内に具現化されたソフトウェア命令を実行するように構成されたプロセッサおよびメモリを含み、前記コンポーネントは、
組み込み装置に組み込まれた１つまたは複数の入力装置からの前記組み込み装置における入力をキャプチャするリモート入力コンポーネントと、
組み込み装置における出力を受信し、かつ前記出力をユーザまたは他のコンポーネントに提供するリモート出力コンポーネントと、
前記仮想装置がアプリケーション固有処理を提供することができるように、特定の組み込み装置を識別し、かつ仮想装置処理コンポーネントに通知する装置識別コンポーネントであり、前記組み込み装置を識別することは、前記組み込み装置のタイプおよびインスタンス識別子を判定することを含み、前記インスタンス識別子は、同一タイプの装置の異なるインスタンスを区別する、装置識別コンポーネントと、
前記組み込み装置と前記仮想装置との間の通信チャネルを提供する通信コンポーネントと、
前記組み込み装置の目的に関連する動作を実行するために前記仮想装置における処理リソースを提供する仮想装置処理コンポーネントと、
前記組み込み装置の代わりにデータを永続的に格納するために前記仮想装置におけるストレージリソースを提供する仮想装置ストレージコンポーネントと、
そのアプリケーション用に前記組み込み装置が設計されたアプリケーション、に固有である１つまたは複数のプロセスを管理するアプリケーション固有ソフトウェアコンポーネントと
を有する、
システム。
【請求項１０】
前記リモート入力コンポーネントは、前記通信コンポーネントを介した、前記入力を処理するリモート仮想装置への送信のために、受信した入力をパッケージ化する、請求項９に記載のシステム。
【請求項１１】
前記装置識別コンポーネントは、前記仮想装置が加入または支払いの状態を監視することを可能とし、前記組み込み装置が前記仮想装置からの１つまたは複数の識別されたサービスを要求することを許可されているかどうかを判定する、請求項９に記載のシステム。
【請求項１２】
前記通信コンポーネントは、前記仮想装置との接続を生成するために前記組み込み装置に組み込まれたハードウェアと、前記接続を監視し、かつ前記仮想装置から受信された出力を処理する少量の変更頻度の低いソフトウェアとを含む、請求項９に記載のシステム。
【請求項１３】
前記仮想装置処理コンポーネントは、装置識別情報を前記装置識別コンポーネントから受信し、かつ前記アプリケーション固有ソフトウェアコンポーネントを起動し、前記識別された組み込み装置の前記動作に固有のアプリケーションソフトウェアコードをロードする、請求項９に記載のシステム。
【請求項１４】
前記アプリケーション固有ソフトウェアコンポーネントは、前記仮想装置の位置において一元的に、且つ前記組み込み装置からリモートに、組み込まれて使用されるソフトウェアコードを含み、前記ソフトウェアコードは、前記組み込み装置を介することなく前記仮想装置において前記ソフトウェアコードを更新することにより、一元的に更新され、かつ管理されることができるようにされる、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化組み込み装置に関する。
【背景技術】
【０００２】
組み込み装置は、今日では、家庭、職場、ショッピングモール等において、どこにでもある。組み込み装置は、ケーブルサービス用のセットトップボックスから、ゲーム機、冷蔵庫、病院の設備、電力監視装置、小売キオスク、情報ブース等に至るまですべてのものに含まれている。組み込み装置は、デスクトップコンピュータのコンポーネントと同様、典型的には、中央処理ユニット（ＣＰＵ）、メモリ、ストレージ、時にはグラフィックス処理ユニット（ＧＰＵ）および装置の目的に特定な周辺装置を含む。例えば、デジタルビデオ記録（ＤＶＲ）セットトップボックスはチューナ周辺装置を含むことができ、一方で、病院のＸ線装置はＸ線撮影の周辺装置を含むことができる。
【０００３】
組み込み装置は有能であるが、多くの場合、目的が制限されている。組み込み装置メーカーは、製品の原価（ＣＯＧ）と装置を構築するために使用された材料の原価（ＢＯＭ）を減らすために、多くの場合、いくつかのトレードオフに至る。組み込み装置の更新は、多くのユーザが行うことに慣れていないタスクであるファームウェアのフラッシングすることを含む場合がある。よって、組み込み装置は多くの場合に単一の目的のために一度販売されて、メーカーが新機能やまたは高速な処理を可能にしたい場合、メーカーは新しいバージョンである交換用の組み込み装置をユーザに販売することを多くの場合、試みる。
【０００４】
装置がもはや特定の目的を果たさなくなったときユーザは装置を多くの場合、処分するので、組み込み装置は多くの廃棄物を生むことになる。例えば、ＤＶＲは、より多くのストレージ容量を有する新しいＤＶＲで置き換えられ、または、病院は、超音波機械を、カラープリンタや三次元イメージングを含むものに置き換えるかもしれない。組み込み装置でエラーが発見された場合、問題を伴うインスタンスのすべてを識別して、エラーを修正するファームウェアの更新を提供することは、時間がかかり、難しい。よって、組み込み装置の管理および制御が多くの場合に問題となっている。また、いくつかの装置の設定および組み込みは通常ユーザの技術レベルを超えることがあり、高価な技術者が装置の初期セットアップに時間を取られることがある。
【発明の概要】
【０００５】
本明細書に記載されている装置仮想化システムは、装置の少なくとも一部の機能がサーバまたは他のコンピューティング装置に対してオフロード可能に、組み込み装置のアプリケーション固有周辺装置から組み込み装置の一般的なコンピュータ処理タスクを分離する。極端な例では、システムを使用した仮想組み込み装置は、まさに、別の場所で実行している仮想化サーバに通信される入力と出力を提供するユーザの場所で実行しているリモート周辺装置のセットである。装置仮想化システムは、仮想組み込み装置の管理、設定および制御を大幅に簡素化する。装置のソフトウェアの多くが仮想化サーバ上で実行されるので、情報技術（ＩＴ）担当者は、仮想化サーバを管理し、いずれかの更新を適用し、発生した問題を診断するために割り当てられ得る。さらに、１つのサーバまたはサーバグループが、ユーザの多種多様な仮想化された組み込み装置の多種多様な仮想化サービスを提供するために使用され得る。ＩＴ担当者は、更新を適用し、設定上の問題を診断し、ユーザの環境で動作するように装置のセットアップを支援すること等ができる。
【０００６】
また、問題が識別された時、装置メーカーは、装置を仮想化するデータセンターへの入力および出力を監視することにより、はるかに多い台数の装置のへのアクセスが可能となる。これは問題のテストおよび診断を大いに簡素化する。また、メーカーは、ユーザの場所へはるかに安い装置を出荷することができ、仮想化された組み込み装置にその中核となる機能を与える仮想化サーバが提供するサービスの加入モデルに基づいて、ユーザに課金することができる。これにより、ユーザは、メンテナンスやファームウェア更新をフラッシングすることの技術的な煩雑さ無しで、定期的な更新の恩恵を受けることができる。複数の場所で安く、スリムダウンされた装置を組み込むことによって、複数のユーザはまた、単一の仮想化された装置の処理能力を共有してコストを節約することができる。したがって、このシステムは、組み込み装置の有用性を高め、今日の組み込み装置よりも長い寿命とより広い様々な使用を可能とすることができる。
【０００７】
この概要は、以下の詳細な説明でさらに説明される簡略化された形態で概念の選択を紹介するために設けられている。この概要は、特許請求される主題の重要な特徴または主要な特徴を特定することを意図しておらず、特許請求された主題の範囲を限定するために使用されることを意図していない。
【図面の簡単な説明】
【０００８】
【図１】一実施形態における装置仮想化システムのコンポーネントを示すブロック図である。
【図２】一実施形態におけるリモート処理のための仮想組み込み装置で情報を取得する装置仮想化システムの処理を示すフロー図である。
【図３】一実施形態における共通の仮想化施設で仮想装置情報を処理する装置仮想化システムの処理を示すフロー図である。
【図４】一実施形態でおける装置仮想化システムの例示的な動作環境を示すブロック図である。
【発明を実施するための形態】
【０００９】
本明細書には、組み込み装置の一般的なコンピュータ処理タスクを組み込み装置のアプリケーション固有周辺装置から分離して、装置の少なくとも一部の機能がサーバまたは他のコンピューティング装置（すなわち、仮想装置）にオフロードされることを可能とする装置仮想化システムが記載されている。極端な例では、システムを使用した仮想組み込み装置は、まさに、別の場所で実行している仮想化サーバに通信される入力と出力を提供するユーザの場所で実行しているリモート周辺装置のセットである。例えば、データセンターは、いくつかの仮想組み込み装置のための処理およびストレージ能力を提供できる。一例として、ＤＶＲ機能を備えたセットトップボックスを考える。今日、ＤＶＲは、装置に組み込まれたローカルハードディスクドライブに基づく一定量のストレージを有している。ＤＶＲは、ハードディスクドライブがいっぱいになり始めた場合に、古い記録番組を削除し始めおよび／または新しいものの記録を避けるようにプログラムされている。今日のＤＶＲは、単一の目的を有する自己完結型の装置である。ＤＶＲを仮想化することにより、いくつかのコンポーネントおよび機能は、データセンターまたは他の場所に移動され得る。例えば、装置のためのストレージと処理能力がデータセンターにオフロードされ、一方で、家庭内にはチューナおよびオーディオ／ビジュアル装置への接続をそのまま残る。ユーザは、仮想化されたＤＶＲがストレージスペースの不足にならないようなデータセンター内の事実上無制限のストレージのために支払うことができるであろう。
【００１０】
また、この装置仮想化システムは、仮想組み込み装置の管理、設定および管理を大幅に簡素化する。装置のソフトウェアの多くが仮想化サーバ上で実行されるので、情報技術（ＩＴ）担当者は、仮想化サーバを管理し、いずれかの更新を適用し、発生した問題を診断するために割り当てられ得る。さらに、１つのサーバまたはサーバグループが、ユーザの多種多様性のために多種多様な仮想化された組み込み装置の仮想化サービスを提供するために使用され得る。ＩＴ担当者は、更新の適用や、設定上の問題の診断や、ユーザの環境で動作するように装置の設定の支援等を行うことができる。また、問題が識別されると、装置メーカーは、装置を仮想化するデータセンターへの入力および出力を監視することにより、多数の装置にアクセスすることができる。これは大いにテストと問題の診断を簡素化する。また、メーカーは、ユーザの場所にはるかに安い装置を出荷することができ、仮想化された組み込み装置にその中核となる機能を付与する仮想化サーバによって提供するサービスの加入モデルに基づいて、ユーザに課金することができる。これにより、ユーザは、メンテナンスやファームウェア更新をフラッシングすることの技術的な煩雑さ無しに定期的な更新の恩恵を受けることができる。複数の場所で、安くスリムダウンされた装置を設置することによって、複数のユーザはまた、単一の仮想化された装置の処理能力を共有することができ、コストを節約することができる。例えば、病院は、医師に様々な場所で、１つの病院に位置する単一の共有磁気共鳴イメージング（ＭＲＩ）または他の診断機からの出力を提供する表示装置を提供することができる。よって、システムは、組み込み装置の有用性を高め、今日の組み込み装置よりも長い寿命とより広い様々な使用を可能とすることができる。
【００１１】
装置仮想化システムは、サーバの能力、汎用性、場所およびコスト構造を活用して様々な組み込み装置の機能を提供する。多くの企業は、現在、今日、組み込み装置のいくつかタスクを実行することに適しているデータセンターを構築している。いくつかの実施形態において、仮想組み込み装置はハンドヘルド画面またはモニタを備えながら、全体の処理能力がどこかの離れた仮想サーバに常駐している。ユーザに対して、それらは本当の組み込み装置または仮想装置を使用しているかのように、シームレスである。医師／看護師が自分自身で簡単に運ぶことができるハンドヘルドスキャナのみを有していながら、例えば、離れた場所のどこかに位置している、ＭＲＩ、超音波、または他の医療診断機を考えてみる。この診断機は、同時に複数のリクエストを処理できるようにするのに十分有能である。この方法は、複数の病院によって共有され、単一のチームによって維持された１つだけの有能なマシンが１か所にあり、メンテナンスのコストも同様に共有される故に、メンテナンスのコストが下がる。装置のための仮想化は、デスクトップクライアントおよびサーバのようなオペレーティングシステムレベルで仮想化することによって達成される。複数の分散装置とは対照的に、いずれかの更新は中央の装置にプッシュされる。これは仮想マシンを使用するのではなく、まさに、それ自体が仮想化のすべての利点を得ることができるように組み込み装置を仮想化している。これは何度も改良された物理的装置を販売するのではなく、装置のためのサービスベースのモデルを可能にする。例えば、この装置からただ１つの特定のサービスを使用する必要があるどんな病院の場合でも、彼らはまさにその１つのサービスのために支払うことができる。
【００１２】
いくつかの実施形態において、各組み込み装置は、すべての処理能力がリモート仮想マシンにプッシュされたダム端末のようなものである。これは、組み込み装置が今日に比べて多くの情報を処理するように見え、仮想マシンがデスクトップ、サーバ、メインフレームと同じくらい有能であり得るので、装置メーカーは処理能力だけでなく、フットプリントを心配する必要がなくなることを意味する。システムは、装置がデスクトップのクライアントとサーバとより同様に管理され得ることを可能とする。システムは、今日の組み込み装置に特化した知識を構築するのではなく、すべての装置のためのアプローチの一般化と標準化を可能にする。これは、より一貫性のある装置経験を構築するのに役立ち、ダム端末レベルで制御され得る解像度／表示および特定の周辺装置の変更だけで装置間に亘るアプリケーションを記述することを容易にし得る。この点で、組み込み装置は、デスクトップクライアントとサーバのように、よりシームレスである。１つの装置のために書かれたアプリケーションは、多くの組み込み装置のためにシームレス且つ相互に活用できる。これらの組み込み装置の後ろに座っている仮想マシンは、任意のアプリケーション、オペレーティングシステム、またはセキュリティパッチの更新を識別し、それらを、設定したポリシーに基づいてユーザの許可の有り／無しで、ダウンロードするおよび／またはスケジュールに組み込むことができる。これは、装置経験を、メーカーからのどの装置が使用されているかに関係なく、シンプルで、シームレスで、統合され、有能で、装置間の標準なものとなす。複数の異なるメーカーが、彼らが生み出した経験と、彼らが仮想マシンのサポートおよびサービスを提供し得る処理能力とに基づいて市場を依然と制御することができる。これは、各装置の多くがクラウド内に存在する装置のためのサービスベースのモデルを使用して、より大きな柔軟性を可能にする。
【００１３】
仮想装置は、広く多様な目的を果たすことができる。例えば、システムを実装するテレビは、データセンターにビデオデータの処理をオフロードすることができる。ビデオの再生は、ストレージフォーマットからの再生フォーマットへビデオおよびオーディオのデータを解凍して翻訳する１つまたは複数のコーデックの使用を典型的に含む。コーデックは時間の経過とともに変化して、更なる圧縮や、追加機能等（例えば、多くのスピーカチャンネル、三次元データ等）を追加する。組み込み装置は多くの場合、コーデックの更新に追いつくこと困難であり、特定タイプのコンテンツの再生ができなくなる可能性がある。今日では、これはメーカーがする場合、ファームウェアの更新を介して処理され、または、メーカーがしない場合、新しい装置の購入で処理されている。装置仮想化システムは、頻繁に自動的に新しいコーデックおよび／またはその他の改良によって更新されるリモートデータセンタまたは他の場所で処理を行うことができる。
【００１４】
また、この装置仮想化システムは、追加のリモートサービスに加入することで、１つの組み込み装置が潜在的に複数の機能のために使用きるようになる。例えば、ゲーム機は、光学ドライブや、家庭でゲームをプレイするためのユーザのＡＶ装置への接続を含むことができる。ユーザは、ゲーム機の光学ドライブを使用してムービーを再生する機能や、インターネットを閲覧する機能等の追加サービスに対して後で支払うことができる。装置は、これらのサービスのためのハードウェアを含み、付加機能を追加するために離れて格納された処理およびロジック回路を活用できる。ユーザはゲーム機等の装置を使用するための支払いを停止することができ、ユーザのための装置目的が時間の経過とともに変わる。
【００１５】
図１は、一実施形態における装置仮想化システムのコンポーネントを示すブロック図である。システム１００は、リモート入力コンポーネント１１０、リモート出力コンポーネント１２０、装置識別コンポーネント１３０、通信コンポーネント１４０、仮想装置処理コンポーネント１５０、仮想装置ストレージコンポーネント１６０およびアプリケーション固有ソフトウェアコンポーネント１７０を含む。これらのコンポーネント各々はそれぞれ、本明細書でさらに詳細に記載されている。
【００１６】
リモート入力コンポーネント１１０は、組み込み装置に組み込まれた１つまたは複数の入力装置から、組み込み装置における入力を取得する。入力のタイプは、組み込み装置の目的に応じて変化する。ＤＶＲについては、入力は、テレビ番組を表す圧縮されたオーディオビジュアルデータの形式でのチューナ入力、または、ユーザが番組を記録しもしくはチャンネルを変更することを要求するためのリモコンから入力を含むことができる。病院のＸ線装置についは、入力は、Ｘ線イメージングデータを含むことができる。組み込み装置の数や種類は相当にあり、当業者は、リモート入力コンポーネント１１０への入力を提供することができる多くのタイプの装置を認識するであろう。しかし、従来のシステムとは異なり、リモート入力コンポーネント１１０は、通信コンポーネント１４０を介してリモート仮想化装置へ伝送するために、入力をパッケージ化する。
【００１７】
リモート出力コンポーネント１２０は、組み込み装置における出力を受信し、出力を、ユーザまたは他のコンポーネントに提供する。出力は、画面またはモニタへの表示等のビジュアル出力、スピーカを通して音声の再生等のオーディオ出力、ロボットアームや他の周辺装置で対象物を移動するような機械出力等を含むことができる。出力のタイプは、組み込み装置の目的によって変化する。リモート出力コンポーネント１２０は、通信コンポーネント１４０を経由して、リモート仮想化装置により処理した後の出力を受信する。従来の組み込み装置とは異なり、入力の処理の一部または全部はリモート仮想化装置で起こり、そして、ローカル組み込み装置は、入力を取得し、出力を提供することを主に担当している。
【００１８】
装置識別コンポーネント１３０は、特定の組み込み装置を識別し、仮想装置がいずれかのアプリケーション固有処理を提供できるように、仮想装置処理コンポーネント１５０に通知する。仮想化装置は、様々な組み込み装置の処理および／またはストレージを行うことができ、そして装置識別コンポーネント１３０は、仮想化装置が処理を実行するための組み込み装置の種類およびインスタンスの両方を仮想化装置が理解することができるようにする。装置のタイプは、仮想化装置がいずれかの特別な処理を実行するために、アプリケーション固有ソフトウェアコンポーネント１７０を介していずれかのアプリケーション固有ソフトウェアコードを読み込むことを助ける。装置のインスタンスは、特定の組み込み装置に仮想装置のサービスを要求する権限があるかどうかを仮想装置が判断するための加入または支払いの状態を監視することを援助することができる。
【００１９】
通信コンポーネント１４０は、組み込み装置と仮想装置の間の通信チャネルを提供する。チャネルは、インターネット等の公衆ネットワーク、同様に、企業ローカルエリアネットワーク（ＬＡＮ）等のプライベートネットワークを含むことができる。チャネルは、伝送制御プロトコル（ＴＣＰ）またはユーザデータグラムプロトコル（ＵＤＰ）等のデータを転送するための周知の様々なプロトコルを使用することができる。通信コンポーネント１４０は、装置との接続を生成するために組み込み装置に組み込まれたハードウェアと、その接続を監視すること及び受信した出力を処理することのための少量の低頻度で変更されるソフトウェアとを含んでいてもよい。
【００２０】
仮想装置処理コンポーネント１５０は、組み込み装置の目的に関連する動作を実行するための仮想装置での処理リソースを提供する。例えば、組み込み装置が冷蔵庫である場合、処理コンポーネント１５０は、温度を監視し、指定された温度に到達するまで動作するように圧縮機に指示することができる。仮想装置処理コンポーネント１５０は、装置識別コンポーネント１３０から装置識別の情報を受信し、アプリケーション固有ソフトウェアコンポーネント１７０を呼び出し、識別された組み込み装置の動作に特定ないずれかのアプリケーションソフトウェアコードを読み込む。アプリケーションソフトウェアコードが更新されたバージョンに置き換えられた場合、仮想装置処理コンポーネント１５０は、処理を行う前にアプリケーションソフトウェアコードを透過的に更新し、または自動的にもしくは仮想化装置を管理するＩＴ担当者により決定された他のメンテナンスタスクを行うことができる。
【００２１】
仮想装置処理コンポーネント１５０はまた、加入または他の基盤上で柔軟な処理リソースを提供しているＭＩＣＲＯＳＯＦＴ（登録商標）ＡＺＵＲＥ（登録商標）やＡｍａｚｏｎＥＣ２（登録商標）等のクラウドコンピューティングサービスへの処理タスクをエクスポートすることができる。全体のシステム１００は、ユーザのサイトでのローカル組み込み装置が、入力を取得して出力を提供する一方でクラウドプラットフォームが処理、ストレージおよびその他のリソースを提供するように、クラウドプラットフォーム上に構築され得る。これは非常にスケーラブルなモデルを作成し、新たな組み込み装置をリリースするメーカーにとって価格の低下になる。組み込み装置自体を安くすることとオンラインサービスのための高価な構築コストを回避することの両方により、メーカーは、特定の問題の解決に焦点を当てることができる。装置／ソリューションの人気が大きくなるにつれて、メーカーは、より多くの組み込み装置を迅速に作成し、スムーズに拡張するクラウドプラットフォームのリソースをより多く利用することができる。
【００２２】
仮想装置ストレージコンポーネント１６０は、組み込み装置に代わってデータを永続的に格納するためストレージリソースを仮想化装置にて提供する。ストレージリソースは、１つまたは複数のメモリ内のデータ構造、ファイル、ファイルシステム、ハードディスクドライブ、外部ストレージ、データベース、ストレージエリアネットワーク（ＳＡＮ）、クラウドベースのストレージサービス、または組み込み装置での通信の間でデータを永続的に格納するためのその他の機能を含むことができる。例えば、組み込み装置がＤＶＲまたはバックアップ装置等のコンテンツへのアクセスを提供する場合、仮想装置ストレージコンポーネント１６０は、オーディオビジュアルファイルを格納し、または組み込み装置に代わってデータをバックアップしてもよい。ユーザは固定サイズの従来のバックアップ装置を購入するより、むしろ、ユーザが必要とするまたは支払いたいだけのストレージをユーザに提供する仮想装置と通信するバックアップ装置を購入することができる。時間が経つにつれて、ユーザのニーズは、多かれ少なかれストレージが必要とされるように変更される場合があるが、ユーザは、同じ組み込み装置の有用性を取得し、ニーズの変化に基づいてユーザの加入プランを調整し続けることができる。
【００２３】
アプリケーション固有ソフトウェアコンポーネント１７０は、アプリケーションのために組み込み装置が設計されている当該アプリケーションに固有のいずれかのプロセスを管理する。コンポーネント１７０はソフトウェアコードおよびハードウェアコンポーネントを含み、これらは仮想化装置の位置で且つ組み込み装置から離れた位置で一元的に組み込まれて使用され得る。アプリケーション固有ソフトウェアコンポーネント１７０がソフトウェアコードを表す場合、ソフトウェアコードは、様々な場所に存在する様々な組み込み装置にアクセスすることまたはその知識がなくても仮想化装置にてソフトウェアを更新することによって、一元的に更新され管理され得る。更新した後の次回にユーザが組み込み装置を使用すると、ユーザは、装置が新しい機能で更新されていること、または仮想化装置で発生した更新に基づいてエラーが修正されていることを単に発見することができる。特定の仮想サーバは、必要に応じて複数のアプリケーション固有ソフトウェアコンポーネント１７０を格納し読み込むことにより、様々なタイプの組み込み装置および目的のための処理およびストレージのサービスを提供することができる。
【００２４】
装置仮想化システムが実装されるコンピューティング装置は、中央処理装置、メモリ、入力装置（例えば、キーボードおよびポインティング装置）、出力装置（例えば、表示装置）およびストレージ（例えば、ディスクドライブまたは他の不揮発性ストレージ媒体）を含むことができる。メモリおよびストレージの装置は、システムの実装または有効化のコンピュータ実行可能命令（例えば、ソフトウェア）を用いて符号化され得るコンピュータ読み取り可能なストレージ媒体である。また、データ構造およびメッセージ構造は、通信リンク上の信号等のデータ伝送媒体を介して格納または伝送され得る。種々の通信リンクは、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、ポイントツーポイントダイヤルアップ接続、携帯電話ネットワーク等として使用され得る。
【００２５】
システムの実施形態は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能家庭用電化製品、デジタルカメラ、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散型コンピューティング環境、セットトップボックス、システムオンチップ（ＳＯＣに）等を含む様々な動作環境で実施され得る。コンピュータシステムは、携帯電話、パーソナルデジタルアシスタント、スマートホン、パーソナルコンピュータ、プログラマブル家庭用電化製品、デジタルカメラ等であってもよい。
【００２６】
システムは、１つまたは複数のコンピュータまたは他の装置によって実行されるプログラムモジュール等のコンピュータ実行可能命令の一般的文脈で説明され得る。一般に、プログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。典型的には、プログラムモジュールの機能は、様々な実施形態において望まれるように組み合わせまたは分散させられ得る。
【００２７】
図２は、一実施形態におけるリモート処理のための仮想組み込み装置で情報を取得する装置仮想化システムの処理を示すフロー図である。ブロック２１０に始まり、システムは、組み込み装置に取り付けられた１つまたは複数のセンサまたは周辺装置からの入力を、組み込み装置において受信する。組み込み装置はセンサの入力を仮想装置へ提供し、当該仮想装置は、データセンターや他の集中化された場所内に配置され、または、組み込み装置と同じ場所に置かれて組み込み装置及び潜在的に１つまたは複数の他の組み込み装置に、処理、ストレージもしくはその他のリソースを提供するコンピューティングシステム上に配置されている。組み込み装置は、仮想装置への入力を提供し且つ仮想装置からの出力を受信するために、インターネットまたはプライベートネットワークを介して、仮想装置に接続され得る。組み込み装置内に設置したセンサまたは周辺装置は、組み込み装置を周囲の環境から１つ以上の種類の入力データを取得し、仮想装置への入力を提供する。例えば、データは、チューナ入力、温度入力、音声入力、ビデオ入力、機械的な入力等を含むことができる。
【００２８】
続いてブロック２２０にて、システムは、入力をそれから受信した組み込み装置を識別する。組み込み装置は、読み取り専用メモリ（ＲＯＭ）または他のローカルストレージ内に格納された装置のタイプおよび／またはインスタンスを識別する装置識別子を含むことができる。タイプは組み込み装置の目的を指定することができ、一方で、インスタンスはシリアル番号または同一タイプの装置を区別するための他の実質的に一意の識別子を指定することができる。組み込み装置は、仮想装置が受信した入力を処理する方法を知見するように、仮想装置に装置識別子を提供する。
【００２９】
続いてブロック２３０にて、システムは処理のために仮想装置に装置識別を送信する。組み込み装置は、接続されたネットワークを介して装置識別子を送信して、セットアップ段階を実行し、該セットアップ段階の間に、組み込み装置は仮想装置との通信のチャネルを開き、１つまたは複数の連続する通信で使用するために一度自身を識別して、仮想装置へ入力を提供し且つ仮想装置からの出力を受信する。受信した装置識別に基づいて、仮想装置は、組み込み装置からの入力を処理するためのいずれかのアプリケーション固有命令を読み込む。
【００３０】
続いてブロック２４０にて、システムは、処理のために仮想装置へ受信した入力を送信する。仮想装置は、受信した入力についていずれかのアプリケーション固有処理を行い、結果またはその他の出力を生成する。処理のタイプは、利用可能な組み込み装置のタイプのように広く変化することができる。ＤＶＲの記録の取得のために、仮想装置は、組み込み装置からチューナ入力を受信し、入力を圧縮／符号化し、入力を仮想装置に関連付けられたストレージ内に格納することができる。ＤＶＲの再生の実行ために、仮想装置は、再生、一時停止および早送り等の制御要求を受信し、組み込み装置のディスプレイ上に再生され得る出力として符号化されたオーディオビジュアルデータを提供することができる。実質的に組み込み装置自体上のすべての機能を著しいハードウェアコストで実行する今日の装置と比較して、組み込み装置が処理および他のリソースの消費のかなりの量を仮想装置へオフロードする最終結果を伴って、他のタイプの装置は、仮想装置からの処理の異なるタイプを要求することができる。
【００３１】
続いてブロック２５０にて、システムは、組み込み装置にて仮想装置からのリモート処理結果を受信する。リモート処理結果は、送信された入力の処理の失敗または成功したかどうかを示す結果コードと、同様に、仮想装置により実行された処理の結果としての仮想装置によって提供されるいずれかの出力を含むことができる。いくつかのケースでは、仮想装置は組み込み装置の代わりに単にデータを格納し、処理結果は仮想装置から組み込み装置によって要求されたデータを含むことができる。他のケースでは、処理結果は、組み込み装置の代わりに仮想装置によって実行された実質的な演算の結果を含むことができる。
【００３２】
続いてブロック２６０にて、システムは組み込み装置にて、仮想装置から受信した出力を提供している。出力は、画面またはスピーカのセットで再生されるオーディオビジュアルデータ、ロボットアーム等の機械的周辺装置へ提供される機械的なデータ、以前に仮想装置に格納されたバックアップされたバイナリデータ、またはいずれかの他のタイプのデータを含むことができる。ブロック２６０の後、これらのステップは終了する。
【００３３】
図３は、一実施形態における共通の仮想化施設での仮想装置の情報を処理するための装置仮想化システムの処理を示すフロー図である。ブロック３１０に始まり、システムは、仮想装置において、組み込み装置の機能を実行するための処理または他のリソースに関して仮想装置に依存する組み込み装置を識別する情報を受信する。組み込み装置は、受信した入力と一緒に、装置のタイプおよび／またはインスタンスを識別する装置識別子を送信することができる。タイプは組み込み装置の目的を指定することができ、一方で、インスタンスはシリアル番号または同一タイプの装置を区別するための他の実質的に一意の識別子を指定することができる。仮想装置は組み込み装置の装置タイプを判定し、仮想装置に関連付けられたデータストアからのアプリケーション固有処理情報を読み込む。組み込み装置のメーカーは、最初に、仮想装置のオペレータに組み込み装置を管理するためのアプリケーション固有ソフトウェアコードまたは他の情報を提供し得るとともに、時間をかけて、エラーを修正するかまたは機能をアップグレードするための定期的な更新を提供することができる。
【００３４】
続いてブロック３２０にて、システムは、受信した装置情報に基づいて組み込み装置に関連したアプリケーション固有情報を読み込む。仮想装置は、当該仮想装置が様々な組み込み装置の代わりに動作するための様々なアプリケーション固有処理命令を含むストレージを伴うデータストアを含むことができる。仮想装置は、組み込み装置がいくつかのコンポーネントおよびコストを低減または除去できるように、組み込み装置に処理、ストレージまたはその他のリソースを提供することができる。
【００３５】
続いてブロック３３０にて、システムは組み込み入力を、組み込み装置に組み込まれている１つまたは複数の周辺装置から、仮想装置にて、受信する。受信した入力は、以前には組み込み装置で処理されていたが、それに代えて仮想装置で処理される入力を形成する。入力は、チューナ入力、温度入力、音声入力、ビデオ入力、機械的な入力等を含むことができる。組み込み装置は、仮想装置に組み込み装置を接続するネットワーク上で１つまたは複数の入力メッセージを送信し、仮想装置は、入力を受信し、指定された処理を実行する。
【００３６】
続いてブロック３４０にて、システムは、仮想装置にて、アプリケーション固有情報に基づいて、受信した組み込み入力を処理する。処理は、仮想装置の代わりのデータの格納、入力の計算の実行、他のソース（例えば、公共データベース）から追加データの収集等を含んでいてもよい。仮想装置は、組み込み装置によって提供された入力を遂行するために、プロセッサ、ストレージおよびその他のリソースを提供している。これは、組み込み装置に、これらのリソースを省略するか、または、リソースの単純なバージョンを使用して、組み込み装置コストを削減し、組み込み装置の設定および保守を単純化することを可能にする。
【００３７】
続いてブロック３５０にて、システムは、組み込み入力の処理の１つまたは複数の結果を識別する。その結果は、エラーコード、成功コード、出力データ、得られた情報等を含むことができる。仮想装置の処理は、以前には過去のシステム内の組み込み装置にて生成されたであろう出力を生成する。それから、仮想装置は、組み込み装置がそれ自体で処理のすべてを実行していないことに組み込み装置のユーザが気付かないことがあり得るように、生成された出力を組み込み装置に提供する。装置仮想化システムは、様々なコンピューティング装置の間の高速ネットワーク接続のほぼユビキタス可用性によって部分的に可能となる。
【００３８】
続いてブロック３６０にて、システムは、組み込み装置のユーザに提供するための出力として仮想装置から組み込み装置へ識別結果を送信する。その結果は、モニタ上で再生する組み込み装置用のビデオデータ、スピーカで再生する音声データ、組み込み装置の機械的な周辺装置を制御するための機械的データ等を含むことができる。ブロック３６０の後、これらのステップは終了する。
【００３９】
図４は、一実施形態における装置仮想化システムの例示的な動作環境を示すブロック図である。図は、組み込み装置４１０とネットワーク４４０により接続された仮想装置４５０とを含む。組み込み装置４１０は、家庭、小規模オフィスに、または、ローカル情報を含み且つユーザがある或る目的を遂行するために組み込み装置４１０を購入した他の環境に設置してもよい。組み込み装置４１０は、組み込み装置からデータを収集し、組み込み装置４１０のローカル環境にデータを戻す、１つまたは複数の組み込み入力周辺装置４２０および１つまたは複数の組み込まれた出力周辺装置４３０を含む。組み込み装置４１０と仮想装置４５０を接続するネットワーク４４０は、仮想装置４５０が組み込み装置４１０の代わりに１つまたは複数の機能を実行し、遅滞なくユーザにデータを返すことができるように十分に高速なインターネットまたは他のネットワークも含むことができる。
【００４０】
仮想装置４５０はデータセンターもしくは他の処理施設内に離れて配置されてもよく、または、組み込み装置４１０の位置でサーバもしくは他の利用可能なリソースであってもよい。仮想装置４５０は、従来の組み込み装置４１０によって実行される１つまたは複数の機能を実行するために組み込み装置４１０によって使用される少なくとも１つの仮想リソース４６０を含む。仮想リソース４６０は、プロセッサ、ストレージ、ネットワーク装置、または組み込み装置４１０に代わって動作するその他のリソースおよび、潜在的に他の組み込み装置（図示せず）を含むことができる。仮想装置４５０は、組み込み装置４１０に関連付けられたアプリケーションコードの一元管理を可能にし、同様に、仮想リソース４６０と組み込み装置４１０の安価なコンポーネントコストの共有を可能にする。
【００４１】
いくつかの実施形態において、装置仮想化システムは、ソフトウェアコードまたは組み込み装置に関連するその他の情報をテストすることで組み込み装置メーカーを支援する仮想装置を使用して１つまたは複数の組み込み装置をシミュレートする。メーカーは、ハードウェアの複雑なテストベンチを設定するよりも、むしろ組み込み装置の入力および出力をシミュレートし、エラーとパフォーマンスの問題のために仮想装置（複数可）を監視することによって、多くの装置に対してシステムの拡張性を含む多くのシナリオをテストすることができる。システムは、物理的な装置で再生することは難しいだろう現実世界のシナリオのテストやレクリエーションを大幅に簡素化する。
【００４２】
いくつかの実施形態において、装置仮想化システムは、仮想装置または装置が利用できる共有データに基づいて装置メーカーにレポートを提供する。組み込み装置用のストレージの多くが仮想装置で一元化されるため、装置メーカーは、以前の組み込み装置で入手することは困難であろう豊富なデータをマイニングすることができる。
例えば、装置、最も頻繁に使用する機能およびその他の重要な情報を各ユーザが設定している方法は、すべての仮想装置に関連付けられた中央データストアにアクセスして、利用可能である。また、メーカーは、発生するような組み込み装置のリクエストのジャーナリングとロギングを通して追加データの収集を要求することができる。このように、メーカーは、最も一般的に使用される機能、一般的な設定、一般的な問題等に関する情報を判定することができる。
【００４３】
いくつかの実施形態において、装置仮想化システムは、仮想装置の使用のために装置メーカーに補償するために加入モデルを、組み込み装置のユーザに提供する。例えば、仮想装置は、ユーザが購入した加入ティアに基づいてストレージの大きさを変更できる処理または品質を提供することができる。ユーザは、メーカーに仮想装置上でさまざまな機能を有効にさせるより機能豊富な加入プランへ移すことによって、組み込み装置からのより多くの機能を得ることができる。
【００４４】
いくつかの実施形態において、装置仮想化システムは、仮想装置にて、組み込み装置のメンテナンスおよび更新から組み込み装置のユーザを軽減する自動更新を実行する。仮想装置で使用されるソフトウェアおよび他の情報を更新することにより、組み込み装置の動作が変わり、ユーザは提供されたいずれかの更新からメリットを得る。
【００４５】
以上のことから、装置仮想化システムの特定の実施形態は、例示の目的のために本明細書に記載されていることが理解されるであろうが、その種々の変更が本発明の精神および範囲から逸脱することなく行うことができる。従って、本発明は、添付の特許請求の範囲による以外は限定されない。
【図１】
0006013366.tif 000002
【図２】
0006013366.tif 000003
【図３】
0006013366.tif 000004
【図４】
0006013366.tif 000005