(57)【特許請求の範囲】
【請求項１】
セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得部と、
前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定部と、
前記判定の結果を出力する出力部と
を備えることを特徴とする範囲外参照検出装置。
【請求項２】
前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
ことを特徴とする請求項１に記載の範囲外参照検出装置。
【請求項３】
前記マスク値を生成して前記マスク値記憶部へ記憶させる生成部
を備えることを特徴とする請求項１あるいは請求項２に記載の範囲外参照検出装置。
【請求項４】
前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
前記生成部は、新たな前記マスク値を生成し、
前記判定部は、さらに、前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
前記出力部は、新たな前記マスク値を使用した前記判定の前記結果を出力する
ことを特徴とする請求項３に記載の範囲外参照検出装置。
【請求項５】
前記マスク値の前記初期値は、前記セグメントの最小サイズを下回る値である
ことを特徴とする請求項４に記載の範囲外参照検出装置。
【請求項６】
前記マスク値の前記初期値は、各々の前記セグメントのセグメントサイズより所定の値だけ小さい値である
ことを特徴とする請求項４に記載の範囲外参照検出装置。
【請求項７】
セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得し、
前記実効アドレスが前記マスク値の範囲を超えているか否かを判定し、
前記判定の結果を出力する
ことを特徴とする範囲外参照検出方法。
【請求項８】
前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
ことを特徴とする請求項７に記載の範囲外参照検出方法。
【請求項９】
前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
新たな前記マスク値を生成して前記マスク値記憶部へ記憶させ、
前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
新たな前記マスク値を使用した前記判定の前記結果を出力する
ことを特徴とする請求項７あるいは請求項８に記載の範囲外参照検出方法。
【請求項１０】
コンピュータに、
セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得機能と、
前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定機能と、
前記判定の結果を出力する出力機能と
を実現させることを特徴とする範囲外参照検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実効アドレスが参照可能なメモリ範囲を超えているか否かを検出する、範囲外参照検出装置、方法およびプログラムに関する。
【背景技術】
【０００２】
情報処理装置におけるメモリ管理方式の一つに、セグメント方式がある。セグメント方式では、仮想アドレス空間上のプログラムを可変長のセグメント単位で管理する。
【０００３】
セグメント方式を採用する情報処理装置では、仮想アドレス空間を生成する際、セグメントのベースアドレスフィールドとセグメントサイズフィールドを持つセグメント記述子をセグメントテーブルに保存する。
【０００４】
図１０はセグメントテーブルの例である。ベースアドレスフィールドには、各セグメントの仮想アドレス空間上の開始アドレスを保存する。また、セグメントサイズフィールドには、当該セグメントのサイズを保存する。
【０００５】
また、ベースアドレス指定方式やインデックスアドレス指定方式など、ベースアドレスを使用して参照する仮想アドレスを指定する方法の場合、命令のオペランド部にベースアドレスレジスタ番号と相対アドレスが格納されている。そして、そのベースアドレスレジスタ番号のベースアドレスレジスタからベースアドレスを取得し、ベースアドレスと相対アドレスを加算することで、実効アドレスを計算することができる。
【０００６】
一方、実行するプロセスには、参照可能なセグメントが定められている。情報処理装置では、参照しようとした実効アドレスが参照可能なセグメントの範囲を超えるとき、範囲外参照例外と判定し、範囲外参照例外に対する例外処理を行う。
【０００７】
範囲外参照を検出する方法には、たとえば、特許文献１に記載の方法のように、セグメントテーブルを検索して参照するセグメントに対応するセグメントサイズを取得し、実効アドレスの相対アドレスがそのセグメントサイズを超えてないか判定する方法がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開昭６０−１１４９４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献１の方法のように、参照するセグメントに対応するセグメントサイズをセグメントテーブルから取得するためには、まず、参照するセグメントのセグメント番号を割り出す必要がある。セグメント番号は、ベースアドレスの一部に含まれるため、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するベースアドレスレジスタからベースアドレスを読み出すことで割り出すことができる。そして、セグメントテーブルのベースアドレスフィールドをそのセグメント番号をキーとして検索することで、参照するセグメントに対応するセグメントサイズを取得することができる。
【００１０】
このように、参照するセグメントに対応するセグメントサイズをセグメントテーブルから取得するためには、まずベースアドレスレジスタを読み出してセグメント番号を割り出し、さらに、セグメントテーブルを検索する必要がある。そのため、セグメントサイズの取得に時間がかかってしまう。
【００１１】
さらに、セグメントテーブルを検索する方法では、セグメントテーブルが複雑になると、セグメントテーブルの検索に時間がかかる場合がある。
【００１２】
セグメントテーブルが一つの場合は、図１１のように、ベースアドレスレジスタのセグメント番号をキーにセグメントテーブルを検索する。これに対して、たとえば、マルチプロセスの場合には、プロセス毎に独立した仮想アドレス空間を持つため、図１２のように、プロセス毎にセグメントテーブルを持つ場合がある。このような場合には、まず、プロセス番号から当該プロセスのセグメントテーブルを特定し、その後、セグメント番号に対応するセグメントサイズを取得する必要がある。
【００１３】
また、セグメント数が多い場合には、図１３のように、セグメント番号のフィールドをいくつかに分け、テーブルを多段に構成する場合がある。このような構成の場合、何段かのセグメントテーブルを検索する必要が生じる場合がある。図１３の例では、セグメント番号をＵＰＰＥＲとＬＯＷＥＲの２つに分け、ＵＰＰＥＲ毎にセグメントテーブルを持つようにしている。この例では、まず、セグメント番号ＵＰＰＥＲに対応するセグメントテーブルを特定し、その後、セグメント番号のＬＯＷＥＲに対応するセグメントサイズを取得する必要がある。
【００１４】
このようにテーブルが複雑になると、セグメントテーブルはメモリに置かれることが多いためメモリアクセス回数が増加し、セグメントテーブルの検索にさらに時間がかかってしまう。
【００１５】
本発明の目的は、高速に範囲外参照判定を行うことを可能とする、範囲外参照検出装置、方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
上述の問題を解決するために、本発明の範囲外参照検出装置は、セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得部と、前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定部と、前記判定の結果を出力する出力部とを備えることを特徴とする。
【００１７】
また、本発明の範囲外参照検出方法は、セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得し、前記実効アドレスが前記マスク値の範囲を超えているか否かを判定し、前記判定の結果を出力することを特徴とする。
【００１８】
また、本発明の範囲外参照検出プログラムは、コンピュータに、セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得機能と、前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定機能と、前記判定の結果を出力する出力機能とを実現させることを特徴とする。
【発明の効果】
【００１９】
本発明の範囲外参照検出装置、方法およびプログラムにより、高速に範囲外参照判定を行うことが可能になる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第一および第二の実施形態の範囲外参照検出装置の構成例を示す図である。
【図２】本発明の第一の実施形態の範囲外参照検出装置の動作例を示す図である。
【図３】本発明の各実施形態のマスク値の例を示す図である。
【図４】本発明の各実施形態のプロセスロールインからプロセスロールアウトまでの一連の動作例を示す図である。
【図５】本発明の第二および第三の実施形態の実効アドレス計算の動作例を示す図である。
【図６】本発明の第三の実施形態の範囲外参照検出装置の構成例を示す図である。
【図７】本発明の第四の実施形態の範囲外参照検出装置の構成例を示す図である。
【図８】本発明の第四の実施形態の実効アドレス計算の動作例を示す図である。
【図９】本発明の各実施形態のハードウェア構成例を示す図である。
【図１０】セグメントテーブルの例を示す図である。
【図１１】セグメントテーブルの検索の例を示す図である。
【図１２】セグメントテーブルの検索の例を示す図である。
【図１３】セグメントテーブルの検索の例を示す図である。
【発明を実施するための形態】
【００２１】
［第一の実施形態］
本発明の第一の実施の形態について説明する。
【００２２】
図１に範囲外参照検出装置１０の構成例を示す。本実施形態の範囲外参照検出装置１０は、取得部１１、判定部１３および出力部１４により構成される。
【００２３】
取得部１１は、マスク値記憶部１２から所定の実効アドレスのベースアドレスレジスタ番号に対応するマスク値を取得する部分である。マスク値記憶部１２は、セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶した部分である。
【００２４】
判定部１３は実効アドレスがマスク値の範囲を超えているか否かを判定する部分である。出力部１４は判定の結果を出力する部分である。
【００２５】
このように範囲外参照検出装置１０を構成することによって、境界外検出装置１０は、マスク値をマスク値記憶部１２から取得する。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部１２から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００２６】
次に、図２に本実施形態の範囲外参照検出装置１０の動作の例を示す。
【００２７】
まず、範囲外参照検出装置１０の取得部１１は、マスク値記憶部１２から所定の実効アドレスのベースアドレスレジスタ番号に対応するマスク値を取得する（ステップＳ１０１）。次に、判定部１３は実効アドレスがマスク値の範囲を超えているか否かを判定する（ステップＳ１０２）。そして、出力部１４は判定の結果を出力する（ステップＳ１０３）。
【００２８】
このように範囲外参照検出装置１０を動作させることによって、境界外検出装置１０は、マスク値をマスク値記憶部１２から取得する。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部１２から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００２９】
以上で説明したように、本発明の第一の実施形態では、ベースアドレスレジスタ番号に対応するマスク値を記憶したマスク値記憶部からマスク値を取得する。これにより、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずにマスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００３０】
［第二の実施形態］
次に、本発明の第二の実施の形態について説明する。
【００３１】
本実施形態では、あらかじめマスク値記憶部１２に正しいマスク値を記憶させておく場合について、具体的に説明する。
【００３２】
範囲外参照検出装置１０の構成例は、第一の実施形態（図１）と同様である。
【００３３】
本実施形態では、マスク値記憶部１２に、あらかじめ、各々のベースアドレスレジスタ番号に対応するマスク値を記憶させておく。マスク値記憶部１２は、境界外検出装置１０の中あるいは外のいずれにも構成可能である。たとえば、マスク値記憶部１２は主記憶メモリ上に確保しても良いし、レジスタに割り当てることも可能である。ベースアドレスレジスタは各々のセグメントのベースアドレス（開始アドレス）を保存するレジスタで、ベースアドレスレジスタ番号は、ベースアドレスレジスタを識別する番号である。また、マスク値は、ベースアドレスから連続して参照可能なメモリサイズである。このメモリサイズは、連続して参照可能な範囲内に含まれるアドレスの数とすると良い。
【００３４】
セグメントの境界をまたいで参照することが不可能なセグメントの場合、そのセグメントのマスク値はセグメントサイズと同一となる。しかし、セグメントによっては、他のセグメントと連続して参照可能な場合がある。特許文献１に記載の方法のように、セグメントテーブルからセグメントサイズを取得して範囲外参照を判定する方法では、他のセグメントと連続して参照可能なセグメントであっても、他のセグメントの部分を参照する場合に範囲外参照と判定してしまう。そのため、本実施形態では、連続して参照可能なセグメントの合計サイズをマスク値とする。このように、連続して参照可能なセグメントの合計サイズをマスク値とすることによって、他のセグメントと連続して参照可能なセグメントを参照する場合でも、正しく範囲外参照を判定することが可能になる。
【００３５】
図３にマスク値記憶部１２に記憶させたマスク値の例を示す。この例では、ベースアドレスレジスタ番号ｉ（ｉ＝１〜ｎ）に対応するマスク値をＭｉとしている。また、この例では、ベースアドレスレジスタ番号１に対応するセグメントＡがセグメントＢと連続して参照可能であるため、ベースアドレスレジスタ番号１に対応するマスク値Ｍ１は、セグメントＡとセグメントＢのセグメントサイズの合計となる。
【００３６】
取得部１１は、所定の実効アドレスのベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部１２から取得する部分である。ベースアドレスレジスタ番号は、命令のオペランド部に含まれる。図３の例の場合、ベースアドレスレジスタ番号ｉ（ｉ＝１〜ｎ）に対応するマスク値Ｍｉを取得する。
【００３７】
判定部１３は、参照する実効アドレスが参照可能な範囲外か否かを判定する部分である。マスク値がＭｉのとき、実効アドレスがベースアドレスからマスク値Ｍｉの範囲内にあるか否かを判定する。
【００３８】
出力部１４は、判定の結果、すなわち、範囲外参照か否かを出力する部分である。
【００３９】
このように範囲外参照検出装置１０を構成することによって、境界外検出装置１０は、マスク値をマスク値記憶部１２から取得する。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部１２から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００４０】
さらに、本実施形態では、マスク値をベースアドレスから連続参照可能なサイズとするため、他のセグメントと連続して参照可能なセグメントであっても、正しく範囲外参照を判定することが可能になる。
【００４１】
次に、図４および図５を用いて、範囲外参照検出装置１０の動作の例について説明する。
【００４２】
図４は、コンピュータがプロセスを実行する場合の、プロセスロールインからプロセスロールアウトまでの一連の動作を示したフローチャートである。本実施形態では、演算命令を実行する場合について説明する。
【００４３】
図５は図４のステップＳ２０４の実効アドレス計算の詳細動作の例を示す図である。本実施形態の範囲外参照検出装置１０の動作は、図５のステップＳ３０２からステップＳ３０４に該当する。範囲外参照検出装置１０では、プロセスの命令によって参照する実効アドレスが、参照可能な範囲を超えていないかの判定を行う。
【００４４】
コンピュータは、プロセスの実行を開始すると、まず、プロセスロールイン処理を行う（ステップＳ２０１）。次に、命令を取り出し（ステップＳ２０２）、取り出した命令の解読を行う（ステップＳ２０３）。そして、解読した命令に従って、実効アドレスを計算し（ステップＳ２０４）、実効アドレスに該当する主記憶メモリを参照して演算に必要なデータを取得する（ステップＳ２０５）。次に、解読した命令に従って演算を実行し（ステップＳ２０６）、その演算結果をレジスタあるいは主記憶メモリに格納する（ステップＳ２０７）。そして、次の命令があれば（ステップＳ２０８）ステップＳ２０２に戻り、次の命令がなければ、プロセスロールアウト処理（ステップＳ２０９）を行ってプロセスの実行を終了する。
【００４５】
次に、ステップＳ２０４の実効アドレス計算の詳細動作の例について、図４を用いて説明する。
【００４６】
まず、図４のステップＳ２０３で解読した命令のオペランド部に含まれるベースアドレスレジスタ番号やインデックスレジスタ番号、オフセット（相対アドレス）などから実効アドレスを計算する（ステップＳ３０１）。また、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部１２から取得する（ステップＳ３０２）。
【００４７】
次に、ステップＳ３０２で取得したマスク値を用いて、ステップＳ３０１で計算した実効アドレスが参照可能な範囲を超えているか否かを判定する（ステップＳ３０３）。より具体的には、一度に複数の実効アドレスを参照する場合があるため、今回の命令で参照する実効アドレスの最大値が、ベースアドレス〜（ベースアドレス＋マスク値−１）の仮想アドレスの範囲に含まれるか否かを判定する。あるいは、今回の命令で参照する実効アドレスの相対アドレスの最大値が（マスク値−１）より大きいか否かを判定することで、範囲外参照か否かを判定することも可能である。
【００４８】
たとえば、ベースアドレスがＡｉ、マスク値がＭｉの場合、参照する実効アドレスの最大値がＡｉ＋Ｍｉ−１を超えるか否か、あるいは、参照する実効アドレスの相対アドレスの最大値がＭｉ−１を超えるか否かを判定する。
【００４９】
そして、出力部１４は、判定結果、すなわち、範囲外参照を検出したか否かを出力する。コンピュータは、出力部１４が出力した判定結果が範囲外参照を示すとき、範囲外参照例外に対する例外処理を行う（ステップＳ３０６）。
【００５０】
このように範囲外参照検出装置１０を動作させることによって、境界外検出装置１０は、マスク値をマスク値記憶部１２から取得する。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部１２から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００５１】
以上で説明したように、本発明の第二の実施形態では、第一の実施形態と同様に、ベースアドレスレジスタ番号に対応するマスク値を記憶したマスク値記憶部からマスク値を取得する。これにより、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００５２】
さらに、本実施形態では、マスク値をベースアドレスから連続参照可能なサイズとするため、他のセグメントと連続して参照可能なセグメントであっても、正しく範囲外参照を判定することが可能になる。
【００５３】
［第三の実施形態］
次に、本発明の第三の実施の形態について説明する。
【００５４】
本実施形態では、範囲外参照検出装置にマスク値を生成する構成を備える場合について説明する。
【００５５】
図６に、本実施形態の範囲外参照検出装置２０の構成例を示す。範囲外参照検出装置２０では、範囲外参照検出装置１０に対して生成部２５を追加している。
【００５６】
生成部２５は、各々のベースアドレスレジスタ番号に対応するマスク値を生成し、マスク値記憶部１２に記憶させる部分である。生成部２５では、他のセグメントと連続参照可能かどうかといったプロセスの実行条件や、セグメントサイズが固定か可変かといったセグメントの構成などからマスク値を決定する。
【００５７】
他の部分については、第二の実施形態の説明と同様のため、説明を省略する。
【００５８】
このように範囲外参照検出装置２０を構成することによって、境界外検出装置２０は、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部１２に記憶させる。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値生成部１２から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００５９】
範囲外参照検出装置２０の動作例については、マスク値の生成以外については、第二の実施形態の範囲外参照検出装置１０の動作例の説明（図４および図５）と同様である。マスク値の生成については、マスク値の生成にかかる時間をなるべく短くするため、各ベースアドレスレジスタ番号に対するマスク値の生成が一回以下になるようにすると良い。たとえば、図４のステップＳ２０１のプロセスロールイン処理の後にマスク値の生成を行うと、各ベースアドレスレジスタ番号に対するマスク値の生成を一回とすることができる。
【００６０】
このように範囲外参照検出装置２０を動作させることによって、高速に範囲外参照判定を行うことが可能になる。
【００６１】
以上で説明したように、本発明の第三の実施形態では、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部に記憶させる。これにより、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００６２】
［第四の実施形態］
次に、本発明の第四の実施の形態について説明する。
【００６３】
本実施形態では、第三の実施形態のマスク値の生成をより効率化し、必要なときのみマスク値を生成する場合について説明する。
【００６４】
図７に、本実施形態の範囲外参照検出装置３０の構成例を示す。範囲外参照検出装置３０は、取得部１１、マスク値記憶部３２、判定部３３、生成部３５および出力部１４により構成される。取得部１１および出力部１４については、第二および第三の実施形態の範囲外参照検出装置１０および範囲外参照検出装置２０と同様である。
【００６５】
マスク値記憶部３２には、プロセスの開始時に、各々のベースアドレスレジスタ番号に対するマスク値の初期値を記憶させておく。初期値には、たとえば、各セグメントの最小サイズ未満の値を指定する。このようにすると、正しいマスク値は各セグメントの最小サイズ以上の値しか取り得ないため、マスク値が初期値であることを容易に判断することが可能になる。以降、マスク値の初期値は０であることを前提に説明する。
【００６６】
取得部１１は、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部３２から取得する部分である。
【００６７】
判定部３３は、取得部１１で取得したマスク値を用いて、実効アドレスが参照可能な範囲内にあるかどうかを判定する部分である。さらに、本実施形態では、生成部３５が新たなマスク値を生成したとき、新たなマスク値を用いて実効アドレスが参照可能な範囲内にあるかどうか、２回目の判定を行う。
【００６８】
生成部３５は、判定部３３での判定結果が範囲外参照であり、かつ、マスク値が初期値のとき、新たなマスク値を生成する部分である。生成部２５では、他のセグメントと連続参照可能かどうかといったプロセスの実行条件や、セグメントサイズが固定か可変かといったセグメントの構成などからマスク値を決定する。
【００６９】
このように範囲外参照検出装置３０を構成することによって、境界外検出装置３０は、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部３２に記憶させる。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００７０】
さらに、本実施形態では、範囲外参照と判定し、かつ、マスク値が初期値のときのみ、新たなマスク値を生成する。そのため、必要となったベースアドレスレジスタ番号に対してのみマスク値を生成することになり、より高速にマスク値を生成することが可能になる。
【００７１】
図８は、図４のステップＳ２０４の実効アドレス計算の詳細動作の例を示す図である。本実施形態の範囲外参照検出装置３０の動作は、図８のステップＳ４０２からステップＳ４０８に該当する。
【００７２】
まず、図４のステップＳ２０１のプロセスロールイン処理の後などで、マスク値記憶部３２にマスク値の初期値を記憶させる。本実施形態では、すべてのベースアドレスレジスタに対するマスク値を０とする。
【００７３】
そして、ステップＳ２０４の実効アドレス計算では、まず、図４のステップＳ２０３で解読した命令に含まれるベースアドレスレジスタ番号やインデックスレジスタ番号などから実効アドレスを計算する（ステップＳ４０１）。また、命令のオペランド部に含まれるベースアドレスレジスタ番号ｉに対応するマスク値Ｍｉをマスク値記憶部３２から取得する（ステップＳ４０２）。
【００７４】
次に、ステップＳ４０２で取得したマスク値を用いて、ステップＳ４０１で計算した実効アドレスが参照可能な範囲に含まれるか否かを判定する（ステップＳ４０３）。ここまでは図５のステップＳ３０１からステップＳ３０３の動作と同様である。
【００７５】
本実施形態では、ステップＳ４０３での判定結果が範囲外参照であり（ステップＳ４０４でＹＥＳ）、かつ、マスク値が初期値のとき（ステップＳ４０５でＹＥＳ）、正しいマスク値の生成を行う（ステップＳ４０６）。生成部３５では、プロセスの実行条件やセグメントの構成からマスク値を決定し、マスク値記憶部３２に記憶させる。そして、判定部３３は、生成部３５が生成したマスク値を用いて、実効アドレスが参照可能な範囲内か否かを判定する（ステップＳ４０７）。
【００７６】
本実施形態では、マスク値Ｍｉの初期値を０としている。そのため、実効アドレス計算に使用するベースアドレスレジスタ番号がプロセスロールイン後に初めて使用するベースアドレスレジスタ番号である場合、ステップＳ４０４は必ずＹＥＳとなる。そして、新たに生成したマスク値をマスク値記憶部３２に記憶させる。
【００７７】
ここで新たに生成したマスク値をマスク値記憶部３２に記憶させることにより、ベースアドレスレジスタの値が変更されない限り、同じベースアドレスレジスタを使用して範囲外参照を判定する場合にこの新たに生成したマスク値を使用することが可能になる。
【００７８】
実効アドレス計算に使用するベースアドレスレジスタ番号がプロセスロールイン後に一度以上使用したベースアドレスレジスタ番号の場合は、マスク値が新たに生成したマスク値となっているため、ステップＳ４０３で正しい範囲外参照判定が行われる。そのため、ステップＳ４０４で範囲外参照と判定されても、ステップＳ４０５でマスク値が初期値でない値になっているため、ステップＳ４０６のマスク値の生成は行われない。
【００７９】
出力部１４は、ステップＳ４０４で範囲外参照でないと判定されたとき、あるいは、ステップＳ４０５でマスク値が初期値でないとき、ステップＳ４０３の判定結果を出力する。ステップＳ４０５でマスク値が初期値だったときは、ステップＳ４０７での判定結果を出力する（ステップＳ４０８）。コンピュータは、出力部１４が出力した判定結果が範囲外参照を示すとき（ステップＳ４０９）、範囲外参照例外に対する例外処理を行う（ステップＳ４１０）。
【００８０】
このように範囲外参照検出装置３０を動作させることによって、境界外検出装置３０は、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部３２に記憶させる。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００８１】
なお、以上の説明ではマスク値の初期値を０としたが、各ベースアドレスレジスタ番号のベースアドレスに対応するセグメントのセグメントサイズから所定の値（たとえば１）を減算した値をマスク値の初期値とすることも可能である。このようにすると、実効アドレスが他のセグメントとの境界に近い場合以外には、図８のステップＳ４０４において範囲外参照でない（ＮＯ）と判定されるため、さらにマスク値の生成回数を削減することが可能になる。
【００８２】
ここで、初期値を各セグメントのセグメントサイズとすると、連続して参照可能な他のセグメントがないときの正しいマスク値と初期値が同じ値となるため、ステップＳ４０５においてマスク値が初期値かどうか判断することが難しくなる。そのため、セグメントサイズから所定の値を減算した値を初期値とすると良い。
【００８３】
以上で説明したように、本発明の第四の実施形態では、第三の実施形態と同様に、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部に記憶させる。これにより、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
【００８４】
さらに、本実施形態では、範囲外参照と判定し、かつ、マスク値が初期値のときのみ、マスク値を生成する。そのため、必要となったベースアドレスレジスタ番号に対してのみマスク値を生成することになり、より高速にマスク値を生成することが可能になる。
【００８５】
なお、以上で説明した各実施形態は、情報処理装置でセグメント方式を採用する場合を前提に説明したが、ページ化セグメンテーション方式を採用する情報処理装置でも上述の各実施形態を実施可能である。
【００８６】
［ハードウェア構成例］
上述した本発明の各実施形態における範囲外参照検出装置（１０、２０、３０）を、一つの情報処理装置（コンピュータ）を用いて実現するハードウェア資源の構成例について説明する。なお、範囲外参照検出装置は、物理的または機能的に少なくとも二つの情報処理装置を用いて実現してもよい。また、範囲外参照検出装置は、専用の装置として実現してもよい。また、範囲外参照検出装置の一部の機能のみを情報処理装置を用いて実現しても良い。
【００８７】
図９は、本発明の各実施形態の範囲外参照検出装置を実現可能な情報処理装置のハードウェア構成例を概略的に示す図である。情報処理装置５０は、通信インタフェース５１、入出力インタフェース５２、演算装置５３、記憶装置５４および不揮発性記憶装置５５およびドライブ装置５６を備える。
【００８８】
通信インタフェース５１は、各実施形態の範囲外参照検出装置が、有線あるいは／および無線で外部装置と通信するための通信手段である。なお、範囲外参照検出装置を、少なくとも二つの情報処理装置を用いて実現する場合、それらの装置の間を通信インタフェース５１経由で相互に通信可能なように接続しても良い。
【００８９】
入出力インタフェース５２は、入力デバイスの一例であるキーボードや、出力デバイスとしてのディスプレイ等のマンマシンインタフェースである。
【００９０】
演算装置５３は、汎用のＣＰＵ（Central Processing Unit）やマイクロプロセッサ等の演算処理装置である。演算装置５３は、たとえば、不揮発性記憶装置５５に記憶された各種プログラムを記憶装置５４に読み出し、読み出したプログラムに従って処理を実行することが可能である。
【００９１】
記憶装置５４は、演算装置５３から参照可能な、ＲＡＭ（Random Access Memory）等のメモリ装置であり、プログラムや各種データ等を記憶する。記憶装置５４は、揮発性のメモリ装置であっても良い。
【００９２】
不揮発性記憶装置５５は、たとえば、ＲＯＭ（Read Only Memory）、フラッシュメモリ、等の、不揮発性の記憶装置であり、各種プログラムやデータ等を記録することが可能である。
【００９３】
ドライブ装置５６は、たとえば、後述する記録媒体５７に対するデータの読み込みや書き込みを処理する装置である。
【００９４】
記録媒体５７は、たとえば、光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
【００９５】
本発明の各実施形態は、たとえば、図９に例示した情報処理装置５０により範囲外参照検出装置を構成し、この範囲外参照検出装置に対して、上記各実施形態において説明した機能を実現可能なプログラムを供給することにより実現してもよい。
【００９６】
この場合、範囲外参照検出装置に対して供給したプログラムを、演算装置５３が実行することによって、実施形態を実現することが可能である。また、範囲外参照検出装置のすべてではなく、一部の機能を情報処理装置５０で構成することも可能である。
【００９７】
さらに、上記プログラムを記録媒体５７に記録しておき、範囲外参照検出装置の出荷段階、あるいは運用段階等において、適宜上記プログラムが不揮発性記憶装置５５に格納されるよう構成してもよい。なお、この場合、上記プログラムの供給方法は、出荷前の製造段階、あるいは運用段階等において、適当な治具を利用して範囲外参照検出装置内にインストールする方法を採用してもよい。また、上記プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等の一般的な手順を採用してもよい。
【００９８】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。
【００９９】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１００】
（付記１）
セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得部と、
前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定部と、
前記判定の結果を出力する出力部と
を備えることを特徴とする範囲外参照検出装置。
【０１０１】
（付記２）
前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
ことを特徴とする付記１に記載の範囲外参照検出装置。
【０１０２】
（付記３）
前記マスク値を生成して前記マスク値記憶部へ記憶させる生成部
を備えることを特徴とする付記１あるいは付記２に記載の範囲外参照検出装置。
【０１０３】
（付記４）
前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
前記生成部は、新たな前記マスク値を生成し、
前記判定部は、さらに、前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
前記出力部は、新たな前記マスク値を使用した前記判定の前記結果を出力する
ことを特徴とする付記３に記載の範囲外参照検出装置。
【０１０４】
（付記５）
前記マスク値の前記初期値は、前記セグメントの最小サイズを下回る値である
ことを特徴とする付記４に記載の範囲外参照検出装置。
【０１０５】
（付記６）
前記マスク値の前記初期値は、各々の前記セグメントのセグメントサイズより所定の値だけ小さい値である
ことを特徴とする付記４に記載の範囲外参照検出装置。
【０１０６】
（付記７）
セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得し、
前記実効アドレスが前記マスク値の範囲を超えているか否かを判定し、
前記判定の結果を出力する
ことを特徴とする範囲外参照検出方法。
【０１０７】
（付記８）
前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
ことを特徴とする付記７に記載の範囲外参照検出方法。
【０１０８】
（付記９）
前記マスク値を生成して前記マスク値記憶部へ記憶させる
ことを特徴とする付記７あるいは付記８に記載の範囲外参照検出方法。
【０１０９】
（付記１０）
前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
新たな前記マスク値を生成し、
前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
新たな前記マスク値を使用した前記判定の前記結果を出力する
ことを特徴とする付記９に記載の範囲外参照検出方法。
【０１１０】
（付記１１）
前記マスク値の前記初期値は、前記セグメントの最小サイズを下回る値である
ことを特徴とする付記１０に記載の範囲外参照検出方法。
【０１１１】
（付記１２）
前記マスク値の前記初期値は、各々の前記セグメントのセグメントサイズより所定の値だけ小さい値である
ことを特徴とする付記１０に記載の範囲外参照検出方法。
【０１１２】
（付記１３）
コンピュータに、
セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得機能と、
前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定機能と、
前記判定の結果を出力する出力機能と
を実現させることを特徴とする範囲外参照検出プログラム。
【０１１３】
（付記１４）
前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
ことを特徴とする付記１３に記載の範囲外参照検出プログラム。
【０１１４】
（付記１５）
コンピュータに、
前記マスク値を生成して前記マスク値記憶部へ記憶させる生成機能
を実現させることを特徴とする付記１３あるいは付記１４に記載の範囲外参照検出プログラム。
【０１１５】
（付記１６）
前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
前記生成機能は、新たな前記マスク値を生成し、
前記判定機能は、さらに、前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
前記出力機能は、新たな前記マスク値を使用した前記判定の前記結果を出力する
ことを特徴とする付記１５に記載の範囲外参照検出プログラム。
【０１１６】
（付記１７）
前記マスク値の前記初期値は、前記セグメントの最小サイズを下回る値である
ことを特徴とする付記１６に記載の範囲外参照検出プログラム。
【０１１７】
（付記１８）
前記マスク値の前記初期値は、各々の前記セグメントのセグメントサイズより所定の値だけ小さい値である
ことを特徴とする付記１６に記載の範囲外参照検出プログラム。
【０１１８】
（付記１９）
付記１３から付記１８のいずれかに記載の範囲外参照検出プログラムを記録した、コンピュータ読み取り可能な記録媒体。
【符号の説明】
【０１１９】
１０、２０、３０    範囲外参照検出装置
１１    取得部
１２、３２    マスク値記憶部
１３、３３    判定部
１４    出力部
２５、３５    生成部
５０    情報処理装置
５１    通信インタフェース
５２    入出力インタフェース
５３    演算装置
５４    記憶装置
５５    不揮発性記憶装置
５６    ドライブ装置
５７    記録媒体
【図１】
0006525267.tif 000002
【図２】
0006525267.tif 000003
【図３】
0006525267.tif 000004
【図４】
0006525267.tif 000005
【図５】
0006525267.tif 000006
【図６】
0006525267.tif 000007
【図７】
0006525267.tif 000008
【図８】
0006525267.tif 000009
【図９】
0006525267.tif 000010
【図１０】
0006525267.tif 000011
【図１１】
0006525267.tif 000012
【図１２】
0006525267.tif 000013
【図１３】
0006525267.tif 000014