(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-10
(54)【発明の名称】共有コンパイルキャッシュ検証システム
(51)【国際特許分類】
G06F 12/14 20060101AFI20241203BHJP
G06F 16/172 20190101ALI20241203BHJP
G06F 16/176 20190101ALI20241203BHJP
G06F 21/64 20130101ALI20241203BHJP
【FI】
G06F12/14 510A
G06F16/172
G06F16/176
G06F21/64
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024535999
(86)(22)【出願日】2022-09-12
(85)【翻訳文提出日】2024-08-13
(86)【国際出願番号】 US2022043208
(87)【国際公開番号】W WO2023113881
(87)【国際公開日】2023-06-22
(32)【優先日】2021-12-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ヒョ・ジュン・キム
(72)【発明者】
【氏名】ロヒット・ウパデアーエ・ジャヤサンカル
【テーマコード(参考)】
5B017
【Fターム(参考)】
5B017AA07
5B017BA02
5B017BB02
5B017CA02
(57)【要約】
本開示の例示的な実施形態は、1つの例示的な態様では、共有キャッシュの検証のための例示的なコンピュータ実装方法を提供する。例示的な方法は、共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを取得することを含むことができ、共有キャッシュキーは、操作リクエストに関連付けられている。例示的な方法は、操作リクエストに関連付けられている直接コンパイル済みリソースを取得することを含むことができる。例示的な操作は、プリコンパイル済み共有キャッシュエントリと直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて、共有キャッシュの1つまたは複数の部分を認証することを含むことができる。
【特許請求の範囲】
【請求項1】
共有キャッシュを認証するためのコンピュータ実装方法であって、
1つまたは複数のプロセッサを含むコンピューティングシステムによって、共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを取得することであって、前記共有キャッシュキーは操作リクエストに関連付けられている、前記取得することと、
前記コンピューティングシステムによって、前記操作リクエストと関連付けられた直接コンパイル済みリソースを取得することと、
前記コンピューティングシステムによって、前記プリコンパイル済み共有キャッシュエントリと前記直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて、前記共有キャッシュの1つまたは複数の部分を認証することとを含む、前記コンピュータ実装方法。
【請求項2】
前記コンピューティングシステムによって、前記操作リクエストに関連付けられたローカルでキャッシュされたプリコンパイル済みリソースが存在しないことを決定することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記コンピューティングシステムによって、前記操作リクエストに関連付けられた直接コンパイル済みリソースを取得することは、
前記コンピューティングシステムによって及び実行時コンパイラから、前記直接コンパイル済みリソースを取得することを含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記比較が、前記直接コンパイル済みリソースのフィンガープリントと、前記プリコンパイル済み共有キャッシュエントリのフィンガープリントとの比較を含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記コンピューティングシステムによって、前記比較に少なくとも部分的に基づいて前記共有キャッシュの1つまたは複数の部分を認証することは、
前記コンピューティングシステムによって、前記共有キャッシュの1つまたは複数の共有キャッシュエントリの有効性を示す複数の比較を更新することを含み、前記複数の比較は適格閾値に対応する、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記コンピューティングシステムによって、前記複数の比較が前記適格閾値を満たすことに少なくとも部分的に基づいて、前記共有キャッシュを認証することを決定することをさらに含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記コンピューティングシステムによって、前記比較に少なくとも部分的に基づいて前記共有キャッシュの1つまたは複数の部分を認証することは、
前記コンピューティングシステムによって、前記プリコンパイル済み共有キャッシュエントリが無効であると決定することに少なくとも部分的に基づいて、前記共有キャッシュの前記1つまたは複数の部分を非アクティブ化することを含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記コンピューティングシステムによって、前記共有キャッシュの前記1つまたは複数の部分についての認証状態を維持することと、
前記コンピューティングシステムによって、前記比較に少なくとも部分的に基づいて、前記認証状態を更新することとをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
定期的にかつ前記コンピューティングシステムによって、前記共有キャッシュの前記認証状態をリセットすることをさらに含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
実行時、1つまたは複数のプロセッサに操作を実行させる命令を格納する非一時的コンピュータ可読媒体であって、前記操作は、
共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを取得することであって、前記共有キャッシュキーは、操作リクエストに関連付けられている、前記取得することと、
前記操作リクエストに関連付けられた直接コンパイル済みリソースを取得することと、
前記プリコンパイル済み共有キャッシュエントリと前記直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて、前記共有キャッシュの1つまたは複数の部分を認証することとを含む、前記コンピュータ可読媒体。
【請求項11】
前記操作は、
前記操作リクエストに関連付けられたローカルでキャッシュされたプリコンパイル済みリソースが存在しないことを決定することをさらに含む、請求項10に記載のコンピュータ可読媒体。
【請求項12】
前記操作リクエストに関連付けられた直接コンパイル済みリソースを取得することは、
実行時コンパイラから、前記直接コンパイル済みリソースを取得することを含む、請求項10に記載のコンピュータ可読媒体。
【請求項13】
前記比較が、前記直接コンパイル済みリソースのフィンガープリントと、前記プリコンパイル済み共有キャッシュエントリのフィンガープリントとの比較を含む、請求項10に記載のコンピュータ可読媒体。
【請求項14】
前記比較に少なくとも部分的に基づいて前記共有キャッシュを認証することは、
前記共有キャッシュの1つまたは複数の共有キャッシュエントリの有効性を示す複数の比較を更新することを含み、前記複数の比較は適格閾値に対応する、請求項10に記載のコンピュータ可読媒体。
【請求項15】
前記操作は、
前記複数の比較が前記適格閾値を満たすことに少なくとも部分的に基づいて、前記共有キャッシュを認証することを決定することをさらに含む、請求項14に記載のコンピュータ可読媒体。
【請求項16】
前記比較に少なくとも部分的に基づいて前記共有キャッシュを認証することは、
前記プリコンパイル済み共有キャッシュエントリが無効であると決定することに少なくとも部分的に基づいて、前記共有キャッシュの前記1つまたは複数の部分を非アクティブ化することを含む、請求項10に記載のコンピュータ可読媒体。
【請求項17】
前記操作は、
前記共有キャッシュの前記1つまたは複数の部分についての認証状態を維持することと、
前記比較に少なくとも部分的に基づいて、前記認証状態を更新することとをさらに含む、請求項10に記載のコンピュータ可読媒体。
【請求項18】
1つまたは複数のプロセッサと、
実行時、前記1つまたは複数のプロセッサに操作を実行させる命令を含む1つまたは複数の非一時的コンピュータ可読媒体とを含み、前記操作は、
リクエストされた操作を処理する計算ノードから、共有キャッシュからのプリコンパイル済み共有キャッシュエントリのリクエストを受信することと、
(i)前記計算ノードで前記リクエストされた操作を実行するための直接コンパイル済みリソースと、(ii)前記プリコンパイル済み共有キャッシュエントリとの比較に少なくとも部分的に基づいて、前記共有キャッシュの認証ステータスを取得することであって、前記認証ステータスは、前記プリコンパイル済み共有キャッシュエントリの前記計算ノードとの非互換性を示す、前記取得することと、
前記認証ステータスに少なくとも部分的に基づいて、前記計算ノードからの1つまたは複数のフューチャーリクエストのために前記共有キャッシュを非アクティブ化することとを含む、共有キャッシュ検証システム。
【請求項19】
前記直接コンパイル済みリソースが、前記計算ノードのためにコンパイルされた、請求項18に記載のシステム。
【請求項20】
前記比較が、前記直接コンパイル済みリソースのフィンガープリントと、前記プリコンパイル済み共有キャッシュエントリのフィンガープリントとの比較を含む、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概してデータキャッシングに関する。より具体的には、本開示は、共有キャッシュエントリを検証することに関する。
【背景技術】
【0002】
リクエストされた操作を実行するためのコードをオンデマンドでコンパイル可能な実行時コンパイル方式で、計算ノードを操作することができる。ただし、重複するコンパイルを避けるために、プリコンパイル済みバイナリのキャッシュを計算ノードで利用可能にすることができる。それによって、2回目以降の操作がリクエストされるとき、コードをキャッシュから取得し、計算ノードで実行することができる。
【発明の概要】
【0003】
本開示の実施形態の態様及び利点は、以下の説明に部分的に示されるか、または説明から学習できるか、もしくは実施形態の実践を通して学習できる。
【0004】
一態様では、本開示は、共有キャッシュを認証するための例示的なコンピュータ実装方法を提供する。例示的な方法は、1つまたは複数のプロセッサを含むコンピューティングシステムによって、共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを取得することを含み、共有キャッシュキーは操作リクエストに関連付けられている。例示的な方法は、コンピューティングシステムによって、操作リクエストに関連付けられている直接コンパイル済みリソースを取得することを含む。例示的な方法は、コンピューティングシステムによって、プリコンパイル済み共有キャッシュエントリと直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて、共有キャッシュの1つまたは複数の部分を認証することを含む。
【0005】
別の態様では、本開示は、実行時、1つまたは複数のプロセッサに例示的な操作を実行させる命令を格納する例示的な非一時的コンピュータ可読媒体を提供する。例示的な操作は、共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを取得することを含み、共有キャッシュキーは、操作リクエストに関連付けられている。例示的な操作は、操作リクエストに関連付けられている直接コンパイル済みリソースを取得することを含む。例示的な操作は、プリコンパイル済み共有キャッシュエントリと直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて、共有キャッシュの1つまたは複数の部分を認証することを含む。
【0006】
別の態様では、本開示は、例示的な共有キャッシュ検証システムを提供する。例示的なシステムは、1つまたは複数のプロセッサを含む。例示的なシステムは、実行時、1つまたは複数のプロセッサに例示的な操作を実行させる命令を含む1つまたは複数の非一時的コンピュータ可読媒体を含む。例示的な操作は、リクエストされた操作を処理する計算ノードから、共有キャッシュからのプリコンパイル済み共有キャッシュエントリのリクエストを受信することを含む。例示的な操作は、(i)リクエストされた操作を実行するために計算ノードによってコンパイルされた直接コンパイル済みリソースと、(ii)プリコンパイル済み共有キャッシュエントリとの比較に少なくとも部分的に基づいて、共有キャッシュの認証ステータスを取得することを含み、認証ステータスは、プリコンパイル済み共有キャッシュエントリの計算ノードとの非互換性を示す。例示的な操作は、計算ノードから1つまたは複数のフューチャーリクエストの共有キャッシュを非アクティブ化することを含む。
【0007】
本開示の他の態様は、様々なシステム、装置、非一時的コンピュータ可読媒体、ユーザインターフェース、及び電子デバイスを対象とする。
【0008】
本開示の様々な実施形態のこれら及び他の特徴、態様及び利点は、以下の説明及び添付の特許請求の範囲を参照してよりよく理解されるようになる。本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本開示の例示的な実施形態を説明し、説明と併せて、関連する原理を説明する役目を果たしている。
【0009】
当業者を対象にした発明を実施するための形態は、添付図面を参照する本明細書に説明されている。
【図面の簡単な説明】
【0010】
【
図1A】本開示の例示的な実施形態による、共有コンパイルキャッシュ検証を実行する例示的なコンピューティングシステムのブロック図を示す。
【
図1B】本開示の例示的な実施形態による、共有コンパイルキャッシュ検証を実行する例示的なコンピューティングデバイスのブロック図を示す。
【
図1C】本開示の例示的な実施形態による、共有コンパイルキャッシュ検証を実行する例示的なコンピューティングデバイスのブロック図を示す。
【
図2】本開示の例示的な実施形態による、例示的な共有コンパイルキャッシュ検証システムの追加の態様のブロック図を示す。
【
図3】本開示の例示的な実施形態による、例示的な共有コンパイルキャッシュ検証システムの態様の例示的なデータフローのブロック図を示す。
【
図4】本開示の例示的な実施形態による、例示的な共有コンパイルキャッシュ検証システムの例示的な状態ベースのスキームのブロック図を示す。
【
図5】本開示の例示的な実施形態による、例示的な共有コンパイルキャッシュ検証システムの非認証キャッシュを用いた例示的なデータフローのブロック図を示す。
【
図6】本開示の例示的な実施形態による、例示的な共有コンパイルキャッシュ検証システムの認証キャッシュを用いた例示的なデータフローのブロック図を示す。
【
図7】本開示の例示的な実施形態による、例示的な共有コンパイルキャッシュ検証システムの無効キャッシュを用いた例示的なデータフローのブロック図を示す。
【
図8】本開示の例示的な実施形態による、共有キャッシュ検証を実行する例示的な方法のフローチャート図を示す。
【
図9】本開示の例示的な実施形態による、共有キャッシュ検証を実行する他の例示的な方法のフローチャート図を示す。
【0011】
複数の図面にわたって繰り返される参照番号は、様々な実施態様で同じ特徴を特定することを意図している。
【発明を実施するための形態】
【0012】
概要
概して、本開示は、共有キャッシュ検証のためのシステム及び方法を対象とする。例えば、本開示の態様による例示的な実施形態は、コンパイル済みリソースの共有キャッシュを管理するために使用され得る技法に関する。例えば、いくつかの実施形態では、複数の計算ノードが、同じまたは同様の操作を実行するために使用できるように構成されるとき、共有キャッシュをこれらのノードで利用可能にすることができるため、あるノードによって既にコンパイルされたリソースを、同じまたは同様の操作を実行するための別のノードで再利用することができる。ただし、いくつかのシナリオでは、共有キャッシュの配置は、非互換性のリスクと関連付けることができる。例えば、あるノード上でコンパイルされた共有キャッシュエントリは、別のノードでの実行と完全な互換性がない場合があり、そうでなければ別のノードでの実行に有効でない場合がある(例えば、ハードウェアの違い、ファームウェアの違い、ソフトウェアの違い、構成の違いなどによる)。リソースの非互換性は、システム障害、データの損失、ダウンタイム、脆弱性などのリスクと関連付けることができる。
【0013】
有利には、本開示の例示的な態様によるシステム及び方法は、共有キャッシュの検証の改善を提供することができる。例えば、いくつかの実施形態では、共有キャッシュが、それが複数のエンドポイント間でキャッシュされたリソースを提供するために信頼される前に、本開示の態様に従って認証されることができる。例えば、いくつかの実施形態では、共有キャッシュは、認証ステータス(例えば、有効/認証、無効、非認証などを含む状態を伴う)を割り当てることができる。認証ステータスは、状態ベースのアプローチに基づいて、維持、更新、及び/またはリセットすることができる。
【0014】
認証ステータスは、いくつかの実施形態では、所望のエンドポイントのため直接コンパイル済み(例えば、ローカルでコンパイルされた、実行時コンパイラによってコンパイルされたなど)1つまたは複数のリソースに対して、共有キャッシュ内の1つまたは複数のプリコンパイル済み共有キャッシュエントリを検証することによって決定することができる。例えば、ノードのためにまたはノードによってコンパイルされた直接コンパイル済み対応物は、そのノードと互換性のあるリソースの例として参照され得る。このようにして、例えば、プリコンパイル済み共有キャッシュエントリは、既知の互換性のあるリソースと比較して、互換性があることを検証することができる。
【0015】
例えば、いくつかの実施形態では、計算ノードは、操作を行うリクエストを受信することができる。計算ノードは、共有キャッシュに対してクエリを実行して、リクエストされた操作(複数可)と関連付けられたプリコンパイル済みリソースを取得することができる。場合によっては、計算ノードは、リクエストされた操作(複数可)のために直接コンパイル済み(例えば、ノードによってローカルでコンパイルされた、実行時コンパイラによってノードのためにコンパイルされたなど)リソースを取得し、結果(複数可)と、共有キャッシュから取得したプリコンパイル済みリソースを比較することもできる。いくつかの実施形態では、比較(例えば、一致などのプラスの比較)に基づいて、プリコンパイル済みリソースを検証することができる(例えば、互換性として示すことができる)。このようにして、例えば、共有キャッシュ内のプリコンパイル済みリソースは、互換性があると決定することができ、したがって、1つまたは複数の計算ノード全体で改善されたパフォーマンスを得るために利用することができる。しかし、いくつかの実施形態では、マイナスの比較(例えば、非互換性が検出されるなど)を得ることに基づいて、共有キャッシュは、全体的または部分的に非アクティブ化が可能であり、1つまたは複数の接続された計算ノード(複数可)で互換性のないリソースを実行するリスクを回避する、または減らすことができる。
【0016】
本開示の例示的な態様によるいくつかの実施形態では、プリコンパイル済みキャッシュエントリは、共有キャッシュキーに関連付けられて共有キャッシュに格納することができる。共有キャッシュキーは、対応するプリコンパイル済みキャッシュエントリを取得するための手段として構成することができる。例えば、いくつかの例では、プリコンパイル済み共有キャッシュリソースを初期化し、リソースの1つまたは複数の識別子をエンコードする共有キャッシュキーを割り当てることができる。いくつかの実施形態では、識別子は、リクエスト(例えば、計算ノードによる処理のリクエスト)を、計算ノードでリクエストされた操作を実行するためのリソースにリンクすることができる。
【0017】
例えば、いくつかの実施形態では、共有キャッシュキーは、計算ノードでリクエストされた操作を実行するためのターゲット共有キャッシュエントリを、他のエントリ(例えば、計算ノードと互換性のない他のリソース)と区別するように構成することができる。いくつかの実施形態では、共有キャッシュキーは、共有キャッシュエントリの略語表現または共有キャッシュエントリへのポインタを含むことができる。いくつかの実施形態では、例えば、共有キャッシュエントリの略語表現は、共有キャッシュエントリの1つまたは複数の態様または部分のハッシュまたは他のエンコード(例えば、エントリのタグ、ラベル、タイトル、構造、内容、ロケータなどのハッシュまたは他のエンコード)を含むことができる。いくつかの実施形態では、共有キャッシュエントリの略語表現は、共有キャッシュエントリによって実行される操作のリクエストの1つまたは複数の態様または部分のハッシュまたは他のエンコードを含むことができる。例えば、いくつかの実施形態では、共有キャッシュキーは、計算ノードで操作に対するリクエストから生成することができ、キーは、同じまたは同様の(例えば、相互互換性のある)計算ノードで前にコンパイルされたプリコンパイル済み共有キャッシュエントリに関連付けられておりあらかじめ格納されていたキーと一致させることができる。このようにして、例えば、操作(例えば、関数呼び出しなど)のリクエストが与えられると、リクエストされた操作を実行するように構成されたリソースを共有キャッシュから取得するように動作可能な共有キャッシュキーを取得することができる。そして、このようにして、例えば、共有キャッシュキーは、共有キャッシュ内の互換性のあるエントリを取得するように構成することができる。
【0018】
共有キャッシュキーが互換性のある共有キャッシュエントリ(例えば、ノード間の非互換性を適切に区別するように構成される)を適切に取得することを確保する支援をするために、本開示の例示的な態様によるシステム及び方法は、共有キャッシュ証明書を提供することができる。共有キャッシュは、例えば、共有キャッシュ内の1つまたは複数のエントリの検証に基づいて決定された認証ステータスインジケータ、または他の証明書に関連付けることができる。
【0019】
例えば、リクエストに関連付けられた操作を実行するために取得された共有キャッシュエントリは、そのリクエストに関連付けられている直接コンパイル済みリソースと比較することができる。いくつかの実施形態では、直接コンパイル済みリソースは、キャッシュされたリソースをリクエストするノードによってローカルでコンパイルされたリソースを含むことができる。いくつかの実施形態では、直接コンパイル済みリソースは、実行時コンパイラ(例えば、ノード上、ノードにサービスを提供するサーバ上など)によってコンパイルすることができる。いくつかの例では、例えば、直接コンパイル済みリソースは、ターゲットノードと互換性のあるリソースをコンパイルするように構成されたコンパイラによってコンパイルすることができる。
【0020】
いくつかの実施形態では、直接コンパイル済みリソースは、例えば、リクエストに関連付けられた操作を実行するためにコンパイルされた実行可能コードを含むことができる。共有キャッシュエントリは、例えば、リクエストに関連付けられた操作を実行するようにも構成されたプリコンパイル済み実行可能コードを含むことができる。
【0021】
直接コンパイル済みリソースと共有キャッシュエントリとの比較は、例えば、直接コンパイル済みリソースと共有キャッシュエントリのそれぞれのフィンガープリント(例えば、識別を提供するハッシュまたは他のエンコード)の比較を含むことができる。例えば、いくつかの実施形態では、直接コンパイル済みリソースと共有キャッシュエントリのそれぞれの1つまたは複数の部分が同等の(例えば、同一の)ハッシュ値に対応する場合、共有キャッシュエントリは、共有キャッシュエントリが計算ノードで互換性のある実行に対して信頼され得るように直接コンパイル済みリソースと十分に交換可能であると決定されてよい。このようにして、例えば、1つまたは複数の共有キャッシュエントリ(例えば、及び/またはそれに関連付けられたキー)は、1つまたは複数の対応する直接コンパイル済みリソースとの比較(例えば、1つまたは複数の互換性基準を満たす比較など)を成功させることによって検証することができる。
【0022】
いくつかの実施形態では、1つまたは複数の共有キャッシュエントリを検証する際に使用されるフィンガープリントは、1つまたは複数の共有キャッシュエントリとそれらの直接コンパイル済み対応物との間の差異を明らかにするように構成することができる。例えば、いくつかの実施形態では、フィンガープリントは、リソース(例えば、共有キャッシュエントリ、直接コンパイル済みリソースなど)のコンテンツを粒状で反映するように構成することができる。例えば、フィンガープリントは、(例えば、リソースのコンテンツ全体、リソースの操作コンテンツなどの)リソースから生成されたハッシュ値または他のエンコードを含むことができる。このようにして、例えば、直接コンパイル済みリソースと共有キャッシュエントリとの両方に関連付けられた共有キャッシュキーによって共有キャッシュエントリが取得された場合でも、フィンガープリントは有利に、直接コンパイル済みリソースと共有キャッシュエントリとの間の潜在的な非互換性を明らかにすることができる。
【0023】
いくつかの実施形態では、例えば、フィンガープリントは、共有キャッシュキーの構成の信頼性を検証することに使用することができる。例えば、最も単純な例では、計算ノードが操作Aを実行するリクエストを検討する。キーは、「操作A」の何らかのエンコードであり得、計算ノードは、キーを用いて共有キャッシュにクエリを行い、「操作A」を示すキーでタグ付けされたプリコンパイル済み共有キャッシュエントリを取得し得る。プリコンパイル済み共有キャッシュエントリが計算ノードと互換性があるかどうかをテストするために、計算ノードは、リクエストされた操作Aを実行するために直接コンパイル済みリソースを取得できる。直接コンパイル済みリソースは、取得されたプリコンパイル済み共有キャッシュエントリと比較して、検証することができる。しかし、比較(例えば、ハッシュ値、他のエンコードなど)により、要求ノードにとって無効なリソースであるように、取得されたリソースが直接コンパイル済みリソースとは異なることを明らかにしてもよい。例えば、取得されたプリコンパイル済みリソースは、タイプ1のノードによって操作Aを実行するようにコンパイルされている可能性があるが、要求ノードは、タイプ1のノードによってコンパイルされたリソースと互換性がないタイプ2のものである。共有キャッシュキーの設定スキームが、タイプ1ノード用にコンパイルされたリソースとタイプ2ノード用にコンパイルされたリソースとを区別できなかったため、共有キャッシュの1つまたは複数の部分が、キャッシュされた無効なリソースが提供されるのを防ぐために、認証解除、またはそうでなければ無効化され得る。
【0024】
本開示の例示的な態様による例示的な実施形態は、多数の技術的な効果及び利点を提供する。共有キャッシュの実施の改善された検証を提供することによって、例示的な実施形態は1つまたは複数の個々のノードにわたってプリコンパイル済みコードを利用することで、個々のノードが重複したコンパイルを不必要に課せられないような、コンピューティングシステムの改善されたパフォーマンスを提供することができる。例えば、例示的な実施形態は、共有キャッシュシステムをデプロイする安全で信頼性の高い手段を提供することによって、1つまたは複数の計算ノードについて(例えば、個別に及び/または集合的に)、速度の増加、レイテンシの減少、ネットワーク帯域幅要件の減少、消費電力の減少、メモリ使用量の減少などを提供することができる。例えば、新しい計算ノードがオンラインになるとき、従来、その計算ノードは、プリポピュレートされたローカルキャッシュを欠くおそれがあるので、新しいノードで実行される操作は、すべての操作をオンデマンドでコンパイルする必要があり、キャッシュされたリソースの処理の改善から一般に恩恵を受けない場合がある。しかし、本開示の例示的な実施形態によれば、認証された共有キャッシュを使用して、新しいノードのローカルキャッシュにさらに効率的にポピュレートすることができ、新しいノードをオンラインにするための処理要件(及び関連するリードタイムなど)を有利に減少させる。別の例では、例えば、既存のノードは、新しいタスクに遭遇する場合があり、タスクを完了するためにリソースを直接コンパイルする必要がある代わりに、本開示による共有キャッシュシステムの例示的な実施形態は、改善された速度及び効率で新しいタスクを処理するためにプリコンパイル済みリソースをノードに供給することを提供することができる。
【0025】
別の追加の利点は、いくつかの例示的な実施形態では、実行障害及び/または互換性のないコードまたは承認されていないコードの他の結果に対するロバスト性の向上を含む。例えば、いくつかの例では、本開示の態様による改善された検証技術は、1つまたは複数の計算ノードのシステムの信頼性及び/またはセキュリティを高めることができ、稼働時間の増加、不正実行イベントの減少、維持コストの削減(例えば、デバッグ、時間及び人件費などの計算コスト)をもたらす。このようにして、例えば、ターゲットレベルの稼働時間、信頼性、及び/またはセキュリティを提供するために消費され得るコンピューティングリソースをより少なくすることができる。代替的に、または付加的に、いくつかの実施形態では、稼働時間、信頼性、及び/またはセキュリティの改善が、コンピューティングリソース(例えば、ネットワーク帯域幅要件の減少、消費電力の減少、メモリ使用量の減少など)をより効率的に使用することによって達成することができる。このようにして、例えば、コンピューティングシステム自体の例示的な実施形態の機能は、処理、レイテンシなどの改善をもたらしながら、障害のリスクを減少させることによって改善することができる。
【0026】
ここで図を参照しながら、本開示の例示的な実施形態をさらに詳細に説明する。
【0027】
例示的なデバイス及びシステム
図1Aは本開示の例示的な実施形態による、共有キャッシュ検証を実行する例示的なコンピューティングシステム100のブロック図を示す。システム100は、ネットワーク180を介して通信可能に接続されたコンピューティングデバイス102、サーバコンピューティングシステム130、及びトレーニングコンピューティングシステム150を含む。
【0028】
コンピューティングデバイス102は、例えば、パーソナルコンピューティングデバイス(例えば、ラップトップまたはデスクトップ)、モバイルコンピューティングデバイス(例えば、スマートフォンまたはタブレット)、ゲームコンソールまたはコントローラ、ウェアラブルコンピューティングデバイス、組み込みコンピューティングデバイス、ワークステーション、分散システムのコンピューティングエンドポイント、サーバコンピューティングデバイス、1つまたは複数の仮想マシンのホストデバイス、またはその他の任意のタイプのコンピューティングデバイスなど、任意のタイプのコンピューティングデバイスであり得る。
【0029】
コンピューティングデバイス102は、1つまたは複数のプロセッサ112及びメモリ114を含む。1つまたは複数のプロセッサ112は、任意の適切な処理デバイス(例えば、プロセッサコア、マイクロプロセッサ、ASIC、FPGA、コントローラ、マイクロコントローラなど)であってよく、1つのプロセッサ、または動作可能に接続された複数のプロセッサであってよい。メモリ114は、RAM、ROM、EEPROM、EPROM、フラッシュメモリデバイス、磁気ディスクなど、及びそれらの組み合わせなどの1つまたは複数の非一時的コンピュータ可読記憶媒体を含むことができる。メモリ114は、コンピューティングデバイス102に操作を実行させるようプロセッサ112によって実行されるデータ116及び命令118を格納することができる。
【0030】
メモリ114はまた、コンピューティングデバイス102で実行するためのコンパイル済み命令(例えば、コンパイル済み命令118)を格納するためのローカルキャッシュ120を含むことができる。例えば、ローカルコンパイラ122は、(例えば、機械学習済みモデル(複数可)124の1つまたは複数の操作を実行するため)命令118をコンパイルすることができる。命令118の1つまたは複数の将来の実行に関する処理要件の減少及びレイテンシの低下を提供するために、1つまたは複数のコンパイル済み命令はローカルキャッシュ120に格納することができる。
【0031】
いくつかの実施態様では、コンピューティングデバイス102は、1つまたは複数の機械学習済みモデル124を格納、または含むことができる。例えば、機械学習済みモデル124は、ニューラルネットワーク(例えば、ディープニューラルネットワーク)、または非線形モデル及び/または線形モデルを含む他のタイプの機械学習済みモデルなどの様々な機械学習済みモデルであるか、そうでなければそれらを含むことができる。ニューラルネットワークは、フィードフォワードニューラルネットワーク、回帰型ニューラルネットワーク(例えば、長短期記憶回帰型ニューラルネットワーク)、畳み込みニューラルネットワーク、または他の形態のニューラルネットワークを含むことができる。いくつかの例示的な機械学習済みモデルは、自己注意などの注意機構を利用することができる。例えば、いくつかの例示的な機械学習済みモデルは、多頭自己注意モデル(例えば、トランスフォーマモデル)を含むことができる。
【0032】
いくつかの実施態様では、1つまたは複数の機械学習済みモデル124が、ネットワーク180を介してサーバコンピューティングシステム130から受信され、コンピューティングデバイスメモリ114に格納され、その後1つまたは複数のプロセッサ112によって使用されるか、そうでなければそれらによって実施され得る。いくつかの実装形態では、コンピューティングデバイス102は、単一の機械学習済みモデル124の複数の並列インスタンスを実装することができる。
【0033】
付加的に、または代替的に、1つまたは複数の機械学習済みモデル144は、クライアントサーバ関係に従ってコンピューティングデバイス102と通信するサーバコンピューティングシステム130に含まれ得るか、そうでなければ格納され、実装され得る。例えば、機械学習済みモデル144は、ウェブサービスの一部としてサーバコンピューティングシステム140によって実装することができる。したがって、1つまたは複数のモデル124は、コンピューティングデバイス102において格納及び実装することができ、及び/または1つまたは複数のモデル144は、サーバコンピューティングシステム130において格納及び実装することができる。
【0034】
サーバコンピューティングシステム130は、1つまたは複数のプロセッサ132とメモリ134とを含む。1つまたは複数のプロセッサ132は、任意の適切な処理デバイス(例えば、プロセッサコア、マイクロプロセッサ、ASIC、FPGA、コントローラ、マイクロコントローラなど)であってよく、1つのプロセッサ、または動作可能に接続された複数のプロセッサであってよい。メモリ134は、RAM、ROM、EEPROM、EPROM、フラッシュメモリデバイス、磁気ディスクなど、及びそれらの組み合わせなどの1つまたは複数の非一時的コンピュータ可読記憶媒体を含むことができる。メモリ134は、サーバコンピューティングシステム130に操作を実行させるようプロセッサ132によって実行されるデータ136及び命令138を格納することができる。
【0035】
メモリ134はまた、コンピューティングデバイス102、サーバコンピューティングシステム130、及び/またはトレーニングコンピューティングシステム150で実行するためのコンパイル済み命令(例えば、コンパイル済み命令118、コンパイルされた命令138)を格納するための共有キャッシュ140を含むことができる。例えば、サーバコンパイラ142は、(例えば、機械学習済みモデル(複数可)124及び/または機械学習済みモデル(複数可)144の1つまたは複数の操作を実行するために)命令118及び/または命令138をコンパイルすることができる。命令118及び/または命令138の1つまたは複数の将来の実行に関する処理要件の減少及びレイテンシの低下を提供するために、1つまたは複数のコンパイル済み命令は共有キャッシュ140に格納することができる。いくつかの実施形態では、本明細書に記載のとおり、共有キャッシュ140は、ネットワーク180を介して1つまたは複数の他のシステム及びデバイスに1つまたは複数のエントリ(例えば、プリコンパイル済みリソースなどのリソース)を提供するように構成することができる。いくつかの実施形態では、複数のコンピューティングデバイス102は、それぞれ、サーバコンピューティングシステム130と通信しており、共有キャッシュ140からプリコンパイル済みリソースを受信するように構成されている。例えば、システム100は、いくつかの実施形態では、コンピューティングデバイス102、トレーニングコンピューティングシステム150、及びサーバコンピューティングシステム130の間でコンパイルタスクを調整して、共有キャッシュ140(及びいくつかの実施形態では、より強力なプロセッサ132及び/またはコンパイラ142)を利用することができる。
【0036】
いくつかの実施態様では、サーバコンピューティングシステム130は、1つまたは複数のサーバコンピューティングデバイスを含むか、そうでなければそれらによって実装される。サーバコンピューティングシステム130が複数のサーバコンピューティングデバイスを含む場合、そのようなサーバコンピューティングデバイスは、順次コンピューティングアーキテクチャ、並列コンピューティングアーキテクチャ、またはそれらの何らかの組み合わせに従って操作することができる。
【0037】
上記のように、サーバコンピューティングシステム130は、1つまたは複数の機械学習済みモデル144を記憶するか、そうでなければ含むことができる。例えば、モデル144は、様々な機械学習済みモデルであり得るか、そうでなければ含むことができる。例示的な機械学習済みモデルは、ニューラルネットワークまたはその他の多層非線形モデルを含む。例示的なニューラルネットワークは、フィードフォワードニューラルネットワーク、ディープニューラルネットワーク、再帰型ニューラルネットワーク、及び畳み込みニューラルネットワークを含む。いくつかの例示的な機械学習済みモデルは、自己注意などの注意機構を利用することができる。例えば、いくつかの例示的な機械学習済みモデルは、多頭自己注意モデル(例えば、トランスフォーマモデル)を含むことができる。
【0038】
コンピューティングデバイス102及び/またはサーバコンピューティングシステム130は、ネットワーク180を介して通信可能に接続されたトレーニングコンピューティングシステム150とのインタラクションを介して、モデル124及び/または144をトレーニングすることができる。トレーニングコンピューティングシステム150は、サーバコンピューティングシステム130とは別個であってもよく、またはサーバコンピューティングシステム130の一部であってもよい。
【0039】
トレーニングコンピューティングシステム150は、1つまたは複数のプロセッサ152及びメモリ154を含む。1つまたは複数のプロセッサ152は、任意の適切な処理デバイス(例えば、プロセッサコア、マイクロプロセッサ、ASIC、FPGA、コントローラ、マイクロコントローラなど)であってよく、1つのプロセッサ、または動作可能に接続された複数のプロセッサであってよい。メモリ154は、RAM、ROM、EEPROM、EPROM、フラッシュメモリデバイス、磁気ディスクなど、及びそれらの組み合わせなどの1つまたは複数の非一時的コンピュータ可読記憶媒体を含むことができる。メモリ154は、トレーニングコンピューティングシステム150に操作を実行させるようプロセッサ152によって実行されるデータ156及び命令158を格納することができる。いくつかの実施態様では、トレーニングコンピューティングシステム150は、1つまたは複数のサーバコンピューティングデバイスを含むか、そうでなければそれらによって実装される。
【0040】
メモリ154はまた、トレーニングコンピューティングシステム150で実行するためのコンパイル済み命令(例えば、コンパイル済み命令158)を格納するためのローカルキャッシュ160を含むことができる。例えば、ローカルコンパイラ162は、(例えば、モデルトレーナ164の1つまたは複数の操作を実行するために)命令158をコンパイルすることができる。命令158の1つまたは複数の将来の実行に関する処理要件の減少及びレイテンシの低下を提供するために、1つまたは複数のコンパイル済み命令をローカルキャッシュ160に格納することができる。
【0041】
トレーニングコンピューティングシステム150は、例えば、誤差逆伝播法などの様々なトレーニング技法または学習技法を用いて、コンピューティングデバイス102及び/またはサーバコンピューティングシステム130に格納された機械学習済みモデル124及び/または144をトレーニングするモデルトレーナ164を含むことができる。例えば、損失関数は、モデル(複数可)を通じて誤差逆伝播され、モデル(複数可)の1つまたは複数のパラメータを更新することができる(例えば、損失関数の勾配に基づいて)。平均二乗誤差、尤度損失、交差エントロピー誤差、ヒンジ損失、及び/または様々な他の損失関数など、様々な損失関数が使用されてもよい。勾配降下法を使用して、多数のトレーニングイテレーションにわたってパラメータを反復的に更新することができる。
【0042】
いくつかの実施態様では、誤差逆伝播を実行することは、打切り型通時的逆伝播を実行することを含んでもよい。モデルトレーナ164は、トレーニングされるモデルの汎化能力を改善するために、いくつかの汎化技術(例えば、重み減衰、ドロップアウトなど)を実行することができる。具体的には、モデルトレーナ164は、トレーニングデータセットに基づいて、機械学習済みモデル124及び/または144をトレーニングすることができる。
【0043】
いくつかの実施態様では、同意が提供される場合、トレーニング例は、コンピューティングデバイス102によって提供され得る。したがって、そのような実施態様では、コンピューティングデバイス102に提供されるモデル124は、コンピューティングデバイス102から受信したデバイス固有データでトレーニングコンピューティングシステム150によってトレーニングすることができる。いくつかの例では、このプロセスを、モデルのパーソナライズと呼ぶ場合もある。
【0044】
モデルトレーナ164は、所望の機能を提供するために利用されるコンピュータ論理を含む。モデルトレーナ164は、ハードウェア、ファームウェア、及び/または汎用プロセッサを制御するソフトウェアに実装することができる。例えば、いくつかの実施態様では、モデルトレーナ164は、ストレージデバイスに格納され、メモリにロードされ、1つまたは複数のプロセッサによって実行されるプログラムファイルを含む。他の実施態様では、モデルトレーナ164は、RAM、ハードディスク、または光媒体もしくは磁気媒体などの有形のコンピュータ可読記憶媒体に格納されるコンピュータ実行可能命令の1つまたは複数のセットを含む。
【0045】
ネットワーク180は、ローカルエリアネットワーク(例えば、イントラネット)、ワイドエリアネットワーク(例えば、インターネット)、またはそれらの何らかの組み合わせなどの任意のタイプの通信ネットワークとすることができ、任意の数の有線リンクまたは無線リンクを含むことができる。概して、ネットワーク180を介した通信は、多種多様な通信プロトコル(例えば、TCP/IP、HTTP、SMTP、FTP)、エンコードまたはフォーマット(例えば、HTML、XML)、及び/または保護スキーム(例えば、VPN、セキュアHTTP、SSL)を用いて、任意のタイプの有線接続及び/または無線接続を介して行うことができる。
【0046】
図1Aは、本開示を実装するために使用することができる1つの例示的なコンピューティングシステム100を示す。他のコンピューティングシステムも同様に使用できる。例えば、いくつかの実施態様では、コンピューティングデバイス102は、モデルトレーナ164及びトレーニングデータセットを含むことができる。そのような実施態様では、モデル124は、コンピューティングデバイス102においてローカルでトレーニングすることも、使用することもできる。そのような実施態様のいくつかでは、コンピューティングデバイス102は、デバイス固有データに基づいてモデル124をパーソナライズするモデルトレーナ164を実装することができる。
【0047】
図1Bは、本開示の例示的な実施形態による、実行する例示的なコンピューティングデバイス10のブロック図を示す。種々の実施形態では、コンピューティングデバイス10は、クライアントコンピューティングデバイスまたはサーバコンピューティングデバイスとすることができる。例えば、コンピューティングデバイス10は、コンピューティングデバイス102に対応することができる。いくつかの実施形態では、コンピューティングデバイス10(例えば、コンピューティングデバイス102)は、ネットワーク180を介して1つまたは複数のクライアントコンピューティングデバイスに機械学習モデルの操作を提供することができる。
【0048】
コンピューティングデバイス10は、いくつかのアプリケーション(例えば、アプリケーション1~N)を含む。各アプリケーションは、独自の機械学習ライブラリ及び機械学習済みモデル(複数可)を含む。例えば、各アプリケーションは、機械学習済みモデルを含むことができる。例示的なアプリケーションは、テキストメッセージングアプリケーション、電子メールアプリケーション、ディクテーションアプリケーション、仮想キーボードアプリケーション、ブラウザアプリケーションなどを含む。
【0049】
図1Bに示されるように、各アプリケーションは、例えば、1つまたは複数のセンサ、コンテキストマネージャ、デバイス状態コンポーネント、及び/または追加のコンポーネントなどのコンピューティングデバイスのいくつかの他のコンポーネントと通信することができる。いくつかの実施態様では、各アプリケーションは、API(例えば、公開API)を使用して各デバイスコンポーネントと通信することができる。いくつかの実施態様では、各アプリケーションによって使用されるAPIは、そのアプリケーションに固有のものである。
【0050】
図1Cは、本開示の例示的な実施形態による、実行する例示的なコンピューティングデバイス50のブロック図を示す。コンピューティングデバイス50は、クライアントコンピューティングデバイスまたはサーバコンピューティングデバイスとすることができる。
【0051】
コンピューティングデバイス50は、いくつかのアプリケーション(例えば、アプリケーション1~N)を含む。各アプリケーションは、中央インテリジェンス層と通信する。例示的なアプリケーションは、テキストメッセージングアプリケーション、電子メールアプリケーション、ディクテーションアプリケーション、仮想キーボードアプリケーション、ブラウザアプリケーションなどを含む。いくつかの実施態様では、各アプリケーションは、API(例えば、すべてのアプリケーションに共通のAPI)を用いて中央インテリジェンス層(及びそこに格納されたモデル(複数可))と通信することができる。
【0052】
中央インテリジェンス層は、いくつかの機械学習済みモデルを含む。例えば、
図1Cに示すように、それぞれの機械学習済みモデルは、アプリケーションごとに提供され、中央インテリジェンス層によって管理され得る。他の実施態様では、2つ以上のアプリケーションが単一の機械学習済みモデルを共有することができる。例えば、いくつかの実施態様では、中央インテリジェンス層は、すべてのアプリケーションに単一のモデルを提供することができる。いくつかの実施態様では、中央インテリジェンス層は、コンピューティングデバイス50のオペレーティングシステム内に含まれるか、そうでなければコンピューティングデバイス50のオペレーティングシステムによって実装される。
【0053】
中央インテリジェンス層は、セントラルデバイスのデータ層と通信することができる。セントラルデバイスのデータ層は、コンピューティングデバイス50のデータの集中型リポジトリであり得る。
図1Cに示されるように、セントラルデバイスのデータ層は、例えば、1つまたは複数のセンサ、コンテキストマネージャ、デバイス状態コンポーネント、及び/または追加のコンポーネントなどのコンピューティングデバイスのいくつかの他のコンポーネントと通信することができる。いくつかの実施態様では、セントラルデバイスのデータ層は、API(例えば、プライベートAPI)を使用して各デバイスコンポーネントと通信することができる。
【0054】
図2は、共有キャッシュ210によってサービスの提供を受けるいくつかのコンピューティングデバイス102-1、102-2、...、102-nを示す。図示するように、コンピューティングデバイス102-1、102-2、...、102-nはそれぞれ、1つまたは複数のプロセッサ112-1、112-2、...、112-n、及びメモリ114-1、114-2、...、114-nを含む。1つまたは複数のプロセッサは、任意の適切な処理デバイス(例えば、プロセッサコア、マイクロプロセッサ、ASIC、FPGA、コントローラ、マイクロコントローラなど)であってよく、1つのプロセッサ、または動作可能に接続された複数のプロセッサであってよい。メモリは、RAM、ROM、EEPROM、EPROM、フラッシュメモリデバイス、磁気ディスクなど、及びそれらの組み合わせなどの1つまたは複数の非一時的コンピュータ可読記憶媒体を含むことができる。メモリ114-1、114-2、...、114-nは、それぞれのコンピューティングデバイスに操作を実行させるようプロセッサによって実行されるデータ116-1、116-2、...、116-nと命令118-1、118-2、...、118-nをそれぞれ格納することができる。
【0055】
メモリ114-1、114-2、...、114-nはまた、それぞれ、ローカルコンパイラ122-1、122-2、...、122-nによってそれぞれコンパイルされた、それぞれのコンピューティングデバイスで実行するためのコンパイル済み命令を格納するローカルキャッシュ120-1、120-2、...、120-nを含んでもよい。命令の1つまたは複数の将来の実行に関する処理要件の減少及びレイテンシの低下を提供するために、1つまたは複数のコンパイル済み命令はそれぞれのコンピューティングデバイスのローカルキャッシュに格納することができる。
【0056】
しかし、いくつかの実施形態では、コンピューティングデバイス102-1、102-2、...、102-nのうちの1つまたは複数は、それぞれのローカルキャッシュがプリコンパイル済みリソースを含まないタスクを実行するようにリクエストされ得る。例えば、コンピューティングデバイス102-nは、初期化され、コンピューティングデバイスのアレイに追加される可能性があり、コンピューティングデバイス102-nは、そのローカルキャッシュ120-n内にいずれのプリコンパイル済みリソースをまだ含まない場合がある。一例では、コンピューティングデバイス102-1のローカルキャッシュ120-1は、プリコンパイル済みリソースを、共有キャッシュキー220に関連付けられたプリコンパイル済み共有キャッシュエントリ212として共有キャッシュ210に格納することができる。例えば、コンピューティングデバイス102-1は、格納される、及び共有キャッシュキー220(例えば、プリコンパイル済み共有キャッシュエントリ212の取得を可能にするように構成されたキー)に関連付けられたプリコンパイル済み共有キャッシュエントリ212(例えば、コンパイラ122-1によってコンパイルされたリソース)を提供することができる。したがって、コンピューティングデバイス102-nは、いくつかの実施形態では、共有キャッシュキー220に関連付けられた操作を行うリクエストを受信することができる。したがって、コンピューティングデバイス102-nは、共有キャッシュキー220を用いて共有キャッシュ210にクエリを実行して、リクエストされた操作を実行するためのプリコンパイル済み共有キャッシュエントリ212を取得することができる。共有キャッシュ210が有効な証明書214(例えば、共有キャッシュ210がコンピューティングデバイス102-nと互換性があることを示す証明書)を有する場合、プリコンパイル済み共有キャッシュエントリ212は、コンピューティングデバイス102-nによって使用され、リクエストされた操作を実行することができる。同様に、いくつかの実施形態では、共有キャッシュ210がポジティブな証明書214を有する場合、共有キャッシュ210の1つまたは複数のエントリは、コンピューティングデバイス102-nのキャッシュ120-n内に(例えば、自動的に、関連するリクエストを受信する前など)ポピュレートすることができる。
【0057】
図3は、(例えば、証明書214を更新するための)認証ステータスを決定するための例示的な状態ベースのアプローチを示す。共有キャッシュの初期状態300は、「非認証」とラベル付けすることができる。状態は、検証更新サイクル310で、及び/または証明書更新サイクル320で更新することができる。検証更新サイクル310は、有効性の確認312で、共有キャッシュの1つまたは複数のエントリ(例えば、共有キャッシュ210のプリコンパイル済み共有キャッシュエントリ212)及び/またはそれに関連付けられた共有キャッシュキーの検証ステータスを決定することを含む。有効性が確認できないと、無効ステータス状態更新314がトリガされる。
【0058】
有効性の確認312を実施するための例示的なアプローチが
図4のブロック図に示されている。ソース410(例えば、操作を実行するリクエストに基づいて選択されるか、そうでなければ決定されるなど)は、2つの処理ストリームのそれぞれに提供され得る。一態様では、ソース410は、ローカルコンパイラ420に(例えば、メモリ114からローカルコンパイラ122へなど、ローカルコンパイラ122に)提供することができる。コンパイラ420は、直接コンパイル済みリソース430(例えば、コンパイル済みソース410)を出力することができ、コンパイル済みリソース430のコンテンツを識別するフィンガープリント440を取得するように処理されることができる。別の態様では、共有キャッシュキー450は、ソース410に関連付けることができ(例えば、ソース410によって実行される操作を実行するリクエストなど、ソース410のリクエストに基づいて生成される)、共有キャッシュキー450を使用して、共有キャッシュ(例えば、共有キャッシュ210)にクエリを行って、共有キャッシュヒット460を取得することができる。共有キャッシュヒット460は、共有キャッシュキー450に基づいて共有キャッシュからのプリコンパイル済みリソース470の取得を示すことができる(例えば、共有キャッシュキー450は、プリコンパイル済みリソース470を取得するための手段である)。フィンガープリント480は、プリコンパイル済みリソース470のコンテンツを識別するプリコンパイル済みリソース470に基づいて取得することができる。
【0059】
いくつかの実施形態では、フィンガープリント440、480を比較490で処理して、プリコンパイル済みリソース470がコンパイル済みリソース430と同等(例えば、交換可能、互換性、同一など)であるかどうかを決定することができる。例えば、いくつかの実施形態では、フィンガープリント440、480は、非互換性の原因となり得るリソース間の差異を捕えるため、十分な粒度を用いて各リソース(例えば、コンパイル済みリソース430、プリコンパイル済みリソース470など)のコンテンツを表すか、そうでなければ識別(例えば、一意に識別)するよう構成することができる。例えば、いくつかの実施形態では、フィンガープリント440、480は、それぞれのリソースのコンテンツ(例えば、一部のリソース、いくつかまたは全部リソースなど)のハッシュ値または他のエンコードを含むことができる。
【0060】
いくつかの実施形態では、比較490の出力は、プリコンパイル済みリソース470の有効性の表示を含むことができる。例えば、「有効」の決定は、コンパイル済みリソース430との機能的等価性または相互運用性に基づく場合がある。いくつかの実施形態では、フィンガープリント440と480との間の一致(例えば、完全な一致など)は、プリコンパイル済みリソース470の有効性を示すことができる。
【0061】
再び
図3を参照すると、いくつかの実施形態では、キャッシュエントリが有効である場合、(例えば、非認証にて)共有キャッシュの状態は維持される。証明書サイクル320では、共有キャッシュは、適格性の確認322で評価され、共有キャッシュが十分に有効であるかどうかを決定する。例えば、いくつかの実施形態では、1つの有効なエントリが共有キャッシュを適格とすることができる。しかし、いくつかの実施形態では、適格閾値は、共有キャッシュ状態が324で認証されるように設定される前に、複数の共有キャッシュエントリを確認することをリクエストし得る。
【0062】
いくつかの実施形態では、認証されると、共有キャッシュは、定期的に再認証され得る。例えば、いくつかの実施形態では、認証された後、共有キャッシュは、定期的に(例えば、キャッシュで選択されたクエリに対して)312で1つまたは複数のキャッシュエントリの検証を再確認することができ、有効性が確認できないと、設定される共有キャッシュステータスを無効とする。いくつかの実施形態では、共有キャッシュステータスは、定期的に非認証にリセットすることができる。例えば、共有キャッシュステータスを非認証にリセットして、312での1つ以上(例えば、複数)の共有キャッシュエントリの検証によって、322でキャッシュの再適格をトリガすることができる。このようにして、例えば、いくつかの実施形態では、証明書(例えば、証明書214)を共有キャッシュに対して保持することができる。
【0063】
いくつかの実施形態では、共有キャッシュの証明書は、1つまたは複数のトリガイベントに基づいて更新することができる。例えば、共有キャッシュ証明書は、設定された期間、設定された数のキャッシュヒット、ヒット率閾値の超過などの後に、更新(例えば、リセット、再確認など)することができる。いくつかの実施形態では、共有キャッシュ証明書は、共有キャッシュによって新たにサービスを提供されるノードがキャッシュにクエリを実行するときに更新することができる。例えば、共有キャッシュが、新たにサービスを提供されるノードに対して認証することができ、共有キャッシュエントリをノードに提供することを信頼できるように、共有キャッシュの1つまたは複数のエントリは、新たにサービスを提供されるノード(例えば、
図4に関して説明した技術などによってなど、本開示に従って検証された)に対して検証することができる。いくつかの実施形態では、例えば、共有キャッシュは複数のエントリを含むことができる。すなわち、サブセットは共有キャッシュを認証する(または再認証する)ために使用することができ、残りの一部またはすべては、受信ノード(例えば、ノードのローカルキャッシュにポピュレートするなど)に充てることができる。
【0064】
いくつかの実施形態では、有効性の確認312でキャッシュエントリの有効性を確認できなかった場合、共有キャッシュのステータスは、無効に設定することができる(例えば、314で)。無効なステータスまたは証明書により、例えば、共有キャッシュの1つまたは複数の部分が非アクティブ化され得る。例えば、いくつかの実施形態では、無効化された共有キャッシュは、1つまたは複数のノード(例えば、すべてのノード)にエントリを提供することを止める。いくつかの実施形態では、共有キャッシュは、最新の既知の認証状態に戻ることができる。すなわち、例えば、共有キャッシュは、新たに追加されたエントリをドロップすることができ、及び/またはキャッシュエントリを検証できなかった新たにサービスを提供するノードの提供を停止することができる(例えば、さらにデバッグするまで安全な操作モードを提供できる)。いくつかの実施形態では、無効ステータスの更新は、共有キャッシュキーの構成への更新をトリガすることができる。例えば、共有キャッシュキーが共有キャッシュから互換性のないリソースを取得する場合(例えば、検証の失敗につながる)、いくつかの実施形態では、共有キャッシュキーが、ノード間の非互換性を捉えて応答するための十分な特異性でキャッシュされたリソースを識別できなかったと決定されてよく、共有キャッシュキーの設定スキーマを更新して、例えば、より詳細な識別子を含むことができる(例えば、キーエンコードのビット深度を増加する、キーエンコードの生成を変更し、追加のまたは異なる情報を捉える、またはそうでなければ衝突を減らすために修正されるなど)。
【0065】
図5は、共有キャッシュが非認証状態にあるときの
図3の状態ベースのアプローチの例示的な拡張を示す。
図5の決定ブロックは、図面に配置されて示されているが、追加の配置及び代替の配置が企図され、本開示の範囲内であることを理解されたい。いくつかの実施形態では、502で、実行される操作のリクエストを行うことができる。いくつかの実施形態では、例えば、計算ノードが操作を実行することを(例えば、機械学習済み機能または操作などの計算ノードの機能を呼び出すことによってなど)、計算ノードに対してリクエストすることができる。リクエスト502に基づいて、リクエストされた操作を実行するためにリソースが必要であると決定されてよい。いくつかの実施形態では、リソースはコンピュータコードリソースである。いくつかの実施形態では、リソースは、実行のためコンパイルを必要とするか、そうでなければコンパイルから利益を得る。504で、ローカルキャッシュに対してクエリを実行して、必要なリソースが以前にコンパイルされており、実行のためローカルで利用可能であるかどうかを決定することができる。ローカルキャッシュでのヒット(例えば、クエリに対応する一致エントリを示す)は、ローカルキャッシュエントリを使用してリクエスト502を処理するために506で提供することができ、データフローは、599で、現在のサイクルまたはイテレーションを終了することができる。ローカルキャッシュでのミス(例えば、クエリに対応するエントリが見つからないことを示す)は、計算ノードの(例えば、ローカルで、サーバ上などで)必要なリソースをコンパイルするために508で提供することができる。なぜなら共有キャッシュは、510でコンパイル済みリソースを使用して、非認証状態にあるからである。512で、共有キャッシュに対して、必要なリソースに対応するエントリについて(例えば、共有キャッシュキーを使用して)クエリ実行することができる。クエリがミスをする場合、共有キャッシュは、508でコンパイル済みリソースを使用して514でポピュレートすることができる。クエリがヒットし、エントリがキャッシュから取得された場合、取得されたリソースは、516で検証することができる(例えば、コンパイル済みリソースとキャッシュから取得されたリソースとの比較によって検証される)。無効な場合、共有キャッシュの認証状態または証明書は、518で非認証から無効に更新することができる。取得されたリソースが有効である場合(例えば、コンパイル済みリソースとの一致、互換性、相互運用可能など)、520で、キャッシュが証明書を得るために十分に有効であるかどうかを決定することができる。そうでない場合、サイクルまたはイテレーションは、任意選択的に、516において、検証カウントまたは検証の他のインジケータをインクリメントしながら、終了する。キャッシュが適格である場合(例えば、取得された有効なエントリの閾値数などの適合メトリックに基づいて)、522で、認証状態は、非認証から認証に更新することができる。
【0066】
図6は、共有キャッシュが認証状態にあるときの
図3の状態ベースのアプローチの例示的な拡張を示す。
図6の決定ブロックは、図面に配置されて示されているが、追加の配置及び代替の配置が企図され、本開示の範囲内であることを理解されたい。いくつかの実施形態では、602で、操作のリクエストを取得することができる。リクエスト602に基づいて、ローカルキャッシュは、604で、リクエストされた操作を実行するために必要なリソースに対応するエントリについてクエリを実行することができる。クエリがヒットを返した場合、取得されたローカルキャッシュエントリを606で使用して、リクエストされた操作を実行することができ、本サイクルは699で終了することができる。ローカルキャッシュクエリがミスする場合、608で、認証共有キャッシュに対してクエリを実行することができる。共有キャッシュもまたミスする場合、必要なリソースは、(例えば、ローカルで、サーバでなど)コンパイルされ、610で使用され得る。ただし、共有キャッシュクエリがヒットを返す場合(例えば、手段として共有キャッシュキーを使用して共有キャッシュエントリを取得する場合)、取得された共有キャッシュエントリは612で使用することができる。
【0067】
図7は、共有キャッシュが無効状態にあるときの
図3の状態ベースのアプローチの例示的な拡張を示す。
図7の決定ブロックは、図面に配置されて示されているが、追加の配置及び代替の配置が企図され、本開示の範囲内であることを理解されたい。いくつかの実施形態では、702で、操作のリクエストを取得することができる。リクエスト702に基づいて、ローカルキャッシュは、704で、リクエストされた操作を実行するために必要なリソースに対応するエントリについてクエリを実行することができる。クエリがヒットを返した場合、取得されたローカルキャッシュエントリを706で使用して、リクエストされた操作を実行することができ、本サイクルは799で終了することができる。ローカルキャッシュクエリがミスする場合、必要なリソースを(例えば、ローカルで、サーバでなど)コンパイルし、708で使用することができる。
【0068】
例示的な方法
図8は、本開示の例示的な実施形態による、実行する例示的な方法800のフローチャート図を示す。
図8は、例示及び説明の目的のために特定の順序で実行されるステップを示しているが、本開示の方法は、特定して示された順序または配置に限定されない。方法800の様々なステップは、本開示の範囲から逸脱することなく、様々な方法で省略、再配置、組み合わせ、及び/または適応することができる。
【0069】
いくつかの例示的な態様では、例示的な方法800は、いくつかの実施形態では、共有キャッシュを認証するためのコンピュータ実装方法を提供する。例えば、(例えば、コンピューティングシステムの)計算ノードまたはデバイスは、操作を行うリクエストを受信することができる。例えば、リクエストは、機能呼び出し、キューに入れられたタスク、分散プロセスなどの実質的に任意の処理タスクを含むことができる。操作を実行することは、1つまたは複数のリソースを使用、実行、またはそうでなければ実装することができる。いくつかの実施形態では、リソースは、操作を実行するためにコンパイルされ得る(例えば、機能するようにコンパイルされる必要がある、コンパイルされるとよりよく機能するなど)。いくつかの実施形態では、例えば、リクエストされた操作を実行することは、コンパイルされたコンピュータコードを実行することを含むことができる。
【0070】
いくつかの実施形態では、コンパイル済みリソースは、操作を実行するために望ましい。以前に使用されたまたは取得されたリソースのキャッシュは、いくつかの実施形態では、(例えば、リソースを再コンパイルするよりも速い取得を提供することによって)キャッシュされたリソースを使用して操作を実行する速度を改善することができる。ただし、いくつかの実施形態では、例示的な方法800は、コンピューティングシステムによって、操作リクエストに関連するローカルでキャッシュされたプリコンパイル済みリソースが存在しないことを決定することを含む。例えば、計算ノードまたはデバイスは、第1のキャッシュ(例えば、ローカルキャッシュ)にクエリを行って、プリコンパイル済みリソースのキャッシュされたコピーを取得することができる。しかしながら、場合によっては、第1のキャッシュ(例えば、ローカルキャッシュ)は、リクエストされたリソースを含まない。
【0071】
802では、例示的な方法800は、共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを取得することを含むことができる。共有キャッシュキーは、いくつかの実施形態では、操作リクエストに関連付けることができる。例えば、操作リクエストは、実行される操作を示すことができ、操作を実行するための1つまたは複数のリソースを取得するために共有キャッシュキーに関連付けられる操作を示すことができる。例えば、いくつかの実施形態では、共有キャッシュキーは、操作リクエストに少なくとも部分的に基づいて生成され、1つ以上のリソース(複数可)を識別するように構成することができる。
【0072】
804では、例示的な方法800は、操作リクエストに関連付けられている直接コンパイル済みリソースを(例えば、実行時コンパイラから)取得することを含むことができる。例えば、いくつかの実施形態では、コンピューティングシステムは、プリコンパイル済み共有キャッシュエントリを取得することと、プリコンパイル済み共有キャッシュエントリに対応する直接コンパイルリソースを生成すること、そうでなければ取得することとの両方を行うことができる。
【0073】
806では、例示的な方法800は、プリコンパイル済み共有キャッシュエントリと直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて、共有キャッシュの1つまたは複数の部分を認証することを含むことができる(例えば、
図3から
図7に関して上述したとおり)。いくつかの実施形態では、例えば、比較は、直接コンパイル済みリソースのフィンガープリント(例えば、ハッシュなど)とプリコンパイル済み共有キャッシュエントリのフィンガープリントとの比較を含む。いくつかの実施形態では、プリコンパイル済み共有キャッシュエントリと直接コンパイル済みリソースとは、実質的に同等である(例えば、相互運用可能、交換可能など)及び/または同一であるように、プリコンパイル済み共有キャッシュエントリは、直接コンパイル済みリソースと同じもしくは同等のコンピューティングシステムのために、またはそれによってコンパイルされた。
【0074】
比較で一致が示されない場合、例えば、プリコンパイル済み共有キャッシュエントリが、直接コンパイル済みリソースに対して有効で同等のものではなく、したがって、共有キャッシュキーによって無効に取得されたということを示すことができる。例えば、例示的な方法800は、コンピューティングシステムによって、プリコンパイル済み共有キャッシュエントリが無効であると決定することに少なくとも部分的に基づいて、共有キャッシュの1つまたは複数の部分を非アクティブ化することを含むことができる。共有キャッシュの1つまたは複数の部分の非アクティブ化
【0075】
比較で一致が示される場合、例えば、プリコンパイル済み共有キャッシュエントリが有効であり、共有キャッシュキーによって有効に取得されたことを示すことができる。このようにして、例えば、共有キャッシュが互換性のあるキャッシュされたリソースを確実に提供しており、リクエストされた操作を実行するためにプリコンパイル済みリソースを供給するために使用できることが決定され得る。いくつかの実施形態では、適格閾値を使用して、全体として共有キャッシュの1つまたは複数の部分を認証する前に、有効であると確認されたエントリの数を決定することができる。例えば、例示的な方法800は、コンピューティングシステムによって、共有キャッシュの1つまたは複数の共有キャッシュエントリの有効性を示す複数の比較を更新することを含むことができ、複数の比較は適格閾値に対応し、複数の比較が適格閾値を満たすことに少なくとも部分的に基づいて、共有キャッシュを認証するとコンピューティングシステムによって決定する。
【0076】
いくつかの実施形態では、例示的な方法800は、コンピューティングシステムによって、共有キャッシュの1つまたは複数の部分についての認証状態を保持することを含むことができる。例えば、いくつかの実施形態では(例えば、
図3から
図7に関して上述したとおり)、共有キャッシュ(例えば、またはその1つまたは複数の部分)の証明書は、非認証、認証、無効などの認証状態を示すことができる。例示的な方法800は、例えば、コンピューティングシステムによって、比較に少なくとも部分的に基づいて、認証状態を更新することを含むことができる。いくつかの実施形態では、例示的な方法800は、定期的にかつコンピューティングシステムによって、共有キャッシュの認証状態をリセットすることを含む。例えば、(例えば、信頼性、セキュリティ、メンテナンスなどのために)共有キャッシュの1つまたは複数の部分を定期的に再認証することが所望される場合がある。
【0077】
図9は、本開示の例示的な実施形態による、実行する例示的な方法900のフローチャート図を示す。
図9は、例示及び説明の目的のために特定の順序で実行されるステップを示しているが、本開示の方法は、特定して示された順序または配置に限定されない。方法900の様々なステップは、本開示の範囲から逸脱することなく、様々な方法で省略、再配置、組み合わせ、及び/または適応することができる。
【0078】
902では、例示的な方法900は、リクエストされた操作を処理する計算ノードから、共有キャッシュからのプリコンパイル済み共有キャッシュエントリのリクエストを受信することを含む。いくつかの実施形態では、共有キャッシュエントリは、共有キャッシュキーを使用して、計算ノードのために取得される。
【0079】
904では、例示的な方法900は、(i)リクエストされた操作を実行するための直接コンパイル済みリソース(例えば、実行時コンパイラなど、計算ノードのために計算ノードによってコンパイルされた)と、(ii)プリコンパイル済み共有キャッシュエントリとの比較に少なくとも部分的に基づいて共有キャッシュの認証状態を取得することを含み得(例えば、
図3から
図7に関して上述したとおり)、認証ステータスは、プリコンパイル済み共有キャッシュエントリの非互換性を示す。いくつかの実施形態では、比較は、直接コンパイル済みリソースのフィンガープリントとプリコンパイル済み共有キャッシュエントリのフィンガープリントとの比較を含むことができる。
【0080】
906では、例示的な方法900は、計算ノードからの1つまたは複数のフューチャーリクエストのために共有キャッシュを非アクティブ化することを含むことができる。例えば、共有キャッシュは完全にオフラインにすることができる。例えば、クエリ実行ノードと互換性のない共有キャッシュエントリを共有キャッシュキーが取得した場合、共有キャッシュをオフラインにして(例えば、キャッシュされたエントリのサービスを停止して)、共有キャッシュキーのスキームで互換性のないエントリのさらなる提供を防ぐことができる。例えば、検証の失敗は、いくつかの実施形態では、リクエストするコンピューティングシステム/デバイスに互換性のあるリソースを正確に識別し、互換性のないリソースを区別する共有キャッシュキースキーマの失敗を示すことができる。いくつかの実施形態では、共有キャッシュは、最新の既知である安全な構成(例えば、前回検証時の状態など)にリセットされることができる及び/または共有キャッシュの1つまたは複数の以前に検証され認証された部分は、1つまたは複数の他の部分がサービスを停止可能である間、保持されることができる。
【0081】
追加の開示
本明細書で説明する技術は、サーバ、データベース、ソフトウェアアプリケーション、及び他のコンピュータベースのシステム、ならびにそれらのようなシステムへ及びから実行されるアクション及びそれらのシステムと送受信する情報を参照する。コンピュータベースのシステムに固有の柔軟性により、コンポーネント間でのタスク及び機能の多種多様な可能な構成、組み合わせ、及び分割が可能になる。例えば、本明細書で説明されるプロセスは、単一のデバイスまたはコンポーネント、もしくは組み合わされて動作する複数のデバイスまたはコンポーネントを使用して実施することができる。データベースとアプリケーションは、単一のシステムに実装することも、複数のシステムに分散することもできる。分散されたコンポーネントは、連続してまたは並行して操作することができる。
【0082】
本主題は、その様々な具体的で例示的な実施形態に関して詳細に説明されてきたが、各例は、説明のために提供されており、本開示を制限するものではない。当業者は、上述の内容を理解すると、そのような実施形態の修正、変形を容易に行い、均等物を容易に作成できる。したがって、本開示は、当業者にとって容易に明らかであろうように、本主題に対するそのような修正、変更、及び/または追加を含めることを除外しない。例えば、一実施形態の一部として図示または説明されている特徴を別の実施形態と使用して、さらに別の実施形態を生み出すことができる。したがって、本開示は、そのような変更、変形、及び均等物を網羅することを意図している。
【手続補正書】
【提出日】2024-08-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
共有キャッシュを認証するためのコンピュータ実装方法であって、
1つまたは複数のプロセッサを含むコンピューティングシステムによって、共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを取得することであって、前記共有キャッシュキーは操作リクエストに関連付けられている、前記取得することと、
前記コンピューティングシステムによって、前記操作リクエストと関連付けられた直接コンパイル済みリソースを取得することと、
前記コンピューティングシステムによって、前記プリコンパイル済み共有キャッシュエントリと前記直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて、前記共有キャッシュの1つまたは複数の部分を認証することとを含む、前記コンピュータ実装方法。
【請求項2】
前記コンピューティングシステムによって、前記操作リクエストに関連付けられ、ローカルでキャッシュされたプリコンパイル済みリソースが存在しないことを決定することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記コンピューティングシステムによって、前記操作リクエストに関連付けられた直接コンパイル済みリソースを取得することは、
前記コンピューティングシステムによって及び実行時コンパイラから、前記直接コンパイル済みリソースを取得することを含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記比較が、前記直接コンパイル済みリソースのフィンガープリントと、前記プリコンパイル済み共有キャッシュエントリのフィンガープリントとの比較を含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記コンピューティングシステムによって、前記比較に少なくとも部分的に基づいて前記共有キャッシュの1つまたは複数の部分を認証することは、
前記コンピューティングシステムによって、前記共有キャッシュの1つまたは複数の共有キャッシュエントリの有効性を示す複数の比較を更新することを含み、前記複数の比較は適格閾値に対応する、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記コンピューティングシステムによって、前記複数の比較が前記適格閾値を満たすことに少なくとも部分的に基づいて、前記共有キャッシュを認証することを決定することをさらに含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記コンピューティングシステムによって、前記比較に少なくとも部分的に基づいて前記共有キャッシュの1つまたは複数の部分を認証することは、
前記コンピューティングシステムによって、前記プリコンパイル済み共有キャッシュエントリが無効であると決定することに少なくとも部分的に基づいて、前記共有キャッシュの前記1つまたは複数の部分を非アクティブ化することを含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記コンピューティングシステムによって、前記共有キャッシュの前記1つまたは複数の部分についての認証状態を維持することと、
前記コンピューティングシステムによって、前記比較に少なくとも部分的に基づいて、前記認証状態を更新することとをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
定期的にかつ前記コンピューティングシステムによって、前記共有キャッシュの前記認証状態をリセットすることをさらに含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
実行時、1つまたは複数のプロセッサに操作を実行させる命令を格納する非一時的コンピュータ可読記憶媒体であって、前記操作は、
共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを取得することであって、前記共有キャッシュキーは、操作リクエストに関連付けられている、前記取得することと、
前記操作リクエストに関連付けられた直接コンパイル済みリソースを取得することと、
前記プリコンパイル済み共有キャッシュエントリと前記直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて
、共有キャッシュの1つまたは複数の部分を認証することとを含む、非一時的コンピュータ可読記憶媒体。
【請求項11】
前記操作は、
前記操作リクエストに関連付けられ、ローカルでキャッシュされたプリコンパイル済みリソースが存在しないことを決定することをさらに含む、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項12】
前記操作リクエストに関連付けられた直接コンパイル済みリソースを取得することは、
実行時コンパイラから、前記直接コンパイル済みリソースを取得することを含む、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項13】
前記比較が、前記直接コンパイル済みリソースのフィンガープリントと、前記プリコンパイル済み共有キャッシュエントリのフィンガープリントとの比較を含む、請求項10に記載のコンピュータ可読記憶媒体。
【請求項14】
前記比較に少なくとも部分的に基づいて前記共有キャッシュを認証することは、
前記共有キャッシュの1つまたは複数の共有キャッシュエントリの有効性を示す複数の比較を更新することを含み、前記複数の比較は適格閾値に対応する、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項15】
前記操作は、
前記複数の比較が前記適格閾値を満たすことに少なくとも部分的に基づいて、前記共有キャッシュを認証することを決定することをさらに含む、請求項14に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
前記比較に少なくとも部分的に基づいて前記共有キャッシュを認証することは、
前記プリコンパイル済み共有キャッシュエントリが無効であると決定することに少なくとも部分的に基づいて、前記共有キャッシュの前記1つまたは複数の部分を非アクティブ化することを含む、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記操作は、
前記共有キャッシュの前記1つまたは複数の部分についての認証状態を維持することと、
前記比較に少なくとも部分的に基づいて、前記認証状態を更新することとをさらに含む、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
1つまたは複数のプロセッサと、
実行時、前記1つまたは複数のプロセッサに操作を実行させる命令を含む1つまたは複数の非一時的コンピュータ可読記憶媒体とを含み、前記操作は、
リクエストされた操作を処理する計算ノードから、共有キャッシュからのプリコンパイル済み共有キャッシュエントリのリクエストを受信することと、
(i)前記計算ノードで前記リクエストされた操作を実行するための直接コンパイル済みリソースと、(ii)前記プリコンパイル済み共有キャッシュエントリとの比較に少なくとも部分的に基づいて、前記共有キャッシュの認証ステータスを取得することであって、前記認証ステータスは、前記プリコンパイル済み共有キャッシュエントリの前記計算ノードとの非互換性を示す、前記取得することと、
前記認証ステータスに少なくとも部分的に基づいて、前記計算ノードからの1つまたは複数のフューチャーリクエストのために前記共有キャッシュを非アクティブ化することとを含む、共有キャッシュ検証システム。
【請求項19】
前記直接コンパイル済みリソースが、前記計算ノードのためにコンパイルされた、請求項18に記載のシステム。
【請求項20】
前記比較が、前記直接コンパイル済みリソースのフィンガープリントと、前記プリコンパイル済み共有キャッシュエントリのフィンガープリントとの比較を含む、請求項19に記載のシステム。
【請求項21】
共有キャッシュから共有キャッシュエントリを取得するためのコンピュータ実装方法であって、
1つまたは複数のプロセッサを含むローカルコンピューティングシステムによって、操作リクエストを取得することと、
前記ローカルコンピューティングシステムによって、前記操作リクエストを満たすためにローカルキャッシュにプリコンパイル済みリソースが存在しないことを決定することと、
前記ローカルコンピューティングシステムによって及び共有キャッシュシステムから、共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを受信することであって、前記共有キャッシュキーは前記操作リクエストに関連付けられている、前記受信することとを含み、
前記共有キャッシュシステムは、前記プリコンパイル済み共有キャッシュエントリが前記ローカルコンピューティングシステムと互換性があることを示す認証ステータスに関連付けられており、前記認証ステータスは、前記共有キャッシュシステムによって格納されたプリコンパイル済みリソースを、実行時コンパイル済みリソースと比較することによって決定される、前記コンピュータ実装方法。
【請求項22】
共有キャッシュシステムによって及び前記ローカルコンピューティングシステムから、前記操作リクエストを満たすためのプリコンパイル済みリソースのクエリを受信することと、
前記共有キャッシュシステムによって及び前記クエリに関連付けられた共有キャッシュキーを使用して、前記プリコンパイル済み共有キャッシュエントリを取得することと、
前記共有キャッシュシステムによって、前記プリコンパイル済み共有キャッシュエントリの前記認証ステータスを決定することと、
前記共有キャッシュシステムによって及び前記ローカルコンピューティングシステムへ、前記プリコンパイル済み共有キャッシュエントリを返すこととを含む、請求項21に記載のコンピュータ実装方法。
【請求項23】
前記共有キャッシュによって、前記プリコンパイル済み共有キャッシュエントリについての前記認証ステータスを決定することは、
前記共有キャッシュシステムによって、前記操作リクエストに関連付けられた直接コンパイル済みリソースを取得することと、
前記共有キャッシュシステムによって、前記プリコンパイル済み共有キャッシュエントリと前記直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて、前記共有キャッシュの1つまたは複数の部分を認証することとを含む、請求項22に記載のコンピュータ実装方法。
【請求項24】
前記直接コンパイル済みリソースを取得することは、
実行時コンパイラで前記リソースをコンパイルすることを含む、請求項23に記載のコンピュータ実装方法。
【請求項25】
前記共有キャッシュシステムによって及び異なるローカルコンピューティングシステムから、前記異なるローカルコンピューティングシステムによってコンパイルされたリソースを受信することと、
前記共有キャッシュシステムによって、前記リソースを前記プリコンパイル済み共有キャッシュエントリとして格納することとを含む、請求項21に記載のコンピュータ実装方法。
【請求項26】
前記共有キャッシュシステムによって、前記共有キャッシュキーを生成して、前記プリコンパイル済み共有キャッシュエントリの取得を可能にすることを含む、請求項25に記載のコンピュータ実装方法。
【請求項27】
前記共有キャッシュシステムによって、1つまたは複数のトリガイベントに基づいて前記認証ステータスを更新することを含む、請求項21に記載のコンピュータ実装方法。
【請求項28】
前記1つまたは複数のトリガイベントが、設定された期間、設定された数のキャッシュヒット、またはヒット率閾値のうちの少なくとも1つを含む、請求項27に記載のコンピュータ実装方法。
【請求項29】
前記1つまたは複数のトリガイベントが、新しい計算ノードからのクエリを含む、請求項27に記載のコンピュータ実装方法。
【請求項30】
実行時、1つまたは複数のプロセッサに操作を実行させる命令を格納する非一時的コンピュータ可読記憶媒体であって、前記操作は、
1つまたは複数のプロセッサを含むローカルコンピューティングシステムによって、操作リクエストを取得することと、
前記ローカルコンピューティングシステムによって、前記操作リクエストを満たすためにローカルキャッシュにプリコンパイル済みリソースが存在しないことを決定することと、
前記ローカルコンピューティングシステムによって及び共有キャッシュシステムから、共有キャッシュキーに対応するプリコンパイル済み共有キャッシュエントリを受信することであって、前記共有キャッシュキーは前記操作リクエストに関連付けられている、前記受信することとを含み、
前記共有キャッシュシステムは、前記プリコンパイル済み共有キャッシュエントリが前記ローカルコンピューティングシステムと互換性があることを示す認証ステータスに関連付けられており、前記認証ステータスは、前記共有キャッシュシステムによって格納されたプリコンパイル済みリソースを、実行時コンパイル済みリソースと比較することによって決定される、前記非一時的コンピュータ可読記憶媒体。
【請求項31】
前記操作は、
共有キャッシュシステムによって及び前記ローカルコンピューティングシステムから、前記操作リクエストを満たすためのプリコンパイル済みリソースのクエリを受信することと、
前記共有キャッシュシステムによって及び前記クエリに関連付けられた共有キャッシュキーを使用して、前記プリコンパイル済み共有キャッシュエントリを取得することと、
前記共有キャッシュシステムによって、前記プリコンパイル済み共有キャッシュエントリの前記認証ステータスを決定することと、
前記共有キャッシュシステムによって及び前記ローカルコンピューティングシステムへ、前記プリコンパイル済み共有キャッシュエントリを返すこととを含む、請求項30に記載の非一時的コンピュータ可読記憶媒体。
【請求項32】
前記共有キャッシュシステムによって、前記プリコンパイル済み共有キャッシュエントリについての前記認証ステータスを決定することは、
前記共有キャッシュシステムによって、前記操作リクエストに関連付けられた直接コンパイル済みリソースを取得することと、
前記共有キャッシュシステムによって、前記プリコンパイル済み共有キャッシュエントリと前記直接コンパイル済みリソースとの比較に少なくとも部分的に基づいて、共有キャッシュの1つまたは複数の部分を認証することとを含む、請求項31に記載の非一時的コンピュータ可読記憶媒体。
【請求項33】
前記直接コンパイル済みリソースを取得することは、
実行時コンパイラで前記リソースをコンパイルすることを含む、請求項32に記載の非一時的コンピュータ可読記憶媒体。
【請求項34】
前記操作は、
前記共有キャッシュシステムによって及び異なるローカルコンピューティングシステムから、前記異なるローカルコンピューティングシステムによってコンパイルされたリソースを受信することと、
前記共有キャッシュシステムによって、前記リソースを前記プリコンパイル済み共有キャッシュエントリとして格納することとを含む、請求項30に記載の非一時的コンピュータ可読記憶媒体。
【請求項35】
前記操作は、
前記共有キャッシュシステムによって、前記共有キャッシュキーを生成して、前記プリコンパイル済み共有キャッシュエントリの取得を可能にすることを含む、請求項30に記載の非一時的コンピュータ可読記憶媒体。
【請求項36】
前記操作は、
前記共有キャッシュシステムによって、1つまたは複数のトリガイベントに基づいて前記認証ステータスを更新することを含む、請求項30に記載の非一時的コンピュータ可読記憶媒体。
【請求項37】
前記1つまたは複数のトリガイベントが、設定された期間、設定された数のキャッシュヒット、またはヒット率閾値のうちの少なくとも1つを含む、請求項36に記載の非一時的コンピュータ可読記憶媒体。
【請求項38】
前記1つまたは複数のトリガイベントが、新しい計算ノードからのクエリを含む、請求項36に記載の非一時的コンピュータ可読記憶媒体。
【請求項39】
共有キャッシュシステムであって、前記共有キャッシュシステムは1つまたは複数の非一時的コンピュータ可読記憶媒体を含み、前記非一時的コンピュータ可読記憶媒体は、
1つまたは複数のローカルコンピューティングシステムで実行するためのコンパイル済みリソースと、
共有キャッシュシステム命令であって、前記共有キャッシュシステムの1つまたは複数のプロセッサによって実行されるとき、前記共有キャッシュシステムに、
ローカルコンピューティングシステムからプリコンパイル済みリソースのクエリを受信することと、
前記クエリに関連付けられた共有キャッシュキーを使用して、前記プリコンパイル済み共有キャッシュエントリを取得することと、
前記プリコンパイル済み共有キャッシュエントリの認証ステータスを決定することであって、前記認証ステータスは、前記プリコンパイル済み共有キャッシュエントリが前記ローカルコンピューティングシステムと互換性があることを示し、前記認証ステータスは、前記共有キャッシュシステムによって格納されたプリコンパイル済みリソースを実行時コンパイル済みリソースと比較することによって決定される、前記決定することと、
前記プリコンパイル済み共有キャッシュエントリを返すこととを行わせる前記共有キャッシュシステム命令とを格納する、前記共有キャッシュシステムと、
前記1つまたは複数のローカルコンピューティングシステムであって、それぞれ各ローカルコンピューティングシステムは、1つまたは複数の各非一時的コンピュータ可読記憶媒体を含み、前記非一時的コンピュータ可読記憶媒体は、
各ローカルキャッシュと、
ローカルコンピューティングシステム命令であって、前記各ローカルコンピューティングシステムの1つまたは複数のプロセッサによって実行されるとき、前記各ローカルコンピューティングシステムに、
操作リクエストを取得することと、
前記操作リクエストを満たすために、前記各ローカルキャッシュにプリコンパイル済みリソースが存在しないことを決定することと、
前記共有キャッシュシステムのクエリを実行し、プリコンパイル済み共有キャッシュエントリを取得することとを行わせる前記ローカルコンピューティングシステム命令とを格納する、前記1つまたは複数のローカルコンピューティングシステムとを含む、コンピューティングシステム。
【請求項40】
前記共有キャッシュシステム命令は、前記共有キャッシュシステムの前記1つまたは複数のプロセッサによって実行されるとき、前記共有キャッシュシステムに、前記1つまたは複数のローカルコンピューティングシステムから受信したコンパイル済みリソースを格納させて、認証させる、請求項39に記載のコンピューティングシステム。
【国際調査報告】