(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6024897
(24)【登録日】2016年10月21日
(45)【発行日】2016年11月16日
(54)【発明の名称】低電圧動作キャッシュメモリ
(51)【国際特許分類】
G06F 11/10 20060101AFI20161107BHJP
G06F 12/08 20160101ALI20161107BHJP
G06F 12/12 20160101ALI20161107BHJP
【FI】
G06F11/10 664
G06F12/08 553B
G06F12/08 511E
G06F12/08 541B
G06F12/08 523B
G06F12/08 577
G06F12/08 507F
G06F12/12 551
【請求項の数】11
【全頁数】25
(21)【出願番号】特願2012-267445(P2012-267445)
(22)【出願日】2012年12月6日
(65)【公開番号】特開2014-115723(P2014-115723A)
(43)【公開日】2014年6月26日
【審査請求日】2015年9月23日
【新規性喪失の例外の表示】特許法第30条第2項適用 1)刊行物名 2012 IEEE Faible Tension Faible Consommation(2012米国電気電子学会)論文 発行日 2012年 6月 6日 発行所 米国電気電子学会 p.978−1−4673−0821−2/12 2)刊行物名 信学技報(IEICE Technical Report,Vol.112,No.169) 発行日 2012年 7月26日 発行所 一般社団法人 電子情報通信学会 p.1〜p.6に発表
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成24年度 独立行政法人科学技術振興機構 戦略的創造研究推進事業委託研究、産業技術力強化法19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504150450
【氏名又は名称】国立大学法人神戸大学
(74)【代理人】
【識別番号】110000822
【氏名又は名称】特許業務法人グローバル知財
(72)【発明者】
【氏名】吉本 雅彦
(72)【発明者】
【氏名】川口 博
(72)【発明者】
【氏名】奥村 俊介
(72)【発明者】
【氏名】中田 洋平
(72)【発明者】
【氏名】鄭 晋旭
【審査官】
後藤 彰
(56)【参考文献】
【文献】
国際公開第2012/023277(WO,A1)
【文献】
特表平06−504865(JP,A)
【文献】
特開2007− 18514(JP,A)
【文献】
特開2005− 92915(JP,A)
【文献】
鄭 晋旭,低電圧動作におけるマージン拡大機能を有する連想度可変キャッシュ,電子情報通信学会技術研究報告 ICD2011-135-ICD2011-144,日本,社団法人電子情報通信学会,2012年 1月12日,第111巻,第388号,p.55-60
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G06F 12/08
G06F 12/12
(57)【特許請求の範囲】
【請求項1】
タグにより構成されるデータ格納構造を備え、複数のメモリセルブロックから構成されるキャッシュウェイを複数備えるセットアソシアティブ方式のキャッシュメモリにおいて、
前記メモリセルブロックは、
各々の出力がメモリセルの列に対応して配置される一対のビットラインの各々に至る経路に接続されるクロスカップル接続された一対のインバータと、ビットラインとインバータの出力との間に設けられた一対のスイッチ部と、スイッチ部の導通を制御する1本のワードラインと、から構成されるメモリセルと、隣接するメモリセルのデータ保持ノード間にモード制御スイッチ部と、該モード制御スイッチ部の導通を制御する1本のモード制御ラインと、から成り、
前記メモリセルブロック毎に、
1ビットが1個のメモリセルで構成される通常モードから、隣接する2個のメモリセルを連結して1ビットが2個のメモリセルで構成される高信頼モードへと切り替えできる回路構成であり、
前記メモリセルブロックがオフラインもしくはオンラインで故障検出された場合に、故障検出したメモリセルブロックを高信頼モードに切り替えて、どのメモリセルが故障したかの情報を用いることなく、隣接する2つのキャッシュラインのいずれかを必ず使用するメモリセルブロックにしたことを特徴とする低電圧動作キャッシュメモリ。
【請求項2】
故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、
キャッシュメモリの全てのキャッシュインデックスに、キャッシュウェイの個数の半分の連想度以上でのキャッシュ動作が可能となるように、キャッシュラインの割り当てを行うことを特徴とする請求項1に記載の低電圧動作キャッシュメモリ。
【請求項3】
故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、偶数番号のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられ、奇数番号のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられることを特徴とする請求項2に記載の低電圧動作キャッシュメモリ。
【請求項4】
故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、偶数番号のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられ、奇数番号のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられることを特徴とする請求項2に記載の低電圧動作キャッシュメモリ。
【請求項5】
故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、キャッシュウェイの個数がN(番号は0,1,・・・,N−1)とした場合に、番号がN/2未満のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられ、番号がN/2以上のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられることを特徴とする請求項2に記載の低電圧動作キャッシュメモリ。
【請求項6】
故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、キャッシュウェイの個数がN(番号は0,1,・・・,N−1)とした場合に、番号がN/2未満のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられ、番号がN/2以上のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられることを特徴とする請求項2に記載の低電圧動作キャッシュメモリ。
【請求項7】
故障したメモリセルブロックにおいて、
高信頼モード時に、
隣接する2つのキャッシュラインのいずれを使用するかの識別情報として、
使用しない無効キャッシュラインのキャッシュライン状態ビットを、{Valid bit,Dirty bit}={0,1}に設定することを特徴とする請求項1〜6のいずれかに記載の低電圧動作キャッシュメモリ。
【請求項8】
キャッシュメモリのLRU(Least Recently Used)置換アルゴリズムにおいて、
故障したメモリセルブロックが高信頼モード時、
使用しない無効キャッシュラインのLRUツリービットをMRU(Most Recently Used)状態に固定することを特徴とする請求項1〜7のいずれかに記載の低電圧動作キャッシュメモリ。
【請求項9】
キャッシュメモリのLRU(Least Recently Used)置換アルゴリズムにおいて、
故障したメモリセルブロックが高信頼モード時、
使用しない無効キャッシュラインがM個存在する場合、
使用しない無効キャッシュラインのLRUツリービットをキャッシュウェイの番号順に0(MRU),1,・・・,M−1にすることを特徴とする請求項1〜7のいずれかに記載の低電圧動作キャッシュメモリ。
【請求項10】
使用しない無効キャッシュラインがM個存在する場合、
キャッシュミスが起きた際に割り当てた新しいデータのキャッシュラインのLRUツリービットをMとし、
その他の使用するキャッシュラインのLRUツリービットを、キャッシュミスが起きる以前の順番に従って、それぞれM+1から順に1インクリメントすることを特徴とする請求項8又は9に記載の低電圧動作キャッシュメモリ。
【請求項11】
使用しない無効キャッシュラインがM個存在する場合、
キャッシュヒットが起きたキャッシュラインのLRUツリービットをMとし、
その他の使用するキャッシュラインのLRUツリービットを、キャッシュミスが起きる以前の順番に従って、それぞれM+1から順に1インクリメントすることを特徴とする請求項8又は9に記載の低電圧動作キャッシュメモリ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、低電圧動作キャッシュメモリに関する技術である。
【背景技術】
【0002】
近年のSRAM(Static Random
Access Memory)等の半導体メモリは、SoCに搭載されるCMOSプロセス技術が進展し、集積回路の加工寸法(スケーリングサイズ)が縮小され、より高いチップ密度と低いチップコストが実現され、メモリ容量が増大している。
このようなスケーリングサイズの縮小は、SRAM等のメモリセルを構成するトランジスタの閾値電圧のばらつきを拡大し、メモリセルにおける読み出しや書き込みのノイズマージンを低下させ、メモリセル動作を不安定性化し、ビット誤り率を増大させている。
【0003】
このようなプロセスばらつきの増大は、マイクロプロセッサの信頼性に大きな影響を及ぼし、低電圧動作の実現を困難にする。プロセスばらつきによるSRAM内のトランジスタ間のデバイスミスマッチングは、メモリセルの動作マージンを減少させ、結果としてセルの故障(読み出し故障、書込み故障、アクセスタイム違反)を生じさせる要因となる。また、微細化が進むにつれ、最低動作電圧が上昇する傾向にあり、メモリセルの動作マージンを低下させている。SRAMは、プロセッサにおけるトランジスタ数の大部分を占めるため、プロセッサ全体の動作電圧は大きいSRAMブロックを含んでいるキャッシュメモリによって決まると言える。そのため、メモリセルの動作マージンを増加させ、プロセッサの動作電圧を削減するためには、キャッシュメモリの低電圧化が必須である。
【0004】
これまで、低電圧動作キャッシュメモリに関する研究が数多く紹介されている(例えば、非特許文献1,2を参照。)。しかし、非特許文献1で提案されている低電圧動作キャッシュメモリでは、故障キャッシュラインの場所を特定するために、on−chip
fuseを使用するため、コスト高になるといった問題がある。
また、非特許文献2で提案されている低電圧動作キャッシュメモリでは、追加ビットや追加回路を要するため、面積オーバヘッドが大きいといった問題がある。
【0005】
また一方、DVS(Dynamic
Voltage Scaling)のような動作電圧を低減し、消費電力を削減する手法があるが、増加し続けるプロセスばらつきの影響による、近年の微細プロセスにおいては、SRAMが低電圧領域で十分な動作マージンを確保することは困難である。特に、キャッシュメモリは膨大な数のSRAMセルを含むため、プロセッサ内の大容量キャッシュメモリは製造ばらつきの影響を受けやすく、低電圧領域での動作信頼性を保つことは困難である。このように、キャッシュメモリは、プロセッサ全体の最低動作電圧の削減を妨害する要因となっている。
特に、RDF(Random
Dopant Fluctuation)のようなランダムばらつきは、SRAMセルの信頼性に大きな影響を与える。その結果、製造過程において生成される故障セルは、キャッシュメモリ内でランダムに分布している。キャッシュメモリ内に散在している故障セルを取り除くことにより、キャッシュメモリ全体の最低動作電圧を効果的に削減することが可能である。
しかしながら、故障セルがランダムに分布しているため、故障セルの場所を特定して何らかの制御を行うような細粒度制御は、追加サイクルや複雑な周辺回路が必要となり、コスト高になってしまう。
【0006】
通常、キャッシュメモリは、下位レベルの記憶装置より小容量で高速なSRAMを用いて構成される。キャッシュメモリは、データ本体の一部とデータ格納アドレス,フラグなど属性情報のセットを固定容量のメモリに格納する構造を有し、データ格納構造、キャッシュラインの入替え、データ更新方式などに多数のアーキテクチャが存在する。従前は、プロセッサのチップの外部に接続されていたが、近年は、LSI集積度の向上や要求速度の上昇に伴い、プロセッサチップ内部に取り込まれる。キャッシュメモリは、データをキャッシュラインと呼ぶある程度まとまった単位(例えば、32バイト)でデータを格納し管理する。
【0007】
キャッシュメモリにデータのアクセス要求があった時、そのデータがキャッシュに存在しているか否か、存在するならどのラインに存在するか等を瞬時(例えば、1サイクル)に検索する必要がある。そのために、データ格納アドレスの一部(キャッシュライン単位アドレスの下位数ビット:インデックス)により、ある程度の格納位置を限定することで検索速度を高める。各キャッシュラインには、キャッシュライン単位アドレスの上位ビット(フレームアドレス)を格納しており、キャッシュメモリ検索時には検索アドレスのフレームアドレス部と、キャッシュ内に格納されている検索インデックス位置のキャッシュラインに対応したフレームアドレスとを比較することでキャッシュのヒットを検出する。このフレームアドレスの格納バッファがタグである。複数セットのタグを備えることにより、同じインデックスでも複数データの格納を行うことが可能となる。このタグのセット数(ウェイ数)を連想度という。
【0008】
複数のタグにより構成される(連想度2以上)データ格納構造のキャッシュメモリをセットアソシアティブ方式(Set Associative)のキャッシュメモリという。セットアソシアティブ方式のキャッシュメモリの場合、同一インデックスに異なるフレームアドレスのデータを複数格納することができる。連想度が上がるほどキャッシュヒット率は上昇する。特に、n個のタグのセット数(ウェイ数)により構成された場合、nウェイ・セットアソシアティブ方式のキャッシュメモリという。
【0009】
一般的に、キャッシュメモリのような大きいメモリ構造は、幾つかのサブブロックで構成される。例えば、
図1に示す4ウェイ・セットアソシアティブ方式のキャッシュメモリの場合、全てのキャッシュウェイがそれぞれ4つのSRAMブロックと周辺回路を備える。このようなキャッシュメモリの場合、SRAMブロックレベルでの制御を施し、製造プロセスにおいて生成されるSRAMセルの欠陥を取り除くことができ、効果的にキャッシュメモリ全体の最低動作電圧を低減することができる。
【0010】
ここで、
図2を用いて、4ウェイ・セットアソシアティブ方式のキャッシュメモリの連想度について説明する。図に示すように、いくつかのSRAMセルが故障しているとして、故障したSRAMセルの欠陥を取り除くために、SRAMブロックレベルでの制御を施し、故障したSRAMセルを含むSRAMブロックを無効にすることを想定する。
無効にしたSRAMブロックのキャッシュラインは使用できないため、それを含むインデックスにおいて、キャッシュラインの数、すなわち、タグのセット数(ウェイ数)である連想度が減少する。連想度が減少しても、他に割り当てられるキャッシュラインが存在する場合、問題は生じない。例えば、
図2のインデックス0,1において、ウェイ0とウェイ1にキャッシュラインが存在しないが、ウェイ2とウェイ3には存在するので、このキャッシュメモリは、インデックス0,1において、連想度2で動作することが可能である。
【0011】
このように、故障SRAMセルを含むSRAMブロックを無効にしても、同一インデックスに他のキャッシュラインが存在する限り、キャッシュメモリとしての正常な動作が可能である。上述したように、故障SRAMセルは、キャッシュメモリ内でランダムに分布することから、無効にするSRAMブロックの数がインデックス毎に異なることになる。従って、キャッシュメモリの各々のインデックスにおける連想度は、様々な値をとることになる。
図2の場合、キャッシュメモリのインデックス0,1においては連想度2、インデックス2,3においては連想度4、インデックス4〜7においては連想度3で動作する。
【0012】
しかしながら、
図3に示すように、ある特定のインデックスの全てのSRAMブロックが故障SRAMセルを含んでいる場合、そのインデックスにおいてデータを割り当てるキャッシュラインが存在しなくなる。かかる状況では、キャッシュメモリとして適切な動作を行うことができない。そのため、故障SRAMセルを含むブロックを無効にし、キャッシュ動作から単純に除外するだけでは、キャッシュの動作ができない場合が生じてしまうという問題がある。
したがって、故障SRAMセルを含むSRAMブロック(故障SRAMブロック)を単に無効にして動作から除外するだけでは好ましくなく、できるだけ故障SRAMブロックを用いて、特定のインデックスにおいてデータを割り当てるキャッシュラインが存在しなくなるという問題を解決する必要がある。
【0013】
また、一方で、本発明者らは、アプリケーションやメモリ状況に応じてメモリセルのビット信頼性を動的に変化させることができ、動作の安定性を確保して低消費電力化および高信頼性化を実現できるメモリを提案している。
提案するメモリは、1ビットが1個のメモリセルで構成されるモード(1ビット/1セルモード、以下「通常モード」と称する)と、1ビットがn(nは2以上)個のメモリセルを連結して構成されるモード(1ビット/nセルモード、以下「高信頼モード」と称する)とを動的に切り替えることができ、通常モードから高信頼モードに切り替えることにより、1ビットの動作安定性の増大および読出し動作のセル電流の増大(読出し動作の高速化)を行い、またビットエラーの自己修復が行えるメモリである(特許文献1〜3を参照)。
【0014】
かかる提案の半導体メモリの一実施例は、
図4に示すように、各々の出力がメモリセルの列に対応して配置される一対のビットラインの各々に至る経路に接続されるクロスカップル接続された一対のインバータと、ビットラインとインバータの出力との間に設けられた一対のスイッチ部と、スイッチ部の導通が制御し得る1本のワードラインとから構成されるメモリセルにおいて、隣接する2つのメモリセルのデータ保持ノード間に、1対のP型MOSトランジスタと、該P型MOSトランジスタが導通するように制御し得る1本のモード制御ラインを追加した構成とされる。
【0015】
ここで、
図4のメモリセルの回路動作を簡単に説明する。
図4に示すメモリセル(MC01)は、電源電位VVDDAおよび接地電位VGNDAの間に直列に接続されるP型MOSトランジスタ(M00)およびN型MOSトランジスタ(M02)と、電源電位VVDDAおよび接地電位VGNDAの間に直列に接続されるP型MOSトランジスタ(M01)およびN型MOSトランジスタ(M03)とからなるラッチ回路を構成している。メモリセル(MC01)自体は、一般的な6トランジスタの構成のメモリセルである。
メモリセル(MC10)も同様に、電源電位VVDDBおよび接地電位VGNDBの間に直列に接続されるP型MOSトランジスタ(M10)およびN型MOSトランジスタ(M12)と、電源電位VVDDBおよび接地電位VGNDBの間に直列に接続されるP型MOSトランジスタ(M11)およびN型MOSトランジスタ(M13)とからなるラッチ回路を構成している。メモリセル(MC10)自体も、一般的な6トランジスタの構成のメモリセルである。
【0016】
メモリセル(MC01)では、P型MOSトランジスタ(M00)およびN型MOSトランジスタ(M02)のゲート端子は、共にP型MOSトランジスタ(M01)およびN型MOSトランジスタ(M03)のノード(N01)に接続されている。また、P型MOSトランジスタ(M01)およびN型MOSトランジスタ(M03)のゲート端子は、共にP型MOSトランジスタ(M00)およびN型MOSトランジスタ(M02)のノード(N00)に接続されている。このようにM00〜M03のトランジスタはクロスカップル接続されているため、P型MOSトランジスタ(M00,M01)は負荷トランジスタとして動作し、N型MOSトランジスタ(M02,M03)は駆動トランジスタとして動作する。メモリセル(MC10)も同様である。
【0017】
またメモリセル(MC01)は、相補なビットライン(BL,/BL)と、ノード(N00,N01)との間にそれぞれ接続されたN型MOSトランジスタ(M04、M05)のスイッチ部を備える。N型MOSトランジスタ(M04,M05)のゲート端子は、共に共通のワードライン(WLA)に接続されており、N型MOSトランジスタ(M04,M05)のゲート電位はワードライン(WLA)により制御される。すわなち、メモリセル(MC01)においては、P型MOSトランジスタ(M00,M01)を負荷トランジスタとし、N型MOSトランジスタ(M02,M03)を駆動トランジスタし、N型MOSトランジスタ(M04,M05)をスイッチ部として動作するのである。
また、メモリセル(MC10)も、相補なビットライン(BL,/BL)と、ノード(N10,N11)との間にそれぞれ接続されたN型MOSトランジスタ(M14、M15)のスイッチ部を備える。N型MOSトランジスタ(M14,M15)のゲート端子は、共に共通のワードライン(WLA)に接続されており、N型MOSトランジスタ(M14,M15)のゲート電位はワードライン(WLA)により制御される。
【0018】
そして、メモリセル(MC01,MC10)のデータ保持ノード間(N00とN10の間、N01とN11の間)に、モード制御スイッチ部となる1対のP型MOSトランジスタ(M20、M21)が設けられ、このP型MOSトランジスタ(M20、M21)の導通を制御する1本のモード制御ライン(/CTRL)が設けられている。
【0019】
以上のような回路構成のメモリセルでは、1ビットのデータをメモリセル(MC01)に記憶する場合と、1ビットのデータをメモリセル(MC01)とメモリセル(MC10)の2つのメモリセルに記憶する場合とを、モード制御ライン(/CTRL)を用いて、使い分けることが可能である。上記回路構成のメモリセルは、1ビットが1個のメモリセルで構成されるモード(通常モード)と、1ビットが2個のメモリセルを連結して構成されるモード(高信頼モード)の2つの状態を有し、アプリケーションやメモリ状況に応じてメモリセルのビット信頼性を動的に変化させることができ、動作の安定性を確保して低消費電力化および高信頼性化を実現する。
【先行技術文献】
【特許文献】
【0020】
【特許文献1】国際公開パンフレットWO2009/088020
【特許文献2】国際公開パンフレットWO2012/021277
【特許文献3】特開2011−040010号公報
【非特許文献】
【0021】
【非特許文献1】C. Wilkerson,H. Gao, A. R. Alameldeen,Z. Chishti, M. Khellah, andS. -L. Lu, “Trading Off Cache Capacity for Reliability to Enable Low VoltageOperation,” IEEE International Symposium Computer Architecture, pp 203-214,2008
【非特許文献2】J. Kim, N. Hardavellas, K. Mai, B. Falasafi,and J. C. Hoe, “Multi-Bit Error Tolerant Caches Using Two-Dimensional ErrorCoding,” ACM/IEEE International Symposium MicroArchitecture,pp. 197-209, 2007
【発明の概要】
【発明が解決しようとする課題】
【0022】
上述したように、故障SRAMセルを含むSRAMブロックを単に無効にするだけでは、セットアソシアティブ方式のキャッシュメモリは適切な動作をすることはできない。
上記状況に鑑みて、本発明は、特定のインデックスにおいてデータを割り当てるキャッシュラインが存在しなくなるという問題を解決すると共に、キャッシュメモリ全体の動作電圧を効果的に低減できる低電圧動作キャッシュメモリを提供することを目的とする。
【課題を解決するための手段】
【0023】
上記目的を達成するため、本発明の低電圧動作キャッシュメモリは、タグにより構成されるデータ格納構造を備え、複数のメモリセルブロックから構成されるキャッシュウェイを複数備えるセットアソシアティブ方式のキャッシュメモリにおいて、以下の構成とされる。
先ず、メモリセルブロックは、各々の出力がメモリセルの列に対応して配置される一対のビットラインの各々に至る経路に接続されるクロスカップル接続された一対のインバータと、ビットラインとインバータの出力との間に設けられた一対のスイッチ部と、スイッチ部の導通を制御する1本のワードラインと、から構成されるメモリセルと、隣接するメモリセルのデータ保持ノード間にモード制御スイッチ部と、該モード制御スイッチ部の導通を制御する1本のモード制御ラインと、から構成される。
【0024】
そして、メモリセルブロック毎に、1ビットが1個のメモリセルで構成される通常モードから、隣接する2個のメモリセルを連結して1ビットが2個のメモリセルで構成される高信頼モードへと切り替えできる回路構成を備え、メモリセルブロックがオフラインもしくはオンラインで故障検出された場合に、故障検出したメモリセルブロックを高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用するメモリセルブロックにする。これにより、故障したメモリセルブロックの動作マージンを拡大して、キャッシュメモリ全体の最低動作電圧を低減する。
【0025】
本発明の低電圧動作キャッシュメモリのメモリセルブロックは、上記の構成とすることにより、隣接する2つのメモリセルのデータ保持ノード間のモード制御スイッチ部をオン状態(高信頼モード)にすると、1ビットのデータを2つのメモリセルで共有でき、これにより高信頼性を実現できる。すなわち、書き込み時には2本のワードラインを同時に立ち上げ、2つのメモリセルに同時に書き込む。それにより、ペア構造の上下メモリセルにおける書き込みマージンの劣化が緩和される。また、読み出し時にはワードラインを1本のみ立ち上げ、ビットラインを介してデータを読み出す。読み出し時には、読み出し動作マージンSNM(Static noise margin)の小さいメモリセルが他方のメモリセルによって強化される。さらに、内部ノードのキャパシタンスが大きくなる効果が得られるので、ソフトエラー耐性も向上できる。
【0026】
メモリセルブロックは、オフラインもしくはオンラインで故障検出された場合に、どのメモリセルが故障したかを特定することなく、故障検出したメモリセルブロックを高信頼モードに切り替えて、上下に隣接する2つのキャッシュラインのいずれかを使用するメモリセルブロックにする。上述の通り、高信頼モードでは、メモリセルの動作マージンが増大するので、当該メモリセルブロックの動作マージンを拡大できるのである。
また、メモリセルブロック単位で高信頼モードに切り替えすることで、周辺回路(XYデコーダ回路、センスアンプ回路など)の面積オーバヘッドを小さくする。
【0027】
ここで、本発明の低電圧動作キャッシュメモリの故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、キャッシュメモリの全てのキャッシュインデックスに、キャッシュウェイの個数の半分の連想度以上でのキャッシュ動作が可能となるように、キャッシュラインの割り当てを行うことが好ましい。
【0028】
キャッシュメモリの全てのキャッシュインデックスに対して、キャッシュウェイの個数の半分の連想度以上でのキャッシュ動作を可能にすることで、キャッシュインデックス毎の連想度のばらつきを最小限にし、キャッシュヒット率を高く維持できる。
例えば、4ウェイ・セットアソシアティブ方式のキャッシュメモリの場合、連想度2以上でのキャッシュ動作を可能とするように、キャッシュラインの割り当てを行う。また、8ウェイ・セットアソシアティブ方式のキャッシュメモリの場合、連想度4以上でのキャッシュ動作を可能とするように、キャッシュラインの割り当てを行う。
【0029】
4ウェイ・セットアソシアティブ方式のキャッシュメモリにおいて、上述の
図3に示すような、ある特定のインデックスの4つ全てのSRAMブロックが故障SRAMセルを含んでいる場合、4つ全てのSRAMブロックを高信頼モードに切り替えて、連想度2以上でのキャッシュ動作を可能とするように、それぞれのSRAMブロックは、隣接する2つのキャッシュラインのいずれかを使用するように割り当てを行う。
図5に示すように、例えば、ウェイ0とウェイ2が上のキャッシュライン、ウェイ1とウェイ3が下のキャッシュラインに割り当てると、連想度は2を維持できる。
【0030】
具体的には、キャッシュラインの割り当ては、以下のようにすることで、キャッシュウェイの個数の半分の連想度以上でのキャッシュ動作が可能となる。
まず、本発明の低電圧動作キャッシュメモリの故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、偶数番号のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられ、奇数番号のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられる。
【0031】
また、本発明の低電圧動作キャッシュメモリの故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、偶数番号のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられ、奇数番号のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられる。
【0032】
また、本発明の低電圧動作キャッシュメモリの故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、キャッシュウェイの個数がN(番号は0,1,・・・,N−1)とした場合に、番号がN/2未満のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられ、番号がN/2以上のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられる。
【0033】
また、本発明の低電圧動作キャッシュメモリの故障したメモリセルブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、キャッシュウェイの個数がN(番号は0,1,・・・,N−1)とした場合に、番号がN/2未満のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられ、番号がN/2以上のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられる。
【0034】
また、本発明の低電圧動作キャッシュメモリの故障したメモリセルブロックにおいて、高信頼モード時に、隣接する2つのキャッシュラインのいずれを使用するかの識別情報として、使用しない無効キャッシュラインのキャッシュライン状態ビットを、{Valid bit,Dirty bit}={0,1}に設定することが好ましい。
一般的なWrite−backキャッシュメモリにおいて、{Valid bit,Dirty bit}={0,1}の状態は取り得ない。よって、上記のように、無効キャッシュラインのValid bit,Dirty bitをそれぞれ0,1にして、無効キャッシュラインを判別することに利用できる。
【0035】
次に、本発明の低電圧動作キャッシュメモリのLRU(Least Recently Used)置換アルゴリズムについて説明する。
本発明の低電圧動作キャッシュメモリのLRU置換アルゴリズムにおいて、故障したメモリセルブロックが高信頼モード時、使用しない無効キャッシュラインのLRUツリービットをMRU(Most Recently Used)状態に固定する。
LRU置換アルゴリズムでは、LRUキャッシュラインが置換対象になるが、無効キャッシュラインを常にMRU状態に固定することにより、無効キャッシュラインが置換対象のキャッシュラインになることを回避できる。
【0036】
また、本発明の低電圧動作キャッシュメモリのLRU(Least
Recently Used)置換アルゴリズムにおいて、故障したメモリセルブロックが高信頼モード時、使用しない無効キャッシュラインがM個存在する場合、使用しない無効キャッシュラインのLRUツリービットをキャッシュウェイの番号順に0(MRU),1,・・・,M−1にする。
上記の構成にすることで、プロセッサがDVS制御において、Low voltage modeからHigh voltage modeへ切り替える場合、低電圧領域で故障し、高信頼モードで動作していたSRAMブロックを通常モードへ切り替える必要がある場合に、LRUツリービットの再設定を行う必要がなく、隣接するメモリセルのデータ保持ノード間に設けられたモード制御スイッチ部をオフにするだけでよい。
【0037】
また、本発明の低電圧動作キャッシュメモリのLRU置換アルゴリズムにおいて、使用しない無効キャッシュラインがM個存在する場合、キャッシュミスが起きた際に割り当てた新しいデータのキャッシュラインのLRUツリービットをMとし、その他の使用するキャッシュラインのLRUツリービットを、キャッシュミスが起きる以前の順番に従って、それぞれM+1から順に1インクリメントする。
【0038】
例えば、4ウェイ・セットアソシアティブ方式のキャッシュメモリにおいて、あるインデックスに無効キャッシュラインが1個存在する場合、無効キャッシュラインのLRU状態ビットは上述の通りMRU状態(例えば、0)に固定し、キャッシュミスが起きた際に割り当てた新しいデータのキャッシュラインのLRUツリービットを1とし、他の使用するキャッシュラインのLRUツリービットを、キャッシュミスが起きる以前の順番に従って、それぞれ2,3にする。
【0039】
また、例えば、4ウェイ・セットアソシアティブ方式のキャッシュメモリにおいて、あるインデックスに無効キャッシュラインが2個存在する場合、無効キャッシュラインのLRUツリービットは上述の通り0(MRU)に固定し、或いは、無効キャッシュラインのLRUツリービットをキャッシュウェイの番号順に0(MRU),1に固定する。キャッシュミスが起きた際に割り当てた新しいデータのキャッシュラインのLRUツリービットを2とし、他の使用するキャッシュラインのLRUツリービットを3にする。
【0040】
また、本発明の低電圧動作キャッシュメモリのLRU置換アルゴリズムにおいて、使用しない無効キャッシュラインがM個存在する場合、キャッシュヒットが起きたキャッシュラインのLRUツリービットをMとし、その他の使用するキャッシュラインのLRUツリービットを、キャッシュミスが起きる以前の順番に従って、それぞれM+1から順に1インクリメントする。
【0041】
例えば、4ウェイ・セットアソシアティブ方式のキャッシュメモリにおいて、あるインデックスに無効キャッシュラインが1個存在する場合、無効キャッシュラインのLRUツリービットは上述の通り0(MRU)に固定し、或いは、無効キャッシュラインのLRUツリービットをキャッシュウェイの番号順に0(MRU),1に固定し、キャッシュヒットが起きたキャッシュラインのLRUツリービットを1とし、他の使用するキャッシュラインのLRUツリービットを、キャッシュミスが起きる以前の順番に従って、それぞれ2,3にする。
【0042】
また、例えば、4ウェイ・セットアソシアティブ方式のキャッシュメモリにおいて、あるインデックスに無効キャッシュラインが2個存在する場合、無効キャッシュラインのLRUツリービットは上述の通りMRU状態(例えば、0)に固定し、キャッシュヒットが起きたキャッシュラインのLRUツリービットを2とし、他の使用するキャッシュラインのLRUツリービットを3にする。
【発明の効果】
【0043】
本発明の低電圧動作キャッシュメモリによれば、故障SRAMセルを含むSRAMブロック(故障SRAMブロック)を単に無効にするのではなく、故障SRAMブロックを高信頼モードに切り替え、故障SRAMブロックを動作マージンが拡大された元の半分のキャッシュラインを有するSRAMブロックに再構成できる。
また、本発明の低電圧動作キャッシュメモリによれば、故障SRAMブロックが存在した場合でも、連想度が2以上で、適切なキャッシュ動作を行うことができる。
すなわち、本発明の低電圧動作キャッシュメモリによれば、特定のインデックスにおいてデータを割り当てるキャッシュラインが存在しなくなるという問題を解決すると共に、キャッシュメモリ全体の動作電圧を効果的に低減できる。
【図面の簡単な説明】
【0044】
【
図1】4ウェイ・セットアソシアティブ方式のキャッシュメモリの回路構成図
【
図2】4ウェイ・セットアソシアティブ方式のキャッシュメモリのデータ構造図
【
図4】メモリセルのビット信頼性を向上するメモリセルペアの回路構成図
【
図5】従来の問題に関してメモリセルペアを使用した場合の説明図
【
図6】実施例1のセットアソシアティブ方式のキャッシュメモリのデータ構造図
【
図7】実施例1のセットアソシアティブ方式のキャッシュメモリのキャッシュラインの選定パターン例
【
図8】偶数番号のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられ、奇数番号のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられる様子を示した回路図
【
図9】8ウェイ・セットアソシアティブ方式のキャッシュメモリのデータ構造図
【
図12】実施例1のセットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズムの説明図(キャッシュミスが生じたケース)
【
図13】実施例1のセットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズムの説明図(キャッシュヒットが生じたケース)
【
図14】SRAMブロックにおける最低動作電圧実測結果グラフ
【
図15】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(通常モードから高信頼モードへ切替)の説明図(1)
【
図16】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(通常モードから高信頼モードへ切替)の説明図(2)
【
図17】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(高信頼モードから通常モードへ切替)の説明図(1)
【
図18】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(高信頼モードから通常モードへ切替)の説明図(2)
【
図19】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(キャッシュミス)の説明図(1)
【
図20】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(キャッシュミス)の説明図(2)
【
図21】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(キャッシュヒット)の説明図(1)
【
図22】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(キャッシュヒット)の説明図(2)
【
図23】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(無効キャッシュラインが複数の場合のキャッシュミス)の説明図(1)
【
図24】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(無効キャッシュラインが複数の場合のキャッシュミス)の説明図(2)
【
図25】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(無効キャッシュラインが複数の場合のキャッシュヒット)の説明図(1)
【
図26】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(無効キャッシュラインが複数の場合のキャッシュヒット)の説明図(2)
【
図27】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(無効キャッシュラインが複数の場合のキャッシュミス)の説明図(3)
【
図28】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(無効キャッシュラインが複数の場合のキャッシュミス)の説明図(4)
【
図29】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(無効キャッシュラインが複数の場合のキャッシュヒット)の説明図(3)
【
図30】8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズム(無効キャッシュラインが複数の場合のキャッシュヒット)の説明図(4)
【発明を実施するための最良の形態】
【0045】
以下、本発明の実施形態について、図面を参照しながら詳細に説明していく。なお、本発明の範囲は、以下の実施例や図示例に限定されるものではなく、幾多の変更及び変形が可能である。
【実施例1】
【0046】
図6は、実施例1の4ウェイ・セットアソシアティブ方式のキャッシュメモリのデータ構造図を示している。
各ウェイは、4つのSRAMブロックで構成されている。また、各SRAMブロックの個々のメモリセルは、上下に隣接したメモリセルペアとなっており、
図4に示すように、6トランジスタで構成される1ビットのメモリセルペア(MC01,MC10)のデータ保持ノード間に、モード制御スイッチ部として1対のP型MOSトランジスタ(M20,M21)と、このP型MOSトランジスタの導通を制御する1本のモード制御ライン(/CTRL)とが設けられている。そして、上下に隣接したメモリセルペアは、通常モードと動作マージンが拡大される高信頼モードの2つのモードを実現する。
通常モードは、1ビットが1個のメモリセル(MC01、或いは、MC10)で構成される。一方、高信頼モードは、1ビットが2個のメモリセルのペア(MC01,MC10)で構成される。2つの動作モードの切り替えは、メモリセルのペア(MC01,MC10)の間にあるP型MOSトランジスタの導通を制御する1本のモード制御ライン(/CTRL)で行う。
このようなメモリセルペアをマトリックス状に配置したSRAMブロックによって、ウェイを構成し、
図6に示すようにキャッシュメモリのデータ構造になっている。
【0047】
図6に示すデータ構造図では、
図2のデータ構造で、ウェイ0の1段目とウェイ1の1段目,3段目とウェイ3の4段目のそれぞれのSRAMブロックに故障(defect)が生じた際に、ウェイ0の1段目とウェイ1の1段目,3段目とウェイ3の4段目のそれぞれの故障SRAMブロックは、動作マージンが拡大される高信頼モードに切り替わる。その際、どのメモリセルに故障が生じたかは探索とせず、故障SRAMブロック全体が高信頼モードになる。高信頼モードになった故障SRAMブロックでは、動作マージンが拡大された半分のキャッシュラインが生成できる。そのため、故障SRAMブロックを単にキャッシュ動作から除外するのではなく、故障SRAMブロックを使用し続けることが可能になる。
【0048】
従って、故障SRAMブロックを単に動作から除外する場合と比べて、平均連想度が向上する。これについて詳細に述べる。
図2のデータ構造の場合、インデックス0〜7について、それぞれ故障していないSRAMブロック数は、3,3,4,4,3,4,3,4である。ここで、故障SRAMブロックを単にキャッシュ動作から除外すると、インデックス0〜7について、故障していないSRAMブロック数は、2,2,4,4,3,3,3,3になる。従って、キャッシュメモリ全体の平均連想度は(2+2+4+4+3+3+3+3)÷8=3になる。
【0049】
一方、
図6のデータ構造図の場合、インデックス0〜7について、それぞれ故障していないSRAMブロック数は、3,3,4,4,3,4,3,4である。
図6の場合、故障SRAMブロックを高信頼モードに切り替えて、動作マージンを拡大してそのままキャッシュ動作を継続するので、インデックス0〜7について、故障していないSRAMブロック数は、3,3,4,4,3,4,3,4になる。従って、キャッシュメモリ全体の平均連想度は(3+3+4+4+3+4+3+4)÷8=3.5に向上される。
【0050】
図7は、実施例1のセットアソシアティブ方式のキャッシュメモリのキャッシュラインの選定パターン例を示している。
図7(A)は、隣接する2つキャッシュラインのインデックスをN,N+1とした場合に、偶数番号のキャッシュウェイ(ウェイ0,2,・・・,6)のメモリセルブロックの場合にはインデックス番号Nのキャッシュラインが割り当てられ(ENABLE
CACHE LINEを割り当て)、奇数番号のキャッシュウェイ(ウェイ1,3,・・・,7)のメモリセルブロックの場合にはインデックス番号N+1のインデックスのキャッシュラインが割り当てられる選定パターンを示している。例えば、Nが偶数の場合、偶数番号のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられ、奇数番号のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられる。また、Nが奇数の場合、偶数番号のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられ、奇数番号のキャッシュウェイのメモリセルブロックの場合には偶数インデックスのキャッシュラインが割り当てられる。
【0051】
また、
図7(B)は、隣接する2つキャッシュラインのインデックスをN,N+1とした場合に、キャッシュウェイ(ウェイ0,1,6,7)のメモリセルブロックの場合にはインデックス番号Nのキャッシュラインが割り当てられ(ENABLE
CACHE LINEを割り当て)、その他のキャッシュウェイ(ウェイ2,3,4,5)のメモリセルブロックの場合にはインデックス番号N+1のインデックスのキャッシュラインが割り当てられる選定パターンを示している。
【0052】
また、
図7(C)は、隣接する2つキャッシュラインのインデックスをN,N+1とした場合に、キャッシュウェイ(ウェイ0,1,6,7)のメモリセルブロックの場合にはインデックス番号N+1のキャッシュラインが割り当てられ(ENABLE
CACHE LINEを割り当て)、その他のキャッシュウェイ(ウェイ2,3,4,5)のメモリセルブロックの場合にはインデックス番号Nのインデックスのキャッシュラインが割り当てられる選定パターンを示している。
【0053】
このように、故障SRAMブロックにおいて、高信頼モードに切り替えて、隣接する2つのキャッシュラインのいずれかを使用する際に、キャッシュメモリの全てのキャッシュインデックスに、キャッシュウェイの個数の半分の連想度以上でのキャッシュ動作が可能となるようにキャッシュラインの割り当てを行う。
【0054】
図8は、
図7(A)の選定パターンの回路図であり、偶数番号のキャッシュウェイのメモリセルブロックの場合にはインデックス番号N,N+2,・・・,N+62のキャッシュラインが割り当てられ、奇数番号のキャッシュウェイのメモリセルブロックの場合にはインデックス番号N+1,N+3,・・・,N+63のキャッシュラインが割り当てられる様子を示した回路図を示している。
図8(1)は、偶数番号のキャッシュウェイのメモリセルブロックのメモリセル回路構造であり、上下に隣接するメモリセルペアの下側のメモリセルが無効とされ(DISABLE)、インデックス番号N,N+2,・・・,N+62のキャッシュラインが割り当てられている。
図8(2)は、奇数番号のキャッシュウェイのメモリセルブロックのメモリセル回路構造であり、上下に隣接するメモリセルペアの上側のメモリセルが無効とされ(DISABLE)、インデックス番号N+1,N+3,・・・,N+63のキャッシュラインが割り当てられている。
【0055】
図9は、8ウェイ・セットアソシアティブ方式のキャッシュメモリのデータ構造図である。各ウェイは16KbitのSRAMブロックを4個備え、キャッシュメモリ全体で32個のSRAMブロックを備えた512Kbitの8ウェイ・セットアソシアティブ方式のキャッシュメモリである。
奇数番号のキャッシュウェイのメモリセルブロックの場合には奇数インデックスのキャッシュラインが割り当てられるとする(偶数インデックスのキャッシュラインは無効)。
図9に示すように、ウェイ1の2段目のSRAMブロックが故障ブロックであると、高信頼モードに切り替えた場合に、偶数インデックスのキャッシュラインは無効となり、奇数インデックス(インデックス65,67,・・・,125,127)のキャッシュラインのみ割り当てられる。その結果、インデックス番号64〜127の連想度は、7,8,7,8,・・・,7,8となる。
【0056】
図10は、キャッシュラインの状態ビットの説明図である。故障SRAMブロックにおいて、高信頼モード時に、隣接する2つのキャッシュラインのいずれを使用するかの識別情報として、使用しない無効状態(INVALID)のキャッシュラインのキャッシュライン状態ビットを{Valid bit,Dirty bit}={0,1}に設定する。
このように、無効キャッシュラインは、キャッシュの状態ビットの性質を利用することで容易に判別することが可能である。
一般的なWrite−backキャッシュメモリにおいて{Valid bit,Dirty bit}={0,1}の状態は取り得ない。よって、上記のように、無効キャッシュラインのValid bit,Dirty bitをそれぞれ0,1にして、無効キャッシュラインを判別することに利用する。その他のキャッシュライン状態(EMPTY,CLEAN,DIRTY)は、予め使用されているものであり、本発明では特に変更しない。
【0057】
図11は、キャッシュメモリのブロック図である。
図11に示すキャッシュメモリは、64KBの8ウェイ・セットアソシアティブ方式のキャッシュメモリ(32バイトキャッシュライン)であり、データアレーを4つのSRAMバンクで構成している。図に示すように、データアレーに合わせてタグアレーも4つのSRAMブロックで構成している。データアレーとタグアレーのSRAMセルとして、
図4に示すような、6トランジスタで構成される1ビットのメモリセルペア(MC01,MC10)のデータ保持ノード間に、モード制御スイッチ部として1対のP型MOSトランジスタ(M20,M21)と、このP型MOSトランジスタの導通を制御する1本のモード制御ライン(/CTRL)とが設けられているセルを用いる。そして、上下に隣接したメモリセルペアは、通常モードと動作マージンが拡大される高信頼モードの2つのモードを実現する。SRAMブロック単位で通常モードと高信頼モードの2つのモードの切替制御を行えるようにする。キャッシュステータスRAMは、1つのブロックの6トランジスタで構成される1ビットのメモリセルで構成する。キャッシュステータスRAMには、一般的なキャッシュと同様に、VALID,DIRTY,キャッシュのブロック置換アルゴリズム情報(LRUなど)などが格納されている。
【0058】
次に、本発明のキャッシュメモリのLRU(Least Recently Used)置換アルゴリズムについて説明する。
図12は、実施例1の4ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズムの説明図(キャッシュミスが生じたケース)である。
図12(1)は従来のLRU置換アルゴリズムによるキャッシュ動作の一例を示しており、
図12(2)が本発明のキャッシュメモリに適用するように改良されたLRU置換アルゴリズムによるキャッシュ動作の一例を示している。説明を簡単にするため、ウェイを構成するいずれかのSRAMブロックが高信頼モードに切り替わるという状態を、
図12のようにウェイが高信頼モードに切り替わったように図示する。
【0059】
まず、
図12(1)の従来のLRU置換アルゴリズムによるキャッシュ動作を説明する。4つのキャッシュウェイ(WAY0〜3)のLRUツリービットが、ある順番になっているとして、キャッシュウェイ2(WAY2)に高信頼モードを適用する。無効キャッシュラインをキャッシュ動作から外すために、高信頼モードで動作するSRAMブロックにおいて、論理上で無効化されたインデックスのLRU状態をMRU(Most
Recently Used)、すなわちLRUツリービットを0に固定する。これにより、無効キャッシュラインにデータが割り当てられることを避ける。
従来のLRU置換アルゴリズムでは、キャッシュウェイ2が論理上で無効化されている状態で、キャッシュミスが起きた場合、LRUツリー上のLRU(LRUツリービットが3)のキャッシュライン(キャッシュウェイ0)に新しいデータを割り当て、そのキャッシュラインをMRU(LRUツリービットが0)とする。他のキャッシュラインのLRUツリービットをそれぞれ1インクリメントする(WAY1:2−>3,WAY2:0−>1,WAY3:1−>2)。
【0060】
次に、
図12(2)の改良されたLRU置換アルゴリズムによるキャッシュ動作を説明する。改良されたLRU置換アルゴリズムでは、キャッシュミスが起きた場合、LRU状態のキャッシュラインに新しいデータを割り当てる際に、もし、高信頼モードが適用された無効キャッシュラインがN個存在すれば、新しいデータを割り当てたキャッシュラインのLRUツリービットをMRU+N、すなわち、
図12のように高信頼モードが適用された無効キャッシュラインが1個存在するならば、新しいデータを割り当てたキャッシュライン(キャッシュウェイ0)のLRUツリービットを0+1=1とする。無効でない他の有効なキャッシュラインのLRUツリービットをそれぞれ1インクリメントする(WAY1:2−>3,WAY3:1−>2)。
なお、無効キャッシュラインが存在しなければ、従来のLRU置換アルゴリズムと同じ動作をする。
【0061】
また、
図13は、実施例1の4ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズムの説明図(キャッシュヒットが生じたケース)である。
図13(1)は従来のLRU置換アルゴリズムによるキャッシュ動作の一例を示しており、
図13(2)が本発明のキャッシュメモリに適用するように改良されたLRU置換アルゴリズムによるキャッシュ動作の一例を示している。
図13においても、
図12と同様に、説明を簡単にするため、ウェイを構成するいずれかのSRAMブロックが高信頼モードに切り替わるという状態を、ウェイが高信頼モードに切り替わったように図示する。
【0062】
まず、
図13(1)の従来のLRU置換アルゴリズムによるキャッシュ動作を説明する。4つのキャッシュウェイ(WAY0〜3)のLRUツリービットが、ある順番になっているとして、キャッシュウェイ2(WAY2)に高信頼モードを適用する。無効キャッシュラインをキャッシュ動作から外すために、高信頼モードで動作するSRAMブロックにおいて、論理上で無効化されたインデックスのLRU状態をMRU(Most Recently Used)、すなわちLRUツリービットを0に固定する。これにより、無効キャッシュラインにデータが割り当てられることを避ける。
【0063】
従来のLRU置換アルゴリズムでは、キャッシュウェイ2が論理上で無効化されている状態で、キャッシュウェイ1でキャッシュヒットが起きた場合、キャッシュヒットが起きたキャッシュウェイ1のキャッシュラインをMRU(LRUツリービットが0)とする。他のキャッシュラインのうち、LRUツリービットの状態がキャッシュヒットしたキャッシュラインより小さいキャッシュラインのLRUツリービットを1インクリメントする。
図13に示す例では、キャッシュウェイ1(LRUツリービットが2)よりLRUツリービットの値が小さい、キャッシュウェイ2(LRUツリービットが0),キャッシュウェイ3(LRUツリービットが1)のLRUツリービットを1インクリメントする。
【0064】
次に、
図13(2)の改良されたLRU置換アルゴリズムによるキャッシュ動作を説明する。改良されたLRU置換アルゴリズムでは、高信頼モードが適用された無効キャッシュラインがN個存在すれば、キャッシュウェイ1でキャッシュヒットが起きた場合、キャッシュヒットが起きたキャッシュウェイ1のLRUツリービットをMRU+N、すなわち、
図13のように高信頼モードが適用された無効キャッシュラインが1個存在するならば、キャッシュヒットが起きたキャッシュウェイ1のLRUツリービットを0+1=1とする。無効でない他の有効なキャッシュライン以外で、LRUツリービットの状態がキャッシュヒットしたキャッシュライン1のLRUツリービットの状態(
図13では2の状態)より小さいもののLRUツリービットを1インクリメントする。
図13の例では、キャッシュウェイ3が、キャッシュライン1のLRUツリービットの状態より小さいもののLRUツリービットを有し、キャッシュウェイ3のLRUツリービットを1インクリメントする(WAY3:1−>2)。
なお、無効キャッシュラインが存在しなければ、従来のLRU置換アルゴリズムと同じ動作をする。
【0065】
図14は、SRAMブロックにおける最低動作電圧実測結果グラフである。実測対象のキャッシュメモリは、65nmCMOSプロセスで試作した512Kbitの8ウェイ・セットアソシアティブ方式のキャッシュメモリである。32個の16KbitのSRAMブロックで構成され、各ウェイは4個のSRAMブロックから成る。
このキャッシュメモリは、高信頼モードで0.57(V)で動作可能であることがわかっている。従って、通常モードにおいて0.57(V)で動作できないSRAMブロックのみ高信頼モードを適用することで、全体の動作電圧を低減することができる。
図14のグラフにおいて、左側が通常モード、右側が高信頼モードの場合を示しており、それぞれ32個のSRAMブロック(0〜31)の動作電圧を実測している。通常モードでは、図中に丸印を付記した5つのSRAMブロック(6,8,16,25,28)に高信頼モードを適用することにより、0.65(V)から0.57(V)へと80(mV)の動作電圧の削減効果を得ることができる。この場合、16Kbitの5つのブロックにおいて、それぞれメモリ容量が半減することから、全体のメモリ容量は、16×5×0.5=40Kbit減少し、512−40=472Kbitになる。従って、キャッシュメモリの容量オーバヘッドは、40÷512×100=7.81(%)になる。
【0066】
次に、キャッシュメモリの面積オーバヘッドについて説明する。面積オーバヘッドの評価には、CACTI(詳細は、N. Muralimanohar, R. Balasubramonian,
and N. P. Jouppi, “CACTI
6.0,” Technical Report HPL-2009-85, Hewlett Packard Labs, 2009を参照。)を用いた。
本発明のキャッシュメモリに用いるメモリセルペア(14トランジスタで構成)を用いたSRAMセル(Proposed)の面積は、通常の6トランジスタで構成されるSRAMセルペア(6T
SRAM)の面積より11%大きい(詳細は、H. Fujiwara, S. Okumura, Y. Iguchi, H.
Noguchi, H. Kawaguchi and M. Yoshimoto, “A
7T/14T Dependable SRAM and Its Array Structure to Avoid Half Selection,” IEEE
International Conference on VLSI Design, pp. 295-300, 2009.を参照。)。
また、評価対象である、32バイトのキャッシュラインを持つ512Kbit(64KB)の8ウェイ・セットアソシアティブ方式の場合、タグアレーの容量は4.75KBと小さく、ばらつきの影響が比較的小さいと考えられることから、面積オーバヘッドの評価においてはSTATUS
RAMと同様に6トランジスタのSRAMで構成することにした。そして、タグアレーには、0.5(V)で動作可能な、最小面積より1.3倍大きい6トランジスタのSRAMを使用すると仮定した。
【0067】
下記表1に、512Kbit(64KB)の8ウェイ・セットアソシアティブ方式のキャッシュメモリの面積オーバヘッドを見積もった結果を示す。65nmプロセスにおいて、本発明のキャッシュメモリは、5.22%の面積オーバヘッドであった。
【0068】
【表1】
【実施例2】
【0069】
図15〜30を参照して、8ウェイ・セットアソシアティブ方式のキャッシュメモリについて、故障SRAMブロックが複数(M個)存在し、無効キャッシュラインが複数(M個)存在する場合について、例を挙げて説明する。
ここで、MRUを0,LRUを7とする。また、実施例1と同様、説明を簡単にするため、ウェイを構成するいずれかのSRAMブロックが高信頼モードに切り替わるという状態を、ウェイが高信頼モードに切り替わったように図示する。
図15は、オンラインで高信頼モードに切り替え、無効キャッシュラインがM個(M=3)存在する場合に、M個の無効キャッシュラインのLRU状態をMRU(=0)に設定する様子を示している。また、他の無効でないキャッシュラインは、LRUツリービットの順番に従って、M(=3)からN−1(=7)にする。ここで、Nはウェイ数の8である。
図15では、キャッシュウェイ2,4,6が、高信頼モードで動作するSRAMブロックであり、論理上で無効にしたインデックスのキャッシュラインである(M=3)。キャッシュウェイ2,4,6のLRU状態を全てMRU(=0)に固定し、他のキャッシュラインのLRU状態は、LRUツリービットの順番で3から7までとなる。
【0070】
また、
図16は、オンラインで高信頼モードに切り替え、無効キャッシュラインがM個(M=3)存在する場合に、M個の無効キャッシュラインのLRU状態をMRU(=0)からウェイ番号順にM−1(=2)までに設定する。また、他の無効でないキャッシュラインは、LRUツリービットの順番に従って、M(=3)からN−1(=7)にする。ここで、Nはウェイ数の8である。
図16では、キャッシュウェイ2,4,6が、高信頼モードで動作するSRAMブロックであり、論理上で無効にしたインデックスのキャッシュラインである(M=3)。キャッシュウェイ2,4,6のLRU状態を順番に、MRU(=0),1,2に固定し、他のキャッシュラインのLRU状態は、LRUツリービットの順番で3から7までとなる。
【0071】
例えば、プロセッサがDVS制御において、Low
voltage modeからHigh voltage modeへ切り替える場合、低電圧領域で故障し、高信頼モードで動作していたSRAMブロックを通常モードへ切り替える必要がある。その時、
図16に示すように、高信頼モードで動作しているキャッシュウェイ2,4,6のLRU状態を順番に、MRU(=0),1,2に固定しておけば、LRUツリービットの再設定を行う必要がなく(
図17を参照)、データアレーとタグアレーにおけるメモリセルペアのモード制御スイッチ部(PMOSスイッチ)をオフにするだけでよい。
【0072】
一方、
図15に示すように、高信頼モードで動作しているキャッシュウェイ2,4,6のLRU状態を全てMRU(=0)に固定した場合には、無効キャッシュラインのLRUツリービットが全てMRU(=0)になっているので、SRAMブロックを通常モードへ切り替える際には、キャッシュウェイ2,4,6のLRU状態を0,1,2というようにLRUツリービットの再設定を行う必要がある(
図18を参照)。
【0073】
次に、
図19〜22を参照して、使用しない無効キャッシュラインが1つの場合の8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズムについて説明する。
図19,20はキャッシュミスの説明図であり、
図21,22はキャッシュヒットの説明図である。
図19〜22では、キャッシュウェイ2(WAY2)だけが高信頼モードとなり、使用しない無効キャッシュライン数が1つの場合を示している。
図19は、従来のLRU置換アルゴリズムを適用した場合を示しており、キャッシュミスが起きて、LRUツリービットでLRU(=7)のキャッシュウェイ1がデータ更新されてMRU(=0)となり、他のキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。
【0074】
一方、
図20は、改良されたLRU置換アルゴリズムを適用した場合を示しており、キャッシュミスが起きて、LRUツリービットでLRU(=7)のキャッシュウェイ1がデータ更新されてMRU+1=1となり、他の有効なキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。キャッシュウェイ2(WAY2)のLRUツリービットの状態は、MRU(=0)に固定されている。
【0075】
また、
図21は、従来のLRU置換アルゴリズムを適用した場合を示しており、キャッシュウェイ3でキャッシュヒットが起きて、LRUツリービットの状態がMRU(=0)となり、キャッシュヒットが起きたキャッシュウェイ3のLRUツリービットの状態より小さい状態(0〜5)の他のキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。
【0076】
一方、
図22は、改良されたLRU置換アルゴリズムを適用した場合を示しており、キャッシュウェイ3でキャッシュヒットが起きて、LRUツリービットの状態がMRU+1=1となり、キャッシュヒットが起きたキャッシュウェイ3のLRUツリービットの状態より小さい状態で、かつ、LRUツリービットの状態がMRU(=0)の無効キャッシュラインでない他の有効なキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。
【0077】
次に、
図23〜26を参照して、使用しない無効キャッシュラインが3つの場合の8ウェイ・セットアソシアティブ方式のキャッシュメモリのLRU置換アルゴリズムについて説明する。
図23,24はキャッシュミスの説明図であり、
図25,26はキャッシュヒットの説明図である。
図23〜26では、3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)が高信頼モードとなり、使用しない無効キャッシュライン数が3つの場合を示している。
図23は、従来のLRU置換アルゴリズムを適用した場合を示しており、キャッシュミスが起きて、LRUツリービットでLRU(=7)のキャッシュウェイ1がデータ更新されてMRU(=0)となり、他のキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。ここで、3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)のLRUツリービットの状態は、高信頼モードが切り替わった際に、全てMRU(=0)が設定されており、キャッシュミスが起きた際に1インクリメントされて全て1となっている。
【0078】
一方、
図24は、改良されたLRU置換アルゴリズムを適用した場合を示しており、キャッシュミスが起きて、LRUツリービットでLRU(=7)のキャッシュウェイ1がデータ更新されてMRU+3(使用しない無効キャッシュライン数)=3となり、他の有効なキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)のLRUツリービットの状態は、MRU(=0)に固定されている。
【0079】
また、
図25は、従来のLRU置換アルゴリズムを適用した場合を示しており、キャッシュウェイ3でキャッシュヒットが起きて、LRUツリービットの状態がMRU(=0)となり、キャッシュヒットが起きたキャッシュウェイ3のLRUツリービットの状態より小さい状態(0〜5)の他のキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)のLRUツリービットの状態も1インクリメントされて全て1となっている。
【0080】
一方、
図26は、改良されたLRU置換アルゴリズムを適用した場合を示しており、キャッシュウェイ3でキャッシュヒットが起きて、LRUツリービットの状態がMRU+3=3となり、キャッシュヒットが起きたキャッシュウェイ3のLRUツリービットの状態より小さい状態で、かつ、LRUツリービットの状態がMRU(=0)の無効キャッシュラインでない他の有効なキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)のLRUツリービットの状態は、MRU(=0)に固定されている。
【0081】
次に、
図27〜30を参照して、使用しない無効キャッシュラインが3つの場合の8ウェイ・セットアソシアティブ方式のキャッシュメモリの他のLRU置換アルゴリズムについて説明する。
図27,28はキャッシュミスの説明図であり、
図29,30はキャッシュヒットの説明図である。
図27〜30では、3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)が高信頼モードとなり、使用しない無効キャッシュライン数が3つの場合を示している。
図27は、従来のLRU置換アルゴリズムを適用した場合を示しており、キャッシュミスが起きて、LRUツリービットでLRU(=7)のキャッシュウェイ1がデータ更新されてMRU(=0)となり、他のキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。ここで、3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)のLRUツリービットの状態は、高信頼モードが切り替わった際に、ウェイ番号の小さい順番から0,1,2と設定されており、キャッシュミスが起きた際に1インクリメントされてそれぞれ1,2,3となっている。
【0082】
一方、
図28は、改良されたLRU置換アルゴリズムを適用した場合を示しており、キャッシュミスが起きて、LRUツリービットでLRU(=7)のキャッシュウェイ1がデータ更新されてMRU+3(使用しない無効キャッシュライン数)=3となり、他の有効なキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。ここで、3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)のLRUツリービットの状態は、高信頼モードが切り替わった際に、ウェイ番号の小さい順番から0,1,2と設定されたまま固定されている。
すなわち、使用しない無効キャッシュラインがM個存在する場合、M個の無効キャッシュラインのLRU状態は、MRU(=0)からウェイ番号順にM−1までに設定され、キャッシュミスが起きた際に割り当てた新しいデータのキャッシュラインのLRUツリービットをMとし、
他の使用するキャッシュラインのLRUツリービットを、キャッシュミスが起 きる以前の順番に従って、それぞれM+1から順に1インクリメントする。
【0083】
また、
図29は、従来のLRU置換アルゴリズムを適用した場合を示しており、キャッシュウェイ3でキャッシュヒットが起きて、LRUツリービットの状態がMRU(=0)となり、キャッシュヒットが起きたキャッシュウェイ3のLRUツリービットの状態より小さい状態(0〜5)の他のキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)のLRUツリービットの状態も1インクリメントされて0,1,2から1,2,3となっている。
【0084】
一方、
図30は、改良されたLRU置換アルゴリズムを適用した場合を示しており、キャッシュウェイ3でキャッシュヒットが起きて、LRUツリービットの状態がMRU+3(使用しない無効キャッシュライン数)=3となり、キャッシュヒットが起きたキャッシュウェイ3のLRUツリービットの状態より小さい状態で、かつ、LRUツリービットの状態がMRU(=0)の無効キャッシュラインでない他の有効なキャッシュウェイのLRUツリービットの状態が1インクリメントされた様子を示している。3つのキャッシュウェイ2,4,6(WAY2、WAY4,WAY6)のLRUツリービットの状態は、高信頼モードが切り替わった際に、ウェイ番号の小さい順番から0,1,2と設定されたまま固定されている。
すなわち、使用しない無効キャッシュラインがM個存在する場合、M個の無効キャッシュラインのLRU状態は、MRU(=0)からウェイ番号順にM−1までに設定され、キャッシュヒットが起きたキャッシュラインのLRUツリービットをMとし、
他の使用するキャッシュラインのLRUツリービットを、キャッシュヒットが起きる以前の順番に従って、それぞれM+1から順に1インクリメントする。
【産業上の利用可能性】
【0085】
本発明は、コンピュータのキャッシュメモリに有用である。
【符号の説明】
【0086】
MC,MC01,MC10 メモリセル