(57)【要約】【課題】スラッシング現象の発生を効率的に防止すること。【解決手段】仮想アドレス１０に係るコンテキストの情報を、コンテキストレジスタ１１の０ビット目から８ビット目までのビット列から取得し、取得されたコンテキストの情報と、仮想アドレス１０の２２ビット目から３０ビット目までのビット列の情報とに基づいて、仮想アドレス１０と実アドレスとの間のアドレス変換に係る情報を記憶する記憶位置を示すＴＬＢインデックスアドレスの値をハッシュ回路１３を用いて決定する。【選択図】        図１
2006040091.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶装置であって、
前記仮想アドレスに係るコンテキストの情報を取得する取得手段と、
前記取得手段により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定手段と、
を備えたことを特徴とするアドレス変換情報記憶装置。
【請求項２】
前記決定手段は、前記取得手段により取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて前記アドレス変換に係る情報を記憶する位置を決定することを特徴とする請求項１に記載のアドレス変換情報記憶装置。
【請求項３】
前記決定手段は、前記コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することを特徴とする請求項２に記載のアドレス変換情報記憶装置。
【請求項４】
前記決定手段は、前記コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することを特徴とする請求項３に記載のアドレス変換情報記憶装置。
【請求項５】
前記決定手段は、前記コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することを特徴とする請求項３に記載のアドレス変換情報記憶装置。
【請求項６】
前記決定手段は、前記仮想アドレスに含まれる複数のビット列と、前記コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することを特徴とする請求項３に記載のアドレス変換情報記憶装置。
【請求項７】
前記決定手段は、前記仮想アドレスに含まれるビット列と、該仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、前記コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することを特徴とする請求項６に記載のアドレス変換情報記憶装置。
【請求項８】
前記決定手段は、前記アドレス変換に係る情報が複数のプロセスにより共有される情報であるか否かを判定し、該アドレス変換に係る情報が共有される情報である場合に、該アドレス変換に係る情報を前記コンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないことを特徴とする請求項１〜７のいずれか１つに記載のアドレス変換情報記憶装置。
【請求項９】
前記決定手段は、前記コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、該アドレス変換に係る情報を連想メモリに記憶することを特徴とする請求項８に記載のアドレス変換情報記憶装置。
【請求項１０】
仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶方法であって、
前記仮想アドレスに係るコンテキストの情報を取得する取得工程と、
前記取得工程により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定工程と、
を含んだことを特徴とするアドレス変換情報記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶装置およびアドレス変換情報記憶方法に関し、特に、スラッシング現象の発生を効率的に防止することができるアドレス変換情報記憶装置およびアドレス変換情報記憶方法に関する。
【背景技術】
【０００２】
従来、コンピュータシステムが実際に有するメモリ空間（実記憶空間）よりも、大きなメモリ空間（仮想記憶空間）を仮想的に利用できるようにした仮想記憶方式が広く用いられている。実記憶空間と仮想記憶空間とは、ページと呼ばれるブロックに分けられている。
【０００３】
そして、仮想記憶空間における仮想ページの仮想アドレスと、実記憶空間における実ページの実アドレスとの間の対応関係は、ページテーブルと呼ばれる一覧表に記憶され、仮想アドレスを実アドレスに変換する際に参照される。
【０００４】
このページテーブルは、通常ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に記憶されるが、仮想アドレスを実アドレスに変換するたびにＲＡＭに記憶されたページテーブルを参照すると、変換をおこなうのに長い時間がかかってしまう。
【０００５】
このため、ＲＡＭより高速にアクセスできるＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）と呼ばれるキャッシュがＣＰＵ内に設置されている。そして、最近変換された仮想アドレスと実アドレスとの間の対応関係をＴＬＢに保持し、次回変換をおこなう際にそれを参照することにより、アドレスの変換処理を高速におこなえるようにしている。
【０００６】
このＴＬＢは、ＲＡＭとＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）の２つのメモリから構成されている。ＲＡＭで構成されるＴＬＢ（以下、ＴＬＢ−ＲＡＭと呼ぶ。）は、より多くのＴＬＢエントリを格納するために、連想度が１以上のセットアソシアティブ方式を採用している。
【０００７】
また、ＣＡＭで構成されるＴＬＢ（以下、ＴＬＢ−ＣＡＭと呼ぶ。）は、ＴＬＢ−ＲＡＭに記憶可能なページサイズの制限を回避し、さまざまなサイズのページを効率的に検索することができる。
【０００８】
ここで、このＴＬＢに格納されるＴＬＢエントリには、ページサイズと呼ばれるサイズが割り当てられており、このページサイズには、８ｋバイトページ、６４ｋバイトページ、５１２ｋバイトページおよび４Ｍバイトページの４種類がある。
【０００９】
ＴＬＢ−ＲＡＭは、構造上一種類のページサイズのＴＬＢエントリしか登録できないため、８ｋバイトページおよび４ＭバイトページのＴＬＢエントリを登録できるＲＡＭを２つ用意している。一方、ＴＬＢ−ＣＡＭは、すべてのページサイズのＴＬＢエントリを登録することができ、また、ロックエントリと呼ばれる特殊なＴＬＢエントリを登録することができる。
【００１０】
ＴＬＢは、要求された仮想アドレスの情報を記憶したＴＬＢエントリがなく、新たなＴＬＢエントリを追加する追加領域もない場合に、ＴＬＢエントリの入れ替えをおこなうが、ロックエントリとは、その入れ替えの対象から除外するよう設定されたＴＬＢエントリのことである。
【００１１】
【特許文献１】特開平３−２０８４７号公報
【特許文献２】特開平５−８１１３２号公報
【特許文献３】特開平１０−４９５４５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した従来技術では、複数のプログラムにより同一の仮想アドレスが用いられた場合に、複数のプログラムにより利用されるＴＬＢエントリが、ＴＬＢ−ＲＡＭの一部の領域（たとえば、先頭から４０メガバイトの領域）に集中することとなり、ＴＬＢエントリの登録場所を複数のプログラムが奪い合うスラッシング現象が発生するという問題があった。
【００１３】
すなわち、ＴＬＢ−ＲＡＭは、仮想アドレスの一部を、ＴＬＢエントリを格納するＴＬＢ−ＲＡＭをインデックスするインデックスアドレスとして用いるため、同一の仮想アドレスが複数のプログラムにより一斉に利用されると、ＴＬＢのヒット率が低下してしまうという問題があった。
【００１４】
この場合、ＴＬＢの連想度を増加させるとスラッシング現象の発生を緩和することができるが、ＴＬＢの連想度を増加させると回路が複雑になってしまうため、これを実現するのは困難である。
【００１５】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、スラッシング現象の発生を効率的に防止することができるアドレス変換情報記憶装置およびアドレス変換情報記憶方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、目的を達成するため、本発明は、仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶装置であって、前記仮想アドレスに係るコンテキストの情報を取得する取得手段と、前記取得手段により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定手段と、を備えたことを特徴とする。
【００１７】
また、本発明は、上記発明において、前記決定手段は、前記取得手段により取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて前記アドレス変換に係る情報を記憶する位置を決定することを特徴とする。
【００１８】
また、本発明は、上記発明において、前記決定手段は、前記コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することを特徴とする。
【００１９】
また、本発明は、上記発明において、前記決定手段は、前記コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することを特徴とする。
【００２０】
また、本発明は、上記発明において、前記決定手段は、前記コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することを特徴とする。
【００２１】
また、本発明は、上記発明において、前記決定手段は、前記仮想アドレスに含まれる複数のビット列と、前記コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することを特徴とする。
【００２２】
また、本発明は、上記発明において、前記決定手段は、前記仮想アドレスに含まれるビット列と、該仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、前記コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することを特徴とする。
【００２３】
また、本発明は、上記発明において、前記決定手段は、前記アドレス変換に係る情報が複数のプロセスにより共有される情報であるか否かを判定し、該アドレス変換に係る情報が共有される情報である場合に、該アドレス変換に係る情報を前記コンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないことを特徴とする。
【００２４】
また、本発明は、上記発明において、前記決定手段は、前記コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、該アドレス変換に係る情報を連想メモリに記憶することを特徴とする。
【００２５】
また、本発明は、上記発明において、前記決定手段により決定された前記アドレス変換に係る情報を記憶する位置の情報と前記コンテキストの情報とに基づいて、前記仮想アドレスのビット列を生成する生成手段をさらに備えたことを特徴とする。
【００２６】
また、本発明は、仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶方法であって、前記仮想アドレスに係るコンテキストの情報を取得する取得工程と、前記取得工程により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定工程と、を含んだことを特徴とする。
【００２７】
また、本発明は、上記発明において、前記決定工程は、前記取得工程により取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて前記アドレス変換に係る情報を記憶する位置を決定することを特徴とする。
【００２８】
また、本発明は、上記発明において、前記決定工程は、前記コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することを特徴とする。
【００２９】
また、本発明は、上記発明において、前記決定工程は、前記コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することを特徴とする。
【００３０】
また、本発明は、上記発明において、前記決定工程は、前記コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することを特徴とする。
【００３１】
また、本発明は、上記発明において、前記決定工程は、前記仮想アドレスに含まれる複数のビット列と、前記コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することを特徴とする。
【００３２】
また、本発明は、上記発明において、前記決定工程は、前記仮想アドレスに含まれるビット列と、該仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、前記コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することを特徴とする。
【００３３】
また、本発明は、上記発明において、前記決定工程は、前記アドレス変換に係る情報が複数のプロセスにより共有される情報であるか否かを判定し、該アドレス変換に係る情報が共有される情報である場合に、該アドレス変換に係る情報を前記コンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないことを特徴とする。
【００３４】
また、本発明は、上記発明において、前記決定工程は、前記コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、該アドレス変換に係る情報を連想メモリに記憶することを特徴とする。
【００３５】
また、本発明は、上記発明において、前記決定工程により決定された前記アドレス変換に係る情報を記憶する位置の情報と前記コンテキストの情報とに基づいて、前記仮想アドレスのビット列を生成する生成工程をさらに含んだことを特徴とする。
【発明の効果】
【００３６】
本発明によれば、仮想アドレスに係るコンテキストの情報を取得し、取得されたコンテキストの情報に基づいて、アドレス変換に係る情報を記憶する位置を決定することとしたので、プログラムにより変化するコンテキストの情報を用いて記憶位置を決定することにより、スラッシング現象の発生を効率的に防止することができるという効果を奏する。
【００３７】
また、本発明によれば、取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、アドレス変換に係る情報を記憶する位置を決定することとしたので、記憶位置の決定にハッシュ値を用いることにより、スラッシング現象の発生を効率的に防止することができるという効果を奏する。
【００３８】
また、本発明によれば、コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することとしたので、ハッシュ値の算出に仮想アドレスの情報を用いることにより、スラッシング現象の発生を効率的に防止することができるという効果を奏する。
【００３９】
また、本発明によれば、コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することとしたので、コンテキストの情報のビット列を反転することにより、ビット値が頻繁に変化するコンテキストの下位ビットが上位ビットとなるため、算出されるハッシュ値の上位ビットの変化が大きくなり、アドレス変換に係る情報を記憶する位置を効率的に分散させることができるという効果を奏する。
【００４０】
また、本発明によれば、コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することとしたので、コンテキストの情報のビット列を組み合わせることにより、アドレス変換に係る情報を記憶する位置を効率的に分散させることができるという効果を奏する。
【００４１】
また、本発明によれば、仮想アドレスに含まれる複数のビット列と、コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することとしたので、仮想アドレスに含まれる複数のビット列をハッシュ値の算出する際に用いることにより、アドレス変換に係る情報を記憶する位置を効率的に分散させることができるという効果を奏する。
【００４２】
また、本発明によれば、仮想アドレスに含まれるビット列と、仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することとしたので、仮想アドレスに含まれるビット列の一部を反転させてハッシュ値の算出に用いることにより、アドレス変換に係る情報を記憶する位置を効率的に分散させることができるという効果を奏する。
【００４３】
また、本発明によれば、アドレス変換に係る情報が複数のプロセスにより共有される情報であるか否かを判定し、アドレス変換に係る情報が共有される情報である場合に、アドレス変換に係る情報をコンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないこととしたので、アドレス変換に係る情報が共有される情報である場合に、コンテキストの情報に基づいて記憶位置を決定することにより生じる不具合を回避することができるという効果を奏する。
【００４４】
また、本発明によれば、コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、アドレス変換に係る情報を連想メモリに記憶することとしたので、共有されているアドレス変換に係る情報を容易に取り扱うことができ、アドレス変換に係る情報に高速にアクセスすることができるという効果を奏する。
【００４５】
また、本発明によれば、決定されたアドレス変換に係る情報を記憶する位置の情報と、コンテキストの情報とに基づいて、仮想アドレスのビット列を生成することとしたので、元の仮想アドレスのビット列をすべて記憶していなくとも、容易にそれを復元することができるという効果を奏する。
【発明を実施するための最良の形態】
【００４６】
以下に添付図面を参照して、本発明に係るアドレス変換情報記憶装置およびアドレス変換情報記憶方法の好適な実施例を詳細に説明する。
【実施例１】
【００４７】
まず、実施例１に係るアドレス変換情報記憶処理について説明する。図１は、実施例１に係るアドレス変換情報記憶処理を説明する説明図であり、図２は、図１に示したハッシュ回路１３の詳細を示す図である。ここでは、４ＭバイトページのＴＬＢエントリを５１２ライン、２ウェイ構成のＴＬＢ−ＲＡＭに登録する場合について説明する。
【００４８】
図１に示すように、このアドレス変換情報記憶処理では、６４ビットの仮想アドレス１０とコンテキストレジスタ１１に記憶されたコンテキストの値とに基づいて、仮想アドレス１０と物理アドレスとの間のアドレスの変換情報を記憶するＴＬＢ−ＲＡＭ１２内の記憶位置（ＴＬＢ−ＲＡＭインデックスアドレス）を決定し、決定された記憶位置にアドレスの変換情報を記憶する。
【００４９】
具体的には、コンテキストレジスタ１１の０ビット目から８ビット目までのビット列を反転し、反転したビット列の各値と、仮想アドレス１０の２２ビット目から３０ビット目まで（以降、仮想アドレス１０の２２ビット目から３０ビット目までの部分をインデックスと呼ぶ。）の各値とからハッシュ回路１３によりハッシュ値を算出し、算出されたハッシュ値をＴＬＢ−ＲＡＭインデックスアドレスとして用いる。
【００５０】
ここで、仮想アドレス１０の２２ビット目から３０ビット目までの各値は、従来技術において、４ＭバイトページのＴＬＢエントリを５１２ライン、２ウェイ構成のＴＬＢ−ＲＡＭに登録する場合に、ＴＬＢ−ＲＡＭインデックスアドレスとして用いられていたものである。
【００５１】
また、コンテキストとは、仮想アドレス１０を使用するプログラム、あるいは、プログラムにより用いられる仮想アドレス１０が属するアドレス空間ごとに与えられた識別子である。
【００５２】
たとえば、ＳＰＡＲＣ（Ｓｃａｌａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ，登録商標）アーキテクチャにおいては、図１に示したように、コンテキストは、現在使用しているアドレス空間に対応する、コンテキストレジスタ１１に記憶された値であり、メインフレームアーキテクチャにおいては、ＳＴＤ（Ｓｅｇｍｅｎｔ−ｔａｂｌｅ  Ｄｅｓｉｇｎａｔｉｏｎ）に格納されたＳＴＯ（Ｓｅｇｍｅｎｔ−ｔａｂｌｅ  Ｏｒｉｇｉｎ）の値である。
【００５３】
このコンテキストは、プログラムが切り替えられる場合に、プロセッサ外部のメモリに保存され、再度そのプログラムが実行される場合に、コンテキストレジスタ１１またはＳＴＤに復元される。
【００５４】
図２に示すように、図１に示したハッシュ回路１３は、複数のＥＯＲ（Ｅｘｃｌｕｓｉｖｅ  ＯＲ，排他的論理和）素子から構成されている。各ＥＯＲ素子は、仮想アドレス１０のビット値と、ビット列が反転されたコンテキストレジスタ１１のビット値との間の排他的論理和をハッシュ値として算出する。
【００５５】
すなわち、仮想アドレス１０の２２ビット目の値と、ビット列が反転されたコンテキストレジスタ１１の８ビット目の値との間の排他的論理和が算出され、ＴＬＢ−ＲＡＭインデックスアドレスを構成するビット列の最下位ビット（インデックスビット２２）にその値が設定される。
【００５６】
同様に、仮想アドレス１０の２３ビット目の値とコンテキストレジスタ１１の７ビット目の値、仮想アドレス１０の２４ビット目の値とコンテキストレジスタ１１の６ビット目の値、・・・、仮想アドレス１０の３０ビット目の値とコンテキストレジスタ１１の０ビット目の値との間の排他的論理和が算出され、それぞれＴＬＢ−ＲＡＭインデックスアドレスのインデックスビット２３からインデックスビット３０にそれらの値が設定される。
【００５７】
このように、プログラムが切り替えられるごとに変更となるコンテキストの値を用いてＴＬＢ−ＲＡＭインデックスアドレスを決定することにより、スラッシング現象の発生を効率的に防止することができる。
【００５８】
また、コンテキストレジスタ１１にはコンテキストの情報が下位のビットから順に記憶されていくため、コンテキストレジスタ１１のビット列を反転させて用いることにより、ビット値が頻繁に変化するコンテキストの下位ビットが上位ビットとなり、算出されるハッシュ値の上位ビットの変化が大きくなって、ＴＬＢインデックスアドレスの値を効率的に分散させることができるようになる。
【００５９】
つぎに、実施例１に係るプロセッサの機能的構成について説明する。図３は、実施例１に係るプロセッサ２０の機能的構成を示す図である。図３に示すように、このプロセッサ２０は、データが読み書きされるＲＡＭ３０と、バス４０を介して接続されている。
【００６０】
このプロセッサ２０は、演算ユニット２１、キャッシュ２２、バスインターフェース２３、コンテキストレジスタ２４、グローバルレジスタ２５、ハッシュ演算ユニット２６およびＴＬＢ２７を有する。
【００６１】
演算ユニット２１は、ＲＡＭ３０やキャッシュ２２からデータを読み取ってプログラムに記述された各命令を実行する。キャッシュ２２は、ＲＡＭ３０よりもアクセス速度が高速なメモリであり、演算ユニット２１がデータに高速にアクセスするために、ＲＡＭ３０から読み出されたデータを一時的に保存する。
【００６２】
バスインターフェース２３は、バス４０を介してＲＡＭ３０などとの間でデータの授受をおこなうインターフェースである。コンテキストレジスタ２４は、図１に示したコンテキストレジスタ１１に対応するものであり、実行されるプログラムごとに入れ替えられるコンテキストを記憶するレジスタである。グローバルレジスタは、仮想アドレスなどを記憶するレジスタである。
【００６３】
ハッシュ演算ユニット２６は、コンテキストレジスタ２４に記憶されたコンテキストのビット列を反転させ、反転されたビット列のビット値と、仮想アドレスのビット値との間の排他的論理和をハッシュ値として算出する。
【００６４】
また、ハッシュ演算ユニット２６は、ＴＬＢ−ＲＡＭ２７ａに登録されたＴＬＢエントリの情報から、仮想アドレスの情報を再生成する。たとえば、仮想アドレスをＴＬＢ−ＲＡＭ２７ａに記憶した場合、記憶された仮想アドレスのインデックスの部分は、ＴＬＢエントリの内容が読み出される場合にのみ参照される。
【００６５】
そこで、ＴＬＢ−ＲＡＭ２７ａに仮想アドレスの情報を記憶するのに必要な記憶領域を削減するため、仮想アドレスのインデックスの部分のビット値をＴＬＢ−ＲＡＭ２７ａに記憶せず、ハッシュ演算ユニット２６は、インデックスの部分のビット値を演算により算出する。
【００６６】
図４は、仮想アドレスのインデックス部分のビット値を算出する処理について説明する図である。図４の例では、ＴＬＢエントリが８ｋバイトのページサイズである場合を示しており、この場合、仮想アドレスの１３ビット目から２１ビット目までのビット列が、ＴＬＢ−ＲＡＭインデックスアドレスを生成する際に参照されるインデックスの部分となる。
【００６７】
図４に示すように、まず、ハッシュ演算ユニット２６は、ＴＬＢ−ＲＡＭ２７ａからＴＬＢ登録アドレス５０の情報を取得する。ここで、ＴＬＢ登録アドレス５０とは、ＴＬＢ−ＲＡＭ１２に登録された仮想アドレスの情報であり、元の仮想アドレスのインデックスの部分である１３ビット目から２１ビット目までのビット列が、ハッシュ演算により算出されたＴＬＢ−ＲＡＭインデックスアドレス５１で置き換えられたものである。
【００６８】
そして、ハッシュ演算ユニット２６は、コンテキストレジスタ１１から０ビット目から８ビット目までのビット列を取得し、取得したビット列を反転させて、ＴＬＢ−ＲＡＭインデックスアドレス５１との間の排他的論理和をハッシュ回路１３を用いて算出する。
【００６９】
算出された排他的論理和は、元の仮想アドレスのインデックス部分と一致するため、ＴＬＢ登録アドレス５０の１３ビット目から２１ビット目までのビット列を算出された排他的論理和のビット列で置き換えることにより、元の仮想アドレス５２が再構成される。
【００７０】
このように、元の仮想アドレスのインデックスの部分をＴＬＢ−ＲＡＭ１２に記憶していなくとも、ＴＬＢ−ＲＡＭインデックスアドレス５１とコンテキストの情報とから元の仮想アドレスを再構成でき、ＳＰＡＲＣ（登録商標）アーキテクチャにおいて、ＴＬＢーＲＡＭ１２からＴＬＢエントリを読み出す命令と同等の処理を実現することができる。
【００７１】
ＴＬＢ２７は、仮想アドレスを物理アドレスに変換する。具体的には、ＴＬＢ２７は、ＴＬＢエントリに、仮想アドレスと、それに対応する物理アドレスとを対応付けたアドレスの変換情報を記憶する。
【００７２】
このＴＬＢ２７は、ＴＬＢ−ＲＡＭ２７ａと、ＴＬＢ−ＣＡＭ２７ｂを有する。ＴＬＢ−ＲＡＭ２７ａは、図１に示したＴＬＢ−ＲＡＭ１２に対応するものであり、ＴＬＢ−ＲＡＭインデックスアドレスにより指定されたＴＬＢエントリにアドレスの変換情報を記憶するＲＡＭである。ＴＬＢ−ＣＡＭ２７ｂは、記憶している多数のデータの内容と、入力されたデータの内容とを並列に比較して、データを検索することができる連想メモリである。
【００７３】
ＴＬＢ２７は、ＴＬＢ−ＲＡＭ２７ａに記憶するＴＬＢエントリがロックエントリである場合、あるいは、ＴＬＢエントリのページサイズがＴＬＢ−ＲＡＭ２７ａに格納可能なサイズでない場合には、そのＴＬＢエントリをＴＬＢ−ＣＡＭ２７ｂに記憶する。
【００７４】
また、ＴＬＢ２７は、ＴＬＢエントリがグローバルエントリである場合に、そのＴＬＢエントリをＴＬＢ−ＣＡＭ２７ｂに記憶する。ここで、グローバルエントリとは、複数のプロセスにより使用されるアドレス空間で共有されるエントリである。
【００７５】
たとえば、ＳＰＡＲＣ（登録商標）アーキテクチャでは、ＴＬＢエントリに含まれるグローバルビットが有効に設定されているエントリであり、メインフレームアーキテクチャでは、コモンセグメントに該当するものである。
【００７６】
ＴＬＢ−ＲＡＭ２７ａに記憶するＴＬＢエントリが、グローバルエントリである場合には、記憶されたＴＬＢエントリをＴＬＢ−ＲＡＭ２７ａから検索する検索処理や、ＴＬＢエントリをＴＬＢ−ＲＡＭ２７ａから削除するデマップ処理を実行することが困難になる。
【００７７】
具体的には、ＴＬＢ−ＲＡＭ２７ａに登録されているＴＬＢエントリの中からあるＴＬＢエントリを探し出す際、ＴＬＢエントリがグローバルエントリでない場合には、ＴＬＢ２７は、仮想アドレスの情報とコンテキストの情報とからＴＬＢエントリが登録されている位置を一度で特定することができる。
【００７８】
しかし、ＴＬＢエントリがグローバルエントリである場合には、ＴＬＢ２７は、コンテキストの情報を参照しないので、ＴＬＢエントリが登録されている位置を一度に特定することができず、ＴＬＢ−ＲＡＭ２７ａに登録されているＴＬＢエントリの中からあるＴＬＢエントリを探し出すのに１つ１つＴＬＢエントリを調べる必要が生じ、ＴＬＢの性能が低下してしまう。
【００７９】
そのため、ＴＬＢエントリがグローバルエントリである場合には、ＴＬＢ２７は、そのＴＬＢエントリをＴＬＢ−ＣＡＭ２７ｂに記憶し、一度にＴＬＢエントリの検索処理および削除処理がおこなえるようにする。
【００８０】
つぎに、実施例１に係るＴＬＢエントリの記憶処理の処理手順について説明する。図５は、実施例１に係るＴＬＢエントリの記憶処理の処理手順を示すフローチャートである。まず、ＴＬＢ２７は、ＴＬＢ−ＲＡＭ２７ａに記憶するＴＬＢエントリの情報を取得する（ステップＳ１０１）。
【００８１】
そして、ＴＬＢ２７は、ＴＬＢエントリがロックエントリであるか否かを、ＴＬＢエントリ内に含まれるロックビットが有効に設定されているか否かを調べることにより判定する（ステップＳ１０２）。
【００８２】
ＴＬＢエントリがロックエントリである場合には（ステップＳ１０２，Ｙｅｓ）、ＴＬＢ２７は、そのＴＬＢエントリをＴＬＢ−ＣＡＭ２７ｂに記憶し（ステップＳ１０７）、このＴＬＢエントリの記憶処理を終了する。
【００８３】
ＴＬＢエントリがロックエントリでない場合には（ステップＳ１０２，Ｎｏ）、ＴＬＢ２７は、ＴＬＢエントリのページサイズがＴＬＢ−ＲＡＭ２７ａに格納可能なサイズか否かを調べる（ステップＳ１０３）。
【００８４】
そして、ＴＬＢエントリのページサイズがＴＬＢ−ＲＡＭ２７ａに格納可能なサイズでない場合は（ステップＳ１０３，Ｎｏ）、ＴＬＢ２７は、ステップＳ１０７に移行して、そのＴＬＢエントリをＴＬＢ−ＣＡＭ２７ｂに記憶する。
【００８５】
ＴＬＢエントリのページサイズがＴＬＢ−ＲＡＭ２７ａに格納可能なサイズである場合は（ステップＳ１０３，Ｙｅｓ）、ＴＬＢ２７は、ＴＬＢエントリがグローバルエントリであるか否かを、ＴＬＢエントリ内に含まれるグローバルビットが有効に設定されているか否かを調べることにより判定する（ステップＳ１０４）。
【００８６】
グローバルビットが有効である場合には（ステップＳ１０４，Ｙｅｓ）、ＴＬＢ２７は、ステップＳ１０７に移行して、そのＴＬＢエントリをＴＬＢ−ＣＡＭ２７ｂに記憶する。
【００８７】
グローバルビットが有効でない場合には（ステップＳ１０４，Ｎｏ）、ハッシュ演算ユニット２６は、図１および図２で説明したように、仮想アドレスの情報とビット列を反転させたコンテキストの情報とを基にしてハッシュ値を算出する（ステップＳ１０５）。
【００８８】
その後、ＴＬＢ２７は、算出されたハッシュ値をＴＬＢインデックスアドレスとして用い、ＴＬＢインデックスアドレスにより示されるＴＬＢ−ＲＡＭ２７ａの記憶位置にＴＬＢエントリを記憶して（ステップＳ１０６）、このＴＬＢエントリの記憶処理を終了する。
【００８９】
上述してきたように、本実施例１では、ハッシュ演算ユニット２６が、仮想アドレスに係るコンテキストの情報を取得し、取得されたコンテキストの情報に基づいて、仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶する位置を示すＴＬＢインデックスアドレスを決定することとしたので、プログラムにより変化するコンテキストの情報を用いてＴＬＢインデックスアドレスを決定することにより、スラッシング現象の発生を効率的に防止することができる。
【００９０】
また、本実施例１では、ハッシュ演算ユニット２６が、取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、ＴＬＢインデックスアドレスを決定することとしたので、ＴＬＢインデックスアドレスの決定にハッシュ値を用いることにより、スラッシング現象の発生を効率的に防止することができる
【００９１】
また、本実施例１では、ハッシュ演算ユニット２６が、コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することとしたので、ハッシュ値の算出に仮想アドレスの情報を用いることにより、スラッシング現象の発生を効率的に防止することができる。
【００９２】
また、本実施例１では、ハッシュ演算ユニット２６が、コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することとしたので、コンテキストの情報のビット列を反転することにより、ビット値が頻繁に変化するコンテキストの下位ビットが上位ビットとなるため、算出されるハッシュ値の上位ビットの変化が大きくなり、ＴＬＢインデックスアドレスの値を効率的に分散させることができる。
【００９３】
また、実施例１では、ＴＬＢ２７が、アドレス変換に係る情報が複数のプロセスにより共有される情報であるか否かを判定し、アドレス変換に係る情報が共有される情報である場合に、アドレス変換に係る情報をコンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないこととしたので、アドレス変換に係る情報が共有される情報である場合に、コンテキストの情報に基づいて記憶位置を決定することにより生じる不具合を回避することができる。
【００９４】
また、実施例１では、ＴＬＢ２７が、コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、アドレス変換に係る情報をＴＬＢ−ＣＡＭ２７ｂに記憶することとしたので、共有されているアドレス変換に係る情報を容易に取り扱うことができ、アドレス変換に係る情報に高速にアクセスすることができる。
【００９５】
また、実施例１では、ハッシュ演算ユニット２６が、決定されたＴＬＢインデックスアドレスの情報と、コンテキストの情報とに基づいて、仮想アドレスのビット列を生成することとしたので、元の仮想アドレスのビット列のすべてを記憶していなくとも、容易にそれを復元することができる。
【実施例２】
【００９６】
ところで、上記実施例１では、６４ビットの仮想アドレスの２２ビット目から３０ビット目までの各ビット値をインデックスとして取り出し、取り出したインデックスのビット値とコンテキストレジスタのビット値とからＴＬＢ−ＲＡＭインデックスアドレスを算出することとしたが、仮想アドレスの他の部分のビット値をさらに利用して、ＴＬＢ−ＲＡＭインデックスアドレスを算出することとしてもよい。そこで、実施例２では、ＴＬＢ−ＲＡＭインデックスアドレスの算出に仮想アドレスの他の部分をさらに利用する場合について説明する。
【００９７】
図６は、実施例２に係るアドレス変換情報記憶処理を説明する説明図である。図６に示すように、このアドレス変換情報記憶処理では、ＴＬＢ−ＲＡＭインデックスアドレスを算出する場合に、仮想アドレス６０から２つのビット列を抽出する。
【００９８】
そして、抽出した２つのビット列の値と、コンテキストレジスタ６１に記憶されたコンテキストの値とに基づいて、ＴＬＢ−ＲＡＭ６２に仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する記憶位置を示すＴＬＢ−ＲＡＭインデックスアドレスを算出し、ＴＬＢ−ＲＡＭインデックスアドレスにより示される記憶位置にアドレスの変換情報を記憶する。
【００９９】
具体的には、図３に示したハッシュ演算ユニット２６が、仮想アドレス６０の２２ビット目から３０ビット目までのビット列の値をインデックスとして取得し、また、仮想アドレス６０の３１ビット目から３９ビット目までのビット列の値を仮想アドレスＡとして取得する。さらに、ハッシュ演算ユニット２６は、コンテキストレジスタ６１の０ビット目から８ビット目までのビット列の値を取得する。
【０１００】
そして、ハッシュ演算ユニット２６は、仮想アドレス６０から取得した仮想アドレスＡのビット列を反転して仮想アドレスＢを生成し、また、コンテキストレジスタ６１から取得したビット列を反転してコンテキストＡを生成する。
【０１０１】
続いて、ハッシュ演算ユニット２６は、インデックス、仮想アドレスＢおよびコンテキストＡの３つのビット列の下位ビットから順に番号を割り当てた場合に、同一の番号となる３つのビット値の組の排他的論理和をハッシュ回路６３を用いて算出し、ハッシュ値のビット列を生成する。
【０１０２】
ここで、ハッシュ回路６３は、入力された３つのビット値の排他的論理和を出力するＥＯＲ回路である。この場合、インデックス、仮想アドレスＢおよびコンテキストＡは、９ビットのビット列であるため、ハッシュ回路６３により９ビットの排他的論理和のビット列が出力される。
【０１０３】
そして、図３に示したＴＬＢ２７は、ハッシュ演算ユニット２６により出力されたビット列をＴＬＢ−ＲＡＭインデックスアドレスとして用い、ＴＬＢ−ＲＡＭインデックスアドレスにより示されるＴＬＢ−ＲＡＭ６２の記憶位置に仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する。
【０１０４】
上述してきたように、本実施例２では、ハッシュ演算ユニット２６が、仮想アドレス６０に含まれる複数のビット列（インデックスおよび仮想アドレスＡ）と、コンテキストの情報のビット列を反転したビット列（コンテキストＡ）とに基づいてハッシュ値を算出することとしたので、仮想アドレス６０に含まれる複数のビット列（インデックスおよび仮想アドレスＡ）をハッシュ値の算出する際に用いることにより、ＴＬＢ−ＲＡＭインデックスアドレスの値を効率的に分散させることができる。
【０１０５】
また、本実施例２では、ハッシュ演算ユニット２６が、仮想アドレス６０に含まれるビット列（インデックス）と、仮想アドレス６０に含まれるビット列を反転したビット列（仮想アドレスＢ）と、コンテキストの情報のビット列を反転したビット列（コンテキストＡ）との間の排他的論理和からハッシュ値を算出することとしたので、仮想アドレス６０に含まれるビット列の一部を反転させてハッシュ値の算出に用いることにより、ＴＬＢ−ＲＡＭインデックスアドレスの値を効率的に分散させることができる。
【実施例３】
【０１０６】
ところで、上記実施例２では、６４ビットの仮想アドレスから２つのビット列を抽出し、抽出された２つのビット列と、コンテキストレジスタから取得したビット列とを用いてＴＬＢ−ＲＡＭインデックスアドレスを算出することとしたが、仮想アドレスから３つ以上のビット列を抽出して、ＴＬＢ−ＲＡＭインデックスアドレスを算出することとしてもよい。そこで、実施例３では、仮想アドレスから３つ以上のビット列を抽出して、ＴＬＢ−ＲＡＭインデックスアドレスを算出する場合について説明する。
【０１０７】
図７は、実施例３に係るアドレス変換情報記憶処理を説明する説明図である。図７に示すように、このアドレス変換情報記憶処理では、ＴＬＢ−ＲＡＭインデックスアドレスを算出する場合に、仮想アドレス７０から６つのビット列を抽出する。
【０１０８】
そして、抽出した６つのビット列の値と、コンテキストレジスタ（図示せず）に記憶されたコンテキストの値とに基づいて、仮想アドレスと物理アドレスとの間のアドレスの変換情報をＴＬＢ−ＲＡＭ７１に記憶する記憶位置を示すＴＬＢ−ＲＡＭインデックスアドレスを算出し、ＴＬＢ−ＲＡＭインデックスアドレスにより示される記憶位置にアドレスの変換情報を記憶する。
【０１０９】
具体的には、図３に示したハッシュ演算ユニット２６が、仮想アドレス７０の１３ビット目から２１ビット目までのビット列の値をインデックスとして取得し、また、仮想アドレス７０の２２ビット目から３０ビット目までのビット列の値、３１ビット目から３９ビット目までのビット列の値、４０ビット目から４８ビット目までのビット列の値、４９ビット目から５７ビット目までのビット列の値、５８ビット目から６３ビット目までのビット列の値を、仮想アドレスＣ、仮想アドレスＥ、仮想アドレスＧ、仮想アドレスＩ、仮想アドレスＫとしてそれぞれ取得する。
【０１１０】
そして、ハッシュ演算ユニット２６は、仮想アドレス７０から取得した仮想アドレスＣ、仮想アドレスＥ、仮想アドレスＧ、仮想アドレスＩ、仮想アドレスＫのビット列を反転して仮想アドレスＤ、仮想アドレスＦ、仮想アドレスＨ、仮想アドレスＪ、仮想アドレスＬをそれぞれ生成する。
【０１１１】
また、ハッシュ演算ユニット２６は、コンテキストレジスタの０ビット目から８ビット目までのビット列の値を取得する。そして、ハッシュ演算ユニット２６は、コンテキストレジスタから取得したビット列を反転してコンテキストＡを生成する。
【０１１２】
続いて、ハッシュ演算ユニット２６は、インデックス、仮想アドレスＤ、仮想アドレスＦ、仮想アドレスＨ、仮想アドレスＪ、仮想アドレスＬおよびコンテキストＡの７つのビット列の下位ビットから順に番号を割り当てた場合に、同一の番号となる７つのビット値の組の排他的論理和を、ハッシュ回路７２を用いて算出し、ハッシュ値のビット列を生成する。
【０１１３】
ここで、ハッシュ回路７２は、入力された７つのビット値の排他的論理和を出力するＥＯＲ回路である。この場合、インデックス、仮想アドレスＤ、仮想アドレスＦ、仮想アドレスＨ、仮想アドレスＪ、仮想アドレスＬおよびコンテキストＡは、それぞれ９ビットのビット列であるため、ハッシュ回路７２により９ビットの排他的論理和のビット列が出力される。
【０１１４】
そして、図３に示したＴＬＢ２７は、ハッシュ演算ユニット２６により出力されたビット列をＴＬＢ−ＲＡＭインデックスアドレスとして用い、ＴＬＢ−ＲＡＭインデックスアドレスにより示されるＴＬＢ−ＲＡＭ７１の記憶位置に仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する。
【０１１５】
上述してきたように、本実施例３では、ハッシュ演算ユニット２６が、仮想アドレス７０に含まれる複数のビット列（インデックス、仮想アドレスＣ、仮想アドレスＥ、仮想アドレスＧ、仮想アドレスＩおよび仮想アドレスＫ）と、コンテキストの情報のビット列を反転したビット列（コンテキストＡ）とに基づいてハッシュ値を算出することとしたので、仮想アドレス６０に含まれる複数のビット列（インデックス、仮想アドレスＣ、仮想アドレスＥ、仮想アドレスＧ、仮想アドレスＩおよび仮想アドレスＫ）をハッシュ値の算出する際に用いることにより、ＴＬＢ−ＲＡＭインデックスアドレスの値を効率的に分散させることができる。
【０１１６】
また、本実施例３では、ハッシュ演算ユニット２６が、仮想アドレス７０に含まれるビット列（インデックス）と、仮想アドレス７０に含まれるビット列を反転した複数のビット列（仮想アドレスＤ、仮想アドレスＦ、仮想アドレスＨ、仮想アドレスＪおよび仮想アドレスＬ）と、コンテキストの情報のビット列を反転したビット列（コンテキストＡ）との間の排他的論理和からハッシュ値を算出することとしたので、仮想アドレス７０に含まれるビット列の一部を反転させてハッシュ値の算出に用いることにより、ＴＬＢ−ＲＡＭインデックスアドレスの値を効率的に分散させることができる。
【実施例４】
【０１１７】
ところで、上記実施例１から３では、コンテキストレジスタの一部のビット列と、仮想アドレスのビット列とを用いてＴＬＢ−ＲＡＭインデックスアドレスを算出することとしたが、コンテキストレジスタから複数のビット列を抽出して、ＴＬＢ−ＲＡＭインデックスアドレスを算出することとしてもよい。そこで、実施例４では、コンテキストレジスタから複数のビット列を抽出して、ＴＬＢ−ＲＡＭインデックスアドレスを算出する場合について説明する。
【０１１８】
図８は、実施例４に係るアドレス変換情報記憶処理を説明する説明図である。図８に示すように、このアドレス変換情報記憶処理では、ＴＬＢ−ＲＡＭインデックスアドレスを算出する場合に、コンテキストレジスタ８０から２つのビット列を抽出する。
【０１１９】
そして、抽出した２つのビット列の値と、仮想アドレスのビット列の値とに基づいて、仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する記憶位置を示すＴＬＢ−ＲＡＭインデックスアドレスを算出し、ＴＬＢ−ＲＡＭインデックスアドレスにより示される記憶位置にアドレスの変換情報を記憶する。
【０１２０】
具体的には、図３に示したハッシュ演算ユニット２６が、コンテキストレジスタ８０の０ビット目から８ビット目までのビット列の値を取得し、そのビット列を反転させてコンテキストＡを生成する。
【０１２１】
また、ハッシュ演算ユニット２６は、コンテキストレジスタ８０の９ビット目から１２ビット目までのビット列の値を取得し、コンテキストＡの上位４ビットとの間の排他的論理和を算出する。
【０１２２】
具体的には、ハッシュ演算ユニット２６は、コンテキストレジスタ８０の９ビット目から１２ビット目までのビット列およびコンテキストＡの上位４ビットに下位のビットから順に番号を割り当てた場合に、同一の番号となる４つのビット値の組の排他的論理和をＥＯＲ回路８２を用いて算出し、４ビットのビット列を生成する。さらに、ハッシュ演算ユニット２６は、生成された４ビットのビット列と、コンテキストＡの下位４ビットとを結合し、コンテキストＢを生成する。
【０１２３】
また、ハッシュ演算ユニット２６は、図６に示したように、仮想アドレスの２２ビット目から３０ビット目までのビット列の値を取得して、取得したビット列をインデックスとする。さらに、ハッシュ演算ユニット２６は、仮想アドレスの３１ビット目から３９ビット目までのビット列の値を取得してビット列を反転し、その結果得られたビット列を仮想アドレスＢとする。
【０１２４】
その後、ハッシュ演算ユニット２６は、図６に示した場合と同様に、コンテキストＢ、仮想アドレスＢおよびインデックスの３つのビット列の下位ビットから順に番号を割り当てた場合に、同一の番号となる３つのビット値の組の排他的論理和をハッシュ回路８３を用いて算出し、ビット列を生成する。
【０１２５】
ここで、ハッシュ回路８３は、入力された３つのビット値の排他的論理和を出力するＥＯＲ回路である。この場合、コンテキストＢ、仮想アドレスＢおよびインデックスは、９ビットのビット列であるため、ハッシュ回路８３により９ビットの排他的論理和のビット列が出力される。
【０１２６】
そして、図３に示したＴＬＢ２７は、ハッシュ演算ユニット２６により出力されたビット列をＴＬＢ−ＲＡＭインデックスアドレスとして用い、ＴＬＢ−ＲＡＭインデックスアドレスにより示されるＴＬＢ−ＲＡＭ８１の記憶位置に仮想アドレスと物理アドレスとの間のアドレスの変換情報を記憶する。
【０１２７】
上述してきたように、本実施例４では、ハッシュ演算ユニット２６が、コンテキストの情報に含まれる複数のビット列（コンテキストレジスタ８０の０ビット目から８ビット目およびコンテキストレジスタ８０の９ビット目から１２ビット目）から新たなビット列（コンテキストＢ）を生成し、生成したビット列（コンテキストＢ）と仮想アドレスのビット列（インデックスおよび仮想アドレスＢ）とに基づいてハッシュ値を算出することとしたので、コンテキストの情報のビット列を組み合わせることにより、ＴＬＢ−ＲＡＭインデックスアドレスの値を効率的に分散させることができる。
【０１２８】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、上記特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施例にて実施されてもよいものである。
【０１２９】
たとえば、上記実施例では、ハッシュ値を計算するためにＥＯＲ回路を用いたが、本発明はこれに限定されるものではなく、その他のハッシュ回路を用いてハッシュ値を算出することとしてもよい。
【０１３０】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。
【０１３１】
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１３２】
また、図示した装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１３３】
（付記１）仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶装置であって、
前記仮想アドレスに係るコンテキストの情報を取得する取得手段と、
前記取得手段により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定手段と、
を備えたことを特徴とするアドレス変換情報記憶装置。
【０１３４】
（付記２）前記決定手段は、前記取得手段により取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて前記アドレス変換に係る情報を記憶する位置を決定することを特徴とする付記１に記載のアドレス変換情報記憶装置。
【０１３５】
（付記３）前記決定手段は、前記コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することを特徴とする付記２に記載のアドレス変換情報記憶装置。
【０１３６】
（付記４）前記決定手段は、前記コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することを特徴とする付記３に記載のアドレス変換情報記憶装置。
【０１３７】
（付記５）前記決定手段は、前記コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することを特徴とする付記３に記載のアドレス変換情報記憶装置。
【０１３８】
（付記６）前記決定手段は、前記仮想アドレスに含まれる複数のビット列と、前記コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することを特徴とする付記３に記載のアドレス変換情報記憶装置。
【０１３９】
（付記７）前記決定手段は、前記仮想アドレスに含まれるビット列と、該仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、前記コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することを特徴とする付記６に記載のアドレス変換情報記憶装置。
【０１４０】
（付記８）前記決定手段は、前記アドレス変換に係る情報が複数のプロセスにより共有されているか否かを判定し、該アドレス変換に係る情報が共有されている場合に、該アドレス変換に係る情報を前記コンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないことを特徴とする付記１〜７のいずれか１つに記載のアドレス変換情報記憶装置。
【０１４１】
（付記９）前記決定手段は、前記コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、該アドレス変換に係る情報を連想メモリに記憶することを特徴とする付記８に記載のアドレス変換情報記憶装置。
【０１４２】
（付記１０）前記決定手段により決定された前記アドレス変換に係る情報を記憶する位置の情報と前記コンテキストの情報とに基づいて、前記仮想アドレスのビット列を生成する生成手段をさらに備えたことを特徴とする付記１〜９のいずれか１つに記載のアドレス変換情報記憶装置。
【０１４３】
（付記１１）仮想アドレスと実アドレスとの間のアドレス変換に係る情報を記憶するアドレス変換情報記憶方法であって、
前記仮想アドレスに係るコンテキストの情報を取得する取得工程と、
前記取得工程により取得されたコンテキストの情報に基づいて、前記アドレス変換に係る情報を記憶する位置を決定する決定工程と、
を含んだことを特徴とするアドレス変換情報記憶方法。
【０１４４】
（付記１２）前記決定工程は、前記取得工程により取得されたコンテキストの情報に基づいてハッシュ値を算出し、算出したハッシュ値に基づいて前記アドレス変換に係る情報を記憶する位置を決定することを特徴とする付記１１に記載のアドレス変換情報記憶方法。
【０１４５】
（付記１３）前記決定工程は、前記コンテキストの情報と、仮想アドレスの情報とに基づいてハッシュ値を算出することを特徴とする付記１２に記載のアドレス変換情報記憶方法。
【０１４６】
（付記１４）前記決定工程は、前記コンテキストの情報のビット列を反転したビット列と、仮想アドレスのビット列との間の排他的論理和からハッシュ値を算出することを特徴とする付記１３に記載のアドレス変換情報記憶方法。
【０１４７】
（付記１５）前記決定工程は、前記コンテキストの情報に含まれる複数のビット列から新たなビット列を生成し、生成したビット列と仮想アドレスのビット列とに基づいてハッシュ値を算出することを特徴とする付記１３に記載のアドレス変換情報記憶方法。
【０１４８】
（付記１６）前記決定工程は、前記仮想アドレスに含まれる複数のビット列と、前記コンテキストの情報のビット列を反転したビット列とに基づいてハッシュ値を算出することを特徴とする付記１３に記載のアドレス変換情報記憶方法。
【０１４９】
（付記１７）前記決定工程は、前記仮想アドレスに含まれるビット列と、該仮想アドレスに含まれるビット列を反転した単数または複数のビット列と、前記コンテキストの情報のビット列を反転したビット列との間の排他的論理和からハッシュ値を算出することを特徴とする付記１６に記載のアドレス変換情報記憶方法。
【０１５０】
（付記１８）前記決定工程は、前記アドレス変換に係る情報が複数のプロセスにより共有されているか否かを判定し、該アドレス変換に係る情報が共有されている場合に、該アドレス変換に係る情報を前記コンテキストの情報に基づいてランダムアクセスメモリに記憶する記憶処理を実行しないことを特徴とする付記１１〜１７のいずれか１つに記載のアドレス変換情報記憶方法。
【０１５１】
（付記１９）前記決定工程は、前記コンテキストの情報に基づくアドレス変換に係る情報の記憶処理を実行しなかった場合に、該アドレス変換に係る情報を連想メモリに記憶することを特徴とする付記１８に記載のアドレス変換情報記憶方法。
【０１５２】
（付記２０）前記決定工程により決定された前記アドレス変換に係る情報を記憶する位置の情報と前記コンテキストの情報とに基づいて、前記仮想アドレスのビット列を生成する生成工程をさらに含んだことを特徴とする付記１１〜１９のいずれか１つに記載のアドレス変換情報記憶方法。
【産業上の利用可能性】
【０１５３】
以上のように、本発明にかかるアドレス変換情報記憶装置およびアドレス変換情報記憶方法は、スラッシング現象の発生を効率的に防止することが必要なアドレス変換情報記憶装置およびアドレス変換情報記憶方法に有用である。
【図面の簡単な説明】
【０１５４】
【図１】実施例１に係るアドレス変換情報記憶処理を説明する説明図である。
【図２】図１に示したハッシュ回路１３の詳細を示す図である。
【図３】実施例１に係るプロセッサ２０の機能的構成を示す図である。
【図４】仮想アドレスのインデックス部分のビット値を算出する処理について説明する図である。
【図５】実施例１に係るＴＬＢエントリの記憶処理の処理手順を示すフローチャートである。
【図６】実施例２に係るアドレス変換情報記憶処理を説明する説明図である。
【図７】実施例３に係るアドレス変換情報記憶処理を説明する説明図である。
【図８】実施例４に係るアドレス変換情報記憶処理を説明する説明図である。
【符号の説明】
【０１５５】
１０，５２，６０，７０    仮想アドレス
１１，２４，６１，８０    コンテキストレジスタ
１２，２７ａ，６２，７１，８１    ＴＬＢ−ＲＡＭ
１３，６３，７２，８３    ハッシュ回路
２０    プロセッサ
２１    演算ユニット
２２    キャッシュ
２３    バスインターフェース
２５    グローバルレジスタ
２６    ハッシュ演算ユニット
２７    ＴＬＢ
２７ｂ    ＴＬＢ−ＣＡＭ
３０    ＲＡＭ
４０    バス
５０    ＴＬＢ登録アドレス
５１    ＴＬＢインデックスアドレス
８２    ＥＯＲ回路
【図１】
2006040091.tif 000003
【図２】
2006040091.tif 000004
【図３】
2006040091.tif 000005
【図４】
2006040091.tif 000006
【図５】
2006040091.tif 000007
【図６】
2006040091.tif 000008
【図７】
2006040091.tif 000009
【図８】
2006040091.tif 000010