(57)【要約】【課題】積層メモリにおいて、不良の発生の可能性があるメモリブロックを検出し、当該メモリブロックの使用を停止することで、積層メモリの不良化を抑止する。【解決手段】半導体装置は、積層された複数のメモリを含む積層メモリと、前記複数のメモリが有する複数のメモリブロックからそれぞれ読み出される読み出しデータの読み出しマージンを減らしたテストを実行するテスト部と、前記テスト部によるテストでエラーが発生した回数を前記メモリブロックごとに保持する第１のカウンタ部と、前記第１のカウンタ部が保持する回数が予め定めた第１の閾値を超えたメモリブロックの使用を禁止するメモリ管理部と、を有する。【選択図】図１
2020170577.tif 000002
【特許請求の範囲】
【請求項１】
積層された複数のメモリを含む積層メモリと、
前記複数のメモリが有する複数のメモリブロックからそれぞれ読み出される読み出しデータの読み出しマージンを減らしたテストを実行するテスト部と、
前記テスト部によるテストでエラーが発生した回数を前記メモリブロックごとに保持する第１のカウンタ部と、
前記第１のカウンタ部が保持する回数が予め定めた第１の閾値を超えたメモリブロックの使用を禁止するメモリ管理部と、
を有することを特徴とする半導体装置。
【請求項２】
前記積層メモリで発生する訂正可能なエラーを訂正するエラー検出訂正部と、
前記エラー検出訂正部で訂正したエラーの数を前記メモリブロック毎に保持する第２のカウンタ部と、を有し、
前記メモリ管理部は、さらに、前記第２のカウンタ部が保持する回数が予め定めた第２の閾値を超えたメモリブロックの使用を禁止することを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記第１の閾値は、前記第２の閾値より大きいことを特徴とする請求項２に記載の半導体装置。
【請求項４】
前記メモリ管理部は、前記第２のカウンタ部のカウンタ値を所定の頻度でクリアすることを特徴とする請求項２または請求項３に記載の半導体装置。
【請求項５】
前記積層メモリから読み出される読み出しデータを保持するバッファを有し、
前記テスト部は、前記読み出しデータを前記バッファに取り込む取り込みタイミングを早めることで読み出しマージンを減らすことを特徴とする請求項１ないし請求項４のいずれか１項に記載の半導体装置。
【請求項６】
前記メモリブロックの所定数を使用してユーザプログラムを実行する演算処理装置を有し、
前記メモリ管理部は、前記ユーザプログラムの終了に基づいて、使用の禁止を決定したメモリブロックの使用を禁止することを特徴とする請求項１ないし請求項５のいずれか１項に記載の半導体装置。
【請求項７】
前記メモリ管理部は、前記第１のカウンタ部のカウンタ値を所定の頻度でクリアすることを特徴とする請求項１ないし請求項６のいずれか１項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関する。
【背景技術】
【０００２】
クロックに同期してシリアルデータを出力するメモリを試験する場合、最初のデータと中間のデータと最後のデータとでクロックの位相を変えることで、タイミングマージン試験の試験時間は短縮される（例えば、特許文献１参照）。
【０００３】
メモリの監視機能付きのメモリコントローラは、監視の開始指示に基づいて、メモリから順次データを読み出して、エラーの有無およびエラーが修正可能かを判定し、修正可能な場合、データを修正してメモリに再書き込みする（例えば、特許文献２参照）。
【０００４】
メモリセルの不良を救済する冗長領域を有する不揮発性メモリにおいて、救済に使用する不良アドレスをヒューズにプログラムする代わりにセルアレイに記憶することで、チップ面積が削減され、歩留りが向上する（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平６−３６５９８号公報
【特許文献２】国際公開第２００６／１００７７６号
【特許文献３】特開２０００−２６０１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近時、ＣＰＵ（Central  Processing  Unit）等のプロセッサが扱うデータ量が増加する傾向にあり、プロセッサによりアクセスされるメモリの記憶容量も増加する傾向にある。記憶容量の増加によるメモリレイテンシの増大を抑止するために、複数のメモリチップを積層することで配線の負荷容量を減らした積層メモリが使用されるようになってきている。
【０００７】
しかしながら、積層メモリは、ＴＳＶ（Through-Silicon  Via）等により複数のメモリチップを一体化しており、さらに一体化したメモリチップは、バンプを使用してシリコンインターポーザ等の基板等に接続される。このため、不良が発生したメモリチップだけを交換することは困難である。また、メモリチップに不良が発生した場合、システム停止等の深刻な障害が発生し得るため、不良が発生する可能性を予め検出し、予防的措置を行うことが好ましい。
【０００８】
１つの側面では、本発明は、積層メモリにおいて、不良の発生の可能性があるメモリブロックを検出し、当該メモリブロックの使用を停止することで、積層メモリの不良化を抑止することを目的とする。
【課題を解決するための手段】
【０００９】
一つの観点によれば、半導体装置は、積層された複数のメモリを含む積層メモリと、前記複数のメモリが有する複数のメモリブロックからそれぞれ読み出される読み出しデータの読み出しマージンを減らしたテストを実行するテスト部と、前記テスト部によるテストでエラーが発生した回数を前記メモリブロックごとに保持する第１のカウンタ部と、前記第１のカウンタ部が保持する回数が予め定めた第１の閾値を超えたメモリブロックの使用を禁止するメモリ管理部と、を有する。
【発明の効果】
【００１０】
１つの側面では、本発明は、積層メモリにおいて、不良の発生の可能性があるメモリブロックを検出し、当該メモリブロックの使用を停止することで、積層メモリの不良化を抑止することができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態における半導体装置の一例を示す図である。
【図２】別の実施形態における半導体装置の一例を示す図である。
【図３】図２のテスト部の要部の一例を示す図である。
【図４】図３のテスト部が生成するセット信号の一例を示す図である。
【図５】図３のテスト部による読み出しテストの一例を示す図である。
【図６】図２のＣＰＵが実行するユーザプログラム処理のフローの一例を示す図である。
【図７】図２のＣＰＵが実行するメモリパトロールの起動フローの一例を示す図である。
【図８】図２のＣＰＵが実行するメモリパトロールの処理フローの一例を示す図である。
【図９】図２のＣＰＵが実行するページの使用を禁止する処理フローの一例を示す図である。
【図１０】図２の半導体装置が搭載されるパッケージの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を用いて実施形態が説明される。
【００１３】
図１は、一実施形態における半導体装置の一例を示す。図１に示す半導体装置１００は、積層された複数のメモリチップ１０を含む積層メモリＭＥＭと、テスト部１２と、第１のカウンタ部１４と、メモリ管理部１６とを有する。メモリチップ１０は、メモリの一例である。各メモリチップ１０は、例えば、ユーザプログラムに割り当てる単位である複数のメモリブロック１０ａ（メモリ領域）を有する。テスト部１２は、積層メモリＭＥＭに出力したアドレスに基づいてメモリブロック１０ａからそれぞれ読み出される読み出しデータの読み出しマージンを減らしたテストを実行する。例えば、テスト部１２は、読み出しデータの取り込みタイミングを標準のタイミングよりも早めることで読み出しマージンを減らす。
【００１４】
第１のカウンタ部１４は、テスト部１２による読み出しテストでエラーが発生した回数をメモリブロック１０ａ毎に保持する複数のカウンタ領域を有する。第１のカウンタ部１４は、８個のカウンタ領域が記載されているが、実際には、４つのメモリチップ１０の全てのメモリブロック１０ａに対応するカウンタ領域を有する。テスト部１２は、読み出しマージンを減らした読み出しテストでエラーが発生したメモリブロック１０ａに対応するカウンタ領域に保持されているカウンタ値を更新する。メモリ管理部１６は、第１のカウンタ部１４が保持する回数（カウンタ値）が、予め定めた第１の閾値を超えたメモリブロック１０ａの使用を禁止する。
【００１５】
テスト部１２は、読み出しマージンを減らしてテストを実行するため、テストでエラーが発生したメモリブロック１０ａは、読み出しマージンを減らさなければ正常に動作する。しかしながら、テスト部１２によるテストでエラーが発生したメモリブロック１０ａは、読み出しマージンが低下している。読み出しマージンの低下は、α線の入射や電源ノイズ等のソフト的な要因によっても発生するが、トランジスタの閾値電圧の上昇、内部配線やプラグ部の抵抗値の増加等、メモリ内部の特性劣化によって発生する場合もある。
【００１６】
読み出しマージンの低下がメモリ内部の特性劣化による場合、エラーが発生したメモリブロック１０ａは、将来、不良になる可能性がある。このため、読み出しマージン不足によるエラーが所定の回数（第１の閾値）を超えたメモリブロック１０ａは、不良の予兆と判断することが好ましい。すなわち、エラーの発生要因がソフト的なものか、メモリ内部の特性変動によるものかに関わらず、使用を禁止することが、半導体装置１００の信頼性を維持するために好ましい。
【００１７】
この実施形態では、読み出しマージンが低下したメモリブロック１０ａの使用を禁止することで、読み出しマージン不足のメモリブロック１０ａをアクセスし続けることを抑止することができ、メモリブロック１０ａが不良になることを抑止することができる。この結果、半導体装置１００の信頼性を維持することができる。
【００１８】
使用を禁止したメモリブロック１０ａを含む積層メモリＭＥＭの使用を継続する場合にも、不良が発生する可能性のあるメモリブロック１０ａはアクセスされないため、積層メモリＭＥＭに不良が発生することはない。したがって、不良の積層メモリＭＥＭを交換するメンテナンスが発生することはなく、メンテナンス性を向上できるとともに、半導体装置１００を含むシステムの運用コストを削減することができる。例えば、エラーが発生する前に不良の発生の予兆をつかむことで、エラーの発生によりシステムダウンが発生する前に余裕を持って積層メモリＭＥＭを交換することができる。
【００１９】
図２は、別の実施形態における半導体装置の一例を示す。図１と同様の要素については、同じ符号を付し、詳細な説明は省略する。図２に示す半導体装置１０２は、図１と同様の積層メモリＭＥＭと、ＣＰＵとを有する。ＣＰＵは、演算処理装置の一例である。特に限定されないが、積層メモリＭＥＭは、例えば、ＨＢＭ（High  Bandwidth  Memory）でもよい。なお、半導体装置１０２は、ＣＰＵの代わりに他のプロセッサを有してもよい。積層メモリＭＥＭの構成は、図１と同様であるため、説明を省略する。
【００２０】
ＣＰＵは、テスト部１２、第１のカウンタ部１４、メモリ管理部１７、出力バッファ２０、エラー検出訂正部２２および第２のカウンタ部２４を有する。出力バッファ２０は、積層メモリＭＥＭから読み出される読み出しデータを、セット信号ｓｅｔＸに同期してラッチし、ラッチした読み出しデータをテスト部１２およびエラー検出訂正部２２に出力する。
【００２１】
テスト部１２は、図１での説明と同様に、メモリブロック１０ａからそれぞれ読み出される読み出しデータの読み出しマージンを減らしたテストを実行する。テスト部１２は、セット信号ｓｅｔに対して遷移エッジがずれたセット信号ｓｅｔＸを生成することで、読み出しデータの読み出しマージンを減らす。テスト部１２は、読み出しマージンを低下させた読み出しテストでエラーが発生したメモリブロック１０ａに対応する第１のカウンタ部１４のカウンタ領域に保持されているカウンタ値を更新する（例えば、インクリメント）。カウンタ領域は、メモリチップ１０の全てのメモリブロック１０ａに対応して設けられる。
【００２２】
エラー検出訂正部２２は、例えば、エラー検出・訂正符号を用いて、出力バッファ２０からの読み出しデータのエラーを検出し、訂正可能なエラーを訂正してメモリチップ１０に書き戻す。第２のカウンタ部２４は、第１のカウンタ部１４と同様に、メモリブロック１０ａにそれぞれ対応するカウンタ領域を有する。エラー検出訂正部２２は、エラーを検出した場合、メモリブロック１０ａ毎に第２のカウンタ部２４のカウンタ領域に保持されたカウンタ値を更新する（例えば、インクリメント）。
【００２３】
メモリ管理部１７は、図１に示したメモリ管理部１６と同様に、第１のカウンタ部１４が保持する回数が、予め定めた第１の閾値を超えたメモリブロック１０ａの使用を禁止する機能を有する。さらに、メモリ管理部１７は、第２のカウンタ部２４が保持する回数が、予め定めた第２の閾値を超えたメモリブロック１０ａの使用を禁止する機能を有する。第１の閾値と第２の閾値は、同じ値でもよく、第２の閾値が第１の閾値より大きくてもよい。なお、以下の説明では、メモリブロック１０ａは、ページ１０ａとも称される。ページ１０ａは、ＣＰＵがユーザプログラムに割り当て可能な最小のメモリサイズを有し、メモリサイズは、例えば、４ｋＢまたは６４ｋＢ等である。
【００２４】
図３は、図２のテスト部１２の要部の一例を示す。テスト部１２は、選択番号を保持するレジスタ３２と、選択番号のそれぞれに対応する複数の選択値ｓｅｌ（ｓｅｌ０、ｓｅｌ１、．．．ｓｅｌｎ：ｎは例えば”５”）を保持するレジスタ部３４と、遅延調整回路３６と、マルチプレクサ３８とを有する。例えば、選択番号は、レジスタ部３４に保持される選択値ｓｅｌが保持される領域のいずれかを示す。レジスタ部３４は、選択番号の値に対応する領域に保持している選択値ｓｅｌをマルチプレクサ３８に出力する。
【００２５】
遅延調整回路３６は、セット信号ｓｅｔの論理を反転させるインバータと、インバータからの出力信号を順次遅延させる複数のバッファとを有する。遅延調整回路３６は、セット信号ｓｅｔを遅延させない信号と、セット信号ｓｅｔの論理を反転し、順次遅延させた複数の信号とをマルチプレクサ３８に出力する。
【００２６】
マルチプレクサ３８は、レジスタ３２に保持された選択番号に応じてレジスタ部３４から出力される選択値ｓｅｌに対応する信号（セット信号ｓｅｔまたはセット信号ｓｅｔを反転して遅延した信号）を選択し、選択した信号をセット信号ｓｅｔＸとして出力する。例えば、マルチプレクサ３８は、選択値ｓｅｌ０を受けたとき、遅延させないセット信号ｓｅｔを選択し、選択値ｓｅｌ１を受けたとき、反転したセット信号ｓｅｔをバッファで１段遅延させた信号を選択する。また、マルチプレクサ３８は、選択値ｓｅｌ２を受けたとき、反転したセット信号ｓｅｔをバッファで２段遅延させた信号を選択し、選択値ｓｅｌｎを受けたとき、反転したセット信号ｓｅｔをバッファで最大段数遅延させた信号を選択する。図３では、簡易な論理回路により、出力バッファ２０のラッチタイミングに使用するセット信号ｓｅｔＸの発生タイミングを容易に生成することができる。
【００２７】
図４は、図３のテスト部１２が生成するセット信号ｓｅｔＸの一例を示す。例えば、選択値ｓｅｌ０が選択された場合、セット信号ｓｅｔに対してマルチプレクサ３８の遅延時間だけ遅れたセット信号ｓｅｔＸが出力される。選択値ｓｅｌ１−ｓｅｌｎのいずれかが選択された場合、セット信号ｓｅｔの論理を反転し、かつセット信号ｓｅｔに対してバッファの遅延時間だけ遅れたセット信号ｓｅｔＸがそれぞれ出力される。
【００２８】
セット信号ｓｅｔに対するセット信号ｓｅｔＸの遅延量は、選択値ｓｅｌの番号が大きいほど大きくなる。その結果、図２に示した出力バッファ２０のラッチタイミングであるセット信号ｓｅｔＸの立ち上がりエッジの位相は、選択値ｓｅｌ０が最も遅く、選択値ｓｅｌ１−ｓｅｌｎの番号が小さいほど早い。
【００２９】
図５は、図３のテスト部１２による読み出しテストの一例を示す。テスト部１２は、エラー検出訂正部２２によりエラーを訂正するために、通常の読み出しテストを実行し、読み出しマージンの劣化を判定するために、読み出しマージンを減らした読み出しテストを実行する。
【００３０】
例えば、通常の読み出しテストと読み出しマージンを減らした読み出しテストとは、全てのページ１０ａの全てのメモリ領域（メモリセル）に対して周期的に実行される。また、図５に示す読み出しテストは、ユーザプログラム処理中に、ユーザプログラムの裏で実行される。すなわち、図５に示す読み出しテストは、いわゆるメモリパトロールにより繰り返し実行される。
【００３１】
テスト部１２は、読み出しテストにおいて、通常時のセット信号ｓｅｔＸの立ち上がりエッジに同期して、読み出しアドレスを積層メモリＭＥＭに出力する。例えば、読み出しアドレスの出力期間は、セット信号ｓｅｔＸの周期に等しく、セット信号ｓｅｔＸの周期が読み出しサイクルになる。
【００３２】
積層メモリＭＥＭは、読み出しアドレスに基づいて、読み出しアドレスが示すメモリ領域にアクセスし、アクセスしたメモリ領域から出力される読み出しデータを出力する。出力バッファ２０は、セット信号ｓｅｔＸの立ち上がりエッジに同期して読み出しデータをラッチする。
【００３３】
読み出しマージンを減らしていない通常の読み出しテストでは、読み出しデータが出力されてからセット信号ｓｅｔＸの立ち上がりエッジまでの時間は、出力バッファ２０が所定のマージン（セットアップ時間）を持って読み出しデータをラッチできる時間である。
【００３４】
これに対して、読み出しマージンを減らした読み出しテストでは、読み出しデータが出力されてからセット信号ｓｅｔＸの立ち上がりエッジまでの時間は、通常の読み出しテストに比べて短い。このため、出力バッファ２０が読み出しデータをラッチするタイミングマージンは減少する。
【００３５】
なお、読み出しマージンを減らした読み出しテストにおけるセット信号ｓｅｔＸの立ち上がりエッジのタイミングは、読み出し特性が劣化していないメモリチップ１０から出力される読み出しデータを、出力バッファ２０がラッチできるタイミングに設定される。このため、読み出し特性が劣化していないメモリチップ１０では、読み出しマージンを減らした読み出しテストはパスする。
【００３６】
例えば、積層メモリＭＥＭを半導体装置１０２に実装する前のテストにおいて、正常なメモリチップ１０から出力される読み出しデータを出力バッファ２０にラッチできるセット信号ｓｅｔＸの出力タイミングが評価される。そして、評価により決定したセット信号ｓｅｔＸの出力タイミングに対応する選択番号が決定する。テスト部１２は、読み出しマージンを減らした読み出しテストでは、評価により決定した選択番号をレジスタ３２にセットする。
【００３７】
なお、例えば、メモリチップ１０において、トランジスタの閾値電圧の上昇、内部配線やプラグ部の抵抗値の局所的な増加により、読み出しデータの出力タイミングが遅くなったとする。この場合、読み出しマージンを減らした読み出しテストでは、出力バッファ２０は、読み出しデータをラッチできず、エラーが発生する場合がある。エラーが発生した場合、テスト部１２は、読み出しデータを出力したページ１０ａに対応する第１のカウンタ部１４のカウンタ領域のカウンタ値をインクリメントする。そして、メモリ管理部１７は、後述するように、第１のカウンタ部１４が保持する回数が予め定めた第１の閾値を超えたページ１０ａの使用を禁止する。
【００３８】
図６は、図２のＣＰＵが実行するユーザプログラム処理のフローの一例を示す。例えば、半導体装置１０２は、仮想記憶システムを採用している。そのため、物理アドレス空間に割り当てられた積層メモリＭＥＭの各ページ１０ａは、メモリ領域の使用状況を管理するページテーブルＰＴＢＬに格納される論理アドレス情報により論理アドレス空間（仮想アドレス空間）に紐付けられる。例えば、ページテーブルＰＴＢＬは、各ページ１０ａにそれぞれ対応するエントリを有する。各エントリは、故障フラグ、バリッドフラグ、アクセスの可否、アクセスの制限、論理アドレスとの対応等の情報を格納する領域を有する。また、各エントリは、図２の第１のカウンタ部１４および第２のカウンタ部２４を有する。
【００３９】
故障フラグは、テスト部１２によりページ１０ａの読み出しマージンの劣化が判定されたときにセットされる。バリッドフラグは、ユーザプログラムまたはＯＳ（Operating  System）でページ１０ａを使用する場合にセットされる。アクセスの可否は、ユーザプログラムによるページ１０ａの使用を許可する場合にセットされる。アクセスの制限は、例えば、読み出しのみ可能、読み出しと書き込みの両方が可能等の情報が格納される。論理アドレスとの対応を示す領域には、例えば、紐付ける論理アドレスの上位の所定数のビットが格納される。
【００４０】
図６に示す処理フローでは、まず、ステップＳ１０において、ＣＰＵが実行するＯＳは、ユーザプログラム処理を開始する前に、ユーザプログラムが使用するメモリ領域を確保する。この際、故障フラグがセットされたページ１０ａを避けてメモリ領域が確保される。次に、ステップＳ１１において、ＯＳは、確保したメモリ領域に対応して、ページテーブルＰＴＢＬを更新し、ユーザプログラムで使用するページ１０ａを決定する。次に、ステップＳ１２において、確保したページ１０ａを使用してユーザプログラム処理が開始される。
【００４１】
ユーザプログラム処理が終了した場合、ステップＳ１３において、ＯＳは、ユーザプログラムで使用したページ１０ａに対応する第１のカウンタ部１４のカウンタ値および第２のカウンタ部２４のカウンタ値に基づいて、故障フラグをセットする。第１のカウンタ部１４のカウンタ値および第２のカウンタ部２４のカウンタ値は、ユーザプログラム処理中に実行されるテスト部１２によるメモリパトロールにより更新される。
【００４２】
なお、故障フラグのセットは、ユーザプログラム処理中に実行されてもよく、ステップＳ１５のページテーブルＰＴＢＬの初期化後に実行されてもよい。ＯＳは、その後のユーザプログラム処理のフローにおいて、故障フラグがセットされたページ１０ａをメモリ領域として確保しない。
【００４３】
次に、ステップＳ１４において、ＯＳは、ユーザプログラムで使用していたメモリ領域を開放する。次に、ステップＳ１５において、ＯＳは、ユーザプログラムで使用するために割り当てていたページ１０ａに対応するページテーブルＰＴＢＬのエントリを初期化して、ユーザプログラム処理に対する一連の動作を完了する。なお、故障フラグは、通常はエントリの初期化によっても初期化されないため、一度セットされた故障フラグがリセットされることを抑止することができる。
【００４４】
図７は、図２のＣＰＵが実行するメモリパトロールの起動フローの一例を示す。まず、ステップＳ２０において、ＯＳは、メモリパトロールの起動を指示する。ステップＳ２１において、ＣＰＵは、ＯＳからの起動の指示に基づいてメモリパトロールを開始する。
【００４５】
ステップＳ２２において、ＣＰＵに搭載されるメモリアクセスコントローラは、メモリパトロールの開始に伴い、積層メモリＭＥＭから読み出しデータを読み出すためにアドレスや制御信号を含む読み出しアクセス要求を積層メモリＭＥＭに出力する。ステップＳ２３において、積層メモリＭＥＭは、読み出しアクセス要求に基づいて、対象のページ１０ａからデータを読み出す読み出し動作を実行する。
【００４６】
この後、ステップＳ２２、Ｓ２３が繰り返し実行されることで、アクセス領域を変えながらメモリパトロールが繰り返し実行される。メモリパトロールの処理の例は、図８に示す。なお、メモリパトロールを停止する場合、ＯＳは、ＣＰＵにメモリパトロールの停止を指示し、ＣＰＵはメモリパトロールを停止する。ＯＳは、メモリパトロールの起動および停止の指示しかしないため、メモリパトロールによる負荷は小さい。また、メモリパトロールによる積層メモリＭＥＭの制御は、メモリアクセスコントローラにより実行されるため、メモリパトロールによるＣＰＵの負荷は小さい。
【００４７】
図８は、図２のＣＰＵが実行するメモリパトロールの処理フローの一例を示す。ステップＳ３０、Ｓ３１、Ｓ３２、Ｓ３３は、図５に示した通常の読み出しテストによるメモリパトロール処理を示す。ステップＳ３４、Ｓ３５、Ｓ３６、Ｓ３７は、図５に示した読み出しマージンを減らした読み出しテストによるメモリパトロール処理を示す。例えば、メモリパトロールでは、誤り検出・訂正符号を用いて、１ビットのエラー訂正または２ビットのエラー検出が行われる。
【００４８】
まず、ステップＳ３０において、ＣＰＵは、積層メモリＭＥＭに読み出しアクセス要求を発行し、積層メモリＭＥＭから出力される読み出しデータを受信する。なお、ＣＰＵ（テスト部１２）は、読み出しアクセス要求の発行前に、選択値ｓｅｌ０を選択するための選択番号をレジスタ３２（図３）にセットする。このため、出力バッファ２０は、遅延させないセット信号ｓｅｔに基づいて生成されたセット信号ｓｅｔＸに同期して読み出しデータをラッチする。
【００４９】
次に、ステップＳ３１において、ＣＰＵは、エラー検出訂正部２２により読み出しデータのエラーが検出された場合、ステップＳ３２に移行し、エラーが検出されない場合、ステップＳ３４に移行する。なお、この例では、説明を簡単にするため、訂正できないエラーは発生しないものとする。
【００５０】
ステップＳ３２において、エラー検出訂正部２２は、読み出しデータのエラーを訂正し、積層メモリＭＥＭに書き戻す。次に、ステップＳ３３において、エラー検出訂正部２２は、第２のカウンタ部２４において、エラーを検出したページ１０ａに対応するカウンタ領域のカウンタ値をインクリメントし、ステップＳ３４に移行する。
【００５１】
ステップＳ３４において、ＣＰＵ（テスト部１２）は、セット信号ｓｅｔＸを、読み出しマージンを減らすタイミングに設定するために、標準状態の選択番号が設定されたレジスタ３２を、読み出しマージンを減らすための選択番号に書き換える。選択番号を格納するレジスタ３２を設けることで、セット信号ｓｅｔＸのタイミングを容易に調整することができる。
【００５２】
ステップＳ３５において、ＣＰＵは、積層メモリＭＥＭに読み出しアクセス要求を発行し、積層メモリＭＥＭから出力される読み出しデータを受信する。出力バッファ２０は、セット信号ｓｅｔを反転して所定量遅延させた信号に基づいて生成されたセット信号ｓｅｔＸに同期して、読み出しデータをラッチする。
【００５３】
次に、ステップＳ３６において、テスト部１２は、読み出しデータのエラーを検出した場合、ステップＳ３７に移行し、エラーが検出されない場合、処理を終了する。なお、ステップＳ３６により検出されるエラーは、シングルビットエラーでもよく、複数ビットエラーでもよい。
【００５４】
ステップＳ３７において、第１のカウンタ部１４において、エラーを検出したページ１０ａに対応するカウンタ領域のカウンタ値をインクリメントし、処理を終了する。
【００５５】
この実施形態では、通常の読み出しテストと読み出しマージンを減らした読み出しテストとのそれぞれについて、エラーの発生数をカウントする。これにより、読み出しマージンの不足によるエラー以外のエラー（例えば、メモリ内部の特性変動によるエラー）が発生する場合にも、異常の予兆を検出することができ、エラーの発生したページ１０ａが不良になる前に縮退することができる。
【００５６】
図９は、図２のＣＰＵが実行するページの使用を禁止する処理フローの一例を示す。例えば、図９に示す処理は、図６のステップＳ１３に対応する処理である。図９に示す処理は、メモリ管理部１７により、ページ１０ａ毎に実行される。
【００５７】
まず、ステップＳ４０において、メモリ管理部１７は、対象のページ１０ａに対応する第２のカウンタ部２４のカウンタ領域からカウンタ値を読み出す。ステップＳ４１において、メモリ管理部１７は、読み出したカウンタ値が第２の閾値を超えている場合、劣化等の何らかの異常の予兆が見られると判断し、処理をステップＳ４４に移行する。メモリ管理部１７は、読み出したカウンタ値が第２の閾値を超えていない場合、処理をステップＳ４２に移行する。
【００５８】
ステップＳ４１において、メモリ管理部１７は、対象のページ１０ａに対応する第１のカウンタ部１４のカウンタ領域からカウンタ値を読み出す。ステップＳ４３において、メモリ管理部１７は、読み出したカウンタ値が第１の閾値を超えている場合、劣化等の何らかの異常の予兆が見られると判断し、処理をステップＳ４４に移行する。メモリ管理部１７は、読み出したカウンタ値が第１の閾値を超えていない場合、処理をステップＳ４５に移行する。
【００５９】
ステップＳ４４において、メモリ管理部１７は、ページテーブルＰＴＢＬにおいて、対象のページ１０ａに対応するエントリの故障フラグをセットし処理を終了する。すなわち、第１および第２のカウンタ部１４、２４の評価対象のカウンタ値の一方または両方が、それぞれの閾値を超えた場合、該当ページ１０ａの使用を停止する縮退予約が行われる。この実施形態では、ＯＳが管理する記憶領域はページ１０ａ単位で割り当てられるため、縮退予約は、ページオフラインの動作である。なお、故障フラグのセットにより、セットされた故障フラグに対応するページ１０ａのユーザプログラムによる使用が禁止される。ステップＳ４４の後、処理を終了せずにステップＳ４５の処理が実行されてもよい。
【００６０】
ステップＳ４５において、メモリ管理部１７は、対象のページ１０ａに対応する第１のカウンタ部１４のカウンタ値と、対象のページ１０ａに対応する第２のカウンタ部２４のカウンタ値とをクリアし（例えば、”０”）、処理を終了する。
【００６１】
なお、第１のカウンタ部１４のカウンタ値および第２のカウンタ部２４のカウンタ値は、一定時間毎にクリアされてもよい。例えば、カウンタ値は、１日毎にクリアされ、あるいは、ページ１０ａのスワップの発生時にクリアされてもよい。これにより、カウンタ値が、ソフト的に発生したエラー数が長期間かけて蓄積されて閾値を超えたのか、劣化等の異常の予兆によりエラーの発生頻度が高くなってきたことにより閾値を超えたのかを判断することができる。
【００６２】
例えば、第１の閾値は”１０”であり、第２の閾値は”３”であり、第１の閾値は、第２の閾値より大きい。読み出しマージンを減らした読み出しテストは、通常の読み出しテストに比べてエラーが発生しやすいため、第１の閾値と第２の閾値とを同じ値にすると、図９のフローにおいて、常に第１の閾値超えにより故障フラグが発生する可能性が高くなる。このため、エラーの発生頻度を考慮して、第１の閾値を第２の閾値より大きくすることで、第１の閾値超えにより故障フラグをセットする頻度と、第２の閾値超えにより故障フラグをセットする頻度とを同等にすることができる。
【００６３】
図１０は、図２の半導体装置１０２が搭載されるパッケージの一例を示す。半導体装置１０２は、ＴＳＶを介して複数のメモリチップ１０およびロジックチップ５０を相互に接続した積層メモリＭＥＭと、ＣＰＵチップとをシリコンインターポーザを介して接続した構造を有する。各チップ間およびチップとシリコンインターポーザとの間は、バンプにより接続される。また、シリコンインターポーザは、バンプを介してパッケージ基板に接続される。さらに、パッケージ基板は、バンプを介して図示しないシステム基板等に接続される。
【００６４】
以上、図２から図１０に示す実施形態において、図１に示す実施形態と同様の効果を得ることができる。すなわち、メモリパトロール時に、通常のパトロール動作とは別に、読み出しマージンを低下させたパトロール動作を実行することにより、メモリチップのトランジスタの劣化等による異常の予兆をページ１０ａ毎に検出することができる。そして、異常の予兆が検出されたページ１０ａを縮退（オフライン）することで、その後に開始されるユーザプログラム処理に使用されることを抑止することができる。この結果、半導体装置１０２の信頼性を向上することができる。
【００６５】
また、読み出しマージンを減らした読み出しテストだけでなく、通常の読み出しテストによるメモリパトロールを実行することで、通常の読み出しタイミングで発生するエラーに対応して故障フラグをセットすることができる。これにより、読み出しマージンの不足によるエラー以外のエラー（例えば、メモリ内部の特性変動によるエラー）が発生する場合にも、異常の予兆を検出することができ、エラーの発生したページ１０ａが不良になる前に縮退することができる。
【００６６】
第１の閾値を第２の閾値より大きくすることで、第１の閾値超えにより故障フラグをセットする頻度と、第２の閾値超えにより故障フラグをセットする頻度とを同等にすることができる。すなわち、２つの読み出しテストに基づく故障フラグのセットの頻度を、偏ることなく均等にすることができる。
【００６７】
半導体装置１０２が仮想記憶システムを採用し、ＣＰＵがユーザプログラム処理を行う毎にページ１０ａを割り当てる場合に、エラー数が閾値を超えたページのその後の使用を禁止することができ、半導体装置１０２の信頼性を向上することができる。
【００６８】
第１のカウンタ部１４のカウンタ値および第２のカウンタ部２４のカウンタ値を、一定時間毎にクリアすることで、カウンタ値が閾値を超えた理由を判断することができる。
【００６９】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【００７０】
１０  メモリチップ
１０ａ  メモリブロック（ページ）
１２  テスト部
１４  第１のカウンタ部
１６、１７  メモリ管理部
２０  出力バッファ
２２  エラー検出訂正部
２４  第２のカウンタ部
３２  レジスタ
３４  レジスタ部
３６  遅延調整回路
１００、１０２  半導体装置
ＭＥＭ  積層メモリ
ｓｅｌ  選択値
ｓｅｔ、ｓｅｔＸ  セット信号
【図１】
2020170577.tif 000003
【図２】
2020170577.tif 000004
【図３】
2020170577.tif 000005
【図４】
2020170577.tif 000006
【図５】
2020170577.tif 000007
【図６】
2020170577.tif 000008
【図７】
2020170577.tif 000009
【図８】
2020170577.tif 000010
【図９】
2020170577.tif 000011
【図１０】
2020170577.tif 000012