(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1の技術では、データ書き込み処理の高速化を図ることはできるが、データの書き込み処理と読み出し処理との両方を実行したい場合に、データ書き込み処理および読み出し処理の高速化を実現することは困難である。
【0007】
例えば、不揮発性半導体メモリの全域Verify処理では、一般的に、全域(Verify処理の対象とする物理ブロックの全域)にデータを書き込んだ後、全域読み出し処理を実施しなければならない。具体的には、全域Verify処理を実行する場合、ホスト装置は、不揮発性半導体メモリを備える不揮発性記憶装置に対して、データ書き込み指示(Writeコマンドの発行)を行い、不揮発性記憶装置においてデータ書き込み処理が終了した後、データ読み出し指示(Readコマンドの発行)を行う必要がある。このため、ホスト装置がデータ書き込み指示(Writeコマンドの発行)を行ってから、データ読み出し指示(Readコマンドの発行)を行うまでの間に、いわゆる、ホストインターバルと呼ばれる待ち時間が発生する。
【0008】
このように、不揮発性半導体メモリの全域Verify処理では、ホストインターバルによるオーバーヘッドが発生するため、全域Verify処理を高速化することは、困難である。
【0009】
そこで、本発明は、上記問題点に鑑み、従来の不揮発性記憶システム、ホスト装置、不揮発性記憶装置、不揮発性メモリにおいて、定義されているWriteコマンドとReadコマンドとは別に、Read/Writeコマンドを追加定義し、当該Read/Writeコマンドにより、処理を実行することで、データの書き込みと読み出しの同時アクセスを仮想的に実現する不揮発性記憶システム、不揮発性記憶装置、および、メモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するために、第1の発明は、ホスト装置とデータ通信を行うことができる不揮発性記憶装置であって、不揮発性メモリと、不揮発性メモリを制御するメモリコントローラと、を備える。
【0011】
メモリコントローラは、コマンド制御部と、メモリIF部と、を備える。
【0012】
コマンド制御部は、ホスト装置から、不揮発性メモリに対するデータ読み出し処理およびデータ書き込み処理の実行を指示するコマンドであるR/Wコマンドを受信した場合、読み出しアドレスと、書き込みアドレスと、書き込みデータとを取得する。
【0013】
メモリIF部は、不揮発性メモリの書き込みアドレスに、ホスト装置から受信した書き込みデータを書き込むように、不揮発性メモリを制御するとともに、不揮発性メモリの読み出しアドレスからデータを読み出すように、不揮発性メモリを制御する。
【0014】
これにより、この不揮発性記憶装置では、Read/Writeコマンド(R/Wコマンド)により、処理を実行することで、不揮発性メモリに対するデータの書き込みと読み出しの同時アクセスを仮想的に実現することができる。したがって、この不揮発性記憶装置では、例えば、Verify処理のようにデータ書き込み処理と読み出し処理とが頻繁に繰り返される処理において、ホストインターバル(ホスト装置の処理待ち時間)の発生を抑え、高速に処理を実行することができる。
【0015】
第2の発明は、第1の発明であって、R/Wコマンドは、書き込みアドレスと、読み出しアドレスとを含む。
【0016】
これにより、R/Wコマンドから、書き込みアドレス(例えば、書き込み論理アドレス)と読み出しアドレス(例えば、読み出し論理アドレス)とを抽出することができる。
【0017】
第3の発明は、第1の発明であって、R/Wコマンドは、1つのアドレスを含む。
【0018】
コマンド制御部は、R/Wコマンドに含まれるアドレスが1つである場合、当該アドレスを、書き込みアドレス(例えば、書き込み論理アドレス)および読み出しアドレス(例えば、読み出し論理アドレス)として取得する。
【0019】
これにより、R/Wコマンドから、書き込みアドレスと読み出しアドレスとが同じ場合のR/Wコマンドのデータ量を少なくすることできるとともに、不揮発性記憶装置でのデータ読み出し処理および/またはデータ書き込み処理を適切に行うことができる。
【0020】
第4の発明は、第1から第3のいずれかの発明であって、R/Wコマンドは、さらに、書き込みデータを含む。
【0021】
これにより、R/Wコマンドから、書き込みデータを抽出することができる。
【0022】
第5の発明は、第1から第4のいずれかの発明であって、R/Wコマンドは、不揮発性記憶装置の不揮発性メモリについての構成を指定するコマンド処理フラグをさらに含む。
【0023】
これにより、R/Wコマンドにより、不揮発性記憶装置の不揮発性メモリについての構成を指定することができる。そして、コマンド処理フラグに基づいて、不揮発性記憶装置で、例えば、データ書き込み処理とデータ読み出し処理とを、並列処理により実行するか、それとも、直列処理により実行するかを切り替えることができる。
【0024】
なお、「コマンド処理フラグ」は、不揮発性記憶装置が有する不揮発性メモリの個数を指定するものであってもよい。
【0025】
第6の発明は、第1から第5のいずれかの発明であって、R/Wコマンドは、不揮発性記憶装置に実行させる処理の順番を指定するコマンドシーケンスフラグを含む。
【0026】
これにより、R/Wコマンドのコマンドシーケンスフラグに基づいて、不揮発性記憶装置は、実行する処理の順番を特定することができる。そして、コマンドシーケンスフラグに基づいて、不揮発性記憶装置で、例えば、データ書き込み処理とデータ読み出し処理との処理の順番を切り替えることができる。
【0027】
なお、「コマンドシーケンスフラグ」は、例えば、(1)データ読み出し処理をデータ書き込み処理よりも先に開始させる、あるいは、(2)データ書き込み処理をデータ読み出し処理よりも先に開始させる、等を指定するフラグ(情報)である。
【0028】
第7の発明は、第1から第6のいずれかの発明であって、R/Wコマンドは、不揮発性記憶装置に実行させる機能を指定するファンクションフラグを含む。
【0029】
これにより、R/Wコマンドのファンクションフラグに基づいて、不揮発性記憶装置は、実行する処理の内容(機能)を特定することができる。そして、不揮発性記憶装置は、ファンクションフラグで指定された処理(機能)を実行することができる。
【0030】
第8の発明は、第7の発明であって、前記メモリコントローラは、CRC生成部と、比較部と、ホストIF部と、をさらに備える。
【0031】
CRC生成部は、不揮発性メモリからの読み出しデータからCRC値を取得する。
【0032】
比較部は、CRC値についての比較処理を行う。
【0033】
ホストIF部は、ホスト装置とデータを送受信するためのインターフェースである。
【0034】
そして、ファンクションフラグにおいて、ベリファイ機能が指定されており、ホスト装置から、R/Wコマンドと、書き込みデータと、書き込みデータのCRC値とを受信した場合、比較部は、ホスト装置から受信した書き込みデータのCRC値と、CRC生成部により、書き込みデータが不揮発性メモリに書き込まれたアドレスから読み出したデータから取得したCRC値とを比較し、比較結果を示す信号を取得し、ホストIF部は、比較部により取得された比較結果を示す信号を、ホスト装置に送信する。
【0035】
これにより、この不揮発性記憶装置では、ファンクションフラグに基づいて、ベリファイ処理(Verify処理)を実行することができる。この不揮発性記憶装置では、比較部により、ホスト装置から受信した書き込みデータのCRC値と、CRC生成部により、書き込みデータが不揮発性メモリに書き込まれたアドレスから読み出したデータから取得したCRC値とを比較した結果が、ホストIF部により、ホスト装置に送信される。したがって、ホスト装置は、この不揮発性記憶装置から受信した比較結果を確認するだけで、ベリファイ処理を実行することができる。その結果、ホスト装置での処理待ち時間(ホストインターバル)の発生を抑制することができる。
【0036】
第9の発明は、不揮発性メモリを制御するメモリコントローラであって、コマンド制御部と、メモリIF部と、を備える。
【0037】
コマンド制御部は、ホスト装置から、不揮発性メモリに対するデータ読み出し処理およびデータ書き込み処理の実行を指示するコマンドであるR/Wコマンドを受信した場合、読み出しアドレスと、書き込みアドレスと、を取得する。
【0038】
メモリIF部は、不揮発性メモリの書き込みアドレスに、ホスト装置から受信した書き込みデータを書き込むように、不揮発性メモリを制御するとともに、不揮発性メモリの前記読み出しアドレスからデータを読み出すように、不揮発性メモリを制御する。
【0039】
これにより、このメモリコントローラでは、Read/Writeコマンド(R/Wコマンド)により、処理を実行することで、不揮発性メモリに対するデータの書き込みと読み出しの同時アクセスを仮想的に実現することができる。したがって、このメモリコントローラでは、例えば、Verify処理のようにデータ書き込み処理と読み出し処理とが頻繁に繰り返される処理において、ホストインターバル(ホスト装置の処理待ち時間)の発生を抑え、高速に処理を実行することができる。
【0040】
第10の発明は、第9の発明であって、R/Wコマンドは、1つのアドレスを含む。
【0041】
コマンド制御部は、R/Wコマンドに含まれるアドレスが1つである場合、当該アドレスを、書き込みアドレスおよび読み出しアドレスとして取得する。
【0042】
これにより、R/Wコマンドから、書き込みアドレスと読み出しアドレスとが同じ場合のR/Wコマンドのデータ量を少なくすることできるとともに、メモリコントローラでのデータ読み出し処理および/またはデータ書き込み処理を適切に行うことができる。
【0043】
第11の発明は、第9または第10の発明であって、R/Wコマンドは、さらに、書き込みデータを含む。
【0044】
これにより、R/Wコマンドから、書き込みデータを抽出することができる。
【0045】
第12の発明は、第9から第11のいずれかの発明であって、R/Wコマンドは、メモリコントローラにおいて、実行される機能を指定するファンクションフラグを含む。
【0046】
これにより、R/Wコマンドのファンクションフラグに基づいて、メモリコントローラは、実行する処理の内容(機能)を特定することができる。そして、メモリコントローラは、ファンクションフラグで指定された処理(機能)を実行することができる。
【0047】
第13の発明は、第12の発明であって、CRC生成部と、比較部と、ホストIF部と、をさらに備える。
【0048】
CRC生成部は、不揮発性メモリからの読み出しデータからCRC値を取得する。
【0049】
比較部は、CRC値についての比較処理を行う。
【0050】
ホストIF部は、ホスト装置とデータを送受信するためのインターフェースである。
【0051】
そして、ファンクションフラグにおいて、ベリファイ機能が指定されており、ホスト装置から、R/Wコマンドと、書き込みデータと、書き込みデータのCRC値とを受信した場合、比較部は、ホスト装置から受信した書き込みデータのCRC値と、CRC生成部により、書き込みデータが不揮発性メモリに書き込まれたアドレスから読み出したデータから取得したCRC値とを比較し、比較結果を示す信号を取得する。そして、この場合、ホストIF部は、比較部により取得された比較結果を示す信号を、前記ホスト装置に送信する。
【0052】
これにより、このメモリコントローラでは、ファンクションフラグに基づいて、ベリファイ処理(Verify処理)を実行することができる。このメモリコントローラでは、比較部により、ホスト装置から受信した書き込みデータのCRC値と、CRC生成部により、書き込みデータが不揮発性メモリに書き込まれたアドレスから読み出したデータから取得したCRC値とを比較した結果が、ホストIF部により、ホスト装置に送信される。したがって、ホスト装置は、このメモリコントローラから受信した比較結果を確認するだけで、ベリファイ処理を実行することができる。その結果、ホスト装置での処理待ち時間(ホストインターバル)の発生を抑制することができる。
【0053】
第14の発明は、制御装置(例えば、メモリコントローラ)とデータ通信を行うことができる不揮発性メモリ装置であって、不揮発性メモリと、コマンド制御部と、メモリ制御部と、を備える。
【0054】
コマンド制御部は、制御装置から、不揮発性メモリに対するデータ読み出し処理およびデータ書き込み処理の実行を指示するコマンドであるR/Wコマンドを受信した場合、読み出しアドレスと、書き込みアドレスとを取得する。
【0055】
メモリ制御部は、不揮発性メモリの書き込みアドレスに、制御装置から受信した書き込みデータを書き込むように、不揮発性メモリを制御するとともに、不揮発性メモリの読み出しアドレスからデータを読み出すように、不揮発性メモリを制御する。
【0056】
これにより、この不揮発性メモリ装置では、Read/Writeコマンド(R/Wコマンド)により、処理を実行することで、不揮発性メモリに対するデータの書き込みと読み出しの同時アクセスを仮想的に実現することができる。したがって、この不揮発性メモリ装置では、例えば、Verify処理のようにデータ書き込み処理と読み出し処理とが頻繁に繰り返される処理において、ホストインターバル(例えば、制御装置と接続されているホスト装置の処理待ち時間)の発生を抑え、高速に処理を実行することができる。
【0057】
第15の発明は、第14の発明であって、R/Wコマンドは、1つのアドレスを含む。
【0058】
コマンド制御部は、R/Wコマンドに含まれるアドレスが1つである場合、当該アドレスを、書き込みアドレスおよび読み出しアドレスとして取得する。
【0059】
これにより、R/Wコマンドから、書き込みアドレスと読み出しアドレスとが同じ場合のR/Wコマンドのデータ量を少なくすることできるとともに、不揮発性メモリ装置でのデータ読み出し処理および/またはデータ書き込み処理を適切に行うことができる。
【0060】
第16の発明は、第14または第15の発明であって、R/Wコマンドは、さらに、書き込みデータを含む。
【0061】
これにより、R/Wコマンドから、書き込みデータを抽出することができる。
【0062】
第17の発明は、第14から第16のいずれかの発明であって、R/Wコマンドは、不揮発性メモリ装置において、実行される機能を指定するファンクションフラグを含む。
【0063】
これにより、R/Wコマンドのファンクションフラグに基づいて、不揮発性メモリ装置は、実行する処理の内容(機能)を特定することができる。そして、不揮発性メモリ装置は、ファンクションフラグで指定された処理(機能)を実行することができる。
【0064】
第18の発明は、第17の発明であって、CRC生成部と、比較部と、IF部と、をさらに備える。
【0065】
CRC生成部は、不揮発性メモリからの読み出しデータからCRC値を取得する。
【0066】
比較部は、CRC値についての比較処理を行う。
【0067】
IF部は、制御装置とデータを送受信するためのインターフェースである。
【0068】
そして、ファンクションフラグにおいて、ベリファイ機能が指定されており、制御装置から、R/Wコマンドと、書き込みデータと、書き込みデータのCRC値とを受信した場合、比較部は、制御装置から受信した書き込みデータのCRC値と、CRC生成部により、書き込みデータが不揮発性メモリに書き込まれたアドレスから読み出したデータから取得したCRC値とを比較し、比較結果を示す信号を取得する。また、上記の場合、IF部は、比較部により取得された比較結果を示す信号を、制御装置に送信する。
【0069】
これにより、この不揮発性メモリ装置では、ファンクションフラグに基づいて、ベリファイ処理(Verify処理)を実行することができる。この不揮発性メモリ装置では、比較部により、ホスト装置から受信した書き込みデータのCRC値と、CRC生成部により、書き込みデータが不揮発性メモリに書き込まれたアドレスから読み出したデータから取得したCRC値とを比較した結果が、IF部により、制御装置に送信される。したがって、制御装置(または制御装置に接続されたホスト装置)は、この不揮発性メモリ装置から受信した比較結果を確認するだけで、ベリファイ処理を実行することができる。その結果、制御装置および/または制御装置に接続されたホスト装置での処理待ち時間(ホストインターバル)の発生を抑制することができる。
【0070】
第19の発明は、ホスト装置と、第1から第8のいずれかの発明である不揮発性記憶装置とを備える不揮発性記憶システムである。
【0071】
これにより、ホスト装置と、第1から第8のいずれかの発明である不揮発性記憶装置とを備える不揮発性記憶システムを実現することができる。つまり、第1から第8のいずれかの発明と同様の効果を奏する不揮発性記憶システムを実現することができる。
【発明の効果】
【0072】
本発明によれば、従来の不揮発性記憶システム、ホスト装置、不揮発性記憶装置、不揮発性メモリにおいて、定義されているWriteコマンドとReadコマンドとは別に、Read/Writeコマンドを追加定義し、当該Read/Writeコマンドにより、処理を実行することで、データの書き込みと読み出しの同時アクセスを仮想的に実現する不揮発性記憶システム、不揮発性記憶装置、および、メモリコントローラを実現することができる。
【発明を実施するための形態】
【0074】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0075】
<1.1:不揮発性記憶システムの構成>
図1は、第1実施形態に係る不揮発性記憶システム1000の概略構成図である。
【0076】
不揮発性記憶システム1000は、
図1に示すように、ホスト装置1と、不揮発性記憶装置2と、備える。ホスト装置1と不揮発性記憶装置2とは、例えば、バスで接続されている。
【0077】
不揮発性記憶装置2は、
図1に示すように、メモリコントローラMCと、不揮発性メモリMEMと、を備える。
【0078】
メモリコントローラMCは、
図1に示すように、ホストIF部21と、コマンド制御部22と、バッファ23と、アドレス変換部24と、メモリIF部25と、誤り訂正処理部26と、制御部27と、を備える。
【0079】
ホスト装置1は、バス(クロック信号、データ、コマンド等を送受信するための通信路)を介して、不揮発性記憶装置2と電気的に接続することが可能である。ホスト装置1は、不揮発性記憶装置2に対して、コマンド、データ等を送信し、および/または、不揮発性記憶装置2から、ステータス信号やデータ等を受信する。
【0080】
不揮発性記憶装置2は、データを記憶することができる不揮発性メモリMEMと、不揮発性メモリMEMを制御するメモリコントローラMCとを備える。不揮発性記憶装置は、バス(クロック信号、データ、コマンド等を送受信するための通信路)を介して、ホスト装置1と電気的に接続することが可能である。不揮発性記憶装置2は、ホスト装置1から、コマンド、データ等を受信し、および/または、ホスト装置1へ、ステータス信号やデータ等を送信する。
【0081】
不揮発性メモリMEMは、例えば、NANDフラッシュメモリであり、メモリコントローラMCの制御に従い、データの書き込みおよび/または読み出しを行うことができるメモリである。また、不揮発性メモリは、メモリIF部へ、不揮発性メモリのアクセス状況等を示すステータス信号(Ready信号/Busy信号)やフラグ信号等を出力する。
【0082】
メモリコントローラMCは、不揮発性メモリMEMのデータの書き込み処理および/または読み出し処理の制御を行う。メモリコントローラMCは、
図1に示すように、ホストIF部21と、コマンド制御部22と、バッファ23と、アドレス変換部24と、メモリIF部25と、誤り訂正処理部26と、制御部27と、を備える。
【0083】
ホストIF部21は、ホスト装置1とのインターフェース部である。ホストIF部21は、例えば、バスにより、ホスト装置1と接続され、バスを介して、ホスト装置1から、データ、コマンド等を受信する。また、ホストIF部は、バスを介して、ホスト装置1へ、ステータス信号、データ等を送信する。
【0084】
ホストIF部21は、ホスト装置1から受信したコマンドを、コマンド制御部22に出力する。
【0085】
また、ホストIF部21は、制御部27や誤り訂正処理部26から出力されるデータ(読み出しデータ)やステータス信号を入力し、入力したデータ(読み出しデータ)やステータス信号を、バスを介して、ホスト装置1へ送信する。
【0086】
コマンド制御部22は、ホストIF部21からの出力と制御部27から出力されるステータス信号(不揮発性メモリの状態を示すステータス信号、フラグ信号等)とを入力とする。コマンド制御部22は、ホストIF部21から出力されるコマンドをデコードし、当該コマンドで指定されている論理アドレスを取得し、デコードしたコマンドに関する情報(以下、単に、「コマンド」という。)と、取得した論理アドレスの情報(以下、単に、「論理アドレス」という。)とをアドレス変換部24に出力する。また、コマンド制御部22は、コマンドの種別に応じた処理を行う。
【0087】
例えば、(1)ホストIF部21から入力されたコマンドがReadコマンドである場合、コマンド制御部22は、当該コマンドから読み出し論理アドレスを抽出し、抽出した読み出し論理アドレスをアドレス変換部24に出力する。(2)ホストIF部21から入力されたコマンドがWriteコマンドである場合、コマンド制御部22は、当該コマンドから書き込み論理アドレスを抽出し、抽出した書き込み論理アドレスをアドレス変換部24に出力するともに、ホストIF部21から入力された書き込みデータをバッファ23に格納(出力)する。(3)ホストIF部21から入力されたコマンドがR/Wコマンドである場合、コマンド制御部22は、当該コマンドから読み出し論理アドレスおよび書き込みアドレスを抽出し、それぞれ、所定のタイミング(例えば、制御部27から出力されるステータス信号により決定されるタイミング)で、抽出した読み出し論理アドレスと書き込み論理アドレスとをアドレス変換部24に出力する。また、コマンド制御部22は、ホストIF部21から入力された書き込みデータをバッファ23に格納(出力)する(詳細については、後述。)。
【0088】
バッファ23は、コマンド制御部22から出力されるデータを記憶するためのバッファである。バッファ23は、コマンド制御部22から入力されたデータであって、記憶保持しているデータを、メモリIF部25に出力する。
【0089】
アドレス変換部24は、コマンド制御部22から出力されるコマンドと論理アドレスとを入力する。また、アドレス変換部24は、論理アドレス/物理アドレス変換テーブルを有している。アドレス変換部24は、論理アドレス/物理アドレス変換テーブルに基づいて、コマンド制御部22から入力された論理アドレスを物理アドレスに変換する。そして、アドレス変換部24は、当該物理アドレスに関する情報(以下、単に、「物理アドレス」という。)と、コマンドとをメモリIF部25に出力する。
【0090】
メモリIF部25は、不揮発性メモリMEMに対してデータを書き込む処理、および/または、不揮発性メモリMEMからデータを読み出す処理の制御を行うインターフェース部である。
【0091】
不揮発性メモリMEMに対してデータを書き込む処理を行う場合、メモリIF部25は、アドレス変換部24から出力されるコマンドおよび物理アドレス(書き込み物理アドレス)と、バッファ23から出力される書き込みデータとを入力する。そして、メモリIF部25は、不揮発性メモリMEMに対して、コマンド(Writeコマンド)と物理アドレス(書き込み物理アドレス)と書き込みデータとを出力し、不揮発性メモリMEMにおいて、当該物理アドレス(書き込み物理アドレス)に、バッファ23から出力される書き込みデータが書き込まれるように、第1不揮発性メモリM1に対して、データ書き込み制御を行う。
【0092】
不揮発性メモリMEMからデータを読み出す処理を行う場合、メモリIF部25は、アドレス変換部24から出力されるコマンドおよび物理アドレス(読み出し物理アドレス)を入力する。そして、メモリIF部25は、不揮発性メモリMEMに対して、コマンド(Readコマンド)と物理アドレス(読み出し物理アドレス)とを出力し、第1不揮発性メモリM1において、当該物理アドレス(読み出し物理アドレス)に、記憶されているデータを読み出すように、不揮発性メモリMEMに対して、データ読み出し制御を行う。
【0093】
また、メモリIF部25は、不揮発性メモリMEMから読み出したデータを誤り訂正処理部26に出力する。また、メモリIF部25は、不揮発性メモリMEMから受信したステータス信号やフラグ信号等を制御部27に出力する。
【0094】
誤り訂正処理部26は、メモリIF部25から出力される読み出しデータを入力する。誤り訂正処理部は、入力された読み出しデータに対して、誤り訂正処理を行い、処理後の読み出しデータをホストIF部21に出力する。
【0095】
制御部27は、メモリIF部25から出力されるステータス信号やフラグ信号を入力する。制御部27は、メモリIF部25からReady終了フラグ信号が入力された場合、当該Ready終了フラグ信号をコマンド制御部22に出力する。また、制御部27は、メモリIF部25からReady信号(「Ready」を示すステータス信号)が入力された場合、当該Ready信号をホストIF部21に出力する。
【0096】
<1.2:不揮発性記憶システムの動作>
以上のように構成された不揮発性記憶システム1000の動作について、図面を参照しながら、説明する。なお、本実施形態では、不揮発性記憶システム1000が、1個の不揮発性メモリMEMを備え、ホスト装置1から不揮発性記憶装置2に対して、(1)データ読み出し処理、(2)データ書き込み処理の順に処理を実行するよう指示するR/Wコマンドが発行された場合を例に説明する。また、以下では、
図1に付した処理番号(
図1中に括弧で付した番号)の順に、説明する。
【0097】
≪処理(1)≫
ホスト装置1は、不揮発性記憶装置2のホストIF部21に対して、(1)データ読み出し処理、(2)データ書き込み処理の順に処理を実行するよう指示するR/Wコマンドを発行(送信)する。また、ホスト装置は、当該R/Wコマンドによりデータ書き込み処理を行う書き込みデータWriteDataを不揮発性記憶装置2のホストIF部21に送信する。
【0098】
≪処理(2)≫
ホストIF部21は、ホスト装置1から受信したR/Wコマンド、および書き込みデータWriteDataをコマンド制御部22に転送(出力)する。
【0099】
≪処理(3)≫
コマンド制御部22は、ホストIF部21から受信したR/Wコマンドをデコードし、読み出し論理アドレスを抽出するとともに、メモリIF部25が不揮発性メモリMEMからデータを読み出すために、メモリIF部25から不揮発性メモリMEMに出力されるReadコマンドを生成する。そして、コマンド制御部22は、R/Wコマンドから抽出した読み出し論理アドレス(Readアドレス)を、アドレス変換部24に転送(出力)する。
【0100】
≪処理(4)≫
コマンド制御部22は、ホストIF部21から受信した書き込みデータWriteDataをバッファ23に格納する。
【0101】
≪処理(5)≫
アドレス変換部24は、論理アドレス/物理アドレス変換テーブルに基づいて、コマンド制御部22から受信した読み出し論理アドレスを読み出し物理アドレスに変換する。そして、アドレス変換部24は、コマンド制御部22から受信したReadコマンドと読み出し物理アドレス(Readアドレス)とをメモリIF部25に出力する。
【0102】
≪処理(6)≫
メモリIF部25は、アドレス変換部24から受信したReadコマンドと読み出し物理アドレス(Readアドレス)とを不揮発性メモリMEMに出力する。これにより、不揮発性メモリMEMでは、メモリIF部25から受信した読み出し物理アドレス(Readアドレス)のデータを読み出す処理を実行する。
【0103】
≪処理(7)≫
不揮発性メモリMEMは、メモリIF部25から受信したReadコマンドに従い、読み出し物理アドレス(Readアドレス)から読み出したデータReadDataをメモリIF部25に出力する。
【0104】
≪処理(8)≫
メモリIF部25は、不揮発性メモリMEMから受信した読み出しデータReadDataを誤り訂正処理部26に出力する。
【0105】
≪処理(9)≫
誤り訂正処理部26は、メモリIF部25から受信した読み出しデータReadDataに対して誤り訂正処理を実行し、読み出しデータReadDataに誤りがある場合は訂正し、ホストIF部21に出力する。
【0106】
≪処理(10)≫
ホストIF部21は、誤り訂正処理部26から受信した誤り訂正処理後の読み出しデータReadDataをホスト装置1に転送(出力)する。
【0107】
≪処理(11)≫
不揮発性メモリMEMは、読み出しデータReadDataの読み出し処理が終了し、当該読み出しデータReadDataの出力が完了すると、Read終了フラグをメモリIF部25に出力する。
【0108】
≪処理(12)≫
メモリIF部25は、不揮発性メモリMEMから受信したRead終了フラグを制御部27に転送する。
【0109】
≪処理(13)≫
制御部27は、メモリIF25から受信したRead終了フラグをコマンド制御部22に転送する。
【0110】
≪処理(14)≫
コマンド制御部22は、制御部27からRead終了フラグを受信すると、Writeコマンドと、R/Wコマンドに格納されている書き込み論理アドレス(Writeアドレス)とをアドレス変換部24に出力する。
【0111】
なお、Writeコマンドは、メモリIF部25が不揮発性メモリMEMへデータを書き込むために、メモリIF部25から不揮発性メモリMEMに出力されるコマンドである。コマンド制御部22は、R/Wコマンドを受信した場合、Writeコマンドを生成するものとする。
【0112】
≪処理(15)≫
アドレス変換部24は、論理アドレス/物理アドレス変換テーブルに基づいて、コマンド制御部22から受信した書き込み論理アドレス(Writeアドレス)を、書き込み物理アドレスに変換する。そして、アドレス変換部24は、Writeコマンドと、書き込み物理アドレスとをメモリIF部25に出力する。
【0113】
≪処理(16)≫
バッファ23は、コマンド制御部22から受信した書き込みデータWriteDataをメモリIF部25に転送する。
【0114】
≪処理(17)≫
メモリIF部25は、アドレス変換部24から受信したWriteコマンドおよび書き込み物理アドレスと、バッファ23から受信した書き込みデータWriteDataと、を不揮発性メモリMEMに出力する。
【0115】
不揮発性メモリMEMは、メモリIF25から受信したWriteコマンドに従い、書き込み物理アドレスに、書き込みデータWriteDataを書き込む処理を開始する。
【0116】
≪処理(18)≫
不揮発性メモリMEMは、データ書き込み処理が完了すると、Ready信号(不揮発性メモリMEMが「Ready」状態であることを示すステータス信号)をメモリIF部25に出力する。
【0117】
≪処理(19)≫
メモリIF部25は、不揮発性メモリMEMから受信したReady信号を制御部27に転送する。
【0118】
≪処理(20)≫
制御部27は、メモリIF部25から受信したReady信号をホストIF部21に転送する。
【0119】
≪処理(21)≫
ホストIF部21は、制御部27から受信したReady信号をホスト装置1に送信する。
【0120】
以上により、不揮発性記憶装置2では、ホスト装置1からR/Wコマンドを受信した場合に、当該R/Wコマンドにより指示されているデータ読み出し処理およびデータ書き込み処理を実行することができる。
【0121】
図2に、不揮発性記憶システム1000において、R/Wコマンドによる処理が実行される場合のコマンドシーケンス例を示す。
【0122】
図2に示すように、ホスト装置1が不揮発性記憶装置2のメモリコントローラMCに対して、書き込みデータWriteDataとともに、R/Wコマンドを発行すると(シーケンスSH1、SH2)、メモリコントローラMCは、不揮発性メモリMEMに対して、Readコマンドを発行する(シーケンスSS1)。そして、不揮発性メモリMEMのステータスが「Ready」(Read Ready)になると(シーケンスSS2)、Readコマンドで指示した読み出し物理アドレスから読み出されたデータReadDataが、不揮発性メモリMEMからメモリコントローラMCに出力される(シーケンスSS3)。
【0123】
さらに、メモリコントローラMCは、不揮発性メモリMEMに対して、書き込みデータWriteDataとともにWriteコマンドを発行する(シーケンスSS4)。そして、不揮発性メモリMEMは、当該Writeコマンドで指示された書き込み物理アドレスに、書き込みデータWriteDataを書き込む。不揮発性メモリMEMは、データ書き込み中は、ステータス信号を「Busy」(Write Busy)にし、データ書き込み処理が終了すると、ステータス信号を「Ready」(Write Ready)にして、ステータス信号を、メモリコントローラMCに出力する。
【0124】
図2から分かるように、ホスト装置1は、R/Wコマンドを発行するだけで、不揮発性記憶装置2において、データ読み出し処理およびデータ書き込み処理が実行されるので、ホストインターバル(不揮発性記憶装置2に対して、Readコマンドを発行してからWriteコマンドを発行するまでの待ち時間)が発生することはない。
【0125】
なお、上記では、R/Wコマンドに、書き込みデータWriteDataが含まれない場合について説明したが、これに限定されることはない。例えば、
図3に示すように、書き込みデータWriteDataは、R/Wコマンドに含まれるものであってもよい。
【0126】
図3は、R/Wコマンドのコマンドフォーマット(一例)を示す図である。
【0127】
図3に示すように、R/Wコマンドは、コマンド識別子(コマンドID)と、書き込み論理アドレスと、読み出し論理アドレスと、書き込みデータと、を含む。なお、書き込みデータは、オプションであり、R/Wコマンドに含めなくてもよい。R/Wコマンドに書き込みデータを含めない場合、R/Wコマンドとともに、書き込みデータを、ホスト装置1から不揮発性記憶装置2に送信するようにすればよい。
【0128】
以上のように、不揮発性記憶システム1000では、Read/Writeコマンド(R/Wコマンド)を追加定義し、当該Read/Writeコマンド(R/Wコマンド)により、処理を実行することで、不揮発性メモリMEMに対するデータの書き込みと読み出しの同時アクセスを仮想的に実現することができる。
【0129】
ここで、不揮発性記憶システム1000において、全域Verify処理(不揮発性メモリMEMの1つの物理ブロックの全ページに対するVerify処理)を実行する場合について、従来技術と比較しながら、
図4を用いて説明する。
【0130】
図4(a)は、従来技術により、全域Verify処理を実行する場合の処理フローチャートである。
図4(b)は、不揮発性記憶システム1000において、全域Verify処理を実行する場合の処理フローチャートである。
【0131】
図4(a)に示すように、従来技術により、全域Verify処理を実行する場合、まず、ページ番号0x0のページに対して、データを書き込むために、ホスト装置から不揮発性記憶装置に対して、Writeコマンドが発行される(ステップSA1)。そして、その後、ページ番号0x0のページに書き込まれたデータが正しいデータであるか否かを判断するために、ホスト装置は、不揮発性記憶装置に対して、ページ番号0x0のページのデータを読み出すためのReadコマンドを発行する(ステップSA2)。
【0132】
上記処理を、ページ番号1〜Nに対して、実行することで、全域Verify処理が完了する。つまり、従来技術により全域Verify処理を実行するために、ホスト装置が、不揮発性記憶装置に対して発行するコマンドの総数は、「2N+2」となる。
【0133】
不揮発性記憶システム1000による全域Verify処理の場合、
図4(b)に示すように、まず、ページ番号0x0のページに対して、データを書き込むために、ホスト装置から不揮発性記憶装置に対して、Writeコマンドが発行される(ステップSB1)。
【0134】
次に、ホスト装置1は、不揮発性記憶装置2に対して、読み出し論理アドレスを、ページ番号0x0のページの論理アドレスとし、書き込み論理アドレスを、ページ番号0x1のページの論理アドレスとして、R/Wコマンドを発行する(ステップSB2)。
【0135】
不揮発性記憶システム1000では、ステップSB2と同様の処理が、ページ番号をインクリメントしながら、繰り返し実行される。具体的には、この処理は、ホスト装置1が、不揮発性記憶装置2に対して、読み出し論理アドレスを、ページ番号N−1のページの論理アドレスとし、書き込み論理アドレスを、ページ番号Nのページの論理アドレスとして、R/Wコマンドを発行するまで、繰り返し実行される(ステップSB3)。
【0136】
そして、ステップSB3の処理後、ページ番号Nのページに書き込まれたデータが正しいデータであるか否かを判断するために、ホスト装置は、不揮発性記憶装置に対して、ページ番号Nのページのデータを読み出すためのReadコマンドを発行する(ステップSB4)。
【0137】
これにより、不揮発性記憶システム1000での全域Verify処理が完了する。
【0138】
図4(b)から分かるように、不揮発性記憶システム1000での全域Verify処理において、ホスト装置1が不揮発性記憶装置2に対して発行するコマンドの総数は、「N+2」であり、従来技術の場合の発行コマンド総数「2N+2」の約半分である。特に、Nが大きい場合(1つの物理ブロックに含まれるページ数Nが多い場合)において、全域Verify処理を実行する場合、不揮発性記憶システム1000でのコマンド発行数と、従来技術でのコマンド発行数との差が大きくなる。したがって、Nが大きい場合(1つの物理ブロックに含まれるページ数Nが多い場合)、不揮発性記憶システム1000において、全域Verify処理を実行すると、従来技術に比べて、コマンド発行数を大幅に少なくすることができる。その結果、不揮発性記憶システム1000では、従来技術により発生するコマンド発行間隔のホストインターバルを効果的に抑制し、処理時間を大幅に短縮することができる。
【0139】
以上のように、不揮発性記憶システム1000では、Read/Writeコマンド(R/Wコマンド)により、処理を実行することで、不揮発性メモリMEMに対するデータの書き込みと読み出しの同時アクセスを仮想的に実現することができるので、例えば、Verify処理のようにデータ書き込み処理と読み出し処理とが頻繁に繰り返される処理において、ホストインターバルの発生を抑え、高速に処理を実行することができる。
【0140】
[第2実施形態]
次に、第2実施形態について、説明する。
【0141】
<2.1:不揮発性記憶システムの構成>
図5は、第2実施形態に係る不揮発性記憶システム2000の概略構成図である。
【0142】
不揮発性記憶システム2000は、
図5に示すように、ホスト装置1と、不揮発性記憶装置2Aと、備える。ホスト装置1と不揮発性記憶装置2Aとは、例えば、バスで接続されている。
【0143】
不揮発性記憶装置2Aは、
図5に示すように、メモリコントローラMCAと、不揮発性メモリMEMと、を備える。
【0144】
メモリコントローラMCAは、
図5に示すように、第1実施形態のメモリコントローラMCにおいて、コマンド制御部22をコマンド制御部22Aに置換し、制御部27を制御部27Aに置換し、CRC生成部28を追加した構成を有している。
【0145】
それ以外については、本実施形態の不揮発性記憶システム2000は、第1実施形態の不揮発性記憶システム1000と同様である。以下では、本実施形態に特有の部分を中心に説明し、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0146】
コマンド制御部22Aは、第1実施形態のコマンド制御部22の機能に加えて、以下の機能を有する。すなわち、コマンド制御部22Aは、ホストIF部21がホスト装置1から受信した、R/Wコマンドと、ファンクションフラグと、書き込みデータWriteDataと、当該書き込みデータのCRC値と、を入力する。また、コマンド制御部22Aは、ホストIF部21から受信したファンクションフラグと、書き込みデータのCRC値(以下、「CRC(W)」と表記する。)と、を制御部27Aに出力する。
【0147】
制御部27Aは、第1実施形態の制御部27の機能に加えて、以下の機能を有する。すなわち、制御部27Aは、コマンド制御部22Aから出力されるCRC値CRC(W)と、CRC生成部28から出力されるCRC値(読み出しデータから算出されたCRC値)(以下、「CRC(R)」と表記する。)と、を入力する。制御部27Aは、CRC(W)とCRC(R)とを比較し、その比較結果を示す信号をホストIF部21に出力する。
【0148】
CRC生成部28は、誤り訂正処理部26から出力される誤り訂正処理後の読み出しデータReadDataを入力し、入力した読み出しデータReadDataから、CRC(Cyclic Redundancy Check)値を算出する。そして、CRC生成部は、算出したCRC値CRC(R)を制御部27Aに出力する。
【0149】
<2.2:不揮発性記憶装置の動作>
以上のように構成された不揮発性記憶システム2000の動作について、図面を参照しながら、説明する。なお、本実施形態では、不揮発性記憶システム2000が、1個の不揮発性メモリMEMを備え、ホスト装置1から不揮発性記憶装置2Aに対して、R/Wコマンド、ファンクションフラグ、書き込みデータWriteData、および、当該書き込みデータのCRC値(CRC(W))が送信された場合の動作について、説明する。
【0150】
また、ファンクションフラグには、Verify処理機能を指定しているものとする。
【0151】
また、R/Wコマンドは、書き込み論理アドレスと読み出し論理アドレスとを同一アドレスに指定し、(1)データ書き込み処理、(2)データ読み出し処理の順に処理を実行するよう指示するR/Wコマンドであるものとする。
【0152】
以下では、
図5に付した処理番号(
図5中に括弧で付した番号)の順に、説明する。
【0153】
≪処理(1)≫
ホスト装置1は、不揮発性記憶装置2AのホストIF部21に対して、R/Wコマンド、ファンクションフラグ、書き込みデータWriteData、およびCRC値CRC(W)を送信する。
【0154】
≪処理(2)≫
ホストIF部21は、ホスト装置1から受信したR/Wコマンドおよび書き込みデータWriteDataをコマンド制御部22Aに転送(出力)する。
【0155】
≪処理(3)≫
コマンド制御部22Aは、ホストIF部21から受信したR/Wコマンドをデコードし、読み出し論理アドレスを抽出するとともに、メモリIF部25が不揮発性メモリMEMに書き込みデータWriteDataを書き込むために、メモリIF部25から不揮発性メモリMEMに出力されるWriteコマンドと、R/Wコマンドから抽出した書き込み論理アドレスを、アドレス変換部24に転送(出力)する。
【0156】
≪処理(4)≫
コマンド制御部22Aは、ホストIF部21から受信したファンクションフラグを制御部27Aに出力する。制御部27Aは、コマンド制御部22Aから出力されたファンクションフラグから、どのような機能を実施するか判断する。本実施形態では、ファンクションフラグには、Verify処理機能が指定されているので、制御部27Aは、当該ファンクションフラグに基づいて、Verify処理を実行するモードに、不揮発性記憶装置2Aを設定する。
【0157】
≪処理(5)≫
コマンド制御部22Aは、ホストIF部21から受信した書き込みデータWriteDataをバッファ23に格納する。
【0158】
≪処理(6)≫
コマンド制御部22Aは、ホストIF部21から受信したCRC(W)を制御部27Aに出力する。
【0159】
≪処理(7)≫
アドレス変換部24は、論理アドレス/物理アドレス変換テーブルに基づいて、コマンド制御部22Aから受信した書き込み論理アドレスを書き込み物理アドレスに変換する。そして、アドレス変換部24は、コマンド制御部22Aから受信したWriteコマンドと書き込み物理アドレスとをメモリIF部25に出力する。
【0160】
≪処理(8)≫
バッファ23は、コマンド制御部22Aから受信した書き込みデータWriteDataをメモリIF部25に転送する。
【0161】
≪処理(9)≫
メモリIF部25は、アドレス変換部24から受信したWriteコマンドと書き込み物理アドレスとを不揮発性メモリMEMに出力する。これにより、不揮発性メモリMEMでは、メモリIF部25から受信した書き込み物理アドレスに、書き込みデータWriteDataを書き込む処理を実行する。
【0162】
≪処理(10)≫
不揮発性メモリMEMは、データ書き込み処理が完了すると、Ready信号(不揮発性メモリMEMが「Ready」状態であることを示すステータス信号)をメモリIF部25に出力する。
【0163】
≪処理(11)≫
メモリIF部25は、不揮発性メモリMEMから受信したReady信号を制御部27Aに出力する。
【0164】
≪処理(12)≫
制御部27Aは、メモリIF部25から受信したReady信号をコマンド制御部22Aに出力する。
【0165】
≪処理(13)≫
コマンド制御部22Aは、制御部27AからReady信号を受信すると、Readコマンドと、R/Wコマンドから抽出した読み出し論理アドレスとをアドレス変換部24に出力する。
【0166】
≪処理(14)≫
アドレス変換部24は、論理アドレス/物理アドレス変換テーブルに基づいて、コマンド制御部22Aから受信した読み出し論理アドレスを読み出し物理アドレスに変換する。そして、アドレス変換部24は、コマンド制御部22から受信したReadコマンドと読み出し物理アドレス(Readアドレス)とをメモリIF部25に出力する。
【0167】
≪処理(15)≫
メモリIF部25は、アドレス変換部24から受信したReadコマンドと読み出し物理アドレスとを不揮発性メモリMEMに出力する。これにより、不揮発性メモリMEMでは、メモリIF部25から受信した読み出し物理アドレスのデータを読み出す処理を実行する。
【0168】
≪処理(16)≫
不揮発性メモリMEMは、メモリIF部25から受信したReadコマンドに従い、読み出し物理アドレスから読み出したデータReadDataをメモリIF部25に出力する。
【0169】
≪処理(17)≫
メモリIF部25は、不揮発性メモリMEMから受信した読み出しデータReadDataを誤り訂正処理部26に出力する。
【0170】
≪処理(18)≫
誤り訂正処理部26は、メモリIF部25から受信した読み出しデータReadDataに対して誤り訂正処理を実行し、読み出しデータReadDataに誤りがある場合は訂正し、CRC生成部28に出力する。
【0171】
≪処理(19)≫
CRC生成部28は、誤り訂正処理部26から受信した誤り訂正処理後の読み出しデータReadDataから、CRC値(CRC(R))を算出する。そして、算出したCRC値(CRC(R))を制御部27Aに出力する。
【0172】
≪処理(20)≫
制御部27Aは、CRC生成部28から受信したCRC値(CRC(R))と、コマンド制御部22Aから受信したCRC値(CRC(W))とを比較し、その比較結果を示す信号をホストIF部21に出力する。
【0173】
例えば、制御部27Aは、CRC(R)とCRC(W)とが一致する場合、ホスト装置1から送信された書き込みデータのCRC値(CRC(W))と、当該書き込みデータを不揮発性メモリMEMに書き込んだ後読み出したデータから算出したCRC値(CRC(R))とが一致することを示す値「1」にする。
【0174】
一方、CRC(R)とCRC(W)とが一致しない場合、ホスト装置1から送信された書き込みデータのCRC値(CRC(W))と、当該書き込みデータを不揮発性メモリMEMに書き込んだ後読み出したデータから算出したCRC値(CRC(R))とが一致しないことを示す値「0」にする。
【0175】
上記のようにして生成した比較結果を示す信号を、制御部27Aは、ホストIF部21に出力する。
【0176】
≪処理(21)≫
ホストIF部21は、制御部27Aから受信した、CRC(R)とCRC(W)との比較結果を示す信号をホスト装置1に送信する。
【0177】
以上により、不揮発性記憶装置2Aでは、ホスト装置1からR/Wコマンドを受信した場合に、当該R/Wコマンドにより指示されているデータ書き込み処理およびデータ読み出し処理を実行することができ、さらに、ファンクションフラグにより指定された処理(上記の場合は、Verify処理)を、不揮発性記憶装置2A側で実行することができる。
【0178】
図6に、不揮発性記憶システム2000において、上記処理が実行される場合のコマンドシーケンス例を示す。
【0179】
図6に示すように、ホスト装置1が不揮発性記憶装置2AのメモリコントローラMCAに対して、フラグファンクション(FuncFlg)と、書き込みデータWriteDataと、当該書き込みデータのCRC値(CRC(W))とともに、R/Wコマンドを発行すると(シーケンスSHA1)、メモリコントローラMCAは、不揮発性メモリMEMに対して、Writeコマンドを発行し、不揮発性メモリMEMに、書き込みデータWriteDataおよびCRC値(CRC(W))を送信する(シーケンスSSA1)。そして、不揮発性メモリMEMのステータスが「Ready」(Write Ready)になると(シーケンスSSA2)、メモリコントローラMCAは、不揮発性メモリMEMに対して、Readコマンドを発行し、不揮発性メモリMEMが「Ready」(Read Ready)状態となった後(シーケンスSSA4)、不揮発性メモリMEMの読み出し物理アドレスからデータを読み出す(シーケンスSSA5)。
【0180】
さらに、メモリコントローラMCAでは、読み出しデータReadDataから算出したCRC値(CRC(R))と、ホスト装置1から送信された書き込みデータWriteDataのCRC値(CRC(W))とを比較することで、Verify処理が実行される(シーケンスSSA6)。そして、その比較結果(Verify処理の結果)を示す信号が、不揮発性記憶装置2Aからホスト装置1に送信される(シーケンスSSA7)。
【0181】
ホスト装置1は、不揮発性記憶装置2Aから受信した、Verify処理の結果をチェックすることで、Verify処理を行うことができる(シーケンスSHA2)。つまり、ホスト装置1は、不揮発性メモリMEMに書き込んだデータが正しく書き込まれているかを確認することができる。
【0182】
図6から分かるように、ホスト装置1は、R/Wコマンドを発行するだけで、不揮発性記憶装置2Aにおいて、データ書き込み処理およびデータ読み出し処理が実行されるので、ホストインターバル(不揮発性記憶装置2に対して、Writeコマンドを発行してからReadコマンドを発行するまでの待ち時間)が発生することはない。さらに、ホスト装置1は、R/Wコマンドともに、ファンクションフラグで実行したい機能(処理)を指定するだけで、不揮発性記憶装置2Aにおいて、当該機能(処理)を実行させることができる。例えば、ファンクションフラグでVerify処理を指定すると、当該Verify処理は、不揮発性記憶装置2Aで実行され、Verify処理の結果のみが、不揮発性記憶装置2Aからホスト装置1に送信される。そして、ホスト装置1は、当該Verify処理の結果を確認するだけで、Verify処理を実行することができる。
【0183】
なお、上記では、R/Wコマンドに、書き込みデータWriteDataが含まれない場合について説明したが、これに限定されることはない。例えば、
図7に示すように、書き込みデータWriteDataは、R/Wコマンドに含まれるものであってもよい。
【0184】
図7は、R/Wコマンドのコマンドフォーマット(一例)を示す図である。
【0185】
図7に示すように、R/Wコマンドは、コマンド識別子(コマンドID)と、書き込み論理アドレスと、読み出し論理アドレスと、書き込みデータと、ファンクションフラグとを含む。
【0186】
なお、書き込みデータは、オプションであり、R/Wコマンドに含めなくてもよい。R/Wコマンドに書き込みデータを含めない場合、R/Wコマンドとともに、書き込みデータを、ホスト装置1から不揮発性記憶装置2に送信するようにすればよい。
【0187】
また、
図7に示すR/Wコマンドフォーマットにおいて、書き込み論理アドレスと読み出し論理アドレスとが同一である場合、どちらか片方を省略するようにしてもよい。そして、R/Wコマンドフォーマットに含まれる論理アドレスが1つである場合、当該論理アドレスが、書き込み論理アドレスであり、かつ、読み出し論理アドレスであると解釈するようにしてもよい。
【0188】
以上のように、不揮発性記憶システム2000では、Read/Writeコマンド(R/Wコマンド)を追加定義し、当該Read/Writeコマンド(R/Wコマンド)により、処理を実行することで、不揮発性メモリMEMに対するデータの書き込みと読み出しの同時アクセスを仮想的に実現することができ、さらに、ファンクションフラグで指定した処理(機能)を不揮発性記憶装置2Aに実行させることができる。
【0189】
ここで、不揮発性記憶システム2000において、単発Verify処理(不揮発性メモリMEMの1つの物理ブロックの1ページに対するVerify処理)を実行する場合について、従来技術と比較しながら、
図8を用いて説明する。
【0190】
図8(a)は、従来技術により、単発Verify処理を実行する場合の処理フローチャートである。
図8(b)は、不揮発性記憶システム2000において、単発Verify処理を実行する場合の処理フローチャートである。
【0191】
図8(a)に示すように、従来技術により、単発Verify処理を実行する場合、ページ番号kのページに対して、データを書き込むために、ホスト装置から不揮発性記憶装置に対して、Writeコマンドが発行される(ステップSC1)。そして、その後、ページ番号kのページに書き込まれたデータが正しいデータであるか否かを判断するために、ホスト装置は、不揮発性記憶装置に対して、ページ番号kのページのデータを読み出すためのReadコマンドを発行する(ステップSC2)。
【0192】
その後、ホスト装置は、書き込みデータと読み出しデータが一致するか否かを確認する処理(Verify処理)を行う(ステップSC3)。
【0193】
一方、不揮発性記憶システム2000による単発Verify処理の場合、
図4(b)に示すように、処理が実行される。すなわち、不揮発性記憶システム2000では、ホスト装置1から不揮発性記憶装置2Aに対して、読み出し論理アドレスおよび書き込み論理アドレスをページ番号kに対応する論理アドレスとし、さらに、ファンクションフラグで「Verify処理」を指定したR/Wコマンドを、発行する(ステップSD1)。当該R/Wコマンドを受信した不揮発性記憶装置2Aは、ページ番号kに対応する不揮発性メモリMEMの物理アドレスに対して、書き込みデータを書き込み、さらに当該データを読み出す。そして、不揮発性記憶装置2Aでは、書き込みデータのCRC値(CRC(W))と、読み出しデータから算出したCRC値(CRC(R))とを比較し、その比較結果(Verify処理結果)を示す信号を、ホスト装置に送信する。
【0194】
ホスト装置1は、不揮発性記憶装置2Aから受信したVerify処理結果を示す信号をチェックする(ステップSD2)。
【0195】
以上により、不揮発性記憶システム2000では、単発Verify処理を実行することができる。
【0196】
図8から分かるように、単発Verify処理を実行する場合、従来技術では、ホスト装置から不揮発性記憶装置に対して、コマンドを2回発行し、さらに、ホスト装置側でVerify処理を実行する必要がある。それに対して、不揮発性記憶システム2000では、ホスト装置1から不揮発性記憶装置2Aに対して、R/Wコマンドを1回発行するだけでよい。
【0197】
したがって、不揮発性記憶システム2000では、従来技術に比べて、ホスト装置での処理負荷を大幅に低減させることができる。
【0198】
以上のように、不揮発性記憶システム2000では、Read/Writeコマンド(R/Wコマンド)およびファンクションフラグにより、不揮発性記憶装置2A側で、不揮発性メモリMEMに対するデータの書き込みと読み出しの同時アクセスを仮想的に実現するとともに、ファンクションフラグで指定されて処理を実行することができる。したがって、不揮発性記憶システム1000では、例えば、ファンクションフラグによりVerify処理を指定し、不揮発性記憶装置2A側で、データ書き込み処理、読み出し処理、および、Verify処理を実行することで、ホスト装置の処理負荷を大幅に低減させることができるとともに、ホストインターバルの発生を抑え、高速に処理を実行することができる。
【0199】
[第3実施形態]
次に、第3実施形態について、説明する。
【0200】
<3.1:不揮発性記憶システムの構成>
図9は、第2実施形態に係る不揮発性記憶システム3000の概略構成図である。
【0201】
不揮発性記憶システム3000は、
図9に示すように、ホスト装置1と、不揮発性記憶装置2Bと、備える。ホスト装置1と不揮発性記憶装置2Bとは、例えば、バスで接続されている。
【0202】
不揮発性記憶装置2Bは、
図9に示すように、メモリコントローラMCBと、第1不揮発性メモリM1と、第2不揮発性メモリM2と、を備える。つまり、不揮発性記憶装置2Bは、複数個の不揮発性メモリ(
図9では、2個の不揮発性メモリ)を備える。
【0203】
メモリコントローラMCBは、
図9に示すように、第1実施形態のメモリコントローラMCにおいて、コマンド制御部22をコマンド制御部22Bに置換し、制御部27を制御部27Bに置換し、読み出し用バッファ29を追加した構成を有している。
【0204】
それ以外については、本実施形態の不揮発性記憶システム3000は、第1実施形態の不揮発性記憶システム1000と同様である。以下では、本実施形態に特有の部分を中心に説明し、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0205】
コマンド制御部22Bは、第1実施形態のコマンド制御部22において、制御部27からの入力を削除した構成を有している。それ以外については、コマンド制御部22Bは、第1実施形態のコマンド制御部22と同様である。
【0206】
制御部27Bは、第1実施形態の制御部27において、コマンド制御部22への出力を削除した構成を有している。それ以外については、制御部27Bは、第1実施形態の制御部27と同様である。
【0207】
読み出し用バッファ29は、ホストIF部25から出力される読み出しデータを格納するバッファである。読み出し用バッファ29に格納された読み出しデータは、誤り訂正処理部26に出力される。
【0208】
<3.2:不揮発性記憶装置の動作>
以上のように構成された不揮発性記憶システム3000の動作について、図面を参照しながら、説明する。なお、本実施形態では、不揮発性記憶システム3000が、2個の不揮発性メモリ(第1不揮発性メモリM1および第2不揮発性メモリM2)を備え、ホスト装置1から不揮発性記憶装置2Bに対して、R/Wコマンド、および、書き込みデータWriteDataが送信された場合の動作について、説明する。
【0209】
以下では、
図9に付した処理番号(
図9中に括弧で付した番号)の順に、説明する。
【0210】
≪処理(1)≫
ホスト装置1は、不揮発性記憶装置2BのホストIF部21に対して、R/Wコマンド、および、書き込みデータWriteDataを送信する。
【0211】
≪処理(2)≫
ホストIF部21は、ホスト装置1から受信したR/Wコマンドおよび書き込みデータWriteDataをコマンド制御部22Bに転送(出力)する。
【0212】
≪処理(3)≫
コマンド制御部22Bは、ホストIF部21から受信したR/Wコマンドをデコードし、読み出し論理アドレスおよび書き込み論理アドレスを抽出するとともに、メモリIF部25から不揮発性メモリMEMに出力するためのReadコマンドおよびWriteコマンドを生成する。そして、コマンド制御部22Bは、Readコマンド、Writeコマンド、読み出し論理アドレス、および、書き込み論理アドレスをアドレス変換部24に出力する。
【0213】
≪処理(4)≫
コマンド制御部22Bは、ホストIF部21から受信した書き込みデータWriteDataをバッファ23に格納する。
【0214】
≪処理(5)≫
アドレス変換部24は、論理アドレス/物理アドレス変換テーブルに基づいて、コマンド制御部22Bから受信した読み出し論理アドレスを読み出し物理アドレスに変換し、書き込み論理アドレスを書き込み物理アドレスに変換する。そして、アドレス変換部24は、コマンド制御部22Bから受信したReadコマンドと読み出し物理アドレスとをメモリIF部25に出力する。また、アドレス変換部24は、コマンド制御部22Bから受信したWriteコマンドと書き込み物理アドレスとをメモリIF部25に出力する。
【0215】
≪処理(6)≫
バッファ23は、コマンド制御部22Bから受信した書き込みデータWriteDataをメモリIF部25に転送する。
【0216】
≪処理(7)≫
メモリIF部25は、アドレス変換部24から受信した書き込み物理アドレスから、第1不揮発性メモリM1および第2不揮発性メモリM2のいずれの不揮発性メモリにアクセスするかを判断する。ここでは、第1不揮発性メモリM1にアクセスするものとする。
【0217】
メモリIF部25は、アドレス変換部24から受信したWriteコマンドと、書き込み物理アドレスと、バッファ23から取得した書き込みデータWriteDataとを第1不揮発性メモリM1に送信(出力)する。
【0218】
第1不揮発性メモリM1は、メモリIF部25から受信したWriteコマンドに従い、書き込み物理アドレスに、書き込みデータWriteDataを書き込む処理を開始する。
【0219】
≪処理(8)≫
メモリIF部25は、アドレス変換部24から受信した読み出し物理アドレスから、第1不揮発性メモリM1および第2不揮発性メモリM2のいずれの不揮発性メモリにアクセスするかを判断する。ここでは、第2不揮発性メモリM2にアクセスするものとする。
【0220】
メモリIF部25は、アドレス変換部24から受信したReadコマンドと、読み出し物理アドレスとを第2不揮発性メモリM2に送信(出力)する。
【0221】
第2不揮発性メモリM2は、メモリIF部25から受信したReadコマンドに従い、読み出し物理アドレスから、読み出しデータReadDataを読み出す処理を開始する。
【0222】
なお、処理(7)のデータ書き込み処理と、処理(8)のデータ読み出し処理とは、並列に実行されるものとする。また、処理(7)のデータ書き込み処理と、処理(8)のデータ読み出し処理とは、略同時に開始されるものであってもよい。
【0223】
≪処理(9)≫
第2不揮発性メモリM2は、データ読み出し処理が完了して(Busy(Read)状態が終了した後)、データ読み出し処理が実行可能な状態、すなわち、「Ready(Read)」状態であることを示すステータス信号をメモリIF部25に送信する。
【0224】
≪処理(10)≫
第2不揮発性メモリM2は、読み出したデータReadDataをメモリIF部25に出力する。
【0225】
≪処理(11)≫
メモリIF部25は、第2不揮発性メモリM2から読み出したデータReadDataを読み出し用バッファ29に出力する。
【0226】
≪処理(12)≫
読み出し用バッファ29は、メモリIF部25から受信した読み出しデータReadDataを誤り訂正処理部26に出力する。
【0227】
≪処理(13)≫
誤り訂正処理部26は、読み出し用バッファ29から受信した読み出しデータReadDataに対して誤り訂正処理を実行し、読み出しデータReadDataに誤りがある場合は訂正し、ホストIF部21に出力する。
【0228】
≪処理(14)≫
ホストIF部21は、誤り訂正処理部26から受信した誤り訂正処理後の読み出しデータReadDataをホスト装置1に送信する。
【0229】
≪処理(15)≫
第1不揮発性メモリM1は、データ書き込み処理が終了し(「Busy(Write)」状態が終了した後)、データ書き込み処理が実行可能な状態、すなわち、「Write(Read)」状態であることを示すステータス信号をメモリIF部25に送信する。
【0230】
≪処理(16)≫
メモリIF部25は、第1不揮発性メモリM1から受信した「Write(Ready)」状態であることを示すステータス信号を、制御部27Bに送信する。
【0231】
≪処理(17)≫
制御部27Bは、受信した「Write(Ready)」を示すステータス信号を、ホストIF部21に送信する。
【0232】
≪処理(18)≫
ホストIF部21は、受信した「Write(Ready)」を示すステータス信号を、ホスト装置1に送信する。
【0233】
以上により、不揮発性記憶装置2Bでは、ホスト装置1からR/Wコマンドを受信した場合に、当該R/Wコマンドにより指示されているデータ書き込み処理およびデータ読み出し処理を実行することができる。さらに、不揮発性記憶装置2Bでは、複数個の不揮発性メモリを有しているので、データ読み出し処理とデータ書き込み処理とを並列に行うことができる。その結果、不揮発性記憶システム3000では、R/Wコマンドにより、高速処理を実現することができる。
【0234】
図10に、不揮発性記憶システム3000において、上記処理が実行される場合のコマンドシーケンス例を示す。
【0235】
図10に示すように、ホスト装置1が不揮発性記憶装置2BのメモリコントローラMCBに対して、R/Wコマンドと、書き込みデータWriteDataとを発行すると(シーケンスSHB1)、メモリコントローラMCBは、第1不揮発性メモリM1に対するデータ書き込み処理と、第2不揮発性メモリM2に対するデータ読み出し処理とを並列に処理する。
【0236】
具体的には、メモリコントローラMCBは、第1不揮発性メモリM1に対して、Writeコマンドを発行し、第1不揮発性メモリM1に、書き込みデータWriteDataを送信する(シーケンスSSB1)。そして、第1不揮発性メモリM1のステータスが「Ready」(Write Ready)になると再度データ書き込み処理を実行できる状態となる(シーケンスSSB3)。
【0237】
また、メモリコントローラMCBは、第2不揮発性メモリM2に対して、Readコマンドを発行し(シーケンスSSC1)、第2不揮発性メモリM2が「Ready」(Read Ready)状態となった後(シーケンスSSC2)、第2不揮発性メモリM2の読み出し物理アドレスからデータを読み出す(シーケンスSSC3)。
【0238】
図10から分かるように、ホスト装置1は、R/Wコマンドを発行するだけで、不揮発性記憶装置2Bにおいて、データ書き込み処理およびデータ読み出し処理を並列実行することができるので、ホストインターバル(不揮発性記憶装置2Bに対して、Writeコマンドを発行してからReadコマンドを発行するまでの待ち時間)が発生することはない。さらに、不揮発性記憶装置2Bでは、複数個の不揮発性メモリを有しており、並列処理を実行することができるので、高速処理を実現することができる。
【0239】
なお、上記では、R/Wコマンドに、書き込みデータWriteDataが含まれない場合について説明したが、これに限定されることはない。例えば、
図11に示すように、書き込みデータWriteDataは、R/Wコマンドに含まれるものであってもよい。
【0240】
図11は、R/Wコマンドのコマンドフォーマット(一例)を示す図である。
【0241】
図11に示すように、R/Wコマンドは、コマンド識別子(コマンドID)と、書き込み論理アドレスと、読み出し論理アドレスと、書き込みデータと、付加情報部とを備える。
【0242】
付加情報部は、コマンド処理フラグ、コマンドシーケンスフラグ、および、ファンクションフラグの少なくとも1つを含む。なお、付加情報は、オプションであり、R/Wコマンドに含めなくてもよい。
【0243】
コマンド処理フラグは、不揮発性記憶装置が1個の不揮発性メモリのみを有する構成(シングルダイ構成)であるのか、それとも、複数の不揮発性メモリを有する構成(マルチダイ構成)であるのかを示す情報(フラグ)である。なお、コマンド処理フラグは、不揮発性記憶装置が有している不揮発性メモリの個数を指定する情報を含むものであってもよい。また、コマンド処理フラグにより、(1)マルチダイ構成が指定されている場合、Readコマンドによる処理とWriteコマンドによる処理とが、並列に実行され、(2)シングル構成が指定されている場合、Readコマンドによる処理とWriteコマンドによる処理とが、直列に実行されるようにしてもよい。つまり、コマンド処理フラグにより、Readコマンドによる処理とWriteコマンドによる処理とを、並列実行するのか、それとも、直列実行するのかを切り替えるようにしてもよい。
【0244】
コマンドシーケンスフラグは、コマンドシーケンスを指定する情報(フラグ)である。コマンドシーケンスフラグは、例えば、(1)データ読み出し処理の実行を、データ書き込み処理の実行より先にすることを示す情報、(2)データ書き込み処理の実行を、データ読み出し処理の実行より先にすることを示す情報、あるいは、(3)データ書き込み処理とデータ読み出し処理とを並列に実行することを示す情報等を含むフラグである。
【0245】
ファンクションフラグは、不揮発性記憶装置が有する機能(実行する処理)を指定するフラグ(情報)である。ファンクションフラグには、例えば、不揮発性記憶装置でのVerify処理実行機能を示す値を指定する。
【0246】
なお、本実施形態では、コマンド処理フラグに、「2個の不揮発性メモリを有する構成」(マルチダイ構成)であることを示す値を設定したR/Wコマンドを、ホスト装置1から不揮発性記憶装置2Bに送信されるものであってもよい。
【0247】
以上のように、不揮発性記憶システム3000では、Read/Writeコマンド(R/Wコマンド)を追加定義し、当該Read/Writeコマンド(R/Wコマンド)により、処理を実行することで、不揮発性メモリMEMに対するデータの書き込みと読み出しの同時アクセスを仮想的に実現することができる。さらに、不揮発性記憶システム3000では、不揮発性記憶装置2Bが複数個の不揮発性メモリを有しているので、データ読み出し処理とデータ書き込み処理とを並列に行うことができる。その結果、不揮発性記憶システム3000では、R/Wコマンドにより、データ読み出し処理とデータ書き込み処理が完了するまでの時間をさらに短縮することができ、高速データ処理を実現することができる。
【0248】
ここで、不揮発性記憶システム3000において、不揮発性メモリの2つの物理ブロックに対して全域Verify処理(不揮発性メモリの1つの物理ブロックの全ページに対するVerify処理)を実行する場合について、従来技術と比較しながら、
図12を用いて説明する。なお、不揮発性記憶システム3000において、第1不揮発性メモリM1の物理ブロックAと、第2不揮発性メモリM2の物理ブロックBとに対して、全域Verify処理を実行する場合について、説明する。
【0249】
従来技術により、不揮発性メモリの2つの物理ブロックに対して全域Verify処理を実行する場合の処理は、
図4(b)に示したフローチャートの処理が2回実行される。
図4(b)から分かるように、従来技術により、不揮発性メモリの2つの物理ブロックに対して全域Verify処理を実行する場合に必要となるコマンド発行回数は、4N+4回(=(2N+2)×2)となる。なお、1つの物理ブロックのページ数は、N+1であるものとする。
【0250】
図12は、不揮発性記憶システム3000において、全域Verify処理を実行する場合の処理フローチャートである。
(SC1):
不揮発性記憶システム3000による全域Verify処理の場合、
図12に示すように、まず、第1不揮発性メモリM1の物理ブロックAのページ番号0x0のページに対して、データを書き込むために、ホスト装置から不揮発性記憶装置に対して、Writeコマンドが発行される(ステップSC1)。なお、便宜上、物理ブロックAのページ番号xのアドレスを「Ax」と表記し、物理ブロックBのページ番号xのアドレスを「Bx」と表記する。
(SC2):
次に、ホスト装置1は、不揮発性記憶装置2Bに対して、読み出し論理アドレスを、第1不揮発性メモリM1の物理ブロックAのページ番号0x0のページの論理アドレス(A0)とし、書き込み論理アドレスを、第2不揮発性メモリM2の物理ブロックBのページ番号0x0のページの論理アドレス(B0)として、R/Wコマンドを発行する(ステップSC2)。このR/Wコマンドにより、不揮発性記憶装置2Bでは、第1不揮発性メモリM1の物理ブロックAのページ番号0x0(論理アドレスA0に対応する物理アドレス)からデータを読み出す処理と、第2不揮発性メモリM2の物理ブロックBのページ番号0x0(論理アドレスB0に対応する物理アドレス)にデータを書き込む処理と、が並列実行される。
(SC3):
次に、ホスト装置1は、不揮発性記憶装置2Bに対して、読み出し論理アドレスを、第2不揮発性メモリM2の物理ブロックBのページ番号0x0のページの論理アドレス(B0)とし、書き込み論理アドレスを、第1不揮発性メモリM1の物理ブロックAのページ番号0x1のページの論理アドレス(A1)として、R/Wコマンドを発行する(ステップSC3)。このR/Wコマンドにより、不揮発性記憶装置2Bでは、第2不揮発性メモリM2の物理ブロックBのページ番号0x0(論理アドレスB0に対応する物理アドレス)からデータを読み出す処理と、第1不揮発性メモリM1の物理ブロックAのページ番号0x1(論理アドレスA1に対応する物理アドレス)にデータを書き込む処理と、が並列実行される。
(SC4):
ステップSC4では、ホスト装置1は、不揮発性記憶装置2Bに対して、読み出し論理アドレスを「A1」とし、書き込み論理アドレスを「B1」とするR/Wコマンドを送信する。
【0251】
そして、不揮発性記憶装置2Bでは、第1不揮発性メモリM1の物理ブロックAのページ番号1に相当する物理アドレスからデータを読み出す処理と、第2不揮発性メモリM2の物理ブロックBのページ番号1に相当する物理アドレスにデータを書き込む処理と、が並列実行される。
(SC5):
ステップSC5では、ホスト装置1は、不揮発性記憶装置2Bに対して、読み出し論理アドレスを「B1」とし、書き込み論理アドレスを「A2」とするR/Wコマンドを送信する。
【0252】
そして、不揮発性記憶装置2Bでは、第2不揮発性メモリM2の物理ブロックBのページ番号1に相当する物理アドレスからデータを読み出す処理と、第1不揮発性メモリM1の物理ブロックAのページ番号2に相当する物理アドレスにデータを書き込む処理と、が並列実行される。
【0253】
上記同様の処理が、ページ番号を1ずつインクリメントしながら、ページ番号がNになるまで、繰り返される。
(SC6):
ステップSC6では、ホスト装置1は、不揮発性記憶装置2Bに対して、読み出し論理アドレスを「AN」とし、書き込み論理アドレスを「BN」とするR/Wコマンドを送信する。
【0254】
そして、不揮発性記憶装置2Bでは、第1不揮発性メモリM1の物理ブロックAのページ番号Nに相当する物理アドレスからデータを読み出す処理と、第2不揮発性メモリM2の物理ブロックBのページ番号Nに相当する物理アドレスにデータを書き込む処理と、が並列実行される。
(SC7):
ステップSC7では、ホスト装置1は、不揮発性記憶装置2Bに対して、読み出し論理アドレスを「BN」とするReadコマンドを送信する。
【0255】
そして、不揮発性記憶装置2Bでは、第2不揮発性メモリM2の物理ブロックBのページ番号Nに相当する物理アドレスからデータを読み出す処理が実行される。
【0256】
以上の処理により、不揮発性記憶システム3000では、第1不揮発性メモリM1の物理ブロックAおよび第2不揮発性メモリM2の物理ブロックBの全ページに対して、データ書き込み処理およびデータ読み出し処理が実行される。つまり、ホスト装置1では、上記のように、R/Wコマンドを用いて、2つの物理ブロックに対するVerify処理を行うことができる。上記処理の場合、2つの物理ブロックA、Bに対するVerify処理を実行するために必要なコマンド発行回数は、2N+1回となり、従来技術による場合のコマンド発行回数4N+4回よりも大幅に少なくなる。さらに、不揮発性記憶システム3000では、R/Wコマンドを受信した場合に、データ読み出し処理とデータ書き込み処理とを並列実行するため、大幅に処理時間を短縮することができる。
【0257】
以上のように、不揮発性記憶システム3000では、Read/Writeコマンド(R/Wコマンド)により、複数の不揮発性メモリに対してデータ書き込み処理とデータ読み出し処理とを並列実行することができるので、例えば、Verify処理のようにデータ書き込み処理と読み出し処理とが頻繁に繰り返される処理において、ホストインターバルの発生を抑え、高速に処理を実行することができる。
【0258】
[他の実施形態]
上記実施形態の一部または全部を組み合わせて、不揮発性記憶システム、不揮発性記憶装置等を構成するようにしてもよい。
【0259】
また、上記実施形態で説明したコマンドシーケンス形態(データ読み出し処理、データ書き込み処理を実行する順番)を動的に切り替えるようにしてもよい。例えば、(1)データ読み出し処理の実行を、データ書き込み処理の実行よりも先に実行するように指定し、その後、(2)データ書き込み処理の実行を、データ読み出し処理の実行よりも先に実行するように変更するようにしてもよい。
【0260】
なお、コマンドシーケンス形態(データ読み出し処理、データ書き込み処理を実行する順番)は、コマンドシーケンスフラグにより指定してもよいし、不揮発性メモリの所定の領域に記憶されている情報(例えば、フラグ)により指定されるものであってもよい。
【0261】
また、コマンドシーケンス形態における直列処理(不揮発性メモリが1個の構成(シングルダイ構成)の場合の処理)と並列処理(複数個の不揮発性メモリを有する構成(マルチダイ構成)の場合の処理)との指定を、動的に切り替えるようにしてもよい。このコマンドシーケンス形態における直列処理と並列処理との切り替えは、切り替えフラグ(例えば、コマンド処理フラグ)により実行されるものであってもよいし、不揮発性メモリの所定の領域に記憶されている情報(例えば、フラグ)により実行されるものであってもよい。
【0262】
また、R/Wコマンドに所定のフラグを含ませ、当該フラグにより指定された機能を、不揮発性記憶装置に実行させるようにしてもよい。当該フラグは、R/Wコマンドの一部に含まれるものであってもよいし、不揮発性メモリの所定の領域に記憶されるものであってもよい。
【0263】
また、上記実施形態において、フラグとは、任意の形式のデータであり、1ビットのフラグデータに限定されることはなく、例えば、複数ビットからなるデータを含む概念である。
【0264】
また、第3実施形態において、不揮発性記憶装置2Bが2つの不揮発性メモリを有する場合について説明したが、これに限定されることはなく、不揮発性記憶装置2Bは、3個以上の不揮発性メモリを有してもよい。
【0265】
また、上記実施形態において、メモリコントローラMC、MCAに含まれているコマンド制御部22、22A、バッファ23、アドレス変換部24、メモリIF部25、誤り訂正処理部26、制御部27、27A、CRC生成部28、バッファ29、の全部または一部の機能を実現する機能部が、不揮発性メモリMEM(または、第1不揮発性メモリM1、および/または、第2不揮発性メモリM2)に含まれるものであってもよい。
【0266】
上記のような構成とすることで、不揮発性メモリMEM(または、第1不揮発性メモリM1、および/または、第2不揮発性メモリM2)に対して、R/Wコマンドを送信することができるようになり、上記実施形態と同様の処理を、不揮発性メモリMEM(または、第1不揮発性メモリM1、および/または、第2不揮発性メモリM2)側で実現することができる。
【0267】
また、上記実施形態の不揮発性記憶システム、不揮発性記憶装置の一部または全部は、集積回路(例えば、LSI、システムLSI等)として実現されるものであってもよい。
【0268】
上記実施形態の各機能ブロックの処理の一部または全部は、ソフトウェア(プログラム)により実現されるものであってもよい。
【0269】
また、上記実施形態の各処理の一部または全部をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0270】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【0271】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリを挙げることができる。
【0272】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0273】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。