(57)【特許請求の範囲】
【請求項１】
動的ハードウェアアクセラレーションのためのシステムであって、
ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別するプロセスモニタと、
前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するようハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化するハードウェアコントローラと、
前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行するスケジューラと
を有し、
前記プロセスモニタは、前記複数のタスクの中から第２の候補タスクを識別し、
前記ハードウェアコントローラは、前記第２の候補タスクと同じハードウェア最適化に従うタスクの第２のクラスのための第２のハードウェアコンポーネントをインスタンス化することが不可能であり、
前記スケジューラは、前記第２のハードウェアコンポーネントをインスタンス化することができる、複数のＩｏＴサービスデバイスのヒエラルキーにおけるＩｏＴサービスデバイスをＩｏＴ要求元との物理的近さに基づき検出し、前記タスクの第２のクラスを前記ＩｏＴサービスデバイスへ転送するシステム。
【請求項２】
前記オペレーティング環境は、モノのインターネット（ＩｏＴ）ゲートウェイを実装する、
請求項１に記載のシステム。
【請求項３】
前記ＩｏＴゲートウェイは、ＩｏＴデバイスセットにサービングする複数のＩｏＴサービスデバイスの中の１つである、
請求項２に記載のシステム。
【請求項４】
前記複数のＩｏＴサービスデバイスは、ヒエラルキーの一方の端では前記ＩｏＴデバイスセットに直接にサービングするＩｏＴゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置される、
請求項３に記載のシステム。
【請求項５】
前記候補タスクを識別するよう、前記プロセスモニタは、プロセッサの稼働率を測定し、該稼働率が閾値を越える場合に当該タスクを識別する、
請求項１に記載のシステム。
【請求項６】
前記候補タスクは、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従う、
請求項１に記載のシステム。
【請求項７】
前記ハードウェアコンポーネントをインスタンス化するよう、前記ハードウェアコントローラは、
前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つけ、
前記コンポーネント構成により前記ハードウェアコンポーネントを構成し、
前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てる
請求項１に記載のシステム。
【請求項８】
動的ハードウェアアクセラレーションのための方法であって、
ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別することと、
前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するよう、前記オペレーティング環境が以前はアクセス不可能であったハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化することと、
前記オペレーティング環境によって、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行することと
を有し、
当該方法は更に、
前記複数のタスクの中から第２の候補タスクを識別し、
前記第２の候補タスクと同じハードウェア最適化に従うタスクの第２のクラスのための第２のハードウェアコンポーネントをインスタンス化することは不可能であり、
前記第２のハードウェアコンポーネントをインスタンス化することができる、複数のＩｏＴサービスデバイスのヒエラルキーにおけるＩｏＴサービスデバイスをＩｏＴ要求元との物理的近さに基づき検出し、
前記タスクの第２のクラスを前記ＩｏＴサービスデバイスへ転送することを有する方法。
【請求項９】
前記オペレーティング環境は、モノのインターネット（ＩｏＴ）ゲートウェイを実装する、
請求項８に記載の方法。
【請求項１０】
前記ＩｏＴゲートウェイは、ＩｏＴデバイスセットにサービングする複数のＩｏＴサービスデバイスの中の１つである、
請求項９に記載の方法。
【請求項１１】
前記複数のＩｏＴサービスデバイスは、ヒエラルキーの一方の端では前記ＩｏＴデバイスセットに直接にサービングするＩｏＴゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置される、
請求項１０に記載の方法。
【請求項１２】
前記候補タスクを識別するステップは、
プロセッサの稼働率を測定することと、
前記稼働率が閾値を越える場合に当該タスクを識別することと
を含む、請求項８に記載の方法。
【請求項１３】
前記候補タスクは、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従う、
請求項８に記載の方法。
【請求項１４】
前記ハードウェアコンポーネントをインスタンス化するステップは、
前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つけることと、
前記コンポーネント構成により前記ハードウェアコンポーネントを構成することと、
前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てることと
を含む、請求項８に記載の方法。
【請求項１５】
マシンによって実行される場合に、該マシンに、動的ハードウェアアクセラレーションのための動作を実行させるプログラムであって、
前記動作は、
ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別する動作と、
前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するよう、前記オペレーティング環境が以前はアクセス不可能であったハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化する動作と、
前記オペレーティング環境によって、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行する動作と
を有し、
当該プログラムは更に、
前記複数のタスクの中から第２の候補タスクを識別し、
前記第２の候補タスクと同じハードウェア最適化に従うタスクの第２のクラスのための第２のハードウェアコンポーネントをインスタンス化することは不可能であり、
前記第２のハードウェアコンポーネントをインスタンス化することができる、複数のＩｏＴサービスデバイスのヒエラルキーにおけるＩｏＴサービスデバイスをＩｏＴ要求元との物理的近さに基づき検出し、
前記タスクの第２のクラスを前記ＩｏＴサービスデバイスへ転送する動作を前記マシンに実行させる、プログラム。
【請求項１６】
前記オペレーティング環境は、モノのインターネット（ＩｏＴ）ゲートウェイを実装する、
請求項１５に記載のプログラム。
【請求項１７】
前記ＩｏＴゲートウェイは、ＩｏＴデバイスセットにサービングする複数のＩｏＴサービスデバイスの中の１つである、
請求項１６に記載のプログラム。
【請求項１８】
前記複数のＩｏＴサービスデバイスは、ヒエラルキーの一方の端では前記ＩｏＴデバイスセットに直接にサービングするＩｏＴゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置される、
請求項１７に記載のプログラム。
【請求項１９】
前記候補タスクを識別する動作は、
プロセッサの稼働率を測定することと、
前記稼働率が閾値を越える場合に当該タスクを識別することと
を含む、請求項１５に記載のプログラム。
【請求項２０】
前記候補タスクは、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従う、
請求項１５に記載のプログラム。
【請求項２１】
前記ハードウェアコンポーネントをインスタンス化する動作は、
前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つけることと、
前記コンポーネント構成により前記ハードウェアコンポーネントを構成することと、
前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てることと
を含む、請求項１５に記載のプログラム。
【請求項２２】
請求項１５乃至２１のうちいずれか一項に記載のプログラムを記憶しているマシン読み出し可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、エッジコンピューティングに関係がある。いくつかの実施形態は、モノのインターネット（ＩｏＴ；Internet  of  Things）サービスを有効にする場合にエッジデバイスでタスクを処理することに関係がある。
【背景技術】
【０００２】
ＩｏＴデバイスは、センサ及び有限な計算能力をしばしば含むネットワーク内のデバイスである。ＩｏＴデバイスは広い適用性を備え、夫々のＩｏＴデバイスは、通常は、その特定の使用及び環境に特化される。ＩｏＴデバイスは、家庭、ビジネス、産業用途、車両、セキュリティ、最適化、及びコネクティビティの改善において使用される。ＩｏＴデバイスは、互いと直接に通信し且つ他のネットワーク及びより広いインターネットとゲートウェイを通じて通信する。
【図面の簡単な説明】
【０００３】
図面において、それらは必ずしも実寸通りに描かれておらず、同じ番号は、異なる図において同様のコンポーネントを記載してよい。異なる添え字を伴った同じ番号は、同様のコンポーネントの別のインスタンスを表してよい。図面は、例として、しかし制限なしに、本願で説明されている様々な実施形態を一般的に表す。
【図１】論理ゲートウェイ仮想マシン（ＶＭ；virtual  machine）に割り当てられ得るハードウェアアクセラレータを含むデバイスを表す。
【図２】ハードウェア要素を割り当てられる場合にデバイスの移行の例を表す。
【図３】ＩｏＴサービスをサポートするＩｏＴゲートウェイ及びモバイルエッジコンピューティング（ＭＥＣ；Mobile  Edge  Computing）の最適化ヒエラルキーを表す。
【図４】いくつかの実施形態に従う動的ハードウェアアクセラレーションのための技術を示すフローチャートを表す。
【図５】本願で説明されている技術（例えば、メソッドロジ）のいずれか１つ以上がいくつかの実施形態に従って実施され得るマシンのブロック図の例を一般的に表す。
【発明を実施するための形態】
【０００４】
ＩｏＴサービスのためのクラウドコンピューティングからエッジコンピューティングまでの現在の転換は、ＩｏＴデバイスのより近くでより大きい処理能力を備える必要性、及び近接して配置された計算能力（compute  capabilities）を提供する費用の削減の両方によって駆り立てられている。モバイルエッジコンピューティング（ＭＥＣ）のための欧州電気通信標準化機構（ＥＴＳＩ；European  Telecommunications  Standards  Institute）の標準のような、標準は、無線モバイルサブスクライバに近接近して無線アクセスネットワーク（ＲＡＮ；Radio  Access  Network）内で異なるサービス環境及びクラウドコンピューティング能力を提供することを目的とすることによって、このパラダイム・シフトに対処している。ＭＥＣは、クラウドに基づく処理と比べてエッジとＩｏＴデバイスとの間の応答性を高めるので、ＩｏＴサービス及びアプリケーションのためのより良い性能を可能にすることができる。なお、ＩｏＴデータストレージ、処理及び解析のトレンドがネットワークエッジへと向かうにつれて、現在のシステムは、ＩｏＴサービスをサポートするＭＥＣリソースを最適化することがしばしばできない。
【０００５】
本願では、ニーズに基づくハードウェアアクセラレーションを、ＩｏＴゲートウェイをホスティングする特定のモバイルエッジコンピューティング（ＭＥＣ）サーバへ、又はＩｏＴトラフィック集約、処理、及びストレージに関与するローカルゲートウェイへ動的に割り当てることによって、ＩｏＴトラフィック集約、処理、及びサービスプロビジョニングを最適化するデバイス、方法、及びシステムが説明されている。そのようなデバイス、方法、及び技術は、動的な処理を提供し、且つ、エッジの近くで（すなわち、ＩｏＴデータソースのより近くで）処理を提供することで、ネットワークリソースを最適化する。説明されているデバイス、方法、及びシステムは、ニーズに基づくハードウェアアクセラレーションを、特定のエッジコンピュートゲートウェイ又は共同設置されたＭＥＣサーバエッジコンピューティングゲートウェイへ動的に割り当てることによって、エッジコンピューティング能力（例えば、ＩｏＴトラフィック集約、処理、及びサービスプロビジョニング）を最適化するリソースを提供する。ゲートウェイは、エッジコンピュートサーバ又はゲートウェイとＩｏＴデバイスとの間のレイテンシーを低減するよう階層的に配置されてよい。
【０００６】
例において、ＩｏＴゲートウェイは、計算及び記憶能力を備え且つＩｏＴデータ集約及びクラウドへの接続の役割を担うエッジネットワークエンティティである。ＩｏＴゲートウェイは、処理能力に応じて部分的に又は完全にデータ解析を実行してよい。ＩｏＴゲートウェイは、ＩｏＴネットワーク密度、配置要件、及びアプリケーションニーズに応じてネットワークの種々のレベルで配置されてよい。例において、システムは、ゲートウェイ間又はゲートウェイとＩｏＴデバイスとの間のレイテンシーを低減するよう地理的に配置されたＩｏＴゲートウェイ又はゲートウェイとＩｏＴデバイスとの間のいずれかにおいて通信するエッジに基づくコンピューティングを実装する複数のＩｏＴゲートウェイを含む。
【０００７】
図１は、論理ゲートウェイ仮想マシン（ＶＭ）１０４に割り当てられ得るハードウェア１２０におけるハードウェアアクセラレータ１０２を含むデバイス１００を表す。表されているように、ハードウェアアクセラレータは、最初は割り当てられておらず（１０２Ａ）、次いで、後にＶＭ１０４に割り当てられる（１０２Ｂ）。デバイス１００は、単一のＶＭ又は複数のＶＭ（例えば、ＶＭ１０４、ＶＭ１０６、など）を含んでよい。夫々のＶＭは、様々なＩｏＴデバイスのためのゲートウェイを操作してよい。デバイス１００は、オペレーティングシステム１１８と、ビデオプロセッシング、顔認識、オーディオプロセッシング、又は同様のもののような種々のタイプのサービス又はタスクのための１つ以上のハードウェアアクセラレータ（例えば、ハードウェアアクセラレータ１０２）を含むハードウェア１２０とを含む。ハードウェアアクセラレータ１０２は、特設（例えば、固定機能、ハードワイヤード、など）又はプログラム可能なロジック（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ；field-programmable  gate  array））であってよい。
【０００８】
デバイス１００は、ＶＭ１０４、オペレーティングシステム１１８、又はハードウェア１２０において動作し得るプロセスモニタ１０８を含む。デバイス１００の他のコンポーネントは、スケジューラ１１０、ハードウェアコントローラ１１２、並びに任意のハードウェア構成１１６及び構成転換のためのプロセス１１４を含め、ＶＭ１０４、オペレーティングシステム１１８、又はハードウェア１２０において実行されてよい。例において、システム１００のコンポーネントは、単一のエンクロージャーにある。すなわち、システム１００は、クラウドタイプのアーキテクチャでも、遠隔で接続されたコンポーネントから構成されるものでもなく、むしろ、仮想化レイヤによる、より従来的なハードウェアスタックである。
【０００９】
プロセスモニタ１０８は、ハードウェア最適化に従う候補タスクを識別してよい。この例では、候補タスクは、オペレーティング環境（例えば、仮想マシン又は仮想マシンのゲートウェイ）において動作してよい。ハードウェアコントローラ１１２は、候補タスク又は候補タスクと同様のタスクのために、アクセラレータ１０２Ｂによって示されるように、ＶＭ１０４においてハードウェアアクセラレータ１０２Ａをインスタンス化してよい。スケジューラ１１０は、ハードウェア最適化に従うタスククラスを（例えば、ハードウェアアクセラレータ１０２Ｂを用いて）実行してよい。例えば、第１のビデオプロセッシング（例えば、顔認識）タスクは、ＶＭ１０４において開始され、ＩｏＴデバイスから発生して、ゲートウェイを通じて受け取られてよい。第１のビデオプロセッシングタスクは、アクセラレータ１０２Ａによって支援され得るタスクとしてプロセスモニタ１０８によって識別されてよい。ハードウェアコントローラ１１２は、アクセラレータ１０２ＡをＶＭ１０４に割り当ててよい。スケジューラ１１０は、次いで、ＶＭ１０４に割り当てられたアクセラレータ１０２Ｂを用いて（例えば、第１のビデオプロセッシングタスクが既に完了している場合に）第２のビデオプロセッシングタスクを実行してよい。このように、例において、タスクのクラスは、同じハードウェアアクセラレータ１０２から恩恵を受け得るタスクである。
【００１０】
ハードウェアアクセラレーションへのタスクの服従（amenability）は、様々な方法で決定されてよい。例えば、タスクは、特定のハードウェアアクセラレーションに特有のハードウェアインターフェイスにアクセスしようと試みてよい。一般に、ハードウェアアクセラレーションが利用可能でない場合には、アクセスは失敗し、タスクは、汎用プロセッサソリューションに頼ってよい。このように、リクエストはインターセプトされ、（例えば、転換データベース１１４を用いて）特定のハードウェアアクセラレータと照合されてよい。例において、タスクは、要求プロトコルによって（例えば、ＩｏＴ要求プロトコルにおいて）タグ付けされてよい。そのようなタグ付けは、特定のハードウェアアクセラレータへ（例えば、データベース１１４を用いて）マッピングされてよい。例において、特定の命令がハードウェアアクセラレーションデバイスにマッピングされてよい。このように、そのような命令がタスクによって開始される場合には、タスクは、ハードウェアアクセラレーションに従うものとして分類されてよい。ハードウェア１２０におけるハードウェアアクセラレータ１０２へのタスク又はタスクによって開始されるアクティビティのマッピングが見つけられない場合には、タスクは、ハードウェアアクセラレーションに従わない。
【００１１】
ハードウェアコントローラ１１２は、どのリソースがＶＭ１０４にとって潜在的に利用可能であるかを判定するために、ハードウェア構成１１６のデータベースにアクセスしてよい。例において、ハードウェア構成データベース１１６はＦＰＧＡ構成を含む。よって、利用可能なＦＰＧＡリソースは、ＶＭ１０４のハードウェアアクセラレーションの必要性に具体的に合わせられてよい。この例では、如何なる構成によって提供されるＦＰＧＡの如何なる結果として起こる機能性も、ＶＭ１０４が利用可能であって、ハードウェアアクセラレーションに対するタスクの服従を決定するようマッピング可能である個別的なハードウェアアクセラレータであってよい。このようにして、様々なタスクのためのハードウェアアクセラレーションを得る柔軟性は、多くの特殊化したコンポーネントをハードウェア１２０に負わすことなしに高められ得る。
【００１２】
動作におけるシステム１００の例は、ウィンドシェードを上げるための音声コマンドを受けるウィンドシェードＩｏＴコントローラを含んでよい。ＩｏＴデバイス上のマイクロホンがコマンドを捕捉するが、処理は、ゲートウェイデバイスであるシステム１００にオフロードされる。システム１００は、ユーザの発話からコマンドを抽出するよう、音声処理のためのタスクを実行することを開始する。同じ部屋において音声コマンドを有する他のＩｏＴデバイスがある場合に、それらのリクエストのいくつかは同時にシステム１００に入ってくる。プロセスモニタ１０８は、ＶＭ１０４の処理リソースがそれらのリクエストを扱うことにおいて重い負担をかけられていることを観測する。リクエストに対応する音声認識タスクは、処理負荷を引き起こすものとしてプロセスモニタ１０８によって識別される。プロセスモニタ１０８（又はハードウェアコントローラ１１２）はまた、それらのタスクがハードウェアアクセラレーションに従うことを識別する。この決定がなされると、ハードウェアコントローラ１１２は、オペレーティングシステム１１８又はＶＭ１０４のいずれも妨害することなしに、割り当てられていないアクセラレータ１０２ＡをＶＭ１０４へ割り当てる。上述されたように、アクセラレータ１０２ＡはＦＰＧＡであってよい。音声認識を処理するために、ハードウェアコントローラ１１２は、ハードウェア構成データベース１１６からＦＰＧＡ構成を取得し、アクセラレータ１０２Ａを、それをアクセラレータ１０２ＢとしてＶＭ１０４に割り当てる前にプログラムしてよい。割り当て後、スケジューラ１１０は、アクセラレータ１０２Ｂに対して音声認識タスクを実行する。例において、元のタスクは、割り当ての前に既に実行されていてよい。しかし、アクセラレータ１０２Ｂを使用するタスクのクラスは、スケジューラによるハードウェアアクセラレーションを伴って実行される。このようにして、エッジソリューション（例えば、ゲートウェイ）は、過度の又は外部のハードウェアを用いずに、より効率的に、より多種多様なＩｏＴタスクを処理することができる。音声の例は例示であり、他の機能性は、カスタム機能性を伴って動的に加速されてよい。改善され得る他のタスクは、ビデオ、センサ、信号、又は他のデータを操作するためのもののような、ＡＳＩＣ又は他のカスタムハードウェアの一部となることができるものを含む。
【００１３】
図２は、ハードウェア要素を割り当てられる場合にデバイス１００の移行の例を表す。図２は、ハードウェアアクセラレーションによりＩｏＴサービスをサポートするようＭＥＣ能力を最適化するシステム２００を含む。例えば、ハードウェアアクセラレータ２０２は、システム２００が特定のタスクのために最適化された後に、ＭＥＣ  ＶＭ１に加えられる。例において、ハードウェアアクセラレータ２０２を加えることは、図１に従って、ＶＭ１０４においてハードウェアアクセラレータ１０２Ａをインスタンス化することに関連して上述されている。明らかなように、他の技術がハードウェアアクセラレータ２０２を追加、割り当て、再割り当てするために使用されてよい。システム２００は、ハードウェアアクセラレータ２０２をシステム２００に加えることによって、近接に基づくＩｏＴエッジコンピューティングを最適化する動的アクセラレーション割り当てを示す。他のハードウェアは、外部メモリと、ネットワークにアクセスするためのＮＩＣと、ＶＭキュー、キャッシュ、メモリコントローラ、及びコアを含むホストプロセッサと、ハードウェアアクセラレーションコンポーネントと、タスク／アクセラレーションコンポーネントを含むアクセラレーション複合体とを含め、システム２００において含まれてよい。
【００１４】
図１及び２は、ゲートウェイのような単一のエンクロージャーデバイス内のハードウェア割り当ての柔軟性を表す。しかし、ローカルゲートウェイがＩｏＴリクエストを処理するために十分なリソース又は適当なタイプのリソースを有さない状況が起こり得る。しかし、エッジネットワークデバイスにおける様々なハードウェア能力及び階層的なエッジネットワークトポロジは、クラウドコンピューティングに対するエッジコンピューティングの計算効率を依然として実現しながら、利用可能な又は能力があるデバイスへとタスクが移されることを可能にすることができる。
【００１５】
図３は、デバイスサービスをサポートするＭＥＣ３０８Ａ及びＩｏＴゲートウェイの最適化ヒエラルキーシステム３００を表す。例において、ヒエラルキーシステム３００は、ユーザデバイス又はＩｏＴデバイスと処理デバイスとの間のレイテンシーを最小限にする。ＩｏＴゲートウェイとＭＥＣ３０８Ａとの間の共在は、ＩｏＴにおけるビデオ解析又は他の処理のための機会を表す。ＩｏＴゲートウェイ（例えば、仮想マシン３０４におけるゲートウェイ）は、ＩｏＴカメラからのビデオトラフィックアグリゲータの役割を果たしてよい。ＩｏＴゲートウェイは、ビデオトラフィックを処理するか、あるいは、ビデオプロセッシング（例えば、顔認識、コンピュータビジョン、又は同様のもの）のための仮想ＩｏＴゲートウェイを実行するヒエラルキーシステム３００又はＭＥＣにおける他のゲートウェイに依存してよい。（例えば、ＶＭ３０４にある）ＩｏＴゲートウェイは、例えば、ハードウェア３０２から、ビデオプロセッシングのためのハードウェアアクセラレータを使用してよい。ＩｏＴゲートウェイはまた、解析、ストレージ、及びスマートキャッシング能力のために他のゲートウェイ又はＭＥＣを使用してもよい。
【００１６】
ＩｏＴゲートウェイは、ＩｏＴデバイスへ直接に接続し、それらを同じサブネット内で接続するローカルゲートウェイ３１４Ａと、同じサブネット内でローカルゲートウェイを直接に接続し、それらのゲートウェイに対するアグリゲータとなるセミローカルゲートウェイ３１６Ａと、無線ＡＰ又はエンハンスド・ノードＢ（ｅＮｏｄｅＢ）と同じ場所に配置されたネットワーク無線ネットワークエッジにあるグローバルゲートウェイ３０８Ａとを含む階層的配置を有してよい。ＩｏＴゲートウェイ３１８Ａは、ローカルゲートウェイ（例えば、３１４Ｂ）又はセミローカルゲートウェイ（例えば、３１６Ｂ）に対するアグリゲータであってよく、あるいは、ＩｏＴデバイスの通信能力に応じて直接にＩｏＴデバイス（３１８Ｂ）と通信してよい。
【００１７】
例において、様々なタイプのゲートウェイが、ＩｏＴゲートウェイとしてシステムにおいて使用されてよい。例えば、物理ゲートウェイ３１２は、ゲートウェイの役割に専用のネットワークデバイス（例えば、グローバルゲートウェイ３０８Ｂ）を含む。例において、これは、ローカルゲートウェイ（例えば、３１４Ａ）及びセミローカルゲートウェイ（例えば、３１６Ａ）に当てはまる。他のタイプのゲートウェイは、処理、ストレージ、又は解析のための他のデバイス（例えば、ミクロサーバ）と共存しながら接続性に関してゲートウェイの役割を果たすために設けられるネットワークデバイスのような共存（co-existing）ゲートウェイを含んでよい。共存ゲートウェイは、ローカルゲートウェイ、セミローカルゲートウェイ、又はグローバルゲートウェイに適用されてよい。更なる他のＩｏＴゲートウェイは論理ゲートウェイを含んでよい。論理ゲートウェイは、ゲートウェイ機能を実装する仮想デバイス（例えば、ネットワークデバイスで実行される仮想マシン）を含んでよい。論理ゲートウェイは、グローバルゲートウェイ、セミローカルゲートウェイ、又はローカルゲートウェイに適用されてよい。
【００１８】
ＩｏＴ領域３０６は、グローバルゲートウェイ３０８Ａ（例えば、ＭＥＣ）と通信する１つ以上のＩｏＴゲートウェイ（例えば、ＩｏＴゲートウェイ３１８Ｂ、ローカルＩｏＴゲートウェイ３１４Ｂ、又はセミローカルＩｏＴゲートウェイ３１６Ｂ）を含んでよい。グローバルゲートウェイ３０８Ａは、無線ネットワーク領域においてＡＰ又はｅＮｏｄｅＢと通信してよく、ＡＰ又はｅＮｏｄｅＢは、更には、より広い無線コア領域３１０又はインターネット若しくは他のネットワークと通信してよい。
【００１９】
例において、システム３００は、上述されたように、仮想環境における割り当てに利用可能なハードウェアアクセラレーションデバイス３０２を含む。ハードウェアアクセラレーションデバイス３０２は、特設のハードウェア（例えば、ハードワイヤード）又はプログラム可能なハードウェア（例えば、ＦＰＧＡ又は同様のもの）アクセラレーションを含んでよい。システム３００は、ハードウェアアクセラレーション３０２を１つ以上のＩｏＴサービスタスク（例えば、セキュリティ、圧縮、メディアプロセッシング、又は同様のもの）に割り当てて、同じ１つ以上のタスクに割り当てられている一般的なＣＰＵプロセッサが必要とするものと比較して、費やされる時間、電力、ファンクショニング、又は速さを改善することができる。他の例では、ハードウェアアクセラレーションは、例えば、既存のシステムをシャットダウンすることなしに、動的に仮想エッジコンピューティングリソースに割り当て可能であってよい。例において、与えられるＩｏＴサービスに基づきエッジに基づくコンピューティングリソースを最適化するシステムは、近くに位置する（proximity-located）ＩｏＴコンピューティングの必要性を扱うよう構成されたエッジコンピュート仮想マシンを含む。システムは、ＣＰＵ利用プロセス及びオフェンディング（offending）タスクプロセスを実行するプロセッサを含んでよい。ＣＰＵ利用プロセスは、エッジコンピュート仮想マシンの全体のＣＰＵ稼働率を決定することを含んでよく、オフェンディングタスクプロセスは、エッジコンピュート仮想マシンのＣＰＵの大部分を利用するタスクを決定することを含んでよい。システムは、エッジコンピュート仮想マシンをプロビジョニングした同じサーバ内で利用可能な様々な割り当て可能な（例えば、シングルルートＩ／Ｏ仮想化（ＳＲ−ＩＯＶ；Single  Root  I/O  Virtualization））ハードウェアアクセラレーション（例えば、特設のセキュリティ、圧縮、若しくはメディアアクセラレーション、又はプログラム可能なロジックアクセラレーション）を含んでよい。システムは、どの利用可能なハードウェアアクセラレーションが利用可能であるのか、及びプロビジョニングされたエッジコンピュート仮想マシンに割り当てられる場合に利用可能なもののうちのどのハードウェアアクセラレーションが、所定の制限を下回るＣＰＵ稼働率をもたらす低減のような、低減された全体のＣＰＵ稼働率をもたらすのかを決定するよう構成されたアクセラレーション複合体を含んでよい。ハードウェアアクセラレーションは、必要とされるワークロードに基づき変化してよい、ＩｏＴサービスの例は、ユーザによって（例えば、ｅＨｅａｌｔｈを伴う状況において、又は間の遠隔モニタリングのために）遠隔でモニタされ得るスマート空間と遠隔のユーザＩｏＴアプリケーションとの間のビデオセッションを管理するためのＭＥＣサーバでのウェブ実時間通信（ＷｅｂＲＴＣ）を含む。他の例では、ＩｏＴサービスは、例えば、セキュリティを目的として人々を識別するといった、顔認識を含んでよい。
【００２０】
他のＩｏＴサービスは小売プロモーションを含んでよい。小売プロモーションにおいて、ローカルゲートウェイは、身元、位置、又は他のユーザ特性に基づき（例えば、スマートフォンのＲＦＩＤ識別、顔認識、ユーザによって入力された情報、又は同様のものを通じて）クーポンをユーザに送信するよう、ユーザ位置を追跡してヒエラルキーにおける上位ゲートウェイ（例えば、ＭＥＣと同じ場所に配置され得るもの）へ送信してよい。例において、ＩｏＴサービスは、例えば、異なるエリア内の農場を遠隔でモニタするデバイスのためのもののような、農業に基づくＩｏＴサービスを含んでよい。例えば、ＩｏＴゲートウェイは、湿度、漏出量、温度、などに関連したセンサデータをＭＥＣサーバへ送信してよく、解析は、傾向を与えるよう又はアラートを送るようＭＥＣで処理されてよい。更なる他の例では、拡張現実（augmented  reality）（例えば、センサに基づく）がＩｏＴサービスであってよく、ローカルゲートウェイは、センサ情報をＭＥＣへ送信してよく、ＭＥＣは、解析を実行し、ユーザの位置及びコンテキストに適した映像をプッシュしてよい。他の拡張現実の例は、ユーザによるプルモードを含んでよい。
【００２１】
上述されたように、所与のゲートウェイは動的なハードウェアアクセラレーション割り当てを介して最適されてよく、一方、時々、（例えば、ネットワーク近接、低レイテンシー、負荷平衡、などに起因して）ＩｏＴデバイスに一般的にサービングする所与のゲートウェイは、タスクのために利用可能な適切なハードウェアアクセラレータを備えていないことがある。そのようなシナリオでは、ゲートウェイのヒエラルキーは、ネットワーク効率及びハードウェア利用可能性の両方のバランスをとるために使用されてよい。例において、ローカルゲートウェイは、ハードウェア利用可能性について、隣接するローカルゲートウェイを探索してよい。例において、探索は、目標タスクが使用することに従うハードウェアアクセラレータの決定によって調整される。例において、探索は、タスクリクエスト自体を伴う。例において、探索は、ＩｏＴ要求元のより近くにあるノードへの優先権を考慮して、ヒエラルキーを進む。それらの例では、接近は、物理的な近さであってよく、あるいは、それは、レイテンシー、バンド幅、又はそれらの組み合わせにおいて測定されてよい。例において、コスト（経済的又は別なコスト）が、考慮すべき事柄であり得る。例えば、隣接するデバイスからの借り入れのレイテンシーが、それをローカルなままとするコストに満たない場合には、移譲が行われてよく、さもなければ、それはローカルに保たれ得る。例において、ハードウェア最適化されたプロセスは、ローカルのカスタムハードウェアを回避され、より重いタスクをローカルでインスタンス化することに直面して近隣へ移されてよい。
【００２２】
図４は、いくつかの実施形態に従う動的ハードウェアアクセラレーションのための技術４００を示すフローチャートを表す。技術４００は、ハードウェア最適化に従うオペレーティング環境で実行する候補タスクを識別する動作４０２を含む。例えば、候補タスクは、ＩｏＴデバイスからのタスク又はサービスを含んでよく、オペレーティング環境は、システムの仮想マシンを含んでよい。仮想マシンは、システムにおける複数の仮想マシンの中の１つであってよい。ハードウェア最適化は、システムのハードウェアから仮想マシンへハードウェアアクセラレータを割り当てることを含んでよい。技術４００は、候補タスクのためのハードウェア最適化を実施するようオペレーティング環境においてハードウェアコンポーネントをインスタンス化する動作４０４を含む。ハードウェアコンポーネントは、候補タスクのタイプタスクに対応するタスクのタイプを最適化又は改善するよう構成されたハードウェアアクセラレータを含んでよい。例において、ハードウェアコンポーネントをインスタンス化することは、オペレーティング環境内でハードウェアコンポーネントへのインターフェイスを開始することを含む。インターフェイスを開始することは、仮想マシンモニタ（ＶＭＭ；virtual  machine  monitor）によってハードウェアコンポーネントを仮想マシンに割り当てることを含んでよく、オペレーティング環境は仮想マシンであってよい。ハードウェアコンポーネントを割り当てることは、オペレーティング環境が複数のタスクを実行することを妨害しないことを含んでよい。他の例では、ハードウェアコンポーネントをインスタンス化することは、タスクのクラスに対応するデータベース内のコンポーネント構成を見つけ、そのコンポーネント構成によりハードウェアコンポーネントを構成することを含んでよい。例は、構成されたハードウェアコンポーネントをオペレーティング環境に割り当てることを含んでよい。例において、カスタムハードウェアがＦＰＧＡ内にプログラムされるか、あるいは、ハードウェアにおいて別なふうにインスタンス化されると、デバイスの状態は、その同じデバイスを使用したいと望む種々のＶＭにわたるマルチタスク共有を助けるよう、スワップイン／アウトされてよい。
【００２３】
技術４００は、ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行する動作４０６を含む。オペレーティング環境は、例えば、仮想マシン上で、ＩｏＴゲートウェイを実装してよい。ＩｏＴゲートウェイはＭＥＣデバイスを含んでよい。
【００２４】
技術は、第２の候補タスクを識別し、該第２の候補タスクと同じハードウェア最適化に従うタスクの第２のクラスのための第２のハードウェアコンポーネントをインスタンス化せずに、ＩｏＴヒエラルキーにおいて第２のＩｏＴサービスデバイスを見つけ（例えば、他のＩｏＴゲートウェイ、サーバ、デバイス、など）、タスクの第２のクラスを第２のＩｏＴサービスデバイスへ転送する動作のような、他の動作を含んでよい。第２のＩｏＴサービスデバイスを見つけることは、オペレーティング環境（例えば、ＩｏＴゲートウェイ）が属するヒエラルキーの端から始まってヒエラルキーの他方の端へ向かって続くヒエラルキー探索を含んでよい。技術は、プロセッサの稼働率を測定し、稼働率が閾値を越える場合に候補タスクを識別することによって、候補タスクを識別する動作を含んでよい。タスクはサービス又はプロセスを含んでよい。ハードウェアコンポーネントはフィールドプログラマブルゲートアレイ（ＦＰＧＡ；field  programmable  gate  array）を含んでよい。
【００２５】
技術は、ハードウェアアクセラレータのようなハードウェアコンポーネントのクラスに対応するオペレーティング環境のインターフェイスを使用しようと試みることによって、候補タスクがハードウェア最適化に従うかどうかを判定することを含んでよい。他の例では、候補タスクは、タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合に、ハードウェア最適化に従ってよい。マーカーは、候補タスクを開始した要求元デバイス（例えば、ＩｏＴデバイス）による通知を含んでよく、通知は、タスクがハードウェア最適化に従うことを識別する。マーカーは、タスクにおける命令の組を含んでよく、タスクは、命令の組がルールセットと一致する場合に、ハードウェア最適化に従ってよい。
【００２６】
図５は、本願で説明されている技術（例えば、メソッドロジ）のうちのいずれか１つ以上がいくつかの実施形態に従って実施され得るマシン９００のブロック図の例を一般的に表す。代替の実施形態では、マシン９００は、スタンドアローンのデバイスとして動作してよく、あるいは、他のマシンへ接続（ネットワーク接続）されてよい。ネットワーク化された配置では、マシン９００は、サーバ−クライアント・ネットワーク環境におけるサーバマシン、クライアントマシン、又はその両方として動作してよい。例において、マシン９００は、ピア・ツー・ピア（Ｐ２Ｐ）（又は他の分散型）ネットワーク環境におけるピアマシンとなってよい。マシン９００は、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話機、ウェブ機器、ネットワークルータ、スイッチ若しくはブリッジ、又はそのマシンによって行われるべき動作を特定する命令（シーケンシャル又は他）を実行可能なあらゆるマシンであってよい。更には、ただ１つのマシンしか表されていないが、語「マシン」はまた、クラウドコンピューティング、ソフトウェア・アズ・ア・サービス（ＳａａＡ；software  as  a  service）、又は他のコンピュータクラスタ構成のような、本願で説明されているメソッドロジのうちのいずれか１つ以上を実施するよう命令の組（又は複数の組）を個々に又はまとまって実行するマシンの如何なる集合も含むと解釈されるべきである。
【００２７】
例は、本願で記載されるように、ロジック又は多数のコンポーネント、モジュール、若しくはメカニズムを含んでよく、あるいは、それらにおいて動作してよい。モジュールは、動作時に特定の動作を実施することが可能な実体のあるエンティティ（例えば、ハードウェア）である。モジュールはハードウェアを含む。例において、ハードウェアは、具体的な動作を実施するよう特に構成（例えば、ハードワイヤード）されてよい。例において、ハードウェアは、構成可能な実行ユニット（例えば、トランジスタ、回路、など）及び命令を含むコンピュータ読み出し可能な媒体を含んでよい。命令は、動作時に特定の動作を実施するよう実行ユニットを構成する。構成は、実行ユニット又はローディングメカニズムの指揮の下で起こってよい。然るに、実行ユニットは、デバイスが動作しているときにコンピュータ読み出し可能な媒体に通信上結合される。この例では、実行ユニットは、１つよりも多いモジュールの一員であってよい。例えば、動作下で、実行ユニットは、１つの時点で第１のモジュールを実装するよう命令の第１の組によって構成され、そして、第２のモジュールを実装する命令の第２の組によって再構成されてよい。
【００２８】
マシン（例えば、コンピュータシステム）９００は、ハードウェアプロセッサ９０２（例えば、中央演算処理装置（ＣＰＵ；central  processing  unit）、グラフィクス処理ユニット（ＧＰＵ；graphics  processing  unit）、ハードウェアプロセッサコア、又はそれらのあらゆる組み合わせ）、メインメモリ９０４及び静的メモリ９０６を含んでよい。それのうちの一部又は全ては、インターリンク（例えば、バス）９０８を介して互いと通信してよい。マシン９００は、ディスプレイユニット９１０、英数字入力デバイス９１２（例えば、キーボード）、及びユーザインターフェイス（ＵＩ）ナビゲーションデバイス９１４（例えば、マウス）を更に含んでよい。例において、ディスプレイユニット９１０、英数字入力デバイス９１２及びＵＩナビゲーションデバイス９１４は、タッチスクリーンディスプレイであってよい。マシン９００は、その上、記憶デバイス（例えば、ドライブユニット）９１６、信号発生デバイス９１８（例えば、スピーカ）、ネットワークインターフェイスデバイス９２０、及び１つ以上のセンサ９２１（例えば、グローバルポジショニングシステム（ＧＰＳ）センサ、コンパス、加速度計、又は他のセンサ）を含んでよい。マシン９００は、１つ以上の周辺機器（例えば、プリンタ、カードリーダー、など）と通信し又はそれらを制御するために、シリアル（例えば、ユニバーサルシリアルバス（ＵＳＢ））、パラレル、又は他の有線若しくは無線（例えば、赤外線（ＩＲ）、近距離通信（ＮＦＣ）、など）接続のような出力コントローラ９２８を含んでよい。
【００２９】
記憶デバイス９１６は、本願で記載されている技術又は機能のうちのいずれか１つ以上によって利用される又はそれらを具現するデータ構造又は命令９２４（例えば、ソフトウェア）の１つ以上の組を記憶している非一時的なマシン読み出し可能な媒体９２２を含んでよい。命令９２４はまた、マシン９００によるそれらの実行中に、メインメモリ９０４内、静的メモリ９０６内、又はハードウェアプロセッサ９０２内に完全に又は少なくとも部分的に存在してよい。例において、ハードウェアプロセッサ９０２、メインメモリ９０４、静的メモリ９０６、又は記憶デバイス９１６のうちの１つ又は如何なる組み合わせも、マシン読み出し可能な媒体を構成してよい。
【００３０】
マシン読み出し可能な媒体９２２は単一の媒体として表されているが、語「マシン読み出し可能な媒体」は、１つ以上の命令９２４を記憶するよう構成された単一の媒体又は複数の媒体（例えば、中央集権化された若しくは分散されたデータベース、並びに／又は関連するキャッシュ及びサーバ）を含んでよい。
【００３１】
語「マシン読み出し可能な媒体」は、マシン９００による実行のための命令を記憶、符号化、又は搬送することが可能であって、マシン９００に本開示の技術のうちのいずれか１つ以上を実施させ、あるいは、そのような命令によって使用されるか又はそのような命令に関連するデータ構造を記憶、符号化、又は搬送することが可能である如何なる媒体も含んでよい。制限されないマシン読み出し可能な媒体の例は、ソリッドステートメモリ、並びに光学及び磁気媒体を含んでよい。例において、結集した（massed）マシン読み出し可能な媒体は、不変の（例えば、残りの）容量を有する複数の小片から成るマシン読み出し可能な媒体を有する。然るに、結集したマシン読み出し可能な媒体は、一時的な伝播信号ではない。結集したマシン読み出し可能な媒体の具体例は、半導体メモリデバイスのような不揮発性メモリ、例えば、電気的にプログラム可能なリードオンリーメモリ（ＥＰＲＯＭ）、電気的消去可能なプログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、及びフラッシュメモリデバイス；内蔵ハードディスク及びリムーバブルディスクのような磁気ディスク；光学磁気ディスク、並びにＣＤ−ＲＯＭ及びＤＣＤ−ＲＯＭディスクを含んでよい。
【００３２】
命令９２４は、更には、多数の転送プロトコル（例えば、フレームリレー、インターネットプロトコル（ＩＰ）、送信制御プロトコル（ＴＣＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、など）のうちのいずれか１つを用いるネットワークインターフェイスデバイス９２０を介して、送信媒体を用いる通信ネットワーク９２６にわたって送信又は受信されてよい。例となる通信ネットワークは、とりわけ、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、パケットデータネットワーク（例えば、インターネット）、携帯電話ネットワーク（例えば、セルラーネットワーク）、基本電話サービス（ＰＯＴＳ；Plain  Old  Telephone  Service）ネットワーク、及び無線データネットワーク（例えば、Ｗｉ−Ｆｉ（登録商標）として知られている標準の電気電子技術者協会（ＩＥＥＥ；Institute  of  Electrical  and  Electronics  Engineers）８０２．１１ファミリー、ＷｉＭＡＸ（登録商標）として知られている標準のＩＥＥＥ８０２．１６ファミリー）、ＩＥＥＥ８０２．１５．４標準ファミリー、ピア・ツー・ピア（Ｐ２Ｐ）ネットワークを含んでよい。例において、ネットワークインターフェイスデバイス９２０は、通信ネットワーク９２６へ接続する１つ以上の物理ジャック（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、又は電話ジャック）、又は１つ以上のアンテナを含んでよい。例において、ネットワークインターフェイスデバイス９２０は、単入力多出力（ＳＩＭＯ）、多入力多出力（ＭＩＭＯ）、又は多入力単出力（ＭＩＳＯ）技術のうちの少なくも１つを用いて無線により通信するよう複数のアンテナを含んでよい。語「送信媒体」は、マシン９００による実行のための命令を記憶、符号化、又は搬送することができる如何なる実体のない媒体も含むと解釈されるべきであり、そのようなソフトウェアの通信を助けるようデジタル若しくはアナログ通信信号又は他の無形媒体を含む。
【００３３】
［様々な付記及び例］
それらの制限されない例の夫々は、自立してよく、あるいは、他の例の１つ以上との置換又は結合において組み合わされてよい。
【００３４】
例１は、動的ハードウェアアクセラレーションのためのシステムであって、ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別するプロセスモニタと、前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するようハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化するハードウェアコントローラと、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行するスケジューラとを有するシステムである。
【００３５】
例２において、例１の対象は、前記オペレーティング環境が前記ハードウェアエンクロージャーの仮想マシンであることを任意に含む。
【００３６】
例３において、例２の対象は、前記仮想マシンが前記ハードウェアエンクロージャーの複数の仮想マシンの中の１つであることを任意に含む。
【００３７】
例４において、例１乃至３のうちのいずれか１つ以上の例の対象は、前記オペレーティング環境がオペレーティングシステムであることを任意に含む。
【００３８】
例５において、例１乃至４のうちのいずれか１つ以上の例の対象は、前記オペレーティング環境がモノのインターネット（ＩｏＴ）ゲートウェイを実装することを任意に含む。
【００３９】
例６において、例５の対象は、前記ＩｏＴゲートウェイがモバイルエッジコンピューティング（ＭＥＣ）デバイスであることを任意に含む。
【００４０】
例７において、例６の対象は、前記候補タスクが、前記ＩｏＴゲートウェイによってサービングされるＩｏＴデバイスからのリクエストによって開始される複数のタスクの中の１つであることを任意に含む。
【００４１】
例８において、例５乃至７のうちのいずれか１つ以上の例の対象は、前記ＩｏＴゲートウェイが、ＩｏＴデバイスセットにサービングする複数のＩｏＴサービスデバイスの中の１つであることを任意に含む。
【００４２】
例９において、例８の対象は、前記複数のＩｏＴサービスデバイスが、ヒエラルキーの一方の端では前記ＩｏＴデバイスセットに直接にサービングするＩｏＴゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置されることを任意に含む。
【００４３】
例１０において、例９の対象は、前記プロセスモニタが、前記複数のタスクの中から第２の候補タスクを識別し、前記ハードウェアコントローラが、前記第２の候補タスクと同じハードウェア最適化に従うタスクの第２のクラスのための第２のハードウェアコンポーネントをインスタンス化せず、前記スケジューラが、前記ハードウェアコンポーネントをインスタンス化することができる前記ヒエラルキーにおける第２のＩｏＴサービスデバイスを見つけ、前記タスクの第２のクラスを前記第２のＩｏＴサービスデバイスへ転送することを任意に含む。
【００４４】
例１１において、例１０の対象は、前記第２のＩｏＴサービスデバイスを見つけるよう、前記スケジューラが、前記ＩｏＴゲートウェイが属するヒエラルキーの端から該ヒエラルキーの他方の端に向かって前記ヒエラルキーを探索することを任意に含む。
【００４５】
例１２において、例１乃至１１のうちのいずれか１つ以上の例の対象は、前記候補タスクを識別するよう、前記プロセスモニタが、プロセッサの稼働率を測定し、該稼働率が閾値を越える場合に当該タスクを識別することを任意に含む。
【００４６】
例１３において、例１乃至１２のうちのいずれか１つ以上の例の対象は、前記タスクがプロセスであることを任意に含む。
【００４７】
例１４において、例１乃至１３のうちのいずれか１つ以上の例の対象は、前記候補タスクが、ハードウェアコンポーネントのクラスに対応する前記オペレーティング環境のインターフェイスを使用しようと試みる場合にハードウェア最適化に従うことを任意に含む。
【００４８】
例１５において、例１乃至１４のうちのいずれか１つの例の対象は、前記候補タスクが、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従うことを任意に含む。
【００４９】
例１６において、例１５の対象は、前記マーカーが、前記タスクを開始した要求元デバイスによる通知であり、前記タスクがハードウェア最適化に従うことを識別する前記通知であることを任意に含む。
【００５０】
例１７において、例１５乃至１６のうちのいずれか１つ以上の例の対象は、前記マーカーが前記タスクにおける命令の組を含み、前記タスクが、命令の組がルールセットに一致する場合にハードウェア最適化に従うことを任意に含む。
【００５１】
例１８において、例１乃至１７のうちのいずれか１つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化するよう、前記ハードウェアコントローラが、前記オペレーティング環境内で前記ハードウェアコンポーネントへのインターフェイスを開始することを任意に含む。
【００５２】
例１９において、例１８の対象は、前記オペレーティング環境が仮想マシンであるとして、前記インターフェイスを開始するよう、前記ハードウェアコントローラが、仮想マシンモニタ（ＶＭＭ）によって前記ハードウェアコンポーネントを前記仮想マシンに割り当てることを任意に含む。
【００５３】
例２０において、例１９の対象は、前記ハードウェアコンポーネントを割り当てるよう、前記ハードウェアコントローラが、前記オペレーティング環境が複数のタスクを実行することを妨害しないことを任意に含む。
【００５４】
例２１において、例１乃至２０のうちのいずれか１つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化するよう、前記ハードウェアコントローラが、前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つけ、前記コンポーネント構成により前記ハードウェアコンポーネントを構成し、前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てることを任意に含む。
【００５５】
例２２において、例２１の対象は、前記ハードウェアコンポーネントがフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であることを任意に含む。
【００５６】
例２３は、動的ハードウェアアクセラレーションのための方法であって、ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別するステップと、前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するよう、前記オペレーティング環境が以前はアクセス不可能であったハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化するステップと、前記オペレーティング環境によって、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行するステップとを有する方法である。
【００５７】
例２４において、例２３の対象は、前記オペレーティング環境が前記ハードウェアエンクロージャーの仮想マシンであることを任意に含む。
【００５８】
例２５において、例２４の対象は、前記仮想マシンが前記ハードウェアエンクロージャーの複数の仮想マシンの中の１つであることを任意に含む。
【００５９】
例２６において、例２３乃至２５のうちのいずれか１つ以上の例の対象は、前記オペレーティング環境がオペレーティングシステムであることを任意に含む。
【００６０】
例２７において、例２３乃至２６のうちのいずれか１つ以上の例の対象は、前記オペレーティング環境がモノのインターネット（ＩｏＴ）ゲートウェイを実装することを任意に含む。
【００６１】
例２８において、例２７の対象は、前記ＩｏＴゲートウェイがモバイルエッジコンピューティング（ＭＥＣ）デバイスであることを任意に含む。
【００６２】
例２９において、例２８の対象は、前記候補タスクが、前記ＩｏＴゲートウェイによってサービングされるＩｏＴデバイスからのリクエストによって開始される複数のタスクの中の１つであることを任意に含む。
【００６３】
例３０において、例２７乃至２９のうちのいずれか１つ以上の例の対象は、前記ＩｏＴゲートウェイが、ＩｏＴデバイスセットにサービングする複数のＩｏＴサービスデバイスの中の１つであることを任意に含む。
【００６４】
例３１において、例３０の対象は、前記複数のＩｏＴサービスデバイスが、ヒエラルキーの一方の端では前記ＩｏＴデバイスセットに直接にサービングするＩｏＴゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置されることを任意に含む。
【００６５】
例３２において、例３１の対象は、前記複数のタスクの中から第２の候補タスクを識別するステップと、前記第２の候補タスクと同じハードウェア最適化に従うタスクの第２のクラスのための第２のハードウェアコンポーネントをインスタンス化しないステップと、前記ハードウェアコンポーネントをインスタンス化することができる前記ヒエラルキーにおける第２のＩｏＴサービスデバイスを見つけるステップと、前記タスクの第２のクラスを前記第２のＩｏＴサービスデバイスへ転送するステップを任意に含む。
【００６６】
例３３において、例３２の対象は、前記第２のＩｏＴサービスデバイスを見つけるステップが、前記ＩｏＴゲートウェイが属するヒエラルキーの端から該ヒエラルキーの他方の端に向かって前記ヒエラルキーを探索することを含むことを任意に含む。
【００６７】
例３４において、例２３乃至３３のうちのいずれか１つ以上の例の対象は、前記候補タスクを識別するステップが、プロセッサの稼働率を測定し、該稼働率が閾値を越える場合に当該タスクを識別することを含むことを任意に含む。
【００６８】
例３５において、例２３乃至３４のうちのいずれか１つ以上の例の対象は、前記タスクがプロセスであることを任意に含む。
【００６９】
例３６において、例２３乃至３５のうちのいずれか１つ以上の例の対象は、前記候補タスクが、ハードウェアコンポーネントのクラスに対応する前記オペレーティング環境のインターフェイスを使用しようと試みる場合にハードウェア最適化に従うことを任意に含む。
【００７０】
例３７において、例２３乃至３６のうちのいずれか１つの例の対象は、前記候補タスクが、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従うことを任意に含む。
【００７１】
例３８において、例３７の対象は、前記マーカーが、前記タスクを開始した要求元デバイスによる通知であり、前記タスクがハードウェア最適化に従うことを識別する前記通知であることを任意に含む。
【００７２】
例３９において、例３７乃至３８のうちのいずれか１つ以上の例の対象は、前記マーカーが前記タスクにおける命令の組を含み、前記タスクが、命令の組がルールセットに一致する場合にハードウェア最適化に従うことを任意に含む。
【００７３】
例４０において、例２３乃至３９のうちのいずれか１つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化するステップが、前記オペレーティング環境内で前記ハードウェアコンポーネントへのインターフェイスを開始することを含むことを任意に含む。
【００７４】
例４１において、例４０の対象は、前記オペレーティング環境が仮想マシンであるとして、前記インターフェイスを開始することが、仮想マシンモニタ（ＶＭＭ）によって前記ハードウェアコンポーネントを前記仮想マシンに割り当てることを含むことを任意に含む。
【００７５】
例４２において、例４１の対象は、前記ハードウェアコンポーネントを割り当てることが、前記オペレーティング環境が複数のタスクを実行することを妨害しないことを任意に含む。
【００７６】
例４３において、例２３乃至４２のうちのいずれか１つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化するステップが、前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つけ、前記コンポーネント構成により前記ハードウェアコンポーネントを構成し、前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てることを含むことを任意に含む。
【００７７】
例４４において、例４３の対象は、前記ハードウェアコンポーネントがフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であることを任意に含む。
【００７８】
例４５において、例２３乃至４４のうちのいずれか１つ以上の例の対象は、Ｍ１５を任意に含む。
【００７９】
例４６において、例２３乃至４５のうちのいずれか１つ以上の例の対象は、Ｍ１５を任意に含む。
【００８０】
例４７は、マシンによって実行される場合に、該マシンに、動的ハードウェアアクセラレーションのための動作を実行させる命令を含む少なくとも１つのマシン読み出し可能な媒体であって、前記動作は、ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別する動作と、前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するよう、前記オペレーティング環境が以前はアクセス不可能であったハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化する動作と、前記オペレーティング環境によって、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行する動作とを有する、マシン読み出し可能な媒体である。
【００８１】
例４８において、例４７の対象は、前記オペレーティング環境が前記ハードウェアエンクロージャーの仮想マシンであることを任意に含む。
【００８２】
例４９において、例４８の対象は、前記仮想マシンが前記ハードウェアエンクロージャーの複数の仮想マシンの中の１つであることを任意に含む。
【００８３】
例５０において、例４７乃至４９のうちのいずれか１つ以上の例の対象は、前記オペレーティング環境がオペレーティングシステムであることを任意に含む。
【００８４】
例５１において、例４７乃至５０のうちのいずれか１つ以上の例の対象は、前記オペレーティング環境がモノのインターネット（ＩｏＴ）ゲートウェイを実装することを任意に含む。
【００８５】
例５２において、例５１の対象は、前記ＩｏＴゲートウェイがモバイルエッジコンピューティング（ＭＥＣ）デバイスであることを任意に含む。
【００８６】
例５３において、例５２の対象は、前記候補タスクが、前記ＩｏＴゲートウェイによってサービングされるＩｏＴデバイスからのリクエストによって開始される複数のタスクの中の１つであることを任意に含む。
【００８７】
例５４において、例５１乃至５３のうちのいずれか１つ以上の例の対象は、前記ＩｏＴゲートウェイが、ＩｏＴデバイスセットにサービングする複数のＩｏＴサービスデバイスの中の１つであることを任意に含む。
【００８８】
例５５において、例５４の対象は、前記複数のＩｏＴサービスデバイスが、ヒエラルキーの一方の端では前記ＩｏＴデバイスセットに直接にサービングするＩｏＴゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置されることを任意に含む。
【００８９】
例５６において、例５５の対象は、前記複数のタスクの中から第２の候補タスクを識別する動作と、前記第２の候補タスクと同じハードウェア最適化に従うタスクの第２のクラスのための第２のハードウェアコンポーネントをインスタンス化しない動作と、前記ハードウェアコンポーネントをインスタンス化することができる前記ヒエラルキーにおける第２のＩｏＴサービスデバイスを見つける動作と、前記タスクの第２のクラスを前記第２のＩｏＴサービスデバイスへ転送する動作を任意に含む。
【００９０】
例５７において、例５６の対象は、前記第２のＩｏＴサービスデバイスを見つける動作が、前記ＩｏＴゲートウェイが属するヒエラルキーの端から該ヒエラルキーの他方の端に向かって前記ヒエラルキーを探索することを含むことを任意に含む。
【００９１】
例５８において、例４７乃至５７のうちのいずれか１つ以上の例の対象は、前記候補タスクを識別する動作が、プロセッサの稼働率を測定し、該稼働率が閾値を越える場合に当該タスクを識別することを含むことを任意に含む。
【００９２】
例５９において、例４７乃至５８のうちのいずれか１つ以上の例の対象は、前記タスクがプロセスであることを任意に含む。
【００９３】
例６０において、例４７乃至５９のうちのいずれか１つ以上の例の対象は、前記候補タスクが、ハードウェアコンポーネントのクラスに対応する前記オペレーティング環境のインターフェイスを使用しようと試みる場合にハードウェア最適化に従うことを任意に含む。
【００９４】
例６１において、例４７乃至６０のうちのいずれか１つの例の対象は、前記候補タスクが、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従うことを任意に含む。
【００９５】
例６２において、例６１の対象は、前記マーカーが、前記タスクを開始した要求元デバイスによる通知であり、前記タスクがハードウェア最適化に従うことを識別する前記通知であることを任意に含む。
【００９６】
例６３において、例６１乃至６２のうちのいずれか１つ以上の例の対象は、前記マーカーが前記タスクにおける命令の組を含み、前記タスクが、命令の組がルールセットに一致する場合にハードウェア最適化に従うことを任意に含む。
【００９７】
例６４において、例４７乃至６３のうちのいずれか１つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化する動作が、前記オペレーティング環境内で前記ハードウェアコンポーネントへのインターフェイスを開始することを含むことを任意に含む。
【００９８】
例６５において、例６４の対象は、前記オペレーティング環境が仮想マシンであるとして、前記インターフェイスを開始することが、仮想マシンモニタ（ＶＭＭ）によって前記ハードウェアコンポーネントを前記仮想マシンに割り当てることを含むことを任意に含む。
【００９９】
例６６において、例６５の対象は、前記ハードウェアコンポーネントを割り当てることが、前記オペレーティング環境が複数のタスクを実行することを妨害しないことを任意に含む。
【０１００】
例６７において、例４７乃至６６のうちのいずれか１つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化する動作が、前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つけ、前記コンポーネント構成により前記ハードウェアコンポーネントを構成し、前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てることを含むことを任意に含む。
【０１０１】
例６８において、例６７の対象は、前記ハードウェアコンポーネントがフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であることを任意に含む。
【０１０２】
例６９は、動的ハードウェアアクセラレーションのためのシステムであって、ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別する手段と、前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するよう、前記オペレーティング環境が以前はアクセス不可能であったハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化する手段と、前記オペレーティング環境によって、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行する手段とを有するシステムである。
【０１０３】
例７０において、例６９の対象は、前記オペレーティング環境が前記ハードウェアエンクロージャーの仮想マシンであることを任意に含む。
【０１０４】
例７１において、例７０の対象は、前記仮想マシンが前記ハードウェアエンクロージャーの複数の仮想マシンの中の１つであることを任意に含む。
【０１０５】
例７２において、例６９乃至７１のうちのいずれか１つ以上の例の対象は、前記オペレーティング環境がオペレーティングシステムであることを任意に含む。
【０１０６】
例７３において、例６９乃至７２のうちのいずれか１つ以上の例の対象は、前記オペレーティング環境がモノのインターネット（ＩｏＴ）ゲートウェイを実装することを任意に含む。
【０１０７】
例７４において、例７３の対象は、前記ＩｏＴゲートウェイがモバイルエッジコンピューティング（ＭＥＣ）デバイスであることを任意に含む。
【０１０８】
例７５において、例７４の対象は、前記候補タスクが、前記ＩｏＴゲートウェイによってサービングされるＩｏＴデバイスからのリクエストによって開始される複数のタスクの中の１つであることを任意に含む。
【０１０９】
例７６において、例７３乃至７５のうちのいずれか１つ以上の例の対象は、前記ＩｏＴゲートウェイが、ＩｏＴデバイスセットにサービングする複数のＩｏＴサービスデバイスの中の１つであることを任意に含む。
【０１１０】
例７７において、例７６の対象は、前記複数のＩｏＴサービスデバイスが、ヒエラルキーの一方の端では前記ＩｏＴデバイスセットに直接にサービングするＩｏＴゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置されることを任意に含む。
【０１１１】
例７８において、例７７の対象は、前記複数のタスクの中から第２の候補タスクを識別する手段と、前記第２の候補タスクと同じハードウェア最適化に従うタスクの第２のクラスのための第２のハードウェアコンポーネントをインスタンス化しない手段と、前記ハードウェアコンポーネントをインスタンス化することができる前記ヒエラルキーにおける第２のＩｏＴサービスデバイスを見つける手段と、前記タスクの第２のクラスを前記第２のＩｏＴサービスデバイスへ転送する手段を任意に含む。
【０１１２】
例７９において、例７８の対象は、前記第２のＩｏＴサービスデバイスを見つけることが、前記ＩｏＴゲートウェイが属するヒエラルキーの端から該ヒエラルキーの他方の端に向かって前記ヒエラルキーを探索することを含むことを任意に含む。
【０１１３】
例８０において、例６９乃至７９のうちのいずれか１つ以上の例の対象は、前記候補タスクを識別することが、プロセッサの稼働率を測定する手段と、該稼働率が閾値を越える場合に当該タスクを識別する手段とを含むことを任意に含む。
【０１１４】
例８１において、例６９乃至８０のうちのいずれか１つ以上の例の対象は、前記タスクがプロセスであることを任意に含む。
【０１１５】
例８２において、例６９乃至８１のうちのいずれか１つ以上の例の対象は、前記候補タスクが、ハードウェアコンポーネントのクラスに対応する前記オペレーティング環境のインターフェイスを使用しようと試みる場合にハードウェア最適化に従うことを任意に含む。
【０１１６】
例８３において、例６９乃至８２のうちのいずれか１つの例の対象は、前記候補タスクが、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従うことを任意に含む。
【０１１７】
例８４において、例８３の対象は、前記マーカーが、前記タスクを開始した要求元デバイスによる通知であり、前記タスクがハードウェア最適化に従うことを識別する前記通知であることを任意に含む。
【０１１８】
例８５において、例８３乃至８４のうちのいずれか１つ以上の例の対象は、前記マーカーが前記タスクにおける命令の組を含み、前記タスクが、命令の組がルールセットに一致する場合にハードウェア最適化に従うことを任意に含む。
【０１１９】
例８６において、例６９乃至８５のうちのいずれか１つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化することが、前記オペレーティング環境内で前記ハードウェアコンポーネントへのインターフェイスを開始することを含むことを任意に含む。
【０１２０】
例８７において、例８６の対象は、前記オペレーティング環境が仮想マシンであるとして、前記インターフェイスを開始することが、仮想マシンモニタ（ＶＭＭ）によって前記ハードウェアコンポーネントを前記仮想マシンに割り当てることを含むことを任意に含む。
【０１２１】
例８８において、例８７の対象は、前記ハードウェアコンポーネントを割り当てることが、前記オペレーティング環境が複数のタスクを実行することを妨害しないことを任意に含む。
【０１２２】
例８９において、例６９乃至８８のうちのいずれか１つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化することが、前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つける手段と、前記コンポーネント構成により前記ハードウェアコンポーネントを構成する手段と、前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てる手段とを含むことを任意に含む。
【０１２３】
例９０において、例８９の対象は、前記ハードウェアコンポーネントがフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であることを任意に含む。
【０１２４】
例９１において、例６９乃至９０のうちのいずれか１つ以上の例の対象は、ＭＦ１５を任意に含む。
【０１２５】
例９２において、例６９乃至９１のうちのいずれか１つ以上の例の対象は、ＭＦ１５を任意に含む。
【０１２６】
本願で記載されている方法の例は、少なくとも部分的に、マシンであるか又はコンピュータ実装されてよい。いくつかの例は、上記の例において記載された方法を実施するために電子デバイスを構成するよう動作可能な命令により符号化されたコンピュータ読み出し可能な媒体又はマシン読み出し可能な媒体を含んでよい。そのような方法の実施は、マイクロコード、アセンブリ言語コード、より高度な言語コード、又は同様のもののような、コードを含んでよい。そのようなコードは、様々な方法を実施するコンピュータ読み出し可能な命令を含んでよい。コードは、コンピュータプログラム製品の部分を形成してよい。更には、例において、コードは、例えば、実行中に、又は他の時点で、１つ以上の揮発性、非一時的、又は不揮発性の実体のあるコンピュータ読み出し可能な媒体において実体的に記憶されてよい。そのような実体のあるコンピュータ読み出し可能な媒体の例は、制限なしに、ハードディスク、リムーバブル磁気ディスク、リムーバブル光学ディスク（例えば、コンパクトディスク及びデジタルビデオディスク）、磁気カセット、メモリカード若しくはスティック、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、及び同様のものを含んでよい。
【符号の説明】
【０１２７】
１００                  デバイス
１０２，２０２          ハードウェアアクセラレータ
１０４，１０６，３０４  仮想マシン（ＶＭ）
１０８                  プロセスモニタ
１１０                  スケジューラ
１１２                  ハードウェアコントローラ
１１４                  転換データベース
１１６                  ハードウェア構成
１１８                  オペレーティングシステム
１２０                  ハードウェア
２００                  システム
３００                  ヒエラルキーシステム
３０２                  ハードウェアアクセラレーション
９００                  マシン
９２２                  マシン読み出し可能な媒体
【図１】
0006388896.tif 000002
【図２】
0006388896.tif 000003
【図３】
0006388896.tif 000004
【図４】
0006388896.tif 000005
【図５】
0006388896.tif 000006