以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明する。特に明示した場合を除き、それらは互いに無関係ではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
実施の形態において各ブロックを構成する回路素子は特に制限されないが、公知のCMOS(相補型MOSトランジスタ)等の集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。さらに、これらのメモリセルには、相変化メモリ、ReRAM(Resistive Ramdam Access Memory)のような抵抗性記憶素子を用いるものとする。
[各形態例の概要]
まず、後述する形態例で採用する技術の概要を説明する。各形態例は、メモリセルが相変化メモリであるものとして説明する。すなわち、複数個の抵抗変化型メモリと、これらのメモリを制御するコントローラから構成されるSSDにおいて、長寿命のSSDを実現するために、書き込み時にコントローラが実行する物理アドレスの割り当て制御技術について説明する。なお、形態例に係るコントローラの制御は、相変化メモリに対する発明者らの以下の考察に基づいている。
相変化メモリへの書き込みは、電流により発生するジュール熱の影響を制御することにより、メモリセルの抵抗値を制御する。この相変化メモリへの書き込み時は、書き込むメモリセルに隣接したメモリセルほど、このジュール熱による熱履歴の影響を受けやすく、書き換え動作によって、書き込みを行わない隣接したメモリセルの電気特性に大きな影響をもたらし、抵抗値に大きなバラツキが発生するという問題があることが判明した。
また、相変化メモリセルへデータを上書きする場合においては、書き換え後の状態の差異により抵抗値が変動するため、メモリセル間の抵抗バラツキが大きくなり、特性に大きな影響を及ぼすことが判明した。
以下の形態例においては、複数の相変化メモリと、これらのメモリを制御するコントローラから構成されるSSDに関し、コントローラから以下の(1)〜(6)に示す書き込み方法を実現する高信頼かつ長寿命のSSDを提供することを目的とする。
(1) コントローラは、信頼性のレベルに応じ、データの書き込みを許可するメモリセルの物理的な配置を決定し、書き込みを行う。
(2) コントローラは、信頼性のレベルに応じ、データの書き込みを禁止するメモリセルの連続した物理的な配置を決定し、書き込みを行う。
(3) コントローラは、信頼性のレベルに応じ、モニター用のメモリセルを設ける。
(4) コントローラは、信頼性のレベルに応じ、データを圧縮し、メモリセルに書き込みを行う。
(5) コントローラから相変化メモリへの書き込み方法は、データの上書きを行うのではなく、相変化メモリセルの状態をアモルファス又は結晶状態のいずれかの状態に一旦設定し(消去動作)、その後、所望のデータを書き込む(書き込み動作)。
(6) SDDコンフィグレーション情報SDCFGをプログラム可能にし、柔軟に、情報処理システム装置にあわせたメモリモジュールNVMSTR0を構成する。
これらの目的を実現するため、実施形態に係るコントローラにおいては、内部レジスタに記憶されている情報に基づいて、データ書込時のジュール熱による熱履歴の影響を受け難くするように、データの書き込みを許可する物理アドレスWPPADを決め、ホストからコントローラに入力される論理アドレスと、この物理アドレスの対応付けを行うアドレスマップADMAPを生成する。さらに、内部レジスタはホストが書き換えることが可能である。
コントローラは、相変化メモリへデータを書き込む際、データの書き込みが許可されたアドレスの中で連続したアドレスに書き込む。コントローラは、ホストから受け取った書き込みデータを圧縮した後、相変化メモリへ書き込む。コントローラは、ホストコントローラからのライトリクエストをバッファへ格納し、書込み事前準備が終了した後、相変化メモリへ書き込む。コントローラには、書込み物理アドレステーブルNXPADTBLへ、将来のライトリクエストに備え、事前に書込み物理アドレスを格納する。
コントローラは、電源投入直後、アドレスマップADMAP、アドレス変換テーブルLPTBL、物理セグメントテーブルPSEGTBL、物理テーブルPADTBを初期化し、さらに不揮発性メモリ装置および書込み物理アドレステーブルNXPADTBLを初期化する。
コントローラは、ライトリクエストのバッファへの格納と、書き込み事前準備と、相変化メモリへの書き込み動作をパイプライン的に処理する。コントローラは、書込み物理アドレステーブルNXPADTBLへ物理アドレスを登録する際は、セグメント毎の無効状態の物理アドレスの書換え回数を比較し、最も少ない書き換え回数を持つセグメントを選択し、そのセグメント内の物理アドレスを順に登録する。コントローラは、書込み物理アドレステーブルNXPADTBLへ物理アドレスを登録する際、物理アドレスの消去回数と、消去回数閾値より小さな消去回数を持つ物理アドレスを選択する。
コントローラは、無効物理アドレスの最大消去回数と、有効物理アドレスの最小消去回数の差DIFECを求め、この差DIFECが閾値DERCthより大きい場合は、この差DIFECを小さくするため、無効物理アドレスに関する最大消去回数MXERCの中の最小値MXNERCを持つ物理アドレスDPADのデータを、無効物理アドレスに関する最大消去回数MXERCの中の最小値MXNERCを持つ物理アドレスDPAD1へ移動させる。
このコントローラの採用により、データ書込時に発生するジュール熱がメモリセルに与える熱履歴の影響が小さくするように物理アドレスを決めることができる。これにより、高信頼で長寿命のSSDを提供することができる。
さらに、ホストからの論理アドレスに対応する物理アドレスをシーケンシャルに割り当てることにより、相変化メモリの物理アドレス毎のデータ消去回数のバラツキを抑えることができ、高信頼で長寿命のSSDを提供できる。さらに、コントローラはライトリクエストのバッファへの格納と、書込み事前準備と、相変化メモリへの書き込み動作をパイプライン的に処理するため、高性能なSSDを提供できる。
(実施の形態)
本発明を適用した実施の形態である情報処理システムについて、図2〜図35を用いて説明する。
図2は、本発明を適用した実施の形態である情報処理装置CPU_CHIPとメモリモジュールNVMSTR0とから構成される情報処理システム装置において、その構成の一例を示すブロック図である。図2に示されるように、情報処理装置CPU_CHIPは、特に限定しないがメモリモジュールNVMSTR0へ保存されているデータを最小512バイト単位の論理アドレスLADにて管理するホストコントローラである。インターフェース信号HDH_IFを通じ、このメモリモジュールNVMSTR0に対してデータの読み出しや書込みを行う。
情報処理装置CPU_CHIPとメモリモジュールNVMSTR0を接続する信号方式には、シリアルインターフェース信号方式、パラレルインターフェース信号方式、光インターフェース信号方式などがある。いうまでもなく、全ての方式を利用することができる。
情報処理装置CPU_CHIPとメモリモジュールNVMSTR0を動作させるクロック方式には、コモンクロック方式、ソースシンクロナスクロック方式、エンベデッドクロック方式などがある。いうまでもなく、全てのクロック方式を利用することができる。本実施の形態はエンベデッドクロック方式であり、シリアルインターフェース信号方式による動作の一例を説明する。
情報処理装置CPU_CHIPからクロック情報が埋め込まれ、シリアルデータへ変換されたリードリクエストRDREQやライトリクエストWTREQなどがインターフェース信号HDH_IFを通じてメモリモジュールNVMSTR0へ入力される。
リードリクエストRDREQには論理アドレス値LAD、データ読み出し命令RD、セクタカウントSECなどが含まれ、また、ライトリクエストWTREQには論理アドレス値LAD、データ書込み命令WRT、セクタカウントSECおよび書込みデータWDATAなどが含まれる。
メモリモジュールNVMSTR0は、不揮発性メモリ装置NVM10からNVM17と、ランダムアクセスメモリRAMと、これら不揮発性メモリ装置およびランダムアクセスメモリを制御する制御回路STRCT0から構成されている。不揮発性メモリ装置NVM10からNVM17は同じ構成および性能を持つ不揮発性メモリ装置である。
また、図3に示されるように制御回路STRCT0は、インターフェース回路HOST_IFと、バッファBUF0〜BUF3と、不揮発性メモリ装置NVM0と、書込み物理アドレステーブルNXPTBL1-2と、調停回路ARBと、情報処理回路MANAGERと、不揮発性メモリ装置NVM10からNVM17をそれぞれ直接制御するメモリ制御装置NVCT0からNVCT7と、ランダムアクセスメモリRAMを直接制御するメモリ制御装置RAMCと、MAPREGとで構成される。また、図4に示す制御回路STRCT01は複数の書込み物理アドレステーブルNXPTBL0-3を装備している点が、図3とは異なるが、それ以外の構成や機能は図3と同等である。
図5は、不揮発性メモリ装置NVM10からNVM17として利用されている不揮発性メモリNVMEMの一例を示すブロック図であり、相変化型の不揮発メモリを例に示してある。
不揮発性メモリNVMEMはクロック生成回路SYMD、ステータスレジスタSTREG、アドレスおよびコマンドインターフェース回路ADCOMIF、IOバッファIOBUF、制御回路CONTLOGIC、温度センサTHMO、データ制御回路DATACTL、メモリバンクBK0〜BK3から構成される。各メモリバンクには、メモリアレイARYx(x=0〜m)、ロウアドレスラッチRADLT、カラムアドレスラッチCADLT、ロウデコーダROWDEC、カラムデコーダCOLDEC、データ選択回路DSW1、データバッファDBUF0およびデータバッファDBUF1が含まれる。
各メモリアレイARYx(x=0〜m)には、複数のメモリセルcelと、ビット線選択回路BSWx(x=0〜m)、センスアンプSAx(x=0〜m)およびライトドライバWDRx(x=0〜m)が含まれる。
制御信号CTLは、コマンド・ラッチイネーブルCLE、チップイネーブル信号CEB、アドレス・ラッチ信号ALE、ライトイネーブル信号WEB、リードイネーブル信号REB、レディビジー信号RBBから構成される。I/O信号は入出力信号であり、コマンド、アドレスおよび書き込みデータが入力され、読み出しデータが出力される。
[不揮発性メモリ装置への書き込み動作]
図6は、不揮発性メモリ装置NVM1x(x=0〜7)がMバイトのデータを、データバッファDBUF0を介してメモリセルcelへ書き込む際の書き込み動作の例を示している。なお、図6および図7における「m*n」等の「*」は「×」(乗算)を意味するものである。
ロウ・レベルとなっているコマンド・ラッチイネーブル信号CLEをハイ・レベルに駆動し、ハイ・レベルとなっているチップイネーブル信号CEB及びアドレス・ラッチイネーブル信号ALEをロウ・レベルに駆動する。この後、書き込みコマンドW10を入出力線I/Ox(x=0〜7)を介して入力すると、ライトイネーブル信号WEBの立ち上がりエッジによって書き込みコマンドW10がアドレス・コマンドインターフェース回路ADCMDIFへ取り込まれ、解読される。また、コマンドW10には、データバッファDBUF0あるいはDBUF1を指定する情報も含まれており、図6の例ではデータバッファDBUF0を指定している。
次に、ハイ・レベルとなっているコマンド・ラッチイネーブル信号CLEをロウ・レベルへ、ロウ・レベルとなっているアドレス・ラッチイネーブル信号ALEをハイ・レベルに夫々駆動して、カラム・アドレスを2回(CA1、CA2)、ロウ・アドレスを3回(RA1、RA2、RA3)に分けて順に入力する。これらのアドレスは、ライトイネーブル信号WEBの立ち上がりエッジによって、アドレス・コマンドインターフェース回路ADCMDIFへ取り込まれ、解読される。
アドレス・コマンドインターフェース回路ADCMDIFにてアドレス、コマンドW10を解読した結果、メモリバンクBK0への読み出し命令であることを制御回路CONTLOGICへ伝えると、制御回路CONTLOGICは、メモリバンクBK0からデータを読み出すため、メモリバンクBK0を活性化する。
アドレス・コマンドインターフェース回路ADCMDIFへ入力されたロウアドレス(RA1、RA2、RA3)およびカラム・アドレスを(CA1、CA2)は制御回路CONTLOGICを通じて、それぞれ、活性化されたメモリバンクBK0のロウアドレスラッチ回路RADLTへ転送され、カラムアドレスラッチ回路CADLTへ転送される。この書き込み動作は最初に入力されたカラムアドレスから開始される。
ロウアドレスラッチ回路RADLTからロウアドレス(RA1、RA2、RA3)がロウデコーダROWDECへ転送され、ロウデコーダROWDECによってロウアドレス(RA1、RA2、RA3)に対応したワード線WLnが選択される。
次に、カラムアドレスラッチ回路CADLTからカラム・アドレス(CA1、CA2)がカラムデコーダCOLDECへ転送され、解読される。
カラムデコーダCOLDECからの解読結果は、各メモリアレイ(ARY0-m)のビット線選択回路BSW0-mへ入力され、メモリアレイ毎に一つのビット線BLが選択され、データ線DT0-mを介して書き込み(ライト)ドライバWDR0-mへ接続される。
書き込みドライバWDR0-mは、データ線DT0-mを介して、図1のような電流パルスによって、選択されたメモリセルcelを低抵抗状態や高抵抗状態にするための電流供給回路である。
メモリセルcelを高抵抗状態にする、すなわち記憶情報“0”を書き込む場合に、データ線DT0-nを介して印加するメモリセル電流Icellをリセット動作に必要な値Iresetに制御する。
メモリセルcelを低抵抗状態にする、すなわち記憶情報“1”を書き込む場合に、データ線DT0-nを介して印加するメモリセル電流Icellをセット動作に必要な値Isetに制御する。
一つのメモリバンクの中に、書き込みドライバWDRは合計m×8個存在するため、一つのメモリバンクの中で、同時にmバイトのメモリセルcelを書き込むことができる。
次に、ハイ・レベルとなっているアドレス・ラッチイネーブル信号ALEをロウ・レベルに駆動して、ライトイネーブル信号WEBの立ち上がりエッジに同期して、記憶情報DI(1)〜DI(M)が入出力線I/Ox(x=0〜7)を介して、1バイト分のデータが順次データバッファDBUF0へ入力される。
データバッファDBUF0へnバイト分のデータが入力するたびに、n×8個分の書き込みドライバWDRを通じて、nバイト分のデータが書き込まれる。以下に、その動作を示す。
先ず、最初のnバイト分のデータの書き込み動作を説明する。
データバッファDBUF0へ最初のnバイト分のデータの中で、最初の1バイト分のデータが入力した時点で、書き込みドライバWDRを通じて、カラム・アドレス{CA1、CA2}によって選択された最初のnバイト分のメモリセルを低抵抗状態(消去:ERS0)する。次に、データバッファDBUF0へ最初のnバイト分のデータがすべて入力した時点で、データバッファDBUF0に保持されているデータの中で“0”のデータのみを書き込みドライバWDRによってメモリセルを高抵抗状態(プログラム:PROG1)にする。これによって、最初のnバイト分のデータ書き込みが行われる。
次に、2番目のnバイト分のデータの書き込み動作を説明する。
データバッファDBUF0へ2番目のnバイト分のデータの中で、最初の1バイト分のデータが入力した時点で、書き込みドライバWDRを通じて、カラム・アドレス{{CA1、CA2}+(n)}によって選択された2番目のnバイト分のメモリセルを低抵抗状態(消去:ERS0)にする。次に、データバッファDBUF0へ2番目のnバイト分のデータがすべて入力した時点で、データバッファDBUF0に保持されているデータの中で“1”のデータのみを書き込みドライバWDRによってメモリセルを高抵抗状態(プログラム:PROG1)にする。これによって、2番目のnバイト分のデータ書き込みが行われる。
3番目のnバイト分のデータの書き込み動作も、上記の動作と同様に行われ、その際のカラム・アドレスは{{CA1、CA2}+(2n)}となる。
このように、開始カラムアドレス{CA1、CA2}へ順にnの倍数を加算したカラムアドレスによって選択されたnバイト分のメモリセルcelへ消去(ERS0)とプログラム(PROG1)が実行される。
Mバイトのデータを書き込む際は、消去(ERS0)とプログラム(PROG1)がM/n回生じる。
また、書き込みコマンドW10にてデータバッファDBUF1を指定した場合は、入出力線I/Ox(x=0〜7)を介してデータバッファDBUF1へ入力され、データバッファDBUF1に保持されたデータがメモリセルcelへ書き込まれる。
以上説明したように不揮発性メモリ装置NVM1x(x=0〜7)はMバイトのデータを書き込む際には、要求されたMバイトデータサイズだけの消去(ERS0)とプログラム(PROG1)動作を行う。
つまり、消去(ERS0)のデータサイズとプログラム(PROG1)のデータサイズは等しいため、余分なアドレスのデータを消去(ERS0)する必要が無いため、高速な書き込みを実現できる。
さらに、この書き込み動作において、上書きはせず、一旦、対象となるメモリセルcelを消去状態とすることで、メモリセルの抵抗値の均一化を図ることができ、安定した書き込みや読み出し動作を実現できる。
[不揮発性メモリ装置からの読み出し動作]
図7は、不揮発性メモリ装置NVM1x(x=0〜7)から、指定されたデータサイズ分のデータを、データバッファDBUF0を介して読み出す際の読み出し動作の例を示している。
ロウ・レベルとなっているコマンド・ラッチイネーブル信号CLEをハイ・レベルに駆動し、ハイ・レベルとなっているチップイネーブル信号CEB及びアドレス・ラッチイネーブル信号ALEをロウ・レベルに駆動する。
次に、読み出しコマンドRD4を入出力線I/Ox(x=0〜7)を介して入力すると、ライトイネーブル信号WEBの立ち上がりエッジによって、第一のセクター読み出しコマンドRD4がアドレス・コマンドインターフェース回路ADCOMIFへ取り込まれ、解読される。
次に、ハイ・レベルとなっているコマンド・ラッチイネーブル信号CLEをロウ・レベルへ、ロウ・レベルとなっているアドレス・ラッチイネーブル信号ALEをハイ・レベルに夫々駆動して、カラム・アドレスを2回(CA1、CA2)、ロウ・アドレスを3回(RA1、RA2、RA3)に分けて順に入力する。これらのアドレスは、ライトイネーブル信号WEBの立ち上がりエッジによって、アドレス・コマンドインターフェース回路ADCOMIFへ取り込まれ、解読される。
次にロウ・レベルとなっているコマンド・ラッチイネーブル信号CLEをハイ・レベルに駆動し、ハイ・レベルとなっているチップイネーブル信号CEB及びアドレス・ラッチイネーブル信号ALEをロウ・レベルに駆動する。
次に、第2のセクターデータ読み出しコマンドRD41を入出力線I/Ox(x=0〜7)を介して入力すると、ライトイネーブル信号WEBの立ち上がりエッジによって、第2の読み出しコマンドRD41がアドレス・コマンドインターフェース回路ADCOMIFへ取り込まれ、解読される。
コマンドRD4およびRD41には、データバッファDBUF0あるいはDBUF1を指定する情報も含まれており、図7の例ではデータバッファDBUF0を指定している。
アドレス・コマンドインターフェース回路ADCOMIFにてアドレス、コマンドRD4およびコマンドRD41を解読した結果、メモリバンクBK0への読み出し命令であることを制御回路CONTLOGICへ伝えると、制御回路CONTLOGICは、メモリバンクBK0からデータを読み出すため、メモリバンクBK0を活性化する。
アドレス・コマンドインターフェース回路ADCOMIFへ入力されたロウアドレス(RA1、RA2、RA3)およびカラム・アドレスを(CA1、CA2)は制御回路CONTLOGICを通じて、それぞれ、活性化されたメモリバンクBK0のロウアドレスラッチ回路RADLTへ転送され、カラムアドレスラッチ回路CADLTへ転送される。
ロウアドレスラッチ回路RADLTからロウアドレス(RA1、RA2、RA3)がデコーダROWDECへ転送され、デコーダROWDECによってロウアドレス(RA1、RA2、RA3)に対応したワード線WLiが選択される。
次に、カラムアドレスラッチ回路CADLTからカラム・アドレスが(CA1、CA2)がカラムデコーダCOLDECへ転送され解読される。
カラムデコーダCOLDECからの解読結果は、各メモリアレイ(ARY0-m)のビット線選択回路BSW0-mへ入力され、メモリアレイ毎に一つのビット線BLiが選択され、データ線DT0-mを介しセンスアンプSA0-mへ接続される。これにより、メモリアレイ毎(ARY0-m)に1ビットのメモリcelが選択されるため、一つのメモリバンクの中で同時に合計(m+1)ビットのメモリセルcel(0ビット目からmビット目)が選択される。
メモリアレイ毎に選択されたメモリセルcel(0ビット目からmビット目)から、データ線をそれぞれのメモリアレイに設けられたセンスアンプSA0-mへ電流が流れ、その際の電圧を計測し、参照電圧と比較することにより、メモリセルcelへ記録されたデータm+1ビット分のデータDnbyteを検出する。つまり、カラム・アドレス{CA1、CA2}によって選択された最初のnバイト(=(m+1)/8)分のデータDnbyteがメモリセルcelから同時に検出される。
例えばメモリアレイARY0のワード線WLnとのビット線BL0上のメモリセルcelが情報“1”を記憶しており、低抵抗状態にある場合は、ビット線BL0及びデータ線DT0が充電され、センスアンプSAへその電圧が伝えられ、データ“1”が検出される。一方、メモリアレイARY1のワード線WLnとのビット線BL0上のメモリセルcelが情報“0”を記憶しており、高抵抗状態にある場合は、ビット線BL0及びデータ線DT1は、ほぼ接地電圧VSSに保持され、センスアンプSAへその電圧が伝えられ、データ“0”が検出される。
検出された1番目のnバイト(=(m+1)/8)分のデータDnbyteは データ選択回路DSW1を介して、コマンドRD4およびRD41によって指定されたデータバッファDBUF0へ転送される。
次のnバイト分のデータは、カラム・アドレス{{CA1、CA2}+(n)}によって選択され、データバッファDBUF0へ転送される。このように、メモリセルcelから開始カラムアドレス{CA1、CA2}へ順にnの倍数を加算したカラムアドレスによって選択されたnバイト分のデータが順にデータバッファDBUF0へ転送される。指定したデータサイズがk*nバイトの時、モリセルアレイARYからデータバッファDBUF0へのデータ転送がk回生じる。
メモリセルcelからデータバッファDBUF0へデータ転送が行われている期間は、ハイ・レベルとなっているレディー/ビジー信号RBBはロウ・レベルとなる。このデータ転送が終了した時点で、ロウ・レベルとなっているレディー/ビジー信号RBBがハイ・レベルとなる。
入出力信号IOの信号数が8ビット(1バイト)の場合、データバッファDBUF0へ格納されたk*nバイト分のデータは読み出しイネーブル信号REBの立ち下がりエッジに同期して、入出力信号IOからDO(1)〜DO(k*n)の順に出力される。例えば指定されたデータサイズが512バイトで、同時に選択されるメモリセルcelのデータサイズが16バイトで、入出力信号IOの信号数が8ビット(1バイト)の場合は、メモリセルcelからデータバッファDBUF0へは合計32回(=512/16)のデータ転送が行われ、データバッファDBUF0から入出力信号IOを介してデータを出力する回数は512回となる。
また、コマンドRD4およびRD41にてデータバッファDBUF1を指定した場合は、同様に、不揮発性メモリ装置NVM1x(x=0〜7)のメモリアレイから、指定したデータサイズ(k*nバイト)分のデータが、データバッファDBUF1を介して読み出される。
このように、任意のデータサイズを指定した読み出し動作では、必要なサイズ分のデータのみを効率的に読み出しことができるため、高速読み出しが実現できる。
[電源投入時の初期シーケンス]
図8は、実施例に係る情報処理システム装置の電源投入時の初期シーケンス例を示す。図8の(a)は、制御回路STRCT0内の不揮発性メモリNVM0へ格納されているSDDコンフィグレーション情報SDCFGを利用した場合における電源投入時の初期シーケンスを示す一例である。図8の(b)は、情報処理装置CPU_CHIPから送信されたSDDコンフィグレーション情報SDCFGを利用した場合における電源投入時の初期シーケンスを示す一例である。
先ず、図8の(a)に示す初期シーケンスを以下に説明する。T1の期間(PwOn)で情報処理装置CPU_CHIPと、メモリモジュールNVMSTR0内の不揮発性メモリ装置(NVM10からNVM17)と、ランダムアクセスメモリRAMと、制御回路STRCT0へ電源投入を行い、T2の期間(RST)でリセットを行う。リセットの方法は特に限定しないが、それぞれの内蔵回路で自動的にリセットを行う方法でも、外部にリセット端子(RSTSIG)を有し、このリセット信号によってリセット動作を行う方法でも、情報処理装置CPU_CHIPからインターフェース信号HDH_IFを通じて、リセット命令を制御回路STRCT0へ入力し、リセットを行う方法としても良い。
T2のリセット期間(Reset)では、情報処理装置CPU_CHIP、制御回路STRCT0、不揮発性メモリ装置(NVM10からNVM17)、ランダムアクセスメモリRAMと内部状態を初期設定する。
制御回路STRCT0は、ランダムアクセスメモリRAMへ格納されているアドレス範囲マップADMAP、アドレス変換テーブルLPTBL、物理セグメントテーブルPSEGTBL1、物理セグメントテーブルPSEGTBL2、物理アドレステーブルPADTBを初期化し、さらに不揮発性メモリ装置および書込み物理アドレステーブルNXPADTBLを初期化する。
T2の期間が終了した後のT3の期間(MAP)では、制御回路STRCT0はの不揮発性メモリNVM0へ格納されているSDDコンフィグレーション情報SDCFGを読み出し、レジスタMAPREGへ転送する。次に、レジスタMAPREG内のSSDコンフィグレーション情報SDCFGを読み出し、このSSDコンフィグレーション情報SDCFGを利用し、アドレスマップ範囲ADMAPを生成し、ランダムアクセスメモリRAMへ格納する。
さらに、制御回路STRCT0は、レジスタMAPREG内のSSDコンフィグレーション情報SDCFGの中の論理アドレス領域LRNG情報が、論理アドレス領域LRNG1とLRNG2に分かれていれば、これを認識し、書込み物理アドレステーブルNXPADTBL内を、論理アドレス領域LRNG1用の書込み物理アドレステーブルNXPADTBL1と、論理アドレス領域LRNG2用の書込み物理アドレステーブルNXPADTBL2とに切り分ける。
特に限定しないが、書込み物理アドレステーブルNXPADTBLが0エントリー目から(N-1)エントリー目までのN個分のエントリーで構成されている場合、0エントリー目から(N/2-1)エントリー目のN/2個分を書込み物理アドレステーブルNXPADTBL1とし、N/2エントリー目からNエントリー目の、残りのN/2個分を書込み物理アドレステーブルNXPADTBL2とすることもできる。
T3の期間が終了した後のT4の期間(SetUp)では、情報処理装置CPU_CHIPは制御回路STRCT0内の不揮発性メモリNVM0へ格納されているブートプログラムを読み出し、情報処理装置CPU_CHIPを立ち上げる。T4の期間が終了した後のT5の期間(Idle)以降は、メモリモジュールNVMSTR0はアイドル状態となり、情報処理装置CPU_CHIPからのリクエストを待つ状態となる。
次に、図8の(b)に示す初期シーケンスを説明する。T11の期間(PwOn)と、T21の期間(Reset)では、それぞれ、図8の(a)のT1の期間及びT2の期間と同様の動作を行う。
T21の期間が終了した後のT31の期間(H2D)では、情報処理装置CPU_CHIPはメモリモジュールNVMSTR0へSSDコンフィグレーション情報SDCFGを送信すると、制御回路STRCT0は、このSSDコンフィグレーション情報SDCFGを不揮発性メモリNVM0格納する。
T31の期間が終了した後のT41の期間(MAP)、T51の期間(SetUp)、T61の期間(Idle)では、それぞれ、図8の(a)のT1の期間及びT2の期間と同様の動作を行う。
このように、図8の(a)に示したように、SDDコンフィグレーション情報SDCFGがメモリモジュールNVMSTR0へ予めプログラムされていれば、高速に電源投入時の初期シーケンスを実行することができる。また、図8の(b)に示したように、SDDコンフィグレーション情報SDCFGを情報処理装置CPU_CHIPからメモリモジュールNVMSTR0へプログラムすることにより、実施形態に係る情報処理システム装置に、適切なメモリモジュールNVMSTR0を構成することができる。
[物理アドレステーブル]
図9は、ランダムアクセスメモリRAMへ格納されている物理アドレステーブルPADTBLを示している。物理アドレステーブルPADTBLは、物理アドレスPAD(PAD[31:0])と、この物理アドレスに対応した物理アドレスの有効フラグPVLDと消去回数PERCから構成されランダムアクセスメモリRAMへ格納されている。有効フラグPVLD値が1の場合は、対応する物理アドレスPADが有効であることを示し、0の場合は無効であることを示す。
また、情報処理回路MANAGERは、物理アドレスPADが“00000000”〜“027FFFFF”までを物理アドレス領域PRNG1として、物理アドレスPADが“02800000”〜“07FFFFFF”までを物理アドレス領域PRNG2として認識し、物理アドレステーブルPADTBLを管理する。
また、特に限定しないが物理アドレスPAD(PAD[31:0])は、物理セグメントアドレスSGAD(PAD[31:16])と、物理アドレスPPAD(PAD[15:0])とから構成される。
[物理セグメントテーブル]
図10は、ランダムアクセスメモリRAMへ格納されている物理セグメントテーブルPSEGTBL1およびPSEGTBL2を示している。図10の(a)は無効物理アドレスに関する物理セグメントテーブルPSEGTBL1を示し、図10の(b)は有効物理アドレスに関する物理セグメントテーブルPSEGTBL2を示している。
特に限定しないが、物理アドレスPAD(PAD[31:0])の上位PAD[31:16]は、物理セグメントアドレスSGADを示す。特に限定しないが1つの物理アドレスのメインデータサイズは512バイトで、1セグメントのメインデータサイズは65536個の物理アドレスが集まって32Mバイトとなる。
まず、図10の(a)を説明する。物理セグメントテーブルPSEGTBL1は、物理セグメントアドレスSGAD(PAD[31:16])と、この物理セグメントアドレスSGAD内の無効物理アドレス総数TNIPAと、セグメントアドレスSGAD内の無効物理アドレスの中で最大消去回数MXERCを持つ無効物理アドレスMXIPADと、最大消去回数MXERCと、セグメントアドレスSGAD内の無効物理アドレスの中で最小消去回数MNERCを持つ無効物理アドレスMNIPADと、最小消去回数MNERCから構成され、ランダムアクセスメモリRAMへ格納されている。
次に、図10の(b)を説明する。物理セグメントテーブルPSEGTBL2は、物理セグメントアドレスSGAD(PAD[31:16])と、この物理セグメントアドレスSGAD内の有効物理アドレス総数TNVPAGEと、セグメントアドレスSGAD内の有効物理アドレスの中で最大消去回数MXERCを持つ有効物理アドレスMXVPADと、最大消去回数MXERCと、セグメントアドレスSGAD内の有効物理アドレスの中で最小消去回数MNERCを持つ有効物理アドレスMNVPADと、最小消去回数MNERCから構成され、ランダムアクセスメモリRAMへ格納されている。
[書込み物理アドレステーブル]
図11は、制御回路STRCT0に格納されている書込み物理アドレステーブルNXPADTBLを示す。図11の(a)には、装置使用開始時の初期状態の書込み物理アドレステーブルNXPADTBLの一例を示す。また、図11の(b)には、内容の更新状態の書込み物理アドレステーブルNXPADTBLの一例を示す。書込み物理アドレステーブルNXPADTBLは、不揮発性メモリ装置(NVM10からNVM17)へデータを書き込む際の不揮発性メモリ装置の物理アドレスPADを決めるテーブルであり、複数(N)個の物理アドレスに対応している。
物理アドレステーブルNXPADTBLは、エントリー番号ENUMと、物理アドレスNXPADと、この物理アドレスNXPADに対応した物理アドレスの有効フラグNXPVLDと、消去回数NXPERCから構成される。
制御回路STRCT0は、SSDコンフィグレーション情報SDCFGの中の論理アドレス領域LRNG情報が、論理アドレス領域LRNG1とLRNG2に分割されていることを認識し、書込み物理アドレステーブルNXPADTBLの中で、エントリー番号0から(N/2-1)のN/2個分を書込み物理アドレステーブルNXPADTBL1とし、エントリー番号(N/2)からNまでの残りのN/2個分を書込み物理アドレステーブルNXPADTBL2として管理する。また、論理アドレス領域LRNG1への書き込み要求に対しては、書込み物理アドレステーブルNXPADTBL1を利用し、また、論理アドレス領域LRNG2への書き込み要求に対しては、書込み物理アドレステーブルNXPADTBL2を利用し、不揮発性メモリ装置(NVM10からNVM17)へデータを書き込む。
エントリー番号ENUMは、複数(N)組のNXPADにおけるN値(0番〜N-1番)を示し、このN値は書込み優先度(登録数)を示す。論理アドレス領域LRNG1への書き込み要求に対しては、書込み物理アドレステーブルNXPADTBL1の中のN値が小さい順から優先で使用され、論理アドレス領域LRNG2への書き込み要求に対しては書込み物理アドレステーブルNXPADTBL2の中のN値が小さい順から優先で使用される。また、有効フラグNXPVLDの値が0の場合は、対象となる物理アドレスは無効であることを意味し、1の場合は対象となる物理アドレスは有効であることを意味する。
図11の(a)で、N=32の場合について、書込み物理アドレステーブルNXPADTBLの初期設定(例えば図8のT1からT3)について説明する。
エントリー番号ENUM=0番から(32/2)-1番までは、順に、論理アドレス領域LRNG1へ対応している物理アドレス領域PRNG1の中の物理アドレスNXPADの“00000000”番地から”0000001E”番地まで1つ置きの物理アドレスNXPADが設定される。
エントリー番号ENUM=(32/2)番から(32-1)番までは、順に、論理アドレス領域LRNG2へ対応している物理アドレス領域PRNG2の中の物理アドレスNXPADの“02800000”番地から“0280000F”まで、順に、物理アドレスNXPADが設定される。
そして、これらの物理アドレスNXPAに対応する有効フラグNXPVLD及び消去回数NXPERCはすべて0に設定される。
書込み物理アドレステーブルNXPADTBLが図11の(a)で示す状態である際に、情報処理装置CPU_CHIPからインターフェース信号HDH_IFを通じ、このメモリモジュールNVMSTR0の論理アドレス領域LRNG1へ、セクタカウントSEC値1(512バイト)のライトリクエストWTREQがN/2回入力した場合、それぞれのライトリクエストWTREQに含まれるデータは物理アドレスPADの“00000000”番地から“0000001E”番地まで1つ置きに不揮発性メモリ装置へ書き込まれる。
さらに、情報処理装置CPU_CHIPからインターフェース信号HDH_IFを通じ、このメモリモジュールNVMSTR0の論理アドレス領域LRNG2へセクタカウントSEC値1(512バイト)のライトリクエストWTREQがN/2回入力した場合、それぞれのライトリクエストWTREQに含まれるデータは物理アドレスPADの“02800000”番地から“0280000F”番地まで、順に、不揮発性メモリ装置へ書き込まれる。
また、別の動作例を挙げれば以下になる。情報処理装置CPU_CHIPからインターフェース信号HDH_IFを通じ、このメモリモジュールNVMSTR0の論理アドレス領域LRNG1へ、セクタカウントSEC値16(8Kバイト)のライトリクエストWTREQが1回入力した場合、このライトリクエストWTREQに含まれるデータは512バイト毎の物理アドレスPADへ分解され、物理アドレスPADの“00000000”番地から“0000001E”番地まで1つ置きに不揮発性メモリ装置へ書き込まれる。
報処理装置CPU_CHIPからインターフェース信号HDH_IFを通じて、このメモリモジュールNVMSTR0の論理アドレス領域LRNG2へ、セクタカウントSEC値16(8Kバイト)のライトリクエストWTREQが1回入力した場合、このライトリクエストWTREQに含まれるデータは512バイト毎の物理アドレスPADへ分解され、物理アドレスPADの”02800000”番地から”0280000F”番地まで、順に、不揮発性メモリ装置へ書き込まれる。
[アドレス変換テーブルの初期設定値例と不揮発性メモリ装置の初期設定値例]
図12の(a)に、電源投入直後(時間T0)に制御回路STRCT0が設定するアドレス変換テーブルLPTBLの初期設定状態例を示し、図12の(b)に、電源投入直後に制御回路STRCT0が設定する不揮発性メモリ装置の初期設定状態例を示す。
アドレス変換テーブルLPTBLの全論理アドレスLADに対する全物理アドレスCPADと物理アドレス有効フラグCVFは0に初期設定される。また、不揮発性メモリ装置の全データDATAと、全論理アドレスLADと、全データ有効フラグDVFは0に初期設定される。
[SSDコンフィグレーション情報]
図13には、STRCT0内の不揮発性メモリNVM0へ格納されているSSDコンフィグレーション情報SDCFGの一例を示す。図中、LRNGは論理アドレス領域であり、セクタ単位(512B)の論理アドレスLADでの範囲を示す。CAPは論理アドレス領域LRNGにて定められた範囲の論理データの容量を、RELLVLは信頼性のレベルを示す。
論理アドレス領域LRNG1は、16進数で“0000_0000”〜“007F_FFFF”の論理アドレスLAD空間を占め、4Gバイトの容量を持つ。また、論理アドレス領域LRNG2は、16進数で“0080_0000”〜“037F_FFFF”の論理アドレス空間を占め、32Gバイトの大きさをもつ。
INTVLDCELLは、メインデータ領域内のメモリセルの中で、幾つ置きにメモリセルの書込みを許可するかを示している。INTVLDCELLが“1”であれば、物理的なメモリセルの位置に対して、1個置きに書込みができることを意味し、INTVLDCELLが“0”であれば、0個置きに、つまり、物理的な位置が隣接するメモリセルへ書込みできることを意味する。
INTVLRCELLは、冗長データ領域内のメモリセルの中で、幾つ置きにメモリセルの書込みを許可するかを示している。INTVLRCELLが“1”であれば、1個置きにメモリセルへの書込みを許可し、INTVLRCELLが“0”であれば、0個置きに、つまり、全メモリセルの書込みを許可することを意味する。
BODRCELLは、連続して書込みを禁止するメモリセルの領域BDRを定めるために必要な情報である。BODRCELLが3の場合は、3つのワード線数分のメモリセル領域に対して書込みを禁止する。
TESTCELL情報は、テスティングを行うための連続したメモリセル領域TAREAを定めるために必要な情報である。TESTCELLが5の場合は、メモリセル領域TAREAの大きさは、5つのビット線数メモリセル容量となる。
MONICELLは、メモリセルの抵抗値や、メモリセルへ書き込まれたデータ値(“1”あるいは“0”)などをモニタリングするためのメモリセルの数を示す。MONICELLが1の場合、テスティングを行うためのメモリセル領域TAREA内に1ビット分のメモリセルをモニタリングするためのメモリセルとする。
メモリセルがリセット状態の場合のメモリセルの値を“0”とし、セット状態の場合のメモリセルの値を“1”とした場合、制御回路STRCT0は、先ず、電源投入時の初期シーケンスの終了直後に、メモリセル領域TAREA内のメモリセルをセット状態とする。つまりメモリセルは“1”を保持する。次に、MONICELLにて指定されたモニタリングするためのメモリセル(図16で示すMONI1およびMONI2など)へ、“0”のデータを書込む、つまりリセット状態とする。次に、制御回路STRCT0は、定期的に、このモニタリングするためのメモリセルからデータを読み出す。制御回路STRCT0は読み出したデータが“0”であるかをチェックする。もし、読み出したデータが“0”でなければ、SSDコンフィグレーション情報SDCFG内のMONICELLに対応している論理アドレス領域LRNG内のメモリセルの信頼性が低下している可能性があると判定する。
次に、制御回路STRCT0は、再度メモリセル領域TAREA内のメモリセルをセット状態とし、MONICELLにて指定されたモニタリングするためのメモリセルをリセット状態とする。さらに、再度、制御回路STRCT0は、定期的に、このモニタリングするためのメモリセルからデータを読み出し、読み出したデータが“0”であるかをチェックする。
制御回路STRCT0は、モニタリングするためのメモリセルから読み出したデータが“0”ではなかった場合の回数もカウントしており、この回数を利用することで、メモリセルの信頼性を把握でき、メモリモジュールNVMSTR0の信頼度をある一定レベルに保たせることができる。
また、制御回路STRCT0は、モニタリングするためのメモリセルから読み出したデータが“0”ではなかった場合、信頼性低下の可能性を示すワーニング情報と、SSDコンフィグレーション情報SDCFG内のMONICELLに対応している論理アドレス領域LRNGの値を情報処理装置CPU_CHIPへ送信することもできる。
情報処理装置CPU_CHIPは、制御回路STRCT0から受け取った論理アドレス領域LRNGの値とワーニング情報および、その受け取った回数を利用し、メモリモジュールNVMSTR0の信頼度を把握し、メモリモジュールNVMSTR0の信頼度をある一定レベルに保たせることができる。
このように、MONICELLにて指定されたモニタリングするためのメモリセルを設け、このメモリセルのデータを定期的に読み出すことにより、メモリモジュールNVMSTR0の信頼度を把握できるため、高信頼でメモリモジュールNVMSTR0を動作できる。
ECCFLGはECCを行う際のデータの単位を示している。特に限定しないが、ECCFLGが0の場合は、512Bデータを単位としてECCを行い、ECCFLGが1の場合は、2048Bデータを単位としてECCを行い、ECCFLGが2の場合は、4096Bデータを単位としてECCを行い、ECCFLGが3の場合は、8192Bデータを単位としてECCを行うことを示し、ECCFLGが4の場合は、16384Bデータを単位としてECCを行うことを示し、ECCFLGが5の場合は、32Bデータを単位としてECCを行うことを示し、ECCFLGが6の場合は、64Bデータを単位としてECCを行うことを示し、ECCFLGが7の場合は、128Bデータを単位としてECCを行うことを示し、ECCFLGが8の場合は、256Bデータを単位としてECCを行うことを示している。
記憶装置には、ハードディスク、SSD(Solid State Drive)、キャッシュメモリ及びメインメモリなど様々な記憶装置があり、データの読み出しや書込みの単位が異なる。例えばハードディスクやSSDなどのストレージでは、512B以上のデータ単位で読み出しや書き込みが行われる。また、キャッシュメモリでは、そのラインサイズ単位(32Bや64Bなど)でメインメモリとの間でデータ読み出しやデータ書込みが行われる。このように、データ単位が異なる場合においても、ECCFLGによって、異なるデータ単位へECCを行うことができ、メモリモジュールNVMSTR0への要求に対して柔軟に対応できる。
ライト方法選択情報WRTFLGは、書込み時の書込み方法を示している。特に限定しないが、ライト方法選択情報WRTFLGが0の場合は通常方法にて書き込みを行い、WRTFLGが1の場合は反転データを書込み、ライト方法選択情報WRTFLGが2の場合は、データの書き込み前に一旦データを読み出し、その後、データを書込むことを示す。
TDCL情報は、メインデータ領域内のメモリセルの中で、余分に設けるメモリセルの領域DTMPATREAを定めるために必要な情報である。TDCLが4の場合は、DTMPATREAは4つのビット線数分のメモリセル領域と、4つのワード線数分のメモリセル領域のいずれかの領域に属するメモリセルの領域を示す。
TRCL情報は、冗長データ領域内のメモリセルの中で、余分に設けるメモリセルの領域RTMPATREAを定めるために必要な情報である。TRCLが4の場合は、RTMPATREAは4つのビット線数分のメモリセル領域と、4つのワード線数分のメモリセル領域のいずれかの領域に属するメモリセルの領域を示す。
DTMPATREAとRTMPATREAが存在することにより、メモリモジュールNVMSTR0の書換え寿命を延ばすことができる。
[書き込みデータの構成例]
以下、DTMPATREAを利用した書き換え方法を説明するが、RTMPATREAを利用した書換え方法にも適用できることは言うまでも無い。SSDコンフィグレーション情報SDCFGはプログラム可能であり、メモリモジュールNVMSTR0が要求される機能、性能及び信頼性のレベルに合わせて柔軟に対応することができる。
図14は、制御回路STRCT0が不揮発性メモリ装置(NVM10からNVM17の中)へ書き込むデータPAGEDATAの構成を示している。特に限定しないが、データPAGEDATAはメインデータDArea(512バイト)と、冗長データRArea(16バイト)から構成される。冗長データRAreaには、データ反転フラグINVFLG、ライトフラグWRITFLG、ECCフラグECCFLG、ECCコードECC、ステート情報STATE、信頼性レベル情報RELIABLE、バッドブロック情報BADBLK、モニターセル情報MONITOR、予備領域RSVが含まれる。
データ反転フラグINVFLGは、制御回路STRCT0が不揮発性メモリ装置(NVM10からNVM17の中)へ書き込んだメインデータDAreaが元の書き込みデータの各ビットを反転させたデータかどうかを示す。データ反転フラグINVFLGに0が書き込まれた場合、元のメインデータの各ビットを反転させずにデータが書き込まれたことを示し、1が書き込まれた場合、元のメインデータの各ビットを反転させたデータが書き込まれたことを示す。
WRITFLGは、制御回路STRCT0が不揮発性メモリ装置(NVM10からNVM17の中)へメインデータDAreaを書込む際に実行した書込み方法を示している。特に限定しないが、WRITFLGへ0が書き込まれた場合、通常方法にてメインデータDAeaが書き込まれたことを示し、WRTFLGへ1が書き込まれた場合、元のメインデータの各ビットを反転させたデータが書き込まれたことを示す。WRTFLGへ2が書き込まれた場合、データを書き込む前にデータを一旦読み出し、その後、書き換える必要のあるデータのみが書き込まれたことを示す。
ECCFLGは、制御回路STRCT0が不揮発性メモリ装置(NVM10からNVM17の中)へメインデータDAreaを書込む際に、どの程度のメインデータDAreaのサイズに対して、ECCコードを生成したかを示している。特に限定しないが、ECCFLGへ0が書き込まれた場合、512バイトのデータサイズに対してコードを生成したことを示し、ECCFLGへ1が書き込まれた場合、1024バイトのデータサイズに対してコードを生成したことを示す。ECCFLGへ2が書き込まれた場合、2048バイトのデータサイズに対してコードを生成したことを示し、ECCFLGへ3が書き込まれた場合、32バイトのデータサイズに対してコードを生成したことを示す。
ECCコードECCは、メインデータDAreaのエラーを検出し修正するために必要なデータである。ECCは、制御回路STRCT0が不揮発性メモリ装置(NVM10からNVM17の中)へメインデータDAreaを書込む際に、制御回路STRCT0によってメインデータDAreaに対応して生成され、冗長データRAreaへ書き込まれる。
ステート情報STATEは、不揮発性メモリ装置(NVM10からNVM17の中)へ書き込まれたメインデータDAreaが、有効状態か、無効状態か、消去状態かを示す。特に限定しないが、ステート情報STATEへ0が書き込まれた場合、メインデータDAreaは無効状態であることを示し、ステート情報STATEへ1が書き込まれた場合、メインデータDAreaは有効状態であることを示し、ステート情報STATEへ3が書き込まれた場合、メインデータDAreaは消去状態であることを示す。
信頼性レベル情報RELIABLEは、不揮発性メモリ装置(NVM10からNVM17の中)へ書き込まれたメインデータDAreaの信頼性レベルを示す。特に限定しないが、信頼性レベル情報RELIABLEの数値が高いほど、メインデータDAreaの信頼性レベルが高いことを示す。信頼性レベル情報RELIABLEへ0が書き込まれた場合、メインデータDAreaの信頼性レベルは「標準」であることを示し、信頼性レベル情報RELIABLEへ1が書き込まれた場合、メインデータDAreaの信頼性レベルは「高信頼」であることを示す。信頼性レベル情報RELIABLEへ2が書き込まれた場合、メインデータDAreaの信頼性レベルは「より高信頼」であることを示す。
モニターセル情報MONITORは、不揮発性メモリ装置(NVM10からNVM17の中)へ書き込まれたメインデータDAreaの中にモニターセルが含まれているかどうかを示す。モニターセル情報MONITORへ0が書き込まれた場合、メインデータDAreaの中にモニターセルが含まれていないことを示し、1が書き込まれた場合、メインデータDAreaの中にモニターセルが含まれていることを示す。
バッドブロック情報BADBLKは、不揮発性メモリ装置(NVM10からNVM17の中)へ書き込まれたメインデータDAreaが利用可能かどうかを示す。特に限定しないが、バッドブロック情報BADBLKへ0が書き込まれた場合、メインデータDAreaは利用可能であり、1が書き込まれた場合、メインデータDAreaは利用不可能であることを示す。ECCによるエラー訂正が可能である場合、バッドブロック情報BADBLKは0となり、エラー訂正が不可能である場合、バッドブロック情報BADBLKは1となる。
予備領域RSVは、制御回路STRCT0が自由に定義できる領域として存在する。
[書き込み可能なメモリセルの配置例]
図15は、制御回路STRCT0が図13の(a)に示すSSDコンフィグレーション情報を利用して生成し、ランダムアクセスメモリRAMへ格納したアドレスマップ範囲ADMAPの一例を示す。また、図16は、図13の(a)に示すSSDコンフィグレーション情報と図15に示すアドレスマップ範囲ADMAPとを利用して制御回路STRCT0が定めたデータの書込み対象としての不揮発性メモリ装置内の一つのメモリセルアレイARYにおける書き込み可能なメモリセルの配置例を示す。図16では、ワード線WL0〜WLiとビット線BL0〜BLjとの交点がメモリセルを表している。また、図16では、物理アドレス領域PRNG1内のワード線WL0〜WLm内の偶数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLj内の偶数番目のビット線BLm(m=偶数)との交点を示す◎は、データの書込みが行われる第1書込み許可メモリセルを示す。ワード線WL0〜WLm内の偶数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLj内の奇数番目のビット線BLm(m=奇数)との交点を示す○は、データの書込みが行われる第2書込み許可メモリセルを示す。ワード線WL0〜WLm内の奇数番目のワード線WLn(n=奇数)と、ビット線BL0〜BLj内の偶数番目のビット線BLm(m=偶数)との交点を示す○は、データの書込みが行われる第3書込み許可メモリセルを示す。ワード線WL0〜WLm内の奇数番目のワード線WLn(n=奇数)と、ビット線BL0〜BLj内の奇数番目のビット線BLm(m=奇数)との交点を示す○は、データの書込みが行われる第4書込み許可メモリセルを示す。また、太線で示す□はモニタリング用のメモリセルを示す。また、物理アドレス領域PRNG2内のワード線WLm+4〜WLiとビット線BL0〜BLjとの交点を示す◎は、データの書込みが行われる第1書込み許可メモリセルを示す。
図16における書込み禁止領域BDRは、ワード線WLm+1からWLm+3に接続されるメモリセル領域で3×ビット線数(BLj+1)分のメモリセル含む。SSDコンフィグレーション情報のBODRCELL情報値“3”を利用し、制御回路STRCT0が生成したアドレスマップ範囲ADMAP情報により、この書込み禁止領域BDRが定められている。
書込み禁止領域BDRは、物理アドレス領域PRNG1とPRNG2の分離を行い、データ書込時にメモリセルが受けるジュール熱の熱履歴の影響をより小さくするための領域であり、図13のSSDコンフィグレーション情報SDCFG中のBODRCELLの値により決まる。
また、図16におけるテスティング領域TAREAは、ビット線BLn+1からBLn+5に接続されるメモリセル領域を示し、5×ワード線数(WLi+1)分のメモリセルを含む。
SSDコンフィグレーション情報のTESTCEL情報値“5”を利用し、制御回路STRCT0が生成したアドレスマップ範囲ADMAP情報により、テスティング領域TAREAが定められている。テスティング領域TAREAには、2つのモニタリング用のメモリセルMONI1およびMONI2が存在する。
図15のLADは、情報処理装置CPU_CHIPからメモリモジュールNVMSTR0へ入力される512バイトデータを単位とした論理アドレスである。また、PADは物理アドレスであり、制御回路STRCT0から不揮発性メモリ装置(NVM10からNVM17)へ入力されるアドレスである。この形態例の場合、PADは、512バイトのメインデータDAreaと16バイト冗長データRAreaの和を単位とした物理アドレスで与えられる。制御回路STRCT0回路は、論理アドレスLADを物理アドレスPADへ変換し、不揮発性メモリ装置(NVM10からNVM17)へデータを書き込む。
論理アドレス領域LRNG1は、16進数で“0000_0000”〜“007F_FFFF”の論理アドレスLAD空間を占め、4Gバイトの容量を持つ。また論理アドレス領域LRNG2は、16進数で”0080_0000”〜“037F_FFFF”の論理アドレス空間を占め、32Gバイトの大きさをもつ。
論理アドレス領域LRNG1へ対応する物理アドレス領域PRNG1は、16進数で“0000_0000”〜“027F_FFFF”の物理アドレスPAD空間を持っている。この物理アドレス領域PRNG1に対応する物理アドレスPAD空間内へ存在する全メモリセルの容量は、メインデータDAreaが20Gバイトで、冗長データRAreaが640Mバイトである。
物理アドレスPADは、特に限定しないが、上位ビットからバンクアドレスBKAD、ロウアドレスROWAD(ワード線WLアドレス)、カラムアドレスCOLAD、チップアドレスCHIPADにて構成される。
物理アドレス領域PRNG1の物理アドレスPADに対応する不揮発性メモリ装置のアドレスは、上位ビットからバンクアドレスBKAD3〜BKAD0、ロウアドレスROWADm〜ROWAD0(ワード線WLm〜WL0)、カラムアドレスCOLADi〜COLADn+6(ビット線BLi〜BLn+6)及びカラムアドレスCOLADi〜COLADn(ビット線BLn〜BL0)、チップアドレスCHIPAD7からCHIPAD0にて構成される。
論理アドレス領域LRNG2へ対応する物理アドレス領域PRNG2は、16進数で“0280_0000”〜“0F7F_FFFF”の物理アドレスPAD空間を持っている。この物理アドレス領域PRNG2に対応する物理アドレスPAD空間内へ存在する全メモリセルの容量はメインデータDAreaが44Gバイトで、冗長データRAreaが1384Mバイトである。
物理アドレスPADは、特に限定しないが、上位ビットからバンクアドレスBKAD、ロウアドレスROWAD(ワード線WLアドレス)、カラムアドレスCOLAD、チップアドレスCHIPADにて構成される。
物理アドレス領域PRNG2の物理アドレスPADに対応する不揮発性メモリ装置のアドレスは、上位ビットからバンクアドレスBKAD3〜BKAD0、ロウアドレスROWADi〜ROWADm+4(ワード線WLi〜WLm+4)、カラムアドレスCOLADi〜COLADn+6(ビット線BLi〜BLn+6)及びカラムアドレスCOLADi〜COLADn(ビット線BLn〜BL0)、チップアドレスCHIPAD7からCHIPAD0にて構成されている。
図16にて、図13の(a)のSSDコンフィグレーション情報SDCFG及び図15のアドレスマップ範囲ADMAPによる物理アドレス領域PRNG1及び物理アドレス領域PRNG2に対応するメモリセルの配置を示せば以下となる。図16で、物理アドレス領域PRNG1へは、ワード線WL0からWLmに接続されているメモリセルのうち、テスティング領域TAREAに定められたメモリセル(ビット線BLn+1からBLn+5)を除いたメモリセル領域が対応している。
また、SSDコンフィグレーション情報の中で論理アドレス領域LRNG1のINTVLDCELL情報が1(図13)であることから、論理アドレス領域LRNG1に対応する物理アドレス領域PRNG1内のメモリセルに対して1個置きに書込む許可を与えている。
より具体的には、ワード線WL0からWLmの中で、1個置きに選択されるワード線と、ビット線BL0〜BLnおよびBLn+6〜BLjの中で1個置きに選択されるビット線の交点に位置するメモリセル◎へ書き込みが行われる。
また、物理アドレス領域PRNG1への書込み方法の一例を示せば以下となる。まず、物理アドレス領域PRNG1の◎で示されている第1書込み許可メモリセルに対して書き込みが行われる。
次に、第1書込み許可メモリセルへの書込み回数がその上限値へ近づいた場合、第1書込み許可メモリセルから、第2書込み許可メモリセルへ書き込みを行う。次に、第2書込み許可メモリセルへの書込み回数がその上限値へ近づいた場合、第2書込み許可メモリセルから第3書込み許可メモリセルへ書き込みを行う。次に、第3書込み許可メモリセルへの書込み回数がその上限値へ近づいた場合、第3書込み許可メモリセルから第4書込み許可メモリセルへ書き込みを行う。
このように書込みを制御する行うことにより、物理アドレス領域PRNG1内の全メモリセルに対して1個置きにデータを書き込むことができる。このため、データ書込時にメモリセルが受けるジュール熱の熱履歴の影響をより小さくし、高信頼化を実現できる。また、物理アドレス領域PRNG1内の全メモリセルの総書込み回数まで書き込みが可能となり、長寿命化を実現できる。
図17には、図16で説明した物理アドレス領域PRNG1への書込み方法において、物理アドレス領域PRNG1内の第1書込み許可メモリセルに、データを書きこんだ時点での不揮発性メモリ装置内のメモリセルアレイARYの一例を示す。●がデータを書き込んだメモリセルを示す。この図が示すように、物理アドレス領域PRNG1内のワード線WL0からWLmの中で1個置きに選択されるワード線と、ビット線BL0〜BLn及びBLn+6〜BLjの中で1個置きに選択されるビット線の交点に位置するメモリセルへ書き込みが行われたことが分かる。
図16の場合、物理アドレス領域PRNG2にはワード線WLm+4からWLiに接続されているメモリセルのうちテスティング領域TAREAに定められたメモリセル(ビット線BLn+1からBLn+5)を除いたメモリセル領域が対応している。
また、SSDコンフィグレーション情報の中で、論理アドレス領域LRNG2のINTVLDCELL情報が0であることから、論理アドレス領域LRNG2に対応する物理アドレス領域PRNG2内の全メモリセルへ書込む許可を与えている。
そのため、物理アドレス領域PRNG2の◎で示されている第1書込み許可メモリセルに対して書き込みが行われる。より具体的には、選択されたワード線WLm+4からWLiと、ビット線BL0〜BLn及びBLn+6〜BLjが選択された交点に位置するメモリセルへ書き込みが行われる。
物理アドレス領域PRNG2に対応する物理アドレスPAD空間内へ存在する全メモリセルの容量は44Gバイト+1384Mバイトある。
図18には、図16で説明した物理アドレス領域PRNG2への書込み方法において、物理アドレス領域PRNG2内の第1書込み許可メモリセルに“1”のビットデータを書き込んだ際の不揮発性メモリ装置内のメモリセルアレイARYの一例を示す。●がデータを書き込んだメモリセルを示す。
この図が示すように、物理アドレス領域PRNG2内の全メモリセルへ書き込みが行われたことが分かる。
以上説明したように、物理アドレス領域PRNG1のメモリセルに対して1個置きに書き込む許可を与え、データを書き込むことにより、物理アドレス領域PRNG1に対するデータ書込時にメモリセルが受けるジュール熱の熱履歴の影響を小さくでき、高信頼で長寿命のメモリモジュールNVMSTR0を提供できる。
また、図13に示すSSDコンフィグレーション情報SDCFG内のINTVLDCELLの値を2に設定すると、メモリセルに対して2個置きに書込む許可を与えデータを書き込むことができる。この場合、データ書込時にメモリセルが受けるジュール熱の熱履歴の影響を、1個置きの場合に比してより小さくでき、高信頼で長寿命のメモリモジュールNVMSTR0を提供することができる。
以上説明したように、SSDコンフィグレーション情報SDCFGはプログラム可能であり、メモリモジュールNVMSTR0が要求される信頼性のレベルに合わせて柔軟に対応することができる。
[書き込み動作]
図19は、情報処理装置CPU_CHIPからメモリモジュールNVMSTR0へ書き込みリクエストWREQ01が入力された際に、メモリモジュールNVMSTR0が行うデータの書込み動作の一例を示す。情報処理回路MANAGERは、特に限定しないが512バイトのメインデータDAreaと16バイトの冗長データRAreaのサイズ毎に、1個の物理アドレスを対応させ、不揮発性メモリ装置(NVM10からNVM17の中)へ書き込みを行っている。
情報処理装置CPU_CHIPから論理アドレス値LAD0、データ書込み命令WRT、セクタカウント値SEC1、512バイトの書込みデータWDATA0が含まれるライトリクエストWTREQ01が制御回路STRCT0へ入力すると、インターフェース回路HOST_IFは、ライトリクエストWTREQ01に埋め込まれているクロック情報を取り出し、シリアルデータ化されたライトリクエストWTREQ01パラレルデータに変換し、バッファ装置BUF0および情報処理回路MANAGERへ転送する(Step1)。
次に、情報処理回路MANAGERは、論理アドレス値LAD0、データ書込み命令WRT及びセクタカウントSEC1を解読し、ランダムアクセスメモリRAM内のアドレス変換テーブルLPTBLを検索して、アドレスLAD0番地に格納されている現在の物理アドレス値CPAD0と、この物理アドレス値CPAD0に対応した有効フラグCVF値を読み出す。さらに、情報処理回路MANAGERは、ランダムアクセスメモリRAM内の物理テーブルPADTBLからアドレス変換テーブルLPTBLを検索し、読み出した物理アドレス値CPAD0に対応する消去回数値PERC500および有効フラグPVLD値を読み出す(Step2)。
次に、情報処理回路MANAGERは、ランダムアクセスメモリRAMへ格納したアドレスマップ範囲ADMAPを利用し、情報処理装置CPU_CHIPから制御回路STRCT0へ入力した論理アドレス値LAD0が、論理アドレス領域LRNG1内の論理アドレス値であるか、又は、論理アドレス領域LRNG2内の論理アドレス値であるかを判断する。
論理アドレス値LAD0が論理アドレス領域LRNG1内の論理アドレス値の場合は、図11に示す書込み物理アドレステーブルNXPADTBL1から、また、論理アドレス値LAD0が論理アドレス領域LRNG2内の論理アドレス値の場合は、書込み物理アドレステーブルNXPADTBL2から、書込み優先度の高い順に、セクタカウント値SEC1で指定された個数分だけ、この場合は1個分だけの書込み物理アドレスNXPAD100と、この次の書込み物理アドレスNXPAD100に対応した有効フラグNXPVLD値と、消去回数値NXPERCとを読み出す(Step3)。
次に、現在の物理アドレス値CPAD0と次の書込み物理アドレスNXPAD100とが等しい場合、情報処理回路MANAGERはStep5を実行し、異なる場合はStep8を実行する。
Step5では、情報処理回路MANAGERは、不揮発性メモリ装置(NVM10からNVM17の中)のアドレスNXPAD100番地へデータWDATA0と、物理アドレスNXPAD100に対応している論理アドレス値LAD0と、有効フラグDVF値1を書き込む。
Step6では、情報処理回路MANAGERは、アドレス変換テーブルLPTBLの中のアドレスLAD0番地へ論理アドレス値LAD0に対応している物理アドレス値NXPAD100及び有効フラグCVF値1を書き込む。
Step8では、情報処理回路MANAGERは、物理テーブルPADTBLから読み出した物理アドレス値CPAD0に対応した有効フラグCPVLD値が0であるかを判定する。
有効フラグCPVLD値が0の場合、論理アドレスLAD0に対応する不揮発性メモリ装置(NVM10からNVM17の中)の物理アドレスCPAD0は無効であることを示し、これは論理アドレスLAD0に対応する物理アドレスは新しいNXPAD100しか存在しないことを示す。このStep8の後、情報処理回路MANAGERは、Step5を実行する。
これに対し、有効フラグCPVLD値が1の場合、論理アドレスLAD0に対応する物理アドレスCPAD0が未だに有効であることを示す。この場合、情報処理回路MANAGERは、Step9を実行する。
Step9では、情報処理回路MANAGERは、論理アドレスLAD0に対応する新しい物理アドレスNXPAD100にデータWDATA0を書き込むため、アドレス変換テーブルLPTBL内の物理アドレスCPAD0に対応する有効フラグCVF値を0に変更し、さらに、物理アドレステーブルPADTBL内の物理アドレスCPAD0に対応する物理アドレスの有効フラグPVLDを0にする。
Step9で論理アドレスLAD0に対応する物理アドレスCPAD0を無効にした後、情報処理回路MANAGERは、Step5を実行する。
次のStep7では、情報処理回路MANAGERは、物理アドレスNXPAD100に対応する消去回数値NXPERCを1つ増加させた新たな消去回数値NXPERCを生成させ、ランダムアクセスメモリRAMへ格納されている物理アドレステーブルPADTBL内の物理アドレスNXPAD100に対応する消去回数PERCを、この新たな消去回数値NXPERCへ書き換え、物理アドレスの有効フラCPVLDを1とする。
Step10では、情報処理回路MANAGERは、書込み物理アドレステーブルNXPADTBLへ格納されている全物理アドレスNXPADへの書き込みが完了したかどうかを判定する。特に、書込み物理アドレステーブルNXPADTBLへ格納されている全物理アドレスNXPADへの書き込みが完了した場合はStep11を行い、未完了の場合は情報処理装置CPU_CHIPからメモリモジュールNVMSTR0へ書き込みリクエストを待つ。
Step11では、書込み物理アドレステーブルNXPADTBLへ格納されている全物理アドレスNXPADに対する書き込みが完了した時点で、情報処理回路MANAGERは、物理アドレステーブルPADTBLの物理アドレスの有効フラグCPVLDと消去回数PERCを利用し、物理セグメントアドレスSGAD内の無効物理アドレス総数TNIPAと、セグメントアドレスSGAD内の無効物理アドレスの中で最大消去回数MXERCを持つ無効物理アドレスMXIPADと、最大消去回数MXERCと、セグメントアドレスSGAD内の無効物理アドレスの中で最小消去回数MNERCを持つ無効物理アドレスMNIPADと、最小消去回数MNERCを求め、物理セグメントテーブルPSEGTBL1を更新する。さらに、情報処理回路MANAGERは、物理セグメントアドレスSGAD内の有効物理アドレス総数TNVPAGEと、セグメントアドレスSGAD内の有効物理アドレスの中で最大消去回数MXERCを持つ有効物理アドレスMXVPADと、最大消去回数MXERCと、セグメントアドレスSGAD内の有効物理アドレスの中で最小消去回数MNERCを持つ有効物理アドレスMNVPADと、最小消去回数MNERCを求め、物理セグメントテーブルPSEGTBL2を更新する。
さらに、情報処理回路MANAGERは、物理アドレステーブルNXPADTBLを更新する。物理アドレステーブルNXPADTBLの更新が終了した場合、情報処理装置CPU_CHIPからメモリモジュールNVMSTR0への書き込みリクエストを待つ。制御回路STRCT0が装備する書込み物理アドレステーブルNXPADTBLが1つの場合について示したが、図4に示すように、制御回路STRCT0が、書込み物理アドレステーブルNXPADTBL0-3を複数個装備する場合、情報処理回路MANAGERはそれぞれの書込み物理アドレステーブルを独立に管理・更新できるので、不揮発性メモリ装置(NVM10からNVM17)への書き込みデータ転送速度が向上する。
図20では、情報処理回路MANAGERがデータを不揮発性メモリへ書き込むために必要な書込み物理アドレステーブルNXPADTBLの更新方法を示す。
図11に示すように、情報処理回路MANAGERは、書込み物理アドレステーブルNXPADTBLの中において、エントリー番号0から(N/2-1)のN/2個分を、書込み物理アドレステーブルNXPADTBL1とし、エントリー番号(N/2)からNまでの残りのN/2個分を書込み物理アドレステーブルNXPADTBL2として管理する。
また、図15のアドレス範囲マップADMAPでは、物理アドレスPADが“00000000”から”027FFFFF”までは、物理アドレス領域PRNG1を示し、物理アドレスPADが“02800000”から“07FFFFFF”までは、物理アドレス領域PRNG2を示す。従って、物理アドレス領域PRNG1の物理セグメントアドレスSGAの範囲は“0000”から“027F”となり、物理アドレス領域PRNG2の物理セグメントアドレスSGAの範囲は“0280”から“07FF”となる。
情報処理回路MANAGERは、物理アドレス領域PRNG1の範囲内の物理アドレスPADに対して書込み物理アドレステーブルNXPADTBL1を利用し、これを更新し、物理アドレス領域PRNG2の範囲内の物理アドレスPADに対して書込み物理アドレステーブルNXPADTBL2を利用し、これを更新する。
書込み物理アドレステーブルNXPADTBLを更新するために、まず物理セグメントアドレスを決定し、次に決定された物理セグメントアドレス内の物理アドレスを決定する。
図10に示すように、ランダムアクセスメモリRAM内の物理セグメントテーブルPSEGTBL1へは、物理セグメントアドレスSGA毎に、無効状態の物理アドレスの総数TNIPAと、有効状態の物理アドレスの総数TNVPAGEと、無効状態の物理アドレスCPADの中で消去回数の最小値MCPADERCを持つ物理アドレスMCPADと、その物理アドレスMCPADに対応する最小消去回数値MCPADERCとが格納されている。
まず、情報処理回路MANAGERは、ランダムアクセスメモリRAMから、物理セグメントアドレスSGA毎に、無効状態の物理アドレスの総数TNIPAと、これら物理アドレスMCPADと最小消去回数値MCPADERCを読み出す(Step21)。
次に、ランダムアクセスメモリRAMから読み出された物理セグメントアドレスSGA毎の無効状態の物理アドレスの総数TNIPAGEが書込み物理アドレステーブルNXPADTBLの登録数Nより大きな物理セグメントアドレスSGAを選択する(Step22)。さらに、この選択された物理セグメントアドレスSGA毎の最小消去回数値MCPADERCを比較し、その最小消去回数値MCPADERCの中の最小値MMCPADERCを求める(Step23)。
次に、最小値MMCPADERCを持つ物理セグメントアドレスSGAと物理アドレスMCPADを、物理アドレステーブルNXPADTBLを更新するための物理セグメントアドレスTSGADと物理アドレスTMCPADとに決定する(Step24)。
Step22で選択される物理セグメントアドレスSGAを存在させるには、物理アドレス空間の大きさを論理アドレス空間の大きさより、少なくとも書込み物理アドレステーブルNXPADTBLが登録できるアドレス分の大きさ以上にすると良い。
次に、情報処理回路MANAGERは、物理セグメントアドレスTSGA内の物理アドレスTMCPADに対応する消去回数PERC値をランダムアクセスメモリRAMから読み出し、消去回数閾値ERCthと比較する(Step25)。消去回数PERC値が消去回数閾値ERCth以下の場合、情報処理回路MANAGERは、現在の物理アドレス物理アドレスTMCPADへの書込みを許可し、Step26を行う。
消去回数PERC値が消去回数閾値ERCthより大きい場合、情報処理回路MANAGERは、現在の物理アドレスTMCPADへの書込みを禁止し、Step29を行う。
Step29で、情報処理回路MANAGERは、現在の物理セグメントアドレス内で、消去回数閾値ERCth以下の消去回数を持つ無効状態の物理アドレスの数Ninvが、書込み物理アドレステーブルNXPADTBLが登録できるアドレス数Nより小さいかどうか(Ninv<N)を判定し、小さい場合はStep30を行い、大きい場合はStep31を行う。
Step31において、情報処理回路MANAGERは、現在の物理アドレスTMCPADへ演算を行い、新物理アドレスTMCPADを生成し、Step25を再度実行する。Step31の演算方法の一例を、図21に示す。図21については、後段にて説明する。
Step30では、情報処理回路MANAGERは、消去回数閾値ERCthへ、ある値アルファα分だけ加算した新消去回数閾値ERCthを生成し、Step25を再度実行する。
Step26では、情報処理回路MANAGERが、書込み物理アドレステーブルNXPADTBLへ、現在の物理アドレスTMCPPADと、この物理アドレスPPADに対応した有効フラグPVLD値と消去回数PERC値を登録する。書込み物理アドレステーブルNXPADTBLには、N組の登録が可能であり、特に限定しないが、エントリ番号ENUMの小さな番号から順に登録される。書込み物理アドレステーブルNXPADTBLの登録組数は、情報処理回路MANAGERによって任意に設定可能であり、不揮発性メモリ装置(NVM10からNVM17)への書込み速度が最大となるように設定すると良い。
次のStep27では、情報処理回路MANAGERは、書込み物理アドレステーブルNXPADTBLへの全N組の登録が完了したか否かをチェックする。全N組の登録が完了していなければ、Step29を実行する。全N組の登録が完了していれば、書込み物理アドレステーブルNXPADTBLの更新を完了する(Step28)。
図22は、制御回路STRCT0が不揮発性メモリ装置(NVM10からNVM17)へデータを書き込む際のアドレス変換テーブルLPTBLの更新方法及び不揮発性メモリ装置へデータ更新方法の一例を示している。
アドレス変換テーブルLPTBLは、情報処理装置CPU_CHIPから制御回路STRCT0へ入力された論理アドレスLADを不揮発性メモリ装置の物理アドレスPADへ転換するためのテーブルである。また、アドレス変換テーブルLPTBLは、論理アドレスLADに対応した物理アドレスCPADと物理アドレス有効フラグCVFから構成される。また、このアドレス変換テーブルLPTBLはランダムアクセスメモリRAMへ格納される。
不揮発性メモリ装置には、物理アドレスPADに対応したデータDATAと、論理アドレスLADと、データ有効フラグDVFが格納される。
図22の(a)は、時間T0より後に、情報処理装置CPU_CHIPから制御回路STRCT0へ論理アドレス領域LRNG1へのライトリクエストWTREQ0、WTREQ1、WTREQ2及びWTREQ3が入力され、これらのライトリクエストのデータが不揮発性メモリ装置の物理アドレス領域PRNG1へ書き込まれた後の時間T1におけるアドレス変換テーブルLPTBL及び不揮発性メモリ装置が格納するアドレス、データおよび有効フラグを示している。
ライトリクエストWTREQ0には論理アドレスLAD値0、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA0が含まれる。
ライトリクエストWTREQ1には論理アドレスLAD値1、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA1が含まれる。
ライトリクエストWTREQ2には論理アドレスLAD値2、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA2が含まれる。
ライトリクエストWTREQ3には論理アドレスLAD値3、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA3が含まれる。
ライトリクエストWTREQ0、WTREQ1、WTREQ2及びWTREQ3が制御回路STRCT0へ入力した際は、インターフェース回路HOST_IFは、これらのライトリクエストをバッファ装置BUF0へ転送する。
次に、情報処理回路MANAGERは、バッファ装置BUF0へ格納されているライトリクエストWTREQ0、WTREQ1、WTREQ2及びWTREQ3を順に読み出す。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ0、WTREQ1、WTREQ2及びWTREQ3の論理アドレスLAD値は、それぞれ0、1、2および3であるため、メモリ制御装置RAMCを通じてランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLの論理アドレスLADの0番地、1番地、2番地および3番地から物理アドレス値CPADおよび有効フラグCVF値を読みだす。
最初は、図12に示したように、読み出された全ての有効フラグCVF値は0であるため、論理アドレスLADの0番地、1番地、2番地および3番地には物理アドレスCPADが割り当てられていないことがわかる。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ0、1、2および3のそれぞれの書込みデータDATA0、1、2および3に対するECCコードECC0、1、2および3を生成し、図14に示すデータフォーマットに従い、書込みデータDATA0、1、2および3をメインデータDArea0、1、2および3とし、これらメインデータDArea0、1、2および3へ対応した冗長データRArea0、1、2および3を生成する。
不揮発性メモリ装置への書込みデータWDATA0は、メインデータDArea0と冗長データRArea0から構成され、書込みデータWDATA1はメインデータDArea1と冗長データRArea1から構成され、書込みデータWDATA2はメインデータDArea2と冗長データRArea2から構成され、書込みデータWDATA3はメインデータDArea3と冗長データRArea3から構成される。
情報処理回路MANAGERにより、書込みデータWDATA0、1、2および3は、それぞれ、不揮発性メモリ装置の一つの物理アドレスへ書き込まれる。
冗長データRArea0、1、2および3には、それぞれECCコードECC0、1、2および3が含まれ、さらに、共通に、データ反転フラグINVFLG値0、ライトフラグWRITFLG値0、、ECCフラグECCFLG値0、ステート情報STATE値1、信頼性レベル情報RELIABLE値1、バッドブロック情報BADBLK値0、モニターセル情報MONITOR値0、予備領域RSV値0が含まれる。
次に、情報処理回路MANAGERは、書込み物理アドレステーブルNXPADTBL1のエントリー番号ENUMの0番から3番までに格納されている物理アドレスNXPAD値0、2、4、6を読み出し、論理アドレスLADの0番地、1番地、2番地および3番地に割り当てる。
さらに、情報処理回路MANAGERは、物理アドレスNXPAD1値0、2、4および6に従い、調停回路ARBとメモリ制御装置(NVCT10からNVCT17)を通じ、不揮発性メモリ装置の物理アドレスPADの0番地へはライトリクエストWTREQ0のデータDATA0が含まれる書込みデータWDATA0、論理アドレスLAD値0及びデータ有効フラグDVF値1を書き込み、物理アドレスPADの2番地へはライトリクエストWTREQ1のデータDATA1が含まれる書込みデータWDATA1、論理アドレスLAD値1およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの4番地へはライトリクエストWTREQ2のデータDATA2が含まれる書込みデータWDATA2、論理アドレスLAD値2およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの6番地へはライトリクエストWTREQ3のデータDATA3が含まれる書込みデータWDATA3、論理アドレスLAD値3およびデータ有効フラグDVF値1を書き込む。
最後に、情報処理回路MANAGERは、メモリ制御装置RAMCを通じてランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLの論理アドレスLADの0番地へは物理アドレスNXPAD値0および有効フラグCVF値1を書き込み、論理アドレスLADの1番地へは物理アドレスNXPAD値2および有効フラグCVF値1を書き込み、論理アドレスLADの2番地へは物理アドレスNXPAD値4および有効フラグCVF値1を書き込み、論理アドレスLADの3番地へは物理アドレスNXPAD値6および有効フラグCVF値1を書き込む。
図22の(b)は、時間T1より後に、情報処理装置CPU_CHIPから制御回路STRCT0へライトリクエストWTREQ4、WTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9が入力し、これらのライトリクエストのデータが不揮発性メモリ装置の物理アドレス領域PRNG1へ書き込まれた後の時間T2におけるアドレス変換テーブルLPTBLおよび不揮発性メモリ装置が格納するアドレス、データおよび有効フラグを示している。
ライトリクエストWTREQ4には、論理アドレスLAD値0、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA4が含まれる。
ライトリクエストWTREQ5には、論理アドレスLAD値1、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA5が含まれる。
ライトリクエストWTREQ6には、論理アドレスLAD値4、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA6が含まれる。
ライトリクエストWTREQ7には、論理アドレスLAD値5、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA7が含まれる。
ライトリクエストWTREQ8には、論理アドレスLAD値2、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA8が含まれる。
ライトリクエストWTREQ8には、論理アドレスLAD値3、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA9が含まれる。
ライトリクエストWTREQ4、WTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9が制御回路STRCT0へ入力した際は、インターフェース回路HOST_IFは、これらのライトリクエストをバッファ装置BUF0へ転送する。
次に、情報処理回路MANAGERは、バッファ装置BUF0へ格納されているライトリクエストWTREQ4、WTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9を順に読み出す。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ4、5、6および7のそれぞれの書込みデータDATA4、5、6および7に対するECCコードECC4、5、6および7を生成し、図14に示すデータフォーマットに従い、書込みデータDATA4、5、6および7をメインデータDArea4、5、6および7とし、これらメインデータDArea4、5、6および7へ対応した冗長データRArea4、5、6および7を生成する。
不揮発性メモリ装置への書込みデータWDATA4はメインデータDArea4と冗長データRArea4から構成され、書込みデータWDATA5はメインデータDArea5と冗長データRArea5から構成され、書込みデータWDATA6はメインデータDArea6と冗長データRArea6から構成され、書込みデータWDATA7はメインデータDArea7と冗長データRArea7から構成される。
情報処理回路MANAGERにより、書込みデータWDATA4、5、6および7は、それぞれ、不揮発性メモリ装置の一つの物理アドレスへ書き込まれる。
冗長データRArea4、5、6および7には、それぞれECCコードECC4、5、6および7が含まれ、さらに、共通に、データ反転フラグINVFLG値0、書き込み方法選択情報WRITFLG値0、ECCフラグECCFLG値0、ステート情報STATE値1、信頼性レベル情報RELIABLE値1、バッドブロック情報BADBLK値0、モニターセル情報MONITOR値0、予備領域RSV値0が含まれる。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ4のWTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9の論理アドレスLAD値は、それぞれ0、1、4、5、2および3であるため、メモリ制御装置RAMCを通じてランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLの論理アドレスLADの0番地、1番地、4番地、5番地、2番地および3番地から、それぞれ物理アドレスCPAD値および有効フラグCVF値を読みだす。
アドレス変換テーブルLPTBLの論理アドレスLADの0番地の物理アドレスCPAD値は0、有効フラグCVF値は1であり、既に書き込まれている物理アドレスPAD0番地のデータを無効にするため、物理アドレスPAD0番地の有効フラグDVF値を0に設定する(101 → 111)。
アドレス変換テーブルLPTBLの論理アドレスLADの1番地の物理アドレスCPAD値は2、有効フラグCVF値は1であり、既に書き込まれている物理アドレスPAD1番地のデータを無効にするため、物理アドレスPAD1番地の有効フラグDVF値を0に設定する(102 → 112)。
アドレス変換テーブルLPTBLの論理アドレスLADの4番地の物理アドレスCPAD値は0、有効フラグCVF値は0であり、論理アドレスLAD4番地には、物理アドレスCPADが割り当てられていないことがわかる。
アドレス変換テーブルLPTBLの論理アドレスLADの5番地の物理アドレスCPAD値は0、有効フラグCVF値は0であり、論理アドレスLAD5番地には、物理アドレスCPADが割り当てられていないことがわかる。
アドレス変換テーブルLPTBLの論理アドレスLADの2番地の物理アドレスCPAD値は4、有効フラグCVF値は1であり、既に書き込まれている物理アドレスPAD4番地のデータを無効にするため、物理アドレスPAD4番地の有効フラグDVF値を0に設定する(103 → 113)。
アドレス変換テーブルLPTBLの論理アドレスLADの3番地の物理アドレスCPAD値は6、有効フラグCVF値は1であり、既に書き込まれている物理アドレスPAD6番地のデータを無効にするため、物理アドレスPAD6番地の有効フラグDVF値を0に設定する(104 → 114)。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ4、WTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9の論理アドレスLAD値は、それぞれ0、1、4、5、2および3であるため、書込み物理アドレステーブルNXPADTBL1のエントリー番号ENUMの4番から9番までに格納されている物理アドレスNXPAD値8、10、12、14、16および18を読み出し、論理アドレスLADの0番地、1番地、4番地、5番地、2番地および3番地に割り当てる。
さらに、情報処理回路MANAGERは、物理アドレスNXPAD値8、10、12、14、16および18に従い、調停回路ARBとメモリ制御装置(NVCT10からNVCT17)を通じて、不揮発性メモリ装置(NVM10−17)の物理アドレスPADの8番地へはライトリクエストWTREQ4のデータDATA4が含まれる書込みデータWDATA4、論理アドレスLAD値0およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの10番地へはライトリクエストWTREQ5のデータDATA5が含まれる書込みデータWDATA5、論理アドレスLAD値1およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの12番地へはライトリクエストWTREQ2のデータDATA6が含まれる書込みデータWDATA6、論理アドレスLAD値4およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの14番地へはライトリクエストWTREQ2のデータDATA7が含まれる書込みデータWDATA7、論理アドレスLAD値5およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの16番地へはライトリクエストWTREQ2のデータDATA8が含まれる書込みデータWDATA8、論理アドレスLAD値2およびデータ有効フラグDVFLD値1を書き込み、物理アドレスPADの18番地へはライトリクエストWTREQ3のデータDATA9が含まれる書込みデータWDATA9、論理アドレスLAD値3およびデータ有効フラグDVF値1を書き込む。
図23は、制御回路STRCT0が不揮発性メモリ装置(NVM10からNVM17)の物理アドレス領域LRNG2にデータを書き込む際のアドレス変換テーブルLPTBLの更新方法および不揮発性メモリ装置へのデータ更新方法の一例を示している。
アドレス変換テーブルLPTBLは、情報処理装置CPU_CHIPから制御回路STRCT0へ入力された論理アドレスLADを不揮発性メモリ装置の物理アドレスPADへ転換するためのテーブルである。アドレス変換テーブルLPTBLは、論理アドレスLADに対応した物理アドレスPADと物理アドレス有効フラグCVFから構成される。また、このアドレス変換テーブルLPTBLは、ランダムアクセスメモリRAMに格納される。
不揮発性メモリ装置には、物理アドレスPADに対応したデータDATAと、論理アドレスLADと、データ有効フラグDVFが格納される。
図23の(a)は、時間T0より後に、情報処理装置CPU_CHIPから制御回路STRCT0へ、論理アドレス領域LRNG2へのライトリクエストWTREQ0、WTREQ1、WTREQ2およびWTREQ3が入力し、これらのライトリクエストのデータが不揮発性メモリ装置の物理アドレス領域PRNG2へ書き込まれた後の時間T1におけるアドレス変換テーブルLPTBLおよび不揮発性メモリ装置が格納するアドレス、データおよび有効フラグを示している。
ライトリクエストWTREQ0には16進数で論理アドレスLAD値“800000”、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA0が含まれる。
ライトリクエストWTREQ1には16進数で論理アドレスLAD値“800001”、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA1が含まれる。
ライトリクエストWTREQ2には、16進数で論理アドレスLAD値“800002”、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA2が含まれる。
ライトリクエストWTREQ3には、16進数で論理アドレスLAD値“800003”、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA3が含まれる。
ライトリクエストWTREQ0、WTREQ1、WTREQ2およびWTREQ3が制御回路STRCT0へ入力した際、インターフェース回路HOST_IFは、これらのライトリクエストをバッファ装置BUF0へ転送する。
次に、情報処理回路MANAGERは、バッファ装置BUF0へ格納されているライトリクエストWTREQ0、WTREQ1、WTREQ2およびWTREQ3を順に読み出す。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ0、WTREQ1、WTREQ2およびWTREQ3の論理アドレスLAD値がそれぞれ0、1、2および3であるため、メモリ制御装置RAMCを通じてランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLの論理アドレスLADの“800000”番地、“800001”番地、“800002”番地および“800003”番地から物理アドレス値CPADおよび有効フラグCVF値を読み出す。
最初は、図12のように読み出された全ての有効フラグCVF値は0であるため、論理アドレスLAD“800000”番地、“800001”番地、“800002”番地および“800003”番地には物理アドレスCPADが割り当てられていないことが分かる。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ0、1、2および3のそれぞれの書込みデータDATA0、1、2および3に対するECCコードECC0、1、2および3を生成し、図14に示すデータフォーマットに従い、書込みデータDATA0、1、2および3をメインデータDArea0、1、2および3とし、これらメインデータDArea0、1、2および3へ対応した冗長データRArea0、1、2および3を生成する。
不揮発性メモリ装置への書込みデータWDATA0は、メインデータDArea0と冗長データRArea0から構成され、書込みデータWDATA1はメインデータDArea1と冗長データRArea1から構成され、書込みデータWDATA2はメインデータDArea2と冗長データRArea2から構成され、書込みデータWDATA3はメインデータDArea3と冗長データRArea3から構成される。
情報処理回路MANAGERにより、書込みデータWDATA0、1、2および3は、それぞれ、不揮発性メモリ装置の一つの物理アドレスへ書き込まれる。
冗長データRArea0、1、2および3には、それぞれECCコードECC0、1、2および3が含まれ、さらに共通に、データ反転フラグINVFLG値0、ライトフラグWRITFLG値0、ECCフラグECCFLG値0、ステート情報STATE値1、信頼性レベル情報RELIABLE値0、バッドブロック情報BADBLK値0、モニターセル情報MONITOR値0、予備領域RSV値0が含まれる。
次に、情報処理回路MANAGERは、書込み物理アドレステーブルNXPADTBL2のエントリー番号ENUMの16番から19番までに格納されている物理アドレスNXPAD値2800000、2800001、2800002、2800003を読み出し、論理アドレスLADの“800000”番地、“800001”番地、“800002”番地および“800003”番地に割り当てる。
さらに、情報処理回路MANAGERは、物理アドレスNXPAD値2800000、2800001、2800002および2800003に従い、調停回路ARBとメモリ制御装置(NVCT10からNVCT17)を通じ、不揮発性メモリ装置の物理アドレスPADの“2800000”番地へはライトリクエストWTREQ0のデータDATA0が含まれる書込みデータWDATA0、論理アドレスLAD値800000およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの“2800001”番地へはライトリクエストWTREQ1のデータDATA1が含まれる書込みデータWDATA1、論理アドレスLAD値800001およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの“2800002”番地へはライトリクエストWTREQ2のデータDATA2が含まれる書込みデータWDATA2、論理アドレスLAD値800002およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの“2800003”番地へはライトリクエストWTREQ3のデータDATA3が含まれる書込みデータWDATA3、論理アドレスLAD値800003およびデータ有効フラグDVF値1を書き込む。
最後に、情報処理回路MANAGERは、メモリ制御装置RAMCを通じ、ランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLの論理アドレスLADの“800000”番地へは物理アドレスNXPAD値2800000および有効フラグCVF値1を書き込み、論理アドレスLADの“800001”番地へは物理アドレスNXPAD値2800001および有効フラグCVF値1を書き込み、論理アドレスLADの“800002”番地へは物理アドレスNXPAD値2800002および有効フラグCVF値1を書き込み、論理アドレスLADの“800003”番地へは物理アドレスNXPAD値2800003および有効フラグCVF値1を書き込む。
図23の(b)は、時間T1より後に、情報処理装置CPU_CHIPから制御回路STRCT0へ、ライトリクエストWTREQ4、WTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9が入力され、これらのライトリクエストのデータが不揮発性メモリ装置の物理アドレス領域PRNG2へ書き込まれた後の時間T2におけるアドレス変換テーブルLPTBLおよび不揮発性メモリ装置が格納するアドレス、データおよび有効フラグを示している。
ライトリクエストWTREQ4には、論理アドレスLAD値800000、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA4が含まれる。ライトリクエストWTREQ5には、論理アドレスLAD値800001、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA5が含まれる。ライトリクエストWTREQ6には、論理アドレスLAD値800004、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA6が含まれる。ライトリクエストWTREQ7には論理アドレスLAD値800005、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA7が含まれる。ライトリクエストWTREQ8には、論理アドレスLAD値800002、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA8が含まれる。ライトリクエストWTREQ8には、論理アドレスLAD値800003、データ書込み命令WRT、セクタカウントSEC値1、書込みデータDATA9が含まれる。
ライトリクエストWTREQ4、WTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9が制御回路STRCT0へ入力された際、インターフェース回路HOST_IFは、これらのライトリクエストをバッファ装置BUF0へ転送する。
次に、情報処理回路MANAGERは、バッファ装置BUF0へ格納されているライトリクエストWTREQ4、WTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9を順に読み出す。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ4、5、6および7のそれぞれの書込みデータDATA4、5、6および7に対するECCコードECC4、5、6および7を生成し、図14に示すデータフォーマットに従い、書込みデータDATA4、5、6および7をメインデータDArea4、5、6および7とし、これらメインデータDArea4、5、6および7へ対応した冗長データRArea4、5、6および7を生成する。
不揮発性メモリ装置への書込みデータWDATA4はメインデータDArea4と冗長データRArea4から構成され、書込みデータWDATA5はメインデータDArea5と冗長データRArea5から構成され、書込みデータWDATA6はメインデータDArea6と冗長データRArea6から構成され、書込みデータWDATA7はメインデータDArea7と冗長データRArea7から構成される。
情報処理回路MANAGERにより、書込みデータWDATA4、5、6および7は、それぞれ、不揮発性メモリ装置の一つの物理アドレスへ書き込まれる。
冗長データRArea4、5、6および7には、それぞれECCコードECC4、5、6および7が含まれ、さらに共通に、データ反転フラグINVFLG値0、ライトフラグWRITFLG値0、ECCフラグECCFLG値0、ステート情報STATE値1、信頼性レベル情報RELIABLE値0、バッドブロック情報BADBLK値0、モニターセル情報MONITOR値0、予備領域RSV値0が含まれる。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ4のWTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9の論理アドレスLAD値は、それぞれ800000、800001、800004、800005、800002および800003であるため、メモリ制御装置RAMCを通じてランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBLの論理アドレスLADの“800000”番地、“800001”番地、“800004”番地、“800005”番地、“800002”番地および“800003”番地から、それぞれ物理アドレスCPAD値および有効フラグCVF値を読み出す。
アドレス変換テーブルLPTBLの論理アドレスLADの“800000”番地の物理アドレスCPAD値は2800000、有効フラグCVF値は1であり、既に書き込まれている物理アドレスPAD0番地のデータを無効にするため、物理アドレスPAD“800000”番地の有効フラグDVF値を0に設定する(201 → 211)。
アドレス変換テーブルLPTBLの論理アドレスLADの“800001”番地の物理アドレスCPAD値は2800001、有効フラグCVF値は1であり、既に書き込まれている物理アドレスPAD“800001”番地のデータを無効にするため、物理アドレスPAD“2800001”番地の有効フラグDVF値を0に設定する(202 → 212)。
アドレス変換テーブルLPTBLの論理アドレスLADの“800004”番地の物理アドレスCPAD値は0、有効フラグCVF値は0であり、論理アドレスLAD“800004”番地には、物理アドレスCPADが割り当てられていないことが分かる。
アドレス変換テーブルLPTBLの論理アドレスLADの“800005”番地の物理アドレスCPAD値は0、有効フラグCVF値は0であり、論理アドレスLAD“800005”番地には、物理アドレスCPADが割り当てられていないことが分かる。
アドレス変換テーブルLPTBLの論理アドレスLADの“800002”番地の物理アドレスCPAD値は2800002、有効フラグCVF値は1であり、既に書き込まれている物理アドレスPAD“2800002”番地のデータを無効にするため、物理アドレスPAD4番地の有効フラグDVF値を0に設定する(203 → 213)。
アドレス変換テーブルLPTBLの論理アドレスLADの“800003”番地の物理アドレスCPAD値は2800003、有効フラグCVF値は1であり、既に書き込まれている物理アドレスPAD“2800003”番地のデータを無効にするため、物理アドレスPAD“2800003”番地の有効フラグDVF値を0に設定する(204 → 214)。
次に、情報処理回路MANAGERは、ライトリクエストWTREQ4、WTREQ5、WTREQ6、WTREQ7、WTREQ8およびWTREQ9の論理アドレスLAD値は、それぞれ800000、800001、800004、800005、800002および800003であるため、書込み物理アドレステーブルNXPADTBL2のエントリー番号ENUMの20番から25番までに格納されている物理アドレスNXPAD値2800004、2800005、2800006、2800007、2800008および2800009を読み出し、論理アドレスLADの“800000”番地、“800001”番地、“800004”番地、“800005”番地、“800002”番地および“800003”番地に割り当てる。
さらに、情報処理回路MANAGERは、物理アドレスNXPAD値2800004、2800005、2800006、2800007、2800008および2800009に従い、調停回路ARBとおよびメモリ制御装置(NVCT10からNVCT17)を通じ、不揮発性メモリ装置(NVM10-17)の物理アドレスPADの“2800004”番地へはライトリクエストWTREQ4のデータDATA4が含まれる書込みデータWDATA4、論理アドレスLAD値800000およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの“2800005”番地へはライトリクエストWTREQ5のデータDATA5が含まれる書込みデータWDATA5、論理アドレスLAD値800001およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの“2800006”番地へはライトリクエストWTREQ2のデータDATA6が含まれる書込みデータWDATA6、論理アドレスLAD値800004およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの“2800007”番地へはライトリクエストWTREQ2のデータDATA7が含まれる書込みデータWDATA7、論理アドレスLAD値800005およびデータ有効フラグDVF値1を書き込み、物理アドレスPADの“2800008”番地へはライトリクエストWTREQ2のデータDATA8が含まれる書込みデータWDATA8、論理アドレスLAD値800002およびデータ有効フラグDVFLD値1を書き込み、物理アドレスPADの“2800009”番地へはライトリクエストWTREQ3のデータDATA9が含まれる書込みデータWDATA9、論理アドレスLAD値800003およびデータ有効フラグDVF値1を書き込む。
図24では、情報処理回路MANAGERが実行する相変化メモリの物理アドレス毎のデータ消去回数のバラツキを抑え平準化する別の方法を示す。
図11に示すように、情報処理回路MANAGERは、書込み物理アドレステーブルNXPADTBLの中で、エントリー番号0から(N/2-1)のN/2個分を書込み物理アドレステーブルNXPADTBL1とし、エントリー番号(N/2)からNまでの残りのN/2個分を書込み物理アドレステーブルNXPADTBL2として管理する。
図19および図20で説明した物理アドレス毎の消去回数の平準化方法は、無効状態の物理アドレスに対する動的な消去回数の平準化方法である。この動的な消去回数の平準化方法では、無効状態の物理アドレスの消去回数と有効状態の物理アドレスの消去回数の差が大きくなる場合があるため、図24では、無効状態の物理アドレスの消去回数と有効状態の物理アドレスの消去回数のバラツキを抑える静的な消去回数平準化法を示す。
また、図15のアドレス範囲マップADMAPでは、物理アドレスPADが“00000000”から“027FFFFF”までは、物理アドレス領域PRNG1を示し、物理アドレスPADが“02800000”から“07FFFFFF”までは、物理アドレス領域PRNG2を示す。従って、物理アドレス領域PRNG1の物理セグメントアドレスSGAの範囲は“0000”から“027F”となり、物理アドレス領域PRNG2の物理セグメントアドレスSGAの範囲は“0280”から“07FF”となる。
情報処理回路MANAGERは、物理アドレス領域PRNG1および物理アドレス領域PRNG2の範囲内のそれぞれで、図24に示す静的な消去回数の平準化方法を行う。
情報処理回路MANAGERは、Step51で以下を行う。Step51において、情報処理回路MANAGERは、図10に示す物理セグメントテーブルPSEGTBL1内の無効物理アドレスに関する最大消去回数MXERCの中の最大値MXIVERCと、物理セグメントテーブルPSEGTBL2内の有効物理アドレスに関する最小消去回数MNERCの中の最小値MNVLERCとの差DIFEC(=MXIVERC−MNVLERC)を求める。
次のStep52で、情報処理回路MANAGERは、無効状態の物理アドレスの消去回数と、有効状態の物理アドレスの消去回数の差の閾値DERCthを設定し、この閾値DERCthと消去回数差DIFECを比較する。
消去回数差DIFECが閾値DERCthより大きい場合、情報処理回路MANAGERは、消去回数の平準化行うためStep53を行い、小さい場合はStep58を行う。
Step58において、情報処理回路MANAGERは、物理セグメントテーブルPSEGTBL1又はPSEGTBL2が更新されたか否かを判定し、更新された場合はStep51にて再度、消去回数差DIFECを求め、いずれの物理セグメントテーブルも更新されていない場合は、再度Step58を行う。
Step53で、情報処理回路MANAGERは、物理セグメントテーブルPSEGTBL2内の有効物理アドレスに関する最小消去回数MNERCの中で最も小さな消去回数から順にM個分の物理アドレスSPAD1〜Mを選択する。
Step54では、情報処理回路MANAGERは、物理セグメントテーブルPSEGTBL1内の無効物理アドレスに関する最大消去回数MXERCの中で最も小さな消去回数から順にM個分の物理アドレスDPAD1〜Mを選択する。
Step55では、情報処理回路MANAGERは、選択された物理アドレスDPAD1〜Mが、書込み物理アドレステーブルNXPADTBLへ登録されているかを調べる。もし、選択された物理アドレスDPAD1〜Mが、書込み物理アドレステーブルNXPADTBLへ登録されていれば、Step59において現在の選択された物理アドレスDPAD1〜Mを、最小値MXNERCを持つ物理アドレスの候補から外し、再度Step54を行う。もし、選択された物理アドレスDPAD1〜Mが、書込み物理アドレステーブルNXPADTBLへ登録されていなければStep56を行う。
Step56では、情報処理回路MANAGERは、物理アドレスSPAD1〜Mのデータを物理アドレスDPAD1〜Mへ移動させる。
Step57では、情報処理回路MANAGERは、物理アドレスSPAD1〜Mのデータを物理アドレスDPAD1〜Mへ移動させたことにより、更新する必要のある全テーブルを更新する。
この例では、M個分の物理アドレスのデータを移動した例を示したが、Mの値は、目標性能に応じて情報処理回路MANAGERによってプログラム可能であり、書込み物理アドレステーブルNXPADTBLの登録数Nとすると1≦M≦Nに設定すると良い。
[パイプライン書込み動作]
図25は、情報処理装置CPU_CHIPからメモリモジュールNVMSTR0へ連続してライトリクエストが発生した場合のメモリモジュールNVMSTR0内部でパイプライン的に実行されるデータの書込み動作の一例を示す。特に限定しないが、制御回路STRCT0のバッファ装置BUF0から3には、それぞれN×512バイトの書込みデータが格納できる。
バッファ転送動作WTBUF0、1、2および3は、ライトリクエストWTREQを、バッファ装置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とは、制御回路STRCT0によってパイプライン動作が実現されるため書込み速度を向上することができる。
時間T0からT2の期間に発生したN回のライトリクエストWTREQ(1)−WTREQ(N)はインターフェース回路HOST_IFにおいて、先ず、バッファ装置BUF0へ転送される(WTBUF0)。バッファ装置BUF0へ書き込みデータが格納できなくなると、時間T2からT4の期間に発生したN回のライトリクエストWTREQ(N+1)−WTREQ(2N)はバッファ装置BUF1へ転送される(WTBUF1)。
バッファ装置BUF1へ書き込みデータが格納できなくなると、時間T4からT6の期間に発生したN回のライトリクエストWTREQ(2N+1)−WTREQ(3N)はバッファ装置BUF2へ転送される(WTBUF2)。
バッファ装置BUF2へ書き込みデータが格納できなくなると、時間T6からT8の期間に発生したN回のライトリクエストWTREQ(3N+1)−WTREQ(4N)はバッファ装置BUF3へ転送される(WTBUF3)。
情報処理回路MANAGERは、時間T1からT3の期間において、バッファ装置BUF0に格納されている書込みデータを不揮発性メモリ装置NVMへ書込むための事前準備(PREOP0)を行う。情報処理回路MANAGERが行う事前準備(PREOP0)の動作内容を以下に示す。
(1) ライトリクエストWTREQ(1)−WTREQ(N)へ含まれる論理アドレスLAD値を利用し、アドレス変換テーブルLPTBLから物理アドレスPADを読み出し、必要に応じてこの物理アドレスPADの有効フラグDVLD値を0にし、データを無効にする。
(2) アドレス変換テーブルLPTBLを更新する。
(3) ライトリクエストWTREQ(1)−WTREQ(N)へ含まれる論理アドレスLAD値を利用し、アドレス変換テーブルLPTBLから物理アドレスPADを読み出し、必要に応じてこの物理アドレスPADの有効フラグDVLD値を0にし、データを無効にする。
(4) アドレス変換テーブルLPTBLを更新する。
(5) 書込み物理アドレステーブルNXPADTBLに格納されている物理アドレスNXPADを読み出し、この物理アドレスNXPADへライトリクエストWTREQ(1)−WTREQ(N)へ含まれる論理アドレスLADを割り当てる。
(6) 物理セグメントテーブルPSEGTBLを更新する。
(7) 物理テーブルPADTBを更新する。
(8) 次の書込みに備えて、書込み物理アドレステーブルNXPADTBLを更新する。
他の事前準備動作PREOP1、2、3も事前準備動作PREOP0と同様の動作を行う。
次に、情報処理回路MANAGERは、時間T3からT5の期間において、バッファ装置BUF0に格納されている書込みデータを不揮発性メモリ装置NVMのへ書込む(WTNVM0)。この際に、データが書き込まれた不揮発性メモリ装置NVMの物理アドレスは上記(4)での物理アドレスNXPAD値と等しい。
他のデータ書込み動作WTNVM1、2、3もデータ書込み動作WTNVM0と同様の動作を行う。
[読み出し動作]
図26は、情報処理装置CPU_CHIPからメモリモジュールNVMSTR0へリードリクエストRDREQ01が入力された際にメモリモジュールNVMSTR0が行うデータの読み出し動作の一例を示している。
情報処理装置CPU_CHIPから論理アドレス値LAD0、データ読み出し命令RD、セクタカウント値SEC1が含まれるリードリクエストRDREQ01が制御回路STRCT0へ入力されると、インターフェース回路HOST_IFは、ライトリクエストWTREQ01に埋め込まれているクロック情報を取り出し、シリアルデータ化されたリードリクエストRDREQ01をパラレルデータへ変換し、バッファ装置BUF0および情報処理回路MANAGERへ転送する(Step61)。
次に、情報処理回路MANAGERは、論理アドレス値LAD0、データ読み出し命令RDおよびセクタカウントSEC1を解読し、ランダムアクセスメモリRAMへ保存されているアドレス変換テーブルLPTBL内のアドレスLAD0番地に格納されている物理アドレス値CPAD0と、この物理アドレス値CPAD0に対応した有効フラグCVF値を読み出す(Step62)。次に、読み出した有効フラグCVF値が1であるかどうかをチェックする(Step63)。
もし、有効フラグCVF値が0の場合、情報処理回路MANAGERは、論理アドレスLAD0番地には物理アドレスCPADが割り当てられていないことを示し、不揮発性メモリ装置NVMからデータを読み出すことができないため、エラーが発生したことをインターフェース回路HOST_IFを通じて情報処理装置CPU_CHIPへ伝える(Step65)。
もし、有効フラグCVF値が1の場合、情報処理回路MANAGERは、論理アドレスLAD0番地には物理アドレスCPAD0番地が対応していることを示すため、調停回路ARBとおよびメモリ制御装置(NVCT10〜NVCT17)を通じて不揮発性メモリ装置(NVM10〜17)のアドレスCPAD0番地からデータRDATA0を読み出す。データRDATA0には、メインデータDArea0と冗長データRArea0が含まれ、さらに冗長データRArea0には、ライト方法選択情報WRTFLGおよびECCコードECC0が含まれる(Step64)。
次に、情報処理回路MANAGERは、不揮発性メモリNVM0へ格納されているSSDコンフィグレーション情報SDCFG内の論理アドレス領域LRNGと、この論理アドレス領域LRNGに対応したライト方法選択情報WRTFLGを読み出し、論理アドレス値LAD0がどの論理アドレス領域LRNGの論理アドレスかを調べ、これに対応したライト方法選択情報WRTFLGを求める。さらに、ライト方法選択情報WRTFLG値が1かどうかをチェックする(Step66)。
ライト方法選択情報WRTFLG値が1であれば、メインデータDArea0およびECCコードECC0の各ビットを反転させ、メインデータIDArea0およびECCコードIECC0を生成する(Step67)。
次に、情報処理回路MANAGERは、ECCコードIECC0を利用して、メインデータIDArea0にエラーがあるかをチェックし、エラーがあれば訂正を行い(Step68)、インターフェース回路HOST_IFを通じて情報処理装置CPU_CHIPへ転送する(Step69)。
ライト方法選択情報WRTFLG値が1でなければ、情報処理回路MANAGERは、ECCコードECC0を利用して、メインデータDArea0にエラーがあるかをチェックし、エラーがあれば訂正を行い(Step68)、インターフェース回路HOST_IFを通じて情報処理装置CPU_CHIPへ転送する(Step69)。
[書込み方法]
図27は、図13の(b)に示しているSSDコンフィグレーション情報の中のライト方法選択情報WRTFLGにより選択された書込み方法を説明する。
図13の(b)では、論理アドレス領域LRNG1のライト方法選択情報WRTFLGは0へ設定され、論理アドレス領域LRNG2のライト方法選択情報WRTFLGは1に設定されている。
また、特に限定しないが、セット状態のメモリセルは“0”のビットデータを表し、リセット状態のメモリセルは“1”のビットデータを表す。
情報処理装置CPU_CHIPから論理アドレス値LAD、データ書込み命令WRT、セクタカウント値SEC1、512バイトの書込みデータDATA0が含まれるライトリクエストWTREQ01がインターフェース回路HOST_IFを通じて情報処理回路MANAGERへ入力されると(Step71)、情報処理回路MANAGERは、ランダムアクセスメモリRAMへ格納したアドレスマップ範囲ADMAPを利用し、論理アドレス値LADが、論理アドレス領域LRNG1内の論理アドレス値であるか、あるいは、論理アドレス領域LRNG2内の論理アドレス値であるかを判断し、それぞれの論理アドレス領域LRNG1およびLRNG2のライト方法選択情報WRTFLGをチェックする(Step72)。
ライトリクエストWTREQ01に含まれる論理アドレスLADが論理アドレス領域LRNG1内の論理アドレスLADであれば、論理アドレス領域LRNG1のライト方法選択情報WRTFLGが0へ設定されているので、書込みデータDATA0および書込みデータDATA0に対応する冗長データRArea0は、図16の物理アドレス領域PRNG1内の◎で示される書込み許可メモリセルに書き込まれる(Step76)。
ライトリクエストWTREQ01に含まれる論理アドレスLADが論理アドレス領域LRNG2内の論理アドレスLADであれば、論理アドレス領域LRNG2のライト方法選択情報WRTFLGが1へ設定されているので、Step73からStep76を実行する。
情報処理回路MANAGERは、Step73で、512バイト(512 x 8 ビット)の書込みデータDATA0の中で、“0”のビットデータおよび“1”のビットデータを数え(Step73)、“0”のビットデータの数と“1”のビットデータの数を比較する(Step74)。
次に、情報処理回路MANAGERは、“1”のビットデータの数が“0”のビットデータの数より大きい場合は、書込みデータDATA0の各ビットを反転させ(Step75)、図16の物理アドレス領域PRNG2内の◎で示される書込み許可メモリセルへ書き込む(Step76)。
書込みデータDATA0の各ビットを反転させることで、“1”のビットデータの数は、512バイト(512 x 8 ビット)の内、常に2048ビット(=4096/2)以下となる。
メモリセルへ512バイト(512 x 8 ビット)データを書き込むには、一旦、512バイト(512 x 8 ビット)のメモリセルをセット状態にし(“0”ビットデータによる消去)、その後、必要なメモリセルをリセット状態へ書き換える(“1”ビットデータによる書込み)。
書込みデータの各ビットを反転させることで、書込みデータの中の“1”のビットデータの数が常に1/2以下となり、書き込むデータ量を半減できる。
これにより、図16の物理アドレス領域PRNG2内の◎で示される書込み許可メモリセルに対して、“1”のビットデータを1個置きに書き込むことができ、データ書込時にメモリセルが受けるジュール熱の熱履歴の影響を小さくでき、高信頼で長寿命のSSDを提供できる。
図28には、図27で説明したライト方法選択情報WRTFLGが1の場合の書込み方法により、物理アドレス領域PRNG2内のメモリセルにデータを書きこんだ際の不揮発性メモリ装置内のメモリセルアレイARYの使用例を示す。
ワード線WL0〜WLiと、ビット線BL0〜BLjとの交点がメモリセルを表しており、◎は書き込みが許可されたデータ書込みが行われる第1の書込み許可メモリセルを示す。TAREAはテスティングを行うための連続したメモリセル領域を示す。また、□はモニタリング用のメモリセルMONI1およびMONI2を示す。
図27で説明したライト方法選択情報WRTFLGが1の場合の書込み方法にて書き込んだ“1”のビットデータが●を示す。
この図に示すように、物理アドレス領域PRNG2内の◎で示される書込み許可メモリセルに対して、“1”のビットデータを千鳥格子状に書き込むことで、実効的なメモリ容量を変えることなく、メモリセルが受けるジュール熱の熱履歴の影響を小さくでき、高信頼で長寿命の情報処理装置を提供できる。
なお、図27で説明したライト方法選択情報WRTFLGが2の場合、指定された領域からデータが読み出され(step77)、その後、書き込みデータとビット単位で比較され(step78)、違いが見つかった書き換えの必要があるデータだけ書き換えが実行される(step79)。
図29は、図5に示す不揮発性メモリNVMEMのメモリバンクBK0〜BK3のそれぞれが、3次元で、立体的に4層に重なり合っている際の不揮発性メモリ装置内のメモリセルアレイARYの一例を示す。
特に限定しないが、メモリバンクBK0は第0層目へ形成され、メモリバンクBK1は第0層目の下層の第1層目へ形成され、メモリバンクBK2は第1層目の下層の第2層目へ形成され、メモリバンクBK3は第2層目の下層の第3層目へ形成される。ワード線WL0〜WLiとビット線BL0〜BLjとの交点がメモリセルを表し、●はデータを書き込まれたメモリセルを示す。
第0層目のメモリバンクBK0と第1層目のメモリバンクBK1は物理アドレス領域PRNG1を形成し、第2層目のメモリバンクBK2と第3層目のメモリバンクBK3は物理アドレス領域PRNG2を形成する。
TAREA0、TAREA1、TAREA2およびTAREA3はテスティングを行うための連続したメモリセル領域示す。また、□はモニタリング用のメモリセルMONI1-0、MONI1-1、MONI2-0およびMONI2-1を示す。
第0層目のメモリバンクBK0には、ワード線WL0〜WLiの中の偶数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLjの中の偶数番目のビット線BLm(m=偶数)との交点である第1書込み許可メモリセルへデータが書き込まれており、第1層目のメモリバンクBK1には、ワード線WL0〜WLiの中の奇数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLjの中の奇数番目のビット線BLm(m=偶数)との交点である第4書込み許可メモリセルへデータが書き込まれており、第2層目のメモリバンクBK2には、ワード線WL0〜WLiと、ビット線BL0〜BLjのの交点である第1書込み許可メモリセルへデータが書き込まれており、第3層目のメモリバンクBK3には、ワード線WL0〜WLiと、ビット線BL0〜BLjの交点である第1書込み許可メモリセルへデータが書き込まれている。
このように、不揮発性メモリNVMEMのメモリバンクBK0〜BK3のそれぞれを、3次元に、すなわち立体的に重ね合わせることで、不揮発性メモリNVMEMのチップ面積を小さくでき、低コストかつ大容量の不揮発性メモリを実現できる。
また、第0層目のメモリバンクBK0では第1書込み許可メモリセルへデータを書き込み、また、第1層目のメモリバンクBK0では第4書込み許可メモリセルへデータを書き込むことで、層間において書き込むメモリセルが重ならないようにデータを書き込むことができ、メモリセルが受けるジュール熱の熱履歴の影響を小さくでき、高信頼で長寿命の情報処理装置を提供できる。
図21の(a)は、物理アドレスCPADと、不揮発性メモリNVM10〜17のチップアドレスCHIPA[2:0]と、それぞれの不揮発性メモリチップ(NVM10〜17)内のメモリアドレスBK[1:0]、ロウアドレスROWと、カラムアドレスCOLとの対応関係を示している。このアドレス対応付けは情報処理回路MANAGERが行う。
ロウアドレスROWの値が活性化されるワード線WL番号を示し、カラムアドレスCOLの値が活性化されるビット線BL番号を示す。つまり、ロウアドレスROWの値がiのとき、i番目のワード線WLiが活性化され、カラムアドレスCOLの値がjのとき、j番目のビット線BLjが活性化される。
図21の(b)は、図20にて説明した情報処理回路MANAGERがデータを不揮発性メモリへ書き込むために必要な書込み物理アドレステーブルNXPADTBLを更新する際に、新たな物理アドレスを生成する方法(図20のStep31)の一例について説明する。
図13へ示されているSSDコンフィグレーション情報SDCFG内のINTVLDCELLの値をmiとする。ビット線BLimaxはimax番目のビット線BLimaxであり、imaxはビット線番号の中で最大値を示す。
情報処理回路MANAGERが、現在の物理アドレスCPADを、チップアドレスCHIPAと、バンクアドレスBK、ロウアドレスROWと、カラムアドレスCOLへ変換する(Step42)。
次に、変換されたロウアドレスROWの値ciにて指定されたワード線番号がWLciで、カラムアドレスCOLの値cjにて指定されたビット線番号がBLcjの場合、ビット線番号BLcjが最大ビット線番号BLimaxとINTVLDCELL値miの差以上かどうかを判定する(Step43)。
ビット線番号BLcjが、この差以上であればStep44を実行し、ビット線番号BLcjが、この差より小さければStep46を実行する。
Step44では、新たな物理アドレスに対応するワード線番号WLnxとビット線番号BLnxを計算する。計算方法を以下に示す。
ワード線番号WLnx = ワード線番号WLci + INTVLDCELL値mi + 1
最初にデータを書き込んだビット線番号が0の場合:ビット線番号BLnx = 0
最初にデータを書き込んだビット線番号が1の場合:ビット線番号BLnx = 1
Step46では、新たな物理アドレスに対応するワード線番号WLnxとビット線番号BLnxを計算する。計算方法を以下に示す。
ワード線番号WLnx = ワード線番号WLci
ビット線番号BLnx = ビット線番号BLcj + INTVLDCELL値mi + 1
Step45では、ワード線番号WLnxとビット線番号BLnxから新たな物理アドレスCPADnxを決定する。先ず、ワード線番号WLnxは新たなロウアドレスROWnx値となり、ビット線番号BLnxは新たなカラムアドレスCOLnx値となる。
次に、情報処理回路MANAGERは、図21の(a)に示すアドレス対応付けに従い、チップアドレスCHIPAと、バンクアドレスBK、ロウアドレスROWnxと、カラムアドレスCOLnxから、新たな物理アドレスCPADnxを求める。
図30は、図13の(c)に示すSSDコンフィグレーション情報の中のTDCL情報によって設けられたDTMPAREAと、図15に示すアドレスマップ範囲ADMAPを利用し、物理アドレス領域PRNG1内への書込み方法について説明する。
先ず、図30の(a)について説明する。図13の(c)に示すSSDコンフィグレーション情報の中で、TDCL値が4であることから、ワード線WLi-3からWLiの4つ分のワード線に接続されているメモリセル領域と、ビット線BLj-3からBLjの4つ分のビット線に接続されているメモリセル領域のいずれかに含まれるメモリセル領域がDTMPAREAであり、点線にて囲まれたメモリセル領域が、このDTMPAREAを示す。
また、図13の(c)に示すSSDコンフィグレーション情報の中で、論理アドレス領域LRNG1のINTVLDCELL情報が1であることから、論理アドレス領域LRNG1に対応する物理アドレス領域PRNG1内のメモリセルに対して1個置きに書き込むことができる。ワード線WL0〜WLiとビット線BL0〜BLjとの交点がメモリセルを表す。
具体的には、物理アドレス領域PRNG1内のワード線WL0〜WLiの中の偶数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLjの中の偶数番目のビット線BLm(m=偶数)の交点は、データ書込みが行われる第1書込み許可メモリセルを示し、ワード線WL0〜WLiの中の偶数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLjの中の奇数番目のビット線BLm(m=奇数)との交点は、データ書込みが行われる第2書込み許可メモリセルを示し、ワード線WL0〜WLiの中の奇数番目のワード線WLn(n=奇数)と、ビット線BL0〜BLjの中の偶数番目のビット線BLm(m=偶数)との交点は、データ書込みが行われる第3書込み許可メモリセルを示し、ワード線WL0〜WLiの中の奇数番目のワード線WLn(n=奇数)と、ビット線BL0〜BLjの中の奇数番目のビット線BLm(m=奇数)との交点は、データ書込みが行われる第4書込み許可メモリセルを示す。
このように、論理アドレス領域LRNG1に対して物理アドレス領域PRNG1が4倍以上の大きさがある場合、第1書き込み許可メモリセルから第4書き込み許可メモリセルを設定することで、1つの論理アドレスに対して4つの物理アドレスを割り当てることが可能となる。
図30の(a)は、物理アドレス領域PRNG1内でDTMPAREA領域以外の全ての第1書込み許可メモリセルにデータが書き込まれた様子を示す。●はデータが書き込まれ、有効となっているメモリセルを示す。
次に、図30の(b)および(c)は、1つの論理アドレスに対して割り当てるメモリセルを第1書き込み許可メモリセルから第2書き込み許可メモリセルへ移行しながら、データを書き込む方法を示す。
先ず、図30の(b)を説明する。図30の(a)で示した状態から、メモリセルが、ワード線WL0とビット線BL0とで選択される第1書込み許可メモリセルW0BL0CELと、ワード線WL0とビット線BL2とで選択される第1書込み許可メモリセルW0BL2CELのそれぞれに対応した論理アドレスLADへの書き込みが発生した場合、第1書込み許可メモリセルW0BL0CELへはデータ書き込まず、DTMPAREA領域内のワード線WL0と、ビット線BLj-2とで選択される第2書込み許可メモリセルW0BLj-2CELへ書き込む。
同様に、第1書込み許可メモリセルW0BL2CELへはデータ書き込まず、DTMPAREA領域内の、ワード線WL0と、ビット線BLjとで選択される第2書込み許可メモリセルW0BLjCELへ書き込む。
図30の(c)は、図30の(b)での書き込み方法を繰り返し行った結果、データを書き込まれたメモリセルが、第1書込み許可メモリセルから第2書込み許可メモリセルへ移行した様子を示す。
次に、図31の(a)および(b)において、1つの論理アドレスに対して割り当てるメモリセルを第2書き込み許可メモリセルから第3書き込み許可メモリセルへ移行しながら、データを書き込む方法を示す。
先ず、図31の(a)を説明する。図30の(c)で示した状態から、ワード線WL0とビット線BL1とで選択される第2書込み許可メモリセルW0BL1CELとワード線WL0と、ビット線BL3とで選択される第2書込み許可メモリセルW0BL3CELのそれぞれに対応した論理アドレスLADへの書き込みが発生した場合、第2書込み許可メモリセルW0BL1CELへはデータを書き込まず、DTMPAREA領域内のワード線WLi-1と、ビット線BL0とで選択される第3書込み許可メモリセルWi-1BL0CELへ書き込む。同様に、第2書込み許可メモリセルW0BL3CELへはデータを書き込まず、DTMPAREA領域内のワード線WLi-1と、ビット線BL2とで選択される第3書込み許可メモリセルWi-1BL2CELへ書き込む。
図31の(b)は、図31の(a)での書き込み方法を繰り返し行った結果、データを書き込まれたメモリセルが、第2書込み許可メモリセルから第3書込み許可メモリセルへ移行した様子を示す。
次に、図32の(a)および(b)に、1つの論理アドレスに対して割り当てるメモリセルを第3書き込み許可メモリセルから第4書き込み許可メモリセルへ移行しながら、データを書き込む方法を示す。
先ず、図32の(a)を説明する。図31の(b)で示した状態から、ワード線WL1とビット線BL0とで選択される第3書込み許可メモリセルW1BL0CELと、ワード線WL1とビット線BL2とで選択される第3書込み許可メモリセルW1BL2CELのそれぞれに対応した論理アドレスLADへの書き込みが発生した場合、第3書込み許可メモリセルW1BL0CELへはデータを書き込まず、DTMPAREA領域内の、ワード線WL1と、ビット線BLj-2とで選択される第4書込み許可メモリセルWL1BLj-2CELへデータを書き込む。
同様に、前記第3書込み許可メモリセルWL1BL2CELへはデータを書き込まず、DTMPAREA領域内のワード線WL1とビット線BLjとで選択される第4書込み許可メモリセルWL1BLjCELへデータを書き込む。
図32の(b)は、図32の(a)による書き込み方法を繰り返し行った結果、データが書き込まれたメモリセルが第3書込み許可メモリセルから第4書込み許可メモリセルへ移行した様子を示す。勿論、1つの論理アドレスに対して割り当てるメモリセルを第4書き込み許可メモリセルから第1書き込み許可メモリセルへ移行しながら、データを書き込むこともできることは言うまでも無い。
以上説明したように、論理アドレス領域LRNG1に対応するメモリセルの数は、論理アドレス領域LRNG1の4倍以上となっているため、1つの論理アドレスに対して複数の物理アドレスへ割り当てることが可能となり、物理的に1つ以上離れたメモリセルへ書き込みながら、データを書き込む対象のメモリセルを第1書込み許可メモリセルから第2書込み許可メモリセルへ、第2書込み許可メモリセルから第3書込み許可メモリセルへ、第3書込み許可メモリセルから第4書込み許可メモリセルへ、第4書込み許可メモリセルから第1書込み許可メモリセルへ、順番に移行することで、データ書込時にメモリセルが受けるジュール熱の熱履歴の影響を小さくでき高信頼の情報処理装置を提供でき、さらに、1つの論理アドレスLADに対して複数の物理アドレスCPADを順番に割り当て、1つの論理アドレスLADに対する書換え回数の制限値を増大させ、長寿命の情報処理装置を提供できる。
図33は、図5に示す不揮発性メモリNVMEMのメモリバンクBK0〜BK3のそれぞれが、3次元で、すなわち立体的に4層に重なり合っている際の不揮発性メモリ装置内のデータが書き込まれたメモリセルの別の一例を示す。
特に限定しないが、メモリバンクBK0は第0層目へ形成され、メモリバンクBK1は第0層目の下層の第1層目へ形成され、メモリバンクBK2は第1層目の下層の第2層目へ形成され、メモリバンクBK3は第2層目の下層の第3層目へ形成される。ワード線WL0〜WLiとビット線BL0〜BLjとの交点がメモリセルを表し、●はデータを書き込まれたメモリセルを示している。図33は、SSDコンフィグレーション情報の中のライト方法選択情報WRTFLGが1の場合の書込み方法により、物理的に、千鳥格子状にメモリセルへ書き込まれている。
また、第0層目のメモリバンクBK0から、第3層目のメモリバンクBK3は物理アドレス領域PRNG2を形成する。
第0層のメモリバンクBK0と、第2層目のメモリバンクBK2には、ワード線WL0〜WLiの中の偶数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLjの中の偶数番目のビット線BLm(m=偶数)との交点であるメモリセルWLevenBLevenへデータが書き込まれており、第1層目のメモリバンクBK1と、第3層目のメモリバンクBK3には、ワード線WL0〜WLiの中の奇数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLjの中の奇数番目のビット線BLm(m=偶数)との交点であるメモリセルWLoddBLoddへデータが書き込まれている。
このように、不揮発性メモリNVMEMのメモリバンクBK0〜BK3のそれぞれを、3次元に立体的に重ね合わせることで不揮発性メモリNVMEMのチップ面積を小さくでき、低コストかつ大容量の不揮発性メモリを実現できる。
また、第0層目から第3層目の層間にて書き込むメモリセルが重ならないように、データを書き込むことができ、メモリセルが受けるジュール熱の熱履歴の影響を小さくでき高信頼で長寿命の情報処理装置を提供できる。
図34は、図20にて説明した情報処理回路MANAGERがデータを不揮発性メモリへ書き込むために必要な書込み物理アドレステーブルNXPADTBLを更新する際に、新たな物理アドレスを生成する方法(図20のStep31)の一例について説明する。
また、情報処理回路MANAGERは、図21の(a)に示される物理アドレスCPADと、不揮発性メモリの各種アドレス(チップアドレスCHIPA、メモリバンクアドレスBK、ロウアドレスROW、カラムアドレスCOL)との対応付けを行う。
さらに、図13の(c)に示すSSDコンフィグレーション情報の中のライト方法選択情報WRTFLGが1の場合の書込み方法にて、データを物理的に千鳥格子状にメモリセルへ書き込む。なお、ビット線BLimaxは、imax番目のビット線BLimaxであり、imaxはビット線番号の中で最大値を示す。
情報処理回路MANAGERが、現在の物理アドレスCPAD(Step81)を、チップアドレスCHIPAと、バンクアドレスBKcと、ロウアドレスROWと、カラムアドレスCOLへ変換する(Step82)。
次に、変換されたロウアドレスROWの値ciにて指定されたワード線番号WLciが偶数かどうかを判定する(Step83)。ワード線番号WLciが偶数であれば、Step84を実行し、奇数であればStep88を実行する。
Step84では、カラムアドレスCOLの値cjで指定されたビット線番号がBLcjの場合、ビット線番号BLcjが最大ビット線番号BLimaxと1との差以上かどうかを判定する。
ビット線番号BLcjが、この差以上であればStep85を実行し、ビット線番号BLcjが、この差より小さければStep87を実行する。
Step85および87では、新たな物理アドレスに対応するワード線番号WLnxとビット線番号BLnxを計算する。計算方法を以下に示す。
Step85では、ワード線番号WLnx = ワード線番号WLci+1、ビット線番号BLnx = 1となる。Step87では、ワード線番号WLnx = ワード線番号WLci、ビット線番号BLnx = BLcj+2となる。
Step88では、カラムアドレスCOLの値cjにて指定されたビット線番号がBLcjの場合、ビット線番号BLcjが最大ビット線番号BLimax以上かどうかを判定する。
ビット線番号BLcjが、この差以上であればStep89を実行し、ビット線番号BLcjが、この差より小さければStep90を実行する。
Step89および90では、新たな物理アドレスに対応するワード線番号WLnxとビット線番号BLnxを計算する。計算方法を以下に示す。
Step89では、ワード線番号WLnx = ワード線番号WLci+1、ビット線番号BLnx = 0となる。Step90では、ワード線番号WLnx = ワード線番号WLci、ビット線番号BLnx = BLcj+2となる。
Step86では、情報処理回路MANAGERがワード線番号WLnxとビット線番号BLnxから新たな物理アドレスCPADnxを決定する。先ず、ワード線番号WLnxは新たなロウアドレスROWnx値となり、ビット線番号BLnxは新たなカラムアドレスCOLnx値となり、次に、情報処理回路MANAGERは図21の(a)に示すアドレス対応付けに従い、チップアドレスCHIPAと、バンクアドレスBK、ロウアドレスROWnxと、カラムアドレスCOLnxから、新たな物理アドレスCPADnxを求める。
図35は、図13の(c)に示すSSDコンフィグレーション情報の中のライト方法選択情報WRTFLGと、TDCL情報によって設けられたDTMPAREAと、図15に示すアドレスマップ範囲ADMAPを利用し、物理アドレス領域PRNG2内への書込み方法について説明する。
先ず、図35の(a)について説明する。図13の(c)に示すSSDコンフィグレーション情報の中でTDCL値が4であることから、ワード線WLi-3からWLiの4つ分のワード線に接続されているメモリセル領域と、ビット線BLj-3からBLjの4つ分のビット線に接続されているメモリセル領域のいずれかに含まれるメモリセル領域がDTMPAREAであり、点線にて囲まれたメモリセル領域が、このDTMPAREAを示す。
図13の(c)に示すSSDコンフィグレーション情報の中のライト方法選択情報WRTFLGが1であることから、図27に示す書込み方法にて、データが千鳥格子状にメモリセルへ書き込まれている。
具体的には、物理アドレス領域PRNG2内のワード線WL0〜WLiの中の偶数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLjの中の偶数番目のビット線BLm(m=偶数)の交点のメモリセルWLevenBLevenCELへデータが書込まれ、ワード線WL0〜WLiの中の奇数番目のワード線WLn(n=奇数)と、ビット線BL0〜BLjの中の偶数番目のビット線BLm(m=偶数)との交点のメモリセルWLoddBLoddCELへデータが書込まれている。●はデータが書き込まれ、有効となっているメモリセルを示す。
また、物理アドレス領域Prng2内のワード線WL0〜WLiの中の偶数番目のワード線WLn(n=偶数)と、ビット線BL0〜BLjの中の奇数番目のビット線BLm(m=奇数)の交点のメモリセルWLevenBLoddCELと、ワード線WL0〜WLiの中の奇数番目のワード線WLn(n=奇数)と、ビット線BL0〜BLjの中の偶数番目のビット線BLm(m=偶数)との交点のメモリセルWloddBLevenCELへはデータが書込まれていない。
このように、1回の書込みで、実効的にデータが書き込まれるメモリセル数は、全体の半分となり、1つの論理アドレスに対して2つの物理アドレスを割り当てることが可能となる。
そこで、図35の(b)および(c)では、1つの論理アドレスに対して割り当てるメモリセルをメモリセルWLevenBLevenCELからメモリセルWLoddBLevenCELへ、メモリセルWLoddBLoddCELからメモリセルWLevenBLoddCELへ移行しながらデータを書き込む方法を示す。
以下に図35の(b)を説明する。図35の(a)で示した状態から、ワード線WL0とビット線BL0とで選択されるメモリセルWL0BL0CELおよびワード線WL1とビット線BL1とで選択されるメモリセルWL1BL1CELのそれぞれに対応した論理アドレスLADへの書き込みが発生した場合、メモリセルWL0BL0CELへはデータを書き込まず、DTMPAREA領域内にある奇数番目のワード線WLi-2と、ビット線BL0とで選択されるメモリセルWLi-2BL0CELへデータを書き込む。
また、メモリセルWL1BL1CELへはデータを書き込まず、DTMPAREA領域内にある偶数番目のワード線WLi-1と、ビット線BL1とで選択されるメモリセルWLi-1BL1CELへデータを書き込む。これによってデータを書込むメモリセルをメモリセルWLevenBLevenCELからメモリセルWLoddBLevenCELへ、メモリセルWLoddBLoddCELからメモリセルWLevenBLoddCELへ移行することができる。
図35の(b)は、図35の(a)での書き込み方法を繰り返し行った結果、データを書き込まれたメモリセルがメモリセルWLevenBLevenCELからメモリセルWLoddBLevenCELへ、メモリセルWLoddBLoddCELからメモリセルWLevenBLoddCELへ移行したことを示す。
以上説明したように、図13の(c)に示すSSDコンフィグレーション情報の中のライト方法選択情報WRTFLG値1で選択された書き込み方法を適用すると、1回の書込みで、実効的にデータが書き込まれるメモリセル数は、全体の半分となる。そのため、1つの論理アドレスLADに対して2つの物理アドレスPADを割り当てることが可能となり、千鳥格子状に離れたメモリセルへ書き込みながら、データを書き込む対象のメモリセルをメモリセルWLevenBLevenCELからメモリセルWLoddBLevenCELへ、メモリセルWLoddBLoddCELからメモリセルWLevenBLoddCELへ移行することで、データ書込時にメモリセルが受けるジュール熱の熱履歴の影響を小さくでき高信頼の情報処理装置を提供でき、さらに、1つの論理アドレスLADに対して複数の物理アドレスCPADを順番に割り当て、1つの論理アドレスLADに対する書換え回数の制限値を増大させ、長寿命の情報処理装置を提供できる。
[まとめ]
以上説明した実施の形態により得られる主な効果は以下の通りである。
第1に、コントローラによって、相変化メモリのメモリセルに対してN個置きに書き込むことができ、データ書込時にメモリセルが受けるジュール熱の熱履歴の影響を小さくできる、高信頼で長寿命の情報処理装置を提供できる。
第2に、コントローラによって、相変化メモリのメモリセルに対して複数の書込み許可をN個置きに書き込むことができ、データ書込時にメモリセルが受けるジュール熱の熱履歴の影響を小さくできる、高信頼で長寿命の情報処理装置を提供できる。
第3に、コントローラによって、相変化メモリのメモリセルに対して、書込みを禁止したメモリセルを物理的に連続した領域に配置することができ、データ書込時にメモリセルが受けるジュール熱の熱履歴の影響を小さくできる、高信頼で長寿命の情報処理装置を提供できる。
第4に、SDDコンフィグレーション情報SDCFGはプログラム可能なため、柔軟に、情報処理システム装置にあわせた高信頼で長寿命の情報処理装置を提供できる。
第5に、コントローラによって、データを圧縮し、メモリセルへ書込みすることで、実効的なメモリ容量を変えることなくデータ書込時にメモリセルが受けるジュール熱の熱履歴の影響を小さくできる相変化メモリを含む、高信頼で長寿命の情報処理装置を提供できる。
第6に、コントローラによって、ホストからの論理アドレスに対応する物理アドレスをシーケンシャルに割り当てることにより、相変化メモリのアドレス毎のデータ消去回数のバラツキを抑えることができ、高信頼で長寿命の情報処理装置を提供できる。
第7に、コントローラはライトリクエストのバッファへの格納と、書込み事前準備と、相変化メモリへの書き込み動作をパイプライン的に処理するため、高性能な情報処理装置を提供できる。