JP2006338083A - メモリコントローラ - Google Patents

メモリコントローラ Download PDF

Info

Publication number
JP2006338083A
JP2006338083A JP2005158534A JP2005158534A JP2006338083A JP 2006338083 A JP2006338083 A JP 2006338083A JP 2005158534 A JP2005158534 A JP 2005158534A JP 2005158534 A JP2005158534 A JP 2005158534A JP 2006338083 A JP2006338083 A JP 2006338083A
Authority
JP
Japan
Prior art keywords
flash memory
control
state information
memory
address
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.)
Granted
Application number
JP2005158534A
Other languages
English (en)
Other versions
JP4661369B2 (ja
Inventor
Yukio Terasaki
幸夫 寺崎
Takeshi Kamono
武志 鴨野
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.)
TDK Corp
Original Assignee
TDK Corp
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 TDK Corp filed Critical TDK Corp
Priority to JP2005158534A priority Critical patent/JP4661369B2/ja
Publication of JP2006338083A publication Critical patent/JP2006338083A/ja
Application granted granted Critical
Publication of JP4661369B2 publication Critical patent/JP4661369B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】電源が遮断した後に再起動した場合、データの解析、復旧を容易にする。
【解決手段】コントローラ20にバックアップ部27を備え、マイクロプロセッサ22は、フラッシュメモリ10へのアクセス時に、シーケンスコード、シーケンスポインタの値、物理ブロックアドレスのデータをバックアップ部27に書き込む。電源が遮断した後に再起動した場合、マイクロプロセッサ22は、バックアップ部27を参照して、電源遮断時のシーケンスコードと、シーケンスポインタと、物理ブロックアドレスと、を取得し、中断した処理の状態を判別する。
【選択図】図1

Description

本発明は、メモリコントローラに関する。
半導体メモリは、メモリカードやシリコンディスクといったメモリシステムに用いられる。また、近年、この半導体メモリには、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種であり、電力が供給されていないときでも、データを保持することが要求される。
特に、NAND型フラッシュメモリは、上記メモリシステムに多く用いられる。NAND型フラッシュメモリでは、複数のメモリセルを含んでおり、論理値“1”を示すデータが格納されているとき、各メモリセルは消去状態となる。また、論理値“0”を示すデータが格納されているとき、各メモリセルは書き込み状態となる。
NAND型フラッシュメモリに対する書き込み処理若しくは読み出し処理は、ページと称される予め定められた数のメモリ単位で行われる。一方、消去処理は、複数のページによって構成されたブロック単位で行われる。
このようなフラッシュメモリにコマンドを送出して、書き込み処理、読み出し処理等を行うメモリコントローラがあり、また、フラッシュメモリとメモリコントローラとを備えたメモリシステムが知られている。
このメモリシステムでは、ホストシステムに装着されて使用される場合、例えば、メモリカードとして使用される場合、ふたなどでアクセス中の取り出しを防止したり、規格上、そのような動作を禁止したりするなどの方策によって対応している。
しかしながら、NAND型フラッシュメモリのビット単価が低下し、メモリシステムが従来のメモリカード用途だけでなく、組込み機器などのシステムのStorageとしても使用されるようになると、電源遮断に対する耐性がより重要視される。
特に、NAND型フラッシュメモリの場合、メモリシステムは、システム側の論理アドレスとフラッシュメモリ側の物理アドレスとの対応関係等、ユーザデータ以外に管理情報を持つことが多い。
従って、NAND型フラッシュメモリを用いたシステムでは、管理情報を書き込んでいるときに電源遮断が発生した場合であっても、電源遮断がシステム全体に影響を与えることがある。
このような問題に対処するため、NAND型フラッシュメモリを用いたメモリシステムでは、特に電源遮断に対する耐性が要求される。このため、フラッシュの各制御のタイミングでステータスを示すフラグを書き込んだり、あるいは、システムから供給される電源に高容量のコンデンサを搭載したりすることによって、このような耐性を備えるようにしたものがある(例えば、特許文献1参照)。
特開平11−149419号公報(第3頁、図1)
しかし、各制御の段階でフラッシュメモリ上にフラグを書き込むようにした従来のメモリシステムでは、メモリシステムのパフォーマンス低下を招くだけでなく、フラグ書き込み時に電源が遮断した場合には、あるレベルでの単位でしかリカバリーできないし、中断した処理を判別することもできない。このように、フラッシュメモリ上にフラグを書き込むようにしただけでは、本質的な対策にはならない。
また、高容量のコンデンサなどでバックアップするようにした従来のメモリシステムでは、コストやスペースの問題が発生する。特に、近年、不揮発性メモリをStorageとして使用するアプリケーションが拡大し、ワンチップ化が進められている状況では、このような従来のメモリシステムは、近年の傾向に対応することができない。
本発明は、このような従来の問題点に鑑みてなされたもので、処理中断後に、中断した処理の解析と復旧を容易に行うことが可能なメモリコントローラを提供することを目的とする。
この目的を達成するため、本発明の第1の観点に係るメモリコントローラは、
フラッシュメモリに対する制御処理を示す情報としてステート情報を保持する不揮発性のステート情報記憶部と、
前記制御処理を構成する一連の制御を実行する制御処理実行部と、
前記制御処理実行部が実行する前記一連の制御によって構成される前記制御処理に対応する前記ステート情報を前記ステート情報記憶部に書き込む処理制御部と、を備えたことを特徴とする。
前記フラッシュメモリに対する前記一連の制御のうちの1つの制御を指し示す制御ステート情報を保持する不揮発性の制御ステート情報記憶部を更に備え、
前記処理制御部は、前記制御処理実行部が実行する前記制御に対応する前記制御ステート情報を前記制御ステート情報記憶部に書き込むようにしてもよい。
前記フラッシュメモリの処理実行状態を示すメモリステート情報を保持する不揮発性のメモリステート情報記憶部を更に備え、
前記処理制御部は、前記一連の制御に対して前記フラッシュメモリから出力された応答信号に基づいて前記フラッシュメモリの処理状態を判別し、対応するメモリステート情報を前記メモリステート情報記憶部に書き込むようにしてもよい。
前記フラッシュメモリ内のブロックを指定するためのアドレス情報を保持する不揮発性のアドレス情報記憶部を更に備え、
前記処理制御部は、前記制御処理実行部が実行する一連の制御処理でアクセスするブロックを指定するアドレス情報を前記アドレス情報記憶部に書き込むようにしてもよい。
前記処理制御部は、電源遮断後、前記電源の復旧により再起動したときに、前記ステート情報記憶部に保持されているステート情報を参照し、参照した情報に基づいて、前記電源遮断時に中断した一連の制御処理を判別するようにしてもよい。
前記処理制御部は、電源遮断後、前記電源の復旧により再起動したときに、前記アドレス情報記憶部に記憶されているアドレス情報を参照し、参照したアドレス情報に基づいて、前記電源遮断時における前記フラッシュメモリ内の処理実行対象領域を判別するようにしてもよい。
本発明によれば、処理中断後に、中断した処理の解析と復旧を容易に行うことがことができる。
以下、本発明の実施形態に係るメモリコントローラについて、図面を参照して説明する。尚、本実施形態では、メモリコントローラを含むフラッシュメモリシステムとして説明する。
本実施形態に係るフラッシュメモリシステムの構成を図1に示す。
本実施形態に係るフラッシュメモリシステム1は、ホストシステム2に内蔵又は着脱可能に装着されて使用され、ホストシステム2の記憶装置として用いられるものである。
ホストシステム2は、コンピュータ、デジタルスチルカメラのように、文字、音声、あるいは画像情報等の種々の情報を処理するものである。ホストシステム2は、フラッシュメモリシステム1に論理アドレスを与えてフラッシュメモリ10にアクセスする。
フラッシュメモリシステム1は、フラッシュメモリ10と、コントローラ20と、を備える。フラッシュメモリ10は、ハードディスクの代わりになるストレージデバイスへの用途として開発されたものであり、NAND型フラッシュメモリからなるチップを備える。
このNAND型のフラッシュメモリ10は、不揮発性メモリであり、一般的には、レジスタとメモリセルアレイとによって構成され、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷(電子)を注入若しくはフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。尚、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子が注入される。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子が排出される。
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「0」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「1」に対応する。
このようなNAND型のフラッシュメモリ10のアドレス空間を図2に示す。フラッシュメモリ10のアドレス空間は、“ページ”と“ブロック”に基づいて分割されている。
ページは、フラッシュメモリ10にて行われるデータ読出動作及びデータ書込動作における処理単位である。ブロックは、フラッシュメモリ10にて行われるデータ消去動作における処理単位である。
1つのページは、512バイトのデータ領域11と、16バイトの冗長領域12とを含んでいる。データ領域11は、ホストシステム2から供給されるユーザデータを格納する。
冗長領域12は、エラーコレクションコード、対応論理ブロックアドレス、ブロックステータス(フラグ)等の付加データを記録するための領域である。
エラーコレクションコードは、ユーザ領域に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
対応論理ブロックアドレスは、1つのブロックに含まれている少なくとも1つのデータ領域11に有効なデータが格納されているとき、そのブロックが対応付けられている論理ブロックのアドレスを示す。
論理ブロックアドレスは、ホストシステム2から与えられるホストアドレスに基づいて決定されるブロックのアドレスである。一方、フラッシュメモリ10内における実際のブロックのアドレスは、物理ブロックアドレスと称される。
1つのブロックに含まれている全てのデータ領域11に有効なデータが格納されていないときには、そのブロックに含まれている冗長領域12に、対応論理ブロックアドレスは格納されていない。
従って、冗長領域12に対応論理ブロックアドレスが格納されているか否かを判定することにより、その冗長領域12が含まれているブロックにてデータが消去されたか否かを判定することができる。冗長領域12に対応論理ブロックアドレスが格納されていないとき、そのブロックは、データが消去された状態となっている。
1つのブロックは、32個のページを含んでいる。フラッシュメモリ10では、データの上書きができない。このため、1つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれたブロック内の全ページに格納されたデータが、書き換えられなければならない。
1つのブロック内の全ページから読み出されたデータの少なくとも一部が変更された後、そのデータは、消去されているブロックの1つに、ブロック単位で書き込まれなければならない。
上記のようにデータを書き換えるにあたっては、書き換えられたデータは、以前に格納されていたブロックとは異なるブロックに書き込まれる。このため、論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、フラッシュメモリ10にてデータが書き換えられる毎に、動的に変化する。
従って、論理ブロックアドレスと物理ブロックアドレスとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各ページの冗長領域12に記憶されている対応論理ブロックアドレスに基づいて作成される。尚、このような動的なアドレス管理手法は、NAND型フラッシュメモリを用いたメモリシステムでは一般的に行われている手法である。
ブロックステータスは、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域12には、不良ブロックであることを示すブロックステータスが書き込まれる。
このようなフラッシュメモリ10は、コントローラ20から、一連の制御信号を受信して、データの読出し処理、書込み処理、ブロック消去処理、転送処理等の各処理を行う。
この一連の制御信号には、内部コマンドを指示するコマンド信号、アドレスを指示するアドレス信号、コマンド信号やアドレス信号をフラッシュメモリ10に読み込ませるためのライトイネーブル信号等が含まれる。
ここで、内部コマンドとは、コントローラ20がフラッシュメモリ10に処理の実行を指示するためのコマンドであり、フラッシュメモリ10は、コントローラ20からの内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム2がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。
コントローラ20は、図1に示すように、ホストインターフェース21と、マイクロプロセッサ22と、ワークエリア23と、バッファ24と、ECCブロック25と、ROM26と、バックアップ部27と、フラッシュメモリインターフェースブロック28と、を備える。このコントローラ20は、フラッシュメモリ10に一連の制御信号を送出してフラッシュメモリ10に対する制御処理を実行するものである。
ホストインターフェース21は、ホストシステム2との間でデータ、アドレス情報、ステータス情報及び外部コマンド情報等の授受を行うための機能ブロックであり、動作設定レジスタ、タスクファイルレジスタ、エラーレジスタ等を備える(いずれも図示せず)。
このうち、タスクファイルレジスタは、ホストシステム2より供給されるホストアドレス及び外部コマンドを一時的に格納するためのレジスタである。エラーレジスタは、エラーが発生した場合にデータがセットされるレジスタである。
ホストシステム2に内蔵又は装着されたフラッシュメモリシステム1は、外部バスを介してホストシステム2に接続される。ホストインターフェース21は、ホストシステム2からデータ等が供給されると、フラッシュメモリシステム1の入口として、供給されたデータ等をコントローラ20の内部に取り込む。
また、フラッシュメモリシステム1がホストシステム2にデータ等を供給する場合、ホストインターフェース21は、データ等をホストシステム2に供給するフラッシュメモリシステム1の出口として機能する。
バッファ24は、フラッシュメモリ10から読み出されたデータをホストシステム2の受け取り準備ができるまで保持し、また、フラッシュメモリ10に書き込むデータを、フラッシュメモリ10への書き込み準備ができるまで一時的に保持するための機能ブロックである。
ECCブロック25は、フラッシュメモリ10に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出したデータに付加されたエラーコレクションコードに基づいて、読み出したデータの誤り検出を行い、検出した誤りを訂正すための機能ブロックである。
ROM26は、コマンドコードセットCmd_setを記憶するものである。コマンドコードセットCmd_setは、フラッシュメモリ10に対する処理を実行するための命令セットであり、予め設定されたものである。命令セットには、例えば、書込み処理、消去処理といった各処理を実行するためのものがあり、このコマンドコードセットCmd_setは、このような処理を実行するための複数の命令を含んでいる。各コマンドコードセットCmd_setには、シーケンスコードSeq_codeが割り当てられている。
ワークエリア23は、フラッシュメモリ10の制御に必要なデータを一時的に格納する作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。
ワークエリア23は、処理に必要なデータとして、論理ブロックアドレスと物理ブロックアドレスとの対応関係を管理する前述のアドレス変換テーブルも格納する。また、ワークエリア23は、マイクロプロセッサ22がROM26から読み出したコマンドコードセットCmd_setを格納する。
フラッシュメモリインターフェースブロック28は、内部バスを介して、フラッシュメモリ10との間でデータ、アドレス情報、ステータス情報、内部コマンド情報及びデバイスID情報等の授受を行うために備えられた機能ブロックである。フラッシュメモリインターフェースブロック28は、図3に示すように、アドレスレジスタ28aと、コマンドレジスタ28bと、命令処理ブロック28cと、を備える。
アドレスレジスタ28aは、アクセス先の物理ブロックアドレスB_addrを格納するためのレジスタである。物理ブロックアドレスB_addrは、フラッシュメモリインターフェースブロック28が実行する一連の制御処理でアクセスするフラッシュメモリ10内のブロックを指定するためのアドレス情報である。
フラッシュメモリインターフェースブロック28は、アドレスレジスタ28aに格納された物理ブロックアドレスB_addrに5ビットのページ番号(0〜32のページ番号)を付加してアドレスデータを生成する。このアドレスデータは、上位側が物理ブロックアドレスで、下位側がページ番号になる。
コマンドレジスタ28bは、コマンドコードセットCmd_setの各命令を格納するためのレジスタである。
命令処理ブロック28cは、コマンドレジスタ28bに格納されている命令に従って制御信号を出力するものである。
フラッシュメモリインターフェースブロック28は、命令処理ブロック28cによって出力される一連の制御信号をフラッシュメモリ10に供給することにより、前述のコマンドコードセットCmd_setに含まれている各命令を実行し、一連の制御を行う。
命令処理ブロック28cがコマンドレジスタ28bに読み込まれた命令(コマンドコードセットCmd_setに含まれる命令)に従って処理を実行することにより、フラッシュメモリ10に対する所望の機能が実現される。
フラッシュメモリインターフェースブロック28は、命令がコマンドレジスタ28bに読み込まれると、例えば、何番目の命令であるかを示す値のように、このコマンドレジスタ28bに読み込んだ命令を示す情報Cmd_noをマイクロプロセッサ22に出力する。
フラッシュメモリインターフェースブロック28は、コマンドコードセットCmd_setに従って実行した処理が終了した場合、マイクロプロセッサ22に処理が終了したことを示す割込み信号Irqを出力する。
バックアップ部27は、電源遮断等によって処理が中断し、電源が再起動した時に中断した処理を解析、復旧させるための情報を保持するためのものである。
バックアップ部27は、アドレスバックアップ領域27aと、シーケンスコードバックアップ領域27bと、ポインタバックアップ領域27cと、を備える。
アドレスバックアップ領域27aは、アクセス先の物理ブロックアドレスB_addrを保持するための領域である。
シーケンスコードバックアップ領域27bは、上述のシーケンスコードSeq_codeを、フラッシュメモリ10に対する制御処理を示すステート情報として保持するための領域である。
ポインタバックアップ領域27cは、ポインタpの値を保持するための領域である。ポインタpは、シーケンスコードSeq_codeに対応するコマンドセットCmd_setに含まれる命令を指示するためのものであり、ポインタバックアップ領域27cは、このポインタpの値を、フラッシュメモリ10に対する一連の制御のうちの1つの制御を指し示す制御ステート情報として保持する。
このバックアップ部27には、例えば、FRAM(Ferroelectric RAM)が用いられる。FRAMは、DRAMセルにおいて電荷を保持する誘電体キャパシタを使用した重ね書きが可能な不揮発性メモリである。
マイクロプロセッサ22は、ROM26に記憶されている制御ソフトウェアに従ってコントローラ20内の制御処理を実行する。この制御ソフトウェアに従って、マイクロプロセッサ22は、コントローラ20を構成する各機能ブロック全体の動作を制御する。
具体的に、マイクロプロセッサ22は、ワークエリア23のアドレス変換テーブルを参照して、ホストシステム2から供給されたアドレスを、アクセス先の物理ブロックアドレスB_addrに変換する。
マイクロプロセッサ22は、変換した物理ブロックアドレスB_addrをフラッシュメモリインターフェースブロック28のアドレスレジスタ28aに書き込むとともに、バックアップ部27のアドレスバックアップ領域27aに書き込む。
マイクロプロセッサ22は、フラッシュメモリ10に対して、例えば、書込み処理、消去処理等の処理を実行するとき、シーケンスコードSeq_codeに基づいてコマンドコードセットCmd_setをROM26から読み出す。
マイクロプロセッサ22は、コマンドコードセットCmd_setをROM26から読み出してワークエリア23に書き込む。また、マイクロプロセッサ22は、読み出したコマンドセットCmd_setに対応するシーケンスコードSeq_codeをバックアップ部27のシーケンスコードバックアップ領域27bに書き込む。
尚、コマンドセットCmd_setに含まれる各命令は、コマンドレジスタ28bに保持されている命令に基づいた処理が実行される毎にワークエリア23からコマンドレジスタ28bに読み込まれる。
マイクロプロセッサ22は、フラッシュメモリインターフェースブロック28から出力された情報Cmd_noに基づいてシーケンスポインタpの値を設定し、このシーケンスポインタpの値をシーケンスコードバックアップ領域27bに書き込む。
マイクロプロセッサ22は、フラッシュメモリインターフェースブロック28から割込み信号Irqを受信した場合、次に実行すべき処理があれば、その処理に対応するコマンドコードセットCmd_setをROM26から読み出す。そして、マイクロプロセッサ22は、その処理に対応するシーケンスコードSeq_codeをシーケンスコードバックアップ領域27bに書き込む。
一方、次に実行すべき処理がない場合、マイクロプロセッサ22は、シーケンスコードバックアップ領域27bに書込まれているシーケンスコードSeq_codeをクリアする。
更に、マイクロプロセッサ22は、電源遮断等により処理が中断した後に、電源の復旧により再起動したとき、バックアップ部27に保持されている情報を参照する。
即ち、マイクロプロセッサ22は、アドレスバックアップ領域27a、シーケンスコードバックアップ領域27b、ポインタバックアップ領域27cにそれぞれ保持されている物理ブロックアドレスB_addr、シーケンスコードSeq_code、ポインタpの値を取得する。そして、マイクロプロセッサ22は、取得したこれらの情報に基づいて電源遮断時に中断した一連の制御を判別する。
次に本実施形態に係るフラッシュメモリシステム1の動作を説明する。
ホストシステム2は、フラッシュメモリ10からデータを読み出す場合、外部バスを介してフラッシュメモリシステム1に外部コマンドとアドレスとを供給する。また、ホストシステム2は、データをフラッシュメモリ10に書き込む場合、外部コマンドとアドレスとに加えて、書き込むデータをフラッシュメモリシステム1に供給する。
マイクロプロセッサ22は、ワークエリア23のアドレス変換テーブルを参照し、ホストシステム2から供給されたアドレスを、アクセス先の物理ブロックアドレスB_addrに変換する。
マイクロプロセッサ22は、変換した物理ブロックアドレスB_addrをフラッシュメモリインターフェースブロック28内のアドレスレジスタ28aに書き込むとともに、バックアップ部27のアドレスバックアップ領域27aに書き込む。
フラッシュメモリインターフェースブロック28は、アドレスレジスタ28aに格納された物理ブロックアドレスB_addrに5ビットのページ番号を付加したアドレス信号を生成する。
また、マイクロプロセッサ22は、外部コマンドに従って、フラッシュメモリインターフェースブロック28に実行させる処理に対応したコマンドコードセットCmd_setをROM26から読み出す。
マイクロプロセッサ22は、読み出したコマンドコードセットCmd_setをワークエリア23に書き込み、そのコマンドコードセットCmd_setに対応するシーケンスコードSeq_codeをシーケンスコードバックアップ領域27bに書き込む。
ワークエリア23に書き込まれたコマンドコードセットCmd_setに含まれる最初の命令がフラッシュメモリインターフェースブロック28のコマンドレジスタ28bに読み込まれる。
命令処理ブロック28cは、コマンドレジスタ28bに読み込まれた命令に基づいて処理を実行する。
フラッシュメモリインターフェースブロック28は、コマンドコードセットCmd_setに従い、制御信号として、コマンド信号、アドレス信号、書き込みデータ等をフラッシュメモリ10に送出する。
1つの処理が実行されると、ワークエリア23に書き込まれたコマンドコードセットCmd_setに含まれる次の命令がコマンドレジスタ28bに読み込まれる。フラッシュメモリインターフェースブロック28は、命令がコマンドレジスタ28bに読み込まれる毎に、読み込んだ命令を示す情報Cmd_noをマイクロプロセッサ22に出力する。
フラッシュメモリ10は、受信したコマンド信号、アドレス信号、書き込みデータ等に基づいて書き込み処理、読み出し処理といった処理を実行する。例えば、複数のページ読み出し処理では、読み出すページ分の制御信号とアドレス信号とが繰り返し送出される。
マイクロプロセッサ22は、フラッシュメモリインターフェースブロック28から出力された情報Cmd_noに基づいてシーケンスポインタpの値を設定し、このシーケンスポインタpの値をシーケンスコードバックアップ領域27bに書き込む。
フラッシュメモリインターフェースブロック28は、命令処理ブロック28cの処理が終了した場合、マイクロプロセッサ22に、処理が終了したことを示す割込み信号Irqを出力する。
マイクロプロセッサ22は、フラッシュメモリインターフェースブロック28から割込み信号Irqを受信した場合に、次に実行すべき処理があれば、その処理に対応するシーケンスコードSeq_code、先頭の命令を示すシーケンスポインタpの値を、それぞれ、シーケンスコードバックアップ領域27b、ポインタバックアップ領域27cに書き込む。
一方、次に実行すべき処理がない場合、マイクロプロセッサ22は、シーケンスコードバックアップ領域27b、ポインタバックアップ領域27cにそれぞれ書込まれているシーケンスコードSeq_code、シーケンスポインタpの値をクリアする。
コマンドコードセットCmd_setに従った処理の実行中に、電源が遮断した場合、バックアップ部27のシーケンスコードバックアップ領域27bには、コマンドコードセットCmd_setを示すシーケンスコードSeq_codeが保持され、ポインタバックアップ領域27cには、シーケンスポインタpの値が保持される。
また、アドレスバックアップ領域27aには、アクセス先の物理ブロックアドレスB_addrが格納されている。
再起動後、マイクロプロセッサ22は、バックアップ部27を参照して、シーケンスコードバックアップ領域27bに保持されているシーケンスコードSeq_codeと、ポインタバックアップ領域27cに保持されているシーケンスポインタpの値と、を取得する。
また、マイクロプロセッサ22は、アドレスバックアップ領域27aに保持されている物理ブロックアドレスB_addrを取得する。
マイクロプロセッサ22は、取得したシーケンスコードSeq_codeに基づいて、電源遮断時に実行されていた処理を判別する。
例えば、シーケンスコードバックアップ領域27bに、読み出し処理を示すシーケンスコードSeq_codeが格納されていた場合、マイクロプロセッサ22は、フラッシュメモリインターフェースブロック28が、読み出し処理を実行しているときに処理が中断したと判定する。
また、シーケンスポインタpが読み出し処理のコマンドセットCmd_setの内部読み出しコマンドの送出命令を指し示していた場合、マイクロプロセッサ22は、内部読み出しコマンドの送出中に処理が中断したと判定する。
また、対応する処理でアクセスされていたブロックは、アドレスバックアップ領域27aに格納されている物理ブロックアドレスB_addrに基づいて判別される。例えば、物理ブロックアドレスB_addrのデータがB_addr=#0の場合、マイクロプロセッサ22は、アクセスが中断したときのアクセス先は物理ブロック#0であると判定する。
一方、シーケンスコードバックアップ領域27bのシーケンスコードSeq_codeがクリアされている場合、マイクロプロセッサ22は、中断した処理がなかったと判定する。
このように、マイクロプロセッサ22は、シーケンスコードバックアップ領域27b、ポインタバックアップ領域27cにそれぞれ保持されているシーケンスコードSeq_code、シーケンスポインタpの値に基づいて、電源が遮断したときの処理内容を判別する。
以上説明したように、本実施形態によれば、コントローラ20にバックアップ部27を備え、マイクロプロセッサ22は、フラッシュメモリ10へのアクセス時に、シーケンスコードSeq_code、シーケンスポインタpの値、物理ブロックアドレスB_addrを、バックアップ部27に書き込むようにした。
従って、電源遮断等により処理が中断した場合、単に電源遮断がフラッシュメモリ10ヘの処理の内容を判別するだけでなく、シーケンスポインタpの値から、書き込み時における制御ステータスを判別することができる。
即ち、マイクロプロセッサ22は、フラッシュメモリ10のデータレジスタに対してデータを転送している最中に電源遮断が発生したのか、データをフラッシュメモリ10のセルに書き込んでいる際に起きたのかを判別することができる。
このため、再起動後に中断したときのデータの復旧を容易に行うことができ、フラッシュメモリ10に記憶したデータの信頼性を向上させることができる。
また、この中断した処理の内容に関する情報とアドレスバックアップ領域27aに格納されている物理ブロックアドレスB_addrの情報とから、データが正常に書き込まれていない可能性の高いブロックを正確に把握することができるとともに、そのブロックの状態を診断することができる。
また、不正な電源遮断が発生した場合に、ECCの誤訂正により、エラーを検出することができなかった場合でも、シーケンスコードバックアップ領域27bに格納されているシーケンスコードSeq_codeに基づいて、不正な電源遮断が発生したことを検出することができる。
尚、本発明を実施するにあたっては、種々の形態が考えられ、上記実施の形態に限られるものではない。
例えば、フラッシュメモリ10の制御シーケンスの操作やコマンド処理等は、マイクロプロセッサの代わりにハードウェアロジック等で実施することも可能である。
また、バックアップ対象は、コントローラ20が出力する制御情報に限られるものではなく、フラッシュメモリ10から出力される信号に基づいて、フラッシュメモリ10の処理実行状態を示す情報を含めるようにすることもできる。
この場合、図4に示すように、バックアップ部27は、フラッシュメモリ10の処理実行状態を示すメモリステート情報M_stateを記憶するためのメモリステート情報バックアップ領域27dを備える。
フラッシュメモリインターフェースブロック28は、一連の制御に対してフラッシュメモリ10が出力する応答信号として、RDY(レディー)/BSY(ビジー)信号の状態を取り込む。
フラッシュメモリインターフェースブロック28は、RDY/BSY信号に基づいて、フラッシュメモリ10の処理実行状態を判別し、対応するメモリステート情報M_stateをマイクロプロセッサ22に出力する。マイクロプロセッサ22は、このメモリステート情報M_stateをバックアップ部27に書き込む。
このように構成されることによって、電源遮断が発生した時点でフラッシュメモリ10が実行している処理の状態を判別することができる。ビジー状態で電源遮断が発生した場合、フラッシュメモリ10内での処理も中断しているため、レディー状態で電源遮断が発生した場合よりも、処理途中で残されたデータの信頼性は低くなる。
マイクロプロセッサ22は、保持されているこのメモリステート情報M_stateに基づいてフラッシュメモリ10の状態を判別することにより、復帰制御の手順を換えることも可能になる。
また、上記実施の形態では、バックアップ部27には、FRAMを用いるようにした。しかし、バックアップ部27には、FRAMだけでなく、OUM(Ovonics Unified Memory)、MRAM(Magnetic RAM)等を使用することもできる。
OUMは、熱によりアモルファス状態と結晶状態を切替えて抵抗値を変化させることで“1”又は“0”を記憶するものである。
MRAMは、強磁性トンネル磁気抵抗効果(TMR:Tunnel Magneto Resistance)素子を用いて抵抗値の変化を論理値の“1”又は“0”に対応させるものである。
さらに、バックアップ部27には、EEPROM(Electrically Erasable Programmable ROM)、SRAMのデータを電池でバックアップしたもの(Battery Back Up SRAM)を用いてもよい。
上記実施形態では、バックアップ部27にシーケンスコードSeq_codeを格納するようにした。しかし、バックアップ部27には、シーケンスコードSeq_codeの代わりに、コマンドコードセットCmd_setを格納するようにしてもよい。
上記実施形態では、バックアップ部27にアドレスバックアップ領域27aと、シーケンスコードバックアップ領域27bと、を備えるようにした。しかし、物理ブロックアドレスB_addrのデータを保持する不揮発性メモリと、シーケンスコードSeq_codeを保持する不揮発性メモリと、を個別に設けるようにしてもよい。
本発明の実施形態に係るフラッシュメモリシステムの構成を示すブロック図である。 図1のフラッシュメモリのアドレス空間を示す図である。 フラッシュメモリシステムの動作を示す図である。 フラッシュメモリシステムの応用例を示す図である。
符号の説明
1 フラッシュメモリシステム
2 ホストシステム
10 フラッシュメモリ
20 コントローラ
22 マイクロプロセッサ
23 ワークエリア
24 バッファ
26 ROM
27 バックアップ部
27a アドレスバックアップ領域
27b シーケンスコードバックアップ領域
27c ポインタバックアップ領域
28 フラッシュメモリインターフェースブロック
28a アドレスレジスタ
28b コマンドレジスタ
28c 命令処理ブロック

Claims (6)

  1. フラッシュメモリに対する制御処理を示す情報としてステート情報を保持する不揮発性のステート情報記憶部と、
    前記制御処理を構成する一連の制御を実行する制御処理実行部と、
    前記制御処理実行部が実行する前記一連の制御によって構成される前記制御処理に対応する前記ステート情報を前記ステート情報記憶部に書き込む処理制御部と、を備えた、
    ことを特徴とするメモリコントローラ。
  2. 前記フラッシュメモリに対する前記一連の制御のうちの1つの制御を指し示す制御ステート情報を保持する不揮発性の制御ステート情報記憶部を更に備え、
    前記処理制御部は、前記制御処理実行部が実行する前記制御に対応する前記制御ステート情報を前記制御ステート情報記憶部に書き込む、
    ことを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記フラッシュメモリの処理実行状態を示すメモリステート情報を保持する不揮発性のメモリステート情報記憶部を更に備え、
    前記処理制御部は、前記一連の制御に対して前記フラッシュメモリから出力された応答信号に基づいて前記フラッシュメモリの処理状態を判別し、対応するメモリステート情報を前記メモリステート情報記憶部に書き込む、
    ことを特徴とする請求項1又は2に記載のメモリコントローラ。
  4. 前記フラッシュメモリ内のブロックを指定するためのアドレス情報を保持する不揮発性のアドレス情報記憶部を更に備え、
    前記処理制御部は、前記制御処理実行部が実行する一連の制御処理でアクセスするブロックを指定するアドレス情報を前記アドレス情報記憶部に書き込む、
    ことを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
  5. 前記処理制御部は、電源遮断後、前記電源の復旧により再起動したときに、前記ステート情報記憶部に保持されているステート情報を参照し、参照した情報に基づいて、前記電源遮断時に中断した一連の制御処理を判別する、
    ことを特徴とする請求項1乃至4のいずれか1項に記載のメモリコントローラ。
  6. 前記処理制御部は、電源遮断後、前記電源の復旧により再起動したときに、前記アドレス情報記憶部に記憶されているアドレス情報を参照し、参照したアドレス情報に基づいて、前記電源遮断時における前記フラッシュメモリ内の処理実行対象領域を判別する、
    ことを特徴とする請求項4に記載のメモリコントローラ。
JP2005158534A 2005-05-31 2005-05-31 メモリコントローラ Expired - Fee Related JP4661369B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005158534A JP4661369B2 (ja) 2005-05-31 2005-05-31 メモリコントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005158534A JP4661369B2 (ja) 2005-05-31 2005-05-31 メモリコントローラ

Publications (2)

Publication Number Publication Date
JP2006338083A true JP2006338083A (ja) 2006-12-14
JP4661369B2 JP4661369B2 (ja) 2011-03-30

Family

ID=37558616

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005158534A Expired - Fee Related JP4661369B2 (ja) 2005-05-31 2005-05-31 メモリコントローラ

Country Status (1)

Country Link
JP (1) JP4661369B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211204A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
US8650373B2 (en) 2009-08-28 2014-02-11 Kabushiki Kaisha Toshiba Memory system, controller, and data transfer method
JP2014071740A (ja) * 2012-09-28 2014-04-21 Fujitsu Ltd 情報処理装置、管理方法、及び管理プログラム
US9946610B2 (en) 2015-08-28 2018-04-17 Toshiba Memory Corporation Memory device and method for saving and restoring data using nonvolatile memory
CN110209352A (zh) * 2019-05-14 2019-09-06 西安艾可萨科技有限公司 一种存储器的控制方法、存储器控制器、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200418A (ja) * 1993-12-28 1995-08-04 Hitachi Maxell Ltd データ記憶装置ならびにその制御方法
JPH11249972A (ja) * 1998-02-27 1999-09-17 Nissin Electric Co Ltd フラッシュメモリの異常検出回路
JP2001084180A (ja) * 1999-09-09 2001-03-30 Mitsubishi Electric Corp ファイル管理装置
JP2005025401A (ja) * 2003-06-30 2005-01-27 Sharp Corp メモリ管理装置およびこれを備えたicカード

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200418A (ja) * 1993-12-28 1995-08-04 Hitachi Maxell Ltd データ記憶装置ならびにその制御方法
JPH11249972A (ja) * 1998-02-27 1999-09-17 Nissin Electric Co Ltd フラッシュメモリの異常検出回路
JP2001084180A (ja) * 1999-09-09 2001-03-30 Mitsubishi Electric Corp ファイル管理装置
JP2005025401A (ja) * 2003-06-30 2005-01-27 Sharp Corp メモリ管理装置およびこれを備えたicカード

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211204A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
JP4675984B2 (ja) * 2008-02-29 2011-04-27 株式会社東芝 メモリシステム
US8650373B2 (en) 2009-08-28 2014-02-11 Kabushiki Kaisha Toshiba Memory system, controller, and data transfer method
JP2014071740A (ja) * 2012-09-28 2014-04-21 Fujitsu Ltd 情報処理装置、管理方法、及び管理プログラム
US9946610B2 (en) 2015-08-28 2018-04-17 Toshiba Memory Corporation Memory device and method for saving and restoring data using nonvolatile memory
CN110209352A (zh) * 2019-05-14 2019-09-06 西安艾可萨科技有限公司 一种存储器的控制方法、存储器控制器、电子设备及存储介质

Also Published As

Publication number Publication date
JP4661369B2 (ja) 2011-03-30

Similar Documents

Publication Publication Date Title
JP4524309B2 (ja) フラッシュメモリ用のメモリコントローラ
US8037232B2 (en) Data protection method for power failure and controller using the same
US8046528B2 (en) Data writing method for flash memory, and flash memory controller and storage device thereof
US20170220274A1 (en) Data storage device and operating method thereof
US20070028035A1 (en) Storage device, computer system, and storage system
KR20150030190A (ko) 메모리 칩 전력 관리
JPWO2005083573A1 (ja) 半導体メモリ装置
KR20150029402A (ko) 데이터 저장 시스템 및 그것의 동작 방법
US8607123B2 (en) Control circuit capable of identifying error data in flash memory and storage system and method thereof
JP4177360B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4661369B2 (ja) メモリコントローラ
JP2010086009A (ja) 記憶装置およびメモリ制御方法
JP2008251154A (ja) 不揮発性半導体記憶装置
JP4544167B2 (ja) メモリコントローラおよびフラッシュメモリシステム
KR102227196B1 (ko) 데이터 저장 시스템 및 그것의 동작 방법
JP4177292B2 (ja) メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2005292925A (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2005316793A (ja) フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4194518B2 (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4304167B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2005293177A (ja) メモリコントローラ及びフラッシュメモリシステム
JP2007066119A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
KR20240112167A (ko) 스토리지 장치, 스토리지 장치의 동작 방법 및 비휘발성 메모리의 동작 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100825

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: 20101207

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: 20101220

R150 Certificate of patent or registration of utility model

Ref document number: 4661369

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140114

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees