(57)【要約】  データ処理システム（２）は、スタックデータストア（４４、４６、４８、５０）へのスタックアクセス動作で使用されるスタックポインタ値を保存するスタックポインタレジスタ（２６、２８、３０、３２）を含む。選択的に無効となるスタックアラインメントチェック回路（３６）は、スタックメモリアクセスに関連したスタックポインタ値のメモリアドレスのアラインメントのチェックのために提供されてもよい。スタックアラインメントチェック回路（３６）の動作は、すべてのメモリアクセスに関して実行されるさらなる任意の他のアラインメントチェックに依存しない。したがって、一般的なアラインメントチェック回路（３８）が提供されてもよく、独立して、あらゆるメモリアクセスに関して、選択的に無効とされてもよい。
2013536504.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
データ処理動作を実行するプログラム命令に応答する処理回路と、
前記処理回路に連結され、スタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するように構成されたスタックポインタレジスタと、
前記処理回路および前記スタックポインタレジスタに連結され、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答し、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するように構成されたスタックアラインメントチェック回路と、
前記スタックアラインメントチェック回路に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック回路を無効にする、アラインメントチェック制御回路と、を備える、装置。
【請求項２】
前記さらなるアライメントチェックがすべてのメモリアクセスに対するアライメントチェックを含む、請求項１に記載の装置。
【請求項３】
前記スタックメモリアクセスが、
（ｉ）前記スタックポインタ値によって指定されたスタックアドレスのトップで開始する前記スタックメモリへ１つまたは複数のデータ値を保存し、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックプッシュ動作、および
（ｉｉ）前記スタックポインタ値によって指定されたスタックアドレスのトップでスタートする前記スタックメモリから１つまたは複数のデータ値を読み込み、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックポップ動作、のうちの１つである、請求項１に記載の装置。
【請求項４】
前記処理回路に連結され、任意のメモリアドレスで前記メモリへの汎用アクセスを指定するプログラム命令に応答し、前記アドレスが所定の汎用アラインメント条件と一致するかどうか検出するように構成された汎用アラインメントチェック回路を備える、請求項２および３のうちのいずれか１項に記載の装置。
【請求項５】
前記アラインメントチェック制御回路が前記汎用アラインメントチェック回路に連結され、かつ一般的な構成パラメータに応答して、スタックメモリアクセス時に、前記スタックポインタ値を使用して、前記スタックアラインメントチェック回路により実行されるアライメントチェックとは独立して、選択的に前記汎用アラインメントチェック回路を無効にする、請求項４に記載の装置。
【請求項６】
前記スタックポインタ値を含む前記所定のスタックアラインメント条件が、
制約がない、
Ｎが０でない整数値である、２Ｎの倍数である整数、
のうちの１つである、請求項１から５のいずれか１項に記載の装置。
【請求項７】
Ｎが３および４のうちの１つである、請求項６に記載の装置。
【請求項８】
Ｎがユーザー制御の下で設定される、請求項４および５のいずれか１項に記載の装置。
【請求項９】
各スタックポインタ値をそれぞれ保存する複数のスタックポインタレジスタを備え、
前記処理回路が例外レベルで動作しており、かつ、スタックアラインメントチェック回路を前記例外レベルで無効とさせるかどうか制御するための各スタック構成パラメータを有する場合、前記処理回路が、使用に対して前記複数のスタックポインタレジスタのそれぞれ１つに関連付けられた複数の前記例外レベルで動作するよう構成される、請求項１から請求項８のいずれか１項に記載の装置。
【請求項１０】
データを処理するための装置であって、
プログラム命令に応じてデータ処理動作を実行するための処理手段と、
スタックポインタ値を保存するためのスタックポインタ手段であって、前記処理手段に連結され、前記スタックポインタ値がスタックデータストアのメモリ内のアドレスを示す、手段と、
アライメントをチェックするためのスタックアラインメントチェック手段であって、前記処理手段および前記スタックポインタ手段に連結され、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するために前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答するように構成された、手段と、
アライメントチェックを制御するためのアラインメントチェク制御手段であって、前記スタックアラインメントチェック手段に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック手段を無効にする、手段と、を備える、装置。
【請求項１１】
データを処理する方法であって、
プログラム命令に応じてデータ処理動作を実行するステップと、
スタックポインタレジスタ内にスタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するステップと、
前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応じて、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するステップと，
スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記検出ステップを省略するステップと、を含む、方法。
【請求項１２】
前記さらなるアライメントチェックがすべてのメモリアクセスに対するアライメントチェックを含む、請求項１１に記載の方法。
【請求項１３】
前記スタックメモリアクセスが、
（ｉ）前記スタックポインタ値によって指定されたスタックアドレスのトップで開始する前記スタックメモリへ１つまたは複数のデータ値を保存し、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックプッシュ動作、
（ｉｉ）前記スタックポインタ値によって指定されたスタックアドレスのトップで開始する前記スタックメモリから１つまたは複数のデータ値を読み込み、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックポップ動作、のうちの１つである、請求項１１および１２のいずれか１項に記載の方法。
【請求項１４】
任意のメモリアドレスで前記メモリへの汎用アクセスを指定するプログラム命令に応答して、前記アドレスが所定の汎用アライメント条件と一致するかどうか検出する汎用アラインメントチェック回路のステップを含む、請求項１１、１２および１３のいずれか１項に記載の方法。
【請求項１５】
一般的な構成パラメータに応答して、スタックメモリアクセス時に、前記スタックポインタ値を使用して実行されるアライメントチェックとは独立して、選択的に前記汎用アラインメントチェックを無効にする、請求項１４に記載の方法。
【請求項１６】
前記スタックポインタ値を含む前記所定のスタックアラインメント条件が、
制約がない、
Ｎが０でない整数値である、２Ｎの倍数である整数、
のうちの１つである、請求項１１から１５のいずれか１項に記載の方法。
【請求項１７】
Ｎは３および４のうちの１つである、請求項１６に記載の方法。
【請求項１８】
Ｎはユーザー制御の下で設定される、請求項１６および請求項１７のいずれか１項に記載の方法。
【請求項１９】
それぞれのスタックポインタレジスタに複数のスタックポインタ値を保存するステップと、および前記処理回路が例外レベルで動作する場合、使用時に前記複数のスタックポインタレジスタのそれぞれ１つに関連付けられた複数の前記例外レベルで作動するステップと、スタックアラインメントチェックが前記例外レベルで実行されるかどうかを制御するための各スタック構成パラメータを有するステップと、を含む、請求項１１から１８のいずれか１項に記載の方法。
【請求項２０】
請求項１１から１９のうちのいずれか１項に記載の方法を実行するようにコンピュータを制御するコンピュータープログラムを含む仮想マシン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システムの分野に関する。より詳細には、本発明は、データ処理システム内で実行されるメモリアクセスのアクセスアラインメント制御に関する。
【背景技術】
【０００２】
データ処理システムにメモリアクセスのアラインメントのチェック機構が提供されることが知られている。メモリ内の任意の個別のバイトが任意の大きさのメモリアクセスによりアドレス指定されてもよいようにメモリアクセスは制約を受けない場合があり、または、メモリ内で、メモリアクセスが、例えばハーフワード、ワード、ダブルワード等の境界とのみアラインされるようにメモリアクセスはアラインメント制限されてもよい。一般的に言えば、メモリアクセスにアラインメント要件を強制することは高速メモリアクセスを提供するには有用であり、例えば、広いデータバスはデータバス幅とアラインしていないアクセスを格納する必要がないメモリアクセスと一緒に使用されてもよい。しかしながら、メモリアクセスを単にアラインさせるという要件は、アクセスされているデータ要素が強制されたアラインメント制約にアラインする境界を有する必要がない場合があるパックされたデータ構造を操作する場合に問題となる。ある状況では、実行される命令には、何等かのスタックデータストアへのリード・モディファイ・ライト命令等のデータアクセスのアラインメントが必要となる場合がある。更に、アプリケーションバイナリーインターフェースのいくつかはアクセスのアラインメントを指定する。
【発明の概要】
【課題を解決するための手段】
【０００３】
一態様から見ると、本発明はデータを処理するための装置であって、
データ処理動作を実行するプログラム命令に応答する処理回路と、
前記処理回路に連結され、スタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するように構成されたスタックポインタレジスタと、
前記処理回路および前記スタックポインタレジスタに連結され、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのスタックメモリアクセスを指定するプログラム命令に応答し、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するように構成された、スタックアラインメントチェック回路と、
前記スタックアラインメントチェック回路に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック回路を無効にする、アラインメントチェック制御回路と、を備える装置を提供する。
【０００４】
本発明の技術は、スタックメモリアクセスに適切となる場合があるアラインメント制約は、他のメモリアクセス（例えばスタックデータストアを含んでいないメモリアクセス）には適当でない場合があることを認識している。例えば、スタックデータストア内に保存されないデータ構造は、アラインメント制約がそのために問題となることになるパックされたデータ構造である場合がある一方で、スタックデータストアにアラインメント制約を適用することは、スタックポインタまたはスタックデータストアの破損を特定するのに役立つことになる。本発明の技術は、この状況を認識し、スタックメモリアクセスのアラインメントをチェックするためのスタックアラインメントチェック回路の機構を提供するが、これは、システム内で実行されるさらなるアラインメントチェック、例えばスタックメモリおよびスタックメモリ以外へのすべてのメモリアクセス時に実行されるアラインメントチェックとは独立して選択的に無効とする。したがって、スタックアラインメントチェックは、独立して制御されたメモリアクセスのさらなるチェックと組み合わせて実行することも、しないこともできる。よって、一般的なメモリアクセスにはアラインメントを強制しないが、スタックデータストアに対しては強制してもよい。
【０００５】
さらなるアラインメントチェックは、スタックポインタを使用しないメモリアクセスのアラインメントチェック等の様々な異なる形式を取る可能性があることが認識されるであろう。しかしながら、有用な構成は、さらなるアラインメントチェックがすべてのメモリアクセス（すなわち、スタックポインタを使用するおよび使用しないメモリアクセス）時に実行されるアラインメントチェックである構成である。
【０００６】
スタックメモリアクセスは、実行されているスタックポインタ値の更新に対応する、スタックアドレスのトップへの読み取り（ポップ）アクセスまたは書き込み（プッシュ）アクセスのいずれであってもよいことが理解されるであろう。
【０００７】
選択的に無効となるスタックアラインメントチェック回路に加えて、いくつかの実施形態ではさらに、任意のメモリアクセスが所定のアラインメント条件を満たすかどうか検出するための汎用アラインメントチェック回路を含んでもよい。したがってスタックアラインメントチェック回路を単独で使用することが可能であるが、このスタックアラインメントチェック回路は、汎用アラインメントチェック回路を有用に組み合わせる。汎用アラインメントチェック回路もアラインメントチェック制御回路により制御されてもよく、選択的に無効とすることができる。
【０００８】
強制されたアラインメント条件は変更することができる。所定のスタックアラインメント条件に制約がないことは、スタックアラインメントチェック回路を無効にすることと等しくなることになるかもしれない。しかしながら、アラインメント条件が、スタックポインタ値は２Ｎの倍数である整数であり、Ｎが０でない整数値（例えば、Ｎは６４ビットおよび１２８ビットのアラインメントに対応する、３または４のうちの１つである）である場合、スタックアラインメントチェック回路はさらに有用である。Ｎの値、したがって、アラインメント条件はユーザー制御（ソフトウェア制御等）の下で設定されてもよい。
【０００９】
本発明の技術は、単一のスタックポインタを含む実施形態において使用されてもよいが、複数のスタックポインタを含んでいる実施形態においても適用でき、複数のスタックポインタは、各スタックポインタ値をそれぞれ保存し、スタックアラインメントチェックが当該スタックポインタに対して無効または有効かどうか判断する各スタック構成パラメータの制約を受ける。これら異なるスタックポインタはシステム内の異なる例外レベル（特権レベル）と関係付けられていてもよい。
【００１０】
さらなる態様から見ると、本発明はデータを処理するための装置であって、
プログラム命令に応じてデータ処理動作を実行するための処理手段と、
スタックポインタ値を保存するためのスタックポインタ手段であって、前記処理手段に連結され、前記スタックポインタ値がスタックデータストアのメモリ内のアドレスを示す手段と、
アライメントをチェックするためのスタックアラインメントチェック手段であって、前記処理手段および前記スタックポインタ手段に連結され、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答して、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するように構成された手段と、
アライメントチェックを制御するためのアラインメントチェク制御手段であって、前記スタックアラインメントチェック手段に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック手段を無効にする手段と、を備える装置を提供する。
【００１１】
別の態様から見ると、本発明は、データを処理する方法であって、
プログラム命令に応じてデータ処理動作を実行するステップと、
スタックポインタレジスタ内にスタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するステップと、
前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答して、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するステップと、
スタック構成パラメータに応答して、メモリアクセス時に前記スタックポインタ値を使用せずに実行されるアライメントチェックとは独立して選択的に前記検出ステップを省略するステップと、を含む方法を提供する。
【００１２】
本発明の実施形態は、上記の装置および方法と合致する実行環境を提供するための適切なソフトウェアを実行する汎用コンピュータで作られた仮想マシンの形で提供されてもよい。
【００１３】
本発明の実施形態を、ここで添付の図面を参照しながら、ほんの一例として説明する。
【図面の簡単な説明】
【００１４】
【図１】アラインメントチェック回路およびアラインメント制御回路を組込むデータ処理装置の概略図である。
【図２】選択的に無効とされたアラインメント制御を受ける複数のスタックデータストアを含むメモリの概略図である。
【図３】スタックメモリアクセスおよび汎用アクセスに対するアラインメント制御の方法を概略的に図示する流れ図である。
【図４】上述の技術の仮想マシン実装の概略図である。
【発明を実施するための形態】
【００１５】
図１は、メモリ管理ユニット６を介してキャッシュメモリ８に連結されたプロセッサコア４を含むデータ処理装置２を概略的に示す。メインメモリはキャッシュメモリ８に連結されるが、メインメモリは図１には図示されない。構成データストア１０は、データ処理装置２のための様々な構成パラメータを制御するため、ソフトウェア制御下で書き込み可能な構成データを保存する。この構成データストアは、構成パラメータを設定するために書き込みされ、構成パラメータを読み取るために読み取りがなされる、コプロセッサ（例えばＣＰ１５）の形で提供される。
【００１６】
プロセッサコア４は、汎用レジスタバンク１２、マルチプライヤ１４、シフター１６およびアダー１８から形成されるデータ経路を含んでいる。データ経路１２、１４、１６、１８は、デコーダ回路２０により生成された制御信号により制御されるが、デコーダ回路２０は、命令パイプライン２２から受け取ったプログラム命令を復号し、必要なデータ処理動作を実行するためにデータ経路１２、１４、１６、１８を構成するための制御信号を生成し、また当該処理命令に必要な機能を実行するためにプロセッサコア４の他の部分を構成し制御する。プロセッサコア４は、一般的に多くのさらなる回路要素を含むであろうが、明瞭化のためにそれらは図１から省略されることが理解されるであろう。
【００１７】
プロセッサコア４は複数の例外レベルで動作可能である。これら例外レベルの各々は例外レベルモード値に対応し、モードレジスタ２４は、プロセッサコア４の現在の例外レベルモードを示す値を保存する。例外レベルモードの各々は関連スタックポインタレジスタ２６、２８、３０、３２を有し、特定の例外レベルモードで動作する場合にスタックアクセス命令により命令されたスタックメモリアクセスに使用される各スタックポインタ値を保存する。したがって、プロセッサコア４が例外レベル２（ＥＬ２）である場合に実行されるスタックプッシュまたはスタックポップ命令は、スタックポインタレジスタ３０内に保存されたスタックポインタ値を使用することとなる。
【００１８】
プロセッサコア４は、キャッシュメモリ８を介してメモリから読み込まれたデータおよび命令を使用する。データの項目または命令がキャッシュメモリ８内に存在しない場合、メインメモリへのアクセスはそのデータ項目または命令を取り込むためになされる。多くの可能性のあるキャッシュおよびメモリアーキテクチャが可能であり、図１は、そのようなキャッシュまたはメモリアーキテクチャのほんの一例を示す。
【００１９】
プロセッサコア４は、メモリ管理ユニット６により物理アドレスに変換される仮想アドレスを生成する。メモリ管理ユニット６は、このアドレス変換を行なうためにページテーブルのデータを一般的に使用する。メモリ管理ユニット６は、さらに特定のメモリアクセスが許可されるべきかどうか判断するためのアクセス許可データも保存する。メモリ管理ユニットは、スタックアラインメントチェック回路３６および一般的なアラインメントチェック回路３８を含むアラインメントチェック回路３４を含む。スタックアラインメントチェック回路３６は、スタックプッシュ命令またはスタックポップ命令等のスタックメモリアクセスのアラインメントのチェックを担う。一般的なアラインメントチェック回路３８は、汎用ロード命令または汎用保存命令のようなメモリアクセスのすべてのチェックを担う。アラインメントチェック回路３４は、スタックアラインメントチェック回路３６および一般的なアラインメントチェック回路３８を互いに独立して選択的に有効または無効とするアラインメントチェック制御回路４０を含む。したがって、スタックアラインメントチェック回路３６を有効または無効のいずれかにでき、かつ独立して一般的なアラインメントチェック回路３８を有効または無効のいずれかにできる。スタックアラインメントチェック回路３６および一般的なアラインメントチェック回路３８はしたがって、チェックしない、スタックデータストアへのアクセス時のみのチェックする、またはすべてのメモリアクセス時にチェックすることを組み合わせて行うことができる。
【００２０】
アラインメントチェック制御回路４０は構成データストア１０内に保存された構成パラメータに応答する。スタックポインタレジスタ２６、２８、３０および３２の各々に対して、当該スタックポインタレジスタ２６、２８、３０、３２に対応する例外レベルで生じるスタックアクセスに対して、アラインメントチェックを無効とするかどうかを示すスタック構成パラメータが保存される。したがって、スタックアラインメントチェックは、例外レベルＥＬ０およびＥＬ２に対応するスタックポインタ値に対して実行されてもよい一方で、スタックアラインメントチェックは例外レベルＥＬ１およびＥＬ３に対して無効とされてもよい。構成データストア１０はまた、実行された各アラインメントチェックについて、一致がそれに対してチェックされるアラインメントサイズを示すデータも含んでおり、例えば、アラインメントが、２３または２４の倍数であるメモリアドレスに対応する６４ビットのメモリアドレス境界であるかまたは１２８のメモリアドレス境界であるかに対してチェックされる。
【００２１】
構成データストア１０は、一般的なアラインメントチェック回路３８が無効かまたは有効かを制御する一般的な構成パラメータをさらに含む。このような一般的なアラインメントチェックに強制されるアラインメントのサイズも、構成パラメータとして指定される。構成データストア１０内に保存された確認パラメータは、ソフトウェア制御下で書かれてもよい。これらの構成パラメータはハードウェアコントロールの下で設定されてもよく、またはハードウェア内にあらかじめプログラムされてもよい。
【００２２】
図２は、異なる例外レベルに対応する４つのスタックデータストア４４、４６、４８、５０を含むメモリ４２を概略図に示す。スタックポインタレジスタ２６、２８、３０、３２に保存されたスタックポインタ値は、プッシュ動作またはポップ動作等のスタックメモリアクセスがこれらに対して実行される、これらのスタックデータストア４４、４６、４８、５０のそれぞれのトップアドレス値を示す。
【００２３】
例として、スタックデータストア４６に関連したアラインメント条件が、図２に示される。アラインメントが強制されている場合、２Ｎの倍数の整数であるアドレスだけが有効なスタックポインタ値である。スタックポインタ値がこれらの許容値と異なることが判明した場合、例外が引き起こされる。このような例外が引き起こされたことによりもたらされる結果は実装により異なる可能性がある。そのような例外は、当該システムの性質に依存するソフトウェア応答（例外処理コードの実行）、またはハードウェア応答（リセットの強制）を引き起こす可能性がある。
【００２４】
図示された例において、スタックアラインメント条件として強制される６４ビットのアラインメントまたはスタックアラインメント条件として強制される１２８ビットのアラインメントにそれぞれ対応して、Ｎの値は３または４であってもよい。図２には、スタックアラインメントチェック回路３８が無効になるかどうかもさらに図示され、この場合、任意のアドレスは、スタックポインタ値として利用されてもよく、スタックデータストア４６のトップアドレスはメモリアドレス空間内の任意の位置とすることができる（一般的なアラインメントチェック回路３８によりすべてのメモリアクセスに別個に強制されるあらゆるアラインメント制約を受ける）。
【００２５】
図３は、アラインメントチェック回路３４の動作を概略的に図示する流れ図である。ステップ５２で、メモリアクセスが受信されるまで、処理は待機している。ステップ５４で、メモリアクセスのアドレスがスタックポインタレジスタから来るかどうか判断する。メモリアクセスがスタックメモリアクセスである場合、つまり、スタックポインタレジスタからアドレスが来た場合、処理はステップ５６に移る。ステップ５６で、プロセッサコア４が実行している（例外レベルモードレジスタ２４を使用して決定されてもよいように）現在の例外レベルに対してスタックアラインメントチェックを無効とするかどうかが決定される。スタックアラインメントチェックが有効な場合、ステップ５８は当該アクセスが現在の例外レベルの所定のアラインメント条件と一致するかどうか判定する。所定のアラインメント条件が満たされる（すなわち、アクセスが適切にアラインされる）場合、処理はアクセスが許可されるステップ６０に移る。アクセスが所定のアラインメント条件と一致しない（すなわちアクセスが誤ってアラインされる）場合、処理はステップ６２に移り、スタックがアラインしないアクセスの応答が引き起こされる。ステップ５６の決定が、スタックアラインメントチェックを無効とするという決定である場合、処理はステップ６４に移り、一般的なアラインメントチェックを無効にするかどうかに関しての決定がなされる。
【００２６】
ステップ５４の決定が、メモリアクセスはスタックメモリアクセスでない（すなわち、スタックポインタレジスタから読み込まれたアドレスの使用を含んでいない）場合、処理はステップ６４に移り、一般的なアラインメントチェックが現在無効であるかどうかについて判定がなされる。一般的なアラインメントチェックが現在無効である場合、処理はアクセスが許可されるステップ６０に移る。ステップ６４での判定が、一般的なアラインメントチェックを無効ではないという決定である場合、処理はステップ６６に移り、アクセスが一般的なアクセスに対する所定のアラインメント条件（すなわち汎用アラインメント条件）と一致するかどうかに関して判定がなされる。アクセスがこの汎用アラインメント条件と一致する（すなわちアラインされる）場合、処理はアクセスが許可されるステップ６０に移る。アクセスが汎用アラインメント条件と一致しない（すなわち、正しくアラインされない）場合、処理はステップ６８に移り、一般的なアラインしないアクセスの応答が引き起こされる。
【００２７】
図４は、使用可能な仮想マシンの実装を示す。前述の実施形態は、当該技術に対応する特定の処理ハードウェアを操作するための装置および方法の観点から本発明を実行するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム５１０に対応するホストオペレーティングシステム５２０を実行するホストプロセッサー５３０上で実行する。一般的に、大規模で強力なプロセッサは適切な速度で実行する仮想マシン実装の提供に必要とされるが、このような方法は特定の状況、例えば互換性、または再利用のため別のプロセッサに固有のコードを実行する要望がある場合、正当化される場合がある。仮想マシンプログラム５１０はアプリケーションプログラム５００にアプリケーションプログラムインターフェースを供給するが、これは、実際のハードウェアにより提供されるアプリケーションプログラムインターフェースと同じであり、このハードウェアは仮想マシンプログラム５１０によりモデル化された装置である。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想マシンプログラム５１０を使用して、アプリケーションプログラム５００の内部から実行して、仮想マシンのハードウェアとのそれらの対話をモデル化してもよい。
【符号の説明】
【００２８】
２  データ処理装置
４  プロセッサコア
６  メモリ管理ユニット
８  キャッシュメモリ
１０  構成データストア
１２  汎用レジスタバンク
１４  マルチプライヤ
１６  シフター
１８  アダー
２０  デコーダ回路
２２  命令パイプライン
２４  モードレジスタ
２６、２８、３０、３２  スタックポインタレジスタ
３４  アラインメントチェック回路
３６  スタックアラインメントチェック回路
３８  一般的なアラインメントチェック回路
４０  アラインメントチェック制御回路
【図１】
2013536504.tif 000003
【図２】
2013536504.tif 000004
【図３】
2013536504.tif 000005
【図４】
2013536504.tif 000006
【国際調査報告】
2013536504.tif 000007
2013536504.tif 000008