画像が、画像全体を1度に表示するには十分な大きさを有さない画面上に表示される場合、特定の実施形態は、ユーザが、傾け動作を用いることによって、1つまたは複数の方向に画像をスクロールさせることを可能にすることができる。画像は、限定ではなく、例として、写真、フォト・アルバムとして表された多数の写真、電子メールのリスト、ウェブ・ページ、地図、広告、音楽のライブラリの視覚的表現、ビデオ・ゲーム、映画もしくは他の合理化グラフィカル・コンテンツ(streamlining graphical content)、または技術的な図を含む、画面上に表示することができる任意の適切な視覚的コンテンツを含むことができる。
コンピューティング・デバイスは、画像のスクロール範囲を決定し、ジャイロスコープ、磁気計、または加速度計などの任意の適切な傾きセンサ(orientation sensor)に従って、初期の傾き(initial tilt)を測定することができる。コンピューティング・デバイスは、画像の起点位置を決定することができる。コンピューティング・デバイスは、スクロールを起動するための閾値が満たされたことを示す指示(indication)を傾きセンサから受け取ると、センサからの入力およびスクロール範囲に基づいて、前進パラメータを計算する。その後、コンピューティング・デバイスは、前進パラメータに基づいて、画像の提示を更新する。コンピューティング・デバイスは、動きが検出されたことを示す指示をセンサから受け取り続けるのにつれて、画像の提示を適切に更新し続ける。コンピューティング・デバイスは、起点位置を修正するためのユーザ入力も受け取ることができ、その時点から、スクロールは、新しい起点位置に基づいて継続することができる。
図1A〜図1Fは、本明細書で開示される特定の実施形態による、画像のスクロールについての例示的な使用事例を示すワイヤフレームである。図1Aに示されるように、ユーザは、スマートフォンなどのコンピューティング・デバイスを使用して、海辺の景色を写したパノラマ写真を見ることができるが、パノラマ写真は、画像全体が画面上に現れるようにサイズ変更した場合、望ましいサイズよりも小さくなることがある。コンピューティング・デバイスの実施形態は、図3に関してさらに詳細に説明される。ユーザは、画像上でズームインを行って、図1Bに示されるように、画像の縦の大きさ全部がディスプレイ領域全体を満たすようにすることができることがある。この時点において、ユーザは、画像平面内の軸(例えば、図1Bにおいて破線で示された縦軸など)を軸としてスマートフォンを左右に傾けて、パノラマ画像を前後にスクロールさせ、パノラマ画像の全体を画像の左端から画像の右端へと、また右端から左端へと見てゆくことができる。別例として、ユーザは、スマートフォンを使用して、連絡先リストを見ることができ、別の軸(例えば、画像平面内の横軸など)を軸としてスマートフォンを上下に傾けて、連絡先リストをスクロールさせることができる。別例では、ユーザは、スマートフォンを使用して、地図を見ることができ、表示画面の平面内の横軸および/または縦軸など、任意の適切な軸を軸としてスマートフォンを任意の方向に傾けて、地図をスクロールさせることができる。本開示の範囲内では、「傾ける(tilting)」は、適切な傾きセンサによって測定することができる任意の動作を指し、「傾け(tilt)」の測定は、センサによって測定することができるロール、ピッチ、ヨー、またはそれらの任意の組み合わせの任意の測定を指す。本明細書で説明されるいくつかの実施形態は、傾けがその周りで行われ得る単一の軸に言及することがあるが、本開示は、任意の適切な軸または軸の組の周りの傾けを企図している。
特定の実施形態では、図1Bに示された例に示されるように、(ズームイン・コマンドを受け取った直後に)画像が表示されたとき、写真は、パノラマ画像全体に関して、その中央が提示されるように提示され、この例示的な起点位置は、スクロールがそこから開始することができる画像内の位置である。特定の実施形態では、起点位置は、特定のアプリケーションに従って、画像内の何らかの位置に設定することができる。例えば、ユーザが、1つまたは複数の本を視認によって見つけるために、図書館の本棚のパノラマ画像を眺めてゆくように求められるアプリケーションでは、起点位置は、画像の左端に設定することができる。連絡先リストの別例では、起点位置は、リストの最上部、または選択されたアルファベット文字についての連絡先リスト内の最初のエントリに設定することができ、ユーザは、そこからスクロールダウンすること(およびスクロールアップして戻ること)ができる。特定の実施形態では、起点位置は、ユーザ選択に従って、画像内の何らかの位置に設定することができる。例えば、米国の地図を表示する場合、起点位置は、ユーザによって選択された場所(例えば、グランド・キャニオン地域)に設定することができ、ユーザは、そこから地図を任意の方向にスクロールさせることができる。特定の実施形態では、起点位置は、関連する要因に従って、画像内の適切な位置に設定することができる。
特定の実施形態では、図1Bに示された例に示されるように、(やはり、ズームイン・コマンドを受け取った直後に)画像が表示されたとき、コンピューティング・デバイスは、スクロールを開始するようにユーザを促す、および/またはそのような機能が利用可能であることをユーザに通知する、視覚的インジケータも表示することができる。インジケータは、スクロールがどちらの方向に可能であるかを示すことができ、図1Bに示されるように、スクロールは、両方向に可能であり、一方、図1Fでは、(画像の端に達しているので)スクロールは、1方向にのみ可能である。
図1C〜図1Fは、図1Aのパノラマ写真のズームイン表示を、図1Bに示されるような起点位置および傾動軸の周りの0°の例示的な初期の傾けから開始して、スクロールさせる例を示している。図1C〜図1Fに示されるように、ユーザが、コンピューティング・デバイスを初期の傾けから(コンピューティング・デバイスを保持しているユーザに対して)時計回りに傾け始めると、コンピューティング・デバイスは、傾動軸の周りの第2の傾け(second tilt)を測定することによって、動きを検出する。特定の実施形態では、第2の傾けは、初期の傾けを起点に測定することができる。特定の実施形態では、第2の傾きおよび初期の傾けは、基準傾き、例えば、0°を起点に測定することができる。特定の実施形態では、スクロールを起動するための閾値が満たされると(例えば、コンピューティング・デバイスを初期の傾けからいずれかの方向に2°の最小変化分よりも大きく傾けると、またはコンピューティング・デバイスをいずれかの方向に最小回転速度よりも速く傾けると)、コンピューティング・デバイスは、以下でより完全に説明されるように、測定された傾けに従って、画像をスクロールさせ始める。図1C〜図1Fに示されるように、傾けが増加するにつれて、画像がスクロールされる量も、増加することができ、それは、端に達するのに必要な度数までユーザがコンピューティング・デバイスを傾けて、図1Fにあるように、画像の端に達するまで増加することができる。
図2は、特定の実施形態による、画像をスクロールさせるための例示的な方法200を示している。方法は、工程210において開始することができ、コンピューティング・デバイスは、表示するために画像を描画し、提示する。特定の実施形態では、コンピューティング・デバイスは、統合ディスプレイ画面(integrated display screen)を有するハンドヘルド・デバイスを含むことができる。特定の実施形態では、コンピューティング・デバイスは、外部ディスプレイ画面に接続することができる。本開示の範囲内では、第1の構成要素が第2の構成要素に接続されると言われるのは、それが(例えば、ワイヤもしくはコードを介して)物理的に接続される場合、(例えば、ブルートゥース、近距離無線通信(NFC)、RF、もしくはWi−Fiを介して)無線で接続される場合、または他の任意の種類のネットワーク(例えば、LAN、プライベートWAN、もしくはインターネット)を通して接続される場合である。
工程220において、コンピューティング・デバイスは、軸に対して画像のスクロール範囲を決定する。特定の実施形態では、スクロール範囲は、画像のアスペクト比および画像の絶対寸法に基づいて決定され、例えば、scrollRange=((photoWidth/photoHeight)×(DEGREES_TO_RADIANS(tiltRange)/(length/height)))であり、ここで、tiltRangeは、画像の1端から反対端までのスクロールに必要とされる傾けの度数であり、length×heightは、画像のアスペクト比である(ここでlengthは、スクロールがそれに沿って生じ得る次元である)。tiltRangeパラメータは、画像のアスペクト比に従って変化することができ、その結果、アスペクト比が3×1であるパノラマ画像の長さ方向のスクロールの場合、より大きいtiltRangeを使用することができ、一方、3×3の画像の長さ方向のスクロールの場合、より小さいtiltRangeを使用することができる。特定の実施形態では、tiltRangeは、ユーザが画面を見るのに苦労するような大きさまでデバイスを傾ける必要がないことを保証するために制約を受けることもある。特定の実施形態では、スクロール範囲は、デバイスの向きに基づくことができる。例えば、長方形ディスプレイを有するデバイスは、デバイスがランドスケープ・モードで見られているか、それともポートレート・モードで見られているかに基づいて、画像の様々な部分を提示することができ、したがって、デバイスがランドスケープ・モードで見られているか、それともポートレート・モードで見られているかに基づいて、画像の寸法に対して様々なスクロール範囲を計算することができる。
工程230において、コンピューティング・デバイスは、例えば、ジャイロスコープ・センサを使用して、初期の傾けを測定する。初期の傾けは、初期の傾けの以降の変化がそこを起点に測定される基準点とすることができる。例えば、デバイスを保持しているユーザが、それをほぼ完璧に水平に保持しているために、統合ジャイロスコープを有する、横向きでパノラマ画像を表示しているハンドヘルド・コンピューティング・デバイスが、デバイスを高さ方向に貫く軸に対する傾けを0.3°であると測定した場合、デバイスによって登録される、以降の動作に関して測定されるいずれの傾けも、初期の傾けからの変化分として測定される。特定の実施形態では、ユーザがその同じ画像を見ている間に全般的な向きが変化した場合(例えば、ユーザがスマートフォンを使用しながら横向きに寝た場合)、コンピューティング・デバイスは、ディスプレイに関して画像の提示をスクロールさせるための軸を保ちながら、以降の傾け測定を適切に適用して、以下でより十分に説明される前進パラメータを決定するために、初期の傾けを更新することができる。デバイスによって登録される、以降の動作に関して測定されるいずれの傾けも、更新された初期の傾けからの変化分として測定される。図1Bに示された例に示されるように、初期の傾けは、0°と測定される。特定の実施形態では、コンピューティング・デバイスは、統合ジャイロスコープを有するハンドヘルド・デバイスを含むことができる。特定の実施形態では、コンピューティング・デバイスは、ジャイロスコープを備える外部ハンドヘルド・コントローラに接続することができる。
工程240において、コンピューティング・デバイスは、起点位置を決定する。図1Bに関して上で説明されたように、起点位置は、特定のアプリケーションに従って、ユーザ選択に従って、画像内の特定の位置に設定することができ、または関連する要因に従って、画像内の適切な位置に設定することができる。
工程250において、コンピューティング・デバイスは、1つまたは複数の要因に基づいて、(例えば、画像のスクロールの起動などによって)画像提示を更新するかどうかを決定する。特定の実施形態では、要因は、軸の周りの第2の傾け(すなわち、初期の傾け以降の傾け)とすることができる。例えば、第2の傾けは、初期の傾けに対して測定することができ、または初期の傾けおよび第2の傾けの両方がそこを起点に測定される基準傾きに対して測定することができる。
上述されたように、スクロールを起動するために、閾値を使用することができる。閾値起動は、意図しない手の震えが原因の、または乗物に乗っているなど、不安定な環境が原因のデバイスの動きなどによる、意図しないスクロールを防止する助けとなり得る。例示的な1実施形態では、閾値は、測定された傾けの、初期の傾けに対する、いずれかの方向における最小変化を含むことができる。例示的な別の実施形態では、閾値は、(例えば、スクロール機能がコンピューティング・デバイスの急激な傾け動作によって起動される場合の)いずれかの方向における最小回転速度を含むことができる。
特定の実施形態では、画像提示を更新するかどうかの決定は、第1の軸の周りのデバイスの回転速度を、第2の軸または第2の軸の成分の周りのデバイスの回転速度と比較することを含む。例えば、第1の軸は、初期の傾けの成分がその周りで測定される軸とすることができる。上述されたように、特定の実施形態では、その軸は、画像平面内に存在することができる。第2の軸は、例えば、第1の軸と直交する軸など、他の任意の適切な軸とすることができる。同様に、第2の軸の成分は、例えば、第1の軸と直交する成分など、その軸の任意の適切な成分とすることができる。第2の軸は、第1の軸と直交する画像平面内に存在し、画像がスクロール範囲を有さない次元に沿った方向に延びることができる。第1の軸の周りの回転速度と、(本明細書で使用される場合、必要に応じて、第2の軸の成分の周りの回転速度を含む)第2の軸の周りの回転速度は、第2の軸の周りの回転速度の第1の軸の周りの回転速度に対する比を決定することによって、比較することができる。特定の実施形態では、その比は、閾値と比較することができ、比が閾値よりも大きい場合、画像提示は更新されない。例えば、第1の軸の周りの回転速度のパーセンテージで示した第2の軸の周りの回転速度が、(例えば、0.55などの)閾値よりも大きい場合、画像のスクロールは、生じなくてよい。
特定の実施形態では、画像提示を更新するかどうかの決定は、デバイスの加速度に基づいて変化する可変閾値の使用を含む。例えば、閾値は、デバイスの加速度が増加したときに、増加することができる(すなわち、デバイスの加速度が相対的に大きいときは、画像をスクロールさせるために、より意図的に傾けることが必要とされる)。閾値は、デバイスの加速度が減少するにつれて、減少することができる。特定の実施形態では、閾値は、最大閾値と最小閾値の間で、加速度の関数として増加することができ、加速度の(同じまたは異なる)関数として減少することができる。特定の実施形態では、加速度は、直線加速度(すなわち、デバイスの速度ベクトルの大きさの変化)、角加速度、デバイスの速度ベクトルの方向の変化、またはそれらの任意の適切な組み合わせを含むことができる。閾値は、例えば、デバイスの傾けの度数、デバイスの回転速度、2つの異なる軸の周りのデバイスの回転速度の比(例えば、上で説明された比)、またはそれらの任意の適切な組み合わせなど、任意の適切なメトリックと比較することができる。
工程260において、コンピューティング・デバイスは、センサからの入力およびスクロール範囲に基づいて、画像をいかにスクロールさせるかを示す前進パラメータを計算する。例えば、前進パラメータは、実行されるスクロールの量、スクロールを実行すべきスピード、その両方、または他の任意の適切なパラメータを含むことができる。前進パラメータは、限定ではなく、例として、(1)初期の傾け測定、(2)傾きセンサによって報告された現在の(すなわち、第2の)傾け測定、(3)ジャイロスコープによって報告された先行する傾け測定と現在の傾け測定との間の変化分であって、傾きセンサが、ある間隔で測定をサンプリングすることができる、変化分、(4)傾きセンサによって報告された先行する傾け測定と現在の傾け測定との間の変化分に基づいて計算される回転、(5)最後の傾け測定について決定される、絶対位置に対する起点位置のオフセット、または(6)傾きセンサによって通知された現在の傾け測定について決定される、絶対位置に対する起点位置のオフセットを含む、1つまたは複数の属性を含むことができる。特定の実施形態では、ユーザのデバイスの持ち方の緩やかな変化がスクロールをトリガしないようにするために、前進パラメータは、最小回転速度を満たすことが必要とされることがある。
特定の実施形態では、(ユーザがスクロール範囲を超えてスクロールすることができないように)入力データを画像の寸法に制限するために、入力を切り詰めることができる。特定の実施形態では、ジャイロスコープから受け取った入力データは、手の震えに起因する揺れを低減または除去して、滑らかなスクロール動作を生み出すために、平滑化することができる。入力の平滑化は、(入力内のスパイクを除去するために)ローパス・フィルタを入力データに適用すること、および/または(途切れずに進行する滑らかなスクロール動作を生み出すために)RK4(ルンゲ−クッタ)ソルバを入力データに適用することを含むことができる。
工程270において、コンピューティング・デバイスは、前進パラメータ(progress parameter)に基づいて、画像のスクロールを示すために画像提示を更新する。画像提示は、仮想ばね効果などの特別な効果を含むことができる(例えば、画像は、画像の端に向かってスクロールされて、端に「ぶつかった」ときに跳ね返り、および/または画像スクロールは、端が近づいて、仮想ばねがより大きく引き延ばされるにつれて遅くなる)。特定の実施形態では、画面上に表示される画像の動きは、仮想ばねの1方の端を起点位置にある画像に取り付け、仮想ばねの別の端を画面上の位置(例えば、画面の中心、画面の角隅、または画面の端)に取り付けることによって、シミュレートすることができる。任意の数の仮想ばねをオブジェクトに取り付けることができる。特定の実施形態では、オブジェクトの動きは、フックの法則:F=−kxに基づいて決定することができ、ここで、xは、その平衡位置からのばねの端部の変位(例えば、距離、SI単位では、メートル)であり、Fは、その端部においてばねによってもたらされる復元力(SI単位では、Nまたはkg・m/s2)であり、kは、レートまたはばね定数と呼ばれる定数(SI単位では、N/mまたはkg/s2)である。この等式が成り立つ場合、挙動は線形であると言われる。等式の右辺に負の符号が存在するのは、復元力は、常に、変位とは反対方向に働くためである(例えば、ばねが左に引き延ばされる場合、ばねは右に引き戻される)。一般に、ばねの動きを決定する際、以下の特性、すなわち、質量、減衰、ばね剛性、ばね静止長が関与する。いくつかの実施では、仮想質量をオブジェクトに割り当てることができる。
特定の実施形態では、仮想ばねは、表示される画像の属性に基づいて、異なる状態値を有することができる。ばねは、オブジェクトの動きのアニメーション系列がより自然らしく見えるようにするために、切れる代わりに、1組の状態値から別の組へと傾斜することができる。例えば、アニメーションにおいて使用されるばねのきつさ、または1組の状態値から別の組への傾斜のレベルを決定するために、画像の端と起点位置との間の距離を使用することができる。
特定の実施形態では、物理学エンジンが、ばねの動きをシミュレートするアルゴリズムを実施する。1つまたは複数の仮想ばねをオブジェクトに取り付けることができる。例えば、画面上に表示された画像のスクロールを起動するために、コンピューティング・デバイスが傾けられた場合、画像内の起点位置に仮想ばねを取り付けることができる。オブジェクトが動く(例えば、傾け動作によってスクロールされる)とき、オブジェクトの動きが、ばねの動きの物理学に基づいて、アニメーション化されるように、その動きは、仮想ばねの経路を辿る。特定の実施形態では、アルゴリズムは、張力、質量、減衰効果、測定された傾けなどの変数を考慮することができる。例として、画像が、起点位置から離れて、端に近づくようにスクロールされる(それによって、ばねをより大きく引き延ばす)場合、スクロール・スピードは、低下することが可能である。反対に、画像が、起点位置に戻るようにスクロールされる場合、スクロール・スピードは、スピードアップすることが可能である。別例において、画像が、起点位置から離れるようにスクロールされ、端に「ぶつかった」場合、画像は、端に達して跳ね返ったように見えることが可能である。
特定の実施形態では、オブジェクト上でズームインが行われた場合、オブジェクトは、サイズが大きくなる。オブジェクト上でズームアウトが行われた場合、オブジェクトは、サイズが小さくなる。オブジェクトのサイズの変化は、アニメーション系列で描写することができ、オブジェクトの動きは、ばねの動きに基づくことができる。特定の実施形態では、オブジェクトが、最終目的位置に向かって移動する場合、オブジェクトの中間位置は、ばねの動きに基づいて補間することができる。起点位置が、新しい起点位置の指定に基づいて修正される場合、仮想ばねは、新しい起点位置に取り付け直すことができる。
工程280において、ユーザがコンピューティング・デバイスを傾け続けている場合、コンピューティング・デバイスは、センサが動きを検出していることを示す継続的な標識を受け取ることができる。特定の実施形態では、図2の方法は、センサが実質的に連続的な動きを検出する限り、工程260から繰り返すことができる。特定の実施形態では、コンピューティング・デバイスが、閾値期間よりも長い間、動きがないことを検出した場合、またはコンピューティング・デバイスが、センサによって検出された動作の大きさが閾値よりも下がったことを検出した場合、コンピューティング・デバイスは、工程250に戻ることができ、または画像を自動的にパンしていくことができる。
工程285において、デバイスは、画像をその起点位置に戻すべきであることを示す入力を受け取る。特定の実施形態では、起点位置は、事前決定された動きの直前の画像の位置とすることができる。入力は、任意の適切なタイプのものとすることができる。例えば、入力は、デバイスの事前決定された動きとすることができる。本明細書で使用される場合、適切なときは、「事前決定された動き」は、動き、その動きの属性もしくは態様、またはその両方を含む。例えば、事前決定された動きは、特定の振動数で、特定の持続時間にわたって、または特定の力の量で、デバイスを振ることを含むことができる。
特定の実施形態では、事前決定された動きは、例えば、傾動軸の周りのある量の第2の傾けなど、任意の適切な軸の周りのデバイスの回転を含むことができる。例えば、事前決定された動きは、初期の傾けに対して少なくとも90°の傾けとすることができる。別例として、事前決定された動きは、例えば、少なくとも180°の回転など、適切な基準点に対するある量の回転とすることができる。別例として、事前決定された動きは、事前決定された長さの時間内の回転を含むことができる。特定の実施形態では、事前決定された動きは、例えば、第2の傾けと関連付けられた加速度など、傾けと関連付けられた加速度を含むことができる。例えば、事前決定された動きは、(少なくとも10πラジアン毎秒毎秒など)相対的に高い角加速度の傾けとすることができる。特定の実施形態では、事前決定された動きは、画像のスクロール範囲の限界を超えて画像をスクロールさせようとする試みとなる動きとすることができる。特定の実施形態では、視覚的インジケータは、画像が配置し直されようとしていることをユーザに通知することができる。例えば、スクロール範囲の端に達したとき、画像のばねに似た跳ね返りなどの効果は、画像が配置し直されつつある、または配置し直されようとしていることを示すことができる。
特定の実施形態では、事前決定された動きは、事前決定されていなければ画像をスクロールさせる動き、すなわち、工程250において必要とされたデバイスに画像提示の更新を決定させる動きとすることができる。例えば、初期の傾けに続く傾動軸の周りの第2の傾けは、画像のスクロールを引き起こすことができ、(傾けの度数、傾けの変化率、または他の任意の適切な態様など)傾けの特定の態様は、事前決定された動きとすることができる。それらの事前決定された動きは、事前決定されていなければ工程250の要件を満たすにもかかわらず、デバイス上で画像をスクロールさせることを意図していない動きを識別するために使用することができる。例えば、ユーザは、ユーザの向かいに座っている友人に画像が表示されることを望むことがあり、その友人に画像が表示されるようにデバイスを回転させることがある。デバイスの回転は、スクロールを引き起こし得るが、回転の度数、回転のスピード、回転の突然の停止もしくは回転の特定の地点(例えば、180°)における回転の停止、またはそれらの任意の組み合わせは、デバイスの回転の直前の起点位置などの起点位置に画像を戻す事前決定された動きとすることができる。したがって、画像は、それが回転前にユーザに見えていたように、友人に表示される。
特定の実施形態では、事前決定された動きの間中、定期的に配置し直しが生じる。特定の実施形態では、事前決定された動きの終了時に、配置し直しが生じる。例えば、配置し直しは、事前決定された動きが完了してから事前決定された時間が経過した後に生じることができる。別例として、配置し直しは、事前決定された動きが完了し、ある期間にわたってデバイスを実質的に静止させた後に生じることができる。
工程290において、コンピューティング・デバイスは、起点位置を新しい起点位置に修正するための入力を受け取ることができる。ユーザは、起点位置から離れて新しい位置に向かうようにスクロールした後、(例えば、新しい位置上でクリックし、指で押さえることで)起点位置を新しい位置に修正することができる。その場合、コンピューティング・デバイスは、新しい起点位置を決定するために、工程240に戻ることができ、その後、新しい起点位置に基づいて、スクロール機能を提供し続けることができる。
特定の実施形態では、画像が画面上に最初に表示されるとき、画像を1度自動的にパンしてゆくことができ、その後、パンが完了すると、画像は、コンピューティング・デバイスを傾けることによってスクロールさせる方法で利用可能にすることができる。画像をパンしてゆくことに関連して、特定の実施形態は、限定としてではなく、例として、本願明細書に援用される、2012年11月14日に出願された「画像パンおよびズーム効果(Image Panning and Zooming Effect)」と題する米国特許出願第13/676831号において開示されている、1つまたは複数のシステム、コンポーネント、要素、機能、方法、操作、または工程を利用することができる。
特定の実施形態は、適切な場合、図2の方法の1つまたは複数のステップを繰り返してもよい。本開示は、図2の方法の特定のステップについて特定の順序で行われるものとして述べ、示しているが、本開示は、任意の好適な順序で行われる図2の方法の任意の好適なステップを企図する。さらに、本開示は、図2の方法の特定のステップを実施する特定の構成要素、デバイス、またはシステムについて述べ、示しているが、本開示は、図2の方法の任意の好適なステップを実施する任意の好適な構成要素、デバイス、またはシステムの任意の好適な組合せを企図する。
図3は、例示的なコンピュータ・システム300を示す。特定の実施形態では、1または複数のコンピュータ・システム300は、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施する。特定の実施形態では、1または複数のコンピュータ・システム300は、本明細書に記載され、または示されている機能を提供する。特定の実施形態では、1または複数のコンピュータ・システム300上で動作するソフトウェアは、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施し、または本明細書に記載され、または示されている機能を提供する。特定の実施形態は、1または複数のコンピュータ・システム300の1または複数の部分を含む。本明細書では、コンピュータ・システムに言及することは、適切な場合、コンピューティング・デバイスを包含してもよく、逆も同様である。さらに、コンピュータ・システムに言及することは、適切な場合、1または複数のコンピュータ・システムを包含してもよい。
この開示は、任意の好適な数のコンピュータ・システム300を企図する。この開示は、任意の好適な物理形態をとるコンピュータ・システム300を企図する。限定するものとしてではなく一例として、コンピュータ・システム300は、組込みコンピュータ・システム、システム・オン・チップ(SOC)、シングルボード・コンピュータ・システム(SBC)(たとえば、コンピュータ・オン・モジュール(COM)またはシステム・オン・モジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話キオスク、メインフレーム、コンピュータ・システムのメッシュ、移動体電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらの2以上の組合せであってよい。適切な場合、コンピュータ・システム300は、1または複数のコンピュータ・システム300を含んでもよく、一元的なものであっても分散型であってもよく、複数のロケーションに跨ってもよく、複数のマシンに跨ってもよく、複数のデータ・センタに跨ってもよく、クラウド内にあってもよく、クラウドは、1または複数のネットワーク内で1または複数のクラウド・コンポーネントを含んでもよい。適切な場合、1または複数のコンピュータ・システム300は、実質的な空間的または時間的制限なしに、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。限定するものとしてではなく一例として、1つまたは複数のコンピュータ・システム300は、リアルタイムで、またはバッチ・モードで、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。1または複数のコンピュータ・システム300は、適切な場合、異なる時に、または異なるロケーションで、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。
特定の実施形態では、コンピュータ・システム300は、プロセッサ302、メモリ304、ストレージ306、入力/出力(I/O)インターフェース308、通信インターフェース310、およびバス312を含む。この開示は、特定の数の特定の構成要素を特定の構成で有する特定のコンピュータ・システムについて記載し示しているが、この開示は、任意の好適な数の任意の好適な構成要素を任意の好適な構成で有する任意の好適なコンピュータ・システムを企図する。
特定の実施形態では、プロセッサ302は、コンピュータ・プログラムを構成するものなど命令を実行するためのハードウェアを含む。限定するものとしてではなく一例として、命令を実行するために、プロセッサ302は、内部レジスタ、内部キャッシュ、メモリ304、またはストレージ306から命令を取り出し(またはフェッチし)、それらを復号および実行し、次いで、1または複数の結果を内部レジスタ、内部キャッシュ、メモリ304、またはストレージ306に書き込む。特定の実施形態では、プロセッサ302は、データ、命令、またはアドレス用に1または複数の内部キャッシュを含んでもよい。この開示は、適切な場合、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ302を企図する。限定するものとしてではなく一例として、プロセッサ302は、1または複数の命令キャッシュ、1または複数のデータ・キャッシュ、および1または複数の変換索引バッファ(TLB)を含んでもよい。命令キャッシュ内の命令は、メモリ304またはストレージ306内の命令のコピーであってもよく、命令キャッシュは、プロセッサ302によるこれらの命令の取り出しを高速化する。データ・キャッシュ内のデータは、プロセッサ302にて実行される命令が操作するための、メモリ304またはストレージ306内のデータのコピー、プロセッサ302で実行される後続の命令によるアクセスのための、またはメモリ304もしくはストレージ306に書き込むための、プロセッサ302で実行された以前の命令の結果、あるいは他の好適なデータであってもよい。データ・キャッシュは、プロセッサ302による読出しまたは書込み動作を高速化する。TLBは、プロセッサ302のために仮想アドレス変換を高速化する。特定の実施形態では、プロセッサ302は、データ、命令、またはアドレス用に1または複数の内部レジスタを含む。この開示は、適切な場合、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ302を企図する。適切な場合、プロセッサ302は、1または複数の算術論理演算ユニット(ALU)を含むことができ、マルチコア・プロセッサであってもよく、1または複数のプロセッサ302を含んでもよい。この開示は、特定のプロセッサについて記載し示しているが、この開示は、任意の好適なプロセッサを企図する。
特定の実施形態では、メモリ304は、プロセッサ302が実行するための命令、またはプロセッサ302が操作するためのデータを記憶するための主記憶装置を含む。限定するものとしてではなく一例として、コンピュータ・システム300は、ストレージ306または別のソース(たとえば、別のコンピュータ・システム300など)からメモリ304に命令をロードする。次いで、プロセッサ302は、メモリ304から内部レジスタまたは内部キャッシュに命令をロードする。命令を実行するために、プロセッサ302は、内部レジスタまたは内部キャッシュから命令を取り出し、それらを復号する。命令の実行中、または実行後、プロセッサ302は、1または複数の結果(中間結果であることも最終結果であることもある)を内部レジスタまたは内部キャッシュに書き込む。次いで、プロセッサ302は、それらの結果の1または複数をメモリ304に書き込む。特定の実施形態では、プロセッサ302は、1もしくは複数の内部レジスタもしくは内部キャッシュ内、または(ストレージ306もしくは他の場所ではなく)メモリ304内の命令だけを実行し、1もしくは複数の内部レジスタもしくは内部キャッシュ内、または(ストレージ806もしくは他の場所ではなく)メモリ304内のデータだけを操作する。1または複数のメモリ・バス(それぞれがアドレス・バスとデータ・バスを含むことがある)がプロセッサ302をメモリ304に結合してもよい。バス312は、下記に記載されているように、1または複数のメモリ・バスを含んでもよい。特定の実施形態では、1または複数のメモリ管理ユニット(MMU)が、プロセッサ302とメモリ304との間に存在し、プロセッサ302によって要求されるメモリ304へのアクセスを容易にする。特定の実施形態では、メモリ304は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合、揮発性メモリであり得る。適切な場合、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であってよい。さらに、適切な場合、このRAMは、シングルポート型またはマルチポート型RAMであってよい。この開示は、任意の好適なRAMを企図する。メモリ304は、適切な場合、1または複数のメモリ304を含んでもよい。この開示は、特定のメモリについて記載し示しているが、この開示は、任意の好適なメモリを企図する。
特定の実施形態では、ストレージ306は、データまたは命令用のマス・ストレージを含む。限定するものとしてではなく一例として、ストレージ306は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、もしくはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらの2以上の組合せを含んでもよい。ストレージ306は、適切な場合、取外し式または非取外し式(または固定)媒体を含んでもよい。ストレージ306は、適切な場合、コンピュータ・システム300に対して内部であっても外部であってもよい。特定の実施形態では、ストレージ306は、不揮発性のソリッドステート・メモリである。特定の実施形態では、ストレージ306は、読出し専用メモリ(ROM)を含む。適切な場合、このROMは、マスクプログラムドROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書き換え可能ROM(EAROM)、もしくはフラッシュ・メモリ、またはこれらの2以上の組合せであってよい。この開示は、任意の好適な物理形態をとるマス・ストレージ306を企図する。ストレージ306は、適切な場合、プロセッサ302とストレージ306の間の通信を容易にする1または複数のストレージ制御ユニットを含んでもよい。適切な場合、ストレージ306は、1または複数のストレージ306を含んでもよい。この開示は、特定のストレージについて記載し示しているが、この開示は、任意の好適なストレージを企図する。
特定の実施形態では、I/Oインターフェース308は、コンピュータ・システム300と1または複数のI/Oデバイスとの間の通信のために1または複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム300は、適切な場合、これらのI/Oデバイスの1または複数を含んでもよい。これらのI/Oデバイスの1または複数は、人とコンピュータ・システム300の間の通信を可能にする。限定するものとしてではなく一例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の好適なI/Oデバイス、またはこれらの2以上の組合せを含んでもよい。I/Oデバイスは、1または複数のセンサを含んでもよい。この開示は、任意の好適なI/Oデバイス、およびそれらのための任意の好適なI/Oインターフェース308を企図する。適切な場合、I/Oインターフェース308は、プロセッサ302がこれらのI/Oデバイスの1または複数を駆動することを可能にする1または複数のデバイスまたはソフトウェア・ドライバを含む。I/Oインターフェース308は、適切な場合、1または複数のI/Oインターフェース308を含んでもよい。この開示は、特定のI/Oインターフェースについて記載し示しているが、この開示は、任意の好適なI/Oインターフェースを企図する。
特定の実施形態では、通信インターフェース310は、コンピュータ・システム300と1もしくは複数の他のコンピュータ・システム300または1もしくは複数のネットワークとの間の通信(たとえば、パケットベースの通信など)のために1または複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、通信インターフェース310は、ETHERNET(登録商標)もしくは他の有線ベースのネットワークとの通信のためのインターフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなど無線ネットワークとの通信のための無線NIC(WNIC)もしくは無線アダプタを含んでもよい。この開示は、任意の好適なネットワーク、およびそのための任意の好適な通信インターフェース310を企図する。限定するものとしてではなく一例として、コンピュータ・システム300は、アドホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはインターネットの1もしくは複数の部分、あるいはこれらの2以上の組合せと通信する。これらのネットワークの1または複数のうちの1または複数の部分は、有線であっても無線であってもよい。一例として、コンピュータ・システム300は、無線PAN(WPAN)(たとえば、BLUETOOTH(登録商標)WPANなど)、WI−FIネットワーク、WI−MAXネットワーク、携帯電話ネットワーク(たとえば、グローバル移動体通信システム(GSM(登録商標))ネットワークなど)、もしくは他の好適な無線ネットワーク、またはこれらの2以上の組合せと通信する。コンピュータ・システム300は、適切な場合、これらのネットワークのいずれかのための任意の好適な通信インターフェース310を含んでもよい。通信インターフェース310は、適切な場合、1または複数の通信インターフェース310を含んでもよい。この開示は、特定の通信インターフェースについて記載し示しているが、この開示は、任意の好適な通信インターフェースを企図する。
特定の実施形態では、バス312は、コンピュータ・システム300の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、バス312は、アクセラレィティッド・グラフィックス・ポート(AGP)もしくは他のグラフィックス・バス、EISA(Enhanced Industry Standard Architecture)バス、フロントサイド・バス(FSB)、HT(HYPERTRANSPORT)相互接続、ISA(Industry Standard Architecture)バス、インフィニバンド相互接続、LPC(low−pin−count)バス、メモリ・バス、MCA(Micro Channel Architecture)バス、PCI(Peripheral Component Interconnect)バス、PCIエクスプレス(PCIe)バス、SATA(serial advanced technology attachment)バス、VLB(Video Electronics Standards Association local)バス、もしくは別の好適なバス、またはこれらの2以上の組合せを含んでもよい。バス312は、適切な場合、1または複数のバス312を含んでもよい。この開示は、特定のバスについて記載し示しているが、この開示は、任意の好適なバスまたは相互接続を企図する。
本明細書では、1または複数の非一時的コンピュータ可読記憶媒体は、適切な場合、1または複数の半導体ベースの、もしくは他の集積回路(IC)(たとえば、フィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向けIC(ASIC))、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはセキュア・デジタル・ドライブ、任意の他の好適な非一時的コンピュータ可読記憶媒体、またはこれらの2以上の組合せを含んでもよい。非一時的コンピュータ可読記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性の組合せであってよい。
本明細書では、「または(もしくは)」は、別段明確に示されていない限り、または別段文脈によって示されない限り、包括的(inclusive)であり、排他的なものではない。したがって、本明細書では、「AまたはB」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「A、B、またはその両方」を意味する。さらに、「および」は、別段明確に示されていない限り、または別段文脈によって示されない限り、共同であり、個別的でもある。したがって、本明細書では、「AおよびB」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「AおよびBを共同で、または個別的に」意味する。
この開示の範囲は、当業者であれば理解するであろう、本明細書に記載され、または示されている例示的な実施形態に対する変更、置換、変形、代替、および修正すべてを包含する。この開示の範囲は、本明細書に記載され、または示されている例示的な実施形態に限定されない。さらに、この開示は、それぞれの実施形態について、本明細書では、特定の構成要素、要素、機能、動作、またはステップを含むものとして記載し示しているが、これらの実施形態のいずれも、当業者であれば理解するであろう、本明細書のどこかに記載され、または示されている構成要素、要素、機能、動作、またはステップのいずれかの任意の組合せまたは並べ替えを含んでもよい。さらに、添付の特許請求の範囲において、特定の機能を実施するように適合された、するように配置された、することが可能な、するように構成された、することが可能である、するように動作可能である、またはするように動作する装置もしくはシステム、または装置もしくはシステムの構成要素に言及することは、その装置、システム、または構成要素がそのように適合され、配置され、動作可能であり、構成され、可能であり、動作可能であり、動作する限り、それ、またはその特定の機能が作動される、オンにされる、またはロック解除されるか否かにかかわらず、その装置、システム、構成要素を包含する。