JP2009282990A - ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法 - Google Patents

ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法 Download PDF

Info

Publication number
JP2009282990A
JP2009282990A JP2009149905A JP2009149905A JP2009282990A JP 2009282990 A JP2009282990 A JP 2009282990A JP 2009149905 A JP2009149905 A JP 2009149905A JP 2009149905 A JP2009149905 A JP 2009149905A JP 2009282990 A JP2009282990 A JP 2009282990A
Authority
JP
Japan
Prior art keywords
code block
data access
misaligned data
instruction
processor
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.)
Granted
Application number
JP2009149905A
Other languages
English (en)
Other versions
JP5404204B2 (ja
Inventor
Harold Theodore Devor
デボアー、ハロルド、シオドー
Orna Etzion
エトジォン、オルナ
Jian-Ping Chen
チェン、ジャン−ピン
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2009282990A publication Critical patent/JP2009282990A/ja
Application granted granted Critical
Publication of JP5404204B2 publication Critical patent/JP5404204B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】ミスアラインデータアクセス及びデータミスアラインメントに関連する問題を解決する。
【解決手段】ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法。方法は、例えば、第1コンピューティングプラットフォームに適した第1フォーマットから第2コンピューティングプラットフォームに適した第2フォーマットに変換されたコードブロックの実行がもたらすミスアラインデータアクセスを検出する段階と、前記ミスアラインデータアクセスに従って前記コードブロックを修正する段階とを備える。
【選択図】図2

Description

コンピューティングプラットフォームの分野において、ソフトウェアアプリケーションは元々、第1のコンピューティングプラットフォーム、例えば32ビットベースのコンピューティングプラットフォーム、例えばIntel(登録商標)アーキテクチャ32(IA−32)によって実行されるべく記述される。いくつかのケースにおいて、ソフトウェアアプリケーションを変換して実行する適切なハードウェア及び/又はソフトウェアを用いて、第2のコンピューティングプラットフォーム、例えば64ビットベースのコンピューティングプラットフォーム、例えばIntel(登録商標)Itanium(登録商標)プロセッサ上で、そのソフトウェアアプリケーションを実行することが可能である。
第2のコンピューティングプラットフォーム上でのソフトウェアアプリケーションの変換又は実行の間、ミスアラインデータアクセス及びデータミスアラインメントに関連する問題が生じる場合がある。データミスアラインメントは、例えば、プロセッサによって効率的にアクセスされ得ない1つのメモリアドレスに存在するデータアイテムを含む。第2コンピューティングプラットフォームがミスアラインデータアイテムにアクセスしようとした場合に、望ましくないオーバーヘッド、例えば追加のプロセッシングサイクル又はプロセッシング時間が必要となり得る。いくつかのケースにおいて、第2コンピューティングプラットフォーム上でのソフトウェアアプリケーションの実行は、例えば、ソフトウェアアプリケーションが第1(すなわち、元の)コンピューティングプラットフォームによって実行された場合にも生じ得るデータミスアラインメントにより、既存のプラットフォーム問題を悪化及び増大させる。これはパフォーマンス速度を著しく低下させ、プロセッシング時間及び/又はプロセッシングサイクルの数を著しく増加させ得る。その上、いくつかのケースにおいて、ミスアラインデータアクセスイベントは、例えば第2コンピューティングプラットフォーム上で動作するアプリケーションによって又はオペレーティングシステムによってエラーとして扱われ、その結果、アプリケーションの早期の終了又は他の望ましくない結果をもたらす。
データミスアラインメントアクセス問題は、ミスアラインデータアクセスイベントをもたらすそれぞれの命令を置き換える比較的長いコードシーケンスを用いて、部分的に緩和され得る。しかしながら、全てのデータミスアラインメントアクセス問題を防ぐためのそのような長いコードシーケンスのアプリケーション体は非効率的であり、著しいオーバーヘッド、例えば追加のプロセッシングサイクル及び/又はプロセッシング時間を招く。
本発明に関する主題は、明細書の結びの部分に特に示され、明確に請求される。本発明は、一方で、添付の図面とともに読まれた場合に、以下の詳細な説明を参照することにより、それらの特徴及び利点とともに構成及びオペレーション方法の両方について最も良く理解されるだろう。
本発明のいくつかの実施形態に係る、データミスアラインメントを検出及び処理することができるコンピューティングプラットフォームの概略図である。
本発明のいくつかの実施形態に係る、データミスアラインメントを検出及び処理する方法のフローチャートの概略である。
説明の簡単さ及び明確さを目的として、図面に示される構成要素は必ずしも縮尺どおりに描かれる必要がないことが理解されるだろう。例えば、明確さを目的として、いくつかの構成要素の大きさが、他の構成要素に比較して誇張される。さらに、適切である場合には、対応する又は同様の構成要素を示すべく、参照番号が複数の図面にわたって繰り返される。
以下の詳細な説明において、本発明の包括的な理解を提供することを目的として、多くの具体的な細部が説明される。しかしながら、本発明は、これらの具体的な細部なしで実施され得ることが当業者に理解されるだろう。他のケースでは、本発明を不明瞭にしないよう、よく知られた方法、手順、構成要素、ユニット、及び/又は回路は、詳細には説明されない。
図1は、本発明の典型的な実施形態に係る、データミスアラインメントを検出及び処理することができるコンピューティングプラットフォーム110を概略的に示す。コンピューティングプラットフォーム110は、例えば、データプロセッシング又は種々のソフトウェアアプリケーションの実行のために使用され、本発明のいくつかの実施形態に係るミスアラインデータアクセスの検出及び/又は処理を実装する。コンピューティングプラットフォーム110は、1つのコンピューティングデバイスを備える。例えば、コンピューティングプラットフォーム110は、パーソナルコンピュータ、デスクトップコンピュータ、モバイルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、端末、ワークステーション、サーバコンピュータ、携帯情報端末(PDA)、タブレットコンピュータ、特化された又は専用のコンピューティングデバイス、ネットワークデバイス、又は類似のものの一部を少なくとも含んでよい。コンピューティングプラットフォーム110は、ハードウェアコンポーネント及び/又はソフトウェアコンポーネントの任意の適切な組合せを用いて実装される。
図1に示された例において、コンピューティングプラットフォーム110は、例えば、1以上のプロセッサ141、1以上のメモリユニット142、1以上のストレージユニット143、1つの出力ユニット144、及び1つの入力ユニット145を備える。コンピューティングプラットフォーム110は、コンピューティングプラットフォーム110の1以上のコンポーネントに動作可能に連携する、技術的に知られた他の適切なコンポーネント又はコンポーネントセットを備えてよい。
プロセッサ141は、例えば、1つの中央処理装置(CPU)、1つのデジタルシグナルプロセッサ(DSP)、1以上のコントローラ、或いは任意の適切な特定用途及び/又は汎用及び/又は多目的のプロセッサ又はマイクロプロセッサ或いはコントローラを含む。メモリユニット142は、例えば、ランダムアクセスメモリ(RAM)、読み出し専用メモリ、ダイナミックRAM(DRAM)、シンクロナスDRAM(SD−RAM)、又は他の適切なメモリユニットを含む。ストレージユニット143は、例えば、ハードディスクドライブ、フレキシブルディスクドライブ、コンパクトディスク(CD)ドライブ、CD−ROMドライブ、或いは他の適切なリムーバブル又は非リムーバブルなストレージユニット又はメモリモジュールを含む。出力ユニット144は、例えば、1以上のカード、アダプタ、コネクタ、及び/又はモニタに接続可能又はモニタと通信可能なコンポーネントを含む。入力ユニット145は、例えば、1以上のカード、アダプタ、コネクタ、及び/又はキーボード、マウス、又はタッチパッドに接続可能又はキーボード、マウス、又はタッチパッドと通信可能なコンポーネントを含む。メモリユニット142、ストレージユニット143、出力ユニット144、及び/又は入力ユニット145は、プロセッサ141と動作的に関連する。技術的に知られたように、プロセッサ141、メモリユニット142、ストレージユニット143、出力ユニット144、及び/又は入力ユニット145は、他の適切なコンポーネント及び/又は実装を有してよい。
いくつかの実施形態において、ソフトウェアは、例えばストレージユニット143又はメモリユニット142内に記憶されてよく、プロセッサ141を用いて実行されてよい。そのようなソフトウェアは、例えば、1以上のオペレーティングシステム、例えば、Microsoft Windows(登録商標)、Linux、Unix(登録商標)、Apple OS、Solaris、Sun−OS、HP−UX、又は他の適切なオペレーティングシステムを含んでよい。ソフトウェアはさらに、1以上のソフトウェアアプリケーション、1以上のドライバ、コンパイラ、インタープリタ、エミュレータ、実行レイヤ、ソフトウェア環境、管理されたソフトウェア環境、トレーションレイヤ、及び/又は種々の他の適切なソフトウェアコンポーネントを含んでよい。ソフトウェアは、例えば、ソフトウェアコンポーネント、ソフトウェアアプリケーション、及び/又は本発明の実施形態に従う1以上の方法を実装または使用するソフトウェアレイヤ、及び/又は他の適切なソフトウェアコンポーネントを含んでよい。いくつかの実施形態において、ソフトウェア及び/又はメモリユニット142は、1以上のミスアラインデータアイテム、例えば、メモリユニット142内の、プロセッサ141によって効率的にアクセスされ得ないメモリアドレスにあるデータアイテムを含んでよい。
いくつかの実施形態において、コンピューティングプラットフォーム110は、場合によっては、ソフトウェアコンポーネント及び/又はハードウェアコンポーネントの任意の適切な組合せを用いて実装されるトランスレータ150を含んでよい。例えば、一実施形態において、トランスレータ150は、メモリユニット142及び/又はストレージユニット143内に記憶された、プロセッサ141を用いて起動又は実行されるソフトウェア及び/又は命令を含んでよい。いくつかの実施形態において、トランスレータ150は、ソフトウェアアプリケーション又は1以上の命令を、第1コンピューティングプラットフォームに適合する第1フォーマットから第2コンピューティングプラットフォームに適合する、例えばコンピューティングプラットフォーム110に適合する第2フォーマットに変換及び/又は変換してよい。一実施形態において、トランスレータ150は、例えば、専用ソフトウェアレイヤ、例えば1つの実行レイヤを用いて実装され得る。いくつかの実施形態において、トランスレータ150は、本発明の実施形態に従う、ミスアラインデータアクセスを検出及び処理する1以上のオペレーションを実行する1以上のモジュール又はコンポーネント(図示せず)、例えば、1つの検出モジュール、1つのインストゥルメンテーションモジュール、1つのライトインストゥルメンテーションモジュール、ヘビーインストゥルメンテーションモジュール、1つの変換モジュール、1つの再変換モジュール、1つの最適化モジュール、1つのコード修正モジュール、1つのコード分類モジュール、又は類似のものを含んでよい。
いくつかの実施形態において、トランスレータ150は、以下に説明するように、データミスアラインメントを検出及び/又は処理してよい。例えば、トランスレータ150によって又はトランスレータ150に従って実行される命令又はオペレーションは、本発明のいくつかの実施形態に従う、以下に説明されるようなデータミスアラインメントの検出及び処理の典型的な方法からもたらされる修正を含む修正された変換プロセスを反映する。例えば、本発明のいくつかの実施形態において、トランスレータ150は、以下に説明するように、データミスアラインメントに関連するパラメータを考慮する変換方法又は手順を実装してよい。
図2は、本発明のいくつかの実施形態に係る、データミスアラインメントを検出及び処理する一フローチャートを概略的に示す。図2の方法は、本発明の他の実施形態に係る方法とともに、例えば図1のコンピューティングプラットフォーム110とともに、トランスレータ150、プロセッサ141、コンピューティングプラットフォーム110によって実行されるソフトウェア又は命令によって、及び/又は他の適切なコンピューティングプラットフォーム、デバイス、装置、及び/又はシステムとともに使用される。いくつかの実施形態において、図2の方法は、適切なソフトウェアコンポーネント及び/又はハードウェアコンポーネントを用いて実装される、1つのコンパイラ、1つのインタープリタ、及び/又は1つのエミュレータによって使用される。
本明細書において使用される"コードのブロック"及び/又は"コードブロック"という語句は、例えば、1以上の命令又は命令セットを含んでよいことが注意される。例えば、1つのコードブロックは、5個の命令、又は20個の命令等を含んでよい。
本発明のいくつかの実施形態に従って、"ホットブロック"は、例えば、最適化のため又はさらなる最適化オペレーションのための1つの候補として特定及び/又は分類された1つのコードブロックを含んでよい。例えば、ソフトウェアアプリケーションの実行の間に複数回、例えば多数回実行されるコードブロックが、1つのホットブロックとして特定及び/又は分類され得る。他の適切な規則又は条件が、1つのホットブロックを特定、分類、及び/又は定義すべく使用されてよい。
本発明のいくつかの実施形態に従って、"コールドブロック"は、例えば、ホットブロックとして特定及び/又は分類されない1つのコードブロックを含んでよい。例えば、コールドブロックは、ソフトウェアアプリケーションの実行の間に1回だけ又は少数回実行されるコードブロックを含んでよい。いくつかの実施形態において、例えば、コードブロックは、初期の変換オペレーションの間にコールドブロックとして特定及び/又は分類され、さらなる変換及び/又は最適化オペレーションの間にホットブロックとして再び分類されてよいことが注意される。
ブロック210で示されるように、この方法は、1つのアプリケーションソフトウェアの1つのコードブロックを、第1コンピューティングプラットフォームに適合した第1フォーマットから、第2コンピューティングプラットフォームに変換又はコンバートしてよい。第1フォーマットにおけるコードブロックは、"元のコードブロック"と呼ばれ、第2フォーマットにおけるコードブロックは"変換されたコードブロック"として呼ばれる。いくつかの実施形態において、例えば、1つのコードブロックは、Intel(登録商標)アーキテクチャ32(IA−32)からIntel(登録商標)アーキテクチャ64(IA−64)に変換され得る。変換は、例えば、トランスレータ150を用いて行われてよい。一実施形態において、当該変換は、1つのコンパイラソフトウェア又は1つのインタープリタソフトウェアを用いて行われてよい。変換は、例えば、動的及び/又はリアルタイムに、例えば実質的に実行時に又は実行時の近くで行われてよい。いくつかの実施形態において、変換は、予め、例えば実行時に先立って、行われてよい。
本明細書で説明されるように、本発明の方法の実施形態は、複数のインストゥルメンテーションオペレーションを含んでよい。本発明のいくつかの実施形態に従って、インストゥルメンテーションは、例えば、コードブロック又は命令の振る舞い又はオペレーションをトラッキング、診断、デバッグ、及び/又は解析することを目的として、1以上の命令をあるコードブロック又はある命令に追加することを含む。
本明細書で使用される"ライトインストゥルメンテーション"という語句は、例えば、一コードブロックのレベルで行われるインストゥルメンテーションを含む。一実施形態において、例えば、"ライトインストゥルメンテーション"は、1つのコードブロックの実行がミスアラインデータアクセスをひき起こすか否か、又は1つのコードブロックの実行が、ミスアラインデータアクセスイベントをもたらすか否かを検出するインストゥルメンテーションを含んでよい。いくつかの実施形態において、"ライトインストゥルメンテーション"を実行することは、例えば、与えられたコードブロックの実行がミスアラインデータアクセスイベントを含むか否かを決定することをもたらす。
本明細書で使用される"ヘビーインストゥルメンテーション"という語句は、例えば、一命令のレベルで行われるインストゥルメンテーションを含む。一実施形態において、例えば、"ヘビーインストゥルメンテーション"は、1つの命令の実行がミスアラインデータアクセスをひき起こすか否か、又は1つの命令の実行がミスアラインデータアクセスイベントをもたらすか否かを検出するインストゥルメンテーションを含んでよい。他の実施形態において、"ヘビーインストゥルメンテーション"は、例えば、実行することがミスアラインデータアクセスをもたらす1以上の命令を特定するインストゥルメンテーションを含む。いくつかの実施形態において、"ヘビーインストゥルメンテーション"を実行することは、例えば、実行することがミスアラインデータアクセスイベントをもたらす命令の位置の決定をもたらす。
いくつかの実施形態において、本実施形態で使用される"ミスアラインデータアクセスを検出すること"という語句は、例えば、変換されたコードブロックの実行または続く実行がミスアラインデータアクセス又はミスアラインデータアイテムへのアクセスを含むことを検出することを含む。いくつかの実施形態において、"ミスアラインデータアクセスを検出すること"という語句は、例えば、実行された場合に、ミスアラインデータアクセス又はミスアラインデータアイテムへのアクセスをもたらす命令の位置を検出することを、付加的に又は代替的に含む。
いくつかの実施形態において、本明細書で使用される"ミスアラインデータアクセスを処理"、"ミスアラインデータアクセスを回避"、及び/又は"ミスアラインデータアクセスを防止"という語句は、例えば、修正された変換されたコードブロックを生成すべく、変換されたコードブロックを修正すること、又は修正された変換されたコードブロックを生成すべく元のコードブロックを再び変換することを含む。いくつかの実施形態において、修正された変換されたコードブロックは、実行された場合に、ミスアラインデータアイテムに、修正されない変換されたコードブロックの実行の間における当該ミスアラインデータへの対応するアクセスに比べて、より効率的に、より高速に、より短い時間で、及び/又はより少量のプロセッシングサイクルを用いて、アクセスし得る。いくつかの実施形態において、"ミスアラインデータアクセスを処理"、"ミスアラインデータアクセスを回避"、及び/又は"ミスアラインデータアクセスを防止"は、例えば、ミスアラインデータアイテムに、複数に分けて、例えば、2、4、8、16に分けて、又は他の適切な数に分けて、複数のアクセスステージで、複数のアクセス命令を用いて、複数のロード命令を用いて、1つの専用のコードシーケンス、例えば本明細書で詳説されるようなCode1を用いて、又は本発明の実施形態に従う他の適切な方法を用いて、アクセスすることを含む。
いくつかの実施形態において、"ミスアラインデータアクセスを処理"、"ミスアラインデータアクセスを回避"、及び/又は"ミスアラインデータアクセスを防止"は、例えば、ミスアラインデータアクセスイベントを処理、回避、防止、及び/又は矯正する他の適切な方法を含む。例えば、"ミスアラインデータアクセスを処理"、"ミスアラインデータアクセスを回避"、及び/又は"ミスアラインデータアクセスを防止"は、例えば、データアイテムをアラインすること、データアイテムを第1メモリ位置から第2メモリ位置に移動すること、データアイテムを第1メモリ位置から第2メモリ位置にコピーすること、又は他の適切な方法によって、データアイテムのミスアラインメントを矯正することを含む。
ブロック220に示されるように、変換されたコードブロックに、ライトインストゥルメンテーション又は解析を行う。いくつかの実施形態において、実行がミスアラインデータアクセスを必要とする、実質的に全ての命令又は少なくともいくつかの命令が、ライトインストゥルメントされる。ライトインストゥルメンテーションは、例えば、修正された命令が、予め定められた条件の発生、又は予め定められた規則が合致した場合を示すよう、1以上の命令の修正を含む。例えば、いくつかの実施形態において、変換されたコードブロックにおいてミスアラインデータアクセスイベントが検出された場合に、1つのシグナルが生成される。一実施形態において、例えば、当該シグナル又はインジケーションは、トランスレータ150内の1つの検出モジュールによって、トランスレータ150内の1つの変換モジュールに提供される。
一実施形態において、ブロック220のライトインストゥルメンテーションの目的又は結果は、例えば、もしミスアラインデータアクセスイベントを処理、矯正、回避、又は防止することが必要とされる場合に、さらなる解析及び最適化オペレーションが適用できるように、変換されたコードブロックの実行がミスアラインデータアクセスイベントをもたらすか否かを検出することを含む。ブロック230で示されるように、方法は、ミスアラインデータアクセスイベントが、変換されたコードブロック内に検出されたか否かをチェックしてよい。そのチェックが否である場合、ブロック270に至る矢印235によって示されるように、変換されたコードブロックは維持及び/又は使用される。そのチェックが否である場合、ブロック240及び先に示されるように、変換されたコードブロックはさらに調査、解析、及び/又は最適化される。
さらなる調査、解析、及び最適化は、ブロック240に示されるように、変換されたコードブロックのヘビーインストゥルメンテーション又は解析を含む。いくつかの実施形態において、その実行がミスアラインデータアクセスを含む実質的に全ての命令が、ヘビーインストゥルメントされる。ヘビーインストゥルメンテーションは、例えば、ミスアラインデータアクセスイベントにおいて、ミスアラインデータアクセスについて情報が提供及び/又は登録されるよう1以上の命令の修正を含んでよい。いくつかの実施形態において、その情報は、例えば、ミスアラインデータアクセスをもたらす変換されたコードブロック内の命令又は複数の命令のインジケーションを含む。その情報は、例えば、ミスアラインデータアクセスのタイプまたはプロパティ、例えばミスアラインメントの粒度のインジケーションを含む。例えば一実施形態において、ミスアラインデータアクセスイベントをもたらす8ビットデータアクセスがヘビーインストゥルメントされて、ミスアラインデータアクセスが1バイト又は4バイトの粒度であることを示す。ミスアラインデータアクセスの種々の他のプロパティ、特性、属性、及び/又は特性が特定、検出、登録、及び/又は解析されてよい。
250に示されるように、ブロック240のヘビーインストゥルメンテーションは、命令レベルでのデータアクセスミスアラインメントの検出及び処理のために使用される。いくつかの実施形態において、ミスアラインデータアクセスをもたらすと検出された命令のいくつか或いは全て又は実質的に全ては、再生成、再変換、修正、最適化、及び/又は置換されて、データアクセスミスアラインメントを処理、矯正、回避、及び/又は防止し、ミスアラインデータアイテムに比較的より効率的にアクセスすることを可能にし、ミスアラインデータアイテムの比較的高速なアクセスを可能にし、又は、ミスアラインデータアイテムにアクセスする代替の又は適格な方法を用いることを可能にする。
一実施形態において、ブロック250で示された検出及び処理オペレーションは、例えば、ホットブロックの変換の間に行われてよい。例えば、ホットブロックが特定され、ブロック250で示される検出及び処理オペレーションは、ホットブロック内に含まれる1以上のコールドブロックに行われてよい。
いくつかの実施形態において、ブロック250で示される検出及び処理オペレーションは、例えば、以下の仮想コードを用いて行われてよい。
// 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
Code1は具体的な目的のみのために提示され、本発明の実施形態はこの件に限定されず、Code1に加えて又はCode1の代わりに、他の適切な命令、命令セット、オペレーション、仮想コード、又はアルゴリズムが本発明の実施形態に従って使用され得ることが指摘される。
本発明のいくつかの実施形態において、例えば、ブロック250で示される検出及び処理オペレーションは、Code1に対する多様な変更を含み得る代替のコードを使用してよい。いくつかの実施形態において、例えば、ミスアラインデータアクセスイベントの初期の検出の1以上の結果は、ミスアラインデータアクセスイベントの、結果として生ずる1又はいくつかの検出を強化及び/又は予防すべく、登録及び/又はトラッキングされてよい。例えば、一実施形態において、例えばホットブロックの解析を通じてミスアラインデータアクセスが検出されたメモリアドレスの位置が、登録及び/又はトラッキングされてよい。登録又はトラッキングは、例えば、適切なリスト、トラッキングリスト、スタック、ルックアップテーブル、配列、データベース、変数、レジスタ、共用体、又は他の適切な任意の方法を用いて行われてよい。以前の検出の登録、トラッキング、及び/又は記憶は、例えば、プロセッサ141、メモリユニット142、ストレージユニット143、トランスレータ150、プロセッサ141を用いて実行される適切なソフトウェア、及び/又はコンピューティングプラットフォーム110の他の適切なコンポーネントを用いて、行われてよい。
ブロック250で示される検出及び処理オペレーションにおいて、いくつかの実施形態は、例えば、第1の命令に対するインストゥルメンテーションを解析及び/又は実行してよい。結果として、例えば、第1命令によって第1メモリアドレスをアクセスすることがミスアラインデータアクセスをもたらすことが検出される。そのような場合、第1メモリアドレスの位置は、例えばメモリユニット142及び/又はストレージユニット143の中に記憶されるレジストリ又はトラッキングリストを例えば用いて、登録及び/又はトラッキングされてよい。第2命令が第2メモリアドレスをアクセスする必要がある場合、データミスアラインメント検出を目的として、本発明の方法は、第2メモリアドレスの位置が第1メモリアドレスの位置と同じであるか否かを、例えばメモリユニット142及び/又はストレージユニット143の中に記憶されるトラッキングリスト又はレジストリを用いてチェックしてよい。例えば、第1命令の解析が第1メモリアドレスをミスアラインデータアクセスの原因として既に特定している場合、肯定のチェック結果は、第2命令を解析及び/又はインストゥルメントする必要を取り除き得る。いくつかの実施形態において、データミスアラインメント検出について、異なるメモリアドレスも全く同様であることが指摘される。例えば第1及び第2メモリアドレスの間の差又は間隔がNバイトである場合、データミスアラインメント検出を目的としては、第1及び第2メモリアドレスは、Nバイトのミスアラインメント及び/又はNの因数であるKバイトのミスアラインメントについて全く同様であり得る。例えば、一実施形態において、メモリアドレスL及びメモリアドレスL+8は、8バイトのデータミスアラインメントを検出する目的として、或いは4バイト又は2バイトのデータミスアラインメントを検出する目的として、全く同様である。
同様に、いくつかの実施形態において、ブロック250で示される検出及び処理オペレーションを通じて、与えられたミスアラインデータアクセスの検出に使用されるパラメータ、属性、プロパティ、変数、特性、結果、チェック結果、及び/又は計算結果のいくつか又は全ては、後続の検出において使用又は再使用されてよい。例えば、Code1の2バイトロードの例は、ミスアラインデータアクセスの1以上の以前の検出又は解析においてセット、決定、及び/又は計算された1以上の属性を使用し得る。
いくつかの実施形態において、ブロック250で示される検出及び処理オペレーションを行うことは、例えばミスアラインデータアクセスが検出された場合、例えばデータアクセスを実行するための1つのコードシーケンス又は命令のセットを使用することを含む。当該コードシーケンス又は命令のセットは比較的長いか比較的多数の命令又はオペレーションを含んでよい。いくつかの実施形態において、そのようなコードシーケンス又は命令のセットは、ソフトウェアアプリケーションの中の適切な位置に移されてよい。例えば、一実施形態において、スケジューラプロセスは、これらの命令のいくつか又は全てを、変換されたコードブロックの外部又はリモートの位置に、例えばサブルーチン、プロシージャ、関数、又は同種のものとして、移してよい。実行中、変換されたコードブロックの中の命令は、そのポイントで実行が外部又はリモートの命令に進み得る"分岐"命令に到達するまで実行されてよい。外部又はリモートの命令は、その実行が、変換されたコードブロックの実行が外部又はリモートの命令に"分岐された"ポイントから再開される実行をひき起こす最後の命令を含む。
ブロック260で示されるように、必要に応じて、いくつかの実施形態は、例えば、上記のオペレーションを終了した後又はホットブロックが変換された後に発生し得るミスアラインデータアクセスを検出及び処理すべく、変換されたコードブロックをさらに最適化又は解析してよい。例えば、一実施形態において、ミスアラインデータアクセスは、相対的に最適化された変換されたコードが生成された後に表れる場合がある。いくつかの実施形態において、その結果は、例えばブロック250で示される検出及び処理オペレーションとともに又は他の適切な時に使用されるさらなる最適化オペレーションを使用して、排除、処理、回避、又は緩和される。例えば、ブロック250で示されるオペレーションの間、1つの命令はミスアラインデータアクセスイベントを生成又はひき起こさないが、当該命令が、実行中にミスアラインデータアクセスをもたらす有力候補であることが検出される場合がある。そのような命令は、"候補命令"と呼ばれる。候補命令の特定、検出、分類、登録、及び/又は評価が、例えば1以上の適切な規則又は条件、例えば命令のタイプ、ミスアラインデータアクセスを命令がもたらす見込みの可能性、又はミスアラインデータアクセスを命令がもたらす著しい可能性の検出に関して実行されてよい。
本発明のいくつかの実施形態に従って、ブロック260で示されるオペレーションは、例えば候補命令を検出すると、候補命令に対するインストゥルメンテーションを実行することを、必要に応じて含んでよい。ミスアラインデータアクセスが、使用されたインストゥルメンテーションを用いて検出された場合、変換されたブロックは破棄されてよい。さらに、方法は、元のコードブロックが変換された場合に、元のコードブロックの中の実質的に全ての候補命令は、例えばCode1又は任意の他の適切なコードシーケンスを用いて、ミスアラインデータアクセスを検出して処理するように変換されるインジケーションを登録してよい。登録されたインジケーションは、例えば、トランスレータ150、メモリユニット142、及び/又はストレージユニット143の中に記憶されてよい。いくつかの実施形態において、インジケーションは、候補命令だけでなく、候補命令のタイプの実質的に全ての命令にも関連してよい。元のコードブロックの変換において、登録されたインジケーションが検出又はトラッキングされ、そしてそれに応じて、元のコードブロックの中の実質的に全ての候補命令、又は元のコードブロックの中の候補命令のタイプの全ての命令が、例えばCode1又は任意の他の適切なコードシーケンスを用いて、ミスアラインデータアクセスを検出して処理するように変換されてよい。
いくつかの実施形態において、上記の1以上のオペレーション、例えばブロック240のデータミスアラインメント検出及び処理オペレーション、ブロック240に関連して説明されたコード修正、又はブロック260の最適化オペレーションは、1以上の適切なソフトウェア及び/又はハードウェアコンポーネントによって実行されてよい。例えば、いくつかの実施形態において、コード修正は、トランスレータ150、或いはトランスレータ150の外部のモジュール又はコンポーネントによって実行されてよい。一実施形態において、コードの修正は、例えば、その修正がコード修正をひき起こし得るトランスレータ150の修正、或いは他の適切なコンポーネント又はモジュールの修正によって行われてよい。同様に、データミスアラインメントの検出及び/又は処理は、トランスレータ150によって、或いはトランスレータ150の内部又は外部にある1以上のモジュールによって実行されてよい。
本発明のいくつかの実施形態において、上記の1以上のオペレーション、例えば、ブロック210の変換オペレーション、ブロック220のライトインストゥルメンテーションオペレーション、ブロック230のデータミスアラインメントチェック、ブロック240のヘビーインストゥルメンテーションオペレーション、ブロック250のデータミスアラインメント検出及び処理オペレーション、ブロック260の最適化オペレーション、又は他の適切なオペレーションが繰り返される、或いは1度以上、又は多様なオペレーションの順番で実行されてよい。さらに、いくつかの実施形態において、1以上のこれらのオペレーションの結果として、変換されたコードブロックは破棄、削除、置換、調査、解析、修正、最適化、再生成、再生産、又は再変換されてよい。ブロック270で示されるように、上記の1以上又は全てのオペレーション、或いは上記の1以上のオペレーションの何度かのイタレーション又は繰り返しの後、結果として得られる変換されたコードブロックは保持及び使用されてよく、或いは保持されて使用され得る変換されたコードブロックとして登録されてよい。
本発明の実施形態は、多様な利益を与える。例えば、いくつかの実施形態において、データミスアラインメント検出及び処理は、プロセッシング時間及び/又はプロセッシング時間を著しく減少させ、パフォーマンスを著しく向上させ得る。一実施形態において、例えば、完了するのにデータミスアラインメント検出及び処理なしで約1236秒を要する作業負荷が、本発明の実施形態に従うデータミスアラインメント検出及び処理を用いて完了するのに約133秒しか要しない。本発明のいくつかの実施形態は、説明された利益に加えて又は代わりに、多様な他の利益を与える。
本発明のいくつかの実施形態は、例えば、装置、例えばコンピューティングプラットフォーム110、プロセッサ141、又は他の適切な機械によって実行された場合に、機械に、本発明の実施形態に従う方法及び/又はオペレーションを実行させる命令又は命令のセットを記憶する機械可読メディア又は製品を用いて実装されてよい。そのような機械は、例えば、任意の適切なプロセッシングプラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、プロセッシングデバイス、コンピューティングシステム、プロセッシングシステム、コンピュータ、プロセッサ、又は同種のものを含んでよく、ハードウェア及び/又はソフトウェアの任意の適切な組合せを用いて実装されてよい。機械可読メディア又は製品は、例えば、任意のタイプのメモリユニット(例えば、メモリユニット142)、メモリデバイス、メモリ製品、メモリメディア、ストレージデバイス、ストレージ製品、ストレージメディア及び/又はストレージユニット(例えば、ストレージユニット143)、例えば、メモリ、リムーバブル又はノンリムーバブルメディア、消去可能又は消去不可能なメディア、書き込み可能又は再書き込み不可能なメディア、デジタル又はアナログメディア、ハードディスク、フレキシブルディスク、コンパクトディスクリードオンリーメモリ(CD−ROM)、コンパクトディスクレコーダブル(CD−R)、コンパクトディスクリライタブル(CD−RW)、光ディスク、磁気メディア、種々のタイプのデジタル多目的ディスク(DVD)、テープ、カセット、或いは同種のものを含んでよい。命令は、任意の適切なタイプのコード、例えば、ソースコード、コンパイル済みコード、インタープリタコード、実行コード、静的コード、動的コード、又は同種のものを含んでよく、任意の適切な高レベル、低レベル、オブジェクト指向、視覚的、コンパイル型、及び/又はインタープリタ型プログラミング言語、例えば、C、C++、Java(登録商標)、BASIC、Pascal、Fortran、Cobol、アッセンブリ言語、マシンコード、又は同種のものを用いて実装されてよい。
本発明のいくつかの実施形態は、特定の用途又は特定の設計要件に適するように、ソフトウェア、ハードウェア、又はソフトウェア及び/又はハードウェアの任意の組合せによって実装されてよい。本発明の実施形態は、全体的に又は部分的に、互いに切り離された、又は互いに一体化された複数のユニット及び/又は複数のサブユニットを含んでよく、技術的に知られたように、特定の、多目的の、又は汎用のプロセッサ又はデバイスを用いて実装されてよい。本発明のいくつかの実施形態は、データの一時的又は長期記憶のため、又は具体的な実施形態のオペレーションを促進すべく、複数のバッファ、複数のレジスタ、複数のストレージユニット、及び/又は複数のメモリユニットを含んでよい。
本発明のいくつかの機能が本明細書に示され及び説明されたが、多くの変更、置き換え、改変、及び/又は均等物が、当業者に考えられる。したがって、添付の請求項は、全てのそのような変更及び/又は改変を含むことが意図されていることが理解されるべきである。
本発明のいくつかの機能が本明細書に示され及び説明されたが、多くの変更、置き換え、改変、及び/又は均等物が、当業者に考えられる。したがって、添付の請求項は、全てのそのような変更及び/又は改変を含むことが意図されていることが理解されるべきである。
(項目1)
第1コンピューティングプラットフォームに適合する第1フォーマットから第2コンピューティングプラットフォームに適合する第2フォーマットに変換された1つのコードブロックの実行がもたらすミスアラインデータアクセスを検出する段階と、
前記ミスアラインデータアクセスに従って、前記コードブロックを修正する段階と
を備える方法。
(項目2)
検出する段階は、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行する段階を有する
項目1に記載の方法。
(項目3)
検出する段階は、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行する段階を有する
項目2に記載の方法。
(項目4)
検出する段階は、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行する段階を有する
項目1に記載の方法。
(項目5)
修正する段階は、実行が前記ミスアラインデータアクセスを処理するコードシーケンスに前記コードブロックの実行を分岐させる1つの命令を、前記コードブロックに追加する段階を有する
項目1に記載の方法。
(項目6)
修正する段階は、前記コードブロックの後続の実行におけるミスアラインデータアクセスを処理すべく前記コードブロックを修正する段階を有する
項目1に記載の方法。
(項目7)
前記コードブロックを前記第1フォーマットから前記第2フォーマットに変換する段階
をさらに備える項目1に記載の方法。
(項目8)
検出する段階は、32ビットベースのコンピューティングプラットフォームに適合するフォーマットから64ビットベースのコンピューティングプラットフォームに適合するフォーマットに変換されたコードブロックの実行がもたらす、ミスアラインデータアクセスを検出する段階を有する
項目1に記載の方法。
(項目9)
第1コンピューティングプラットフォームに適合する第1フォーマットから第2コンピューティングプラットフォームに適合する第2フォーマットに変換された1つのコードブロックの実行がもたらすミスアラインデータアクセスを検出し、前記ミスアラインデータアクセスに従って、前記コードブロックを修正する1つのプロセッサ
を備える装置。
(項目10)
前記プロセッサは、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行することが可能である
項目9に記載の装置。
(項目11)
前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行することが可能である
項目10に記載の装置。
(項目12)
前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行することが可能である
項目9に記載の装置。
(項目13)
前記プロセッサは、実行が前記ミスアラインデータアクセスを処理するコードシーケンスに前記コードブロックの実行を分岐させる1つの命令を、前記コードブロックに追加することが可能である
項目9に記載の装置。
(項目14)
前記プロセッサは、前記コードブロックの後続の実行におけるミスアラインデータアクセスを処理すべく前記コードブロックを修正することが可能である
項目9に記載の装置。
(項目15)
前記プロセッサは、前記ミスアラインデータアクセスを検出する前に、前記コードブロックを前記第1フォーマットから前記第2フォーマットに変換することが可能である
項目9に記載の装置。
(項目16)
前記第1コンピューティングプラットフォームは32ビットベースのコンピューティングプラットフォームであり、前記第2コンピューティングアーキテクチャは64ビットベースのコンピューティングプラットフォームである
項目9に記載の装置。
(項目17)
第1コンピューティングプラットフォームに適合する第1フォーマットから第2コンピューティングプラットフォームに適合する第2フォーマットに変換された1つのコードブロックの実行がもたらすミスアラインデータアクセスを検出し、前記ミスアラインデータアクセスに従って、前記コードブロックを修正する1つのプロセッサと、
前記プロセッサに動作可能に連携され、前記コードブロックの少なくとも一部を記憶する1つのダイナミックランダムアクセスメモリと
を備えるコンピューティングプラットフォーム。
(項目18)
前記プロセッサは、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行することが可能である
項目17に記載の装置。
(項目19)
前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行することが可能である
項目18に記載の装置。
(項目20)
前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行することが可能である
項目17に記載の装置。
(項目21)
記憶された複数の命令のセットを備える機械可読メディアであって、前記複数の命令は、機械によって実行された場合に、前記機械に、
第1コンピューティングプラットフォームに適合する第1フォーマットから第2コンピューティングプラットフォームに適合する第2フォーマットに変換された1つのコードブロックの実行がもたらすミスアラインデータアクセスを検出する段階と、
前記ミスアラインデータアクセスに従って、前記コードブロックを修正する段階と
を備える方法を実行させる機械可読メディア。
(項目22)
検出する段階をもたらす前記複数の命令は、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行する段階をもたらす
項目21に記載の機械可読メディア。
(項目23)
検出する段階をもたらす前記複数の命令は、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行する段階をもたらす
項目22に記載の機械可読メディア。
(項目24)
検出する段階をもたらす前記複数の命令は、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行する段階をもたらす
項目21に記載の機械可読メディア。
(項目25)
前記複数の命令は、1つのトランスレータの少なくとも一部を構成する
項目21に記載の機械可読メディア。
(項目26)
前記複数の命令は、1つの実行レイヤの少なくとも一部を構成する
項目21に記載の機械可読メディア。
(項目27)
前記複数の命令は、1つのオペレーティングシステムの少なくとも一部を構成する
項目21に記載の機械可読メディア。
(項目28)
前記複数の命令は、1つのコンパイラの少なくとも一部を構成する
項目21に記載の機械可読メディア。

Claims (28)

  1. 第1コンピューティングプラットフォームに適合する第1フォーマットから第2コンピューティングプラットフォームに適合する第2フォーマットに変換された1つのコードブロックの実行がもたらすミスアラインデータアクセスを検出する段階と、
    前記ミスアラインデータアクセスに従って、前記コードブロックを修正する段階と
    を備える方法。
  2. 検出する段階は、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行する段階を有する
    請求項1に記載の方法。
  3. 検出する段階は、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行する段階を有する
    請求項2に記載の方法。
  4. 検出する段階は、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行する段階を有する
    請求項1に記載の方法。
  5. 修正する段階は、実行が前記ミスアラインデータアクセスを処理するコードシーケンスに前記コードブロックの実行を分岐させる1つの命令を、前記コードブロックに追加する段階を有する
    請求項1に記載の方法。
  6. 修正する段階は、前記コードブロックの後続の実行におけるミスアラインデータアクセスを処理すべく前記コードブロックを修正する段階を有する
    請求項1に記載の方法。
  7. 前記コードブロックを前記第1フォーマットから前記第2フォーマットに変換する段階
    をさらに備える請求項1に記載の方法。
  8. 検出する段階は、32ビットベースのコンピューティングプラットフォームに適合するフォーマットから64ビットベースのコンピューティングプラットフォームに適合するフォーマットに変換されたコードブロックの実行がもたらす、ミスアラインデータアクセスを検出する段階を有する
    請求項1に記載の方法。
  9. 第1コンピューティングプラットフォームに適合する第1フォーマットから第2コンピューティングプラットフォームに適合する第2フォーマットに変換された1つのコードブロックの実行がもたらすミスアラインデータアクセスを検出し、前記ミスアラインデータアクセスに従って、前記コードブロックを修正する1つのプロセッサ
    を備える装置。
  10. 前記プロセッサは、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行することが可能である
    請求項9に記載の装置。
  11. 前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行することが可能である
    請求項10に記載の装置。
  12. 前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行することが可能である
    請求項9に記載の装置。
  13. 前記プロセッサは、実行が前記ミスアラインデータアクセスを処理するコードシーケンスに前記コードブロックの実行を分岐させる1つの命令を、前記コードブロックに追加することが可能である
    請求項9に記載の装置。
  14. 前記プロセッサは、前記コードブロックの後続の実行におけるミスアラインデータアクセスを処理すべく前記コードブロックを修正することが可能である
    請求項9に記載の装置。
  15. 前記プロセッサは、前記ミスアラインデータアクセスを検出する前に、前記コードブロックを前記第1フォーマットから前記第2フォーマットに変換することが可能である
    請求項9に記載の装置。
  16. 前記第1コンピューティングプラットフォームは32ビットベースのコンピューティングプラットフォームであり、前記第2コンピューティングアーキテクチャは64ビットベースのコンピューティングプラットフォームである
    請求項9に記載の装置。
  17. 第1コンピューティングプラットフォームに適合する第1フォーマットから第2コンピューティングプラットフォームに適合する第2フォーマットに変換された1つのコードブロックの実行がもたらすミスアラインデータアクセスを検出し、前記ミスアラインデータアクセスに従って、前記コードブロックを修正する1つのプロセッサと、
    前記プロセッサに動作可能に連携され、前記コードブロックの少なくとも一部を記憶する1つのダイナミックランダムアクセスメモリと
    を備えるコンピューティングプラットフォーム。
  18. 前記プロセッサは、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行することが可能である
    請求項17に記載の装置。
  19. 前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行することが可能である
    請求項18に記載の装置。
  20. 前記プロセッサは、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行することが可能である
    請求項17に記載の装置。
  21. 記憶された複数の命令のセットを備える機械可読メディアであって、前記複数の命令は、機械によって実行された場合に、前記機械に、
    第1コンピューティングプラットフォームに適合する第1フォーマットから第2コンピューティングプラットフォームに適合する第2フォーマットに変換された1つのコードブロックの実行がもたらすミスアラインデータアクセスを検出する段階と、
    前記ミスアラインデータアクセスに従って、前記コードブロックを修正する段階と
    を備える方法を実行させる機械可読メディア。
  22. 検出する段階をもたらす前記複数の命令は、前記コードブロックの実行が前記ミスアラインデータアクセスをもたらすか否かを検出すべく、前記コードブロックのインストゥルメンテーションを実行する段階をもたらす
    請求項21に記載の機械可読メディア。
  23. 検出する段階をもたらす前記複数の命令は、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行する段階をもたらす
    請求項22に記載の機械可読メディア。
  24. 検出する段階をもたらす前記複数の命令は、実行が前記ミスアラインデータアクセスをもたらす1つの命令の位置を検出すべく、前記コードブロックの中の少なくとも1つの命令のインストゥルメンテーションを実行する段階をもたらす
    請求項21に記載の機械可読メディア。
  25. 前記複数の命令は、1つのトランスレータの少なくとも一部を構成する
    請求項21に記載の機械可読メディア。
  26. 前記複数の命令は、1つの実行レイヤの少なくとも一部を構成する
    請求項21に記載の機械可読メディア。
  27. 前記複数の命令は、1つのオペレーティングシステムの少なくとも一部を構成する
    請求項21に記載の機械可読メディア。
  28. 前記複数の命令は、1つのコンパイラの少なくとも一部を構成する
    請求項21に記載の機械可読メディア。
JP2009149905A 2003-11-26 2009-06-24 ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法 Expired - Lifetime JP5404204B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/721,879 US7493599B2 (en) 2003-11-26 2003-11-26 Device, system and method for detection and handling of misaligned data access
US10/721,879 2003-11-26

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006541181A Division JP4415019B2 (ja) 2003-11-26 2004-10-25 ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法

Publications (2)

Publication Number Publication Date
JP2009282990A true JP2009282990A (ja) 2009-12-03
JP5404204B2 JP5404204B2 (ja) 2014-01-29

Family

ID=34591909

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006541181A Expired - Lifetime JP4415019B2 (ja) 2003-11-26 2004-10-25 ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法
JP2009149905A Expired - Lifetime JP5404204B2 (ja) 2003-11-26 2009-06-24 ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2006541181A Expired - Lifetime JP4415019B2 (ja) 2003-11-26 2004-10-25 ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法

Country Status (7)

Country Link
US (1) US7493599B2 (ja)
EP (1) EP1687714B1 (ja)
JP (2) JP4415019B2 (ja)
CN (2) CN100524203C (ja)
AT (1) ATE407393T1 (ja)
DE (1) DE602004016375D1 (ja)
WO (1) WO2005057407A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934012B2 (en) * 2004-03-12 2011-04-26 Sap Ag Automatic translation code generation
US8117404B2 (en) * 2005-08-10 2012-02-14 Apple Inc. Misalignment predictor
US20080162522A1 (en) * 2006-12-29 2008-07-03 Guei-Yuan Lueh Methods and apparatuses for compaction and/or decompaction
US20080162879A1 (en) * 2006-12-29 2008-07-03 Hong Jiang Methods and apparatuses for aligning and/or executing instructions
JP5304443B2 (ja) * 2009-05-28 2013-10-02 富士通セミコンダクター株式会社 描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム
GB2482710A (en) 2010-08-12 2012-02-15 Advanced Risc Mach Ltd Enabling stack access alignment checking independently of other memory access alignment checking
RU2635044C2 (ru) * 2013-06-27 2017-11-08 Интел Корпорейшн Режим слежения в устройстве обработки в системах трассировки команд
US9996329B2 (en) 2016-02-16 2018-06-12 Microsoft Technology Licensing, Llc Translating atomic read-modify-write accesses
CN108228235B (zh) * 2016-12-21 2020-11-13 龙芯中科技术有限公司 基于mips架构的数据操作处理方法和装置
CN111338997B (zh) * 2020-03-05 2021-07-20 苏州浪潮智能科技有限公司 一种arm服务器bios支持tcm通信的方法、装置、设备和介质
US12608209B2 (en) * 2023-08-15 2026-04-21 Arm Limited Operating system pagesize compatibility workarounds

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10116200A (ja) * 1996-06-03 1998-05-06 Sun Microsyst Inc ディジタルコンピュータシステムにおける所定の型の例外の回避を容易にするためのシステム及び方法
JP2000066902A (ja) * 1998-08-06 2000-03-03 Hewlett Packard Co <Hp> 動的トランスレ―タにおけるマルチブランチ修正処理システム
WO2003036475A1 (en) * 2001-10-23 2003-05-01 Microsoft Corporation Data alignment between native and non-native shared data structures

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US5265254A (en) * 1991-08-14 1993-11-23 Hewlett-Packard Company System of debugging software through use of code markers inserted into spaces in the source code during and after compilation
US5754812A (en) * 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
US5835747A (en) * 1996-01-26 1998-11-10 Advanced Micro Devices, Inc. Hierarchical scan logic for out-of-order load/store execution control
US6314558B1 (en) * 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US6112297A (en) * 1998-02-10 2000-08-29 International Business Machines Corporation Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution
US6289428B1 (en) * 1999-08-03 2001-09-11 International Business Machines Corporation Superscaler processor and method for efficiently recovering from misaligned data addresses

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10116200A (ja) * 1996-06-03 1998-05-06 Sun Microsyst Inc ディジタルコンピュータシステムにおける所定の型の例外の回避を容易にするためのシステム及び方法
US6064815A (en) * 1996-06-03 2000-05-16 Sun Microsystems, Inc. System and method for generating fix-up code facilitating avoidance of an exception of a predetermined type in a digital computer system
JP2000066902A (ja) * 1998-08-06 2000-03-03 Hewlett Packard Co <Hp> 動的トランスレ―タにおけるマルチブランチ修正処理システム
WO2003036475A1 (en) * 2001-10-23 2003-05-01 Microsoft Corporation Data alignment between native and non-native shared data structures
JP2005507114A (ja) * 2001-10-23 2005-03-10 マイクロソフト コーポレーション ネイティブおよび非ネイティブの共有データ構造の間でのデータ整列

Also Published As

Publication number Publication date
US7493599B2 (en) 2009-02-17
ATE407393T1 (de) 2008-09-15
CN101593094B (zh) 2013-08-14
EP1687714B1 (en) 2008-09-03
EP1687714A1 (en) 2006-08-09
CN101593094A (zh) 2009-12-02
JP4415019B2 (ja) 2010-02-17
JP5404204B2 (ja) 2014-01-29
CN100524203C (zh) 2009-08-05
JP2007513412A (ja) 2007-05-24
DE602004016375D1 (de) 2008-10-16
US20050114845A1 (en) 2005-05-26
WO2005057407A1 (en) 2005-06-23
CN1886727A (zh) 2006-12-27

Similar Documents

Publication Publication Date Title
JP5404204B2 (ja) ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法
US8863103B2 (en) Method and apparatus for implementing a bi-endian capable compiler
US7937692B2 (en) Methods and systems for complete static analysis of software for building a system
US9524175B2 (en) Target typing of overloaded method and constructor arguments
US20080189529A1 (en) Controlling instruction execution in a processing environment
US20170161065A1 (en) Generating Code Coverage Data for use with a Computing Device and System
US8261251B2 (en) Modification of array access checking in AIX
EP3438814B1 (en) Storing memory profile data of an application in non-volatile memory
US7716642B1 (en) Techniques for detecting coding incompatibilities
US20080244530A1 (en) Controlling tracing within compiled code
US20060225044A1 (en) Systems, Methods, and Computer Readable Medium for Analyzing Memory
CN115017505A (zh) 一种pe病毒检测方法、装置、电子设备及存储介质
US8661421B2 (en) Methods and apparatuses for endian conversion
US20080168426A1 (en) Automatic inspection of compiled code
Letychevskyi et al. Fuzz testing technique and its use in cybersecurity tasks
US7318221B2 (en) Windows™ F-language interpreter
US7882336B2 (en) Employing a buffer to facilitate instruction execution
CN117251168A (zh) 动态类型语言的提前编译方法、装置、智能汽车及介质
US7774767B2 (en) System and method for compiler interprocedural optimization having support for object files in libraries
Zeng et al. Efficient condition code emulation for dynamic binary translation systems
WO2026042241A1 (ja) プログラム変換装置、プログラム変換方法、およびプログラム
JP2001350624A (ja) モジュール再分割提案装置およびモジュール再分割提案方法、並びに記録媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120321

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120620

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120621

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120625

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120920

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130614

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130705

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131001

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131029

R150 Certificate of patent or registration of utility model

Ref document number: 5404204

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term