(57)【要約】ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法。方法は、例えば、第１コンピューティングプラットフォームに適した第１フォーマットから第２コンピューティングプラットフォームに適した第２フォーマットに変換されたコードブロックの実行がもたらすミスアラインデータアクセスを検出する段階と、前記ミスアラインデータアクセスに従って前記コードブロックを修正する段階とを備える。
2007513412.tif 000002
【特許請求の範囲】
【請求項１】
第１コンピューティングプラットフォームに適合する第１フォーマットから第２コンピューティングプラットフォームに適合する第２フォーマットに変換された１つのコードブロックの実行がもたらすミスアラインデータアクセスを検出する段階と、
前記ミスアラインデータアクセスに従って、前記コードブロックを修正する段階と
を備える方法。
【請求項２】
検出する段階は、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行する段階を有する
請求項１に記載の方法。
【請求項３】
検出する段階は、実行が前記ミスアラインデータアクセスをもたらす１つの命令の位置を検出すべく、前記コードブロックの中の少なくとも１つの命令のインストゥルメンテーションを実行する段階を有する
請求項２に記載の方法。
【請求項４】
検出する段階は、実行が前記ミスアラインデータアクセスをもたらす１つの命令の位置を検出すべく、前記コードブロックの中の少なくとも１つの命令のインストゥルメンテーションを実行する段階を有する
請求項１に記載の方法。
【請求項５】
修正する段階は、実行が前記ミスアラインデータアクセスを処理するコードシーケンスに前記コードブロックの実行を分岐させる１つの命令を、前記コードブロックに追加する段階を有する
請求項１に記載の方法。
【請求項６】
修正する段階は、前記コードブロックの後続の実行におけるミスアラインデータアクセスを処理すべく前記コードブロックを修正する段階を有する
請求項１に記載の方法。
【請求項７】
前記コードブロックを前記第１フォーマットから前記第２フォーマットに変換する段階
をさらに備える請求項１に記載の方法。
【請求項８】
検出する段階は、３２ビットベースのコンピューティングプラットフォームに適合するフォーマットから６４ビットベースのコンピューティングプラットフォームに適合するフォーマットに変換されたコードブロックの実行がもたらす、ミスアラインデータアクセスを検出する段階を有する
請求項１に記載の方法。
【請求項９】
第１コンピューティングプラットフォームに適合する第１フォーマットから第２コンピューティングプラットフォームに適合する第２フォーマットに変換された１つのコードブロックの実行がもたらすミスアラインデータアクセスを検出し、前記ミスアラインデータアクセスに従って、前記コードブロックを修正する１つのプロセッサ
を備える装置。
【請求項１０】
前記プロセッサは、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行することが可能である
請求項９に記載の装置。
【請求項１１】
前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす１つの命令の位置を検出すべく、前記コードブロックの中の少なくとも１つの命令のインストゥルメンテーションを実行することが可能である
請求項１０に記載の装置。
【請求項１２】
前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす１つの命令の位置を検出すべく、前記コードブロックの中の少なくとも１つの命令のインストゥルメンテーションを実行することが可能である
請求項９に記載の装置。
【請求項１３】
前記プロセッサは、実行が前記ミスアラインデータアクセスを処理するコードシーケンスに前記コードブロックの実行を分岐させる１つの命令を、前記コードブロックに追加することが可能である
請求項９に記載の装置。
【請求項１４】
前記プロセッサは、前記コードブロックの後続の実行におけるミスアラインデータアクセスを処理すべく前記コードブロックを修正することが可能である
請求項９に記載の装置。
【請求項１５】
前記プロセッサは、前記ミスアラインデータアクセスを検出する前に、前記コードブロックを前記第１フォーマットから前記第２フォーマットに変換することが可能である
請求項９に記載の装置。
【請求項１６】
前記第１コンピューティングプラットフォームは３２ビットベースのコンピューティングプラットフォームであり、前記第２コンピューティングアーキテクチャは６４ビットベースのコンピューティングプラットフォームである
請求項９に記載の装置。
【請求項１７】
第１コンピューティングプラットフォームに適合する第１フォーマットから第２コンピューティングプラットフォームに適合する第２フォーマットに変換された１つのコードブロックの実行がもたらすミスアラインデータアクセスを検出し、前記ミスアラインデータアクセスに従って、前記コードブロックを修正する１つのプロセッサと、
前記プロセッサに動作可能に連携され、前記コードブロックの少なくとも一部を記憶する１つのダイナミックランダムアクセスメモリと
を備えるコンピューティングプラットフォーム。
【請求項１８】
前記プロセッサは、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行することが可能である
請求項１７に記載の装置。
【請求項１９】
前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす１つの命令の位置を検出すべく、前記コードブロックの中の少なくとも１つの命令のインストゥルメンテーションを実行することが可能である
請求項１８に記載の装置。
【請求項２０】
前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす１つの命令の位置を検出すべく、前記コードブロックの中の少なくとも１つの命令のインストゥルメンテーションを実行することが可能である
請求項１７に記載の装置。
【請求項２１】
記憶された複数の命令のセットを備える機械可読メディアであって、前記複数の命令は、機械によって実行された場合に、前記機械に、  
第１コンピューティングプラットフォームに適合する第１フォーマットから第２コンピューティングプラットフォームに適合する第２フォーマットに変換された１つのコードブロックの実行がもたらすミスアラインデータアクセスを検出する段階と、
前記ミスアラインデータアクセスに従って、前記コードブロックを修正する段階と
を備える方法を実行させる機械可読メディア。
【請求項２２】
検出する段階をもたらす前記複数の命令は、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行する段階をもたらす
請求項２１に記載の機械可読メディア。
【請求項２３】
検出する段階をもたらす前記複数の命令は、実行が前記ミスアラインデータアクセスをもたらす１つの命令の位置を検出すべく、前記コードブロックの中の少なくとも１つの命令のインストゥルメンテーションを実行する段階をもたらす
請求項２２に記載の機械可読メディア。
【請求項２４】
検出する段階をもたらす前記複数の命令は、実行が前記ミスアラインデータアクセスをもたらす１つの命令の位置を検出すべく、前記コードブロックの中の少なくとも１つの命令のインストゥルメンテーションを実行する段階をもたらす
請求項２１に記載の機械可読メディア。
【請求項２５】
前記複数の命令は、１つのトランスレータの少なくとも一部を構成する
請求項２１に記載の機械可読メディア。
【請求項２６】
前記複数の命令は、１つの実行レイヤの少なくとも一部を構成する
請求項２１に記載の機械可読メディア。
【請求項２７】
前記複数の命令は、１つのオペレーティングシステムの少なくとも一部を構成する
請求項２１に記載の機械可読メディア。
【請求項２８】
前記複数の命令は、１つのコンパイラの少なくとも一部を構成する
請求項２１に記載の機械可読メディア。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティングプラットフォームの分野において、ソフトウェアアプリケーションは元々、第１のコンピューティングプラットフォーム、例えば３２ビットベースのコンピューティングプラットフォーム、例えばＩｎｔｅｌ（登録商標）アーキテクチャ３２（ＩＡ−３２）によって実行されるべく記述される。いくつかのケースにおいて、ソフトウェアアプリケーションを変換して実行する適切なハードウェア及び／又はソフトウェアを用いて、第２のコンピューティングプラットフォーム、例えば６４ビットベースのコンピューティングプラットフォーム、例えばＩｎｔｅｌ（登録商標）Ｉｔａｎｉｕｍ（登録商標）プロセッサ上で、そのソフトウェアアプリケーションを実行することが可能である。
【０００２】
第２のコンピューティングプラットフォーム上でのソフトウェアアプリケーションの変換又は実行の間、ミスアラインデータアクセス及びデータミスアラインメントに関連する問題が生じる場合がある。データミスアラインメントは、例えば、プロセッサによって効率的にアクセスされ得ない１つのメモリアドレスに存在するデータアイテムを含む。第２コンピューティングプラットフォームがミスアラインデータアイテムにアクセスしようとした場合に、望ましくないオーバーヘッド、例えば追加のプロセッシングサイクル又はプロセッシング時間が必要となり得る。いくつかのケースにおいて、第２コンピューティングプラットフォーム上でのソフトウェアアプリケーションの実行は、例えば、ソフトウェアアプリケーションが第１（すなわち、元の）コンピューティングプラットフォームによって実行された場合にも生じ得るデータミスアラインメントにより、既存のプラットフォーム問題を悪化及び増大させる。これはパフォーマンス速度を著しく低下させ、プロセッシング時間及び／又はプロセッシングサイクルの数を著しく増加させ得る。その上、いくつかのケースにおいて、ミスアラインデータアクセスイベントは、例えば第２コンピューティングプラットフォーム上で動作するアプリケーションによって又はオペレーティングシステムによってエラーとして扱われ、その結果、アプリケーションの早期の終了又は他の望ましくない結果をもたらす。
【０００３】
データミスアラインメントアクセス問題は、ミスアラインデータアクセスイベントをもたらすそれぞれの命令を置き換える比較的長いコードシーケンスを用いて、部分的に緩和され得る。しかしながら、全てのデータミスアラインメントアクセス問題を防ぐためのそのような長いコードシーケンスのアプリケーション体は非効率的であり、著しいオーバーヘッド、例えば追加のプロセッシングサイクル及び／又はプロセッシング時間を招く。
【図面の簡単な説明】
【０００４】
本発明に関する主題は、明細書の結びの部分に特に示され、明確に請求される。本発明は、一方で、添付の図面とともに読まれた場合に、以下の詳細な説明を参照することにより、それらの特徴及び利点とともに構成及びオペレーション方法の両方について最も良く理解されるだろう。
【０００５】
【図１】本発明のいくつかの実施形態に係る、データミスアラインメントを検出及び処理することができるコンピューティングプラットフォームの概略図である。
【０００６】
【図２】本発明のいくつかの実施形態に係る、データミスアラインメントを検出及び処理する方法のフローチャートの概略である。
【０００７】
説明の簡単さ及び明確さを目的として、図面に示される構成要素は必ずしも縮尺どおりに描かれる必要がないことが理解されるだろう。例えば、明確さを目的として、いくつかの構成要素の大きさが、他の構成要素に比較して誇張される。さらに、適切である場合には、対応する又は同様の構成要素を示すべく、参照番号が複数の図面にわたって繰り返される。
【発明を実施するための最良の形態】
【０００８】
以下の詳細な説明において、本発明の包括的な理解を提供することを目的として、多くの具体的な細部が説明される。しかしながら、本発明は、これらの具体的な細部なしで実施され得ることが当業者に理解されるだろう。他のケースでは、本発明を不明瞭にしないよう、よく知られた方法、手順、構成要素、ユニット、及び／又は回路は、詳細には説明されない。
【０００９】
図１は、本発明の典型的な実施形態に係る、データミスアラインメントを検出及び処理することができるコンピューティングプラットフォーム１１０を概略的に示す。コンピューティングプラットフォーム１１０は、例えば、データプロセッシング又は種々のソフトウェアアプリケーションの実行のために使用され、本発明のいくつかの実施形態に係るミスアラインデータアクセスの検出及び／又は処理を実装する。コンピューティングプラットフォーム１１０は、１つのコンピューティングデバイスを備える。例えば、コンピューティングプラットフォーム１１０は、パーソナルコンピュータ、デスクトップコンピュータ、モバイルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、端末、ワークステーション、サーバコンピュータ、携帯情報端末（ＰＤＡ）、タブレットコンピュータ、特化された又は専用のコンピューティングデバイス、ネットワークデバイス、又は類似のものの一部を少なくとも含んでよい。コンピューティングプラットフォーム１１０は、ハードウェアコンポーネント及び／又はソフトウェアコンポーネントの任意の適切な組合せを用いて実装される。
【００１０】
図１に示された例において、コンピューティングプラットフォーム１１０は、例えば、１以上のプロセッサ１４１、１以上のメモリユニット１４２、１以上のストレージユニット１４３、１つの出力ユニット１４４、及び１つの入力ユニット１４５を備える。コンピューティングプラットフォーム１１０は、コンピューティングプラットフォーム１１０の１以上のコンポーネントに動作可能に連携する、技術的に知られた他の適切なコンポーネント又はコンポーネントセットを備えてよい。
【００１１】
プロセッサ１４１は、例えば、１つの中央処理装置（ＣＰＵ）、１つのデジタルシグナルプロセッサ（ＤＳＰ）、１以上のコントローラ、或いは任意の適切な特定用途及び／又は汎用及び／又は多目的のプロセッサ又はマイクロプロセッサ或いはコントローラを含む。メモリユニット１４２は、例えば、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤ−ＲＡＭ）、又は他の適切なメモリユニットを含む。ストレージユニット１４３は、例えば、ハードディスクドライブ、フレキシブルディスクドライブ、コンパクトディスク（ＣＤ）ドライブ、ＣＤ−ＲＯＭドライブ、或いは他の適切なリムーバブル又は非リムーバブルなストレージユニット又はメモリモジュールを含む。出力ユニット１４４は、例えば、１以上のカード、アダプタ、コネクタ、及び／又はモニタに接続可能又はモニタと通信可能なコンポーネントを含む。入力ユニット１４５は、例えば、１以上のカード、アダプタ、コネクタ、及び／又はキーボード、マウス、又はタッチパッドに接続可能又はキーボード、マウス、又はタッチパッドと通信可能なコンポーネントを含む。メモリユニット１４２、ストレージユニット１４３、出力ユニット１４４、及び／又は入力ユニット１４５は、プロセッサ１４１と動作的に関連する。技術的に知られたように、プロセッサ１４１、メモリユニット１４２、ストレージユニット１４３、出力ユニット１４４、及び／又は入力ユニット１４５は、他の適切なコンポーネント及び／又は実装を有してよい。
【００１２】
いくつかの実施形態において、ソフトウェアは、例えばストレージユニット１４３又はメモリユニット１４２内に記憶されてよく、プロセッサ１４１を用いて実行されてよい。そのようなソフトウェアは、例えば、１以上のオペレーティングシステム、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ、Ｕｎｉｘ（登録商標）、Ａｐｐｌｅ  ＯＳ、Ｓｏｌａｒｉｓ、Ｓｕｎ−ＯＳ、ＨＰ−ＵＸ、又は他の適切なオペレーティングシステムを含んでよい。ソフトウェアはさらに、１以上のソフトウェアアプリケーション、１以上のドライバ、コンパイラ、インタープリタ、エミュレータ、実行レイヤ、ソフトウェア環境、管理されたソフトウェア環境、トレーションレイヤ、及び／又は種々の他の適切なソフトウェアコンポーネントを含んでよい。ソフトウェアは、例えば、ソフトウェアコンポーネント、ソフトウェアアプリケーション、及び／又は本発明の実施形態に従う１以上の方法を実装または使用するソフトウェアレイヤ、及び／又は他の適切なソフトウェアコンポーネントを含んでよい。いくつかの実施形態において、ソフトウェア及び／又はメモリユニット１４２は、１以上のミスアラインデータアイテム、例えば、メモリユニット１４２内の、プロセッサ１４１によって効率的にアクセスされ得ないメモリアドレスにあるデータアイテムを含んでよい。
【００１３】
いくつかの実施形態において、コンピューティングプラットフォーム１１０は、場合によっては、ソフトウェアコンポーネント及び／又はハードウェアコンポーネントの任意の適切な組合せを用いて実装されるトランスレータ１５０を含んでよい。例えば、一実施形態において、トランスレータ１５０は、メモリユニット１４２及び／又はストレージユニット１４３内に記憶された、プロセッサ１４１を用いて起動又は実行されるソフトウェア及び／又は命令を含んでよい。いくつかの実施形態において、トランスレータ１５０は、ソフトウェアアプリケーション又は１以上の命令を、第１コンピューティングプラットフォームに適合する第１フォーマットから第２コンピューティングプラットフォームに適合する、例えばコンピューティングプラットフォーム１１０に適合する第２フォーマットに変換及び／又は変換してよい。一実施形態において、トランスレータ１５０は、例えば、専用ソフトウェアレイヤ、例えば１つの実行レイヤを用いて実装され得る。いくつかの実施形態において、トランスレータ１５０は、本発明の実施形態に従う、ミスアラインデータアクセスを検出及び処理する１以上のオペレーションを実行する１以上のモジュール又はコンポーネント（図示せず）、例えば、１つの検出モジュール、１つのインストゥルメンテーションモジュール、１つのライトインストゥルメンテーションモジュール、ヘビーインストゥルメンテーションモジュール、１つの変換モジュール、１つの再変換モジュール、１つの最適化モジュール、１つのコード修正モジュール、１つのコード分類モジュール、又は類似のものを含んでよい。
【００１４】
いくつかの実施形態において、トランスレータ１５０は、以下に説明するように、データミスアラインメントを検出及び／又は処理してよい。例えば、トランスレータ１５０によって又はトランスレータ１５０に従って実行される命令又はオペレーションは、本発明のいくつかの実施形態に従う、以下に説明されるようなデータミスアラインメントの検出及び処理の典型的な方法からもたらされる修正を含む修正された変換プロセスを反映する。例えば、本発明のいくつかの実施形態において、トランスレータ１５０は、以下に説明するように、データミスアラインメントに関連するパラメータを考慮する変換方法又は手順を実装してよい。
【００１５】
図２は、本発明のいくつかの実施形態に係る、データミスアラインメントを検出及び処理する一フローチャートを概略的に示す。図２の方法は、本発明の他の実施形態に係る方法とともに、例えば図１のコンピューティングプラットフォーム１１０とともに、トランスレータ１５０、プロセッサ１４１、コンピューティングプラットフォーム１１０によって実行されるソフトウェア又は命令によって、及び／又は他の適切なコンピューティングプラットフォーム、デバイス、装置、及び／又はシステムとともに使用される。いくつかの実施形態において、図２の方法は、適切なソフトウェアコンポーネント及び／又はハードウェアコンポーネントを用いて実装される、１つのコンパイラ、１つのインタープリタ、及び／又は１つのエミュレータによって使用される。
【００１６】
本明細書において使用される"コードのブロック"及び／又は"コードブロック"という語句は、例えば、１以上の命令又は命令セットを含んでよいことが注意される。例えば、１つのコードブロックは、５個の命令、又は２０個の命令等を含んでよい。
【００１７】
本発明のいくつかの実施形態に従って、"ホットブロック"は、例えば、最適化のため又はさらなる最適化オペレーションのための１つの候補として特定及び／又は分類された１つのコードブロックを含んでよい。例えば、ソフトウェアアプリケーションの実行の間に複数回、例えば多数回実行されるコードブロックが、１つのホットブロックとして特定及び／又は分類され得る。他の適切な規則又は条件が、１つのホットブロックを特定、分類、及び／又は定義すべく使用されてよい。
【００１８】
本発明のいくつかの実施形態に従って、"コールドブロック"は、例えば、ホットブロックとして特定及び／又は分類されない１つのコードブロックを含んでよい。例えば、コールドブロックは、ソフトウェアアプリケーションの実行の間に１回だけ又は少数回実行されるコードブロックを含んでよい。いくつかの実施形態において、例えば、コードブロックは、初期の変換オペレーションの間にコールドブロックとして特定及び／又は分類され、さらなる変換及び／又は最適化オペレーションの間にホットブロックとして再び分類されてよいことが注意される。
【００１９】
ブロック２１０で示されるように、この方法は、１つのアプリケーションソフトウェアの１つのコードブロックを、第１コンピューティングプラットフォームに適合した第１フォーマットから、第２コンピューティングプラットフォームに変換又はコンバートしてよい。第１フォーマットにおけるコードブロックは、"元のコードブロック"と呼ばれ、第２フォーマットにおけるコードブロックは"変換されたコードブロック"として呼ばれる。いくつかの実施形態において、例えば、１つのコードブロックは、Ｉｎｔｅｌ（登録商標）アーキテクチャ３２（ＩＡ−３２）からＩｎｔｅｌ（登録商標）アーキテクチャ６４（ＩＡ−６４）に変換され得る。変換は、例えば、トランスレータ１５０を用いて行われてよい。一実施形態において、当該変換は、１つのコンパイラソフトウェア又は１つのインタープリタソフトウェアを用いて行われてよい。変換は、例えば、動的及び／又はリアルタイムに、例えば実質的に実行時に又は実行時の近くで行われてよい。いくつかの実施形態において、変換は、予め、例えば実行時に先立って、行われてよい。
【００２０】
本明細書で説明されるように、本発明の方法の実施形態は、複数のインストゥルメンテーションオペレーションを含んでよい。本発明のいくつかの実施形態に従って、インストゥルメンテーションは、例えば、コードブロック又は命令の振る舞い又はオペレーションをトラッキング、診断、デバッグ、及び／又は解析することを目的として、１以上の命令をあるコードブロック又はある命令に追加することを含む。
【００２１】
本明細書で使用される"ライトインストゥルメンテーション"という語句は、例えば、一コードブロックのレベルで行われるインストゥルメンテーションを含む。一実施形態において、例えば、"ライトインストゥルメンテーション"は、１つのコードブロックの実行がミスアラインデータアクセスをひき起こすか否か、又は１つのコードブロックの実行が、ミスアラインデータアクセスイベントをもたらすか否かを検出するインストゥルメンテーションを含んでよい。いくつかの実施形態において、"ライトインストゥルメンテーション"を実行することは、例えば、与えられたコードブロックの実行がミスアラインデータアクセスイベントを含むか否かを決定することをもたらす。
【００２２】
本明細書で使用される"ヘビーインストゥルメンテーション"という語句は、例えば、一命令のレベルで行われるインストゥルメンテーションを含む。一実施形態において、例えば、"ヘビーインストゥルメンテーション"は、１つの命令の実行がミスアラインデータアクセスをひき起こすか否か、又は１つの命令の実行がミスアラインデータアクセスイベントをもたらすか否かを検出するインストゥルメンテーションを含んでよい。他の実施形態において、"ヘビーインストゥルメンテーション"は、例えば、実行することがミスアラインデータアクセスをもたらす１以上の命令を特定するインストゥルメンテーションを含む。いくつかの実施形態において、"ヘビーインストゥルメンテーション"を実行することは、例えば、実行することがミスアラインデータアクセスイベントをもたらす命令の位置の決定をもたらす。
【００２３】
いくつかの実施形態において、本実施形態で使用される"ミスアラインデータアクセスを検出すること"という語句は、例えば、変換されたコードブロックの実行または続く実行がミスアラインデータアクセス又はミスアラインデータアイテムへのアクセスを含むことを検出することを含む。いくつかの実施形態において、"ミスアラインデータアクセスを検出すること"という語句は、例えば、実行された場合に、ミスアラインデータアクセス又はミスアラインデータアイテムへのアクセスをもたらす命令の位置を検出することを、付加的に又は代替的に含む。
【００２４】
いくつかの実施形態において、本明細書で使用される"ミスアラインデータアクセスを処理"、"ミスアラインデータアクセスを回避"、及び／又は"ミスアラインデータアクセスを防止"という語句は、例えば、修正された変換されたコードブロックを生成すべく、変換されたコードブロックを修正すること、又は修正された変換されたコードブロックを生成すべく元のコードブロックを再び変換することを含む。いくつかの実施形態において、修正された変換されたコードブロックは、実行された場合に、ミスアラインデータアイテムに、修正されない変換されたコードブロックの実行の間における当該ミスアラインデータへの対応するアクセスに比べて、より効率的に、より高速に、より短い時間で、及び／又はより少量のプロセッシングサイクルを用いて、アクセスし得る。いくつかの実施形態において、"ミスアラインデータアクセスを処理"、"ミスアラインデータアクセスを回避"、及び／又は"ミスアラインデータアクセスを防止"は、例えば、ミスアラインデータアイテムに、複数に分けて、例えば、２、４、８、１６に分けて、又は他の適切な数に分けて、複数のアクセスステージで、複数のアクセス命令を用いて、複数のロード命令を用いて、１つの専用のコードシーケンス、例えば本明細書で詳説されるようなＣｏｄｅ１を用いて、又は本発明の実施形態に従う他の適切な方法を用いて、アクセスすることを含む。
【００２５】
いくつかの実施形態において、"ミスアラインデータアクセスを処理"、"ミスアラインデータアクセスを回避"、及び／又は"ミスアラインデータアクセスを防止"は、例えば、ミスアラインデータアクセスイベントを処理、回避、防止、及び／又は矯正する他の適切な方法を含む。例えば、"ミスアラインデータアクセスを処理"、"ミスアラインデータアクセスを回避"、及び／又は"ミスアラインデータアクセスを防止"は、例えば、データアイテムをアラインすること、データアイテムを第１メモリ位置から第２メモリ位置に移動すること、データアイテムを第１メモリ位置から第２メモリ位置にコピーすること、又は他の適切な方法によって、データアイテムのミスアラインメントを矯正することを含む。
【００２６】
ブロック２２０に示されるように、変換されたコードブロックに、ライトインストゥルメンテーション又は解析を行う。いくつかの実施形態において、実行がミスアラインデータアクセスを必要とする、実質的に全ての命令又は少なくともいくつかの命令が、ライトインストゥルメントされる。ライトインストゥルメンテーションは、例えば、修正された命令が、予め定められた条件の発生、又は予め定められた規則が合致した場合を示すよう、１以上の命令の修正を含む。例えば、いくつかの実施形態において、変換されたコードブロックにおいてミスアラインデータアクセスイベントが検出された場合に、１つのシグナルが生成される。一実施形態において、例えば、当該シグナル又はインジケーションは、トランスレータ１５０内の１つの検出モジュールによって、トランスレータ１５０内の１つの変換モジュールに提供される。
【００２７】
一実施形態において、ブロック２２０のライトインストゥルメンテーションの目的又は結果は、例えば、もしミスアラインデータアクセスイベントを処理、矯正、回避、又は防止することが必要とされる場合に、さらなる解析及び最適化オペレーションが適用できるように、変換されたコードブロックの実行がミスアラインデータアクセスイベントをもたらすか否かを検出することを含む。ブロック２３０で示されるように、方法は、ミスアラインデータアクセスイベントが、変換されたコードブロック内に検出されたか否かをチェックしてよい。そのチェックが否である場合、ブロック２７０に至る矢印２３５によって示されるように、変換されたコードブロックは維持及び／又は使用される。そのチェックが否である場合、ブロック２４０及び先に示されるように、変換されたコードブロックはさらに調査、解析、及び／又は最適化される。
【００２８】
さらなる調査、解析、及び最適化は、ブロック２４０に示されるように、変換されたコードブロックのヘビーインストゥルメンテーション又は解析を含む。いくつかの実施形態において、その実行がミスアラインデータアクセスを含む実質的に全ての命令が、ヘビーインストゥルメントされる。ヘビーインストゥルメンテーションは、例えば、ミスアラインデータアクセスイベントにおいて、ミスアラインデータアクセスについて情報が提供及び／又は登録されるよう１以上の命令の修正を含んでよい。いくつかの実施形態において、その情報は、例えば、ミスアラインデータアクセスをもたらす変換されたコードブロック内の命令又は複数の命令のインジケーションを含む。その情報は、例えば、ミスアラインデータアクセスのタイプまたはプロパティ、例えばミスアラインメントの粒度のインジケーションを含む。例えば一実施形態において、ミスアラインデータアクセスイベントをもたらす８ビットデータアクセスがヘビーインストゥルメントされて、ミスアラインデータアクセスが１バイト又は４バイトの粒度であることを示す。ミスアラインデータアクセスの種々の他のプロパティ、特性、属性、及び／又は特性が特定、検出、登録、及び／又は解析されてよい。
【００２９】
２５０に示されるように、ブロック２４０のヘビーインストゥルメンテーションは、命令レベルでのデータアクセスミスアラインメントの検出及び処理のために使用される。いくつかの実施形態において、ミスアラインデータアクセスをもたらすと検出された命令のいくつか或いは全て又は実質的に全ては、再生成、再変換、修正、最適化、及び／又は置換されて、データアクセスミスアラインメントを処理、矯正、回避、及び／又は防止し、ミスアラインデータアイテムに比較的より効率的にアクセスすることを可能にし、ミスアラインデータアイテムの比較的高速なアクセスを可能にし、又は、ミスアラインデータアイテムにアクセスする代替の又は適格な方法を用いることを可能にする。
【００３０】
一実施形態において、ブロック２５０で示された検出及び処理オペレーションは、例えば、ホットブロックの変換の間に行われてよい。例えば、ホットブロックが特定され、ブロック２５０で示される検出及び処理オペレーションは、ホットブロック内に含まれる１以上のコールドブロックに行われてよい。
【００３１】
いくつかの実施形態において、ブロック２５０で示される検出及び処理オペレーションは、例えば、以下の仮想コードを用いて行われてよい。
// test bit0 to see if address is 2-byte aligned.
// Predicates p.mis and p.al set appropriately. 
// Will use p.mis and p.al to predicate the following instructions
tbit p.mis,p.al     = r.addr, 0
// 2-byte load if aligned
(p.al)  ld2 r.val   = [r.addr]
// if misaligned, load each byte separately
(p.mis) ld1 r.val   = [r.addr]
(p.mis) add r.addrH = 1, r.addr
(p.mis) ld1 r.valH  = [r.addrH]
// combine the separately loaded bytes
(p.mis) dep r.val   = r.valH, r.val, 8, 8
Code 1
【００３２】
Ｃｏｄｅ１は具体的な目的のみのために提示され、本発明の実施形態はこの件に限定されず、Ｃｏｄｅ１に加えて又はＣｏｄｅ１の代わりに、他の適切な命令、命令セット、オペレーション、仮想コード、又はアルゴリズムが本発明の実施形態に従って使用され得ることが指摘される。
【００３３】
本発明のいくつかの実施形態において、例えば、ブロック２５０で示される検出及び処理オペレーションは、Ｃｏｄｅ１に対する多様な変更を含み得る代替のコードを使用してよい。いくつかの実施形態において、例えば、ミスアラインデータアクセスイベントの初期の検出の１以上の結果は、ミスアラインデータアクセスイベントの、結果として生ずる１又はいくつかの検出を強化及び／又は予防すべく、登録及び／又はトラッキングされてよい。例えば、一実施形態において、例えばホットブロックの解析を通じてミスアラインデータアクセスが検出されたメモリアドレスの位置が、登録及び／又はトラッキングされてよい。登録又はトラッキングは、例えば、適切なリスト、トラッキングリスト、スタック、ルックアップテーブル、配列、データベース、変数、レジスタ、共用体、又は他の適切な任意の方法を用いて行われてよい。以前の検出の登録、トラッキング、及び／又は記憶は、例えば、プロセッサ１４１、メモリユニット１４２、ストレージユニット１４３、トランスレータ１５０、プロセッサ１４１を用いて実行される適切なソフトウェア、及び／又はコンピューティングプラットフォーム１１０の他の適切なコンポーネントを用いて、行われてよい。
【００３４】
ブロック２５０で示される検出及び処理オペレーションにおいて、いくつかの実施形態は、例えば、第１の命令に対するインストゥルメンテーションを解析及び／又は実行してよい。結果として、例えば、第１命令によって第１メモリアドレスをアクセスすることがミスアラインデータアクセスをもたらすことが検出される。そのような場合、第１メモリアドレスの位置は、例えばメモリユニット１４２及び／又はストレージユニット１４３の中に記憶されるレジストリ又はトラッキングリストを例えば用いて、登録及び／又はトラッキングされてよい。第２命令が第２メモリアドレスをアクセスする必要がある場合、データミスアラインメント検出を目的として、本発明の方法は、第２メモリアドレスの位置が第１メモリアドレスの位置と同じであるか否かを、例えばメモリユニット１４２及び／又はストレージユニット１４３の中に記憶されるトラッキングリスト又はレジストリを用いてチェックしてよい。例えば、第１命令の解析が第１メモリアドレスをミスアラインデータアクセスの原因として既に特定している場合、肯定のチェック結果は、第２命令を解析及び／又はインストゥルメントする必要を取り除き得る。いくつかの実施形態において、データミスアラインメント検出について、異なるメモリアドレスも全く同様であることが指摘される。例えば第１及び第２メモリアドレスの間の差又は間隔がＮバイトである場合、データミスアラインメント検出を目的としては、第１及び第２メモリアドレスは、Ｎバイトのミスアラインメント及び／又はＮの因数であるＫバイトのミスアラインメントについて全く同様であり得る。例えば、一実施形態において、メモリアドレスＬ及びメモリアドレスＬ＋８は、８バイトのデータミスアラインメントを検出する目的として、或いは４バイト又は２バイトのデータミスアラインメントを検出する目的として、全く同様である。
【００３５】
同様に、いくつかの実施形態において、ブロック２５０で示される検出及び処理オペレーションを通じて、与えられたミスアラインデータアクセスの検出に使用されるパラメータ、属性、プロパティ、変数、特性、結果、チェック結果、及び／又は計算結果のいくつか又は全ては、後続の検出において使用又は再使用されてよい。例えば、Ｃｏｄｅ１の２バイトロードの例は、ミスアラインデータアクセスの１以上の以前の検出又は解析においてセット、決定、及び／又は計算された１以上の属性を使用し得る。
【００３６】
いくつかの実施形態において、ブロック２５０で示される検出及び処理オペレーションを行うことは、例えばミスアラインデータアクセスが検出された場合、例えばデータアクセスを実行するための１つのコードシーケンス又は命令のセットを使用することを含む。当該コードシーケンス又は命令のセットは比較的長いか比較的多数の命令又はオペレーションを含んでよい。いくつかの実施形態において、そのようなコードシーケンス又は命令のセットは、ソフトウェアアプリケーションの中の適切な位置に移されてよい。例えば、一実施形態において、スケジューラプロセスは、これらの命令のいくつか又は全てを、変換されたコードブロックの外部又はリモートの位置に、例えばサブルーチン、プロシージャ、関数、又は同種のものとして、移してよい。実行中、変換されたコードブロックの中の命令は、そのポイントで実行が外部又はリモートの命令に進み得る"分岐"命令に到達するまで実行されてよい。外部又はリモートの命令は、その実行が、変換されたコードブロックの実行が外部又はリモートの命令に"分岐された"ポイントから再開される実行をひき起こす最後の命令を含む。
【００３７】
ブロック２６０で示されるように、必要に応じて、いくつかの実施形態は、例えば、上記のオペレーションを終了した後又はホットブロックが変換された後に発生し得るミスアラインデータアクセスを検出及び処理すべく、変換されたコードブロックをさらに最適化又は解析してよい。例えば、一実施形態において、ミスアラインデータアクセスは、相対的に最適化された変換されたコードが生成された後に表れる場合がある。いくつかの実施形態において、その結果は、例えばブロック２５０で示される検出及び処理オペレーションとともに又は他の適切な時に使用されるさらなる最適化オペレーションを使用して、排除、処理、回避、又は緩和される。例えば、ブロック２５０で示されるオペレーションの間、１つの命令はミスアラインデータアクセスイベントを生成又はひき起こさないが、当該命令が、実行中にミスアラインデータアクセスをもたらす有力候補であることが検出される場合がある。そのような命令は、"候補命令"と呼ばれる。候補命令の特定、検出、分類、登録、及び／又は評価が、例えば１以上の適切な規則又は条件、例えば命令のタイプ、ミスアラインデータアクセスを命令がもたらす見込みの可能性、又はミスアラインデータアクセスを命令がもたらす著しい可能性の検出に関して実行されてよい。
【００３８】
本発明のいくつかの実施形態に従って、ブロック２６０で示されるオペレーションは、例えば候補命令を検出すると、候補命令に対するインストゥルメンテーションを実行することを、必要に応じて含んでよい。ミスアラインデータアクセスが、使用されたインストゥルメンテーションを用いて検出された場合、変換されたブロックは破棄されてよい。さらに、方法は、元のコードブロックが変換された場合に、元のコードブロックの中の実質的に全ての候補命令は、例えばＣｏｄｅ１又は任意の他の適切なコードシーケンスを用いて、ミスアラインデータアクセスを検出して処理するように変換されるインジケーションを登録してよい。登録されたインジケーションは、例えば、トランスレータ１５０、メモリユニット１４２、及び／又はストレージユニット１４３の中に記憶されてよい。いくつかの実施形態において、インジケーションは、候補命令だけでなく、候補命令のタイプの実質的に全ての命令にも関連してよい。元のコードブロックの変換において、登録されたインジケーションが検出又はトラッキングされ、そしてそれに応じて、元のコードブロックの中の実質的に全ての候補命令、又は元のコードブロックの中の候補命令のタイプの全ての命令が、例えばＣｏｄｅ１又は任意の他の適切なコードシーケンスを用いて、ミスアラインデータアクセスを検出して処理するように変換されてよい。
【００３９】
いくつかの実施形態において、上記の１以上のオペレーション、例えばブロック２４０のデータミスアラインメント検出及び処理オペレーション、ブロック２４０に関連して説明されたコード修正、又はブロック２６０の最適化オペレーションは、１以上の適切なソフトウェア及び／又はハードウェアコンポーネントによって実行されてよい。例えば、いくつかの実施形態において、コード修正は、トランスレータ１５０、或いはトランスレータ１５０の外部のモジュール又はコンポーネントによって実行されてよい。一実施形態において、コードの修正は、例えば、その修正がコード修正をひき起こし得るトランスレータ１５０の修正、或いは他の適切なコンポーネント又はモジュールの修正によって行われてよい。同様に、データミスアラインメントの検出及び／又は処理は、トランスレータ１５０によって、或いはトランスレータ１５０の内部又は外部にある１以上のモジュールによって実行されてよい。
【００４０】
本発明のいくつかの実施形態において、上記の１以上のオペレーション、例えば、ブロック２１０の変換オペレーション、ブロック２２０のライトインストゥルメンテーションオペレーション、ブロック２３０のデータミスアラインメントチェック、ブロック２４０のヘビーインストゥルメンテーションオペレーション、ブロック２５０のデータミスアラインメント検出及び処理オペレーション、ブロック２６０の最適化オペレーション、又は他の適切なオペレーションが繰り返される、或いは１度以上、又は多様なオペレーションの順番で実行されてよい。さらに、いくつかの実施形態において、１以上のこれらのオペレーションの結果として、変換されたコードブロックは破棄、削除、置換、調査、解析、修正、最適化、再生成、再生産、又は再変換されてよい。ブロック２７０で示されるように、上記の１以上又は全てのオペレーション、或いは上記の１以上のオペレーションの何度かのイタレーション又は繰り返しの後、結果として得られる変換されたコードブロックは保持及び使用されてよく、或いは保持されて使用され得る変換されたコードブロックとして登録されてよい。
【００４１】
本発明の実施形態は、多様な利益を与える。例えば、いくつかの実施形態において、データミスアラインメント検出及び処理は、プロセッシング時間及び／又はプロセッシング時間を著しく減少させ、パフォーマンスを著しく向上させ得る。一実施形態において、例えば、完了するのにデータミスアラインメント検出及び処理なしで約１２３６秒を要する作業負荷が、本発明の実施形態に従うデータミスアラインメント検出及び処理を用いて完了するのに約１３３秒しか要しない。本発明のいくつかの実施形態は、説明された利益に加えて又は代わりに、多様な他の利益を与える。
【００４２】
本発明のいくつかの実施形態は、例えば、装置、例えばコンピューティングプラットフォーム１１０、プロセッサ１４１、又は他の適切な機械によって実行された場合に、機械に、本発明の実施形態に従う方法及び／又はオペレーションを実行させる命令又は命令のセットを記憶する機械可読メディア又は製品を用いて実装されてよい。そのような機械は、例えば、任意の適切なプロセッシングプラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、プロセッシングデバイス、コンピューティングシステム、プロセッシングシステム、コンピュータ、プロセッサ、又は同種のものを含んでよく、ハードウェア及び／又はソフトウェアの任意の適切な組合せを用いて実装されてよい。機械可読メディア又は製品は、例えば、任意のタイプのメモリユニット（例えば、メモリユニット１４２）、メモリデバイス、メモリ製品、メモリメディア、ストレージデバイス、ストレージ製品、ストレージメディア及び／又はストレージユニット（例えば、ストレージユニット１４３）、例えば、メモリ、リムーバブル又はノンリムーバブルメディア、消去可能又は消去不可能なメディア、書き込み可能又は再書き込み不可能なメディア、デジタル又はアナログメディア、ハードディスク、フレキシブルディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクレコーダブル（ＣＤ−Ｒ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、光ディスク、磁気メディア、種々のタイプのデジタル多目的ディスク（ＤＶＤ）、テープ、カセット、或いは同種のものを含んでよい。命令は、任意の適切なタイプのコード、例えば、ソースコード、コンパイル済みコード、インタープリタコード、実行コード、静的コード、動的コード、又は同種のものを含んでよく、任意の適切な高レベル、低レベル、オブジェクト指向、視覚的、コンパイル型、及び／又はインタープリタ型プログラミング言語、例えば、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、ＢＡＳＩＣ、Ｐａｓｃａｌ、Ｆｏｒｔｒａｎ、Ｃｏｂｏｌ、アッセンブリ言語、マシンコード、又は同種のものを用いて実装されてよい。
【００４３】
本発明のいくつかの実施形態は、特定の用途又は特定の設計要件に適するように、ソフトウェア、ハードウェア、又はソフトウェア及び／又はハードウェアの任意の組合せによって実装されてよい。本発明の実施形態は、全体的に又は部分的に、互いに切り離された、又は互いに一体化された複数のユニット及び／又は複数のサブユニットを含んでよく、技術的に知られたように、特定の、多目的の、又は汎用のプロセッサ又はデバイスを用いて実装されてよい。本発明のいくつかの実施形態は、データの一時的又は長期記憶のため、又は具体的な実施形態のオペレーションを促進すべく、複数のバッファ、複数のレジスタ、複数のストレージユニット、及び／又は複数のメモリユニットを含んでよい。
【００４４】
本発明のいくつかの機能が本明細書に示され及び説明されたが、多くの変更、置き換え、改変、及び／又は均等物が、当業者に考えられる。したがって、添付の請求項は、全てのそのような変更及び／又は改変を含むことが意図されていることが理解されるべきである。
【図１】
2007513412.tif 000003
【図２】
2007513412.tif 000004
【国際調査報告】
2007513412.tif 000005
2007513412.tif 000006