"データを処理するための装置であって、データ処理動作を実行するプログラム命令に応答する処理回路と、前記処理回路に連結され、スタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するように構成されたスタックポインタレジスタと、前記処理回路および前記スタックポインタレジスタに連結され、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答し、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するように構成されたスタックアラインメントチェック回路と、前記スタックアラインメントチェック回路に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック回路を無効にする、アラインメントチェック制御回路と、を備える、装置。前記さらなるアライメントチェックがすべてのメモリアクセスに対するアライメントチェックを含む、請求項1に記載の装置。前記スタックメモリアクセスが、i前記スタックポインタ値によって指定されたスタックアドレスのトップで開始する前記スタックメモリへ1つまたは複数のデータ値を保存し、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックプッシュ動作、およびii前記スタックポインタ値によって指定されたスタックアドレスのトップでスタートする前記スタックメモリから1つまたは複数のデータ値を読み込み、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックポップ動作、のうちの1つである、請求項1に記載の装置。前記処理回路に連結され、任意のメモリアドレスで前記メモリへの汎用アクセスを指定するプログラム命令に応答し、前記アドレスが所定の汎用アラインメント条件と一致するかどうか検出するように構成された汎用アラインメントチェック回路を備える、請求項2および3のうちのいずれか1項に記載の装置。前記アラインメントチェック制御回路が前記汎用アラインメントチェック回路に連結され、かつ一般的な構成パラメータに応答して、スタックメモリアクセス時に、前記スタックポインタ値を使用して、前記スタックアラインメントチェック回路により実行されるアライメントチェックとは独立して、選択的に前記汎用アラインメントチェック回路を無効にする、請求項4に記載の装置。前記スタックポインタ値を含む前記所定のスタックアラインメント条件が、制約がない、Nが0でない整数値である、2Nの倍数である整数、のうちの1つである、請求項1から5のいずれか1項に記載の装置。Nが3および4のうちの1つである、請求項6に記載の装置。Nがユーザー制御の下で設定される、請求項4および5のいずれか1項に記載の装置。各スタックポインタ値をそれぞれ保存する複数のスタックポインタレジスタを備え、前記処理回路が例外レベルで動作しており、かつ、スタックアラインメントチェック回路を前記例外レベルで無効とさせるかどうか制御するための各スタック構成パラメータを有する場合、前記処理回路が、使用に対して前記複数のスタックポインタレジスタのそれぞれ1つに関連付けられた複数の前記例外レベルで動作するよう構成される、請求項1から請求項8のいずれか1項に記載の装置。データを処理するための装置であって、プログラム命令に応じてデータ処理動作を実行するための処理手段と、スタックポインタ値を保存するためのスタックポインタ手段であって、前記処理手段に連結され、前記スタックポインタ値がスタックデータストアのメモリ内のアドレスを示す、手段と、アライメントをチェックするためのスタックアラインメントチェック手段であって、前記処理手段および前記スタックポインタ手段に連結され、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するために前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答するように構成された、手段と、アライメントチェックを制御するためのアラインメントチェク制御手段であって、前記スタックアラインメントチェック手段に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック手段を無効にする、手段と、を備える、装置。データを処理する方法であって、プログラム命令に応じてデータ処理動作を実行するステップと、スタックポインタレジスタ内にスタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するステップと、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応じて、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するステップと,スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記検出ステップを省略するステップと、を含む、方法。前記さらなるアライメントチェックがすべてのメモリアクセスに対するアライメントチェックを含む、請求項11に記載の方法。前記スタックメモリアクセスが、i前記スタックポインタ値によって指定されたスタックアドレスのトップで開始する前記スタックメモリへ1つまたは複数のデータ値を保存し、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックプッシュ動作、ii前記スタックポインタ値によって指定されたスタックアドレスのトップで開始する前記スタックメモリから1つまたは複数のデータ値を読み込み、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックポップ動作、のうちの1つである、請求項11および12のいずれか1項に記載の方法。任意のメモリアドレスで前記メモリへの汎用アクセスを指定するプログラム命令に応答して、前記アドレスが所定の汎用アライメント条件と一致するかどうか検出する汎用アラインメントチェック回路のステップを含む、請求項11、12および13のいずれか1項に記載の方法。一般的な構成パラメータに応答して、スタックメモリアクセス時に、前記スタックポインタ値を使用して実行されるアライメントチェックとは独立して、選択的に前記汎用アラインメントチェックを無効にする、請求項14に記載の方法。前記スタックポインタ値を含む前記所定のスタックアラインメント条件が、制約がない、Nが0でない整数値である、2Nの倍数である整数、のうちの1つである、請求項11から15のいずれか1項に記載の方法。Nは3および4のうちの1つである、請求項16に記載の方法。Nはユーザー制御の下で設定される、請求項16および請求項17のいずれか1項に記載の方法。それぞれのスタックポインタレジスタに複数のスタックポインタ値を保存するステップと、および前記処理回路が例外レベルで動作する場合、使用時に前記複数のスタックポインタレジスタのそれぞれ1つに関連付けられた複数の前記例外レベルで作動するステップと、スタックアラインメントチェックが前記例外レベルで実行されるかどうかを制御するための各スタック構成パラメータを有するステップと、を含む、請求項11から18のいずれか1項に記載の方法。請求項11から19のうちのいずれか1項に記載の方法を実行するようにコンピュータを制御するコンピュータープログラムを含む仮想マシン。一態様から見ると、本発明はデータを処理するための装置であって、データ処理動作を実行するプログラム命令に応答する処理回路と、前記処理回路に連結され、スタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するように構成されたスタックポインタレジスタと、前記処理回路および前記スタックポインタレジスタに連結され、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのスタックメモリアクセスを指定するプログラム命令に応答し、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するように構成された、スタックアラインメントチェック回路と、前記スタックアラインメントチェック回路に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック回路を無効にする、アラインメントチェック制御回路と、を備える装置を提供する。本発明の技術は、スタックメモリアクセスに適切となる場合があるアラインメント制約は、他のメモリアクセス例えばスタックデータストアを含んでいないメモリアクセスには適当でない場合があることを認識している。例えば、スタックデータストア内に保存されないデータ構造は、アラインメント制約がそのために問題となることになるパックされたデータ構造である場合がある一方で、スタックデータストアにアラインメント制約を適用することは、スタックポインタまたはスタックデータストアの破損を特定するのに役立つことになる。本発明の技術は、この状況を認識し、スタックメモリアクセスのアラインメントをチェックするためのスタックアラインメントチェック回路の機構を提供するが、これは、システム内で実行されるさらなるアラインメントチェック、例えばスタックメモリおよびスタックメモリ以外へのすべてのメモリアクセス時に実行されるアラインメントチェックとは独立して選択的に無効とする。したがって、スタックアラインメントチェックは、独立して制御されたメモリアクセスのさらなるチェックと組み合わせて実行することも、しないこともできる。よって、一般的なメモリアクセスにはアラインメントを強制しないが、スタックデータストアに対しては強制してもよい。さらなるアラインメントチェックは、スタックポインタを使用しないメモリアクセスのアラインメントチェック等の様々な異なる形式を取る可能性があることが認識されるであろう。しかしながら、有用な構成は、さらなるアラインメントチェックがすべてのメモリアクセスすなわち、スタックポインタを使用するおよび使用しないメモリアクセス時に実行されるアラインメントチェックである構成である。スタックメモリアクセスは、実行されているスタックポインタ値の更新に対応する、スタックアドレスのトップへの読み取りポップアクセスまたは書き込みプッシュアクセスのいずれであってもよいことが理解されるであろう。選択的に無効となるスタックアラインメントチェック回路に加えて、いくつかの実施形態ではさらに、任意のメモリアクセスが所定のアラインメント条件を満たすかどうか検出するための汎用アラインメントチェック回路を含んでもよい。したがってスタックアラインメントチェック回路を単独で使用することが可能であるが、このスタックアラインメントチェック回路は、汎用アラインメントチェック回路を有用に組み合わせる。汎用アラインメントチェック回路もアラインメントチェック制御回路により制御されてもよく、選択的に無効とすることができる。強制されたアラインメント条件は変更することができる。所定のスタックアラインメント条件に制約がないことは、スタックアラインメントチェック回路を無効にすることと等しくなることになるかもしれない。しかしながら、アラインメント条件が、スタックポインタ値は2Nの倍数である整数であり、Nが0でない整数値例えば、Nは64ビットおよび128ビットのアラインメントに対応する、3または4のうちの1つであるである場合、スタックアラインメントチェック回路はさらに有用である。Nの値、したがって、アラインメント条件はユーザー制御ソフトウェア制御等の下で設定されてもよい。本発明の技術は、単一のスタックポインタを含む実施形態において使用されてもよいが、複数のスタックポインタを含んでいる実施形態においても適用でき、複数のスタックポインタは、各スタックポインタ値をそれぞれ保存し、スタックアラインメントチェックが当該スタックポインタに対して無効または有効かどうか判断する各スタック構成パラメータの制約を受ける。これら異なるスタックポインタはシステム内の異なる例外レベル特権レベルと関係付けられていてもよい。さらなる態様から見ると、本発明はデータを処理するための装置であって、プログラム命令に応じてデータ処理動作を実行するための処理手段と、スタックポインタ値を保存するためのスタックポインタ手段であって、前記処理手段に連結され、前記スタックポインタ値がスタックデータストアのメモリ内のアドレスを示す手段と、アライメントをチェックするためのスタックアラインメントチェック手段であって、前記処理手段および前記スタックポインタ手段に連結され、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答して、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するように構成された手段と、アライメントチェックを制御するためのアラインメントチェク制御手段であって、前記スタックアラインメントチェック手段に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック手段を無効にする手段と、を備える装置を提供する。別の態様から見ると、本発明は、データを処理する方法であって、プログラム命令に応じてデータ処理動作を実行するステップと、スタックポインタレジスタ内にスタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するステップと、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答して、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するステップと、スタック構成パラメータに応答して、メモリアクセス時に前記スタックポインタ値を使用せずに実行されるアライメントチェックとは独立して選択的に前記検出ステップを省略するステップと、を含む方法を提供する。本発明の実施形態は、上記の装置および方法と合致する実行環境を提供するための適切なソフトウェアを実行する汎用コンピュータで作られた仮想マシンの形で提供されてもよい。本発明の実施形態を、ここで添付の図面を参照しながら、ほんの一例として説明する。図1は、メモリ管理ユニット6を介してキャッシュメモリ8に連結されたプロセッサコア4を含むデータ処理装置2を概略的に示す。メインメモリはキャッシュメモリ8に連結されるが、メインメモリは図1には図示されない。構成データストア10は、データ処理装置2のための様々な構成パラメータを制御するため、ソフトウェア制御下で書き込み可能な構成データを保存する。この構成データストアは、構成パラメータを設定するために書き込みされ、構成パラメータを読み取るために読み取りがなされる、コプロセッサ例えばCP15の形で提供される。プロセッサコア4は、汎用レジスタバンク12、マルチプライヤ14、シフター16およびアダー18から形成されるデータ経路を含んでいる。データ経路12、14、16、18は、デコーダ回路20により生成された制御信号により制御されるが、デコーダ回路20は、命令パイプライン22から受け取ったプログラム命令を復号し、必要なデータ処理動作を実行するためにデータ経路12、14、16、18を構成するための制御信号を生成し、また当該処理命令に必要な機能を実行するためにプロセッサコア4の他の部分を構成し制御する。プロセッサコア4は、一般的に多くのさらなる回路要素を含むであろうが、明瞭化のためにそれらは図1から省略されることが理解されるであろう。プロセッサコア4は複数の例外レベルで動作可能である。これら例外レベルの各々は例外レベルモード値に対応し、モードレジスタ24は、プロセッサコア4の現在の例外レベルモードを示す値を保存する。例外レベルモードの各々は関連スタックポインタレジスタ26、28、30、32を有し、特定の例外レベルモードで動作する場合にスタックアクセス命令により命令されたスタックメモリアクセスに使用される各スタックポインタ値を保存する。したがって、プロセッサコア4が例外レベル2EL2である場合に実行されるスタックプッシュまたはスタックポップ命令は、スタックポインタレジスタ30内に保存されたスタックポインタ値を使用することとなる。プロセッサコア4は、キャッシュメモリ8を介してメモリから読み込まれたデータおよび命令を使用する。データの項目または命令がキャッシュメモリ8内に存在しない場合、メインメモリへのアクセスはそのデータ項目または命令を取り込むためになされる。多くの可能性のあるキャッシュおよびメモリアーキテクチャが可能であり、図1は、そのようなキャッシュまたはメモリアーキテクチャのほんの一例を示す。プロセッサコア4は、メモリ管理ユニット6により物理アドレスに変換される仮想アドレスを生成する。メモリ管理ユニット6は、このアドレス変換を行なうためにページテーブルのデータを一般的に使用する。メモリ管理ユニット6は、さらに特定のメモリアクセスが許可されるべきかどうか判断するためのアクセス許可データも保存する。メモリ管理ユニットは、スタックアラインメントチェック回路36および一般的なアラインメントチェック回路38を含むアラインメントチェック回路34を含む。スタックアラインメントチェック回路36は、スタックプッシュ命令またはスタックポップ命令等のスタックメモリアクセスのアラインメントのチェックを担う。一般的なアラインメントチェック回路38は、汎用ロード命令または汎用保存命令のようなメモリアクセスのすべてのチェックを担う。アラインメントチェック回路34は、スタックアラインメントチェック回路36および一般的なアラインメントチェック回路38を互いに独立して選択的に有効または無効とするアラインメントチェック制御回路40を含む。したがって、スタックアラインメントチェック回路36を有効または無効のいずれかにでき、かつ独立して一般的なアラインメントチェック回路38を有効または無効のいずれかにできる。スタックアラインメントチェック回路36および一般的なアラインメントチェック回路38はしたがって、チェックしない、スタックデータストアへのアクセス時のみのチェックする、またはすべてのメモリアクセス時にチェックすることを組み合わせて行うことができる。アラインメントチェック制御回路40は構成データストア10内に保存された構成パラメータに応答する。スタックポインタレジスタ26、28、30および32の各々に対して、当該スタックポインタレジスタ26、28、30、32に対応する例外レベルで生じるスタックアクセスに対して、アラインメントチェックを無効とするかどうかを示すスタック構成パラメータが保存される。したがって、スタックアラインメントチェックは、例外レベルEL0およびEL2に対応するスタックポインタ値に対して実行されてもよい一方で、スタックアラインメントチェックは例外レベルEL1およびEL3に対して無効とされてもよい。構成データストア10はまた、実行された各アラインメントチェックについて、一致がそれに対してチェックされるアラインメントサイズを示すデータも含んでおり、例えば、アラインメントが、23または24の倍数であるメモリアドレスに対応する64ビットのメモリアドレス境界であるかまたは128のメモリアドレス境界であるかに対してチェックされる。構成データストア10は、一般的なアラインメントチェック回路38が無効かまたは有効かを制御する一般的な構成パラメータをさらに含む。このような一般的なアラインメントチェックに強制されるアラインメントのサイズも、構成パラメータとして指定される。構成データストア10内に保存された確認パラメータは、ソフトウェア制御下で書かれてもよい。これらの構成パラメータはハードウェアコントロールの下で設定されてもよく、またはハードウェア内にあらかじめプログラムされてもよい。図2は、異なる例外レベルに対応する4つのスタックデータストア44、46、48、50を含むメモリ42を概略図に示す。スタックポインタレジスタ26、28、30、32に保存されたスタックポインタ値は、プッシュ動作またはポップ動作等のスタックメモリアクセスがこれらに対して実行される、これらのスタックデータストア44、46、48、50のそれぞれのトップアドレス値を示す。例として、スタックデータストア46に関連したアラインメント条件が、図2に示される。アラインメントが強制されている場合、2Nの倍数の整数であるアドレスだけが有効なスタックポインタ値である。スタックポインタ値がこれらの許容値と異なることが判明した場合、例外が引き起こされる。このような例外が引き起こされたことによりもたらされる結果は実装により異なる可能性がある。そのような例外は、当該システムの性質に依存するソフトウェア応答例外処理コードの実行、またはハードウェア応答リセットの強制を引き起こす可能性がある。図示された例において、スタックアラインメント条件として強制される64ビットのアラインメントまたはスタックアラインメント条件として強制される128ビットのアラインメントにそれぞれ対応して、Nの値は3または4であってもよい。図2には、スタックアラインメントチェック回路38が無効になるかどうかもさらに図示され、この場合、任意のアドレスは、スタックポインタ値として利用されてもよく、スタックデータストア46のトップアドレスはメモリアドレス空間内の任意の位置とすることができる一般的なアラインメントチェック回路38によりすべてのメモリアクセスに別個に強制されるあらゆるアラインメント制約を受ける。図3は、アラインメントチェック回路34の動作を概略的に図示する流れ図である。ステップ52で、メモリアクセスが受信されるまで、処理は待機している。ステップ54で、メモリアクセスのアドレスがスタックポインタレジスタから来るかどうか判断する。メモリアクセスがスタックメモリアクセスである場合、つまり、スタックポインタレジスタからアドレスが来た場合、処理はステップ56に移る。ステップ56で、プロセッサコア4が実行している例外レベルモードレジスタ24を使用して決定されてもよいように現在の例外レベルに対してスタックアラインメントチェックを無効とするかどうかが決定される。スタックアラインメントチェックが有効な場合、ステップ58は当該アクセスが現在の例外レベルの所定のアラインメント条件と一致するかどうか判定する。所定のアラインメント条件が満たされるすなわち、アクセスが適切にアラインされる場合、処理はアクセスが許可されるステップ60に移る。アクセスが所定のアラインメント条件と一致しないすなわちアクセスが誤ってアラインされる場合、処理はステップ62に移り、スタックがアラインしないアクセスの応答が引き起こされる。ステップ56の決定が、スタックアラインメントチェックを無効とするという決定である場合、処理はステップ64に移り、一般的なアラインメントチェックを無効にするかどうかに関しての決定がなされる。ステップ54の決定が、メモリアクセスはスタックメモリアクセスでないすなわち、スタックポインタレジスタから読み込まれたアドレスの使用を含んでいない場合、処理はステップ64に移り、一般的なアラインメントチェックが現在無効であるかどうかについて判定がなされる。一般的なアラインメントチェックが現在無効である場合、処理はアクセスが許可されるステップ60に移る。ステップ64での判定が、一般的なアラインメントチェックを無効ではないという決定である場合、処理はステップ66に移り、アクセスが一般的なアクセスに対する所定のアラインメント条件すなわち汎用アラインメント条件と一致するかどうかに関して判定がなされる。アクセスがこの汎用アラインメント条件と一致するすなわちアラインされる場合、処理はアクセスが許可されるステップ60に移る。アクセスが汎用アラインメント条件と一致しないすなわち、正しくアラインされない場合、処理はステップ68に移り、一般的なアラインしないアクセスの応答が引き起こされる。図4は、使用可能な仮想マシンの実装を示す。前述の実施形態は、当該技術に対応する特定の処理ハードウェアを操作するための装置および方法の観点から本発明を実行するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム510に対応するホストオペレーティングシステム520を実行するホストプロセッサー530上で実行する。一般的に、大規模で強力なプロセッサは適切な速度で実行する仮想マシン実装の提供に必要とされるが、このような方法は特定の状況、例えば互換性、または再利用のため別のプロセッサに固有のコードを実行する要望がある場合、正当化される場合がある。仮想マシンプログラム510はアプリケーションプログラム500にアプリケーションプログラムインターフェースを供給するが、これは、実際のハードウェアにより提供されるアプリケーションプログラムインターフェースと同じであり、このハードウェアは仮想マシンプログラム510によりモデル化された装置である。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想マシンプログラム510を使用して、アプリケーションプログラム500の内部から実行して、仮想マシンのハードウェアとのそれらの対話をモデル化してもよい。"