(57)【要約】【課題】ブロックの保護の有無をホスト機器が確認することができるメモリシステムを提供する。【解決手段】一実施形態のメモリシステムは、ホスト機器500からのチップセレクト信号/CSの受信直後に受信される信号をコマンドとして認識するコントローラ200と、複数のブロックを含むメモリ100とを具備し、認識されたコマンドが第１コマンドである場合に、少なくとも一の特定のブロックに対するメモリ100の書き込み動作、及び消去動作の少なくとも一方が禁止されているかを示す情報をホスト機器500に出力する。【選択図】図６
2018014050.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機器からのチップセレクト信号の受信直後に受信される信号をコマンドとして認識するコントローラと、
複数のブロックを含み、前記複数のブロックの夫々を単位としてデータの消去動作が可能なメモリとを具備し、
前記コントローラは、前記コントローラにより認識されたコマンドが第１コマンドである場合に、前記複数のブロックのうちの少なくとも一の特定のブロックに対する前記メモリの書き込み動作、及び消去動作の少なくとも一方が禁止されているかを示す第１情報を前記ホスト機器に出力する
ことを特徴とするメモリシステム。
【請求項２】
前記コントローラは、前記ホスト機器から第２コマンドを受信し、
前記特定のブロックは、前記第２コマンドによって前記ホスト機器に指定される
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記コントローラは、前記ホスト機器から第３コマンドを受信し、前記第３コマンドに応答して、前記第３コマンドによって前記ホスト機器に指定されたブロックに対する書き込み動作、及び消去動作の少なくとも一方を禁止する
ことを特徴とする請求項１または２に記載のメモリシステム。
【請求項４】
前記コントローラは、前記第１コマンドに応答して、前記第２コマンドによって指定されたブロックのアドレスにアドレスが連続する複数のブロックに関する前記第１情報を前記アドレスの順番で順次出力する
ことを特徴とする請求項２に記載のメモリシステム。
【請求項５】
前記第１情報は、前記書き込み動作が禁止されているかを示す第２情報と、前記消去動作が禁止されているかを示す第３情報とを含む
ことを特徴とする請求項１乃至４のいずれか１項に記載のメモリシステム。 
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
記憶デバイスとして、ＮＡＮＤ型フラッシュメモリが広く知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Toshiba Datasheet, TC58NVG0S3HTA00, 2012年8月31日
【非特許文献２】Toshiba Datasheet, TC58BVG0S3HTA00, 2012年8月31日
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ブロックの保護の有無をホスト機器が確認することができるメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
実施形態のメモリシステムは、ホスト機器からのチップセレクト信号の受信直後に受信される信号をコマンドとして認識するコントローラと、複数のブロックを含み、前記複数のブロックの夫々を単位としてデータの消去動作が可能なメモリとを具備し、前記コントローラは、前記コントローラにより認識されたコマンドが第１コマンドである場合に、前記複数のブロックのうちの少なくとも一の特定のブロックに対する前記メモリの書き込み動作、及び消去動作の少なくとも一方が禁止されているかを示す第１情報を前記ホスト機器に出力する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係るメモリシステムの外観図である。
【図２】図２は、第１実施形態に係るメモリシステムの断面図である。
【図３】図３は、第１実施形態に係るメモリシステムの外部端子の機能を示すダイア    グラムである。
【図４】図４は、第１実施形態に係るメモリシステムの外観図である。
【図５】図５は、第１実施形態に係るメモリシステムの外部端子の機能を示すダイアグラムである。
【図６】図６は、第１実施形態に係るメモリシステムのブロック図である。
【図７】図７は、第１実施形態に係る半導体記憶装置のブロック図である。
【図８】図８は、第１実施形態に係るメモリシステムの読み出し時における各種信号のタイミングチャートである。
【図９】図９は、第１実施形態に係るメモリシステムの読み出し時における各種信号のタイミングチャートである。
【図１０】図１０は、第１実施形態に係るメモリシステムの読み出し時における各種信号のタイミングチャートである。
【図１１】図１１は、第１実施形態に係るメモリシステムの読み出し時における各種信号のタイミングチャートである。
【図１２】図１２は、第１実施形態に係るメモリシステムの書き込み時における各種信号のタイミングチャートである。
【図１３】図１３は、第１実施形態に係るメモリシステムの書き込み時における各種信号のタイミングチャートである。
【図１４】図１４は、第１実施形態に係るメモリシステムの書き込み時における各種信号のタイミングチャートである。
【図１５】図１５は、第１実施形態に係るメモリシステムの消去時における各種信号のタイミングチャートである。
【図１６】図１６は、第１実施形態に係るメモリシステムの消去時における各種信号のタイミングチャートである。
【図１７】図１７は、第１実施形態に係るメモリシステムのＮＡＮＤ型フラッシュメモリにおける保護対象のブロックを示す情報の記憶方法の一例を示す概念図である。
【図１８】図１８は、第１実施形態に係るメモリシステムのブロック保護時における各種信号のタイミングチャートである。
【図１９】図１９は、第１実施形態に係るメモリシステムのブロック保護動作を示すフローチャートである。
【図２０】図２０は、第１実施形態に係るメモリシステムのブロック保護動作時におけるコマンドシーケンスである。
【図２１】図２１は、第１実施形態に係るメモリシステムのブロック保護動作におけるコマンド識別処理を示すフローチャートである。
【図２２】図２２は、第１実施形態に係るメモリシステムのブロック保護動作完了後の動作を示すフローチャートである。
【図２３】図２３は、第１実施形態に係るメモリシステムのブロックの保護の有無の確認時の動作を示すフローチャートである。
【図２４】図２４は、第１実施形態に係るメモリシステムの特徴テーブルの構成の一例を示す説明図である。
【図２５】図２５は、図２４の特徴テーブルに格納されるステータスビットの定義を示す説明図である。
【図２６】図２６は、第１実施形態に係るメモリシステムのブロックの保護の有無の確認時におけるコマンドシーケンスである。
【図２７】図２７は、第１実施形態に係るメモリシステムの特徴テーブルの構成の変形例を示す説明図である。
【図２８】図２８は、図２７の特徴テーブルに格納されるステータスビットの定義を示す説明図である。
【図２９】図２９は、第１実施形態の変形例に係るメモリシステムのブロック図である。
【図３０】図３０は、第１実施形態に係るメモリシステムを利用したシステムの概念図である。
【図３１】図３１は、第１実施形態に係るメモリシステムを利用したシステムの概念図である。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
【０００８】
１．第１実施形態  
第１実施形態に係るメモリシステムについて説明する。
【０００９】
１．１  構成について  
１．１．１  メモリシステムの全体構成について  
まず、本実施形態に係るメモリシステムの大まかな全体構成について、図１及び図２を用いて説明する。図１は、本実施形態に係るメモリシステムの外観図であり、特に上面から見た様子を示し、図２は図１における２−２線に沿った断面図である。
【００１０】
図示するように、メモリシステム１は２つの半導体チップ１００、２００を含む。半導体チップ（メモリチップ）１００はＮＡＮＤ型フラッシュメモリ等の半導体メモリを含み、半導体チップ２００（コントローラチップ）は、メモリチップ１００を制御するコントローラを含む。これらの半導体チップ１００及び２００はリードフレーム３００に実装され、更に樹脂３５０によって封止されてパッケージングされている。
【００１１】
より具体的には、図２に示すように、リードフレーム３００のダイパッド３１０上にメモリチップ１００が搭載され、メモリチップ１００上にコントローラチップ２００が重ねられている。
【００１２】
コントローラチップ２００は、例えばボンディングワイヤ３４０により、リードフレームのインナーリード３２０に接続され、更に図示せぬボンディングワイヤによりメモリチップ１００とも接続されている。そして、メモリチップ１００、コントローラチップ２００、ダイパッド３１０、インナーリード３２０、及びボンディングワイヤ３４０が、例えば樹脂３５０によって封止されている。
【００１３】
インナーリード３２０は、樹脂３５０外部に露出されたアウターリード３３０に接続されている。そしてアウターリード３３０は、メモリシステム１の外部接続端子（外部接続ピン）として機能する。図１の例であると、第１ピンから第１６ピンまでの１６個の外部接続端子が用意されている。そしてメモリシステム１は、これらのピンを介して、メモリシステム１を制御する（より具体的には、メモリチップにアクセスする）ホスト機器と通信する。
【００１４】
図３は、各ピンの機能を示すダイアグラムである。図示するように、第１ピンは、制御信号／ＨＯＬＤの入力用、またはシリアルデータＳＯ３の出力用に用いられる。制御信号／ＨＯＬＤは、ホスト機器とメモリシステム１との間の通信を一時的に停止する際にアサート（“Ｌ”レベル）される。第２ピンは、電源電圧Ｖccを受信する。第３ピンから第６ピン、及び第１１ピンから第１４ピンは未使用ピンであり、例えば将来的に何らかの信号やデータの送受信が必要になった際に使用することが出来る。第７ピンは、チップセレクト信号／ＣＳを受信する。チップセレクト信号／ＣＳは、メモリチップ１００及びコントローラチップ２００を活性化させるための信号（言い換えれば、メモリシステム１にアクセスする際に活性化される信号）であり、例えばホスト機器がメモリシステム１にコマンドを入力するタイミングでアサート（“Ｌ”レベル）される。第８ピンは、シリアルデータ（ＳＯまたはＳＯ１）の出力用に用いられる。第９ピンは、制御信号／ＷＰの入力用、またはシリアルデータ（ＳＯ２）の出力用に用いられる。制御信号／ＷＰはライトプロテクト信号であり、メモリチップへの書き込みを禁止する際にアサート（“Ｌ”レベル）される。第１０ピンは、基準電位Ｖssを受信する。第１５ピンは、シリアルデータ（ＳＩ）の入力用、またはシリアルデータ（ＳＯ０）の出力用に用いられる。第１６ピンは、シリアルクロック信号ＳＣＫを受信する。
【００１５】
上記ピン構成は、ＳＰＩ（Serial Peripheral Interface）に準拠している。そして、第１ピン、第８ピン、第９ピン、及び第１５ピンをシリアルデータ出力用として任意に選択することで、１倍速、２倍速、または４倍速でデータをホスト機器へ出力することが出来る。
【００１６】
図４は、図１とは別のパッケージ構成の例を示している。図４の例では、第１ピンから第８ピンまでの８個の外部接続端子が設けられている。図５は、図４の例における各ピンの機能を示すダイアグラムである。
【００１７】
図示するように、第１ピンはチップセレクト信号／ＣＳを受信し、第２ピンはシリアルデータＳＯ、ＳＯ１を出力し、第３ピンはライトプロテクト信号／ＷＰを受信、またはシリアルデータＳＯ２を出力し、第４ピンは基準電位Ｖssを受信し、第５ピンはシリアルデータＳＩを受信、またはシリアルデータＳＯ０を出力し、第６ピンはシリアルクロックを受信し、第７ピンは制御信号／ＨＯＬＤを受信、またはシリアルデータＳＯ３を出力し、第８ピンは電源電圧Ｖccを受信する。  
この場合でも、ピン構成はＳＰＩに準拠している。
【００１８】
図６は、メモリシステム１の内部構成を示す機能ブロック図である。以下では、メモリチップ１００をＮＡＮＤ型フラッシュメモリ１００と呼び、コントローラチップ２００を単にコントローラ２００と呼ぶ。
【００１９】
図示するように、メモリシステム１はＮＡＮＤ型フラッシュメモリ１００とコントローラ２００とを備えている。
【００２０】
ＮＡＮＤ型フラッシュメモリ１００は、複数のメモリセルを備え、データを不揮発に記憶する。コントローラ２００は、ＮＡＮＤバスによってＮＡＮＤ型フラッシュメモリ１００に接続され、ＳＰＩバスによってホスト機器５００に接続される。そしてコントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００へのアクセスを制御する。
【００２１】
ＮＡＮＤバスは、ＮＡＮＤインターフェースに従った信号の送受信を行う。この信号の具体例は、チップイネーブル信号／ＣＥ、アドレスラッチイネーブル信号ＡＬＥ、コマンドラッチイネーブル信号ＣＬＥ、ライトイネーブル信号／ＷＥ、リードイネーブル信号／ＲＥ、レディ・ビジー信号／ＲＢ、入出力信号Ｉ／Ｏ、及びライトプロテクト信号／ＷＰである。
【００２２】
信号／ＣＥはlowレベルでアサートされ、ＮＡＮＤ型フラッシュメモリ１００を活性化させるための信号であり、ＮＡＮＤ型フラッシュメモリ１００にアクセスする際にアサートされる。信号ＣＬＥ及びＡＬＥは、ＮＡＮＤ型フラッシュメモリ１００への入力信号Ｉ／Ｏがそれぞれコマンド及びアドレスであることをＮＡＮＤ型フラッシュメモリ１００に通知する信号である。信号／ＷＥはlowレベルでアサートされ、入力信号Ｉ／ＯをＮＡＮＤ型フラッシュメモリ１００に取り込ませるための信号である。信号／ＲＥもlowレベルでアサートされ、ＮＡＮＤ型フラッシュメモリ１００から出力信号Ｉ／Ｏを読み出すための信号である。レディ・ビジー信号／ＲＢは、ＮＡＮＤ型フラッシュメモリ１００がレディ状態（コントローラ２００からの命令を受信出来る状態）であるか、それともビジー状態（コントローラ２００からの命令を受信出来ない状態）であるかを示す信号であり、lo wレベルがビジー状態を示す。入出力信号Ｉ／Ｏは、例えば８ビット（ｎ＝８）の信号である。そして入出力信号Ｉ／Ｏは、ＮＡＮＤ型フラッシュメモリ１００とコントローラ２００との間で送受信されるデータの実体であり、コマンド、アドレス、書き込みデータ、及び読み出しデータ等である。信号／ＷＰは、ＮＡＮＤ型フラッシュメモリ１００への書き込みを禁止するための信号である。
【００２３】
ＳＰＩバスは、図３及び図５で説明した通りである。
【００２４】
１．１．２  コントローラ２００の構成について  
次に、コントローラ２００の構成の詳細につき、引き続き図６を用いて説明する。図示するようにコントローラ２００は、ホスト入出力回路２１０、ホストインターフェース回路２２０、ＮＡＮＤインターフェース回路２３０、ＮＡＮＤ入出力回路２４０、シーケンサ（ステートマシン）２５０、データバッファ２６０、２７０、ステータスレジスタ２８０、アドレスレジスタ２９０、ブロックプロテクションレジスタ７００、及び周辺回路６００を備えている。
【００２５】
ホスト入出力回路２１０は、ホスト機器５００との間で送受信される信号のバッファとして機能する。信号ＳＣＫ、ＳＩ、／ＣＳ、／ＨＯＬＤ、及び／ＷＰはまずホスト入出力回路２１０で受信され、その後、ホストインターフェース回路２２０に出力される。
【００２６】
ホストインターフェース回路２２０は、信号ＳＣＫに同期して信号ＳＩを内部に取り込む。またホストインターフェース回路２２０は、信号ＳＣＫに同期して出力される信号ＳＯを、ホスト入出力回路２１０を介してホスト機器５００へ送信する。
【００２７】
ホストインターフェース回路２２０は、ホスト入出力回路２１０を介したホスト機器５００との間の信号の送受信制御を司る。またホストインターフェース回路２２０は、シリアル／パラレル変換器及びパラレル／シリアル変換器として機能する。例えば、ホスト機器５００からの入力信号ＳＩをシリアル信号からパラレル信号に変換し、ＮＡＮＤ型フラッシュメモリ１００から読み出されたデータをパラレル信号からシリアル信号に変換する。更にホストインターフェース回路２２０は、入力信号ＳＩがコマンドであった場合にコマンドデコーダとして機能し、受信したコマンドをデコードする。そしてデコード結果を例えばシーケンサ２５０に出力する。
【００２８】
データバッファ２６０、２７０は、ホスト機器５００から受信した書き込みデータを、ホストインターフェース回路２２０を介して一時的に保持する。更に、ＮＡＮＤ型フラッシュメモリ１００から読み出されたデータを、ＮＡＮＤインターフェース回路２３０を介して一時的に保持する。
【００２９】
ステータスレジスタ２８０は、メモリシステム１の種々のステータス情報を保持する。例えば、後述する特徴テーブルを保持する。
【００３０】
アドレスレジスタ２９０は、ホスト機器５００から受信したアドレスを、ホストインターフェース回路２２０を介して保持する。
【００３１】
ＮＡＮＤインターフェース回路２３０は、ＮＡＮＤ入出力回路２４０を介したＮＡＮＤ型フラッシュメモリ１００との間の信号の送受信制御を司る。そしてＮＡＮＤインターフェース回路２３０は、シーケンサ２５０の命令に従って、ＮＡＮＤインターフェースに準拠した各種コマンドを発行し、アドレスレジスタ２９０内のアドレスと共にＮＡＮＤ入出力回路２４０を介してＮＡＮＤ型フラッシュメモリ１００へ出力する。データの書き込み時には、データバッファ２６０及び／または２７０内のデータを、ＮＡＮＤ入出力回路２４０を介してＮＡＮＤ型フラッシュメモリ１００へ出力する。更にデータの読み出し時には、ＮＡＮＤ型フラッシュメモリ１００から読み出されたデータを、データバッファ２６０及び／または２７０に転送する。
【００３２】
ＮＡＮＤ入出力回路２４０は、ＮＡＮＤ型フラッシュメモリ１００との間で送受信される信号のバッファとして機能する。また、ＮＡＮＤインターフェース回路２３０の命令に従って、信号／ＣＥ、ＣＬＥ、ＡＬＥ、／ＷＥ、／ＲＥ、／ＷＰをアサートまたはデアサートする。更に、データの読み出し時には、信号ＩＯ（読み出しデータ）を一時的に保持し、ＮＡＮＤインターフェース回路２３０へ転送し、書き込み時には信号ＩＯ（書き込みデータ）を一時的に保持し、ＮＡＮＤ型フラッシュメモリ１００へ送信する。また、ＮＡＮＤ型フラッシュメモリ１００からレディ・ビジー信号／ＲＢを受信し、これをＮＡＮＤインターフェース回路２３０へ転送する。
【００３３】
シーケンサ２５０は、コントローラ２００全体の動作を制御する。例えば、ホスト機器５００からデータの読み出し要求があった際には、ＮＡＮＤインターフェース回路２３０に対して読み出し動作を実行するためのシーケンスを実行するよう命令する。またホスト機器５００からデータの書き込み要求があった際には、ＮＡＮＤインターフェース回路２３０に対して読み出し動作を実行するためのシーケンスを実行するよう命令する。更に、ＮＡＮＤ型フラッシュメモリ１００から受信したステータス情報に従って、ステータスレジスタ２８０内の特徴テーブルを更新する。
【００３４】
ブロックプロテクションレジスタ７００は、ブロックの保護情報を保存する。例えば、ホスト機器５００からブロック保護要求があった際には、保護対象ブロックを示すエントリに、フラグ情報を書き込む。フラグ情報は、ブロックを保護する場合“１”、保護しない場合は“０”といった設定となる。
【００３５】
周辺回路６００は、外部から電源電圧Ｖccを受信し、各回路ブロックへ転送すると共に、コントローラ２００の動作に必要なその他の制御を行う。
【００３６】
１．１．３  ＮＡＮＤ型フラッシュメモリ１００の構成について  
次に、ＮＡＮＤ型フラッシュメモリ１００の構成について、図７を用いて説明する。図７は、ＮＡＮＤ型フラッシュメモリ１００のブロック図である。
【００３７】
図示するようにＮＡＮＤ型フラッシュメモリ１００は、メモリセルアレイ１１０、ロウデコーダ１２０、センスアンプ１３０、データレジスタ１４０、カラムデコーダ１５０、ＥＣＣ回路４００、ステータスレジスタ４１０、アドレスレジスタ４２０、コマンドレジスタ４３０、制御回路４４０、電圧発生回路４５０、入出力制御回路４６０、ロジック回路４７０、及びデータレジスタ４８０を備えている。
【００３８】
メモリセルアレイ１１０は、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルを備えている。そして、同一行にあるメモリセルは同一のワード線に接続され、同一列にあるメモリセルは同一のビット線に接続される。データの読み出し及び書き込みは、同一のワード線に接続された複数のメモリセルに対して一括して行われる。この単位をページと呼ぶ。１ページ分のデータは、正味のデータと管理データとを含む。正味のデータは、セクタと呼ばれる単位で管理される。例えば本例では、１ページは４つのセクタを含み、各セクタは５１２バイトのデータサイズを有する。管理データは、例えばエラー訂正のためのＥＣＣデータ（パリティ）を含む。エラー訂正はセクタ毎に行われる。従って管理データは、セクタ毎に用意されたＥＣＣデータを含む。また、データの消去は、複数のページ単位で一括して行われる。この単位をブロックと呼ぶ。
【００３９】
ロウデコーダ１２０は、メモリセルアレイ１１０のロウ方向を指定するロウアドレスをデコードする。そして、デコード結果に応じてワード線を選択し、データの書き込み、読み出し、及び消去に必要な電圧を印加する。
【００４０】
センスアンプ１３０は、データの読み出し時には、メモリセルアレイ１１０から読み出されたデータをセンスし、データレジスタ１４０に転送する。データの書き込み時には、データレジスタ１４０内のデータをメモリセルアレイ１１０に転送する。
【００４１】
データレジスタ１４０は、１ページ分の書き込みデータまたは読み出しデータを一時的に保持する。
【００４２】
カラムデコーダ１５０は、メモリセルアレイ１１０のカラム方向を指定するカラムアドレスをデコードする。そしてデコード結果に応じて、書き込み時にはデータをデータレジスタに転送し、読み出し時にはデータレジスタからデータを読み出す。
【００４３】
ＥＣＣ回路４００は、エラー検出及びエラー訂正処理を行う。より具体的には、データの書き込み時には、コントローラ２００から受信したデータに基づいて、セクタ毎にパリティを生成し、このパリティと正味のデータとをデータレジスタ１４０に転送する。データの読み出し時には、データレジスタ１４０から転送されたデータに含まれるパリティに基づき、セクタ毎にシンドロームを生成し、エラーの有無を検出する。そしてエラーが検出された際には、そのビット位置を特定し、エラーを訂正する。１セクタにつき訂正可能なエラービット数は、本例では例えば１セクタあたり８ビットである。またＥＣＣ回路４００は、各セクタにおいて検出されたエラービット数を、ステータス情報としてステータスレジスタ４１０に出力可能である。
【００４４】
ロジック回路４７０は、コントローラ２００から信号／ＣＥ、ＣＬＥ、ＡＬＥ、／ＷＥ、／ＲＥ、及び／ＷＰを受信する。
【００４５】
入出力制御回路４６０は、信号ＩＯ［ｎ：０］を受信する。そして入出力制御回路４６０は、信号ＩＯがアドレスであった場合（ＡＬＥ＝“Ｈ”の場合）には、これをアドレスレジスタ４２０に保持させる。また信号ＩＯがコマンドであった場合（ＣＬＥ＝“Ｈ”の場合）には、これをコマンドレジスタ４３０に保持させる。更に信号ＩＯがデータであった場合（ＡＬＥ＝ＣＬＥ＝“Ｌ”の場合）には、これをデータレジスタ４８０に保持させる。
【００４６】
ステータスレジスタ４１０は、ＮＡＮＤ型フラッシュメモリ１００の各種ステータス情報を保持する。ステータス情報には、前述のＥＣＣ回路４００から与えられるエラービット数、また制御回路４４０から与えられる書き込み動作及び消去動作が成功（パス）したか失敗（フェイル）したかを示す情報等が含まれる。
【００４７】
制御回路４７０は、コマンドレジスタ４３０に保持されたコマンドと、ロジック回路４７０に入力された各種信号に基づいて、ＮＡＮＤ型フラッシュメモリ１００全体を制御する。また制御回路４７０は、レディ・ビジー信号／ＲＢを発生して、コントローラ２００へ出力する。
【００４８】
電圧発生回路４５０は、制御回路４７０の命令に基づいて、データの書き込み、読み出し、及び消去動作に必要な電圧を生成し、これをメモリセルアレイ１１０、ロウデコーダ
１２０、及びセンスアンプ１３０に供給する。
【００４９】
１．２  動作について  
次に、本実施形態に係るメモリシステムにおけるデータの読み出し動作、書き込み動作、及び消去動作につき、ＳＰＩバス及びＮＡＮＤバスで送受信される信号に着目して、以下簡単に説明する。
【００５０】
１．２．１  読み出し動作  
まず、読み出し動作について説明する。読み出し動作は、大まかには以下の３ステップを含む。すなわち、
（１） ＮＡＮＤ型フラッシュメモリからのデータ読み出し：本動作により、ＮＡＮＤ型
フラッシュメモリ１００からコントローラ２００にデータが読み出される。  
（２） 特徴テーブル読み出し（Get featureと呼ぶことがある）：本動作により、メモリシステム１がビジー状態であるかレディ状態であるか、すなわち上記（１）の動作が完了したか否かが判定される。  
（３） コントローラ２００からのデータ読み出し：本動作により、（１）でコントローラ２００に読み出されたデータがホスト機器５００に読み出される。
【００５１】
図８は、上記（１）実行時におけるＳＰＩバス上の各種信号のタイムチャートである。図示するようにホスト機器５００は、信号／ＣＳをアサートすると共に、第１読み出しコマンドＣＭＤ＿ＲＤ１を信号ＳＩとして発行し、更にクロックＳＣＫを入力する。
【００５２】
コントローラ２００のホストインターフェース回路２２０は、信号／ＣＳがアサートされて最初のクロックＳＣＫを受信した際の信号ＳＩをコマンドとして認識する。このコマンドは、例えば８クロックサイクルにわたって入力される８ビット信号である。第１読み出しコマンドＣＭＤ＿ＲＤ１を受信したことで、シーケンサ２５０はデータ読み出しシーケンスを開始する。
【００５３】
引き続きホスト機器５００は、例えば８クロックサイクルにわたってダミービットＤＭＹ＿ＢＩＴをコントローラ２００へ送信し、その後例えば１６サイクルにわたってアドレスＡＤＤをコントローラ２００へ送信する。そしてアドレスＡＤＤの送信後、ホスト機器５００は信号／ＣＳをデアサートする。アドレスＡＤＤは、ＮＡＮＤ型フラッシュメモリ１００におけるブロック及びページを指定するアドレスであり、アドレスレジスタ２９０に保持される。
【００５４】
このように、特定のコマンドを受信した際に、その後にどのような信号が入力されるか（コマンドシーケンス）は予め定められている。つまりコントローラ２００は、例えば第１読み出し命令を受信した際には、その後の８クロックサイクルで入力される信号ＳＩは意味の無いダミーデータであり、その後の１６クロックサイクルで入力される信号ＳＩが、実体的なアドレス信号であることを把握している。
【００５５】
上記（１）の動作に引き続いて上記（２）の動作が実行される。図９は、上記（２）実行時におけるＳＰＩバス上の各種信号のタイムチャートである。図示するようにホスト機器５００は、信号／ＣＳを再度アサートすると共に、Get featureコマンドＣＭＤ＿ＧＦを信号ＳＩとして発行し、更にクロックＳＣＫを発行する。
【００５６】
引き続きホスト機器５００は、例えば８クロックサイクルにわたってアドレスＡＤＤをコントローラ２００へ送信する。このアドレスＡＤＤは、特徴テーブル内のアドレスであり、当然ながらレディ・ビジー情報が格納された領域を指定するアドレスである。コントローラ２００では、アドレスＡＤＤの受信後、例えばシーケンサ２５０の命令に従ってホストインターフェース回路２２０がステータスレジスタ２８０から特徴テーブルの指定のエントリを読み出し、これを８サイクルにわたって８ビットのステータスデータＳＴ＿ＤＡＴとしてホスト機器５００に送信する。このステータスデータＳＴ＿ＤＡＴには、レディ・ビジー情報が含まれている。そしてステータスデータＳＴ＿ＤＡＴの受信後、ホスト機器５００は信号／ＣＳをデアサートする。
【００５７】
受信したステータスデータＳＴ＿ＤＡＴにおいて、メモリシステム１がレディ状態であることが示されていれば、上記（３）の動作が実行される。図１０は、上記（３）実行時におけるＳＰＩバス上の各種信号のタイムチャートである。図示するようにホスト機器５００は、信号／ＣＳをアサートすると共に、第２読み出しコマンドＣＭＤ＿ＲＤ２を信号ＳＩとして発行し、更にクロックＳＣＫを発行する。
【００５８】
引き続きホスト機器５００は、例えば４クロックサイクルにわたってダミービットＤＭＹ＿ＢＩＴをコントローラ２００へ送信し、その後例えば１２サイクルにわたってアドレスＡＤＤをコントローラ２００へ送信する。このアドレスＡＤＤは、コントローラ２００において、データバッファ２６０または２７０における領域を指定するためのアドレスであり、ＮＡＮＤフラッシュメモリ１００におけるページ内のカラムを指定するアドレスである。アドレスＡＤＤは、アドレスレジスタ２９０に保持される。すると、例えばシーケンサ２５０の制御に従い、ホストインターフェース回路２２０はデータバッファ２６０または２７０からデータを読み出す。そして、８クロックサイクル経過の後、ホストインターフェース回路２２０は、データバッファ２６０または２７０から読み出したデータＲＤ＿ＤＡＴをホスト機器５００へ送信する。
【００５９】
図１１は、上記（１）の動作時におけるＮＡＮＤバス上の各種信号のタイムチャートである。第１読み出しコマンドＣＭＤ＿ＲＤ１を受信したコントローラ２００では、例えばシーケンサ２３０の制御に従って、ＮＡＮＤインターフェース回路２３０がアドレス入力コマンド“００ｈ”を発行し、ＮＡＮＤ型フラッシュメモリ１００へ送信する。引き続き、例えば５サイクルにわってアドレスＡＤＤをＮＡＮＤ型フラッシュメモリ１００へ送信し、その後読み出しコマンド“３０ｈ”を発行して、これをＮＡＮＤ型フラッシュメモリ１００へ送信する。なお、このアドレスＡＤＤは、図８及び図１０で示された動作においてアドレスレジスタ２９０に保持されたブロック、ページ、及びカラムを示すアドレスを含む。
【００６０】
コマンド“３０ｈ”に応答して、ＮＡＮＤ型フラッシュメモリ１００内では、メモリセルアレイ１１０からのデータの読み出し動作が開始され、ＮＡＮＤ型フラッシュメモリ１００はビジー状態（／ＲＢ＝“Ｌ”）となる。
【００６１】
データのメモリセルアレイ１１０からの読み出しが完了すると、ＮＡＮＤ型フラッシュメモリ１００はレディ状態となる。これに応答してコントローラ２００は、信号／ＲＥをトグルさせる。すると、信号／ＲＥに同期して、データがＮＡＮＤ型フラッシュメモリ１００からコントローラ２００へ転送される。
【００６２】
１．２．２  書き込み動作  
次に書き込み動作について説明する。書き込み動作は、大まかには以下の３ステップを含む。すなわち、
（１） ホスト機器５００からコントローラ２００へのデータ転送。  
（２） 転送したデータのＮＡＮＤ型フラッシュメモリ１００への書き込み。  
（３） 特徴テーブル読み出し（Get feature）：本動作により、ＮＡＮＤ型フラッシュメモリ１００への書き込みがパスしたかフェイルしたかが判定される。
【００６３】
図１２は、上記（１）実行時におけるＳＰＩバス上の各種信号のタイムチャートである。図示するようにホスト機器５００は、信号／ＣＳをアサートすると共に、第１書き込みコマンドＣＭＤ＿ＷＲ１を信号ＳＩとして発行し、更にクロックＳＣＫを発行する。第１書き込みコマンドＣＭＤ＿ＷＲ１を受信したことで、シーケンサ２５０はデータ書き込みシーケンスを開始する。
【００６４】
引き続きホスト機器５００は、例えば４クロックサイクルにわたってダミービットＤＭＹ＿ＢＩＴをコントローラ２００へ送信し、その後例えば１２サイクルにわたってアドレスＡＤＤをコントローラ２００へ送信する。このアドレスＡＤＤは、データバッファ２６０または２７０における領域を指定するためのアドレスであり、ＮＡＮＤフラッシュメモリ１００におけるページ内のカラムを指定するアドレスである。アドレスＡＤＤは、アドレスレジスタ２９０に保持される。更にホスト機器５００は、書き込みデータＷＲ＿ＤＡＴをコントローラ２００へ送信する。この書き込みデータＷＲ＿ＤＡＴは、データバッファ２６０または２７０において、直前に受信したＡＤＤに対応する領域に保持される。そしてデータＷＲ＿ＤＡＴの送信後、ホスト機器５００は信号／ＣＳをデアサートする。
【００６５】
上記（１）の動作に引き続いて上記（２）の動作が実行される。図１３は、上記（２）実行時におけるＳＰＩバス上の各種信号のタイムチャートである。図示するようにホスト機器５００は、信号／ＣＳを再度アサートすると共に、第２書き込みコマンドＣＭＤ＿ＷＲ２を信号ＳＩとして発行し、更にクロックＳＣＫを発行する。第２書き込みコマンドＣＭＤ＿ＷＲ２を受信したことで、シーケンサ２５０は上記（２）の動作命令を受信したことを認識する。
【００６６】
引き続きホスト機器５００は、例えば８クロックサイクルにわたって８ビットのダミービットＤＭＹ＿ＢＩＴをコントローラ２００へ送信し、その後例えば１６サイクルにわたって１６ビットのアドレスＡＤＤをコントローラ２００へ送信する。このアドレスＡＤＤは、ＮＡＮＤ型フラッシュメモリ１００におけるブロック及びページを指定するアドレスであり、アドレスレジスタ２９０に保持される。そしてアドレスＡＤＤの送信後、ホスト機器５００は信号／ＣＳをデアサートする。
【００６７】
上記（２）の動作に引き続いて、上記（３）の動作が行われる。本動作におけるコマンドシーケンスは、読み出し動作時に説明した図９と同様である。またホスト機器５００は、受信したステータスデータＳＴ＿ＤＡＴにおいて、メモリシステム１がレディ状態であることが示されていれば、続いてデータの書き込みがフェイルしたか否かに関する情報を要求する。
【００６８】
図１４は、上記（２）の動作時におけるＮＡＮＤバス上の各種信号のタイムチャートである。第２書き込みコマンドＣＭＤ＿ＷＲ２を受信したコントローラ２００では、例えばシーケンサ２５０の制御に従って、ＮＡＮＤインターフェース回路２３０が書き込みコマンド“８０ｈ”を発行し、ＮＡＮＤ型フラッシュメモリ１００へ送信する。引き続き、例えば５サイクルにわたってアドレスＡＤＤをＮＡＮＤ型フラッシュメモリ１００へ送信し、更に書き込みデータＤＡＴが複数サイクルにわたってＮＡＮＤ型フラッシュメモリ１００へ送信され、その後書き込みコマンド“１０ｈ”を発行して、これをＮＡＮＤ型フラッシュメモリ１００へ送信する。なお、このアドレスＡＤＤは、図１２及び図１３で示された動作においてアドレスレジスタ２９０に保持されたブロック、ページ、及びカラムを示すアドレスを含む。
【００６９】
コマンド“１０ｈ”に応答して、ＮＡＮＤ型フラッシュメモリ１００内では、メモリセルアレイ１１０へのデータの書き込み動作が開始され、ＮＡＮＤ型フラッシュメモリ１００はビジー状態（／ＲＢ＝“Ｌ”）となる。
【００７０】
データのメモリセルアレイ１１０への書き込みが完了すると、ＮＡＮＤ型フラッシュメモリ１００はレディ状態となる。これに応答してコントローラ２００は、ステータス読み出しコマンド“７０ｈ”を発行し、信号／ＲＥをトグルさせる。すると、信号／ＲＥに同期して、書き込み動作がパスしたかフェイルしたかを示すステータスデータＳＴ＿ＤＡＴがコントローラ２００に転送される。このステータスデータＳＴ＿ＤＡＴは特徴テーブルに保持され、上記（３）のGet featureコマンドによってホスト機器５００に読み出される。
【００７１】
１．２．３  消去動作  
次に消去動作について説明する。消去動作は、大まかには以下の２ステップを含む。すなわち、
（１） ホスト機器５００からコントローラ２００への消去命令。  
（２） 特徴テーブル読み出し（Get feature）：本動作により、ＮＡＮＤ型フラッシュメモリ１００への消去動作がパスしたかフェイルしたかが判定される。
【００７２】
図１５は、上記（１）実行時におけるＳＰＩバス上の各種信号のタイムチャートである。図示するようにホスト機器５００は、信号／ＣＳをアサートすると共に、消去コマンドＣＭＤ＿ＥＲを信号ＳＩとして発行し、更にクロックＳＣＫを発行する。消去コマンドＣＭＤ＿ＥＲを受信したことで、シーケンサ２５０はデータ消去シーケンスを開始する。
【００７３】
引き続きホスト機器５００は、例えば８クロックサイクルにわたって８ビットのダミービットＤＭＹ＿ＢＩＴをコントローラ２００へ送信し、その後例えば１６サイクルにわたって１６ビットのアドレスＡＤＤをコントローラ２００へ送信する。このアドレスＡＤＤは、メモリセルアレイ１１０において消去対象となるブロックを指定するためのアドレスであり、アドレスレジスタ２９０に保持される。その後、ホスト機器５００は信号／ＣＳをデアサートする。
【００７４】
上記（１）の動作に引き続いて上記（２）の動作が実行される。本動作におけるコマンドシーケンスは、読み出し動作時に説明した図９と同様である。またホスト機器５００は、受信したステータスデータＳＴ＿ＤＡＴにおいて、メモリシステム１がレディ状態であることが示されていれば、続いてデータの消去がパスしたかフェイルしたかに関する情報を要求する。
【００７５】
図１６は、上記（１）の動作時におけるＮＡＮＤバス上の各種信号のタイムチャートである。消去コマンドＣＭＤ＿ＥＲを受信したコントローラ２００では、例えばシーケンサ２５０の制御に従って、ＮＡＮＤインターフェース回路２３０が消去コマンド“６０ｈ” を発行し、ＮＡＮＤ型フラッシュメモリ１００へ送信する。引き続き、例えば３サイクルにわたってアドレスＡＤＤをＮＡＮＤ型フラッシュメモリ１００へ送信し、更に消去コマンド“Ｄ０ｈ”を発行して、これをＮＡＮＤ型フラッシュメモリ１００へ送信する。
【００７６】
コマンド“Ｄ０ｈ”に応答して、ＮＡＮＤ型フラッシュメモリ１００内では、メモリセルアレイ１１０のデータの消去動作が開始され、ＮＡＮＤ型フラッシュメモリ１００はビジー状態（／ＲＢ＝“Ｌ”）となる。
【００７７】
データの消去が完了すると、ＮＡＮＤ型フラッシュメモリ１００はレディ状態となる。これに応答してコントローラ２００は、ステータス読み出しコマンド“７０ｈ”を発行し、信号／ＲＥをトグルさせる。すると、信号／ＲＥに同期して、消去動作がパスしたかフェイルしたかを示すステータスデータＳＴ＿ＤＡＴがコントローラ２００に転送される。このステータスデータＳＴ＿ＤＡＴは特徴テーブルに保持され、上記（２）のGet featureコマンドによってホスト機器５００に読み出される。
【００７８】
１．３  ブロック保護について
次に、本実施形態に係るブロック保護について説明する。
【００７９】
１．３．１  ブロック保護の機能について  
本実施形態に係るメモリシステム１は、ホスト機器５００からＮＡＮＤ型フラッシュメモリ１００内のあるユーザブロックの保護を要求する特定コマンドを受けた場合に、当該ブロックを保護するための制御機能を有する。上記特定コマンドをブロック保護コマンドと呼ぶ。また、この場合の保護とは、ホスト機器５００が保護対象として指定したユーザブロックに対するデータの消去もしくは書き込みを禁止することである。上記制御機能は、例えばコントローラ２００内のシーケンサ２５０とブロックプロテクションレジスタ７
００により実現される。この場合、シーケンサ２５０は、ホストインターフェース回路２２０により認識されるコマンドがブロック保護コマンドである場合に、当該ブロックを保護するための処理を実行する。
【００８０】
ブロック保護コマンドは、ＮＡＮＤ型フラッシュメモリ１００内のあるユーザブロックに対するデータの消去もしくは書き込みの禁止を要求するコマンドである。そのコマンドシーケンスに含まれるアドレスは保護対象のブロックを示す。シーケンサ２５０は、ブロックを保護するための処理を行った後、保護対象のブロックに対する消去コマンドもしくは書き込みコマンドがあった場合には、当該保護対象のブロックに対するデータの消去もしくは書き込みを禁止する。
【００８１】
１．３．２  保護対象のブロックを示す情報の記憶について  
コントローラ２００には、当該ＮＡＮＤ型フラッシュメモリ１００上の保護対象のブロックを示す情報を記憶するための記憶領域（ブロックプロテクションレジスタ７００）が設けられる。この記憶領域は、例えばホスト機器５００側からアクセスすることができない領域である。保護対象のブロックを示す情報は、例えば図１７に示すようにブロックプロテクションレジスタ７００に記憶される。この場合、保護対象のブロックであるか否かを示す情報として、保護対象のブロックのアドレスに対応したエントリに、フラグが書き込まれる。保護対象となるブロックに対応したエントリには例えば“１”を記憶させ、保護対象でないブロックに対応したエントリには例えば“０”を記憶させるようにしてもよい。
【００８２】
１．３．３  ブロック保護コマンドの種類について  
本実施形態では、ブロック保護コマンドとして、Protect Execute コマンド“１１ｈ” が用意されている。
【００８３】
Protect execute コマンドは、ホスト機器５００が予めコントローラ２００で定められた一部のユーザブロックのみを保護対象とすることができるが、それ以外のユーザブロックを保護対象とすることができないコマンドである。
【００８４】
シーケンサ２５０は、Protect execute コマンドがあった場合、当該Protect execute コマンドが保護を要求するブロックが保護可能なユーザブロックに該当するか否かを判定し、該当しない場合には、当該Protect execute コマンドが要求する処理を実行せずに中止する。
【００８５】
なお、シーケンサ２５０は、Protect execute コマンドに対し、保護可能なユーザブロックを設定・変更することが可能である。その設定情報は、コントローラ２００内の所定の領域に記憶され、ステータスレジスタ２８０内の特徴テーブルの所定の領域にも記憶される。
【００８６】
また、Protect execute コマンドを使用できるホスト機器５００を、シーケンサ２５０が予め設定できるように構築してもよい。
【００８７】
本実施形態では、処理可能なブロック保護コマンドとしてProtect execute コマンドを処理できるメモリシステムの例を示す。
【００８８】
１．３．４  ブロック保護動作  
次にブロック保護動作について説明する。ブロック保護動作は、大まかには以下の２ステップを含む。すなわち、
（１） コントローラ２００によるブロック保護動作。  
（２） 特徴テーブル読み出し（Get feature）：本動作により、ブロック保護動作がパスしたかフェイルしたかが判定される。
【００８９】
図１８は、上記（１）実行時におけるＳＰＩ信号上の各種信号のタイムチャートである。図示するようにホスト機器５００は、信号／ＣＳをアサートすると共に、ブロック保護コマンドＣＭＤ＿ＢＰ（“１１ｈ”）を信号ＳＩとして発行し、更にクロックＳＣＫを発行する。ブロック保護コマンドＣＭＤ＿ＢＰを受信したことで、シーケンサ２５０はブロック保護シーケンスを開始する。
【００９０】
引き続きホスト機器５００は、例えば８クロックサイクルにわたって８ビットのダミービットＤＭＹ＿ＢＩＴをコントローラ２００へ送信し、その後例えば１６サイクルにわたって１６ビットのアドレスＡＤＤをコントローラ２００へ送信する。このアドレスＡＤＤは、メモリセルアレイ１１０においてブロック保護対象となるブロックを指定するためのアドレスであり、アドレスレジスタ２９０に保持される。その後、ホスト機器５００は信号／ＣＳをデアサートする。
【００９１】
ブロック保護コマンドＣＭＤ＿ＢＰを受信したコントローラ２００では、例えばシーケンサ２５０の制御に従って、コントローラ２００のブロックプロテクションレジスタ７００の対象エントリに対し、ブロック保護を示すフラグを書き込む。
【００９２】
コントローラ２００におけるブロック保護動作が完了すると、メモリシステム１００はレディ状態となる。ホスト機器５００はGet Featureコマンドによって、メモリシステム１００がレディ状態となったことを知ることができる。
【００９３】
１．３．５  ブロック保護動作の流れについて  
次に、ブロック保護動作の流れの詳細について、図１９及び図２０を用いて説明する。図１９は、ブロック保護動作時におけるホスト機器５００、コントローラ２００、及びＮＡＮＤ型フラッシュメモリ１００の動作を示すフローチャートであり、図２０はコマンドシーケンスである。
【００９４】
なお、これからブロック保護を行うＮＡＮＤ型フラッシュメモリ１００上のブロックには、すでに前述した書き込み動作によりデータの書き込みがなされているものとする。
【００９５】
図示するように、ホスト機器５００は、ブロック保護コマンドであるProtect execute コマンド“１１ｈ”を発行する前に、特徴テーブルセットコマンド（Set featureコマンド）“１Ｆｈ”を発行すると共に、ライトイネーブルコマンド（Write enableコマンド） “０６ｈ”を発行する。
【００９６】
具体的には、ホスト機器５００は、Set featureコマンド“１Ｆｈ”を発行し、引き続きブロック保護コマンドの有効／無効のいずれかの設定を指示する情報（以下、「Ｂ０設定情報」と呼ぶ）を発行する。Ｂ０設定情報は、例えばステータスレジスタ２８０内における特徴テーブル内のアドレス“Ｂ０”、及び、このアドレス“Ｂ０”に対応するエントリに保持させる情報としてブロック保護コマンドの有効／無効のいずれかの状態を示す値
“１”又は“０”を含む。
【００９７】
ここでは、ブロック保護コマンドを有効な状態にするため、ホスト機器５００は、Ｂ０設定情報として例えば「PRT_E[7]=1」を発行する。するとシーケンサ２５０は、ブロック保護コマンドの有効を示す値“１”を特徴テーブルの指定されたエントリに反映させる。引き続きホスト機器５００は、Write enableコマンド“０６ｈ”を発行する。するとシーケンサ２５０は、データの書き込みがenableであることを示す値“１”を特徴テーブルの指定されたエントリに反映させる。これにより、ホスト機器５００はブロック保護コマンドの使用が可能な状態となる。
【００９８】
そしてホスト機器５００は、ブロック保護コマンドとしてProtect execute コマンド“ １１ｈ”を発行し、引き続きアドレスＡＤＤを発行する。このアドレスに応答して、メモリシステム１はビジー状態となり、特徴テーブルにおけるＯＩＰ（Operation in Progress）は“１”となる。なお、ＯＩＰは、メモリシステム１がレディ状態であるかビジー状態であるかを示すフラグであり、“０”でレディ状態、“１”でビジー状態を示す。またホスト機器５００は、Get featureコマンド“０Ｆｈ”及びアドレス“Ｃ０”を発行し、特徴テーブルからＯＩＰを含むエントリの情報（１バイトデータ）を読み出す。このエントリ情報は、クロックＳＣＫが入力されている限り、ＯＩＰが“０”になるまで繰り返しホスト機器５００へ送信される（Get featureコマンドを繰り返し発行しても良い）。
【００９９】
メモリシステム１がビジー状態となると共に、コントローラ２００はホスト機器５００から受けたブロック保護コマンドが適正か否かを判定し（ステップＳ１０）、適正ならば、ブロックプロテクションレジスタ７００の対象エントリにフラグ情報を書き込む（ステップＳ２０）。
【０１００】
その後、コントローラ２００におけるブロック保護設定が完了し、メモリシステム１がレディ状態となり、例えばシーケンサ２５０は、特徴テーブル内のＯＩＰを“１”から“ ０”にセットする。
【０１０１】
またコントローラ２００はブロック保護の実行がパスしたかフェイルしたかを示すステータスデータＳＴ＿ＤＡＴを特徴テーブルに記憶させ（ステップＳ３０）、ホスト機器５００からGet Featureを受けた場合に、出力する。
【０１０２】
一方、上記ステップＳ１０において、ホスト機器５００から受けたブロック保護コマンドが適正でなかった場合、コントローラ２００はブロックプロテクションレジスタ７００へのフラグ書き込みを実行することなく、例えばブロック保護動作がフェイルしたことを示すステータスデータＳＴ＿ＤＡＴを特徴テーブルに記憶させる(ステップＳ３０）。そしてメモリシステム１はレディ状態となり、例えばシーケンサ２５０は、特徴テーブル内のＯＩＰを“１”から“０”にセットする。ホスト機器５００からGet Featureを受けた場合、その情報を出力できる。
【０１０３】
最後に、ホスト機器５００は、Set featureコマンド“１Ｆｈ”を発行し、ブロック保護コマンドを無効な状態にするため、Ｂ０設定情報として例えば「PRT_E[7]=0」を発行する。するとシーケンサ２５０は、ブロック保護コマンドの無効を示す値“０”を特徴テーブルの指定されたエントリに反映させる。
【０１０４】
これにより、ブロック保護のための一連の動作が完了する。
【０１０５】
次に、図２１を参照して、図１９のフローチャートにおけるステップＳ１０の処理の中で行われるコマンド識別処理について説明する。
【０１０６】
コントローラ２００は、ホスト機器５００から受けたブロック保護コマンドがProtect execute コマンド“１１ｈ”であることを認識した場合（ステップＳ１１のＹＥＳ）、ホスト機器５００が指定しているユーザブロックが予め定められた保護可能なブロックに該当するか否かを判定する（ステップＳ１２）。具体的には、そのProtect execute コマンドのコマンドシーケンスに含まれるアドレスが、特徴テーブルの所定の領域に予め定めている保護可能なブロックのアドレスに該当するか否かを判定する。保護可能なブロックに該当する場合（ステップＳ１２のＹｅｓ）、当該コマンドが適正であるとみなして、ホスト機器５００が指定しているユーザブロックに対するブロック保護を許可し（ステップＳ１３）、ブロックプロテクションレジスタ７００に対してブロック保護の実行を指示する。すなわち、ブロックプロテクションレジスタ７００の対象エントリにフラグ情報を書き込む。
【０１０７】
一方、上記ステップＳ１２において、ホスト機器５００が指定しているユーザブロックが予め定められた保護可能なブロックに該当しない場合（ステップＳ１２のＮｏ）、コントローラ２００は当該コマンドが適正でないとみなし、ホスト機器５００が指定しているユーザブロックに対するブロック保護処理を実行しない。すなわち、ブロックプロテクションレジスタ７００に対してブロック保護の指示を行わない。この場合、例えばブロック保護動作がフェイルした旨を示すステータスデータもしくはコマンドが適正でない旨を示すステータスデータを特徴テーブルに記憶させ、更にそれをホスト機器５００に通知するようにしてもよい。
【０１０８】
１．３．６  ブロック保護動作完了後の動作の流れについて  
次に、ブロック保護動作完了後の動作について、図２２を用いて説明する。図２２は、ブロック保護動作完了後におけるホスト機器５００、コントローラ２００、及びＮＡＮＤ型フラッシュメモリ１００の動作を示すフローチャートである。
【０１０９】
図示するように、ホスト機器５００は、例えば消去コマンドもしくは書き込みコマンドを発行する。これに応答して、メモリシステム１はビジー状態となる。またホスト機器５００は、Get featureコマンドを発行する。
【０１１０】
メモリシステム１がビジー状態となると共に、コントローラ２００はホスト機器５００から受けたコマンドが、ブロックプロテクションレジスタ７００で保護設定されたブロックに対する消去コマンドもしくは書き込みコマンドであるか否かを判定する（ステップＳ４０）。保護設定されたブロックに対する消去コマンドもしくは書き込みコマンドでなければ、ホスト機器５００から受けたコマンドの受け入れを許可し、対応するコマンドをＮＡＮＤ型フラッシュメモリ１００に対して発行する。これによりＮＡＮＤ型フラッシュメモリ１００はビジー状態となる。そして、メモリセルアレイ１１０におけるデータの消去もしくは書き込みが実行される（ステップＳ５０）。
【０１１１】
その後、メモリセルアレイ１１０におけるデータの消去もしくは書き込みが完了し、ＮＡＮＤ型フラッシュメモリ１００がレディ状態になる。これに応答してコントローラ２００がステータス読み出しコマンドを発行すると、ＮＡＮＤ型フラッシュメモリ１００側から消去動作もしくは書き込み動作がパスしたかフェイルしたかを示すステータスデータがコントローラ２００に転送される。コントローラ２００はこのステータスデータを特徴テーブルに記憶させ（ステップＳ６０）、更にそれをホスト機器５００に通知する。
【０１１２】
一方、上記ステップＳ４０において、ホスト機器５００から受けたコマンドが、保護設定されたブロックに対する消去コマンドもしくは書き込みコマンドであった場合、コントローラ２００はＮＡＮＤ型フラッシュメモリ１００に対して消去コマンドもしくは書き込みコマンドを発行することなく、例えば消去コマンドもしくは書き込みコマンドがフェイルしたことを示すステータスデータを特徴テーブルに記憶させ（ステップＳ６０）、更にそれをホスト機器５００に通知する。
【０１１３】
１．３．７  ブロックの保護の有無の確認について  
次に、ブロックが保護されているかをホスト機器５００が確認する際のホスト機器５００、及びコントローラ２００の動作について、図２３を用いて説明する。図２３は、ブロックの保護の有無を確認する際のホスト機器５００の動作を示すフローチャートである。
【０１１４】
まず、ホスト機器５００は、ブロック保護ステータスリード（Block Protection Status Read）コマンドをコントローラ２００に発行する（ステップＳ１４）。Block Protection Status Readコマンドは、保護の有無を確認するブロックを指定するコマンドである。
【０１１５】
Block Protection Status Readコマンドを受信したコントローラ２００は、例えばシーケンサ２５０の制御に従って、ブロックプロテクションレジスタ７００の対象エントリを参照し、Block Protection Status Readコマンドで指定されたブロックが保護されているかを確認する。コントローラ２００は、例えば特徴テーブル内のアドレス“Ｃ８ｈ”で指定される領域に、確認した保護の有無を格納する。
【０１１６】
次に、ホスト機器５００は、ステップＳ１４で送信したBlock Protection Status Readコマンドの処理の完了を確認するため、Get Featureコマンドをコントローラ２００に発行する（ステップＳ１５）。Get Featureコマンドに応答して、コントローラ２００は、レディ・ビジー情報を含むステータスデータＳＴ＿ＤＡＴをホスト機器５００に出力する。コントローラ２００は、確認した保護の有無を特徴テーブルに反映するまで、メモリシステム１がビジー状態であることをホスト機器５００に通知する。また、コントローラ２００は、保護の有無を特徴テーブルに反映した後、メモリシステム１がレディ状態であることを通知する。ホスト機器５００は、ステータスデータＳＴ＿ＤＡＴのレディ・ビジー情報からBlock Protection Status Readコマンドの処理が完了したかを確認する。
【０１１７】
次に、Block Protection Status Readコマンドの処理が完了した後、ホスト機器５００は、特徴テーブル内のアドレス“Ｃ８ｈ”を指定してGet Featureコマンドをコントローラ２００に発行する（ステップＳ１６）。コントローラ２００は、Get Featureコマンドに応じ、ステップＳ１４において特徴テーブル内に格納された保護の有無に関する情報をホスト機器５００に通知する。
【０１１８】
図２４は、保護の有無に関する情報が格納される特徴テーブルの構成を示す。図２４では、特徴テーブルのうちアドレス“Ｃ８ｈ”が割りあてられた領域のみを示している。０ビット目に、Block Protection StatusビットであるBPS0が格納される。図２５は、BPS0の定義を示す。BPS0が“０”のとき、Block Protection Status Readコマンドで指定されたブロックがデータの消去と書き込みの両方に対して保護されていないことを示す。一方、BPS0が“１”のとき、Block Protection Status Readコマンドで指定されたブロックがデータの消去と書き込みの両方に対して保護されていることを示す。ホスト機器５００は、Get Featureコマンドで読み出されたBlock Protection Statusビットを参照することで、対象のブロックの保護の有無を確認することができる。
【０１１９】
図２６は、図２３のステップＳ１４の実行時におけるＳＰＩバス上の各信号のタイムチャートである。図示するようにホスト機器５００は、信号／ＣＳをアサートすると共に、Block Protection Status Readコマンド“１２ｈ”を信号ＳＩとして発行し、更にクロックＳＣＫを入力する。
【０１２０】
引き続きホスト機器５００は、例えば８クロックサイクルにわたってダミービットＤＭＹ＿ＢＩＴをコントローラ２００へ送信し、その後例えば１６サイクルにわたってアドレスＡＤＤをコントローラへ送信する。このアドレスＡＤＤは、保護の有無を確認したいブロックを指定するアドレスである。
【０１２１】
図２３のステップＳ１５の実行時におけるＳＰＩバス上の各信号のタイムチャートは、図９で示したタイムチャートと同様である。
【０１２２】
図２３のステップＳ１６の実行時におけるＳＰＩバス上の各信号のタイムチャートも、図９で示したタイムチャートと同様である。ただし、Get Featureコマンドに続くアドレスには、保護の有無が格納された特徴テーブル内の領域を示すアドレス（例えば“Ｃ８ｈ”）が設定され、ホスト機器５００に送信されるステータスデータＳＴ＿ＤＡＴの代わりに、図２６のアドレスＡＤＤで指定されたブロックに関するBlock Protection Statusビットを含む８ビットの情報がホスト機器５００に送信される。この情報は、クロックＳＣＫが入力されている限り、繰り返しホスト機器５００へ送信される。つまり、同一のブロックに関するBlock Protection Statusビットが繰り返しホスト機器５００へ送信される。
【０１２３】
１．４  本実施形態に係る効果  
本実施形態によれば、ブロックの保護の有無をホスト機器５００が確認することができる。本効果につき、以下説明する。
【０１２４】
ブロックを保護するとき、どのブロックを保護したかという情報を記録していないと、後で保護されたブロックを特定することができない。例えば、保護されたブロックを特定する方法として、保護の有無を確認したいブロックに対して書き込みコマンド、または消去コマンドを発行し、当該書き込みコマンド、または消去コマンドの処理が失敗（フェイル）したかを確認することが考えられる。しかし、この方法では、ブロックが保護されているから処理が失敗したのか、他の理由により失敗したのか、特定することができない。
【０１２５】
この点で本実施形態に係る構成によれば、ブロックの保護の有無そのものを直接的に確認することができる。このため、ホスト機器５００が、どのブロックを保護したかという情報を記録する必要がない。
【０１２６】
２．変形例等  
実施形態では、書き込みコマンドに対して保護されれば消去コマンドに対しても保護されるというように、書き込みコマンドと消去コマンドとに対して、保護の有無が共通していた。しかし、この例に限定されず、書き込みコマンドと消去コマンドとで保護の有無を別にしてもよい。図２７は、特徴テーブルの変形例を示す。図２７の特徴テーブルでは、図２４に比較して、Block Protection StatusビットであるBPS1が１ビット目に追加されている。図２８は、BPS1とBPS0の定義を示す。図２８では、BPS1が“１”のとき、書き込みコマンドに対して保護されていることを示し、BPS1が“０”のとき、書き込みコマンドに対して保護されていないことを示している。また、BPS0が“１”のとき、消去コマンドに対して保護されていることを示し、BPS0が“０”のとき、消去コマンドに対して保護されていないことを示している。このように、Block Protection Statusビットを複数ビット設け、ビットごとに異なる処理に対する保護の有無を示してもよい。
【０１２７】
また、上記実施形態では、Get Featureコマンドの応答として、同一のブロックに関するBlock Protection Statusビットが繰り返しホスト機器５００へ送信される例を示したが、これに限定されるものではない。例えば、最初に、Block Protection Status Readコマンドで指定されたブロックのBlock Protection Statusビットが送信され、その後は、Block Protection Status Readコマンドで指定されたブロックのアドレスにアドレスが連続する他のブロックのBlock Protection Statusビットがブロックのアドレスの順番で順次送信されてもよい。このように構成することで、確認対象のブロックのアドレスが連続する場合に、複数のブロックの夫々に対してBlock Protection Status ReadコマンドとGet Featureコマンドとを繰り返し発行することなく、複数のブロックの保護の有無を確認することができる。
【０１２８】
更に、上記実施形態では、書き込みコマンド、または消去コマンドの処理の成功（パス）／失敗（フェイル）を示すステータスが格納される特徴テーブル内の領域のアドレスと、Block Protection Statusビットが格納される特徴テーブル内の領域のアドレスとが異なる例を示したが、これに限定されるものではない。同一のアドレスが割りあてられた特徴テーブル内の領域に、成功（パス）／失敗（フェイル）を示すステータスと、処理対象のブロックが保護されているかを示す情報とが、一緒に格納されていてもよい。この場合、処理が失敗した場合に、失敗を示すステータスと一緒に読み出された、ブロックが保護されているかを示す情報を参照することで、処理の失敗が保護によるものであるかを追加のコマンドを発行することなく認識することができる。
【０１２９】
更に、上記実施形態では、ホスト機器５００からのコマンドによりブロックが保護される例を示したが、これに限定されるものではない。例えば、メモリシステム１のユーザへの出荷前にメモリシステム１の製造者が予め特定のブロックを保護してもよい。この場合でも、ホスト機器５００がコマンドを発行することで保護されているブロックを特定することができる。
【０１３０】
なお、実施形態は上記説明した形態に限られず、種々の変形が可能である。例えば上記実施形態では、ＮＡＮＤ型フラッシュメモリ１００とコントローラ２００とが別々の半導体チップである場合を例に説明した。しかし、これらはワンチップで形成されても良い。
【０１３１】
この場合のメモリシステム１のブロック図を図２９に示す。
【０１３２】
図示するように、ブロック構成は、図７と同様であるが、ホスト機器５００からの信号ＳＣＫ、／ＣＳ、／ＨＯＬＤ、及び／ＷＰがロジック回路４７０に入力され、信号ＳＩ及びＳＯは入出力制御回路４６０を介して入出力される。そして、レジスタ４１０〜４３０、制御回路４４０及び４６０、並びにロジック回路４７０がコントローラ２００の機能を果たす。すなわち、制御回路４４０がシーケンサ２５０及びホストインターフェース回路２２０としての機能を果たし、信号／ＣＳによりホスト機器５００からの命令を判別する。入出力制御回路４６０及びロジック回路４７０は、ホスト入出力回路２１０として機能する。レジスタ４１０及び４２０はレジスタ２８０及び２９０として機能し、特徴テーブルは、例えばステータスレジスタ４１０等に保持される。
【０１３３】
また、上記実施形態で説明したフローチャートにおける各処理は、可能な限りその順番を入れ替えることが出来る。例えば図１９等に記載されるGet featureコマンドは、任意のタイミングで発行されて良く、例えばステップＳ１０の処理が行われる前に発行されても良い。
【０１３４】
更に、上記実施形態で説明したタイミングチャートも一例に過ぎず、信号ＳＩを入力する際に必要なクロック数や、信号ＳＯを出力する際に必要なクロック数も、上記実施形態に限定されるものでは無い。また、コマンドによっては、直後にダミービットが入力される例を示しているが、この場合に限定されるものでは無い。これは特徴テーブルについても同様であり、上記実施形態で説明した情報を保持出来るものであれば、上記実施形態で説明した形式に限定されない。
【０１３５】
また、上記実施形態で説明したメモリシステムは、例えばテレビやセットトップボックス等のアプリケーションを起動するために用いることも出来る。図３０はそのようなシステムの例を示す。本例であると、メモリシステム１の他に、ＮＯＲ型フラッシュメモリ２が用意され、メモリシステム１及びＮＯＲ型フラッシュメモリ２は、共に共通にＳＰＩインターフェースによって接続される。本例では、メモリシステム１を制御するためのコマンド（コマンドＣＭＤ＿ＲＤ１、ＣＭＤ＿ＲＤ２、ＣＭＤ＿ＧＦ、ＣＭＤ＿ＳＦ等）がＮＯＲ型フラッシュメモリ２に保持されている。そして、ホスト機器５００起動時に、ホスト機器５００内のＲＯＭの保持するシーケンスによって、ホスト機器５００はＮＯＲ型フラッシュメモリ２から上記コマンド情報を読み出す。そして、このコマンド情報を用いて、ホスト機器５００はメモリシステム１から起動シーケンスを読み出し、これを実行してアプリケーションが起動される。
【０１３６】
あるいは、ホスト機器５００のＲＯＭ内にメモリシステム１のコマンド情報が保持されていれば、図３１に示すようにＮＯＲ型フラッシュメモリ２が廃されても良い。
【０１３７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１３８】
１…メモリシステム、１００…ＮＡＮＤ型フラッシュメモリ、２００…コントローラ、２１０…ホスト入出力回路、２２０…ホストインターフェース回路、２３０…ＮＡＮＤインターフェース回路、２４０…ＮＡＮＤ入出力回路、２５０…シーケンサ、２６０、２７０…データバッファ、２８０，４１０…ステータスレジスタ、２９０，４２０…アドレスレジスタ、４００…ＥＣＣ回路、３００…リードフレーム、３４０…ボンディングワイヤ、３５０…封止樹脂、４３０…コマンドレジスタ、４４０…制御回路、４５０…電圧発生回路、４６０…入出力制御回路、４７０…ロジック回路、４８０…データレジスタ、５００…ホスト機器、６００…周辺回路、７００…ブロックプロテクションレジスタ。 
【図１】
2018014050.tif 000003
【図２】
2018014050.tif 000004
【図３】
2018014050.tif 000005
【図４】
2018014050.tif 000006
【図５】
2018014050.tif 000007
【図６】
2018014050.tif 000008
【図７】
2018014050.tif 000009
【図８】
2018014050.tif 000010
【図９】
2018014050.tif 000011
【図１０】
2018014050.tif 000012
【図１１】
2018014050.tif 000013
【図１２】
2018014050.tif 000014
【図１３】
2018014050.tif 000015
【図１４】
2018014050.tif 000016
【図１５】
2018014050.tif 000017
【図１６】
2018014050.tif 000018
【図１７】
2018014050.tif 000019
【図１８】
2018014050.tif 000020
【図１９】
2018014050.tif 000021
【図２０】
2018014050.tif 000022
【図２１】
2018014050.tif 000023
【図２２】
2018014050.tif 000024
【図２３】
2018014050.tif 000025
【図２４】
2018014050.tif 000026
【図２５】
2018014050.tif 000027
【図２６】
2018014050.tif 000028
【図２７】
2018014050.tif 000029
【図２８】
2018014050.tif 000030
【図２９】
2018014050.tif 000031
【図３０】
2018014050.tif 000032
【図３１】
2018014050.tif 000033