JP2002049531A - メモリ領域境界検出方法及びコンピュータシステム - Google Patents

メモリ領域境界検出方法及びコンピュータシステム

Info

Publication number
JP2002049531A
JP2002049531A JP2000235870A JP2000235870A JP2002049531A JP 2002049531 A JP2002049531 A JP 2002049531A JP 2000235870 A JP2000235870 A JP 2000235870A JP 2000235870 A JP2000235870 A JP 2000235870A JP 2002049531 A JP2002049531 A JP 2002049531A
Authority
JP
Japan
Prior art keywords
page
memory
area
boundary detection
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.)
Pending
Application number
JP2000235870A
Other languages
English (en)
Inventor
Masahiro Tokoro
雅尋 處
Eiki Kamata
栄樹 釜田
Toshihiko Kurihara
俊彦 栗原
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2000235870A priority Critical patent/JP2002049531A/ja
Publication of JP2002049531A publication Critical patent/JP2002049531A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 ラージサイズページでメモリを管理するシス
テムにおいて、プログラムに割り当てた動的メモリ領域
のあふれ検出に消費される論理メモリ空間のサイズを抑
止する。 【解決手段】 アドレス変換テーブル340に、ページ
境界をハードウエアで検出することを示すページ境界検
出フラグを付加する。プロセッサは、メモリアクセス命
令におけるアドレス変換時に、アドレス変換テーブル3
40あるいはアドレス変換バッファ(TLB)350か
ら読み出されるページ境界検出フラグをチェックし、該
フラグの値が真であるページの先頭または終端から一定
領域に対するメモリアクセスが発生した場合に割り込み
を発生する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一定もしくは可変
サイズのメモリ空間(ページ)を単位としてメモリを管
理し、アドレス変換表(ページテーブル)を用いて命令
により指定される仮想アドレスを実アドレスに変換して
メモリへアクセスする機構を備えたコンピュータシステ
ムに係り、特にラージサイズページでメモリを管理する
システムにおいて、プログラムに動的メモリ領域の割り
当てを行う場合、該動的メモリ領域あふれ検出に消費さ
れる論理メモリ空間のオーバーヘッドを抑えるのに好適
なメモリ領域境界検出方法及びそれを適用したコンピュ
ータシステムに関する。
【0002】
【従来の技術】現在のコンピュータシステムでは、一般
的にOSと呼ばれる基本プログラムがメモリ空間の管理
を行っており、プログラムへのメモリ空間の割り当て、
プログラムによる不正なメモリアクセスの監視などを行
っている。近年ではマルチユーザ、マルチタスクのコン
ピュータシステムが一般化しており、OSはユーザプロ
グラムのシステム領域への不正アクセスだけではなく、
ユーザプログラムによる他のプロセスに割り当てられた
メモリ領域への不正アクセスも監視する必要がある。
【0003】一般的にプログラムに対するメモリの割り
当ては、静的メモリ割り当てと動的メモリ割り当てに分
類される。静的メモリ割り当ては、プログラム実行前に
プログラムが用いるメモリサイズがわかっている配列な
どに対するメモリ割り当てであり、プログラム起動時に
OSが各プログラムに対して行う。各プログラムが割り
当てられた静的メモリ領域外へのアクセスを行わないこ
とはコンパイラの生成する命令列により保証される。
【0004】これに対し、動的メモリ割り当ては、プロ
グラムの実行状態により必要となるメモリサイズが変化
するデータセットなどに対してのメモリ割り当てであ
る。動的メモリは、その用いられ方により「スタック」
「ヒープ」などと呼ばれ、プログラム実行中に必要に応
じてメモリの割り当て・開放が行われる。
【0005】OSは各プログラムに対して動的メモリ領
域として一定サイズのメモリ領域を割り当てる。各プロ
グラムは新たなデータセットに対するメモリ割り当てが
必要になった場合、動的メモリ領域として割り当てられ
たメモリ領域の上位アドレスもしくは下位アドレスから
順にメモリをデータセットに割り当てる。動的にメモリ
割り当てが行われるデータセットの数やサイズはプログ
ラムの実行状態により変化するため、プログラム実行中
に動的メモリ領域が不足する状態が発生し得る。そのと
き、プログラムは動的メモリ領域の境界を越え、隣接す
るメモリ空間に対して不正なメモリアクセスを行うこと
となる。
【0006】ページ単位でメモリを管理するコンピュー
タシステムでは、動的メモリ領域が不足した場合、動的
メモリ領域として割り当てられたページに隣接するペー
ジに対しての不正アクセスが発生する。そのため、OS
は、プログラムが動的メモリ領域不足のためスタックあ
ふれなどを発生して割り当てられたメモリ空間以外のメ
モリ領域へアクセスするのを監視する必要がある。
【0007】ページ単位で論理メモリ空間を管理するコ
ンピュータシステムは、命令列が指定する仮想アドレス
と実アドレスの対応表であるページテーブルを有する。
通常、ページテーブルにはユーザプログラムによる当該
ページへのアクセスの許可・不許可を示すフラグが設け
られている。プロセッサは仮想アドレスから実アドレス
へのアドレス変換実行時に、このフラグをチェックし、
ユーザプログラムがアクセス不許可のページへアクセス
した場合に割り込みを発生することにより、ユーザプロ
グラムによる不正なメモリアクセスを検出する。
【0008】従来技術では、ユーザプログラムに対して
スタック領域などの動的メモリ領域をメモリ空間に割り
当てる場合、OSはスタック領域として割り当てたペー
ジとメモリ空間上で隣接するページをユーザプログラム
によるアクセス不許可ページとしていた。スタック領域
・ヒープ領域では、通常、ユーザプログラムは連続した
アドレスに対しインクリメンタルもしくはデクリメンタ
ルにアクセスする。そのため、スタック領域・ヒープ領
域あふれが発生した場合、ユーザプログラムはスタック
領域またはヒープ領域として割り当てられたページに隣
接するページに対してアクセスする。この結果、ユーザ
プログラムがスタック・ヒープ領域あふれを発生した場
合には、ユーザプログラムによるアクセス不許可ページ
をアクセスすることとなり、プロセッサが割り込みを発
生することによってOSはスタックあふれを検出し、ユ
ーザプログラムによる不正メモリアクセスを監視するこ
とができる。
【0009】図2に、従来技術を用いてスタック領域あ
ふれを検出する場合のメモリの利用状態の例を示す。図
中、201,202,203はそれぞれメモリ空間20
0内のページをあらわす。OSがユーザプログラムに対
して、ページ201,202をスタック領域として割り
当てたと仮定する。この時、OSはページ202と隣接
するページ203をスタック領域あふれ検出に用いる。
OSはページ203をユーザプログラムアクセス不許可
ページに指定し、ページテーブルに当該ページへのユー
ザプログラムによるアクセス不許可を示すフラグを設定
する。ユーザプログラムがスタックあふれを発生してペ
ージ202に隣接するページ203にアクセスした場
合、プロセッサは、アドレス変換実行時にページテーブ
ルの当該ページのフラグをチェックし、ユーザプログラ
ムによるユーザプログラムアクセス不許可ページへのア
クセスを検出して割り込みを発生する。これにより、O
Sはユーザプログラムによるスタック領域あふれの検出
が可能となる。
【0010】
【発明が解決しようとする課題】上記従来技術において
は、ユーザプログラムにスタック領域またはヒープ領域
を割り当てた場合、常に1ページ分のメモリ空間をスタ
ック領域・ヒープ領域あふれ検出のために消費する。こ
のページはユーザプログラムアクセス不許可ページであ
るため、ユーザプログラムはこのページを利用すること
ができず、メモリ空間内のユーザ領域が狭められること
となる。特に、ラージサイズページでメモリを管理する
コンピュータシステムでは、ユーザプログラムによるス
タック領域・ヒープ領域あふれ検出のために消費される
メモリ空間のページサイズも大きくなり、ユーザ空間が
減少することの影響が増大する。
【0011】本発明の目的は、上記従来技術の問題点に
鑑み、スタック領域やヒープ領域として割り当てた動的
メモリ領域があふれたことを検出するために必要とする
メモリ領域のサイズを小さく抑えたメモリ領域境界検出
方法及びそれを適用したコンピュータシステムを提供す
ることにある。
【0012】
【課題を解決するための手段】本発明は、一定もしくは
可変サイズのメモリ領域であるページの先頭もしくは終
端の一部領域をスタック領域・ヒープ領域あふれ検出領
域として用い、アドレス変換テーブルであるページテー
ブル内に、当該ページの境界をハードウエア検出するこ
とを示すフラグ(メモリ領域境界検出フラグすなわちペ
ージ境界検出フラグ)を新たに設ける。プロセッサに
は、該フラグの値が真であり、かつ、当該ページの先頭
もしくは終端から一定領域に対してのメモリアクセスが
生じた場合、割り込みを発生せしめる制御手段を追加す
る。
【0013】OSはユーザプログラムに対してスタック
領域・ヒープ領域を割り当てる場合、ページテーブル内
の該割り当てた領域の最終ページに対してページ境界検
出フラグの値を真とする。ユーザプログラムがスタック
領域・ヒープ領域あふれを発生した場合、このページの
先頭もしくは終端のあふれ検出領域に対してメモリアク
セスが発生するため、プロセッサが割り込みを起こす。
【0014】図1に、本発明によりスタックあふれを検
出する場合のメモリの利用状態例を示す。図中、10
1,102,103はそれぞれメモリ空間100内のペ
ージを示す。OSがユーザプログラムに対してページ1
01,102をスタック領域として割り当てたと仮定す
る。OSはスタック領域のあふれを検出するために、ペ
ージ102の先頭の一定領域をページ境界検出領域とす
る。スタック領域・ヒープ領域に割り当てられた領域の
終端がページの先頭であるか終端であるかは、割り当て
られた領域へのメモリアクセスがアドレス・インクリメ
ンタルに行われるかデクリメンタルに行われるかに依存
する。図1ではメモリアクセスがアドレス・デクリメン
タルに行われることを仮定しており、OSはページ10
2の先頭から一定領域をページ境界検出領域とするよう
に、ページテーブル内の当該ページ102に対するペー
ジ境界検出フラグをセットする。図1中、104がOS
によって設定されたページ境界検出領域を示す。この領
域がスタックあふれ検出境界として用いられる。ユーザ
プログラムでページ101,102に割り当てられたス
タック領域からのあふれが発生した場合、ユーザプログ
ラムはスタック領域あふれ検出領域104へアクセスし
ようとするため、プロセッサがページ境界を検出して割
り込みを発生する。
【0015】このように、本発明では、ページの一部領
域104をスタック領域あふれ検出領域として用いるこ
とにより、従来よりも小さなメモリ空間オーバヘッドで
のスタック領域あふれ検出を可能とする。この結果、従
来方式では、図2に示したように、スタック領域あふれ
検出領域として用いられていたスタック割り当て領域の
後続のページ203は、図1ではユーザ領域103とし
て有効利用することができる。
【0016】
【発明の実施の形態】以下に、本発明の実施の形態につ
いて図面により詳しく説明する。図3に、本発明の一実
施の形態のコンピュータシステムにおける主要部の概略
構成を示す。図中、300は命令レジスタ、310は命
令デコーダ、320は汎用レジスタ群、330はアドレ
ス加算器、340はページテーブル(アドレス変換テー
ブル)、350はアドレス変換バッファ(TLB)、3
60は比較器、370はページ境界検出器(メモリ領域
境界検出器)、380はAND回路である。ここで、ペ
ージテーブル340は主記憶上に存在し、それ以外は主
にプロセッサ(CPU)の構成である。なお、ページ境
界検出器370とAND回路380を一緒にしてページ
境界検出制御手段(一般にはメモリ領域境界検出制御手
段)と称す。
【0017】ページテーブル340内には、仮想アドレ
ス341、実アドレス342などのアドレス変換情報の
他に、ハードウエアで当該ページの境界領域へのメモリ
アクセスの検出を行うことを示すページ境界検出フラグ
(メモリ領域境界検出フラグ)343を設ける。アドレ
ス変換バッファ(TLB)350は、ページテーブル3
40の写しであり、ページテーブル340と同様に、仮
想アドレス351と実アドレス352のアドレス変換対
の他にページ境界検出フラグ353を持っている。
【0018】以下では、16MBサイズのラージサイズ
ページでメモリを管理するコンピュータシステムにおい
て、ページの先頭および終端の4kBサイズの領域をペ
ージ境界検出領域とした場合を例にして説明するが、本
発明の適用はページ、ページ境界検出領域のメモリサイ
ズに依存しないものである。
【0019】図4に、図3中のページテーブル340の
フォーマット例の詳細を示す。図4に示したのは1論理
ページエントリに関するページテーブル情報のメモリ上
でのフォーマットである。図中、401(図3の34
1)が仮想ページアドレス(VPN)のフィールドを、
402(図3の342)が実ページアドレス(RPN)
のフィールドを示す。プロセッサは仮想アドレスのペー
ジアドレス部分をページテーブルの対応関係に基づいて
実アドレスページアドレスと置き換えることより、仮想
アドレスから実アドレスへの変換を行う。図4に示した
ページテーブルはページサイズ16MBのラージサイズ
ページ用のページテーブルであり、プロセッサは64ビ
ットの仮想アドレスを40ビットの実アドレスに変換す
る。プロテクションビット(PP)404はユーザプロ
グラムおよびシステムプログラムの当該ページへのアク
セス許可、禁止を示すビットであり、ユーザプログラム
による不正メモリアクセスの監視などに用いる。エント
リ有効ビット(V)405はページテーブルの当該エン
トリの情報が有効であることを示すエントリ有効ビット
であり、プロセッサはこのビットの値が真であるエント
リのみアドレス変換時に用いることができる。
【0020】図4中、403(図3の343)が当該ペ
ージのページ境界を検出することを示すページ境界検出
フラグ(BD)であり、本発明で新たに設けられたもの
である。ここでは、このページ境界検出フラグ403は
2ビットで構成されるとする。ビット0は当該ページ先
頭から4KBサイズの領域へのメモリアクセスをプロセ
ッサで検出することを示すビットであり、ビット1はペ
ージの終端から4KBサイズの領域へのメモリアクセス
を検出することを示すビットである。
【0021】ページテーブル内のページ境界検出フラグ
は、OSがユーザプログラムに対して動的メモリ領域
(スタック領域、ヒープ領域)を割り当てる場合に設定
する。図5に、OSのページテーブル内へのページ境界
検出フラグの設定処理フローを示す。図中、BDがペー
ジ境界検出フラグの設定値を示す。
【0022】まず、OSは、当該ページが動的メモリ領
域として割り当てる領域の最終ページであるか否かを判
定する(ステップ501)。最終ページでない場合は、
割り当て領域の終端は当該ページには存在しないため、
メモリアクセス命令の実行時、ページ境界領域の検出を
行う必要はない。そこで、OSはページ境界検出フラグ
に「00b0」を設定する(ステップ502)。一方、
当該ページが割り当て領域の最終ぺージである場合、O
Sは、割り当て領域がアドレスインクリメンタルにアク
セスされるか、アドレスデクリメンタルにアクセスされ
るかを判定する(ステップ503)。アドレスインクリ
メンタルにアクセスが行われる場合、割り当て領域の終
端は当該ページの終端となるため、ページ終端領域への
メモリアクセスを検出するためにページ境界検出フラグ
に「0b01」を設定する(ステップ504)。また、
アドレスデクリメンタルにアクセスが行われる場合、割
り当て領域の終端は当該ページの先頭となるため、ペー
ジ先頭領域へのメモリアクセスを検出するためにページ
境界検出フラグに「0b10」を設定する(ステップ5
05)。
【0023】図6は、図3中のアドレス変換バッファ
(TLB)350のフォーマット例の詳細である。TL
B350はプロセッサ内のページテーブル情報専用のキ
ャッシュメモリであり、図6に示したのは、その一つの
ページテーブルエントリ(1カラム)のフォーマットで
ある。図中、601(図3の351)が仮想ページアド
レス(VPN)、603(図3の352)が実ページア
ドレス(RPN)、605がプロテクションビット(P
P)、606(図3の353)がページ境界検出フラグ
(BD)、608がエントリ有効性ビット(V)であ
り、それぞれ、図4のページテーブルの対応する情報が
格納される。602,604,607は、それぞれVP
N,RPN,PPとBDのフィールドのパリティビット
であり、TLB内のアドレス変換情報の1ビットエラー
の検出に用いる。
【0024】以下、図3の動作を説明する。まず、図7
により、ラージサイズページのページテーブル、アドレ
ス変換バッファ(TLB)を用いたアドレス変換の概要
について説明する。プロセッサは仮想アドレス700の
ビット32〜ビット39を用いてTLB350を検索す
る。仮想アドレス700のビット32〜ビット39が指
すTLB350内のページテーブルエントリの情報を読
み出し、その仮想ページアドレス情報(VPN)と、仮
想アドレス700のビット0〜ビット31を比較器36
0で比較することにより、TLB350内に仮想アドレ
ス700に対応するページテーブルエントリが存在する
かを調べる。TLB350内の仮想ページアドレス情報
と、仮想アドレス700のビット0〜ビット31が一致
する場合(TLBヒット)、仮想アドレス700のビッ
ト0〜ビット39をTLB350内の該当エントリの実
アドレス情報(RPN)に置き換えたものを、実アドレ
ス710のビット24〜39として用いる。仮想アドレ
ス700のビット40〜63は、そのまま実アドレス7
10のビット40〜63として用いる。なお、実アドレ
ス710のビット0〜23は不使用である。一方、不一
致であった場合、TLB350に仮想アドレス700に
対応するアドレス変換情報が無かったものとして、主記
憶上のページテーブル340を検索し、該当するアドレ
ス変換情報をTLB350に転送する。ページテーブル
340内に該当するアドレス変換情報が無い場合は、ペ
ージテーブルミスとしてデータストレージ割り込みと呼
ばれる割り込みを発生する。
【0025】図3に戻り、命令レジスタ300にメモリ
アクセス命令が格納されると、ターゲットの仮想アドレ
スを汎用レジスタ群320、アドレス加算器330を用
いて計算し、その値でTLB350内のアドレス変換情
報を検索する。比較器360は、該当する仮想アドレス
に対応するアドレス変換情報がTLB350に格納され
ているかを判定する。TLB350内に該当する仮想ア
ドレスに対応するアドレス変換情報が無い場合、主記憶
内のページテーブル340から該当するアドレス変換情
報をTLB350に読み込み、再度アドレス変換情報の
検索を行う。アドレス変換情報がTLB350内にある
場合は、該当するアドレス変換情報の実アドレスフィー
ルドを読み出すことにより、仮想アドレスから実アドレ
スへのアドレス変換が行われる。この時、同時にページ
境界検出フラグ353を含むページテーブル情報がTL
B350から読み出される。
【0026】アドレス加算器330により計算された仮
想アドレスとTLB350から読み出されたページ境界
検出フラグ353がページ境界検出器370に供給され
る。ページ境界検出器370は供給されたアクセスアド
レスがページ境界検出フラグ353が示すページ境界に
対するものか否かの判定を行う。ぺージ境界検出方法に
ついては後述する。
【0027】比較器360によって判定されたアドレス
変換可否情報、ページ境界検出器370により判定され
たページ境界検出結果、命令デコーダ310により生成
されるメモリアクセス命令の実行を示す信号は、AND
回路380に供給される。メモリアクセス命令の実行
で、アドレス変換が成功し、当該ページのページ境界検
出フラグが示すページ境界へのメモリアクセスがページ
境界検出器370により検出された場合、AND回路3
80のAND条件が成立し、プロセッサは、ページ境界
検出割り込みを発生する。ページ境界検出割り込みはペ
ージテーブルミス、ページプロテクション違反など他の
割り込み条件とのOR条件でデータストレージ割り込み
と呼ばれる割り込みを発生し、データストレージ割り込
み固有の割り込みベクターをプログラムカウンタへロー
ドすることで割り込み処理ルーチンへ命令処理を移す。
【0028】次に、ページ境界検出方法を図8を用いて
具体的に説明する。ラージサイズページ使用アドレスは
16MBサイズのページによってメモリ空間が管理され
ており、ページ境界検出にページ先頭もしくは終端から
4kBサイズのメモリ空間を用いる。また、各ページは
ページの先頭アドレスの下位24ビットが0となるよう
にメモリ空間に対してアラインされている。
【0029】図8中、801は16MBサイズのページ
を示す。上記仮定よりページ先頭アドレス804の下位
24ビットは全て0,ページ終端アドレス805の下位
24ビットは全て1である。ページ先頭境界検出領域8
02はページ先頭から4kBサイズの領域であるため、
ページ先頭境界検出領域先頭アドレスはページ先頭アド
レス804と同じ、ページ先頭境界検出領域終端アドレ
ス806は下位24ビットのうち、上位12ビットは全
て0,下位12ビットは全て1である。ページ終端境界
検出領域803はページ終端から4kBサイズの領域で
あるため、ページ終端境界検出領域終端アドレスはペー
ジ終端アドレス805と同じ、ページ終端境界検出領域
先頭アドレス807は下位24ビットのうち、上位12
ビットは全て1,下位12ビットは全て0である。
【0030】以上からわかるように、この例では、ペー
ジ先頭境界検出領域のアドレスは下位24ビットのうち
の上位12ビットの値が0x000、ページ終端境界検
出領域のアドレスは下位24ビットのうちの上位12ビ
ットの値が0xFFFである。ページ境界検出器370
は、アドレス加算器330により計算された仮想アドレ
スのビット40〜ビット51の値が0x000であるこ
とを検出することでページ先頭境界へのアクセスを、0
xFFFであることを検出することでページ終端境界へ
のアクセスを検出する。
【0031】図9にページ境界検出器370の構成例を
示す。AND回路901は仮想アドレスのビット40〜
51の反転値をANDし、さらにページ境界検出フラグ
のビット0ともANDをとることにより、ページ先頭境
界検出指示のあるページでページ先頭境界へのアクセス
が行われたことを検出する。同様に、AND回路902
は仮想アドレスのビット40〜51をANDし、さらに
ページ境界検出のビット1ともANDをとることによ
り、ページ終端境界検出指示のあるページでページ終端
境界へのアクセスが行われたことを検出する。この2つ
のAND回路901,902での境界領域へのアクセス
検出結果の論理和をOR回路903で生成することによ
り、ページ境界検出フラグ353で指示されたページ境
界へのアクセスを示す信号を生成することができる。
【0032】以上は、ページ境界検出領域のメモリサイ
ズを一定(例では4kBサイズ)とする場合の実施例で
あったが、次にページ境界検出領域のメモリサイズを可
変とする場合の実施例について説明する。
【0033】ページ境界検出領域のメモリサイズを可変
とする場合、ページ境界検出領域のサイズを示すフィー
ルドをページテーブル内に設け、ページ境界検出時にそ
の値を用いる方法と、プロセッサ内にページ境界検出領
域のメモリサイズを示す命令で書き込み可能な特殊レジ
スタを設け、そのレジスタの保持する値を用いる方法と
が考えられる。プロセッサ内にページ境界検出領域のメ
モリサイズを示すレジスタを設けた場合、すべての論理
ページに対してレジスタ内の値が共通に用いられるのに
対し、ページ境界検出領域のサイズを示すフィールドを
ページテーブル内に設けた場合、ページごとにページ境
界検出領域のサイズとして異なる値を設定することがで
きる。以下では、特にページ境界検出領域のサイズを示
すフィールドをページテーブル内に設ける方式について
説明し、プロセッサ内に特殊レジスタを設ける方式につ
いては簡単に触れることにする。
【0034】図10に、ページ境界検出領域のサイズを
示すフィールドをページテーブル内に設ける方式のコン
ピュータシステムの主要部の概略構成を示す。図3の構
成との相違は、ページテーブル1040内に、仮想アド
レス1041と実アドレス1042などのアドレス変換
情報、ページ境界検出フラグ(メモリ領域境界検出フラ
グ)1043の他に、ページ境界検出領域のサイズを示
すビット(境界検出領域サイズビットすなわちページ境
界検出領域サイズビット)1044が追加されているこ
とである。このページテーブル1040に対応して、ア
ドレス変換バッファ(TLB)1050内のページテー
ブルエントリにも、仮想アドレス1051と実アドレス
1052のアドレス変換変換、ページ境界検出フラグ1
053の他に、ページ境界検出領域サイズビット105
4が格納される。ページ境界検出器1070は、アドレ
ス加算器1030により計算された仮想アドレスと、T
LB1050から読み出されたページ境界検出フラグ1
053及びページ境界検出領域サイズビット1053と
により、アクセスアドレスが当該ページ境界に対するも
のか否か判定を行う。このページ境界検出領域が可変の
場合のページ境界検出方法については後述する。図10
において、これ以外は図3と同様である。
【0035】図11に、ページ境界検出領域のサイズを
可変とする場合のページテーブルエントリの例を示す。
図4に示したページ境界検出領域のサイズを固定とする
場合のページテーブルエントリと異なり、ページ境界検
出領域のサイズを示す境界検出領域サイズビット(S
Z)1104(図10の1044)のフィールドが追加
されていることが特徴である。図10に示したように、
TLB1050内にも該ページテーブルエントリと同様
にページ境界検出領域のサイズを示すビット1054を
格納するフィールドを設け、アドレス変換時にはその情
報をページ境界検出器1070に供給する。
【0036】図12を用いてページ境界検出領域が可変
の場合のページ境界検出方法を説明する。ただし、ペー
ジ境界検出領域サイズビットは2ビットからなり、その
値により境界検出領域のサイズを512B,1kB,2
kB,4kBに設定できるものとする。
【0037】図12中、1201は16MBサイズのペ
ージをあらわしている。1202〜1209は境界検出
領域のサイズを512B,1kB,2kB,4kBとし
たときの、それぞれページ終端境界検出領域、ページ先
頭境界検出領域をあらわしている。ページは、図8と同
様に、ページ先頭アドレスの下位24ビットが0となる
ようにアラインされている。
【0038】ページ先頭境界検出領域の先頭アドレスは
ページ先頭アドレス1210と同じであり、アドレスの
下位24ビットが全て0である。ページ先頭境界検出領
域の終端アドレスは、境界検出領域サイズが4kBのと
きは1215に示すように、アドレスの下位24ビット
のうち上位12ビットが0,下位12ビットが1であ
り、2kBのときは1214に示すように、アドレスの
下位24ビットのうち上位13ビットが0,下位11ビ
ットが1であり、1kBのときは1213に示すよう
に、アドレスの下位24ビットのうち上位14ビットが
0,下位10ビットが1であり、512Bのときは12
12に示すように、アドレスの下位24ビットのうち上
位15ビットが0,下位9ビットが1である。これよ
り、ページ先頭境界検出の場合は、境界検出領域サイズ
が4kB,2kB,1kB,512Bのときで、それぞ
れ仮想アドレスのビット40〜ビット51、ビット40
〜ビット52、ビット40〜ビット53、ビット40〜
ビット54が0であることをチェックすればよいことが
わかる。
【0039】同様に、ページ終端境界検出領域の終端ア
ドレスはページ終端アドレス1211と同じであり、ア
ドレスの下位24ビットが全て1である。ページ終端境
界検出領域の先頭アドレスは境界検出領域サイズが4k
Bのときは1219に示すように、アドレスの下位24
ビットのうち上位12ビット1,下位12ビットが0で
あり、2kBのときは1218に示すように、アドレス
の下位24ビットのうち上位13ビットが1,下位11
ビットが0であり、1kBのときは1217に示すよう
に、アドレスの下位24ビットのうち上位14bビット
1,下位10ビットが0であり、512Bのときは12
16に示すように、アドレスの下位24ビットのうち上
位15ビットが1,下位9ビットが0である。つまり、
ページ終端境界検出の場合は、境界検出領域サイズが4
kB,2kB,1kB,512Bのときで、それぞれ仮
想アドレスのビット40〜ビット51、ビット40〜ビ
ット52、ビット40〜ビット53、ビット40〜ビッ
ト54が1であることをチェックすればよい。
【0040】図13に、図12で説明した境界検出領域
サイズ可変の場合のページ境界検出器1070を構成例
を示す。マスク生成回路1304は、TLB1050か
ら供給される境界領域サイズビット1050を入力と
し、3ビットの出力信号をもつ回路で、境界領域サイズ
が512Bのときは0b000,1kBのときは0b0
01,2kBのときは0b011,4kBのときは0b
111を出力する。この回路1304が出力するマスク
信号で仮想アドレスビット52〜54の値のチェックを
マスクすることにより、境界検出領域サイズによって、
チェックする仮想アドレスのビットを変化させる。図9
に示したページ境界検出回路の構成例と同様に、AND
回路1301がページ先頭境界へのアクセスを、AND
回路1302がページ終端境界へのアクセスを検出し、
これらアクセス検出結果をOR回路1303から出力す
る。
【0041】以上のように、境界検出領域のサイズによ
ってページ境界検出器1070でチェックする仮想アド
レスのビット幅を変えることにより、境界検出領域可変
の場合のページ境界検出機能を実現できる。
【0042】図14は、ページ境界検出領域のメモリサ
イズを可変とする場合に、プロセッサ内にページ境界検
出領域のメモリサイズ情報を示すレジスタを設ける方式
のコンピュータシステムの主要部の概略構成である。図
10の構成との相違は、プロセッサ内にページ境界検出
領域サイズレジスタ1490を設け、ページテーブル1
440及びアドレス変換バッファ(TLB)1450内
にはページ境界検出領域サイズビットを設けないように
したことである。レジスタ1490は、ページ境界検出
領域のメモリサイズを示す命令で書き込み可能な特殊レ
ジスタである。ページ境界検出器1470は、アドレス
加算器1430により計算された仮想アドレスとTLB
1450から読み出されたページ境界検出フラグ145
3、及び、ページ境界検出領域サイズレジスタ1490
のページ境界検出領域のメモリサイズ情報を入力して、
アクセスアドレスが当該ページ境界に対するものか否か
の判定を行う。
【0043】ページ境界検出器1470の構成は、図1
3と同様である。すなわち、図13において、マスク生
成回路1304は、TLBからのページ境界検出領域サ
イズビットにかえて、ページ境界検出領域サイズレジス
タ1490の情報を入力して、指定された境界領域サイ
ズに対応するマスク信号を生成すればよい。
【0044】最後に、本発明によるページ境界検出機能
のスタック領域あふれ検出への利用例について説明す
る。
【0045】図15に、OSがスタック領域としてメモ
リ空間1500中のページ1501,1502をプログ
ラムに割り当て、本発明によるページ境界検出機能を用
いてスタックあふれ検出を行う場合のメモリの利用状況
を示す。また、図16に、その時のページテーブル16
00の例を示す。スタック領域では、プログラムはアド
レスデクリメンタルに動的メモリ確保を行う。また、ペ
ージテーブル1600は、図4に示したものと同様に、
ビット0がページ先頭境界、ビット1がページ終端境界
の検出を示す2ビットからなるページ境界検出フラグ
(BD)を持つとする。
【0046】上記仮定の通り、図15のスタック領域で
は新規の動的メモリ確保はアドレスデクリメンタルに行
うため、スタック領域の終端はページ1503の先頭ア
ドレスとなる。OSは、ページ1503の先頭境界領域
においてプロセッサにページ境界検出をさせることによ
り、スタックあふれを検出する。OSは、図16に示し
たように、ページテーブル160のページ1502に該
当するエントリ(ページ番号1502)のページ境界検
出ビット(BD)の値を0b10とすることにより、プ
ロセッサに対し、ページ1502のページ先頭境界検出
を指示する。
【0047】このように、ページテーブル情報を設定す
ることにより、プログラムによるページ1502内のス
タックあふれ検出領域1504へのメモリアクセス発生
時に、プロセッサに割り込みを発生させ、スタックあふ
れを検出することができる。
【0048】
【発明の効果】以上説明したように、本発明によれば、
プログラムに動的メモリ領域として割り当てたページの
一部領域へのメモリアクセスに着目して、動的メモリ領
域あふれを検出することにより、動的メモリ領域あふれ
検出に消費される論理メモリ空間のサイズを小さく抑え
ることができる。
【図面の簡単な説明】
【図1】本発明によるメモリ領域境界検出方法を説明す
るためのメモリ空間の使用例を示す図である。
【図2】従来のメモリ領域境界検出方法を説明するため
のメモリ空間の使用例を示す図である。
【図3】本発明によるコンピュータシステムの一実施形
態を示す概略ブロック図である。
【図4】本発明によるページテーブルのフォーマット例
を示す図である。
【図5】ページテーブル内へのページ境界検出フラグ設
定の処理フローチャートである。
【図6】本発明によるアドレス変換テーブル(TLB)
のフォーマット例を示す図である。
【図7】アドレス変換処理の概念図である。
【図8】本発明によるメモリ領域境界検出方法の具体的
説明図である。
【図9】本発明によるページ境界検出器の構成例を示す
図である。
【図10】本発明によるコンピュータシステムの他の実
施形態を示す概略ブロック図である。
【図11】ページ境界検出領域サイズを可能とした場合
のページテーブルのフォーマット例を示す図である。
【図12】ページ境界検出領域サイズを可能とした場合
のメモリ領域境界検出方法の具体的説明図である。
【図13】ページ境界検出領域サイズを可能とした場合
のページ境界検出器の構成例を示す図である。
【図14】本発明によるコンピュータシステムの更に他
の実施形態を示す概略ブロック図である。
【図15】本発明メモリ領域境界検出方法をスタックあ
ふれ検出に用いた場合のメモリ空間の使用例を示す図で
ある。
【図16】図15のメモリ空間の使用例に対応するペー
ジテーブル例を示す図である。
【符号の説明】
101,102,103 ページ(メモリ領域) 104 スタックあふれ検出領域 340,1040,1440 ページテーブル(アドレ
ス変換テーブル) 341,401,1041,1101,1441 仮想
アドレス 342,402,1042,1102,1442 実ア
ドレス 343,403,1043,1103,1443 ペー
ジ境界検出フラグ(メモリ領域境界検出フラグ) 350,1050,1450 アドレス変換バッファ
(TLB) 351,601,1051,1451 仮想アドレス 352,602,1052,1452 実アドレス 353,606,1053,1453 ページ境界検出
フラグ 1044,1104 ページ境界検出領域サイズビット
(境界検出領域サイズビット) 1490 ページ境界検出領域サイズレジスタ(境界検
出領域サイズレジスタ) 370,1070,1470 ページ境界検出器(メモ
リ境界検出器)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 栗原 俊彦 神奈川県秦野市堀山下1番地 株式会社日 立製作所エンタープライズサーバ事業部内 Fターム(参考) 5B005 JJ01 MM31 MM51 NN42 RR02 VV12 5B017 AA01 BA01 BB08 CA01 5B033 DA03 DA05 DB01 5B042 GA25 GA33 GC08 JJ43 JJ44 JJ47 KK01 LA08 LA16 LA17

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 一定もしくは可変サイズのメモリ領域を
    単位としてメモリを管理し、アドレス変換テーブルを用
    いて命令により指定される仮想アドレスを実アドレスに
    変換してメモリアクセスする機構を備えたコンピュータ
    システムにおいて、 アドレス変換テーブル内にメモリ領域境界を検出するこ
    とを示すフラグ(以下、メモリ領域境界検出フラグ)を
    設け、該メモリ領域境界検出フラグの値が真であるメモ
    リ領域の先頭または終端から一定範囲内の領域に対する
    メモリアクセスが発生した場合に割り込みを発生するこ
    とを特徴とするメモリ領域境界検出方法。
  2. 【請求項2】 請求項1記載のメモリ領域境界検出方法
    において、アドレス変換テーブル内に、さらにメモリ領
    域境界検出に用いる領域のサイズを示すビット(以下、
    境界検出領域サイズビット)を設け、メモリ領域境界検
    出フラグの値が真であるメモリ領域の先頭または終端か
    ら、前記境界検出領域サイズビットで示されるサイズの
    領域に対するメモリアクセスが発生した場合に割り込み
    を発生することを特徴とするメモリ領域境界検出方法。
  3. 【請求項3】 請求項1記載のメモリ領域境界検出方法
    において、メモリ領域境界検出に用いる領域のサイズ
    (以下、境界検出領域サイズ)を別に指定し、メモリ領
    域境界検出フラグの値が真であるメモリ領域の先頭また
    は終端から、前記指定された境界検出領域サイズの領域
    に対するメモリアクセスが発生した場合に割り込みを発
    生することを特徴とするメモリ領域境界検出方法。
  4. 【請求項4】 一定もしくは可変サイズのメモリ領域を
    単位としてメモリを管理し、アドレス変換テーブルを用
    いて命令により指定される仮想アドレスを実アドレスに
    変換してメモリアクセスする機構を備えたコンピュータ
    システムにおいて、 仮想アドレスと実アドレスのアドレス変換情報に加え
    て、メモリ領域境界を検出することを示すメモリ領域境
    界検出フラグを設けたアドレス変換テーブルと、 前記アドレス変換テーブルの写しを格納するアドレス変
    換バッファと、 メモリアクセス命令の実行時に、当該メモリアクセス命
    令の仮想アドレスと前記メモリ変換テーブルあるいは前
    記アドレス変換バッファから読み出された前記メモリ領
    域境界検出フラグとにより、該メモリ領域境界検出フラ
    グの値が真であるメモリ領域の先頭または終端から一定
    範囲内の領域に対するメモリアクセスが発生した場合に
    割り込みを発生するメモリ領域境界検出制御手段と、を
    有することを特徴とするコンピュータシステム。
JP2000235870A 2000-08-03 2000-08-03 メモリ領域境界検出方法及びコンピュータシステム Pending JP2002049531A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000235870A JP2002049531A (ja) 2000-08-03 2000-08-03 メモリ領域境界検出方法及びコンピュータシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000235870A JP2002049531A (ja) 2000-08-03 2000-08-03 メモリ領域境界検出方法及びコンピュータシステム

Publications (1)

Publication Number Publication Date
JP2002049531A true JP2002049531A (ja) 2002-02-15

Family

ID=18728009

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000235870A Pending JP2002049531A (ja) 2000-08-03 2000-08-03 メモリ領域境界検出方法及びコンピュータシステム

Country Status (1)

Country Link
JP (1) JP2002049531A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010032330A1 (ja) * 2008-09-22 2010-03-25 富士通株式会社 情報処理装置及びそのメモリ保護方法
JP2010134748A (ja) * 2008-12-05 2010-06-17 Fuji Xerox Co Ltd 画像処理装置
JP2010134747A (ja) * 2008-12-05 2010-06-17 Fuji Xerox Co Ltd 画像処理装置
JP2013109393A (ja) * 2011-11-17 2013-06-06 Toyota Motor Corp 情報処理装置およびメモリ保護装置の動作確認方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010032330A1 (ja) * 2008-09-22 2010-03-25 富士通株式会社 情報処理装置及びそのメモリ保護方法
JP5392263B2 (ja) * 2008-09-22 2014-01-22 富士通株式会社 情報処理装置及びそのメモリ保護方法
JP2010134748A (ja) * 2008-12-05 2010-06-17 Fuji Xerox Co Ltd 画像処理装置
JP2010134747A (ja) * 2008-12-05 2010-06-17 Fuji Xerox Co Ltd 画像処理装置
JP2013109393A (ja) * 2011-11-17 2013-06-06 Toyota Motor Corp 情報処理装置およびメモリ保護装置の動作確認方法

Similar Documents

Publication Publication Date Title
US7917710B2 (en) Memory protection in a computer system employing memory virtualization
US7827381B2 (en) Hybrid techniques for memory virtualization in a computer system
US7752417B2 (en) Dynamic selection of memory virtualization techniques
US7822941B2 (en) Function-based virtual-to-physical address translation
US7165164B2 (en) Method and apparatus including heuristic for sharing TLB entries
US8296538B2 (en) Storing secure mode page table data in secure and non-secure regions of memory
US5852738A (en) Method and apparatus for dynamically controlling address space allocation
JP5581403B2 (ja) メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納
JP5914145B2 (ja) メモリ保護回路、処理装置、およびメモリ保護方法
JP2000057054A (ja) 高速アドレス変換システム
US11474956B2 (en) Memory protection unit using memory protection table stored in memory system
JPS6248258B2 (ja)
US7269825B1 (en) Method and system for relative address translation
CN109426624B (zh) 用于高效利用地址转换缓存的装置和方法
US7512768B2 (en) Dynamically sharing a stack between different code segments
US11907301B2 (en) Binary search procedure for control table stored in memory system
JPH0981459A (ja) アドレス変換バッファ装置
JP2002049531A (ja) メモリ領域境界検出方法及びコンピュータシステム
JPH06332803A (ja) 仮想計算機システムにおけるtlb制御方法
JP3476402B2 (ja) アドレス変換装置及びアドレス変換方法
EP1262876B1 (en) Multiprocessing system with shared translation lookaside buffer
JP2011180969A (ja) データプロセッサ
JPH08235069A (ja) アドレス境界例外チェック回路
JPH079633B2 (ja) 共有メモリの割り当て制御方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050719

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090401