キャッシュと、前記キャッシュに結合され、前記キャッシュにアクセスする書き込みオペレーションをバッファするように構成され、各々が書き込みオペレーションをキャッシュブロックの粒度で結合するように構成された複数のエントリを含む書き込みバッファと、前記書き込みバッファに結合され、前記書き込みバッファに、適用する1又はそれ以上のフラッシュ指標及び前記書き込みバッファのフルネスに応答して、前記複数のエントリのうちの1又はそれ以上のエントリからの1又はそれ以上の結合書き込みオペレーションを前記キャッシュの下の次のレベルのメモリに送信させるように構成されるとともに、前記書き込みバッファ内のアクティビティに応答して、前記1又はそれ以上のフラッシュ指標を動的に修正するように構成された制御回路と、を備え、前記1又はそれ以上のフラッシュ指標を動的に修正することにより、前記書き込みバッファから前記次のレベルのメモリへの結合書き込みオペレーションの送信頻度が変更される、ことを特徴とする装置。前記1又はそれ以上のフラッシュ指標が、前記複数のエントリの各エントリ内の崩壊状態を含み、該崩壊状態が、前記エントリ内の結合書き込みオペレーションにおいて少なくとも1つの崩壊した書き込みが検出されたか否かを示し、前記制御回路が、閾値に達した崩壊状態にない使用中のバッファエントリの数に応答して、前記1又はそれ以上の結合書き込みオペレーションの送信を引き起こすように構成される、ことを特徴とする請求項1に記載の装置。前記制御回路が、第1のエントリへの前記崩壊した書き込みを検出し、前記第1のエントリの第1の崩壊状態を、崩壊していることを示すように修正するようにさらに構成される、ことを特徴とする請求項2に記載の装置。前記複数のエントリの各エントリに対応する年齢カウンタをさらに含み、前記制御回路が、前記年齢カウンタが第2の閾値に達したことに応答して、前記複数のエントリのうちの第2のエントリ内の崩壊状態を、崩壊していないことを示すように修正するように構成されるとともに、前記第2のエントリ内で書き込みオペレーションがヒットしたことに応答して、前記年齢カウンタをリセットするように構成される、ことを特徴とする請求項3に記載の装置。前記1又はそれ以上のフラッシュ指標が、前記書き込みバッファのフルネスの閾値を含み、前記制御回路が、前記書き込みバッファ内の使用中のエントリ数が前記フルネスの閾値に達したことに応答して、前記1又はそれ以上の結合書き込みオペレーションを送信させるように構成されるとともに、バッファフルイベントを検出したことに応答して、前記閾値を引き下げるように構成される、ことを特徴とする請求項1に記載の装置。前記制御回路が、前記バッファフルイベントの発生を伴わずに所定数の書き込みオペレーションが受け取られたことに応答して、前記閾値を引き上げるように構成される、ことを特徴とする請求項5に記載の装置。制御回路が、書き込みバッファ内のアクティビティをモニタするステップと、前記アクティビティに応答して、前記制御回路が、該制御回路が維持する1又はそれ以上のフラッシュ指標を修正するステップと、前記制御回路が、前記1又はそれ以上のフラッシュ指標及び前記書き込みバッファのフルネスに応答して、前記書き込みバッファ内の少なくとも1つのバッファエントリからの1又はそれ以上の書き込みオペレーションを引き起こすステップと、を含むことを特徴とする方法。前記モニタステップが、前記書き込みバッファの第1のエントリ内でヒットするとともに、前記第1のエントリ内で既に更新されている少なくとも1つのバイトを更新する第1の書き込みオペレーションを検出するステップを含み、前記1又はそれ以上のフラッシュ指標が、各エントリ内の状態を含み、前記修正ステップが、前記検出ステップを示す前記第1のエントリ内の状態を設定するステップを含む、ことを特徴とする請求項7に記載の方法。書き込みオペレーションを記憶している書き込みバッファエントリの数をフルネス閾値と比較するステップをさらに含み、前記第1のエントリが、前記数から除外される、ことを特徴とする請求項8に記載の方法。前記アクティビティが、前記書き込みバッファを満たさない第1の数の連続書き込みオペレーションを含み、前記1又はそれ以上のフラッシュ指標がフルネス閾値を含み、前記修正ステップが、前記フルネス閾値を引き上げるステップを含む、ことを特徴とする請求項7に記載の方法。前記アクティビティがバッファフルイベントを含み、前記修正ステップが、前記フルネス閾値を引き下げるステップを含む、ことを特徴とする請求項10に記載の方法。キャッシュと、前記キャッシュに結合され、前記キャッシュを更新する書き込みオペレーションの後の前記キャッシュを更新する書き込みオペレーションをバッファするように構成されるとともに、同じキャッシュブロック内のデータを更新する複数の書き込みオペレーションをマージするように構成された書き込みバッファと、前記書き込みバッファに結合され、前記書き込みバッファに、該書き込みバッファがフル状態に近付いていることに応答して、前記書き込みバッファから次のレベルのメモリに1又はそれ以上のマージされた書き込みオペレーションを送信させるように構成され、前記書き込みバッファのうちの第1の書き込みバッファエントリ内でヒットするとともに、前記第1の書き込みバッファエントリ内に表される以前の書き込みオペレーションによって更新された少なくとも1つのバイトを更新する、前記キャッシュから受け取った第1の書き込みオペレーションを検出するように構成され、前記第1の書き込みバッファエントリを、前記書き込みバッファがフル状態に近付いているかどうかを判断する検討から削除するようにさらに構成された制御回路と、を備えることを特徴とする装置。前記制御回路が、前記書き込みバッファがフル状態に近付いていることを、フルネス閾値に応答して判断するように構成され、前記第1の書き込みバッファエントリが、前記閾値への到達に向けてカウントされない、ことを特徴とする請求項12に記載の装置。前記制御回路が、前記第1の書き込みオペレーションが検出されたことを示す前記第1の書き込みバッファエントリ内の状態を記録するように構成される、ことを特徴とする請求項12に記載の装置。前記第1の書き込みバッファエントリが、年齢指示をさらに含み、前記制御回路が、前記状態を、前記以前の書き込みオペレーションによって更新された少なくとも1つのバイトを更新する書き込みオペレーションが検出されなかったことを示すように変更するように構成されるとともに、前記第1の書き込みオペレーションを検出した後に前記年齢指示が第1の年齢閾値に達したことに応答して前記状態を変更するように構成される、ことを特徴とする請求項14に記載の装置。前記制御回路が、前記第1の書き込みオペレーションの後で、前記第1の書き込みバッファエントリ内でヒットする第2の書き込みオペレーションを検出したことに応答して、前記年齢指示をリセットするように構成される、ことを特徴とする請求項15に記載の装置。前記書き込みバッファの制御回路が、前記年齢指示が前記第1の年齢閾値よりも高い第2の年齢閾値に達したことに応答して、前記書き込みバッファに、該書き込みバッファから前記次のレベルのメモリに書き込みオペレーションを送信させるようにさらに構成される、ことを特徴とする請求項14に記載の装置。キャッシュを書き込む前に、複数のキャッシュブロックへの書き込みを蓄積するように構成された書き込みバッファと、前記書き込みバッファをモニタして、蓄積された書き込みをいつ記憶バッファから選択して前記キャッシュに書き込むかを判断する閾値を調整するように構成された回路と、を備え、前記回路が、前記書き込みバッファがフルになる頻度及び前記書き込みバッファがフルにならずに行われる書き込みの数に依存して前記閾値を調整するように構成される、ことを特徴とする装置。前記回路が、バッファフルイベントを伴わない第1の数の連続書き込みオペレーションを検出したことに応答して、前記閾値を引き上げるようにさらに構成されることを特徴とする請求項18に記載の装置。前記回路が、連続書き込みオペレーションの総数に応答して前記第1の数を検出するように構成されるとともに、前記バッファフルイベントに応答して前記カウントをリセットするように構成される、ことを特徴とする請求項19に記載の装置。前記回路が、バッファフルイベントの検出に応答して前記閾値を引き下げるようにさらに構成される、ことを特徴とする請求項18に記載の装置。ある実施形態では、結合書き込みバッファが、バッファエントリから書き込みオペレーションをいつ送信すべきかを判断するための1又はそれ以上のフラッシュ指標を維持するように構成される。結合書き込みバッファは、書き込みバッファ内のアクティビティに応答してフラッシュ指標を動的に修正し、書き込みバッファから次に低いレベルのメモリに書き込みオペレーションを送信させる条件を修正するように構成することができる。従って、検出されたアクティビティに基づいてパフォーマンス/帯域幅のトレードオフを動的に調整することができる。1つの実施構成では、フラッシュ指標が、書き込みバッファエントリを崩壊として分類することを含むことができる。崩壊した書き込みバッファエントリ、及びそのバッファエントリ内の崩壊した書き込みオペレーションは、バッファエントリ内の以前の書き込みオペレーションによって書き込まれたデータを上書きした少なくとも1つの書き込みオペレーションを含むことができる。このようなエントリは、以前のデータを上書きする書き込みオペレーションを蓄積し続けることができ、従ってこれらのデータの少なくとも一部を、すぐに再びアクセスすべきでない一時データとすることができる。例えば、書き込みバッファエントリ内の書き込みオペレーションを、レジスタを他のデータの記憶に利用できるようにするためにプロセッサからのレジスタ値が書き込まれる、メモリ内のレジスタスピル領域の一部とすることができる。書き込みバッファフルネスが、1又はそれ以上の書き込みバッファエントリ内の結合書き込みオペレーションが次のレベルのメモリに送信される指定閾値に達したかどうかを判断する際には、崩壊した書き込みバッファエントリを考慮しなくてもよい。この閾値計算では、バッファ内の崩壊したエントリを一時的に無視することができる。別の実施構成では、結合書き込みバッファが、バッファフルネスの閾値をフラッシュ指標として維持することができる。バッファは、バッファフルイベントをモニタすることができる。バッファフルイベントが検出された場合、現在のアクティビティレベルに対して閾値が高すぎる可能性があるので、これを引き下げることができる。一方、いくつかの連続する書き込みオペレーションがバッファフルイベントを検出することなくバッファに受け入れられた場合、閾値が低すぎる可能性があるので、これを引き上げることができる。従って、時間とともに検出される実際のバッファフルネスに基づいて閾値を調整することができる。以下の詳細な説明では添付図面を参照するが、ここでこれらの図面について簡単に説明する。本発明は、様々な修正及び代替形態が可能であるが、図面には本発明の特定の実施形態を一例として示し、本明細書ではこれらについて詳細に説明する。しかしながら、図面及びこれらに対する詳細な説明は、開示する特定の形態に本発明を限定することを意図するものではなく、むしろ添付の特許請求の範囲によって定められる本発明の思想及び範囲内にある全ての修正物、同等物及び代替物を含むことを意図するものであると理解されたい。本明細書で使用する表題は構成目的のものにすぎず、説明の範囲を限定するために使用することを意味するものではない。本出願を通じて使用するmay~できるという用語は、強制的な意味のすなわち、~しなければならないmustを意味するものではなく、許容的な意味すなわち、可能性を有することhavingthepotentialtoを意味するで使用される。同様に、含むinclude、including、及びincludesという用語は、限定するわけではないがincludingを意味する。様々なユニット、回路、又はその他の構成要素について、1又は複数のタスクを実行するように構成されるconfiguredtoと記載することがある。このような文脈では、ように構成されるという表現は、オペレーション中に1又は複数のタスクを実行する回路を有することを一般に意味する包括的な構造の記述である。従って、これらのユニット/回路/構成要素は、ユニット/回路/構成要素が現在オンでない場合でもタスクを実行するように構成することができる。通常、ように構成されるに相当する構造を成す回路としては、ハードウェア回路を挙げることができる。同様に、説明の都合上、様々なユニット/回路/構成要素について、1又は複数のタスクを実行する、と記載することもある。このような記載は、ように構成されるという表現を含むと解釈すべきである。1又はそれ以上のタスクを実行するように構成されたユニット/回路/構成要素について記述することは、このユニット/回路/構成要素に対して米国特許法第112条第6項の解釈を行使することを明確に意図するものではない。ここで図1を参照すると、プロセッサコア10、第1レベルL1データキャッシュ12、第2レベルL2インターフェイスユニット14、及びL2キャッシュ16の1つの実施形態のブロック図を示している。L2インターフェイスユニット14は、フィルバッファ18及び結合書き込みバッファCWB20を含むことができる。CWB20は、1又はそれ以上のフラッシュ指標22を維持するように構成することができる。プロセッサコア10は、L1データキャッシュ12に結合され、このL1データキャッシュ12は、L2インターフェイスユニット14に結合される。L2インターフェイスユニット14は、L2キャッシュ16にさらに結合され、このL2キャッシュ16は、メモリ階層内の次のレベルのメモリ図1には図示せずにさらに結合することができる。プロセッサコア10は、あらゆる命令セットアーキテクチャを実装することができ、この命令セットアーキテクチャ内で定義される命令を実行するための回路を含むことができる。様々な実施形態では、プロセッサコア10が、スーパスカラ又はスカラ、スーパパイプライン又はパイプライン、アウトオブオーダ又はインオーダ、投機的又は非投機的などを含むあらゆるマイクロアーキテクチャを実装することができる。様々な実施形態では、必要に応じてマイクロコーディング技術を利用してもよく、又は利用しなくてもよい。プロセッサコア10により実装される命令セットアーキテクチャは、メモリからプロセッサプロセッサのレジスタなどにデータを転送するように定義される明示的ロード命令、及びプロセッサからメモリにデータを転送するように定義される明示的ストア命令を規定することができる。様々な実施形態では、どちらの転送もキャッシュ内で完了することができる。これとは別に又はこれに加えて、命令セットアーキテクチャは、例えば、メモリオペランド上で非ロード/ストアオペレーションを実行する命令のための非明示的ロード及びストアを規定することもできる。従って、プロセッサコア10は、ロードオペレーション又はストアオペレーションを実行又は実施すると言うことができる。これらのロード/ストアオペレーションは、明示的命令又は非明示的ロード/ストアから導出することができる。プロセッサコア10は、ロードオペレーションに応答して読み取りオペレーションを生成し、ストアオペレーションに応答して書き込みオペレーションを生成するように構成することができる。これらの読み取り/書き込みオペレーションを、1又はそれ以上のレベルのキャッシュ及びメインメモリシステムを含むメモリ階層に伝えることができる。キャッシュは、メインメモリサブシステムにも記憶されるデータをキャッシュすることができ、メモリ階層内のデータは、メインメモリシステムに対応するメモリアドレス空間内に定められるメモリアドレスによって識別される。例えば、図1の実施形態では、L1及びL2キャッシュを、メモリ階層内のメモリのレベルとすることができる。メインメモリレベル及び任意にキャッシュの1又はそれ以上の追加レベルを含むさらなるレベルが存在することができる。他の実施形態では、L2キャッシュ16を含まなくてもよく、L1キャッシュからの次のレベルのメモリをメインメモリサブシステムとすることができる。一般に、読み取り/書き込みオペレーションは、最上位プロセッサコア10に最も近いレベルからメモリ階層に入ることができ、オペレーションが完了するまで1つのレベルから次のレベルへとプログラムすることができる。メインメモリサブシステムは、メモリ階層内の最も低いレベルとすることができる。データは、大容量記憶装置ディスクドライブなど又はネットワーク装置などの様々な周辺装置によってメインメモリサブシステムとの間を移動することができるが、このデータがこれらの装置上のメモリアドレスによって識別されることはない例えば、大容量記憶装置は、この装置上にデータを位置付けるための独自のアドレス空間を有することができ、又はネットワーク装置が接続されたネットワークは、そのネットワーク上の装置を識別する独自のアドレス空間を含むことができる。読み取りオペレーションは、読み取り用のデータがメモリ階層例えば、あらゆるレベルのキャッシュ又はメインメモリサブシステムから戻された時に完了することができ、書き込みオペレーションは、プロセッサコア10が書き込みデータを送信することを通じて完了することができる。書き込みオペレーションは、アドレス、書き込みサイズの指示バイト単位など、及び書き込みデータを含むことができる。書き込みオペレーションは、他の書き込み属性キャッシュ能力、一貫性などを含むこともできる。データキャッシュ12は、あらゆる容量及び構成ダイレクトマップ、セットアソシアティブなどを実装することができる。データキャッシュ12は、キャッシュ内の記憶容量の割り当て及び割り当て解除をキャッシュブロック単位で行うように構成することができる。キャッシュブロックは、32バイト、64バイト、128バイトなどのあらゆるサイズを有することができ、メモリ内のブロックサイズの自然アドレス境界に整列することができる例えば、32バイトのキャッシュブロックは、32バイト境界に整列することができ、64バイトのキャッシュブロックは、64バイト境界に整列することができ、以下同様である。図示の実施形態では、データキャッシュ12がライトスルーWT型である。ライトスルーキャッシュでは、キャッシュ内のキャッシュブロックを更新することに加え、キャッシュ内でヒットした書き込みオペレーションが次のレベルのメモリに伝えられる。キャッシュミスした書き込みオペレーションも、次のレベルのメモリに伝えられる。一方、ライトバックキャッシュ又はストアインキャッシュは、記憶されたキャッシュブロックを更新して、書き込みオペレーションを伝えないことがある。代わりに、更新されたキャッシュブロックがキャッシュから排出された時に、これを最終的に次のレベルのメモリに書き込むことができる。L2インターフェイスユニット14は、L1データキャッシュ12から書き込みオペレーションを受け取ることができ、読み取りキャッシュミスをフィル要求として受け取ることもできる。L2インターフェイスユニット14は、書き込みオペレーションをCWB20に記憶してフィル要求をフィルバッファ18に記憶するように構成することができる。フィル要求は、L2キャッシュ16及び必要に応じて下位のメモリ階層に送信することができ、フィルデータは、L1データキャッシュ12に戻してそこに書き込むことができる。CWB20は、書き込みオペレーションをバッファし、これらを様々な時点でL2キャッシュ16に送信することができる。書き込みオペレーションは、キャッシュ12内でヒットしてその中のキャッシュブロックを更新したライトスルー書き込みを含むことができる。書き込みオペレーションは、データキャッシュ12内でミスしたライトスルー書き込みを含むこともできる。CWB20は、複数のバッファエントリを含むことができる。各バッファエントリは、キャッシュブロックの粒度で書き込みオペレーションを記憶するように構成することができる。すなわち、メモリ内のキャッシュブロック境界に整列したキャッシュブロックサイズのエンティティにエントリを割り当てることができる。この割り当てられたエントリには、キャッシュブロック内のあらゆる書き込みを記憶することができる。キャッシュブロック内の最初の書き込みオペレーションにより、CWB20がエントリを割り当てることができるようになり、アドレス及びキャッシュブロック内のどのバイトが更新されたかについての指示バイトマスクなどとともに書き込みデータをバッファに記憶することができる。次の書き込みオペレーションをバッファにマージし、キャッシュブロック内の適当なバイトにデータを書き込んでバイトマスクを更新することができる。CWB20は、1又はそれ以上の結合書き込みオペレーションをバッファエントリからL2キャッシュ16にいつ送信すべきかを判断するための1又はそれ以上のフラッシュ指標22を蓄積するように構成することができる。CWB20は、書き込みバッファ内のアクティビティをモニタしてフラッシュ指標22を決定するように構成することができる。従って、一般に、フラッシュ指標は、結合書き込みオペレーションを次のレベルのメモリにいつ送信すべきか或いは、1又は複数の書き込みバッファエントリをいつフラッシュすべきかを判断するためにCWB20が使用できる動的に生成されるデータとすることができる。フラッシュ指標は動的に生成されるので、結合書き込みオペレーションがフラッシュされる頻度は、検出された書き込みバッファのアクティビティに基づいて時間とともに変化することができる。すなわち、フラッシュ指標を書き込みバッファのフルネスすなわち、総バッファエントリ数と比較した使用中のバッファエントリ数とともに使用して、1又はそれ以上の結合書き込みオペレーションを次のレベルのメモリにいつ送信すべきかを判断することができる。例えば、1つの実施形態では、フラッシュ指標が、崩壊した書き込みバッファエントリの検出を含むことができる。崩壊した書き込みバッファエントリとは、少なくとも1つの書き込みオペレーションがマージされたエントリ、及び以前の書き込みオペレーションによって書き込まれた書き込みデータの少なくとも1バイトが書き込みオペレーションによって上書きされたエントリとすることができる。例えば、キャッシュブロック内のどのバイトが更新されたかを示すようにバイトマスクが維持されている場合、書き込みオペレーションがエントリにマージされた場合には崩壊した書き込みを検出することができ、このマージする書き込みオペレーションに起因して設定されたであろうバイトマスクの少なくとも1ビットが既に設定されている。他の実施形態では、ワード、ダブルワードなどの他のレベルのキャッシュブロックの粒度で崩壊を検出することができる。他の実施形態では、書き込みにより更新された全てのバイトが、崩壊した書き込み前に設定された対応するマスクビットを有する場合にのみ、崩壊した書き込みを検出することができる。すなわち、崩壊した書き込みがマージされる前及び後でバイトバスクが同じ値である場合、崩壊した書き込みを検出することができる。CWB20は、書き込みバッファのフルネスを検出する際に、崩壊した書き込みバッファエントリを検討から外すように構成することができる。例えば、CWB20を、これがフルに近付いた時に例えば、フルネスの閾値レベルが満たされた時に1又はそれ以上の書き込みバッファエントリから結合書き込みオペレーションを送信するように構成することができる。フラッシュ書き込みエントリに関する書き込みバッファのフルネスを決定する際には、崩壊した書き込みバッファエントリが検討されないので、書き込みバッファは、書き込みバッファ内で崩壊した書き込みバッファエントリが検出された時の方が、書き込みバッファ内で崩壊した書き込みバッファエントリが検出されなかった時よりも使用中のエントリの観点からフルになりやすい傾向となり得る。1つの実施形態では、一定の又はプログラム可能な閾値を使用して、CWB20がフルに近付いていると判断することができる。崩壊状態にあるエントリを差し引いて、使用中のエントリ数をこの閾値と比較することができる。閾値に達する例えば、閾値が満たされる又はこれを超えると、CWB20は、1又はそれ以上の書き込みバッファエントリをフラッシュすることができる。ある実施形態では、閾値に達したことに応答して、CWB20が1つの書き込みバッファエントリをフラッシュすることができ、使用中の書き込みバッファエントリの数が閾値よりも低くなるまで書き込みバッファエントリをフラッシュし続けることができる。他の実施形態では、同時に複数の書き込みバッファエントリをフラッシュすることができる。崩壊した書き込みバッファエントリは、フルネス閾値に向けてカウントされないので、崩壊した書き込みバッファエントリが存在しない時よりも書き込みバッファエントリをフラッシュする頻度が低くなる場合がある。書き込みバッファエントリのフラッシングは、1又はそれ以上の結合書き込みオペレーションに関与することができる。例えば、エントリ内の連続する更新バイトの組毎に1つの書き込みオペレーションを生成することができる。エントリ内に非更新バイトのギャップが存在する場合、複数の書き込みオペレーションを送信することができる。他の実施形態では、キャッシュブロック内のどのバイトを更新すべきかを識別するバイトマスク又はその他の指示とともに、書き込みエントリにつき1つの結合書き込みオペレーションを送信することができる。さらに他の実施形態では、所与のサイズの書き込みワードなどを生成することができる。別の実施形態では、フラッシュ指標22が、閾値を含むことができる。この閾値は、書き込みバッファフルイベントの検出に基づいて動的に修正することができる。書き込みバッファフルイベントは、書き込みバッファが実際にフルである全てのバッファエントリが書き込みオペレーションに割り当てられている旨を示すことができる。従って、CWB20は、閾値に基づいて書き込みエントリをフラッシュすることができ、バッファフルイベントを検出して閾値を修正すべき旨を示すことができる。例えば、バッファフルイベントが検出された場合、CWB20は、閾値が高すぎる例えば、バッファフルに近すぎることにより、エントリのフラッシングを完了できる前に書き込みバッファが満たされてしまうと判断することができる。フルバッファは、プロセッサコアのパフォーマンスに影響を与えることがある。従って、バッファフルイベントに応答して閾値を引き下げることができる。一方、バッファフルイベントを検出することなく特定数の書き込みオペレーションがバッファに書き込まれた場合、閾値が低すぎる例えば、バッファフルから遠すぎる可能性があり、これを引き上げることができる。従って、バッファがフルに近付いているか又はそうでないかに基づいて、閾値を時間とともに適合させることができる。トラフィックによってバッファが満たされる速度が速い場合、閾値を下げることができる。このようにして、バッファ内に書き込みをバックアップせずに、プロセッサコア10を失速させることができる。トラフィックによってバッファが満たされる速度がそれほど速くない場合、閾値を上げることができる。従って、バッファが書き込みオペレーションを長く記憶できるようにして、L2キャッシュ16内のトラフィック及び消費電力を低下させることができる。すなわち、閾値を変更することにより、書き込みバッファエントリからL2キャッシュ16に書き込みを送信する頻度を増減することができる。他の実施形態では、フルの書き込みキャッシュブロックがどれほどの頻度でバッファされるか、バッファ内のスヌープヒットなどの他のフラッシュ指標を蓄積することができる。同様に、これらの指標に基づいて、L2キャッシュ16に書き込みバッファエントリをフラッシングする頻度を修正することもできる。例えば、システム内の他のプロセッサコア又は回路が、書き込まれたデータを使用していることを示すスヌープヒットが検出されている場合、フラッシングの頻度を高めることができる。いくつかの実施形態では、CWB20に記憶された書き込みオペレーションが、キャッシュ不可能な書き込みオペレーションをさらに含むことがある。このキャッシュ不可能な書き込みオペレーションは、書き込み結合可能な場合もあり、上述したライトスルー書き込みと同様のバッファエントリにマージすることができる。他のキャッシュ不可能な書き込みオペレーションは、書き込み結合可能でない場合もある又はキャッシュ不可能な書き込みの書き込み結合をサポートしていない場合がある。このような場合、各キャッシュ不可能な書き込みオペレーションに、CWB20内の独自の別個のエントリを割り当てることができる。他の実施形態では、キャッシュ不可能な書き込みオペレーションを異なる書き込みバッファに記憶することができる。L2キャッシュ16は、データキャッシュ12に関する上記の説明と同様の、いずれのサイズ及び構成であってもよい。様々な実施形態では、L2キャッシュ16がライトバックであっても、又はライトスルーであってもよい。L2キャッシュ16は、様々な実施形態においてメインメモリサブシステム又は第3レベルL3キャッシュとすることができる、次のレベルのメモリへのインターフェイスをさらに含むことができる。なお、結合書き込みバッファCWB20を、同様にメモリ階層の他のレベル間に含めることもできる。例えば、ライトスルーであるあらゆるキャッシュレベルの下にCWB20を含めることができる。なお、ある実施形態では、プロセッサコア10、L1データキャッシュ12、及びL2インターフェイス14フィルバッファ18及びCWB20を含むを、ともにプロセッサとして統合することができる。他の実施形態では、L2インターフェイス14を、別のプロセッサコア10/L1データキャッシュ12と共有することができる。さらに他の実施形態では、L2キャッシュ16をプロセッサに統合することができ、及び/又はその他の構成要素を例えば、チップ構成上のシステムに統合することができる。次に図2を参照すると、CWB20の1つの実施形態のオペレーションを示すフロー図を示している。理解を容易にするために、特定の順序でブロックを示しているが、他の順序を使用することもできる。これらのブロックは、CWB20の組み合わせ論理回路内で同時に実行することができる。ブロック、ブロックの組み合わせ、及び/又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。CWB20は、図2に示すオペレーションを実施するように構成することができる。CWB20は、書き込みバッファ内のアクティビティをモニタするように構成することができるブロック30。例えば、CWB20は、バッファのフルネス、バッファにマージされた書き込みオペレーションの数、崩壊した書き込みなどをモニタすることができる。検出されたアクティビティが、CWB20により維持されるフラッシュ指標の変化を示す場合判定ブロック32、はいの支脈、CWB20は、このフラッシュ指標を修正することができるブロック34。バッファ状態と単複のフラッシュ指標22の組み合わせが、1又はそれ以上のバッファエントリのフラッシュを示す場合判定ブロック36、はいの支脈、CWB20を、1又はそれ以上のバッファエントリからL2キャッシュ16に1又はそれ以上の結合書き込みオペレーションを送信するように構成することができるブロック38。より一般的には、メモリ階層内の次のレベルのメモリに書き込みオペレーションを送信することができる。ここで図3を参照すると、CWB20の1つの実施形態のブロック図を示している。図3の実施形態では、CWB20が、書き込みバッファ42に結合された制御回路40を含む。バッファ42は、L1データキャッシュ12から書き込みオペレーションを受け取り、L2キャッシュ16に又はより一般的にはメモリ階層内の次のレベルのメモリに結合書き込みオペレーションを提供するように結合される。制御回路40は、崩壊年齢CAge閾値、年齢閾値、及びフル閾値をそれぞれ記憶できるレジスタ44A~44Cの組を含む。レジスタ44A~44Cは、一般に1つのレジスタ又は複数のレジスタとして実装することができ、いくつかの実施形態では、プログラム可能に取り扱うことができるソフトウェアとすることができる。他の実施形態では、閾値の1又はそれ以上を固定することができる。図3には、バッファ42内の例示的なエントリ46A~46Bを示しており、各エントリは、アドレスフィールドA、データフィールドD、バイトマスクフィールドByteMask、年齢カウンタフィールドAgeCtr、及び崩壊状態フィールドCollapsedを含む。バッファ42には、図示のエントリと同様の追加エントリを含めることもできる。総合すると、全てのエントリにわたる崩壊状態が、フラッシュ指標22を表すことができる。アドレスフィールドは、エントリ内に表されるキャッシュブロックのアドレスを記憶することができ、データフィールドは、データキャッシュブロックのストレージを含むことができるが、キャッシュブロック全体が有効でないこともある。すなわち、このエントリは、いずれかの所与の時点における有効データの部分的キャッシュブロックを記憶することができる。バイトマスクフィールドは、キャッシュブロック内の各バイトのビットを含むことができる。このビットは、対応するバイトがデータフィールド内で有効であるかどうかすなわち、エントリ内に表される書き込みオペレーションによってバイトが書き込まれたかどうかを示すことができる。1つの実施形態では、マスクビットを、バイトが有効であることを示すように設定し、無効を示すようにクリアすることができるが、他の実施形態では、これらのセット及びクリア状態に逆の意味を使用することができる。年齢カウンタは、エントリの年齢を示すことができる。最初は、この年齢カウンタをゼロに設定することができ、バッファ42内に書き込みが存在するクロックサイクル毎に、又は書き込みオペレーションがバッファ42に提供される毎に増分することができる。他の実施形態では、年齢カウンタを規定値に初期化/リセットして減分することができる。崩壊状態は、エントリが崩壊しているかどうかを示すことができる。すなわち、崩壊状態は、エントリに関して少なくとも1つの崩壊した書き込みが検出されたかどうかを示すことができる。崩壊状態は、例えば、設定時にはエントリが崩壊していることを示し、クリア時にはエントリが崩壊していないことを示すビットとすることができる逆も同様。他の実施形態では、他の状態指示を使用することができる。ここで図4を参照すると、図3に示すCWB20の、データキャッシュ12から書き込みオペレーションを受け取ったことに応答する1つの実施形態のオペレーションを示すフロー図を示している。理解を容易にするために、特定の順序でブロックを示しているが、他の順序を使用することもできる。これらのブロックは、CWB20の組み合わせ論理回路内で同時に実行することができる。ブロック、ブロックの組み合わせ、及び/又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。CWB20、特に制御回路40は、図4に示すオペレーションを実施するように構成することができる。CWB20は、書き込みオペレーションのアドレスと書き込みバッファ42内のアドレスをキャッシュラインの粒度で比較するように構成することができる。例えば、書き込みバッファ42内のエントリのアドレスフィールドを、内容参照可能メモリCAMとして実装することができる。バッファエントリ内で書き込みオペレーションがヒットしたすなわち、エントリによって表されるキャッシュブロック内に書き込みオペレーションが存在する-判定ブロック50、はいの支脈場合、制御回路40を、エントリ内の年齢カウンタをリセットするように構成することができるブロック52。従って、この実施形態では、最新の書き込みオペレーションがエントリにマージされたので、年齢カウンタをエントリの年齢とすることができる。以前の書き込みオペレーションによって既にエントリに書き込まれていた少なくとも1つのバイトが、この書き込みオペレーションによって上書きされた場合判定ブロック54、はいの支脈、制御回路40を、崩壊状態を設定して崩壊を示すように構成することができるブロック56。制御回路40は、バイトマスクを更新して、ヒットしたエントリのデータフィールドにデータが書き込まれるようにするよう構成することができる。バッファ42内で書き込みオペレーションがミスした場合判定ブロック50、いいえの支脈、制御回路40を、この書き込みオペレーションに新たな現在未使用のエントリを割り当てるように構成することができるブロック60。制御回路40は、この割り当てたエントリを、書き込みオペレーションに対応する情報で初期化することができるブロック62。具体的には、制御回路40は、割り当てたエントリが書き込みオペレーションのアドレス及びデータで更新されるようにし、書き込みによって更新されたバイトを示すようにバイトマスクを設定し、年齢カウンタをクリアし、崩壊状態をクリアすることができる。書き込みバッファがフルであるすなわち、現在未使用のエントリが存在しない場合、制御回路40は、L1データキャッシュ12/プロセッサ10をバックプレッシャー制御して、エントリが利用可能になるまで書き込みオペレーションを失速させることができる。判定ブロック54及び崩壊状態設定56は、図3に示すCWB20の実施形態の判定ブロック32及びブロック34にそれぞれ相当することができる。ここで図5を参照すると、図3に示すCWB20の、バッファエントリを評価してフラッシュイベントを判断するための1つの実施形態のオペレーションを示すフロー図を示している。理解を容易にするために、特定の順序でブロックを示しているが、他の順序を使用することもできる。これらのブロックは、CWB20の組み合わせ論理回路内で同時に実行することができる。ブロック、ブロックの組み合わせ、及び/又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。CWB20、特に制御回路40は、図5に示すオペレーションを実施するように構成することができる。制御回路40は、フルカウントを、使用中のエントリ数から崩壊したエントリ数を差し引いたものとして判断するように構成することができるブロック70。すなわち、フルカウントは、非崩壊エントリの数とすることができる。フルカウントがフル閾値44Cに達した場合判定ブロック72、はいの支脈、制御回路40を、1又はそれ以上のエントリからL2キャッシュ16又はメモリ階層の次のレベルに結合書き込みオペレーションを送信するように構成することができるブロック74。制御回路40は、いずれかのエントリを選択してL2キャッシュ16に書き込みオペレーションを送信するように構成することができる。例えば、ある実施形態では、制御回路40が、崩壊したエントリではない年齢カウンタによって示される最も古いエントリを選択することができる。別の実施形態では、年齢に基づく選択に関して、崩壊したエントリ及び崩壊していないエントリの両方を検討することができる。別の実施形態では、エントリを先入れ先出しFIFO順のエントリ割り当てでフラッシュすることができる。この実施形態では、ブロック70及び72の組み合わせがブロック36に相当することができ、ブロック74がブロック38に相当することができる。別の実施形態では、使用中のエントリ崩壊及び非崩壊の両方の総数と比較すべきフル閾値よりも高いさらなる閾値を定義することができる。使用中のエントリの総数が、このさらなる閾値に達した場合、制御回路40を、1又はそれ以上のバッファエントリからL2キャッシュ16に結合書き込みオペレーションを送信するように構成することができるブロック74。図5に示すフロー図の残りは、バッファ42内の各バッファエントリに例えば、各バッファエントリに同時に適用することができる。年齢カウンタが崩壊年齢閾値44Aに達した場合判定ブロック76、はいの支脈、制御回路40を、エントリ内の崩壊状態をリセットして非崩壊を示すように構成することができるブロック78。従って、この実施形態では、エントリに対する書き込みヒット毎に年齢カウンタがリセットされるので、エントリに対する別の書き込みヒットを伴わずに、崩壊年齢閾値に等しいクロックサイクル数が経過した後には、崩壊したエントリは、もはや崩壊とは見なされなくなる。年齢カウンタが年齢閾値44Bに達した場合判定ブロック80、はいの支脈、制御回路40を、エントリをフラッシュして、そのエントリの1又はそれ以上の結合書き込みオペレーションを送信するように構成することができるブロック82。この実施形態では、ブロック80及び82が、ブロック36及び38にさらにそれぞれ相当することができる。ここで図6を参照すると、CWB20の別の実施形態のブロック図を示している。図6の実施形態では、CWB20が、書き込みバッファ92に結合された制御回路90を含む。バッファ92は、L1データキャッシュ12から書き込みオペレーションを受け取り、L2キャッシュ16に結合書き込みオペレーションを提供するように結合される。制御回路90は、書き込み閾値、書き込みカウント、及びフル閾値をそれぞれ記憶できるレジスタ94A~94Cの組を含む。レジスタ94A~94Cは、一般に1つのレジスタ又は複数のレジスタとして実装することができ、いくつかの実施形態では、プログラム可能に取り扱うことができるソフトウェアとすることができる。他の実施形態では、書き込み閾値を固定することができる。図6の実施形態では、書き込みカウント94B及びフル閾値94Cの組み合わせをフラッシュ指標22とすることができる。書き込みカウント94Bは、最新のバッファフルイベント以後にバッファ92に記憶された書き込みオペレーションの総数とすることができる。この実施形態では、フル閾値94Cを、フラッシュが実行される前に使用中であるべきバッファエントリの閾値とすることができる。以下で説明するように、フル閾値94Cは、書き込みバッファのアクティビティに基づいて変化することができる。図6には、例示的なエントリ96A~96Bを示している。図示のエントリと同様の追加エントリを含めることもできる。図6の実施形態は、図3に関連して上述した同じフィールドと同様の、アドレスフィールドA、データフィールドD、バイトマスクフィールドByteMask、及び年齢カウンタAgeCtrフィールドを含む。図7は、図6に示すCWB20の、書き込みオペレーションを受け取ったことに応答する1つの実施形態のオペレーションを示すフロー図である。理解を容易にするために、特定の順序でブロックを示しているが、他の順序を使用することもできる。これらのブロックは、CWB20の組み合わせ論理回路内で同時に実行することができる。ブロック、ブロックの組み合わせ、及び/又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。CWB20、特に制御回路40は、図7に示すオペレーションを実施するように構成することができる。図6の実施形態は、図7に示すオペレーションに加え、バッファ92内のヒット又はミスを検出すること、図4のブロック50、52、58、60及び62に示すようにエントリを更新すること、及び同様に図5のブロック72及び74を実施することができる。任意に、いくつかの実施形態では、図6の実施形態が、図5のブロック80及び82を実施することもできる。制御回路90は、受け取った書き込みオペレーションがバッファ92を満たしているかどうかを判断するように構成することができる判定ブロック100。例えば、受け取った書き込みオペレーションがバッファ92内でミスし、この受け取った書き込みオペレーションに最後の未使用エントリが割り当てられている場合、バッファ92はフルである。そうである場合判定ブロック100、はいの支脈、制御回路90を、フル閾値94Cを引き下げてブロック102書き込みカウント94Bをクリアするブロック104ように構成することができる。一方判定ブロック100、いいえの支脈、受け取った書き込みオペレーションがフルイベントを引き起こさない場合、制御回路90を、書き込みカウント94Bを増分するように構成することができるブロック106。書き込みカウントが書き込み閾値に達した場合判定ブロック108、はいの支脈、制御回路90を、フル閾値を引き上げるように構成することができる。この実施形態では、図7のフロー図が、図3のブロック32及び34に相当することができる。従って、この実施形態では、エントリのフラッシュを引き起こしてフルイベントの発生を防ぐようにフル閾値を動的に修正しながらこの実施形態においてフルカウントが使用中のエントリ数であるブロック72及び74に示すように、CWB20内で検出されたトラフィックに基づいてできるだけ十分なバッファ92が得られるようにすることができる。書き込みカウントはいずれの所望の方法で判断してもよい。例えば、所与のパーセンテージの書き込みオペレーションが書き込みバッファエントリにマージされると予想される場合、書き込みカウントを、キャッシュブロック当たりの書き込みオペレーション数キャッシュブロック内のワード数などと、書き込みバッファのエントリ数と、マージ率との積に等しくすることができる。次に図8を参照すると、システム350の1つの実施形態のブロック図を示している。図示の実施形態では、システム350が、外部メモリ352に結合された集積回路358の少なくとも1つのインスタンスを含む。外部メモリ352は、図1に関連して上述したメインメモリサブシステムを形成することができる。集積回路358は、少なくとも図1に示すプロセッサコア10及びL1データキャッシュ12を含むことができ、L2インターフェイスユニット14及びL2キャッシュ16の一方又は両方を含むことができる。集積回路358は、必要に応じてその他の構成要素をさらに含むことができる。集積回路358は、1又はそれ以上の周辺機器354及び外部メモリ352に結合される。集積回路358への供給電圧、並びにメモリ352及び/又は周辺機器354への1又はそれ以上の供給電圧を供給する電源356が設けられる。いくつかの実施形態では、集積回路358の複数のインスタンスを含むことができる及び同様に複数の外部メモリ352を含むこともできる。メモリ352は、動的ランダムアクセスメモリDRAM、同期DRAMSDRAM、ダブルデータレートDDR、DDR2、DDR3など、SDRAMmDDR3などのモバイル版SDRAM、及び/又はLPDDR2などの低電力版SDRAMを含む、RAMBUSDRAMRDRAM、静的RAMSRAMなどのいずれの種類のメモリであってもよい。1又はそれ以上のメモリ素子を回路基板上に結合して、シングルインラインメモリモジュールSIMM、デュアルインラインメモリモジュールDIMMなどのメモリモジュールを形成することができる。或いは、これらの素子を、集積回路358にチップオンチップ構成、パッケージオンパッケージ構成、又はマルチチップモジュール構成で装着することもできる。周辺機器354は、システム350の種類に応じてあらゆる所望の回路を含むことができる。例えば、1つの実施形態では、システム350を携帯情報端末PDA、スマートフォンなどのモバイル装置とすることができ、周辺機器354が、WiFi、ブルートゥース、セルラー、全地球測位システムなどの様々な種類の無線通信用の装置を含むことができる。周辺機器354は、RAM記憶装置、固体記憶装置又はディスク記憶装置を含む追加の記憶装置を含むこともできる。周辺機器354は、タッチディスプレイ画面又はマルチタッチディスプレイ画面を含むディスプレイ画面、キーボード又はその他の入力装置、マイク、スピーカ、などのユーザインターフェイス装置を含むことができる。他の実施形態では、システム350が、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップなどのいずれの種類のコンピュータシステムであってもよい。上記の開示を完全に理解すると、当業者には数多くの変形例及び修正例が明らかになるであろう。以下の特許請求の範囲は、全てのこのような変形例及び修正例を含むものとして解釈されることを意図している。