IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌビディア コーポレーションの特許一覧

特開2022-61452ヒューマン・インターフェイス・デバイスのレイテンシ決定
<>
  • 特開-ヒューマン・インターフェイス・デバイスのレイテンシ決定 図1A
  • 特開-ヒューマン・インターフェイス・デバイスのレイテンシ決定 図1B
  • 特開-ヒューマン・インターフェイス・デバイスのレイテンシ決定 図2A
  • 特開-ヒューマン・インターフェイス・デバイスのレイテンシ決定 図2B
  • 特開-ヒューマン・インターフェイス・デバイスのレイテンシ決定 図3
  • 特開-ヒューマン・インターフェイス・デバイスのレイテンシ決定 図4
  • 特開-ヒューマン・インターフェイス・デバイスのレイテンシ決定 図5
  • 特開-ヒューマン・インターフェイス・デバイスのレイテンシ決定 図6
  • 特開-ヒューマン・インターフェイス・デバイスのレイテンシ決定 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022061452
(43)【公開日】2022-04-18
(54)【発明の名称】ヒューマン・インターフェイス・デバイスのレイテンシ決定
(51)【国際特許分類】
   G06F 13/10 20060101AFI20220411BHJP
【FI】
G06F13/10 340Z
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021068995
(22)【出願日】2021-04-15
(31)【優先権主張番号】17/064,452
(32)【優先日】2020-10-06
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ZIGBEE
2.TENSORFLOW
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】デイビッド リム
(72)【発明者】
【氏名】シェン - リー リン
(72)【発明者】
【氏名】トム ジョセフ デニス バーブーア
(72)【発明者】
【氏名】ゲリット スラーベンバーグ
(72)【発明者】
【氏名】セス シュナイダー
(57)【要約】
【課題】システムのエンド・ツー・エンド・レイテンシの決定において、ヒューマン・インターフェイス・デバイス(HID)のレイテンシについて説明する。
【解決手段】HIDにおいて入力が受信される場合、接続されたデバイスに入力が到達するための時間量が、HIDによって計算され、接続されたデバイスにHIDデバイスによって送信されるデータ・パケットに含まれる。エンド・ツー・エンド・レイテンシ決定への周辺レイテンシの追加は、本システムのより包括的なレイテンシ結果をもたらし、HIDの周辺レイテンシが、エンド・ツー・エンド・レイテンシへの無視できない貢献を有すると決定された場合、新しいHID構成要素が実装され、HID構成要素に関連する構成設定が更新され、及び/又は他のアクションが、本システムの全レイテンシへの周辺レイテンシの貢献を低減するために取られる。
【選択図】図1A
【特許請求の範囲】
【請求項1】
コンピューティング・デバイスによって、前記コンピューティング・デバイスに通信可能に結合された入力デバイスからのデータ・パケットの受信を決定するステップと、
前記コンピューティング・デバイスによって前記データ・パケットから、前記入力デバイスにおいて受信された入力に関連するレイテンシ値を示すデータを取得するステップであって、前記レイテンシ値が、前記入力が前記入力デバイスにおいて受信されることと前記入力を表す入力データが前記コンピューティング・デバイスによって受信されることとの間の時間量に対応する、ステップと
を含む、方法。
【請求項2】
前記レイテンシ値が、第1のレイテンシ値であり、前記方法が、
前記入力データが前記コンピューティング・デバイスによって受信されることとディスプレイが前記入力データを反映することとの間の別の時間量に対応する第2のレイテンシ値を決定するステップと、
前記第1のレイテンシ値及び前記第2のレイテンシ値に少なくとも部分的に基づいて、エンド・ツー・エンド・レイテンシ値を計算するステップと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のレイテンシ値、前記第2のレイテンシ値、又は前記エンド・ツー・エンド・レイテンシ値のうちの少なくとも1つを表すデータを表示するステップをさらに含む、請求項2に記載の方法。
【請求項4】
前記データを取得するステップが、前記データ・パケットの前記受信を決定するステップに応答して前記データ・パケットを傍受するステップを含む、請求項1に記載の方法。
【請求項5】
前記コンピューティング・デバイスが、ディスプレイ・デバイスを含み、前記ディスプレイ・デバイスが、前記入力デバイスの接続タイプのパススルー機能性を含む、請求項1に記載の方法。
【請求項6】
前記データを取得するステップが、前記ディスプレイ・デバイスのフィールド・プログラマブル・ゲート・アレイ(FPGA)を使用して前記レイテンシ値を計算するステップを含む、請求項5に記載の方法。
【請求項7】
前記入力デバイスから受信された各データ・パケットが、前記レイテンシ値に対応するデータ・フィールドを含み、前記データが、前記データ・パケット内の前記データ・フィールドのインスタンスから取得される、請求項1に記載の方法。
【請求項8】
前記入力デバイスの構成中に、前記入力デバイスに対応するレポート記述子を表すデータが受信され、前記レポート記述子が、各データ・パケット内の前記データ・フィールドの位置を識別する、請求項7に記載の方法。
【請求項9】
入力の受信に応答して、前記入力が受信された時間に対応する第1のタイムスタンプを生成するステップと、
前記入力を表す入力データをコンピューティング・デバイスに送信するステップと、
前記送信に少なくとも部分的に基づいて、前記入力データが前記コンピューティング・デバイスによって受信された時間に対応する第2のタイムスタンプを生成するステップと、
前記第1のタイムスタンプ及び前記第2のタイムスタンプに少なくとも部分的に基づいて、周辺レイテンシ値を計算するステップと、
前記周辺レイテンシ値を含むようにデータ・パケットを生成するステップと、
前記データ・パケットを前記コンピューティング・デバイスに送信するステップと
を含む、方法。
【請求項10】
前記方法が、前記コンピューティング・デバイスに通信可能に結合されたヒューマン・インターフェイス・デバイス(HID)によって実行される、請求項9に記載の方法。
【請求項11】
前記周辺レイテンシ値を計算するステップが、前記第1のタイムスタンプと前記第2のタイムスタンプとの差を決定するステップを含み、前記周辺レイテンシ値が、前記差に等しい、請求項9に記載の方法。
【請求項12】
構成中に、レポート記述子を表すデータを送信するステップであって、前記レポート記述子が、各データ・パケットが周辺レイテンシ値のために指定されたデータ・フィールドを含むという指示を含む、ステップ
をさらに含む、請求項9に記載の方法。
【請求項13】
前記データ・パケットを生成するステップが、前記データ・フィールドに前記周辺レイテンシ値を追加するステップを含む、請求項12に記載の方法。
【請求項14】
前記方法が、コンピューティング・システムの一部であるヒューマン・インターフェイス・デバイス(HID)によって実行され、前記周辺レイテンシ値が、前記コンピューティング・システムのエンド・ツー・エンド・レイテンシを決定するための複数のレイテンシ構成要素のうちの1つのレイテンシ構成要素として使用される、請求項9に記載の方法。
【請求項15】
システムであって、
1つ以上のプロセッサと、
命令を記憶する1つ以上のメモリ・デバイスであって、前記命令は、前記1つ以上のプロセッサによって実行される場合に、前記1つ以上のプロセッサに、
コンピューティング・デバイスに通信可能に結合された入力デバイスからのデータ・パケットの受信を決定するステップ、
前記データ・パケットから、前記入力デバイスにおいて受信された入力に関連する周辺レイテンシ値を示すデータを取得するステップであって、前記周辺レイテンシ値が、前記入力が前記入力デバイスにおいて受信されることと前記入力を表す入力データが前記コンピューティング・デバイスによって受信されることとの間の時間量に対応する、ステップ、及び、
前記周辺レイテンシ値に少なくとも部分的に基づいて、前記システムのエンド・ツー・エンド・レイテンシ値を決定するステップ
を含む動作を実行させる、1つ以上のメモリ・デバイスと
を備える、システム。
【請求項16】
ディスプレイ・デバイス、
自律又は半自律機械の制御システム、
シミュレーション動作を実行するためのシステム、
深層学習動作を実行するためのシステム、
エッジ・デバイスを使用して実装されたシステム、
ロボットを使用して実装されたシステム、
1つ以上の仮想機械(VM:virtual machine)を組み込むシステム、
データ・センタにおいて少なくとも部分的に実装されたシステム、又は、
クラウド・コンピューティング資源を使用して少なくとも部分的に実装されたシステム
のうちの少なくとも1つに含まれる、請求項15に記載のシステム。
【請求項17】
前記動作が、
前記入力データが前記コンピューティング・デバイスによって受信されることとディスプレイが前記入力データを反映することとの間の別の時間量に対応するレイテンシ値を決定するステップ
をさらに含み、
前記エンド・ツー・エンド・レイテンシ値を決定するステップがさらに、前記レイテンシ値に少なくとも部分的に基づく、請求項15に記載のシステム。
【請求項18】
前記動作が、前記周辺レイテンシ値、前記レイテンシ値、又は前記エンド・ツー・エンド・レイテンシ値のうちの少なくとも1つを表すデータを表示するステップをさらに含む、請求項16に記載のシステム。
【請求項19】
前記データを取得するステップが、前記データ・パケットの前記受信を決定するステップに応答して前記データ・パケットを傍受するステップを含む、請求項15に記載のシステム。
【請求項20】
前記入力デバイスから受信される各データ・パケットが、前記周辺レイテンシ値に対応するデータ・フィールドを含み、前記データが、前記データ・パケット内の前記データ・フィールドのインスタンスから取得される、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2020年6月4日に出願された米国非仮出願第16/893,327号、2020年5月22日に出願された米国仮出願第63,029,343号、及び2020年2月4日に出願された米国仮出願第62/970,096号に関し、これらの各々は、その全体が参照により本明細書に組み込まれている。
【背景技術】
【0002】
高性能アプリケーション、たとえば、ゲーム・アプリケーション、仮想現実(VR:virtual reality)アプリケーション、拡張現実(AR:augmented reality)アプリケーション、及び/又は複合現実(MR:mixed reality)アプリケーション、の数が増えるにつれて、これらのアプリケーションを実行するコンピューティング・システムの性能は、より重要になる。たとえば、ファースト・パーソン・シューター(FPS:first person shooter)タイプ・ゲームを実行するために、コンピューティング・システム、たとえば、ゲーム機、パーソナル・コンピュータ、クラウド・ゲーム・システムなどは、システムのエンド・ツー・エンド・レイテンシが有意義なユーザ体験を提供するレベルにあるように、構成されるべきである。コンピューティング・システム内のレイテンシを理解及び説明するために、従来の技法は、単一のエンド・ツー・エンド・レイテンシ値を測定するためのシステムを実装してきた。たとえば、高速カメラなどのカスタマイズされたハードウェア構成要素が、入力イベントが生じたのを検出するために(たとえば、同じものを備えた周辺デバイスでLED光インジケータを検出することによって)、表示イベントが生じたのを検出するために、及びその2つの間の時間差又はレイテンシを(たとえば、手動で)計算するために、実装され得る。しかしながら、エンド・ツー・エンド・レイテンシ測定のこのプロセスは、特殊機器、たとえば、高速カメラ及び視覚入力インジケータを有する周辺デバイスを必要とし、一方でまた、単一のエンド・ツー・エンド・レイテンシ値しか生み出さない。単一レイテンシ値の欠点は、様々な要因がシステムのエンド・ツー・エンド・レイテンシ、たとえば、周辺レイテンシ、アプリケーション・レイテンシ、レンダリング・レイテンシ、及び/又は表示レイテンシ、に貢献し得るということである。したがって、エンド・ツー・エンド・システム・レイテンシへのこれらの各要因の個々の貢献を知ることなしに、構成設定更新、システムのハードウェア及び/又はソフトウェアへの必要な変更、及び/又はシステムのエンド・ツー・エンド・レイテンシを低減するために取られ得る他のアクションを決定することは、難しいことが判明し得る。
【発明の概要】
【0003】
本開示の実施例は、エンド・ツー・エンド・システム・レイテンシ決定においてヒューマン・インターフェイス・デバイス(HID:human interface device)を説明することに関する。HIDデバイスによって少なくとも部分的に生成及び送信されるデータを使用してHIDのレイテンシ貢献を決定する、システム及び方法が、開示される。たとえば、入力が受信されるとき、接続されたデバイス、たとえば、パーソナル・コンピュータ(PC:personal computer)、ディスプレイ(たとえば、パススルー・ユニバーサル・シリアル・バス(USB:universal serial bus)ポートを実装するディスプレイ)など、に入力を表すデータが到達するのに要する時間の量(たとえば、周辺レイテンシ)が、HIDによって計算され得、接続されたデバイスにHIDデバイスによって送信されるデータ・パケットに含まれ得る。
【0004】
したがって、従来のシステムとは対照的に、システムのエンド・ツー・エンド・レイテンシを計算するために特殊ハードウェアは必要とされず、エンド・ツー・エンド・レイテンシへの個々の貢献が、より粒度の細かいレベルで、たとえば、HIDデバイスによって計算されるものとしての周辺レイテンシを含むように、計算され得る。2020年6月4日に出願され、参照により本明細書に組み込まれている米国非仮出願第16/893,327号などに記載されたエンド・ツー・エンド・レイテンシ決定システムにおいて実装されるとき、エンド・ツー・エンド・レイテンシ決定への周辺レイテンシの追加は、より包括的な結果をもたらし得る。たとえば、入力が接続されたデバイスによって受信されるときから入力が表示の変化をもたらすまでのレイテンシを決定することに加えて、周辺レイテンシは、物理入力がHIDによって登録されることから接続されたデバイスにおける入力データの受信までの付加的な時間の量を含み得る。したがって、HIDの周辺レイテンシが、エンド・ツー・エンド・レイテンシへの無視できない貢献を有すると決定された場合、新しいHID構成要素が実装され得る、HID構成要素に関連する構成設定(たとえば、ポーリング・レート)が更新され得る、及び/又は、他のアクションが、システムのエンド・ツー・エンド・レイテンシへの周辺レイテンシの貢献を低減するために、取られ得る。
【0005】
システムのエンド・ツー・エンド・レイテンシは、システムのディスプレイ・デバイスによって、実施例において、計算され得る。たとえば、ディスプレイ・デバイス内に存在するプロセッサは、周辺レイテンシ、アプリケーション・レイテンシ、レンダリング・レイテンシ、表示レイテンシ、及び/又は他のレイテンシ貢献においてファクタリングすることによってエンド・ツー・エンド・レイテンシを計算するために使用され得る。そのような一実施例において、ディスプレイ・デバイスは、HIDの接続タイプ(たとえば、ユニバーサル・シリアル・バス(USB)、シリアル・ポート、パラレル・ポート、イーサネット(登録商標)など)のパススルー機能性を含むことができ、HIDによって送信されるデータ・パケットからの、ディスプレイ・デバイスを介する、コンピューティング・デバイス(たとえば、ゲーム機、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレットなど)への周辺レイテンシ・データを傍受することができる(たとえば、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)などの傍受デバイスを使用して)。したがって、ディスプレイ・デバイスのプロセッサは、アプリケーションを実行する特定のタイプのコンピューティング・デバイスにとらわれないシステムのエンド・ツー・エンド・レイテンシを計算するために使用され得、それによって、エンド・ツー・エンド・レイテンシ決定システムのより普遍的な適用可能性を可能にする。
【0006】
エンド・ツー・エンド・システム・レイテンシ決定においてヒューマン・インターフェイス・デバイスについて説明するための本システム及び方法について、以下のような添付の図面を参照して、詳しく後述する。
【図面の簡単な説明】
【0007】
図1A】本開示のいくつかの実施例による、エンド・ツー・エンド・レイテンシ決定システムのブロック図である。
図1B】本開示のいくつかの実施例による、エンド・ツー・エンド・レイテンシ決定システムの例示的構成のブロック図である。
図2A】本開示のいくつかの実施例による、ヒューマン・インターフェイス・デバイスに対応するレポート記述子の図である。
図2B】本開示のいくつかの実施例による、ヒューマン・インターフェイス・デバイスに対応するデータ・パケットの例示的データ・フィールドの図である。
図3】本開示のいくつかの実施例による、周辺レイテンシ値を含むようにデータ・パケットを生成するための方法の流れ図である。
図4】本開示のいくつかの実施例による、ヒューマン・インターフェイス・デバイスから受信されたデータ・パケットから周辺レイテンシを決定するための方法の流れ図である。
図5】本開示のいくつかの実施例の実装に使用するのに適した例示的コンテンツ・ストリーミング・システムのブロック図である。
図6】本開示のいくつかの実施例の実装に使用するのに適した例示的コンピューティング・デバイスのブロック図である。
図7】本開示のいくつかの実施例の実装に使用するのに適した例示的データ・センタのブロック図である。
【発明を実施するための形態】
【0008】
エンド・ツー・エンド・システム・レイテンシ決定においてヒューマン・インターフェイス・デバイス(HID)について説明することに関連する、システム及び方法が、開示される。本開示は、HIDとしてのコンピュータ・マウスに関連して主に説明されているが、これは限定を意図していない。本明細書に記載のHIDデバイス・レイテンシ決定は、任意のタイプのHIDデバイス、たとえば、コンピュータ・マウス、キーボード、コントローラ・デバイス、ゲーム・パッド、ジョイスティック、リモート、マイクロフォン、軌道パッド、仮想現実(VR)ヘッドセット、拡張現実(AR)ヘッドセット又は眼鏡類、複合現実(MR)ヘッドセット又は眼鏡類、ディスプレイ、タッチスクリーン・ディスプレイ、バーコード・リーダ、画像スキャナ、カメラ(たとえば、ウェブカメラ、デジタル・カメラなど)、ライト・ペン、ハンドル、スキャナ、及び/又は他のタイプの周辺又はHIDデバイスに対応し得る。加えて、本開示は、ゲームの実装形態に関して主に説明されているが、これは限定を意図していない。たとえば、周辺デバイス・レイテンシは、任意のタイプのアプリケーション、たとえば、ゲーム・アプリケーション、ストリーミング・アプリケーション、コンピュータ支援設計(CAD:computer aided design)アプリケーション、ビデオ、写真、又は音声編集アプリケーション、VR、AR及び/又はMRアプリケーション、ビデオ会議アプリケーション、ロボット工学アプリケーション、地上車及び/又は航空機アプリケーション(たとえば、自律、半自律、運転者支援型など)、シミュレーション・アプリケーション、及び/又は他のアプリケーション・タイプ、に関してレイテンシを計算するために使用され得る。本明細書に記載のシステム及び方法は、ローカル・コンピューティング・システム、クラウド・コンピューティング・システム、又はその組合せにおいて実装され得る。HID間又は周辺デバイス間の接続は、ワイヤード接続、ワイヤレス接続(たとえば、ワイヤレス送受信器を使用する)、又はその組合せを含み得る。
【0009】
図1Aを参照すると、図1Aは、本開示のいくつかの実施例による、エンド・ツー・エンド・レイテンシ決定システム100(或いは「システム100」と本明細書で称される)のブロック図である。本明細書に記載のこの及び他の配列は単に実例として説明されていることを理解されたい。他の配列及び要素(たとえば、機械、インターフェイス、機能、順番、機能のグループなど)が、示されているものに加えて又はその代わりに使用され得、いくつかの要素は、ともに省略され得る。さらに、本明細書に記載の要素の多数は、個別の若しくは分散された構成要素として又は他の構成要素と併せて、及び任意の適した組合せ及び場所で実装され得る機能エンティティである。エンティティによって実行されているものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって、実施され得る。たとえば、様々な機能は、メモリに記憶された命令を実行するプロセッサによって実施され得る。いくつかの実施例において、システム100は、図6の例示的コンピューティング・デバイス600に関して本明細書で説明されているのと類似の構成要素、特徴、及び/又は機能性を使用して、実行され得る。実施例において、システム100は、1つ又は複数のデータ・センタ(又はその構成要素、特徴、及び/又は機能性)、たとえば、図7の例示的データ・センタ700、を使用し得るクラウド・コンピューティング・アーキテクチャの一部でもよい。さらに、いくつかの実施例において、たとえば、システム100が、コンテンツ・ストリーミング・システム(たとえば、ゲーム・ストリーミング、AR/VRストリーミング、ビデオ・ストリーミング、ビデオ会議など)を含む場合、システム100は、図5の例示的コンテンツ・ストリーミング・システム500に関して本明細書で説明されている類似の構成要素、特徴、及び/又は機能性を含み得る。
【0010】
システム100は、1つ若しくは複数のコンピューティング・デバイス102及び/又は1つ若しくは複数のヒューマン・インターフェイス・デバイス(HID)104を含み得る。コンピューティング・デバイス102は、図5のコンテンツ・サーバ502及び/又はクライアント・デバイス504、図6の例示的コンピューティング・デバイス600、図7の例示的データ・センタ700、及び/又は他のコンピューティング・デバイス・タイプに関して説明されているコンピューティング・デバイスのタイプのうちの1つ又は複数を含み得るが、これらに限定されない。たとえば、コンピューティング・デバイス102は、ラップトップ、デスクトップ、ディスプレイ・デバイス、ゲーム機、VR及び/又はARシステム、タブレット、スマート・フォン、クラウド・コンピューティング・システム、仮想機械、別のコンピューティング・デバイス・タイプ、或いはその組合せを含み得る。
【0011】
本明細書に記載のように、HID104は、図5の入力デバイス526のうちの1つ若しくは複数、図6の入力/出力(I/O:input/ouput)デバイス614のうちの1つ若しくは複数、及び/又は1つ若しくは複数の他のHIDデバイス・タイプを含み得るが、これらに限定されない。たとえば、HID104は、コンピュータ・マウス、キーボード、コントローラ、ゲーム・パッド、ジョイスティック、リモート、マイクロフォン、軌道パッド、仮想現実(VR)ヘッドセット、拡張現実(AR)ヘッドセット若しくは眼鏡類、複合現実(MR)ヘッドセット若しくは眼鏡類、ディスプレイ、タッチスクリーン・ディスプレイ、バーコード・リーダ、画像スキャナ、カメラ(たとえば、ウェブカメラ、デジタル・カメラなど)、ライト・ペン、ハンドル、スキャナ、別のタイプの周辺若しくはHIDデバイス、又はその組合せを含み得る。
【0012】
コンピューティング・デバイス102は、ディスプレイ106を含み得る。たとえば、ディスプレイ106は、図5のディスプレイ524及び/又は図6のプレゼンテーション構成要素618と類似の構成要素、特徴、及び/又は機能性を含み得る。いくつかの実施例において、ディスプレイ106は、実施例において、タッチスクリーン・ディスプレイを含み得、システム100のHID104に対応し得る。ディスプレイ106は、実施例において、システム100のエンド・ツー・エンド・レイテンシを決定するための1つ又は複数の構成要素を含み得る。たとえば、図1Bのシステム100A- たとえば、図1Aのエンド・ツー・エンド・レイテンシ決定システム100の非限定的例示的実施例- に関して、ディスプレイ106は、中央処理装置150、フィールド・プログラマブル・ゲート・アレイ(FPGA)154、及び/又は、本明細書に記載のものを含むがこれらに限定されない他の構成要素を含み得る。そのような実施例において、実装されているコンピューティング・デバイス102のタイプにとらわれず、レイテンシが決定され得るように、ディスプレイ106は、システム100Aのエンド・ツー・エンド・レイテンシを決定するために使用され得る。たとえば、ディスプレイ106は、コンピューティング・デバイス102がゲーム機である場合に、システム100Aのエンド・ツー・エンド・レイテンシを決定することができ、コンピューティング・デバイス102がデスクトップ・コンピュータである場合にもまた、エンド・ツー・エンド・レイテンシを決定することができる。同様に、コンピューティング・デバイス102及び/又はその構成要素、特徴、及び/又は機能性が、異なるプロバイダ又は企業によって製造又は提供される場合、ディスプレイ106は、システム100Aのエンド・ツー・エンド・レイテンシをやはり正確に決定することができる。したがって、第1のコンピューティング・デバイス102は、第1の企業によって製造されたグラフィックス・プロセッシング・ユニット(GPU:graphics processing unit)132を含み、第2のコンピューティング・デバイス102は、第2の企業によって製造されたGPU132を含む場合、エンド・ツー・エンド・レイテンシは、第1の及び第2のコンピューティング・デバイス102の両方について正確に決定され得る。システム100Aは、参照によりその全部が本明細書に組み込まれている、2020年6月4日に出願された、米国非仮出願第16/893,327号に記載のものと類似の構成要素、特徴、及び/又は機能性を、いくつかの実施例において、含み得る。
【0013】
パケット・インターセプタ108は、HID104から受信されたパケットを傍受することができる。たとえば、HID104のパケット・ジェネレータ124は、HID104の周辺(又はHID)レイテンシ情報を表すデータを含むパケットを生成することができ、送受信器120(送信器、受信器、及び/又は送受信器を含み得る)は、パケットをコンピューティング・デバイス102に送信することができる- たとえば、ワイヤード及び/又はワイヤレス接続又は通信タイプ、たとえば、ユニバーサル・シリアル・バス(USB)、イーサネット(登録商標)、ブルートゥース(登録商標)、ブルートゥース(登録商標)・ロー・エネルギ(BLE:Bluetooth(登録商標) Low Energy)などを介して。コンピューティング・デバイス102のパケット・インターセプタ108- 及び/又はそのディスプレイ106、たとえば、パススルー機能性が実装された- は、パケットを傍受し、そこからレイテンシ情報を決定することができる。たとえば、HID104の入力受信器118によって入力が受信されるとき、周辺レイテンシ決定装置122は、コンピューティング・デバイス102への入力を表すデータ(たとえば、入力データ)を含むパケットの入力の受信から送信- たとえば、送受信器120及び/又は送受信器116(受信器、送信器、及び/又は送受信器を含み得る)を使用する- の成功までの時間量を決定することができる。この時間量は、HID104- 又はその特定の入力受信器118- の周辺レイテンシに対応し得る。
【0014】
いくつかの実例において、入力受信器118は、ボタン(たとえば、マウス・ボタン、キーボード・ボタン、リモート制御ボタン、ゲーム・コントローラ・ボタンなど)、ディスプレイ(たとえば、タッチスクリーン)、軌道パッド、運動判定デバイス(たとえば、慣性計測装置(IMU:inertial measurement unit)センサ、及び/又は、HID104の回転及び/又は移転を測定するための- たとえば、マウス、ジョイスティック、制御パッド、コントローラの移動を測定するための- 別のタイプの構成要素、特徴、及び/又は機能性など)、及び/又は別のタイプの入力受信器118を含み得る。そのようなものとして、入力受信器118は、入力を受信し、入力を表すデータを生成することができ、このデータは、パケット・ジェネレータ124によって生成される及びコンピューティング・デバイス102に送信されるパケットに含まれ得る。
【0015】
いくつかの実施例において、パケット・インターセプタ108は、パケットを傍受することができる- たとえば、周辺レイテンシ・データを含むパケットが受信されたと決定することができ、周辺レイテンシの決定においてレイテンシ決定装置110によって使用するための及び/又はシステム100のエンド・ツー・エンド・レイテンシの決定において周辺レイテンシを使用するためのパケットからのレイテンシ・データを取得又は受信することができる。したがって、パケットは、レイテンシ決定装置110以外のシステム100の他の構成要素、特徴、及び/又は機能性で使用され得(たとえば、レンダリングのためのアプリケーション状態の更新において使用するために)、パケット・インターセプタ108は、レイテンシ決定装置110(たとえば、図1BのFPGA154に関して説明されるような)によって使用するためにパケットを傍受することができる。他の実施例において、パケット・インターセプタ108は、パケットを傍受することができないことがあるが、送信において識別されるものとしてのパケットの受信器に対応し得る。たとえば、パススルー機能性が、実装されない場合、周辺レイテンシ情報を含むパケットは、HID104からコンピューティング・デバイス102に直接に又はパススルー機能性を有して、しかし傍受なしに、送信され得る。そのような実施例において、パケット・インターセプタ108は、別法として、パケット受信器108と称され得る。そのようなものとして、コンピューティング・デバイス102- 図1Bに関して説明されるような別個のデバイス、たとえばディスプレイ106、ではない- が、レイテンシ決定装置110を実行する場合、パケット受信器108が、実装され得る。
【0016】
周辺レイテンシを決定するために、周辺レイテンシ決定装置122は、入力受信器118による入力の受信及びコンピューティング・デバイス102- 及び/又はパススルー・デバイス、たとえば図1Bのディスプレイ106、による入力データを含むパケットの受信に対応するデータを分析することができる。入力の受信を決定するために、タイムスタンプが、入力の受信時に生成され得る。たとえば、マウス・ボタン、制御パッド、若しくはキーボード・ボタンが押される、ジョイスティックが操作される、マウス・カーソルが移動される、タッチパッドが触れられる、ディスプレイが触れられる若しくは押される、及び/又は別の入力タイプが受信されるとき、タイムスタンプが、HID104によって生成及び記憶され得る。加えて、入力データを含むパケット- パケット・ジェネレータ124を使用して生成されるものとしての- が、無事にコンピューティング・デバイス102によって受信される及び/又はコンピューティング・デバイス102に送信されるとき、タイムスタンプは、生成され得る。たとえば、送信及び/又は受信の成功が決定されるとき、HID104は、パケットの送信及び/又は受信の成功を決定することができ、タイムスタンプを生成することができる。別の実例として、HID104は、コンピューティング・デバイス102- 及び/又はパススルー・デバイス、たとえば、図1Bのディスプレイ106- からのリターン信号に基づいて、パケットの送信及び/又は受信の成功を決定することができる。そのような実施例において、タイムスタンプは、コンピューティング・デバイス102によって生成され得、リターン信号に含まれ得る。いずれかの実施例において、HID104は、入力の受信時間に対応するタイムスタンプと、コンピューティング・デバイス102による入力データを含むパケットの送信及び/又は受信の成功の時間に対応するタイムスタンプとを使用することができ、周辺レイテンシ決定装置122は、これらのタイムスタンプを使用してHID104の周辺レイテンシを決定することができる。たとえば、タイムスタンプ間の差が、周辺レイテンシを決定するために計算され得る。
【0017】
周辺レイテンシが決定された後は、パケット・ジェネレータ124は、周辺レイテンシ情報を含むパケットを生成することができる。パケットは、周辺レイテンシ情報を単独で含み得る、及び/又は周辺レイテンシの決定において使用される入力に対応する入力データ及び/又はその後の入力に対応する入力データを含み得る。入力データが、その後の入力に対応する場合、パケットは、周辺レイテンシが対応する入力を参照するデータを含み得る。
【0018】
HID104- たとえば、初期化中、起動時、構成中、プラグインされる又は他の方法で通信可能に結合されるとき、定期的になど- は、レポート記述子200をコンピューティング・デバイス102に送信することができる。レポート記述子200は、実装されているHID104(たとえば、タイプ、モデル、ベンダ、識別子など)、関連レイテンシ(適用可能なとき)、HID104の入力受信器の数及び/又は入力受信器のタイプ、HID104によって送信されるデータ・パケットのフォーマットを識別する情報、及び/又は他の情報を含み得る。たとえば、レポート記述子200は、HID104からのデータ・パケットのどのビット及び/又はバイトがどの情報に対応するかをコンピューティング・デバイス102に指示するデータを含み得る。そのようなものとして、HIDレポート210を表す情報を含むデータ・パケットが、コンピューティング・デバイス102によって受信されるとき、コンピューティング・デバイス102は、16個のボタンが存在し、それらのボタンに対応する入力情報の長さが8ビットであり、0又は8ビットのオフセットを有する、及び/又は0x01若しくは0x00の16進値を有することを理解している。同様に、コンピューティング・デバイス102は、X位置若しくは移転、Y位置若しくは移転、及びホイール入力情報(たとえば、HIDレポート210がマウスに対応する場合)に対応するデータ、並びにACパン情報、及びボタン・レイテンシ情報を理解し得る。これらのデータ・フィールドは、単に例示を目的としており、限定を意図していない。たとえば、ジョイスティックについて、データ・フィールドは、レイテンシ情報に加えて、X、Y移動情報及び/又はボタン入力を含み得る。ゲーム・コントローラについて、HIDレポート210内のデータ・フィールドは、ジョイスティック移動、ボタン・タイプ、及び/又はレイテンシ情報を含み得る。そのようなものとして、レポート記述子200は、コンピューティング・デバイス102- 及び/又はパススルー・デバイス、たとえば、図1Bのディスプレイ106- にそれぞれの異なるデータ・フィールドのデータ・パケットを有する位置を指示し得る。パケット・インターセプタ108(及び/又はパケット受信器108)に関して、レイテンシ・データ・フィールドに関する情報は、受信されたパケットからHID104の周辺レイテンシを決定又は取得するために使用され得る。図2Aに示すように、レポート記述子の太字の及び下線付きの部分は、HIDレポート210の周辺レイテンシ・データ・フィールドに対応し得る。そのようなものとして、従来のシステムが、別個のハードウェア- たとえば、高速カメラ及びLED光- を使用して周辺レイテンシを決定した場合に、システム100は、追加のハードウェアを必要とせずに、周辺レイテンシを決定することができ、HID104によってコンピューティング・デバイス102に送信されるデータ・パケット内の追加情報として周辺レイテンシを含み得る。
【0019】
いくつかの実施例において、周辺レイテンシ決定装置122は、コンピューティング・デバイス102によって実行され得る。たとえば、HID104のタイプ及び/又はモデルが、決定され得- たとえば、HIDに対応するレポート記述子200を使用して、この情報は、HID104の関連レイテンシ情報を決定するために使用され得る。そのようなものとして、周辺レイテンシ決定装置122は、HIDタイプ- たとえば、モデル番号、ベンダ識別子、製品識別子、シリアル・ナンバ、デバイス識別子、一意の識別子などによる- 及び関連する(たとえば、所定の)レイテンシ情報のリストを含むルックアップ・テーブル又は他のデータ表現を参照し得る。そのようなものとして、周辺レイテンシ決定装置122は、システム100のエンド・ツー・エンド・レイテンシ- 及び/又はそこへの個々の貢献- を決定するためのレイテンシ決定装置110の一部でもよい。たとえば、システムのエンド・ツー・エンド・レイテンシが、38ミリ秒(ms)であると決定され、HID104の関連レイテンシが8msである場合、レポートが、エンド・ツー・エンド・レイテンシは38msであること及びHID104はその38msに8ms貢献すること、又はレイテンシの21%はHID104に起因することを示して、レポート・ジェネレータ112によって生成され得る。この情報は、ユーザのために- たとえば、異なるタイプ又はモデルのHIDデバイスはエンド・ツー・エンド・レイテンシを減らすことになるかを決定するために- 及び/又は構成アップデータ114を使用して構成設定を更新するためのコンピューティング・デバイス102によって、有用になり得る。たとえば、所望のレイテンシが30msである場合、HID関連構成設定は、周辺レイテンシ貢献を減らすためにシステム100によって更新され得る- たとえば、自動的に、定期的に、及び/又は動的に。そのようなものとして、コンピューティング・デバイス102のポーリング・レートは、HID情報がより頻繁に受信されるように、増やされ得る。そのような実例において、周辺レイテンシが、いくつかの閾値- たとえば、8ms、12ms、15msなど- を超えると決定された場合、ポーリング・レートが更新され得る(たとえば、その後の入力の周辺レイテンシが閾値未満に下がるまで)。
【0020】
HID関連構成設定を更新することに加えて又はその代わりに、システム100は、本システムの他の構成設定を更新し得る- たとえば、自動的に、定期的に、及び/又は動的に。たとえば、システム100のフレーム・レート、リフレッシュ・レート、及び/又は画像品質が、更新され得る。別の実例として、たとえば、1つ又は複数の設定、たとえば、Vシンク(V-sync)、Gシンク(G-sync)、及び/又はディスプレイ106の他の設定、が、有効又は無効にされ得る。他の実例において、周辺レイテンシ情報が、対不正アプリケーションのために使用され得、たとえば、周辺レイテンシ情報の変化が、HID104の所定の又は学習されたレイテンシ・パターン(たとえば、レイテンシ情報の変化が閾値より大きい場合)と一致しない場合、システム100は、ユーザ又はボットが不正を働いていると決定し得る。
【0021】
いくつかの実施例において、レポート・ジェネレータ112は、要求に応じて、間隔を置いて、定期的に、自動的に、動的に、及び/又は他の方法で、レポートを生成し得る。レポートは、システム100のレイテンシに関する情報、たとえば、レイテンシの個々の構成要素及び/又はエンド・ツー・エンド・レイテンシ値を含み得る。レポート・ジェネレータ112は、経時的にレイテンシ値の変化を決定することができ、値がある特定の閾値量を超えて変動するときに、レポートを生成することができる。たとえば、周辺レイテンシが、5ms、8ms、10msなどを超えて変動する場合、レポート・ジェネレータ112は、レポートを生成することができる、及び/又はレポートの検出された変化の通知又は指示を生成及び/又は表示することができる。同様に、レイテンシ値が、閾値を上回る、又は閾値未満に下がる場合、レポート・ジェネレータ112は、レポートを生成することができる、及び/又はレイテンシ値閾値情報の通知又は指示を生成及び/又は表示することができる。この情報は、システム100の現在の性能、及び任意の構成更新はレイテンシを減らすのに役立ったか及び/又はレイテンシを増やしたかを決定する際にシステム100及び/又はユーザの役に立ち得る、及び/又は構成設定は更新される必要があるか又は更新されるべきかどうかの決定において有用になり得る。実施例において、構成アップデータ114は、レポートを使用して、構成設定を自動的に更新する及び/又はレイテンシを改善するために使用され得る推奨される更新のユーザへのプロンプト若しくは通知を生成することができる。いくつかの実施例において、ユーザは、閾値と、閾値が満たされるときに生じるべき対応する構成設定更新とを構成することができ得る。これは、周辺レイテンシ値が閾値周辺レイテンシ値を超えて増えるときに、ポーリング・レートを増やすこと、或いは、周辺レイテンシ値が閾値周辺レイテンシ値未満に減るときに、ポーリング・レートを減らすことを含み得る。もう1つの実例は、エンド・ツー・エンド・レイテンシが閾値を超えるときに、画像品質を下げること、或いは、エンド・ツー・エンド・レイテンシが閾値未満に下がるときに、画像品質を高めることを含み得る。実施例において、第1の高閾値が満たされるとき、画像品質は第1の量だけ下げられ、そして、第2の高閾値において、画像品質は、第1の高閾値においてよりも下げられる、などのように、閾値は、複数の段階を含み得る。この段階的閾値化はまた、HID関連構成設定、表示設定、レンダリング設定、アプリケーション設定について、及び/又はシステム100のレイテンシに貢献し得る他の設定について、実装され得る。
【0022】
図1Bを参照すると、図1Bは、システム100の例示的非限定的実施例を含む。システム100Aは、コンピューティング・デバイス102に通信可能に結合されたディスプレイ106を含む。HID104- たとえば、マウス- は、ディスプレイ106のパススルー機能性を介してコンピューティング・デバイス102に結合され得る。そのようなものとして、(ワイヤード又はワイヤレス)USB接続が、HID104とディスプレイ106との間に確立され得、(ワイヤード又はワイヤレス)USB接続が、ディスプレイ106とコンピューティング・デバイス102との間に確立され得る。そのようなものとして、パケットが、ディスプレイ106のUSBポート156AによってHID104から受信されるとき、ディスプレイ106は、USBポート156Bを介してコンピューティング・デバイス102のUSBポート156Cにパケットを渡すことができる。いくつかの実施例において、パケットが、HID104から受信されるとき、ディスプレイのFPGA154- たとえば、図1Aのパケット・インターセプタ108の役割を果たす- は、パケットが受信されたと決定することができる及び/又はパケットから周辺レイテンシ情報を取得若しくは傍受することができる(たとえば、周辺レイテンシに対応するデータ・フィールドの位置が、レポート記述子200から知られている場合)。この周辺レイテンシ情報は、CPU150 I2C/SPI152(たとえば、半二重、全二重、又は別のタイプの通信プロトコル)に渡され得る。CPU150は、ディスプレイ146のマザーボード146に含まれるチップ(又は集積回路)の構成要素でもよい。CPU150は、周辺レイテンシ情報及び/又はレイテンシの1つ又は複数の他の構成要素- たとえば、アプリケーション・レイテンシ、レンダリング・レイテンシ、及び/又は表示レイテンシ- を使用してシステム100Aのエンド・ツー・エンド・レイテンシを決定することができるレイテンシ決定装置110を実行し得る。
【0023】
一実例として、コンピューティング・デバイス102を介して渡されるHID104からのパケットは、コンピューティング・デバイス102によって受信され得、パケット内の入力データから入力情報を決定するために使用され得る。たとえば、コンピューティング・デバイス102のマザーボード130上の構成要素- たとえば、CPU136、ディスプレイ・ドライバ138、及び/又はUSBドライバ140- は、入力を決定する、アプリケーション状態を更新する、及びレンダリングのためにGPU132にアプリケーション状態情報を送信する(たとえば、PCIe接続134を介して)ために、使用され得る。レンダリングされた情報- たとえば、アプリケーションに対応する及び受信入力データを反映するフレーム- は、ディスプレイ106に送信され得る(たとえば、ディスプレイ・ポート(DP:display port)接続142及び144を介して)。ディスプレイ106は、次いで、フレームを表示し得る。実施例において、CPU150は、フレーム- 又はそのディスプレイ- から付加的レイテンシ情報を決定し得る。そのようなものとして、システム100Aは、HID104に関連する周辺レイテンシを決定するために使用され得る及び/又はディスプレイ106のパススルー機能性を使用してシステムのエンド・ツー・エンド・レイテンシを決定するために使用され得る。
【0024】
図1Bに関して説明されている特定の接続及びデバイス・タイプは、限定を意図しておらず、異なる接続及びデバイス・タイプが、使用され得る。たとえば、制限なしに、イーサネット(登録商標)が、USBの代わりに使用され得る、HDMI(登録商標)が、DPの代わりに使用され得る、FPGAの機能性が、CPU150自体に実装され得る、又はチップ148に含まれ得るなど。加えて、システム100Aの構成要素、特徴、及び機能性は、ディスプレイ106及びコンピューティング・デバイス102に関して説明されているが、これは限定を意図していない。たとえば、システム100Aの構成要素、特徴、及び/又は機能性のすべては、単一のデバイス- たとえば、単独のコンピューティング・デバイス102、単独のディスプレイ106など- 及び/又はディスプレイ106及びコンピューティング・デバイス102に加えた若しくはそれらの代わりのデバイスの組合せで実行され得る又はそれらに含まれ得る。
【0025】
ここで図3~4を参照すると、本明細書に記載の方法300及び400の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行することができる計算プロセスを含む。たとえば、様々な機能は、メモリに記憶されたプロセッサ実行命令によって実施され得る。方法300及び400はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法300及び400は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト型サービス(スタンドアロンの又は別のホスト型サービスと組み合わせた)、或いは別の製品へのプラグインによって提供され得る。加えて、方法300及び400は、例として、図1Aのシステム100に関して説明されている。しかしながら、これらの方法300及び400は、追加で又は別法として、本明細書に記載のものを含むがこれらに限定されない、任意の1つのシステム、又はシステムの任意の組合せによって実行され得る。
【0026】
ここで図3を参照すると、図3は、本開示のいくつかの実施例による、周辺レイテンシ値を含むようにデータ・パケットを生成するための方法300の流れ図である。方法300は、ブロックB302において、入力の受信に応答して、入力が受信された時間に対応する第1のタイムスタンプを生成することを含む。たとえば、第1のタイムスタンプは、入力受信器118が入力を受信及び/又は登録するときに、生成され得る。
【0027】
方法300は、ブロックB304において、入力を表す入力データをコンピューティング・デバイスに送信することを含む。たとえば、パケット・ジェネレータ124は、入力から入力データを表すパケットを生成することができ、送受信器120は、パケットをコンピューティング・デバイス102に送信することができる。
【0028】
方法300は、ブロックB306において、入力データがコンピューティング・デバイスによって受信された時間に対応する第2のタイムスタンプを生成することを含む。たとえば、パケットの送信及び/又は受信の成功後に、第2のタイムスタンプが、コンピューティング・デバイス102及び/又はHID104によって生成され得る。
【0029】
方法300は、ブロックB308において、第1のタイムスタンプ及び第2のタイムスタンプに少なくとも部分的に基づいて周辺レイテンシ値を計算することを含む。たとえば、周辺レイテンシ決定装置122は、第1のタイムスタンプ及び第2のタイムスタンプを使用して周辺レイテンシを計算することができる。
【0030】
方法300は、ブロックB310において、周辺レイテンシ値を含むようにデータ・パケットを生成することを含む。たとえば、パケット・ジェネレータ124は、周辺レイテンシ情報を含むパケット(ブロックB304からのパケットに対応し得る又はその後のパケットに対応し得る)を生成することができる。周辺レイテンシ情報は、レポート記述子200によって定義されたパケットのデータ・フィールドにおいて表され得る。
【0031】
方法300は、ブロックB312において、データ・パケットをコンピューティング・デバイスに送信することを含む。たとえば、HID104は、周辺レイテンシ情報を含むパケットをコンピューティング・デバイス102及び/又はパススルー・デバイス(たとえば、図1Bのディスプレイ106)に送信することができる。
【0032】
図4を参照すると、図4は、本開示のいくつかの実施例による、ヒューマン・インターフェイス・デバイスから受信されたデータ・パケットから周辺レイテンシを決定するための方法400の流れ図である。方法400は、ブロックB402において、コンピューティング・デバイスに通信可能に結合された入力デバイスからのデータ・パケットの受信を、コンピューティング・デバイスによって、決定することを含む。たとえば、パケット・インターセプタ108(及び/又はパケット受信器108)は、データ・パケットがHID104によって受信されたことを決定することができる。
【0033】
方法400は、ブロックB404において、入力デバイスにおいて受信された入力に関連する周辺レイテンシ値を示すデータを、コンピューティング・デバイスによってデータ・パケットから、取得することを含む。たとえば、コンピューティング・デバイス102のパケット・インターセプタ108は、周辺レイテンシに対応するデータ・パケットのデータ・フィールド- レポート記述子200において定義されるような- から周辺レイテンシ値を取得及び/又は受信することができる。
【0034】
方法400は、ブロックB406において、周辺レイテンシ値に少なくとも部分的に基づいて1つ又は複数の動作を実行することを含む。たとえば、コンピューティング・デバイス102(及び/又はパススルー・デバイス)は、レポート・ジェネレータ112を使用してレポートを生成する、構成アップデータ114を使用して構成設定を更新する、及び/又はシステム100のエンド・ツー・エンド・レイテンシ- 及び/又はそのHID104の貢献- を決定することができる。
【0035】
例示的コンテンツ・ストリーミング・システム
ここで図5を参照すると、図5は、本開示のいくつかの実施例による、コンテンツ・ストリーミング・システム500の例示的システム図である。図5は、アプリケーション・サーバ502(図6の例示的コンピューティング・デバイス600に類似の構成要素、特徴、及び/又は機能性を含み得る)、クライアント・デバイス504(図6の例示的コンピューティング・デバイス600に類似の構成要素、特徴、及び/又は機能性を含み得る)、及びネットワーク506(本明細書に記載のネットワークに類似し得る)を含む。本開示のいくつかの実施例において、システム500が、実装され得る。アプリケーション・セッションは、ゲーム・ストリーミング・アプリケーション(たとえば、NVIDIA GeFORCE NOW)、リモート・デスクトップ・アプリケーション、シミュレーション・アプリケーション(たとえば、自律又は半自律車両シミュレーション)、コンピュータ支援設計(CAD:computer aided design)アプリケーション、仮想現実(VR:virtual reality)及び/又は拡張現実(AR:augmented reality)ストリーミング・アプリケーション、深層学習アプリケーション、及び/又は他のアプリケーション・タイプに対応し得る。
【0036】
システム500において、アプリケーション・セッションについて、クライアント・デバイス504は、単に、入力デバイスへの入力に応答して入力データを受信し、入力データをアプリケーション・サーバ502に送信し、エンコードされたディスプレイ・データをアプリケーション・サーバ502から受信し、ディスプレイ・データをディスプレイ524に表示することができる。そのようなものとして、よりコンピュータ負荷の重い計算及び処理は、アプリケーション・サーバ502にオフロードされる(たとえば、アプリケーション・セッションのグラフィック出力のレンダリング- 特に光線又はパス・トレース- は、ゲーム・サーバ502のGPUによって実行される)。言い換えれば、アプリケーション・セッションは、アプリケーション・サーバ502からクライアント・デバイス504にストリーミングされ、それによって、グラフィックス処理及びレンダリングのためのクライアント・デバイス504の要件を減らす。
【0037】
たとえば、アプリケーション・セッションのインスタンス化に関して、クライアント・デバイス504は、ディスプレイ・データをアプリケーション・サーバ502から受信することに基づいてディスプレイ524にアプリケーション・セッションのフレームを表示し得る。クライアント・デバイス504は、入力デバイスのうちの1つへの入力を受信し、応答して入力データを生成することができる。クライアント・デバイス504は、通信インターフェイス520を介して及びネットワーク506(たとえば、インターネット)を介してアプリケーション・サーバ502に入力データを送信することができ、アプリケーション・サーバ502は、通信インターフェイス518を介して入力データを受信することができる。CPUは、入力データを受信し、入力データを処理し、アプリケーション・セッションのレンダリングをGPUに生成させるデータをGPUへ送信することができる。たとえば、入力データは、ゲーム・アプリケーションのゲーム・セッションにおけるユーザのキャラクタの移動、武器を発砲すること、リローディング、ボールをパスすること、車両を回転させることなどを表し得る。レンダリング構成要素512は、アプリケーション・セッション(たとえば、入力データの結果を表す)をレンダリングすることができ、レンダリング・キャプチャ構成要素514は、アプリケーション・セッションのレンダリングをディスプレイ・データとして(たとえば、アプリケーション・セッションのレンダリングされたフレームをキャプチャする画像データとして)キャプチャすることができる。アプリケーション・セッションのレンダリングは、アプリケーション・サーバ502の1つ又は複数の並列処理装置- たとえば、1つ又は複数の専用ハードウェア・アクセラレータ又は処理コアの使用をさらに用いて光線又はパス・トレース技法を実行し得る、GPU- を使用して計算される、光線又はパス・トレース照明及び/又は陰効果を含み得る。いくつかの実施例において、1つ又は複数の仮想機械(VM:virtual machine)- たとえば、1つ又は複数の仮想構成要素、たとえば、vGPU、vCPUなど、を含む- は、アプリケーション・セッションをサポートするために、アプリケーション・サーバ502によって使用され得る。エンコーダ516は、次いで、ディスプレイ・データをエンコードして、エンコードされたディスプレイ・データを生成することができ、エンコードされたディスプレイ・データは、通信インターフェイス518を介してネットワーク506を介してクライアント・デバイス504に送信され得る。クライアント・デバイス504は、エンコードされたディスプレイ・データを通信インターフェイス520を介して受信することができ、デコーダ522は、エンコードされたディスプレイ・データを復号してディスプレイ・データを生成することができる。クライアント・デバイス504は、次いで、ディスプレイ524を介してディスプレイ・データを表示することができる。
【0038】
例示的コンピューティング・デバイス
図6は、本開示のいくつかの実施例の実装において使用するのに適した例示的コンピューティング・デバイス600のブロック図である。コンピューティング・デバイス600は、以下のデバイスを直接に又は間接に結合する相互接続システム602を含み得る:メモリ604、1つ又は複数の中央処理装置(CPU:central processing unit)606、1つ又は複数のグラフィックス・プロセッシング・ユニット(GPU:graphics processing unit)608、通信インターフェイス610、入力/出力(I/O:input/ouput)ポート612、入力/出力構成要素614、電力供給装置616、1つ又は複数のプレゼンテーション構成要素618(たとえば、ディスプレイ)、及び1つ又は複数の論理ユニット620。少なくとも1つの実施例において、コンピューティング・デバイス600は、1つ又は複数の仮想機械(VM)を含み得る、及び/又は、その構成要素のいずれかは、仮想構成要素(たとえば、仮想ハードウェア構成要素)を含み得る。非限定的実例として、GPU608のうちの1つ又は複数は、1つ又は複数のvGPUを含み得、CPU606のうちの1つ又は複数は、1つ又は複数のvCPUを含み得、及び/又は論理ユニット620のうちの1つ又は複数は、1つ又は複数の仮想論理ユニットを含み得る。そのようなものとして、コンピューティング・デバイス600は、個別の構成要素(たとえば、コンピューティング・デバイス600専用の完全なGPU)、仮想構成要素(たとえば、コンピューティング・デバイス600専用のGPUの一部分)、又はその組合せを含み得る。
【0039】
図6の様々なブロックは、線を有する相互接続システム602を介して接続されるものとして示されているが、これは限定を意図しておらず、単に明確にすることを目的としている。たとえば、いくつかの実施例において、プレゼンテーション構成要素618、たとえば、ディスプレイ・デバイス、は、I/O構成要素614と考えられ得る(たとえば、ディスプレイがタッチスクリーンである場合)。別の実例として、CPU606及び/又はGPU608は、メモリを含み得る(たとえば、メモリ604は、GPU608、CPU606、及び/又は他の構成要素のメモリに加えた記憶デバイスを表し得る)。言い換えれば、図6のコンピューティング・デバイスは、単に、例示である。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム機」、「電子制御ユニット(ECU)」、「仮想現実システム」、及び/又は他のデバイス又はシステムタイプのようなカテゴリは、すべて、図6のコンピューティング・デバイスの範囲内にあることが企図されているので、区別されない。
【0040】
相互接続システム602は、1つ又は複数のリンク又はバス、たとえば、アドレス・バス、データ・バス、制御バス、又はその組合せ、を表し得る。相互接続システム602は、1つ又は複数のバス又はリンク・タイプ、たとえば、業界標準アーキテクチャ(ISA:industry standard Architecture)バス、拡張業界標準アーキテクチャ(EISA:extended industry standard Architecture)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:video electronics standards association)バス、周辺構成要素相互接続(PCI:peripheral component interconnect)バス、周辺構成要素相互接続エクスプレス(PCIe:peripheral component interconnect express)バス、及び/又は別のタイプのバス若しくはリンク、を含み得る。いくつかの実施例において、構成要素間の直接接続が存在する。一実例として、CPU606は、メモリ604に直接接続され得る。さらに、CPU606は、GPU608に直接接続され得る。構成要素間に直接、又は2地点間接続があるとき、相互接続システム602は、接続を実施するためのPCIeリンクを含み得る。これらの実例において、PCIバスは、コンピューティング・デバイス600に含まれる必要はない。
【0041】
メモリ604は、様々なコンピュータ可読媒体のいずれかを含み得る。コンピュータ可読媒体は、コンピューティング・デバイス600によってアクセスされ得る任意の利用可能な媒体でもよい。コンピュータ可読媒体は、揮発性媒体及び不揮発性媒体の両方、並びに取り外し可能な媒体及び取り外し不可能な媒体を含み得る。実例として、そして限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含み得る。
【0042】
コンピュータ記憶媒体は、情報、たとえば、コンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプ、を記憶するための任意の方法又は技術において実装される揮発性媒体及び不揮発性媒体の両方及び/又は取り外し可能な媒体及び取り外し不可能な媒体を含み得る。たとえば、メモリ604は、コンピュータ可読命令(たとえば、プログラム及び/又はプログラム要素、たとえば、オペレーティング・システム、を表すを記憶し得る。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:digital versatile disk)又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶デバイス、或いは、所望の情報を記憶するために使用され得る及びコンピューティング・デバイス600によってアクセスされ得る任意の他の媒体を含み得るが、これらに限定されない。本明細書では、コンピュータ記憶媒体は、信号それ自体を含まない。
【0043】
コンピュータ記憶媒体は、変調されたデータ信号、たとえば、搬送波又は他のトランスポート機構、においてコンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプを実施し得、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号において情報をエンコードするための方式などで設定又は変更されたそれの特徴のうちの1つ又は複数を有する信号を指し得る。実例として、及び限定ではなく、コンピュータ記憶媒体は、有線媒体、たとえば、有線ネットワーク又は直接有線接続、とワイヤレス媒体、たとえば、音響、RF、赤外線及び他のワイヤレス媒体、とを含み得る。前述のうちのいずれかの組合せもまた、コンピュータ可読媒体の範囲に含まれるべきである。
【0044】
CPU606は、コンピューティング・デバイス600の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するためのコンピュータ可読命令のうちの少なくともいくつかを実行するように構成され得る。CPU606は、多数のソフトウェア・スレッドを同時に処理する能力を有する1つ又は複数のコア(たとえば、1、2、4、8、28、72など)をそれぞれ含み得る。CPU606は、任意のタイプのプロセッサを含み得、実装されるコンピューティング・デバイス600のタイプ(たとえば、モバイル・デバイスのためのより少数のコアを有するプロセッサ及びサーバのためのより多数のコアを有するプロセッサ)に応じて、異なるタイプのプロセッサを含み得る。たとえば、コンピューティング・デバイス600のタイプに応じて、プロセッサは、縮小命令セット・コンピューティング(RISC:Reduced Instruction Set Computing)を使用して実装されるアドバンストRISC機械(ARM:Advanced RISC Machine)プロセッサ又は複合命令セット・コンピュータ(CISC:Complex Instruction Set Computing)を使用して実装されるx86プロセッサでもよい。コンピューティング・デバイス600は、1つ又は複数のマイクロプロセッサ又は補足のコプロセッサ、たとえば、数値演算コプロセッサ、に加えて、1つ又は複数のCPU606を含み得る。
【0045】
CPU606に加えて、又はその代わりに、GPU608は、コンピューティング・デバイス600の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するためのコンピュータ可読命令のうちの少なくともいくつかを実行するように構成され得る。GPU608のうちの1つ又は複数は、統合型GPUでもよく(たとえば、CPU606のうちの1つ又は複数を有する、及び/或いは、GPU608のうちの1つ又は複数は、個別のGPUでもよい。実施例において、GPU608のうちの1つ又は複数は、CPU606のうちの1つ又は複数のCPUのコプロセッサでもよい。GPU608は、グラフィックス(たとえば、3Dグラフィックス)をレンダリングする又は汎用計算を実行するために、コンピューティング・デバイス600によって使用され得る。たとえば、GPU608は、GPUでの汎用計算(GPGPU:General-Purpose computing on GPU)のために使用され得る。GPU608は、数百又は数千のソフトウェア・スレッドを同時に処理する能力を有する数百又は数千のコアを含み得る。GPU608は、レンダリング・コマンド(たとえば、ホスト・インターフェイスを介して受信されるCPU606からのレンダリング・コマンド)に応答して出力画像の画素データを生成し得る。GPU608は、画素データ又は任意の他の適したデータ、たとえば、GPGPUデータ、を記憶するためのグラフィックス・メモリ、たとえば、ディスプレイ・メモリ、を含み得る。ディスプレイ・メモリは、メモリ604の一部として含まれ得る。GPU608は、並行して(たとえば、リンクを介して)動作する2つ以上のGPUを含み得る。リンクは、GPUを直接接続する(たとえば、NVLINKを使用して)ことができる、又はスイッチを介して(たとえば、NVSwitchを使用して)GPUを接続することができる。ともに結合されるとき、各GPU608は、出力の異なる部分の又は異なる出力の画素データ又はGPGPUデータ(たとえば、第1の画像の第1のGPU及び第2の画像の第2のGPU)を生成することができる。各GPUは、それ自体のメモリを含むことができる、又は他のGPUとメモリを共用することができる。
【0046】
CPU606及び/又はGPU608に加えて又はその代わりに、論理ユニット620は、コンピューティング・デバイス600の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するためのコンピュータ可読命令のうちの少なくともいくつかを実行するように構成され得る。実施例において、CPU606、GPU608、及び/又は論理ユニット620は、方法、プロセス及び/又はそれの部分の任意の組合せを別個に又はともに実行することができる。論理ユニット620のうちの1つ又は複数は、CPU606及び/又はGPU608のうちの1つ又は複数の部分でもよい及び/又はそれに統合することができ、及び/又は、論理ユニット620のうちの1つ又は複数は、個別の構成要素でもよい又は他の方法でCPU606及び/又はGPU608の外部でもよい。実施例において、論理ユニット620のうちの1つ又は複数は、CPU606のうちの1つ又は複数及び/又はGPU608のうちの1つ又は複数のコプロセッサでもよい。
【0047】
論理ユニット620の実例は、1つ又は複数の処理コア及び/又はその構成要素、たとえば、テンソル・コア(TC:Tensor Core)、テンソル・プロセッシング・ユニット(TPU:Tensor Processing Unit)、画素ビジュアル・コア(PVC:Pixel Visual Core)、ビジョン・プロセッシング・ユニット(VPU:Vision Processing Unit)、グラフィックス・プロセッシング・クラスタ(GPC:Graphics Processing Cluster)、テクスチャ・プロセッシング・クラスタ(TPC:Texture Processing Cluster)、ストリーミング・マルチプロセッサ(SM:Streaming Multiprocessor)、木の走査ユニット(TTU:Tree Traversal Unit)、人工知能アクセラレータ(AIA:Artificial Intelligence Accelerator)、深層学習アクセラレータ(DLA:Deep Learning Accelerator)、演算論理ユニット(ALU:Arithmetic-Logic Unit)、特定用途向け集積回路(ASIC:Application-Specific Integrated Circuit)、浮動小数点ユニット(FPU:Floating Point Unit)、入力/出力(I/O)要素、周辺構成要素相互接続(PCI)又は周辺構成要素相互接続エクスプレス(PCIe)要素、及び/又は同類のものを含む。
【0048】
通信インターフェイス610は、有線及び/又はワイヤレス通信を含む、電子通信ネットワークを介してコンピューティング・デバイス600が他のコンピューティング・デバイスと通信することを可能にする1つ又は複数の受信器、送信器、及び/又は送受信器を含み得る。通信インターフェイス610は、いくつかの異なるネットワーク、たとえば、ワイヤレス・ネットワーク(たとえば、Wi-Fi、Z-Wave、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、ZigBeeなど)、有線ネットワーク(たとえば、イーサネット(登録商標)又はInfiniBandを介して通信する)、低電力ワイド・エリア・ネットワーク(たとえば、LoRaWAN、SigFoxなど)、及び/又はインターネット、のいずれかを介する通信を可能にするための構成要素及び機能性を含み得る。
【0049】
I/Oポート612は、それらのうちのいくつかはコンピューティング・デバイス600に組み込む(たとえば、統合する)ことができる、I/O構成要素614、プレゼンテーション構成要素618、及び/又は他の構成要素を含む他のデバイスに、コンピューティング・デバイス600が論理的に結合されることを可能にし得る。例示的I/O構成要素614は、マイクロフォン、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、サテライト・ディッシュ、スキャナ、プリンタ、ワイヤレス・デバイスなどを含む。I/O構成要素614は、ユーザによって生成されるエア・ジェスチャ、音声、又は他の生理的入力を処理するナチュラル・ユーザ・インターフェイス(NUI:natural user interfac)を提供し得る。いくつかの事例において、入力は、さらに処理するために適切なネットワーク要素に送信され得る。NUIは、音声認識、スタイラス認識、顔認識、生体認識、画面上の及び画面付近両方でのジェスチャの認識、エア・ジェスチャ、頭部及び視標追跡、及びコンピューティング・デバイス600のディスプレイに関連するタッチ認識(さらに詳しく後述するような)の任意の組合せを実装し得る。コンピューティング・デバイス600は、ジェスチャ検出及び認識のための深度カメラ、たとえば、ステレオ・カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、タッチスクリーン技術、及びこれらの組合せを含み得る。加えて、コンピューティング・デバイス600は、動きの検出を可能にする加速度計又はジャイロスコープ(たとえば、慣性測定ユニット(IMU:inertia measurement unit)の一部としての)を含み得る。いくつかの実例において、加速度計又はジャイロスコープの出力は、没入型拡張現実又は仮想現実をレンダリングするためにコンピューティング・デバイス600によって使用され得る。
【0050】
電力供給装置616は、ハードワイヤード電力供給装置、バッテリ電力供給装置、又はその組合せを含み得る。電力供給装置616は、コンピューティング・デバイス600の構成要素が動作することを可能にするために、コンピューティング・デバイス600に電力を提供することができる。
【0051】
プレゼンテーション構成要素618は、ディスプレイ(たとえば、モニタ、タッチスクリーン、テレビジョン画面、ヘッドアップディスプレイ(HUD:heads-up-display)、他のディスプレイ・タイプ、又はその組合せ)、スピーカ、及び/又は他のプレゼンテーション構成要素を含み得る。プレゼンテーション構成要素618は、他の構成要素(たとえば、GPU608、CPU606など)からデータを受信し、データを出力する(たとえば、画像、ビデオ、サウンドなどとして)ことができる。
【0052】
例示的データ・センタ
図7は、本開示の少なくとも1つの実施例において使用され得る例示的データ・センタ700を示す。データ・センタ700は、データ・センタ・インフラストラクチャ層710、フレームワーク層720、ソフトウェア層730、及び/又はアプリケーション層740を含み得る。
【0053】
図7に示すように、データ・センタ・インフラストラクチャ層710は、資源オーケストレータ712、グループ化された計算資源714、及びノード計算資源(「ノードC.R.」)716(1)~716(N)を含むことができ、そこで、「N」は、任意の完全な、正の整数を表す。少なくとも1つの実施例において、ノードC.R.716(1)~716(N)は、任意の数の中央処理装置(CPU)又は他のプロセッサ(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、グラフィックス・プロセッサ又はグラフィックス・プロセッシング・ユニット(GPU)などを含む)、メモリ・デバイス(たとえば、ダイナミック・リードオンリ・メモリ)、記憶デバイス(たとえば、ソリッド・ステート又はディスク・ドライブ)、ネットワーク入力/出力(NW I/O:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(VM)、電力モジュール、及び/又は冷却モジュールなどを含み得るが、これらに限定されない。いくつかの実施例において、ノードC.R.716(1)~716(N)のうちの1つ又は複数のノードC.R.は、前述の計算資源のうちの1つ又は複数を有するサーバに対応し得る。加えて、いくつかの実施例において、ノードC.R.716(1)~7161(N)は、1つ又は複数の仮想構成要素、たとえば、vGPU、vCPU、及び/又は同類のもの、を含み得る、及び/又は、ノードC.R.716(1)~716(N)のうちの1つ又は複数は、仮想機械(VM)に対応し得る。
【0054】
少なくとも1つの実施例において、グループ化された計算資源714は、1つ又は複数のラック(図示せず)に格納された別個のグループのノードC.R.716、或いは様々な地理的場所にあるデータ・センタに格納された多数のラック(やはり図示せず)を含み得る。グループ化された計算資源714内のノードC.R.716の別個のグループは、1つ又は複数のワークロードをサポートするために構成され得る又は割り当てられ得るグループ化された計算、ネットワーク、メモリ又はストレージ資源を含み得る。少なくとも1つの実施例において、CPU、GPU、及び/又は他のプロセッサを含むいくつかのノードC.R.716は、1つ又は複数のワークロードをサポートするための計算資源を提供するために、1つ又は複数のラック内にグループ化され得る。1つ又は複数のラックはまた、任意の数の電力モジュール、冷却モジュール、及び/又はネットワーク・スイッチを、任意の組合せで、含み得る。
【0055】
資源オーケストレータ722は、1つ又は複数のノードC.R.716(1)~716(N)及び/又はグループ化された計算資源714を構成又は他の方法で制御することができる。少なくとも1つの実施例において、資源オーケストレータ722は、データ・センタ700のためのソフトウェア設計インフラストラクチャ(SDI:software design infrastructure)管理エンティティを含み得る。資源オーケストレータ722は、ハードウェア、ソフトウェア、又はその何らかの組合せを含み得る。
【0056】
少なくとも1つの実施例において、図7に示すように、フレームワーク層720は、ジョブ・スケジューラ732、構成マネージャ734、資源マネージャ736、及び/又は分散型ファイル・システム738を含み得る。フレームワーク層720は、ソフトウェア層730のソフトウェア732及び/又はアプリケーション層740の1つ若しくは複数のアプリケーション742をサポートするために、フレームワークを含み得る。ソフトウェア732又はアプリケーション742は、ウェブベースのサービス・ソフトウェア又はアプリケーション、たとえば、アマゾン・ウェブ・サービス、グーグル・クラウド及びMicrosoft Azureによって提供されるもの、をそれぞれ含み得る。フレームワーク層720は、大規模データ処理(たとえば、「ビッグ・データ」)のための分散型ファイル・システム738を使用し得るApache Spark(商標)(以下「Spark」)などのフリー及びオープン・ソース・ソフトウェア・ウェブ・アプリケーション・フレームワークのタイプでもよいが、これに限定されない。少なくとも1つの実施例において、ジョブ・スケジューラ732は、データ・センタ700の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含み得る。構成マネージャ734は、異なる層、たとえば、ソフトウェア層730と、大規模データ処理をサポートするためのSpark及び分散型ファイル・システム738を含むフレームワーク層720、を構成する能力を有し得る。資源マネージャ736は、分散型ファイル・システム738及びジョブ・スケジューラ732のサポートのためにマップされた又は割り当てられたクラスタ化された又はグループ化された計算資源を管理する能力を有し得る。少なくとも1つの実施例において、クラスタ化された又はグループ化された計算資源は、データ・センタ・インフラストラクチャ層710にグループ化された計算資源714を含み得る。資源マネージャ1036は、資源オーケストレータ712と調整してこれらのマップされた又は割り当てられた計算資源を管理することができる。
【0057】
少なくとも1つの実施例において、ソフトウェア層730に含まれるソフトウェア732は、ノードC.R.716(1)~716(N)の少なくとも部分、グループ化された計算資源714、及び/又はフレームワーク層720の分散型ファイル・システム738によって使用されるソフトウェアを含み得る。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含み得るが、これらに限定されない。
【0058】
少なくとも1つの実施例において、アプリケーション層740に含まれるアプリケーション742は、ノードC.R.716(1)~716(N)の少なくとも部分、グループ化された計算資源714、及び/又はフレームワーク層720の分散型ファイル・システム738によって使用される1つ又は複数のタイプのアプリケーションを含み得る。1つ又は複数のタイプのアプリケーションは、任意の数のゲノミクス・アプリケーション、認知計算、並びに、トレーニング若しくは推論ソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)、及び/又は1つ又は複数の実施例と併せて使用される他の機械学習アプリケーションを含む、機械学習アプリケーションを含み得るが、これらに限定されない。
【0059】
少なくとも1つの実施例において、構成マネージャ734、資源マネージャ736、及び資源オーケストレータ712のうちのいずれかは、任意の技術的に可能な方式で取得される任意の量及びタイプのデータに基づいて任意の数及びタイプの自己書換え型アクションを実装することができる。自己書換え型アクションは、よくない可能性のある構成決定を行うこと及びデータ・センタの十分に活用されていない及び/又は実行の不十分な部分をおそらく回避することからデータ・センタ700のデータ・センタ・オペレータを解放し得る。
【0060】
データ・センタ700は、1つ又は複数の機械学習モデルをトレーニングする或いは本明細書に記載の1つ又は複数の実施例による1つ又は複数の機械学習モデルを使用して情報を予測する又は推論するために、ツール、サービス、ソフトウェア或いは他の資源を含み得る。たとえば、機械学習モデルは、データ・センタ700に関して前述されたソフトウェア及び/又は計算資源を使用するニューラル・ネットワーク・アーキテクチャによる重量パラメータの計算によって、トレーニングされ得る。少なくとも1つの実施例において、1つ又は複数のニューラル・ネットワークに対応するトレーニングされた又は配備された機械学習モデルは、たとえば、本明細書に記載のものに限定されない、1つ又は複数のトレーニング技法を介して計算された重量パラメータを使用することによって、データ・センタ700に関して前述された資源を使用する情報の推論又は予測のために使用され得る。
【0061】
少なくとも1つの実施例において、データ・センタ700は、前述の資源を使用するトレーニング及び/又は推論の実行のために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、及び/又は他のハードウェア(若しくはそれに対応する仮想計算資源)を使用することができる。さらに、前述の1つ又は複数のソフトウェア及び/又はハードウェア資源は、情報の推論をユーザがトレーニング又は実行することを可能にするためのサービス、たとえば、画像認識、音声認識、又は他の人工知能サービス、として構成され得る。
【0062】
例示的ネットワーク環境
本開示の実施例の実装において使用するのに適したネットワーク環境は、1つ又は複数のクライアント・デバイス、サーバ、ネットワーク接続型ストレージ(NAS:network attached storage)、他のバックエンド・デバイス、及び/又は他のデバイス・タイプを含み得る。クライアント・デバイス、サーバ、及び/又は他のデバイス・タイプ(たとえば、各デバイス)は、図6のコンピューティング・デバイス600の1つ又は複数のインスタンスで実装され得る- たとえば、各デバイスは、コンピューティング・デバイス600の類似の構成要素、特徴、及び/又は機能性を含み得る。加えて、バックエンド・デバイス(たとえば、サーバ、NASなど)が、実装される場合、バックエンド・デバイスは、データ・センタ700の一部として含まれ得、その実例は、図7に関して本明細書でさらに詳述される。
【0063】
ネットワーク環境の構成要素は、有線、ワイヤレス、又はその両方でもよい、ネットワークを介して互いに通信し得る。ネットワークは、複数のネットワーク、又はネットワークのネットワークを含み得る。実例として、ネットワークは、1つ又は複数のワイド・エリア・ネットワーク(WAN)、1つ又は複数のローカル・エリア・ネットワーク(LAN)、1つ又は複数のパブリック・ネットワーク、たとえば、インターネット及び/又は公衆交換電話網(PSTN)、及び/又は1つ又は複数のプライベート・ネットワークを含み得る。ネットワークが、ワイヤレス電気通信ネットワークを含む場合、構成要素、たとえば、基地局、通信塔、又はアクセス・ポイントなどさえも(他の構成要素と同様に)、ワイヤレス接続を提供し得る。
【0064】
互換性のあるネットワーク環境は、1つ又は複数のピア・ツー・ピア・ネットワーク環境- サーバがネットワーク環境に含まれないことがある場合- と、1つ又は複数のクライアント・サーバ・ネットワーク環境- 1つ又は複数のサーバがネットワーク環境に含まれ得る場合- とを含み得る。ピア・ツー・ピア・ネットワーク環境では、サーバに関して本明細書に記載した機能性は、任意の数のクライアント・デバイスに実装され得る。
【0065】
少なくとも1つの実施例において、ネットワーク環境は、1つ又は複数のクラウドベースのネットワーク環境、分散された計算環境、その組合せなどを含み得る。クラウドベースのネットワーク環境は、フレームワーク層、ジョブ・スケジューラ、資源マネージャ、並びに、1つ又は複数のコア・ネットワーク・サーバ及び/又はエッジ・サーバを含み得る、サーバのうちの1つ又は複数に実装された分散型ファイル・システムを含み得る。フレームワーク層は、ソフトウェア層のソフトウェア及び/又はアプリケーション層の1つ又は複数のアプリケーションをサポートするために、フレームワークを含み得る。ソフトウェア又はアプリケーションは、それぞれ、ウェブベースのサービス・ソフトウェア又はアプリケーションを含み得る。実施例において、クライアント・デバイスのうちの1つ又は複数は、ウェブベースのサービス・ソフトウェア又はアプリケーションを使用し得る(たとえば、1つ又は複数のアプリケーション・プログラミング・インターフェイス(API:application programming interface)を介してサービス・ソフトウェア及び/又はアプリケーションにアクセスすることによって)。フレームワーク層は、たとえば大規模データ処理(たとえば、「ビッグ・データ」)のための分散型ファイル・システムを使用し得る、フリー及びオープン・ソース・ソフトウェア・ウェブ・アプリケーション・フレームワークのタイプでもよいが、これに限定されない。
【0066】
クラウドベースのネットワーク環境は、本明細書に記載の計算及び/又はデータ・ストレージ機能(又は1つ若しくは複数のその部分)の任意の組合せを実施するクラウド計算及び/又はクラウド・ストレージを提供し得る。これらの様々な機能のいずれも、セントラル又はコア・サーバ(たとえば、州、領域、国、世界に分散され得る1つ又は複数のデータ・センタなどの)から複数の場所に分散され得る。ユーザ(たとえば、クライアント・デバイス)への接続が、エッジ・サーバに比較的近い場合、コア・サーバは、機能性の少なくとも一部分をエッジ・サーバに任じ得る。クラウドベースのネットワーク環境は、プライベート(たとえば、単一の組織に限定される)でもよく、パブリック(たとえば、多数の組織に利用可能)、及び/又はその組合せ(たとえば、ハイブリッド・クラウド環境)でもよい。
【0067】
クライアント・デバイスは、図6に関して本明細書に記載の例示的コンピューティング・デバイス600の構成要素、特徴、及び機能性のうちの少なくともいくつかを含み得る。実例として、及び限定ではなく、クライアント・デバイスは、パーソナル・コンピュータ(PC)、ラップトップ・コンピュータ、モバイル・デバイス、スマートフォン、タブレット・コンピュータ、スマート・ウォッチ、ウェアラブル・コンピュータ、パーソナル・デジタル・アシスタント(PDA:Personal Digital Assistant)、MP3プレーヤ、仮想現実ヘッドセット、全地球測位システム(GPS)又はデバイス、ビデオプレーヤ、ビデオカメラ、監視デバイス又はシステム、車両、船、飛行船、仮想機械、ドローン、ロボット、ハンドヘルド通信デバイス、病院デバイス、ゲーミング・デバイス又はシステム、娯楽システム、車両コンピュータ・システム、組み込み型システム・コントローラ、リモート制御、器具、民生用電子デバイス、ワークステーション、エッジ・デバイス、これらの描写されたデバイスの任意の組合せ、或いは任意の他の適切なデバイスとして実施され得る。
【0068】
本開示は、コンピュータ又は他の機械、たとえば、パーソナル・データ・アシスタント又は他のハンドヘルド・デバイス、によって実行されている、プログラム・モジュールなどのコンピュータ実行可能命令を含む、コンピュータ・コード又は機械使用可能命令との一般的関連において説明され得る。一般に、ルーティン、プログラム、オブジェクト、構成要素、データ構造などを含む、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ・タイプを実装するコードを指す。本開示は、ハンドヘルド・デバイス、民生用電子機器、汎用コンピュータ、より専門的コンピューティング・デバイスなどを含む、様々なシステム構成において実施され得る。本開示はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散型計算環境において実施され得る。
【0069】
本明細書では、2つ以上の要素に関する「及び/又は」の記述は、1つのみの要素、又は要素の組合せを意味すると解釈されるべきである。たとえば、「要素A、要素B、及び/又は要素C」は、要素Aのみ、要素Bのみ、要素Cのみ、要素A及び要素B、要素A及び要素C、要素B及び要素C、或いは要素A、B、及びCを含み得る。加えて、「要素A又は要素Bのうちの少なくとも1つ」は、要素Aのうちの少なくとも1つ、要素Bのうちの少なくとも1つ、或いは要素Aのうちの少なくとも1つ及び要素Bのうちの少なくとも1つを含み得る。さらに、「要素A及び要素Bのうちの少なくとも1つ」は、要素Aのうちの少なくとも1つ、要素Bのうちの少なくとも1つ、或いは要素Aのうちの少なくとも1つ及び要素Bのうちの少なくとも1つを含み得る。
【0070】
本開示の主題は、法的要件を満たすために、本明細書に記載の特異性を有して説明されている。しかしながら、その説明自体は、本開示の範囲を限定することを意図していない。そうではなくて、本発明者により、他の現在又は未来の技術と併せて、本文書に記載されているものと類似の異なるステップ又はステップの組合せを含むために、本請求の主題は他のやり方でも実施され得ることが企図されている。さらに、「ステップ」及び/又は「ブロック」という用語が、用いられる方法の異なる要素を含意するために、本明細書で使用され得るが、それらの用語は、個々のステップの順番が明示的に記載されていない限り及びそのように記載されているときを除いて、本明細書に記載の様々なステップの間の任意の特定の順番を暗示するものとして解釈されるべきではない。
図1A
図1B
図2A
図2B
図3
図4
図5
図6
図7
【外国語明細書】