(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024139941
(43)【公開日】2024-10-10
(54)【発明の名称】メモリシステム、コンピュータシステム、プログラムおよび情報格納方法
(51)【国際特許分類】
G06F 12/06 20060101AFI20241003BHJP
G06F 12/00 20060101ALI20241003BHJP
G11C 16/34 20060101ALI20241003BHJP
G11C 29/00 20060101ALI20241003BHJP
G06F 11/20 20060101ALN20241003BHJP
【FI】
G06F12/06 515H
G06F12/00 597U
G11C16/34 120
G11C29/00 410
G06F11/20 617
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023050896
(22)【出願日】2023-03-28
(71)【出願人】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100135002
【弁理士】
【氏名又は名称】松岡 直之
(72)【発明者】
【氏名】杉本 勝彦
(72)【発明者】
【氏名】水上 裕貴
【テーマコード(参考)】
5B034
5B160
5B225
5L206
【Fターム(参考)】
5B034CC02
5B160AA14
5B160AB26
5B160CA18
5B225CA19
5B225DA03
5B225DA10
5B225DD03
5B225DE08
5B225DE16
5B225EA05
5B225FA01
5L206AA10
5L206BB12
5L206EE02
5L206FF02
(57)【要約】
【課題】不揮発性メモリに格納した情報の信頼性を向上させる技術を提供する。
【解決手段】外部のホストコンピュータ2において使用される保存情報5を格納するメモリシステム3に、第1ブロックおよび第2ブロックを備える不揮発性メモリ31と、第1ブロックに格納された保存情報5を、第2ブロックに格納するリフレッシュ制御部303とを備え、保存情報5が第2ブロックに格納された後において、第1ブロックに格納された保存情報5と、第2ブロックに格納された保存情報5とを選択的に読み出す。
【選択図】
図5
【特許請求の範囲】
【請求項1】
外部のホストにおいて使用される保存情報を格納するメモリシステムであって、
第1記憶素子および第2記憶素子を備える不揮発性の記憶手段と、
前記第1記憶素子に格納された前記保存情報を、前記第2記憶素子に格納する記憶制御手段と、
を備え、
前記保存情報が前記第2記憶素子に格納された後において、前記第1記憶素子に格納された前記保存情報と、前記第2記憶素子に格納された前記保存情報とを選択的に読み出すメモリシステム。
【請求項2】
請求項1に記載のメモリシステムであって、
前記第1記憶素子に格納された前記保存情報を前記第2記憶素子に格納するときの履歴を示す履歴情報を格納しており、
前記記憶制御手段は、前記履歴情報に基づいて、前記保存情報を選択的に読み出すメモリシステム。
【請求項3】
請求項1に記載のメモリシステムであって、
前記保存情報が前記第2記憶素子に格納された後において、前記ホストから前記保存情報に対する出力要求があったときに、前記記憶制御手段は、前記第2記憶素子に格納された前記保存情報を選択的に読み出して前記ホストに向けて出力するメモリシステム。
【請求項4】
請求項3に記載のメモリシステムであって、
前記記憶手段は、第3記憶素子をさらに備え、
前記記憶制御手段は、前記第1記憶素子に格納された前記保存情報を、前記第3記憶素子に格納するメモリシステム。
【請求項5】
請求項1に記載のメモリシステムであって、
前記第1記憶素子から前記保存情報を読み出すときの適切な閾値電圧を示す閾値電圧情報を記憶するメモリシステム。
【請求項6】
請求項1に記載のメモリシステムであって、
前記記憶手段に格納された前記保存情報を1回だけ読み出して訂正する第1訂正モードと、前記記憶手段に格納された前記保存情報を複数回読み出して訂正する第2訂正モードとを実行する訂正手段をさらに備え、
前記記憶手段は、第3記憶素子をさらに備え、
前記第1記憶素子に格納された前記保存情報について、前記第1訂正モードによる訂正が可能か否かを示す可否情報を格納し、
前記記憶制御手段は、前記可否情報に応じて、前記第1モードによる訂正が可能な前記保存情報を優先的に読み出して前記第3記憶素子に前記保存情報を格納するメモリシステム。
【請求項7】
請求項1に記載のメモリシステムであって、
前記記憶手段に格納された前記保存情報を消去するときに、前記第2記憶素子に格納された前記保存情報を優先的に消去するメモリシステム。
【請求項8】
保存情報を使用するホストと、前記保存情報を格納するメモリシステムとを備えるコンピュータシステムであって、
前記メモリシステムは、
第1記憶素子および第2記憶素子を備える不揮発性の記憶手段と、
前記第1記憶素子に格納された前記保存情報を、前記第2記憶素子に格納する記憶制御手段と、
を備え、
前記保存情報が前記第2記憶素子に格納された後において、前記第1記憶素子に格納された前記保存情報と、前記第2記憶素子に格納された前記保存情報とを選択的に読み出すコンピュータシステム。
【請求項9】
外部のホストコンピュータにおいて使用される保存情報を格納するコンピュータ読み取り可能なプログラムであって、前記コンピュータによる前記プログラムの実行は、前記コンピュータを、
第1記憶素子および第2記憶素子を備える不揮発性の記憶手段と、
前記第1記憶素子に格納された前記保存情報を、前記第2記憶素子に格納する記憶制御手段と、
を備え、
前記保存情報が前記第2記憶素子に格納された後において、前記第1記憶素子に格納された前記保存情報と、前記第2記憶素子に格納された前記保存情報とを選択的に読み出すメモリシステムとして機能させるプログラム。
【請求項10】
メモリシステムの外部に設けられたホストコンピュータにおいて使用される保存情報を格納する情報格納方法であって、
前記メモリシステムが備える不揮発性の第1記憶素子に前記保存情報を格納する工程と、
前記メモリシステムが備える不揮発性の第2記憶素子に、前記第1記憶素子に格納された前記保存情報を格納する工程と、
前記保存情報が前記第2記憶素子に格納された後において、前記第1記憶素子に格納された前記保存情報と、前記第2記憶素子に格納された前記保存情報とを選択的に読み出す工程と、
を有する情報格納方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリに格納した情報の信頼性を向上させる技術に関する。
【背景技術】
【0002】
NANDフラッシュメモリのような不揮発性の記憶媒体は、記憶素子の特性上、書き込み直後からビットエラーが発生する場合がある。また、書き込まれた情報の読み出しや時間経過などによってもビットエラーが増加する。したがって、従来より、ビットエラーが増加したブロックを別のブロックに複写することで情報の消失を抑制する技術が知られている。このような処理は、「リフレッシュ」と呼ばれており、例えば、特許文献1には、格納する情報に予めエラー訂正符号を付与しておき、閾値以上のビットエラーが発生したかどうかを判定してリフレッシュを行う技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところが、不揮発性メモリを使用するメモリシステムの構成によっては、特許文献1に記載されているように、閾値以上のビットエラーが発生したときに、直ちに、リフレッシュを実行できるとは限らないという問題がある。そして、リフレッシュが遅れると、その間にビットエラーが増加し、その後リフレッシュを行おうとしても訂正不能に陥るという問題があった。すなわち、リフレッシュを行う技術において、さらなる信頼性の向上が要求される。
【0005】
本発明は、上記課題に鑑みてなされたものであり、不揮発性メモリに格納した情報の信頼性を向上させる技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記の課題を解決するため、請求項1の発明は、外部のホストにおいて使用される保存情報を格納するメモリシステムであって、第1記憶素子および第2記憶素子を備える不揮発性の記憶手段と、前記第1記憶素子に格納された前記保存情報を、前記第2記憶素子に格納する記憶制御手段とを備え、前記保存情報が前記第2記憶素子に格納された後において、前記第1記憶素子に格納された前記保存情報と、前記第2記憶素子に格納された前記保存情報とを選択的に読み出す。
【0007】
また、請求項2の発明は、請求項1の発明に係るメモリシステムであって、前記第1記憶素子に格納された前記保存情報を前記第2記憶素子に格納するときの履歴を示す履歴情報を格納しており、前記記憶制御手段は、前記履歴情報に基づいて、前記保存情報を選択的に読み出す。
【0008】
また、請求項3の発明は、請求項1の発明に係るメモリシステムであって、前記保存情報が前記第2記憶素子に格納された後において、前記ホストから前記保存情報に対する出力要求があったときに、前記記憶制御手段は、前記第2記憶素子に格納された前記保存情報を選択的に読み出して前記ホストに向けて出力する。
【0009】
また、請求項4の発明は、請求項3の発明に係るメモリシステムであって、前記記憶手段は、第3記憶素子をさらに備え、前記記憶制御手段は、前記第1記憶素子に格納された前記保存情報を、前記第3記憶素子に格納する。
【0010】
また、請求項5の発明は、請求項1の発明に係るメモリシステムであって、前記第1記憶素子から前記保存情報を読み出すときの適切な閾値電圧を示す閾値電圧情報を記憶する。
【0011】
また、請求項6の発明は、請求項1の発明に係るメモリシステムであって、前記記憶手段に格納された前記保存情報を1回だけ読み出して訂正する第1訂正モードと、前記記憶手段に格納された前記保存情報を複数回読み出して訂正する第2訂正モードとを実行する訂正手段をさらに備え、前記記憶手段は、第3記憶素子をさらに備え、前記第1記憶素子に格納された前記保存情報について、前記第1訂正モードによる訂正が可能か否かを示す可否情報を格納し、前記記憶制御手段は、前記可否情報に応じて、前記第1モードによる訂正が可能な前記保存情報を優先的に読み出して前記第3記憶素子に前記保存情報を格納する。
【0012】
また、請求項7の発明は、請求項1の発明に係るメモリシステムであって、前記記憶手段に格納された前記保存情報を消去するときに、前記第2記憶素子に格納された前記保存情報を優先的に消去する。
【0013】
また、請求項8の発明は、保存情報を使用するホストと、前記保存情報を格納するメモリシステムとを備えるコンピュータシステムであって、前記メモリシステムは、第1記憶素子および第2記憶素子を備える不揮発性の記憶手段と、前記第1記憶素子に格納された前記保存情報を、前記第2記憶素子に格納する記憶制御手段とを備え、前記保存情報が前記第2記憶素子に格納された後において、前記第1記憶素子に格納された前記保存情報と、前記第2記憶素子に格納された前記保存情報とを選択的に読み出す。
【0014】
また、請求項9の発明は、外部のホストコンピュータにおいて使用される保存情報を格納するコンピュータ読み取り可能なプログラムであって、前記コンピュータによる前記プログラムの実行は、前記コンピュータを、第1記憶素子および第2記憶素子を備える不揮発性の記憶手段と、前記第1記憶素子に格納された前記保存情報を、前記第2記憶素子に格納する記憶制御手段とを備え、前記保存情報が前記第2記憶素子に格納された後において、前記第1記憶素子に格納された前記保存情報と、前記第2記憶素子に格納された前記保存情報とを選択的に読み出すメモリシステムとして機能させる。
【0015】
また、請求項10の発明は、メモリシステムの外部に設けられたホストコンピュータにおいて使用される保存情報を格納する情報格納方法であって、前記メモリシステムが備える不揮発性の第1記憶素子に前記保存情報を格納する工程と、前記メモリシステムが備える不揮発性の第2記憶素子に、前記第1記憶素子に格納された前記保存情報を格納する工程と、前記保存情報が前記第2記憶素子に格納された後において、前記第1記憶素子に格納された前記保存情報と、前記第2記憶素子に格納された前記保存情報とを選択的に読み出す工程とを有する。
【発明の効果】
【0016】
請求項1ないし10に記載の発明は、外部のホストにおいて使用される保存情報を格納するメモリシステムであって、第1記憶素子に格納された保存情報を、第2記憶素子に格納する記憶制御手段を備え、保存情報が第2記憶素子に格納された後において、第1記憶素子に格納された保存情報と、第2記憶素子に格納された保存情報とを選択的に読み出す。これにより、例えば、用途に応じて二重化された保存情報を使い分けることができる。
【図面の簡単な説明】
【0017】
【
図1】第1の実施の形態におけるコンピュータシステムのブロック図である。
【
図2】第1の実施の形態における管理情報を例示する図である。
【
図3】フリーブロック情報の初期状態を例示する図である。
【
図5】第1の実施の形態におけるメモリシステムが備える機能ブロックをデータの流れとともに示す図である。
【
図6】第1の実施の形態における情報格納方法を示す流れ図である。
【
図9】第1の実施の形態におけるリフレッシュ処理を示す流れ図である。
【
図10】第1の実施の形態におけるリフレッシュ処理を示す流れ図である。
【
図11】第1の実施の形態におけるリフレッシュ処理を示す流れ図である。
【
図12】第2の実施の形態におけるコンピュータシステムを示す図である。
【
図13】第2の実施の形態における管理情報を示す図である。
【
図15】第2の実施の形態におけるメモリシステムが備える機能ブロックをデータの流れとともに示す図である。
【
図16】第2の実施の形態における情報格納方法を示す流れ図である。
【
図17】第2の実施の形態におけるリフレッシュ処理を示す流れ図である。
【
図18】第2の実施の形態におけるリフレッシュ処理を示す流れ図である。
【
図19】第2の実施の形態におけるリフレッシュ処理を示す流れ図である。
【
図20】第2の実施の形態におけるリフレッシュ処理を示す流れ図である。
【
図21】第2の実施の形態におけるリフレッシュ処理を示す流れ図である。
【
図22】第2の実施の形態におけるリフレッシュ処理を示す流れ図である。
【発明を実施するための形態】
【0018】
以下、本発明の好適な実施の形態について、添付の図面を参照しつつ、詳細に説明する。ただし、以下の説明において特に断らない限り、方向や向きに関する記述は、当該説明の便宜上、図面に対応するものであり、例えば実施品、製品または権利範囲等を限定するものではない。
【0019】
また、ここに開示される要素の機能は、当該開示される要素を実行するように構成された、あるいは当該開示される機能を実行するようにプログラミングされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(特定用途向け集積回路)、従来の回路構成および/またはそれらの組み合わせを含む回路構成あるいは処理回路構成が用いられて実装されてもよい。プロセッサは、それが、その中にトランジスタおよび他の回路構成を含むとき、処理回路構成あるいは回路構成として見なされる。本開示において、回路構成、ユニットあるいは手段は、挙げられた機能を実行するハードウェア、あるいは当該機能を実現するようにプログラミングされたハードウェアである。ハードウェアは、挙げられた機能を実行するようにプログラミングされた、あるいは当該機能を実行するように構成された、ここで開示されるいかなるハードウェアあるいは既知の他のものであってもよい。ハードウェアが、あるタイプの回路構成として見なされるかもしれないプロセッサであるとき、回路構成、手段あるいはユニットは、ハードウェアとソフトウェアとの組み合わせ、ハードウェアを構成するために用いられるソフトウェアおよび/またはプロセッサである。
【0020】
<1. 第1の実施の形態>
図1は、第1の実施の形態におけるコンピュータシステム1のブロック図である。コンピュータシステム1は、保存情報5を使用するホストコンピュータ2と、外部のホストコンピュータ2において使用される保存情報5を格納するメモリシステム3とを備えている。
【0021】
詳細な説明を省略するが、ホストコンピュータ2は、一般的なコンピュータ(情報処理装置)として構成されており、メモリシステム3と電気的に接続されている。すなわち、ホストコンピュータ2は、メモリシステム3との間でデータ通信が可能である。
【0022】
特に、ホストコンピュータ2は、メモリシステム3に対して出力要求を行い、メモリシステム3に格納されている保存情報5をメモリシステム3から取得して使用する。すなわち、保存情報5は、メモリシステム3において保管され、必要に応じてホストコンピュータ2によって使用される情報である。以下の説明において、ホストコンピュータ2からの出力要求に応じて、保存情報5を不揮発性メモリ31から読み出すことを、「ホストリード」と称する。ホストリードされた保存情報5は、ホストコンピュータ2に向けて出力される。
【0023】
なお、保存情報5としては、例えば、ホストコンピュータ2が使用するプログラムや設定情報などが該当する。ただし、保存情報5はこのような情報に限定されるものではない。また、第1の実施の形態では、保存情報5は、ホストコンピュータ2にとっての読み取り専用の情報として説明するが、書き替え可能な情報であってもよい。
【0024】
ホストコンピュータ2に接続されるメモリシステム3は、
図1に示すように、CPU30と、不揮発性メモリ31と、RAM32と、外部インタフェース回路33と、誤り訂正回路34と、メモリインタフェース回路35とを備えている。
【0025】
なお、第1の実施の形態におけるメモリシステム3は、ホストコンピュータ2に対して着脱自在に構成されている。したがって、ユーザはメモリシステム3を交換することも可能である。このような構成としては、例えば、メモリカード(PCカードやSDカード等)を想定することができる。ただし、メモリシステム3は、必ずしも着脱自在でなければならないわけではない。ホストコンピュータ2とメモリシステム3とが、コンピュータシステム1において一体的な構造物を構成していてもよい。
【0026】
また、不揮発性メモリ31に格納された保存情報5をリフレッシュするときに、保存情報5を、一旦、不揮発性メモリ31から読み出すことを「リフレッシュリード」と称して「ホストリード」と区別する場合がある。リフレッシュリードされた保存情報5は、リフレッシュにおけるコピー元の情報となるが、ホストコンピュータ2に向けて出力されることはない。
【0027】
CPU30は、不揮発性メモリ31に格納されているプログラム4をRAM32に適宜ロードしつつ、実行することにより、各種データの演算を行う。これにより、CPU30は、各種データを作成したり、メモリシステム3が備える各構成(外部インタフェース回路33、誤り訂正回路34、および、メモリインタフェース回路35等)を制御する機能を有している。このように、メモリシステム3は、一種のコンピュータとして構成されている。
【0028】
不揮発性メモリ31は、プログラム4および保存情報5を格納するために使用される記憶素子である。第1の実施の形態における不揮発性メモリ31は、いわゆるNANDフラッシュメモリである。
【0029】
ただし、不揮発性メモリ31は、情報を不揮発的(電力の供給がない状態であっても長期間情報を喪失することがない状態。)に格納することが可能であれば、NANDフラッシュメモリに限定されるものではない。また、不揮発性メモリ31が格納する情報は、プログラム4および保存情報5に限定されるものではない。さらに、プログラム4は、不揮発性メモリ31以外の不揮発性メモリに格納されていてもよい。
【0030】
従来の技術を適宜採用可能であるため詳細な説明を省略するが、不揮発性メモリ31が備える記憶素子は、不揮発性メモリ31において、いずれかのブロックに割り当てられて管理されている。すなわち、不揮発性メモリ31の記憶領域(多数の記憶素子によって構成される。)は、複数のブロックに分割されている。そして、それぞれのブロックには、不揮発性メモリ31における物理アドレスが識別子として割り当てられている。したがって、メモリシステム3では、当該物理アドレスによって、不揮発性メモリ31の各ブロックを特定することができる。なお、不揮発性メモリ31の各ブロックは、さらに、所定のサイズを有する複数のページに分割されている。
【0031】
以下の説明では、不揮発性メモリ31が備えるブロックの識別子として「B」を用いる場合がある。そして、0≦B≦n(「n」は0以上の整数。)とする。すなわち、不揮発性メモリ31は、ブロック0からブロックnまでのn+1個のブロックを備えているものとする。また、ページの識別子として「P」を用いる場合がある。そして、0≦P≦m(「m」は0以上の整数。)とする。すなわち、各ブロックは、ページ0からページmまでのm+1個のページを備えているものとする。さらに、ブロックBの物理アドレスを「PAB」と表現する場合がある。すなわち、ブロック0の物理アドレスは、「PA0」とする。
【0032】
なお、不揮発性メモリ31は、初期状態において、未使用(有効な情報が格納されていない)状態のブロックを備えている。
【0033】
RAM32は、揮発性の記憶媒体であり、メモリシステム3において各種データを一時的に記憶する機能を提供する。言い換えれば、RAM32は、メモリシステム3において電子的に固定された情報を一時的に保存する。
【0034】
図1では、RAM32がCPU30の外部構成として図示されている。一般にCPUと呼ばれる回路は、内部にRAMやループ回路、フリップフロップ回路、バッファ回路など、電気信号(情報)を一定期間保持(記憶)する素子を備えた回路として構成される。したがって、先述のCPU30も現実には、そのような記憶素子を内部に備えた回路として構成される。
【0035】
しかし、RAM32は、CPU30が内部に備える様々な記憶素子も含むものとして説明する。すなわち、RAM32は、CPU30の内部・外部を問わず、CPU30が使用する情報を一時的に格納する記憶装置の総称である。したがって、RAM32に格納されると説明される情報は、
図1に示すように、CPU30の外部に設けられた回路に格納されなければならないことを意味するものではない。
【0036】
RAM32は、すでに説明したようにCPU30によってロードされたプログラム4を記憶するために使用されるが、RAM32が記憶する情報はプログラム4に限定されるものではない。例えば、CPU30によって一時的に作成される情報(演算中の情報など)が格納されてもよい。
図1では、RAM32が管理情報40を格納すると図示している。
【0037】
図2は、第1の実施の形態における管理情報40を例示する図である。管理情報40は、プログラム4に含まれる情報であってCPU30によって使用される。より詳細には、管理情報40は、プログラム4の一部として不揮発性メモリ31に格納されており、必要に応じてRAM32にロードされてCPU30によって参照される。
【0038】
図2に示すように、第1の実施の形態における管理情報40は、論物変換情報41、フリーブロック情報42、ターゲット情報43、履歴情報44、および、電圧情報45を含む情報である。ただし、管理情報40を構成する各情報は、必ずしもひとまとまりの情報として扱われていなければならないわけではない。適宜、使用可能な状態で、作成や更新、あるいは、格納がされていればよい。
【0039】
論物変換情報41は、不揮発性メモリ31に格納されている情報(例えば保存情報5)の論理アドレスと、当該情報の不揮発性メモリ31における格納場所を示す物理アドレスとの対応関係を一対一で示す情報である。CPU30は、論物変換情報41を参照することにより、ホストコンピュータ2から伝達された論理アドレスを、対応する物理アドレスに変換することができる。
【0040】
詳細は後述するが、リフレッシュが行われた保存情報5については、リフレッシュ元の物理アドレスで示されるブロック(第1記憶素子)と、リフレッシュ先の物理アドレスで示されるブロック(第2記憶素子)とに二重化されて格納された状態となる。二重化された保存情報5とは、2つの異なるブロックに別々に格納された保存情報5であって、互いの論理アドレスが同一の保存情報5である。
【0041】
多重化された保存情報5は、物理アドレスは異なるが、論理アドレスが同一であるため、例えば、ホストコンピュータ2からは同一の情報に見える。しかし、格納されているブロックの劣化やリフレッシュされたときのエラー訂正等により、不揮発性メモリ31に格納されているときのビットの状態は、多重化された保存情報5において必ずしも同一ではない。
【0042】
すでに説明したように、論物変換情報41は、論理アドレスと物理アドレスとを一対一で示す情報である。言い換えれば、多重化された保存情報5(論理アドレスが同一の保存情報5)については、いずれか一方だけが論物変換情報41に格納される。そして、ホストリードのとき(ホストコンピュータ2からの出力要求に従って保存情報5を読み出すとき)は、論物変換情報41が参照される。したがって、論物変換情報41を参照して保存情報5を読み出すことは、リフレッシュ後に多重化された保存情報5については、一方のみ(論物変換情報41に記述されている物理アドレスに格納されている方の保存情報5のみ)を選択的に読み出すことに相当する。
【0043】
フリーブロック情報42は、不揮発性メモリ31の全ブロックの各々について、使用中のブロックか、使用されていないブロック(有効な情報が格納されていない空き状態のブロック)かの区別を示す情報である。
【0044】
図3は、フリーブロック情報42の初期状態を例示する図である。フリーブロック情報42は、不揮発性メモリ31が備える全ブロックの各々についてレコードが作成されており、1つのレコードには、1つのブロックの物理アドレスと、当該ブロックが使用中であるか未使用であるかを示す情報(使用状況)とが格納されている。
【0045】
メモリシステム3の不揮発性メモリ31は、構成する記憶素子のすべてに有効な情報が格納されているわけではなく、予め空き領域の記憶素子(ブロック)を備えている。CPU30は、不揮発性メモリ31に新たな情報を格納する必要が生じたときに、フリーブロック情報42を参照することによって、その時点で使用可能なブロックの物理アドレスを取得することができる。
【0046】
なお、フリーブロック情報42は、使用中または未使用状態のいずれか一方のブロックの物理アドレスのみを格納するように構成してもよい。
【0047】
フリーブロック情報42の初期状態を示す
図3では、ブロック0からブロックk-1(「k」は、0≦k<nを満たす整数。)までのブロックが使用中を示す「1」であり、ブロックkからブロックnまでが未使用を示す「0」となっている。したがって、第1の実施の形態における不揮発性メモリ31は、初期状態において、ブロック0からブロックk-1までのk個のブロックが使用中のブロックであり、ブロックkからブロックnまでが未使用のブロックである。なお、第1の実施の形態における不揮発性メモリ31は、k(初期状態で使用中のブロック数)>n-k+1(初期状態で未使用状態のブロック数)であるが、このような関係に限定されるものではない。
【0048】
図2に戻って、ターゲット情報43は、リフレッシュが必要と判断された保存情報5の論理アドレスを示す情報である。より詳細には、ターゲット情報43は、不揮発性メモリ31に格納されている保存情報5の全論理アドレスと、各論理アドレスで示される保存情報5のリフレッシュの要否を示す情報とが関連づけられて格納されている。ターゲット情報43において、要否を示す情報が「0」であれば関連づけられている保存情報5のリフレッシュが「不要」であることを示し、「1」であれば関連づけられている保存情報5のリフレッシュが「必要」であることを示すものとする。
【0049】
CPU30は、メモリシステム3においてリフレッシュが許可されたときに、ターゲット情報43を参照することにより、実際にリフレッシュを実行すべき論理アドレスを取得することができる。なお、ターゲット情報43において、要否を示す情報の初期値は「0」である。
【0050】
履歴情報44は、メモリシステム3において、リフレッシュが行われる度に、その記録として1つのレコードが作成される情報である。履歴情報44の各レコードは、過去のリフレッシュの状況を示す情報であって、保存情報5の論理アドレスと、不揮発性メモリ31を構成するブロックの物理アドレスとを格納している。履歴情報44のレコードが格納する論理アドレスは、過去のリフレッシュにおいて、リフレッシュが必要であると判断された保存情報5を示す論理アドレスである。また、履歴情報44のレコードが格納する物理アドレスは、過去のリフレッシュにおいてリフレッシュが必要であると判断された保存情報5を格納していたブロックの物理アドレスである。
【0051】
なお、リフレッシュにおいてリフレッシュが必要であると判断された保存情報5を格納していたブロックを「リフレッシュ元のブロック」と称する。したがって、履歴情報44に記録される物理アドレスは、過去のリフレッシュにおけるリフレッシュ元のブロックを示す物理アドレスである。また、リフレッシュのために保存情報5を読み出すブロックを「コピー元のブロック」と称する。
【0052】
上記のとおり、リフレッシュの対象となった保存情報5の論理アドレスと、当該リフレッシュが必要とされたブロックの物理アドレスとを関連づけた情報を、便宜上、「履歴情報44」と称するが、「履歴」という名称に技術的意味があるわけではない。詳細は後述するが、メモリシステム3では、ブロックの再利用のために、リフレッシュ元のブロックに格納されている保存情報5を消去する場合がある。
【0053】
不揮発性メモリ31においてこのような消去が行われたとしても、リフレッシュが行われたという「履歴」が消滅するわけではない。しかし、詳細は後述するが、リフレッシュ元のブロックに格納されている保存情報5が消去されたとき、メモリシステム3は、当該ブロックのレコードを履歴情報44から消去する。すなわち、メモリシステム3は、リフレッシュの履歴を永久に履歴情報44に記録しておくわけではない。
【0054】
リフレッシュ元のブロックに格納されている保存情報5が消去されると、多重化されているブロックが1つ減少する。そして、多重化されているブロックが1つ減少したときに、当該ブロックのレコードが履歴情報44から削除される。一方、すでに説明したように、リフレッシュが実行されて、多重化されているブロックが1つ増加したときに、リフレッシュ元のブロックのレコードが履歴情報44に追加される。したがって、履歴情報44は、不揮発性メモリ31における保存情報5の多重化の状況を示す情報と言える。
【0055】
メモリシステム3では、リフレッシュ元のブロックと、コピー元のブロックとが一致するとは限らない。すなわち、リフレッシュが必要であると判断された保存情報5を、当該保存情報5を格納しているブロック(リフレッシュ元のブロック)から読み出すのではなく、他のブロック(コピー元のブロックとなる。)から読み出してコピーすることによりリフレッシュを実行する場合がある。
【0056】
CPU30は、論理アドレスによって履歴情報44を参照することにより、当該論理アドレスで示される保存情報5が、不揮発性メモリ31において多重化されているか否かを判定することができる。より詳細には、検索に用いた論理アドレスを格納したレコードを履歴情報44から検出することができれば(検出されるレコードは1つとは限らない。)、当該論理アドレスで示される保存情報5が、当該レコードに格納されている物理アドレスで示されるブロック(リフレッシュ元のブロック)と、論物変換情報41に格納されている物理アドレスで示されるブロック(リフレッシュ先のブロック)とに多重化されていることがわかる。また、当該論理アドレスの保存情報5が多重化されていた場合には、当該保存情報5のリフレッシュ元のブロックを示す物理アドレスを特定することも可能である。
【0057】
すでに簡単に説明したように、リフレッシュが行われた保存情報5については、当該リフレッシュ元の物理アドレスで示されるブロックと、リフレッシュ先の物理アドレスで示されるブロックとに二重化されて格納された状態となる。詳細は後述するが、リフレッシュリードのとき(リフレッシュのために保存情報5を読み出すとき)は、履歴情報44が参照され、二重化された保存情報5については、リフレッシュ元のブロックが特定される。したがって、履歴情報44を参照して保存情報5を読み出すことは、リフレッシュ後に多重化された保存情報5については、リフレッシュ元のブロックに格納されている方の保存情報5を選択的に読み出すことに相当する。
【0058】
【0059】
一般的なNANDフラッシュメモリから情報を読み出すときには、ブロックの各ページについて、それぞれ適切な閾値電圧で情報を読み出す必要がある。しかし、この適切な閾値電圧は、ページへのアクセス回数等によって変化する。したがって、NANDフラッシュメモリに格納されている情報を読み出すときには、各ページごとに、適切な閾値電圧をサーチしながら情報の読み出しを行う必要がある。このような処理が必要となるのは、ホストリードに限られるものではなく、リフレッシュリードのときも同様である。
【0060】
メモリインタフェース回路35は、リフレッシュリードのときにサーチした、リフレッシュ元のブロックの各ページごとの適切な閾値電圧をCPU30に通知する機能を備えている。CPU30は、このようにして収集した適切な閾値電圧を、電圧情報45としてRAM32に格納する。
【0061】
電圧情報45を構成するレコードは、不揮発性メモリ31を構成するブロックの物理アドレスと、ブロックにおけるページ識別子と、各ページを読み出すときに使用した適切な閾値電圧の値とから構成される。第1の実施の形態では、1つのブロックはm+1個のページから構成される。したがって、
図4に示すように1つのブロック(同一の物理アドレスが格納されている)には、m+1個のレコードが存在し、各レコードにはページ識別子と閾値電圧とが関連づけられている。
【0062】
第1の実施の形態では、リフレッシュが未だ行われたことのないブロック(
図4においてPA0で示されるブロック0)については、当該ブロックの閾値電圧として、全ページに共通の初期値「0」が格納されている。閾値電圧として「0」が格納されているページについては、情報を読み出すときの適切な閾値電圧が記録されておらず、適切な閾値電圧が不明であることを示すものとする。
【0063】
一方、
図4に示す例では、リフレッシュが行われたブロック1(
図4において物理アドレスPA1が格納されているブロック)のページ0およびページ1のレコードには閾値電圧V0が格納されており、ページm-1のレコードには閾値電圧V3が格納されており、ページmのレコードには閾値電圧V4が格納されている。
【0064】
なお、すべてのブロックについての閾値電圧の初期値を予め格納しておくのではなく、リフレッシュが行われたブロックについてのみ電圧情報45を作成するように構成してもよい。その場合は、電圧情報45の容量を抑制することができる。さらに、適切な閾値電圧のサーチを開始する際に最初にセットされる閾値電圧を、「0」の代わりに、電圧情報45における閾値電圧の初期値としてもよい。
【0065】
図1に戻って、外部インタフェース回路33の詳細は図示しないが、外部インタフェース回路33は、ホストコンピュータ2と電気的に接続される端子と、各種情報(ホストコンピュータ2から入力された情報や、誤り訂正回路34から入力された情報等)を格納する記憶素子とを備える回路である。外部インタフェース回路33は、CPU30と接続されており、CPU30からの制御信号に応じて制御される。なお、詳細な説明は省略するが、外部インタフェース回路33は、メモリシステム3に対する、外部(ホストコンピュータ2に限定されない。)からの電力供給を受ける機能も有している。
【0066】
誤り訂正回路34は、詳細は図示しないが、各種情報(外部インタフェース回路33に対して出力する情報や、メモリインタフェース回路35との間で入出力する情報等)を格納する記憶素子と、必要に応じて当該記憶素子に記憶された情報のエラービットを訂正するための回路とを備える回路である。誤り訂正回路34は、CPU30と接続されており、CPU30からの制御信号に応じて制御される。また、詳細は後述するが、誤り訂正回路34は、訂正を行ったときの状況をCPU30に通知する機能も有している。
【0067】
メモリインタフェース回路35は、CPU30からの制御信号に応じて、不揮発性メモリ31に情報を書き込んだり、不揮発性メモリ31から情報を読み出したりする回路である。詳細は図示しないが、メモリインタフェース回路35は、各種情報(誤り訂正回路34との間で入出力する情報等)を格納する記憶素子を備えている。
【0068】
第1の実施の形態では、ホストコンピュータ2が、メモリシステム3を、読み込み専用の記録媒体として使用する例で説明する。したがって、ホストコンピュータ2は、メモリシステム3の不揮発性メモリ31に対して、保存情報5を格納するように指示することはないものとして説明する。しかし、メモリシステム3は、リフレッシュのときや、更新された管理情報40を保存するときなどにおいて、不揮発性メモリ31に新たな情報を書き込むことがある。
【0069】
図5は、第1の実施の形態におけるメモリシステム3が備える機能ブロックをデータの流れとともに示す図である。
図5に示す外部インタフェース制御部300、訂正制御部301、メモリインタフェース制御部302およびリフレッシュ制御部303は、CPU30がプログラム4に従って動作することにより実現される機能ブロックである。
【0070】
リフレッシュフラグ320は、メモリシステム3においてリフレッシュが行われているか否かを示す情報である。リフレッシュフラグ320に示される値は、「0」または「1」である。リフレッシュフラグ320は、初期値が「0」であり、「0」のときは、メモリシステム3においてリフレッシュが行われていないことを示すものとする。一方で、リフレッシュフラグ320が「1」のときは、リフレッシュが行われていることを示すものとする。
【0071】
リード物理アドレス321は、不揮発性メモリ31における物理アドレスを示す情報である。リード物理アドレス321は、当該物理アドレスで示されるブロックに格納されている情報を読み取るときに、メモリインタフェース回路35によって使用される。
【0072】
ライト物理アドレス322は、不揮発性メモリ31における物理アドレスを示す情報である。ライト物理アドレス322は、当該物理アドレスで示されるブロックに情報を書き込む(ライトする)ときに、メモリインタフェース回路35によって使用される。
【0073】
なお、説明を簡単にするために、ここではリード物理アドレス321およびライト物理アドレス322が別々の情報として存在するとして説明する。しかし、例えば、メモリインタフェース回路35は、物理アドレスが単独で与えられたときには与えられた物理アドレスが読み込むための物理アドレス(リード物理アドレス321に相当する。)であると解釈し、物理アドレスが保存情報5とともに与えられたときには与えられた物理アドレスが当該保存情報5を書き込むための物理アドレス(ライト物理アドレス322に相当する。)であると解釈してもよい。すなわち、適宜作成される物理アドレスの用途が区別できるならば、どのような構成が採用されてもよい。
【0074】
論理アドレス323は、保存情報5の読み出し要求(出力要求)に含まれる論理アドレスであって、ホストコンピュータ2が要求する保存情報5を識別するための情報である。
【0075】
外部インタフェース制御部300は、外部インタフェース回路33を制御する機能を有している。外部インタフェース回路33が、ホストコンピュータ2から出力要求を受け取ったとき、外部インタフェース制御部300は、当該出力要求に含まれる論理アドレスに基づいて論理アドレス323を作成するとともに、管理情報40の論物変換情報41を参照して、リード物理アドレス321を作成する。
【0076】
また、外部インタフェース制御部300は、リフレッシュを許可するコマンド(リフレッシュ許可)を外部インタフェース回路33がホストコンピュータ2から受け取ったとき、その旨をリフレッシュ制御部303に通知する。さらに、外部インタフェース回路33において出力要求に応答するための保存情報5の準備が整ったとき、当該保存情報5をホストコンピュータ2に向けて出力するように、外部インタフェース回路33を制御する。
【0077】
訂正制御部301は、不揮発性メモリ31から読み出された情報(保存情報5)を訂正するように、誤り訂正回路34を制御する。また、訂正制御部301は、誤り訂正回路34によって訂正された情報を、必要に応じて、外部インタフェース回路33またはメモリインタフェース回路35に伝達するように、誤り訂正回路34を制御する。さらに、訂正制御部301は、誤り訂正回路34が実行した訂正後の処理の状況を示す訂正結果に従って、ターゲット情報43を更新する機能も有している。
【0078】
メモリインタフェース制御部302は、メモリインタフェース回路35を制御する機能を有している。メモリインタフェース制御部302は、メモリインタフェース回路35にリード物理アドレス321を伝達して、不揮発性メモリ31の当該物理アドレスから保存情報5を読み出すようにメモリインタフェース回路35を制御する。また、メモリインタフェース制御部302は、不揮発性メモリ31から保存情報5が読み出されたときは、誤り訂正回路34に伝達するようにメモリインタフェース回路35を制御する。
【0079】
また、メモリインタフェース制御部302は、メモリインタフェース回路35にライト物理アドレス322を伝達して、不揮発性メモリ31に保存情報5を書き込むようにメモリインタフェース回路35を制御する。さらに、メモリインタフェース制御部302は、電圧情報45を書き替えるとともに、必要に応じて、メモリインタフェース回路35に伝達する。
【0080】
リフレッシュ制御部303は、適宜、管理情報40を参照しつつ、メモリシステム3におけるリフレッシュを実行するために必要な処理を制御する機能を有している。
【0081】
リフレッシュ制御部303は、リフレッシュを実行するタイミングを決定し、リフレッシュフラグ320を「1」に書き替えるとともに、リフレッシュが終了するとリフレッシュフラグ320を「0」に戻す。すなわち、リフレッシュ制御部303は、リフレッシュフラグ320を管理する機能を有している。
【0082】
第1の実施の形態におけるコンピュータシステム1では、リフレッシュを行うタイミングは、リフレッシュ許可によってホストコンピュータ2からメモリシステム3に向けて通知される(許可される)例で説明する。しかし、メモリシステム3が比較的高いスペックのCPU30を備えている場合などにおいては、リフレッシュ制御部303が独自に検出する様々な状況に応じてリフレッシュを実行するタイミングを判断してもよい。例えば、所定の時間が経過したことや、ターゲット情報43が書き替えられたことなどを検出して判定してもよい。
【0083】
また、リフレッシュ制御部303は、ターゲット情報43を参照して、リフレッシュの対象となるブロックを決定する。詳細は後述するが、第1の実施の形態におけるメモリシステム3は、リフレッシュを実行するときに、リフレッシュの対象となったブロックから保存情報5を読み出すとは限らない。リフレッシュ制御部303は、リフレッシュの対象となるブロックを決定した後、履歴情報44を参照して、リフレッシュのための読み出しを行うブロックをさらに決定する。
【0084】
また、リフレッシュ制御部303は、フリーブロック情報42を参照して、リフレッシュにおける保存情報5の新たな格納先となるブロック(リフレッシュ先ブロック)を決定する。さらに、リフレッシュ制御部303は、論物変換情報41や履歴情報44を編集する機能を有しているが詳細は後述する。
【0085】
以上が、第1の実施の形態におけるコンピュータシステム1の構成および機能の説明である。次に、第1の実施の形態におけるコンピュータシステム1によって実現される情報格納方法について説明する。
【0086】
図6は、第1の実施の形態における情報格納方法を示す流れ図である。
図6は、特に、メモリシステム3の動作を示している。なお、
図6に示す処理が開始されるまでに、不揮発性メモリ31には保存情報5が、すでに格納されているものとする。すなわち、保存情報5を第1記憶素子に格納する工程はすでに完了しているものとする。
【0087】
図6に示す処理を開始すると、メモリシステム3は、不揮発性メモリ31からプログラム4をRAM32にロードする(ステップS11)。ステップS11では、管理情報40もRAM32に格納され、CPU30によって使用可能な状態となる。
【0088】
例えば、メモリシステム3は、外部からメモリシステム3に対して電力の供給が開始されたときにステップS11を実行する。また、ステップS11が実行されるときに、リフレッシュフラグ320は、初期値「0」にセットされるものとする。
【0089】
ステップS11の処理が完了すると、CPU30は、ロードされたプログラム4の実行を開始し、ホストコンピュータ2からの指示を検出するまで待機する状態となる(ステップS12)。このとき、CPU30は、スリープモードのような消費電力の低い動作モードに移行していてもよい。ホストコンピュータ2からの指示は、割り込み信号として伝達されるため、スリープモード中であっても検出可能である。ただし、CPU30は、他の処理を実行しつつ、待機していてもよい。
【0090】
外部インタフェース回路33がホストコンピュータ2からの指示を受け取ると(ステップS12においてYes。)、CPU30(外部インタフェース制御部300)は、ホストコンピュータ2からの指示が、出力要求か(ステップS13)、リフレッシュ許可か(ステップS14)、あるいは、終了指示か(ステップS15)を判定する。ただし、メモリシステム3は、より多種類のコマンド(ホストコンピュータ2からの指示)を解析する機能を備えていてもよい。
【0091】
ホストコンピュータ2からの指示が「終了」であった場合(ステップS15においてYes。)、CPU30は、プログラム4による処理を終了する。
【0092】
また、ホストコンピュータ2からの指示が出力要求であった場合(ステップS13においてYes。)、外部インタフェース制御部300は、当該出力要求とともにホストコンピュータ2から伝達される情報を外部インタフェース回路33から取得して論理アドレス323を作成する。このようにして作成される論理アドレス323は、出力要求によって要求されている保存情報5を示す情報である。
【0093】
また、外部インタフェース制御部300は、論理アドレス323により、論物変換情報41を参照する。これにより、外部インタフェース制御部300は、論物変換情報41において、論理アドレス323に関連づけられている物理アドレスを取得して、リード物理アドレス321を作成する(ステップS16)。
【0094】
外部インタフェース制御部300によってリード物理アドレス321が作成されると、CPU30は、ページ番号を示すPに「s」をセットして(ステップS17)、リード処理を実行する(ステップS18)。なお、sは、0≦s≦mを満たす整数であり、ホストコンピュータ2から出力要求された保存情報5の最初のページ番号を示すものとする。
【0095】
図7および
図8は、リード処理を示す流れ図である。リード処理は、リード物理アドレス321が作成されたことを契機として開始される処理であり、不揮発性メモリ31を構成するブロックのページ(Pで示される。)ごとに実行される。
【0096】
図7に示すリード処理が開始されると、メモリインタフェース制御部302は、すでに作成されているリード物理アドレス321を取得する(ステップS30)。
【0097】
ホストコンピュータ2からの出力要求があったときにステップS30で取得されるリード物理アドレス321は、直前のステップS16において作成された情報であり、論物変換情報41に従って変換された物理アドレスである。
【0098】
一方、詳細は後述するが、リフレッシュ許可があったときにステップS30で取得されるリード物理アドレス321は、論物変換情報41に従って変換される物理アドレスに限定されるものではなく、履歴情報44から抽出される物理アドレスの場合もある。
【0099】
ステップS30を実行すると、メモリインタフェース制御部302は、リフレッシュフラグ320を参照して、リフレッシュフラグ320が「1」か否かを判定する(ステップS31)。
【0100】
すでに説明したように、リフレッシュフラグ320は、リフレッシュが行われているとき「1」であり、リフレッシュが行われていないとき「0」に制御される。したがって、ステップS31の判定は、メモリシステム3においてリフレッシュが行われているか否かを確認することに相当する。
【0101】
まず、ステップS31において、リフレッシュが行われていないと判定された場合(ステップS31おいてNo。)について説明する。
【0102】
このときメモリインタフェース制御部302は、メモリインタフェース回路35に、読み込み時の閾値電圧として初期値を伝達する(ステップS32)とともに、リード物理アドレスとページPとを伝達する。すなわち、メモリインタフェース制御部302は、当該物理アドレスで示されるブロックのページPから、伝達した閾値電圧で保存情報5を読み込むようにメモリインタフェース回路35を制御する。これにより、メモリインタフェース回路35は、当該ページから保存情報5を読み出すために不揮発性メモリ31にアクセスし、保存情報5を読み出す(ステップS33)。
【0103】
次に、メモリインタフェース制御部302は、読み出した保存情報5を誤り訂正回路34に伝達するようにメモリインタフェース回路35を制御する。これにより、メモリインタフェース回路35は、当該保存情報5を誤り訂正回路34に伝達する(ステップS34)。
【0104】
ステップS34が実行されると、訂正制御部301は、誤り訂正回路34が保持した情報を訂正するように誤り訂正回路34を制御する。これにより、誤り訂正回路34は、保存情報5を訂正する(ステップS35)。
【0105】
なお、第1の実施の形態におけるステップS35の訂正は、ECC(Error Correcting Code)を用いるが、従来の技術を適宜採用可能であるため、説明を省略する。また、ステップS35が実行されることによってエラーが訂正される情報は、ステップS34においてメモリインタフェース回路35から誤り訂正回路34に伝達された保存情報5(1ページ分の保存情報5)である。
【0106】
ステップS35が実行されると、CPU30は、メモリインタフェース回路35がステップS33を実行することによって保存情報5を読み出すことに成功したか否かを判定する(ステップS36)。より具体的には、ステップS36における判定は、誤り訂正回路34から得られた訂正結果に基づいて、訂正制御部301が判定する。言い換えれば、メモリシステム3は、不揮発性メモリ31から読み出した保存情報5を、誤り訂正回路34が正常に訂正することができた場合に、保存情報5の読み出しに成功したと判定する。
【0107】
メモリインタフェース回路35にセットされた閾値電圧が適切でない場合、ステップS33を実行したとしても、誤り訂正回路34は保存情報5を正常に訂正することができず、ステップS36においてNoと判定する。したがって、ステップS36においてNoと判定された場合、メモリインタフェース制御部302は、閾値電圧を変更してセットしなおし(ステップS37)、ステップS33に戻って処理を繰り返す。
【0108】
このように、ステップS33ないしS37が繰り返されることによって、保存情報5の読み出しのための適切な閾値電圧がサーチされ、適切な閾値電圧によってステップS33が実行されたときに、保存情報5の読み出しに成功し、ステップS36においてYesと判定される。
【0109】
なお、適切な閾値電圧をサーチする際に、どのように閾値電圧を変更するかについては、適宜、従来の技術を適用することができる。例えば、低い値を初期値とし、順次、所定の値だけ上昇させながらサーチしてもよい。逆に、高い値を初期値とし、順次、所定の値だけ下降させながらサーチしてもよい。あるいは、中央値を初期値とし、順次、上下の値に振幅を拡大するかのようにサーチしてもよい。また、本実施の形態では、サーチした結果、適切な閾値電圧が決定できなかった場合(サーチにおける最終値を用いても読み出しに成功しなかった場合)については説明を省略する。
【0110】
次に、ステップS31において、リフレッシュが行われていると判定された場合について説明する。
【0111】
このときメモリインタフェース制御部302は、ステップS30で取得したリード物理アドレス321とページPとによって電圧情報45のレコードを特定し、当該レコードに格納されている閾値電圧を取得して、当該閾値電圧が初期値「0」であるか否かを判定する(ステップS38)。
【0112】
電圧情報45において、閾値電圧の初期値「0」が他の値に書き替えられている場合とは、リード物理アドレス321で示されるブロックのページPを読み出すときの適切な閾値電圧が電圧情報45に記録されていることを意味する。すなわち、ステップS38の判定は、これから読み出すページPについて、適切な閾値電圧が、すでに電圧情報45に記録されているか否かを判定することに相当する。
【0113】
閾値電圧が「0」のとき(ステップS38においてYes。)、適切な閾値電圧が記録されていないと判断し、メモリインタフェース制御部302は、すでに説明したステップS32からの処理を実行する。これにより、読み出すための適切な閾値電圧のサーチが開始される。すなわち、リフレッシュリードのときであっても、適切な閾値電圧が未だ記録されていないページPが読み出しの対象となった場合には、ホストリードのときと同様に、保存情報5を読み出すための適切な閾値電圧のサーチが行われる。
【0114】
第1の実施の形態では、ホストリードによって保存情報5の読み出しを行っても、そのときの適切な閾値電圧を電圧情報45に記録することはない。したがって、初めてリフレッシュリードの対象となったブロックについてリフレッシュが行われるとき、ステップS38は実行されるが、そのときまでに当該ブロックがリフレッシュリードされたことはないため、未だ適切な閾値電圧は記録されていない。このような状況が生じた場合であっても、メモリシステム3は、ステップS38からステップS32を実行することにより、適切な閾値電圧のサーチを行うことができる。
【0115】
一方、閾値電圧が「0」でないとき(ステップS38においてNo。)、メモリインタフェース制御部302は、ステップS38で取得した閾値電圧を、ページPから保存情報5を読み出すための閾値電圧としてセットする(ステップS39)。そして、すでに説明したステップS33を実行するようにメモリインタフェース回路35を制御する。
【0116】
第1の実施の形態における電圧情報45に記録されている初期値以外の閾値電圧は、少なくとも1回は、ページPに格納されている保存情報5を読み出すことに成功したときの閾値電圧である。また、当該ページPのブロックは、閾値電圧が電圧情報45に記録された後は、比較的頻繁にアクセスされるホストリードの対象から除外されるため、当該ブロックの劣化は抑制されており、適切な閾値電圧の変化も抑制されている。したがって、ステップS39を実行してからステップS33を実行することによって、メモリシステム3は、保存情報5の読み出しに成功する可能性を高めることができる。
【0117】
これにより、第1の実施の形態におけるコンピュータシステム1は、リフレッシュにおいて、保存情報5を読み出すための適切な閾値電圧をサーチする時間を短縮することができる。
【0118】
なお、電圧情報45を用いたとしても、保存情報5を読み出すことに失敗した場合には、ステップS36においてNoと判定され、ステップS37が実行されて、再び、ステップS33が実行される。すなわち、電圧情報45に格納されている閾値電圧が適切でなくなった場合には、閾値電圧のサーチが行われる。
【0119】
保存情報5の読み出しに成功し、ステップS36においてYesと判定すると、メモリインタフェース制御部302は、再びリフレッシュフラグ320を参照し、リフレッシュフラグ320が「1」か否かを判定する(
図8:ステップS41)。すなわち、リフレッシュが行われているか否かを判定する。
【0120】
リフレッシュリードのとき、不揮発性メモリ31から読み出され、誤り訂正回路34によってエラーの訂正が実行された保存情報5は、リフレッシュのために不揮発性メモリ31に書き込むべき情報である。したがって、ステップS41においてYesと判定された場合(リフレッシュリードの場合)、訂正制御部301は、当該保存情報5を、メモリインタフェース回路35に伝達するように、誤り訂正回路34を制御する。これにより、リフレッシュリードされた保存情報5は、誤り訂正回路34によってメモリインタフェース回路35に伝達される(ステップS42)。
【0121】
さらに、メモリインタフェース制御部302は、ステップS33で読み出しに使用した閾値電圧(今回の読み出しに成功した閾値電圧)を、ステップS31で特定した電圧情報45のレコードに格納して記録する(ステップS43)。
【0122】
このとき記録される閾値電圧は、すでに電圧情報45に記録されている値(ステップS39でセットされた値)である場合もある。しかし、ステップS38でNoと判定されサーチにより検出された値である場合や、記録されていた閾値電圧を使用したけれども、保存情報5を読み出すことができず、再びサーチされて検出された値である場合もある。
【0123】
このようにサーチにより検出された値は、電圧情報45に記録されていない値である。したがって、メモリインタフェース制御部302は、リフレッシュリードが実行されたときにはステップS43を実行することにより、リフレッシュリードに使用した閾値電圧を、確実に電圧情報45に記録する。
【0124】
なお、ステップS43を実行すると、メモリシステム3(CPU30)は、リード処理を終了する。
【0125】
次に、ステップS41においてNoの場合(リフレッシュリードでない場合)について説明する。
【0126】
リフレッシュリードでないとき、不揮発性メモリ31から読み出され、誤り訂正回路34によってエラーの訂正が実行された保存情報5は、ホストコンピュータ2に向けて出力すべき情報である。したがって、ステップS41においてNoと判定された場合(リフレッシュリードでない場合)、訂正制御部301は、保存情報5を、外部インタフェース回路33に伝達するように、誤り訂正回路34を制御する。これにより、誤り訂正回路34は、訂正が完了した保存情報5を外部インタフェース回路33に伝達する(ステップS44)。
【0127】
ステップS44が実行されると、訂正制御部301は、ステップS35を実行したときに誤り訂正回路34から伝達された訂正結果に基づいて、訂正制御部301がエラービットの数を検出し、所定値以上か否かを判定する(ステップS45)。
【0128】
検出されたエラービットの数が所定値以上の場合(ステップS45においてYes。)、訂正制御部301は、ステップS35で訂正された保存情報5(読み出された保存情報5)の劣化が進行していると判断する。この場合、訂正制御部301は、当該保存情報5の論理アドレス(論理アドレス323)を取得して、ターゲット情報43を検索し、当該論理アドレスに関連づけられている要否を示す情報を「1」とする。これにより、所定値以上のエラービットが検出された保存情報5について、リフレッシュが必要であることがターゲット情報43に記録される(ステップS46)。
【0129】
検出されたエラービットの数が所定値未満の場合(ステップS45においてNo。)、訂正制御部301は、当該保存情報5に対するリフレッシュは必要ないと判断し、ステップS46をスキップして、リード処理を終了する。したがって、エラービットの数が所定値以上となっていない場合には、ターゲット情報43が更新されることはなく、リフレッシュが必要であると記録されることはない。
【0130】
なお、保存情報5の劣化の程度を判定し、リフレッシュの要否を判定する基準は、エラービットの数に限定されるものではない。例えば、経過時間やアクセス回数などであってもよい。あるいは、複数の項目を組み合わせて基準としてもよい。
【0131】
また、第1の実施の形態における情報格納方法では、ステップS41においてYesの場合は、読み出された保存情報5の劣化の程度を判定して、ターゲット情報43に記録する処理(ステップS46)は行わない。ホストリードに比べてリフレッシュリードの頻度は少ないため、リフレッシュリードにおいて保存情報5の劣化が進行する程度は小さい。したがって、リフレッシュリードにおいてステップS45,S46に相当する処理を実行しなくても、その間に劣化が進行する危険性は低く、あまり問題とはならない。
【0132】
一方、ステップS41においてリフレッシュが行われていないと判定したとき、メモリインタフェース制御部302は、ステップS43を実行することはない。すなわち、メモリシステム3は、リフレッシュが行われていないときに使用された閾値電圧(例えば、ホストリードのときに使用された閾値電圧)を電圧情報45に記録することはない。
【0133】
このように、第1の実施の形態におけるステップS38,S39,S43は、リフレッシュリードにおいてのみ実行される処理である。したがって、電圧情報45の参照(ステップS38)、電圧情報45の利用(ステップS39)、および、閾値電圧の記録(ステップS43)は、第1の実施の形態における情報格納方法におけるリフレッシュリードのときにのみ実行される。
【0134】
なお、ステップS46が実行された場合も、メモリシステム3(CPU30)は、リード処理を終了する。
【0135】
図6に戻って、ステップS18を終了すると、外部インタフェース制御部300は、誤り訂正回路34から伝達された保存情報5をホストコンピュータ2に向けて送信するように外部インタフェース回路33を制御する。これにより、外部インタフェース回路33は、保存情報5をホストコンピュータ2に向けて送信する(ステップS19)。ステップS18が実行されるときとは、リフレッシュリードでないときであるから、読み出された保存情報5(1ページ分)は、ステップS44により、外部インタフェース回路33に伝達されている。
【0136】
ステップS19が実行されると、ホストコンピュータ2は、メモリシステム3(外部インタフェース回路33)から送信された保存情報5を受信する。したがって、ホストコンピュータ2は、当該保存情報5を使用することが可能となる。
【0137】
ステップS19の処理が終了すると、CPU30は、Pに「P+1」をセットする(ステップS20)。これにより、Pの値(ページ番号)がインクリメントされる。したがって、ステップS20が実行されることによって、Pの値は、ステップS18,S19の処理が終了したページの次のページ番号となる。
【0138】
次に、CPU30は、Pが「s+t」以上か否かを判定する(ステップS21)。なお、tは、1≦t≦m+1を満たす整数であって、ホストコンピュータ2が所望する保存情報5のページ数を示すものとする。これにより、「s+t」は、ホストコンピュータ2が所望する保存情報5の最終ページの次のページ番号を示すものとなる。ページ番号Pが最終ページの次のページに至っていなければ(ステップS21においてNo。)、CPU30は、ステップS18に戻って、次のページについてステップS18からの処理を繰り返す。
【0139】
一方、ステップS21においてYesの場合、CPU30は、ホストコンピュータ2が所望する保存情報5の全ページについて、ステップS18,S19の処理が終了していると判断する。
【0140】
このとき、メモリシステム3は、再び、ホストコンピュータ2からの指示があるまで待機状態に戻る。したがって、ステップS17からステップS21までの処理により、リード物理アドレス321で示されるブロックについて、ページ番号sから、ページ番号s+t-1までのtページ分の保存情報5がメモリシステム3からホストコンピュータ2に向けて送信される。なお、ステップS12に戻るときに、CPU30は、一時的に使用したリード物理アドレス321や論理アドレス323をRAM32から削除することが好ましい。
【0141】
メモリシステム3が待機状態においてホストコンピュータ2からリフレッシュ許可を受け取ると(ステップS14においてYes)、外部インタフェース制御部300は、その旨をリフレッシュ制御部303に通知する。これにより、メモリシステム3は、
図6に示すようにリフレッシュ処理(ステップS22)を実行する。
【0142】
図9、
図10および
図11は、第1の実施の形態におけるリフレッシュ処理を示す流れ図である。第1の実施の形態におけるリフレッシュ処理は、すでに説明したように、ホストコンピュータ2からリフレッシュ許可を受け取った旨を、外部インタフェース制御部300がリフレッシュ制御部303に通知することによって開始される。
【0143】
なお、リフレッシュ許可は、メモリシステム3からのリフレッシュ要求に応答してホストコンピュータ2から送信されてもよい。例えば、メモリシステム3において、リフレッシュが必要となった保存情報5をターゲット情報43に記録したときに、そのような要求をホストコンピュータ2に送信するように構成してもよい。
【0144】
リフレッシュ処理が開始されると、リフレッシュ制御部303は、リフレッシュフラグ320を「1」とする(ステップS51)。これにより、リフレッシュフラグ320が「0」となるまでの間、メモリシステム3は、リフレッシュフラグ320を参照することによって、リフレッシュが行われていること(リフレッシュが進行中であること)を検出することができる。
【0145】
次に、リフレッシュ制御部303は、ホストコンピュータ2によってリフレッシュが許可されたものの、実際にリフレッシュが必要か否かを判定する(ステップS52)。
【0146】
ステップS52の判定は、リフレッシュ制御部303が、管理情報40のターゲット情報43を参照して、要否を示す情報の値が「1」となっているレコードを検出することができたか否かによって判定することができる。
【0147】
すでに説明したように、ターゲット情報43の各レコードでは、リフレッシュが必要と判断された論理アドレスには、要否を示す情報として「1」が関連づけられている。したがって、ターゲット情報43に格納されているレコードにおいて、要否を示す情報の値が「1」のものが存在すれば、少なくとも当該レコードに格納されている論理アドレスについてリフレッシュが必要であると判定できる。
【0148】
ステップS52においてYesのとき(要否を示す情報が「1」のレコードを検出したとき)、リフレッシュ制御部303は、検出したレコードから論理アドレスを取得して、論理アドレス323を作成する(ステップS53)。これによって、進行中のリフレッシュにおいて、リフレッシュの対象となる保存情報5の論理アドレスが決定される。
【0149】
次に、リフレッシュ制御部303は、ライト物理アドレス322を作成する(ステップS54)。ステップS54において、リフレッシュ制御部303は、フリーブロック情報42を参照して、使用状況が「0(未使用)」となっているレコードを1つ特定する。そして、特定したレコードに格納されている物理アドレスを取得して、ライト物理アドレス322を作成する。
【0150】
このように、リフレッシュ制御部303は、フリーブロック情報42を参照することにより、リフレッシュ先のブロック(第2記憶素子)を決定する。すなわち、フリーブロック情報42において使用状況が「0」のレコードに格納されている物理アドレスは、不揮発性メモリ31においてリフレッシュ先の候補となるブロックを示すものであると言える。なお、リフレッシュ制御部303は、ステップS54において、特定したレコードにおける使用状況の値を「1(使用中)」に書き替えることにより、当該ブロックをリフレッシュ先のブロックとして予約する。
【0151】
ステップS54の処理を完了すると、リフレッシュ制御部303は、論理アドレス323によって示される保存情報5が、不揮発性メモリ31において、すでに多重化されているか否かを判定する(ステップS55)。
【0152】
メモリシステム3において、保存情報5の多重化は、当該保存情報5に対してリフレッシュが実行される度に行われ、履歴情報44にレコードが作成される。一方で、多重化されている保存情報5の消去が行われた場合には、当該消去が行われたブロックについてのレコードが履歴情報44から削除される。
【0153】
そこで、リフレッシュ制御部303は、論理アドレス323によって履歴情報44を検索し、履歴情報44から当該論理アドレス323を格納したレコードを検出できたか否かによってステップS55の判定を行う。
【0154】
リフレッシュ対象の保存情報5が多重化されていない場合(ステップS55においてNo。)、当該論理アドレス323に関するレコードは検出されず、履歴情報44から当該レコードを取得することはできない。この場合、リフレッシュ制御部303は、論理アドレス323によって論物変換情報41を検索し、当該論理アドレス323に対応づけられている物理アドレスを取得する。なお、論物変換情報41において、論理アドレス323に対応づけられている物理アドレスは必ず存在する。
【0155】
当該物理アドレスは、当該論理アドレス323で示される保存情報5を格納しているブロックを示している。すなわち、当該ブロックから保存情報5を読み出せば、読み出された保存情報5は論理アドレス323で示される保存情報5となる。したがって、リフレッシュ制御部303は、ステップS55においてNoと判定したとき、論物変換情報41から取得した物理アドレスによってリード物理アドレス321を作成する(ステップS56)。
【0156】
これにより、進行中のリフレッシュにおいて、保存情報5を読み出すブロック(コピー元のブロック)が決定される。このブロックは、進行中のリフレッシュにおけるリフレッシュ元のブロック(リフレッシュが必要と判断された保存情報5を格納しているブロック)でもある。すなわち、リフレッシュ制御部303は、多重化されていない保存情報5をリフレッシュするとき、リフレッシュ元のブロックをコピー元のブロックとする。論理アドレスで示される保存情報5が多重化されていないとき、当該保存情報5を格納しているブロックは、唯一、リフレッシュ元のブロックだけだからである。
【0157】
一方、リフレッシュ対象の保存情報5が多重化されている場合(ステップS55においてYes。)、リフレッシュ制御部303は、履歴情報44から検出したレコードに格納されている物理アドレスを取得して、リード物理アドレス321を作成する(ステップS57)。
【0158】
すでに説明したように、履歴情報44のレコードは、過去のリフレッシュにおけるリフレッシュ元のブロックの物理アドレスを格納している。メモリシステム3は、リフレッシュを行ったときにおいては、リフレッシュ元のブロックを消去せずに維持する。また、後の処理においてリフレッシュ元のブロックを消去したときには、当該ブロックのレコードを維持することなく履歴情報44から削除する。したがって、履歴情報44のレコードに格納されている物理アドレスで示されるリフレッシュ元のブロックには、リフレッシュ後であっても、当該レコードに格納されている論理アドレスで示される保存情報5が格納されている。
【0159】
ステップS57で作成されるリード物理アドレス321は、論理アドレス323によって検出された物理アドレスである。したがって、当該リード物理アドレス321は、論理アドレス323で示される保存情報5を格納しているブロックを示している。すなわち、当該ブロックから保存情報5を読み出せば、読み出された保存情報5は論理アドレス323で示される保存情報5となる。
【0160】
このように、リフレッシュ対象の保存情報5が多重化されている場合にも、進行中のリフレッシュにおいて、保存情報5を読み出すブロック(コピー元のブロック)が決定される。ただし、このとき決定されるブロックは、進行中のリフレッシュにおけるリフレッシュ元のブロック(リフレッシュが必要と判断された保存情報5を格納しているブロック)ではなく、リフレッシュが必要と判断された保存情報5と同一の論理アドレス323で示される保存情報5を格納するブロックである。
【0161】
なお、保存情報5に対するリフレッシュ回数(多重化回数)に制限はない(ただし、未使用ブロックの数による制限はある。)。したがって、履歴情報44において、同一の論理アドレス323に関するレコードが複数存在することも想定される。一方で、第1の実施の形態における履歴情報44は、時間経過に従ってレコードが作成される。そこで、リフレッシュ制御部303は、作成されてからの時間が最も経過した(古い)レコードから順に履歴情報44を検索することによって、同一の論理アドレス323に関する複数のレコードのうち、最も古いレコードを検出する。すなわち、リフレッシュ制御部303は、論理アドレス323で示される保存情報5に対する最も古いレコードを抽出して、リード物理アドレス321を作成する。
【0162】
ステップS56またはステップS57が実行され、コピー元のブロックを示すリード物理アドレス321が作成されると、メモリシステム3は、
図10に示すように、ページ番号を示すPに「0」をセットして(ステップS61)、リード処理(ステップS62)を実行する。
【0163】
ステップS62に示すリード処理は
図7および
図8に示すリード処理であるが、リフレッシュフラグ320が「1」のときに実行される点がステップS18に示すリード処理と異なっている。
【0164】
ステップS62に示すリード処理では、
図7に示すステップS31においてYesと判定されるため、リード物理アドレス321に示されるブロックのページPについて電圧情報45に適切な閾値電圧が記録されているか否かが判定される(ステップS38)。そして、適切な閾値電圧が記録されている場合には、その値を閾値電圧にセットして(ステップS39)、保存情報5の読み出しを行う(ステップS33)。したがって、保存情報5を読み出すための適切な閾値電圧を初期値から順次サーチする場合に比べて、リフレッシュのための読み出し(リフレッシュリード)に要する時間を短縮できる。
【0165】
また、ステップS62に示すリード処理では、
図8に示すステップS41においてYesと判定され、エラービットが訂正された保存情報5がメモリインタフェース回路35に伝達される(ステップS42)。そして、さらに、保存情報5を読み出すために使用した閾値電圧(適切な閾値電圧)が電圧情報45に記録される(ステップS43)。したがって、以後、当該ブロックのページPをリフレッシュする際には、電圧情報45を利用することができる。
【0166】
図10に戻って、ステップS62のリード処理を終了すると、メモリインタフェース制御部302は、ライト物理アドレス322およびページ番号(P)をメモリインタフェース回路35に伝達し、誤り訂正回路34から伝達された保存情報5を不揮発性メモリ31に書き込むように外部インタフェース回路33を制御する。これにより、メモリインタフェース回路35は、保存情報5をライト物理アドレス322に示されるブロックのページPに書き込む(ステップS63)。
【0167】
これにより、進行中のリフレッシュにおけるリフレッシュ元のブロックに格納されている保存情報5と同一の論理アドレス323を有する保存情報5がリフレッシュ先のブロックにコピーされ、多重化される。
【0168】
ステップS63が実行されると、CPU30は、Pに「P+1」をセットする(ステップS64)。これにより、Pの値(ページ番号)がインクリメントされる。したがって、ステップS64が実行されることによって、Pの値は、ステップS62,S63の処理が終了したページの次のページ番号となる。
【0169】
CPU30は、Pが「m」より大きいか否かを判定し(ステップS65)、ステップS65においてNoであれば、ステップS62に戻って、次のページについてステップS62からの処理を繰り返す。
【0170】
一方、ステップS65においてYesの場合、CPU30は、リード物理アドレス321で示されるブロックの全ページについて、ステップS62,S63の処理が終了していると判断する。
【0171】
ステップS65においてYesと判定され、無事に保存情報5の書き込みが完了すると、リフレッシュ制御部303は、ターゲット情報43において論理アドレス323に関連づけられている要否を示す情報の値を「0(不要)」に初期化する。これにより、ターゲット情報43が更新される(ステップS66)。当該論理アドレスで示される保存情報5については、コピー(リフレッシュ)が実行されたので、一旦リフレッシュは不要になるからである。
【0172】
ステップS66を実行すると、リフレッシュ制御部303は、履歴情報44を更新する(ステップS67)。ステップS67において、リフレッシュ制御部303は、リフレッシュ対象となった保存情報5の論理アドレス323と、論物変換情報41において当該論理アドレス323に関連づけられている物理アドレス(進行中のリフレッシュにおけるリフレッシュ元のブロックの物理アドレス)とを関連づけて1つのレコードとして履歴情報44に追記する。
【0173】
ステップS67が実行されると、次に、リフレッシュ制御部303は、論物変換情報41を更新する(ステップS68)。ステップS68において、リフレッシュ制御部303は、論理アドレス323により論物変換情報41を検索し、当該論理アドレス323に関連づけられている物理アドレスを、ライト物理アドレス322(進行中のリフレッシュにおけるリフレッシュ先のブロックを示す物理アドレス)に書き替える。これによって、以後、ホストリードで読み出されるブロックが、リフレッシュ先のブロックに変更される。
【0174】
ここまでの処理(特に、ステップS62ないしS65)により、未使用だった1つのブロックが、保存情報5を新たに格納している状態(使用中)となる。すなわち、1つのブロックが多重化のために消費され、未使用ブロックの数が1つ減少する。このような構成において、リフレッシュが繰り返され、不揮発性メモリ31の未使用ブロックが減少し続けると、最終的には、未使用のブロックが存在しない状態となる。
【0175】
そのような状態となると、リフレッシュ制御部303は、リフレッシュ先のブロックを決定することができず、さらなるリフレッシュが不可能となる。不揮発性メモリ31の未使用ブロックは、最大(初期状態)で、n-k+1個(
図3参照。)しか存在しないので、保存情報5を一切消去しないで消費しつづけるとすると、メモリシステム3におけるリフレッシュ回数に限界が生じる。したがって、コンピュータシステム1(メモリシステム3)は、フリーブロック情報42のフリーブロック数や、履歴情報44のレコード数等を、CPU30が管理して、ブロックの再利用(消去)を行う。
【0176】
まず、リフレッシュ制御部303は、リフレッシュ先のブロックの候補(未使用ブロック)が不揮発性メモリ31に充分に存在しているか否かを判定する。具体的には、リフレッシュ制御部303は、フリーブロック情報42を参照して、使用状況に「0(未使用)」が格納されているレコードの数をカウントし、所定数以上か否かを判定する(ステップS71)。なお、フリーブロック情報42の代わりに履歴情報44を参照して、履歴情報44に登録されているレコード数をカウントし、当該レコード数が所定数以下か否かを判定してもよい。
【0177】
未使用ブロックの数が所定数未満の場合(ステップS71においてNo。)、リフレッシュ制御部303は、保存情報5を多重化保存しているブロック(同一の論理アドレスで示される保存情報5を格納している複数のブロック)の中から、情報を消去するブロックを決定する(ステップS72)。
【0178】
次に、ステップS72において消去対象ブロックを決定する方法について説明する。
【0179】
初期状態の論物変換情報41は、保存情報5を格納しているブロックの物理アドレスのみが格納されている。ただし、リフレッシュが実行されると、ステップS68が実行されて、リフレッシュ元に指定されたブロックの物理アドレスが、リフレッシュ先に指定されたブロックの物理アドレスに書き替えられ、削除される。したがって、論物変換情報41には、初期状態から継続して保存情報5を格納しているブロックの物理アドレスか、または、リフレッシュ先に指定されたブロックであって未だリフレッシュ元に指定されたことないブロックの物理アドレスを格納する。
【0180】
一方で、履歴情報44は、初期状態においてはいずれのブロックについても記録されていない。そして、リフレッシュが実行されると、ステップS67により、リフレッシュ元のブロックの物理アドレスが格納される。そして、後述するように、リフレッシュ元のブロックが消去されて、当該ブロックが未使用状態になると、当該ブロックの物理アドレスは履歴情報44から削除される。したがって、履歴情報44は、リフレッシュ元のブロック(コピー元のブロックである場合を含む。)の物理アドレスのみを格納する。
【0181】
すなわち、論物変換情報41に格納されている物理アドレスと、履歴情報44に格納されている物理アドレスとは、重複することはない。一方で、保存情報5を格納しているブロック(消去対象ブロックの候補ブロック)の物理アドレスは、論物変換情報41または履歴情報44のいずれかに、必ず格納されている。したがって、リフレッシュ制御部303は、論物変換情報41または履歴情報44に物理アドレスが格納されているブロックを消去対象ブロックとして決定することになる。
【0182】
しかし、論物変換情報41に格納されている物理アドレスは、ホストリードに使用されているブロックの物理アドレスである。したがって、当該ブロックを消去すると、ホストリードに使用するブロックを新たに指定しなければならない。
【0183】
このとき、もし、当該消去したブロックに格納されていた保存情報5が多重化されていなければ、当該保存情報5は喪失することになり、ホストリードに使用するブロックを指定することはできない。一方、例え、消去した保存情報5が多重化されていた(履歴情報44に物理アドレスが存在した。)としても、履歴情報44に格納されているブロックは、リフレッシュ元のブロックとなったブロックである。したがって、ホストリードに使用するブロックとして指定し、当該ブロックから保存情報5を読み出すと、例え読み出しに成功したとしても、エラービットが所定数以上となる。したがって、ステップS46が実行されて、当該ブロックはターゲット情報43に記録され、リフレッシュの対象となってしまう。すなわち、保存情報5を消去して未使用ブロックを増やす意味が失われる。
【0184】
以上のことから、ステップS72において、リフレッシュ制御部303は、論物変換情報41に格納されている物理アドレスで示されるブロックについては消去対象ブロックとして決定することから優先的に除外する。
【0185】
次に、1つの論理アドレスに関して、履歴情報44において、最も古いレコードとして記録されているレコードは、コピー元のブロックの物理アドレスを格納するレコードである。コピー元のブロックは、リフレッシュに成功した実績のあるブロックである。このようなブロックは、以後のリフレッシュの成功確率を向上させるために維持することが好ましい。したがって、リフレッシュ制御部303は、1つの論理アドレスに関して、履歴情報44における最も古いレコードに格納されている物理アドレスで示されるブロックについては消去対象ブロックとして決定することから優先的に除外する。
【0186】
逆に言えば、第1の実施の形態におけるコンピュータシステム1では、履歴情報44のレコードに格納されている物理アドレスで示されるブロックのうち、コピー元のブロックとして使用できたブロック以外のブロックを消去対象ブロックとして優先的に決定する。これにより、リフレッシュに使用することができた保存情報5を優先的に格納しておくことができるため、リフレッシュの成功確率が向上する。
【0187】
なお、ステップS72を実現する方法としては様々な手法が考えられる。例えば、履歴情報44からリフレッシュ回数の少ない保存情報5を格納しているブロックを消去対象ブロックとして決定することもできる。リフレッシュ回数が少ないブロックは、読み出しストレスが発生しにくいブロックとみなせるからである。ただし、このように構成する場合、別途、リフレッシュ回数をカウントして履歴情報44に記録しておく必要がある。後述するように、履歴情報44のレコードは削除されることがあるため、レコードの数はリフレッシュ回数と一致しないからである。
【0188】
あるいは、逆に、同一の論理アドレスを有する保存情報5(履歴情報44からリストアップできる。)についての多重化度を基準にして、所定数以上に多重化されている保存情報5を格納しているブロックを優先的に消去対象ブロックとして決定してもよい。
【0189】
さらに、リフレッシュ制御部303は、これらの手法を組み合わせて、消去対象ブロックを決定してもよい。
【0190】
ステップS72が実行されて消去対象ブロックが決まると、リフレッシュ制御部303は、消去対象ブロックを示す物理アドレスをメモリインタフェース制御部302に伝達する。これにより、メモリインタフェース制御部302は、当該物理アドレスで示されるブロックの保存情報5を消去するようにメモリインタフェース回路35を制御する。これにしたがって、メモリインタフェース回路35は、当該消去対象ブロックから保存情報5を消去する(ステップS73)。
【0191】
次に、リフレッシュ制御部303は、消去対象ブロックの物理アドレスによりフリーブロック情報42を検索して、当該消去対象ブロックのレコードの使用状況を「1」から「0」に書き替える(ステップS74)。これにより、当該ブロックの使用状況が未使用に書き替えられ、ステップS54において、リフレッシュ先のブロックとして選択可能となる。すなわち、当該ブロックの再利用が可能となる。
【0192】
また、リフレッシュ制御部303は、消去対象ブロックを示す物理アドレスにより履歴情報44を検索して、当該物理アドレスが格納されているレコードを履歴情報44から削除する(ステップS75)。これにより、保存情報5が消去されたブロックは、多重化されているブロックから除外される。
【0193】
なお、本実施の形態では、1回のリフレッシュにおいて、最大で1つのブロックが消去される例で説明した。しかし、1回のリフレッシュにおいて、ステップS72ないしS75の処理を複数回繰り返すことにより、1回のリフレッシュにおいて、複数のブロックを消去するように構成してもよい。
【0194】
また、未使用ブロックの数が所定数未満のときに、特定のブロックから保存情報5を消去して未使用ブロックを増やす処理(ステップS71ないしステップS75)は、ライト物理アドレス322を作成する処理(ステップS54)の直前に行ってもよい。すなわち、リフレッシュ先のブロックを決定する前に、リフレッシュ先の候補となるブロックが充分に存在しているか否か確認して(ステップS71)、必要であれば、候補ブロックを増やしてから、ライト物理アドレス322を作成(リフレッシュ先のブロックを決定)してもよい。
【0195】
さらに、未使用ブロックを増やす処理は、リフレッシュ処理において実行されなくてもよい。例えば、リフレッシュ許可とは別に、ホストコンピュータ2から許可(消去許可)を得て実行してもよい。
【0196】
未使用ブロックの数が所定数以上の場合(ステップS71においてYes。)、CPU30は、ステップS72ないしS75の処理をスキップする。したがって、未使用ブロックが充分に存在している状況においては、使用中のブロックが開放されることはない。
【0197】
ステップS71においてYesと判定するか、ステップS75において履歴情報44からの削除が完了すると、メモリシステム3は、他のブロックについてのリフレッシュを行うために、
図9に示すステップS52の処理に戻る。すなわち、メモリシステム3は、ターゲット情報43において、リフレッシュが必要と示されている保存情報5が存在しなくなるまで、
図9に示すステップS52ないしS57、
図10に示すステップS61ないしS68、および、
図11に示すステップS71ないしS75の処理を繰り返す。
【0198】
ただし、メモリシステム3は、ステップS52に戻らずに、ステップS58を実行してもよい。すなわち、ホストコンピュータ2からのリフレッシュ許可に対して、メモリシステム3は、1ブロック分のリフレッシュのみを行い、残りのブロックのリフレッシュは次回のリフレッシュ許可を待つように構成してもよい。
【0199】
図9に示すステップS52においてターゲット情報43における要否を示す情報のすべてが「0」のとき、リフレッシュ制御部303は、リフレッシュが必要な保存情報5(ブロック)は存在しないと判断して、リフレッシュフラグ320を「0」とする(ステップS58)。さらに、CPU30は、その時点でRAM32に格納されている管理情報40を不揮発性メモリ31にバックアップする(ステップS59)。そして、ステップS59を実行すると、メモリシステム3は、リフレッシュ処理を終了して
図6に示す処理に戻る。
【0200】
以上が第1の実施の形態における情報格納方法の説明である。次に、ブロック1がブロックkにリフレッシュされ、さらにブロックkがブロックk+1にリフレッシュされる場合を例に、メモリシステム3の利点について説明する。ただし、利点の説明において、ブロックに格納された保存情報5の消去はないものとする。
【0201】
ブロック1は、
図3に示すように、初期状態のフリーブロック情報42においてすでに使用中であり、初期状態の不揮発性メモリ31において保存情報5を格納するブロックである。初期状態では、保存情報5が多重化されているブロックはないので、ブロック1に格納されている保存情報5を示す論理アドレスと同一の論理アドレスを有する保存情報5はブロック1にしか存在しない。したがって、用途にかかわらず、当該保存情報5はブロック1から読み出すしかない。すなわち、初期状態において、ホストリードにおいて参照される論物変換情報41には、ブロック1に格納されている保存情報5の論理アドレスと、ブロック1の物理アドレスPA1とが1つのレコードとして格納されている。
【0202】
ここでは、使用中のブロックに格納している保存情報5を消去することはないものとしているので、ブロック1の使用状況が「0(未使用)」となることはない。また、リフレッシュ制御部303は、使用状況が「1(使用中)」のブロックをリフレッシュ先のブロックとして選択することはない。
【0203】
ブロック1に対するホストリードが繰り返され、エラービット数が所定値に到達すると、ターゲット情報43において、ブロック1に格納されている保存情報5の論理アドレスに「1(必要)」が関連づけられる。その後、メモリシステム3がリフレッシュ許可を受け取ると、ブロック1に対するリフレッシュが開始される。
【0204】
ブロック1に対するリフレッシュ(ブロック1をリフレッシュ元のブロックとするリフレッシュ)では、使用状況が未使用のブロックkがリフレッシュ先のブロックとして決定され、ブロックkの使用状況が「1(使用中)」に書き替えられる。ブロック1に格納されている保存情報5は、この時点でも多重化されていないので、リフレッシュにおけるリード処理においても、ブロック1から保存情報5が読み出される(ブロック1がコピー元ブロックとなる。)。
【0205】
また、ブロック1の各ページに対する適切な閾値電圧は電圧情報45に記録されていないので、閾値電圧のサーチが行われながら、保存情報5の読み出しが行われる。一方で、このときサーチされた閾値電圧によって、ブロック1の各ページに対する適切な閾値電圧が、
図4に示すように電圧情報45に記録される。
【0206】
ブロック1に対するリフレッシュにおいて、リード処理が完了すると、ブロック1から読み出された保存情報5は、ブロックkに書き込まれる。ブロックkに格納された保存情報5は、ブロック1から読み出された保存情報5であるので、それらの論理アドレスは同一である。
【0207】
すでに説明したように、ブロック1の使用状況は「0(未使用)」に書き替えられることはなく、「1(使用中)」に維持される。また、ブロック1に格納された保存情報5は消去されない。したがって、ブロック1に対するリフレッシュによってブロックkに保存情報5がコピーされても、ブロック1に格納された保存情報5も維持される。すなわち、初期状態においてブロック1に格納されていた保存情報5は、ブロック1とブロックkとに多重化(ここでは二重化)される。
【0208】
そして、リフレッシュ対象となった保存情報5の論理アドレスと、リフレッシュ元のブロック1の物理アドレスとしてのPA1とが関連づけられた履歴情報44が作成される。また、論物変換情報41におけるPA1は、PAkに書き替えられ、ホストリードの対象がブロックkに変更される。
【0209】
従来より、不揮発性の記憶素子に格納される情報の信頼度を向上させるために当該情報を予め二重化させることが知られている。しかし、全ての情報を二重化するためには単純に二倍の記憶領域が必要となりコストが増大するという問題がある。メモリシステム3では、
図3に示すように、初期状態においてk個のブロックが使用中である。しかし、本実施の形態において、初期状態で使用中のk個のブロックは、予め保存情報5を二重化状態で記憶しておく必要はない。すなわち、メモリシステム3は、ブロックの劣化に備えて、保存情報5を二重化させておく必要がないという利点がある。また、不揮発性メモリ31は、k(初期状態で使用中のブロック数)>n-k+1(初期状態で未使用状態のブロック数)であっても実現可能である。したがって、当然であるが、すべての保存情報5を二重化するためのブロック(記憶領域)を確保しておく必要がないという利点がある。
【0210】
また、予め二重化させるにあたり、全ての情報を二重化させるのではなく、情報の重要度に応じて二重化させることも知られている。しかし、その場合は、重要度を知得する必要があるという問題があるとともに、すべての情報が重要であるようなシステムでは適用できないという問題がある。しかし、メモリシステム3は、保存情報5を二重化させておく必要がないので、保存情報5の重要度を得る必要がないという利点があるとともに、すべての情報が重要であるようなシステムにも適用可能である。
【0211】
ブロック1に対するリフレッシュが完了した後に、ホストコンピュータ2がブロック1に格納されている保存情報5を要求するための論理アドレスを送信してきたときには、当該論理アドレスと同一の論理アドレスを有する保存情報5を格納したブロックkを、更新後の論物変換情報41に基づいて決定する。したがって、リフレッシュ元のブロック1は、以後、ホストリードされることはなくなり、アクセス数が抑制される。
【0212】
ホストリードが繰り返されて、ブロックkのエラービット数が所定値に到達すると、ターゲット情報43において、ブロックkに格納されている保存情報5の論理アドレスに「1(必要)」が関連づけられる。その後、メモリシステム3がリフレッシュ許可を受け取ると、ブロックkに対するリフレッシュが開始される。
【0213】
ブロックkに対するリフレッシュでは、使用状況が未使用のブロックk+1がリフレッシュ先のブロックとして決定され、ブロックk+1の使用状況が「1(使用中)」に書き替えられる。
【0214】
また、履歴情報44には、ブロック1に対する過去のリフレッシュのレコードが格納されている。すなわち、ブロック1に格納されていた保存情報5の論理アドレス(ブロックkに格納されている保存情報5の論理アドレスと同一)と、ブロック1の物理アドレスPA1とが関連づけて格納されたレコードが履歴情報44に存在する。したがって、コピー元のブロックとしてブロック1が選択される。このように、メモリシステム3では、ブロックkに対するリフレッシュにおけるリード処理では、リフレッシュ元のブロックkからではなく、ブロック1から保存情報5を選択的に読み出す。
【0215】
メモリシステム3は、リフレッシュが必要であると判断されてから、実際にリフレッシュが行われるまでにタイムラグが発生する。したがって、タイムラグの間にホストリードが頻繁に行われ、ブロックkの劣化が進行すると、ブロックkに対するリフレッシュにおいて、すでに保存情報5に対する訂正が不可能となるおそれがある。また、ブロックkはリフレッシュされたことがないブロックであるため、その意味でもリフレッシュが可能かどうか不確実である。
【0216】
しかし、ブロック1は、ブロック1のリフレッシュにおいてリフレッシュに成功した実績のあるブロックである。また、ブロック1は、ブロック1のリフレッシュ以後はホストリードの対象ではなく、劣化の進行が抑制されているブロックである。したがって、メモリシステム3は、ブロックkに対するリフレッシュにおいて、ブロックkからではなく、ブロック1を選択して保存情報5を読み出すことにより、リフレッシュの成功確率を向上させることができるという利点がある。
【0217】
また、すでに述べたように、ブロックkに対するリフレッシュにおいて、ブロックkはリフレッシュされたことがないブロックであるため、電圧情報45が存在せず、読み出しのための適切な閾値電圧のサーチが必要になる。しかし、メモリシステム3は、ブロックkに対するリフレッシュにおいて、ブロックkからではなく、ブロック1から保存情報5を読み出すことにより、
図4に示すような電圧情報45を利用することができ、リフレッシュに要する時間を削減することができる。
【0218】
以上のように、第1の実施の形態におけるコンピュータシステム1は、保存情報5を使用するホストコンピュータと、外部のホストコンピュータ2において使用される保存情報5を格納するメモリシステム3とを備える。そして、メモリシステム3は、コピー元のブロック(第1記憶素子)およびリフレッシュ先のブロック(第2記憶素子)を備える不揮発性メモリ31と、コピー元のブロックに格納された保存情報5を、リフレッシュ先のブロックに格納するリフレッシュ制御部303とを備え、保存情報5がリフレッシュ先のブロックに格納された後において、コピー元のブロックに格納された保存情報5と、リフレッシュ先のブロックに格納された保存情報5とを選択的に読み出す。これにより、コストを抑え、保存情報5に関する重要度などの情報を取得することなく、保存情報5を効率的に多重化することができる。また、多重化されることにより、保存情報5の信頼度を向上させることができる。さらに、例えば、用途に応じて多重化された保存情報5を使い分けることができる。
【0219】
また、メモリシステム3は、コピー元のブロックに格納された保存情報5を、リフレッシュ先のブロックに格納するときの履歴情報44を格納しており、リフレッシュ制御部303は、履歴情報44に基づいて、保存情報5を選択的に読み出す。これにより、容易に、読み出す保存情報5を選択することができる。
【0220】
また、メモリシステム3は、保存情報5がリフレッシュ先のブロックに格納された後において、ホストコンピュータ2から保存情報5に対する出力要求があったときに、リフレッシュ制御部303は、リフレッシュ先のブロックに格納された保存情報5を選択的に読み出してホストコンピュータ2に向けて出力する。保存情報5が不揮発性メモリ31から読み出される回数のうち、ホストコンピュータ2が使用するための読み出しは比較的回数が多い。このとき、リフレッシュ先のブロックに格納されている保存情報5を選択的に読み出すことにより、コピー元のブロックに格納されている保存情報5の読み出しを抑制することができ、少なくとも1回リフレッシュに成功した保存情報5の劣化を抑制することができる。
【0221】
また、メモリシステム3は、過去のリフレッシュにおけるコピー元のブロック(例えばブロック1)およびリフレッシュ先のブロック(例えばブロックk)と異なる他のブロック(例えばブロックk+1)をさらに備え、リフレッシュ制御部303は、過去のリフレッシュにおけるコピー元のブロックに格納された保存情報5を、当該他のブロックに格納することにより、リフレッシュの成功率を向上させることができる。
【0222】
また、メモリシステム3は、コピー元のブロックから保存情報5を読み出すときの適切な閾値電圧を示す電圧情報45を記憶することにより、閾値電圧をサーチする必要がない。したがって、リフレッシュに要する時間を短縮することができる。
【0223】
さらに、メモリシステム3は、不揮発性メモリ31に格納された保存情報5を消去するときに、コピー元のブロックでないブロック(第2記憶素子)に格納された保存情報5を優先的に消去することにより、実績のあるブロックに格納された保存情報5を優先的に残すことで、リフレッシュの成功確率が向上する。
【0224】
<2.第2の実施の形態>
第1の実施の形態におけるコンピュータシステム1は、同一の論理アドレスを有する保存情報5を複数のブロックに多重化して格納し、読み出される保存情報5の用途に応じて当該保存情報5の読み出すブロックを選択する例で説明した。すなわち、読み出される保存情報5が、ホストコンピュータ2への応答のために読み出されるのか、リフレッシュのために読み出されるのかによってブロックを選択する例であった。このように保存情報5の用途で選択するため、第1の実施の形態におけるコンピュータシステム1は、ブロック単位で読み出すブロックを選択するように構成されていた。
【0225】
しかし、保存情報5を読み出すブロックの選択は、保存情報5の用途による選択に限定されるものではない。例えば、保存情報5の状態に応じて選択するようにしてもよい。そして、その場合は、選択(読み出し)の単位をブロック単位ではなく、ページ単位としてもよい。
【0226】
図12は、第2の実施の形態におけるコンピュータシステム6を示す図である。コンピュータシステム6は、メモリシステム3の代わりにメモリシステム7を備える点が第1の実施の形態におけるコンピュータシステム1と異なっている。以下の説明では、コンピュータシステム6について、コンピュータシステム1と同様の構成には、同一の符号を付し説明を省略する場合がある。
【0227】
メモリシステム7は、CPU30、不揮発性メモリ31、RAM32および誤り訂正回路34の代わりに、それぞれCPU70、不揮発性メモリ71、RAM72および誤り訂正回路74を備える点がメモリシステム3と異なっている。
【0228】
CPU70は、プログラム4の代わりにプログラム8を実行する。CPU70は、CPU30と同一のハードウェアとするが、両者はハードウェアとして同一でなければならないわけではない。
【0229】
不揮発性メモリ71は、プログラム4の代わりにプログラム8を格納する。不揮発性メモリ71は、不揮発性メモリ31と同一のハードウェアとするが、両者はハードウェアとして同一でなければならないわけではない。
【0230】
さらに、RAM72は、管理情報40の代わりに管理情報80を格納する。RAM72は、RAM32と同一のハードウェアとするが、両者はハードウェアとして同一でなければならないわけではない。
【0231】
図13は、第2の実施の形態における管理情報80を示す図である。管理情報80は、可否情報86を含む点が、第1の実施の形態における管理情報40と異なっている。なお、可否情報86については後述する。
【0232】
誤り訂正回路74は、誤り訂正回路34と同様に、各種情報(外部インタフェース回路33に対して出力する情報や、メモリインタフェース回路35との間で入出力する情報等)を格納する記憶素子と、必要に応じて当該記憶素子に記憶された情報のエラービットを訂正するための回路とを備える回路である。誤り訂正回路74は、CPU70と接続されており、CPU70からの制御信号に応じて制御される。また、詳細は後述するが、誤り訂正回路74は、訂正を行ったときの状況(訂正結果)をCPU70に通知する機能も有している。
【0233】
第1の実施の形態における誤り訂正回路34における訂正については、従来の技術を適用するとして詳細な説明を省略した。一方、第2の実施の形態における誤り訂正回路74は、CPU70からの制御に従って、LDPC(Low Density Parity Check)による誤り訂正を行う。
【0234】
LDPCには、不揮発性メモリ71のブロックにおいて、1ページにつき一回だけ読み出せばよいハードデコードモード(第1モード)と、同一のページを複数回読み出さなければならないソフトデコードモード(第2モード)との2つの訂正モードがある。ソフトデコードモードは、ハードデコードモードに比べて、エラービットに対する訂正能力が高いという利点がある。一方、ソフトデコードモードは、ハードデコードモードと比較して、不揮発性メモリ71に対するアクセス回数が増加するため、誤り訂正に必要な時間が増大するという欠点がある。
【0235】
なお、LDPC自体は、従来技術であるため詳細な説明を省略する。例えば、第1の実施の形態におけるメモリシステム3において、LDPCが採用されてもよい。
【0236】
図14は、可否情報86の一部分を例示する図である。可否情報86を構成するレコードは、不揮発性メモリ71を構成するブロックの物理アドレスと、ブロックにおけるページ識別子と、可否(後述)を示す値とから構成される。第2の実施の形態においても第1の実施の形態と同様に、1つのブロックはm+1個のページから構成される。したがって、
図14に示すように1つのブロック(同一の物理アドレスが格納されている)には、m+1個のレコードが存在し、各レコードにはページ識別子と可否の値とが関連づけられている。
【0237】
可否とは、当該可否に対応するページに格納されている保存情報5を、誤り訂正回路74がLDPCによって誤りを訂正したときに記録される情報であり、当該LDPCにおいてハードデコードモードによる誤り訂正が可能であったか否かを示す情報である。なお、可否は、「0」のとき不明(ハードデコードモードによる誤り訂正が可能か否かが不明なページ)、「1」のとき可能(ハードデコードモードによる誤り訂正が可能なページ)、「2」のとき不可能(ハードデコードモードによる誤り訂正が不可能なページ)であることをそれぞれ示すものとする。
【0238】
詳細は後述するが、第2の実施の形態におけるメモリシステム7は、リフレッシュにおけるコピー元のブロックから読み出された保存情報5についてのみ、ハードデコードモードによる誤り訂正の可否(可否情報86)を記録する。ただし、リフレッシュにおけるコピー元となったことのない(可否情報86が記録されたことのない)ブロック(
図14に示す例ではPA0で示されるブロック0)についても、当該ブロックの可否として、共通の初期値「0(不明)」が格納されている。したがって、初期状態においても、不揮発性メモリ71の全ブロックの全ページについて、可否情報86のレコードが作成されている。
【0239】
また、
図14に示す例では、ブロック1(
図14に示す例において物理アドレスPA1で示されるブロック)のページ0のレコードには可否「1(可能)」、ページ1のレコードには可否「2(不可能)」、ページm-1のレコードには可否「2(不可能)」、ページmのレコードには可否「1(可能)」が格納されており、可否情報86が記録されていることがわかる。
【0240】
図15は、第2の実施の形態におけるメモリシステム7が備える機能ブロックをデータの流れとともに示す図である。
図15に示す外部インタフェース制御部300、訂正制御部701、メモリインタフェース制御部302およびリフレッシュ制御部703は、CPU70がプログラム8に従って動作することにより実現される機能ブロックである。
【0241】
訂正制御部701は、訂正制御部301と同様の機能ブロックである。ただし、
図15において図示を省略しているが、訂正制御部701は、誤り訂正回路74による誤り訂正の結果(ハードデコードモードにおける結果だけでなく、ソフトデコードモードにおける結果を含む。)をリフレッシュ制御部703に通知するものとする。
【0242】
リフレッシュ制御部703は、リフレッシュ制御部303と同様の機能ブロックである。ただし、詳細は後述するが、リフレッシュ制御部703は、訂正制御部701からの通知に応じて、ハードデコードモードによる誤り訂正に失敗した保存情報5を、メモリインタフェース回路35に交換させる機能を有する。より詳細には、リフレッシュ制御部703は、メモリインタフェース制御部302と協働しつつ、メモリインタフェース回路35を制御する。
【0243】
以上が、第2の実施の形態におけるコンピュータシステム6の構成および機能の説明である。次に、第2の実施の形態におけるコンピュータシステム6によって実現される情報格納方法について説明する。
【0244】
図16は、第2の実施の形態における情報格納方法を示す流れ図である。
図16に示す処理は、メモリシステム7の動作を示す。
【0245】
なお、
図16に示す処理が開始されるまでに、不揮発性メモリ71には保存情報5が、すでに格納されているものとする。すなわち、保存情報5を第1記憶素子に格納する工程はすでに完了しているものとする。
【0246】
また、第2の実施の形態における情報格納方法において、第1の実施の形態における情報格納方法と特に類似する工程については、同一の符号を付して説明を省略する場合がある。ただし、例えば、第1の実施の形態におけるステップS12は、CPU30によって判定される処理であるが、
図16に示す第2の実施の形態におけるステップS12は、CPU30の代わりに設けられているCPU70によって実行される処理である。このような処理も特に類似する工程であるため、同一の符号を付して説明を省略する。
【0247】
第2の実施の形態における情報格納方法は、ステップS11の代わりにステップS25が実行される点、および、ステップS22の代わりにステップS26が実行される点が第1の実施の形態における情報格納方法(
図6)と異なっている。そして、ステップS25では、プログラム4の代わりにプログラム8がロードされる。一方で、第2の実施の形態におけるステップS12ないしS21の処理は、第1の実施の形態におけるステップS12ないS21の処理と同様であるため説明を省略する。
【0248】
次に、第2の実施の形態におけるメモリシステム7がホストコンピュータ2からリフレッシュ許可を受け取ったとき(ステップS14おいてYes。)に実行されるリフレッシュ処理(ステップS26)について説明する。
【0249】
図17ないし
図22は、第2の実施の形態におけるリフレッシュ処理を示す流れ図である。
【0250】
図17に示すリフレッシュ処理が開始されると、まず、CPU70は、ハードデコードフラグを「1」に初期化する(ステップS80)。ハードデコードフラグとは、誤り訂正回路74がハードデコードモードによる訂正を行うか否かを切り替えるためのフラグである。第2の実施の形態では、ハードデコードフラグが「1」のとき誤り訂正回路74はハードデコードモードによる訂正を行い、ハードデコードフラグが「0」のときハードデコードモードによる訂正を行わないものとする。なお、ハードデコードモードによる訂正を行わないとき、誤り訂正回路74はソフトデコードモードによる訂正を行う。
【0251】
次に、メモリシステム7は、
図17に示すステップS81ないしステップS89を実行するが、これらの処理は、第1の実施の形態におけるステップS51ないしS59と同様の工程であるため説明を省略する。
【0252】
ステップS86またはS87が実行されて、リード物理アドレス321が作成されると、CPU70は、ページ番号Pを「0」に初期化し(
図18:ステップS90)、リード物理アドレス321を、読み取り対象となるブロックの物理アドレスとして取得する(ステップS91)。
【0253】
なお、詳細は後述するが、第2の実施の形態では、リード物理アドレス321に示される物理アドレスと、読み取り対象となるブロックの物理アドレスとが一致しない場合がある。すなわち、第2の実施の形態におけるリフレッシュリードでは、読み出された保存情報5に、リード物理アドレス321に示される物理アドレス以外の物理アドレスによって読み出された保存情報5が含まれることがある。ただし、ステップS91が実行されたときは、リード物理アドレス321に示される物理アドレスと、読み取り対象となるブロックの物理アドレスとが一致する。
【0254】
読み取り対象となるブロックの物理アドレスを取得すると、メモリインタフェース制御部302は、取得した読み取り対象となるブロックの物理アドレスとページPとによって電圧情報45のレコードを特定する。そして、特定したレコードに格納されている閾値電圧を取得して、当該閾値電圧が「0」であるか否かを判定する(ステップS92)。
【0255】
閾値電圧が「0」のとき(ステップS92においてYes。)、メモリインタフェース制御部302は、適切な閾値電圧が電圧情報45に記録されていないと判断する。このとき、メモリインタフェース制御部302は、閾値電圧に初期値(閾値電圧の初期値)をセットする(ステップS93)。これにより、第1の実施の形態と同様に、読み出すための適切な閾値電圧のサーチが開始されることになる。
【0256】
一方、閾値電圧が「0」でないとき(ステップS92においてNo。)、メモリインタフェース制御部302は、ステップS92で取得した閾値電圧を、ページPから保存情報5を読み出すための閾値電圧としてセットする(ステップS94)。このように適切な閾値電圧が電圧情報45に記録されている場合には、これを利用することにより、第1の実施の形態と同様に、適切な閾値電圧のサーチに要する時間を短縮することができる。
【0257】
閾値電圧を決定すると、メモリインタフェース制御部302は、取得した物理アドレスで示されるブロック(読み取り対象のブロック)のページPから、決定した閾値電圧で保存情報5を読み込むようにメモリインタフェース回路35を制御する。これにより、メモリインタフェース回路35は、当該ページから保存情報5を読み出すために不揮発性メモリ71にアクセスし、保存情報5を読み出す(ステップS95)。
【0258】
次に、メモリインタフェース制御部302は、読み出した保存情報5を誤り訂正回路74に伝達するようにメモリインタフェース回路35を制御する。これにより、メモリインタフェース回路35は、当該保存情報5を誤り訂正回路74に伝達する(ステップS96)。
【0259】
ステップS96が実行され、メモリインタフェース回路35から誤り訂正回路74に対して保存情報5(1ページ分の保存情報5)が伝達されると、訂正制御部701は、ハードデコードフラグが「1」か否かを判定する(ステップS97)。
【0260】
ハードデコードフラグが「1」のとき(ステップS97においてYes。)、訂正回路701は、可否情報86から可否の値を取得する(
図19:ステップS100)。
【0261】
ステップS100において、訂正制御部701は、読み取り対象のブロックの物理アドレス(進行中のリフレッシュにおけるコピー元のブロックを示す。)によって管理情報80の可否情報86を検索し、コピー元のブロックのページPに関連づけられている可否の値を取得する。なお、可否情報86は、全てのページについて初期状態のときから準備されているため、ステップS100において、必ず可否の値を取得することができる。
【0262】
次に、訂正制御部701は、取得した可否の値が「1(不可能)」か否かを判定する(ステップS101)。
【0263】
可否の値が「0(不明)」または「2(可能)」の場合(ステップS101においてNo。)、訂正制御部701は、ステップS96において誤り訂正回路74に伝達された保存情報5に対して、ハードデコードモードで誤り訂正を実行するように誤り訂正回路74を制御する。これにより、誤り訂正回路74は、保存情報5にハードデコードモードによる誤り訂正を実行する(ステップS102)。
【0264】
すなわち、ハードデコードモードによる訂正が可能か否かが不明「0」なページに格納されている保存情報5については、可否を確認するために、ハードデコードモードによる誤り訂正を実行する。また、ハードデコードモードによる訂正が可能「1」なページに格納されている保存情報5については、処理時間を短縮するために、ハードデコードモードによる誤り訂正を実行する。
【0265】
ハードデコードモードによる誤り訂正が実行されると、訂正制御部701は、ステップS102の訂正結果(ハードデコードモードによる誤り訂正結果)をリフレッシュ制御部703に伝達する。この通知により、リフレッシュ制御部703は、ステップS102における訂正が成功したか否かを判定する(ステップS103)。
【0266】
ステップS102における訂正が成功した場合(ステップS103においてYes。)、リフレッシュ制御部703は、可否情報86のページPのレコードの可否に、「2(可能)」を記録する(ステップS109)。これにより、可否が「0(不明)」であった場合には、「2(可能)」に書き替えられる。
【0267】
また、誤り訂正回路74による訂正が成功したことは、ステップS95において読み出しに使用した閾値電圧が適切であったことを意味する。したがって、リフレッシュ制御部703は、保存情報5を読み出すために使用した閾値電圧を電圧情報45に記録する(
図20:ステップS114)。
【0268】
さらに、訂正制御部701は、訂正が完了した保存情報5を、メモリインタフェース回路35に伝達するように、誤り訂正回路74を制御する。これにより、リフレッシュリードされ、誤り訂正がされた(リフレッシュされた)保存情報5が、誤り訂正回路74によってメモリインタフェース回路35に伝達される(ステップS115)。
【0269】
ステップS115が実行されて、保存情報5がメモリインタフェース回路35に伝達されると、メモリシステム7は、
図21に示すステップS121からの処理を実行する。なお、
図21に示すステップS121ないS126、および、
図22に示すステップS131ないしS135は、第1の実施の形態におけるステップS63ないしS68、および、ステップS71ないしS75と同様の処理であるため、説明を省略する。
【0270】
一方、ステップS102における訂正が成功しなかった場合(ステップS103においてNo。)、リフレッシュ制御部703は、その旨をメモリインタフェース制御部302に通知する。そして、この通知を受けたメモリインタフェース制御部302は、閾値電圧のサーチが終了しているか否かを判定する(ステップS104)。ステップS104における処理は、例えば、設定している閾値電圧が、すでにサーチにおける最終値となっているか否かで判定することができる。
【0271】
未だ閾値電圧のサーチが終了していない場合(ステップS104においてNo。)、メモリインタフェース制御部302は、閾値電圧のサーチを継続するために、閾値電圧を変更する(ステップS98)。これにより、メモリシステム7は、ステップS95からの処理を繰り返す。すなわち、第2の実施の形態におけるメモリシステム7は、ハードデコードモードによる誤り訂正が失敗したとき、直ちに、ハードデコードモードによる誤り訂正が不可能であると判断するのではなく、閾値電圧が不適切であったとみなして、閾値電圧のサーチを継続する。
【0272】
一方、すでに閾値電圧のサーチが終了している場合(ステップS104においてYes。)、メモリインタフェース制御部302は、その旨(サーチ終了)をリフレッシュ制御部703に通知する。そして、この通知を受けたリフレッシュ制御部703は、読み取り対象のブロックのページPについて、ハードデコードモードによる誤り訂正が不可能であると判断し、当該ブロックの物理アドレスとページPとに基づいて、可否情報86のレコードに「1(不可能)」を記録する(ステップS105)。これにより、可否の値が「0」または「2」であったレコードにおいて、ハードデコードモードによる誤り訂正が不可能であった場合に、当該可否の値が「1」に書き替えられる。
【0273】
なお、ステップS101においてYesの場合は、ステップS102ないしS105の処理がスキップされる。すなわち、メモリシステム7は、可否情報86における可否の値が「1」であるページPから読み出された保存情報5については、ハードデコードモードによる誤り訂正(ステップS102)を実行することはない。したがって、メモリシステム7は、成功する可能性の低い処理を省略することができ、リフレッシュに要する時間を短縮することができる。
【0274】
ステップS105が実行されるか、または、ステップS101においてYesと判定されると、リフレッシュ制御部302は、読み取り対象のブロック以外に、該当する保存情報5を格納している他のブロックがあるか否かを判定する(ステップS106)。
【0275】
ステップS106において、リフレッシュ制御部703は、論理アドレス323と同一の論理アドレスが格納され、かつ、読み取り対象のブロックの物理アドレスと異なる物理アドレスが格納されているレコードを履歴情報44から特定する。これにより、読み取り対象のブロックに格納されている保存情報5と同一の論理アドレスを有する保存情報5を格納するブロックであって、かつ、読み取り対象のブロックとは異なるブロックの物理アドレスを格納するレコードが特定される。言い換えれば、このようなレコードが特定できたとき、読み取り対象のブロック以外に、該当する保存情報5を格納している他のブロックが存在すると判定できる。
【0276】
他のブロックが存在する場合(ステップS106においてYes。)、リフレッシュ制御部302は、読み取り対象のブロックを、ステップS106において特定した他のブロックに変更する(ステップS107)。これによって、読み取り対象のブロックが、当該保存情報5と同一の論理アドレスを有する保存情報5を格納する他のブロックに変更される。
【0277】
従来の技術では、ハードデコードモードによる誤り訂正が成功しなかった場合、誤り訂正能力の高い訂正を行うために、当該情報に対してソフトデコードモードによる誤り訂正を実行する。しかし、ソフトデコードモードによる誤り訂正は、対象となる情報を複数回読み出す必要があるため、誤り訂正に時間がかかるという欠点がある。
【0278】
一方、メモリシステム7では、過去にリフレッシュが実行された保存情報5は、不揮発性メモリ71において多重化されている。したがって、ハードデコードモードによる誤り訂正に失敗した保存情報5に対してソフトデコードモードによる誤り訂正を実行する代わりに、多重化された他の保存情報5に対してハードデコードモードによる誤り訂正を試すことができる。多重化された保存情報5は、互いに同一の論理アドレスで示される情報であるから、訂正後において両者は等価とみなせる。
【0279】
なお、一旦読み出された保存情報5を多重化された他の保存情報5に交換するためには、新たな保存情報5を読み出す必要がある。すなわち、再度、ステップS95を実行する必要がある。しかし、その後、他の保存情報5に対するハードデコードモードによる誤り訂正が成功すれば、結果として増加する読み出しは1回で済む。一方、ソフトデコードモードによる誤り訂正を実行する場合には、保存情報5に対する読み出しは複数回発生し、誤り訂正にかかる時間は、より増大する。
【0280】
また、ステップS96において伝達された保存情報5(ハードデコードモードによる誤り訂正に失敗した保存情報5)は、進行中のリフレッシュにおけるコピー元のブロックである蓋然性が高いブロックから読み出された保存情報5である。メモリシステム7において、コピー元のブロックは、これ以上の劣化を抑制するために、ホストリードの対象から除外してアクセス回数を抑制するブロックである。このようなブロックに対してアクセス数を増大させるソフトデコードモードを実行することは好ましくない。
【0281】
したがって、リフレッシュ制御部703は、ステップS107を実行することにより、保存情報5を読み出すブロックを変更する。これにより、その後実行されるステップS95において、メモリインタフェース回路35は、変更された読み取り対象のブロックから保存情報5を読み出し、当該新たに読み出した保存情報をステップS96において誤り訂正回路74に伝達する。すなわち、ハードデコードモードによる誤り訂正が不可能であった保存情報5が、同一の論理アドレスを有する他の保存情報5に交換される。
【0282】
ステップS107を実行すると、メモリシステム7は、変更された他のブロックから保存情報5を読み出すために、ステップS92に戻って処理を繰り返す。このように、第2の実施の形態における情報格納方法では、リフレッシュのときに読み出される1ブロック分の保存情報5が、異なるブロックから読み出された情報によって構成される場合がある。
【0283】
ステップS92ないしS98、および、ステップS100ないしS107が繰り返され、ハードデコードモードによる誤り訂正が可能なブロックが発見されると、ステップS103においてYesと判定される。この場合には、すでに説明したように、ステップS109以降の処理が実行される。
【0284】
一方、ハードデコードモードによる誤り訂正が可能なブロックが発見できなかった場合、リフレッシュ制御部703は、ステップS106においてNoと判定し、ハードデコードモードによる誤り訂正を断念して、ハードデコードフラグに「0」をセットする(ステップS108)。そして、
図18に示すステップS91を実行する。ステップS108が実行される場合においては、すでにステップS107(ハードデコードモードによる誤り訂正が可能なブロックのサーチ)が実行されて、読み取り対象のブロックが変更されている場合がある。したがって、リフレッシュ制御部703は、ステップS108を実行した後、ステップS91を実行して、読み取り対象のブロックを、リード物理アドレス321で示されるブロックに戻す。
【0285】
次に、メモリシステム7は、すでに説明したステップS92ないしS97の処理を実行する。ただし、ステップS108によりハードデコードフラグが「0」に切り替えられているため、訂正制御部701は、ステップS97においてNoと判定する。これにより、ステップS102が実行されなくなるため、読み出された保存情報5に対してハードデコードモードによる誤り訂正が実行されることはない。
【0286】
ステップS97においてNoと判定すると、訂正制御部701は、ソフトデコードモードによる誤り訂正に必要な分だけの読み出しを完了したか否かを判定する(ステップS99)。そして、完了していない場合(ステップS99においてNo。)、ステップS95からの処理を繰り返す。なお、
図19において図示を省略しているが、ステップS95の処理に戻るとき、メモリシステム7は、読み取り条件を適宜変更する。
【0287】
必要な読み出しが完了している場合(ステップS99においてYes。)、訂正制御部701は、読み出した保存情報5に対するソフトデコードモードによる誤り訂正を実行するように誤り訂正回路74を制御する。これにより、誤り訂正回路74が保存情報5に対するソフトデコードモードによる誤り訂正を実行する(
図20:ステップS111)。
【0288】
ソフトデコードモードによる誤り訂正が実行されると、訂正制御部701は、ステップS111の結果(ソフトデコードモードによる誤り訂正の訂正結果)をリフレッシュ制御部703に通知する。これにより、リフレッシュ制御部703は、当該訂正に成功したか否かを判定する(ステップS112)。
【0289】
ソフトデコードモードによる誤り訂正に成功した場合(ステップS112においてYes。)、リフレッシュ制御部703は、ハードデコードフラグを「1」に初期化する(ステップS113)。そして、メモリシステム7は、すでに説明したステップS114からの処理を実行する。
【0290】
ソフトデコードモードによる誤り訂正に成功しなかった場合(ステップS112においてNo。)、リフレッシュ制御部703は、その旨をメモリインタフェース制御部302に伝達する。メモリインタフェース制御部302は、ステップS104と同様に、閾値電圧のサーチが終了しているか否かを判定する(ステップS116)。
【0291】
閾値電圧のサーチが終了していない場合(ステップS116においてNo。)、メモリインタフェース制御部302は、閾値電圧のサーチを継続するために、閾値電圧を変更する(ステップS98)。これにより、メモリシステム7は、ステップS95からの処理を繰り返す。
【0292】
一方、すでに閾値電圧のサーチが終了している場合(ステップS116においてYes。)、メモリインタフェース制御部302は、その旨(サーチ終了)をリフレッシュ制御部703に通知する。そして、この通知を受けたリフレッシュ制御部703は、読み取り対象のブロックのページPについて、ソフトデコードモードによる誤り訂正が不可能であると判断し、エラー処理を行う(ステップS117)。ただし、エラー処理の詳細は省略する。
【0293】
なお、ソフトデコードモードによる誤り訂正についても、訂正可能なブロックのサーチを行ってもよい。すなわち、ステップS117の代わりに、読み取り対象のブロックを変更して読み出し、再度、ソフトデコードモードによる誤り訂正を実行してもよい。
【0294】
以上のように、第2の実施の形態においても、第1の実施の形態と同様の効果を得ることができる。
【0295】
また、メモリシステム7は、不揮発性メモリ71に格納された保存情報5を1回だけ読み出して訂正するハードデコードモード(第1訂正モード)と、不揮発性メモリ71に格納された保存情報5を複数回読み出して訂正するソフトデコードモード(第2訂正モード)とを実行する誤り訂正回路74をさらに備え、不揮発性メモリ71は、コピー元のブロックおよびリフレッシュ元のブロックとは異なるリフレッシュ先のブロックをさらに備え、コピー元のブロックに格納された保存情報5について、ハードデコードモードによる訂正が可能か否かを示す可否情報86を格納し、リフレッシュ制御部703は、可否情報86に応じて、ハードデコードモードによる訂正が可能な保存情報5を優先的に読み出してリフレッシュ先のブロックに保存情報5を格納する。
【0296】
これにより、用途以外に、保存情報5の状態に応じて選択的に読み出すことができる。また、ハードデコードモードによる訂正が可能か否かを試す処理を抑制できるので、リフレッシュに必要な時間を短縮することができる。さらに、多重化されているブロックについてハードデコードモードによる訂正を試すことにより、ソフトデコードモードによる訂正を回避することができる。したがって、リフレッシュに必要な時間を短縮することができるとともに、アクセス回数を抑制することができるため、劣化を抑制することもできる。
【0297】
<3. 変形例>
以上、本発明の実施の形態について説明してきたが、本発明は上記実施の形態に限定されるものではなく様々な変形が可能である。
【0298】
例えば、上記実施の形態に示した各工程は、あくまでも例示であって、上記に示した順序や内容に限定されるものではない。すなわち、同様の効果が得られるならば、適宜、順序や内容が変更されてもよい。
【0299】
また、上記実施の形態に示した機能ブロック(例えば、外部インタフェース制御部300やリフレッシュ制御部303など)は、CPU30,70がプログラム4,8に従って動作することにより、ソフトウェア的に実現されると説明した。しかし、これらの機能ブロックの一部または全部を専用の論理回路で構成し、ハードウェア的に実現してもよい。
【0300】
また、外部インタフェース回路33が出力要求を受け取ったときに、外部インタフェース制御部300が、リフレッシュフラグ320を確認し、リフレッシュフラグ320が「1」のときは、ホストコンピュータ2にその旨を通知するように外部インタフェース回路33を制御してもよい。このように構成することによって、リフレッシュが行われている間、ホストコンピュータ2がメモリシステム3に対してコマンドを送信しないようにしてもよい。
【0301】
また、上記実施の形態では、リフレッシュリードにおける成功率を向上させる例について説明した。しかし、例えば、ホストリードに失敗したときに、履歴情報44を参照して、多重化された保存情報5を検索して読み出すように構成してもよい。
【0302】
また、第2の実施の形態では、コピー元のブロックに格納されている保存情報5に対してハードデコードモードによる誤り訂正の結果のみが可否情報86に記録される例について説明した。しかし、例えば、履歴情報44において記録されているリフレッシュ元のブロック等についても、可否情報86を収集するように構成してもよい。これにより、多重化された多くの保存情報5について可否情報86が記録されるため、ハードデコードモードが可能な保存情報5を検出する可能性が向上する。
【符号の説明】
【0303】
1,6 コンピュータシステム
2 ホストコンピュータ
3,7 メモリシステム
30,70 CPU
300 外部インタフェース制御部
301,701 訂正制御部
302 メモリインタフェース制御部
303,703 リフレッシュ制御部
31,71 不揮発性メモリ
32,72 RAM
320 リフレッシュフラグ
321 リード物理アドレス
322 ライト物理アドレス
323 論理アドレス
33 外部インタフェース回路
34,74 誤り訂正回路
35 メモリインタフェース回路
4,8 プログラム
40,80 管理情報
41 論物変換情報
42 フリーブロック情報
43 ターゲット情報
44 履歴情報
45 電圧情報
5 保存情報
86 可否情報