JP5044387B2 - 情報処理装置及びそのスタックポインタ更新方法 - Google Patents
情報処理装置及びそのスタックポインタ更新方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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
(a)前記アドレス空間へのアクセス命令の実行に応じて、アクセス先を指定するための第1のアドレス情報を含むアクセス要求を前記命令実行部から出力させるステップ、
(b)前記第1のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することによって、前記アクセス先が前記複数の部分空間の中に含まれるか否かを検出するステップ、
(c)前記アドレス空間に含まれるスタックをスタックポインタの更新によって伸張させるスタック伸張命令の実行に応じて、伸張後のスタックポインタ位置を特定するための第2のアドレス情報を含むチェック要求を前記命令実行部から出力させるステップ、
(d)前記第2のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することによって、前記複数の部分空間のうちで前記スタックとして使用可能なスタック領域として予め確保されている部分空間に前記スタックポインタ位置が含まれるか否かを確認するステップ。
本実施の形態にかかる情報処理装置1は、メモリ保護機能を有する。さらに、情報処理装置1は、メモリ保護機能のためのハードウェアを利用して、例えば関数呼び出し等に起因してスタックの伸張、つまりスタックポインタの更新を行なう際に、呼び出し先関数の実行によるスタックオーバーフローの発生を予測的に検出する機能を有する。
本実施の形態にかかる情報処理装置2は、上述した情報処理装置1が有する構成及び機能に加えて、CPUによるメモリアクセスがスタックポインタ相対アクセス(以下、SP相対アクセス)であるか否かに応じて、メモリアクセス制御を行うことを特徴とする。
上述した発明の実施の形態1及び2では、被チェック領域アドレスとメモリ保護情報とを照合するためのハードウェアを保護設定チェック部14に設けずに、メモリ保護違反検出部111又は周辺装置保護違反検出部211のハードウェアと兼用する構成を示した。しかしながら、構成は冗長となるものの、被チェック領域アドレスとメモリ保護情報とを照合するためのハードウェアを保護設定チェック部14に設けてもよい。
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のアドレス情報を含むアクセス要求を出力するとともに、前記アドレス空間に含まれるスタックをスタックポインタの更新によって伸張させるスタック伸張命令の実行に基づいて、伸張後のスタックポインタ位置を特定するための第2のアドレス情報を含むチェック要求を出力する命令実行部と、
前記アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分空間を規定するためのメモリ保護情報を記憶するメモリ保護情報記憶部と、
前記第1のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することにより、前記アクセス先が、前記複数の部分空間の中に含まれるか否かを検出する保護違反検出部と、
前記第2のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することにより、前記スタックポインタ位置が、前記複数の部分空間のうちで前記スタックとして使用可能なスタック領域として予め確保されている部分空間に含まれるか否かを確認するチェック部と、
を備える情報処理装置。 - 前記メモリ保護情報は、前記複数の部分空間の各々のアドレス範囲を指定する複数のアドレス範囲指定情報と、前記複数の部分空間の各々が前記スタック領域であるか否かを示すスタック識別情報とを含む請求項1に記載の情報処理装置。
- 前記保護違反検出部に含まれる前記メモリ保護情報と前記第1のアドレス情報とを照合するための第1の照合回路、及び前記チェック部に含まれる前記メモリ保護情報と前記第2のアドレス情報とを照合するための第2の照合回路が、前記命令実行部とは独立したハードウェアとして構成されていることを特徴とする請求項1又は2に記載の情報処理装置。
- 前記保護違反検出部に対して、前記アクセス要求に含まれる前記第1のアドレス情報又は前記第2のアドレス情報を選択的に供給するセレクタ回路をさらに備え、
前記第2の照合回路が前記第1の照合回路と共通化されていることを特徴とする請求項3に記載の情報処理装置。 - 現在のスタックポインタ値を保持するスタックポインタレジスタをさらに備え、
前記チェック部によって前記更新後のスタックポインタ値が前記スタック領域に含まれると確認されたことを契機として、前記スタックの伸張を完了するために、前記スタックポインタレジスタに前記更新後のスタックポインタ値を格納する請求項1乃至4のいずれか1項に記載の情報処理装置。 - 現在のスタックポインタ値を保持するスタックポインタレジスタと、
前記保護違反検出部の検出結果に応じて、前記アクセス要求によるアクセス可否を制御するアクセス制御部とをさらに備え、
前記命令実行部は、前記スタックポインタレジスタに保持されたスタックポインタ値を使用して前記第1のアドレス情報が生成されたか否かを示すSP相対アクセス通知を、前記アクセス要求とともに前記保護違反検出部に供給し、
前記アクセス制御部は、前記保護違反検出部の検出結果に基づいて、前記SP相対アクセス通知を伴う前記アクセス要求による非スタック領域へのアクセスを禁止する請求項2乃至4のいずれか1項に記載の情報処理装置。 - 情報処理装置におけるスタックポインタ更新方法であって、
前記情報処理装置は、命令実行部と、アドレス空間の中から前記命令実行部によるアクセスが可能な複数の部分空間を規定するためのメモリ保護情報を記憶するメモリ保護情報記憶部とを備え、
前記アドレス空間へのアクセス命令の実行に応じて、アクセス先を指定するための第1のアドレス情報を含むアクセス要求を前記命令実行部から出力させ、
前記第1のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することによって、前記アクセス先が前記複数の部分空間の中に含まれるか否かを検出し、
前記アドレス空間に含まれるスタックをスタックポインタの更新によって伸張させるスタック伸張命令の実行に応じて、伸張後のスタックポインタ位置を特定するための第2のアドレス情報を含むチェック要求を前記命令実行部から出力させ、
前記第2のアドレス情報と前記メモリ保護情報記憶部に記憶された前記メモリ保護情報とを照合することによって、前記複数の部分空間のうちで前記スタックとして使用可能なスタック領域として予め確保されている部分空間に前記スタックポインタ位置が含まれるか否かを確認する、スタックポインタ更新方法。 - 前記更新後のスタックポインタ値が前記スタック領域に含まれると確認されたことを契機として、前記スタックの伸張を完了するために、前記更新後のスタックポインタ値を現在のスタックポインタ値を格納するスタックポインタレジスタに格納する請求項7に記載のスタックポインタ更新方法。
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)
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)
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 |
-
2007
- 2007-12-26 JP JP2007333386A patent/JP5044387B2/ja not_active Expired - Fee Related
-
2008
- 2008-12-03 US US12/314,073 patent/US8234476B2/en not_active Expired - Fee Related
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 |