JP6525267B2 - 範囲外参照検出装置、方法およびプログラム - Google Patents

範囲外参照検出装置、方法およびプログラム Download PDF

Info

Publication number
JP6525267B2
JP6525267B2 JP2015223209A JP2015223209A JP6525267B2 JP 6525267 B2 JP6525267 B2 JP 6525267B2 JP 2015223209 A JP2015223209 A JP 2015223209A JP 2015223209 A JP2015223209 A JP 2015223209A JP 6525267 B2 JP6525267 B2 JP 6525267B2
Authority
JP
Japan
Prior art keywords
mask value
segment
base address
range
range reference
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
JP2015223209A
Other languages
English (en)
Other versions
JP2017091374A (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.)
NEC Platforms Ltd
Original Assignee
NEC Platforms 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 NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2015223209A priority Critical patent/JP6525267B2/ja
Priority to US15/263,572 priority patent/US10078586B2/en
Priority to TW105129741A priority patent/TWI656444B/zh
Publication of JP2017091374A publication Critical patent/JP2017091374A/ja
Application granted granted Critical
Publication of JP6525267B2 publication Critical patent/JP6525267B2/ja
Active 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/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0684Configuration or reconfiguration with feedback, e.g. presence or absence of unit detected by addressing, overflow detection
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • G06F12/1441Protection 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 for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Description

本発明は、実効アドレスが参照可能なメモリ範囲を超えているか否かを検出する、範囲外参照検出装置、方法およびプログラムに関する。
情報処理装置におけるメモリ管理方式の一つに、セグメント方式がある。セグメント方式では、仮想アドレス空間上のプログラムを可変長のセグメント単位で管理する。
セグメント方式を採用する情報処理装置では、仮想アドレス空間を生成する際、セグメントのベースアドレスフィールドとセグメントサイズフィールドを持つセグメント記述子をセグメントテーブルに保存する。
図10はセグメントテーブルの例である。ベースアドレスフィールドには、各セグメントの仮想アドレス空間上の開始アドレスを保存する。また、セグメントサイズフィールドには、当該セグメントのサイズを保存する。
また、ベースアドレス指定方式やインデックスアドレス指定方式など、ベースアドレスを使用して参照する仮想アドレスを指定する方法の場合、命令のオペランド部にベースアドレスレジスタ番号と相対アドレスが格納されている。そして、そのベースアドレスレジスタ番号のベースアドレスレジスタからベースアドレスを取得し、ベースアドレスと相対アドレスを加算することで、実効アドレスを計算することができる。
一方、実行するプロセスには、参照可能なセグメントが定められている。情報処理装置では、参照しようとした実効アドレスが参照可能なセグメントの範囲を超えるとき、範囲外参照例外と判定し、範囲外参照例外に対する例外処理を行う。
範囲外参照を検出する方法には、たとえば、特許文献1に記載の方法のように、セグメントテーブルを検索して参照するセグメントに対応するセグメントサイズを取得し、実効アドレスの相対アドレスがそのセグメントサイズを超えてないか判定する方法がある。
特開昭60−114948号公報
しかし、特許文献1の方法のように、参照するセグメントに対応するセグメントサイズをセグメントテーブルから取得するためには、まず、参照するセグメントのセグメント番号を割り出す必要がある。セグメント番号は、ベースアドレスの一部に含まれるため、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するベースアドレスレジスタからベースアドレスを読み出すことで割り出すことができる。そして、セグメントテーブルのベースアドレスフィールドをそのセグメント番号をキーとして検索することで、参照するセグメントに対応するセグメントサイズを取得することができる。
このように、参照するセグメントに対応するセグメントサイズをセグメントテーブルから取得するためには、まずベースアドレスレジスタを読み出してセグメント番号を割り出し、さらに、セグメントテーブルを検索する必要がある。そのため、セグメントサイズの取得に時間がかかってしまう。
さらに、セグメントテーブルを検索する方法では、セグメントテーブルが複雑になると、セグメントテーブルの検索に時間がかかる場合がある。
セグメントテーブルが一つの場合は、図11のように、ベースアドレスレジスタのセグメント番号をキーにセグメントテーブルを検索する。これに対して、たとえば、マルチプロセスの場合には、プロセス毎に独立した仮想アドレス空間を持つため、図12のように、プロセス毎にセグメントテーブルを持つ場合がある。このような場合には、まず、プロセス番号から当該プロセスのセグメントテーブルを特定し、その後、セグメント番号に対応するセグメントサイズを取得する必要がある。
また、セグメント数が多い場合には、図13のように、セグメント番号のフィールドをいくつかに分け、テーブルを多段に構成する場合がある。このような構成の場合、何段かのセグメントテーブルを検索する必要が生じる場合がある。図13の例では、セグメント番号をUPPERとLOWERの2つに分け、UPPER毎にセグメントテーブルを持つようにしている。この例では、まず、セグメント番号UPPERに対応するセグメントテーブルを特定し、その後、セグメント番号のLOWERに対応するセグメントサイズを取得する必要がある。
このようにテーブルが複雑になると、セグメントテーブルはメモリに置かれることが多いためメモリアクセス回数が増加し、セグメントテーブルの検索にさらに時間がかかってしまう。
本発明の目的は、高速に範囲外参照判定を行うことを可能とする、範囲外参照検出装置、方法およびプログラムを提供することにある。
上述の問題を解決するために、本発明の範囲外参照検出装置は、セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得部と、前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定部と、前記判定の結果を出力する出力部とを備えることを特徴とする。
また、本発明の範囲外参照検出方法は、セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得し、前記実効アドレスが前記マスク値の範囲を超えているか否かを判定し、前記判定の結果を出力することを特徴とする。
また、本発明の範囲外参照検出プログラムは、コンピュータに、セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得機能と、前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定機能と、前記判定の結果を出力する出力機能とを実現させることを特徴とする。
本発明の範囲外参照検出装置、方法およびプログラムにより、高速に範囲外参照判定を行うことが可能になる。
本発明の第一および第二の実施形態の範囲外参照検出装置の構成例を示す図である。 本発明の第一の実施形態の範囲外参照検出装置の動作例を示す図である。 本発明の各実施形態のマスク値の例を示す図である。 本発明の各実施形態のプロセスロールインからプロセスロールアウトまでの一連の動作例を示す図である。 本発明の第二および第三の実施形態の実効アドレス計算の動作例を示す図である。 本発明の第三の実施形態の範囲外参照検出装置の構成例を示す図である。 本発明の第四の実施形態の範囲外参照検出装置の構成例を示す図である。 本発明の第四の実施形態の実効アドレス計算の動作例を示す図である。 本発明の各実施形態のハードウェア構成例を示す図である。 セグメントテーブルの例を示す図である。 セグメントテーブルの検索の例を示す図である。 セグメントテーブルの検索の例を示す図である。 セグメントテーブルの検索の例を示す図である。
[第一の実施形態]
本発明の第一の実施の形態について説明する。
図1に範囲外参照検出装置10の構成例を示す。本実施形態の範囲外参照検出装置10は、取得部11、判定部13および出力部14により構成される。
取得部11は、マスク値記憶部12から所定の実効アドレスのベースアドレスレジスタ番号に対応するマスク値を取得する部分である。マスク値記憶部12は、セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶した部分である。
判定部13は実効アドレスがマスク値の範囲を超えているか否かを判定する部分である。出力部14は判定の結果を出力する部分である。
このように範囲外参照検出装置10を構成することによって、境界外検出装置10は、マスク値をマスク値記憶部12から取得する。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部12から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
次に、図2に本実施形態の範囲外参照検出装置10の動作の例を示す。
まず、範囲外参照検出装置10の取得部11は、マスク値記憶部12から所定の実効アドレスのベースアドレスレジスタ番号に対応するマスク値を取得する(ステップS101)。次に、判定部13は実効アドレスがマスク値の範囲を超えているか否かを判定する(ステップS102)。そして、出力部14は判定の結果を出力する(ステップS103)。
このように範囲外参照検出装置10を動作させることによって、境界外検出装置10は、マスク値をマスク値記憶部12から取得する。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部12から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
以上で説明したように、本発明の第一の実施形態では、ベースアドレスレジスタ番号に対応するマスク値を記憶したマスク値記憶部からマスク値を取得する。これにより、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずにマスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
[第二の実施形態]
次に、本発明の第二の実施の形態について説明する。
本実施形態では、あらかじめマスク値記憶部12に正しいマスク値を記憶させておく場合について、具体的に説明する。
範囲外参照検出装置10の構成例は、第一の実施形態(図1)と同様である。
本実施形態では、マスク値記憶部12に、あらかじめ、各々のベースアドレスレジスタ番号に対応するマスク値を記憶させておく。マスク値記憶部12は、境界外検出装置10の中あるいは外のいずれにも構成可能である。たとえば、マスク値記憶部12は主記憶メモリ上に確保しても良いし、レジスタに割り当てることも可能である。ベースアドレスレジスタは各々のセグメントのベースアドレス(開始アドレス)を保存するレジスタで、ベースアドレスレジスタ番号は、ベースアドレスレジスタを識別する番号である。また、マスク値は、ベースアドレスから連続して参照可能なメモリサイズである。このメモリサイズは、連続して参照可能な範囲内に含まれるアドレスの数とすると良い。
セグメントの境界をまたいで参照することが不可能なセグメントの場合、そのセグメントのマスク値はセグメントサイズと同一となる。しかし、セグメントによっては、他のセグメントと連続して参照可能な場合がある。特許文献1に記載の方法のように、セグメントテーブルからセグメントサイズを取得して範囲外参照を判定する方法では、他のセグメントと連続して参照可能なセグメントであっても、他のセグメントの部分を参照する場合に範囲外参照と判定してしまう。そのため、本実施形態では、連続して参照可能なセグメントの合計サイズをマスク値とする。このように、連続して参照可能なセグメントの合計サイズをマスク値とすることによって、他のセグメントと連続して参照可能なセグメントを参照する場合でも、正しく範囲外参照を判定することが可能になる。
図3にマスク値記憶部12に記憶させたマスク値の例を示す。この例では、ベースアドレスレジスタ番号i(i=1〜n)に対応するマスク値をMiとしている。また、この例では、ベースアドレスレジスタ番号1に対応するセグメントAがセグメントBと連続して参照可能であるため、ベースアドレスレジスタ番号1に対応するマスク値M1は、セグメントAとセグメントBのセグメントサイズの合計となる。
取得部11は、所定の実効アドレスのベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部12から取得する部分である。ベースアドレスレジスタ番号は、命令のオペランド部に含まれる。図3の例の場合、ベースアドレスレジスタ番号i(i=1〜n)に対応するマスク値Miを取得する。
判定部13は、参照する実効アドレスが参照可能な範囲外か否かを判定する部分である。マスク値がMiのとき、実効アドレスがベースアドレスからマスク値Miの範囲内にあるか否かを判定する。
出力部14は、判定の結果、すなわち、範囲外参照か否かを出力する部分である。
このように範囲外参照検出装置10を構成することによって、境界外検出装置10は、マスク値をマスク値記憶部12から取得する。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部12から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
さらに、本実施形態では、マスク値をベースアドレスから連続参照可能なサイズとするため、他のセグメントと連続して参照可能なセグメントであっても、正しく範囲外参照を判定することが可能になる。
次に、図4および図5を用いて、範囲外参照検出装置10の動作の例について説明する。
図4は、コンピュータがプロセスを実行する場合の、プロセスロールインからプロセスロールアウトまでの一連の動作を示したフローチャートである。本実施形態では、演算命令を実行する場合について説明する。
図5は図4のステップS204の実効アドレス計算の詳細動作の例を示す図である。本実施形態の範囲外参照検出装置10の動作は、図5のステップS302からステップS304に該当する。範囲外参照検出装置10では、プロセスの命令によって参照する実効アドレスが、参照可能な範囲を超えていないかの判定を行う。
コンピュータは、プロセスの実行を開始すると、まず、プロセスロールイン処理を行う(ステップS201)。次に、命令を取り出し(ステップS202)、取り出した命令の解読を行う(ステップS203)。そして、解読した命令に従って、実効アドレスを計算し(ステップS204)、実効アドレスに該当する主記憶メモリを参照して演算に必要なデータを取得する(ステップS205)。次に、解読した命令に従って演算を実行し(ステップS206)、その演算結果をレジスタあるいは主記憶メモリに格納する(ステップS207)。そして、次の命令があれば(ステップS208)ステップS202に戻り、次の命令がなければ、プロセスロールアウト処理(ステップS209)を行ってプロセスの実行を終了する。
次に、ステップS204の実効アドレス計算の詳細動作の例について、図4を用いて説明する。
まず、図4のステップS203で解読した命令のオペランド部に含まれるベースアドレスレジスタ番号やインデックスレジスタ番号、オフセット(相対アドレス)などから実効アドレスを計算する(ステップS301)。また、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部12から取得する(ステップS302)。
次に、ステップS302で取得したマスク値を用いて、ステップS301で計算した実効アドレスが参照可能な範囲を超えているか否かを判定する(ステップS303)。より具体的には、一度に複数の実効アドレスを参照する場合があるため、今回の命令で参照する実効アドレスの最大値が、ベースアドレス〜(ベースアドレス+マスク値−1)の仮想アドレスの範囲に含まれるか否かを判定する。あるいは、今回の命令で参照する実効アドレスの相対アドレスの最大値が(マスク値−1)より大きいか否かを判定することで、範囲外参照か否かを判定することも可能である。
たとえば、ベースアドレスがAi、マスク値がMiの場合、参照する実効アドレスの最大値がAi+Mi−1を超えるか否か、あるいは、参照する実効アドレスの相対アドレスの最大値がMi−1を超えるか否かを判定する。
そして、出力部14は、判定結果、すなわち、範囲外参照を検出したか否かを出力する。コンピュータは、出力部14が出力した判定結果が範囲外参照を示すとき、範囲外参照例外に対する例外処理を行う(ステップS306)。
このように範囲外参照検出装置10を動作させることによって、境界外検出装置10は、マスク値をマスク値記憶部12から取得する。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部12から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
以上で説明したように、本発明の第二の実施形態では、第一の実施形態と同様に、ベースアドレスレジスタ番号に対応するマスク値を記憶したマスク値記憶部からマスク値を取得する。これにより、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
さらに、本実施形態では、マスク値をベースアドレスから連続参照可能なサイズとするため、他のセグメントと連続して参照可能なセグメントであっても、正しく範囲外参照を判定することが可能になる。
[第三の実施形態]
次に、本発明の第三の実施の形態について説明する。
本実施形態では、範囲外参照検出装置にマスク値を生成する構成を備える場合について説明する。
図6に、本実施形態の範囲外参照検出装置20の構成例を示す。範囲外参照検出装置20では、範囲外参照検出装置10に対して生成部25を追加している。
生成部25は、各々のベースアドレスレジスタ番号に対応するマスク値を生成し、マスク値記憶部12に記憶させる部分である。生成部25では、他のセグメントと連続参照可能かどうかといったプロセスの実行条件や、セグメントサイズが固定か可変かといったセグメントの構成などからマスク値を決定する。
他の部分については、第二の実施形態の説明と同様のため、説明を省略する。
このように範囲外参照検出装置20を構成することによって、境界外検出装置20は、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部12に記憶させる。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値生成部12から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
範囲外参照検出装置20の動作例については、マスク値の生成以外については、第二の実施形態の範囲外参照検出装置10の動作例の説明(図4および図5)と同様である。マスク値の生成については、マスク値の生成にかかる時間をなるべく短くするため、各ベースアドレスレジスタ番号に対するマスク値の生成が一回以下になるようにすると良い。たとえば、図4のステップS201のプロセスロールイン処理の後にマスク値の生成を行うと、各ベースアドレスレジスタ番号に対するマスク値の生成を一回とすることができる。
このように範囲外参照検出装置20を動作させることによって、高速に範囲外参照判定を行うことが可能になる。
以上で説明したように、本発明の第三の実施形態では、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部に記憶させる。これにより、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
[第四の実施形態]
次に、本発明の第四の実施の形態について説明する。
本実施形態では、第三の実施形態のマスク値の生成をより効率化し、必要なときのみマスク値を生成する場合について説明する。
図7に、本実施形態の範囲外参照検出装置30の構成例を示す。範囲外参照検出装置30は、取得部11、マスク値記憶部32、判定部33、生成部35および出力部14により構成される。取得部11および出力部14については、第二および第三の実施形態の範囲外参照検出装置10および範囲外参照検出装置20と同様である。
マスク値記憶部32には、プロセスの開始時に、各々のベースアドレスレジスタ番号に対するマスク値の初期値を記憶させておく。初期値には、たとえば、各セグメントの最小サイズ未満の値を指定する。このようにすると、正しいマスク値は各セグメントの最小サイズ以上の値しか取り得ないため、マスク値が初期値であることを容易に判断することが可能になる。以降、マスク値の初期値は0であることを前提に説明する。
取得部11は、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部32から取得する部分である。
判定部33は、取得部11で取得したマスク値を用いて、実効アドレスが参照可能な範囲内にあるかどうかを判定する部分である。さらに、本実施形態では、生成部35が新たなマスク値を生成したとき、新たなマスク値を用いて実効アドレスが参照可能な範囲内にあるかどうか、2回目の判定を行う。
生成部35は、判定部33での判定結果が範囲外参照であり、かつ、マスク値が初期値のとき、新たなマスク値を生成する部分である。生成部25では、他のセグメントと連続参照可能かどうかといったプロセスの実行条件や、セグメントサイズが固定か可変かといったセグメントの構成などからマスク値を決定する。
このように範囲外参照検出装置30を構成することによって、境界外検出装置30は、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部32に記憶させる。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
さらに、本実施形態では、範囲外参照と判定し、かつ、マスク値が初期値のときのみ、新たなマスク値を生成する。そのため、必要となったベースアドレスレジスタ番号に対してのみマスク値を生成することになり、より高速にマスク値を生成することが可能になる。
図8は、図4のステップS204の実効アドレス計算の詳細動作の例を示す図である。本実施形態の範囲外参照検出装置30の動作は、図8のステップS402からステップS408に該当する。
まず、図4のステップS201のプロセスロールイン処理の後などで、マスク値記憶部32にマスク値の初期値を記憶させる。本実施形態では、すべてのベースアドレスレジスタに対するマスク値を0とする。
そして、ステップS204の実効アドレス計算では、まず、図4のステップS203で解読した命令に含まれるベースアドレスレジスタ番号やインデックスレジスタ番号などから実効アドレスを計算する(ステップS401)。また、命令のオペランド部に含まれるベースアドレスレジスタ番号iに対応するマスク値Miをマスク値記憶部32から取得する(ステップS402)。
次に、ステップS402で取得したマスク値を用いて、ステップS401で計算した実効アドレスが参照可能な範囲に含まれるか否かを判定する(ステップS403)。ここまでは図5のステップS301からステップS303の動作と同様である。
本実施形態では、ステップS403での判定結果が範囲外参照であり(ステップS404でYES)、かつ、マスク値が初期値のとき(ステップS405でYES)、正しいマスク値の生成を行う(ステップS406)。生成部35では、プロセスの実行条件やセグメントの構成からマスク値を決定し、マスク値記憶部32に記憶させる。そして、判定部33は、生成部35が生成したマスク値を用いて、実効アドレスが参照可能な範囲内か否かを判定する(ステップS407)。
本実施形態では、マスク値Miの初期値を0としている。そのため、実効アドレス計算に使用するベースアドレスレジスタ番号がプロセスロールイン後に初めて使用するベースアドレスレジスタ番号である場合、ステップS404は必ずYESとなる。そして、新たに生成したマスク値をマスク値記憶部32に記憶させる。
ここで新たに生成したマスク値をマスク値記憶部32に記憶させることにより、ベースアドレスレジスタの値が変更されない限り、同じベースアドレスレジスタを使用して範囲外参照を判定する場合にこの新たに生成したマスク値を使用することが可能になる。
実効アドレス計算に使用するベースアドレスレジスタ番号がプロセスロールイン後に一度以上使用したベースアドレスレジスタ番号の場合は、マスク値が新たに生成したマスク値となっているため、ステップS403で正しい範囲外参照判定が行われる。そのため、ステップS404で範囲外参照と判定されても、ステップS405でマスク値が初期値でない値になっているため、ステップS406のマスク値の生成は行われない。
出力部14は、ステップS404で範囲外参照でないと判定されたとき、あるいは、ステップS405でマスク値が初期値でないとき、ステップS403の判定結果を出力する。ステップS405でマスク値が初期値だったときは、ステップS407での判定結果を出力する(ステップS408)。コンピュータは、出力部14が出力した判定結果が範囲外参照を示すとき(ステップS409)、範囲外参照例外に対する例外処理を行う(ステップS410)。
このように範囲外参照検出装置30を動作させることによって、境界外検出装置30は、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部32に記憶させる。したがって、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
なお、以上の説明ではマスク値の初期値を0としたが、各ベースアドレスレジスタ番号のベースアドレスに対応するセグメントのセグメントサイズから所定の値(たとえば1)を減算した値をマスク値の初期値とすることも可能である。このようにすると、実効アドレスが他のセグメントとの境界に近い場合以外には、図8のステップS404において範囲外参照でない(NO)と判定されるため、さらにマスク値の生成回数を削減することが可能になる。
ここで、初期値を各セグメントのセグメントサイズとすると、連続して参照可能な他のセグメントがないときの正しいマスク値と初期値が同じ値となるため、ステップS405においてマスク値が初期値かどうか判断することが難しくなる。そのため、セグメントサイズから所定の値を減算した値を初期値とすると良い。
以上で説明したように、本発明の第四の実施形態では、第三の実施形態と同様に、ベースアドレスレジスタ番号に対応するマスク値をマスク値記憶部に記憶させる。これにより、命令のオペランド部に含まれるベースアドレスレジスタ番号に対応するマスク値を、セグメント番号の取得やセグメントテーブルの検索を行わずに、マスク値記憶部から直接取得することが可能になる。そのため、高速に範囲外参照判定を行うことが可能になる。
さらに、本実施形態では、範囲外参照と判定し、かつ、マスク値が初期値のときのみ、マスク値を生成する。そのため、必要となったベースアドレスレジスタ番号に対してのみマスク値を生成することになり、より高速にマスク値を生成することが可能になる。
なお、以上で説明した各実施形態は、情報処理装置でセグメント方式を採用する場合を前提に説明したが、ページ化セグメンテーション方式を採用する情報処理装置でも上述の各実施形態を実施可能である。
[ハードウェア構成例]
上述した本発明の各実施形態における範囲外参照検出装置(10、20、30)を、一つの情報処理装置(コンピュータ)を用いて実現するハードウェア資源の構成例について説明する。なお、範囲外参照検出装置は、物理的または機能的に少なくとも二つの情報処理装置を用いて実現してもよい。また、範囲外参照検出装置は、専用の装置として実現してもよい。また、範囲外参照検出装置の一部の機能のみを情報処理装置を用いて実現しても良い。
図9は、本発明の各実施形態の範囲外参照検出装置を実現可能な情報処理装置のハードウェア構成例を概略的に示す図である。情報処理装置50は、通信インタフェース51、入出力インタフェース52、演算装置53、記憶装置54および不揮発性記憶装置55およびドライブ装置56を備える。
通信インタフェース51は、各実施形態の範囲外参照検出装置が、有線あるいは/および無線で外部装置と通信するための通信手段である。なお、範囲外参照検出装置を、少なくとも二つの情報処理装置を用いて実現する場合、それらの装置の間を通信インタフェース51経由で相互に通信可能なように接続しても良い。
入出力インタフェース52は、入力デバイスの一例であるキーボードや、出力デバイスとしてのディスプレイ等のマンマシンインタフェースである。
演算装置53は、汎用のCPU(Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置53は、たとえば、不揮発性記憶装置55に記憶された各種プログラムを記憶装置54に読み出し、読み出したプログラムに従って処理を実行することが可能である。
記憶装置54は、演算装置53から参照可能な、RAM(Random Access Memory)等のメモリ装置であり、プログラムや各種データ等を記憶する。記憶装置54は、揮発性のメモリ装置であっても良い。
不揮発性記憶装置55は、たとえば、ROM(Read Only Memory)、フラッシュメモリ、等の、不揮発性の記憶装置であり、各種プログラムやデータ等を記録することが可能である。
ドライブ装置56は、たとえば、後述する記録媒体57に対するデータの読み込みや書き込みを処理する装置である。
記録媒体57は、たとえば、光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
本発明の各実施形態は、たとえば、図9に例示した情報処理装置50により範囲外参照検出装置を構成し、この範囲外参照検出装置に対して、上記各実施形態において説明した機能を実現可能なプログラムを供給することにより実現してもよい。
この場合、範囲外参照検出装置に対して供給したプログラムを、演算装置53が実行することによって、実施形態を実現することが可能である。また、範囲外参照検出装置のすべてではなく、一部の機能を情報処理装置50で構成することも可能である。
さらに、上記プログラムを記録媒体57に記録しておき、範囲外参照検出装置の出荷段階、あるいは運用段階等において、適宜上記プログラムが不揮発性記憶装置55に格納されるよう構成してもよい。なお、この場合、上記プログラムの供給方法は、出荷前の製造段階、あるいは運用段階等において、適当な治具を利用して範囲外参照検出装置内にインストールする方法を採用してもよい。また、上記プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等の一般的な手順を採用してもよい。
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得部と、
前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定部と、
前記判定の結果を出力する出力部と
を備えることを特徴とする範囲外参照検出装置。
(付記2)
前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
ことを特徴とする付記1に記載の範囲外参照検出装置。
(付記3)
前記マスク値を生成して前記マスク値記憶部へ記憶させる生成部
を備えることを特徴とする付記1あるいは付記2に記載の範囲外参照検出装置。
(付記4)
前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
前記生成部は、新たな前記マスク値を生成し、
前記判定部は、さらに、前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
前記出力部は、新たな前記マスク値を使用した前記判定の前記結果を出力する
ことを特徴とする付記3に記載の範囲外参照検出装置。
(付記5)
前記マスク値の前記初期値は、前記セグメントの最小サイズを下回る値である
ことを特徴とする付記4に記載の範囲外参照検出装置。
(付記6)
前記マスク値の前記初期値は、各々の前記セグメントのセグメントサイズより所定の値だけ小さい値である
ことを特徴とする付記4に記載の範囲外参照検出装置。
(付記7)
セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得し、
前記実効アドレスが前記マスク値の範囲を超えているか否かを判定し、
前記判定の結果を出力する
ことを特徴とする範囲外参照検出方法。
(付記8)
前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
ことを特徴とする付記7に記載の範囲外参照検出方法。
(付記9)
前記マスク値を生成して前記マスク値記憶部へ記憶させる
ことを特徴とする付記7あるいは付記8に記載の範囲外参照検出方法。
(付記10)
前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
新たな前記マスク値を生成し、
前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
新たな前記マスク値を使用した前記判定の前記結果を出力する
ことを特徴とする付記9に記載の範囲外参照検出方法。
(付記11)
前記マスク値の前記初期値は、前記セグメントの最小サイズを下回る値である
ことを特徴とする付記10に記載の範囲外参照検出方法。
(付記12)
前記マスク値の前記初期値は、各々の前記セグメントのセグメントサイズより所定の値だけ小さい値である
ことを特徴とする付記10に記載の範囲外参照検出方法。
(付記13)
コンピュータに、
セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得機能と、
前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定機能と、
前記判定の結果を出力する出力機能と
を実現させることを特徴とする範囲外参照検出プログラム。
(付記14)
前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
ことを特徴とする付記13に記載の範囲外参照検出プログラム。
(付記15)
コンピュータに、
前記マスク値を生成して前記マスク値記憶部へ記憶させる生成機能
を実現させることを特徴とする付記13あるいは付記14に記載の範囲外参照検出プログラム。
(付記16)
前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
前記生成機能は、新たな前記マスク値を生成し、
前記判定機能は、さらに、前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
前記出力機能は、新たな前記マスク値を使用した前記判定の前記結果を出力する
ことを特徴とする付記15に記載の範囲外参照検出プログラム。
(付記17)
前記マスク値の前記初期値は、前記セグメントの最小サイズを下回る値である
ことを特徴とする付記16に記載の範囲外参照検出プログラム。
(付記18)
前記マスク値の前記初期値は、各々の前記セグメントのセグメントサイズより所定の値だけ小さい値である
ことを特徴とする付記16に記載の範囲外参照検出プログラム。
(付記19)
付記13から付記18のいずれかに記載の範囲外参照検出プログラムを記録した、コンピュータ読み取り可能な記録媒体。
10、20、30 範囲外参照検出装置
11 取得部
12、32 マスク値記憶部
13、33 判定部
14 出力部
25、35 生成部
50 情報処理装置
51 通信インタフェース
52 入出力インタフェース
53 演算装置
54 記憶装置
55 不揮発性記憶装置
56 ドライブ装置
57 記録媒体

Claims (10)

  1. セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得部と、
    前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定部と、
    前記判定の結果を出力する出力部と
    を備えることを特徴とする範囲外参照検出装置。
  2. 前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
    ことを特徴とする請求項1に記載の範囲外参照検出装置。
  3. 前記マスク値を生成して前記マスク値記憶部へ記憶させる生成部
    を備えることを特徴とする請求項1あるいは請求項2に記載の範囲外参照検出装置。
  4. 前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
    前記生成部は、新たな前記マスク値を生成し、
    前記判定部は、さらに、前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
    前記出力部は、新たな前記マスク値を使用した前記判定の前記結果を出力する
    ことを特徴とする請求項3に記載の範囲外参照検出装置。
  5. 前記マスク値の前記初期値は、前記セグメントの最小サイズを下回る値である
    ことを特徴とする請求項4に記載の範囲外参照検出装置。
  6. 前記マスク値の前記初期値は、各々の前記セグメントのセグメントサイズより所定の値だけ小さい値である
    ことを特徴とする請求項4に記載の範囲外参照検出装置。
  7. セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得し、
    前記実効アドレスが前記マスク値の範囲を超えているか否かを判定し、
    前記判定の結果を出力する
    ことを特徴とする範囲外参照検出方法。
  8. 前記マスク値は、当該マスク値に対応する前記ベースアドレスの前記セグメントが他の前記セグメントと連続して参照可能な場合、前記他のセグメントと当該セグメントの合計セグメントサイズである
    ことを特徴とする請求項7に記載の範囲外参照検出方法。
  9. 前記実効アドレスが前記マスク値の前記範囲を超え、かつ、前記マスク値が初期値の場合、
    新たな前記マスク値を生成して前記マスク値記憶部へ記憶させ、
    前記実効アドレスが新たな前記マスク値の前記範囲を超えているか否かを判定し、
    新たな前記マスク値を使用した前記判定の前記結果を出力する
    ことを特徴とする請求項7あるいは請求項8に記載の範囲外参照検出方法。
  10. コンピュータに、
    セグメントのベースアドレスを記憶したベースアドレスレジスタのベースアドレスレジスタ番号と、当該ベースアドレスから連続して参照可能なメモリサイズを示すマスク値との対応関係を記憶したマスク値記憶部から、所定の実効アドレスの前記ベースアドレスレジスタ番号に対応する前記マスク値を取得する取得機能と、
    前記実効アドレスが前記マスク値の範囲を超えているか否かを判定する判定機能と、
    前記判定の結果を出力する出力機能と
    を実現させることを特徴とする範囲外参照検出プログラム。
JP2015223209A 2015-11-13 2015-11-13 範囲外参照検出装置、方法およびプログラム Active JP6525267B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015223209A JP6525267B2 (ja) 2015-11-13 2015-11-13 範囲外参照検出装置、方法およびプログラム
US15/263,572 US10078586B2 (en) 2015-11-13 2016-09-13 Out-of-range reference detection device, method, and recording medium
TW105129741A TWI656444B (zh) 2015-11-13 2016-09-13 Scope external reference detecting device, method and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015223209A JP6525267B2 (ja) 2015-11-13 2015-11-13 範囲外参照検出装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2017091374A JP2017091374A (ja) 2017-05-25
JP6525267B2 true JP6525267B2 (ja) 2019-06-05

Family

ID=58690105

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015223209A Active JP6525267B2 (ja) 2015-11-13 2015-11-13 範囲外参照検出装置、方法およびプログラム

Country Status (3)

Country Link
US (1) US10078586B2 (ja)
JP (1) JP6525267B2 (ja)
TW (1) TWI656444B (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60114948A (ja) 1983-11-25 1985-06-21 Nec Corp 例外検出装置
US6442664B1 (en) * 1999-06-01 2002-08-27 International Business Machines Corporation Computer memory address translation system
US7257679B2 (en) * 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Sharing monitored cache lines across multiple cores
GB2484927A (en) * 2010-10-26 2012-05-02 Advanced Risc Mach Ltd Provision of access control data within a data processing system
US9286235B2 (en) * 2012-06-29 2016-03-15 Intel Corporation Virtual memory address range register
TWI502348B (zh) * 2014-05-02 2015-10-01 Via Tech Inc 延伸唯讀記憶體管理系統、方法及其管理主機

Also Published As

Publication number Publication date
US10078586B2 (en) 2018-09-18
TW201729108A (zh) 2017-08-16
TWI656444B (zh) 2019-04-11
US20170139828A1 (en) 2017-05-18
JP2017091374A (ja) 2017-05-25

Similar Documents

Publication Publication Date Title
JP6804668B2 (ja) ブロックデータ検証方法および装置
JP6198939B2 (ja) ドライバをロードする方法及び組み込みデバイス
WO2018040270A1 (zh) 在Windows系统中加载Linux系统ELF文件的方法及装置
US20140195794A1 (en) Electronic device with baseboard management controller updating system
EP3543858B1 (en) Method for checking and compiling system start-up files
JP2007220107A (ja) 不揮発性メモリのマッピング情報管理装置及び方法
US20130152049A1 (en) Warning of register and storage area assignment errors
JP6525267B2 (ja) 範囲外参照検出装置、方法およびプログラム
JP2014222384A (ja) 関数実行時間計測装置、関数実行時間計測方法、関数実行時間計測プログラム
CA2929625A1 (en) Software development support apparatus, software development support method, and computer readable medium
JP4870956B2 (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
CN106649364B (zh) 一种表格目标列定位方法及装置
KR101221948B1 (ko) 윈도우 표시 방법 및 그 방법이 기록된 기록매체
TWI444824B (zh) 虛擬機器記憶體的鑑識方法與電腦系統
JP2009157441A (ja) 情報処理装置、ファイル再配置方法およびプログラム
JP2015069220A (ja) 性能評価プログラム生成装置、方法、及びプログラム
JP6974772B2 (ja) 仕様記述プログラム及び仕様記述方法
CN109669628B (zh) 基于flash设备的数据存储管理方法及装置
JP6736937B2 (ja) Icカード及びicカードからのデータの読出方法
JP5440024B2 (ja) 記録装置、記録方法、及び記録プログラム
US10162547B1 (en) Memory expansion in a linking process
KR20170088966A (ko) 시스템 설계 지원 툴
CN110673882A (zh) 一种关键产品数据存储方法、装置、设备及可读存储介质
JP4430122B2 (ja) メモリ試験方法
CN114281248A (zh) 一种提升ram读写性能的方法、电子设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181015

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190328

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190425

R150 Certificate of patent or registration of utility model

Ref document number: 6525267

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150