(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
本明細書で説明されるのは、電子デバイスにおける動き追跡を実装する例示のシステム及び方法である。以下の説明では、様々な実施例の完全な理解を提供するために様々な具体的詳細が説明される。しかしながら、当業者には、様々な実施例はその具体的詳細を用いずに実施されてもよいことが理解されよう。他の例では、特定の実施例を曖昧にしないようにするために、周知の方法、手順、コンポーネント及び回路が詳細には図示されず又は説明されていないことがある。
【0011】
上述のように、電子デバイスと通信する1つ以上の動きセンサの動きを追跡する技術を実装するように使用され得る、動き追跡アルゴリズム及び構成要素を有する電子デバイスを提供することは有益であり得る。本明細書で説明されるように、1つ以上の動きセンサアセンブリが、ユーザによって装着され得るブレスレット、衣服又は弾性バンド(elastomeric band)等のようなウェアラブル装置に組み込まれてよい。あるいは、1つ以上の動きセンサアセンブリを、ユーザの体節に付着させるか埋め込むことができる。動作において、動きセンサアセンブリは、1つ以上の動きセンサによって生成される動きデータをサンプリングし、バイアス除去アルゴリズム(bias elimination algorithm)を動きデータに適用して、サンプルから、バイアス除去済み動きデータセット(debiased motion data set)を生成することができる。一部の例において、バイアス除去アルゴリズムは、動きセンサアセンブリの代わりにデバイス上で実行してよい。その後、トランスミッタが、動きセンサアセンブリに通信可能に結合される電子デバイスによる受け取りのために、バイアス除去済みデータセットを送信することができる。
【0012】
電子デバイスは、少なくともリモートの動き感知デバイスから動き追跡データを受け取る入出力インタフェースと、該入出力インタフェースに結合されるコントローラを備えることができる。コントローラは、動き追跡データを受け取り、該動き追跡データを使用して推定位置データを生成し、推定位置データを、電子デバイスに結合されるディスプレイデバイス上に提示/レンダリングするロジックを備えることができる。
【0013】
磁力計ユニット及び電子デバイスの追加の特徴及び動作特性を
図1〜10に関連して以下で説明する。
【0014】
図1は、一部の例に係る動き追跡モジュールを含むよう適合され得る電子デバイス100の概略図である。様々な例において、電子デバイス100は、ディスプレイ、1つ以上のスピーカ、キーボード、1つ以上の他のI/Oデバイス、マウス又はカメラ等を含め、1つ以上の付属の入出力デバイスを含むか、これに結合されてよい。他の例示のI/Oデバイスは、タッチスクリーン、音声活性化入力デバイス、トラックボール、地理位置デバイス、加速度計/ジャイロスコープ、バイオメトリック特徴入力デバイス及び電子デバイス100がユーザからの入力を受け取ることを可能にする任意の他のデバイスを含んでよい。
【0015】
電子デバイス100は、システムハードウェア120及びメモリ140を含む。メモリ140はランダムアクセスメモリ及び/又は読取専用メモリとして実装されてよい。ファイルストアが電子デバイス100に通信可能に結合されてよい。ファイルストアは、例えばeMMC、SSD、1つ以上のハードドライブ又は他のタイプのストレージデバイスのように、電子デバイス100の内部にあってよい。あるいは、ファイルストアは、例えば1つ以上の外部ハードドライブ、ネットワーク取付けストレージ又は別個のストレージネットワークのように、電子デバイス100の外部であってもよい。
【0016】
システムハードウェア120は、1つ以上のプロセッサ122、グラフィクスプロセッサ124、ネットワークインタフェース126及びバス構造128を含んでよい。一実施形態において、プロセッサ122は、米国カルフォルニア州サンタバーバラのインテル社から入手可能なIntel(登録商標)Atom(登録商標)プロセッサ、Intel(登録商標)Atom(登録商標)ベースのシステムオンチップ(SOC)又はIntel(登録商標)Core2 Duo(登録商標)又はi3/i5/i7シリーズのプロセッサとして具現化されてよい。本明細書で使用されるとき、「プロセッサ」という用語は、これらに限られないが、マイクロプロセッサ、マイクロコントローラ、複数命令セットコンピュータ(CISC)マイクロプロセッサ、縮小命令セット(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、あるいは任意の他のタイプのプロセッサ又は処理回路のような任意のタイプの演算要素を意味する。
【0017】
グラフィクスプロセッサ124は、グラフィクス及び/又はビデオオペレーションを管理する補助プロセッサとして機能してよい。グラフィクスプロセッサ124は、電子デバイス100のマザーボードに一体化されてよく、あるいはマザーボード上の拡張スロットを介して結合されるか、処理ユニットと同じダイ又は同じパッケージ上に配置されてよい。
【0018】
一実施形態において、ネットワークインタフェース126は、Ethernet(登録商標)インタフェース(例えば2002年のIEEE802.3を参照されたい)のような有線インタフェースであってよく、IEEE802.11a、b又はg互換インタフェース(例えばシステム間のLAN/MAN--Part IIのIT電話通信及び情報交換のためのIEEE規格:Wireless LAN Medium Access Control(MAC) and Physical Layer(PHY) specifications Amendment4: Further Higher Data Rate Extension in the 2.4GHz Band,802.11G,2003年)のような無線インタフェースであってもよい。無線インタフェースの別の例は、汎用パケット無線サービス(GPRS)インタフェース(例えばGPRSハンドセット要件のガイドライン,Global System for Mobile Communications/GSM Association,2002年12月,Ver.3.0.1を参照されたい)、Bluetooth(登録商標)低エネルギ(BTLE)プロトコル等であろう。
【0019】
バス構造128は、システムハードウェア120の様々なコンポーネントを接続する。一実施形態において、バス構造128は、メモリバス、周辺バス若しくは外部バス、及び/又は任意の様々な利用可能なバスアーキテクチャを使用するローカルバスを含む、幾つかのタイプのバス構造のうちの1つ以上であってよい。そのような利用可能なバスアーキテクチャは、これらに限定されないが、11-bitバス、業界標準アーキテクチャ(ISA)、マイクロチャネルアーキテクチャ(MSA)、拡張ISA(EISA)、インテリジェントドライブエレクトロニクス(IDE)、VESAローカルバス(VLB)、周辺コンポーネント相互接続(PCI)、ユニバーサルシリアルバス(USB)、アドバンストグラフィクスポート(AGP)、パーソナルコンピュータ・メモリカード・インターナショナルアソシエーションバス(PCMCIA)及び小型コンピュータシステムインタフェース(SCSI)、高速同期シリアルインタフェース(HIS)又はシリアル低電力インターチップメディアバス(SLIMbus(登録商標))等を含む。
【0020】
電子デバイス100は、RF信号を送受信するRFトランシーバ130と、近距離通信(NFC)無線機134と、RFトランシーバ130によって受け取られる信号を処理する信号処理モジュール132を含んでよい。RFレシーバは、例えばBluetooth(登録商標)又は802.11X、IEEE802.11a,b又はg互換インタフェース(例えばシステム間のLAN/MAN--Part IIのIT電話通信及び情報交換のためのIEEE規格:Wireless LAN Medium Access Control(MAC) and Physical Layer(PHY) specifications Amendment4: Further Higher Data Rate Extension in the 2.4GHz Band,802.11G,2003年)のようなプロトコルによるローカル無線接続を実装してもよい。無線インタフェースの別の例は、WCDMA(登録商標)、LTE、汎用パケット無線サービス(GPRS)インタフェース(例えばGPRSハンドセット要件のガイドライン、Global System for Mobile Communications/GSM Association,2002年12月,Ver.3.0.1を参照されたい)であろう。
【0021】
電子デバイス100は更に、例えばキーパッド136及びディスプレイ138のような1つ以上の入出力インタフェースを含んでよい。一部の例において、電子デバイス100はキーパッドを有さずに、入力用にタッチパネルを使用してもよい。
【0022】
メモリ140は、電子デバイス100の動作を管理するためにオペレーティングシステム142を含んでよい。一実施形態において、オペレーティングシステム142は、システムハードウェア120へインタフェースを提供するハードウェアインタフェースモジュール154を含む。加えて、オペレーティングシステム142は、電子デバイス100の動作に使用されるファイルを管理するファイルシステム150と、電子デバイス100上で実行するプロセスを管理するプロセス制御サブシステム152を含んでよい。
【0023】
オペレーティングシステム142は、システムハードウェア120と協働して動作してリモートソースからデータパケット及び/又はデータストリームを送受信することができる、1つ以上の通信インタフェース146を含む(又は管理する)ことができる。オペレーティングシステム142は更に、該オペレーティングシステム142と、メモリ140内に存在する1つ以上のアプリケーションモジュールとの間のインタフェースを提供するシステムコールインタフェースモジュール144も含んでよい。オペレーティングシステム142は、UNIX(登録商標)オペレーティングシステム又はその任意の派生形(例えばLinux(登録商標)、Android(登録商標)等)として、あるいはWindows(登録商標)ブランドのオペレーティングシステム又は他のオペレーティングシステムとして具現化されてよい。
【0024】
一部の例において、電子デバイスはコントローラ170を含んでよく、コントローラ170は、主実行環境から分離した1つ以上のコントローラを備えてもよい。そのような分離は、主プロセッサから物理的に分離したコントローラにおいて、コントローラが実装されてよいという意味で物理的なものであってよい。あるいは、信頼できる実行環境は、主プロセッサをホストする同じチップ又はチップセット上でコントローラをホストすることができるという意味で論理的であってよい。
【0025】
例として、一部の例では、コントローラ170は、電子デバイス100のマザーボード上に配置される独立の集積回路として、例えば同じSOCダイ上で専用のプロセッサブロックとして実装されてよい。他の例では、信頼できる実行エンジンが、プロセッサ122の一部において実装されてよく、ハードウェア強化機構(hardware enforced mechanisms)を使用してプロセッサの残りの部分から分離される。
【0026】
図1に図示される実施形態では、コントローラ170は、プロセッサ172、メモリモジュール174、動き追跡モジュール176及びI/Oインタフェース178を備える。一部の例では、メモリモジュール174は、持続的フラッシュメモリモジュールを備えてよく、様々な機能モジュールが、持続的メモリモジュール内にエンコードされる論理命令として、例えばファームウェア又はソフトウェアとして実装されてよい。I/Oモジュール178は、シリアルI/Oモジュール又はパラレルI/Oモジュールを備えてよい。コントローラ170が主プロセッサ122及びオペレーティングシステム142から分離しているので、コントローラ170をセキュアにすることができる。すなわち、典型的にホストプロセッサ122からのソフトウェア攻撃をマウントするハッカーに対して、コントローラ170をアクセス不可能にすることができる。一部の例では、動き追跡モジュール176の一部は、電子デバイス100のメモリ140内に存在してよく、プロセッサ122のうちの1つ以上で実行可能であり得る。
【0027】
一部の例において、動き追跡モジュール176は、電子デバイス100の1つ以上の他のコンポーネントと対話して、1つ以上のリモート動き感知アセンブリから動き追跡データを受け取り、動き追跡データを処理する。
図2は、電子デバイスにおける動き追跡を実装する例示のアーキテクチャの高レベルの概略図である。
図2を参照すると、コントローラ220は、汎用プロセッサ122として、あるいはコントローラ170のような低電力コントローラとして具現化されてよい。コントローラ220は、レンダリングモジュール270、動き追跡モジュール176及びローカルメモリ260を備えてよい。上述のように、一部の例では、レンダリングモジュール270及び動き追跡モジュール176、結合ユニット(combiner unit)250は、コントローラ220上で実行可能な論理命令として、例えばソフトウェア又はハードウェアとして実装されてよく、あるいは、ハードワイヤード論理回路にまとめられてもよい(reduce)。ローカルメモリ260は、揮発性及び/又は不揮発性メモリを使用して実装されてよい。
【0028】
1つ以上の動きセンサアセンブリ230は、例えば有線又は無線通信接続を介して、動き追跡モジュールへ通信可能に結合されてよい。
図2に図示される例は、アセンブリA、B...Nとして図示されるN個の動きセンサアセンブリを示している。アセンブリの合計数Nは、1と、任意の多くのセンサ数との間で変化し得る。上述のように、動きセンサは、ブレスレット、衣服、弾性バンド/パッチ等といった、ユーザによって装着され得るウェアラブル装置へ組み込まれてよい。あるいは、1つ以上の動きセンサアセンブリは、ユーザの体節へ付着されるか埋め込まれてもよい。
【0029】
それぞれの動きセンサアセンブリ230は、動きセンサ232、コントローラ234及びトランスミッタ236を備える。それぞれの動きセンサ232は、ジャイロスコープ、内部測定ユニット等として実装されてよい。それぞれのコントローラ234は、独立の集積回路として実装されてよい。それぞれのトランスミッタ236は、任意の適切な無線プロトコルに従って動作する無線トランスミッタを実装してもよい。
【0030】
図3は、一部の例に従って、電子デバイスにおける動き追跡を実装することができる環境の概略図である。
図3を参照すると、複数の動きセンサアセンブリ230はユーザの様々な場所に配置されてよい。動きセンサアセンブリ230は、電子デバイス100に通信可能に結合されてよい。
【0031】
図4A〜
図4B及び
図5は、一部の例に従って、電子デバイスにおける動き追跡を実装する方法の動作を示すフローチャートである。一部の例において、
図4A及び
図4Bに図示される動作は、それぞれの動きセンサアセンブリ230によって実装されてよい。
図4Aを参照すると、動作410において、コントローラ234は、動きセンサの動きに応答して、動きセンサ232によって生成されるデータをサンプリングする。一部の実施例において、コントローラ234は動きデータを20Hzレートでサンプリングする。
【0032】
動作415において、コントローラ234は、バイアス除去アルゴリズムを動きデータに対して実施して、バイアスのない動きデータセット(unbiased motion data set)を生成する。一部の実施例において、アルゴリズムは、バイアス推定のために400個のサンプル(400 samples)のサンプルサイズを使用する。
図4Bは、バイアス除去アルゴリズムの一例における動作を示すフローチャートである。
図4Bを参照すると、動作450において、動作410で収集されたサンプルデータの高速フーリエ変換(FFT)が決定される。動作455において、動作450で計算されたFFTの少なくとも1つの係数が削除される。一部の例では、FFTの第1係数を削除して、簡略化FFTを生成する。動作460において、動作455で決定された簡略化FFTの逆高速フーリエ変換IFFTを決定することによって、データセットが再構築される。
【0033】
図4Bに図示されるバイアス除去アルゴリズムは、動作410で収集されたサンプルからバイアス除去済み信号セットを提供する。したがって、バイアスは、状態推定アルゴリズム(例えばカルマンフィルタ)における状態ベクトルに伝搬される必要がない。状態ベクトルの減少された次元は、以前の技術と比べて最大で5倍(a factor of 5X)まで計算時間を減らす。さらに、バイアス除去済みジャイロスコープ信号は、姿勢(attitude)としても知られる、改善された方向推定(improved orientation estimation)を得ることも可能にする。姿勢表現の例は、オイラー角、四元数及び回転マトリクス(Rotation Matrices)である。
【0034】
図4Aに戻ると、動作420において、動作460で再構築されたデータセットが圧縮され、動作425において、データ圧縮されたデータセットがトランスミッタ236によって伝送される。
【0035】
図5は、動き追跡モジュール176によって実装される動作を図示している。
図5を参照すると、動作510において、動作425でセンサアセンブリによって伝送されたデータを受け取る。動作515において、データが圧縮解除され、動作520において、推定位置データが生成される。一部の例において、カルマンフィルタアルゴリズムを使用して、動きデータ内のジッタを除去することができる。動作520において、推定位置データが、電子デバイスに結合されるディスプレイデバイス上に提示されてよい。一部の実施例において、推定位置/方向(orientation)データをレンダリングモジュール270に提示してもよく、レンダリングモジュール270は、ユーザ又は物体の推定方向を備える動きビデオを生成する。
【0036】
上述のように、一部の例において、電子デバイスはコンピュータシステムとして具現化されてよい。
図6は、一例によるコンピューティングシステム600のブロック図を図示している。コンピューティングシステム600は、相互接続ネットワーク(又はバス)604を介して通信する1つ以上の中央処理ユニット602又はプロセッサを含んでよい。プロセッサ602は、汎用プロセッサ、(コンピュータネットワーク603を介して通信されるデータを処理する)ネットワークプロセッサ、あるいは(縮小命令セットコンピュータ(RISC)プロセッサ又は複数命令セットコンピュータ(CISC)を含む)他のタイプのプロセッサを含んでよい。さらに、プロセッサ602は、シングル又はマルチコア設計を有してよい。マルチコア設計のプロセッサ602は、異なるタイプのプロセッサコアを同じ集積回路(IC)ダイ上に統合することができる。また、マルチコア設計のプロセッサ602は、対称又は非対称のマルチプロセッサとして実装されてよい。一例では、プロセッサ602のうちの1つ以上が、
図1のプロセッサ102と同じ又は同様であってよい。例えばプロセッサ602のうちの1つ以上が、
図1〜
図3に関連して説明した制御ユニット120を含んでもよい。また、
図3〜
図5に関連して説明した動作が、システム600の1つ以上のコンポーネントによって実行されてもよい。
【0037】
チップセット606も相互接続ネットワーク604と通信してよい。チップセット606はメモリ制御ハブ(MCH)608を含んでよい。MCH208は、(
図1のメモリ140と同じ又は同様であってよい)メモリ612と通信するメモリコントローラ610を含んでよい。メモリ412は、命令のシーケンスを含め、プロセッサ602によって、又はコンピューティングシステム600内に含まれる任意の他のデバイスによって実行可能なデータを記憶することができる。一例において、メモリ612は、ランダムアクセスメモリ(RAM)、動的RAM(DRAM)、同期DRAM(SDRAM)、静的RAM(SRAM)又は他のタイプのストレージデバイスのような、1つ以上の揮発性ストレージ(メモリ)デバイスを含んでよい。ハードディスクのような不揮発性メモリも使用してよい。複数のプロセッサ及び/又は複数のシステムメモリのような追加のデバイスが、相互接続ネットワーク604を介して通信してよい。
【0038】
MCH608は、ディスプレイデバイス616と通信するグラフィクスインタフェース614も含んでよい。一例では、グラフィクスインタフェース614は、アクセラレイテッド・グラフィクスポート(AGP)を介してディスプレイデバイス616と通信してもよい。一例では、ディスプレイ616(フラットパネルディスプレイ等)が、例えば信号コンバータを介してグラフィクスインタフェース614と通信することができる。信号コンバータは、ビデオメモ又はシステムメモリ等のストレージデバイス内に記憶された画像のデジタル表現を、ディスプレイ616によって解釈及び表示されるディスプレイ信号に変換する。ディスプレイデバイスによって生成されるディスプレイ信号は、ディスプレイ616によって解釈されてその後にディスプレイ616に表示される前に、様々な制御デバイスを通過することがある。
【0039】
ハブインタフェース618は、MCH608及び入出力制御ハブ(ICH)620が通信することを可能にすることができる。ICH620は、コンピューティングシステム600と通信するI/Oデバイスへのインタフェースを提供することができる。ICH620は、周辺コンポーネント相互接続(PCI)ブリッジ、ユニバーサルシリアルバス(USB)コントローラ、あるいは他のタイプの周辺ブリッジ又はコントローラのような、周辺ブリッジ(又はコントローラ)624を通してバス622と通信することができる。ブリッジ624は、プロセッサ602と周辺デバイスとの間のデータ経路を提供することができる。他のタイプのトポロジを使用してもよい。また、複数のバスが、例えば複数のブリッジ又はコントローラを通してICH620と通信してもよい。さらに、ICH620と通信する他の周辺機器は、様々な例において、一体型ドライブエレクトロニクス(IDE)又は小型コンピュータシステムインタフェース(SCSI)ハードドライブ、USBポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピーディスクドライブ、デジタル出力サポート(例えばデジタルビデオインタフェース(DVI))又は他のデバイスを含んでよい。
【0040】
バス622は、オーディオデバイス626、1つ以上のディスクドライブ628及び(例えばコンピュータネットワーク603と通信する)ネットワークインタフェースデバイス630と通信してよい。他のデバイスがバス622を介して通信してもよい。また、一部の例では、(ネットワークインタフェースデバイス630のような)様々なコンポーネントが、MCH608と通信してもよい。加えて、プロセッサ602及び本明細書で説明される1つ以上の他のコンポーネントを組み合わせて、単一のチップを形成する(例えばシステムオンチップ(SOC)を提供する)ことができる。さらに、他の例では、グラフィクスアクセラレータ616がMCH608内に含まれてもよい。
【0041】
さらに、コンピューティングシステム600は、揮発性及び/又は不揮発性メモリ(又はストレージ)を含んでよい。例えば不揮発性メモリは、読取専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電子的EPROM(EEPROM)、ディスクドライブ(例えば628)、フロッピーディスク、コンパクトディスクROM(CD−ROM)、デジタル多用途ディスク(DVD)、フラッシュメモリ、磁気光ディスク、あるいは(例えば命令を含む)電子データを記憶する能力を有する他のタイプの不揮発性マシン読取可能媒体、のうちの1つ以上を含んでよい。
【0042】
図7は、一例に係るコンピューティングシステム700のブロック図である。システム700は、1つ以上のプロセッサ702−1〜702−N(ここでは、一般に(複数の)「プロセッサ702」又は(1つの)「プロセッサ702」と呼ぶ)を含んでよい。プロセッサ702は相互接続ネットワーク又はバス704を介して通信してよい。各プロセッサは様々なコンポーネントを含んでよいが、明確性のために、そのコンポーネントの一部のみをプロセッサ702−1に関連して説明する。したがって、残りのプロセッサ702−2〜702−Nの各々は、プロセッサ702−1に関連して説明されるものと同じ又は同様のコンポーネントを含んでよい。
【0043】
一例において、プロセッサ702−1は、1つ以上のプロセッサコア706−1〜706M(ここでは、(複数の)「コア706」又はより一般的に(1つの)「コア706」と呼ぶ)、共有キャッシュ708、ルータ710及び/又はプロセッサ制御ロジック若しくはユニット720を含んでよい。プロセッサコア706は、単一の集積回路(IC)チップ上に実装されてよい。さらに、チップは、1つ以上の共有及び/又はプライベートキャッシュ(キャッシュ708等)、バス又は相互接続(バス又は相互接続ネットワーク712等)、メモリコントローラ又は他のコンポーネントを含んでよい。
【0044】
一例において、ルータ710を使用して、プロセッサ702−1及び/又はシステム700の様々なコンポーネント間で通信してもよい。さらに、プロセッサ702−1は、2つ以上のルータ710を含んでもよい。さらに、多数のルータ710が、プロセッサ702−1の内部又は外部の様々なコンポーネントの間のデータルーティングを可能にするよう通信してもよい。
【0045】
共有キャッシュ708は、コア706のような、プロセッサ702−1の1つ以上のコンポーネントによって使用されるデータ(例えば命令を含む)を格納してよい。例えば共有キャッシュ708は、プロセッサ702のコンポーネントによる高速アクセスのために、メモリ714内に記憶されるデータをローカルにキャッシュしてよい。一例において、キャッシュ708は、中間レベルキャッシュ(レベル2(L2)、レベル3(L3)、レベル4(L4)又は他のキャッシュレベル等)、ラストレベルキャッシュ(LLC)及び/又はこの組合せを含んでよい。さらに、プロセッサ702−1の様々なコンポーネントは、共有キャッシュ708と直接、バス(例えばバス712)及び/又はメモリコントローラ又はハブを通して通信してよい。
図7に図示されるように、一部の例では、コア706の1つ以上がレベル1(L1)キャッシュ716−1(ここでは、一般に「L1キャッシュ716」と呼ぶ)を含んでよい。一例において、制御ユニット720は、
図2のメモリコントローラ122に関連して上述した動作を実装するロジックを含んでよい。
【0046】
図8は、一例に係るプロセッサコア706及びコンピューティングシステムの他のコンポーネントの部分のブロック図である。一例において、
図8に図示される矢印は、コア706を通過する命令の流れの向きを示している。1つ以上のプロセッサコア(プロセッサコア706等)は、
図7に関連して説明したような単一の集積回路チップ(又はダイ)上で実装されてよい。さらに、チップは、1つ以上の共有及び/又はプライベートキャッシュ(例えば
図7のキャッシュ708)、相互接続(例えば
図7の相互接続704及び/又は112)、制御ユニット、メモリコントローラ又は他のコンポーネントを含んでよい。
【0047】
図8に図示されるように、プロセッサコア706は、コア706による実行のために命令(条件分岐のある命令を含む)をフェッチするフェッチユニット802を含んでよい。命令は、メモリ714のような任意のストレージデバイスからフェッチされてよい。コア706は、フェッチされた命令を復号するデコードユニット804も含んでよい。例えばデコードユニット804は、フェッチされた命令を複数のuops(マイクロオペレーション)へと復号してよい。
【0048】
加えて、コア706はスケジュールユニット806を含んでよい。スケジュールユニット806は、(例えばデコードユニット804から受け取った)復号済み命令のディスパッチの準備ができるまで、例えば復号済み命令の全てのソース値が利用可能になるまで、これらの復号済み命令を記憶することに関連付けられる様々な動作を実行してよい。一例において、スケジュールユニット806は、復号済み命令を実行のために実行ユニット808に対してスケジュール及び/又は発行(又はディスパッチ)してもよい。実行ユニット808は、命令が(例えばデコードユニット804によって)復号され、(例えばスケジュールユニット806によって)ディスパッチされた後に、ディスパッチされた命令を実行してもよい。一例において、実行ユニット808は、2つ以上の実行ユニットを含んでもよい。実行ユニット808は、加算、減算、乗算及び/又は除算といった様々な算術演算を実行してもよく、1つ以上の算術論理ユニット(ALU)を含んでもよい。一例において、コプロセッサ(図示せず)が、実行ユニット808と協働して様々な算術演算を実行してもよい。
【0049】
さらに、実行ユニット808は、順不同で命令を実行してもよい。したがって、一例では、プロセッサコア706はアウトオブオーダープロセッサコアであってよい。コア706は、リタイヤユニット(retirement unit)810も含んでよい。リタイヤユニット810は、命令がコミットされた後、これらの実行された命令をリタイヤさせてよい。一例では、実行された命令のリタイヤの結果、プロセッサの状態は、命令の実行からコミットされ、命令によって使用された物理的レジスタは、割り当て解除されること等がある。
【0050】
コア706は、1つ以上のバス(例えばバス704及び/又は712)を介して、プロセッサコア706のコンポーネントと、(
図8に関連して説明したコンポーネントのような)他のコンポーネントとの間の通信を可能にするバスユニット814も含んでよい。コア706は、該コア706の様々なコンポーネントによってアクセスされるデータ(電力消費状態設定に関連する値等)を記憶する、1つ以上のレジスタ816も含んでよい。
【0051】
さらに、
図7は、制御ユニット720が相互接続812を介してコア706と結合されるように図示しているが、様々な例では、制御ユニット720は、バス704を介してコアと結合される別の場所、例えばコア706の内部等に配置されてもよい。
【0052】
一部の例では、本明細書で説明されるコンポーネントの1つ以上を、システムオンチップ(SOC)デバイスとして具現化することができる。
図9は、一例によるSOCパッケージのブロック図を図示している。
図9に図示されるように、SOC902は、1つ以上のプロセッサコア920、1つ以上のグラフィクスプロセッサコア930、入出力(I/O)インタフェース940及びメモリコントローラ942を含む。SOCパッケージ902の様々なコンポーネントは、本明細書で他の図面に関連して説明したような相互接続又はバスに結合されてよい。また、SOCパッケージ902は、本明細書で他の図面に関連して説明したような、より多くの又はより少ないコンポーネントを含んでもよい。さらに、SOCパッケージ902の各コンポーネントは、例えば本明細書の他の図面に関連して説明したような、1つ以上の他のコンポーネントを含んでもよい。一例では、SOCパッケージ902(及びそのコンポーネント)は、例えば単一の半導体デバイスにパッケージ化される、1つ以上の集積回路(IC)ダイに提供される。
【0053】
図9に図示されるように、SOCパッケージ902は、メモリコントローラ942を介してメモリ960(本明細書で他の図面に関連して説明したメモリと同様又は類似であってよい)に結合される。一例では、メモリ960(又はその一部)をSOCパッケージ902に統合することができる。
【0054】
I/Oインタフェース940は、例えば本明細書で他の図面に関連して説明したような相互接続及び/又はバスを介して、1つ以上のI/Oデバイス970に結合されてよい。I/Oデバイス970は、キーボード、マウス、タッチパッド、ディスプレイ、イメージ/ビデオキャプチャデバイス(カメラ又はカムコーダ/ビデオレコーダ等)、タッチ面又はスピーカ等のうちの1つ以上を含んでよい。
【0055】
図10は、一例に係る、ポイントツーポイント(PtP)構成で編成されるコンピューティングシステム1000を図示している。特に、
図10は、プロセッサ、メモリ及び入出力デバイスが、複数のポイントツーポイントインタフェースによって相互接続されるシステムを図示している。
図2に関連して説明した動作が、システム1000の1つ以上のコンポーネントによって実行されてよい。
【0056】
図10に図示されるように、システム1000は幾つかのプロセッサを含んでよい。明確性のために、2つのプロセッサ1002及び1004のみが図示されている。プロセッサ1002及び1004はそれぞれ、メモリ1010及び1012との通信を可能にするローカルメモリコントローラハブ(MCH)1006及び1008を含んでよい。MCH1006及び1008は、一部の例では、
図1のメモリコントローラ120及びロジック125を含んでよい。
【0057】
一例において、プロセッサ1002及び1004は、
図7に関連して説明したプロセッサ702のうちの1つであってよい。プロセッサ1002及び1004は、それぞれポイントツーポイント(PtP)インタフェース回路1016及び1018を使用して、PtPインタフェース1014を介してデータを交換してよい。また、プロセッサ1002及び1004はそれぞれ、ポイントツーポイントインタフェース回路1026、1028、1030及び1032を使用して、個々のPtPインタフェース1022及び1024を介してチップセット1020とデータを交換してよい。チップセット1020は更に、例えばPtPインタフェース回路1037を使用して、高性能グラフィクスインタフェース1036を介して高性能グラフィクス回路1034とデータを交換してよい。
【0058】
図10に図示されるように、
図1のコア106及び/又はキャッシュ108の1つ以上をプロセッサ1004内に配置してよい。しかしながら、他の例では、
図10のシステム1000内の他の回路、論理ユニット又はデバイス内に存在してもよい。さらに、他の例では、
図10に図示される幾つかの回路、論理ユニット又はデバイス全体に分散されてもよい。
【0059】
チップセット1020は、PtPインタフェース回路1041を使用してバス1040と通信してよい。バス1040は、これと通信する1つ以上のデバイス、例えばバスブリッジ1042及びI/Oデバイス1043を有してよい。バス1044を介して、バスブリッジ1042は、キーボード/マウス1045、通信デバイス1046(モデム、ネットワークインタフェースデバイス又はコンピュータネットワーク1003と通信し得る他の通信デバイス等)、オーディオI/Oデバイス及び/又はデータストレージデバイス1048といった、他のデバイスと通信してよい。データストレージデバイス1048(ハードディスクドライブ又はNANDフラッシュベースの半導体ドライブであってよい)は、プロセッサ1004によって実行され得るコード1049を記憶してよい。
【0061】
例1は、動きデータを生成する動きセンサと、動きデータを所定のサンプリングレートでサンプルし、動きデータにバイアス除去アルゴリズムを適用してバイアスのない動きデータセットを生成するハードウェアロジックを少なくとも部分的に含む、ロジックを備えるコントローラと、バイアスのない動きデータセットを伝送するトランスミッタと、を具備する装置である。
【0062】
例2において、例1に係る主題は、任意選択で、コントローラが20Hzのレートで動きデータをサンプルする構成を含むことができる。
【0063】
例3において、例1−例2のいずれか1つに係る主題は、任意選択で、バイアス除去アルゴリズムが400個のサンプルの集合に適用される構成を含むことができる。
【0064】
例4において、例1−例3のいずれか1つに係る主題は、任意選択で、動き追跡データの高速フーリエ変換(FFT)を生成し、FFTから少なくとも1つの係数を除外して簡略化されたFFTを生成し、簡略化されたFFTに逆高速フーリエ変換(IFFT)を適用することによって動き追跡データを再構築するハードウェアロジックを少なくとも部分的に含む、ロジックを含むことができる。
【0065】
例5において、例1−例4のいずれか1つに係る主題は、任意選択で、少なくとも1つのリモート動き感知デバイスからの動き追跡データを受け取る入出力インタフェースと、該入出力インタフェースに結合されるコントローラであって、動き追跡データを受け取り、動き追跡データを使用して推定位置データを生成し、電子デバイスに結合されるディスプレイデバイス上に推定位置データを提示するハードウェアロジックを少なくとも含むロジックを備えるコントローラとを含むことができる。
【0066】
例7において、例1−例2のいずれか1つに係る主題は、任意選択で、推定位置データを備えるビデオをディスプレイデバイス上にレンダリングするハードウェアロジックを少なくとも部分的に含むロジックを含むことができる。
【0067】
例8は、動きセンサからの動きデータを所定のサンプリングレートでサンプルし、動きデータにバイアス除去アルゴリズムを適用してバイアスのない動きデータセットを生成し、該バイアスのない動きデータセットを伝送するよう、コントローラに結合されるトランスミッタに、バイアスのない動きデータセットを転送するハードウェアロジックを少なくとも部分的に含む、ロジックを備えるコントローラである。
【0068】
例9において、例8に係る主題は、任意選択で、コントローラが20Hzのレートで動きデータをサンプルする構成を含むことができる。
【0069】
例10において、例8−例9のいずれか1つに係る主題は、任意選択で、バイアス除去アルゴリズムが400個のサンプルの集合に適用される構成を含むことができる。
【0070】
例11において、例8−例10のいずれか1つに係る主題は、任意選択で、動き追跡データの高速フーリエ変換(FFT)を生成し、FFTから少なくとも1つの係数を除外して簡略化されたFFTを生成し、簡略化されたFFTに逆高速フーリエ変換(IFFT)を適用することによって、動き追跡データを再構築するハードウェアロジックを少なくとも部分的に含む、ロジックを含むことができる。
【0071】
例12において、例8−例11のいずれか1つに係る主題は、任意選択で、コントローラに通信可能に結合される電子デバイスであって、少なくとも1つのリモート動き感知デバイスからの動き追跡データを受け取る入出力インタフェースと、入出力インタフェースに結合され、動き追跡データを受け取り、動き追跡データを使用して推定位置データを生成し、電子デバイスに結合されるディスプレイデバイス上に推定位置データを提示するハードウェアロジックを少なくとも含むロジックを備えるコントローラとを具備する電子デバイスを含むことができる。
【0072】
例13において、例12に係る主題は、任意選択で、カルマンフィルタアルゴリズムを動き追跡データに適用するハードウェアロジックを少なくとも部分的に含むロジックを含むことができる。
【0073】
例14において、例12−例13のいずれか1つに係る主題は、任意選択で、電子デバイス内のコントローラが、推定位置データを備えるビデオをディスプレイデバイス上にレンダリングするハードウェアロジックを少なくとも部分的に含むロジックを備える構成を含むことができる。
【0074】
例15は、電子デバイスであり、少なくとも1つのリモート動き感知デバイスからの動き追跡データを受け取る入出力インタフェースと、入出力インタフェースに結合されるコントローラであって、動き追跡データを受け取り、動き追跡データを使用して推定位置データを生成し、電子デバイスに結合されるディスプレイデバイス上に推定位置データを提示するハードウェアロジックを少なくとも含むロジックを備えるコントローラとを具備する。
【0075】
例16において、例15に係る主題は、任意選択で、カルマンフィルタアルゴリズムを動き追跡データに適用するハードウェアロジックを少なくとも部分的に含むロジックを含むことができる。
【0076】
例17において、例15−例16のいずれか1つに係る主題は、任意選択で、コントローラが、推定位置データを備えるビデオをディスプレイデバイス上にレンダリングするハードウェアロジックを少なくとも部分的に含むロジックを備える構成を含むことができる。
【0077】
例18は、動き追跡データを受け取り、動き追跡データを使用して推定位置データを生成し、電子デバイスに結合されるディスプレイデバイス上に前記推定位置データを提示するハードウェアロジックを少なくとも含むロジックを備えるコントローラである。
【0078】
例19において、例18に係る主題は、任意選択で、カルマンフィルタアルゴリズムを動き追跡データに適用するハードウェアロジックを少なくとも部分的に含むロジックを含むことができる。
【0079】
例20において、例18−例19のいずれか1つに係る主題は、任意選択で、コントローラが、動き追跡データの高速フーリエ変換(FFT)を生成し、FFTから少なくとも1つの係数を除外して簡略化されたFFTを生成し、簡略化されたFFTに逆高速フーリエ変換(IFFT)を適用することによって動き追跡データを再構築するハードウェアロジックを少なくとも部分的に含むロジックを備える構成を含むことができる。
【0080】
例21において、例18−例20のいずれか1つに係る主題は、任意選択で、電子デバイス内のコントローラが、推定位置データを備えるビデオをディスプレイデバイス上にレンダリングするハードウェアロジックを少なくとも部分的に含むロジックを備える構成を含むことができる。
【0081】
「論理命令」という用語は、本明細書で参照されるとき、1つ以上の論理動作を実行するために1つ以上のマシンによって理解され得る表現に関する。例えば論理命令は、1つ以上のデータオブジェクトに対する1つ以上の動作を実行するためにプロセッサコンパイラによって解釈可能な命令を備えてよい。しかしながら、これはマシン読取可能命令の単なる例であり、実施例はこの観点に限定されない。
【0082】
「コンピュータ読取可能媒体」という用語は、本明細書で参照されるとき、1つ以上のマシンによって知覚可能な表現を維持することができる媒体に関する。例えばコンピュータ読取可能媒体は、コンピュータ読取可能命令又はデータを格納するための1つ以上のストレージデバイスを備えてよい。そのようなストレージデバイスは、例えば光、磁気又は半導体記憶媒体のような記憶媒体を備えてよい。しかしながら、これはコンピュータ読取可能媒体の単なる例であり、実施例はこの観点に限定されない。
【0083】
「ロジック」という用語は、本明細書で参照されるとき、1つ以上の論理動作を実行するための構造に関連する。例えば「ロジック」は、1つ以上の入力信号に基づいて1つ以上の出力信号を提供する回路を備えてよい。そのような回路は、デジタル入力を受け取ってデジタル出力を提供する有限の状態マシン、あるいは1つ以上のアナログ入力信号に応答して1つ以上のアナログ出力信号を提供する回路を備えてよい。そのような回路は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)で提供されてよい。また、ロジックは、マシン読取可能命令を実行するよう処理回路との組合せでメモリ内に記憶されるマシン読取可能命令を備えてよい。しかしながら、これらは、ロジックを提供することができる構造の単なる例であり、実施例はこの観点に限定されない。
【0084】
本明細書で説明される方法の一部は、コンピュータ読取可能媒体上の論理命令として具現化されてよい。プロセッサ上で実行されると、論理命令により、プロセッサは、説明された方法を実施する特別目的のマシンとしてプログラムされる。プロセッサは、論理命令によって本明細書で説明される方法を実行するように構成されるとき、説明される方法を実行するための構造を構成する。あるいは、本明細書で説明される方法を、例えばフィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等上のロジックにまとめてもよい。
【0085】
本明細書及び特許請求の範囲において、結合される及び接続されるという用語が、その派生語とともに使用されることがある。特定の例において、接続されるという用語は、2つ以上の要素が相互に直接物理的又は電気的な接触状態にあることを示すのに使用されることがある。結合されるという用語は、直接物理的又は電気的な接触状態にあることを意味することがある。しかしながら、結合されるという用語は、2つ以上の要素が、相互に直接的に接触していないが、依然として相互に協調するか相互作用し得ることも意味することがある。
【0086】
本明細書における「一例」又は「一部の例」への言及は、その例と関連して説明される特定の特徴、構造又は特性が、少なくとも一実装に含まれることを意味する。本明細書の様々な箇所での「一例において」というフレーズの出現は、全て同じ例を指していてもよく、同じ例を指していなくてもよい。
【0087】
実施例を構造的特徴及び/又は方法的動作に特有の言語で説明してきたが、特許請求に係る主題は、必ずしも説明される特定の特徴又は動作に限定されないことが理解されよう。むしろ、特定の特徴及び動作は、特許請求に係る主題を実装する例示の形式として開示される。