(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023079292
(43)【公開日】2023-06-08
(54)【発明の名称】半導体記憶装置、データ書込方法及び半導体記憶装置の製造方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20230601BHJP
G11C 29/44 20060101ALI20230601BHJP
G06F 11/10 20060101ALI20230601BHJP
G06F 11/14 20060101ALI20230601BHJP
【FI】
G06F12/00 550B
G11C29/44 110
G06F12/00 597U
G06F11/10 668
G06F11/10 662
G06F11/14 602D
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021192681
(22)【出願日】2021-11-29
(71)【出願人】
【識別番号】320012037
【氏名又は名称】ラピステクノロジー株式会社
(74)【代理人】
【識別番号】110001025
【氏名又は名称】弁理士法人レクスト国際特許事務所
(72)【発明者】
【氏名】岡田 敏治
【テーマコード(参考)】
5B160
5L206
【Fターム(参考)】
5B160NA02
5L206AA10
5L206BB12
5L206HH05
(57)【要約】
【目的】リフレッシュ処理に費やす時間の増大及び歩留まり低下を招くことなく、データ保存期間を延ばすことが可能な半導体記憶装置、データ書込方法、及び半導体記憶装置の製造方法を提供することを目的とする。
【構成】書込指令に応じてメモリデバイスのブロックの各々に情報データを書き込むデータ書込部と、情報データが各ブロックに書き込まれる度に、書込み先のブロックから情報データを読み出し、読み出した情報データに生じているエラービットの数をブロック毎に検出するベリファイ処理部と、エラービットの数が所定の閾値以上である場合には当該書込み先のブロックとは異なる他のブロックに情報データの書き込みを行う再書込処理部と、を有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
データを保持する複数のブロックを有するメモリデバイスと、
前記メモリデバイスを制御するメモリ制御部と、を含み、
前記メモリ制御部は、
書込指令に応じて前記メモリデバイスのブロックの各々に情報データを書き込むデータ書込部と、
前記情報データが各ブロックに書き込まれる度に、書込み先のブロックから前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出するベリファイ処理部と、
前記エラービットの数が所定の閾値以上である場合には前記書込み先のブロックとは異なる他のブロックに前記情報データの書き込みを行う再書込処理部と、を有することを特徴とする半導体記憶装置。
【請求項2】
前記メモリ制御部は、
前記複数のブロックのうちで未使用のブロック、又は前記エラービットの数が前記所定の閾値以上となるブロックに、前記情報データをバックアップデータとして書き込むバックアップ書込処理部を含むことを特徴とする請求項1に記載の半導体記憶装置。
【請求項3】
前記バックアップ書込処理部では、前記データ書込部又は前記再書込処理部によって情報データが書き込まれたブロックのうちから検出された前記エラービットの数が多い順にブロックを選択し、選択したブロックに書き込まれているデータを前記バックアップデータとすることを特徴とする請求項2に記載の半導体記憶装置。
【請求項4】
前記メモリデバイスはNAND型フラッシュメモリであり、
前記メモリ制御部は、前記情報データをシングルレベルセル方式、トリプルレベル方式及びマルチレベル方式のうちの1の方式で書込み、前記バックアップデータを前記シングルレベルセル方式、前記トリプルレベル方式及び前記マルチレベル方式のうちの他の方式で書き込むことを特徴とする請求項2又は3に記載の半導体記憶装置。
【請求項5】
前記メモリ制御部は、前記ブロックから読み出された情報データに対して誤り検出及び誤り訂正処理を施す誤り検出訂正回路を含み、
前記エラービットの数が前記誤り検出訂正回路で誤り訂正可能なエラービット数の限界値を超えた場合に、前記バックアップデータを、前記エラービットの数が前記限界値を超えたブロックに書き込むことでデータを復元することを特徴とする請求項2~4のいずれか1に記載の半導体記憶装置。
【請求項6】
前記再書込処理部は、
前記エラービットの数が前記閾値以上となる場合に、前記書込み先のブロックをマージンブロックとするマージンブロック設定部と、
前記複数のブロック内において前記書込み先となるブロックが一巡した場合には、前記閾値の値を所定値だけ増加したものを新たな閾値として設定する閾値増加部と、
前記複数のブロック内において前記書込み先となるブロックが一巡した場合には、前記マージンブロックを新たな書込み先のブロックとして前記情報データの再書き込みを行う再書込部と、を含み、
前記ベリファイ処理部で検出された、前記新たな書込み先のブロックから読み出された情報データにおけるエラービットの数が、前記閾値以上である場合には前記新たな書込み先のブロックとは異なる他のブロックに前記情報データの書き込みを行うことを特徴とする請求項1に記載の半導体記憶装置。
【請求項7】
データを保持する複数のブロックを有するメモリデバイスと、
前記メモリデバイスを制御するメモリ制御部と、を含み、
前記メモリ制御部は、
書込指令に応じて前記メモリデバイスのブロックの各々に情報データを書き込むデータ書込部と、
前記情報データが各ブロックに書き込まれる度に、書込み先のブロックから前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出するベリファイ処理部と、
前記エラービットの数が所定の閾値以上である場合には前記書込み先のブロックとは異なる他のブロックに前記情報データの書き込みを行う再書込処理部と、
リフレッシュ指令に応じて、前記複数のブロックの各々から前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出し、当該エラービットの数が前記閾値以上となるブロックに、前記読み出した情報データに誤り訂正を施したデータを書き込むリフレッシュ制御部と、を有することを特徴とする半導体記憶装置。
【請求項8】
前記メモリ制御部は、前記複数のブロックのうちで未使用のブロック、又は前記エラービットの数が前記所定の閾値以上であるブロックに、前記情報データをバックアップデータとして書き込むバックアップ書込処理部を含み、
前記リフレッシュ制御部は、前記エラービットの数が前記誤り訂正可能なエラービット数の限界値を超えている場合には、前記エラービットの数が前記限界値を超えているブロックに前記バックアップデータを書き込むことでデータを復元することを特徴とする請求項7に記載の半導体記憶装置。
【請求項9】
データを保持する複数のブロックを有するメモリデバイス、及び前記メモリデバイスを制御するメモリ制御部を有する半導体記憶装置の前記メモリ制御部によって行われるデータ書込方法であって、
書込指令に応じて前記メモリデバイスのブロックの各々に情報データを書き込むステップと、
前記情報データが各ブロックに書き込まれる度に、書込み先のブロックから前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出するステップと、
前記エラービットの数が所定の閾値以上である場合には前記書込み先のブロックとは異なる他のブロックに前記情報データの書き込みを行うステップと、を有することを特徴とするデータ書込方法。
【請求項10】
前記エラービットの数が前記誤り訂正可能なエラービット数の限界値を超えている場合には、前記エラービットの数が前記限界値を超えているブロックに前記バックアップデータを書き込むことでデータを復元するステップを含むことを特徴とする請求項9に記載のデータ書込方法。
【請求項11】
データを保持する複数のブロックを有するメモリデバイス、及び前記メモリデバイスを制御するメモリ制御部を含む半導体ICを製造する半導体IC製造工程と、
前記半導体ICの前記メモリデバイスに情報データを書き込むデータ書込工程と、
前記半導体ICに熱を加えて基板に実装する実装工程と、
前記半導体ICの前記メモリデバイスにリフレッシュ処理を施すリフレッシュ工程と、を有し、
前記データ書込工程では、前記メモリ制御部が、
前記メモリデバイスのブロックの各々に情報データを書き込むステップと、
前記情報データが各ブロックに書き込まれる度に、書込み先のブロックから前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出するステップと、
前記エラービットの数が所定の閾値以上である場合には前記書込み先のブロックとは異なる他のブロックに前記情報データの書き込みを行うステップと、を実行し、
前記リフレッシュ工程では、前記メモリ制御部が、
前記複数のブロックの各々から前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出し、当該エラービットの数が前記閾値以上となるブロックに、前記読み出した情報データに誤り訂正を施したデータを書き込むステップを実行することを特徴とする半導体記憶装置の製造方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体記憶装置、半導体記憶装置にデータを書き込むデータ書込方法、及び半導体記憶装置の製造方法に関する。
【背景技術】
【0002】
近年、半導体記憶装置の記憶容量の増大化に伴い、ビット単価が安価なNAND型フラッシュメモリが普及している。
【0003】
ところで、NAND型フラッシュメモリの大容量化や高集積化に伴い、書き込んだデータの経年変化や集中した読み出し動作により、保存したデータが正しく読み出せなくなるという問題が顕著化している。すなわち、保存データを担う電荷の低下や、読み出し動作による隣接メモリセルへの微量な電荷の蓄積に起因して、保存データに誤りが生じる。
【0004】
このような現象の回避策として、誤り訂正符号(ECC:Error Correcting Code)を用いることで、生じた誤りを訂正して正しいデータに復元することが一般的に行われている。
【0005】
但し、誤り訂正符号には訂正できるビット数に限界があり、限界以上のビット数のエラーが発生した場合には、元の状態に戻すことが出来ない。
【0006】
そこで、メモリからのデータ読出時に、読み出されたデータに対して誤り検出処理を施し、エラービット数が所定の閾値より多い場合に、誤り訂正後のデータをメモリに書き戻す(リフレッシュ処理)というリフレッシュ制御を実行するようにした半導体メモリが提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、近年、NAND型のフラッシュメモリを、読出し専用のROM(read only memory)として用いるようにした製品が登場している。
【0009】
この際、メーカ側では、このようなROM用途のフラッシュメモリとして、情報データ(プログラム等を含む)を予め書込んだものを出荷する。当該フラッシュメモリを入荷した商品メーカ側では、情報データ書き込み済みのフラッシュメモリを基板実装する。
【0010】
しかしながら、この基板実装時の半田付け等でフラッシュメモリに加えられる高熱により、データ保持を担う電荷が低下してしまい、フラッシュメモリのデータ保存期間が当初予定していた期間長よりも短くなる場合があった。
【0011】
そこで、読み出されたデータに生じるエラービットの数が多いブロックに対しては、データの再書き込みを行うというリフレッシュ処理をフラッシュメモリに施すことで、このような状況を回避することが考えられる。
【0012】
しかしながら、情報データ書込み直後のフラッシュメモリにおいても、読み出されたデータに生じるエラービットの数が所定の閾値を超えるブロックが多数となる場合がある。よって、このような状態にあるフラッシュメモリにリフレッシュ制御を施すと、データの再書き込み対象となるブロックが多数となるため、リフレッシュ制御に費やされる時間が長くなるという問題が生じる。
【0013】
また、フラッシュメモリ等の半導体記憶装置では、製品出荷前の機能テストにおいて書き込んだデータが正しく読み出されなかった場合には不良品扱いとなるので、このような状態を回避して歩留まりの向上を図ることが望まれている。
【0014】
そこで、本発明は、リフレッシュ制御に費やす時間の増大及び歩留まり低下を招くことなく、データ保存期間を延ばすことが可能な半導体記憶装置、データ書込方法、及び半導体記憶装置の製造方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明に係る半導体記憶装置は、データを保持する複数のブロックを有するメモリデバイスと、前記メモリデバイスを制御するメモリ制御部と、を含み、前記メモリ制御部は、書込指令に応じて前記メモリデバイスのブロックの各々に情報データを書き込むデータ書込部と、前記情報データが各ブロックに書き込まれる度に、書込み先のブロックから前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出するベリファイ処理部と、前記エラービットの数が所定の閾値以上である場合には前記書込み先のブロックとは異なる他のブロックに前記情報データの書き込みを行う再書込処理部と、を有する。
【0016】
また、本発明に係る半導体記憶装置は、データを保持する複数のブロックを有するメモリデバイスと、前記メモリデバイスを制御するメモリ制御部と、を含み、前記メモリ制御部は、書込指令に応じて前記メモリデバイスのブロックの各々に情報データを書き込むデータ書込部と、前記情報データが各ブロックに書き込まれる度に、書込み先のブロックから前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出するベリファイ処理部と、前記エラービットの数が所定の閾値以上である場合には前記書込み先のブロックとは異なる他のブロックに前記情報データの書き込みを行う再書込処理部と、リフレッシュ指令に応じて、前記複数のブロックの各々から前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出し、当該エラービットの数が前記閾値以上となるブロックに、前記読み出した情報データに誤り訂正を施したデータを書き込むリフレッシュ制御部と、を有する。
【0017】
本発明に係るデータ書込方法は、データを保持する複数のブロックを有するメモリデバイス、及び前記メモリデバイスを制御するメモリ制御部を有する半導体記憶装置の前記メモリ制御部によって行われるデータ書込方法であって、書込指令に応じて前記メモリデバイスのブロックの各々に情報データを書き込むステップと、前記情報データが各ブロックに書き込まれる度に、書込み先のブロックから前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出するステップと、前記エラービットの数が所定の閾値以上である場合には前記書込み先のブロックとは異なる他のブロックに前記情報データの書き込みを行うステップと、を有する。
【0018】
本発明に係る半導体記憶装置の製造方法は、データを保持する複数のブロックを有するメモリデバイス、及び前記メモリデバイスを制御するメモリ制御部を含む半導体ICを製造する半導体IC製造工程と、前記半導体ICの前記メモリデバイスに情報データを書き込むデータ書込工程と、前記半導体ICに熱を加えて基板に実装する実装工程と、前記半導体ICの前記メモリデバイスにリフレッシュ処理を施すリフレッシュ工程と、を有し、前記データ書込工程では、前記メモリ制御部が前記メモリデバイスのブロックの各々に情報データを書き込むステップと、前記情報データが各ブロックに書き込まれる度に、書込み先のブロックから前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出するステップと、前記エラービットの数が所定の閾値以上である場合には前記書込み先のブロックとは異なる他のブロックに前記情報データの書き込みを行うステップと、を実行し、前記リフレッシュ工程では、前記メモリ制御部が、前記複数のブロックの各々から前記情報データを読み出し、読み出した情報データに生じているエラービットの数を前記ブロック毎に検出し、当該エラービットの数が前記閾値以上となるブロックに、前記読み出した情報データに誤り訂正を施したデータを書き込むステップを実行することを特徴とする半導体記憶装置の製造方法。
【発明の効果】
【0019】
本発明に係る半導体記憶装置では、その製造後に当該半導体記憶装置の製造元において、メモリの各ブロックに情報データを書き込みつつ、情報データが各ブロックに書き込まれる度に、書込み先のブロックから情報データを読み出し、読み出した情報データに生じているエラービットの数をブロック毎に検出する。ここで、エラービットの数が所定の閾値未満である場合には書込み先のブロックへのデータ書込みが成功したと判定する。しかしながら、エラービットの数が閾値以上である場合には書込み先のブロックへのデータ書込みが失敗したと判定して、当該書込み先のブロックとは異なる他のブロックに情報データの書き込みを行う。
【0020】
これにより、データの読出し時において、ブロック毎に、読出データに生じるエラービットの数が所定の閾値未満となる状態、つまり誤り訂正可能なエラービット数の限界値に対して余裕を持たせた状態を有する半導体記憶装置が得られる。
【0021】
よって、当該半導体記憶装置によれば、例え実装時に高熱に晒されても、読出データに生じるエラービットの数を誤り訂正可能なエラービット数の限界値未満にすることが可能となるので、データの保存期間の延長及び歩留まりの向上を図ることができる。
【0022】
また、更なるデータの保存期間の延長を図るべく当該半導体記憶装置にリフレッシュ制御を施す場合には、実際にリフレッシュ処理(データの再書き込み)が行われる頻度を抑えることができるので、リフレッシュ制御に費やされる時間の短縮を図ることが可能となる。
【図面の簡単な説明】
【0023】
【
図1】本発明に係る半導体記憶装置としての第1の実施例によるメモリ装置200の構成を示すブロック図である。
【
図2】第1の実施例によるデータ書込制御の手順を示すフローチャートである。
【
図3】リフレッシュ制御の手順の一例を示すフローチャートである。
【
図4】第2の実施例によるメモリ装置200Aの構成を示すブロック図である。
【
図5】第2の実施例によるデータ書込制御の手順を示すフローチャートである。
【
図6】マージンブロックバックアップ制御の手順を示すフローチャートである。
【
図7】リフレッシュ制御の手順の他の一例を示すフローチャートである。
【
図8】メモリ装置200又は200Aを含む半導体ICの製造から事前リフレッシュ制御が実施されるまでの間に行われる各工程を表す製造工程図である。
【発明を実施するための形態】
【0024】
以下、本発明の実施例について、図面を参照しつつ詳細に説明する。
【実施例0025】
図1は、本発明に係る半導体記憶装置としての第1の実施例によるメモリ装置200の構成を示すブロック図である。
【0026】
メモリ装置200は、外部接続されているホスト装置100からの書込指令に応じて、プログラムデータ等を表す書込用の情報データを、自身に搭載されている例えばNAND型フラッシュメモリのような不揮発性半導体のメモリデバイスに書き込む。
【0027】
また、メモリ装置200は、当該ホスト装置100からの読出指令に応じて、上記したメモリデバイスに書き込まれている情報データを読み出し、読み出された読出データに誤り訂正を施したものをホスト装置100に出力する。更に、メモリ装置200は、ホスト装置100からのリフレッシュ指令に応じて、半導体メモリデバイスから読み出した情報データに生じているエラービットの数を検出し、その数が所定閾値より多い場合に情報データの再書き込みを行うリフレッシュを実行する。
【0028】
メモリ装置200は、
図1に示すように、CPU(Central Processing Unit)21、NANDインタフェース部22、NAND型のフラッシュメモリ23、外部インタフェース部24、RAM(Random Access Memory)25、及びCPUバス26を含む。
【0029】
CPU21は、自身に内蔵されているROM(図示せず)に予め格納されているリフレッシュ制御、データ書込制御、又はデータ読出制御用の各プログラムを実行する。CPU21は、当該プログラムを実行することで、CPUバス26を介して、NANDインタフェース部22、外部インタフェース部24及びRAM25を制御する。
【0030】
NANDインタフェース部22は、CPUバス26を介して書込指令、書き込み用のデータ、及び書き込み先のアドレスを受けると、このアドレスを含むブロックに対してデータ消去処理を施してから、書き込み用のデータをフラッシュメモリ23の書き込み先のアドレスに書き込む。また、CPUバス26を介して読出指令及び読み出し先のアドレスを受けた場合には、NANDインタフェース部22は、フラッシュメモリ23から、読み出し先のアドレスに格納されているデータを読み出し、これをCPUバス26に送出する。
【0031】
尚、NANDインタフェース部22は、誤り検出訂正回路221、アドレスレジスタ222、ステータスレジスタ223及びチェック領域レジスタ224を含む。
【0032】
誤り検出訂正回路221は、CPUバス26に送出された書込用のデータを誤り訂正符号化したものを書込データとして生成する。
【0033】
また、誤り検出訂正回路221は、フラッシュメモリ23から読み出された読出データに対して誤り検出を行い、その誤り検出結果としてのエラービットの数を計数し、当該エラービット数を表すエラービット数情報をステータスレジスタ223に保持させる。なお、ステータスレジスタ223に保持されたエラービット数情報は、CPU21からの指令によってCPUバス26上に読み出される。
【0034】
アドレスレジスタ222は、書き込み又は読み出しに指定されたデータのアドレスを保持する。
【0035】
チェック領域レジスタ224は、フラッシュメモリ23のデータ格納領域内において、誤り検出の対象とするチェック領域を示すチェック領域指定情報を記憶する。
【0036】
更に、NANDインタフェース部22には、チェック領域レジスタ224に記憶されているチェック領域指定情報にて示されるフラッシュメモリ23のデータ格納領域からデータを読み出し、その読出データに生じているエラービットの数を検出する機能を備えている。この際、計数されたエラービット数を表すエラービット数情報がステータスレジスタ223に保持され、CPU21からの指令に応じてCPUバス26に読み出される。
【0037】
フラッシュメモリ23は、データ格納領域として、例えばプログラム等の情報データが記憶されるROMデータ領域、及び各種の管理情報が記憶される管理情報領域を含む。管理情報は、論理アドレス及び物理アドレス間の変換テーブルである論理・物理テーブル231、及びマージンブロック情報232を含む。なお、論理・物理テーブル231とは、外部から指定されたアドレス(論理アドレス)と、フラッシュメモリ23のデータ格納領域内における物理的な位置を表すアドレス(物理アドレス)と、を対応付けしたテーブルである。マージンブロック情報232とは、ROMデータ領域内に含まれるマージン領域に属する未使用のブロック(マージンブロック)のブロック番号を示す。
【0038】
外部インタフェース部24は、ホスト装置100と接続されており、当該ホスト装置100から送出された各種の指令、アドレス及びデータを受信し、夫々をCPUバス26に送出する。また、外部インタフェース部24は、フラッシュメモリ23から読み出された読出データがNANDインタフェース部22を介してCPUバス26に送出された場合には、当該読出データをホスト装置100に送信する。
【0039】
RAM25は、プログラム実行中に使用する変数、スタック情報、及び書込データや読出データを一時的に記憶する一時バッファ領域251を含む。
【0040】
ここで、ホスト装置100が、メモリ装置200にデータを書き込ませる場合、外部インタフェース部24に書込指令と書込み用のデータを送信する。この際、外部インタフェース部24は、受信した書込み用のデータをRAM25の一時バッファ領域251に格納し、書込指令を受けたことをCPUバス26を介してCPU21へ通知する。CPU21は、その書込指令に応じて書込制御を開始し、NANDインタフェース部22に、書込み先のアドレス及び書き込み用のデータが格納されている一時バッファ領域251を指定する。これにより、一時バッファ領域251に格納されている書き込み用のデータがCPUバス26上に読み出され、NANDインタフェース部22により、当該書込データとしてフラッシュメモリ23の書込み先のアドレスに書き込まれる。当該書込み処理の終了後、CPU21は、外部インタフェース部24を介して書込終了をホスト装置100に通知する。
【0041】
一方、ホスト装置100が、メモリ装置200に格納されているデータの読出しを行う場合、外部インタフェース部24に読出指令を送信する。読出指令を受信した外部インタフェース部24は、その旨をCPUバス26を介してCPU21へ通知する。CPU21は、当該読出指令に応じて、読出制御を開始し、NANDインタフェース部22に、読出し先のアドレス及び読出データが格納される一時バッファ領域251を指定する。これにより、NANDインタフェース部22は、フラッシュメモリ23からその読出し先のアドレスに格納されているデータを読み出し、読み出されたデータに誤り訂正を施した読出データをRAM25の一時バッファ領域251に格納する。かかる一連の読出し処理の終了後、CPU21は、一時バッファ領域251に格納されている読出データを読み出し、これを外部インタフェース部24を介してホスト装置100に送信する。
【0042】
図2は、ホスト装置100から書込指令、書き込み用のデータ及び書き込み先のアドレスを受けた場合に、CPU21が実行するデータ書込制御の手順を表すフローチャートである。
【0043】
まず、CPU21は、エラービット数に対する閾値Ethの初期値として、書込み直後のデータ読み出しで生じる標準的なエラービット数を設定する(ステップS30)。
【0044】
次に、CPU21は、フラッシュメモリ23における、上記した書き込み先のアドレスのページを含むブロックの全データを消去させるべくNANDインタフェース部22を制御する(ステップS31)。ステップS31の実行により、NANDインタフェース部22は、フラッシュメモリ23の書き込み先のアドレスのページを含むブロックに対して全データを消去するデータ消去処理を施す。
【0045】
次に、CPU21は、書き込み先のアドレスを含むブロックに書き込み用のデータを書き込ませるべくNANDインタフェース部22を制御する(ステップS32)。ステップS32の実行により、NANDインタフェース部22は、書き込み用のデータを誤り訂正符号化したものを、書込データとして書き込み先のブロックに書き込む。
【0046】
次に、CPU21は、当該データの書込み先ブロックに対して以下のベリファイ処理を実施させるべくNANDインタフェース部22を制御する(ステップS33)。ステップS33の実行により、NANDインタフェース部22は、当該ベリファイ処理として、まず、上記した書込み先のブロックに書き込んだ書込データをフラッシュメモリ23から読み出す。次に、NANDインタフェース部22は、この読み出したデータ(読出データ)に対して誤り検出を行うことで当該読出データに生じているエラービットの数を検出する。そして、NANDインタフェース部22は、当該エラービットの数を表すエラービット数情報EBをステータスレジスタ223に保持する。
【0047】
次に、CPU21は、ステータスレジスタ223に保持されているエラービット数情報EBを読み出し、このエラービット数情報EBが、閾値Eth未満であるか否かを判定する(ステップS34)。
【0048】
ステップS34において、エラービット数情報EBが閾値Eth未満であると判定した場合、CPU21は、この書込みブロックに対するデータ書き込みが成功したと判断する。そして、CPU21は、論理・物理テーブル231における当該書込みブロックに対応した部分を更新させるべくNANDインタフェース部22を制御する(ステップS35)。ステップS35の実行により、NANDインタフェース部22は、上記のように書き込みが成功した書込みブロックにおける論理アドレスと物理アドレスとの対応関係を示す内容で論理・物理テーブル231を更新する。
【0049】
次に、CPU21は、ホスト装置100から送信された、次の書き込み用のデータを取り込み、これを一時バッファ領域251に保持させる(ステップS36)。
【0050】
ステップS34において、エラービット数情報EBが閾値Eth以上であると判定した場合、CPU21は、当該書込みブロックに対するデータの書き込みが失敗したと判断し、この書込みブロックをマージンブロックに設定すべく、マージンブロック情報232を更新する(ステップS37)。つまり、ステップS37においてCPU21は、書込み失敗した書込みブロックをマージンブロックに設定する為に、フラッシュメモリ23の管理領域に保存されているマージンブロック情報232に、書き込み失敗のブロックを示すブロック番号を含ませるように、NANDインタフェース部22を制御する。
【0051】
上記ステップS36又はS37の実行後、CPU21は、全データの書き込みが終了したか否かを判定し(ステップS38)、終了していないと判定した場合には、書込み先のブロックを次のブロックに更新する(ステップS39)。例えば、CPU21は、ROMデータ領域内において、直前に書込み先となったブロックのブロック番号を1だけインクリメントした番号のブロックを、次の書き込み先のブロックとする。尚、直前に書込み先となったブロックのブロック番号がROMデータ領域内(マージン領域を除く)の最後尾のブロック番号である場合、つまり書込み先のブロックがROMデータ領域に含まれる複数の未使用のブロックを一巡した場合には、CPU21は、マージン領域内の先頭のマージンブロックを次の書き込み先のブロックとする。
【0052】
次に、CPU21は、ROMデータ領域内において、書き込み先となるブロックが一巡したか否かを判定する(ステップS40)。ステップS40において、書き込み先となるブロックが一巡していないと判定した場合、CPU21は、上記ステップS31の実行に戻り、全データの書込みが完了するまで前述した動作を繰り返し実行する。
【0053】
一方、ステップS40において、書き込み先となるブロックが一巡したと判定した場合、つまり、直前のステップS39において書込先のブロックが先頭のマージンブロックになった場合、CPU21は、閾値Ethに所定値αを加算したものを新たな閾値Ethとする(ステップS41)。ステップS41の実行後、CPU21は、ステップS31の実行に戻り、再度のデータ書き込み(S31、S32)、書き込み合否の判定(S34)及びベリファイ処理(S33)等を含む、前述した動作を繰り返し実行する。
【0054】
すまわち、書き込み先となるブロックの一巡後にマージン領域に属するマージンブロックは、ステップS41の直前の閾値Ethに基づき書き込み失敗と判定されたものである。そこで、本発明では、ステップS41によって閾値Ethの値を増加(+α)することで、再度のデータ書き込み時において、書き込み成功と判断する確率を高くするのである。
【0055】
尚、上記したステップS30~S41の一連の処理により、ステップS38にて、全データの書き込みが終了したと判定した場合、CPU21は、データ書き込みに使用しなかった全ての未使用のブロックをマージンブロックに設定すべく、マージンブロック情報232を更新する(ステップS42)。すなわち、ステップS42において、CPU21は、フラッシュメモリ23の管理領域に保存されているマージンブロック情報232に、データ書き込みに使用しなかった全ての未使用のブロックを示すブロック番号を含ませるように、NANDインタフェース部22を制御する。
【0056】
ステップS42の実行後、CPU21は、データ書込制御処理を終了する。
【0057】
以下に、情報データ書込み済みのメモリ装置200に施すリフレッシュ制御について説明する。
【0058】
図3は、ホスト装置100からのリフレッシュ要求に応じてCPU21が実行するリフレッシュ制御の手順を示すフローチャートである。
【0059】
まず、CPU21は、ブロック番号BNの初期値として「1」を設定する(ステップS10)。
【0060】
次に、CPU21は、フラッシュメモリ23のROMデータ領域内のブロック番号BNにて示されるブロックから書込データを読み出すべくNANDインタフェース部22を制御する(ステップS11)。ステップS11の実行により、NANDインタフェース部22は、当該ブロックに書き込まれている書込データをフラッシュメモリ23から読み出す。そして、NANDインタフェース部22は、この読み出した書込データに対して誤り検出処理を施し、その誤り検出結果として、エラービットの数を表すエラービット数情報EBをステータスレジスタ223に保持する。
【0061】
次に、CPU21は、当該ステータスレジスタ223に保持されているエラービット数情報EBが、所定の閾値Eth未満であるか否かを判定する(ステップS12)。
【0062】
ステップS12において、エラービット数情報EBが閾値Eth以上であると判定した場合、CPU21は、リフレッシュ制御を実施させるべくNANDインタフェース部22を制御する(ステップS13)。ステップS13の実行により、NANDインタフェース部22は、以下のようなリフレッシュ制御をフラッシュメモリ23に施す。つまり、NANDインタフェース部22は、ブロック番号BNにて示されるブロックに書き込まれているデータの読出及び消去を順に行い、引き続きこの読み出したデータに対して誤り訂正を施したデータを、ブロック番号BNにて示されるブロックに書き込む。
【0063】
ステップS13の実行後、又はステップS12においてエラービット数情報EBが閾値Eth未満であると判定した場合、CPU21は、ブロック番号BNを例えば1だけインクリメントする更新を行う(ステップS14)。
【0064】
次に、CPU21は、フラッシュメモリ23のROMデータ領域に属する全てのブロックに対して上記ステップS11~S14による一連の処理が終了したか否かを判定する(ステップS15)。CPU21は、ステップS15において終了したと判定されるまで、ステップS11~S14による一連の処理を繰り返し実行する。
【0065】
このようなリフレッシュ制御を例えば基板実装後のメモリ装置200に施すことで、例え基板実装時の高熱によってエラービットの数が訂正可能なビット数の限界に近い状態にあっても、これを規定数内に抑えた状態に復帰させることができる。よって、データの保存期間の延長を図ることが可能となる。
【0066】
ところで、当該リフレッシュ制御において、エラービットの数が閾値Ethを超えるブロックの数が多くなると、
図3に示すリフレッシュ処理(S13)の実行回数が多くなり、その分だけリフレッシュ制御に費やされる時間が長くなる。
【0067】
更に、誤り訂正可能なエラービット数の限界値を超えるページが存在する場合には、データの復元が不可となるため、その製品(メモリ装置200)は不良品扱いとなり、歩留まりの低下を招く。
【0068】
そこで、メモリ装置200では、メモリ装置200として、データ保持する複数のブロックを有する不揮発性のメモリデバイス(23)を制御するメモリ制御部(CPU21、NANDインタフェース部22)として、以下のデータ書込部、ベリファイ処理部、及び再書込処理部を有するものを採用している。
【0069】
データ書込部(S31、S32)は、書込指令に応じてメモリデバイスのブロックの各々に情報データを書き込む。ベリファイ処理部(S33)は、情報データが各ブロックに書き込まれる度に、書込み先のブロックから情報データを読み出し、読み出した情報データに生じているエラービットの数(EB)をブロック毎に検出する。再書込処理部(S34~S41、S31、S32)は、エラービットの数が所定の閾値(Eth)未満である場合には書込み先のブロックへのデータ書込みが成功したと判定する。一方、エラービットの数が閾値以上である場合には、再書込処理部は、書込み先のブロックへのデータ書込みが失敗したと判定し書込み先のブロックとは異なる他のブロックに情報データの書き込みを行う(S37、S39、S31、S32)。
【0070】
ここで、メモリ装置200では、データ書込み段階で、データの書込みを行いつつ(S31、S32)ベリファイを行い、当該ベリファイで読み出されたデータに生じているエラービットの数を検出する(S33)。そして、メモリ装置200では、計数したエラービットの数が閾値(Eth)を下回るまで、当該閾値の値を段階的に増加(S41)させながらデータの再書き込みを行う(S31、S32)ようにしている。
【0071】
これにより、データ書込みの段階で、ブロック毎に、読出データに生じるエラービットの数が所定の閾値未満となる状態、つまり誤り訂正可能なエラービット数の限界値に対して余裕を持たせた状態のメモリ装置200が得られる。
【0072】
よって、メモリ装置200によれば、データの保存期間の延長及び歩留まりの向上を図ることが可能となる。
【0073】
また、このメモリ装置200に対して
図3に示すリフレッシュ制御を実施する場合、実際にリフレッシュ処理(S13)が行われる頻度が減るので、リフレッシュ制御に費やされる時間の短縮を図ることが可能となる。
尚、論理・物理テーブル431には、各ブロックの論理アドレス毎に、各論理アドレスに対応付けして、データ書込み後のエラービットの数を示すエラービット情報が付加される。バックアップテーブル433は、論理・物理テーブル431と同様にフラッシュメモリ23の管理領域に記憶されており、マージンブロックに書き込んだバックアップデータの論理アドレスと当該マージンブロックの物理アドレスと、を対応付けして示すテーブルである。
次に、CPU21は、選択された1のブロックに書き込まれているデータをマージンブロックに書き込ませるべくNANDインタフェース部22を制御する(ステップS514)。ステップS514により、NANDインタフェース部22は、選択された1のブロックのデータを読み出し、この読み出されたデータに対して誤り訂正を施したデータをバックアップデータとして、マージンブロックに書き込む。
次に、CPU21は、上記のようにマージンブロックに書き込んだバックアップデータの論理アドレスと、当該マージンブロックの物理アドレスとに基づきバックアップテーブル433を更新させるべくNANDインタフェース部22を制御する(ステップS515)。
次に、CPU21は、全てのマージンブロックに対してバックアップデータの書き込みが完了したか否かを判定する(ステップS516)。当該ステップS516において、バックアップデータの書き込みが完了していないと判定した場合、CPU21は、ステップS513の実行に戻って前述した動作を再度実行する。すなわち、マージンブロック情報232によって示される全てのマージンブロックにバックアップデータが書込まれるまで、CPU21は、ステップS513~S516の一連の制御を繰り返し実行する。
次に、CPU21は、フラッシュメモリ23のROMデータ領域内のブロック番号BNにて示されるブロックから書込データを読み出すべくNANDインタフェース部22を制御する(ステップS11)。ステップS11の実行により、NANDインタフェース部22は、当該ブロックに書き込まれている書込データをフラッシュメモリ23から読み出す。そして、NANDインタフェース部22は、この読み出した書込データに対して誤り検出処理を施し、その誤り検出結果として、エラービットの数を表すエラービット数情報EBをステータスレジスタ223に保持する。
ステップS71において、エラービット数情報EBが閾値Elim未満であると判定した場合、CPU21は、リフレッシュ制御を実施させるべくNANDインタフェース部22を制御する(ステップS13)。ステップS13の実行により、NANDインタフェース部22は、以下のようなリフレッシュ制御をフラッシュメモリ23に施す。つまり、NANDインタフェース部22は、ブロック番号BNにて示されるブロックに書き込まれているデータの読出及び消去を順に行い、引き続きこの読み出したデータに対して誤り訂正を施したデータを、ブロック番号BNにて示されるブロックに書き込む。
尚、ステップS71において、エラービット数情報EBが閾値Elim以上であると判定した場合、CPU21は、バックアップテーブル433内を検索する(ステップS72)ことで、ブロック番号BNにて示されるブロックのアドレスに対応したバックアップデータが存在するか否かを判定する(ステップS73)。
ステップS73において、バックアップデータが存在すると判定した場合、CPU21は、以下のバックアップデータ復元処理を実施させるべくNANDインタフェース部22を制御する(ステップS74)。ステップS74の実行により、NANDインタフェース部22は、まず、ブロック番号BNにて示されるブロックに書き込まれているデータを消去する。そして、NANDインタフェース部22は、ブロック番号BNにて示されるブロックのアドレスに対応したバックアップデータを当該ブロックに書き込むことで、バックアップデータによる書込データの復元を行う。
ここで、上記ステップS13又はS74の実行後、又はステップS12においてエラービット数情報EBが閾値Eth未満であると判定した場合、或いはステップS73においてバックアップデータが存在しないと判定した場合、CPU21は、ブロック番号BNを例えば1だけインクリメントする更新を行う(ステップS14)。
次に、CPU21は、フラッシュメモリ23のROMデータ領域に属する全てのブロックに対して上記ステップS11~S14による一連の処理が終了したか否かを判定する(ステップS15)。CPU21は、ステップS15において終了したと判定されるまで、ステップS11~S14又はS71~S74による一連の処理を繰り返し実行する。
このように、メモリ装置200Aではメモリ装置200と同様に、データ書込み時に実施するベリファイ(S33)において読出データに生じているエラービットの数(EB)が所定の閾値Eth以上となるブロックをマージンブロックとする(S37)。ただし、メモリ装置200Aでは、このマージンブロックを利用して、以下のようなバックアップ処理を行う(S50)。つまり、メモリ装置200Aでは、ベリファイによって読み出された読出データに生じているエラービット数(EB)が閾値Eth未満となるブロックを、エラービット数(EB)が多い順に選択し、選択したブロックに書き込まれているデータを、マージンブロックに書き込む(S514)。
当該リフレッシュ制御により、メモリ装置200Aでは、フラッシュメモリ23から読み出された読出データに生じているエラービットの数が訂正可能なエラービット数の限界値(Elim)を超えていても、これをマージンブロックに書き込まれているバックアップデータによって復元(S74)可能になっている。
かかる半導体ICによれば、例え当該半導体ICの実装時に高熱に晒されても、読出データに生じるエラービットの数を誤り訂正可能なエラービット数の限界値未満にすることが可能となるので、データの保存期間の延長及び歩留まりの向上を図ることができる。更に、当該半導体ICによれば、リフレッシュ制御を施す場合においても、各ブロックに対して実際にリフレッシュ処理が行われる頻度が減るので、リフレッシュ制御に費やされる時間の短縮を図ることが可能となる。
当該半導体ICを入荷した商品メーカ側では、この半導体ICの電極パッド及び基板の表面に設けられた電極パッドに熱を加える熱処理を施して両者を半田付けすることで、当該半導体ICを基板に実装する(実装工程G3)。
又、メモリ装置200Aでは、NAND型のフラッシュメモリ23の記録方式としては、SLC(Single Level Cell)、MLC(Multiple Level Cell)、及びTLC(Triple Level Cell)のいずれの記録方式を採用してもよい。
この際、フラッシュメモリ23では、ROMデータ領域内において書込対象となる情報データを書き込む記録方式と、バックアップデータを書き込む記録方式と、を互いに異ならせてもよい。
例えば、情報データを書き込む記録方式としてMLC又はTLC方式を採用し、バックアップデータを書き込む記録方式として、よりデータの保持品質の高いSLC方式を採用することで、バックアップの保持性能を高めるようにしてもよい。
また、メモリ装置200Aでは、リフレッシュ制御にて、マージンブロックに書き込んだバックアップデータを用いてデータ復元処理(S74)を行っているが、通常の読出し動作時に読み出された読出データのエラービット数が閾値Elimを超えた場合に、データ復元処理(S74)を実施するようにしてもよい。