【解決手段】デデュープ可能なキャッシュは、デデュープ可能なリードキャッシュ及び非デデュープ可能なライトバッファを含むキャッシュメモリ305と、デデュープ可能なリードキャッシュを利用してデータのリード及びライトを管理し、デデュープ可能なリードキャッシュへのライト要請が成功したか否かを示すライト状態信号を伝送するデデュープエンジン405と、キャッシュコントローラ310と、を備える。キャッシュコントローラは、キャッシュヒット/ミスチェックロジックと、アドレスがデデュープ可能なリードキャッシュで発見場合にキャッシュメモリの第1データにアクセスするヒットブロックと、アドレスがデデュープ可能なリードキャッシュで発見されない場合、バックエンド大容量メモリにアクセスするミスブロックと、ヒストリーストレージと、を含む。
前記デデュープ可能なリードキャッシュは、前記デデュープ可能なリードキャッシュに物理的に適合するものよりもより多くのキャッシュラインを格納することをシミュレーションすることを特徴とする請求項1に記載のデデュープ可能なキャッシュ。
前記キャッシュメモリは、前記デデュープ可能なリードキャッシュのキャッシュラインに関する情報を格納するメタデータ領域を更に含むことを特徴とする請求項1に記載のデデュープ可能なキャッシュ。
前記第2ライト要請は、前記デデュープ可能なリードキャッシュの前記キャッシュラインに0の値をライトする要請を含むことを特徴とする請求項4に記載のデデュープ可能なキャッシュ。
前記キャッシュコントローラは、前記キャッシュメモリのメタデータ領域に前記キャッシュラインが有効でないとしてマークすることを特徴とする請求項4に記載のデデュープ可能なキャッシュ。
前記ヒットブロックは、前記第2ライト要請に応答する前記デデュープエンジンから非確認応答(NAK)信号を受信して前記デデュープ可能なリードキャッシュから第2キャッシュラインを除去し、前記デデュープ可能なリードキャッシュから前記第2キャッシュラインを除去した後に前記デデュープエンジンに前記第2ライト要請を再び伝送することを特徴とする請求項4に記載のデデュープ可能なキャッシュ。
前記ミスブロックは、前記ライト要請に応答する前記デデュープエンジンから非確認応答(NAK)信号を受信して前記デデュープ可能なリードキャッシュからキャッシュラインを除去し、前記デデュープ可能なリードキャッシュから前記キャッシュラインを除去した後に前記デデュープエンジンに前記ライト要請を再び伝送することを特徴とする請求項8に記載のデデュープ可能なキャッシュ。
前記デデュープ可能なリードキャッシュの前記キャッシュラインを無効化するステップは、前記デデュープエンジンからライト状態信号の確認応答(ACK)を受信するステップと、を更に含むことを特徴とする請求項11に記載の方法。
前記データを非デデュープ可能なライトバッファに格納するステップは、前記データが前記デデュープ可能なリードキャッシュの前記キャッシュラインに存在するか否かに拘らず、前記データを前記非デデュープ可能なライトバッファに格納するステップと、を含むことを特徴とする請求項10に記載の方法。
前記デデュープ可能なリードキャッシュの第1キャッシュラインを選択するステップは、前記デデュープ可能なリードキャッシュから現在データを格納していない前記第1キャッシュラインを選択するステップを含むことを特徴とする請求項15に記載の方法。
前記データを前記第1キャッシュラインにライトすることを試みるためにデデュープエンジンに前記データを提供するステップは、前記デデュープエンジンからライト状態信号の確認応答(ACK)を受信するステップを含むことを特徴とする請求項15に記載の方法。
【発明を実施するための形態】
【0013】
以下、本発を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳細な説明で、発明の完璧な理解を可能にするために、多様な特定の詳細事項を記載する。しかし、本技術分野における通常の技術者がこのような特定の詳細事項なしに発明を実施することは自明である。他の場合において、よく知られている方法、手順、構成要素、回路、そしてネットワークは実施形態を不必要に曖昧にしないために詳細に説明しない。
【0014】
第1、第2などの用語は、本明細書で多様な要素を説明するために使用されるとしても、このような要素は、これらの用語によって限定されないことが理解される。これらの用語は、一つの要素を他の要素と区別するために使用される。例えば、本発明の権利範囲を逸脱せずに、第1モジュールは、第2モジュールと称され、第2モジュールは、第1モジュールと称される。
【0015】
本明細書において、発明の詳細な説明で使用する用語は、単に特定の実施形態を説明するための目的であり、本発明を制限しようとする意図ではない。発明の説明及び請求項で使用するように、文脈が明らかに他のことを示していない限り、単数形の用語は複数形を含むように意図する。本明細書で「及び/又は」という用語は、列挙された項目に関連する一つ以上の可能な組み合わせを全て示すものと理解される。「含む(comprises)」及び/又は「含む(comprising)」という用語は、本明細書で使用する場合、記述する特徴、整数、ステップ、動作、要素、及び/又は構成要素の存在を明示するものと理解される。しかし、一つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、及び/又はそれらのグループの追加又は存在を排除するものではない。図面の構成要素及び特徴は、必ずしも縮尺に合わせて描かれていない。
【0016】
デデュープダイナミックランダムアクセスメモリ(DRAM)は、所定のDRAMユニット内で向上した論理的容量を提供するが、一般のDRAMの動作よりも一般的に遅い。この遅いパフォーマンスにより、デデュープDRAMを一般のDRAMキャッシュとしてすることは使用できない。
【0017】
このような懸念を解決するために、デデュープDRAMキャッシュのメモリを、デデュープ可能なDRAMリード(read)キャッシュ、及び非デデュープ可能な(言い換えると、デデュープ不可能な)ライト(write)バッファに分ける。デデュープDRAMへのライトは遅いため、既存のDRAMがライトバッファ(WB)に用いられる。リード要請は、デデュープ可能なリードキャッシュ(RC)から(殆ど)提供されるが、ライトは通常のDRAMライトバッファ(WB)によって提供される。
【0018】
例えば、物理的なDRAMが8ギガバイト(GB)である場合、物理的なDRAMは4GBの物理的デデュープDRAM RC(リードキャッシュ)(総8GBの仮想容量を提供する)及び4GBの物理的なDRAMのWB(ライトバッファ)に分割される。デデュープエンジンは、単にデデュープDRAMのRCによって利用される特定の4GBの範囲についてデデュープメカニズム(mechanism)を動作させる。
【0019】
しかし、デデュープDRAMがリードキャッシュとして使用されるとしても、ライトはデデュープDRAMに相変わらず影響を与える。例えば、ホスト(host)からの64バイト(B)のアップデートは、デデュープDRAMのRCに格納されたデータに影響を与えるか(ライトヒット(hit))、或いはデータが現在のデデュープDRAM RCにない場合(リードミス(miss))、バックエンド大容量のメモリからの2キロバイト(KB)が必要になる。デデュープDRAMのRCにライトする状況を解決するために、新たなWR_Status信号が用いられる。即ち、ライトが成功した場合、デデュープエンジンはACK(確認応答、又は肯定応答)を返し、そうでない場合、デデュープエンジンはNAK(非確認応答、又は否定応答)を返す。キャッシュコントローラがNAKを受信すると、キャッシュコントローラは、キャッシュフィル(cache fill)をキャンセル(cancel)する(即ち、2KBフィル(fill)はキャッシュされない)。
【0020】
従って、デデュープDRAMのRCライトヒット処理のために、デデュープDRAMキャッシュは、キャッシュライン(cache line)が有効でないようにRCのメタデータ(metadata)をアップデートし、64Bの0(キャッシュラインを有効しないようにする)をデデュープエンジンにライトする(これはデデュープDRAMのRCをガーベージコレクション(garbage collection)することに関連付ける)。このような処理が完了した後、デデュープDRAMキャッシュは、デデュープDRAMのRCライトヒットがなかったかのように進行する(即ち、デデュープDRAMキャッシュは、デデュープDRAMのRCライトミスがあったかのように進行する)。
【0021】
デデュープDRAMのRCフィル(fill)を処理するために、デデュープDRAMキャッシュは、デデュープDRAMのRCから削除されるキャッシュラインを選択するためにヒストリー及びRCメタデータをリードする。選択されたキャッシュラインが有効なデータを含む場合、デデュープDRAMキャッシュは、キャッシュラインを無効としてマークするためにRCのメタデータをアップデートし、キャッシュラインが有効でないように2KBの0をデデュープエンジンにライトする。そして(選択されたキャッシュラインが有効でない場合)、デデュープDRAMキャッシュはデデュープエンジンに新たなキャッシュラインのデータをライトし、デデュープエンジンはWR_Status信号を返す。デデュープエンジンがACKを返すと、デデュープDRAMキャッシュはキャッシュラインを有効としてマークするためにRCのメタデータをアップデートする。そうでない場合、デデュープエンジンがNAKを返すと、デデュープDRAMキャッシュは、デデュープDRAMのRCにデータをライトするための要請をドロップ(drop)する。
【0022】
上述した本発明は、デデュープ可能なメモリを使用して潜在的に低いライトパフォーマンスの問題を解決するために有効的である。しかし、デデュープ可能なメモリの使用は他の問題を引き起こす。即ち、それはライト動作が保証されないということである。例えば、デデュープDRAMのRCフィル動作が遂行されないが、デデュープDRAMのRCの全てのキャッシュラインは有効なデータを格納するものと仮定する。無効化のために選択されたキャッシュラインがデデュープされたデータを示す場合、即ちキャッシュラインによって示されたデータが他のキャッシュラインによって示される場合、キャッシュラインを無効化することは任意の物理的メモリを確保しないはずである。或いは、データが他のキャッシュラインによって使用されている場合、デデュープRCのライトヒット時、デデュープエンジンがキャッシュラインを0で上書きすることができない。このようなライト完了の保証不足の問題に対する二つの解決策がある。即ち、ライトが保証されないことを受け入れるか、又はライト動作の完了を保証するためにライト動作を再び試みることである。
【0023】
ライト動作を再び試みることを達成するために、ライト再試みが遂行される。ライトが失敗した場合、即ちデデュープエンジンが試みられたライトからNAK信号を返す場合、他のキャッシュラインが無効化のために選択され(デデュープDRAMキャッシュの具現に応じてライトバック(writeback)が含まれる)、ライトが再び試みられる。
【0024】
他のキャッシュラインを無効化すると、デデュープエンジンはデデュープDRAMのRCへのライト動作を完了するため、ライト再試みが成功する。しかし、ライト再試みの部分として、無効のために選択されたキャッシュラインもまたデデュープの対象データを指し示す場合、ライト再試みが再び失敗する。従って、キャッシュラインを無効化してライトを再び試みるプロセスは、所望の何回かが繰り返し遂行される。一般的に、再試みのプロセスに対する終了条件は、成功的なライト(デデュープエンジンからのACK信号により示されるように)、一セットの全てのキャッシュラインの排除、又は予め決定された数のライト再試みである。全てのキャッシュラインが排除されるか、又は予め決められた数のライト再試みの中の一つが発生した場合、デデュープDRAMキャッシュは、所望のライト動作を成功的に完了せずに、単にプロセッサに結果を返すだけでよい。
【0025】
図1は、本発明の一実施形態によるデデュープキャッシュを使用するマシン(machine)を示す図である。
図1には、マシン105を示す。マシン105は、プロセッサ110を含む。プロセッサ110は、任意の多様なプロセッサである。例えば、プロセッサ110は、インテルジーオン(Intel Xeon(登録商標))、セレロン(Celeron(登録商標))、アイテニアム(Itanium(登録商標))、又はアトム(Atom(登録商標))プロセッサ、エーエムディーオプテロン(AMD Opteron(登録商標))プロセッサ、アーム(ARM(登録商標))プロセッサなどである。
図1は、マシン105内に、一つのプロセッサ110を示しているが、マシン105は、任意の数のプロセッサを含み、それぞれのプロセッサは、シングルコア又はマルチコアプロセッサであり、任意の所望の組み合わせで混合される。プロセッサ110は、デバイスドライバ(driver)115を実行し、デバイスドライバ115は、ストレージデバイス120へのアクセスをサポートする。他のデバイスドライバは、マシン105の他の構成要素へのアクセスをサポートする。
【0026】
マシン105は、メモリコントローラ125を含み、メモリコントローラ125は、メインメモリ130へのアクセスを管理するために使用される。メモリ130は、フラッシュメモリ、Dynamic Random Access Memory(DRAM)、Static Random Access Memory(SRAM)、Persistent Random Access Memory(PRAM)、Ferroelectric Random Access Memory(FeRAM)、Non−Volatile Random Access Memory(NVRAM)、Magnetoresistive Random Access Memory(MRAM)などのように、任意の多様なメモリである。メモリ130は、他のメモリタイプの任意の所望の組み合わせである。マシン105は、以下に説明するようにデデュープキャッシュ135を更に含む。
【0027】
図1は、サーバ(サーバは、スタンドアロン(standalone)又はラック(rack)サーバの可能性あり)としてマシン105を図示するが、本発明の実施例は、制限なしに任意の所望のタイプのマシン105を含む。例えば、マシン105は、デスクトップ又はラップトップコンピュータ、或いは本発明の実施例から得られる任意の他のデバイスに代替される。マシン105は、特化された携帯コンピューティングデバイス、タブレットコンピュータ、スマートフォン、及び他のコンピューティングデバイスを含む。
【0028】
図2は、
図1のマシン105の追加の詳細事項を示す図である。
図2において、一般的に、マシン105は一つ以上のプロセッサ110を含み、プロセッサ110はメモリコントローラ125及びクロック205を含み、クロック205はマシン105の構成要素の動作を調整するために利用される。プロセッサ110はメモリ130に連結され、メモリ130は、例としてRAM(random access memory)、ROM(read−only memory)、又は他の保存メディアを含む。プロセッサ110はストレージデバイス120及びネットワークコネクタ(connector)210に連結され、ネットワークコネクタ210は、例えば、イーサネット(登録商標)(Ethernet(登録商標))コネクタ又は無線コネクタである。プロセッサ110はバス215に連結され、バス215には、他の構成要素の中のユーザーインターフェース220及び入出力(Input/Output)エンジン225を利用して管理される入出力ポートが付着される。
【0029】
図3は、
図1のデデュープキャッシュ135の例示的なレイアウトを示す図である。
図3において、デデュープキャッシュ135は、4つの一般的な構成要素に分割される。即ち、DRAM305、キャッシュコントローラ310、ホスト層(layer)315、メディア層320である。DRAM305は、デデュープキャッシュ135に対して、実際のメモリとして動作し、三つの領域に分割される。即ち、デデュープ可能なリードキャッシュ325、非デデュープ可能なライトバッファ330、メタデータ領域335である。デデュープ可能なリードキャッシュ325は、プロセッサ110によって、デデュープキャッシュ135からリードされるデータを格納するためのデデュープメモリとして使用される。非デデュープ可能なライトバッファ330は、プロセッサ110からライトされるデータを格納するための従来の(即ち、非デデュープ)メモリとして使用される。メタデータ領域335は、デデュープ可能なリードキャッシュ325及び非デデュープ可能なライトバッファ330のキャッシュライン(cache lines)に関する情報を格納する。例えば、メタデータ領域335は、どのようなキャッシュラインが有効であるか否か、及びどのようなキャッシュラインがバックエンド大容量メモリ130にライトするためにバッファリング(buffering)されるかを格納する。
図3には、デデュープエンジンを示していないが、デデュープエンジンは、デデュープ可能なリードキャッシュ325に対する実際のデータのライトを管理する。即ち、デデュープエンジンは、
図4を参照して以下で説明される。デデュープ可能なリードキャッシュ325、非デデュープ可能なライトバッファ330、及びメタデータ領域335は、DRAM305の任意の所望の割合を含む。例えば、DRAM305が合計8ギガバイト(GB)を含む場合、デデュープ可能なリードキャッシュ325お及び非デデュープ可能なライトバッファ330は、約4GBのストレージをそれぞれ含む(メタデータ領域335は、相対的にDRAM305の少ない量を要求する)。予想されるデデュープ率を考慮すると、デデュープ可能なリードキャッシュ325は、物理容量よりも大きな容量をシミュレーションする。例えば、デデュープ可能なリードキャッシュ325が、4GBの物理メモリを含み、2.0のターゲットデデュープ率を有する場合、デデュープ可能なリードキャッシュ325は、8GBの仮想メモリをシミュレーションする。デデュープキャッシュ135は、デデュープ可能なリードキャッシュ325の仮想容量だけキャッシュラインをサポートし、これはデデュープ可能なリードキャッシュ325の物理的な容量でサポート可能なキャッシュラインの数を超える。
【0030】
図3は、デデュープ可能なリードキャッシュ325及び非デデュープ可能なライトバッファ330の両方を含むDRAM305を図示してデデュープ可能なリードキャッシュ325及び非デデュープ可能なライトバッファ330の異なる機能を提供するが、一部の機能は重複する。例えば、本発明のいくつかの実施例において、非デデュープ可能なライトバッファ330は、プロセッサ110からライトされたデータを格納するが(そして最終的には、バックエンド大容量メモリ130にライトされる可能性あり)、非デデュープ可能なライトバッファ330は、「リードキャッシュ」として動作し(但し、デデュープ対象ではないとしても)、非デデュープ可能なライトバッファ330からデータがリードされる。従って、非デデュープ可能なライトバッファ330は、バックエンド大容量メモリ130にライトされるデータのための「一時的な(transient)」ストレージ以上と見なされる。このような本発明の実施例において、特定のキャッシュラインに対してデデュープ可能なリードキャッシュ325をチェックすることへの任意の言及は、非デデュープ可能なライトバッファ330からのキャッシュラインのチェック及びデデュープ可能なリードキャッシュ325又は非デデュープライトバッファ330から適切にデータをリードすることで理解され、非デデュープ可能なライトバッファ330が一杯になるか非デデュープ可能なライトバッファ330のキャッシュラインが新たなキャッシュラインのためのスペースを作るために無効化される場合にのみ、データはバックエンド大容量メモリ130にライトされる。このような本発明の実施例において、データがデデュープ可能なリードキャッシュ325又は非デデュープ可能なライトバッファ330に格納されない場合にのみ、バックエンド大容量メモリ130は、要請されたデータに対してアクセスされる。
【0031】
キャッシュコントローラ310は、デデュープキャッシュ135の背後から「頭脳」としての役割を担い、キャッシュコントローラ310は、どのようなデータがライトされるか又はリードされるかを管理して、無効化又はライトに対するキャッシュラインを選択するなどの役割を担う。キャッシュコントローラ310は、プロセッサ110と相互作用(即ち、プロセッサ110からの要請/データを受信してプロセッサ110にデータを送信)するためにホストレイヤー315を利用し、メモリ130(
図3の「バックエンド大容量メモリ」と表示する)と相互作用するためにメディアレイヤー320を利用する。メモリ130は、デデュープキャッシュ135を含むモジュールの一部であるか、又はデデュープキャッシュ135から分離される(そして通信経路を介して通信される)。
【0032】
図3に示したように、キャッシュコントローラ310、ホストレイヤー315、及びメディアレイヤー320は、FPGA(field programmable gate array)を利用して具現される。しかし、本発明の実施例は、他のハードウェア設計(PROM(Programmable Read Only Memory)、EPROM(Erasable PROM)、又はEEPROM(Electrically Erasable PROM)のような変形メモリ、或いは特別に設計された回路)及びソフトウェア設計を含む任意の所望の具現をサポートする。なお、
図3は、単一のFPGAを用いて具現されたキャッシュコントローラ310、ホストレイヤー315、及びメディアレイヤー320を図示するが、本発明の実施例は、ネットワークの相互連結のような通信経路を使用して連結された、複数分割された構成要素を利用する具現をサポートする。
【0033】
図4は、デデュープエンジンを有する
図1のデデュープキャッシュ135を示す図である。
図4において、DRAM305、キャッシュコントローラ310、ホストレイヤー315、及びメディアレイヤー320は、
図3に示した構成要素と同じであり、メモリコントローラ125は、
図1のメモリコントローラ125と同じである。しかし、
図4は、その他に、デデュープエンジン405及びネットワークインターコネクト(interconnect)410を示す。ネットワークインターコネクト410は、DRAM305、キャッシュコントローラ310、及びデデュープエンジン405との間に通信を提供する。デデュープエンジン405は、デデュープメモリ(
図3のデデュープ可能なリードキャッシュ325のような)を含むDRAM305の部分からのデータのリードとDRAM305の部分へのデータのライトを管理する(デデュープメモリを含まないDRAM305の部分は、デデュープエンジン405を用いずに、直接にアクセスされる)。
【0034】
上述したように、デデュープエンジン405は、デデュープメモリを管理する。このため、デデュープエンジン405は、デデュープエンジン405がデデュープを遂行するように指示する信号(
図4の「Dedup」と表示された信号)及びアクセスのためのアドレスと、使用のためのデータを明示するリード/ライトコマンド(
図4の「RD/WR」と表示された信号)をサポートする。しかし、デデュープエンジン405は、またライト状態信号(
図4の「WR_Status」と表示された信号)を提供する。ライト状態信号は、特定のライト動作が成功であるか否かを示すことに利用される。ライト状態信号の利用については、
図5を参照して、以下で更に説明する。
【0035】
図5は、
図3及び
図4のキャッシュコントローラ310の詳細事項を示す図である。
図5において、キャッシュコントローラ310は、リスクマネージャ505、キャッシュヒット/ミスチェック510、ヒットブロック515、ミスブロック520、及びヒストリーストレージ525を含む。
図1のデデュープキャッシュ135によって、
図1のプロセッサ110からのデータ要請を受信する場合、リスクマネージャ505は、データの従属性が正しく処理されるようにするために、リード後ライト及びライト後リードのようなコマンドの多様な順序を追跡する。例えば、キャッシュコントローラ310が、
図3の非デデュープ可能なライトバッファ330に格納されたデータをライトする要請を受信し、
図1のバックエンド大容量メモリ130にライトされる前に、そのデータをリードする要請を受信した場合、リスクマネージャ505は、
図3の非デデュープ可能なライトバッファ330からのデータにアクセスするリード要請を伝達する。キャッシュヒット/ミスチェック510は、アクセスされる特定のアドレスが、
図1のデデュープキャッシュ135から見つけ出されるか否かを判定する。これらの判定は、
図3のメタデータ領域335にアクセスすることによって行われることから、キャッシュヒット/ミスチェック510は、
図3のメタデータ領域335にアクセスするために、リード/ライト信号に従ってリード要請を伝送する。
【0036】
キャッシュヒット/ミスチェック510が、特定の要請が既に
図1のデデュープキャッシュ135に有るアドレスにアクセスするか否かを判定する場合、制御は適切にヒットブロック515又はミスブロック520に伝達される。ヒットブロック515は、
図1のデデュープキャッシュ135に格納された現在のキャッシュラインにアクセスするために利用される。ミスブロック520は、
図3のバックエンド大容量メモリ130からのデータにアクセスするために利用される。ヒットブロック515及びミスブロック520は、
図3のDRAM305に存在するデータにアクセスするためのリード/ライト信号に応じてリード及び/又はライト要請を伝送する。なお、ミスブロック520は、
図4のデデュープエンジン405からライト状態の信号を受信する。最後に、ヒストリーストレージ525は、
図1のデデュープキャッシュ135に有るキャッシュラインへのアクセスヒストリーに関する情報を判定するために利用される(例えば、適切な場合、キャッシュラインを除外することを選択するために)。また、
図5に示したネットワークインターコネクトのように、多様なネットワークインターコネクトは、キャッシュコントローラ310の多様なエレメント間の通信をサポートする。
【0037】
図3のデデュープキャッシュ135及びキャッシュコントローラ310のハードウェアを説明することで、
図3のデデュープキャッシュ135の動作が説明される。
図1のデデュープキャッシュ135が、
図1のプロセッサ110からの要請を受信する場合、二つのタイプの要請及び二つの可能なキャッシュの結果がある。即ち、要請はリード又はライト要請であり、問題のデータは、キャッシュヒット又はキャッシュミスを引き起こす。従って、合計4つの発生可能な場合が存在し、それぞれの場合を以下で説明する。
【0039】
図1のプロセッサ110がリード要請を発行し、データが現在の
図3のデデュープ可能なリードキャッシュ325に格納されている場合、
図5のキャッシュヒット/ミスチェック510は、
図3のメタデータ領域335をリードした後に、この場合を判定する。問題のデータが現在の
図3のデデュープ可能なリードキャッシュ325に存在していることから、制御は
図5のヒットブロック515に伝達され、ヒットブロック515は、データが
図3のデデュープ可能なリードキャッシュ325からリードされることを要請するリード要請を、
図4のデデュープエンジン405に伝送する。
図4のデデュープエンジン405はデータを
図5のヒットブロック515に返し、ヒットブロック515はホストレイヤー315を介して
図1のプロセッサ110にデータを返す。
【0041】
図1のプロセッサ110がリード要請を発行し、データが現在の
図3のデデュープ可能なリードキャッシュ325に格納されていない場合、
図5のキャッシュヒット/ミスチェック510は、
図3のメタデータ領域335をリードした後に、この場合を判定する。問題のデータが現在の
図3のデデュープ可能なリードキャッシュ325に存在していないことから、制御はミスブロック520に伝達され、ミスブロック520は、
図3のメディアレイヤー320を介して
図3のバックエンド大容量メモリ130からのデータを要請する。
【0042】
データがリードされると、
図5のミスブロック520は、
図3のデデュープ可能なリードキャッシュ325に現在有効なデータを格納していないキャッシュラインが存在するか否かを判定する。
図3のデデュープ可能なリードキャッシュ325に現在有効なデータを格納していない利用可能なキャッシュラインが存在する場合、
図5のミスブロック520は、データを格納するためにそのようなキャッシュラインを選択する。そうでない場合、
図5のミスブロック520は、
図3のデデュープ可能なリードキャッシュ325から除去するための有効なデータを含むキャッシュラインを選択する。この選択プロセスは、
図5のヒストリーストレージ525からのデータを利用し、除去するためのキャッシュラインを選択することに任意の所望のアルゴリズムを使用する。即ち、LRU(Least Recently Used)又はLFU(Least Frequently Used)は、除去するためのキャッシュラインを選択するために使用されるよく知られているアルゴリズムの例である。
【0043】
図3のデデュープ可能なリードキャッシュ325からキャッシュラインを除去するために、
図5のミスブロック520は、キャッシュラインが有効でないとしてマークすることを
図3のメタデータ領域335にライトするために、
図3のDRAM305にライト動作を伝送する。ミスブロック520は、
図3のデデュープ可能なリードキャッシュ325に実際のデータを上書きするために、
図4のデデュープエンジン405にライト動作を伝送する。例えば、キャッシュラインを満たす(fill)ための十分な0(zero)の値をライトする。
【0044】
キャッシュラインが除去されてデータが無効化されると、キャッシュラインが最初から利用可能であったように、キャッシュラインは自由にデータを受信する。従って、
図5のミスブロック520は、データ(
図1のバックエンド大容量メモリ130から先にリードされた)を、
図3のデデュープ可能なリードキャッシュ325にライトするために、
図4のデデュープエンジン405にライト動作を伝送する。
図3のキャッシュコントローラ310は、
図3のホストレイヤー315を介して
図1のプロセッサ110にデータを返す。
【0046】
図1のプロセッサ110がライト要請を発行し、データが現在
図3のデデュープ可能なリードキャッシュ325に格納されている場合、
図5のキャッシュヒット/ミスチェック510は、
図3のメタデータ領域335をリードした後に、この場合を判定する。問題のデータが現在
図3のデデュープ可能なリードキャッシュ325に存在することから、制御はヒットブロック515に伝達される。
【0047】
図3のデデュープ可能なリードキャッシュ325は、現在の交替されるデータを格納するため、
図3のデデュープ可能なリードキャッシュ325のキャッシュラインのデータも処理しなければならない。新たなデータが、
図3のデデュープ可能なリードキャッシュ325のキャッシュラインにライトされるが、デデュープメモリにデータをライトすることは、相対的に遅い動作である(そして、
図1のバックエンド大容量メモリ130に格納されたデータは、いずれの場合でもアップデートされる必要がある)。従って、
図3のデデュープ可能なリードキャッシュ325にデータをライトする代わりに、
図3のデデュープ可能なリードキャッシュ325のキャッシュラインは無効化される。この方式で、データがプロセッサ110によって後でリードされると、新たな値は、
図3の非デデュープ可能なライトバッファ330(依然としてそこに存在する場合)又は
図1のバックエンド大容量メモリ130(上記「リード要請、キャッシュミス」と表示した場合で説明したように)からリトリーブ(retrieve)される。
【0048】
図3のデデュープ可能なリードキャッシュ325からキャッシュラインを無効化するために、
図5のヒットブロック515は、キャッシュラインを有効でないとしてマークすることを
図3のメタデータ領域335にライトするために、
図3のDRAM305にライト動作を伝送する。ヒットブロック515は、
図3のデデュープ可能なリードキャッシュ325に実際のデータを上書きするために、
図4のデデュープエンジン405にライト動作を伝送する。例えば、キャッシュラインを満たす(fill)ための十分な0の値をライトする。
【0049】
データが
図3のデデュープ可能なリードキャッシュ325から無効化されると、
図5のヒットブロック515は、
図3の非デデュープ可能なライトバッファ330にデータをライトする。
図3の非デデュープ可能なライトバッファ330が、デデュープメモリを使用しないため、
図3の非デデュープ可能なライトバッファ330にデータをライトすることは、
図3のデデュープ可能なリードキャッシュ325にデータをライトするよりも速い。その後、例えば
図3の非デデュープ可能なライトバッファ330の両方が満た(fill)されると、適切な時間に、データは
図3のメディアレイヤー320を介して
図3の非デデュープ可能なライトバッファ330から
図3のバックエンド大容量メモリ130にフラッシュ(flush)される。
【0051】
図1のプロセッサ110がライト要請を発行し、データが現在
図3のデデュープ可能なリードキャッシュ325に格納されていない場合、
図5のキャッシュヒット/ミスチェック510は、
図3のメタデータ領域335をリードした後、この場合を判定する。問題のデータが
図3のデデュープ可能なリードキャッシュ325に存在していないことから、制御はミスブロック520に伝達される。
【0052】
図5のミスブロック520は、
図3の非デデュープ可能なライトバッファ330にデータをライトする。その後、例えば
図3の非デデュープ可能なライトバッファ330の両方が満た(fill)されると、適切な時間で、データは
図3のメディアレイヤー320を介して
図3の非デデュープ可能なライトバッファ330から
図3のバックエンド大容量メモリ130にフラッシュ(flush)される。
【0053】
上記の説明は、全体的なパフォーマンスを向上させるために、キャッシュからどのようにしてデデュープ可能なメモリが利用されるかを示している。しかし、デデュープ可能なメモリの使用は、特にリード要請、キャッシュミス、ライト要請、及びキャッシュヒットの場合を引き起こす可能性のある他の問題を発生させる。このような二つの場合において、データは
図3のデデュープ可能なリードキャッシュ325にライトされる。問題は、
図3のデデュープ可能なリードキャッシュ325が物理的容量よりも大きな容量をシミュレーションするという事実から生じる。キャッシュラインが利用可能だとしても、
図3のデデュープ可能なリードキャッシュ325の物理的メモリが全て満た(fill)され、このような場合、データは成功的に
図3のデデュープ可能なリードキャッシュ325にライトされない可能性がある。なお、
図3のデデュープ可能なリードキャッシュ325のキャッシュラインを無効化することは、任意の物理的メモリを確保していない可能性がある。例えば、無効化のために選択されたキャッシュラインが、他のキャッシュラインによって参照されているデータを参照する場合、選択されたキャッシュラインの無効化は、実際にはデータを
図3のデデュープ可能なリードキャッシュ325の物理的メモリから解放しない。これらの問題は、ライト保証の欠如として説明される。
【0054】
一つの解決策は、
図3のデデュープ可能なリードキャッシュ325のライトが失敗することを単に許容することである。このような解決策は、少なくともリード要請、キャッシュミスの場合に合理的である。即ち、最悪の場合に、
図1のバックエンド大容量メモリ130からのアクセスを要請し(少なくともデータが、
図3のデデュープ可能なリードキャッシュ325に、実際にキャッシュされるまで)、少なくともデータが
図3のデデュープ可能なリードキャッシュ325に実際にキャッシュされるまで、データは実際にキャッシュされない。そしてライト要請、キャッシュヒットの場合でも、同じデータにアクセスする全てのキャッシュラインを無効化する方法(
図3のデデュープ可能なリードキャッシュ325から無効なデータ(stale data)にアクセスするキャッシュラインへのアクセスを防ぐために)がある場合に解決策が受け入れられるが、他の解決策が存在する。
【0055】
他の解決策は、データが成功的に
図3のデデュープリードキャッシュ325にライトされるまで(又は再試みの臨界回数に到達するまで)、複数のキャッシュラインを無効化することである。
図3のデデュープ可能なリードキャッシュ325にデータをライトすることを試みた後、
図4のデデュープエンジン405がライト状態信号のNAKを返した場合、
図3のキャッシュコントローラ310(
図5のヒットブロック515又は
図5のミスブロック520を介して)は、無効化のための
図3のデデュープ可能なリードキャッシュ325からのキャッシュラインを選択する。選択されたキャッシュラインが無効化された後、
図3のキャッシュコントローラ310(再び、
図5のヒットブロック515又は
図5のミスブロック520を介して)は、
図3のデデュープ可能なリードキャッシュ325に、元のライトを再び試みる。このようなプロセスは、
図3のデデュープ可能なリードキャッシュ325にライトが成功するか(ライト状態信号のACKによって示されるように)又は再試みの臨界回数が発生するまでに必要なだけ反復される。
【0056】
図6A及び
図6Bは、本発明の一実施形態による
図1のデデュープキャッシュ135がライト要請を処理する例示的な手順のフローチャートである。
図6Aにおいて、605ステップで、
図3のキャッシュコントローラ310は、
図1のプロセッサ110からライト要請を受信する。610ステップで、
図5のキャッシュヒット/ミスチェック510は、
図3のデデュープ可能なリードキャッシュ325が上書きされるデータを含むキャッシュラインを含むか否かを判定する。そうでない場合、615ステップで、
図5のミスブロック520は、
図3の非デデュープ可能なライトバッファ330にライト要請からのデータを格納する。620ステップで、
図3のキャッシュコントローラ310は、
図3の非デデュープ可能なライトバッファ330から
図1のバックエンド大容量メモリ130にデータをフラッシュする。そして625ステップで、
図3のキャッシュコントローラ310は、
図3の非デデュープ可能なライトバッファ330からのデータを削除する。
【0057】
一方、610ステップで、
図3のデデュープ可能なリードキャッシュ325がライト要請によって上書きされたデータを含むキャッシュラインを含む場合、630ステップで(
図6B)、
図5のヒットブロック515は、キャッシュラインを無効化する(
図3のメタデータ領域335にキャッシュラインを有効でないとしてマークし、
図4のデデュープエンジン405を介してキャッシュラインに0の値をライトすることにより)。635ステップで、
図5のヒットブロック515は、
図4のデデュープエンジン405が確認応答(ACK)又は非確認応答(NAK)信号に応答するか否かを判定する。
図4のデデュープエンジン405がACK信号を返した場合、処理は、ライト要請を完了するために
図6Aの615ステップに続く。
図4のデデュープエンジン405がNAK信号を返した場合、640ステップで、
図5のヒットブロック515は、再試みの最大回数に達したか否かを判定する。再試みの最大回数に達していない場合、645ステップで、
図5のヒットブロック515は、無効化のために他のキャッシュラインを選択し、処理は、新たに選択されたキャッシュラインを無効化するために、630ステップに戻る。そうでない場合、650ステップで、ヒットブロック515(そして、
図3のキャッシュコントローラ310)は、
図3のデデュープ可能なリードキャッシュ325からのデータを削除する問題があったとして報告し、その後、処理は終了する。
【0058】
図7は、本発明の一実施形態による
図1のデデュープキャッシュ135が
図3のデデュープ可能なリードキャッシュ325のキャッシュラインを無効化するための例示的な手順のフローチャートである。
図7において、705ステップで、
図3のキャッシュコントローラ310は、
図3のメタデータ領域335にキャッシュラインを有効でないとしてマークする(適切な値を
図3のメタデータ領域335にライトすることにより)。710ステップで、
図3のキャッシュコントローラ310は、無効なデータがDRAMのスペースを占有しないように、問題のキャッシュラインのデータに0の値をライトするために
図4のデデュープエンジン405にライト要請を伝送する。
【0059】
図8A〜
図8Cは、本発明の一実施形態による
図1のデデュープキャッシュ135がリード要請を処理する例示的な手順のフローチャートである。
図8Aにおいて、805ステップで、
図3のキャッシュコントローラ310は、
図1のバックエンド大容量メモリ130(又は
図3のDRAM305にデータが格納される場合、
図3のDRAM305)からデータをリードするためのリード要請を受信する。810ステップで、
図5のキャッシュヒット/ミスチェック510は、要請されたデータが、
図3のデデュープ可能なリードキャッシュ325で検出されるか否かをチェックする。要請されたデータが、
図3のデデュープ可能なリードキャッシュ325のキャッシュラインで発見された場合、815ステップで、
図5のヒットブロック515は、要請されたデータを、
図3のデデュープ可能なリードキャッシュ325のキャッシュラインからリードするために
図4のデデュープエンジン405にリード要請を伝送し、820ステップで、
図3のキャッシュコントローラ310は、要請されたデータを、
図1のプロセッサ110に再び伝送し、その後、処理は終了する。
【0060】
要請されたデータは、
図3のデデュープ可能なリードキャッシュ325又は非デデュープ可能なライトバッファ330のキャッシュラインで発見されない場合、825ステップで、
図5のミスブロック520は、
図1のバックエンド大容量メモリ130からデータをリードする。830ステップで、
図5のミスブロック520は、データを格納するために
図3のデデュープ可能なリードキャッシュ325からのキャッシュラインを選択する。選択されたキャッシュラインは、現在の有効なデータを格納していないキャッシュラインであるか、又は有効なデータを格納しているキャッシュライン(従って、先に無効化が必要である)である。835ステップで(
図8B)、
図5のミスブロック520は、選択されたキャッシュラインが有効なデータを含むか否かを判定する。選択されたキャッシュラインが有効なデータを含む場合、840ステップで、
図5のミスブロック520は、上記の
図7で記述した例示的な手順を用いて、キャッシュラインを無効化する。キャッシュラインが有効なデータを含んでいない場合、845ステップで、
図5のミスブロック520は、
図3のデデュープ可能なリードキャッシュ325の選択されたキャッシュラインに要請されたデータをライトするために、
図4のデデュープエンジン405にライト要請を伝送する。即ち、845ステップで、
図5のミスブロック520は、
図3のデデュープ可能なリードキャッシュ325の選択されたキャッシュラインに要請されたデータをライトすることを試みるために、
図4のデデュープエンジン405に要請されたデータを提供する。
【0061】
850のステップで、
図5のミスブロック520は、
図4のデデュープエンジン405がライト要請に応答してACK又はNAKのいずれを返すかを判定する。
図3のデデュープ可能なリードキャッシュ325が自由なキャッシュラインを有していても最大物理的容量に到達した可能性がある場合、
図4のデデュープエンジン405は、835ステップで選択されたキャッシュラインが有効なデータを含んでいるか否かに拘らず、NAKを返す。
図4のデデュープエンジン405がACK信号を返した場合、ライトは成功したことを示す。即ち、855ステップで、
図5のミスブロック520は、
図3のメタデータ領域335にキャッシュラインを有効なデータを含んでいるとしてマークし、処理は、
図1のプロセッサ110に要請されたデータを送り返すために
図8Aの820ステップに続く。
【0062】
一方、
図4のデデュープエンジン405がNAK信号を返した場合、
図4のデデュープエンジン405は、
図3のデデュープ可能なリードキャッシュ325のキャッシュラインにデータをライトすることができなかったことを示す。このような場合、860ステップで(
図8C)、
図5のミスブロック520は、再試みの最大回数に達したか否かを判定する。再試みの最大回数がまだ達していない場合、865ステップで、
図5のミスブロック520は、無効化のための他のキャッシュラインを選択し、処理は、新たに選択されたキャッシュラインを無効化するために840ステップに戻る。そうでない場合、870ステップで、ミスブロック520(そして、
図3のキャッシュコントローラ310)は、
図3のデデュープ可能なリードキャッシュ325にデータをライトすることに問題が生じたと報告し、その後の処理は終了する。
【0063】
図3を参照して上述したように、本発明のいくつかの実施例において、
図3の非デデュープ可能なライトバッファ330は、
図3のデデュープ可能なリードキャッシュ325と共に、既存のキャッシュとして動作する。このような本発明の実施例において、要請されたキャッシュラインのために
図3のデデュープ可能なリードキャッシュ325をチェックするか又はアクセスすることは、同様に
図3の非デデュープ可能なライトバッファ330をチェックするか又はアクセスすることを含むものと理解される。例えば、
図8Aにおいて、810ステップはデータを含むキャッシュラインのために
図3のデデュープ可能なリードキャッシュ325及び
図3の非デデュープ可能なライトバッファ330の両方をチェックするために修正され、815ステップは、実際にデータがどこで発見されるかに応じて、
図3のデデュープ可能なリードキャッシュ325又は
図3の非デデュープ可能なライトバッファ330のキャッシュラインからデータをリードすることで修正される。同様に、
図8Cの870ステップにおいて、データが成功的に
図3のデデュープ可能なリードキャッシュ325にライトされていない場合、データは代わりに、
図3の非デデュープ可能なライトバッファ330にライトされる。或いは、例示のフローチャートは、
図3のデデュープ可能なリードキャッシュ325のキャッシュラインに、先にデータをライトすることを試みるよりも、
図3のデデュープ可能なリードキャッシュ325又は
図3の非デデュープ可能なライトバッファ330からのデータがライトされるキャッシュラインを選択することで修正される。
【0064】
図6A〜
図8Cにおいて、本発明のいくつかの実施例を示した。しかし、本技術分野における熟練した者は、ステップの順序を変えたり、ステップを省略したり、図面に示されていない関係を含むことにより、本発明の他の実施例が可能であることを認めるはずである。明示的に説明されるか又は説明されていないとしても、このようなフローチャートの全ての変形は、本発明の実施例として考慮される。
【0065】
本発明の実施例は、先行技術よりもいくつかの技術的利点を提供する。先ず、
図1のデデュープャッシュ135のデデュープ可能なメモリの使用は、より多くの(ユニークな)データが同一の物理的量のメモリに格納されるようにしながら(又は、同じ量のデータを格納するために、より少ないメモリスペースを使用しながら)、複数のコピーの同じデータが
図3のキャッシュDRAM305に格納されることを防ぐ。例えば、
図3のデデュープ可能なリードキャッシュ325が二つの予想されたデデュープ率を有する4GBのメモリを含む場合、
図3のデデュープ可能なリードキャッシュ325は、理論的に8GBの非デデュープ可能なキャッシュメモリに格納されるようなユニークなデータが格納される。二番目に、
図3の非デデュープ可能なライトバッファ330を使用することにより、アプリケーションがデータをライトしている状況について(単にデータをリードする状況よりも)デデュープ可能なメモリへのライト固有の遅延が防止される。三番目に、保証されていない
図3のデデュープ可能なリードキャッシュ325へのライトに対する懸念は、
図3のデデュープ可能なリードキャッシュ325のキャッシュラインを無効化させた後のライトの再試みをサポートすることにより、減少する(
図3のデデュープ可能なリードキャッシュ325へのライトがいくつかのキャッシュライン無効化の後にも成功しない可能性が依然として存在するが、このような発生の可能性は非常に低い)。
【0066】
以下の内容は、本発明の特定の実施例が具現される適切なマシン又はマシンの簡略で一般的な説明を提供するためのものである。マシン又は複数のマシンは、他のマシンから受信された指示、バーチャルリアリティー(VR: virtual reality)環境との相互作用、生体フィードバック、又は他の入力信号によるものだけではなく、キーボード、マウスなどのような従来の入力デバイスからの入力により、少なくともある程度は制御される。本明細書で使用するように、用語「マシン」は、単一のマシン、バーチャルマシン、マシンとの通信に連結されたシステム、複数のバーチャルマシン、又は共に動作するデバイスを包括的に含むことを意味する。例示的なマシンは、例えば自動車、電車、タクシーのような私的又は公的運送手段のような運送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、携帯デバイス、電話器、タブレットのようなコンピューティングデバイスを含む。
【0067】
マシン又は複数のマシンは、プログラム可能な、又はプログラム可能でないロジックデバイス若しくはロジックアレイ、アプリケーション特定用途向け集積回路(ASICs:Application Specific Integrated Circuits)、エンベデッドコンピュータ、スマートカードなどのようなエンベデッドコントローラを含む。マシン又は複数のマシンは、ネットワークインターフェース、モデム、又は他の通信連結を介して一つ以上のリモートマシンに一つ以上の連結を活用する。複数のマシンは、イントラネット、インターネット、ローカルエリアネットワーク、広域ネットワークなどのような物理的及び/又は論理的ネットワークを利用して相互連結される。通常の技術者は、ネットワーク通信が高周波(RF)、衛星、マイクロ波(microwave)、IEEE(Institute of Electrical and Electronics Engineers)802.11、ブルートゥース(登録商標)(Bluetooth(登録商標))、光、赤外線、ケーブル、レーザーなどを含む多様な有線及び/又は無線の近距離又は遠距離キャリア及びプロトコル(protocol)を活用することができることを理解するだろう。
【0068】
本発明の実施例は、機能、手順、データ構造、アプリケーションプログラムなどを含む関連するデータのように、又は関連するデータを参照することにより説明される。関連するデータは、マシンによってアクセスされる場合、マシンがタスクを遂行するか、或いは抽象的データ型又は下位レベルのハードウェアコンテキスト(contexts)を定義する。関連するデータは、例えばRAM、ROMなどの揮発性及び/又は不揮発性メモリ、又はハードドライブ、フロッピー(登録商標)ディスク、光学ストレージ、テープストレージ、メモリカード、デジタルビデオディスク、生物学的ストレージなどを含む他のストレージデバイス及び関連するストレージメディアに格納される。関連するデータは、パケット(packets)、シリアルデータ、並列データ、伝播される信号などの形態で物理的及び/又は論理的ネットワークを含む伝送環境を通じて伝達され、圧縮又は暗号化された形態で用いられる。関連するデータは、分散環境で用いられ、マシンのアクセスのためにローカル(local)及び/又はリモートで格納される。
【0069】
本発明の実施例は、一つ以上のプロセッサによって実行されるコマンドを含むタイプのマシンリード可能な非一時的な記録媒体を含む。コマンドは、本明細書で説明したように、本発明のエレメントを遂行するコマンドを含む。
【0070】
上述した多様な方法の動作は、多様なハードウェア及び/又はソフトウェア構成(複数可)、回路(複数可)、及び/又はモジュール(複数可)のように、動作を遂行する適切な手段によって遂行される。ソフトウェアは、論理的な機能を遂行するための実行コマンドの順序リストを含み、シングル又はマルチコアプロセッサ、又はプロセッサを含むシステムのように、コマンドの実行システム、装置、又はデバイスによって、或いは連結されて使用されるための任意の「プロセッサ可読媒体」に含まれる。
【0071】
本明細書で開示した実施例に関連して説明したステップ、方法のステップ又はアルゴリズム及び機能は、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、又はその両方の組み合わせで直接に具現される。ソフトウェアで具現される場合、機能は、コンピュータ読み取り可能な記録媒体に一つ以上のコマンド又はコードとして格納又は伝送される。ソフトウェアモジュールは、RAM(Random Access Memory)、フラッシュメモリ、ROM(Read Only Memory)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、レジスタ、ハードディスク、リムーバブル(removable)ディスク、CD−ROM、又は知られている任意の他の形態の記憶媒体で有る。
【0072】
上述した実施例を参照して、本発明の原理を説明したように、説明した実施例は、このような原理から逸脱せずに配置及び詳細事項において変形され、任意の方法で結合される。そして、上述した内容は、特定の実施例に焦点を合わせたとしても、他の構成が考慮される。特に、「本発明の一つの実施例によれば」のような表現又は本明細書で使用したこのような表現でも、このようなフレーズは、一般的に可能な実施例を参照するための意味であり、本発明を特定の実施例の構成に限定しようとするものではない。本明細書で使用したように、このような用語は、他の実施例に結合される同一又は他の実施例を参照する。
【0073】
上述した実施例は、本発明を制限するものとして解釈されない。いくつかの実施例を説明したが、通常の技術者は、本発明の新たなティーチング(teaching)及び利点から逸脱しない実施例について多様な変形を容易にする。これにより、このような変形は、本発明の権利範囲に含まれるものとして意図される。
【0074】
本発明の実施例は、制限なしで、次のようなステートメントに拡張される。
【0075】
ステートメント1.本発明の一実施例によるデデュープ可能なキャッシュは、
デデュープ可能なリード(read)キャッシュ及び非デデュープ可能なライト(write)バッファを含むキャッシュメモリと、デデュープ可能なリードキャッシュを利用してデータのリード(read)及びライト(write)を管理し、デデュープ可能なリードキャッシュへのライト要請が成功したか否かを示すライト状態信号を伝送するデデュープエンジンと、キャッシュコントローラと、を備え、キャッシュコントローラは、要請に含まれるアドレスがデデュープ可能なリードキャッシュで発見されるか否かをチェックするキャッシュヒット/ミスチェックロジックと、アドレスがデデュープ可能なリードキャッシュで発見されることをキャッシュヒット/ミスチェックロジックが示す場合、キャッシュメモリの第1データにアクセスするヒットブロックと、アドレスがデデュープ可能なリードキャッシュで発見されないことをキャッシュヒット/ミスチェックロジックが示す場合、バックエンド大容量メモリの第2データにアクセスするミスブロックと、デデュープ可能なリードキャッシュの第1データへのアクセスに関する情報を格納するヒストリーストレージと、を含む。
【0076】
ステートメント2.ステートメント1によるデデュープ可能なキャッシュにおいて、キャッシュコントローラは、デデュープ可能なリードキャッシュ及び非デデュープ可能なライトバッファにおけるデータの従属性を管理するリスクマネージャと、を更に含む。
【0077】
ステートメント3.ステートメント1によるデデュープ可能なキャッシュにおいて、デデュープ可能なリードキャッシュは、デデュープ可能なリードキャッシュに物理的に適合するものよりもより多くのキャッシュラインを格納することをシミュレーションする。
【0078】
ステートメント4.ステートメント1によるデデュープ可能なキャッシュにおいて、キャッシュメモリは、デデュープ可能なリードキャッシュのキャッシュラインに関する情報を格納するメタデータ領域を更に含む。
【0079】
ステートメント5.ステートメント1によるデデュープ可能なキャッシュにおいて、キャッシュコントローラは、データをライトするための第1ライト要請をプロセッサから受信し、非デデュープ可能なライトバッファにデータを格納し、ヒットブロックは、デデュープ可能なリードキャッシュのキャッシュラインが第1ライト要請によって修正される場合、キャッシュラインを無効化させるようにデデュープエンジンに第2ライト要請を伝送する。
【0080】
ステートメント6.ステートメント5によるデデュープ可能なキャッシュにおいて、第2ライト要請は、デデュープ可能なリードキャッシュのキャッシュラインに0の値をライトする要請を含む。
【0081】
ステートメント7.ステートメント5によるデデュープ可能なキャッシュにおいて、キャッシュコントローラは、キャッシュメモリのメタデータ領域にキャッシュラインが有効でないとしてマークする。
【0082】
ステートメント8.ステートメント5によるデデュープ可能なキャッシュにおいて、ヒットブロックは、第2ライト要請に応答するデデュープエンジンから非確認応答(NAK)信号を受信してデデュープ可能なリードキャッシュから第2キャッシュラインを除去し、デデュープ可能なリードキャッシュから第2キャッシュラインを除去した後にデデュープエンジンに第2ライト要請を再び伝送する。
【0083】
ステートメント9.ステートメント1によるデデュープ可能なキャッシュにおいて、キャッシュコントローラは、データをリードするためのリード要請をプロセッサから受信してプロセッサにデータを伝送し、ミスブロックは、バックエンド大容量メモリからデータをリトリーブ(retrieve)し、デデュープ可能なリードキャッシュにデータをライトするためにデデュープエンジンにライト要請を伝送する。
【0084】
ステートメント10.ステートメント9によるデデュープ可能なキャッシュにおいて、ミスブロックは、ライト要請に応答するデデュープエンジンから非確認応答(NAK)信号を受信してデデュープ可能なリードキャッシュからキャッシュラインを除去し、デデュープ可能なリードキャッシュからキャッシュラインを除去した後にデデュープエンジンにライト要請を再び伝送する。
【0085】
ステートメント11.本発明の一実施形態によるキャッシュコントローラの動作方法は、データをライトするためのライト要請を受信するステップと、データがデデュープ可能なリードキャッシュのキャッシュラインに存在すると判定するステップと、デデュープ可能なリードキャッシュのキャッシュラインを無効化するステップと、データを非デデュープ可能なライトバッファに格納するステップと、を有し、デデュープ可能なリードキャッシュは、キャッシュメモリの第1領域であり、キャッシュメモリは、第2領域として非デデュープ可能なライトバッファを含む。
【0086】
ステートメント12.ステートメント11による方法において、方法は、非デデュープ可能なライトバッファからバックエンド大容量メモリにデータをフラッシュ(flush)するステップと、非デデュープ可能なライトバッファからデータを削除するステップと、を更に含む。
【0087】
ステートメント13.ステートメント11による方法において、デデュープ可能なリードキャッシュのキャッシュラインを無効化するステップは、キャッシュメモリのメタデータ領域にキャッシュラインが有効でないとしてマークするステップと、デデュープエンジンを介してキャッシュラインに0の値をライトするステップと、を含む。
【0088】
ステートメント14.ステートメント13による方法において、デデュープ可能なリードキャッシュのキャッシュラインを無効化するステップは、デデュープエンジンからライト状態信号の確認応答(ACK)を受信するステップと、を更に含む。
【0089】
ステートメント15.ステートメント13による方法において、デデュープ可能なリードキャッシュのキャッシュラインを無効化するステップは、デデュープエンジンからライト状態信号の非確認応答(NAK)を受信するステップと、デデュープ可能なリードキャッシュから除去する第2キャッシュラインを選択するステップと、第2キャッシュラインを無効化するステップと、デデュープエンジンを介して第2キャッシュラインに0の値をライトするステップと、を更に含む。
【0090】
ステートメント16.ステートメント11による方法において、データを非デデュープ可能なライトバッファに格納するステップは、データがデデュープ可能なリードキャッシュのキャッシュラインに存在するか否かに拘らず、データを非デデュープ可能なライトバッファに格納するステップを含む。
【0091】
ステートメント17.本発明の他の実施形態によるキャッシュコントローラの動作方法は、データをリードするためのリード要請を受信するステップと、データがデデュープ可能なリードキャッシュの複数のキャッシュラインに存在しないと判定するステップと、バックエンド大容量メモリからデータをリードするステップと、デデュープ可能なリードキャッシュの第1キャッシュラインを選択するステップと、データを第1キャッシュラインにライトすることを試みるためにデデュープエンジンにデータを提供するステップと、リード要請に応答してデータを伝送するステップと、を有し、デデュープ可能なリードキャッシュは、キャッシュメモリの第1領域であり、キャッシュメモリは、第2領域として非デデュープ可能なライトバッファを含む。
【0092】
ステートメント18.ステートメント17による方法において、デデュープ可能なリードキャッシュの第1キャッシュラインを選択するステップは、デデュープ可能なリードキャッシュから現在データを格納していない第1キャッシュラインを選択するステップを含む。
【0093】
ステートメント19.ステートメント17による方法において、デデュープ可能なリードキャッシュの第1キャッシュラインを選択するステップは、キャッシュメモリのメタデータ領域からのデデュープ可能なリードキャッシュメタデータ及びヒストリーデータに応答して、デデュープ可能なリードキャッシュから除去するために現在有効なデータを格納している第1キャッシュラインを選択するステップと、第1キャッシュラインを無効化するステップと、を含む。
【0094】
ステートメント20.ステートメント19による方法において、第1キャッシュラインを無効化するステップは、キャッシュメモリのメタデータ領域に第1キャッシュラインを有効でないとしてマークするステップと、デデュープエンジンを介して第1キャッシュラインに0の値をライトするステップと、を含む。
【0095】
ステートメント21.ステートメント17による方法において、データを第1キャッシュラインにライトすることを試みるためにデデュープエンジンにデータを提供するステップは、デデュープエンジンからライト状態信号の確認応答(ACK)を受信するステップを含む。
【0096】
ステートメント22.ステートメント17による方法において、データを第1キャッシュラインにライトすることを試みるためにデデュープエンジンにデータを提供するステップは、デデュープエンジンからライト状態信号の非確認応答(NAK)を受信するステップと、キャッシュメモリのメタデータ領域からのデデュープ可能なリードキャッシュメタデータ及びヒストリーデータに応答して、デデュープ可能なリードキャッシュから除去するために現在有効なデータを格納している第2キャッシュラインを選択するステップと、第2キャッシュラインを無効化するステップと、データを選択された第2キャッシュラインにライトすることを試みるためにデデュープエンジンにデータを提供するステップと、を含む。
【0097】
ステートメント23.本発明の一実施形態による非一時的記憶媒体は、格納されたコマンドを含み、コマンドがマシンによって実行される場合、コマンドは、データをライトするためのライト要請を受信し、データがデデュープ可能なリードキャッシュのキャッシュラインに存在すると判定し、デデュープ可能なリードキャッシュのキャッシュラインを無効化し、データを非デデュープ可能なライトバッファに格納することを惹起し、デデュープ可能なリードキャッシュは、キャッシュメモリの第1領域であり、キャッシュメモリは、第2領域として非デデュープ可能なライトバッファを含む。
【0098】
ステートメント24.ステートメント23による非一時的記憶媒体において、コマンドは、非デデュープ可能なライトバッファからバックエンド大容量メモリにデータをフラッシュ(flush)し、非デデュープ可能なライトバッファからデータを削除することを惹起する。
【0099】
ステートメント25.ステートメント23による非一時的記憶媒体において、デデュープ可能なリードキャッシュのキャッシュラインを無効化することは、キャッシュメモリのメタデータ領域にキャッシュラインが有効でないとしてマークし、デデュープエンジンを介してキャッシュラインに0の値をライトすることを含む。
【0100】
ステートメント26.ステートメント25による非一時的記憶媒体において、デデュープ可能なリードキャッシュのキャッシュラインを無効化することは、デデュープエンジンからライト状態信号の確認応答(ACK)を受信することを更に含む。
【0101】
ステートメント27.ステートメント25による非一時的記憶媒体において、デデュープ可能なリードキャッシュのキャッシュラインを無効化することは、デデュープエンジンからライト状態信号の非確認応答(NAK)を受信し、デデュープ可能なリードキャッシュから除去する第2キャッシュラインを選択し、第2キャッシュラインを無効化し、デデュープエンジンを介して第2キャッシュラインに0の値をライトすることを更に含む。
【0102】
ステートメント28.ステートメント23による非一時的記憶媒体において、データを非デデュープ可能なライトバッファに格納することは、データがデデュープ可能なリードキャッシュのキャッシュラインに存在するか否かに拘らず、データを非デデュープ可能なライトバッファに格納することを含む。
【0103】
ステートメント29.本発明の他の実施形態による非一時的記憶媒体は、格納されたコマンドを含み、コマンドがマシンによって実行される場合、コマンドは、データをリードするためのリード要請を受信し、データがデデュープ可能なリードキャッシュの複数のキャッシュラインに存在しないと判定し、バックエンド大容量メモリからデータをリードし、デデュープ可能なリードキャッシュの第1キャッシュラインを選択し、データを第1キャッシュラインにライトすることを試みるためにデデュープエンジンにデータを提供し、リード要請に応答してデータを伝送することを惹起し、デデュープ可能なリードキャッシュは、キャッシュメモリの第1領域であり、キャッシュメモリは、第2領域として非デデュープ可能なライトバッファと、を含む。
【0104】
ステートメント30.ステートメント29による非一時的記憶媒体において、デデュープ可能なリードキャッシュの第1キャッシュラインを選択することは、デデュープ可能なリードキャッシュから現在データを格納していない第1キャッシュラインを選択することを含む。
【0105】
ステートメント31.ステートメント29による非一時的記憶媒体において、デデュープ可能なリードキャッシュの第1キャッシュラインを選択することは、キャッシュメモリのメタデータ領域からのデデュープ可能なリードキャッシュメタデータ及びヒストリーデータに応答して、デデュープ可能なリードキャッシュから除去するために現在有効なデータを格納している第1キャッシュラインを選択し、第1キャッシュラインを無効化することを含む。
【0106】
ステートメント32.ステートメント31による非一時的記憶媒体において、第1キャッシュラインを無効化することは、キャッシュメモリのメタデータ領域に第1キャッシュラインを有効でないとしてマークし、デデュープエンジンを介して第1キャッシュラインに0の値をライトすることを含む。
【0107】
ステートメント33.ステートメント29による非一時的記憶媒体において、データを第1キャッシュラインにライトすることを試みるためにデデュープエンジンにデータを提供することは、デデュープエンジンからのライト状態信号の確認応答(ACK)を受信することを含む。
【0108】
ステートメント34.ステートメント29による非一時的記憶媒体において、データを第1キャッシュラインにライトすることを試みるためにデデュープエンジンにデータを提供することは、デデュープエンジンからライト状態信号の非確認応答(NAK)を受信し、キャッシュメモリのメタデータ領域からのデデュープ可能なリードキャッシュメタデータ及びヒストリーデータに応答して、デデュープ可能なリードキャッシュから除去するために現在有効なデータを格納している第2キャッシュラインを選択し、第2キャッシュラインを無効化し、データを選択された第2キャッシュラインにライトすることを試みるためにデデュープエンジンにデータを提供することを含む。
【0109】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。