(57)【要約】  本発明は、メモリ、特に、キャッシュメモリ、および、このキャッシュメモリをコンピュータのメインメモリに同期させる方法に関する。本発明の方法によると、各メモリエントリは、アドレスレンジと、このアドレスレンジと関連したデータ領域と、アドレスレンジと関連した識別領域とを有する。この識別領域は、メモリのデータ領域にデータが格納されたかどうか、または、これがどの暗号鍵を用いて行われたかを示す値を含む第１のメモリフィールドを有する。同期されるべきデータと暗号鍵との間の受け取られた関連に基づいて、第１のメモリフィールドに含まれた情報が同期の開始点として用いられ得る。
2005512192.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリをメインメモリに同期させる方法であって、該キャッシュメモリは、プロセッサとメインメモリとの間にデータをバッファ格納するために提供され、該キャッシュメモリのメモリエントリは、少なくとも１つのデータ領域と、１つの識別領域とを有し、該方法は、
ａ）該プロセッサが比較プロセスのために同期値を提供するステップであって、該値は、該キャッシュメモリ（１３）（単数または複数）の該データ領域（２３）のどのエントリ（２０）（単数または複数）が該メインメモリ（１４）に同期されるかを決定するために用いられる、ステップと、
ｂ）該キャッシュメモリ（１３）のキャッシュ論理回路が、提供された該同期値を、各メモリエントリ（２０）の少なくとも１つのメモリフィールド（２５）のコンテンツと比較するステップと、
ｃ）提供された該同期値が、該少なくとも１つのメモリフィールド（２５）のコンテンツと一致した場合、該キャッシュメモリ（１３）の該キャッシュ論理回路は、第１の状態の該識別領域の第３のメモリフィールド（２７）のフラグをチェックするステップであって、該第１の状態は、最後の同期以降、該メモリエントリ（２０）の該データ領域（２３）が変更されたことを示す、ステップと、
ｄ）該フラグが該所与の第１の状態である場合、該メモリエントリ（２０）の該データ領域の該コンテンツが該メインメモリ（１４）に転送されるステップと
を包含する、方法。
【請求項２】
前記比較のために用いられた前記メモリフィールドは、データが前記メモリの前記データ領域に格納された際に用いられたのはどの暗号鍵かを示す値を含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記比較のために用いられた前記メモリフィールドは、暗号鍵を含むことを特徴とする、請求項１に記載の方法。
【請求項４】
前記比較のために用いられた前記メモリフィールドは、前記暗号鍵を示すポインタを含む、請求項１に記載の方法。
【請求項５】
メモリエントリ（２０）の前記データ領域（２３）は、複数のワード（３０ａ〜３０ｄ）を含む、請求項１〜４の１つに記載の方法。
【請求項６】
第１のメモリフィールド（２５ａ〜２５ｄ）は、前記データ領域（２３）の各ワード（３０ａ〜３０ｄ）に割り当てられる、請求項５に記載の方法。
【請求項７】
メモリエントリ（２０）の前記アドレス領域（２１）は、メモリエントリ（２０）の物理アドレスを保持する、複数のビットを含む第１のアドレス領域（４０）と、プログラムユニットの論理アドレスの最上位ビットを保持する、複数のビットを含む第２のアドレス領域とに分割される、請求項１〜６の１つに記載の方法。
【請求項８】
第２のメモリフィールド（２６）が前記識別領域（２２）に提供され、該フィールドは、前記データ領域（２３）に格納されるのは有効値か無効値かを示すフラグを含む、請求項１〜７の１つに記載の方法。
【請求項９】
前記フラグは、前記最後の同期以降、前記メモリエントリ（２０）の前記データ領域（２３）が変更されていないことを示す所与の第２の状態を有し、該フラグは、該データ領域（２３）に格納されたのは有効値か無効値かを示すフラグが、該メモリエントリ（２０）が無効値を有することを示す第１の状態に設定される、請求項８に記載の方法。
【請求項１０】
前記ステップａ）〜ｄ）は、前記提供された同期値と、前記比較のために用いられたメモリエントリの前記メモリフィールドのコンテンツとが一致しなくなるまで繰返される、請求項１〜９の１つに記載の方法。
【請求項１１】
前記メモリエントリ（２０）の前記データ領域のコンテンツを前記メインメモリ（１４）に転送する前記ステップｄ）は、
ａａ）前記キャッシュメモリ（１３）の該メモリエントリ（２０）のアドレスを決定するステップと、
ｂｂ）該アドレスを該メモリエントリ（２０）のアドレス領域（２１）から前記プロセッサ（１２）に転送するステップと、
ｃｃ）該メモリエントリ（２０）を該プロセッサ（１２）によってアドレス指定するステップと、
ｄｄ）該メモリエントリの該データ領域（２３）のコンテンツを読み出すステップと、
ｅｅ）該メモリエントリ（２０）のデータ領域（２３）のコンテンツを該メインメモリ内に格納するステップと
を包含する、請求項１〜１０の１つに記載の方法。
【請求項１２】
ステップｂｂ）とステップｃｃ）との間に、レジスタに別のフラグが設定され、該レジスタは、前記キャッシュメモリ（１３）の外側に配置され、かつ、前記プロセッサ（１２）によって読み出され得、該フラグは、ライトバックプロシージャが実行されたことを示す、請求項１１に記載の方法。
【請求項１３】
ステップｅｅ）の後で、一旦前記キャッシュメモリ（１３）が前記提供された同期値と、各メモリエントリ（２０）の比較のために用いられた前記メモリフィールドの前記コンテンツとの間で別の比較プロシージャを実行すると、前記レジスタ内の前記フラグがリセットされる、請求項１２に記載の方法。
【請求項１４】
請求項１〜１５の１つに記載の方法を実行するようにセットアップされたキャッシュメモリ。
【請求項１５】
前記キャッシュメモリは、第１のレベルのキャッシュメモリと第２のレベルのキャッシュメモリとを含む、請求項１４に記載のキャッシュメモリ。
【請求項１６】
前記第１のレベルのキャッシュメモリはプロセッサ内に直接配置され、前記第２のレベルのキャッシュメモリはメインボード上に配置される、請求項１４または１５に記載のキャッシュメモリ。
【請求項１７】
前記キャッシュメモリは、データをプロセッサとメインメモリとの間にバッファ格納するために提供される、請求項１４〜１６の１つに記載のキャッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリをメインメモリに同期させる方法に関し、キャッシュメモリは、データをプロセッサとメインメモリとの間にバッファ格納するために提供され、キャッシュメモリのメモリエントリは、少なくとも１つのデータ領域および１つの識別領域を有する。本発明は、さらに、この方法を実行するキャッシュメモリに関する。
【背景技術】
【０００２】
キャッシュメモリは、最近のほとんどすべてのコンピュータにおいて、プロセッサとメインメモリとの間の非常に高速のバッファメモリとして提供され、プロセッサキャッシュメモリ、または、略して、ＣＰＵキャッシュと呼ばれることも多い。ＣＰＵキャッシュは極めて高速であるが、コスト上の理由で、メインメモリよりもはるかに小さい。ＣＰＵキャッシュを有さない中央処理ユニットと比較して、ＣＰＵキャッシュを有する中央処理ユニットの実行速度は（メインメモリが同じサイズである場合、当然）著しく速い。
【０００３】
第１のレベルのキャッシュメモリと第２のレベルのキャッシュメモリとは区別される。第１のレベルのキャッシュメモリは、プロセッサ内に直接配置され、これにより、待ちサイクルなしに、プロセッサによってプロセッサクロックレートでアクセスされ得る。他方、第２のレベルのキャッシュメモリは、例えば、メインボード上に配置され、従って、プロセッサクロックレートよりも低速のボードクロックレートで動作する。
【０００４】
さらに、マイクロプレセッサは、実行するプログラムを処理するために「スタック」とも呼ばれるスタックメモリを必要とする。プロセッサは、プログラムを処理するときに、順次連続するプログラム命令を処理することだけでなく、例えば、サブルーチンが呼出された場合等、プログラムジャンプを実行することを必要とするときはいつでも、戻りアドレスを保持するためにスタックが用いられる。サブルーチンが完了した後、サブルーチンのジャンプが実行されるのと同じ場所からプログラムの処理を再開するために、プログラムは、このアドレスにジャンプして戻る。スタックは、この場合、通常、揮発性メモリである。
【０００５】
ＣＰＵキャッシュおよびスタックの両方は、コンピュータのメインメモリに同期させなければならない。このようなＣＰＵキャッシュを実現し、かつ、メインメモリとの同期を実行するために、複数の標準的技術が用いられ得る。これらの標準的技術は、「ライトスルー（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）」または「ライトバック（ｗｒｉｔｅ−ｂａｃｋ）」法として公知であり、例えば、Ｊ．Ｌ．Ｈｅｎｎｅｓｓｅｙ、Ｄ．Ａ．Ｐａｔｅｒｓｏｎによる教科書「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ、Ａ  Ｑｕａｎｔｉｔａｔｉｖｅ  Ａｐｐｒｏａｃｈ」（Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ、Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ  Ｐｕｂｌｉｃａｔｉｏｎｓ、Ｓａｎ  Ｆｒａｎｃｉｓｃｏ、１９９６年）に記載される。
【０００６】
従って、例えば、プログラムを処理する際に、メモリ領域、より厳密には、キャッシュメモリまたはスタック内のメモリエントリが、イネーブルまたは消去されなければならず、これにより、メインメモリからの他のデータがそこで格納され得る。以下の簡単な例は、これを説明するのに役立つ。「マルチタスク（ｍｕｌｔｉｔａｓｋｉｎｇ）」環境において、タスク交換、すなわち、別のプログラムの呼び出しが行われる。実行されるべき新しいタスクＢは、通常、中断されたか、または完了したタスクと同じ論理メモリに配置される。タスクＢが、ＣＰＵキャッシュに依然として保持されたタスクＡからのデータに誤って、または、不正にアクセスすることができないように、ＣＰＵおよびスタック内のタスクＡのメモリ領域またはメモリエントリは、無効に（無効化）または消去されなければならない。このために、アドレス領域、このアドレス領域に割り当てられたデータ領域、およびアドレス領域に割り当てられた識別領域を含むメモリエントリにフラグを含むメモリフィールドを提供することが知られている。このメモリエントリは、その後、メモリフィールドのフラグを、データ領域に格納されたデータが有効性を有しないことを示す第１の状態にすることによって無効化されるか、または無効にされる。
【０００７】
さらに、メモリエントリの識別領域にさらなるメモリフィールドを提供することが知られている。このさらなるメモリフィールドは、データ領域が改変され、データ領域のコンテンツがメインメモリにまだライトバックされていないかどうかをフラグによって示す。このメモリエントリの無効化の前のライトバックは、同期と呼ばれる。
【０００８】
無効化およびライトバックのタスクは、通常、プロセッサのオペレーティングシステムによって実行される。このために、ＣＰＵキャッシュ内の個々のラインを無効化またはライトバックするために用いられ得る特定の制御レジスタまたは命令がプロセッサに利用可能である。ＣＰＵキャッシュ内のすべてのメモリエントリを無効化またはライトバックする手段として、制御レジスタ、制御メカニズム、または命令の使用もまた知られている。上述の従来のプロシージャは、オペレーティングシステムが、非常に複雑であり、（ＣＰＵキャッシュのすべてのメモリエントリではない）ＣＰＵキャッシュのより大きいメモリ領域を無効化またはライトバックするために時間を要するという不利な点を有する。ＣＰＵの完全な無効化またはライトバックは、さらに、他のタスクからのデータが不必要に同期され得、これにより性能が悪化するという不利な点を有する。
【０００９】
メインメモリを有するＣＰＵキャッシュのキャッシュコヒーレンスを維持するために、ＥＰ０  ４３９  ３２５  Ｂ１号はアドレスモニタを提供することを提示する。
【発明の開示】
【課題を解決するための手段】
【００１０】
本発明の目的は、キャッシュメモリとメインメモリとの間に簡単な方法で同期を確立することを可能にする機会を規定することである。
【００１１】
この目的は、請求項１の特徴を有する方法によって達成される。本発明によるこの方法は、
ａ）プロセッサが比較プロセスのために同期値を提供するステップであって、この値は、キャッシュメモリ（単数または複数）のデータ領域のどのエントリ（単数または複数）がメインメモリに同期されるかを決定するために用いられる、ステップと、
ｂ）キャッシュメモリのキャッシュ論理回路が、提供された同期値を、各メモリエントリの少なくとも１つのメモリフィールドのコンテンツと比較するステップと、
ｃ）提供された該同期値が、少なくとも１つのメモリフィールドのコンテンツと一致した場合、キャッシュメモリのキャッシュ論理回路は、第１の状態の識別領域の第３のメモリフィールドのフラグをチェックするステップであって、第１の状態は、最後の同期以降、メモリエントリのデータ領域が変更されたことを示す、ステップと、
ｄ）フラグが該所与の第１の状態である場合、メモリエントリのデータ領域のコンテンツがメインメモリに転送されるステップと
を包含する。
【００１２】
従って、第１のメモリのコンテンツは、同期の検索基準として利用され、ここで、メインメモリとの同期は、第３のメモリフィールドのフラグが、最後の同期以降のデータ領域の変更を示すメモリエントリの場合にのみ生じる。
【００１３】
好ましくは、最後の同期以降、第３のメモリフィールドのフラグがメモリエントリのデータ領域が変更されていないことを示す状態を有する場合、第２のメモリフィールドのフラグは、メモリエントリが無効値を有することを示す第１の状態に設定される。この方法ステップは、原理的にはライトバックされるべきであるが、最後の同期以降、全く変更されなかったすべてのこれらのメモリエントリを無効化する簡単な手段を提供する。あるいは、第２のメモリフィールドのフラグの無効化を示す適切な状態にする代わりに、当該のデータ領域のコンテンツを消去することも考えられ得る。これは、高いセキュリティ要件を有する応用分野において特に有利であり得る。
【００１４】
さらなる有利な方法ステップにおいて、第３のメモリフィールドのフラグは、最後の同期以降、メモリエントリのデータメモリに変更がないことを示す第２の状態にされる。換言すると、これは、メモリエントリとメインメモリとの間の同期プロシージャが首尾良く行われた後、第３のメモリフィールドのフラグが「消去」され、これにより、さらなる検索プロセスにおいてメインメモリとの同期が再び実行されることはない。
【００１５】
メモリエントリのメインメモリとの同期は反復プロセスであり、これにより、ステップａ）〜ステップｄ）またはステップａ）〜ステップｅ）は、それぞれ、提供された同期値と、メモリエントリの第１のメモリフィールドのコンテンツとの間が一致しなくなるまで繰返される。
【００１６】
メモリエントリのデータ領域のコンテンツのメインメモリへの転送は、
ａａ）キャッシュメモリのメモリエントリのアドレスを決定するステップと、
ｂｂ）アドレスをメモリエントリのアドレス領域からプロセッサに転送するステップと、
ｃｃ）メモリエントリをプロセッサによってアドレス指定するステップと、
ｄｄ）メモリエントリのデータ領域のコンテンツを読み出すステップと、
ｅｅ）メモリエントリのデータ領域のコンテンツをメインメモリ内に格納するステップと
を包含する。
【００１７】
従って、メモリエントリをメインメモリに同期させる可能なプロシージャは、従来技術においても一般的であるように、第１のメモリフィールドの値が同期値と等しい場合、メモリエントリに属するアドレスをアドレス領域からプロセッサに転送し、その後、キャッシュメモリ内の公知の検索プロシージャを適用することである。
【００１８】
好ましくは、ステップｂｂ）とｃｃ）との間に、レジスタに別のフラグが設定され得、このレジスタは、中央処理ユニット内のキャッシュメモリの外部に配置され、かつ、プロセッサによって読み出されることが可能である。フラグは、ライトバックプロシージャが実行されたことのインジケータとして用いられる。フラグがこのレジスタに設定されると、第３のメモリフィールド内で設定されたフラグの検索が再び行われる。検索プロセスが開始するとすぐに、ステップｅｅ）の後にレジスタ内のフラグがリセットされる。キャッシュメモリのすべてのメモリエントリが１つの検索パス内でチェックされ、レジスタにフラグが設定されない場合、これは、すべての疑わしいメモリエントリが、メインメモリに同期されたことを意味する。
【００１９】
本発明によるメモリは、特に、高いセキュリティ要件を有する応用分野での使用が意図される。特に、コンピュータ全体が単一のチップに収容される、例えば、スマートカードにおいて用いられ得る。このようなスマートカードは、キャッシュカード、アイデンティティカード、テレフォンカード、ＳＩＭカード等として用いられ得る。この使用は、異なった組織、例えば、異なったサービスプロバイダが、相互に関連性のないコンピュータにおいて異なったプログラムを格納する場合に特に有利である。その後、各プログラムユニットに１つの暗号鍵が割り当てられ得る（各組織がコンピュータ内に１つのプログラムユニットを格納すると仮定して）。
【００２０】
キャッシュメモリをメインメモリに同期させる本発明による方法は、高速かつエネルギー効率的に実現され得、これにより、固有の電力供給のない応用分野にとって特に有利である。これは、例えば、コンタクトレスで動作するスマートカードに当てはまる。
【００２１】
本発明の有利な実施形態において、メインメモリにおける各メモリエントリは、３つのメモリ領域を有する。データ領域は、実際のデータ、すなわち、プログラムコマンド、または、メインメモリによってすでにコピーされたか、または、プロセッサの論理回路によってこれにコピーされることをさらに必要とする処理されるべきデータを含み、アドレス領域は、関連したアドレスを含み、識別領域は、キャッシュ論理回路によって生成された情報を含む。この情報は、メインメモリからの新しいデータの再ロードを管理するため、および、メモリが一杯である場合に上書きされるべきメモリエントリを置換するために必要とされ、例えば、対応するメモリエントリが有効であるかどうか、最後に用いられたのはいつか、およびどれほど頻繁に用いられたかに関する情報である。特に、第１のメモリフィールドは、識別領域に提供され、このフィールドは、メモリのデータ領域にデータが格納された際に暗号鍵が用いられたかどうか、または、それはどの暗号鍵を用いて行われたかを示す値を含む。
【００２２】
識別領域の第１のメモリフィールドは２つの目的を満たす。
【００２３】
第１に、ここから、メモリのデータ領域にデータが格納された際に暗号鍵が用いられたかどうか、または、それはどの暗号鍵かということが推測され得る。これは、第１のメモリフィールドとデータ領域との間に直接的な関連性があるという情報をもたらす。特に、セキュリティ関連の応用分野、例えば、キャッシュカードの場合、書き込まれるべきデータを符号化してデータ領域に格納することは有用であり得る。符号化されたデータがこのデータ領域から読み出されるべき場合は直ちに、データを復号化するために用いられ得るのはどの鍵かを特定するために情報の一部分が必要とされる。この情報は、第１のメモリフィールドの値が暗号鍵それ自体か、またはそうでない場合、暗号鍵を示すポインタを含み得る識別領域の第１のメモリフィールドから取り出され得る。以下の記載において、冒頭でタスクと呼ばれた異なったプログラムユニットが、各々、異なった鍵で暗号化および復号化されると想定される。これにより、各第１のメモリフィールドは、異なった鍵、または暗号鍵を示す異なった値を含み得る。
【００２４】
第１のメモリフィールドに存在する値は、ここで、有利にも、キャッシュメモリをコンピュータのメインメモリに同期させるために用いられ得る。２つのプログラムユニットが交換された場合、通常、終了したプログラムユニットに割り当てられたデータがキャッシュメモリ内で無効化またはライトバックされるべきことを意味する。同じプログラムユニットからのデータを含むすべてのメモリエントリが識別領域の第１のメモリフィールド内で同じ値を有するという事実に基づき、これらは、容易に識別され、かつさらに処理され得る。プログラムの実行、従って、２つのプログラムユニット間の交換を制御するプロセッサは、終了されるべきプログラムユニットに割り当てられた値を第１のメモリフィールドにおいて見出し、かつ、各場合について割り当てられたデータ領域を無効か、消去、またはライトバックすることのみを必要とする。
【００２５】
最も単純な場合、識別領域の第１のメモリフィールドは１ビット幅であり、これにより、２つの異なった暗号鍵を示すことが可能である。
【００２６】
好ましい実施形態において、メモリエントリのデータ領域は複数のワードを含む。この場合のワードは、任意のビット幅を有し得る。メモリエントリのすべてのワードが同じビット幅である場合は明らかに有利である。
【００２７】
このような実施形態において、第１のメモリフィールドは、好ましくは、データ領域の各ワードに割り当てられる。これは、データ領域の各ワードに異なった暗号鍵を割り当てることが可能であることを意味する。考えられる代替案は、メモリエントリのデータ領域におけるワードの数に関係なく、さらに少ない第１のメモリフィールドが割り当てられることを含む。この場合、データ領域における複数のワードが同じ暗号鍵に割り当てられる。
【００２８】
メモリのさらなる有利な実施形態において、メモリエントリのアドレス領域が、メモリエントリの物理アドレスを保持する、複数のビットを含む第１のアドレス領域と、プログラムユニットの論理アドレスの最上位ビットを保持する、複数のビットを含む第２のアドレス領域とに分割される。これに代えて、第２のアドレス領域は、さらに、プログラムユニットの論理アドレスを示すポインタを含み得る。このアプローチは、以下の利点を有する。２つのプログラムユニットが交換された場合、プロセッサは、終了されるべきプログラムユニットの割り当てられた論理アドレスの第２のアドレス領域を見出し得る。これは、１つのプログラムユニットに属するデータでさえ、異なったメモリエントリのデータ領域において異なった暗号鍵で復号化され得ることを意味する。これは、非常に複雑な符号化、ならびに、不正なアクセスに対して高い信頼性およびセキュリティを達成するが、コンピュータのメインメモリとの同期は、識別領域の第１のメモリ領域における同一の値を検索する場合にのみ効率的であることが明らかになる。
【００２９】
第２のメモリフィールドは、好ましくは、識別領域に提供され、このフィールドは、データ領域に格納されるのは有効値か無効値かを示すフラグを含む。第２のメモリフィールドは、「有効フラグ」として従来技術において公知である。第２のメモリフィールドにおけるフラグが無効値に対応する状態を有する場合、当該のメモリエントリのデータ領域は、簡単に消去または変更され得る。しかしながら、第２のメモリフィールドにおけるフラグの状態が有効値を表す場合、データが変更または消去され得る前にメインメモリとの同期が必要とされる。
【００３０】
メモリは、識別領域において第３のメモリフィールドを含む場合、このフィールドは、プロセッサによってメモリのデータ領域における値が変更されたかどうかを示すフラグを含む。第３のメモリフィールドは、「ダーティーフラグ（ｄｉｒｔｙ  ｆｌａｇ）」とも呼ばれる。当該のメモリエントリのデータ領域における値が変更されるとすぐに第３のメモリフィールドにおけるフラグが第１の状態になる。フラグ信号、例えば、２つのプログラムユニットが交換された場合、データ領域の対応するコンテンツは、メインメモリに同期されなければならない。
【００３１】
好ましくは、メモリは「ｎウェイセットアソシアティブ（ｎ−ｗａｙ  ｓｅｔ  ａｓｏｃｉａｔｉｖｅ）キャッシュメモリ」として設計される。このタイプのメモリは、このメモリが多数のメモリエントリを含む場合であっても、プロセッサが、選択された方法でキャッシュメモリのメモリエントリにアクセスし得るという有利な点を有する。ｎウェイセットアソシアティブキャッシュメモリは、当該分野においてかなり前から知られているため、動作および関連する有利な点について、ここではこれ以上は説明されない。
【００３２】
本発明によるコンピュータは、プロセッサに接続された上述のメモリを備える。さらに、メモリおよび／またはプロセッサに接続された接続の手段が提供される。さらに、接続手段は、例えば、中央処理ユニットおよびキャッシュメモリを含むプロセッサチップの外側の外部メモリとして設計され得るメインメモリに接続される。
【００３３】
本発明は、例示的実施形態を参照して、および添付の図面を用いて、以下において、より詳細に記載される。
【発明を実施するための最良の形態】
【００３４】
図１は、コンピュータ１０の構造を例示的実施形態で表す模式的表現を含む。コンピュータ１０は、プロセッサ１２、メインメモリ１４、およびメモリ（キャッシュメモリ）１３を備え、これらは、例えば、バスライン等の接続１６のそれぞれの手段を介して互いに接続される。コンピュータ１０は、例えば、すべてのコンピュータに接続された入力／出力の手段等のさらなるコンポーネントを備え得る。入力／出力の手段は、中央処理ユニット１１と、キーボード、スクリーン、プリンタ、磁気ディスク記憶媒体、ディスクドライブ、ＣＤ−ＲＯＭドライブ、モデム、読み出し／書き込みデバイス等の周辺デバイス（図示せず）との間でのデータの転送を制御する。プロセッサ１２およびメモリ１３は、共に中央処理ユニット１１を形成する。中央処理ユニット１１およびメインメモリ１４と、存在し得る他の任意のコンポーネントは、好ましくは、単一チップ上に集積される。これは、参照符号１５がラベル付けされた破線によって模式的に示される。
【００３５】
図１に示される中央処理ユニット１１は、メモリ１３にアクセスし得る１つのプロセッサ１２のみを備え、示されるプロセッサ１２のように、メモリ１３、および場合によってはメモリ１４にアクセスする少なくとも１つのさらなるプロセッサ（図示せず）もまた提供され得る。
【００３６】
図２は、第１の実施形態の本発明によるメモリエントリの構造を示す。メモリエントリは、当該分野にて公知のように、アドレス領域２１、データ領域２３、および識別領域２２を有する。データ領域２３は、実際のデータを含むが、アドレス領域２１は、対応するメモリエントリ２０のメモリアドレスを含む。識別領域２２は、メモリエントリ（第２のメモリフィールド２６）の有効性に関する情報、および、最後の同期（第３のメモリフィールド２７）以降、データ領域２３のデータが変更されかどうかに関する情報を含む。この第３のメモリフィールドも従来技術において「ダーティーフラグ」として知られている。第２のメモリフィールドは、通常、「有効フラグ」と呼ばれる。
【００３７】
さらに、識別領域２２に第１のメモリフィールド２５が提供される。メモリフィールド２５は、例えば、４つのメモリフィールド２５ａ〜２５ｄに再分割される。データ領域２３のサブデータ領域３０ａ〜３０ｄは、メモリフィールド２５ａ〜２５ｄの各々に割り当てられる。サブデータ領域３０ａ〜３０ｄの各々に１つのワードであるように設計され、ここで、各ワードが、例えば、３２ビット幅であり得る。第１のメモリフィールド２５ａ〜２５ｄは、各々、領域３０ａ〜３０ｄにおけるデータを符号化するために利用されるのはどの暗号鍵かを示す情報の一部分を含む。特に、これは、第１のメモリフィールド２５ａに割り当てられた暗号鍵が、データ領域３０ａにおけるデータを符号化および復号化することを意味する。同様の方法で、データ領域３０ｄにおけるデータは、第１のメモリフィールド２５ｄに割り当てられた暗号鍵で処理され得る。例えば、各フィールドが１ビット幅である場合、２つの暗号鍵の合計を示すポインタが可能である。暗号鍵は、別々のレジスタに格納され得るが、これ以上詳細には記載されない。第１のメモリフィールド２５の値をメモリエントリ２０から読み出すプロセッサは、その後、当該レジスタに割り当てられた暗号鍵を決定し得、それぞれ、第１のメモリフィールドに割り当てられたサブデータ領域３０ａ〜３０ｄに符号化されて保持されるデータを復号化し得る。
【００３８】
第１のメモリフィールド２５ａ〜２５ｄにおける暗号鍵を示すポインタを格納する代わりに、暗号鍵が、第１のメモリフィールドに直接保持される。これは、非常に多くであるが、非常に短い暗号鍵がある場合に特に有用な代替案である。当然、メモリフィールド１５ａ〜２５ｄの各々は複数ビット幅であることが必要である。
【００３９】
図３は、本発明によるメモリエントリ２０の別の例示的実施形態を示す。これは、アドレス領域２１が第１および第２のアドレス領域４０、４１に再分割されるという点で、図２のメモリエントリとは異なる。アドレス領域４０の各々は、ビット幅である。１６ビット幅である第１のアドレス領域４０は、例えば、メモリエントリの物理アドレスを含む。１２ビット幅である第２のアドレス領域４１は、プログラムユニットの論理アドレスの最上位ビットを含む。ここで、各プログラムユニットが、所定の論理アドレス空間に書き込まれることが想定される。このメモリブロックの論理アドレスは、すべて同一である。これは、プログラムユニットが、論理アドレスの最上位ビットから区別され得ることを意味する。１つのプログラムユニットに属する本発明によるキャッシュメモリにおけるメモリエントリのすべてがメインメモリと同期されるべき場合、キャッシュメモリの第２のアドレス領域におけるすべての同一値について検索され得る。これは、異なった暗号鍵が、１つのプログラムユニット内でも用いられ得るという有利な点を有する。
【００４０】
図２の第１の例示的実施形態において、第１のメモリフィールド２５に入力された値が同期の検索基準として用いられる。メモリエントリを有するメモリを示す図４の以下の記載から明らかになるように、この場合、サブメモリフィールド２５ａ〜２５ｄの１つだけが、比較基準として用いられるが、その代わりに、全ビットシーケンスが、第１のメモリフィールド２５に格納される。
【００４１】
図４に示されるメモリ１３は、４ウェイセットアソシアティブキャッシュメモリとして設計される。メモリ１３は、右側の連続的に０〜３の番号が付けられた合計４セットを含む。４つのセットの各々は、同一の数のメモリエントリを含む。ｎウェイセットアソシアティブキャッシュメモリの動作の設計およびモードは、従来技術から公知であるので、これ以上説明する必要はない。しかしながら、キャッシュメモリ１３がメインメモリ１４に同期される方法が明確に図４によって説明され得る。
【００４２】
２つのメモリエントリは、例えば、セット１〜３の各々において強調表示され、ここで、各識別領域２２にデータが提供される。ここで、ｉは、メモリエントリのインデックスである。ｉは、（０、１、．．．ｎ×ｍ−１）からの値であり、ただし、ｎは、セットの数であり、ｍは、セットごとのメモリエントリの数である。
【００４３】
図２の記載においてすでに示されたように、サブメモリフィールド２５ａ〜２５ｄの１つがサブデータ領域３０ａ〜３０ｄの１つに割り当てられる。サブメモリフィールド２５ａ〜２５ｄの各々が１ビット幅に過ぎないので、値「１」は、第１の暗号鍵を示し、値「０」は、第２の暗号鍵を示し、この暗号鍵により、割り当てられたサブデータ領域３０ａ〜３０ｄにおけるデータが符号化される。１つの暗号鍵が１つの特定のプログラムユニットに割り当てられると想定されるので、これは、第１のメモリフィールド２５における暗号鍵を示すポインタがある場合はいつでも、関連したサブデータ領域は、同期される必要があり得るデータのアイテムを含むことを意味する。従って、同期するために、アドレス領域２１に保持された情報が用いられるのではなく、第１のメモリフィールド２５に含まれる暗号鍵を示すポインタが調べられる。
【００４４】
例えば、メモリフィールド２５ａ〜２５ｄにおいて「０」が割り当てられたこれらのすべてのメモリエントリは同期される。このために、プロセッサは、「１−１−１−１」を除くすべての値を含む同期値をキャッシュ論理回路に転送する。従って、この同期値を第１のメモリフィールド２５の４ビット値と比較すると、メモリエントリ３７、４３、７３、９１、１０７および１２３が、ビットとしてフラグされる。これらのメモリエントリを見つけ出した後、キャッシュ論理回路は、これらのうちのどこで第３のメモリフィールド２７が第２の状態（ここでは「０」）を含むのかをチェックする。これは、メモリエントリ９１および１２３に当てはまる。第３のメモリフィールド２７の第２の状態は、同期のために、サブデータ領域３０ａ〜３０ｄの１つに変更がなかったことを示す。従って、メモリエントリ９１および１２３における第２のメモリフィールド２５のフラグは無効化され得る。これは、このメモリエントリ９１および１２３における第２のメモリフィールドのフラグが第１の状態（ここでは「１」）にされたことを意味する。
【００４５】
残りのメモリエントリ３７、４３、７３および１０７において、無効化の前にメインメモリとの同期が必要である。この場合の同期は、対応するサブデータ領域３０ａ〜３０ｄに位置するデータがメインメモリに転送されることを意味する。同期のために、キャッシュ論理回路は、見つけ出された第１のメモリエントリのアドレスに気付き、検索パスは、例えば、メモリエントリ０から、メモリエントリのより小さい数から大きい数の方向に実行される。ヒットを生成する第１のメモリエントリは、数３７を有する。キャッシュ論理回路は、対応するセット（この例においてはセット１）のアドレスを出力する。同時に、別のフラグは、ライトバックプロシージャが実行されたことを示す特定のレジスタ（ライトバックレジスタとして知られている）において設定され得る。その後、メモリエントリのアドレス領域（２１）は、このセットをアドレス指定するキャッシュ論理回路によって読み出され得る。通常のライトバックプロシージャは、このようにして読み出されたばかりのアドレス領域を用いて関連する検索プロセスを実行することによって実行され、すなわち、メモリエントリのアドレス領域のコンテンツがメインメモリに格納され、第２および第３のメモリフィールド２６、２７のフラグがリセットされる。キャッシュ論理回路は、ライトバックレジスタにセットされたさらなるフラグから別の検索プロセスが開始されたことを知る。一旦これが行われると、ライトバックレジスタにおけるさらなるフラグがリセットされる。同期値が第１のメモリフィールド２５の４ビットコードと一致する別のメモリエントリが見つけ出された場合、記載されたプロシージャが再び最初から行われる。キャッシュ論理回路が、フラグがライトバックレジスタに設定されることなく、０〜ｎ×ｍ−１のすべてのメモリエントリを通過した場合、これは、すべての疑わしいメモリエントリが同期されたことを意味する。
【図面の簡単な説明】
【００４６】
【図１】図１は、本発明によるコンピュータの構造を模式的に示す。
【図２】図２は、第１の実施形態のメモリエントリの構造を示す。
【図３】図３は、第２の実施形態のメモリエントリの構造を示す。
【図４】図４は、ｎウェイセットアソシアティブメモリとして設計された複数のメモリエントリからなるメモリを示す。
【図１】
2005512192.tif 000003
【図２】
2005512192.tif 000004
【図３】
2005512192.tif 000005
【図４】
2005512192.tif 000006
【手続補正書】
【提出日】平成16年5月28日(2004.5.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
キャッシュメモリをメインメモリに同期させる方法であって、該キャッシュメモリは、プロセッサとメインメモリとの間にデータをバッファ格納するために提供され、該キャッシュメモリのメモリエントリは、少なくとも１つのデータ領域と、１つの識別領域とを有し、該方法は、
ａ）該プロセッサが比較プロセスのために同期値を提供するステップであって、該値は、該キャッシュメモリ（１３）（単数または複数）の該データ領域（２３）のどのエントリ（２０）（単数または複数）が該メインメモリ（１４）に同期されるかを決定するために用いられる、ステップと、
ｂ）該キャッシュメモリ（１３）のキャッシュ論理回路が、提供された該同期値を、各メモリエントリ（２０）の少なくとも１つのメモリフィールド（２５）のコンテンツと比較するステップと、
ｃ）提供された該同期値が、該少なくとも１つのメモリフィールド（２５）のコンテンツと一致した場合、該キャッシュメモリ（１３）の該キャッシュ論理回路は、第１の状態の該識別領域の第３のメモリフィールド（２７）のフラグをチェックするステップであって、該第１の状態は、最後の同期以降、該メモリエントリ（２０）の該データ領域（２３）が変更されたことを示す、ステップと、
ｄ）該フラグが該所与の第１の状態である場合、該メモリエントリ（２０）の該データ領域の該コンテンツが該メインメモリ（１４）に転送されるステップと
を包含する、方法。
【請求項２】
前記比較のために用いられた前記メモリフィールドは、データが前記メモリの前記データ領域に格納された際に用いられたのはどの暗号鍵かを示す値を含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記比較のために用いられた前記メモリフィールドは、暗号鍵を含むことを特徴とする、請求項１に記載の方法。
【請求項４】
前記比較のために用いられた前記メモリフィールドは、前記暗号鍵を示すポインタを含む、請求項１に記載の方法。
【請求項５】
メモリエントリ（２０）の前記データ領域（２３）は、複数のワード（３０ａ〜３０ｄ）を含む、請求項１〜４の１つに記載の方法。
【請求項６】
第１のメモリフィールド（２５ａ〜２５ｄ）は、前記データ領域（２３）の各ワード（３０ａ〜３０ｄ）に割り当てられる、請求項５に記載の方法。
【請求項７】
メモリエントリ（２０）の前記アドレス領域（２１）は、メモリエントリ（２０）の物理アドレスを保持する、複数のビットを含む第１のアドレス領域（４０）と、プログラムユニットの論理アドレスの最上位ビットを保持する、複数のビットを含む第２のアドレス領域とに分割される、請求項１〜６の１つに記載の方法。
【請求項８】
第２のメモリフィールド（２６）が前記識別領域（２２）に提供され、該フィールドは、前記データ領域（２３）に格納されるのは有効値か無効値かを示すフラグを含む、請求項１〜７の１つに記載の方法。
【請求項９】
前記フラグは、前記最後の同期以降、前記メモリエントリ（２０）の前記データ領域（２３）が変更されていないことを示す所与の第２の状態を有し、該フラグは、該データ領域（２３）に格納されたのは有効値か無効値かを示すフラグが、該メモリエントリ（２０）が無効値を有することを示す第１の状態に設定される、請求項８に記載の方法。
【請求項１０】
前記ステップａ）〜ｄ）は、前記提供された同期値と、前記比較のために用いられたメモリエントリの前記メモリフィールドのコンテンツとが一致しなくなるまで繰返される、請求項１〜９の１つに記載の方法。
【請求項１１】
前記メモリエントリ（２０）の前記データ領域のコンテンツを前記メインメモリ（１４）に転送する前記ステップｄ）は、
ａａ）前記キャッシュメモリ（１３）の該メモリエントリ（２０）のアドレスを決定するステップと、
ｂｂ）該アドレスを該メモリエントリ（２０）のアドレス領域（２１）から前記プロセッサ（１２）に転送するステップと、
ｃｃ）該メモリエントリ（２０）を該プロセッサ（１２）によってアドレス指定するステップと、
ｄｄ）該メモリエントリの該データ領域（２３）のコンテンツを読み出すステップと、
ｅｅ）該メモリエントリ（２０）のデータ領域（２３）のコンテンツを該メインメモリ内に格納するステップと
を包含する、請求項１〜１０の１つに記載の方法。
【請求項１２】
ステップｂｂ）とステップｃｃ）との間に、レジスタに別のフラグが設定され、該レジスタは、前記キャッシュメモリ（１３）の外側に配置され、かつ、前記プロセッサ（１２）によって読み出され得、該フラグは、ライトバックプロシージャが実行されたことを示す、請求項１１に記載の方法。
【請求項１３】
ステップｅｅ）の後で、一旦前記キャッシュメモリ（１３）が前記提供された同期値と、各メモリエントリ（２０）の比較のために用いられた前記メモリフィールドの前記コンテンツとの間で別の比較プロシージャを実行すると、前記レジスタ内の前記フラグがリセットされる、請求項１２に記載の方法。
【請求項１４】
請求項１〜１５の１つに記載の方法を実行するようにセットアップされたキャッシュメモリ。
【国際調査報告】
2005512192.tif 000007
2005512192.tif 000008
2005512192.tif 000009
2005512192.tif 000010
2005512192.tif 000011
2005512192.tif 000012
2005512192.tif 000013
2005512192.tif 000014
2005512192.tif 000015
2005512192.tif 000016
2005512192.tif 000017
2005512192.tif 000018
2005512192.tif 000019