JP2021163512A - メモリシステムおよび情報処理システム - Google Patents
メモリシステムおよび情報処理システム Download PDFInfo
- Publication number
- JP2021163512A JP2021163512A JP2020173167A JP2020173167A JP2021163512A JP 2021163512 A JP2021163512 A JP 2021163512A JP 2020173167 A JP2020173167 A JP 2020173167A JP 2020173167 A JP2020173167 A JP 2020173167A JP 2021163512 A JP2021163512 A JP 2021163512A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- controller
- log data
- data
- command
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Memory System (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】不具合解析が容易であるメモリシステム及び情報処理システムを提供する。【解決手段】実施形態のメモリシステムは、不揮発性メモリと第1のメモリを含み、不揮発性メモリを制御するためのコマンドの履歴を含むログデータを第1のメモリに書き込むコントローラを備える。別の実施形態の情報処理システムは、メモリシステムと情報処理装置を備え、情報処理装置はメモリシステムのログデータの期待値を保持し、情報処理装置はメモリシステムから送信されてきたログデータの送信値が期待値と一致しない時、メモリシステムに停止を指示する信号を送信する。【選択図】図9
Description
本発明の実施形態は、メモリシステムおよび情報処理システムに関する。
近年、NAND型フラッシュメモリなどの不揮発性メモリの大容量化に伴い、それらを制御するコントローラの高性能化が求められている。コントローラの高性能化に伴うシステムの複雑化から、不具合解析に要する工数の増加が懸念されている。また、不具合解析に有用な情報の取得が求められている。
本発明の実施形態は、不具合解析が容易であるメモリシステムおよび情報処理システムを提供する。
実施形態のメモリシステムは、不揮発性メモリと、メモリを含み、不揮発性メモリを制御するためのコマンドの履歴を含むログデータをメモリに書き込むコントローラとを備える。
以下、発明を実施するための実施形態について説明する。
本明細書では、いくつかの要素に複数の表現の例を付している。これら表現の例はあくまで例示であり、上記要素に他の表現が付されることを否定するものではない。また、複数の表現が付されていない要素についても、別の表現が付されてもよい。なお、以下の説明において、同一の機能お構成を有する構成要素については、共通する参照符号を付す。
図面は模式的なものであり、厚みと平面寸法との関係や各層の厚みの比率などは現実のものと異なることがある。また、図面間において互いの寸法の関係や比率が異なる部分が含まれることもある。
(第1の実施形態)
図1は、本実施形態に係るメモリシステム1の構成例を示すブロック図である。メモリシステム1は、ホスト装置4および情報処理端末5と電気的に接続され、ホスト装置4の外部記憶装置として利用される。メモリシステム1は、例えば、SDTMカードのようなメモリーカードや、SSD(Solid state drive)である。ホスト装置4は、例えば、パーソナルコンピュータ(PC)、携帯電話、撮像装置、タブレットコンピュータ、スマートフォン、ゲーム機器、カーナビゲーションシステム、データサーバである。メモリシステム1は不揮発性メモリ2、コントローラ3および温度センサ7を備えている。
図1は、本実施形態に係るメモリシステム1の構成例を示すブロック図である。メモリシステム1は、ホスト装置4および情報処理端末5と電気的に接続され、ホスト装置4の外部記憶装置として利用される。メモリシステム1は、例えば、SDTMカードのようなメモリーカードや、SSD(Solid state drive)である。ホスト装置4は、例えば、パーソナルコンピュータ(PC)、携帯電話、撮像装置、タブレットコンピュータ、スマートフォン、ゲーム機器、カーナビゲーションシステム、データサーバである。メモリシステム1は不揮発性メモリ2、コントローラ3および温度センサ7を備えている。
不揮発性メモリ2は、データを不揮発に記憶するメモリであり、例えばNAND型フラッシュメモリやNOR型フラッシュメモリである。以降、不揮発性メモリ2をNANDフラッシュメモリ2と称する。NANDフラッシュメモリ2は複数備えられていてもよい。NANDフラッシュメモリ2はNANDインターフェース6でコントローラ3と接続されている。NANDインターフェース6はコントローラ3からNANDフラッシュメモリ2に出力する信号線と、NANDフラッシュメモリ2からコントローラ3へ出力する信号線を含んでいる。また、NANDインターフェース6はチャネルを構成し、チャネルはNANDフラッシュメモリ2とコントローラ3を接続している。チャネルは複数備えられていてもよく、一つのチャネルに複数のNANDフラッシュメモリ2が接続されていてもよい。
コントローラ3は、例えばSoC(System-on-a-chip)で構成され、ホストインターフェース回路31、メモリ32、CPU(Central Processing Unit)33、バッファメモリ34、NANDインターフェース回路35、ECC回路36および情報処理端末用インターフェース回路37を備えている。なお、コントローラ3の各部31−37の機能は、ハードウェアで実現されても、ハードウェアとファームウェアとの組み合わせで実現されてもよい。コントローラ3はホストインターフェース回路31によってホスト装置4に接続され、NANDインターフェース回路35によってNANDフラッシュメモリ2に接続され、情報処理端末用インターフェース回路37によって情報処理端末5に接続される。情報処理端末5は、例えば、パーソナルコンピュータ(PC)であり、メモリシステム1の不具合を解析するための端末である。また、ホスト装置4は情報処理端末5を兼ねてもよい。情報処理端末5は情報処理装置とも称する。情報処理装置はホスト装置4を含んでもよい。
ホストインターフェース回路31はコントローラ3とホスト装置4を接続し、ホスト装置4から受信した要求およびデータを、CPU33およびバッファメモリ34にそれぞれ転送する。またCPU33の指示に応答して、バッファメモリ34内のデータをホスト装置4へ転送する。ホストインターフェース回路31は、例えばSDTMインターフェース、SAS(Serial attached SCSI(small computer system interface))、SATA(Serial ATA(advanced technology attachment))、又はNVMe(登録商標)(Non-volatile memory express)に準拠した動作を行う。
メモリ32は、例えばSRAM(Static Random Access Memory)のような半導体メモリであり、CPU33の作業領域として使用される。メモリ32は、NANDフラッシュメモリ2を制御するためのファームウェアや、各種の管理テーブルなどを記憶する。
CPU33は、コントローラ3全体の動作を制御する。例えば、CPU33は、ホスト装置4から書き込み要求を受信した際には、NANDインターフェース回路35に対して書き込みを指示する。ホスト装置4から読み出し要求を受信した際には、NANDインターフェース回路35に対して読み出しを指示する。ホスト装置4から消去動作を受信した際には、NANDインターフェース回路35に対して消去を指示する。
バッファメモリ34は、例えばDRAM(Dynamic Random Access Memory)であり、書き込みデータや読み出しデータを一時的に保持する。
NANDインターフェース回路35はCPU33から受信した指示に基づいてコマンドを生成し、生成したコマンドをNANDフラッシュメモリ2へ発行する。具体的には、NANDインターフェース回路35は書き込み処理時には、CPU33の指示に基づいて生成した書き込みコマンドおよびバッファメモリ34内の書き込みデータを、NANDフラッシュメモリ2へ転送する。NANDインターフェース回路35は読み出し処理時には、CPU33の指示に基づいて生成した読み出しコマンドを、NANDフラッシュメモリ2へ発行し、更にNANDフラッシュメモリ2から読み出されたデータをバッファメモリ34へ転送する。
NANDインターフェース回路35は、カウンタ38とタイマ39を含む。カウンタ38は、CPU33の指示に応じてコマンド番号を例えばカウントアップ方式でカウントし、カウント値は例えばコントローラ3がコマンドを実行した順にカウントアップされる。タイマ39は、CPU33の指示に応じて時間を測定する。測定すべき時間が経過すると、タイマ39はCPU33に割り込みを上げる。また、カウンタ38とタイマ39はNANDインターフェースの外に備えられていてもよい。
ECC回路36は、NANDフラッシュメモリ2に記憶されるデータに関する誤り検出処理および誤り訂正処理を行う。すなわちECC回路36は、データの書き込み時には誤り訂正符号を生成して、これを書き込みデータに付与する。データの読み出し処理時には書き込みデータに付与した誤り訂正符号を復号し、誤りビットの有無を検出する。そして誤りビットが検出された際には、その誤りビットの位置を特定し、誤りを訂正する。誤り訂正の方法は、例えば、硬判定復号(Hard bit decoding)および軟判定復号(Soft bit decoding)を含む。硬判定復号に用いられる硬判定復号符号としては、例えば、BCH(Bose - Chaudhuri - Hocquenghem)符号やRS(Reed - Solomon)符号を用いることができる。軟判定復号に用いられる軟判定復号符号としては、例えば、LDPC(Low Density Parity Check)符号を用いることができる。
情報処理端末用インターフェース回路37はメモリシステム1と情報処理端末5を接続している。情報処理端末5は、例えばRS232CやJTAGという汎用インターフェースによってメモリシステム1と通信する。情報処理端末5は、メモリシステム1の不具合解析(デバッグ)に使用される電子機器であり、例えばPCである。メモリシステム1に不具合が生じた時、原因を調べるために解析を行う必要がある。解析は、メモリシステム1と情報処理端末5を繋いで行われる。情報処理端末5は、メモリシステム1からログデータを受け取ることによって、メモリシステム1の不具合解析に用いられる。
温度センサ7は、コントローラ3およびNANDフラッシュメモリ2の温度を測定するためのセンサである。コントローラ3の温度を測定する温度センサ7は、コントローラ3の近傍か、コントローラ3の内部に配置される。NANDフラッシュメモリ2の温度を測定する温度センサ7は、NANDフラッシュメモリ2の近傍かNANDフラッシュメモリ2の内部に配置される。また、コントローラ3とNANDフラッシュメモリ2の温度をひとつの温度センサ7で測定してもよい。測定された温度は、コントローラ3によって読み出される。
次に、NANDフラッシュメモリ2の構成について説明する。図1に示すようにNANDフラッシュメモリ2は、メモリセルアレイ21、ロウデコーダ22、ドライバ23、センスアンプモジュール24、アドレスレジスタ25、コマンドレジスタ26、シーケンサ27およびページバッファ28を備える。
メモリセルアレイは、それぞれがデータを不揮発に記憶する複数のメモリセルトランジスタを含む。メモリセルはワードライン、ビットラインと接続されている。メモリセルは、メモリセルトランジスタを備え、閾値電圧に応じてデータを不揮発に記憶する。ひとつのワードラインに接続されている複数のメモリセルをメモリセルグループと称する。メモリセルが1ビットずつデータを記憶するとき、メモリセルグループが記憶するデータ量を1ページと称する。メモリセルが2ビットずつデータを記憶するとき、メモリセルグループが記憶するデータ量を2ページと称する。また、メモリセルアレイ21は、ブロックBLKと呼ばれるデータの消去領域を複数備えており、図1では一例として4つのブロックBLK0〜BLK3が図示されている。ブロックBLKは複数のメモリセルグループを備えている。メモリセルアレイ21は、コントローラ3から受信したデータを記憶する。
ロウデコーダ22は、アドレスレジスタ25内のブロックアドレスに基づいて、ブロックBLK0〜BLK3のいずれかを選択し、更に選択したブロックBLKにおいてワードラインを選択する。
ドライバ23は、アドレスレジスタ25内のページアドレスに基づき、ロウデコーダ22を介して選択されたワードラインなどに電圧を供給する。
アドレスレジスタ25は、コントローラ3から受信したアドレスを保持する。このアドレスには、上述のブロックアドレスとページアドレスとが含まれる。コマンドレジスタ26は、コントローラ3から受信したコマンドを保持する。
シーケンサ27は、コマンドレジスタ26に保持されたコマンドに基づき、データの読み出し動作、データの書込み動作など、NANDフラッシュメモリ2全体の動作を制御する。
センスアンプモジュール24は、データの読み出し時にビットラインに流れる電流または電圧をセンスする。データの読み出し時、センスコマンドがシーケンサ27から発行されると、ドライバ23がメモリセルアレイ21内の選択ワードラインに読み出し電圧をかける。センスアンプモジュール24がビットラインに流れる電流をセンスし、データを読み出す。読み出したデータは、ページバッファ28に一時的に格納される。シーケンサ27がデータアウトコマンドを発行すると、ページバッファ28に格納されたデータはコントローラ3に出力される。
データの書き込み時、コントローラ3から発行されたデータインコマンドに応じて、コントローラ3から受信した書き込みデータは、ページバッファ28に一時的に格納される。シーケンサ27がプログラムコマンドを発行すると、ページバッファ28に格納されたデータはメモリセルアレイ21に書き込まれる。
図2は、メモリシステム1のNANDインターフェース6を詳細に説明したものである。以下に説明する以外の構成は、図1に準ずるものとする。図2に示されるように、NANDフラッシュメモリ2は、シーケンサ27の他に入出力制御回路61と入出力回路62、レディ/ビジー制御回路63を備えている。入出力制御回路61、入出力回路62およびレディ/ビジー制御回路63はNANDインターフェース6を介してコントローラ3と接続されている。NANDインターフェース6は信号 ̄CE、CLE、ALE、 ̄WE、 ̄RE、 ̄WP、RY/ ̄BY、信号DQ(DQ0〜DQ7)、およびデータストローブ信号DQSならびに ̄DQSを伝送する。本明細書において、信号の名称の前の記号「 ̄」は、信号がローレベルの場合にアサートされていることを意味する。
入出力制御回路61はコントローラ3から種々の制御信号を受け取り、制御信号に基づいて入出力回路62およびシーケンサ27を制御する。制御信号は、信号 ̄CE、CLE、ALE、 ̄WE、 ̄REおよび ̄WPを含む。コントローラ3とシーケンサ27は入出力回路62を介して接続されている。入出力回路62は信号DQを受け取り、信号DQを送信する。また、入出力回路62はデータストローブ信号DQSおよび ̄DQSを受け取り、DQSおよび ̄DQSを送信する。レディ/ビジー制御回路63は、シーケンサ27の動作状態に基づいて信号RY/ ̄BYを生成可能である。信号RY/ ̄BYは、NANDフラッシュメモリ2がコントローラ3からの命令を受け付けるレディ状態にあるか、命令を受け付けないビジー状態にあるかを、コントローラ3に通知するために使用される信号である。
信号DQ(DQ0〜DQ7)は、例えば8ビットの幅を有するデータであり、コマンドCMD、書き込みデータまたは読み出しデータDATA、アドレスADD、ステータスデータSTSを含む。
アサートされている信号 ̄CEは、ローレベルによってNANDフラッシュメモリ2をイネーブルにする。アサートされている信号CLEは、ハイレベルによって、CLEと並行してNANDフラッシュメモリ2に入力される信号DQがコマンドCMDであることをNANDフラッシュメモリ2に通知する。アサートされている信号ALEは、ハイレベルによって、ALEと並行してNANDフラッシュメモリに入力される信号DQがアドレス信号であることをNANDフラッシュメモリ2に通知する。アサートされている信号 ̄WEは、ローレベルによって ̄WEと並行してNANDフラッシュメモリ2に入力される信号DQをコマンドレジスタ26などに書き込むことを指示する。アサートされている信号 ̄REは、ローレベルによってNANDフラッシュメモリ2に信号DQを出力することを指示する。アサートされている信号 ̄WPは、ローレベルによってデータ書き込みおよび消去の禁止をNANDフラッシュメモリ2に指示する。信号RY/ ̄BYは、NANDフラッシュメモリ2がレディ状態であるか、ビジー状態であるかを示し、ローレベルによってビジー状態を示す。
コントローラ3からNANDフラッシュメモリ2に向かう信号DQSおよび ̄DQSは、信号DQを出力するタイミングをNANDフラッシュメモリ2に通知する。NANDフラッシュメモリ2からコントローラ3に向かう信号DQSおよび ̄DQSは、信号DQを出力するタイミングをコントローラ3に通知する。
続いて、ログデータについて説明する。ログデータとは、コントローラ3の動作の履歴を含んだデータである。ログデータには2種類あり、CPU33の動作の履歴を記したファームウェア(FW)ログデータと、NANDフラッシュメモリを制御するためのコマンドの履歴を記したNANDアクセスログデータがある。NANDアクセスログデータは、CPU33がコントローラ3に発行する内部コマンドを記憶した実行コマンドログデータと、コントローラ3がNANDフラッシュメモリ2に発行するコマンドを記憶した発行コマンドログデータの両方を含む。は、例えば、NANDフラッシュメモリ2のレディ状態をコントローラ3が待機するか否かを指定するコマンドや、データの書き込み・読み出しを記憶したログデータである。発行コマンドログデータは、例えば、データの書き込みコマンドや読み出しコマンドを記憶したログデータである。
FWログデータのフォーマットについて図3を用いて説明する。FWログデータは、例えば16Byteで構成され、FWログデータは、FWログ、CPU種別、オーバーフローフラグおよびTimerが含まれる。FWログにはCPU33からのメモリシステム1の各モジュールへのアクセス履歴が書き込まれる。CPU種別には、メモリシステム1が複数のCPU33を備えている場合、どのCPU33によるログなのかが書き込まれる。オーバーフローフラグには、後述するオーバーフローが起こった時にフラグがセットされる。Timerにはカウンタ38によってカウントされるカウント値や、タイマ39によって測定されるタイマ値が書き込まれ、CPU33の動作順が示される。
NANDアクセスログデータのフォーマットについて図4を用いて説明する。NANDアクセスログデータは、例えば8Byteで構成され、NANDチャネル・チップ番号、オーバーフローフラグ、NANDアクセスログ種別(NANDログ種別)、NANDデータ(DQ)、Timerおよび環境情報が含まれる。NANDチャネル・チップ番号には、コントローラ3がどのチャネルにアクセスしたかの識別子や、どのチャネルを介してNANDフラッシュメモリチップ2にアクセスしたかの識別子が書き込まれる。オーバーフローフラグには、後述するオーバーフローが起こった時フラグがセットされる。NANDアクセスログ種別(NANDログ種別)には、このNANDアクセスログのNANDデータ(DQ)フィールドに含まれるログの種類を示す情報が書き込まれる。NANDデータ(DQ)には、コントローラ3からNANDフラッシュメモリ2に送信したデータやNANDフラッシュメモリ2からコントローラ3に送信したデータが書き込まれる。Timerにはタイマ39によって測定されたタイマ値が、タイムスタンプとして書き込まれる。
タイマ39のカウントアップ周期は可変でもよい。例えば、NANDフラッシュメモリ2がビジー状態である期間が短いコマンドを頻繁に実行する動作では、タイマ39のカウントアップ周期を短くする、といった制御をコントローラ3が行う。この制御は、例えばカウントに用いるクロックを高速にする方法や、カウント値を短くする方法によって行われる。また、Timerにはカウンタ38によってカウントされたカウント値が書き込まれてもよい。コントローラ3がNANDフラッシュメモリ2にコマンドを発行し、NANDインターフェース回路35がコマンドを実行した順にコマンド番号がカウントされる。環境情報には、コントローラ周辺の温度情報、NANDフラッシュメモリ2の温度情報やコントローラ3の電圧情報が書き込まれる。
なお、示したフォーマットは一例であり、NANDインターフェースの信号幅や必要なデータ量に応じて適宜フォーマットを変更してよい。
図5および図6を用いて、実際のNANDアクセスログデータのログの内容について説明する。図5は、NANDインターフェース回路35のDQ信号と、信号RY/ ̄BYの状態を表した図である。図のDQにはコントローラ3からNANDフラッシュメモリ2に送信される信号とNANDフラッシュメモリ2からコントローラ3に送信される信号が示される。コントローラ3の時点T1および時点T5においてコマンドWR_CMDを発行し、NANDフラッシュメモリ2にユーザデータの書き込みが2回命令され、時点T2以降でデータDATA0〜DATA7が送信されている。コマンドWR_CMDの発行後、時点T3以前および時点T5以降において、コントローラ3は、ステータス情報を取得するために、NANDフラッシュメモリ2にSTS_CMDを送信している。NANDフラッシュメモリ2は受け取ったデータをメモリセルアレイ21に書き込んだのち、時点T4および時点T5以降においてステータス情報STSをコントローラ3に送信している。
図6は図5で示したT1からT5の時刻のNANDアクセスログデータを、一部省略して表したものである。エントリ0は予備領域RsvdとNANDアクセスログ種別である。エントリ1はDQを介して送信されたデータを表す。エントリ2は時間情報Timerであり、カウンタ38によってカウントされたカウント値またはタイマ39によって測定されたタイムスタンプが書き込まれる。エントリ3は環境情報で、メモリシステム1の温度情報やコントローラ3に供給される電圧情報、NANDフラッシュメモリ2の温度情報が書き込まれる。図7はNANDアクセスログ種別を更に詳細に表したものである。図7に示すように、NANDアクセスログ種別は4bitであり、そのうちのビット3:1がアクセスログの種類を表す。例えば000はアドレス、001はコマンド、011はリードデータ、010はライトデータ、100はステータスを表すとする。ビット0はNANDフラッシュメモリ2のレディ/ビジー状態を表す。例えばレディ状態を1、ビジー状態を0で表すとする。
時刻T1では、コントローラ3から書き込みコマンドが送信され、NANDフラッシュメモリ2はレディ状態である。このとき、NANDアクセスログデータにはNANDアクセスログがコマンドを表すことと、NANDフラッシュメモリ2がレディ状態であることが書き込まれる。DQは書き込みコマンドであり、カウント値は1である。時刻T2では、DQをコントローラ3からのユーザデータDATA0がDQを介して送信され、NANDフラッシュメモリ2はレディ状態である。このとき、NANDアクセスログデータにはNANDアクセスログが書き込みデータを表すことと、NANDフラッシュメモリ2がレディ状態であることが書き込まれる。DQはコントローラ3からNANDフラッシュメモリ2に送信したデータDATA0であり、カウント値は1である。時刻T3では、NANDフラッシュメモリ2が受け取ったユーザデータをメモリセルアレイ21に書き込んでおり、NANDフラッシュメモリ2はビジー状態である。このとき、NANDアクセスログデータにはNANDフラッシュメモリ2がビジー状態であることが書き込まれる。カウント値は1である。時刻T4では、DQをNANDフラッシュメモリ2からのステータス情報STSがDQを介してコントローラ3に送信され、NANDフラッシュメモリ2は再びレディ状態である。このとき、NANDアクセスログデータにはNANDアクセスログがステータス情報を表すことと、NANDフラッシュメモリ2がレディ状態であることが書き込まれる。カウント値は1である。時刻T5では、時刻T1で出されたコマンドとは異なる書き込みコマンドが送信され、NANDフラッシュメモリ2はレディ状態である。このとき、NANDアクセスログデータにはNANDアクセスログがコマンドを表すことと、NANDフラッシュメモリがレディ状態であることが書き込まれる。DQは書き込みコマンドであり、カウント値は2である。カウント値はコントローラ3がコマンドを実行した順にカウントアップされるので、時刻T1〜T4のカウント値は1であり、時刻T5のカウント値は2である。
<動作説明>
図8および図9を用いて、ログデータの情報処理端末5への送信について説明する。以下ではログデータがNANDアクセスログデータの場合を例示して説明するが、FWログデータの場合も同様である。以下に説明する以外の構成は、図1に準ずるものとする。図8は、メモリシステムの一部を省略したブロック図である。コントローラ3は少なくともログFIFO71と送信FIFO72を含む複数のメモリを持つ。ログFIFO71は、メモリシステム1のログデータを記憶する。例えば、DQを通してコマンドやアドレスやステータスやデータがやり取りされる度に、ログFIFO71はメモリシステム1のログデータを記憶する。送信FIFO72は、ログFIFO71から転送されたログデータを保持し、情報処理端末用インターフェース38を通じて情報処理端末5にログデータを送信する。レジスタ73は、後述する契機の条件などを値として保持する。また、ログFIFO71と送信FIFO72は、ひとつのメモリで実装されてもよい。
図8および図9を用いて、ログデータの情報処理端末5への送信について説明する。以下ではログデータがNANDアクセスログデータの場合を例示して説明するが、FWログデータの場合も同様である。以下に説明する以外の構成は、図1に準ずるものとする。図8は、メモリシステムの一部を省略したブロック図である。コントローラ3は少なくともログFIFO71と送信FIFO72を含む複数のメモリを持つ。ログFIFO71は、メモリシステム1のログデータを記憶する。例えば、DQを通してコマンドやアドレスやステータスやデータがやり取りされる度に、ログFIFO71はメモリシステム1のログデータを記憶する。送信FIFO72は、ログFIFO71から転送されたログデータを保持し、情報処理端末用インターフェース38を通じて情報処理端末5にログデータを送信する。レジスタ73は、後述する契機の条件などを値として保持する。また、ログFIFO71と送信FIFO72は、ひとつのメモリで実装されてもよい。
図9はログFIFO71と送信FIFO72のブロック図である。NANDフラッシュメモリ2は複数のチップに構成され、NANDフラッシュメモリチップ201,202がコントローラに接続している。NANDアクセスログデータは、先入れ先出し(FIFO(First in, First out))方式を用いて、ログFIFO71や送信FIFO72で管理される。コントローラ3は、NANDアクセスログデータをログFIFO71に書き込む。ログFIFO71は複数の領域に分けられており、それぞれの領域は、それぞれのNANDフラッシュメモリチップ201、202のいずれかに対応している。例えば、NANDフラッシュメモリチップ201に対するNANDアクセスログデータはログFIFO71のログ領域1からログ領域8に書き込まれる。NANDフラッシュメモリチップ202に対するNANDアクセスログデータはログFIFO71のログ領域9からログ領域16に書き込まれる。コントローラ3はログFIFO71のNANDアクセスログデータを送信FIFO72に転送したのち、情報処理端末5に送信する。また、ログデータ内にはオーバーフローフラグ領域がそれぞれ設けられている。
コントローラ3は、ログFIFO71を、コントローラ3に繋がるチャネルの数や、NANDフラッシュメモリ2のチップの数に応じて、いくつかのサブFIFO710(図10にて詳述)に区切ってもよい。つまり、コントローラ3はNANDフラッシュメモリ2を構成する複数のチップの数に応じて、割り当てるログFIFO71の容量を変更してもよい。
図10および図11は、メモリシステムのブロック図である。例えば、ログFIFO71の容量が2KByteであるとする。
図10では、コントローラ3は4つのチャネルを有し、1つのチャネルに4つのNANDフラッシュメモリ2のチップを接続している。NANDフラッシュメモリ2のチップはそれぞれチップ0、チップ1、チップ2、チップ3である。チャネル0に接続しているNANDフラッシュメモリ2のチップ0には、128ByteのサブFIFO710(サブFIFO00)が割り当てられている。チャネル0に接続しているNANDフラッシュメモリ2のチップ1には、128ByteのサブFIFO710(サブFIFO01)が割り当てられている。このように、1つのNANDフラッシュメモリ2につき、128ByteのサブFIFO710が割り当てられる。
図11に示すように、コントローラ3は4つのチャネルを有し、1つのチャネルに2つのNANDフラッシュメモリ2のチップ、すなわちチップ0とチップ1とが接続する場合、1つのNANDフラッシュメモリ2のチップ0には256ByteのサブFIFO710が割り当てられる。
図は省略するが、同様に、コントローラ3に4つのチャネルが接続し、1つのチャネルに1つのNANDフラッシュメモリ2のチップが接続する場合、1つのNANDフラッシュメモリ2のチップには512ByteのサブFIFO710が割り当てられる。上述したように、コントローラ3は、チャネルの数やNANDフラッシュメモリ2のチップの数に応じてサブFIFO710を割り当てる容量を変更できる。
コントローラ3は、NANDフラッシュメモリ2のチップを制御するためのコマンドを、基本的にはそのチップに割り当てた格納領域に書き込む。しかし、例外的な書き込みを行う場合もある。例えば、コントローラ3の動作を制御する内部コマンドであって、チップを指定するフィールドを持たないコマンドのログデータは、特定のチップに割り当てた格納領域に書くことができない。その場合、コントローラ3は複数のチップに割り当てた複数の格納領域に同一のログデータを書き込む。
図12はログデータ管理のフローチャートである。NANDアクセスログデータを情報処理端末5に送信する際、情報処理端末5とメモリシステム1間の転送能力によっては、送信FIFO72内のNANDアクセスログデータの送信がすべて完了しないうちに新たなNANDアクセスログデータがログFIFO71から送信FIFO72に転送されようとする場合がある。図12に示す処理フローの場合、コントローラ3は、既に送信FIFO72に書き込まれているNANDアクセスログデータの送信が完了するまで、ログFIFO71からのNANDアクセスログデータを、新たに送信FIFO72に書き込まない。すなわち、ログFIFO71から送信FIFO72にログデータを転送するとき、送信FIFO72が一杯でなければ(S101_No)ログデータを送信FIFO72に転送(S102)し、送信FIFO72から情報処理端末5にログデータを送信する(S106)。送信FIFO72が一杯のとき(S101_Yes)コントローラ3は、ログFIFO71から読み出したログデータを破棄する(S103)。送信FIFO72内のデータの送信完了時に、(S104_No)、ログFIFO71から送信FIFO72にログデータの転送が行われる。送信FIFO72が一杯となった後に送信FIFO72にログデータを転送できる状態になってから、初めて転送されるログデータのオーバーフローフラグ領域に、コントローラ3はフラグを立てる(S105)。送信FIFO72から情報処理端末5にログデータを送信する(S106)。情報処理端末5がフラグの立てられたログデータを受け取ると、フラグの立てられたログデータの前に、書き込まれず破棄されたログデータが存在することを認識する。破棄されたログデータの再送が可能な場合、情報処理端末5はNANDアクセスログデータの再送をコントローラ3にリクエストする。
コントローラ3はNANDアクセスログデータを、ログFIFO71に書き込む。例えば、DQを通してコマンドやアドレスやステータスやデータがやり取りされる度に、ログFIFO71はメモリシステム1のログデータを記憶する。情報処理端末5が接続されていないとき、コントローラ3は新しいNANDアクセスログデータをログFIFO71に上書きしている。
図13はログデータを送信FIFO72から情報処理端末用インターフェース回路37を介して情報処理端末5に送信する際のタイミングチャートである。ログデータは図13に示したタイミングチャートに従って情報処理端末5に送信される。情報処理端末用インターフェースは、例えばNANDアクセスログ端子、クロック端子、I/O端子、データバリッド端子およびEOPフラグ端子を含む。I/O端子は例えば8bitである。NANDアクセスログ端子がハイレベルのとき、DQ端子を介してNANDアクセスログデータが送信され、NANDアクセスログ端子がローレベルの時、DQ端子を介してFWログデータが送信される。ログデータ送信時には、データバリッドがハイレベルになる。EOPフラグ端子がハイレベルになると、ログデータの最後であることが示され、データバリッド端子がローレベルになる。無効データのサイクルを挟んで、データバリッド端子がハイレベルになり、EOPフラグ端子がローレベルになり、別のログデータが送信される。無効データのサイクルは複数であってもよい。出力クロック端子の立ち下がりのタイミングで、情報処理端末5はコントローラ3からのログデータを取り込む。
情報処理端末5へFWログデータ、NANDアクセスログデータのどちらか一方が出力される場合、ログデータの種類を切り替える条件は、ホスト装置4のリクエストによる割り込みでもよいし、外部ピンの切り替えでもよいし、レジスタ73によって設定されてもよい。また、情報処理端末5へFWログデータ、NANDアクセスログデータの両方が出力されてもよい。
NANDアクセスログデータのうち、特定のNANDログ種別に対応するNANDアクセスログデータのみを送信FIFO72に出力できるよう、レジスタ73で設定してもよい。図14はメモリシステム1のブロック図である。NANDアクセスログデータであるログA〜ログLは、ログデータの種類を表す例えば4ビットの領域を含み、0000ならアドレス、0010ならコマンド、0011ならリードデータと設定される。レジスタ73にログを選択するための設定値を設定し、例えば0000を設定すれば、アドレスを表すログデータのみ(ログC、ログF、ログI、ログL)が送信FIFO72に出力される。
このレジスタ73の設定値は4ビットの値とNANDアクセスログデータのNANDログ種別の値が完全一致するログデータのみを出力してもよいし、4ビット中特定のビットが一致するログデータを複数種類出力してもよい。例えば4ビット中2番目の、ビット1のログデータを出力するようにレジスタ73を設定すると、0010のコマンドと、0011のリードデータを表すログデータがどちらも送信FIFO72に出力される。
FWログデータのうち、特定のCPU種別に対応するFWログデータのみを送信FIFO72に出力できるよう、レジスタ73で設定してもよい。図15は3つのCPU330−332を備えたメモリシステム1のブロック図である。FWログデータは、ログデータのCPUの種類を表す例えば2ビットのフラグ領域を含み、00ならCPU330、01ならCPU331、11ならCPU332と設定する。レジスタ73にログを選択するための設定値を設定し、例えば00を設定すれば、CPU330のFWログデータのみが送信FIFO72に出力される。
このレジスタ73の設定値は2ビットの値と、図3に示すFWログデータのCPU種別の値が完全一致するログデータのみを出力してもよいし、2ビット中特定のビットが一致するログデータを複数種類出力してもよい。例えば2ビット中1番目の、ビット1のログデータを出力するようにレジスタ73を設定すると、CPU331と、CPU332のFWログデータが送信FIFO72に出力される。CPUが複数ある場合でも、特定のCPUのFWログデータを取得することができる。
レジスタ73の設定値によって、特定のログデータを送信FIFO72に出力しない制御をしてもよい。例えば、NANDアクセスログデータの出力設定時、レジスタ73において、3番目のビットを1、4番目のビットを0に設定し、ライトデータ010xとリードデータ011xを送信FIFO72に出力しないよう制御する。この制御は、NANDログ種別の値やCPU種別の値とレジスタ73の設定値が完全一致するログデータのみを出力しない制御でもよいし、特定のビットが一致するログデータを出力しない制御でもよい。NANDログ種別ごとに制御されてもよいし、CPU種別ごとに制御されてもよい。
ログデータの出力を、ビットマップを用いて管理してもよい。レジスタ73は、NANDログ種別やCPUログ種別のビットマップのそれぞれに対して、送信FIFO72への出力の有無を切り替える。
また、ログデータをログFIFO71から送信FIFO72に転送する際、ログデータの転送の開始と停止の契機が設定されてもよい。転送の開始と停止はコントローラ3によって制御される。
あらかじめユーザが設定した値をタイマ39でカウントし、その値に達したことが契機であってもよい。例えば、ログデータの転送の開始および終了の契機がタイマ39の値であるとき、開始の値をt1とし、終了の値をt2とする。タイマ39の値がt1に達すると、ログFIFO71から送信FIFO72にログデータの転送が開始される。タイマ39の値がt2に達すると、ログFIFO71からログFIFO72へのログデータの転送が停止される。
また、イベントが契機であってもよい。イベントは、例えば情報処理端末5からコントローラ3に対するリクエスト、コントローラ3からNANDフラッシュメモリ2に対するコマンド、または、NANDフラッシュメモリ2のコマンド実行に伴って発生するエラーである。例えば、ログデータの転送の開始および終了の契機をコントローラ3からNANDフラッシュメモリ2へのコマンドと設定する。開始のイベントを特定のデータの読み出しコマンドとし、終了のイベントを書き込みコマンドとする。コントローラ3がNANDフラッシュメモリ2に特定のデータを読み出すコマンドを発行すると、ログFIFO71から送信FIFO72にログデータの転送が開始される。コントローラ3が書き込みコマンドをNANDフラッシュメモリ2に発行すると、ログFIFO71からログFIFO72へのログデータの転送が停止される。開始の契機と停止の契機はタイマ39の値とイベントを組み合わせてもよいし、開始だけ、停止だけが設定されてもよい。
NANDアクセスログデータは、コントローラ3からログFIFO71に出力しているログデータであるが、NANDフラッシュメモリ2からNANDのレディ/ビジー情報やステータス情報などの情報をNANDアクセスログデータの一部に書き込んでもよい。換言すれば、NANDアクセスログデータは、コントローラ3からNANDフラッシュメモリ2に送信される情報に加えて、NANDフラッシュメモリ2からコントローラ3に送信される情報を含んでもよい。ステータス情報は、例えばコマンドの実行結果やNANDフラッシュメモリ2の電圧情報である。電圧情報は例えば書き込み、読み出しおよび消去電圧である。
以上説明した実施形態によって、情報処理端末5はFWログデータやNANDアクセスログデータをメモリシステム1から受け取り、メモリシステム1の不具合解析に用いられることが可能になる。メモリシステム1に不具合が生じた際、ユーザまたは開発者が解析を行い、詳細な情報を得ることができるため、原因の発見が容易になる。
(第2の実施形態)
第2の実施形態に係るメモリシステムはログデータを不揮発化する。図16および図17を用いて、ログデータをバッファメモリ34に保存する動作について説明する。
第2の実施形態に係るメモリシステムはログデータを不揮発化する。図16および図17を用いて、ログデータをバッファメモリ34に保存する動作について説明する。
図16はメモリシステム1の一部を省略したブロック図である。以下に説明する以外の構成は、図1に準ずるものとする。コントローラ3はバッファメモリ34を備える。NANDフラッシュメモリ2がエラーを起こしているとコントローラ3が判断したとき、コントローラ3はログFIFO71からログデータをバッファメモリ34に転送する。バッファメモリ34に一時的に保存されたログデータは、NANDフラッシュメモリ2へ書き込まれ不揮発化される。このとき、ログデータはユーザデータの保存領域に書き込まれてもよいし、システム領域に書き込まれてもよい。また、ログデータが書き込まれるNANDフラッシュメモリ2は、エラーを起こしたチップでも、起こしていないチップでもよい。
図17はログデータをNANDフラッシュメモリ2に保存する動作のフローチャートである。コントローラ3がNANDフラッシュメモリ2に書き込み動作や読み出し動作などを命令したとき(S301)、NANDフラッシュメモリ2にエラーが起こらなければ(S302_No)、NANDアクセスログデータはログFIFO71からバッファメモリ34に転送されない。NANDフラッシュメモリ2のエラーが起これば(S302_Yes)、コントローラ3はNANDアクセスログデータをログFIFO71からバッファメモリ34に転送する(S303)。バッファメモリ34に一時的に保存されたNANDアクセスログデータは、NANDフラッシュメモリ2に書き込まれ、不揮発化される(S304)。情報処理端末5が接続されたとき、NANDアクセスログデータはNANDフラッシュメモリ2からコントローラ3に読み出される(S305)。NANDアクセスログデータがコントローラ3から情報処理端末5に送信され、NANDアクセスログデータはユーザまたは開発者によって解析される(S306)。
ログデータをログFIFO71から情報処理端末5に送信するより、バッファメモリ34に送信する方が送信速度は速い。このため、第2の実施形態では複数のNANDフラッシュメモリ2や複数のCPU33のログデータを保存することが可能である。また、DRAMに送信したログデータをNANDフラッシュメモリ2に書き込み、不揮発化することで、情報処理端末5が接続されていない場合でも、NANDフラッシュメモリ2にエラーが起こった時点のログデータを保存することが可能になる。
(第3の実施形態)
第3の実施形態に係るメモリシステムを含む情報処理システムでは、ログデータを用いて期待値を作成し、期待値と比較してメモリシステムを評価できる。
第3の実施形態に係るメモリシステムを含む情報処理システムでは、ログデータを用いて期待値を作成し、期待値と比較してメモリシステムを評価できる。
図18は、ログデータと期待値の比較によるメモリシステム1の評価機能のフローチャートである。メモリシステム1の開発時や出荷評価時に、予めメモリシステム1の正常動作時に記憶されるログデータから期待値を作成する。情報処理端末5は、作成されたメモリシステム1の期待値をメモリシステム1の評価前に備えており、解析したいメモリシステム1を接続したとき、メモリシステム1から送信されるログデータを送信値として期待値と比較し、メモリシステム1の評価を行う。送信値と期待値との比較の期間の契機は時間でもイベントでもよい。期待値および送信値とするログデータは、NANDアクセスログデータでも、FWログデータでもよく、複数のNANDアクセスログデータ、複数のFWログデータ、または、NANDアクセスログデータとFWログデータ、を組み合わせて期待値を導いてもよい。
情報処理端末5にメモリシステム1を接続し(S401)、メモリシステム1を動作させて送信値を取得する(S402)。情報処理端末5は、送信値と情報処理端末5内の期待値を比較する(S403)。期待値と送信値が一致していれば(S404_Yes)、メモリシステム1をそのまま稼働し続ける。期待値と送信値が一致しなければ(S404_No)情報処理端末5は、メモリシステム1のコントローラ3に動作停止信号を送信し(S405)、メモリシステム1の動作が終了する(S406)。
また、この期待値は、メモリシステム1が備えるNANDフラッシュメモリ2から読み出されてもよい。出荷評価時に、メモリシステム1自身の期待値を作成し、NANDフラッシュメモリ2に書き込んでおく。メモリシステム1に不具合が起き、解析の必要がある場合、情報処理端末5はNANDフラッシュメモリ2から期待値を読み出し、実際に動作しているメモリシステム1の送信値と比較する。比較した結果、送信値と期待値が一致していなければ、情報処理端末5はメモリシステム1に動作停止信号を送信する。期待値および送信値とするログデータは、NANDアクセスログデータでも、FWログデータでもよく、複数のNANDアクセスログデータ、複数のFWログデータ、または、NANDアクセスログデータとFWログデータ、を組み合わせて導いてもよい。
期待値と送信値が異なる場合、情報処理端末5はメモリシステム1に動作を停止する信号を送り、メモリシステム1の動作を停止する。このことで、メモリシステム1に不具合が起きた時点の状態の把握が容易になる。
(第4の実施形態)
第4の実施形態はNANDフラッシュメモリにユーザデータを書き込む際に外部環境情報を書き込み、不具合解析を容易にする。NANDフラッシュメモリ2は書き込み時の温度や電圧などの外部環境の影響を受けやすい。外部環境によるNANDフラッシュメモリ2の不具合は、ログデータによる解析のみでは原因が特定できない虞がある。そこで、NANDフラッシュメモリ2にデータを書き込む際、コントローラ3は外部環境の情報を同時に書き込む。
第4の実施形態はNANDフラッシュメモリにユーザデータを書き込む際に外部環境情報を書き込み、不具合解析を容易にする。NANDフラッシュメモリ2は書き込み時の温度や電圧などの外部環境の影響を受けやすい。外部環境によるNANDフラッシュメモリ2の不具合は、ログデータによる解析のみでは原因が特定できない虞がある。そこで、NANDフラッシュメモリ2にデータを書き込む際、コントローラ3は外部環境の情報を同時に書き込む。
図19および図20を用いて、環境情報を書き込む処理について説明する。環境情報は、例えば温度情報である。また、第4の実施形態では温度センサ7はNANDフラッシュメモリ2内部に含まれるものとする。図19は、メモリセルアレイ21のブロックのデータ配置を示す図である。NANDフラッシュメモリ2にはブロックが備えられ、ブロックは複数のページを持つ。ページは、一定のデータ量で区切られており、先頭から順にオフセットが付けられている。各オフセットに対応する領域にはユーザデータと、ユーザデータから生成される誤り訂正符号が書き込まれる。ユーザデータと誤り訂正符号のセットをフレームと呼ぶ。ページはユーザデータが書き込まれない冗長領域を備えてもよい。
フレームのフォーマットの例を図20に示す。フレームの先頭からデータ領域、環境情報領域、誤り訂正符号領域とする。データ領域には、ホストから送られてきたユーザデータや、コントローラ3で使用されるシステムデータが書き込まれる。環境情報領域には、コントローラ3が温度センサ7から受け取ったNANDフラッシュメモリ2の温度が書き込まれる。誤り訂正符号領域は、データ領域と環境情報領域の後ろにあり、誤り訂正符号が書き込まれる。誤り訂正符号は、データ領域と環境情報領域にかき込まれるデータから生成される。ホスト装置4からユーザデータを受け取ると、コントローラ3はNANDフラッシュメモリ2のページにデータを書き込む。コントローラ3はデータを書き込む際、温度センサ7からNANDフラッシュメモリ2の温度情報を取得し環境情報領域に書き込む。環境情報領域と誤り訂正符号領域は、冗長領域に書き込まれてもよい。
第4の実施形態により、ユーザデータを書き込む時の温度情報がNANDフラッシュメモリ2に記憶される。メモリシステム1に不具合が生じ、ユーザデータが正常に読み出せないとき、ユーザデータと共に書き込まれている温度情報を参考にして、不具合の原因を解析することができる。
(変形例1)
温度情報に加えて、コントローラ3は時系列情報を書き込む。時系列情報は環境情報領域に記憶される。ホスト装置4から送られてきたユーザデータをコントローラ3が受け取り、NANDフラッシュメモリ2に書き込む際、ユーザデータはコントローラ3内部のカウンタ38によって順番を付けられる。
温度情報に加えて、コントローラ3は時系列情報を書き込む。時系列情報は環境情報領域に記憶される。ホスト装置4から送られてきたユーザデータをコントローラ3が受け取り、NANDフラッシュメモリ2に書き込む際、ユーザデータはコントローラ3内部のカウンタ38によって順番を付けられる。
図21は、ユーザデータを複数のブロックに書き込むときの、データの書き込み順を表した図である。コントローラ3は、ユーザデータをホスト装置4から受け取ると、NANDフラッシュメモリ2のブロックBLKにデータを書き込む。このとき、(1)BLK1、ページ0のオフセット0〜4にデータを書き込み、(2)BLK2のページ0のオフセット0〜3にデータを書き込み、(3)BLK1ページ0のオフセット5〜7にデータを書きこみ、(4)BLK2ページ0のオフセット4〜7にデータを書き込むとする。データをブロックBLKに書き込んだ順番に番号が環境情報領域に書き込まれる。つまり、BLK1のページ0、オフセット0〜4の環境情報領域にはカウンタ番号1が、BLK2のページ0、オフセット0〜3の環境情報領域にはカウンタ番号2が書き込まれる。また、順番は、ホスト装置4からコントローラ3へのリクエスト順でもよい。例えば、ホスト装置4がコントローラ3にユーザデータを送り、書き込みを要求する。カウンタはカウンタ番号を1とし、オフセットの環境情報にカウンタ番号1が書き込まれる。次にホスト装置4がコントローラ3に別のユーザデータの書き込みを要求すると、カウンタ38はカウンタ番号をカウントアップする。オフセットの環境情報にはカウンタ番号2が書き込まれる。
メモリシステム1がNANDフラッシュメモリ2を複数備える場合、ホスト装置4から受け取ったユーザデータは複数のNANDフラッシュメモリ2に跨って書き込まれる。このときも、NANDフラッシュメモリ2にユーザデータを書き込む前に、ユーザデータに順番をつけ、環境情報領域に記憶させる。
オフセットの環境情報領域に温度情報に加えて時系列情報を書き込むことによって、解析の際に図22のようなグラフを作成することが出来る。限界温度はNANDフラッシュメモリ2が正常に動作する温度の上限である。201〜204はオフセットのカウンタ番号を表し、T201〜T204は、201〜204それぞれの時点での温度を表す。例えば、204のデータの読み出しでエラーが検出されたとき、T204は限界温度に近いことから、温度による書き込みエラーの可能性が高いことを推測できる。NANDフラッシュメモリ2にエラーが起こった際、エラー周辺の時系列のデータの環境情報から温度のグラフを作成し、温度変化の様子を知ることが可能になり、エラーの原因が外部要因であるかどうかを判断することが可能になる。
時系列情報は、カウンタ値以外に、時刻情報を用いてもよい。メモリシステム1が例えば、Real-Time-Clockのようなタイマを備えている場合、Real-Time-Clockの時刻情報を時系列情報として用いる。また、ホスト装置4からコントローラ3が時刻情報を取得し、時系列情報として書き込んでもよい。
変形例1によって、複数のNANDフラッシュメモリ2のブロックや、複数のNANDフラッシュメモリ2に跨ってユーザデータが書かれている場合でも、時系列と温度情報を基にして、不具合の原因を解析することができる。
(変形例2)
メモリシステム1は、NANDフラッシュメモリ2の効率的な利用のために、ガベージコレクションを行う。ガベージコレクションは、消去可能なブロックを生成するために、有効データを空きブロックにコピーする動作である。ガベージコレクションは、コントローラ3によって行われる。ガベージコレクションによって移動されたデータは、ガベージコレクションされる前の古い物理アドレスとは異なる、新しい物理アドレスを持つ。変形例2では、フレームの環境情報領域に、ガベージコレクションされる前の古い物理アドレスをユーザデータと共に書き込む。古い物理アドレスは、チップ番号やブロックアドレス、ページアドレス、オフセットを含む。
メモリシステム1は、NANDフラッシュメモリ2の効率的な利用のために、ガベージコレクションを行う。ガベージコレクションは、消去可能なブロックを生成するために、有効データを空きブロックにコピーする動作である。ガベージコレクションは、コントローラ3によって行われる。ガベージコレクションによって移動されたデータは、ガベージコレクションされる前の古い物理アドレスとは異なる、新しい物理アドレスを持つ。変形例2では、フレームの環境情報領域に、ガベージコレクションされる前の古い物理アドレスをユーザデータと共に書き込む。古い物理アドレスは、チップ番号やブロックアドレス、ページアドレス、オフセットを含む。
図23は、ガベージコレクションによるデータの移動を示した図である。フレーム221にあったデータがフレーム222に移動したとき、フレーム222の環境情報領域にはフレーム221の物理アドレスが書き込まれる。環境情報領域には、ブロック番号1、ページ番号1およびオフセット2という物理アドレスが書き込まれる。
また、ユーザデータの物理アドレスはガベージコレクションだけではなく、例えばリフレッシュやウェアレベリングによっても変更される。この場合でも、変更前の古い物理アドレスが環境情報領域に書き込まれる。
変形例2により、誤ったデータが読み出された場合、物理アドレス変更時に誤ったデータが書き込まれたのか、物理アドレス変更前から誤ったデータが書き込まれていたのかの判断が容易となる。
(変形例3)
環境情報領域は温度情報、時系列情報、物理アドレスを自由に組み合わせて保持してよい。また、これらの環境情報のデータの大きさは任意である。
環境情報領域は温度情報、時系列情報、物理アドレスを自由に組み合わせて保持してよい。また、これらの環境情報のデータの大きさは任意である。
以上に示した実施形態により、メモリシステム1に不具合が生じた際、不具合の原因の分析がより容易になる。
(第5の実施形態)
第5の実施形態では、NANDアクセスログデータのサイズが、ログデータに記憶されるコマンドの種類に応じて変更される。以下の記載で、NANDアクセスログデータとは内部コマンドを記憶した実行ログデータを意味する。図24(A)は、NANDアクセスログデータのログフォーマットの一例である。本実施形態のメモリシステム1は4つのプレーン(プレーン0,プレーン1,プレーン2,プレーン3)を有し、複数のプレーンの同一ページに一括してアクセスするコマンドを実装している。第1の実施形態では、図4に示すような8ByteのNANDアクセスログデータのログフォーマットを使用した。本実施形態のNANDアクセスログデータは、NANDアクセスログ種別、コマンド、制御パラメータ、ブロックアドレス、ページアドレス、Timerを含む。このNANDアクセスログデータを通常ログと呼ぶ。通常ログは、16Byteである。NANDアクセスログ種別情報は、NANDアクセスログデータの種類やサイズを表す4bitの情報である。
第5の実施形態では、NANDアクセスログデータのサイズが、ログデータに記憶されるコマンドの種類に応じて変更される。以下の記載で、NANDアクセスログデータとは内部コマンドを記憶した実行ログデータを意味する。図24(A)は、NANDアクセスログデータのログフォーマットの一例である。本実施形態のメモリシステム1は4つのプレーン(プレーン0,プレーン1,プレーン2,プレーン3)を有し、複数のプレーンの同一ページに一括してアクセスするコマンドを実装している。第1の実施形態では、図4に示すような8ByteのNANDアクセスログデータのログフォーマットを使用した。本実施形態のNANDアクセスログデータは、NANDアクセスログ種別、コマンド、制御パラメータ、ブロックアドレス、ページアドレス、Timerを含む。このNANDアクセスログデータを通常ログと呼ぶ。通常ログは、16Byteである。NANDアクセスログ種別情報は、NANDアクセスログデータの種類やサイズを表す4bitの情報である。
コマンドフィールドは、コントローラ3がNANDフラッシュメモリ2を制御するためのコマンドを表している。NANDフラッシュメモリを制御するためのコマンドは、例えば、コントローラ3がNANDフラッシュメモリ2に発行するコマンドや、NANDフラッシュメモリ2がレディ状態であるという返答をコントローラ3が待機するコマンドである。制御パラメータは、NANDフラッシュメモリへのコマンドを発行する際のオプション指定や、コントローラの動作の制御に使われる。例えば、制御パラメータはNANDフラッシュメモリに発行するアドレスのバイト数の指定、NANDフラッシュメモリからのリードデータの誤り訂正を実行するか否かの指定、NANDフラッシュメモリがレディ状態になってから次のコマンドを発行するか否かの指定を含む。ブロックアドレス、ページアドレスはそれぞれ、コマンドによってデータが書き込みおよび読み出しされるNANDフラッシュメモリ2のアドレスを示す。ブロックアドレス0は、プレーン0のブロックアドレスを示す。ブロックアドレス1はプレーン1のブロックアドレスを示す。ブロックアドレス2はプレーン2のブロックアドレスを示す。ブロックアドレス3はプレーン3のブロックアドレスを示す。また、ページアドレスフィールドは、ブロック内ページアドレスを示す。複数のプレーンに一括してアクセスするコマンドは、同一のブロックアドレスを持っている場合がある。このコマンドのNANDアクセスログデータは、重複したブロックアドレスを省略してもよい。
図24(B)は、4つのプレーン0,1,2,3に同時にアクセスし、ブロックアドレス0にアクセスするコマンドのNANDアクセスログデータである。このNANDアクセスログデータのように、ブロックアドレス1以降のアドレスを省略しているログを短縮ログと呼ぶ。4つのプレーンのブロックアドレスが同一である場合の短縮ログは、10Byteである。10Byteの短縮ログは、NANDアクセスログ種別が“0001”である。
NANDフラッシュメモリ2にアクセスするためのコマンドは、アドレスを有さないコマンドを含む。アドレスを持たないコマンドのNANDアクセスログデータは、図24(C)に示すようにアドレスを示す領域を省略され、サイズは6Byteとする。このような6ByteのNANDアクセスログデータは、NANDアクセスログ種別は“0011”である。
また、コントローラ3は、ログFIFO71へのバースト転送中のコマンドログの書き込みを省略してもよい。図24(D)はバースト転送の開始時と終了時にログFIFO72に書き込まれるNANDアクセスログデータのフォーマットの一例である。バースト転送時に記憶されるNANDアクセスログデータをバーストログと呼ぶ。バースト転送とは、コントローラ3が読み出しを開始するページと読み出しを終了するページのアドレスを指定し、読み出しを開始するページのアドレスと読み出しを終了するページのアドレスの間にある全てのページから、アドレス順にデータを読み出す動作である。
バースト転送の開始時にはバースト先頭コマンドが、NANDフラッシュメモリ2に送信される。バースト転送中の、アドレス順にデータを読み出す動作の間は、読み出しコマンドがNANDフラッシュメモリ2に送信される。バースト転送の終了時にはバースト末尾コマンドがNANDフラッシュメモリ2に送信される。バースト先頭コマンドは、バースト転送の最初のページを指定し、最初のページおよびそれに連続するページのデータの読み出しと読み出したデータの転送を指示するコマンドである。バースト末尾コマンドはバースト転送の最後のページを指定し、最後のページのデータの読み出しと読み出したデータの転送を指示するコマンドである。バースト先頭コマンドのログは、ログ種別情報に例えば“1010”を持ち、バースト末尾コマンドのログは“1011”である。バースト転送を行う際は、バースト先頭コマンドのバーストログおよびバースト転送中の読み出しコマンドのバーストログ、バースト末尾コマンドのバーストログが、ログFIFO71に記憶される。
バースト転送をCPU33が検出すると、CPU33はログFIFO71を制御する。ログFIFO71は、CPU33の制御に基づいて、バースト先頭コマンドからバースト末尾コマンドが送信されるまでの、読み出しコマンドの通常ログを記憶しない。
ログのサイズが一定である場合は、ログFIFO71および送信FIFO72の最小管理単位は、ログのサイズと同じである。ログのサイズがログデータに含まれるコマンドに応じて変更される場合、コントローラ3はログFIFO71および送信FIFO72の最小管理単位を1Byteとして管理する。図25は、128Byteの容量を持つ、ログFIFO71のブロック図である。FIFOアドレスは、ログFIFO71内の、ログの書き込み先のアドレスを表す。1つ目のログをlog0、2つ目のログをlog1とする。コントローラ3は、ログ種別情報からログの種類やサイズを識別し、ログFIFO71にNANDアクセスログデータを書き込む。log0は、ログ識別情報から16Byteであることを識別され、FIFOアドレス0から15までの領域に書き込まれる。log1は、ログ識別情報から6Byteであることを識別され、FIFOアドレス16から21までの領域に書き込まれる。また、ログFIFO71の容量を超えてログが書き込まれる場合、第1の実施形態と同様に、書ききれなかったNANDアクセスログデータは先頭から書き込まれる。例えば、128Byteの容量を持つログFIFO71は、FIFOアドレス127までNANDアクセスログデータを書き込むと、再びFIFOアドレス0からNANDアクセスログデータを書き込む。既に書き込まれていたログは新しいログに上書きされる。送信FIFO72についても同様である。
第5の実施形態により、ログのサイズを変化させ、ログFIFO71および送信FIFO72の使用効率を改善することができる。また、ここでは4プレーンに同時にアクセスする際の実施形態を挙げたが、同時にアクセスするのは4プレーンに限らない。バーストログの取り扱いは、1プレーンに単独でアクセスした場合にも適用される。
以上に示した実施形態により、メモリシステム1に不具合が生じた際、不具合の原因の分析がより容易になる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1:メモリシステム、2:不揮発性メモリ(NANDフラッシュメモリ)、3:コントローラ、4:ホスト装置、5:情報処理端末、6:NANDインターフェース、7:温度センサ、21:メモリセルアレイ、22:ロウデコーダ、23:ドライバ、24:センスアンプモジュール、25:アドレスレジスタ、26:コマンドレジスタ、27:シーケンサ、28:ページバッファ、31:ホストインターフェース回路、32:メモリ、33:CPU、34:バッファメモリ、35:NANDインターフェース回路、36:ECC回路、37:情報処理端末用インターフェース回路、38:カウンタ、39:タイマ
Claims (31)
- 不揮発性メモリと、
第1のメモリを含み、前記不揮発性メモリを制御するためのコマンドの履歴を含むログデータを前記第1のメモリに書き込むコントローラと、
を備える、メモリシステム。 - 前記ログデータは、前記コントローラが前記不揮発性メモリにコマンドを発行するたびに書き込まれる、
請求項1に記載のメモリシステム。 - 前記コントローラは
前記不揮発性メモリへのデータの書き込み動作、
前記不揮発性メモリに格納するデータの消去動作、または
前記不揮発性メモリに格納するデータの読み出し動作、
の指示を含む前記コマンドを前記不揮発性メモリに発行する、請求項1に記載のメモリシステム。 - ホストと通信する第1のインターフェースを更に備え、
前記コントローラは、
前記前記第1のインターフェースを介して前記ホストから受信したユーザデータの書き込み動作、
前記不揮発性メモリに記憶した前記ユーザデータの消去動作、または
前記不揮発性メモリに記憶した前記ユーザデータの読み出し動作、
の指示を含む前記コマンドを前記不揮発性メモリに発行する、請求項1に記載のメモリシステム。 - 前記ログデータは、前記コントローラまたは前記不揮発性メモリの温度情報を更に含む、請求項1に記載のメモリシステム。
- 前記ログデータは、前記コントローラのコマンドの発行順を更に含む、請求項5に記載のメモリシステム。
- バスを更に備え、
前記バスは前記コントローラから前記不揮発性メモリへ出力する信号線と、前記不揮発性メモリから前記コントローラへ出力する信号線を含み、
前記コマンドは前記コントローラから前記不揮発性メモリへ出力する信号線によって送信され、
前記ログデータは、前記不揮発性メモリから前記コントローラに出力する信号線によって送信される前記不揮発性メモリのステータスを更に含む、
請求項1に記載のメモリシステム。 - 情報処理装置と通信する第2のインターフェースを更に備え、
前記コントローラは、前記第2のインターフェースを介して前記ログデータを前記情報処理装置に送信する、
請求項1に記載のメモリシステム。 - 前記コントローラは第2のメモリを更に含み、
前記コントローラは、前記コマンドの実行に伴う前記不揮発性メモリのエラーを契機として、前記ログデータを前記第2のメモリから前記不揮発性メモリに書き込む、
請求項8に記載のメモリシステム。 - 前記コントローラは第2のメモリを更に含み、
前記コントローラは、前記コマンドの実行に伴う前記不揮発性メモリのエラーを契機として、
前記第1のメモリから前記第2のメモリに前記ログデータを書き込む、
請求項8に記載のメモリシステム。 - 前記コントローラは第2のメモリを更に含み、
前記コントローラは第1の契機条件が成立したことに応じて前記第1のメモリから前記第2のメモリへの前記ログデータの書き込みを開始し、第2の契機条件が成立したことに応じて前記ログデータの書き込みを停止する、
請求項10に記載のメモリシステム。 - 前記コントローラはタイマを含み、
前記第1の契機条件および前記第2の契機条件の少なくとも一方は、前記タイマの値が第1の値になることである、
請求項11に記載のメモリシステム。 - 前記第1の契機条件および前記第2の契機条件の少なくとも一方は、第1のログデータが前記第1のメモリに書き込まれることである、
請求項11に記載のメモリシステム。 - 前記ログデータはフラグ領域を含み、
前記第1の契機条件が成立してから前記第2の契機条件が成立する前に、前記第2のメモリが空いていない場合、前記コントローラは前記第1のメモリから読み出した前記ログデータを破棄し、
前記第2のメモリが空いていない状態から空いている状態になった時、前記コントローラは、前記第1のメモリから前記第2のメモリに初めて書き込まれるログデータの前記フラグ領域にフラグを立てる、
請求項11に記載のメモリシステム。 - 前記フラグは、破棄されたログデータが存在することを前記情報処理装置に通知する、
請求項14に記載のメモリシステム。 - 前記第1のログデータは、前記コントローラから前記不揮発性メモリに発行されるユーザデータの書き込み動作、読み出し動作または消去動作の命令である、請求項13に記載のメモリシステム。
- 前記第1の契機条件および前記第2の契機条件の少なくとも一方は、前記不揮発性メモリがコマンドを実行することに伴うエラーである、請求項11に記載のメモリシステム。
- 前記第1の契機条件および前記第2の契機条件の一方は、タイマの値が第1の値になることであり、前記第1の契機条件および前記第2の契機条件の他方は第1のログデータが前記第1のメモリに書き込まれることである、請求項11に記載のメモリシステム。
- 前記コントローラは、前記ログデータを前記第2のメモリから前記情報処理装置に送信する、請求項10に記載のメモリシステム。
- 前記第2のメモリは複数の領域を含み、
前記コントローラは先入れ先出し方式で前記ログデータを前記複数の領域に書き込んで前記情報処理装置に送信し、
前記複数の領域のうちの一つである第1の領域に書き込まれた前記ログデータを前記情報処理装置に送信する前に、前記第1の領域に新たな前記ログデータを上書きした際、前記ログデータが上書きされたことを前記情報処理装置に送信する、
請求項19に記載のメモリシステム。 - 請求項1に記載のメモリシステムと、
情報処理装置と、を備え、
前記情報処理装置は前記メモリシステムのログデータの期待値を保持し、
前記情報処理装置は前記メモリシステムから送信されてきたログデータの送信値が前記期待値と一致しない時、前記メモリシステムに停止を指示する信号を送信する、
情報処理システム。 - 前記期待値および前記送信値は、前記メモリシステムのログデータに基づいて判断する、
請求項21に記載の情報処理システム。 - 前記情報処理装置は、
前記メモリシステムの正常動作時の前記ログデータを前記メモリシステムから取得する、
請求項21に記載の情報処理システム。 - 不揮発性メモリと、
ホストと通信可能で、前記不揮発性メモリの少なくとも温度情報と電圧情報を含む環境情報と、前記ホストから受け取ったユーザデータと、前記環境情報と前記ユーザデータとを訂正する誤り訂正符号を前記不揮発性メモリに書き込むコントローラと、
を備える、メモリシステム。 - 前記コントローラは、第1のアドレスを持った前記ユーザデータを別の第2のアドレスにコピーするとき、第1のアドレスを前記環境情報として前記不揮発性メモリに書き込む、
請求項24に記載のメモリシステム。 - 前記不揮発性メモリは複数のメモリチップを備え、
前記コントローラは、
それぞれが前記複数のメモリチップの数に応じた容量を有する複数の領域に前記第1のメモリを論理的に区切り、
前記複数の領域は前記複数のメモリチップにそれぞれ対応し、
前記コントローラは前記複数のメモリチップのうちの1つのメモリチップに発行したコマンドのログを、前記複数の領域のうち、少なくとも前記1つのメモリチップに対応する1つの領域に記憶させる、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記不揮発性メモリが第1の数の時、前記第1のメモリを第1の容量ごとに区切り、
前記不揮発性メモリが第2の数の時、前記第1のメモリを第2の容量ごとに区切り、
前記第2の数は前記第1の数よりも大きく、前記第1の容量は前記第2の容量よりも大きい、
請求項26に記載のメモリシステム。 - 前記不揮発性メモリは前記コントローラが同時にアクセス可能である複数のプレーンを含み、
前記複数のプレーンは、消去の単位である複数のブロックを含み、
前記コマンドは、前記複数のブロックを指定するアドレスを含み、
前記コントローラは、前記コマンドによって前記複数のプレーンに共通するブロックアドレスを指定する場合、前記コマンドのうち重複しているブロックアドレスを省略したログデータを前記第1のメモリに書き込む、
請求項1に記載のメモリシステム。 - 前記コントローラは第1のコマンドを発行すると前記第1のコマンドに対応するログデータを前記第1のメモリへ書き込んだ後に前記第1のメモリへのログデータの書き込みを停止し、第2のコマンドを発行すると前記第2のコマンドに対応するログデータから前記第1のメモリへの前記ログデータの書き込みを再開する、
請求項1に記載のメモリシステム。 - 前記第1のコマンドは、前記不揮発性メモリの連続したページからデータを読み出す動作の先頭のコマンドであり、前記第2のコマンドは、前記連続したページからデータを読み出す動作の末尾のコマンドである、
請求項29に記載のメモリシステム。 - 前記コントローラは、前記ログデータに格納されるコマンドの種類に応じて、
異なる大きさの前記ログデータを書き込む、
請求項1に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/185,104 US11853599B2 (en) | 2020-03-31 | 2021-02-25 | Memory system and information processing system |
US18/501,943 US20240061620A1 (en) | 2020-03-31 | 2023-11-03 | Memory system and information processing system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020062221 | 2020-03-31 | ||
JP2020062221 | 2020-03-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021163512A true JP2021163512A (ja) | 2021-10-11 |
Family
ID=78003566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020173167A Pending JP2021163512A (ja) | 2020-03-31 | 2020-10-14 | メモリシステムおよび情報処理システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021163512A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023058504A1 (ja) | 2021-10-04 | 2023-04-13 | 株式会社アマダ | ビーム整形器 |
JP7436901B1 (ja) | 2022-10-12 | 2024-02-22 | 東芝情報システム株式会社 | テスト用nand装置及びnand装置のデバッグ方法 |
-
2020
- 2020-10-14 JP JP2020173167A patent/JP2021163512A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023058504A1 (ja) | 2021-10-04 | 2023-04-13 | 株式会社アマダ | ビーム整形器 |
JP7436901B1 (ja) | 2022-10-12 | 2024-02-22 | 東芝情報システム株式会社 | テスト用nand装置及びnand装置のデバッグ方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11853599B2 (en) | Memory system and information processing system | |
US10564690B2 (en) | Power interrupt management | |
JP4524309B2 (ja) | フラッシュメモリ用のメモリコントローラ | |
US8984253B2 (en) | Transaction log recovery | |
US9268687B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
KR101252317B1 (ko) | 적어도 하나의 공통 데이터 i/o 버스에 접속된 다수의비휘발성 메모리의 플래시 블록에 논리 데이터 블록을저장하는 방법 및 시스템 | |
US8386699B2 (en) | Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same | |
US8250292B2 (en) | Data writing method for a flash memory, and controller and storage system using the same | |
US20120278535A1 (en) | Data writing method, memory controller, and memory storage apparatus | |
TWI498899B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
US8037236B2 (en) | Flash memory writing method and storage system and controller using the same | |
TWI420313B (zh) | 資料管理方法、記憶體控制器與嵌入式記憶體儲存裝置 | |
US9037781B2 (en) | Method for managing buffer memory, memory controllor, and memory storage device | |
JP2021163512A (ja) | メモリシステムおよび情報処理システム | |
CN114300032A (zh) | 一种检查存储介质失效的方法、装置和固态硬盘 | |
US9778862B2 (en) | Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus | |
TWI616807B (zh) | 資料寫入方法以及儲存控制器 | |
TWI648739B (zh) | 記憶體管理方法與儲存控制器 | |
TWI651650B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
US9152348B2 (en) | Data transmitting method, memory controller and data transmitting system | |
JP5447617B2 (ja) | フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリ制御方法 | |
JP5908106B2 (ja) | 妥当性マスクを記憶する装置および方法ならびに操作装置 | |
TWI823649B (zh) | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及電子裝置 | |
US11977745B2 (en) | Data retry-read method, memory storage device, and memory control circuit element | |
JP2008176606A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |