(57)【要約】【課題】システムの安全性を向上させる演算処理装置、情報処理装置及び演算処理装置の制御方法を提供する。【解決手段】ＴＬＢ１２は、第１アドレスに対するアクセス要求及びその要求に割り当てられたアクセス権限を演算制御部１１から受信し、第１アドレスを第２アドレスに変換し、アクセス権限の適否を判定し、アクセス権限が適切でない場合、第１アドレスへのアクセス要求を出力する。ＭＭＵ１３は、ＴＬＢ１２から出力された第１アドレスへのアクセス要求を受信し、第１アドレスを前記第２アドレスに変換し、アクセス権限の適否を判定し、アクセス権限が適切でない場合、アクセス不許可の通知を演算制御部１１へ出力する。【選択図】図１
2019212246.tif 000002
【特許請求の範囲】
【請求項１】
演算制御部と、
第１アドレスに対するアクセス要求及びその要求に割り当てられたアクセス権限を前記演算制御部から受信し、前記第１アドレスを第２アドレスに変換し、前記アクセス権限の適否を判定し、前記アクセス権限が適切でない場合、前記第１アドレスへのアクセス要求を出力する第１アクセス管理部と、
前記第１アクセス管理部から出力された前記第１アドレスへのアクセス要求を受信し、前記第１アドレスを前記第２アドレスに変換し、前記アクセス権限の適否を判定し、前記アクセス権限が適切でない場合、アクセス不許可の通知を前記演算制御部へ出力する第２アクセス管理部と
を備えたことを特徴とする演算処理装置。
【請求項２】
前記第１アクセス管理部は、前記第１アドレスに対応する前記第２アドレスの情報を保持しない場合、前記第１アドレス対するアクセス要求を前記第２アクセス管理部へ出力し、
前記第２アクセス管理部は、前記第１アドレス対するアクセス要求を前記第１アクセス管理部から受けた場合、前記第１アドレスを前記第２アドレスに変換する
ことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記第１アクセス管理部は、複数の前記第１アドレスと前記第２アドレスとの対応関係を表す対応情報を有し、前記対応情報を基に前記第１アドレスを前記第２アドレスへ変換し、
前記第２アクセス管理部は、メモリ機構が有する前記対応情報に含まれる各前記対応関係を導く情報を含む前記第１アドレスから前記第２アドレスを導く変換情報を基に、前記第１アドレスを前記第２アドレスに変換する
ことを特徴とする請求項１又は２に記載の演算処理装置。
【請求項４】
前記第１アクセス管理部は、
前記対応情報の一部である部分対応情報を有し、前記第１アドレスに対するアクセス要求及び前記アクセス権限を前記演算制御部から受信し、前記部分対応情報に前記第１アドレスの前記対応関係が登録されている場合、前記部分対応情報を基に前記第１アドレスを前記第２アドレスに変換し、前記アクセス権限の適否を判定し、前記アクセス権限が適切でない場合、前記第１アドレスに対するアクセス要求及び前記アクセス権限を出力し、前記部分対応情報に前記第１アドレスの前記対応関係が登録されていない場合、前記第１アドレスに対するアクセス要求及び前記アクセス権限を出力する第１管理部と、
前記第１管理部が出力した前記第１アドレスに対するアクセス要求及び前記アクセス権限を受信し、前記対応情報に前記第１アドレスの前記対応関係が登録されている場合、前記対応情報を基に前記第１アドレスを前記第２アドレスに変換し、前記アクセス権限の適否を判定し、前記アクセス権限が適切でない場合、前記第１アドレスへのアクセス要求を前記第２アクセス管理部へ出力し、前記対応情報に前記第１アドレスの前記対応関係が登録されていない場合、第１アドレスに対するアクセス要求及び前記アクセス権限を前記第２アクセス管理部へ出力する第２管理部と
を備えたことを特徴とする請求項３に記載の演算処理装置。
【請求項５】
応答時間がセキュリティに影響を与えない所定処理について、前記第１アドレスを基に実行するか否を判定し、前記所定処理を実行すると判定した場合、前記所定処理の結果を前記演算制御部へ出力する応答部をさらに備えたことを特徴とする請求項１〜４のいずれか一つに記載の演算処理装置。
【請求項６】
前記第２アクセス管理部は、前記アクセス不許可の通知とともに前記アクセス不許可の原因を表す情報を出力することを特徴とする請求項１〜５のいずれか一つに記載の演算処理装置。
【請求項７】
演算処理装置及びメモリ機構を有する情報処理装置であって、
前記メモリ機構は、第１アドレスから第２アドレスを導く変換情報を有し、
前記演算処理装置は、
演算制御部と、
前記第１アドレスに対するアクセス要求及びその要求に割り当てられたアクセス権限を前記演算制御部から受信し、前記第１アドレスと前記第２アドレスとの対応関係を表す対応情報を基に前記第１アドレスを第２アドレスに変換し、前記アクセス権限の適否を判定し、前記アクセス権限が適切でない場合、前記第１アドレスへのアクセス要求を出力する第１アクセス管理部と、
前記第１アクセス管理部から出力された前記第１アドレスへのアクセス要求を受信し、前記メモリ機構の前記変換情報を基に前記第１アドレスから前記第２アドレスを取得し、前記アクセス権限の適否を判定し、前記アクセス権限が適切でない場合、アクセス不許可の通知を前記演算制御部へ出力する第２アクセス管理部と
を備えたことを特徴とする情報処理装置。
【請求項８】
演算制御装置、第１アクセス管理装置及び第２アクセス管理装置を有する演算処理装置の制御方法であって、
第１アドレスに対するアクセス要求及びその要求に割り当てられたアクセス権限を前記演算制御装置から受信し、
前記第１アドレスを第２アドレスに変換し、
前記アクセス権限の適否を判定し、
前記アクセス権限が適切でない場合、前記第１アドレスへのアクセス要求を前記第２アクセス管理装置へ出力する処理を前記第１アクセス管理装置に実行させ
前記第１アドレスへのアクセス要求を前記第１アクセス管理装置から受信し、
前記第１アドレスを第２アドレスに変換し、
前記アクセス権限の適否を判定し、
前記アクセス権限が適切でない場合、アクセス不許可の通知を前記演算制御装置へ出力する処理を前記第２アクセス管理装置に実行させる
ことを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置としてのプロセッサは、ソフトウェアの利便性のため仮想メモリを備えている。仮想メモリとは、例えば、システムが有する実メモリ量より大きな仮想的なメモリ空間を定義し、その仮想メモリ空間の一部を実メモリにマッピングさせて使用する技術である。ＣＰＵは、仮想メモリ空間に対するマッピングを切替えながらソフトウェアを実行することで、実メモリ空間よりも大きなメモリ空間をソフトウェアに使用させることができる。
【０００３】
プロセッサは、ソフトウェアが使用する仮想メモリ空間のアドレスである仮想アドレスと、物理的に存在する実メモリ空間のアドレスである物理アドレスとの対応を取るため、アドレスの変換処理を行う。アドレス変換は、複数回の主記憶装置からの読み出しを含み処理時間のペナルティが大きいため、ＴＬＢ（Translation  Look-aside  Buffer）による高速化が用いられる。ＴＬＢとは、一度変換を行った仮想アドレスと対応する物理アドレスの組が登録される、ハードウェアで構成されたキャッシュ機構である。
【０００４】
ＴＬＢに登録された仮想アドレスへ後続の命令がアクセスすると、ＭＭＵ（Memory  Management  Unit）を介さずに変換結果の物理アドレスを取得することができる。このように、ＴＬＢを用いた場合、変換処理が省略されるためアドレス変換の高速化が可能である。
【０００５】
ＴＬＢは、アドレス変換の省略によるアドレス変換の高速化が第１目的であるが、合わせて、例外処理も実行する。ここで、例外処理の一例としてアクセス権限違反について説明する。メモリ空間には、パスワード等の秘匿性の高い情報を保護するため、領域毎にアクセス可能なソフトウェアの権限が段階的に定義される。この権限は一般に特権レベルと表現される。ソフトウェアが、自己に与えられた特権レベルでは許可されていないメモリ領域にアクセスしようとすると、ハードウェアが権限違反を検出し、保護されているメモリの値は読み出すことなく、例外を発生させる。
【０００６】
例外処理を実行するために、ＴＬＢは、物理アドレス以外にその領域にアクセス可能な特権レベルの情報を保持し、その領域へのアクセスを要求するソフトウェアに与えられた特権レベルと比較するアクセス権限判定回路を有する。そして従来、ＴＬＢは、アクセス権限を判定し、権限違反を検出すると例外を報告する例外処理を実行する。悪意のあるソフトウェアが保護された領域へアクセスした場合、権限違反の例外発生によって、保護されたメモリ上の値のソフトウェアの読み出しは禁止される。
【０００７】
なお、アドレス変換の技術として、連想メモリのミスヒット時にエラー情報を連想メモリに格納し、次回にエラー情報がヒットした場合にはエラー情報を読み出してアクセス権違反を検出する従来技術がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０１−２２８０３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来のＴＬＢでは、該当の物理アドレスと仮想アドレスとの対が登録されている場合、キャッシュした値が読み出されるため、アドレス変換の処理は高速に完了する。しかしながら、該当の物理アドレスと仮想アドレスとの対が未登録の場合、アドレス変換を実行した後、再度ＴＬＢが検索をやり直すため、アドレス変換の処理が遅延する。これに対して、例外処理は、従来のＴＬＢでは、上述したように高速に処理が完了する。
【００１０】
このことから、悪意あるソフトウェアが、演算処理装置に対してタイミング攻撃を実施することが可能となる。タイミング攻撃とは、仮想メモリ空間に対して網羅的にアクセスし、アクセスに対する例外の発生の有無と処理に要した時間との関係から、高い特権レベルを有するソフトウェアがＴＬＢ登録をしている領域がどこかを観測し攻撃の手がかりとする技法である。すなわち、従来のＴＬＢでは、特権レベルの高いソフトウェアが使用する領域を特権レベルが低いソフトウェアが観測できるというセキュリティ脆弱性の問題が発生する。なお、アクセス権限違反が発生するソフトウェアは、通常はバグを有するソフトウェアであるため、例外処理をＴＬＢにより高速に処理することは一般的には利点とはみなされない。
【００１１】
また、ミスヒット時に取得したエラー情報を用いてアクセス権違反を検出する従来技術では、例外処理とミスヒット時との処理時間の差が同様に発生するため、タイミング攻撃が行われる可能性は減らず、システムの安全性を向上させることは困難である。
【００１２】
開示の技術は、上記に鑑みてなされたものであって、システムの安全性を向上させる演算処理装置、情報処理装置及び演算処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本願の開示する演算処理装置、情報処理装置及び演算処理装置の制御方法の一つの態様において、演算制御部を備える。さらに、第１アクセス管理部は、第１アドレスに対するアクセス要求及びその要求に割り当てられたアクセス権限を前記演算制御部から受信し、前記第１アドレスを第２アドレスに変換し、前記アクセス権限の適否を判定し、前記アクセス権限が適切でない場合、前記第１アドレスへのアクセス要求を出力する。第２アクセス管理部は、前記第１アクセス管理部から出力された前記第１アドレスへのアクセス要求を受信し、前記第１アドレスを前記第２アドレスに変換し、前記アクセス権限の適否を判定し、前記アクセス権限が適切でない場合、アクセス不許可の通知を前記演算制御部へ出力する。
【発明の効果】
【００１４】
１つの側面では、本発明は、システムの安全性を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、演算処理装置のブロック図である。
【図２】図２は、実施例１に係るＴＬＢの詳細を表すブロック図である。
【図３】図３は、実施例１に係るＴＬＢエントリのフォーマットの一例を表す図である。
【図４】図４は、ＭＭＵの詳細を表すブロック図である。
【図５】図５は、ページテーブルウォークについて説明するための図である。
【図６】図６は  実施例１に係る演算処理装置によるメモリアクセス処理のフローチャートである。
【図７】図７は、従来のＴＬＢエントリのフォーマットの一例を表す図である。
【図８】図８は、従来の演算処理装置によるメモリアクセス処理と実施例１に係る演算処理装置によるメモリアクセス処理との比較を表す図である。
【図９】図９は、実施例２に係るＴＬＢの詳細を表すブロック図である。
【図１０】図１０は、実施例３に係る演算処理装置のブロック図である。
【図１１】図１１は、実施例３に係るマイクロＴＬＢの詳細を表すブロック図である。
【図１２】図１２は、実施例３に係るメインＴＬＢの詳細を表すブロック図である。
【図１３】図１３は、コンピュータのハードウェア構成図である。
【発明を実施するための形態】
【００１６】
以下に、本願の開示する演算処理装置、情報処理装置及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置、情報処理装置及び演算処理装置の制御方法が限定されるものではない。
【実施例１】
【００１７】
図１は、演算処理装置のブロック図である。図１に示すように、ＣＰＵ（Central  Processing  Unit）である演算処理装置１は、演算制御部１１、ＴＬＢ１２及びＭＭＵ（Memory  Management  Unit）１３を有する。また、演算処理装置１は、メモリ機構２に接続される。
【００１８】
演算制御部１１は、命令を実行し、演算処理を行う。そして、演算制御部１１は、演算処理の実行時に、データの読み出しや書き込みと言ったメモリ機構２へのアクセスが発生した場合、仮想アドレスとともにＴＬＢ要求をＴＬＢ１２へ出力する。さらに、演算制御部１１は、ＴＬＢ要求を行う処理におけるプロセッサ特権レベルをＴＬＢ１２へ出力する。
【００１９】
その後、ＴＬＢ１２でＴＬＢヒットが発生した場合、演算制御部１１は、仮想アドレスをメモリ機構２に通知するとともにＴＬＢ１２によりメモリ機構２に通知された物理アドレスにアクセスしその領域に対してデータの読み出し又は書き込みの処理を行う。
【００２０】
また、ＴＬＢ１２でＴＬＢヒットが発生しない場合、すなわち、ＴＬＢミスの場合、ＴＬＢ１２は、アドレス変換要求をＭＭＵ１３に通知する。
【００２１】
また、演算制御部１１は、アクセス権限違反の場合、アクセス権限違反の例外報告及びアクセス権限違反の発生の基となったアドレスを含む例外情報の入力をＭＭＵ１３から受ける。この場合、演算制御部１１は、例えば利用者にアクセス権限違反及び例外情報を通知する。
【００２２】
図２は、実施例１に係るＴＬＢの詳細を表すブロック図である。図２に示すように、本実施例に係るＴＬＢ１２は、ＣＡＭ（Content  Addressable  Memory）２０１、アクセス権判定部２０２、ＡＮＤ回路２０３及び２０４、物理アドレス生成部２０５、並びに、バッファ２０６及び２０７を有する。このＴＬＢ１２が、「第１アクセス管理部」の一例にあたる。
【００２３】
ＣＡＭ２０１は、図３に示すフォーマット１００を有するＴＬＢエントリを格納する。図３は、実施例１に係るＴＬＢエントリのフォーマットの一例を表す図である。
【００２４】
図３のフォーマット１００に示すように、ＴＬＢエントリは、タグ部１０１及びデータ部１０２を有する。そして、タグ部１０１には、仮想アドレスを格納する領域１１１を有する。また、データ部１０２は、物理アドレスを格納する領域１１２及びアクセス可能最低特権レベルを格納する領域１０３を有する。ただし、本実施例では、ＴＬＢエントリの領域１１２には、物理アドレス全体ではなく、物理アドレスの上位部分、すなわちページ部分が格納される。
【００２５】
アクセス可能最低特権レベルのための領域１０３は、第１アクセス権限の情報を格納する領域１１３及び第２アクセス権限の情報を格納する領域１１４を有する。第１アクセス権限とは、入力された仮想アドレスを、ページテーブルを用いて変換した状態でのアクセス可能最低特権レベルの権限である。第２アクセス権限とは、入力された仮想アドレスを変換した中間アドレスを、ページテーブルを用いて変換した状態でのアクセス可能最低特権レベルの権限である。
【００２６】
ここで、特権レベルとは、プログラムを処理する際にＣＰＵに与えられる権限のレベルである。特権レベルには、例えば、ユーザレベルとシステムプログラムの２段階や、システムプログラムをＯＳ、ハイパーバイザー、ファームウェアに細分した４段階に分かれるものがある。第１アクセス権限は、仮想アドレスを最初に変換した際に得られる権限レベルである。一方、第２アクセス権限は、１回目の変換で得られたアドレスを基に２回目の変換をした際に得られる権限レベルである。
【００２７】
ここで、図３では、ＴＬＢエントリとして最小に近い構成例を示したが、これ以外の情報を含んでもよい。例えば、ＴＬＢエントリには、複数のプロセスで共有するためのアドレス空間ＩＤ（Identifier）や物理アドレスの属性なども含まれてもよい。また、本実施例では、ＴＬＢ１２が各アドレス変換結果へのアクセス権限を用いた他の処理に対応するために、ＴＬＢエントリに第１アクセス権限及び第２アクセス権限を登録した。ただし、ＴＬＢ１２が単にアクセス権限違反の発生の有無を判定するためであれば、ＴＬＢエントリに第１アクセス権限と第２アクセス権限のうち、より要求の厳しいものを選択的に登録してもよい。
【００２８】
図２に戻って説明を続ける。ＣＡＭ２０１は、ＴＬＢ要求及び仮想アドレスの入力を演算制御部１１から受ける。そして、ＣＡＭ２０１は、自己が保持するＴＬＢエントリの中に、入力された仮想アドレスがタグ部に登録されたＴＢＬエントリがあるか否かを判定する。
【００２９】
入力された仮想アドレスが登録されたエントリがある場合、ＣＡＭ２０１は、ＣＡＭヒットを表す信号をＡＮＤ回路２０４へ出力する。次に、ＣＡＭ２０１は、ＣＡＭヒットしたＴＬＢエントリに格納された第１アクセス権限の情報を第１権限判定部２２１へ出力する。また、ＣＡＭ２０１は、ＣＡＭヒットしたＴＬＢエントリに格納された第２アクセス権限の情報を第２権限判定部２２２へ出力する。さらに、ＣＡＭ２０１は、ＣＡＭヒットしたＴＬＢエントリに格納された物理アドレスの上位部分を物理アドレス生成部２０５へ出力する。
【００３０】
一方、入力された仮想アドレスが登録されたエントリがない場合、ＣＡＭ２０１は、ＡＮＤ回路２０４へ出力するＣＡＭヒットを表す信号を無効にし、ＣＡＭミスを表す信号とする。この場合、ＴＬＢエントリに格納された情報は使用されず、ＣＡＭ２０１は、アクセス権判定部２０２及び物理アドレス生成部２０５への出力を行わない。
【００３１】
ここで、仮想アドレスが、「第１アドレス」の一例にあたり、物理アドレスが「第２アドレス」の一例にあたる。また、ＣＡＭ２０１に格納されたある仮想アドレスに対応する物理アドレスを取得するための情報が、「対応関係」の一例にあたり、それらの情報の全体をまとめたＣＡＭ２０１に格納された情報が、「対応情報」の一例にあたる。
【００３２】
アクセス権判定部２０２は、第１権限判定部２２１及び第２権限判定部２２２を有する。第１権限判定部２２１は、第１アクセス権限の情報の入力をＣＡＭ２０１から受ける。さらに、第１権限判定部２２１は、プロセッサ特権レベルの入力を演算制御部１１から受ける。そして、第１権限判定部２２１は、入力されたプロセッサ特権レベルが、第１アクセス権限の特権レベル以上か否かを判定する。入力されたプロセッサ特権レベルが第１アクセス権限の特権レベル以上の場合、第１権限判定部２２１は、アクセス許可を表す信号を有効にしてＡＮＤ回路２０３へ出力する。これに対して、入力されたプロセッサ特権レベルが第１アクセス権限の特権レベル未満の場合、第１権限判定部２２１は、アクセス許可を表す信号を無効にしてＡＮＤ回路２０３へ出力する。
【００３３】
第２権限判定部２２２は、第２アクセス権限の情報の入力をＣＡＭ２０１から受ける。さらに、第２権限判定部２２２は、プロセッサ特権レベルの入力を演算制御部１１から受ける。そして、第２権限判定部２２２は、入力されたプロセッサ特権レベルが、第２アクセス権限の特権レベル以上か否かを判定する。入力されたプロセッサ特権レベルが第２アクセス権限の特権レベル以上の場合、第２権限判定部２２２は、アクセス許可を表す信号を有効にしてＡＮＤ回路２０３へ出力する。これに対して、入力されたプロセッサ特権レベルが第２アクセス権限の特権レベル未満の場合、第２権限判定部２２２は、アクセス許可を表す信号を無効にしてＡＮＤ回路２０３へ出力する。この第１権限判定部２２１及び第２権限判定部２２２によるプロセッサ特権レベルがアクセス可能最低特権レベル以上か否かの判定が、第１アクセス管理部による「アクセス権の適否の判定」の一例にあたる。
【００３４】
ＡＮＤ回路２０３は、第１権限判定部２２１が出力したアクセス許可を表す信号及び第２権限判定部２２２が出力したアクセス許可を表す信号の入力を受ける。そして、ＡＮＤ回路２０３は、２つの入力信号の論理積を求めＡＮＤ回路２０４へ出力する。すなわち、第１権限判定部２２１からの信号又は第２権限判定部２２２からの信号のうちいずれか一方でも無効であれば、ＡＮＤ回路２０３は、出力信号を無効にしてＡＮＤ回路２０４へ出力する。逆に、第１権限判定部２２１からの信号及び第２権限判定部２２２からの信号の双方が有効であれば、ＡＮＤ回路２０３は、出力信号を有効にしてＡＮＤ回路２０４へ出力する。
【００３５】
ＡＮＤ回路２０４は、ＣＡＭヒットを表す信号の入力をＣＡＭ２０１から受ける。さらに、ＡＮＤ回路２０４は、ＡＮＤ回路２０３からの出力信号の入力を受ける。そして、ＡＮＤ回路２０４は、２つの入力信号の論理積を求めＴＬＢヒットを表す信号としてメモリ機構２へ出力する。すなわち、ＣＡＭ２０１からのＣＡＭヒットを表す信号又はＡＮＤ回路２０３からの出力信号のいずれか一方でも無効であれば、ＡＮＤ回路２０４は、ＴＬＢヒットを表す信号を無効にしてメモリ機構２へ出力する。すなわち、ＡＮＤ回路２０４は、ＴＬＢミスを表す信号を出力する。これに対して、ＣＡＭ２０１からのＣＡＭヒットを表す信号及びＡＮＤ回路２０３からの出力信号の双方が有効であれば、ＡＮＤ回路２０４は、ＴＬＢヒットを表す信号を有効にしてメモリ機構２へ出力する。すなわち、ＣＡＭヒットが発生し、且つ、プロセッサ特権レベルが第１アクセス権限の特権レベル及び第２アクセス権限の特権レベル以上であれば、ＡＮＤ回路２０４は、ＴＬＢヒットを表す信号を有効にしてメモリ機構２へ出力する。
【００３６】
さらに、ＡＮＤ回路２０４からの出力は、反転されてアドレス変換要求としてＭＭＵ１３へ送られる。ＴＬＢヒットの場合、ＡＮＤ回路２０４からの出力を反転した信号は無効であるので、アドレス変換要求の指示はＭＭＵ１３に入力されない。これに対して、ＴＬＢミスの場合、ＡＮＤ回路２０４からの出力を反転した信号は有効であり、アドレス変換要求の指示がＭＭＵ１３に入力される。
【００３７】
物理アドレス生成部２０５は、ＣＡＭヒットが発生した場合、仮想アドレスの入力を演算制御部１１から受ける。また、物理アドレス生成部２０５は、物理アドレスの上位部分の入力をＣＡＭ２０１から受ける。そして、物理アドレス生成部２０５は、入力された物理アドレスの上位部分に対して仮想アドレスを合成して物理アドレスのインデックス部である下位部分を生成することで、最終的な物理アドレスを生成する。その後、物理アドレス生成部２０５は、生成した物理アドレスをメモリ機構２へ出力する。
【００３８】
バッファ２０６は、プロセッサ特権レベルの入力を演算制御部１１から受け保持する。その後、ＭＭＵ１３にアドレス変換要求が入力されたタイミングで、バッファ２０６は、プロセッサ特権レベルをＭＭＵ１３へ出力する。
【００３９】
バッファ２０７は、仮想アドレスの入力を演算制御部１１から受け保持する。その後、ＭＭＵ１３にアドレス変換要求が入力されたタイミングで、バッファ２０７は、仮想アドレスをＭＭＵ１３へ出力する。
【００４０】
次に、図４を参照して、ＭＭＵ１３について説明する。図４は、ＭＭＵの詳細を表すブロック図である。図４に示すように、ＭＭＵ１３は、仮想アドレス保持部３０１、テーブルアドレス生成部３０２、アドレス変換ベースレジスタ３０３、中間アドレス保持部３０４、アクセス権判定部３０５及び例外情報選択部３０６を有する。このＭＭＵ１３が、「第２アクセス管理部」の一例にあたる。
【００４１】
仮想アドレス保持部３０１は、仮想アドレスの入力をＴＬＢ１２のバッファ２０７から受けて、取得した仮想アドレスを保持する。その後、テーブルアドレス生成部３０２にアドレス変換要求が入力されると、仮想アドレス保持部３０１は、仮想アドレスをテーブルアドレス生成部３０２へ出力する。さらに、仮想アドレス保持部３０１は、仮想アドレスを例外情報選択部３０６へ出力する。
【００４２】
中間アドレス保持部３０４は、後述するテーブルアドレス生成部３０２による仮想アドレスから物理アドレスへの変換処理の間に、中間アドレスの入力をテーブルアドレス生成部３０２から受けて、取得した中間アドレスを保持する。その後、中間アドレス保持部３０４は、中間アドレスをテーブルアドレス生成部３０２へ出力する。さらに、中間アドレス保持部３０４は、中間アドレスを例外情報選択部３０６へ出力する。
【００４３】
アドレス変換ベースレジスタ３０３は、テーブルアドレス生成部３０２が実行する各アドレス変換に対応するベースアドレスを保持する。以下では、アドレス変換ベースレジスタ３０３が保持するベースアドレスの値を、ベースアドレスレジスタの値と言う。
【００４４】
テーブルアドレス生成部３０２は、入力された仮想アドレスを基にメモリ機構２が有するページテーブルを辿っていくことで最終的に仮想アドレスに対応する物理アドレスを取得する。ページテーブルは、仮想ページがメモリ機構２の有する物理メモリ上のどの位置に対応するかを把握する。ページテーブルには終端テーブルが含まれており、テーブルアドレス生成部３０２は、ページテーブルを辿っていき終端テーブルまで達すると、その終端テーブルを用いて取得したアドレスを物理アドレスとして取得する。より具体的には、テーブルアドレス生成部３０２は、生成したアドレスに格納されたテーブル情報から、次のアドレス生成を行い、それが終端テーブルに到達し最終的な出力を得られるまで繰り返す。このメモリ機構２が有するページテーブル全体が、「変換情報」の一例にあたる。
【００４５】
ここで、仮想アドレスを基にページテーブルを辿る処理をページテーブルウォークという。本実施例のアドレス変換では、ページテーブルウォークを２回行うことで最終的な物理アドレスを取得する場合で説明する。以下では、１回目のページテーブルを用いたアドレス変換を１回目のページテーブルウォークと言い、２回目のページテーブルを用いたアドレス変換を２回目のページテーブルウォークと言う。
【００４６】
テーブルアドレス生成部３０２は、アドレス変換要求の入力をＴＬＢ１２から受ける。そして、テーブルアドレス生成部３０２は、仮想アドレスを仮想アドレス保持部３０１から取得する。次に、テーブルアドレス生成部３０２は、１回目のページテーブルウォークにおけるベースアドレスレジスタの値をアドレス変換ベースレジスタ３０３から取得する。次に、テーブルアドレス生成部３０２は、仮想アドレス及びベースアドレスレジスタの値を用いて、アドレス変換に関する情報が格納されたテーブルアドレスを求める。そして、テーブルアドレス生成部３０２は、求めたテーブルアドレスを用いて１回目のページテーブルウォークで利用するページテーブル及びアクセス権限をメモリ機構２から取得する。ここでは、テーブルアドレス生成部３０２は、アクセス権限として第１アクセス権限を取得する。
【００４７】
その後、テーブルアドレス生成部３０２は、取得したページテーブルを用いて仮想アドレスの変換を行い、中間アドレスを取得する。その後、テーブルアドレス生成部３０２は、取得した中間アドレスを中間アドレス保持部３０４へ出力する。また、テーブルアドレス生成部３０２は、１回目のページテーブルウォークを行った時点での変換結果のアクセス可能最低特権レベルを表す第１アクセス権限をアクセス権判定部３０５へ出力する。また、１回目のページテーブルウォークを実行している間、テーブルアドレス生成部３０２は、１回目のページテーブルウォークを実行中であることを表す信号を例外情報選択部３０６へ出力する。
【００４８】
その後、テーブルアドレス生成部３０２は、アクセス権判定部３０５からアクセス不許可の通知を受けると、アドレス変換を終了する。これに対して、アクセス許可の通知の入力をアクセス権判定部３０５から受けた場合、テーブルアドレス生成部３０２は、中間アドレスを中間アドレス保持部３０４から取得する。さらに、テーブルアドレス生成部３０２は、２回目のページテーブルウォークにおけるベースアドレスレジスタの値をアドレス変換ベースレジスタ３０３から取得する。次に、テーブルアドレス生成部３０２は、中間アドレス及びベースアドレスレジスタの値を用いて、アドレス変換に関する情報が格納されたテーブルアドレスを求める。そして、テーブルアドレス生成部３０２は、求めたテーブルアドレスを用いて２回目のページテーブルウォークで利用するページテーブル及びアクセス権限をメモリ機構２から取得する。ここでは、テーブルアドレス生成部３０２は、アクセス権限として第２アクセス権限を取得する。
【００４９】
その後、テーブルアドレス生成部３０２は、取得したページテーブルを用いて中間アドレスの変換を行い、最終的な物理アドレスを取得する。その後、テーブルアドレス生成部３０２は、取得した物理アドレス及びアクセス権限の情報をデータ部としたＴＬＢエントリをＴＬＢ１２のＣＡＭ２０１に登録する。また、テーブルアドレス生成部３０２は、２回目のページテーブルウォークを行った時点での変換結果のアクセス可能最低特権レベルを表す第２アクセス権限をアクセス権判定部３０５へ出力する。また、２回目のページテーブルウォークを実行している間、テーブルアドレス生成部３０２は、２回目のページテーブルウォークを実行中であることを表す信号を例外情報選択部３０６へ出力する。
【００５０】
その後、テーブルアドレス生成部３０２は、アクセス権判定部３０５からアクセス不許可の通知を受けると、ページテーブルウォークを終了する。これに対して、アクセス許可の通知の入力をアクセス権判定部３０５から受けた場合、テーブルアドレス生成部３０２は、仮想アドレスとともに、取得した物理アドレス、第１アドレス権限及び第２アドレス権限をＴＬＢ１２へ出力し、ＴＬＢエントリに登録する。
【００５１】
ここで、図５を参照して、本実施例に係るページテーブルウォークの全体的な流れについて説明する。図５は、ページテーブルウォークについて説明するための図である。テーブルアドレス生成部３０２は、仮想アドレス１４１を１回目のページテーブルウォークの入力として取得する。そして、テーブルアドレス生成部３０２は、仮想アドレス１４１を用いて１回目のページテーブルウォークを実行する（ステップＳ１）。この１回目のページテーブルウォークの出力に対するアクセス不許可の場合の例外情報が、仮想アドレス１４１となる。
【００５２】
そして、テーブルアドレス生成部３０２は、１回目のページテーブルウォークを実行することで中間アドレス１４２及び第１アクセス権限１４５を取得する。次に、テーブルアドレス生成部３０２は、中間アドレス１４２を入力として、２回目のページテーブルウォークを実行する（ステップＳ２）。この１回目のページテーブルウォークの出力に対するアクセス不許可の場合の例外情報が、中間アドレス１４２となる。
【００５３】
テーブルアドレス生成部３０２は、２回目のページテーブルウォークを実行することで物理アドレス１４３及び第２アクセス権限１４４を取得する。その後、テーブルアドレス生成部３０２は、物理アドレス１４３、第１アクセス権限１４５及び第２アクセス権限１４４を、ＣＡＭ２０１が有するＴＬＢエントリのデータ部へ登録する（ステップＳ３）。また、テーブルアドレス生成部３０２は、仮想アドレス１４１をＣＡＭ２０１が有するＴＬＢエントリのタグ部へ登録する（ステップＳ４）。
【００５４】
ここで、本実施例では、２回のページテーブルウォークによりアドレス変換が完了する場合で説明したが、その回数に特に制限はなく、出力として所望の物理アドレスが得られるまで繰り返しページテーブルウォークを行う。このテーブルウォークが、第２アクセス管理部による「第１アドレスを第２アドレスに変換」する処理の一例にあたる。
【００５５】
図４に戻って説明を続ける。アクセス権判定部３０５は、プロセッサ特権レベルの情報をＴＬＢ１２のバッファ２０６から取得する。また、アクセス権判定部３０５は、１回目のページテーブルウォークを行った時点での変換結果のアクセス可能最低特権レベルを表す第１アクセス権限の入力をテーブルアドレス生成部３０２から受ける。そして、アクセス権判定部３０５は、プロセッサ特権レベルが第１アクセス権限の特権レベル以上か否かを判定する。プロセッサ特権レベルが第１アクセス権限の特権レベル未満の場合、アクセス権判定部３０５は、アクセス不許可の通知をテーブルアドレス生成部３０２へ出力する。さらに、アクセス権判定部３０５は、例外情報の通知の実行を例外情報選択部３０６に指示する。その後、アクセス権判定部３０５は、アクセス権限違反の通知を含む例外報告を演算制御部１１へ出力する。
【００５６】
これに対して、プロセッサ特権レベルが第１アクセス権限の特権レベル以上の場合、アクセス権判定部３０５は、アクセス許可の通知をテーブルアドレス生成部３０２へ出力する。その後、アクセス権判定部３０５は、２回目のページテーブルウォークを行った時点での変換結果のアクセス可能最低特権レベルを表す第２アクセス権限の入力をテーブルアドレス生成部３０２から受ける。そして、アクセス権判定部３０５は、プロセッサ特権レベルが第２アクセス権限の特権レベル以上か否かを判定する。プロセッサ特権レベルが第２アクセス権限の特権レベル以上の場合、アクセス権判定部３０５は、アクセス許可の通知をテーブルアドレス生成部３０２へ出力する。
【００５７】
これに対して、プロセッサ特権レベルが第２アクセス権限の特権レベル未満の場合、アクセス権判定部３０５は、アクセス不許可の通知をテーブルアドレス生成部３０２へ出力する。さらに、アクセス権判定部３０５は、例外情報の通知の実行を例外情報選択部３０６に指示する。その後、アクセス権判定部３０５は、アクセス権限違反の通知を含む例外報告を演算制御部１１へ出力する。このアクセス権判定部３０５によるプロセッサ特権レベルがアクセス可能最低特権レベル以上か否かの判定が、第２アクセス管理部による「アクセス権限の適否を判定」する処理の一例にあたる。
【００５８】
例外情報選択部３０６は、仮想アドレスを仮想アドレス保持部３０１から取得する。また、例外情報選択部３０６は、中間アドレスを中間アドレス保持部３０４から取得する。さらに、例外情報選択部３０６は、１回目のページテーブルウォークを実行中であることを表す信号又は２回目のページテーブルウォークを実行中であることを表す信号の入力をテーブルアドレス生成部３０２から受ける。
【００５９】
そして、例外情報選択部３０６は、アクセス権判定部３０５から例外情報の通知の実行指示を受けた場合、テーブルアドレス生成部３０２から入力された信号を確認する。テーブルアドレス生成部３０２からの信号が１回目のページテーブルウォークを実行中であることを表す場合、例外情報選択部３０６は、仮想アドレスを例外情報として演算制御部１１へ出力する。これに対して、テーブルアドレス生成部３０２からの信号が２回目のページテーブルウォークを実行中であることを表す場合、例外情報選択部３０６は、中間アドレスを例外情報として演算制御部１１へ出力する。
【００６０】
なお、本実施例では、ＣＡＭ２０１を用いたＴＬＢ１２を例に説明したが、他の記憶素子や構成手法を用いてもよい。例えば、ＴＬＢ１２にＲＡＭ（Random  Access  Memory）を用いてもよい。
【００６１】
次に、図６を参照して、本実施例に係る演算処理装置１によるメモリアクセス処理の流れについて説明する。図６は、実施例１に係る演算処理装置によるメモリアクセス処理のフローチャートである。
【００６２】
ＣＡＭ２０１は、ＴＬＢ要求及び仮想アドレスの入力を演算制御部１１から受ける。そして、ＣＡＭ２０１は、登録されたＴＬＢエントリの中から入力された仮想アドレスに対応する情報を検索するＣＡＭ検索を行う（ステップＳ１０１）。
【００６３】
ＣＡＭ２０１は、登録されたＴＬＢエントリの中から入力された仮想アドレスに対応する情報の有無により、ＣＡＭヒットか否かを判定する（ステップＳ１０２）。
【００６４】
ＣＡＭヒットの場合（ステップＳ１０２：肯定）、アクセス権判定部２０２は、ヒットしたＴＬＢエントリにおける第１アクセス権限及び第２アクセス権限の情報を取得する（ステップＳ１０３）。
【００６５】
次に、アクセス権判定部２０２は、演算制御部１１から取得したプロセッサ特権レベルと第１アクセス権限及び第２アクセス権限とを比較し、アクセスを許可するか否かを判定する（ステップＳ１０４）。プロセッサ特権レベルが第１アクセス権限以上であり且つ第２アクセス権限以上であれば、アクセス権判定部２０２は、アクセス許可と判定する。また、プロセッサ特権レベルが第１アクセス権限未満又は第２アクセス権限未満であれば、アクセス権判定部２０２は、アクセス不許可と判定する。
【００６６】
ＣＡＭミスの場合（ステップＳ１０２：否定）及びアクセス不許可の場合（ステップＳ
１０４：否定）、ＡＮＤ回路２０４は、アドレス変換要求をＭＭＵ１３へ発行する（ステップＳ１０５）。
【００６７】
ＭＭＵ１３のテーブルアドレス生成部３０２は、演算制御部１１から入力された仮想アドレスを開始アドレスとする（ステップＳ１０６）。ここで開始アドレスとは、アドレス変換の対象とするアドレスを指す。
【００６８】
次に、テーブルアドレス生成部３０２は、開始アドレスを用いてページテーブルウォークを実行する（ステップＳ１０７）。
【００６９】
次に、アクセス権判定部３０５は、アドレス変換処理による変換結果に対するアクセス可能最低特権レベルをテーブルアドレス生成部３０２から取得する（ステップ１０８）。
【００７０】
そして、アクセス権判定部３０５は、取得したアクセス可能最低特権レベルとプロセッサ特権レベルとを比較して、変換結果に対するアクセスを許可するか否かを判定する（ステップＳ１０９）。具体的には、アクセス権判定部３０５は、プロセッサ特権レベルが取得したアクセス可能最低特権レベル以上であれば、アクセス許可と判定する。また、プロセッサ特権レベルがアクセス可能最低特権レベル未満であれば、アクセス権判定部３０５は、アクセス不許可と判定する。
【００７１】
アクセス不許可の場合（ステップＳ１０９：否定）、アクセス権判定部３０５は、アクセス不許可の情報を含む例外報告を演算制御部１１へ出力する（ステップＳ１１０）。この時、例外情報選択部３０６は、その時点での入力アドレスを例外情報として演算制御部１１へ出力する。その後、メモリアクセス処理は終了する。
【００７２】
これに対して、アクセス許可の場合（ステップＳ１０９：肯定）、アクセス権判定部３０５は、アクセス許可の通知をテーブルアドレス生成部３０２へ出力する。テーブルアドレス生成部３０２は、アクセス許可の通知を受けて、ページテーブルウォークの出力として物理アドレスが得られたか否かを判定する（ステップＳ１１１）。
【００７３】
物理アドレスが得られていない場合（ステップＳ１１１：否定）、テーブルアドレス生成部３０２は、中間アドレスを開始アドレスとして（ステップＳ１１２）、ステップＳ１０７へ戻る。
【００７４】
これに対して、物理アドレスが得られた場合（ステップＳ１１１：肯定）、テーブルアドレス生成部３０２は、ＴＬＢ１２のＣＡＭ２０１のＴＬＢエントリに仮想アドレス、物理アドレス及び各アクセス可能最低特権レベルを登録する（ステップＳ１１３）。その後、メモリアドレスアクセス処理は、ステップＳ１０１へ戻る。
【００７５】
一方、ＴＬＢ１２のアクセス権判定部２０２がアクセス許可と判定した場合（ステップＳ１０４：肯定）、ＴＬＢ１２のＡＮＤ回路２０４は、ＴＬＢヒットをメモリ機構２へ出力しメモリアクセスが発行される（ステップＳ１１４）。ＴＬＢ１２の物理アドレス生成部２０５は、仮想アドレスから生成した物理アドレスをメモリ機構２へ出力する。
【００７６】
メモリ機構２は、演算制御部１１からの仮想アドレスを用いたデータの書き込み又は読み出し処理要求に対して、ＴＬＢ１２から取得した物理アドレスを用いて処理要求に応じた処理を行う。そして、メモリ機構２は、処理結果を演算制御部１１へ出力する。演算制御部１１は、仮想アドレスを用いたデータの書き込み又は読み出し処理要求に対する応答の入力をメモリ機構２から受けて、メモリアクセスを完了する（ステップＳ１１５）。
【００７７】
ここで、本実施例に係る演算処理装置１が用いるＴＬＢエントリと従来のＴＬＢエントリとを比較する。図７は、従来のＴＬＢエントリのフォーマットの一例を表す図である。フォーマット１１５で表されるように、従来のＴＬＢエントリでは、中間アドレスが登録される。このように、従来は、ＴＬＢが例外報告及び例外情報を通知するため、ＴＬＢはページテーブルウォークにおける変換段階毎に中間アドレスの保持していた。
【００７８】
これに対して、本実施例に係るＴＬＢ１２はアドレス権限違反が発生した場合にも例外報告や例外情報の通知は行わず、これらはＭＭＵ１３が行う。そのため、ＴＬＢ１２は、図３に示すように、ＴＬＢエントリの中に中間アドレスが登録されなくてもよい。このように、本実施例に係る演算処理装置１が用いるＴＬＢエントリは、従来のＴＬＢエントリに比べて中間アドレスを格納する領域１１６を設けなくてもよい。また、中間アドレスに限らず、アドレス変換中と例外報告時に使用する情報であれば、本実施例に係る演算処理装置１が用いるＴＬＢエントリから削除することが可能である。このように、本実施例に係る演算処理装置１は、ＴＬＢ１２の記憶領域を小さくすることや有効利用することが可能である。
【００７９】
次に、図８を参照して、従来の演算処理装置によるメモリアクセス処理と実施例１に係る演算処理装置によるメモリアクセス処理との差を説明する。図８は、従来の演算処理装置によるメモリアクセス処理と実施例１に係る演算処理装置によるメモリアクセス処理との比較を表す図である。
【００８０】
アクセス権限違反がある場合で、ＴＬＢミスの場合、従来の演算処理装置では、ＭＭＵによるアドレス変換及びＴＬＢ登録が行われた上で、ＴＬＢによる例外報告がなされる。ここで、ＴＬＢ登録とは、ＴＬＢエントリへの登録を指す。これに対して、本実施例に係る演算処理装置１では、ＭＭＵ１３によるアドレス変換が行われるがＴＬＢ登録は行われずに、ＭＭＵ１３が例外報告を行う。また、アクセス権限違反がある場合で、ＴＬＢヒットの場合、従来の演算処理装置では、ＴＬＢによる例外報告が行われ、短時間で応答が返される。これに対して、本実施例に係る演算処理装置１では、ＭＭＵ１３によるアドレス変換が行われるがＴＬＢ登録は行われずに、ＭＭＵ１３が例外報告を行う。また、アクセス権限違反がない場合で、ＴＬＢミスの場合、従来の演算処理装置では、ＭＭＵによるアドレス変換及びＴＬＢ登録が行われた上で、ＴＬＢからＴＬＢヒットが通知される。これは、本実施例に係る演算処理装置１でも同様である。また、アクセス権限違反がない場合で、ＴＬＢヒットの場合、従来の演算処理装置では、ＴＬＢからＴＬＢヒットが通知される。これは、本実施例に係る演算処理装置１でも同様である。
【００８１】
このように、従来の演算処理装置では、アクセス権限違反があり且つＴＬＢヒットの場合、ＴＬＢミスの場合に比べて非常に短時間で応答が返ってしまう。これに対して、本実施例に係る演算処理装置１では、アクセス権限違反があり且つＴＬＢヒットの場合もＭＭＵによるアドレス変換が行われるため、その分遅延が発生し、ＴＬＢミスの場合とほぼ同程度の時間経過後に応答が返る。したがって、本実施例に係る演算処理装置１に対してタイミング攻撃が行われても、アクセス権限違反とＴＬＢミスとの区別をつけることは困難であり、悪意のあるソフトウェアがセキュリティの脆弱なポイントを検出することは困難である。
【００８２】
以上に説明したように、本実施例に係る演算処理装置１は、ＴＬＢヒットの場合で、且つ、アクセス権限違反が発生した場合にも、ＭＭＵ１３によるアドレス変換の実行後に、ＭＭＵ１３が例外報告を演算制御部１１に行う。すなわち、本実施例に係る演算処理装置１は、ＴＬＢヒットの場合で、且つ、アクセス権限違反が発生した場合と、ＴＬＢミスの場合とで応答時間に差がほとんどなくなる。これにより、タイミング攻撃などを受けた場合にも、ＴＬＢエントリがＴＬＢ１２の中に存在するか否かを処理時間の差から判定することは困難であり、ＴＬＢ１２のセキュリティの脆弱性を解決することができる。
【００８３】
また、本実施例に係る演算処理装置１は、ＴＬＢエントリからアドレス変換中と例外報告時に使用する情報を省くことができる。したがって、本実施例に係る演算処理装置１は、個々のＴＬＢエントリのサイズを小さくすることができ、ＴＬＢ１２の記憶領域を小さくすることや有効利用することが可能である。
【実施例２】
【００８４】
図９は、実施例２に係るＴＬＢの詳細を表すブロック図である。本実施例に係る演算処理装置１は、アクセス権限違反以外の要因による例外報告及び例外情報をＴＬＢ１２が即時に返すことが実施例１と異なる。本実施例に係る演算処理装置１も全体構成は、図１で表される。以下の説明では、実施例１と同様の各部の機能については説明を省略する。
【００８５】
図９に示すように、本実施例に係るＴＬＢ１２は、図２に示した各部に加えて、ＶＢＰ（仮想アドレスブレークポイント：Virtual  address  Break  Point）／ＶＷＰ（仮想アドレスウォッチポイント：Virtual  address  Watch  Point）検出部２０８を有する。このＶＢＰ／ＶＷＰ検出部２０８が、「応答部」の一例にあたる。ＴＬＢ１２は、例外が発生しない場合及びアドレス権限違反が発生した場合は実施例１と同様の処理を行う。
【００８６】
これに対して、ＶＢＰ／ＶＷＰ検出部２０８は、仮想アドレスの入力を受ける。そして、ＶＢＰ／ＶＷＰ検出部２０８は、入力された仮想アドレスが仮想アドレスブレークポイント又は仮想アドレスウォッチポイントのいずれかであるか判断する。入力された仮想アドレスが仮想アドレスブレークポイントの場合、ＶＢＰ／ＶＷＰ検出部２０８は、仮想アドレスブレークポイントに関する例外報告及び例外情報の通知を演算制御部１１に行う。また、入力された仮想アドレスが仮想アドレスウォッチポイントの場合、ＶＢＰ／ＶＷＰ検出部２０８は、仮想アドレスウォッチポイントに関する例外報告及び例外情報の通知を演算制御部１１に行う。すなわち、仮想アドレスブレークポイント又は仮想アドレスウォッチポイントの例外が発生した場合、演算制御部１１は、即座にその例外報告及び例外情報の通知を受ける。
【００８７】
ここで、本実施例では、アクセス権限違反に加えて仮想アドレスブレークポイント及び仮想アドレスウォッチポイントといった例外について説明したが、演算処理装置１で発生する例外には他にも種類がある。例外の中で高速に処理しても問題ない例外については、ＴＬＢ１２から例外報告を行ってもセキュリティを脆弱化しない。セキュリティの観点からＴＬＢエントリに情報が保持されていることを隠蔽したい例外は、アクセス権限違反と同様にＭＭＵ１３から例外報告を行うことが好ましい。これに対して、仮想アドレスブレークポイント及び仮想アドレスウォッチポイントのようなセキュリティ観点で処理時間の差が観測されても問題のない例外種についてはＴＬＢ１２から例外報告を行ってよい。
【００８８】
さらに、ＴＬＢエントリを小さくするという観点も加える場合、上記条件に加えて中間アドレスなどのアドレス変換をすることで得られる情報を利用しない例外種という条件を加えたうえで、ＴＬＢ１２から例外報告を行ってもよい。仮想アドレスブレークポイント及び仮想アドレスウォッチポイントはこの条件も満たす。
【００８９】
以上に説明したように、本実施例では、セキュリティ観点で処理時間の差が観測されても問題のない例外種についてはＴＬＢ１２が即時に例外報告を行う。これにより、セキュリティレベルを低下させずに特定の例外種については処理時間を短縮することができる。また、さらにアドレス変換をすることで得られる情報を利用しないという条件を加えた例外種についてＴＬＢ１２が即時に例外報告を行う構成にすることも可能である。この場合、セキュリティレベルを低下させず且つＴＬＢエントリのサイズを小さくしつつ、特定の例外種については処理時間を短縮することができる。
【実施例３】
【００９０】
図１０は、実施例３に係る演算処理装置のブロック図である。本実施例に係る演算処理装置１は、ＴＬＢ１２が複数階層を有することが実施例１と異なる。本実施例に係る演算処理装置１は、マイクロＴＬＢ１２１及びメインＴＬＢ１２２を有する。以下の説明では、実施例１と同様の各部の機能については説明を省略する。
【００９１】
マイクロＴＬＢ１２１は、演算制御部１１から直接アクセスされる少量量かつ高速なバッファメモリである。このマイクロＴＬＢ１２１が、「第１管理部」の一例にあたる。メインＴＬＢ１２２は、マイクロＴＬＢ１２１よりも大きな容量を有し低速なバッファメモリである。このメインＴＬＢ１２２が、「第２管理部」の一例にあたる。
【００９２】
メモリアクセスの処理の概略を以下に説明する。演算制御部１１が、メモリアクセスを行う場合、仮想アドレスとともにＴＬＢ要求をマイクロＴＬＢ１２１へ出力する。そして、マイクロＴＬＢ１２１で仮想アドレスが検索され、ＴＬＢヒットとなった場合、マイクロＴＬＢ１２１が、ＴＬＢヒットとともに物理アドレスをメモリ機構２に通知する。
【００９３】
一方、マイクロＴＬＢ１２１においてＴＬＢミスとなった場合、メインＴＬＢ１２２に仮想アドレスとともにＴＬＢ要求が送られる。そして、メインＴＬＢ１２２で仮想アドレスが検索され、ＴＬＢヒットとなった場合、ヒットしたＴＬＢエントリの情報がマイクロＴＬＢ１２１に登録され、その後、マイクロＴＬＢ１２１がＴＬＢヒットとともに物理アドレスをメモリ機構２に通知する。
【００９４】
一方、メインＴＬＢ１２２においてＴＬＢミスとなった場合、ＭＭＵ１３に仮想アドレスとアドレス変換要求が送られる。ＭＭＵ１３は、仮想アドレスを用いてページテーブルウォークを行い、仮想アドレスに対応する物理アドレスを取得する。そして、ＭＭＵ１３は、仮想アドレス、取得した物理アドレス及び各段階での変換結果へのアクセス可能最低特権レベルをメインＴＬＢ１２２のＴＬＢエントリに登録する。メインＴＬＢ１２２は、登録されたＴＬＢエントリをマイクロＴＬＢ１２１のＴＬＢエントリに登録する。その後、マイクロＴＬＢ１２１がＴＬＢヒットとともに物理アドレスをメモリ機構２に通知する。
【００９５】
次に、図１１及び図１２を参照して、マイクロＴＬＢ１２１及びメインＴＬＢ１２２について詳細に説明する。図１１は、実施例３に係るマイクロＴＬＢの詳細を表すブロック図である。また、図１２は、実施例３に係るメインＴＬＢの詳細を表すブロック図である。
【００９６】
マイクロＴＬＢ１２１は、図１１に示すように、ＣＡＭ２０１、アクセス権判定部２０２、ＡＮＤ回路２０３及び２０４、物理アドレス生成部２０５、並びに、バッファ２０６及び２０７を有する。マイクロＴＬＢ１２１の各部は、以下に特に説明のない限り実施例１における同じ符号を有する各部と同様の機能を有する。マイクロＴＬＢ１２１のＣＡＭ２０１に格納された仮想アドレスに対応する物理アドレスを特定する情報の全体が「部分対応情報」の一例にあたる。
【００９７】
ＡＮＤ回路２０４は、ＴＬＢヒットを表す信号として有効又は無効な信号をメモリ機構２へ出力する。また、ＡＮＤ回路２０４から出力された信号は、反転されてＴＬＢ要求の信号としてメインＴＬＢ１２２に入力される。すなわち、ＡＮＤ回路２０４からＴＬＢヒットを表す信号として有効な信号が出力される場合、メインＴＬＢ１２２には、ＴＬＢ要求の信号として無効な信号が入力される。すなわち、この場合、メインＴＬＢ１２２は、ＴＬＢ要求の指示を受けない。これに対して、ＡＮＤ回路２０４からＴＬＢヒットを表す信号として無効な信号が出力される場合、メインＴＬＢ１２２には、ＴＬＢ要求の信号として有効な信号が入力される。すなわち、この場合、メインＴＬＢ１２２は、ＴＬＢ要求の指示を受ける。
【００９８】
また、ＣＡＭ２０１は、ＴＬＢミスとなり且つアクセス権限違反が発生しない場合、メインＴＬＢ１２２のＡＮＤ回路２０４からＴＬＢヒットを表す信号として有効な信号の入力を受ける。そして、ＣＡＭ２０１は、アクセス可能最低特権レベルの情報の入力をメインＴＬＢ１２２のＣＡＭ２０１から受け、物理アドレスの入力をメインＴＬＢ１２２の物理アドレス生成部２０５から受けて、仮想アドレスに対応するＴＬＢエントリを登録する。
【００９９】
メインＴＬＢ１２２は、図１２に示すように、ＣＡＭ２０１、アクセス権判定部２０２、ＡＮＤ回路２０３及び２０４、物理アドレス生成部２０５、並びに、バッファ２０６及び２０７を有する。メインＴＬＢ１２２の各部は、以下に特に説明のない限り実施例１における同じ符号を有する各部と同様の機能を有する。
【０１００】
ＣＡＭ２０１は、ＴＬＢ要求の入力をマイクロＴＬＢ１２１のＡＮＤ回路２０４から受ける。また、ＣＡＭ２０１は、仮想アドレスの入力をマイクロＴＬＢ１２１のバッファ２０７から受ける。そして、ＣＡＭ２０１は、入力された仮想アドレスについてＣＡＭ検索を行う。その後は、実施例１におけるＣＡＭ２０１と同様の動作を行う。
【０１０１】
ＡＮＤ回路２０４は、ＣＡＭヒットであり且つアクセス権限違反が発生しない場合、ＴＬＢヒットを表す信号を有効にしてマイクロＴＬＢ１２１へ出力する。そして、マイクロＴＬＢ１２１がＴＬＢヒットを表す信号として有効な信号を受信すると、ＣＡＭ２０１は、アクセス可能最低特権レベルの情報をマイクロＴＬＢ１２１へ出力する。
【０１０２】
一方、ＣＡＭミスであるか又はアクセス権限違反が発生した場合、ＡＮＤ回路２０４は、ＴＬＢヒットを表す信号を無効にしてマイクロＴＬＢ１２１へ出力する。この場合、マイクロＴＬＢ１２１に対する、ＣＡＭ２０１からのアクセス可能特権レベルの情報の出力や物理アドレス生成部２０５からの物理アドレスの出力は行われない。
【０１０３】
さらに、ＡＮＤ回路２０４から出力されたＴＬＢヒットを表す信号は、反転されてアドレス変換要求の信号としてＭＭＵ１３へ入力される。すなわち、ＣＡＭヒットであり且つアクセス権限違反が発生しない場合、アドレス変換要求の信号として無効な信号がＭＭＵ１３へ入力される。また、ＣＡＭミスであるか又はアクセス権限違反が発生した場合、アドレス変換要求の信号として有効な信号がＭＭＵ１３へ入力される。
【０１０４】
物理アドレス生成部２０５は、マイクロＴＬＢ１２１から入力された仮想アドレス及びＣＡＭ２０１から取得した物理アドレスの上位部分を用いて物理アドレスを生成する。そして、マイクロＴＬＢ１２１がＴＬＢヒットを表す信号として有効な信号を受信すると、物理アドレス生成部２０５は、生成した物理アドレスをマイクロＴＬＢへ出力する。
【０１０５】
ＭＭＵ１３は、メインＴＬＢ１２２においてＣＡＭミスの場合又はアドレス権限違反の少なくともいずれかが発生した場合、メインＴＬＢ１２２のＡＮＤ回路２０４からアドレス変換要求の入力を受ける。さらに、ＭＭＵ１３は、仮想アドレスをメインＴＬＢ１２２のバッファ２０７から取得し、プロセッサ特権レベルの情報をメインＴＬＢ１２２のバッファ２０６から受ける。その後、ＭＭＵ１３は、取得した仮想アドレス及びプロセッサ特権レベルを用いてページテーブルウォークを実行する。
【０１０６】
アドレス権限違反が発生しなければ、ＭＭＵ１３は、仮想アドレスに対応する物理アドレスを取得し、各段階の変換結果へのアクセス可能最低権限レベルとともにメインＴＬＢ１２２のＣＡＭ２０１のＴＬＢエントリへ登録する。
【０１０７】
以上に説明したように、本実施例に係る演算処理装置１のマイクロＴＬＢ１２１及びメインＴＬＢ１２２のように複数階層の場合であっても、例外報告がＭＭＵ１３から行われる。これにより、これにより、タイミング攻撃などを受けた場合にも、ＴＬＢエントリがＴＬＢ１２の中に存在するか否かを処理時間の差から判定することは困難であり、ＴＬＢ１２のセキュリティの脆弱化を防ぎ、システムの安全性を向上させることができる。
【０１０８】
さらに、以上の各実施例で説明した演算処理装置１を有するコンピュータについて説明する。図１３は、コンピュータのハードウェア構成図である。このコンピュータ５が、「情報処理装置」の一例にあたる。
【０１０９】
図１３に示すように、各実施例で説明した演算処理装置１及びメモリ機構２はコンピュータ５に搭載可能である。コンピュータ５は、ハードディスク３及びネットワークインタフェース４などを有する。
【０１１０】
ネットワークインタフェース４は、演算処理装置１が外部の装置と通信を行うためのインタフェースである。
【０１１１】
演算処理装置１は、メモリ機構２、ハードディスク３及びネットワークインタフェース４とバスで接続される。ハードディスク３には、各種プログラムが格納される。演算処理装置１は、ハードディスク３に格納された各種プログラムを読み出し、メモリ機構２が有する主記憶部上に展開して実行する。このプログラムの実行において、演算処理装置１は、メモリ機構２に対してデータの読み出し及び書き込みを行う。その際に、演算処理装置１は、各実施例で説明したＴＬＢ１２及びＭＭＵ１３などを用いて例外報告やメモリアクセスを行う。
【符号の説明】
【０１１２】
１  演算処理装置
２  メモリ機構
１１  演算制御部
１２  ＴＬＢ
１３  ＭＭＵ
１２１  マイクロＴＬＢ
１２２  メインＴＬＢ
２０１  ＣＡＭ
２０２  アクセス権判定部
２０３，２０４  ＡＮＤ回路
２０５  物理アドレス生成部
２０６，２０７  バッファ
２０８  ＶＢＰ／ＶＷＰ検出部
２２１  第１権限判定部
２２２  第２権限判定部
３０１  仮想アドレス保持部
３０２  テーブルアドレス生成部
３０３  アドレス変換ベースレジスタ
３０４  中間アドレス保持部
３０５  アクセス権判定部
３０６  例外情報選択部
【図１】
2019212246.tif 000003
【図２】
2019212246.tif 000004
【図３】
2019212246.tif 000005
【図４】
2019212246.tif 000006
【図５】
2019212246.tif 000007
【図６】
2019212246.tif 000008
【図７】
2019212246.tif 000009
【図８】
2019212246.tif 000010
【図９】
2019212246.tif 000011
【図１０】
2019212246.tif 000012
【図１１】
2019212246.tif 000013
【図１２】
2019212246.tif 000014
【図１３】
2019212246.tif 000015