(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-04
(54)【発明の名称】機能処理のためのハードウェア加速
(51)【国際特許分類】
G06F 9/50 20060101AFI20221027BHJP
【FI】
G06F9/50 150Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022513455
(86)(22)【出願日】2020-06-11
(85)【翻訳文提出日】2022-03-29
(86)【国際出願番号】 US2020037117
(87)【国際公開番号】W WO2021040836
(87)【国際公開日】2021-03-04
(32)【優先日】2019-08-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100118902
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100162846
【氏名又は名称】大牧 綾子
(72)【発明者】
【氏名】タンドン,プラティーク
(72)【発明者】
【氏名】コレル,ブライアン・ジェイコブ
(57)【要約】
機能処理サービスは、ソースコードを実行する要求を受信することができる。ソースコードは、機能を実行する命令を含むことができる。機能処理サービスは、機能のための少なくとも1つのハードウェア加速条件が満たされているか否かを判定することができる。少なくとも1つのハードウェア加速条件が満たされている場合、ソースコードにおける命令は、ハードウェア回路に対応するハードウェア固有のコードに変換することができる。ハードウェア回路は、ハードウェア固有のコードに基づいて構成することができ、ハードウェア回路は、その機能を実行することができる。機能処理サービスは、その後、ハードウェア回路から取得された結果を、要求元のエンティティに提供することができる。
【特許請求の範囲】
【請求項1】
コンピュータ実施方法であって、
機能処理サービスにおいて、ソースコードを実行する要求を受信するステップであって、前記要求は、要求元のエンティティから受信され、前記ソースコードは、機能を実行する命令を備える、受信するステップと、
前記機能のためのハードウェア加速条件が満たされていることを判定するステップと、
前記ソースコードにおける前記命令を、ハードウェア回路に対応するハードウェア固有のコードに変換するステップと、
前記ハードウェア固有のコードに基づいて前記ハードウェア回路を構成するステップと、
前記ハードウェア回路に対して前記機能を実行させるステップと、
前記ハードウェア回路から取得された結果を、前記要求元のエンティティに提供するステップとを備える、コンピュータ実施方法。
【請求項2】
前記ハードウェア回路は、フィールドプログラマブルゲートアレイ(FPGA)を備え、
前記ハードウェア固有のコードは、前記FPGAに対応するハードウェア記述言語(HDL)コードを備える、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記ハードウェア回路は、グラフィクスプロセシングユニット(GPU)またはデジタル信号プロセッサ(DSP)のうちの少なくとも1つを備え、
前記ハードウェア固有のコードは、GPUコードまたはDSPコードのうちの少なくとも1つを備える、請求項1に記載のコンピュータ実施方法。
【請求項4】
前記ハードウェア回路は、特定用途向け集積回路(ASIC)を備え、
前記ハードウェア固有のコードは、ハードウェア記述言語(HDL)コードを備える、請求項1に記載のコンピュータ実施方法。
【請求項5】
前記ハードウェア加速条件が満たされていることを判定するステップは、
時間間隔内に前記機能処理サービスが受信する前記機能を実行する要求の数をカウントするステップと、
前記要求の数がしきい値を超えていることを判定するステップとを備える、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記機能は、機能のファミリに属し、前記ハードウェア加速条件が満たされていることを判定するステップは、
時間間隔内に前記機能処理サービスが受信する機能の前記ファミリ内の任意の機能を実行する要求の数をカウントするステップと、
前記要求の数がしきい値を超えていることを判定するステップとを備える、請求項1に記載のコンピュータ実施方法。
【請求項7】
前記ハードウェア加速条件が満たされていることを判定するステップは、
汎用プロセッサを介して前記機能を実行することと比較して、前記ハードウェア回路を介して前記機能を実行することに関連付けられた推定されるコスト節約を判定するステップと、
前記推定されるコスト節約がしきい値を超えていることを判定するステップとを備える、請求項1に記載のコンピュータ実施方法。
【請求項8】
前記ハードウェア加速条件が満たされていることを判定するステップは、前記機能が機能ライブラリに含まれることを判定するステップを備え、さらに、前記機能ライブラリに新たな機能を追加するステップを備える、請求項1に記載のコンピュータ実施方法。
【請求項9】
コンピュータ実施方法であって、
第1の機能についてハードウェア加速条件が満たされていることを判定するステップと、
前記第1の機能を実行するようにハードウェア回路を構成するステップと、
ハードウェア回路において実施される第1の機能を機能ライブラリへ追加するステップと、
機能処理サービスにおいて、ソースコードを実行する要求を受信するステップであって、前記ソースコードは、前記第1の機能を実行する命令を備える、受信するステップと、
前記ハードウェア回路を介して前記第1の機能を実行させるステップとを備える、コンピュータ実施方法。
【請求項10】
前記ハードウェア回路は、フィールドプログラマブルゲートアレイ(FPGA)を備え、
前記方法はさらに、前記ソースコードを、前記FPGAに対応するハードウェア記述言語(HDL)コードへ変換するステップを備える、請求項9に記載のコンピュータ実施方法。
【請求項11】
前記ハードウェア回路は、グラフィクスプロセシングユニット(GPU)を備え、
前記方法はさらに、前記ソースコードをGPUコードへ変換するステップを備える、請求項9に記載のコンピュータ実施方法。
【請求項12】
前記ハードウェア回路は、プログラム可能な特定用途向け集積回路(ASIC)を備え、
前記方法はさらに、前記ソースコードを、前記プログラム可能なASICに対応するマシンコードに変換するためにカスタムコンパイラを使用するステップを備える、請求項9に記載のコンピュータ実施方法。
【請求項13】
前記ハードウェア回路は、デジタル信号プロセッサ(DSP)を備え、
前記方法はさらに、前記ソースコードをDSPコードに変換するステップを備える、請求項9に記載のコンピュータ実施方法。
【請求項14】
前記ハードウェア加速条件が満たされていることを判定するステップは、
時間間隔内に前記機能処理サービスが受信する前記第1の機能を実行する要求の数をカウントするステップと、
前記要求の数がしきい値を超えていることを判定するステップとを備える、請求項9に記載のコンピュータ実施方法。
【請求項15】
前記第1の機能は、機能のファミリに属し、前記ハードウェア加速条件が満たされていることを判定するステップは、
時間間隔内に前記機能処理サービスが受信する機能の前記ファミリ内の任意の機能を実行する要求の数をカウントするステップと、
前記要求の数がしきい値を超えていることを判定するステップとを備える、請求項9に記載のコンピュータ実施方法。
【発明の詳細な説明】
【背景技術】
【0001】
[0001]クラウドコンピューティングは、インターネットを介したコンピューティングサービス(たとえば、サーバ、ストレージ、データベース、ネットワーキング、ソフトウェア、分析)のデリバリである。大まかに言えば、クラウドコンピューティングシステムは、インターネットを介して相互に電子通信を行うフロントエンドとバックエンドとの2つのセクションを有する。フロントエンドは、ユーザがクライアントデバイスを介して遭遇するインターフェースを含む。バックエンドは、プロセッサ、メモリ、ストレージ、およびネットワークハードウェアを含むクラウドコンピューティングサービスをデリバリするリソースを含む。クラウドコンピューティングシステムのバックエンドは、通常、地理的に異なる地域に配置することができる、1つまたは複数のデータセンタを含む。各データセンタは、通常、ホストマシンと称することができる多数(たとえば、数百または数千)のコンピューティングデバイスを含む。
【0002】
[0002]クラウドコンピューティングシステムによって、多くの異なるタイプのサービスを提供することができる。機能処理サービスは、ユーザがアプリケーションの開発と起動に通常関連付けられたインフラストラクチャの構築および維持を複雑にすることなく、ソースコードを実行できるようにするクラウドコンピューティングサービスである。機能処理サービスは、ソースコードの実行に必要なコンピューティングリソースを自動的に管理する。したがって、機能処理サービスによって、ソフトウェア開発者は、サーバのプロビジョニングや管理について心配する必要なくソースコードを実行できる。
【0003】
[0003]「機能処理」という名前が意味するように、機能処理サービスは、1つまたは複数の機能を実行する命令を含むソースコードを実行するために利用することができる。機能処理は、サーバレスコンピューティングまたはファンクションアズアサービス(FaaS)と称されることもある。
【0004】
[0004]機能処理サービスの人気が高まるにつれて、実行されているソースコードはより複雑になり、データ集約的(data intensive)になっている。たとえば、機械学習や人工知能のアプリケーションは、大量のデータを処理するデータ集約型スクリプトを利用できる。これらのデータ集約型スクリプトは、処理時間を大幅に増加させ、大量のコンピューティングリソースを消費する可能性がある。しかしながら、ユーザは、機能処理サービスが、効率的かつ迅速に実行することを期待する。したがって、クラウドコンピューティングシステムにおける機能処理サービスの効率を高めるための技法によって、恩恵が実現することができる。
【発明の概要】
【課題を解決するための手段】
【0005】
[0005]本開示の1つの態様によれば、機能処理サービスにおいて、ソースコードを実行する要求を受信することを含む、コンピュータ実施方法が開示される。要求は、要求元のエンティティから受信される。ソースコードは、機能を実行する命令を含む。方法はさらに、機能のためのハードウェア加速条件(hardware acceleration condition)が満たされていることを判定することと、ソースコードにおける命令を、ハードウェア回路に対応するハードウェア固有のコードに変換することと、ハードウェア固有のコードに基づいてハードウェア回路を構成することと、ハードウェア回路に対して機能を実行させることと、ハードウェア回路から取得された結果を、要求元のエンティティに提供することとを含む。
【0006】
[0006]例として、ハードウェア回路は、フィールドプログラマブルゲートアレイ(FPGA)を含むことができ、ハードウェア固有のコードは、FPGAに対応するハードウェア記述言語(HDL)コードを含むことができる。別の例として、ハードウェア回路は、グラフィクスプロセシングユニット(GPU)を含むことができ、ハードウェア固有のコードは、GPUコードを含むことができる。別の例として、ハードウェア回路は、デジタル信号プロセッサ(DSP)を含むことができ、ハードウェア固有のコードは、DSPコードを含むことができる。別の例として、ハードウェア回路は、特定用途向け集積回路(ASIC)を含むことができ、ハードウェア固有のコードは、ハードウェア記述言語(HDL)コードを含むことができる。
【0007】
[0007]ハードウェア加速条件が満たされていることを判定することは、時間間隔内に機能処理サービスが受信する機能を実行する要求の数をカウントすることと、要求の数がしきい値を超えていることを判定することとを含むことができる。
【0008】
[0008]いくつかの実施形態では、機能は、機能のファミリに属することができる。そのような実施形態では、ハードウェア加速条件が満たされていることを判定することは、時間間隔内に機能処理サービスが受信する機能のファミリ内の任意の機能を実行する要求の数をカウントすることと、要求の数がしきい値を超えていることを判定することとを含むことができる。
【0009】
[0009]いくつかの実施形態では、ハードウェア加速条件が満たされていることを判定することは、汎用プロセッサを介して機能を実行することと比較して、ハードウェア回路を介して機能を実行することに関連付けられた推定されるコスト節約を判定することと、推定されるコスト節約がしきい値を超えていることを判定することとを含むことができる。
【0010】
[0010]いくつかの実施形態では、ハードウェア加速条件が満たされていることを判定することは、機能が機能ライブラリに含まれることを判定することを含むことができ、さらに、機能ライブラリに新たな機能を追加することを含むことができる。
【0011】
[0011]本開示の別の態様によれば、第1の機能についてハードウェア加速条件が満たされていることを判定することと、第1の機能を実行するようにハードウェア回路を構成することと、ハードウェア回路において実施される第1の機能を機能ライブラリへ追加することとを含むコンピュータ実施方法が開示される。方法はさらに、機能処理サービスにおいて、ソースコードを実行する要求を受信することを含む。ソースコードは、第1の機能を実行する命令を含む。方法はさらに、ハードウェア回路を介して第1の機能を実行させることを含む。
【0012】
[0012]いくつかの実施形態では、方法はさらに、第1の機能と並行して第2の機能を実行するようにハードウェア回路を構成することを含むことができる。第2の機能は、第1の機能とは異なることができる。他の実施形態では、方法はさらに、ハードウェア回路の複数のインスタンスを並行して実行するようにハードウェア回路を構成することを含むことができる。
【0013】
[0013]本開示の別の態様によれば、コンピュータ実施方法は、第1の時間間隔中に機能処理サービスによって受信された第1の複数の要求に関連する第1の履歴情報を分析することと、第1の履歴情報に基づいて、第1の時間間隔中に、第1の機能のセットを実行するようにハードウェア回路のセットを構成することと、第2の時間間隔中に、機能処理サービスによって受信された第2の複数の要求に関連する第2の履歴情報を分析することとを含む。第2の時間間隔は、第1の時間間隔とは異なる。方法はさらに、第2の履歴情報に基づいて第2の時間間隔中に第2の機能のセットを実行するようにハードウェア回路のセットを構成することを含む。第2の機能のセットは、第1の機能のセットとは異なる。
【0014】
[0014]方法はさらに、第1のソースコードを実行する第1の要求を受信することを含むことができる。第1の要求は、第1の時間間隔中に受信することができる。第1のソースコードはさらに、第1の機能を実行する第1の命令を含むことができる。第1の機能のセットは、第1の機能を含むことができる。方法はさらに、ハードウェア回路のセットにおける第1のハードウェア回路を介して第1の機能を実行させることと、第2のソースコードを実行する第2の要求を受信することとを含むことができる。第2の要求は、第2の時間間隔中に受信することができる。第2のソースコードは、第2の機能を実行する第2の命令を含むことができる。第2の機能のセットは、ハードウェア回路のセットにおける第2のハードウェア回路を介して、第2の時間間隔中に、第2の機能を実行する第2の機能を含むことができる。
【0015】
[0015]この概要は、発明を実施するための形態で以下にさらに説明される概念の選択を簡略化された形式で紹介するために提供される。この概要は、特許請求された主題の主要な特徴または本質的な特徴を特定することを意図しておらず、特許請求された主題の範囲を判定する際の補助として使用されるように意図されていない。
【0016】
[0016]追加の特徴および利点は、以下の説明に記載される。本開示の特徴および利点は、添付の特許請求の範囲で特に指摘されているシステムおよび方法によって実現および取得することができる。本開示の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになるか、または以下に記載されるように開示された主題の実践によって学習することができる。
【0017】
[0017]本開示の上記の特徴および他の特徴が取得できる方式を説明するために、添付図面に示されているその特定の実施形態に対する参照によって、より具体的な説明がなされる。理解を深めるために、同じ要素は、様々な添付図面全体を通じて同じ参照番号で示される。図面がいくつかの例示的な実施形態を描写することを理解して、実施形態は、以下の添付図面を使用することにより、追加の特異性および詳細とともに記載および説明される。
【図面の簡単な説明】
【0018】
【
図1】[0018]
図1は、本開示にしたがってハードウェア加速を選択的に利用するように構成された機能処理サービスの例を示す図である。
【
図2】[0019]
図2は、受信された機能を実行する要求の数に基づいて、ハードウェア加速条件を実施する機能処理サービスの態様を示す図である。
【
図3】[0020]
図3は、定義された時間間隔内に受信された要求の数に基づいて、ハードウェア加速条件を実施する機能処理サービスの態様を示す図であり、ここでは、様々な機能に関連して受信された要求の数を追跡するために、カウンタが使用される。
【
図4】[0021]
図4は、定義された時間間隔内に受信された要求の数に基づいて、ハードウェア加速条件を実施する機能処理サービスの態様を示す図であり、ここでは、受信された以前の要求に関する履歴情報が格納される。
【
図5】[0022]
図5は、関連する機能のファミリにおける任意の機能に関連して受信された機能を実行する要求の数に基づいて、ハードウェア加速条件を実施する機能処理サービスの態様を示す図である。
【
図6】[0023]
図6は、機能を実行するハードウェア加速の使用に関連付けられた推定されるコスト節約に基づいて、ハードウェア加速条件を実施する機能処理サービスの態様を示す図である。
【
図7】[0024]
図7は、機能ライブラリを維持し、特定の機能がすでに機能ライブラリに含まれているか否かに基づいて、ハードウェア加速条件を実施する機能処理サービスの態様を示す図である。
【
図8】[0025]
図8は、複数のハードウェア加速条件が定義された機能処理サービスの例を示す図である。
【
図9】[0026]
図9は、機能処理システムにおいて条件評価器によって実行することができる方法の例を示す図である。
【
図9A】[0027]
図9Aは、ハードウェア加速を実行できるか否かを選択する機会がユーザに与えられる実施形態において、条件評価器によって実施することができる代替方法の例を示す図である。
【
図10】[0028]
図10は、機能ライブラリを維持する機能処理サービスの例を示す図である。
【
図11】[0029]
図11は、
図10に示される機能処理サービスによって実行することができる方法の例を示す図である。
【
図12】[0030]
図12は、2つの異なる機能を実行するように構成されたハードウェア回路の例を示す図である。
【
図13】[0031]
図13は、同じ機能の2つの異なるインスタンスを実行するように構成されたハードウェア回路の例を示す図である。
【
図14A】[0032]
図14Aは、予想される需要に基づいてハードウェア回路のセットを定期的に再構成する機能処理サービスの例を示す図である。
【
図14B】
図14Bは、予想される需要に基づいてハードウェア回路のセットを定期的に再構成する機能処理サービスの例を示す図である。
【
図16】[0034]
図16は、コンピューティングシステム内に含むことができる特定の構成要素を示す図である。
【発明を実施するための形態】
【0019】
[0035]本開示は、一般に、クラウドコンピューティングシステムにおいて、機能処理サービスの効率を高めることに関する。本開示の1つの態様によれば、機能処理サービスは、ハードウェア加速を選択的に利用するように構成することができる。より具体的には、機能処理サービスは、機能を実行するためにハードウェア加速を利用することが有益であると判定された場合、ハードウェア加速を利用するように構成することができる。そのような判定は、機能を実行する要求が受信される頻度、処理の速度を意味のある量だけ増加させることができるか否か、および/または、処理のコストを意味のある量だけ低減させることができるか否かなどの様々な要因に基づいて行うことができる。
【0020】
[0036]この文脈において、「ハードウェア加速」という用語は、機能を実行するためにハードウェア回路の使用を指す場合があり、ハードウェア回路は、ソフトウェアで指定され、汎用プロセッサで実行された場合よりも、より速く機能が実行されるように、機能を実行するように特別に設計またはプログラムされている。「ハードウェア回路」という用語は、一般に、汎用プロセッサ以外の電気的または電磁的に接続された構成要素またはデバイスの任意の構成を称することができる。ハードウェア回路は集積回路であることができる。本開示にしたがって使用することができるハードウェア回路のいくつかの例は、フィールドプログラマブルゲートアレイ(FPGA)、グラフィクスプロセシングユニット(GPU)、デジタル信号プロセッサ(DSP)、および特定用途向け集積回路(ASIC)を含む。
【0021】
[0037]ハードウェア加速が有益である可能性がある多くの異なるタイプの機能が存在する。いくつかの例は、データ処理、圧縮または暗号化、位置追跡、ビデオ処理、金融取引、ログ分析、テキスト処理、ストリーミングデータの高速フィルタリング、Webホスティング、機械学習トレーニング(たとえば、線形回帰)、機械学習推論(たとえば、画像認識)、(たとえば、DSPを使用する)信号処理などを含む。
【0022】
[0038]いくつかの実施形態では、機能を実行するためにハードウェア加速をいつ使用すべきかを示す1つまたは複数の条件を定義することができる。そのような条件は、本明細書ではハードウェア加速条件と称することができる。機能を実行する命令を含むソースコードを実行する要求を機能処理サービスが受信すると、機能処理サービスは、定義されたハードウェア加速条件のいずれかが満たされているか否かを判定することができる。少なくとも1つのハードウェア加速条件が満たされている場合、機能を実行するために、ハードウェア加速が利用することができる。
【0023】
[0039]いくつかの実施形態では、ハードウェア加速は、ユーザがハードウェア加速を具体的に要求すること、またはFPGAのレジスタ転送ロジック(RTL)コードなどのハードウェア固有のコードを提供することを必要とせずに、自動的に実行することができる。たとえば、特定の機能を実行するユーザの要求は、ソースコードを実行する要求の形態をとることができる。ソースコードは、通常、Java、C++、Pythonなどの高級プログラミング言語にある。そのような要求を受信する機能処理システムは、機能を実行するために、ハードウェア加速を使用することが有益か否かを自動的に判定することができる。ハードウェア加速が有益であると判定された場合、ソースコードは、ユーザからの追加入力を必要とせずに、ハードウェア固有のコードに自動的に変換することができる。
【0024】
[0040]いくつかの実施形態では、機能を実行するために、機能処理サービスがハードウェア加速を使用する前に、ユーザは、ハードウェア加速を使用する可能性について通知され、ハードウェア加速を実行できるか否かを選択する機会を与えられることができる。
【0025】
[0041]
図1は、本開示によるハードウェア加速を選択的に利用するように構成された機能処理サービス102の例を示す。特定の機能を実行する要求104を受信する機能処理サービス102が示される。しかしながら、要求104は、ハードウェア回路を介して機能を実行する要求ではない。代わりに、要求104は、ソースコード106を実行することである。要求104は、クライアントデバイス108から受信することができる。ソースコード106は、汎用プロセッサ112によって実行された場合、特定の機能を実行させる命令110を含む。
【0026】
[0042]図示される例では、複数のハードウェア加速条件114が、機能処理サービス102のために定義される。それに加えて、機能処理サービス102は、ハードウェア加速条件114のいずれかが満たされているか否かを判定するように構成された構成要素を含む。この構成要素は、本明細書では条件評価器116と称することができる。
【0027】
[0043]要求104の受信に応答して、条件評価器116は、ソースコード106における命令110によって指定された機能に関して、ハードウェア加速条件114のいずれかが満たされているか否かを判定する。ハードウェア加速条件114のいずれも満たされていない場合、機能処理サービス102は、ソースコード106における命令110が、汎用プロセッサ112によって実行されるようにすることによって、要求104を遂行する。
【0028】
[0044]しかしながら、ハードウェア加速条件114のうちの少なくとも1つのハードウェア加速条件114しか満たされていない場合、機能を実行するために、ハードウェア加速が利用することができる。機能処理サービス102は、ハードウェア加速の使用を容易にするように構成された構成要素を含む。この構成要素は、本明細書ではハードウェア加速構成要素124と称することができる。ハードウェア加速構成要素124は、ソースコード106における命令110を、ハードウェア回路122に対応するハードウェア固有のコード120に変換するように構成することができる。ハードウェア固有のコード120が生成されると、ハードウェア加速構成要素124は、ハードウェア固有のコード120に基づいてハードウェア回路122を構成し、ハードウェア回路122に対して、機能を実行することができる。その後、ハードウェア回路122は、機能を実行し、特定の結果126を生成することができる。その後、機能処理サービス102は、この結果126を、図示される例ではクライアントデバイス108である要求エンティティに提供することができる。
【0029】
[0045]本開示にしたがって定義することができる多くの異なるタイプのハードウェア加速条件が存在する。たとえば、特定の機能に関連するハードウェア加速条件は、その機能を実行する要求が、いくつ受信されたかに基づくことができる。いくつかの実施形態では、ハードウェア加速条件は、その機能のためのハードウェア加速の使用を正当化するために、受信されるべき特定の機能を実行する要求の最小数を示すしきい値に関して定義することができる。その後、機能処理サービスによって受信されたそのような要求の数がカウントし、しきい値と比較することができる。受信されたそのような要求の数がしきい値を超えると、ハードウェア加速条件が満たされ、機能を実行するために、ハードウェア加速が使用することができる。
【0030】
[0046]
図2は、受信された機能を実行する要求の数に基づいて、ハードウェア加速条件214を実施する機能処理サービス202の態様を示す。
[0047]機能処理サービス202は、機能のためのハードウェア加速の使用を正当化するために、受信されるべき特定の機能を実行する要求の最小数を示すしきい値228を定義することができる。機能処理サービス202はまた、様々な機能に関連して受信された要求の数を追跡することができる。図示された実施形態では、機能処理サービス202は、機能処理サービス202によって実行することができる複数の機能に対応するカウンタ232を利用する。
図2は、機能Aを実行するために受信された要求の数を示すカウンタ232aと、機能Bを実行するために受信された要求の数を示すカウンタ232bと、機能Cを実行するために受信された要求の数を示すカウンタ232cとを備えた機能処理サービス202を示す。
【0031】
[0048]機能処理サービス202はまた、特定の機能を実行する要求が受信されたときにカウンタ232を更新するように構成された構成要素を含むことができる。この構成要素は、本明細書では、カウンタ更新構成要素234と称することができる。機能処理サービス202が、特定の機能(たとえば、機能A)を実行する要求を受信すると、カウンタ更新構成要素234は、対応するカウンタ(たとえば、機能Aカウンタ232a)をインクリメントすることができる。
【0032】
[0049]機能処理サービス202は、ハードウェア加速条件214が満たされているか否かを判定するように構成された条件評価器216を含む。ハードウェア加速条件214は、対応するカウンタ232の値が、定義されたしきい値228を超える場合、特定の機能に対してハードウェア加速が実行するように定義することができる。したがって、機能処理サービス202が特定の機能(たとえば、機能A)を実行する要求を受信すると、条件評価器216は、その機能(たとえば、機能Aカウンタ232a)に対応するカウンタ232の値を、しきい値228と比較することができる。対応するカウンタ232の値が、しきい値228を超える場合、条件評価器216は、ハードウェア加速条件214が満たされていると結論付け、機能を実行するために、ハードウェア加速が使用することができる。しかしながら、対応するカウンタ232の値が、しきい値228未満である場合、条件評価器216は、ハードウェア加速条件214が満たされていないと結論付けることができる。機能のために満たされている別のハードウェア加速条件がない場合は、汎用プロセッサを使用して機能を実行することができる。
【0033】
[0050]いくつかの実施形態では、ハードウェア加速条件は、機能を実行する特定の数の要求が、定義された時間間隔内に受信された場合にのみ、特定の機能のためのハードウェア加速が実行されるように定義することができる。そのような実施形態では、機能処理サービスは、しきい値と、関連する時間間隔との両方を定義することができる。しきい値は、機能のためのハードウェア加速の使用を正当化するために、時間間隔内に受信されるべき特定の機能を実行する要求の最小数を示すことができる。
【0034】
[0051]たとえば、しきい値がN(ここで、Nは、正の整数を表す)であり、時間間隔が1週間であると仮定されたい。この場合、特定の機能を実行するN回を超える要求が同じ週内に受信されたのであれば、ハードウェア加速条件が満たされていると見なされ、ハードウェア加速が実行されることができる。しかしながら、特定の機能を実行するN回を超える要求が同じ週内に受信されなければ、ハードウェア加速条件が満たされていないと結論付けられることができる。
【0035】
[0052]そのような時間的制約を実施することができる様々な手法がある。いくつかの実施形態では、機能処理サービスは、機能処理サービスによって実行することができる機能に対応するカウンタを利用することができ、カウンタは、ハードウェア加速条件のために定義された時間間隔に基づいて定期的にリセットすることができる。たとえば、定義された時間間隔が、1週間である場合、カウンタは、週に1回リセットすることができる。
【0036】
[0053]いくつかの実施形態では、機能処理サービスは、受信された以前の要求に関する情報を含む履歴情報を格納することができる。格納される特定の要求に関する情報は、要求された機能を識別する情報のみならず、要求がいつ受信されたかを示すタイムスタンプをも含むことができる。そのような実施形態では、特定の機能を実行する要求が、特定の時間期間中に受信された数を判定するために、格納された履歴情報を照会することができる。たとえば、特定の機能を実行する要求が、時間tにおいて受信された場合、その機能を実行する要求が、定義された時間間隔(たとえば、時間tの直前に定義された時間間隔)に対応する時間間隔中に受信された数を判定するために、履歴情報を照会することができる。その後、ハードウェア加速条件が満たされているか否かを判定するために、照会の結果を、しきい値と比較することができる。
【0037】
[0054]
図3は、定義された時間間隔330内に受信された要求の数に基づいて、ハードウェア加速条件314を実施する機能処理サービス302の態様を示し、ここでは、カウンタ332は、様々な機能に関連して受信された要求の数を追跡するために使用される。
図3は、機能Aを実行するために受信された要求の数を示すカウンタ332aと、機能Bを実行するために受信された要求の数を示すカウンタ332bと、機能Cを実行するために受信された要求の数を示すカウンタ332cとを備えた機能処理サービス302を示す。機能処理サービス302は、特定の機能を実行する要求が受信されたときにカウンタ332を更新するように構成されたカウンタ更新構成要素334を含む。
【0038】
[0055]図示された実施形態では、しきい値328は、機能のためのハードウェア加速の使用を正当化するために、定義された時間間隔330内に受信されるべき特定の機能を実行する要求の最小数を示す。カウンタ332は、ハードウェア加速条件314のために定義された時間間隔330に基づいて定期的にリセットすることができる。
【0039】
[0056]機能処理サービス302は、カウンタ332がいつリセットされるべきかを追跡するために、タイマ336を利用することができる。いくつかの実施形態では、タイマ336は、カウントダウンタイマであることができ、カウントダウンタイマの値は、定義された時間間隔330に設定することができる。カウンタ332は、カウントダウンタイマが満了するときはいつでもリセットすることができる。あるいは、タイマ336はカウントアップタイマであることができ、カウンタ332は、カウントアップタイマが、定義された時間間隔330に等しい値に達するときはいつでもリセットすることができる。
【0040】
[0057]機能処理サービス302が、特定の機能(たとえば、機能A)を実行する要求を受信すると、条件評価器316は、その機能(たとえば、機能Aカウンタ332a)に対応するカウンタ332の値を、しきい値328と比較することができる。対応するカウンタ332の値を、しきい値328を超える場合、機能を実行するために、ハードウェア加速が使用することができる。しかしながら、対応するカウンタ332の値がしきい値328未満である場合、機能は、汎用プロセッサを使用して実行することができる。
【0041】
[0058]
図4は、定義された時間間隔430内に受信された要求の数に基づいて、ハードウェア加速条件414を実施する機能処理サービス402の態様を示し、ここでは、受信された、以前の要求に関する履歴情報が格納される。
【0042】
[0059]前述したように、機能処理サービス402は、機能のためのハードウェア加速の使用を正当化するために、定義された時間間隔430内に受信されるべき特定の機能を実行する要求の最小数を示すしきい値428を定義することができる。
【0043】
[0060]履歴情報は、データベース448に格納することができる。履歴情報は、複数のレコード440を含むことができ、各レコード440は、機能処理サービス402が受信した特定の要求に対応することができる。より具体的には、各レコード440は、要求された機能を識別する情報のみならず、要求がいつ受信されたかを示すタイムスタンプをも含むことができる。
図4は、機能Aを処理する要求に対応するレコード440aと、機能Bを処理する要求に対応するレコード440bと、機能Aを処理する別の要求に対応するレコード440cと、機能Cを処理する要求に対応するレコード440dとを備えた履歴情報を示す。レコード440a~dは、タイムスタンプを含む。特定のレコード440におけるタイムスタンプは、対応する要求が受信された時間を示す。
【0044】
[0061]機能処理サービス402は、ハードウェア加速条件414が満たされているか否かを判定するように構成された条件評価器416を含む。条件評価器416は、特定の機能を実行する要求が、特定の時間期間中に受信された数を判定するために、データベース448を照会できる照会構成要素(querying component)446を含むことができる。たとえば、特定の機能を実行する要求が、時間tにおいて受信された場合、照会構成要素446は、その機能を実行する要求が、定義された時間間隔430(たとえば、時間tの直前に定義された時間間隔430)に対応する時間期間中に受信された数を判定するために、データベース448を照会することができる。ハードウェア加速条件414が満たされているか否かを判定するために、その照会の結果が、しきい値428と比較することができる。
【0045】
[0062]特定の機能のしきい値に関してハードウェア加速条件を定義する代わりに、ハードウェア加速条件は、代わりに、関連する機能のファミリのしきい値に関して定義することができる。言い換えると、ハードウェア加速条件は、しきい値を満たすことに寄与する、関連する機能のファミリ内の任意の機能を実行する要求を受信するたびに定義することができる。時間間隔内に受信されたそのような要求の数が、しきい値を超える場合、ハードウェア加速条件が満たされていると見なされ、関連する機能のファミリ内の任意の機能を実行するために、ハードウェア加速を使用することができる。
【0046】
[0063]ハードウェア加速条件が、関連する機能のファミリのしきい値に関して定義される実施形態では、ハードウェア加速条件は、時間的制約を伴って実施されても、伴わずに実施されてもよい。言い換えれば、いくつかの実施形態では、しきい値は、それらの要求がいつ受信されたかに関わらず、関連する機能のファミリ内の任意の機能に関連して受信された要求の総数に関して定義することができる。あるいは、他の実施形態では、しきい値は、定義された時間間隔中に、関連する機能のファミリ内の任意の機能に関連して受信された要求の総数に関して定義することができる。ハードウェア加速条件が、関連する機能のファミリのしきい値に関して定義され、時間的制約が利用される実施形態では、時間的制約は、上記で論じられた手法(たとえば、カウンタおよび履歴情報)を含む種々の手法で実施することができる。
【0047】
[0064]
図5は、関連する機能のファミリ内の任意の機能に関連して受信された機能を実行する要求の数に基づいて、ハードウェア加速条件514を実施する機能処理サービス502の態様を示す。簡略化のために、図示された実施形態では、時間的制約は利用されない。
【0048】
[0065]機能処理サービス502は、そのファミリ内の機能のためのハードウェア加速の使用を正当化するために、受信されるべき関連機能のファミリ内の任意の機能を実行する要求の最小数を示すしきい値528を定義することができる。機能処理サービス502はまた、機能の様々なファミリに関連して受信された要求の数を追跡することができる。図示された実施形態では、機能処理サービス502は、機能処理サービス502によって実行することができる機能の異なるファミリに対応するカウンタ532を利用する。少なくとも2つの機能のファミリ、(i)機能A、機能B、および機能Cを含む第1の機能のファミリと、(ii)機能D、機能E、および機能Fを含む第2の機能のファミリとが定義されていると想定される。
図5は、第1のカウンタ532aおよび第2のカウンタ532bを備える機能処理サービス502を示す。第1のカウンタ532aは、第1の機能のファミリ(機能A、機能B、または機能C)におけるいずれかの機能を実行するために受信された要求の数を示す。第2のカウンタ532bは、第2の機能のファミリ(機能D、機能E、または機能F)におけるいずれかの機能を実行するために受信された要求の数を示す。
【0049】
[0066]機能処理サービス502はまた、特定の機能を実行する要求が受信されたときに、カウンタ532を更新するように構成されたカウンタ更新構成要素534を含むことができる。機能処理サービス502が、特定の機能を実行する要求を受信すると、カウンタ更新構成要素534は、対応するカウンタ532をインクリメントすることができる。カウンタ532は、特定の機能のファミリに対応するので、異なる機能を実行する要求は、同じカウンタ532を更新させることがある。たとえば、機能処理サービス502が、機能Aを実行する要求を受信した場合、第1のカウンタ532aは、機能Aが属する同じ機能のファミリに対応するため、第1のカウンタ532aを更新することができる。その後、機能処理サービス502が、機能Bを実行する要求を受信した場合、機能Bは機能Aと同じファミリに属するため、第1のカウンタ532aを、再度更新することができる。しかしながら、機能処理サービス502が、その後、機能Dを実行する要求を受信した場合、機能Dは、機能Aおよび機能Bとは異なるファミリに属するので、異なるカウンタ(具体的には、第2のカウンタ532b)を更新することができる。
【0050】
[0067]機能処理サービス502は、ハードウェア加速条件514が満たされているか否かを判定するように構成された条件評価器516を含む。ハードウェア加速条件514は、関連するカウンタ532(すなわち、指定された機能が属する機能のファミリに対応するカウンタ532)の値が、定義されたしきい値528を超える場合、特定の機能のハードウェア加速が実行されるように定義することができる。したがって、機能処理サービス502が、特定の機能(たとえば、機能A)を実行する要求を受信すると、条件評価器516は、指定された機能が属する機能のファミリに対応するカウンタ532(たとえば、第1のカウンタ532a)の値を、しきい値528と比較することができる。対応するカウンタ532の値が、しきい値528を超える場合、条件評価器516は、ハードウェア加速条件514が満たされていると結論付けることができ、機能を実行するために、ハードウェア加速を使用することができる。しかしながら、対応するカウンタ532の値が、しきい値528未満である場合、条件評価器516は、ハードウェア加速条件514が満たされていないと結論付けることができる。機能のための他のハードウェア加速条件が満たされていない場合は、汎用プロセッサを使用して機能が実行することができる。
【0051】
[0068]いくつかの実施形態では、ハードウェア加速条件は、汎用プロセッサを介して機能を実行することと比較して、機能を実行するためのハードウェア加速の使用に関連付けられた推定されるコスト節約に基づくことができる。一般的に言えば、ハードウェア加速を介して機能を実行するために必要なエネルギは、汎用プロセッサを介して機能を実行する場合よりも少なくて済む。このエネルギ節約は、コスト節約にもつながることができる。コスト節約が十分に高い場合、これは機能を実行するためのハードウェア加速の使用を正当化する可能性がある。
【0052】
[0069]いくつかの実施形態では、ハードウェア加速条件は、ハードウェア加速の使用を正当化するであろう推定される最小のコスト節約を示すしきい値に関して定義することができる。特定の機能についてハードウェア加速が考慮される場合、ハードウェア加速を使用するために、コスト節約が推定することができる。その後、この推定されるコスト節約は、しきい値と比較することができる。推定されるコスト節約がしきい値を超える場合、ハードウェア加速条件が満たされていると結論付けられ、機能を実行するために、ハードウェア加速を使用することができる。
【0053】
[0070]ハードウェア加速を使用するために、コスト節約を判定することに関連して考慮することができる要因のいくつかの例は、(i)実行時間1秒あたりの汎用プロセッサのコスト、(ii)消費されるエネルギのコスト、および(iii)エネルギ遅延積を含む。これらの要因のおのおのは、コストモデルで個別に重み付けできる。
【0054】
[0071]例として、ベースライン機能が、汎用プロセッサで完了するのにI個の命令およびT秒を要し、プロセッサのコストが、Cであり、動作を完了するのに必要なエネルギが、Eジュールであると仮定されたい。ハードウェア加速を使用して、動作は、Ta=T/k1秒で完了し、E/k2ジュールのエネルギを使用することができる。また、加速時間のコストは、C/(k3*Ta)であることができる。パラメータk1は、この機能が、汎用プロセッサを使用する場合と比較して、ハードウェア加速を使用してどれくらい速く実行されるのかを示す。パラメータk2は、汎用プロセッサを使用する場合と比較して、ハードウェア加速を使用してどれだけのエネルギを節約できるかを示す。パラメータk3は、汎用プロセッサを使用する場合と比較して、ハードウェア加速を使用する方がどれだけ安価であるかを示す。パラメータk1、k2、およびk3は、特定の動作のために測定でき、これらの測定値を使用して、他の動作のためにこれらパラメータを推定できる。
【0055】
[0072]
図6は、機能を実行するためにハードウェア加速の使用に関連付けられた推定されるコスト節約に基づいて、ハードウェア加速条件614を実施する機能処理サービス602の態様を示す。前述したように、機能処理サービス602は、ハードウェア加速の使用を正当化するであろう推定される最小のコスト節約を示すしきい値628を定義することができる。
【0056】
[0073]機能処理サービス602は、特定の機能に関連してハードウェア加速を使用するためのコスト節約の推定値654を取得するように構成された構成要素を含むことができる。この構成要素は、本明細書では、コスト節約推定器652と称することができる。
図6は、機能Aのコスト節約推定値654a、機能Bのコスト節約推定値654b、および機能Cのコスト節約推定値654cを含む、コスト節約推定値654のいくつかの例を示す。
【0057】
[0074]機能処理サービス602は、ハードウェア加速条件614が満たされているか否かを判定するように構成された条件評価器616を含む。ハードウェア加速条件614は、対応するコスト節約推定値654の値が、定義されたしきい値628を超える場合、特定の機能に対してハードウェア加速が実行されるように定義することができる。したがって、機能処理サービス602が、特定の機能(たとえば、機能A)を実行する要求を受信すると、条件評価器616は、その機能に対応するコスト節約推定値654の値(たとえば、機能Aに対応するコスト節約推定値654a)を、しきい値628と比較することができる。対応するコスト節約推定値654の値が、しきい値628を超える場合、条件評価器616は、ハードウェア加速条件614が満たされていると結論付けることができ、機能を実行するために、ハードウェア加速が使用することができる。しかしながら、対応するコスト節約推定値654の値が、しきい値628未満である場合、条件評価器616は、ハードウェア加速条件614が満たされていないと結論付けることができる。機能のための他のハードウェア加速条件が満たされない場合、機能は、汎用プロセッサを使用して実行することができる。
【0058】
[0075]いくつかの実施形態では、機能ライブラリを維持することができる。機能は、継続的に機能ライブラリに追加できる。この文脈において、「機能ライブラリ」という用語は、ハードウェア回路において実施される機能のライブラリを称することができる。そのような実施形態では、ハードウェア加速条件は、特定の機能がすでに機能ライブラリに含まれているか否かに基づくことができる。たとえば、特定の機能に対してハードウェア加速が考慮されている場合、その機能がすでに機能ライブラリに含まれているか否かに関する判定することができる。含まれていると判定された場合、ハードウェア加速条件が満たされていると結論付けることができ、機能を実行するために、ハードウェア加速が使用することができる。
【0059】
[0076]
図7は、機能ライブラリを維持し、特定の機能がすでに機能ライブラリに含まれているか否かに基づいて、ハードウェア加速条件714を実施する機能処理サービス702の態様を示す。
【0060】
[0077]図示された実施形態では、機能処理サービス702は、機能ライブラリに現在含まれている機能に関する情報を含む、機能ライブラリインデクス756を維持する。機能ライブラリインデクス756は、複数のレコード758を含むことができ、各レコード758は、機能ライブラリ内の特定の機能のみならず、その機能を実行するように構成されたハードウェア回路をも識別することができる。
図7は、第1のレコード758a、第2のレコード758b、および第3のレコード758cを有する機能ライブラリインデクス756を示す。第1のレコード758aは、機能Aに関する識別情報764aのみならず、機能Aを実行するように構成された第1のハードウェア回路722aに対応する識別子762aをも含む。同様に、第2のレコード758bは、機能Bに関する識別情報764bのみならず、機能Bを実行するように構成された第2のハードウェア回路722bに対応する識別子762bをも含む。第3のレコード758cは、機能Cに関する識別情報764cのみならず、機能Cを実行するように構成された第3のハードウェア回路722cに対応する識別子762cをも含む。
【0061】
[0078]機能処理サービス702は、ハードウェア加速条件714が満たされているか否かを判定するように構成された条件評価器716を含む。ハードウェア加速条件714は、特定の機能がすでに機能ライブラリに含まれている場合に、その機能に対してハードウェア加速が実行されるように定義することができる。特定の機能がすでに機能ライブラリに含まれているか否かを判定するために、条件評価器716は、その機能に関する識別情報が、機能ライブラリインデクス756に含まれているか否かを判定するように構成することができる。したがって、機能処理サービス702が、特定の機能(たとえば、機能A)を実行する要求を受信した場合、条件評価器716は、機能ライブラリインデクス756において、機能に関する識別情報(たとえば、機能Aに関する識別情報764a)を検索することができる。条件評価器716が、機能ライブラリインデクス756において、要求された機能に関する識別情報を発見した場合、条件評価器716は、ハードウェア加速条件714が満たされていると結論付けることができ、機能を実行するために、ハードウェア加速を使用することができる。しかしながら、条件評価器716が、機能ライブラリインデクス756において、機能に関する識別情報を発見しない場合、条件評価器716は、ハードウェア加速条件714が満たされていないと結論付けることができる。機能のための他のハードウェア加速条件が満たされていない場合、機能は、汎用プロセッサを使用して実行することができる。
【0062】
[0079]上述したように、機能は、継続的に機能ライブラリへ追加できる。いくつかの実施形態では、機能を実行するために、ハードウェア加速が使用されるときはいつでも、利用可能なハードウェア回路に機能を実施するスペースがある限り、機能は、機能ライブラリへ追加することができる。利用可能なスペースが制限されると、(たとえば、使用量に基づいて)優先度の高い機能を、機能ライブラリに保持することができる。
【0063】
[0080]上述したように、1つまたは複数の機能を実行する命令を含むソースコードを実行するために、機能処理サービスを利用することができる。機能処理サービスが、特定の機能を実行する命令を含むソースコードを実行する要求を受信すると、ハードウェア加速条件が満たされているか否かに関する判定することができる。いくつかの実施形態では、複数のハードウェア加速条件を定義することができる。複数のハードウェア加速条件が定義される実施形態では、ハードウェア加速条件のいずれかが満たされる場合、特定の機能に関連してハードウェア加速を利用することができる。しかしながら、ハードウェア加速条件のいずれも満たされない場合は、機能は、汎用プロセッサを使用して実行することができる。
【0064】
[0081]
図8は、複数のハードウェア加速条件814が定義されている機能処理サービス802の例を示す。たとえば、ハードウェア加速条件814aは、特定の機能がすでに機能ライブラリに含まれているか否かに基づいて定義される。以下の議論では、このタイプのハードウェア加速条件814aは、機能ライブラリベースのハードウェア加速条件814aと称することができる。機能ライブラリベースのハードウェア加速条件814aの例は、
図7に関連して上記で論じられた。
【0065】
[0082]それに加えて、ハードウェア加速条件814bは、受信された機能を実行する要求の数に基づいて定義される。以下の議論では、このタイプのハードウェア加速条件814bは、需要ベースのハードウェア加速条件814bと称することができる。需要ベースのハードウェア加速条件814bのいくつかの例は、
図2~
図5に関連して上記で論じられた。単一の需要ベースのハードウェア加速条件814bが
図8に示されているが、いくつかの実施形態では、複数の需要ベースのハードウェア加速条件814bを定義することができる。
【0066】
[0083]それに加えて、ハードウェア加速条件814cは、機能を実行するために、ハードウェア加速の使用に関連付けられた推定されるコスト節約に基づいて定義される。以下の議論では、このタイプのハードウェア加速条件814cは、コストベースのハードウェア加速条件814cと称することができる。コストベースのハードウェア加速条件814cの例は、
図6に関連して上記で論じられた。
【0067】
[0084]機能処理サービス802は、ハードウェア加速条件814a~cのいずれかが満たされているか否かを判定するように構成された条件評価器816を含む。機能処理サービス802はまた、ハードウェア加速の使用を容易にするように構成されるハードウェア加速構成要素824を含む。
図9は、条件評価器816およびハードウェア加速構成要素824によって実行することができる方法900の例を示す。
【0068】
[0085]方法900は、機能を実行する要求804を受信すること(902)を含む。より具体的には、条件評価器816は、ソースコード806を実行する要求804を受信することができ、ソースコード806は、汎用プロセッサ812によって実行される場合、特定の機能を実行させる命令810を含むことができる。
【0069】
[0086]要求を受信すること(902)に応答して、条件評価器816は、定義されたハードウェア加速条件814のいずれかが満たされているか否かを判定することができる。図示される例では、条件評価器816は、最初に、機能ライブラリベースのハードウェア加速条件814aが満たされているか否かを判定する(904)。条件評価器816が、機能ライブラリベースのハードウェア加速条件814aが満たされていると判定する(904)場合、これは、ハードウェア回路822が、機能を実行するようにすでに構成されていることを意味する。したがって、方法900は、ハードウェア回路822に機能を実行させること(906)を含むことができる。
【0070】
[0087]しかしながら、条件評価器816が、機能ライブラリベースのハードウェア加速条件814aが満たされていないと判定する(904)と、条件評価器816は、定義されたハードウェア加速条件814のうちの別のハードウェア加速条件814が満たされているか否かを判定することができる。図示される例では、条件評価器816は次に、需要ベースのハードウェア加速条件814bが満たされているか否かを判定する(908)。需要ベースのハードウェア加速条件814bが満たされている場合、方法900は、(機能ライブラリベースのハードウェア加速条件814aを評価することの一部として、ハードウェア回路822が、機能を実行するようにまだ構成されていないと以前に判定されているので)機能を実行するようにハードウェア回路822を構成すること(910)を含むことができる。方法900は、その後、ハードウェア回路822に機能を実行させること(912)を含むことができる。
【0071】
[0088]しかしながら、条件評価器816が、需要ベースのハードウェア加速条件814bが満たされていないと判定する(908)場合、条件評価器816は、定義されたハードウェア加速条件814のうちの別のハードウェア加速条件814が満たされているか否かを判定することができる。図示される例では、条件評価器816は次に、コストベースのハードウェア加速条件814cが満たされているか否かを判定する(914)。需要ベースのハードウェア加速条件814bが満たされている場合、方法900は、機能を実行するようにハードウェア回路822を構成すること(910)と、ハードウェア回路822に対して機能を実行させること(912)とを含むことができる。
【0072】
[0089]しかしながら、条件評価器816が、コストベースのハードウェア加速条件814cが満たされていないと判定した(914)場合、これは、定義されたハードウェア加速条件814a~cのいずれも満たされていないことを意味する。この場合、方法900は、その後、汎用プロセッサ812を使用して機能を実行させること(916)を含むことができる。
【0073】
[0090]いくつかの実施形態では、機能処理サービスは、ユーザ(すなわち、ソースコードを実行する要求を発行する人またはエンティティ)が、ハードウェア加速のオプションが実施されるか否かを選択できるように構成することができる。ユーザが、機能を実行する要求を、機能処理サービスに発行する場合、ユーザは通常、機能が、汎用プロセッサを使用して実行されると想定する。いくつかの実施形態では、機能処理サービスが、機能を実行するために、ハードウェア加速を使用する前に、ユーザに、ハードウェア加速を使用する可能性について通知することができ、ハードウェア加速を実行できるか否かを選択する機会を与えることができる。
【0074】
[0091]
図9Aは、ハードウェア加速を実行できるか否かを選択する機会がユーザに与えられる実施形態において、条件評価器816によって実施することができる代替方法900Aの例を示す。方法900Aは、以下に示すことを除いて、
図9に示す方法900と同様である。
【0075】
[0092]前述したように、方法900Aは、機能を実行する要求804を受信すること(902)を含む。しかしながら、方法900Aはまた、ハードウェア加速を使用することが有益である場合(たとえば、1つまたは複数のハードウェア加速条件814a~cが満たされる場合)、ハードウェア加速を使用することを好むことをユーザが示したか否かを判定すること(903)を含む。いくつかの実施形態では、ハードウェア加速を使用することを好むことをユーザが示したか否かを判定すること(903)は、ユーザの好みに関する格納された情報へアクセスすることを含むことができる。別の例として、ハードウェア加速を使用することを好むことをユーザが示したか否かを判定すること(903)は、ハードウェア加速を実行するための許可をユーザに促すことを含むことができる。
【0076】
[0093]ハードウェア加速を使用することを好むことをユーザが示さなかったと判定された(903)場合、方法900Aは、汎用プロセッサ812を使用して機能を実行させる動作916に進むことができる。しかしながら、ハードウェア加速を使用することを好むことをユーザが示したと判定された(903)場合、方法900Aは、上述した方式で、ハードウェア加速条件814a~cが満たされているか否かを判定することを含む。
【0077】
[0094]
図9および
図9Aに示される方法900、900Aにおいてハードウェア加速条件814a~cが評価される特定の順序は、例としてのみ提供され、本開示の範囲を限定するものとして解釈されるべきではない。代替実施形態では、ハードウェア加速条件814a~cは、異なる順序で評価することができる。いくつかの実施形態では、ハードウェア加速条件が満たされ、ハードウェア加速が、機能に関連して利用されるべきと判定されると、ハードウェア回路が、機能のためにすでに構成されているか否かについて判定することができる。
【0078】
[0095]特定の機能を実行するようにハードウェア回路を構成するために、機能を実行する命令を含むソースコードは、使用される予定のハードウェア回路のタイプに対応するハードウェア固有のコードに変換することができる。たとえば、FPGAを使用してハードウェア加速を実行する場合、ソースコードは、FPGAに対応するハードウェア記述言語(HDL)コードに変換することができる。GPUを使用してハードウェア加速を実行する場合、ソースコードは、GPUコードに変換することができる。プログラム可能なASICを使用してハードウェア加速を実行する場合、カスタムコンパイラが、ソースコードを取得し、プログラム可能なASICに固有のマシンコードを生成することができる。DSPを使用してハードウェア加速を実行する場合、ソースコードは、DSPコードに変換することができる。
【0079】
[0096]ソースコードが、使用される予定のハードウェア回路のタイプに対応するハードウェア固有のコードに変換されると、ハードウェア固有のコードは、ハードウェア回路に提供することができる。この機能は、ハードウェア回路を介して実行することができる。次に、機能の実行から得られた結果が、機能の実行を要求したエンティティへ提供することができる。
【0080】
[0097]上述したように、機能処理サービスは、機能ライブラリを維持することができる。いくつかの実施形態では、機能処理サービスは、機能に対応するハードウェア加速条件が満たされているとの判定がなされたときはいつでも、ライブラリに機能を追加することができる。言い換えれば、特定の機能についてハードウェア加速条件が満たされていると判定されると、その機能を実行するようにハードウェア回路を構成することができ、その機能を、ライブラリに追加することができる。その後、機能を実行する命令を含むソースコードを実行する要求を受信すると、ハードウェア回路を介して機能を実行することができる。
【0081】
[0098]
図10は、機能ライブラリを維持する機能処理サービス1002の例を示す。
図11は、本開示にしたがって機能処理サービス1002によって実行することができる方法1100の例を示す。機能処理サービス1002の様々な構成要素は、方法1100に関連して説明される。
【0082】
[0099]方法1100は、ハードウェア加速条件1014が特定の機能について満たされていることを判定すること(1102)を含む。この判定は、機能処理サービス1002における条件評価器1016によって行うことができる。いくつかの実施形態では、この判定は、ソースコードを実行する要求を受信することに応答して行うことができる。あるいは、他の実施形態では、この判定は、ソースコードを実行するための特定の要求を受信することと独立して行うことができる。たとえば、機能処理サービス1002は、特定の機能を実行する要求を受信する前に、その機能についてコストベースのハードウェア加速条件が満たされていることを判定することができる。
【0083】
[00100]ハードウェア加速条件1014が特定の機能について満たされていることを判定すること(1102)に応答して、ハードウェア回路1022は、その機能を実行するように構成することができる(1104)。この動作は、機能処理サービス1002におけるハードウェア加速構成要素1024によって実行することができる。それに加えて、この機能は、機能処理サービス1002によって維持される機能ライブラリに追加することができる。これは、レコード1058を、機能ライブラリインデクス1056に追加することを含むことができる。レコード1058は、機能に関する識別情報1064のみならず、機能を実行するように構成されたハードウェア回路1022に対応する識別子1062をも含むことができる。
【0084】
[00101]機能が機能ライブラリに追加された後のある時点で、機能を実行する要求1004を受信することができる(1108)。より具体的には、ソースコード1006を実行する要求1004を、受信することができる。ソースコード1006は、汎用プロセッサ1012によって実行される場合、機能を実行させる命令1010を含むことができる。
【0085】
[00102]要求1004を受信することに応答して、機能処理サービス1002は、ハードウェア回路1022を介して機能を実行することができる(1110)。これは、ハードウェア回路1022への入力データのみならず、入力データの処理を開始する命令をも提供することを含むことができる。いくつかの実施形態では、機能処理サービス1002は、要求1004を受信し、機能が機能処理サービス1002によって維持される機能ライブラリに含まれることを判定することに応答して、ハードウェア回路1022を介して機能を実行することができる(1110)。あるいは、他の実施形態では、機能処理サービス1002は、要求1004を受信することと、機能が機能処理サービス1002によって維持される機能ライブラリに含まれることを判定することと、少なくとも1つの追加のハードウェア加速条件が満たされている(たとえば、ユーザがハードウェア加速を好むことを表明した)ことを判定することとに応答して、ハードウェア回路1022を介して機能を実行することができる(1110)。
【0086】
[00103]いくつかの実施形態では、ハードウェア回路は、複数の機能を並行して実行するように構成することができる。たとえば、ハードウェア回路は、互いに並行して複数の異なる機能を実行するように構成することができる。
図12は、2つの異なる機能、機能Aおよび機能Bを、互いに並行して実行するように構成されたハードウェア回路1222の例を示す。特に、ハードウェア回路1222の第1のセクション1266aは、機能Aを実行するように構成され、ハードウェア回路1222の第2のセクション1266bは、機能Bを実行するように構成される。
【0087】
[00104]そのようなハードウェア回路1222を利用することができる様々なシナリオが存在する。例として、機能処理サービス1202は、ソースコード1206a~bを実行するために複数の要求1204a~bを受信すると仮定されたい。第1の要求1204aにおけるソースコード1206aは、汎用プロセッサによって実行された場合、機能Aを実行させる命令1210aを含むことができる。第2の要求1204bにおけるソースコード1206bは、汎用プロセッサによって実行された場合、機能Bを実行させる命令1210bを含むことができる。要求1204a~bは、実質的に同時に受信することができ、および/または、機能処理サービス1202は、要求1204a~bを実質的に同時に満たそうと試みることができる。少なくとも1つのハードウェア加速条件1214が、機能Aと機能Bとの両方について満たされていることを条件評価器1216が判定することに応答して、機能処理サービス1202におけるハードウェア加速構成要素1224は、ハードウェア回路1222に対して、機能Aと機能Bとの両方を並行して実行させる。特に、機能処理サービス1202は、ハードウェア回路1222の第1のセクション1266aに機能Aを実行させることができ、ハードウェア回路1222の第2のセクション1266bに機能Bを実行させることができる。
【0088】
[00105]
図12に示される例は、並行して実行される2つの異なる機能のみを示すが、これは、本開示の範囲を限定するものとして解釈されるべきではない。本開示によれば、3つ以上の機能が、並行して実行することができる。一般に、並行して実行するN個のパイプラインが存在する場合がある(「パイプライン」という用語は、特定の機能を実行するように構成されたハードウェア回路のセクションを称し、Nは、任意の正の整数であることができる)。これらN個のパイプラインは、最大N個の異なる機能を並行して実行するように構成することができる。
【0089】
[00106]別の例として、ハードウェア回路は、同じ機能の複数の異なるインスタンスを互いに並行して実行するように構成することができる。
図13は、同じ機能の2つのインスタンスを互いに並行して実行するように構成されたハードウェア回路1322の例を示す。特に、ハードウェア回路1322の第1のセクション1366aは、機能の第1のインスタンスを実行するように構成され、ハードウェア回路1322の第2のセクション1366bは、機能の第2のインスタンスを実行するように構成される。
【0090】
[00107]
図12に示されるハードウェア回路1222に関連して上記で論じられた例と同様の例が説明される。機能処理サービス1302が、ソースコード1306a~bを実行するための複数の要求1304a~bを受信すると仮定されたい。さらに、両方の要求1304a~bにおけるソースコード1306a~bが、汎用プロセッサ1312によって実行された場合に、特定の機能を実行させる命令1310a~bを含むと仮定されたい。要求1304a~bは、実質的に同時に受信することができ、および/または、機能処理サービス1302は、要求1304a~bを実質的に同時に満たそうと試みることができる。機能のための少なくとも1つのハードウェア加速条件1314が満たされていることを条件評価器1316が判定することに応答して、機能処理サービス1302内のハードウェア加速構成要素1324は、ハードウェア回路1322に、機能の2つの異なるインスタンスを並行して実行することができる。特に、機能処理サービス1302は、ハードウェア回路1322の第1のセクション1366aに対して、機能の第1のインスタンスを実行することができ、ハードウェア回路1322の第2のセクション1366bに対して、機能の第2のインスタンスを実行することができる。
【0091】
[00108]
図13に示される例は、並行して実行される機能の2つのインスタンスのみを示すが、これは、本開示の範囲を限定するものとして解釈されるべきではない。本開示によれば、特定の機能の3つ以上のインスタンスが、並行して実行することができる。一般に、並行して実行されているN個のパイプラインが存在する場合がある(「パイプライン」という用語は、機能を実行するように構成されたハードウェア回路のセクションを称し、Nは、任意の正の整数であることができる)。これらN個のパイプラインは、機能の最大N個のインスタンスを並行して実行するように構成することができる。
【0092】
[00109]本開示の別の態様によれば、ハードウェア加速は、異なる時間間隔中の異なる機能に関連して利用することができる。言い換えれば、ハードウェア回路の特定のセットは、異なる機能を実行するために定期的に再構成することができる。これは、機能処理サービスが、使用のために利用可能な特定のハードウェア回路のセットを有し、機能処理サービスが、異なる時点(たとえば、1日の異なる時間)において、異なるタイプの要求を受信するシナリオにおいて有利であることができる。この場合、ハードウェア回路のセットは、ある特定の時間間隔(たとえば、1日の一部)中に機能の1つのセットを実行し、別の特定の時間間隔(たとえば、1日の別の一部)中に機能の別のセットを実行するように構成することができる。
【0093】
[00110]特定の時間間隔中にハードウェア加速を利用すべき機能を識別するために、その時間間隔中に機能処理サービスによって以前に受信された要求に関する履歴情報を分析することができる。特定の機能のセットを実行する要求が、その時間間隔中に頻繁に受信されたことをこの分析が示す場合、利用可能なハードウェア回路のセットは、その機能のセットを実行するように構成することができる。
【0094】
[00111]
図14A~
図14Bは、予想される需要に基づいてハードウェア回路1422のセットを定期的に再構成する機能処理サービス1402の例を示す。
図15は、本開示にしたがって機能処理サービス1402によって実行することができる方法1500の例を示す。機能処理サービス1402の様々な構成要素は、方法1500に関連して説明される。
【0095】
[00112]簡略化のために、
図14A~
図14Bに示される機能処理サービス1402では、2つの異なる時間間隔のみが定義される。いくつかの実施形態では、時間間隔は、第1の時間間隔が第2の時間間隔と重複しないように、非重複時間間隔であることができる。他の実施形態では、時間間隔は、少なくとも部分的に互いに重複することができる。異なる時間間隔は、同じ日、週、月などの異なる部分に対応することができる。
【0096】
[00113]方法1500は、第1の時間間隔中に受信された要求に関連する履歴情報1468aを分析すること(1502)を含む。機能処理サービス1402は、履歴情報1468aを分析するように構成された要求分析器1474とともに示される。履歴情報1468aを分析すること(1502)は、第1の時間間隔中に最も頻繁に受信される要求のタイプを識別することを含むことができる。この履歴情報1468aの分析に基づいて、第1の機能のセットは、第1の時間間隔中に最も頻繁に実行され、ハードウェア加速から利益を得ることができる機能として識別することができる。方法1500は、その後、機能処理サービス1402におけるハードウェア加速構成要素1424が、第1の時間間隔中に第1の機能のセットを実行するように、利用可能なハードウェア回路1422を構成すること(1504)を含む。
図14Aは、第1の構成1472aにおけるハードウェア回路1422を示し、ここでは、ハードウェア回路1422は、第1の機能のセットを実行するように構成される。
【0097】
[00114]機能処理サービス1402は、第1の機能のセット内で機能を実行する命令1410aを含むソースコード1406aを実行する要求1404aを、第1の時間間隔中に受信すると仮定されたい。上述したように、ハードウェア回路1422は、第1の時間間隔中に第1の機能のセットを実行するように構成されている。したがって、機能処理サービス1402は、関連する機能を実行するように構成された利用可能なハードウェア回路1422のうちの1つのハードウェア回路1422によって機能を実行することができる。
【0098】
[00115]方法1500はまた、第2の時間間隔中に受信された要求に関連する履歴情報1468bを分析すること(1506)を含む。これは、第2の時間間隔中に最も頻繁に受信された要求のタイプを識別することを含むことができる。この履歴情報1468bの分析に基づいて、第2の機能のセットは、第2の時間間隔中に最も頻繁に実行され、ハードウェア加速から利益を得ることができる機能として識別することができる。方法1500は、その後、ハードウェア加速構成要素1424が、第2の時間間隔中に第2の機能のセットを実行するように、利用可能なハードウェア回路1422を構成すること(1508)を含む。
【0099】
[00116]機能処理サービス1402が、第2の時間間隔中に、第2の機能のセット内で機能を実行する命令1410bを含むソースコード1406bを実行する要求1404bを受信すると仮定されたい。上述したように、ハードウェア回路1422は、第2の時間間隔中に第2の機能のセットを実行するように構成されている。したがって、機能処理サービス1402は、関連する機能を実行するように構成された利用可能なハードウェア回路1422のうちの1つのハードウェア回路1422によって機能を実行することができる。
【0100】
[00117]本明細書に開示されるような機能処理サービスを実施するために、1つまたは複数のコンピューティングシステムを使用することができる。
図16は、コンピューティングシステム1600内に含むことができる特定の構成要素を示す。
【0101】
[00118]コンピューティングシステム1600は、プロセッサ1601を含む。プロセッサ1601は、汎用のシングルチップまたはマルチチップマイクロプロセッサ(たとえば、高度なRISC(縮小命令セットコンピュータ)マシン(ARM))、専用目的マイクロプロセッサ(たとえば、デジタル信号プロセッサ(DSP))、マイクロコントローラ、プログラマブルゲートアレイなどであることができる。プロセッサ1601は、中央処理装置(CPU)と称することができる。
図16のコンピューティングシステム1600には、単一のプロセッサ1601のみが示されているが、代替構成では、プロセッサの組合せ(たとえば、ARMおよびDSP)を使用できる。
【0102】
[00119]コンピューティングシステム1600はまた、プロセッサ1601と電子通信するメモリ1603を含む。メモリ1603は、電子情報を格納できる任意の電子構成要素であることができる。たとえば、メモリ1603は、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、磁気ディスク記憶媒体、光記憶媒体、RAM内のフラッシュメモリデバイス、プロセッサ1601とともに含まれるオンボードメモリ、消去可能プログラマブル読取専用メモリ(EPROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)メモリ、レジスタ、およびこれらの組合せを含むものなどとして具体化することができる。
【0103】
[00120]命令1605およびデータ1607は、メモリ1603に格納され得る。命令1605は、本明細書に開示される方法、ステップ、操作、動作、または他の機能のいくつかまたはすべてを実施するために、プロセッサ1601によって実行可能であることができる。命令1605を実行することは、メモリ1603に格納されているデータ1607の使用を含むことができる。特に明記されない限り、本明細書で説明されるモジュールおよび構成要素の様々な例のいずれも、メモリ1603に格納され、プロセッサ1601によって実行される命令1605として、部分的または全体的に実施することができる。本明細書で説明されるデータの様々な例のいずれも、メモリ1603に格納され、プロセッサ1601による命令1605の実行中に使用されるデータ1607の中にあることができる。
【0104】
[00121]コンピューティングシステム1600はまた、他の電子デバイスと通信するための1つまたは複数の通信インターフェース1609を含むことができる。通信インターフェース1609は、ワイヤ通信技術、ワイヤレス通信技術、またはその両方に基づくことができる。通信インターフェース1609のいくつかの例は、ユニバーサルシリアルバス(USB)、イーサネットアダプタ、米国電気電子学会(IEEE)1602.11ワイヤレス通信プロトコルにしたがって動作するワイヤレスアダプタ、Bluetooth(R)ワイヤレス通信アダプタ、および赤外線(IR)通信ポートを含む。
【0105】
[00122]コンピューティングシステム1600はまた、1つまたは複数の入力デバイス1611、および1つまたは複数の出力デバイス1613を含むことができる。入力デバイス1611のいくつかの例は、キーボード、マウス、マイクロフォン、リモート制御デバイス、ボタン、ジョイスティック、トラックボール、タッチパッド、およびライトペンを含む。コンピューティングシステム1600に通常含まれる1つの特定のタイプの出力デバイス1613は、ディスプレイデバイス1615である。本明細書に開示される実施形態とともに使用されるディスプレイデバイス1615は、液晶ディスプレイ(LDC)、発光ダイオード(LED)、ガスプラズマ、エレクトロルミネセンスなどの任意の適切な画像投影技術を利用することができる。メモリ1603に格納されたデータ1607を、ディスプレイデバイス1615上に示されるテキスト、グラフィックス、および/または動画(必要に応じて)に変換するために、ディスプレイコントローラ1617も提供することができる。コンピューティングシステム1600はまた、スピーカ、プリンタなどの他のタイプの出力デバイス1613を含むことができる。
【0106】
[00123]コンピューティングシステム1600の様々な構成要素は、電力バス、制御信号バス、状態信号バス、データバスなどを含むことができる1つまたは複数のバスによってともに結合することができる。明確化のために、様々なバスが、バスシステム1619として
図16に示される。
【0107】
[00124]本明細書で説明される技法は、特定の方式で実施されると具体的に説明されない限り、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施することができる。モジュール、構成要素などとして説明される任意の特徴は、統合ロジックデバイスにおいてともに、または、ディスクリートであるが相互運用可能なロジックデバイスとして個別に、実施することができる。ソフトウェアで実施される場合、技法は、少なくとも1つのプロセッサによって実行されると、ステップ、操作、動作、または本明細書に開示されている他の機能の一部またはすべてを実行する、格納されたコンピュータ実行可能命令を有する非一時的なコンピュータ可読媒体によって少なくとも部分的に実現することができる。命令は、特定のタスクを実行し、および/または特定のデータタイプを実施することができ、様々な実施形態で必要に応じて組合せ、または分散することができるルーチン、プログラム、オブジェクト、構成要素、データ構造などに編成することができる。
【0108】
[00125]本明細書で説明される方法のステップ、操作、および/または動作は、特許請求の範囲から逸脱することなく、互いに相互置換することができる。言い換えれば、説明されている方法の適切な機能のために、ステップ、操作、および/または動作の特定の順序が必要とされない限り、特定のステップ、操作、および/または動作の順序および/または使用は、特許請求の範囲から逸脱することなく修正することができる。
【0109】
[00126]一例では、「判定する」という用語(および、その文法的変形)は、多種多様な動作を包含し、したがって、「判定する」は、算出する、計算する、処理する、導出する、調査する、検索する(たとえば、テーブル、データベース、または別のデータ構造を検索する)、確認するなどを含むことができる。また、「判定する」は、受信する(たとえば、情報を受信する)、アクセスする(たとえば、メモリ内のデータへアクセスする)などを含むことができる。また、「判定する」は、解決する、選択する、選定する、確立するなどを含むことができる。
【0110】
[00127]「備える」、「含む」、および「有する」という用語は、包括的であることが意図され、リストされた要素以外の追加の要素があることができることを意味する。それに加えて、本開示の「1つの実施形態」または「実施形態」に対する参照は、列挙された特徴も組み込んだ追加の実施形態の存在を除外するものとして解釈されることを意図されないことが理解されるべきである。たとえば、本明細書の実施形態に関連して説明される任意の要素または特徴は、互換性がある場合、本明細書で説明される任意の他の実施形態の任意の要素または特徴と組み合わせることができる。
【0111】
[00128]本開示は、その精神または特性から逸脱することなく、他の特定の形態で具体化することができる。説明された実施形態は、例示的であり、限定的ではないと見なされるべきである。したがって、本開示の範囲は、前述の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲の意味および同等性の範囲内にある変更は、それらの範囲内に含まれるものとする。
【国際調査報告】