JP5703378B2 - アラインメント制御 - Google Patents

アラインメント制御 Download PDF

Info

Publication number
JP5703378B2
JP5703378B2 JP2013523662A JP2013523662A JP5703378B2 JP 5703378 B2 JP5703378 B2 JP 5703378B2 JP 2013523662 A JP2013523662 A JP 2013523662A JP 2013523662 A JP2013523662 A JP 2013523662A JP 5703378 B2 JP5703378 B2 JP 5703378B2
Authority
JP
Japan
Prior art keywords
stack
stack pointer
pointer value
alignment
address
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.)
Active
Application number
JP2013523662A
Other languages
English (en)
Other versions
JP2013536504A (ja
Inventor
リチャード・ロイ・グリセンスウェイト
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2013536504A publication Critical patent/JP2013536504A/ja
Application granted granted Critical
Publication of JP5703378B2 publication Critical patent/JP5703378B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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, look ahead
    • G06F9/3824Operand accessing

Description

本発明はデータ処理システムの分野に関する。より詳細には、本発明は、データ処理システム内で実行されるメモリアクセスのアクセスアラインメント制御に関する。
データ処理システムにメモリアクセスのアラインメントのチェック機構が提供されることが知られている。メモリ内の任意の個別のバイトが任意の大きさのメモリアクセスによりアドレス指定されてもよいようにメモリアクセスは制約を受けない場合があり、または、メモリ内で、メモリアクセスが、例えばハーフワード、ワード、ダブルワード等の境界とのみアラインされるようにメモリアクセスはアラインメント制限されてもよい。一般的に言えば、メモリアクセスにアラインメント要件を強制することは高速メモリアクセスを提供するには有用であり、例えば、広いデータバスはデータバス幅とアラインしていないアクセスを格納する必要がないメモリアクセスと一緒に使用されてもよい。しかしながら、メモリアクセスを単にアラインさせるという要件は、アクセスされているデータ要素が強制されたアラインメント制約にアラインする境界を有する必要がない場合があるパックされたデータ構造を操作する場合に問題となる。ある状況では、実行される命令には、何等かのスタックデータストアへのリード・モディファイ・ライト命令等のデータアクセスのアラインメントが必要となる場合がある。更に、アプリケーションバイナリーインターフェースのいくつかはアクセスのアラインメントを指定する。
一態様から見ると、本発明はデータを処理するための装置であって、
データ処理動作を実行するプログラム命令に応答する処理回路と、
前記処理回路に連結され、スタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するように構成されたスタックポインタレジスタと、
前記処理回路および前記スタックポインタレジスタに連結され、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのスタックメモリアクセスを指定するプログラム命令に応答し、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するように構成された、スタックアラインメントチェック回路と、
前記スタックアラインメントチェック回路に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック回路を無効にする、アラインメントチェック制御回路と、を備える装置を提供する。
本発明の技術は、スタックメモリアクセスに適切となる場合があるアラインメント制約は、他のメモリアクセス(例えばスタックデータストアを含んでいないメモリアクセス)には適当でない場合があることを認識している。例えば、スタックデータストア内に保存されないデータ構造は、アラインメント制約がそのために問題となることになるパックされたデータ構造である場合がある一方で、スタックデータストアにアラインメント制約を適用することは、スタックポインタまたはスタックデータストアの破損を特定するのに役立つことになる。本発明の技術は、この状況を認識し、スタックメモリアクセスのアラインメントをチェックするためのスタックアラインメントチェック回路の機構を提供するが、これは、システム内で実行されるさらなるアラインメントチェック、例えばスタックメモリおよびスタックメモリ以外へのすべてのメモリアクセス時に実行されるアラインメントチェックとは独立して選択的に無効とする。したがって、スタックアラインメントチェックは、独立して制御されたメモリアクセスのさらなるチェックと組み合わせて実行することも、しないこともできる。よって、一般的なメモリアクセスにはアラインメントを強制しないが、スタックデータストアに対しては強制してもよい。
さらなるアラインメントチェックは、スタックポインタを使用しないメモリアクセスのアラインメントチェック等の様々な異なる形式を取る可能性があることが認識されるであろう。しかしながら、有用な構成は、さらなるアラインメントチェックがすべてのメモリアクセス(すなわち、スタックポインタを使用するおよび使用しないメモリアクセス)時に実行されるアラインメントチェックである構成である。
スタックメモリアクセスは、実行されているスタックポインタ値の更新に対応する、スタックアドレスのトップへの読み取り(ポップ)アクセスまたは書き込み(プッシュ)アクセスのいずれであってもよいことが理解されるであろう。
選択的に無効となるスタックアラインメントチェック回路に加えて、いくつかの実施形態ではさらに、任意のメモリアクセスが所定のアラインメント条件を満たすかどうか検出するための汎用アラインメントチェック回路を含んでもよい。したがってスタックアラインメントチェック回路を単独で使用することが可能であるが、このスタックアラインメントチェック回路は、汎用アラインメントチェック回路を有用に組み合わせる。汎用アラインメントチェック回路もアラインメントチェック制御回路により制御されてもよく、選択的に無効とすることができる。
強制されたアラインメント条件は変更することができる。所定のスタックアラインメント条件に制約がないことは、スタックアラインメントチェック回路を無効にすることと等しくなることになるかもしれない。しかしながら、アラインメント条件が、スタックポインタ値は2の倍数である整数であり、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が例外レベル2(EL2)である場合に実行されるスタックプッシュまたはスタックポップ命令は、スタックポインタレジスタ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はまた、実行された各アラインメントチェックについて、一致がそれに対してチェックされるアラインメントサイズを示すデータも含んでおり、例えば、アラインメントが、2または2の倍数であるメモリアドレスに対応する64ビットのメモリアドレス境界であるかまたは128のメモリアドレス境界であるかに対してチェックされる。
構成データストア10は、一般的なアラインメントチェック回路38が無効かまたは有効かを制御する一般的な構成パラメータをさらに含む。このような一般的なアラインメントチェックに強制されるアラインメントのサイズも、構成パラメータとして指定される。構成データストア10内に保存された確認パラメータは、ソフトウェア制御下で書かれてもよい。これらの構成パラメータはハードウェアコントロールの下で設定されてもよく、またはハードウェア内にあらかじめプログラムされてもよい。
図2は、異なる例外レベルに対応する4つのスタックデータストア44、46、48、50を含むメモリ42を概略図に示す。スタックポインタレジスタ26、28、30、32に保存されたスタックポインタ値は、プッシュ動作またはポップ動作等のスタックメモリアクセスがこれらに対して実行される、これらのスタックデータストア44、46、48、50のそれぞれのトップアドレス値を示す。
例として、スタックデータストア46に関連したアラインメント条件が、図2に示される。アラインメントが強制されている場合、2の倍数の整数であるアドレスだけが有効なスタックポインタ値である。スタックポインタ値がこれらの許容値と異なることが判明した場合、例外が引き起こされる。このような例外が引き起こされたことによりもたらされる結果は実装により異なる可能性がある。そのような例外は、当該システムの性質に依存するソフトウェア応答(例外処理コードの実行)、またはハードウェア応答(リセットの強制)を引き起こす可能性がある。
図示された例において、スタックアラインメント条件として強制される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の内部から実行して、仮想マシンのハードウェアとのそれらの対話をモデル化してもよい。
2 データ処理装置
4 プロセッサコア
6 メモリ管理ユニット
8 キャッシュメモリ
10 構成データストア
12 汎用レジスタバンク
14 マルチプライヤ
16 シフター
18 アダー
20 デコーダ回路
22 命令パイプライン
24 モードレジスタ
26、28、30、32 スタックポインタレジスタ
34 アラインメントチェック回路
36 スタックアラインメントチェック回路
38 一般的なアラインメントチェック回路
40 アラインメントチェック制御回路

Claims (20)

  1. データを処理するための装置であって、
    データ処理動作を実行するプログラム命令に応答する処理回路と、
    前記処理回路に連結され、スタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するように構成されたスタックポインタレジスタと、
    前記処理回路および前記スタックポインタレジスタに連結され、前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答し、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するように構成されたスタックアラインメントチェック回路と、
    前記スタックアラインメントチェック回路に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック回路を無効にする、アラインメントチェック制御回路と、を備える、装置。
  2. 前記さらなるアライメントチェックがすべてのメモリアクセスに対するアライメントチェックを含む、請求項1に記載の装置。
  3. 前記スタックデータストアへの前記メモリアクセスが、
    (i)前記スタックポインタ値によって指定されたスタックアドレスのトップで開始する前記スタックデータストアへ1つまたは複数のデータ値を保存し、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックプッシュ動作、および
    (ii)前記スタックポインタ値によって指定されたスタックアドレスのトップでスタートする前記スタックデータストアから1つまたは複数のデータ値を読み込み、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックポップ動作、のうちの1つである、請求項1に記載の装置。
  4. 前記処理回路に連結され、任意のメモリアドレスで前記メモリへの汎用アクセスを指定するプログラム命令に応答し、前記アドレスが所定の汎用アラインメント条件と一致するかどうか検出するように構成された汎用アラインメントチェック回路を備える、請求項2および3のうちのいずれか1項に記載の装置。
  5. 前記アラインメントチェック制御回路が前記汎用アラインメントチェック回路に連結され、かつ一般的な構成パラメータに応答して、前記スタックデータストアへの前記メモリアクセス時に、前記スタックポインタ値を使用して、前記スタックアラインメントチェック回路により実行されるアライメントチェックとは独立して、選択的に前記汎用アラインメントチェック回路を無効にする、請求項4に記載の装置。
  6. 記所定のスタックアラインメント条件が、
    前記スタックポインタ値に制約がない
    前記スタックポインタ値が、Nが0でない整数値であるとした場合の、2の倍数である整数であるか
    のうちの1つである、請求項1から5のいずれか1項に記載の装置。
  7. Nが3および4のうちの1つである、請求項6に記載の装置。
  8. Nがユーザー制御の下で設定される、請求項およびのいずれか1項に記載の装置。
  9. 前記装置は、各スタックポインタ値をそれぞれ保存する複数のスタックポインタレジスタを備え、
    前記処理回路が複数の例外レベルのいずれかで動作するよう構成され、
    それぞれの例外レベルは、前記複数のスタックポインタレジスタのうちの、それぞれの1つに関連付けられ、
    前記複数のスタックポインタレジスタのうちの、それぞれの1つは、関連付けられた前記例外レベルにて前記処理回路が動作している時に使用され、
    前記装置は、それぞれのスタック構成パラメータを有し、
    それぞれの前記スタック構成パラメータは、関連付けられた例外レベルにおいて、前記スタックアラインメントチェック回路を無効にするか否かを制御するためのものである、請求項1から請求項8のいずれか1項に記載の装置。
  10. データを処理するための装置であって、
    プログラム命令に応じてデータ処理動作を実行するための処理手段と、
    スタックポインタ値を保存するためのスタックポインタ手段であって、前記処理手段に連結され、前記スタックポインタ値がスタックデータストアのメモリ内のアドレスを示す、手段と、
    アライメントをチェックするためのスタックアラインメントチェック手段であって、前記処理手段および前記スタックポインタ手段に連結され、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出するために前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応答するように構成された、手段と、
    アライメントチェックを制御するためのアラインメントチェク制御手段であって、前記スタックアラインメントチェック手段に連結され、スタック構成パラメータに応答して、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、選択的に前記スタックアラインメントチェック手段を無効にする、手段と、を備える、装置。
  11. データを処理する方法であって
    タックポインタレジスタ内にスタックデータストアのメモリ内のアドレスを示すスタックポインタ値を保存するステップと、
    前記スタックポインタ値によって指定されたアドレスで前記スタックデータストアへのメモリアクセスを指定するプログラム命令に応じて、前記スタックポインタ値が所定のスタックアライメント条件と一致するかどうか検出することが、有効とされているか、または、無効とされているかを、スタック構成パラメータに基づいて判断するステップと
    前記検出することが有効とされていると判断される場合に、前記プログラム命令に応じて、前記検出することを実行するステップと、
    前記検出することが無効とされていると判断される場合に、前記プログラム命令に応じて、メモリアクセス時に実行されるさらなるアライメントチェックとは独立して、前記検出することを省略するステップと、を含む、方法。
  12. 前記さらなるアライメントチェックがすべてのメモリアクセスに対するアライメントチェックを含む、請求項11に記載の方法。
  13. 前記スタックデータストアへのメモリアクセスが、
    (i)前記スタックポインタ値によって指定されたスタックアドレスのトップで開始する前記スタックデータストアへ1つまたは複数のデータ値を保存し、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックプッシュ動作、
    (ii)前記スタックポインタ値によって指定されたスタックアドレスのトップで開始する前記スタックデータストアから1つまたは複数のデータ値を読み込み、かつスタックアドレスの新しいトップを示すために前記スタックポインタ値を更新する、スタックポップ動作、のうちの1つである、請求項11および12のいずれか1項に記載の方法。
  14. 任意のメモリアドレスで前記メモリへの汎用アクセスを指定するプログラム命令に応答して、前記アドレスが所定の汎用アライメント条件と一致するかどうか検出する汎用アラインメントチェックを実行するステップを含む、請求項11、12および13のいずれか1項に記載の方法。
  15. 一般的な構成パラメータに応答して、前記スタックデータストアへのメモリアクセス時に、前記スタックポインタ値を使用して実行されるアライメントチェックとは独立して、選択的に前記汎用アラインメントチェックを無効にする、請求項14に記載の方法。
  16. 前記所定のスタックアラインメント条件が、
    前記スタックポインタ値に制約がない
    前記スタックポインタ値が、Nが0でない整数値であるとした場合の、2の倍数である整数であるか
    のうちの1つである、請求項11から15のいずれか1項に記載の方法。
  17. Nは3および4のうちの1つである、請求項16に記載の方法。
  18. Nはユーザー制御の下で設定される、請求項16および請求項17のいずれか1項に記載の方法。
  19. 前記方法は、
    複数のスタックポインタレジスタのそれぞれに複数のスタックポインタ値を保存するステップと、
    理回路が複数の例外レベルのいずれか動作するステップと
    ある例外レベルで前記処理回路が動作しているときに、スタックアラインメントチェックを行うための前記検出することを有効とするか、または、無効とするかを、関連付けられた前記スタック構成パラメータに基づいて制御するステップとをさらに含み
    それぞれの例外レベルは、前記複数のスタックポインタレジスタのうちの、それぞれの1つに関連付けられ、
    前記複数のスタックポインタレジスタのうちのそれぞれの1つは、関連付けられた前記例外レベルにて前記処理回路が動作している時に使用され、
    それぞれの前記例外レベルは、それぞれのスタック構成パラメータに関連付けられる、請求項11から18のいずれか1項に記載の方法。
  20. コンピュータに請求項11から19のうちのいずれか1項に記載の方法を実行させるためのコンピュータプログラムを含む仮想マシン。
JP2013523662A 2010-08-12 2011-06-13 アラインメント制御 Active JP5703378B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1013528.3A GB2482710A (en) 2010-08-12 2010-08-12 Enabling stack access alignment checking independently of other memory access alignment checking
GB1013528.3 2010-08-12
PCT/GB2011/051090 WO2012020237A1 (en) 2010-08-12 2011-06-13 Alignment control

Publications (2)

Publication Number Publication Date
JP2013536504A JP2013536504A (ja) 2013-09-19
JP5703378B2 true JP5703378B2 (ja) 2015-04-15

Family

ID=42937869

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013523662A Active JP5703378B2 (ja) 2010-08-12 2011-06-13 アラインメント制御

Country Status (10)

Country Link
US (1) US9760374B2 (ja)
EP (1) EP2603852B1 (ja)
JP (1) JP5703378B2 (ja)
KR (1) KR101924821B1 (ja)
CN (1) CN103052942B (ja)
GB (1) GB2482710A (ja)
IL (1) IL223731A (ja)
MY (1) MY164219A (ja)
TW (1) TWI512460B (ja)
WO (1) WO2012020237A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280492B2 (en) * 2013-12-28 2016-03-08 Intel Corporation System and method for a load instruction with code conversion having access permissions to indicate failure of load content from registers
US10496292B2 (en) * 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
GB2563887B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Masking of architectural state associated with a realm
CN110175049B (zh) * 2019-05-17 2021-06-08 西安微电子技术研究所 一种支持地址未对齐的数据拆分与聚合访问的处理系统及方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
US5201043A (en) * 1989-04-05 1993-04-06 Intel Corporation System using both a supervisor level control bit and a user level control bit to enable/disable memory reference alignment checking
GB2230118B (en) * 1989-04-05 1992-12-23 Intel Corp Microprocessor providing selectable alignment checking on memory references
JP3507193B2 (ja) * 1995-06-06 2004-03-15 株式会社東芝 ロード・ストア命令処理装置
US5666508A (en) * 1995-06-07 1997-09-09 Texas Instruments Incorporated Four state two bit recoded alignment fault state circuit for microprocessor address misalignment fault generation
US5596717A (en) * 1995-06-07 1997-01-21 Texas Instruments Incorporated Four state token passing alignment fault state circuit for microprocessor address misalignment fault generation
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer
US6055619A (en) 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
US6341344B1 (en) * 1998-03-20 2002-01-22 Texas Instruments Incorporated Apparatus and method for manipulating data for aligning the stack memory
US6697834B1 (en) * 1999-12-01 2004-02-24 Sun Microsystems, Inc. Mutual exculsion system and method for restarting critical sections of code when preempted during a critical section
US6829700B2 (en) * 2000-12-29 2004-12-07 Stmicroelectronics, Inc. Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US6772372B2 (en) * 2001-03-06 2004-08-03 Hewlett-Packard Development Company, L.P. System and method for monitoring unaligned memory accesses
US7134000B2 (en) 2003-05-21 2006-11-07 Analog Devices, Inc. Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
US7493599B2 (en) * 2003-11-26 2009-02-17 Intel Corporation Device, system and method for detection and handling of misaligned data access
US7797681B2 (en) * 2006-05-11 2010-09-14 Arm Limited Stack memory selection upon exception in a data processing system

Also Published As

Publication number Publication date
EP2603852A1 (en) 2013-06-19
KR20130098303A (ko) 2013-09-04
JP2013536504A (ja) 2013-09-19
TW201229752A (en) 2012-07-16
IL223731A (en) 2016-09-29
MY164219A (en) 2017-11-30
TWI512460B (zh) 2015-12-11
US20120042136A1 (en) 2012-02-16
WO2012020237A1 (en) 2012-02-16
KR101924821B1 (ko) 2019-02-27
CN103052942A (zh) 2013-04-17
GB201013528D0 (en) 2010-09-29
CN103052942B (zh) 2016-08-03
US9760374B2 (en) 2017-09-12
GB2482710A (en) 2012-02-15
EP2603852B1 (en) 2015-04-29

Similar Documents

Publication Publication Date Title
JP5703378B2 (ja) アラインメント制御
JP5571201B2 (ja) ハードウェアモードおよびセキュリティフラグに基づく、読み出される命令用のメモリエリアの制限
JP2016207231A (ja) 命令エミュレーションプロセッサ、方法、およびシステム
US20130339657A1 (en) Local clearing control
TWI808869B (zh) 硬體處理器及處理器
JP6005392B2 (ja) ルーティングのための方法及び装置
EP2686765A1 (en) Page fault handling mechanism
US9753870B2 (en) Hardware monitor with context switching and selection based on a data memory access and for raising an interrupt when a memory access address is outside of an address range of the selected context
JP5625809B2 (ja) 演算処理装置、情報処理装置及び制御方法
JP2008033890A (ja) マイクロコンピュータシステム
JP6920286B2 (ja) 例外処理
US11461104B2 (en) Deferred system error exception handling in a data processing apparatus
JP2018531462A6 (ja) 例外処理
CN107851015B (zh) 向量操作数位大小控制
JP2006221606A (ja) データプロセッサ
JP2009271597A (ja) プロセッサ
JP2006236234A (ja) 割込み処理回路
JPWO2020182498A5 (ja)
EP2525286A1 (en) Co-processor interface
JP2002312163A (ja) 情報処理装置、情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150107

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: 20150126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150223

R150 Certificate of patent or registration of utility model

Ref document number: 5703378

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