(57)【要約】  キャッシュコントローラが、キャッシュメモリ内のいくつかのキャッシュセットに対するあらゆるメモリ位置スワップ動作の後に更新し、N-1メモリ位置スワップ動作ごとにリセットする、第1のレジスタを含む。Nは、そのキャッシュメモリ内のキャッシュセットの数である。そのメモリコントローラはまた、あらゆるN-1メモリ位置スワップ動作の後に更新し、(N2-N)メモリ位置スワップ動作ごとにリセットする、第2のレジスタを有する。第1のおよび第2のレジスタが、キャッシュセットの論理的位置と物理的位置との関係を追跡する。
2016507847.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリのウェアレベリングのための方法であって、
前記キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにキャッシュセットに対する複数のメモリ位置スワップ動作を実行することによって前記キャッシュメモリの前記キャッシュセットを動的に循環させるステップであって、各スワップ動作が、他のキャッシュセットのメモリ内容はそのままにしながら、スワップされたキャッシュセットのみの内容を消去するステップを含む、ステップと、
前記スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するステップと
を含む、方法。
【請求項２】
前記キャッシュセットを動的に循環させるステップがさらに、
グローバルカウンタで前記キャッシュメモリへのメモリ書込み動作の数を数えるステップと、
前記グローバルカウンタが前記閾値に達するときに前記複数のメモリ位置スワップ動作を起動させるステップと、
前記グローバルカウンタをリセットするステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記キャッシュセットを動的に循環させるステップが、
Nが前記キャッシュメモリ内の前記キャッシュセットの数であり、スワップレジスタ(SwapReg)を(前記SwapReg+1)mod(N-1)にセットするステップと、
前記SwapRegがゼロであるときにシフトレジスタ(ShiftReg)を(前記ShiftReg+1)mod Nにセットするステップと
を含む、請求項2に記載の方法。
【請求項４】
前記キャッシュメモリへの各メモリ書込み動作についてグローバルカウンタの値を増やすことによって前記グローバルカウンタで前記キャッシュメモリへのメモリ書込み動作の数を数えるステップと、
前記グローバルカウンタが閾値に等しいときに、前記スワップされたキャッシュセットを再マップするステップを含むスワップ動作を実行し、スワップカウンタの値を増やすステップと、
Nが前記キャッシュメモリ内の前記キャッシュセットの数であり、スワップカウンタ値がN-1に等しいときに、シフトカウンタの値を増やし、前記スワップカウンタ値をリセットするステップと、
シフトカウンタ値がNに等しいときに、前記シフトカウンタをリセットするステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記スワップされたキャッシュセットを再マップするステップが、
書き戻しバッファに前記スワップされたキャッシュセット内の汚染データを記憶するステップと、
前記スワップされたキャッシュセット内の他のデータを無効にするステップと
を含む、請求項4に記載の方法。
【請求項６】
入力キャッシュセット数を出力キャッシュセット数に変換するステップが、
入力論理セット数が前記スワップカウンタ値に等しいときに出力物理セット数を前記シフトカウンタ値にセットするステップと、
前記入力論理セット数が前記スワップカウンタ値より大きいときに前記出力物理セット数を(前記入力論理セット数+前記シフトカウンタ値)modulo Nにセットするステップと、
前記入力論理セット数が前記スワップカウンタ値より小さいときに前記出力物理セット数を(前記入力論理セット数+前記シフトカウンタ値+1)modulo Nにセットするステップと
を含む、請求項4に記載の方法。
【請求項７】
前記スワップされたキャッシュセットを追跡するステップが、
入力物理セット数が前記シフトカウンタ値に等しいときに出力論理セット数を前記スワップカウンタ値にセットするステップと、
(前記入力物理セット数-前記シフトカウンタ値)modulo Nが前記スワップカウンタ値より大きいときに前記出力論理セット数を(前記入力物理セット数-前記シフトカウンタ値)modulo Nにセットするステップと、
その他の場合に、前記出力論理セット数を(前記入力物理セット数-前記シフトカウンタ値-1)modulo Nにセットするステップと
を含む、請求項4に記載の方法。
【請求項８】
前記キャッシュメモリを携帯電話、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンタテイメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または定位置データユニットに統合するステップをさらに含む、請求項1に記載の方法。
【請求項９】
キャッシュメモリの複数のキャッシュセットに対する各メモリ位置スワップ動作の後に更新し、各N-1メモリ位置スワップ動作でリセットする、Nが前記キャッシュメモリ内のキャッシュセットの数である、第1のレジスタと、
前記キャッシュメモリの前記複数のキャッシュセットに対するあらゆるN-1メモリ位置スワップ動作の後に更新し、(N2-N)メモリ位置スワップ動作ごとにリセットする、第2のレジスタと
を備え、前記第1のレジスタおよび前記第2のレジスタが、前記キャッシュセットの論理的位置と物理的位置との関係を追跡する、キャッシュコントローラ。
【請求項１０】
2つのメモリ位置を動的にスワップすることと、前記第1のレジスタおよび前記第2のレジスタを使用し、前記キャッシュセットの前記スワップ動作を追跡して論理キャッシュセット数を物理キャッシュセット数に変換することとを行うように動作可能な、請求項9に記載のキャッシュコントローラ。
【請求項１１】
前記第1のレジスタが、メモリスワップ動作が実行されるときに(SwapReg+1)mod(N-1)にセットされるスワップレジスタ(SwapReg)である、請求項9に記載のキャッシュコントローラ。
【請求項１２】
前記第2のレジスタが、前記SwapRegがゼロに等しいときに(ShiftReg+1)mod Nにセットされるシフトレジスタ(ShiftReg)である、請求項11に記載のキャッシュコントローラ。
【請求項１３】
前記第1のレジスタが、メモリスワップ動作が実行されるときに(SwapReg+1)mod(N-1)にセットされるスワップレジスタ(SwapReg)であり、
前記第2のレジスタが、前記SwapRegがゼロに等しいときに(ShiftReg+1)mod Nにセットされるシフトレジスタ(ShiftReg)である、請求項9に記載のキャッシュコントローラ。
【請求項１４】
前記キャッシュコントローラが、2つのメモリ位置を動的にスワップすることと、前記SwapRegおよび前記ShiftRegを使用し、前記キャッシュセットの前記スワップ動作を追跡して論理キャッシュセット数を物理キャッシュセット数に変換することとを行うように動作可能な、請求項13に記載のキャッシュコントローラ。
【請求項１５】
前記キャッシュコントローラが、書込みカウンタレジスタが閾値に等しいときに前記メモリ位置スワップ動作を起動させるように動作可能な、請求項9に記載のキャッシュコントローラ。
【請求項１６】
携帯電話、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンタテイメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または定位置データユニットに統合された、請求項9に記載のキャッシュコントローラ。
【請求項１７】
キャッシュメモリのウェアレベリングのためのキャッシュコントローラであって、
前記キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにキャッシュセットに対する複数のメモリ位置スワップ動作を実行することによって前記キャッシュメモリの前記キャッシュセットを動的に循環させるための手段であって、各スワップ動作が、他のキャッシュセットのメモリ内容はそのままにしながら、スワップされたキャッシュセットのみの内容を消去するステップを含む、手段と、
前記スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するための手段と
を備える、キャッシュコントローラ。
【請求項１８】
携帯電話、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンタテイメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または定位置データユニットに統合された、請求項17に記載のキャッシュコントローラ。
【請求項１９】
キャッシュメモリのウェアレベリングのための方法であって、
前記キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにキャッシュセットに対する複数のメモリ位置スワップ動作を実行することによって前記キャッシュメモリの前記キャッシュセットを動的に循環させるステップであって、各スワップ動作が、他のキャッシュセットのメモリ内容はそのままにしながら、スワップされたキャッシュセットのみの内容を消去するステップを含む、ステップと、
前記スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するステップと
を含む、方法。
【請求項２０】
前記キャッシュメモリを携帯電話、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンタテイメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または定位置データユニットに統合するステップをさらに含む、請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、メモリおよびキャッシュに関する。より詳細には、本開示は、限定的書込み耐久性を有するキャッシュのためのセット間ウェアレベリングに関する。
【背景技術】
【０００２】
ワイヤレス通信または他の適用例のために使用され得る高速デジタル電子工学では、不揮発性メモリが使用される。しかし、抵抗ランダムアクセスメモリ(ReRAM)および相変化ランダムアクセスメモリ(PCRAM)などの不揮発性メモリは、限定的書込み耐久性を有する。書込み耐久性は、記憶媒体が信頼を欠く前に1ブロックのメモリに適用することができるプログラム/周期の数として定義することができ、通常は、どのくらいの頻度でどの程度徹底的にそのメモリが使用されるかを予測することによって、計算される。言い換えれば、書込み耐久性は、ある種の記憶媒体の耐用年数を測定する。
【０００３】
ウェアレベリングは、記憶媒体の書込み耐久性(たとえば、耐用年数)を長くするために使用される技法であり、キャッシュ設計の一部である。1つのウェアレベリング手法は、リライトが記憶媒体全体に均等に分散されるように、データを配列する。この方法では、書込み周期の高度の集中によりブロックは1つも故障しない。ウェアレベリングの他の手法は、書込みが生じるたびにマップを動的に更新するステップを含むことがあり、そのマップは、続いて、書き込まれたブロックを新しいブロックにリンクする。別の手法は、ブロックを、置き換えることなしに静的に同じに保つが、それらが他のデータによって使用され得るように、定期的にブロックを循環させる。
【０００４】
不揮発性メモリ(たとえば、コンピュータのメインメモリで使用することもできる)のためのウェアレベリングは、よく知られており、よく検討される。しかしながら、オンチップキャッシュのためにウェアレベリングを使用するとき、不揮発性メモリのために通常使用される従来のウェアレベリング手法は、過剰な性能オーバヘッドを示す。したがって、高性能オーバヘッドは、限定的書込み耐久性を有するキャッシュのためのウェアレベリング技法の有効性を抑制する。
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示の一態様によれば、キャッシュメモリのセット間ウェアレベリングのためのキャッシュコントローラが説明される。本キャッシュコントローラは、キャッシュメモリのキャッシュセットに対する各メモリ位置スワップ動作の後に更新する、および各N-1メモリ位置スワップ動作でリセットする、第1のレジスタを含む。Nは、そのキャッシュメモリ内のキャッシュセットの数である。キャッシュコントローラは、キャッシュメモリのキャッシュセットに対するあらゆるN-1メモリ位置スワップ動作の後に更新する、および(N2-N)メモリ位置スワップ動作ごとにリセットする、第2のレジスタをさらに含む。第1のレジスタおよび第2のレジスタは、キャッシュセットの論理的位置と物理的位置との関係を追跡することができる。
【０００６】
本開示の別の態様によれば、キャッシュメモリのセット間ウェアレベリングのための方法が、説明される。本方法は、キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにそのキャッシュセットに対するメモリ位置スワップ動作を実行することによってキャッシュメモリのキャッシュセットを動的に循環させるステップを含む。各スワップ動作は、他のキャッシュセットのメモリ内容はそのままにしながら、スワップされたキャッシュセットのみの内容を消去するステップを含み得る。本方法は、スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するステップも含む。
【０００７】
本開示のさらなる態様によれば、キャッシュメモリのセット間ウェアレベリングのためのキャッシュコントローラが、説明される。本キャッシュコントローラは、キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにそのキャッシュセットに対するメモリ位置スワップ動作を実行することによってキャッシュメモリのキャッシュセットを動的に循環させるための手段を含む。各スワップ動作は、他のキャッシュセットのメモリ内容はそのままにしながら、スワップされたキャッシュセットのみの内容を消去するステップを含み得る。本キャッシュコントローラはさらに、スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するための手段を含む。
【０００８】
本開示の別の態様によれば、キャッシュメモリのセット間ウェアレベリングのための方法が説明される。本方法は、キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにそのキャッシュセットに対するメモリ位置スワップ動作を実行することによってキャッシュメモリのキャッシュセットを動的に循環させるステップを含む。各スワップ動作は、他のキャッシュセットのメモリ内容はそのままにしながら、スワップされたキャッシュセットのみの内容を消去するステップを含み得る。本方法はまた、スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するステップを含む。
【０００９】
これは、以下に続く詳細な説明がよりよく理解され得るように、本開示の特徴および技術的利点をかなり大まかに概説した。本開示の追加の特徴および利点が、以下に説明されることになる。本開示は、本開示と同じ目的を実行するための他の構造を修正または設計するための基礎として容易に使用され得ることが、当業者には理解されよう。そのような同等の構造は、添付の特許請求の範囲に記載されるものとしての本開示の教示を逸脱しないこともまた、当業者には理解されよう。さらなる目的および利点とともに、それの編成と動作の方法との両方に関して、本開示の特色であると考えられる、新しい特徴は、添付の図面に関連して考えられるときに、次の説明からよりよく理解されよう。しかし、各々の図面は例示および説明のみを目的として提供され、本開示の制限の定義として意図されていないことを明確に理解されたい。
【００１０】
本開示のより完全な理解のために、添付の図面とともに次の説明がここで参照される。
【図面の簡単な説明】
【００１１】
【図１】本開示の一態様によるキャッシュメモリのウェアレベリングのためのキャッシュコントローラを含む例示的キャッシュメモリの図である。
【図２】本開示の一態様によるウェアレベリングのための例示的循環を示す図である。
【図３】本開示の一態様によるウェアレベリングの動作を示す論理フローチャートである。
【図４】本開示の一態様によるウェアレベリングの動作を示す論理フローチャートである。
【図５】本開示の一態様によるウェアレベリングのための方法を示すプロセスフローチャートである。
【図６】本開示の一態様によるウェアレベリングのための方法を示すプロセスフローチャートである。
【図７】本開示の構成が有利に使用され得る例示的ワイヤレス通信システムを示すブロック図である。
【図８】一構成による半導体構成要素の回路、レイアウト、および論理設計のために使用される設計ワークステーションを示すブロック図である。
【発明を実施するための形態】
【００１２】
添付の図面に関連して、以下に記載される詳細な説明は、様々な構成の説明として意図されており、本明細書に記載された概念が実施され得る唯一の構成を表すものではない。その詳細な説明は、様々な概念の完全な理解を実現することを目的として特定の詳細を含む。しかし、これらの概念はこれらの特定の詳細なしに実施され得ることが、当業者には明らかであろう。ある場合には、よく知れられている構造体および構成要素は、そのような概念を不明瞭にすることを避けるために、ブロック図の形で示される。本明細書では、「および/または」という用語は、「包括的なOR」を表すものであり、「または」という用語は「排他的OR」を表すものである。
【００１３】
静的ランダムアクセス(SRAM)および組込み型ダイナミックRAM(eDRAM)などのメモリは、最新のマイクロプロセッサでのオンチップキャッシュ設計のために一般に使用される。最新のコンピュータおよびデバイスはまた、より大きいオンチップキャッシュを指定するが、従来のSRAMまたはeDRAMキャッシュのスケーラビリティは、漏れ電力およびセル密度などの技術的制限によって、益々制約されている。近年、たとえば、相変化ランダムアクセスメモリ(RAM)、スピントルクトランスファーRAM、および抵抗RAMなどの新しい不揮発性メモリ(NVM)技術が、オンチップキャッシュのために使用されることになる有望な代替メモリ技術として検討されている。SRAMおよびeDRAMなどの従来のメモリと比較して、これらの新生の不揮発性メモリ技術は、高密度、低待機電力、低電圧、より優れたスケーラビリティおよび不揮発性の共通の利点を有する。しかし、それらの導入は、それらの限定的な書込み耐久性によって阻まれている。既存のキャッシュ管理ポリシは書込み変動を意識していないため、この問題は、キャッシュブロックでのアンバランスな書込みトラフィックをもたらす既存のキャッシュ管理ポリシによって増幅されることになる。これらのポリシは、元々、SRAMキャッシュのために設計され、キャッシュブロックへの書込みに関して重大な不均一性をもたらし、大量に書き込まれるキャッシュブロックを多くの他のブロックより遥かに速くまたは早期に故障させる。
【００１４】
多数のウェアレベリング技法が、不揮発性メモリ技術の有効期間を延長するために提案されたが、キャッシュとメインメモリの動作機構の差により、不揮発性メモリのための既存のウェアレベリング技法は不揮発性キャッシュに適さない。これらの問題に対処し、セット間書込み変動を低減するために、スワップシフト方式が、不揮発性メモリキャッシュのキャッシュセット間書込み変動を低減するために提供される。本方式は、1つのグローバルカウンタおよび2つのグローバルレジスタのみを使用し、非常に小さいハードウェアオーバヘッドを有する。本方式を適用することによって、低レベルオンチップ不揮発性メモリキャッシュの有効期間を改善することができる。
【００１５】
書込み変動は、限定的書込み耐久性を有する不揮発性メモリを使用する任意のキャッシュまたはメモリサブシステムの設計における重大な関心事である。たとえ大多数のセルが決して摩耗していないときでも、最悪の場合の書込みトラフィックを経験するメモリセルの小さいサブセットのみが、故障したキャッシュまたはメモリサブシステムをもたらし得るので、大きな書込み変動は、製品有効期間を大いに劣化させ得る。
【００１６】
図1は、本開示の一態様によるキャッシュメモリ100のセット間ウェアレベリングのためのキャッシュコントローラ140を含む例示的キャッシュメモリ100の図である。キャッシュメモリ100は、ページ数102、セット数104、バイト数106、キャッシュウェイ108、タグ部分110、データ部分112、キャッシュブロック114、キャッシュセット116、タグセンス増幅器118a、データセンス増幅器118b、タグ出力120、コンパレータ122、論理ゲート124、キャッシュグループ126、選択回路128およびワード出力130を含む。
【００１７】
キャッシュメモリ100内のアドレスは、ページ数102、セット数104およびバイト数106を含み得る。一実装形態で、ページ数102は、仮想ページ数でもよい。セット数104は、キャッシュセット116のうちの1つに対応する。キャッシュブロック114は、タグ部分110およびデータ部分112を含む。タグ部分110は、データ部分112内の実体データのアドレスの部分、またはデータ部分112内のデータを見つけるための他の識別情報を含み得る。データ部分112は、実体データを含む。キャッシュセット116のうちの1つは、図1の水平のグループ分けによって見ることができるような、1セットのキャッシュブロック114である。キャッシュウェイ108は、図1で見ることができるように、キャッシュブロック114の別のグループであるが、垂直のグループ分けにある。タグセンス増幅器118aおよびデータセンス増幅器118bは、データが出力するときに適切に解釈される(1または0として)ように、キャッシュ入力から論理レベルを感知する。
【００１８】
タグセンス増幅器118aの出力である、タグ出力120でのデータは、ページ枠番号、有効ビットおよびコヒーレンスビットを含み得る。タグ出力120からのデータは、次いで、その2つの値が等しいかどうかを確かめるコンパレータ122によってページ数102と比較される。それらの値が等しく、ヒットがある場合、次いで、コンパレータ122の出力が、論理ゲート124に、データセンス増幅器118bの出力とともに、入力される。論理ゲート124の出力がキャッシュグループ126内に現われる。一実装形態で、キャッシュグループ126のうちの1つは、複数のワードを含む。キャッシュグループ126は、選択入力としてバイト数106を使用する選択回路128に入力される。選択入力としてバイト数106を使用する選択回路128の出力は、ワード出力130である。
【００１９】
図1はまた、nウェイセットアソシエイティブキャッシュのための例示的ブロック図であり、本開示のために使用される他のタイプのキャッシュが存在し得る。セットアソシエイティブキャッシュは、並行して動作させられるいくつかの直接マップされたキャッシュで構成され得る(たとえば、1つの直接マップされたキャッシュは、タグ部分110およびデータ部分112を含むキャッシュ入力でもよい)。読み取られたデータは、ページ数102ならびにブロック有効ビット(タグまたはメタデータ入力の部分でもよい)およびページ許可(ページ数102の部分)とのタグ比較によって、制御され得る。キャッシュ列サイズはまた、仮想メモリページサイズと同等でもよく、キャッシュインデックスは、ページ数102または仮想ページ数からピットを使用しなくてもよい。
【００２０】
キャッシュブロック114の個々のキャッシュブロックは、一方向のキャッシュセット116のうちの1つに、そして別の方向のキャッシュウェイ108にグループ分けされる。キャッシュブロック114はまた、どのくらいの頻度でそれらが書き込まれるかに応じて、負荷分散を有し得る。キャッシュブロック114のうちのいくつかは、大量に書き込まれ、キャッシュブロック114のうちの他のキャッシュブロックは、稀に書き込まれる。したがって、これは、セット間書込み変動を引き起こす。セット間書込み変動は、書込み活動に関して異なるキャッシュセット116の間で生じる。すなわち、キャッシュセット116のうちの1つからのキャッシュブロック114は、キャッシュセット116のうちの別のキャッシュセットからのキャッシュブロック114より多くまたは少なく書き込まれ得る。さらに、異なるキャッシュセット116が、キャッシュセット116の他と比べて全体として書き込まれるとき、セット間書込み変動がやはり生じる。
【００２１】
本構成で、キャッシュコントローラ140は、キャッシュウェイ108の異なる行におよび異なる列に書込みトラフィックを均等に分散する。図1では、キャッシュウェイ108は列を占有するものとして示され、キャッシュセット116は行を占有するものとして示されるが、キャッシュメモリ100の実装形態はこの構成に限定されない。具体的には、キャッシュウェイ108は、行、またはキャッシュメモリ100内の列でなくてもよい他の構造を占有することがあり、そして、キャッシュセット116は、列、またはキャッシュメモリ100内の行でなくてもよい他の構造を占有することがある。
【００２２】
メインメモリウェアレベリング技法は、通常、データ移動を使用してアドレス再マッピングを実装する。これは、メインメモリで、データは失われ得ず、各再マッピングの後に新しい位置に動かすことができるためである。しかしながら、データ移動動作は、常に、エリアおよび性能オーバヘッドを被る。第1に、データ移動は、データを受信するために、一時データ記憶位置を必要とする。第2に、1つのキャッシュセット移動は、いくつかのブロック読取りおよび書込み動作を伴う。したがって、キャッシュポートはデータ移動中に遮断され、システム性能は、結果として、低下させられる。1つの例示的データ移動方式がメインメモリから拡張されてメモリキャッシュに適用されるとき、1つの追加のキャッシュセット(ギャップセット)が追加され、1つのセットからギャップセットへのデータが、定期的に移動させられる。キャッシュ技法は、より性能の影響を受けるので、メインメモリウェアレベリング技法は、直接使用することはできない。したがって、データ移動の使用は、キャッシュセット間ウェアレベリング技法を設計するときに、再考され得る。
【００２３】
不揮発性メモリキャッシュのセットアドレス再マッピングを実装するための別のオプションは、データ無効化を実行することである。キャッシュ内のデータはより低レベルのメモリから後で再びリードバックされ得るので、キャッシュライン無効化が使用され得る。キャッシュのこの特別な特徴は、キャッシュセット間ウェアレベリング技法の設計のための新たな好機を提供する。
【００２４】
データ移動と比べて、無効化は、エリアオーバヘッドを被らない。したがって、本開示の一態様は、スワップシフトウェアレベリング方式を使用して、不揮発性メモリキャッシュでのセット間書込み変動を低減するために、無効化を使用することによって、以前のメインメモリウェアレベリング技法を修正し、それらを強化する。
【００２５】
不揮発性メインメモリのための既存のウェアレベリング技法と対照的に、スワップシフト方式は、不揮発性メモリキャッシュのために設計される。スワップシフト方式は、エリアオーバヘッドと性能オーバヘッドの両方を減らすために、セットアドレスマッピングを変更するときにデータ移動の代わりにデータ無効化を使用する。
【００２６】
スワップシフト方式の一構成は、キャッシュ物理セットのマッピングをシフトさせて、セット間で記憶されたデータを循環させる。しかしながら、一度にすべてのキャッシュセットをシフトさせることは、大きな性能オーバヘッドをもたらす。この問題を解決するために、キャッシュコントローラ140のスワップシフト方式は、一度に2つのセットのマッピングのみをスワップし、すべてのキャッシュセットは、完全なスワップ循環の後に1ステップによりシフトされ得る。
【００２７】
本構成で、キャッシュコントローラ140は、変数名「numWrite」によって示されるキャッシュへのメモリ書込み動作の数を記憶するためにスワップシフト方式で使用されるグローバルカウンタ142を含む。キャッシュコントローラ140はまた、現在のスワッピング値を記憶するために使用されるスワップレジスタ144(SwapReg)を含む。SwapRegは、最初に0にセットされ、周期的に0からN-1に変更され、Nはキャッシュ内のセットの数である。キャッシュコントローラ140はさらに、現在のシフト値を記憶するシフトレジスタ146(ShiftReg)を含む。ShiftRegは、0からNに周期的に変更される。これらの2つの値、SwapRegおよびShiftRegは、シフト-スワップ方式における2つのタイプの循環、スワップ循環およびシフト循環、を制御するためにキャッシュコントローラ140によって使用される。
【００２８】
第1に、スワップ循環が説明される。numWriteが特定の所定の閾値(「閾値」)に等しいとき、SwapRegは値を1増やされ、そして、SwapRegがN-1ステップによって移動されるとき、1つのスワップ循環が生じる。したがって、1つのスワップ循環は、N-1スワップで構成される。
【００２９】
第2に、シフト循環が説明される。ShiftRegは、各スワップ循環の後に値を1増やされ、そして、ShiftRegがNステップによって移動されるときに、1つのシフト循環が生じる。したがって、各シフト循環は、Nスワップ循環で構成される。
【００３０】
図2は、本開示の一態様によるウェアレベリングのための例示的循環を示す図200である。図200は、キャッシュ構造体202と、循環ボックス204、206、208、210、212、214、216および218のセットとを含む。簡潔性を目的として、キャッシュ構造体202は、キャッシュセット202a、202b、202cおよび202dのグループを有するものとして表されるが、キャッシュ構造体202は、キャッシュブロック114、キャッシュウェイ108またはキャッシュセット116を含む任意の構造体であり、キャッシュメモリ100自体の全体を含み得る。キャッシュ構造体202のキャッシュセットまたは副構造体の数は4つに限定されないが、第1のキャッシュセット202a、第2のキャッシュセット202b、第3のキャッシュセット202cおよび第4のキャッシュセット202dは、図200の循環例のために示される例示的キャッシュセットである。循環プロセスが、ここで説明される。
【００３１】
循環ボックス204で、キャッシュ構造体202は、初期位置にあり、「0」のラベルを付された第1のキャッシュセット202a、「1」のラベルを付された第2のキャッシュセット202b、「2」のラベルを付された第3のキャッシュセット202c、および「3」のラベルを付された第4のキャッシュセットを伴っている。キャッシュセット202a、202b、202cおよび202dの各々の中に記憶されたデータもまた存在し得る。SwapRegカウンタは、キャッシュセットがスワップされた回数を数える。そのカウンタは、0に初期化され得る。ShiftRegカウンタは、全部のキャッシュ構造体202が位置をシフトされた(キャッシュ構造体202内のすべてのキャッシュセットが1つの位置を移動されたという点で)回数を数え、同様に初期化し、0にセットすることができる。循環のための従来の手法は、一時ブロックを使用し、時間とともにすべてのキャッシュセットまたはキャッシュ構造体を消去する。しかしながら、図200に示す実装形態では、一時ブロックは使用されず、キャッシュセットのデータ内容は削除またはフラッシュされない。データは実際にはスワップされず、同じ位置または位置に保持されるので、これは真である。キャッシュセットの位置のみがスワップされ、スワップされたキャッシュセットのみの内容が消去され、すべての他のキャッシュセットの内容は変わらないままにされる。各々のキャッシュセットもまた、それらの新しい位置に移動され、新しいデータが、データを移動させる必要なしに、新しいキャッシュセットに自動ロードされる。やはり、スワップされる唯一のものは、キャッシュセットの位置である。すべてが、実際にデータを移動させるのではなくて、スワップ動作で行われる。
【００３２】
循環ボックス206で、第1のキャッシュセット202a(0)の位置が、第2のキャッシュセット202b(1)の位置とスワップされる。結果として、第2のキャッシュセット202b(1)は、ここで、本当に最初のまたは最上のキャッシュセットであり、第1のキャッシュセット202a(0)は、第1のキャッシュセット202a(0)の次または下の、第2のキャッシュセットになる。一実装形態で、このスワップが生じた後は、新しいデータが、それらの新しい位置で一度新しいキャッシュセットに自動リロードされることになる。一実装形態では、キャッシュセットがスワップされた後は、新しいデータがそのキャッシュセットに自動リロードされないように、スワップされたキャッシュセットは、それらのデータを保持することになる。キャッシュセットがスワップされた回数を数えるSwapRegカウンタはまた、値を1増やされ得る。循環ボックス208で、第1のキャッシュセット202a(0)の位置(ここでは第2の位置で、第2のキャッシュセット202b(1)の前の位置)が、第3のキャッシュセット202c(2)の位置とスワップされる。ここで、第3のキャッシュセット202c(2)は第2の位置(第2のキャッシュセット202b(1)の元の位置)になり、第1のキャッシュセット202a(0)は第3の位置(第3のキャッシュセット202c(2)の元の位置)になる。SwapRegカウンタは、次いで、再び値を1増やされ得る。
【００３３】
循環ボックス210で、第1のキャッシュセット202a(0)の位置(ここでは第3の位置にある、第3のキャッシュセット202c(2)の前の位置)が、第4のキャッシュセット202d(3)の位置とスワップされる。ここで、第4のキャッシュセット202d(3)は、第3の位置(第3のキャッシュセット202c(2)の元の位置)になり、そして、第1のキャッシュセット202a(0)は第4の位置(第4のキャッシュセット202d(3)の元の位置)になる。すべてのキャッシュセットがシフトされたので、SwapRegカウンタは、次いで、初期化することができ、そして、3回のスワッピングの後に、キャッシュ構造体202内のすべてのレジスタが1つの位置ずつシフトされたので、ShiftRegカウンタが値を増やされる。
【００３４】
続けて循環ボックス212では、第2のキャッシュセット202b(1)の位置が、第3のキャッシュセット202c(2)の位置とスワップされる。ここで、第2のキャッシュセット202b(1)は第2の位置(第3のキャッシュセット202c(2)の元の位置)になり、第3のキャッシュセット202c(2)は第1の位置(第2のキャッシュセット202b(1)の元の位置)になる。SwapRegカウンタはやはり、値を1増やされる。循環ボックス214で、第2のキャッシュセット202b(1)の位置が、第4のキャッシュセット202d(3)の位置とスワップされる。ここで、第4のキャッシュセット202d(3)は第2の位置(第2のキャッシュセット202b(1)の元の位置)になり、そして、第4のキャッシュセット202d(3)は第2の位置(第2のキャッシュセット202b(1)の元の位置)になる。SwapRegカウンタはやはり、値を1増やされる。循環ボックス216で、第2のキャッシュセット202b(1)の位置が、第1のキャッシュセット202a(0)の位置とスワップされる。ここで、第2のキャッシュセット202b(1)は、第4の位置(第1のキャッシュセット202a(0)の元の位置)になり、そして、第1のキャッシュセット202a(0)は第3の位置(第2のキャッシュセット202b(1)の元の位置)になる。SwapRegカウンタは、次いで、初期化され、そして、別の3回のスワッピングの後に、キャッシュ構造体202内のすべてのレジスタが2つの位置だけシフトされたので、ShiftRegカウンタは、値を1増やす。
【００３５】
一実装形態で、すべてがスワップ動作によって行われるので、全キャッシュの内容はフラッシュされない。さらに、スワップ動作は、性能低下を伴わない。スワップ動作を使用してスワッピングを実行することによって、「シフトアップ」動作および/または追跡は生じない。一実装形態で、データはスワップされず、単に位置、およびデータが、次いで、新しいスワップされた位置にリロードされる。一実装形態で、無効なキャッシュセットなど、未使用の位置のデータは、単純に破棄される。一実装形態で、1つのスワップについて、SwapRegカウンタ位置(たとえば、キャッシュレジスタ[SwapReg])に対応するキャッシュセットの内容と、SwapRegカウンタ足す1(たとえば、キャッシュレジスタ[SwapReg+1])に対応するキャッシュセットの内容とが、破棄され得る。次いで、それらの物理的位置がスワップされる。Nがキャッシュ構造体内のキャッシュセットの数であり、N-1スワップの後、キャッシュ構造体(各々のキャッシュセット)内のすべての物理的位置が、すべて1ずつシフトされる。
【００３６】
一実装形態で、SwapRegおよびShiftRegカウンタは、図1に示すように、データを記憶するためのキャッシュコントローラ140のスワップレジスタ144およびシフトレジスタ146として実装することができる。この場合、レジスタは、それらのそれぞれのカウンタの値を記録するある種の数値データとして実装される。
【００３７】
図3は、本開示の一態様によるキャッシュメモリのウェアレベリングのためのキャッシュコントローラの動作を示す論理フローチャート300である。図3は、ShiftRegおよびSwapRegカウンタが書込み活動に関してウェアレベリングシステムでどのように更新されるかを示す。ブロック302で、キャッシュ書込みがあったかどうかが、判定される。キャッシュ書込みがあった場合、次いで、ブロック304で、「numWrite」として知られるキャッシュ書込みカウンタが値を1増やされる。キャッシュ書込みがなかった場合、本プロセスは、ブロック302の前に戻る。numWriteカウンタはまた、いつスワップするかをトリガする。キャッシュセットのスワップを起動するためにいくつの書込みが十分であるかを判定する何らかの所定の閾値もまた存在する。たとえば、ブロック306で、numWriteカウンタが所定の閾値に等しいかどうかが判定される。そうである場合、次いでブロック308で、numWriteカウンタをゼロ値に更新し、SwapRegカウンタを(SwapReg+1)mod(N-1)の値に更新して、スワップが起動される。modはモジュロ演算子であり、Nは選択されたキャッシュ構造体内のキャッシュセットの総数である。ブロック306で、numWriteカウンタが所定の閾値に等しくない場合、次いで、プロセスはブロック304に戻る。ブロック310で、SwapRegカウンタがゼロに等しいかどうかが判定される。そうである場合、次いでブロック312で、ShiftRegカウンタが、(ShiftReg+1)mod Nの値に更新される。これは、全キャッシュ構造体を1ずつシフトさせる。ブロック310で、SwapRegカウンタの値がゼロに等しくない場合、次いで、プロセスはブロック308に戻る。
【００３８】
図3はまた、次の疑似コードによって表すことができる:
If (キャッシュ書込みがある),
then:  numWrite++;
If (numWrite == 閾値),
then: numWrite = 0;
then: SwapReg = (SwapReg + 1) mod (N-1);
if (SwapReg ==0),
then: ShiftReg = (ShiftReg + 1) mod (N).
【００３９】
図4は、本開示の一態様によるキャッシュメモリのウェアレベリングのためのキャッシュコントローラの動作を示す論理フローチャート400である。図4は、書込みの数を表すnumWriteカウンタを記憶するグローバルカウンタ404を示し、各書込みはキャッシュ書込みアクション402によって表される。SwapRegカウンタ(「SwapReg」として反映される)およびShiftRegカウンタ(「ShiftReg」として表現される)が、SwapRegおよびShiftReg値をそれぞれ記憶するためのデータレジスタとして実装され得る。
【００４０】
図3に関して説明したように、キャッシュ書込み402が存在する場合、次いで、グローバルカウンタ404が増やされる。406でグローバルカウンタが所定の閾値に等しい場合、ブロック408で、SwapRegカウンタを(SwapReg+1)mod(N-1)の値に更新して、スワップが生じ、modはモジュロ演算子であり、Nは全キャッシュセットの数である。SwapRegがゼロである場合(410)、次いでブロック412で、ShiftRegカウンタが、(ShiftReg+1)mod Nの値に更新される。
【００４１】
論理セット(LS)数が論理セット数入力414として入るとき、物理セット(PS)数が、3つの異なる状況に基づいて物理セット数出力418として計算され得る。
【００４２】
第1に、論理ボックス416に示すように、論理セット数入力414がSwapReg値に等しい場合、それは、この論理セットがまさしく、この循環でスワップされるべきキャッシュセットであることを意味する。したがって、その物理セットが、ShiftRegの現在のシフト値にマップされ、物理セット数出力418として出力される。
【００４３】
第2に、やはり論理ボックス416に示すように、論理セット数入力414がSwapReg値より大きい場合、それは、このキャッシュセットがこの循環でシフトされず、最後の循環と同じマッピングを保持することを意味する。したがって、その物理セットは、LS+ShiftRegにマップされる。一実装形態で、そのマッピングは、(LS+ShiftReg)値を選び、N、すなわちキャッシュセットの数で、モジュロ演算を実行し、次いで、結果として生じた値を物理セットに割り当てることによって、行われる。
【００４４】
第3に、やはり論理ボックス416に示すように、論理セット数入力414がSwapReg値よりも小さい場合(else節)、それは、このキャッシュセットがこの循環でシフトされたことを意味する。したがって、物理セットは、LS+ShiftReg+1にマップされる。一実装形態で、マッピングは、(LS+ShiftReg+1)値を選び、N、すなわちキャッシュセットの数で、モジュロ演算を実行し、次いで、結果として生じた値を物理セットに割り当てることによって、行われる。
【００４５】
論理セット数出力420を計算するための物理セット入力数424を別にすれば、前述の動作と同様の3つの動作が、論理ボックス422で生じる。
【００４６】
キャッシュラインが、より低レベルのメモリに書き戻される必要があるとき、論理セットアドレスが再生成される。物理セットから論理セットへのマッピングは、対称である。このマッピング方式はまた、図2に見られるように確認することができる。SwapRegおよびShiftRegは、書込みカウントを増やすこととともに変更されるので、論理セットと物理セットの間のマッピングはいつでも変化し、異なる物理セットへの書込みのバランスがとられることを確保し、書込み変動を低減する。
【００４７】
従来のキャッシュアーキテクチャと比べて、シフト-スワップウェアレベリング方式におけるセットインデックス変換は、単純な算術演算のみを追加し、行復号器に組み込むことができる。加えて、この1周期待機時間オーバヘッドは、より低レベルのキャッシュにアクセスするより高レベルのキャッシュミスでのみ払われる。
【００４８】
図5は、本開示の一態様によるウェアレベリングのための方法を示すプロセスフローチャート500である。ブロック502で、メモリ書込み動作の数が、メモリ書込み動作ごとに1ずつグローバルカウンタの値を増やすことによって、グローバルカウンタによって数えられる。ブロック504で、グローバルカウンタが所定の閾値に等しいとき、スワップ動作が実行され、スワップカウンタが値を1だけ増やされる。また、スワップ動作の実行は、スワップされるキャッシュセットを再マップするステップを含み、このステップは、2つのスワップされるキャッシュセット内の汚染データを書き戻しバッファに置くステップと、2つのスワップされるキャッシュセット内のその他のデータを無効にするステップとを含む。
【００４９】
ブロック506で、スワップカウンタがN-1に等しいとき、シフトカウンタは値を1増やされ、スワップカウンタがゼロに戻される。Nは、そのキャッシュメモリ内のキャッシュセットの数である。ブロック508で、シフトカウンタがNに等しいとき、シフトカウンタがゼロに戻される。ブロック510で、入力キャッシュセット数が、出力キャッシュセット数に変換される。入力または出力キャッシュセット数は、論理セット数または物理セット数でもよい。
【００５０】
図6は、本開示の一態様によるウェアレベリングのための方法を示すプロセスフローチャート600である。ブロック610で、キャッシュメモリへのメモリ書込み動作の数(たとえば、numWrite)が所定の閾値に達したかどうかが判定される。そうである場合、ブロック612で、メモリ位置スワップ動作が、2つのキャッシュセットに実行される。ブロック614で、それらの2つのスワップされたキャッシュセットのうちの1つの内容が消去される。ブロック616で、スワップされた2つのキャッシュセットの他方のメモリ内容は、そのままにされる。ブロック618で、キャッシュセットのスワッピングが追跡される。ブロック620で、論理キャッシュセット数が、物理キャッシュセット数に変換される。書込み動作の数が閾値に到達していない場合、本プロセスは、ブロック610に留まる。
【００５１】
スワップシフトウェアレベリング方式で、セット間書込み変動の低減は、実験時間中のシフト循環回数に関連する。キャッシュ内にNセットがあると仮定すると、1つのシフト循環はNスワップ循環を含み、スワップシフト方式での1つのスワップ循環はN-1スワップを必要とする。各シフト循環の後、すべてのキャッシュセットが、Nステップだけシフトされ、論理セットインデックスは、それらの元の位置にマップされる。したがって、キャッシュがシフトされる回数が多いほど、書込みアクセスはより均等に各キャッシュセットに分散される。
【００５２】
本開示のさらなる態様によれば、キャッシュメモリのウェアレベリングのためのキャッシュコントローラが説明される。本キャッシュコントローラは、キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにキャッシュセットに対する複数のメモリ位置スワップ動作を実行することによってキャッシュメモリのキャッシュセットを動的に循環させるための手段を含む。各スワップ動作は、他のキャッシュセットのメモリ内容はそのままにしながら、スワップされたキャッシュセットのみの内容を消去するステップを含み得る。動的に循環させる手段は、キャッシュコントローラ140でもよい。その装置はさらに、スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するための手段を含む。その追跡手段は、キャッシュコントローラ140、グローバルカウンタ142、スワップレジスタ144、および/またはシフトレジスタ146でもよい。別の態様で、前述の手段は、任意のモジュール、または、前述の手段で挙げられた機能を実行するように構成された任意の装置でもよい。
【００５３】
図7は、本開示の一態様が有利には使用され得る例示的ワイヤレス通信システム700を示すブロック図である。説明を目的として、図7は、3つの遠隔装置720、730、および750と、2つの基地局740とを示す。ワイヤレス通信システムはさらに多数の遠隔装置および基地局を有し得ることが、理解されよう。遠隔装置720、730、および750は、開示されるキャッシュメモリを含むICデバイス725A、725C、および725Bを含む。基地局、スイッチングデバイス、およびネットワーク機器など、他のデバイスもまた、開示されるキャッシュメモリを含み得ることが、理解されよう。図7は、基地局740から遠隔装置720、730、および750への順方向リンク信号780と、遠隔装置720、730、および750から基地局740への逆方向リンク信号790とを示す。
【００５４】
図7で、遠隔装置720は、携帯電話として示され、遠隔装置730はポータブルコンピュータとして示され、遠隔装置750はワイヤレスローカルループシステム内の定位置遠隔装置として示される。たとえば、その遠隔装置は、携帯電話、ハンドヘルドパーソナル通信システム(PCS)ユニット、パーソナルデータアシスタントなどのポータブルデータユニット、グローバルポジショニングシステム(GPS)対応デバイス、ナビゲーションデバイス、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンタテイメントユニット、メータ読取り機器などの定位置データユニット、あるいは、データもしくはコンピュータ命令またはそれらの組合せを記憶または検索する他のデバイスでもよい。図7は、本開示の態様による遠隔装置を示すが、本開示は、これらの例示的な図示されたユニットに限定されない。本開示の態様は、開示されたキャッシュメモリを含む、多数のデバイスで適切に使用され得る。
【００５５】
図8は、前述で開示されたキャッシュメモリなど、半導体構成要素の回路、レイアウト、および論理設計のために使用される設計ワークステーションを示すブロック図である。設計ワークステーション800は、オペレーティングシステムソフトウェア、サポートファイル、および、CadenceまたはOrCADなどの設計ソフトウェアを含む、ハードディスク801を含む。設計ワークステーション800はまた、回路810またはキャッシュメモリなどの半導体構成要素812の設計を容易にするためのディスプレイ802を含む。記憶媒体804は、回路設計810または半導体構成要素812を実体的に記憶するために提供される。回路設計810または半導体構成要素812は、GDSIIまたはGERBERなどのファイル形式で記憶媒体804に記憶され得る。記憶媒体804は、CD-ROM、デジタル多用途ディスク(DVD)、ハードディスク、フラッシュメモリ、または他の適切なデバイスでもよい。さらに、設計ワークステーション800は、記憶媒体804から入力を受け付けるまたは記憶媒体804に出力を書き込むためのドライブ装置803を含む。
【００５６】
記憶媒体804に記録されたデータは、論理回路構成、フォトリソグラフィマスクのパターンデータ、または、電子ビームリソグラフィなどの順次書込みツールのためのマスクパターンデータを指定することができる。そのデータはさらに、タイミング図または論理シミュレーションに関連するネット回路などの論理検証データを含み得る。記憶媒体804でのデータの提供は、半導体ウエハを設計するためのプロセスの数を減らすことによって、回路設計810または半導体構成要素812の設計を容易にする。
【００５７】
ファームウェアおよび/またはソフトウェア実装について、本方法論は、本明細書に記載された機能を実行するモジュール(たとえば、手順、機能など)で実装することができる。命令を実体的に実施する機械可読媒体が、本明細書に記載された方法論の実装で使用され得る。たとえば、ソフトウェアコードは、メモリで記憶することができ、プロセッサユニットによって実行することができる。メモリは、プロセッサユニット内でまたはプロセッサユニットの外部で実装することができる。本明細書で、「メモリ」という用語は、長期、短期、揮発性、不揮発性、または他のメモリのタイプを指し、特定のタイプのメモリまたはメモリの数、あるいは、メモリが記憶される媒体のタイプに限定されるべきではない。
【００５８】
ファームウェアおよび/またはソフトウェアで実装される場合、その機能は、コンピュータ可読媒体に1つまたは複数の命令またはコードとして記憶され得る。例は、データ構造体でコード化されたコンピュータ可読媒体、および、コンピュータプログラムでコード化されたコンピュータ可読媒体を含む。コンピュータ可読媒体は、物理コンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスすることができる使用可能な媒体でもよい。例として、そして限定ではなく、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは、命令またはデータ構造体の形で所望のプログラムコードを記憶するために使用することができる、およびコンピュータによってアクセスすることができる他の媒体を含むことができ、本明細書で、ディスク(diskまたはdisc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、および、ブルーレイディスクを含み、ディスク(disk)は通常は、データを磁気的に再生し、一方、ディスク(disc)は、レーザで光学的にデータを再生する。前述の組合せもまた、コンピュータ可読媒体の範囲に含まれよう。
【００５９】
コンピュータ可読媒体での記憶に加えて、命令および/またはデータは、通信装置に含まれる送信媒体で信号として提供され得る。たとえば、通信装置は、命令およびデータを示す信号を有する送受信機を含み得る。その命令およびデータは、特許請求の範囲で概説される機能を1つまたは複数のプロセッサに実装させるように構成される。
【００６０】
本開示およびその利点が詳細に説明されたが、様々な変更、置換、および代替が、添付の特許請求の範囲によって定義されるものとしての本開示の技術を逸脱することなしに本明細書で行われ得ることを理解されたい。たとえば、「上」および「下」などの関係語が、基材または電子デバイスに関して使用される。もちろん、基材または電子デバイスが反転させられた場合、上は下になり、その逆も同様である。加えて、横向きにされた場合、上および下は、基材または電子デバイスの側面を指すことがある。さらに、本出願の範囲は、本明細書に記載されたプロセス、機械、製品、組成物、手段、方法およびステップの特定の構成に限定されるものではない。本明細書に記載された対応する構成と同じ機能を実質的に実行するまたは同じ結果を実質的に達成する、現在存在するまたは後から開発される、プロセス、機械、製品、組成物、手段、方法、またはステップは、本開示に従って使用され得ることが、本開示から当業者には容易に理解されよう。したがって、添付の特許請求の範囲は、そのようなプロセス、機械、製品、組成物、手段、方法、またはステップをその範囲に含むものとする。
【符号の説明】
【００６１】
100  キャッシュメモリ
102  ページ数
104  セット数
106  バイト数
108  キャッシュウェイ
110  タグ部分
112  データ部分
114  キャッシュブロック
116  キャッシュセット
118a  タグセンス増幅器
118b  データセンス増幅器
120  タグ出力
122  コンパレータ
124  論理ゲート
126  キャッシュグループ
128  選択回路
130  ワード出力
140  キャッシュコントローラ
142  グローバルカウンタ
144  スワップレジスタ
146  シフトレジスタ
202  キャッシュ構造体
202a  キャッシュセット
202b  キャッシュセット
202c  キャッシュセット
202d  キャッシュセット
204  循環ボックス
206  循環ボックス
208  循環ボックス
210  循環ボックス
212  循環ボックス
214  循環ボックス
216  循環ボックス
218  循環ボックス
402  キャッシュ書込みアクション
404  グローバルカウンタ
414  論理セット数入力
416  論理ボックス
418  物理セット数出力
420  論理セット数出力
422  論理ボックス
424  物理セット入力数
700  ワイヤレス通信システム
720  遠隔装置
725A  ICデバイス
725B  ICデバイス
725C  ICデバイス
730  遠隔装置
740  基地局
750  遠隔装置
780  順方向リンク信号
790  逆方向リンク信号
800  設計ワークステーション
801  ハードディスク
802  ディスプレイ
803  ドライブ装置
804  記憶媒体
810  回路
812  半導体構成要素
【図１】
2016507847.tif 000003
【図２】
2016507847.tif 000004
【図３】
2016507847.tif 000005
【図４】
2016507847.tif 000006
【図５】
2016507847.tif 000007
【図６】
2016507847.tif 000008
【図７】
2016507847.tif 000009
【図８】
2016507847.tif 000010
【手続補正書】
【提出日】平成27年2月20日(2015.2.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
オンチップの不揮発性キャッシュメモリのウェアレベリングのための方法であって、
前記キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにキャッシュセットに対する複数のメモリ位置スワップ動作を実行することによって前記オンチップの不揮発性キャッシュメモリの前記キャッシュセットを動的に循環させるステップであって、各スワップ動作が、スワップされたキャッシュセットのみの内容を消去するステップ、および、前記スワップされたキャッシュセットのメモリ位置のみをスワップすることによって他のキャッシュセットのメモリ内容はそのままにするステップを含む、ステップと、
前記スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するステップと
を含む、方法。
【請求項２】
前記キャッシュセットを動的に循環させるステップがさらに、
グローバルカウンタで前記キャッシュメモリへのメモリ書込み動作の数を数えるステップと、
前記グローバルカウンタが前記閾値に達するときに前記複数のメモリ位置スワップ動作を起動させるステップと、
前記グローバルカウンタをリセットするステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記キャッシュセットを動的に循環させるステップが、
Nが前記キャッシュメモリ内の前記キャッシュセットの数であり、スワップレジスタ(SwapReg)を(前記SwapReg+1)mod(N-1)にセットするステップと、
前記SwapRegがゼロであるときにシフトレジスタ(ShiftReg)を(前記ShiftReg+1)mod Nにセットするステップと
を含む、請求項2に記載の方法。
【請求項４】
前記キャッシュメモリへの各メモリ書込み動作についてグローバルカウンタの値を増やすことによって前記グローバルカウンタで前記キャッシュメモリへのメモリ書込み動作の数を数えるステップと、
前記グローバルカウンタが閾値に等しいときに、スワップ動作を実行し、スワップカウンタの値を増やすステップと、
Nが前記キャッシュメモリ内の前記キャッシュセットの数であり、スワップカウンタ値がN-1に等しいときに、シフトカウンタの値を増やし、前記スワップカウンタ値をリセットするステップと、
シフトカウンタ値がNに等しいときに、前記シフトカウンタをリセットするステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記スワップされたキャッシュセットのメモリ位置をスワップするステップが、
書き戻しバッファに前記スワップされたキャッシュセット内の汚染データを記憶するステップと、
前記スワップされたキャッシュセット内の他のデータを無効にするステップと
を含む、請求項1に記載の方法。
【請求項６】
入力論理セット数が前記スワップカウンタ値に等しいときに出力物理セット数を前記シフトカウンタ値にセットするステップと、
前記入力論理セット数が前記スワップカウンタ値より大きいときに前記出力物理セット数を(前記入力論理セット数+前記シフトカウンタ値)modulo Nにセットするステップと、
前記入力論理セット数が前記スワップカウンタ値より小さいときに前記出力物理セット数を(前記入力論理セット数+前記シフトカウンタ値+1)modulo Nにセットするステップと
によって、入力キャッシュセット数を出力キャッシュセット数に変換するステップをさらに含む、請求項4に記載の方法。
【請求項７】
前記スワップされたキャッシュセットを追跡するステップが、
入力物理セット数が前記シフトカウンタ値に等しいときに出力論理セット数を前記スワップカウンタ値にセットするステップと、
(前記入力物理セット数-前記シフトカウンタ値)modulo Nが前記スワップカウンタ値より大きいときに前記出力論理セット数を(前記入力物理セット数-前記シフトカウンタ値)modulo Nにセットするステップと、
その他の場合に、前記出力論理セット数を(前記入力物理セット数-前記シフトカウンタ値-1)modulo Nにセットするステップと
を含む、請求項4に記載の方法。
【請求項８】
前記キャッシュメモリを携帯電話、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンタテイメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または定位置データユニットに統合するステップをさらに含む、請求項1に記載の方法。
【請求項９】
オンチップの不揮発性キャッシュメモリの複数のキャッシュセットに対する各メモリ位置スワップ動作の後に更新し、各N-1メモリ位置スワップ動作でリセットする、Nが前記キャッシュメモリ内のキャッシュセットの数である、第1のレジスタと、
前記オンチップの不揮発性キャッシュメモリの前記複数のキャッシュセットに対するあらゆるN-1メモリ位置スワップ動作の後に更新し、(N2-N)メモリ位置スワップ動作ごとにリセットする、第2のレジスタと
を備え、前記第1のレジスタおよび前記第2のレジスタが、前記キャッシュセットの論理的位置と物理的位置との関係を追跡し、各スワップ動作が、スワップされたキャッシュセットのみの内容を消去するステップ、および、前記スワップされるキャッシュセットのメモリ位置のみをスワップすることによって他のキャッシュセットのメモリ内容はそのままにするステップを含む、キャッシュコントローラ。
【請求項１０】
2つのメモリ位置を動的にスワップすることと、前記第1のレジスタおよび前記第2のレジスタを使用し、前記キャッシュセットの前記スワップ動作を追跡して論理キャッシュセット数を物理キャッシュセット数に変換することとを行うように動作可能な、請求項9に記載のキャッシュコントローラ。
【請求項１１】
前記第1のレジスタが、メモリスワップ動作が実行されるときに(SwapReg+1)mod(N-1)にセットされるスワップレジスタ(SwapReg)である、請求項9に記載のキャッシュコントローラ。
【請求項１２】
前記第2のレジスタが、前記SwapRegがゼロに等しいときに(ShiftReg+1)mod Nにセットされるシフトレジスタ(ShiftReg)である、請求項11に記載のキャッシュコントローラ。
【請求項１３】
前記第1のレジスタが、メモリスワップ動作が実行されるときに(SwapReg+1)mod(N-1)にセットされるスワップレジスタ(SwapReg)であり、
前記第2のレジスタが、前記SwapRegがゼロに等しいときに(ShiftReg+1)mod Nにセットされるシフトレジスタ(ShiftReg)である、請求項9に記載のキャッシュコントローラ。
【請求項１４】
前記キャッシュコントローラが、2つのメモリ位置を動的にスワップすることと、前記SwapRegおよび前記ShiftRegを使用し、前記キャッシュセットの前記スワップ動作を追跡して論理キャッシュセット数を物理キャッシュセット数に変換することとを行うように動作可能な、請求項13に記載のキャッシュコントローラ。
【請求項１５】
前記キャッシュコントローラが、書込みカウンタレジスタが閾値に等しいときに前記メモリ位置スワップ動作を起動させるように動作可能な、請求項9に記載のキャッシュコントローラ。
【請求項１６】
携帯電話、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンタテイメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または定位置データユニットに統合された、請求項9に記載のキャッシュコントローラ。
【請求項１７】
不揮発性のオンチップキャッシュメモリのウェアレベリングのためのキャッシュコントローラであって、
前記キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにキャッシュセットに対する複数のメモリ位置スワップ動作を実行することによって前記不揮発性のオンチップキャッシュメモリの前記キャッシュセットを動的に循環させるための手段であって、各スワップ動作が、スワップされたキャッシュセットのみの内容を消去するステップ、および、前記スワップされるキャッシュセットのメモリ位置のみをスワップすることによって他のキャッシュセットのメモリ内容はそのままにするステップを含む、手段と、
前記スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するための手段と
を備える、キャッシュコントローラ。
【請求項１８】
携帯電話、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンタテイメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または定位置データユニットに統合された、請求項17に記載のキャッシュコントローラ。
【請求項１９】
オンチップの不揮発性キャッシュメモリのウェアレベリングのための方法であって、
前記キャッシュメモリへのメモリ書込み動作の数が閾値に達するときにキャッシュセットに対する複数のメモリ位置スワップ動作を実行することによって前記オンチップの不揮発性キャッシュメモリの前記キャッシュセットを動的に循環させるステップであって、各スワップ動作が、スワップされたキャッシュセットのみの内容を消去するステップ、および、前記スワップされたキャッシュセットのメモリ位置のみをスワップすることによって他のキャッシュセットのメモリ内容はそのままにするステップを含む、ステップと、
前記スワップされたキャッシュセットを追跡して論理キャッシュセット数を物理キャッシュセット数に変換するステップと
を含む、方法。
【請求項２０】
前記キャッシュメモリを携帯電話、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンタテイメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または定位置データユニットに統合するステップをさらに含む、請求項19に記載の方法。
【国際調査報告】
2016507847.tif 000011
2016507847.tif 000012