以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明する。特に明示した場合を除き、それらは互いに無関係ではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
実施の形態において各ブロックを構成する回路素子は特に制限されないが、公知のCMOS(相補型MOSトランジスタ)等の集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。また、実施の形態で述べるメモリセルとしては、相変化メモリ、ReRAM(Resistive Randam Access Memory)のような抵抗性記憶素子を用いるものとする。
(実施の形態1)
<情報処理システムの概要>
図1は、本発明の一実施の形態による半導体装置において、それを適用した情報処理システムの概略構成例を示すブロック図である。図1に示す情報処理システムは、情報処理装置(プロセッサ)CPU_CPとメモリモジュール(半導体装置)NVMMD0とを備える。情報処理装置CPU_CPは、特に限定しないがメモリモジュールNVMMD0へ保存されているデータを、最小512バイト単位の論理アドレス(LAD)にて管理するホストコントローラである。情報処理装置CPU_CPは、インターフェース信号HDH_IFを通じ、このメモリモジュールNVMMD0に対してデータの読み出しや書込みを行う。メモリモジュールNVMMD0は、特に限定しないが、例えばSSD(Solid State Drive)等に該当するものである。
情報処理装置CPU_CPとメモリモジュール(半導体装置)NVMMD0を接続する信号方式には、シリアルインターフェース信号方式、パラレルインターフェース信号方式、光インターフェース信号方式などがある。いうまでもなく、全ての方式を利用することができる。情報処理装置CPU_CPとメモリモジュールNVMMD0を動作させるクロック方式には、基準クロック信号REF_CLKを用いるコモンクロック方式およびソースシンクロナスクロック方式や、データ信号にクロック情報を埋め込むエンベデッドクロック方式などがある。いうまでもなく、全てのクロック方式を利用することができる。本実施の形態では、一例としてシリアルインターフェース信号方式ならびにエンベデッドクロック方式を用いるものとし、以下に動作を説明する。
情報処理装置CPU_CPから、クロック情報が埋め込まれ、シリアルデータへ変換されたリードリクエスト(RQ)やライトリクエスト(WQ)などがインターフェース信号HDH_IFを通じてメモリモジュールNVMMD0へ入力される。リードリクエスト(RQ)には論理アドレス(LAD)、データ読み出し命令(RD)、セクタカウント(SEC)などが含まれ、また、ライトリクエスト(WQ)には論理アドレス(LAD)、データ書込み命令(WRT)、セクタカウント(SEC)および書込みデータ(WDATA)などが含まれる。
メモリモジュール(半導体装置)NVMMD0は、不揮発性メモリ装置,NVM10〜NVM17と、ランダムアクセスメモリRAMと、これら不揮発性メモリ装置およびランダムアクセスメモリを制御する制御回路MDLCT0を備える。不揮発性メモリ装置NVM10〜NVM17は、例えば同じ構成および性能を備えている。不揮発性メモリ装置NVM10〜NVM17には、データ、OS、アプリケーションプログラム、SDDコンフィグレーション情報(SDCFG)を格納し、さらに情報処理装置CPU_CPのブートプログラム等が格納されている。ランダムアクセスメモリRAMは、特に限定しないが、例えばDRAM等である。
電源投入直後に、メモリモジュールNVMMD0は、内部の不揮発性メモリ装置NVM10〜NVM17と、ランダムアクセスメモリRAMと、制御回路MDLCT0の初期化の動作(所謂パワーオンリセット)を行う。さらに、メモリモジュールNVMMD0は、情報処理装置CPU_CPからのリセット信号RSTSIGを受けた際にも、内部の不揮発性メモリ装置NVM10〜NVM17と、ランダムアクセスメモリRAMと、制御回路MDLCT0の初期化を行う。
図2は、図1における制御回路の構成例を示すブロック図である。図2に示す制御回路MDLCT0は、インターフェース回路HOST_IFと、バッファBUF0〜BUF3と、アドレスバッファADDBUF、書込み物理アドレステーブルNXPTBL(NXPTBL1、NXPTBL2)と、調停回路ARBと、情報処理回路MNGERと、メモリ制御回路RAMC、NVCT0、NVCT10〜NVCT7と、マップレジスタMAPREGと、レジスタREG1、REG2を備える。メモリ制御回路RAMCは、図1のランダムアクセスメモリRAMを直接制御し、メモリ制御回路NVCT0、NVCT10〜NVCT7は、図1の不揮発性メモリ装置NVM0、NVM10〜NVM17をそれぞれ直接制御する。
バッファBUF0〜BUF3は、不揮発性メモリ装置NVM10〜NVM17の書込みデータや読み出しデータを一時的に蓄える。アドレスバッファADDBUFは情報処理装置(プロセッサ)CPU_CPから制御回路MDLCT0へ入力したアドレスLADを一時的に蓄える。
書込み物理アドレステーブルNXPTBL、詳細は図9A、図9B等で後述するが、次に情報処理装置CPU_CPより論理アドレスを伴う書込み命令を受けた際に、当該論理アドレスに対して割り当てを行う物理アドレスを蓄えたテーブルであり、特に限定しないが、SRAMやレジスタ等によって実現される。マップレジスタMAPREGおよびレジスタREG1、REG2は、詳細を後述するが、メモリ空間の全体的な領域に関する情報を保持するレジスタである。なお、SDDコンフィグレーション情報(SDCFG)やブートプログラムは、メモリモジュールNVMMD0の初期設定の高速化を図るため、例えば、図2の情報処理回路MNGERに直接接続される形で制御回路MDLCT0内に配置することも可能である。
<不揮発性メモリ装置の全体構成および動作>
図3Aは、図1における不揮発性メモリ装置の構成例を示すブロック図であり、図3Bは、図3Aにおけるチェインメモリアレイの構成例を示す回路図である。図3Aに示す不揮発性メモリ装置は、図1の不揮発性メモリ装置NVM10〜NVM17のそれぞれに該当するものであり、ここでは、一例として相変化型の不揮発性メモリ(相変化メモリ)が用いられている。当該不揮発性メモリ装置は、クロック生成回路SYMD、ステータスレジスタSTREG、イレースサイズ指定レジスタNVREG、アドレス・コマンドインターフェース回路ADCMDIF、IOバッファIOBUF、制御回路CTLOG、温度センサTHMO、データ制御回路DATCTL、メモリバンクBK0〜BK3を備える。
各メモリバンクBK0〜BK3は、メモリアレイARYx(x=0〜m)と、各メモリアレイにそれぞれ対応して設けられる読み書き制御ブロックSWBx(x=0〜m)と、これらを制御する各種周辺回路を備える。当該各種周辺回路の中には、ロウアドレスラッチRADLT、カラムアドレスラッチCADLT、ロウデコーダROWDEC、カラムデコーダCOLDEC、チェイン選択アドレスラッチCHLT、チェインデコーダCHDEC、データ選択回路DSW1、データバッファDBUF0,DBUF1が含まれる。
各メモリアレイARYx(x=0〜m)は、複数のワード線WL0〜WLkと複数のビット線BL0_x〜BLi_xの交点に配置される複数のチェインメモリアレイCYと、複数のビット線BL0_x〜BLi_xのいずれかを選択してデータ線DTxに接続するビット線選択回路BSWxを備える。各読み書き制御ブロックSWBx(x=0〜m)は、データ線DTxに接続されるセンスアンプSAxおよびライトドライバWDRxと、書込み動作時に、これらを用いてデータの検証を行う書込みデータ検証回路WVxを備える。
各チェインメモリアレイCYは、図3Bに示すように、複数の相変化メモリセルCL0〜CLnが直列に接続された構成を備え、その一端はダイオードDを介してワード線WLに接続され、他端はチェイン選択トランジスタTchを介してビット線BLに接続される。複数の相変化メモリセルCL0〜CLnは、図示は省略するが、半導体基板に対して高さ方向に順に積層配置され、互いに直列接続される。また、各相変化メモリセルCLは、可変抵抗型の記憶素子Rと、それに並列接続されるメモリセル選択トランジスタTclを備える。記憶素子Rは、例えばカルコゲナイド材料で形成される。
図3Bの例では、2個のチェインメモリアレイCYがダイオードDを共有しており、チェインメモリアレイ選択線SL0,SL1によって各チェインメモリアレイ内のチェイン選択トランジスタTchがそれぞれ制御され、これによっていずれか一方のチェインメモリアレイが選択される。また、メモリセル選択線LY(LY0〜LYn)は、対応する相変化メモリセルのゲート電極に接続され、メモリセル選択線LYによって、相変化メモリセルCL0〜CLn内のメモリセル選択トランジスタTclがそれぞれ制御され、これによって各相変化メモリセルが適宜選択される。なお、チェインメモリアレイ選択線SL0,SL1およびメモリセル選択線LY0〜LYnは、チェイン制御線CHとして、図1のチェイン選択アドレスラッチCHLTおよびチェインデコーダCHDECを介して適宜駆動される。
次に、図3Aの不揮発性メモリ装置の動作について簡単に説明する。図3Aにおいて、まず、制御回路CTLOGは、アドレス・コマンドインターフェース回路ADCMDIFを介して制御信号CTLを受ける。制御信号CTLは、特に限定しないが、例えば、コマンド・ラッチイネーブル信号(CLE)、チップイネーブル信号(CEB)、アドレス・ラッチ信号(ALE)、ライトイネーブル信号(WEB)、リードイネーブル信号(REB)、レディビジー信号(RBB)を含み、これらの組み合わせによって、書込み命令又は読み出し命令が発行される。また、制御回路CTLOGは、制御信号CTLと共に、IOバッファIOBUFを介して入出力信号IOを受ける。入出力信号IOには、アドレス信号が含まれており、制御回路CTLOGは、当該アドレス信号からロウアドレスおよびカラムアドレスを抽出する。制御回路CTLOGは、当該ロウアドレス、カラムアドレス、ならびに予め定められる書込み・読み出し単位等に基づいて、適宜内部アドレスを生成し、ロウアドレスラッチRADLT、カラムアドレスラッチCADLTならびにチェイン選択アドレスラッチCHLTにそれぞれ伝送する。
ロウデコーダROWDECは、ロウアドレスラッチRADLTの出力を受けてワード線WL0〜WLkの選択を行い、カラムデコーダCOLDECは、カラムアドレスラッチCADLTの出力を受けてビット線BL0〜BLiの選択を行う。また、チェインデコーダCHDECは、チェイン選択アドレスラッチCHLTの出力を受けて、チェイン制御線CHの選択を行う。制御信号CTLによって読み出し命令が入力された際、前述したワード線、ビット線およびチェイン制御線の組み合わせによって選択されたチェインメモリアレイCYからビット線選択回路BSW0〜BSWmを介してデータが読み出される。当該読み出されたデータは、センスアンプSA0〜SAmで増幅され、データ選択回路DSW1を介してデータバッファDBUF0(又はDBUF1)に伝送される。そして、データバッファDBUF0(又はDBUF1)上のデータは、データ制御回路DATCTLおよびIOバッファIOBUFを介して入出力信号IOに順次伝送される。
一方、制御信号CTLによって書込み命令が入力された際、入出力信号IOには、前述したアドレス信号に続いてデータ信号が伝送され、当該データ信号は、データ制御回路DATCTLを介してデータバッファDBUF0(又はDBUF1)に入力される。データバッファDBUF0(又はDBUF1)上のデータ信号は、データ選択回路DSW1、ライトドライバWDR0〜WDRmおよびビット線選択回路BSW0〜BSWmを介して、前述したワード線、ビット線およびチェイン制御線の組み合わせによって選択されたチェインメモリアレイCYに書き込まれる。また、この際に、書込みデータ検証回路WV0〜WVmは、書込みを行ったデータをセンスアンプSA0〜SAmを介して適宜読み出しながら書込みレベルが十分なレベルに達したかを検証し、十分なレベルに達するまでライトドライバWDR0〜WDRmを用いて再度の書込み動作を行う。
図4は、図3Bのチェインメモリアレイの動作例を示す説明図である。この図4を用いて、例えば、チェインメモリアレイCY1内の相変化メモリセルCL0における可変抵抗型記憶素子R0を高抵抗や低抵抗にする際の動作について説明する。チェインデコーダCHDECによって、チェインメモリアレイ選択線SL1のみが活性化(SL0=Low、SL1=High)され、チェイン選択トランジスタTch1が導通状態となる。続いて、メモリセル選択線LY0のみが非活性化(LY0=Low、LY1〜LYn=High)され、相変化メモリセルCL0のメモリセル選択トランジスタTcl0はカットオフ状態となり、残りのメモリセルCL1〜CLnのメモリセル選択トランジスタTcl1〜Tclnは導通状態となる。
次に、ワード線WL0がHighとなり、続いてビット線BL0がLowになると、電流I0がワード線WL0から、ダイオードD0、可変抵抗型記憶素子R0、メモリセル選択トランジスタTcl1〜Tclnおよびチェイン選択トランジスタTch1を経由してビット線BL0へ流れる。この電流I0が図30に示したReset電流パルスの形に制御されることで、可変抵抗型記憶素子R0は高抵抗となる。また、この電流I0が図30に示したSet電流パルスの形に制御されることで、可変抵抗型記憶素子R0は低抵抗となる。可変抵抗型記憶素子R0〜Rnの抵抗値の違いによってデータ“1”と“0”が区別される。特に限定しないが、可変抵抗型記憶素子が低抵抗になった場合に、データ“1”が記録され、高抵抗になった場合にデータ“0”が記録されるものとする。
なお、可変抵抗型記憶素子R0に記録されたデータを読み出す場合は、可変抵抗型記憶素子R0の抵抗値が変化しない程度に、データ書込みと同様の経路で電流が印加される。この場合、可変抵抗型記憶素子R0の抵抗値に応じた電圧値がセンスアンプ(この例では図3AのSA0)で検出され、データ“0”および“1”が判定される。
図5A、図5Bおよび図5Cは、図3Bのチェインメモリアレイの別の動作例を示す説明図である。先ず図5Aを用いて、1チェインメモリアレイCY1内の全可変抵抗型記憶素子R0〜Rnを一括で低抵抗にする際の動作を説明する。チェインデコーダCHDECによって、チェインメモリアレイ選択線SL1のみが活性化(SL0=Low、SL1=High)され、チェイン選択トランジスタTch1が導通状態となる。続いて、メモリセル選択線LY0〜LYnが非活性化(LY0〜LYn=Low)され、メモリセルCL0〜CLnのメモリセル選択トランジスタTcl0〜Tclnはカットオフ状態となる。次に、ワード線WL0がHighとなり、続いてビット線BL0がLowになると、電流I1がワード線WL0から、ダイオードD0、可変抵抗型記憶素子R0〜Rnおよびチェイン選択トランジスタTch1を経由してビット線BL0へ流れる。この電流I1が図30に示したSet電流パルスの形に制御されることで、可変抵抗型記憶素子R0〜Rnは一括して低抵抗となる。
次に、図5Bを用いて、1チェインメモリアレイCY1内の全可変抵抗型記憶素子R0〜Rnを一括で低抵抗にする際の動作を説明する。チェインデコーダCHDECによって、チェインメモリアレイ選択線SL1のみが活性化(SL0=Low、SL1=High)され、チェイン選択トランジスタTch1が導通状態となる。続いて、メモリセル選択線LY0〜LYnが活性化(LY0〜LYn=High)され、メモリセルCL0〜CLnのメモリセル選択トランジスタTcl0〜Tclnは導通状態となる。次に、ワード線WL0がHighとなり、続いてビット線BL0がLowになると、電流I2がワード線WL0から、ダイオードD0、メモリセル選択トランジスタTcl0〜Tclnおよびチェイン選択トランジスタTch1を経由してビット線BL0へ流れる。この電流I2によるジュール熱が、可変抵抗型記憶素子R0〜Rnへ伝導し、可変抵抗型記憶素子R0〜Rnは一括して低抵抗となる。この電流I2は、可変抵抗型記憶素子R0〜Rnが一括して低抵抗にすることができる様な値に制御される。
次に、図5Cを用いて、チェインメモリアレイCY0およびCY1内の全可変抵抗型記憶素子R0〜Rnを一括で低抵抗にする際の動作を説明する。チェインデコーダCHDECによって、チェインメモリアレイ選択線SL0および1が活性化(SL0、SL1=High)され、チェインメモリアレイCY0およびCY1双方のチェイン選択トランジスタTch1が導通状態となる。続いて、メモリセル選択線LY0〜LYnが活性化(LY0〜LYn=High)され、チェインメモリアレイCY0およびCY1双方のメモリセルCL0〜CLnのメモリセル選択トランジスタTcl0〜Tclnは導通状態となる。次に、ワード線WL0がHighとなり、続いてビット線BL0がLowになると、電流I3がワード線WL0から、ダイオードD0、チェインメモリアレイCY0およびCY1双方のメモリセル選択トランジスタTcl0〜Tclnおよびチェイン選択トランジスタTch1を経由してビット線BL0へ流れる。この電流I3によるジュール熱が、チェインメモリアレイCY0およびCY1双方の可変抵抗型記憶素子R0〜Rnへ伝導し、可変抵抗型記憶素子R0〜Rnは一括して低抵抗となる。電流I3の値は、チェインメモリアレイCY0およびCY1双方の可変抵抗型記憶素子R0〜Rnを一括して低抵抗にするような値に制御される。
以上説明したように、必要に応じて、同時に複数のチェインメモリアレイ内のメモリセルを低抵抗にすることができ、消去データレートを向上することができる。
<チェインメモリアレイの詳細動作方式>
ここで、本実施の形態の主要な特徴の一つとなるチェインメモリアレイの動作方式について説明する。図14は、図3Aおよび図3Bの不揮発性メモリ装置において、そのチェインメモリアレイへの書込み方式の一例を示す説明図である。本実施の形態による不揮発性メモリ装置は、特に制限されないが2つの動作モード(第1動作モードと第2動作モード)を備えている。第2動作モードは、例えば、ホスト(図1のCPU_CP)側からの1回の書込み命令に応じて、チェインメモリアレイを構成する(n+1)ビットの相変化メモリセルに対して(n+1)ビットの書込みを行う動作モードである。一方、第1動作モードは、jビット(j<(n+1))の書込みを行う動作モードである。不揮発性メモリ装置のアドレス領域は、例えば第1動作モードで書込みを行うことが可能なアドレス領域と、第2動作モードで書込みを行うことが可能なアドレス領域とに分けられる。以下、第2動作モードで書込みを行う場合を例にして、説明する。
すなわち、例えば、ホスト(図1のCPU_CP)側からの1回の書込み命令に応じて、チェインメモリアレイを構成する(n+1)ビットの相変化メモリセルに対して(n+1)ビットの書込み動作について説明する。なお、当該書込み動作に伴うワード線、ビット線、チェイン制御線等の詳細な制御方法は、図4および図5A〜図5Cの場合と同様である。
ここでは、メモリセル選択線LY0を対象とし、チェインメモリアレイCYk000とCYk010に書込み動作が行われる場合を例にして説明する。図14において、チェインメモリアレイCYk000とCYk010には、同一の物理アドレス[1]に割り当てられているものとする。なお、図14には、書込み動作に伴うチェインメモリアレイの変化の様子の一例も示されている。
まず、当該物理アドレス[1]を対象とする書込み命令[1]が入力される。入力された場合、チェインメモリアレイCYk000、CYk001、CYk010、CYk011では、まず、最初にその中の全ての相変化メモリセルを対象として一旦“1”(セット状態)の書込み(初期書込み、ブロック消去)が図5Cで示した書込み動作にて行われる。
その後に、チェインメモリアレイCYk000、CYk001、CYk010、CYk011内の全ての相変化メモリセルを対象として、当該書込み命令[1]に伴う所定のデータが書き込まれる。
この例では、当該書込み命令[1]に伴うデータは、チェインメモリアレイCYk000用の(n+1)ビットに対しては、ビットデータが“0…00”である。また、チェインメモリアレイCYk010用の(n+1)ビットに対しては、書き込まれるビットデータは“0…10”である。ここで、チェインメモリアレイCYk000、CYk010における全相変化メモリセルのデータは、前述した初期書込み(消去)に伴い予め“1”となっている。したがって、当該書込み命令[1]に伴うデータが“1”のビットに対応する相変化メモリセル(ここではCYk010内のLY1に対応する相変化メモリセル)では、特に書込み動作が行われず、それ以外の相変化メモリセルを対象として“0”(リセット状態)が書き込まれる。具体的には、例えば、非活性化するメモリセル選択線をLY0→LY1→…→LYnのように順次シフトさせながら、その都度、ワード線WLkとビット線BL0_0の間と、ワード線WLkとビット線BL0_1の間のそれぞれに図30のReset電流パルスを印加するか否かが選択される。この例では、メモリセル選択線LY1が非活性化された際のワード線WLkとビット線BL0_1の間を除いた場合で、Reset電流パルスが印加されることになる。
その後、再び当該物理アドレス[1]を対象とする書込み命令[2]が入力された場合、書込み命令[1]の場合と同様に、最初に初期書込み(消去)が行われたのち、当該書込み命令[2]に伴うチェインメモリアレイCYk000,CYk010用の各(n+1)ビットデータに基づいて適宜“0”(リセット状態)の書込みが行われる。なお、ここでは、非活性化するメモリセル選択線を順次シフトさせながら“0”(リセット状態)の書込みを行ったが、場合によっては、メモリセル選択線をシフトさせずに一括して書込みを行うことも可能である。すなわち、例えば、メモリセル選択線LY0〜LYnを全て非活性状態とした状態で、ワード線WLkとビット線BL0_0の間にReset電流パルスを印加し、その後、メモリセル選択線LY1を除いたメモリセル選択線LY0〜LYnを、全て非活性状態とした状態で、ワード線WLkとビット線BL0_1の間にReset電流パルスを印加すればよい。
以上、図14で述べた様なメモリアレイの動作方式を用いることで、例えば次のような効果が得られる。
(1)同時に複数のチェインメモリアレイ内のメモリセルを低抵抗にすることができ、消去データレートを向上することができる。
(2)チェインメモリアレイの消去後、データ“0”のみメモリセルへ書き込まれるため書込み速度が向上する。
(3)チェインメモリアレイ内の全てのメモリセルに対して、一旦、セット状態およびリセット状態の中の一方の状態を一括して書き込んだのち(消去ののち)、他方の状態を特定のメモリセルに書き込むような方式を用いることで、安定した書込み動作が実現可能になる。すなわち、チェインメモリアレイ内では、まず、一括して一方の状態を書き込むことでチェインメモリアレイ内の各メモリセルの状態(抵抗値)をほぼ均一に保つことが可能になる。そして、その後に特定のメモリセルに対して他方の状態を書き込む際に、当該書込みに伴う発熱によって当該特定のメモリセルの周辺に配置された各メモリセルは、同様の初期状態から同様の影響を受けるため、結果として、チェインメモリアレイ内における各メモリセル間の抵抗値のばらつき量を低減することができる。これによって、安定した書込み動作が実現可能になる。
特に、図14等に示したチェインメモリアレイは、半導体基板上にメモリセルが積み上げられた積層構造のチェインメモリアレイである。積層構造のチェインメモリアレイにおいては、積層構造を用いない場合と比べて各メモリセル間がより近接配置される可能性が高いため、このような方式によってばらつき量を低減することがより有益となる。
また、ここでは、初期書込み(消去)時にセット状態を用い、その後の特定のメモリセルに対する書込み時にリセット状態を用いている。これによって、より安定した書込み動作が実現可能になる。例えば、相変化メモリセルでは、通常、リセット状態よりもセット状態の方が安定している。また、図30に示したように、セット状態を書込む際のパルス幅は、リセット状態を書き込む際のパルス幅に比べて広いため、セット状態を書き込む際には、その分だけ当該書込み動作に伴う発熱が周辺に広がり易く、周辺の相変化メモリセルの記憶状態に影響を及ぼす可能性が高くなる。これらを鑑みると、本実施の形態の書込み方式のように、特定の相変化メモリセルを対象としてセット状態の書込みが生じないような方式を用いることが有益となる。本実施の形態の書込み方式を用いると、特定の相変化メモリセルにリセット状態を書き込む際に、その周辺の相変化メモリセルは初期書込み(消去)に伴いセット状態で安定しており、更に、リセット状態の書込みに伴うパルス幅が狭いことから、当該書込みに伴う熱の広がりも抑制される。
<電源投入時の初期シーケンス>
図6Aおよび図6Bは、図1の情報処理システムにおいて、電源投入時のそれぞれ異なる初期シーケンスの一例を示す図である。図6Aは、図1のメモリモジュール(半導体装置)NVMMD0内の不揮発性メモリ装置NVM10〜17に格納されているSDDコンフィグレーション情報(SDCFG)を利用した場合における電源投入時の初期シーケンスを示すものである。図6Bは、図1の情報処理装置CPU_CPから送信されたSDDコンフィグレーション情報(SDCFG)を利用した場合における電源投入時の初期シーケンスを示すものである。
まず、図6Aに示す初期シーケンスを説明する。T1の期間(PwOn)で、情報処理装置CPU_CPと、メモリモジュールNVMMD0内の不揮発性メモリ装置NVM10〜NVM17と、ランダムアクセスメモリRAMと、制御回路MDLCT0へ電源投入を行い、T2の期間(RST)でリセットを行う。リセットの方法は、特に限定されないが、例えばそれぞれの内蔵回路で自動的にリセットを行う方法でも、外部にリセット端子(リセット信号RSTSIG)を有し、このリセット信号によってリセット動作を行う方法でもよい。また、例えば情報処理装置CPU_CPからインターフェース信号HDH_IFを通じて、リセット命令を制御回路MDLCT0へ入力し、リセットを行う方法でもよい。
T2のリセット期間(RST)では、情報処理装置CPU_CP、制御回路MDLCT0、不揮発性メモリ装置NVM10〜NVM17、ランダムアクセスメモリRAMの内部状態が初期化される。この際に、制御回路MDLCT0は、ランダムアクセスメモリRAMへ格納されているアドレスマップ範囲(ADMAP)および各種テーブルを初期化する。各種テーブルの中には、アドレス変換テーブル(LPTBL)、物理セグメントテーブル(PSEGTBL1,PSEGTBL2)、物理アドレステーブル(PADTBL)、および書込み物理アドレステーブル(NXPADTBL)が含まれる。
なお、当該アドレスマップ範囲(ADMAP)および各種テーブルは、詳細に関しては後述するが、簡単に説明すると次のようなものである。アドレスマップ範囲(ADMAP)は、前述した第1動作モードで使用されるアドレス領域と第2動作モードで使用されるアドレス領域の区画割りを示すものである。アドレス変換テーブル(LPTBL)は、現在の論理アドレスと物理アドレスの対応関係を示すものである。物理セグメントテーブル(PSEGTBL1,PSEGTBL2)は、各物理アドレスでの消去回数等をセグメント単位で管理するものであり、ウエアレベリング等で使用されるものである。物理アドレステーブル(PADTBL)は、現在の各物理アドレスの状態を詳細に管理するものである。書込み物理アドレステーブル(NXPADTBL)は、ウエアレベリングに基づいて、論理アドレスに対して次に割り当てるべき物理アドレスを定めたものである。ここで、当該書込み物理アドレステーブル(NXPADTBL)は、書込み速度の高速化を図るため、その情報の一部又は全てが図2に示した書込み物理アドレステーブルNXPTBL1,NXPTBL2にコピーされている。
T2の期間が終了した後のT3の期間(MAP)では、制御回路MDLCT0は、不揮発性メモリNVM10〜17へ格納されているSDDコンフィグレーション情報(SDCFG)を読み出し、図2のマップレジスタMAPREGへ転送する。次に、マップレジスタMAPREG内のSSDコンフィグレーション情報(SDCFG)を読み出し、このSSDコンフィグレーション情報(SDCFG)を利用して、前述したアドレスマップ範囲(ADMAP)を生成し、ランダムアクセスメモリRAMへ格納する。
さらに、制御回路MDLCT0は、マップレジスタMAPREG内のSSDコンフィグレーション情報(SDCFG)の中で2個の論理アドレス領域(LRNG1とLRNG2)が設定されて、これに応じた書込み物理アドレステーブル(NXPADTBL)を構築する。具体的には、例えば書込み物理アドレステーブル(NXPADTBL)内を、論理アドレス領域(LRNG1)用の書込み物理アドレステーブル(NXPADTBL1)と、論理アドレス領域(LRNG2)用の書込み物理アドレステーブル(NXPADTBL2)とに切り分ける。例えば、論理アドレス領域(LRNG1)は前述した第1動作モード用の領域に対応し、論理アドレス領域(LRNG2)は前述した第2動作モード用の領域に対応する。
特に限定しないが、書込み物理アドレステーブル(NXPADTBL)が0エントリー目から(N−1)エントリー目までのN個分のエントリーで構成されている場合、0エントリー目から(N/2−1)エントリー目までのN/2個分を書込み物理アドレステーブルNXPADTBL1とすることができる。そして、残りのN/2エントリー目からNエントリー目までの、N/2個分を書込み物理アドレステーブル(NXPADTBL2)とすることもできる。
T3の期間が終了した後のT4の期間(SetUp)では、情報処理装置CPU_CPは、メモリモジュールNVMMD0内の不揮発性メモリ装置NVM0へ格納されているブートプログラムを読み出し、情報処理装置CPU_CPを立ち上げる。T4の期間が終了した後のT5の期間(Idle)以降では、メモリモジュールNVMMD0はアイドル状態となり、情報処理装置CPU_CPからのリクエストを待つ状態となる。
次に、図6Bに示す初期シーケンスを説明する。T11の期間(PwOn)と、T21の期間(RST)では、それぞれ、図6AのT1の期間及びT2の期間と同様の動作を行う。T21の期間が終了した後のT31の期間(H2D)では、情報処理装置CPU_CPは、メモリモジュールNVMMD0へSSDコンフィグレーション情報(SDCFG)を送信し、これを受けた制御回路MDLCT0は、このSSDコンフィグレーション情報(SDCFG)を不揮発性メモリ装置NVM0に格納する。T31の期間が終了した後のT41の期間(MAP)、T51の期間(SetUp)、T61の期間(Idle)では、それぞれ、図6AのT3、T4、T5の期間と同様の動作を行う。
このような初期シーケンスにおいて、図6Aに示したように、SDDコンフィグレーション情報(SDCFG)がメモリモジュールNVMMD0(不揮発性メモリ装置NVM10〜17)へ予め格納されていれば、高速に電源投入時の初期シーケンスを実行することができる。一方、図6Bに示したように、SDDコンフィグレーション情報(SDCFG)を情報処理装置CPU_CPからメモリモジュールNVMMD0へ伝送する場合には、情報処理システムの動作目的等に応じて、適宜、メモリモジュールNVMMD0の構成(使い方)をカスタマイズすることができる。
<物理アドレステーブルの詳細>
図7は、図1のランダムアクセスメモリに格納される物理アドレステーブルの構成例を示す図である。物理アドレステーブルPADTBLは、物理アドレスPAD(PAD[31:0])と、この各物理アドレスPADに対応した有効フラグPVLD、消去回数PERC、レイヤモード番号LYMおよびレイヤ番号LYCから構成され、図1のランダムアクセスメモリRAMに格納されている。有効フラグPVLD値が1の場合は、対応する物理アドレスPADが有効であることを示し、0の場合は無効であることを示す。例えば、論理アドレスに割り当てられる物理アドレスが書込み物理アドレステーブル(NXPADTBL)に基づいて変更された際に、変更後に割り当てられる物理アドレスPADの有効フラグPVLD値が1となり、変更前に割り当てられていた物理アドレスPADの有効フラグPVLD値が0となる。
消去回数PERCは、前述した初期書込み(消去)が行われた回数を表す。ここで、例えば、有効フラグPVLD値が0であり、初期書込み(消去)が行われた回数が少ない物理アドレスPADを優先的に論理アドレスに割り当てれば、消去回数PERCの値を平準化(ウエアレベリング)することができる。また、図2の情報処理回路MNGERは、図7の例では、物理アドレスPADが“00000000”〜“027FFFFF”までを第1物理アドレス領域PRNG1として、物理アドレスPADが“02800000”〜“07FFFFFF”までを第2物理アドレス領域PRNG2として認識し、物理アドレステーブルPADTBLを管理する。また、特に限定しないが、物理アドレスPAD(PAD[31:0])は、物理セグメントアドレスSGAD(PAD[31:16])と、セグメント別の物理オフセットアドレスPPAD(PAD[15:0])とから構成される。
また、レイヤモード番号LYMが“0”の場合は、チェインメモリアレイCY内の全相変化メモリセルCL0〜CLnに書込みが行われることを示す(すなわち前述した第2動作モードであることを示す)。また、レイヤモード番号LYMが“1”の場合は、チェインメモリアレイCY内の1個の相変化メモリセルに書込みが行われることを示す(すなわち前述した第1動作モードであることを示す)。
また、レイヤ番号LYCの値xは、図4等で示すチェインメモリアレイCY内のメモリセル選択線LYxに対応している。例えば、レイヤ番号LYCが“1”の場合、物理アドレスPADに対応するデータが、図4等で示すチェインメモリアレイCY内のメモリセル選択線LY1に選択された相変化メモリセルCL1に保持されており、有効であることを示す。
<物理セグメントテーブルの詳細>
図8Aおよび図8Bは、図1のランダムアクセスメモリに格納される物理セグメントテーブルの構成例を示す図である。図8Aは無効物理アドレスに関する物理セグメントテーブルPSEGTBL1を示し、図8Bは有効物理アドレスに関する物理セグメントテーブルPSEGTBL2を示している。特に限定しないが、物理アドレスPAD(PAD[31:0])の上位PAD[31:16]は、物理セグメントアドレスSGADを示す。また、特に限定しないが、1つの物理アドレスのメインデータサイズは512バイトで、1セグメントのメインデータサイズは65536個の物理アドレスが集まって32Mバイトとなっている。
まず、図8Aを説明する。物理セグメントテーブルPSEGTBL1は、物理セグメントアドレスSGAD(PAD[31:16])毎に、無効物理アドレス総数TNIPAと、最大消去回数MXERCおよびそれに対応する無効物理オフセットアドレスMXIPADと、最小消去回数MNERCおよびそれに対応する無効物理オフセットアドレスMNIPADとを含んでいる。無効物理アドレス総数TNIPAは、対応する物理セグメントアドレスSGAD内で無効状態となっている物理アドレスの総数であり、最大消去回数MXERCおよびその無効物理オフセットアドレスMXIPADと、最小消去回数MNERCおよびその無効物理オフセットアドレスMNIPADは、当該無効状態となっている物理アドレスの中から抽出される。そして、当該物理セグメントテーブルPSEGTBL1は、図1のランダムアクセスメモリRAMに格納される。
次に、図8Bを説明する。物理セグメントテーブルPSEGTBL2は、物理セグメントアドレスSGAD(PAD[31:16])毎に、有効物理アドレス総数TNVPAと、最大消去回数MXERCおよびそれに対応する有効物理オフセットアドレスMXVPADと、最小消去回数MNERCおよびそれに対応する有効物理オフセットアドレスMNVPADとを含んでいる。有効物理アドレス総数TNVPAは、対応する物理セグメントアドレスSGAD内で有効状態となっている物理アドレスの総数であり、最大消去回数MXERCおよびその有効物理オフセットアドレスMXVPADと、最小消去回数MNERCおよびその有効物理オフセットアドレスMNVPADは、当該有効状態となっている物理アドレスの中から抽出される。そして、当該物理セグメントテーブルPSEGTBL2は、図1のランダムアクセスメモリRAMに格納される。当該物理セグメントテーブルPSEGTBL1、PSEGTBL2は、後述するダイナックウエアレベリングやスタティックウエアレベリングを行う際に使用される。
<書込み物理アドレステーブルの詳細>
図9Aおよび図9Bは、図2の制御回路や図1のランダムアクセスメモリに格納される書込み物理アドレステーブルの構成例を示す図である。図9Aには、装置使用開始時の初期状態における書込み物理アドレステーブルNXPADTBLの状態が示され、図9Bには、内容が適宜更新された後の書込み物理アドレステーブルNXPADTBLの状態が示される。書込み物理アドレステーブルNXPADTBLは、ホスト(図1のCPU_CP)側からの論理アドレスを伴う書込み命令を受けて不揮発性メモリ装置NVM10〜NVM17の物理アドレスにデータを書き込む際に、当該論理アドレスに対してどの物理アドレスを優先的に割り当てるかを決めるテーブルである。
当該書込み物理アドレステーブルNXPADTBLは、ここでは、複数(N)個の物理アドレスを登録できる構成となっている。ここで、当該書込み物理アドレステーブルNXPADTBL(NXPADTBL1、NXPADTBL2)は、実際に書込み対象となる物理アドレスを定めるものであり、論理アドレスを受けてから当該テーブルを用いて物理アドレスを決定するまでの時間は、書込み速度に影響を及ぼすことになる。そこで、当該書込み物理アドレステーブルNXPADTBL(NXPADTBL1、NXPADTBL2)の情報は、図2の制御回路MDLCT0内の書込み物理アドレステーブルNXPTBL1、NXPTBL2において保持され、そのバックアップとして図1のランダムアクセスメモリRAM内で保持される。
書込み物理アドレステーブルNXPADTBLは、エントリー番号ENUMと、書込み物理アドレスNXPADと、この書込み物理アドレスNXPADに対応する有効フラグNXPVLD、消去回数NXPERC、レイヤモード番号NXLYM、および書込みレイヤ番号NXLYCから構成される。図2の制御回路MDLCT0は、SSDコンフィグレーション情報(SDCFG)の中で2個の論理アドレス領域(LRNG1とLRNG2)が定められている場合、これに対応して書込み物理アドレステーブルNXPADTBLの中も2個に分割する。ここでは、エントリー番号0から(N/2−1)のN/2個分が書込み物理アドレステーブルNXPADTBL1として管理され、エントリー番号(N/2)から(N−1)までの残りのN/2個分が書込み物理アドレステーブルNXPADTBL2として管理される。そして、論理アドレス領域(LRNG1)への書込み要求に対しては、書込み物理アドレステーブルNXPADTBL1が利用され、論理アドレス領域(LRNG2)への書込み要求に対しては、書込み物理アドレステーブルNXPADTBL2が利用される。
エントリー番号ENUMは、複数(N)組の書込み物理アドレスNXPADにおけるN値(0番〜(N−1)番)を示し、このN値は書込み優先度(登録数)を示す。論理アドレス領域(LRNG1)への書込み要求に対しては、書込み物理アドレステーブルNXPADTBL1の中のN値が小さい順から優先して使用され、論理アドレス領域(LRNG2)への書込み要求に対しては書込み物理アドレステーブルNXPADTBL2の中のN値が小さい順から優先して使用される。また、有効フラグNXPVLDの値が0の場合は、対象となる物理アドレスは無効であることを意味し、1の場合は対象となる物理アドレスは有効であることを意味する。例えば、エントリー番号ENUMの0番が使用された場合、当該0番の有効フラグNXPVLDの値が1となるため、次に当該テーブルが参照される際にエントリー番号ENUMの0番は使用済みであることが判別でき、次は1番を使用すればよいことが分かる。
ここで、図9Aにおいて、N=32の場合を例として、書込み物理アドレステーブルNXPADTBLの初期設定(例えば図6AのT1からT3)について説明する。
まず、論理アドレス領域(LRNG1)に対応して物理アドレス領域(PRNG1)が設定され、当該物理アドレス領域(PRNG1)内の“00000000”番地から“0000000F”番地までの連続した書込み物理アドレスNXPADが、エントリー番号ENUM=0番から((32/2)−1)番までにそれぞれ登録される。また、レイヤモード番号NXLYMは“1”に設定され、書込みレイヤ番号NXLYCは“0”に設定される。レイヤモード番号NXLYMおよび書込みレイヤ番号NXLYCは、図7にて説明したレイヤモード番号LYMおよびレイヤ番号LYCと同様で、第1動作モードであり、使用するメモリセル選択線はLY0であることを意味する。同様に、論理アドレス領域(LRNG2)に対応して物理アドレス領域(PRNG2)が設定され、当該物理アドレス領域(PRNG2)内の“02800000”番地から“0280000F”番地までの連続した書込み物理アドレスNXPADが、エントリー番号ENUM=(32/2)番から(32−1)番までにそれぞれ登録される。また、レイヤモード番号NXLYMは“0”に設定され、書込みレイヤ番号NXLYCは“0”に設定される。これは、図7にて説明したレイヤモード番号LYMおよびレイヤ番号LYCと同様で、第2動作モードであることを意味する。そして、これらの書込み物理アドレスNXPADに対応する有効フラグNXPVLD及び消去回数NXPERCはすべて0に設定される。
次に、この図9Aに示す状態で、情報処理装置CPU_CPからインターフェース信号HDH_IFを通じ、メモリモジュール(半導体装置)NVMMD0の論理アドレス領域(LRNG1)へ、セクタカウント(SEC)値が1(512バイト)のライトリクエスト(WQ)が(N/2)回入力された場合を想定する。この場合、それぞれのライトリクエスト(WQ)に含まれるデータは、図9Aに基づいて、不揮発性メモリ装置内の物理アドレスPAD(NXPAD)の“00000000”番地から“000000F”番地までの連続した番地に対応する箇所に書き込まれる。
さらに、情報処理装置CPU_CPからインターフェース信号HDH_IFを通じ、メモリモジュールNVMMD0の論理アドレス領域(LRNG2)へ、セクタカウント(SEC)値が1(512バイト)のライトリクエスト(WQ)が(N/2)回入力された場合を想定する。この場合、それぞれのライトリクエスト(WQ)に含まれるデータは、図9Aに基づいて、不揮発性メモリ装置内の物理アドレスPAD(NXPAD)の“02800000”番地から“0280000F”番地までの連続した番地に対応する箇所に書き込まれる。
また、別の動作例を挙げれば次のようになる。情報処理装置CPU_CPからインターフェース信号HDH_IFを通じ、メモリモジュールNVMMD0の論理アドレス領域(LRNG1)へ、セクタカウント(SEC)値が16(8Kバイト)のライトリクエスト(WQ)が1回入力された場合を想定する。この場合、このライトリクエスト(WQ)に含まれるデータは、512バイト毎の16個の物理アドレスPADへ分解され、物理アドレスPADの“00000000”番地から“0000000F”番地までの連続した番地にて、不揮発性メモリ装置へ書き込まれる。
また、報処理装置CPU_CPからインターフェース信号HDH_IFを通じて、メモリモジュールNVMMD0の論理アドレス領域(LRNG2)へ、セクタカウント(SEC)値が16(8Kバイト)のライトリクエスト(WQ)が1回入力された場合を想定する。この場合、このライトリクエスト(WQ)に含まれるデータは、512バイト毎の16個の物理アドレスPADへ分解され、物理アドレスPADの“02800000”番地から“0280000F”番地までの、連続した番地にて、不揮発性メモリ装置へ書き込まれる。
また、このような書込み動作の進行と共に、書込み物理アドレステーブルNXPADTBLは適宜更新され、その結果、図9Bに示すように、書込み物理アドレスNXPAD、消去回数NXPERC、書込みレイヤ番号NXLYC等の値は適宜変更される。この際に、書込み物理アドレステーブルNXPADTBL1内の書込みレイヤ番号NXLYCの値は、図14で述べた第1動作モードであるため、メモリセル選択線LYが順次シフトするので、これに応じて変更される。一方、書込み物理アドレステーブルNXPADTBL2内の書込みレイヤ番号NXLYCの値は、図14で述べた第2動作モードであるため、変更されない。なお、当該書込み物理アドレステーブルNXPADTBLの更新は、例えば、実際にメモリアレイ内の相変化メモリセルに書込みを行っている期間を利用して行うことが可能である。
<アドレス変換テーブルおよび不揮発性メモリ装置の初期設定>
図10Aは、図1のランダムアクセスメモリに格納されるアドレス変換テーブルの構成例およびその初期設定後の状態例を示す図であり、図10Bは、図1の不揮発性メモリ装置における初期設定後の状態例を示す図である。当該初期設定は、例えば、図6AのT1(電源投入直後)の期間で制御回路MDLCT0によって行われる。
図10Aに示すアドレス変換テーブルLPTBLは、全ての論理アドレスLADを対象として、論理アドレスLAD毎に、現在割り当てている物理アドレスPADと、その物理アドレスの有効フラグCPVLDと、その物理アドレスのレイヤ番号LYCとを管理する。初期設定後には、全論理アドレスLADに対する全物理アドレスPADは0に設定され、有効フラグCPVLDは0(無効)に設定され、レイヤ番号LYCは“0”に設定される。また、図10Bに示すように、不揮発性メモリ装置NVM10〜NVM17では、各物理アドレスPADに格納されるデータDATAは0に設定され、各物理アドレスPADに対応する論理アドレスLADおよびデータ有効フラグDVFも0に設定される。また、各物理アドレスPADに対応するレイヤ番号LYCは“0”に設定される。なお、論理アドレスLAD、データ有効フラグDVF、およびレイヤ番号LYCは、例えば不揮発性メモリ装置内に予め設けられた冗長領域を用いて記憶される。
<SSDコンフィグレーション情報の詳細>
図11A、図11Bおよび図11Cは、図1における不揮発性メモリ装置NVM10〜NVM17へ格納されるSSDコンフィグレーション情報(SDCFG)のそれぞれ異なる一例を示す図である。各図において、LRNGは論理アドレス領域であり、セクタ単位(512バイト)の論理アドレスLADでの範囲を示す。CAPは論理アドレス領域LRNGにて定められた範囲の論理データの容量値を示す。一例として、論理アドレス領域LRNG1は、16進数で“0000_0000”〜“007F_FFFF”の論理アドレスLAD空間を占め、4Gバイトの容量を持つ。また、論理アドレス領域LRNG2は、16進数で“0080_0000”〜“037F_FFFF”の論理アドレス空間を占め、32Gバイトの大きさを持つ。
また、各図において、CHNCELLは、例えば図3B等に示したチェインメモリアレイCY内の全相変化メモリセルCL0〜CLnの内、データの書込み対象となるメモリセルの数を示す。例えば、図11Aおよび図11Bに示すように、CHNCELLが“1_8”であれば、チェインメモリアレイCY内の「8」個のメモリセルの中の「1」個に対して書込みを行うことを示す。CHNCELLが“8_8”であれば、チェインメモリアレイCY内の「8」個のメモリセルの中の「8」個に書込みを行うことを示す。また、例えば、図11Cに示すように、CHNCELLが“2_8”であれば、チェインメモリアレイCY内の「8」個のメモリセルの中の「2」個に書込みを行うことを示す。
また、各図において、NVMMODEが“0”の場合は、不揮発性メモリ装置NVMへデータを書き込む際に、最小消去データサイズと最小プログラムデータサイズを等しいサイズにして、書込み動作を行えることを示し、“1”の場合は、最小消去データサイズと最小プログラムデータサイズが異なることを前提とした書込み動作を行えることを示す。各図において、ERSSIZEは、最小消去データサイズ[バイト]を示し、PRGSIZEは最小プログラムデータサイズ[バイト]を示す。この実施の形態においては、最小消去データサイズおよび最小プログラムデータサイズのそれぞれは、バイト単位で表される。
図11Aに示すように、NVMMODEを“0”とし、最小消去データサイズ(ERSSIZE)と最小プログラムデータサイズ(PRGSIZE)を共に512バイトのように等しいサイズにすると、いわゆるガーベージコレクション動作が不要となり高速に書込み動作を行うことができる。
また、図11BのLRNG2に示すように、NVMMODEを“1”とし、NAND型フラッシュメモリの仕様にあわせて、ブロック消去サイズを512キロバイト、ページサイズを4キロバイトへ設定することで、従来型のNAND型フラッシュメモリへの書込み動作にも対応できる。さらに、図11CのLRNG2に示すように、NVMMODEを“1”とし、別のNAND型フラッシュメモリの仕様にあわせて、ブロック消去サイズを1メガバイト、ページサイズを8キロバイトへ設定することも可能である。
このように、SSDコンフィグレーション情報により、利用する不揮発性メモリ装置の仕様を変更し、種々の仕様に対して柔軟に対応できる。さらに、ブロック消去サイズを増加することによって、消去領域のXおよびY方向に配置するダミーチェインメモリアレイDCY(後述する)の数を削減することができるため、大容量化を実現することができる。
図11A、図11Bおよび図11Cにおいて、XYDMCは、ERSSIZEによって指定される消去データサイズを持つところの消去領域を含む書込み領域の外側あるいは内側のXおよびY方向に配置するダミーチェインメモリアレイDCYの数を示す。ここで、書込み領域は、複数のチェインメモリアレイCYが物理的に集まって形成されている領域である。ダミーチェインメモリアレイDCYを指定するダミーチェインメモリアレイ指定情報XYDMCは、3種類の情報を有する。すなわち、XYDMCの左側(同図において左側)の値が“1”の場合は、書込み領域は消去領域と同一で、複数のチェインメモリアレイCYが物理的に集まって形成されている領域であり、ダミーチェインメモリアレイDCYを書込み領域の外側のXおよびY方向に配置することを示し、左側の値が“0”の場合は、書込み領域はからダミーチェインメモリアレイDCYを除いた領域が消去領域となり、ダミーチェインメモリアレイDCYは書込み領域の内側のXおよびY方向に配置することを示す。また、この消去領域は複数のチェインメモリアレイCYが物理的に集まって形成されている領域である。
ダミーチェインメモリアレイ指定情報XYDMCの真ん中(同図において真ん中)の値は、書込み領域のX方向に配置するダミーチェインメモリアレイDCYの数を示す。また、ダミーチェインメモリアレイ指定情報XYDMCの右側(同図において右側)の値は、書込み領域のY方向に配置するダミーチェインメモリアレイDCYの数を示す。
ダミーチェインメモリアレイ指定情報XYDMCについて、例示すると、次の様になる。すなわち、ダミーチェインメモリアレイ指定情報XYDMCが”1_1_1”の場合、書込み領域(=消去領域)の外側のXおよびY方向に、1つ分のダミーチェインメモリアレイDCYを配置することを示す。ダミーチェインメモリアレイ指定情報XYDMCが”0_1_1”の場合、書込み領域の内側のXおよびY方向に、1つ分のダミーチェインメモリアレイDCYを配置することを示す。ダミーチェインメモリアレイ指定情報XYDMCが”1_2_2”の場合、書込み領域の外側のXおよびY方向に、2つ分のダミーチェインメモリアレイDCYを配置することを示す。また、ダミーチェインメモリアレイ指定情報XYDMCが”0_2_2”の場合、書込み領域の内側のXおよびY方向に、2つ分のダミーチェインメモリアレイDCYを配置することを示す。
後で説明するが、図24、図31、図32Aおよび図32Bには、図11Aにおいて、ダミーチェインメモリアレイ指定情報XYDMCが”1_1_1”の場合の、不揮発性メモリ装置内の一つのメモリアレイARYのダミーチェインメモリアレイDCYと、チェインメモリアレイCYの配置の一例が示されている。これらの図において、チェインメモリアレイCYは、白抜きの○印で示され、ダミーチェインメモリアレイDCYは、ドットで埋められた○印で示されている。以下の図面においても、チェインメモリアレイとダミーチェインメモリアレイは同様な表示方法をする。
ダミーチェインメモリアレイ指定情報XYDMCが”1_1_1”であるため、図24、図31、図32Aおよび図32Bにおいては、書込み領域(=消去領域)の外側に、X方向およびY方向に1つのダミーチェインメモリアレイが配置されている。また、この場合、書込み領域(=消去領域)内の全チェインメモリアレイCYに含まれる全メモリセルのデータは“1”(Set状態)となる。すなわち、一括消去され、次に、物理アドレスPAD毎に、“0”のデータのみ(Reset状態)が書き込まれる。
例えば、図24を例にして述べると、消去領域は、物理的に互いに隣接した複数のチェインメモリアレイCY(白抜き○)により構成され、消去領域の外側であって、消去領域に隣接して、X方向およびY方向のそれぞれに、1つのダミーチェインメモリアレイDCY(ドット埋め○)が配置される。平面視では、複数のチェインメモリアレイCYにより構成されたマトリクス(書込み領域=消去領域)と、その外側であって、マトリクスに隣接し、マトリクスのX方向に延在した1行のダミーチェインメモリアレイ行と、Y方向に延在した1列のダミーチェインメモリアレイ列として認識される。この様に認識した場合、ダミーチェインメモリアレイ行およびダミーチェインメモリアレイ列のそれぞれが、複数のダミーチェインメモリアレイDCYを有することになる。
また、後で説明するが、図26Bには、図11AのXYDMCが”0_1_1”の場合の、不揮発性メモリ装置内の一つのメモリアレイARYのダミーチェインメモリアレイDCY(ドット埋め○)と、チェインメモリアレイCY(白抜き○)の配置の一例が示されている。この場合には、書込み領域は、ダミーチェインメモリアレイDCYと、チェインメモリアレイCYが物理的に集まって形成する消去領域により構成され、この書込み領域の内側に、ダミーチェインメモリアレイDCYが配置される。
平面視では、書込み領域の内側に配置されたところの、1行のダミーチェインメモリアレイDCY行と1列のダミーチェインメモリアレイDCY列として認識される。また、マトリクス状に配置された複数のチェインメモリアレイCYにより構成された消去領域内の全チェインメモリアレイCYに含まれる全メモリセルのデータは“1”(Set状態)となる。すなわち、一括消去され、次に、物理アドレスPAD毎に、“0”のデータのみ(Reset状態)が書き込まれる。
この様な書込み領域に対して、例えば一括消去の動作を行う際、書込み領域の外側あるいは内側に配置されているダミーチェインメモリアレイDCYに対しては、消去動作が行われない。
また、この様な消去領域に対して、例えば一括消去の動作を行う際、消去領域の外側に配置されているダミーチェインメモリアレイDCYに対しては、消去動作が行われない。
メモリアレイARY内のある一括消去領域へ消去動作を行った際の熱ディスターブによる信頼性低下の影響が、消去領域周辺のXおよび/あるいはY方向に存在する1つ分のメモリセルまで及ぼす場合、ダミーチェインメモリアレイ指定情報XYDMCを”1_1_1”あるいは”0_1_1”とする。これにより、1つ分のチェインメモリアレイCYがダミーチェインメモリアレイDCYとして、一括消去領域の周辺に配置されることになる。ダミーチェインメモリアレイDCYは消去動作の対象とされないため、熱ディスターブによる信頼性低下を防ぐことが可能となる。
後で述べるが、図25には、図11Aにおけるダミーチェインメモリアレイ指定情報XYDMCが”1_2_2”の場合の、不揮発性メモリ装置内の一つのメモリアレイARYのダミーチェインメモリアレイDCYと、チェインメモリアレイCYの配置の一例が示されている。また、図27には、図11Aにおけるダミーチェインメモリアレイ指定情報XYDMCが”0_2_2”の場合の、不揮発性メモリ装置内の一つのメモリアレイARYのダミーチェインメモリアレイDCYと、チェインメモリアレイCYの配置の一例が示されている。図25および図27においては、書込み領域の外側あるいは内側であって、書込み領域のX方向およびY方向に2つのダミーチェインメモリアレイDCYが配置される。すなわち、消去領域に隣接して、2行のダミーチェインメモリアレイDCY行と、2列のダミーチェインメモリアレイDCY列が配置される。
メモリアレイARY内のある一括消去領域へ消去動作を行った際の熱ディスターブによる信頼性低下の影響が、消去領域周辺のXおよびY方向に存在する2つ分のメモリセルまで及ぼす場合は、ダミーチェインメモリアレイ指定情報XYDMCを”1_2_2”あるいは”0_2_2”とする。この様にすることで、2つ分のチェインメモリアレイCYをダミーチェインメモリアレイDCYとして一括消去領域の周辺に配置することができ、熱ディスターブによる信頼性低下を防ぐことができる。
図33Aおよび図33Bには、図11Aにおけるダミーチェインメモリアレイ指定情報XYDMCが”1_1_0”の場合の、不揮発性メモリ装置内の一つのメモリアレイARYのダミーチェインメモリアレイDCYと、チェインメモリアレイCYの配置の一例が示されている。また、図28および図29Bには、図11Aのダミーチェインメモリアレイ指定情報XYDMCが”0_1_0”の場合の、不揮発性メモリ装置内の一つのメモリアレイARYのダミーチェインメモリアレイDCYと、チェインメモリアレイCYの配置の一例が示されている。この様に、ダミーチェインメモリアレイ指定情報XYDMCを設定することにより、一括消去される消去領域のX方向に沿って、消去領域の外側に、1行のダミーチェインメモリアレイDCY行が配置される。勿論、ダミーチェインメモリアレイ指定情報XYDMCを、“1_0_1”あるいは“0_0_1”に設定することにより、消去領域の外側に、1列のダミーチェインメモリアレイDCY列を配置することが可能である。
メモリアレイARY内のある一括消去領域へ消去動作を行った際の熱ディスターブによる信頼性低下の影響が、消去領域周辺のX方向(Y方向)に存在する1つ分のメモリセルまで及ぼす場合は、ダミーチェインメモリアレイ指定情報XYDMCを”1_1_0”あるいは”0_1_0”(“1_0_1”あるいは“0_0_1”)とする。これにより、1つ分のチェインメモリアレイCYをダミーチェインメモリアレイDCYとして一括消去領域の周辺に配置することで、熱ディスターブによる信頼性低下を防ぐことができる。
この様に、あるメモリセルへの消去動作を行った際の、熱ディスターブによる影響が、その周辺のどのぐらいのメモリセルまで及ぼすかに応じて、柔軟にダミーチェインメモリアレイDCYの配置を変えることができ、常に、メモリモジュール(半導体装置)NVMMD0の高信頼を実現することが可能である。
図11A、図11Bおよび図11Cの説明に戻る。これらの図において、ECCFLGは、ECC(Error Check and Correct)を行う際のデータの単位を示している。特に限定しないが、ECCFLGが0の場合は512バイトデータを単位としてECCが行われ、ECCFLGが1の場合は2048バイトデータを単位としてECCが行われる。同様に、ECCFLGが2、3、4の場合には、それぞれ4096バイト、8192バイト、16384バイトのデータを単位としてECCが行われる。また、ECCFLGが5、6、7、8の場合には、それぞれ、32バイト、64バイト、128バイト、256バイトのデータを単位としてECCが行われる。
記憶装置には、ハードディスク、SSD、キャッシュメモリ及びメインメモリなど様々な記憶装置があり、データの読み出しや書込みの単位が異なる。例えばハードディスクやSSDなどのストレージでは、512バイト以上のデータ単位で読み出しや書込みが行われる。また、キャッシュメモリでは、そのラインサイズ単位(32バイトや64バイトなど)でメインメモリとの間でデータ読み出しやデータ書込みが行われる。このように、データ単位が異なる場合においても、ECCFLGによって、異なるデータ単位でECCを行うことができ、メモリモジュール(半導体装置)NVMMD0への要求に対して柔軟に対応できる。
また、図11Aから図11Cにおいて、WRTFLGは、ライト方法選択情報であり、書込み時の書込み方法を示す。特に限定しないが、ライト方法選択情報WRTFLGが0の場合は、メモリモジュール(半導体装置)NVMMD0へ入力した書込みデータWDATAと、書込みデータWDATAから生成したECCコードECCを、加工せずに、そのまま不揮発性メモリへ書き込む。
WRTFLGが1の場合の書込み方法は次の様になる。すなわち、書込みデータWDATAと、書込みデータWDATAから生成したECCコードECCのデータとの中で、“0”のビットデータおよび“1”のビットデータを数え、“0”のビットデータの数と“1”のビットデータの数を比較する。次に、情報処理回路MNGERは、“0”のビットデータの数が“1”のビットデータの数より大きい場合は、書込みデータWDATAの各ビットを反転させ、不揮発性メモリへ書き込む。一方、情報処理回路MNGERは、“0”のビットデータの数が“1”のビットデータの数より、大きくない場合は、書込みデータ(DATA0)の各ビットは反転させないで、不揮発性メモリへ書き込む。これにより、書込みデータの中の“0”のビットデータの数が常に1/2以下となり、“0”のビットデータを書き込む量を半減でき、高速かつ低電力で書き込むことができる。
ライト方法選択情報WRTFLGが2の場合の書込み方法は、次の様になる。すなわち、書込みデータWDATAと、書込みデータWDATAから生成したECCコードECCとを圧縮した圧縮データCompDATAを生成し、この圧縮データCompDATAを不揮発性メモリへ書き込む。圧縮することにより、圧縮データCompDATAの書込みサイズが、書込みデータWDATAの書込みサイズと書込みデータWDATAから生成したECCコードECCの書込みサイズの和より小さくなるため、メモリモジュール(半導体装置)NVMMD0の容量を実効的に大容量化できる。
圧縮データを生成する圧縮方法には、連長符号やLZ符号などがあり、扱うデータの種類に応じて圧縮方法を選べばよい。
ライト方法選択情報WRTFLGが3の場合の書込み方法を次に述べる。この場合の書込み方法は、書込みデータWDATAを“0”のビットデータの最大数を制限した書込みデータRdcDATAへ変換し、不揮発性メモリへ書き込む方法である。次に、書込みデータを32ビットで、その書込みデータの中で、書き込む“0”のビットデータの最大数を8ビットに制限して書き込む場合の書込み方法の一例を説明する。
書込みデータtビットの中で、書き込む“0”のビットデータの最大数をrビットに制限した場合の、とりうる組合せの総数Tと、書き込まれる“0”の総数Rは、式(1)、式(2)のように表すことができる。
式(1)および(2)に、t=32、r=8を代入すると、T=15033173、R=114311168となる。また、”0“ビットの平均書込み数は、Ravg=R/T=7.60となる。ここで、このTを2進数で表した場合の必要なビット数をIとすると、I=Log2(T)=Log2(15033173)=23.84となる。
つまり、書込みデータ32ビットの中で、書き込む“0”のビットデータの最大数を32ビットの1/4の8ビットに制限した場合でも、15033173通りの組合せで、データを区別することができる。
このように、“0”のビットデータの最大数を制限した書込み方法により、“0”を書込むビット数を削減でき、高速な書込みが実現できる。
ライト方法選択情報WRTFLGが1〜3までの書込み方法を述べたが、それぞれを組み合わせることによっても、書込み方法を設定できる。図11Bおよび図11Cには、組み合わせた例が示されている。すなわち、これらの図においては、ライト方法選択情報WRTFLGが1と2が組み合わされた例が示されており、これらの図においては、ライト方法選択情報WRTFLGが”2_1”となっている。
ライト方法選択情報WRTFLGが”2_1”の場合、先ず、ライト方法選択情報WRTFLGが”2“で設定された方法でデータを生成し、この最初に生成されたデータに対し、次に、ライト方法選択情報WRTFLGが”1“で設定された方法でデータを生成し、不揮発性メモリへ書き込む。
具体的な処理の例として、ライト方法選択情報WRTFLGが”2_1”の場合を次に説明する。先ず、メモリモジュール(半導体装置)NVMMD0へ入力した書込みデータWDATAと、書込みデータWDATAから生成したECCコードECCとを圧縮した圧縮データCompDATAを生成する。次に、この圧縮データCompDATAの中で、“0”のビットデータおよび“1”のビットデータを数え、“0”のビットデータの数と“1”のビットデータの数を比較する。さらに、情報処理回路MNGERは、“0”のビットデータの数が“1”のビットデータの数より大きい場合は、圧縮データCompDATAの各ビットを反転させ、不揮発性メモリへ書き込む。これに対して、“0”のビットデータの数が“1”のビットデータの数よりも小さい場合は、圧縮データCompDATAの各ビットを反転させずに、不揮発性メモリへ書き込む。
また、ライト方法選択情報WRTFLGが、例えば”3_2”の場合には、先ず、ライト方法選択情報WRTFLGが”3“で設定された方法でデータを生成し、この最初に生成されたデータに対し、次に、ライト方法選択情報WRTFLGが”2“で設定された方法でデータを生成し、不揮発性メモリへ書き込む。
この場合、具体的には、メモリモジュール(半導体装置)NVMMD0へ入力した書込みデータWDATAが512バイトの場合、書き込む“0”のビットデータの最大数を128バイトにした場合のデータRdsDataへ変換する。次に、このデータRdsDataと、データRdsDataから生成したECCコードECCとを圧縮した圧縮データCompRsdDATAを生成し、不揮発性メモリへ書き込む。
このように、SSDコンフィグレーション情報(SDCFG)は適宜プログラム可能となっているため、メモリモジュール(半導体装置)NVMMD0に要求される機能、性能及び信頼性のレベル等に合わせて柔軟に対応することができる。
<書込みデータの構成例>
図12Aは、図1のメモリモジュールNVMMD0において、制御回路MDLCT0から不揮発性メモリ装置NVM10〜NVM17に書き込まれるデータの構成例を示す図である。図12Bおよび図12Cは、図12Aにおけるデータ書込みレイヤ情報の構成例を示す図である。図12Aにおいて、特に限定しないが、書込みデータ(ページデータ)PGDATは、メインデータMDATA(512バイト)と、冗長データRDATA(16バイト)から構成される。メインデータMDATAは、図1の情報処理装置(プロセッサ)CPU_CPからメモリモジュールNVMMD0へ入力する書込みデータWDATAであり、書込みデータWDATAに対応した冗長データRDATAは、図1の制御回路MDLCT0が生成するデータである。冗長データRDATAには、データ反転フラグINVFLG、ライトフラグWTFLG、ECCフラグECCFLG、ステート情報STATE、エリア情報AREA、データ書込みレイヤ情報LYN、ECCコードECC、バッドブロック情報BADBLK、予備領域RSVが含まれる。
データ反転フラグINVFLGは、制御回路MDLCT0が不揮発性メモリ装置NVM10〜NVM17へ書き込んだメインデータMDATAが元の書込みデータの各ビットを反転させたデータかどうかを示す。データ反転フラグINVFLGに0が書き込まれた場合、元のメインデータの各ビットを反転させずにデータが書き込まれたことを示し、1が書き込まれた場合、元のメインデータの各ビットを反転させたデータが書き込まれたことを示す。
ライトフラグWTFLGは、制御回路MDLCT0が不揮発性メモリ装置NVM10〜NVM17へメインデータMDATAを書き込む際に実行した書込み方法を示している。すなわち、ライトフラグWTFLGは、図11Aから図11Cにおいて説明したライト方法選択情報WRTFLGに対応している。そのため、特に限定しないが、WTFLGに0が書き込まれた場合(WTFLG0)、通常方法にてメインデータMDATAが書き込まれたことを示し、WTFLGに1が書き込まれた場合(WTFLG1)、元のメインデータの各ビットを反転させたデータが書き込まれたことを示す。WTFLGに2が書き込まれた場合(WTFLG2)、元のデータは圧縮され、圧縮されたデータが書き込まれたことを示す。WTFLGに3が書き込まれた場合(WTFLG3)、元のデータはコード化され、コード化されたデータが書き込まれたことを示す。また、WTFLGに2_1が書き込まれた場合(WTFLG2_1)、元のデータは圧縮され、圧縮されたデータの各ビットが反転され、この反転されたデータが書き込まれたことを示す。更に、WTFLGに3_2が書き込まれた場合(WTFLG3_2)、元のデータはコード化され、さらに圧縮され、この圧縮されたデータが書き込まれたことを示す。
ECCフラグECCFLGは、制御回路MDLCT0が不揮発性メモリ装置NVM10〜NVM17へメインデータMDATAを書込む際に、どの程度のメインデータMDATAのサイズに対して、ECCコードを生成したかを示している。特に限定しないが、ECCFLGに0が書き込まれた場合、512バイトのデータサイズに対してコードを生成したことを示し、ECCFLGに1が書き込まれた場合、1024バイトのデータサイズに対してコードを生成したことを示す。ECCFLGに2が書き込まれた場合、2048バイトのデータサイズに対してコードを生成したことを示し、ECCFLGに3が書き込まれた場合、32バイトのデータサイズに対してコードを生成したことを示す。
ECCコードECCは、メインデータMDATAのエラーを検出し修正するために必要なデータである。ECCは、制御回路MDLCT0が不揮発性メモリ装置NVM10〜NVM17へメインデータMDATAを書き込む際に、制御回路MDLCT0によってメインデータMDATAに対応して生成され、冗長データRDATAへ書き込まれる。ステート情報STATEは、不揮発性メモリ装置NVM10〜NVM17へ書き込まれたメインデータMDATAが、有効状態か、無効状態か、消去状態かを示す。特に限定しないが、ステート情報STATEに0が書き込まれた場合、メインデータMDATAは無効状態であることを示し、ステート情報STATEに1が書き込まれた場合、メインデータMDATAは有効状態であることを示し、ステート情報STATEに3が書き込まれた場合、メインデータMDATAは消去状態であることを示す。
エリア情報AREAは、後述する図13に示すアドレスマップ範囲(ADMAP)の中で、メインデータMDATAが書き込まれたデータが、第1物理アドレス領域PRNG1へ書き込まれたのか、第2物理アドレス領域PRNG2へ書き込まれたのかを示す情報である。特に限定しないが、エリア情報AREA値が1であれば、メインデータMDATAが第1物理アドレス領域PRNG1へ書き込まれたことを示し、エリア情報AREA値が2であれば、メインデータMDATAが第2物理アドレス領域PRNG2へ書き込まれたことを示す。
また、図12Bおよび図12Cにおいて、データ書込みレイヤ情報LYN[n:0]は、チェインメモリアレイCY内の相変化メモリセルCL0〜CLnの中で、どのメモリセルのデータが有効に書き込まれているかを示す情報である。初期設定では、LYN[n:0]は0に設定される。この例では、チェインメモリアレイCYには、8個の相変化メモリセルCL0〜CL7が含まれている場合について示している。
データ書込みレイヤ情報LYNは、LYN[7:0]の8ビットから構成され、LYN[7]〜LYN[0]はそれぞれ相変化メモリセルCL7〜CL0に対応している。例えば、相変化メモリセルCL0に有効なデータが書き込まれた場合は、LYN[0]に“1”が書き込まれ、それ以外は“0”が書き込まれる。また、例えば、相変化メモリセルCL1に有効なデータが書き込まれた場合は、LYN[1]に“1”が書き込まれ、それ以外は“0”が書き込まれる。以降、相変化メモリセルCL2〜CL7とLYN[2]〜LYN[7]との関係についても同様である。
図12Bの例では、LYN[0]に“1”が書き込まれ、LYN[7:1]に“0”が書き込まれているので、チェインメモリアレイCYの相変化メモリセルCL0へ有効なデータが書き込まれたことを示す。図12Cの例では、LYN[0]およびLYN[4]に“1”が書き込まれ、LYN[7:5]およびLYN[3:1]に“0”が書き込まれているので、チェインメモリアレイCYの相変化メモリセルCL0およびCL4へ有効なデータが書き込まれたことを示す。
図12Aにおいて、バッドブロック情報BADBLKは、不揮発性メモリ装置NVM10〜NVM17に書き込まれたメインデータMDATAが利用可能かどうかを示す。特に限定しないが、バッドブロック情報BADBLKに0が書き込まれた場合、メインデータMDATAは利用可能であり、1が書き込まれた場合、メインデータMDATAは利用不可能であることを示す。例えば、ECCによるエラー訂正が可能である場合、バッドブロック情報BADBLKは0となり、エラー訂正が不可能である場合、バッドブロック情報BADBLKは1となる。予備領域RSVは、制御回路MDLCT0が自由に定義できる領域として存在する。
<アドレスマップ範囲の詳細>
図13は、図1のランダムアクセスメモリに格納されるアドレスマップ範囲(ADMAP)の一例を示す図である。当該アドレスマップ範囲(ADMAP)は、図6A等でも述べたように、制御回路MDLCT0が、NVM10〜NVM17へ格納されている例えば図11Aに示すSSDコンフィグレーション情報(SDCFG)を利用して生成し、ランダムアクセスメモリRAMへ格納したものである。
<メモリモジュール(半導体装置)の書込み動作フロー>
図15は、図1の情報処理装置CPU_CPからメモリモジュールNVMMD0へライトリクエスト(WREQ01)が入力された際に、メモリモジュールNVMMD0内で行われる詳細な書込み処理手順の一例を示すフロー図である。ここでは、主に図2の情報処理回路MNGERの処理内容が示され、情報処理回路MNGERは、特に限定しないが512バイトのメインデータMDATAと16バイトの冗長データRDATAのサイズ毎に、1個の物理アドレスを対応させ、不揮発性メモリ装置NVM10〜NVM17へ書込みを行っている。
まず、情報処理装置CPU_CPから論理アドレス値(例えばLAD=0)、データ書込み命令(WRT)、セクタカウント値(例えばSEC=1)、および512バイトの書込みデータ(WDATA0)が含まれる書込みリクエスト(WQ01)が制御回路MDLCT0へ入力される。図2のインターフェース回路HOST_IFは、ライトリクエスト(WQ01)に埋め込まれているクロック情報を取り出し、シリアルデータ化されたライトリクエスト(WQ01)をパラレルデータに変換し、バッファBUF0および情報処理回路MNGERへ転送する(Step1)。
次に、情報処理回路MNGERは、論理アドレス値(LAD=0)、データ書込み命令(WRT)及びセクタカウント値(SEC=1)を解読し、ランダムアクセスメモリRAM内のアドレス変換テーブルLPTBL(図10A)を検索する。これにより、情報処理回路MNGERは、論理アドレス値(LAD=0)の番地に格納されている現在の物理アドレス値(例えばPAD=0)と、この物理アドレス値(PAD=0)に対応した有効フラグCPVLDの値と、レイヤ番号LYCを読み出す。さらに、情報処理回路MNGERは、ランダムアクセスメモリRAM内の物理アドレステーブルPADTBL(図7)から物理アドレス値(PAD=0)に対応する消去回数値(例えばPERC=400)および有効フラグPVLD値を読み出す(Step2)。
次に、情報処理回路MNGERは、ランダムアクセスメモリRAMへ格納したアドレスマップ範囲(ADMAP)(図13)を利用し、情報処理装置CPU_CPから制御回路MDLCT0へ入力された論理アドレス値(LAD=0)が、論理アドレス領域LRNG1内の論理アドレス値であるか、又は、論理アドレス領域LRNG2内の論理アドレス値であるかを判断する。
ここで、情報処理回路MNGERは、論理アドレス値(LAD=0)が論理アドレス領域LRNG1内の論理アドレス値の場合は、図9A、図9Bの書込み物理アドレステーブルNXPADTBL1を参照し、論理アドレス値(LAD=0)が論理アドレス領域LRNG2内の論理アドレス値の場合は、書込み物理アドレステーブルNXPADTBL2を参照する。なお、実際には、前述したように、当該テーブルは、図2の書込み物理アドレステーブルNXPTBL1,NXPTBL2に格納されている。情報処理回路MNGERは、いずれか一方の書込み物理アドレステーブルから、書込み優先度の高い順(すなわちエントリー番号ENUMが小さい順)に、セクタカウント値(SEC=1)で指定された個数分だけ必要なデータを読み出す。この場合は、1個分だけの書込み物理アドレス(例えばNXPAD=100)と、この書込み物理アドレス(NXPAD=100)に対応した有効フラグNXPVLD値と、消去回数NXPERC値と、書込みレイヤ番号NXLYCが読み出される(Step3)。
次に、情報処理回路MNGERは、現在の物理アドレス値(PAD=0)と次に書込み対象となる書込み物理アドレス値(NXPAD=100)とが等しいかを判別し(Step4)、等しい場合にはStep5を実行し、異なる場合にはStep11を実行する。Step5では、情報処理回路MNGERは、不揮発性メモリ装置NVM10〜NVM17における物理アドレス値(NXPAD=100)に対応する番地に各種データを書き込む。ここでは、図12Aに示したメインデータMDATAとして書込みデータ(WDATA0)が書き込まれ、冗長データRDATAとして、データ反転フラグINVFLG、ライトフラグWTFLG、ECCフラグECCFLG、ステート情報STATE、データ書込みレイヤ情報LYN、ECCコードECCが書き込まれる。さらに、図10Bに示したように、物理アドレス値(NXPAD=100)に対応する論理アドレス値(LAD=0)と、有効フラグ値(DVF=1)と、レイヤ番号LYCが書き込まれる。
この際に、例えば、書込み物理アドレステーブルNXPADTBL1から読み出した書込みレイヤ番号NXLYCが、“10”の場合、メインデータMDATA(書込みデータ(WDATA0))と、冗長データRDATAは、各チェインメモリアレイCYの中の1個の相変化メモリセルCL0に書き込まれる。これに伴い、図12Aにおける冗長データRDATAの中のデータ書込みレイヤ情報LYN[7:1]には“0”が書き込まれ、データ書込みレイヤ情報LYN[0]には“1”が書き込まれる。一方、例えば、書込み物理アドレステーブルNXPADTBL2から読み出した書込みレイヤ番号NXLYCが、“00”の場合、メインデータMDATA(書込みデータ(WDATA0))と、冗長データRDATAは、各チェインメモリアレイCY内の全相変化メモリセルCL0〜CLnに書き込まれる。また、冗長データRDATAの中のデータ書込みレイヤ情報LYN[7:0]へは“1”が書き込まれる。
図15において、Step11では、情報処理回路MNGERは、アドレス変換テーブルLPTBL(図10A)から読み出した物理アドレス値(PAD=0)に対応した有効フラグCPVLD値が0であるかを判定する。有効フラグCPVLD値が0の場合、論理アドレス値(LAD=0)に対応する現在の物理アドレス値(PAD=0)は無効であることを示し、これは論理アドレス値(LAD=0)に対応する物理アドレスは新しい物理アドレス値(NXPAD=100)しか存在しないことを示す。言い換えれば、新しい物理アドレス値(NXPAD=100)を論理アドレス値(LAD=0)に対してそのまま割り当てても、論理アドレス値(LAD=0)に対して重複した物理アドレス値が割り当てられることは無い。そこで、この場合、情報処理回路MNGERは、前述したStep5を実行する。
これに対して、Step11において有効フラグCPVLD値が1の場合、論理アドレス値(LAD=0)に対応する物理アドレス値(PAD=0)が未だに有効であることを示す。したがって、新しい物理アドレス値(NXPAD=100)を論理アドレス値(LAD=0)に対してそのまま割り当てた場合、論理アドレス値(LAD=0)に対して重複した物理アドレス値が存在することになる。そこで、Step13において、情報処理回路MNGERは、アドレス変換テーブルLPTBL内で論理アドレス値(LAD=0)に対応する物理アドレス値(PAD=0)の有効フラグCPVLD値を0(無効)に変更する。加えて、物理アドレステーブルPADTBL内の物理アドレス値(PAD=0)に対応する有効フラグPVLDも0(無効)にする。情報処理回路MNGERは、このようにして、論理アドレス値(LAD=0)に対応する物理アドレス値(PAD=0)を無効にした後に、前述したStep5を実行する。
Step5に続くStep6において、情報処理回路MNGERおよび/または不揮発性メモリ装置NVM10〜NVM17は、書込みデータ(WDATA0)が正しく書き込まれたかをチェックする。正しく書き込まれた場合は、Step7を実行し、正しく書き込まれなかったらStep12を実行する。Step12では、情報処理回路MNGERおよび/または不揮発性メモリ装置NVM10〜NVM17は、書込みデータ(WDATA0)が正しく書き込まれたかをチェックするベリファイチェック回数(Nverify)が設定回数(Nvr)以下であるかをチェックする。ベリファイチェック回数(Nverify)が設定回数(Nvr)以下であれば、再度Step5およびStep6を実行する。ベリファイチェック回数(Nverify)が設定回数(Nvr)より多い場合は、書込み物理アドレステーブルNXPADTBL1,NXPADTBL2から読み出した書込み物理アドレス値(NXPAD=100)へは書込みデータ(WDATA0)を書き込めないと判断し(Step14)、再度Step3を実行する。なお、このようなデータ検証処理は、図3Aに示した不揮発性メモリ装置内の書込みデータ検証回路WV0〜WVmを用いて行われ、不揮発性メモリ装置の内部回路のみで行われる場合や、あるいはその外部(情報処理回路MNGER)と適宜連動しながら行われる場合がある。
Step6に続いてStep7では、情報処理回路MNGERは、アドレス変換テーブルLPTBLを更新する。具体的には、例えば論理アドレス値(LAD=0)の番地へ新たな物理アドレス値(NXPAD=100)を書込み、有効フラグCPVLD値を1とし、レイヤ番号LYCに書込みレイヤ番号NXLYCを書き込む。次のStep8では、情報処理回路MNGERは、物理アドレステーブルPADTBLを更新する。具体的には、例えば、書込み物理アドレステーブルで示される書込み物理アドレス値(NXPAD=100)の消去回数(NXPERC)値に1を加算した新たな消去回数値を生成し、当該新たな消去回数値を物理アドレステーブルPADTBL内の対応箇所(物理アドレス値(NXPAD=100)の消去回数(PERC))に書込む。また、物理アドレステーブルPADTBL内の有効フラグPVLDを1とし、レイヤ番号LYCに書込みレイヤ番号NXLYCを書き込む。
Step9では、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBLへ格納されている全書込み物理アドレスNXPADへの書込みが完了したかどうかを判定する。書込み物理アドレステーブルNXPADTBLへ格納されている全書込み物理アドレスNXPADへの書込みが完了した場合はStep10を行い、未完了の場合は情報処理装置CPU_CPからメモリモジュールNVMMD0へ向けた新たなライトリクエストを待つ。
Step10では、例えば書込み物理アドレステーブルNXPADTBLへ格納されている全書込み物理アドレスNXPADに対する書込みが完了した時点で、情報処理回路MNGERは、物理セグメントテーブルPSEGTBL(図8A、図8B)を更新する。すなわち、書込み物理アドレステーブルNXPADTBL内のエントリーを全て使い切った際に物理セグメントテーブルPSEGTBLを更新し、これを用いて詳細は図16で述べるが書込み物理アドレステーブルNXPADTBLの更新も行う。
物理セグメントテーブルPSEGTBLの更新に際し、情報処理回路MNGERは、物理アドレステーブルPADTBLにおける物理アドレスの有効フラグPVLDと消去回数PERCを参照する。そして、物理アドレステーブルPADTBL内で有効フラグPVLDが0(無効)となっている物理アドレスを対象として、各物理セグメントアドレスSGAD毎に、無効物理アドレス総数TNIPA、最大消去回数MXERCおよびその無効物理オフセットアドレスMXIPAD、最小消去回数MNERCおよびその無効物理オフセットアドレスMNIPADを更新する。また、物理アドレステーブルPADTBL内で有効フラグPVLDが1(有効)となっている物理アドレスを対象として、各物理セグメントアドレスSGAD毎に、有効物理アドレス総数TNVPA、最大消去回数MXERCおよびその有効物理オフセットアドレスMXVPAD、最小消去回数MNERCおよびその有効物理オフセットアドレスMNVPADを更新する。
さらに、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBLを更新する。書込み物理アドレステーブルNXPADTBLの更新が終了した場合、情報処理装置CPU_CPからメモリモジュールNVMMD0へのライトリクエストを待つ。
このように、情報処理回路MNGERは、不揮発性メモリ装置NVM10〜NVM17への書込みを行う際に、書込み物理アドレステーブルNXPADTBLを用いて行うため、例えば、書込みの度に物理アドレステーブルPADTBLから消去回数が少ない物理アドレスを探索するような場合と比べて高速な書込み動作が実現可能となる。また、図2に示したように、複数個の書込み物理アドレステーブルNXPTBL1,NXPTBL2を搭載した場合、各テーブルを独立に管理・更新することができるので、これによっても高速な書込み動作が実現可能となる。例えば、書込み物理アドレステーブルNXPTBL1を使っている間に書込み物理アドレステーブルNXPTBL2を更新し、NXPTBL1を使い切った際にはNXPTBL2に移行し、NXPTBL2を使っている間にNXPTBL1の更新を行うようなことが可能となる。
<書込み物理アドレステーブルの更新方法(ウエアレベリング方法[1])>
図16は、図9Aおよび図9Bの書込み物理アドレステーブルにおいて、その更新方法の一例を示すフロー図である。図9Aおよび図9Bに示すように、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBLの中において、エントリー番号ENUMが0から(N/2−1)までのN/2個分を、書込み物理アドレステーブルNXPADTBL1とし、エントリー番号EMUMが(N/2)から(N−1)までのN/2個分を書込み物理アドレステーブルNXPADTBL2として管理する。
また、図13のアドレスマップ範囲(ADMAP)の例では、物理アドレスPADが“0000_0000”から“04FF_FFFF”までは、第1物理アドレス領域PRNG1を示し、物理アドレスPADが“0500_0000”から“09FF_FFFF”までは、第2物理アドレス領域PRNG2を示す。従って、第1物理アドレス領域PRNG1の物理セグメントアドレスSGAの範囲は“0000”から“04FF”となり、第2物理アドレス領域PRNG2の物理セグメントアドレスSGAの範囲は“0500”から“09FF”となる。
情報処理回路MNGERは、第1物理アドレス領域PRNG1の範囲内の物理アドレスPADに対して書込み物理アドレステーブルNXPADTBL1を利用し、これを更新し、第2物理アドレス領域PRNG2の範囲内の物理アドレスPADに対して書込み物理アドレステーブルNXPADTBL2を利用し、これを更新する。書込み物理アドレステーブルNXPADTBLを更新するために、まず物理セグメントアドレスを決定し、次に決定された物理セグメントアドレス内の物理オフセットアドレスを決定する。図8Aに示すように、ランダムアクセスメモリRAM内の物理セグメントテーブルPSEGTBL1には、物理セグメントアドレスSGAD毎に、無効状態の物理アドレスの総数(TNIPA)と、無効状態の物理アドレスの中で最小の消去回数を持つ物理オフセットアドレス(MNIPAD)ならびにその消去回数(MNERC)が格納されている。
そこで、図16に示すように、情報処理回路MNGERは、まず、ランダムアクセスメモリRAMの物理セグメントテーブルPSEGTBL1を参照し、物理セグメントアドレスSGAD毎に、前述した無効状態の物理アドレスの総数(TNIPA)、最小の消去回数を持つ物理オフセットアドレス(MNIPAD)ならびにその消去回数(MNERC)を読み出す(Step21)。次に、物理セグメントアドレスSGAD毎の無効状態の物理アドレスの総数(TNIPA)が書込み物理アドレステーブルNXPADTBLの登録数Nより大きな物理セグメントアドレスSGADを選択する(Step22)。さらに、この選択された物理セグメントアドレスSGAD毎の最小消去回数値(MNERC)を比較し、その最小消去回数値の中の最小値(MNERCmn)を求める(Step23)。
次に、当該最小値(MNERCmn)を持つ物理セグメントアドレス(SGADmn)とその物理オフセットアドレス(MNIPADmn)を、書込み物理アドレステーブルNXPADTBLに登録する第1候補として決定する(Step24)。なお、Step22で選択される物理セグメントアドレスSGADを存在させるには、物理アドレス空間の大きさを論理アドレス空間の大きさより、少なくとも書込み物理アドレステーブルNXPADTBLが登録できるアドレス分の大きさ以上にすると良い。
次に、情報処理回路MNGERは、物理アドレステーブルPADTBL(図7)を参照し、前述した物理セグメントアドレス(SGADmn)内の現在候補となっている物理オフセットアドレスPPADに対応する消去回数PERC値をランダムアクセスメモリRAMから読み出し、消去回数閾値ERCthと比較する(Step25)。当該Step25はループ処理の一部であり、その1回目には、前述した物理オフセットアドレス(MNIPADmn)が物理オフセットアドレスPPADの候補となる。消去回数PERC値が消去回数閾値ERCth以下の場合、情報処理回路MNGERは、現在候補となっている物理オフセットアドレスPPADを登録対象として確定し、Step26を行う。
一方、消去回数PERC値が消去回数閾値ERCthより大きい場合、情報処理回路MNGERは、現在候補となっている物理オフセットアドレスPPADを一旦候補から除外し、Step32を行う。Step32で、情報処理回路MNGERは、物理アドレステーブルPADTBLを参照し、前述した物理セグメントアドレス(SGADmn)内で消去回数閾値ERCth以下の消去回数を持つ無効状態の物理オフセットアドレスの数(Ninv)が、書込み物理アドレステーブルNXPADTBLが登録できるアドレス数Nより小さいか(Ninv<N)を判定する。小さい場合はStep33を行い、大きい場合はStep34を行う。
Step34において、情報処理回路MNGERは、現在候補となっている物理オフセットアドレスPPADへ演算を行い、新たな候補となる物理オフセットアドレスPPADを生成し、Step25を再度実行する。Step34では、現在の物理オフセットアドレスPPADへp値を加算し、新たな候補となる物理オフセットアドレスPPADを求める。Step34のp値はプログラム可能であり、情報処理回路MNGERが管理する最小データサイズや、不揮発性メモリの構成によって、最適な値を選ぶと良い。本実施の形態では例えばp=8を用いている。Step33では、情報処理回路MNGERは、消去回数閾値ERCthへ、ある値アルファα分だけ加算した新たな消去回数閾値ERCthを生成し、Step25を再度実行する。
Step26では、Step25を介して登録対象となった物理オフセットアドレスPPADが第1物理アドレス領域PRNG1内のアドレスかどうかをチェックする。登録対象となった物理オフセットアドレスPPADが第1物理アドレス領域PRNG1内のアドレスであれば、Step27を実行し、第1物理アドレス領域PRNG1内のアドレスでなければ(すなわち第2物理アドレス領域PRNG2内のアドレスであれば)Step28を実行する。
Step27では、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBL1に対して、登録対象となった物理オフセットアドレスPPADに前述した物理セグメントアドレス(SGADmn)を含めたアドレスを書込み物理アドレスNXPADとして登録する。また、加えて、当該書込み物理アドレスNXPADの有効フラグNXPVLD値(ここでは0となる)を登録し、当該書込み物理アドレスNXPADの消去回数(PERC)値を消去回数NXPERCとして登録し、さらに、当該書込み物理アドレスNXPADの現レイヤ番号LYCに1を加算した値を新レイヤ番号NXLYCとして登録する。書込み物理アドレステーブルNXPADTBL1には、特に限定しないが、N/2組の登録が可能であり、エントリー番号ENUMの小さな番号から順に登録される。
レイヤ番号LYC(NXLYC)の最大値は、図3B等に示すように、チェインメモリアレイCY内に(n+1)個の相変化メモリセルCL0〜CLnが含まれる場合、nとなる。なお、図9A、図9Bの書込み物理アドレステーブルNXPADTBLの例では、レイヤ番号NXLYC=“n”となる。レイヤ番号LYC(NXLYC)が最大値nに達した際、新しいレイヤ番号LYC(NXLYC)の値は0となる。不揮発性メモリ装置NVM10〜NVM17への書込みは、この書込み物理アドレステーブルNXPADTBLを用いて行われるため、このように、当該テーブルの更新時にレイヤ番号LYC(NXLYC)を順次シフトさせることで、図14等で述べた第1動作モードを実現できる。
Step28では、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBL2に対して、登録対象となった物理オフセットアドレスPPADに前述した物理セグメントアドレス(SGADmn)を含めたアドレスを書込み物理アドレスNXPADとして登録する。また、加えて、当該書込み物理アドレスNXPADの有効フラグNXPVLD値(ここでは0となる)を登録し、当該書込み物理アドレスNXPADの消去回数(PERC)および現在のレイヤ番号LYCを、消去回数NXPERCおよびレイヤ番号NXLYCとして登録する。書込み物理アドレステーブルNXPADTBL2には、特に限定しないが、N/2組の登録が可能であり、エントリー番号ENUMの小さな番号から順に登録される。なお、書込み物理アドレステーブルNXPADTBL1,NXPADTBL2の登録組数は、情報処理回路MNGERによって任意に設定可能であり、不揮発性メモリ装置NVM10〜NVM17への書込み速度が最大となるように設定すると良い。
次のStep29では、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBL1の全組(全エントリー番号)に対して登録が完了したか否かをチェックする。全組の登録が完了していなければ、Step32を実行し、全組の登録が完了していれば、Step30を実行する。次のStep30では、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBL2への全組の登録が完了したか否かをチェックする。全組の登録が完了していなければ、Step32を実行し、全組の登録が完了していれば、書込み物理アドレステーブルNXPADTBLの更新を完了する(Step31)。
このような更新フローを用いると、概略的には、消去回数が最小の物理アドレスを持つ物理アドレスセグメントが定められ(Step21〜24)、当該物理アドレスセグメントの中で、当該最小の物理アドレスを起点として、消去回数が所定の閾値以下である物理アドレスが順次抽出される(Step25、Step32〜34)。この際に、抽出数が所定の登録数に満たない場合には(Step32)、消去回数の閾値を段階的に上げながら(Step33)、抽出数が所定の登録数を満たすまで(Step32、Step29,30)、同様にして物理アドレスが順次抽出される(Step25,34)。これによって、無効状態となっている物理アドレス(すなわち論理アドレスに対して現在割り当てが行われていない物理アドレス)を対象として、消去回数を平準化するためのウエアレベリング(ダイナミックウエアレベリング)が実現可能となる。
<不揮発性メモリ装置のアドレス割り付けの詳細>
図17Aは、図13等の第1物理アドレス領域PRNG1に割り当てられる不揮発性メモリ装置において、その論理アドレス、物理アドレス、チップ内アドレスの対応関係の一例を示す図である。図17Bは、図13等の第2物理アドレス領域PRNG2に割り当てられる不揮発性メモリ装置において、その論理アドレス、物理アドレス、チップ内アドレスの対応関係の一例を示す図である。
図17Aおよび図17Bには、論理アドレスLADと、物理アドレスPADと、物理アドレスCPADと、不揮発性メモリ装置NVM10〜NVM17のチップアドレスCHIPA[2:0]と、各チップ内のバンクアドレスBK[1:0]、ロウアドレスROWおよびカラムアドレスCOLとの対応関係が示されている。さらに、レイヤ番号LYCとカラムアドレスCOLとの対応関係、ロウアドレスROWとワード線WLとの対応関係、カラムアドレスCOLとビット線BL、チェインメモリアレイ選択線SLおよびメモリセル選択線LYとの対応関係がそれぞれ示されている。
特に限定しないが、不揮発性メモリNVM10〜NVM17は8チップあり、1チップの不揮発性メモリ装置には2本のチェインメモリアレイ選択線SLがあり、1個のチェインメモリアレイCYには8個のメモリセルと8本のメモリセル選択線LYがあるものとする。また、1個のメモリバンクBKには528個のメモリアレイARYがあり、1個のメモリアレイARYにて選択されるチェインメモリアレイCYは1個であるものとする。つまり、1個のメモリバンクBKの中で同時に528個のチェインメモリアレイCYが選択される。また、メモリバンクは4個である。図17Aの第1物理アドレス領域PRNG1では、1個のチェインメモリアレイCY内の8個のメモリセルの中で1個のメモリセルにのみデータを保持するものとし、図17Bの第2物理アドレス領域PRNG2では、1個のチェインメモリアレイCY内の8個のメモリセルの中の8個のメモリセルにデータを保持するものとする。
図17Aおよび図17Bに示すアドレス割り付けは、例えば、図2の情報処理回路MNGERによって行われる。図17Aにおいて、図2の情報処理回路MNGERは、データを不揮発性メモリ装置NVM10〜NVM17へ書き込む際には、書込み物理アドレステーブルNXPADTBL1(図9A、図9B)に格納されているレイヤ番号NXLYC(LYC[2:0])と物理アドレスNXPAD(PAD[31:0])と、物理アドレスCPAD[2:0]を対応付ける。また、データを不揮発性メモリ装置NVM10〜NVM17から読み出す際は、アドレス変換テーブルLPTBL(図10A)に格納されている物理アドレスPAD[31:0]と、物理アドレスPADのレイヤ番号LYC[2:0]と、物理アドレスCPAD[2:0]とを対応付ける。
レイヤ番号LYC[2:0]は、カラムアドレスCOL[2:0]へ対応しており、さらに、カラムアドレスCOL[2:0]はメモリセル選択線LY[2:0]へ対応している。レイヤ番号LYC[2:0]の値が、メモリセル選択線LY[2:0]の値となり、レイヤ番号LYC[2:0]で指定されたメモリセルへデータが書き込まれ、また、レイヤ番号LYC[2:0]で指定されたメモリセルからデータが読み出される。
物理アドレスCPAD[0]は、カラムアドレスCOL[3]へ対応し、さらに、カラムアドレスCOL[3]はチェインメモリアレイ選択線SL[0]へ対応している。物理アドレスCPAD[2:1]はカラムアドレスCOL[5:4]へ対応し、さらに、カラムアドレスCOL[5:4]はビット線BL[1:0]へ対応している。物理アドレスPAD[c+0:0]はカラムアドレスCOL[c+6:6]へ対応し、さらに、カラムアドレスCOL[c+6:6]はビット線BL[c:2]へ対応している。物理アドレスPAD[d+c+1:1]はロウアドレスROW[d+c+7:7]へ対応し、さらに、ロウアドレスROW[d+c+7:7]はワード線WL[d:0]へ対応している。
物理アドレスCPAD[d+c+3:d+c+2]はバンクアドレスBK[d+c+9:d+c+8]へ対応し、さらに、バンクアドレスBK[d+c+9:d+c+8]はバンクアドレスBK[1:0]へ対応している。物理アドレスCPAD[d+c+6:d+c+4]はチップアドレスBK[d+c+12:d+c+10]へ対応し、さらに、チップアドレスCHIPA[d+c+12:d+c+10]はチップアドレスCHIPA[2:0]へ対応している。
ここで、例えば、512バイトのメインデータと16バイトの冗長データを書き込む場合を想定する。
前提として、物理アドレスPAD[d+c+6:d+c+4]は3、物理アドレスPAD[d+c+3:d+c+2]は2、物理アドレスPAD[d+c+1:c+1]は8、物理アドレスCPAD[c+0:0]は0、物理アドレスCPAD[2:1]は0、物理アドレスCPAD[0]は0、レイヤ番号LYC[2:0]は0であるものとする。この場合、図2の情報処理回路MNGERは、レイヤ番号LYCの値および物理アドレスPADの値は変化させず、物理アドレスCPAD[2:0]値を0〜7まで+1ずつ変化させ、それぞれのアドレスへ528ビットずつデータを書込み、合計528バイトのデータを書き込む。また、同様の前提で、512バイトのメインデータと16バイトの冗長データを読み出す際、図2の情報処理回路MNGERは、レイヤ番号LYCの値および物理アドレスPADの値は変化させず、物理アドレスCPAD[2:0]値を0〜7まで+1ずつ変化させ、それぞれのアドレスから528ビットずつデータを読み出し、合計528バイトのデータを読み出す。
すなわち、この例の場合、図3Aにおいて、各メモリアレイARY0〜ARY527毎に1本のワード線WLに対して4本のビット線BLが順に選択されると共に、図3Bに示すように、ワード線WLとビット線BLの各交点に位置し、チェインメモリアレイ選択線SLによって選択される2個のチェインメモリアレイCYが選択されることになる。ただし、この際に、各チェインメモリアレイCY内で選択される相変化メモリセルは1個である。
一方、図17Bにおいて、図2の情報処理回路MNGERは、データを不揮発性メモリNVM10〜NVM17へ書き込む際は、書込み物理アドレステーブルNXPADTBL2に格納されている物理アドレスNXPAD(PAD[31:0])および物理アドレスCPAD[2:0]と不揮発性メモリNVM10〜NVM17のアドレスとを対応付ける。また、データを不揮発性メモリ装置NVM10〜NVM17から読み出す際は、アドレス変換テーブルLPTBLに格納されている物理アドレスPAD[31:0]および物理アドレスCPAD[2:0]と不揮発性メモリ装置NVM10〜NVM17のアドレスとを対応つける。
物理アドレスCPAD[2:0]はカラムアドレスCOL[2:0]へ対応しており、さらに、カラムアドレスCOL[2:0]はメモリセル選択線LY[2:0]へ対応している。物理アドレスCPAD[2:0]の値はメモリセル選択線LY[2:0]の値となり、物理アドレスCPAD[2:0]で指定されたメモリセルへデータが書き込まれ、また、物理アドレスCPAD[2:0]で指定されたメモリセルからデータが読み出される。
物理アドレスPAD[0]はカラムアドレスCOL[3]へ対応し、さらに、カラムアドレスCOL[3]はチェインメモリアレイ選択線SL[0]へ対応している。物理アドレスPAD[a+1:1]はカラムアドレスCOL[a+1:1]へ対応し、さらに、カラムアドレスCOL[a+1:1]はビット線BL[a:0]へ対応している。物理アドレスPAD[b+a+2:2]はロウアドレスROW[b+a+2:2]へ対応し、さらに、ロウアドレスROW[b+a+2:2]はワード線WL[b:0]へ対応している。
物理アドレスPAD[b+a+4:b+a+3]はバンクアドレスBK[b+a+4:b+a+3]へ対応し、さらに、バンクアドレスBK[b+a+4:b+a+3]はバンクアドレスBK[1:0]へ対応している。物理アドレスPAD[b+a+7:b+a+5]はチップアドレスBK[b+a+7:b+a+5]へ対応し、さらに、チップアドレスCHIPA[b+a+7:b+a+5]はチップアドレスCHIPA[2:0]へ対応している。
ここで、例えば、512バイトのメインデータと16バイトの冗長データを書き込む場合を想定する。前提として、物理アドレスPAD[b+a+7:b+a+5]は3、物理アドレスPAD[b+a+4:b+a+3]は2、物理アドレスPAD[b+a+2:a+2]は8、物理アドレスPAD[a+1:1]は0、物理アドレスPAD[0]は0、物理アドレスCPAD[2:0]は0であるものとする。
この場合、図2の情報処理回路MNGERは、物理アドレスPADの値は変化させず、物理アドレスCPAD[2:0]値を0〜7まで+1ずつ変化させ、それぞれのアドレスへ528ビットずつデータを書込み、合計528バイトのデータを書き込む。同様の前提で512バイトのメインデータと16バイトの冗長データを読み出す際、図2の情報処理回路MNGERは、物理アドレスPADの値は変化させず、物理アドレスCPAD[2:0]値を0〜7まで+1ずつ変化させ、それぞれのアドレスから528ビットずつデータを読み出し、合計528バイトのデータを読み出す。
すなわち、この例の場合、図3Aにおいて、各メモリアレイARY0〜ARY527毎に1本のワード線WLに対して1本のビット線BLが選択されると共に、図3Bに示すように、ワード線WLとビット線BLの各交点に位置し、チェインメモリアレイ選択線SLによって選択される2個のチェインメモリアレイCY中の1個が選択されることになる。ただし、この際に、各チェインメモリアレイCY内で選択される相変化メモリセルは8個である。
図17Cは、図2の情報処理回路MNGERが不揮発性メモリ装置にデータ書込みやデータ読み出しを行う際の物理アドレスPADおよび物理アドレスCPADの変化の様子の一例を示す図である。まず、情報処理回路MNGERは、セクタカウントSEC、物理アドレスPADおよび物理アドレスCPAD(=0)を決定し、変数qを0に設定した後(Step41)、この物理アドレスPADが第1物理アドレス領域PRNG1内の物理アドレスかどうかをチェックする(Step42)。この物理アドレスPADが第1物理アドレス領域PRNG1内の物理アドレスではない場合は、Step48を実行する。また、この物理アドレスPADが第1物理アドレス領域PRNG1内の物理アドレスあれば、図17Aで示すアドレス変換を行い(Step43)、不揮発性メモリ装置へのデータ書込みやデータ読み出しを行う(Step44)。
次に、情報処理回路MNGERは、変数qの値がn以上であるかをチェックし(Step45)、変数qの値がnより小さい場合は、物理アドレスCPADへ1を加算した新たな物理アドレスCPADを求め(Step47)、再度、Step43を実行し、その後Step44を実行する。変数qの値がn以上の場合は、セクタカウントSECを1つずつ減少させ、さらに変数qの値を0に設定し(Step46)、次にStep51を実行する。Step51では、セクタカウントSEC値が0以下であるかをチェックし、セクタカウントSEC値が0以下では無い場合、物理アドレスPADへ1を加算した新たな物理アドレスPADを求め(Step52)、再度、Step42へ戻り、処理を続ける。セクタカウントSEC値が0以下であればデータ書込みやデータ読み出しを完了する(Step53)。
Step47で物理アドレスCPADへ1を加算した場合には、図17Aから分かるように、チェインメモリアレイ選択線SLまたはビット線BL(すなわちチェインメモリアレイCYの位置)が変わることになる。
Step48では、情報処理回路MNGERは、図17Bで示すアドレス変換を行い(Step48)、不揮発性メモリ装置へのデータ書込みやデータ読み出しを行う(Step49)。次に、変数qの値がr以上であるかをチェックし(Step50)、変数qの値がrより小さい場合は、物理アドレスCPADへ1を加算した新たな物理アドレスCPADを求め(Step47)、再度、Step48を実行し、その後Step49を実行する。変数qの値がr以上の場合は、Step46以降を実行する。
Step47で物理アドレスCPADへ1を加算した場合には、図17Bから分かるように、メモリセル選択線LY(すなわちチェインメモリアレイCY内のメモリセルの位置)が変わることになる。
なお、Step45のn値や、Step50のr値は、プログラム可能であり、情報処理回路MNGERが管理する最小データサイズや、不揮発性メモリ装置の構成によって、最適な値を選ぶと良い。本実施の形態では例えばn=r=7を用いている。
<アドレス変換テーブルおよび不揮発性メモリ装置の更新動作例>
図18Aおよび図18Bは、図1の制御回路MDLCT0が不揮発性メモリ装置の第1物理アドレス領域PRNG1へデータを書き込む際のアドレス変換テーブルLPTBLの更新方法および不揮発性メモリ装置のデータ更新方法の一例を示す図である。アドレス変換テーブルLPTBLは、情報処理装置CPU_CPから制御回路MDLCT0へ入力された論理アドレスLADを不揮発性メモリ装置の物理アドレスPADへ転換するためのテーブルである。
アドレス変換テーブルLPTBLは、論理アドレスLADに対応した物理アドレスPADと、当該物理アドレスの有効フラグCPVLDおよびレイヤ番号LYCから構成される。また、このアドレス変換テーブルLPTBLはランダムアクセスメモリRAMへ格納される。不揮発性メモリ装置には、物理アドレスPADに対応したデータDATAと、論理アドレスLADと、データ有効フラグDVFと、レイヤ番号LYCが格納される。
図18Aには、時間T0より後に、情報処理装置CPU_CPから制御回路MDLCT0へ論理アドレス領域LRNG1へのライトリクエストWQ0、WQ1、WQ2及びWQ3が入力されたあとの状態が示されている。具体的には、これらのライトリクエストのデータが不揮発性メモリ装置の第1物理アドレス領域PRNG1へ書き込まれた後の時間T1におけるアドレス変換テーブルLPTBL及び不揮発性メモリ装置が格納するアドレス、データおよび有効フラグおよびレイヤ番号LYCが示されている。
ライトリクエストWQ0には論理アドレス値(LAD=0)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA0)が含まれる。ライトリクエストWQ1には論理アドレス値(LAD=1)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA1)が含まれる。ライトリクエストWQ2には論理アドレス値(LAD=2)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA2)が含まれる。ライトリクエストWQ3には論理アドレス値(LAD=3)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA3)が含まれる。ライトリクエストWQ0、WQ1、WQ2及びWQ3が制御回路MDLCT0へ入力された際は、インターフェース回路HOST_IFは、これらのライトリクエストをバッファBUF0へ転送する。
次に、情報処理回路MNGERは、バッファBUF0へ格納されているライトリクエストWQ0、WQ1、WQ2及びWQ3を順に読み出す。続いて、情報処理回路MNGERは、ライトリクエストWQ0、WQ1、WQ2及びWQ3の論理アドレス値(LAD)がそれぞれ0、1、2および3であるため、これらに応じた情報を、メモリ制御回路RAMCを通じてランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLからそれぞれ読み出す。すなわち、アドレス変換テーブルLPTBLの論理アドレスLADの0番地、1番地、2番地および3番地から物理アドレス(PAD)値、有効フラグ(CPVLD)値およびレイヤ番号LYCを読みだす。
最初は、図10Aに示したように、読み出された全ての有効フラグ(CPVLD)値は0であるため、論理アドレスLADの0番地、1番地、2番地および3番地には物理アドレスPADが割り当てられていないことがわかる。次に、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBL1のエントリー番号ENUMの0番から3番までに格納されている書込み物理アドレス値(NXPAD)およびレイヤ番号NXLYCを読み出し、論理アドレスLADの0番地、1番地、2番地および3番地にそれぞれ割り当てる。この例では、エントリー番号ENUMの0番から3番までに格納された書込み物理アドレス値(NXPAD)は、それぞれ10進数で0、1、2、3であり、レイヤ番号NXLYCは、それぞれ0、0、0、0であるものとする。
次に、情報処理回路MNGERは、ライトリクエストWQ0、1、2および3のそれぞれの書込みデータDATA0、1、2および3に対するECCコードECC0、1、2および3を生成し、図12Aに示すデータフォーマットに従い不揮発性メモリ装置への書込みデータWDATA0、1、2および3を生成する。すなわち、書込みデータWDATA0は、書込みデータ(DATA0)からなるメインデータMDATA0とそれに対応する冗長データRDATA0から構成され、書込みデータWDATA1は、書込みデータ(DATA1)からなるメインデータMDATA1とそれに対応する冗長データRDATA1から構成される。同様に、書込みデータWDATA2は、書込みデータ(DATA2)からなるメインデータMDATA2とそれに対応する冗長データRDATA2から構成され、書込みデータWDATA3は、書込みデータ(DATA3)からなるメインデータMDATA3とそれに対応する冗長データRDATA3から構成される。
情報処理回路MNGERにより、書込みデータWDATA0、1、2および3は、不揮発性メモリ装置の4つの物理アドレスへそれぞれ書き込まれる。冗長データRDATA0、1、2および3には、それぞれECCコードECC0、1、2および3が含まれる。さらに、共通に、データ反転フラグ値(INVFLG=0)、ライトフラグ値(WTFLG=0)、ECCフラグ値(ECCFLG=0)、ステート情報値(STATE=1)、エリア情報値(AREA=1)、データ書込みレイヤ情報値(LYN=1)、バッドブロック情報値(BADBLK=0)、予備領域値(RSV=0)が含まれる。
なお、論理アドレス領域LRNG1へのライトリクエストであれば、エリア情報値(AREA)は1となり、論理アドレス領域LRNG2へのライトリクエストであれば、エリア情報値(AREA)は2となる。また、書込み物理アドレステーブルNXPADTBL1から読み出したレイヤ番号NXLYC値が0(実際には“10”)の場合、データ書込みレイヤ情報LYN[n:0]の中の、LYN[n:1]が0、LYN[0]が1となり、チェインメモリアレイCY内の相変化メモリセルCL0へデータが書きこまれることを示す。
さらに、情報処理回路MNGERは、書込み物理アドレス値(NXPAD)の10進数で0、1、2および3に従い、調停回路ARBとメモリ制御回路NVCT10〜NVCT17を通じて不揮発性メモリ装置NVM10〜NVM17に書込みを行う。すなわち、不揮発性メモリ装置NVMの物理アドレスPADの0番地へは、ライトリクエストWQ0に対応する書込みデータWDATA0、論理アドレス値(LAD=0)、およびレイヤ番号(LYC=0)を書込み、データ有効フラグ(DVF)値として1を書き込む。不揮発性メモリ装置NVMの物理アドレスPADの1番地へは、ライトリクエストWQ1に対応する書込みデータWDATA1、論理アドレス値(LAD=1)、およびレイヤ番号(LYC=0)を書込み、データ有効フラグ(DVF)値として1を書き込む。同様に、物理アドレスPADの2番地へは、書込みデータWDATA2、論理アドレス値(LAD=2)、データ有効フラグ(DVF=1)、レイヤ番号(LYC=0)を書込み、物理アドレスPADの3番地へは、書込みデータWDATA3、論理アドレス値(LAD=3)、データ有効フラグ(DVF=1)、レイヤ番号(LYC=0)を書き込む。
最後に、情報処理回路MNGERは、メモリ制御回路RAMCを通じてランダムアクセスメモリRAMに保存されているアドレス変換テーブルLPTBLを更新する。すなわち、論理アドレスLADの0番地へは割り当て後の物理アドレス(PAD=0)、有効フラグ(CPVLD=1)およびレイヤ番号(LYC=0)を書込み、論理アドレスLADの1番地へは割り当て後の物理アドレス(PAD=2)、有効フラグ(CPVLD=1)およびレイヤ番号(LYC=0)を書き込む。論理アドレスLADの2番地へは割り当て後の物理アドレス(PAD=2)、有効フラグ(CPVLD=1)およびレイヤ番号(LYC=0)を書込み、論理アドレスLADの3番地へは割り当て後の物理アドレス(PAD=3)、有効フラグ(CPVLD=1)およびレイヤ番号(LYC=0)を書き込む。
図18Bには、時間T1より後に、情報処理装置CPU_CPから制御回路MDLCT0へライトリクエストWQ4、WQ5、WQ6、WQ7、WQ8およびWQ9が入力された後の状態が示されている。具体的には、これらのライトリクエストのデータが不揮発性メモリ装置の第1物理アドレス領域PRNG1へ書き込まれた後の時間T2において、アドレス変換テーブルLPTBLおよび不揮発性メモリ装置に格納されるアドレス、データおよび有効フラグが示されている。
ライトリクエストWQ4には、論理アドレス値(LAD=0)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA4)が含まれる。ライトリクエストWQ5には、論理アドレス値(LAD=1)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA5)が含まれる。ライトリクエストWQ6には、論理アドレス値(LAD=4)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA6)が含まれる。ライトリクエストWQ7には、論理アドレス値(LAD=5)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA7)が含まれる。ライトリクエストWQ8には、論理アドレス値(LAD=2)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA8)が含まれる。ライトリクエストWQ9には、論理アドレス値(LAD=3)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA9)が含まれる。ライトリクエストWQ4、WQ5、WQ6、WQ7、WQ8およびWQ9が制御回路MDLCT0へ入力された際には、インターフェース回路HOST_IFは、これらのライトリクエストをバッファBUF0へ転送する。
次に、情報処理回路MNGERは、バッファBUF0へ格納されているライトリクエストWQ4、WQ5、WQ6、WQ7、WQ8およびWQ9を順に読み出す。続いて、情報処理回路MNGERは、図12Aに示すデータフォーマットに従い、ライトリクエストWQ4、5、6、7、8および9にそれぞれ対応する書込みデータWDATA4、5、6、7、8および9を生成する。書込みデータWDATA4は、書込みデータDATA4からなるメインデータMDATA4と冗長データRDATA4から構成され、書込みデータWDATA5は書込みデータDATA5からなるメインデータMDATA5と冗長データRDATA5から構成される。書込みデータWDATA6は書込みデータDATA6からなるメインデータMDATA6と冗長データRDATA6から構成され、書込みデータWDATA7は書込みデータDATA7からなるメインデータMDATA7と冗長データRDATA7から構成される。書込みデータWDATA8は書込みデータDATA8からなるメインデータMDATA8と冗長データRDATA8から構成され、書込みデータWDATA9は書込みデータDATA9からなるメインデータMDATA9と冗長データRDATA9から構成される。
冗長データRDATA4、5、6、7、8および9には、それぞれ、書込みデータDATA4、5、6、7、8および9を用いて情報処理回路MNGERによって生成されたECCコードECC4、5、6、7、8および9が含まれる。さらに、共通に、データ反転フラグ値(INVFLG=0)、ライトフラグ値(WTFLG=0)、ECCフラグ値(ECCFLG=0)、ステート情報値(STATE=1)、エリア情報値(AREA=1)、バッドブロック情報値(BADBLK=0)、予備領域値(RSV=0)が含まれる。
情報処理回路MNGERにより、書込みデータWDATA4、5、6、7、8および9は、不揮発性メモリ装置の6つの物理アドレスへそれぞれ書き込まれる。この際に、情報処理回路MNGERは、ライトリクエストWQ4、5、6、7、8および9の論理アドレス値(LAD)がそれぞれ0、1、4、5、2および3であるため、これらに応じた情報を、メモリ制御回路RAMCを通じてランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLからそれぞれ読み出す。すなわち、アドレス変換テーブルLPTBLの論理アドレスLADの0番地、1番地、4番地、5番地、2番地および3番地から、それぞれ物理アドレス値(PAD)、有効フラグ値(CPVLD)およびレイヤ番号LYCを読みだす。
図18Aのアドレス変換テーブルLPTBLにおいて、論理アドレスLADの0番地の物理アドレス値(PAD)は0、有効フラグ値(CPVLD)は1、レイヤ番号LYCは0であり、論理アドレスLADの0番地へのライトリクエストWQ4に伴い既に書き込まれている物理アドレスPADの0番地のデータを無効にする必要がある。そこで、情報処理回路MNGERは、不揮発性メモリ装置における物理アドレスPADの0番地の有効フラグ値(DVF)を0に設定する(図18Aの101→図18Bの111)。同様に、図18Aにおいて、論理アドレスLADの1番地の物理アドレス値(PAD)は1、有効フラグ値(CPVLD)は1、レイヤ番号LYCは0であり、ライトリクエストWQ5に伴い物理アドレスPADの1番地のデータを無効にする必要がある。そこで、情報処理回路MNGERは、物理アドレスPADの1番地の有効フラグ値(DVF)を0に設定する(図18Aの102→図18Bの112)。
また、図18Aのアドレス変換テーブルLPTBLにおいて、ライトリクエストWQ6に伴う論理アドレスLADの4番地の物理アドレス値(PAD)は0、有効フラグ値(CPVLD)は0、レイヤ番号LYCは0であり、論理アドレスLADの4番地には、物理アドレスPADが割り当てられていないことがわかる。同様に、図18Aにおいて、ライトリクエストWQ7に伴う論理アドレスLADの5番地の物理アドレス値(PAD)は0、有効フラグ値(CPVLD)は0、レイヤ番号LYCは0であり、論理アドレスLADの5番地には、物理アドレスPADが割り当てられていないことがわかる。
一方、図18Aのアドレス変換テーブルLPTBLにおいて、論理アドレスLADの2番地の物理アドレス値(PAD)は2、有効フラグ値(CPVLD)は1、レイヤ番号LYCは0であり、論理アドレスLADの2番地へのライトリクエストWQ8に伴い既に書き込まれている物理アドレスPADの2番地のデータを無効にする必要がある。そこで、情報処理回路MNGERは、物理アドレスPADの2番地の有効フラグ値(DVF)を0に設定する(図18Aの103→図18Bの113)。同様に、図18Aにおいて、論理アドレスLADの3番地の物理アドレス値(PAD)は3、有効フラグ値(CPVLD)は1、レイヤ番号LYCは0であり、ライトリクエストWQ9に伴い物理アドレスPADの3番地のデータを無効にする必要がある。そこで、情報処理回路MNGERは、物理アドレスPADの6番地の有効フラグ値(DVF)を0に設定する(図18Aの104→図18Bの114)。
次に、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBL1のエントリー番号ENUMの4番から9番までに格納されている書込み物理アドレス値(NXPAD)およびレイヤ番号NXLYCを読み出し、論理アドレスLADの0番地、1番地、4番地、5番地、2番地および3番地にそれぞれ割り当てる。この例では、エントリー番号ENUMの4番から9番までに格納された書込み物理アドレス値(NXPAD)は、それぞれ4、5、6、7、8および9であり、レイヤ番号NXLYCは、それぞれ1、1、1、1、1および1であるものとする。
続いて、情報処理回路MNGERは、書込み物理アドレス値(NXPAD)の4、5、6、7、8および9に従い、調停回路ARBとメモリ制御回路NVCT10〜NVCT17を通じて不揮発性メモリ装置NVM10〜NVM17に書込みを行う。すなわち、不揮発性メモリ装置NVMの物理アドレスPADの4番地へは、ライトリクエストWQ4に対応する書込みデータWDATA4、論理アドレス値(LAD=0)、およびレイヤ番号(LYC=1)を書込み、データ有効フラグ(DVF)値として1を書き込む。不揮発性メモリ装置NVMの物理アドレスPADの5番地へは、ライトリクエストWQ5に対応する書込みデータWDATA5、論理アドレス値(LAD=1)、およびレイヤ番号(LYC=1)を書込み、データ有効フラグ(DVF)値として1を書き込む。
また、情報処理回路MNGERは、不揮発性メモリ装置NVMの物理アドレスPADの6番地へは、ライトリクエストWQ6に対応する書込みデータWDATA6、論理アドレス値(LAD=4)、およびレイヤ番号(LYC=1)を書込み、データ有効フラグ(DVF)値として1を書き込む。同様に、不揮発性メモリ装置NVMの物理アドレスPADの7番地へは、ライトリクエストWQ7に対応する書込みデータWDATA7、論理アドレス値(LAD=5)、およびレイヤ番号(LYC=1)を書込み、データ有効フラグ(DVF)値として1を書き込む。
さらに、情報処理回路MNGERは、不揮発性メモリ装置NVMの物理アドレスPADの8番地へは、ライトリクエストWQ8に対応する書込みデータWDATA8、論理アドレス値(LAD=2)、およびレイヤ番号(LYC=1)を書込み、データ有効フラグ(DVF)値として1を書き込む。同様に、不揮発性メモリ装置NVMの物理アドレスPADの9番地へは、ライトリクエストWQ9に対応する書込みデータWDATA9、論理アドレス値(LAD=3)、およびレイヤ番号(LYC=1)を書込み、データ有効フラグ(DVF)値として1を書き込む。
図19Aおよび図19Bは、図1の制御回路MDLCT0が不揮発性メモリ装置の第2物理アドレス領域PRNG2へデータを書き込む際のアドレス変換テーブルLPTBLの更新方法および不揮発性メモリ装置のデータ更新方法の一例を示す図である。ここでは、図18Aおよび図18Bの場合と同様に、アドレス変換テーブルLPTBLおよび不揮発性メモリ装置NVMの状態が示されている。アドレス変換テーブルLPTBLは、論理アドレスLADに対応した物理アドレスPADと、当該物理アドレスの有効フラグCPVLDおよびレイヤ番号LYCから構成される。また、このアドレス変換テーブルLPTBLはランダムアクセスメモリRAMへ格納される。不揮発性メモリ装置には、物理アドレスPADに対応したデータDATAと、論理アドレスLADと、データ有効フラグDVFと、レイヤ番号LYCが格納される。ここでは、レイヤ番号LYCは、全て“0”であるため図面からは省略している。
図19Aは、時間T0より後に、情報処理装置CPU_CPから制御回路MDLCT0へ、論理アドレス領域LRNG2へのライトリクエストWQ0、WQ1、WQ2およびWQ3が入力された後の状態が示されている。具体的には、これらのライトリクエストのデータが不揮発性メモリ装置の第2物理アドレス領域PRNG2へ書き込まれた後の時間T1における、アドレス変換テーブルLPTBLおよび不揮発性メモリ装置に格納されるアドレス、データおよび有効フラグが示されている。
ライトリクエストWQ0には、16進数で論理アドレス値(LAD=“800000”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA0)が含まれる。ライトリクエストWQ1には、16進数で論理アドレス値(LAD=“800001”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA1)が含まれる。ライトリクエストWQ2には、16進数で論理アドレス値(LAD=“800002”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA2)が含まれる。ライトリクエストWQ3には、16進数で論理アドレス値(LAD=“800003”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA3)が含まれる。
ライトリクエストWQ0、WQ1、WQ2およびWQ3が制御回路MDLCT0へ入力された際、インターフェース回路HOST_IFは、これらのライトリクエストをバッファBUF0へ転送する。次に、情報処理回路MNGERは、バッファBUF0へ格納されているライトリクエストWQ0、WQ1、WQ2およびWQ3を順に読み出す。この際に、情報処理回路MNGERは、メモリ制御装置RAMCを通じてランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLを参照し、ライトリクエストWQ0、1、2および3に対応する各種情報を読み出す。具体的には、アドレス変換テーブルLPTBLの論理アドレスLADの“800000”番地、“800001”番地、“800002”番地および“800003”番地からそれぞれ物理アドレス値(PAD)および有効フラグCPVLDを読み出す。
最初は、図10Aのように読み出された全ての有効フラグCPVLDは0であるため、論理アドレスLADの“800000”番地、“800001”番地、“800002”番地および“800003”番地には物理アドレスPADが割り当てられていないことが分かる。次に、情報処理回路MNGERは、ライトリクエストWQ0、1、2および3に対応して、図12Aに示すデータフォーマットに従い、不揮発性メモリ装置への書込みデータWDATA0、1、2および3を生成する。書込みデータWDATA0は、書込みデータDATA0からなるメインデータMDATA0とその冗長データRDATA0から構成され、書込みデータWDATA1は書込みデータDATA1からなるメインデータMDATA1とその冗長データRDATA1から構成される。書込みデータWDATA2は書込みデータDATA2からなるメインデータMDATA2とその冗長データRDATA2から構成され、書込みデータWDATA3は書込みデータDATA3からなるメインデータMDATA3とその冗長データRDATA3から構成される。
冗長データRDATA0、1、2および3には、それぞれ、書込みデータDATA0、1、2および3を用いて情報処理回路MNGERによって生成されたECCコードECC0、1、2および3が含まれる。さらに共通に、データ反転フラグ値(INVFLG=0)、ライトフラグ値(WTFLG=0)、ECCフラグ値(ECCFLG=0)、ステート情報値(STATE=1)、エリア情報値(AREA=1)、バッドブロック情報値(BADBLK=0)、予備領域値(RSV=0)が含まれる。
情報処理回路MNGERにより、書込みデータWDATA0、1、2および3は、不揮発性メモリ装置の4つの物理アドレスへそれぞれ書き込まれる。この際に、情報処理回路MNGERは、ライトリクエストWQ0〜WQ3に応じて書込み物理アドレステーブルNXPADTBL2のエントリー番号ENUMの例えば16番から19番までに格納されている書込み物理アドレスNXPADを読み出し、それらを各論理アドレスに割り当てる。ここでは、当該書込み物理アドレス値(NXPAD)が、それぞれ、“2800000”、“2800001”、“2800002”および“2800003”であるものとして、情報処理回路MNGERは、これらを、論理アドレスLADの“800000”番地、“800001”番地、“800002”番地および“800003”番地にそれぞれ割り当てる。
さらに、情報処理回路MNGERは、当該書込み物理アドレス値(NXPAD)に従い、調停回路ARBとメモリ制御回路NVCT10〜NVCT17を通じて、不揮発性メモリ装置NVM10〜NVM17に書込みを行う。具体的には、不揮発性メモリ装置の物理アドレスPADの“2800000”番地へはライトリクエストWQ0に対応する書込みデータWDATA0、論理アドレス値(LAD=“800000”)を書込み、データ有効フラグDVFとして1を書き込む。不揮発性メモリ装置の物理アドレスPADの“2800001”番地へはライトリクエストWQ1に対応する書込みデータWDATA1、論理アドレス値(LAD=“800001”)を書込み、データ有効フラグDVFとして1を書き込む。
また、情報処理回路MNGERは、不揮発性メモリ装置の物理アドレスPADの“2800002”番地へはライトリクエストWQ2に対応する書込みデータWDATA2、論理アドレス値(LAD=“800002”)を書込み、データ有効フラグDVFとして1を書き込む。同様に、不揮発性メモリ装置の物理アドレスPADの“2800003”番地へはライトリクエストWQ3に対応する書込みデータWDATA3、論理アドレス値(LAD=“800003”)を書込み、データ有効フラグDVFとして1を書き込む。
最後に、情報処理回路MNGERは、メモリ制御回路RAMCを通じ、ランダムアクセスメモリRAMに保存されているアドレス変換テーブルLPTBLを更新する。具体的には、アドレス変換テーブルLPTBLにおける論理アドレスLADの“800000”番地へは、物理アドレス値(PAD=“2800000”)および有効フラグ値(CPVLD=1)を書き込む。また、論理アドレスLADの“800001”番地へは物理アドレス値(PAD=“2800001”)および有効フラグ値(CPVLD=1)を書き込む。同様に、論理アドレスLADの“800002”番地へは物理アドレス値(PAD=“2800002”)および有効フラグ値(CPVLD=1)を書込み、論理アドレスLADの“800003”番地へは物理アドレス値(PAD=“2800003”)および有効フラグ値(CPVLD=1)を書き込む。
図19Bには、時間T1より後に、情報処理装置CPU_CPから制御回路MDLCT0へ、ライトリクエストWQ4、WQ5、WQ6、WQ7、WQ8およびWQ9が入力された後の状態が示される。具体的には、これらのライトリクエストのデータが不揮発性メモリ装置の第2物理アドレス領域PRNG2へ書き込まれた後の時間T2における、アドレス変換テーブルLPTBLおよび不揮発性メモリ装置に格納されるアドレス、データおよび有効フラグが示されている。
ライトリクエストWQ4には、論理アドレス値(LAD=“800000”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA4)が含まれる。ライトリクエストWQ5には、論理アドレス値(LAD=“800001”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA5)が含まれる。ライトリクエストWQ6には、論理アドレス値(LAD=“800004”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA6)が含まれる。ライトリクエストWQ7には論理アドレス値(LAD=“800005”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA7)が含まれる。ライトリクエストWQ8には、論理アドレス値(LAD=“800002”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA8)が含まれる。ライトリクエストWQ9には、論理アドレス値(LAD=“800003”)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、書込みデータ(DATA9)が含まれる。
ライトリクエストWQ4、WQ5、WQ6、WQ7、WQ8およびWQ9が制御回路MDLCT0へ入力された際、インターフェース回路HOST_IFは、これらのライトリクエストをバッファBUF0へ転送する。次に、情報処理回路MNGERは、バッファBUF0へ格納されているライトリクエストWQ4、WQ5、WQ6、WQ7、WQ8およびWQ9を順に読み出す。続いて、情報処理回路MNGERは、図12Aに示すデータフォーマットに従い、ライトリクエストWQ4、5、6、7、8および9にそれぞれ対応する不揮発性メモリ装置への書込みデータWDATA4、5、6、7、8および9を生成する。
書込みデータWDATA4は、書込みデータDATA4からなるメインデータMDATA4とその冗長データRDATA4から構成され、書込みデータWDATA5は、書込みデータDATA5からなるメインデータMDATA5とその冗長データRDATA5から構成される。書込みデータWDATA6は、書込みデータDATA6からなるメインデータMDATA6とその冗長データRDATA6から構成され、書込みデータWDATA7は、書込みデータDATA7からなるメインデータMDATA7とその冗長データRDATA7から構成される。書込みデータWDATA8は、書込みデータDATA8からなるメインデータMDATA8とその冗長データRDATA8から構成され、書込みデータWDATA9は、書込みデータDATA9からなるメインデータMDATA9とその冗長データRDATA9から構成される。
冗長データRDATA4、5、6、7、8および9には、それぞれ、書込みデータDATA4、5、6、7、8および9を用いて情報処理回路MNGERによって生成されたECCコードECC4、5、6、7、8および9が含まれる。さらに、共通に、データ反転フラグ値(INVFLG=0)、ライトフラグ値(WTFLG=0)、ECCフラグ値(ECCFLG=0)、ステート情報値(STATE=1)、エリア情報値(AREA=1)、バッドブロック情報値(BADBLK=0)、予備領域値(RSV=0)が含まれる。
情報処理回路MNGERにより、書込みデータWDATA4、5、6、7、8および9は、不揮発性メモリ装置の6つの物理アドレスへそれぞれ書き込まれる。この際に、情報処理回路MNGERは、メモリ制御回路RAMCを通じてランダムアクセスメモリRAMに保存されているアドレス変換テーブルLPTBLを参照し、ライトリクエストWQ4、5、6、7、8および9に対応する各種情報をそれぞれ読み出す。具体的には、アドレス変換テーブルLPTBLの論理アドレスLADの“800000”番地、“800001”番地、“800004”番地、“800005”番地、“800002”番地および“800003”番地から、それぞれ物理アドレスPADおよび有効フラグCPVLDを読み出す。
図19Aのアドレス変換テーブルLPTBLにおいて、論理アドレスLADの“800000”番地の物理アドレス値(PAD)は“2800000”、有効フラグ値(CPVLD)は1であり、論理アドレスLADの“800000”番地へのライトリクエストWQ4に伴い、既に書き込まれている物理アドレスのデータを無効にする必要がある。そこで、情報処理回路MNGERは、物理アドレスPADの“2800000”番地の有効フラグDVFを0に設定する(図19Aの201→図19Bの211)。同様に、図19Aの論理アドレスLADの“800001”番地の物理アドレス値(PAD)は“2800001”、有効フラグ値(CPVLD)は1であり、ライトリクエストWQ5に伴い、既に書き込まれている物理アドレスのデータを無効にする必要がある。そこで、情報処理回路MNGERは、物理アドレスPADの“2800001”番地の有効フラグDVFを0に設定する(図19Aの202→図19Bの212)。
一方、図19Aのアドレス変換テーブルLPTBLにおいて、ライトリクエストWQ6に伴う論理アドレスLADの“800004”番地の物理アドレス値(PAD)は0、有効フラグ値(CPVLD)は0であり、論理アドレスLAD“800004”番地には、物理アドレスPADが割り当てられていないことが分かる。同様に、ライトリクエストWQ7に伴う論理アドレスLADの“800005”番地の物理アドレス値(PAD)は0、有効フラグ値(CPVLD)は0であり、論理アドレスLADの“800005”番地には、物理アドレスPADが割り当てられていないことが分かる。
また、図19Aのアドレス変換テーブルLPTBLにおいて、論理アドレスLADの“800002”番地の物理アドレス値(PAD)は“2800002”、有効フラグ値(CPVLD)は1であり、論理アドレスLADの“800002”番地へのライトリクエストWQ8に伴い既に書き込まれている物理アドレスを無効にする必要がある。そこで、情報処理回路MNGERは、物理アドレスPADの“2800002”番地の有効フラグ値(DVF)を0に設定する(図19Aの203→図19Bの213)。同様に、図19Aにおける論理アドレスLADの“800003”番地の物理アドレス値(PAD)は“2800003”、有効フラグ値(CPVLD)は1であり、ライトリクエストWQ9に伴い既に書き込まれている物理アドレスのデータを無効にする必要がある。そこで、情報処理回路MNGERは、物理アドレスPADの“2800003”番地の有効フラグ値(DVF)を0に設定する(図19Aの204→図19Bの214)。
次に、情報処理回路MNGERは、ライトリクエストWQ4〜WQ9に応じて書込み物理アドレステーブルNXPADTBL2のエントリー番号ENUMの20番から25番までに格納されている書込み物理アドレスNXPADを読み出し、それらを各論理アドレスに割り当てる。ここでは、当該書込み物理アドレス値(NXPAD)が、それぞれ“2800004”、“2800005”、“2800006”、“2800007”、“2800008”および“2800009”であるものとする。そして、それらが論理アドレスLADの“800000”番地、“800001”番地、“800004”番地、“800005”番地、“800002”番地および“800003”番地にそれぞれ割り当てられる。
続いて、情報処理回路MNGERは、これらの物理アドレスの割り当てに従って、調停回路ARBおよびメモリ制御回路NVCT10〜NVCT17を通じて不揮発性メモリ装置NVM10〜NVM17に書込みを行う。具体的には、不揮発性メモリ装置NVMの物理アドレスPADの“2800004”番地へはライトリクエストWQ4に対応する書込みデータWDATA4、論理アドレス値(LAD=“800000”)が書き込まれ、データ有効フラグDVFに1が書き込まれる。物理アドレスPADの“2800005”番地へはライトリクエストWQ5に対応する書込みデータWDATA5、論理アドレス値(LAD=“800001”)が書き込まれ、データ有効フラグDVFに1が書き込まれる。
同様にして、物理アドレスPADの“2800006”番地へは、ライトリクエストWQ6に対応する書込みデータWDATA6、論理アドレス値(LAD=“800004”)が書き込まれ、データ有効フラグDVFに1が書き込まれる。物理アドレスPADの“2800007”番地へは、ライトリクエストWQ7に対応する書込みデータWDATA7、論理アドレス値(LAD=“800005”)が書き込まれ、データ有効フラグDVFに1が書き込まれる。物理アドレスPADの“2800008”番地へは、ライトリクエストWQ8に対応する書込みデータWDATA8、論理アドレス値(LAD=“800002”)が書き込まれ、データ有効フラグDVFに1が書き込まれる。物理アドレスPADの“2800009”番地へは、ライトリクエストWQ9に対応する書込みデータWDATA9、論理アドレス値(LAD=“800003”)が書き込まれ、データ有効フラグDVFに1が書き込まれる。そして、最後に、情報処理回路MNGERは、メモリ制御回路RAMCを通じ、ランダムアクセスメモリRAMに保存されているアドレス変換テーブルLPTBLを図19Bに示されるような状態に更新する。
<メモリモジュール(半導体装置)の読み出し動作1>
図20Aは、図1の情報処理装置CPU_CPからメモリモジュールNVMMD0へリードリクエスト(RQ)が入力された際に、メモリモジュールNVMMD0が行うデータ読み出し動作の一例を示すフロー図である。まず、情報処理装置CPU_CPから論理アドレス値(例えばLAD=0)、データ読み出し命令(RD)、セクタカウント値(SEC=1)が含まれるリードリクエスト(RQ)が制御回路MDLCT0へ入力される。これを受けて、インターフェース回路HOST_IFは、リードリクエスト(RQ)に埋め込まれているクロック情報を取り出し、シリアルデータ化されたリードリクエスト(RQ)をパラレルデータへ変換し、バッファBUF0および情報処理回路MNGERへ転送する(Step61)。
次に、情報処理回路MNGERは、論理アドレス値(LAD=0)、データ読み出し命令(RD)およびセクタカウント値(SEC=1)を解読し、ランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLを参照して、各種情報を読み出す。具体的には、アドレス変換テーブルLPTBLにおいて、論理アドレスLADの0番地に格納されている物理アドレス値PAD(例えばPAD=0)と、この物理アドレスPADに対応した有効フラグCPVLDおよびレイヤ番号LYCを読み出す(Step62)。次に、読み出した有効フラグCPVLDが1であるかどうかをチェックする(Step63)。
もし、有効フラグCPVLDが0の場合、情報処理回路MNGERは、当該論理アドレス値(LAD=0)には物理アドレスPADが割り当てられていないことを認識する。この場合、不揮発性メモリ装置NVMからデータを読み出すことができないため、情報処理回路MNGERは、エラーが発生したことをインターフェース回路HOST_IFを通じて情報処理装置CPU_CPへ伝える(Step75)。
この実施の形態のメモリモジュールNVMMD0は、通常モード、消去優先モードおよび読出し優先モードを有している。これらのモードは、特に制限されないが、情報処理装置CPU_CPからメモリモジュールNVMMD0へ設定される。図20Aのフローは、メモリモジュールNVMMD0が通常モードあるいは消去優先モードの場合を示している。また、図11Aから図11Cにおいて説明した様に、SSDコンフィグレーション情報(SDCFG)のダミーチェインメモリアレイ指定情報XYDMCによりダミーチェインメモリアレイDCYを消去領域の周辺に設定することが指定されており、ライト方法選択情報WRTFLGにより書込み方法が指定されている。
Step63において、読み出した有効フラグCPVLDが1であると判断した場合、消去領域の一括消去が、Step64において行われる。Step64において、消去領域の一括消去が完了すると、次にStep65が実行される。なお、Step64において消去される消去領域は、読出しを行う領域とは異なる様に調停回路ARBによって調停されている。また、このとき、一括消去される消去領域は、ダミーチェインメモリアレイ指定情報XYDMCにより指定されたダミーチェインメモリアレイDCYを除く領域である。すなわち、一括消去される消去領域に対して物理的に隣接した周辺に設置されているダミーチェインメモリアレイDCYに対しては消去動作が行われない。
情報処理回路MNGERによって、当該論理アドレス値(LAD=0)が、物理アドレス値PAD(PAD=0)が対応していると判断されると、Step64における消去操作が完了した後、Step65が実行される。論理アドレス値(LAD=0)に対応している物理アドレス値PAD(PAD=0)が、第1物理アドレス領域PRNG1内のアドレスであれば、物理アドレス値PAD(PAD=0)と、物理アドレス値CPAD(CPAD=0)と、レイヤ番号LYCは、図17Aに示した不揮発性メモリ装置NVMのチップアドレスCHIPAと、バンクアドレスBKと、ロウアドレスROWと、カラムアドレスCOLへ変換される。一方、論理アドレス値(LAD=0)に対応している物理アドレス値(PAD=0)が、第2物理アドレス領域PRNG2内のアドレスであれば、物理アドレス値PAD(PAD=0)と、物理アドレス値CPAD(CPAD=0)は、図17Bに示した不揮発性メモリ装置NVMのチップアドレスCHIPAと、バンクアドレスBKと、ロウアドレスROWと、カラムアドレスCOLへ変換される。さらに、物理アドレス値PAD(PAD=0)と、物理アドレス値CPADと、レイヤ番号LYCとから変換された不揮発性メモリ装置NVMのチップアドレスCHIPAと、バンクアドレスBKと、ロウアドレスROWおよびカラムアドレスCOLは、調停回路ARBとおよびメモリ制御回路NVCTを通じて不揮発性メモリ装置NVMへ入力される。そして、図17Cに示した動作にしたがって、不揮発性メモリ装置NVMに格納されたデータ(DATA0)が読み出される。データ(DATA0)には、不揮発性メモリ装置NVMのメインデータ領域へ格納されたメインデータMDATA0と冗長データ領域へ格納された冗長データRDATA0が含まれ、さらに冗長データRDATA0には、ライトフラグWTFLGおよびECCコードECC0が含まれる(Step65)。
次に、情報処理回路MNGERは、不揮発性メモリNVMへ格納されているSSDコンフィグレーション情報(SDCFG)内の論理アドレス領域LRNGを読み出す。そして、論理アドレス値(LAD=0)がどの論理アドレス領域LRNGに属するかを調べる。さらに、読出した冗長データRDATA0に含まれているところのライトフラグWTFLGの値を、Step66において、チェックする。すなわち、図12A(図11Aから図11Cも参照)において述べた様に、ライトフラグWTFLGの値は、書込みを行った際の書込み方法を示しており、0〜3およびこれらの数値の組み合わせのいずれかとなっている。Step66において、書込みを行った際の書込み方法を判定する。
チェックの結果として、ライトフラグWTFLGの値が0であれば、次にStep72が実行され、値が1であれば、次にStep67が実行され、値が2であれば、次にStep68が実行され、値が3であれば、次にStep70が実行される。同様に、ライトフラグWTFLGの値が2_1であれば、次にStep69が実行され、値が3_2であれば、次にStep71が実行される。
ライトフラグWTFLGが0であれば、データは、加工せずに不揮発性メモリ装置NVMに書き込まれていることになるため、Step72では、読出されたデータ(メインデータMDATA0)をStep73へ送る。ライトフラグWTFLGが1であれば、データは反転して書き込まれているため、Step67において、読出されたデータ(メインデータMDATA0)を反転して、Spet73へ送る。また、ライトフラグWTFLGが2であれば、データは圧縮されて書き込まれていることになるため、Step68において、読出されたデータ(メインデータMDATA0)を伸張(Decomp)して、Step73へ送る。また、ライトフラグWTFLGが3であれば、データはコード(code)化して書き込まれていることになるので、Step70において、読出されたデータ(メインデータMDATA0)をデコード(Decode)して、Step73へ送る。
ライトフラグWTFLGが2_1であれば、データは圧縮され、反転されて書き込まれていることになるので、Step69において、読出されたデータ(メインデータMDATA0)を反転し、伸張(Decomp)して、Step73へ送る。また、ライトフラグWTFLGが3_2であれば、読出されたデータは、コード化され、圧縮されているため、Step71において、読出されたデータ(メインデータMDATA0)に対して伸張(Decomp)を行い、更にデコード(Decode)して、Step73へ送る。
この様に、読出されたライトフラグWTFLGの値に対応した処理が、Step67〜72において実行され、書込み方法に対応した処理が適用されたメインデータ(MDATA0)およびECCコード(CC0)が得られる。Step73において、情報処理回路MNGERは、ECCコード(ECC0)を利用して、メインデータ(MDATA)にエラーがあるかをチェックし、エラーがあれば訂正を行う。エラーがない場合、あるいは訂正された場合、エラーの無いデータは、インターフェース回路HOST_IFを通じて情報処理装置CPU_CPへ転送される(Step74)。
特に制限されないが、読出しの動作をする際、読出し動作の対象となる領域(消去領域)の周辺(物理的に近接している領域)に配置されているダミーチェインメモリアレイDCYに対しては、読出し動作を実行しない。これにより、読出し動作の際に選択するセルの数を低減することが可能となり、読出し動作の高速化を図ることが可能となる。
<メモリモジュール(半導体装置)の読み出し動作2>
図20Bは、読出し動作の他の例を示すフロー図である。図20Bは、図20Aと類似しているため、相違する点を主に説明する。
図20Bにおいて、Step81〜83、Step97は、図20AのStep61〜63、Step75に相当する。また、図20Bにおいて、Step88〜96は、図20AのStep66〜96に相当する。そのため、これらのStepについては、説明を省略する。
図20Bは、メモリモジュールNVMMD0に対して読出し優先モードが設定されている場合を示している。読出し動作において、Step83により、有効であると判定された判定された場合、消去動作が実行されているか否かが、Step84において判定される。消去動作が実行されていると、Step84において判定された場合、読出し優先モードが設定されているため、Step85において、消去動作は一時的に停止させられる。Step85において、消去動作を一時的に停止した後、Step86において、図20Aに示したStep65と同様に、不揮発性メモリ装置NVMに格納されたデータ(DATA1)を読み出す。データ(DATA1)には、不揮発性メモリ装置NVMのメインデータ領域へ格納されたメインデータMDATA1と、冗長データ領域へ格納された冗長データRDATA1が含まれ、さらに冗長データRDATA1には、ライトフラグWTFLGおよびECCコードECC1が含まれる。
メインデータMDATA1および冗長データRDATA1を読み出した後、Step87において、一時的に停止していた消去動作を再開させる。また、Step84において、消去動作が実行されていないと判定された場合も、Step97において、Step86と同様に、メインデータ(MDATA1)および冗長データ(RDATA1)を読出す。
Step86あるいは97において読出されたメインデータ(MDATA1)および冗長データ(RDATA1)は、Step88に送られ、図20Aで述べた処理と同様に処理が行われる。
この実施の形態においては、消去動作が一次的に停止させられるため、読み出し動作のレスポンス時間を短くすることが可能となる。また、この実施の形態においても、読出しの動作をする際、読出し動作の対象となる領域(消去領域)の周辺(物理的に近接している領域)に配置されているダミーチェインメモリアレイDCYに対しては、読出し動作を実行しない。これにより、読出し動作の際に選択するセルの数を低減することが可能となり、読出し動作の高速化を図ることが可能となる。
また、メモリモジュールNVMMD0に対して読出し優先モードを設定する例を説明したが、この代わりに、メモリモジュールNVMMD0に供給するコマンドとして、読出し優先コマンドを用意する様にしてもよい。この場合には、読出し優先コマンドが供給されたときに、図20Bのフローが実行されるように、メモリモジュールNVMMD0を構成すればよい。
<ライト方法選択情報に応じたメモリモジュール(半導体装置)の書込み動作1>
図21Aは、図11A〜図11Cに示したSSDコンフィグレーション情報(SDCGF)を例として、ライト方法選択情報(WRTFLG)に応じたメモリモジュールの書込み動作の一例を示すフロー図である。特に限定しないが、セット状態のメモリセルは“1”のビットデータを表し、リセット状態のメモリセルは“0”のビットデータを表す。また、図21Aには、通常の書込みコマンドに応答した書込み動作、あるいは消去優先モードに設定されているときの書込み動作が示されている。
まず、情報処理装置CPU_CPから論理アドレス値(LAD)、データ書込み命令(WRT)、セクタカウント値(SEC=1)、512バイトの書込みデータ(DATA0)が含まれるライトリクエスト(WQ01)がインターフェース回路HOST_IFを通じて情報処理回路MNGERへ入力され、バッファBUF0に格納される(Step101)。情報処理回路MNGERは、ランダムアクセスメモリRAMへ格納されたアドレスマップ範囲(ADMAP)を利用し、論理アドレス値(LAD)が、論理アドレス領域LRNG1内の論理アドレス値であるか、あるいは、論理アドレス領域LRNG2内の論理アドレス値であるかを判断する。また、書込みライト方法選択情報WRTFLGを読出す。さらに、論理アドレスに対応する書込み物理アドレスNXPADを書込み物理アドレステーブルNXLPADBLから読出す(Step102)。
情報処理回路MNGERは、読出したところの書込みライト方法選択情報WRTFLGの内容に従って、Step103において、書込み方法を選択する。すなわち、書込みライト方法選択情報WRTFLGの内容に従って、Step104〜109のいずれかを選択する。書込みライト方法選択情報WRTFLGが0の場合、書き込む方法として、Step109が選択される。この場合、書込みデータは加工されること無く、書込みデータwdataとして準備され、書込みデータwdataに基づいたECCデータが、Step115において生成される。また、Step115においては、ライトフラグWTFLGの値が、0(WTFLG0)として生成される。書込みライト方法選択情報WRTFLGが1の場合、書込み方法として、Step104が選択される。この場合、Step104において、書込みデータは反転される。反転されたデータが書込みデータwdataとして、Step110において準備され、書込みデータwdataに基づいたECCデータが生成される。また、Step110において、ライトフラグWTFLGの値が、1(WTFLG1)として生成される。
書込みライト方法選択情報WRTFLGが2の場合、Step105が選択される。この場合、書込みデータは、Step105において、圧縮(Comp)される。Step111においては、圧縮された書込みデータが書込みデータwdataとされ、書込みデータwdataに基づいたECCデータが生成される。さらに、Step111において、ライトフラグWTFLGの値が、2(WTFLG2)として生成される。書込みライト方法選択情報WRTFLGが3の場合、Step107が選択される。この場合には、書込みデータはコード(Code)化される。コード化された書込みデータは、Step113において、書込みデータwdataとされ、書込みデータwdataに基づいたECCデータが生成される。また、Step113においては、ライトフラグWTFLGの値が、3(WTFLG3)として生成される。
書込みライト方法選択情報WRTFLGが2_1の場合、Step106が選択される。この場合には、書込みデータに対して圧縮と反転がStep106において行われる。圧縮および反転された書込みデータは、Step112において、書込みデータwdataとされ、書込みデータwdataに基づいたECCデータが生成される。また、Step112において、ライトフラグWTFLGの値が、2_1(WTFLG2_1)として生成される。書込みライト方法選択情報WRTFLGが3_2の場合、Step108が選択される。この場合には、書込みデータに対してコード化と圧縮がStep108において行われる。コード化と圧縮とが行われた書込みデータは、Step114において、書込みデータwdataとされ、書込みデータwdataに基づいたECCデータが生成される。また、Step114において、ライトフラグWTFLGの値が、3_2(WTFLG3_2)として生成される。
各書込み方法については、図12A(図11A〜図11Cも参照)において述べているので、ここでは、それぞれの詳細は省略する。
通常書込みコマンドあるいは消去優先モードでは、消去領域への一括消去動作が優先される。そのため、各Step110〜Step115の後に、消去領域の一括消去が完了しているか否かの判定がStep116において行われる。Step116において、消去領域の一括消去が完了していない場合には、各Step110〜115において生成したデータ(書込みデータwdata、ECCデータおよびライトフラグWTFLG)の書込みが待たされる。すなわち、消去領域の一括消去が完了した後のStep117において、書込み物理アドレスNXPADへ書込みデータwdata、ECCデータおよびライトフラグWTFLGのそれぞれの書込みが行われる。書込みデータwdataはメインデータMDATAとして、ECCデータとライトフラグWTFLGは冗長データRDATAへ含まれ、メインデータMDATAおよび冗長データRDATAのそれぞれは、物理アドレスNXPADのメインデータ領域DAreaおよび冗長データRDATAへ書き込まれる。
書込み動作は、例えば一括消去された消去領域に対して行われる。この場合、消去領域の周辺(物理的に隣接した領域)に配置されているダミーチェインメモリアレイDCYに対しては、書込みが行われない。そのため、書込み動作の高速化を図ることが可能となる。
<ライト方法選択情報に応じたメモリモジュール(半導体装置)の書込み動作2>
図21Bは、書込み動作の他の例を示すフロー図である。図21Bは、図21Aと類似しているため、相違する点を主に説明する。
図21Bにおいて、Step201〜215は、図21AのStep101〜115に相当する。また、図21Bにおいて、Step218および220は、図21AのStep117に相当する。そのため、これらのStepについては、説明を省略する。
図21Bは、メモリモジュールNVMMD0に対して書込み優先モードが設定されている場合を示している。書込み動作において、Step216で、消去動作が実行されているか否かが判定される。消去動作が実行されていると判定された場合、書込み優先モードが設定されているため、Step217において、消去動作は一時的に停止させられる。Step217において、消去動作を一時的に停止した後、Step218において、図21Aに示したStep117と同様に、データの書込みが行われる。データの書込みが行われた後、Step219において、一時的に停止していた消去動作を再開させる。また、Step216において、消去動作が実行されていないと判定された場合も、Step220において、図21Aに示したStep117と同様に、データの書込みを行う。
この実施の形態においては、消去動作が一次的に停止させられるため、書込み動作のレスポンス時間を短くすることが可能となる。また、この実施の形態においても、書込み動作をする際、書込み動作の対象となる領域(消去領域)の周辺(物理的に近接している領域)に配置されているダミーチェインメモリアレイDCYに対しては、書込み動作を実行しない。これにより、書込み動作の際に選択するセルの数を低減することが可能となり、書込み動作の高速化を図ることが可能となる。
また、メモリモジュールNVMMD0に対して書込み優先モードを設定する例を説明したが、この代わりに、メモリモジュールNVMMD0に供給するコマンドとして、書込み優先コマンドを用意する様にしてもよい。この場合には、書込み優先コマンドが供給されたときに、図21Bのフローが実行されるように、メモリモジュールNVMMD0を構成すればよい。
<ウエアレベリング方法>
図22は、図16の場合に加えて図2の情報処理回路MNGERが実行するウエアレベリング方法の一例を示すフロー図である。図9A、図9Bに示したように、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBLの中で、エントリー番号0から(N/2−1)までのN/2個分を書込み物理アドレステーブルNXPADTBL1とし、エントリー番号(N/2)からNまでの残りのN/2個分を書込み物理アドレステーブルNXPADTBL2として管理する。図16で説明したように、当該書込み物理アドレステーブルNXPADTBLを図8Aの物理セグメントテーブルPSEGTBL1を用いて更新することによるダイナミックウエアレベリングは、無効状態の物理アドレスを対象とした動的な消去回数の平準化方法である。
しかしながら、ダイナミックウエアレベリングは、無効状態の物理アドレスが対象となるため、全体的に、無効状態の物理アドレスの消去回数と有効状態の物理アドレスの消去回数との差が段々と拡大していく場合がある。例えば、ある論理アドレス(それに対応する物理アドレス)に書込みが行われたのち、当該物理アドレスが有効状態となり、その後、長期間に渡って当該論理アドレス(それに対応する物理アドレス)に対して書込み命令が生じなかった場合、当該物理アドレスは、長期間に渡ってウエアレベリングの対象から外されることになる。そこで、図2の情報処理回路MNGERは、図22に示すように、無効状態の物理アドレスの消去回数と有効状態の物理アドレスの消去回数のバラツキを抑える静的な消去回数の平準化方法(スタティックウエアレベリング)を実行する。
情報処理回路MNGERは、図13のアドレス範囲マップ(ADMAP)における第1物理アドレス領域PRNG1および第2物理アドレス領域PRNG2の範囲内のそれぞれで、図22に示す静的な消去回数の平準化方法を行う。まず、情報処理回路MNGERは無効物理アドレスに関する物理セグメントテーブルPSEGTBL1(図8A)内で最大消去回数MXERCの中の最大値MXERCmxと、有効物理アドレスに関する物理セグメントテーブルPSEGTBL2(図8B)内で最小消去回数MNERCの中の最小値MNERCmnを検出する。そして、この最大値MXERCmxと最小値MNERCmnの差DIFF(=MXERCmx−MNERCmn)を求める(Step51)。
次のStep52で、情報処理回路MNGERは、無効状態の物理アドレスの消去回数と、有効状態の物理アドレスの消去回数の差の閾値DERCthを設定し、この閾値DERCthと消去回数差DIFFを比較する。消去回数差DIFFが閾値DERCthより大きい場合、情報処理回路MNGERは、消去回数の平準化行うためStep53を行い、小さい場合はStep58を行う。Step58において、情報処理回路MNGERは、物理セグメントテーブルPSEGTBL1又はPSEGTBL2が更新されたか否かを判定し、更新された場合はStep51にて再度、消去回数差DIFFを求め、いずれの物理セグメントテーブルも更新されていない場合は、再度Step58を行う。
Step53で、情報処理回路MNGERは、有効物理アドレスに関する物理セグメントテーブルPSEGTBL2内の最小消去回数MNERCの中で最も小さな消去回数から順にm個分の物理アドレスSPAD1〜SPADmを選択する。Step54では、情報処理回路MNGERは、無効物理アドレスに関する物理セグメントテーブルPSEGTBL1内の最大消去回数MXERCの中で最も大きな消去回数から順にm個分の物理アドレスDPAD1〜DPADmを候補として選択する。
Step55では、情報処理回路MNGERは、候補とされた物理アドレスDPAD1〜DPADmが、書込み物理アドレステーブルNXPADTBLへ登録されているかを調べる。もし、候補とされた物理アドレスDPAD1〜DPADmのいずれかが、書込み物理アドレステーブルNXPADTBLに登録されていれば、Step59においてこの物理アドレスDPAD1〜DPADmのいずれかを候補から除外し、再度Step54で候補の補充を行う。もし、選択された物理アドレスDPAD1〜DPADmが、書込み物理アドレステーブルNXPADTBLへ登録されていなければStep56を行う。
Step56では、情報処理回路MNGERは、不揮発性メモリ装置内における物理アドレスSPAD1〜SPADmのデータを物理アドレスDPAD1〜DPADmへ移動させる。Step57では、情報処理回路MNGERは、物理アドレスSPAD1〜SPADmのデータを物理アドレスDPAD1〜DPADmへ移動させたことにより、更新する必要のある全テーブルを更新する。
このようなスタティックウエアレベリングを図16に示したダイナミックウエアレベリングと併用することで、不揮発性メモリ装置NVM10〜NVM17全体で消去回数の平準化を図ることが可能となる。なお、この例では、m個分の物理アドレスのデータを移動した例を示したが、mの値は、目標性能に応じて情報処理回路MNGERによってプログラム可能であり、書込み物理アドレステーブルNXPADTBLの登録数Nとすると例えば1≦m≦Nに設定すると良い。
<パイプライン書込み動作1>
図23Aは、図1の情報処理装置CPU_CPからメモリモジュールNVMMD0へ連続してライトリクエストが発生した際に、メモリモジュールNVMMD0内部でパイプライン的に実行されるデータ書込み動作の一例を示す図である。特に限定しないが、図2の制御回路MDLCT0内のバッファBUF0〜BUF3には、それぞれN×512バイトの書込みデータが格納できる。
図23Aに示すバッファ転送動作WTBUF0、1、2および3では、ライトリクエストWQがバッファBUF0、1、2および3へそれぞれ転送される。事前準備動作PREOP0、1、2および3では、バッファBUF0、1、2および3に転送された書込みデータをそれぞれ不揮発性メモリ装置NVMへ書き込むための事前準備動作が行われる。データ書込み動作WTNVM0、1、2および3では、バッファBUF0、1、2および3に格納された書込みデータが、それぞれ不揮発性メモリ装置NVMへ書き込まれる。
バッファ転送動作WTBUF0、1、2および3と、事前準備動作PREOP0、1、2および3と、データ書込み動作WTNVM0、1、2および3は、図23Aに示すように、制御回路MDLCT0によるパイプライン動作によって実行される。これにより、書込み速度を向上させることが可能となる。具体的には、以下のようなパイプライン動作が行われる。
時間T0からT2の期間に発生したN回のライトリクエスト(WQ[1]〜WQ[N])はインターフェース回路HOST_IFにおいて、先ず、バッファBUF0へ転送される(WTBUF0)。バッファBUF0へ書込みデータが格納できなくなると、時間T2からT4の期間に発生したN回のライトリクエスト(WQ[N+1]〜WQ[2N])はバッファBUF1へ転送される(WTBUF1)。バッファBUF1へ書込みデータが格納できなくなると、時間T4からT6の期間に発生したN回のライトリクエスト(WQ[2N+1]〜WQ[3N])はバッファBUF2へ転送される(WTBUF2)。バッファBUF2へ書込みデータが格納できなくなると、時間T6からT8の期間に発生したN回のライトリクエスト(WQ[3N+1]〜WQ[4N])はバッファBUF3へ転送される(WTBUF3)。
情報処理回路MNGERは、時間T1からT3の期間において、バッファBUF0に格納されている書込みデータを不揮発性メモリ装置NVMへ書き込むための事前準備(PREOP0)を行う。情報処理回路MNGERが行う事前準備動作PREOP0の主な動作内容を以下に示す。なお、他の事前準備動作PREOP1、2、3も当該事前準備動作PREOP0と同様の動作となる。
(1)ライトリクエスト(WQ[1]〜WQ[N])へ含まれる論理アドレスLAD値を利用し、アドレス変換テーブルLPTBLから物理アドレスPADを読み出し、必要に応じてこの物理アドレスPADの有効フラグ(CPVLD,PVLD,DVF)値を0にし、データを無効にする。
(2)アドレス変換テーブルLPTBLを更新する。
(3)書込み物理アドレステーブルNXPADTBLに格納されている書込み物理アドレスNXPADを読み出し、この書込み物理アドレスNXPADへライトリクエスト(WQ[1]〜WQ[N])に含まれる論理アドレスLADを割り当てる。
(4)物理セグメントテーブルPSEGTBLを更新する。
(5)物理アドレステーブルPADTBLを更新する。
(6)次の書込みに備えて、書込み物理アドレステーブルNXPADTBLを更新する。
次に、情報処理回路MNGERは、時間T3からT5の期間において、バッファBUF0に格納されている書込みデータを不揮発性メモリ装置NVMへ書き込む(WTNVM0)。この際に、データが書き込まれた不揮発性メモリ装置NVMの物理アドレスは、上記(3)での書込み物理アドレスNXPAD値と等しい。他のデータ書込み動作WTNVM1、2、3もデータ書込み動作WTNVM0と同様の動作となる。
<パイプライン書込み動作2>
図23Bは、メモリモジュールNVMMD0内部でパイプライン的に実行されるデータ書込み動作の他の例を示す図である。図23Bは、図23Aと類似しているため、相違点について主に説明する。
図23Aにおいては、不揮発性メモリ装置NVMへ書き込む際に、消去動作(ES0、ES1、ES2、ES3)と書込み動作(WT0、WT1,WT2、WT3)とが時間的に連続する様に行われる。これに対して、図23Bにおいては、消去動作の対象となる領域と書込み動作の対象となる領域とが異なるため、消去動作と書込み動作とが時間的にオーバーラップする様に、パイプライン化されている。例えば、不揮発性メモリNVM10、NVM11、NVM12、NVM13は、互いに異なる半導体チップにより形成される。これにより、消去動作(ES1、ES2、ES3)と書込み動作(WT0、WT1、WT2)とを、時間的にオーバーラップすることが可能となり、書込み動作の高速化を図ることが可能となる。
<不揮発性メモリ装置のレイアウト1>
図24は、不揮発性メモリ装置NVM10〜NVM17内の一つのメモリアレイARYの模式的な平面図である。同図において、ドットで埋められた複数の○印および白抜きの複数の○印のそれぞれは、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示している。チェインメモリアレイCYのそれぞれは、例えば図4にチェインメモリアレイCY1として示されている。図4から理解される様に、チェインメモリアレイのそれぞれは、複数の相変化メモリを有しており、当該複数の相変化メモリが、対応するワード線WLと対応するビット線との間に直列に接続されている。特に制限されないが、複数の相変化メモリTcl0〜Tclnは、半導体基板の上に積層する様に形成されている。
複数のチェインメモリアレイCYは、2次元的にはマトリクス状に配置され、マトリクスのそれぞれの行およびそれぞれの列には、ワード線およびビット線が配置され、対応するワード線とビット線がチェインメモリアレイCYに接続されている。同図において、ドットで埋められた○印(以下、●印と称する)は、データを記憶しないチェインメモリアレイCY(ダミーチェインメモリアレイDCY)を示し、○印のチェインメモリアレイCYは、データを記憶するチェインメモリアレイCYを示している。
マトリクス状に配置された複数のチェインメモリアレイCYは、SSDコンフィグレーション情報(SDCFG)に含まれているダミーチェインメモリアレイ指定情報(XYDMC)に基づいて、消去動作、書込み動作および読出し動作の際には、複数の領域に分割して扱われる。すなわち、情報処理回路MNGERが、不揮発性メモリ装置NVM10〜NVM17をアクセスして、消去動作、書込み動作および読出し動作をする際には、ダミーチェインメモリアレイ指定情報(XYDMC)に基づいて、分割された複数の領域としてアクセスする。図24における●印および○印のチェインメモリアレイCYの配列は、ダミーチェインメモリアレイ指定情報(XYDMC)が、1_1_1の場合の配列を示している。図24の例では、データの書込み、読出し、保持および消去が可能なチェインメモリアレイCYは、8行x66列に配置されている。同図では、この8行x66列のチェインメモリアレイCYのマトリクスを書込み領域WT―AREAとして示してある。すなわち、同図の下側に、書込み領域WT−AREA0〜WT−AREA7が示されている。この各書込み領域WT−AREA、WT−AREA0〜7のそれぞれには、上記したメインデータMDATAが書き込まれるメインデータ領域DAreaと、冗長データRDATAが書き込まれる冗長データ領域RAreaを含んでいる。また、各書込み領域を構成するチェインメモリアレイCYのマトリクスの左側の8行x64列には上記したメインデータ領域DAreaが配置され、右側の8行x2列には上記した冗長データ領域RAreaが配置されている。
これにより、○印の8行x64列のチェインメモリアレイCYと8行x2列のチェインメモリアレイCYを有する領域WT−AREAが、メモリアレイ上に複数個構成されている。この実施の形態においては、この領域は、消去動作の際に消去される領域であるため、消去領域と見なすこともできる。ダミーチェインメモリアレイ指定情報(XYDMC)が、1_1_1であるため、図11A〜図11Cにおいて述べた様に、この書込み領域WT−AREAの外側(外周)であって、当該書込み領域WT−AREAに隣接した行(X)と列(Y)にそれぞれ1つのダミーチェインメモリアレイDCYが配置される。すなわち、当該書込み領域WT−AREAに隣接した1行と1列とを構成する複数のチェインセルアレイCYが、ダミーチェインセルアレイDCY(●印)として扱われる。
例えば、1個のチェインセルアレイCYが、1バイトのデータを格納すると考えた場合、1個の書込み領域(消去領域)は、8x66=528バイトのデータが書き込まれることが可能とされる。この場合、8x64=512バイトのメインデータMDATAがメインデータ領域DAreaへ書き込まれ、8x2=16バイトの冗長データRDATAが冗長データ領域RAreaへ書き込まれる。この実施の形態においては、ダミーチェインメモリアレイDCYと設定されたチェインメモリアレイDCYに対しては、情報処理回路MNGERから書込み動作および読み出し動作のためのアクセスが行われない。
次に、図1の情報処理装置CPU_CPから、図2の情報処理回路MNGERへ書込みリクエストWQ00、WQ01、WQ02、WQ03が順に入力された場合の、不揮発性メモリ装置NVM10への書込み動作について説明する。情報処理回路MNGERは、特に限定しないが512バイトのメインデータMDATAと16バイトの冗長データRDATAのサイズ毎に、1個の物理アドレスを対応させ、不揮発性メモリ装置NVM10〜NVM17へ書込みを行う。
ここで、書込みリクエストWQ00は、論理アドレス値LAD0、書込み命令WRT、セクタカウント値SEC1および512バイトの書込みデータWDATA0を含むものとする。また、書込みリクエストWQ01は、論理アドレス値LAD1、書込み命令WRT、セクタカウント値SEC1および512バイトの書込みデータWDATA1を含むものとする。同様に、書込みリクエストWQ02は、論理アドレス値LAD2、書込み命令WRT、セクタカウント値SEC1および512バイトの書込みデータWDATA2を含むものとし、書込みリクエストWQ03には、論理アドレス値LAD3、書込み命令WRT、セクタカウント値SEC1および512バイトの書込みデータWDATA3を含むものとする。
先ず、情報処理回路MNGERは書込み物理アドレステーブルNXPADTBL1を参照し、論理アドレスLAD0、1、2および3のそれぞれに対応する物理アドレスPAD0、1、2および3とデータを書込む不揮発性メモリ装置NVM10を決定する。次に、情報処理回路MNGERは書込みデータWDATA0、1、2および3のそれぞれに対応する冗長データRDATA0、1、2および3を生成する。次に、情報処理回路MNGERは調停回路ARBとメモリ制御回路NVCT0を通じて、不揮発性メモリ装置NVM10に対し、順に、消去命令ERS0、書込み命令WT0、消去命令ERS1、書込み命令WT1、消去命令ERS2、書込み命令WT2、消去命令ERS3、書込み命令WT3を発行する。
消去命令ERS0には、物理アドレスPAD0、消去命令ERS、セクタカウント値SECが含まれる。書込み命令WT0には、物理アドレスPAD0、書込み命令WT、セクタカウント値SEC1、512バイトの書込みデータWDATA0および冗長データRDATA0が含まれる。消去命令ERS1には、物理アドレスPAD1、消去命令ERS、セクタカウント値SEC1が含まれる。書込み命令WT1には、物理アドレスPAD1、書込み命令WT、セクタカウント値SEC1、512バイトの書込みデータWDATA1および冗長データRDATA1が含まれる。消去命令ERS2には、物理アドレスPAD2、消去命令ERS、セクタカウント値SEC1が含まれる。書込み命令WT2には、物理アドレスPAD2、書込み命令WT、セクタカウント値SEC1、512バイトの書込みデータWDATA2および冗長データRDATA2が含まれる。消去命令ERS3には、物理アドレスPAD3、消去命令ERS、セクタカウント値SEC1が含まれる。同様に、書込み命令WT3には、物理アドレスPAD3、書込み命令WT、セクタカウント値SEC1、512バイトの書込みデータWDATA3および冗長データRDATA3が含まれる。
消去命令ERS0の物理アドレスPAD0によってメモリ装置NVM10の書込み領域WRT―AREA0が選択され、消去命令ERSによって書込み領域WRT―AREA0の全チェインメモリアレイCYに含まれる全メモリセルのデータは“1”(Set状態)となる。すなわち、一括消去される。次に、書込み命令WT0の物理アドレスPAD0および書込み命令WTによってメモリ装置NVM10の書込み領域WRT―AREA0が選択され、512バイトの書込みデータWDATA0の中で“0”のデータのみが(Reset状態)メインデータ領域DAreaのチェインメモリアレイCY内のメモリセルへ書き込まれ、16バイトの冗長データRDATA0の中で“0”のデータのみが(Reset状態)が冗長データ領域RAreaのチェインメモリアレイCY内のメモリセルへ書き込まれる。
消去命令ERS1の物理アドレスPAD1によってメモリ装置NVM10の書込み領域WT―AREA1が選択され、消去命令ERSによって書込み領域WT―AREA1の全チェインメモリアレイCYに含まれる全メモリセルのデータは“1”(Set状態)となる(一括消去)。書込み命令WT1の物理アドレスPAD1および書込み命令WTによってメモリ装置NVM10の書込み領域WT―AREA1が選択され、512バイトの書込みデータWDATA1の中で“0”のデータのみが(Reset状態)メインデータ領域DAreaのチェインメモリアレイCY内のメモリセルへ書き込まれ、16バイトの冗長データRDATA1の中で“0”のデータのみが(Reset状態)が冗長データ領域RAreaのチェインメモリアレイCY内のメモリセルへ書き込まれる。
書込み領域WT―AREA0、1との間、書込み領域WT―AREA1と2との間および書込み領域WT―AREA2と3との間には、それぞれダミーチェインメモリアレイDCYが配置されている。そのため、例えば、書込み領域WT―AREA1を一括消去した際に、ダミーチェインメモリアレイDCYが熱ディスターブの緩衝領域となり、書込み領域WT―AREA0や、書込み領域WT―AREA2のデータに対して熱ディスターブの影響を低減することができる。このように、書込み領域WT―AREA間にダミーチェインメモリアレイDCYが存在することで、熱ディスターブの影響を低減することが可能なため、書込み領域WT―AREAへ高信頼にデータを書込み、保持でき、信頼性の高いメモリモジュールを提供できる。
特に制限されないが、ダミーチェインメモリアレイ指定情報(XYDMC)が、1_1_1とされた場合、書込み領域(消去領域)WT−AREAを構成するマトリクスの例えば右側(図24において)と上側(図24において)に1行、1列のダミーチェインメモリアレイDCYが設定される。勿論、この様に、右側と上側に限定されるものではない。書込み領域WT−AREAは、同図において、上下および左右に繰り返して配置される様に設定されるため、各書込み領域WT−AREAのそれぞれに1行および1列のダミーチェインメモリアレイDCYを設定する様にすることで、各書込み領域WT−AREA間にダミーチェインメモリアレイDCYが配置される様に設定することが可能である。
なお、この実施の形態においては、512バイトのメインデータMDATAおよび16バイトの冗長データRDATAを不揮発性メモリ装置(NVM10〜NVM17)へ書き込むため、各書込み領域WT−AREAへは528バイトのデータを格納できる様に、8行x66列のチェインメモリアレイCYが配置されている。
たとえば、情報処理装置CPU_CPが、書込みデータの最小単位を64バイトとしてメモリモジュールNVMMD0へ書き込む場合は、情報処理回路MNGERは64バイトのメインデータMDATAおよび8バイトの冗長データRDATAを不揮発性メモリ装置(NVM10〜NVM17)へ書き込むために、各書込み領域WT−AREAへは72バイトのデータを格納できる様に、8行x9列のチェインメモリアレイCYを配置することもできる。
このように、情報処理装置CPU_CPが所望の書込みデータの最小単位に合わせて、書込み領域WT−AREA内のチェインメモリアレイCYを配置することができ、システム要求に柔軟に対応できる。
さらに、情報処理装置CPU_CPの書込みデータの最小単位である64バイトに合わせて、書込み領域WT−AREA内のチェインメモリアレイCYを配置することで、複数の書込み領域WT−AREAを用いることにより、その整数倍のデータ(例えば、512バイト)を格納することができる。
1つの物理アドレスに対応する書込みデータが、512バイトであった場合、この実施の形態においては、1つの書込み領域WT−AREAには1つの物理アドレスが対応しているが、勿論、これに限定されず、後で述べる実施の形態においては、書込み領域WT−AREAに複数の物理アドレスに対応するデータが書き込まれる。すなわち、1つの物理アドレスに対するデータの容量よりも、データ容量の大きい書込み領域の例が示される。
(実施の形態2)
<不揮発性メモリ装置のレイアウト2>
図25は、不揮発性メモリ装置NVM10〜NVM17内の一つのメモリアレイARYの他の例を示す模式的な平面図である。この実施の形態においては、書込み領域WT―AREA間に設定されるダミーチェインメモリアレイDCYが2つ連続して配置される。この場合、ダミーチェインメモリアレイ指定情報(XYDMC)は、1_2_2とされている。これにより、情報処理回路MNGERは、書込み領域WT−AREAのそれぞれの外側(外周)に、1行および1列のダミーチェインメモリアレイDCYを設定する。
また、この各書込み領域WT−AREA、WT−AREA0〜7のそれぞれには、上記したメインデータMDATAが書き込まれるメインデータ領域DAreaと、冗長データRDATAが書き込まれる冗長データ領域RAreaを含んでいる。また、各書込み領域を構成するチェインメモリアレイCYのマトリクスの上側の8行x8列には上記したメインデータ領域DAreaが配置され、下側の1行x8列には上記した冗長データ領域RAreaが配置されている。
すなわち、情報処理回路MNGERは、書込み領域WT−AREAのそれぞれの外側に隣接した1行および1列のチェインメモリアレイCYに対して、読出し動作、書込動作および消去動作(一括消去動作)を行わず、書込み領域WT−AREAのそれぞれに対して、読出し動作、書込動作および一括消去動作を行う様に動作する。
図25においては、書込み領域WT−AREAのそれぞれを囲む様に、ダミーチェインメモリアレイDCYが配置される。すなわち、書込み領域WT−AREAのそれぞれの辺に対して、ダミーチェインメモリアレイDCYが1列(1行)配置される様に設定されている。これにより、書込み領域WT−AREA間には、2列(2行)のダミーチェインメモリアレイDCYが配置される様になる。勿論、書込み領域WT−AREAの2辺(例えば、同図において上側と右側)に、2列(2行)のダミーチェインメモリアレイDCYを集中して配置する様に設定してもよい。
この様にすることにより、いずれかの書込み領域WT―AREAを一括消去した際にも、熱ディスターブの影響が更に低減することが可能となる。
また、どのチェインメモリアレイCYを、ダミーチェインメモリアレイDCYとして配置するかは、不揮発性メモリ装置内の初期設定領域SSDコンフィグレーション(SDCFG)へプログラムすることにより、定めることが可能であり、電源投入後、情報処理回路MNGERが、この初期設定領域を読出し、ダミーチェインメモリアレイDCYの配置を決める。
以上説明したように、メモリモジュールNVMMD0が要求される機能、性能及び信頼性のレベルに合わせて柔軟に対応することができる。
(実施の形態3)
<不揮発性メモリ装置のレイアウト3>
図26Bは、不揮発性メモリ装置内の一つのメモリアレイARYの他の例を示す模式的な平面図である。同図においても、●印および○印は、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示す。この実施の形態においては、●印のチェインメモリアレイDSCYは、データを記憶しないチェインメモリアレイであるが、“1” (Set状態)とみなすチェインメモリアレイCY(セットチェインメモリアレイDSCY)を示している。これに対して、○印へはデータ“1” (Set状態)あるいはデータ“0” (Reset状態)を記録するチェインメモリアレイCYである。
この実施の形態においては、書込み領域WT―AREA(WT−AREA、WT−AREA0〜7)は、●印および○印を含み、9行x65列に配置されたチェインメモリアレイCYを有している。すなわち、書込み領域WT−AREAは、消去領域ERS―AREA(図示せず)とセットチェインメモリアレイDSCYから成る。ここで、消去領域ERS―AREAは、8行x64列の○印のチェインメモリアレイCY(図では、メインデータMDATAが書き込まれるメインデータ領域DAreaと、冗長データRDATAが書き込まれる冗長データ領域RArea)により構成される。ダミーチェインメモリアレイ指定情報(XYDMC)は、0_1_1とされていることにより、ダミーチェインメモリアレイDCYは、書込み領域WT−AREAの内側に設定され、行方向および列方向に、それぞれ1個ずつ設定される。言い換えるならば、消去領域ERA−AREAの外側(外周)に隣接した行方向(列方向)に、それぞれ1行(1列)のダミーチェインメモリアレイDCYが配置される。
また、この実施の形態において、各書込み領域WT−AREA、WT−AREA0〜7のそれぞれには、各書込み領域を構成するチェインメモリアレイCYのマトリクスの7行x64列(同図では上側)には、メインデータMDATAが書き込まれるメインデータ領域DAreaが配置され、1行x64列(同図では右側)には、冗長データRDATAが書き込まれる冗長データ領域RAreaが配置される。
また、この実施の形態において、各書込み領域WT−AREA、WT−AREA0〜7には、複数の物理アドレスPADを含み、たとえば書込み領域WT−AREA0は物理アドレスPAD0〜PADmを含む。
消去領域ERS−AREAにおけるチェインメモリアレイCYは、一括で消去が行われる。消去領域ERS−AREAは、一括消去後、データ“0”(Reset状態)が、適時書き込まれる領域で、○印の8行x64列のチェインメモリアレイCYで構成されている。書込み領域WT−AREAは9行x64列のチェインメモリアレイCYであり、消去領域ERS-AREAは8行x64列のチェインメモリアレイCYである。
ここで、書込み領域WT−AREAが、9行x65列のチェインメモリアレイで構成され、消去領域ERS−AREAが、8行x64列のチェインメモリアレイで構成されていると仮定した場合、消去領域ERA−AREAの比率は、書込み領域WT―AREAに対して、(512/585)x100=87.5%になる。つまり、メモリアレイARYへ書き込むデータの中で、“0”のビットデータ量が、87.5%以下にできれば、消去領域ERA−AREAへ“0”のビットのデータを書込むことができる。
図26Aは、図26Bで示したメモリアレイARYへの書込み方法を説明するフローチャート図である。
図1の情報処理装置CPU_CPから、図2の情報処理回路MNGERへ書込みリクエストWQ00が入力された場合の、不揮発性メモリ装置NVM10への書込み動作について説明する。情報処理回路MNGERは、特に限定しないが、512バイトのメインデータMDATAと16バイトの冗長データRDATAのサイズ毎に、1個の物理アドレスを対応させ、不揮発性メモリ装置NVM10〜NVM17へ書込みを行う。書込みリクエストWQ00には、論理アドレス値LAD0、書込み命令WRT、セクタカウント値SEC1および512バイトの書込みデータWDATA0が含まれる。
先ず、図1の情報処理装置CPU_CPから、図2の情報処理回路MNGERへ書込みリクエストWQ00が入力されると(Step301)、情報処理回路MNGERは、ライトリクエストWQ00の512バイト(512x8ビット)の書込みデータ(DATA0)から、ECCデータを含む冗長データRDATA0を生成する(Step302)。次に、情報処理回路MNGERは、ライトリクエストWQ00の512バイト(512x8ビット)の書込みデータ(DATA0)の中で、“0”のビットデータおよび“1”のビットデータを数え(Step303)、“0”のビットデータの数と“1”のビットデータの数を比較する(Step304)。次に、情報処理回路MNGERは、“0”のビットデータの数が“1”のビットデータの数より大きい場合は、書込みデータ(DATA0)の各ビットを反転させる(Step305)。一方、情報処理回路MNGERは、“0”のビットデータの数が“1”のビットデータの数より、大きくない場合は、書込みデータ(DATA0)の各ビットは反転させない。Step305で反転させた書込みデータあるいは反転させなかった書込みデータは、Step306へ供給される。
このように、512バイト(512x8ビット)の書込みデータ(DATA0)の中で、“0”のビットデータの数によって、書込みデータ(DATA0)の各ビットを反転させたり、反転させなかったりすることで、“0”のビットデータの数は、512バイト(512x8ビット=4096ビット)の内、常に2048ビット(=4096/2)以下となる。すなわち、書込みデータの中で、“0”のビットデータの数が常に1/2以下となる。これにより、“0”のビットデータを書き込む量を半減できる。
次に、情報処理回路MNGERは書込み物理アドレステーブルNXPADTBL1を参照し、アドレスLAD0に対応する物理アドレスPAD0および消去ブロックアドレスERSAD0とデータを書込む不揮発性メモリ装置NVM10を決定する(Step306)。情報処理回路MNGERは、調停回路ARBとメモリ制御回路NVCT0を通じて、不揮発性メモリ装置NVM10に対し、順に、消去命令ERS0、書込み命令WT0を発行する。消去命令ERS0には、消去ブロックアドレスERSAD0、消去命令ERS、消去ブロックアドレスERSAD0が含まれる。消去命令ERS0の消去ブロックアドレスERSAD0によってメモリ装置NVM10の書込み領域WT−AREA0の消去領域ERS―AREAが選択され、消去命令ERSによって消去領域ERS―AREAの全チェインメモリアレイCYに含まれる全メモリセルのデータは“1”(一括消去の動作により、Set状態)となる(Step307)。つまり、この消去命令によって、消去領域ERS―AREA内の複数の物理アドレスPAD0〜PADmに割り当てられているチェインメモリアレイCY内の全メモリセルがデータは“1”(一括消去の動作により、Set状態)となる。
書込み命令WT0の物理アドレスPAD0および書込み命令WTによってメモリ装置NVM10の書込み領域WT−AREA0の中で、物理アドレスPAD0へ割り当てられている消去領域ERS―AREA内のメインデータ領域DAreaのチェインメモリアレイCY内のメモリセルへ、512バイトの書込みデータWDATA0の中で“0”のデータのみが(Reset状態)が書き込まれる(Step308)。
また、同様に、書込み命令WT0の物理アドレスPAD0および書込み命令WTによってメモリ装置NVM10の書込み領域WT−AREA0の中で、物理アドレスPAD0へ割り当てられている消去領域ERS―AREA内の冗長データ領域RAreaのチェインメモリアレイCY内のメモリセルへ、冗長データRDATA0中で“0”のデータのみが(Reset状態)が書き込まれる(Step308)。
このように、書込みデータDATA0の中で、“0”のビットデータの数が常に1/2以下となるため、図26Bで説明した様に、消去領域ERS−AREAの比率が、低くても(100%でなくても)、“0”のビットデータを消去領域ERS―AREAに書き込むことにより、書込みデータDATAを、書込み領域WT−AREA0に格納することができる。すなわち、書込み領域WT−AREA0の内側にダミーチェインメモリアレイを設定しても、書込みデータDATA0を格納することが可能となる。
また、書込み領域WT−AREA0の内側に設定したダミーチェインメモリアレイをセットチェインメモリアレイDSCYとすることにより、このセットチェインメモリアレイDSCYを、書込みデータDATA0の中で、“1”のビットデータを格納した領域と見なすことも可能である。すなわち、セットチェインメモリアレイDSCYの物理アドレスには、“1”のビットデータが格納されていると見なす。これにより、書込みデータDATA0の中で、“1”のビットデータがセットチェインメモリアレイDSCYに格納されているものとすることが可能となる。この場合には、セットチェインメモリアレイDSCYへ、データの書込みおよび/あるいは読み出しの動作をすることは要求されない。例えば、セットチェインメモリアレイDSCYの物理アドレスに“1”が格納されているものとして扱えば済むこととなる。
この様にすることにより、書込み領域WT―AREA0を、“0”のビットデータを書込むことが可能な消去領域ERS―AREA0と、セットチェインメモリアレイDSCYとで構成し、図26Bに示した様な配置とすることが可能となる。
図26Bにおいては、複数の書込み領域WT―AREAの間に、熱ディスターブ緩衝領域を設けることなく、セットチェインメモリアレイDSCYが、複数の書込み領域WT―AREAの間に配置される。このセットチェインメモリアレイDSCは、相互に隣接する書込み領域WT―AREA間での熱ディスターブの影響を緩和する緩衝領域として機能する。さらに、情報処理回路MNGERは、セットチェインメモリアレイDSCYの配置(アドレス)を把握しているため、セットチェインメモリアレイDSCYへデータ“1”が記録されているものと、情報処理回路MNGERは見なして、データの読み出しを行うことができる。
セットチェインメモリアレイDSCYは、相互に隣接する書込み領域WT―AREA間の熱ディスターブの影響を緩和する緩衝領域と、データ“1”を記録しているチェインメモリアレイCYの双方の役割を担うことができるため、不揮発性メモリの記憶容量のペナルティをゼロにし、熱ディスターブの影響をうけることなく、書込み領域WT―AREAへ高信頼にデータを書込み、保持でき、信頼性の高いメモリモジュールを提供できる。
さらに、書込みデータの中で、“0”のビットデータの数が常に1/2以下となり、“0”のビットデータを書き込む量を半減できるため、高速且つ低電力のSSDを実現できる。
なお、図26Aにおいて、Step302は、書込みデータに基づいてECCデータを含む冗長データRDATAを生成するステップである。生成された冗長データRDATAに対しても、Step303以降のステップを適用する。これにより、“0”のビットデータを書き込む量を低減することが可能である。
(実施の形態4)
<不揮発性メモリ装置のレイアウト4>
図27は、書込み領域WT―AREA間のチェインメモリアレイDCY(DSCY)が2つ連続して、配置されている場合の、不揮発性メモリ装置内の一つのメモリアレイARYの模式的な平面図である。図27に示されている書込み領域WT−AREAへのデータの書込み方法は、先に述べた図26Aと同様である。
書込み領域WT−AREAの内側に、2行のダミーチェインメモリアレイDCYと2列のダミーチェインメモリアレイDCYを設定し、これらのダミーチェインメモリアレイDCYをセットチェインメモリアレイDSCYとして用いる。この様なダミーチェインメモリアレイDCYを設定するために、SSDコンフィグレーション(SDCFG)内のダミーチェインメモリアレイ指定情報XYDMCは、0_2_2とされている。これにより、各書込み領域WT−AREAの内側に、2行、2列のダミーチェインメモリアレイDCYが設定される。
この各書込み領域WT−AREA、WT−AREA0〜7のそれぞれには、上記した書込みデータが、メインデータ領域DArea(6行x64列)に書き込まれる。また、この実施の形態においては、各書込み領域を構成するチェインメモリアレイCYのマトリクスの1行x64列(同図では下側)には、上記した冗長データRDATAが配置されている。
この実施の形態においては、1行に沿って配置された複数のチェインメモリアレイCYによって、冗長データRDATAを格納するチェインメモリアレイCYのマトリクスが構成されている。
図27においても、●印および○印は、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示している。また、●印は、図26Bと同様に、データを記録しないが、“1” (Set状態)と見なすチェインメモリアレイCY(セットチェインメモリアレイDSCY)を示している。○印は、データ“1” (Set状態)あるいはデータ“0” (Reset状態)を記録するチェインメモリアレイCYである。
書込み領域WT―AREAは、特に限定しないが●印および○印を含む9行x66列のチェインメモリアレイCYで構成され、消去領域ERS−AREAとセットチェインメモリアレイDSCYから構成されている。
ここで、消去領域ERS−AREAは、一括で消去を行った後、データ“0” (Reset状態)を書込むことが可能な領域で、○印の7行x64列のチェインメモリアレイCYで構成されている。書込み領域WT―AREAは、9行x66列のチェインメモリアレイCYであり、消去領域ERS−AREAは7行x64列のチェインメモリアレイCYであるため、消去領域ERS−AREAの比率は、書込み領域WT―AREAに対して、(448/594)x100=75.4%になる。
図26Aで説明した書込み方法では、書込みデータの中で“0”のビットデータの数が常に1/2以下となるため、図27で示したメモリアレイARYの配置の消去領域ERS−AREAへ“0”のビットデータを書き込むことができる。従って、消去領域ERS−AREAを一括消去した際に、熱ディスターブの影響が2つ目の隣接するチェインメモリアレイCYまで及ぶ場合は、このような配置にし、消去領域ERS−AREA間のチェインメモリアレイDCYを2つ連続して設け、熱ディスターブの影響を排除でき、高信頼且つ高速のSSDを提供できる。この実施の形態においても、2行、2列のダミーチェインメモリアレイDCYが、データを格納するセットチェインメモリアレイDSCYとして用いられる。この様なセットチェインメモリアレイDSCYをどの様に配置するかは、不揮発性メモリ装置内の初期設定領域SSDコンフィグレーション(SDCFG)へプログラム可能であり、電源投入後、情報処理回路MNGERが、この初期設定領域を読出し、チェインメモリアレイDSCYの配置を決める。
以上説明したように、メモリモジュールNVMMD0が要求される機能、性能及び信頼性のレベルに合わせてダミーチェインメモリアレイDCYの配置を柔軟に対応することができる。
(実施の形態5)
<不揮発性メモリ装置のレイアウト5>
図28は、不揮発性メモリ装置内の一つのメモリアレイARYの他の配置例を示す模式的な平面図である。同図においても、●印および○印は、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示す。また、●印は、データを記録しないが、“1” (Set状態)とみなすチェインメモリアレイCY(セットチェインメモリアレイDSCY)を示している。○印は、データ“1” (Set状態)あるいはデータ“0” (Reset状態)を記録するチェインメモリアレイCYを示している。
書込み領域WT―AREA0〜WT−AREAnのそれぞれは、特に限定しないが、●印および○印を含む、9行x4096列行のチェインメモリアレイCYで構成され、消去領域ERS−AREAとセットチェインメモリアレイDSCYから構成されている。また、それぞれの書込み領域WT―AREA0〜WT−AREAnのそれぞれには、複数の物理アドレス(PAD0〜m)を割り当てることができる。すなわち、1個の書込み領域に対して、それぞれ物理アドレスに対応した複数の書込みデータを書き込むことが可能とされている。例えば、9行x512列を、1つの物理アドレスに対応させ、9行x512列の単位で、複数の書込みデータを書き込むことが可能とされている。
また、消去領域ERS−AREAは一括で消去を行った後、データ“0” (Reset状態)を書込むことが可能な領域で、○印の8行x4096列のチェインメモリアレイCYで構成されている。この実施の形態においては、SSDコンフィグレーション(SDCFG)内のダミーチェインメモリアレイ指定情報XYDMCは、0_1_0とされている。これにより、書込み領域WT−AREAに内側(言い換えるならば、消去領域ERS−AREAの外周)に、1行のダミーチェインメモリアレイDCYが設定され、設定されたダミーチェインメモリアレイDCYが、セットチェインメモリアレイDSCYとして用いられる。
また、この各書込み領域WT−AREA0〜nのそれぞれには、上記したメインデータ領域DArea(7行x4096列のチェインメモリアレイCY)と、冗長データ領域RDATA(1行x4096列のチェインメモリアレイCY)が含まれる。
このメモリアレイARYの配置例では、書込み領域WT―AREAが36864(=9行x4096列)チェイン分で、そのうちセットチェインメモリアレイDSCY領域は4106チェイン(1行)分のため、データ“0” (Reset状態)を書込むことが可能な領域の比率は、88.8%8=(((36864−4106)/36864)x100 )となる。図26Aで説明した書込み方法では、書込みデータの中の“0”のビットデータの数が常に1/2以下となるため、データ“0” (Reset状態)を書込む領域の割合が増えることで、データ“0” (Reset状態)を書き込む際の、熱ディスターブの影響を受けにくくなる。
また、この実施の形態においては、書込み領域WT−RAER内の消去領域ERS−AREAを一括消去した後、複数回に渡って書込み動作を行うことが可能である。例えば、8行x512列の消去領域ERS−AREAを、1つの物理アドレスに対応させ、8行x512列の単位で、複数回に渡って書込みを行うことができる。一括消去をした後、複数の書込みを行うようにすれば、一括消去による熱ディスターブの影響を、セットチェインメモリアレイDSCYにより低減することが可能となる。また、列方向には、ダミーチェインメモリアレイDCYが設定されていないため、小型化が可能であり、メモリセル当たりの単価(ビットコスト)の低減が可能となる。
(実施の形態6)
図29Aは、情報処理装置CPU_CPから入力されたデータを情報処理回路MNGERが圧縮し、不揮発性メモリ装置へ書き込む際の、書込みフロー図である。また、図29Bは、不揮発性メモリ装置内の一つのメモリアレイARYの他の例を示す模式的な平面図である。図29Aに示した書込みフローは、図29Bに示したメモリアレイARYへの書込み方法を示している。
図29Bにおいても、●印および○印は、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示している。図26Bにおいて説明したのと同様に、●印は、データを記録しないが、“1” (Set状態)とみなすこともできるチェインメモリアレイCY(セットチェインメモリアレイDSCY)を示している。また、○印は、データ“1” (Set状態)あるいはデータ“0” (Reset状態)を記録するチェインメモリアレイCYである。
図29Bにおいて、書込み領域WT―AREA0〜WT−AREAnのそれぞれは、特に限定しないが、●印および○印を含む66行x32列のチェインメモリアレイCYで構成される。●印で示す3行x32列のチェインメモリアレイCYはセットチェインメモリアレイDSCYであり、○印で示す63行x32列のチェインメモリアレイCYは消去領域ERS−AREAである。
また、それぞれの書込み領域WT―AREA0〜WT−AREAnには、複数の物理アドレス(PAD0〜3)を割り当てることができる。すなわち、1個の書込み領域に対して、それぞれ物理アドレスに対応した書込みデータを書き込むことが可能とされている。例えば、66行x8列を、1つの物理アドレスに対応させ、複数の書込みデータを書き込むことが可能とされている。また、消去領域ERS−AREAは一括で消去を行った後、データ“0” (Reset状態)を書込むことが可能な領域で、○印の63行x32列のチェインメモリアレイCYで構成されている。この実施の形態においては、SSDコンフィグレーション(SDCFG)内のダミーチェインメモリアレイ指定情報XYDMCは、0_3_0とされている。これにより、書込み領域WT−AREAに内側(言い換えるならば、消去領域ERS−AREAの外周)に、3行のダミーチェインメモリアレイDCYが設定され、設定されたダミーチェインメモリアレイDCYが、セットチェインメモリアレイDSCYとして用いられる。
また、この各書込み領域WT−AREA0〜nのそれぞれには、上記したメインデータ領域DArea(61行x32列のチェインメモリアレイCY)と、冗長データ領域RDATA(2行x32列のチェインメモリアレイCY)が含まれる。
図29Bにおいて、書込み領域WT―AREAは、特に限定しないが、●印および○印を含む66行x32列のチェインメモリアレイCYで構成され、消去領域ERS−AREA(ERS−AREA0、ERS−AREA1等)とセットチェインメモリアレイDSCYとを具備している。
この実施の形態においても、書込み領域WT―AREAには、複数の物理アドレスを割り当てることができる。また、各消去領域ERS−AREAは一括で消去を行った後、データ“0” (Reset状態)を書込むことが可能な領域で、○印の63行x32列のチェインメモリアレイCYで構成される。また、SSDコンフィグレーション(SDCFG)内のダミーチェインメモリアレイ指定情報XYDMCは、0_3_0とされており、書込み領域WT−AREAの内側に、3行のダミーチェインメモリアレイDCYが設定され、配置されている。この配置されている3行のダミーチェインメモリアレイDCYが、セットチェインメモリアレイDSCYとして用いられる。
図1の情報処理装置CPU_CPから、図2の情報処理回路MNGERへ書込みリクエストWQ00、WQ01、WQ02、WQ03が順に入力された場合の、不揮発性メモリ装置NVM10への書込み動作について説明する。情報処理回路MNGERは、特に限定しないが512バイトのメインデータMDATAと16バイトの冗長データRDATAのサイズ毎に、1個の物理アドレスを対応させ、不揮発性メモリ装置NVM10〜NVM17へ書込みを行う。ここで、書込みリクエストWQ00には、論理アドレス値LAD0、書込み命令WRT、セクタカウント値SEC1および512バイトの書込みデータWDATA0が含まれ、書込みリクエストWQ01には、論理アドレス値LAD1、書込み命令WRT、セクタカウント値SEC1および512バイトの書込みデータWDATA1が含まれる。同様に、書込みリクエストWQ02には、論理アドレス値LAD2、書込み命令WRT、セクタカウント値SEC1および512バイトの書込みデータWDATA2が含まれ、書込みリクエストWQ03には、論理アドレス値LAD3、書込み命令WRT、セクタカウント値SEC1および512バイトの書込みデータWDATA3が含まれる。
情報処理装置CPU_CPからの書込みリクエストWQ00、WQ01、WQ02、WQ03に含まれる論理アドレス値LAD0、1、2、3はアドレスバッファADDBUFへ格納され、書込みデータWDATA0、1、2、3はバッファBUF0〜BUF3へ格納される(図2)。次に、情報処理回路MNGERは、書込み物理アドレステーブルNXPADTBLを参照し、アドレスLAD0、1、2および3のそれぞれに対応する物理アドレスPAD0、1、2および3とデータを書込む不揮発性メモリ装置NVM10を決定する。次に、情報処理回路MNGERは、調停回路ARBとメモリ制御回路NVCT0を通じて、不揮発性メモリ装置NVM10に対し、ブロック消去命令BERS0を発行する。ブロック消去命令BERS0には、消去ブロックアドレスEBK0、消去命令ERSが含まれる。ブロック消去命令BERSの、消去ブロックアドレスEBK0によって消去領域ERS−ARAE0の全チェインメモリアレイCYに含まれる全メモリセルのデータは“1”(Set状態)となる(一括消去)。
次に、情報処理回路MNGERは、書込みデータWDATA0をバッファBUF0から読出し(図29AのStep401)、圧縮を行い(図29AのStep402)、データ圧縮率crateが許容圧縮率CpRate以下であるかをチェックする(図29AのStep403)。
ここで、図29Bに示す書込み領域WT−AREAにおいて、1つの物理アドレスに対する記憶容量は512個(64行x8列)のチェインメモリアレイCY分で、その内のセットチェインメモリアレイDSCY領域が24個(3行x8列)のチェインメモリアレイDCY分であるとする。熱ディスターブの影響を防ぎながら、1つの物理アドレスに対応するための許容データ書込み領域(メインデータ領域DArea)は、488(61行x8列)個のチェインメモリアレイCY分(512−24=488)となる。したがって、その際の、許容圧縮率CpRateは0.95(=488/512)となる。
次に、情報処理回路MNGERは、データ圧縮率crateが許容圧縮率CpRate以下であれば、アドレスLAD0に対応する不揮発性メモリ装置NVM10の物理アドレスPAD0へ、書込みデータWDATA0を圧縮した圧縮データCWDATA0に基づいてECCデータを含む冗長データRDATA0が生成される(図29AのStep404)。次に圧縮データCWDATA0と冗長データRDATA0を書き込むため、書込み命令WT0を発行する。書込み命令WT0には、物理アドレスPAD0、書込み命令WT、セクタカウント値SEC1、圧縮データCWDATA0と冗長データRDATA0が含まれる。書込み命令WT0の物理アドレスPAD0および書込み命令WTによってメモリ装置NVM10の物理アドレスPAD0に対応したチェインメモリアレイCYのメモリセルへ、圧縮データCWDATA0の中で“0”のデータのみが(Reset状態)、メインデータ領域DAreaへ書き込まれ、冗長データRDATA0が冗長領域RAreaへ書き込まれる(図29AのStep405)。
次に、情報処理回路MNGERは、物理アドレスPAD1に対応する書込みデータWDATA1をバッファBUF1から読出し、同様の手順で圧縮し、圧縮データCWDATA1をメモリ装置NVM10の物理アドレスPAD1に対応したチェインメモリアレイCYのメモリセルへ、圧縮データCWDATA1の中で“0”のデータ(Reset状態)のみを書き込む。
次に、情報処理回路MNGERは、書込みデータWDATA2をバッファBUF2から読出し(Step401)、圧縮を行い(Step402)、圧縮データCWDATA2を作成する。ここで、例えば、圧縮データCWDATA2のデータ圧縮率crateが許容データ圧縮率CpRate=0.95より大きいと判定された場合(Step403)、新たに、2つの物理アドレスに対応する許容圧縮率CpRateを計算する(図29AのStep406)。2つの物理アドレスに対する記憶容量は、1024個のチェインメモリアレイCY分で、そのうちのセットチェインメモリアレイDSCY領域は48個のチェイン分となる。そのため、熱ディスターブの影響を防ぎながら、2つ分の物理アドレスに対応した許容データ書込み領域(メインデータ領域DArea)のチェインメモリセル数は、976個のチェインメモリアレイCY分となる。したがって、この場合、2つの物理アドレスに対する許容圧縮率CpRateは0.95(=976/1024)となる。
次に、情報処理回路MNGERは、書込みデータWDATA3をバッファBUF3から読出し(Step401)、圧縮を行い(Step402)、圧縮データCWDATA3を作成する。圧縮データCWDATA2と圧縮データCWDATA3をあわせたデータ圧縮率crateが、Step403で判定される。この場合、許容圧縮率CpRateの0.95以下と判定され(Step403)、物理アドレスPAD2とPAD3のそれぞれの圧縮データCWDATA2とCWDATA3に基づいて、それぞれのECCデータを含む冗長データRDATA2とRDATA2が生成される(図29AのStep404)。
次に、メモリ装置NVM10の物理アドレスPAD2とPAD3に対応したメインデータ領域DAreaのチェインメモリアレイCYのメモリセルへ圧縮データCWDATA2とCWDATA3の中で“0”のデータのみ(Reset状態)が書き込まれ、冗長データRDATA2およびRDATA3が冗長領域RAreaのチェインメモリアレイCYのメモリセルへ書き込まれる(図29AのStep405)。
このように、1つの物理アドレスに対応するデータのデータ圧縮率crateが、1つの物理アドレスに対応するデータに対する許容圧縮率CpRate以下の場合は、1つの物理アドレスの圧縮データを書込み、1つの物理アドレスに対応するデータのデータ圧縮率crateが、1つの物理アドレスに対応するデータに対する許容圧縮率CpRateより大きい場合は、複数の物理アドレスに対応するデータを纏めて圧縮することにより、許容圧縮率CpRate以下になるまで圧縮でき、複数の物理アドレスの圧縮データを纏めて書き込むことで、常に、熱ディスターブの影響を防ぐためセットチェインメモリアレイDSCY領域を確保し、データを書込むことができる。そのため、熱ディスターブの影響を低減しながら、不揮発性メモリNVMへ高信頼にデータを書込み、保持でき、信頼性の高いメモリモジュールを提供できる。
図29Cは、情報処理装置CPU_CPから入力されたデータを情報処理回路MNGERが圧縮し、不揮発性メモリ装置へ書き込む際の、他の書込みフロー図である。
同図に示す書込みフローは、図29Aに示した書込みフローに類似している。すなわち、図29CにおけるStep501〜503および509は、図29AにおけるStep401〜403および405に相当する。図29Cに示すフローにおいては、Step503(図29AのStep403相当)で、データ圧縮率crateが許容圧縮率CpRate以下であると判定された場合、Step504において、圧縮された書込みデータに基づいてECCデータが生成される。圧縮された書込みデータは、“0”となっているビットと、“1”となっているビットの数が、Step505においてカウントされる。カウントされた“0”となっているビットの数が、カウントされた“1”となっているビットの数よりも多いか否かの判定が、次にStep506において行われる。“0”となっているビットの数が、“1”となっているビットの数よりも多い場合には、次にStep507が実行され、それ以外の場合には、Step508が実行される。
Step507においては、圧縮された書込みデータの各ビットを反転する。この反転されたデータが、物理アドレスにより指定され書込み領域WT−AREAに書き込まれる。
また、Step507を実行した後、Step508を実行した場合、Step508では、Step507にて反転されたデータは物理アドレスPADにより指定された書込み領域WT−AREAのメインデータ領域DAreaに書き込まれ、Step504にて生成されたECCデータと、圧縮&反転を意味するライトフラグ(WTFLG=2_1)が、物理アドレスPADにより指定された書込み領域WT−AREAに対応する冗長領域(RArea)に書き込まれる。また、Step507を実行せず、Step508を実行した場合、Step508では、Step507にて反転されたデータは物理アドレスPADにより指定された書込み領域WT−AREAのメインデータ領域DAreaに書き込まれ、Step504にて生成されたECCデータと、圧縮を意味するライトフラグ(WTFLG=2)が、物理アドレスPADにより指定された書込み領域WT−AREAに対応する冗長領域(RArea)に書き込まれる。
この様にすることにより、“0”を書き込む(リセットする)ビットを低減することができ、書込みの高速化を図ることができる。
また、Step504において生成されたECCデータについても、Step505〜507を適用してもよい。図29Cにおいては、Step506において、“0”のビット数が、“1”のビット数よりも少ない場合の処理が省略されている。“0”のビット数が少ない場合には、圧縮された書込みデータを反転せずに、書込み領域WT−AREAに書き込めばよい。
(実施の形態7)
<不揮発性メモリ装置のレイアウト7>
図31は、不揮発性メモリ装置内の一つのメモリアレイARYの他の例を示す模式的な平面図である。同図においても、●印および○印は、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示す。この実施の形態においては、SSDコンフィギュレーション情報(SDCFG)内のダミーチェインメモリアレイ指定情報(XYDMC)が、1_1_1とされている。これにより、書込み領域WT−AREA(WT−AREA0〜WT−AREA7)の外側に、1行、1列のダミーチェインメモリアレイDCYが設定される。ダミーチェインメモリアレイが、書込み領域WT−AREAの外側に設定されるため、一括消去動作により消去される消去領域と、データが書き込まれる(リセットされる)書込み領域WT−AREAとは、同じサイズになる。
この実施の形態においては、書込み領域WT−AREAは、メインデータMDTAを格納するメインデータ領域DAreaである8行x8列のチェインメモリアレイ(○印)と、冗長データRDATAを格納する冗長データ領域RArea領域である1行x8列のチェインメモリアレイ(○印)を含めるため、書込み領域(消去領域)は、9行x8列のチェインメモリアレイにより構成されていることになる。
この実施の形態においては、ダミーチェインメモリアレイDCYの列と行は、書込み領域WT−AREAの右側と上側(図31において)に配置される。そのため、図31から理解されるように、隣に書込み領域WT−AREAが隣接しない書込み領域WT−AREA(例えばWT−AREA0)においては、ダミーチェインメモリアレイDCYによって囲まれなくなり、ダミーチェインメモリアレイDCYの数を低減することが可能となる。この様にしても、隣に書込み領域が配置されていないため、熱による信頼性の低下は増加しない。
<変形例1:不揮発性メモリ装置のレイアウト8>
図32Aは、不揮発性メモリ装置内の一つのメモリアレイARYの他の例を示す模式的な平面図である。同図においても、●印および○印は、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示す。この実施の形態においては、SSDコンフィギュレーション情報(SDCFG)内のダミーチェインメモリアレイ指定情報(XYDMC)が、1_1_1とされている。これにより、書込み領域WT−AREA(WT−AREA0〜WT−AREA7、WT−AREA8〜WT−AREA15、WT−AREAn〜WT−AREAn+7)の外側に、1行、1列のダミーチェインメモリアレイDCYが設定される。ダミーチェインメモリアレイが、書込み領域WT−AREAの外側に設定されるため、一括消去動作により消去される消去領域ERS−AREA(図示せず)のサイズは、データが書き込まれる(リセットされる)書込み領域WT−AREAと同じ、あるいは書込み領域の整数倍となる。同図では、書込み領域WT−AREAは、9行x64列のチェインメモリアレイCY(○印)により構成されている。この書込み領域WT−AREAの上側および右側に、1行および1列のダミーチェインメモリアレイDCYが配置されている。
また、書込み領域WT−AREAは、メインデータMDTAを格納するメインデータ領域DAreaである8行x64列のチェインメモリアレイ(○印)と、冗長データRDATAを格納する1行x64列の冗長データ領域RAreaを含む。
書込み領域WT−AREA(例えば、WT−AREA0)の全チェインメモリアレイCYを一括消去(セット)した後、書込み領域WT−AREAのチェインメモリアレイCY(メインデータ領域DArea+冗長データ領域RArea=(8x64)+(1x64)=576バイト )に対してランダムな書込みを行う。あるいは、512バイトよりも少ない単位(例えば72=(64+8)バイト)で、シーケンシャルに書込みを行う。この実施の形態においては、シーケンシャルに書き込む単位に比べて大きな単位(576バイト)を、消去領域としている。そのため、消去領域を囲むダミーチェインメモリアレイの数を低減することが可能となり、小型化、ビットコストの低減を図ることができる。
なお、シーケンシャルな書込みは、例えば、9行x8列に配置されたチェインメモリアレイCYを1つの単位として行う。同図には、この単位が、細線で囲まれている。シーケンシャルな書込みは、この単位で、例えば同図において、左から右に向かって書込みを行うことにより実施される。
<変形例2:不揮発性メモリ装置のレイアウト9>
図32Bは、不揮発性メモリ装置内の一つのメモリアレイARYの他の例を示す模式的な平面図である。同図においても、●印および○印は、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示す。この実施の形態においては、SSDコンフィギュレーション情報(SDCFG)内のダミーチェインメモリアレイ指定情報(XYDMC)が、1_1_1とされている。これにより、書込み領域WT−AREA(WT−AREA0〜WT−AREA7、WT−AREA8〜WT−AREA15、WT−AREAn〜WT−AREAn+7)の外側に、1行、1列のダミーチェインメモリアレイDCYが設定される。同図では、書込み領域WT−AREAは、9行x512列のチェインメモリアレイCY(○印)により構成されている。この書込み領域WT−AREAの上側および右側に、1行および1列のダミーチェインメモリアレイDCYが配置されている。
書込み領域WT−AREA(例えば、WT−AREA0)の全チェインメモリアレイCYを一括消去(セット)した後、書込み領域WT−AREAのチェインメモリアレイCY(メインデータ領域DArea+冗長データ領域RArea=(8x512)+(1x512)=4608バイト )に対して書込みを行う。
書込み領域WT−AREAは、4608バイトより少ない単位である576(=512+64)を1つの物理アドレスPADとして、複数の物理アドレスPAD0〜PADmを含んでいる場合、情報処理装置CPU_CPから制御回路MDLCT0へランダムに入力される論理アドレスLAD(たとえば、1つの物理アドレスは512バイトのデータサイズを持つ)に対して、制御回路MDLCT0は書込み領域WT−AREA内の物理アドレスPAD0〜PADmをシーケンシャルに割り当てて、書き込みを行う。例えば同図において、左から右に向かって書込みを行うことにより実施される。
また、1つの書込み領域WT−AREAが、1つの物理アドレスに対応している場合、情報処理装置CPU_CPから制御回路MDLCT0へランダムに入力される論理アドレスLAD(たとえば、1つの物理アドレスは4096バイトのデータサイズを持つ)に対して、制御回路MDLCT0は書込み領域WT−AREA内の物理アドレスPADを割り当てて、その物理アドレスPAD内のチェインメモリアレイCYを、576(=512+64)バイトの単位でシーケンシャルに書き込みを行う。例えば同図において、左から右に向かって書込みを行うことにより実施される。
この実施の形態においては、シーケンシャルに書き込む単位に比べて大きな単位(たとえば、4608バイト)を、消去領域としている。そのため、消去領域を囲むダミーチェインメモリアレイの数を低減することが可能となり、小型化、ビットコストの低減を図ることができる。
<変形例3:不揮発性メモリ装置のレイアウト10>
図33Aは、不揮発性メモリ装置内の一つのメモリアレイARYの他の例を示す模式的な平面図である。同図においても、●印および○印は、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示す。この実施の形態においては、SSDコンフィギュレーション情報(SDCFG)内のダミーチェインメモリアレイ指定情報(XYDMC)が、1_1_0とされている。これにより、書込み領域WT−AREA(WT−AREA0〜WT−AREAn)の外側に、1行のダミーチェインメモリアレイDCYが設定される。同図では、書込み領域WT−AREAは、9行x4096列のチェインメモリアレイCY(○印)により構成されている。この書込み領域WT−AREAの上側に、1行のダミーチェインメモリアレイDCYが配置されている。
書込み領域WT−AREA(例えば、WT−AREA0)の全チェインメモリアレイCYを一括消去(セット)した後、書込み領域WT−AREAのチェインメモリアレイCY(メインデータ領域DArea+冗長データ領域RArea=(8x4096)+(1x4096)=36864バイト )に対して書込みを行う。
また、書込み領域WT−AREAは、36864バイトより少ない単位である576(=512+64)や4608(=8x512+1x512)を1つの物理アドレスPADとして、複数の物理アドレスPAD0〜PADmを含んでいる場合、情報処理装置CPU_CPから制御回路MDLCT0へランダムに入力される論理アドレスLAD(1つの物理アドレスは512バイトや4096バイトのデータサイズを持つ)に対して、制御回路MDLCT0は書込み領域WT−AREA内の物理アドレスPAD0〜PADmをシーケンシャルに割り当てて、書き込みを行う。例えば同図において、左から右に向かって書込みを行うことにより実施される。
また、1つの書込み領域WT−AREAが、1つの物理アドレスに対応している場合、情報処理装置CPU_CPから制御回路MDLCT0へランダムに入力される論理アドレスLAD(たとえば、1つの物理アドレスは32768バイトのデータサイズを持つ)に対して、制御回路MDLCT0は書込み領域WT−AREA内の物理アドレスPADを割り当てて、その物理アドレスPAD内のチェインメモリアレイCYを、576(=512+64)バイトの単位でシーケンシャルに書き込みを行う。例えば同図において、左から右に向かって書込みを行うことにより実施される。
この実施の形態においては、シーケンシャルに書き込む単位に比べて大きな単位(36864バイト)を、消去領域としている。そのため、消去領域を囲むダミーチェインメモリアレイの数を低減することが可能となり、小型化、ビットコストの低減を図ることができる。また、同図において、左右に隣接する書込み領域が配置されていないため、列を構成するダミーチェインメモリアレイDCYを設ける必要がなく、更なる小型化が図れる。
<変形例4:不揮発性メモリ装置のレイアウト11>
図33Bは、不揮発性メモリ装置内の一つのメモリアレイARYの他の例を示す模式的な平面図である。同図においても、●印および○印は、ワード線WL0〜WLkとビット線BL0〜BLiの交点に配置されたチェインメモリアレイCYを示す。この実施の形態においては、SSDコンフィギュレーション情報(SDCFG)内のダミーチェインメモリアレイ指定情報(XYDMC)が、1_1_0とされている。これにより、書込み領域WT−AREA(WT−AREA0〜WT−AREA7)の外側に、1行のダミーチェインメモリアレイDCYが設定される。同図では、書込み領域WT−AREAは、4096列x8行のチェインメモリアレイCY(○印)により構成されている。この書込み領域WT−AREAの上側に、1行のダミーチェインメモリアレイDCYが配置されている。
図33Bは、図33Aと類似している。図33Aにおいては、冗長データを格納する冗長データ領域RAreaが、行に配置されたチェインメモリアレイCYにより構成されていた。これに対して、図33Bにおいては、冗長データを格納する領域RAreaは、複数の列に配置されたチェインメモリアレイCYにより構成される。
書込み領域WT−AREA(例えば、WT−AREA0)の全チェインメモリアレイCYを一括消去(セット)した後、書込み領域WT−AREAのチェインメモリアレイCY(メインデータ領域DArea+冗長データ領域RArea=(8x512)x8 +(8x16)x8=4096x8+128x8= 32768+ 1024=33792バイト )に対して書込みを行う。
また、書込み領域WT−AREAは、333792バイトより少ない単位である528(=512+16)や4224(=8x512+8x16)を1つの物理アドレスPADとして、複数の物理アドレスPAD0〜PADmを含んでいる場合、情報処理装置CPU_CPから制御回路MDLCT0へランダムに入力される論理アドレスLAD(1つの物理アドレスは512バイトや4096バイトのデータサイズを持つ)に対して、制御回路MDLCT0は書込み領域WT−AREA内の物理アドレスPAD0〜PADmをシーケンシャルに割り当てて、書き込みを行う。例えば同図において、左から右に向かって書込みを行うことにより実施される。
また、1つの書込み領域WT−AREAが、1つの物理アドレスに対応している場合、情報処理装置CPU_CPから制御回路MDLCT0へランダムに入力される論理アドレスLAD(たとえば、1つの物理アドレスは32768バイトのデータサイズを持つ)に対して、制御回路MDLCT0は書込み領域WT−AREA内の物理アドレスPADを割り当てて、その物理アドレスPAD内のチェインメモリアレイCYを、528(=512+16)バイトの単位でシーケンシャルに書き込みを行う。例えば同図において、左から右に向かって書込みを行うことにより実施される。
この実施の形態においては、シーケンシャルに書き込む単位に比べて大きな単位(333792バイト)を、消去領域としている。そのため、消去領域を囲むダミーチェインメモリアレイの数を低減することが可能となり、小型化、ビットコストの低減を図ることができる。また、同図において、左右に隣接する書込み領域が配置されていないため、列を構成するダミーチェインメモリアレイDCYを設ける必要がなく、更なる小型化が図れる。
上記した実施の形態において、ダミーチェインメモリアレイDCYのそれぞれは、セット状態に予め設定することが望ましい。これは、例えば、初期設定の際にセットすることにより、実現することができる。しかしながら、初期設定の際ではなく、不揮発性メモリ装置の全物理アドレスPADへのアクセスが完了するまでは、例えば、情報処理装置CPU_CPから制御回路MDLCT0へ入力される論理アドレスLADに対して、物理的に隣接し、連続した書込み領域WT−AREAと、書込み領域WT−AREA内での物理的に隣接し、連続した物理アドレスPADを選択する。そして、最初に、物理アドレスPADへ、データを書き込む際には、書込み領域WT−AREAでの消去動作が、ダミーチェインメモリアレイDCYも含めて、順番に実行される様に、書込み動作を行う様にしてもよい。この場合、同一物理アドレスPADへの2回目以降の書込み動作においては、ダミーチェインメモリアレイDCYを含めないで、消去動作と書込み動作を行う様にする。この場合、書込み領域WT−AREAはランダムに選択しても良い。
上記の具体的な書込み方法の一例を図34に示す。
先ず、Step601では、図1の情報処理装置CPU_CPから、図2の情報処理回路MNGERへの書込リクエストを待っており、もし書込みリクエストWQが入力されると(Step601)、情報処理回路MNGERは、ライトリクエストWQの書込みデータ(MDATA)から、ECCデータを含む冗長データRDATAを生成する(Step601)。次に、情報処理回路MNGERは、書込み領域WT−AREA[i]のiの値が最大値以下であるかをチェックする(Step602)。iの値が、最大値以下であればStep603を行い、それ以外はStep609を行う。iの値の最大値はメモリモジュールNVMD0の不揮発性メモリNVM10〜17の最大物理容量に含まれる書き込み領域の数によって決まる。
Step603では、書込み領域WT−AREA[i]を選択する。次のStep604では、書込み領域WT−AREA[i]内の消去領域ERS−AREAの消去回数が0以下であるかをチェックする。この消去回数が0以下であればStep605を行い、それ以外はStep609を行う。
Step605では、書込み領域WT−AREA[i]内の消去領域ERS−AREAのチェインメモリアレイCYと、この消去領域ERS−AREAの外側へ配置されているダミーチェインメモリアレイDCYの全メモリセルを消去状態(Set状態)とする。
次のStep606では、書込み領域WT−AREA[i]の中の、物理的に隣接し配置されている物理アドレスPADを順番に選択し、その選択された物理アドレスPADに含まれるメインデータ領域DAreaへ書込みデータ(MDATA)を書き込み、冗長データ領域RAreaへ冗長データRDATAを書き込む。
次のStep607では、書込み領域WT−AREA[i]に含まれている全ての物理アドレスPADに対して書込みが行われたかをチェックする。もし書込み領域WT−AREA[i]に含まれている全ての物理アドレスPAD書込みが行われていれば、Step608を行い、それ以外は、Step601を行う。Step608ではiの値を1つ加算した新たなiの値を決定する。iの値が連続に決定されることにより、物理的に隣接し配置されている書込み領域WT−AREAを選択することになる。Step608終了後、Step601を行う。
Step609では、メモリモジュールNVMD0の不揮発性メモリ装置NVM10〜17の全書き込み領域WT−AREA(物理アドレスPAD)への書込みアクセスが1回だけ完了し、不揮発性メモリ装置NVM10〜17に含まれる全ダミーチェインメモリアレイDCYの全メモリセルは消去状態(Set状態)となったため、2回目以降の書込み動作においては、これまでに説明した様に、ダミーチェインメモリアレイDCYを含めないで、消去動作と書込み動作を行う。この場合、書込み領域WT−AREAはランダムに選択することができる。
図33Bを参照すれば、書込み領域WT−AREA0は物理アドレスPAD0〜7を含み、書込み領域WT−AREA1は物理アドレスPAD8〜15を含み、書込み領域WT−AREAnは物理アドレスPADm〜m+7を含む。
Step603では、書込み領域WT−AREA0が選択され、Step605にて、書込み領域WT−AREA0内の消去領域ERS−AREAのチェインメモリアレイCYと、消去領域ERS−AREAの外側の1行に配置されているダミーチェインメモリアレイDCY内の全メモリセルを消去状態(Set状態)とする。図33Bの場合、書込み領域WT−AREAと消去領域ERS−AREAは同じ領域である。
次に、Step606にて、書込み領域WT−AREA0の中の物理アドレスPAD0から順にPAD7まで、書込みが行われる。例えば同図において、左から右に向かって書込みを行うことにより実施される。
書込み領域WT−AREA0の全物理アドレスPAD0〜7の書き込みが終了すると、Step606にてiの値を1つ加算し、i=1(=0+1)とする。これによって、次の書き込みのために、書込み領域WT−AREA0へ隣接している書込み領域WT−AREA1が選択され同様の書込み動作が繰り返される。
書込み領域WT−AREAが複数の物理アドレスPADを含む場合について説明したが、書込み領域WT−AREAが1つ物理アドレスPADのみを含む場合についても同様の動作を行えることは言うまでもない。
この様な書込み方法によって、データを書込みながら、ダミーチェインメモリアレイDCYをセット状態にでき、初期設定の際にダミーチェインメモリアレイDCYをセット状態にする時間が必要なく、初期設定時間が短縮でき、すぐに、メモリモジュールNVMMD0を利用することができる。
(まとめ)
以上に説明した各実施の形態によって得られる主な効果は以下の通りである。
第1に、同時に複数のチェインメモリアレイCY内のメモリセルを低抵抗にすることができ、消去データレートを向上することができる。第2に、チェインメモリアレイCYの消去後、データ“0”のみメモリセルへ書き込まれるため書き込み速度が向上することができる。第3にチェインメモリアレイCY内の全てのメモリセルに対して、一旦、セット状態およびリセット状態の中の一方の状態を一括して書き込んだ後(消去後)、他方の状態を特定のメモリセルに書き込むような方式を用いることで、安定した書込み動作が実現可能となる。第4に、書込み領域WT―AREA間にダミーチェインメモリアレイDCYが存在することで、熱ディスターブに影響なく、書込み領域WT―AREAへ高信頼にデータを書込み、保持でき、信頼性の高いメモリモジュールを提供できる。第5に、ダミーチェインメモリアレイDCYをどの様に配置するかは不揮発性メモリ装置内の初期設定領域へプログラム可能であり、メモリモジュールNVMMD0が要求される機能、性能及び信頼性のレベルに合わせて柔軟に対応することができる。
第6に、書き込みデータ(DATA0)の中で、“0”のビットデータ数が“1”のビットデータ数より多い場合、書き込みデータの各ビットを反転させることで、“0”のビットデータの数が常に1/2以下となる。これにより、“0”のビットデータを書き込む量を半減でき、低電力と高速化を両立するメモリモジュールを実現できる。第7に、セットチェインメモリアレイDSCYは、書込み領域WT―AREA間の熱ディスターブの影響を緩和する緩衝領域と、データ“1”を記録しているメモリアレイの双方の役割を担うことができるため、不揮発性メモリの記憶容量のペナルティの上昇を防ぎながら、熱ディスターブの影響を低減し、書込み領域WT―AREAへ高信頼にデータを書込み、保持でき、信頼性の高いメモリモジュールを提供できる。第8に、セットチェインメモリアレイDSCYをどの様に配置するかは不揮発性メモリ装置内の初期設定領域へプログラム可能であり、メモリモジュールNVMMD0が要求される機能、性能及び信頼性のレベルに合わせて柔軟に対応することができる。第9に、データを圧縮することで、セットチェインメモリアレイDSCYを確保できるため、熱ディスターブの影響を低減しながら、書込み領域WT―AREAへ高信頼にデータを書込み、保持でき、信頼性の高いメモリモジュールを提供できる。第10に、図23B等で述べたように、ライトリクエストのバッファへの格納と、書き込み事前準備と、相変化メモリへの書き込み動作をパイプライン的に処理することで、高性能な情報処理システムを実現できる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、実施の形態においては、主に相変化メモリを代表として説明を行ったが、ReRAM等を含めた抵抗変化型のメモリであれば、同様に適用して同様の効果が得られる。
また、実施の形態において、複数のメモリセルが半導体基板に対して高さ方向に順に積層して配置される3次元構造のメモリを代表として説明を行ったが、半導体基板に対して高さ方向に1つのメモリセルが配置される2次元構造のメモリにおいても同様に適用して同様の効果が得られる。