(57)【要約】【課題】  本発明は、コマンドセットの仕様が異なる多品種のフラッシュメモリを制御できるメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。【解決手段】  フラッシュメモリを制御するための処理の手順を定義する一連の命令であるコマンドセットを取得し、取得したコマンドセットを記憶装置に格納する。そして、フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応じて、前記記憶装置に保持されているコマンドセットを用いて前記フラッシュメモリを制御する。【選択図】図３
2007034581.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリを制御するための処理の手順を定義する一連の命令であるコマンドセットを取得するコマンドセット取得手段と、
前記コマンドセット取得手段が取得したコマンドセットを保持するコマンドセット保持手段と、
前記フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、前記フラッシュメモリに実行させるべき処理に対応するコマンドセットを前記コマンドセット保持手段から取得し、該コマンドセットに含まれる命令を実行する制御手段と、から構成される、
ことを特徴とするメモリコントローラ。
【請求項２】
前記コマンドセット取得手段は、メモリコントローラの起動時に、前記フラッシュメモリの特定のページから、当該ページに格納されているコマンドセットを読み出す、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記フラッシュメモリは、少なくとも読出処理の手順を定義するコマンドセットを前記コマンドセット取得手段が読み出すページに格納し、前記コマンドセット取得手段が読み出すページに格納されている以外のコマンドセットを他のページに格納し、
前記制御手段は、前記コマンドセット取得手段が取得した読出処理のコマンドセットを用いて、前記フラッシュメモリから前記コマンドセット取得手段が読み出すページに格納されている以外のコマンドセットを取得して、前記コマンドセット保持手段に格納する、
ことを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記コマンドセット取得手段は、メモリコントローラの起動時に、外部の記憶装置から、当該記憶装置に予め格納されている読出処理のコマンドセットを取得し、
前記フラッシュメモリは、読出処理以外の処理のコマンドセットを格納し、
前記制御手段は、前記コマンドセット取得手段が取得した読出処理のコマンドセットを用いて、前記フラッシュメモリから読出処理以外のコマンドセットを取得して、前記コマンドセット保持手段に格納する、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項５】
請求項１乃至４のいずれか１項に記載のメモリコントローラと、フラッシュメモリとを備えることを特徴とするフラッシュメモリシステム。
【請求項６】
フラッシュメモリを制御するための処理の手順を定義する一連の命令であるコマンドセットを取得するコマンドセット取得ステップと、
前記コマンドセット取得ステップで取得したコマンドセットを記憶装置に保持させるコマンドセット保持ステップと、
前記フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応じて、前記記憶装置に保持されているコマンドセットを用いて前記フラッシュメモリを制御する制御ステップと、から構成される、
ことを特徴とするフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性の記録媒体であるフラッシュメモリの開発が盛んに行われ、デジタルカメラ等の情報機器の記憶媒体として普及している。
【０００３】
このような機器によるフラッシュメモリへのアクセスを制御するために、メモリコントローラが用いられる。一般に、メモリコントローラは、読み出し、書き込み等の各種処理の手順を定義する一連のコマンドの配列であるコマンドセット（又はコマンドシーケンス）を、自己の有するＲＯＭ（Read Only Memory）等に予め格納している。そして、各種処理を実行する際には、コマンドセットを解釈して実行することで、所望の処理を実現する（例えば特許文献１参照）。
【特許文献１】特開平８−１３７７６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、フラッシュメモリは、品種によって構成や機能（例えば、キャッシュの有無、ページやブロックのサイズ、サポートするコマンドの種類等）に差異がある。
【０００５】
これに対応して、フラッシュメモリの品種毎に、別々にメモリコントローラを開発するのでは、フラッシュメモリの多様化にメモリコントローラの開発が追いつかないという状況が生じる。
【０００６】
本発明は上記の実情に鑑みてなされたもので、コマンドセットの仕様が異なる多品種のフラッシュメモリを制御できるメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の観点に係るメモリコントローラは、フラッシュメモリを制御するための処理の手順を定義する一連の命令であるコマンドセットを取得するコマンドセット取得手段と、前記コマンドセット取得手段が取得したコマンドセットを保持するコマンドセット保持手段と、前記フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、前記フラッシュメモリに実行させるべき処理に対応するコマンドセットを前記コマンドセット保持手段から取得し、該コマンドセットに含まれる命令を実行する制御手段と、から構成される、ことを特徴とする。
【０００８】
前記コマンドセット取得手段は、メモリコントローラの起動時に、前記フラッシュメモリの特定のページから、当該ページに格納されているコマンドセットを読み出してもよい。
【０００９】
前記フラッシュメモリは、少なくとも読出処理の手順を定義するコマンドセットを前記コマンドセット取得手段が読み出すページに格納し、前記コマンドセット取得手段が読み出すページに格納されている以外のコマンドセットを他のページに格納し、前記制御手段は、前記コマンドセット取得手段が取得した読出処理のコマンドセットを用いて、前記フラッシュメモリから前記コマンドセット取得手段が読み出すページに格納されている以外のコマンドセットを取得して、前記コマンドセット保持手段に格納してもよい。
【００１０】
前記コマンドセット取得手段は、メモリコントローラの起動時に、外部の記憶装置から、当該記憶装置に予め格納されている読出処理のコマンドセットを取得し、前記フラッシュメモリは、読出処理以外の処理のコマンドセットを格納し、前記制御手段は、前記コマンドセット取得手段が取得した読出処理のコマンドセットを用いて、前記フラッシュメモリから読出処理以外のコマンドセットを取得して、前記コマンドセット保持手段に格納してもよい。
【００１１】
本発明の第２の観点に係るフラッシュメモリシステムは、上記の特徴のうち、少なくともいずれか一つを有するメモリコントローラと、フラッシュメモリとを備えることを特徴とする。
【００１２】
本発明の第３の観点に係るフラッシュメモリの制御方法は、フラッシュメモリを制御するための処理の手順を定義する一連の命令であるコマンドセットを取得するコマンドセット取得ステップと、前記コマンドセット取得ステップで取得したコマンドセットを記憶装置に保持させるコマンドセット保持ステップと、前記フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応じて、前記記憶装置に保持されているコマンドセットを用いて前記フラッシュメモリを制御する制御ステップと、から構成される、ことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、メモリコントローラは、制御対象となるフラッシュメモリに適したコマンドセットを、ＲＯＭやフラッシュメモリ自身から取得し、その取得したコマンドセットによってフラッシュメモリを制御するため、コマンドセットの仕様が異なる多品種のフラッシュメモリを制御できる。
【発明を実施するための最良の形態】
【００１４】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
【００１５】
図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するコントローラ３で構成されている。
【００１６】
なお、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１７】
フラッシュメモリ２は、不揮発性メモリであり、レジスタと、メモリセルアレイと、から構成される。フラッシュメモリ２は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００１８】
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００１９】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００２０】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子が注入される。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子が排出される。
【００２１】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００２２】
このようなフラッシュメモリ２のアドレス空間を図２に示す。フラッシュメモリ２のアドレス空間は、“ページ”と“ブロック”に基づいて分割されている。
【００２３】
ページは、フラッシュメモリ２にて行われるデータ読出動作及びデータ書込動作における処理単位である。ブロックは、フラッシュメモリ２にて行われるデータ消去動作における処理単位である。
【００２４】
１つのページは、５１２バイトのユーザ領域２５と、１６バイトの冗長領域２６とを含んでいる。ユーザ領域２５は、ホストシステム４から供給されるユーザデータを格納する。
【００２５】
冗長領域２６は、エラーコレクションコード、対応論理ブロックアドレス、ブロックステータス（フラグ）等の付加データを記録するための領域である。
【００２６】
エラーコレクションコードは、ユーザ領域２５に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
【００２７】
対応論理ブロックアドレスは、１つのブロックに含まれている少なくとも１つのユーザ領域２５に有効なデータが格納されているとき、そのブロックが対応付けられている論理ブロックのアドレスを示す。
【００２８】
論理ブロックアドレスは、ホストシステム４から与えられるホストアドレスに基づいて決定されるブロックのアドレスである。一方、フラッシュメモリ２内における実際のブロックのアドレスは、物理ブロックアドレスと称される。
【００２９】
１つのブロックに含まれている全てのユーザ領域２５に有効なデータが格納されていないときには、そのブロックに含まれている冗長領域２６に、対応論理ブロックアドレスは格納されていない。
【００３０】
従って、冗長領域２６に対応論理ブロックアドレスが格納されているか否かを判定することにより、その冗長領域２６が含まれているブロックにてデータが消去されたか否かを判定することができる。冗長領域２６に対応論理ブロックアドレスが格納されていないとき、そのブロックは、データが消去された状態となっている。
【００３１】
１つのブロックは、３２個のページを含んでいる。フラッシュメモリ２では、データの上書きができない。このため、１つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれたブロック内の全ページに格納されたデータが、書き換えられなければならない。
【００３２】
１つのブロック内の全ページから読み出されたデータの少なくとも一部が変更された後、そのデータは、消去されているブロックの１つに、ブロック単位で書き込まれなければならない。
【００３３】
上記のようにデータを書き換えるにあたっては、書き換えられたデータは、以前に格納されていたブロックとは異なるブロックに書き込まれる。このため、論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、フラッシュメモリ２にてデータが書き換えられる毎に、動的に変化する。
【００３４】
従って、論理ブロックアドレスと物理ブロックアドレスとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各ページの冗長領域２６に記憶されている対応論理ブロックアドレスに基づいて作成される。なお、このような動的なアドレス管理手法は、フラッシュメモリを用いたメモリシステムでは一般的に行われている手法である。
【００３５】
ブロックステータスは、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域２６には、不良ブロックであることを示すブロックステータスが書き込まれる。
【００３６】
このようなフラッシュメモリ２は、コントローラ３から、データ、アドレス情報、ステータス情報、内部コマンド等を受信して、データの読出処理、書込処理、ブロック消去処理、転送処理等の各処理を行う。
【００３７】
ここで、内部コマンドとは、コントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、コントローラ３からの内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００３８】
コマンドセットは、フラッシュメモリ２に対する処理を実行するための、一連の内部コマンドの実行手順を定義するものである。コマンドセットにより定義される処理には、例えば、読出処理、書込処理、消去処理等がある。このコマンドセットに従って、コントローラ３は、フラッシュメモリ２に対して内部コマンド、アドレス情報、データ等を供給する。
【００３９】
本実施の形態に係るフラッシュメモリ２は、後述するオートリード処理によって読み出される特定のページに、読出処理の手順を定義するコマンドセット、フラッシュメモリ２のメーカや各種仕様を示すデバイス情報、他の処理（読出処理以外の処理）を定義するコマンドセットが格納されたアドレス等を予め格納する。このコマンドセットは、例えば、フラッシュメモリ２の製造検査時に予め当該ページに書き込まれるものとする。
【００４０】
コントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、ＲＯＭ（Read Only Memory）１２と、から構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００４１】
マイクロプロセッサ６は、ＲＯＭ１２やワークエリア８に記録されたプログラムに従って、コントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理等を定義したコマンドセットをワークエリア８から読み出してフラッシュメモリインターフェースブロック１０に供給し、フラッシュメモリインターフェースブロック１０に処理を実行させる。また、マイクロプロセッサ６は、ＲＯＭ１２に予め格納されたプログラムに従い、オートリード機能を実現する。なお、オートリード機能とは、コマンド及びアドレスを与えることなくフラッシュメモリの特定のページに格納されているデータを読み出す機能である。
【００４２】
ホストインターフェースブロック７は、ホストシステム４との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。すなわち、フラッシュメモリシステム１とホストシステム４は、外部バス１３を介して相互に接続される。かかる状態において、ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてコントローラ３の内部に取り込まれ、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００４３】
より詳細には、ホストインターフェースブロック７は、ホストシステム４より供給されるホストアドレス及び外部コマンドを一時的に格納するコマンドレジスタ、書き込み又は読み出しを行うデータのサイズを格納するセクタ数レジスタ、書き込み又は読み出しを行うデータの論理アドレスを格納するＬＢＡ（Logical Block Addressing）レジスタ、等を有する。そして、これらのレジスタを介してホストシステム４との情報の授受を行う。
【００４４】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００４５】
バッファ９は、フラッシュメモリ２から読み出したデータ及びフラッシュメモリ２に書き込むデータを一時的に保持する。
【００４６】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック１０は、アドレスレジスタ、コマンドレジスタ、命令処理ブロック等から構成される。
【００４７】
アドレスレジスタは、アクセス先の物理ブロックアドレスを格納するためのレジスタである。物理ブロックアドレスは、フラッシュメモリインターフェースブロック１０が実行する一連の制御処理でアクセスするフラッシュメモリ２内のブロックを指定するためのアドレス情報である。
【００４８】
コマンドレジスタは、コマンドセットを構成する一連の内部コマンドを格納するためのレジスタである。このコマンドセットには、コントローラ３内での処理を指示するコマンドや、フラッシュメモリ２への内部コマンド、アドレス情報等の供給を指示するコマンドが含まれている。
【００４９】
命令処理ブロックは、コマンドレジスタに格納されている一連の内部コマンドに従って、フラッシュメモリ２を制御するための内部コマンド、アドレス情報等を出力する。
【００５０】
フラッシュメモリインターフェースブロック１０は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ２に供給することにより、フラッシュメモリ２に読み出し、書き込み等を実行させる。
【００５１】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００５２】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ１２は、例えば、オートリード機能、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
【００５３】
次に、このように構成されるフラッシュメモリシステム１の起動時に実行されるコマンドセット取得処理の手順について、図３に示すフローチャートを参照して説明する。
【００５４】
コマンドセット取得処理は、フラッシュメモリシステム１の起動時に、マイクロプロセッサ６により実行される。
【００５５】
コマンドセット取得処理が開始されると、マイクロプロセッサ６は、オートリード機能を用いて、フラッシュメモリ２の特定のページから、読出処理の手順を定義するコマンドセットと、他の処理（読出処理以外の処理）を定義するコマンドセットが格納されたアドレスとを取得する（ステップＳ１００）。
【００５６】
次に、マイクロプロセッサ６は、取得した読出処理のコマンドセットをワークエリア８に格納する（ステップＳ１１０）。
【００５７】
そして、マイクロプロセッサ６は、取得した読出処理のコマンドセットとアドレスとを用いて、フラッシュメモリ２から他の処理（読出処理以外の処理）の手順を定義するコマンドセットを取得する（ステップＳ１２０）。
【００５８】
マイクロプロセッサ６は、取得した他の処理の手順を定義するコマンドセットをワークエリア８に格納し（ステップＳ１３０）、コマンドセット取得処理を終了する。
【００５９】
コントローラ３は、上記のコマンドセット取得処理を実行することにより、制御対象となるフラッシュメモリ２に適したコマンドセットを得ることができる。そして、コントローラ３の有するマイクロプロセッサ６は、以後、ホストシステム４からの要求に応じて、処理に必要なコマンドセットをワークエリア８から読み出し、コマンドセットに含まれる一連のコマンドを順次実行することにより、読出処理、書込処理等の所望の処理を実行させる。
【００６０】
以上で説明したように、本実施の形態のフラッシュメモリシステム１におけるコントローラ３は、起動時に、フラッシュメモリ２に予め書き込まれた当該フラッシュメモリ２に適したコマンドセットを取得する。そして取得したコマンドセットを用いて以後の処理を実行する。このため、コントローラ３は、汎用性が高く、様々な品種のフラッシュメモリ２を制御することが可能である。
【００６１】
また、本実施の形態のフラッシュメモリシステム１におけるフラッシュメモリ２は、オートリード機能によって読み出される特定のページに、読出処理のコマンドセットと、他の処理のコマンドセットが格納されているアドレスとを格納し、他のコマンドセットはオートリード機能では読み出せないページに格納する。そして、コントローラ３はオートリード機能で取得した読出処理のコマンドセットを利用して、他の処理のコマンドセットを取得する。
このような手法により、オートリード機能によって読み出せるページに全ての処理のコマンドセットを格納できない場合（コマンドセットの種類が多い場合等）であっても、全ての処理のコマンドセットを取得して、以後の処理を実行することができる。
【００６２】
上記実施の形態では、フラッシュメモリ２のオートリード機能によって読み出せるページに格納されているコマンドセットは、読出処理のもののみであったが、当該ページの容量が許す限り、他の処理のコマンドセットも格納してもよい。可能であれば、全てのコマンドセットを当該ページに格納してもよい。
【００６３】
また、上記実施の形態では、起動時に、オートリード機能によって、フラッシュメモリ２の特定のページから読出処理のコマンドセットを読み出すようにした。しかし、フラッシュメモリシステム１は、図４に示すように、フラッシュメモリ２及びコントローラ３の他に、外部ＲＯＭ３０を備え、コントローラ３の内部に外部ＲＯＭインターフェースブロック１５を備えるように構成し、コントローラ３は、起動時に、外部ＲＯＭ３０に予め格納された読出処理のコマンドセットを読み込んで、そのコマンドセットを用いてフラッシュメモリ２が格納している他の処理のコマンドセットを取得するようにしてもよい。
【図面の簡単な説明】
【００６４】
【図１】本発明に係るフラッシュメモリシステムを概略的に示すブロック図である。
【図２】フラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図３】コマンドセット取得処理の手順を説明するフローチャートである。
【図４】本発明に係るフラッシュメモリシステムの変形例を示すブロック図である。
【符号の説明】
【００６５】
１    フラッシュメモリシステム
２    フラッシュメモリ
３    コントローラ
４    ホストシステム
６    マイクロプロセッサ
７    ホストインターフェースブロック
８    ワークエリア
９    バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
１５  外部ＲＯＭインターフェースブロック
２５  ユーザ領域
２６  冗長領域
３０  外部ＲＯＭ
【図１】
2007034581.tif 000003
【図２】
2007034581.tif 000004
【図３】
2007034581.tif 000005
【図４】
2007034581.tif 000006