WO2012014505A1 - 不揮発メモリ及び記憶装置 - Google Patents

不揮発メモリ及び記憶装置 Download PDF

Info

Publication number
WO2012014505A1
WO2012014505A1 PCT/JP2011/052441 JP2011052441W WO2012014505A1 WO 2012014505 A1 WO2012014505 A1 WO 2012014505A1 JP 2011052441 W JP2011052441 W JP 2011052441W WO 2012014505 A1 WO2012014505 A1 WO 2012014505A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
page
memory
buffer memory
command
Prior art date
Application number
PCT/JP2011/052441
Other languages
English (en)
French (fr)
Inventor
水島 永雅
三浦 誓士
悟 半澤
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Publication of WO2012014505A1 publication Critical patent/WO2012014505A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0035Evaluating degradation, retention or wearout, e.g. by counting writing cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/72Array wherein the access device being a diode

Definitions

  • the present invention relates to a nonvolatile semiconductor memory, a storage device equipped with the nonvolatile semiconductor memory, and a control method thereof.
  • Non-volatile semiconductor memories such as NAND flash memory have a feature that the number of rewrites is finite (for example, 10,000 times), and a part of stored data may be destroyed (data error).
  • a storage device SSD
  • generally high reliability such as wear leveling that equalizes the number of page rewrites and data refresh that preserves a page in which a data error has occurred. Means implementation is required.
  • an error correction code is added in advance to data to be recorded on the storage medium, and after recording, the error of the data is detected and corrected using the code, and the data is corrected on the storage medium.
  • a method of rewriting the recorded data is well known.
  • the data selection circuit in response to the third command (Tgl_T2) for the second time, feeds back the second data (A) of the buffer memory to the buffer memory.
  • the buffer memory stores the fed back second data (A).
  • the sense amplifier In response to the third second command (Tgl_T1) designating the second page (W) of the memory cell array via the interface logic from the memory controller, the sense amplifier performs the second page (W).
  • the third data (A ⁇ B) is read from the memory cell array, and the data selection circuit calculates the second data (A) stored in the buffer memory and the read third data (A ⁇ B).
  • the first data (B) obtained by calculating the exclusive OR is input to the buffer memory, and the buffer memory stores the input first data (B).
  • FIG. 1 It is a figure which shows the structure of a semiconductor memory device (SSD). It is a figure which shows the basic structure of a phase change memory cell. It is a figure which shows the write-current characteristic of a phase change memory cell. It is a block diagram which shows the structure of a phase change memory chip. It is a figure which shows the interface timing of memory command Tgl_R. It is a figure which shows the interface timing of memory command Tgl_T1. It is a figure which shows the interface timing of memory command Tgl_T2. It is a figure which shows the process of memory command Tgl_R. It is a figure which shows the process of memory command Tgl_T1. It is a figure which shows the process of memory command Tgl_T2.
  • the SSD 1000 includes a SATA interface 1410, a memory controller 1100, a power management unit 1200, a backup power source 1210, and phase change memory chips 1301 to 1304.
  • the IRQ signal 1230 is a signal line for causing the CPU 1110 to generate an interrupt when the power management unit 1200 detects that the host power source 1420 is shut off.
  • the CPU 1110 finishes the necessary processing as soon as possible within the remaining time until the amount of electricity of the backup power supply 1210 is exhausted, and enters a standby state in which no problem occurs when the Vdd 1220 is disconnected.
  • Phase change memory Phase Change Memory
  • chalcogen substance a germanium / antimony / tellurium mixture GST.
  • GST material has a structural state as an amorphous state that exhibits a relatively high resistivity and a structural state as a crystalline state that exhibits a relatively low resistivity.
  • the reset current period 2130 is 50 ns (nanoseconds), and the set current period 2140 is 400 ns. Note that when reading data from the phase change memory cell, a current smaller than the set current range 2120 is supplied so as not to change the state of the phase change material 2030, and a voltage drop due to the resistance element is measured. The structural state of the low resistance state is determined, and it is determined whether the stored data is “0” or “1” corresponding to the determined state.
  • the memory interface 1130 includes input signals of a drive clock (clk) signal, a command latch enable (CLE) signal, and an address latch enable (ALE) signal, a ready / busy (R / B) output signal, an 8-bit I / O It is composed of O input / output signals.
  • clk drive clock
  • CLE command latch enable
  • ALE address latch enable
  • R / B ready / busy
  • I / O It is composed of O input / output signals.
  • Tgl_T1 (X) and Tgl_T2 (X) are executed in order to perform page superposition with the reference page as W and the target page as X.
  • Tgl_T2 (W) in process P1 data A ⁇ B of page W remains in the buffer memory, so that Tgl_R (W) can be omitted.
  • the data of page X is updated to A by Tgl_T2 (X).
  • the flag of page X becomes “1” (valid) by superimposing “0” (invalid) and “1” (valid).
  • Tgl_T1 (W) and Tgl_T2 (W) are executed in order to perform page superposition with the reference page as X and the target page as W.
  • Tgl_T2 (X) since the updated data A of page X remains in the buffer memory, Tgl_R (X) can be omitted.
  • the data W and A written by the host are stored in the pages W and X (swapped state), and the flag is “1” (valid) for both.
  • the power interruption during the execution of the Tgl_R and Tgl_T1 commands is a process of reading data into the buffer memory, there is no problem of data loss even if interrupted in the middle (data on the physical page to which the command is applied is executed as a command). If the interrupt is received by the IRQ signal 1230 accompanying the power shutdown, the CPU 1110 may immediately execute the sleep command and enter the standby state without depending on the backup power source 1210.
  • FIG. 9A is a flowchart of the interrupt processing program when the power is shut down and the CPU 1110 receives an interrupt with the IRQ signal 1230.
  • FIG. 9B is a flowchart of a program in which the CPU 1110 controls the page swap operation. The processing in FIG. 9A has higher priority than the processing in FIG. 9B. If the CPU 1110 receives an interrupt with the IRQ signal 1230, the processing in FIG. 9B is interrupted and the processing in FIG. 9A is executed. It operates to continue the process from the point of interruption.
  • step 9130 it is checked whether the power shutdown flag is ON (9140). If it is ON, a standby state is entered (9200), and the page swap operation is terminated with the pattern of case (i). In this case, it means that the power interruption occurred during the execution of the Tgl_T2 (W) command, and the Tgl_T2 (W) command was completed using the backup power supply.
  • step 9140 If it is OFF in step 9140, a Tgl_T1 (X) command is issued for process P2 (9150). Subsequently, a Tgl_T2 (X) command is issued (9160). If an interrupt is received by the IRQ signal 1230 between steps 9150 and 9160, the standby state is entered as shown in FIG. 9A, so that the page swap operation is suspended after completing the process P1.
  • a Tgl_T1 (W) command is issued for process P3 (9180). Subsequently, a Tgl_T2 (W) command is issued (9190). If an interrupt is received by the IRQ signal 1230 between steps 9180 and 9190, the standby state is entered as shown in FIG. 9A, so that the page swap operation is suspended after completing the process P2.
  • FIG. 10 shows the storage state of the page data and the pattern of the logical / physical address conversion table constructed on the RAM 1120 by the CPU 1110.
  • the total number of physical pages is four (W, X, Y, Z), and the host data to be stored is also for four sectors (A, B, C, D). Assume.
  • the CPU 1110 constructs a logical-physical address conversion table such as 10010 by reading each LA unit 6020 of all pages.
  • the CPU 1110 determines that page swap between page W and page X is necessary and performs a page swap operation, the logical physical address at which the storage pages of data A and data B such as 10020 are finally exchanged It becomes a conversion table.
  • the data A is data corresponding to the logical address that can be recognized by the logical address storing the data A as shown in FIG. 6, so in the logical-physical address conversion table shown in FIG. This is expressed as a logical address A.
  • the page W data is invalid as in 10100 or 10200 when the SSD 1000 is activated next time.
  • Some page data is stored. Specifically, if it is interrupted after the process P1 is completed, the state is 10100, and if it is interrupted after the process P2 is completed, the state is 10200.
  • the memory controller uses an ECC algorithm to check whether data stored in the page of the phase change memory chip has a data error. If there is an error in the data, the corrected data is displayed on the page. This is an operation of overwriting to preserve page data.
  • the correction bit address calculation unit 13030 searches for a solution of the error position polynomial, and calculates the solution (error bit address) and the number (maximum 4) (14030).
  • the input of the buffer memory 3330 is controlled by the data selection circuit 3340 and the output of the buffer memory 3330 is selected according to the command from the memory controller 1100.
  • FIG. 16 shows the correspondence between the described memory command and the input / output of the buffer memory 3330.
  • the control of the data selection circuit 3340 and the selection of the output destination (including no output) of the buffer memory 3330 are input from the memory controller 1100 to the interface logic 3400 by the interface logic 3400 or a separately provided control circuit (logic circuit or CPU). This is realized according to the command analysis result.

Landscapes

  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

 半導体メモリ装置は、メモリセルアレイ、センスアンプ、ドライバ、インタフェースロジックなどの既存のメモリ装置の構成に加え、メモリセルアレイのデータの読み出し/書き込み単位である1ページ分の容量の揮発性のバッファメモリを設け、センスアンプの出力、バッファメモリの出力、及び、センスアンプの出力とバッファメモリの出力との排他的論理和を選択的にバッファメモリへ入力するデータ選択回路を設ける。さらに、データ選択回路によるバッファメモリへ入力の選択に対応して、バッファメモリの出力は、データ選択回路を介した該バッファメモリ及びドライバの少なくとも一方の入力として、または、データ選択回路を介した該バッファメモリ及びドライバのいずれにも入力しないように制御する制御回路を有する。

Description

不揮発メモリ及び記憶装置 参照による取り込み
 本出願は、平成22年(2010年)7月27日に出願された日本特許出願特願2010-168312の優先権を主張し、その内容を参照することにより、本出願に取り込む。
 本発明は不揮発性半導体メモリ、不揮発性半導体メモリを搭載した記憶装置、及びその制御方法に関する。
 NAND型フラッシュメモリをはじめとする高集積・大容量の不揮発性半導体メモリは、書き換え回数が有限(例えば、10000回)で、記憶データの一部の破壊(データ誤り)も起こりうるという特徴を持つ。そのような半導体メモリを利用して記憶装置(SSD)を構成する場合には、一般に、ページ書き換え回数を平準化するウェアレベリングや、データ誤りを起こしたページを保全するデータリフレッシュなど、高信頼化手段の実装が必要である。
 ウェアレベリング方法としては、特許文献1にその一つの手段が開示されている。すなわち、ライト回数が多く、今後ライトされる可能性が高いと思われる論理ブロックに、消去回数が多い物理ブロックが割り当てられていたときには、ライト回数の少ない論理ブロックに割り当てられている消去回数の少ない物理ブロックを探し、ライト回数が多い論理ブロックには消去回数が少ない物理ブロックを割り当て、ライト回数が少ない論理ブロックには消去回数が多い物理ブロックを割り当てるようにマッピングを変更する。これは、2つの物理ブロックに格納された論理ブロックデータを交換するスワップ動作を行うことに相当する。
 2つの記憶媒体に記録されたデータ同士を交換するスワップ方法としては、古くから計算機技術として排他的論理和命令を用いた方法が知られている。例えば、特許文献2の図4のように、$1=$1 exor ($1 exor $2)=$2、$2=$2 exor ($1 exor $2)=$1という計算機命令により、$1と$2のデータを交換する。
 一方、データリフレッシュ方法については、記憶媒体に記録しようとするデータにあらかじめ誤り訂正コードを付加しておき、記録後にはそれを利用して当該データの誤りを検出・訂正し、記憶媒体に訂正された記録データを書きなおすという方法がよく知られている。
 通常、不揮発性半導体メモリでのデータ誤り率はデータ全体の0.1~1.0%程度であり、訂正すべきは記録データのごく一部である。不揮発性半導体メモリのデータの一部を書き換える技術としては、特許文献3に、ページデータの一部の書き換えを行って異なるページに書き込む不揮発性半導体メモリ(特に、NAND型フラッシュメモリ)が開示されている。
 不揮発性半導体メモリのデータ誤り訂正として適用される誤り訂正技術は、巡回符号を応用したものが一般的であり、リードソロモン符号やBCH符号がよく知られている。いずれもガロア体(四則演算が定義され閉じている有限集合)での数値計算を利用する。ガロア体における加法は排他的論理和である。そのため、データ誤り訂正を行う際には、誤りを含む記録データと、誤りパタンデータとの排他的論理和を計算することにより、訂正された記録データを作成する。
米国特許第5737742号公報 米国特許第5812845号公報 米国特許第6661706号公報
 特許文献3に開示されるような不揮発性メモリセルアレイとバッファメモリとを備えた半導体メモリを利用して記憶装置を構成する場合、ウェアレベリングやデータリフレッシュの機能を実装する上で以下のような課題がある。
 まず、ウェアレベリングのためのページスワップでは、交換する2つのページのデータを読み出し、一時的に保持しておく都合上、少なくとも2つのメモリ内部バッファが必要である。さらに、保持したデータを損失してはならないので、ライトコマンド2回分の電源保護が必要である。
 また、データリフレッシュのための誤り訂正では、訂正データを一時的に保持しておくために、少なくとも1つのメモリ外部バッファが必要である。さらに、誤りを含むアドレス及びその訂正データを、訂正箇所の数の分メモリへ転送することが必要である。
 開示される半導体メモリ装置は、ウェアレベリングにおけるページスワップやデータリフレッシュを低コスト化し、不揮発性半導体メモリ外との転送データ量を少なくするために、1ページ分のバッファメモリと小規模の回路を設ける。
 具体的には、半導体メモリ装置は、不揮発性のメモリセルアレイ、メモリセルアレイからデータを読み出すセンスアンプ、メモリセルアレイへデータを書き込むドライバ、メモリコントローラと接続するインタフェースロジックを有する。さらに、メモリセルアレイのデータの読み出し/書き込み単位である1ページ分の容量の揮発性のバッファメモリを設け、センスアンプの出力、バッファメモリの出力、及び、センスアンプの出力とバッファメモリの出力との排他的論理和を選択的にバッファメモリへ入力するデータ選択回路、並びに、データ選択回路によるバッファメモリへ入力の選択に対応して、バッファメモリの出力は、データ選択回路を介した該バッファメモリ及びドライバの少なくとも一方の入力として、または、データ選択回路を介した該バッファメモリ及びドライバのいずれにも入力しないように制御する制御回路を有する。
 他の態様として、上記の半導体メモリ装置は、メモリコントローラからのインタフェースロジックを介した、メモリセルアレイの第1のページ(X)を指定した第1のコマンド(Tgl_R)に応答して、センスアンプは第1のページ(X)の第1のデータ(B)をメモリセルアレイから読み出し、データ選択回路は、読み出された第1のデータ(B)をバッファメモリに入力し、バッファメモリは第1のデータ(B)を格納する。そして、メモリコントローラからのインタフェースロジックを介した、メモリセルアレイの第2のページ(W)を指定した第2のコマンド(Tgl_T1)に応答して、センスアンプは第2のページ(W)の第2のデータ(A)をメモリセルアレイから読み出し、データ選択回路は、バッファメモリに格納された第1のデータ(B)と読み出された第2のデータ(A)との排他的論理和を計算した第3のデータ(A^B)をバッファメモリに入力し、バッファメモリは入力した第3のデータ(A^B)を格納する。さらに、メモリコントローラからのインタフェースロジックを介した、メモリセルアレイの第2のページ(W)を指定した第3のコマンド(Tgl_T2)に応答して、制御回路は、バッファメモリの出力をドライバに入力し、バッファメモリに格納した第3のデータ(A^B)を、メモリセルアレイの第2のページ(W)に書き込むように制御する。
 さらに他の態様として、上記の半導体メモリ装置は、第3のコマンド(Tgl_T2)に応答して、データ選択回路は、バッファメモリの第3のデータ(A^B)をバッファメモリにフィードバック入力し、バッファメモリはフィードバックされた第3のデータ(A^B)を格納する。そして、メモリコントローラからのインタフェースロジックを介した、メモリセルアレイの第1のページ(X)を指定した2回目の第2のコマンド(Tgl_T1)に応答して、センスアンプは第1のページ(X)の第1のデータ(B)をメモリセルアレイから読み出し、データ選択回路は、バッファメモリに格納された第3のデータ(A^B)と読み出された第1のデータ(B)との排他的論理和を計算した第2のデータ(A)をバッファメモリに入力し、バッファメモリは入力した第2のデータ(A)を格納する。さらに、メモリコントローラからのインタフェースロジックを介した、メモリセルアレイの第1のページ(X)を指定した2回目の第3のコマンド(Tgl_T2)に応答して、制御回路は、バッファメモリの出力をドライバに入力し、バッファメモリに格納した第2のデータ(A)を、メモリセルアレイの第1のページ(X)に書き込むように制御する。
 さらに他の態様として、上記の半導体メモリ装置は、2回目の第3のコマンド(Tgl_T2)に応答して、データ選択回路は、バッファメモリの第2のデータ(A)をバッファメモリにフィードバック入力し、バッファメモリはフィードバックされた第2のデータ(A)を格納する。そして、メモリコントローラからのインタフェースロジックを介した、メモリセルアレイの第2のページ(W)を指定した3回目の第2のコマンド(Tgl_T1)に応答して、センスアンプは第2のページ(W)の第3のデータ(A^B)をメモリセルアレイから読み出し、データ選択回路は、バッファメモリに格納された第2のデータ(A)と読み出された第3のデータ(A^B)との排他的論理和を計算した第1のデータ(B)をバッファメモリに入力し、バッファメモリは入力した第1のデータ(B)を格納する。さらに、メモリコントローラからのインタフェースロジックを介した、メモリセルアレイの第2のページ(W)を指定した3回目の第3のコマンド(Tgl_T2)に応答して、制御回路は、バッファメモリの出力をドライバに入力し、バッファメモリに格納した第1のデータ(B)を、メモリセルアレイの第2のページ(W)に書き込むように制御する。
 さらに他の態様として、上記の半導体メモリ装置は、メモリコントローラからのインタフェースロジックを介した、メモリセルアレイの第4のページを指定した第4のコマンドであるリードコマンドに応答して、センスアンプは第4のページの第4のデータをメモリセルアレイから読み出し、データ選択回路は、読み出された第4のデータをバッファメモリに入力し、バッファメモリは第4のデータを格納する。そして、インタフェースロジックは、メモリコントローラからの、第4のデータのビット値を“1”とするビットアドレスを指定した第5のコマンド(Tgl_S)に応答して、指定されたビットアドレスに対応したビット値を“1”とし、指定されないビットアドレスに対応したビット値を“0”とする第5のデータを生成するトグルパタン生成器を含む。さらに、データ選択回路は、バッファメモリに格納された第4のデータと生成された第5のデータとの排他的論理和を計算した第6のデータをバッファメモリに入力し、バッファメモリは入力した第6のデータを格納する。さらに、メモリコントローラからの第6のコマンド(Tgl_T2)に応答して、制御回路は、バッファメモリの出力をドライバに入力し、バッファメモリに格納した第6のデータを、メモリセルアレイの第4のページに書き込むように制御する。
 さらに、開示される記憶装置は、上記の半導体メモリと、メモリコマンドを実行するメモリコントローラと、バックアップ電源とを備えており、メモリコントローラは、第1のコマンド(Tgl_R)(トグル参照コマンド)、または第2のコマンド(Tgl_T1)(トグル対象第1コマンド)の実行中に供給電源が遮断された場合には、その実行を中断し、第3のコマンド(Tgl_T2)(トグル対象第2コマンド)の実行中に供給電源が遮断された場合には、その実行を完了するまでバックアップ電源を利用する。
 さらに他の態様として、上記の記憶装置は、メモリコントローラがライトコマンドで書き込むデータのFlag部に、非ゼロ値を設定するように構成されている。メモリコントローラは、リードコマンドで半導体メモリのページのデータを読み出し、Flag部が非ゼロ値であれば有効ページ、ゼロ値であれば無効ページと判定する。メモリコントローラは、有効ページXを指定して、第1のコマンド(Tgl_R)(トグル参照コマンド)を実行し、無効ページWを指定して、第2のコマンド(Tgl_T1)(トグル対象第1コマンド)と第3のコマンド(Tgl_T2)(トグル対象第2コマンド)を実行し、無効ページWを有効ページに変更する。
 さらに他の態様として、上記の記憶装置は、メモリコントローラがライトコマンドで書き込むデータのLA部に、データの論理アドレスを設定するように構成されている。メモリコントローラは、有効ページと判定されたページのLA部に書かれた論理アドレスを調べ、論理アドレスと有効ページの物理アドレスとの対応関係をテーブルに登録し、テーブルにおいて対応する物理アドレスを持たない論理アドレスを検出する。また、無効ページと判定されたページについて、LA部の内容と、検出した未対応論理アドレスとの排他的論理和を計算して、スワップパートナの論理アドレスを算出し、テーブルから、スワップパートナの論理アドレスに対応する物理アドレスを取得し、上記第1のコマンド(Tgl_R)(トグル参照コマンド)の実行先である有効ページXをそれによって選択する。
 本発明によれば、不揮発性半導体メモリを低コスト化し、不揮発性半導体メモリ外との転送データ量を少なくすることができる。
半導体記憶装置(SSD)の構成を示す図である。 相変化メモリセルの基本構造を示す図である。 相変化メモリセルの書き込み電流特性を示す図である。 相変化メモリチップの構造を示すブロック図である。 メモリコマンドTgl_Rのインタフェースタイミングを示す図である。 メモリコマンドTgl_T1のインタフェースタイミングを示す図である。 メモリコマンドTgl_T2のインタフェースタイミングを示す図である。 メモリコマンドTgl_Rの処理を示す図である。 メモリコマンドTgl_T1の処理を示す図である。 メモリコマンドTgl_T2の処理を示す図である。 メモリチップのページ割当仕様を示す図である。 ページスワップ動作におけるページ状態遷移を示す図である。 ページスワップ動作における電源バックアップパタンを示すタイミング図である。 電源遮断時の割り込み処理のフローチャートである。 ページスワップ動作制御のフローチャートである。 ページスワップ動作における論理物理アドレス変換テーブルの状態遷移を示す図である。 ページスワップ動作中の電源遮断後に実行するブートアップ処理のフローチャートである。 本実施形態のページスワップ動作の効果を説明する図である。 本実施形態のページスワップ動作の効果を説明する図である。 ページ誤り訂正処理を示すブロック図である。 ページ誤り訂正動作処理のフローチャートである。 本実施形態のページ誤り訂正動作の効果を説明する図である。 本実施形態のページ誤り訂正動作の効果を説明する図である。 メモリコマンドとバッファメモリの入出力との対応関係を示す図である。
 本実施形態の半導体メモリ装置は、ウェアレベリングにおけるページスワップやデータリフレッシュを低コスト化し、不揮発性半導体メモリ外との転送データ量を少なくするために、1ページ分のバッファメモリと小規模の回路を設ける。
 具体的には、半導体メモリ装置は、不揮発性のメモリセルアレイ、メモリセルアレイからデータを読み出すセンスアンプ、メモリセルアレイへデータを書き込むドライバ、メモリコントローラと接続するインタフェースロジックを有する。さらに、メモリセルアレイのデータの読み出し/書き込み単位である1ページ分の容量の揮発性のバッファメモリを設け、センスアンプの出力、バッファメモリの出力、及び、センスアンプの出力とバッファメモリの出力との排他的論理和を選択的にバッファメモリへ入力するデータ選択回路を設ける。さらに、データ選択回路によるバッファメモリへ入力の選択に対応して、バッファメモリの出力は、データ選択回路を介した該バッファメモリ及びドライバの少なくとも一方の入力として、または、データ選択回路を介した該バッファメモリ及びドライバのいずれにも入力しないように制御する制御回路を有する。
 図1を参照して、半導体記憶装置(以下、SSD:Solid State Drive)1000の構成について説明する。ここでは、不揮発メモリとして、相変化メモリを例に説明する。
 SSD1000は、SATAインタフェース1410、メモリコントローラ1100、電源管理部1200、バックアップ電源1210、相変化メモリチップ1301~1304で構成される。
 SATAインタフェース1410は外部のホスト1400と接続するためのインタフェースであり、ホスト1400からのリード/ライトコマンドに応答して、それぞれSSD1000に格納したデータをホスト1400に送信し、または、ホスト1400からデータを受信して格納する。ホスト1400は、リード/ライトを要求するデータの格納位置を論理アドレスによって指定する。この論理アドレスは相変化メモリチップ1301~1304のアクセスに用いられる物理アドレスとは異なる論理的なアドレスである。SATAインタフェース1410およびコマンドやデータの送受信のプロトコルは、標準的なハードディスク装置と互換性のあるシリアルATA(AT Attachment)仕様に準拠する。
 メモリコントローラ1100は、SATAインタフェース1410、電源管理部1200、相変化メモリチップ1301~1304と接続され、SATAインタフェース1410と相変化メモリチップ1301~1304を制御するマイクロプロセッサである。メモリコントローラ1100は、CPU(Central Processing Unit)1110とRAM(Random Access Memory)1120を含み、メモリコントローラ1100の制御は、CPU1110による組み込まれたプログラムの実行によって実現される。例えば、ホスト1400からのリード/ライトコマンドの解釈を実行する。また、メモリインタフェース1130を介して、相変化メモリチップ1301~1304へのアクセス、ホスト1400と相変化メモリチップ1301~1304との間のデータ転送を実行する。
 また、メモリコントローラ1100は、ホスト1400からのリード/ライトコマンドにおいて指定された論理アドレスがどのメモリチップ内のどのページ(メモリチップのアクセス単位)に対応するかを論理物理アドレス変換テーブルによって管理する。メモリコントローラ1100は、SSD1000の電源投入時にRAM1120の一部に論理物理アドレス変換テーブルを作成する。RAM1120は、CPU1110によるプログラム動作においてワークメモリとしても使われ、相変化メモリチップ1301~1304とやりとりする転送データを一時的に保持するためにも使われる。なお、メモリコントローラ1100は、各相変化メモリチップ1301~1304に格納されたデータを保全するための誤り訂正コードの生成や検査を実行するための専用ハードウェアを含む。
 電源管理部1200は、メモリコントローラ1100や相変化メモリチップ1301~1304に電源Vdd1220を供給する電気回路である。通常では電源管理部1200は、ホスト1400からSATAインタフェース1410を通じて供給されるホスト電源1420からVdd1220を生成するが、何らかの事故によりホスト電源1420が遮断されたときには、電源管理部1200はホスト電源1420の遮断を検出し、データ損失などの障害が起きないようにVdd1220の生成源をバックアップ電源1210へとシームレスに切り替える。
 バックアップ電源1210は、例えば大容量キャパシタである。その電気容量は、データ損失などの障害が起きないように、しばらくVdd1220の供給を維持すべき時間をカバーするように決定される。よって、Vdd1220の供給を維持すべき時間が短いほど、キャパシタ容量を小さくできるためSSD1000の価格を低減できる。
 IRQ信号1230は、電源管理部1200がホスト電源1420の遮断を検出したときに、CPU1110に割り込みを発生させるための信号線である。CPU1110はその割り込みを受けると、バックアップ電源1210の電気量が尽きるまでの残された時間内に、できるだけ早く必要な処理を終わらせ、いつVdd1220が切断しても問題のないスタンバイ状態に入る。
 図2A及び図2Bを参照して、相変化メモリチップ1301~1304を構成する相変化メモリの基本構造と書き込み電流特性について説明する。
 高集積で大容量を実現することができる不揮発性半導体メモリとしては、現在はNANDフラッシュメモリが代表的であるが、近年、カルコゲン混合物を利用した相変化メモリ(Phase Change Memory)も注目されている。相変化メモリは、製造過程が比較的簡単で安価に大容量化できると期待されているためである。相変化メモリは、異なる電気特性を示す構造状態の間を電気的に遷移可能な物質を利用する。例えば、ゲルマニウム・アンチモン・テルル混合物GSTであるカルコゲン物質(GST物質)である。GST物質は、比較的に高い抵抗率を示すアモルファス状態としての構造状態と、比較的に低い抵抗率を示す結晶状態としての構造状態を有する。GST物質の結晶状態またはアモルファス状態の割合は、電流によるジュール熱で加熱することによって変化する。GST物質は、形成されるアモルファス状態量によって可変な電気抵抗を持つ(アモルファス状態量の割合が大きいほど、高抵抗状態になる。)。すなわち、相変化メモリは電気的可変抵抗によるメモリ素子である。
 図2Aに、1ビットのデータを記憶する相変化メモリセルの抵抗素子の基本構造を簡略に示す。抵抗素子は、上部電極2010、相変化物質2030、ヒータプラグ2040、下部電極2020を積層することで構成される。ヒータプラグ2040は、TiNなどの導電性物質で形成される。相変化物質2030の構造状態は、上部電極2010から下部電極2020へ供給される電流パルスの大きさや時間幅によって変化する。アモルファス状態量2031を多くした高抵抗状態を相変化メモリにデータ“0”を書き込むことに対応させると、アモルファス状態量2031を少なくした低抵抗状態を相変化メモリにデータ“1”を書き込むことに対応させることができる。
 図2Bに、相変化メモリセルへの書き込み電流特性を示す。図2Bの書き込み電流特性は、相変化メモリセルにデータを書き込むときに上部電極2010から下部電極2020へ供給する電流パルスの大きさや時間幅を示す。アモルファス状態量2031を多くするときは、リセット電流範囲2110の大きさの電流をリセット電流期間2130だけ供給する。アモルファス状態量2031を少なくするときは、セット電流範囲2120の大きさの電流をセット電流期間2140だけ供給する。リセット電流範囲2110の電流はセット電流範囲2120の電流より大きい。また、リセット電流期間2130はセット電流期間2140より短い。例えば、リセット電流期間2130は50ns(ナノ秒)、セット電流期間2140は400nsである。なお、相変化メモリセルからデータを読むときは、相変化物質2030の状態を変化させないように、セット電流範囲2120より小さい電流を供給し、抵抗素子による電圧降下を計測して、高抵抗状態または低抵抗状態の構造状態を判別し、判別した状態に対応して格納データが“0”または“1”であるかを判別する。
 図3を参照して、図2の相変化メモリをアレイ(セルアレイ)とする相変化メモリチップ1301~1304の構造について説明する。
 相変化メモリチップ1301~1304はいずれも、セルアレイ3130、アドレスデコーダ3110、ビットライン選択回路3120、ドライバ3310、センスアンプ3320、バッファメモリ3330、データ選択回路3340、インタフェースロジック3400を含み、電源Vdd1220の電力と、メモリインタフェース1130の電気信号によって動作する。
 セルアレイ3130は複数のメモリセルで構成される。複数のメモリセルは、複数のワードライン及び複数のビットラインに接続されている。各メモリセルはスイッチングダイオードと、図2Aのように構成された可変抵抗素子で構成される。そして、一定数(例えば4184個)のメモリセルを集めたものによって、メモリチップのリード/ライトのアクセス単位(ページ)を構成する。つまり、1ページは4184ビットのデータを格納する。メモリチップには、複数ページのメモリセルが構成される。
 アドレスデコーダ3110は、メモリコントローラ1100から入力された物理ページアドレスをデコードする。デコードされたアドレスは、行アドレスを含む。アドレスデコーダ3110は、行アドレスによって複数のワードラインの1つを選択する。アドレスデコーダ3110は順次列アドレスを生成し、生成した列アドレスによって複数のビットラインの1つを選択する。アドレスデコーダ3110は、ビットライン選択回路3120に、生成した列アドレスを選択するカラム選択信号3220を提供する。
 セルアレイ3130は、たとえば、アクセス単位であるページを1ワードとして、1ページに含まれるたとえば4184個のメモリセルに対応するようにビットラインを設ける。一般には、1ページ当りのビット数をBとして、B=m×n(m:ワードライン数、n:ビットライン数)とすればよい。
 ビットライン選択回路3120は、複数のビットラインを通じてセルアレイ3130と接続され、データライン3230を通じてドライバ3310やセンスアンプ3320と接続される。ビットライン選択回路3120は、カラム選択信号3220に応答してデータライン3230と選択されたビットラインを電気的に接続する。
 ドライバ3310は、メモリセルへのデータの書き込み回路であり、図2Bのような電流パルスによって、“0”または“1”のデータを選択されたメモリセルに書き込むための電流供給回路である。ドライバ3310は、シフトレジスタ構造のバッファメモリ3330に保持された1ページ分の書き込みデータに応じて、1ビットずつ書き込み電流を出力する。出力された書き込み電流は、データライン3230及びビットライン選択回路3120を通じて順々に選択されるビットラインに伝わり、1ページ分のメモリセルの抵抗素子の構造状態を変化させる。
 センスアンプ3320は、メモリセルからのデータの読み出し回路であり、ビットライン選択回路3120によって選択されたビットラインを通じてメモリセルの抵抗素子に、前述したように、相変化物質2030の構造状態を変化させないような小さな電流を伝え、その電圧降下を計測することによってメモリセルに記録されたデータを感知する、データリード用回路である。センシングされたメモリセルのデータはシフトレジスタ構造のバッファメモリ3330に1ビットずつ保持される。
 バッファメモリ3330は、メモリコントローラ1100からインタフェースロジック3400経由で提供されたライトデータを1ビットずつドライバ3310に提供する。インタフェースロジック3400は、メモリコントローラ1100からたとえば8ビット並列入力されるライトデータを直列データとしてバッファメモリ3330に出力するための並列/直列変換回路を含んでいる。
 また、データリード用のセンスアンプ3320によって1ビットずつ読み出されたデータをインタフェースロジック3400経由でメモリコントローラ1100に並列データとして提供する。インタフェースロジック3400は、リードデータの変換のための直列/並列変換回路を含んでいる。
 1ページのサイズが4184ビットであるとき、図3に示すNは4183である。バッファメモリ3330は、ビットレジスタを4184個直列に接続したシフトレジスタで構成され、ページデータの先頭ビットから順に入力される。
 インタフェースロジック3400は、メモリインタフェース1130を通じてメモリコントローラ1100からのメモリコマンドを検出して、ドライバ3310またはセンスアンプ3320を選択する。例えば、ライトコマンドが検出されるとドライバ3310を活性化させ、リードコマンドが検出されるとセンスアンプ3320を活性化させる。また、インタフェースロジック3400は、メモリコントローラ1100からのライトデータをバッファメモリ3330に入力したり、リードデータをバッファメモリ3330からメモリコントローラ1100へ出力したりする。
 データ選択回路3340は、バッファメモリ3330に供給するデータを選択する論理回路である。センスアンプ3320からのページデータ、バッファメモリ3330からのフィードバックデータ、両者の排他的論理和データを供給できる。さらに、バッファメモリ3330からのフィードバックデータとインタフェースロジック3400からのデータの排他的論理和データを作り、バッファメモリ3330に供給することもできる。したがって、バッファメモリ3330とデータ選択回路3340を合わせた回路は、線形フィードバックシフトレジスタ(LFSR:Linear Feedback Shift Register)の一種である。
 以下、SSD1000のページスワップ動作について述べる。
 相変化メモリチップ1301~1304は、従来のメモリチップがサポートするリード/ライトコマンドをサポートするが、それらに加えて新しい3つのメモリコマンド:トグル参照コマンド、トグル対象第1コマンド、及びトグル対象第2コマンドをサポートする。以下、これらのコマンドを順にTgl_R、Tgl_T1、Tgl_T2と略す。
 これらのコマンドは、主に、相変化メモリチップ1301~1304に含まれるメモリセルの書換回数を平準化するためのページスワップを実現するために用いられる。例えば、書き換え回数が1000回のページW(物理ページアドレスW)と2000回のページX(物理ページアドレスX)があるとする。ページXの格納データBの論理アドレス(ページXに対応している論理アドレス)は、ページWの格納データAの論理アドレス(ページWに対応している論理アドレス)よりも、ホスト1400が書き換える頻度が2倍である。そこで、ページスワップにより、メモリセルの書換回数を平準化する。具体的には、ページXの格納データBをページWへ、ページWの格納データAをページXへと交換する。それ以後、単調増加変数α(>0)として、時間経過に従って、ページWとページXの書き換え回数はそれぞれ(1000+2α)回、(2000+α)回のように変化すると予測される。すなわち、両者の書き換え回数差(1000-α)は単調減少する。この手法をメモリセル全体にわたって適用すれば、各物理ページの書換回数を平準化できる。
 これらのコマンドを順に実行すると、メモリチップ内の任意の2つの物理ページ(以下、対象ページ、参照ページと呼ぶ)のデータ同士を排他的論理和(Exclusive-OR)したものを、その1つのページ(対象ページ)へ上書きする機能を実行することができる。例えば、対象ページのデータをA、参照ページのデータをBとすると、この機能を実行した結果、対象ページのデータはA^Bに変化する。なお、「^」は排他的論理和を示す。
 図4A~図4Cは、それぞれ3つのメモリコマンドTgl_R、Tgl_T1、Tgl_T2のインタフェースタイミング(メモリインタフェース1130における各信号のタイミングチャート)を示したものである。
 メモリインタフェース1130は、駆動クロック(clk)信号、コマンドラッチイネーブル(CLE)信号、アドレスラッチイネーブル(ALE)信号の各入力信号と、レディ/ビジー(R/B)出力信号と、8ビットのI/O入出力信号で構成される。
 各コマンドのコードは、CLEがアサート(H)のときにI/O信号としてclk信号同期で入力される。コマンドコード入力後、Tgl_R(図4A)、Tgl_T1(図4B)コマンドについては、それぞれ参照ページ、対象ページを指示するための32ビットアドレス(A3、A2、A1、A0)が、ALEがアサート(H)のときにI/O信号からclk信号同期で4回に分けて入力される。その後、メモリチップは内部処理に入り、それが終わるまでの間、R/B信号をネゲート(L)し、次のメモリコマンドが受けられないことを通知する。R/B信号のネゲート時間(ビジー時間)の長さについては後述する。
 図5A~図5Cは、それぞれ3つのメモリコマンドTgl_R、Tgl_T1、Tgl_T2によって実行されるメモリチップ内部処理の内容を示したものである。
 Tgl_Rコマンドでは、センスアンプ3320を通じて参照ページに対応するメモリセルから読み出された4184ビット分のデータが、経路5010を通してシフトレジスタ構造のバッファメモリ3330に1ビットずつ入力される。この間R/B信号がネゲートされるが、この時間はメモリリードコマンドの場合と同じで、例えば1ビット当たり80nsとすれば、80ns×4184=約335μsである。
 Tgl_T1コマンドでは、センスアンプ3320を通じて対象ページに対応するメモリセルから読み出された4184ビット分のデータが、経路5110を通して2入力排他的論理和ゲート5130に入力され、一方、それまでにバッファメモリ3330に格納されていた4184ビット分のデータが、経路5120を通してフィードバックして同じく2入力排他的論理和ゲート5130に入力され、その演算出力がシフトレジスタ構造のバッファメモリ3330に1ビットずつ入力される。この間R/B信号がネゲートされるが、この時間もメモリリードコマンドと同じで、例えば80ns×4184=約335μsである。参照ページを指定したTgl_Rコマンドと対象ページを指定したTgl_T1コマンドを、メモリコントローラ1100が続けて発行した場合、バッファメモリ3330の内容は結果的に参照ページと対象ページの両データの排他的論理和となる。
 Tgl_T2コマンドでは、バッファメモリ3330に格納されていた4184ビット分のデータが経路5210を通してドライバに1ビットずつ提供され、対象ページに対応するメモリセルにデータが書き込まれる。このとき、データは経路5220を通してフィードバックして再びシフトレジスタ構造のバッファメモリ3330に入力され、元の状態(Tgl_T2コマンド実行直前の状態)に戻る。この間R/B信号がネゲートされるが、この時間はメモリライトコマンドの場合と同じで、例えば、最大で400ns×4184=約1.67ms(全ビットに“1”を書く場合に相当)である。メモリコントローラ1100が、参照ページを指定したTgl_Rコマンドと対象ページを指定したTgl_T1コマンドと対象ページを指定したTgl_T2コマンドを続けて発行した場合、参照ページと対象ページの両データの排他的論理和が対象ページに書き込まれ、バッファメモリ3330の内容も、参照ページと対象ページのデータの排他的論理和となる。
 図6は、SSD1000のメモリコントローラ1100が、相変化メモリチップ1301~1304の各ページの4184の構成ビットに割り当てる役割の仕様(ページフォーマット)を示した図である。
 ページ6000は、ホスト1400がSSD1000に対して読み書きする1セクタ(=512バイト=4096ビット)のデータを格納するためのData部6010を含む。
 また、ページ6000は、そのセクタの論理アドレス32ビットを格納するためのLA部6020を含む。ホストデータがどのページ(論理アドレスで指定されるページ)に格納されていても、この論理アドレスを利用すれば、CPU1110は上述の論理物理アドレス変換テーブルを構築することにより、ホストデータの格納場所(指定された論理アドレスに対応する物理アドレスのページ)を特定することができる。メモリコントローラ1100は、メモリチップへのライトコマンドを実行するときに、ホスト1400がライト先に指定した論理アドレスをLA部6020に設定する。
 また、ページ6000は、Data部6010のデータが有効なホストデータであることを示すためのFlag部6030を含む。Flag部6030の値が“1”のときは有効データ(ホストが書いたデータ内容そのもの)であり、“0”のときは無効データ(ホストが書いたデータ内容ではない)である。メモリコントローラ1100は、ホストデータを書き込むためにメモリチップへライトコマンドを実行するときに、Flag部6030に“1”(有効)を設定する。
 また、ページ6000は、そのページ全体を最大4ビットの誤りから保全するための52ビットの誤り訂正コード(ECC:Error Correcting Code)を格納するためのECC部6040を含む。ECCのアルゴリズムはBCH(Bose-Chaudhuri-Hocquenghem)符号である。メモリコントローラ1100は、ホストデータを書き込むためにメモリチップへライトコマンドを実行するときに、算出した誤り訂正コードをECC部6040に設定する。
 3つのメモリコマンドTgl_R、Tgl_T1、Tgl_T2によって、2つのページ(参照ページと対象ページ)の両データの排他的論理和が対象ページに書き込まれると、対象ページのFlag部の値も、元の両ページのFlag部同士の排他的論理和となる。例えば、元の両ページのFlag部の値が“1”(有効)であれば、対象ページのFlag部の値は“0”(無効)となる。一方、対象ページのECC部の値も元の両ページのECC部同士の排他的論理和となる。一般にBCH符号では、2つのビット列AとBのそれぞれに付したECCコードの排他的論理和:ECC(A)^ECC(B)は、AとBの排他的論理和に付したECCコード:ECC(A^B)に等しい。すなわち、ECC部の格納内容は、3つのメモリコマンドTgl_R、Tgl_T1、Tgl_T2によって2つのページデータが重ねあわされた状態(排他的論理和をとった状態)でもECCとしての訂正能力を失わず、誤りを訂正可能である。
 図7に示した状態遷移表7000を参照して、3つのメモリコマンドTgl_R、Tgl_T1、Tgl_T2を組み合わせて2つのページWとXのデータをスワップ(交換)する手順を示す。以下、コマンド名に続く括弧内の文字はそのコマンドを適用するページを表す。
 スワップ前は、ページWとXにはそれぞれホスト1400が書いたデータAとデータBが格納されており、両者ともFlagは“1”(有効)である。
 はじめに行う処理P1では、参照ページをX、対象ページをWとしてページの重ね合わせを行う(排他的論理和をとる)ため、3つのメモリコマンドTgl_R(X)、Tgl_T1(W)、Tgl_T2(W)を実行する。Tgl_R(X)によりバッファメモリ3330にデータBが読み出され、Tgl_T1(W)によりバッファメモリ3330にデータA^Bが作られる。そして、Tgl_T2(W)によりページWのデータはA^Bに更新される。このとき、ページWのFlagは“1”(有効)同士の重ねあわせで“0”(無効)となる。
 次に行う処理P2では、参照ページをW、対象ページをXとしてページの重ね合わせを行うため、2つのメモリコマンドTgl_T1(X)、Tgl_T2(X)を実行する。処理P1でのTgl_T2(W)の結果、バッファメモリにはページWのデータA^Bが残っているため、Tgl_R(W)は省略できる。Tgl_T1(X)によりバッファメモリ3330にデータA(=(A^B)^B)が作られる。そして、Tgl_T2(X)によりページXのデータはAに更新される。このとき、ページXのFlagは“0”(無効)と“1”(有効)の重ねあわせで“1”(有効)となる。
 最後に行う処理P3では、参照ページをX、対象ページをWとしてページの重ね合わせを行うため、2つのメモリコマンドTgl_T1(W)、Tgl_T2(W)を実行する。処理P2でのTgl_T2(X)の結果、バッファメモリにはページXの更新されたデータAが残っているため、Tgl_R(X)は省略できる。Tgl_T1(W)によりバッファメモリ3330にデータB(=A^(A^B))が作られる。そして、Tgl_T2(W)によりページWのデータはBに更新される。このとき、ページWのFlagは“1”(有効)と“0”(無効)の重ねあわせで“1”(有効)となる。
 以上、処理P3まで終えた結果、ページWとXにはそれぞれホストが書いたデータBとAが格納された状態(スワップされた状態)となり、両者ともFlagは“1”(有効)となる。
 以上説明したように、1ページ分のバッファメモリと小規模の回路(データ選択回路)を設けることで、ウェアレベリングにおけるページスワップやデータリフレッシュを低コスト化し、不揮発性半導体メモリ外との転送データ量を少なくすることができる。また、メモリコントローラ1100は、あるメモリチップにメモリコマンドを発行後、メモリコマンドがそのメモリチップの内部処理により実行されるので、他のメモリチップに対するリードコマンド、ライトコマンド、その他のメモリコマンドを発行することができ、半導体記憶装置(SSD)としての性能を確保できる。
 図8は、図7に示した2つのページWとXのデータのスワップ手順の実行中に、SSD1000へのホスト電源1420が遮断された場合に、メモリコントローラ1100のCPU1110が、バックアップ電源1210を用いて処理P1~P3をどの段階まで実行するかのパタンを示したものである。
 Tgl_R、Tgl_T1コマンド実行中の電源遮断については、いずれもデータをバッファメモリに読み出す処理であるため、途中で中断してもデータ損失の問題がないため(コマンドを適用した物理ページのデータはコマンド実行前の状態に保持される)、電源遮断に伴うIRQ信号1230で割り込みを受けたらバックアップ電源1210に頼ることなく、すぐにCPU1110はスリープ命令などを実行してスタンバイ状態に入ればよい。
 そこで、図8では、バックアップ電源1210に頼る必要があるTgl_T2コマンド実行中の電源遮断の処置方法について、3つのケース(i)(ii)(iii)に分けて示す。
 ケース(i)は、処理P1でのTgl_T2(W)コマンド8110を処理中の電源遮断8120であり、Tgl_T2(W)コマンド8110が完了してページWの内容がデータA^Bに更新されるまでバックアップ電源1210を利用する。そのあとすぐに、CPU1110はスタンバイ状態に入る。
 ケース(ii)は、処理P2でのTgl_T2(X)コマンド8210を処理中の電源遮断8220であり、Tgl_T2(X)コマンド8210が完了してページXの内容がデータAに更新されるまでバックアップ電源1210を利用する。そのあとすぐに、CPU1110はスタンバイ状態に入る。
 ケース(iii)は、処理P3でのTgl_T2(W)コマンド8310を処理している最中の電源遮断8320であり、Tgl_T2(W)コマンド8310が完了してページWの内容がデータBに更新されるまでバックアップ電源1210を利用する。そのあとすぐに、CPU1110はスタンバイ状態に入る。
 ケース(iii)では、結果的に2つのページWとXのデータスワップ手順を完結させることができるため、ホスト電源が復旧したときにページWにもXにも特に処置を行わない。しかし、ケース(i)(ii)では、ホスト電源が復旧したときにページWにはデータAとBの排他的論理和(A^B)が書かれたままになっており、ページWに対して次のような処置を行う。
 まず、ケース(i)ではデータAがどのページにも存在しない状態で電源が切断されており、ホスト電源が復旧したときにCPU1110はページWにデータAを回復させるように処置する。これは、ページWとページXをデータスワップ実行前の状態に戻すことになる。
 一方、ケース(ii)ではデータBがどのページにも存在しない状態で電源が切断されており、ホスト電源が復旧したときにCPU1110はページWにデータBを回復させるように処置する。これは、ページWとXのデータスワップを続行させて完結させることになる。
 図9Aは、電源遮断し、CPU1110がIRQ信号1230で割り込みを受けたときの割り込み処理プログラムのフローチャートである。図9Bは、CPU1110がページスワップ動作を制御するプログラムのフローチャートである。図9Aの処理は、図9Bの処理より優先度が高く、CPU1110はIRQ信号1230で割り込みを受ければ、図9Bの処理を中断して図9Aの処理を実行し、それが終われば、図9Bの処理を中断点から続けるように動作する。
 図9Aを参照して、割り込み処理を説明する。割り込みを受けたとき、Tgl_T2コマンドが実行中であるかを調べる(9010)。実行中ならば、RAM1120に用意した電源遮断フラグ(ソフトウェアフラグ)をONに設定し(9020)、処理を終える。一方、実行中でないならば、Tgl_RやTgl_T1コマンドの実行中も含めて電源を切断しても問題ない状態であるため、スタンバイ状態に入り(9030)、処理を終える。
 図9Bを参照して、ページスワップ動作制御を説明する。まず、スワップを適用する2つのページを選択する(9110)。1つは書き換え回数が所定の回数M1よりも少ないページWで、もう1つは書き換え回数が所定の回数M2よりも多いページXである。例えば、所定の回数M1、M2とは、メモリセル全体の平均書き換え回数をAVGとして、M1=AVG×0.7、M2=AVG×1.3などである。なお、本実施形態では、ページ書き換え回数の取得方式については限定しない。一例を示すと、メモリコントローラ1100内に小容量の不揮発性メモリを備えて、物理ページごとの書き換え回数の管理テーブルを記録し、書き換えが起きる度にそのテーブル内容を更新(カウントアップ)するようにする。
 次に、処理P1のためにTgl_R(X)、Tgl_T1(W)コマンドを発行する(9120)。続けて、Tgl_T2(W)コマンドを発行する(9130)。なお、ステップ9120と9130の間にIRQ信号1230で割り込みを受ければ、図9Aのようにスタンバイ状態に入るため、ページスワップ動作は未着手扱いのまま電源が切れる。
 ステップ9130のあと、電源遮断フラグがONかどうかを調べる(9140)。ONならば、スタンバイ状態に入り(9200)、ページスワップ動作はケース(i)のパタンで中断終了する。この場合、Tgl_T2(W)コマンド実行中に電源遮断が起きており、バックアップ電源を利用してTgl_T2(W)コマンドを完了したことを意味する。
 ステップ9140でOFFならば、処理P2のためにTgl_T1(X)コマンドを発行する(9150)。続けて、Tgl_T2(X)コマンドを発行する(9160)。なお、ステップ9150と9160の間にIRQ信号1230で割り込みを受ければ、図9Aのようにスタンバイ状態に入るため、ページスワップ動作は処理P1まで終えた状態で中断終了する。
 ステップ9160のあと、電源遮断フラグがONかどうかを調べる(9170)。ONならば、スタンバイ状態に入り(9200)、ページスワップ動作はケース(ii)のパタンで中断終了する。この場合、Tgl_T2(X)コマンド実行中に電源遮断が起きており、バックアップ電源を利用してTgl_T2(X)コマンドを完了したことを意味する。
 ステップ9170でOFFならば、処理P3のためにTgl_T1(W)コマンドを発行する(9180)。続けて、Tgl_T2(W)コマンドを発行する(9190)。なお、ステップ9180と9190の間にIRQ信号1230で割り込みを受ければ、図9Aのようにスタンバイ状態に入るため、ページスワップ動作は処理P2まで終えた状態で中断終了する。
 ステップ9190が終われば、ページスワップ動作は完結したことを意味する。最後のTgl_T2(W)コマンド実行中に電源遮断が起きていたとしても、バックアップ電源を利用してコマンドが完了するからである。
 本実施形態によるページスワップ動作では、2つのページに対し、合わせて3回の書き換えが必要である。上記フローでは、ページWは2回、ページXは1回の書き換えが行われたが、図7で示した手順において両ページの役割を入れ替えてもページスワップは実現可能であるから、ページWを1回、ページXを2回書き換えるように制御してもよい。しかし、ページスワップ前のページWの書き換え回数がページXのそれより少ないという条件では、ページWのほうを1回多く書き換え、書き換え回数差を減らすようにした上記フローのほうが平準化の考え方からも好ましい。
 以上のように、ページスワップ動作中に電源遮断が起きた場合は、
 (1)動作未着手
 (2)処理P1まで終えた状態での中断
 (3)処理P2まで終えた状態での中断
 (4)動作完結
の4通りのいずれかの状態で電源が切れることになる。このうち、(2)と(3)の処理P1またはP2まで終えた状態での中断については、図8の説明中で述べたようにページWのデータ回復を行う必要がある。
 図10および図11を参照して、処理P1またはP2まで終えた状態でのページスワップ中断からデータ回復を行う方法について説明する。
 図10は、ページデータの格納状態、およびCPU1110がRAM1120上に構築する論理物理アドレス変換テーブルのパタンを示したものである。ここでは、説明を簡単にするため、物理ページの全体数が4個(W、X、Y、Z)であり、格納するホストデータも4セクタ分(A、B、C、D)であると仮定する。
 いま、10000のように全データが有効であるページデータ格納状態からSSD1000が起動すると、CPU1110は全ページの各LA部6020を読むことによって、10010のような論理物理アドレス変換テーブルを構築する。ここで、CPU1110がページWとページXのページスワップが必要と判断して、ページスワップ動作を実施した場合、最終的に10020のようなデータAとデータBの格納ページが交換された論理物理アドレス変換テーブルになる。ホスト1400から見ると、たとえばデータAは、図6に示したように、データAを格納する論理アドレスによって認識できる、論理アドレスと対応するデータであるので、図10に示す論理物理アドレス変換テーブルでは論理アドレスAと表す。
 しかし、そのページスワップ動作中に電源遮断が発生して、処理P1またはP2まで終えた状態で中断したとすると、次にSSD1000が起動したときには、10100または10200のようにページWのデータが無効であるページデータ格納状態になっている。具体的には、処理P1まで終えた状態で中断したとすると10100の状態、処理P2まで終えた状態で中断したとすると10200の状態である。
 処理P1まで終えた状態で中断していた場合、CPU1110は全ページの各LA部6020を読むことによって、論理物理アドレス変換テーブルの構築を試みるが、ページWのData部6010やLA部6020は無効であるから、10110のように格納ページが存在しない1つのデータA(論理アドレスA)が現れる。しかし、消去法によりその格納ページはWであることが分かるので、結果的に10120のように論理物理アドレス変換テーブルを完成させることができる。ページWのLA部6020にはデータAのアドレスとスワップ相手(パートナ)のアドレスとの排他的論理和が書かれているので、逆算によりスワップパートナがデータBであることも求めることができる。論理物理アドレス変換テーブルからデータBの格納ページはXであるから、見えなくなった格納データAは、Tgl_R(X)、Tgl_T1(W)、Tgl_T2(W)コマンドで回復できる。
 処理P2まで終えた状態で中断していた場合、CPU1110は全ページの各LA部6020を読むことによって、論理物理アドレス変換テーブルの構築を試みるが、ページWのData部6010やLA部6020は無効であるから、10210のように格納ページが存在しない1つのデータBが現れる。しかし、消去法によりその格納ページはWであることが分かるので、結果的に10220のように論理物理アドレス変換テーブルを完成させることができる。ページWのLA部6020にはデータBのアドレスとスワップパートナのアドレスとの排他的論理和が書かれているので、逆算によりスワップパートナがデータAであることも求めることができる。論理物理アドレス変換テーブルからデータAの格納ページはXであるから、見えなくなった格納データBは、Tgl_R(X)、Tgl_T1(W)、Tgl_T2(W)コマンドで回復できる。
 図11を参照して、ページスワップを処理P1またはP2まで終えた状態での中断後に、SSD1000を再起動した際に、CPU1110がデータ回復を行うブートアップ処理を説明する。
 まず、相変化メモリチップ1301~1304の全ページをスキャンリードする(ただし、その際にECC部6040を用いてページ内容の誤りの有無を検査し、誤りがあれば訂正後のページ内容を用いて以降の処理を行うものとする)。そして、Flag部6030の値が“1”(有効)であるようなページについて、LA部6020の論理アドレスを調べ、論理物理アドレス変換テーブルを作成する(11010)。そのテーブルの中に対応する格納ページを持たない論理アドレスがあれば、それを検出する(11020)。Flag部6030の値が“0”(無効)であったページWにおいて、そのLA部6020の内容と、上記の対応する格納ページを持たない論理アドレスとの排他的論理和を計算することで、ページWの格納データと交換しようとした相手データの論理アドレスを導出する(11030)。そして、論理物理アドレス変換テーブルを参照して、その相手データの論理アドレスに対応するページXを取得する(11040)。そして、格納データを回復するために、ページXとWに対して、Tgl_R(X)、Tgl_T1(W)、Tgl_T2(W)コマンドを発行する(11050)。これにより、ページWの格納データは有効なものになる。最後に、論理物理アドレス変換テーブルで、対応する格納ページがなかった論理アドレスの対応ページとしてページWを対応づけ、論理物理アドレス変換テーブルを完成する(11060)。なお、ステップ11050によりTgl_T2(W)コマンドを実行するが、この途中で再び電源遮断が起きる可能性もある。しかし、バックアップ電源はそのコマンドが完了するまでメモリチップへの電源供給を維持するので問題はない。
 なお、図11のフローでは、ブートアップ処理プログラムの中で、論理物理アドレス変換テーブルを作成するために全ページをスキャンリードしているが、その負担を減らすために、例えば、メモリコントローラ1100内に小容量の不揮発性メモリを備えて、論理物理アドレス変換テーブルを常に記録しておいてもよい。その場合、アドレスの対応関係は失われないので、ステップ11050による格納データ回復だけを実施すれば十分である。
 また、3つのコマンドだけでデータ回復できることを利用して、ブートアップ処理プログラムの中ではデータ回復を省略するという方式も可能である。すなわち、ホストからのリードコマンドに応答して、指定された論理アドレスのデータが含まれるページWが無効(Flag=“0”)であれば、そのページWとそのスワップパートナのページXに対して、ステップ11050の3つのコマンドを実行し、所望のデータを回復するという方法である。
 上記のページスワップ動作説明では、有効データを示すFlag部6030の値として“1”を用いたが、非ゼロ値であれば何でもよい。例えば、Flag部6030の全4ビットを“1”とした“F(16進数表記)”で有効データを示した場合でも、ページスワップ動作は実施可能であることは言うまでもない。その場合でも、無効データを示すFlag部6030の値は同じく“0”である。
 図12Aおよび図12Bを参照して、本実施形態のページスワップ動作の効果を説明する。
 図12Aは、従来のデータ選択回路3340を持たず、バッファメモリを2つ持つ半導体メモリチップの内部でページスワップ動作を実行する場合の、データの流れを示している。まず、ページWから第1のバッファメモリにデータを読み出し(12010)、ページXから第2のバッファメモリにデータを読み出し(12020)、第2のバッファメモリからページWにデータを書き込み(12030)、最後に、第1のバッファメモリからページXにデータを書き込む(12040)。このように、ページスワップ動作には少なくとも2つのバッファメモリを必要とする。しかし、本実施形態によれば、1ビットの排他的論理和回路を含むデータ選択回路3340を必要とするものの、1つの4184ビットのバッファメモリで、半導体メモリチップの内部でのページスワップ動作を実現できるため、回路規模を削減することができる。よって、半導体メモリチップの低コスト化が可能である。
 図12Bは、従来の半導体メモリチップの内部でページスワップ動作を実行中に、電源遮断が発生した場合の対応方法の例を示している。図12Aのステップ12030と12040では、それぞれバッファメモリからページへのライトコマンド12110、12120を実行するが、例えば、第1のライトコマンド12110の途中に電源遮断12130が発生したとすると、次の第2のライトコマンド12120が終わるまでは、バックアップ電源を利用してページスワップ動作を続けなければならない。もし、第1のライトコマンド12110直後に動作中断すると、データAは揮発性のバッファメモリにしか残されていないため、電源切断によって損失してしまうからである。したがって、従来の半導体メモリチップを適用したSSDでは、2回分のライトコマンド処理時間(約3.34ms)分の電力を蓄積できるバックアップ電源を必要とする。しかし、本実施形態によれば、その半分の1回分のライトコマンド処理時間(約1.67ms)分の電力を蓄積できるバックアップ電源をSSDに備えれば、安全にページスワップ動作を実現できる。よって、バックアップ電源の電気容量を半減でき、SSDの低コスト化が可能である。なお、従来のライトコマンドも、本実施形態によるTgl_T2コマンドも、バッファメモリからページへの書き込みを行う処理を行うため、その消費電力に違いはない。
 以下、SSD1000のデータリフレッシュ(ページ誤り訂正)動作について述べる。
 データリフレッシュ動作とは、相変化メモリチップのページの格納データがデータ誤りを起こしているかをメモリコントローラがECCアルゴリズムを利用して検査し、データに誤りがあれば、それを訂正したデータをそのページに上書きし、ページデータを保全するという動作である。
 以下、図13を参照しながら、ページ誤り訂正動作を実施するSSDの構成を説明する。
 図13において、メモリコントローラ1100には誤り訂正を行う専用ハードウェアが含まれる。そのECC方式としては、2の13乗個の元をもつガロア拡大体における、4重誤り訂正のBCH符号を用いる。この符号は、最大8191ビット中のランダム誤りを最大4ビットまで訂正可能である。そのハードウェアは3つの部分で構成される。シンドローム生成部13010、誤り位置多項式計算部13020、訂正ビットアドレス計算部13030である。BCH符号では、一般に、ページデータ全体を蓄積することなく、線形フィードバックシフトレジスタに分割データ(例えば32ビット単位)を順番に入力することでシンドロームを生成することができる。ゆえに、シンドローム生成部13010はバッファメモリを含まない。なお、誤り訂正はソフトウェアによりCPU1110が処理してもよい。その場合でもシンドローム生成のためにバッファメモリを用意する必要はない。
 また、相変化メモリチップ1301~1304は、新しいコマンド:トグル設定コマンド(以下、Tgl_Sと表す)をサポートする。Tgl_Sコマンドはページを構成する4184ビットのデータの中で値を反転したいビット位置(複数個の位置でもよい)を指定することができる。相変化メモリチップ1301~1304は、インタフェースロジック3400内にトグルパタン生成器13130を持ち、Tgl_Sコマンドで入力されたビット位置(アドレス)の値を“1”として、その他のビットアドレスの値を“0”とする、4184ビットのストリームデータを生成する。
 以下、図13と図14を参照しながら、ページ誤り訂正動作の手順を説明する。
 まず、メモリコントローラ1100はリードコマンドによって、ページ13110から誤りを含むデータを読み出す。このデータはセンスアンプ3320とデータ選択回路3340を通じてバッファメモリ3330に入力される。そして、インタフェースロジック3400を経由してメモリコントローラ1100に送信される。このとき、誤りを含むデータはバッファメモリ3330に残る。メモリコントローラ1100に送信されたデータは、シンドローム生成部13010で処理されて、52ビットのシンドロームが生成される(14010)。
 次に、誤り位置多項式計算部13020は、シンドロームを解析することによって、誤りビット位置を解にもつ4次の誤り位置多項式を算出する(14020)。
 次に、訂正ビットアドレス計算部13030は、誤り位置多項式の解を探索し、その解(誤りビットアドレス)とその個数(最大4個)を計算する(14030)。
 次に、メモリコントローラ1100はTgl_Sコマンドによって、その誤りビットアドレスをメモリチップに入力する。トグルパタン生成器13130は、誤りを訂正したいビットが“1”であるような、4184ビットのストリームデータを生成する。データ選択回路3340は、そのストリームデータと、バッファメモリ3330に残った上記の誤りデータをフィードバックしたものとの排他的論理和を1ビットずつ作って、バッファメモリ3330に再度入力する。これにより、バッファメモリ3330は、誤りが訂正された(ストリームデータのビットが“1”であるビットアドレスに対応する、フィードバックしたデータのビットの値が反転した)ページデータで更新される(14040)。
 最後に、メモリコントローラ1100はページ13110に対するTgl_T2コマンドを発行する。これによって、バッファメモリ3330上の訂正済みデータはドライバ3310を通じてページ13110に上書きされる(14050)。以上で、ページ誤り訂正動作が完了する。
 以下、本実施形態によるページ誤り訂正動作の効果を説明する。
 まず、従来の半導体メモリチップを用いてページ誤り訂正を実装する場合のSSDの構成例(図示せず)を説明する。
 従来の半導体メモリチップを用いたSSDにおいても、本実施形態(図13)と同様にメモリコントローラは誤り訂正を行う専用ハードウェアを含む。同様にシンドローム生成自体にはバッファメモリを必要としないが、従来はメモリコントローラ内で誤り訂正済みデータを用意する必要があるため、メモリチップから読みだした誤りデータを蓄積するための外部バッファメモリ(メモリコントローラがアクセスできる、メモリチップ外のバッファメモリ)を備える必要がある。
 このように、従来のページ誤り訂正動作では、メモリコントローラがアクセスできるバッファメモリを必要とするが、本実施形態によれば、メモリコントローラのバッファメモリを用いることなく、半導体メモリチップの内部のバッファメモリだけでページ誤り訂正動作を実現できるため、メモリコントローラのバッファメモリを削減することができる。よって、SSDの低コスト化が可能である。
 次に、従来技術として、特許文献3が示している半導体メモリチップを用いたSSDでのページ誤り訂正動作フロー例(図示せず)を説明する。
 まず、メモリコントローラは、メモリチップにリードコマンドを発行し、ページデータを読み出す。そして、誤り訂正ハードウェアによりそのデータに含まれる誤りビットのビットアドレスと個数を計算する。そして、その情報を用いて外部バッファメモリ上で誤りデータを訂正する。最後に、メモリチップに書き換えコマンド(特許文献3のRewrite Command)を発行し、誤りを含む箇所のカラムアドレス及び訂正データ部分を転送し、ページを上書きする。(厳密には、特許文献3は上書きでなく異なるページに書く方式を示す。)
 図15A及び図15Bは、本実施形態によるページ誤り訂正動作の効果を示したものである。
 例えば、I/O信号幅が8ビットで、ページサイズが523バイト、誤りビット個数の最大が4個のメモリチップを考える。
 従来技術として、特許文献3のようにページの一部を書き換えるためにアドレスとデータをコマンドで転送する方式の半導体メモリチップを比較対象とする。そのようなメモリチップを用いた場合のページ誤り訂正動作では、図15Aのように、訂正データをライトするための書き換えコマンド(ReWr)で、訂正するカラムアドレスCA1、CA0(0~522のいずれかのカラムアドレスを示す10ビット、2クロック分)及び訂正データD(カラム当りのデータ長8ビット、1クロック分)のペアを最大4組メモリチップに送る必要がある。すなわち12クロック分の入力転送が必要である。(図では2回分の波形:15010、15020を示す。)
 一方、本実施形態のページ誤り訂正動作では、図15Bのように、トグルパタンを生成するためのTgl_Sコマンドで、誤りビットアドレスbA1、bA0(0~4183(8×523)のいずれかのビットアドレスを示す13ビット、2クロック分)を最大4組メモリチップに送る必要がある。すなわち8クロック分の入力転送を行うだけでよい。(図では3回分の波形:15110、15120、15130を示す。)
 以上の比較では、カラム当りのデータ長を8ビット(1バイト)としたが、カラム当りのデータ長が長くなれば、従来の入力転送時間と本実施例による入力転送時間の差は大きくなる。たとえば、カラム当りのデータ長を4184ビットとすると、従来技術では、カラムアドレスの指定及び繰返しは不要となるが、523バイト(523クロック分)の入力転送時間になり、本実施形態では、8クロック分の入力転送時間でよい。
 このように、本実施形態によれば、ページ誤り訂正動作を従来より少ない転送クロック数で処理できる。SSDに含まれる全てのページ(例えば、100GBのSSDならば200万ページ)に対して、定期的にデータリフレッシュを行うことを想定すればこの削減効果は大きく作用し、SSDの動作電力消費量を減らし、低コスト化できる。
 以上、本実施形態の一例を述べたが、相変化メモリを記憶素子とするメモリチップに限らず、多種多様な不揮発性メモリチップ、及びそれを利用した半導体記憶装置においても本実施形態の技術を適用可能である。
 本実施形態のデータリフレッシュ(ページ誤り訂正)技術を、NAND型フラッシュメモリを記憶素子とするメモリチップ、及びそれを利用した半導体記憶装置に適用する場合には、誤り訂正後のデータをセルアレイ内のページに書き戻すとき、元のページではなく異なるページに書き戻すように実施する。なぜならば、NAND型フラッシュメモリの書き込み済みページは再書き込みができないからである。(同一ページに再度書くためには、事前にそのページを含む複数ページからなるブロックを消去する必要がある。)
 本実施形態のデータリフレッシュ技術は、誤りデータが存在したページ(図13のページ13110)とは異なるページに訂正済みデータを書き戻すように実施した場合でも、書き込み先のページアドレスを異にするだけであるので、上記の低コスト化の効果を享受することは明らかである。
 特に、NAND型フラッシュメモリはページサイズが8KB(キロバイト)で、その他の不揮発性メモリチップに比べて大きく、誤りビット個数の最大は1KB当たり40個(つまり、1ページ当たり320個)という特徴がある。したがって、従来技術によるデータリフレッシュ動作では、誤りアドレス及び訂正済みデータをメモリチップに転送するための転送クロック数はさらに多くなる。ゆえに、NAND型フラッシュメモリに本実施形態のデータリフレッシュ技術を適用することで、より多くの転送クロック数が削減される。このように、NAND型フラッシュメモリの場合は、本実施形態の効果をより多く享受する。
 以上説明した本実施形態によれば、メモリコントローラ1100からのコマンドに応じてバッファメモリ3330の入力がデータ選択回路3340によって制御されると共に、バッファメモリ3330の出力が選択される。図16に、説明したメモリコマンドとバッファメモリ3330の入出力との対応関係を示す。
 図16に示すように、コマンドTgl_Rによりセンスアンプ3320からの出力がバッファメモリ3330に入力されるように、データ選択回路3340が制御される。このとき、バッファメモリ3330の出力は他の回路に入力されないように制御される。コマンドTgl_T1によりセンスアンプ3320からの出力とバッファメモリ3330の出力との排他的論理和がバッファメモリ3330に入力されるように、データ選択回路3340が制御される。コマンドTgl_T2によりバッファメモリ3330の出力がフィードバックされてバッファメモリ3330に入力されるように、データ選択回路3340が制御される。このときバッファメモリ3330の出力はフィードバックされると共に、ドライバ3310に入力される。コマンドTgl_Sによりバッファメモリ3330の出力とインタフェースロジック3400内のトグルパタン生成器13130の出力との排他的論理和がバッファメモリ3330に入力されるように、データ選択回路3340が制御される。
 データ選択回路3340の制御及びバッファメモリ3330の出力先(出力しないことを含む)の選択は、インタフェースロジック3400内または別途設ける制御回路(論理回路又はCPU)により、メモリコントローラ1100からインタフェースロジック3400に入力されるコマンドを解析し、コマンド解析結果に応じて実現される。
 なお、データをページ単位でメモリセルアレイから読み出すリードコマンド、メモリセルアレイへ書き込むライトコマンドについては詳細を略するが、通常の不揮発性メモリセルアレイに対するものと同じである。
1000…SSD、1100…メモリコントローラ、1110…CPU、1210…バックアップ電源、1301~1304…相変化メモリチップ、3130…セルアレイ、3120…ビットライン選択回路、3330…バッファメモリ、3340…データ選択回路、6010…Data部、6020…LA部、6030…Flag部、6040…ECC部。

Claims (14)

  1. 不揮発性のメモリセルアレイ、
    前記メモリセルアレイのデータの読み出し/書き込み単位である1ページ分の容量の揮発性のバッファメモリ、
    前記メモリセルアレイからデータを読み出すセンスアンプ、
    前記メモリセルアレイへデータを書き込むドライバ、
    メモリコントローラと接続するインタフェースロジック、
    前記センスアンプの出力、前記バッファメモリの出力、及び、前記センスアンプの出力と前記バッファメモリの出力との排他的論理和を選択的に前記バッファメモリへ入力するデータ選択回路、並びに、
    前記データ選択回路による前記バッファメモリへ入力の選択に対応して、前記バッファメモリの出力は、前記データ選択回路を介した該バッファメモリ及び前記ドライバの少なくとも一方の入力として、または、前記データ選択回路を介した該バッファメモリ及び前記ドライバのいずれにも入力しないように制御する制御回路を有することを特徴とする半導体メモリ装置。
  2. 前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの第1のページ(X)を指定した第1のコマンド(Tgl_R)に応答して、前記センスアンプは前記第1のページ(X)の第1のデータ(B)を前記メモリセルアレイから読み出し、前記データ選択回路は、読み出された前記第1のデータ(B)を前記バッファメモリに入力し、前記バッファメモリは前記第1のデータ(B)を格納し、
    前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの第2のページ(W)を指定した第2のコマンド(Tgl_T1)に応答して、前記センスアンプは前記第2のページ(W)の第2のデータ(A)を前記メモリセルアレイから読み出し、前記データ選択回路は、前記バッファメモリに格納された前記第1のデータ(B)と読み出された前記第2のデータ(A)との排他的論理和を計算した第3のデータ(A^B)を前記バッファメモリに入力し、前記バッファメモリは入力した前記第3のデータ(A^B)を格納し、
    前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの前記第2のページ(W)を指定した第3のコマンド(Tgl_T2)に応答して、前記制御回路は、前記バッファメモリの出力を前記ドライバに入力し、前記バッファメモリに格納した前記第3のデータ(A^B)を、前記メモリセルアレイの前記第2のページ(W)に書き込むように制御することを特徴とする請求項1記載の半導体メモリ装置。
  3. 前記第3のコマンド(Tgl_T2)に応答して、前記データ選択回路は、前記バッファメモリの前記第3のデータ(A^B)を前記バッファメモリにフィードバック入力し、前記バッファメモリはフィードバックされた前記第3のデータ(A^B)を格納し、
    前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの前記第1のページ(X)を指定した2回目の前記第2のコマンド(Tgl_T1)に応答して、前記センスアンプは前記第1のページ(X)の前記第1のデータ(B)を前記メモリセルアレイから読み出し、前記データ選択回路は、前記バッファメモリに格納された前記第3のデータ(A^B)と読み出された前記第1のデータ(B)との排他的論理和を計算した前記第2のデータ(A)を前記バッファメモリに入力し、前記バッファメモリは入力した前記第2のデータ(A)を格納し、
    前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの前記第1のページ(X)を指定した2回目の前記第3のコマンド(Tgl_T2)に応答して、前記制御回路は、前記バッファメモリの出力を前記ドライバに入力し、前記バッファメモリに格納した前記第2のデータ(A)を、前記メモリセルアレイの前記第1のページ(X)に書き込むように制御することを特徴とする請求項2記載の半導体メモリ装置。
  4. 2回目の前記第3のコマンド(Tgl_T2)に応答して、前記データ選択回路は、前記バッファメモリの前記第2のデータ(A)を前記バッファメモリにフィードバック入力し、前記バッファメモリはフィードバックされた前記第2のデータ(A)を格納し、前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの前記第2のページ(W)を指定した3回目の前記第2のコマンド(Tgl_T1)に応答して、前記センスアンプは前記第2のページ(W)の前記第3のデータ(A^B)を前記メモリセルアレイから読み出し、前記データ選択回路は、前記バッファメモリに格納された前記第2のデータ(A)と読み出された前記第3のデータ(A^B)との排他的論理和を計算した前記第1のデータ(B)を前記バッファメモリに入力し、前記バッファメモリは入力した前記第1のデータ(B)を格納し、
    前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの前記第2のページ(W)を指定した3回目の前記第3のコマンド(Tgl_T2)に応答して、前記制御回路は、前記バッファメモリの出力を前記ドライバに入力し、前記バッファメモリに格納した前記第1のデータ(B)を、前記メモリセルアレイの前記第2のページ(W)に書き込むように制御することを特徴とする請求項3記載の半導体メモリ装置。
  5.  前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの第4のページを指定した第4のコマンドであるリードコマンドに応答して、前記センスアンプは前記第4のページの第4のデータを前記メモリセルアレイから読み出し、前記データ選択回路は、読み出された前記第4のデータを前記バッファメモリに入力し、前記バッファメモリは前記第4のデータを格納し、
    前記インタフェースロジックは、前記メモリコントローラからの、前記第4のデータのビット値を“1”とするビットアドレスを指定した第5のコマンド(Tgl_S)に応答して、指定されたビットアドレスに対応したビット値を“1”とし、指定されないビットアドレスに対応したビット値を“0”とする第5のデータを生成するトグルパタン生成器を含み、
    前記データ選択回路は、前記バッファメモリに格納された前記第4のデータと生成された前記第5のデータとの排他的論理和を計算した第6のデータを前記バッファメモリに入力し、前記バッファメモリは入力した第6のデータを格納し、
    前記メモリコントローラからの第6のコマンド(Tgl_T2)に応答して、前記制御回路は、前記バッファメモリの出力を前記ドライバに入力し、前記バッファメモリに格納した前記第6のデータを、前記メモリセルアレイの前記第4のページに書き込むように制御することを特徴とする請求項1記載の半導体メモリ装置。
  6. 不揮発性のメモリセルアレイ、
    前記メモリセルアレイのデータの読み出し/書き込み単位である1ページ分の容量の揮発性のバッファメモリ、
    前記メモリセルアレイからデータを読み出すセンスアンプ、
    前記メモリセルアレイへデータを書き込むドライバ、
    前記センスアンプの出力、前記バッファメモリの出力、及び、前記センスアンプの出力と前記バッファメモリの出力との排他的論理和を選択的に前記バッファメモリへ入力するデータ選択回路、並びに、
    前記データ選択回路による前記バッファメモリへ入力の選択に対応して、前記バッファメモリの出力は、前記データ選択回路を介した該バッファメモリ及び前記ドライバの少なくとも一方の入力として、または、前記データ選択回路を介した該バッファメモリ及び前記ドライバのいずれにも入力しないように制御する制御回路を有する半導体メモリ装置と、
    前記半導体メモリ装置のインタフェースロジックに接続し、前記半導体メモリ装置を制御するメモリコントローラと、
    前記半導体メモリ装置に供給される電源をバックアップするバックアップ電源とを含むことを特徴とする記憶装置。
  7. 前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの第1のページ(X)を指定した第1のコマンド(Tgl_R)に応答して、前記センスアンプは前記第1のページ(X)の第1のデータ(B)を前記メモリセルアレイから読み出し、前記データ選択回路は、読み出された前記第1のデータ(B)を前記バッファメモリに入力し、前記バッファメモリは前記第1のデータ(B)を格納し、
    前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの第2のページ(W)を指定した第2のコマンド(Tgl_T1)に応答して、前記センスアンプは前記第2のページ(W)の第2のデータ(A)を前記メモリセルアレイから読み出し、前記データ選択回路は、前記バッファメモリに格納された前記第1のデータ(B)と読み出された前記第2のデータ(A)との排他的論理和を計算した第3のデータ(A^B)を前記バッファメモリに入力し、前記バッファメモリは入力した前記第3のデータ(A^B)を格納し、
    前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの前記第2のページ(W)を指定した第3のコマンド(Tgl_T2)に応答して、前記制御回路は、前記バッファメモリの出力を前記ドライバに入力し、前記バッファメモリに格納した前記第3のデータ(A^B)を、前記メモリセルアレイの前記第2のページ(W)に書き込むように制御し、
    前記メモリコントローラは、
    前記第1のコマンド(Tgl_R)および前記第2のコマンド(Tgl_T1)の実行中に前記電源の供給が遮断された場合には、その実行を中断し、
    前記第3のコマンド(Tgl_T2)の実行中に前記電源の供給が遮断された場合には、その実行を完了するまで前記バックアップ電源を利用することを特徴とする請求項6記載の記憶装置。
  8. 前記半導体メモリ装置の前記メモリセルアレイの前記第1のページ(X)および前記第2のページ(W)に格納されているデータは、該データの有効/無効を示す第1の所定部分を有し、
    前記メモリコントローラは、
    リードコマンドにより前記半導体メモリ装置の前記メモリセルアレイから前記第1のページ(X)および前記第2のページ(W)のデータを読み出し、
    読み出した前記第1のページ(X)のデータの前記第1の所定部分が有効を示し、読み出した前記第2のページ(W)のデータの前記第1の所定部分が無効を示しているならば、前記第1のページ(X)を指定して、前記第1のコマンド(Tgl_R)を実行し、
    前記第2のページ(W)を指定して、前記第2のコマンド(Tgl_T1)と前記第3のコマンド(Tgl_T2)を実行することを特徴とする請求項7記載の記憶装置。
  9. 前記半導体メモリ装置の前記メモリセルアレイの前記第1のページ(X)および前記第2のページ(W)に格納されているデータは、該データの論理アドレスを示す第2の所定部分を有し、
    前記メモリコントローラは、
    前記第1の所定部分が有効を示す前記第1のページ(X)のデータの前記第2の所定部分の第1の論理アドレスと物理アドレスである前記第1のページ(X)との対応関係をテーブルに登録し、
    前記テーブルにおいて、対応する物理アドレスを持たない第2の論理アドレスを検出し、
    前記第2のページ(W)に格納されているデータの前記第2の所定部分の内容と前記第2の論理アドレスとの排他的論理和を計算して、第3の論理アドレス(スワップパートナ)を算出し、
    前記テーブルから、前記第3の論理アドレス(スワップパートナ)に対応する前記第1のページ(X)を取得し、
    前記第1のページ(X)を指定した前記第1のコマンド(Tgl_R)を実行することを特徴とする請求項8記載の記憶装置。
  10. 前記メモリコントローラからの前記インタフェースロジックを介した、前記メモリセルアレイの第4のページを指定した第4のコマンドであるリードコマンドに応答して、前記センスアンプは前記第4のページの第4のデータを前記メモリセルアレイから読み出し、前記データ選択回路は、読み出された前記第4のデータを前記バッファメモリに入力し、前記バッファメモリは前記第4のデータを格納し、
    前記インタフェースロジックは、前記メモリコントローラからの、前記第4のデータのビット値を“1”とするビットアドレスを指定した第5のコマンド(Tgl_S)に応答して、指定されたビットアドレスに対応したビット値を“1”とし、指定されないビットアドレスに対応したビット値を“0”とする第5のデータを生成するトグルパタン生成器を含み、
    前記データ選択回路は、前記バッファメモリに格納された前記第4のデータと生成された前記第5のデータとの排他的論理和を計算した第6のデータを前記バッファメモリに入力し、前記バッファメモリは入力した第6のデータを格納し、
    前記メモリコントローラからの、第6のコマンド(Tgl_T2)に応答して、前記制御回路は、前記バッファメモリの出力を前記ドライバに入力し、前記バッファメモリに格納した前記第6のデータを、前記メモリセルアレイの前記第4のページに書き込むように制御し、
    前記メモリコントローラは、
    前記第4のコマンドを実行して、前記第4のページの前記第4のデータを読み出し、
    前記第4のデータに含まれる誤りビットのビットアドレスを指定した前記第5のコマンド(Tgl_S)を実行することを特徴とする請求項6記載の記憶装置。
  11. 不揮発性のメモリセルアレイ、前記メモリセルアレイのデータの読み出し/書き込み単位である1ページ分の容量の揮発性のバッファメモリ、前記メモリセルアレイからデータを読み出すセンスアンプ、前記メモリセルアレイへデータを書き込むドライバ、前記センスアンプの出力、前記バッファメモリの出力、及び、前記センスアンプの出力と前記バッファメモリの出力との排他的論理和を選択的に前記バッファメモリへ入力するデータ選択回路、並びに、前記データ選択回路による前記バッファメモリへ入力の選択に対応して、前記バッファメモリの出力は、前記データ選択回路を介した該バッファメモリ及び前記ドライバの少なくとも一方の入力として、または、前記データ選択回路を介した該バッファメモリ及び前記ドライバのいずれにも入力しないように制御する制御回路を有する半導体メモリ装置と、前記半導体メモリ装置のインタフェースロジックに接続し、前記半導体メモリ装置を制御するメモリコントローラと、前記半導体メモリ装置に供給される電源をバックアップするバックアップ電源とを含む記憶装置における、前記メモリコントローラによる制御方法であって、
    前記メモリコントローラは、前記インタフェースロジックを介して、前記メモリセルアレイの第1のページ(X)を指定した第1のコマンド(Tgl_R)を発行し、前記第1のコマンド(Tgl_R)に応答して、前記センスアンプは前記第1のページ(X)の第1のデータ(B)を前記メモリセルアレイから読み出し、前記データ選択回路は、読み出された前記第1のデータ(B)を前記バッファメモリに入力し、前記バッファメモリは前記第1のデータ(B)を格納し、
    前記メモリコントローラは、前記インタフェースロジックを介して、前記メモリセルアレイの第2のページ(W)を指定した第2のコマンド(Tgl_T1)を発行し、前記第2のコマンド(Tgl_T1)に応答して、前記センスアンプは前記第2のページ(W)の第2のデータ(A)を前記メモリセルアレイから読み出し、前記データ選択回路は、前記バッファメモリに格納された前記第1のデータ(B)と読み出された前記第2のデータ(A)との排他的論理和を計算した第3のデータ(A^B)を前記バッファメモリに入力し、前記バッファメモリは入力した前記第3のデータ(A^B)を格納し、
    前記メモリコントローラは、前記インタフェースロジックを介して、前記メモリセルアレイの前記第2のページ(W)を指定した第3のコマンド(Tgl_T2)を発行し、前記第3のコマンド(Tgl_T2)に応答して、前記制御回路は、前記バッファメモリの出力を前記ドライバに入力し、前記バッファメモリに格納した前記第3のデータ(A^B)を、前記メモリセルアレイの前記第2のページ(W)に書き込むように制御し、
    前記メモリコントローラは、
    前記第1のコマンド(Tgl_R)および前記第2のコマンド(Tgl_T1)の実行中に前記電源の供給が遮断された場合には、その実行を中断し、
    前記第3のコマンド(Tgl_T2)の実行中に前記電源の供給が遮断された場合には、その実行を完了するまで前記バックアップ電源を利用することを特徴とする制御方法。
  12. 前記半導体メモリ装置の前記メモリセルアレイの前記第1のページ(X)および前記第2のページ(W)に格納されているデータは、該データの有効/無効を示す第1の所定部分を有し、
    前記メモリコントローラは、
    リードコマンドにより前記半導体メモリ装置の前記メモリセルアレイから前記第1のページ(X)および前記第2のページ(W)のデータを読み出し、
    読み出した前記第1のページ(X)のデータの前記第1の所定部分が有効を示し、読み出した前記第2のページ(W)のデータの前記第1の所定部分が無効を示しているならば、前記第1のページ(X)を指定して、前記第1のコマンド(Tgl_R)を実行し、
    前記第2のページ(W)を指定して、前記第2のコマンド(Tgl_T1)と前記第3のコマンド(Tgl_T2)を実行することを特徴とする請求項11記載の制御方法。
  13. 前記半導体メモリ装置の前記メモリセルアレイの前記第1のページ(X)および前記第2のページ(W)に格納されているデータは、該データの論理アドレスを示す第2の所定部分を有し、
    前記メモリコントローラは、
    前記第1の所定部分が有効を示す前記第1のページ(X)のデータの前記第2の所定部分の第1の論理アドレスと物理アドレスである前記第1のページ(X)との対応関係をテーブルに登録し、
    前記テーブルにおいて、対応する物理アドレスを持たない第2の論理アドレスを検出し、前記第2のページ(W)に格納されているデータの前記第2の所定部分の内容と前記第2の論理アドレスとの排他的論理和を計算して、第3の論理アドレス(スワップパートナ)を算出し、
    前記テーブルから、前記第3の論理アドレス(スワップパートナ)に対応する前記第1のページ(X)を取得し、
    前記第1のページ(X)を指定した前記第1のコマンド(Tgl_R)を実行することを特徴とする請求項12記載の制御方法。
  14. 前記メモリコントローラは、前記インタフェースロジックを介して、前記メモリセルアレイの第4のページを指定した第4のコマンドであるリードコマンドを発行し、前記第4のページの前記第4のデータを読み出し、前記第4のコマンドに応答して、前記センスアンプは前記第4のページの第4のデータを前記メモリセルアレイから読み出し、前記データ選択回路は、読み出された前記第4のデータを前記バッファメモリに入力し、前記バッファメモリは前記第4のデータを格納し、
    前記メモリコントローラは、前記第4のデータに含まれる誤りビットのビットアドレスを指定した第5のコマンド(Tgl_S)を発行し、前記第5のコマンド(Tgl_S)に応答して、前記インタフェースロジックは、指定されたビットアドレスに対応したビット値を“1”とし、指定されないビットアドレスに対応したビット値を“0”とする第5のデータを生成し、前記データ選択回路は、前記バッファメモリに格納された前記第4のデータと生成された前記第5のデータとの排他的論理和を計算した第6のデータを前記バッファメモリに入力し、前記バッファメモリは入力した第6のデータを格納し、
    前記メモリコントローラは、第6のコマンド(Tgl_T2)を発行し、前記第6のコマンド(Tgl_T2)に応答して、前記制御回路は、前記バッファメモリの出力を前記ドライバに入力し、前記バッファメモリに格納した前記第6のデータを、前記メモリセルアレイの前記第4のページに書き込むように制御することを特徴とする請求項11記載の制御方法。
PCT/JP2011/052441 2010-07-27 2011-02-04 不揮発メモリ及び記憶装置 WO2012014505A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010168312A JP2012027991A (ja) 2010-07-27 2010-07-27 不揮発メモリ及び記憶装置
JP2010-168312 2010-07-27

Publications (1)

Publication Number Publication Date
WO2012014505A1 true WO2012014505A1 (ja) 2012-02-02

Family

ID=45529730

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/052441 WO2012014505A1 (ja) 2010-07-27 2011-02-04 不揮発メモリ及び記憶装置

Country Status (2)

Country Link
JP (1) JP2012027991A (ja)
WO (1) WO2012014505A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5853906B2 (ja) * 2012-08-24 2016-02-09 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP6213040B2 (ja) 2013-08-19 2017-10-18 富士通株式会社 半導体記憶装置および半導体記憶装置の制御方法
US9812215B2 (en) 2016-03-25 2017-11-07 Toshiba Memory Corporation Memory device that executes an erase operation for a nonvolatile memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003216506A (ja) * 2002-01-23 2003-07-31 Hitachi Ltd フラッシュメモリを搭載した記憶装置及び計算機
JP2004355689A (ja) * 2003-05-28 2004-12-16 Hitachi Ltd 半導体装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003216506A (ja) * 2002-01-23 2003-07-31 Hitachi Ltd フラッシュメモリを搭載した記憶装置及び計算機
JP2004355689A (ja) * 2003-05-28 2004-12-16 Hitachi Ltd 半導体装置

Also Published As

Publication number Publication date
JP2012027991A (ja) 2012-02-09

Similar Documents

Publication Publication Date Title
US9940045B2 (en) Address mapping table recovery upon power failure
US9189325B2 (en) Memory system and operation method thereof
US9552290B2 (en) Partial R-block recycling
US8493797B2 (en) Memory system and method having volatile and non-volatile memory devices at same hierarchical level
JP5066199B2 (ja) 半導体記憶装置
US8200925B2 (en) Data mirroring in serial-connected memory system
TW201923575A (zh) 運作中磁碟冗餘陣列同位計算
JP2021089733A (ja) ストレージ装置、及び該ストレージ装置の動作方法
US20160224419A1 (en) Device and method
CN114730598A (zh) 利用分区命名空间简缩ssd中的逻辑到物理表指针
CN110347530A (zh) 数据存储装置及其操作方法
WO2014013595A1 (ja) 半導体装置
US7310262B2 (en) Ferroelectric memory capable of continuously fast transferring data words in a pipeline
US9507710B2 (en) Command execution using existing address information
WO2015059811A1 (ja) 半導体装置
JP6342013B2 (ja) 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム
WO2012014505A1 (ja) 不揮発メモリ及び記憶装置
JP5820078B2 (ja) 記憶装置システム
KR20130044694A (ko) 메모리 시스템 및 그 데이터 기록 재생 방법
WO2021230003A1 (ja) メモリモジュール
US11281381B2 (en) Storage node of distributed storage system and method of operating the same
US10922025B2 (en) Nonvolatile memory bad row management
TWI500036B (zh) 非揮發性儲存裝置及其控制方法
US20200183613A1 (en) Storage device, controller and method for operating thereof
JP6145227B2 (ja) 半導体装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11812101

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11812101

Country of ref document: EP

Kind code of ref document: A1