JP2000242556A - 仮想インデックス仮想タグデータキャッシュ用に最適化されたハードウエアクリーニング機能 - Google Patents

仮想インデックス仮想タグデータキャッシュ用に最適化されたハードウエアクリーニング機能

Info

Publication number
JP2000242556A
JP2000242556A JP2000040479A JP2000040479A JP2000242556A JP 2000242556 A JP2000242556 A JP 2000242556A JP 2000040479 A JP2000040479 A JP 2000040479A JP 2000040479 A JP2000040479 A JP 2000040479A JP 2000242556 A JP2000242556 A JP 2000242556A
Authority
JP
Japan
Prior art keywords
cache
address
dirty
memory
counter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000040479A
Other languages
English (en)
Inventor
Gerard Chauvel
ショベル ジェラール
Serge Lassere
ラサール セルジュ
Inverno Dominique Benoit Jacques D
ベノワ ジャック ダンベルノ ドミニク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JP2000242556A publication Critical patent/JP2000242556A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 割り込み可能なハードウエア・クリーン機能
を用いた高能率な仮想インデックス・仮想タグ・キャッ
シュ・システムを開示する。 【解決手段】 MAXカウンタ82およびMINレジス
タ84は、ダーティなキャッシュ位置の範囲を定義す
る。ハードウエア・クリーン機能の実行中、エントリー
がダーティとマークされた場合、MAXカウンタ82が
与えるアドレスのキャッシュ・エントリーがメインメモ
リ16に書き込まれている間、MAXカウンタ82はカ
ウントダウンする。割り込みが発生すると、その割り込
みが処理されてから後続のクリーン要求が発行されるま
で、MAXカウンタは動作を停止する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般にコンピュータ
・システムに関し、より詳細には、仮想インデックス、
仮想タグのキャッシュメモリ・システムに関する。
【0002】マルチタスク・コンピュータ・システムの
多くは、仮想インデックス仮想タグ(VIVT)キャッ
シュメモリ・システムにハードウエア・クリーニング機
能を利用している。たいていのコンピュータ・システ
ム、とくに、携帯用システム(portable solution)に
組み込まれるコンピュータ・システムは、電力消費を妥
当な線に維持する一方で、高MIPSの要求に対応する
ように設計されている。単一プロセッサ内でアクセスさ
れる比較的小容量のキャッシュは、低速度のメインメモ
リとともに動作しているが、高レベルのパフォーマンス
を実現している。
【0003】以前のコンピュータ・システムは一度に1
つのアプリケーションで動作したが、現在のコンピュー
タ・システムは、メインメモリにロードされたいくつか
のアプリケーションを有しているのが一般的である。ユ
ーザのための平行して走行する複数のアプリケーション
のスケジューリングは、オペレーティングシステム(O
S)によって管理される。最新のオペレーティングシス
テムは、仮想環境に対するコンセプトで設計される。プ
ロセッサから到着するアドレスは、メインメモリの実
(「物理」)アドレスにマッピングされる仮想アドレス
である。仮想インデックスと仮想タグを使用するキャッ
シュメモリは、仮想環境に対する最も効率的な構成であ
る。
【0004】これらのマルチタスク・システムに対する
重要な制約条件は、コンテクストスイッチ(context sw
itch)である。コンテクストスイッチは、1つのコンピ
ュータにいくつかの独立なタスクを収容するために、O
Sが実行すべき必要な一連の動作に相当する。コンテク
ストスイッチは、リアルタイムの条件が厳しいシステム
のパフォーマンスを限定する要因である。何故ならば、
コンテクストスイッチを実行するためにかなりの時間と
多数の命令が必要になるからである。
【0005】仮想環境のマルチタスク・システムは、2
つ以上の異なるタスクが、各種タスクが使用する異なる
仮想アドレスに従って、そのキャッシュにあるそれぞれ
2つ以上の位置の同一物理アドレスに関連するデータを
キャッシュに入れるときに発生することがあるデータの
「エイリアシング(aliasing)」を処理しなければなら
ない。1つのタスクが、キャッシュに入れられたデータ
項目に関連する値を変更すると、その変更は、メモリの
同一物理アドレスを指す他の仮想アドレスのキャッシュ
位置に反映されない。オペレーティングシステムは、コ
ンテクストスイッチの一部として、他のタスクが新しい
値を参照できるようにキャッシュの内容を無効にしなけ
ればならない。
【0006】キャッシュの無効化に関連するクリーニン
グ機能は、非常に時間を消費する。しかも、キャッシュ
・クリーニング方式の設計の如何によって、クリーニン
グ機能に割り込みがかかる時間間隔はいつもばらばらに
なりうる。リアルタイムの制約条件が厳しい多数のアプ
リケーションにとっては、頻繁に割り込みができること
は重要である。しかし、頻繁な間隔で割り込みを許す機
能を備えたクリーニング・ルーチン(routings)は、ク
リーニング動作を完了させるには最も能率が悪い。
【0007】したがって、頻繁な割り込みを許すVIV
Tキャッシュ・システムをクリーニングする高能率な方
法と装置のニーズが高まっている。
【0008】
【課題を解決する手段】本発明は、キャッシュメモリと
メインメモリを備えたシステムでキャッシュ・クリーン
機能を実行する方法と装置を提供する。アドレス回路
は、潜在的にダーティなキャッシュ・アドレスが存在す
る範囲で、一連のキャッシュ・アドレスを所定の順序で
出力する。制御論理回路は、前記アドレスからの出力に
関連するキャッシュ・アドレスからの情報を、各ダーテ
ィ・キャッシュ位置ごとに、対応するメインメモリの位
置に書き込む。このアドレス回路は、割り込みの後で前
記アドレス回路をイネーブルすることによってクリーン
機能が継続できるように、割り込みの検出、またはメイ
ンメモリへの全ダーティ・エントリーの書き込みの完了
のいずれかに応答して、イネーブルおよびディスエーブ
ルされうる。
【0009】本発明は、先行技術に重要な利点を提供す
る。第1に、本発明の利点は、ハードウエア・キャッシ
ュ命令の速度である。すなわち、ハードウエア・クリー
ン動作を最初に呼び出した後は、割り込みが発生したと
きにだけソフトウエアが関与する。第2に、ハードウエ
ア・クリーニング動作は、キャッシュ・エントリーの処
理を繰り返しているときに割り込まれることがあるの
で、リアルタイムの要求条件の必要に応じてシステムが
割り込みに応答することを可能にする。第3に、ダーテ
ィ・ビットに関連のあるキャッシュ・エントリーの範囲
だけを処理するように、キャッシュ・エントリーの数が
最適化される。
【0010】
【発明の実施の形態】本発明とその利点をより完全に理
解するために、添付の図面と共に、以下の説明について
論及する。
【0011】本発明は、図1〜6に関して最もよく理解
され、同じ参照番号は、各図面の同一の要素に使用され
ている。
【0012】図1は、マルチタスク・コンピュータ・シ
ステムのブロック図であり、エイリアシングによって生
じる問題を示している。このシナリオでは、2つのタス
ク10、12が相互に独立して動作しており、各タスク
は独自の仮想空間内にある。これらのタスクは、マルチ
タスク環境のプロセッサ14(ある種のシステムでは複
数のプロセッサ)によって実行されている。タスクを実
行するため、プロセッサ14は、(メインメモリと呼ば
れることが多い)物理メモリ16との間で情報の検索と
格納を実行する。プロセッサはメインメモリの速度より
もはるかに速い速度で動作できるのが普通であるから、
1つ以上のキャッシュメモリ18が使用されることが多
い。いくつかのアーキテクチャでは、データと命令の双
方が1つのキャッシュメモリに入れられるが、図示の実
施例では、別々のデータキャッシュと命令キャッシュ
(示さず)が使用されている。
【0013】キャッシュメモリは、プロセッサ14と、
普通、ダイナミックランダムアクセスメモリ(DRA
M)であるメインメモリ16との中間手段(intermedia
ry)の役目をする。普通、スタティックランダムアクセ
スメモリ(SRAM)であるキャッシュメモリは、メイ
ンメモリのバンクよりも(記憶容量の点で)非常に小さ
いが、動作が非常に速い。キャッシュメモリは、メモリ
バンクの情報の一部を保持する。プロセッサが情報にア
クセスするとき、そのデータがキャッシュメモリに存在
しているかどうか調べるために、先ずキャッシュメモリ
がチェックされ、存在しているときは「キャッシュ・ヒ
ット(cache hit)」が発生し、メモリアクセス要求に
応答して高速でデータを供給することができるキャッシ
ュメモリからデータが取り出される。これとは反対に、
その情報がキャッシュに存在していないときは、「キャ
ッシュ・ミス(cache miss)」が発生するので、プロセ
ッサ14は、メインメモリ16から情報を受信する。そ
してこの情報はキャッシュメモリ18にロードされる。
【0014】キャッシュ・アーキテクチャのヒット率
は、アプリケーションに依存して90%〜95%になる
ことが多い。実際の能率は、採用したキャッシュ方式、
キャッシュの大きさ、それとプロセッサが走らせている
アプリケーションによって決まる。したがって、キャッ
シュメモリは、高速のキャッシュメモリで或る瞬間にプ
ロセッサ14からアクセスされることが最も確からしい
データの一部を格納する一方、低速度で電力効率が高く
廉価なメモリが、大量のデータを格納することを可能に
する。
【0015】図1に示すように、キャッシュメモリ18
は、データアレイ20(メインメモリ16から受信した
情報を格納する高速メモリ)とタグメモリ22を含む。
一般的なキャッシュ・アーキテクチャでは、キャッシュ
コントローラ23がプロセッサ14から仮想メモリアド
レスを受信する。仮想アドレス(VA)はメインメモリ
16の物理アドレス(PA)に対応する。キャッシュコ
ントローラ23は、タグメモリ22とデータアレイ20
に接続されている。図示したキャッシュ・アーキテクチ
ャは、2ウエイ・セットアソシアティブ・キャッシュと
して構成されているので、タグメモリ22とデータアレ
イ20は、それぞれ2つのメモリプレーン、22a、2
2b、20a、20bを備えている。プレーン22a、
22bの出力は、データアレイ22a、22bのそれぞ
れのプレーン内の対応する位置に格納されている仮想ア
ドレスを示す。これらの出力は、要求された仮想アドレ
スと比較され、ヒットまたはミスが発生するか否かを決
定する。
【0016】複数のタスクが、異なる仮想アドレスでメ
インメモリ16内の1つの物理アドレスにアクセスし、
1つ以上のタスクが、その物理アドレスからの情報を修
正する場合に、データのエイリアシングが発生する。こ
のケースでは、共通の物理アドレスに関連する異なる仮
想アドレスに対応するキャッシュメモリ18内の異なる
位置が、異なる値を含むことがある。
【0017】エイリアシングの一例が図1に示されてい
る。タスク10がメインメモリ16からデータを読み出
してミスが発生すると、キャッシュコントローラは、メ
インメモリ16からの情報(データ1)を読む。したが
って、タスク1が、物理位置PA1に対応する仮想アド
レスVA1でメモリにアクセスすると、キャッシュコン
トローラは(VA1に対応する)キャッシュ位置N1で
タグメモリ22をチェックし、VA1がデータアレイ2
0に入れられて(cached)いるかどうかを決定する。キ
ャッシュに入れられていないと想定すると、PA1から
の情報がメインメモリ16から受信され、N1でデータ
アレイに入れられる。
【0018】VA1のデータがまったく修正されずに、
タスク1に割り当てられたタイムスライスが終ると想定
すると、データアレイ20の位置N1の情報は、メイン
メモリ16内の位置PA1のデータとまだ一致してい
る。オペレーティングシステムに制御されているプロセ
ッサは、タイムスライスの終りでタスク2に切り替わ
る。タスク2が、物理アドレスPA1に対応する仮想ア
ドレスVA2にアクセスしたときにミスが発生すると、
メインメモリ16からアドレスPA1の情報が受信さ
れ、キャッシュメモリ18の位置N2に格納される。こ
の時点では、N1とN2にあるデータは同一である。
【0019】タスク2が、仮想アドレスVA2の値「デ
ータ2」をメインメモリ16に書き込むと、キャッシュ
メモリ18のアドレスN2と、メインメモリ16のアド
レスPA1とに、新しい値データ2が書き込まれる。タ
スク1の仮想アドレスVA1に対応するアドレスN1
は、まだ古いデータ値、データ1を維持しているであろ
う。オペレーティングシステムがタスク1に戻ると、V
A1に関連する値はもはや無効である。したがって、オ
ペレーティングシステムは、各タスクに対してキャッシ
ュの値がメインメモリと一致するように、タスク間のコ
ンテクストスイッチの一部としてキャッシュの内容を無
効にしなければならない。
【0020】上に説明したキャッシュ・システムは、
「ライト・スルー(write-through)」キャッシュであ
るから、情報は、データアレイ20とメインメモリ16
の双方に書き込まれる。ライト・バック(write-back)
(または「コピー・バック(copy-back)」)キャッシ
ュは、イベントが発生してメインメモリ16の更新が必
要になるまでは、キャッシュメモリ18だけに書き込む
ことにより、電力消費量を低減するとともに、速度を速
くする。
【0021】ライト・バック・キャッシュにおけるエイ
リアシングの一例が図2に示されている。この例では、
タスク1は、再び物理アドレスPA1に対応する仮想ア
ドレスVA1で値データ1を読み出し、キャッシュ位置
N1に格納する。コンテクストスイッチの後、タスク2
は、物理アドレスPA1に対応する仮想アドレスVA2
で読み出し、キャッシュ位置N2に値データ1を格納す
る。アドレスVA2に新しいデータが書き込まれると、
キャッシュメモリ18の位置N2に格納されるデータ2
になるが、物理アドレスPA1は更新されないので、P
A1は、値データ1をまだ保持している。キャッシュコ
ントローラは、位置N2のタグとともにフラグ(「ダー
ティ・ビット(dirty bit)」)を設定し、このキャッ
シュ位置がメインメモリ16と一致していないことを示
す。このキャッシュ位置は、(図2のタグメモリ20の
「D」で示される)ダーティ・キャッシュ位置と呼ばれ
ることが多い。
【0022】キャッシュをクリーニングするには、ダー
ティとマークされた位置のすべてをメインメモリ16に
ライト・バックしなければならない。したがって、この
動作を実行する時間はキャッシュメモリの大きさに依存
する。大きさが数キロバイトの普通のキャッシュは、ク
リーニング動作に数万サイクルを必要とする。
【0023】1つの解決策は、ハードウエア・クリーン
動作を使用することであるが、これを使用すると、特定
の命令に応答してキャッシュがクリーニングされる。た
とえば、8キロバイトのキャッシュと、100MHzで
動作するメインメモリの場合、全キャッシュ位置がダー
ティの場合は80マイクロ秒も続くことがあるが、いく
つかの位置がダーティの場合は非常に短くてもよい。し
かし、クリーニング動作の時間中は割り込みがディスエ
ーブルされ、割り込みの待ち時間はキャッシュの大きさ
に正比例する。割り込みを直ちに処理しなければならな
いリアルタイムシステムの場合は、最悪ケースの待ち時
間が極端に長くなり、装置の動作に重大な影響を与える
ことがある。
【0024】図3は、キャッシュをクリーニングするた
めのソフトウエアによる解決策を描いた流れ図を示す。
ステップ30でカウンタがn=0に初期化される。ブロ
ック32でクリーン・エントリー・コマンドが発行され
ると、1つのキャッシュメモリ・アドレスのハードウエ
ア・クリーンが生じる。この割り込み不能なハードウエ
ア・クリーン機能は、カウンタの値nに対応するタグア
レイのエントリーに関連するメモリのブロックをクリー
ニングする。ブロックのクリーニングが実行されている
間、プロセッサは待ち合わせモードになっている。この
ブロックのクリーン機能が実行されると、ブロック34
でカウンタのnが増分され、nがタグメモリ22の最終
エントリーに到達していないときはブロック36、ブロ
ック32、34のステップが繰り返される。
【0025】ハードウエア・クリーン機能は、ブロック
38からブロック40に示すとおり機能する。ブロック
38で、ソフトウエアからの「クリーン・エントリー」
要求(ブロック32)が受信される。この要求に応答し
て、ダーティかどうか調べるために、タグメモリのアド
レスnに対応するダーティ・ビットがチェックされる
(ブロック40)。判断ブロック42でダーティ・ビッ
トが設定されていると、データアレイ20の位置nにあ
る対応する情報が、タグメモリ22の位置nに格納され
た仮想アドレスに対応するメインメモリの物理アドレス
にコピーされる。したがって、位置がn=N2の場合、
ダーティ・ビットが設定されているので、タグメモリ2
2の位置N2のデータが物理アドレスPA1に書き込ま
れるであろう。このエントリーがメインメモリ16にセ
ーブされた後、または判断ブロック42でダーティ・ビ
ットが設定されていない場合は、クリーン機能はブロッ
ク46で完了し、制御はソフトウエア・ルーチンに戻
る。
【0026】図3のソフトウエア・ルーチン(すなわ
ち、ブロック30〜36)は、いかなる小規模演算の間
でも割り込まれうる。ハードウエア・ルーチンは割り込
み可能ではないため、ハードウエア・ルーチンが実行し
ている間は数十サイクルのオーダーの遅れになることが
あるが、リアルタイムシステムにとっては、一般にこの
遅れは許容可能である。ソフトウエア・クリーン機能に
関する主要な問題は、多数のキャッシュ位置をクリーニ
ングするために必要なソフトウエアのステップを処理す
るために必要な時間が極端に長いことであって、このた
めコンテクストスイッチに要求される時間が非常に長く
なる。最善のケースの場合、キャッシュとプロセッサが
100MHzで走行していると想定すると、完全なキャ
ッシュ・クリーン動作を実行する時間は、約50マイク
ロ秒である。
【0027】第3の方法は、1998年4月29日に出
願された仏国特許出願第9805420号と、Chauvelほかに対
する、1998年11月5日に出願された米国特許出
願、シリアル番号第09/187,118号で、テキサス・インス
ツルメント株式会社に譲渡され、名称が「部分キャッシ
ュ・クリーニングを用いるコンピュータ回路、システム
と方法(Computer Circuits, Systems, and Methods Us
ing Partial Cache Cleaning)」に関連して説明されて
いるが、ここでこれらの特許出願に言及することにより
これらの特許出願の開示内容を本願に組み入れることに
する。この方法では、ハードウエア・クリーン機能でク
リーニングしなければならないキャッシュ位置の数が減
少するため、ダーティな最高位キャッシュ位置の情報が
保持される。このアーキテクチャは、ハードウエア・ク
リーン機能の平均的パフォーマンスを改善するが、(広
範囲なブロックがダーティだという)最悪ケースのシナ
リオに対するリアルタイムの問題を解決しない。何故な
らば、ハードウエア動作が割り込み不能のままだからで
ある。
【0028】図4は、割り込み可能なハードウエア・ク
リーン機能の動作を説明する流れ図を示す。このハード
ウエアは、MINレジスタとMAXカウンタを含む。当初、MI
Nは最高位キャッシュ位置に設定され、MAXは「0」に設
定される。タグメモリ22にダーティ・ビットが設定さ
れるのに伴い、n<MINの場合は、MINレジスタにダーテ
ィ・タグ位置のアドレス(n)がロードされ、n>MAX
の場合は、ダーティ・タグ位置のアドレスにMAXが設定
される。このため、MINおよびMAXは、すべてのダーティ
位置を含むキャッシュ18内のアドレスの最小範囲を定
義する。MIN>MAX状態ビットは、MINレジスタ内のアド
レスが、いつもMAXカウンタ内のアドレスよりも大きい
か否かを示す。MIN>MAXビットは、ビットが設定されて
いるか否かを簡単に決定する状態レジスタの最高位ビッ
ト、すなわち符号ビットでよい。
【0029】コンテクストスイッチの間、またはキャッ
シュ・クリーンが必要な他の時間に、ブロック50で、
ソフトウエアはハードウエア・クリーン機能を開始す
る。クリーニングの制御がハードウエア・クリーン機能
から戻るまで、CPUは待ち合わせモードになってい
る。以下、詳細に説明するように、ハードウエア・クリ
ーニング・ルーチンは割り込み可能なので、割り込みが
存在している場合、またはクリーン動作が完了した場合
は、ソフトウエアに制御を戻す。ハードウエア・クリー
ン機能の「終り」の後が存在しているとき、または全ダ
ーティ・キャッシュ位置をメモリに書き込んでしまった
場合に発生する)、流れはブロック52に続き、ソフト
ウエアは、MIN>MAX状態ビットが設定されているかどう
かを調べるためにチェックする。MIN>MAX状態ビットが
設定されていると、このことは、クリーニング動作が完
了した(すなわち、ハードウエア・クリーン動作が呼び
出されたときにダーティ・キャッシュ位置がひとつもな
かった)ので、コンテクストスイッチが継続してもよい
ことを示す。MIN>MAX状態ビットが設定されていないと
きは、ハードウエア・クリーン動作は中断し、ハードウ
エア・クリーニング機能が継続しているブロック50に
制御を戻す。
【0030】ブロック54〜66に関連して、ハードウ
エア・クリーニング機能を説明する。ブロック54で、
ハードウエア・クリーニング機能がキャッシュ・クリー
ニング要求を受信する。ブロック56では、キャッシュ
・エントリーに関連するダーティ・ビットが設定されて
いると、カウンタMAXが示すキャッシュ・エントリー
を、メインメモリにセーブする。ブロック58でMAXが
減分される。
【0031】ブロック60で示すように、この時点で保
留中のどの割り込みも処理されうる。割り込みが受信さ
れていないときは、MINがまだMAXより小さいかMAXに等
しい場合、判断ブロック62はブロック56に戻って次
のエントリーをセーブする。MINがMAXより大きいとき、
すなわち、MIN>MAX状態ビットが設定されているとき
は、クリーニング動作は完了する。このケースでは、MI
NレジスタおよびMAXレジスタは、ブロック64でそれぞ
れの初期設定(MAX=0、MIN=最高位キャッシュ・エン
トリー)に戻り、ブロック66でクリーニング動作が完
了すると、ブロック52で制御はソフトウエア・ルーチ
ンに戻る。
【0032】判断ブロック60に戻って、この時点で割
り込みが受信されていると、流れはブロック66に向か
い、ここでクリーン動作が一時的に終了し、制御はオペ
レーティングシステムのソフトウエアに戻り、この割り
込みを処理する。この割り込みが処理された後、判断ブ
ロック52は、MIN>MAX状態ビットが設定されているか
否かを決定する。このビットが設定されていないとき
は、割り込みのために、クリーニング動作が全ダーティ
・キャッシュ・エントリーをクリーニングしなかったこ
とになる。ハードウエア・クリーン・キャッシュ命令が
再び呼び出されて、MAXの現在値で起動し、別の割り込
みが発生するまで、またはMINがMAXより大きくなるまで
カウントダウンを続ける。
【0033】図4で説明したキャッシュ・クリーニング
方法は、先行技術に重要な利点を提供する。第1に、こ
の方法の利点は、ハードウエア・キャッシュ命令の速度
である。すなわち、ハードウエア・クリーン動作の最初
の呼び出し後は、割り込みが発生したときにだけソフト
ウエアが関与する。これとは反対に、ハードウエア・ク
リーニング動作は、キャッシュ・エントリーの処理を繰
り返しているときに割り込まれることがあるので、リア
ルタイムの要求条件の必要に応じてシステムが割り込み
に応答することを可能にする。第3に、ダーティ・ビッ
トに関連のあるキャッシュ・エントリーの範囲だけを処
理するように、キャッシュ・エントリーの数が最適化さ
れる。
【0034】図5、6は、上に説明したハードウエア・
クリーンを実行する実施例のブロック図を示す。キャッ
シュコントローラ70は、FULL CLEAN信号とEND CLEAN
信号を受信する。FULL CLEAN信号とEND CLEAN信号は、
アドレス制御回路72によって受信される。アドレス制
御回路72は、キャッシュ・アドレスとMIN>MAX信号を
制御論理74に出力する。制御論理74は状態レジスタ
76に接続される。制御論理74はキャッシュメモリ1
8に接続される。ORゲート78は、MIN>MAX信号と1
つ以上の割り込み信号を受信する。
【0035】動作する場合、キャッシュコントローラ7
0は、プロセッサ14(図1を参照)からアドレスを受
信し、プロセッサ14と適切なデータだけを送受するよ
うにキャッシュメモリ18を制御する。キャッシュコン
トローラ70は、上に説明したハードウエア・クリーン
機能を提供するだけでなく、一般的なキャッシュ制御回
路の機能のすべてを実行する。アドレス制御回路72
は、図4に関連して説明したように、MINレジスタ84
とMAXカウンタ82を維持する。アドレス制御回路72
の出力(MAXカウンタの値)は、チェックすべき次の
キャッシュ・エントリーのアドレスを指定し、このエン
トリーがダーティな場合は、このエントリーをメインメ
モリ16にセーブする。MIN>MAX信号は、MINレジス
タの値がMAXカウンタの現在値より大きいか否かを示す
ために出力される。
【0036】FULL CLEAN信号が受信されると、MAXカウ
ンタ82は、ダーティかも知れないキャッシュ18の最
高位エントリーのアドレスを含む。MAXカウンタ82の
出力は、制御論理74によって受信される。このエント
リーがダーティかどうか調べるために、このエントリー
のタグメモリ22が制御論理74によってチェックされ
た後、ダーティ・ビットが設定されている場合に、この
エントリーがメインメモリ16にセーブされると、MAX
カウンタ82は次の下位アドレスに減分される。MAXカ
ウンタ82が指定したエントリーに関連するダーティ・
ビットをチェックし、ダーティ・ビットが設定されてい
る場合は、このエントリーをメインメモリ16にセーブ
し、さらにMAXカウンタ82を減分するプロセスは、割
り込み信号が受信されるまで、またはMINレジスタの値
がMAXカウンタの値より大きくなるまで繰り返される。
いずれかの条件が発生すると、ORゲート78からEND
CLEAN信号が出力され、この信号はアドレス制御回路7
2と制御論理74によるこの後のクリーニングを停止す
るが、MAXカウンタ82とMINレジスタ84の現在の値を
維持する。
【0037】図6は、アドレス制御回路72の実施例を
詳細に示す。FULL CLEAN信号およびEND CLEAN信号はセ
ット・リセット(SR)フリップフロップ80によって
受信される。フリップフロップ80の出力は、各サイク
ルでMAXカウンタ82を減分するイネーブル(EN)信
号である。NEXT信号は、次のキャッシュ・アドレスのカ
ウンタを減分するクリーニング機能中に、メインメモリ
16への各ライト・バックが終了したとき、MAXカウン
タ82によって制御論理74から受信される。MINレジ
スタ84の出力とMAXカウンタ82の出力は、それぞれ
比較器86の入力に接続される。比較器86の出力はMI
N>MAX信号である。仮想アドレスは、MAXカウンタ82
の入力、MINレジスタ84の入力、比較器88の入力の
1つ、および比較器90の入力の1つに接続される。MA
Xカウンタ82の出力は、比較器90の他の入力に接続
され、MINレジスタ84の出力は、比較器88の他の入
力に接続される。比較器88の出力は、書き込みヒット
の現在アドレスが、MINレジスタ84の出力より小さい
か否かを示すとともに、MINレジスタ84のロード(L
D1)入力に接続される。比較器90の出力は、書き込
みヒットの現在アドレスが、MAXカウンタ82の出力よ
り大きいか否かを示すとともに、MAXカウンタ82のロ
ード(LD2)入力に接続される。
【0038】動作する場合、MAXカウンタ82がイネー
ブルされると、MAXカウンタ82は、制御論理からNEXT
信号を受信するたびに減分する。クリーン動作の終了ま
たは割り込みのいずれかの理由でFULL CLEAN信号がプロ
セッサから受信されると、フリップフロップ80がセッ
ト(ENが真)されて、ハードウエア・クリーン機能を
継続(または起動)し、END CLEAN信号が受信されると
リセット(ENが偽)される。フリップフロップ80が
リセットされるとカウンタは減分を中止するので、別の
FULL CLEAN信号が受信されるまで、クリーニングは停止
する。
【0039】比較器88、90は、メインメモリ16の
通常の動作中に、それぞれMINレジスタ84とMAXカウン
タ82をロードする。書き込みヒットのアドレスがMAX
カウンタ82の現在値より大きいとき、比較器90の出
力によってこのアドレス(またはその適切な位置)がMA
Xカウンタにロードされる。同様に、書き込みヒットの
アドレスがMINレジスタ84の現在値より小さいとき、
比較器88の出力によってこのアドレス(またはその適
切な位置)がMINレジスタ84にロードされる。
【0040】本発明の特定の好適実施例を示してきた
が、当業者には判るように、多数の変形が実現されうる
であろう。たとえば、ダーティな最高位キャッシュ位置
からダーティな最下位キャッシュ位置までのエントリー
をクリーニングするのではなく、MINエントリーに増分
カウンタを使用するとともに、レジスタにMAXエントリ
ーを格納することによって、反対方向でエントリーをク
リーニングするように、図示した実施例を容易に修正す
ることができるであろう。キャッシュ内の既存のダーテ
ィな位置の範囲を保持する回路は、キャッシュ制御論理
の一部として示されているが、この回路は、別のサブシ
ステムの一部であってもよいし、別々のサブシステムで
あってもよい。マイクロプロセッサ、プロセッサとコプ
ロセッサ、2つに分かれたデータメモリと命令メモリな
ど、特定の装置で使用される処理およびメモリアーキテ
クチャに依存する変動は、当業者には判るように、ここ
に図示したアーキテクチャから保証されうる。ここで説
明した、特定の2ウエイ・セットアソシアティブ・キャ
ッシュ技術とは異なるキャッシュ技術は、本発明によっ
て使用されうるであろう。
【0041】本発明の詳細な説明は、特定の代表的な実
施例に向けられてきたが、代替実施例とともに、これら
の実施例の各種修正は当業者に提案されるであろう。特
許請求の範囲に入るいかなる修正や代替実施例も、本発
明に含まれるものとする。
【0042】以上の説明に関して更に以下の項を開示す
る。 (1)キャッシュメモリおよびメインメモリを備えたシ
ステムにおいて、ハードウエア・キャッシュ・クリーン
機能を実行する回路であって、潜在的にダーティなキャ
ッシュ・アドレスの範囲内で、一連のキャッシュ・アド
レスを所定の順序で出力するアドレス回路と、出力され
たキャッシュ・アドレスからの情報を、前記アドレス回
路から対応するメインメモリ位置まで、各ダーティ・キ
ャッシュ位置ごとに書き込む制御論理回路と、割り込み
の検出、またはメインメモリへの全ダーティ・キャッシ
ュ位置の書き込みの完了のいずれかに応答して、前記ア
ドレス回路をイネーブルおよびディスエーブルする回路
と、を具備する回路。
【0043】(2)第1項に記載の回路において、前記ア
ドレス回路は、キャッシュ・アドレスを出力するカウン
タを含む回路。
【0044】(3)第2項に記載の回路において、前記ア
ドレス回路は、レジスタをさらに含む回路。
【0045】(4)第2項または第3項に記載の回路にお
いて、前記カウンタは、前記ダーティの可能性のある最
高位キャッシュ・アドレスのアドレスを含むとともに、
前記一連のキャッシュ・アドレスを出力するために減分
される回路。
【0046】(5)第4項に記載の回路において、レジス
タは、前記ダーティの可能性のある最下位アドレスのア
ドレスを格納する回路。
【0047】(6)第2、3項または第5項に記載の回路
において、前記カウンタは、前記ダーティの可能性のあ
る最下位キャッシュ・アドレスのアドレスを含むととも
に、前記一連のキャッシュ・アドレスを出力するために
増分される回路。
【0048】(7)第6項に記載の回路において、レジス
タは、前記ダーティの可能性のある最高位アドレスのア
ドレスを格納する回路。
【0049】(8)第1、2、3、5項または第7項に記
載の回路において、前記イネーブルおよびディスエーブ
ルする回路は、フリップフロップを含む回路。
【0050】(9)キャッシュメモリおよびメインメモリ
を備えたシステムにおいて、ハードウエア・キャッシュ
・クリーン機能を実行する方法であって、潜在的にダー
ティなキャッシュ・アドレスの範囲内で、一連のキャッ
シュ・アドレスを所定の順序で発生するステップと、前
記キャッシュ・アドレスの情報がダーティな場合、発生
した前記キャッシュ・アドレスのキャッシュメモリから
の情報を、対応するメインメモリ位置に書き込むステッ
プと、割り込み、または前記メインメモリへの全ダーテ
ィ・エントリーの書き込みの完了のいずれかに応答し
て、割り込みの後に前記一連の発生したキャッシュ・ア
ドレスをイネーブルすることにより、前記クリーン機能
が継続できるように、前記一連の発生したキャッシュ・
アドレスをイネーブルおよびディスエーブルするステッ
プと、を含む方法。
【0051】(10)第9項に記載の方法において、前記
一連のキャッシュ・アドレスは、カウンタから出力され
る方法。
【0052】(11)第10項に記載の方法において、前
記カウンタは、前記ダーティの可能性のある最高位キャ
ッシュ・アドレスのアドレスを含み、前記一連のキャッ
シュ・アドレスは、前記カウンタを減分することによっ
て発生する方法。
【0053】(12)第11項に記載の方法において、レ
ジスタは、前記ダーティの可能性のある最下位アドレス
のアドレスを格納する方法。
【0054】(13)第10、11項または第12項に記
載の方法において、前記カウンタは、前記ダーティの可
能性のある最下位キャッシュ・アドレスのアドレスを含
み、前記一連のキャッシュ・アドレスは、前記カウンタ
を増分することによって発生する方法。
【0055】(14)第13項に記載の方法において、レ
ジスタは、前記ダーティの可能性のある最高位アドレス
のアドレスを格納する方法。
【0056】(15)第9、10、11、12項または第
14項に記載の方法において、イネーブルおよびディス
エーブルする前記ステップは、フリップフロップを使用
して、前記一連の発生したキャッシュ・アドレスをイネ
ーブルおよびディスエーブルするステップを含む方法。
【0057】(16)VIVT(仮想インデックス、仮想
タグ)キャッシュ18は、割り込み可能なハードウエア
・クリーン機能を使用して、コンテクストスイッチ中に
キャッシュのダーティ・エントリーをクリーニングす
る。MAXカウンタ82およびMINレジスタ84は、ダーテ
ィなキャッシュ位置の範囲を定義する。ハードウエア・
クリーン機能の実行中、エントリーがダーティとマーク
された場合、MAXカウンタ82によって与えられたアド
レスのキャッシュ・エントリーがメインメモリ16に書
き込まれている間、MAXカウンタ82はカウントダウン
する。割り込みが発生すると、この割り込みが処理され
てから後続のクリーン要求が発行されるまで、MAXカウ
ンタはディスエーブルされる。
【0058】関連特許出願の引用 本願は、Chauvelほかに対する、1998年11月5日
に出願された米国特許出願、シリアル番号第09/187,118
号で、名称が「部分キャッシュ・クリーニングを用いる
コンピュータ回路、システムと方法(Computer Circuit
s, Systems, and Methods Using Partial Cache Cleani
ng)」に関連する。
【0059】連邦政府が助成する研究開発への申請(st
atement of federally sponsored research or develop
ment)
【図面の簡単な説明】
【図1】VIVTライト・スルー・キャッシュのアーキ
テクチャと、このアーキテクチャによるエイリアシング
の問題を示す図。
【図2】VIVTライト・バック・アーキテクチャと、
このアーキテクチャによるエイリアシングの問題を示す
図。
【図3】先行技術によるソフトウエア・クリーン動作の
流れ図を示す図。
【図4】割り込み可能なハードウエア・クリーン動作の
流れ図を示す図。
【図5】図4のハードウエア・クリーン動作を実行する
キャッシュコントローラのブロック図を示す図。
【図6】図5のキャッシュコントローラのアドレス制御
回路のブロック図を示す図。
【符号の説明】
10 タスク1 12 タスク2 14 プロセッサ 16 メインメモリ 18 キャッシュメモリ 20 データアレイ 22 タグメモリ 23,70 キャッシュコントローラ 72 アドレス制御回路 74 制御論理 76 レジスタ 78 ORゲート 80 フリップフロップ 82 MAXカウンタ(MAX減算カウンタ) 84 MINレジスタ 86,88,90 比較器
───────────────────────────────────────────────────── フロントページの続き (72)発明者 セルジュ ラサール フランス国 フレジュ、サン、ジャン ド カンヌ、リュ ドュ マルソー、278 (72)発明者 ドミニク ベノワ ジャック ダンベルノ フランス国 ビュヌーブ ルーブ、シュマ ン デ バッス ジヌスティエール 47

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 キャッシュメモリおよびメインメモリを
    備えたシステムにおいて、ハードウエア・キャッシュ・
    クリーン機能を実行する回路であって、 潜在的にダーティなキャッシュ・アドレスの範囲内で、
    一連のキャッシュ・アドレスを所定の順序で出力するア
    ドレス回路と、 出力されたキャッシュ・アドレスからの情報を、前記ア
    ドレス回路から対応するメインメモリ位置まで、各ダー
    ティ・キャッシュ位置ごとに書き込む制御論理回路と、 割り込みの検出、またはメインメモリへの全ダーティ・
    キャッシュ位置の書き込みの完了のいずれかに応答し
    て、前記アドレス回路をイネーブルおよびディスエーブ
    ルする回路と、を具備する回路。
  2. 【請求項2】 キャッシュメモリおよびメインメモリを
    備えたシステムにおいて、ハードウエア・キャッシュ・
    クリーン機能を実行する方法であって、 潜在的にダーティなキャッシュ・アドレスの範囲内で、
    一連のキャッシュ・アドレスを所定の順序で発生するス
    テップと、 前記キャッシュ・アドレスの情報がダーティな場合、発
    生した前記キャッシュ・アドレスのキャッシュメモリか
    らの情報を、対応するメインメモリ位置に書き込むステ
    ップと、 割り込み、または前記メインメモリへの全ダーティ・エ
    ントリーの書き込みの完了のいずれかに応答して、割り
    込みの後に前記一連の発生したキャッシュ・アドレスを
    イネーブルすることにより、前記クリーン機能が継続で
    きるように、前記一連の発生したキャッシュ・アドレス
    をイネーブルおよびディスエーブルするステップと、を
    含む方法。
JP2000040479A 1999-02-18 2000-02-18 仮想インデックス仮想タグデータキャッシュ用に最適化されたハードウエアクリーニング機能 Pending JP2000242556A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP99400396.0 1999-02-18
EP99400396A EP1030243B1 (en) 1999-02-18 1999-02-18 Optimized hardware cleaning function for virtual index virtual tag data cache
US09/447,194 US6606687B1 (en) 1999-02-18 1999-11-22 Optimized hardware cleaning function for VIVT data cache

Publications (1)

Publication Number Publication Date
JP2000242556A true JP2000242556A (ja) 2000-09-08

Family

ID=29271938

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000040479A Pending JP2000242556A (ja) 1999-02-18 2000-02-18 仮想インデックス仮想タグデータキャッシュ用に最適化されたハードウエアクリーニング機能

Country Status (4)

Country Link
US (1) US6606687B1 (ja)
EP (1) EP1030243B1 (ja)
JP (1) JP2000242556A (ja)
DE (1) DE69903707T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009534755A (ja) * 2006-04-19 2009-09-24 クゥアルコム・インコーポレイテッド 物理タグ付け動作を用いる仮想タグ付き命令キャッシュ

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7472230B2 (en) 2001-09-14 2008-12-30 Hewlett-Packard Development Company, L.P. Preemptive write back controller
EP1313014B1 (en) * 2001-11-15 2010-03-03 Texas Instruments France Interruptible and re-entrant instruction for cleaning a region of a cache memory
GB0207296D0 (en) * 2002-03-28 2002-05-08 Koninkl Philips Electronics Nv Method and appartus for context switching in computer operating systems
EP1605360B1 (en) * 2004-06-08 2010-02-17 Freescale Semiconductors, Inc. Cache coherency maintenance for DMA, task termination and synchronisation operations
US7606363B1 (en) 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
GB0516474D0 (en) * 2005-08-10 2005-09-14 Symbian Software Ltd Pre-emptible context switching in a computing device
CN102197381A (zh) * 2008-10-28 2011-09-21 Nxp股份有限公司 用于可拆卸装置的具有高速缓存和接口的数据处理电路
FR2956913B1 (fr) * 2010-03-01 2012-04-20 Sagem Defense Securite Procede de sequencement deterministe multitache
US9195598B2 (en) 2012-06-08 2015-11-24 International Business Machines Corporation Synchronous and asynchronous discard scans based on the type of cache memory
US9336150B2 (en) 2012-06-08 2016-05-10 International Business Machines Corporation Performing asynchronous discard scans with staging and destaging operations
US9208099B2 (en) 2012-08-08 2015-12-08 International Business Machines Corporation Adjustment of the number of task control blocks allocated for discard scans
US9176892B2 (en) 2013-01-22 2015-11-03 International Business Machines Corporation Performing staging or destaging based on the number of waiting discard scans
US10318436B2 (en) * 2017-07-25 2019-06-11 Qualcomm Incorporated Precise invalidation of virtually tagged caches

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
US5515522A (en) * 1994-02-24 1996-05-07 Hewlett-Packard Company Coherence index generation for use by an input/output adapter located outside of the processor to detect whether the updated version of data resides within the cache
US5664150A (en) * 1995-03-21 1997-09-02 International Business Machines Corporation Computer system with a device for selectively blocking writebacks of data from a writeback cache to memory
JPH10501085A (ja) * 1995-06-08 1998-01-27 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 二次キャッシュ・メモリ用のキャッシュ・フラッシュ機構
US6341324B1 (en) * 1995-10-06 2002-01-22 Lsi Logic Corporation Exception processing in superscalar microprocessor
US5809560A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation Adaptive read-ahead disk cache
JPH09223118A (ja) * 1996-02-14 1997-08-26 Oki Electric Ind Co Ltd スヌープキャッシュメモリ制御システム
US5915262A (en) * 1996-07-22 1999-06-22 Advanced Micro Devices, Inc. Cache system and method using tagged cache lines for matching cache strategy to I/O application
FR2778254B1 (fr) * 1998-04-29 2002-02-15 Texas Instruments France Circuits,systemes et procedes d'ordinateur utilisant un nettoyage partiel d'une memoire cache
US6115777A (en) * 1998-04-21 2000-09-05 Idea Corporation LOADRS instruction and asynchronous context switch
US6397302B1 (en) * 1998-06-18 2002-05-28 Compaq Information Technologies Group, L.P. Method and apparatus for developing multiprocessor cache control protocols by presenting a clean victim signal to an external system
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009534755A (ja) * 2006-04-19 2009-09-24 クゥアルコム・インコーポレイテッド 物理タグ付け動作を用いる仮想タグ付き命令キャッシュ

Also Published As

Publication number Publication date
EP1030243A1 (en) 2000-08-23
DE69903707T2 (de) 2003-07-10
DE69903707D1 (de) 2002-12-05
EP1030243B1 (en) 2002-10-30
US6606687B1 (en) 2003-08-12

Similar Documents

Publication Publication Date Title
US6049867A (en) Method and system for multi-thread switching only when a cache miss occurs at a second or higher level
JP3512678B2 (ja) キャッシュメモリ制御装置および計算機システム
US5802569A (en) Computer system having cache prefetching amount based on CPU request types
US5715428A (en) Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US6317811B1 (en) Method and system for reissuing load requests in a multi-stream prefetch design
JP3875738B2 (ja) ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置
US5388247A (en) History buffer control to reduce unnecessary allocations in a memory stream buffer
US5091850A (en) System for fast selection of non-cacheable address ranges using programmed array logic
US9886385B1 (en) Content-directed prefetch circuit with quality filtering
US5715427A (en) Semi-associative cache with MRU/LRU replacement
US20030196045A1 (en) Processing device which prefetches instruction having indicator bits specifying a quantity of operand data for prefetching
US6332179B1 (en) Allocation for back-to-back misses in a directory based cache
JP2000242556A (ja) 仮想インデックス仮想タグデータキャッシュ用に最適化されたハードウエアクリーニング機能
US7516275B2 (en) Pseudo-LRU virtual counter for a locking cache
US6772326B2 (en) Interruptible and re-entrant cache clean range instruction
US5809537A (en) Method and system for simultaneous processing of snoop and cache operations
US5161219A (en) Computer system with input/output cache
EP0436305B1 (en) System and method for efficiently supporting access to I/O devices through large direct-mapped data caches
EP0309995B1 (en) System for fast selection of non-cacheable address ranges using programmed array logic
US6976130B2 (en) Cache controller unit architecture and applied method
US6321299B1 (en) Computer circuits, systems, and methods using partial cache cleaning
US20040243765A1 (en) Multithreaded processor with multiple caches
US5953740A (en) Computer memory system having programmable operational characteristics based on characteristics of a central processor
EP0437712B1 (en) Tandem cache memory
US11176039B2 (en) Cache and method for managing cache

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070626

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070926

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071001

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071026

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071031

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071129

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080307