(57)【特許請求の範囲】
【請求項１】
複数の割り込みに応答して、システム上で実行されるソフトウェアのアーキテクチャデータを周期的に収集するべく、前記システムのファームウェアを使用する段階と、
前記アーキテクチャデータのフォーマットを、シミュレータに関連付けられたフォーマットへと変換する段階と、
前記アーキテクチャデータを前記シミュレータで再生する段階と、
前記シミュレータから、前記ソフトウェアに対応する障害情報を取得する段階とを備え、
前記アーキテクチャデータは、前記システムのコンポーネントの状態に対応するステートデータ、及び、メモリオペレーションに対応する結果を含むメモリトランザクションデータを有する実行データを備えるイベントデータを含む方法。
【請求項２】
前記ソフトウェアのオペレーションによってアクセスされる１以上の収集されたアドレスを特定する段階と、
前記１以上の収集されたアドレスを、前記ソフトウェアに対応する前記実行データとパッケージ化して、前記シミュレータに送信する段階とを更に備える請求項１に記載の方法。
【請求項３】
前記障害情報に基づいて、デバッグオペレーション、検証オペレーション及び最適化オペレーションのうちの少なくとも１つを実行する段階を更に備える請求項１又は２に記載の方法。
【請求項４】
マルチコアプロセッサ及びマルチスレッドプロセッサのうちの少なくとも１つを含むシステムで実行されるソフトウェアについて、前記アーキテクチャデータが収集される請求項１から３のいずれか１項に記載の方法。
【請求項５】
コンピュータに、
システム上で実行されるソフトウェアのアーキテクチャデータを前記システムのファームウェアにより収集する段階と、
前記アーキテクチャデータをシミュレータで再生する段階と、
前記ソフトウェアに対応する障害情報を前記シミュレータから取得する段階と
を実行させ、
前記アーキテクチャデータは、前記システムのコンポーネントの状態に対応するステートデータ、及び、メモリオペレーションに対応する結果を含むメモリトランザクションデータを有する実行データを備えるイベントデータを含む、
プログラム。
【請求項６】
前記コンピュータに更に、
前記ソフトウェアのオペレーションによってアクセスされる１以上の収集されたアドレスを特定する段階と、
前記１以上の収集されたアドレスを、前記シミュレータに送信される前記ソフトウェアに対応する実行データとパッケージ化する段階とを実行させ、
前記１以上のアドレスは、線形アドレス及び物理アドレスのうちの少なくとも１つを含む請求項５に記載のプログラム。
【請求項７】
前記コンピュータに更に、
前記ファームウェアにより発行された複数の割り込みに応答して、前記アーキテクチャデータを周期的に収集する段階を実行させる請求項５又は６に記載のプログラム。
【請求項８】
前記コンピュータに更に、
前記障害情報に基づいて、デバッグオペレーション、検証オペレーション及び最適化オペレーションのうちの少なくとも１つを実行する段階を実行させる請求項５から７のいずれか１項に記載のプログラム。
【請求項９】
前記コンピュータに更に、
前記アーキテクチャデータのフォーマットを、前記シミュレータに関連付けられたフォーマットへと変換する段階を実行させる請求項５から８のいずれか１項に記載のプログラム。
【請求項１０】
前記システムは、マルチコアプロセッサ及びマルチスレッドプロセッサのうちの少なくとも１つを含む請求項５から９のいずれか１項に記載のプログラム。
【請求項１１】
システム上で実行されているソフトウェアのアーキテクチャデータを前記システムのファームウェアにより収集する段階と、
前記アーキテクチャデータをシミュレータで再生する段階と、
前記シミュレータから、前記ソフトウェアに対応する障害情報を取得する段階とを備え、
前記アーキテクチャデータは、前記システムのコンポーネントの状態に対応するステートデータ、及び、メモリオペレーションに対応する結果を含むメモリトランザクションデータを有する実行データを備えるイベントデータを含む、
方法。
【請求項１２】
前記ソフトウェアのオペレーションによってアクセスされる１以上の収集されたアドレスを特定する段階と、
前記１以上の収集されたアドレスを前記ソフトウェアに対応する実行データとパッケージ化して、前記シミュレータに送信する段階とを更に備え、
前記１以上のアドレスは、線形アドレス及び物理アドレスのうちの少なくとも１つを含む請求項１１に記載の方法。
【請求項１３】
前記ファームウェアにより発行された複数の割り込みに応答して、前記アーキテクチャデータを周期的に収集する段階を更に備える請求項１１又は１２に記載の方法。
【請求項１４】
前記障害情報に基づいて、デバッグオペレーション、検証オペレーション及び最適化オペレーションのうちの少なくとも１つを実行する段階を更に備える請求項１１から１３のいずれか１項に記載の方法。
【請求項１５】
前記アーキテクチャデータのフォーマットを、前記シミュレータに関連付けられたフォーマットへと変換する段階を更に備える請求項１１から１４のいずれか１項に記載の方法。
【請求項１６】
マルチコアプロセッサ及びマルチスレッドプロセッサのうちの少なくとも１つを含むシステムで実行されるソフトウェアについて、前記アーキテクチャデータが収集される請求項１１から１５のいずれか１項に記載の方法。
【請求項１７】
前記ファームウェアが、イネーブルされたメモリトランザクションデータ収集ファームウェアを含むかを決定する段階を更に備え、
前記メモリトランザクションデータ収集ファームウェアがディセーブルされている場合、前記メモリトランザクションデータを収集することなく前記メモリオペレーションが退避される、
請求項２に記載の方法。
【請求項１８】
前記ファームウェアが前記イネーブルされたメモリトランザクションデータ収集ファームウェアを含む場合、メモリロードオペレーション、メモリストアオペレーション、及び、メモリアクセスを試みる実行フローにおける命令のうちの１つ以上を特定する段階を更に備える、
請求項１７に記載の方法。
【請求項１９】
前記結果は、前記メモリロードオペレーションに対応したレジスタに対する変更、及び、試みられた前記メモリアクセスに対応する結果を含む、
請求項１８に記載の方法。
【請求項２０】
前記コンポーネントは、命令フェッチユニット、命令デコーダ、キャッシュ、実行ユニット、及び、レジスタのうちの１以上を含む、
請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、概して、ソフトウェア障害の評価に関する。より詳細には、実施形態は、ソフトウェア障害の評価を行うべく、収集されたアーキテクチャデータを再生することに関する。
【背景技術】
【０００２】
ソフトウェアをデバッグする現在の技術では、対象のプラットフォームで試験コンテンツを実行し、障害を引き起こしている原因を分離するべく試験コンテンツの範囲を手動で狭めるという作業を行っていることが多い。このような手法は、問題を解決するのに、何回も反復して実行することが必要となる。更に、テストコンテンツの範囲を狭めることができるのは、コンテンツのソースが利用可能な場合に限られる。ソフトウェアデバッグの別の技術として、ロジック分析器を使用して、実行されたソフトウェアロジックのトレース（trace）をとり、トレースデータの完全な分析を行うという手法がある。しかしながら、マルチコア及び／又はマルチスレッドプロセッサの潮流により、プローブチャネルの数は増加し、ロジック分析器の複雑性及びコストも増大している。また、従来の手法をそのままデバッグソフトウェアに適用すると、時間が掛かり、その結果、コストが高くなってしまう。
【０００３】
以下の詳細な説明及び添付の特許請求の範囲を読むことにより、並びに、添付の図面を参照することにより、本発明の実施形態の様々な利点が当業者に明らかとなるであろう。
【図面の簡単な説明】
【０００４】
【図１】一実施形態に係るソフトウェアを評価するスキームの一例のブロック図である。
【図２】一実施形態に係るメモリトランザクションを収集する方法の一例を示したフローチャートである。
【図３】一実施形態に係るシステムの一例を示したブロック図である。
【発明を実施するための形態】
【０００５】
実施形態は、システムで実行されるソフトウェアのアーキテクチャデータを収集する方法について記載している。アーキテクチャデータは、シミュレータで再生されてもよく、この場合、ソフトウェアに対応する障害情報をシミュレータから取得可能である。その他の実施形態は、格納された命令のセットを有するコンピュータ可読記憶媒体を含んでもよく、命令がプロセッサによって実行されると、コンピュータが、システム上で実行されるソフトウェアのアーキテクチャデータを収集し、当該アーキテクチャデータをシミュレータで再生する。また、命令により、コンピュータが、シミュレータからソフトウェアに対応する障害情報を取得してもよい。
【０００６】
実施形態は更に、複数の割り込みに応答して、システム上で実行されているソフトウェアのアーキテクチャデータを周期的に収集するべく、システムのファームウェアが使用される方法を提供することができる。アーキテクチャデータは、ステートデータ及びイベントデータを含んでもよい。アーキテクチャデータのフォーマットは、シミュレータと関連付けられたフォーマットへと変換されてもよく、アーキテクチャデータはシミュレータで再生可能である。方法はまた、シミュレータから、ソフトウェアに対応する障害情報を取得する方法を提供してもよい。
【０００７】
図１には、システム上で実行されるソフトウェアを評価するスキーム１０が示されている。スキーム１０は、評価を行うソフトウェアのデバック、検証及び最適化のような広範囲なオペレーションを、サポート、監視及び／又は強化するのに使用されてもよい。また、ソフトウェアが実行されるシステムは、ラップトップ、パーソナルデジタルアシスタント（ＰＤＡ）、モバイルインターネットデバイス（ＭＩＤ）、無線スマートフォン、メディアプレーヤ、イメージングデバイス等、又は、これらの組み合わせであるモバイルプラットフォームを含んでもよい。システムはまた、パーソナルコンピュータ（ＰＣ）、サーバ、ワークステーション等の固定プラットフォームの一部であってもよい。
【０００８】
一般的に、図示されるスキーム１０は、シリコン実行シーケンス１２及びシミュレータ実行シーケンス１４を含む。シリコン実行シーケンス１２は、汎用プロセッサ、固定機能ハードウェア（例えば、埋め込みマイクロプロセッサ）等の１以上のコアのような集積回路によって、ソフトウェア実行と関連付けられてもよく、集積回路は、特定用途向け集積回路（ＡＳＩＣ）、相補型金属酸化膜半導体（ＣＭＯＳ）、トランジスタ−トランジスタロジック（ＴＴＬ）技術又はこれらの組み合わせのような回路技術を使用して形成されてもよい。一例として、マルチスレッド環境又はマルチコア環境のような複雑な実行環境により、ソフトウェアは多くの相互作用及び依存関係を有する。
【０００９】
図示の例では、システムが試験されている状態であり、実行処理ブロック１６のシステム上のソフトウェアの実行から開始する。矢印１８（１８ａ〜１８ｂ）は、周期的又はその他のベースで割り込みを発行することを表しており、割り込みにより、ダンプハンドラ２０によるアーキテクチャステートデータ２２の収集を開始させることができる。収集されたアーキテクチャステートデータ２２は、システムアーキテクチャの様々な側面に関するデータを含むことができ、例えば、命令フェッチユニット、命令デコーダ、キャッシュ、実行ユニット、レジスタ等が挙げられる。ソフトウェアの実行は次の実行処理ブロック３０及び３４に移り、イベント収集処理ブロック２６及び３２それぞれを介して、アーキテクチャイベントデータ２４を収集することができる。アーキテクチャイベントデータは、メモリトランザクションデータ（例えば、ロード−ストア）データ及びその他のデータを含んでもよい。図示のシーケンス１２は、ブロック２８において障害点に遭遇するまで続く。
【００１０】
図２には、メモリトランザクションデータを収集する方法４２が示されている。方法４２は、ロジック命令のセットとしてメモリの機械又はコンピュータ可読媒体に格納されている実行可能ソフトウェアに実装されてもよく、メモリの例として、ＡＳＩＣ、ＣＭＯＳ、ＴＴＬ技術又はこれらの組み合わせのような回路技術を使用した固定機能ハードウェア内のランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、フラッシュメモリ等がある。例えば、方法４２で示されたオペレーションを実行するコンピュータプログラムコードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向プログラミング言語、及び、Ｃプログラミング言語のような従来の手続き型プログラミング言語、又は、同様なプログラミング言語を含む１以上のプログラミング言語の任意の組み合わせで書かれていてもよい。一方で、方法４２に示したオペレーションを実行するのに、固定機能ハードウェア、又は、アセンブリ言語プログラミング又は機械コードのような低レベルファームウェア命令を使用してもよい。上記のアーキテクチャステートダンプハンドラ２０のオペレーション、アーキテクチャイベント収集ブロック２６、３２、及び、割り込み矢印インスタンス１８（図１）は、試験を行うシステムのファームウェア（例えば、カスタムマイクロコード）で全て自動化されてもよい。この場合、例示した手法では、被試験ソフトウェアの障害情報を取得するのに、手動によるデバッグ又は複雑なロジック解析器を使用する必要がない（例えば、外部測定器等を使用しない"プローブレス（probeless）"テスト構成を提供する）。
【００１１】
図示されている処理ブロック４４では、メモリトランザクションデータ収集ファームウェアがイネーブルされているか否かを判断する。イネーブルされている場合には、テストソフトウェアのオペレーションによってアクセスされる１以上のアドレスが、ブロック４６において特定及び収集されてもよい。収集は、各メモリアクセスにおける物理的アドレス及び線形アドレスを含んでもよい。各メモリアクセスを試みた実行フローにおける命令のようなその他の実行データ、及び、ロードオペレーション（例えば、フラグ、レジスタ等に対する変更）の場合、各メモリオペレーションの結果のようなその他の実行データについても、収集してもよい。ブロック４８では収集されたアドレス及び実行データのパッケージ化が行われ、ブロック５０では、以下に説明するように、シミュレータに対する次の変換及び伝送についてのパッケージ化された情報の格納が行われる。更に、ブロック５２では、試験中のソフトウェアのマクロオペレーション又はマイクロオペレーションのフローに変更を行うことなく、メモリオペレーションを停止させることができる。
【００１２】
図１に示すように、収集されたアーキテクチャステートデータ２２及びイベントデータ２４を、シミュレータに関連付けられたフォーマットへと変換することができ、シミュレータ処理ブロック３６では、シミュレータを収集されたアーキテクチャステートデータ２２で初期化する。アーキテクチャシミュレータの例としては、これに限定されないが、米国、ニューハンプシャー州、ナシュアのＧａｍｂｉｔ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ社のＭＩＭＩＣ（商標）シミュレータ、Ｂｏｔｃｈｓオープンソースエミュレータ（例えば、Ｂｏｔｃｈｓ  ＩＡ−３２エミュレータ、ｖ２．４．５、２０１０年４月２５日、Ｇｅｅｋｎｅｔ，Ｉｎｃ．）、及び、ＱＥＭＵオープンソースエミュレータ（例えば、ＱＥＭＵ  ｖ０．１２．４、２０１０年５月４日）が挙げられる。処理ブロック３８では、収集されたイベントデータ２４を使用してシミュレータでソフトウェアを再生し、ブロック４０において、テスト中のソフトウェアの障害情報をシミュレータから得ることができる。障害情報を使用して、デバッグオペレーション、検証オペレーション及び最適化オペレーションのような更なるオペレーションを実行することができる。
【００１３】
例えば、システムデバッグ利用モデルでは、アーキテクチャ返答により、ソフトウェア障害として分類される問題の迅速なトリアージが可能となる。副産物として、より詳細なデバッグが必要となる問題の分離が存在する。環境及びＢＩＯＳ（basic input/output system）関連の原因から生じる障害の問題についても、例示の手法を使用して特定可能である。
【００１４】
検証の場合、特に、マルチコア／マルチスレッド環境で動作すると同時に、障害情報は、相互運用性及び／又は互換性に対して影響を有する場合がある。この点について、表面化する問題としては、これらに限定されないが、複数のコア／スレッド間にわたる同期の問題、プロセッサ間のロード／格納問題、プロセッサ内の割り込みの順番等が挙げられる。この場合、アーキテクチャ返答は、存在する障害についての根本的原因の迅速な解析を容易にすることができる。
【００１５】
更に、例示された手法をソフトウェア開発キットに組み込んで、このキットとその他のツール、例えば、コンパイラ及びスレッドツールを結びつけて、機器製造者及びソフトウェアベンダがソフトウェアツールチェーンを実現及び最適化可能としてもよい。図３には、ラップトップ、ＰＤＡ、ＭＩＤ、無線スマートフォン、メディアプレーヤ、イメージングデバイス等のモバイルプラットフォーム、又は、これらの組み合わせの一部であってもよいコンピューティングシステム５４が示されている。システム５４は、ＰＣ、サーバ、ワークステーション等の固定プラットフォームの一部であってもよい。例示されるシステム１０は、システムメモリ６０へのアクセスを提供する一体化されたメモリコントローラ５８を有してもよいホストプロセッサ５６を備える。システムメモリとしては、ダブルデータレート（ＤＤＲ）同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ、例えば、ＤＤＲ３  ＳＤＲＡＭ  ＪＥＤＥＣ規格  ＪＥＳＤ７９−３Ｃ、２００８年４月）モジュールを含んでもよい。システムメモリ６０のモジュールは、シングルインラインメモリモジュール（ＳＩＭＭ）、ダブルインラインメモリモジュール（ＤＩＭＭ）、スモールアウトラインＤＩＭＭ（ＳＯＤＩＭＭ）等に組み込まれてもよい。プロセッサ５６は、１以上のプロセッサコア６２を有してもよく、コア６２はそれぞれ、命令フェッチユニット、命令デコーダ、レベル１（Ｌ１）キャッシュ、実行ユニット等の十分な機能を有していてもよい。一例において、プロセッサ５６の内部キャッシュは、スタティックＲＡＭ（ＳＲＡＭ）に実装可能である。プロセッサ５６は、Ｍｉｃｒｏｓｏｆｔ Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｍａｃ（Ｍａｃｉｎｔｏｓｈ（登録商標））ＯＳ、及び、その他の様々なソフトウェアアプリケーションを実行してもよく、このようなソフトウェアは１以上の障害点に遭遇する可能性がある。
【００１６】
図示したプロセッサ５６は、特定のシステムではサウスブリッジとして知られるプラットフォームコントローラハブ（ＰＣＨ）６４と通信を行う。ＰＣＨ６４は、ＵＳＢ（例えば、ＵＳＢ規格２．０、ＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒｓ  Ｆｏｒｕｍのようなユニバーサルシリアルバス）、シリアルＡＴＡ（例えば、ＳＡＴＡ Ｉｎｔｅｒｎａｔｉｏｎａｌ Ｏｒｇａｎｉｚａｔｉｏｎ／ＳＡＴＡ‐ＩＯの２００９年５月２７日のＲｅｖ．３．０規格のＳＡＴＡのようなＳＡＴＡ）、高精細オーディオ及びその他のコントローラのようなインターナルコントローラを有してもよい。ＰＣＨ６４は、様々な目的でオフプラットフォーム通信機能を提供可能なネットワークコントローラ７０と通信可能であってもよく、例えば、携帯電話（例えば、Ｗ−ＣＤＭＡ（ＵＭＴＳ）、ＣＤＭＡ２０００（ＩＳ−８５６／ＩＳ−２０００）等）、ＷｉＦｉ（例えば、ＩＥＥＥ  ８０２．１１  １９９９エディション、ＬＡＮ／ＭＡＮブロードバンド無線ＬＡＮ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）（例えば、ＩＥＥＥ  ８０２．１５．１−２００５、無線パーソナルエリアネットワーク）、ＷｉＭａｘ（例えば、ＩＥＥＥ  ８０２．１６−２００４、ＬＡＮ／ＭＡＮ  ブロードバンド無線ＬＡＮ）、全地球測位システム（ＧＰＳ）、広域スペクトル（例えば、９００ＭＨｚ）及びその他の無線周波数（ＲＦ）テレフォニー目的が挙げられる。図示されたＰＣＨ６４は、１以上のマスストレージデバイスと結合されてもよく、例えば、ハードディスクドライブ（ＨＤＤ）６６、ＲＯＭ、光学ディスク、フラッシュメモリ等を含んでもよい。加えて、ＰＣＨ６４は、ユーザがシステム５４からの情報を認識及び操作可能とするべく、マイク、ディスプレイ、キーバッド、マウス、スピーカ等のユーザインターフェース（ＵＩ）デバイス６８をサポートしてもよい。
【００１７】
コア６２は、プローブレスロジック命令（例えば、マイクロコード／ファームウェア）７４のセットを実行してもよく、このセットは、最初に、（例えば、ＰＲＯＭ、ＮＡＮＤベースの半導体素子ディスク（ＳＳＤ）又はパッチとしてフラッシュメモリから）ＢＩＯＳ７２からロードされる、ツールを介して動的にロードされる、又は、プロセッサ５６のＵＲＯＭ（図示しないマイクロＲＯＭ）に既に存在してもよい。図示の例では、プローブレスロジック命令７４のセットを実行すると、システム５４が、テスト中のソフトウェアの実行に影響を与えることなく、システム５４で実行されるソフトウェア（例えば、ＯＳ及びその他のアプリケーションプログラムコード）のアーキテクチャデータを収集する。加えて、ロジック命令７４が、シミュレータ内で収集されたアーキテクチャを再生してもよく、システム５４で実行されるソフトウェアに対応する障害情報をシミュレータから取得してもよい。既に説明したように、アーキテクチャデータは、ステートデータ及びイベントデータを含むことができ、一例では、イベントデータはメモリトランザクションデータを含む。
【００１８】
本発明の実施形態は、全ての種類の半導体集積回路（ＩＣ）チップでの利用に適用可能である。ＩＣチップの例としては、これに限定されないが、プロセッサ、コントローラ、チップセット構成要素、プログラマブルロジックアレイ（ＰＬＡ）、メモリチップ、ネットワークチップ等が挙げられる。また、図面の一部では、信号導電線が、線として描かれている。一部の線は、より多くの構成信号経路を示すべく太い線として描かれている、複数の構成信号経路を示すべく数字が付されている、及び／又は、主要な情報の流れの方向を示すべく１以上の端部において矢印が付されている場合がある。しかしながら、これらは、構成を限定していると解釈されるべきではない。このように付加されている詳細は、回路の理解を容易にするべく、１以上の実施形態例に関して使用される。付加情報を有するか否かに関わらず、図に示されている任意の信号線は、複数の方向に伝達可能な１以上の信号を含んでもよく、例えば、異なる組で実装されるデジタル又はアナログライン、光ファイバ及び／又はシングルエンド線のような任意の好適な種類の信号スキームを使用して実行されてもよい。
【００１９】
上記では、サイズ／モデル／値／範囲の例が記載されたが、本発明の実施形態はこれらの例に限定されない。製造技術の進歩（例えば、フォトリソグラフィ）により、より小型のデバイスが製造可能になると予測される。また、ＩＣチップ及びその他の構成要素との周知の電源／接地接続については、図示及び説明を単純にして、本発明の実施形態の側面を曖昧にしない目的から、図面に示されていない場合がある。そして、ブロック図で示された構成は、本発明の実施形態を曖昧にするのを回避するべく構成されており、また、このようなブロック図の構成の実装に関する詳細は、実施形態が実装されるプラットフォームに大きく依存し、このような詳細事項は当業者に自明である。本発明の実施形態例を説明するために記載された詳細事項（例えば、回路）については、本発明の実施形態が、このような特定の詳細事項が存在しなくとも、又は、このような詳細事項の変形例と共に実施可能であることは、当業者であれば理解できる。したがって、説明は、限定しているのではなく例示しているものと見なされる。
【００２０】
ある実施形態は、例えば、機械によって実行されると、機械に本実施形態に係る方法及び／又はオペレーションを実行させてもよい命令又は複数の命令のセットを格納してもよい機械又は有形コンピュータ可読媒体又は物品を使用して実装されてもよい。機械としては、例えば、あらゆる好適なプロセッシングプラットフォーム、コンピュータプラットフォーム、コンピュータデバイス、プロセッシングデバイス、コンピュータシステム、プロセッシングシステム、コンピュータ、プロセッサ等が含まれ、ハードウェア及び／又はソフトウェアのあらゆる好適な組み合わせを使用して実装されてもよい。機械可読媒体又は物品は、例えば、好適な種類のメモリユニット、メモリデバイス、メモリ物品、メモリ媒体、記憶デバイス、記憶物品、記憶媒体及び記憶ユニットを含み、例えば、メモリ、取り外し可能／不可能媒体、消去可能又は消去不可能媒体、書き込み可能又は再書き込み可能媒体、デジタル又はアナログ媒体、ハードディスク、フロッピー（登録商標）ディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク記録可能（ＣＤ−Ｒ）、コンパクトディスク再書き込み可能（ＣＤ−ＲＷ）、光学ディスク、磁気媒体、磁気光学媒体、取り外し可能メモリカード又はディスク、様々な種類のデジタル多用途ディスク（ＤＶＤ）、テープ、カセット等を含んでもよい。命令は、好適な種類のコードを含んでもよく、例えば、好適な高レベル、低いレベル、オブジェクト指向、ビジュアル、コンパイル及び／又は変換されたプログラム言語を使用して実装されるソースコード、コンパイルされたコード、変換されたコード、実行可能コード、静的コード、動的コード、暗号化されたコードを含んでもよい。
【００２１】
特に明記されない限り、以下の説明で明らかになるように、明細書中で使用されている言葉、例えば、「Ｐｒｏｃｅｓｓｉｎｇ（処理）」、「ｃｏｍｐｕｔｉｎｇ（演算）」、「ｃａｌｃｕｌａｔｉｎｇ（計算）」、「ｄｅｔｅｒｍｉｎｉｎｇ（決定）」等の言葉は、コンピュータ又はコンピュータシステム、又は、物理量で表されるデータを操作及び／又は変換する同様な電子演算装置のオペレーション及び／又はプロセスを指す。例えば、コンピュータシステムのレジスタ及び／又はメモリ内の電子的量を、コンピュータシステム内のメモリ、レジスタ又はその他の情報記憶層装置内、又は送信デバイス内の同様な物理量で表される別のデータへと変換するオペレーションを指す。実施形態は、この点に関して限定されない。
【００２２】
本明細書で使用されている"結合される（coupled）"という言葉は、対象の構成要素間の直接的又は間接的な任意の種類の関係を意味し、電気的、機械的、流体的、光学的、電磁気的、電気機械的又はその他の接続に適用されてもよい。また、本明細書で使用される"第１の"、"第２の"等は、説明を簡便にするためにのみ使用されており、特にそうでないと記載されていない限り、時間的な又は経時的意味を有していない。
【００２３】
上記の説明から、当業者であれば、本発明の実施形態の幅広い技術を様々な携帯で実装可能であることを理解できる。したがって、本発明の実施形態が特定の例に関して説明されたが、添付の図面及び特許請求の範囲並びに本明細書から当業者にはその他の変形例が明らかであることから、本発明の実施形態の真の範囲は、これに限定されない。
【図１】
0005551828.tif 000002
【図２】
0005551828.tif 000003
【図３】
0005551828.tif 000004