(57)【要約】  この演算処理装置は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持するｆＴＬＢと、２ｗａｙのｓＴＬＢとから構成される。また、ｓＴＬＢとｆＴＬＢとは、ＬＲＵによって制御される同階層に配置される。そして、演算処理装置は、主記憶部から出力されたエントリをｓＴＬＢに登録する場合に、登録先となるｓＴＬＢの領域に既にエントリが登録されているか否かを判定し、登録先となるｓＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出してｆＴＬＢに登録する。
2008155851.tif 000002
【特許請求の範囲】
【請求項１】
主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のＴＬＢを備えた演算処理装置であって、
前記主記憶部から出力されたエントリを複数のＴＬＢのいずれかに登録する場合に、登録先となるＴＬＢの領域に既にエントリが登録されているか否かを判定するエントリ登録判定手段と、
前記エントリ登録判定手段により前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録するリプレース制御手段、
を備えたことを特徴とする演算処理装置。
【請求項２】
前記リプレース制御手段は、前記エントリ登録判定手段により前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリにエラーがあるか否かを判定し、エラーがある場合に、当該エントリを他のＴＬＢに登録せず破棄し、エラーがない場合に、当該エントリを他のＴＬＢに登録することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記リプレース制御手段は、前記エントリ登録判定手段により前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリが主記憶から直接出力されたエントリではなく、ＴＬＢから出力されたエントリであることを示す識別子を付加して、他のＴＬＢに登録することを特徴とする請求項１に記載の演算処理装置。
【請求項４】
前記リプレース制御手段によってエントリが登録された複数のＴＬＢにおいて、ＴＬＢから読み出されて登録されたエントリを含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリを削除するエントリ削除手段をさらに備えたことを特徴とする請求項１に記載の演算処理装置。
【請求項５】
前記複数のＴＬＢは、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがＴＬＢから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、当該エントリが他のＴＬＢから出力されたエントリであるか否かを示すリプレースビットとを備えたものであって、
前記リプレース制御手段は、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、前記他のＴＬＢに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録することを特徴とする請求項１〜４のいずれか一つに記載の演算処理装置。
【請求項６】
前記リプレース制御手段は、前記他のＴＬＢに登録されているエントリのロックビットが全てオンになった場合に、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のＴＬＢに登録することを抑止することを特徴とする請求項５に記載の演算処理装置。
【請求項７】
前記リプレース制御手段は、前記他のＴＬＢに登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に登録されているエントリを読み出して、他のＴＬＢへの登録を再開することを特徴とする請求項６に記載の演算処理装置。
【請求項８】
前記複数のＴＬＢは、主記憶部から直接出力されたエントリを登録する直接登録領域と他のＴＬＢからリプレース制御されたエントリを登録するリプレース登録領域とに分割されており、さらに、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがＴＬＢから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、リプレース制御されて登録されたエントリか否かを示すリプレースビットとを備えたものであって、
前記リプレース制御手段は、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、前記他のＴＬＢのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンの場合には、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、リプレース領域の使用ビットを全てオフにして、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録することを特徴とする請求項１〜４のいずれか一つに記載の演算処理装置。
【請求項９】
前記リプレース制御手段は、前記他のＴＬＢの直接登録領域に登録されているエントリのロックビットが全てオンになった場合に、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のＴＬＢのリプレース領域に登録することを抑止すること、また本状態中は直接登録されるエントリは他のＴＬＢリプレース領域に登録されることを特徴とする請求項８に記載の演算処理装置。
【請求項１０】
前記リプレース制御手段は、前記他のＴＬＢの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に登録されているエントリを読み出して、他のＴＬＢのリプレース領域への登録を再開することを特徴とする請求項９に記載の演算処理装置。
【請求項１１】
主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のＴＬＢを備えた情報処理装置としてのコンピュータに実行するエントリ制御プログラムであって、
前記主記憶部から出力されたエントリを複数のＴＬＢのいずれかに登録する場合に、登録先となるＴＬＢの領域に既にエントリが登録されているか否かを判定するエントリ登録判定手順と、
前記エントリ登録判定手順により前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録するリプレース制御手順、
をコンピュータに実行することを特徴とするエントリ制御プログラム。
【請求項１２】
主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のＴＬＢを備えた情報処理装置に適したエントリ制御方法であって、
前記主記憶部から出力されたエントリを複数のＴＬＢのいずれかに登録する場合に、登録先となるＴＬＢの領域に既にエントリが登録されているか否かを判定するエントリ登録判定ステップと、
前記エントリ登録判定ステップにより前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録するリプレース制御ステップ、
を含んだことを特徴とするエントリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のＴＬＢを備えた演算処理装置、エントリ制御プログラムおよびエントリ制御方法に関する。
【背景技術】
【０００２】
従来より、仮想記憶方式を用いた情報処理装置において、仮想アドレスから物理アドレスへの変換表（ページテーブル）は主記憶に配置される。そして、ＣＰＵは、主記憶に展開されたプログラムを実行すると、仮想アドレスから物理アドレスに変換し、変換した物理アドレスにより主記憶上に展開されたプログラムの命令およびデータを参照する。【０００３】
現在、ＣＰＵの動作速度に比べて主記憶上の動作速度が遅く、また、ＣＰＵと主記憶との距離も遠いため、ＣＰＵが主記憶にアクセスすると多大な処理時間がかかってしまう。また、仮想アドレスから物理アドレスへの変換表も主記憶上に配置されるため、プログラム内の命令やデータの取得を行うごとに、変換表の取得を行っていては、処理に時間がかかる。【０００４】
そこで、主記憶上に配置されている変換表の一部のエントリをＬＲＵ（Least  Recently  Used）により制御されるＴＬＢ（Translation  Look-aside  Buffer）と呼ばれるキャッシュメモリに登録しておき、ＣＰＵは、仮想アドレスから物理アドレスへの変換の際には、まずＴＬＢを参照し、ＴＬＢに該当エントリが存在しなければ、次に主記憶上の変換表を参照する情報処理装置が利用されている。最近では、フルアソシアティブＴＬＢと、２ｗａｙセットアソシアティブＴＬＢとを同階層に配置した情報処理装置が利用されている（例えば、特許文献１参照）。【０００５】
ここで、フルアソシアティブＴＬＢと２ｗａｙセットアソシアティブＴＬＢとを同階層に配置した情報処理装置について説明する。図１０は、フルアソシアティブＴＬＢと２ｗａｙセットアソシアティブＴＬＢとを同階層に配置した従来技術である情報処理装置を説明するための図である。図１０に示すように、フルアソシアティブＴＬＢと２ｗａｙセットアソシアティブＴＬＢとを同階層に配置した複数のページサイズを扱うことができるアーキテクチャにおいて、両ＴＬＢには、はじめエントリが何も登録されておらず、はじめて登録されるＴＬＢは、ＬＲＵによりｓＴＬＢ、ｆＴＬＢ共にｗａｙ０に登録される。本発明におけるＴＬＢ登録は、全てセットアソシアティブＴＬＢに登録されることとする。【０００６】
このような構成において、プログラムが実行されると、ＣＰＵは、仮想アドレスから物理アドレスへの変換（エントリＡ）を行うためにフルアソシアティブＴＬＢ、２ｗａｙセットアソシアティブＴＬＢの両ＴＬＢを参照する。そして、ＣＰＵは、両ＴＬＢに仮想アドレスへの変換表が登録されていない場合、主記憶上の変換表を参照する目的で主記憶をアクセスし、該当する仮想アドレスに対応する変換表（エントリＡ）を主記憶から読み出して２ｗａｙセットアソシアティブＴＬＢに登録する（図１０の（１）参照）。【０００７】
その後、ＣＰＵは、セットアソシアティブＴＬＢのキャッシュラインが同一になる仮想アドレスがＴＬＢを参照してＴＬＢミスした場合、図１０の（１）と同様の処理を行い、「エントリＢ」としてセットアソシアティブＴＬＢの「ｗａｙ１」に登録する（図１０の（２）参照）。さらにその後、ＣＰＵは、セットアソシアティブＴＬＢのキャッシュラインが同一になる仮想アドレスがＴＬＢを参照してＴＬＢミスした場合、図１０の（１）と同様の処理を行い、「エントリＣ」として、ＬＲＵによりセットアソシアティブＴＬＢの「ｗａｙ０」に登録するが、既に登録されている「エントリＡ」はセットアソシアティブＴＬＢから追い出されることとなる（図１０の（３）参照）。【０００８】
そして、ＣＰＵは、セットアソシアティブＴＬＢのキャッシュラインが同一になる仮想アドレスがＴＬＢを参照してＴＬＢミスした場合、図１０の（１）と同様の処理を行い、「エントリＤ」として、ＬＲＵによりセットアソシアティブＴＬＢの「ｗａｙ１」に登録するが、既に登録されている「エントリＢ」はセットアソシアティブＴＬＢから追い出されることとなる（図１０の（４）参照）。【０００９】
【特許文献１】特開２００５−３４６３５８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記した従来の技術では、スラッシングが発生し、処理性能が低下するという課題があった。具体的には、セットアソシアティブＴＬＢは、一般的に数ｗａｙのセットアソシアティブ方式を用いる。例えば、同時に複数のプロセスが実行され、キャッシュをアクセスするキャッシュラインがぶつかるような仮想アドレスが局所的にセットアソシアティブＴＬＢのｗａｙ数を超える場合、ＴＬＢの書換え、つまり、スラッシングが発生する。そして、ＣＰＵは、このスラッシングが発生すると、主記憶上の変換表にアクセスする必要があり性能低下に繋がる。【００１１】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、スラッシングの発生を防止し、処理性能を向上させることが可能である演算処理装置、エントリ制御プログラムおよびエントリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のＴＬＢを備えた演算処理装置であって、前記主記憶部から出力されたエントリを複数のＴＬＢのいずれかに登録する場合に、登録先となるＴＬＢの領域に既にエントリが登録されているか否かを判定するエントリ登録判定手段と、前記エントリ登録判定手段により前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録するリプレース制御手段、を備えたことを特徴とする。【００１３】
また、請求項２に係る発明は、上記の発明において、前記リプレース制御手段は、前記エントリ登録判定手段により前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリにエラーがあるか否かを判定し、エラーがある場合に、当該エントリを他のＴＬＢに登録せず破棄し、エラーがない場合に、当該エントリを他のＴＬＢに登録することを特徴とする。【００１４】
また、請求項３に係る発明は、上記の発明において、前記リプレース制御手段は、前記エントリ登録判定手段により前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリが主記憶から直接出力されたエントリではなく、ＴＬＢから出力されたエントリであることを示す識別子を付加して、他のＴＬＢに登録することを特徴とする。【００１５】
また、請求項４に係る発明は、上記の発明において、前記リプレース制御手段によってエントリが登録された複数のＴＬＢにおいて、ＴＬＢから読み出されて登録されたエントリを含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリを削除するエントリ削除手段をさらに備えたことを特徴とする。【００１６】
また、請求項５に係る発明は、上記の発明において、前記複数のＴＬＢは、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがＴＬＢから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、当該エントリが他のＴＬＢから出力されたエントリであるか否かを示すリプレースビットとを備えたものであって、前記リプレース制御手段は、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、前記他のＴＬＢに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録することを特徴とする。【００１７】
また、請求項６に係る発明は、上記の発明において、前記リプレース制御手段は、前記他のＴＬＢに登録されているエントリのロックビットが全てオンになった場合に、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のＴＬＢに登録することを抑止することを特徴とする。【００１８】
また、請求項７に係る発明は、上記の発明において、前記リプレース制御手段は、前記他のＴＬＢに登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に登録されているエントリを読み出して、他のＴＬＢへの登録を再開することを特徴とする。【００１９】
また、請求項８に係る発明は、上記の発明において、前記複数のＴＬＢは、主記憶部から直接出力されたエントリを登録する直接登録領域と他のＴＬＢからリプレース制御されたエントリを登録するリプレース登録領域とに分割されており、さらに、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがＴＬＢから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、リプレース制御されて登録されたエントリか否かを示すリプレースビットとを備えたものであって、前記リプレース制御手段は、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、前記他のＴＬＢのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンの場合には、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、リプレース領域の使用ビットを全てオフにして、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録することを特徴とする。【００２０】
また、請求項９に係る発明は、上記の発明において、前記リプレース制御手段は、前記他のＴＬＢの直接登録領域に登録されているエントリのロックビットが全てオンになった場合に、前記エントリ登録判定手段により前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のＴＬＢのリプレース領域に登録することを抑止すること、また本状態中は直接登録されるエントリは他のＴＬＢリプレース領域に登録されることを特徴とする。また本状態中は直接登録されるエントリは他のＴＬＢリプレース領域に登録される。【００２１】
また、請求項１０に係る発明は、上記の発明において、前記リプレース制御手段は、前記他のＴＬＢの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、前記主記憶部から出力されたエントリの登録先となるＴＬＢの領域に登録されているエントリを読み出して、他のＴＬＢのリプレース領域への登録を再開することを特徴とする。【００２２】
また、請求項１１に係る発明は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のＴＬＢを備えた情報処理装置としてのコンピュータに実行するエントリ制御プログラムであって、前記主記憶部から出力されたエントリを複数のＴＬＢのいずれかに登録する場合に、登録先となるＴＬＢの領域に既にエントリが登録されているか否かを判定するエントリ登録判定手順と、前記エントリ登録判定手順により前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録するリプレース制御手順、をコンピュータに実行することを特徴とする。【００２３】
また、請求項１２に係る発明は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のＴＬＢを備えた情報処理装置に適したエントリ制御方法であって、前記主記憶部から出力されたエントリを複数のＴＬＢのいずれかに登録する場合に、登録先となるＴＬＢの領域に既にエントリが登録されているか否かを判定するエントリ登録判定ステップと、前記エントリ登録判定ステップにより前記登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録するリプレース制御ステップ、を含んだことを特徴とする。
【発明の効果】
【００２４】
本発明によれば、主記憶部から出力されたエントリを複数のＴＬＢのいずれかに登録する場合に、登録先となるＴＬＢの領域に既にエントリが登録されているか否かを判定し、登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録するので、スラッシングの発生を防止し、処理性能を向上させることを可能である。【００２５】
また、本発明によれば、登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリにエラーがあるか否かを判定し、エラーがある場合に、当該エントリを他のＴＬＢに登録せず破棄し、エラーがない場合に、当該エントリを他のＴＬＢに登録するので、無駄な領域の使用を防止することが可能である。【００２６】
また、本発明によれば、登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリが主記憶から直接出力されたエントリではなく、ＴＬＢから出力されたエントリであることを示す識別子を付加して、他のＴＬＢに登録するので、主記憶部から登録されたエントリか、他のＴＬＢからリプレースされたエントリかを容易に判断することが可能である。【００２７】
また、本発明によれば、ＴＬＢから読み出されて登録されたエントリを含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリを削除するので、マルチヒットによる不整合を防止することが可能である。【００２８】
また、本発明によれば、主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、他のＴＬＢに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録するので、ＴＬＢから追い出されないロックエントリ、主記憶部から直接登録されたアンロックエントリ、ＴＬＢから出力されたリプレースエントリの３種類のエントリが混在しても、スラッシングの発生を防止し、処理性能を向上させることが可能である。【００２９】
また、本発明によれば、他のＴＬＢに登録されているエントリのロックビットが全てオンになった場合に、主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のＴＬＢに登録することを抑止するので、登録できないのにも関わらず発生するエントリ登録処理の発生を防止することが可能であり、また、ロックエントリを確実に保護することが可能である。【００３０】
また、本発明によれば、他のＴＬＢに登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるＴＬＢの領域に登録されているエントリを読み出して、他のＴＬＢへの登録を再開するので、エントリのロックビットが全てオンの状態から解放された場合に、自動的に登録処理を再開することができる結果、ＴＬＢへのエントリ登録処理を迅速に再開することが可能である。【００３１】
また、本発明によれば、主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、他のＴＬＢのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンの場合には、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、リプレース領域の使用ビットを全てオフにして、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録するので、登録先のＴＬＢの領域が、他のＴＬＢから出力されたエントリを登録するＴＬＢを直接登録領域とリプレース登録領域とに分割されている場合でも、ＴＬＢから追い出されないロックエントリ、主記憶から直接登録されたアンロックエントリ、ＴＬＢから出力されたリプレースエントリの３種類のエントリが混在することができ、スラッシングの発生を防止し、処理性能を向上させることが可能である。【００３２】
また、本発明によれば、他のＴＬＢの直接登録領域に登録されているエントリのロックビットが全てオンになった場合に、主記憶部から出力されたエントリの登録先となるＴＬＢの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、他のＴＬＢのリプレース領域に登録することを抑止するので、登録先のＴＬＢの領域が、直接登録領域とリプレース登録領域とに分割されている場合でも、登録できないのにも関わらず発生するエントリ登録処理の発生を防止することが可能であり、また、ロックエントリを確実に保護することが可能である。なお、本状態中は直接登録されるエントリは他のＴＬＢリプレース領域に登録される。【００３３】
また、本発明によれば、他のＴＬＢの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるＴＬＢの領域に登録されているエントリを読み出して、他のＴＬＢのリプレース領域への登録を再開するので、登録先のＴＬＢの領域が、直接登録領域とリプレース登録領域とに分割されていても、直接登録領域のエントリのロックビットが全てオンの状態から解放された場合に、自動的に登録処理を再開することができる結果、ＴＬＢへのエントリ登録処理を迅速に再開することが可能である。
【図面の簡単な説明】
【００３４】
【図１】図１は、実施例１に係る演算処理装置の概要と特徴を説明するための図である。
【図２】図２は、実施例１に係る演算処理装置の構成を示すブロック図である。
【図３】図３は、実施例１に係る演算処理装置による処理の流れを示すフローチャートである。
【図４】図４は、実施例２に係る演算処理装置の回路構成を説明するための図である。
【図５】図５は、実施例３に係る演算処理装置におけるｓＴＬＢとｆＴＬＢのエントリ登録の流れを説明するための図である。
【図６】図６は、実施例４に係る演算処理装置におけるｓｆＴＬＢのエントリ登録の流れを説明するための図である。
【図７】図７は、実施例５に係る演算処理装置における領域が分割されたｆＴＬＢのエントリ登録の流れを説明するための図である。
【図８】図８は、実施例６に係る演算処理装置における領域が分割されていないｆＴＬＢでのリプレース抑止・再開処理の流れを説明するための図である。
【図９】図９は、実施例６に係る演算処理装置における領域が分割されているｆＴＬＢでのリプレース抑止・再開処理の流れを説明するための図である。
【図１０】図１０は、フルアソシアティブＴＬＢと２ｗａｙセットアソシアティブＴＬＢとを同階層に配置した従来技術である情報処理装置を説明するための図である。
【符号の説明】
【００３５】
１０  演算処理装置
１１  ＣＰＵ
１１ａ  演算部／命令制御部
２０  Ｌ１キャッシュ制御部
２１  Ｌ１キャッシュＲＡＭ
２２  ＭａｉｎＴＬＢ
２２ａ  ｆＴＬＢ
２２ｂ  ｓＴＬＢ
２３  ＭｉｃｒｏＴＬＢ
２４  エントリ登録判定部
２５  リプレース制御部
３０  Ｌ２キャッシュ制御部
３１  Ｌ２キャッシュＲＡＭ
４０  主記憶部（メモリ）
【発明を実施するための最良の形態】
【００３６】
以下に添付図面を参照して、本実施例に係る演算処理装置、エントリ制御プログラムおよびエントリ制御方法の実施例を詳細に説明する。なお、以下では、本実施例に係る演算処理装置の概要および特徴、演算処理装置の構成および処理の流れを順に説明し、最後に本実施例に対する種々の変形例を説明する。
【実施例１】
【００３７】
［演算処理装置の概要および特徴］
まず最初に、図１を用いて、実施例１に係る演算処理装置の概要および特徴を説明する。図１は、実施例１に係る演算処理装置の概要と特徴を説明するための図である。【００３８】
図１に示すように、この演算処理装置は、ＬＲＵによって制御される同階層に配置された２ｗａｙのｓＴＬＢ（セットアソシアティブＴＬＢ）とｆＴＬＢ（フルセットアソシアティブＴＬＢ）とから構成される。一般的に、ｓＴＬＢは、演算処理装置を使用するユーザによって作成されたプログラムに用いられる領域が割当てられ、ｆＴＬＢは、ＯＳ（Operating  System）などの制御プログラムに用いられる領域が割当てられる。【００３９】
これらのＴＬＢは、演算処理装置のＣＰＵ（例えば、演算部や命令制御部など）によって主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する。そして、ＣＰＵは、プログラムによってデータなどが参照されて、当該データの仮想アドレスから物理アドレスへの変換を行う場合には、まずＴＬＢを参照し、ＴＬＢに該当エントリが存在しなければ、次に主記憶上の変換表を参照する。そして、ＴＬＢに存在せず主記憶から読み出されたエントリは、ＣＰＵによってＴＬＢに登録される。ここで、両ＴＬＢには、エントリが何も登録されておらず、はじめて登録されるＴＬＢは、ＬＲＵによりｗａｙ０に登録される。なお、本実施例におけるＴＬＢ登録は、全てｓＴＬＢに登録されることとする。【００４０】
このような構成において、この演算処理装置は、上記したように主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持するｓＴＬＢとｆＴＬＢとを備えたことを概要とするものであり、特に、スラッシングの発生を防止し、処理性能を向上させることが可能である点に主たる特徴がある。【００４１】
この主たる特徴を具体的に説明すると、演算処理装置は、主記憶部から出力されたエントリを複数のＴＬＢのいずれかに登録する場合に、登録先となるＴＬＢの領域に既にエントリが登録されているか否かを判定し、登録先となるＴＬＢの領域に既にエントリが登録されていないので、主記憶部から出力されたエントリをＴＬＢに登録する（図１の（１）参照）。具体的には、演算処理装置は、仮想アドレスから物理アドレスへの変換（エントリＡ）を行うためにｆＴＬＢ、ｓＴＬＢの両ＴＬＢを参照する。そして、演算処理装置は、両ＴＬＢにエントリＡが登録されていないので、主記憶部からエントリＡを読み出す。続いて、演算処理装置は、主記憶部から読み出したエントリＡの登録先となるｓＴＬＢのｗａｙ０に既に他のエントリが登録されているか否かを判定する。ここでは、既に登録されている他のエントリが存在しないので、演算処理装置は、主記憶から読み出したエントリＡをｓＴＬＢのｗａｙ０に登録する。【００４２】
続いて、演算処理装置は、上記した手法と同様に、仮想アドレスから物理アドレスへの変換（エントリＢ）を行うためにｆＴＬＢ、ｓＴＬＢの両ＴＬＢを参照し、両ＴＬＢにエントリＢが登録されていないので、主記憶部からエントリＢを読み出して、エントリＢの登録先となるｓＴＬＢのｗａｙ１に既に他のエントリが登録されているか否かを判定する（図１の（２）参照）。ここでは、既に登録されている他のエントリが存在しないので、演算処理装置は、主記憶部から読み出したエントリＢをｓＴＬＢのｗａｙ１に登録する。【００４３】
その後、同様に、演算処理装置は、仮想アドレスから物理アドレスへの変換（エントリＣ）を行うためにｆＴＬＢ、ｓＴＬＢの両ＴＬＢを参照し、両ＴＬＢにエントリＣが登録されていないので、主記憶部からエントリＣを読み出して、エントリＣの登録先となるｓＴＬＢのｗａｙ０に既に他のエントリが登録されているか否かを判定し、登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録する（図１の（３）参照）。【００４４】
上記した例で具体的に説明すると、演算処理装置は、仮想アドレスから物理アドレスへの変換（エントリＣ）を行うためにｆＴＬＢ、ｓＴＬＢの両ＴＬＢを参照し、両ＴＬＢにエントリＣが登録されていないので、主記憶部からエントリＣを読み出す。そして、演算処理装置は、ＬＲＵ制御により、エントリＡとエントリＢのうち最も参照されていない領域、つまり、先に登録されたエントリＡが登録されているｗａｙ０に既にエントリが登録されているか否かを判定する。ここでは、ｗａｙ０にエントリＡが既に登録されているので、演算処理装置は、当該既に登録されているエントリＡを読み出してｆＴＬＢの空の領域の若番号であるｗａｙ０に登録して、エントリＡを読み出したｓＴＬＢのｗａｙ０には、主記憶部から読み出されたエントリＣを登録する。【００４５】
その後、同様に、演算処理装置は、仮想アドレスから物理アドレスへの変換（エントリＤ）を行うためにｆＴＬＢ、ｓＴＬＢの両ＴＬＢを参照し、両ＴＬＢにエントリＤが登録されていないので、主記憶部からエントリＤを読み出して、エントリＤの登録先となるｓＴＬＢのｗａｙ１に既に他のエントリが登録されているか否かを判定し、登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録する（図１の（４）参照）。【００４６】
上記した例で具体的に説明すると、演算処理装置は、仮想アドレスから物理アドレスへの変換（エントリＤ）を行うためにｆＴＬＢ、ｓＴＬＢの両ＴＬＢを参照し、両ＴＬＢにエントリＤが登録されていないので、主記憶からエントリＤを読み出す。そして、演算処理装置は、ＬＲＵ制御により、エントリＣとエントリＢのうち最も参照されていない領域、つまり、先に登録されたエントリＢが登録されているｗａｙ１に既にエントリが登録されているか否かを判定する。ここでは、ｗａｙ１にエントリＢが既に登録されているので、演算処理装置は、当該既に登録されているエントリＢを読み出してｆＴＬＢの空の領域の若番号であるｗａｙ１に登録して、エントリＢを読み出したｓＴＬＢのｗａｙ１には、主記憶部から読み出されたエントリＤを登録する。【００４７】
このように、実施例１に係る演算処理装置は、ｓＴＬＢに既に登録されているエントリをリプレースしてｆＴＬＢに登録することができる結果、上記した主たる特徴のごとく、スラッシングの発生を防止し、処理性能を向上させることを可能である。【００４８】
［演算処理装置の構成］
次に、図２を用いて、図１に示した演算処理装置の構成を説明する。図２は、実施例１に係る演算処理装置の構成を示すブロック図である。図２に示すように、この演算処理装置１０は、ＣＰＵ１１と、Ｌ１キャッシュ制御部２０と、Ｌ２キャッシュ制御部３０と、主記憶部４０とから構成される。【００４９】
ＣＰＵ１１は、主記憶部４０に記憶される各種プログラムを実行する処理部であり、特に本実施例に密接に関連するものとしては、演算部／命令制御部１１ａと、Ｌ１キャッシュ制御部２０とを備える。【００５０】
演算部／命令制御部１１ａは、ＣＰＵ１１により実行される演算処理に応じてデータの書き込みおよび読み出しに関する命令を出力し、必要なデータを後述するＭｉｃｒｏＴＬＢ２３、ＭａｉｎＴＬＢ２２、Ｌ１キャッシュＲＡＭ２１、Ｌ２キャッシュＲＡＭ３１または主記憶部４０から取得し、取得されたデータに対する演算処理を行う。【００５１】
Ｌ１キャッシュ制御部２０は、演算部／命令制御部１１ａから仮想アドレスを取得した場合に、対応するデータをＬ１キャッシュＲＡＭ２１から取得して演算部／命令制御部１１ａに出力し、対応するデータがＬ１キャッシュＲＡＭ２１に存在しない場合に、Ｌ２キャッシュアドレスアクセスをＬ２キャッシュ制御部３０に出力する処理部であり、特に本実施例に密接に関連するものとしては、Ｌ１キャッシュＲＡＭ２１と、ＭａｉｎＴＬＢ２２と、ＭｉｃｒｏＴＬＢ２３と、エントリ登録判定部２４と、リプレース制御部２５とを備える。【００５２】
Ｌ１キャッシュＲＡＭ２１は、ＣＰＵ１１と同じモジュールに集積または実装されている高速で少容量なメモリであり、使用頻度の高いデータを記憶することで、ＣＰＵ１１によって実行される命令とデータを一時的に保持するために使われ、主記憶部４０が新しいデータの供給に追いつく間、一定量のデータを供給してＣＰＵ１１が処理を続行できるようにする。【００５３】
ＭａｉｎＴＬＢ２２は、主記憶上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持するとともに、特に本実施例に密接に関連するものとしては、ｓＴＬＢ２２ｂとｆＴＬＢ２２ａとを備える。なお、両ＴＬＢには、エントリが何も登録されておらず、はじめて登録されるＴＬＢは、ＬＲＵによりｓＴＬＢ２２ｂのｗａｙ０に登録され、その後のＴＬＢ登録は、全てｓＴＬＢ２２ｂに登録される。【００５４】
ｆＴＬＢ２２ａは、主記憶上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして、エントリアドレスによる振り分けはなく、全てのラインが検索対象となるフルアソシアティブ方式で記憶する。【００５５】
ｓＴＬＢ２２ｂは、ｆＴＬＢ２２ａに登録されるエントリにうち、使用頻度の高いエントリを、同一エントリに異なるフレームアドレスを複数格納することができるＮウェイセットアソシアティ方式で記憶する。また、ｓＴＬＢ２２ｂは、２ウェイセットアソシアティ方式を採用したｓＴＬＢ２２ｂを図示している。【００５６】
ＭｉｃｒｏＴＬＢ２３は、演算部／命令制御部１１ａによって使用された直近のデータに対応する仮想アドレスから物理アドレスへの変換表の一部を記憶する。ＭｉｃｒｏＴＬＢ２３に記憶されるエントリは、ＭａｉｎＴＬＢ２２に記憶されるエントリであり、演算部／命令制御部１１ａによって使用された直近のエントリを保持することで、演算部／命令制御部１１ａによって再び使用される場合には、高速に処理させることができる。【００５７】
エントリ登録判定部２４は、主記憶部４０から出力されたエントリを複数のＴＬＢのいずれかに登録する場合に、登録先となるＴＬＢの領域に既にエントリが登録されているか否かを判定する。具体的に例を挙げれば、演算部／命令制御部１１ａによって、仮想アドレスから物理アドレスへの変換（エントリＡ）を行うためにｆＴＬＢ２２ａ、ｓＴＬＢ２２ｂの両ＴＬＢが参照され、両ＴＬＢにエントリＡが登録されていないので、主記憶部４０上からエントリＡを読み出されると、エントリ登録判定部２４は、主記憶部４０から読み出されたエントリＡの登録先となるｓＴＬＢ２２ｂのｗａｙ０に既に他のエントリが登録されているか否かを判定する。【００５８】
そして、エントリ登録判定部２４は、主記憶部４０から読み出されたエントリＡの登録先となるｓＴＬＢ２２ｂのｗａｙ０に既に他のエントリが登録されていると判定すると、その旨を後述するリプレース制御部２５に通知する。【００５９】
リプレース制御部２５は、エントリ登録判定部２４により登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して他のＴＬＢに登録する。具体的に例を挙げれば、ｓＴＬＢ２２ｂには、ｗａｙ０にはエントリＡ、ｗａｙ１にはエントリＢが登録されており、その後のＴＬＢ登録は、全てｓＴＬＢに登録されることとする。また、ｆＴＬＢ２２ａには、エントリが何も登録されておらず、はじめてｆＴＬＢ２２ａに登録されるエントリは、ＬＲＵによりｗａｙ０に登録されることとする。【００６０】
その場合、エントリ登録判定部２４は、演算部／命令制御部１１ａによって、仮想アドレスから物理アドレスへの変換（エントリＣ）を行うためにｆＴＬＢ２２ａ、ｓＴＬＢ２２ｂの両ＴＬＢを参照し、両ＴＬＢにエントリＣが登録されていないので、主記憶部４０からエントリＣを読み出して、エントリＣの登録先となるｓＴＬＢ２２ｂのｗａｙ０に既に他のエントリが登録されているか否かを判定する。そして、エントリ登録判定部２４は、エントリＣの登録先となるｓＴＬＢ２２ｂのｗａｙ０に既にエントリＡが登録されているため、その旨をリプレース制御部２５に通知する。【００６１】
通知されたリプレース制御部２５は、既に登録されているエントリＡを読み出して他のＴＬＢであるｆＴＬＢ２２ａの空の領域の若番号であるｗａｙ０に登録、つまり、エントリのリプレース制御を実施する。それと同時に、主記憶部４０から読み出したエントリＣをｓＴＬＢ２２ｂのｗａｙ０に登録する。【００６２】
Ｌ２キャッシュ制御部３０は、Ｌ２キャッシュＲＡＭ３１を備え、Ｌ１キャッシュ制御部２０からＬ２キャッシュアクセスアドレスを取得した場合に、取得したＬ２キャッシュアクセスアドレスに対応するデータを、Ｌ２キャッシュＲＡＭ３１から読み出してＬ１キャッシュ制御部２０に出力する。Ｌ２キャッシュＲＡＭ３１は、Ｌ１キャッシュＲＡＭ２１より低速で主記憶部４０より高速であるとともに、Ｌ１キャッシュＲＡＭ２１より容量が大きく主記憶部４０より容量が小さいメモリであり、使用頻度の高いデータを記憶する。【００６３】
主記憶部４０は、ＣＰＵ１１によって利用されるデータ、命令および仮想アドレスから物理アドレスへの変換表（ページテーブル）を記憶する大容量のメインメモリであり、ＣＰＵ１１の演算部／命令制御部１１ａ、Ｌ１キャッシュ制御部２０やＬ２キャッシュ制御部３０からの要求に応答して、対応するデータを要求先の処理部に応答する。【００６４】
［演算処理装置による処理］
次に、図３を用いて、演算処理装置による処理を説明する。図３は、実施例１に係る演算処理装置による処理の流れを示すフローチャートである。【００６５】
図３に示すように、ｓＴＬＢ２２ｂへのエントリ登録要求が発生すると（ステップＳ３０１肯定）、エントリ登録判定部２４は、登録先となるｓＴＬＢ２２ｂの領域（例えば、ｗａｙ０）に既にエントリが登録されているか否かを判定する（ステップＳ３０２）。【００６６】
そして、エントリ登録判定部２４は、登録先となるｓＴＬＢ２２ｂの領域に既にエントリが登録されていると判定すると（ステップＳ３０２肯定）、その旨をリプレース制御部２５に通知し、通知されたリプレース制御部２５は、登録先となるｓＴＬＢ２２ｂの領域に既に登録されているエントリを読み出して、ｆＴＬＢ２２ａの空領域の若番号の領域（例えば、ｗａｙ０）に登録、つまり、エントリのリプレースを実施する（ステップＳ３０３）。【００６７】
それと同時に、リプレース制御部２５は、リプレースが実施されたｓＴＬＢ２２ｂの領域に登録する（ステップＳ３０４）。【００６８】
一方、登録先となるｓＴＬＢ２２ｂの領域に既にエントリが登録されていないと判定すると（ステップＳ３０２否定）、主記憶部４０から読み出したエントリをｓＴＬＢ２２ｂの領域に登録する。【００６９】
［実施例１による効果］
このように、実施例１によれば、主記憶部４０から出力されたエントリをｓＴＬＢ２２ｂに登録する場合に、登録先となるｓＴＬＢ２２ｂの領域に既にエントリが登録されているか否かを判定し、登録先となるｓＴＬＢ２２ｂの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出してｆＴＬＢ２２ａに登録するので、スラッシングの発生を防止し、処理性能を向上させることが可能である。【００７０】
例えば、ｓＴＬＢ２２ｂのｗａｙ０、ｗａｙ１にそれぞれエントリＡとエントリＢとが登録されており、ｆＴＬＢ２２ａにはエントリが登録されていない状態で、演算部／命令制御部１１ａによってエントリＣ、エントリＢ、エントリＡの読み出しが実行されたとする。まず、演算部／命令制御部１１ａは、ｓＴＬＢ２２ｂおよびｆＴＬＢ２２ａにエントリＣが登録されていないので、主記憶部４０からエントリＣを読み出して処理を実行するとともにｓＴＬＢ２２ｂのｗａｙ０に登録する。そして、演算部／命令制御部１１ａは、ｓＴＬＢ２２ｂのｗａｙ１にエントリＢが登録されていることにより、ｓＴＬＢ２２ｂのｗａｙ１からエントリＢを読み出して実行する。続いて、演算部／命令制御部１１ａは、はじめは登録されていたが、エントリＣによりｓＴＬＢ２２ｂからエントリＡが追い出されたので登録されておらず、主記憶部４０からエントリＡを読み出して処理を実行するとともにｓＴＬＢ２２ｂのｗａｙ０に「エントリＣ」を登録する。【００７１】
このように、はじめは登録されていたが、処理の実行上、ｓＴＬＢ２２ｂから追い出されたエントリを実行する場合に、主記憶部４０から読み出して実行する必要があるため、スラッシングが発生する。そこで、本実施例を実施すると、演算部／命令制御部１１ａは、ｓＴＬＢ２２ｂおよびｆＴＬＢ２２ａにエントリＣが登録されていないので、主記憶部４０からエントリＣを読み出して処理を実行し、エントリＣの登録先であるｓＴＬＢ２２ｂのｗａｙ０に登録されているエントリＡをｆＴＬＢ２２ａにリプレースしてから、エントリＣをｓＴＬＢ２２ｂのｗａｙ０に登録するので、エントリＡを読み出す場合も、主記憶部４０から読み出す必要がなく、ｆＴＬＢ２２ａから読み出すことができる結果、スラッシングの発生を防止し、処理性能を向上させることを可能である。【００７２】
また、スラッシングを防止するために、ｓＴＬＢ２２ｂの領域（ｗａｙ数）やｆＴＬＢ２２ａの領域を増加させるなどの対応も考えられるが、物理面積の増加するため消費電力が増加する。そこで、本実施例を用いることで、ｓＴＬＢ２２ｂの領域（ｗａｙ数）やｆＴＬＢ２２ａの領域を増加させる必要がなく、さらに、新規にＴＬＢを用意する必要もないため、物理面積の削減および低消費電力化に寄与することが可能である。
【実施例２】
【００７３】
ところで、実施例１では、ｓＴＬＢから読み出したエントリは全部ｆＴＬＢに登録する場合について説明したが、本実施例はこれに限定されるものではなく、ｓＴＬＢから読み出したエントリのうち、エラーが検出されないエントリだけをｆＴＬＢに登録するようにしてもよい。【００７４】
そこで、実施例２では、図４を用いて、ｓＴＬＢから読み出したエントリのうち、エラーが検出されないエントリだけをｆＴＬＢに登録する場合について説明する。図４は、実施例２に係る演算処理装置の回路構成を説明するための図である。【００７５】
図４に示すように、ｓＴＬＢおよびｆＴＬＢは、ＬＲＵによって制御されている。ｓＴＬＢ−ｗｒｉｔｅ−ｅｎａｂｌｅがｓＴＬＢのａｎｄ回路に入力されると、ＬＲＵは、登録すべき領域を決定する。【００７６】
そして、決定された領域に既にエントリが登録されていると、当該エントリをｓｅｌｅｃｔｅｒに出力し、出力されたエントリは、リプレースデータとしてｆＴＬＢに入力される。また、ｓＴＬＢから出力されたエントリは、ｐａｒｉｔｙｃｈｅｃｋ回路に入力されて、パリティチェックが実行されエラーがあるか否かが判定される。【００７７】
その後、エラーが発生したまたはエラーなしの情報を示すエラー情報がｆＴＬＢのａｎｄ回路に入力される。そして、入力されたエラー情報と、ｆＴＬＢに入力されたエントリと、現にｆＴＬＢに登録されているエントリ情報とから、登録するｆＴＬＢの領域が決定されて登録される。ここで、エラー情報として「エラー有り」の情報が入力されている場合には、ｓＴＬＢから出力されたエントリは、ａｎｄ回路によって破棄され、エラー情報として「エラーなし」の情報が入力されている場合のみ、ｓＴＬＢから出力されたエントリは、ｆＴＬＢに登録されることとなる。【００７８】
このように、実施例２によれば、登録先となるＴＬＢの領域に既にエントリが登録されていると判定されると、当該エントリにエラーがあるか否かを判定し、エラーがある場合に、当該エントリを他のＴＬＢに登録せず破棄し、エラーがない場合に、当該エントリを他のＴＬＢに登録するので、無駄な領域の使用を防止することが可能である。【００７９】
例えば、エラーが発生したエントリを登録した場合、登録後にそのエントリを読み出す必要があっても、読み出し値が不正であるなど、読み出すことで問題が発生したり、または、読み出すことが不可能であったりするなどの問題が発生するため、結局、主記憶部から読み出す必要があり、無駄な処理が発生する。このように、読み出せないまたは読み出すことで問題が発生するエントリが存在することとなるため、ｓＴＬＢからエントリを読み出す際に、当該エントリにエラーがあるかないかを判定し、エラーがないエントリだけをｆＴＬＢに登録することができる結果、無駄な領域の使用を防止することが可能である。
【実施例３】
【００８０】
ところで、実施例１では、ｓＴＬＢから読み出したエントリを、そのままｆＴＬＢに登録する場合について説明したが、本実施例はこれに限定されるものではなく、ｓＴＬＢから読み出したエントリをｆＴＬＢに登録する際に、主記憶部からではなくＴＬＢから出力されたエントリであることを示す識別子を付加して登録するようにしてもよい。【００８１】
そこで、実施例３では、ｓＴＬＢから読み出したエントリをｆＴＬＢに登録する際に、主記憶部からではなくＴＬＢから出力されたエントリであることを示す識別子を付加して登録する場合について説明する。図５は、実施例３に係る演算処理装置におけるｓＴＬＢとｆＴＬＢのエントリ登録の流れを説明するための図である。なお、図５で示す各ビットは、「１」であれば有効、「０」であれば無効であることを示している。【００８２】
ここでは、説明上、図５に示すｓＴＬＢは、２ｗａｙのセットアソシアティブＴＬＢであり、ページサイズが８Ｋのエントリを登録することができ、ｆＴＬＢは、ページサイズが６４Ｋのエントリが登録できることとする。そして、ｆＴＬＢには、当該エントリが有効であるか否かを示す「有効ビット」と、他のＴＬＢからリプレースされたエントリであるか否かを示す「リプレースビット」とをそれぞれのエントリごとに備える。また、ｓＴＬＢのｗａｙ０には、ページサイズが８Ｋのエントリ「Ｘ」が登録されており、ｗａｙ１には、ページサイズが８Ｋのエントリ「Ｙ」が登録されている（図５の（１）参照）。なお、「有効ビット」、「リプレースビット」には、当該ビットが有効であれば「１」、無効であれば「０」が登録される。【００８３】
このような状態において、ＣＰＵの演算部／命令制御部がアドレス「Ｘ」を一部として含む「Ｘ１」にアクセスしたとすると、演算処理装置は、「Ｘ１」がｓＴＬＢとｆＴＬＢとの両方に登録されていないことより、主記憶部からアドレス「Ｘ１（ページサイズ＝６４Ｋ）」を読み出して演算部／命令制御部に応答するとともに、「Ｘ１」が主記憶部から読み出されたものであり、直前に使用されたものであるため、この読み出した「Ｘ１」をｆＴＬＢのｗａｙ０に「有効ビット＝１、リプレースビット＝０」として登録する（図５の（２）参照）。【００８４】
その後、ＣＰＵの演算部／命令制御部がアドレス「Ｚ」にアクセスしたとすると、演算処理装置は、「Ｚ」がｓＴＬＢとｆＴＬＢとの両方に登録されていないことより、主記憶部からアドレス「Ｚ（ページサイズ＝８Ｋ）」を読み出して演算部／命令制御部に応答するとともに、この読み出した「Ｚ」をｓＴＬＢのｗａｙ０に登録するために、ｓＴＬＢのｗａｙ０に既に他のエントリが登録されているか否かを判定する。【００８５】
ここでは、読み出した「Ｚ」の登録先であるｓＴＬＢのｗａｙ０に既に「Ｘ」が登録されていることより、演算処理装置は、当該既に登録されているエントリ「Ｘ」を読み出して、当該エントリ「Ｘ」が主記憶から直接出力されたエントリではなく、ＴＬＢから出力されたエントリであることを示す識別子「リプレースビット＝１」と「有効ビット＝１」を付加して、ｆＴＬＢのｗａｙ１に登録する（図５の（３）参照）。【００８６】
このような状態で、ＣＰＵの演算部／命令制御部がアドレス「Ｘ」にアクセスしたとすると、演算処理装置は、「Ｘ」を含む「Ｘ１」と「Ｘ」とがｆＴＬＢに登録されていることより、マルチヒットを検出することとなる。そこで、ｆＴＬＢは、ｓＴＬＢから読み出されて登録されたエントリ「Ｘ」を含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリ「Ｘ」を削除する、つまり、登録されているエントリ「Ｘ」の「有効ビット」を「０」にする（図５の（４）と（５）参照）。【００８７】
このように、実施例３によれば、登録先となるｓＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、当該エントリが主記憶から直接出力されたエントリではなく、ｓＴＬＢから出力されたエントリであることを示す識別子を付加して、ｆＴＬＢに登録するので、主記憶から登録されたエントリか、他のＴＬＢからリプレースされたエントリかを容易に判断することが可能である。【００８８】
また、実施例３によれば、エントリが登録された複数のＴＬＢにおいて、ＴＬＢから読み出されて登録されたエントリを含む同一のページ内エントリが複数個登録されてマルチヒットが検出された場合に、当該エントリを削除するで、マルチヒットによる不整合を防止することが可能である。
【実施例４】
【００８９】
ところで、実施例１〜３では、ｓＴＬＢから読み出したエントリを、領域に空きがあるｆＴＬＢに登録する場合について説明したが、本実施例はこれに限定されるものではなく、領域に空きがないｆＴＬＢに登録することもできる。【００９０】
そこで、実施例４では、図６を用いて、ｓＴＬＢから読み出したエントリを、領域に空きがないｆＴＬＢに登録する場合について説明する。図６は、実施例４に係る演算処理装置におけるｓｆＴＬＢのエントリ登録の流れを説明するための図である。なお、図６で示す各ビットは、「１」であれば有効、「０」であれば無効であることを示している。【００９１】
図６に示すｆＴＬＢは、８つの領域と、それぞれの領域に登録されているエントリが有効である（他のＴＬＢから読み出された場合「有効である」となる）か否かを示す「有効ビット」と、当該エントリがＴＬＢから追い出されないように固定化されているか否かを示す「ロックビット」と、当該エントリが使用された（他のＴＬＢから読み出された場合「使用された」となる）か否かを示す「使用ビット」と、当該エントリが他のＴＬＢから出力されたエントリであるか否かを示す「リプレースビット」とを備える。【００９２】
そして、ここでは、図６の（１）に示すように、ｆＴＬＢは、各領域に順に「エントリ名、有効ビット、ロックビット、使用ビット、リプレースビット」として「ｅｎｔｒｙ０、１、１、０、０」、「ｅｎｔｒｙ１、０、０、０、０」、「ｅｎｔｒｙ２、１、１、１、０」、「ｅｎｔｒｙ３、１、０、１、０」、「ｅｎｔｒｙ４、１、１、０、０」、「ｅｎｔｒｙ５、０、０、０、０」、「ｅｎｔｒｙ６、１、１、１、０」、「ｅｎｔｒｙ７、１、０、０、０」を保持している。【００９３】
このような状態において、演算処理装置は、ｓＴＬＢからエントリを読み出してｆＴＬＢに登録する際、ｆＴＬＢに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録する。【００９４】
具体的に例を挙げて説明すると、演算処理装置は、ｓＴＬＢから「ｅｎｔｒｙ８」を読み出してｆＴＬＢに登録する際、登録先となるｆＴＬＢに登録されているエントリの有効ビットがオフのうち若番である「ｅｎｔｒｙ１」の領域に「ｅｎｔｒｙ８、１、０、１、１」を上書き登録する（図６の（２）参照）。続いて、演算処理装置は、ｓＴＬＢから「ｅｎｔｒｙ９」を読み出してｆＴＬＢに登録する際、登録先となるｆＴＬＢに登録されているエントリの有効ビットがオフのうち若番である「ｅｎｔｒｙ５」の領域に「ｅｎｔｒｙ９、１、０、１、１」を上書き登録する（図６の（３）参照）。【００９５】
そして、演算処理装置は、ｓＴＬＢから「ｅｎｔｒｙ１０」を読み出してｆＴＬＢに登録する際、登録先となるｆＴＬＢに登録されているエントリの有効ビットが全てオンであるため、ロックビットがオフかつ使用ビットがオフの若番のエントリである「ｅｎｔｒｙ７」の領域に「ｅｎｔｒｙ１０、１、０、１、１」を登録する（図６の（４）参照）。【００９６】
続いて、ｓＴＬＢから「ｅｎｔｒｙ１１」が読み出されると、演算処理装置は、登録されているエントリの有効ビットが全てオン、かつ、ロックビットが全てオンまたは使用ビットが全てオンであるため、使用ビットを全てオフする（図６の（５）参照）。つまり、演算処理装置は、ｆＴＬＢに保持される「ｅｎｔｒｙ０、１、１、０、０」、「ｅｎｔｒｙ８、１、０、１、１」、「ｅｎｔｒｙ２、１、１、１、０」、「ｅｎｔｒｙ３、１、０、１、０」、「ｅｎｔｒｙ４、１、１、０、０」、「ｅｎｔｒｙ９、１、０、１、１」、「ｅｎｔｒｙ６、１、１、１、０」、「ｅｎｔｒｙ１０、１、０、１、１」を「ｅｎｔｒｙ０、１、１、０、０」、「ｅｎｔｒｙ８、１、０、０、１」、「ｅｎｔｒｙ２、１、１、０、０」、「ｅｎｔｒｙ３、１、０、０、０」、「ｅｎｔｒｙ４、１、１、０、０」、「ｅｎｔｒｙ９、１、０、０、１」、「ｅｎｔｒｙ６、１、１、０、０」、「ｅｎｔｒｙ１０、１、０、０、１」に変更する。そして、演算処理装置は、ロックビットがオフかつ使用ビットがオフの若番のエントリである「ｅｎｔｒｙ８」に「ｅｎｔｒｙ１１、１、０、１、１」を登録する（図６の（６）参照）。【００９７】
その後、ｓＴＬＢから「ｅｎｔｒｙ」が読み出されるたびに、図６の（４）と同様に、演算処理装置は、登録先となるｆＴＬＢに登録されているエントリの有効ビットが全てオンであるため、ロックビットがオフかつ使用ビットがオフの若番のエントリである領域に登録していく（図６の（７）〜（９）参照）。そして、演算処理装置は、登録されているエントリの有効ビットが全てオン、かつ、ロックビットが全てオンまたは使用ビットが全てオンになると、使用ビットを全てオフして、ロックビットがオフかつ使用ビットがオフの若番のエントリである領域に登録していく。【００９８】
このように、実施例４によれば、ｆＴＬＢは、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがＴＬＢから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、当該エントリが他のＴＬＢから出力されたエントリであるか否かを示すリプレースビットとを備え、主記憶部から出力されたエントリの登録先となるｓＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、ｆＴＬＢに登録されているエントリの有効ビットがオフのうち若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリにリプレースビットを有効にして登録するので、ｆＴＬＢから追い出されないロックエントリ、主記憶から直接登録されたアンロックエントリ、ｓＴＬＢから出力されたリプレースエントリの３種類のエントリが混在しても、スラッシングの発生を防止し、処理性能を向上させることを可能である。
【実施例５】
【００９９】
ところで、実施例１〜４では、ｆＴＬＢが備える全ての領域に対してｓＴＬＢから出力されたエントリを登録（リプレース）する場合について説明したが、本実施例はこれに限定されるものではなく、指定されたｆＴＬＢの一部の領域にのみｓＴＬＢから出力されたエントリを登録することもできる。【０１００】
そこで、実施例５では、図７を用いて、主記憶から直接出力されたエントリを登録する直接登録領域と他のＴＬＢからリプレース制御されたエントリを登録するリプレース登録領域とに分割したｆＬＴＢに対して、ｓＴＬＢから出力されたエントリを登録（リプレース）する場合について説明する。図７は、実施例５に係る演算処理装置における領域が分割されたｆＴＬＢのエントリ登録の流れを説明するための図である。なお、図７で示す各ビットは、「１」であれば有効、「０」であれば無効であることを示している。【０１０１】
図７に示すｆＴＬＢは、実施例４と同様、８つの領域と、それぞれの領域に登録されているエントリが有効であるか否かを示す「有効ビット」と、当該エントリがＴＬＢから追い出されないように固定化されているか否かを示す「ロックビット」と、当該エントリが使用されたか否かを示す「使用ビット」と、当該エントリが他のＴＬＢから出力されたエントリであるか否かを示す「リプレースビット」とを備える。【０１０２】
具体的には、図７の（１）に示すように、ｆＴＬＢは、各領域に順に「エントリ名、有効ビット、ロックビット、使用ビット、リプレースビット」として「ｅｎｔｒｙ０、１、１、０、０」、「ｅｎｔｒｙ１、０、０、０、０」、「ｅｎｔｒｙ２、１、１、１、０」、「ｅｎｔｒｙ３、１、０、１、０」、「ｅｎｔｒｙ４、１、１、０、０」、「ｅｎｔｒｙ５、０、０、０、０」、「ｅｎｔｒｙ６、１、１、１、０」、「ｅｎｔｒｙ７、１、０、０、０」を保持している。【０１０３】
そして、実施例４と異なる点としては、「ｅｎｔｒｙ０」〜「ｅｎｔｒｙ３」までの４領域を主記憶から直接出力されたエントリを登録する直接登録領域とし、「ｅｎｔｒｙ４」〜「ｅｎｔｒｙ７」までの４領域をｓＴＬＢからリプレース制御されたエントリを登録するリプレース登録領域としている点である。なお、直接登録を識別する信号がオンのとき、エントリ４〜７は使用ビットがオンの扱いになり（実際には、使用ビットがオンとは限らない）、リプレース登録を識別する信号がオンのとき、エントリ０〜３は、使用ビットがオンの扱いにする（実際には、使用ビットがオンとは限らない）。【０１０４】
このような状態において、演算処理装置は、ｓＴＬＢからエントリを読み出してｆＴＬＢに登録する際、ｆＴＬＢのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、登録されているエントリの有効ビットが全てオンの場合には、ロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、使用ビットを全てオフにして、ロックビットがオフかつ使用ビットがオフの若番のエントリに登録する。【０１０５】
具体的に例を挙げて説明すると、演算処理装置は、ｓＴＬＢから「ｅｎｔｒｙ８」を読み出してｆＴＬＢに登録する際、登録先となるｆＴＬＢのリプレース領域に登録されているエントリの有効ビットがオフのうち若番である「ｅｎｔｒｙ５」の領域に「ｅｎｔｒｙ８、１、０、１、１」を登録する（図７の（２）参照）。続いて、演算処理装置は、ｓＴＬＢから「ｅｎｔｒｙ９」を読み出してｆＴＬＢに登録する際、登録されているエントリの有効ビットが全てオンであるため、ロックビットがオフかつ使用ビットがオフの若番である「ｅｎｔｒｙ７」の領域に「ｅｎｔｒｙ９、１、０、１、１」を登録する（図７の（３）参照）。【０１０６】
その後、ｓＴＬＢから「ｅｎｔｒｙ１０」が読み出されると、演算処理装置は、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオフまたは使用ビットが全てオフの場合には、リプレース領域の使用ビットを全てオフにする（図７の（４）参照）。つまり、演算処理装置は、リプレース領域である「ｅｎｔｒｙ４、１、１、０、０」、「ｅｎｔｒｙ８、１、０、１、１」、「ｅｎｔｒｙ６、１、１、１、０」、「ｅｎｔｒｙ９、１、０、１、１」を「ｅｎｔｒｙ４、１、１、０、０」、「ｅｎｔｒｙ８、１、０、０、１」、「ｅｎｔｒｙ６、１、１、０、０」、「ｅｎｔｒｙ９、１、０、０、１」に変更する。そして、演算処理装置は、ロックビットがオフかつ使用ビットがオフの若番のエントリである「ｅｎｔｒｙ８」に「ｅｎｔｒｙ１０、１、０、１、１」を登録する（図７の（５）参照）。【０１０７】
その後、ｓＴＬＢから「ｅｎｔｒｙ」が読み出されるたびに、図７の（４）と同様に、演算処理装置は、登録先となるｆＴＬＢのリプレース領域に登録されている登録されているエントリの有効ビットが全てオンであるため、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリである領域に登録していく（図７の（１）〜（３）参照）。そして、演算処理装置は、リプレース領域に登録されているエントリの有効ビットが全てオン、かつ、ロックビットが全てオンまたは使用ビットが全てオンになると、リプレース領域の使用ビットを全てオフして、ロックビットがオフかつ使用ビットがオフの若番のエントリである領域に登録していく。【０１０８】
このように、実施例５によれば、ｆＴＬＢは、主記憶部から直接出力されたエントリを登録する直接登録領域と他のＴＬＢからリプレース制御されたエントリを登録するリプレース登録領域とに分割されており、さらに、登録されているエントリごとに、当該エントリが有効であるか否かを示す有効ビットと、当該エントリがＴＬＢから追い出されないように固定化されているか否かを示すロックビットと、当該エントリが使用されたか否かを示す使用ビットと、リプレース制御されて登録されたエントリか否かを示すリプレースビットとを備え、主記憶部から出力されたエントリの登録先となるｓＴＬＢの領域に既にエントリが登録されていると判定されると、当該既に登録されているエントリを読み出して、ｆＴＬＢのリプレース領域に登録されているエントリの有効ビットがオフのうち若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンの場合には、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録し、リプレース領域に登録されているエントリの有効ビットが全てオンかつ、ロックビットが全てオンまたは使用ビットが全てオンの場合には、リプレース領域の使用ビットを全てオフにして、リプレース領域のロックビットがオフかつ使用ビットがオフの若番のエントリに登録するので、ｓＴＬＢから出力されたエントリを登録するｆＴＬＢを直接登録領域とリプレース登録領域とに分割したとしても、ｆＴＬＢから追い出されないロックエントリ、主記憶から直接登録されたアンロックエントリ、ｓＴＬＢから出力されたリプレースエントリの３種類のエントリが混在することができ、スラッシングの発生を防止し、処理性能を向上させることを可能である。
【実施例６】
【０１０９】
ところで、本実施例は、リプレース先となるｆＴＬＢに登録されているエントリのロックビットが全てオンになった場合に、主記憶部から出力されたエントリの登録先となるｓＴＬＢの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、ｆＴＬＢに登録することを抑止し、リプレース先となるｆＴＬＢに登録されているエントリのロックビットが全てオンの状態から解放された場合に、当該既に登録されているエントリをｓＴＬＢから読み出して、ｆＴＬＢに登録することもできる。【０１１０】
そこで、実施例６では、図８と図９とを用いて、登録先となるＴＬＢに登録されているエントリのロックビットが全てオンになった場合に、リプレースを抑止し、登録先となるＴＬＢに登録されているエントリのロックビットが全てオンの状態から解放された場合に、リプレースを再開する例について説明する。図８は、実施例６に係る演算処理装置における領域が分割されていないｆＴＬＢでのリプレース抑止・再開処理の流れを説明するための図であり、図９は、実施例６に係る演算処理装置における領域が分割されているｆＴＬＢでのリプレース抑止・再開処理の流れを説明するための図である。なお、図８と図９に示す各ビットは、「１」であれば有効、「０」であれば無効であることを示している。【０１１１】
まず、図８を用いて、領域が分割されていないｆＴＬＢでのリプレース抑止・再開処理の流れを説明する。図８に示すｆＴＬＢは、各領域に順に「エントリ名、有効ビット、ロックビット」として「ｅｎｔｒｙ０、１、１」、「ｅｎｔｒｙ１、１、１」、「ｅｎｔｒｙ２、０、０」、「ｅｎｔｒｙ３、１、１」、「ｅｎｔｒｙ４、１、１」、「ｅｎｔｒｙ５、１、１」、「ｅｎｔｒｙ６、１、１」、「ｅｎｔｒｙ７、１、１」を保持している（図８の（１）参照）。【０１１２】
このような状態において、主記憶部から「ｅｎｔｒｙ８」が読み出されると、演算処理装置は、「有効ビット」および「使用ビット」が「０」である「ｅｎｔｒｙ２」に対して「ｅｎｔｒｙ８、１、１」を登録する（図８の（２）参照）。「ｅｎｔｒｙ８、１、１」を登録することで、ｆＴＬＢは、登録されているエントリのロックビットが全てオンとなる、つまり、「ｅｎｔｒｙ０、１、１」、「ｅｎｔｒｙ１、１、１」、「ｅｎｔｒｙ８、１、１」、「ｅｎｔｒｙ３、１、１」、「ｅｎｔｒｙ４、１、１」、「ｅｎｔｒｙ５、１、１」、「ｅｎｔｒｙ６、１、１」、「ｅｎｔｒｙ７、１、１」を保持することとなる。【０１１３】
すると、演算処理装置は、ｆＴＬＢのライトイネーブル信号をオフにして、当該既に登録されているエントリを読み出して登録先となるｆＴＬＢに登録することを抑止する。その後、ｆＴＬＢの「ｅｎｔｒｙ１、１、１」のロックビットが「０」にされたりして、「ｅｎｔｒｙ１、０、０」に無効化されると（図８の（３）参照）、演算処理装置は、ｆＴＬＢのライトイネーブル信号をオンにして、当該既に登録されているエントリを読み出してｆＴＬＢに登録することを再開する。その後のエントリリプレース処理は、実施例１〜５と同様であるので、ここでは省略する。【０１１４】
次に、図９を用いて、領域が分割されているｆＴＬＢでのリプレース抑止・再開処理の流れを説明する。図９に示すｆＴＬＢは、各領域に順に「エントリ名、有効ビット、ロックビット」として「ｅｎｔｒｙ０、１、１」、「ｅｎｔｒｙ１、１、１」、「ｅｎｔｒｙ２、０、０」、「ｅｎｔｒｙ３、１、１」、「ｅｎｔｒｙ４、１、０」、「ｅｎｔｒｙ５、０、１」、「ｅｎｔｒｙ６、１、１」、「ｅｎｔｒｙ７、０、０」を保持している（図９の（１）参照）。【０１１５】
ここで、図８と異なる点は、「ｅｎｔｒｙ０」〜「ｅｎｔｒｙ３」までの４領域を主記憶から直接出力されたエントリを登録する直接登録領域とし、「ｅｎｔｒｙ４」〜「ｅｎｔｒｙ７」までの４領域をｓＴＬＢからリプレース制御されたエントリを登録するリプレース登録領域としている点である。【０１１６】
このような状態において、主記憶部から「ｅｎｔｒｙ８」が読み出されると、演算処理装置は、「有効ビット」および「使用ビット」が「０」である「ｅｎｔｒｙ２」に対して「ｅｎｔｒｙ８、１、１」を上書き登録する（図９の（２）参照）。「ｅｎｔｒｙ８、１、１」を登録することで、ｆＴＬＢは、直接登録領域に登録されているエントリのロックビットが全てオンとなる、つまり、「ｅｎｔｒｙ０、１、１」、「ｅｎｔｒｙ１、１、１」、「ｅｎｔｒｙ８、１、１」、「ｅｎｔｒｙ３、１、１」を保持することとなる。【０１１７】
すると、演算処理装置は、ｆＴＬＢのライトイネーブル信号をオフにして、当該既に登録されているエントリを読み出して登録先となるｆＴＬＢに登録することを抑止する。その後、ｆＴＬＢの「ｅｎｔｒｙ１、１、１」のロックビットが「０」にされたりして、「ｅｎｔｒｙ１、０、０」に無効化されると（図９の（３）参照）、演算処理装置は、ｆＴＬＢのライトイネーブル信号をオンにして、当該既に登録されているエントリを読み出してｆＴＬＢのリプレース領域に登録することを再開する。その後のエントリリプレース処理は、実施例１〜５と同様であるので、ここでは省略する。【０１１８】
このように、実施例５によれば、ｆＴＬＢに登録されているエントリのロックビットが全てオンになった場合に、主記憶部から出力されたエントリの登録先となるｓＴＬＢの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、ｆＴＬＢに登録することを抑止するので、登録できないのにも関わらず発生するエントリ登録処理の発生を防止することが可能であり、また、ロックエントリを確実に保護することが可能である。【０１１９】
また、実施例５によれば、ｆＴＬＢに登録されているエントリのロックビットが全てオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるｓＴＬＢの領域に登録されているエントリを読み出して、ｆＴＬＢへの登録を再開するので、エントリのロックビットが全てオンの状態から解放された場合に、自動的に登録処理を再開することができる結果、ｆＴＬＢへのエントリ登録処理を迅速に再開することが可能である。【０１２０】
また、実施例５によれば、ｆＴＬＢの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるｓＴＬＢの領域に既にエントリが登録されていると判定されても、当該既に登録されているエントリを読み出して、ｆＴＬＢのリプレース領域に登録することを抑止するので、ｆＴＬＢの領域が、直接登録領域とリプレース登録領域とに分割されている場合でも、登録できないのにも関わらず発生するエントリ登録処理の発生を防止することが可能であり、また、ロックエントリを確実に保護することが可能である。【０１２１】
また、実施例５によれば、ｆＴＬＢの直接登録領域に登録されているエントリのいずれかのロックビットがオンの状態から解放された場合に、主記憶部から出力されたエントリの登録先となるｓＴＬＢの領域に登録されているエントリを読み出して、ｆＴＬＢのリプレース領域への登録を再開するので、ｆＴＬＢの領域が、直接登録領域とリプレース登録領域とに分割されている場合でも、直接登録領域のエントリのロックビットが全てオンの状態から解放された場合に、自動的に登録処理を再開することができる結果、ＴＬＢへのエントリ登録処理を迅速に再開することが可能である。
【実施例７】
【０１２２】
さて、これまで本実施例について説明したが、本実施例は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、（１）ｓＴＬＢのウェイ数、（２）システム構成等にそれぞれ区分けして異なる実施例を説明する。【０１２３】
（１）ｓＴＬＢのウェイ数
例えば、実施例１〜６では、ｓＴＬＢのウェイ数を「２」とした場合について説明したが、ウェイ数を限定するものではなく、３ウェイや５ウェイなどでも同様に処理を行うことが可能である。また、ｆＴＬＢの領域も同様に、図示した領域の数に限定するものではない。【０１２４】
（２）システム構成等
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理（例えば、主記憶部からの物理アドレスを含むエントリの出力処理など）の全部または一部を手動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。【０１２５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合（例えば、エントリ登録判定部とリプレース制御部とを統合するなど）して構成することができる。
【産業上の利用可能性】
【０１２６】
以上のように、本演算処理装置、エントリ制御プログラムおよびエントリ制御方法は、主記憶部上に配置される仮想アドレスから物理アドレスへの変換表の一部をエントリとして保持する複数のＴＬＢを備える場合に有用であり、特に、スラッシングの発生を防止し、処理性能を向上させることに適する。
【図１】
2008155851.tif 000003
【図２】
2008155851.tif 000004
【図３】
2008155851.tif 000005
【図４】
2008155851.tif 000006
【図５】
2008155851.tif 000007
【図６】
2008155851.tif 000008
【図７】
2008155851.tif 000009
【図８】
2008155851.tif 000010
【図９】
2008155851.tif 000011
【図１０】
2008155851.tif 000012
【国際調査報告】
2008155851.tif 000013
2008155851.tif 000014
2008155851.tif 000015