(57)【要約】本開示の実施形態は、より少ない電力を用いて複合現実システムを実装するために提供される。いくつかの例では、複合現実システムの受動状態は、ＧＰＵにＣＰＵによって処理される必要がない予測可能なコンテンツをレンダリングさせることができる。そのような例では、予測可能なコンテンツは、ＣＰＵが低電力モードにある間、ＧＰＵによって識別され、レンダリングされることができる。故に、本開示の実施形態は、ＣＰＵが対応するＧＰＵより多くの電力を消費し得るので、従来の技法を用いて利用可能ではない利点を提供する。いくつかの例では、受動状態は、予測可能なコンテンツがＣＰＵを使用せずに識別され、レンダリングされ得るという事実を利用することができる。そのような例では、受動状態は、ＣＰＵによって処理される必要がない予測可能なコンテンツをレンダリングすることができる。
2019537143.tif 000002
【特許請求の範囲】
【請求項１】
複合現実デバイスを使用して、複合現実コンテンツを提示する方法であって、前記方法は、
物理的環境に関連付けられたセンサデータを取得することであって、前記センサデータは、１つ以上のセンサを使用して取得される、ことと、
視覚処理ユニット（ＶＰＵ）によって、前記センサデータを使用して、前記デバイスの姿勢を決定することと、
前記デバイスの前記姿勢を少なくとも１つのグラフィック処理ユニット（ＧＰＵ）に送信することと、
前記少なくとも１つのＧＰＵによって、前記デバイスの前記姿勢に対応するコンテンツを識別することと、
前記少なくとも１つのＧＰＵによって、前記コンテンツを前記物理的環境に整列させることと、
前記整列させられたコンテンツを前記デバイスに送信することと、
ディスプレイを使用して、前記整列させられたコンテンツを提示することと
を含む、方法。
【請求項２】
前記デバイスの前記姿勢は、前記デバイスの位置および向きを含む、請求項１に記載の方法。
【請求項３】
前記少なくとも１つのＧＰＵは、前記デバイスから遠隔にある、請求項１に記載の方法。
【請求項４】
前記コンテンツは、前記コンテンツを識別することに先立って、前記少なくとも１つのＧＰＵのキャッシュ内に記憶されている、請求項１に記載の方法。
【請求項５】
前記デバイスの前記姿勢を中央処理ユニット（ＣＰＵ）に送信することをさらに含む、請求項１に記載の方法。
【請求項６】
前記ＣＰＵは、低電力モードで動作中である、請求項５に記載の方法。
【請求項７】
前記識別されたコンテンツが動的コンテンツであることを決定することと、
メッセージを前記ＣＰＵに送信することと
をさらに含み、
前記メッセージは、前記ＣＰＵに前記低電力モードから高電力モードに遷移させる、請求項６に記載の方法。
【請求項８】
前記識別されたコンテンツが予測可能なコンテンツであることを決定することと、
前記識別されたコンテンツが予測可能であることの決定に応答して、前記識別されたコンテンツを前記少なくとも１つのＧＰＵのキャッシュから取得することと
をさらに含む、請求項１に記載の方法。
【請求項９】
デバイスを備えているシステムであって、前記デバイスは、
１つ以上のセンサであって、前記１つ以上のセンサのうちのセンサは、センサデータを捕捉するように構成されている、１つ以上のセンサと、
前記デバイスに関連付けられた姿勢を決定するように構成された視覚処理ユニット（ＶＰＵ）であって、前記姿勢は、前記センサデータを使用して決定される、ＶＰＵと、
ディスプレイと、
少なくとも１つのグラフィック処理ユニット（ＧＰＵ）と
含み、
前記少なくとも１つのＧＰＵは、
前記姿勢を前記ＶＰＵから受信することと、
前記ディスプレイによって提示されるべきコンテンツを識別することであって、前記コンテンツは、前記姿勢に基づいて識別される、ことと、
前記コンテンツを物理的環境と整列させることと、
前記ディスプレイによって提示されるべき前記整列させられたコンテンツを前記デバイスに伝送することと
を行うように構成されている、システム。
【請求項１０】
前記姿勢は、前記複合現実デバイスの構成空間内にあり、前記姿勢は、前記複合現実デバイスの位置および向きを定義する、請求項９に記載のシステム。
【請求項１１】
前記１つ以上のセンサのうちのセンサは、カメラ、加速度計、ジャイロスコープ、トーテム、および全地球測位システムのうちの１つである、請求項９に記載のシステム。
【請求項１２】
前記少なくとも１つのＧＰＵは、前記デバイスから遠隔にある、請求項９に記載のシステム。
【請求項１３】
前記コンテンツは、予測可能なコンテンツである、請求項９に記載のシステム。
【請求項１４】
前記デバイスは、前記姿勢を前記ＶＰＵから受信するように構成された中央処理ユニット（ＣＰＵ）をさらに含む、請求項１３に記載のシステム。
【請求項１５】
前記ＣＰＵは、前記コンテンツが予測可能なコンテンツであることの識別に応答してバイパスされる、請求項１４に記載のシステム。
【請求項１６】
前記コンテンツは、前記コンテンツを識別することに先立って、前記少なくとも１つのＧＰＵのキャッシュ内に記憶されている、請求項９に記載のシステム。
【請求項１７】
非一過性機械読み取り可能な記憶媒体内に有形に具現化されるコンピュータプログラム製品であって、前記コンピュータプログラム製品は、命令を含み、前記命令は、１つ以上のプロセッサによって実行されると、
物理的環境に関連付けられたセンサデータを取得することであって、前記センサデータは、１つ以上のセンサを使用して取得される、ことと、
視覚処理ユニット（ＶＰＵ）によって、前記センサデータを使用して、デバイスの姿勢を決定することと、
前記デバイスの前記姿勢を少なくとも１つのグラフィック処理ユニット（ＧＰＵ）に送信することと、
前記少なくとも１つのＧＰＵによって、前記姿勢に対応するコンテンツを識別することと、
前記少なくとも１つのＧＰＵによって、前記コンテンツを前記物理的環境と整列させることと、
前記整列させられたコンテンツを前記デバイスに送信することと、
ディスプレイを使用して、前記整列させられたコンテンツを提示することと
を前記１つ以上のプロセッサに行わせる、コンピュータプログラム製品。
【請求項１８】
前記姿勢は、前記デバイスの構成空間におけるものであり、前記姿勢は、前記デバイスの位置および向きを定義する、請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
前記１つ以上のセンサのうちのセンサは、カメラ、加速度計、ジャイロスコープ、トーテム、および全地球測位システムのうちの１つである、請求項１７に記載のコンピュータプログラム製品。
【請求項２０】
前記少なくとも１つのＧＰＵは、前記デバイスから遠隔にある、請求項１７に記載のコンピュータプログラム製品。
【請求項２１】
前記命令は、前記１つ以上のプロセッサによって実行されると、
前記デバイスの前記姿勢を中央処理ユニット（ＣＰＵ）に送信することを前記１つ以上のプロセッサにさらに行わせる、請求項１７に記載のコンピュータプログラム製品。
【請求項２２】
前記コンテンツは、予測可能なコンテンツであり、前記ＣＰＵは、前記コンテンツが予測可能なコンテンツであることの識別に応答してバイパスされる、請求項２１に記載のコンピュータプログラム製品。
【請求項２３】
前記コンテンツは、前記コンテンツを識別することに先立って、前記少なくとも１つのＧＰＵのキャッシュ内に記憶されている、請求項１７に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連出願の引用）
本願は、米国仮特許出願第６２／４２３，１５４号（２０１６年１１月１６日出願、名称「Ｍｉｘｅｄ−Ｒｅａｌｉｔｙ  Ｓｙｓｔｅｍ  ｗｉｔｈ  Ｒｅｄｕｃｅｄ  Ｐｏｗｅｒ  Ｒｅｎｄｅｒｉｎｇ」）に対する優先権を主張し、上記出願の開示は、あらゆる目的のためにその全体が参照により本明細書に引用される。
【０００２】
（背景）
複合現実は、デジタル情報を物理的環境のユーザの視野とリアルタイムで組み合わせることを含むことができる。デジタル情報は、物理的環境に定着され、デジタル情報が物理的環境内にある印象を与えることができる。複合現実を実装するために、物理的環境が分析され、デジタル情報が生成されることができる。しかしながら、現実的組み合わせを作成するために、分析と生成とは、頻繁に実施されなければならず、それは、大量の電力を消費し得る。したがって、当技術分野において、複合現実を実装するときの電力消費を低減させるための改良された方法およびシステムの必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
（要約）
複合現実を実装する方法、システム、およびコンピュータプログラム製品が、提供される。いくつかの例では、グラフィック処理ユニット（ＧＰＵ）は、少なくとも部分的に、中央処理ユニット（ＣＰＵ）の使用を取り除くことができる。そのような例では、受動状態は、ＣＰＵによって処理される必要がない予測可能なコンテンツをレンダリングすることができる。そのような例では、予測可能なコンテンツは、ＣＰＵが低電力モードにある間、ＧＰＵによってレンダリングされることができる。
【課題を解決するための手段】
【０００４】
いくつかの例では、受動状態は、多くの結像決定およびレンダリング計算をＧＰＵ（ＣＰＵではなく）に任せることの意図を表し得る。ＧＰＵは、ＧＰＵが十分な出力を提供するためにより少ないデータ入力を必要とし得るので、ＣＰＵより少ない電力を消費し得る。例えば、ＣＰＵは、現在の状態の完全情報を要求し得るが、ＧＰＵは、コンテンツをレンダリングする方法（例えば、タイミング、視野限界、深度平面、コンテンツのタイプ等）のみを決定する必要があり得る。そして、ＧＰＵは、より少ないデータ入力を必要と得るので、異なるカテゴリのセンサおよびアーキテクチャが、使用されることができる。例えば、より大きいメモリバンクおよびコンポーネント統合を伴うＣＰＵは、関わるコンピューティングサイクルに起因して、ＣＰＵの要件に対応するセンサおよびアーキテクチャのカテゴリ（コンポーネントのクラス）に限定され得る。換言すると、より高速で実施し、より少ない電力を使用することができる、センサおよびアーキテクチャのカテゴリは、ＣＰＵにあまり有用ではないこともある一方、ＧＰＵは、センサおよびアーキテクチャのそのようなカテゴリを使用し、十分な出力を提供することが可能であり得る。ＧＰＵの能力は、したがって、ＧＰＵは、ＣＰＵの単により優れたバージョンではなく、異なるカテゴリのセンサおよびアーキテクチャを有効にし得るので、異なるクラスであり得る。
【０００５】
本開示の実施形態は、低減させられた電力消費を伴って複合現実を実装するために提供される。いくつかの例では、ＧＰＵは、ＣＰＵの使用の一部を取り除くことができる。そのような例では、受動電力状態が、アイドル状態とアクティブ状態との間に提供されることができる。いくつかの例では、受動状態は、ＧＰＵに、ＣＰＵによって処理される必要がない予測可能なコンテンツをレンダリングさせることができる。そのような例では、予測可能なコンテンツは、ＣＰＵが低電力モードにある間、ＧＰＵによって識別され、レンダリングされることができる。故に、本開示の実施形態は、ＣＰＵが対応するＧＰＵより多くの電力を消費し得るので、従来の技法を用いて利用可能ではない利点を提供する。いくつかの例では、受動状態は、予測可能なコンテンツがＣＰＵを使用せずに識別され、レンダリングされ得るという事実を利用することができる。そのような例では、受動状態は、ＣＰＵによって処理される必要がない予測可能なコンテンツをレンダリングすることができる。
【０００６】
例えば、複合現実デバイスを使用して、複合現実コンテンツを提示する方法が、提供されることができる。方法は、物理的環境に関連付けられたセンサデータを取得することを含むことができる。いくつかの例では、センサデータは、１つ以上のセンサを使用して取得されることができる。方法は、視覚処理ユニット（ＶＰＵ）によって、センサデータを使用して、複合現実デバイスの姿勢を決定することと、複合現実デバイスの姿勢をグラフィック処理ユニット（ＧＰＵ）に送信することとをさらに含むことができる。いくつかの例では、複合現実デバイスの姿勢は、複合現実デバイスの位置および向きを含むことができる。いくつかの例では、ＧＰＵは、複合現実デバイスから遠隔にあることができる。いくつかの例では、方法は、複合現実デバイスの姿勢を中央処理ユニット（ＣＰＵ）に送信することをさらに含むことができる。いくつかの例では、ＣＰＵは、方法全体を通して、低電力モードで動作中であることができる。方法は、ＧＰＵによって、姿勢に対応するコンテンツを識別することをさらに含むことができる。いくつかの例では、コンテンツは、コンテンツを識別することに先立って、ＧＰＵのキャッシュ内に記憶されることができる。方法は、ＧＰＵによって、コンテンツを物理的環境と整列させることと、整列させられたコンテンツを複合現実デバイスに送信することと、複合現実デバイスのディスプレイを使用して、整列させられたコンテンツを提示することとをさらに含むことができる。いくつかの例では、方法は、識別されたコンテンツが予測可能なコンテンツであることを決定することと、識別されたコンテンツが予測可能であることの決定に応答して、識別されたコンテンツをＧＰＵのキャッシュから取得することとをさらに含むことができる。他の例では、方法は、識別されたコンテンツが動的コンテンツであることを決定することと、識別されたコンテンツが動的であることの決定に応答して、メッセージをＣＰＵに送信することとをさらに含むことができる。そのような例では、メッセージは、ＣＰＵを低電力モードから高電力モードに遷移させることができる。
【０００７】
別の例として、複合現実デバイスを使用して複合現実コンテンツを提示するためのシステムが、提供されることができる。システムは、複合現実デバイスと、グラフィック処理ユニット（ＧＰＵ）とを含むことができ、ＧＰＵは、複合現実デバイスとともに、またはそれと別個に含まれる。いくつかの例では、複合現実デバイスは、１つ以上のセンサと、視覚処理ユニット（ＶＰＵ）と、ディスプレイとを含むことができる。そのような例では、１つ以上のセンサのうちのセンサは、センサデータを捕捉するように構成されることができる。ＶＰＵは、複合現実デバイスに関連付けられた姿勢を決定するように構成されることができる。そして、姿勢は、センサデータを使用して決定されることができる。ＧＰＵは、複合現実デバイスのディスプレイによって提示されるべきコンテンツを識別し、コンテンツを物理的環境と整列させ、整列させられたコンテンツをディスプレイによって提示されるために複合現実デバイスに伝送するように構成されることができる。
【０００８】
従来の技法に優る多数の利点が、本開示の方法によって達成される。例えば、本開示の実施形態は、ＧＰＵによる知覚およびグラフィックレンダリングに関する一貫した性能を維持しながら、高電力消費ＣＰＵがある期間にわたって低電力モードにあることを可能にすることによって、電力節約を提供することができる。電力節約は、視覚的更新がユーザの身体運動によってトリガされないときの電力使用が最小化され得る多くの用途（例えば、生成性ソフトウェア、ウェブブラウジング、マルチメディア相互作用）に適用することができる。そのような電力節約を用いることで、ユーザが物理的環境の一部としてデジタル情報を知覚するために不可欠である、一貫した視覚的環境が維持され得る常時オン複合現実を実装することが可能である。本開示のこれらおよび他の実施形態は、その利点および特徴の多くとともに、下記の文章および添付の図と併せてより詳細に説明される。
【０００９】
例証的実施形態が、以下の図を参照して下記に詳細に説明される。
【図面の簡単な説明】
【００１０】
【図１】図１は、一実施形態による、受動電力状態を実装するための複合現実システムの例を図示する。
【図２】図２は、一実施形態による、複合現実を提示するために視覚処理ユニット（ＶＰＵ）によって実施されるプロセスの例を図示する。
【図３】図３は、一実施形態による、複合現実を提示するために中央処理ユニット（ＣＰＵ）によって実施されるプロセスの例を図示する。
【図４】図４は、一実施形態による、複合現実デバイスを使用して動的コンテンツを提示するためのプロセスの例を図示する。
【図５】図５は、一実施形態による、複合現実デバイスを使用して予測可能なコンテンツを提示するためのプロセスの例を図示する。
【図６】図６は、一実施形態による、中央処理ユニット（ＣＰＵ）のブロック図の例を図示する。
【図７】図７は、一実施形態による、中央処理ユニット（ＣＰＵ）の内部コンポーネントのブロック図の例を図示する。
【図８】図８は、一実施形態による、グラフィック処理ユニット（ＧＰＵ）のブロック図の例を図示する。
【図９】図９は、一実施形態による、単一のストリームマルチプロセッサのブロック図の例を図示する。
【図１０】図１０は、一実施形態による、視覚処理ユニット（ＶＰＵ）のブロック図の例を図示する。
【発明を実施するための形態】
【００１１】
（詳細な説明）
以下の説明では、説明の目的のために、本開示の実施形態の完全な理解を提供するために、具体的詳細が記載される。しかしながら、種々の実施形態は、これらの具体的詳細を伴わずに実践され得ることが明白であろう。図および説明は、制限であることを意図するものではない。
【００１２】
続く説明は、例示的実施形態のみを提供し、本開示の範囲、適用性、または構成を限定することを意図するものではない。むしろ、例示的実施形態の続く説明は、当業者に例示的実施形態を実装するための実行可能説明を提供するであろう。種々の変更が添付の請求項に記載されるような本開示の精神および範囲から逸脱することなく、要素の機能および配列において行われ得ることも理解されたい。
【００１３】
従来、複合現実デバイス（例えば、ウェアラブル複合現実眼鏡）は、以下の２つの状態を使用することによって、電力消費に対処する：アイドルおよびアクティブ。アイドル状態では、コンテンツは、レンダリングされない。アクティブ状態では、中央処理ユニット（ＣＰＵ）が、コンテンツを決定／識別し、グラフィック処理ユニット（ＧＰＵ）が、決定された／識別されたコンテンツをレンダリングする。しかしながら、この２状態システムは、大量の電力をアクティブ状態において消費し得る。
【００１４】
本開示の実施形態は、より少ない電力を用いて複合現実を実装するために提供される。いくつかの例では、ＧＰＵは、ＣＰＵの使用の一部を取り除くことができる。そのような例では、受動電力状態が、アイドル状態とアクティブ状態との間に提供されることができる。受動状態では、ＧＰＵが、コンテンツを決定／識別／予測し、予測可能なコンテンツをレンダリングし、ＣＰＵは、コンテンツを決定／識別／予測しない。そのような例では、予測可能なコンテンツは、ＣＰＵが、低電力モードとも称されるアイドル／半アイドル状態にある間、ＧＰＵによって識別され、レンダリングされることができる。故に、本開示の実施形態は、ＣＰＵが対応するＧＰＵより多くの電力を消費し得る従来の技法を用いて利用可能ではない利点を提供する。いくつかの例では、受動状態は、予測可能なコンテンツが、ＣＰＵの使用なしに、ＧＰＵによって識別され、レンダリングされることができるという事実を利用することができる。そのような例では、受動状態では、ＧＰＵは、ＣＰＵによって処理される必要がない予測可能なコンテンツをレンダリングすることができる。
【００１５】
図１は、一実施形態による、受動電力状態を実装するための複合現実システムの例を図示する。複合現実システムは、物理的環境上にオーバーレイされた仮想コンテンツを含む持続的複合現実環境を提供することができる。例えば、仮想コンテンツは、物理的環境内に経時的に現れることができる。
【００１６】
複合現実システムは、複合現実デバイス１１０を含むことができる。複合現実デバイス１１０は、仮想コンテンツをユーザに提示することができる。複合現実デバイス１１０はまた、仮想コンテンツがユーザに提示されている間、ユーザがユーザの正面の物理的環境の少なくとも一部を見ることを可能にすることもできる。いくつかの例では、仮想コンテンツは、１つ以上のディスプレイ（例えば、ディスプレイ１１２）を使用して、ユーザに提示されることができる。いくつかの例では、複合現実システムは、１つ以上の複合現実デバイスを含むことができる。
【００１７】
いくつかの例では、複合現実デバイス１１０は、センサデータを生成するための１つ以上のセンサを含むことができる。センサデータは、複合現実デバイス１１０の姿勢（例えば、位置および／または向き）を識別するために使用されることができる。例として、センサデータは、カメラによって収集されることができ、それは、物理的環境の１つ以上の画像を提供することができる。物理的環境は、ユーザの視野内のエリアを含むことができる。いくつかの実装では、物理的環境は、ユーザの視野外のエリアを含むこともできる。そのような実装では、ユーザの視野外のエリアは、１つ以上のカメラを使用して結像されることができる。図１に図示されるセンサは、特定の位置に位置するが、センサは、異なる位置にあることができる。加えて、より多いまたはより少ないセンサが存在することができる。
【００１８】
いくつかの例では、１つ以上のセンサのうちのセンサは、常時オンセンサ１１４または視覚センサ１１６であることができる。常時オンセンサ１１４は、物理的環境の１つ以上の属性を検出し得る低電力センサであることができる。例えば、常時オンセンサ１１４は、温度センサ、圧力センサ、流量センサ、レベルセンサ、近接度センサ、変位センサ、バイオセンサ、ガスセンサ、化学センサ、加速センサ、湿度センサ、湿度センサ、速度センサ、質量センサ、傾斜センサ、力センサ、粘度センサ、または任意のそれらの組み合わせであることができる。
【００１９】
いくつかの例では、常時オンセンサ１１４は、データが常時オンセンサ１１４によって生成されるレートを規定する１つ以上のデータ生成レートモード（時として、パワーモードとも称される）で動作するように設定されることができる。例えば、常時オンセンサ１１４は、低レートモードで動作するように設定されることができ、低レートモードは、データ生成レートが常時オンセンサ１１４が高レートモードで動作するように設定されているときより低いようにする。いくつかの例では、異なる常時オンセンサ１１４は、データを生成するために異なるレートで動作するように設定されることができる。例えば、第１の常時オンセンサは、第１のレートで動作するように設定されることができ、第２の常時オンセンサは、第２のレートで動作するように設定されることができる。そのような例では、第１のレートおよび／または第２のレートは、可変レート（例えば、経時的に変化する）であることができる。
【００２０】
視覚センサ１１６（例えば、カメラ）は、物理的環境の画像を捕捉することができる。視覚センサ１１６は、画像が視覚センサ１１６によって捕捉されるレートを規定する１つ以上のモードで動作するように設定されることもできる。例えば、視覚センサ１１６は、視覚センサ１１６が高レートモードで動作するように設定されているときより画像捕捉レートが低いようにする低レートモードで動作するように設定されることができる。
【００２１】
いくつかの例では、複合現実デバイス１１０は、１つ以上の組み合わせセンサ（例えば、組み合わせセンサ１１８）を含むことができ、それは、常時オンセンサ１１４と視覚センサ１１６との機能性を含むことができる。そのような例では、組み合わせセンサ１１８は、１つ以上のモードで動作するように設定されることができる。例えば、組み合わせセンサ１１８の第１のモードは、常時オンセンサ１１４の機能性に対応し得る。組み合わせセンサ１１８の第２のモードは、視覚センサ１１６の機能性に対応し得る。いくつかの例では、異なるモードは、データが取得される異なるレートを提供することができる。一例では、視覚センサ機能は、第１のモードにある間、５０フレーム／秒、第２のモードにある間、５フレーム／秒のフレームレートを使用して動作することができる。別の例では、視覚センサ機能は、第２のモードでは、５フレーム／秒のフレームレートを使用して動作することができる一方、常時オンセンサ機能は、１０感知／秒のレートを使用して動作することができる。
【００２２】
複合現実システムは、１つ以上のプロセッサ（例えば、視覚処理ユニット（ＶＰＵ）１２０、ＣＰＵ１３０、および／またはＧＰＵ１４０）をさらに含むことができる。単一ＶＰＵ１２０、ＣＰＵ１３０、およびＧＰＵ１４０が説明されるが、１つ以上のＶＰＵ１２０、１つ以上のＣＰＵ１３０、および／または１つ以上のＧＰＵ１４０が使用されることができることにも留意されたい。ＶＰＵ１２０は、複合現実デバイス１１０とともに含まれること、またはそれから遠隔にあることができる。いくつかの例では、ＶＰＵ１２０は、１つ以上の電力モード（例えば、低および高）で動作するように設定されることができる。いくつかの例では、任意の電力モードで動作するＶＰＵ１２０は、ＣＰＵ１３０より少ない電力を消費し得る。
【００２３】
いくつかの例では、ＣＰＵ１３０は、複合現実デバイス１１０とともに含まれること、またはそれから遠隔にあることができる。ＣＰＵ１３０が、複合現実デバイス１１０から遠隔にあるとき、ＣＰＵ１３０は、例えば、複合現実デバイス１１０のためのバッテリパックとともに位置することができる。いくつかの例では、ＣＰＵ１３０は、ＶＰＵ１２０および／またはＧＰＵ１４０より多くの電力を消費することができる。
【００２４】
いくつかの例では、ＧＰＵ１４０は、複合現実デバイス１１０とともに含まれること、またはそれから遠隔にあることができる。ＧＰＵ１４０が、複合現実デバイス１１０から遠隔にあるとき、ＧＰＵ１４０は、例えば、複合現実デバイス１１０のためのバッテリパックとともに位置することができる。いくつかの例では、ＧＰＵ１４０は、１つ以上の電力モード（例えば、低および高）で動作するように設定されることができる。そのような例では、任意の電力モードにおけるＧＰＵ１４０は、ＣＰＵ（例えば、ＣＰＵ１３０）より少ない電力を消費し得る。
【００２５】
いくつかの例では、ＶＰＵ１２０は、知覚フロントエンドモジュール１２２を含むことができる。知覚フロントエンドモジュール１２２は、センサデータを複合現実デバイス１１０の１つ以上のセンサ（例えば、常時オンセンサ１１４、視覚センサ１１６、および／または組み合わせセンサ１１８）から受信することができる。知覚フロントエンドモジュール１２２は、センサデータを使用して、複合現実デバイス１１０の姿勢を識別することができる。例えば、姿勢は、常時オンセンサ１１４、視覚センサ１１６、組み合わせセンサ１１８、または任意のそれらの組み合わせからのデータを使用して識別されることができる。いくつかの例では、姿勢は、複合現実デバイス１１０の位置および／または向き（例えば、横座標、縦座標、垂直座標、ピッチ、ヨー、ロール、または任意のそれらの組み合わせ）を定義することができる。
【００２６】
いくつかの例では、知覚フロントエンドモジュール１２２は、物理的環境の１つ以上の特徴（時として、抽出された情報とも称される）を識別することもできる。例えば、物理的環境内のオブジェクトの角または縁が、識別されることができる。物理的環境の１つ以上の特徴は、ＶＰＵ１２０が、物理的環境の画像を送信するのではなく、１つ以上の特徴を他のプロセッサに送信することを可能にすることができる。いくつかの例では、１つ以上の特徴は、画像が含むであろうピクセル情報の全てを含む必要なく、物理的環境を記述することができる。そのような例では、１つ以上の特徴は、コンポーネント間でやりとりするための物理的環境の表現を作成するために使用されることができる。
【００２７】
いくつかの例では、ＶＰＵ１２０は、常時オン知覚モジュール１２４を含むこともできる。そのような例では、常時オン知覚モジュール１２４は、姿勢および／または１つ以上の特徴を知覚フロントエンドモジュール１２２から受信することができる。いくつかの例では、常時オン知覚モジュール１２４は、姿勢をＣＰＵ１３０および／またはＧＰＵ１４０に送信することができる。いくつかの例では、常時オン知覚モジュール１２４は、常時オン知覚モジュール１２４からの姿勢の受信に応答して、ＣＰＵ１３０および／またはＧＰＵ１４０に低電力モードから高電力モードに遷移させることができる。いくつかの例では、常時オン知覚モジュール１２４は、１つ以上の特徴をＣＰＵ１３０および／またはＧＰＵ１４０に送信することもできる。
【００２８】
いくつかの例では、知覚フロントエンドモジュール１２２または常時オン知覚モジュール１２４のいずれかの機能のうちの１つ以上のものは、ＶＰＵ１２０の異なるコンポーネント上で生じることができる（例えば、姿勢は、常時オン知覚モジュール１２４によって決定されることができる）。他の例では、知覚フロントエンドモジュール１２２または常時オン知覚モジュール１２４のいずれかの機能のうちの１つ以上のものは、ＶＰＵ１２０から遠隔のコンポーネント（例えば、モジュールまたはデバイス）上で生じることができる。
【００２９】
上で説明されるように、ＣＰＵ１３０は、複合現実デバイス１１０の姿勢および／または物理的環境の１つ以上の特徴を、例えば、ＶＰＵ１２０から受信することができる。いくつかの例では、ＣＰＵ１３０は、単独で、またはＶＰＵ１２０と組み合わせてのいずれかにおいて、物理的環境の表現を作成することができる。そのような例では、表現は、物理的環境の３Ｄ再現であることができる。
【００３０】
いくつかの例では、ＣＰＵ１３０は、物理的環境の表現の中に設置すべき仮想コンテンツを識別することができる。そのような例では、仮想コンテンツは、ＣＰＵ１３０上で実行されるアプリケーションに基づいて識別されることができる。例えば、ゲームは、複合現実デバイス１１０を使用するユーザの体験を制御するＣＰＵ１３０上で実行されることができる。いくつかの例では、世界ビューが、物理的環境の表現および仮想コンテンツを含むように生成されることができる。そのような例では、世界ビューは、コンテンツが物理的環境に位置すべき場所を定義する等のために、物理的環境の表現の中に挿入される仮想コンテンツであることができる。いくつかの例では、仮想コンテンツは、３次元表現であることができる。
【００３１】
いくつかの例では、ＣＰＵ１３０は、仮想コンテンツが特定の時間に見えるべき状態を決定することができる。そのような例では、ＣＰＵ１３０は、時間の１つ以上の指示を仮想コンテンツに関連付けることができ、ＧＰＵ１４０は、仮想コンテンツをユーザに提示されるためにレンダリングし、複合現実デバイス１１０の１つ以上のディスプレイに送信すべき時間を決定することができる。
【００３２】
いくつかの例では、コンテンツは、ある期間にわたって、予測可能な運動（例えば、時計、雲、湖の水面等）を有することができる。そのような例では、ＣＰＵ１３０は、１つ以上の期間にわたって、コンテンツを識別し、生成することができる。１つ以上の期間は、予測可能なコンテンツに関連付けられることができる。例証的例では、予測可能なコンテンツは、壁上に搭載される時計であることができる。時計を表すコンテンツは、時計が複合現実デバイス１１０のユーザに正しい時間に現れるように、時計が再レンダリングされ得る期間（例えば、１分毎に１回）を含むことができる。いくつかの例では、デジタル情報が静的オブジェクト（例えば、テーブル）を表すとき、デジタル情報は、コンテンツをレンダリングすべき関連付けられた期間を有していない。
【００３３】
いくつかの例では、ＣＰＵ１３０は、物理的環境の表現、仮想コンテンツ、および／または世界ビューをＧＰＵ１４０に送信することができる。そのような例では、仮想コンテンツは、ピクセル情報の形態にあることができる。
【００３４】
いくつかの例では、ＧＰＵ１４０は、世界オペレータ１４２、知覚ビューモジュール１４４、コンテンツキャッシュ１４６、レンダリングモジュール１４８、世界相互作用モジュール１５２、または任意のそれらの組み合わせを含むことができる。そのような例では、コンテンツキャッシュ１４６は、データをＣＰＵ１３０から受信し（複合現実デバイス１１０によって提示されるべきコンテンツおよび上で説明される世界ビュー等）、および／または、ＶＰＵ１２０から受信し（姿勢等）、受信されたデータを記憶することができる。物理的環境の表現、複合現実デバイス１１０によって提示されるべきコンテンツ、および／または世界ビューは、個々に、アクセス可能であり、コンテンツキャッシュ１４６内で消費可能であることができる。
【００３５】
いくつかの例では、世界オペレータ１４２は、世界ビューをコンテンツキャッシュ１４６から要求することができる。そのような例では、コンテンツキャッシュ１４６は、要求に応答して、コンテンツキャッシュ１４６内に記憶される世界ビューを世界オペレータ１４２に送信することができる。他の例では、コンテンツキャッシュ１４６は、世界ビューを世界オペレータ１４２に周期的に送信し得るか、またはコンテンツキャッシュ１４６は、世界ビューが更新されると（例えば、ＣＰＵ１３０によって）、世界ビューを世界オペレータ１４２に送信し得る。いくつかの例では、世界ビューは、複合現実デバイス１１０に関連付けられた物理的環境の一部のみであり得る。世界ビューが、部分的世界ビューであるとき、世界オペレータ１４２は、ＶＰＵ１２０から直接受信された情報を使用して、および／またはコンテンツキャッシュ１４６内に記憶される他の情報から、完全世界ビューを生成することができる。
【００３６】
いくつかの例では、世界オペレータモジュール１４２は、姿勢および／または１つ以上の特徴を常時オン知覚モジュール１２４から受信することができる。いくつかの例では、世界オペレータモジュール１４２は、姿勢および／または１つ以上の特徴に基づいて、コンテンツキャッシュ１４６内に記憶される世界ビューを更新することができる。
【００３７】
姿勢および世界ビューを使用して、世界オペレータモジュール１４２は、取得すべきコンテンツを識別することができる。いくつかの例では、世界オペレータ１４２は、複合現実デバイス１１０の姿勢に対応する仮想コンテンツの姿勢を決定することもできる。例えば、複合現実デバイス１１０が、特定の場所で特定の方向に面しているとき、世界オペレータモジュール１４２は、仮想コンテンツの位置および／または向きを決定することができる。
【００３８】
いくつかの例では、世界オペレータモジュール１４２が、コンテンツを識別すると、世界オペレータモジュール１４２は、コンテンツのタイプ（例えば、コンテンツが動的であるか、または予測可能であるか）を決定することもできる。
【００３９】
動的コンテンツは、ＧＰＵによって動作可能な論理内で容易に捕捉されない運動を有するオブジェクトを含むことができる。いくつかの例では、動的コンテンツは、ユーザの相互作用および／または複合現実デバイス１１０の特定の姿勢に依存し得る。そのような例では、ＣＰＵ１３０は、相互作用および／または姿勢を分析し、コンテンツを決定する必要があろう。いくつかの例では、動的コンテンツは、予測不可能なコンテンツを含み得る。そのような例では、動的コンテンツは、経時的に変化し得る視覚的外観を伴うコンテンツであり得る。加えて、動的コンテンツは、既存のキャッシュされたコンテンツおよび常時オン知覚モジュール１２４からの入力を利用して、ＧＰＵ１４０によって効率的にレンダリングされないこともあるコンテンツを含み得、それは、世界オペレータモジュール１４２に提供され得る。そのような動的コンテンツの一例は、チェスゲームアプリケーションまたはメッセージングチャットアプリケーションであり得、更新のレンダリングは、遠隔ユーザの入力に依存する。動的コンテンツの別の例は、高度３Ｄ構造であり得、ＧＰＵ１４０は、情報をコンテンツキャッシュ１４６内にキャッシュし、高度３Ｄ構造の位置を決定するための十分なメモリを有していないこともある。
【００４０】
予測可能なコンテンツは、標準的または予測可能な移動を経時的に有するオブジェクトを含み得る。いくつかの例では、予測可能なコンテンツは、空間および時間にわたって、コンテンツキャッシュ１４６内の既存のキャッシュされたコンテンツおよび常時オン知覚モジュール１２４からの入力を用いて決定され得る視覚的外観を伴うコンテンツであり得、それは、世界オペレータモジュール１４２への入力として提供され得る。例えば、予測可能なコンテンツは、外部のもの（例えば、ユーザによる相互作用）ではなく、それ自体の物理的特性および物理的環境の物理的特性に依存する運動を有し得る。いくつかの例では、予測可能なコンテンツは、事前にプログラムされたその運動を有し得、その運動を決定するための余分な処理力は、不必要である。そのような例では、予測可能なコンテンツの運動は、ＣＰＵ１３０が使用される必要がないように、コンテンツキャッシュ１４６内に含まれることができる。予測可能なコンテンツは、経時的運動を有していない静的コンテンツも含み得る。いくつかの例では、静的コンテンツは、依然として、複合現実デバイスの変化または更新された姿勢および静的コンテンツの姿勢から生じる静的コンテンツの向きにおける調節に従って移動し得る。
【００４１】
予測可能なコンテンツの例は、時計、水流、および松明を含むことができる。予測可能なコンテンツの例を例証するために、時計の例が、説明されるであろう。時計は、静止していないが、その移動は、予測可能であり得る。実際、時計に関連付けられたピクセル情報は、コンテンツキャッシュ１４６内に保たれることができる。加えて、時計が移動すべき方法を識別する論理も、コンテンツキャッシュ１４６内に含まれることができる。いくつかの例では、論理は、１分毎の時計の針の移動に対応し得る。予測可能なコンテンツの別の例は、外部擾乱が存在しないときの湖の水面である。水面の波の特性は、単純ランダム化に基づいて再現されることができる。予測可能なコンテンツに対して、予測可能なコンテンツは、予測可能なコンテンツがユーザに表示されるべきとき、ＣＰＵ１３０が予測可能なコンテンツに関連付けられたピクセル情報を生成する必要がないように、コンテンツキャッシュ１４６内に記憶されることができる。そのような例では、ＣＰＵ１３０は、低電力モードから高電力モードに遷移する必要がなく、それによって、電力を節約する。
【００４２】
いくつかの例では、コンテンツのタイプは、コンテンツが複合現実デバイス１１０の姿勢に対してコンテンツキャッシュ１４６内で特定されるかどうかを識別することによって決定されることができる。そのような例では、世界オペレータモジュール１４２も、コンテンツキャッシュ１４６が複合現実デバイス１１０の姿勢に対応する姿勢においてコンテンツを含むかどうかを識別することができる。世界オペレータモジュール１４２が、コンテンツが動的コンテンツであることを決定する場合、世界オペレータモジュール１４２は、動的コンテンツの状態が生成され得るように、メッセージをＣＰＵ１３０に送信し、ＣＰＵ１３０に低電力モードから高電力モードに遷移させることができる。そのような例では、メッセージは、世界ビューを含むことができる。いくつかの例では、メッセージ内に含まれる世界ビューは、ＣＰＵ１３０に、ＣＰＵ１３０が生成する必要があるコンテンツを示すことができる。ＣＰＵ１３０が生成する必要があるコンテンツを限定することは、ＣＰＵ１３０が高電力モードにある時間量を短縮することができる。
【００４３】
メッセージの受信に応答して、ＣＰＵ１３０は、常時オン知覚モジュール１２４から受信された姿勢を分析することができる。いくつかの例では、ＣＰＵ１３０は、世界オペレータモジュール１４２から受信された世界ビューを分析することもできる。姿勢および／または世界ビューを分析することによって、ＣＰＵ１３０は、複合現実デバイス１１０によって提示されるべきコンテンツを決定することができる。そのような例では、ＣＰＵ１３０は、コンテンツに関連付けられたピクセル情報を生成し、ＧＰＵ１４０のコンテンツキャッシュ１４６に送信することができる。
【００４４】
いくつかの例では、世界オペレータモジュール１４２は、世界ビューの決定が、ある時間量にわたって、または特定のエリア内において、もはや必要とされないことを決定することができる。そのような例では、世界オペレータモジュール１４２は、レンダリングモジュール１４８に、複合現実デバイス１１０を使用して表示されるべきピクセル情報の１つ以上のフレームを送信することができる。いくつかの例では、世界オペレータモジュール１４２は、レンダリングモジュール１４８に、１つ以上のフレームの各フレームを表示すべき時間の指示も送信することができる。そのような例では、ＧＰＵ１４０は、世界ビューを決定し、および／またはコンテンツを向け直す必要性を回避することができる。いくつかの例では、指示は、時間および特定の姿勢の両方に対応し得る。そのような例では、時間および特定の姿勢の両方が満たされるとき、レンダリングモジュール１４８は、複合現実デバイス１１０にフレームを表示させることができる。
【００４５】
いくつかの例では、世界オペレータモジュール１４２は、世界ビューを知覚ビューモジュール１４４に送信することができる。そのような例では、世界オペレータモジュール１４２は、複合現実デバイス１１０の姿勢も知覚ビューモジュール１４４に送信することができる。いくつかの例では、知覚ビューモジュール１４４は、姿勢に従ってコンテンツキャッシュ１４６から世界ビュー内に示されるコンテンツを取得することができる。
【００４６】
いくつかの例では、知覚ビューモジュール１４４は、コンテンツが複合現実デバイス１１０によって提示されるために正しく向けられるように、姿勢に基づいて、コンテンツを修正することができる。知覚ビューモジュール１４４が、姿勢に対応するようにコンテンツを修正した後、修正されたコンテンツは、レンダリングモジュール１４８に送信されることができる。レンダリングモジュール１４８は、修正されたコンテンツが複合現実デバイス１１０を使用して表示され得る（例えば、修正されたコンテンツが物理的環境に貼り付くことを確実にする）ように、修正されたコンテンツをレンダリングすることができる。いくつかの例では、レンダリングモジュール１４８は、修正されたコンテンツを物理的環境の表現と整列させ、修正されたコンテンツが正しい位置にあることを確実にすることができる。
【００４７】
上で説明されるように、いくつかの例では、ＧＰＵ１４０は、世界相互作用モジュール１５２をさらに含むことができる。世界相互作用モジュール１５２は、イベント１５０を受信することができる。イベント１５０は、複合現実デバイス１１０によって提示されるコンテンツに影響を及ぼし得る。いくつかの例では、世界相互作用モジュール１５２は、処理のために、イベント１５０を世界オペレータモジュール１４２に送信することができる。上で議論されるように、姿勢は、常時オン知覚モジュール１２４から世界オペレータモジュール１４２に送信されることができる。故に、世界オペレータモジュール１４２によって実施される処理は、イベント１５０および／または姿勢を利用することができる。
【００４８】
いくつかの例では、イベント１５０は、１つ以上のセンサ（例えば、常時オンセンサ１１４および／または視覚センサ１１６）、１つ以上の遠隔デバイス等によって受信されたデータに関連付けられたアクションに関連付けられることができる。イベントは、ジェスチャであることができる。ジェスチャは、ユーザの付属器官の運動を含むことができる（例えば、指を左から右に移動させ、スワイプ運動を示す）。１つ以上の遠隔デバイスによって受信されたデータに関連付けられたアクションの例として、トーテムからの信号も、イベント１５０であることができる。トーテムは、イベント１５０をＧＰＵ１４０に送信し得るデバイスであることができる。いくつかの例では、トーテムは、通信モジュール（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標））を含むことができる。トーテムの例は、コントローラまたはモノのインターネット（ＩｏＴ）デバイスである。ＩｏＴデバイスを例証するために、住宅内のアラームデバイスが、説明され得る。例えば、アラームデバイスは、ある人物が住宅の玄関先に立っていることを示し得る。アラームデバイスからの指示に基づいて、ＧＰＵ１４０は、人物の通知を複合現実デバイス１１０によって表示されるためにレンダリングすることができる。
【００４９】
図２は、一実施形態による、複合現実を提示するためにＶＰＵ（例えば、ＶＰＵ１２０）によって実施されるプロセス２００の例を図示する。プロセス２００は、センサデータ（例えば、画像、ＧＰＳ場所等）を１つ以上のセンサから受信すること（２０５）を含む。１つ以上のセンサが、複合現実デバイス内に含まれ得る。いくつかの例では、センサデータは、１つ以上のセンサによって生成されたデータを含むことができる。１つ以上のセンサは、常時オンセンサ１１４（例えば、常時オンセンサ１１４）、視覚センサ（例えば、視覚センサ１１６）、および／または組み合わせセンサ（例えば、組み合わせセンサ１１８）を含むことができる。いくつかの例では、センサデータは、ＶＰＵの知覚フロントエンドモジュール（例えば、知覚フロントエンドモジュール１２２）によって受信されることができる。いくつかの例では、１つ以上のセンサは、高電力モードで動作するように設定されることができる（例えば、視覚センサ１１６は、高電力モードでは高フレームレートで、低電力モードでは低フレームレートで動作することができる）。
【００５０】
プロセス２００は、センサデータを使用して、複合現実デバイスの姿勢を識別すること（２１０）をさらに含む。いくつかの例では、姿勢は、知覚フロントエンドモジュールによって生成されることができる。そのような例では、知覚フロントエンドモジュールは、姿勢を常時オン知覚モジュール（例えば、常時オン知覚モジュール１２４）に送信することができる。いくつかの例では、複合現実システムのコンポーネントは、処理に時間がかかり得るので、現在の時間における姿勢は、コンテンツが提示されるであろうときの姿勢と異なり得る。そのような例では、姿勢は、将来の時間に関連付けられることができる。特に、姿勢は、コンテンツが複合現実デバイスを使用して提示されるであろう時間における複合現実デバイスの視野の予測であることができる。
【００５１】
プロセス２００は、複合現実デバイスの姿勢をＣＰＵ（例えば、ＣＰＵ１３０）および／またはＧＰＵ（例えば、ＧＰＵ１４０）に送信すること（２１５）をさらに含む。そのような例では、姿勢は、ＧＰＵの世界オペレータモジュール（例えば、世界オペレータモジュール１４２）に送信されることができる。いくつかの例では、姿勢は、同時に、ＣＰＵおよびＧＰＵに送信されることができる。他の例では、姿勢は、ＣＰＵおよびＧＰＵのうちの一方に、次いで、他方に送信されることができる。
【００５２】
プロセス２００は、センサデータを使用して、物理的環境の１つ以上の特徴を識別すること（２２０）をさらに含む。例えば、物理的環境内のオブジェクトの角または縁が、識別されることができる。いくつかの例では、１つ以上の特徴は、姿勢に関連付けられた視野および／または視野内に含まれない１つ以上のエリアに関することができる。物理的環境の１つ以上の特徴は、ＶＰＵが、物理的環境の画像を送信するのではなく、１つ以上の特徴を他のプロセッサに送信することを可能にすることができる。いくつかの例では、１つ以上の特徴は、画像が含むであろうピクセル情報の全てを含む必要なく、物理的環境を記述することができる。そのような例では、１つ以上の特徴は、コンポーネント間でやりとりするための物理的環境の表現を作成するために使用されることができる。プロセス２００は、１つ以上の特徴をＣＰＵに送信することをさらに含む（２２５）。
【００５３】
図３は、一実施形態による、複合現実を提示するためにＣＰＵ（例えば、ＣＰＵ１３０）によって実施されるプロセス３００の例を図示する。そのような例では、ＣＰＵは、低電力モードから高電力モードに遷移することによって始動することができる。他の例では、ＣＰＵは、すでに高電力モードにあることができる。いくつかの例では、プロセス３００は、プロセス２００後に続くことができる。プロセス３００は、表現がＧＰＵ（例えば、ＧＰＵ１４０）のコンテンツキャッシュ（例えば、コンテンツキャッシュ１４６）内に記憶されていないこと、または、複合現実デバイスを使用して提示されるべきコンテンツの初期識別がコンテンツが動的であることを示すことのいずれかを仮定し得る。
【００５４】
プロセス３００は、物理的環境の１つ以上の特徴および／または物理的環境の１つ以上の画像を使用して、物理的環境の表現を生成すること（３３０）を含む。１つ以上の特徴は、画像が含むであろうピクセル情報の全てを含む必要なく、物理的環境を記述することができる。表現は、３次元における物理的環境のコンピュータでシミュレートされた再現であることができる。いくつかの例では、ＣＰＵおよび／またはＶＰＵ（例えば、ＶＰＵ１２０）は、表現を生成することができる。
【００５５】
プロセス３００は、物理的環境とともに提示されるべきコンテンツを決定すること（３３５）をさらに含む。いくつかの例では、コンテンツは、コンテンツが物理的環境内に現れるように、物理的環境のビュー上にオーバーレイされる仮想コンテンツであることができる。いくつかの例では、コンテンツは、ＣＰＵ上で実行されるアプリケーションを使用して決定されることができる。アプリケーションは、表現および／または複合現実デバイスの姿勢に基づいて、コンテンツを決定することができる。
【００５６】
プロセス３００は、表現をコンテンツで更新することをさらに含む（３４０）。いくつかの例では、表現は、決定されたコンテンツを表現の中に挿入することによって更新されることができる。他の例では、表現は、コンテンツが正しい位置および向きで設置されるために必要とされる情報を表現内に含むことができるように、表現に対応する位置情報をコンテンツに関連付けることによって更新されることができる。
【００５７】
プロセス３００は、コンテンツおよび更新された表現をＧＰＵに送信すること（３４５）をさらに含む。いくつかの例では、ＣＰＵは、コンテンツをＧＰＵに送信することができる。そのような例では、コンテンツは、ＧＰＵが複合現実デバイスのためのコンテンツをレンダリングすることを可能にし得るピクセル情報であることができる。プロセス３００は、ＣＰＵを低電力モードに遷移させること（３５０）をさらに含む。いくつかの例では、ＣＰＵは、コンテンツおよび更新された表現が送信されることに応答して、低電力モードに遷移することができる。
【００５８】
図４は、複合現実デバイス（例えば、複合現実デバイス１１０）を使用して動的コンテンツを提示するためのプロセス４００の例を図示する。プロセス４００の開始時、ＣＰＵ（例えば、ＣＰＵ１３０）および／またはＶＰＵ（例えば、ＶＰＵ１２０）は、低電力モードで動作するように設定されることができる。
【００５９】
プロセス４００は、デバイスの姿勢（例えば、複合現実デバイス）を受信すること（４０５）を含む。いくつかの例では、姿勢は、ＧＰＵ（例えば、ＧＰＵ１４０）の世界オペレータモジュール（例えば、世界オペレータ１４２）によって受信されることができる。そのような例では、姿勢は、ＶＰＵから受信されることができる。いくつかの例では、姿勢は、上で説明されるように、複合現実デバイスの周囲の物理的環境のセンサデータを使用して識別されることができる。そのような例では、姿勢は、複合現実デバイスの向きおよび／または場所であることができる。
【００６０】
プロセス４００は、物理的環境の表現を取得することをさらに含む（４１０）。いくつかの例では、世界オペレータモジュールは、表現を取得することができる。そのような例では、物理的環境の表現は、ＧＰＵのコンテンツキャッシュ（例えば、コンテンツキャッシュ１４６）内に記憶されることができる。いくつかの例では、表現は、上で説明される更新された表現であることができる。
【００６１】
プロセス４００は、複合現実デバイスによって提示されるべきコンテンツを識別すること（４１５）をさらに含む。いくつかの例では、識別は、ＧＰＵの世界オペレータモジュールおよび／または知覚ビューモジュール（例えば、知覚ビューモジュール１４４）によって実施されることができる。識別は、姿勢に対応する表現の一部を決定することを含むことができる。例えば、複合現実デバイスの視野は、表現の一部であることができる。そのような例では、姿勢は、複合現実デバイスが面している方向を示すことができる。
【００６２】
表現の一部が識別されると、世界オペレータモジュールおよび／または知覚ビューモジュールは、表現の一部内にあるコンテンツを識別することができる。世界オペレータモジュールが、コンテンツを識別する場合、世界オペレータモジュールは、コンテンツの１つ以上の指示と、コンテンツに関する姿勢または複合現実デバイスの姿勢のいずれかとを知覚ビューモジュールに送信することができる。知覚ビューモジュールがコンテンツを識別する場合、知覚ビューモジュールは、コンテンツを識別するために、表現および／または姿勢を受信していることができる。
【００６３】
プロセス４００は、コンテンツが動的であることを決定すること（４２０）をさらに含む。いくつかの例では、コンテンツは、表現内に含まれる１つ以上の指示に基づいて、動的であると決定されることができる。他の例では、コンテンツは、コンテンツがコンテンツキャッシュ内で見つかるかどうかに基づいて、動的であると決定されることができる。いくつかの例では、コンテンツが動的であると決定することは、世界相互作用が生じたかどうかを決定することに基づくことができる。そのような例では、世界相互作用（例えば、イベント１５０）は、ＧＰＵの世界相互作用モジュール（例えば、世界相互作用モジュール１５２）によって受信され、識別されることができる。世界相互作用が生じた場合、コンテンツは、動的であると決定されることができる。
【００６４】
プロセス４００は、メッセージをＣＰＵに送信すること（４２５）をさらに含む。いくつかの例では、メッセージは、コンテンツが動的であることの決定に応答して、送信されることができる。いくつかの例では、メッセージは、表現および／または姿勢を含むことができる。いくつかの例では、メッセージは、ＣＰＵに、提示されるべきコンテンツを決定することと、コンテンツをＧＰＵに送信することとを含む図３に説明される１つ以上のステップを実施させることができる。
【００６５】
プロセス４００は、コンテンツをＧＰＵによって受信すること（４３０）をさらに含む。いくつかの例では、コンテンツは、コンテンツキャッシュによって受信されることができる。そのような例では、コンテンツは、ＣＰＵによって決定されることができる。いくつかの例では、コンテンツがコンテンツキャッシュによって受信された後、知覚ビューモジュールは、コンテンツをコンテンツキャッシュから取得することができる。いくつかの例では、コンテンツは、コンテンツの指示をコンテンツキャッシュに送信することによって取得されることができる。そのような例では、指示は、コンテンツの姿勢を含むことができる。他の例では、コンテンツは、デフォルト姿勢におけるコンテンツの３次元表現であることができる。そのような例では、知覚ビューモジュールは、コンテンツの姿勢を変化させ、複合現実デバイスの姿勢に対応させることができる。いくつかの例では、知覚ビューモジュールは、第１のコンテンツと第２のコンテンツとの間の正しいオクルージョン、および第１のコンテンツと物理的環境との間の正しいオクルージョンを確実にすることもできる。オクルージョンは、物理的環境内のオブジェクトが、少なくとも部分的に、物理的環境上にオーバーレイされるためのコンテンツのビューを遮断するであろう時間を記述することができる。
【００６６】
プロセス４００は、コンテンツを物理的環境の表現に整列させること（４３５）をさらに含む。整列は、コンテンツが表現に対応する位置に現れるように、コンテンツを複合現実デバイスの視野内に位置付けることを含むことができる。言い換えると、整列は、コンテンツを物理的環境に対して追随させることができる。いくつかの例では、整列は、ＧＰＵのレンダリングモジュール（例えば、レンダリングモジュール１４８）によって実施されることができる。プロセス４００は、整列させられたコンテンツを複合現実デバイスに送信すること（４４０）と、複合現実デバイスを使用して整列させられたコンテンツを提示すること（４４５）とをさらに含む。
【００６７】
図５は、一実施形態による、複合現実デバイスを使用して予測可能なコンテンツを提示するためのプロセス５００の例を図示する。プロセス５００は、複合現実デバイスを提供することを含む。複合現実デバイスは、ＶＰＵ（例えば、ＶＰＵ１２０）と、１つ以上のセンサ（例えば、常時オンセンサ１１４、視覚センサ１１６、および／または組み合わせセンサ１１８）と、ディスプレイとを含むことができる（５０５）。いくつかの例では、センサは、カメラ、加速度計、ジャイロスコープ、トーテム、または全地球測位システムであることができる。その他のセンサも、使用されることができる。
【００６８】
プロセス５００は、物理的環境に関連付けられたセンサデータを取得すること（５１０）をさらに含む。いくつかの例では、センサデータは、常時オンセンサ（例えば、常時オンセンサ１１４）、視覚センサ（例えば、視覚センサ１１６）、組み合わせセンサ（例えば、組み合わせセンサ１１８）、または任意のそれらの組み合わせから受信されることができる。いくつかの例では、センサデータは、ＶＰＵの知覚フロントエンドモジュール（例えば、知覚フロントエンドモジュール１２２）によって取得されることができる。
【００６９】
プロセス５００は、センサデータを使用して、複合現実デバイスの姿勢を決定すること（５１５）をさらに含む。いくつかの例では、姿勢は、複合現実デバイスの構成空間内におけるものであることができる。そのような例では、姿勢は、複合現実デバイスの位置および向きを定義することができる。
【００７０】
プロセス５００は、複合現実デバイスの姿勢をＧＰＵ（例えば、ＧＰＵ１４０）に送信すること（５２０）をさらに含む。いくつかの例では、ＧＰＵは、デバイスから遠隔にあることができる。プロセス５００は、姿勢に対応するコンテンツおよび／または物理的環境の表現を識別すること（５２５）をさらに含む。いくつかの例では、コンテンツは、予測可能なコンテンツであることを識別されることができる。そのような例では、コンテンツは、表現内の１つ以上のインジケータに基づいて、予測可能なコンテンツであることを識別されることができる。他の例では、コンテンツは、ＧＰＵによって識別されることに先立って、コンテンツがＧＰＵのコンテンツキャッシュ（例えば、コンテンツキャッシュ１４６）内に記憶されているかどうかに基づいて、予測可能なコンテンツであることを識別されることができる。
【００７１】
いくつかの例では、表現は、コンテンツがレンダリングされるべきではないことを示し得る。そのような例では、ステップ５３０−５４０は、スキップされることができる。加えて、いくつかの例では、決定は、コンテンツが提示されるべきではない持続時間から行われることができる。そのような例では、持続時間は、時間的または空間的であることができる。
【００７２】
コンテンツが提示されるべきではないときを例証するために、居間に居るユーザのユースケースが、説明され得る。ユーザが洗面所に歩いて行くとき、次の１０メートルに、デジタルコンテンツが存在しないであろうと決定が行われ得る。その時間中、１０メートルを過ぎたかどうかを決定するために必要とされるもの以外の全てが、アイドルであることができる。
【００７３】
プロセス５００は、コンテンツを物理的環境の表現に整列させること（５３０）と、整列させられたコンテンツを複合現実デバイスに送信すること（５３５）と、複合現実デバイスを使用して、整列させられたコンテンツを提示すること（５４０）とをさらに含む。いくつかの例では、コンテンツを整列させることは、複合現実デバイスの姿勢に対してコンテンツを表示する向きを決定することと、コンテンツを表示するための向きに基づいて、コンテンツを修正することとを含むことができる。いくつかの例では、コンテンツは、ＧＰＵの知覚ビューモジュール（例えば、知覚ビューモジュール１４４）によって修正されることができる。修正は、コンテンツを表示のために正しい向きであるように構成することを含むことができる。
【００７４】
いくつかの例では、ＶＰＵは、センサデータがより低速のレートで受信され得ることを決定することができる。そのような例では、１つ以上のセンサは、低電力モードで動作するように設定されることができる。いくつかの例では、ＶＰＵは、１つ以上のセンサを低電力モードに設定することができる。いくつかの例では、１つ以上のセンサの低電力モードは、１つ以上のセンサのうちのセンサに、より少ない頻度で（より低いレートで）データを生成させることができる。いくつかの例では、１つ以上のセンサの低電力モードは、１つ以上のセンサのうちのセンサに、データを生成させないことができる。加えて、いくつかの例では、１つ以上のセンサのうちのセンサの組は、センサの組が必要とされないとき、アイドルであることができる。
【００７５】
図５に図示される具体的ステップは、一実施形態による、複合現実デバイスを使用して複合現実コンテンツを提示する特定の方法を提供することを理解されたい。ステップの他のシーケンスも、代替実施形態に従って実施され得る。例えば、本開示の代替実施形態は、異なる順序で上で概略されたステップを実施し得る。さらに、図５に図示される個々のステップは、個々のステップの必要に応じて種々のシーケンスで実施され得る複数のサブステップを含み得る。さらに、追加のステップが、特定の用途に応じて追加または除去され得る。当業者は、多くの変形例、修正、および代替を認識するであろう。
【００７６】
プロセス２００、３００、４００、および５００は、論理フロー図として図示され、その動作は、ハードウェア、コンピュータ命令、またはそれらの組み合わせ内に実装され得る動作のシーケンスを表す。コンピュータ命令のコンテキストでは、動作は、１つ以上のプロセッサによって実行されると、列挙される動作を実施する１つ以上のコンピュータ読み取り可能な記憶媒体上に記憶されるコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実施する、または特定のデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。動作が説明される順序は、限定として解釈されることを意図するものではなく、任意の数の説明される動作が、プロセスを実装するために、任意の順序で、および／または並行して組み合わせられることができる。
【００７７】
加えて、プロセス２００、３００、４００、および５００は、実行可能命令で構成された１つ以上のコンピュータシステムの制御下で実施され得、１つ以上のプロセッサ上で集合的に実行されるコード（例えば、実行可能命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として、ハードウェアによって、またはそれらの組み合わせによって、実装され得る。コードは、例えば、１つ以上のプロセッサによって実行可能な１つ以上の命令を備えているコンピュータプログラムの形態において、コンピュータ読み取り可能な記憶媒体上に記憶され得る。コンピュータ読み取り可能な記憶媒体は、非一過性であり得る。
【００７８】
図６−１０は、種々の実施形態による、複合現実システムのコンポーネントの可能な構成を説明する。可能な構成は、各構成の具体的詳細を提供するが、当業者は、本開示がコンポーネントのための他の構成も対象とすることを認識するであろう。
【００７９】
図６は、一実施形態による、中央処理ユニット（ＣＰＵ）６００のブロック図の例を図示する。ＣＰＵ６００は、ローカルおよび／または外部メモリ内に記憶されるソフトウェア命令を実行することができる。ＣＰＵ６００は、制御コンポーネント（例えば、制御コンポーネント６０８）、１つ以上の機能ユニット（例えば、機能ユニット６０４）、メモリ（例えば、キャッシュ６１２およびランダムアクセスメモリ（ＲＡＭ）６１６）、または任意のそれらの組み合わせのうちの少なくとも１つ以上のものを含むことができる。制御コンポーネント６０８は、入力および出力（Ｉ／Ｏ）、命令スケジューリング、デコード、ロード／記憶動作、およびＣＰＵ６００に関する情報のやりとりを制御することによって、ＣＰＵ６００の動作を指示することができる。加えて、制御コンポーネント６０８は、内部時計および機能ユニット６０４（例えば、同期機能ユニット）を使用したタイミング信号の生成を通して、命令の処理を調整することができる。
【００８０】
機能ユニット６０４は、ＣＰＵ６００の基本機能性を表すことができる。いくつかの例では、機能ユニット６０４は、ソフトウェア命令によって支持されるような動作および／または計算を実施するユニットであることができ、タイプおよび能力が変動し得る。例えば、機能ユニット６０４は、算術論理ユニット（ＡＬＵ）、浮動点ユニット（ＦＰＵ）、メモリインターフェースユニット等であることができる。ＡＬＵは、１つ以上の基本算術および／またはビット演算を１つ以上の整数ベースの２進数に実施することができる。対照的に、ＦＰＵは、１つ以上の算術および／またはビット演算を１つ以上の浮動小数点数（例えば、実数の近似）に実施することができる。メモリインターフェースユニットは、制御コンポーネント６０８にＲＡＭまたはハードディスクドライブ（ＨＤＤ）等の外部メモリおよびキャッシュ６１２およびＲＡＭ６１６等のオンボードメモリへのインターフェースを提供することができる。いくつかの例では、機能ユニット６０４は、同種の組の１つ以上のＡＬＵ、１つ以上のＦＰＵ、１つ以上のメモリインターフェースユニット等を含むことができる。他の例では、機能ユニット６０４は、限定ではないが、２つのＡＬＵ、ＦＰＵ、およびメモリインターフェースユニット等の異なるタイプの前述の機能ユニットの任意の組み合わせを含むことができる。概して、ＣＰＵ６００は、一般的実行ユニットであって、短待ち時間を伴い、任意のタイプの命令を実行するように動作可能であることができる。さらに、ＣＰＵ６００は、４つの機能ユニット６０４を描写するが、ＣＰＵ６００は、本開示の精神および範囲から逸脱することなく、任意の数の機能ユニット６０４を含むことができる。
【００８１】
いくつかの例では、機能ユニット６０４は、持続的メモリ（例えば、ＲＡＭ６１６）内に記憶されるプログラム命令を処理することができない。そのような例では、制御コンポーネント６０８は、ＣＰＵ６００の命令セットアーキテクチャに従って、メモリ内に記憶されるソフトウェア命令をデコードし、１つ以上の個々のオペレータ、オペランド、および／または制御信号を機能ユニットに渡すことができる。例えば、制御コンポーネント６０８は、命令セットアーキテクチャに従って、ソフトウェア命令を分析し、オペレータに対応する１つ以上のビットおよび１つ以上のビットによって定義されたオペレータ（例えば、加算、減算等）を決定することができる。制御コンポーネント６０８は、オペランドおよび／または制御信号のために動作することもできる。いくつかの例では、命令セットアーキテクチャは、固定長命令（例えば、全ての命令は、同じ数のビットを有する）を要求し得る。しかしながら、ある他の例では、制御コンポーネント６０８は、可変長命令（例えば、第１の命令は、第２の命令と比較して、異なる数のビットを含むことができる）をデコードするように動作可能であることができる。命令セットアーキテクチャが、可変命令長を有効にするとき、命令は、複数のバイトを含むことができ、他の命令より多いまたはより少ないバイトを含むことができる。例えば、第１の命令は、４バイト（すなわち、３２ビット）を含むことができ、第２の命令は、２バイト（すなわち、１６バイト）を含むことができる。制御コンポーネント６０８は、最後のバイト内の特別なキャラクタを認識することによって、可変命令の終了を識別することができる。ＣＰＵ６００は、ソフトウェア命令を適切にデコードおよび／または実行するために、命令セットアーキテクチャに従って、命令を予期することができる。
【００８２】
ＡＬＵおよびＦＰＵは、２つのオペランド、オペレータ、および少なくとも１つの制御信号（タイミング信号等）を表す少なくとも４つの入力を含むことができる。タイミング信号は、制御コンポーネント６０８が、機能ユニットが入力を処理する時間を管理することを可能にすることができる。例えば、制御コンポーネント６０８は、タイミング信号を使用して、同時に、特定の順序において、非同期して、またはソフトウェア命令もしくは制御コンポーネント６０８によって必要とされ得るような任意の他の様式において、ＡＬＵ（または他の機能ユニット）を動作させることができる。ＡＬＵまたはＦＰＵは、算術演算の結果および少なくとも１つの制御信号を出力することができる。出力制御信号は、ＣＰＵ６００のステータスを示すことができ、後続算出においてＡＬＵまたはＦＰＵによって（入力として）使用される関連演算のために別のＡＬＵに渡されること、またはレジスタ内に記憶されることができる。例えば、出力信号は、算術結果が、負、ゼロ、またはオーバーフロー（例えば、演算が、大きすぎて機能ユニットによって表すことができない数をもたらした）であったことを示すことができる。
【００８３】
制御コンポーネント６０８は、命令をメモリ（例えば、キャッシュ６１２およびＲＡＭ６１６）からフェッチすること、デコードすること、および／またはスケジュールすることができる。制御コンポーネント６０８は、命令パイプラインを動作させ、１つ以上のデコードされた命令を各機能ユニット上で並列または半並列様式でスケジュールすることができる。例えば、以下の３つの算出、すなわち、ｘ＝５＋６、ｙ＝１＋２、ｚ＝ｘ＋ｙを有するソフトウェアプログラムは、少なくとも部分的に並行して実行されることができる。ｘ＝５＋６およびｙ＝１＋２は、互いに依存しないので、ｘおよびｙ算出の両方は、並行して実行されることができる。しかし、ｚ算出は、最初の２つの方程式が実行を完了するまで待たなければならない。命令パイプラインは、全て３つの命令をスケジュールし、それらをわずか２つのサイクルで完了させ得る。制御コンポーネント６０８は、命令のスケジューリングを管理し、一度に動作している機能ユニットの数を最大化し、それによって、最終結果を生成するために必要である総時間を最小化することができる。
【００８４】
いくつかの例では、制御コンポーネント６０８の一般的フローは、１つ以上の命令をメモリからフェッチすることと、１つ以上の命令をデコードおよび解析することと、命令スケジュールを展開すること（例えば、命令パイプラインを通して）と、命令スケジュールに従って１つ以上のタイミング信号とともに処理するために、１つ以上の命令を１つ以上の機能ユニット６０４に渡すことと、結果を１つ以上の機能ユニット６０４から受信することと、結果をメモリ内に戻し記憶することとを含むことができる。
【００８５】
制御コンポーネント６０８は、後続命令を処理する前、中間結果および１つ以上のデコードされた命令をキャッシュ６１２またはＲＡＭ６１６内に記憶することができる。しかしながら、制御コンポーネント６０８は、メモリ階層に従って、データを記憶することができ、それは、記憶されるデータのタイプに応じて、１つの形態のメモリを別の形態のメモリより優先させ得る。いくつかの例では、キャッシュ６１２は、キャッシュ６１２と制御コンポーネント６０８および１つ以上の機能ユニット６０４の近接度に起因して、より低いコスト（例えば、待ち時間および電力）を有することができる。そのような例では、制御コンポーネント６０８は、データが差し迫ってまたは頻繁にロードされるとき、ＲＡＭ６１６よりキャッシュ６１２を優先させることができる。キャッシュ６１２は、有限かつ貴重であり得るので、直ちに要求されないこともあるデータは、ＲＡＭ６１６または外部不揮発性メモリ（図示せず）内に記憶され得る。例えば、上記の算出例および単一のみのＡＬＵの場合。制御コンポーネント６０８は、第１の算出（例えば、ｘ＝５＋６）をフェッチし、処理するためにそれをＡＬＵに渡し、結果をキャッシュ６１２に返すことができる。制御コンポーネント６０８は、次いで、第２の算出（例えば、ｙ＝１＋２）をＡＬＵに渡し、第２の下位算出の結果をキャッシュ６１２内に記憶し、次いで、最後の算出（例えば、ｚ＝ｘ＋ｙ）を第１および第２の算出からの結果とともにフェッチし得る。最後の命令の結果は、完了された命令を表し、直ちに必要とされないこともあり、したがって、ＲＡＭ６１６内または不揮発性メモリ内に外部で記録され得る。
【００８６】
キャッシュ６１２は、１つ以上のロードおよび記憶動作のために低減させられた待ち時間を提供する任意のランダムアクセスメモリであることができる。例えば、キャッシュ６１２は、静的ランダムアクセスメモリ（ＳＲＡＭ）であることができる。いくつかの例では、ＣＰＵ６００は、複数のコア（例えば、２つのコア、４つのコア、８つのコア、またはそれを上回るコア）を含むことができ、各コアは、制御コンポーネント（例えば、制御コンポーネント６０８）と、１つ以上の機能ユニット（例えば、機能ユニット６０４）と、キャッシュ（例えば、キャッシュ６１２）とを含むことができる。そのような例では、ＣＰＵ６００は、複数のコアによって共有され得る全体的キャッシュ（図示せず）をさらに含むことができる。
【００８７】
いくつかの例では、キャッシュ６１２は、１つ以上のレベル（例えば、Ｌ１、Ｌ２、Ｌ３、およびＬ４）を含むことができ、ここで、Ｌ１キャッシュは、最短アクセス待ち時間を有し、Ｌ４キャッシュは、最長アクセス待ち時間を有する。いくつかの例では、Ｌ１キャッシュは、ＣＰＵ６００の他のコアによって共有されず、特定のＣＰＵコア専門であるキャッシュ６１２を表すことができる。そのような例では、Ｌ２−Ｌ４キャッシュは、ＣＰＵ６００の複数のコア間で共有される全体的キャッシュの一部であることができる。Ｌ４キャッシュは、ＣＰＵ６００の内部または外部にあることができ、動的ＲＡＭ（ＤＲＡＭ）または内蔵動的ＲＡＭ（ｅＤＲＡＭ）等のＳＲＡＭまたは任意の他のタイプのＲＡＭを含むことができる。ＣＰＵ６００は、種々のレベルを伴うキャッシュメモリを含む１つまたは任意の数のコアおよび任意の数またはタイプのメモリを含むことができる。
【００８８】
図７は、一実施形態による、ＣＰＵ７００の内部コンポーネント（例えば、図６のＣＰＵ６００）のブロック図の例を図示する。上で述べられたように、ＣＰＵ７００の一般的フローは、フェッチすること、デコードすること、および実行することであり得る。命令を実行するプロセスは、プログラムカウンタ７０８を用いて開始することができ、プログラムカウンタ７０８は、プログラム内の１つ以上の命令のための実行の順序を制御することができる。プログラムカウンタ７０８の現在のプログラムカウンタ値は、実行されるべき命令のアドレス場所であることができる。現在のプログラムカウンタ値は、メモリインターフェース７１６に渡されることができ、メモリインターフェース７１６は、ＣＰＵ７００の内部および／または外部メモリへのアクセスを有効にすることができる。メモリインターフェース７１６は、メモリ７２８内のプログラムカウンタ値に関連付けられたアドレスにアクセスし、命令を命令レジスタ７０４に渡すことができる。メモリ７２８は、揮発性および／または不揮発性メモリであり得る。命令レジスタ７０４は、短アクセス待ち時間を伴う短期メモリ（図６のキャッシュ６１２等）であることができる。命令レジスタ７０４は、命令を機能ユニット７２０に渡すこと、または、命令がデコードされる必要がある場合、それを命令デコーダ７１２に渡すことができる。
【００８９】
命令デコーダ７１２は、ＣＰＵ７００の命令セットアーキテクチャに従って、機能ユニット７２０の実行を管理することができる。命令デコーダ７１２は、１つ以上のビットから成る２進数を命令レジスタ７０４から取り込み、第１のオペランド、第２のオペランド、オペレータ、および記憶場所に対応するビットを識別することができる。命令セットアーキテクチャのタイプは、異なり得、それぞれ、異なる規定に従い得る。例えば、縮小命令セットコンピューティング（ＲＩＳＣ）アーキテクチャ（命令長は、３２ビットである）において定数を変数に加算する命令のために、最初の６ビットは、オペレータ（例えば、この例では、加算）に対応し得、次の５ビットは、結果の記憶アドレスに対応し得、次の５ビットは、第１のオペランドに対応し得、最後の１６ビットは、定数に対応し得る。命令デコーダ７１２は、オペレータ、１つ以上のオペランド、および命令の他の側面が特定の順序で現れることを予期することができる。命令デコーダ７１２は、命令セットアーキテクチャが命令デコーダ７１２に既知であることを所与として、任意の命令セットアーキテクチャ上で動作することができる。オペレータおよびオペランドは、デコードされると、機能ユニット７２０に渡されることができ、機能ユニット７２０は、動作を実行することができる。
【００９０】
機能ユニット７２０（例えば、ＡＬＵ、ＦＰＵ等）は、入力を命令デコーダ７１２から受信し、出力を生成することができる。出力が、命令の結論を表す場合、出力は、出力をメモリインターフェース７１６（出力をメモリ７２８内に記憶する）に、または出力が後続命令によって使用される場合、命令レジスタ７０４に渡すことができる。命令が不完全である場合、機能ユニット７２０の出力は、結果をアキュムレータ７２４に渡すことができる。アキュムレータ７２４は、中間算術および論理を記憶するレジスタであることができる。アキュムレータ７２４は、機能ユニット７２０の複数回の通過を要求する１つ以上の動作のために、機能ユニット７２０の出力を蓄積することができる。機能ユニット７２０の各反復は、それが後続反復において機能ユニット７２０によって再使用され得るようにアキュムレータ７２４に渡されることができるか、または、完了すると、記憶のためにメモリインターフェース７１６に渡されることができる。例えば、ＡＬＵが、命令ｙ＝５＾２を実行する場合、ＡＬＵは、命令をｙ＝５＋５＋５＋５＋５として処理することができる。しかしながら、ＡＬＵは、オペランドあたり２つのオペレータのみをとることができるので、ＡＬＵは、加算演算を４回実行することができる。そのような例では、ＡＬＵは、１０＋５を２回目の反復で、１５＋５を３回目の反復で、および２０＋５を最後の反復で処理することができる。最終結果（すなわち、２５）に到達すると、アキュムレータからの出力は、メモリ７２８内に記憶されることができる。機能ユニット７２０およびアキュムレータ７２４は、２進演算においてシフト加算を使用して、乗算を処理することもできる。機能ユニット７２０が、演算の最後の反復を処理すると、結果は、メモリ７２８に渡されることができる。
【００９１】
命令が完了すると、プログラムカウンタ７０８は、プログラムカウンタ値が次の命令のメモリアドレスと等しくなるように、命令セットアーキテクチャに従って、命令の長さ（例えば、１６ビット、３２ビット等）だけインクリメントされることができる。プログラムカウンタ７０８は、次いで、プログラムが完了するまで、その次の命令をメモリインターフェース７１６を通してロードし、上で説明されるプロセスを継続することができる。
【００９２】
図８は、一実施形態による、グラフィック処理ユニット（ＧＰＵ）８００のブロック図の例を図示する。ＧＰＵは、本開示全体を通して具体的に述べられたが、ＶＰＵが、いくつかの例では、ＧＰＵの機能性に取って代わるために使用されることができることに留意されたい。いくつかの例では、ＧＰＵ８００は、マイクロプロセッサであることができる。そのような例では、ＧＰＵ８００の独特のアーキテクチャが、ＣＰＵ（例えば、ＣＰＵ６００／７００）と異なるプロセス能力を提供することができる。ＣＰＵ６００／７００とＧＰＵ８００との間の差異は、各ハードウェア要素の最適化に関し得る。ＣＰＵ６００／７００は、大量のキャッシュ６１２を使用することによって、短待ち時間（フェッチから実行まで）を伴って、スレッド（例えば、全体的プログラムの別々のサブプログラム）を実行するように設計されることができる。対照的に、ＧＰＵ８００は、多数の類似命令を並行して実行するように設計されることができる。例えば、ＧＰＵ８００は、１６のストリーミングマルチプロセッサ（ＳＭ）８１６を含むことができ、各ＳＭ８１６は、スレッドのブロックを別のＳＭ８１６と並行して実行することができる。いくつかの例では、ＧＰＵ８００は、ＳＭ８１６の数と等しいスレッドのブロックの数を一度に実行することができる。いくつかの例では、ＧＰＵ８００は、多数の反復的演算を実行することにより長けており、並列ＳＭ８１６の有効性を最大化することができる。ＧＰＵ８００は、多くのＳＭ８１６を含むことができる。１６のＳＭ８１６が、図８に示されるが、ＧＰＵ８００は、任意の数のＳＭ８１６を含み得る。
【００９３】
いくつかの例では、各ＳＭは、レベル２（Ｌ２）キャッシュ８１２を共有することができる。Ｌ２キャッシュ８１２を共有することによって、第１のＳＭ８１６は、第１のＳＭ８１６および第２のＳＭ８１６が並行して実行するとき、第２のＳＭ８１６の中間結果を使用することができる。Ｌ２キャッシュ８１２は、短待ち時間ロード／記憶動作を有効にし、データが異なるＳＭ８１６間でやりとりされることを可能にすることができる。
【００９４】
いくつかの例では、１つ以上のメモリコントローラ（例えば、メモリコントローラ８０４）は、ホストインターフェース８０８を通して、ＳＭ８１６と、Ｌ２キャッシュ８１２と、外部デバイスまたはシステム（図示せず）との間のインターフェースを提供することができる。メモリコントローラ８０４は、より少ないまたは無期限に使用されるデータの記憶のために、Ｌ２キャッシュ８１２のものより長い待ち時間を伴うランダムアクセスメモリ（ＲＡＭ）を含むことができる。例えば、メモリコントローラ８０４は、限定ではないが、ＤＲＡＭ、ＳＲＡＭ、ｅＤＲＡＭ等、または任意のそれらの組み合わせを含むことができる。いくつかの例では、メモリコントローラ８０４は、任意のメモリを含まず、むしろ、ＧＰＵ８００が、ＲＡＭ、読み取り専用メモリ（ＲＯＭ）、ＨＤＤ、フラッシュメモリ等の外部揮発性および／または不揮発性メモリにアクセスすることを可能にし得る。加えて、メモリコントローラ８０４は、ホストインターフェース８０８を通して、ＧＰＵ８００の外部のハードウェアまたはソフトウェアから内部ＲＡＭまたはＬ２キャッシュ８１２へのアクセスを促進することができる。
【００９５】
いくつかの例では、ＧＰＵ８００によって実行される命令は、図６のＣＰＵ６００または図７のＣＰＵ７００、視覚処理ユニット（ＶＰＵ）（図１０に描写される）、または外部メモリ（例えば、ＲＡＭ、ＲＯＭ、ＨＤＤ、フラッシュメモリ等）等の外部ソースから受信されることができる。ホストインターフェース８０８は、インターフェースを提供することによって、外部ソースアクセスをＧＰＵ８００のコンピューティングリソースに提供することができる。ホストインターフェース８０８から受信された情報は、メモリコントローラ８０４に渡されることができ、それは、必要に応じて、関連データをＬ２キャッシュ８１２または個々のＳＭ８１６のいずれかに渡すことができる。
【００９６】
ＧＰＵ８００は、多数のスレッドを並行して実行可能であることによって、ＣＰＵ（例えば、ＣＰＵ６００／７００）のアーキテクチャと異なり得る。メモリコントローラ８０４は、ソフトウェア命令に従ってＳＭ８１６上で実行される同時スレッドを管理および調整することができる。例えば、ＧＰＵ８００は、１０８０ｐビデオの単一フレームを更新するタスクが課され得る。そのような例では、ＧＰＵ８００は、各フレームのピクセル（２，０７３，６００ピクセルを含み得る）のためのピクセル値を計算する必要があり得る。そのような命令のために、ＧＰＵ８００は、２百万回にわたってピクセルに対して同じ計算を解決しなければならない。メモリコントローラ８０４は、単一タスクにおいて、スレッド（例えば、１つ以上のスレッド）のブロックを区別することによって、ＧＰＵ８００の同時処理能力を活用することができ、各ＳＭ８１６は、スレッドのブロックを並行して実行する。複数のＳＭ８１６の並列処理能力を活用することによって、ＧＰＵ８００は、フレームレート１〜２４０フレーム／秒（またはある他のフレームレート）を伴うビデオをシームレスにレンダリングするための計算を提供することができる。
【００９７】
いくつかの例では、ＧＰＵ８００は、値を変化させたフレームの部分のみを更新することによって、電力を節約することができる。例えば、第１のフレームの一部が、黒色であり、第２のフレームの同じ部分が、同じ色である場合、ＧＰＵ８００は、変化していないフレームの部分のための値を計算および更新することにリソースを費やす必要はない。そのような例では、デルタ（フレーム間の差異）のみが、処理される必要がある。メモリコントローラ８０４は、ＳＭ８１６上で実行されるスレッドを調整し、ＧＰＵ８００の並列処理能力をもたらし、ＧＰＵ８００が各フレームを更新し、フレームレートに従ってフレームを表示することを可能にすることができる。いくつかの例では、メモリコントローラ８０４は、多くのＳＭ８１６上で実行される個々のスレッドを管理する単一統合スレッドを表す、ギガスレッドと同様に動作することができる。いくつかの例では、ＧＰＵ８００は、グラフィックを処理するために特化されたＣＰＵであることができる。
【００９８】
図９は、一実施形態による、単一のストリーミングマルチプロセッサ９００（図８のストリーミングマルチプロセッサ８１６等）のブロック図の例を図示する。単一のＳＭ９００は、複数の実行ブロック（例えば、制御コンポーネント、キャッシュ、および１つ以上の機能ユニットは、単一の実行ブロックであることができる）を含むことができ、各実行ブロックは、単一のスレッドを実行することができる。図９は、４つの実行ブロック、すなわち、制御コンポーネント９０４、キャッシュ９０８、および機能ユニット９１２を含む第１のブロックと、制御コンポーネント９１６、キャッシュ９２０、および機能ユニット９２４を含む第２のブロックと、制御コンポーネント９２８、キャッシュ９３２、および機能ユニット９３６を含む第３のブロックと、制御コンポーネント９４０、キャッシュ９４４、および機能ユニット９４８を含む第４のブロックとを描写する。ＳＭは、任意の数の実行ブロックを含むことができる。いくつかの例では、単一のＳＭ９００は、スレッドのブロック内の各スレッドを実行ブロックに割り当てることによって、スレッドのブロックを実行することができる。そのような例では、スレッドの各ブロックは、並行して実行され、単一のスレッドが実行されるためにかかる時間内で完了することができる。いくつかの例では、実行ブロックのキャッシュのメモリ容量は、限定され得る（例えば、キャッシュ９０８は、キャッシュ９５２より小さくあり得、キャッシュ９５２は、図８のＬ２キャッシュ８１２より小さくあり得る）。実行ブロックのキャッシュは、各機能ユニット（例えば、ＦＵ９１２）に渡される１つ以上のオペレータ、オペランド、タイミングおよび／またはステータス信号、または任意のそれらの組み合わせを記憶することができる。実行ブロックのキャッシュは、各機能ユニットからの結果（中間または最終）も記憶することができる。制御コンポーネント（図６の制御コンポーネント６０８に類似する）は、フェッチ、デコード、および実行の命令実行サイクルに従うことができる。制御コンポーネント６０８は、そのキャッシュ（すなわち、キャッシュ９０８、９２０、９３２、９４４）内の１つ以上の命令をフェッチし、単一のＳＭ９００によって利用される命令セットアーキテクチャに従って、１つ以上の命令をデコードすることができる。任意の命令セットアーキテクチャが、制御内のデコーダが命令セットアーキテクチャをデコードするための対応するデコード能力を有することを所与として、実行ブロックによって採用されることができる。制御コンポーネントは、デコードされた命令を制御コンポーネントに関連付けられた機能ユニットに渡すことができる。例えば、制御コンポーネント９０４は、１つ以上のデコードされた命令を機能ユニット９１２に渡すことができる一方、制御コンポーネント９１６は、１つ以上のデコードされた命令を機能ユニット９２４に渡すことができる等となる。
【００９９】
命令の組の結果（１つ以上の機能ユニットによってデコードおよび実行されると）は、キャッシュ９５２に渡される前、実行ユニットのローカルキャッシュ内に記憶されることができる。いくつかの例では、キャッシュ９０８、９２０、９３２、および９４４は、各キャッシュが他の実行ブロック間で共有されないので、レベル１（Ｌ１）キャッシュを表し得る。そのような例では、キャッシュ９５２は、多くの実行ブロック間で共有され得るので、レベル２（Ｌ２）キャッシュを表し得る。例えば、ホストインターフェース９５６は、スレッドブロックを図８のメモリコントローラ８０４から受信し、分配に先立って、対応するスレッドをキャッシュ９５２内に記憶することができる。いくつかの例では、スレッドのブロックの各スレッドは、各実行ブロックに分配されることができる。いくつかの例では、スレッドのブロックは、単一のＳＭ９００内の実行ブロックの数と同じ数またはより少ないスレッドを含むことができる。スレッドの各ブロックのための実行時間は、最長の個々のスレッドの実行時間と等しくあり得る。他の例では、スレッドのブロックは、単一のＳＭ９００が実行ブロックを有するより多くのスレッドを含むことができる。そのような例では、単一のＳＭ９００は、例えば、最短スレッドと最長スレッドとを同じ実行ブロック上で実行させるようにスケジュールすることによって実行時間を最小化する様式で、実行ブロック間のスレッドをスケジュールすることができる。
【０１００】
完了されたスレッドの結果は、キャッシュ９５２内に記憶され、続いて、メモリコントローラ８０４に渡されるように、ホストインターフェース９５６に渡されることができる。いくつかの例では、各スレッドの中間結果は、各スレッドが完了するにつれて、ホストインターフェース９５６を通して渡されることができる。他の例では、単一のＳＭ９００は、スレッドの各全体ブロックの結果をメモリコントローラ８０４に渡す前、スレッドのブロック全体が完了するまで待つことができる。
【０１０１】
図１０は、１つ以上のセンサ（例えば、常時オンセンサ１１４、視覚センサ１１６、組み合わせセンサ１１８、ビデオおよび静止カメラ、加速度計、光の時間等）からの入力を管理するための視覚処理ユニット（ＶＰＵ）１０００のブロック図の例を図示する。ＶＰＵは、本開示全体を通して具体的に述べられたが、ＧＰＵが、いくつかの例では、ＶＰＵの機能性に取って代わるために使用されることができることに留意されたい。ＶＰＵ１０００は、命令を並行して処理するためのプロセッサのアレイを含むことができる。プロセッサのアレイは、個々のオペランドではなく、１つ以上の命令をデータセット全体に一度に実行することによって、大量の未加工データを処理するように動作可能であることができる。いくつかの例では、プロセッサのアレイのプロセッサは、ベクトル超長命令語（ＶＬＩＷ）プロセッサ１００４であることができる。ベクトルＶＬＩＷプロセッサ１００４は、ＣＰＵ（例えば、図６のＣＰＵ６００）が処理し得るスカラー（例えば、単数データ）ではなく、ベクトルと呼ばれる１つ以上のデータのアレイに動作することができる。加えて、ベクトルＶＬＩＷプロセッサ１００４は、ＶＬＩＷ命令セットアーキテクチャを使用することができ、各命令長は、６４ビットまたはより大きくあり得る。いくつかの例では、ＶＬＩＷ命令セットアーキテクチャは、命令が可変ビット長を有し得る可変ＶＬＩＷアーキテクチャであることができる。いくつかの例では、プロセッサのアレイは、図９によって描写され、ＧＰＵ８００によって使用されるもの等の単一のＳＭであることができる。
【０１０２】
プロセッサのアレイのプロセッサは、内部キャッシュメモリ、メモリアレイ１００８、Ｌ２キャッシュ１０３６、または任意のそれらの組み合わせを含むことができる。メモリアレイ１００８は、ＲＡＭ（例えば、ＤＲＡＭ、ＳＲＡＭ等）から成る大量の相互接続されたノードを表すことができ、それらは、プロセッサのアレイの各プロセッサ、１つ以上の視覚ハードウェアアクセラレータ１０１２、および１つ以上の低減させられた命令セットコンピューティング（ＲＩＳＣ）プロセッサ（例えば、ＲＩＳＣ１  １０２８およびＲＩＳＣ２  １０３２）のための共有メモリの大規模バンクとして動作する。いくつかの例では、プロセッサのアレイは、緊密に結合されたアドレス空間を使用して、ロード待ち時間を低減させ、記憶を増加させることができる。いくつかの例では、１つ以上の視覚ハードウェアアクセラレータ１０１２は、特定のタイプの計算のために特に設計された特殊ハードウェア要素であり、それによって、プロセッサのアレイのプロセッサへの特定のタイプの計算の負荷を低減させることができる。ハードウェアアクセラレータ（例えば、１つ以上の視覚ハードウェアアクセラレータ１０１２）は、１つ以上の特定の命令の高速処理を提供することができる。いくつかの例では、ハードウェアアクセラレータは、プロセッサが１つ以上の特定の命令を実行するために低速であり得る（または別様に特定の命令タイプのために準好適である）とき、プロセッサのアレイのプロセッサによって１つ以上の特定の命令を実行するよりも好ましくあり得る。いくつかの例では、ＶＰＵ１０００は、処理の一部をプロセッサのアレイからオフロードする２０ものハードウェアアクセラレータを含むことができる。いくつかの例では、１つ以上の視覚ハードウェアアクセラレータは、プロセッサのアレイを通して、ＲＩＳＣプロセッサによって制御されることができる。
【０１０３】
バス１０４０が、プロセッサのアレイ、Ｌ２キャッシュ１０３６、ＲＩＳＣ１  １０２８、ＲＩＳＣ２  １０３２、および１つ以上のインターフェース１０２０を接続することができる。Ｌ２キャッシュ１０３６は、プロセッサのアレイ、ＲＩＳＣ１  １０２８、およびＲＩＳＣ２  １０３２間の共有メモリを表すことができる。加えて、１つ以上のインターフェース１０２０は、ＶＰＵ１０００のプロセッサのうちの１つ以上のものを用いて処理するために、入力／出力（Ｉ／Ｏ）インターフェース１０２４からの外部データをＬ２キャッシュ１０３６内に記憶することができる。いくつかの例では、ＲＩＳＣ１  １０２８およびＲＩＳＣ２  １０３２の各々は、ＶＰＵ１０００のサブコンポーネントを制御する縮小命令セットコンピューティングプロセッサであることができる。例えば、ＲＩＳＣ１  １０２８は、１つ以上の視覚ハードウェアアクセラレータ１０１２を管理することができる一方、ＲＩＳＣ２  １０３２は、Ｉ／Ｏインターフェース１０２４および任意の接続されるセンサ（例えば、カメラおよびセンサ）を管理することができる。
【０１０４】
いくつかの例では、ＶＰＵ１０００の制御は、分権化されることができ、ＲＩＳＣ１  １０２８および／またはＲＩＳＣ２  １０３２が、Ｉ／Ｏインターフェース１０２４、周辺機器、および１つ以上の視覚ハードウェアアクセラレータ１０１２を管理することができる。いくつかの例では、単一のＲＩＳＣプロセッサが、ＲＩＳＣ１  １０２８およびＲＩＳＣ２  １０３２の両方の役割を担うことによって、ＶＰＵ１０００を管理することができる。１つ以上の外部センサが、ＲＩＳＣプロセッサによって管理されることができ、ＶＰＵ１０００のニーズを果たすために、制御されることができる。いくつかの例では、ＶＰＵ１０００は、１つ以上の外部センサのセンサがデータを入力するレートを修正することができる。例えば、ＶＰＵ１０００は、カメラがビデオを捕捉するレートを改変することによって、カメラの電力消費を低減させることができる。別の例に対して、ＶＰＵ１０００は、それが２４フレーム／秒を捕捉するように、６０フレーム／秒を捕捉可能であるカメラを管理することができる。いくつかの例では、ＶＰＵ１０００は、フレームレート、または限定ではないが、カメラ、加速度計、トーテム、場所センサ、ジェスチャセンサ等を含む任意の接続されるセンサのデータ捕捉レートを低減または増加させることができる。
【０１０５】
いくつかの例では、１つ以上のインターフェース１０２０は、１つ以上の有線プロトコルおよび／または１つ以上の無線プロトコル上で動作することができる。例えば、１つ以上のインターフェース１０２０は、ユニバーサルシリアルバス（ＵＳＢ）（例えば、ＵＳＢ２．０、ＵＳＢ３．０、ＵＳＢ  ＯＴＧ等）、Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ（ＪＴＡＧ）、Ｅｔｈｅｒｎｅｔ（登録商標）、ユニバーサル非同期送受信機（ＵＡＲＴ）、ＳＤモード（ＳＤＩＯ）等を通して、１つ以上の外部ソースに接続することができる。加えて、１つ以上のインターフェース１０２０は、限定ではないが、ＬＣＤ、共通中間フォーマット（ＣＩＦ）、ＮＡＬ等の種々のディスプレイタイプのデータ交換を有効にすることができる。ＶＰＵ１０００は、加えて、モバイル産業プロセッサインターフェース（ＭＩＰＩ）１０１６を使用して、１つ以上の外部デバイス（例えば、ＣＰＵ６００、ＧＰＵ８００、および／またはセンサ）のための１つ以上のインターフェースを提供することができる。ＭＩＰＩ  １０１６は、１つ以上の独立通信レーン（例えば、１２）を含むことができる。ＭＩＰＩ  １０１６は、Ｉ／Ｏインターフェース１０２４から１つ以上の視覚ハードウェアアクセラレータ１０１２への接続を提供することができる。接続された外部デバイス（センサ等）は、Ｉ／Ｏインターフェース１０２４から１つ以上の視覚ハードウェアアクセラレータ１０１２への短待ち時間パススルーを有することができる。Ｉ／Ｏインターフェース１０２４は、データを１つ以上の外部デバイス（例えば、ＣＰＵ６００、ＧＰＵ８００、および／またはセンサ）およびＶＰＵ１０００へおよびそこから渡すことができる。
【０１０６】
いくつかの例では、ＶＰＵ１０００は、視覚的入力を処理するために特化したＣＰＵであることができる。加えて、ＶＰＵ１０００は、図１０の例示的ハードウェア要素に従って描写されるが、ＶＰＵ１０００は、ＧＰＵの類似または同じハードウェア要素（図８および９に関連して描写および説明されるようなＧＰＵ８００等）を含むことができる。いくつかの例では、ＶＰＵ１０００によって実施される１つ以上の動作は、ＧＰＵ８００によって実施されることができる。
【０１０７】
説明される特徴は、デジタル電子回路内、またはコンピュータハードウェア、ファームウェア、ソフトウェア、もしくはそれらの組み合わせ内に実装されることができる。装置は、プログラマブルプロセッサによる実行のために、情報キャリア、例えば、機械読み取り可能な記憶デバイス内に有形に具現化されるコンピュータプログラム製品内に実装されることができ、方法ステップは、入力データに動作し、出力を発生させることによって、説明される実装の機能を実施するための命令のプログラムを実行するプログラマブルプロセッサによって実施されることができる。説明される特徴は、有利には、データ記憶システム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスからデータおよび命令を受信し、データおよび命令をそれに伝送するために結合される少なくとも１つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能である１つ以上のコンピュータプログラム内に実装されることができる。コンピュータプログラムは、直接または間接的に、コンピュータ内で使用され、あるアクティビティを実施する、またはある結果を生じさせ得る命令の組である。コンピュータプログラムは、コンパイルまたは解釈言語を含む任意の形態のプログラミング言語で書き込まれることができ、独立型プログラムとして、またはモジュール、構成要素、サブルーチン、もしくはコンピューティング環境において使用するために好適な他のユニットとして含む任意の形態で展開されることができる。
【０１０８】
命令のプログラムの実行のための好適なプロセッサは、一例として、汎用および特殊目的マイクロプロセッサの両方ならびに任意の種類のコンピュータの単独プロセッサまたは複数のプロセッサのうちの１つを含む。概して、プロセッサは、命令およびデータを読み取り専用メモリまたはランダムアクセスメモリまたは両方から受信するであろう。コンピュータの不可欠な要素は、命令を実行するためのプロセッサならびに命令およびデータを記憶するための１つ以上のメモリである。概して、コンピュータは、データファイルを記憶するための１つ以上の大容量記憶デバイスも含むか、またはそれと通信するように動作可能に結合されるであろう。そのようなデバイスは、内部ハードディスクおよび取り外し可能なディスク、光磁気ディスク、および光ディスク等の磁気ディスクを含む。コンピュータプログラム命令およびデータを有形に具現化するために好適な記憶デバイスは、あらゆる形態の不揮発性メモリを含み、一例として、半導体メモリデバイス、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイス、磁気ディスク、例えば、内部ハードディスクおよび取り外し可能なディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む。プロセッサおよびメモリは、ＡＳＩＣ（特定用途向け集積回路）によって補完される、またはその中に組み込まれることができる。
【０１０９】
ユーザとの相互作用を提供するために、特徴が、情報をユーザに表示するためのＣＲＴ（ブラウン管）、ＬＣＤ（液晶ディスプレイ）、ＬＥＤ（発光ダイオード）モニタ等のディスプレイデバイスと、ユーザが入力をコンピュータに提供し得るマウスまたはトラックボール等のキーボードおよびポインティングデバイスとを有するコンピュータ上に実装されることができる。
【０１１０】
特徴は、データサーバ等のバックエンドコンポーネントを含む、またはアプリケーションサーバまたはインターネットサーバ等のミドルウェアコンポーネントを含む、またはグラフィカルユーザインターフェースまたはインターネットブラウザを有するクライアントコンピュータ等のフロントエンドコンポーネントを含む、またはそれらの任意の組み合わせを含むコンピュータシステム内に実装されることができる。システムのコンポーネントは、通信ネットワーク等の任意の形態または媒体のデジタルデータ通信によって接続されることができる。通信ネットワークの例は、ＬＡＮ、ＷＡＮ、ならびにインターネットを形成するコンピュータおよびネットワークを含む。
【０１１１】
コンピュータシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、概して、互いから遠隔であり、典型的には、説明されるもの等のネットワークを通して相互作用する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で起動し、クライアント−サーバ関係を互いに有するコンピュータプログラムによって生じる。いくつかの実装が、上で詳細に説明されたが、他の修正も、可能である。
【０１１２】
加えて、図に描写される論理フローは、望ましい結果を達成するために、示される特定の順序またはシーケンシャル順序を要求しない。加えて、他のステップが、提供され得る、またはステップは、説明されるフローから排除され得、他の構成要素が、説明されるシステムに追加される、またはそこから除去され得る。故に、他の実装も、以下の請求項の範囲内である。
【０１１３】
コンポーネントが、ある動作を実施するように構成されるように説明される場合、そのような構成は、例えば、動作を実施するための電子回路または他のハードウェアを設計することによって、動作を実施するようにプログラマブル電子回路（例えば、マイクロプロセッサ、または他の好適な電子回路）をプログラムすることによって、または任意のそれらの組み合わせによって、遂行されることができる。
【０１１４】
本開示のいくつかの実施形態が、説明される。それにもかかわらず、種々の修正が本開示の精神および範囲から逸脱することなく行われ得ることを理解されたい。
【図１】
2019537143.tif 000003
【図２】
2019537143.tif 000004
【図３】
2019537143.tif 000005
【図４】
2019537143.tif 000006
【図５】
2019537143.tif 000007
【図６】
2019537143.tif 000008
【図７】
2019537143.tif 000009
【図８】
2019537143.tif 000010
【図９】
2019537143.tif 000011
【図１０】
2019537143.tif 000012
【国際調査報告】
2019537143.tif 000013