(57)【特許請求の範囲】
【請求項１】
所定の数のキャッシュ・ラインを有するキャッシュメモリを含む計算システムを動作させる方法であって、
第１に、複数の書込みアドレスに対して、前記複数の書込みアドレスのそれぞれに対応するキャッシュメモリ内の位置にデータを書込むステップと、
第２に、該計算システムによるコンテクストスイッチに応答して前記キャッシュメモリの選択された数のラインをクリーニングするステップとを含み、
前記選択された数のラインに対して、該クリーニングするステップは、
前記ライン内のデータに対応するダーティ・インジケータを評価するステップと、
前記ダーティ・インジケータが、前記ライン内のデータがダーティであることを示している場合、前記ラインから別のメモリにデータをコピーするステップとを含み、
前記選択されたラインの数は、所定のキャッシュ・ラインの数より少なく、さらに、前記計算システムを動作させる方法は、
アドレス・インジケータに値を保持するステップと、
複数の書込みアドレスの各々に応じて、書込みアドレスに対応するキャッシュメモリ内の位置を示すインデックスとアドレス・インジケータに保持された値とを比較し、前記インデックスがアドレス・インジケータに保持された値より大きい場合には、前記アドレス・インジケータの値を前記インデックスと同じ値に設定するステップであって、複数の書込みアドレスについて比較と設定を終了すると、アドレス・インジケータの値が最新の値を示し、選択されたラインの数が前記最新の値に対応する、該設定するステップとを含む、
方法。
【請求項２】
所定の数のキャッシュ・ラインを有するキャッシュメモリを含む計算システムを動作させる方法であって、
書込み要求に係る書込みデータを前記キャッシュメモリに書き込むごとに、当該書込み要求に係る書込みデータを書き込んだキャッシュ・ラインの位置を示すインデックスと、アドレス・インジケータに保持されている値とを比較するステップと、
前記比較するステップの結果、前記書込みデータを書き込んだ前記キャッシュ・ラインの位置を示すインデックスの方が前記アドレス・インジケータに保持されている値よりも大きい場合に、前記書込みデータを書き込んだ前記キャッシュ・ラインの位置を示すインデックスを、前記アドレス・インジケータに保持する新たな値とするステップと、
０以上で、かつ、キャッシュメモリのクリーニングを行う際に前記アドレス・インジケータに保持されている値以下である値を持つすべてのキャッシュ・ラインについて、当該キャッシュ・ラインのダーティ・インジケータを評価するステップと、
評価した前記ダーティ・インジケータがダーティであることを示しているキャッシュ・ラインのデータを別のメモリにコピーするステップと、
を有する方法。
【請求項３】
計算システムであって、
所定の数のキャッシュ・ラインを有するキャッシュメモリと、
複数の書込みアドレスに応じて、前記複数の書込みアドレスのそれぞれに対応するキャッシュメモリ内の位置にデータを書込むための回路と、
前記キャッシュメモリの選択された数のラインをクリーニングするための回路であって、
前記選択された数のラインのそれぞれに対して、前記ライン内のデータに対応するダーティ・インジケータを評価するための回路と、
前記ダーティ・インジケータが、前記ライン内のデータがダーティであることを示している場合、前記ラインから別のメモリにデータをコピーするための回路と、
を含む、前記クリーニングするための回路と、
を含み、
前記選択されたラインの数が、所定のキャッシュ・ラインの数より少なく、
さらに前記クリーニングするための回路は、
値を保持するためのアドレス・インジケータと、
複数の書込みアドレスの各々に応じて、書込みアドレスに対応するキャッシュメモリ内の位置を示すインデックスとアドレス・インジケータの値を比較して、前記インデックスがアドレス・インジケータに保持された値より小さい場合に、前記インデックスと同一の値に前記アドレス・インジケータの値を設定する回路であって、複数の書込みアドレスについて比較と設定を終了すると、アドレス・インジケータの値が最新の値を示す、該設定する回路と、
を含み、選択されたラインの数が該最新の値に応じたものである、
計算システム。
【請求項４】
請求項１に記載の方法において、前記クリーニングするステップは、キャッシュメモリの最初のアドレスから前記最新の値までの間のすべてのラインをクリーニングすることを含む方法。
【請求項５】
請求項４に記載の方法において、前記最初のアドレスがキャッシュメモリのアドレス０である方法。
【請求項６】
請求項３に記載の計算システムにおいて、前記クリーニングするための回路は、キャッシュメモリの最後のアドレスから最新の値まで含むすべてのラインをクリーニングする回路を含む計算システム。
【請求項７】
請求項６に記載の計算システムにおいて、最後のアドレスがキャッシュメモリの最も高いアドレスである計算システム。
【請求項８】
所定の数のキャッシュ・ラインを有するキャッシュメモリを含む計算システムを動作させる方法であって、
第１に、複数の書込みアドレスに対して、前記複数の書込みアドレスのそれぞれに対応するキャッシュメモリ内の位置にデータを書込むステップと、
第２に、前記キャッシュメモリの選択された数のラインをクリーニングするステップであって、該選択されたラインの数は、前記所定のキャッシュ・ラインの数よりも少ない、該クリーニングするステップと、を含み、
前記選択された数のラインの各々に対して、該クリーニングするステップは、
前記ライン内のデータに対応するダーティ・インジケータを評価するステップと、
前記ダーティ・インジケータが、前記ライン内のデータがダーティであることを示している場合に、前記ラインから別のメモリにデータをコピーするステップと、
を含み、
さらに、前記クリーニングするステップは、
第１のアドレス・インジケータに値を保持するステップと、
第２のアドレス・インジケータに値を保持するステップと、
複数の書込みアドレスの各々に応じて、書込みアドレスに対応するキャッシュメモリ内の位置を示すインデックスと第１のアドレス・インジケータの値を比較して、前記インデックスが第１のアドレス・インジケータに保持された値より大きい場合に、前記インデックスと同じ値に第１のアドレス・インジケータの値を設定するステップであって、複数の書込みアドレスについて比較と設定を終了すると、第１のアドレス・インジケータの値が第１の最新の値を示す、該設定するステップと、
複数の書込みアドレスの各々に応じて、書込みアドレスに対応するキャッシュメモリ内の位置を示すインデックスと第２のアドレス・インジケータの値を比較して、前記インデックスが第２のアドレス・インジケータに保持された値より小さい場合に、前記インデックスと同じ値に第２のアドレス・インジケータの値を設定するステップであって、複数の書込みアドレスについて比較と設定を終了すると、第２のアドレス・インジケータの値が第２の最新の値を示す、該設定するステップと、
を含み、
選択されたラインの数が該第１と第２の最新の値に応じたものである、
方法。
【請求項９】
請求項８に記載の方法において、前記クリーニングするステップは、キャッシュメモリの前記第２の最新の値から前記第１の最新の値までを含むすべてのラインをクリーニングすることを含む方法。
【請求項１０】
計算システムであって、
所定の数のキャッシュ・ラインを有するキャッシュメモリと、
複数の書込みアドレスに応じて、前記複数の書込みアドレスのそれぞれに対応するキャッシュメモリ内の位置にデータを書込むための回路と、
前記キャッシュメモリの選択された数のラインをクリーニングするための回路であって、前記選択されたラインの数は、所定のキャッシュ・ラインの数より少なく、前記選択された数のラインのそれぞれに対して、
前記ライン内のデータに対応するダーティ・インジケータを評価するための回路と、
前記ダーティ・インジケータが、前記ライン内のデータがダーティであることを示している場合に、前記ラインから別のメモリにデータをコピーするための回路と、
を含む、前記クリーニングするための回路と、
を含み、
さらに前記クリーニングするための回路は、
値を保持する第１のアドレス・インジケータと、
値を保持する第２のアドレス・インジケータと、
複数の書込みアドレスの各々に応じて、書込みアドレスに対応するキャッシュメモリ内の位置を示すインデックスと第１のアドレス・インジケータの値を比較して、前記インデックスが第１のアドレス・インジケータに保持された値より大きい場合に、前記インデックスと同一の値に前記第１のアドレス・インジケータの値を設定する回路であって、複数の書込みアドレスについて比較と設定を終了すると、第１のアドレス・インジケータの値が第１の最新の値を示す、該設定する回路と、
複数の書込みアドレスの各々に応じて、書込みアドレスに対応するキャッシュメモリ内の位置を示すインデックスと第２のアドレス・インジケータの値を比較して、前記インデックスが第２のアドレス・インジケータに保持された値より小さい場合に、前記インデックスと同じ値に第２のアドレス・インジケータの値を設定する回路であって、複数の書込みアドレスについて比較と設定を終了すると、第２のアドレス・インジケータの値が第２の最新の値を示す、該設定する回路と、
を含み、
選択されたラインの数が該第１と第２の最新の値に応じたものである、
計算システム。
【請求項１１】
請求項１０に記載の計算システムにおいて、前記クリーニングするための回路は、キャッシュメモリの第２の最新の値から第１の最新の値までを含むすべてのラインをクリーニングするための回路を含む、計算システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本実施例は、１つまたはそれ以上のキャッシュメモリを実現する計算機使用環境に関する。
【０００２】
【発明が解決しようとする課題】
キャッシュ回路は、（たとえば、マイクロプロセッサなど）現代の計算システムにおいて、情報にアクセスするために必要な時間の潜在的な長さを短縮することによって、システムの性能を高めるために頻繁に使用される重要な構成要素である。普通、キャッシュ回路には、一般にランダムアクセスメモリ（RAM）であるタグメモリなど、各種の構成要素が含まれている。タグＲＡＭは、一般に個別のキャッシュ・データＲＡＭに格納されたキャッシュデータに対応する、いわゆるタグ情報を格納する。タグ情報には（たとえば、外部メモリ構造体のような）何らかの別のメモリデバイス内でキャッシュに入れられたデータ（cached data）を見つけることができる実際のアドレスのように、キャッシュに入れられたデータに対応する各種の特長が含まれている。回路の他の構成要素は、タグＲＡＭに関連しているヒット検出回路である。（Ｎウエイ・セット・アソシアティヴ・キャッシュ回路（N-way set associative cache circuit）にはこの回路がｎ個ある）ヒット検出回路は、タグ情報の一部として格納されている実際のアドレスと、着信アドレス（incoming address）を比較する。この比較が一致すると、キャッシュ回路にヒットがあるという。つまり、キャッシュ・データＲＡＭから、この着信アドレスで探索されるデータを直接検索することができ、反対にこの比較が一致しなければ、キャッシュ回路でミスがあるという。つまり、この着信アドレスで探索されるデータはキャッシュ・データＲＡＭの中に位置していないか、何らかの別の理由であてにできない。キャッシュ・ミスの場合は、メイン・メモリ（つまり外部メモリ）など、メモリ階層の上位メモリか、システムの上位レベルに位置している別のキャッシュメモリからデータを検索しなければならない。したがって、キャッシュ・ミスの後のデータアクセスは、キャッシュ・ヒットの場合のアクセス時間に比較して、非常に長い時間が必要になる。実際、外部メモリから検索するためのアクセスの場合、キャッシュ・ヒットが発生したときのアクセス時間に比較すると、所要時間はかなり長くなるであろう。
【０００３】
上述の説明は、キャッシュ・メモリが有利であると一般に考えられていることを示しているが、計算機および計算機使用環境がさらに複雑になると、キャッシュ動作をもっと詳細に精査して、さらに能率が追加するか否かを決定する必要がある。この点に関し、本発明者は、キャッシュ回路のある種の動作のコンテクストにおいて、いくつかのクロックサイクルを減少させることができることを確認している。キャッシュ動作に関連して使用されるクロックサイクルを減少させると、システムの速度が改善する。またこのクロックサイクルの減少は、携帯形コンピュータなど、多くの現代のシステムで大きな問題になっているシステム全体の電力消費を減少させることにもなる。
【０００４】
【発明が解決しようとする課題】
１つの好適実施例の中に、計算システムを動作させる方法がある。この計算システムにはキャッシュ・メモリが含まれており、このキャッシュ・メモリには所定の数のキャッシュ・ラインがある。最初にこの方法は、複数の書込みアドレスに対して、その複数の書込みアドレスのそれぞれに対応する位置にあるキャッシュ・メモリにデータを書込む。次にこの方法は、キャッシュ・メモリ内の選択した数のラインをクリーニングする。クリーニングするステップは、選択した数のラインのそれぞれに対して、そのラインにおけるデータに対応するダーティ・インジケータを評価して、ダーティ・インジケータがそのライン内のデータがダーティであることを示している場合は、そのラインから他のメモリにデータをコピーする。最終的に、選択されたクリーニングするラインの数は、所定のキャッシュ・ラインの数より少ない。また、その他の回路、システムおよび方法が開示されているとともに請求の範囲に明記されている。
【０００５】
【発明の実施の形態】
図１は、一般的な無線データプラットホーム１０の好適実施例を示しており、この無線データプラットホームの中で、この本明細書中に説明されている各種のキャッシュの実施例を実現することができるとともに、この無線データプラットホームは、たとえば、スマートホン（Smartphone）または携帯コンピュータの実現に使用することができる。無線データ・プラットホーム１０には、それぞれ対応する命令メモリ管理ユニット（ＭＭＵ）１２ｃ、１２ｄを備えた命令キャッシュ１２ａおよびデータキャッシュ１２ｂを有する汎用（ホスト）プロセッサ１２が含まれており、バッファ回路１２ｅおよび動作コア１２ｆも示されているが、これらの回路はすべてシステムバスＳＢＵＳを使用して交信する。ＳＢＵＳには、データＳＢＵＳｄ、アドレスＳＢＵＳａおよび制御ＳＢＵＳｃの導線が含まれている。（示されていない）自身の内部キャッシュを有するディジタル信号プロセッサ（ＤＳＰ）１４ａおよび周辺装置インターフェース１４ｂがＳＢＵＳに接続されている。示されていないが、ディジタル・アナログ変換器（DAＣ）またはネットワークインターフェースを含む各種周辺装置を周辺装置インターフェース１４ｂに接続することができる。ＤＳＰ１４ａおよび周辺装置インターフェース１４ｂは、ＤＭＡインターフェース１６に接続されており、ＤＭＡインターフェース１６はさらにＤＭＡコントローラ１８に接続されている。またＤＭＡコントローラ１８は、ＬＣＤまたはビデオディスプレー２２と交信するビデオまたはＬＣＤコントローラ２０と同様、ＳＢＵＳに接続されている。ＤＭＡコントローラ１８は、アドレスバス２４ａ、データバス２４ｄおよび制御バス２４ｃを介してメイン・メモリに接続されているが、この好適実施例のメインメモリは同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）２４である。同様にＤＭＡコントローラ１８は、アドレスバス２６ａ、データバス２６ｄおよび制御バス２６ｃを介して、１つ（または複数）のフラッシュメモリ２６に接続されている。
【０００６】
無線データ・プラットホーム１０の一般的動作の側面は、無線データ・プラットホーム１０が汎用プロセッサ１２とＤＳＰ１４ａとの双方を使用していることを説明することによって、本発明の概念と関連して理解される。このように、１つのメモリを共用する複数のコアがあるので、後で説明する本発明の方法は、マルチコアシステムなどのシステム性能に各種の改善をもたらすことが理解できるであろう（これは、無線データ・プラットホーム１０とは別のシステムの場合であってもよい）。また、以下に説明する本発明の側面の多くは、単一プロセッサシステムの動作を改善することもできることに注意されたい。
【０００７】
次に本好適実施例のキャッシュの側面に注意を向けると、図２は、例として、図１の汎用プロセッサ１２のデータキャッシュ１２ｂのアーキテクチャを示している。これの構造を詳細に説明する前に、本発明の各種の教示は、命令キャッシュ１２ａ、ＤＳＰ１４ａの１つまたは両方のキャッシュ、または（たとえば、一体化されたキャッシュのような）プラットホーム１０内のさらに別のキャッシュなど、他のキャッシュと関連して実現されうることが理解されるはずである。また、以下に説明する本発明の各種教示は、キャッシュ・メモリの恩恵を受けるであろうスマートホン、ＰDA、パームトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどを含む処理装置とともに使用されうる。最後に、データキャッシュ１２ｂに関して各種の詳細が以下に示されるが、（たとえば、セット・アソシエーション、アレイ・サイズ、アドレスおよび記憶装置の長さなど）これらの詳細の多くは、説明を判りやすくする目的にすぎないことに注意されたい。
【０００８】
次に図２に示すデータ・キャッシュ１２ｂの詳細に注目すると、データ・キャッシュ１２ｂには、メモリアドレスを受信するキャッシュ制御装置２８が含まれているが、この場合のメモリアドレスは３２ビットのデータアドレスDA[31:0]の一部分であり、この受信される部分には、メモリアドレスを受信するキャッシュ制御装置２８が、３２ビットのアドレスのビット「4」からビット「11」を受信することを示すビット「[11:4]」と、これと同様、３２ビットのアドレスのビット「0」からビット「1」を受信することを示すビットDA[1:0]とが含まれている。キャッシュ制御装置２８は、バーチャル・タグ・アレイ３０vに接続されており、データ・アレイ３２のラインに対応するタグを格納する。この点と後で行う考察の説明に関しては、バーチャル・タグ・アレイ３０vはデータ・アレイ３２の中の各ラインのダーティ・ビットを格納するが、この場合、ダーティ・データの表示は、データ・アレイ３２にもってこられたデータが変更されたが、メモリシステム（たとえば、メイン・メモリ）の上位メモリに、その変更されたコピーが出力されていないことを表していることは、キャッシュ技術において公知である。またデータ・アレイ３２の各ラインに対応して含まれている表示は、ＬＲＵインジケータ・アレイ３４内のＬＲＵビット（最近少しも使用されていないことを示すビット）および有効性インジケータ・アレイ３６内の有効性ビットである。
【０００９】
好適実施例においては、データ・キャッシュ１２ｂは２ウエイセットアソシアティブキャッシュ（２way set associative cache）として配列されているので、タグ・アレイ３０vには、それぞれ２つのプレイン３０ａv、３０ｂvがある。同様にデータ・アレイ３２には、２つのメモリプレイン３２ａ、３２ｂがある。図示の実施例においては、各プレイン３２ａ、３２ｂは１０２４×３２ビット（すなわち４バイト）であるから、１６バイトのラインを形成するためには４つの連続したアドレスを必要とする。プレイン３０ａv、３０ｂvの出力は、それぞれの比較器３８ａ、３８ｂに出力される。DA[31:12]も両比較器３８ａ、３８ｂに接続されている。各比較器３８ａ、３８ｂは、それぞれウエイ１ヒット（Hit way1）およびウエイ２ヒット（Hit way2）と命名された１ビットの出力を発生させる。ウエイ１ヒット信号およびウエイ２ヒット信号は、それぞれの転送ゲート４０ａ、４０ｂの制御入力に接続され、各転送ゲートは、出力としてアドレスが指定されたデータ・アレイ３２ビットのデータDD[31:0]を与える。
【００１０】
セットアソシアティブキャッシュの動作は当技術では公知であるから、キャッシュ・クリーニング・プロセスに、より詳細に関連して後で行う考察で理解できる詳細な説明のコンテクストを与えるために、ここでは読取り動作だけについて要約されている。読取り動作に注目すると、メモリアクセスのためにアドレスDA[31:0]が受信されると、アドレスビットDA[11:4]は、バーチャル・タグ・アレイ３０vの各プレインプレイン３０ａv、３０ｂvへのアドレスとして使用される。各プレイン３０ａv、３０ｂvは、そのアドレスに対応して、タグ・ビットＴａｇ＿DA[31:12]を出力するが、この場合、そのタグにはデータ・アレイ３２に格納されるデータのアドレスの表示が含まれている。次にビットDA[31:12]は、一致（すなわちヒット）するか否かを決定するため比較器３８ａ、３８ｂを介してそのタグと比較され、一致する場合は、比較器３８ａ、３８ｂのどちらかの出力が、それぞれウエイ１ヒット信号またはウエイ２ヒット信号を動作可能にする。この同じプロセス中に、この例ではビットDA[11:4]になっているアドレスのインデックス部がデータ・アレイのプレイン３２ａ、３２ｂに適用される。したがって、両プレインが、そのインデックスからの情報を出力して、ウエイ１ヒット信号またはウエイ２ヒット信号が動作可能になると、出力データDD[31:0]としてこれらのプレインのどれか１つの出力が現れる。いうまでもなく、キャッシュミスが発生すると（つまり、ウエイ１ヒット信号もウエイ２ヒット信号も動作可能にならないと）、メモリ階層におけるキャッシュ１２ｂより上位のメモリからアドレス指定された情報が探索される。最後にタグメモリ内の各メモリアドレスに、アレイ・インジケータ３６内の対応する有効性ビットがあるようになることを想起されたい。これらのビットは、キャッシュ内の対応する位置にあるデータが有効であるか否かを表示する。ＬＲＵアレイ・インジケータ３４内のビットは、キャッシュミスの後、プレイン３２ａ、３２ｂのどのラインを更新するか決定する。
【００１１】
データ・キャッシュ１２ｂにはキャッシュ・クリーン機能も含まれているが、この機能は、次に図３のブロック図によって最初に機能的に詳細に説明するように、キャッシュ動作の能率を大幅に改善することができる。特に図３は、キャッシュ・クリーン機能に関する限り、キャッシュ制御装置２８を非常に詳細に示している。キャッシュ制御装置２８には、I_MAXと命名されたアドレスの値を格納するためのアドレス・レジスタ４２が含まれており、後で判るように、このアドレス・レジスタ４２は、次に説明する追加回路によって制御され、データアドレス・インデックス（つまりDA[11:4]）のいくつかのコピーを格納する。アドレス・レジスタ４２のアドレス入力は転送ゲート（passgate）４４の出力に接続されており、このゲートには、アドレス・インデックスDA[11:4]を受信するために接続されているデータ入力がある。また、アドレス・インデックスDA[11:4]は比較器４６の入力に接続されており、さらに比較器４６はアドレス・レジスタ４２に格納されたI_MAXの値を受信するように接続されている。以下、詳細に説明する理由から、データ・キャッシュ１２ｂへの書込みに応答してキャッシュヒットが発生すると、比較器４６は、I_MAXの値が着信アドレス・インデックスDA[11:4]より大きいか否かを決定し、大きい場合は、転送ゲート４４の制御入力を動作可能にするので、その時の着信アドレス・インデックスDA[11:4]がアドレス・レジスタ４２にコピーされて、I_MAXの値を更新する。
【００１２】
図３について補足すると、キャッシュ制御装置２８にはキャッシュ・クリーン処理回路４８が含まれており、この回路４８は、バーチャル・タグ・アレイ３０vから与えられる１つの入力としてダーティ・ビットを受信するために接続されているとともに、以下、詳細に説明する機能を動作可能にするＣＡＣＨＥ＿ＣＬＥＡＮ信号を受信するために接続されている。実際にＣＡＣＨＥ＿ＣＬＥＡＮ信号は、レジスタ４２内のI_MAXの値をクリアーするために接続されることに注意されたい。またレジスタ４２内のI_MAXの値は、キャッシュ・クリーン処理回路４８に対する入力である。キャッシュ・クリーン処理回路４８の構造は、次に述べる図４、５の説明から判るように、キャッシュ・クリーン処理回路４８の機能が与えられている各種の代替回路から当業者によって選択されうる。
【００１３】
図４は、全体を参照番号５０で示す方法の流れ図を示しており、この流れ図はデータ・アレイ３２の書込みに関するキャッシュ制御装置２８の好適動作を説明しているが、かかる方法の大部分は、図３に示す回路ブロックの動作を介して達成される。方法５０はステップ５２で開始し、ここで（レジスタ４２内の）I_MAXの値がゼロにクリアーされる。好適実施例においては、ＣＡＣＨＥ＿ＣＬＥＡＮ信号を立ち上げることによって、このステップを達成することができることに注意されたい。さらにこの点について、本実施例が、コンテクストスイッチを含む動作に関連して改善をもたらしていることは、方法５０の考察の結論によって理解できるであろう。示されていないが、実際にステップ５２は、第１のコンテクストスイッチに対する応答に伴うデータ・キャッシュ１２ｂの初期化の重要な役割であろう。コンテクストスイッチは当業者には公知の用語であるにしても、これらの代替方法を説明した後では、コンテクストスイッチの意味を吟味することは、本明細書の読者のために役立つであろう。コンテクストスイッチは、オペレーティングシステムによって頻繁に実行される外部割り込みまたはクロックタイマーの満了など、いろいろな事象（events）に応答して発生する。このスイッチがプロセスの変更に関連していることは、プラットホーム１０または各種動作が複数のプロセスに分かれている、他のプロセッサに制御されるシステムの中で判ることである。各プロセスは各種の事項（matters）によって定義されており、しかもこれらの事項には、プロセスによって使用されるメモリの領域、プロセスの入出力マッピング、アドレス変換のようなプロセスのメモリ管理、および通常は汎用レジスタに格納される値を特長づけるプロセスが含まれることが多い。コンテクストスイッチは、現在のプロセスが新しいプロセスに変更される場合に発生する。このため、次のプロセス（または、いくつかの別のプロセス）が正しく動作するように、この最新のプロセスに関するこれらの側面のそれぞれを説明する情報を格納する必要がある場合、現在の最新プロセスであることが、もう一度切り替えられると、そのプロセスが再び最新プロセスになるように、この情報を検索することができる。
【００１４】
次に方法５０に戻ると、ステップ５２の後、流れはステップ５４に続く。ステップ５４は、データ・キャッシュ１２ｂを含むメモリシステムに書込みアドレスが発行されることを表している。したがって、図１を簡単に振り返ってみると、ＳＤＲＡＭ２４にデータを書込むためコア１２ｆがアドレスを発行するとステップ５２の実例が発生するのであるから、ＳＤＲＡＭ２４は、下位レベルにあるデータ・キャッシュ１２ｂを含むメモリシステムの中では上位にあることに注意されたい。次に方法５０はステップ５４からステップ５６に続く。
【００１５】
ステップ５６は、ステップ５４で発行された書込みアドレスに応答して、データ・キャッシュ１２ｂでヒットが発生するか否かを決定する。キャッシュヒットが発生しないと（つまりキャッシュミスが発生すると）、方法５０はステップ５６からステップ５８に続く。逆に、キャッシュヒットが発生すると、方法５０はステップ５６からステップ６０に続く。これらの代替経路のそれぞれを以下に説明する。
【００１６】
ステップ５８の場合に注目するとともに、キャッシュミスに応答してステップ５８が発生することを認識すると、ステップ５８は、キャッシュ技術で公知の方法と同様に単独で動作する。特にステップ５８は、データ・キャッシュ１２ｂ以外の記憶回路の中のアドレス位置にデータを書込む。たとえばプラットホーム１０においては、この書込みはＳＤＲＡＭ２４内の適切なアドレスに対して行われる。
【００１７】
キャッシュヒットが発生すると実行されるステップ６０の場合に注目すると、ステップ６０は、現在のアドレス・インデックスDA[11:4]の値がI_MAXの値より大きいか否かを決定する。しばらく図３に戻ると、ステップ６０の動作は比較器４６によって達成されうることに注意されたい。アドレス・インデックスDA[11:4]の値がI_MAXの値より大きい場合、方法５０はステップ６０からステップ６２に続き、そうでない場合は、方法５０はステップ６４に進むが、まずステップ６２の動作を検討した後、これについて以下に説明する。アドレス・インデックスDA[11:4]の値がI_MAXの値より大きいため、すでに到達しているステップ６２は、新しいI_MAXの値として、最新のアドレス・インデックスDA[11:4]を格納する。この点について、２つの事項に注意されたい。第１に、I_MAXの値がステップ５２でクリアーされてから、初めてステップ６０に到達し、かつアドレス・インデックスDA[11:4]の値がゼロでない場合、ステップ６０は、この方法の流れをステップ６２に移しているはずであるから、I_MAXの値は、最新のアドレス・インデックスまで増加している。第２に再び図３に戻ると、ステップ６２は、比較器４６の出力と、転送ゲート４４に対する比較器４６の制御とによって実行される。特にステップ６０を実行する際、比較器４６が、DA[11:4]がI_MAXの値以上になっていると決定すると、レジスタ４２にDA[11:4]がコピーされて、DA[11:4]が、I_MAXの新しい値になるように、比較器４６の出力が転送ゲート４４を動作可能にする。次に方法５０はステップ６２からステップ６４に続く。
【００１８】
ステップ６４は、ステップ５４で指定されたアドレスで、データ・アレイ３２に問題のデータを書込む。また、バーチャル・タグ・アレイ３０v内のダーティ・ビットと書込まれたデータに対応するキャッシュ・ラインとは、ダーティの状態に設定される。次に方法５０はステップ６４からステップ６６に続く。ステップ６６は待ち合わせ状態を表しており、ここで、方法５０は２つの事象のうちの１つを待ち合わせるが、その２つの事象は、別の書込みアドレスまたはコンテクストスイッチの発行である。別の書込みアドレスが発行されると、方法５０はステップ６６からステップ５４に戻る。そのとき、先行ステップが再び発生し、新しく発行された書込みアドレスのインデックスがI_MAXの最新の値より大きい場合、そのインデックスがI_MAXの新しい値になるであろうことは、当業者には理解できるであろう。実際にこのループ動作は、連続する多数の書込みに対して発生し、そのたびに先行ステップが動作するため、I_MAXは増加するであろう。次に最新のコンテクストスイッチの効果に注目すると、方法５０は、先行ステップが続き、ステップ６６からステップ６８に続くので、この時のI_MAXの値は、最後のコンテクストスイッチ以降かつ最新のコンテクストスイッチの前に書込まれているアドレス・インデックスの最大値を表すことは、上述のことから理解されるはずである。
【００１９】
ステップ６８はキャッシュクリーンプロセスを表しているが、後で判るように、このキャッシュクリーンプロセスは、従来の技術とは対照的に性能と効率を劇的に改善することができる。詳細に説明すると、ステップ６８は以下のことを表している。すなわち、I_MAXに等しいＬの値から小さくなり、Ｌの値が０に等しくなるまでのＬのループに対してステップ７０が発生して、Ｌに等しいアドレスをもつ各キャッシュ・ラインがクリーニングされることを表している。換言すると、Ｌの値は、I_MAXから始まって小さくなり、０に等しくなるときまでの間一貫して、ステップ６８にくるたびに小さくなり、流れは、ステップ７０のクリーニング動作に続き、次の反復のためステップ６８に戻ってループする。ステップ７０に注目すると、キャッシュ・ラインのクリーニングは当業者には公知であり、そのラインのタグ（または複数のタグ）を評価して、そのライン内のどのデータがダーティであるか否かを決定することが含まれている。本実施例におけるこの動作は、ＣＡＣＨＥ＿ＣＬＥＡＮ信号によって動作可能になる図３のキャッシュ・クリーン処理回路４８によって制御される。このプロセスは、そのラインにダーティ・データが含まれているか否かを決定し、含まれている場合は、そのデータ（またはライン全体）が上位メモリに書込まれる。それとは反対に、所定のラインに対してそのラインのダーティ・ビット（または複数のダーティ・ビット）が、そのライン全体がクリーンなことを示していると、そのダーティ・ビット（または複数のダーティ・ビット）に対応するデータ・ラインは、上位メモリに書出されない。
【００２０】
上記の説明から、詳細にはI_MAXとステップ６８、７０の効果から、コンテクストスイッチの後、データ・キャッシュ１２ｂがクリーニングされるが、クリーニングプロセスはキャッシュのアドレス０から、コンテクストスイッチの前に書込まれた（つまりI_MAXに格納された）最上位キャッシュアドレスまでを対照にしているにすぎないことは、当業者には理解されるはずである。この方法は、例を示すことによってよく理解されるであろう。ステップ５２の後、それぞれのインデックス・アドレス０、２、４、６および８に対し、連続する５つのキャッシュ書込みがあり、これらの書込みの後にコンテクストスイッチがあるとする。したがって、この時点のI_MAXの値は８に等しく、ステップ６８、７０は、コンテクストスイッチに応答して、アドレス０からアドレス３２までのデータ・アレイ３２をクリーニングするにすぎない。次に、かかる動作は従来の技術とまったく異なることに注意されたい。特に従来の技術においては、コンテクストスイッチに応答して全キャッシュがクリーニングされる。したがって、各キャッシュ・ラインの内容がダーティであるか否かを決定するために、各キャッシュ・ラインが評価され、ダーティな場合は、それらのダーティの内容を上位メモリに書出す。この違いがあるので、本発明の実施例がかなり能率的になることは、当業者には理解されるはずである。説明のためと、５つの連続アドレスの例に戻る手段として、キャッシュには２５５までのアドレスが含まれているものとする。かかる場合、従来の技術は、９から２５５までのアドレスのそれぞれを評価してクリーニングするため、余計な時間を使うであろうが、アドレス指定できるラインごとに１つクロックサイクルがある以上、そうなることは当然である。これとは反対に、好適実施例は、キャッシュ全体より小さいどこかのポイントでクリーニング動作を停止するが、説明したばかりの実施例における中止ポイントは、コンテクストの変更以前に書込まれた最上位アドレスのクリーニングが終了した後である（現在の例では、そのアドレスは８である）。したがって、クリーニング動作に必要な全クロックサイクルの数を大幅に減少させることができ、このクロックサイクル数の減少によって全体の電力消費量も低減する。また、プラットホーム１０に実際に起きる環境のように、頻繁にコンテクストスイッチが発生する環境では、各コンテクストスイッチが発生するたびに、好適実施例の能率が累積される。コンテクストスイッチが発生する合間に数回のキャッシュ書込みがあるにすぎない場合は、この総合的能率は非常に有効であると断言できる。
【００２１】
またステップ６８に関する上記考察から、ステップ６８はアドレス０までクリーニングプロセスを進めることに注意されたい。この方法は、キャッシュの大きさから独立しているので望ましい方法である。したがってどんな場合でも、このような方法に対しては、アドレス０までのクリーニング動作が終了すると、ダーティ・データをもつラインがメイン・メモリに書出されることが想定される。しかし、このような観察ができるため、アドレス０のデータまたはアドレス０に近いデータが変化しているように思われない場合には、２つの代替方法が使用できることに注意されたい。この２つの代替方法のそれぞれを以下に説明する。
【００２２】
上で考察したI_MAXの方法の第１の代替方法においては、所定のコンテクストスイッチに対してキャッシュヒットを発生させる最低位のアドレス・インデックスを決定するため第２のアドレスの値が確定され、I_MAXの値とともにこの第２の値が使用される。したがって、この第２の値をI_MINと命名することにすると、当初この値を大きな値（たとえば、キャッシュの最上位のアドレス）に設定し、所定のコンテクストスイッチ中にキャッシュヒットを発生する最低位のアドレス・インデックスの値まで小さくしてもよい。したがって、例として、キャッシュの最上位インデックス・アドレスは２５５であり、それぞれのインデックス・アドレス８、１６、２４、３２および４０に対して連続する５つのキャッシュ書込みがあり、これらの書込みの後にコンテクストスイッチがあるものとする。この例においては、当初I_MAXは０に等しく、I_MINは２５５に等しい。５回のアクセスに基づいて、I_MAXは、４０に等しくなるまでアクセスのたびに大きくなる。これに反し、アドレス８への最初のアクセスは、I_MINの値を値８まで小さくするけれども、残りのアクセスは、I_MINの更新された値より上位のインデックス・アドレスであるため、残りのアクセスはその値に影響を及ぼさないであろう。この代替方法を結論すると、ステップ７０が、I_MINのアドレスからI_MAXのアドレスまでの間の全ラインであり、かつ、これらのアドレスを含む全ラインをクリーニングして、キャッシュ内のラインの全数よりも少ない、いくつかのラインを再びクリーニングするように、ステップ６０が修正されるであろう。
【００２３】
上で考察したI_MAXの方法の第２の代替方法においては、所定のコンテクストスイッチにキャッシュヒットを発生させる最低位のアドレス・インデックスを決定するため異なるアドレスの値が確定され、この異なる値は、単独で使用されるとともに、キャッシュの最上位アドレスまでクリーニングするために使用される。簡単にいうと、これは、I_MAXの値を使用するプロセスと正反対の動作である。ここでも、この異なるアドレスの値をI_MINと命名することにすると、当初この値を大きな値（たとえば、キャッシュの最上位のアドレス）に設定し、所定のコンテクストスイッチ中にキャッシュヒットを発生する最低位のアドレス・インデックスの値まで小さくしてもよい。しかし、ステップ６８が実行されると、ステップ７０が、I_MINのアドレス値から、キャッシュの最上位、つまりキャッシュの最上位アドレスまでの全てのラインをクリーニングするように、ステップ６８が修正されるであろう。
【００２４】
I_MAXの値の観点から制限的なループ動作になるため、本発明の範囲に、図５に示すような別の実施例が含まれる。方法５０ａと示されているこの代替方法においては、図３の比較器４６の機能が使用されるのではなく、コンテクストスイッチの時点のI_MAXの値を決定するために、最新のコンテクストに関連していて、オペレーティングシステムによって保持されているアドレスの値が使用される。この違いは、ステップ７２について以下に説明されているが、図５に示す残りのステップは、図４に示すステップと同じである。
【００２５】
方法５０ａを参照すると、ステップ５２からステップ６６は上で考察済みなので、ここでは詳細に説明しない。このため、ステップ７２に注目すると、ステップ７２はI_MAXの値を設定するが、ここではその値は、オペレーティングシステムで何か実行中にアクセス可能な値に基づいて設定される。特にある種のオペレーティングシステムは、所定のコンテクストに対してキャッシュ・ラインの最大の値を保持している。したがって、ステップ６６の条件を満たすと、オペレーティングシステムは、終了中の（つまり、そこからスイッチが発生中の）コンテクストスイッチに対応するキャッシュ・ラインの最上位アドレスを使用できるようになるであろう。ステップ７２は、このキャッシュ・ラインの最上位アドレスに等しいI_MAXの値を設定する。このように、方法５０ａがステップ６８に続く場合であって、このキャッシュ・ラインの最上位アドレスがキャッシュ・ラインの全数より小さいという条件の場合、ステップ６８およびステップ７０によって発生するループ動作は、再びデータ・キャッシュ・ラインをクリーニングするので、このキャッシュのクリーニングされるラインの数は、キャッシュ・ラインの全数より小さい。
【００２６】
上記諸実施例が、コンテクストスイッチの後のキャッシュ・クリーニング動作に関連するクロックサイクルの数を減少させ、従来の技術に各種の改善をもたらすことは、上記説明から理解できるであろう。本実施例を詳細に説明してきたが、上記教示に加え、本発明の範囲から逸脱せずに上述の説明に対する各種の代替、修正または変更ができることに注意されたい。たとえば、好適実施例におけるコンテクストスイッチの発生は、I_MAXのリセットをトリガすることであるとともに、その後に連いて発生するコンテクストスイッチに応答して、I_MAXのリセットを限定することであるが、何らかの別の事象によって最初の事象が発生すると、I_MAXの値をリセットし、第２の事象が発生すると、I_MAXの値の上方向の調整を終了して、その後で、どれか最小のアドレスから、最後に退避された I_MAXの値まで、キャッシュを再びクリーニングすることは、当業者ならば確認することができるであろう。別の例として、図４、５は、流れ図を介して一般的な逐次形方法を示しているが、これらのステップを実行する状態マシンのように、かかる動作を実現するために各種の回路を使用できるため、この流れ図に示すような逐次形ではなく、流れが各状態から別の代替状態になりうることは理解されるはずである。さらに別の例として、各種側面を示すためにデータ・キャッシュ１８ｂが使用されてきたが、本発明の教示の多くは、各種の別のキャッシュアーキテクチャにも応用される。さらに最後の例として、プラットホーム１０は説明のためにすぎず、プラットホーム１０はさらに修正されうることと、また多くの創造的な側面が、１つまたはそれ以上のキャッシュメモリを有する別のシステムで実現されうることも理解されるはずである。したがって、前記説明、これらの例、および本発明の教示を得た当業者によって確かめることができるその他の事項は、請求の範囲によって定義されているように、本発明の範囲を示すために役立つはずである。
【図面の簡単な説明】
【図１】本実施例を実現することができる無線データ・プラットホームのブロック図を示す図。
【図２】図１のプラットホームおよび他のプロセス装置において使用することができるキャッシュのアーキテクチャのブロック図を示す図。
【図３】図２のキャッシュ制御装置の各部分のブロック図を示す図であって、これらの部分は、この好適実施例のキャッシュをクリーニングする方法に使用される。
【図４】図１の汎用プロセッサのコンテクストスイッチ中に生起するキャッシュ・クリーンに関連して必要になるクロックサイクルを減少させる第１の実施例の流れ図を示す図であって、キャッシュ・クリーンの程度は、コンテクストスイッチの前にキャッシュに書込まれた最上位のアドレスによって決定される。
【図５】図１の汎用プロセッサのコンテクストスイッチ中に生起するキャッシュクリーンに関連して必要になるクロックサイクルを減少させる第２の実施例の流れ図を示す図であって、キャッシュクリーンの程度は、コンテクストスイッチの前にキャッシュに書込むためにオペレーティングシステムに使用できる最上位のアドレスによって決定される。
【符号の説明】
１０  データ・プラットホーム
１２  プロセッサ
１２ａ  命令キャッシュ
１２ｂ  データ・キャッシュ
１２ｃ、１２ｄ  命令メモリ管理ユニット（ＭＭＵ）
１２ｅ  入力バッファ回路
１２ｆ  動作コア
１４ａ  ＤＳＰコア
１４ｂ  周辺装置インターフェース
１６  ＤＭＡインターフェース
１８  ＤＭＡコントローラ
１８ａ  ＦＩＦＯ
１８ｂ  記憶装置
１８ｃ  タイマー
２０  ビデオまたはＬＣＤコントローラ
２２  ＬＣＤまたはビデオ
２４  メイン・メモリ（同期ＤＲＡＭ）
２４ａ、２６ａ  アドレス・バス
２４ｂ、２６ｂ  データ・バス
２４ｃ、２６ｃ  制御バス
２６  フラッシュメモリ
２８  キャッシュ制御装置
３０ａｖ、３０ｂｖ  バーチャル・タグ・アレイのメモリプレイン
３０ｖ  バーチャル・タグ・アレイ
３２  データ・アレイ
３２ａ，３２ｂ  データ・アレイのメモリプレイン
３４  ＬＲＵインジケータ・アレイ
３６  有効性インジケータ・アレイ
３８ａ、３８ｂ  比較器
４０ａ、４０ｂ、４４  転送ゲート
４２  アドレス・レジスタ
４６  比較器
４８  キャッシュ・クリーン処理回路
５０  方法
６４  キャッシュメモリにデータを書込み、状態をダーテイに設定するステップ
６８  キャッシュメモリの選択されたラインをクリーニングするステップ
【図１】
0004307604.tif 000002
【図２】
0004307604.tif 000003
【図３】
0004307604.tif 000004
【図４】
0004307604.tif 000005
【図５】
0004307604.tif 000006