JP5044387B2 - 情報処理装置及びそのスタックポインタ更新方法 - Google Patents

情報処理装置及びそのスタックポインタ更新方法 Download PDF

Info

Publication number
JP5044387B2
JP5044387B2 JP2007333386A JP2007333386A JP5044387B2 JP 5044387 B2 JP5044387 B2 JP 5044387B2 JP 2007333386 A JP2007333386 A JP 2007333386A JP 2007333386 A JP2007333386 A JP 2007333386A JP 5044387 B2 JP5044387 B2 JP 5044387B2
Authority
JP
Japan
Prior art keywords
stack
access
address
unit
information
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.)
Expired - Fee Related
Application number
JP2007333386A
Other languages
English (en)
Other versions
JP2009157542A (ja
Inventor
梨香 小野
均 鈴木
純一 佐藤
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2007333386A priority Critical patent/JP5044387B2/ja
Priority to US12/314,073 priority patent/US8234476B2/en
Publication of JP2009157542A publication Critical patent/JP2009157542A/ja
Application granted granted Critical
Publication of JP5044387B2 publication Critical patent/JP5044387B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)

Description

本発明は、メモリ保護機能を有する情報処理装置に関する。
不正なメモリアクセスからメモリを保護する技術、いわゆるメモリ保護技術が知られている。従来知られているメモリ保護技術は、CPU(Central Processing Unit)等のプログラムを実行する命令実行部からメモリへのアクセスが行なわれる際に、命令実行部から出力されるメモリアクセス要求に含まれているアクセス先アドレス情報を、アクセスが許可されるメモリ領域を表すメモリ保護情報と比較照合することにより、アクセス要求の妥当性を検証するものである。これにより、アクセスが許可されていないメモリ領域への不正なメモリアクセスの検出が可能となり、不正なメモリアクセスからメモリを保護することができる。
特許文献1は、情報処理装置におけるメモリ保護のためのアドレス比較方式を開示している。具体的に述べると、特許文献1に開示されたアドレス比較方式は、プログラムによってアクセスされるアクセス先アドレスが、アクセスが許可された部分メモリ空間の範囲内(アクセス許可範囲内)であるか否かを、アクセス許可範囲の下限アドレス及び上限アドレスとアクセス先アドレスを比較することによって判定する。そして、アクセス先アドレスがアクセス許可範囲内にあるときのみ、当該部分メモリ空間へのアクセスが許可される。
しかしながら、従来のメモリ保護技術は、メモリの一部がスタックとして使用されている場合に、不正なスタック操作によるメモリのデータ破壊を防ぐためには不十分である。第1の問題は、スタックとしてアクセス可能なメモリ領域(以下、スタック領域と呼ぶ)と、スタック以外の用途のためにアクセス可能なメモリ領域とが隣接している場合に、スタック操作命令に基づくメモリアクセスがスタック領域外を指定していてもアクセスが許可され、スタック外に格納されたデータの破壊が生じるおそれがある点である。
また、例えば、従来のメモリ保護技術でスタックオーバーフローを検出する場合を考えると、上述したメモリアクセス要求が出力された後の判定となる。つまり、命令実行部が単一命令又は複数の命令列の実行によってスタック操作(プッシュ操作又はポップ操作)を実行した後に、命令実行部からスタック領域外へのアクセスが発生したタイミングでスタックオーバーフローが検出される。つまり、従来のメモリ保護技術は、スタック操作命令の実行前にスタックオーバーフローを検出することが困難であるという第2の問題点がある。
特許文献2は、スタック領域とその他の用途で使用される領域との間に、スタックオーバーフロー検出のための冗長なバッファ領域を設ける技術を開示している。特許文献2の技術によれば、スタック領域を他の用途のメモリ領域から離間させるため、上述した第1の問題点を解決可能である。しかしながら、特許文献2に開示された技術は、メモリ使用効率の観点からは好ましくない。また、特許文献2の技術は、スタック操作命令を実行した後にスタックオーバーフローを検出するものである点は上述した従来のメモリ保護技術と相違がなく、例えば、スタックオーバーフローの発生原因を特定するデバッグ作業を効率よく行えない等の問題を有する。
特許文献3には、関数(プロシージャ、サブプログラム等を含む)の呼び出し等の際に、スタックポインタの値を更新することによってスタックの伸張が行われたことを契機として、スタックポインタを保持するためのスタックポインタレジスタの値をオーバーフロー検出アドレスと比較する技術が開示されている。図13は、特許文献3に記載された説明図である。スタックポインタレジスタ(SPR)82に格納されたスタックポインタ値と、スタックオーバーフローレジスタ81に格納されたオーバーフロー検出アドレスとを比較器83において比較することによって、スタック領域を超えてスタックが伸張されたことを検知する。これにより、特許文献3の技術によれば、スタックオーバーフローの発生をスタック操作命令の実行前に予測的に検出できる。
特開昭61−75446号公報 特開2000−155677号公報 特開2000−20352号公報
しかしながら、上述した特許文献3に開示された技術では、スタックオーバーフロー検出アドレスが、スタックオーバーフロー検出のために設けられたスタックオーバーフローレジスタ81に保持される。したがって、ハードウェア構成が冗長であるという問題がある。
本発明の第1の態様にかかる情報処理装置は、命令実行部、メモリ保護情報記憶部、保護違反検出部、及びチェック部を有する。前記命令実行部は、アドレス空間へのアクセス命令の実行に基づいてアクセス先を指定するための第1のアドレス情報を含むアクセス要求を出力する。また、前記命令実行部は、前記アドレス空間に含まれるスタックをスタックポインタの更新によって伸張させるスタック伸張命令の実行に基づいて、伸張後のスタックポインタ位置を特定するための第2のアドレス情報を含むチェック要求を出力する。
前記メモリ保護情報記憶部は、前記アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分空間を規定するためのメモリ保護情報を記憶する。
前記保護違反検出部は、前記第1のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することにより、前記アクセス先が、前記複数の部分空間の中に含まれるか否かを検出する。
前記チェック部は、前記第2のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することにより、前記スタックポインタ位置が、前記複数の部分空間のうちで前記スタックとして使用可能なスタック領域として予め確保されている部分空間に含まれるか否かを確認する。
本発明の第2の態様は、命令実行部と、アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分空間を規定するためのメモリ保護情報を記憶するメモリ保護情報記憶部とを備える情報処理装置におけるスタックポインタ更新方法である。当該方法は、以下に列挙するステップ(a)〜(d)を含む。
(a)前記アドレス空間へのアクセス命令の実行に応じて、アクセス先を指定するための第1のアドレス情報を含むアクセス要求を前記命令実行部から出力させるステップ、
(b)前記第1のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することによって、前記アクセス先が前記複数の部分空間の中に含まれるか否かを検出するステップ、
(c)前記アドレス空間に含まれるスタックをスタックポインタの更新によって伸張させるスタック伸張命令の実行に応じて、伸張後のスタックポインタ位置を特定するための第2のアドレス情報を含むチェック要求を前記命令実行部から出力させるステップ、
(d)前記第2のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することによって、前記複数の部分空間のうちで前記スタックとして使用可能なスタック領域として予め確保されている部分空間に前記スタックポインタ位置が含まれるか否かを確認するステップ。
上述した本発明の第1及び第2の態様によれば、不正なメモリアクセスを検出に使用するために前記メモリ保護情報記憶部に記憶された前記メモリ保護情報を、スタック伸張の適否を確認するためにも併用する。このため、スタック伸張の適否を確認するために必要となるスタック領域のアドレス範囲を規定するアドレス情報を保持するための記憶部を独立に設ける必要がない。
本発明により、スタック伸張の適否を確認するために使用されるアドレス情報を、不正なメモリアクセスを検出するメモリ保護のために使用されるアドレス情報と兼用し、共通の記憶部に格納することで、スタック伸張の適否の確認に要する冗長なハードウェアを削減することができる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
なお、以下に述べる発明の実施の形態では、CPU(Central Processing Unit)の用語は、命令フェッチ機能、命令デコード機能、命令実行機能を有する処理ユニットを指すものとして使用される。
<発明の実施の形態1>
本実施の形態にかかる情報処理装置1は、メモリ保護機能を有する。さらに、情報処理装置1は、メモリ保護機能のためのハードウェアを利用して、例えば関数呼び出し等に起因してスタックの伸張、つまりスタックポインタの更新を行なう際に、呼び出し先関数の実行によるスタックオーバーフローの発生を予測的に検出する機能を有する。
図1は、情報処理装置1の主要な部分の構成を示すブロック図である。図1において、CPU10は、メモリ13から命令を読み出し、読み出した命令をデコードし、デコードされた命令に応じた処理、例えば、算術演算及び論理演算等の演算処理、並びにメモリ13に対するリードアクセス及びライトアクセスを実行する。さらに、本実施の形態にかかるCPU10は、関数呼び出し又はサブプログラム呼び出し等のプログラム呼び出しに応じて実行プログラムの切り替えを行う際に、呼び出し先プログラムの実行の妥当性をメモリ保護の観点から検証する。このため、CPU10は、呼び出し先プログラムの実行に先立って、呼び出し先プログラムがアクセスを行なう予定のメモリ領域(以下、被チェック領域と呼ぶ)のアドレスを後述する保護設定チェック部14に出力する。
本実施の形態における被チェック領域は、呼び出し元関数及び呼び出し先関数を含むタスクに対して予め割り当てられているスタック領域(スタックとして利用するために割り当てられたメモリ領域)から、スタックの伸張によって呼び出し先関数に新たに割り当てられるメモリ領域を含む。ここで、タスクとは、マルチタスク環境で並列実行されるプログラム単位を意味する。このようなマルチタスク環境は、CPU10と、CPU10で実行されるタスクのスケジューリングを担うオペレーティングシステムプログラム(OS)によって実現される。
メモリ保護部11は、CPU10から出力されるメモリ13に対するアクセス要求を受信する。CPU10から供給されるアクセス要求には、リード/ライト種別、アクセス先アドレス、さらにライトアクセスの場合には書き込みデータが含まれる。アクセス先アドレスは、様々な形式で指定可能である。例えば、1ワード単位でアクセス先を指定するために、アクセス先アドレスが1つのアドレスによって指定される場合がある。また、複数ワード単位でアクセス先を指定するために、ベースアドレスと転送を要求するデータサイズの組合せ、又は転送を要求するデータが配置された場所の下限アドレスと上限アドレスの組合せ等によって指定される場合がある。
メモリ保護情報記憶部110に格納されるメモリ保護情報は、CPU10で実行されているタスクに応じて設定され、CPU10で実行されるタスクの切り替えに応じて、切り替え先のタスクに応じた設定内容となるよう更新される。メモリ保護情報記憶部110の書き換えは、例えば、CPU10で実行されるタスクの切り替えの際に起床されるシステムプログラムによって、切り替え先のタスクに応じた設定内容に更新される。
メモリ保護情報におけるアクセス許可されるメモリ領域の設定も、アクセス先アドレスと同様に、様々な形式により行うことができる。例えば、メモリ保護情報におけるメモリ領域の設定は、メモリ領域の下限アドレス及び上限アドレスの組合せにより指定されてもよいし、メモリ領域の先頭アドレス(下限アドレス又は上限アドレス)と領域サイズの組合せにより指定されてもよい。また、メモリ領域の先頭アドレスとマスクされる下位ビット数を指定することによって、先頭アドレスから2のべき乗分のメモリ領域を指定する方法でもよい。つまり、メモリ保護の対象となるメモリ領域の指定方法は特に限定されない。
さらに、メモリ保護情報記憶部110に格納されるメモリ保護情報は、複数のアクセス許可領域の各々がスタック領域であるか否か、言い換えると、スタックとして参照可能であるか否かを示すスタック参照許可情報を保持する。
メモリ保護部11に含まれるメモリ保護違反検出部111は、CPU10がアクセスを要求するアクセス先アドレスとメモリ保護情報記憶部110に設定されたメモリ保護情報とを比較し、メモリアクセス要求に含まれるアクセス先アドレスがアクセスの許可されたメモリ領域に含まれるか否かを検出する。
アクセス制御部112は、メモリ保護違反検出部111の検出結果に応じて、メモリアクセス要求に基づくメモリ13へのアクセス可否を制御する。具体的に述べると、アクセス先アドレスがアクセス許可されたメモリ領域に含まれるとメモリ保護違反検出部111により検出された場合に、アクセス制御部112はメモリアクセスを許可する。一方、アクセス先アドレスがアクセスの禁止されたメモリ領域に含まれるとメモリ保護違反検出部111により検出された場合、アクセス制御部112はメモリアクセスを禁止する。なお、メモリ保護違反検出部111又はアクセス制御部112は、アクセスの禁止されたメモリ領域へのアクセスを検出した場合に、不正なアクセスを検出したことを示す信号をCPU10に出力するとよい。
セレクタ113は、メモリ保護違反検出部111に入力され、メモリ保護情報と比較されるアドレス情報を、CPU10から入力されるメモリアクセス要求に含まれるアクセス先アドレスと、後述するチェック要求に含まれる被チェック領域アドレスとの間で切り替える。本実施の形態におけるセレクタ113の動作は、後述する保護設定チェック部14により制御される。
メモリバス12は、メモリバス12を介してメモリ保護部11と接続されている。メモリ13は、例えば、CPU10に読み出されて実行されるシステムプログラムやアプリケーションプログラムの格納領域、及びシステムプログラムやアプリケーションプログラムによって使用されるデータの格納領域として使用される。つまり、メモリ13は、RAM、ROM、フラッシュメモリ等、又はこれらの組合せである。また、メモリバス12は、アドレスバス及びデータバスの総称である。
保護設定チェック部14は、被チェック領域アドレスを含むチェック要求をCPU10から受信し、被チェック領域アドレスがスタック領域に含まれるか否かをチェックし、チェック結果をCPU10に供給する。より具体的に述べると、保護設定チェック部14は、アクセス要求の違反検出のために、実行中のタスクに対応してメモリ保護情報記憶部110に既に設定済みのメモリ保護情報をそのまま利用し、メモリ保護情報と被チェック領域アドレスとの比較を行う。そして、保護設定チェック部14は、上述したスタック参照許可情報によってスタックとしての参照が許可されたメモリ領域、つまりスタック領域に被チェック領域アドレスが含まれるか否かをチェックする。
さらに、図1に示す本実施の形態の構成では、被チェック領域アドレスとメモリ保護情報とを比較照合するためのハードウェアを、メモリ保護違反検出部111に含まれるアクセス先アドレスとメモリ保護情報とを比較照合するためのハードウェアと兼用させている。
ところで、本実施の形態の保護設定チェック部14は、スタック領域であるか否かに限らず、被チェック領域アドレスが呼び出し元のタスクに関するメモリ保護設定に適合しているかどうかを幅広くチェック可能である。例えば、あるプログラムAによるプログラムBの呼び出しに起因したプログラムAからプログラムBへの実行プログラムの切り替えに際して、呼び出し元プログラムAが呼び出し先プログラムBを介して間接的にアクセスを試みるメモリ領域を被チェック領域とするチェック要求を出力するとよい。このチェック要求に応じて、保護設定チェック部14が、プログラムAによるアクセス要求の違反検出のためにメモリ保護情報記憶部110に設定されたメモリ保護情報に基づいて、チェック要求が、プログラムAに対するメモリ保護設定に適合するものであるかをチェックすることができる。なお、ここで述べた呼び出し元プログラムAのアクセス権限をチェックし、アクセス権限の正当性が確認された場合にのみ呼び出し先プログラムBの実行を開始する技術については、本願と同一の発明者等及び出願人による先の出願(特願2007−306821号、出願日2007年11月28日)に詳しく記載されている。
なお、上述した図1の構成が一例に過ぎないことは勿論である。例えば、上述した説明では、メモリ保護部11がメモリバス12にアクセスするものとして説明したが、メモリバス12及びメモリ13へのアクセスは、メモリコントローラ(不図示)等の他の装置を介して行なうよう構成してもよい。また、チェック要求の物理的な転送経路とアクセス要求の物理的な転送経路の少なくとも一部は共通化されてもよい。また、図1では、セレクタ113がメモリ保護部11に含まれるように記載しているが、この記載が、情報処理装置1の現実のハードウェア構成を限定するものではない。つまり、図1のセレクタ113は、メモリアクセス要求に含まれるアクセス先アドレス又はチェック要求に含まれる被チェック領域アドレスをメモリ保護違反検出部111に対して選択的に供給できるように、メモリ保護違反検出部111の前段に配置されていればよい。
続いて以下では、図1に示した情報処理装置1に含まれる各要素の構成例及び動作について詳しく説明する。図2は、CPU10における関数呼び出し時の動作を説明するための概念図である。CPU10でタスクAに含まれる関数1が実行されている際に、別の関数2が呼び出されると、関数呼び出し処理を含む実行プログラムの切り替え処理を担うOSに処理が移る。(S101)。
OSによる関数呼び出し処理では、関数1実行時のレジスタ格納値の退避などに必要な関数2用のスタックを確保するために、スタックポインタの更新によりスタックを伸張させるスタック伸張命令が実行される。そして、スタック伸張命令の実行に応じたスタックポインタレジスタ104の更新前に、CPU10から保護設定チェック部14に対してチェック要求が発行される(S102)。このときのチェック要求には、伸張後のスタックポインタ値を特定するためのアドレス情報が被チェック領域アドレスとして含まれる。具体的には、例えば、スタックポインタレジスタ104に格納された現在のスタックポインタ値と関数2のために伸張予定のスタックサイズを被チェック領域アドレスとすればよい。また、アドレス減少方向にスタックを伸張する場合であれば、現在のスタックポインタ値から関数2のために伸張予定のスタックサイズを減算することで得られる更新予定のスタックポインタ値を被チェック領域アドレスとしてもよい。
OSは、被チェック領域アドレスがスタック領域に含まれることが、保護設定チェック部14からCPU10に供給されるチェック結果によって確認できた場合に、スタックポインタレジスタ104にスタック伸張後のスタックポインタ値を上書きし、呼び出し先の関数2を起動する(S103)。
図3(a)は、メモリ13のメモリマップの一例を示している。図3(a)は、タスクAのアクセス許可領域の例を示すメモリマップである。図3(a)の例では、10500〜10FFF番地、及び11000〜11FFF番地の2つの部分アドレス空間について、タスクAによるアクセスが許可されている。このうち、11000〜11FFF番地は、スタック領域として確保されている。
図3(b)は、メモリ保護情報記憶部110の具体的な構成例を示す図である。図3(b)は図3(a)に示したタスクAのアクセス許可領域に対応する設定内容を示している。図3(b)の例では、メモリ保護情報記憶部110がn個の保護設定レジスタ1101〜110nにより構成されており、各保護設定レジスタによって、1つのアクセス許可領域が指定される。また、保護設定レジスタ1101〜110nの各々におけるアクセス許可領域の指定は、下限アドレス及び上限アドレスによって行なわれる。例えば、図3(b)に示す保護設定レジスタ1101は、図3(a)の11000〜11FFF番地のアクセス許可領域に対応する設定を保持しているレジスタである。このため、下限アドレス指定部1101Lに11000番地が指定され、上限アドレス指定部1101Uに11FFF番地が指定されている。同様に、図3(b)の保護設定レジスタ1102は、図3(a)の10500〜10FFF番地のアクセス許可領域に対応する設定を保持している。
なお、アクセス許可領域の設定に使用されない未使用レジスタは、例えば、図3(b)の保護設定レジスタ1103〜110nに示すように、上限アドレス及び下限アドレスとして無効値(例えば、FFFFF)を書き込むことによって無効な設定であることを明示してもよい。また、保護設定レジスタ1101〜110nの各々の有効・無効を示すフラグを保持する記憶領域を別途設けてもよい。
また、図3(b)において、保護設定レジスタ1101〜110nは、スタック参照指定部1101S〜110nSを有する。スタック参照指定部1101S〜110nSは、保護設定レジスタの各々により指定される部分アドレス空間つまりメモリ領域がスタックとして参照可能なスタック領域であるかを示す。したがって、図3(b)の例では、スタック領域に対応するアクセス許可領域を指定している保護設定レジスタ1101のスタック参照指定部1101Sには、スタック領域であることを示す値"1"が設定されている。一方、スタック領域でないアクセス許可領域を指定している保護設定レジスタ1102のスタック参照指定部1102Sには、非スタック領域であることを示す値"0"が設定されている。
次に、図4を参照して、メモリ保護違反検出部111の構成例を説明する。図4に示したメモリ保護情報記憶部110は、図3(b)に示した具体例と同様に、複数個の保護設定レジスタの集合として構成されている。ただし、図4に示す各保護設定レジスタは、アクセス許可領域の上限アドレス及び下限アドレスに加えて、当該領域の許可種別、具体的には、ライトアクセス、リードアクセス及び命令フェッチアクセスの許可種別を規定する。ライト許可指定部1101Wは、値"1"のときライトアクセス許可を示し、値"0"のときライトアクセス不許可を示す。同様に、リード許可指定部1101Rは、値"1"のときリードアクセス許可を示し、値"0"のときリードアクセス不許可を示す。また、実行許可指定部1101Eは、値"1"のとき命令フェッチアクセス許可を示し、値"0"のとき命令フェッチアクセス不許可を示す。
図4に示すセレクタ113U及び113Lは、図1に示したセレクタ113に含まれるセレクタである。セレクタ113Uは、メモリ保護違反検出部111に対して、CPU10によるアクセス先又は被チェック領域の上限アドレスを選択的に供給する。一方、セレクタ113Lは、メモリ保護違反検出部111に対して、CPU10によるアクセス先又は被チェック領域の下限アドレスを選択的に供給する。
また、図4に示すメモリ保護違反検出部111は、保護設定レジスタと同数の照合回路の集合として構成されている。図5に示す照合回路の各々は、比較回路1110U及び1110L並びにAND回路1111〜1115を含む。AND回路1111〜1115はそれぞれ2つの入力値の論理積を出力する回路である。
比較回路1110Uは、保護設定レジスタの上限アドレス指定部1101Uに保持された値と、セレクタ113Uから供給されるアドレスとを比較する。比較回路1110Uは、セレクタ113Uから供給されるアドレスが上限アドレス指定部1101Uに保持された上限アドレス以下である場合に真値として値"1"を出力し、上限アドレス指定部1101Uに保持された上限アドレスを超える場合に偽値として値"0"を出力する。
比較回路1110Lは、保護設定レジスタの下限アドレス指定部1101Lに保持された値と、セレクタ113Lから供給されるアドレスとを比較する。比較回路1110Lは、セレクタ113Lから供給されるアドレスが下限アドレス指定部1101Lに保持された下限アドレス以上である場合に真値として値"1"を出力し、下限アドレス指定部1101Lに保持された下限アドレス未満である場合に偽値として値"0"を出力する。
AND回路1111の出力は、比較回路1110U及びLの出力が共に真値である場合、つまり、セレクタ113U及びLから供給される2つのアドレス情報によって指定されるメモリ領域がアクセス許可領域内である場合に、真値"1"となる。
また、AND回路1112の出力は、セレクタ113U及びLから供給される2つのアドレス情報によって指定されるメモリ領域がアクセス許可領域内であり、かつ、ライトアクセスが許可される場合に真値"1"となる。
同様に、AND回路1113の出力は、セレクタ113U及びLから供給される2つのアドレス情報によって指定されるメモリ領域がアクセス許可領域内であり、かつ、リードアクセスが許可される場合に真値"1"となる。また、AND回路1114の出力は、セレクタ113U及びLから供給される2つのアドレス情報によって指定されるメモリ領域がアクセス許可領域内であり、かつ、命令フェッチアクセスが許可される場合に真値"1"となる。
さらに、AND回路1115の出力は、セレクタ113U及びLから供給される2つのアドレス情報によって指定されるメモリ領域がアクセス許可領域内であり、かつ、スタック参照が許可される場合に真値"1"となる。
メモリ保護違反検出部111によるライトアクセス可否、リードアクセス可否、命令フェッチアクセス可否、及びスタック参照可否の検出結果は、アクセス制御部112及び保護設定チェック部14に供給される。なお、本実施の形態では、スタック参照可否の検出結果は、アクセス制御部112におけるアクセス可否の制御に使用されない。このため、スタック参照可否の検出結果を、アクセス制御部112に供給しなくてもよい。
なお、図5の例では、メモリ保護違反検出部111が、ライトアクセス可否、リードアクセス可否、命令フェッチアクセス可否、及びスタック参照可否について個別に検出結果の出力を行う構成を示した。しかしながら、このような構成が一例に過ぎないことはもちろんである。例えば、メモリ保護違反検出部111は、さらに詳細なアクセス種別に関する違反検出を行ってもよい。また、メモリ保護違反検出部111は、アクセス許可領域であるか否かと、スタック領域であるか否かのみを検出してもよい。
続いて以下では、図5〜7を参照して、保護設定チェック部14の構成例及び動作を説明するとともに、CPU10と保護設定チェック部14の間におけるチェック要求およびチェック結果に関するデータ受け渡しの具体例について説明する。
図5は、図1に示したメモリ保護部11及び保護設定チェック部14のより具体的な構成例を示すとともに、CPU10と保護設定チェック部14との間のデータ受け渡しに使用されるレジスタ群15を示している。
メモリ保護部11に関して、図5では、セレクタ113に含まれるセレクタ113U及び113Lを示している。セレクタ113U及び113Lの入出力及び動作は、上述した通りである。
図5に示す保護設定チェック部14は、チェック機能制御部141、加算回路142及びチェック結果整形部143を有する。チェック機能制御部141は、CPU10から供給されるチェック要求に応じた被チェック領域アドレスのチェック処理を制御する。
図6は、チェック機能制御部141の動作状態の遷移図である。チェック機能制御部141は、通常状態201、つまりCPU10からチェック要求を受けていない状態では、メモリアクセス要求に含まれるアクセス先アドレスがメモリ保護違反検出部111に供給されるように、セレクタ131U及び131Lを制御する。
チェック機能制御部141は、CPU10からチェック要求を受信した場合に、保護設定チェック状態202に遷移する(図6のS201)。保護設定チェック状態202では、チェック要求の対象となる被チェック領域アドレスが、メモリ保護違反検出部111に供給されるように、セレクタ131U及び131Lを制御する。これに応じて、メモリ保護違反検出部111が、被チェック領域アドレスを対象として、アクセス先アドレスに対する処理と同様の処理を行って検出結果を出力する。
図5の例では、チェック要求に含まれる被チェック領域に関するアドレス情報は、被チェック領域の先頭アドレス及び被チェック領域のサイズとしている。このため、図5の例では、加算回路142によって被チェック領域の先頭アドレス及び被チェック領域のサイズを加算することによって被チェック領域の上限アドレスを生成し、生成された上限アドレスをセレクタ131Uに供給している。
チェック機能制御部141は、メモリ保護違反検出部111の検出終了後にチェック結果格納状態203に遷移する。例えば、メモリ保護違反検出部111の検出終了時に、メモリ保護違反検出部111からチェック機能制御部141に終了通知を出力させ、当該終了通知の受信に応じてチェック結果格納状態に遷移すればよい(図6のS202)。また、チェック機能制御部141は、明示的な終了通知の受信を行なわずに、予め定められた期間の経過に応じてチェック結果格納状態203に遷移してもよい。チェック結果格納状態203では、チェック結果整形部143が、メモリ保護違反検出部111による検出結果を入力し、検出結果の集約、選択等を行って予め定められた適当なデータ形式に整形し、整形して得たチェック結果をCPU10が参照可能な記憶領域に出力する。チェック結果の出力が完了したのちに、チェック機能制御部141は、通常状態201に戻る(図6のS203)。
図5の例では、CPU10と保護設定チェック部14の間におけるチェック要求及びチェック結果に関するデータの受け渡しに、レジスタ群15に含まれる4つのレジスタを使用する。先頭アドレスレジスタ150は、被チェック領域の先頭アドレスが格納されるレジスタであり、CPU10によって書き込まれ、保護設定チェック部14により読み出される。サイズレジスタ151は、被チェック領域のサイズが格納されるレジスタであり、CPU10によって書き込まれ、保護設定チェック部14により読み出される。開始制御レジスタ152は、保護設定チェック部14にチェックを開始させるために、CPU10によって書き込まれるレジスタである。図5の保護設定チェック部14は、チェック開始を示すデータが開始制御レジスタ152に書き込まれたことに応じて上述した保護設定チェック状態202に遷移し、被チェック領域アドレスのチェック処理を開始する。最後に、結果レジスタ153は、チェック結果整形部143によって整形されたチェック結果が書き込まれるレジスタである。図5のCPU10は、結果レジスタ153を介して保護設定チェック部14からのチェック結果を取得する。
なお、図5に示した構成は、本実施の形態にかかる情報処理装置1の具体的な構成例の1つに過ぎない。例えば、図5では、CPU10による開始制御レジスタ152の書き込みに応じて、保護設定チェック部14がチェック処理を開始する構成例を示した。しかしながら、この構成に代えて、CPU10から供給される専用命令又は専用コマンドを保護設定チェック部14が受信し、この命令又はコマンドに従ってチェック処理を実行するよう構成してもよい。
CPU10から供給される専用命令に従って保護設定チェック部14にチェック処理を実行させる構成例を図7に示す。図7において、CPU10に含まれる命令発行部101は、デコードされた命令がチェック処理の実行を指示する専用命令である場合に、当該専用命令をチェック機能制御部141に供給する。ロード/ストア命令実行部102は、命令発行部101から供給されるロード命令及びストア命令に基づいて、メモリ13へのメモリアクセスを実行する。
汎用レジスタ群103は、ロード/ストア命令実行部102のほか、ALU等の図示していない他の命令実行部の入力データ及び出力データの格納場所としての使用、レジスタ間接アドレッシングモードを使用する場合のベースアドレスやインデックス値の格納場所としての使用など、様々な用途に使用可能なレジスタ群である。図7の例では、汎用レジスタ群103は、被チェック領域の先頭アドレス及びサイズ、並びに保護設定チェック部14から出力されるチェック結果の格納に使用される。
図7のチェック機能制御部141は、チェック要求に関する専用命令を受け取ると、当該命令のオペランドに指定された汎用レジスタを参照し、汎用レジスタ群103から被チェック領域の先頭アドレス及びサイズを読み出す。また、チェック機能制御部141は、専用命令のオペランドに指定された結果レジスタを選択し、整形後のチェック結果を指定された結果レジスタに格納する。
図8(a)及び(b)は、図3(a)に示したメモリマップにおいて、「タスクA.関数1」のスタックデータによってスタック領域の一部が占有されている際に、「タスクA.関数2」の呼び出しによってスタックの伸張が行なわれる場合を示している。情報処理装置1によれば、図8(a)の場合、つまりスタック領域内でのスタック伸張が可能でスタックオーバーフローが発生しない場合に、保護設定チェック部14から保護設定チェックが"正常"であるとのチェック結果が出力される。更新予定のスタックポインタ(SP)が、スタック領域に含まれるため、メモリ保護違反検出部111の検出結果は、スタック参照許可領域であることを示すためである。
一方、図8(b)の場合、つまりスタック領域内でのスタック伸張が不可能である場合には、保護設定チェック部14から保護設定チェックが"異常"であるとのチェック結果が出力される。更新予定のスタックポインタ(SP)が、スタック領域外となるため、メモリ保護違反検出部111の検出結果は、スタック参照許可領域でないことを示すためである。これにより、CPU10は、スタックへのプッシュ操作を行うスタック操作命令の実行前に、スタックの伸張を行なう時点で、スタックオーバーフローの事前検出が可能である。スタックオーバーフローの事前検出を行ったCPU10は、OSによって新たなスタック領域の確保を行なったり、スタック使用量の超過を理由にタスクの実行を停止させたりすることができる。
このようなスタックオーバーフローの事前検出を行うことによって、呼び出し先の関数の実行を開始した後のスタック操作の途中でオーバーフローが発生した場合に、煩わしいロールバック処理を行うことによるオーバヘッドの発生を事前に回避することができる。
また、本実施の形態では、スタックポインタレジスタ(SPR)104の更新前に、SPR104に保持された現在のスタックポインタ(SP)値及び伸張予定のスタックサイズ、又はこれらを加算した更新予定のSP値を保護設定チェック部14し、スタックオーバーフローの事前検出を行う。つまり、SPR104の更新を契機として、更新されたSP値を用いてスタックオーバーフローの事前検出を行う特許文献1とは対照的である。特許文献1の技術では、SPR更新に併せて行なわれるスタック操作(プッシュ操作)によって、スタック領域外への書き込みによるデータ破壊が生じるおそれがある。例えば、SPR更新の際には、SPRに保持されていた過去のスタックポインタ値をスタックに退避する必要があるためである。これに対して、本実施の形態にかかる情報処理装置1は、SPR104の更新前にスタックオーバーフローを事前検出できるため、特許文献1の技術が有するこの問題を解消することができる。
また、情報処理装置1によれば、図3(a)に示すように、スタック領域とその他のアクセス許可領域が隣接して配置されている場合には、実際のメモリアクセスが発生した際にアクセス可否を検出する従来の方法ではスタックオーバーフローの検出が実質的に困難であった問題を解消することができる。
また、保護設定チェック部14は、タスクAを実行するCPU10から出力されるアクセス要求の違反検出のためにメモリ保護情報記憶部110に既に設定済みのメモリ保護情報をそのまま利用して、被チェック領域に関するチェックを行うことができる。つまり、被チェック領域に関するチェックに際して、新たなメモリ保護情報の読み出し処理及び書き込み処理を特に必要としないため、チェック処理を一層効率良く行なうことができる。
また、本実施の形態にかかる保護設定チェック部14は、被チェック領域アドレスとメモリ保護情報とを照合するためのハードウェアを独自に有していない。つまり、情報処理装置1では、保護設定チェック部14が有するべき照合用のハードウェアと、アクセス先アドレスとメモリ保護情報とを照合するためにメモリ保護違反検出部111が有する照合回路とを兼用させることで、構成を簡素化させている。
また、図4に示すように、メモリ保護違反検出部111が、並列化された複数の照合回路を有することによって、タスクAに対して複数のアクセス許可領域が設定されている場合であっても、複数のアクセス許可領域の各々と被チェック領域アドレスとの照合を並行して実行することができる。つまり、アクセス許可領域の設定数の増大に比例して、チェック時間が増大することを抑制することができる。このため、図4に示したような構成、つまり、被チェック領域アドレスとメモリ保護情報とを照合するための複数のハードウェアを並列化した構成によれば、プログラム呼び出し時の正当性チェックを一層効率よく実行できる。
実際、メモリアクセス要求に対するメモリ保護を効率的に実行するために、図4に示すように照合回路は並列化される場合が多い。このため、本実施の形態で述べたように、メモリ保護違反検出部111が有する照合回路を被チェック領域アドレスとメモリ保護情報とを照合するためのハードウェアと兼用させる構成は、構成の簡素化とアドレスチェックの効率化の両方に効果がある。
なお、上述した説明では、関数呼び出し時のCPU10の動作を説明するために、同一タスクに含まれる関数の呼び出しにあたってOSに処理を移す例を示した(図2を参照)。しかしながら、これは関数呼び出し時の動作を説明する概念の1つに過ぎない。すなわち、CPU10は、同一タスクに含まれる関数の呼び出しにあたり、OSに処理を移さずに直接に呼び出し先関数へ分岐してもよい。
図9は、同一タスクに含まれる関数の呼び出し時に、直接に呼び出し先関数へ分岐するよう構成されたCPU10の動作を説明するための概念図である。CPU10でタスクAに含まれる関数1が実行されている際に、別の関数2が呼び出されると、関数2の入り口処理へ分岐する(S301)。関数2の入り口処理では、保護設定チェック部14に対してチェック要求が発行される(S302)。関数2の入り口処理では、被チェック領域アドレスがスタック領域に含まれることが確認できた場合に、スタック伸張後のスタックポインタ値を上書きする。被チェック領域アドレスがスタック領域に含まれないことが確認された場合には、スタック異常を処理するようにOSに要請するためにシステムコールを発行する(S303)。これらの、関数入り口処理は、従来コンパイラが関数の入り口処理として生成していたスタックポインタを更新する命令列と同様に、コンパイラが各関数の入り口処理として命令列を生成すればよい。
<発明の実施の形態2>
本実施の形態にかかる情報処理装置2は、上述した情報処理装置1が有する構成及び機能に加えて、CPUによるメモリアクセスがスタックポインタ相対アクセス(以下、SP相対アクセス)であるか否かに応じて、メモリアクセス制御を行うことを特徴とする。
図10は、情報処理装置2の主要な部分の構成を示すブロック図である。情報処理装置2と情報処理装置1の相違点は、CPU20及びメモリ保護部21が有するアクセス制御部212である。
CPU20が上述のCPU10と相違する点は、SP相対アクセスであるか否かを示すSP相対アクセス通知をメモリアクセス要求に含めて出力する点である。SP相対アクセスとは、SPR104をベースレジスタとしてアクセス先アドレスの生成が行なわれたメモリアクセスを意味する。
アクセス制御部212は、メモリ保護違反検出部111によるスタック参照可否の検出結果を入力し、スタック参照が許可されていない領域、言い換えると非スタック領域に対するアクセスを検出する。そして、アクセス制御部212は、CPU20が非スタック領域に対してSP相対アクセスを実行した場合にアクセスを遮断し、保護例外を発生する。
なお、上述した図4ではスタック参照可否の検出結果をアクセス制御部112に供給しない構成を示したが、本実施の形態では、メモリ保護違反検出部111によるスタック参照可否の検出結果をアクセス制御部212に供給すればよい。
例えば、図11(a)に示すように、4つの保護設定レジスタ1101〜1104によって、あるタスク(タスクAとする)のアクセス許可領域が設定されている場合を考える。具体的には、3つの保護設定レジスタ1101〜1104の各々は、非スタック領域を指定している。具体的には、保護設定レジスタ1101の指定するアクセス許可領域は、リードアクセス及びライトアクセスが共に許可されたR/W許可領域である。また、保護設定レジスタ1102の指定するアクセス許可領域は、リードアクセスのみ許可されたリード許可領域である。また、保護設定レジスタ1103の指定するアクセス許可領域は、ライトアクセスのみ許可されたライト許可領域である。
一方、保護設定レジスタ1104は、スタック参照可能な領域、即ちスタック領域を指定している。スタック領域は、R/W許可領域である。
図11(b)は、図11(a)に示したメモリ保護情報に基づいてアクセス制御部212がメモリアクセス制御を実行する場合に、CPU20がアクセス可能な領域を示すメモリマップである。図11(b)の左側は、SP相対アクセスでない非SP相対アクセスによってCPU20がアクセス可能なメモリ領域を示している。この場合、CPU20は、アクセス許可領域の全てにアクセス可能である。一方、図11(b)の右側は、SP相対アクセスによってCPU20がアクセス可能なメモリ領域を示している。この場合、アクセス可能な領域は、スタック参照許可とされているスタック領域のみに制限される。
上述したように、情報処理装置2では、スタック相対アクセスであることをCPU20からメモリ保護部21に通知し、メモリ保護部21が非スタック領域に対するスタック相対アクセスを禁止することとした。
例えば、C言語によるプログラムでは、スタック領域には関数のローカル変数や引数が配置される。これらの変数は、ポインタを介して参照することができるため、スタックに格納された変数が常にSP相対アクセスによって参照されるわけではない。しかしながら、スタック領域以外のアクセス可能領域に対してSP相対アクセスは行なわれない。
情報処理装置2は、スタックポインタに不正な値が設定されたことに起因して、誤って非スタック領域にSP相対アクセスが行なわれた場合に、保護違反を検出し、不正なデータ操作を防ぐことができる。このため、情報処理装置2は、一層強固なメモリ保護を提供することができる。
<発明の実施の形態3>
上述した発明の実施の形態1及び2では、被チェック領域アドレスとメモリ保護情報とを照合するためのハードウェアを保護設定チェック部14に設けずに、メモリ保護違反検出部111又は周辺装置保護違反検出部211のハードウェアと兼用する構成を示した。しかしながら、構成は冗長となるものの、被チェック領域アドレスとメモリ保護情報とを照合するためのハードウェアを保護設定チェック部14に設けてもよい。
本実施の形態にかかる情報処理装置3の構成を図12に示す。図12において、保護設定チェック部34は、発明の実施の形態1にかかる情報処理装置1が有する保護設定チェック部14に対して、被チェック領域アドレスとメモリ保護情報又は周辺装置保護情報とを照合するためのハードウェアを追加したものである。なお、保護設定チェック部34に追加する照合用のハードウェアは、図5に示したメモリ保護違反検出部111の照合回路と同様とすればよい。
なお、上述した発明の実施の形態1〜3にかかる情報処理装置1〜3は、例えば、1チップ化されたマイクロコンピュータとして構成されてもよいし、複数チップからなるコンピュータシステムとして構成されてもよい。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
本発明の実施の形態1にかかる情報処理装置の構成を示すブロック図である。 メモリ保護違反検出部の構成例を示す図である。 保護設定チェック部の構成例を示す図である。 保護設定チェック部の状態遷移図である。 保護設定チェック部の他の構成例を示す図である。 本発明の実施の形態1にかかる情報処理装置における関数呼び出しの動作を説明するための概念図である。 スタック領域を含むメモリマップの一例と、メモリ保護情報記憶部の構成例を示す図である。 本発明の実施の形態1にかかる情報処理装置による保護設定チェック動作を説明するための図である。 本発明の実施の形態1にかかる情報処理装置における関数呼び出しの動作を説明するための概念図である。 発明の実施の形態2にかかる情報処理装置の構成を示すブロック図である。 本発明の実施の形態2にかかる情報処理装置による保護設定チェック動作を説明するための図である。 発明の実施の形態3にかかる情報処理装置の構成を示すブロック図である。 特許文献3に開示された図面である。
符号の説明
1、2、3 情報処理装置
10 CPU(Central Processing Unit)
11,21、31 メモリ保護部
12 メモリバス
13 メモリ
14、34 保護設定チェック部
101 命令発行部
102 ロード/ストア命令実行部
103 汎用レジスタ群
104 スタックポインタレジスタ(SPR)
110 メモリ保護情報記憶部
111 メモリ保護違反検出部
112、212 アクセス制御部
113、113U、113L セレクタ
141 チェック機能制御部
142 加算回路
143 チェック結果整形部
150 先頭アドレスレジスタ
151 サイズレジスタ
152 開始制御レジスタ
153 結果レジスタ
1101W ライト許可指定部
1101R リード許可指定部
1101E 実行許可指定部
1101S スタック参照許可指定部
1101U 上限アドレス指定部
1101L 下限アドレス指定部

Claims (8)

  1. アドレス空間へのアクセス命令の実行に基づいてアクセス先を指定するための第1のアドレス情報を含むアクセス要求を出力するとともに、前記アドレス空間に含まれるスタックをスタックポインタの更新によって伸張させるスタック伸張命令の実行に基づいて、伸張後のスタックポインタ位置を特定するための第2のアドレス情報を含むチェック要求を出力する命令実行部と、
    前記アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分空間を規定するためのメモリ保護情報を記憶するメモリ保護情報記憶部と、
    前記第1のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することにより、前記アクセス先が、前記複数の部分空間の中に含まれるか否かを検出する保護違反検出部と、
    前記第2のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することにより、前記スタックポインタ位置が、前記複数の部分空間のうちで前記スタックとして使用可能なスタック領域として予め確保されている部分空間に含まれるか否かを確認するチェック部と、
    を備える情報処理装置。
  2. 前記メモリ保護情報は、前記複数の部分空間の各々のアドレス範囲を指定する複数のアドレス範囲指定情報と、前記複数の部分空間の各々が前記スタック領域であるか否かを示すスタック識別情報とを含む請求項1に記載の情報処理装置。
  3. 前記保護違反検出部に含まれる前記メモリ保護情報と前記第1のアドレス情報とを照合するための第1の照合回路、及び前記チェック部に含まれる前記メモリ保護情報と前記第2のアドレス情報とを照合するための第2の照合回路が、前記命令実行部とは独立したハードウェアとして構成されていることを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記保護違反検出部に対して、前記アクセス要求に含まれる前記第1のアドレス情報又は前記第2のアドレス情報を選択的に供給するセレクタ回路をさらに備え、
    前記第2の照合回路が前記第1の照合回路と共通化されていることを特徴とする請求項3に記載の情報処理装置。
  5. 現在のスタックポインタ値を保持するスタックポインタレジスタをさらに備え、
    前記チェック部によって前記更新後のスタックポインタ値が前記スタック領域に含まれると確認されたことを契機として、前記スタックの伸張を完了するために、前記スタックポインタレジスタに前記更新後のスタックポインタ値を格納する請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 現在のスタックポインタ値を保持するスタックポインタレジスタと、
    前記保護違反検出部の検出結果に応じて、前記アクセス要求によるアクセス可否を制御するアクセス制御部とをさらに備え、
    前記命令実行部は、前記スタックポインタレジスタに保持されたスタックポインタ値を使用して前記第1のアドレス情報が生成されたか否かを示すSP相対アクセス通知を、前記アクセス要求とともに前記保護違反検出部に供給し、
    前記アクセス制御部は、前記保護違反検出部の検出結果に基づいて、前記SP相対アクセス通知を伴う前記アクセス要求による非スタック領域へのアクセスを禁止する請求項2乃至4のいずれか1項に記載の情報処理装置。
  7. 情報処理装置におけるスタックポインタ更新方法であって、
    前記情報処理装置は、命令実行部と、アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分空間を規定するためのメモリ保護情報を記憶するメモリ保護情報記憶部とを備え、
    前記アドレス空間へのアクセス命令の実行に応じて、アクセス先を指定するための第1のアドレス情報を含むアクセス要求を前記命令実行部から出力させ、
    前記第1のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することによって、前記アクセス先が前記複数の部分空間の中に含まれるか否かを検出し、
    前記アドレス空間に含まれるスタックをスタックポインタの更新によって伸張させるスタック伸張命令の実行に応じて、伸張後のスタックポインタ位置を特定するための第2のアドレス情報を含むチェック要求を前記命令実行部から出力させ、
    前記第2のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することによって、前記複数の部分空間のうちで前記スタックとして使用可能なスタック領域として予め確保されている部分空間に前記スタックポインタ位置が含まれるか否かを確認する、スタックポインタ更新方法。
  8. 前記更新後のスタックポインタ値が前記スタック領域に含まれると確認されたことを契機として、前記スタックの伸張を完了するために、前記更新後のスタックポインタ値を現在のスタックポインタ値を格納するスタックポインタレジスタに格納する請求項7に記載のスタックポインタ更新方法。
JP2007333386A 2007-12-26 2007-12-26 情報処理装置及びそのスタックポインタ更新方法 Expired - Fee Related JP5044387B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007333386A JP5044387B2 (ja) 2007-12-26 2007-12-26 情報処理装置及びそのスタックポインタ更新方法
US12/314,073 US8234476B2 (en) 2007-12-26 2008-12-03 Information processing apparatus and method of updating stack pointer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007333386A JP5044387B2 (ja) 2007-12-26 2007-12-26 情報処理装置及びそのスタックポインタ更新方法

Publications (2)

Publication Number Publication Date
JP2009157542A JP2009157542A (ja) 2009-07-16
JP5044387B2 true JP5044387B2 (ja) 2012-10-10

Family

ID=40800044

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007333386A Expired - Fee Related JP5044387B2 (ja) 2007-12-26 2007-12-26 情報処理装置及びそのスタックポインタ更新方法

Country Status (2)

Country Link
US (1) US8234476B2 (ja)
JP (1) JP5044387B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4939387B2 (ja) 2007-12-06 2012-05-23 ルネサスエレクトロニクス株式会社 データ処理装置及びアドレス空間保護方法
WO2011001920A1 (ja) 2009-07-02 2011-01-06 旭硝子株式会社 無アルカリガラスおよびその製造方法
US9928105B2 (en) * 2010-06-28 2018-03-27 Microsoft Technology Licensing, Llc Stack overflow prevention in parallel execution runtime
US20140164708A1 (en) * 2012-12-07 2014-06-12 Advanced Micro Devices, Inc. Spill data management
US9767272B2 (en) * 2014-10-20 2017-09-19 Intel Corporation Attack Protection for valid gadget control transfers
JP6771272B2 (ja) * 2015-07-01 2020-10-21 日立オートモティブシステムズ株式会社 車載電子制御装置及びスタック使用方法
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
US10884952B2 (en) * 2016-09-30 2021-01-05 Intel Corporation Enforcing memory operand types using protection keys
US10606771B2 (en) * 2018-01-22 2020-03-31 Infineon Technologies Ag Real time stack protection
GB2578135B (en) * 2018-10-18 2020-10-21 Advanced Risc Mach Ltd Range checking instruction
JP6877475B2 (ja) * 2019-03-11 2021-05-26 日立Astemo株式会社 電子制御装置及びスタック使用方法
US10719477B1 (en) * 2019-06-20 2020-07-21 Semiconductor Components Industries, Llc Methods and system for an integrated circuit
CN112182559A (zh) * 2020-10-09 2021-01-05 Oppo广东移动通信有限公司 堆栈溢出检测方法、装置、电子设备和存储介质
JP7418670B2 (ja) * 2022-01-26 2024-01-19 三菱電機株式会社 コンピュータ、制御方法及び制御プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6175446A (ja) * 1984-09-20 1986-04-17 Fujitsu Ltd アドレス比較方式
JPH09293020A (ja) * 1996-04-26 1997-11-11 Oki Electric Ind Co Ltd インターフェース回路
JP2000020352A (ja) * 1998-07-06 2000-01-21 Mitsubishi Electric Corp スタックオーバーフロー検出方法及びスタックアンダーフロー検出方法
JP2000155677A (ja) * 1998-11-19 2000-06-06 Nec Corp プログラムの暴走防止方法、そのためのコンピューターシステムと暴走防止プログラムを記録した記録媒体
US6654871B1 (en) * 1999-11-09 2003-11-25 Motorola, Inc. Device and a method for performing stack operations in a processing system
JP2003022181A (ja) * 2001-07-09 2003-01-24 Fuji Electric Co Ltd マイクロコンピュータのソフトウェア実行異常検出方法
US6826675B1 (en) * 2001-10-09 2004-11-30 Hewlett-Packard Development Company, L.P. Stack utilization management system and method for a single-stack arrangement
JP2003271448A (ja) * 2002-03-18 2003-09-26 Fujitsu Ltd スタック管理方法及び情報処理装置
JP2007304954A (ja) * 2006-05-12 2007-11-22 Sharp Corp メモリ保護機能を有するコンピュータシステム
US7921274B2 (en) * 2007-04-19 2011-04-05 Qualcomm Incorporated Computer memory addressing mode employing memory segmenting and masking

Also Published As

Publication number Publication date
US20090172332A1 (en) 2009-07-02
JP2009157542A (ja) 2009-07-16
US8234476B2 (en) 2012-07-31

Similar Documents

Publication Publication Date Title
JP5044387B2 (ja) 情報処理装置及びそのスタックポインタ更新方法
JP4939382B2 (ja) 情報処理装置及びそのプログラム実行制御方法
JP4519738B2 (ja) メモリアクセス制御装置
JP4939387B2 (ja) データ処理装置及びアドレス空間保護方法
JP5911835B2 (ja) 情報処理装置
US20050240701A1 (en) Interrupt control apparatus
JP5225003B2 (ja) メモリ保護方法、情報処理装置、メモリ保護プログラム及びメモリ保護プログラムを記録した記録媒体
JP2017505492A (ja) 目標メモリ・アドレスに対応するメモリ属性ユニットの領域を特定するための領域特定演算
KR20100122924A (ko) 멀티 오퍼레이팅 시스템(os) 기동 장치 및 멀티 os 기동 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 멀티 os 기동 방법
JP2007249323A (ja) マイクロコンピュータ
US20100299751A1 (en) Microcomputer having a protection function in a register
JP2013225208A (ja) 情報処理装置、情報処理方法、及びプログラム
JP5999216B2 (ja) データ処理装置
JP2009009232A (ja) コンピュータとカーネル保護方法並びにコンピュータソフトウエア
JP2008033890A (ja) マイクロコンピュータシステム
JP5289688B2 (ja) プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
JP5716824B2 (ja) マルチコアプロセッサシステム
JP2010186386A (ja) プロセッサ
JP2005084721A (ja) マイクロコンピュータ
JP2008140124A (ja) データ処理装置
US11150887B2 (en) Secure code patching
JP5920509B2 (ja) コントローラの制御プログラム、およびコントローラの制御方法
JP2005209178A (ja) メモリ保護装置、メモリ保護方法及びメモリ保護プログラム
JP2017208058A (ja) 情報処理装置
JP2011150457A (ja) 情報処理装置およびメモリアクセス制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100513

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120713

R150 Certificate of patent or registration of utility model

Ref document number: 5044387

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150720

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees