(58)【調査した分野】(Int.Cl.,DB名)
前記複数のIoTサービスデバイスは、ヒエラルキーの一方の端では前記IoTデバイスセットに直接にサービングするIoTゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置される、
請求項3に記載のシステム。
前記複数のIoTサービスデバイスは、ヒエラルキーの一方の端では前記IoTデバイスセットに直接にサービングするIoTゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置される、
請求項10に記載の方法。
前記複数のIoTサービスデバイスは、ヒエラルキーの一方の端では前記IoTデバイスセットに直接にサービングするIoTゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置される、
請求項17に記載のプログラム。
【発明を実施するための形態】
【0004】
IoTサービスのためのクラウドコンピューティングからエッジコンピューティングまでの現在の転換は、IoTデバイスのより近くでより大きい処理能力を備える必要性、及び近接して配置された計算能力(compute capabilities)を提供する費用の削減の両方によって駆り立てられている。モバイルエッジコンピューティング(MEC)のための欧州電気通信標準化機構(ETSI;European Telecommunications Standards Institute)の標準のような、標準は、無線モバイルサブスクライバに近接近して無線アクセスネットワーク(RAN;Radio Access Network)内で異なるサービス環境及びクラウドコンピューティング能力を提供することを目的とすることによって、このパラダイム・シフトに対処している。MECは、クラウドに基づく処理と比べてエッジとIoTデバイスとの間の応答性を高めるので、IoTサービス及びアプリケーションのためのより良い性能を可能にすることができる。なお、IoTデータストレージ、処理及び解析のトレンドがネットワークエッジへと向かうにつれて、現在のシステムは、IoTサービスをサポートするMECリソースを最適化することがしばしばできない。
【0005】
本願では、ニーズに基づくハードウェアアクセラレーションを、IoTゲートウェイをホスティングする特定のモバイルエッジコンピューティング(MEC)サーバへ、又はIoTトラフィック集約、処理、及びストレージに関与するローカルゲートウェイへ動的に割り当てることによって、IoTトラフィック集約、処理、及びサービスプロビジョニングを最適化するデバイス、方法、及びシステムが説明されている。そのようなデバイス、方法、及び技術は、動的な処理を提供し、且つ、エッジの近くで(すなわち、IoTデータソースのより近くで)処理を提供することで、ネットワークリソースを最適化する。説明されているデバイス、方法、及びシステムは、ニーズに基づくハードウェアアクセラレーションを、特定のエッジコンピュートゲートウェイ又は共同設置されたMECサーバエッジコンピューティングゲートウェイへ動的に割り当てることによって、エッジコンピューティング能力(例えば、IoTトラフィック集約、処理、及びサービスプロビジョニング)を最適化するリソースを提供する。ゲートウェイは、エッジコンピュートサーバ又はゲートウェイとIoTデバイスとの間のレイテンシーを低減するよう階層的に配置されてよい。
【0006】
例において、IoTゲートウェイは、計算及び記憶能力を備え且つIoTデータ集約及びクラウドへの接続の役割を担うエッジネットワークエンティティである。IoTゲートウェイは、処理能力に応じて部分的に又は完全にデータ解析を実行してよい。IoTゲートウェイは、IoTネットワーク密度、配置要件、及びアプリケーションニーズに応じてネットワークの種々のレベルで配置されてよい。例において、システムは、ゲートウェイ間又はゲートウェイとIoTデバイスとの間のレイテンシーを低減するよう地理的に配置されたIoTゲートウェイ又はゲートウェイとIoTデバイスとの間のいずれかにおいて通信するエッジに基づくコンピューティングを実装する複数のIoTゲートウェイを含む。
【0007】
図1は、論理ゲートウェイ仮想マシン(VM)104に割り当てられ得るハードウェア120におけるハードウェアアクセラレータ102を含むデバイス100を表す。表されているように、ハードウェアアクセラレータは、最初は割り当てられておらず(102A)、次いで、後にVM104に割り当てられる(102B)。デバイス100は、単一のVM又は複数のVM(例えば、VM104、VM106、など)を含んでよい。夫々のVMは、様々なIoTデバイスのためのゲートウェイを操作してよい。デバイス100は、オペレーティングシステム118と、ビデオプロセッシング、顔認識、オーディオプロセッシング、又は同様のもののような種々のタイプのサービス又はタスクのための1つ以上のハードウェアアクセラレータ(例えば、ハードウェアアクセラレータ102)を含むハードウェア120とを含む。ハードウェアアクセラレータ102は、特設(例えば、固定機能、ハードワイヤード、など)又はプログラム可能なロジック(例えば、フィールドプログラマブルゲートアレイ(FPGA;field-programmable gate array))であってよい。
【0008】
デバイス100は、VM104、オペレーティングシステム118、又はハードウェア120において動作し得るプロセスモニタ108を含む。デバイス100の他のコンポーネントは、スケジューラ110、ハードウェアコントローラ112、並びに任意のハードウェア構成116及び構成転換のためのプロセス114を含め、VM104、オペレーティングシステム118、又はハードウェア120において実行されてよい。例において、システム100のコンポーネントは、単一のエンクロージャーにある。すなわち、システム100は、クラウドタイプのアーキテクチャでも、遠隔で接続されたコンポーネントから構成されるものでもなく、むしろ、仮想化レイヤによる、より従来的なハードウェアスタックである。
【0009】
プロセスモニタ108は、ハードウェア最適化に従う候補タスクを識別してよい。この例では、候補タスクは、オペレーティング環境(例えば、仮想マシン又は仮想マシンのゲートウェイ)において動作してよい。ハードウェアコントローラ112は、候補タスク又は候補タスクと同様のタスクのために、アクセラレータ102Bによって示されるように、VM104においてハードウェアアクセラレータ102Aをインスタンス化してよい。スケジューラ110は、ハードウェア最適化に従うタスククラスを(例えば、ハードウェアアクセラレータ102Bを用いて)実行してよい。例えば、第1のビデオプロセッシング(例えば、顔認識)タスクは、VM104において開始され、IoTデバイスから発生して、ゲートウェイを通じて受け取られてよい。第1のビデオプロセッシングタスクは、アクセラレータ102Aによって支援され得るタスクとしてプロセスモニタ108によって識別されてよい。ハードウェアコントローラ112は、アクセラレータ102AをVM104に割り当ててよい。スケジューラ110は、次いで、VM104に割り当てられたアクセラレータ102Bを用いて(例えば、第1のビデオプロセッシングタスクが既に完了している場合に)第2のビデオプロセッシングタスクを実行してよい。このように、例において、タスクのクラスは、同じハードウェアアクセラレータ102から恩恵を受け得るタスクである。
【0010】
ハードウェアアクセラレーションへのタスクの服従(amenability)は、様々な方法で決定されてよい。例えば、タスクは、特定のハードウェアアクセラレーションに特有のハードウェアインターフェイスにアクセスしようと試みてよい。一般に、ハードウェアアクセラレーションが利用可能でない場合には、アクセスは失敗し、タスクは、汎用プロセッサソリューションに頼ってよい。このように、リクエストはインターセプトされ、(例えば、転換データベース114を用いて)特定のハードウェアアクセラレータと照合されてよい。例において、タスクは、要求プロトコルによって(例えば、IoT要求プロトコルにおいて)タグ付けされてよい。そのようなタグ付けは、特定のハードウェアアクセラレータへ(例えば、データベース114を用いて)マッピングされてよい。例において、特定の命令がハードウェアアクセラレーションデバイスにマッピングされてよい。このように、そのような命令がタスクによって開始される場合には、タスクは、ハードウェアアクセラレーションに従うものとして分類されてよい。ハードウェア120におけるハードウェアアクセラレータ102へのタスク又はタスクによって開始されるアクティビティのマッピングが見つけられない場合には、タスクは、ハードウェアアクセラレーションに従わない。
【0011】
ハードウェアコントローラ112は、どのリソースがVM104にとって潜在的に利用可能であるかを判定するために、ハードウェア構成116のデータベースにアクセスしてよい。例において、ハードウェア構成データベース116はFPGA構成を含む。よって、利用可能なFPGAリソースは、VM104のハードウェアアクセラレーションの必要性に具体的に合わせられてよい。この例では、如何なる構成によって提供されるFPGAの如何なる結果として起こる機能性も、VM104が利用可能であって、ハードウェアアクセラレーションに対するタスクの服従を決定するようマッピング可能である個別的なハードウェアアクセラレータであってよい。このようにして、様々なタスクのためのハードウェアアクセラレーションを得る柔軟性は、多くの特殊化したコンポーネントをハードウェア120に負わすことなしに高められ得る。
【0012】
動作におけるシステム100の例は、ウィンドシェードを上げるための音声コマンドを受けるウィンドシェードIoTコントローラを含んでよい。IoTデバイス上のマイクロホンがコマンドを捕捉するが、処理は、ゲートウェイデバイスであるシステム100にオフロードされる。システム100は、ユーザの発話からコマンドを抽出するよう、音声処理のためのタスクを実行することを開始する。同じ部屋において音声コマンドを有する他のIoTデバイスがある場合に、それらのリクエストのいくつかは同時にシステム100に入ってくる。プロセスモニタ108は、VM104の処理リソースがそれらのリクエストを扱うことにおいて重い負担をかけられていることを観測する。リクエストに対応する音声認識タスクは、処理負荷を引き起こすものとしてプロセスモニタ108によって識別される。プロセスモニタ108(又はハードウェアコントローラ112)はまた、それらのタスクがハードウェアアクセラレーションに従うことを識別する。この決定がなされると、ハードウェアコントローラ112は、オペレーティングシステム118又はVM104のいずれも妨害することなしに、割り当てられていないアクセラレータ102AをVM104へ割り当てる。上述されたように、アクセラレータ102AはFPGAであってよい。音声認識を処理するために、ハードウェアコントローラ112は、ハードウェア構成データベース116からFPGA構成を取得し、アクセラレータ102Aを、それをアクセラレータ102BとしてVM104に割り当てる前にプログラムしてよい。割り当て後、スケジューラ110は、アクセラレータ102Bに対して音声認識タスクを実行する。例において、元のタスクは、割り当ての前に既に実行されていてよい。しかし、アクセラレータ102Bを使用するタスクのクラスは、スケジューラによるハードウェアアクセラレーションを伴って実行される。このようにして、エッジソリューション(例えば、ゲートウェイ)は、過度の又は外部のハードウェアを用いずに、より効率的に、より多種多様なIoTタスクを処理することができる。音声の例は例示であり、他の機能性は、カスタム機能性を伴って動的に加速されてよい。改善され得る他のタスクは、ビデオ、センサ、信号、又は他のデータを操作するためのもののような、ASIC又は他のカスタムハードウェアの一部となることができるものを含む。
【0013】
図2は、ハードウェア要素を割り当てられる場合にデバイス100の移行の例を表す。
図2は、ハードウェアアクセラレーションによりIoTサービスをサポートするようMEC能力を最適化するシステム200を含む。例えば、ハードウェアアクセラレータ202は、システム200が特定のタスクのために最適化された後に、MEC VM1に加えられる。例において、ハードウェアアクセラレータ202を加えることは、
図1に従って、VM104においてハードウェアアクセラレータ102Aをインスタンス化することに関連して上述されている。明らかなように、他の技術がハードウェアアクセラレータ202を追加、割り当て、再割り当てするために使用されてよい。システム200は、ハードウェアアクセラレータ202をシステム200に加えることによって、近接に基づくIoTエッジコンピューティングを最適化する動的アクセラレーション割り当てを示す。他のハードウェアは、外部メモリと、ネットワークにアクセスするためのNICと、VMキュー、キャッシュ、メモリコントローラ、及びコアを含むホストプロセッサと、ハードウェアアクセラレーションコンポーネントと、タスク/アクセラレーションコンポーネントを含むアクセラレーション複合体とを含め、システム200において含まれてよい。
【0014】
図1及び2は、ゲートウェイのような単一のエンクロージャーデバイス内のハードウェア割り当ての柔軟性を表す。しかし、ローカルゲートウェイがIoTリクエストを処理するために十分なリソース又は適当なタイプのリソースを有さない状況が起こり得る。しかし、エッジネットワークデバイスにおける様々なハードウェア能力及び階層的なエッジネットワークトポロジは、クラウドコンピューティングに対するエッジコンピューティングの計算効率を依然として実現しながら、利用可能な又は能力があるデバイスへとタスクが移されることを可能にすることができる。
【0015】
図3は、デバイスサービスをサポートするMEC308A及びIoTゲートウェイの最適化ヒエラルキーシステム300を表す。例において、ヒエラルキーシステム300は、ユーザデバイス又はIoTデバイスと処理デバイスとの間のレイテンシーを最小限にする。IoTゲートウェイとMEC308Aとの間の共在は、IoTにおけるビデオ解析又は他の処理のための機会を表す。IoTゲートウェイ(例えば、仮想マシン304におけるゲートウェイ)は、IoTカメラからのビデオトラフィックアグリゲータの役割を果たしてよい。IoTゲートウェイは、ビデオトラフィックを処理するか、あるいは、ビデオプロセッシング(例えば、顔認識、コンピュータビジョン、又は同様のもの)のための仮想IoTゲートウェイを実行するヒエラルキーシステム300又はMECにおける他のゲートウェイに依存してよい。(例えば、VM304にある)IoTゲートウェイは、例えば、ハードウェア302から、ビデオプロセッシングのためのハードウェアアクセラレータを使用してよい。IoTゲートウェイはまた、解析、ストレージ、及びスマートキャッシング能力のために他のゲートウェイ又はMECを使用してもよい。
【0016】
IoTゲートウェイは、IoTデバイスへ直接に接続し、それらを同じサブネット内で接続するローカルゲートウェイ314Aと、同じサブネット内でローカルゲートウェイを直接に接続し、それらのゲートウェイに対するアグリゲータとなるセミローカルゲートウェイ316Aと、無線AP又はエンハンスド・ノードB(eNodeB)と同じ場所に配置されたネットワーク無線ネットワークエッジにあるグローバルゲートウェイ308Aとを含む階層的配置を有してよい。IoTゲートウェイ318Aは、ローカルゲートウェイ(例えば、314B)又はセミローカルゲートウェイ(例えば、316B)に対するアグリゲータであってよく、あるいは、IoTデバイスの通信能力に応じて直接にIoTデバイス(318B)と通信してよい。
【0017】
例において、様々なタイプのゲートウェイが、IoTゲートウェイとしてシステムにおいて使用されてよい。例えば、物理ゲートウェイ312は、ゲートウェイの役割に専用のネットワークデバイス(例えば、グローバルゲートウェイ308B)を含む。例において、これは、ローカルゲートウェイ(例えば、314A)及びセミローカルゲートウェイ(例えば、316A)に当てはまる。他のタイプのゲートウェイは、処理、ストレージ、又は解析のための他のデバイス(例えば、ミクロサーバ)と共存しながら接続性に関してゲートウェイの役割を果たすために設けられるネットワークデバイスのような共存(co-existing)ゲートウェイを含んでよい。共存ゲートウェイは、ローカルゲートウェイ、セミローカルゲートウェイ、又はグローバルゲートウェイに適用されてよい。更なる他のIoTゲートウェイは論理ゲートウェイを含んでよい。論理ゲートウェイは、ゲートウェイ機能を実装する仮想デバイス(例えば、ネットワークデバイスで実行される仮想マシン)を含んでよい。論理ゲートウェイは、グローバルゲートウェイ、セミローカルゲートウェイ、又はローカルゲートウェイに適用されてよい。
【0018】
IoT領域306は、グローバルゲートウェイ308A(例えば、MEC)と通信する1つ以上のIoTゲートウェイ(例えば、IoTゲートウェイ318B、ローカルIoTゲートウェイ314B、又はセミローカルIoTゲートウェイ316B)を含んでよい。グローバルゲートウェイ308Aは、無線ネットワーク領域においてAP又はeNodeBと通信してよく、AP又はeNodeBは、更には、より広い無線コア領域310又はインターネット若しくは他のネットワークと通信してよい。
【0019】
例において、システム300は、上述されたように、仮想環境における割り当てに利用可能なハードウェアアクセラレーションデバイス302を含む。ハードウェアアクセラレーションデバイス302は、特設のハードウェア(例えば、ハードワイヤード)又はプログラム可能なハードウェア(例えば、FPGA又は同様のもの)アクセラレーションを含んでよい。システム300は、ハードウェアアクセラレーション302を1つ以上のIoTサービスタスク(例えば、セキュリティ、圧縮、メディアプロセッシング、又は同様のもの)に割り当てて、同じ1つ以上のタスクに割り当てられている一般的なCPUプロセッサが必要とするものと比較して、費やされる時間、電力、ファンクショニング、又は速さを改善することができる。他の例では、ハードウェアアクセラレーションは、例えば、既存のシステムをシャットダウンすることなしに、動的に仮想エッジコンピューティングリソースに割り当て可能であってよい。例において、与えられるIoTサービスに基づきエッジに基づくコンピューティングリソースを最適化するシステムは、近くに位置する(proximity-located)IoTコンピューティングの必要性を扱うよう構成されたエッジコンピュート仮想マシンを含む。システムは、CPU利用プロセス及びオフェンディング(offending)タスクプロセスを実行するプロセッサを含んでよい。CPU利用プロセスは、エッジコンピュート仮想マシンの全体のCPU稼働率を決定することを含んでよく、オフェンディングタスクプロセスは、エッジコンピュート仮想マシンのCPUの大部分を利用するタスクを決定することを含んでよい。システムは、エッジコンピュート仮想マシンをプロビジョニングした同じサーバ内で利用可能な様々な割り当て可能な(例えば、シングルルートI/O仮想化(SR−IOV;Single Root I/O Virtualization))ハードウェアアクセラレーション(例えば、特設のセキュリティ、圧縮、若しくはメディアアクセラレーション、又はプログラム可能なロジックアクセラレーション)を含んでよい。システムは、どの利用可能なハードウェアアクセラレーションが利用可能であるのか、及びプロビジョニングされたエッジコンピュート仮想マシンに割り当てられる場合に利用可能なもののうちのどのハードウェアアクセラレーションが、所定の制限を下回るCPU稼働率をもたらす低減のような、低減された全体のCPU稼働率をもたらすのかを決定するよう構成されたアクセラレーション複合体を含んでよい。ハードウェアアクセラレーションは、必要とされるワークロードに基づき変化してよい、IoTサービスの例は、ユーザによって(例えば、eHealthを伴う状況において、又は間の遠隔モニタリングのために)遠隔でモニタされ得るスマート空間と遠隔のユーザIoTアプリケーションとの間のビデオセッションを管理するためのMECサーバでのウェブ実時間通信(WebRTC)を含む。他の例では、IoTサービスは、例えば、セキュリティを目的として人々を識別するといった、顔認識を含んでよい。
【0020】
他のIoTサービスは小売プロモーションを含んでよい。小売プロモーションにおいて、ローカルゲートウェイは、身元、位置、又は他のユーザ特性に基づき(例えば、スマートフォンのRFID識別、顔認識、ユーザによって入力された情報、又は同様のものを通じて)クーポンをユーザに送信するよう、ユーザ位置を追跡してヒエラルキーにおける上位ゲートウェイ(例えば、MECと同じ場所に配置され得るもの)へ送信してよい。例において、IoTサービスは、例えば、異なるエリア内の農場を遠隔でモニタするデバイスのためのもののような、農業に基づくIoTサービスを含んでよい。例えば、IoTゲートウェイは、湿度、漏出量、温度、などに関連したセンサデータをMECサーバへ送信してよく、解析は、傾向を与えるよう又はアラートを送るようMECで処理されてよい。更なる他の例では、拡張現実(augmented reality)(例えば、センサに基づく)がIoTサービスであってよく、ローカルゲートウェイは、センサ情報をMECへ送信してよく、MECは、解析を実行し、ユーザの位置及びコンテキストに適した映像をプッシュしてよい。他の拡張現実の例は、ユーザによるプルモードを含んでよい。
【0021】
上述されたように、所与のゲートウェイは動的なハードウェアアクセラレーション割り当てを介して最適されてよく、一方、時々、(例えば、ネットワーク近接、低レイテンシー、負荷平衡、などに起因して)IoTデバイスに一般的にサービングする所与のゲートウェイは、タスクのために利用可能な適切なハードウェアアクセラレータを備えていないことがある。そのようなシナリオでは、ゲートウェイのヒエラルキーは、ネットワーク効率及びハードウェア利用可能性の両方のバランスをとるために使用されてよい。例において、ローカルゲートウェイは、ハードウェア利用可能性について、隣接するローカルゲートウェイを探索してよい。例において、探索は、目標タスクが使用することに従うハードウェアアクセラレータの決定によって調整される。例において、探索は、タスクリクエスト自体を伴う。例において、探索は、IoT要求元のより近くにあるノードへの優先権を考慮して、ヒエラルキーを進む。それらの例では、接近は、物理的な近さであってよく、あるいは、それは、レイテンシー、バンド幅、又はそれらの組み合わせにおいて測定されてよい。例において、コスト(経済的又は別なコスト)が、考慮すべき事柄であり得る。例えば、隣接するデバイスからの借り入れのレイテンシーが、それをローカルなままとするコストに満たない場合には、移譲が行われてよく、さもなければ、それはローカルに保たれ得る。例において、ハードウェア最適化されたプロセスは、ローカルのカスタムハードウェアを回避され、より重いタスクをローカルでインスタンス化することに直面して近隣へ移されてよい。
【0022】
図4は、いくつかの実施形態に従う動的ハードウェアアクセラレーションのための技術400を示すフローチャートを表す。技術400は、ハードウェア最適化に従うオペレーティング環境で実行する候補タスクを識別する動作402を含む。例えば、候補タスクは、IoTデバイスからのタスク又はサービスを含んでよく、オペレーティング環境は、システムの仮想マシンを含んでよい。仮想マシンは、システムにおける複数の仮想マシンの中の1つであってよい。ハードウェア最適化は、システムのハードウェアから仮想マシンへハードウェアアクセラレータを割り当てることを含んでよい。技術400は、候補タスクのためのハードウェア最適化を実施するようオペレーティング環境においてハードウェアコンポーネントをインスタンス化する動作404を含む。ハードウェアコンポーネントは、候補タスクのタイプタスクに対応するタスクのタイプを最適化又は改善するよう構成されたハードウェアアクセラレータを含んでよい。例において、ハードウェアコンポーネントをインスタンス化することは、オペレーティング環境内でハードウェアコンポーネントへのインターフェイスを開始することを含む。インターフェイスを開始することは、仮想マシンモニタ(VMM;virtual machine monitor)によってハードウェアコンポーネントを仮想マシンに割り当てることを含んでよく、オペレーティング環境は仮想マシンであってよい。ハードウェアコンポーネントを割り当てることは、オペレーティング環境が複数のタスクを実行することを妨害しないことを含んでよい。他の例では、ハードウェアコンポーネントをインスタンス化することは、タスクのクラスに対応するデータベース内のコンポーネント構成を見つけ、そのコンポーネント構成によりハードウェアコンポーネントを構成することを含んでよい。例は、構成されたハードウェアコンポーネントをオペレーティング環境に割り当てることを含んでよい。例において、カスタムハードウェアがFPGA内にプログラムされるか、あるいは、ハードウェアにおいて別なふうにインスタンス化されると、デバイスの状態は、その同じデバイスを使用したいと望む種々のVMにわたるマルチタスク共有を助けるよう、スワップイン/アウトされてよい。
【0023】
技術400は、ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行する動作406を含む。オペレーティング環境は、例えば、仮想マシン上で、IoTゲートウェイを実装してよい。IoTゲートウェイはMECデバイスを含んでよい。
【0024】
技術は、第2の候補タスクを識別し、該第2の候補タスクと同じハードウェア最適化に従うタスクの第2のクラスのための第2のハードウェアコンポーネントをインスタンス化せずに、IoTヒエラルキーにおいて第2のIoTサービスデバイスを見つけ(例えば、他のIoTゲートウェイ、サーバ、デバイス、など)、タスクの第2のクラスを第2のIoTサービスデバイスへ転送する動作のような、他の動作を含んでよい。第2のIoTサービスデバイスを見つけることは、オペレーティング環境(例えば、IoTゲートウェイ)が属するヒエラルキーの端から始まってヒエラルキーの他方の端へ向かって続くヒエラルキー探索を含んでよい。技術は、プロセッサの稼働率を測定し、稼働率が閾値を越える場合に候補タスクを識別することによって、候補タスクを識別する動作を含んでよい。タスクはサービス又はプロセスを含んでよい。ハードウェアコンポーネントはフィールドプログラマブルゲートアレイ(FPGA;field programmable gate array)を含んでよい。
【0025】
技術は、ハードウェアアクセラレータのようなハードウェアコンポーネントのクラスに対応するオペレーティング環境のインターフェイスを使用しようと試みることによって、候補タスクがハードウェア最適化に従うかどうかを判定することを含んでよい。他の例では、候補タスクは、タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合に、ハードウェア最適化に従ってよい。マーカーは、候補タスクを開始した要求元デバイス(例えば、IoTデバイス)による通知を含んでよく、通知は、タスクがハードウェア最適化に従うことを識別する。マーカーは、タスクにおける命令の組を含んでよく、タスクは、命令の組がルールセットと一致する場合に、ハードウェア最適化に従ってよい。
【0026】
図5は、本願で説明されている技術(例えば、メソッドロジ)のうちのいずれか1つ以上がいくつかの実施形態に従って実施され得るマシン900のブロック図の例を一般的に表す。代替の実施形態では、マシン900は、スタンドアローンのデバイスとして動作してよく、あるいは、他のマシンへ接続(ネットワーク接続)されてよい。ネットワーク化された配置では、マシン900は、サーバ−クライアント・ネットワーク環境におけるサーバマシン、クライアントマシン、又はその両方として動作してよい。例において、マシン900は、ピア・ツー・ピア(P2P)(又は他の分散型)ネットワーク環境におけるピアマシンとなってよい。マシン900は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話機、ウェブ機器、ネットワークルータ、スイッチ若しくはブリッジ、又はそのマシンによって行われるべき動作を特定する命令(シーケンシャル又は他)を実行可能なあらゆるマシンであってよい。更には、ただ1つのマシンしか表されていないが、語「マシン」はまた、クラウドコンピューティング、ソフトウェア・アズ・ア・サービス(SaaA;software as a service)、又は他のコンピュータクラスタ構成のような、本願で説明されているメソッドロジのうちのいずれか1つ以上を実施するよう命令の組(又は複数の組)を個々に又はまとまって実行するマシンの如何なる集合も含むと解釈されるべきである。
【0027】
例は、本願で記載されるように、ロジック又は多数のコンポーネント、モジュール、若しくはメカニズムを含んでよく、あるいは、それらにおいて動作してよい。モジュールは、動作時に特定の動作を実施することが可能な実体のあるエンティティ(例えば、ハードウェア)である。モジュールはハードウェアを含む。例において、ハードウェアは、具体的な動作を実施するよう特に構成(例えば、ハードワイヤード)されてよい。例において、ハードウェアは、構成可能な実行ユニット(例えば、トランジスタ、回路、など)及び命令を含むコンピュータ読み出し可能な媒体を含んでよい。命令は、動作時に特定の動作を実施するよう実行ユニットを構成する。構成は、実行ユニット又はローディングメカニズムの指揮の下で起こってよい。然るに、実行ユニットは、デバイスが動作しているときにコンピュータ読み出し可能な媒体に通信上結合される。この例では、実行ユニットは、1つよりも多いモジュールの一員であってよい。例えば、動作下で、実行ユニットは、1つの時点で第1のモジュールを実装するよう命令の第1の組によって構成され、そして、第2のモジュールを実装する命令の第2の組によって再構成されてよい。
【0028】
マシン(例えば、コンピュータシステム)900は、ハードウェアプロセッサ902(例えば、中央演算処理装置(CPU;central processing unit)、グラフィクス処理ユニット(GPU;graphics processing unit)、ハードウェアプロセッサコア、又はそれらのあらゆる組み合わせ)、メインメモリ904及び静的メモリ906を含んでよい。それのうちの一部又は全ては、インターリンク(例えば、バス)908を介して互いと通信してよい。マシン900は、ディスプレイユニット910、英数字入力デバイス912(例えば、キーボード)、及びユーザインターフェイス(UI)ナビゲーションデバイス914(例えば、マウス)を更に含んでよい。例において、ディスプレイユニット910、英数字入力デバイス912及びUIナビゲーションデバイス914は、タッチスクリーンディスプレイであってよい。マシン900は、その上、記憶デバイス(例えば、ドライブユニット)916、信号発生デバイス918(例えば、スピーカ)、ネットワークインターフェイスデバイス920、及び1つ以上のセンサ921(例えば、グローバルポジショニングシステム(GPS)センサ、コンパス、加速度計、又は他のセンサ)を含んでよい。マシン900は、1つ以上の周辺機器(例えば、プリンタ、カードリーダー、など)と通信し又はそれらを制御するために、シリアル(例えば、ユニバーサルシリアルバス(USB))、パラレル、又は他の有線若しくは無線(例えば、赤外線(IR)、近距離通信(NFC)、など)接続のような出力コントローラ928を含んでよい。
【0029】
記憶デバイス916は、本願で記載されている技術又は機能のうちのいずれか1つ以上によって利用される又はそれらを具現するデータ構造又は命令924(例えば、ソフトウェア)の1つ以上の組を記憶している非一時的なマシン読み出し可能な媒体922を含んでよい。命令924はまた、マシン900によるそれらの実行中に、メインメモリ904内、静的メモリ906内、又はハードウェアプロセッサ902内に完全に又は少なくとも部分的に存在してよい。例において、ハードウェアプロセッサ902、メインメモリ904、静的メモリ906、又は記憶デバイス916のうちの1つ又は如何なる組み合わせも、マシン読み出し可能な媒体を構成してよい。
【0030】
マシン読み出し可能な媒体922は単一の媒体として表されているが、語「マシン読み出し可能な媒体」は、1つ以上の命令924を記憶するよう構成された単一の媒体又は複数の媒体(例えば、中央集権化された若しくは分散されたデータベース、並びに/又は関連するキャッシュ及びサーバ)を含んでよい。
【0031】
語「マシン読み出し可能な媒体」は、マシン900による実行のための命令を記憶、符号化、又は搬送することが可能であって、マシン900に本開示の技術のうちのいずれか1つ以上を実施させ、あるいは、そのような命令によって使用されるか又はそのような命令に関連するデータ構造を記憶、符号化、又は搬送することが可能である如何なる媒体も含んでよい。制限されないマシン読み出し可能な媒体の例は、ソリッドステートメモリ、並びに光学及び磁気媒体を含んでよい。例において、結集した(massed)マシン読み出し可能な媒体は、不変の(例えば、残りの)容量を有する複数の小片から成るマシン読み出し可能な媒体を有する。然るに、結集したマシン読み出し可能な媒体は、一時的な伝播信号ではない。結集したマシン読み出し可能な媒体の具体例は、半導体メモリデバイスのような不揮発性メモリ、例えば、電気的にプログラム可能なリードオンリーメモリ(EPROM)、電気的消去可能なプログラム可能リードオンリーメモリ(EEPROM)、及びフラッシュメモリデバイス;内蔵ハードディスク及びリムーバブルディスクのような磁気ディスク;光学磁気ディスク、並びにCD−ROM及びDCD−ROMディスクを含んでよい。
【0032】
命令924は、更には、多数の転送プロトコル(例えば、フレームリレー、インターネットプロトコル(IP)、送信制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、など)のうちのいずれか1つを用いるネットワークインターフェイスデバイス920を介して、送信媒体を用いる通信ネットワーク926にわたって送信又は受信されてよい。例となる通信ネットワークは、とりわけ、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、パケットデータネットワーク(例えば、インターネット)、携帯電話ネットワーク(例えば、セルラーネットワーク)、基本電話サービス(POTS;Plain Old Telephone Service)ネットワーク、及び無線データネットワーク(例えば、Wi−Fi(登録商標)として知られている標準の電気電子技術者協会(IEEE;Institute of Electrical and Electronics Engineers)802.11ファミリー、WiMAX(登録商標)として知られている標準のIEEE802.16ファミリー)、IEEE802.15.4標準ファミリー、ピア・ツー・ピア(P2P)ネットワークを含んでよい。例において、ネットワークインターフェイスデバイス920は、通信ネットワーク926へ接続する1つ以上の物理ジャック(例えば、Ethernet(登録商標)、又は電話ジャック)、又は1つ以上のアンテナを含んでよい。例において、ネットワークインターフェイスデバイス920は、単入力多出力(SIMO)、多入力多出力(MIMO)、又は多入力単出力(MISO)技術のうちの少なくも1つを用いて無線により通信するよう複数のアンテナを含んでよい。語「送信媒体」は、マシン900による実行のための命令を記憶、符号化、又は搬送することができる如何なる実体のない媒体も含むと解釈されるべきであり、そのようなソフトウェアの通信を助けるようデジタル若しくはアナログ通信信号又は他の無形媒体を含む。
【0033】
[様々な付記及び例]
それらの制限されない例の夫々は、自立してよく、あるいは、他の例の1つ以上との置換又は結合において組み合わされてよい。
【0034】
例1は、動的ハードウェアアクセラレーションのためのシステムであって、ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別するプロセスモニタと、前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するようハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化するハードウェアコントローラと、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行するスケジューラとを有するシステムである。
【0035】
例2において、例1の対象は、前記オペレーティング環境が前記ハードウェアエンクロージャーの仮想マシンであることを任意に含む。
【0036】
例3において、例2の対象は、前記仮想マシンが前記ハードウェアエンクロージャーの複数の仮想マシンの中の1つであることを任意に含む。
【0037】
例4において、例1乃至3のうちのいずれか1つ以上の例の対象は、前記オペレーティング環境がオペレーティングシステムであることを任意に含む。
【0038】
例5において、例1乃至4のうちのいずれか1つ以上の例の対象は、前記オペレーティング環境がモノのインターネット(IoT)ゲートウェイを実装することを任意に含む。
【0039】
例6において、例5の対象は、前記IoTゲートウェイがモバイルエッジコンピューティング(MEC)デバイスであることを任意に含む。
【0040】
例7において、例6の対象は、前記候補タスクが、前記IoTゲートウェイによってサービングされるIoTデバイスからのリクエストによって開始される複数のタスクの中の1つであることを任意に含む。
【0041】
例8において、例5乃至7のうちのいずれか1つ以上の例の対象は、前記IoTゲートウェイが、IoTデバイスセットにサービングする複数のIoTサービスデバイスの中の1つであることを任意に含む。
【0042】
例9において、例8の対象は、前記複数のIoTサービスデバイスが、ヒエラルキーの一方の端では前記IoTデバイスセットに直接にサービングするIoTゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置されることを任意に含む。
【0043】
例10において、例9の対象は、前記プロセスモニタが、前記複数のタスクの中から第2の候補タスクを識別し、前記ハードウェアコントローラが、前記第2の候補タスクと同じハードウェア最適化に従うタスクの第2のクラスのための第2のハードウェアコンポーネントをインスタンス化せず、前記スケジューラが、前記ハードウェアコンポーネントをインスタンス化することができる前記ヒエラルキーにおける第2のIoTサービスデバイスを見つけ、前記タスクの第2のクラスを前記第2のIoTサービスデバイスへ転送することを任意に含む。
【0044】
例11において、例10の対象は、前記第2のIoTサービスデバイスを見つけるよう、前記スケジューラが、前記IoTゲートウェイが属するヒエラルキーの端から該ヒエラルキーの他方の端に向かって前記ヒエラルキーを探索することを任意に含む。
【0045】
例12において、例1乃至11のうちのいずれか1つ以上の例の対象は、前記候補タスクを識別するよう、前記プロセスモニタが、プロセッサの稼働率を測定し、該稼働率が閾値を越える場合に当該タスクを識別することを任意に含む。
【0046】
例13において、例1乃至12のうちのいずれか1つ以上の例の対象は、前記タスクがプロセスであることを任意に含む。
【0047】
例14において、例1乃至13のうちのいずれか1つ以上の例の対象は、前記候補タスクが、ハードウェアコンポーネントのクラスに対応する前記オペレーティング環境のインターフェイスを使用しようと試みる場合にハードウェア最適化に従うことを任意に含む。
【0048】
例15において、例1乃至14のうちのいずれか1つの例の対象は、前記候補タスクが、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従うことを任意に含む。
【0049】
例16において、例15の対象は、前記マーカーが、前記タスクを開始した要求元デバイスによる通知であり、前記タスクがハードウェア最適化に従うことを識別する前記通知であることを任意に含む。
【0050】
例17において、例15乃至16のうちのいずれか1つ以上の例の対象は、前記マーカーが前記タスクにおける命令の組を含み、前記タスクが、命令の組がルールセットに一致する場合にハードウェア最適化に従うことを任意に含む。
【0051】
例18において、例1乃至17のうちのいずれか1つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化するよう、前記ハードウェアコントローラが、前記オペレーティング環境内で前記ハードウェアコンポーネントへのインターフェイスを開始することを任意に含む。
【0052】
例19において、例18の対象は、前記オペレーティング環境が仮想マシンであるとして、前記インターフェイスを開始するよう、前記ハードウェアコントローラが、仮想マシンモニタ(VMM)によって前記ハードウェアコンポーネントを前記仮想マシンに割り当てることを任意に含む。
【0053】
例20において、例19の対象は、前記ハードウェアコンポーネントを割り当てるよう、前記ハードウェアコントローラが、前記オペレーティング環境が複数のタスクを実行することを妨害しないことを任意に含む。
【0054】
例21において、例1乃至20のうちのいずれか1つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化するよう、前記ハードウェアコントローラが、前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つけ、前記コンポーネント構成により前記ハードウェアコンポーネントを構成し、前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てることを任意に含む。
【0055】
例22において、例21の対象は、前記ハードウェアコンポーネントがフィールドプログラマブルゲートアレイ(FPGA)であることを任意に含む。
【0056】
例23は、動的ハードウェアアクセラレーションのための方法であって、ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別するステップと、前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するよう、前記オペレーティング環境が以前はアクセス不可能であったハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化するステップと、前記オペレーティング環境によって、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行するステップとを有する方法である。
【0057】
例24において、例23の対象は、前記オペレーティング環境が前記ハードウェアエンクロージャーの仮想マシンであることを任意に含む。
【0058】
例25において、例24の対象は、前記仮想マシンが前記ハードウェアエンクロージャーの複数の仮想マシンの中の1つであることを任意に含む。
【0059】
例26において、例23乃至25のうちのいずれか1つ以上の例の対象は、前記オペレーティング環境がオペレーティングシステムであることを任意に含む。
【0060】
例27において、例23乃至26のうちのいずれか1つ以上の例の対象は、前記オペレーティング環境がモノのインターネット(IoT)ゲートウェイを実装することを任意に含む。
【0061】
例28において、例27の対象は、前記IoTゲートウェイがモバイルエッジコンピューティング(MEC)デバイスであることを任意に含む。
【0062】
例29において、例28の対象は、前記候補タスクが、前記IoTゲートウェイによってサービングされるIoTデバイスからのリクエストによって開始される複数のタスクの中の1つであることを任意に含む。
【0063】
例30において、例27乃至29のうちのいずれか1つ以上の例の対象は、前記IoTゲートウェイが、IoTデバイスセットにサービングする複数のIoTサービスデバイスの中の1つであることを任意に含む。
【0064】
例31において、例30の対象は、前記複数のIoTサービスデバイスが、ヒエラルキーの一方の端では前記IoTデバイスセットに直接にサービングするIoTゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置されることを任意に含む。
【0065】
例32において、例31の対象は、前記複数のタスクの中から第2の候補タスクを識別するステップと、前記第2の候補タスクと同じハードウェア最適化に従うタスクの第2のクラスのための第2のハードウェアコンポーネントをインスタンス化しないステップと、前記ハードウェアコンポーネントをインスタンス化することができる前記ヒエラルキーにおける第2のIoTサービスデバイスを見つけるステップと、前記タスクの第2のクラスを前記第2のIoTサービスデバイスへ転送するステップを任意に含む。
【0066】
例33において、例32の対象は、前記第2のIoTサービスデバイスを見つけるステップが、前記IoTゲートウェイが属するヒエラルキーの端から該ヒエラルキーの他方の端に向かって前記ヒエラルキーを探索することを含むことを任意に含む。
【0067】
例34において、例23乃至33のうちのいずれか1つ以上の例の対象は、前記候補タスクを識別するステップが、プロセッサの稼働率を測定し、該稼働率が閾値を越える場合に当該タスクを識別することを含むことを任意に含む。
【0068】
例35において、例23乃至34のうちのいずれか1つ以上の例の対象は、前記タスクがプロセスであることを任意に含む。
【0069】
例36において、例23乃至35のうちのいずれか1つ以上の例の対象は、前記候補タスクが、ハードウェアコンポーネントのクラスに対応する前記オペレーティング環境のインターフェイスを使用しようと試みる場合にハードウェア最適化に従うことを任意に含む。
【0070】
例37において、例23乃至36のうちのいずれか1つの例の対象は、前記候補タスクが、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従うことを任意に含む。
【0071】
例38において、例37の対象は、前記マーカーが、前記タスクを開始した要求元デバイスによる通知であり、前記タスクがハードウェア最適化に従うことを識別する前記通知であることを任意に含む。
【0072】
例39において、例37乃至38のうちのいずれか1つ以上の例の対象は、前記マーカーが前記タスクにおける命令の組を含み、前記タスクが、命令の組がルールセットに一致する場合にハードウェア最適化に従うことを任意に含む。
【0073】
例40において、例23乃至39のうちのいずれか1つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化するステップが、前記オペレーティング環境内で前記ハードウェアコンポーネントへのインターフェイスを開始することを含むことを任意に含む。
【0074】
例41において、例40の対象は、前記オペレーティング環境が仮想マシンであるとして、前記インターフェイスを開始することが、仮想マシンモニタ(VMM)によって前記ハードウェアコンポーネントを前記仮想マシンに割り当てることを含むことを任意に含む。
【0075】
例42において、例41の対象は、前記ハードウェアコンポーネントを割り当てることが、前記オペレーティング環境が複数のタスクを実行することを妨害しないことを任意に含む。
【0076】
例43において、例23乃至42のうちのいずれか1つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化するステップが、前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つけ、前記コンポーネント構成により前記ハードウェアコンポーネントを構成し、前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てることを含むことを任意に含む。
【0077】
例44において、例43の対象は、前記ハードウェアコンポーネントがフィールドプログラマブルゲートアレイ(FPGA)であることを任意に含む。
【0078】
例45において、例23乃至44のうちのいずれか1つ以上の例の対象は、M15を任意に含む。
【0079】
例46において、例23乃至45のうちのいずれか1つ以上の例の対象は、M15を任意に含む。
【0080】
例47は、マシンによって実行される場合に、該マシンに、動的ハードウェアアクセラレーションのための動作を実行させる命令を含む少なくとも1つのマシン読み出し可能な媒体であって、前記動作は、ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別する動作と、前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するよう、前記オペレーティング環境が以前はアクセス不可能であったハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化する動作と、前記オペレーティング環境によって、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行する動作とを有する、マシン読み出し可能な媒体である。
【0081】
例48において、例47の対象は、前記オペレーティング環境が前記ハードウェアエンクロージャーの仮想マシンであることを任意に含む。
【0082】
例49において、例48の対象は、前記仮想マシンが前記ハードウェアエンクロージャーの複数の仮想マシンの中の1つであることを任意に含む。
【0083】
例50において、例47乃至49のうちのいずれか1つ以上の例の対象は、前記オペレーティング環境がオペレーティングシステムであることを任意に含む。
【0084】
例51において、例47乃至50のうちのいずれか1つ以上の例の対象は、前記オペレーティング環境がモノのインターネット(IoT)ゲートウェイを実装することを任意に含む。
【0085】
例52において、例51の対象は、前記IoTゲートウェイがモバイルエッジコンピューティング(MEC)デバイスであることを任意に含む。
【0086】
例53において、例52の対象は、前記候補タスクが、前記IoTゲートウェイによってサービングされるIoTデバイスからのリクエストによって開始される複数のタスクの中の1つであることを任意に含む。
【0087】
例54において、例51乃至53のうちのいずれか1つ以上の例の対象は、前記IoTゲートウェイが、IoTデバイスセットにサービングする複数のIoTサービスデバイスの中の1つであることを任意に含む。
【0088】
例55において、例54の対象は、前記複数のIoTサービスデバイスが、ヒエラルキーの一方の端では前記IoTデバイスセットに直接にサービングするIoTゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置されることを任意に含む。
【0089】
例56において、例55の対象は、前記複数のタスクの中から第2の候補タスクを識別する動作と、前記第2の候補タスクと同じハードウェア最適化に従うタスクの第2のクラスのための第2のハードウェアコンポーネントをインスタンス化しない動作と、前記ハードウェアコンポーネントをインスタンス化することができる前記ヒエラルキーにおける第2のIoTサービスデバイスを見つける動作と、前記タスクの第2のクラスを前記第2のIoTサービスデバイスへ転送する動作を任意に含む。
【0090】
例57において、例56の対象は、前記第2のIoTサービスデバイスを見つける動作が、前記IoTゲートウェイが属するヒエラルキーの端から該ヒエラルキーの他方の端に向かって前記ヒエラルキーを探索することを含むことを任意に含む。
【0091】
例58において、例47乃至57のうちのいずれか1つ以上の例の対象は、前記候補タスクを識別する動作が、プロセッサの稼働率を測定し、該稼働率が閾値を越える場合に当該タスクを識別することを含むことを任意に含む。
【0092】
例59において、例47乃至58のうちのいずれか1つ以上の例の対象は、前記タスクがプロセスであることを任意に含む。
【0093】
例60において、例47乃至59のうちのいずれか1つ以上の例の対象は、前記候補タスクが、ハードウェアコンポーネントのクラスに対応する前記オペレーティング環境のインターフェイスを使用しようと試みる場合にハードウェア最適化に従うことを任意に含む。
【0094】
例61において、例47乃至60のうちのいずれか1つの例の対象は、前記候補タスクが、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従うことを任意に含む。
【0095】
例62において、例61の対象は、前記マーカーが、前記タスクを開始した要求元デバイスによる通知であり、前記タスクがハードウェア最適化に従うことを識別する前記通知であることを任意に含む。
【0096】
例63において、例61乃至62のうちのいずれか1つ以上の例の対象は、前記マーカーが前記タスクにおける命令の組を含み、前記タスクが、命令の組がルールセットに一致する場合にハードウェア最適化に従うことを任意に含む。
【0097】
例64において、例47乃至63のうちのいずれか1つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化する動作が、前記オペレーティング環境内で前記ハードウェアコンポーネントへのインターフェイスを開始することを含むことを任意に含む。
【0098】
例65において、例64の対象は、前記オペレーティング環境が仮想マシンであるとして、前記インターフェイスを開始することが、仮想マシンモニタ(VMM)によって前記ハードウェアコンポーネントを前記仮想マシンに割り当てることを含むことを任意に含む。
【0099】
例66において、例65の対象は、前記ハードウェアコンポーネントを割り当てることが、前記オペレーティング環境が複数のタスクを実行することを妨害しないことを任意に含む。
【0100】
例67において、例47乃至66のうちのいずれか1つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化する動作が、前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つけ、前記コンポーネント構成により前記ハードウェアコンポーネントを構成し、前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てることを含むことを任意に含む。
【0101】
例68において、例67の対象は、前記ハードウェアコンポーネントがフィールドプログラマブルゲートアレイ(FPGA)であることを任意に含む。
【0102】
例69は、動的ハードウェアアクセラレーションのためのシステムであって、ハードウェアエンクロージャー内のオペレーティング環境において実行する複数のタスクの中から、ハードウェア最適化に従う候補タスクを識別する手段と、前記候補タスクを識別することに応答して、当該タスクのためのハードウェア最適化を実施するよう、前記オペレーティング環境が以前はアクセス不可能であったハードウェアコンポーネントを前記オペレーティング環境においてインスタンス化する手段と、前記オペレーティング環境によって、前記ハードウェアコンポーネントにおけるハードウェア最適化に従うタスクのクラスを実行する手段とを有するシステムである。
【0103】
例70において、例69の対象は、前記オペレーティング環境が前記ハードウェアエンクロージャーの仮想マシンであることを任意に含む。
【0104】
例71において、例70の対象は、前記仮想マシンが前記ハードウェアエンクロージャーの複数の仮想マシンの中の1つであることを任意に含む。
【0105】
例72において、例69乃至71のうちのいずれか1つ以上の例の対象は、前記オペレーティング環境がオペレーティングシステムであることを任意に含む。
【0106】
例73において、例69乃至72のうちのいずれか1つ以上の例の対象は、前記オペレーティング環境がモノのインターネット(IoT)ゲートウェイを実装することを任意に含む。
【0107】
例74において、例73の対象は、前記IoTゲートウェイがモバイルエッジコンピューティング(MEC)デバイスであることを任意に含む。
【0108】
例75において、例74の対象は、前記候補タスクが、前記IoTゲートウェイによってサービングされるIoTデバイスからのリクエストによって開始される複数のタスクの中の1つであることを任意に含む。
【0109】
例76において、例73乃至75のうちのいずれか1つ以上の例の対象は、前記IoTゲートウェイが、IoTデバイスセットにサービングする複数のIoTサービスデバイスの中の1つであることを任意に含む。
【0110】
例77において、例76の対象は、前記複数のIoTサービスデバイスが、ヒエラルキーの一方の端では前記IoTデバイスセットに直接にサービングするIoTゲートウェイを及び前記ヒエラルキーの他方の端ではネットワークエッジサーバを有して階層的に配置されることを任意に含む。
【0111】
例78において、例77の対象は、前記複数のタスクの中から第2の候補タスクを識別する手段と、前記第2の候補タスクと同じハードウェア最適化に従うタスクの第2のクラスのための第2のハードウェアコンポーネントをインスタンス化しない手段と、前記ハードウェアコンポーネントをインスタンス化することができる前記ヒエラルキーにおける第2のIoTサービスデバイスを見つける手段と、前記タスクの第2のクラスを前記第2のIoTサービスデバイスへ転送する手段を任意に含む。
【0112】
例79において、例78の対象は、前記第2のIoTサービスデバイスを見つけることが、前記IoTゲートウェイが属するヒエラルキーの端から該ヒエラルキーの他方の端に向かって前記ヒエラルキーを探索することを含むことを任意に含む。
【0113】
例80において、例69乃至79のうちのいずれか1つ以上の例の対象は、前記候補タスクを識別することが、プロセッサの稼働率を測定する手段と、該稼働率が閾値を越える場合に当該タスクを識別する手段とを含むことを任意に含む。
【0114】
例81において、例69乃至80のうちのいずれか1つ以上の例の対象は、前記タスクがプロセスであることを任意に含む。
【0115】
例82において、例69乃至81のうちのいずれか1つ以上の例の対象は、前記候補タスクが、ハードウェアコンポーネントのクラスに対応する前記オペレーティング環境のインターフェイスを使用しようと試みる場合にハードウェア最適化に従うことを任意に含む。
【0116】
例83において、例69乃至82のうちのいずれか1つの例の対象は、前記候補タスクが、当該タスクのマーカーがデータベースにおいてハードウェアコンポーネントの対応するクラスを含む場合にハードウェア最適化に従うことを任意に含む。
【0117】
例84において、例83の対象は、前記マーカーが、前記タスクを開始した要求元デバイスによる通知であり、前記タスクがハードウェア最適化に従うことを識別する前記通知であることを任意に含む。
【0118】
例85において、例83乃至84のうちのいずれか1つ以上の例の対象は、前記マーカーが前記タスクにおける命令の組を含み、前記タスクが、命令の組がルールセットに一致する場合にハードウェア最適化に従うことを任意に含む。
【0119】
例86において、例69乃至85のうちのいずれか1つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化することが、前記オペレーティング環境内で前記ハードウェアコンポーネントへのインターフェイスを開始することを含むことを任意に含む。
【0120】
例87において、例86の対象は、前記オペレーティング環境が仮想マシンであるとして、前記インターフェイスを開始することが、仮想マシンモニタ(VMM)によって前記ハードウェアコンポーネントを前記仮想マシンに割り当てることを含むことを任意に含む。
【0121】
例88において、例87の対象は、前記ハードウェアコンポーネントを割り当てることが、前記オペレーティング環境が複数のタスクを実行することを妨害しないことを任意に含む。
【0122】
例89において、例69乃至88のうちのいずれか1つ以上の例の対象は、前記ハードウェアコンポーネントをインスタンス化することが、前記タスクのクラスに対応するデータベースにおけるコンポーネント構成を見つける手段と、前記コンポーネント構成により前記ハードウェアコンポーネントを構成する手段と、前記構成されたハードウェアコンポーネントを前記オペレーティング環境に割り当てる手段とを含むことを任意に含む。
【0123】
例90において、例89の対象は、前記ハードウェアコンポーネントがフィールドプログラマブルゲートアレイ(FPGA)であることを任意に含む。
【0124】
例91において、例69乃至90のうちのいずれか1つ以上の例の対象は、MF15を任意に含む。
【0125】
例92において、例69乃至91のうちのいずれか1つ以上の例の対象は、MF15を任意に含む。
【0126】
本願で記載されている方法の例は、少なくとも部分的に、マシンであるか又はコンピュータ実装されてよい。いくつかの例は、上記の例において記載された方法を実施するために電子デバイスを構成するよう動作可能な命令により符号化されたコンピュータ読み出し可能な媒体又はマシン読み出し可能な媒体を含んでよい。そのような方法の実施は、マイクロコード、アセンブリ言語コード、より高度な言語コード、又は同様のもののような、コードを含んでよい。そのようなコードは、様々な方法を実施するコンピュータ読み出し可能な命令を含んでよい。コードは、コンピュータプログラム製品の部分を形成してよい。更には、例において、コードは、例えば、実行中に、又は他の時点で、1つ以上の揮発性、非一時的、又は不揮発性の実体のあるコンピュータ読み出し可能な媒体において実体的に記憶されてよい。そのような実体のあるコンピュータ読み出し可能な媒体の例は、制限なしに、ハードディスク、リムーバブル磁気ディスク、リムーバブル光学ディスク(例えば、コンパクトディスク及びデジタルビデオディスク)、磁気カセット、メモリカード若しくはスティック、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、及び同様のものを含んでよい。