(57)【要約】  仮想アドレスを物理アドレスに変換するアドレス変換対を記憶したＴＳＢ領域が格納された記憶手段にアクセスを行う演算処理装置であって、ＴＳＢ領域の一部を記憶するＴＬＢと、アドレス変換対を一時的に記憶するキャッシュメモリと、記憶手段に格納されたアドレス変換対の開始物理アドレスであるＴＳＢ基底物理アドレスを記憶するＴＳＢ基底物理アドレス記憶手段とを備え、ＴＳＢ基底物理アドレスと変換対象の仮想アドレスに基づいて、アドレス変換対をＴＳＢ領域から取得する際に用いられるＴＳＢポインタを算出し、変換対象の仮想アドレスに対応するアドレス変換対が、ＴＬＢ又はキャッシュメモリから検索されない場合には、算出されたＴＳＢポインタを用いて、変換対象の仮想アドレスに対応するアドレス変換対をＴＳＢ領域から取得して、キャッシュメモリに記憶させる。
2008155825.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレスを物理アドレスに変換するアドレス変換対を記憶したＴＳＢ領域が格納された記憶手段にアクセスを行う演算処理装置であって、
前記ＴＳＢ領域の一部を記憶するＴＬＢと、
前記アドレス変換対を一時的に記憶するキャッシュメモリと、
前記記憶手段に格納されたアドレス変換対の開始物理アドレスであるＴＳＢ基底物理アドレスを記憶するＴＳＢ基底物理アドレス記憶手段と、
前記ＴＳＢ基底物理アドレスと変換対象の仮想アドレスに基づいて、当該アドレス変換対を前記ＴＳＢ領域から取得する際に用いられるＴＳＢポインタを算出するＴＳＢポインタ算出手段と、
変換対象の仮想アドレスに対応するアドレス変換対が、前記ＴＬＢ又は前記キャッシュメモリから検索されない場合には、前記算出されたＴＳＢポインタを用いて、前記変換対象の仮想アドレスに対応するアドレス変換対を前記ＴＳＢ領域から取得して、前記キャッシュメモリに記憶させる変換対取得手段を備えたことを特徴とする演算処理装置。
【請求項２】
前記変換対取得手段は、
前記変換対象の仮想アドレスに対応するアドレス変換対が前記ＴＬＢから検索されない場合には、前記アドレス変換対が前記キャッシュメモリに記憶されているか否かをＯＳのトラップ処理により確認し、
前記ＴＳＢポインタを用いて前記ＴＳＢ領域から取得した前記アドレス変換対象のアドレス変換対を、前記トラップ処理における前記確認よりも前に前記キャッシュメモリに記憶させることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記変換対取得手段は、
前記変換対象の仮想アドレスが前記キャッシュメモリに記憶されていない場合には、前記アドレス変換対を前記ＴＳＢ領域から取得して前記キャッシュメモリに記憶した後に、前記ＴＬＢに登録することを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
前記演算処理装置はさらに、
前記ＴＳＢ領域からの前記アドレス変換対の取得を制御するレジスタ手段を有し、
前記レジスタに格納された情報に基づいて、前記変換対取得手段による前記ＴＳＢ領域からのアドレス変換対の取得を制御することを特徴とする請求項１〜３のいずれかに記載の演算処理装置。
【請求項５】
前記変換対取得手段は、
前記演算処理内におけるハードウェアエラーが発生した場合には、前記変換対取得手段による前記ＴＳＢ領域からのアドレス変換対の取得を禁止することを特徴とする請求項１〜４のいずれかに記載の演算処理装置。
【請求項６】
前記ＴＳＢ領域の一部を記憶するＴＬＢと、前記アドレス変換対を一時的に記憶するキャッシュメモリとを有するとともに、仮想アドレスを物理アドレスに変換するアドレス変換対を記憶したＴＳＢ領域が格納された記憶装置にアクセスを行う演算処理装置の演算処理方法であって、
前記記憶装置に格納されたアドレス変換対の開始物理アドレスであるＴＳＢ基底物理アドレスを記憶するステップと、
前記ＴＳＢ基底物理アドレスと変換対象の仮想アドレスに基づいて、当該アドレス変換対を前記ＴＳＢ領域から取得する際に用いられるＴＳＢポインタを算出するステップと、
変換対象の仮想アドレスに対応するアドレス変換対が、前記ＴＬＢ又は前記キャッシュメモリから検索されない場合には、前記算出されたＴＳＢポインタを用いて、前記変換対象の仮想アドレスに対応するアドレス変換対を前記ＴＳＢ領域から取得して、前記キャッシュメモリに記憶させるステップを備えたことを特徴とする演算処理方法。
【請求項７】
前記演算処理方法は、
前記変換対象の仮想アドレスに対応するアドレス変換対が前記ＴＬＢから検索されない場合には、前記アドレス変換対が前記キャッシュメモリに記憶されているか否かをＯＳのトラップ処理により確認するステップと、
前記ＴＳＢポインタを用いて前記ＴＳＢ領域から取得した前記アドレス変換対象のアドレス変換対を、前記トラップ処理における前記確認よりも前に前記キャッシュメモリに記憶させるステップを有することを特徴とする請求項６記載の演算処理方法。
【請求項８】
前記演算処理方法は、
前記変換対象の仮想アドレスが前記キャッシュメモリに記憶されていない場合には、前記アドレス変換対を前記ＴＳＢ領域から取得して前記キャッシュメモリに記憶した後に、前記ＴＬＢに登録するステップを有することを特徴とする請求項６又は７記載の演算処理方法。
【請求項９】
前記演算処理方法はさらに、
前記ＴＳＢ領域からの前記アドレス変換対の取得を制御するレジスタを有し、
前記レジスタに格納された情報に基づいて、前記ＴＳＢ領域からのアドレス変換対の取得を制御するステップを有することを特徴とする請求項６〜８のいずれかに記載の演算処理方法。
【請求項１０】
前記変換対取得方法はさらには、
前記演算処理内におけるハードウェアエラーが発生した場合には、前記ＴＳＢ領域からのアドレス変換対の取得を禁止するステップを有することを特徴とする請求項６〜９のいずれかに記載の演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、演算処理装置、演算処理プログラムおよび演算処理方法に関する。
【背景技術】
【０００２】
従来より、多くのコンピュータにおいて、「仮想記憶方式」が採用されている。「仮想記憶方式」とは、外部記憶装置（ハードディスク装置等）をメモリの待避領域として利用することで、コンピュータが実装しているメモリ容量よりも多くのメモリ容量がコンピュータに備えられているようにみせかける技術である。すなわち、「仮想記憶方式」とは、メモリ容量が不足すると、メモリ上の情報のうち使用頻度の少ない情報を、ＯＳが予めハードディスク装置内に確保していたスワップ領域に一時的に待避させることで、一時的にメモリ容量の不足を補うものである。【０００３】
かかる「仮想記憶方式」では、「仮想アドレス（ＶＡ：Virtual  Address）」および「物理アドレス（ＰＡ：Physical  Address）」の２つのアドレスを利用する。アプリケーション側がメモリに対して読み書き（メモリアクセス）を行う場合には、仮想アドレスを利用する。これに対して、メモリの素子に付与されているアドレスが物理アドレスである。仮想記憶方式を採用するコンピュータは、仮想アドレスから物理アドレスへの変換を行うことを目的として、仮想アドレスと物理アドレスとを変換するアドレス変換対（ＴＴＥ（Translation  Table  Entry））を一覧表（以下、ページテーブルと呼ぶ）で記憶している。【０００４】
ところで、ページテーブルは、通常、メインメモリのＴＳＢ領域（Translation  Storage  Buffer領域）に記憶されているが、仮想アドレス（ＴＴＥ−Ｔａｇ）から物理アドレス（ＴＴＥ−Ｄａｔａ）への変換が必要になるたびに、メインメモリに記憶されているページテーブルをＣＰＵ（Central  Processing  Unit）が参照しに行くとすると、ＣＰＵからメインメモリへのアクセスは低速にならざるを得ないことから、変換に非常に多くの時間が費やされることになってしまう。これを避けることを目的として、通常、ＴＬＢ（Translation−Lookaside  Buffer：アドレス変換バッファ）と呼ばれるアドレス変換専用のキャッシュメモリがＣＰＵ内部に備えられており、ＴＬＢが、ＴＳＢ領域に記憶されているページテーブルの一部のアドレス変換対を記憶している。【０００５】
このような構成のもと、ＣＰＵは、メモリアクセスを行う際に、まず、ＴＬＢを検索する。ＴＬＢの検索に際し、ＣＰＵは、仮想アドレスとコンテキストＩＤ（プロセス毎に固有のＩＤ）とを用いる。これら２つについて、ＴＬＢの検索に用いた値とＴＬＢに記憶されている値とが一致した時、ＴＬＢにアドレス変換結果が存在しているとみなされ、ＣＰＵは、アドレス変換結果を取得する。所望のアドレスおよびコンテキストＩＤに対応したアドレス変換結果がＴＬＢに存在する時を、ＴＬＢヒットと呼び、存在しない時を、ＴＬＢミス（ＭＭＵ（Memory  Management  Unit）−ＭＩＳＳ）と呼ぶ。かかるＴＬＢミスが発生した場合、ＭＭＵ−ＭＩＳＳ−ＴＲＡＰが発生するので、ＣＰＵは、このＭＭＵ−ＭＩＳＳ−ＴＲＡＰの発生をＯＳに報告し、報告を受けたＯＳが、ＣＰＵに対して、トラップ処理を行う。【０００６】
ここで、特許文献１や２に開示されている従来技術（主に、トラップ処理関連）について、図７を用いて説明する。図７は、従来技術を説明するための図である。なお、ＣＰＵによるメモリアクセスの処理は、本来、処理の途中で複数の判断を伴って分岐して行われるものであるが、図７は、（Ａ）と（Ｂ）との違いを明確に説明する便宜上から、処理について判断を伴わない形で示し、また、通常のトラップ処理とそれ以外の処理とを区別せずに示すものである。また、図７において四角で囲んでいる部分は、（Ａ）と（Ｂ）とで共通の処理を示すものである。【０００７】
まず、図７の（Ａ）について説明すると、まず、ＣＰＵが、メモリアクセスを行う際に、ＯＳから指定された所定の仮想アドレスによるＴＬＢの検索に失敗（ＴＬＢミス）すると、ＣＰＵにおいて、ＭＭＵ−ＭＩＳＳ−ＴＲＡＰが発生する（（１）を参照）。すると、ＣＰＵは、ＭＭＵ−ＭＩＳＳ−ＴＲＡＰをＯＳに報告するので、ＯＳは、ＣＰＵに対して、トラップ処理を行う。具体的には、ＣＰＵは、ＭＭＵ−ＭＩＳＳ−ＴＲＡＰが発生した所定の仮想アドレスを、レジスタにセットする（（２）を参照）。続いて、ＣＰＵは、仮想アドレスに基づいて、当該仮想アドレスに対応するＴＳＢ仮想アドレスを生成する（（３）を参照）。ここで、ＴＳＢ仮想アドレスとは、当該仮想アドレスに関するアドレス変換対を記憶しているＴＳＢ領域上の仮想アドレスのことである。そして、ＣＰＵは、生成したＴＳＢ仮想アドレスを、レジスタにセットする（（４）を参照）。【０００８】
次に、ＣＰＵは、レジスタにセットした仮想アドレスおよびＴＳＢ仮想アドレスをレジスタから読み出す（（５）を参照）。続いて、ＣＰＵは、ＴＳＢ仮想アドレスと、当該ＴＳＢ仮想アドレスに対応するＴＳＢ物理アドレス（ＴＳＢポインタ）とのアドレス変換対を、ＴＬＢから検索する（（６）を参照）。そして、ＣＰＵは、ＴＬＢから検索されたＴＳＢ物理アドレスを用いて、まず、キャッシュメモリを検索する（（７）を参照）。【０００９】
ここでは、キャッシュメモリを検索した結果、アドレス変換対（仮想アドレスと物理アドレスとのアドレス変換対）が検索されない場合（キャッシュミスが発生した場合）を想定するので、次に、ＣＰＵは、ＴＬＢから検索されたＴＳＢ物理アドレスを用いて、メインメモリを検索する（（８）を参照）。そして、ＣＰＵは、メインメモリから該当するアドレス変換対を読み出し、キャッシュメモリに登録する（（９）を参照）。【００１０】
次に、ＣＰＵは、再度、ＴＳＢ仮想アドレスと、当該ＴＳＢ仮想アドレスに対応するＴＳＢ物理アドレスとのアドレス変換対を、ＴＬＢから検索する（（１０）を参照）。続いて、ＣＰＵは、ＴＬＢから検索されたＴＳＢ物理アドレスを用いて、キャッシュメモリを検索する（（１１）を参照）。ここでは、キャッシュメモリを検索した結果、アドレス変換対が検索されるはずであるので（（９）において、アドレス変換対をキャッシュメモリに登録しているので、キャッシュミスが発生することはない）、ＣＰＵは、キャッシュメモリからアドレス変換対を読み出して、ＴＬＢに登録する（（１２）を参照）。こうすることで、ＣＰＵが、ＴＬＢミスした所定の仮想アドレスによるＴＬＢの検索を再度行うと、今度は、ＴＬＢヒットすることになる。【００１１】
ところで、上記してきた（Ａ）の処理の手順を改めて検討すると、ＣＰＵは、（８）で発生したキャッシュミスを起因として、（１０）および（１１）の処理を再び行わなければならず、キャッシュミス時のペナルティ（遅延等）が非常に大きいものとなってしまう。このようなことから、特許文献１においては、図７の（Ｂ）の（７）に示すように、ＣＰＵが、通常のトラップ処理とは別に、ＴＬＢから検索されたＴＳＢ物理アドレスを用いてメインメモリを検索し、メインメモリからアドレス変換対を取得し、取得したアドレス変換対をキャッシュメモリにプリフェッチする手法を提案している。【００１２】
【特許文献１】特開２００７−１２２６６７号公報
【特許文献２】特開平７−２００４０９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
ところで、上記した従来技術では、以下に説明するように、ＴＬＢミス時のペナルティが依然として大きいという課題があった。すなわち、従来技術では、ＣＰＵが、仮想アドレスと物理アドレスとのアドレス変換対を、メインメモリ上のＴＳＢ領域から取得してキャッシュメモリにプリフェッチする処理自体に、依然として時間を要している。具体的に説明すると、従来技術では、ＣＰＵがアドレス変換対をＴＳＢ領域から取得するにあたり、ＴＳＢ物理アドレスをＴＬＢから検索しなければならないが、この検索に、時間を要しているのである。また、従来技術では、ＴＳＢ仮想アドレスの計算をしなければならないが、ＴＳＢ仮想アドレスの計算が煩雑なことから回路規模が大きくなり、実装コストが掛かってしまう。【００１４】
そこで、この発明は、上記した従来技術の課題を解決するためになされたものであり、ＴＬＢミス時のペナルティを低減することが可能な演算処理装置、演算処理プログラムおよび演算処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、仮想アドレスを物理アドレスに変換するアドレス変換対を記憶したＴＳＢ領域が格納された記憶手段にアクセスを行う演算処理装置であって、前記ＴＳＢ領域の一部を記憶するＴＬＢと、前記アドレス変換対を一時的に記憶するキャッシュメモリと、前記記憶手段に格納されたアドレス変換対の開始物理アドレスであるＴＳＢ基底物理アドレスを記憶するＴＳＢ基底物理アドレス記憶手段と、前記ＴＳＢ基底物理アドレスと変換対象の仮想アドレスに基づいて、当該アドレス変換対を前記ＴＳＢ領域から取得する際に用いられるＴＳＢポインタを算出するＴＳＢポインタ算出手段と、変換対象の仮想アドレスに対応するアドレス変換対が、前記ＴＬＢ又は前記キャッシュメモリから検索されない場合には、前記算出されたＴＳＢポインタを用いて、前記変換対象の仮想アドレスに対応するアドレス変換対を前記ＴＳＢ領域から取得して、前記キャッシュメモリに記憶させる変換対取得手段を備えたことを特徴とする。【００１６】
また、請求項２に係る発明は、前記変換対取得手段は、前記変換対象の仮想アドレスに対応するアドレス変換対が前記ＴＬＢから検索されない場合には、前記アドレス変換対が前記キャッシュメモリに記憶されているか否かをＯＳのトラップ処理により確認し、前記ＴＳＢポインタを用いて前記ＴＳＢ領域から取得した前記アドレス変換対象のアドレス変換対を、前記トラップ処理における前記確認よりも前に前記キャッシュメモリに記憶させることを特徴とする。【００１７】
また、請求項３に係る発明は、前記変換対取得手段は、前記変換対象の仮想アドレスが前記キャッシュメモリに記憶されていない場合には、前記アドレス変換対を前記ＴＳＢ領域から取得して前記キャッシュメモリに記憶した後に、前記ＴＬＢに登録することを特徴とする。【００１８】
また、請求項４に係る発明は、前記演算処理装置はさらに、前記ＴＳＢ領域からの前記アドレス変換対の取得を制御するレジスタ手段を有し、前記レジスタに格納された情報に基づいて、前記変換対取得手段による前記ＴＳＢ領域からのアドレス変換対の取得を制御することを特徴とする。【００１９】
また、請求項５に係る発明は、前記変換対取得手段は、前記演算処理内におけるハードウェアエラーが発生した場合には、前記変換対取得手段による前記ＴＳＢ領域からのアドレス変換対の取得を禁止することを特徴とする。【００２０】
また、請求項６に係る発明は、前記ＴＳＢ領域の一部を記憶するＴＬＢと、前記アドレス変換対を一時的に記憶するキャッシュメモリとを有するとともに、仮想アドレスを物理アドレスに変換するアドレス変換対を記憶したＴＳＢ領域が格納された記憶装置にアクセスを行う演算処理装置の演算処理方法であって、前記記憶装置に格納されたアドレス変換対の開始物理アドレスであるＴＳＢ基底物理アドレスを記憶するステップと、前記ＴＳＢ基底物理アドレスと変換対象の仮想アドレスに基づいて、当該アドレス変換対を前記ＴＳＢ領域から取得する際に用いられるＴＳＢポインタを算出するステップと、変換対象の仮想アドレスに対応するアドレス変換対が、前記ＴＬＢ又は前記キャッシュメモリから検索されない場合には、前記算出されたＴＳＢポインタを用いて、前記変換対象の仮想アドレスに対応するアドレス変換対を前記ＴＳＢ領域から取得して、前記キャッシュメモリに記憶させるステップを備えたことを特徴とする。【００２１】
また、請求項７に係る発明は、前記演算処理方法は、前記変換対象の仮想アドレスに対応するアドレス変換対が前記ＴＬＢから検索されない場合には、前記アドレス変換対が前記キャッシュメモリに記憶されているか否かをＯＳのトラップ処理により確認するステップと、前記ＴＳＢポインタを用いて前記ＴＳＢ領域から取得した前記アドレス変換対象のアドレス変換対を、前記トラップ処理における前記確認よりも前に前記キャッシュメモリに記憶させるステップを有することを特徴とする。【００２２】
また、請求項８に係る発明は、前記演算処理方法は、前記変換対象の仮想アドレスが前記キャッシュメモリに記憶されていない場合には、前記アドレス変換対を前記ＴＳＢ領域から取得して前記キャッシュメモリに記憶した後に、前記ＴＬＢに登録するステップを有することを特徴とする。【００２３】
また、請求項９に係る発明は、前記演算処理方法はさらに、前記ＴＳＢ領域からの前記アドレス変換対の取得を制御するレジスタを有し、前記レジスタに格納された情報に基づいて、前記ＴＳＢ領域からのアドレス変換対の取得を制御するステップを有することを特徴とする。【００２４】
また、請求項１０に係る発明は、前記変換対取得方法はさらには、前記演算処理内におけるハードウェアエラーが発生した場合には、前記ＴＳＢ領域からのアドレス変換対の取得を禁止するステップを有することを特徴とする。
【発明の効果】
【００２５】
本発明によれば、仮想アドレスを物理アドレスに変換するアドレス変換対を記憶したＴＳＢ領域が格納された記憶手段にアクセスを行う演算処理装置であって、ＴＳＢ領域の一部を記憶するＴＬＢと、アドレス変換対を一時的に記憶するキャッシュメモリと、記憶手段に格納されたアドレス変換対の開始物理アドレスであるＴＳＢ基底物理アドレスを記憶するＴＳＢ基底物理アドレス記憶手段とを備え、ＴＳＢ基底物理アドレスと変換対象の仮想アドレスに基づいて、アドレス変換対をＴＳＢ領域から取得する際に用いられるＴＳＢポインタを算出し、変換対象の仮想アドレスに対応するアドレス変換対が、ＴＬＢ又はキャッシュメモリから検索されない場合には、算出されたＴＳＢポインタを用いて、変換対象の仮想アドレスに対応するアドレス変換対をＴＳＢ領域から取得して、キャッシュメモリに記憶させるので、ＴＬＢミス時のペナルティを低減することが可能になる。
【図面の簡単な説明】
【００２６】
【図１】図１は、実施例１に係る演算処理装置の概要および特徴を説明するための図である。
【図２】図２は、実施例１に係る演算処理装置の構成を示すブロック図である。
【図３】図３は、ＴＳＢ−ＰＦ−ＲＥＧ（ＴＳＢ基底物理アドレス記憶部）を説明するための図である。
【図４】図４は、ＴＳＢポインタを導出する計算式を説明するための図である。
【図５】図５は、ＣＰＵの一般的な構成を示すブロック図である。
【図６】図６は、実施例１に係る演算処理装置の処理の手順を示すフローチャートである。
【図７】図７は、従来技術を説明するための図である。
【符号の説明】
【００２７】
１０  ＣＰＵ
１１  命令制御部
１２  演算部
１３  ＴＬＢ
１４  ＴＳＢ−ＰＦ−ＲＥＧ
１５  ＴＳＢプリフェッチ制御回路
１６  （Ｌ２）キャッシュ
２０  メインメモリ
２１  ＴＳＢ領域
１００  ＣＰＵ
２００  命令制御部
２５０  演算部
３００  ＴＬＢ（アドレス変換バッファ）
４００  Ｌ１命令ＴＡＧ
４５０  Ｌ１データＴＡＧ
５００  Ｌ１命令キャッシュ
５５０  Ｌ１データキャッシュ
６００  Ｌ２キャッシュ
７００  メインメモリ
【発明を実施するための最良の形態】
【００２８】
以下に添付図面を参照して、本実施例に係る演算処理装置、演算処理プログラムおよび演算処理方法の実施例を説明する。なお、以下では、実施例で用いる主要な用語、実施例１に係る演算処理装置の概要および特徴、実施例１に係る演算処理装置の構成、実施例１に係る演算処理装置による処理の手順、実施例１の効果を説明し、続いて、他の実施例について説明する。
【実施例１】
【００２９】
［用語の説明］
まず最初に、以下の実施例で用いる主要な用語を説明する。「仮想記憶方式」とは、外部記憶装置をメモリの待避領域として利用することで、コンピュータが実装しているメモリ容量よりも多くのメモリ容量がコンピュータに備えられているようにみせかける技術である。【００３０】
かかる「仮想記憶方式」では、「仮想アドレス（ＶＡ：Virtual  Address）」および「物理アドレス（ＰＡ：Physical  Address）」の２つのアドレスを利用する。アプリケーション側がメモリに対して読み書き（メモリアクセス）を行う場合には、「仮想アドレス」を利用する。これに対して、メモリの素子に付与されているアドレスが「物理アドレス」である。「仮想記憶方式」を採用するＣＰＵ（Central  Processing  Unit）は、「仮想アドレス」から「物理アドレス」への変換を行うことを目的として、「仮想アドレス」と「物理アドレス」とを変換するアドレス変換対（ＴＴＥ（Translation  Table  Entry））の一覧表（以下、ページテーブルと呼ぶ）を、メインメモリの「ＴＳＢ領域（Translation  Storage  Buffer領域）」に記憶している。【００３１】
ところで、「仮想アドレス」から「物理アドレス」への変換が必要になるたびに、「ＴＳＢ領域」に記憶されているページテーブルをＣＰＵが参照しに行くとすると、ＣＰＵからメインメモリへのアクセスは低速にならざるを得ないことから、変換に非常に多くの時間が費やされることになってしまう。これを避けることを目的として、通常、「ＴＬＢ（Translation−Lookaside  Buffer：アドレス変換バッファ）」と呼ばれるアドレス変換専用のキャッシュメモリがＣＰＵ内部に備えられており、「ＴＬＢ」が、「ＴＳＢ領域」に記憶されているページテーブルの一部のアドレス変換対を記憶している。【００３２】
ここで、アプリケーション側がメモリに対して読み書き（メモリアクセス）を行う場合について説明すると、まず、ＣＰＵが、ＯＳから所定の「仮想アドレス」を指定される。続いて、ＣＰＵは、ＯＳから指定された所定の「仮想アドレス」による「ＴＬＢ」の検索を行い、当該検索に失敗すると（ＴＬＢミスが発生すると）、トラップ処理として、当該所定の「仮想アドレス」に関するアドレス変換対（所定の「仮想アドレス」に対応づけられている「物理アドレス」とのアドレス変換対）が、「キャッシュメモリ」に記憶されているか否かを確認する。記憶されている場合には、記憶されているアドレス変換対を「ＴＬＢ」に登録し、記憶されていない場合には、アドレス変換対を「ＴＳＢ領域」から取得して一旦「キャッシュメモリ」に記憶させた後に、「ＴＬＢ」に登録する。こうすることで、ＣＰＵが、ＴＬＢミスした所定の「仮想アドレス」による「ＴＬＢ」の検索を再び行うと、今度は、当該検索に失敗しない（ＴＬＢヒットする）ことになる。【００３３】
このように、ＣＰＵは、ＴＬＢミスが発生した場合に、トラップ処理として、アドレス変換対を「ＴＬＢ」に登録しなければならないが、上記したように、様々な処理を経る必要があり、ＴＬＢミス時のペナルティ（遅延等）が大きくなってしまう。本実施例に係る演算処理装置は、このようなＴＬＢミス時のペナルティを低減するものである。【００３４】
［実施例１に係る演算処理装置の概要および特徴］
続いて、図１を用いて、実施例１に係る演算処理装置の概要および特徴を説明する。図１は、実施例１に係る演算処理装置の概要および特徴を説明するための図である。なお、実施例１に係る演算処理装置は、ＣＰＵに備えられる制御回路や命令制御部で実行されるプログラムとして実現されている。【００３５】
実施例１に係る演算処理装置は、ＴＳＢ領域をメインメモリが備え、ＴＬＢと（Ｌ２）キャッシュメモリとをＣＰＵが備えている構成の下、ＴＬＢの検索に失敗（ＴＬＢミス）すると、トラップ処理として、アドレス変換対が（Ｌ２）キャッシュメモリに記憶されているか否かを確認し、記憶されている場合には、記憶されているアドレス変換対をＴＬＢに登録し、記憶されていない場合には、アドレス変換対をＴＳＢ領域から取得してキャッシュメモリに記憶させた後にＴＬＢに登録することを概要とし、効果の観点において、ＴＬＢミス時のペナルティを低減することを主たる特徴とする。【００３６】
この主たる特徴について、構成の観点から簡単に説明すると、まず、実施例１に係る演算処理装置は、ＴＬＢの検索において指定された仮想アドレスに関するアドレス変換対のＴＳＢ基底物理アドレス（メインメモリに格納されたアドレス変換対の開始物理アドレス）を、ＯＳからのストア命令で記憶している（図１の（１）を参照）。具体的には、演算処理装置は、ＴＳＢ基底物理アドレスを、レジスタ（ＴＳＢ−ＰＦ−ＲＥＧ：TSB−PreFetch−REGister、特許請求の範囲に記載の「ＴＳＢ基底物理アドレス記憶手段」に対応する）に記憶している。【００３７】
このような構成のもと、ＴＬＢの検索に失敗（ＴＬＢミス）すると、演算処理装置は、ＴＳＢ−ＰＦ−ＲＥＧによって記憶されているＴＳＢ基底物理アドレスと、ＴＬＢの検索において指定された所定の仮想アドレスとを、所定の計算式に代入することで、ＴＳＢポインタ（所定の仮想アドレスに関するアドレス変換対をＴＳＢから取得する際に用いられるポインタ）を算出する（図１の（２）を参照）。具体的には、演算処理装置は、ＴＳＢプリフェッチ制御回路において、ＴＳＢポインタを算出する。【００３８】
続いて、演算処理装置は、導出されたＴＳＢポインタを利用してＴＳＢ領域からアドレス変換対を取得し、取得したアドレス変換対を、トラップ処理における確認（（Ｌ２）キャッシュメモリにアドレス変換対が記憶されているか否かの確認）よりも前に、（Ｌ２）キャッシュメモリに記憶させる（図１の（３）を参照）。【００３９】
すなわち、実施例１に係る演算処理装置は、ＴＬＢの検索に失敗（ＴＬＢミス）すると、上記したような処理とは別に通常のトラップ処理を行うが、図１の（４）に示すように、通常のトラップ処理として行われる「アドレス変換対が（Ｌ２）キャッシュメモリに記憶されているか否かの確認」は、（３）の後の処理として行われることになる。【００４０】
このようなことから、実施例１に係る演算処理装置は、ＴＬＢミス時のペナルティを低減することが可能になる。【００４１】
具体的に説明すると、実施例１に係る演算処理装置は、ＴＬＢミス時に、通常のトラップ処理と並行に（あるいは前に）アドレス変換対をプリフェッチして、トラップ処理における確認よりも前にアドレス変換対を（Ｌ２）キャッシュメモリに記憶させておくことで、トラップ処理の過程においてキャッシュミスを発生させない結果、メモリーレイテンシーを隠蔽し、トラップ処理を高速化することが可能になる。言い換えると、トラップ処理で、ＴＳＢへのメモリアクセスリクエストが行われた時には、必ずキャッシュヒットする結果、アドレス変換対を即座にＴＬＢに登録することが可能になる。【００４２】
また、実施例１に係る演算処理装置は、アドレス変換対をメインメモリ上のＴＳＢ領域から取得して（Ｌ２）キャッシュメモリにプリフェッチする処理において、ＴＳＢ物理アドレスをＴＬＢから検索する必要がなく、予めレジスタに記憶されているＴＳＢ基底物理アドレスと仮想アドレスとを利用するだけでよいことから、ＴＳＢ物理アドレスをＴＬＢから検索する処理の時間分を短縮する結果、ＴＬＢミス時のペナルティを低減することが可能になる。また、実施例１に係る演算処理装置は、ＴＳＢ物理アドレスの計算が簡素なことから、回路規模も小さくなり、実装コストも削減することが可能になる。【００４３】
［実施例１に係る演算処理装置の構成］
次に、図２〜５を用いて、実施例１に係る演算処理装置の構成を説明する。図２は、実施例１に係る演算処理装置の構成を示すブロック図であり、図３は、ＴＳＢ−ＰＦ−ＲＥＧ（ＴＳＢ基底物理アドレス記憶部）を説明するための図であり、図４は、ＴＳＢポインタを導出する計算式を説明するための図であり、図５は、ＣＰＵの一般的な構成を示すブロック図である。【００４４】
まず、図２を用いて、実施例１に係る演算処理装置の構成について説明する。実施例１に係る演算処理装置は、ＣＰＵ１０に備えられる制御回路や命令制御部で実行されるプログラムとして実現されている。なお、図２は、実施例１に係る演算処理装置の構成を説明する便宜上、ＣＰＵを構成する部の一部を抽出して例示するものにすぎない。したがって、図２は、本実施例に係る演算処理装置を構成する全ての部を示すものではない。【００４５】
ＣＰＵ１０は、本実施例に密接に関連するものとして、図２に示すように、命令制御部１１と、演算部１２と、ＴＬＢ１３と、ＴＳＢ−ＰＦ−ＲＥＧ１４と、ＴＳＢプリフェッチ制御回路１５と、（Ｌ２）キャッシュメモリ１６とから主に構成される。なお、メインメモリ２０は、記憶装置の一つとしてＣＰＵ１０の外部に備えられ、ＴＳＢ領域２１を備えている。【００４６】
ＴＬＢ１３は、ＴＳＢ領域２１に記憶されているページテーブルの一部のアドレス変換対を記憶している。具体的には、ＴＬＢ１３は、仮想アドレス（図２の「ＶＡ」）と物理アドレス（図２の「ＰＡ」）とのアドレス変換対を記憶している。また、ＴＬＢ１３は、図２に示すように、ＭＡＴＣＨ回路を備えている。ＭＡＴＣＨ回路は、命令制御部１１からＴＬＢ１３を検索する指示（図２の「ＴＬＢ検索」）を受け付けると、仮想アドレス（図２の「ＶＡ」）とコンテキストＩＤ（図２の「ｃｔｘｔ」）との２つについて、ＴＬＢ１３の検索に用いた値とＴＬＢ１３に記憶されている値とが一致するか否かを判定し、一致した時、ＴＬＢヒット（図２の「ＴＬＢ−ＨＩＴ」）とし、一致しない時を、ＴＬＢミス（図２の「ＴＬＢ−ＭＩＳＳ」）とする。【００４７】
ＴＳＢ−ＰＦ−ＲＥＧ１４は、所定の仮想アドレスに関するアドレス変換対のＴＳＢ基底物理アドレス（メインメモリ２０上に格納されたアドレス変換対の開始物理アドレス）を記憶している。具体的には、検索において指定された所定の仮想アドレス（図２の「アクセスＶＡ」）に関するアドレス変換対について、アドレス変換対を記憶しているメインメモリ２０上の物理アドレスの基底となる（開始物理アドレスである）ＴＳＢ基底物理基底アドレスを、ＯＳからのストア命令で予め記憶している。なお、ＴＳＢ−ＰＦ−ＲＥＧ１４は、特許請求の範囲に記載の「ＴＳＢ基底物理アドレス記憶手段」に対応する。【００４８】
ＴＳＢ−ＰＦ−ＲＥＧ１４の一例について説明すると、ＴＳＢ−ＰＦ−ＲＥＧ１４は、例えば、図３に示すように、スレッドごとの８本のレジスタとして用意される。「Context番号＝０用」が、主に「kernel  mode」用、「Context番号≠０用」が、主に「user  mode」用であり、各々、「命令」、「データ」ごとに２種類のＴＬＢ（1st／２nd）を指定することが可能である。また、ＴＳＢ−ＰＦ−ＲＥＧ１４は、ページサイズを指定することも可能である。【００４９】
ＴＳＢ−ＰＦ−ＲＥＧ１４には、例えば、以下に説明するようなフィールドを用意しておく。例えば、「TSB  base  in  physical」フィールドは、TSB  baseポインタを物理アドレスで指定するものである。また、「Valid」フィールドは、「valid  bit」が「１」の時、プリフェッチを行い、「０」の時、プリフェッチを行わないという選択を指定するものである。また、「page_size」フィールドは、ＴＳＢ領域２１のページサイズを指定するものである。また、「TSB_size」フィールドは、ＴＳＢ領域２１のエントリ数（512×2**TSB_size）を指定するものである。【００５０】
演算部１２は、演算を行うなどする。本実施例に密接に関連する点についてのみ説明すると、演算部１２は、通常のトラップ処理の他に、ＴＳＢ物理アドレスをＴＳＢ−ＰＦ−ＲＥＧ１４に記憶させる処理などをする。【００５１】
命令制御部１１は、ＯＳからの指示を受け付け、ＣＰＵ１０が行う処理の流れを制御するなどする。本実施例に密接に関連する点についてのみ説明すると、命令制御部１１は、通常のトラップ処理の他に、ＯＳから指定された所定の仮想アドレスによるＴＬＢ１３の検索処理や、ＴＳＢ基底物理アドレスをＴＳＢ−ＰＦ−ＲＥＧ１４に記憶させる処理や、ＴＳＢポインタを算出する処理や、ＴＳＢ領域２１から取得したアドレス変換対を（Ｌ２）キャッシュメモリ１６に記憶させる処理を制御するなどする。なお、命令制御部１１は、特許請求の範囲に記載の「ＴＳＢポインタ算出手段」や「変換対取得手段」に対応する機能を、後述するＴＳＢプリフェッチ制御回路１５などとともに実現する。【００５２】
以下に、ＴＳＢプリフェッチ制御回路１５の説明を兼ねて、命令制御部１１およびＴＳＢプリフェッチ制御回路１５による処理について、その手順を具体的に説明する。命令制御部１１は、メモリアクセスを行う際に、ＯＳから指定された所定の仮想アドレス（図２の「アクセスＶＡ」）を用いて、ＴＬＢ１３を検索する（図２の「ＴＬＢ検索」）。この検索に失敗（ＴＬＢミス）すると、命令制御部１１は、通常のトラップ処理の制御とは別に、ＴＬＢミスが発生したことを示すＴＬＢミス信号と、仮想アドレスと、コンテキスト番号とを、ＴＳＢプリフェッチ制御回路１５に送信する。【００５３】
ＴＳＢプリフェッチ制御回路１５は、命令制御部１１から、ＴＬＢミス信号と仮想アドレスとコンテキスト番号とを受信すると、コンテキスト番号の値と、命令ＴＬＢからの信号であるのか、データＴＬＢからの信号であるのかによって、読み出すＴＳＢ−ＰＦ−ＲＥＧ１４を選択する。また、ＴＳＢプリフェッチ制御回路１５は、２サイクル掛けて、ＴＳＢ−ＰＦ−ＲＥＧ１４から「1st-REG」と「2nd-REG」とを読み出し、それぞれに対してＴＳＢポインタ（ＴＳＢプリフェッチアドレス）を計算し、ＴＳＢプリフェッチリクエスト（アドレス変換対をＴＳＢ領域２１から取得するリクエスト、図２の「ＴＳＢ−ＰＦ−ＲＥＱ」）を発行する。【００５４】
ここで、「1st」や「2nd」とあるのは、ＴＬＢ１３の構造が、「1st-TLB」と「2nd-TLB」とに分かれていて、２種類のページサイズをサポートできるようになっていることに対応するものである。所望のＴＬＢエントリが、「1st-TLB」あるいは「2nd-TLB」のいずれであるかが不明であることから、ＴＳＢプリフェッチ制御回路１５は、ＴＳＢプリフェッチリクエストを両方に対して発行する。【００５５】
なお、ＴＳＢプリフェッチ制御回路１５は、選択されたＴＳＢ−ＰＦ−ＲＥＧ１４を読み出し、「valid  bit」が「０」の時は、ＴＳＢプリフェッチリクエストの発行を抑止する。また、ＴＳＢプリフェッチ制御回路１５は、アドレスパリティエラーやレジスタパリティエラー検出時も、ＴＳＢプリフェッチリクエストの発行を抑止する。【００５６】
このように、ＴＳＢプリフェッチ制御回路１５は、選択されたＴＳＢ−ＰＦ−ＲＥＧ１４を読み出した値と、命令制御部１１から送信されてきた仮想アドレスとを、所定の計算式に代入することで、ＴＳＢポインタを算出する。次に、ＴＳＢプリフェッチ制御回路１５は、算出したＴＳＢポインタを利用してＴＳＢプリフェッチリクエストを発行し、リクエスト信号とともに、算出されたＴＳＢポインタを送信する。そして、ＴＳＢプリフェッチ制御回路１５は、ＴＳＢポインタを利用してメインメモリ２０からアドレス変換対を取得し、取得したアドレス変換対を（Ｌ２）キャッシュメモリ１６に保持させる。【００５７】
ここで、計算式について具体的に例を挙げて説明すると、ＴＳＢプリフェッチ制御回路１５は、図４に示すような所定の計算式を用いて、ＴＳＢポインタを算出する。「TSB  pointer」は、ＴＳＢプリフェッチアドレスのことを意味し、「TSB_base」は、ＴＳＢ−ＰＦ−ＲＥＧ１４の「TSB  base  in  physical」フィールドを意味し、「Ｎ」は、「TSB_size」を意味し、「page_sz」は、TSBページサイズを意味し、「｜」は、bit  concat（文字列の連結）を意味する。【００５８】
なお、ＴＳＢプリフェッチ制御回路１５は、例えば、（Ｌ１）キャッシュメモリのプリフェッチ機能を有する制御回路など、既存の制御回路を流用することで実現してもよい。【００５９】
ところで、これまでは、実施例１に係る演算処理装置の構成の内、本実施例に密接に関連する部についてのみ詳細に説明してきたが、以下では、図５を用いて、一般的なＣＰＵの概要について説明する。なお、図５は、ＣＰＵの概要を説明する便宜上、ＣＰＵを構成する部の一部を抽出して例示するものにすぎない。したがって、図５は、本実施例に係る演算処理装置を構成する全ての部を示すものではなく、また、本実施例に係る演算処理装置が、図５に例示する全ての部を備えていなければならないものでもない。また、図５に示す（１）〜（６）の付番は、説明の便宜上から付与したものであり、処理の順番を示すものではない。【００６０】
ＣＰＵ１００は、一般的に、図５に示すように、命令制御部２００と、演算部２５０と、ＴＬＢ３００と、Ｌ１命令ＴＡＧ４００と、Ｌ１データＴＡＧ４５０と、Ｌ１命令キャッシュ５００と、Ｌ１データキャッシュ５５０と、Ｌ２キャッシュ６００とから主に構成される。【００６１】
このような構成のもと、ＣＰＵ１００は、コンピュータが備える記憶装置に記憶されている命令に従って演算を行い、演算結果に従って情報を処理する。ここで、「命令」とは、コンピュータを利用する利用者によってキーボードなどから入力されるコマンドや、開発者によってプログラミングされたプログラムの１行としてのコマンドなどのことを意味するものではない。このようなコマンドが、コンピュータにおいて、まず、コンピュータが理解することが可能な機械語に翻訳され、次に、コンピュータが認識することが可能な２進数に再構成され、続いて、ＣＰＵ１００が処理可能な最小単位に分割されると、ＣＰＵ１００が処理可能な「命令」となる。【００６２】
命令制御部２００は、ＣＰＵ１００が行う処理の流れを制御するなどする。具体的には、命令制御部２００は、ＣＰＵ１００において処理すべき「命令」を記憶装置から読み込み、解釈し、解釈結果を演算部２５０に送信するなどする（図５の（１）を参照）。一方、演算部２５０は、演算を行うなどする。具体的には、演算部２５０は、「命令」の対象となる「データ」を記憶装置から読み込み、命令制御部２００によって解釈された「命令」に従って演算し、演算結果を命令制御部２００に送信するなどする（図５の（１）を参照）。【００６３】
ところで、上記したように、命令制御部２００や演算部２５０は、「命令」や「データ」を記憶装置から読み込むものである。かかる記憶装置には、キャッシュメモリとして、１次（Level１）キャッシュ（以下、Ｌ１キャッシュ）や２次（Level２）キャッシュ（以下、Ｌ２キャッシュ）などがある。通常、これらのキャッシュメモリは、ＣＰＵ１００内部に階層構造で備えられる。図５に例示するＣＰＵ１００においては、Ｌ１キャッシュとして、命令専用のＬ１キャッシュであるＬ１命令キャッシュ５００と、データ専用のＬ１キャッシュであるＬ１データキャッシュ５５０とが備えられ、Ｌ２キャッシュとして、Ｌ２キャッシュ６００が備えられている。なお、メインメモリ７００は、ＣＰＵ１００を構成する部ではないが、記憶装置の一つとしてＣＰＵ１００の外部に備えられている。【００６４】
Ｌ１命令キャッシュ５００およびＬ１データキャッシュ５５０は、一般的に、ＣＰＵ１００と同じクロックで動作することが可能であり、命令制御部２００や演算部２５０からの要求に対して、高速に応答することが可能である（図５の（２）を参照）。しかしながら、Ｌ１命令キャッシュ５００およびＬ１データキャッシュ５５０の容量は、総計で３２Ｋ〜１２８ＫＢ程度のものが多く、多くの情報を記憶することができない。このため、Ｌ２キャッシュ６００が、Ｌ１命令キャッシュ５００およびＬ１データキャッシュ５５０に記憶することができない情報の内、利用頻度の少ない情報を記憶することになる（図５の（３）を参照）。なお、Ｌ２キャッシュ６００に記憶することができない情報については、メインメモリ７００に記憶される（図５の（４）を参照）。【００６５】
ここで、命令制御部２００や演算部２５０がメモリアクセス処理を開始する時について考えてみると、「命令」や「データ」は、メインメモリ７００上に存在しており、Ｌ１命令キャッシュ５００やＬ１データキャッシュ５５０、あるいはＬ２キャッシュ６００には、何も記憶されていないはずである。つまり、命令制御部２００や演算部２５０が「命令」や「データ」をメインメモリ７００から読み出そうとすることで、初めて、これらの「命令」や「データ」が、Ｌ１命令キャッシュ５００やＬ１データキャッシュ５５０、あるいはＬ２キャッシュ６００にロードされることになる。命令制御部２００や演算部２５０は、これ以降、低速なメインメモリ７００ではなく、高速なＬ１命令キャッシュ５００やＬ１データキャッシュ５５０、あるいはＬ２キャッシュ６００から、「命令」や「データ」を読み出すのである。【００６６】
言い換えると、命令制御部２００や演算部２５０が読み出そうとする「命令」や「データ」は、必ずしも、Ｌ１命令キャッシュ５００やＬ１データキャッシュ５５０に記憶されているとは限らない。このため、Ｌ１命令ＴＡＧ４００やＬ１データＴＡＧ４５０が、命令制御部２００や演算部２５０に利用されることになる。すなわち、Ｌ１命令キャッシュ５００やＬ１データキャッシュ５５０に「命令」や「データ」がロードされるのと同時に、Ｌ１命令ＴＡＧ４００やＬ１データＴＡＧ４５０には、これらの「命令」や「データ」がメインメモリ７００のどのアドレスに記憶されている「命令」や「データ」であるのかをあらわす数値がセットされている。したがって、命令制御部２００や演算部２５０は、「命令」や「データ」を読み出そうとする際に、まず、Ｌ１命令ＴＡＧ４００やＬ１データＴＡＧ４５０に対して問い合わせを行い、読み出そうとする「命令」や「データ」が、Ｌ１命令キャッシュ５００やＬ１データキャッシュ５５０に記憶されているか否かを確認する。【００６７】
もっとも、図５に例示するコンピュータにおいては、これまで説明してきたように、「仮想記憶方式」が適用されている。したがって、図５に示すように、命令制御部２００や演算部２５０が「命令」や「データ」を読み出す際には、まず、ＴＬＢ３００に対して、「仮想アドレス」を指定し（図５の（５）を参照）、ＴＬＢ３００が「物理アドレス」に変換した上で、Ｌ１命令ＴＡＧ４００やＬ１データＴＡＧ４５０に対して問い合わせを行うことになる（図５の（６）を参照）。【００６８】
以上が、一般的なＣＰＵの概要である。本実施例に係る演算処理装置は、図５に例示したＣＰＵ１００の一般的な部の他に、ＴＳＢ−ＰＦ−ＲＥＧ１４やＴＳＢプリフェッチ制御回路１５などを構成要素とし、命令制御部１１においてＴＳＢポインタの導出やアドレス変換対の取得を制御することで、ＴＳＢミス時のペナルティを低減するという効果を奏するものである。【００６９】
［実施例１に係る演算処理装置による処理の手順］
次に、図６を用いて、実施例１に係る演算処理装置による処理の手順を説明する。図６は、実施例１に係る演算処理装置の処理の手順を示すフローチャートである。なお、図６に示す処理の手順のうち、ステップＳ１０５〜Ｓ１１０の処理が、通常のトラップ処理である。これに対し、ステップＳ１０８およびステップＳ１０９が、本実施例に係る演算処理装置に特徴的な処理の手順であり、この手順が、通常のトラップ処理にフィードバックされていくことで、本実施例の効果を奏するものである。【００７０】
まず、実施例１における命令制御部１１は、メモリアクセスリクエストを受け付けたか否かを判定する（ステップＳ１０１）。メモリアクセスリクエストを受け付けていない場合には（ステップＳ１０１否定）、命令制御部１１は、メモリアクセスリクエストを受け付けたか否かを判定する処理に戻る。【００７１】
メモリアクセスリクエストを受け付けた場合には（ステップＳ１０１肯定）、命令制御部１１は、ＯＳから指定された所定の仮想アドレスによって、ＴＬＢ１３を検索する（ステップＳ１０２）。【００７２】
次に、命令制御部１１は、ＴＬＢ１３のＭＡＴＣＨ回路において判定された判定結果が、ＴＬＢミス（ＭＭＵ−ＭＩＳＳ）であるか否かを判定する（ステップＳ１０３）。ＴＬＢミスでない場合には（ステップＳ１０３否定）、命令制御部１１は、アドレス変換結果を用いてキャッシュメモリの検索その他の処理を実施し（ステップＳ１０４）、その後、処理を終了する。【００７３】
一方、ＴＬＢミスの場合には（ステップＳ１０３肯定）、命令制御部１１は、通常のトラップ処理を開始する。具体的には、命令制御部１１は、ＭＭＵ−ＭＩＳＳ−ＴＲＡＰが発生した所定の仮想アドレスをレジスタにセットし、続いて、当該仮想アドレスに基づいて、当該仮想アドレスに対応するＴＳＢ仮想アドレスを生成して、これをレジスタにセットし、その後、レジスタにセットした仮想アドレスおよびＴＳＢ仮想アドレスをレジスタから読み出す（ステップＳ１０５）。その後、命令制御部１１は、通常のトラップ処理として、ステップＳ１０６を実行している。【００７４】
ところで、本実施例に係る演算処理装置では、ＭＭＵ−ＭＩＳＳ−ＴＲＡＰをＯＳに報告するよりも前に（あるいは並行して）、ＴＳＢ−ＰＦ−ＲＥＧ１４に予め記憶していたＴＳＢ基底物理アドレスと、ＭＭＵ−ＭＩＳＳした仮想アドレスとからＴＳＢポインタを計算し、必要なアドレス変換対のプリフェッチを行い、アドレス変換対を（Ｌ２）キャッシュ上に用意しておくことで、トラップ処理でこのアドレス変換対を取得しようするときに、高速にアドレス変換対を供給できるようにする点に特徴がある。【００７５】
すなわち、図６に示すように、命令制御部１１は、ＴＬＢミスが発生すると（ステップＳ１０３肯定）、通常のトラップ処理とは別に、ＴＳＢプリフェッチを行う（ステップＳ１０８）。具体的には、命令制御部１１は、ＴＬＢミスが発生したことを示すＴＬＢミス信号と仮想アドレスとコンテキスト番号とを、ＴＳＢプリフェッチ制御回路１５に送信する。次に、ＴＳＢプリフェッチ制御回路１５は、ＴＳＢ−ＰＦ−ＲＥＧ１４を読み出し、読み出した値と、ＴＬＢ１３から送信されてきた仮想アドレスとを所定の計算式に代入することで、ＴＳＢポインタを算出する。そして、ＴＳＢプリフェッチ制御回路１５は、算出したＴＳＢポインタを利用してＴＳＢプリフェッチリクエストを発行し、リクエスト信号とともに、算出されたＴＳＢポインタを送信する（ステップＳ１０８）。【００７６】
そして、ＴＳＢプリフェッチ制御回路１５は、ＴＳＢポインタを利用してメインメモリ２０からアドレス変換対を取得し、取得したアドレス変換対を（Ｌ２）キャッシュメモリ１６に保持させる（ステップＳ１０９）。このように、ステップＳ１０９において（Ｌ２）キャッシュメモリ１６にアドレス変換対が保持されることから、通常のトラップ処理において、ＴＳＢ領域２１へのメモリアクセスが開始された際には（ステップＳ１０７）、必ずキャッシュヒットすることになる。【００７７】
［実施例１の効果］
上記してきたように、実施例１によれば、仮想アドレスを物理アドレスに変換するアドレス変換対を記憶したＴＳＢ領域が格納された記憶手段にアクセスを行う演算処理装置であって、ＴＳＢ領域の一部を記憶するＴＬＢと、アドレス変換対を一時的に記憶するキャッシュメモリと、記憶手段に格納されたアドレス変換対の開始物理アドレスであるＴＳＢ基底物理アドレスを記憶するＴＳＢ基底物理アドレス記憶手段とを備え、ＴＳＢ基底物理アドレスと変換対象の仮想アドレスに基づいて、アドレス変換対をＴＳＢ領域から取得する際に用いられるＴＳＢポインタを算出し、変換対象の仮想アドレスに対応するアドレス変換対が、ＴＬＢ又はキャッシュメモリから検索されない場合には、算出されたＴＳＢポインタを用いて、変換対象の仮想アドレスに対応するアドレス変換対をＴＳＢ領域から取得して、キャッシュメモリに記憶させるので、ＴＬＢミス時のペナルティを低減することが可能になる。【００７８】
具体的に説明すると、実施例１に係る演算処理装置は、ＴＬＢミス時に、通常のトラップ処理と並行に（あるいは前に）アドレス変換対をプリフェッチして、トラップ処理における確認よりも前にアドレス変換対を（Ｌ２）キャッシュメモリに記憶させておくことで、トラップ処理の過程においてキャッシュミスを発生させない結果、メモリーレイテンシーを隠蔽し、トラップ処理を高速化することが可能になる。言い換えると、トラップ処理で、ＴＳＢへのメモリアクセスリクエストが行われた時には、必ずキャッシュヒットする結果、アドレス変換対を即座にＴＬＢに登録することが可能になる。【００７９】
また、実施例１に係る演算処理装置は、アドレス変換対をメインメモリ上のＴＳＢ領域から取得して（Ｌ２）キャッシュメモリにプリフェッチする処理において、ＴＳＢ物理アドレスをＴＬＢから検索する必要がなく、予めレジスタに記憶されているＴＳＢ基底物理アドレスと仮想アドレスとを利用するだけでよいことから、ＴＳＢ物理アドレスをＴＬＢから検索する処理の時間分を短縮する結果、ＴＳＢミス時のペナルティを低減することが可能になる。また、実施例１に係る演算処理装置は、ＴＳＢ物理アドレスの計算が簡素なことから、回路規模も小さくなり、実装コストも削減することが可能になる。
【実施例２】
【００８０】
［他の実施例］
さて、これまで実施例１について説明したが、上述した実施例１以外にも、種々の異なる形態にて実施されてよいものである。【００８１】
［システム構成等］
上記文書中や図面中で示した処理手順や制御手順（図６など）、具体的名称（図２など）、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。【００８２】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示（図２など）の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。【００８３】
なお、本実施例で説明した演算処理方法は、あらかじめ用意されたプログラムをＣＰＵで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、ＣＰＵによって記録媒体から読み出されることによって実行することもできる。
【産業上の利用可能性】
【００８４】
以上のように、本実施例に係る演算処理装置、演算処理プログラムおよび演算処理方法は、仮想アドレスを物理アドレスに変換するアドレス変換対を記憶したＴＳＢ領域が格納された記憶手段にアクセスを行うことに有用であり、特に、ＴＬＢミス時のペナルティを低減することに適する。
【図１】
2008155825.tif 000003
【図２】
2008155825.tif 000004
【図３】
2008155825.tif 000005
【図４】
2008155825.tif 000006
【図５】
2008155825.tif 000007
【図６】
2008155825.tif 000008
【図７】
2008155825.tif 000009
【国際調査報告】
2008155825.tif 000010
2008155825.tif 000011
2008155825.tif 000012
2008155825.tif 000013