(57)【要約】【課題】第１の態様において、アドレス・キャッシュからエントリーを除去するための第１の方法を提供する。【解決手段】前記第１の方法は、（１）レジスタにデータを書き込むステップと、（２）前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去するステップとを備える。他の多くの態様が提供される。【選択図】図１
2007048296.tif 000002
【特許請求の範囲】
【請求項１】
アドレス・キャッシュからエントリーを除去する方法であって、
レジスタにデータを書き込むステップと、
前記レジスタに書き込まれた前記データに基づいて、アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去するステップと
を備える方法。
【請求項２】
前記レジスタにデータを書き込むステップは、ソフトウェアを使用してレジスタにデータを書き込むステップを含み、
前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去するステップは、ハードウェアを使用して、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去するステップを含む
請求項１に記載の方法。
【請求項３】
前記レジスタにデータを書き込むステップは、前記アドレス・キャッシュから除去される第１のアドレス・キャッシュ・エントリーを示すアドレス、前記アドレス・キャッシュから除去されるＮ個のエントリー、およびアドレス・キャッシュ・エントリー除去が進行中であることを示すアドレス・キャッシュ・エントリー除去状態ビットを書き込むステップを含み、
前記レジスタに書き込まれたデータに基づいて、アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去するステップは、除去される前記第１のアドレス・キャッシュ・エントリーから始まる連続アドレスに対応するＮ個のエントリーを前記アドレス・キャッシュから除去するステップを含む、
請求項１に記載の方法。
【請求項４】
アドレス・キャッシュ・エントリー除去状態ビットを書き込んで、アドレス・キャッシュ・エントリー除去が完了していることを示すステップをさらに備える、請求項３に記載の方法。
【請求項５】
前記アドレス・キャッシュ・エントリー除去状態ビットを読み出して、アドレス・キャッシュ・エントリー除去が完了していることを決定するステップと、
アドレス・キャッシュ・エントリーにアクセスして、入力／出力（Ｉ／Ｏ）アドレス変換を行うステップと
をさらに備える、請求項４に記載の方法。
【請求項６】
前記レジスタに書き込まれたデータに基づいて、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去するステップは、前記レジスタに書き込まれたデータに基づいて、前記アドレス・キャッシュからの連続アドレスに対応する複数のアドレス・キャッシュ・エントリーを除去するステップを含む、請求項１に記載の方法。
【請求項７】
前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから前記複数のアドレス・キャッシュ・エントリーを除去した後、アドレス・キャッシュ・エントリーにアクセスして入力／出力（Ｉ／Ｏ）アドレス変換を行うステップをさらに備える、請求項１に記載の方法。
【請求項８】
アドレス・キャッシュからエントリーを除去する装置であって、
アドレス・キャッシュに結合するように適合され、
レジスタに書き込まれたデータを保存し、
前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去する
ようにさらに適合されている、
前記レジスタを含む論理を備える装置。
【請求項９】
前記論理は、
ソフトウェアによって前記レジスタに書き込まれたデータを保存し、
ソフトウェアによって前記レジスタに書き込まれたデータに基づいて、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去する
ようにさらに適合されている、請求項８に記載の装置。
【請求項１０】
前記論理は、
前記アドレス・キャッシュから除去される第１のアドレス・キャッシュ・エントリーを示すアドレス、前記アドレス・キャッシュから除去されるＮ個のエントリー、およびアドレス・キャッシュ・エントリー除去状態ビットを保存して、アドレス・キャッシュ・エントリー除去をレジスタに書き込み中であることを示し、
除去される前記第１のアドレス・キャッシュ・エントリーから始まる連続アドレスに対応するＮ個のエントリーを前記アドレス・キャッシュから除去する
ようにさらに適合されている、請求項８に記載の装置。
【請求項１１】
前記論理は、前記レジスタに書き込まれるアドレス・キャッシュ・エントリー除去状態ビットを保存するようにさらに適合されて、アドレス・キャッシュ・エントリー除去が完了していることを示す、請求項１０に記載の装置。
【請求項１２】
前記論理は、前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから連続アドレスに対応する複数のアドレス・キャッシュ・エントリーを除去するようにさらに適合されている、請求項８に記載の装置。
【請求項１３】
前記論理は、
前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから前記複数のアドレス・キャッシュ・エントリーを除去した後、入力／出力（Ｉ／Ｏ）アドレス変換が行なわれるように、アドレス・キャッシュ・エントリーにアクセスを可能とするようにさらに適合されている、請求項８に記載の装置。
【請求項１４】
アドレス・キャッシュからエントリーを除去するためのシステムであって、
ソフトウェアを実行するようにさらに適合されているプロセッサと、
アドレス・キャッシュと、
プロセッサおよびアドレス・キャッシュに結合されたレジスタを含む論理を有するアドレス・キャッシュからエントリーを除去する装置と
を含み、前記システムは、
前記レジスタにデータを書き込み、
前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去する
ように適合されている、システム。
【請求項１５】
前記システムは、
ソフトウェアを使用して、前記レジスタにデータを書き込み、
前記論理を使用して、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去する
ようにさらに適合されている、請求項１４に記載のシステム。
【請求項１６】
前記システムは、
前記アドレス・キャッシュから除去される第１のアドレス・キャッシュ・エントリーを示すアドレス、前記アドレス・キャッシュから除去されるＮ個のエントリー、およびアドレス・キャッシュ・エントリー除去状態ビットを書き込んで、アドレス・キャッシュ・エントリー除去が進行中であることを示し、
除去される前記第１のアドレス・キャッシュ・エントリーから始まる連続アドレスに対応するＮ個のエントリーを前記アドレス・キャッシュから除去する
ようにさらに適合されている、請求項１４に記載のシステム。
【請求項１７】
前記システムは、前記アドレス・キャッシュ・エントリー除去状態ビットを書き込んで、アドレス・キャッシュ・エントリー除去が完了していることを示すようにさらに適合された、請求項１６に記載のシステム。
【請求項１８】
前記システムは、
前記アドレス・キャッシュ・エントリー除去状態ビットを読み出して、アドレス・キャッシュ・エントリー除去が完了していることを決定し、
アドレス・キャッシュ・エントリーにアクセスして、入力／出力（Ｉ／Ｏ）アドレス変換を行う
ようにさらに適合された、請求項１７に記載のシステム。
【請求項１９】
前記システムは、前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから連続アドレスに対応する複数のアドレス・キャッシュ・エントリーを除去するようにさらに適合されている、請求項１４に記載のシステム。
【請求項２０】
前記システムは、前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから前記複数のアドレス・キャッシュ・エントリーを除去した後、アドレス・キャッシュ・エントリーにアクセスして、入力／出力（Ｉ／Ｏ）アドレス変換を行うようにさらに適合されている、請求項１４に記載のシステム。
【請求項２１】
アドレス・キャッシュ・エントリーは、複数のページの１つに相当し、ページは、複数のサイズの１つとすることができる、請求項１に記載の方法。
【請求項２２】
データ・キャッシュからエントリーを除去する方法であって、
レジスタにデータを書き込むステップと、
前記レジスタに書き込まれた前記データに基づいて、前記データ・キャッシュから複数のデータ・キャッシュ・エントリーを除去するステップと
を含む方法。
【請求項２３】
前記レジスタにデータを書き込むステップは、ソフトウェアを使用して、前記レジスタにデータを書き込むステップを含み、
前記データ・キャッシュから複数のデータ・キャッシュ・エントリーを除去するステップは、ハードウェアを使用して、前記データ・キャッシュから複数のデータ・キャッシュ・エントリーを除去するステップを含む、
請求項２２に記載の方法。
【請求項２４】
前記レジスタにデータを書き込むステップは、前記データ・キャッシュから除去される第１のデータ・キャッシュ・エントリーを示すアドレス、前記データ・キャッシュから除去されるＮ個のエントリー、およびデータ・キャッシュ・エントリー除去状態ビットを書き込んで、データ・キャッシュ・エントリー除去が進行中であることを示すステップを含み、
前記レジスタに書き込まれた前記データに基づいて、前記データ・キャッシュから複数のデータ・キャッシュ・エントリーを除去するステップは、除去される前記第１のデータ・キャッシュ・エントリーから始まる連続アドレスに対応するＮ個のエントリーを前記データ・キャッシュから除去するステップを含む、
請求項２２に記載の方法。
【請求項２５】
前記データ・キャッシュ・エントリー除去状態ビットを書き込んで、データ・キャッシュ・エントリー除去が完了していることを示すステップをさらに含む、請求項２４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステムに関し、より詳細には、複数のアドレス・キャッシュ・エントリーを無効にする方法および装置に関する。
【背景技術】
【０００２】
コンピュータシステムのメモリは、入力／出力（Ｉ／Ｏ）アドレスおよび実アドレスのマッピングを含むテーブルを含み、入力／出力と実アドレスの変換を可能にする。コンピュータシステムは、変換表から、頻繁にアクセスされたエントリーを局所的に保存するための、アドレス・キャッシュ（例えば、変換索引バッファ（ＴＬＢ））を含むことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
Ｉ／Ｏ操作の完了に際して、変換表とＴＬＢで１つまたは複数のエントリーが無効にされる必要がある。従来の方法および装置は、各アドレス・キャッシュ・エントリーに関して無効操作を要求した後、システム性能に悪影響を及ぼすので、ＴＬＢエントリーを無効にするそれら方法および装置は高価である。さらに、メモリをすべてスヌープする他の方法は、変換表に書き込み、そのとき、対応するアドレス・キャッシュ・エントリーを無効にするためには、多大なチップ面積を必要とする。従って、アドレス・キャッシュ・エントリーを無効にする改良方法および装置が求められる。
【課題を解決するための手段】
【０００４】
本発明の第１の態様では、第１の方法は、アドレス・キャッシュからエントリーを除去するために提供される。前記第１の方法は、（１）レジスタにデータを書き込むステップと、（２）前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去するステップとを備える。
【０００５】
本発明の第２の態様では、第２の方法は、データ・キャッシュからエントリーを除去するために提供される。前記第２の方法は、（１）レジスタにデータを書き込むステップと、（２）前記レジスタに書き込まれた前記データに基づいて、前記データ・キャッシュから複数のデータ・キャッシュ・エントリーを除去するステップとを備える。
【０００６】
本発明の第３の態様では、第１の装置は、アドレス・キャッシュからエントリーを除去するために提供される。前記第１の装置は、前記アドレス・キャッシュに結合するように適合され、（１）レジスタに書き込まれたデータを保存し、（２）前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去するようにさらに適合されている、前記レジスタを含む論理を備える。
【０００７】
本発明の第４の態様では、第１のシステムは、アドレス・キャッシュからエントリーを除去するために提供される。前記第１のシステムは、（１）ソフトウェアを実行するように適合されているプロセッサと、（２）アドレス・キャッシュと、（３）前記プロセッサおよびアドレス・キャッシュに結合されたレジスタを含めて、論理を有するアドレス・キャッシュからエントリーを除去する装置とを含む。前記システムは、（ａ）前記レジスタにデータを書き込み、（ｂ）前記レジスタに書き込まれた前記データに基づいて、前記アドレス・キャッシュから複数のアドレス・キャッシュ・エントリーを除去するように適合されている。他の複数の態様は、本発明のこれらおよび他の態様に従って提供される。
【０００８】
本発明の他の特徴および態様は、次の発明を実施するための最良の形態、添付の請求項および添付の図面からより完全に明らかとなる。
【発明を実施するための最良の形態】
【０００９】
本発明は、アドレス・キャッシュ・エントリーを（例えば、無効にすることによって）除去する方法および装置を提供し、それらは、従来のシステムに関係するコストを回避する。より詳細には、本発明は、複数（例えば、連続する）アドレス・キャッシュ・エントリーを除去する方法および装置を提供する。レジスタを使用して、除去される第１のアドレス・キャッシュ・エントリーを示すアドレス、除去される多くのアドレス・キャッシュ・エントリー（例えば、第１のアドレス・キャッシュ・エントリーを含む）を示すカウント、およびソフトウェア（例えば、コンピュータシステムの操作システム（ＯＳ））が、除去されるアドレス・キャッシュ・エントリーを使用するのを防ぐ無効状態ビットを保存することができる。前記レジスタに結合された論理を使用して、要求に応じ、第１のアドレス・キャッシュ・エントリーを含めて、連続アドレスに対応する多くのアドレス・キャッシュ・エントリーを除去することができる。一度完了すると、前記論理は、無効状態ビットを更新して、アドレス・キャッシュ中のエントリーの除去が完了していることをシステム（例えば、ＯＳ）に示すことができる。したがって、続いて行うＩ／Ｏ操作は、不正確なデータを含めて、アドレス・キャッシュ・エントリーにアクセスしない。このように、本発明は、アドレス・キャッシュ・エントリーを除去するために必要な論理量を低減することができるとともに、アドレス・キャッシュ・エントリーを除去するために必要な多くのソフトウェアコマンドを低減することができる。このように、本発明は、従来のシステムに関係するコストのない、アドレス・キャッシュ・エントリーを除去する方法および装置を提供する。
【００１０】
図１は、本発明の実施例によるアドレス・キャッシュ・エントリーを除去するシステム１００のブロック図である。例えば、システム１００は、コンピューターまたは同様の装置の一部を形成することができる。図１を参照すると、システム１００は、Ｉ／Ｏバス１０６を介してＩ／Ｏ変換論理１０４に結合、通信するようになされている１つまたは複数のＩ／Ｏ装置１０２（１つのみ示す）を含むことができる。Ｉ／Ｏ変換論理１０４は、Ｉ／Ｏアドレスを実アドレスに変換するために使用されたデータを保存または検索あるいはその両方を行うことができる。Ｉ／Ｏ変換論理１０４は、システムバス１１０を介して、メモリ１０８（例えば、ＤＲＡＭまたは他の適切なメモリ）に結合され通信することができる。メモリ１０８は、Ｉ／Ｏアドレスおよびそれらと関連するそれぞれの実アドレスを保存するようになされている変換表１１２を含むことができる。このように、変換表１１２は、例えば、Ｉ／Ｏ装置１０２によって、メモリアクセスの間に、Ｉ／Ｏアドレスを実アドレスに、またその逆に変換することができる。変換表１１２は大きくすることができ（例えば８ＭＢ）、１つまたは複数のＩ／Ｏ装置１０２が、頻繁にＩ／Ｏ変換論理１０４を介して変換表１１２の情報にアクセスすることができるので、Ｉ／Ｏ変換論理１０４は、頻繁にアクセスされる変換表エントリーを局所的に保存するようになされているアドレス・キャッシュ１１４を含むことができる。従って、変換表１１２（例えば、システムバス１１０を介して）からアドレス変換データを検索せずに、Ｉ／Ｏ操作を行なっている間、システム１００は、アドレス・キャッシュ１１４からそのようなデータを検索することができる。アドレス・キャッシュ１１４は、ディレクトリ配列１１６およびデータ配列１１８を含むことができる。ディレクトリ配列１１６は、データ配列１１８で対応するアドレス・キャッシュデータエントリーに関連するアドレス・キャッシュディレクトリ情報を保存するエントリーを含むことができる。実施例によっては、アドレス・キャッシュ１１４は、変換索引バッファ（ＴＬＢ）または他の適切な保存領域とすることができる。一実施例では、アドレス・キャッシュ１１４は、６４のエントリー（より多くのまたはより少ないエントリーを使用することができるが）を含むことができる。
【００１１】
一旦Ｉ／Ｏ操作（例えば、Ｉ／Ｏ装置１０２によるメモリアクセス）を行えば、変換表１１２またはアドレス・キャッシュ１１４あるいはその両方からのデータ変換エントリーを除去することができる。したがって、システム１００は、Ｉ／Ｏ変換論理１０４に結合されおよび含まれる、あるいは結合されまたは含まれるアドレス・キャッシュ・エントリー除去論理（以下に、「ＡＣＥＲ」）１２０を含むことができる。より詳細には、ＡＣＥＲ１２０は、アドレス・キャッシュ１１４のディレクトリ配列１１６に結合することができる。ＡＣＥＲ１２０は、例えば、システムＯＳなどのソフトウェアによって、ＡＣＥＲ１２０に書き込まれたデータに基づいて、アドレス・キャッシュ１１４から１つまたは複数のエントリーを除去するようになされることができる。例えば、ＡＣＥＲ１２０に書き込まれたデータに基づいて、ＡＣＥＲ１２０は、連続アドレスに対応する複数のアドレス・キャッシュ・エントリーを除去することができる。より詳細には、ＡＣＥＲ１２０は、アドレス・キャッシュ・エントリーが無効であることをビットが示すように、アドレス・キャッシュ・エントリーに関係するビット（例えば、有効ビット）を設定することができる。このように、システム１００（例えば、それによって実行されたソフトウェア）は、アドレス・キャッシュ１１４全体を無効にせずに、アドレス・キャッシュ１１４から複数のエントリーを除去することができる。さらに、システム１００は、複数の命令を使用して複数のアドレス・キャッシュ・エントリーをそれぞれ除去するのではなく、単一の命令（例えば、ＡＣＥＲ１２０にデータを書き込むことによる）でアドレス・キャッシュ１１４から複数のエントリーを除去することができる。このように、ＡＣＥＲ１２０は、効率的にアドレス・キャッシュ・エントリーを除去することができる。ＡＣＥＲ１２０の詳細を、図２を参照して以下に説明する。
【００１２】
図２は、本発明の実施例によるアドレス・キャッシュ・エントリーを除去するシステムに含まれたアドレス・キャッシュ・エントリー除去論理のブロック図である。図２を参照して述べるように、ＡＣＥＲ１２０は、アドレス・キャッシュ１１４のディレクトリ配列１１６に結合することができる。ＡＣＥＲ１２０は、データを保存するようになされているアドレス・キャッシュ・エントリー無効レジスタ（以下、「無効レジスタ」）２００を含むことができる。例えば、無効レジスタ２００は、アドレス・キャッシュ１１４から除去される第１のアドレス・キャッシュ・エントリーのアドレスを示す第１のデータ２０２を保存することができる。アドレスの第１の部分は、アドレス・キャッシュ１１４にインデックスを付けるために使用することができ、それにより、アクセスアドレス・キャッシュ・エントリーおよびアドレスの第２の部分を使用して、アクセスされたアドレス・キャッシュ・エントリーが、第１のデータ２０２の第２の部分によって識別されたエントリーと一致するかどうか決定することができる。無効レジスタ２００は、アドレス・キャッシュから除去されるエントリーの数を示す第２のデータ２０４を保存することができる。さらに、無効レジスタ２００は、アドレス・キャッシュ・エントリー除去の状態を示す第３のデータ２０６を保存することができる。このように、第３のデータ２０６は、無効状態ビットとして役立つことができる。
【００１３】
無効レジスタ２００は、第１のデータ２０２（例えば、アドレス）の第１の部分が、第１の入力２１０を介して第１マルチプレクサ２０８によって入力することができるように、第１マルチプレクサ２０８に結合することができる。第１マルチプレクサ２０８の出力２１２は、第１マルチプレクサ２０８から出力されたデータ（例えば、アドレス）を保存するようになされた第２レジスタ２１４に結合することができる。このように、第２レジスタ２１４は、アドレス・キャッシュ１１４から除去されるアドレスを保存することができる。第２レジスタ２１４の出力２１６は、入力２２０を介して論理２１８をインクリメントするために結合することができる。インクリメント論理２１８は、次の有効アドレスに入力アドレスをインクリメントし、出力２２２を介してインクリメントされたアドレスを出力するようになされることができる。
【００１４】
インクリメント論理２１８の出力２２２は、インクリメントされたアドレスが、第１マルチプレクサ２０８によって入力されることができるように、第１マルチプレクサ２０８の第２の入力２２４に結合することができる。第１マルチプレクサ２０８は、第１マルチプレクサ２０８の第１または第２の入力２１０、２２４によって入力されたデータを選択的に出力するようになされることができる。例えば、第１の期間（例えば、１つまたは複数のクロックサイクル）に、第１マルチプレクサ２０８は、最初に、第１のデータ２０２の第１の部分を出力することができる。次の期間に、第１マルチプレクサ２０８は、インクリメント論理２１８によってインクリメントされた第１のアドレス・キャッシュ・エントリーアドレスの第１の部分を表わすデータを出力して、第２のアドレス・キャッシュ・エントリーアドレス（例えば、インクリメントされたアドレス）を形成することができる。同様に、次の期間に、第１マルチプレクサ２０８は、インクリメント論理２１８によってインクリメントされた第２のアドレス・キャッシュ・エントリーアドレスの第１の部分を表わすデータを出力して、第３のアドレス・キャッシュ・エントリーアドレスを形成することができる。
【００１５】
第２レジスタ２１４の出力２１６は、アドレス・キャッシュ１１４のディレクトリ配列１１６へのインデックスとして役立つことができる。例えば、第２レジスタ２１４の出力２１６は、ディレクトリ配列１１６の第１の入力２２６に結合することができ、そのような入力に基づいて、ディレクトリ配列１１６から情報を出力する役目をすることができる。また、第２レジスタ２１４の出力２１６は、その入力２３０を介してハッシング論理２２８に結合することができる。ハッシング論理２２８の出力２３２は、ディレクトリ配列１１６の第１の入力２２６に結合することができる。ハッシング論理２２８は、ハッシング論理２２８によって入力されたデータを、ディレクトリ配列１１６にアクセスし、かつ出力２３２を介してそのような値を出力するために使用することができる値（例えば、インデックス）に変換するようになされることができる。ハッシング論理２２８によって入力されたデータをインデックスに変換するために、ハッシング論理２２８は、論理ＥＸＣＬＵＳＩＶＥ−ＯＲ（ＸＯＲ）操作または他の適切な論理演算を行なうことができる。
【００１６】
ＡＣＥＲ１２０は、無効レジスタ２００およびアドレス・キャッシュ１１４に結合された比較論理２３４を含むことができる。より詳細には、比較論理２３４の第１の入力２３６は、第１のアドレスの第２の部分が、比較論理２３４によって入力することかできるように、無効レジスタ２００に結合することができる。さらに、比較論理２３４（例えば、第２、第３の入力２３８、２４０）のさらなる入力は、アドレス・キャッシュ１１４の対応する出力２４２〜２４４に結合することができる。比較論理２３４は、アドレス・キャッシュ１１４（例えば、アドレス・キャッシュ１１４のディレクトリ配列１１６）の対応する入力（例えば、第２、第３の入力２５０、２５２）に結合された１つまたは複数の出力（例えば、第１および第２の出力２４６、２４８）を含むことができる。比較論理２３４は、第１の入力２３６を介して入力された第１のアドレスの第２の部分を、第２と第３の入力２３８、２４０を介して入力されたそれぞれのデータ（例えば、アドレスデータ）と比較するするようになされることができる。第２または３の入力２３８、２４０を介して入力されたデータが、アドレス・キャッシュ・エントリーに一致し、第１の入力２３６によって入力されたデータと一致する場合、比較論理２３４は、一致するエントリーに対応する出力２４６、２４８を介してアドレス・キャッシュ１１４にデータを出力することができる。一致するアドレス・キャッシュ・エントリーが無効であることを有効ビットが示すように、そのようなデータは、一致するエントリーに対して有効ビットの値として役立つことができる。このように、アドレス・キャッシュ・エントリーは、除去することができる。
【００１７】
ＡＣＥＲ１２０は、アドレス・キャッシュ１１４からデータを読み出し、アドレス・キャッシュ１１４から出力されたデータを第１のデータ２０２の第１の部分を比較し、またはアドレス・キャッシュ１１４にデータを書き込むことにより、あるいはそれらを組合わせて行う中で第２レジスタ２１４によって出力されたデータをインクリメントするようになされている（ＡＣＥＲ１２０は、遅かれ早かれ、第２レジスタ２１４によって出力されるデータをインクリメントすることができるが）。
【００１８】
さらに、無効レジスタ２００は、第２のデータ２０４が、第１の入力２５６を介して第２マルチプレクサ２５４によって入力することができるように、第２マルチプレクサ２５４に結合することができる。第２マルチプレクサ２５４の出力２５８は、第２マルチプレクサ２５４から出力されたデータ（例えば、アドレス・キャッシュ１１４から除去されるエントリーの数を示す値）を保存するようになされている第３レジスタ２６０に結合することができる。第３レジスタ２６０の出力２６２は、その入力２６６を介して論理２６４をデクリメントするために結合することができる。デクリメント論理２６４は、入力値（例えば、アドレス・キャッシュ１１４から除去されるエントリーの数を示す値）をデクリメントし（例えば１で）、出力２６８を介してデクリメントされた値を出力するようになされることができる。ＡＣＥＲ１２０は、第２レジスタ２１４（ＡＣＥＲ１２０は、遅かれ早かれ、第３レジスタから出力されたデータをデクリメントすることができるが）によって出力されたデータをインクリメントするとともに、第３レジスタ２６０から出力されたデータをデクリメントするようになされることができる。
【００１９】
デクリメント論理２６４の出力２６８は、デクリメントされた値が、第２マルチプレクサ２５４によって入力することができるように、第２マルチプレクサ２５４の第２の入力２７０に結合することができる。第２マルチプレクサ２５４は、第２マルチプレクサ２５４の第１または第２の入力２５６、２７０によって入力されたデータを選択的に出力するようになされることができる。例えば、第１の期間（例えば、１つまたは複数のクロックサイクル）に、第２マルチプレクサ２５４は、最初に、第２のデータ２０４を出力することができる。次の期間（例えば、第２の期間）に、第２マルチプレクサ２５４は、１だけデクリメントされた第２のデータを表わすデータを出力することができる。同様に、次の期間（例えば、第３の期間）に、第２マルチプレクサ２５４は、２等だけデクリメントされた第２のデータを表わすデータを出力することができる。
【００２０】
第３レジスタ２６０は、無効状態ビット設定論理２７２に結合することができる。より詳細には、第３レジスタ２６０の出力２６２は、無効状態ビット設定論理２７２の入力２７４に結合することができる。無効状態ビット設定論理２７２は、出力２６２が０値を有する場合に検知することができる。無効状態ビット設定論理２７２の出力２７６は、無効状態ビット設定論理２７２によって出力されるデータ（例えば、０値）が、第３のデータ２０６を更新して、１つまたは複数のアドレス・キャッシュ・エントリーの除去が完了していることを示すことができるように、無効レジスタ２００に結合することができる。
【００２１】
アドレス・キャッシュ・エントリーを除去するためのシステムの操作は、図１、２、および本発明の実施例によってアドレス・キャッシュ・エントリーを除去する方法を示す図３を参照して、以下に説明する。図３を参照すると、ステップ３０２で、方法３００は開始する。ステップ３０４で、データをレジスタに書き込むことができる。例えば、システム１００（例えば、それによって実行されたソフトウェア１０４）は、ＡＣＥＲ１２０の無効レジスタ２００にデータを書き込むことができる。より詳細には、ソフトウェア１０４は、無効レジスタ２００に、第１のデータ２０２を書き込むことができ、該データ２０２は、アドレス・キャッシュ１１４から除去される第１のエントリーのアドレスを示す。さらに、システム１００（例えば、それによって実行されたソフトウェア１０４）は、第２のデータ２０４を無効レジスタ２００に書き込むことができ、該データ２０４は、アドレス・キャッシュ１１４から除去されるエントリーの数Ｎを示す。さらに、システム１００（例えば、それによって実行されたソフトウェア１０４）は、第３のデータ２０６を、無効レジスタ２００に書き込むことができ、該データ２０６は、アドレス・キャッシュ・エントリー除去の状態を示し、それによって、無効状態ビットとして役立つ。第１〜第３のデータ２０２〜２０６を上述したが、多量または少量および異なるデータ、あるいは多量または少量または異なるデータを無効レジスタ２００に書き込むことができる。３つのデータ２０２〜２０６はすべて、１つの操作（データ２０２〜２０６は、異なる時に書き込むことができる）として同時に書き込むことができる。
【００２２】
例えば、Ｉ／Ｏ操作を行なった後、システム１００は、変換表１１２またはアドレス・キャッシュ１１４あるいはその両方から１つまたは複数のエントリーを除去する必要があってもよい（例えば、無効にすることによって）。従って、第１の期間（例えば、１つまたは複数のクロックサイクル）に、システム１００は、第１〜第３のデータ２０２〜２０６を無効レジスタ２００に書き込むことができる。第３のデータ２０６は、１つまたは複数のアドレス・キャッシュ・エントリーの除去がペンディング中であることを示すことができる（例えば、ソフトウェア１０４に）。
【００２３】
ステップ３０６で、複数のアドレス・キャッシュ・エントリーは、レジスタに書き込まれたデータに基づいて、アドレス・キャッシュから除去することができる。無効レジスタ２００に書き込まれたデータは、ハードウェアシーケンスを開始して、アドレス・キャッシュ・エントリーを（例えば、無効によって）除去することができる。より詳細には、無効レジスタ２００に書き込まれた第１〜第３のデータ２０２〜２０６に基づいて、ＡＣＥＲ１２０は、アドレス・キャッシュ１１４から１つまたは複数のエントリー（例えば、そのようなエントリーを無効にすることによって）を除去することができる。例えば、無効レジスタ２００に書き込まれた第１〜第３のデータ２０２〜２０６は、２つのエントリー（例えば、連続アドレスに対応する）がアドレス０００Ａでエントリーから始めて、アドレス・キャッシュから除去することを示すことができ、１つまたは複数のアドレス・キャッシュ・エントリーの除去がペンディング中であることを示すことができる。したがって、第２の期間に、ＡＣＥＲ１２０は、無効レジスタ２００から第１マルチプレクサ２０８に、第１のデータ２０２（例えば、アドレス・キャッシュ１１４から除去される第１のエントリーのアドレス）の第１の部分を出力することができる。第１のデータ２０２の第１の部分は、第１マルチプレクサ２０８から第２レジスタ２１４に出力され、そこに保存することができる。
【００２４】
第３の期間に、第１のデータ２０２の第１の部分は、アドレス・キャッシュ１１４で１つまたは複数のエントリーにアクセスするために使用することができる。例えば、第１のデータ２０２の第１の部分を、第２レジスタ２１４から出力し、ハッシング論理２２８によって入力することができる。第１のデータ２０２の第１の部分に基づいて、ハッシング論理２２８は、データ（例えば、インデックス）を作成して、アドレス・キャッシュ１１４に出力することができ、該データは、アドレス・キャッシュ１１４（例えば、そのディレクトリ配列１１６）にアクセスするために使用することができる。そのようなデータに基づいて、アドレス・キャッシュ１１４は、１つまたは複数のアドレス・キャッシュ１１４のエントリーに対応するデータを出力することができる。例えば、アドレス・キャッシュ１１４が、２方向のセット・アソシエィティブ・キャッシュである場合、２つのエントリーに対応するデータは、アドレス・キャッシュ１１４から出力することができる。同様に、アドレス・キャッシュ１１４が、４方向のセット・アソシエィティブ・キャッシュである場合、４つのエントリーに対応するデータは、アドレス・キャッシュ１１４から出力することができる。エントリーに対応するデータは、エントリー（例えば、タグ）に関係するアドレスを示すデータ、およびアクセスされたエントリーが有効かどうか（例えば、有効ビット）を示すデータを含むことができる。しかし、エントリーに対応するデータは、多量または少量および異なるデータ、あるいは多量または少量または異なるデータを含むことができる。例えば、実施例によっては、エントリーに対応するデータは、アクセスされたエントリーが「最も長い間使われていない」（ＬＲＵ）エントリー（例えば、ＬＲＵビット）の１つかどうかを示すデータを含むことができる。
【００２５】
アドレス・キャッシュ１１４から出力されたエントリーに対応するデータは、比較論理２３４によって入力することができる。さらに、第１のデータ２０２（例えば、第１のアドレス）の第２の部分は、無効レジスタ２００から出力することができ、比較論理２３４によって入力することができる。比較論理２３４は、エントリーに対応するデータに含まれた有効ビットにアクセスすることができ、有効ビットは、アドレス・キャッシュ１１４から出力される。有効ビットがエントリーに対応するデータを示し、したがって、エントリーが有効な場合、比較論理２３４は、そのようなエントリー（例えば、タグ）に関係するアドレスを示すデータを、第１のデータ２０２の第２の部分と比較することができる。データが一致する場合、比較論理２３４は、そのようなアドレス・キャッシュ・エントリーの有効ビットを更新（例えば、書き込む）して、エントリーが無効であることを示すことができる。
このように、エントリーは、アドレス・キャッシュ１１４から除去することができる。また、データが一致しない場合、比較論理２３４は、そのようなアドレス・キャッシュ・エントリーの有効ビットを更新しない。
【００２６】
さらに、第３の期間に、インクリメント論理２１８は、データ２０２を更新することができ、該データ２０２は、アドレスの一部を表し、第２レジスタ２１４から出力して、次のアドレス（例えば０００Ｂ）の一部を表わす新しいデータを形成することができる。新しいデータを、第１マルチプレクサ２０８によって入力し、第１マルチプレクサ２０８から出力し、第３の期間または次の期間（例えば、第４の期間）に、第２レジスタ２１４によって入力し、第２レジスタ２１４から出力することができる。次の期間に、新しいデータを使用して、第１のデータ２０２の第１の部分を使用する上述されたものに類似する方法で、アドレス・キャッシュ１１４の１つまたは複数のエントリーにアクセスし、場合によっては除去する（例えば、無効にすることによって）ことができる。
【００２７】
さらに、第３の期間に、アドレス・キャッシュ１１４から除去されたエントリーの数をカウントするために、無効レジスタ２００は、第２マルチプレクサ２５４に、第２のデータ２０４を出力することができ、該第２のデータ２０４は、アドレス・キャッシュ１１４から除去されるエントリーの数を表わす。第２マルチプレクサ２５４は、デクリメント論理に第２のデータ２０４を出力することができる（そのようなデータは、第２マルチプレクサ２５４または第３レジスタ２６０あるいはその両方から、遅かれ早かれ出力することができる）。また、第２のデータ２０４は、第３レジスタ２６０から無効状態ビット設定論理２７２に出力することができ、該無効状態ビット設定論理２７２は、アドレス・キャッシュ・エントリー除去の状態がそれに基づくことを示す第３のデータ２０６を更新することができる。より詳細には、第３レジスタ２６０から出力されたデータが、０エントリーがアドレス・キャッシュ１１４から除去されることを示す場合、無効状態ビット設定論理２７２は、第３のデータ２０６を更新して、アドレス・キャッシュ・エントリー除去が完了していることを示すことができる。
【００２８】
第３の期間（例えば、第１のデータ２０２（例えば、アドレス）の第１の部分が、アドレス・キャッシュ１１４の対応するエントリーからデータを読み出し、またはアドレス・キャッシュ１１４の対応するエントリーにデータを書き込むあるいはその両方を行うために使用する間）に、デクリメント論理２６４は、第３のデータ２０６をデクリメントすることができ、該第３のデータ２０６は、１でアドレス・キャッシュ１１４から除去されるエントリーの数を表わし、アドレス・キャッシュ１１４から除去されるエントリーの新しい数を形成する。アドレス・キャッシュ１１４から除去されるエントリーの新しい数は、第２マルチプレクサ２５４によって入力し、第２マルチプレクサ２５４から出力することができ、第３の期間あるいは次の期間（例えば、第４の期間）に、デクリメント論理２６４および無効状態ビット設定論理２７２に第３レジスタ２６０で入力し第３レジスタ２６０から出力することができる。次の期間（例えば、新しいデータを使用してアクセスし、できる限りアドレス・キャッシュ１１４の１つまたは複数のエントリーを除去することができる期間）に、デクリメント論理２６４は、上述するように１でアドレス・キャッシュ１１４から除去されるエントリーの新しい数をデクリメントすることができる。
【００２９】
無効状態ビット設定論理２７２によって受けたアドレス・キャッシュ１１４から除去されるエントリーの新しい数が、所定回数（例えば、０）であるまで、上記プロセスを繰り返すことができる。一旦、無効状態ビット設定論理２７２によって受けたアドレス・キャッシュ１１４から除去されるエントリーの新しい数が、所定回数（例えば、０）ならば、無効状態ビット設定論理２７２は、アドレス・キャッシュ・エントリー除去が完了していることを示す第３のデータ２０６を更新することができる。従って、システム１００（例えば、それによって実行されたソフトウェア１０４）は、第３のデータ２０６（例えば、無効レジスタ２００の獲得による）にアクセスし、アドレス・キャッシュ・エントリー除去が完了していることを決定することができる。
【００３０】
その後、ステップ３０８を行う。ステップ３０８で、方法３００は終了する。現在の方法および装置の使用を通じて、複数のエントリー（例えば、連続アドレスに対応する）は、アドレス・キャッシュ１１４から除去することができる。システム１００は、単一の命令に応じてアドレス・キャッシュ１１４から複数のエントリーを除去することができる。例えば、システム１００（例えば、それによって実行されたソフトウェア１０４）は、無効レジスタ２００に第１〜第３のデータ２０２〜２０６を書き込むことにより、アドレス・キャッシュ１１４から複数のエントリーを除去することができる。このように、本発明は、効率的に、アドレス・キャッシュ１１４からエントリーを除去することができる。より詳細に、現在の方法および装置は、従来のシステムより少ない命令を使用して、アドレス・キャッシュ１１４から複数のエントリーを除去することができる。このように、本発明は、複数のアドレス・キャッシュ・エントリーを除去するのに必要な命令の数を最小限にすることができる。さらに、本方法および装置は、より少ない論理を使用することができ、したがって、従来のシステムより、より少ないチップ面積を必要とすることができる。従って、本発明は、アドレス・キャッシュ１１４からの複数のエントリーの除去を最適化することができる。
【００３１】
一旦、１つまたは複数のエントリーが、アドレス・キャッシュ１１４から除去されれば、システム１００は、１つまたは複数のＩ／Ｏ操作を行うことができる。Ｉ／Ｏ操作中に、システム１００は、アドレス・キャッシュ１１４の１つまたは複数のエントリーにアクセスして、Ｉ／Ｏアドレス変換を行なうことができる。複数のエントリーが、そこから除去されるまで、システム１００が、アドレス・キャッシュ１１４にアクセスしなくてよいので、Ｉ／Ｏアドレス変換を要求するＩ／Ｏアクセスは、不正確な（例えば、古い）データを含むアドレス・キャッシュ・エントリーにアクセスしない。
【００３２】
先の記載は、本発明の例示的実施形態のみを開示する。本発明の範囲内の、上記開示した装置および方法の変形例は、当業者に容易に明らかとなる。例えば、実施例によっては、無効レジスタ２００は、メモリマップ（ｍｍiｏ）レジスタとすることができる。ｍｍiｏレジスタへの読み出しおよび書き込みは、システム操作に著しい遅延を導入する可能性がある。本発明は、システム１００（例えば、それによって実行されたソフトウェア１０４）が、無効レジスタ２００に書き込む回数を低減して、複数のアドレス・キャッシュ・エントリーを除去することができので、本発明は、そのような遅延を低減または除去あるいはその両方を行うことができる。従って、本発明は、多くのＩ／Ｏ操作を行い、したがって、頻繁にアドレス・キャッシュ１１４からエントリーを加えて、または除去あるいはその両方を行うシステムに性能利点を提供することができる。
【００３３】
Ｉ／Ｏアドレス変換表１１２は、単一レベルテーブルまたは複数レベルテーブルとすることができる。例えば、Ｉ／Ｏアドレス変換表１１２は、Ｉ／ＯセグメントテーブルおよびＩ／Ｏページテーブルを含む複数レベルテーブルとすることができる。実施例によっては（図１〜３を参照して上述した実施例など）では、変換が、ページ（例えば、データの４ＫＢブロック）基準に生じ、ページ番号に対応するＩ／Ｏアドレスの一部が、除去（例えば、無効による）に関するアドレス・キャッシュ・エントリーを識別することができると想定することができる。
【００３４】
実施例によっては、アドレス・キャッシュ除去が進行中であることを第３のデータ２０６が示しながら、ソフトウェア１０４が、無効レジスタ２００からデータを読み出す試みをする場合、ＡＣＥＲ１２０は、ソフトウェア１０４にデータを出力しなくてもよい。非同期分離処理に対応するシステムでは、ソフトウェア１０４が、無効レジスタ２００を読み出す場合、アドレス・キャッシュ・エントリー除去が完了するまで、ＡＣＥＲ論理１２０は、データを返さなくてもよい。このように、本発明は、システムバス１１０における多くの読み出し操作を低減することができる。
【００３５】
さらに、本発明の方法および装置は、アドレス・キャッシュに関して、上述しているが、本方法および装置は、データ・キャッシュ（例えば、複数のデータ・キャッシュ・エントリーを無効にすること）などの他のタイプのキャッシュと使用することができる。したがって、本発明は、明示的な命令（例えば、ソフトウェア管理コプロセッサキャッシュコヒーレンス）でデータ・キャッシュ無効が行われるシステムを更新するのに有用とすることができる。さらに、実施例によっては、アドレス・キャッシュ・エントリーは、複数のページの１つに相当することができ、各ページは、複数のサイズの１つとすることができる。このように、キャッシュ無効のための本方法および装置は、複数ページサイズで使用することができる。例えば、Ｉ／Ｏアドレス変換表１１２は、Ｉ／ＯセグメントテーブルおよびＩ／Ｏページテーブルを含む複数レベルテーブルとすることができる。各Ｉ／Ｏセグメントテーブルエントリーは、Ｉ／Ｏセグメントのページのサイズを指定することができ、Ｉ／Ｏページテーブルエントリーは、ページサイズにかかわらず、同数のバイトを含むことができる。したがって、Ｉ／Ｏページテーブル中の連続エントリーは、連続ページを表すことができる。従って、連続アドレスを無効にするための本方法および装置は、ページサイズにかかわらず正確に機能することができる。
【００３６】
従って、本発明は、その例示的実施形態に関して開示されているが、上記の請求項によって定義されるように、他の実施例は、本発明の精神および範囲内にあることは当然のことである。
【図面の簡単な説明】
【００３７】
【図１】本発明の実施例によるアドレス・キャッシュ・エントリーを除去するシステムのブロック図。
【図２】本発明の実施例によるアドレス・キャッシュ・エントリーを除去するシステムに含まれたアドレス・キャッシュ・エントリー除去論理のブロック図。
【図３】本発明の実施例によるアドレス・キャッシュ・エントリーを除去する方法を図示するフロー図。
【符号の説明】
【００３８】
１０２  Ｉ／Ｏ装置
１０４  Ｉ／Ｏ変換論理
１０６  Ｉ／Ｏバス
１０８  メモリ
１１０  システムバス
１１２  変換表
１１４  アドレス・キャッシュ
１２０  アドレス・キャッシュ・エントリー除去論理
【図１】
2007048296.tif 000003
【図２】
2007048296.tif 000004
【図３】
2007048296.tif 000005