JP5073402B2 - メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム - Google Patents

メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム Download PDF

Info

Publication number
JP5073402B2
JP5073402B2 JP2007199362A JP2007199362A JP5073402B2 JP 5073402 B2 JP5073402 B2 JP 5073402B2 JP 2007199362 A JP2007199362 A JP 2007199362A JP 2007199362 A JP2007199362 A JP 2007199362A JP 5073402 B2 JP5073402 B2 JP 5073402B2
Authority
JP
Japan
Prior art keywords
data
cache
read
memory
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007199362A
Other languages
English (en)
Other versions
JP2009037317A (ja
Inventor
利行 本多
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2007199362A priority Critical patent/JP5073402B2/ja
Publication of JP2009037317A publication Critical patent/JP2009037317A/ja
Application granted granted Critical
Publication of JP5073402B2 publication Critical patent/JP5073402B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Description

本発明は、不揮発性メモリの駆動制御を行うメモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システムに関する。
近年、不揮発性記憶装置、例えばメモリーカードは、デジタルカメラや携帯電話に代表される携帯情報端末等の記憶媒体として使用されるようになってきており、その市場を拡大している。また、メモリーカードには、フラッシュメモリなどの不揮発性メモリが搭載されている。このような不揮発性メモリでは、半導体プロセスでの微細化に伴って、その容量が増加されている。また、不揮発性メモリでは、メモリセルの多値技術を用いることによって、さらなる容量増加が図られており、ビット単価を低下させて安価に入手できるようになってきている。ことに、NANDタイプのフラッシュメモリでは、そのビット単価が他の不揮発性メモリに比べて最も安価であるため、当該フラッシュメモリが広く普及している。しかしながら、このNANDタイプのフラッシュメモリには、いくつかのデータ保持に係わる特性が存在しており、半導体プロセスでの微細化に伴いその特性が顕著に現れることがあった。
そこで、従来の不揮発性記憶装置では、例えば下記特許文献1に記載されているように、データの読み出し時にメモリセルに印加する電圧条件を調節することにより、メモリセルのリードディスターブ特性を向上させて、データ保持を高めることが提案されている。
また、従来の不揮発性記憶装置には、例えば下記特許文献2に記載されているように、データの読み出し時に誤り訂正符号回路を使用することによってリードディスターブによるビット誤りの進行の程度を検出するとともに、データをリフレッシュすることによってビット誤りの発生を未然に防ぐことが提案されている。
特開2002−298591公報 特開2004−326867公報
ところが、上記のような従来の不揮発性記憶装置では、リードディスターブによるビット誤りの発生を確実に防ぐことができないという問題点があった。具体的にいえば、上記特許文献1に記載された従来の不揮発性記憶装置では、メモリセル自身のリードディスターブ特性は確かに向上可能ではあるが、リードディスターブによるビット誤りが発生するのを確実に防ぐことはできなかった。また、上記特許文献2に記載された従来の不揮発性記憶装置では、リードディスターブによるビット誤りの進行の程度を検出するために、データの読み出し動作を行って誤り訂正符号回路を用いているが、このデータの読み出し動作によって、リードディスターブの原因になる劣化を促進して、ビット誤りを招くことがあった。
上記の課題に鑑み、本発明は、リードディスターブによるビット誤りの発生を確実に防ぐことができるメモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システムを提供することを目的とする。
上記の目的を達成するために、本発明にかかるメモリーコントローラは、複数の物理ブロックを有する不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラであって、
前記論理アドレスと前記物理ブロックのアドレスとを変換するアドレス変換テーブルと、
前記論理アドレスが入力されるとともに、前記アドレス変換テーブルを参照して、前記不揮発性メモリに対するデータの書き込み動作及び読み出し動作を制御する主制御部を備え、
前記複数の各物理ブロックに含まれた複数の物理ページについて、前記物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設けられ、
前記主制御部は、前記読み出し回数テーブルを参照して、前記不揮発性メモリに対するデータの読み出し動作を制限することを特徴とするものである。
上記のように構成されたメモリーコントローラでは、不揮発性メモリの各物理ブロックに含まれた物理ページについて、物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設置されるとともに、当該読み出し回数テーブルを参照して、データの読み出し動作を制限する主制御部が設けられている。これにより、上記従来例と異なり、リードディスターブによるビット誤りの発生を確実に防ぐことができる。
また、上記メモリーコントローラにおいて、前記不揮発性メモリの物理ブロックに格納されているデータをキャッシュ可能に構成されるとともに、前記主制御部に対して外部からデータの読み出し動作が要求されたときに、前記不揮発性メモリからデータを読み出すことなく当該データを外部に出力するための出力メモリと、
前記出力メモリにキャッシュされているキャッシュデータの読み出し回数を管理する出力テーブルを備えていることが好ましい。
この場合、出力メモリにデータをキャッシュさせることによって、そのデータの読み出し動作が外部から要求されたときに、当該データを不揮発性メモリから読み出すことなく、外部に出力することが可能となり、不揮発性メモリでのリードディスターブによる劣化を効率よく抑制することができる。
また、上記メモリーコントローラにおいて、前記主制御部には、前記不揮発性メモリの物理ブロックへのデータの書き込み動作が要求されたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対して当該データのキャッシュを開放することを指示する出力メモリ解放指示部が設けられてもよい。
この場合、出力メモリ解放指示部が出力メモリに対して不揮発性メモリに書き込まれたデータのキャッシュを開放することを指示するので、出力メモリの有効利用を容易に図ることができ、出力メモリの利用効率を高めることができる。
また、上記メモリーコントローラにおいて、前記出力メモリ解放指示部は、前記不揮発性メモリの互いに異なる物理ブロックの間でデータの移動が行われたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対し当該データのキャッシュを開放することを指示することが好ましい。
この場合、出力メモリの利用効率をより確実に高めることができる。
また、上記メモリーコントローラにおいて、前記主制御部には、外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を求めて、前記読み出し動作が要求されたデータに対応する読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する読み出し回数が前記キャッシュデータに対応する読み出し回数よりも多いことが判定されたときに、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられていることが好ましい。
この場合、出力メモリにキャッシュされるデータを適切に選ぶことができ、出力メモリの利便性を向上させることができる。
また、上記メモリーコントローラでは、前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択してもよい。
この場合、出力メモリにキャッシュされている複数のデータのうち、読み出し回数が最も少ないデータがキャッシュ判定部によって選択されるので、出力メモリにキャッシュされるデータをより適切に選ぶことが可能となり、出力メモリの利便性を容易に向上させることができる。
また、上記メモリーコントローラにおいて、前記主制御部には、外部からの論理アドレスによって指定された前記不揮発性メモリの物理ブロックからデータを読み出す読み出し動作が要求されたときに、当該物理ブロックの読み出し回数を前記読み出し回数テーブルから取得して、取得した読み出し回数と所定の閾値とを比較する回数比較部と、
前記回数比較部により、前記取得した読み出し回数が前記所定の閾値に達したことが判別されたときに、前記論理アドレスによって指定された前記不揮発性メモリの物理ブロックとは異なる別の物理ブロックに対し、前記読み出し動作が要求されたデータを移動することを指示するデータ移動指示部とが設けられていることが好ましい。
この場合、不揮発性メモリでのデータの保持性が低下するのを防止しつつ、リードディスターブによるビット誤りの発生を確実に防ぐことができる。
また、上記メモリーコントローラにおいて、前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得し、前記読み出し動作が要求されたデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記読み出し動作が要求されたデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該読み出し動作が要求されたデータについての残許容読み出し回数を算出するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を取得し、前記キャッシュデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記キャッシュデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該キャッシュデータについての残許容読み出し回数を算出して、前記読み出し動作が要求されたデータについての残許容読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する残許容読み出し回数が前記キャッシュデータに対応する残許容読み出し回数よりも少ない場合に、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられていることが好ましい。
この場合、出力メモリにキャッシュされるデータを適切に選ぶことができ、出力メモリの利便性を向上させることができる。また、キャッシュ判定部が、読み出し動作が要求されたデータ及びキャッシュデータにそれぞれ対応する残許容読み出し回数どうしを比較しているので、不揮発性メモリのリードディスターブストレスの程度に応じて、適切なキャッシュデータの選択を行うことができ、リードディスターブによるビット誤りの発生をより確実に防ぐことができる。
また、上記メモリーコントローラにおいて、前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択してもよい。
この場合、出力メモリにキャッシュされている複数のデータのうち、読み出し回数が最も少ないデータがキャッシュ判定部によって選択されるので、出力メモリにキャッシュされるデータをより適切に選ぶことが可能となり、出力メモリの利便性を容易に向上させることができる。
また、上記メモリーコントローラにおいて、前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
外部からの論理アドレスによって指定された前記不揮発性メモリの物理ブロックからデータを読み出す読み出し動作が要求されたときに、当該物理ブロックの読み出し回数を前記読み出し回数テーブルから取得するとともに、当該物理ブロックの書き換え回数を前記書き換え回数テーブルから求め、かつ、求めた書き換え回数を基に前記関数設定部から許容読み出し回数を取得して、取得した読み出し回数と取得した許容読み出し回数とを比較する回数比較部と、
前記回数比較部により、前記取得した読み出し回数が前記許容読み出し回数に達したことが判別されたときに、前記論理アドレスによって指定された前記不揮発性メモリの物理ブロックとは異なる別の物理ブロックに対し、前記読み出し動作が要求されたデータを移動することを指示するデータ移動指示部とが設けられていることが好ましい。
この場合、不揮発性メモリでのデータの保持性が低下するのを防止しつつ、リードディスターブによるビット誤りの発生をより確実に防ぐことができる。
また、上記メモリーコントローラにおいて、前記関数では、前記書き換え回数に対して前記許容読み出し回数が単調減少してもよい。
この場合、上記不揮発性メモリの読み出し及び書き込み特性に応じたより適切な関数が使用されることとなり、上記キャッシュ判定部及びデータコピー移動部での各処理動作をより適切に行わせることができる。
また、本発明の不揮発性記憶装置は、複数の物理ブロックを有する不揮発性メモリ、及び
上記いずれかのメモリーコントローラを備えていることを特徴とするものである。
また、本発明の不揮発性記憶システムは、複数の物理ブロックを有する不揮発性メモリと、前記不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラを備えた不揮発性記憶装置、及び前記不揮発性記憶装置に対して論理アドレスを指定したアクセス指示を行うホスト機器を具備する不揮発性記憶システムであって、
前記メモリーコントローラには、上記いずれかのメモリーコントローラが用いられていることを特徴とするものである。
上記のように構成された不揮発性記憶装置及び不揮発性記憶システムでは、リードディスターブによるビット誤りの発生を確実に防ぐことができるメモリーコントローラが用いられているので、信頼性の高い不揮発性記憶装置及び不揮発性記憶システムを容易に構成することができる。
本発明によれば、リードディスターブによるビット誤りの発生を確実に防ぐことができるメモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システムを提供することが可能となる。
以下、本発明のメモリーコントローラ、不揮発性記憶装置、及び不揮発性記憶システムの好ましい実施形態について、図面を参照しながら説明する。なお、以下の説明では、本発明をメモリーカードに適用した場合を例示して説明する。
[第1の実施形態]
[不揮発性記憶システムの構成]
図1は、本発明の第1の実施形態にかかるメモリーコントローラを使用したメモリーカード及び不揮発性記憶システムの要部構成を示すブロック図である。図1において、本実施形態の不揮発性記憶システム50には、不揮発性記憶装置としてのメモリーカード1と、このメモリーカード1が着脱可能に接続されるとともに、メモリーカード1に対して論理アドレスを指定したアクセス指示を行うホスト機器51とが設けられている。そして、不揮発性記憶システム50では、これらメモリーカード1とホスト機器51との間で双方向のデータ転送が行えるように構成されている。なお、不揮発性記憶システム50は、デジタルカメラやパーソナルコンピュータ等に組み込まれて、その内部でデータを記憶する記憶システムを構築するようになっている。
メモリーカード1は、本発明のメモリーコントローラを用いて構成されたコントローラ2と、コントローラ2によってデータの書き込み制御及び読み出し制御が行われる不揮発性メモリ3とを備えている。具体的にいえば、不揮発性メモリ3には、例えばNANDタイプのフラッシュメモリが用いられており、その書き換え回数が100000回程度に制限されている。また、不揮発性メモリ3には、後に詳述するように、複数個の物理ブロック14が含まれている。
コントローラ2は、不揮発性メモリ3に対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うように構成されている。すなわち、コントローラ2は、メモリーカード1の外部に設けられたホスト機器51から論理アドレスを指定した書き込み要求とともに転送されてきたデータを不揮発性メモリ3に書き込んだり、ホスト機器51から論理アドレスを指定した読み出し要求に応じて、データを不揮発性メモリ3から読み出して当該ホスト機器51に転送したりする。
また、コントローラ2は、不揮発性メモリ3のデータ信頼性を向上させるための管理や制御を行うよう構成されている。すなわち、コントローラ2は、主制御部4と、ホスト機器51側及び不揮発性メモリ3側にそれぞれ設けられたインターフェースとしてのホストI/F 5及びメモリI/F 7と、これらのホストI/F 5とメモリI/F 7との間に設けられたバッファ6及び誤り検出訂正回路部(以下、“ECC”と略記する。)8を備えている。主制御部4には、CPUやDSPなどが用いられており、ホスト機器51から上記書き込み要求及び読み出し要求が入力されるようになっている。
そして、コントローラ2では、主制御部4に書き込み要求が入力されると、ホスト機器51からのデータはホストI/F 5、バッファ6、及びメモリI/F 7を順次経由して不揮発性メモリ3へと転送されて、書き込み動作が行われる。また、このデータの書き込み動作の際には、ECC 8は当該データに誤り訂正用の符号を付加する。一方、主制御部4に読み出し要求が入力されて、読み出し動作が不揮発性メモリ3で行われると、その不揮発性メモリ3からのデータはメモリI/F 7、バッファ6、及びホストI/F 5を順次経由してホスト機器51へと転送される。また、このデータの読み出し動作の際には、ECC 8は付加した誤り訂正用の符号を使用して、当該データの誤りを訂正する。
また、コントローラ2は、アドレス変換テーブル9、書き換え回数テーブル10、及び読み出し回数テーブル11を備えている。さらに、コントローラ2には、不揮発性メモリ3の物理ブロック14に格納されているデータをキャッシュ可能に構成された出力メモリとしてのキャッシュメモリ12と、キャッシュメモリ12にキャッシュされているキャッシュデータの読み出し回数などの情報を管理する出力テーブルとしてのキャッシュテーブル13とが設けられており、主制御部4に対してホスト機器51からデータの読み出し動作が要求されたときに、不揮発性メモリ3からデータを読み出すことなく、当該データをキャッシュメモリ12からホスト機器51に出力可能に構成されている。また、キャッシュメモリ12には、複数、例えば0〜1023のページ番号が割り当てられた1024個のページが含まれている。また、各ページは、例えば2Kバイトのデータ領域を有している。
そして、コントローラ2では、主制御部4がアドレス変換テーブル9、書き換え回数テーブル10、読み出し回数テーブル11、及びキャッシュテーブル13を適宜参照することにより、コントローラ2の各部の駆動制御を行うようになっている。さらに、コントローラ2では、主制御部4が読み出し回数テーブル11を参照して、不揮発性メモリ3からのデータの読み出し動作を制限するようになっており、不揮発性メモリ3にリードディスターブによるビット誤りの発生を確実に防止できるように構成されている(詳細は後述。)。
ここで、図2を参照して、主制御部4について具体的に説明する。
図2は、図1に示した主制御部の具体的な機能ブロックを示すブロック図である。
主制御部4には、回数比較部40、データ移動指示部41、及びキャッシュ制御部42が機能的に設けられている。また、主制御部4には、所定の閾値としての規定回数が予め設定されて、記憶する上限回数記憶部43が設置されている。回数比較部40は、ホスト機器51からの論理アドレスによって指定された不揮発性メモリ3の物理ブロック14からデータを読み出す読み出し動作が要求されたときに、当該物理ブロック14の読み出し回数を読み出し回数テーブル11から取得する。そして、回数比較部40は、取得した読み出し回数と、上限回数記憶部43に記憶されている規定回数との比較を行い、その比較結果をデータ移動指示部41に通知するようになっている。また、上記規定回数は、不揮発性メモリ3の物理ブロック14において、リードディスターブによるビット誤りを発生させない、読み出し動作の上限読み出し回数である。
データ移動指示部41は、回数比較部40からの比較結果により、読み出し動作が要求されたデータの読み出し回数が上記規定回数に達したことが判別されたときに、ホスト機器51によって指定された論理アドレスとは相異なる論理アドレスで指定される、不揮発性メモリ3の別の物理ブロック14に対し、当該データを移動することを指示するようになっている。これにより、不揮発性メモリ3では、2つの物理ブロック14の間で読み出し動作が要求されたデータの移動処理が行われて、当該データの移動処理が完了される。
キャッシュ制御部42は、キャッシュメモリ12でのデータの書き込み制御及び読み出し制御を行うものであり、キャッシュ制御部42には、キャッシュ判定部42a、キャッシュ指示部42b、及びキャッシュ解放指示部42cが設けられている。キャッシュ判定部42aは、ホスト機器51からデータの読み出し動作が要求されたときに、キャッシュテーブル13を参照することにより、キャッシュメモリ12にデータキャッシュ可能なページが存在するか否かについて判定して、その判定結果をキャッシュ指示部42bに通知する。
また、キャッシュ判定部42aは、キャッシュメモリ12にデータキャッシュ可能なページが存在しないと判定したときには、読み出し動作が要求されたデータに対応する読み出し回数(すなわち、当該データが書き込まれている物理ブロック14の読み出し回数)を読み出し回数テーブル11から取得する。さらに、キャッシュ判定部42aは、読み出し回数テーブル11及びキャッシュテーブル13を参照することにより、キャッシュメモリ12にキャッシュされているキャッシュデータに対応する読み出し回数(つまり、当該キャッシュデータと同じデータが書き込まれている不揮発性メモリ3の物理ブロック14の読み出し回数)を求める。そして、キャッシュ判定部42aは、読み出し動作が要求されたデータに対応する読み出し回数と、キャッシュデータに対応する読み出し回数との比較を行って、データキャッシュの要否を判定して、その判定結果をキャッシュ指示部42bに通知するようになっている。
また、キャッシュ判定部42aは、キャッシュメモリ12に複数のキャッシュデータが存在している場合には、複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択するように構成されている。
キャッシュ指示部42bは、キャッシュ判定部42aから、キャッシュメモリ12にデータキャッシュ可能なページが存在していること、または読み出し動作が要求されたデータに対応する読み出し回数がキャッシュデータに対応する読み出し回数よりも多いことが通知されたときに、読み出し動作が要求されたデータをキャッシュメモリ12にキャッシュさせるようになっている。
キャッシュ解放指示部42cは、出力メモリ解放指示部を構成するものであり、ホスト機器51から不揮発性メモリ3へ論理アドレスを指定してデータの書き込み動作が要求されたときに、当該データがキャッシュメモリ12にキャッシュされているか否かについて、キャッシュテーブル13を参照することにより判別する。さらに、キャッシュ解放指示部42cは、データがキャッシュされていることを判別した場合には、キャッシュメモリ12に対して当該データのキャッシュを開放することを指示するようになっている。
また、キャッシュ解放指示部42cは、不揮発性メモリ3の互いに異なる物理ブロック14の間でデータの移動が行われたときでも、当該データがキャッシュメモリ12にキャッシュされているか否かについて、キャッシュテーブル13を参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、キャッシュメモリ12に対し当該データのキャッシュを開放することを指示するようになっている。
図1に戻って、不揮発性メモリ3は、例えばブロック番号0〜4095の4096個の物理ブロック14を有している。各物理ブロック14は、例えば256Kバイトのデータ領域と、2Kバイトの管理領域とを備えている。また、各物理ブロック14では、ホスト機器51からのデータがデータ領域に書き込まれ、誤り訂正用の符号などが管理領域に書き込まれる。さらに、物理ブロック14は、不揮発性メモリ3のデータの消去単位であり、不揮発性メモリ3では、データを書き換える際には消去単位である物理ブロック14単位でデータの書き換えが行われる。
次に、物理ブロック14について、その構成を示す図3を参照して具体的に説明する。
図3に例示するように、物理ブロック14には、ページ番号0〜127の128個の物理ページ14aが設けられている。各物理ページ14aは、例えば2Kバイトのデータ領域と、64バイトの管理領域とを有している。また、この物理ページ14aはデータの書き込み単位でもあり、データの読み出し単位でもある。それゆえ、不揮発性メモリ3において、物理ブロック14のデータを全て読み出した場合には、128回の読み出し動作が当該物理ブロック14に対して行われたことになる。
次に、図4〜図7を参照して、コントローラ4の内部に設けられたアドレス変換テーブル、書き換え回数テーブル、読み出し回数テーブル、及びキャッシュテーブルについて具体的に説明する。
図4は図1に示したアドレス変換テーブルの構成を示す図であり、図5は図1に示した書き換え回数テーブルの構成を示す図である。図6は図1に示した読み出し回数テーブルの構成を示す図であり、図7は図1に示したキャッシュテーブルの構成を示す図である。
図4に示すように、アドレス変換テーブル9には、論理ブロックの論理アドレスが書き込まれた列9aと、物理ブロック14のアドレスが書き込まれた列9bとが設けられており、このアドレス変換テーブル9は、互いに関連付けられた論理アドレス及び物理アドレスを相互に変換可能に構成されている。また、主制御部4がアドレス変換テーブル9を使用することにより、ホスト機器51からの論理アドレスを、不揮発性メモリ3の対応する物理ブロック14のアドレスに変換し、その変換したアドレスを用いてメモリI/F 7を制御することによって、不揮発性メモリ3での該当する物理ブロック14を指定することができるようになっている。
図5に示すように、書き換え回数テーブル10には、物理ブロック14の番号が書き込まれた列10aと、対応する物理ブロック14に有効なデータが書き込まれているかどうかを示すフラグが書き込まれる列10bと、対応する物理ブロック14の書き換え回数が書き込まれる列10cとが設けられている。また、この列10cには、対応する物理ブロック14の消去回数が当該物理ブロック14の書き換え回数として記録されるようになっており、書き換え回数テーブル10は、物理ブロック14の消去回数を物理ブロック14単位に管理するように構成されている。
図6に示すように、読み出し回数テーブル11には、物理ブロック14の番号が書き込まれた列11aと、対応する物理ブロック14の読み出し回数が書き込まれる列11bとが設けられている。また、読み出し回数テーブル11では、各物理ブロック14に含まれた複数の物理ページ14aについて、物理ページ14a単位での読み出し回数を、対応する物理ブロック14の読み出し回数として列11bに記録するようになっており、読み出し回数テーブル11は、物理ページ14a単位の読み出し回数を管理可能に構成されている。つまり、この読み出し回数テーブル11では、任意の物理ブロック14において、その先頭の物理ページ14aであるページ0から最終の物理ページ14aであるページ127まで順に読み出し動作が行われたとき、それら物理ページ14aの延べ読み出し回数である、128回が今回の読み出し動作における読み出し回数として当該任意の物理ブロック14での列11bの読み出し回数に加算される。
また、アドレス変換テーブル9、書き換え回数テーブル10、及び読み出し回数テーブル11には、いずれも不揮発性メモリ、好ましくは書き換え回数が十分大きいMRAM(Magnetoresistive Random Access Memory)などが用いられている。なお、アドレス変換テーブル9と書き換え回数テーブル10に関しては、SRAM(Static Random Access Memory)などの揮発性メモリで構成することも可能ではある。但し、この場合、不揮発性メモリ3にその情報を書き込んでおき、メモリーカード1に電源投入された後にアドレス変換テーブル9と書き換え回数テーブル10を作成するために不揮発性メモリ3からデータを読み出す必要がある。一方、読み出し回数テーブル11については、揮発性メモリで構成することは適切ではない。それというのは、読み出し回数を書き換え回数の制限の厳しい不揮発性メモリ3に書き込んでおくことはできないからである。
図7に示すように、キャッシュテーブル13には、キャッシュメモリ12内のページアドレスが書き込まれた列13aと、対応するページにキャッシュされているキャッシュデータが有効であるか無効であるかを示すフラグが書き込まれる列13bとが設けられており、主制御部4が列13bに書き込まれたフラグを参照することで対応するページにデータがキャッシュされているか、あるいはそのページが空きページで新たなデータをキャッシュすることができるかについて判別できるようになっている。
また、キャッシュテーブル13には、対応するページにキャッシュされているキャッシュデータのページ単位の論理アドレスが書き込まれる列13cが設けられており、主制御部4がキャッシュデータのキャッシュ元を検索できるようになっている。つまり、主制御部4が、列13cに書き込まれた論理アドレスを用いることにより、キャッシュデータと同じデータが書き込まれている不揮発性メモリ3の物理ブロック14の物理ページ14aを特定可能になっている。
また、キャッシュテーブル13には、対応するページにキャッシュされているキャッシュデータの読み出し回数が書き込まれる列13dが設けられており、そのページにデータキャッシュされた後、キャッシュメモリ12からホスト機器51に当該キャッシュデータが読み出された回数、つまりキャッシュヒットした回数が読み出し回数として列13dに記録されている。
以下、上記のように構成された本実施形態でのデータの処理動作について、図1〜図15を参照して具体的に説明する。
[データの読み出し動作]
まず、図8を参照して、データの読み出し動作について説明する。
図8は、上記メモリーカードでの読み出し動作を示すフローチャートである。
図8において、主制御部4に対し、ホスト機器51から論理アドレスを指定したデータの読み出し動作が要求されると、主制御部4は、そのデータがキャッシュヒットするかどうかについて判定する(ステップS1)。具体的には、主制御部4は、キャッシュテーブル13の列13cを検索して、ホスト機器51からの論理アドレスが当該列13cに書き込まれているか否かを調べることにより、要求されたデータがキャッシュメモリ12にキャッシュされているか否かについて判定する。そして、列13cに該当する論理アドレスが書き込まれている場合には、さらに列13bのフラグを確認し、フラグが有効である場合に主制御部4は、キャッシュヒットしたとして、列13aからキャッシュメモリ12内の該当するページアドレスを求めて、その求めたページアドレスに基づいて、キャッシュメモリ13からキャッシュデータを読み出し、ホスト機器51に出力する(ステップS2)。また、このキャッシュメモリ12からホスト機器51へのデータ読み出し動作が完了すると、主制御部4は、キャッシュテーブル13の対応する列13d内の読み出し回数に1を加算して、当該読み出し回数を更新し、読み出し動作を終了する。
一方、上記ステップS1において、キャッシュヒットしなかった場合、つまりミスヒットである場合には、主制御部4は、アドレス変換テーブル9を参照することにより、不揮発性メモリ3の読み出し対象の物理ブロック14及び物理ページ14aを判別する。そして、主制御部4は、判別した物理ページ14aに基づいて、メモリI/F 7を制御して当該物理ページ14aからデータをバッファ6に読み出し、さらに、主制御部4は、ホストI/F 5を制御してバッファ6からホスト機器51にデータを出力する(ステップS3)。
続いて、主制御部4は、上記ステップS3にてデータが読み出された物理ブロック14に対応する読み出し回数テーブル11のカウンタをインクリメントする(ステップS4)。つまり、主制御部4は、データが読み出された物理ページ14aのページ数分の回数を、対応する列11bの読み出し回数に加算する。
次に、主制御部4では、回数比較部40が上記ステップS4にて加算された後の読み出し回数と、上記規定回数との比較を行って、当該読み出し回数が規定回数に達したかどうかについて判別する(ステップS5)。そして、読み出し回数が規定回数に達していなければ、主制御部4は、キャッシュメモリ12に対して、上記ステップS3で読み出したデータをキャッシュするかどうかを判定する読み出しキャッシュ処理を実行して(ステップS6)、読み出し動作を終了する。
一方、上記ステップS5において、読み出し回数が規定回数に達したことが判別されると、主制御部4は、次にそのデータの読み出し動作が行われると、その読み出し回数が規定回数を超過して、リードディスターブによるビット誤りが、対応する物理ブロック14に生じるおそれがあると判断し、データ移動指示部41が当該データを別の物理ブロック14に移動させるデータ移動処理を実行して(ステップS7)、読み出し動作を終了する。
[データ移動処理]
次に、図9〜図13を参照して、上記ステップS7のデータ移動処理について具体的に説明する。
図9は、図8に示したデータ移動処理の具体的な動作を示すフローチャートである。
まず、上記データ移動処理が実行される前の状態として、読み出し回数テーブル11、書き換え回数テーブル10、アドレス変換テーブル9、及び不揮発性メモリ3が、それぞれ図10(a)、(b)、(c)、及び(d)に示す状態である場合を例示して説明する。すなわち、不揮発性メモリ3では、図10(d)に示すように、ブロック番号0002の物理ブロック14に、論理ブロックのブロック番号0005の有効なデータが書き込まれており、このブロック番号0005が上記ステップS1において、ホスト機器51から指定された論理アドレスに相当するとする。また、ブロック番号0003の物理ブロック14には、無効なデータが存在しているものとする。さらに、このような不揮発性メモリ3の状態に対応して、アドレス変換テーブル9では、図10(c)に示すように、ブロック番号0005の論理ブロックに対応する物理ブロック14として、物理ブロック14のブロック番号0002が記録されている。
また、書き換え回数テーブル10では、図10(b)に示すように、列10bに、ブロック番号0002及び0003の物理ブロック14のフラグとして、有効及び無効を示すフラグがそれぞれ記録されている。また、列10cには、ブロック番号0002及び0003の物理ブロック14の書き換え回数として、それぞれ100回及び10回が記録されているとする。また、読み出し回数テーブル11には、図10(a)に示すように、ブロック番号0002及び0003の物理ブロック14の読み出し回数として、10000000回及び1000回がそれぞれ記録されているとする。また、上記ステップS5において、規定回数に到達したと判定されることによってステップS7のデータ移動処理が行われるが、ここでは規定回数が10000000回であり、ブロック番号0002の物理ブロック14の読み出し回数が上記規定回数に到達したことがデータ移動指示部41で判別されているとする。
以上のように、ブロック番号0002の物理ブロック14の読み出し回数が規定回数に到達したことが判別されているので、図9のステップS8に示すように、データ移動指示部41は、書き換え回数テーブル10の列10b及び列10cを参照して、無効な物理ブロック14のうち書き換え回数の少ない物理ブロック14を検索する。ここではブロック番号0003の物理ブロック14が無効であり、かつ、書き換え回数が最も少ない物理ブロック14として検索されたとする。
続いて、データ移動指示部41は、図9のステップS9に示すように、ステップS8で検索されたブロック番号0003の物理ブロック14をメモリI/F 7を制御して消去する。この結果、図11(d)に示すように、不揮発性メモリ3のブロック番号0003の物理ブロック14では、無効なデータが消去されている。尚、図11(a)〜(c)にそれぞれ示すように、読み出し回数テーブル11、書き換え回数テーブル10、及びアドレス変換テーブル9では、図10(a)〜(c)に示した状態から変更されていない。
次に、データ移動指示部41は、図9のステップS10に示すように、アドレス変換テーブル9から旧データとなる移動元の論理アドレスのデータが存在する物理ブロック14のアドレスを取得する。この処理は上記ステップS3での物理ブロック14の読み出し処理と同じアドレスが用いられる。具体的には、アドレス変換テーブル9のブロック番号0005の論理ブロックに対応する物理ブロック14のブロック番号が0002と記録されているので、移動元の物理ブロック14のアドレスとして0002が取得される。
続いて、データ移動指示部41は、図9のステップS11に示すように、変数Xに先頭ページを設定し、さらにステップS10で取得した移動元である旧データの存在する物理ブロック14のページXのデータをバッファ6に読み出させて、ステップS8で検索した移動先となる消去済みの物理ブロック14のページXに、バッファ6に読み出させたデータを書き込ませる(ステップS12)。
次に、データ移動指示部41は、図9のステップS13に示すように、変数Xが最終ページを示しているか否かについて判定して、最終ページでなければ、変数Xをインクリメントして(ステップS14)、ステップS12に戻ってページの移動処理を繰り返す。
一方、上記ステップS13において、最終ページであることが判別されると、データ移動指示部41はデータの移動処理が終了したと判断する。この結果、図12(d)に示すように、不揮発性メモリ3のブロック番号0003の物理ブロック14では、ブロック番号0005の論理ブロックのデータが移動されて保持されている。尚、図12(a)〜(c)にそれぞれ示すように、読み出し回数テーブル11、書き換え回数テーブル10、及びアドレス変換テーブル9では、図10(a)〜(c)に示した状態から変更されていない。
続いて、主制御部4は、図9のステップS15に示すように、書き換え回数テーブル10を更新する。その後、主制御部4は、アドレス変換テーブル9を更新し(ステップS16)、さらに、読み出し回数テーブル11のブロック番号0003の物理ブロック14に対応するカウンタをリセットさせる(ステップS17)。この結果、書き換え回数テーブル10では、図13(b)に示すように、消去が行われたブロック番号0003の物理ブロック14に対応する列10cの書き換え回数がインクリメントされて11回に変更されている。また、書き換え回数テーブル10の列10bでは、ブロック番号0002及び0003の物理ブロック14のフラグがそれぞれ無効及び有効に更新されている。これにより、不揮発性メモリ3では、ブロック番号0002の物理ブロック14にもブロック番号0005の論理ブロックのデータ(旧データ)が存在しているが、メモリーカード1では、以降無効なデータの存在する物理ブロック14として認識される。
また、アドレス変換テーブル9では、ブロック番号0005の論理ブロックに対応する物理ブロック14がブロック番号0003に更新される。また、読み出し回数テーブル11では、消去が行われたブロック番号0003の物理ブロック14の読み出し回数が0回にリセットされる。
[読み出しキャッシュ処理]
続いて、図14を参照して、上記ステップS6の読み出しキャッシュ処理について具体的に説明する。
図14は、図8に示した読み出しキャッシュ処理の具体的な動作を示すフローチャートである。
図14のステップS18に示すように、キャッシュ判定部42aは、キャッシュテーブル13の列13bを参照して、キャッシュメモリ12内に無効なページが存在しているか否かについて判定する。具体的には、キャッシュ判定部42aは、無効なページが存在していると判定すると、キャッシュメモリ12に空きありと判断して、その判定結果をキャッシュ指示部42bに通知する。そして、キャッシュメモリ12に空きがあることがキャッシュ判定部42aから通知されると、キャッシュ指示部42bは、キャッシュメモリ12にデータをキャッシュさせて、キャッシュテーブル13に登録する(ステップS19)。
具体的には、キャッシュ指示部42bは、上記ステップS3で読み出されたデータを、ステップS18で検索された無効なページに対しコピーすることでデータキャッシュさせる。さらに、キャッシュ指示部42bは、データキャッシュさせたキャッシュメモリ12のページアドレスを基に、キャッシュテーブル13の対応する列13bのフラグを有効に更新させ、対応する列13cの論理ページにページ単位の論理アドレスを記録させ、対応する列13dの読み出し回数に0回を記録させる。
一方、上記ステップS18において、無効なページが存在していないことが判定されると、キャッシュ判定部42aはキャッシュメモリ12に空きなしと判断する。さらに、キャッシュ判定部42aは、ステップS3で読み出されたデータが存在する物理ブロック14の読み出し回数を読み出し回数テーブル11から取得する(ステップS20)。
続いて、キャッシュ判定部42aは、キャッシュテーブル13の列13dを参照して、読み出し回数が最も少ない、つまりキャッシュヒット回数が最も少ないキャッシュメモリ12内のページを検索し、かつ、アドレス変換テーブル9を参照することにより、検索したページに対応する不揮発性メモリ3の物理ブロック14のアドレスを求める(ステップS21)。その後、キャッシュ判定部42aは、ステップS21で求めたアドレスを用いることにより、検索したページにキャッシュされているキャッシュデータに対応する不揮発性メモリ3の物理ブロック14の読み出し回数を読み出し回数テーブル11から取得する(ステップS22)。
次に、キャッシュ判定部42aは、ステップS20で取得したデータに対応する読み出し回数と、ステップS22で取得したキャッシュデータに対応する読み出し回数との比較を行い(ステップS23)、キャッシュデータに対応する読み出し回数の方が多ければ、キャッシュ判定部42aは、ステップS3で読み出されたデータをキャッシュする必要がないと判断して、読み出しキャッシュ処理を終了する。
一方、ステップS23において、キャッシュデータに対応する読み出し回数の方が少なければ、キャッシュ判定部42aは、ステップS3で読み出されたデータをキャッシュした方がよいと判定し、その判定結果をキャッシュ指示部42bに通知する。これにより、上記ステップS19の処理が、キャッシュ指示部42bにより実行される。但し、このステップS19では、キャッシュ指示部42bはステップS21で検索された検索ページに対して、ステップS3で読み出されたデータをコピーすることでデータキャッシュさせる。さらに、キャッシュ指示部42bは、データキャッシュさせた上記検索ページについてのキャッシュメモリ12のページアドレスを基に、キャッシュテーブル13の対応する列13bのフラグを有効に更新させ、対応する列13cの論理ページにページ単位の論理アドレスを記録させ、対応する列13dの読み出し回数に0回を記録させる。
以上のようにデータをキャッシュするかどうかの判定処理は、キャッシュしようとしているページの不揮発性メモリ3での物理ブロック14単位での読み出し回数(ステップS20にて取得)と、キャッシュされているページのキャッシュ元である不揮発性メモリ3での物理ブロック14単位での読み出し回数(ステップS22)を用いて、実行される。
[データの書き込み動作]
次に、図15を参照して、データの書き込み動作について具体的に説明する。
図15は、上記メモリーカードでの書き込み動作を示すフローチャートである。
図15において、主制御部4に対し、ホスト機器51から論理アドレスを指定したデータの書き込み動作が要求されると、主制御部4は、書き換え回数テーブル10の列10b及び列10cを参照して、無効な物理ブロック14のうち、書き換え回数の少ない物理ブロック14を検索する(ステップS24)。その後、主制御部4は、メモリI/F 7を制御することにより、ステップS24で検索した物理ブロック14に書き込まれているデータを消去する(ステップS25)。
次に、主制御部4は、ステップS25でデータ消去を施した物理ブロック14に対して、ホスト機器51からホストI/F 5を経由してバッファ6に転送されているデータを書き込み(ステップS26)、さらには、主制御部4は、当該物理ブロック14に対応する、書き換え回数テーブル10の列10bのフラグを有効に変更するとともに、列10cの書き換え回数をインクリメントして更新する(ステップS27)。
続いて、主制御部4は、ステップS26でデータを書き込んだ物理ブロック14に関して、アドレス変換テーブル9を更新し(ステップS28)、さらには、主制御部4は、読み出し回数テーブル11の当該物理ブロック14に対応する列11bの読み出し回数を0回に変更する(ステップS29)。
その後、主制御部4では、キャッシュ解放指示部42cがステップS26で書き込まれたデータ(つまり、今回書き込み動作が要求されたデータ)がキャッシュメモリ12にキャッシュデータとして保持されているか否かについて判別し、かつ、キャッシュメモリ12に保持されているときには、そのキャッシュデータを解放するキャッシュ解放処理を実行する(ステップS30)。具体的には、キャッシュ解放指示部42cは、キャッシュテーブル13の列13cを参照することにより、上記データに含まれる論理ページが存在するか否かについて検索し、存在している場合には、そのページの列13bのフラグを無効に変更する。これはステップS26でのデータの書き込み処理によって、ステップS29で読み出し回数テーブル11の読み出し回数が0回にリセットされるデータについては、リードディスターブによるビット誤りを回避するために、キャッシュメモリ12にデータをキャッシュする必要がないからである。つまり、本実施形態では、キャッシュ解放指示部42cが書き込まれたデータに対応するキャッシュを必ず解放するようになっている。これにより、キャッシュメモリ12の有効利用を容易に図ることができ、当該キャッシュメモリ12の利用効率を高めることができる。
また、このキャッシュ解放処理は、ホスト機器51から書き込み動作が要求されたデータが物理ブロック14の容量、256Kバイトよりも小さく、データを書き換えるためにホスト機器51からのデータ以外のデータをメモリーカード1内で巻き込んで移動による書き込みの場合も同様である。つまり、本実施形態において、キャッシュ解放処理の対象となるデータは、メモリーカード1外部のホスト機器51からのデータだけでなく、不揮発性メモリ3の複数の物理ブロック14の間でのデータ移動されるデータを含んだものであり、不揮発性メモリ3の物理ブロックに14に対して書き込みが行われた全てのデータについて、キャッシュ解放を実施できるか否かついて判別される。このように、本実施形態では、互いに異なる物理ブロック14の間でデータ移動が行われたときも、キャッシュ解放処理を実行しているので、キャッシュメモリ12の利用効率をより確実に高めることができる。
以上のように、本実施形態のコントローラ(メモリーコントローラ)2では、ホスト機器(外部)51からの論理アドレスによって指定された不揮発性メモリ3の物理ブロック14からデータを読み出す読み出し動作が要求されたときに、回数比較部40が当該物理ブロック14の読み出し回数を読み出し回数テーブル11から取得して、取得した読み出し回数と上限回数記憶部43内の規定回数(所定の閾値)とを比較している。また、取得した読み出し回数が規定回数に達したことが判別されたときに、データ移動指示部41が、論理アドレスによって指定された不揮発性メモリ3の物理ブロック14とは異なる別の物理ブロック14に対し、読み出し動作が要求されたデータを移動することを指示している。これにより、本実施形態のコントローラ2では、不揮発性メモリ3にNANDタイプのフラッシュメモリが用いられたときでも、上記従来例と異なり、リードディスターブによるビット誤りの発生を確実に防ぐことができる。また、このようにリードディスターブによるビット誤りの発生を確実に防ぐことができるコントローラ2が用いられているので、信頼性の高いメモリーカード(不揮発性記憶装置)1及び不揮発性記憶システム50を容易に構成することができる。
また、本実施形態では、キャッシュ判定部42aがステップS23に示した読み出し回数の比較を行うとともに、読み出し動作が要求されたデータに対応する読み出し回数がキャッシュメモリ(出力メモリ)12内のキャッシュデータに対応する読み出し回数よりも多いことが判定されたときに、キャッシュ指示部42bが読み出し動作が要求されたデータをキャッシュメモリ12にキャッシュさせている。これにより、本実施形態では、キャッシュメモリ12にキャッシュされるデータを適切に選ぶことができ、キャッシュメモリ12の利便性(データキャッシュ機能)を向上させることができる。さらに、本実施形態では、ステップS21に示したように、キャッシュ判定部42aが複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択し検索しているので、キャッシュメモリ12にキャッシュされるデータをより適切に選ぶことが可能となり、キャッシュメモリ12の利便性を容易に向上させることができる。
[第2の実施形態]
図16は、本発明の第2の実施形態にかかるメモリーコントローラの主制御部の具体的な機能ブロックを示すブロック図である。図において、本実施形態と上記第1の実施形態との主な相違点は、上限回数記憶部に代えて、不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部を主制御部に設けるとともに、キャッシュ判定部が、関数設定部に設定された関数を用いて、データキャッシュの要否を判定する点である。なお、上記第1の実施形態と共通する要素については、同じ符号を付して、その重複した説明を省略する。
すなわち、図16に示すように、本実施形態の主制御部4には、関数設定部44が設けられており、不揮発性メモリ3における、書き換え回数と許容読み出し回数との関係を示す関数が設定されるようになっている。また、キャッシュ制御部42には、第1の実施形態のキャッシュ判定部42の機能が付与されるとともに、関数設定部44に設定されている関数を用いて、データキャッシュの要否を判定するキャッシュ判定部42a’とが設けられている。
関数設定部44には、図17に例示するように、書き換え回数に対して許容読み出し回数が単調減少する直線60で規定される関数が設定されている。この関数は、不揮発性メモリ3の物理ブロック14単位での書き換え回数に対する、不揮発性メモリ3の物理ページ14a単位でのリードディスターブストレスに対する耐性に応じて定められたものであり、回数比較部40での比較処理に用いられるようになっており、この処理結果を反映したデータ移動指示部41での処理動作をより適切に行わせることができるようになっている。また、この関数は、キャッシュ判定部42a’での処理動作にも使用されるようになっており、この判定結果を反映した読み出しキャッシュ処理をより適切に行わせることができるようになっている。
キャッシュ判定部42a’は、ホスト機器51からデータの読み出し動作が要求されたときに、キャッシュテーブル13を参照することにより、キャッシュメモリ12にデータキャッシュ可能なページが存在するか否かについて判定して、その判定結果をキャッシュ指示部42bに通知する。
また、キャッシュ判定部42a’は、キャッシュメモリ12にデータキャッシュ可能なページが存在しないと判定したときには、読み出し回数テーブル11から読み出し動作が要求されたデータに対応する読み出し回数を取得する。また、キャッシュ判定部42a’は、当該読み出し動作が要求されたデータに対応する書き換え回数を書き換え回数テーブル10から取得し、かつ、当該読み出し動作が要求されたデータに対応する許容読み出し回数を、取得した書き換え回数を基に関数設定部44から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該読み出し動作が要求されたデータについての残許容読み出し回数を算出する。
さらに、キャッシュ判定部42a’は、読み出し回数テーブル11及びキャッシュテーブル13を参照することにより、キャッシュメモリ12にキャッシュされているキャッシュデータに対応する読み出し回数を取得する。また、キャッシュ判定部42a’は、当該キャッシュデータに対応する書き換え回数を書き換え回数テーブル10から取得し、かつ、当該キャッシュデータに対応する許容読み出し回数を、取得した書き換え回数を基に関数設定部44から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該キャッシュデータについての残許容読み出し回数を算出する。そして、キャッシュ判定部42a’は、読み出し動作が要求されたデータ及びキャッシュデータについての残許容読み出し回数どうし比較して、データキャッシュの要否を判定して、その判定結果をキャッシュ指示部42bに通知する。
また、キャッシュ判定部42a’は、キャッシュメモリ12に複数のキャッシュデータが存在している場合には、複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択するように構成されている。
キャッシュ指示部42bは、キャッシュ判定部42a’から、キャッシュメモリ12にデータキャッシュ可能なページが存在していること、または読み出し動作が要求されたデータに対応する残許容読み出し回数がキャッシュデータに対応する残許容読み出し回数よりも少ないことが通知されたときに、読み出し動作が要求されたデータをキャッシュメモリ12にキャッシュさせるようになっている。
[データの読み出し動作]
以下、図18を参照して、本実施形態でのデータの読み出し動作について説明する。
図18は、図16に示した主制御部による読み出し動作を示すフローチャートである。
図18において、本実施形態の主制御部4では、ステップS1、S3、及びS4に示した動作が終了されると、回数比較部40が読み出し回数テーブル11からステップS4にて加算された後の物理ブロック14の読み出し回数を取得するとともに、当該物理ブロック14の書き換え回数を書き換え回数テーブル10から取得する(ステップS31)。その後、回数比較部40は、ステップS31で取得した書き換え回数を基に関数設定部43から許容読み出し回数を取得する(ステップS32)。具体的には、回数比較部40は、ステップS31において、例えば図17に示す書き換え回数W1を取得し、ステップS32において、当該書き換え回数W1から求められる許容読み出し回数r1を取得する。
続いて、回数比較部40は、取得した読み出し回数及び許容読み出し回数の比較を行って、当該読み出し回数が許容読み出し回数に達したかどうかについて判別する(ステップS33)。そして、読み出し回数が許容読み出し回数に達していなければ、主制御部4は、キャッシュメモリ12に対して、ステップS3で読み出したデータをキャッシュするかどうかを判定する読み出しキャッシュ処理を実行して(ステップS6)、読み出し動作を終了する。
一方、上記ステップS33において、読み出し回数が許容読み出し回数に達したことが判別されると、主制御部4は、第1の実施形態のものと同様に、データ移動指示部41によるデータ移動処理を実行させて、ステップS3で読み出したデータを元の物理ブロック14とは異なる別の物理ブロック14に移動させて、読み出し動作を終了する。
[読み出しキャッシュ処理]
続いて、図19を参照して、本実施形態での読み出しキャッシュ処理について具体的に説明する。
図19は、図18に示した読み出しキャッシュ処理の具体的な動作を示すフローチャートである。
図18において、本実施形態の主制御部4では、キャッシュ判定部42a’がステップS18に示した動作を実行して、キャッシュメモリ12での空き(無効なページ)の有無を判定する。そして、キャッシュメモリ12に空きがあることを判別したときには、第1の実施形態と同様に、キャッシュ指示部42bによってステップS19の処理が実行され、上記ステップS3で読み出されたデータがキャッシュメモリ12にキャッシュされて、キャッシュテーブル13に登録される。
一方、上記ステップS18において、無効なページが存在していないことが判定されると、キャッシュ判定部42a’はキャッシュメモリ12に空きなしと判断する。さらに、キャッシュ判定部42a’は、ステップS3で読み出されたデータが存在する物理ブロック14の読み出し回数を読み出し回数テーブル11から取得するとともに、当該物理ブロック14の書き換え回数を書き換え回数テーブル10から取得する(ステップS34)。
続いて、キャッシュ判定部42a’は、キャッシュテーブル13の列13dを参照して、読み出し回数が最も少ない、つまりキャッシュヒット回数が最も少ないキャッシュメモリ12内のページを検索し、かつ、アドレス変換テーブル9を参照することにより、検索したページに対応する不揮発性メモリ3の物理ブロック14のアドレスを求める(ステップS21)。
次に、キャッシュ判定部42a’は、ステップS21で求めたアドレスを用いることにより、検索したページにキャッシュされているキャッシュデータに対応する不揮発性メモリ3の物理ブロック14の読み出し回数を読み出し回数テーブル11から取得する。また、キャッシュ判定部42a’は、ステップS21で求めたアドレスを用いることにより、検索したページにキャッシュされているキャッシュデータに対応する不揮発性メモリ3の物理ブロック14の書き換え回数を書き換え回数テーブル10から取得する(ステップS35)。
続いて、キャッシュ判定部42a’は、ステップ3で読み出されたデータとステップ21で求められたキャッシュデータの各々に関して、許容読み出し回数と読み出し回数との差分、つまり上記残許容読み出し回数を求めて比較する(ステップS36)。ステップ3で読み出されたデータについての残許容読み出し回数がステップ21で求められたキャッシュデータについての残許容読み出し回数よりも多ければ、キャッシュ判定部42a’は、ステップ3で読み出されたデータをキャッシュする必要がないと判断して、読み出しキャッシュ処理を終了する。
一方、ステップS36において、ステップ3で読み出されたデータについての残許容読み出し回数がステップ21で求められたキャッシュデータについての残許容読み出し回数よりも少なければ、キャッシュ判定部42a’は、ステップS3で読み出されたデータをキャッシュした方がよいと判定して、その判定結果をキャッシュ指示部42bに通知する。これにより、上記ステップS19の処理が、キャッシュ指示部42bにより実行される。但し、このステップS19では、キャッシュ指示部42bはステップS21で検索された検索ページに対して、ステップS3で読み出されたデータをコピーすることでデータキャッシュさせる。さらに、キャッシュ指示部42bは、データキャッシュさせた上記検索ページについてのキャッシュメモリ12のページアドレスを基に、キャッシュテーブル13の対応する列13bのフラグを有効に更新させ、対応する列13cの論理ページにページ単位の論理アドレスを記録させ、対応する列13dの読み出し回数に0回を記録させる。
具体的には、キャッシュ判定部42a’は、ステップS34において、ステップS3で読み出されたデータに対応する書き換え回数及び許容読み出し回数として、例えば図17に示す書き換え回数W1及び当該書き換え回数W1から求められる許容読み出し回数r1をそれぞれ取得する。また、キャッシュ判定部42a’は、読み出し回数テーブル11から当該データに対応する読み出し回数r1’を取得し、許容読み出し回数r1と読み出し回数r1’との差の値を演算して、ステップS3で読み出されたデータについての残許容読み出し回数を求める。
さらに、キャッシュ判定部42a’は、ステップS35において、ステップS21で検索されたキャッシュデータに対応する書き換え回数及び許容読み出し回数として、例えば図17に示す書き換え回数W2及び当該書き換え回数W2から求められる許容読み出し回数r2をそれぞれ取得する。また、キャッシュ判定部42a’は、読み出し回数テーブル11から当該キャッシュデータに対応する読み出し回数r2’を取得し、許容読み出し回数r2と読み出し回数r2’との差の値を演算して、ステップS21で検索されたキャッシュデータについての残許容読み出し回数を求める。そして、キャッシュ判定部42a’は、ステップS36において、ステップS3で読み出されたデータ及びステップS21で検索されたキャッシュデータについての残許容読み出し回数どうしの比較を行う。
以上の構成により、本実施形態は、上記第1の実施形態のものと同様な作用効果を奏することができる。また、本実施形態では、回数比較部40がデータの読み出し動作が要求された物理ブロック14の書き換え回数を書き換え回数テーブル10から求め、かつ、求めた書き換え回数を基に関数設定部44から許容読み出し回数を取得して、当該物理ブロック14の読み出し回数との比較を行っている。さらに、データ移動指示部41は、読み出し回数が許容読み出し回数に達したときに、読み出し動作が要求されたデータを別の物理ブロック14に移動させている。これにより、本実施形態では、第1の実施形態のものに比べて、リードディスターブによるビット誤りの発生をより確実に防ぐことができる。
すなわち、不揮発性メモリ3では、リードディスターブによるビット誤りの発生は、書き換え回数にも大きく依存する。言い換えれば、不揮発性メモリ3では、書き換え回数の少ない物理ブロック14の方が良好なリードディスターブ特性であり、書き換え回数が増加すればするほどリードディスターブ特性が低下していくという傾向がある。従って、ステップS31〜S33に示したように、読み出し回数と書き換え回数の両方を使用して、上記ビット誤りを防ぐために、データを移動するか否かを判断する方がより適切な判定を行うことができる。
具体的には、本実施形態では、例えば書き換え回数が100回であれば、10000000回の許容読み出し回数を閾値とし、書き換え回数が1000000回になれば、1000回の許容読み出し回数を閾値として、物理ブロック14の使用状態に応じた適切な閾値が、回数比較部40での比較処理に用いられて、より適切な判定を行うことができる。
また、本実施形態では、キャッシュ判定部42a’が、読み出し動作が要求されたデータ及びキャッシュデータについての残許容読み出し回数どうしを比較しているので、不揮発性メモリ3のリードディスターブストレスの程度に応じて、適切なキャッシュデータの選択を行うことができ、リードディスターブによるビット誤りの発生をより確実に防ぐことができる。
尚、上記の実施形態はすべて例示であって制限的なものではない。本発明の技術的範囲は特許請求の範囲によって規定され、そこに記載された構成と均等の範囲内のすべての変更も本発明の技術的範囲に含まれる。
例えば、上記の説明では、メモリーカード(不揮発性記憶装置)に本発明を適用した場合について説明したが、本発明のメモリーコントローラはこれに限定されるものではなく、フラッシュディスクなどの他の不揮発性記憶装置及びこれを含んだ不揮発性記憶システムに適用することもできる。
また、上記の説明では、読み出し動作が要求されたデータについての上記読み出し回数が、規定回数(所定の閾値)または許容読み出し回数に達したことが回数比較部により判別されたときに、データ移動指示部が当該データを不揮発性メモリの別の物理ブロックに移動することを指示する構成について説明した。しかしながら、本発明は、不揮発性メモリの各物理ブロックに含まれた物理ページについて、物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルを設けるとともに、主制御部が読み出し回数テーブルを参照して、不揮発性メモリに対するデータの読み出し動作を制限するものであれば何等限定されない。
但し、上記の各実施形態のように、別の物理ブロックにデータを移動させる場合の方が、不揮発性メモリでのデータの保持性が低下するのを防止することができ、かつ、リードディスターブによるビット誤りの発生を確実に防ぐことができる点で好ましい。
また、上記の説明では、読み出し対象の物理ページからデータを読み出した後、回数比較部が読み出し回数と所定の閾値または許容読み出し回数との比較を行う場合について説明したが、本発明は、データの読み出し動作が要求されたときに上記の比較が行われるものであればよく、データの読み出し動作よりも前に当該比較を実行するものでもよい。
また、上記の説明では、キャッシュメモリ(出力メモリ)を有するコントローラ(メモリーコントローラ)について説明したが、本発明のメモリーコントローラはこれに限定されるものではなく、出力メモリが設置されていないメモリーコントローラにも適用することができる。
但し、上記の各実施形態のように、出力メモリを設置してデータをキャッシュ可能に構成する場合の方が、データの読み出し動作が外部から要求されたときに、当該データを不揮発性メモリから読み出すことなく、ホスト機器(外部)に出力することが可能となり、不揮発性メモリでのリードディスターブによる劣化を効率よく抑制することができる点で好ましい。
また、上記の説明では、不揮発性メモリにNANDタイプのフラッシュメモリを用いた場合について説明したが、本発明はこれに限定されるものではなく、MONOS型やAND型などの他のタイプのフラッシュメモリにも適用することができる。
本発明は、リードディスターブによるビット誤りが不揮発性メモリに発生するのを確実に防止することができるメモリーコントローラ、及びデータの信頼性が向上された不揮発性メモリを有する不揮発性記憶装置並びに不揮発性記憶システムに有用である。
本発明の第1の実施形態にかかるメモリーコントローラを使用したメモリーカード及び不揮発性記憶システムの要部構成を示すブロック図である。 図1に示した主制御部の具体的な機能ブロックを示すブロック図である。 図1に示した不揮発性メモリの物理ブロックの構成を示す図である。 図1に示したアドレス変換テーブルの構成を示す図である。 図1に示した書き換え回数テーブルの構成を示す図である。 図1に示した読み出し回数テーブルの構成を示す図である。 図1に示したキャッシュテーブルの構成を示す図である。 上記メモリーカードでの読み出し動作を示すフローチャートである。 図8に示したデータ移動処理の具体的な動作を示すフローチャートである。 (a)、(b)、(c)及び(d)は、上記データ移動処理が行われる前における、読み出し回数テーブル、書き換え回数テーブル、アドレス変換テーブル、及び不揮発性メモリの具体的な状態をそれぞれ説明する図である。 (a)、(b)、(c)及び(d)は、図9のステップS9の動作が行われた後における、読み出し回数テーブル、書き換え回数テーブル、アドレス変換テーブル、及び不揮発性メモリの具体的な状態をそれぞれ説明する図である。 (a)、(b)、(c)及び(d)は、図9のステップS15の動作が行われる前における、読み出し回数テーブル、書き換え回数テーブル、アドレス変換テーブル、及び不揮発性メモリの具体的な状態をそれぞれ説明する図である。 (a)、(b)、(c)及び(d)は、図9のステップS17の動作が行われた後における、読み出し回数テーブル、書き換え回数テーブル、アドレス変換テーブル、及び不揮発性メモリの具体的な状態をそれぞれ説明する図である。 図8に示した読み出しキャッシュ処理の具体的な動作を示すフローチャートである。 上記メモリーカードでの書き込み動作を示すフローチャートである。 本発明の第2の実施形態にかかるメモリーコントローラの主制御部の具体的な機能ブロックを示すブロック図である。 上記不揮発性メモリでの書き換え回数と許容読み出し回数との相関関係の具体例を示すグラフである。 図16に示した主制御部による読み出し動作を示すフローチャートである。 図18に示した読み出しキャッシュ処理の具体的な動作を示すフローチャートである。
符号の説明
1 メモリーカード
2 コントローラ(メモリーコントローラ)
3 不揮発性メモリ
4 主制御部
40 回数比較部
41 データビット誤り指示部
42a、42a’ キャッシュ判定部
42b キャッシュ指示部
42c キャッシュ解放指示部(出力メモリ解放指示部)
43 関数設定部
9 アドレス変換テーブル
10 書き換え回数テーブル
11 読み出し回数テーブル
12 キャッシュメモリ(出力メモリ)
13 キャッシュテーブル(出力テーブル)
14 物理ブロック
14a 物理ページ
50 不揮発性記憶システム
51 ホスト機器

Claims (18)

  1. 複数の物理ブロックを有する不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラであって、
    前記論理アドレスと前記物理ブロックのアドレスとを変換するアドレス変換テーブルと、
    前記論理アドレスが入力されるとともに、前記アドレス変換テーブルを参照して、前記不揮発性メモリに対するデータの書き込み動作及び読み出し動作を制御する主制御部と、
    前記不揮発性メモリの物理ブロックに格納されているデータをキャッシュ可能に構成されるとともに、前記主制御部に対して外部からデータの読み出し動作が要求されたときに、前記不揮発性メモリからデータを読み出すことなく当該データを外部に出力するための出力メモリと、
    前記出力メモリにキャッシュされているキャッシュデータの読み出し回数を管理する出力テーブルを備え、
    前記複数の各物理ブロックに含まれた複数の物理ページについて、前記物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設けられ、
    前記主制御部には、外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を求めて、前記読み出し動作が要求されたデータに対応する読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
    前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する読み出し回数が前記キャッシュデータに対応する読み出し回数よりも多いことが判定されたときに、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられ、
    前記主制御部は、前記読み出し回数テーブルを参照して、前記不揮発性メモリに対するデータの読み出し動作を制限する、
    ことを特徴とするメモリーコントローラ。
  2. 前記主制御部には、前記不揮発性メモリの物理ブロックへのデータの書き込み動作が要求されたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対して当該データのキャッシュを開放することを指示する出力メモリ解放指示部が設けられている請求項に記載のメモリーコントローラ。
  3. 前記出力メモリ解放指示部は、前記不揮発性メモリの互いに異なる物理ブロックの間でデータの移動が行われたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対し当該データのキャッシュを開放することを指示する請求項に記載のメモリーコントローラ。
  4. 前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択する請求項に記載のメモリーコントローラ。
  5. 前記主制御部には、外部からの論理アドレスによって指定された前記不揮発性メモリの物理ブロックからデータを読み出す読み出し動作が要求されたときに、当該物理ブロックの読み出し回数を前記読み出し回数テーブルから取得して、取得した読み出し回数と所定の閾値とを比較する回数比較部と、
    前記回数比較部により、前記取得した読み出し回数が前記所定の閾値に達したことが判別されたときに、前記論理アドレスによって指定された前記不揮発性メモリの物理ブロックとは異なる別の物理ブロックに対し、前記読み出し動作が要求されたデータを移動することを指示するデータ移動指示部とが設けられている請求項1〜のいずれか1項に記載のメモリーコントローラ。
  6. 複数の物理ブロックを有する不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラであって、
    前記論理アドレスと前記物理ブロックのアドレスとを変換するアドレス変換テーブルと、
    前記論理アドレスが入力されるとともに、前記アドレス変換テーブルを参照して、前記不揮発性メモリに対するデータの書き込み動作及び読み出し動作を制御する主制御部と、
    前記不揮発性メモリの物理ブロックに格納されているデータをキャッシュ可能に構成されるとともに、前記主制御部に対して外部からデータの読み出し動作が要求されたときに、前記不揮発性メモリからデータを読み出すことなく当該データを外部に出力するための出力メモリと、
    前記出力メモリにキャッシュされているキャッシュデータの読み出し回数を管理する出力テーブルと、
    前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
    前記複数の各物理ブロックに含まれた複数の物理ページについて、前記物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設けられ、
    前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
    外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得し、前記読み出し動作が要求されたデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記読み出し動作が要求されたデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該読み出し動作が要求されたデータについての残許容読み出し回数を算出するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を取得し、前記キャッシュデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記キャッシュデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該キャッシュデータについての残許容読み出し回数を算出して、前記読み出し動作が要求されたデータについての残許容読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
    前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する残許容読み出し回数が前記キャッシュデータに対応する残許容読み出し回数よりも少ない場合に、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられ、
    前記主制御部は、前記読み出し回数テーブルを参照して、前記不揮発性メモリに対するデータの読み出し動作を制限する、
    ことを特徴とするメモリーコントローラ。
  7. 前記主制御部には、前記不揮発性メモリの物理ブロックへのデータの書き込み動作が要求されたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対して当該データのキャッシュを開放することを指示する出力メモリ解放指示部が設けられている請求項に記載のメモリーコントローラ。
  8. 前記出力メモリ解放指示部は、前記不揮発性メモリの互いに異なる物理ブロックの間でデータの移動が行われたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対し当該データのキャッシュを開放することを指示する請求項に記載のメモリーコントローラ。
  9. 前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択する請求項に記載のメモリーコントローラ。
  10. 複数の物理ブロックを有する不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラであって、
    前記論理アドレスと前記物理ブロックのアドレスとを変換するアドレス変換テーブルと、
    前記論理アドレスが入力されるとともに、前記アドレス変換テーブルを参照して、前記不揮発性メモリに対するデータの書き込み動作及び読み出し動作を制御する主制御部と、
    前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
    前記複数の各物理ブロックに含まれた複数の物理ページについて、前記物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設けられ、
    前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
    外部からの論理アドレスによって指定された前記不揮発性メモリの物理ブロックからデータを読み出す読み出し動作が要求されたときに、当該物理ブロックの読み出し回数を前記読み出し回数テーブルから取得するとともに、当該物理ブロックの書き換え回数を前記書き換え回数テーブルから求め、かつ、求めた書き換え回数を基に前記関数設定部から許容読み出し回数を取得して、取得した読み出し回数と取得した許容読み出し回数とを比較する回数比較部と、
    前記回数比較部により、前記取得した読み出し回数が前記許容読み出し回数に達したことが判別されたときに、前記論理アドレスによって指定された前記不揮発性メモリの物理ブロックとは異なる別の物理ブロックに対し、前記読み出し動作が要求されたデータを移動することを指示するデータ移動指示部とが設けられ、
    前記主制御部は、前記読み出し回数テーブルを参照して、前記不揮発性メモリに対するデータの読み出し動作を制限する、
    ことを特徴とするメモリーコントローラ。
  11. 前記不揮発性メモリの物理ブロックに格納されているデータをキャッシュ可能に構成されるとともに、前記主制御部に対して外部からデータの読み出し動作が要求されたときに、前記不揮発性メモリからデータを読み出すことなく当該データを外部に出力するための出力メモリと、
    前記出力メモリにキャッシュされているキャッシュデータの読み出し回数を管理する出力テーブルを備えている請求項10に記載のメモリーコントローラ。
  12. 前記主制御部には、前記不揮発性メモリの物理ブロックへのデータの書き込み動作が要求されたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対して当該データのキャッシュを開放することを指示する出力メモリ解放指示部が設けられている請求項11に記載のメモリーコントローラ。
  13. 前記出力メモリ解放指示部は、前記不揮発性メモリの互いに異なる物理ブロックの間でデータの移動が行われたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対し当該データのキャッシュを開放することを指示する請求項12に記載のメモリーコントローラ。
  14. 前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
    前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
    外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得し、前記読み出し動作が要求されたデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記読み出し動作が要求されたデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該読み出し動作が要求されたデータについての残許容読み出し回数を算出するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を取得し、前記キャッシュデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記キャッシュデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該キャッシュデータについての残許容読み出し回数を算出して、前記読み出し動作が要求されたデータについての残許容読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
    前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する残許容読み出し回数が前記キャッシュデータに対応する残許容読み出し回数よりも少ない場合に、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられている請求項10に記載のメモリーコントローラ。
  15. 前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択する請求項14に記載のメモリーコントローラ。
  16. 前記関数では、前記書き換え回数に対して前記許容読み出し回数が単調減少する請求項6、9、及び10のいずれか1項に記載のメモリーコントローラ。
  17. 複数の物理ブロックを有する不揮発性メモリ、及び
    請求項1〜16のいずれか1項に記載のメモリーコントローラ
    を備えていることを特徴とする不揮発性記憶装置。
  18. 複数の物理ブロックを有する不揮発性メモリと、前記不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラを備えた不揮発性記憶装置、及び前記不揮発性記憶装置に対して論理アドレスを指定したアクセス指示を行うホスト機器を具備する不揮発性記憶システムであって、
    前記メモリーコントローラには、請求項1〜16のいずれか1項に記載のメモリーコントローラが用いられている、
    ことを特徴とする不揮発性記憶システム。
JP2007199362A 2007-07-31 2007-07-31 メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム Expired - Fee Related JP5073402B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007199362A JP5073402B2 (ja) 2007-07-31 2007-07-31 メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007199362A JP5073402B2 (ja) 2007-07-31 2007-07-31 メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム

Publications (2)

Publication Number Publication Date
JP2009037317A JP2009037317A (ja) 2009-02-19
JP5073402B2 true JP5073402B2 (ja) 2012-11-14

Family

ID=40439181

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007199362A Expired - Fee Related JP5073402B2 (ja) 2007-07-31 2007-07-31 メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム

Country Status (1)

Country Link
JP (1) JP5073402B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101609367B1 (ko) 2009-06-29 2016-04-20 삼성전자주식회사 플래시 메모리 시스템 및 플래시 메모리의 프로그래밍 방법
US8400854B2 (en) * 2009-09-11 2013-03-19 Sandisk Technologies Inc. Identifying at-risk data in non-volatile storage
JP5883284B2 (ja) * 2011-12-13 2016-03-09 ラピスセミコンダクタ株式会社 半導体メモリ制御装置及び制御方法
KR102120825B1 (ko) 2013-01-03 2020-06-09 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
KR102164630B1 (ko) 2013-06-28 2020-10-12 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법
JP6206161B2 (ja) * 2013-12-18 2017-10-04 富士通株式会社 ストレージ制御装置、制御方法、および制御プログラム
JP6226830B2 (ja) * 2014-07-24 2017-11-08 株式会社東芝 情報処理装置、データアクセス方法およびプログラム
KR102606490B1 (ko) 2016-06-30 2023-11-30 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치
JP2019160197A (ja) * 2018-03-16 2019-09-19 富士通株式会社 ストレージ装置,制御プログラムおよび制御方法
KR102535104B1 (ko) * 2018-03-19 2023-05-23 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06215589A (ja) * 1993-01-18 1994-08-05 Hitachi Ltd 半導体メモリ
JP3176019B2 (ja) * 1995-04-05 2001-06-11 株式会社東芝 不揮発性半導体記憶部を含む記憶システム
JP4229571B2 (ja) * 2000-04-06 2009-02-25 Necエレクトロニクス株式会社 不揮発性半導体記憶装置内蔵マイクロコンピュータとその制御方法
JP2003139927A (ja) * 2001-11-06 2003-05-14 Matsushita Electric Ind Co Ltd 反射板及びこれを用いた液晶表示装置及びフォトマスク
JP4189266B2 (ja) * 2003-05-09 2008-12-03 アルプス電気株式会社 押釦スイッチ
JP4688584B2 (ja) * 2005-06-21 2011-05-25 株式会社日立製作所 ストレージ装置
JP4813264B2 (ja) * 2006-06-14 2011-11-09 株式会社日立製作所 ストレージシステム
JP4575346B2 (ja) * 2006-11-30 2010-11-04 株式会社東芝 メモリシステム

Also Published As

Publication number Publication date
JP2009037317A (ja) 2009-02-19

Similar Documents

Publication Publication Date Title
JP5073402B2 (ja) メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム
JP5612514B2 (ja) 不揮発性メモリコントローラ及び不揮発性記憶装置
JP4256175B2 (ja) 不揮発性半導体メモリ
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
JP4787266B2 (ja) スクラッチパッドブロック
US8621139B2 (en) Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same
TWI457756B (zh) 記憶體系統及其操作方法
KR101102634B1 (ko) 메모리 시스템
US7778078B2 (en) Memory system and control method thereof
JP4834676B2 (ja) オンチップ不揮発性メモリ書き込みキャッシュを使用するシステムおよび方法
US20070214309A1 (en) Nonvolatile storage device and data writing method thereof
US20090089484A1 (en) Data protection method for power failure and controller using the same
US20100011154A1 (en) Data accessing method for flash memory and storage system and controller using the same
JPWO2006067923A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法
US20090235015A1 (en) Memory system
KR20220005111A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
JP2009211215A (ja) メモリシステム
JP5300496B2 (ja) 半導体記憶装置、ホスト機器及び半導体記憶システム
JP2004303238A (ja) フラッシュメモリアクセス装置及び方法
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
KR20200116375A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
JP5494086B2 (ja) 不揮発性記憶装置および不揮発性メモリコントローラ
KR20210130341A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
JP3808842B2 (ja) 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法
JP4558054B2 (ja) メモリシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120529

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120709

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120802

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120822

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150831

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees