JP2022550656A - プロセッサ間通信(ipc)を用いた人工現実システム - Google Patents

プロセッサ間通信(ipc)を用いた人工現実システム Download PDF

Info

Publication number
JP2022550656A
JP2022550656A JP2021576847A JP2021576847A JP2022550656A JP 2022550656 A JP2022550656 A JP 2022550656A JP 2021576847 A JP2021576847 A JP 2021576847A JP 2021576847 A JP2021576847 A JP 2021576847A JP 2022550656 A JP2022550656 A JP 2022550656A
Authority
JP
Japan
Prior art keywords
processor
mutex
register
memory access
access request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021576847A
Other languages
English (en)
Inventor
チュン ワン,
ニーラジ ウパサニ,
ボイチェシ シュテファン ポビエルトフスキー,
ドリュー エリック ウィンガード,
グレゴリー エドワード エーマン,
マルコ ブランビラ,
ミンリ リン,
ミゲル アンヘル ゲレーロ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Technologies LLC
Original Assignee
Meta Platforms Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Meta Platforms Technologies LLC filed Critical Meta Platforms Technologies LLC
Publication of JP2022550656A publication Critical patent/JP2022550656A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/332Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
    • H04N13/344Displays for viewing with the aid of special glasses or head-mounted displays [HMD] with head-mounted left-right displays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本開示は、割込み、およびコンピュータプロセッサの間で共有されるプロセッサ間通信(IPC)機構のための技法について説明する。たとえば、人工現実システムが、複数のプロセッサと、レジスタを備えるプロセッサ間通信(IPC)ユニットとを含み、IPCユニットは、プロセッサのうちの第1のプロセッサからメモリアクセス要求を受信することであって、メモリアクセス要求が、第1のプロセッサに関連するハードウェア識別子(HWID)を示す情報を含む、メモリアクセス要求を受信することと、第1のプロセッサに関連するHWIDが、IPCユニットのレジスタについてのHWIDに一致するかどうかを決定することと、第1のプロセッサに関連するHWIDが、IPCユニットのレジスタについてのHWIDに一致すると決定したことに基づいて、第1のプロセッサから少なくとも1つの他のプロセッサへの通信を指示するために、メモリアクセス要求を許可することとを行うように構成される。【選択図】図5A

Description

本出願は、その内容全体が参照により本明細書に組み込まれている、2019年9月24日に出願された米国仮出願第62/905,095号の利益を主張する。
本開示は、一般に、拡張現実、複合現実、および/または仮想現実システムなど、人工現実システムに関する。
人工現実システムは、コンピュータゲーム、健康および安全、工業、ならびに教育などの多くの分野における適用例にとってますますユビキタスになっている。いくつかの例として、人工現実システムは、モバイルデバイス、ゲーミングコンソール、パーソナルコンピュータ、映画館、およびテーマパークに組み込まれている。概して、人工現実は、ユーザへの提示の前に何らかの様式で調整された形式の現実であり、これは、たとえば、仮想現実、拡張現実、複合現実、ハイブリッド現実、あるいはそれらの何らかの組合せおよび/または派生物を含み得る。
一般的な人工現実システムは、ユーザに対してコンテンツをレンダリングおよび表示するための1つまたは複数のデバイスを含む。一例として、人工現実システムは、ユーザによって装着され、ユーザに人工現実コンテンツを出力するように構成された、ヘッドマウントディスプレイ(HMD)を組み込み得る。人工現実コンテンツは、システムによって生成されたコンテンツを完全に含み得るか、またはキャプチャされたコンテンツ(たとえば、現実世界のビデオおよび/または画像)と組み合わせられた生成されたコンテンツを含み得る。動作中に、ユーザは、一般に、コンテンツを選択し、アプリケーションを起動し、システムを構成し、概して、人工現実環境を経験するために、人工現実システムと対話する。
概して、本開示は、コンピュータプロセッサの間で共有されるプロセッサ間通信(IPC:inter-processor communication)機構のための技法について説明する。特に、本出願は、複数のプロセッサと、ネットワークオンチップ(NoC)と、IPCユニットとを備える1つまたは複数のシステムオンチップ(SoC)集積回路について説明する。プロセッサの各々は、(1)ターゲットプロセッサについての割込み要求を開始するために、または(2)共有リソース(たとえば、メモリ、I/Oデバイス)のためのロックを取得するために、IPCユニットのレジスタを使用し得る。
一例では、IPCユニットは、複数のドアベルレジスタを備えるアドレスマップを含み、ドアベルレジスタの各々が、プロセッサの異なるペアに対応する。ドアベルレジスタのセットが、異なるターゲットプロセッサに関連し、プロセッサについての割込み要求(IRQ:interrupt request)線に関連し得る。セキュリティプロセッサが、たとえば、ブート時間において、各ドアベルレジスタのためのプロセッサのペア(たとえば、ソースプロセッサおよびターゲットプロセッサ)を構成する。ターゲットプロセッサへの割込みを生成するために、ソースプロセッサは、ソースプロセッサ、ターゲットプロセッサペアに対応するドアベルレジスタに値(たとえば、「1」)を書き込むために、NoCを介して、ソースプロセッサのハードウェア識別子(HWID)を含むメモリアクセス要求を送る。IPCユニットは、メモリアクセス要求中に含まれるソースプロセッサのHWIDが、メモリアクセス要求中で指定されたメモリロケーションにおけるドアベルレジスタに記憶されたHWIDに一致するかどうかを決定する。ソースプロセッサのHWIDとドアベルレジスタのHWIDとが一致しない場合、IPCユニットは、メモリアクセス要求を拒否し、エラーが返される。IPCユニットは、たとえば、セキュリティプロセッサに、エラーをロギングし得る。ソースプロセッサのHWIDとドアベルレジスタのHWIDとが一致する場合、IPCユニットは、ドアベルレジスタに値を書き込む。ドアベルレジスタに値を書き込むことは、ターゲットプロセッサへの割込みをトリガする、たとえば、割込み要求(IRQ)入力を引き起こす。ターゲットプロセッサが割込み要求の処理を完了すると、ターゲットプロセッサは、別の割込み要求のためにドアベルレジスタをクリアするために、同じドアベルレジスタに値(たとえば、「0」)を書き込むために、第2のメモリアクセス要求を送る。いくつかの例では、ソースプロセッサのみが、ソースプロセッサ、ターゲットプロセッサペアのためのドアベルレジスタに値を書き込むことができ、ターゲットプロセッサのみが、そのドアベルレジスタから値をクリアすることができる。
別の例では、上記で説明されたIPCユニットは、複数のハードウェア相互排他(ミューテックス)レジスタを含み、それらのレジスタの各々が、対応する共有リソース(たとえば、メモリ、I/Oデバイス)への同時アクセスを防ぐために使用される。リソースを使用するために、第1のプロセッサ上で稼働している第1のプロセスが、そのリソースに対応する(本明細書では単に「ミューテックス」と呼ばれる)ミューテックスオブジェクトの所有権を取得しなければならない。ミューテックスの所有権を取得するために、第1のプロセスは、NoCを介したメモリアクセス要求を使用して、ミューテックスレジスタに、値(たとえば、「1」)と第1のプロセスのソフトウェアID(SWID)とを書き込むことを試みる。第1のプロセッサは、メモリアクセス要求に第1のプロセッサのHWIDを挿入する。(たとえば、他のプロセスがミューテックスを所有していないので)取得が成功した場合、IPCユニットは、値と、第1のプロセスのSWIDと、第1のプロセッサのHWIDとをミューテックスレジスタに記憶する。(たとえば、別のプロセスがミューテックスを所有しているので)取得が失敗した場合、エラーは返されない。第1のプロセスは、次いで、ミューテックスレジスタに記憶されたデータを読み取る。たとえば、別のプロセスのSWIDがミューテックスレジスタに記憶された場合、第1のプロセスは、ミューテックスを所有せず、リソースを使用することができない。第1のプロセスのSWIDがミューテックスレジスタに記憶された場合、第1のプロセスは、ミューテックスを所有し、リソースを使用することができる。ミューテックス(およびリソース)を解放するために、第1のプロセスは、NoCを介して、ミューテックスレジスタをクリアするために、ミューテックスレジスタに値(たとえば、「0」)を書き込むためにメモリアクセス要求を発行する。いくつかの例では、ミューテックスオブジェクトを所有するプロセスのみが、ミューテックスレジスタをクリアすることができる(たとえば、書込み要求のHWIDおよびSWIDは、ミューテックスレジスタに記憶されたものに一致しなければならない)。HWIDを有するプロセッサが、異なるHWIDを記憶するミューテックスレジスタをクリアすることを試みる場合、IPCユニットは、セキュリティプロセッサにエラーを登録し得る。
本発明の第1の態様によれば、複数のプロセッサと、レジスタを備えるプロセッサ間通信(IPC)ユニットとを備える人工現実システムであって、IPCユニットは、プロセッサのうちの第1のプロセッサからメモリアクセス要求を受信することであって、メモリアクセス要求が、第1のプロセッサに関連するハードウェア識別子(HWID)を示す情報を含む、メモリアクセス要求を受信することと、第1のプロセッサに関連するHWIDが、IPCユニットのレジスタについてのHWIDに一致するかどうかを決定することと、第1のプロセッサに関連するHWIDが、IPCユニットのレジスタについてのHWIDに一致すると決定したことに基づいて、第1のプロセッサから少なくとも1つの他のプロセッサへの通信を指示するために、メモリアクセス要求を許可することとを行うように構成された、人工現実システムが提供される。
人工現実システムは、ヘッドマウントディスプレイをさらに備え得る。ヘッドマウントディスプレイは、1つまたは複数のプロセッサを備え得る。1つまたは複数のプロセッサは、人工現実コンテンツを出力するように構成される。人工現実システムは、周辺デバイスをさらに備え得る。周辺デバイスは、人工現実システムのユーザから1つまたは複数の入力を受信するように構成されたプロセッサを備え得る。
IPCユニットのレジスタは、ドアベルレジスタを備え得る。通信を指示するために、メモリアクセス要求を許可するために、IPCユニットは、割込み線を介して、第2のプロセッサへの割込み要求をトリガするために、ドアベルレジスタに値を書き込むようにさらに構成され得る。第1のプロセッサは、ドアベルレジスタについてのソースプロセッサであり得る。第2のプロセッサは、ドアベルレジスタについてのターゲットプロセッサでありうる得る。
ドアベルレジスタは、ドアベルレジスタのセットのうちの1つであり得る。ドアベルレジスタのセットの各ドアベルレジスタは、プロセッサのうちのターゲットプロセッサとプロセッサのうちのソースプロセッサとの異なるペアに関連し得る。ドアベルレジスタのセットの各ドアベルレジスタは、割込み要求をトリガするために、関連するペアのターゲットプロセッサへの割込み線に接続され得る。
値は第1の値を表し得る。メモリアクセス要求は、第1のメモリアクセス要求を表し得る。IPCユニットは、第2のプロセッサから、第2のプロセッサによる割込み要求の処理が完了したことを指示する第2のメモリアクセス要求を受信するようにさらに構成され得、別の割込み要求のためにドアベルレジスタをクリアするために、ドアベルレジスタに第2の値を書き込むようにさらに構成され得る。
IPCユニットのレジスタは、ドアベルレジスタを備え得る。第1のプロセッサに関連するHWIDが、ドアベルレジスタについての予想されるHWIDに一致しないと決定したことに応答して、IPCユニットは、IPCユニットがメモリアクセス要求を拒否したことを指示するエラーメッセージを、第1のプロセッサに返すようにさらに構成され得る。代替的におよび/または追加として、第1のプロセッサに関連するHWIDが、ドアベルレジスタについての予想されるHWIDに一致しないと決定したことに応答して、IPCユニットは、IPCユニットがメモリアクセス要求を拒否したことを指示する情報を、プロセッサのセキュリティプロセッサに出力するようにさらに構成され得る。
人工現実システムは、共有リソースをさらに備え得る。IPCユニットのレジスタは、共有リソースのためのミューテックスのためのミューテックスレジスタを備え得る。第1のプロセッサは、第1のプロセスを実行するように構成され得る。メモリアクセス要求は、第1のプロセスに関連するソフトウェア識別(SWID)を示す情報を含み得る。メモリアクセス要求を許可するために、IPCユニットは、ミューテックスレジスタが所有されていないと決定したことに基づいて、第1のプロセスのためのミューテックスを取得するために、メモリアクセス要求を許可するようにさらに構成され得る。
第1のプロセスのためのミューテックスを取得するために、IPCユニットは、ミューテックスが所有者を有することを指示するために、ミューテックスレジスタに値を書き込むこと、および/または、ミューテックスが第1のプロセスによって所有されていることを指示するために、第1のプロセスに関連するSWIDをミューテックスレジスタに書き込むことを行うように構成され得る。
メモリアクセス要求は、第1のメモリアクセス要求であり得る。値は第1の値を表し得る。IPCユニットは、第1のプロセスから第2のメモリアクセス要求を受信することであって、第2のメモリアクセス要求がミューテックスの解放を指示する、第2のメモリアクセス要求を受信すること、および/または、ミューテックスを第1のプロセスによって所有されていることから解放するために、ミューテックスレジスタに第2の値を書き込むことを行うようにさらに構成され得る。
メモリアクセス要求は、第1のメモリアクセス要求であり得る。IPCユニットは、第2のメモリアクセス要求を受信して、ミューテックスレジスタを読み取って、記憶されたSWID値を含むミューテックスレジスタについての値を出力するようにさらに構成され得る。第1のプロセッサは、記憶されたSWID値が、第1のプロセスに関連するSWIDに一致すると決定したことに応答して、共有リソースにアクセスするように構成され得る。
第1のプロセッサは、記憶されたSWID値が、第1のプロセスに関連するSWIDに一致すると決定したことと、ミューテックスがプロセスによって所有されていると決定したこととに応答して、共有リソースにアクセスするように構成され得る。
メモリアクセス要求は、第1のメモリアクセス要求であり得る。IPCユニットは、第2のメモリアクセス要求を受信して、ミューテックスレジスタを読み取って、記憶されたSWID値を含むミューテックスレジスタについての値を出力するようにさらに構成され得る。プロセッサのうちの第2のプロセッサは、記憶されたSWID値が、第2のプロセッサ上で実行しているプロセスに関連するSWIDに一致しないと決定したことに応答して、共有リソースにアクセスすることを控えるように構成され得る。
本発明の第2の態様によれば、プロセッサ間通信(IPC)のための方法であって、本方法は、複数のプロセッサのうちの第1のプロセッサからメモリアクセス要求を受信することであって、メモリアクセス要求が、第1のプロセッサに関連するハードウェア識別子(HWID)を示す情報を含む、メモリアクセス要求を受信することと、第1のプロセッサに関連するHWIDが、IPCユニットのレジスタについてのHWIDに一致するかどうかを決定することと、第1のプロセッサに関連するHWIDが、IPCユニットのレジスタについてのHWIDに一致すると決定したことに基づいて、第1のプロセッサから少なくとも1つの他のプロセッサへの通信を指示するために、メモリアクセス要求を許可することとを含む、方法が提供される。
IPCユニットのレジスタは、ドアベルレジスタを備え得る。通信を指示するために、メモリアクセス要求を許可することは、割込み線を介して、第2のプロセッサへの割込み要求をトリガするために、ドアベルレジスタに値を書き込むことを含み得る。第1のプロセッサは、ドアベルレジスタについてのソースプロセッサであり得る。第2のプロセッサは、ドアベルレジスタについてのターゲットプロセッサであり得る。
値は第1の値を表し得る。メモリアクセス要求は、第1のメモリアクセス要求を表し得る。本方法は、第2のプロセッサから、第2のプロセッサによる割込み要求の処理が完了したことを指示する第2のメモリアクセス要求を受信すること、および/または、別の割込み要求のためにドアベルレジスタをクリアするために、ドアベルレジスタに第2の値を書き込むことをさらに含み得る。
IPCユニットのレジスタは、共有リソースのためのミューテックスのためのミューテックスレジスタを備え得る。第1のプロセッサは、第1のプロセスを実行するように構成され得る。メモリアクセス要求は、第1のプロセスに関連するソフトウェア識別(SWID)を示す情報を含み得る。メモリアクセス要求を許可することは、ミューテックスレジスタが所有されていないと決定したことに基づいて、第1のプロセスのためのミューテックスを取得するために、メモリアクセス要求を許可することを含み得る。
第1のプロセスのためのミューテックスを取得するために、本方法は、ミューテックスが所有者を有することを指示するために、ミューテックスレジスタに値を書き込むこと、および/または、ミューテックスが第1のプロセスによって所有されていることを指示するために、第1のプロセスに関連するSWIDをミューテックスレジスタに書き込むことをさらに含み得る。
メモリアクセス要求は、第1のメモリアクセス要求であり得る。値は第1の値を表し得る。本方法は、第1のプロセスから第2のメモリアクセス要求を受信することであって、第2のメモリアクセス要求がミューテックスの解放を指示する、第2のメモリアクセス要求を受信すること、および/または、ミューテックスを第1のプロセスによって所有されていることから解放するために、ミューテックスレジスタに第2の値を書き込むことをさらに含み得る。
本発明の第3の態様によれば、命令を備えるコンピュータ可読記憶媒体であって、命令は、実行されたとき、処理回路を、複数のプロセッサのうちの第1のプロセッサからメモリアクセス要求を受信することであって、メモリアクセス要求が、第1のプロセッサに関連するハードウェア識別子(HWID)を示す情報を含む、メモリアクセス要求を受信することと、第1のプロセッサに関連するHWIDが、IPCユニットのレジスタについてのHWIDに一致するかどうかを決定することと、第1のプロセッサに関連するHWIDが、IPCユニットのレジスタについてのHWIDに一致すると決定したことに基づいて、第1のプロセッサから少なくとも1つの他のプロセッサへの通信を指示するために、メモリアクセス要求を許可することとを行うように構成する、コンピュータ可読記憶媒体が提供される。
本明細書で説明される技法の1つまたは複数の例の詳細は、添付の図面および以下の説明において記載される。本明細書で説明される技法の他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになろう。
本開示で説明される技法による、コンピュータプロセッサの間で共有されるプロセッサ間通信(IPC)機構を提供する例示的な人工現実システムを示す図である。 本開示で説明される技法による、コンピュータプロセッサの間で共有されるプロセッサ間通信機構を提供する別の例示的な人工現実システムを示す図である。 本開示で説明される技法による、コンピュータプロセッサの間で共有されるプロセッサ間通信機構を提供する例示的なHMDを示す図である。 本開示で説明される技法による、コンピュータプロセッサの間で共有されるプロセッサ間通信機構を提供する別の例示的なHMDを示す図である。 本開示で説明される技法による、図1A、図1Bのマルチデバイス人工現実システムのコンソールとHMDと周辺デバイスとの例示的な実装形態を示すブロック図である。 本開示で説明される技法による、図1A、図1Bの人工現実システムのHMDと周辺デバイスとの例示的な実装形態を示すブロック図である。 本開示で説明される技法による、SoCの複数のコンピュータプロセッサがプロセッサ間通信を使用する例示的な一実装形態を示すブロック図である。 本開示で説明される技法による、SoCの複数のプロセッサがプロセッサ間通信を使用するSoCの例示的な一実装形態を示すブロック図である。 本開示で説明される技法による、1つまたは複数のデバイス(たとえば、周辺デバイスおよびHMD)が各デバイス内の1つまたは複数のSoC集積回路を使用して実装される、マルチデバイス人工現実システムのための分散アーキテクチャのより詳細な例示的な実装形態を示すブロック図である。 本開示の1つまたは複数の技法による、プロセッサ間通信についての例示的な動作を示す流れ図である。 本開示の1つまたは複数の技法による、プロセッサ間通信についての例示的な動作を示す流れ図である。
同様の参照符号は、図およびテキスト全体にわたって同様の要素を指す。
図1Aは、本開示で説明される技法による、コンピュータプロセッサの間で共有されるプロセッサ間通信(IPC)機構を提供する例示的な人工現実システムを示す図である。図1Aの例では、人工現実システム10は、HMD112と周辺デバイス136とを含み、いくつかの例では、1つまたは複数の外部センサー90および/またはコンソール106を含み得る。
示されているように、HMD112は、一般に、ユーザ110によって装着され、ユーザ110に人工現実コンテンツ122を提示するための電子ディスプレイと光学アセンブリとを備える。さらに、HMD112は、HMD112の動きを追跡するための1つまたは複数のセンサー(たとえば、加速度計)を含み、周囲の物理的環境の画像データをキャプチャするための1つまたは複数の撮像デバイス138(たとえば、カメラ、ラインスキャナ)を含み得る。ヘッドマウントディスプレイとして示されているが、ARシステム10は、代替的に、または追加として、ユーザ110に人工現実コンテンツ122を提示するための眼鏡または他のディスプレイデバイスを含み得る。
この例では、コンソール106は、ゲーミングコンソール、ワークステーション、デスクトップコンピュータ、またはラップトップなど、単一のコンピューティングデバイスとして示されている。他の例では、コンソール106は、分散コンピューティングネットワーク、データセンター、またはクラウドコンピューティングシステムなど、複数のコンピューティングデバイスにわたって分散され得る。コンソール106、HMD112、およびセンサー90は、この例に示されているように、ネットワーク104を介して通信可能に結合され得、ネットワーク104は、Wi-Fi、メッシュネットワークまたは短距離ワイヤレス通信媒体、あるいはそれらの組合せなど、ワイヤードまたはワイヤレスネットワークであり得る。HMD112は、この例では、コンソール106と通信しているものとして、たとえば、コンソール106にテザリングされるかまたはコンソール106とワイヤレス通信しているものとして示されているが、いくつかの実装形態では、HMD112は、スタンドアロンモバイル人工現実システムとして動作する。
概して、人工現実システム10は、ユーザ110への表示のための人工現実コンテンツ122をレンダリングするために、現実世界の3D物理的環境からキャプチャされた情報を使用する。図1Aの例では、ユーザ110は、HMD112および/またはコンソール106上で実行している人工現実アプリケーションによって構築およびレンダリングされた人工現実コンテンツ122を観察する。いくつかの例では、人工現実コンテンツ122は、複合現実および/または拡張現実を作り出すために、現実世界の像(たとえば、手132、周辺デバイス136、壁121)と、仮想オブジェクト(たとえば、仮想コンテンツアイテム124、126および仮想ユーザインターフェース137)との混合物を含み得る。いくつかの例では、仮想コンテンツアイテム124、126は、人工現実コンテンツ122内の特定の位置にマッピング(たとえば、ピニング、ロック、配置)され得る。仮想コンテンツアイテムについての位置は、たとえば、壁121または地面のうちの1つに対するものとして固定され得る。仮想コンテンツアイテムについての位置は、たとえば、周辺デバイス136またはユーザに対するものとして可変であり得る。いくつかの例では、人工現実コンテンツ122内の仮想コンテンツアイテムの特定の位置は、現実世界の物理的環境内の(たとえば、物理的オブジェクトの表面上の)位置に関連する。
この例では、周辺デバイス136は、ARシステム10が仮想ユーザインターフェース137をその上にオーバーレイする表面を有する、物理的な現実世界のデバイスである。周辺デバイス136は、プレゼンスセンシティブ表面のロケーションにタッチするかまたはそのロケーション上をホバリングする1つまたは複数のオブジェクト(たとえば、フィンガー(finger)、スタイラス)の存在を検出することによってユーザ入力を検出するための1つまたは複数のプレゼンスセンシティブ表面を含み得る。いくつかの例では、周辺デバイス136は、プレゼンスセンシティブディスプレイであり得る出力ディスプレイを含み得る。いくつかの例では、周辺デバイス136は、スマートフォン、タブレットコンピュータ、個人情報端末(PDA)、または他のハンドヘルドデバイスであり得る。いくつかの例では、周辺デバイス136は、スマートウォッチ、スマートリング、または他のウェアラブルデバイスであり得る。周辺デバイス136はまた、キオスクあるいは他の固定または移動システムの一部であり得る。周辺デバイス136は、スクリーンにコンテンツを出力するためのディスプレイデバイスを含むことも含まないこともある。
図1Aに示されている例示的な人工現実体験では、仮想コンテンツアイテム124、126は、壁121上の位置にマッピングされる。図1A中の例はまた、仮想コンテンツアイテム124が、人工現実コンテンツ122内でのみ壁121上に部分的に現れることを示しており、この仮想コンテンツは現実世界の物理的環境中に存在しないことを示している。仮想ユーザインターフェース137は、周辺デバイス136の表面にマッピングされる。その結果、ARシステム10は、人工現実環境中の周辺デバイス136の位置に対してロックされたユーザインターフェース位置において、HMD112における表示のための仮想ユーザインターフェース137を人工現実コンテンツ122の一部としてレンダリングする。図1Aは、仮想ユーザインターフェース137が、人工現実コンテンツ122内でのみ周辺デバイス136上に現れることを示しており、この仮想コンテンツは現実世界の物理的環境において存在しないことを示している。
人工現実システム10は、仮想コンテンツアイテムのロケーションの少なくとも一部分がユーザ110の視野130中にあるという決定に応答して、1つまたは複数の仮想コンテンツアイテムをレンダリングし得る。たとえば、人工現実システム10は、周辺デバイス136がユーザ110の視野130内にある場合のみ、仮想ユーザインターフェース137を周辺デバイス136上にレンダリングし得る。
動作中に、人工現実アプリケーションは、基準系、一般にHMD112の観察パースペクティブについてのポーズ情報を追跡および計算することによって、ユーザ110への表示のための人工現実コンテンツ122を構築する。基準系としてHMD112を使用して、およびHMD112の現在の推定されたポーズによって決定された現在の視野130に基づいて、人工現実アプリケーションは3D人工現実コンテンツをレンダリングし、3D人工現実コンテンツは、いくつかの例では、少なくとも部分的に、ユーザ110の現実世界の3D物理的環境上にオーバーレイされ得る。このプロセス中、人工現実アプリケーションは、ユーザ110による動きおよび/またはユーザ110に関する特徴追跡情報など、現実世界の物理的環境内の3D情報をキャプチャするために、移動情報およびユーザコマンドなど、HMD112から受信された検知されたデータと、いくつかの例では、外部カメラなど、任意の外部センサー90からのデータとを使用する。検知されたデータに基づいて、人工現実アプリケーションは、HMD112の基準系についての現在のポーズを決定し、現在のポーズに従って、人工現実コンテンツ122をレンダリングする。
人工現実システム10は、ユーザ110のリアルタイム視線追跡によって決定され得るようなユーザ110の現在の視野130または他の条件に基づいて、仮想コンテンツアイテムの生成およびレンダリングをトリガし得る。より詳細には、HMD112の撮像デバイス138は、撮像デバイス138の視野130内にある、現実世界の物理的環境中のオブジェクトを表す画像データをキャプチャする。視野130は、一般に、HMD112の観察パースペクティブと対応する。いくつかの例では、人工現実アプリケーションは、複合現実および/または拡張現実を含む人工現実コンテンツ122を提示する。図1Aに示されているように、人工現実アプリケーションは、人工現実コンテンツ122内でなど、仮想オブジェクトに沿った視野130内にある、ユーザ110の周辺デバイス136、手132、および/または腕134の部分など、現実世界のオブジェクトの画像をレンダリングし得る。他の例では、人工現実アプリケーションは、人工現実コンテンツ122内で、視野130内にあるユーザ110の周辺デバイス136、手132、および/または腕134の部分の仮想表現をレンダリング(たとえば、現実世界のオブジェクトを仮想オブジェクトとしてレンダリング)し得る。いずれの例でも、ユーザ110は、人工現実コンテンツ122内で、視野130内にあるユーザの手132、腕134、周辺デバイス136の部分および/または任意の他の現実世界のオブジェクトを観察することが可能である。他の例では、人工現実アプリケーションは、ユーザの手132または腕134の表現をレンダリングしないことがある。
動作中に、人工現実システム10は、随意にユーザ110の個々のフィンガーまたは親指、および/あるいは腕134のすべてまたは部分を識別することを含めて、周辺デバイス136、手132を識別するために、HMD112の撮像デバイス138によってキャプチャされた画像データ内でオブジェクト認識を実施する。さらに、人工現実システム10は、時間のスライディングウィンドウにわたって、周辺デバイス136、(随意に手の特定の指(digit)を含む)手132、および/または腕134の部分の位置、配向、および構成を追跡する。いくつかの例では、周辺デバイス136は、周辺デバイス136の動きまたは配向を追跡するための1つまたは複数のセンサー(たとえば、加速度計)を含む。
上記で説明されたように、人工現実システム10の複数のデバイスがAR環境中で連携して作動し得、各デバイスは、別個の物理的電子デバイスおよび/または1つまたは複数の物理的デバイス内の別個の集積回路(たとえば、システムオンチップ(SoC))であり得る。この例では、周辺デバイス136は、人工現実体験を提供するためのARシステム10内で一緒に動作するように、HMD112と動作可能にペアリングされる。たとえば、周辺デバイス136およびHMD112は、共同処理デバイス(co-processing device)として互いに通信し得る。一例として、ユーザが、周辺デバイス136上にオーバーレイされた仮想ユーザインターフェース137の仮想ユーザインターフェース要素のうちの1つに対応するロケーションにおいて仮想環境中でユーザインターフェースジェスチャーを実施したとき、ARシステム10は、ユーザインターフェースを検出し、HMD112にレンダリングされるアクションを実施する。
本開示の技法によれば、人工現実システム10は、周辺デバイス136および/またはHMD112など、デバイスのコンピュータプロセッサの間で共有されるプロセッサ間通信(IPC)機構を提供し得る。本技法は、割込み、およびIPCのために周辺デバイス136および/またはHMD112のコンピュータプロセッサによって使用されるIPC機構に関して本明細書で説明されるが、本技法は、SoC間のIPC、またはSoCのサブシステム(サブシステムは、1つまたは複数のプロセッサを含み得る)間のIPCのためになど、周辺デバイス136および/またはHMD112の他のハードウェア構成要素によって使用され得る。
いくつかの例示的な実装形態では、本明細書で説明されるように、周辺デバイス136およびHMD112は、各々、コアプリケーションプロセッサとして動作するSoC、センサーアグリゲータ、ディスプレイコントローラなど、人工現実アプリケーションをサポートするように構成された1つまたは複数のSoC集積回路を含み得る。SoCは、複数のプロセッサと、ネットワークオンチップ(NoC)と、IPCユニットとを備え得る。プロセッサは、コンピュータ処理ユニット(CPU)(たとえば、縮小命令セットコンピュータ(RISC)、高度RISCマシン(ARM)、複合命令セットコンピュータ(CISC)など)、デジタル信号プロセッサ(DSP)、畳み込みニューラルネットワーク(CNN)プロセッサなどを含み得る。NoCは、1つまたは複数のSoCの構成要素間のデータ通信を可能にする通信インフラストラクチャである。そのような構成要素は、SoCのサブシステムと、サブシステムのプロセッサと、SoCの他のプロセッサと、IPCユニットとを含み得る。
以下でさらに説明されるように、IPCユニットは、SoCの1つのプロセッサにIPC機構を提供して、SoCの別のプロセッサに、利用可能な通信を通知するか、または共有リソースが現在使用中であることを通知する。いくつかの例では、プロセッサは、1つまたは複数のメモリロケーションにデータを記憶し、NoCを介して、他のプロセッサに、データが処理するために利用可能であることをシグナリングし得る。これは、「ドアベル」と呼ばれる。たとえば、ソースプロセッサが、メモリロケーションにデータを書き込み、ドアベルレジスタと呼ばれる異なるメモリロケーションに書き込むことによって「ドアベルを鳴らし」得る。ドアベルレジスタに書き込むことによって、データが処理するために利用可能であることを指示するために1つまたは複数のターゲットプロセッサへの割込みがトリガされる。本明細書でさらに詳細に説明されるように、HMD112および/または周辺デバイス136などのデバイスは、複数のドアベルレジスタを含み、それらのドアベルレジスタの各々が、ターゲットプロセッサへの割込み要求を開始するために使用され得る。
いくつかの例では、プロセッサは、共有リソース(たとえば、メモリ、I/Oデバイス)へのアクセスを要求し、共有リソースの所有権を取得すると、他のプロセッサによる共有リソースへの同時アクセスを防ぎ得る。これは、「相互排他」または「ミューテックス」と呼ばれ、プロセッサが、共有リソースに対応するミューテックスの所有権を取得し得る。たとえば、周辺デバイス136の第1のプロセッサ(たとえば、中央処理ユニット(CPU))と第2のプロセッサ(たとえば、グラフィックスプロセッサユニット(GPU))とはメモリを共有し得、ミューテックスの所有権をもつプロセッサのみが共有メモリにアクセスし得る。本明細書でさらに詳細に説明されるように、HMD112および/または周辺デバイス136などのデバイスは、複数のハードウェア相互実行レジスタ(「ミューテックスレジスタ」)を含み、それらのハードウェア相互実行レジスタの各々が、共有リソースへの同時アクセスを防ぐために使用され得る。デバイス上で実行しているプロセッサは、共有リソースのためのミューテックスレジスタに、プロセッサについての一意のハードウェア識別子(HWID)と、プロセスについてのソフトウェア識別子(SWID)とを書き込むことを試みることによって、ミューテックスを取得することを試み得る。取得が成功した場合、ミューテックスレジスタは、HWIDとSWIDとを記憶する。ミューテックスレジスタのこの状態に基づいて、デバイスのプロセッサおよび他のプロセッサは、ミューテックスの所有権を決定し、このようにして、対応する共有リソースへのアクセスを制御することができる。
図1Bは、本開示で説明される技法による、割込み、およびコンピュータプロセッサの間で共有されるプロセッサ間通信機構を提供する、別の例示的な人工現実システム20を示す図である。図1Bの例では、人工現実システム20は、外部カメラ102Aおよび102B(まとめて、「外部カメラ102」)と、HMD112A~112C(まとめて、「HMD112」)と、コントローラ114Aおよび114B(まとめて、「コントローラ114」)と、コンソール106と、センサー90とを含む。図1Bに示されているように、人工現実システム20は、コンソール106および/またはHMD112上で実行している人工現実アプリケーションが、ユーザ110A~110C(まとめて、「ユーザ110」)の各々に、それぞれのユーザについての対応する基準系の現在の観察パースペクティブに基づいて人工現実コンテンツを提示する、マルチユーザ環境を表す。すなわち、この例では、人工現実アプリケーションは、HMD112の各々についての基準系についてのポーズ情報を追跡および計算することによって、人工コンテンツを構築する。人工現実システム20は、HMD112の対応する基準系についての更新されたポーズ情報を計算する際に使用するための、ユーザ110による動きならびに/またはユーザ110およびオブジェクト108に関する追跡情報など、現実世界の環境内の3D情報をキャプチャするために、カメラ102、HMD112、およびコントローラ114から受信されたデータを使用する。一例として、人工現実アプリケーションは、HMD112Cについて決定された現在の観察パースペクティブに基づいて、仮想オブジェクト128A~128B(まとめて、「仮想オブジェクト128」)を、現実世界のオブジェクト108A~108B(まとめて、「現実世界のオブジェクト108」)上に空間的にオーバーレイされたものとして有する、人工現実コンテンツ122をレンダリングし得る。さらに、HMD112Cのパースペクティブから、人工現実システム20は、それぞれ、ユーザ110A、110Bについての推定された位置に基づいて、アバター120A、120Bをレンダリングする。
HMD112の各々は、人工現実システム20内でコンカレントに動作する。図1Bの例では、ユーザ110の各々は、人工現実アプリケーションにおける「プレーヤ」または「参加者」であり得、ユーザ110のいずれかは、人工現実アプリケーションにおける「観客」または「観測者」であり得る。HMD112Cは、ユーザ110Cの手132および/または腕134を追跡し、人工現実コンテンツ122内で、視野130内にある手132の部分を仮想手132としてレンダリングすることによって、図1AのHMD112と実質的に同様に動作し得る。HMD112Bは、ユーザ110Bによって保持されたコントローラ114からユーザ入力を受信し得る。いくつかの例では、コントローラ114Aおよび/または114Bは、図1Aの周辺デバイス136に対応し、図1Aの周辺デバイス136と実質的に同様に動作することができる。HMD112Aも、図1AのHMD112と実質的に同様に動作し、ユーザ110Aの手132A、132Bによって、周辺デバイス136上でまたは周辺デバイス136を用いて実施されたジェスチャーの形態で、ユーザ入力を受信し得る。HMD112Bは、ユーザ110Bによって保持されたコントローラ114からユーザ入力を受信し得る。コントローラ114は、Bluetoothなどの短距離ワイヤレス通信のニアフィールド通信を使用して、ワイヤード通信リンクを使用して、または他のタイプの通信リンクを使用してHMD112Bと通信していることがある。
図1Bに示されているように、HMD112Cのカメラ138を介してキャプチャされた画像データに加えてまたはその代替として、外部カメラ102からの入力データが、手の指(フィンガー、親指)の個体および/または組合せの移動を含む、ユーザ110Cの手132など、ユーザ110の周辺デバイス136ならびに/または手および腕の特定の動き、構成、位置、および/または配向を追跡および検出するために使用され得る。いくつかの態様では、人工現実アプリケーションは、コンソール106上で稼働することができ、HMD112Aのユーザによって実施され得る入力ジェスチャーを識別するために、手132Bの構成、位置、および/または配向を分析するために撮像デバイス102Aおよび102Bを利用することができる。同様に、HMD112Cは、HMD112Cのユーザによって実施され得るジェスチャーを入力するために、周辺デバイス136および手132Cの構成、位置および/または配向を分析するために撮像デバイス138を利用することができる。いくつかの例では、周辺デバイス136は、周辺デバイス136の動きまたは配向を追跡するための1つまたは複数のセンサー(たとえば、加速度計)を含む。人工現実アプリケーションは、人工現実コンテンツをレンダリングし得る。人工現実コンテンツは、図1Aに関して上記で説明されたものなど、そのようなジェスチャー、動き、および配向に応答する、仮想コンテンツアイテムおよび/またはUI要素を含み得る。
撮像デバイス102および138は、可視光スペクトル、赤外スペクトル、または他のスペクトルにおいて画像をキャプチャし得る。オブジェクト、オブジェクトポーズ、およびジェスチャーを識別するための本明細書で説明される画像処理は、たとえば、赤外画像、可視光スペクトル画像などを処理することを含み得る。
人工現実システム20のデバイスは、AR環境中で連携して作動し得る。この例では、周辺デバイス136は、ARシステム20内で一緒に動作するように、HMD112Cとペアリングされる。同様に、コントローラ114は、ARシステム20内で一緒に動作するように、HMD112Bとペアリングされる。周辺デバイス136、HMD112、および/またはコントローラ114は、各々、人工現実アプリケーションのための動作環境を可能にするように構成された1つまたは複数のSoC集積回路を含み得る。
図1Aで説明された例と同様に、SoCのIPCユニットは、プロセッサがドアベルおよび/またはミューテックスについてなど、プロセッサ間通信を実施することを可能にし得る。以下でさらに詳細に説明されるように、IPCユニットは、SoCの1つのプロセッサにIPC機構を提供して、SoCの別のプロセッサに、利用可能な通信を通知する(たとえば、ドアベル)。たとえば、HMD112および/または周辺デバイス136などのデバイスは、複数のドアベルレジスタを含み、それらのドアベルレジスタの各々が、プロセッサのペア(たとえば、ソースプロセッサおよびターゲットプロセッサ)で構成され得る。ドアベルレジスタの各々は、ターゲットプロセッサへの割込み要求を開始するために使用され得る。いくつかの例では、プロセッサは、共有リソース(たとえば、メモリ、I/Oデバイス)へのアクセスを要求し、共有リソースの所有権を取得すると、他のプロセッサによる共有リソースへの同時アクセスを防ぎ得る(たとえば、ミューテックス)。たとえば、HMD112および/または周辺デバイス136などのデバイスは、複数のミューテックスレジスタを含み、それらのミューテックスレジスタの各々が、共有リソースへの同時アクセスを防ぐために使用され得る。ミューテックスレジスタの状態に基づいて、デバイスのプロセッサおよび他のプロセッサは、ミューテックスの所有権を決定し、このようにして、対応する共有リソースへのアクセスを制御することができる。
図2Aは、本開示で説明される技法による、割込み、およびコンピュータプロセッサの間で共有されるプロセッサ間通信機構を提供する、例示的なHMD112および例示的な周辺デバイス136を示す図である。図2AのHMD112は、図1Aおよび図1BのHMD112のいずれかの一例であり得る。HMD112は、図1A、図1Bの人工現実システム10、20など、人工現実システムの一部であり得るか、または、本明細書で説明される技法を実装するように構成されたスタンドアロンモバイル人工現実システムとして動作し得る。
この例では、HMD112は、HMD112をユーザに固定するための前面剛体とバンドとを含む。さらに、HMD112は、ユーザに人工現実コンテンツを提示するように構成された内向き(interior-facing)電子ディスプレイ203を含む。電子ディスプレイ203は、液晶ディスプレイ(LCD)、量子ドットディスプレイ、ドットマトリックスディスプレイ、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、陰極線管(CRT)ディスプレイ、e-ink、あるいは視覚出力を生成することが可能なモノクロ、カラー、または、任意の他のタイプのディスプレイなど、任意の好適なディスプレイ技術であり得る。いくつかの例では、電子ディスプレイは、ユーザの各眼に別個の画像を提供するための立体視ディスプレイである。いくつかの例では、HMD112の前面剛体に対するディスプレイ203の知られている配向および位置は、HMD112およびユーザの現在の観察パースペクティブに従って人工現実コンテンツをレンダリングするためにHMD112の位置および配向を追跡するとき、ローカル原点とも呼ばれる基準系として使用される。他の例では、HMD112は、眼鏡またはゴーグルなど、他のウェアラブルヘッドマウントディスプレイの形態をとり得る。
図2Aにさらに示されているように、この例では、HMD112は、HMD112の現在の加速度を示すデータを出力する(慣性測定ユニットまたは「IMU」とも呼ばれる)1つまたは複数の加速度計、HMD112のロケーションを示すデータを出力するGPSセンサー、様々なオブジェクトからのHMD112の距離を示すデータを出力するレーダーまたはソナー、あるいは、HMD112または物理的環境内の他のオブジェクトのロケーションまたは配向の指示を提供する他のセンサーなど、1つまたは複数の動きセンサー206をさらに含む。その上、HMD112は、物理的環境を表す画像データを出力するように構成された、ビデオカメラ、レーザースキャナ、ドップラーレーダースキャナ、深度スキャナなど、統合された撮像デバイス138Aおよび138B(まとめて、「撮像デバイス138」)を含み得る。より詳細には、撮像デバイス138は、一般にHMD112の観察パースペクティブと対応する、撮像デバイス138の視野130A、130B内にある、物理的環境中の(周辺デバイス136および/または手132を含む)オブジェクトを表す画像データをキャプチャする。HMD112は、検知されたデータを処理し、ディスプレイ203上に人工現実コンテンツを提示するためのプログラム可能な動作を実行するための動作環境を提供するために、内部電源と、1つまたは複数のプロセッサ、メモリ、およびハードウェアを有する1つまたは複数のプリント回路基板とを含み得る、内部制御ユニット210を含む。
一例では、本明細書で説明される技法によれば、HMD112は、コンピュータプロセッサの間で共有されるプロセッサ間通信機構を提供するIPCユニット224を含む。同様に、周辺デバイス136は、コンピュータプロセッサの間で共有されるプロセッサ間通信機構を提供するIPCユニット226を含む。
IPCユニット224および226は、各々、プロセッサがプロセッサ間通信を実施することを可能にするために、ドアベルおよび/またはミューテックスを実装し得る。図1Aおよび図1Bで説明された例と同様に、IPCユニット224および226は、各々、SoCの1つのプロセッサにIPC機構を提供して、SoCの別のプロセッサに、利用可能な通信を通知し得る(たとえば、ドアベル)。たとえば、HMD112は複数のドアベルレジスタを含み、それらのドアベルレジスタの各々が、プロセッサのペア(たとえば、HMD112のソースプロセッサおよびターゲットプロセッサ)で構成され得る。HMD112のIPCユニット224は、HMD112のターゲットプロセッサへの割込み要求を開始するために、ドアベルレジスタを使用し得る。同様に、周辺デバイス136は複数のドアベルレジスタを含み、それらのドアベルレジスタの各々が、プロセッサのペアで構成され得る。周辺デバイス136のIPCユニット226は、周辺デバイス136のターゲットプロセッサへの割込み要求を開始するために、ドアベルレジスタを使用し得る。
いくつかの例では、プロセッサは、共有リソースへの相互排他的なアクセス(たとえば、ミューテックス)を要求し得る。図2Aの例では、HMD112および/または周辺デバイス136のプロセッサは、各々、異なる時間に、または同時発生的にリソースにアクセスすることを試み得る。たとえば、周辺デバイス136のメモリは、HMD112および/または周辺デバイス136によってキャプチャされたデータを記憶し得る。この例では、HMD112のプロセッサは、周辺デバイス136中の共有メモリへの相互排他的なアクセスを要求し得る。上記で説明され、以下でさらに説明されるように、HMD112は、複数のミューテックスレジスタを含み、それらのミューテックスレジスタの各々が、共有リソースへの同時アクセスを防ぐために使用され得る。HMD112中のメモリなどの共有リソースを使用するために、HMD112の第1のプロセッサ上で稼働している第1のプロセスが、そのリソースに対応するミューテックスレジスタのミューテックスの所有権を取得しなければならない。ミューテックスレジスタの状態に基づいて、HMD112のプロセッサおよび他のプロセッサは、ミューテックスの所有権を決定し、このようにして、対応する共有リソースへのアクセスを制御することができる。
図2Bは、本開示で説明される技法による、別の例示的なHMD112を示す図である。図2Bは、眼鏡フォームファクタを有するHMD112を示す。図2BのHMD112は、図1Aおよび図1BのHMD112のいずれかの一例であり得る。HMD112は、図1A、図1Bの人工現実システム10、20など、人工現実システムの一部であり得るか、または、本明細書で説明される技法を実装するように構成されたスタンドアロンモバイル人工現実システムとして動作し得る。図2BのHMD112は、(図2Bに示されていない)周辺デバイスと通信し得る。
この例では、HMD112は、HMD112がユーザの鼻に載っていることを可能にするブリッジと、HMD112をユーザに固定するためにユーザの耳にわたって延びるテンプル(または「アーム」)とを含む前面フレームを備える眼鏡である。さらに、図2BのHMD112は、ユーザに人工現実コンテンツを提示するように構成された内向き電子ディスプレイ203Aおよび203B(まとめて、「電子ディスプレイ203」)を含む。電子ディスプレイ203は、液晶ディスプレイ(LCD)、量子ドットディスプレイ、ドットマトリックスディスプレイ、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、陰極線管(CRT)ディスプレイ、e-ink、あるいは視覚出力を生成することが可能なモノクロ、カラー、または、任意の他のタイプのディスプレイなど、任意の好適なディスプレイ技術であり得る。図2Bに示されている例では、電子ディスプレイ203は、ユーザの各眼に別個の画像を提供するための立体視ディスプレイを形成する。いくつかの例では、HMD112の前面フレームに対するディスプレイ203の知られている配向および位置は、HMD112およびユーザの現在の観察パースペクティブに従って人工現実コンテンツをレンダリングするためにHMD112の位置および配向を追跡するとき、ローカル原点とも呼ばれる基準系として使用される。
図2Bにさらに示されているように、この例では、HMD112は、HMD112の現在の加速度を示すデータを出力する(慣性測定ユニットまたは「IMU」とも呼ばれる)1つまたは複数の加速度計、HMD112のロケーションを示すデータを出力するGPSセンサー、様々なオブジェクトからのHMD112の距離を示すデータを出力するレーダーまたはソナー、あるいは、HMD112または物理的環境内の他のオブジェクトのロケーションまたは配向の指示を提供する他のセンサーなど、1つまたは複数の動きセンサー206をさらに含む。その上、HMD112は、物理的環境を表す画像データを出力するように構成された、ビデオカメラ、レーザースキャナ、ドップラーレーダースキャナ、深度スキャナなど、統合された撮像デバイス138Aおよび138B(まとめて、「撮像デバイス138」)を含み得る。HMD112は、検知されたデータを処理し、ディスプレイ203上に人工現実コンテンツを提示するためのプログラム可能な動作を実行するための動作環境を提供するために、内部電源と、1つまたは複数のプロセッサ、メモリ、およびハードウェアを有する1つまたは複数のプリント回路基板とを含み得る、内部制御ユニット210を含む。
図2Aに示されている例と同様に、HMD112は、コンピュータプロセッサの間で共有されるプロセッサ間通信機構を提供するIPCユニット224を含む。IPCユニット224は、プロセッサがプロセッサ間通信を実施することを可能にするために、ドアベルおよび/またはミューテックスを実装し得るHMD112のプロセッサを可能にする。図2Aで説明された例と同様に、IPCユニット224は、各々、SoCの1つのプロセッサにIPC機構を提供して、SoCの別のプロセッサに、利用可能な通信を通知し得る(たとえば、ドアベル)。たとえば、HMD112は複数のドアベルレジスタを含み、それらのドアベルレジスタの各々が、プロセッサのペア(たとえば、HMD112のソースプロセッサおよびターゲットプロセッサ)で構成され得る。HMD112のIPCユニット224は、HMD112のターゲットプロセッサへの割込み要求を開始するために、ドアベルレジスタを使用し得る。
いくつかの例では、プロセッサは、共有リソースへの相互排他的なアクセス(たとえば、ミューテックス)を要求し得る。図2Bの例では、HMD112のプロセッサは、各々、(たとえば、HMD112または周辺デバイス136の)共有リソースにアクセスすることを試み得る。たとえば、HMD112のメモリは、HMD112および/または他のデバイスによってキャプチャされたデータを記憶し得る。この例では、HMD112のプロセッサは、共有メモリへの相互排他的なアクセスを要求し得る。上記で説明され、以下でさらに説明されるように、共有リソースを使用するために、HMD112は、複数のミューテックスレジスタを含み、それらのミューテックスレジスタの各々が、共有リソースへの同時アクセスを防ぐために使用され得る。HMD112中のメモリなどの共有リソースを使用するために、HMD112の第1のプロセッサ上で稼働している第1のプロセスが、そのリソースに対応するミューテックスレジスタのミューテックスの所有権を取得しなければならない。ミューテックスレジスタの状態に基づいて、HMD112のプロセッサおよび他のプロセッサは、ミューテックスの所有権を決定し、このようにして、対応する共有リソースへのアクセスを制御することができる。
図3は、本開示で説明される技法による、図1A、図1Bのマルチデバイス人工現実システム10、20のコンソール106とHMD112と周辺デバイス136との例示的な実装形態を示すブロック図である。図3の例では、コンソール106は、HMD112および/または外部センサーから受信された動きデータおよび画像データなど、検知されたデータに基づいて、HMD112のためのポーズ追跡と、ジェスチャー検出と、レンダリングとを実施する。
この例では、HMD112は、いくつかの例では、オペレーティングシステム305を実行するためのコンピュータプラットフォームを提供する1つまたは複数のプロセッサ302とメモリ304とを含み、オペレーティングシステム305は、たとえば埋込み型リアルタイムマルチタスキングオペレーティングシステム、または他のタイプのオペレーティングシステムであり得る。次に、オペレーティングシステム305は、アプリケーションエンジン340を含む1つまたは複数のソフトウェア構成要素307を実行するためのマルチタスキング動作環境を提供する。図2Aおよび図2Bの例に関して説明されるように、プロセッサ302は、電子ディスプレイ203と、動きセンサー206と、撮像デバイス138とに結合される。いくつかの例では、プロセッサ302とメモリ304とは、別個の、個別構成要素であり得る。他の例では、メモリ304は、単一の集積回路内にプロセッサ302とコロケートされるオンチップメモリであり得る。図2Aおよび図2Bの例に関して説明されるように、プロセッサ302は、AR環境内で連携して使用されるデバイス、たとえば、周辺デバイス136とペアリングするとき、HMD112のセキュアデバイス構成証明および相互認証を提供するためのセキュリティプロセッサ224を含む。HMD112によって実行されるソフトウェア構成要素307およびプロセスの各々は、異なるソフトウェア識別子を有し得る。周辺デバイス136のプロセッサによって実行されるプロセスも、異なるソフトウェア識別子を有し得る。プロセスについてのソフトウェア識別子は、人工現実システム10の任意のデバイスによって実行されるプロセスの間で一意であり得る。
概して、コンソール106は、HMD112のためにジェスチャー検出とユーザインターフェースおよび/または仮想コンテンツ生成とを実施するために、カメラ102(図1B)および/またはHMD112の撮像デバイス138(図1A、図2A、図2B)から受信された画像および追跡情報を処理するコンピューティングデバイスである。いくつかの例では、コンソール106は、ワークステーション、デスクトップコンピュータ、ラップトップ、またはゲーミングシステムなど、単一のコンピューティングデバイスである。いくつかの例では、プロセッサ312および/またはメモリ314など、コンソール106の少なくとも一部分は、クラウドコンピューティングシステムにわたって、データセンターにわたって、あるいは、インターネット、別のパブリックまたはプライベート通信ネットワーク、たとえば、ブロードバンド、セルラー、Wi-Fi、および/または、コンピューティングシステムとサーバとコンピューティングデバイスとの間でデータを送信するための、他のタイプの通信ネットワークなど、ネットワークにわたって分散され得る。
図3の例では、コンソール106は、いくつかの例では、オペレーティングシステム316を実行するためのコンピュータプラットフォームを提供する1つまたは複数のプロセッサ312とメモリ314とを含み、オペレーティングシステム316は、たとえば埋込み型リアルタイムマルチタスキングオペレーティングシステム、または他のタイプのオペレーティングシステムであり得る。次に、オペレーティングシステム316は、1つまたは複数のソフトウェア構成要素317を実行するためのマルチタスキング動作環境を提供する。プロセッサ312は、1つまたは複数のI/Oインターフェース315に結合され、1つまたは複数のI/Oインターフェース315は、キーボード、ゲームコントローラ、ディスプレイデバイス、撮像デバイス、HMD、周辺デバイスなど、外部デバイスと通信するための1つまたは複数のI/Oインターフェースを提供する。その上、1つまたは複数のI/Oインターフェース315は、ネットワーク104など、ネットワークと通信するための1つまたは複数のワイヤードまたはワイヤレスネットワークインターフェースコントローラ(NIC)を含み得る。
コンソール106のソフトウェアアプリケーション317は、人工現実アプリケーション全体を提供するように動作する。この例では、ソフトウェアアプリケーション317は、アプリケーションエンジン320と、レンダリングエンジン322と、ジェスチャー検出器324と、ポーズトラッカー326と、ユーザインターフェースエンジンとを含む。コンソール106によって実行されるソフトウェアアプリケーション317および他のプロセスの各々は、異なるソフトウェア識別子を有し得る。
概して、アプリケーションエンジン320は、人工現実アプリケーション、たとえば、遠隔会議アプリケーション、ゲーミングアプリケーション、ナビゲーションアプリケーション、教育アプリケーション、トレーニングまたはシミュレーションアプリケーションなどを提供および提示するための機能性を含む。アプリケーションエンジン320は、たとえば、1つまたは複数のソフトウェアパッケージ、ソフトウェアライブラリ、ハードウェアドライバ、および/またはコンソール106上に人工現実アプリケーションを実装するためのアプリケーションプログラムインターフェース(API)を含み得る。アプリケーションエンジン320による制御に応答して、レンダリングエンジン322は、HMD112のアプリケーションエンジン340によってユーザへの表示のための3D人工現実コンテンツを生成する。
アプリケーションエンジン320およびレンダリングエンジン322は、ポーズトラッカー326によって決定された基準系、一般にHMD112の観察パースペクティブについての現在のポーズ情報に従って、ユーザ110への表示のための人工コンテンツを構築する。現在の観察パースペクティブに基づいて、レンダリングエンジン322は、いくつかの場合には、少なくとも部分的に、ユーザ110の現実世界の3D環境上にオーバーレイされ得る3D人工現実コンテンツを構築する。このプロセス中、ポーズトラッカー326は、ユーザ110による動きおよび/またはユーザ110に関する特徴追跡情報など、現実世界の環境内の3D情報をキャプチャするために、移動情報およびユーザコマンドなど、HMD112から受信された検知されたデータと、いくつかの例では、外部カメラなど、任意の外部センサー90(図1A、図1B)からのデータとに対して動作する。検知されたデータに基づいて、ポーズトラッカー326は、HMD112の基準系についての現在のポーズを決定し、現在のポーズに従って、1つまたは複数のI/Oインターフェース315を介して、ユーザ110への表示のためのHMD112への通信のための人工現実コンテンツを構築する。
ポーズトラッカー326は、周辺デバイス136および/またはHMD112についての現在のポーズを決定し得る。ユーザインターフェースエンジン328は、人工現実環境においてHMD112におけるレンダリングのための仮想ユーザインターフェースを生成するように構成される。ユーザインターフェースエンジン328は、仮想描画インターフェース、選択可能なメニュー(たとえば、ドロップダウンメニュー)、仮想ボタン、方向パッド、キーボードなどの1つまたは複数の仮想ユーザインターフェース要素329、または他のユーザ選択可能なユーザインターフェース要素、グリフ、ディスプレイ要素、コンテンツ、ユーザインターフェース制御などを含むように仮想ユーザインターフェースを生成し得る。レンダリングエンジン322は、人工現実環境においてHMD112における表示のための仮想ユーザインターフェースと、他の人工現実コンテンツとをレンダリングするように構成される。
コンソール106は、HMD112における表示のために、通信チャネルを介して、HMD112に人工現実コンテンツを出力し得る。レンダリングエンジン322は、HMD112および/または周辺デバイス136についてのポーズ情報を受信して、ポーズに対する人工現実コンテンツのポーズレンダリングを更新し得る。
撮像デバイス138または102、プレゼンスセンシティブ表面220、あるいは他のセンサーデバイスのいずれかからの検知されたデータに基づいて、ジェスチャー検出器324は、ユーザ110によって実施された1つまたは複数のジェスチャーを識別するために、周辺デバイス136および/またはユーザのオブジェクト(たとえば、手、腕、手首、フィンガー、手のひら、親指)の追跡された動き、構成、位置、および/または配向を分析する。より詳細には、ジェスチャー検出器324は、HMD112の撮像デバイス138ならびに/またはセンサー90および外部カメラ102によってキャプチャされた画像データ内で認識されたオブジェクトを分析して、周辺デバイス136ならびに/あるいはユーザ110の手および/または腕を識別し、HMD112に対する周辺デバイス136、手、および/または腕の移動を追跡して、ユーザ110によって実施されたジェスチャーを識別する。いくつかの例では、ジェスチャー検出器324は、キャプチャされた画像データに基づいて、周辺デバイス136、手、指、および/または腕の位置および配向の変化を含む移動を追跡し、オブジェクトの動きベクトルをジェスチャーライブラリ330中の1つまたは複数のエントリと比較して、ユーザ110によって実施されたジェスチャーまたはジェスチャーの組合せを検出し得る。いくつかの例では、ジェスチャー検出器324は、周辺デバイスの(1つまたは複数の)プレゼンスセンシティブ表面によって検出されたユーザ入力を受信し、ユーザ入力を処理して、周辺デバイス136に関してユーザ110によって実施された1つまたは複数のジェスチャーを検出し得る。
ジェスチャー検出器324およびジェスチャーライブラリ330は、周辺デバイス136上でユーザ入力を処理して、ジェスチャーを検出するために、全体的にまたは部分的に、周辺デバイス136に分散され得る。そのような場合、(1つまたは複数の)プレゼンスセンシティブ表面220は、表面のロケーションにおけるユーザ入力を検出する。ジェスチャー検出器324を実行している周辺デバイス136は、ユーザ入力を処理して、ジェスチャーライブラリ330の1つまたは複数のジェスチャーを検出することができる。周辺デバイス136は、検出されたジェスチャーの指示をコンソール106および/またはHMD112に送って、コンソール106および/またはHMD112が応答して1つまたは複数のアクションを実施することを引き起こし得る。周辺デバイス136は、代替的に、または追加として、表面のロケーションにおけるユーザ入力の指示をコンソール106に送り得、ジェスチャー検出器324は、ユーザ入力を処理して、ジェスチャーライブラリ330の1つまたは複数のジェスチャーを検出し得る。
ジェスチャーライブラリ330中のいくつかのエントリが、各々、周辺デバイス136、ユーザの手、特定のフィンガー、親指、手首および/または腕の相対経路または空間的な並進運動および回転など、一連の動きまたは動きのパターンとしてジェスチャーを定義し得る。ジェスチャーライブラリ330中のいくつかのエントリは、各々、特定の時間における、またはある時間期間にわたる、周辺デバイス、ユーザの手および/または腕(またはそれらの部分)の構成、位置、および/または配向としてジェスチャーを定義し得る。ジェスチャーライブラリ330中のいくつかのエントリは、各々、経時的に、周辺デバイス136の(1つまたは複数の)プレゼンスセンシティブ表面220によって検出された1つまたは複数のユーザ入力としてジェスチャーを定義し得る。ジェスチャーのタイプの他の例が可能である。さらに、ジェスチャーライブラリ330中のエントリの各々が、定義されたジェスチャーまたは一連のジェスチャーについて、個人のリアルタイム視線追跡、表示されている人工コンテンツのタイプ、実行されているアプリケーションのタイプなどによって決定され得るような、HMD112の現在の視野に対する空間関係、ユーザよって現在観測されている特定の領域に対する空間関係など、ジェスチャーまたは一連のジェスチャーがアクションをトリガするために必要とされる条件を指定し得る。
ジェスチャーライブラリ330中のエントリの各々は、定義されたジェスチャーまたはジェスチャーの組合せ/一連のジェスチャーの各々について、ソフトウェアアプリケーション317によって実施されるべき所望の応答またはアクションをさらに指定し得る。たとえば、いくつかの特殊なジェスチャーがあらかじめ定義され得、したがって、あらかじめ定義されたジェスチャーのうちの1つを検出したことに応答して、ユーザインターフェースエンジン328は、ユーザに表示されている人工現実コンテンツへのオーバーレイとしてユーザインターフェースを動的に生成し、それにより、人工現実コンテンツと対話している間でさえ、ユーザ110がHMD112および/またはコンソール106を構成するためのユーザインターフェースを容易に呼び出すことを可能にする。他の例では、いくつかのジェスチャーは、入力を提供すること、(仮想コンテンツアイテムおよび/またはUI要素を含む)仮想オブジェクトを選択すること、仮想オブジェクトを並進運動させる(たとえば、移動する、回転する)こと、仮想オブジェクトを変更する(たとえば、スケーリングする、アノテーションを付ける)こと、仮想マーキングを行うこと、アプリケーションを起動することなど、他のアクションに関連し得る。
一例として、ジェスチャーライブラリ330は、ユーザインターフェースアクティブ化ジェスチャー、メニュースクロールジェスチャー、選択ジェスチャー、スタンピングジェスチャー、並進運動ジェスチャー、回転ジェスチャー、描画ジェスチャー、および/またはポインティングジェスチャーなど、周辺デバイスジェスチャーについて説明するエントリを含み得る。ジェスチャー検出器324は、撮像デバイス138からの画像データを処理して、周辺デバイス136および/またはユーザの手の構成、位置、動き、および/または配向を分析して、周辺デバイス136に関してユーザによって実施され得るユーザインターフェースジェスチャー、選択ジェスチャー、スタンピングジェスチャー、並進運動ジェスチャー、回転ジェスチャー、描画ジェスチャー、ポインティングジェスチャーなどを識別し得る。たとえば、レンダリングエンジン322は、ジェスチャー検出器324によって、ユーザインターフェースジェスチャーが実施されていることを検出したことと、ポーズトラッカー326によって、HMD112が仮想ピンボードの仮想位置に対応する物理的位置に近接していることを検出したこととに基づいて、ピンボードユーザインターフェースをレンダリングすることができる。ユーザインターフェースエンジン328は、表示されるメニューを定義することができ、選択ジェスチャーによって引き起こされる選択に応答して、実施されるアクションを制御することができる。
図3に示されている例では、周辺デバイス136は、いくつかの例では、オペレーティングシステム342を実行するためのコンピュータプラットフォームを提供する1つまたは複数のプロセッサ346とメモリ344とを含み、オペレーティングシステム342は、たとえば埋込み型リアルタイムマルチタスキングオペレーティングシステム、または他のタイプのオペレーティングシステムであり得る。次に、オペレーティングシステム346は、1つまたは複数のソフトウェア構成要素を実行するためのマルチタスキング動作環境を提供する。いくつかの例では、周辺デバイス136は、1つまたは複数のプレゼンスセンシティブ表面220(たとえば、タッチおよび/またはホバー入力を検出するための、容量性技術、導電性技術、抵抗性技術、音響技術、および/または他の技術を使用する1つまたは複数の表面)を含む。1つまたは複数の態様では、周辺デバイス136は、プレゼンスセンシティブ表面220におけるタッチおよび/またはホバー入力を検出し、その入力を(たとえば、プロセッサ346において)処理し、コンソール106および/またはHMD112に、タッチおよび/またはホバー入力を通信し、(その入力に関するロケーション情報を含む)その入力に関する情報を通信するように構成され得る。図2Aの例に関して説明されるように、(1つまたは複数の)プレゼンスセンシティブ表面220は、タッチスクリーン(たとえば、容量性タッチスクリーン、抵抗性タッチスクリーン、表面音響波(SAW)タッチスクリーン、赤外線タッチスクリーン、光イメージングタッチスクリーン、音響パルス認識タッチスクリーン、または任意の他のタッチスクリーン)を含むことができる。図3にさらに示されているように、この例では、周辺デバイス136は、周辺デバイス136の現在の加速度を示すデータを出力する(IMUとも呼ばれる)1つまたは複数の加速度計、周辺デバイスのロケーションおよび位置を示すデータを出力するGPSセンサー、様々なオブジェクトからの(たとえば、壁または他の表面からの)周辺デバイス136の距離を示すデータを出力するレーダーまたはソナー、あるいは、周辺デバイスまたは物理的環境内の他のオブジェクトのロケーション、位置、および/または配向の指示を提供する他のセンサーなど、1つまたは複数の動きセンサー348をさらに含む。いくつかの例では、プロセッサ346は、(1つまたは複数の)プレゼンスセンシティブ表面220と動きセンサー246とに結合される。いくつかの例では、プロセッサ346とメモリ344とは、別個の、個別構成要素であり得る。他の例では、メモリ344は、単一の集積回路内にプロセッサ346とコロケートされるオンチップメモリであり得る。1つまたは複数の態様では、周辺デバイス136はHMDと共存し、いくつかの例では、仮想環境中のHMDのための補助入出力デバイスとして動作することができる。いくつかの例では、周辺デバイス136は、HMDの機能のうちのいくつかがオフロードされる人工現実共同処理デバイスとして動作し得る。1つまたは複数の態様では、周辺デバイス136は、スマートフォン、タブレット、または他のハンドヘルドデバイスであり得る。
いくつかの例では、プロセッサ302、312、346の各々は、マルチコアプロセッサ、コントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは等価な個別論理回路または集積論理回路のうちの任意の1つまたは複数を含み得る。メモリ304、314、344は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電子的消去可能プログラマブル読取り専用メモリ(EEPROM)、およびフラッシュメモリなど、データおよび実行可能ソフトウェア命令を記憶するための任意の形式のメモリを含み得る。
本明細書で説明される技法によれば、図3のマルチデバイス人工現実システムは、プロセッサの間で共有されるプロセッサ間通信機構を提供する。たとえば、本明細書でより詳細に説明されるように、周辺デバイス136は、周辺デバイス136のプロセッサと、AR環境内で連携して使用されるARシステムの他のデバイス、たとえば、HMD112および/またはコンソール106のプロセッサとのための、ドアベルおよびミューテックスなど、プロセッサ間通信機構を提供するためのIPCユニット226を含み得る。同様に、HMD112のIPCユニット224は、HMD112のプロセッサと、AR環境内で連携して使用されるARシステムの他のデバイス、たとえば、周辺デバイス136および/またはコンソール106のプロセッサとのための、ドアベルおよびミューテックスなど、プロセッサ間通信機構を提供し得る。
図4は、本開示で説明される技法による、図1A、図1Bの人工現実システムのHMDと周辺デバイスとの例示的な実装形態を示すブロック図である。
この例では、図3と同様に、HMD112は、いくつかの例では、オペレーティングシステム305を実行するためのコンピュータプラットフォームを提供する1つまたは複数のプロセッサ302とメモリ304とを含み、オペレーティングシステム305は、たとえば埋込み型リアルタイムマルチタスキングオペレーティングシステム、または他のタイプのオペレーティングシステムであり得る。次に、オペレーティングシステム305は、1つまたは複数のソフトウェア構成要素417を実行するためのマルチタスキング動作環境を提供する。その上、(1つまたは複数の)プロセッサ302は、電子ディスプレイ203と、動きセンサー206と、撮像デバイス138とに結合される。
図4の例では、ソフトウェア構成要素417は、人工現実アプリケーション全体を提供するように動作する。この例では、ソフトウェアアプリケーション417は、アプリケーションエンジン440と、レンダリングエンジン422と、ジェスチャー検出器424と、ポーズトラッカー426と、ユーザインターフェースエンジン428とを含む。様々な例では、ソフトウェア構成要素417は、ユーザ110への表示のための人工コンテンツ上に、または人工コンテンツの一部としてオーバーレイされる仮想ユーザインターフェースを構築するために、図3のコンソール106のカウンターパート構成要素(たとえば、アプリケーションエンジン320、レンダリングエンジン322、ジェスチャー検出器324、ポーズトラッカー326、およびユーザインターフェースエンジン328)と同様に動作する。
図3に関して説明された例と同様に、撮像デバイス138または102、周辺デバイス136のプレゼンスセンシティブ表面、あるいは他のセンサーデバイスのいずれかからの検知されたデータに基づいて、ジェスチャー検出器424は、ユーザ110によって実施された1つまたは複数のジェスチャーを識別するために、周辺デバイス136および/またはユーザのオブジェクト(たとえば、手、腕、手首、フィンガー、手のひら、親指)の追跡された動き、構成、位置、および/または配向を分析する。
より詳細には、ジェスチャー検出器424は、HMD112の撮像デバイス138ならびに/またはセンサー90および外部カメラ102によってキャプチャされた画像データ内で認識されたオブジェクトを分析して、周辺デバイス136ならびに/あるいはユーザ110の手および/または腕を識別し、HMD112に対する周辺デバイス136、手、および/または腕の移動を追跡して、ユーザ110によって実施されたジェスチャーを識別し得る。ジェスチャー検出器424は、ユーザ110によって実施されたジェスチャーを識別するために、周辺デバイス136ならびに/あるいはユーザ110の手および/または腕を識別し、HMD112に対する周辺デバイス136、手、および/または腕の移動を追跡するために、HMD112の撮像デバイス138および/またはセンサー90および外部カメラ102によってキャプチャされた画像データ内で認識されるオブジェクトを分析し得る。いくつかの例では、ジェスチャー検出器424は、キャプチャされた画像データに基づいて、周辺デバイス136、手、指、および/または腕の位置および配向の変化を含む移動を追跡し、オブジェクトの動きベクトルをジェスチャーライブラリ430中の1つまたは複数のエントリと比較して、ユーザ110によって実施されたジェスチャーまたはジェスチャーの組合せを検出し得る。いくつかの例では、ジェスチャー検出器424は、周辺デバイスの(1つまたは複数の)プレゼンスセンシティブ表面によって検出されたユーザ入力を受信し、ユーザ入力を処理して、周辺デバイス136に関してユーザ110によって実施された1つまたは複数のジェスチャーを検出し得る。ジェスチャーライブラリ430は、図3のジェスチャーライブラリ330と同様である。ジェスチャー検出器424の機能性の全部のうちの一部が周辺デバイス136によって実行され得る。
図3に関して説明された例と同様に、HMD112は、HMD112のプロセッサ302間の、またはARシステムの他のデバイス(たとえば、周辺デバイス136)のプロセッサへの、(たとえば、ドアベルおよび/またはミューテックスを介した)プロセッサ間通信を提供するプロセッサ間通信(IPC)ユニット224を含む。
図5Aは、人工現実システムのデバイス500の例示的な一実装形態を示すブロック図である。デバイス500は、図1A~図4のHMD112または周辺デバイス136、あるいは人工現実システムにおける任意のデバイスの一例であり得る。デバイス500は、図1A、図1Bの人工現実システム10、20など、人工現実システムの一部であり得るか、または、本明細書で説明される技法を実装するように構成されたスタンドアロンモバイル人工現実システムとして動作し得る。
この例では、デバイス500は、1つまたは複数のシステムオンチップ(SoC)集積回路502A~502N(まとめて、「SoC502」)と、メモリ506と、ネットワークオンチップ(NoC)508と、プロセッサ間通信(IPC)ユニット510とを含む。概して、SoC502は、分散アーキテクチャにおいて配列され、人工現実アプリケーションのための動作環境を提供するように構成された特殊な集積回路の集合を表す。例として、SoC集積回路は、コアプリケーションプロセッサ、センサーアグリゲータ、暗号化/解読エンジン、セキュリティプロセッサ、手/眼/深度追跡およびポーズ計算要素、ビデオ符号化およびレンダリングエンジン、ディスプレイコントローラならびに通信制御構成要素として動作する、特殊な機能ブロックを含み得る。機能ブロックの各々は、SoCのサブシステムまたは構成要素と呼ばれることがある。SoCのより詳細な例が、図5Cに示されている。SoC502の各々は、1つまたは複数のプロセッサを含み得る。図5Aの例では、SoC502は、それぞれのプロセッサ504A~504N(まとめて、「プロセッサ504」)を含む。プロセッサ504は、命令を実行するための中央処理ユニットCPU、DSP、CNNプロセッサ、GPU、または他の処理回路を含み得る。SoC502のプロセッサ504および他の構成要素は、NoC508を使用して、互いと通信し得る。NoC508は、たとえば、SoC502の構成要素間の共有バスを備える通信インフラストラクチャである。
IPCユニット510は、ミューテックスレジスタ512と、処理回路518と、ドアベルレジスタ520とを含む。SoC502およびセキュリティプロセッサ526は、ドアベルおよび/またはミューテックスなど、プロセッサ間通信を提供するために、IPCユニット510と連携して動作する。IPCユニット510は、ミューテックスレジスタ512とドアベルレジスタ520の両方を含むものとして示されているが、IPCユニット510は、ミューテックスレジスタ512のみ、ドアベルレジスタ520のみ、またはその両方を含み得る。
ドアベルレジスタ520は、メモリアドレスマップの論理的書込み可能レジスタまたは物理的書込み可能レジスタ(たとえば、32ビット)を表し得る。ドアベルレジスタ520の各ドアベルレジスタは、SoC502中に含まれるプロセッサ504の異なるペアに対応する。ドアベルレジスタのセットは、異なるターゲットプロセッサに関連し、プロセッサについての割込み要求線529にひも付けられ得る。セキュリティプロセッサ526は、たとえば、ブート時間において、ドアベルレジスタ520の各ドアベルレジスタのためのプロセッサのペアを構成し得る。たとえば、セキュリティプロセッサ526は、ソースプロセッサおよびターゲットプロセッサについての各ドアベルレジスタの役割識別子(ID)を構成し得る。
いくつかの例では、ドアベルレジスタ520のレジスタのグループが、単一のターゲットプロセッサにひも付けられ(たとえば、1対1マッピング)、割込み要求線は、ソースプロセッサを単一のターゲットプロセッサに接続する。いくつかの例では、ドアベルレジスタ520は、複数のドアベルレジスタグループを含み得る(たとえば、1対多マッピング)。レジスタのソースプロセッサ、ターゲットプロセッサペアは、「セキュリティレジスタ」と呼ばれることがある。たとえば、単一のターゲットプロセッサは、ドアベルレジスタグループについての複数のソースプロセッサにマッピングされ得、同じグループ中のドアベルレジスタが、単一のターゲットプロセッサにひも付けられる(たとえば、ターゲットプロセッサの割込みコントローラ入力に接続された出力IRQ)。ドアベルレジスタグループについてのセキュリティレジスタの一例が、以下に示されている。
Figure 2022550656000002
説明しやすいように、単一のドアベルレジスタグループ521のみが図5Aに示されている。IPCユニット510は、SoC502のプロセッサ504のためのプロセッサ間通信機構を提供する。たとえば、SoC502のプロセッサ504は、ターゲットプロセッサ504についての割込み(たとえば、ドアベル)を生成するためにIPCユニット510を使用し得る。一例として、セキュリティプロセッサ526は、ソースプロセッサ522、ターゲットプロセッサ523ペアで、ドアベルレジスタ520のドアベルレジスタグループ521を構成する。この例では、セキュリティプロセッサ526は、ソースプロセッサ、ターゲットプロセッサペア(たとえば、セキュリティレジスタ)で、ドアベルレジスタグループ521を構成する。たとえば、セキュリティプロセッサ526は、プロセッサ504AのHWIDとして指定されたソースプロセッサ522と、プロセッサ504BのHWIDとして指定されたターゲットプロセッサ523とで、ドアベルレジスタグループ521のセキュリティレジスタを構成する。いくつかの例では、他のソースプロセッサは、ターゲットプロセッサ523に関連し、ドアベルレジスタグループの一部であり得る。
各ドアベルレジスタグループは、メモリマップアドレスを有する書込み可能レジスタである1ビット機能レジスタに関連する。1ビット機能レジスタは、ターゲットCPUの割込みコントローラ入力に接続された出力IRQ線を有し得る。機能レジスタの一例が、以下に示されている。
Figure 2022550656000003
ターゲットプロセッサ504Bへの割込みを生成するために、ソースプロセッサ504Aは、ソースプロセッサ、ターゲットプロセッサペア(たとえば、ソースプロセッサ522およびターゲットプロセッサ524)に対応するドアベルレジスタグループ521の1ビット機能レジスタ524に値(たとえば、「1」)を書き込むために、NoC536を介して、メモリアクセス要求を送る。ソースプロセッサ504Aは、メモリアクセス要求中にソースプロセッサ504AのHWIDを含める。
IPCユニット510がメモリアクセス要求を受信した後に、IPCユニット510は、メモリアクセス要求中のソースプロセッサ504AのHWIDが、ドアベルレジスタ520に記憶されたHWIDに一致するかどうかを決定する。メモリアクセス要求中に含まれるソースプロセッサ504AのHWIDが、ドアベルレジスタ520に記憶されたHWIDに一致しない場合、IPCユニット538は、メモリアクセス要求を拒否し、エラーが返される。IPCユニット510は、たとえば、セキュリティプロセッサ526に、エラーをロギングし得る。
メモリアクセス要求中に含まれるソースプロセッサ504AのHWIDが、ドアベルレジスタ520に記憶されたHWIDに一致する場合、IPCユニット510は、それぞれのドアベルレジスタグループ521の機能レジスタ524に値(たとえば、「1」)を書き込む。機能レジスタ524に「1」の値を書き込むことによって、1つまたは多数のターゲットプロセッサへの、割込み要求線529上の割込み要求(IRQ)が生成され得る。いくつかの例では、ドアベルレジスタ520の各ドアベルレジスタは、対応するターゲットプロセッサに、1ビット割込み要求を出力するように構成される。
ターゲットプロセッサ504Bが割込み要求の処理を完了すると、ターゲットプロセッサ504Bは、同じドアベルレジスタグループ(たとえば、ドアベルレジスタグループ521)に値(たとえば、「0」)を書き込み、別の割込み要求のためにドアベルレジスタグループ521の機能レジスタ524をクリアするために、メモリアクセス要求を送り得る。たとえば、IPCユニット510は、ターゲットプロセッサ504Bからメモリアクセス要求を受信し、ドアベルレジスタグループ521の機能レジスタ524に「0」を書き込み得る。いくつかの例では、ソースプロセッサのみが、ソースプロセッサ、ターゲットプロセッサペアのためのドアベルレジスタに「1」値を書き込むことができ、ターゲットプロセッサのみが、「0」値を書き込むことによって、そのドアベルレジスタから値をクリアすることができる。IPCユニット510は、ドアベルレジスタ520に対するこれらの書込み限定を施行する。
いくつかの例では、ドアベルレジスタ520の各機能レジスタは、暗黙的カウンタを含み得る。いくつかの場合には、暗黙的カウンタは、ソースプロセッサが暗黙的カウンタをセットしている間に、ターゲットプロセッサが暗黙的カウンタをクリアすることを試みる競合状態を防ぎ得る。一例として、IPCユニット510は、ドアベルレジスタグループ521の最下位ビット(LSB)(たとえば、機能レジスタ524)に、「1」を書き込み得る。ドアベルレジスタグループ521の機能レジスタ524に書き込むことによって、カウンタは1だけ増加され得る。暗黙的カウンタは、飽和して最大値の「1」になる。言い換えれば、暗黙的カウンタが「1」にセットされている間に、「LSB=1’b1」でドアベルレジスタグループの機能レジスタに書き込むことは、暗黙的カウンタがすでに「1」にセットされているので、暗黙的カウンタを変更しないことがある。暗黙的カウンタが0よりも大きいとき、機能レジスタは、それぞれのターゲットプロセッサへの割込み要求を出力する。いくつかの例では、「LSB=1’b0」でドアベルレジスタグループの機能レジスタに書き込むことは、暗黙的カウンタを「1」から「0」に減少させる。暗黙的カウンタは、飽和して「0」値になり、これは、暗黙的カウンタが「0」を下回らないことがあることを意味し得る。
いくつかの例では、(たとえば、通常動作において)エラーがないとき、割込みが引き起こされる。エラーは、プロセッサがドアベルレジスタにアクセスするための許可を有しない場合、エラーレジスタ(たとえば、「ERR_STATUS」および「ERR_DATA」レジスタ)においてロギングされ得る。次いで、ERR_STATUSレジスタが空でないとき、エラー割込みが引き起こされることになる。いくつかの場合には、ソースプロセッサが読取り許可を有しない場合、読取りデータ0×0が返され得る。「ERR_STATUS」は、たとえば、「ERR_STATUS」レジスタについて、「[0]=有効」、「[2:1]=エラーコード」、「[11:3]=予約済み」、「[19:12]=イニシエータ役割ID」、「[31:20]=アドレスオフセット」、および「ERR_DATA」レジスタについて、「[31:0]=データ」を含む、コンテンツを登録し得る。いくつかの例では、ミューテックスレジスタ512は、メモリまたはI/Oデバイスの一部分など、共有リソース506または他の共有リソースへのSoC502によるアクセスを制御するために、相互排他を提供し得る。ミューテックスレジスタ512は、ミューテックスのセットを含み得、ミューテックスのセットの各ミューテックスは、異なる共有リソースへのアクセスを制御し得る。1つまたは複数のプロセッサによって実行される1つまたは複数のプロセスは、ミューテックスレジスタ512中のミューテックスによって保護された共有リソースを使用し得る。ミューテックスレジスタ512のミューテックスは、たとえば、プロセッサ上で稼働している単一のプロセスとの関連付けによって、ミューテックスの所有権(または所有権なし)を指示し得る。ミューテックスは、ミューテックスの所有者に関連する一意のIDを記憶し、所有者のみがミューテックスを所有権から解放することを可能にし得る。たとえば、ミューテックスの所有者は、プロセスのソフトウェア識別子(SWID)とプロセスを実行しているプロセッサのハードウェア識別子(HWID)の両方で定義され得る。SWIDは、ソフトウェアによって定義され得る。ハードウェアIDは、プロトコルに従って、セキュリティプロセッサ526によって与えられ得る。HWIDは、割込みイニシエータID、AXI仕様におけるトランザクション識別子(AxID)、および/または役割IDを表し得、ミューテックスレジスタによって使用されるプロトコルに一致し得る。HWIDを含む例示的なミューテックスレジスタが、以下に示されている。
Figure 2022550656000004
各ミューテックスレジスタは、値とプロセスに関連するSWIDとを有する書込み可能レジスタである32ビット機能レジスタに関連する。機能レジスタの一例が、以下に示されている。
Figure 2022550656000005
説明しやすいように、単一のミューテックスレジスタ513のみが図5Aに示されている。図5Aの例では、共有リソース506を排他的に使用するために、第1のプロセッサ(たとえば、SoC502Aのプロセッサ504A)上で稼働している第1のプロセスは、共有リソース506に対応するミューテックスの所有権を取得し得る。共有リソース506に対応するミューテックスの所有権を取得するために、第1のプロセッサ504A上で稼働している第1のプロセスは、NoC536を介したメモリアクセス要求を使用して、ミューテックスレジスタ512に、第1の値(たとえば、「1」)と第1のプロセスに関連するSWIDとを書き込むことを試みる。第1のプロセッサ504Aは、メモリアクセス要求中にプロセッサ504AのHWIDを挿入する。(たとえば、他のプロセスが共有リソース506に対応するミューテックスを所有していないので)第1のプロセスがミューテックスの所有権を取得することに成功した場合、IPCユニット510は、値と、第1のプロセスのSWIDと、第1のプロセッサ504AのHWIDとをミューテックスレジスタ512のミューテックスレジスタ513に記憶する。たとえば、IPCユニット510は、ソフトウェアプロトコルによって定義された、「ビット[31]=1’b1」によって与えられたデータフィールド514、「ビット[30:0]=SWID」によって与えられたデータフィールド515で、ミューテックスレジスタ513に書き込み得る。ミューテックス513は、第1のプロセッサ504AのHWIDを指定するデータフィールド516をも含み得る。(たとえば、別のプロセスがミューテックスを所有しているので)第1のプロセスがミューテックス取得することに失敗した場合、エラーは返されないことになる。
第1のプロセスは、次いで、ミューテックス513中のデータを読み取り得る。第1のプロセスのSWIDが共有リソース506に対応するミューテックス513のSWIDに一致しない場合、第1のプロセスは、ミューテックスを所有せず、共有リソース506を使用することができない。第1のプロセスに関連するSWIDがミューテックス513のSWIDに一致する場合、第1のプロセスは、ミューテックスを所有し、共有リソース506を使用することができる。
所有者が共有リソースを使用することをやめた後に、所有者のみがミューテックスをプロセスによって所有権から解放し得る。たとえば、第1のプロセスのみが、ミューテックス513を所有権から解放し得る。ミューテックス513および共有リソース506を解放するために、第1のプロセスは、NoC508を介して、ミューテックスレジスタ512に記憶されたミューテックス513をクリアするために、そのミューテックス513に第2の値(たとえば、「0」)を書き込むためにメモリアクセス要求を発行し得る。たとえば、IPCユニット510は、ソフトウェアプロトコルによって定義された、「ビット[31]=1’b0」によって与えられたデータフィールド514、「ビット[30:0]=SWID」によって与えられたデータフィールド515で、ミューテックス513に書き込み得る。いくつかの例では、書込み要求のHWIDおよびSWIDは、ミューテックスに記憶されたものに一致しなければならない。ミューテックスに記憶されたHWIDとは異なるHWIDを有するプロセッサが、ミューテックスをクリアすることを試みる場合、IPCユニット510は、セキュリティプロセッサ526にエラーを登録し得る。
ミューテックスレジスタ512の各ミューテックスは、1つの所有者または0個の所有者を有する。ミューテックスが所有者を有しないとき、その値は「0×0」であり得、値は後続の書込み動作中に取得され得る。いくつかの場合には、ミューテックスの所有権を取得することと、ミューテックスを解放することの両方は、競合することを回避するために、アトミック演算で実施され得る。
プロセッサは、ミューテックスレジスタ512から読み取り得る。現在、所有者がいない場合、ミューテックスレジスタ512は0×0を返す。現在、所有者がいる場合、ミューテックスレジスタ512は、ビット[31]=1’b1」によって与えられたデータフィールド514と、「ビット[30:0]=SWID」によって与えられたデータフィールド515とを返す。
図5Bは、本開示で説明される技法による、単一のSoCの複数のコンピュータプロセッサがIPCを使用する例示的な一実装形態を示すブロック図である。図5Aで説明された例と同様に、SoC502のプロセッサ505A~505Nの各々は、(1)ターゲットプロセッサについての割込み要求を開始するために、または(2)共有リソース(たとえば、メモリ、I/Oデバイス)のためのロックを取得するために、IPCユニット510のレジスタを使用し得る。
この例では、ドアベルレジスタ520は、単一のSoC、たとえば、SoC502のプロセッサ505A~505N(まとめて、「プロセッサ505」)間のIPCを可能にする。プロセッサ505は、割込み要求線529によって接続されて、IPCユニット510からの割込み信号を受信する。ミューテックスレジスタ512は、オンチップ共有リソース506A~506Bおよび/またはオフチップリソース507へのアクセスを保護する。
図5Cは、本開示で説明される技法による、1つまたは複数のデバイス(たとえば、周辺デバイス136およびHMD112)がプロセッサ間通信機構を提供する、マルチデバイス人工現実システムのための分散アーキテクチャのより詳細な例示的な実装形態を示すブロック図である。説明されたように、周辺デバイス136およびHMD112は、それぞれ、SoC502A~502BおよびSoC530A~530CのためのIPC機構を提供するように設計および構成される。
概して、図5Bに示されているSoCは、各SoC集積回路が人工現実アプリケーションのための動作環境を提供するように構成された様々な特殊な機能ブロックを含む分散アーキテクチャにおいて配列された特殊な集積回路の集合を表す。図5Cは、SoC集積回路の1つの例示的な配列にすぎない。マルチデバイス人工現実システムのための分散アーキテクチャは、人工現実環境を提供するためのSoC集積回路の任意の集合および/または配列を含み得る。
この例では、HMD112のSoC530Aは、追跡532と、暗号化/解読538と、コプロセッサ540と、セキュリティプロセッサ542と、1つまたは複数のインターフェース544とを含む機能ブロックを備える。SoC530Aの機能ブロックは、人工現実コンテンツのための様々なデータを記憶するためにメモリ546を使用し得る。メモリ546は、ダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、スタティックRAM(SRAM)、またはデータを記憶するための他のタイプのメモリを表し得る。NoC570を介して、SoC530Bと、530Cと、IPCユニット572とに相互接続されたSoC530Aが示されているが、SoC530Aは、SoC530Aの機能ブロックが、互いと、およびSoC530AのIPCユニットとそれによって通信し得るNoCを含み得る。
追跡532は、眼追跡533(「眼533」)、手追跡534(「手534」)、深度追跡535(「深度535」)、ならびに/または同時位置特定およびマッピング(SLAM)536(「SLAM536」)のための機能ブロックを提供する。たとえば、HMD112は、HMD112の現在の加速度を示すデータを出力する(慣性測定ユニットまたは「IMU」とも呼ばれる)1つまたは複数の加速度計、HMD112のロケーションを示すデータを出力するGPSセンサー、様々なオブジェクトからのHMD112の距離を示すデータを出力するレーダーまたはソナー、あるいは、HMD112または物理的環境内の他のオブジェクトのロケーションまたは配向の指示を提供する他のセンサーから、入力を受信し得る。HMD112はまた、1つまたは複数の撮像デバイス588A~588N(まとめて、「撮像デバイス588」)から画像データを受信し得る。撮像デバイスは、物理的環境を表す画像データを出力するように構成された、ビデオカメラ、レーザースキャナ、ドップラーレーダースキャナ、深度スキャナなどを含み得る。より詳細には、撮像デバイスは、一般にHMD112の観察パースペクティブと対応する、撮像デバイスの視野内にある、物理的環境中の(周辺デバイス136および/または手を含む)オブジェクトを表す画像データをキャプチャする。検知されたデータおよび/または画像データに基づいて、追跡570は、たとえば、HMD112の基準系についての現在のポーズを決定し、現在のポーズに従って、人工現実コンテンツをレンダリングする。
暗号化/解読538は、発信データを暗号化し、周辺デバイス136または他のデバイスから通信された着信データを解読するための機能ブロックである。暗号化/解読538は、データを暗号化/解読するために対称鍵暗号法をサポートし得る。
コアプリケーションプロセッサ540は、ビデオ処理ユニット、グラフィックス処理ユニット、デジタル信号プロセッサ、エンコーダおよび/またはデコーダ、ならびに/あるいは他のものなど、様々なプロセッサを含む。
セキュリティプロセッサ542は、AR環境内で連携して使用されるデバイス、たとえば、周辺デバイス136とペアリングするとき、HMD112のセキュアデバイス構成証明および相互認証を提供し得る。
インターフェース544は、SoC530Aの機能ブロックに接続するためのインターフェースを含む。一例として、インターフェース544は、周辺構成要素相互接続エクスプレス(PCIe)スロットを含み得る。SoC530Aは、インターフェース544を使用してSoC530B、530Cと接続し得る。SoC530Aは、他のデバイス、たとえば、周辺デバイス136と通信するためにインターフェース544を使用して通信デバイス(たとえば、無線送信機)と接続し得る。
SoC530Bおよび530Cは、各々、それぞれのディスプレイ、たとえば、ディスプレイ586A、586B(まとめて、「ディスプレイ586」)上に人工現実コンテンツを出力するためのディスプレイコントローラを表す。この例では、SoC530Bは、ユーザの左眼587Aのための人工現実コンテンツを出力するための、ディスプレイ568Aのためのディスプレイコントローラを含み得る。たとえば、SoC530Bは、ディスプレイ586A上に人工現実コンテンツを出力するための解読ブロック592A、デコーダブロック594A、ディスプレイコントローラ596A、および/またはピクセルドライバ598Aを含む。同様に、SoC530Cは、ユーザの右眼587Bのための人工現実コンテンツを出力するための、ディスプレイ568Bのためのディスプレイコントローラを含み得る。たとえば、SoC530Cは、人工現実コンテンツを生成し、ディスプレイ586B上に出力するための、解読592B、デコーダ594B、ディスプレイコントローラ596B、および/またはピクセルドライバ598Bを含む。ディスプレイ568は、ARコンテンツを表示するための発光ダイオード(LED)ディスプレイ、有機LED(OLED)、量子ドットLED(QLED)、電子ペーパー(E-ink)ディスプレイ、液晶ディスプレイ(LCD)、または他のタイプのディスプレイを含み得る。
周辺デバイス136は、人工現実アプリケーションをサポートするように構成されたSoC540Aおよび540Bを含む。この例では、SoC540Aは、追跡542と、暗号化/解読548と、1つまたは複数のディスプレイプロセッサ550と、セキュリティプロセッサ552と、1つまたは複数のインターフェース554とを含む機能ブロックを備える。SoC540Aの機能ブロックは、人工現実コンテンツのための様々なデータを記憶するためにメモリ556を使用し得る。メモリ556は、ダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、スタティックRAM(SRAM)、またはデータを記憶するための他のタイプのメモリを表し得る。NoC574を介して、SoC502Bと、IPCユニット576とに相互接続されたSoC540Aが示されているが、SoC540Aは、SoC540Aの機能ブロックが、互いと、およびSoC540AのIPCユニットとそれによって通信し得るNoCを含み得る。
追跡542は、眼追跡543(「眼543」)、手追跡544(「手544」)、深度追跡545(「深度545」)、ならびに/または同時位置特定およびマッピング(SLAM)546(「SLAM546」)を提供する機能ブロックである。たとえば、周辺デバイス136は、周辺デバイス136の現在の加速度を示すデータを出力する(慣性測定ユニットまたは「IMU」とも呼ばれる)1つまたは複数の加速度計、周辺デバイス136のロケーションを示すデータを出力するGPSセンサー、様々なオブジェクトからの周辺デバイス136の距離を示すデータを出力するレーダーまたはソナー、あるいは、周辺デバイス136または物理的環境内の他のオブジェクトのロケーションまたは配向の指示を提供する他のセンサーから、入力を受信し得る。周辺デバイス136は、いくつかの例では、物理的環境を表す画像データを出力するように構成された、ビデオカメラ、レーザースキャナ、ドップラーレーダースキャナ、深度スキャナなど、1つまたは複数の撮像デバイスから画像データをも受信し得る。検知されたデータおよび/または画像データに基づいて、追跡ブロック542は、たとえば、周辺デバイス136の基準系についての現在のポーズを決定し、現在のポーズに従って、HMD112に人工現実コンテンツをレンダリングする。
暗号化/解読548は、発信データを暗号化し、HMD112または他のデバイスから通信された着信データを解読する。暗号化/解読548は、セッション鍵(たとえば、秘密対称鍵)を使用してデータを暗号化/解読するために対称鍵暗号法をサポートし得る。
ディスプレイプロセッサ550は、HMD112に人工現実コンテンツをレンダリングするための、ビデオ処理ユニット、グラフィックス処理ユニット、エンコーダおよび/またはデコーダ、ならびに/あるいは他のものなど、プロセッサを含む。
セキュリティプロセッサ552は、AR環境内で連携して使用されるデバイス、たとえば、HMD112とペアリングするとき、周辺デバイス136のセキュアデバイス構成証明および相互認証を提供し得る。
インターフェース554は、SoC540Aの機能ブロックに接続するためのインターフェースを含む。一例として、インターフェース554は、周辺構成要素相互接続エクスプレス(PCIe)スロットを含み得る。SoC540Aは、インターフェース554を使用してSoC540Bと接続し得る。SoC540Aは、他のデバイス、たとえば、HMD112と通信するためにインターフェース554を使用して1つまたは複数の通信デバイス(たとえば、無線送信機)と接続し得る。
SoC510Bは、コアプリケーションプロセッサ560と1つまたは複数のアプリケーションプロセッサ562とを含む。この例では、コアプリケーションプロセッサ560は、視覚処理ユニット(VPU)、グラフィックス処理ユニット(GPU)、および/または中央処理ユニット(CPU)など、様々なプロセッサを含む。アプリケーションプロセッサ562は、たとえば、仮想ユーザインターフェースを生成し、周辺デバイス136の表面にレンダリングするための、および/または周辺デバイス136に関してユーザによって実施されたジェスチャーを検出するための、1つまたは複数の人工現実アプリケーションを実行するための処理ユニットを含み得る。
図5Aおよび図5Bの例に関して説明されたように、IPCユニット572は、SoC530のプロセッサのためのプロセッサ間通信を提供し得る。たとえば、IPCユニット572は、ドアベルについての割込みを生成するために使用されるドアベルレジスタを含む。代替的に、または追加として、IPCユニット572は、共有リソース、たとえば、メモリ546または周辺デバイス136への相互排他的アクセスを制御するためのミューテックスレジスタを含む。NoC570は、SoC530の構成要素間の共有バスを備える通信インフラストラクチャである。たとえば、NoC570およびIPCユニット572は、追跡532と、暗号化/解読548と、コプロセッサ540と、セキュリティプロセッサ542と、SoC530Aの他の構成要素とを相互接続するためのSoC530Aの構成要素であり得る。
同様に、IPCユニット576は、SoC540のプロセッサのためのプロセッサ間通信を提供し得る。たとえば、IPCユニット576は、ドアベルについての割込みを生成するために使用されるドアベルレジスタを含む。代替的に、または追加として、IPCユニット576は、共有リソース、たとえば、メモリ546または周辺デバイス136への相互排他的アクセスを制御するためのミューテックスレジスタを含む。NoC574は、SoC540の構成要素間の共有バスを備える通信インフラストラクチャである。たとえば、NoC575およびIPCユニット576は、追跡542と、暗号化/解読548と、ディスプレイプロセッサ550と、セキュリティプロセッサ552と、SoC540Aの他の構成要素とを相互接続するためのSoC540Aの構成要素であり得る。
図6A~図6Bは、本開示の1つまたは複数の技法による、プロセッサ間通信についての例示的な動作を示す例示的な流れ図である。たとえば、図6Aは、本開示の1つまたは複数の技法による、ターゲットプロセッサについての割込み要求を開始するための例示的な動作を示す流れ図である。図6Bは、本開示の1つまたは複数の技法による、ミューテックスの所有権を取得することと、ミューテックスを所有権から解放することとを行うための例示的な動作を示す流れ図である。図6A~図6Bは、図5A~図5Bの人工現実システム500に関して説明される。しかしながら、図6A~図6Bの技法は、人工現実システム500の異なる構成要素によって、あるいは追加または代替のデバイスによって実施され得る。
図6Aの例では、IPCユニット510は、NoC508を介して、人工現実システム500のデバイス502のプロセッサ504Aなど、第1のプロセッサ(たとえば、ソースプロセッサ)からメモリアクセス要求を受信する(602)。プロセッサ504Aは、HMD112、周辺デバイス136、または人工現実システムの任意のデバイスのSoCのプロセッサであり得る。メモリアクセス要求は、ソースプロセッサに関連するハードウェア識別子(HWID)を示す情報を含み得る。
IPCユニット510は、ソースプロセッサに関連するHWIDが、IPCユニット510のドアベルレジスタ520のドアベルレジスタグループ521についてのHWIDに一致するかどうかを決定する(604)。上記で説明されたように、セキュリティプロセッサは、たとえば、初期ブートにおいて、ドアベルレジスタ520のドアベルレジスタグループ521のためのソースプロセッサ、ターゲットプロセッサペアを構成し得る。メモリアクセス要求のHWIDがドアベルレジスタグループ521中のHWIDに一致しない場合(604の「いいえ」分岐)、IPCユニット510は、NoC508を介して、IPCユニット510がメモリアクセス要求を拒否したことを指示するエラーメッセージを、ソースプロセッサに返す(606)。いくつかの例では、IPCユニット510は、NoC508を介してセキュリティプロセッサに、ソースプロセッサに返されたエラーメッセージの記録を示す情報を出力する。
HWIDが一致する場合(604の「はい」分岐)、IPCユニット510は、ソースプロセッサにリンクされているとき、ドアベルレジスタグループ521についての第2のプロセッサ(たとえば、ターゲットプロセッサ504B)への割込み要求をトリガするために、ドアベルレジスタ520のドアベルレジスタグループ521に値を書き込む(608)。たとえば、IPCユニット510は、ドアベルレジスタグループ521の機能レジスタ524に「1」の値を書き込み得、これは、ソースプロセッサ504Aからターゲットプロセッサ504Bへの通信を指示するために、割込み要求ライン529を介して、ターゲットプロセッサ504Bへの割込み要求をトリガする(610)。
IPCユニット510は、NoC508を介して、ターゲットプロセッサ504Bから第2のメモリアクセス要求を受信し得る(612)。第2のメモリ要求は、割込み要求の処理が完了したことを指示し得る。IPCユニット510は、次いで、別の割込み要求のためにドアベルレジスタグループ521をクリアするために、ドアベルレジスタグループ521の機能レジスタ524に第2の値を書き込む(614)。たとえば、IPCユニット510は、ドアベルレジスタグループ521の機能レジスタ524に「0」の値を書き込み得る。
図6Bは、本開示の1つまたは複数の技法による、ミューテックスの所有権を取得することと、ミューテックスを所有権から解放することとを行うための例示的な動作を示す流れ図である。図6Bの例では、IPCユニット510は、NoC508を介して、人工現実システム500のデバイス502のプロセッサ504Aなど、第1のプロセッサからメモリアクセス要求を受信する(622)。プロセッサ504Aは、HMD112、周辺デバイス136、または人工現実システムの任意のデバイスのプロセッサであり得る。メモリアクセス要求は、共有リソース506など、ミューテックスに関連する共有リソースへのアクセスを獲得するための要求を表す。メモリアクセス要求は、第1のプロセッサのプロセス(たとえば、第1のプロセス)に関連するソフトウェア識別子(SWID)を示す情報を含み得る。たとえば、メモリアクセス要求は、値「{1’b1,SWID}」を含み得、ここで、「1’b1」は、IPCユニット510が、ミューテックスレジスタ512のミューテックスレジスタ513に値「1」を書き込むことを引き起こし得、「SWID」は、第1のプロセスのSWIDを表し得る。IPCユニット510は、ミューテックスレジスタ512のミューテックスレジスタ513に第1のプロセスのSWIDを書き込み、これは、第1のプロセスが共有リソース506のためのミューテックスオブジェクトを所有することを指示し得る。メモリアクセス要求を送るとき、第1のプロセッサは、第1のプロセッサに関連するHWIDをも含め得る。
IPCユニット510は、ミューテックスがプロセスによって所有されているかどうかを決定し(624)、ミューテックスがプロセスによって所有されているかどうかに基づいて、共有リソースへのアクセスを制御する。IPCユニット510は、ミューテックスがプロセスによって所有されていないと決定した場合(624の「いいえ」分岐)、IPCユニット510は、共有リソース206に関連するミューテックスがプロセス(たとえば、第1のプロセス)によって所有されていることを指示するために、ミューテックスレジスタ512のミューテックスレジスタ513に値(たとえば、「1」)を書き込み(626)、ミューテックスが第1のプロセスによって所有されていることを指示するために、ミューテックスレジスタ512のミューテックスレジスタ513に第1のプロセスに関連するSWIDを書き込む(628)。
プロセスによる共有リソースへのアクセスを制御するために、IPCユニット510は、ミューテックスがアクセスを要求するプロセスによって所有されているかどうかを決定する。たとえば、IPCユニット510は、メモリアクセス要求中に含まれるSWIDを、ミューテックスレジスタ512に記憶されたSWIDと比較する。SWIDの比較に基づいて、IPCユニット510は、ミューテックスに関連するリソースへのプロセスアクセスを許諾すべきかどうかを決定する(630)。たとえば、メモリアクセス要求中に含まれるSWIDがミューテックスレジスタ512に記憶されたSWIDに一致する場合、IPCユニット510は、ミューテックスに関連する共有リソース(たとえば、メモリ506)への第1のプロセスアクセスを許諾する。
IPCユニット510は、メモリアクセス要求中に含まれるSWIDがミューテックスレジスタ512に記憶されたSWIDに一致しない場合など、ミューテックスが別のプロセスによって所有されていると決定した場合(624の「はい」分岐)、IPCユニット510は、ミューテックスに関連する共有リソースへのプロセスアクセスを拒絶する(632)。
ミューテックスレジスタ512は、その後、NoC508を介して、第1のプロセスによって所有されていることからのミューテックスの解放を指示する第2のメモリアクセス要求を受信し得る(634)。この例では、IPCユニット510は、ミューテックスを第1のプロセスによって所有されていることから解放するために、ミューテックスレジスタ512に第2の値を書き込む。たとえば、IPCユニット510は、ミューテックスレジスタ512に「{1’b1,SWID}」を書き込み、したがって、ミューテックスオブジェクトを第1のプロセスによる所有権から解放し得る。
本明細書の様々な例として説明されたように、本開示の技法は、人工現実システムを含むか、または人工現実システムとともに実装され得る。説明されたように、人工現実は、ユーザへの提示の前に何らかの様式で調整された形式の現実であり、これは、たとえば、仮想現実(VR)、拡張現実(AR)、複合現実(MR)、ハイブリッド現実、あるいはそれらの何らかの組合せおよび/または派生物を含み得る。人工現実コンテンツは、完全に生成されたコンテンツ、またはキャプチャされたコンテンツ(たとえば、現実世界の写真)と組み合わせられた生成されたコンテンツを含み得る。人工現実コンテンツは、ビデオ、オーディオ、触覚フィードバック、またはそれらの何らかの組合せを含み得、それらのいずれも、(観察者に3次元効果をもたらすステレオビデオなどの)単一のチャネルまたは複数のチャネルにおいて提示され得る。さらに、いくつかの実施形態では、人工現実は、たとえば、人工現実におけるコンテンツを作成するために使用される、および/または人工現実において使用される(たとえば、人工現実におけるアクティビティを実施する)アプリケーション、製品、アクセサリ、サービス、またはそれらの何らかの組合せに関連し得る。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されたヘッドマウントデバイス(HMD)、スタンドアロンHMD、モバイルデバイスまたはコンピューティングシステム、あるいは、1人または複数の観察者に人工現実コンテンツを提供することが可能な任意の他のハードウェアプラットフォームを含む、様々なプラットフォーム上に実装され得る。
本開示で説明される技法は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組合せで実装され得る。たとえば、説明される技法の様々な態様が、1つまたは複数のマイクロプロセッサ、DSP、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは任意の他の等価な集積論理回路または個別論理回路、ならびにそのような構成要素の任意の組合せを含む、1つまたは複数のプロセッサ内で実装され得る。「プロセッサ」または「処理回路」という用語は、概して、単独でまたは他の論理回路と組み合わせて、上記の論理回路のいずれか、あるいは任意の他の等価な回路を指し得る。ハードウェアを備える制御ユニットも、本開示の技法のうちの1つまたは複数を実施し得る。
そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示で説明される様々な動作および機能をサポートするために、同じデバイス内にまたは別個のデバイス内に実装され得る。さらに、説明されるユニット、モジュール、または構成要素のいずれかは、一緒に、または個別の、ただし相互運用可能な論理デバイスとして別個に、実装され得る。モジュールまたはユニットとしての異なる特徴の図は、異なる機能的態様を強調することが意図され、そのようなモジュールまたはユニットが別個のハードウェアまたはソフトウェア構成要素によって実現されなければならないことを必ずしも暗示するとは限らない。むしろ、1つまたは複数のモジュールまたはユニットに関連する機能性は、別個のハードウェアまたはソフトウェア構成要素によって実施されるか、あるいは共通のまたは別個のハードウェアまたはソフトウェア構成要素内に組み込まれ得る。
本開示で説明される技法はまた、命令を含んでいる、コンピュータ可読記憶媒体など、コンピュータ可読媒体において具現されるかまたは符号化され得る。コンピュータ可読記憶媒体において埋め込まれるかまたは符号化される命令は、たとえば、命令が実行されるとき、プログラマブルプロセッサ、または他のプロセッサに方法を実施させ得る。コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電子的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、ハードディスク、CD-ROM、フロッピーディスク、カセット、磁気媒体、光媒体、または他のコンピュータ可読媒体を含み得る。
本明細書の様々な例として説明されたように、本開示の技法は、人工現実システムを含むか、または人工現実システムとともに実装され得る。説明されたように、人工現実は、ユーザへの提示の前に何らかの様式で調整された形式の現実であり、これは、たとえば、仮想現実(VR)、拡張現実(AR)、複合現実(MR)、ハイブリッド現実、あるいはそれらの何らかの組合せおよび/または派生物を含み得る。人工現実コンテンツは、完全に生成されたコンテンツ、またはキャプチャされたコンテンツ(たとえば、現実世界の写真)と組み合わせられた生成されたコンテンツを含み得る。人工現実コンテンツは、ビデオ、オーディオ、触覚フィードバック、またはそれらの何らかの組合せを含み得、それらのいずれも、(観察者に3次元効果をもたらすステレオビデオなどの)単一のチャネルまたは複数のチャネルにおいて提示され得る。さらに、いくつかの実施形態では、人工現実は、たとえば、人工現実におけるコンテンツを作成するために使用される、および/または人工現実において使用される(たとえば、人工現実におけるアクティビティを実施する)アプリケーション、製品、アクセサリ、サービス、またはそれらの何らかの組合せに関連し得る。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されたヘッドマウントデバイス(HMD)、スタンドアロンHMD、モバイルデバイスまたはコンピューティングシステム、あるいは、1人または複数の観察者に人工現実コンテンツを提供することが可能な任意の他のハードウェアプラットフォームを含む、様々なプラットフォーム上に実装され得る。

Claims (15)

  1. 複数のプロセッサと、
    レジスタを備えるプロセッサ間通信(IPC)ユニットと
    を備える人工現実システムであって、前記IPCユニットは、
    前記プロセッサのうちの第1のプロセッサからメモリアクセス要求を受信することであって、前記メモリアクセス要求が、前記第1のプロセッサに関連するハードウェア識別子(HWID)を示す情報を含む、メモリアクセス要求を受信することと、
    前記第1のプロセッサに関連する前記HWIDが、前記IPCユニットの前記レジスタについてのHWIDに一致するかどうかを決定することと、
    前記第1のプロセッサに関連する前記HWIDが、前記IPCユニットの前記レジスタについての前記HWIDに一致すると決定したことに基づいて、前記第1のプロセッサから少なくとも1つの他のプロセッサへの通信を指示するために、前記メモリアクセス要求を許可することと
    を行うように構成された、人工現実システム。
  2. 人工現実コンテンツを出力するように構成された1つまたは複数のプロセッサを備えるヘッドマウントディスプレイと、
    前記人工現実システムのユーザから1つまたは複数の入力を受信するように構成されたプロセッサを備える周辺デバイスと
    をさらに備える、請求項1に記載の人工現実システム。
  3. 前記IPCユニットの前記レジスタが、ドアベルレジスタを備え、
    前記通信を指示するために、前記メモリアクセス要求を許可するために、前記IPCユニットは、割込み線を介して、第2のプロセッサへの割込み要求をトリガするために、前記ドアベルレジスタに値を書き込むようにさらに構成され、前記第1のプロセッサが前記ドアベルレジスタについてのソースプロセッサであり、前記第2のプロセッサが前記ドアベルレジスタについてのターゲットプロセッサであり、
    好ましくは、前記ドアベルレジスタが、ドアベルレジスタのセットのうちの1つであり、
    ドアベルレジスタの前記セットの各ドアベルレジスタが、前記プロセッサのうちのターゲットプロセッサと前記プロセッサのうちのソースプロセッサとの異なるペアに関連し、前記割込み要求をトリガするために、前記関連するペアの前記ターゲットプロセッサへの割込み線に接続され、
    さらに好ましくは、前記値が第1の値を表し、前記メモリアクセス要求が第1のメモリアクセス要求を表し、
    前記IPCユニットは、
    前記第2のプロセッサから、前記第2のプロセッサによる前記割込み要求の処理が完了したことを指示する第2のメモリアクセス要求を受信することと、
    別の割込み要求のために前記ドアベルレジスタをクリアするために、前記ドアベルレジスタに第2の値を書き込むことと
    を行うようにさらに構成された、請求項1または2に記載の人工現実システム。
  4. 前記IPCユニットの前記レジスタが、ドアベルレジスタを備え、
    前記第1のプロセッサに関連する前記HWIDが、前記ドアベルレジスタについての予想される前記HWIDに一致しないと決定したことに応答して、前記IPCユニットは、前記IPCユニットが前記メモリアクセス要求を拒否したことを指示するエラーメッセージを、前記第1のプロセッサに返すようにさらに構成され、
    好ましくは、前記第1のプロセッサに関連する前記HWIDが、前記ドアベルレジスタについての前記予想されるHWIDに一致しないと決定したことに応答して、前記IPCユニットは、前記IPCユニットが前記メモリアクセス要求を拒否したことを指示する情報を、前記プロセッサのセキュリティプロセッサに出力するようにさらに構成された、
    請求項1から3のいずれか一項に記載の人工現実システム。
  5. 共有リソース
    をさらに備え、
    前記IPCユニットの前記レジスタが、前記共有リソースのためのミューテックスのためのミューテックスレジスタを備え、
    前記第1のプロセッサが、第1のプロセスを実行するように構成され、
    前記メモリアクセス要求が、前記第1のプロセスに関連するソフトウェア識別(SWID)を示す情報を含み、
    前記メモリアクセス要求を許可するために、前記IPCユニットは、前記ミューテックスレジスタが所有されていないと決定したことに基づいて、前記第1のプロセスのための前記ミューテックスを取得するために、前記メモリアクセス要求を許可するようにさらに構成された、
    請求項1から4のいずれか一項に記載の人工現実システム。
  6. 前記第1のプロセスのための前記ミューテックスを取得するために、前記IPCユニットは、
    前記ミューテックスが所有者を有することを指示するために、前記ミューテックスレジスタに値を書き込むことと、
    前記ミューテックスが前記第1のプロセスによって所有されていることを指示するために、前記第1のプロセスに関連する前記SWIDを前記ミューテックスレジスタに書き込むことと
    を行うように構成された、請求項5に記載の人工現実システム。
  7. 前記メモリアクセス要求が第1のメモリアクセス要求であり、
    前記値が第1の値を表し、
    前記IPCユニットは、
    前記第1のプロセスから第2のメモリアクセス要求を受信することであって、前記第2のメモリアクセス要求が前記ミューテックスの解放を指示する、第2のメモリアクセス要求を受信することと、
    前記ミューテックスを前記第1のプロセスによって所有されていることから解放するために、前記ミューテックスレジスタに第2の値を書き込むことと
    を行うようにさらに構成された、
    請求項5または6に記載の人工現実システム。
  8. 前記メモリアクセス要求が第1のメモリアクセス要求であり、
    前記IPCユニットが、第2のメモリアクセス要求を受信して、前記ミューテックスレジスタを読み取って、記憶されたSWID値を含む前記ミューテックスレジスタについての値を出力するようにさらに構成され、
    前記第1のプロセッサは、前記記憶されたSWID値が、前記第1のプロセスに関連する前記SWIDに一致すると決定したことに応答して、前記共有リソースにアクセスするように構成され、
    好ましくは、前記第1のプロセッサは、前記記憶されたSWID値が、前記第1のプロセスに関連する前記SWIDに一致すると決定したことと、前記ミューテックスがプロセスによって所有されていると決定したこととに応答して、前記共有リソースにアクセスするように構成された、
    請求項5から7のいずれか一項に記載の人工現実システム。
  9. 前記メモリアクセス要求が第1のメモリアクセス要求であり、
    前記IPCユニットが、第2のメモリアクセス要求を受信して、前記ミューテックスレジスタを読み取って、記憶されたSWID値を含む前記ミューテックスレジスタについての値を出力するようにさらに構成され、
    前記プロセッサのうちの前記第2のプロセッサは、前記記憶されたSWID値が、前記第2のプロセッサ上で実行しているプロセスに関連するSWIDに一致しないと決定したことに応答して、前記共有リソースにアクセスすることを控えるように構成された、
    請求項5から8のいずれか一項に記載の人工現実システム。
  10. プロセッサ間通信(IPC)のための方法であって、前記方法は、
    複数のプロセッサのうちの第1のプロセッサからメモリアクセス要求を受信することであって、前記メモリアクセス要求が、前記第1のプロセッサに関連するハードウェア識別子(HWID)を示す情報を含む、メモリアクセス要求を受信することと、
    前記第1のプロセッサに関連する前記HWIDが、IPCユニットのレジスタについてのHWIDに一致するかどうかを決定することと、
    前記第1のプロセッサに関連する前記HWIDが、前記IPCユニットの前記レジスタについての前記HWIDに一致すると決定したことに基づいて、前記第1のプロセッサから少なくとも1つの他のプロセッサへの通信を指示するために、前記メモリアクセス要求を許可することと
    を含む、方法。
  11. 前記IPCユニットの前記レジスタがドアベルレジスタを備え、前記通信を指示するために、前記メモリアクセス要求を許可することは、
    割込み線を介して、第2のプロセッサへの割込み要求をトリガするために、前記ドアベルレジスタに値を書き込むことであって、前記第1のプロセッサが前記ドアベルレジスタについてのソースプロセッサであり、前記第2のプロセッサが前記ドアベルレジスタについてのターゲットプロセッサである、値を書き込むこと
    を含む、請求項10に記載の方法。
  12. 前記値が第1の値を表し、前記メモリアクセス要求が第1のメモリアクセス要求を表し、前記方法は、
    前記第2のプロセッサから、前記第2のプロセッサによる前記割込み要求の処理が完了したことを指示する第2のメモリアクセス要求を受信することと、
    別の割込み要求のために前記ドアベルレジスタをクリアするために、前記ドアベルレジスタに第2の値を書き込むことと
    をさらに含む、請求項11に記載の方法。
  13. 前記IPCユニットの前記レジスタが、共有リソースのためのミューテックスのためのミューテックスレジスタを備え、
    前記第1のプロセッサが、第1のプロセスを実行するように構成され、
    前記メモリアクセス要求が、前記第1のプロセスに関連するソフトウェア識別(SWID)を示す情報を含み、
    前記メモリアクセス要求を許可することは、前記ミューテックスレジスタが所有されていないと決定したことに基づいて、前記第1のプロセスのための前記ミューテックスを取得するために、前記メモリアクセス要求を許可することを含む、
    請求項10から12のいずれか一項に記載の方法。
  14. 前記第1のプロセスのための前記ミューテックスを取得するために、前記方法は、
    前記ミューテックスが所有者を有することを指示するために、前記ミューテックスレジスタに値を書き込むことと、
    前記ミューテックスが第1のプロセスによって所有されていることを指示するために、前記第1のプロセスに関連する前記SWIDを前記ミューテックスレジスタに書き込むことと
    をさらに含み、
    好ましくは、前記メモリアクセス要求が第1のメモリアクセス要求であり、前記値が第1の値を表し、前記方法は、
    前記第1のプロセスから第2のメモリアクセス要求を受信することであって、前記第2のメモリアクセス要求が前記ミューテックスの解放を指示する、第2のメモリアクセス要求を受信することと、
    前記ミューテックスを前記第1のプロセスによって所有されていることから解放するために、前記ミューテックスレジスタに第2の値を書き込むことと
    をさらに含む、
    請求項13に記載の方法。
  15. 命令を備えるコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、処理回路を、
    複数のプロセッサのうちの第1のプロセッサからメモリアクセス要求を受信することであって、前記メモリアクセス要求が、前記第1のプロセッサに関連するハードウェア識別子(HWID)を示す情報を含む、メモリアクセス要求を受信することと、
    前記第1のプロセッサに関連する前記HWIDが、前記IPCユニットの前記レジスタについてのHWIDに一致するかどうかを決定することと、
    前記第1のプロセッサに関連する前記HWIDが、前記IPCユニットの前記レジスタについての前記HWIDに一致すると決定したことに基づいて、前記第1のプロセッサから少なくとも1つの他のプロセッサへの通信を指示するために、前記メモリアクセス要求を許可することと
    を行うように構成する、コンピュータ可読記憶媒体。
JP2021576847A 2019-09-24 2020-08-24 プロセッサ間通信(ipc)を用いた人工現実システム Pending JP2022550656A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962905095P 2019-09-24 2019-09-24
US62/905,095 2019-09-24
US16/726,492 US11474970B2 (en) 2019-09-24 2019-12-24 Artificial reality system with inter-processor communication (IPC)
US16/726,492 2019-12-24
PCT/US2020/047564 WO2021061317A1 (en) 2019-09-24 2020-08-24 Artificial reality system with inter-processor communication (ipc)

Publications (1)

Publication Number Publication Date
JP2022550656A true JP2022550656A (ja) 2022-12-05

Family

ID=74880922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021576847A Pending JP2022550656A (ja) 2019-09-24 2020-08-24 プロセッサ間通信(ipc)を用いた人工現実システム

Country Status (7)

Country Link
US (1) US11474970B2 (ja)
EP (1) EP4035006A1 (ja)
JP (1) JP2022550656A (ja)
KR (1) KR20220062277A (ja)
CN (1) CN114651238A (ja)
TW (1) TW202113594A (ja)
WO (1) WO2021061317A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11409671B2 (en) 2019-09-19 2022-08-09 Facebook Technologies, Llc Artificial reality system having multi-bank, multi-port distributed shared memory
US11487594B1 (en) 2019-09-24 2022-11-01 Meta Platforms Technologies, Llc Artificial reality system with inter-processor communication (IPC)
US11520707B2 (en) 2019-11-15 2022-12-06 Meta Platforms Technologies, Llc System on a chip (SoC) communications to prevent direct memory access (DMA) attacks
US11601532B2 (en) 2019-11-15 2023-03-07 Meta Platforms Technologies, Llc Wireless communication with code separation
US11190892B2 (en) 2019-11-20 2021-11-30 Facebook Technologies, Llc Audio sample phase alignment in an artificial reality system
US11972117B2 (en) * 2021-07-19 2024-04-30 EMC IP Holding Company LLC Selecting surviving storage node based on environmental conditions
CN117331720B (zh) * 2023-11-08 2024-02-23 瀚博半导体(上海)有限公司 用于多核间通信的方法、寄存器组、芯片及计算机设备

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3244305A (en) 1963-01-28 1966-04-05 William R Moore Container and dispenser for baby formula
JPH02310664A (ja) * 1989-05-26 1990-12-26 Hitachi Ltd 共有メモリを用いた通信方式
US5136714A (en) 1989-12-04 1992-08-04 International Business Machines Corporation Method and apparatus for implementing inter-processor interrupts using shared memory storage in a multi-processor computer system
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US6456628B1 (en) 1998-04-17 2002-09-24 Intelect Communications, Inc. DSP intercommunication network
US20020091826A1 (en) * 2000-10-13 2002-07-11 Guillaume Comeau Method and apparatus for interprocessor communication and peripheral sharing
US7983419B2 (en) 2001-08-09 2011-07-19 Trimble Navigation Limited Wireless device to network server encryption
US7302548B1 (en) * 2002-06-18 2007-11-27 Cisco Technology, Inc. System and method for communicating in a multi-processor environment
US6954450B2 (en) 2003-11-26 2005-10-11 Cisco Technology, Inc. Method and apparatus to provide data streaming over a network connection in a wireless MAC processor
EP1687998B1 (en) 2003-11-26 2017-09-20 Cisco Technology, Inc. Method and apparatus to inline encryption and decryption for a wireless station
US7428309B2 (en) 2004-02-04 2008-09-23 Microsoft Corporation Analog preamplifier measurement for a microphone array
DE102004010867B3 (de) 2004-03-05 2005-08-18 Siemens Audiologische Technik Gmbh Verfahren und Vorrichtung zum Anpassen der Phasen von Mikrofonen eines Hörgeräterichtmikrofons
US7711443B1 (en) 2005-07-14 2010-05-04 Zaxcom, Inc. Virtual wireless multitrack recording system
JP4347350B2 (ja) 2007-02-15 2009-10-21 富士通株式会社 データ暗号転送装置、データ復号転送装置、データ暗号転送方法およびデータ復号転送方法
WO2009134217A1 (en) 2008-04-28 2009-11-05 Hewlett-Packard Development Company, L.P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared-memory multi-processor systems
WO2014062152A1 (en) 2012-10-15 2014-04-24 Mh Acoustics, Llc Noise-reducing directional microphone array
JP2010112996A (ja) 2008-11-04 2010-05-20 Sony Corp 音声処理装置、音声処理方法およびプログラム
US9031256B2 (en) 2010-10-25 2015-05-12 Qualcomm Incorporated Systems, methods, apparatus, and computer-readable media for orientation-sensitive recording control
US9111548B2 (en) 2013-05-23 2015-08-18 Knowles Electronics, Llc Synchronization of buffered data in multiple microphones
US9392353B2 (en) 2013-10-18 2016-07-12 Plantronics, Inc. Headset interview mode
US20150134765A1 (en) * 2013-11-11 2015-05-14 Qualcomm Innovation Center, Inc. Point-to-point shared memory protocol with feature negotiation
US9395754B2 (en) 2014-06-04 2016-07-19 Grandios Technologies, Llc Optimizing memory for a wearable device
US9665509B2 (en) * 2014-08-20 2017-05-30 Xilinx, Inc. Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
US9699550B2 (en) 2014-11-12 2017-07-04 Qualcomm Incorporated Reduced microphone power-up latency
US9773432B2 (en) 2015-06-27 2017-09-26 Intel Corporation Lightweight cryptographic engine
US10241941B2 (en) 2015-06-29 2019-03-26 Nxp Usa, Inc. Systems and methods for asymmetric memory access to memory banks within integrated circuit systems
KR102277438B1 (ko) 2016-10-21 2021-07-14 삼성전자주식회사 단말 장치들 간의 멀티미디어 통신에 있어서, 오디오 신호를 송신하고 수신된 오디오 신호를 출력하는 방법 및 이를 수행하는 단말 장치
US10372656B2 (en) 2016-11-21 2019-08-06 Intel Corporation System, apparatus and method for providing trusted input/output communications
US10560780B2 (en) 2018-03-13 2020-02-11 Qualcomm Incorporated Phase alignment in an audio bus
US10796692B2 (en) 2018-07-17 2020-10-06 Marcos A. Cantu Assistive listening device and human-computer interface using short-time target cancellation for improved speech intelligibility
US20210011556A1 (en) 2019-07-09 2021-01-14 Facebook Technologies, Llc Virtual user interface using a peripheral device in artificial reality environments
US11409671B2 (en) 2019-09-19 2022-08-09 Facebook Technologies, Llc Artificial reality system having multi-bank, multi-port distributed shared memory

Also Published As

Publication number Publication date
US11474970B2 (en) 2022-10-18
KR20220062277A (ko) 2022-05-16
WO2021061317A1 (en) 2021-04-01
CN114651238A (zh) 2022-06-21
TW202113594A (zh) 2021-04-01
US20210089366A1 (en) 2021-03-25
EP4035006A1 (en) 2022-08-03

Similar Documents

Publication Publication Date Title
US11474970B2 (en) Artificial reality system with inter-processor communication (IPC)
US11412050B2 (en) Artificial reality system with virtual wireless channels
US11868281B2 (en) Artificial reality system having multi-bank, multi-port distributed shared memory
JP2022548810A (ja) 人工現実システムのための中断モード特徴
US11625091B2 (en) Obfuscated control interfaces for extended reality
KR20230044401A (ko) 확장 현실을 위한 개인 제어 인터페이스
CN114731198A (zh) 具有码分离的无线通信
TW202203023A (zh) 具有多階段開機處理之人工實境系統
TW202232333A (zh) 高處理量儲存加密
US11250124B2 (en) Artificial reality system having hardware mutex with process authentication
US11487594B1 (en) Artificial reality system with inter-processor communication (IPC)
US11238159B1 (en) Artificial reality system with verified boot sequences
JP2023546797A (ja) ピクセル強度のデジタル制御およびアナログ制御を含む人工現実システム
US11941131B1 (en) Isolation of secrets from an operating system
WO2022147349A1 (en) High throughput storage encryption

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230803