IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

特開2022-144449メモリシステム、メモリシステムの制御方法及びホストデバイス
<>
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図1
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図2
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図3
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図4
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図5
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図6
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図7
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図8
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図9
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図10
  • 特開-メモリシステム、メモリシステムの制御方法及びホストデバイス 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022144449
(43)【公開日】2022-10-03
(54)【発明の名称】メモリシステム、メモリシステムの制御方法及びホストデバイス
(51)【国際特許分類】
   G06F 12/06 20060101AFI20220926BHJP
   G06F 8/654 20180101ALI20220926BHJP
【FI】
G06F12/06 550A
G06F8/654
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021045469
(22)【出願日】2021-03-19
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【弁理士】
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100075672
【弁理士】
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【弁理士】
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】池田 智広
(72)【発明者】
【氏名】カバネス ハンズ ブラディミル オリナ
(72)【発明者】
【氏名】神田 大輝
【テーマコード(参考)】
5B160
5B376
【Fターム(参考)】
5B160CD00
5B376CA74
5B376FA11
(57)【要約】      (修正有)
【課題】ホストデバイスから送信されるコマンドの処理に関する機能を向上するメモリシステムを提供する。
【解決手段】メモリシステム1は、メモリデバイスと、メモリデバイスの動作を制御し、フラグFLGを含むインプットファイルIPFと、メモリデバイスの動作の制御に関するファームウェアのアップデートのための第1のコマンドHCMDfwupと、をホストデバイス5から受けるコントローラと、を含む。識別フラグFLGが第1の値<0>を有する場合、コントローラは、ファームウェアのアップデートを実行し、識別フラグFLGが第1の値と異なる第2の値<1>を有する場合、コントローラは、ファイルIPFに含まれる複数の第2のコマンドSCMD<1>、SCMD<k-1>を順に実行する。
【選択図】図4
【特許請求の範囲】
【請求項1】
メモリデバイスと、
前記メモリデバイスの動作を制御し、第1のフラグを含む第1のファイルと、前記メモリデバイスの前記動作の制御に関するファームウェアのアップデートのための第1のコマンドと、を受けるコントローラと、
を具備し、
前記第1のフラグが第1の値を有する場合、前記コントローラは、前記ファームウェアのアップデートを実行し、
前記第1のフラグが前記第1の値と異なる第2の値を有する場合、前記コントローラは、前記第1のファイルに含まれる複数の第2のコマンドを順に実行する、
メモリシステム。
【請求項2】
前記第1のフラグが前記第2の値を有する場合、前記コントローラは、前記複数の第2のコマンドの実行の状態を示す第2のフラグを、第3の値に設定し、
前記複数の第2のコマンドの実行が完了した場合、前記コントローラは、前記第2のフラグを、前記第3の値と異なる第4の値に設定する、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、第2のファイル及び前記メモリデバイスの動作のための第3のコマンドを受け、
前記第2のファイルは、前記第1のフラグを含まない、
請求項1又は2に記載のメモリシステム。
【請求項4】
前記複数の第2のコマンドは、前記メモリシステムに対する、デバッグのためのコマンド、ログを取得するためのコマンド、初期化のためのコマンドのうち少なくとも1つを含む、
請求項1乃至3のうちいずれか1項に記載のメモリシステム。
【請求項5】
前記コントローラはプロセッサを含み、
前記ファームウェアは、前記プロセッサによって実行される、
請求項1乃至4のうちいずれか1項に記載のメモリシステム。
【請求項6】
メモリデバイスを備えるメモリシステムの制御方法であって、
ファイルと、前記メモリデバイスの動作の制御に関するファームウェアのアップデートのための第1のコマンドと、を受けることと、
前記ファイルが第1の値を有するフラグを含む場合、前記ファームウェアのアップデートを実行することと、
前記ファイルが前記第1の値と異なる第2の値を有するフラグを含む場合、前記ファイルに含まれる複数の第2のコマンドを順に実行することと、
を具備するメモリシステムの制御方法。
【請求項7】
メモリデバイスを備えるメモリシステムに接続可能なホストデバイスであって、
フラグを含む第1のファイルと、前記メモリシステムの動作の制御に関するファームウェアのアップデートのための第1のコマンドと、を生成するプロセッサと、
前記第1のファイル及び前記第1のコマンドを前記メモリシステムに送るインターフェイス回路と、
を具備し、
前記プロセッサは、
前記メモリシステムに前記ファームウェアの前記アップデートを実行させる場合、前記フラグを第1の値に設定し、
前記メモリシステムに前記第1のファイルに含まれる複数の第2のコマンドを順に実行させる場合、前記フラグを前記第1の値と異なる第2の値に設定する、
ホストデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム、メモリシステムの制御方法及びホストデバイスに関する。
【背景技術】
【0002】
NANDフラッシュメモリを含むメモリシステムが、様々な電子機器に用いられている。このようなメモリシステムは、ホストデバイスに接続可能である。メモリシステムは、ホストデバイスからのコマンドに応じた処理を実行する。メモリシステムは、ホストデバイスから、汎用的な処理を指示する汎用的なコマンドを受信することがある。すなわち、ホストデバイスは、汎用的なコマンドをメモリシステムに送信可能である。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第6308526号明細書
【特許文献2】米国特許第10,402,189号明細書
【特許文献3】米国特許第7,595,902号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
メモリシステム、メモリシステムの制御方法及びホストデバイスにおいて、ホストデバイスからメモリシステムに送信されるコマンドに対する処理に関する機能を向上する。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、メモリデバイスと、前記メモリデバイスの動作を制御し、第1のフラグを含む第1のファイルと、前記メモリデバイスの前記動作の制御に関するファームウェアのアップデートのための第1のコマンドと、を受けるコントローラと、を含み、前記第1のフラグが第1の値を有する場合、前記コントローラは、前記ファームウェアのアップデートを実行し、前記第1のフラグが前記第1の値と異なる第2の値を有する場合、前記コントローラは、前記第1のファイルに含まれる複数の第2のコマンドを順に実行する。
【図面の簡単な説明】
【0006】
図1】第1の実施形態のメモリシステムを説明するため図。
図2】第1の実施形態のメモリシステムの構成例を示す図。
図3】図に示したメモリセルアレイの回路構成の一例を示す図。
図4】第1の実施形態のメモリシステムのコンセプトを説明するための図。
図5】第1の実施形態のメモリシステムの動作例を説明するための図。
図6】第1の実施形態のメモリシステムの動作例を示すシーケンス図。
図7】第1の実施形態のメモリシステムの動作例を示すシーケンス図。
図8】第1の実施形態のメモリシステムの動作例を示すシーケンス図。
図9】第1の実施形態のメモリシステムの動作例のフローチャート。
図10】第2の実施形態のメモリシステムの動作例を示すシーケンス図。
図11】第3の実施形態のメモリシステムの動作例を示すシーケンス図。
【発明を実施するための形態】
【0007】
図1乃至図11を参照して、実施形態のメモリシステム、メモリシステムの制御方法、及びホストデバイスについて、説明する。
【0008】
以下、図面を参照しながら、本実施形態について詳細に説明する。以下の説明において、同一の機能及び構成を有する要素については、同一符号を付す。
また、以下の各実施形態において、末尾に区別化のための数字/英字を伴った参照符号を付された構成要素(例えば、回路、配線、各種の電圧及び信号など)が、相互に区別されなくとも良い場合、末尾の数字/英字が省略された記載(参照符号)が用いられる。
【0009】
[実施形態]
(1)第1の実施形態
図1乃至図9を参照して、第1の実施形態のメモリシステム、メモリシステムの制御方法、及びホストデバイスについて、説明する。
【0010】
(a)構成例
図1は、本実施形態のメモリシステムを説明するための図である。
【0011】
図1に示されるように、サーバ900は、ネットワークNTWを介して、情報通信デバイス800に接続されている。
【0012】
サーバ900は、プロセッサ91、RAM92、ストレージデバイス93及びインターフェイス回路(I/Fとも称する)94を含む。
【0013】
プロセッサ91は、サーバ900内の各種の処理(例えば、計算処理及びデータ処理)及び動作を制御する。プロセッサ91は、各種のデータ及び(又は)情報を含むファイルを作成できる。
【0014】
RAM92は、サーバ900内における各種のデータ処理の作業領域として機能する。RAM92は、プログラム(すなわち、ソフトウェア)、及び、プロセッサ91による各種の処理に用いられるデータ(例えば、計算処理の結果、計算処理の途中のデータ及び(又は)パラメータなど)を一時的に記憶する。
【0015】
ストレージデバイス93は、各種のプログラム及び各種の情報を記憶する。
【0016】
インターフェイス回路94は、或るインターフェイス規格及び(又は)ネットワークNTWに用いられる通信プロトコルに基づいて、他のデバイス(ここでは、情報通信デバイス800)に対する通信を行う。例えば、インターフェイス回路94は、情報通信デバイス800に作成されたファイルを送る。インターフェイス回路94は、情報通信デバイス800からのデータを受ける。
【0017】
情報通信デバイス800は、本実施形態のメモリシステム1、及び、ホストデバイス5を含む。
【0018】
本実施形態のメモリシステム1は、情報通信デバイス800内において、ホストデバイス5からの要求に基づいて、メモリシステム1内におけるデータの書き込み、データの読み出し及びデータの消去を行う。
【0019】
本実施形態のメモリシステム1の内部構成は、後述される。
【0020】
ホストデバイス5は、プロセッサ50、RAM51、インターフェイス回路(I/Fとも称する)53,54を含む。
【0021】
プロセッサ(以下では、ホストプロセッサともよばれる)50は、ホストデバイス5の各種の処理及び動作を、制御する。
【0022】
ホストプロセッサ50は、メモリシステム1に対する各種の処理及び動作を要求(例えば、命令、指示)するためのコマンド(以下では、ホストコマンドとよばれる)を、発行(又は、生成)できる。ホストプロセッサ50は、ホストコマンドに応じたファイルを生成できる。以下では、このファイルは、インプットファイル又はホストファイルともよばれる
【0023】
ファイルは、メモリシステム1の処理及び動作に用いられる1つ以上のデータ(情報、パラメータ)を含むデータセットである。ファイルは、1つ以上のコマンド(又はコマンドを表すデータ)又は実行コードを含んでもよい。ファイルは、フラグ及び(又は)拡張子のような、ファイルの種類及び(又は)ファイルの特性を示す情報を含み得る。ファイルは、例えば、メモリシステム1に書き込まれるデータでもよい。
【0024】
例えば、ホストプロセッサ50は、ホストコマンドを生成するためのコマンド生成ユニット(コマンド生成回路の一例)501を含む。ホストプロセッサ50は、ファイルを生成するためのファイル生成ユニット502(ファイル生成回路の一例)を含む。コマンド生成ユニット501及びファイル生成ユニット502は、ハードウェア(回路)でもよいし、ソフトウェア(プログラム)でもよい。
【0025】
RAM51は、ホストプロセッサ50による各種のデータ処理のための作業領域として機能する。RAM51は、プログラム(すなわち、ソフトウェア)、及び、ホストプロセッサ50による各種の処理に用いられるデータ(計算処理の結果、計算処理の途中のデータ及びパラメータ)を一時的に記憶する。
【0026】
インターフェイス回路53は、或るインターフェイス規格及び(又は)通信プロトコルに基づいて、ネットワークNTWを介したサーバ900との通信を行う。インターフェイス回路53は、サーバ900からの信号及びデータなどを、ホストデバイス5内の内部バスに出力する。
【0027】
インターフェイス回路54は、或るインターフェイス規格及び(又は)通信プロトコルに基づいて、メモリシステム1との通信を行う。
尚、メモリシステム1に対するホストコマンドHCMD(コマンドコード)は、インターフェイス回路54のインターフェイス規格に基づく。例えば、インターフェイス回路54に用いられるインターフェイス規格(又は通信プロトコル)は、SAS規格、SATA規格、PCIexpress(登録商標)規格(以下では、PCIe規格と表記される)、NVMexpress(登録商標)規格(以下では、NVMe規格と表記される)、Universal Flash Strage規格(以下では、UFS規格と表記される)などが採用される。尚、ここで例示されたインターフェイス規格のうちいずれかに準拠したインターフェイス規格又は他のインターフェイス規格が、インターフェイス回路54に用いられてもよい。
【0028】
ホストデバイス5は、上記のインターフェイス規格に基づいた公開されたコマンド又は非公開のコマンドを用いて、メモリシステム1に各種の動作の実行を命令できる。
【0029】
公開されたコマンド(以下では、公開コマンドとよばれる)は、メモリシステム1の仕様書、テクニカルデータシート、又は、説明書などに開示されているコマンドである。例えば、公開コマンドは、メモリシステムに対するデータの書き込み、データの読み出し及びデータの無効化又は消去のような、ユーザデータに関するメモリシステムの各種の動作をメモリシステムに命令するコマンドを含む。
【0030】
非公開のコマンド(以下では、非公開コマンドとよばれる)は、メモリシステム1の仕様書、技術データシート、又は、説明書などに開示されていないコマンドである。例えば、非公開コマンドは、或るプロトコルに基づいたベンダ専用(又は開発者専用)のコマンドである。非公開コマンドの例は、メモリシステム1のデバックのためのコマンド、メモリシステム1のテストのためのコマンド、メモリシステム1の解析のためのコマンド、メモリシステム1の各種の設定の初期化のためのコマンド、及び、メモリシステム1の内部処理のログの取得のためのコマンドなどを含む。
但し、非公開コマンドは、公開コマンドと同様に、メモリシステム1とホストデバイス5(又はサーバ900)との間のインターフェイス規格によって定義されたコマンドである。
【0031】
ホストデバイス5は、上記の構成に加えて、HDD(Hard Disc Drive)のようなストレージデバイス(図示せず)をさらに含んでもよい。
【0032】
例えば、ホストデバイス5(又は、情報通信デバイス800)は、パーソナルコンピュータ、スマートフォン、フューチャーフォン、携帯端末(例えば、タブレット端末)、ゲーム機器、車載機器、ルーター及び基地局などである。
【0033】
本実施形態のメモリシステム1は、メモリコントローラ10及びNANDフラッシュメモリ(以下では、単にフラッシュメモリともよばれる)20を含む。
【0034】
<メモリシステム>
図2は、本実施形態のメモリシステムの構成例を説明するための図である。
【0035】
(メモリコントローラ)
メモリコントローラ10は、ホストデバイス5からの要求に基づいて、NANDフラッシュメモリ20に対するデータの書き込み、データの読み出し及びデータの消去などの各種の処理及び動作を、NANDフラッシュメモリ20に指示(命令)する。
【0036】
メモリコントローラ10は、プロセッサ100、RAM110、バッファ回路120、インターフェイス回路130,140を含む。
【0037】
プロセッサ100は、NANDフラッシュメモリ20に対する各種の処理及び動作を、指示(又は命令)できる。例えば、プロセッサ100は、NANDフラッシュメモリ20に対する指示を示すコマンド(以下では、コントローラコマンドともよばれる)を生成できる。例えば、プロセッサ100は、メモリシステム1内(例えば、NANDフラッシュメモリ20の或るメモリ領域内)に記憶されたファームウェアに基づいて、NANDフラッシュメモリ20に対する各種の処理及び動作を制御する。
【0038】
プロセッサ100は、CPU101、解析ユニット(解析回路の一例)102、及び実行ユニット(実行回路の一例)103などを含む。プロセッサ100は、これらの構成要素によって、公開コマンド及び非公開コマンドの実行のための機能、ファームウェアのアップデートのための機能などを、有する。
【0039】
CPU101は、プロセッサ100内で実行される各種の処理及びプロセッサ100内の各種の動作を制御する。
解析ユニット102は、ホストデバイス5からのホストコマンドHCMDを解析する。
実行ユニット103は、コマンドHCMDの解析処理の結果に基づいた動作を実行する。
【0040】
解析ユニット102及び実行ユニット103は、各ユニット102,103の機能が実現可能であれば、ハードウェア(回路)によって構成されてもよいし、ソフトウェア(プログラム)によって構成されてもよい。
【0041】
RAM110は、メモリコントローラ10内における、プロセッサ100の各種の処理及び動作のための作業領域として機能する。RAM110は、プログラム、及び、プロセッサ100による各種の処理に用いられるデータ(計算処理の結果、計算処理の途中のデータ及びパラメータ)等を一時的に記憶する。例えば、RAM110は、CPU101及び実行ユニット103によりアクセスされる。
尚、RAM110は、プロセッサ100内に設けられたメモリ領域(RAM)でもよい。
【0042】
バッファ回路120は、メモリコントローラ10とホストデバイス5との間において転送されるデータ、及び、メモリコントローラ10とフラッシュメモリ20との間において転送されるデータを、一時的に記憶する。
【0043】
例えば、バッファ回路120は、コマンドバッファ121及びデータバッファ122を含む。
【0044】
コマンドバッファ(コマンドバッファ回路の一例)121は、ホストコマンドHCMDを、一時的に記憶する。
【0045】
データバッファ(データバッファ回路の一例)122は、ホストデバイス5からのファイル(インプットファイル)IPF又はデータを、一時的に記憶する。インプットファイルIPFは、1つ以上のデータ及び(又は)1つ以上のコマンド(コマンドを示すデータ)などを含むデータセットである。インプットファイルIPFは、フラグのような識別情報を含む。
【0046】
インターフェイス回路(以下では、ホストインターフェイス回路ともよばれる)130は、或るインターフェイス規格に基づいて、ホストデバイス5とメモリコントローラ10との間のデータ転送を行う。インターフェイス回路130のインターフェイス規格(及び通信プロトコル)は、ホストデバイス5のインターフェイス回路54のインターフェイス規格と同じ規格(又は準拠した規格)である。
【0047】
インターフェイス回路(以下では、NANDインターフェイス回路ともよばれる)140は、NANDインターフェイス規格に基づいて、メモリコントローラ10とNANDフラッシュメモリ20との間の通信(例えば、データ転送)を行う。
【0048】
メモリコントローラ10がNANDフラッシュメモリ20に或る動作を命令する場合、メモリコントローラ10は、コマンド及びアドレス情報を含むデータ群(以下では、NANDコマンドセットともよばれる)を、NANDフラッシュメモリ20に送る。尚、メモリコントローラ10がデータの書き込みをNANDフラッシュメモリ20に命令する場合、NANDコマンドセットは、書き込みデータをさらに含む。
【0049】
尚、メモリコントローラ10は、上記の構成に加えて、ECC回路(図示せず)のような他の構成を含んでもよい。
【0050】
(NANDフラッシュメモリ)
NANDフラッシュメモリ20は、不揮発性半導体メモリデバイスである。NANDフラッシュメモリ20は、データを実質的に不揮発に記憶できる。
以下において、NANDフラッシュメモリ20は、単に、フラッシュメモリ20ともよばれる。
【0051】
フラッシュメモリ20は、例えば、メモリセルアレイ200、コマンドレジスタ201、アドレスレジスタ202、シーケンサ203、ドライバ回路204、ロウ制御回路205、センスアンプ回路206、及びインターフェイス回路(入出力回路の一例)207などを含む。
【0052】
メモリセルアレイ200は、データを記憶する。メモリセルアレイ200内に、複数のビット線(図示せず)及び複数のワード線(図示せず)が設けられる。メモリセルアレイ200は、1つ以上のブロックBLK0~BLKi-1(iは1以上の整数)を含んでいる。ブロックBLK(BLK0~BLKi-1)は、複数のメモリセルの集合である。ブロックBLKは、例えばデータの消去単位として使用される。
【0053】
図3は、NANDフラッシュメモリ20のメモリセルアレイ200の回路構成の一例を示す等価回路図である。図3において、メモリセルアレイ200に含まれた複数のブロックBLKのうち1つのブロックBLKが抽出して示されている。
【0054】
図3の例のように、ブロックBLKは、例えば、4つのストリングユニットSU0,SU1,SU2,SU3を含む。各ストリングユニットSUは、複数のメモリセルストリング(以下では、NANDストリングとよばれる)NSを含む。複数のNANDストリングNSのそれぞれは、複数のビット線BL0~BLm-1(mは1以上の整数)のうち対応する1つに関連付けられている。
【0055】
NANDストリングNSは、複数のメモリセルMC0~MCn-1、及びセレクトトランジスタST1,ST2を含んでいる。
メモリセル(以下では、メモリセルトランジスタともよばれる)MC(MC0~MCn-1)は、電荷蓄積層を含む電界効果トランジスタである。メモリセルMCは、1ビット以上のデータを実質的に不揮発に記憶できる。
セレクトトランジスタST1,ST2のそれぞれは、各種の動作時におけるストリングユニットSUの選択に使用される。
【0056】
各NANDストリングNSにおいて、メモリセルMC0~MCn-1は、セレクトトランジスタST1のソースとセレクトトランジスタST2のドレインとの間に直列接続される。同一のブロックBLK内のメモリセルMC0~MCn-1の制御ゲートは、複数のワード線WL0~WLn-1のうち対応する1つに共通接続される。
【0057】
各NANDストリングNSにおいて、セレクトトランジスタST1の一端(ソース)が、直列接続されたメモリセルMCの一端に接続され、セレクトトランジスタST1のドレインが、対応するビット線BLに接続される。セレクトトランジスタST1のゲートは、複数のセレクトゲート線SGDのうち対応する1つに接続される。
【0058】
各NANDストリングNSにおいて、セレクトトランジスタST2の一端(ソース)は、ソース線に接続され、セレクトトランジスタST2の他端(ドレイン)は、直列接続されたメモリセルMCの他端に接続される。セレクトトランジスタST2のゲートは、セレクトゲート線SGSに接続される。例えば、同一のブロックBLK内の複数のセレクトトランジスタST2のソースは、1つのソース線SLに共通に接続される。同一のブロックBLK内の複数のセレクトトランジスタST2のゲートは、1つのセレクトゲート線SGSに共通接続される。
【0059】
1つのストリングユニットSU内で共通のワード線WLに接続された複数のメモリセルMCの単位は、例えばセルユニットCUとよばれる。例えば、メモリセルMCの各々が1ビットのデータを記憶する場合、1つのセルユニットCUは、1ページデータを記憶することが可能である。メモリセルMCの各々が2ビットのデータを記憶する場合、1つのセルユニットCUは、2ページデータを記憶することが可能である。「1ページデータ」は、例えば1ビットのデータを記憶するメモリセルMCで構成されたセルユニットCUが記憶するデータの総量で定義される。
【0060】
尚、実施形態のNANDフラッシュメモリ20のメモリセルアレイ200の回路構成は、上述の構成に限定されない。例えば、各NANDストリングNS内のメモリセルMC及びセレクトトランジスタST1,ST2の個数は、それぞれ任意の個数に設計され得る。各ブロックBLK内のストリングユニットSUの個数は、任意の個数に設計され得る。
【0061】
図2に戻って、フラッシュメモリ20内のメモリセルアレイ200以外の構成について説明する。
【0062】
コマンドレジスタ201は、メモリコントローラ10からのコマンド(コントローラコマンド)CMDを記憶する。コントローラコマンドCMDは、例えばシーケンサ203に読み出し動作、書き込み動作、及び消去動作等を実行させるための信号セットである。
【0063】
アドレスレジスタ202は、メモリコントローラ10からのアドレス情報(以下では、選択アドレスともよばれる)ADDを記憶する。アドレス情報ADDは、例えばブロックアドレス、ページアドレス(ワード線アドレス)、及びカラムアドレスを含んでいる。例えば、ブロックアドレス、ページアドレス、及びカラムアドレスは、それぞれブロックBLK、ワード線WL、及びビット線BLの選択に使用される。以下において、ブロックアドレスに基づいて選択されたブロックは、選択ブロックとよばれる。ページアドレスに基づいて選択されたワード線は、選択ワード線とよばれる。
【0064】
シーケンサ203は、フラッシュメモリ20の内部回路の動作を制御する。例えば、シーケンサ203は、コマンドレジスタ201内のコントローラコマンドCMDに基づいてドライバ回路204を制御する。
【0065】
ドライバ回路204は、データの読み出し(すなわち、読み出し動作)、データの書き込み(すなわち、書き込み動作)、及びデータの消去(すなわち、消去動作)等で使用される複数の電圧を出力する。例えばドライバ回路204は、アドレスレジスタ202内のページアドレスに基づいて、選択ワード線に対応する配線に、電圧を印加する。
【0066】
ロウ制御回路205は、メモリセルアレイ200のロウに関する動作を制御する。ロウ制御回路205は、アドレスレジスタ202内のブロックアドレスに基づいて、メモリセルアレイ200内の1つのブロックBLKを選択する。ロウ制御回路205は、例えば選択ワード線に対応する配線に印加された電圧を、選択ブロックBLK内の選択ワード線に転送する。
【0067】
センスアンプ回路206は、メモリセルアレイ200のカラムに関する動作を制御する。センスアンプ回路206は、書き込み動作において、メモリコントローラ10からの書き込みデータDTに応じて、メモリセルアレイ200内に設けられたビット線のそれぞれに電圧を印加する。センスアンプ回路206は、読み出し動作において、ビット線の電位(又は、電流の発生の有無)に基づいてメモリセルに記憶されたデータを判定する。センスアンプ回路206は、この判定結果に基づいたデータを、読み出しデータDTとしてメモリコントローラ10に転送する。
【0068】
インターフェイス回路207は、メモリコントローラ10とフラッシュメモリ20との間において、各種の制御信号及びデータの入力及び出力を行う。
【0069】
NANDフラッシュメモリ20とメモリコントローラ10との間の通信は、NANDインターフェイス規格によってサポートされている。例えば、フラッシュメモリ20とメモリコントローラ10との間の通信において、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディビジー信号RBn、及び入出力信号IOが使用される。
【0070】
コマンドラッチイネーブル信号CLEは、フラッシュメモリ20が受けた入出力信号IOがコントローラコマンドCMDであることを示す信号である。アドレスラッチイネーブル信号ALEは、フラッシュメモリ20が受けた信号IOがアドレス情報ADDであることを示す信号である。ライトイネーブル信号WEnは、フラッシュメモリ20内への入出力信号IOの入力をフラッシュメモリ20に命令する信号である。リードイネーブル信号REnは、メモリコントローラ10への入出力信号I/Oの出力をフラッシュメモリ20に命令する信号である。
【0071】
レディビジー信号RBnは、フラッシュメモリ20がレディ状態であるか、ビジー状態であるかをメモリコントローラ10に通知する信号である。レディ状態は、メモリコントローラ10からのコマンドを受け付ける状態である。ビジー状態は、フラッシュメモリ20がコマンドを受け付けない状態である。
入出力信号IOは、コントローラコマンドCMD、アドレス情報ADD、データDT等を含み得る。入出力信号IOは、例えば8ビット幅の信号(信号セット)である。
【0072】
尚、NANDフラッシュメモリ20は、メモリセルアレイ200、ロウ制御回路205及びセンスアンプ回路206を含む構成(制御単位)によって、プレーンとよばれる制御単位が、形成される場合がある。図2において、NANDフラッシュメモリ20が、1つのプレーンを有する例が示されている。しかし、NANDフラッシュメモリ20は、2つ以上のプレーンを含んでいても良い。プレーンの構成は上記構成に限定されず、プレーンは少なくともメモリセルアレイ200を含んでいれば良い。
【0073】
例えば、メモリシステム1は、SSD(solid state drive)、メモリカード、又は、USB(universal serial bus)メモリ、UFSデバイスなどである。
尚、NANDフラッシュメモリ20の代わりに、他の不揮発性又は揮発性のメモリデバイスが、メモリシステム1に用いられてもよい。
【0074】
<コンセプト>
図4は、本実施形態のメモリシステムの基本的なコンセプトを説明するための模式図である。
【0075】
図4に示されるように、本実施形態のメモリシステム1は、ホストデバイス5から命令(要求及び指示)された複数の動作シーケンス(動作モード)Sq0,Sq1,Sq2に応じて、各種の処理及び動作を実行できる。
【0076】
上述のように、本実施形態のメモリシステム1は、ホストデバイス5から、ホストコマンドHCMD(HCMDfwup,HCMDnom)及びインプットファイルIPF(IPFflg<0>,IPFflg<1>,IPFnom)を受ける。本実施形態のメモリシステム1は、ホストコマンドHCMD,及びインプットファイルIPFに基づいて、各種の処理及び動作を実行する。
【0077】
例えば、本実施形態のメモリシステム1は、通常コマンドHCMDnom及びファームウェアアップデートコマンドHCMDfwupなどを、ホストコマンドHCMDとして受ける。
【0078】
ホストデバイス5が、通常コマンドを用いた動作シーケンス(以下では、通常コマンドモードともよばれる)Sq0をメモリシステム1に要求する場合、ホストデバイス5は、通常コマンドHCMDnomを、メモリシステム1に対して発行(生成及び送信)する。メモリシステム1は、ホストデバイス5からの通常コマンドHCMDnomに応じた処理及び動作を実行する。
【0079】
通常コマンドHCMDnomは、上述の公開コマンドである。通常コマンドHCMDnomは、例えば、ホストデバイス5とメモリシステム1との間で用いられるインターフェイス規格(例えば、上述のPCIe規格又はNVMe規格)に基づくコマンド、メモリシステムの仕様に基づくコマンドである。通常コマンドHCMDnomは、データの書き込み、データの読み出し及びデータの消去などフラッシュメモリ20内のデータにアクセスするためのコマンド、及び、フラッシュメモリ20の各種の設定及び管理に関するコマンド(例えば、ステータスリードコマンド又はZQコマンドなど)である。
【0080】
尚、ホストデバイス5は、メモリシステム1に要求する動作に応じて、通常コマンドHCMDnomと共に、インプットファイルIPFnom(例えば、書き込みデータ、パラメータ、又は設定情報など)を送る場合もある。
【0081】
以下において、ホストコマンドHCMDとそのコマンドHCMDに関連付けられているインプットファイルIPFの集合は、ホストコマンドセットとよばれる。
【0082】
ホストデバイス5が、メモリシステム1のファームウェア(以下では、FWとも表記される)のアップデートのための動作シーケンス(以下では、FWアップデートモードともよばれる)Sq1をメモリシステム1に要求する場合、ホストデバイス5は、ファームウェアアップデートコマンド(以下では、FWアップデートコマンドとも表記される)HCMDfwupをメモリシステム1に対して発行する。ファームウェアアップデートコマンドHCMDfwupは、メモリシステム1のファームウェアのアップデートのためのコマンドである。FWアップデートコマンドHCMDfwupは、サーバ900からの要求に応じて発行されてもよい。
【0083】
FWアップデートモードSq1時、ホストデバイス5は、FWアップデートコマンドHCMDfwupに応じて、ファームウェアのアップデートのためのデータ及び情報を含むインプットファイル(以下では、FWアップデートファイルともよばれる)IPFflg<0>を、メモリシステム1に送る。FWアップデートファイルIPFflg<0>は、ファームウェアのアップデートに用いられる各種のデータDT及び情報などを含む。例えば、FWアップデートファイルIPFflgは、識別フラグFLGを含んでいる。FWアップデートモードSq1時、識別フラグFLGは、例えば、第1の値(<0>)を有する。
【0084】
メモリシステム1は、ホストデバイス5からのFWアップデートコマンドHCMDfwupに基づいて、FWアップデートファイルIPFflg<0>を用いて、ファームウェアのアップデートのための各種の処理及び動作を、実行する。
【0085】
ホストデバイス5が、複数のコマンドSCMD(SCMD<0>,SCMD<1>,SCMD<k>)を連続して実行する動作シーケンス(以下では、コマンドシーケンスモードとよばれる)をメモリシステム1に要求する場合、ホストデバイス5は、FWアップデートコマンドHCMDfwupをメモリシステム1に対して発行する。
【0086】
コマンドシーケンスモード時、ホストデバイス5は、FWアップデートコマンドHCMDfwupに応じて、コマンドシーケンスモードSq2のためのインプットファイル(以下では、コマンドシーケンスファイルともよばれる)IPFflg<1>を、メモリシステム1に送る。この時、ホストデバイス5は、第1の値と異なる第2の値(<1>)を有する識別フラグFLGを、コマンドシーケンスファイルIPFflg<1>に付す。
【0087】
コマンドシーケンスモードが実行される場合、メモリシステム1は、FWアップデートコマンドHCMDfwupと共に、識別フラグ付きのコマンドシーケンスファイルIPFflg<1>を、ホストデバイス5から受ける。
【0088】
本実施形態において、メモリシステム1がFWアップデートコマンドHCMDfwupを受けた場合、メモリシステム1は、識別フラグFLGに基づいて、実行すべき動作シーケンス(動作モード)が、FWアップデートモードSq1であるかコマンドシーケンスモードSq2であるか、を判別する。
【0089】
本実施形態において、インプットファイルIPFに付された識別フラグFLGは、インプットファイルIPFの種類(メモリシステム1が実行すべき動作シーケンス)を示す情報である。
メモリシステム1が実行すべき動作シーケンスがFWアップデートモードSq1である場合(インプットファイルIPFが、FWアップデートファイルである場合)、識別フラグFLGは、第1の値(<0>)を有する。
メモリシステム1が実行すべき動作シーケンスがコマンドシーケンスモードSq2である場合(インプットファイルIPFが、コマンドシーケンスファイルである場合)、識別フラグFLGは、第1の値と異なる第2の値(<1>)を有する。
【0090】
FWアップデートモードSq1の実行の要求時、ホストデバイス5(又はサーバ900)は、第1の値の識別フラグFLG<0>を、インプットファイルIPFに付す。コマンドシーケンスモードSq2の実行の要求時、ホストデバイス5(又はサーバ900)は、第2の値の識別フラグFLG<1>を、インプットファイルIPFに付す。
例えば、識別フラグFLGは、1ビット又は2ビットの信号である。
【0091】
尚、識別フラグFLGは、コマンドシーケンスモードSq2の実行時にのみインプットファイルIPFに付されてもよい。通常コマンドモードSq0の実行時に、通常コマンドモードSq0を示す識別フラグFLGが、ホストコマンドHCMDと共に、ホストデバイス5からメモリシステム1に送られてもよい。
【0092】
以下において、識別フラグFLGが第1の値(第1のフラグ値とも称す)である場合、識別フラグFLGはオフ状態であるとも述べる。識別フラグFLGが第2の値(第2のフラグ値とも称す)である場合、識別フラグFLGはオン状態であるとも述べる。
【0093】
コマンドシーケンスモードSq2における識別フラグ付きインプットファイルIPFflg<1>は、識別フラグFLG<1>と共に、コマンドシーケンスモードに用いられる1以上のコマンドSCMD(SCMD<0>,SCMD<1>,SCMD<k-1>(kは、1以上の整数))、各種のデータDT及び情報などを含む。例えば、コマンドSCMDは、実行すべき1以上のコマンドを示すデータ(プログラムコード)でもよい。
【0094】
本実施形態のメモリシステム1は、FWアップデートコマンドHCMDfwup及びコマンドシーケンスファイルIPFflg<1>に基づいて、コマンドシーケンスファイルIPFflg<1>内の複数のコマンドSCMD<0>,SCMD<1>,SCMD<k-1>を実行する。
【0095】
例えば、ホストデバイス5(又はサーバ900)は、コマンドシーケンスファイルIPFflg<1>の生成時において、コマンドシーケンスファイルIPFflg<1>内の複数のコマンドSCMD<0>,SCMD<1>,SCMD<k-1>の実行順序を、設定する。
【0096】
メモリシステム1は、設定された実行順序で、複数のコマンドSCMD<0>,SCMD<1>,SCMD<k-1>を順次実行する。
メモリシステム1は、各コマンドSCMD<0>,SCMD<1>,SCMD<k-1>の実行時に、コマンドシーケンスファイルIPFflg<1>内のデータDTを、適宜用いる。
【0097】
例えば、メモリシステム1は、識別フラグFLGの判別結果に応じて、コマンドシーケンスモードSq2の実行中であることを示すフラグ(以下では、実行中フラグ)FLGexeを、オフ状態又はオン状態に設定する。識別フラグFLGが、第1の値である場合(FWアップデートモードSq1時)、メモリシステム1は、実行中フラグFLGexeをオフ状態に設定する。識別フラグFLGが、第2の値である場合(コマンドシーケンスモード時)、メモリシステム1は、実行中フラグFLGexeをオン状態に設定する。メモリシステム1は、コマンドシーケンスモードSq2の実行の終了時、実行中フラグFLGexeをオン状態からオフ状態へ変える。
【0098】
尚、サーバ900が、識別フラグFLGを含むインプットファイル(例えば、コマンドシーケンスファイル)IPFflgを生成してもよい。サーバ900は、コマンドシーケンスファイルIPFflg<1>を、ホストデバイス5に提供する。
ホストデバイス5は、サーバ900からのコマンドシーケンスファイルIPFflg<1>に応じて、FWアップデートコマンドHCMDfwupを生成する。ホストデバイスは、FWアップデートコマンドHCMDfwup、及び、サーバ900からのコマンドシーケンスファイルIPFflg<1>を、本実施形態のメモリシステムに送る。
【0099】
以上のように、本実施形態のメモリシステム1は、複数の動作シーケンスSq1,Sq2.Sq3を実行できる。
【0100】
(b)動作例
図5乃至図9を参照して、本実施形態のメモリシステムの動作例について、説明する。
【0101】
(b-1) 動作シーケンス
図5乃至図8を参照して、本実施形態のメモリシステムの動作シーケンスについて、説明する。
【0102】
本実施形態のメモリシステムは、上述の図4のように、3つの動作シーケンスに基づいて、動作することが可能である。
【0103】
図5は、各動作シーケンス時における、本実施形態のメモリシステム内の各構成における処理の流れを模式的に示す図である。
【0104】
図5に示されるように、ホストデバイス5は、ホストコマンドHCMDをメモリシステム1に送る。ホストデバイス5は、メモリシステム1に要求する動作に応じて、インプットファイルIPFをメモリシステム1に送る。上述のように、ホストデバイス5は、メモリシステム1に要求する動作シーケンスに応じて、識別フラグFLGをインプットファイルIPFに付す。
【0105】
メモリシステム1は、ホストコマンドHCMD及びインプットファイルIPFを受ける。ホストコマンドHCMDは、バッファ回路120のコマンドバッファ121内に格納される。インプットファイルIPFは、バッファ回路120内のデータバッファ122内に格納される。
【0106】
メモリシステム1内において、プロセッサ100は、コマンドバッファ121内のホストコマンドHCMDに応じて、対応する動作シーケンス(動作モード)を実行する。
【0107】
上述のように、プロセッサ100は、CPU101、解析ユニット102及び実行ユニット103を含む。さらに、プロセッサ100は、命令コードメモリ104及びワークメモリ105を含む。ワークメモリ105は、RAM110内に設けられてもよい。
【0108】
CPU101は、ファームウェアFWの命令コードに基づいて、メモリコントローラ10内の各種の処理及び動作、フラッシュメモリ20に対する各種の処理及び動作、及び各種の制御を、実行する。
【0109】
解析ユニット102は、コマンドバッファ121内のホストコマンドHCMDにアクセスできる。ホストコマンドHCMDは、コマンドバッファ121から解析ユニット102に供給される。
解析ユニット102は、ホストコマンドHCMDを解析(例えば、デコード)する。
【0110】
本実施形態において、解析ユニット102は、データバッファ122内のインプットファイルIPFに含まれるコマンドSCMDにアクセスできる。コマンドSCMDは、CPU101(又は実行ユニット103)の制御によって、データバッファ122から解析ユニット102に供給される。
解析ユニット102は、コマンドSCMDを解析する。例えば、解析ユニット102は、インプットファイルIPFに含まれる識別フラグFLGに応じた実行ユニット103の制御によって、インプットファイルIPFにアクセスし、インプットファイルIPF内のコマンドSCMDを取得できる。
【0111】
このように、本実施形態において、解析ユニット102は、コマンドバッファ121内のコマンドHCMD及びデータバッファ122内のコマンドSCMDに関する解析処理を実行できる。
【0112】
解析ユニット102は、ホストコマンドHCMD及びコマンドSCMDの解析結果に基づく処理及び動作の実行を、実行ユニット103に指示する。
【0113】
実行ユニット103は、解析ユニット102からの指示に応じて、ホストコマンドHCMD及びコマンドSCMDに関する各種の処理及び動作を実行する。実行ユニット103は、実行すべき処理及び動作に応じて、データバッファ122、ワークメモリ105、及びRAM110にアクセスする。実行ユニット103は、コマンドHCMD,SCMDの処理及び動作の完了に応じて、コマンドHCMD,SCMDに対するレスポンスRESを生成する。実行ユニット103は、生成されたレスポンスRESを、ホストデバイス5又はワークメモリ105に出力する。
尚、実行ユニット103は、フラッシュメモリ20にアクセスできる。
【0114】
命令コードメモリ104は、メモリシステム1のファームウェアの命令コードを記憶する。命令コードメモリ104は、CPU101からアクセスされる。ファームウェアは、メモリシステム1のパワーオン時に、ファームウェアスロット(例えば、フラッシュメモリ20)から読み出される。この時、ファームウェアの命令コードが、命令コードメモリ104内に格納される。
命令コードは、例えば、オペコードのような、メモリシステム1内で実行される基本的な処理(例えば、論理演算、算術演算、又はデータ処理など)を示すコードである。
【0115】
ワークメモリ105は、CPU101による各種のデータ処理の作業エリアとして機能する。ワークメモリ105は、プログラム(又はプログラムの一部)、及び、データ(例えば、計算中のパラメータ、計算結果)を一時的に記憶する。ワークメモリ105は、CPU101及び実行ユニット103からアクセスされる。尚、ワークメモリ105は、プロセッサ100内のメモリ領域でもよいし、RAM110内のメモリ領域でもよい。
【0116】
例えば、命令コードメモリ104及びワークメモリ105は、揮発性メモリ(例えば、DRAM又はSRAM)である。
【0117】
フラッシュメモリ20は、その一部のメモリ領域においてファームウェアスロット(以下では、FWスロットとも表記される)として機能する。フラッシュメモリ20は、ファームウェアを記憶する。ファームウェアのアップデート時、フラッシュメモリ20内の現在のファームウェアが、新たなファームウェアに書き換えられる。
【0118】
フラッシュメモリ20以外の不揮発性メモリデバイスが、ファームウェアスロットに用いられてもよい。
【0119】
以下のように、本実施形態のメモリシステム1は、ホストデバイス5からの要求に応じて、通常コマンドモードSq0、FWアップデートモードSq1及びコマンドシーケンスモードSq2の各動作シーケンスを実行する。
【0120】
<通常コマンドモード>
図6を用いて、本実施形態のメモリシステムにおける通常コマンドモードの各種の処理及び動作について説明する。
【0121】
図6は、本実施形態のメモリシステムの通常コマンドモード時における、構成要素間の処理の流れを示すシーケンス図である。
【0122】
<Q00,Q01>
図6に示されるように、ホストデバイス5は、メモリシステム1に要求する処理及び動作に応じたホストコマンドHCMDを、生成する。
【0123】
通常コマンドモードSq0時、例えば、ホストデバイス5がメモリシステム1に対する各種の動作を要求する場合、ホストデバイス5は、ホストプロセッサ50によって、通常コマンドHCMDnomを生成する。通常コマンドHCMDnomは、公開コマンドである。通常コマンドHCMDnomは、ホストデバイス5とメモリシステム1との間のインターフェイス規格に基づいて定義されたデータ群である。
【0124】
ホストデバイス5は、通常コマンドHCMDnomをホストコマンドHCMとして、上述のインターフェイス回路54を介して本実施形態のメモリシステム1に送る(Q00)。
【0125】
ホストデバイス5は、ホストプロセッサ50によって、実行を要求する動作に応じて、インプットファイルIPFnomを生成する。例えば、通常コマンドモードSq0時、ホストデバイス5は、インプットファイルIPFnomに、動作シーケンスを示す識別フラグFLGを付さない。
ホストデバイス5は、インプットファイルIPFnomを、上述のインターフェイス回路54を介してメモリシステム1に送る(Q01)。
尚、実行を要求する動作に応じて、インプットファイルIPFnomは、生成されない場合もある。
【0126】
このように、ホストデバイス5がメモリシステム1に或る処理及び動作を要求(命令、指示)する場合、ホストデバイス5は、メモリシステム1に、ホストコマンドセットを送る。ホストコマンドセットは、ホストコマンドHCMD及びインプットファイルIPFnomに加えて、メモリシステム1内のアクセス先を示すアドレス情報及びホストコマンドの実行のための各種の情報をさらに含んでもよい。
【0127】
メモリシステム1は、上述のホストインターフェイス回路130を介して、ホストコマンドセットを受ける。
メモリシステム1内において、ホストコマンドHCMDは、コマンドバッファ121に供給され、インプットファイルIPFnomは、データバッファ122に供給される。
【0128】
<Q02,Q03,Q04>
メモリシステム1内において、ホストコマンドHCMDは、CPU101によって、コマンドバッファ121から解析ユニット102に入力される(Q02)。
【0129】
解析ユニット102は、ホストコマンドHCMDとしての通常コマンドHCMDnomを解析する(Q03)。
【0130】
解析ユニット102は、通常コマンドHCMDnomの解析結果に基づいて、各種の処理及び動作の実行を、実行ユニット103に指示する(Q04)。
【0131】
<Q05,Q06>
実行ユニット103は、解析ユニット102からの指示に基づいて、複数の処理及び動作を実行する(Q05)。
【0132】
実行ユニット103は、実行すべき処理及び動作に応じて、データバッファ122のインプットファイルIPFnom内のデータにアクセスする(Q06)。
例えば、実行ユニット103は、実行すべき処理及び動作に応じて、ワークメモリ105に対するアクセス(Qa)及び(又は)フラッシュメモリ20に対するアクセス(Qb)を実行する。
【0133】
通常コマンドモードSq0によって実行される動作及び処理は、フラッシュメモリに対するデータの書き込み、フラッシュメモリからのデータの読み出し、フラッシュメモリ内のデータの消去、パトロール動作(リフレッシュ動作)又はガベージコレクション、フラッシュメモリ20の回路設定のための動作(例えば、キャリブレーション動作)などである。
【0134】
<Q07>
メモリシステム1内において通常コマンドHCMDnomに応じた動作及び処理が完了すると、実行ユニット103は、レスポンスRESを出力する。ホストデバイス5は、レスポンスRESをメモリシステム1から受ける。
【0135】
レスポンスRESは、動作シーケンスの完了の通知、読み出しデータ、及び(又は)、ホストコマンドに応じて実行された処理及び動作の結果を示す情報(例えば、ステータス又はパラメータ)、などを含む。
【0136】
ホストデバイス5は、レスポンスRESに基づいて、サーバ900又はメモリシステム1に対する各種の処理及び動作、又は、ホストデバイス5内の内部処理を実行する。
【0137】
尚、複数のコマンドが、ホストデバイス5からメモリシステム1に転送された場合、各コマンドの実行の完了のたびに、メモリシステム1が、レスポンスRESをホストデバイス5に転送してもよい。
【0138】
以上のように、本実施形態のメモリシステムにおける、通常コマンドモードSq0の動作シーケンスが終了する。
【0139】
<ファームウェアアップデートモード>
図7を用いて、本実施形態のメモリシステムにおけるFWアップデートモードの各種の処理及び動作について説明する。
【0140】
図7は、本実施形態のメモリシステムのFWアップデートモード時における、構成要素間の処理の流れを示すシーケンス図である。
【0141】
<Q10,Q11>
図7に示されるように、ホストデバイス5は、メモリシステム1に、ホストコマンドセットを送る。ホストコマンドセットは、少なくともホストコマンドHCMD及びインプットファイルIPFを含む。
【0142】
FWアップデートモードSq1時において、ホストデバイス5は、ホストプロセッサ50によって、FWアップデートコマンドHCMDfwupを、ホストコマンドHCMDとして生成する。
【0143】
FWアップデートモードSq1の実行の要求時において、インプットファイルIPF(FWアップデートファイルIPFflg<0>)は、ファームウェアのアップデートに関する各種の情報(以下では、アップデート情報ともよばれる)を含む。
【0144】
本実施形態において、上述の図4のように、FWアップデートモードSq1の実行の要求時、ホストデバイス5は、ホストプロセッサ50によって、インプットファイルIPFに識別フラグFLGを付す。ホストデバイス5は、識別フラグFLGの状態を、FWアップデートモードSq1の実行を示す状態に設定する。識別フラグFLGは、第1の値(<0>を有する。識別フラグFLGに設定される値は、例えば、1又は2ビットによって示される値である。
【0145】
尚、FWアップデートファイルIPFflg<0>は、サーバ900によって生成されてもよい。
【0146】
上述のように、ホストデバイス5は、FWアップデートコマンドHCMDfwupをメモリシステムに送る(Q10)。ホストデバイス5は、識別フラグ付きFWアップデートファイルIPFflg<0>を、メモリシステム1に送る(Q11)。
【0147】
メモリシステム1は、ホストコマンドセットを受ける。メモリシステム1において、ホストコマンドとしてのFWアップデートコマンドHCMDfwupは、コマンドバッファ121に供給され、識別フラグFLGを含むインプットファイルIPFflg<0>は、データバッファ122内に供給される。
【0148】
尚、メモリシステム1は、パワーオン時に読み出されたファームウェア(現在のファームウェア)FWaに基づいて、命令コードメモリ104内の命令コードを用いて、動作している。
【0149】
<Q12,Q13>
ホストコマンドHCMDは、コマンドバッファ121から解析ユニット102に入力される(Q12)。
【0150】
メモリシステム1内において、解析ユニット102は、コマンドバッファ121からのホストコマンドHCMDを解析する(Q13)。ホストコマンドHCMDの解析によって、解析ユニット102は、実行すべきホストコマンドHCMDがFWアップデートコマンドHCMDfwupであることを検知する。
【0151】
解析ユニット102は、FWアップデートの実行を実行ユニット103に指示する(Q14)。
【0152】
<Q15,Q16,Q17>
実行ユニット103は、解析ユニット102からのFWアップデートコマンドの実行の指示に応じた動作を実行する(Q15)。
【0153】
本実施形態において、実行ユニット103は、解析ユニット102からのFWアップデートの指示に応じて、データバッファ122内のインプットファイルIPFflg<0>にアクセスする。実行ユニット103は、インプットファイルIPFflg<0>内の識別フラグFLGの状態を確認する(Q16)。
【0154】
識別フラグFLGがFWアップデートファイル(FWアップデートモードSq1の実行)を示している場合、実行ユニット103は、第1の値の識別フラグFLG<0>を検知する。これによって、実行ユニット103は、ファームウェアのアップデートを実行する。この場合において、実行ユニット103は、実行中フラグFLGexeをオフ状態に設定する(F0)。
【0155】
ファームウェアのアップデートの実行中において、実行ユニット103は、ファームウェアのアップデートの進行に応じて、FWアップデートファイルIPFflg<0>にアクセスする(Q17)。これによって、実行ユニット103は、FWアップデートファイルIPFflg<0>を用いた各種の処理及び動作を実行する。
【0156】
尚、ファームウェアのアップデート時において、実行ユニット103は、ワークメモリ105内又はフラッシュメモリ(FWスロット)20内のデータを用いる場合もある(Qa,Qb)。
【0157】
<Q18,Q19,Q20>
FWアップデートの進行に応じて、実行ユニット103は、FWアップデートファイルIPFflg<0>を用いて、現在のファームウェア(アップデート前のファームウェア)及び新たなファームウェア(アップデート後のファームウェア)の検証を行う(Q18)。
【0158】
実行ユニット103は、FWアップデートファイルIPFflg<0>を用いて、FWファームウェアの不揮発化を行う(Q19)。例えば、実行ユニット103は、新たなファームウェア及びそのファームウェアに関する情報を、FWスロットとしてのフラッシュメモリ20の特定の記憶領域内に書き込む。
【0159】
実行ユニット103は、FWアップデートファイルIPFflg<0>を用いて、命令コード(実行コード)の書き換えを行う(Q20)。実行ユニット103は、命令コードメモリ104内の現在のファームウェアFWaに基づく命令コードを、新たなファームウェアFWbに基づく命令コードに書き換える。
これによって、命令コードメモリ104内の命令コードは、アップデート前のファームウェアFWaの命令コードからアップデート後のファームウェアFWbの命令コードへ更新される。
【0160】
命令コードの更新によって、本実施形態のメモリシステム1は、新たなファームウェア(アップデート後のファームウェア)FWbに基づいて、動作する。
尚、ファームウェアFwaから新たなファームウェアFWbへのアップデートの直後に、新たなファームウェアFWbに基づく動作が実行されずに、前のファームウェアFWaに基づく動作が継続されてもよい。この場合において、新たなファームウェアFWbに基づく動作は、メモリシステム1の次回のリセット時又はメモリシステム1の次回の起動時に、実行される。
【0161】
<Q21>
実行ユニット103は、FWアップデートコマンドHCMDfwupに関するレスポンスRESを出力する。メモリシステム1は、レスポンスRESをホストデバイス5に送る。
【0162】
ホストデバイス5は、メモリシステム1からのレスポンスRESを受ける。これによって、ホストデバイス5は、ファームウェアのアップデートの完了を、検知する。
【0163】
尚、ホストデバイス5は、レスポンスRESに応じて、メモリシステム1におけるファームウェアのアップデートの完了を、サーバ900に通知してもよい。
例えば、ファームウェアのアップデートが失敗であった場合、実行ユニット103は、エラー情報を含むレスポンスRESを、ホストデバイス5に送ってもよい。
【0164】
以上のように、本実施形態のメモリシステムにおける、ファームウェアアップデートシーケンスが、終了する。
【0165】
<コマンドシーケンスモード>
図8を用いて、本実施形態のメモリシステムにおけるコマンドシーケンスモードの各種の処理及び動作について説明する。
【0166】
図8は、本実施形態のメモリシステムのコマンドシーケンスモード時における、構成要素間の処理の流れを示すシーケンス図である。
【0167】
<Q30,Q31>
図8に示されるように、ホストデバイス5は、上述の例と同様に、ホストコマンドセットをメモリシステム1に送る。
【0168】
ホストデバイス5がコマンドシーケンスモードSq2の実行をメモリシステム1に要求する場合、ホストデバイス5は、ホストプロセッサ50によって、FWアップデートコマンドHCMDfwupを生成する。ホストデバイス5は、生成されたFWアップデートコマンドHCMDfwupを、ホストコマンドHCMDとしてメモリシステム1に送る(Q30)。
【0169】
本実施形態において、コマンドシーケンスモードSq2の実行の要求時、上述の図4に示されるように、ホストデバイス5は、ホストプロセッサ50によって、インプットファイルIPFに識別フラグFLGを付す。ホストデバイス5は、識別フラグFLGの状態を、コマンドシーケンスファイル(コマンドシーケンスモードSq2の実行)を示す状態に設定する。例えば、識別フラグFLGは、第1の値(<0>)と異なる第2の値(<1>)を有する。
【0170】
コマンドシーケンスモードSq2の実行の要求時、上述の図4に示されるように、ホストデバイス5は、ホストプロセッサ50によって、インプットファイルIPF(コマンドシーケンスファイルIPFflg<1>)内に、複数のコマンドSCMD、又は、複数のコマンドを示すデータを格納する。コマンドシーケンスファイルIPFflg<1>内の複数のコマンドのうち1つ以上は、非公開コマンドでもよい。コマンドシーケンスファイルIPFflg<1>内の複数のコマンドの全てが、非公開コマンドでもよいし、公開コマンドでもよい。
【0171】
ホストデバイス5は、ホストプロセッサ50によって、コマンドシーケンスファイルIPFflg<1>内に格納される複数のコマンドSCMDの実行順序を設定する。例えば、ホストデバイス5は、複数のコマンドSCMDの実行順序に基づいて、複数のコマンドSCMDをコマンドシーケンスファイルIPFflg内に配列する。
複数のコマンドSCMDを示すデータが、コマンドシーケンスファイルIPFflg<1>内に格納される場合、そのデータ内において、複数のコマンドSCMDが、それらのコマンドの実行順序の順番で、記述されてもよい。
【0172】
これによって、複数のコマンドSCMDは、後述の解析ユニット102によるインプットファイルIPFに対するアクセスによって、コマンドシーケンスファイルIPFflg<1>内における複数のコマンドSCMDの所定の実行順序に沿って実行される。
【0173】
尚、コマンドシーケンスファイルIPFflg<1>内の各コマンドSCMDは、実行される順序を示すコード(又はフラグ)を有してもよい。複数のコマンドSCMDの実行順序を示すデータが、コマンドシーケンスモードに関する情報として、インプットファイルIPF内に格納されてもよい。
【0174】
ホストデバイス5は、ホストプロセッサ50によって、コマンドシーケンスモードSq2の実行時に用いられる1以上のデータ(例えば、設定情報及びパラメータなど)を、コマンドシーケンスファイルIPFflg<1>内に格納する。例えば、コマンドシーケンスファイルIPFflg<1>において、複数のデータDTのそれぞれは、複数のコマンドSCMDのうち対応するコマンドと関連付けがなされている。
【0175】
このように、ホストデバイス5は、メモリシステム1に対するインプットファイルIPFとして、識別フラグFLG<1>を有するコマンドシーケンスファイルIPFflg<1>を生成する。
【0176】
ホストデバイス5は、生成された識別フラグ付きコマンドシーケンスファイルIPFflg<1>を、メモリシステム1に送る(Q31)。
【0177】
メモリシステム1は、ホストコマンドセットを受ける。ホストコマンドHCMDとしてのFWアップデートコマンドHCMDfwupは、コマンドバッファ121内に格納される。識別フラグFLGを含むコマンドシーケンスファイルIPFflg<1>は、インプットファイルIPFとしてデータバッファ122内に格納される。
【0178】
尚、コマンドシーケンスモード時において、識別フラグFLG及び複数のコマンドSCMDを含むファイル(コマンドシーケンスファイルIPFflg<1>)は、サーバ900によって生成されてもよい。サーバ900は、作成されたコマンドシーケンスファイルIPFflg<1>を、ホストデバイス5に提供する。
サーバ900は、コマンドシーケンスモードSq2の実行のためのインプットファイルIPFを、識別フラグFLGを付すことなしに、ホストデバイス5に提供する場合もある。この場合において、ホストデバイス5が、コマンドシーケンスモードを示す値を有する識別フラグFLG<1>を、サーバ900からのファイルに付す。
【0179】
<Q32,Q33,Q34>
ホストコマンドHCMDとしてのFWアップデートコマンドHCMDfwupは、コマンドバッファ121から解析ユニット102に転送される(Q32)。
【0180】
解析ユニット102は、ホストコマンドHCMDを解析する(Q33)。ホストコマンドHCMDの解析によって、解析ユニット102は、ホストコマンドHCMDがFWアップデートコマンドHCMDfwupであることを検知する。
【0181】
解析ユニット102は、FWアップデートコマンドHCMDfwupに応じた処理及び動作を、実行ユニット103に指示する(Q34)。
【0182】
<Q35,Q36,Q37>
実行ユニット103は、解析ユニット102からのFWアップデートコマンドHCMDfwupの実行の指示に応じた動作を実行する(Q35)。
【0183】
本実施形態において、実行ユニット103は、解析ユニット102からの指示に応じて、データバッファ122内のインプットファイルIPFflg<1>にアクセスし、識別フラグFLGを確認する(Q36)。
【0184】
識別フラグFLGがコマンドシーケンスファイルを示す場合(識別フラグFLGが第2の値<1>を有する場合)、実行ユニット103は、第2の値の識別フラグFLG<1>を検知する。これによって、実行ユニット103は、コマンドシーケンスモードSq2の実行を開始する。
【0185】
実行ユニット103は、コマンドシーケンスモードSq2を実行する場合、実行中フラグFLGexeを、オン状態に設定する(F1)。
【0186】
例えば、実行ユニット103は、識別フラグFLGがコマンドシーケンスモードSq2を示していることを、解析ユニット102(又はCPU101)に通知する(Q37)。オン状態の実行中フラグFLGexeによって、解析ユニット102(及びCPU101)は、実行すべき動作モードがコマンドシーケンスモードであることを認識できる。
実行中フラグFLGexeは、実行ユニット103から解析ユニット102(及びCPU101)に送られてもよいし、解析ユニット102(及びCPU101)がアクセス可能なレジスタに格納されてもよい。例えば、実行中フラグFLGexeは、1ビット又は2ビットの信号である。実行中フラグFLGexeがオン状態である場合、実行中フラグFLGexeは、第3の値を有する。実行中フラグFLGexeがオフ状態である場合、実行中フラグFLGexeは、第3の値と異なる第4の値を有する。尚、FWアップデートモードSq1時及び通常コマンドモードSq0時において、実行ユニット103は、実行中フラグをオフ状態(第4の値)に設定する。
【0187】
このように、本実施形態において、識別フラグFLGによって、メモリシステム1(例えば、プロセッサ100)は、ホストコマンドHCMDがFWアップデートコマンドであっても、実行すべき動作シーケンスがコマンドシーケンスモードSq2であることを認識する。例えば、ホストコマンドHCMDに応じたメモリシステム1内の動作モードは、識別フラグFLGの確認によって、FWアップデートモードSq1からコマンドシーケンスモードSq2に変更される。
【0188】
<Q38,Q39,Q29>
コマンドシーケンスモードSq2において、実行ユニット103が、データバッファ122のコマンドシーケンスファイルIPFflg<1>にアクセスし、そのファイルIPFflg<1>内の複数のコマンドSCMDのうち1つを、解析ユニット102に送る(Q38)。
【0189】
解析ユニット102は、コマンドシーケンスファイルIPFflg<1>の第1のコマンドSCMD<0>を取得する。コマンドシーケンスモードSq2において、第1のコマンドSCMD<0>は、実行ユニット103によって、解析ユニット102に入力される。
【0190】
上述のように、コマンドシーケンスファイルIPFflg<1>の複数のコマンドSCMDの実行順序は、コマンドシーケンスファイルIPFflg<1>の生成時に設定されている。それゆえ、実行ユニット103は、解析ユニット102は、あらかじめ設定された実行順序で、複数のコマンドのうち1つを、解析ユニット102に送ることができる。
【0191】
例えば、コマンドシーケンスファイルIPFflg<1>の複数のコマンドSCMDは、そのファイルIPFflg<1>内のコマンドSCMDの配列順序に従って、データバッファ122のキュー(又はスタック)内に格納されている。又は、データ内に、複数のコマンドのコードが、コマンドの実行順序に沿って、記述されている。
【0192】
このように、複数のコマンドSCMDは、ホストデバイス5(ホストプロセッサ50)によって決定された実行順序で、解析ユニット102に供給される。
【0193】
尚、コマンドシーケンスファイルIPFflg<1>内の複数のコマンドSCMDは、実行ユニット103の介在無しに、解析ユニット102が、コマンドシーケンスモードSq2の実行の検知(例えば、オン状態の実行中フラグFLGexe)に応じて、ファイルIPFflg<1>内のコマンドSCMDを取得してもよい。
【0194】
解析ユニット102は、取得したコマンドSCMDを解析する(Q39)。
解析ユニット102は、コマンドSCMDの解析結果に基づいて、実行ユニット103にコマンドに応じた処理及び(又は)動作を指示する(Q40)。
【0195】
実行ユニット103は、第1のコマンドSCMD<0>に応じた処理及び動作を実行する(Q41)。例えば、第1のコマンドSCMDに応じて、実行ユニット103は、ワークメモリ105、フラッシュメモリ20又はデータバッファ122にアクセスする(Qa,Qb、Qc)。
実行ユニット103は、第1のコマンドSCMD<0>に応じた処理及び動作を完了する。実行ユニット103は、第1のコマンドSCMD<0>の完了に応じたレスポンスRES1を、ワークメモリ105に格納する(Q42)。
【0196】
尚、ワークメモリ105へのレスポンスRES1の保存時、コマンドSCMD<0>とレスポンスRES1との対応関係が示されるように、レスポンスRES1に識別番号が付されたり、レスポンスRES1がワークメモリ105内におけるコマンドSCMD<0>に関連付けられたアドレス内に格納されたりしてもよい。
【0197】
実行ユニット103は、第1のコマンドに応じた処理及び動作の完了を、解析ユニット102に通知してもよい。CPU101の時間カウンタ(図示せず)の管理に基づいて、各コマンドSCMDの実行期間が、管理されてもよい。
これによって、解析ユニット102は、或るコマンドに応じた処理の完了の後、データバッファ122内の他のコマンドSCMDを、取得できる。
【0198】
<Q43,Q44,Q45,Q46>
第1のコマンドに応じた処理及び動作の完了の後、実行ユニット103は、第1のコマンドSCMD<0>の次に実行される第2のコマンドSCMD<1>を、データバッファ122から解析ユニット102に送る(Q43)。これによって、第2のコマンドSCMDが、解析ユニット102に入力される。
【0199】
解析ユニット102は、第2のコマンドの解析処理を実行する(Q44)。解析ユニット102は、コマンドSCMD<1>の解析結果に基づいた指示を、実行ユニット103に送る(Q45)。
【0200】
実行ユニット103は、解析ユニット102からの指示に基づいて、第2のコマンドSCMD<1>に応じた処理及び動作を、実行する(Q46)。上述のように、実行ユニット103は、データバッファ122、ワークメモリ105又はフラッシュメモリ20に適宜アクセスする。
【0201】
実行ユニット103は、第2のコマンドSCMD<1>に応じた処理及び動作が完了する時、第2のコマンドの完了に応じたレスポンスRES2を、ワークメモリ105に格納する(Q47)。
【0202】
この後、Q38~Q47の処理及び動作と実質的に同じ処理及び動作が、コマンドシーケンスファイルIPFflg<1>内の複数のコマンドSCMDの全てに対して実行される。
【0203】
このように、インプットファイルIPF内の複数のコマンドSCMDが、特定の順序で実行される。
【0204】
尚、コマンドシーケンスモードSq2において、コマンドSCMDの処理及び動作が時間カウンタに設定された期間内に完了しない場合、実行エラーを示す情報がレスポンスRES1,RES2に付加されてもよいし、実行エラーを示すレスポンスがコマンドシーケンスモードSq2の実行中にホストデバイス5に通知されてもよい。コマンドシーケンスモードにおいて、実行のタイムアウトなどによって実行エラーが発生した場合、コマンドシーケンスモードSq2の実行が、中断又は終了されてもよい。
【0205】
<Q48>
コマンドシーケンスファイルIPFflg<1>内の複数のコマンドSCMDの全ての実行が完了した場合、実行ユニット103は、コマンドシーケンスモードSq2に応じたレスポンスRESsqを、ホストデバイス5に転送する。
【0206】
ホストデバイス5は、レスポンスRESsqを受ける。
これによって、ホストデバイス5は、コマンドシーケンスファイルIPFflg<1>内の複数のコマンドSCMDの処理及び動作の完了を、検知する。ホストデバイス5は、レスポンスRESsqに含まれるコマンドシーケンスモードSq2の処理結果(例えば、ログデータ)を取得できる。
【0207】
コマンドシーケンスモードSq2において、コマンドSCMDの実行エラーが生じた場合、メモリシステム1は、コマンドシーケンスモードSq2の実行エラーを、レスポンスRESsqとして、ホストデバイス5に転送してもよい。
尚、各コマンドSCMDのレスポンスRES1,RES2は、ワークメモリ105に格納されることなしに、各コマンドSCMDの実行の完了のタイミングで、ホストデバイス5に転送されてもよい。
また、ホストデバイス5は、ワークメモリ105内のレスポンスRES1,RES2を、メモリシステム1内から読み出すことができる。
【0208】
このように、本実施形態のメモリシステム1は、ホストデバイス5からのホストコマンドHCMDがFWアップデートコマンドであったとしても、インプットファイルIPF内の識別フラグFLGに基づいて、ファームウェアのアップデートと異なる動作シーケンス(本実施形態では、コマンドシーケンスモードSq2)の実行を、実現できる。
【0209】
以上のように、本実施形態のメモリシステムにおける、コマンドシーケンスモードSq2が、終了する。
【0210】
(b-2)処理フロー
図9を参照して、本実施形態のメモリシステムの処理フローについて、説明する。
【0211】
図9は、本実施形態のメモリシステムの処理フローを説明するためのフローチャートである。ここでは、図9と共に、図1乃至図8が、本実施形態のメモリシステムの処理フローの説明するために、適宜用いられる。
【0212】
以下のように、本実施形態のメモリシステム1は、上述の複数の動作シーケンスを実行する。
【0213】
<S0>
本実施形態のメモリシステム1がオンした場合、メモリシステム1は、ファームウェアを、起動する。ファームウェアに関する各種の情報が、NANDフラッシュメモリ(FWスロット)20から、メモリコントローラ10のプロセッサ100に読み出される。ファームウェアの命令コードが、プロセッサ100内の命令コードメモリ104内に格納される。
【0214】
メモリシステム1内において、プロセッサ100は、CPU101、解析ユニット102及び実行ユニット103によって、メモリコントローラ10の各種の内部処理、フラッシュメモリ20に各種の処理及び動作を、制御する。
【0215】
プロセッサ100において、CPU101は、解析ユニット102の解析結果に基づく動作の指示の有無を確認する。
【0216】
解析ユニット102からの指示がない場合(S0のNo)、メモリシステム1(メモリコントローラ10)は、待機状態(又は内部処理状態)となる。
【0217】
或るタイミングにおいて、ホストデバイス5は、ホストコマンドセットを、本実施形態のメモリシステム1に送る。
本実施形態のメモリシステム1は、ホストコマンドセットを、受ける。メモリコントローラ10内において、CPU101は、ホストコマンドセット内のホストコマンドHCMDを、コマンドバッファ121に格納する。CPU101は、インプットファイルIPFを、データバッファ122に格納する。
【0218】
解析ユニット102は、コマンドバッファ121から入力されたホストコマンドHCMDを解析(デコード)する。プロセッサ100内において、解析ユニット102は、CPU101の制御によって、ホストコマンドの解析結果に応じた指示を、実行ユニット103に送る。
【0219】
<S1,S2>
実行ユニット103に対して解析ユニット102からの指示がある場合(S0のYes)、CPU101(又は、実行ユニット103)は、解析ユニット102からの指示の内容を確認する(S1)。
CPU101(又は、実行ユニット103)は、解析ユニット102からの指示が、ファームウェアのアップデートであるか否か、を判定する(S2)。
【0220】
<S3a,S3b,・・・,S3x>
解析ユニット102からの指示がファームウェアのアップデートではない場合(S2のNo)、実行ユニット103は、解析ユニット102からの指示“X1”,“X2”,・・・,“Xx”に応じた各種の処理(及び動作)を実行する。
【0221】
実行すべき動作シーケンスが通常コマンドモードSq0である場合、実行ユニット103は、上述の図6に示されるように、指示“X1”,“X2”,・・・,“Xx”に基づいて、各種の処理を実行する。
【0222】
<S4>
実行ユニット103が解析ユニット102からの指示に応じた各種の処理及び動作の完了の後、CPU101(又は実行ユニット103)は、実行中フラグ(FLGexe)がオン状態であるか否かを確認及び判定する。
【0223】
上述のように、実行中フラグFLGexeは、メモリシステム1内において実行すべき動作シーケンスがコマンドシーケンスモードSq2であるか否かを示す内部情報である。
実行すべき動作シーケンスがコマンドシーケンスモードSq2ではない場合、実行中フラグはオフ状態である。
【0224】
実行中フラグがオフ状態である場合(実行中フラグが第4の値である場合)、メモリシステム1内の処理は、S9に進む。尚、実行中フラグがオン状態である場合における、メモリシステム1内の処理は、後述される。
【0225】
<S9>
実行中フラグがオフ状態である場合(S4のNo)、CPU101は、実行ユニット103によって、ホストコマンドに対するレスポンスを、ホストデバイス5に転送する。
【0226】
ホストデバイス5は、レスポンスに基づいて、メモリシステム1におけるホストコマンドHCMDに応じたシーケンスが完了したことを、検知する。例えば、ホストデバイス5は、シーケンスの完了を示す通知(情報)を、サーバ900に転送してもよい。
この後、メモリシステム1内の処理は、処理Z(すなわち、処理S0)に進む。
【0227】
<S10,S11>
解析ユニット102からの指示がファームウェアのアップデートである場合(S2のYes)、CPU101(又は実行ユニット103)は、インプットファイルIPFの識別フラグFLGを確認する(S10)。例えば、実行ユニット103は、CPU101の制御によって、データバッファ122にアクセスし、指示(ホストコマンドHCMD)に対応したインプットファイルIPF内の識別フラグFLGの状態(つまりフラグ値)を、確認する。
【0228】
実行ユニット103は、識別フラグFLGがコマンドシーケンスファイルを示しているか否か、を判定する(S11)。
【0229】
<S12>
識別フラグFLGが、インプットファイルIPFがコマンドシーケンスファイルであることを示さない場合(S11のNo)、実行ユニット103は、上述の図7のように、FWアップデートモードSq1の動作シーケンスによって、インプットファイル(ここでは、FWアップデートファイルIPFflg<0>)を用いて、ファームウェアのアップデートのための各種の処理及び動作を実行する。
【0230】
実行ユニット103は、データバッファ122内のFWアップデートファイルIPFflg<0>を用いて、ファームウェアの検証及びファームウェアの格納(不揮発化)を行う。
【0231】
これによって、命令コードメモリ104内の命令コードは、FWアップデートファイルに基づいた新たな命令コードに、書き換えられる。
このように、メモリシステム1内のファームウェアのアップデートが、完了する。
【0232】
この後、メモリシステム1は、アップデートされたファームウェアに基づいて、各種の動作を実行する。
【0233】
<S9>
ファームウェアのアップデートの後、CPU101は、実行ユニット103によって、FWアップデートコマンドに対するレスポンスをホストデバイス5に送る。この後、メモリシステム1内の内部処理は、処理Z(すなわち、処理S0)に進む。
【0234】
ホストデバイス5は、メモリシステム1(実行ユニット103)からのレスポンスを受ける。例えば、ホストデバイス5は、レスポンスに応じて、ファームウェアのアップデートの完了を、サーバに通知できる。
【0235】
<S20>
識別フラグFLGが、インプットファイルIPFがコマンドシーケンスファイルであることを示す場合(S11のYes)、実行ユニット103は、上述のCPU101の制御によって、コマンドシーケンスモードSq2による各種の処理を実行する。
実行ユニット103は、実行中フラグをオン状態に設定する。例えば、実行中フラグの値は、第4の値から第3の値へ変わる。
【0236】
<S21>
プロセッサ100において、実行ユニット103(又はCPU101)は、インプットファイルIPFとしてのコマンドシーケンスファイルIPFflg<1>のコマンド(実行されるべきコマンドを示すデータ)が、データバッファ122に存在しているか否かを確認する。
【0237】
<S22>
1以上のコマンドがデータバッファ122内に存在している場合(S21のYes)、実行ユニット103(又はCPU101)は、解析ユニット102に、複数のコマンドSCMDのうち1つのコマンドを転送する。
【0238】
上述のように、コマンドシーケンスファイルIPFflg<0>の複数のコマンドSCMDの実行順序はあらかじめ設定されている。例えば、複数のコマンドは、データバッファ122のキュー内に、所定の順序で格納されている、又は、実行順序がデータによって示されている。それゆえ、データバッファ122から解析ユニット102に対するコマンドSCMDの転送において、コマンドSCMDの実行順序に基づいて、1つのコマンドSCMDが、解析ユニット102に転送される。
【0239】
これによって、コマンドシーケンスモードSq2の開始時において、コマンドシーケンスファイルIPFflg<1>内の複数のコマンドSCMDのうち、コマンドシーケンスにおいて最初に実行されるべきコマンドSCMD1が、解析ユニット102に供給される。
【0240】
メモリシステム1内の処理は、処理Z(すなわち、処理S0)に進む。
【0241】
<S0,S1,S2>
コマンドシーケンスモードSq2において、解析ユニット102は、S22によって供給されたコマンドSCMDを解析する。解析ユニット102は、解析結果に基づいて、コマンドSCMDの実行の指示を、出力する。
【0242】
コマンドSCMDに応じた解析ユニット102からの指示が有る場合(S0のYes)、実行ユニット103は、解析ユニット102からの指示がファームウェアのアップデートの指示であるか否か、を判定する(S1,S2)。
【0243】
ここで、コマンドシーケンスモードSq2の実行中において(実行中フラグがオン状態である場合において)、解析ユニット102からの指示は、コマンドシーケンスファイルIPFflg<1>内のコマンドSCMDに基づく指示であって、FWアップデートコマンドに基づく指示とは、異なる。
それゆえ、S22の後におけるメモリシステム1内の処理は、S2の処理からS3(S3a,S3b,・・・S2x)の処理へ進む。
【0244】
<S3,S4>
コマンドシーケンスモードSq2の実行中において、実行ユニット103は、上述の図9のように、解析ユニット102からの指示(解析結果)に応じた処理及び動作を実行する(S3)。
【0245】
CPU101(又は実行ユニット103)は、処理及び動作の完了の後、実行中フラグFLGexeがオン状態であるか否か、を判定する(S4)。
【0246】
上述(処理S20)のように、コマンドシーケンスモードSq2の実行時において、実行中フラグはオン状態に設定されている。
それゆえ、コマンドシーケンスモードSq2時において、メモリシステム1内の処理は、処理S4から処理S23へ進む。
【0247】
<S23>
実行中フラグFLGexeがオン状態である場合(S4のYes)、実行ユニット103は、上述の図9のように、実行した処理及び動作(コマンド)に関するレスポンスを、ワークメモリ105に保存する。
【0248】
ワークメモリ105内へのレスポンスの保存の後、実行ユニット103は、データバッファ122内にコマンドが存在しているか否か、を判定する(S21)。コマンドシーケンスモードSq2において実行されるべきコマンドが、データバッファ122内に存在(残存)している場合(S21のYes)、上述の処理と同様に、メモリシステム1内の処理は、処理Zへ進み、処理S0,S1,S2,S3,S4,S23が、実行される。
【0249】
コマンドシーケンスファイルIPFflg<1>内の複数のコマンドに関して、1番目のコマンドに対応したレスポンスの保存の後、CPU101、解析ユニット102及び実行ユニット103は、コマンドの実行順序に基づいて、複数のコマンドのうち2番目に実行されるべきコマンドSCMD2に関する処理及び動作を、実行する。
【0250】
このような処理が、プロセッサ100内のCPU101、解析ユニット102及び実行ユニット103によって、コマンドシーケンスファイルIPFflg<1>内のコマンドの全ての実行が完了するまで、繰り返し実行される。
【0251】
<S24>
コマンドシーケンスモードSq2において実行されるべきコマンドが、データバッファ122内に存在(残存)していない場合(S11のNo)、コマンドシーケンスモードSq2において実行すべき全てのコマンドの実行の完了が、示されている。
【0252】
この場合において、実行ユニット103は、コマンドシーケンスモードSq2に関する実行中フラグを、オフ状態に設定する。例えば、実行中フラグFLGexeの値は、第3の値から第4の値へ変わる。
【0253】
この後、実行ユニット103は、コマンドシーケンスモードSq2の実行に関した1つ以上のレスポンスRESsqを、ホストデバイスに送る(S9)。
これによって、メモリシステム1は、コマンドシーケンスモードSq2で実行された複数のコマンドの処理結果(例えばログ)を、ホストデバイス5に提供できる。
【0254】
レスポンスの転送の後、上述のように、メモリシステム1内の処理は、処理Zに進む。
【0255】
以上のように、本実施形態のメモリシステム1は、ホストデバイス5からのコマンド及びインプットファイルに応じて、メモリシステム1に適用される各種のフラグFLG,FLGexeに基づいて、複数の動作シーケンスを実行できる。
【0256】
(c)まとめ
メモリシステムは、メモリシステムの不具合(不良、欠陥)の解析、メモリシステムの設定の変更、などのために、複数のコマンドを、所定の順序で実行する場合がある。
【0257】
或る動作シーケンスの実行のために複数のコマンドが所定の順序で行われる場合、メモリシステムのユーザ側の処理に起因して、コマンドの実行順序の間違い、コマンドの実行抜け、及び(又は)使用すべきデータの間違いなど、動作シーケンスの実行エラーが生じる可能性がある。
【0258】
所定の順序で実行されるべき複数のコマンドを含む動作シーケンスが、特殊なソフトウェア又は特殊なコマンドを用いて実行される場合、特殊なソフトウェア(例えば、ブリッジファームウェア)及び特殊なコマンドが、ユーザの使用環境上で所望の処理及び動作を行わない可能性がある。
【0259】
例えば、ブリッジファームウェアによって複数のコマンドを含む動作シーケンスが実行される場合、ブリッジファームウェアが、メモリシステムで使用されているファームウェアと同じように、複数のコマンドを実行できない可能性がある。そのため、ブリッジファームウェアの処理及び動作の検証のために、コスト及び期間が、発生する。
例えば、特殊なコマンドによって複数のコマンドを含む動作シーケンスが実行される場合、その特殊なコマンドが、メモリシステム(ホストデバイス又はフラッシュメモリ)にサポートされてない可能性が存在し得る。
【0260】
本実施形態のメモリシステム1は、汎用的なコマンドであるファームウェアアップデートコマンドに基づいて、複数のコマンドを含む動作シーケンスを、実行する。
【0261】
ファームウェアのアップデートのためのコマンドは、ほぼ全てのメモリシステム(又はホストデバイス)にサポートされている。それゆえ、ほぼ全てのメモリシステムは、ファームウェアのアップデートのための機能を有している。
【0262】
ファームウェアのアップデートは、メモリシステムに用いられているインターフェイス規格(及び通信プロトコル)のスペックに基づいた統一的な順序に基づいて、実行される。
【0263】
これによって、本実施形態のメモリシステム1は、特殊なコマンド及び特殊なソフトウェアを用いること無しに、設定された実行順序に基づいて、複数のコマンドに応じた処理及び動作を実行できる。
【0264】
本実施形態のメモリシステム1は、ファームウェアアップデートコマンドに応じた複数のコマンドを含む動作シーケンスを、識別フラグを含むファイル(データ)を用いて、実行する。
【0265】
識別フラグを含むファイルは、実行すべき複数のコマンド(及び複数のコマンドの実行順序を表す情報)を含んでいる。
【0266】
識別フラグは、ファームウェアアップデートコマンドに応じて実行すべき動作が、ファームウェアのアップデートであるか、又は、ファイル内の複数のコマンドの実行であるか、示している。
【0267】
これによって、本実施形態のメモリシステム1は、ファームウェアアップデートコマンドの受信時に、複雑な解析を行うことなしに、複数の動作シーケンスのうち実行すべき1つの動作シーケンスを判別できる。
【0268】
識別フラグを含むファイルは、例えば、ホストデバイス又はサーバによって作成され、メモリシステムに提供される。例えば、識別フラグは、ホストデバイス又はサーバによって付される。
【0269】
このように、本実施形態のメモリシステム1は、過大なコスト及び期間の発生、及び、メモリシステムの過剰な仕様の変更無しに、所定の実行順序に基づいて、複数のコマンドに応じた処理及び動作を連続して実行できる。
【0270】
したがって、本実施形態のメモリシステム1は、動作シーケンスの実行エラーの発生を抑制できる。
【0271】
本実施形態のホストデバイス5及びサーバ900は、上述のように、アップデートコマンド及び識別フラグを含むファイルを、作成及び提供できる。これによって、本実施形態のホストデバイス及びサーバ900は、メモリシステムにおける動作シーケンスの実行エラーを低減できる。
【0272】
以上のように、本実施形態のメモリシステム1は、メモリシステムの機能(及び、品質、特性、信頼性など)を向上できる。
【0273】
(2)第2の実施形態
図10を参照して、第2の実施形態のメモリシステムについて説明する。
【0274】
上述のように、第1の実施形態のメモリシステム1は、コマンドシーケンスモードSq2を用いて、所定の順序でメモリシステム1の内部処理を実行できる。メモリシステム1の各種の設定は、コマンドシーケンスモードSq2によって、変更可能である。
【0275】
例えば、メモリシステム1の内部状態を、各種のプログラム及びアプリケーションの実装前の状態(例えば、工場からの出荷時の状態)に設定する場合、ユーザが入手及び(又は)利用することが困難な特殊コマンド(例えば、非公開コマンド)が用いられる場合がある。
非公開コマンドを用いた処理及び動作の実行順序は、複雑になる可能性がある。
【0276】
以下のように、複数の非公開コマンドを含むインプットファイルIPFを用いたコマンドシーケンスモードSq2が実行されることよって、メモリシステム1の設定の変更の失敗は、抑制され得る。
【0277】
図10は、本実施形態のメモリシステムにおける、コマンドシーケンスモードを説明するためのシーケンスである。ここでは、上述の図1乃至図9も適宜参照される。
尚、上述の図9に示される処理フローに基づいて、本実施形態のメモリシステムが実行し得る複数の動作シーケンスが、制御される。
【0278】
<Q30a,Q31a>
図10に示されるように、ホストデバイス5は、ファームウェアアップデートコマンドHCMDfwup及びコマンドシーケンスファイルIPFflg<1>を、本実施形態のメモリシステムに送る。メモリシステム1は、パワーオン時におけるファームウェアの読み出しによって、図9の処理フローを実行可能な状態に設定されている。
【0279】
コマンドシーケンスファイルIPFflg<1>は、識別フラグFLG及び1以上のコマンドSCMDx、パラメータ及び設定情報などの各種のデータDTを含む。
【0280】
識別フラグFLGは、コマンドシーケンスファイル(コマンドシーケンスモードSq2の実行)を示す値(例えば、第2の値)を有する。
【0281】
各コマンドSCMDxは、非公開コマンド(例えば、ベンダ専用のコマンド)を含む。コマンドSCMDxは、テストモード又はデバッグモードの実行、内部ポインタの削除、メモリシステム内のデータ(例えば、RAM110、ワークメモリ105及び(又は)フラッシュメモリ20のデータ)に関するファイルの形成(メモリダンプ)、メモリシステムの再起動、メモリシステム内のログの取得、メモリシステム内の情報の消去及びメモリシステムの設定の初期化などのうち1つを行うためのコマンドである。
【0282】
例えば、複数のコマンドSCMDxが所定の順序で実行されるように、複数のコマンドSCMDxを含む1以上のグループCGが、コマンドシーケンスファイルIPFflg<1>内に形成されてもよい。
【0283】
例えば、非公開コマンドを含むコマンドシーケンスファイルIPFflg<1>は、ホストデバイス5の処理Qx又はサーバ900の処理Qzによって作成される。サーバ900がコマンドシーケンスファイルIPFflg<1>を作成する場合、サーバ900が、作成したコマンドシーケンスファイルIPFflg<1>を、ホストデバイス5(情報通信デバイス800)に提供する。
【0284】
本実施形態のメモリシステム1は、FWアップデートコマンドHCMDfwup及びインプットファイルIPFとしてのコマンドシーケンスファイルIPFflg<1>を受ける。FWアップデートコマンドHCMDfwupは、コマンドバッファ121内に供給される。コマンドシーケンスファイルIPFflg<1>は、データバッファ122に供給される。
【0285】
<Q32~Q47>
この後、上述の図8及び図9の処理と同様に、メモリシステム1がFWアップデートコマンドを受けた場合、解析ユニット102によるFWアップデートコマンドの指示に応じて、実行ユニット103は、各種の処理及び動作を開始する(Q33~Q35)。
【0286】
ファームウェアのアップデートの指示(図9のS0~S2)に応じて、図9のS10のように、実行ユニット103は、データバッファ122内のインプットファイルIPFの識別フラグFLGを確認する(Q36)。
識別フラグFLGがコマンドシーケンスファイルIPFflg<1>を示す値を有している場合(図9のS11のYes)、実行ユニット103(又はCPU101)は、コマンドシーケンスモードSq2によって、コマンドシーケンスファイル内のコマンド及びデータを用いた各種の処理及び動作を実行する。
【0287】
図9のS20のように、識別フラグFLGの確認結果に基づいて、実行ユニット103は、実行中フラグをオン状態に設定する(F1)。
【0288】
図9のS0~S4,S21~S24のように、解析ユニット102及び実行ユニット103は、コマンドシーケンスファイルIPFflg<1>内の複数のコマンドSCMDx(又は、複数のコマンドSCMDxを含むグループCG)を、設定された順序で順次実行する。(Q38~Q47)
【0289】
プロセッサ100において、CPU101、解析ユニット102及び実行ユニット103は、コマンドシーケンスファイルIPFflg<1>内の複数のコマンドSCMDxの全ての実行が完了するまで、上述の動作を繰り返す。
【0290】
<Q48,Q80,Q81>
コマンドシーケンスファイルの全てのコマンドの実行が完了した後、実行ユニット103は、レスポンスRESsq(又はワークメモリ105内の複数のレスポンス)を出力する。レスポンスRESsqは、メモリシステム1からホストデバイス5に転送される。
【0291】
コマンドシーケンスモードSq2の実行時におけるレスポンスの転送において、実行ユニット103(又はCPU101)は、ワークメモリ105内に保存された複数のレスポンス(コマンドシーケンスモードSq2において実行された複数のコマンドSCMDのそれぞれに応じたレスポンス)の全てを、ホストデバイス5に送ってもよい(Q80)。実行ユニット103(又はCPU101)が、ワークメモリ105内に保存された複数のレスポンスに基づいて1つのレスポンスを生成してもよい。
【0292】
ホストデバイス5は、メモリシステム1からのレスポンスRESsq(及びデータ)を解析する。
レスポンスRESsqによって、ホストデバイス5は、コマンドシーケンスファイルを用いた動作シーケンスの実行結果を検知できる。例えば、ホストデバイス5は、メモリシステム1内の状態が所望の状態(例えば、工場からの出荷時の状態)に設定されたことを検知できる。
【0293】
尚、コマンドシーケンスモードSq2においてコマンドの実行エラーが生じた場合、ホストデバイス5は、レスポンスRESによって、コマンドシーケンスファイルIPFflg<1>のコマンドSCMDxの実行エラーを、検知できる。
【0294】
ホストデバイス5は、メモリシステム1からのレスポンスRESsq又はワークメモリ105からの複数のレスポンスを、サーバ900にさらに転送してもよい(Q81)。
【0295】
以上のように、本実施形態のメモリシステム1は、コマンドシーケンスモードSq2によって、識別フラグFLGを含むコマンドシーケンスファイルIPFflg<1>を用いて、メモリシステム1の設定の変更を、実行できる。
【0296】
以上のように、第2の実施形態のメモリシステムは、メモリシステムの機能(及び、品質、特性、信頼性など)を向上できる。
【0297】
(3)第3の実施形態
図11を参照して、第3の実施形態のメモリシステムについて説明する。
【0298】
メモリシステム1の不具合がユーザ(クライアント)によるメモリシステム1の使用時に発生した場合において、不具合の解消のために、メモリシステム1の動作状況(ログ)の分析が、実行される場合がある。
メモリシステム1のログの取得は、上述のようなユーザによる取得及び利用が困難なコマンドの実行、及び、特定の順序による各種の処理を含む。
【0299】
以下のように、本実施形態のメモリシステム1は、コマンドシーケンスモードSq2によって、メモリシステム1の不具合の原因となる情報を取得できる。
【0300】
本実施形態のメモリシステム1は、取得された情報に基づいて、メモリシステム1の不具合を解消できる。
【0301】
図11は、本実施形態のメモリシステム1における、コマンドシーケンスモードを説明するためのシーケンスである。ここでは、上述の図1乃至図10も適宜参照される。
【0302】
<Q30a,Q31a>
図11に示されるように、図10の例と同様に、ホストデバイス5は、ファームウェアアップデートコマンドHCMDfwup及びコマンドシーケンスファイルIPFを、本実施形態のメモリシステム1に送る。
【0303】
コマンドシーケンスファイルIPFflg<1>は、識別フラグFLG<1>及び1以上のコマンド(例えば、ベンダで用いられる非公開コマンド)SCMDxを含む。
【0304】
複数のコマンドSCMDxが所定の順序で実行されるように、複数のコマンドSCMDxが、コマンドシーケンスファイルIPFflg<1>内において、グループ化されてもよい。コマンドシーケンスファイルIPFflg<1>は、ホストデバイス5又はサーバ900によって作成される。
【0305】
上述の実施形態と同様に、本実施形態のメモリシステム1は、FWアップデートコマンドHCMDfwup及びコマンドシーケンスファイルIPFを受ける。
【0306】
<Q32~Q47>
上述の実施形態と同様に、メモリシステム1がFWアップデートコマンドHCMDfwupを受けた場合、解析ユニット102によるFWアップデートコマンドの指示(図9のS0~S2)に応じて、実行ユニット103は、各種の処理及び動作を開始する(Q33~Q35)。
【0307】
図9のS10のように、実行ユニット103は、データバッファ122内のインプットファイルIPFの識別フラグFLGを確認する(Q36)。
【0308】
識別フラグFLGがコマンドシーケンスファイルIPFflg<1>を示す値を有している場合(図9のS11のYes)、実行ユニット103(又はCPU101)は、コマンドシーケンスモードSq2によって、コマンドシーケンスファイルIPFflg<1>内のコマンドSCMDx及びデータDTを用いた各種の処理及び動作を実行する。
【0309】
図9のS20のように、識別フラグFLGの確認結果に基づいて、実行ユニット103は、実行中フラグをオン状態に設定する(F1)。
【0310】
本実施形態において、解析ユニット102及び実行ユニット103は、複数のコマンドSCMDxを、設定された順序で実行する(Q38~Q47)。
【0311】
プロセッサ100において、CPU101、解析ユニット102及び実行ユニット103は、コマンドシーケンスファイルIPF内の複数のコマンドSCMDxの全ての実行が完了するまで、上述の動作を繰り返す。
【0312】
<Q48>
コマンドシーケンスファイルIPFflg<1>の全てのコマンドSCMDxの実行が完了した後、実行ユニット103は、レスポンスRESsqを出力する。これによって、ファームウェアアップデートコマンドHCMDfwup(コマンドシーケンスモードSq2)に応じたレスポンスRESsqが、メモリシステム1からホストデバイス5に転送される。
【0313】
レスポンスRESによって、ホストデバイス5は、コマンドシーケンスファイルIPFflg<1>の実行結果を検知できる。
【0314】
例えば、レスポンスRESsqは、コマンドシーケンスファイルIPFflg<1>の実行より前又はコマンドシーケンスファイルの実行中におけるメモリシステム1内の各種の処理及び動作の結果を示す情報(ログデータ)、及び(又は)、コマンドシーケンスファイルIPFflg<1>のコマンドの実行結果を示す情報を、含む。
【0315】
これによって、ホストデバイス5は、コマンドシーケンスモードSq2によって、メモリシステム1のログデータを取得できる。
【0316】
<Q90,Q91,92>
ホストデバイス5は、レスポンスRESsq及び取得されたログデータに基づいて、メモリシステム1の状態を解析する。
【0317】
ホストデバイス5は、ログデータの分析処理Q90によって、メモリシステム1の不具合(例えば、システムエラー)の原因を、検証できる。
これによって、ホストデバイス5は、不具合を解消するためのデータ(例えば、アップデートプログラム又はパッチファイル)DTzを、形成できる。
【0318】
尚、サーバ900が、ログデータの分析及びメモリシステム1の不具合の検証のための各種の処理Q91を実行してもよい。この場合において、ホストデバイス5は、ログデータを含むファイルを、ネットワークを介してサーバ900に転送する。
これによって、サーバ900は、処理Q91によって、不具合を解消するためのデータDTzを形成できる。
サーバ900は、処理Q92によって、形成されたデータDTzをホストデバイス5及びメモリシステム1に提供できる。
【0319】
サーバ900は、コマンドシーケンスファイルの実行によって得られたデータに基づいて、不具合に関する情報を、ホストデバイス5(ホストデバイス5又はメモリシステム1のユーザ)に提供できる。
【0320】
<Q95>
ホストデバイス5は、データDTzを用いて、メモリシステム1の不具合を解消する。
例えば、ホストデバイス5は、コマンドSCMD、識別フラグFLG<1>及びアップデートデータDTzを含むコマンドシーケンスファイルIPFを、メモリシステム1に送る。メモリシステム1は、コマンドシーケンスモードSq2に基づいて、アップデートデータDTzを用いた処理を実行する。メモリシステム1は、アップデートデータDTzによる処理結果を、レスポンス(図示せず)としてホストデバイス5に送る。ホストデバイス5は、そのレスポンスを受ける。
【0321】
この結果として、メモリシステム1内の不具合は、解消される。
【0322】
以上のように、本実施形態のメモリシステム1は、コマンドシーケンスモードSq2によって、コマンドシーケンスファイルに基づいて、メモリシステム1内の各種の処理及び動作のログを取得できる。
【0323】
取得されたログの分析結果に基づいて、メモリシステム1内の不具合は、解消される。
【0324】
したがって、第3の実施形態のメモリシステム1は、メモリシステム1の機能(及び、品質、特性、信頼性など)を向上できる。
【0325】
(4) その他
上述の実施形態で説明された図6乃至図8の複数の処理を含む図9の処理フローは、プログラムによって実行されてもよい。
【0326】
例えば、図6乃至図9の各処理に対応するプログラムコードが記述されたプログラム(ソフトウェア)が、記録媒体に格納される。そのプログラムを含む記録媒体が、ハードウェアに実装される。記録媒体内のプログラムが、ハードウェア上で実行される。
尚、本実施形態のメモリシステム1に用いられるプログラムは、インターネット又はイントラネットのようなネットワークを介して、他のハードウェアに提供されてもよい。
【0327】
このように、本実施形態のメモリシステム1の制御方法が、記録媒体に記憶されたプログラムとして、実行され得る。
【0328】
尚、上述の実施形態において、上述の各種の処理及び動作を実行するデバイス(システム)が、メモリシステムである例が示されている。但し、上述の実施形態は、メモリシステム以外のシステム及び(又はデバイス)に適用されてもよい。例えば、本実施形態のシステム1は、情報通信システム、ネットワークシステムとしても実現し得る。
【0329】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0330】
1:メモリシステム、5:ホストデバイス、900:サーバ、10:メモリコントローラ、20:フラッシュメモリ、100:プロセッサ、101:CPU、102:解析ユニット、103:実行ユニット、104:命令コードメモリ、105:ワークメモリ、120:バッファ回路、121:コマンドバッファ、122:データバッファ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11