(57)【特許請求の範囲】
【請求項１】
キャッシュライン単位でデータを格納するデータキャッシュ部と、
前記データキャッシュ部に格納されるデータのアドレス情報を格納するタグ部と、
プロセッサからアクセス要求のあったアドレスが前記タグ部に格納されたアドレス情報に一致するか否かの判定を行い、その判定結果に基づいて前記データキャッシュ部および前記タグ部に対するアクセスを制御するキャッシュコントローラと、
前記データキャッシュ部に格納したデータの読出しエラーの発生頻度と、前記データキャッシュ部に格納したデータの読み出し遅延によるプロセッサの処理能力低下の度合いと、の少なくとも一方に基づいて、前記データキャッシュ部に一つのデータを書き込むのに要する期間を制御する書込み期間制御部と、を備えるキャッシュメモリ。
【請求項２】
前記データキャッシュ部に格納したデータの読出し遅延によるプロセッサの処理能力低下の度合いは、前記データキャッシュ部のキャッシュライン単位でのアクセス頻度に基づいて判断される請求項１に記載のキャッシュメモリ。
【請求項３】
前記データキャッシュ部に格納したデータの読出し遅延によるプロセッサの処理能力低下の度合いは、前記データキャッシュ部にキャッシュライン単位で格納されるデータがクリティカルデータか否かにより判断される請求項１に記載のキャッシュメモリ。
【請求項４】
前記書込み期間制御部は、前記データキャッシュ部に格納したデータの読出しエラーの発生頻度と、前記データキャッシュ部に格納したデータの読み出し遅延によるプロセッサの処理能力低下の度合いと、の少なくとも一方に基づいて、前記データキャッシュ部に一つのデータを書き込むのに要する期間に対応したパルス幅を持つライトパルス信号を生成する請求項１乃至３のいずれかに記載のキャッシュメモリ。
【請求項５】
前記書込み期間制御部は、前記データキャッシュ部に対する各キャッシュライン単位でのアクセス頻度に基づいて、各キャッシュラインごとに、前記ライトパルス信号のパルス幅を制御する請求項４に記載のキャッシュメモリ。
【請求項６】
前記書込み期間制御部は、アクセス頻度が高いキャッシュラインについては、アクセス頻度が低いキャッシュラインよりも、前記ライトパルス信号のパルス幅を長くする請求項５に記載のキャッシュメモリ。
【請求項７】
前記書込み期間制御部は、前記データキャッシュ部に対する各キャッシュライン単位での読出しエラーの発生頻度に基づいて、各キャッシュラインごとに、前記ライトパルス信号のパルス幅を制御する請求項４に記載のキャッシュメモリ。
【請求項８】
前記書込み期間制御部は、読出しエラーの発生頻度の高いキャッシュラインについては、読出しエラーの発生頻度の低いキャッシュラインよりも、前記ライトパルス信号のパルス幅を長くする請求項７に記載のキャッシュメモリ。
【請求項９】
前記データキャッシュ部に格納したデータの読み出し時に、当該データに対応する冗長ビットを用いて当該データの誤り検出および誤り訂正を行う誤り訂正コントローラを備え、
前記書込み期間制御部は、前記誤り訂正コントローラによる誤り検出結果に基づいて、キャッシュライン単位で、当該データの読出しエラーの発生頻度を検出する請求項１乃至８のいずれかに記載のキャッシュメモリ。
【請求項１０】
前記タグ部は、各キャッシュラインごとに、前記データキャッシュ部の対応するキャッシュラインのアクセス頻度を示す情報と読出しエラーの発生頻度を示す情報とを格納する付加情報格納部を有する請求項１乃至９のいずれかに記載のキャッシュメモリ。
【請求項１１】
前記書込み期間制御部は、前記付加情報格納部に格納されたアクセス頻度を示す情報と読出しエラーの発生頻度を示す情報とに基づいて、前記ライトパルス信号のパルス幅を制御する請求項１０に記載のキャッシュメモリ。
【請求項１２】
前記データキャッシュ部および前記タグ部は、それぞれがキャッシュライン単位でアクセス可能な複数のウェイに分かれており、
前記タグ部は、各ウェイの各キャッシュラインごとに、前記付加情報格納部を有する請求項１０または１１に記載のキャッシュメモリ。
【請求項１３】
前記データキャッシュ部は、ＭＲＡＭ（Magnetoresistive RAM）である請求項１乃至１２のいずれかに記載のキャッシュメモリ。
【請求項１４】
プロセッサと、
階層化されたｋ次（ｋ＝１からｎまでのすべての整数、ｎは１以上の整数）のキャッシュメモリと、を備え、
前記ｋ次のキャッシュメモリのうち少なくとも１階層のキャッシュメモリは、
キャッシュライン単位でデータを格納するデータキャッシュ部と、
前記データキャッシュ部に格納されるデータのアドレス情報を格納するタグ部と、
プロセッサからアクセス要求のあったアドレスが前記タグ部に格納されたアドレス情報に一致するか否かの判定を行い、その判定結果に基づいて前記データキャッシュ部および前記タグ部に対するアクセスを制御するキャッシュコントローラと、
前記データキャッシュ部に格納したデータの読出しエラーの発生頻度と、前記データキャッシュ部に格納したデータの読み出し遅延によるプロセッサの処理能力低下の度合いと、の少なくとも一方に基づいて、前記データキャッシュ部に一つのデータを書き込むのに要する期間を制御する書込み期間制御部と、を備えるプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、キャッシュメモリに関する。
【背景技術】
【０００２】
キャッシュメモリは大容量化する傾向にあり、それに伴ってキャッシュメモリのリーク電流の増加が問題となっている。大容量キャッシュメモリの候補として注目されているＭＲＡＭ（Magnetoresistive RAM）は不揮発性であり、現状のキャッシュメモリで用いられているＳＲＡＭよりリーク電流が圧倒的に小さいという特徴がある。
【０００３】
ＭＲＡＭのデータ書き込み方式の一つとして、スピン注入磁化反転方式がある。スピン注入磁化反転方式は、ＭＲＡＭを構成する磁気トンネル接合素子（ＭＴＪ素子）に所定の電流値以上の書込み電流を流し、データの読出しにおいても、所定の読出し電流をＭＴＪ素子に流す。
【０００４】
スピン注入型ＭＲＡＭにおける書込み電流の電流値は、スピン注入によって磁化反転が生じる反転閾値よりも大きい電流値に設定され、読出し電流の電流値は、その反転閾値よりも小さな電流値に設定される。
【０００５】
しかしながら、ＭＲＡＭを構成する複数のＭＴＪ素子の特性ばらつきに起因して、反転閾値がＭＴＪ素子ごとに変動してしまう。また、同じＭＴＪ素子に対してデータを繰り返し書き込むと、その素子に対する反転閾値が揺らいでしまう。
【０００６】
このため、データの書込み時における書込み不良、データの読出し時における読出し電流に起因する読出しディスターブ、データの保持時における熱擾乱によって磁化が反転する不良、およびリテンション不良などが発生する。
【０００７】
これらの不良に対処するために、ＥＣＣ（Error Correction and Coding）回路を設けてデータの読み出し時に誤り訂正を行うＭＲＡＭが提案されている。また、誤り検出時に書込みパルス幅を長くして再度データの書込みを行う技術も提案されているが、誤りが検出されてから書込みパルスを長くして再書き込みを行うことから、ＭＲＡＭへのアクセス時の平均レイテンシが長くなってしまう。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−２２７２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明が解決しようとする課題は、アクセス時の平均レイテンシを削減でき、かつ低消費電力化も可能なキャッシュメモリおよびプロセッサシステムを提供することにある。
【課題を解決するための手段】
【００１０】
本実施形態によれば、キャッシュライン単位でデータを格納するデータキャッシュ部と、
前記データキャッシュ部に格納されるデータのアドレス情報を格納するタグ部と、
プロセッサからアクセス要求のあったアドレスが前記タグ部に格納されたアドレス情報に一致するか否かの判定を行い、その判定結果に基づいて前記データキャッシュ部および前記タグ部に対するアクセスを制御するキャッシュコントローラと、
前記データキャッシュ部に格納したデータの読出しエラーの発生頻度と、前記データキャッシュ部に格納したデータの読み出し遅延によるプロセッサの処理能力低下の度合いと、の少なくとも一方に基づいて、前記データキャッシュ部に一つのデータを書き込むのに要する期間を制御する書込み期間制御部と、を備えるキャッシュメモリが提供される。
【図面の簡単な説明】
【００１１】
【図１】一実施形態によるキャッシュメモリ１を内蔵したプロセッサシステム２の概略構成を示すブロック図。
【図２】本実施形態によるメモリの階層構造を示す図。
【図３】図１のキャッシュメモリ１の内部をより具体化したブロック図。
【図４】データキャッシュ部１２およびキャッシュコントローラ１５の周辺の詳細構成を示すブロック図。
【図５】図４のタイミング生成器２２の内部構成の一例を示す回路図、図６はタイミング生成器２２のタイミング図。
【図６】タイミング生成器２２のタイミング図。
【図７】データキャッシュ部１２とタグ部１３の内部構成の一例を示すブロック図。
【図８】ライトパルス信号のパルス幅を制御する場合と制御しない場合の消費電力を比較した図。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施形態を説明する。以下の実施形態では、キャッシュメモリおよびプロセッサシステムの特徴的な構成および動作を中心に説明するが、キャッシュメモリおよびプロセッサシステムには以下の説明で記述しない構成および動作が存在しうる。ただし、これらの省略した構成および動作も本実施形態の範囲に含まれうるものである。
【００１３】
図１は一実施形態によるキャッシュメモリ１を内蔵したプロセッサシステム２の概略構成を示すブロック図である。図１のプロセッサシステム２は、キャッシュメモリ１と、プロセッサコア３と、ＭＭＵ４と、電源監視回路１７とを備えている。キャッシュメモリ１は、階層構造になっており、例えばＬ１キャッシュ（L1 Cache）６とＬ２キャッシュ（L2 Cache）７を有する。
【００１４】
ＭＭＵ４は、プロセッサコア３が発行した仮想アドレスを物理アドレスに変換して、メインメモリ８およびキャッシュメモリ１にアクセスする。ＭＭＵ４は、プロセッサコア３がアクセスしたメモリアドレスの履歴を元に、メインメモリ８内に格納されているページテーブル（ＰＴ）９を参照し、アクセスされているアドレスに該当するページテーブルエントリーを取得して、仮想アドレスと物理アドレスとの変換テーブルを更新する。このページテーブル９は一般にはＯＳが管理するが、キャッシュメモリ１内にページテーブルを管理する機構を実装してもよい。
【００１５】
電源監視回路１７は、プロセッサコア３の処理が一定時間停止していて、かつ外部からの処理要求もない場合に、プロセッサシステム２内の少なくとも一部の回路ブロックの電源電圧を下げたり、電源電圧の供給を停止する電源制御信号をプロセッサシステム２内の各部に供給する。
【００１６】
図１のキャッシュメモリ１は、メインメモリ８に記憶されたデータまたは記憶されるべきデータの少なくとも一部を記憶するものであり、Ｌ２以降の高次のキャッシュメモリを含んでいる。
【００１７】
図２は本実施形態によるメモリの階層構造を示す図である。図示のように、最上位の階層にはＬ１キャッシュ６が位置し、次の階層にはＬ２キャッシュ７が位置し、最下位の階層にはメインメモリ８が位置する。プロセッサコア（ＣＰＵ）３が任意のアドレスを発行すると、まずＬ１キャッシュ６へのアクセスが行われ、Ｌ１キャッシュ６にヒットしない場合は、次にＬ２キャッシュ７へのアクセスが行われ、Ｌ２キャッシュ７にヒットしない場合は、メインメモリ８へのアクセスが行われる。上述したように、Ｌ３キャッシュ以降の高次のキャッシュメモリ１を設けてもよいが、本実施形態では、キャッシュメモリ１がＬ１キャッシュ６とＬ２キャッシュ７の２階層である例を説明する。
【００１８】
Ｌ１キャッシュ６は例えば数１０ｋバイトのメモリ容量を持ち、Ｌ２キャッシュ７は例えば数１００ｋバイト〜数Ｍバイトのメモリ容量を持ち、メインメモリ８は例えば数Ｇバイトのメモリ容量を持っている。プロセッサコア３は、Ｌ１キャッシュ６とＬ２キャッシュ７に対しては通常はキャッシュライン単位でアクセスし、メインメモリ８に対してはページ単位でアクセスする。キャッシュラインは例えば５１２バイトであり、１ページは例えば４ｋバイトである。なお、キャッシュラインやページのバイト数は任意である。
【００１９】
Ｌ１キャッシュ６に格納されるデータは通常Ｌ２キャッシュ７にも格納され、Ｌ２キャッシュ７に格納されるデータは通常メインメモリ８にも格納される。
【００２０】
図３は図１のキャッシュメモリ１の内部をより具体化したブロック図である。プロセッサコア３は、例えばマルチコア構成になっており、複数の演算器１１を有する。各演算器１１にはＬ１キャッシュ６が接続されている。Ｌ１キャッシュ６は、高速性が要求されるため、例えばＳＲＡＭ（Static Random Access Memory）で構成されている。なお、プロセッサコア３は、シングルコア構成であってもよい。この場合、Ｌ１キャッシュ６は一つだけ設けられる。
【００２１】
図３のＬ２キャッシュ７は、データキャッシュ部１２と、タグ部１３と、冗長符号記憶部１４と、キャッシュコントローラ１５と、誤り訂正コントローラ１６とを有する。
【００２２】
データキャッシュ部１２は、キャッシュライン単位でアクセス可能なキャッシュラインデータを格納する。タグ部１３は、各キャッシュラインデータのアドレス情報を格納する。
【００２３】
冗長符号記憶部１４は、データキャッシュ部１２に格納された各キャッシュラインデータを誤り訂正するための冗長符号を格納している。タグ部１３に格納されたアドレス情報に対しても冗長符号を設けて、冗長符号記憶部１４に格納してもよい。
【００２４】
データキャッシュ部１２は、例えば不揮発性メモリを用いて構成される。データキャッシュ部１２として使用可能な不揮発性メモリは、例えば大容量化が容易なＭＲＡＭ（Magnetoresistive RAM）である。
【００２５】
タグ部１３は、例えば揮発性メモリを用いて構成される。タグ部１３として使用可能な揮発性メモリは、例えばＭＲＡＭよりも高速のＳＲＡＭ（Static RAM）である。
【００２６】
キャッシュコントローラ１５は、プロセッサコア３が発行したアドレスに対応するデータがデータキャッシュ部１２に格納されているか否かを判定する。すなわち、キャッシュコントローラ１５は、プロセッサコア３が発行したアドレスがタグ部１３に格納されているアドレス情報に一致するか否かのヒット／ミス判定を行って、Ｌ２キャッシュ７のデータ書き込みおよび読み出しと、メインメモリ８への書き戻しを制御する。
【００２７】
誤り訂正コントローラ１６は、Ｌ２キャッシュ７に新たなキャッシュラインデータを格納する場合は、このキャッシュラインデータを誤り訂正するための冗長符号を生成して、冗長符号記憶部１４に格納する。また、誤り訂正コントローラ１６は、プロセッサコア３から読み出し要求のあったキャッシュラインデータをデータキャッシュ部１２から読み出した場合は、このデータに対応する冗長符号を冗長符号記憶部から読み出して誤り訂正処理を行い、誤り訂正処理後のキャッシュラインデータをプロセッサコア３に伝送する。
【００２８】
図４はデータキャッシュ部１２およびキャッシュコントローラ１５の周辺の詳細構成を示すブロック図である。図４に示すように、データキャッシュ部１２は、メモリアレイ部２０と、デコーダ２１と、タイミング生成器（ＴＧ：Timing Generator）２２と、書込み回路２３と、読出し回路２４とを有する。この他、データキャッシュ部１２とキャッシュコントローラ１５の間には、パルスコントローラ（書込み期間制御部）２５が設けられている。
【００２９】
メモリアレイ部２０は、縦横に配置された複数のＭＲＡＭセルを有し、行方向に並ぶＭＲＡＭセルのゲートには対応する不図示のワード線が接続され、列方向に並ぶＭＲＡＭセルのドレイン／ソースには対応する不図示のビット線とソース線が接続されている。
【００３０】
タイミング生成器２２は、データキャッシュ部１２内の各部のタイミングを制御する。デコーダ２１は、プロセッサコア３からアクセス要求のあったアドレスをデコードした結果に基づいて、タイミング生成器２２からの信号に同期して、ワード線を駆動する。
【００３１】
書込み回路２３は、タイミング生成器２２からのライトパルス信号に同期して、メモリアレイ部２０にデータを書き込む。読出し回路２４は、タイミング生成器２２からのリードパルス信号に同期して、メモリアレイ部２０からデータを読み出す。
【００３２】
キャッシュコントローラ１５は、タグ部１３およびデータキャッシュ部１２へのアクセスを制御する。パルスコントローラ２５は、データキャッシュ部１２に格納したデータの読出しエラーの発生頻度と、データキャッシュ部１２に格納したデータの読出し遅延によるプロセッサコア３の処理能力低下の度合いと、の少なくとも一方に応じて変化する周期を持つクロック信号ＣＬＫと、このクロック信号ＣＬＫの１周期分のパルス幅を持つライトイネーブル信号ＷＥを生成する。タイミング生成器２２は、このライトイネーブル信号ＷＥに同期して、ライトパルス信号Ｗを生成する。ライトイネーブル信号ＷＥのパルス幅に応じて、ライトパルス信号Ｗのパルス幅（すなわち、書込み有効期間）が変化する。
【００３３】
したがって、ライトイネーブル信号ＷＥのパルス幅は、データキャッシュ部１２に格納したデータの読出しエラーの発生頻度と、データキャッシュ部１２に格納したデータの読出し遅延によるプロセッサコア３の処理能力低下の度合いと、の少なくとも一方に応じて変化する。データの読出しエラーの発生頻度とは、データ読み出し時に誤り訂正コントローラ１６にてエラー検出される頻度を表す。データの読出し遅延によるプロセッサコア３の処理能力低下の度合いとは、より具体的には、データの読出し遅延により、プロセッサコア３の処理に影響を与える度合いを意味する。一例としては、アクセス頻度の高いデータほど、プロセッサコア３の処理能力低下の度合いが高いと判断される。また、アクセス頻度は低くても、読み出したデータがないとプロセッサコア３が後続の処理を実行できないデータ、すなわちクリティカルデータの読出しアクセスも、プロセッサコア３の処理能力低下の度合いが高いと判断される。
【００３４】
タイミング生成器２２は、ライトイネーブル信号ＷＥのパルス幅に応じたパルス幅を持つライトパルス信号Ｗを生成する。より詳細には、ライトパルス信号Ｗは、ライトイネーブル信号ＷＥと後述する信号ＣＳＬＥがともにハイレベルの期間のパルス幅を持つ信号である。よって、ライトパルス信号Ｗのパルス幅が広いほど、データキャッシュ部１２には時間をかけてデータ書き込みが行われる。これはすなわち、ライトパルス信号Ｗのパルス幅が広いほど、信頼性よくデータキャッシュ部１２にデータを書き込めることを意味し、エラーの発生頻度を減らすことができる。また、タイミング生成器２２は、読出し回路２４が読出し動作を行う期間を示すリードパルス信号Ｒや、その他の制御信号も生成する。
【００３５】
後述するように、タグ部１３には、データの読出しエラーの発生頻度を示す情報と、アクセス頻度を示す情報とを格納することができる。よって、パルスコントローラ２５は、タグ部１３に格納されたこれらの情報に基づいて、クロック信号ＣＬＫとライトイネーブル信号ＷＥを生成することができる。
【００３６】
パルスコントローラ２５は、例えばその内部に、分周比を２通り以上に切替可能な分周回路を有する。この分周回路は、タグ部１３に格納された上述した情報に基づいて、分周比が切り替えられる。これにより、周期が可変のクロック信号ＣＬＫと、クロック信号ＣＬＫの１周期分のるパルス幅を持つライトイネーブル信号ＷＥを生成することができる。
【００３７】
図５は図４のタイミング生成器２２の内部構成の一例を示す回路図、図６はタイミング生成器２２のタイミング図である。図５のタイミング生成器２２には、パルスコントローラ２５から出力されたクロック信号ＣＬＫとライトイネーブル信号ＷＥとが入力される。
【００３８】
図５のタイミング生成器２２は、遅延回路３１と、ＯＲゲートＧ１と、２つのＡＮＤゲートＧ２，Ｇ３と、１つのインバータ３２とを有する。遅延回路３１は、クロック信号ＣＬＫを所定時間遅延させた遅延クロック信号ＣＬＫ２を生成する。ＯＲゲートＧ１は、クロック信号ＣＬＫと遅延クロック信号ＣＬＫ２との論理和信号ＣＳＬＥを生成する。ＡＮＤ回路Ｇ２は、信号ＣＳＬＥとライトイネーブル信号ＷＥの反転信号との論理積であるリードパルス信号Ｒを生成する。ＡＮＤ回路Ｇ３は、信号ＣＳＬＥとライトイネーブル信号ＷＥとの論理積であるライトパルス信号Ｗを生成する。なお、ライトパルス信号Ｗを生成する際に、クロック信号ＣＬＫを用いずに信号ＣＳＬＥを用いているのは、クロック信号ＣＬＫは種々の回路で利用されるためであり、クロック信号ＣＬＫを遅延させてパルス幅を広げた信号ＣＳＬＥを用いている。
【００３９】
読出し回路２４は、リードパルス信号Ｒがハイの期間にデータキャッシュ部１２からのデータ読出しを行う。書込み回路２３は、ライトパルス信号Ｗがハイの期間にデータキャッシュ部１２へのデータ書き込みを行う。ライトパルス信号Ｗのパルス幅は、図６に示すように、ＯＲゲートＧ１でで生成される信号ＣＳＬＥのパルス幅に応じて変化する。信号ＣＳＬＥのパルス幅が広いほど、ライトパルス信号Ｗのパルス幅が広くなる。そして、ライトパルス信号Ｗのパルス幅が大きいほど、データ書き込みに時間がかかるが、信頼性の高い書込みを行うことができる。逆に、ライトパルス信号Ｗのパルス幅が小さいほど、データ書き込みを高速化できるが、データ書込みの信頼性が低下し、ベリファイ時に再書き込みを行う可能性が高くなる。
【００４０】
なお、タイミング生成器２２の内部構成は、図５に示したものに限定されない。また、クロック信号ＣＬＫ、ライトイネーブル信号ＷＥ、リードパルス信号Ｒおよびライトパルス信号Ｗの各信号波形も、図６に示したものに限定されない。
【００４１】
図７はデータキャッシュ部１２とタグ部１３の内部構成の一例を示すブロック図である。図７に示すように、データキャッシュ部１２とタグ部１３はいずれも、キャッシュライン単位でデータとアドレス情報を格納する。タグ部１３には、キャッシュライン単位で、アドレス情報の他に、付加情報を格納する付加情報格納部１８が設けられている。付加情報は、有効フラグ情報と、ダーティフラグ情報と、ＬＲＵ（Least Recently Used）ポジション情報と、セキュリティ情報と、追加フラグ情報とを含んでいる。有効フラグ情報は、対応するキャッシュラインが有効か無効かを示す情報を格納する。ダーティフラグ情報は、下位階層のキャッシュメモリやメインメモリへの書き戻しを行う必要があるか否かを示す情報を格納する。ＬＲＵポジション情報は、アクセス頻度が低いデータか否かを示す情報を格納する。セキュリティ情報は、読出し専用、読み書き可能、書込み専用などのデータキャッシュ部１２の特性に関する情報を格納する。追加フラグ情報は、本実施形態で新たに追加されたフラグ情報であり、データの読出し遅延によるプロセッサコア３の処理能力の低下が起きるか否かを示す情報を格納する。
【００４２】
図７のデータキャッシュ部１２とタグ部１３は、それぞれ複数のウェイに分かれており、いずれのウェイも、複数のキャッシュラインを有する。タグ部１３における各ウェイは、アドレス情報と上述した付加情報とを有する。同様に、書込み回路２３と読出し回路２４も複数のウェイに分かれている。図７では、４つのウェイを設ける例を示しているが、ウェイの数については特に制限はない。また、データキャッシュ部１２とタグ部１３をそれぞれ複数のウェイに分けるか否かは任意である。
【００４３】
図７に示すように、キャッシュコントローラ１５の内部には、ヒット／ミス判定部２６と、ウェイ制御部２７と、タグ書込み制御部２８とが設けられている。ヒット／ミス判定部２６は、プロセッサコア３からアクセス要求のあったアドレスがタグ部１３に格納されたアドレス情報と一致するか否かを判定する。ウェイ制御部２７は、ヒット／ミス判定部２６による判定信号に基づいて、どのウェイにアクセスするかを示すウェイ選択信号を生成する。また、ウェイ制御部２７は、ミスした場合には、ＬＲＵポジション情報に基づいて、アクセス頻度の低いキャッシュラインのデータを入れ替える制御を行う。書込み制御部２８は、ウェイ制御部２７から特定のウェイのキャッシュラインを書換指示があると、そのキャッシュラインのデータ書込みを制御する。
【００４４】
プロセッサコア３が発行する仮想アドレスは、ＭＭＵにて、物理アドレスに変換される。物理アドレスは、図７に示すように、上位ビット側から下位ビット側にかけて、タグアドレス、インデックスアドレス、ワードアドレス、バイトアドレスの順に並んでいる。インデックスアドレスにて、タグ部１３の特定のキャッシュラインが選択される。この特定のキャッシュラインに格納されているアドレス情報と、プロセッサコア３がアクセス要求したタグアドレスとは、ヒット／ミス判定部２６に送られて、ヒット／ミス判定が行われる。ヒットしたと判定されると、この特定のキャッシュラインに対応するデータキャッシュ部１２のデータが読み出されて、プロセッサコア３に送られる。ミスしたと判定されると、下位階層のキャッシュメモリまたはメインメモリへのアクセスが行われたり、ＬＲＵポジションに対応するキャッシュラインのデータが入れ替えられたりする。
【００４５】
図８はライトパルス信号Ｗのパルス幅を制御する場合と制御しない場合の消費電力を比較した図である。図８は、６５ｎｍプロセスでＭＲＡＭを構成し、キャッシュラインを５１２ビットとし、誤り訂正コントローラが１ビットの誤り訂正と２ビットの誤り検出を行う場合のシミュレーション結果を示している。
【００４６】
図８（ａ）はデータ書き込み時にベリファイを行う例を示し、図８（ｂ）はデータ読み出し時にベリファイを行う例を示している。図８（ａ）と図８（ｂ）はライトパルス幅を固定にしている。すなわち、図８（ａ）と図８（ｂ）は短いパルス幅のライトパルス信号Ｗで書込みを行う比較例を示している。一方、図８（ｃ）は本実施形態に対応するものであり、長いパルス幅のライトパルス信号Ｗで書込みを行う場合にはベリファイを省略する例を示している。
【００４７】
図８（ａ）の場合、書込み動作に４ｎＳかかり、０．３７２ｎＪの電力を消費する。また、ベリファイ処理時に、読出し動作に４ｎＳかかり、０．１４２ｎＪの電力を消費し、誤りがあるか否かの判定処理に１ｎＳかかり、０．００２ｎＪの電力を消費する。また、誤りがある場合の再書込み動作に４ｎＳかかり、０．３７２ｎＪの電力を消費する。この結果、誤りがなかった場合の総処理時間は９ｎＳ、消費電力は０．５１６ｎＪとなる。また、誤りがあった場合の総処理時間は１３ｎＳ、消費電力は０．８８８ｎＪとなる。
【００４８】
図８（ｂ）の場合、読出し動作に４ｎＳかかり、０．１４２ｎＪの電力を消費する。また、ベリファイ処理時に、誤りがあるか否かの判定処理に１ｎＳかかり、０．００２ｎＪの電力を消費する。誤りがある場合の消去処理に４ｎＳかかり、０．０７ｎＪの電力を消費する。続いて行われる再書き込み処理に４ｎＳかかり、０．３７２ｎＪの電力を消費する。この結果、誤りがなかった場合の総処理時間は５ｎＳ、消費電力は０．１４４ｎＪとなる。また、誤りがあった場合の総処理時間は９ｎＳ、消費電力は０．５８６ｎＪとなる。
【００４９】
図８（ｃ）の場合、短いパルス幅のライトパルス信号Ｗで書込みを行った場合は４ｎＳかかり、０．３７２ｎＳの電力を消費する。一方、長いパルス幅のライトパルス信号Ｗで書込みを行った場合は７ｎＳかかり、０．７４４ｎＳの電力を消費する。
【００５０】
図８の結果からわかるように、ライトパルス信号Ｗのパルス幅が長くなると、書込み処理に時間がかかり、かつ消費電力も増大するが、書込みの信頼性はより向上し、再書き込みを行う頻度を削減できる。短いパルス幅のライトパルス信号Ｗでデータ書き込みを行った結果、再書き込みを行うことになった場合の消費電力は、最初から長いパルス幅のライトパルス信号Ｗでデータ書き込みを行った場合の消費電力よりも大きくなり、かつ書込みに要する時間も長くなる。よって、読出しエラーの発生頻度や読出し遅延による影響が大きい場合には、予めライトパルス信号Ｗのパルス幅を長くすることで、消費電力の削減と、迅速なデータ書き込みとが可能となる。
【００５１】
また、本シミュレーションにより、ライトパルス信号Ｗのパルス幅を２倍にすることで、書込みエラーが生じる確率を約１００分の１に低減できることもわかった。
【００５２】
このように、本実施形態では、データキャッシュ部１２に格納したデータの読出しエラーの発生頻度と、データキャッシュ部１２に格納したデータの読出し遅延によるプロセッサコア３の処理能力低下の度合いとの少なくとも一方に基づいて、ライトパルス信号Ｗのパルス幅を制御する。これにより、誤り訂正コントローラ１６で誤り検出および誤り訂正を行う頻度を低減でき、プロセッサコア３の平均レイテンシを向上できるとともに、消費電力も抑制できる。
【００５３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５４】
１  キャッシュメモリ、２  プロセッサシステム、３  プロセッサコア、４  ＭＭＵ、６  Ｌ１キャッシュ、７  Ｌ２キャッシュ、８  メインメモリ、１１  演算器、１２  データキャッシュ部、１３  タグ部、１５  キャッシュコントローラ、１６  誤り訂正コントローラ、１７  電源監視回路、１８  付加情報格納部、２０  メモリアレイ部、２１  デコーダ、２２  タイミング生成器、２３  書込み回路、２４  読出し回路、２５  パルスコントローラ
【図１】
0006027567.tif 000002
【図３】
0006027567.tif 000003
【図４】
0006027567.tif 000004
【図５】
0006027567.tif 000005
【図６】
0006027567.tif 000006
【図７】
0006027567.tif 000007
【図２】
0006027567.tif 000008
【図８】
0006027567.tif 000009