JP2011165063A - 半導体記憶装置 - Google Patents

半導体記憶装置 Download PDF

Info

Publication number
JP2011165063A
JP2011165063A JP2010029114A JP2010029114A JP2011165063A JP 2011165063 A JP2011165063 A JP 2011165063A JP 2010029114 A JP2010029114 A JP 2010029114A JP 2010029114 A JP2010029114 A JP 2010029114A JP 2011165063 A JP2011165063 A JP 2011165063A
Authority
JP
Japan
Prior art keywords
data
semiconductor memory
written
page
unit
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2010029114A
Other languages
English (en)
Other versions
JP5066199B2 (ja
Inventor
Shigehiro Asano
滋博 浅野
Kenichiro Yoshii
謙一郎 吉井
Kazuhiro Fukutomi
和弘 福冨
Shinichi Sugano
伸一 菅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2010029114A priority Critical patent/JP5066199B2/ja
Priority to US12/888,822 priority patent/US8448034B2/en
Priority to EP11153978A priority patent/EP2360592B1/en
Priority to TW100104483A priority patent/TWI428737B/zh
Priority to KR1020110012562A priority patent/KR101265410B1/ko
Priority to CN201110036760.4A priority patent/CN102163458B/zh
Publication of JP2011165063A publication Critical patent/JP2011165063A/ja
Application granted granted Critical
Publication of JP5066199B2 publication Critical patent/JP5066199B2/ja
Priority to US13/868,620 priority patent/US8788900B2/en
Priority to US14/313,652 priority patent/US9165685B2/en
Priority to US14/313,782 priority patent/US9136020B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

【課題】半導体記憶チップへの書き込み回数が増大するのを抑制しつつ、半導体記憶チップの故障に対応して信頼性を向上可能な半導体記憶装置を提供する。
【解決手段】半導体記憶装置50は、複数の半導体記憶素子58A〜58Fを備え、ホストからのデータの書き込みの要求に応じて、ページ単位の書き込み対象データを半導体記憶素子58A〜58Eに各々書き込み、冗長情報を半導体記憶素子58Fに書き込むことによって、誤り訂正符号を構成する。
【選択図】 図1

Description

本発明は、半導体記憶装置に関する。
半導体記憶チップでは、確率的な故障が起こることが知られている。故障には、α線によるソフトエラーなどメモリセルの故障と、読み出し回路やIOバッファの故障等のより大きな単位の故障との二つの場合が存在する。メモリセルの故障に対しては、従来はECC(Error Correcting Code)などの冗長情報をデータに付加することで、定められた単位内で定められた誤り数以内であれば、故障により誤ったデータを訂正できるように構成されていた。読み出し回路やIOバッファの故障などのより大きな単位の故障では、誤り数が極めて多くなるため、現実的な回路規模で誤り訂正を実装することは困難であった。
一方、HDD(Hard Disk Drive)を多数採用するシステムでは、HDDの故障が問題となり、複数のHDDで誤り訂正符号を構成することで、HDD単位の故障に対応するRAID(Redundant Array of Inexpensive Disks)が広く知られている(例えば非特許文献1参照)。この技術では、複数のHDDにデータを書き込み、これらのデータを用いた冗長情報を1つのHDDに記憶させることで、複数のHDDにより誤り訂正符号を構成する。また、複数のHDDが故障した時にRAIDでデータを復元する方法として、Reed Solomon符号を使用する方法も知られている(例えば非特許文献2参照)。
A Case for Redundant Arrays of Inexpensive Disks (RAID) UC Berkeley Technical Report UCB/CSD-87-391 1987年 A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems James S. Plank Technical Report CS-96-332 Department of Computer Science University of Tennessee
しかし、半導体記憶チップをメモリチップとして多数用いた半導体記憶装置では、メモリセルの故障を修復するための誤り訂正符号(ECC)を用いても、メモリチップの故障を防ぐことができず、結果的に、半導体記憶装置の故障となる恐れがある。メモリチップの故障に対して、HDDと同様に複数のメモリチップで誤り訂正符号を構成することは考えられる。しかし、この方法では、書き込みの度に、冗長情報が書き込まれたメモリチップに対して冗長情報の更新のための書き込みが発生する。具体的には、HDDのRAIDでは、例えば、データを書き込む4つのHDD A、B、C、Dと1つの冗長情報を書き込むHDD Pとで誤り訂正符号を構成したとき、以下のように書き込みが行われる。仮にA、B、C、Dの内、Aへのデータの書き込みが発生すると、冗長情報であるPも更新するために書き込みを行う。
ところで、半導体記憶チップとして、半導体記憶装置に用いられるNAND型の半導体記憶素子(NANDメモリという)はビット当たりの面積が小さく、不揮発であることからSSD(Solid State Drive)のメモリチップとして広く用いられているが、書き込み回数に制限があることが知られている。このため、書き込み回数を低減させることが、半導体記憶装置の設計寿命を長くするために必須の要件となっている。
このようなNANDメモリをHDDの代わりに使ってRAIDの技術を適用させた場合も、データの書き込み1回当たり、冗長情報Pも含めると2回の書き込みが起こってしまう。更に、B、C、Dへデータの書き込み時にも冗長情報Pへの書き込みが起こることから、冗長情報PへはA、B、C、Dに対するデータの書き込みの4倍の書き込みが起こることになる。冗長情報Pのみが4倍疲労するのを防ぐためには、RAIDの技術のうちRAID5を採用することが考えられる。このRAID5では、冗長情報がPに固定されず、A、B、C、D、Pの5つが冗長情報に用いられる。このため、1つのNANDメモリのみが他のNANDメモリより疲労することを防ぐことができる。しかし、1回の書き込みでデータ部分と冗長情報との2回の書き込みが発生することは同様であるため、半導体記憶装置の設計寿命が短くなってしまうという問題があることには変わりがない。
本発明は、上記に鑑みてなされたものであって、半導体記憶チップへの書き込み回数が増大するのを抑制しつつ、半導体記憶チップの故障に対応して信頼性を向上可能な半導体記憶装置を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、複数の半導体記憶チップを備え、情報処理装置から書き込みが要求されたデータを前記半導体記憶チップへ書き込む半導体記憶装置であって、前記データは、1つ以上の所定の単位の第1データを有し、所定の単位毎の前記第1データと、所定の数の前記第1データを用いて計算され当該所定の数の第1データの誤りを訂正するために使われる冗長情報とを異なる半導体記憶チップに各々書き込む制御部と、前記所定の数の前記第1データ及び前記冗長情報を関連付ける第1情報と、前記第1データ及び前記冗長情報が書き込まれる前記半導体記憶素子内の複数の記憶領域を各々特定する第2情報とを含む第3情報を記憶する記憶部とを備えることを特徴とする。
本発明によれば、半導体記憶チップへの書き込み回数が増大するのを抑制しつつ、半導体記憶チップの故障に対応して信頼性を向上可能になる。
一実施の形態の半導体記憶装置50のハードウェア構成を例示する図。 コンパクションを説明するための概念図。 半導体記憶装置50において実現される機能を例示する図。 正引きテーブルのデータ構成を例示する図。 ビットベクタテーブルのデータ構成を例示する図。 書き込み対象データを例示する図。 ラウンドロビンにより行う書き込みを説明するための図。 誤り訂正符号の構成を説明するための図。 書き込み対象データの書き込みを行う処理の手順を示すフローチャート。 書き込み対象データが書き込まれていく様子を時刻と共に例示する図。 データの読み出しを行う処理の手順を示すフローチャート。 異常の発生したデータを復元する様子を示す図。 コンパクションの処理の手順を示すフローチャート。
以下に添付図面を参照して、この発明にかかる半導体記憶装置の実施の形態を詳細に説明する。
まず、本実施の形態にかかる半導体記憶装置のハードウェア構成について図1を用いて説明する。半導体記憶装置50は、プロセッサ51と、BootROM(Reed Only Memory)52と、SATA/SASインタフェース55と、メモリコントローラ53と、DRAM(Dynamic Random Access Memory)54と、NANDコントローラ57A〜57Fと、半導体記憶素子(NAND)58A〜58Fと、これらを接続するバス56とを備える。尚、NANDコントローラ57A〜57Fを各々区別する必要がない場合、単に、NANDコントローラ57と記載する場合がある。また、半導体記憶素子58A〜58Fを各々区別する必要がない場合、単に、半導体記憶素子58と記載する場合がある。
SATA/SASインタフェース55は、プロセッサ51の制御の下、半導体記憶装置50の上位装置であるホストとの通信を制御する。BootROM52は、電源の投入時に実行されるプログラムを記憶する。各種システムプログラムは、半導体記憶素子58に記憶されている。プロセッサ51は、電源の投入時にBootROM52からプログラムを読み出してこれを実行し、当該プログラムに従って、半導体記憶素子58に記憶された各種システムプログラムをDRAM54に転送し、DRAM54上のシステムプログラムを実行することにより、半導体記憶装置50全体を制御して、各種機能を実現させる。具体的には、プロセッサ51は、SATA/SASインタフェース55を介して、ホストから送信されたコマンドを解釈し、当該コマンドに応じて、半導体記憶素子58へのデータの書き込みや半導体記憶素子58からのデータの読み出しを制御する。
メモリコントローラ53は、DRAM54の制御を行う。DRAM54は、各種データや各種プログラムを記憶する。本実施の形態においては、DRAM54は、後述する正引きテーブルと、ビットベクタテーブルとを記憶する。NANDコントローラ57は、半導体記憶素子58の制御を行うものであり、誤り訂正回路を含む。
半導体記憶素子58は、半導体チップに相当し、例えば、NAND型のフラッシュメモリで用いられる記憶素子である。このような半導体記憶素子58は、ランダムな読み書きができず、ページと呼ばれる単位で読み書きが可能で、複数ページがまとまってブロックと呼ばれる単位の記憶領域を構成する。ここでは、1ページ4KB、64ページで1ブロックとする。1つの半導体記憶素子58はこのブロックが複数集まって構成される。尚、本実施の形態においては、図1に示されるように、半導体記憶素子58の数を6つとしている。これらの各半導体記憶素子58A〜58Fに対して各々1つのチャネル(CH0〜CH5)を割り当て、このうち1つのチャネル(CH5とする)を、冗長情報を書き込むためのチャネルとして割り当てて、残りのチャネル(CH0〜CH4)を、ホストから書き込みが要求されたデータを書き込むためのチャネルとして割り当てて、チャネルCH0〜CH5の各ページを1つの組として誤り訂正符号を構成する。チャネルCH0〜CH4は、半導体記憶素子58A〜58Eに各々対応し、チャネルCH5は、半導体記憶素子58Fに対応する。尚、後述するように、半導体記憶装置50は、ホストから書き込みが要求されたデータがページのサイズより大きい場合にはこれを複数に分割し、分割したページ単位のデータ(分割データという)を各チャネルCH0〜CH4に割り当てて、書き込みを行う。即ち、本実施の形態の基本構成においては、半導体記憶装置50は、書き込みが要求されたデータについて、所定の単位毎のデータと、当該所定の数のデータ(第1データ)を用いて計算され当該所定の数のデータの誤りを訂正するために用いられる冗長情報とを異なる半導体記憶素子58に各々書き込むことによって、所定の数のデータ及び冗長情報により誤り訂正符号を構成する。誤り訂正符号としては、例えば、パリティ符号を用いる。
ここで、半導体記憶素子58への書き込み方式について説明する。従来より、NAND型の半導体記憶素子では、追記方式が採用されている。この追記方式では、書き込みの前に、ブロックを消去する必要がある。ブロックの消去とは、ブロックを構成する全てのビットの値を「1」にすることである。半導体記憶装置50では、このような消去をブロック単位で行ない、消去済みのブロックに対してページ単位で書き込みを行う。即ち、NAND型の半導体記憶素子58においては、消去済みのブロックのうち書き込みがまだ行われていないページに対して順次書き込みが可能であり、既に書き込みが行なわれたページに対する上書きが不可能である。また、ホストからの要求に応じたデータの書き込みは、ホストで用いられる論理アドレス(Logical Block Address:LBA)で指定される。一方、半導体記憶素子58へのデータや冗長情報の書き込みは、半導体記憶素子58の物理的な記憶位置(物理アドレス(Physical Block Address:PBA)という)により、論理アドレスとは無関係に、ページの昇順に書き込みが行なわれる。この論理アドレスと物理アドレスとの対応関係は、後述する正引きテーブルに記憶される。そして、データの書き込み要求において指定された論理アドレスが再度指定されて新たなデータの書き込みがホストから要求されると、半導体記憶装置50は、消去済みのブロックの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。またこのとき、半導体記憶装置50は、上述した誤り訂正符号を構成しながら新たなデータ及び冗長情報の書き込みを行なう。
この追記方式において、書き込みを続けることにより、無効にされたページが増えてくると、半導体記憶素子58において書き込みを実現可能な容量(実現容量という)が少なくなってくる。そして、書き込みが可能な新規の消去済みのブロック、即ち、消去後に書き込みがまだ行なわれていないブロック(フリーブロックという)が少なくなり、誤り訂正符号を構成するブロックの組(論理ブロックという)の確保が不可能になった時点で書き込み不能となってしまう。これを防ぐために、半導体記憶装置50は、適当なタイミングでガベージコレクションを行なう。半導体記憶素子58において行なうガベージコレクションは、特にコンパクションという。図2は、コンパクションを説明するための概念図である。半導体記憶装置50は、無効にされたページを含むブロックのうち、無効にされていない物理アドレスに書き込まれたデータ(有効データという)を集めて新たにフリーブロックに書き直すことにより、有効データを移動させる。その後、半導体記憶装置50は、当該ブロックに対して消去を行うことにより、新たなフリーブロックを生成する。半導体記憶装置50は、このようなコンパクションを行なうことにより、書き込みが不能になったブロックが新たに書き込み可能になって、フリーブロックを確保することが可能になる。また、移動により有効データが書き込まれたブロックにおいても、書き込みがまだ行なわれていないページがあればそのページに新たに書き込みが可能である。
尚、コンパクションを行うためには少なくとも一つのフリーブロックが必要になるが、これは、NAND型の半導体記憶素子58において実装された容量(実装容量という)より、書き込みを実際に実現可能な容量が少ないことを意味している。本実施の形態においては、実装容量と実現容量との差を余裕容量と呼んでいる。余裕容量が小さい時は、半導体記憶装置50は、コンパクションを頻繁に行わなければならず、その性能に与えるインパクトが大きい。ところで、図2ではブロック単位のコンパクションの説明を行った。本実施の形態においては、論理ブロックを基本単位としているため、フリーブロックをチャネル毎に確保してこれらにより論理ブロックが構成されるようにし、コンパクションを論理ブロック毎に行うものとする。
次に、半導体記憶装置50において実現される機能について図3を用いて説明する。半導体記憶装置50は、ホストインタフェース部60と、バッファ制御部61と、アドレス変換部62と、CH振り分け部63と、コンパクション候補検出部64と、管理テーブル更新部65と、NAND制御部66A〜66Fと、データバッファ67と、コンパクションreadキュー68と、管理テーブル69とを有する。ホストインタフェース部60の機能は、プロセッサ51がプログラムを実行することと、SATA/SASインタフェース55の機能とにより実現される。アドレス変換部62と、CH振り分け部63と、管理テーブル更新部65と、コンパクション候補検出部64と、バッファ制御部61との各機能は、プロセッサ51がプログラムを実行することにより実現される。NAND制御部66A〜66Fの各機能は、NANDコントローラ57A〜57Fに各々対応しており、プロセッサ51がプログラムを実行することと、NAND制御部66A〜66Fに各々対応するNANDコントローラ57A〜57Fの機能とにより実現される。これらのNAND制御部66A〜66Fは、上述したチャネルCH0〜CH5が各々割り当てられた半導体記憶素子58A〜58Fに1対1対応しているが、これらを各々区別する必要がない場合には、単にNAND制御部66と記載する場合がある。データバッファ67と、コンパクションreadキュー68と、管理テーブル69とは、例えば、DRAM54上に記憶される情報である。
ホストインタフェース部60は、ホストと半導体記憶装置50との通信を制御するインタフェースである。ホストインタフェース部60は、ホストから送信されたコマンドを受信し、当該コマンドによって論理アドレスが指定されたデータの書き込みが要求されている場合、当該コマンド(writeコマンドという)を後述のアドレス変換部62に送る。その際、書き込みが要求されたデータのサイズがページのサイズ以下であれば、当該データを後述のバッファ制御部61に送り、当該データのサイズがページのサイズより大きい場合、当該データをページ単位に分割し、分割したデータ(分割データという)をバッファ制御部61に送る。これは論理アドレスと物理アドレスとの変換をページ単位で行っているためである。例えば、128KBのデータを4KBのデータ32個にホストインタフェース部60は分割する。尚、writeコマンドに応じてバッファ制御部61に送られるデータ又は分割データを、説明の便宜上、書き込み対象データと記載する。
また、ホストインタフェース部60は、ホストから送信されたコマンドによって論理アドレスが指定されたデータの読み出しが要求されている場合、読み出しが要求されたデータがページのサイズ以下であれば、当該コマンド(readコマンドという)をアドレス変換部62に送る。読み出しが要求されたデータがページのサイズより大きい場合、ホストインタフェース部60は、読み出す対象のデータがページ単位になるように読み出しを分解したコマンド(readコマンド)をアドレス変換部62に送る。このとき、ホストインタフェース部60は、ホストから送信されたコマンドにより指定された論理アドレスを用いて、読み出し対象の各データの論理アドレスを各々計算し、計算した各論理アドレスのデータの読み出しを要求するreadコマンドをアドレス変換部62に送る。そして、ホストインタフェース部60は、後述するバッファ制御部61によってデータバッファ67の指定の領域に記憶された読み出し対象のデータを読み出し、ホストに送信する。
管理テーブル69は、正引きテーブルと、ビットベクタテーブルとを含む。正引きテーブルとは、書き込み対象データ及び冗長情報を関連付けるための識別情報と、関連付けられた書き込み対象データ及び冗長情報が書き込まれる半導体記憶素子58内の複数の記憶領域を各々特定する領域特定情報とを対応付けて記憶するものであり、書き込み対象データの論理アドレスと、半導体記憶素子58において当該書き込み対象データの書き込まれる物理的な記憶位置を示す物理アドレスとの対応関係を示す。このような正引きテーブルは、ホストから指定された論理アドレスに対応するデータが記憶されている半導体記憶装置58上の位置を示す物理アドレスを特定する際に用いられる。図4は、正引きテーブルのデータ構成を例示する図である。同図に示されるように、正引きテーブルは、LBAテーブルと、論物変換テーブルとを有する。LBAテーブルのエントリは、論理アドレスをインデックスとして、チャネルの番号と、ページに付与されたページ番号と、当該データが記憶されている論理ブロックに付与された論理ブロック番号とから構成される。各書き込み対象データの論理アドレスは、ホストからのデータの書き込みの要求において指定される論理アドレスに基づいて各々計算される。
論理ブロック番号は、書き込み対象データ及び冗長情報を関連付けるための識別情報であり、例えば、論理ブロックの生成順に付与される番号である。チャネルの番号は、ここでは、CH0〜CH4とし、当該論理アドレスに対応するデータが記憶されている物理ブロックのある半導体記憶素子58がいずれのチャネルに接続されているかを示す。そしてページ番号は、当該論理アドレスに対応するデータが、論理ブロック番号とチャネル番号で特定される物理ブロックの中のどのページに記憶されているかを示す。尚、ページ番号としては、例えば、物理アドレスの順に付与されるものであっても良いし、ページの物理アドレス自体が付与されても良い。
論物変換テーブルは、書き込み対象データ及び冗長情報が書き込まれる半導体記憶素子58内の複数の記憶領域を各々特定する領域特定情報であり、論理ブロック番号と、その論理ブロックに関連付けられた各チャネルの各物理ブロックとを対応付けて記憶する。論物変換テーブルには、論理ブロック番号をインデックスとして、当該論理ブロックに関連付けられた各チャネルの物理ブロックのアドレス(物理ブロックアドレス)が記憶される。このような構成において、ある論理アドレスに対応するLBAテーブルのエントリに記憶されていた論理ブロック番号をインデックスとし、そのインデックスで、当該論理ブロックに関する論物変換テーブルのエントリを特定する。次に、当該論物変換テーブルのエントリに記憶されている物理ブロックの中から、当該LBAテーブルのエントリに記録されていたチャネル番号のチャネルに接続されている半導体記憶素子58の物理ブロックを特定する。そして、当該LBAテーブルのエントリに含まれるページ番号によって、当該論理アドレスに対応するデータが書き込まれているページを特定する。
尚、上述したように、チャネルCH0〜CH4の各ページには、ホストから書き込みが要求されたデータについて、ページ単位で書き込みが行なわれ、チャネルCH5には、誤り訂正符号を構成するために付加される冗長情報が書き込まれる。このため、論物変換テーブルの各エントリに記録されるチャネルCH5の物理アドレスの記憶領域には、冗長情報が各々書き込まれている。この冗長情報に対応する論理アドレスは存在しないため、冗長情報に関するエントリはLBAテーブルには記録されない。冗長情報に関する情報は、論物変換テーブルのエントリに記録される。正引きテーブルは、書き込み対象データや冗長情報が半導体記憶素子58に書き込まれる度に、更新される。どのように更新されるかは後述する。
次に、ビットベクタテーブルについて図5を用いて説明する。ビットベクタテーブルは、論理ブロックに関連付けられた物理ブロックのうち、書き込み対象データが書き込まれるチャネルCH0〜CH4の各物理ブロックについて、当該物理ブロックに含まれるページのうち有効なデータが書き込まれているページ(有効ページという)がどのページかを、物理ブロック順に2値で示すテーブルである。ページ毎に2値を示すものをビットベクタという。ビットベクタの値が「1」であれば、そのページが有効ページであることを示し、「0」であれば、そのページが有効ページではない(無効である)ことを示す。初期状態においては、ビットベクタの値は全て「0」である。
本実施の形態においては、論理ブロックに関連付けられた物理ブロックのうち、書き込
み対象データが書き込まれるチャネルはチャネルCH0〜CH4の5つであり、1物理ブロック当たり64ページとすると1論理ブロック当たりでは320ページとなるので、対応するビットベクタは、1論理ブロック当たり320個となる。同図に示されるように、このようなビットベクタテーブルは、上述した論理ブロック番号をインデックスとして、これと、当該論理ブロック番号が付与された論理ブロックに関連付けられたチャネルCH0〜CH4の各物理ブロックに各々含まれる各ページに対するビットベクタと、カウンタとを、論理ブロック毎に含む。尚、ここでは、論物変換テーブルのインデックスと、ビットベクタテーブルのインデックスとが一致するように、論物変換テーブル内のエントリとビットベクタテーブル内のビットベクタが予め配置されるものとする。同図においては、左から、チャネルCH0の1番目のページ、2番目のページ、…、チャネルCH0の最後のページ、チャネルCH1の1番目のページ、2番目のページ…、チャネルCH1の最後のページ、…、というように、チャネルCH0〜CH4の各物理ブロックの各ページの順にビットベクタが配置される。カウンタは、値が「1」であるビットベクタの総数を示す。ビットベクタの値が「1」であるページは有効ページであるから、このカウンタは、論理ブロック内の有効ページの数を示す(以降、有効ページ数カウンタと呼ぶ)。このような構成において、ビットベクタテーブルは、ホストからのデータの書き込みの要求がある度に、更新される。どのように更新されるかは後述する。
図3の説明に戻る。アドレス変換部62は、ホストインタフェース部60からコマンドを受け取り、当該コマンドがreadコマンドである場合、当該readコマンドで指定された論理アドレスを用いて管理テーブル69のうち正引きテーブルを参照し、当該readコマンドで読み出しが要求されたデータが書き込まれているチャネル及びページの物理アドレスを特定する。アドレス変換部62は、当該チャネル及び物理アドレスを指定してデータの読み出しを要求するコマンドを、CH振り分け部63を介してNAND制御部66に送る。一方、ホストインタフェース部60から受け取ったコマンドがwriteコマンドである場合、アドレス変換部62は、当該writeコマンドを後述のCH振り分け部63に送る。
また、アドレス変換部62は、後述のコンパクションreadキュー68に記憶されたコンパクションreadコマンドに応じて、正引きテーブルを参照して、当該コンパクションreadコマンドによって物理アドレスが指定された有効ページのデータ(有効データ)の読み出しを要求するコマンドを、当該有効のある物理ブロックを含む半導体記憶素子58が接続されたチャネルに対応するNAND制御部66に送る。当該有効データは、NAND制御部66を介して半導体記憶素子58から読み出され、バッファ制御部61を介してデータバッファ67に記憶される。アドレス変換部62は、この有効データの書き込みを要求するコマンド(コンパクションwriteコマンドという)をCH振り分け部63に送る。
CH振り分け部63は、アドレス変換部62からコマンドを受け取り、当該コマンドがwriteコマンドである場合、書き込み対象データを書き込む対象のチャネルを決定する。例えば、CH振り分け部63は、冗長情報を書き込むチャネル(ここではチャネルCH5)以外のチャネルで、4KB毎にラウンドロビンにより書き込みを行うようにし、ラウンドロビンの順番に応じて、書き込む対象のチャネルを決定する。そして、CH振り分け部63は、書き込み対象データの書き込みを要求するコマンドを、決定したチャネルに対応するNAND制御部66に送る。一方、アドレス変換部62からのコマンドによって、チャネル及び物理アドレスが指定されたデータの読み出しが要求されている場合、指定されたチャネルに対応するNAND制御部66に対して物理アドレスを指定してデータの読み出しを要求するコマンドを送る。また、アドレス変換部62から受け取ったコマンドがコンパクションwriteコマンドである場合、CH振り分け部63は、ラウンドロビンの順番に応じて、書き込む対象のチャネルを決定し、有効データの書き込みを要求するコマンドを、決定したチャネルに対応するNAND制御部66に送る。
NAND制御部66は、CH振り分け部63からコマンドを受け取り、当該コマンドに従って、対応する半導体記憶素子58にアクセスする。具体的には、当該コマンドによって、データの書き込みが要求されている場合、NAND制御部66は、バッファ制御部61を介して書き込み対象データを取得して、当該書き込み対象データを半導体記憶素子58に書き込む。この書き込みにおいて、NAND制御部66は、対応する半導体記憶素子58の消去済みのブロックのうち書き込みがまだ行なわれていないページ毎に書き込みの位置を順次示すよう追記ポインタを設定し、追記ポインタによって示される位置のページに書き込み対象データを書き込み、その後、書き込みを行なったページに続く次のページであって書き込みがまだ行われていないページの位置を示すよう追記ポインタを更新する。従って、追記ポインタは順次次の書き込み位置を示すようにその値が変化する。例えば、追記ポインタは、各チャネルにおいて15ビットの物理アドレスによりブロックが識別され、ブロック内に64ページある場合、合計15+6=21ビットで構成される。
ここで、書き込み対象データ及び冗長情報のデータ構成について説明する。NAND制御部66は、書き込み対象データ自体の誤りを検出して訂正するための誤り訂正符号(ページECCという)及びwriteコマンドによって指定された論理アドレスを当該書き込み対象データに付加する。尚、ページECCには、データの誤りを検出するCRC符号等の符号と、データの誤りを訂正するECC符号等の符号とが含まれるものとする。ページECCにCRC符号も含む理由は、ECC符号によりデータの誤りを訂正できない場合は誤訂正の可能性もあるからである。図6は、冗長情報が付加された書き込み対象データを例示する図である。上述のように決定された各チャネルの半導体記憶素子58において、NAND制御部66は、このようなページECC及び論理アドレスを付加した書き込み対象データを、上述のように決定された各チャネルの半導体記憶素子58内の追記ポインタにより示されるページに書き込む。尚、書き込み対象データはページ単位の大きさであるが、半導体記憶素子58のページサイズは、書き込み対象データにページECC及び論理アドレスが付加された全体の大きさに相当するものとする。また、各分割データの論理アドレスは、writeコマンドによって指定された論理アドレスに基づいてNAND制御部66が各々計算する。一方、誤り訂正符号を構成するために計算された冗長情報が書き込まれるチャネルCH5に対応するNAND制御部66Fは、冗長情報自体の誤りを検出して訂正するためのページECCを当該冗長情報に付加する。そして、NAND制御部66Fは、ページECCを付加した当該冗長情報を、追記ポインタにより示される半導体記憶素子58F内のページに書き込む。
次に、複数の分割データが書き込み対象データとしてラウンドロビンによりチャネルCH0〜CH5で書き込みが行われる様子について説明する。図7は、ラウンドロビンにより行う書き込みを説明するための図である。尚、図の簡略化のため、分割データに対して付加された論理アドレスの図示を省略している。同図に示されるように、時刻T1でチャネルCH0に対して最初の分割データD1の書き込みが行われ、時刻T2でチャネルCH1に対して次の分割データD2の書き込みが行われるというように、チャネルCH0〜CH4まではラウンドロビンで順に分割データの書き込みが行われる。尚、時刻T5で、チャネルCH4への分割データD5の書き込みが行われる際には、時刻T1でチャネルCH0に書き込まれた分割データD1、時刻T2でチャネルCH1に書き込まれた分割データD2、時刻T3でチャネルCH2に書き込まれた分割データD3、時刻T4でチャネルCH3に書き込まれた分割データD4及び時刻T5でチャネルCH4に書き込まれた分割データD5のパリティPが冗長情報として計算され、当該冗長情報Pの書き込みがチャネルCH5に対して行われる。更なる分割データの書き込みの際には、チャネルCH0から順にランドロビンで書き込みが行われる。このように、ラウンドロビンにより分割データの書き込みが行われることにより、書き込みがチャネル間で略均等になる。尚、同図の例では、時刻の経過と共に各チャネルに順に書き込みを行う様子が図示されているが、これに限らず、2つ以上のチャネルに同時に書き込みを行うようにしても良い。
次に、誤り訂正符号の構成について図8を用いて説明する。尚、説明の便宜上、同図においては、チャネルCH0〜CH4に各々書き込まれる分割データに付加される論理アドレスの図示を省略している。同図に示されるように、チャネルCH0〜CH4の各書き込み対象データに対して、チャネルCH5に対応するNAND制御部66Fは、オフセットが等しい位置のバイト同士で排他的論理和を計算し、この値を冗長情報として、チャネルCH5の半導体記憶素子58Fにおいて上述のオフセットが等しい位置に書き込む。即ち、チャネルCH0〜CH5においてオフセットが等しい位置のバイト同士によって誤り訂正符号が構成される。
図3の説明に戻る。また、NAND制御部66は、CH振り分け部63から受け取ったコマンドによって、物理アドレスが指定されたデータの読み出しが要求されている場合、当該物理アドレスを用いて半導体記憶素子58内の当該物理アドレスに対応する位置からデータを読み出してこれをバッファ制御部61に送る。尚、NAND制御部66は、半導体記憶素子58から読み出した当該データに誤りがある場合、これを検出して訂正する。データの誤りを検出して訂正する方法については後述する。また、NAND制御部66は、アドレス変換部62から受け取ったコマンドによって、物理アドレスが指定された有効ページのデータ(有効データ)の読み出しが要求されている場合、当該物理アドレスを用いて半導体記憶素子58内の当該物理アドレスに対応するページに書き込まれたデータを読み出して、これをデータバッファ67に記憶させる。また、CH振り分け部63から受け取ったコマンドによって、有効データの書き込みが要求されている場合、NAND制御部66は、バッファ制御部61を介して書き込み対象の有効データを取得して、当該有効データを半導体記憶素子58に書き込む。
コンパクション候補検出部64は、管理テーブル69に含まれるビットベクタテーブルを参照して、コンパクションの候補とする論理ブロックを決定し、当該論理ブロックのうち有効ページの物理アドレスを指定して当該有効ページの読み出しを要求するコマンド(コンパクションreadコマンドという)をコンパクションreadキュー68に送る。
データバッファ67は、書き込み対象データを記憶するバッファである。コンパクションreadキュー68は、コンパクションの際に有効ページの読み出しを要求するコマンドを記憶する先入れ先出し型のバッファである。
バッファ制御部61は、データバッファ67を複数の領域として管理し、コマンドに対応したデータを記憶させる領域を管理する。具体的には、バッファ制御部61は、writeコマンドに応じてホストインタフェース部60から送られた書き込み対象データをデータバッファ67に記憶させ、CH振り分け部63により書き込み対象として決定されたチャネルに対応するNAND制御部66に該当の書き込み対象データを送る。当該書き込み対象データは、NAND制御部66を介して半導体記憶素子58に書き込まれる。また、バッファ制御部61は、readコマンドに応じて、NAND制御部66から送られたデータをデータバッファ67の指定の領域に記憶させ、その後ホストインタフェース部60に送る。当該データはホストインタフェース部60を介してホストに送信される。また、バッファ制御部61は、コンパクションreadコマンドに応じて、NAND制御部66を介して半導体記憶素子58から読み出されたデータをデータバッファ67に記憶させる。
管理テーブル更新部65は、論理アドレスが指定されたデータの書き込みを要求するコマンド(writeコマンド)がホストから受信された場合、正引きテーブルを参照すると共に、ビットベクタテーブルを更新し、更に、正引きテーブルを更新する。具体的には、管理テーブル更新部65は、まず、正引きテーブルを参照して、当該論理アドレスに対応する物理アドレス、即ち、当該論理アドレスに対応するデータがどの物理ブロックのページに書き込まれているかを検索する。当該論理アドレスに対応する物理アドレスが正引きテーブルに記憶されていない場合は、当該論理アドレスへのデータの書き込みが今回まで行なわれていないことになる。この場合、管理テーブル更新部65は、ビットベクタテーブル内の、書き込み対象データを書き込むページに対応するビットベクタの値を「1」にする。書き込み対象データを書き込むページは、追記ポインタにより示される。また、管理テーブル更新部65は、当該ページの存在する物理ブロックが関連付けられた論理ブロックの有効ページ数カウンタの値を1インクリメントする。
一方、管理テーブル更新部65が正引きテーブルを参照したときに当該論理アドレスに対応する物理アドレスが正引きテーブルに存在する場合、当該論理アドレスに対応するデータの書き込みが以前に行なわれていることになる。この場合、今回のwriteコマンドにより、以前に書き込みが行なわれたデータを無効にする必要がある。このため、管理テーブル更新部65は、writeコマンドで指定された論理アドレスで参照した正引きテーブルのエントリに記憶されている物理アドレスのページに対応するビットベクタの値を「0」にする。あわせて管理テーブル更新部65は、当該ページの存在する物理ブロックが関連付けられたる論理ブロックの有効ページ数カウンタの値を1デクリメントする。また、管理テーブル更新部65は、書き込み対象データを書き込むページに対応するビットベクタの値を「1」にし、当該ページの存在する物理ブロックが関連付けられた論理ブロックの有効ページ数カウンタの値を1インクリメントする。このようにデータの書き込みが行なわれる度に更新することで、ビットベクタテーブルと有効ページ数カウンタとは有効ページの位置及びその数を常に示している。最後に管理テーブル更新部65は、当該論理アドレスに対応する正引きテーブルのエントリに、書き込み対象データを書き込む先の物理アドレスを記録する。
次に、本実施の形態にかかる半導体記憶装置50の行う処理の手順について説明する。まず、ホストからのwriteコマンドに応じて半導体記憶装置50が半導体記憶素子58に書き込み対象データの書き込みを行う処理の手順について図9を用いて説明する。尚、半導体記憶装置50は、書き込みを始める前には、各チャネルにおいてフリーブロックを各々予め確保しておく。そして、半導体記憶装置50は、論理アドレスが指定されたデータの書き込みを要求するwriteコマンドをホストから受信すると(ステップS1)、各チャネルにおいて各々1つのフリーブロックを選択して、チャネルCH0〜CH5の各フリーブロックを関連付けた論理ブロックを構成する。そして、半導体記憶装置50は、当該論理ブロックに対して論理ブロック番号を付与して、当該論理ブロック番号をインデックスとして、その論理ブロックと関連付けられたチャネル毎の各物理ブロックの物理アドレスを論物変換テーブルに記録する。このとき、半導体記憶装置50は、論物変換テーブルのインデックスで当該論理ブロックに関連付けられた各物理ブロックのビットベクタが参照できるように、論物変換テーブルエントリやの並び順や、論物変換テーブルエントリ内での各チャネルの物理ブロックの物理アドレスの並び順、そしてビットベクタテーブル内のビットベクタを配置する。そして、半導体記憶装置50は、論理ブロックに関連付けられた各物理ブロックの物理アドレスと共に、各物理ブロックの書き込み先のページを示す追記ポインタをチャネル毎に設定する。書き込みを始める前には、半導体記憶装置50は、各チャネルの先頭の物理ブロックの1番目のページを示すように各チャネルの追記ポインタを設定する。
そして、半導体記憶装置50は、writeコマンドにより書き込みが要求されたデータのサイズがページのサイズ以下であるか否かを判断する(ステップS2)。当該データのサイズがページのサイズ以下である場合(ステップS2:YES)、半導体記憶装置50は、当該データ(書き込み対象データ)をデータバッファ67に記憶させる(ステップS4)。一方、writeコマンドにより書き込みが要求されたデータのサイズがページのサイズより大きい場合(ステップS2:NO)、半導体記憶装置50は、当該データをページ単位で分割し(ステップS3)、分割したデータ(分割データ:書き込み対象データ)をデータバッファ67に記録する(ステップS4)。
そして、半導体記憶装置50は、writeコマンドにより指定された論理アドレスに基づいて正引きテーブルを参照して、書き込み対象データの論理アドレスに対応する物理アドレスが既に記憶されている場合、当該物理アドレスを古い物理アドレスとして例えばDRAM54に記憶させる(ステップS5)。また、半導体記憶装置50は、書き込み対象データを書き込むチャネルをラウンドロビンにより決定し(ステップS6)、決定した各チャネルの半導体記憶素子58において追記ポインタで示されるページに、ページECC及び論理アドレスを各々付加した各書き込み対象データを書き込む(ステップS7)。そして、半導体記憶装置50は、各チャネルに関して、書き込み対象データを書き込んだページに続く次のページであって書き込みがまだ行われていないページを示すよう追記ポインタを更新する(ステップS8)。
図10は、チャネルCH0について、分割データが書き込み対象データとして書き込まれていく様子を時刻毎に示した図である。まず、時刻t0では、フリーブロックが確保されている状態が示されている。時刻t1では、最初の分割データD1が、時刻t0で確保されたフリーブロックの最初(先頭又は最後尾)のページに書き込まれ、時刻t2では、ラウンドロビンによりチャネルCH0に新たに決定された分割データD6が2番目のページに書き込まれる。同様に、時刻t3では、3番目のページに分割データD11が書き込まれ、時刻t4では、4番目のページに分割データD16が書き込まれる。このように、分割データを書き込むページは、論理アドレスとは無関係に、ブロック内の昇順に決定される。そして追記ポインタは、この順に書き込むページを示すように、書き込みが行われる度に設定される。本実施の形態においては、ラウンドロビンで各チャネルへの書き込みが均等に行われるため、図7で示されるように、各チャネルにおいて追記ポインタが示すページの番号は、最大で1の差である。そして、論理ブロックの最後のページに書き込みが終了したときには、各チャネルの追記ポインタの示すページの番号は、同じになる。
以上のように、ホストからのwriteコマンドにより指定された論理アドレスがどのような値であっても、書き込み対象データを書き込むページの物理アドレスが一定の順序で割り当てられ、当該ページにデータの書き込みが行なわれる。
図9の説明に戻る。書き込み対象データの書き込みに伴って、半導体記憶装置50は、書き込み対象データの論理アドレスと、書き込み対象データを書き込んだページの物理アドレスとの対応関係を、図4に例示した正引きテーブルに記録する(ステップS9)。書き込み対象データが分割データである場合、半導体記憶装置50は、各分割データの物理アドレスを、writeコマンドにより指定された論理アドレスに基づいて各々計算する。分割データは、ページ単位であるから、指定された論理アドレスに対してページのサイズを順次加算した値を各分割データの論理アドレスとして半導体記憶装置50は計算する。そして、半導体記憶装置50は、論理アドレスと、書き込み対象データを各々書き込んだ各チャネルの物理ブロックが関連付けられた論理ブロックの論理ブロック番号と、書き込み対象データを今回書き込んだチャネルの番号及びページ番号とを、LBAテーブルに記録する。上述の例では、ページ番号は、更新する前の追記ポインタの下位6ビットにより示されるから、ページ番号にはこの値を用いれば良い。半導体記憶装置50は、書き込み対象データの書き込みを行う度、このように正引きテーブルを更新する。
更に、半導体記憶装置50は、ビットベクタテーブルを参照して、ステップS5でDRAM54に記憶させた古い物理アドレスのページに対応するビットベクタの値を「0」にし、当該ページの存在する物理ブロックが関連付けられた論理ブロックの有効ページ数カウンタの値を1デクリメントする(ステップS10)。古い物理アドレスとは、即ち、ステップS10で受信されたwriteコマンドが指定する論理アドレスで、以前にデータが書き込まれたページを示している。このため、当該ページに書き込まれたデータを無効にするため、ビットベクタの値を「0」にして、当該ページの存在する物理ブロックが関連付けられた論理ブロックの有効ページの数カウンタの値を1つ減らしている。また、半導体記憶装置50は、ビットベクタテーブルにおいて、ステップS7で書き込み対象データを書き込んだページに対応するビットベクタの値を「1」にし、当該ページの属する論理ブロックの有効ページ数カウンタの値を1インクリメントする(ステップS11)。以上のようにして、半導体記憶装置50は、書き込み対象データの書き込みに伴って、ビットベクタテーブルを更新する。
尚、ステップS7において、半導体記憶装置50は、チャネルCH0〜CH4への書き込み対象データの書き込みが一巡すると、チャネルCH0〜CH4の各書き込み対象データにおいて、オフセットが等しい位置のバイト同士で排他的論理和を計算し、この値を、チャネルCH5において上述のオフセットが等しい位置に書き込むことにより冗長情報を書き込む。
そして、追記ポインタが全てのチャネル(CH0〜CH5)でブロックの最後に達して、論理ブロックに新たな書き込みを行うことができなくなった場合、半導体記憶装置50は、新たな論理ブロックを構成する。論理ブロックを構成する方法は、上述の通りである。新たな論理ブロックへの分割データ及び冗長情報の書き込みについても上述の通りである。
次に、ホストからのreadコマンドに応じて半導体記憶装置50が半導体記憶素子58からデータの読み出しを行う処理の手順について図11を用いて説明する。半導体記憶装置50は、論理アドレスが指定されたデータの読み出しを要求するreadコマンドをホストから受信すると(ステップS20)、readコマンドにより読み出しが要求されたデータのサイズがページのサイズ以下であるか否かを判断する(ステップS21)。当該データのサイズがページのサイズ以下である場合(ステップS21:YES)、半導体記憶装置50は、readコマンドにより指定された論理アドレスを使って正引きテーブルのLBAテーブルを参照し、論理ブロック番号を特定する。次に、半導体記憶装置50は、特定した論理ブロック番号を使って論物変換テーブルを参照して、読み出しの対象のチャネル、物理ブロック及びページを特定する(ステップS23)。そして、半導体記憶装置50は、特定したチャネルに対応する半導体記憶素子58から該当のデータを読み出す(ステップS24)。
一方、readコマンドにより読み出しが要求されたデータのサイズがページのサイズより大きい場合(ステップS21:NO)、半導体記憶装置50は、読み出す対象のデータがページ単位になるように読み出しを分解する。即ち、半導体記憶装置50は、readコマンドにより指定された論理アドレスを用いて、読み出し対象の各データの論理アドレスを各々計算する(ステップS22)。そして、半導体記憶装置50は、計算した各論理アドレスを使って正引きテーブルのLBAテーブルを参照して、論理ブロック番号を各々特定する。次に、半導体記憶装置50は、特定した論理ブロック番号を使って論物変換テーブルを参照し、読み出しの対象のチャネル、物理ブロック及びページを各々特定する(ステップS23)。そして、半導体記憶装置50は、特定したチャネルに対応する半導体記憶素子58から該当のデータを各々読み出す(ステップS24)。
ステップS24で読み出したデータの正当性は、データに付加されたページECCで担保される。即ち、半導体記憶装置50は、読み出したデータに付加されたページECCを使って、当該データの誤りを検出してこれを訂正することが可能である。しかし、ページECCで訂正できない誤りがある場合、半導体記憶素子58に故障が生じて、データに異常が発生している可能性がある。このような場合には(ステップS25:NO)、半導体記憶装置50は、データの読み出し時に使った論理アドレスで正引きテーブルを参照して、当該データを読み出したチャネルの物理ブロックが関連付けられた論理ブロックを特定し(ステップS27)、当該論理ブロックに関連付けられた他のチャネルの物理ブロックに書き込まれた他のデータ及び冗長情報を読み出し、当該他のデータ及び冗長情報を用いて、訂正できない誤りがあったデータの復元を行う。
図12は、例としてチャネルCH3の半導体記憶素子58に発生した故障により異常の発生したデータを復元する様子を示す図である。具体的には、半導体記憶装置50は、ステップS27で特定した論理ブロックに関連付けられた物理ブロックであって訂正できない誤りの生じたデータを読み出した物理ブロック以外の他のチャネルの物理ブロックに書き込まれた他のデータ及び冗長情報(ここでは、チャネルCH0、CH1、CH2、CH4に書き込まれた各データ及びチャネルCH5に書き込まれた冗長情報)を読み出す。そして、半導体記憶装置50は、当該各データ及び冗長情報において同じオフセットにおける排他的論理和、即ち、これらのバイト毎の排他的論理和を求めることにより、チャネルCH3におけるデータを復元する。そして、半導体記憶装置50は、復元したデータをデータバッファ67に記憶させ(ステップS28)、ステップS29に進む。
尚、誤りがあったデータが読み出されたページには異常が発生している可能性が高いため、半導体記憶装置50は、復元したデータを当該ページとは異なるページに新たに書き込む。このとき、半導体記憶装置50は、データの読み出し時に用いた論理アドレスを用いて、ビットベクタテーブル及び正引きテーブルを更新する。これらのテーブルを更新する方法は、上述の通りである。この更新の結果、誤ったデータが読み出されたページのビットベクタが「0」に更新され、復元したデータが書き込まれたページのビットベクタが「1」に更新され、readコマンドにより指定された論理アドレスに対する正引きテーブルエントリには、復元したデータが書き込まれたページの物理アドレスが記録される。
ステップS24で読み出したデータに誤りがない場合には、半導体記憶装置50は、当該データをデータバッファ67の指定の領域に記憶させ、ステップS29に進む。また、ステップS24で読み出したデータに誤りがあっても、半導体記憶装置50は、ページECCを用いて当該データを訂正した後(ステップS26)、訂正したデータをデータバッファ67の指定の領域に記憶させ、ステップS29に進む。ステップS29では、半導体記憶装置50は、データバッファ67の指定の領域に記憶されたデータをホストに送信する。
尚、ステップS20で受信されたreadコマンドにより複数のデータの読み出しが要求された場合、各々指定された論理アドレスに応じて、半導体記憶装置50は、異なった論理ブロックに関連付けられた各チャネルの物理ブロックからデータを読み出す場合も有り得る。このように、データの読み出し時には各チャネルで独立なアクセスが可能であるので、ホストからの要求に応じてデータを読み出してこれを応答性良くホストに送信することができる。
次に、コンパクションの対象の論理ブロックに書き込まれている有効データをフリーブロックに移動する処理の手順について図13を用いて説明する。半導体記憶装置50は、有効ページの数の値の最大値として「M=4096」を設定し、ビットベクタテーブルにおける論理ブロック毎のエントリのインデックスとして「K=0」を設定する(ステップS40)。そして、半導体記憶装置50は、ビットベクタテーブルを参照して、論理ブロック毎の有効ページ数カウンタの値を順番に1つ読み出し(ステップS41)、当該カウンタの値がMより小さいか否かを判断する(ステップS42)。当該有効ページ数カウンタの値がM以上である場合(ステップS42:NO)、ステップS44に進む。当該有効ページ数カウンタの値がMより小さい場合(ステップS42:YES)、半導体記憶装置50は、Mの値を当該カウンタの値に置き換え、ステップS41で当該有効ページ数カウンタの値を読み出したエントリのインデックスの値をKとして(ステップS43)、ステップS44に進む。
ステップS44では、半導体記憶装置50は、ビットベクタテーブルの全ての論理ブロックについて有効ページ数カウンタの値を読み出したか否かを判断し、全ての論理ブロックについて有効ページ数カウンタの値を読み出していない場合(ステップS44:NO)、Kの値を1インクリメントして(ステップS45)、ステップS41に戻る。ステップS41では、半導体記憶装置50は、ビットベクタテーブルで、Kの順番であってまだ読み出していない論理ブロックの有効ページ数カウンタの値を読み出すことになる。一方、全ての論理ブロックについて有効ページ数カウンタの値を読み出した場合(ステップS44:YES)、半導体記憶装置50は、論物変換テーブルにおいて、Kの値を、コンパクションの候補の論理ブロックのインデックスとして設定する(ステップS46)。上述したように、論物変換テーブルのインデックスを用いてビットベクタテーブルを参照できるように各エントリを配置しているため、ビットベクタテーブルにおけるエントリのインデックスKを、論物変換テーブルのエントリのインデックスとして使えるのである。そして、半導体記憶装置50は、論物変換テーブルにおいてインデックスKで示されるエントリの論理ブロックに関連付けられたチャネルCH0〜CH4の各物理ブロックについて、ビットベクタテーブルのビットベクタが「1」を示すページ(有効ページ)に記憶されているデータ(有効データ)を特定し、当該有効データをデータバッファ67に全て読み出す。また、半導体記憶装置50は、当該有効データに付加されている論理アドレスを抽出する(ステップS47)。
そして、半導体記憶装置50は、ステップS47で読み出した各有効データの書き込みを、上述のwirteコマンドに応じて行うデータの書き込みと同様にして行う。即ち、半導体記憶装置50は、当該有効データを書き込むチャネルをチャネルCH0〜CH4からラウンドロビンで決定し、各チャネルの半導体記憶素子58の消去済みのブロックのうち追記ポインタで示されるページに、当該有効データを書き込む。その後、半導体記憶装置50は、有効データを書き込んだページに続く次のページであって書き込みがまだ行われていないページを示すよう追記ポインタを更新する。この際、冗長情報はチャネルCH0〜CH4からに書き込まれるデータを元に計算され、チャネルCH5に書き込まれる。また、半導体記憶装置50は、書き込んだ有効データに付加されている論理アドレスと、当該有効データを書き込んだページの物理アドレスとの対応関係を正引きテーブルに記録して更新する(ステップS48)。正引きテーブルを更新する方法は上述の通りである。このように、コンパクションにおいても正引きテーブルを更新することで、データの論理アドレスと物理アドレスとの対応関係を常に正しく保持することができる。また、データに論理アドレスが付加されていることで、コンパクションの際に、当該論理アドレスと当該データが書き込まれる物理アドレスとの対応関係を容易に更新することが可能になる。
そして、データバッファ67に読み出した全ての有効ページのデータについてデータバッファ67からの読み出しが終了して(ステップS49:YES)、半導体記憶素子58に書き込みが終了すると、半導体記憶装置50は、ステップS46でコンパクションの候補とした論理ブロックに関連付けられたチャネルCH0〜CH5の各物理ブロックに対して消去を行い、コンパクションの処理を終了する。
尚、コンパクションの処理を行うタイミングは、例えば、論理ブロックを構成するときにフリーブロックの数をチェックし、その数が所定数以下となったときなどであれば良い。
以上のように、半導体記憶素子を複数用いて、いずれかの半導体記憶素子の故障時にもデータにアクセス可能にする構成において、データの書き込みをページ単位で行い、ページのサイズより大きいデータはページ単位に分割した後、各半導体記憶素子58への書き込みが均等になるように、分割した各データを各半導体記憶素子58に割り当てて、各半導体記憶素子58の各ページに書き込みを行う。また、複数の半導体記憶素子の各ページに書き込む各データに対する冗長情報を1つの半導体記憶素子のページに書き込んで、複数の半導体記憶素子の各ページにより誤り訂正符号を構成する。また、データの読み出しをページ単位で行い、データの異常が発生した場合には、当該データが書き込まれた半導体記憶素子58のページに異常が発生したとして、他の半導体記憶素子との間で構成された誤り訂正符号を用いてデータの復元を行う。
このような構成によれば、複数ページ(上述の例では5ページ)のデータの書き込みに対して、当該データに対する冗長情報の書き込みを1ページに抑えることができる。一方、HDDのRAIDでは、1ページのデータの書き込みに対し、当該データに対応する冗長情報の書き込みは1ページである。これに比べて、本実施の形態においては、冗長情報の書き込みをN分の1(上述の例では5分の1)に抑えることができる。上述したように、NAND型の半導体記憶素子には書き込み回数に制限があるので、冗長情報の書き込みの回数を抑えながら、半導体記憶装置50の信頼性を向上させることができる。
また、HDDのRAIDでは、データの異常が発生すると、当該データが記憶されたHDD全体が故障したとして当該HDDを切り離して、他のHDDとの間で構成された誤り訂正符号を用いてデータの復元を行うが、本実施の形態においては、データの異常が発生したとしても、半導体記憶素子全体の故障としてではなく、当該半導体記憶素子の一部であるブロックやページの故障として扱うことができる。このため、より小さい単位での誤りにも対応することができる。また、半導体記憶素子全体が故障したとしても、当該半導体記憶素子に書き込まれたデータを、他の半導体記憶素子との間で構成された誤り訂正符号を用いて復元することができる。このため、極めて高い信頼性を実現することができる。
即ち、以上のような構成によれば、半導体記憶素子などの故障によりデータに異常が発生したとしても、誤り訂正符号によってデータを復元可能にすることで、半導体記憶装置50の信頼性を向上させることができると共に、書き込み回数に制限のある半導体記憶素子の書き込み回数が増大するのを抑制することができる。
また、本実施の形態においては、ビットベクタテーブルを有することにより、コンパクションを効率良く高速で行うことが可能になる。コンパクションを行うためには、半導体記憶装置50は、ブロック中有効データが書き込まれている有効ページがどのページであるかを識別し、当該有効ページに対応する論理アドレスを求めて、当該有効データを移動し、当該論理アドレスと移動先のページの物理アドレスとを対応付ける更新処理が必要となる。有効ページの識別及び物理アドレスの更新は、正引きテーブルを介して行うことは可能である。しかし、正引きテーブルは、論理アドレスをインデックスとした検索に最適化されて構成されている。このため、コンパクションを行う際に正引きテ―ブルを介して有効ページの識別及び物理アドレスの更新を行うことは、検索の時間的ペナルティーが大きくかかってしまう。
また、コンパクションの対象となる論理ブロックは、有効ページ数が少ないものが望ましい。その理由は、コンパクションによって有効ページを移動することで、多くのフリーブロックができるからである。有効ページ数が少ない論理ブロックを選択するためには、値が「1」であるビットベクタの数が少ないエントリを選択すれば良い。値が「1」であるビットベクタの数を数えるためには、例えば、Population演算(ワード中の「1」が立っているビット数を数える)を実装すれば良いが、エントリのビット幅が大きいと(例では320ビット)1サイクルで計算を行うのが困難になる。そのため、本実施の形態においては、半導体記憶装置50は、ビットベクタの値の変化に応じて、図5に示される有効ページ数カウンタの値を更新し、コンパクションの対象となる論理ブロックを検索する際には、ビットベクタテーブルの有効ページ数カウンタの値が最小であるエントリを検索することにより、該当の論理ブロックを求める。有効ページ数カウンタの値が最小であるエントリの検索は、全ての論理ブロックに関するエントリの有効ページ数カウンタの値を各々1回読み出すことにより可能である。従って、本実施の形態における半導体記憶装置50では、ビットベクタテーブルを参照することで、有効ページ数の少ない論理ブロックを容易に検索することができ、コンパクションを効率良く高速で行うことが可能になる。
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
上述した実施の形態において、半導体記憶装置50で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供するように構成しても良い。
上述した実施の形態において、プロセッサ51の機能の一部をハードウェアによって実現させるようにしても良い。また、半導体記憶装置50は、プロセッサ51を複数備え、複数のプロセッサ51により上述の機能が実現されるように構成しても良い。このような構成によれば、処理の高速化が図れる。
上述した実施の形態において、正引きテーブル及びビットベクタテーブルは、DRAM54に記憶されるようにしたが、これに限らず、例えば、半導体記憶素子58に記憶され、プロセッサ51がこれらのテーブルを使用する際にDRAM54にキャッシュするようにしても良い。
上述した実施の形態において、ページECCとしてはページ単位のデータ毎にECC符号を付加しているが、ページより小さな単位(例として512バイトのセクター単位)でECC符号を付加することも可能である。このような構成において、ページより小さな単位でデータの誤りが訂正できなかった場合は、当該データに異常が発生したとして、複数のチャネルにより構成された誤り訂正符号を用いて、当該データを復元すれば良い。
上述した実施の形態において、複数のチャネルで誤り訂正符号を構成する単位を、バイトとしたが、これに限らず、バイトよりも大きいサイズや小さいサイズを単位としても良い。また、誤り訂正符号として、パリティ符号を用いたが、これに限らず、冗長情報の数を複数とし、Reed Solomon符号を用いるようにしても良い。これにより、複数の半導体記憶素子58の故障などによって異常の発生したデータを復元することが可能になる。
上述した実施の形態において、データを書き込むチャネル数を4つとし、これらのデータに対する冗長情報を書き込むチャネル数を1つとして、誤り訂正符号を構成するチャネル数を5つとしたが、これに限らない。また、誤り訂正符号を構成する冗長情報を書き込むためのチャネルをチャネルCH5に固定したが、これに限らず、誤り訂正符号を構成する単位毎にチャネルを変更するようにしても良い。
上述した実施の形態において、チャネルと半導体記憶素子58とは1対1対応させるようにしたが、これに限らず、チャネルと半導体記憶素子58とが1対多対応させる、即ち、1つのチャネルに対して複数の半導体記憶素子58が割り当てられるようにしても良い。この場合、各半導体記憶素子58にはこれらを識別するための識別番号を付与するようにする。論物変換テーブルには、チャネル毎の各ブロックについて、この識別番号及び物理アドレスを記録するようにする。例えば、各チャネルに8個の半導体記憶素子に割り当てられる場合、各半導体記憶素子を識別するのに3ビット、各半導体記憶素子に含まれる4096個のブロックを識別するのに12ビットで合計15ビットを、チャネル毎の各ブロックの識別番号及び物理アドレスとして論物変換テーブルに記録するようにする。
上述した実施の形態において、論物変換テーブルの実装を簡単にするため、論物変換テーブルのエントリの数及び各チャネルに属するブロックの数を等しくすることが望ましい。論物変換テーブルのエントリ数と、チャネルCH0の物理ブロックの数が等しいので、論理ブロックのエントリが論物変換テーブルで記憶される位置は、チャネルCH0の物理ブロックの物理ブロック番号で決定しておくようにすれば良い。物理ブロック番号とは、例えば、チャネルに含まれる各物理ブロックに対して昇順に付与されるものとする。この場合、論物変換テーブルのインデックスとなる論理ブロック番号は、チャネルCH0の物理ブロック番号にすれば良い。この他、論理物理変換テーブルのエントリをフリーリストで記憶させるようにしても良い。
上述した実施の形態において、半導体記憶装置50は、半導体記憶素子58に書き込むデータに論理アドレスが付加するようにしたが、これを付加するのではなく、半導体記憶素子58に書き込まれたデータの物理アドレスをインデックスとして当該物理アドレスと、当該データの論理アドレスとの対応関係を示す物論変換テーブル(論物変換テーブルとは異なる)を更に備えるようにしても良い。そして、コンパクションの際に、半導体記憶装置50は、半導体記憶素子58から読み出した有効データの物理アドレスを用いて、正引きテーブルを参照して、当該物理アドレスに対応する論理アドレスを取得し、これを用いて、コンパクションに伴う正引きテーブルの更新を行うようにすれば良い。
上述した実施の形態において、書き込み対象データに対してチャネルを割り当てる際、チャネルCH0〜CH3のうち少なくとも1つへの割り当て後、書き込み対象データがない状態が一定時間以上継続した場合、チャネルCH1〜CH4のうち書き込み対象データの割り当てのないチャネルにおいて、該当のページにダミーデータ(例えば全てのビットが「0」のデータ)を書き込んで、チャネルCH1〜CH4において対応する各ページのデータを用いて計算した冗長情報を、チャネルCH5の対応するページを書き込むようにする。このような構成によれば、チャネルCH0〜CH4の各々対応するページのうち書き込みの既に済んでいるチャネルのデータについて、誤り訂正符号が構成されず、当該データに誤りがあった場合に復元できない恐れを回避することが可能になる。
50 半導体記憶装置
51 プロセッサ
52 BootROM
53 メモリコントローラ
54 DRAM
55 SATA/SASインタフェース
56 バス
57,57A〜57F NANDコントローラ
58,58A〜58F 半導体記憶素子
60 ホストインタフェース部
61 バッファ制御部
62 アドレス変換部
63 CH振り分け部
64 コンパクション候補検出部
65 管理テーブル更新部
66,66A〜66F NAND制御部
67 データバッファ
68 コンパクションreadキュー
69 管理テーブル

Claims (13)

  1. 複数の半導体記憶チップを備え、情報処理装置から書き込みが要求されたデータを前記半導体記憶チップへ書き込む半導体記憶装置であって、
    前記データは、1つ以上の所定の単位の第1データを有し、
    所定の単位毎の前記第1データと、所定の数の前記第1データを用いて計算され当該所定の数の第1データの誤りを訂正するために使われる冗長情報とを異なる半導体記憶チップに各々書き込む制御部と、
    前記所定の数の前記第1データ及び前記冗長情報を関連付けるための識別情報と、関連付けられた前記第1データ及び前記冗長情報が書き込まれる前記半導体記憶素子内の複数の記憶領域を各々特定する領域特定情報とを対応付けて記憶する記憶部とを備える
    ことを特徴とする半導体記憶装置。
  2. 前記書き込み制御部は、複数の前記半導体記憶チップのそれぞれにおいて、消去が行なわれた前記記憶領域で書き込みがまだ行なわれていない位置に前記第1データを書き込む
    ことを特徴とする請求項1に記載の半導体記憶装置。
  3. 複数の前記半導体記憶チップのそれぞれにおいて、消去が行なわれた前記記憶領域で書き込みを行なうべき位置を示すポインタを前記所定の単位毎に各々設定する設定部を更に備え、
    前記設定部は、各前記半導体記憶チップの記憶領域への書き込みが行われた場合、当該書き込みが行われた位置に続く新たな位置を示すよう前記ポインタを各々更新する
    ことを特徴とする請求項1又は2に記載の半導体記憶装置。
  4. 情報処理装置から読み出した要求されたデータを前記半導体記憶チップから読み出す読み出し制御部であって、所定の単位毎の第2データを前記半導体記憶チップから読み出し、当該第2データに誤りがある場合、前記領域特定情報を参照して、当該第2データと関連付けられた他の第2データ及び前記冗長情報を読み出して、前記他の第2データ及び前記冗長情報を用いて、前記第2データを復元する読み出し制御部と、
    前記第2データを前記情報処理装置に送信する送信部とを更に備える
    ことを特徴とする請求項1乃至3のいずれか一項に記載の半導体記憶装置。
  5. 前記書き込み制御部は、前記第1データの誤りを検出する誤り検出符号を付加した当該第1データを前記半導体記憶チップの記憶領域に書き込み、
    前記読み出し制御部は、
    前記第2データを前記半導体記憶チップの記憶領域から読み出す読み出し部と、
    前記第2データに付加された前記誤り検出符号を用いて、当該第2データの誤りを検出する検出部と、
    前記第2データの誤りが検出された場合に、当該第2データを他の第2データ及び前記冗長情報と関連付けるための前記識別情報に対応付けられて記憶されている前記領域特定情報を参照して、前記第2データを復元する復元部とを有する
    ことを特徴とする請求項4に記載の半導体記憶装置。
  6. 前記書き込み制御部は、
    書き込みが要求された前記データのサイズが前記所定の単位より大きい場合、当該データを前記所定の単位毎に分割する分割部と、
    分割された各前記データである各前記第1データのそれぞれに対して、複数の前記半導体記憶チップのうち、書き込む対象の半導体記憶チップを各々決定する決定部と、
    各前記第1データを、決定された前記半導体記憶チップの記憶領域に各々書き込む書き込み部とを有する
    ことを特徴とする請求項1乃至5のいずれか一項に記載の半導体記憶装置。
  7. 前記決定部は、各前記第1データのそれぞれに対して、書き込む対象の半導体記憶チップをラウンドロビン方式で各々決定する
    ことを特徴とする請求項6に記載の半導体記憶装置。
  8. 前記情報処理装置で用いられる論理アドレスが指定されて前記データの書き込みが要求され、
    前記記憶部は、前記論理アドレスと、前記識別情報と、前記第1データ及び前記冗長情報が前記半導体記憶チップにおいて各々書き込まれる位置を示す物理アドレスである前記領域特定情報とを対応付けて記憶しており、
    同じ値を示す前記論理アドレスが指定された新たなデータの書き込みの要求に応じて、新たな前記第1データの書き込みが行なわれた場合、前記論理アドレスと新たな前記第1データに対する前記物理アドレスとの対応付けを記憶するよう前記記憶部を更新する第1更新部を更に備える
    ことを特徴とする請求項1乃至7のいずれか一項に記載の半導体記憶装置。
  9. 前記所定の単位は、ページであり、
    前記第1データは、ページ毎のデータであり、
    同じ値を示す前記論理アドレスに対応して新たな書き込みが行われた場合、以前に書き込みが行なわれた前記ページは無効であり、
    前記記憶部は、前記記憶領域においてどのページが無効でないかを示すビットベクタを更に記憶し、
    前記論理アドレスに対応して新たな書き込みが行われた場合、前記ビットベクタを更新する第2更新部とを更に備える
    ことを特徴とする請求項8に記載の半導体記憶装置。
  10. 前記書き込み制御部は、前記記憶領域において、前記ビットベクタによって無効ではないことが示される前記ページに書き込まれた前記第1データを、消去が行われた新たな前記記憶領域に書き込むことにより、ガベージコレクションを行う
    ことを特徴とする請求項8又は9に記載の半導体記憶装置。
  11. 前記ビットベクタは、前記第1データ及び前記冗長情報の関連毎に、関連付けられた前記第1データ及び前記冗長情報が書き込まれた前記半導体記憶素子内の複数の各記憶領域の各ページについてどのページが有効であるかを示し、
    前記書き込み制御部は、前記関連毎の無効ではない前記ページの数に応じて、関連付けられた前記第1データ及び前記冗長情報を選択して、当該第1データ及び当該冗長情報が書き込まれた各前記記憶領域のそれぞれについて、前記ビットベクタによって無効ではないことが示される前記ページに書き込まれた前記第1データ及び前記冗長情報を、消去が行われた新たな前記記憶領域に書き込むことにより、ガベージコレクションを行なう
    ことを特徴とする請求項10に記載の半導体記憶装置。
  12. 前記書き込み制御部は、選択した前記第1データ及び前記冗長情報が書き込まれていた各前記記憶領域のそれぞれに対して、無効ではない前記ページの新たな前記記憶領域への書き込みが終了した後、消去を行なう
    ことを特徴とする請求項11に記載の半導体記憶装置。
  13. 前記書き込み制御部は、前記論理アドレスを付加した前記第1データを前記半導体記憶チップの記憶領域に書き込み、
    前記第1更新部は、前記ガベージコレクションが行なわれることにより、無効ではない前記ページに書き込まれた前記第1データが新たな前記記憶領域に書き込まれた場合、当該第1データに付加された前記論理アドレスと、新たな前記記憶領域において当該第1データが書き込まれた位置を示す新たな前記物理アドレスとの対応付けを記憶するよう前記記憶部を更新する
    ことを特徴とする請求項8乃至12のいずれか一項に記載の半導体記憶装置。
JP2010029114A 2010-02-12 2010-02-12 半導体記憶装置 Active JP5066199B2 (ja)

Priority Applications (9)

Application Number Priority Date Filing Date Title
JP2010029114A JP5066199B2 (ja) 2010-02-12 2010-02-12 半導体記憶装置
US12/888,822 US8448034B2 (en) 2010-02-12 2010-09-23 Semiconductor memory device
TW100104483A TWI428737B (zh) 2010-02-12 2011-02-10 半導體記憶體裝置
EP11153978A EP2360592B1 (en) 2010-02-12 2011-02-10 Semiconductor memory device
KR1020110012562A KR101265410B1 (ko) 2010-02-12 2011-02-11 반도체 메모리 장치
CN201110036760.4A CN102163458B (zh) 2010-02-12 2011-02-12 半导体存储器装置
US13/868,620 US8788900B2 (en) 2010-02-12 2013-04-23 Semiconductor memory device
US14/313,652 US9165685B2 (en) 2010-02-12 2014-06-24 Semiconductor memory device
US14/313,782 US9136020B2 (en) 2010-02-12 2014-06-24 Semiconductor memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010029114A JP5066199B2 (ja) 2010-02-12 2010-02-12 半導体記憶装置

Publications (2)

Publication Number Publication Date
JP2011165063A true JP2011165063A (ja) 2011-08-25
JP5066199B2 JP5066199B2 (ja) 2012-11-07

Family

ID=44226035

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010029114A Active JP5066199B2 (ja) 2010-02-12 2010-02-12 半導体記憶装置

Country Status (6)

Country Link
US (4) US8448034B2 (ja)
EP (1) EP2360592B1 (ja)
JP (1) JP5066199B2 (ja)
KR (1) KR101265410B1 (ja)
CN (1) CN102163458B (ja)
TW (1) TWI428737B (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011203878A (ja) * 2010-03-24 2011-10-13 Toshiba Corp 半導体記憶装置
JP2012155541A (ja) * 2011-01-26 2012-08-16 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
JP2013137713A (ja) * 2011-12-28 2013-07-11 Toshiba Corp メモリコントローラ、メモリシステムおよびメモリ書込み方法
JP2015531509A (ja) * 2012-09-06 2015-11-02 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated チャネル回転エラー訂正コード
US9318224B2 (en) 2012-12-06 2016-04-19 Samsung Electronics Co., Ltd. Non-volatile memory device and operating method thereof
JP2018163450A (ja) * 2017-03-24 2018-10-18 日本電気株式会社 データ記憶制御装置、データ記憶システム、データ記憶方法およびプログラム
US10366003B2 (en) 2011-12-28 2019-07-30 Toshiba Memory Corporation Controller, storage device, and computer program product for writing and transfer process

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5066199B2 (ja) * 2010-02-12 2012-11-07 株式会社東芝 半導体記憶装置
JP5269932B2 (ja) 2011-03-01 2013-08-21 株式会社東芝 コントローラ、データ記憶装置およびプログラム
JP5319723B2 (ja) 2011-03-24 2013-10-16 株式会社東芝 メモリシステムおよびプログラム
US8640013B2 (en) 2011-09-22 2014-01-28 Kabushiki Kaisha Toshiba Storage device
US20140325315A1 (en) * 2012-01-31 2014-10-30 Hewlett-Packard Development Company, L.P. Memory module buffer data storage
US20140068378A1 (en) * 2012-08-31 2014-03-06 Kabushiki Kaisha Toshiba Semiconductor storage device and memory controller
JP6034183B2 (ja) * 2012-12-27 2016-11-30 株式会社東芝 半導体記憶装置
EP2951700A4 (en) 2013-01-30 2016-08-31 Hewlett Packard Entpr Dev Lp NONVOLATILE MEMORY WRITING MECHANISM
US20140244897A1 (en) * 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory
US20140250277A1 (en) * 2013-03-04 2014-09-04 Kabushiki Kaisha Toshiba Memory system
US20140281160A1 (en) * 2013-03-14 2014-09-18 Kabushiki Kaisha Toshiba Non-volatile semiconductor storage apparatus
US10642795B2 (en) * 2013-04-30 2020-05-05 Oracle International Corporation System and method for efficiently duplicating data in a storage system, eliminating the need to read the source data or write the target data
US20150046772A1 (en) * 2013-08-06 2015-02-12 Sandisk Technologies Inc. Method and device for error correcting code (ecc) error handling
JP6102632B2 (ja) * 2013-08-14 2017-03-29 ソニー株式会社 記憶制御装置、ホストコンピュータ、情報処理システムおよび記憶制御装置の制御方法
US9218282B2 (en) 2013-10-31 2015-12-22 Micron Technology, Inc. Memory system data management
US20150193301A1 (en) * 2014-01-06 2015-07-09 Kabushiki Kaisha Toshiba Memory controller and memory system
JP6378111B2 (ja) * 2014-12-29 2018-08-22 東芝メモリ株式会社 情報処理装置及びプログラム
WO2016115737A1 (en) 2015-01-23 2016-07-28 Hewlett-Packard Development Company, L.P. Aligned variable reclamation
JP6391172B2 (ja) * 2015-09-10 2018-09-19 東芝メモリ株式会社 メモリシステム
US10095423B2 (en) 2015-09-30 2018-10-09 Toshiba Memory Corporation Storage system that tracks mapping to a memory module to be detached therefrom
US10101925B2 (en) * 2015-12-23 2018-10-16 Toshiba Memory Corporation Data invalidation acceleration through approximation of valid data counts
WO2017126091A1 (ja) * 2016-01-21 2017-07-27 株式会社日立製作所 記憶装置及びその制御方法並びに記憶装置を備えたストレージシステム
KR102527992B1 (ko) 2016-03-14 2023-05-03 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10120583B2 (en) * 2016-06-07 2018-11-06 Facebook, Inc. Performance penalty avoidance for solid state drive
US10169126B2 (en) * 2016-10-12 2019-01-01 Samsung Electronics Co., Ltd. Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation
KR102356307B1 (ko) * 2017-09-06 2022-01-26 에스케이텔레콤 주식회사 플래시 저장 장치에서의 선택적 소거 코딩을 이용한 데이터 손실 복원 방법 및 장치
JP2019057178A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
KR20200096613A (ko) * 2017-12-11 2020-08-12 마이크론 테크놀로지, 인크. 캐싱된 플래시 변환 계층에서의 가비지 수집의 효율을 개선하기 위한 기법
JP2019159791A (ja) * 2018-03-13 2019-09-19 東芝メモリ株式会社 メモリシステム
TWI686698B (zh) * 2018-05-24 2020-03-01 大陸商深圳大心電子科技有限公司 邏輯轉實體表更新方法及儲存控制器
CN109445681B (zh) * 2018-08-27 2021-05-11 华为技术有限公司 数据的存储方法、装置和存储系统
US11574659B2 (en) * 2018-09-11 2023-02-07 Micron Technology, Inc. Parallel access to volatile memory by a processing device for machine learning
KR102694952B1 (ko) * 2018-09-20 2024-08-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN109933374B (zh) * 2019-01-23 2021-10-22 西安微电子技术研究所 一种计算机启动方法
KR102657760B1 (ko) * 2019-09-23 2024-04-17 에스케이하이닉스 주식회사 메모리 시스템 및 그 메모리 시스템의 동작 방법
JP2022137811A (ja) * 2021-03-09 2022-09-22 キオクシア株式会社 情報処理システム、ストレージデバイスおよびホスト
US11630727B2 (en) * 2021-03-24 2023-04-18 Micron Technology, Inc. Generating die block mapping after detected failure

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204041A (ja) * 2007-02-19 2008-09-04 Hitachi Ltd ストレージ装置及びデータ配置制御方法
JP2008226149A (ja) * 2007-03-15 2008-09-25 Hitachi Ltd ストレージシステム及びストレージシステムのライト性能低下防止方法
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
WO2009042554A1 (en) * 2007-09-25 2009-04-02 Sandisk Corporation Nonvolatile memory with self recovery

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US367377A (en) * 1887-08-02 duffey
US367416A (en) * 1887-08-02 Bridle-bit attachment
US367475A (en) * 1887-08-02 Roof for suspended electric conductors
KR0135082B1 (ko) * 1988-04-28 1998-04-20 오가 노리오 정보 기억방법 및 그 장치
JP4110000B2 (ja) * 2003-01-28 2008-07-02 株式会社ルネサステクノロジ 記憶装置
JP4025275B2 (ja) * 2003-09-24 2007-12-19 シャープ株式会社 メモリ装置およびメモリシステム
CN101281788A (zh) * 2007-04-06 2008-10-08 群联电子股份有限公司 闪存系统及其控制方法
JP2009211234A (ja) 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US8185778B2 (en) * 2008-04-15 2012-05-22 SMART Storage Systems, Inc. Flash management using separate metadata storage
JP5066199B2 (ja) * 2010-02-12 2012-11-07 株式会社東芝 半導体記憶装置
JP4901968B2 (ja) * 2010-03-01 2012-03-21 株式会社東芝 半導体記憶装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204041A (ja) * 2007-02-19 2008-09-04 Hitachi Ltd ストレージ装置及びデータ配置制御方法
JP2008226149A (ja) * 2007-03-15 2008-09-25 Hitachi Ltd ストレージシステム及びストレージシステムのライト性能低下防止方法
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
WO2009042554A1 (en) * 2007-09-25 2009-04-02 Sandisk Corporation Nonvolatile memory with self recovery

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011203878A (ja) * 2010-03-24 2011-10-13 Toshiba Corp 半導体記憶装置
JP2012155541A (ja) * 2011-01-26 2012-08-16 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
US8713410B2 (en) 2011-01-26 2014-04-29 Kabushiki Kaisha Toshiba Data storage apparatus, memory control apparatus and method for controlling flash memories
JP2013137713A (ja) * 2011-12-28 2013-07-11 Toshiba Corp メモリコントローラ、メモリシステムおよびメモリ書込み方法
US10366003B2 (en) 2011-12-28 2019-07-30 Toshiba Memory Corporation Controller, storage device, and computer program product for writing and transfer process
JP2015531509A (ja) * 2012-09-06 2015-11-02 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated チャネル回転エラー訂正コード
US9318224B2 (en) 2012-12-06 2016-04-19 Samsung Electronics Co., Ltd. Non-volatile memory device and operating method thereof
JP2018163450A (ja) * 2017-03-24 2018-10-18 日本電気株式会社 データ記憶制御装置、データ記憶システム、データ記憶方法およびプログラム

Also Published As

Publication number Publication date
TWI428737B (zh) 2014-03-01
KR20110093732A (ko) 2011-08-18
CN102163458A (zh) 2011-08-24
CN102163458B (zh) 2014-09-10
KR101265410B1 (ko) 2013-05-16
EP2360592B1 (en) 2012-09-05
JP5066199B2 (ja) 2012-11-07
US9165685B2 (en) 2015-10-20
US9136020B2 (en) 2015-09-15
US20140310575A1 (en) 2014-10-16
TW201145012A (en) 2011-12-16
US20130232391A1 (en) 2013-09-05
US20110202812A1 (en) 2011-08-18
EP2360592A1 (en) 2011-08-24
US20140310576A1 (en) 2014-10-16
US8788900B2 (en) 2014-07-22
US8448034B2 (en) 2013-05-21

Similar Documents

Publication Publication Date Title
JP5066199B2 (ja) 半導体記憶装置
JP4901968B2 (ja) 半導体記憶装置
JP5388976B2 (ja) 半導体記憶制御装置
US9684468B2 (en) Recording dwell time in a non-volatile memory system
JP5010723B2 (ja) 半導体記憶制御装置
KR101459861B1 (ko) 스트라이프 기반 메모리 작동
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
US20150161036A1 (en) Programming non-volatile memory using a relaxed dwell time
JP2008009635A (ja) ストレージシステム及びそのデータ保護方法
US9390003B2 (en) Retirement of physical memory based on dwell time
US20130179750A1 (en) Semiconductor storage device and method of controlling the same
JP2014052978A (ja) 不揮発性半導体メモリの制御方法及びメモリシステム
JP2012053571A (ja) 情報処理装置、コントローラカード、および情報処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120206

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120206

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120327

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120528

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120717

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120810

R151 Written notification of patent or utility model registration

Ref document number: 5066199

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350