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

半導体記憶装置 Download PDF

Info

Publication number
JP2012128660A
JP2012128660A JP2010279505A JP2010279505A JP2012128660A JP 2012128660 A JP2012128660 A JP 2012128660A JP 2010279505 A JP2010279505 A JP 2010279505A JP 2010279505 A JP2010279505 A JP 2010279505A JP 2012128660 A JP2012128660 A JP 2012128660A
Authority
JP
Japan
Prior art keywords
data
data transfer
ecc
nand
memory
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.)
Pending
Application number
JP2010279505A
Other languages
English (en)
Inventor
Koji Watanabe
幸治 渡辺
Toshikatsu Hida
敏克 檜田
Takashi Oshima
貴志 大嶋
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
Toshiba Information Systems Japan Corp
Original Assignee
Toshiba Corp
Toshiba Information Systems Japan 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, Toshiba Information Systems Japan Corp filed Critical Toshiba Corp
Priority to JP2010279505A priority Critical patent/JP2012128660A/ja
Priority to TW100146708A priority patent/TW201246216A/zh
Priority to US13/824,542 priority patent/US20130191705A1/en
Priority to PCT/JP2011/079756 priority patent/WO2012081733A1/en
Publication of JP2012128660A publication Critical patent/JP2012128660A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/1056Updating check bits on partial write, i.e. read/modify/write
    • 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
    • G11C2029/0411Online error correction

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)

Abstract

【課題】スループットを低下させることなくメモリチップの故障を防ぐことが可能な半導体記憶装置を提供すること。
【解決手段】夫々独立に動作可能な複数のメモリ領域を有する不揮発性半導体メモリと、複数のメモリ領域に対しデータのアクセスを実行し、アクセス可能状態になったらデータ転送要求を転送管理部に出力する複数のメモリインタフェースと、データを一時記憶する一時記憶バッファとを有する。ECC処理部は、一時記憶バッファと複数のメモリインタフェースとの間で転送中のデータを用いて不揮発性半導体メモリの複数のメモリ領域へ分散して書き込まれるデータあるいは複数のメモリ領域へ分散して書き込まれたデータに関するECC処理を実行する。転送管理部は、データ転送にかかるデータがECC処理を実行するか否かを判定し、ECC処理を実行すると判定したデータにのみECC処理部でのECC処理を実行させる。
【選択図】図1

Description

本発明の実施形態は、不揮発性半導体メモリを備えた半導体記憶装置に関する。
半導体記憶チップをメモリチップとして多数用いた半導体記憶装置では、メモリセルの故障を修復するための誤り訂正符号(ECC)を用いても、メモリチップの故障を防ぐことができず、結果的に、半導体記憶装置の故障となる恐れがある。
特開2009−211209号公報 特開2010−160873号公報
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 D. Patterson, G. Gibson, and R. Katz. "A Case for Redundant Arrays of Inexpensive Disks (RAID)", Proceedings of the 1988 ACM SIGMOD, pp.109-116, June 1988.
本発明の一つの実施形態は、スループットを低下させることなくメモリチップの故障を防ぐことが可能な半導体記憶装置を提供することを目的とする。
本発明の一つの実施形態によれば、夫々独立に動作可能な複数のメモリ領域を有する不揮発性半導体メモリと、前記複数のメモリ領域に対しデータのアクセスを実行し、アクセス可能状態になったらデータ転送要求を転送管理部に出力する複数のメモリインタフェースと、データを一時記憶する一時記憶バッファとを有する。制御部は、データを前記複数のメモリ領域へ分散して書き込ませるよう前記複数のメモリインタフェースを制御する。転送管理部は、前記複数のメモリインタフェースからのデータ転送要求の内容に基づき前記一時記憶バッファと前記複数のメモリインタフェースとの間でデータ転送管理を行う。ECC処理部は、前記一時記憶バッファと前記複数のメモリインタフェースとの間で転送中のデータを用いて前記複数のメモリ領域へ分散して書き込まれるデータあるいは前記複数のメモリ領域へ分散して書き込まれたデータに関するECC処理を実行する。転送管理部は、前記データ転送にかかるデータが前記ECC処理を実行するか否かを判定し、ECC処理を実行すると判定したデータにのみ前記ECC処理部でのECC処理を実行させる。
図1は、半導体記憶装置としてのSSDの内部構成例を示す図である。 図2は、NANDI/Fの内部構成例を示す図である。 図3は、跨ぎECC処理の符号化処理を説明する図である。 図4は、跨ぎECC処理の復号化処理を説明する図である。 図5は、管理テーブルの構成例を示す図である。 図6は、フォギーファイン書き込みの様子を示す図である。 図7は、第1の実施形態の動作手順を示すフローチャートである。 図8は、データ転送制御を示す図である。 図9は、跨ぎECC処理での復号化手順を示すフローチャートである。 図10は、第2の実施形態の動作手順を示すフローチャートである。 図11は、パーソナルコンピュータの外観を示す斜視図である。 図12は、パーソナルコンピュータの機能構成例を示す図である。
コンピュータシステムに用いられるメモリシステムとして、NAND型フラッシュメモリ(以降、単にNANDメモリという)などの不揮発性半導体メモリを搭載したSSD(Solid State Drive)が注目されている。SSDにおいては、一時記憶バッファを備えることが多く、ホスト装置から要求されたデータをNANDメモリにライトする際には、ホスト装置から入力されたデータを一時記憶バッファで一時記憶し、その後、一時記憶バッファから読み出したデータをNANDメモリに書き込む。
一方、NANDメモリのチップ不良率が、1チップでは製品として問題がない場合でも、SSDのように多くのメモリチップを搭載したシステムにおいては、システムとしての不良率が無視できない大きさになることがある。このため、チップ不良を救済するための跨ぎ誤り訂正が考えられる。跨ぎ誤り訂正においては、複数のメモリチップへ分散して記録するデータから誤り訂正符号を計算する。この誤り訂正符号を計算する際、SSDにおいては、一時記憶バッファに記憶された符号元データを使用して誤り訂正符号を計算し、計算が終了したら、計算された誤り訂正符号と符号元データをNANDメモリに書き込むこととなる。
このため、第1サイクルでは、一時記憶バッファに記憶された符号元データを使用して誤り訂正符号を計算し、その後の第2サイクルで、メモリチップへの誤り訂正符号及び符号元データの転送を行うことが考えられるが、この手法では、合計2サイクルを使用してデータ転送及び符号計算を行う、別言すればメモリチップに対する書き込み以外で符号の計算のための一時記憶バッファへのアクセスが発生するため、一時記憶バッファのバンド幅を圧迫し、スループットが低下する。
また、跨ぎ誤り訂正においてRS(Reed-Solomon)符号のような巡回符号を使用した場合、符号化(以下、エンコード処理と記述する場合がある)時と復号化(以下、デコード処理と記述する場合がある)時で同一のデータ入力順にする必要がある。しかしながら、このデータ入力順が必ずしも複数のNANDメモリに対して最速で書き込みまたは読み出しが可能な順序であるとは限らず、常にデータ入力順を守っていると、跨ぎ訂正を行わない場合と比較してシステム性能を低下させてしまう可能性がある。
そこで、本実施形態においては、
・跨ぎ誤り訂正回路は、一時記憶バッファとNANDメモリ間で転送中のデータを用いて跨ぎ誤り訂正処理(符号化/復号化)を実行する、
・跨ぎ誤り訂正処理の必要/不要を判断し、不要な場合は跨ぎ誤り訂正処理を行わない、
・データ入力順序を守る必要がある跨ぎ誤り訂正処理の場合は、NANDメモリ側の要求に関係なくデータ入力順序を守って一時記憶バッファとNANDメモリ間でのデータ転送を実行する、
といった制御を実行することとする。
以下に添付図面を参照して、実施形態にかかる半導体記憶装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、実施形態にかかる半導体記憶装置の構成を示すブロック図である。ここでは、半導体記憶装置の一例としてSSD(Solid State Drive)100を例に挙げて説明するが、本実施の形態の適用対象はSSDに限定しない。例えば、不揮発にデータを記憶する半導体メモリ及びコントローラを搭載したメモリカード等の補助記憶装置に対しても、本実施の形態を適用することが可能である。図1では、概ね、データ線を実線で示し、制御線を破線で示している。
また、各実施形態における各機能ブロックは、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現することができる。このため、各機能ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施態様、或いはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれる。
SSD100は、パーソナルコンピュータなどのホスト装置とホストインタフェース(ホストI/F)150で接続され、ホスト装置の外部記憶装置として機能する。SSD100は、ホストI/F150と、ホスト装置からリード/ライトされるデータを記憶する不揮発性半導体メモリであるNANDメモリ10(10−0〜10−4)と、SSD100とホスト装置とのデータ転送制御にかかる各種制御を実行するコントローラ20と、コントローラ20がデータ転送のための転送データを一次格納するために使用され、例えばDRAMなどの揮発性メモリで構成される一時記憶バッファ30と、NANDメモリ10−0〜10−4と一時記憶バッファ30との間のデータ転送制御を実行するNANDインタフェース(NANDI/F)40(40−0〜40−4)と、複数のNANDメモリ10−0〜10−4に跨って分散記憶されたデータの跨ぎECC処理(誤り訂正符号化/復号化)を実行する跨ぎECC回路50と、ホスト装置が指定する論理アドレスとしてのLBA(Logical Block Addressing)とNANDメモリ10上でのデータ記憶位置と、跨ぎ訂正符号化処理によって作成された符号のNANDメモリ10上での記憶位置との対応関係などの各種管理情報が記憶される管理情報記憶部60とを備える。
ホスト装置から送信されてきたデータは、コントローラ20の制御の基に、ホストI/F150を経由して一時記憶バッファ30に一旦格納され、その後、一時記憶バッファ30から読み出されてNANDI/F40を経由してNANDメモリ10に書き込まれる。NANDメモリ10から読み出されたデータは、NANDI/F40を経由して一時記憶バッファ30に一旦格納され、その後、一時記憶バッファ30から読み出されてホストI/F150を経由してホスト装置に転送される。
NANDメモリ10は、ホストによって指定されたユーザデータを記憶したり、管理情報記憶部60で管理される管理情報をバックアップ用に記憶したりする。NANDメモリ10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。この実施形態では、便宜上、NANDメモリ10−0〜10−4は、夫々1つのメモリチップによって構成されるとする。各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDメモリ10では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。NANDメモリ10−0〜10−4へのデータや冗長情報(跨ぎ誤り訂正符号)の書き込みは、NANDメモリ10−0〜10−4の物理的な記憶位置を用いて、論理アドレス(LBA)とは無関係に、ページの昇順に行なわれる。
本実施形態では、NANDメモリ10の個数を5個としている。NANDメモリ10−0〜10−4に対して各々1つのチャネル(ch0〜ch4)を割り当て、このうち1つのチャネル(ch4とする)を、跨ぎECC回路50で作成した冗長情報を書き込むためのチャネルとして割り当てて、残りのチャネル(ch0〜ch3)を、ホスト装置から書き込みが要求されたデータを書き込むためのチャネルとして割り当てて、チャネルch0〜ch4の各ページを1つの組として誤り訂正符号を構成する。すなわち、NANDメモリ10−0〜10−3がデータ記憶用であり、NANDメモリ10−4が誤り訂正符号用である。誤り訂正符号を構成するチャネルch0〜ch4の物理ブロックの組を論理ブロックということとする。NANDメモリ10−0〜10−4は、各別のチャネルch0〜ch4を介してNANDI/F40−0〜40−4に接続されており、NANDメモリ10−0〜10−4は、独立して並列動作することが可能である。
ホストI/F150は、例えばATA(Advanced Technology Attachment)規格の通信インタフェースを有し、コントローラ20の制御にしたがってSSD100とホスト装置との通信を制御する。ホストI/F150は、ホスト装置から送信されたコマンドを受信し、当該コマンドによって論理アドレス(LBA)が指定されたデータの書き込みが要求されている場合、当該コマンド(ライトコマンド)をコントローラ20に送る。その際、書き込みが要求されたデータのサイズがページサイズ以下であれば、当該データを一時記憶バッファ30に送り、当該データのサイズがページサイズより大きい場合、当該データをページ単位に分割し、分割したデータ(分割データという)を一時記憶バッファ30に送る。これは、この実施形態では、論理アドレスと物理アドレスとの変換をページ単位で行っているためである。
一時記憶バッファ30は、データ転送用の一時記憶部として使用される。すなわち、ホスト装置から書込み要求があったデータをNANDメモリ10に書込む前に一時的に保存したり、ホスト装置から読出し要求があったデータをNANDメモリ10から読出して一時的に保存したりするために使用される。一時記憶バッファ30は、例えばDRAMなどの揮発性メモリで構成される。
NANDI/F40−0〜40−4は、NANDメモリ10−0〜10−4と一時記憶バッファ30との間のデータ転送制御を実行するものであり、図2にその内部構成例を示す。NANDI/F40−0〜40−4では、各チャネルを独立して動作させるために、チャネル毎に、DMAコントローラ(DMAC)41と、誤り訂正回路(ECC回路)43と、メモリI/F44、NANDI/F制御部45を備える。DMAコントローラ41は、NANDI/F制御部45による制御に従って、一時記憶バッファ30とECC回路43との間のデータ転送制御をDMA(Direct Memory Access)方式に従って行う。
ECC回路43は、NANDI/F制御部45による制御に従って、DMAコントローラ41から転送されたデータに対して、ECC処理(誤り訂正処理)におけるエンコード処理を行い、エンコード結果をデータに付加して出力する。また、ECC回路43は、NANDI/F制御部45による制御に従って、メモリI/F44を介してNANDメモリ10から読み出されたデータに対して、ECC処理におけるデコード処理(誤り訂正符号を用いた誤り訂正処理)を行い、誤り訂正されたデータをDMAコントローラ41に出力する。メモリI/F44は、ECC回路43から出力されるECC符号が付加されたデータをNANDメモリ10に出力するとともに、NANDメモリ10から入力されたECC符号が付加されたデータをECC回路43に出力する。
ECC回路43は、書き込み対象のデータに対して、例えばページサイズのデータ毎に、誤り検出符号(例えば、CRC符号)及び誤り訂正(ECC)符号(例えば、ハミング符号)を生成して付加する。誤り検出符号、ECC符号が付加されたデータが、メモリI/F44を介してNANDメモリ10に書き込まれる。また、NANDメモリ10からデータを読み出す場合は、ECC回路43は、NANDメモリ10から読み出されたページサイズのデータに対して、ECC符号による誤り訂正を行った後、誤り検出符号を用いて誤訂正が発生しているか否かを検出する。
ECC回路43は、誤訂正が発生していると判定された場合に、すなわち、ECC符号の訂正能力以上の誤りが生じて誤訂正が発生した場合に、その旨をNANDI/F制御部45を経由してコントローラ20に通知する。コントローラ20は、ECC回路43から誤訂正の通知を受信した場合に、誤り箇所のページサイズのデータを含むデータ及び冗長情報を再度複数のNANDメモリ10−0〜10−4から読み出して、読み出したデータに対し跨ぎECC回路50での跨ぎECC処理を実行させる。以下、NANDI/Fコントローラ40−0〜40−4内のECC回路で行われるECC処理を、跨ぎECC処理と区別するためにページECCと呼称する。
NANDI/F制御部45は、コントローラ20の主制御部21から受けた命令をNANDI/F用のコマンドに変換し、変換したコマンドに従って、DMAコントローラ41、ECC回路43、及びメモリI/F44を制御する。また、NANDI/F制御部45は、自身がチャネル接続されるNANDメモリ10の動作状態(動作中/待機中など)を管理しており、コントローラ20から受けた前の命令についての処理が終了していない場合は、前の命令についての処理が終了した時点でコントローラ20の転送順管理部23に今回の命令に対応するデータ転送要求を出力する。ここで、コントローラ20の主制御部21から通知される命令には、当該命令が跨ぎECC回路50での跨ぎECC処理が必要であるか否かを示す跨ぎECCオンオフ情報Eflagが付加されており、NANDI/F制御部45は、コントローラ20の転送順管理部23に命令を出力する際には、跨ぎECCオンオフ情報Eflagを付加して出力する。
NANDI/F40−0〜40−4の各NANDI/F制御部45では、コントローラ20の転送順管理部23から受けた実行許可に従って、チャネル対応するNANDメモリ10−0〜10−4から読み出したページ単位のデータを一時記憶バッファ30に転送させる。
跨ぎECC回路50は、一時記憶バッファ30とNANDI/F40との間のデータ転送の際に、転送中のデータを用いて、別言すれば転送中のデータを覗き見ながら誤り訂正符号化処理または誤り訂正復号化処理を実行する。跨ぎECC回路50において、誤り訂正符号化処理は、通常、一時記憶バッファ30からNANDI/F40へのデータ転送の際に行われ、かつコントローラ20の転送順管理部23からの実行要求が通知された際に実行される。コントローラ20の転送順管理部23からの実行要求が通知されない場合は、跨ぎECC回路50における誤り訂正符号化処理は実行されない。
誤り訂正符号化処理の一例を、図3に示す。誤り訂正符号化処理においては、独立動作可能な複数のNANDメモリ10−0〜10−3に分散記憶されるデータ、別言すれば複数のメモリチップに分散記憶されるデータを用いて誤り訂正符号を作成する。図3では、跨ぎECC回路50は、チャネルch0〜ch3への各書き込み対象のページサイズのデータに対して、オフセットが等しい位置の例えばバイト同士で誤り訂正符号を計算する。この計算結果は冗長情報として、跨ぎECC回路50からチャネルch4のNANDI/F40−4に転送され、チャネルch4のNANDI/F40−4によってNANDメモリ10−4の上述のオフセットが等しい位置に書き込まれる。即ち、チャネルch0〜ch4において、ページ内のオフセットが等しい位置のバイト同士によって誤り訂正符号が構成される。
このような誤り訂正符号化の際に、各チャネルch0〜ch3からそれぞれ1つの物理ブロックを選択し、選択した各物理ブロックから1つのページを選択し、選択した各ページのオフセットが等しい位置の例えばバイト同士(同一カラム)から誤り訂正符号を計算するようにしてもよいし、各チャネルch0〜ch3からそれぞれ複数個の物理ブロックを選択し、選択した各物理ブロックから1つのページを選択し、選択した各ページのオフセットが等しい位置の例えばバイト同士(同一カラム)から誤り訂正符号を計算するようにしてもよい。
また、跨ぎECC回路50において、誤り訂正復号化処理は、通常、NANDI/F40から一時記憶バッファ30へのデータ転送の際に行われ、かつコントローラ20の転送順管理部23からの実行要求が通知された際に実行される。コントローラ20の転送順管理部23からの実行要求が通知されない場合は、誤り訂正復号化処理は実行されない。
誤り訂正復号化処理の一例を、図4に示す。図4は、チャネルch3のNANDメモリ10−3に発生した故障により異常の発生したデータを復元する様子を示す図である。図4に示した復元の様子は、符号化方式としてパリティが採用された場合を示している。具体的には、訂正できない誤りの生じたデータと同一の誤り訂正符号に関連付けられたデータであって、訂正できない誤りの生じたデータに対応するチャネル以外のチャネルのNANDメモリに書き込まれたデータと冗長情報(ここでは、チャネルch0、ch1、ch2に書き込まれた各データ及びチャネルch4に書き込まれた冗長情報)を読み出す。そして、跨ぎECC回路50は、当該各データ及び冗長情報における同じオフセットのバイトデータを用いてチャネルch3におけるデータを復元する。なお、符号化方式として、例えばRS符号あるいはBCH(Bose-Chaudhuri-Hocqenghem)符号が採用されている場合は、訂正できない誤りの生じたチャネルのデータを含む全てのチャネルのデータと冗長符号とを用いて、誤りの生じたチャネルのデータの復元が行われる。
なお、NANDメモリ10からの読み出しの場合に、跨ぎECC回路50で符号化が行われる場合もある。例えば、データA,B,C,DがNANDメモリ10−0〜10−3に書き込まれ、それに対応する符号EがNANDメモリ10−4に記憶されているとする。この状態でデータAがデータA´にホスト装置によって更新された場合、ホスト装置から書き込まれたA´と、NANDメモリ10−1〜10−3上にあるデータB,C,Dとで、符号Eを計算し直す必要がある。このような場合は、一時記憶バッファ30からNANDI/Fへのデータ転送の際に、跨ぎECC回路50でデータA´の符号を計算し、次に、NANDメモリ10−1〜10−3から読み出したデータB,C,DのNANDI/Fからのデータ転送の際に、跨ぎECC回路50でデータB,C,Dの符号を計算して、新たな符号E´を計算する。
ここで、第1の実施形態においては、跨ぎECC回路50は、例えば、RS符号あるいはBCH符号などの巡回符号のように、復号化の際に符号化の際と同じ順序でデータをECC回路43に入力する必要がある誤り訂正符号方式を採用する。跨ぎECC回路50においては、一時記憶バッファ30とNANDI/F40−0〜40−4との間で転送されている最中のデータを用いて符号化するので、符号化の際、コントローラ20では一時記憶バッファ30からNANDI/F40−0〜40−4に転送される符号化対象データの転送順序を管理情報記憶部60に記憶しておき、復号化の際にはこの記憶した順序通りにNANDI/F40−0〜40−4から一時記憶バッファ30へのデータ転送を行う。
すなわち、符号化対象データの転送順序が跨ぎECC回路50での符号化順序となるので、巡回符号の場合は、復号化の際には符号化の順序通りに復号化を行う必要があり、符号化の際のデータ転送順通りに復号化の際のデータ転送を実行する。なお、符号化順序を管理する必要のある場合、符号化の際の一時記憶バッファ30からNANDI/F40−0〜40−4へのデータ転送順を予め決めておき、この決められた順に一時記憶バッファ30とNANDI/F40−0〜40−4との間のデータ転送を実行させるようにしてもよい。
これに対し、跨ぎECC回路50で採用する誤り訂正符号化方式として、各NANDI/F40−0〜40−3のECC回路43−0〜43−3でのページECC処理の誤り訂正結果に基づき誤り位置(誤りチャネル)を検出し、この検出結果に基づいて誤り訂正復号化を行う例えばパリティ(排他的論理和)のような符号化を採用した場合、復号化の際に符号化の際と同じ順序でデータを跨ぎECC回路50に入力する必要はない。このような誤り訂正符号を跨ぎECC回路50が採用する場合の処理については、第2の実施形態で説明する。
管理情報記憶部60は、NANDメモリ10に記憶されるデータ(符号元データ)の格納位置と、該データに対応する跨ぎ誤り訂正符号(冗長情報)の格納位置と、ホスト装置が指定する論理アドレス(LBA)との対応を管理するデータ−符号管理情報を含む各種管理情報を格納するために使用される。管理情報は、NANDメモリ10でバックアップされる。データ−符号管理情報としては、論理アドレス(LBA)と符号が記憶されているNANDメモリ上の記憶位置との対応関係、符号元データと跨ぎ誤り訂正符号との対応関係、符号元データと跨ぎ誤り訂正符号とのNANDメモリ上の記憶位置を規定することができれば、その構成は任意である。さらに、管理情報記憶部60には、前述した跨ぎECC処理を行う際の一時記憶バッファ30とNANDI/F40−0〜40−4との間のデータ転送順序、すなわち跨ぎECC回路50でのECC処理順を管理するためのECC処理順管理情報Eseqも記憶されて、コントローラ20によって管理されている。
図5にデータ−符号管理情報を管理するための管理テーブルの一例を示す。データ−符号管理テーブルは、LBAテーブルと、論物変換テーブルとを有する。LBAテーブルのエントリは、論理アドレス(LBA)をインデックスとして、チャネルの番号と、ページに付与されたページ番号と、当該データが記憶されている前述した論理ブロックに付与された論理ブロック番号とから構成される。
論理ブロック番号は、符号元データ及び跨ぎ誤り訂正符号(冗長情報)を関連付けるための識別情報である。チャネルの番号は、ここでは、ch0〜ch4とし、当該LBAに対応するデータが記憶されている物理ブロックのあるNANDメモリ10がいずれのチャネルに接続されているかを示す。そしてページ番号は、当該LBAに対応するデータが、論理ブロック番号とチャネル番号で特定される物理ブロックの中のどのページに記憶されているかを示す。
論物変換テーブルは、論理ブロック番号と、その論理ブロックに関連付けられた各チャネルの各物理ブロックとを対応付けて記憶する。論物変換テーブルには、論理ブロック番号をインデックスとして、当該論理ブロックに関連付けられた各チャネルの物理ブロックのアドレス(物理ブロックアドレス)が記憶される。このような構成においては、ある論理アドレスに対応するLBAテーブルのエントリに記憶されていた論理ブロック番号をインデックスとし、そのインデックスで、当該論理ブロックに関する論物変換テーブルのエントリを特定する。次に、当該論物変換テーブルのエントリに記憶されている物理ブロックの中から、当該LBAテーブルのエントリに記録されていたチャネル番号のチャネルに接続されているNANDメモリ10の物理ブロックを特定する。そして、当該LBAテーブルのエントリに含まれるページ番号によって、当該論理アドレスに対応するデータが書き込まれているページを特定する。
尚、上述したように、チャネルch0〜ch3の各ページには、ホスト装置から書き込みが要求されたデータについて、ページ単位で書き込みが行なわれ、チャネルch4には、跨ぎ誤り訂正符号を構成するために付加される冗長情報が書き込まれる。このため、論物変換テーブルの各エントリに記録されるチャネルch4の物理アドレスの記憶領域には、冗長情報が各々書き込まれている。
コントローラ20は、主制御部21と、転送順管理部23を備える。主制御部21は、NANDメモリ10に記憶されているシステムプログラムを図示しない主記憶部に読み出して実行するプロセッサであり、システムプログラムを実行することで各種管理機能を実現する。主制御部21は、ホストI/F150を介して、ホスト装置から送信されたコマンドを解釈し、解釈したコマンドに応じてホストI/F150、一時記憶バッファ30、跨ぎECC回路50、NANDI/F40−0〜40−4などの構成要素を制御することで、NANDメモリ10へのデータの書き込みやNANDメモリ10からのデータの読み出しを制御する。また、主制御部21は、NANDメモリ10の整理や一時記憶バッファ30からのデータフラッシュなどが必要なときには、そのためのコマンドを作成し、一時記憶バッファ30、跨ぎECC回路50、NANDI/F40−0〜40−4などを制御する。
ここで、前述したように、本実施形態では、ホスト装置からライト要求されたデータがページのサイズより大きい場合にはこれを複数のページ単位に分割し、分割したページ単位のデータを各チャネルch0〜ch3に分散させて、書き込みを行う。また、ホスト装置からリード要求されたデータがページのサイズより大きい場合には、これを複数に分割し、分割したページ単位のデータをNANDメモリ10から読みだして一時記憶バッファ30へ転送する。このようなページ分割についての各種管理は、主制御部21で行われている。
また、主制御部21は、NANDI/F40−0〜40−4に出力する命令が跨ぎECC処理を行う必要があるか否かを判断する跨ぎECC処理判断部22を有する。跨ぎECC処理判断部22は、NANDI/F40−0〜40−4に命令を出力する際に、前述したように、この命令が跨ぎECC処理を行う必要があるか否かを示す跨ぎECCオンオフ情報Eflagを付加して出力する。以下に、跨ぎECC処理判断部22が、どのような場合に、跨ぎECCオンオフ情報Eflagをオンにするかの一例を示す。
(1)ホスト装置からのリード要求では、跨ぎECC処理を実行しない。Eflag=オフ
(2)ホスト装置からのライト要求では、跨ぎECC処理(符号化)を実行する。Eflag=オン
(3)NANDメモリ10のデータ整理を行う際のNANDメモリ10から一時記憶バッファ30へのデータ転送では、跨ぎECC処理を実行しない。Eflag=オフ
(4)ホスト装置からのリード要求の際、あるいはデータ整理を行う際のNANDメモリ10から一時記憶バッファ30へのデータ転送の際に、ページECC処理により誤り訂正不可能と判断した場合は、再度データをNANDメモリ10からリードし、リードしたデータを使用して跨ぎECC処理(復号化)を実行する。Eflag=オン
(5)ホスト装置からライト要求されたデータに対応する所望の閾値分布を形成するために、NANDメモリ10に対して複数回に渡り同一データの入力が必要な際に、当該複数回のデータ入力のうちの何れか1回に係るデータ転送のときに跨ぎECC処理(符号化)を実行し、その他のデータ転送のときには跨ぎECC処理(符号化)を行わない。Eflag=オン/オフ
ここで、上述したNANDメモリ10の整理について説明する。NANDメモリ10では、つぎのような書き込み方式が採用されていることが多い。この書き込み方式では、書き込みの前に、ブロックを消去する必要がある。NANDメモリ10では、消去をブロック単位で行ない、消去済みのブロックに対してページ単位で書き込みを行う。即ち、NANDメモリ10においては、消去済みのブロックのうち書き込みがまだ行われていないページに対して順次書き込みが可能であり、既に書き込みが行なわれたページに対する上書きは不可能である。
また、データの書き込み要求において指定された論理アドレス(LBA)が再度指定されて新たなデータの書き込み(データ更新)がホストから要求されると、SSD100では、消去済みのブロックの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。またこのとき、SSD100は、上述した跨ぎ訂正符号を構成しながら新たなデータ及び冗長情報の書き込みを行なう。
前述した管理情報記憶部60は、論理ブロックに関連付けられた各チャネルch0〜ch4の物理ブロックについて、どのページが有効でどのページが無効であるかを管理しているテーブルを有しているが、その詳細説明は省略する。
NANDメモリ10において、書き込みを続けることにより、無効にされたページが増えてくると、書き込みを実現可能な容量が少なくなってくる。そして、書き込みが可能な新規の消去済みのブロック、即ち、消去後に書き込みがまだ行なわれていないブロック(フリーブロックという)が少なくなり、フリーブロックの確保が不可能になった時点で書き込みが困難となってしまう。
これを防ぐために、SSD100では、適当なタイミングでNANDメモリ10の整理、例えばコンパクションを行う。コンパクションでは、有効なデータを集めて、違うブロックに書き直す。無効なデータしか存在しないブロックは消去され、新たなフリーブロックを生成する。このようなコンパクションの際には、NANDメモリ10のデータが一時記憶バッファ30に一旦読み出された後、再度NANDメモリ10の別のブロックに書き込まれる。
次に上述した複数回のデータ入力が必要な書き込み方式について図6を用いて説明する。複数回のデータ入力が必要な書き込み方式として、例えば、多値メモリセルにおいて隣接メモリセルへの書き込みに伴う閾値変動を抑制する為、一旦ターゲットの閾値よりも粗く書き込みを行い、隣接メモリセルへの書き込みを実行した後、ターゲットの閾値に正確に書き込みを行う方式(以下、この様な書き込み方式をフォギーファイン書き込み方式と記述する)が挙げられる。この様な書き込み方式は、例えば、特開2010−160873号公報において詳細に開示されている。
(1)まず、NANDメモリ10に下位ページ及び上位ページに対応する合計2ページ分のデータ入力を行い、ワードライン0(WL0)の下位ページ及び上位ページにデータがフォギー(ラフ)書き込みされる。
(2)次に、NANDメモリ10に下位ページ及び上位ページに対応する合計2ページ分のデータ入力を行い、ワードライン1(WL1)の下位ページ及び上位ページにデータがフォギー(ラフ)書き込みされる。
(3)次に、(1)で入力した合計2ページ分のデータと同一のデータ入力を行い、ワードライン0(WL0)の下位ページ及び上位ページにデータがファイン書き込みされる。
(4)次に、NANDメモリ10に下位ページ及び上位ページに対応する合計2ページ分のデータ入力を行い、ワードライン2(WL2)の下位ページ及び上位ページにデータがフォギー(ラフ)書き込みされる。
(5)次に、(2)で入力した合計2ページ分のデータと同一のデータ入力を行い、ワードライン1(WL1)の下位ページ及び上位ページにデータがファイン書き込みされる。以下同様である。
このようにフォギーファイン書き込み方式を採用する際には、同じページに対し2回の書き込み処理が行われるため、同一のページに対応するデータを2回入力する必要が生じる。なお、データ入力回数は2回に限るものではなく、各ページへの書き込み順序もこれに限定されるものではない。
転送順管理部23は、NANDI/F40−0〜40−4から入力された複数の跨ぎECCオンオフ情報Eflag付きデータ転送要求の実行順序を決定し、決定した実行順序にしたがった順序にNANDI/F40−0〜40−4に実行許可を出力する。実行順序の決定方法の一例を下記に示す。以下の決定方法では、コントローラ20の主制御部21の管理によってNANDI/F40−0〜40−4から通知されたデータ転送要求には符号化の要求と復号化の要求が混ざらないようにしている。
(a)NANDI/F40−0〜40−4から通知されたデータ転送要求が全て跨ぎECC処理の対象である場合(Eflag=オン)は、NANDI/F40−0〜40−4から通知されたデータ転送要求の通知順序(入力順)に関係なく、符号・復号化の順序のみに従ってデータ転送要求の実行順序を決定する。
(b)NANDI/F40−0〜40−4から通知されたデータ転送要求に、跨ぎECC処理の対象(Eflag=オン)と、非対象(Eflag=オフ)が混在する場合は、NANDI/F40−0〜40−4から通知されたデータ転送要求が跨ぎECC処理の非対象である場合には即座に実行し、跨ぎECC処理の対象である場合には符号化/復号化の順序通りであるか否かを判定し、符号化/復号化の順序通りならばすぐに実行するが、符号化/復号化の順序に反する場合には、次のNANDI/Fからのデータ転送要求の判断に移る。
(c)NANDI/F40−0〜40−4から通知されたデータ転送要求が全て跨ぎECC処理の非対象である場合(Eflag=オフ)は、転送順を判断するNANDI/Fを決定した段階でデータ転送を実行する。
次に、図7に示すフローチャートに従って転送順管理部23で行われる処理手順について説明する。転送順管理部23では、この場合、ラウンドロビンに従ってデータ転送を行うか否かを判断するNANDI/F40を決定する。この場合は、ラウンドロビン順は、NANDI/F40−0→NANDI/F40−1→NANDI/F40−2→NANDI/F40−3→NANDI/F40−0→…であるとする。
まず、転送順管理部23は、チャネルch0のNANDI/F40−0からのデータ転送要求があるか否かを判断する(ステップS100、S110)。データ転送要求がない場合は、手順をステップS190に移行する。データ転送要求がある場合は、データ転送要求の内容を読み取り(ステップS120)、この読み取り内容におけるデータ転送要求に付加されている跨ぎECCオンオフ情報Eflagに基づきこのデータ転送が跨ぎECC処理の対象か否かを判断する(ステップS130)。
転送順管理部23は、ステップS130で、このデータ転送要求が跨ぎECC処理の非対象であると判断した場合は、跨ぎECC回路50に跨ぎECC処理非実行の指示を出し(ステップS150)、またNANDI/F40−0にデータ転送の実行許可を通知する(ステップS170)。これにより、NANDI/F40−0によって、NANDI/F40−0と一時記憶バッファ30間のデータ転送が跨ぎECC処理無しで実行される(ステップS180)。このデータ転送終了後、転送順管理部23は、ラウンドロビンで決められた次のNANDI/F40−1からのデータ転送要求があるか否かを判定する(ステップS190)。
一方、ステップS130で、転送順管理部23は、今回のデータ転送要求が跨ぎECC処理の対象であると判断した場合は、ステップS120で読み取ったデータ転送要求の内容に基づき、このデータ転送要求で行われようとしている跨ぎECC処理が次に跨ぎECC処理を行わせるべきデータであるか否か、すなわちこのデータ転送要求に応答して即座に跨ぎECC処理を伴うデータ転送を行わせた場合、そのECC処理順は正しいか否かを、管理情報記憶部60に記憶されたECC処理順管理情報Eseqを用いて判定する(ステップS140)。転送順管理部23は、今回のデータ転送要求がECC処理順を守っていると判断した場合は、跨ぎECC回路50に、符号化か復号化かの識別情報を含む跨ぎECC処理実行の指示を出し(ステップS160)、またNANDI/F40−0にデータ転送の実行許可を通知する(ステップS170)。これにより、NANDI/F40−0によって、NANDI/F40−0と一時記憶バッファ30間のデータ転送が跨ぎECC処理有りで実行される(ステップS180)。
しかし、ステップS140で、転送順管理部23は、今回のデータ転送要求がECC処理順を守っていないと判断した場合は、NANDI/F40−0からの今回のデータ転送要求をスキップし、ラウンドロビンで決められた次のNANDI/F40−1からのデータ転送要求があるか否かを判定する(ステップS190)。
転送順管理部23は、次のNANDI/F40−1からデータ転送要求があるか否かを判断する(ステップS190)。NANDI/F40−1からデータ転送要求がある場合は、ステップS120〜S180の手順を前記同様にして実行し、NANDI/F40−1からのデータ転送要求に対処する。NANDI/F40−1からデータ転送要求がない場合は、全てのNANDI/Fからの要求がないか否かを判定し(ステップS200)、他のNANDI/Fからの要求がある場合は、NANDI/F40−2、40−3からのデータ転送要求に対し、前述と同様の処理を実行する。NANDI/F40−3からのデータ転送要求に対する処理が終了すると、再度NANDI/F40−0に戻り、前述と同様の処理を実行する。このようにして、全てのNANDI/F40からのデータ転送要求がなくなると、転送順管理部23は手順を終了する。
主制御部21は、転送順管理部23からの報告に基づき、1つの跨ぎ誤り訂正符号を構成する全てのデータ転送が終了したか否かを管理しており、1つの跨ぎ誤り訂正符号を構成する全てのデータ転送が終了した時点で跨ぎECC回路50に転送方向を含む冗長情報(符号化結果/復号化結果)の転送要求を通知する。転送方向とは、跨ぎECC回路50から一時記憶バッファ30への転送か、跨ぎECC回路50からNANDI/F40への転送かを識別する情報である。この通知を受けた跨ぎECC回路50では、指示された転送方向に応じて、跨ぎECC処理結果をNANDI/F40−4または一時記憶バッファ30に転送する。
例えば、ホスト装置から要求された書き込み要求の場合は、1つの跨ぎ誤り訂正符号を構成する全てのデータ転送(一時記憶バッファ30→NANDI/F40−0〜40−3)が終了した後に、跨ぎECC回路50から符号化結果がNANDI/F40−4に転送される。そして、NANDI/F40−4は、主制御部21からの命令で指定されたNANDメモリ10−4上の記憶位置に、跨ぎECC回路50から転送された符号化結果を書き込む。
次に、図8を用いて具体例について説明する。例えば、図8に示すように、NANDI/F40−0から跨ぎECC処理無しのリード要求が2つあり(Read#1、Read#2)、NANDI/F40−1から跨ぎECC処理有りのリード要求が1つあり、NANDI/F40−2から跨ぎECC処理有りのリード要求が1つあり、NANDI/F40−3から跨ぎECC処理有りのリード要求が1つある場合を想定する。この場合、跨ぎECC処理は、図8に示すように、NANDI/F40−2→NANDI/F40−1→NANDI/F40−3の順序で行う必要があるとする。
最初は、NANDI/F40−0のデータ転送要求(Read#1)が判断され、このデータ転送要求は跨ぎECC処理を伴わないので、NANDI/F40−0のデータ転送(Read#1)が即座に実行される。次に、NANDI/F40−1のデータ転送要求(復号化Read)が判断されるが、このデータ転送要求は復号化順を守っていないので、スキップされる。次に、NANDI/F40−2のデータ転送要求(復号化Read)が判断されるが、このデータ転送要求は復号化順を守っているので、このNANDI/F40−2のデータ転送要求が即実行される。次に、NANDI/F40−3のデータ転送要求(復号化Read)が判断されるが、このデータ転送要求は復号化順を守っていないので、スキップされる。
次に、NANDI/F40−0のデータ転送要求(Read#2)が判断され、このデータ転送要求は跨ぎECC処理を伴わないので、NANDI/F40−0のデータ転送(Read#2)が即実行される。次に、NANDI/F40−1のデータ転送要求(復号化Read)が判断されるが、このデータ転送要求は復号化順を守っているので、このNANDI/F40−1のデータ転送要求が即実行される。次に、NANDI/F40−1のデータ転送要求が判断されるが、データ転送要求がないので、次にスキップされる。次に、NANDI/F40−3のデータ転送要求(復号化Read)が判断されるが、このデータ転送要求は復号化順を守っているので、このNANDI/F40−3のデータ転送要求が即実行される。
次に、図9に示すフローチャートに従って主制御部21で行われるページECCでの誤り訂正不可能な場合の動作手順について説明する。主制御部21は、NANDI/F40−0〜40−3内の何れかのECC回路43から誤り訂正不可能(上述した誤訂正の発生)の報告があった場合(ステップS300:Yes)、管理情報記憶部60に記憶された図5に示したデータ−符号管理情報を用いて、誤りを検出したデータに対応する跨ぎ誤り訂正符号と、当該符号を生成するために使用された符号元データを特定する(ステップS310)。
さらに、主制御部21は、特定した符号元データと特定した跨ぎ誤り訂正符号の読み出し順序を管理情報記憶部60に記憶されたECC処理順管理情報Eseqを用いて決定し、この決定結果を転送順管理部23に指示する(ステップS320)。さらに、主制御部21は、特定した符号元データと特定した跨ぎ誤り訂正符号の読み出し要求命令をNANDI/F40に通知する(ステップS330)。
これにより、特定した跨ぎ誤り訂正符号を構成する全ての符号元データ転送(NANDI/F40−0〜40−3→一時記憶バッファ30)が終了した後に、NANDI/F40−4から跨ぎECC回路50への跨ぎ誤り訂正符号のデータ転送が行われ、その後跨ぎECC回路50から復号化結果が一時記憶バッファ30に転送される。
このように第1の実施形態によれば、一時記憶バッファ30とNANDI/F40間で転送中のデータを用いて跨ぎECC処理を実行し、跨ぎECC処理の必要/不要を判断し、不要な場合は跨ぎECC処理をスキップし、さらにNANDI/F40側の要求に関係なく跨ぎECC処理順序を守って一時記憶バッファ30とNANDI/F40間でのデータ転送を実行することとしたので、一時記憶バッファのバンド幅を圧迫することなく、スループット、システム性能を向上させることが可能となる。
なお、上記実施形態においては、転送順管理部23は、ラウンドロビンによって決められた順番でNANDI/F40からのデータ転送要求を判断する機能を備えることとしたが、NANDI/F40からデータ転送要求が入力された順番にNANDI/F40からデータ転送要求の内容を判断する機能を備えるようにしてもよく、この判断結果に基づいてNANDI/F40に対するデータ転送の実行の許可を与えるとともに、跨ぎECC回路50でのECC処理の制御を行う。
また、転送順管理部23において、NANDI/F40からのデータ転送要求の内容に基づき、当該データ転送要求がECC処理を実行するか否かと、符号化か復号化かを判定することとしてもよい。そして、ECC処理を実行すると判断し、かつ符号化であると判断した場合は、跨ぎECC回路50による跨ぎECC処理を実行させて当該データ転送を即座に実行し、符号化したデータの順序を前述したECC処理順管理情報Eseqとして記録する。また、ECC処理を実行すると判断し、かつ復号化であると判断した場合は、符号化時に記録したECC処理順管理情報Eseqを元に復号化順に従っているかを判定し、復号化順に従っている場合は跨ぎECC回路50による跨ぎECC処理を実行させて当該データ転送を即座に実行し、復号化順に従っていない場合は当該データ転送をスキップして他のNANDI/F40からのデータ転送要求の判断を行う。
(第2の実施形態)
第2の実施形態では、跨ぎECC回路50で採用する誤り訂正符号化方式として、パリティ(排他的論理和)のような、符号化/復号化順序に制約がない方式を採用する。パリティを採用した場合は、各NANDI/F40−0〜40−3のECC回路43−0〜43−3でのページECC処理の誤り訂正結果に基づき誤り位置(誤りチャネル)を検出し、この検出結果に基づいて誤り訂正復号化を行う。すなわち、図4に示したように、誤り訂正不可能なチャネルを除いた他のチャネルのデータと、符号を用いて復号化が行われる。
図10は、第2の実施形態での転送順管理部23の動作手順を示すフローチャートである。図10に示すフローチャートでは、図7に示した動作手順におけるステップS140での処理を無くしている。
まず、転送順管理部23は、チャネルch0のNANDI/F40−0からのデータ転送要求があるか否かを判断する(ステップS100、S110)。データ転送要求がない場合は、手順をステップS190に移行する。データ転送要求がある場合は、データ転送要求の内容を読み取り(ステップS120)、この読み取り内容におけるデータ転送要求に付加されている跨ぎECCオンオフ情報Eflagに基づきこのデータ転送が跨ぎECC処理の対象か否かを判断する(ステップS130)。
転送順管理部23は、このデータ転送要求が跨ぎECC処理の非対象であると判断した場合は、跨ぎECC回路50に跨ぎECC処理非実行の指示を出し(ステップS150)、またNANDI/F40−0にデータ転送の実行許可を通知する(ステップS170)。これにより、NANDI/F40−0によって、NANDI/F40−0と一時記憶バッファ30間のデータ転送が跨ぎECC処理なしで実行される(ステップS180)。このデータ転送終了後、転送順管理部23は、ラウンドロビンで決められた次のNANDI/F40−1からの次のデータ転送要求があるか否かを判定する(ステップS190)。
一方、ステップS130で、転送順管理部23は、今回のデータ転送要求が跨ぎECC処理の対象であると判断した場合は、跨ぎECC回路50に、符号化か復号化かの識別情報を含む跨ぎECC処理実行の指示を出し(ステップS160)、またNANDI/F40−0にデータ転送の実行許可を通知する(ステップS170)。これにより、NANDI/F40−0によって、NANDI/F40−0と一時記憶バッファ30間のデータ転送が跨ぎECC処理ありで実行される(ステップS180)。
転送順管理部23は、つぎのNANDI/F40−1からデータ転送要求があるか否かを判断する(ステップS190)。NANDI/F40−1からデータ転送要求がある場合は、ステップS120〜S180の手順を前記同様にして実行し、NANDI/F40−1からのデータ転送要求に対処する。NANDI/F40−1からデータ転送要求がない場合は、全てのNANDI/Fからの要求があるか否かを判定し(ステップS200)、他のNANDI/Fからの要求がある場合は、NANDI/F40−2、40−3からのデータ転送要求に対し、前述と同様の処理を実行する。NANDI/F40−3からのデータ転送要求に対する処理が終了すると、再度NANDI/F40−0に戻り、前述と同様の処理を実行する。このようにして、全てのNANDI/F40からのデータ転送要求がなくなると、転送順管理部23は手順を終了する。
このように第2の実施形態によれば、一時記憶バッファ30とNANDI/F40間で転送中のデータを用いて跨ぎECC処理を実行し、跨ぎECC処理の必要/不要を判断し、不要な場合は跨ぎECC処理をスキップすることとしたので、一時記憶バッファのバンド幅を圧迫することなく、スループット、システム性能を向上させることが可能となる。
(第3の実施の形態)
図11は、SSD200を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット、及びSSD100等が収容されている。
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
SSD100は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図12は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD100を、ATAインタフェースを介して制御する。
パーソナルコンピュータ1200は、セクタ単位でSSD100へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がSSD100に入力される。
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
[変形例]
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
上述した実施の形態において、ECC回路43で行われるページECCとしてはページ単位のデータ毎にECC符号を付加しているが、ページより小さな単位(例として512バイトのセクター単位)でECC符号を付加することも可能である。このような構成において、ページより小さな単位でデータの誤りが訂正できなかった場合は、当該データに異常が発生したとして、複数のチャネルにより構成された跨ぎECC処理を用いて、当該データを復元すれば良い。また、ECC回路43で行われるECC処理として、ページより大きくブロックより小さい単位でECC符号を付加することも可能である。
上述した実施の形態において、複数のチャネルで跨ぎ誤り訂正符号を構成する単位を、バイトとしたが、これに限らず、バイトよりも大きいサイズや小さいサイズを単位としても良い。
上述した実施の形態において、跨ぎECC処理においては、データを書き込むチャネル数を4つとし、これらのデータに対する冗長情報を書き込むチャネル数を1つとして、誤り訂正符号を構成するチャネル数を5つとしたが、これに限らない。また、跨ぎECC処理の冗長情報を書き込むためのチャネルをチャネルch4に固定したが、これに限らず、誤り訂正符号を構成する単位毎にチャネルを変更するようにしても良い。
上述した実施の形態において、チャネルとNANDメモリチップとは1対1に対応させるようにしたが、これに限らず、チャネルとNANDメモリチップとが1対複数で対応させる、即ち、1つのチャネルに対して複数のNANDメモリチップが割り当てられるようにしても良い。
上述した実施の形態において、書き込み対象データに対してチャネルを割り当てる際、チャネルch0〜ch3のうち少なくとも1つへの割り当て後、書き込み対象データがない状態が一定時間以上継続した場合、チャネルch0〜ch3のうち書き込み対象データの割り当てのないチャネルにおいて、該当のページにダミーデータ(例えば全てのビットが「0」のデータ)を書き込んで、チャネルch0〜ch3において対応する各ページのデータを用いて計算した冗長情報を、チャネルch4の対応するページを書き込むようにする。このような構成によれば、チャネルch0〜ch3の各々対応するページのうち書き込みの既に済んでいるチャネルのデータについて、誤り訂正符号が構成されず、当該データに誤りがあった場合に復元できない恐れを回避することが可能になる。
10 NANDメモリ、20 コントローラ、21 主制御部、22 跨ぎECC処理判断部、23 転送順管理部、30 一時記憶バッファ、40 NANDI/F、41 DMAコントローラ、43 ECC回路、44 メモリI/F、45 NANDI/F制御部、50 跨ぎECC回路、60 管理情報記憶部、150 ホストI/F。

Claims (11)

  1. 夫々独立に動作可能な複数のメモリ領域を有する不揮発性半導体メモリと、
    前記複数のメモリ領域に対しデータのアクセスを実行し、アクセス可能状態になったらデータ転送要求を転送管理部に出力する複数のメモリインタフェースと、
    データを一時記憶する一時記憶バッファと、
    前記複数のメモリインタフェースからのデータ転送要求の内容に基づき前記一時記憶バッファと前記複数のメモリインタフェースとの間でのデータ転送順管理を行う転送管理部と、
    データ及びECC処理の符号化結果を前記複数のメモリ領域へ分散して書き込ませるよう前記複数のメモリインタフェースを制御する制御部と、
    前記一時記憶バッファと前記複数のメモリインタフェースとの間で転送中のデータを用いて前記複数のメモリ領域へ分散して書き込むべきデータあるいは前記複数のメモリ領域へ分散して既に書き込まれたデータに関する前記ECC処理を実行するECC処理部と、
    を備え、
    前記転送管理部は、前記データ転送要求にかかるデータが前記ECC処理を実行するか否かを判定し、前記ECC処理を実行すると判定したデータにのみ前記ECC処理部でのECC処理を実行させることを特徴とする半導体記憶装置。
  2. 前記転送管理部は、前記複数のメモリインタフェースからのデータ転送要求の順序を管理する機能を備え、
    前記複数のメモリインタフェースからデータ転送要求が入力された順番で前記メモリインタフェースのデータ転送要求の内容を判断し、データ転送の実行の許可とECC処理の制御を行うことを特徴とする請求項1に記載の半導体記憶装置。
  3. 前記転送管理部は、あらかじめ定められた順番で前記メモリインタフェースからのデータ転送要求を判断する機能を備え、
    あらかじめ定められた順番に従って、前記メモリインタフェースのデータ転送要求の内容を判断し、データ転送の実行の許可とECC処理の制御を行うことを特徴とする請求項1に記載の半導体記憶装置。
  4. 前記ECC処理部には、予め決められたデータ順にECC処理を行うべきECC方式が採用されており、
    前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ECC処理を実行するか否かと、当該データ転送が前記データ順に従っているか否かを判定し、データ順に従っている場合は前記ECC処理部によるECC処理を実行させて当該データ転送を即座に実行し、データ順に従っていない場合は当該データ転送をスキップして他の前記メモリインタフェースのデータ転送要求の判断を行うことを特徴とする請求項1乃至請求項3の何れか一つに記載の半導体記憶装置。
  5. 前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ECC処理を実行するか否かと、当該データ転送が前記データ順に従っているか否かを判定し、ECC処理を実行しないと判定された場合に、前記ECC処理部によるECC処理を実行させることなく当該データ転送要求を即座に実行させることを特徴とする請求項1乃至請求項4の何れか一つに記載の半導体記憶装置。
  6. 前記ECC処理部には、予め決められたデータ順にECC処理を行う制約のないECC方式が採用されており、
    前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ECC処理を実行するか否かを判断し、判断内容に従って前記ECC処理部によるECC処理を実行させて当該データ転送を即座に実行することを特徴とする請求項1乃至請求項3の何れか一つに記載の半導体記憶装置。
  7. 前記ECC処理部には、符号化時のデータ入力順で復号化のデータ入力順がきまるECC方式が採用され、
    前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ECC処理を実行するか否かと、符号化か復号化かを判定し、符号化である場合は前記ECC処理部によるECC処理を実行させて当該データ転送を即座に実行し、符号化したデータの順序を記録することを特徴とする請求項1乃至請求項3の何れか一つに記載の半導体記憶装置。
  8. 前記ECC処理部には、符号化時のデータ入力順で復号化のデータ入力順がきまるECC方式が採用され、
    前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ECC処理を実行するか否かと、符号化か復号化かを判定し、復号化である場合は符号化時に記録した順序関係を元に復号化順に従っているかをさらに判定し、復号化順に従っている場合は前記ECC処理部によるECC処理を実行させて当該データ転送を即座に実行し、データ順に従っていない場合は当該データ転送をスキップして他の前記メモリインタフェースのデータ転送要求の判断を行うことを特徴とする請求項7に記載の半導体記憶装置。
  9. 前記ECC処理部で採用しているECC方式が巡回符号であることを特徴とする請求項1乃至請求項5、請求項7及び請求項8の何れか一つに記載の半導体記憶装置。
  10. 前記ECC処理部で採用しているECC方式が排他的論理和からパリティを計算することを特徴とする請求項1乃至請求項3、及び請求項6の何れか一つに記載の半導体記憶装置。
  11. 前記複数のメモリ領域は、複数のページを有するブロックを複数個有するメモリチップを1個以上含むことを特徴とする請求項1乃至請求項10の何れか一つに記載の半導体記憶装置。
JP2010279505A 2010-12-15 2010-12-15 半導体記憶装置 Pending JP2012128660A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010279505A JP2012128660A (ja) 2010-12-15 2010-12-15 半導体記憶装置
TW100146708A TW201246216A (en) 2010-12-15 2011-12-15 Semiconductor storage device
US13/824,542 US20130191705A1 (en) 2010-12-15 2011-12-15 Semiconductor storage device
PCT/JP2011/079756 WO2012081733A1 (en) 2010-12-15 2011-12-15 Semiconductor storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010279505A JP2012128660A (ja) 2010-12-15 2010-12-15 半導体記憶装置

Publications (1)

Publication Number Publication Date
JP2012128660A true JP2012128660A (ja) 2012-07-05

Family

ID=46244822

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010279505A Pending JP2012128660A (ja) 2010-12-15 2010-12-15 半導体記憶装置

Country Status (4)

Country Link
US (1) US20130191705A1 (ja)
JP (1) JP2012128660A (ja)
TW (1) TW201246216A (ja)
WO (1) WO2012081733A1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9087614B2 (en) 2012-11-27 2015-07-21 Samsung Electronics Co., Ltd. Memory modules and memory systems
JP2017107390A (ja) * 2015-12-09 2017-06-15 株式会社東芝 ビデオサーバ装置およびデータ書き込み/読み出し方法
JP2019185596A (ja) * 2018-04-16 2019-10-24 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2019191909A (ja) * 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
WO2021106514A1 (ja) * 2019-11-28 2021-06-03 ソニーセミコンダクタソリューションズ株式会社 コントローラおよび記憶装置
JP2022009357A (ja) * 2017-12-08 2022-01-14 キオクシア株式会社 メモリシステムおよび制御方法
JP2022121654A (ja) * 2018-04-25 2022-08-19 キオクシア株式会社 メモリシステム
JP2022171773A (ja) * 2019-01-29 2022-11-11 キオクシア株式会社 メモリシステムおよび制御方法
US11947837B2 (en) 2017-12-08 2024-04-02 Kioxia Corporation Memory system and method for controlling nonvolatile memory

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9116823B2 (en) * 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US9734086B2 (en) 2006-12-06 2017-08-15 Sandisk Technologies Llc Apparatus, system, and method for a device shared between multiple independent hosts
JP2013029882A (ja) 2011-07-26 2013-02-07 Toshiba Corp メモリコントローラ、半導体記憶装置および復号方法
US8640013B2 (en) 2011-09-22 2014-01-28 Kabushiki Kaisha Toshiba Storage device
JP5674700B2 (ja) 2012-03-22 2015-02-25 株式会社東芝 符号化装置および符号化装置の制御方法、ならびに、記憶装置
CN107341071A (zh) * 2013-08-23 2017-11-10 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
JP5657079B1 (ja) * 2013-10-24 2015-01-21 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
KR102659892B1 (ko) 2018-07-24 2024-04-24 삼성전자주식회사 객체 인식 장치, 이를 포함하는 전자 장치 및 객체 인식 방법
US10789126B2 (en) 2018-10-09 2020-09-29 Micron Technology, Inc. Multiple memory devices having parity protection
CN110704235B (zh) * 2019-09-23 2023-03-21 深圳忆联信息***有限公司 Ssd数据保护的方法、装置、计算机设备及存储介质
JP2023037877A (ja) * 2021-09-06 2023-03-16 キオクシア株式会社 メモリシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002091831A (ja) * 2000-09-12 2002-03-29 Hitachi Ltd データ処理システム及びデータ処理方法
KR101398212B1 (ko) * 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
JP2010020648A (ja) * 2008-07-12 2010-01-28 Hitachi Ulsi Systems Co Ltd 記憶装置
KR20100104623A (ko) * 2009-03-18 2010-09-29 삼성전자주식회사 데이터 처리 시스템 및 그것의 부호율 제어 스킴
US8510631B2 (en) * 2009-11-24 2013-08-13 Mediatek Inc. Multi-channel memory apparatus and method thereof
JP2012155541A (ja) * 2011-01-26 2012-08-16 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9087614B2 (en) 2012-11-27 2015-07-21 Samsung Electronics Co., Ltd. Memory modules and memory systems
JP2017107390A (ja) * 2015-12-09 2017-06-15 株式会社東芝 ビデオサーバ装置およびデータ書き込み/読み出し方法
JP2022179797A (ja) * 2017-12-08 2022-12-02 キオクシア株式会社 メモリシステムおよび制御方法
US11947837B2 (en) 2017-12-08 2024-04-02 Kioxia Corporation Memory system and method for controlling nonvolatile memory
JP7400053B2 (ja) 2017-12-08 2023-12-18 キオクシア株式会社 メモリシステムおよび制御方法
JP2022009357A (ja) * 2017-12-08 2022-01-14 キオクシア株式会社 メモリシステムおよび制御方法
JP7167291B2 (ja) 2017-12-08 2022-11-08 キオクシア株式会社 メモリシステムおよび制御方法
JP2019185596A (ja) * 2018-04-16 2019-10-24 東芝メモリ株式会社 メモリシステムおよび制御方法
JP7051546B2 (ja) 2018-04-16 2022-04-11 キオクシア株式会社 メモリシステムおよび制御方法
JP7281585B2 (ja) 2018-04-25 2023-05-25 キオクシア株式会社 メモリシステム
US11543997B2 (en) 2018-04-25 2023-01-03 Kioxia Corporation Memory system and method for controlling nonvolatile memory
JP2022121654A (ja) * 2018-04-25 2022-08-19 キオクシア株式会社 メモリシステム
US11861218B2 (en) 2018-04-25 2024-01-02 Kioxia Corporation Memory system and method for controlling nonvolatile memory
JP2019191909A (ja) * 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2022171773A (ja) * 2019-01-29 2022-11-11 キオクシア株式会社 メモリシステムおよび制御方法
JP7381678B2 (ja) 2019-01-29 2023-11-15 キオクシア株式会社 メモリシステム
WO2021106514A1 (ja) * 2019-11-28 2021-06-03 ソニーセミコンダクタソリューションズ株式会社 コントローラおよび記憶装置
US11853162B2 (en) 2019-11-28 2023-12-26 Sony Semiconductor Solutions Corporation Controller and storage device

Also Published As

Publication number Publication date
WO2012081733A1 (en) 2012-06-21
US20130191705A1 (en) 2013-07-25
TW201246216A (en) 2012-11-16

Similar Documents

Publication Publication Date Title
JP2012128660A (ja) 半導体記憶装置
US8904261B2 (en) Data management in solid state storage devices
US9136020B2 (en) Semiconductor memory device
US10157016B2 (en) Memory management system and method
US9152546B2 (en) Fault-tolerant non-volatile integrated circuit memory
US8448018B2 (en) Stripe-based memory operation
US9135112B2 (en) Policy for read operations addressing on-the-fly decoding failure in non-volatile memory
US8453033B2 (en) Semiconductor memory device
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
KR101732030B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US8671330B2 (en) Storage device, electronic device, and data error correction method
JP5651457B2 (ja) 半導体記憶装置
US9390003B2 (en) Retirement of physical memory based on dwell time
US20140075099A1 (en) Control method and memory system of non-volatile semiconductor memory
WO2015102035A1 (en) Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency
KR20230160620A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
US9612913B2 (en) System, method and a non-transitory computer readable medium for protecting snapshots