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