JP2021086406A - コントローラおよび記憶装置 - Google Patents

コントローラおよび記憶装置 Download PDF

Info

Publication number
JP2021086406A
JP2021086406A JP2019215091A JP2019215091A JP2021086406A JP 2021086406 A JP2021086406 A JP 2021086406A JP 2019215091 A JP2019215091 A JP 2019215091A JP 2019215091 A JP2019215091 A JP 2019215091A JP 2021086406 A JP2021086406 A JP 2021086406A
Authority
JP
Japan
Prior art keywords
data
controller
read
error correction
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
JP2019215091A
Other languages
English (en)
Inventor
塁 阪井
Rui Sakai
塁 阪井
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.)
Sony Semiconductor Solutions Corp
Original Assignee
Sony Semiconductor Solutions 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 Sony Semiconductor Solutions Corp filed Critical Sony Semiconductor Solutions Corp
Priority to JP2019215091A priority Critical patent/JP2021086406A/ja
Priority to PCT/JP2020/041328 priority patent/WO2021106514A1/ja
Priority to US17/777,915 priority patent/US11853162B2/en
Publication of JP2021086406A publication Critical patent/JP2021086406A/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】高い信頼性と性能とを両立するコントローラおよび記憶装置を提供する。【解決手段】本開示によるコントローラは、ライトされるデータの一部を含む複数のデータ断片を、それぞれ誤り訂正機能を備えた複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、信号線を介して取得したそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部を使って消失訂正を行うように構成された第1復号器とを備える。【選択図】図1

Description

本開示は、コントローラおよび記憶装置に関する。
近年、微細化プロセス、多層構造、マルチレベルセルなどの技術が採用されたNANDフラッシュメモリなどのメモリの開発が行われている。特に、最先端のメモリによって、記憶装置の大容量化が期待されている。最先端のメモリの適用においては、用途に応じた容量、速度、信頼性などの要件を満たすことが求められる。
特開2014−238871号公報 特開2010−79485号公報
ただし、最先端のメモリでは、微細化プロセスまたはマルチレベルセルの採用に伴うビット誤り率の増大への対策が必要となる。このため、LDPC(Low Density Parity Check)符号、軟判定繰り返し符号などの誤り訂正符号の導入が進められている。これらの符号は、高い誤り訂正能力を有する反面、メモリチップ・コントローラ間のトラフィック、消費電力、レイテンシなど性能面への影響が課題となっている。
そこで、本開示は、高い信頼性と性能とを両立するコントローラおよび記憶装置を提供する。
本開示の一態様によるコントローラは、ライトされるデータの一部を含む複数のデータ断片のそれぞれを、誤り訂正機能を備えた複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、信号線を介して取得したそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部を使って消失訂正を行うように構成された第1復号器とを備えていてもよい。
前記処理回路は、前記信号線を参照し、誤り訂正の完了した前記メモリチップから順に前記データ断片を読み出すように構成されていてもよい。
前記第1復号器は、前記処理回路が前記データ断片の書き込まれた前記メモリチップのうち、一部の前記メモリチップから前記データ断片が読み出されたときに消失訂正を行うように構成されていてもよい。
前記第1復号器は、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、前記処理回路が読み出した前記データ断片を使って消失訂正を行うように構成されていてもよい。
前記処理回路は、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されていてもよい。
本開示の一態様によるコントローラは、ライトされるデータの一部を含む複数のデータ断片を複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、前記処理回路が前記データ断片を前記メモリチップに書き込む前に、前記データ断片を誤り訂正符号によって符号化するように構成された第2符号化器と、前記処理回路が前記メモリチップより読み出した前記データ断片の誤り訂正を行うように構成された第2復号器と、リードされる前記データに相当する前記データ断片のうち、前記第2復号器による誤り訂正が完了した一部の前記データ断片を使って消失訂正を行うように構成された第1復号器とを備えていてもよい。
前記第1復号器は、前記第2復号器が少なくともいずれかの前記データ断片の誤り訂正を行っているときに、誤り訂正が完了している残りの前記データ断片を使って消失訂正を行うように構成されていてもよい。
本開示の一態様による記憶装置は、誤り訂正機能を有する複数のメモリチップと、ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、前記データを複数の前記データ断片に分割し、前記データ断片のそれぞれを複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、信号線を介して取得されたそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備えていてもよい。
前記コントローラは、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、読み出した前記データ断片を使って消失訂正を行うように構成されていてもよい。
前記メモリチップは、前記コントローラが書き出した前記データ断片を誤り訂正符号によって符号化してからメモリセルに保存するように構成された第2符号化器と、リードされる前記データに相当する前記データ断片の誤り訂正を行い、前記信号線を介して誤り訂正の完了状況または成否を前記コントローラに通知するように構成された第2復号器とを含んでいてもよい。
前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されていてもよい。
前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されていてもよい。
前記メモリチップは、NANDフラッシュメモリを含んでいてもよい。
前記コントローラは、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されていてもよい。
前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備えていてもよい。
本開示の一態様による記憶装置は、複数のメモリチップと、ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、前記データを複数の前記データ断片に分割し、前記データ断片を誤り訂正符号によって符号化し、複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、前記データをリードするときに、前記メモリチップより読み出した前記データ断片の誤り訂正を行い、リードされる前記データに相当する前記データ断片のうち、誤り訂正の完了した一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備えていてもよい。
前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されていてもよい。
前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されていてもよい。
前記メモリチップは、NANDフラッシュメモリを含んでいてもよい。
前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備えていてもよい。
本開示による記憶装置を含むシステムの例を示した図。 ネットワークを介してホストシステムに接続された記憶装置の例を示す図。 本開示による記憶装置の例を概略的に示したブロック図。 本開示によるコントローラの例を概略的に示したブロック図。 インタフェース回路が有する信号線の例を示す図。 本開示によるインタフェース回路が有する信号線の例を示す図。 本開示によるメモリチップの例を概略的に示したブロック図。 データのライト処理の例を示したフローチャート。 複数のメモリチップにデータ断片の読み出し要求を行った後における動作の例を示したタイミングチャート。 コントローラにおける状態遷移の例を示す図。 リード時におけるデータフローを概念的に示した図。 消失訂正処理の実行タイミングの例を示した図。 データのリード処理の例を示したフローチャート。 変形例1による記憶装置の例を概略的に示したブロック図。 変形例1による記憶装置の読み出し処理の例を示したフロー図。 変形例1による記憶装置における消失訂正処理の実行タイミングの例を示したタイミングチャート。 信号線Read Readyの配線例を示したブロック図。 変形例2によるコントローラの例を概略的に示したブロック図。 変形例2によるメモリチップの例を概略的に示したブロック図。 変形例2におけるデータのライト処理の例を示したフローチャート。 すべてのメモリチップから読み出されたデータの誤り訂正処理が完了するまで待機する場合におけるタイミングチャート。 変形例2で共通のデータ線が使われる場合における記憶装置のリード時のデータフローを概念的に示した図。 変形例2で共通のデータ線が使われる場合における記憶装置のリード処理の例を示すタイミングチャート。 すべてのメモリチップから読み出されたデータの誤り訂正処理が完了するまで待機する場合におけるタイミングチャート。 変形例2でメモリチップごとにデータ線が用意されている場合における記憶装置のリード時のデータフローを概念的に示した図。 変形例2でメモリチップごとにデータ線が用意されている場合における記憶装置のリード処理の例を示すタイミングチャート。 変形例2におけるデータのリード処理の例を示したフローチャート。
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
図1は、本開示による記憶装置を含むシステムの例を示している。図1のシステム1は、ホストシステム2と、ホストシステム2に接続された記憶装置100とを含んでいる。ホストシステム2は、例えば、CPU(中央処理装置)を備えたコンピュータなどの情報処理装置である。記憶装置100は、ホストシステム2が利用可能な記憶領域を提供する。
記憶装置100は、複数のメモリチップ20と、コントローラ10とを備える。コントローラ10は、バス3を介してホストシステム2に接続されている。バス3は、例えば、PCI Express、M.2、U.2、Serial Attached SCSI、NVM Express、USB(Universal Serial Bus)などの物理インタフェースである。コントローラ10と、ホストシステム2との間の物理インタフェースの種類については、問わない。メモリチップ20は、例えば、NANDフラッシュメモリ、NORフラッシュメモリ、相変化型メモリ、磁気抵抗メモリ、抵抗変化型メモリなどの不揮発性メモリを含む。なお、メモリチップ20は、複数の種類の不揮発性メモリを組み合わせたものであってもよい。また、メモリチップ20は、DRAM、SRAMなどの揮発性メモリを含んでいてもよい。
要求される記憶容量、ライト速度、リード速度または使われるメモリセルの信頼性に応じて記憶装置100に実装するメモリチップ20の数を決めることができる。図1には、4つのメモリチップ20が示されている。ただし、記憶装置100に実装されるメモリチップ20の数Nについては、限定しない。なお、記憶装置100は、バッテリーまたはキャパシタなど電力を蓄えることが可能な構成要素を備えていてもよい。これらの構成要素は、突然の電源断時に、揮発性メモリ上のデータを不揮発性メモリにバックアップするために必要な電力を供給し、データの損失を防止する。
図2は、ネットワークを介してホストシステムに接続された記憶装置の例を示している。図2のシステム1Aは、ホストシステム2と、記憶装置100Aとを含んでいる。ホストシステム2は、ネットワーク5を介して記憶装置100Aと通信することが可能である。ネットワーク5は、例えば、TCP/IP、Fibre Channel、Infinibandなどによるパケット通信が可能な通信ネットワークである。ネットワーク5として、有線、無線または有線と無線の組み合わせによって構築された通信ネットワークを使うことができる。ネットワーク5で使われる通信プロトコルの種類については、問わない。
記憶装置100Aは、記憶装置100の構成要素に加え、インタフェース変換回路4を備えている。インタフェース変換回路4は、コントローラ10と、ネットワーク5との間に接続されている。インタフェース変換回路4は、コントローラ10から出力されるデータをネットワーク5で転送可能な形式(例えば、パケット)に変換する。また、インタフェース変換回路4は、ホストシステム2から送信されたパケットをコントローラ10に入力可能な形式のデータに変換する。インタフェース変換回路4として、例えば、NVMe over Fabricsに対応した回路を使うことができる。
インタフェース変換回路4の機能によって、ホストシステム2は、ネットワーク5を介して記憶装置のリード処理またはライト処理を行うことが可能となる。なお、図2の例のようにインタフェース変換回路4と、コントローラ10とを別個の回路に分けず、インタフェース変換回路4に相当する機能と、コントローラ10に相当する機能とを統合した回路を使ってもよい。
図3のブロック図は、本開示による記憶装置の例を概略的に示している。図3は、記憶装置100におけるコントローラ10と、複数のメモリチップ20との間の配線の例を示している。信号線DQ(図3の実線)は、メモリチップ20とコントローラ10との間のデータ線に相当している。図3の構成では、コントローラ10に接続された1本の信号線DQが分岐し、複数のメモリチップ20に接続されている。信号線DQは、データリードとデータライトの用途で共用されるものであってもよい。また、データリードとデータライトの用途で別個の信号線が用意されていてもよい。一方、図3の破線は、メモリチップ20におけるデータリードの可否を示す状態信号をコントローラ10に供給する信号線Read Readyを示している。図3では、コントローラ10が個別の信号線Read Readyを介してそれぞれのメモリチップ20に接続されている。
なお、本開示による記憶装置は、図3に示されていないその他の信号線を備えていてもよい。また、図3に示したデータ線および信号線Read Readyの配線は、一例にしかすぎない。したがって、データ線および信号線Read Readyの配線は、これとは異なっていてもよい。
図4のブロック図は、本開示によるコントローラの例を概略的に示している。図4のコントローラ10は、例えば、マイクロプロセッサを含むSystem−on−a−chipなどのハードウェア回路である。ハードウェア回路の例としては、各種のプロセッサ、ASICまたはFPGAが挙げられる。ただし、コントローラ10を実装するために使われるハードウェア回路の種類については、問わない。コントローラ10の少なくとも一部の機能は、マイクロプロセッサ上で動作するファームウェアなどのプログラムによって実行されていてもよい。この場合、コントローラ10は、プログラムおよびプログラムの実行に必要なデータを保存するメモリを備えていてもよい。図4のコントローラ10は、処理回路11と、ルックアップテーブル12と、ブロック管理テーブル13と、第1符号化器14と、第1復号器15と、第1インタフェース回路16とを備えている。
コントローラ10は、ルックアップテーブル12を使って、論理アドレスと、複数のメモリチップ20における物理アドレスとの対応関係を管理する。論理アドレスとして、例えば、ホストから指定される論理ブロックアドレス(LBA)を使うことができる。また、物理アドレスとして、例えば、物理ブロックアドレスを使うことができる。ルックアップテーブル12において、LBAと関連付けられている物理ブロックは、有効ブロックとよばれる。一方、ルックアップテーブル12において、いずれのLBAとも関連付けられていない物理ブロックは、無効ブロックとよばれる。コントローラ10は、データのライトまたは消去が行われるときに、ルックアップテーブル12を更新することができる。
コントローラ10は、ブロック管理テーブル13を使って、メモリチップ20の物理ブロックごとの消去回数、メモリチップ20の不良ブロック、有効ブロック/無効ブロックの情報を管理してもよい。コントローラ10は、ルックアップテーブル12およびブロック管理テーブル13を使って、物理ブロックにおけるウェアレベリングを行ってもよい。ウェアレベリングでは、ホストからデータのライト要求を受信した場合、無効ブロックのうち、消去回数の最も少ない物理ブロックをデータのライト先に指定する。これにより、メモリチップ20の複数の物理ブロックにおける消去回数を均一化し、メモリセルの劣化を遅らせることができる。
コントローラ10は、ホストシステム2がライトするデータを一時的に保存するライトバッファを備えていてもよい。また、コントローラ10は、メモリチップ20からリードされたデータを一時的に保存するリードバッファを備えていてもよい。バッファとして、例えば、SRAMまたはDRAMなどの揮発性メモリを使うことができる。ライトバッファまたはリードバッファとして、コントローラ10の外部に配置された揮発性メモリを使ってもよい。
メモリチップ20でNANDフラッシュメモリが使われている場合、コントローラ10は、データのリードおよびライトをページ単位で行うことができる。1ページのサイズは、例えば、512バイト、1キロバイト、2キロバイト、4キロバイト、8キロバイトである。ただし、ページのサイズについては、問わない。
コントローラ10は、1ページより大きいサイズのデータのライト要求を受けた場合、同一物理ブロック内の複数のページへ順番に書き込みを行うことができる。ただし、コントローラ10は、ライト済みのページに上書きをすることができない。この代わり、コントローラ10は、NANDフラッシュメモリ上のデータをページより大きい粒度である、ブロックの単位で消去する。1ブロックは、例えば、32ページ〜512ページを含む。ただし、ブロックに含まれるページ数は、これとは異なっていてもよい。
コントローラ10は、NANDフラッシュメモリ上のデータを更新するために、Read−Modify−Writeとよばれる処理を実行する。例えば、コントローラ10がライト済みのファイルを更新する要求を受けた場合を想定する。この場合、コントローラ10は、該当するファイルを含む物理ブロックのデータを読み出し、バッファ内に保存する。そして、コントローラ10は、バッファ上でファイルの更新を行う。そして、コントローラ10は、以前ファイルがライトされていた物理ブロックとは異なる物理ブロック内に更新後のファイルと書き込む。このとき、無効ブロックにデータを書き込む場合には、物理ブロックの消去を行ってからファイルの書き込みを行う。
本開示のように、複数のメモリチップ20を備えた記憶装置を使う場合、コントローラ10の処理回路11は、データのライト時に、データをデータ断片に分割し、データ断片を並列的にそれぞれのメモリチップ20の物理ブロックに書き込むことができる。データ断片のサイズは、使用するメモリの種類またはメモリの使用に応じて決めることができる。例えば、NANDフラッシュメモリを使う場合には、データ断片を物理ブロックに等しいサイズまたは物理ブロックの正の整数倍に等しいサイズにすることができる。
コントローラ10は、複数のメモリチップ20に跨って連続的なブロックアドレスを設定してもよい。このブロックアドレスは、上述の物理ブロックアドレスと同一のアドレスであってもよい。また、このブロックアドレスとして、上述の物理ブロックアドレスを所定の規則または数式などによって変換して得られるアドレスを使ってもよい。コントローラ10は、上述の処理を実現するために、それぞれのメモリチップ20から選択された物理ブロックの集合であるスーパーブロックを定義してもよい。例えば、メモリチップ20がN個ある場合、N個の物理ブロックまたはN×i(iは、正の整数)個の物理ブロックを含むスーパーブロックを定義することができる。この場合、コントローラ10は、スーパーブロック単位でデータの消去を行ってよい。また、コントローラ10は、個別の物理ブロック単位でデータの消去を行ってもよい。
コントローラ10は、インターリーブされたメモリおよびストライピングされたハードディスクと同じように、複数のメモリチップ20を使うことが可能である。このため、単一のメモリチップ20を使う場合と比べてライト処理およびリード処理を高速化することが可能となる。コントローラ10は、必ず記憶装置のすべてのメモリチップ20に対してデータ断片を書き込まなくてよい。例えば、記憶装置がM個のメモリチップ20を備える場合、ライト対象のデータのサイズまたはメモリチップ20の状態に応じて、Mより少ない数のメモリチップ20にデータ断片を書き込んでもよい。
コントローラ10は、複数のメモリチップ20におけるガベージコレクションを行ってもよい。ガベージコレクションの処理では、複数の有効ブロック内のページに分散されて保存されているライト済みのデータが読み出される。そして、ライト済みのデータが以前より少ない数のブロックに集約されて、複数のメモリチップ20に書き込まれる。これにより、コントローラ10は、データの書き込みに使用可能なフリーブロックを確保することができる。
第1符号化器14は、消失訂正符号を使い、ライト対象のデータにパリティを付加する。ライト処理時にそれぞれのメモリチップ20に書き込まれるデータサイズに応じて、パリティが付加される単位を決めることができる。例えば、第1符号化器14は、M(Mは、1より大きい整数)ブロック分のデータごとに、パリティを付加することができる。Mは、メモリチップ20の個数Nに等しい値に設定してもよい。また、MをN/j(jは、1より大きい整数)に設定してもよい。さらに、Mを上述のスーパーブロックに含まれる物理ブロック数に等しい値に設定してもよい。例えば、MをN×iに設定することができる。ただし、第1符号化器14は、これとは異なる単位でパリティを付加してもよい。例えば、第1符号化器14は、所定のページ数ごとにパリティを付加してもよい。
第1符号化器14は、例えば、BCH符号、RS符号、低密度パリティ検査(LDPC)符号、またはラプター符号による符号化を行うことができる。第1符号化器14は、消失訂正が可能であれば、どの種類の誤り訂正符号(ECC)を使ってもよい。第1符号化器14が使用する誤り訂正符号を第1符号とよぶものとする。
第1復号器15は、第1符号化器14と同じ種類の誤り訂正符号を使い、データの復号を行うように構成されている。例えば、第1復号器15は、データのリード時に、後述の第2符号による誤り訂正が完了したデータ断片を使い、第1符号による消失訂正を行うことができる。例えば、第1復号器15は、M個のデータ断片のうち、M−u個のデータ断片の誤り訂正が完了したときに、消失訂正を行うことができる。消失訂正の能力は、データライト時に付加されるパリティの比率および採用される誤り訂正符号の種類に依存する。このため、消失訂正時に許容される欠損データ断片の数uは、[1,M−1]の範囲の任意の整数をとりうる。なお、第1復号器15を使って消失訂正だけでなく、繰り返し復号などを用いたデータの誤り訂正を行ってもよい。
監視部17は、例えば、処理回路11の内部の構成要素である。監視部17は、データのリード時に、第2符号による誤り訂正が完了したデータ断片の数を監視する。図4の構成の場合、監視部17は、コントローラ10が複数のメモリチップ20より第1復号器15による消失訂正が可能なM−u個のデータ断片を受信したときに、第1復号器15に通知を行う。これにより、第1復号器15は、消失訂正を開始することができる。
図5および図6は、第1インタフェース回路16が有する信号線の例を示している。このように、コントローラ10は、第1インタフェース回路16を介して複数のメモリチップ20と電気的に接続されている。はじめに、図5および図6で共通している信号線について説明する。コントローラ10は、信号線RESETを介してメモリチップ20にリセット用の信号を送信する。コントローラ10は、信号線CKおよび信号線CK#を使って、メモリチップ20に差動クロックを供給する。コントローラ10は、信号線CSを介して、メモリチップ20にチップセレクト信号を送信する。
信号線DQ、信号線DQSおよび信号線DQS#では、コントローラ10と、メモリチップ20との間で双方向の通信が可能となっている。信号線DQは、コントローラとメモリチップ間のデータ線に相当する。信号線DQSおよび信号線DQS#は、データ転送用のクロック信号が供給されるデータストローブである。図3の構成のように、1本の信号線DQが複数のメモリチップ20で共有される場合、異なるメモリチップ20から読み出されたデータは、シリアルに転送される。
図5の信号線Ready/Busyは、それぞれのメモリチップ20と、コントローラ10との間を接続する。それぞれのメモリチップ20は、当該メモリチップ20に格納されたデータへのアクセスが行われているときに、信号線Ready/Busyの電圧をHIGHにする。一方、それぞれのメモリチップ20は、当該メモリチップ20に格納されたデータへのアクセスが行われていないときに、信号線Ready/Busyの電圧をLOWにする。
一方、図6は、本開示によるインタフェース回路が有する信号線の例を示している。図6の信号線Read Readyは、信号線Ready/Busyと同様、それぞれのメモリチップ20と、コントローラ10との間を接続する。信号線Read Readyの用途は、信号線Ready/Busyと異なっている。信号線Read Readyは、該当するメモリチップ20でデータ断片の誤り訂正処理が行われているか否かを示す。例えば、メモリチップ20は、データ断片の誤り訂正処理の実行中に、信号線Read Readyの電圧をHIGHにする。一方、メモリチップ20は、データ断片の誤り訂正処理を行っていないときに、信号線Read Readyの電圧をLOWにすることができる。
上述の信号線Read Readyの使用方法は、一例にしかすぎない。例えば、それぞれの条件において上述のHIGHとLOWが反転した電圧レベルを使ってもよい。また、電圧信号のパルスまたは電流信号の向きによって状態を表現してもよい。
上述では、メモリチップ20が信号線Read Readyを使って誤り訂正処理の完了状況をコントローラ10に通知する場合を例に説明した。ただし、メモリチップ20は、信号線Read Readyを使って誤り訂正の成否をコントローラ10に通知してもよい。例えば、メモリチップ20は、信号線Read Readyを使って誤り訂正が成功した旨をコントローラ10に通知してもよい。また、メモリチップ20は、信号線Read Readyを使って誤り訂正が失敗した旨をコントローラ10に通知してもよい。
コントローラ10の監視部17は、信号線Read Readyを参照すれば、メモリチップ20における誤り訂正が完了したか否かを確認することができる。これにより、監視部17は、レジスタの読み出しを行わずに、簡易な方法でメモリチップ20における処理状況に関する情報を得ることができる。これにより、処理時間を短縮することができる。なお、信号線Read Readyとして、必ず専用の信号線を用意しなくてもよい。例えば、信号線Read Readyは、複数の用途のために兼用される信号線であってもよい。
図7のブロック図は、本開示によるメモリチップの例を概略的に示している。図7のメモリチップ20は、メモリ21と、リードライト回路22とを備えている。メモリ21は、例えば、NANDフラッシュメモリなどの不揮発性メモリであり、メモリチップ20の記憶領域を提供する。ただし、メモリ21は、その他の種類のメモリであってもよい。データアクセスの局所性に対応するために、メモリ21は、階層化されたキャッシュ領域を含んでいてもよい。また、メモリ21は、ライト時およびリード時に使われるバッファメモリを含んでいてもよい。バッファメモリとして、例えば、SRAMまたはDRAMなどの揮発性メモリを使うことができる。すなわち、メモリ21は、複数の種類のメモリを含んでいてもよい。リードライト回路22は、第2インタフェース回路23と、第2符号化器24と、第2復号器25とを含んでいる。第2インタフェース回路23は、複数の信号線(例えば、図6の信号線)を介して、コントローラ10の第1インタフェース回路16と電気的に接続されている。
第2符号化器24は、リードライト回路22がデータ断片のライト要求を受信したときに誤り訂正符号を使い、データ断片にパリティを付加する。例えば、それぞれのメモリチップ20に物理ブロックと等しいサイズのデータ断片が書き込まれる場合、第2符号化器24は、物理ブロック単位で符号化を行うことができる。また、それぞれのメモリチップ20にi個の物理ブロックと等しいサイズのデータ断片が書き込まれる場合、第2符号化器24は、i個の物理ブロックごとに符号化を行ってもよい。
さらに、第2符号化器24は、メモリチップ20に書き込まれるデータ断片のサイズに関わらず、物理ブロックより小さい粒度で符号化を行ってもよい。例えば、第2符号化器24は、ページ単位または複数ページ単位で符号化を行ってもよい。ただし、第2符号化器24による符号化の粒度については、問わない。一般に、符号化の粒度は、メモリセルにおけるエラー発生率、メモリの劣化状態、記憶装置100の用途などに応じて決められる。
第2符号化器24は、例えば、ハミング符号、巡回符号、疎グラフ符号または、畳み込み符号などの誤り訂正符号を使うことができる。ただし、第2符号化器24が使用する誤り訂正符号の種類については、問わない。第2符号化器24が使用する誤り訂正符号を第2符号とよぶものとする。第2符号は、上述の第1符号と同じ種類の符号であってもよいし、異なる種類の符号であってもよい。
第2復号器25は、リードライト回路22がデータ断片の読み出し要求を受信したときに、読み出されるべきデータ断片の誤り訂正を行う。第2復号器25は、第2符号化器24と、同一の誤り訂正符号を使って、データ断片の復号を行うものとする。例えば、第2符号化器24は、データ断片の誤り訂正処理の実行中に信号線Read Readyの電圧をHIGHにする。この場合、第2符号化器24は、データ断片の誤り訂正処理が完了したら、信号線Read Readyの電圧をLOWにする。上述のように第2符号化器24は、これとは異なる方法で誤り訂正処理の完了状況または誤り訂正処理の成否をコントローラ10に通知してもよい。
図8のフローチャートは、データのライト処理の例を示している。以下では、図8のフローチャートを参照しながら、本開示による記憶装置におけるライト処理の例を説明する。
はじめに、コントローラ10は、ホストシステム2よりデータのライト要求を受信する(ステップS101)。そして、コントローラ10の第1符号化器14は、複数(例えば、M)ブロック分のデータごとに、第1符号による符号化を行う(ステップS102)。次に、コントローラ10の処理回路11は、第1符号によって符号化されたデータを複数のデータ断片に分割する(ステップS103)。例えば、メモリチップ20で使われている物理ブロックのサイズ、同一のメモリチップ20に書き込まれる物理ブロック数に応じて、データの分割数(データ断片のサイズ)を決めることができる。コントローラ10は、データ断片を一時的にライトバッファに保存してもよい。
そして、コントローラ10は、それぞれのデータ断片を対応するメモリチップ20に転送する(ステップS104)。ここで、コントローラ10は、上述のルックアップテーブル12を参照し、ホストシステム2から指定された論理ブロックアドレスを物理ブロックアドレスに変換してもよい。コントローラ10は、物理ブロックアドレスを得ることにより、データ断片の転送先となるメモリチップ20および当該メモリチップ20内の物理ブロックを特定することができる。また、コントローラ10は、上述のブロック管理テーブル13を参照し、データのライトが可能な物理ブロックを探索してもよい。
次に、それぞれのメモリチップ20の第2符号化器24は、第2符号によってデータ断片を符号化する(ステップS105)。第2符号化器24は、バッファメモリ上に保存されたデータ断片を符号化し、パリティを付加してもよい。そして、それぞれのメモリチップ20は、第2符号によって符号化されたデータ断片をメモリ21内に保存する。メモリ21に書き込まれる符号化後のデータ断片は、1物理ブロックサイズであってもよいし、複数物理ブロックのサイズであってもよい。最後に、それぞれのメモリチップ20は、第2符号によって符号化されたデータ断片をメモリ21内の記憶領域に保存する(ステップS106)。
ここまでは、本開示による記憶装置におけるライト処理について説明した。以下では、本開示による記憶装置におけるリード処理について述べる。
図9は、複数のメモリチップにデータ断片の読み出し要求を行った後の動作例を示すタイミングチャートである。図9は、メモリチップ#1〜#4の4個のメモリチップからデータ断片が読み出されたときの動作を示している。図9のタイミングチャートC1は、図5の信号線Read/Busyを有する記憶装置における動作を示している。一方、図9のタイミングチャートC2は、図6の信号線Read Readyを有する記憶装置における動作を示している。
タイミングチャートC1には、信号線Ready/Busyにおける電圧レベルが示されている。一方、タイミングチャートC1には、信号線Read Readyにおける電圧レベルが示されている。いずれの信号線においても、LOWがメモリチップのReady状態(リードが可能な状態)を示しているものとする。また、タイミングチャートC1およびC2には、信号線DQを使って転送されるコマンドおよびデータが示されている。
タイミングチャートC1において、コントローラ10は、Senseコマンドをメモリチップ#1〜#4に送信している。そして、コントローラ10は、それぞれのメモリチップへシーケンシャルにRegReadコマンドを送信している。図9の例において、コントローラ10は、信号線Ready/Busyを参照し、メモリチップがready状態に遷移した順序でRegReadコマンドを送信している。
コントローラ10は、RegReadコマンドを送信することにより、第2復号器25による誤り訂正処理の成否を示すレジスタの値を取得することができる。レジスタは、例えば、メモリチップのリードライト回路22に実装される。そして、コントローラ10は、レジスタの値を参照し、誤り訂正に成功しているメモリチップに対して、DatReadコマンドを送信する。図9の例では、メモリチップ#3において、誤り訂正が失敗し、その他のメモリチップにおいて、誤り訂正が成功している。したがって、コントローラ10は、メモリチップ#1、#2および#4に対して、DatReadコマンドを送信している。DatReadコマンドへの応答として、メモリチップ#1、#2および#4は、データ断片(Data #1、Data#4およびData#2)をコントローラ10に送信している。コントローラ10は、メモリチップからデータ断片を受信した後、メモリチップにClearコマンドを送信する。
タイミングチャートC2においても、コントローラ10は、Senseコマンドをメモリチップ#1〜#4に送信している。ただし、コントローラ10は、メモリチップにRegReadコマンドを送信していない。その代わりに、コントローラ10は、信号線Read Readyを参照し、誤り訂正が完了した順序でメモリチップにDatReadコマンドを送信している。図9の例では、メモリチップ#3における誤り訂正処理が遅延しているため、残りのメモリチップに対してDatReadコマンドが送信されている。コントローラ10は、応答として、残りのメモリチップからデータ断片(Data #1、Data#4およびData#2)を受信している。コントローラ10は、メモリチップからデータ断片を受信した後、メモリチップにClearコマンドを送信する。
本開示による記憶装置では、信号線Read Readyを参照し、誤り訂正の完了したメモリチップよりデータ断片の読み出しを行う。このため、復号結果を確認するためにレジスタの値を読み出す必要がなくなる。複数のメモリチップに分散して保存されたデータのリード時におけるレイテンシを減らし、全体的なリード処理を高速化することが可能となる。
図10は、本開示によるコントローラにおける状態遷移の例を示している。図10では、状態間の遷移の条件となるコマンドおよび信号線の状態を示している。例えば、コントローラ10がReady状態にあるメモリチップに対してDatReadコマンドを発行すると、当該メモリチップは、Reading状態に遷移する。データ断片の読み出しが完了すると、メモリチップは、DataEnd状態に遷移する。コントローラ10がDataEnd状態のメモリチップにClearコマンドを送信すると、メモリチップは、init状態に遷移する。そして、メモリチップは、一定期間の経過後、Sensing状態に遷移する。
コントローラ10がSensing状態のメモリチップにSenseコマンドを送信すると、メモリチップは、WaitReady状態に遷移する。そして、信号線Read Readyの電圧がHIGHからLOWに変化すると、メモリチップは、Ready状態に遷移する。コントローラ10は、それぞれのメモリチップの状態を管理し、処理の整合性を保つことができる。なお、メモリチップの状態遷移は、図10に例示したものとは異なるものであってもよい。
図11は、図3の構成のように、信号線DQが複数のメモリチップで共有されている場合におけるリード時のデータフローを概念的に示している。はじめに、複数のメモリチップで誤り訂正処理が行われ、誤り訂正処理の完了したメモリチップについて、シーケンシャルな読み出し処理が行われる(ステップS10)。そして、コントローラ10は、リード処理の開始時より経過した時間および/または誤り訂正が完了したデータ断片数に基づき、処理内容を決定することができる(ステップS11)。
例えば、ホストシステム2からリード要求を受けたときから所定の時間内に、すべてのデータ断片の誤り訂正が完了した場合、コントローラ10の処理回路11は、データ断片を結合し、リードされるべきデータを再構成する(ステップS13)。再構成されたデータは、ホストシステム2に転送される。また、ホストシステム2からリード要求を受けたときから所定の時間内に、第1符号化器14による消失訂正が可能な数のデータ断片の誤り訂正が完了した場合、消失訂正を行う(ステップS12)。消失訂正によって再構成されたデータは、ホストシステム2に転送される。なお、ホストシステム2からリード要求を受けたときから所定の時間内に、上述のいずれの条件も満たされない場合、コントローラ10は、リード処理を中断し、ホストシステム2にリード失敗の通知を行ってもよい。
図12のタイミングチャートは、消失訂正処理の実行タイミングの例を示している。図12の横軸は、時刻を示している。図12には、チップ#1〜#5に対して、Senseコマンドが発行されている。チップ#1〜#5のうち、チップ#1〜#3およびチップ#5は、第2符号化器24による誤り訂正処理が完了し、Ready状態に遷移する。このとき、信号線Read Readyの電圧は、LOWになる。このため、コントローラ10は、チップ#1〜#3およびチップ#5に対して、Readコマンドを発行する。一方、チップ#4は、Ready状態に遷移しないため、信号線Read Readyの電圧がHIGHのままとなる。このため、コントローラ10は、チップ#4に対してReadコマンドを発行しない。
この結果、コントローラ10は、チップ#1〜#3およびチップ#5から消失訂正用のパリティを含むデータ断片を読み出すことができる。コントローラ10の第1符号化器14は、読み出されたデータ断片を使って消失訂正を行い、データのリカバリを行う。リカバリしたデータは、ホストシステム2に転送される。
このように、処理が遅延しているメモリチップからのデータ断片の読み出しを待たずに消失訂正を行うことにより、一部のメモリチップにおける処理遅延の影響を軽減し、記憶装置における全体的なリード処理の高速化を実現することができる。
図13のフローチャートは、データのリード処理の例を示している。以下では、図13のフローチャートを参照しながら、本開示による記憶装置におけるリード処理の例を説明する。
はじめに、コントローラ10は、ホストシステム2よりデータのリード要求を受信する(ステップS201)。そして、コントローラ10は、ルックアップテーブル12を参照し、リード対象のデータに相当する複数のデータ断片が保存されているメモリチップ20と、物理ブロックとを特定し、複数のメモリチップに対して該当する物理ブロックの読み出し開始を要求する(ステップS202)。次に、それぞれのメモリチップ20の第2復号器25は、物理ブロックにあるデータ断片の第2符号による誤り訂正を開始する(ステップS203)。ここで、それぞれのメモリチップ20は、信号線(例えば、上述の信号線Read Readyなど)を介して、データ断片の誤り訂正が完了した旨をコントローラ10に通知することができる。
そして、コントローラ10は、対象となるすべてのメモリチップ20においてデータ断片の誤り訂正が完了したか否かを判定する(ステップS204)。例えば、リード対象のデータに相当するデータ断片が記憶装置100のすべてのメモリチップ20に保存されている場合、コントローラ10は、ステップS204ですべてのメモリチップ20においてデータ断片の誤り訂正が完了したか否かを確認する。一方、リード対象のデータに相当するデータ断片が記憶装置100の一部のメモリチップ20に保存されている場合、コントローラ10は、ステップS204で一部のメモリチップ20についてデータ断片の誤り訂正が完了したか否かを確認すればよい。
ステップS204における判定の結果に応じて、処理が分岐する。対象となるすべてのメモリチップ20においてデータ断片の誤り訂正が完了した場合(ステップS204のYES)、コントローラ10の処理回路11は、誤り訂正の完了した複数のデータ断片を読み出して結合し、リード対象のデータを再構成する(ステップS205)。例えば、コントローラ10は、図9のタイミングチャートC2で例示したように、いずれかのメモリチップ20でデータ断片の誤り訂正の完了が確認された順に、データ断片を読み出してもよい。ただし、コントローラ10は、これとは異なるタイミングでデータ断片を読み出してもよい。なお、それぞれのメモリチップ20からデータ断片がシーケンシャルに読み出される場合、データ断片が読み出される順序については、問わない。例えば、コントローラ10は、バッファメモリまたはキャッシュメモリ上に複数のデータ断片を配置し、データの再構成を行うことができる。
そして、コントローラ10の第1復号器15は、必要に応じて、第1符号によって再構成されたデータの誤り訂正を行うことができる(ステップS206)。ただし、コントローラ10は、ステップS206の処理を省略してもよい。最後に、コントローラ10は、リード対象のデータをホストシステム2に転送する(ステップS209)。
対象となるすべてのメモリチップ20においてデータ断片の誤り訂正が完了していない場合(ステップS204のNO)、コントローラ10は、所定の数のメモリチップ20においてデータ断片の誤り訂正が完了したか否かを判定する(ステップS207)。ここで、所定の数として、第1復号器15が消失訂正を行うために必要なデータ断片の数M−uを使うことができる。ただし、ステップS207でこれより大きい整数値を使ってもよい。
ステップS207における判定の結果に応じて、処理が分岐する。データ断片の誤り訂正が完了したメモリチップ20の数が所定の数に満たない場合(ステップS207のNO)、コントローラ10は、再びステップS204の判定を実行する。所定の数のメモリチップ20においてデータ断片の誤り訂正が完了した場合(ステップS207のYES)、コントローラ10は、誤り訂正の完了したデータ断片を読み出し、第1復号器15を使って第1符号によるデータの消失訂正を行う(ステップS208)。例えば、コントローラ10は、バッファメモリまたはキャッシュメモリ上にデータ断片を配置し、消失訂正を行うことができる。最後に、コントローラ10は、消失訂正したデータをホストシステム2に転送する(ステップS209)。
図14のブロック図は、変形例1による記憶装置の例を概略的に示している。図14は、記憶装置101におけるコントローラ10と、複数のメモリチップ20との間の配線の構成例を示している。信号線DQ(図14の実線)は、メモリチップ20とコントローラ10との間のデータ線に相当する。図14では、コントローラ10が個別の信号線DQを介してそれぞれのメモリチップ20に接続されている。また、図3の記憶装置100と同様、コントローラ10は、個別の信号線Read Readyを介してそれぞれのメモリチップ20に接続されている。このように、本開示によるコントローラは、個別のデータ線によって複数のメモリチップ20と接続されていてもよい。図14の構成を採用すると、コントローラ10は、並列で複数のメモリチップとの間でデータ伝送を行うことができる。信号線DQは、データリードとデータライトの用途で共用されるものであってもよい。また、データリードとデータライトの用途のために別個の信号線が用意されていてもよい。
なお、本開示による記憶装置は、図14に示されていないその他の信号線を備えていてもよい。また、図14に示したデータ線および信号線Read Readyの配線は、一例にしかすぎない。したがって、データ線および信号線Read Readyの配線は、これとは異なっていてもよい。
図15は、図14の例のように、メモリチップごとに信号線DQが用意されている場合におけるリード時のデータフローを概念的に示している。はじめに、複数のメモリチップで誤り訂正処理が行われ、誤り訂正処理の完了したメモリチップ20について読み出し処理が行われる(ステップS10A)。ステップS10Aでは、複数のメモリチップ20について、並列的に読み出し処理が行われてもよい。そして、コントローラ10は、リード処理の開始時より経過した時間および/または誤り訂正が完了したデータ断片数に基づき、処理内容を決定する(ステップS11)。
例えば、ホストシステム2からリード要求を受けたときから所定の時間内に、すべてのデータ断片の誤り訂正が完了した場合、コントローラ10の処理回路11は、データ断片を結合し、リードされるべきデータを再構成する(ステップS13)。再構成されたデータは、ホストシステム2に転送される。また、ホストシステム2からリード要求を受けたときから所定の時間内に、第1符号化器14による消失訂正が可能な数のデータ断片の誤り訂正が完了した場合、消失訂正を行う(ステップS12)。消失訂正によって再構成されたデータは、ホストシステム2に転送される。なお、ホストシステム2からリード要求を受けたときから所定の時間内に、上述のいずれの条件も満たされない場合、コントローラ10は、リード処理を中断し、ホストシステム2にリード失敗の通知を行ってもよい。ステップS10Aを除けば、図15のデータフローは、上述の図11と同様である。
図16のタイミングチャートは、変形例1による記憶装置における消失訂正処理の実行タイミングの例を示している。図16の横軸は、時刻を示している。図16のタイミングチャートでは、図12の例と同様に、チップ#4のみ、Ready状態に遷移せず、信号線Read Readyの電圧がHIGHのままとなっている。このため、コントローラ10は、チップ#1〜#3およびチップ#5から消失訂正用のパリティを含むデータ断片を読み出す。コントローラ10の第1符号化器14は、読み出したデータ断片を使って消失訂正を行う。リカバリされたデータは、ホストシステム2に転送される。
変形例1によるコントローラは、複数のデータ線(信号線DQ)を使い、複数のメモリチップ20から並列でデータ断片を読み出すことができる。このため、図16のタイミングチャートでは、図12と比べて所要時間が短くなっている。データ線が図14のように配線された記憶装置においても、処理が遅延しているメモリチップからのデータ断片の読み出しを待たずに消失訂正を行うことが可能である。一部のメモリチップにおける処理遅延の影響を軽減し、記憶装置における全体的なリード処理を高速化することができる。
上述では、メモリチップ20からコントローラ10に、第2符号による誤り訂正の状況が通知される場合を例に説明した。ただし、コントローラ10は、メモリチップ20における誤り訂正の状況をホストシステム2に通知してもよい。
例えば、不揮発性メモリの効率的な活用または記憶装置の性能向上などの目的のために、ホストシステム2側で、ブロック管理またはメモリチップ20の制御の少なくとも一部を行う場合がありうる。このような場合、コントローラ10は、図1のバス3または図2のネットワーク5を介して、複数のメモリチップ20における誤り訂正の状況をホストシステム2に通知することができる。例えば、コントローラ10は、ホストシステム2に誤り訂正の完了したメモリチップ20の情報または誤り訂正の完了していないメモリチップ20の情報をホストシステム2に通知することができる。また、コントローラ10は、ホストシステム2に、メモリチップ20における誤り訂正の結果を通知してもよい。
そして、通知を受けたホストシステム2は、コントローラ10に対してメモリチップ20からのデータ断片の読み出し、消失訂正の実行、または一定期間の待機などの指令を送信することができる。上述のコントローラ10が実行していた処理の少なくとも一部がホストシステム2によって実行される場合においても、記憶装置における全体的なリード処理の高速化を実現することが可能である。
図17のブロックは、信号線Read Readyの配線例を示している。図17の記憶装置102では、コントローラ10に接続された1本の信号線Read Readyが分岐し、複数のメモリチップ20に接続されている。このように、複数のメモリチップ20における誤り訂正の完了状況または誤り訂正の成否は、共通の信号線を介して通知されてもよい。図17の構成が採用される場合、それぞれのメモリチップ20は、メモリチップ20の識別子とともに誤り訂正の完了状況または誤り訂正の成否を含む信号をコントローラ10に送信することができる。
以下では、本開示によるコントローラの構成の概要を説明する。
本開示によるコントローラは、処理回路と、第1符号化器と、第1復号器とを備えていてもよい。処理回路は、ライトされるデータの一部を含む複数のデータ断片のそれぞれを、誤り訂正機能を備えた複数のメモリチップのうち、いずれかのメモリチップに書き込み、リードされるデータに相当するデータ断片をメモリチップより読み出すように構成されている。第1符号化器は、それぞれのデータ断片がパリティを含むよう、ライトされるデータを消失訂正符号によって符号化するように構成されている。第1復号器は、信号線を介して取得したそれぞれのメモリチップにおけるデータ断片の誤り訂正の完了状況または成否に応じ、リードされるデータに相当するデータ断片のうち、一部を使って消失訂正を行うように構成されている。
処理回路は、信号線を参照し、誤り訂正の完了したメモリチップから順にデータ断片を読み出すように構成されていてもよい。第1復号器は、処理回路がデータ断片の書き込まれたメモリチップのうち、一部のメモリチップからデータ断片が読み出されたときに消失訂正を行うように構成されていてもよい。第1復号器は、少なくともいずれかのメモリチップが誤り訂正を行っているときに、処理回路が読み出したデータ断片を使って消失訂正を行うように構成されていてもよい。処理回路は、それぞれのメモリチップにおけるデータ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されていてもよい。
また、本開示による記憶装置の構成の概要も説明する。
本開示による記憶装置は、誤り訂正機能を有する複数のメモリチップと、コントローラとを備えていてもよい。コントローラは、ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、データを消失訂正符号によって符号化し、データを複数のデータ断片に分割し、データ断片のそれぞれを複数のメモリチップのうち、いずれかのメモリチップに書き込むように構成されている。また、コントローラは、信号線を介して取得されたそれぞれのメモリチップにおけるデータ断片の誤り訂正の完了状況または成否に応じ、リードされるデータに相当するデータ断片のうち、一部のデータ断片を使って消失訂正を行うように構成されている。コントローラは、少なくともいずれかのメモリチップが誤り訂正を行っているときに、読み出したデータ断片を使って消失訂正を行うように構成されていてもよい。
本開示による記憶装置において、メモリチップは、第2符号化器と、第2復号器とを含んでいてもよい。第2符号化器は、コントローラが書き出したデータ断片を誤り訂正符号によって符号化してからメモリセルに保存するように構成されている。第2復号器は、リードされるデータに相当するデータ断片の誤り訂正を行い、信号線を介して誤り訂正の完了状況または成否をコントローラに通知するように構成されている。
本開示による記憶装置において、コントローラは、個別のデータ線を介して複数のメモリチップと電気的に接続されていてもよい。コントローラは、共通のデータ線を介して複数のメモリチップと電気的に接続されていてもよい。メモリチップは、NANDフラッシュメモリを含んでいてもよい。コントローラは、それぞれのメモリチップにおけるデータ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されていてもよい。
本開示による記憶装置は、インタフェース変換回路をさらに備えていてもよい。インタフェース変換回路は、コントローラがリードしたデータをネットワークで転送可能なパケットに変換し、ネットワークより受信したパケットをコントローラに入力可能な形式に変換するように構成されている。
以下では、符号化器および復号器の配置が上述と異なる記憶装置の例について説明する。
図18のブロック図は、変形例2によるコントローラの例を概略的に示している。図18のコントローラ10Aは、図4のコントローラ10の構成要素に加え、第2符号化器18と、第2復号器19とを備えている。第2符号化器18と、第2復号器19は、それぞれ図7のメモリチップ20の第2符号化器24と、第2復号器25に相当する機能を備える。すなわち、本開示による記憶装置では、コントローラ側で第2符号による符号化の処理および第2符号による誤り訂正(復号)の処理が行われてもよい。なお、第2符号による符号化の処理および第2符号による誤り訂正処理がコントローラ側で実行される場合、メモリチップとコントローラとの間の信号線Read Readyを省略することが可能である。
コントローラ10Aは、第2符号化器18と第2復号器19のペアを複数個備えていてもよい。図18では、回路ブロック1000が第2符号化器18と、第2復号器19のペアを含んでいる。例えば、個別のデータ線を介してそれぞれのメモリチップに接続されているコントローラ10Aが、それぞれのメモリチップのライト/リードのために、専用の第2符号化器18/第2復号器19を使用できるよう、メモリチップ20の数に等しいM個の回路ブロック1000を用意してもよい。これにより、並列的なライト/リードが発生するときに、第2符号化器18/第2復号器19が処理上のボトルネックとなることを防ぐことができる。ただし、コントローラ10Aが備える第2符号化器18および第2復号器19の個数については、限定しない。
図19のブロック図は、変形例2によるメモリチップの例を概略的に示している。図19のメモリチップ20Aは、メモリ21と、第2インタフェース回路23とを備えている。図18に例示したように、コントローラ側に第2符号化器および第2復号器が配置されている場合、メモリチップ側の第2符号化器および第2復号器を省略してもよい。第2符号化器24および第2復号器25が省略されている点を除けば、メモリチップ20Aの構成および機能は、図7のメモリチップ20と同様である。
図20のフローチャートは、変形例2におけるデータのライト処理の例を示している。以下では、図20のフローチャートを参照しながら、本開示による記憶装置におけるライト処理の例を説明する。
はじめに、コントローラ10Aは、ホストシステム2よりデータのライト要求を受信する(ステップS111)。そして、コントローラ10Aの第1符号化器14は、複数(例えば、M)ブロック分のデータごとに、第1符号による符号化を行う(ステップS112)。次に、コントローラ10Aの処理回路11は、第1符号によって符号化されたデータを複数のデータ断片に分割する(ステップS113)。例えば、メモリチップ20Aで使われている物理ブロックのサイズ、同一のメモリチップ20Aに書き込まれる物理ブロック数に基づいてデータの分割数(データ断片のサイズ)を決めることができる。コントローラ10Aは、データ断片を一時的にライトバッファに保存してもよい。
そして、コントローラ10Aの第2符号化器18は、第2符号によりデータ断片を符号化する(ステップS114)。それぞれのメモリチップ20Aに書き込まれるデータサイズに基づき、第2符号化器18による符号化の粒度を決めることができる。例えば、メモリチップ20Aに書き込まれるデータ断片が物理ブロックのサイズに等しい場合、物理ブロック単位または物理ブロックの1/s倍(sは、1より大きい整数)の単位で符号化を行ってもよい。また、メモリチップ20Aに書き込まれるデータ断片がi個の物理ブロックのサイズに等しい場合、i個の物理ブロックごと、物理ブロックごと、または物理ブロックの1/s倍の単位で符号化を行うことができる。ただし、第2符号化器18による符号化の粒度は、これとは異なっていてもよい。
次に、コントローラ10Aは、それぞれの符号化されたデータ断片を対応するメモリチップ20Aに転送する(ステップS115)。ここで、コントローラ10Aは、上述のルックアップテーブル12を参照し、ホストシステム2から指定された論理ブロックアドレスを物理ブロックアドレスに変換してもよい。コントローラ10Aは、物理ブロックアドレスを得ることにより、データ断片の転送先となるメモリチップ20Aおよび当該メモリチップ20A内の物理ブロックを特定することができる。また、コントローラ10Aは、上述のブロック管理テーブル13を参照し、データ断片の書き込みが可能な物理ブロックを探索してもよい。最後に、それぞれのメモリチップ20は、第2符号によって符号化されたデータ断片をメモリ21内に書き込む(ステップS116)。
図18および図19のコントローラ10Aと、複数のメモリチップ20Aとの間の信号線の構成には、複数のパターンがありうる。例えば、図3の例のように、コントローラ10Aは、共通のデータ線を介して複数のメモリチップ20Aと接続されていてもよい。以下では、データ転送に共通のデータ線が使われる場合におけるリード処理の例を説明する。
図21は、コントローラ10Aが共通のデータ線を介して複数のメモリチップ20Aと接続されており、すべてのメモリチップから読み出されたデータの誤り訂正処理が完了するまで待機する場合におけるタイミングチャートである。図21の横軸は、時刻を示している。図21の例で、コントローラ10Aは、メモリチップ#1〜#5よりシーケンシャルに読み出しを行っている。そして、コントローラ10Aの第2復号器19は、読み出したデータ断片の誤り訂正処理を行う。メモリチップ#1、#2、#3および#5から読み出したデータ断片については、第2符号による誤り訂正処理が完了している。誤り訂正済みのデータ断片は、消失訂正用のパリティを含んでいる。一方、メモリチップ#4から読み出したデータ断片については、誤り訂正処理が完了していない。
図21の例では、メモリチップ#4から読み出したデータ断片の誤り訂正ができないと判定されてから、第1復号器15がメモリチップ#1、#2、#3および#5から読み出したデータ断片を使い、第1符号による消失訂正処理を行っている。したがって、メモリチップ#4に影響されて記憶装置における全体的なリード処理が遅延している。図21の処理が行われる場合、メモリチップ#4から読み出したデータ断片の誤り訂正が遅れて完了する場合にも、全体的なリード処理が遅延するおそれがある。そこで、本開示によるコントローラおよび記憶装置のように、誤り訂正処理が未完了のデータ断片があっても、誤り訂正の完了したデータ断片を使って消失訂正処理を実行してもよい。
図22は、変形例2で共通のデータ線が使われる場合における記憶装置のリード時のデータフローの例を概念的に示している。はじめに、コントローラ10Aは、複数のメモリチップ20Aからシーケンシャルにデータ断片を読み出す(ステップS20)。そして、コントローラ10Aは、読み出したデータ断片について、第2符号による誤り訂正処理を行う(ステップS21)。図22の例のように、コントローラ10Aは、第2符号による誤り訂正処理を並列的に行ってもよい。また、コントローラ10Aは、第2符号による誤り訂正処理をシーケンシャルに行ってもよい。
そして、コントローラ10Aは、リード処理の開始時より経過した時間および/または誤り訂正が完了したデータ断片数に基づき、処理内容を決定することができる(ステップS22)。例えば、ホストシステム2からリード要求を受けたときから所定の時間内に、すべてのデータ断片の誤り訂正が完了した場合、コントローラ10の処理回路11は、データ断片を結合し、リードされるべきデータを再構成する(ステップS24)。再構成されたデータは、ホストシステム2に転送される。また、ホストシステム2からリード要求を受けたときから所定の時間内に、第1符号化器14による消失訂正が可能な数のデータ断片の誤り訂正が完了した場合、消失訂正を行う(ステップS23)。消失訂正によって再構成されたデータは、ホストシステム2に転送される。なお、ホストシステム2からリード要求を受けたときから所定の時間内に、上述のいずれの条件も満たされない場合、コントローラ10Aは、リード処理を中断し、ホストシステム2にリード失敗の通知を行ってもよい。
図23は、変形例2で共通のデータ線が使われる場合における記憶装置のリード処理の例を示すタイミングチャートである。図23の横軸は、時刻を示している。図23の例でも、コントローラ10Aは、メモリチップ#1〜#5よりシーケンシャルに読み出しを行っている。そして、コントローラ10Aの第2復号器19は、読み出したデータ断片の誤り訂正処理を行う。メモリチップ#1、#2、#3および#5から読み出したデータ断片については、第2符号による誤り訂正処理が完了している。誤り訂正済みのデータ断片は、消失訂正用のパリティを含んでいる。一方、メモリチップ#4から読み出したデータ断片については、誤り訂正処理が完了していない。
図23の例では、第1復号器15が第1符号による消失訂正が可能な数のデータ断片の消失訂正が完了したときに消失訂正処理を行っている。すなわち、第1復号器15は、メモリチップ#1、#2、#3および#5から読み出したデータ断片を使って第1符号による消失訂正処理を行っている。コントローラ10Aは、メモリチップ#4から読み出したデータ断片の誤り訂正処理の完了または誤り訂正の失敗判定がされるまで待たない。したがって、一部のメモリチップにおける処理遅延の影響を軽減し、記憶装置における全体的なリード処理を高速化することが可能である。
また、図14の例のように、コントローラ10Aは、個別のデータ線を介してそれぞれのメモリチップ20Aに接続されていてもよい。以下では、個別のデータ線と使ってデータ転送が行われる場合におけるリード処理の例を説明する。
図24は、コントローラ10Aが個別のデータ線を介してそれぞれのメモリチップ20Aに接続されており、すべてのメモリチップから読み出されたデータの誤り訂正処理が完了するまで待機する場合におけるタイミングチャートである。図24の横軸は、時刻を示している。図24の例で、コントローラ10Aは、メモリチップ#1〜#5の並列的な読み出しを行っている。そして、コントローラ10Aの第2復号器19は、読み出されたデータ断片の誤り訂正処理を行う。メモリチップ#1、#2、#3および#5から読み出したデータ断片については、第2符号による誤り訂正処理が完了している。誤り訂正済みのデータ断片は、消失訂正用のパリティを含んでいる。一方、メモリチップ#4から読み出したデータ断片については、誤り訂正処理が完了していない。
図24の例では、メモリチップ#4から読み出したデータ断片の誤り訂正ができないと判定されてから、第1復号器15がメモリチップ#1、#2、#3および#5から読み出したデータ断片を使い、第1符号による消失訂正処理を行っている。したがって、メモリチップ#4に影響されて記憶装置における全体的なリード処理が遅延している。図24の処理が行われる場合、メモリチップ#4から読み出したデータ断片の誤り訂正が遅れて完了する場合にも、全体的なリード処理が遅延するおそれがある。そこで、本開示によるコントローラおよび記憶装置のように、誤り訂正処理が未完了のデータ断片があっても、誤り訂正の完了したデータ断片を使って消失訂正処理を実行してもよい。
図25は、変形例2でメモリチップごとにデータ線が用意されている場合における記憶装置のリード時のデータフローの例を概念的に示している。はじめに、コントローラ10Aは、複数のメモリチップ20Aから並列でデータ断片を読み出す(ステップS20A)。そして、コントローラ10Aは、読み出したデータ断片について、第2符号による誤り訂正処理を行う(ステップS21)。図22の例のように、コントローラ10Aは、第2符号による誤り訂正処理を並列的に行ってもよい。また、コントローラ10Aは、第2符号による誤り訂正処理をシーケンシャルに行ってもよい。
そして、コントローラ10Aは、リード処理の開始時より経過した時間および/または誤り訂正が完了したデータ断片数に基づき、処理内容を決定することができる(ステップS22)。例えば、ホストシステム2からリード要求を受けたときから所定の時間内に、すべてのデータ断片の誤り訂正が完了した場合、コントローラ10の処理回路11は、データ断片を結合し、リードされるべきデータを再構成する(ステップS24)。再構成されたデータは、ホストシステム2に転送される。また、ホストシステム2からリード要求を受けたときから所定の時間内に、第1符号化器14による消失訂正が可能な数のデータ断片の誤り訂正が完了した場合、消失訂正を行う(ステップS23)。消失訂正によって再構成されたデータは、ホストシステム2に転送される。なお、ホストシステム2からリード要求を受けたときから所定の時間内に、上述のいずれの条件も満たされない場合、コントローラ10Aは、リード処理を中断し、ホストシステム2にリード失敗の通知を行ってもよい。
図26は、変形例2でメモリチップごとにデータ線が用意されている場合における記憶装置のリード処理の例を示している。図26の横軸は、時刻を示している。図26の例でも、コントローラ10Aは、メモリチップ#1〜#5より並列で読み出しを行っている。そして、コントローラ10Aの第2復号器19は、読み出したデータ断片の誤り訂正処理を行う。メモリチップ#1、#2、#3および#5から読み出したデータ断片については、第2符号による誤り訂正処理が完了している。誤り訂正済みのデータ断片は、消失訂正用のパリティを含んでいる。一方、メモリチップ#4から読み出したデータ断片については、誤り訂正処理が完了していない。
図26の例では、第1復号器15が第1符号による消失訂正が可能な数のデータ断片の消失訂正が完了したときに消失訂正処理を行っている。すなわち、第1復号器15は、メモリチップ#1、#2、#3および#5から読み出したデータ断片を使って第1符号による消失訂正処理を行っている。コントローラ10Aは、メモリチップ#4から読み出したデータ断片の誤り訂正処理の完了または誤り訂正の失敗判定がされるまで待たない。したがって、一部のメモリチップにおける遅延の影響を軽減し、記憶装置における全体的なリード処理を高速化することができる。
図27のフローチャートは、変形例2におけるデータのリード処理の例を示している。以下では、図27のフローチャートを参照しながら、本開示による記憶装置におけるリード処理の例を説明する。
はじめに、コントローラ10Aは、ホストシステム2よりデータのリード要求を受信する(ステップS211)。そして、コントローラ10Aは、ルックアップテーブル12を参照し、リード対象のデータに相当する複数のデータ断片が保存されているメモリチップ20Aと、物理ブロックとを特定し、複数のメモリチップより該当するデータ断片を読み出す(ステップS212)。コントローラ10Aは、複数のメモリチップよりデータ断片をシーケンシャルに読み出してよい。また、コントローラ10Aは、複数のメモリチップより複数データ断片を並列的に読み出してもよい。すなわち、コントローラ10Aによるデータ断片の読み出しの順序およびタイミングについては、限定しない。次に、コントローラ10Aの第2復号器19は、メモリチップ20Aから読み出したデータ断片の第2符号による誤り訂正を開始する(ステップS213)。
そして、コントローラ10Aは、対象となるすべてのデータ断片の誤り訂正が完了したか否かを判定する(ステップS214)。例えば、N個のメモリチップ20Aのそれぞれよりデータ断片を読み出した場合、コントローラ10Aは、ステップS204でN個のデータ断片の誤り訂正が完了したか否かを確認する。
ステップS214における判定の結果に応じて、処理が分岐する。対象となるすべてのデータ断片の誤り訂正が完了した場合(ステップS214のYES)、コントローラ10Aの処理回路11は、誤り訂正の完了した複数のデータ断片を結合し、リード対象のデータを再構成する(ステップS215)。例えば、コントローラ10Aは、バッファメモリまたはキャッシュメモリ上に複数のデータ断片を配置し、データの再構成を行うことができる。
そして、コントローラ10Aの第1復号器15は、必要に応じて、第1符号によって再構成されたデータの誤り訂正を行うことができる(ステップS216)。ただし、コントローラ10Aは、ステップS216の処理を省略してもよい。最後に、コントローラ10Aは、リード対象のデータをホストシステム2に転送する(ステップS219)。
対象となるすべてのデータ断片の誤り訂正が完了していない場合(ステップS214のNO)、コントローラ10Aは、所定の数のデータ断片の誤り訂正が完了したか否かを判定する(ステップS217)。ここで、所定の数として、第1復号器15が消失訂正を行うために必要なデータ断片の数M−uを使うことができる。ただし、ステップS217でこれより大きい整数値を使ってもよい。
ステップS217における判定の結果に応じて、処理が分岐する。誤り訂正が完了したデータ断片の数が所定の数に満たない場合(ステップS217のNO)、コントローラ10Aは、再びステップS214の判定を実行する。所定の数のデータ断片の誤り訂正が完了した場合(ステップS217のYES)、コントローラ10Aの第1復号器15は、誤り訂正の完了したデータ断片を使って第1符号によるデータの消失訂正を行う(ステップS218)。例えば、コントローラ10Aは、バッファメモリまたはキャッシュメモリ上にデータ断片を配置し、消失訂正を行うことができる。最後に、コントローラ10Aは、消失訂正したデータをホストシステム2に転送する(ステップS219)。
以下では、本開示によるコントローラの構成の概要を説明する。
本開示によるコントローラは、処理回路と、第1符号化器と、第2符号化器と、第2復号器と、第1復号器とを備えていてもよい。処理回路は、ライトされるデータの一部を含む複数のデータ断片を複数のメモリチップのうち、いずれかのメモリチップに書き込み、リードされるデータに相当するデータ断片をメモリチップより読み出すように構成されている。第1符号化器は、それぞれのデータ断片がパリティを含むよう、ライトされるデータを消失訂正符号によって符号化するように構成されている。第2符号化器は、処理回路がデータ断片をメモリチップに書き込む前に、データ断片を誤り訂正符号によって符号化するように構成されている。第2復号器は、処理回路がメモリチップより読み出したデータ断片の誤り訂正を行うように構成されている。第1復号器は、リードされるデータに相当するデータ断片のうち、第2復号器による誤り訂正が完了した一部のデータ断片を使って消失訂正を行うように構成されている。
第1復号器は、第2復号器が少なくともいずれかのデータ断片の誤り訂正を行っているときに、誤り訂正が完了している残りのデータ断片を使って消失訂正を行うように構成されていてもよい。
また、本開示による記憶装置の構成の概要も説明する。
本開示による記憶装置は、複数のメモリチップと、コントローラとを備えていてもよい。コントローラは、ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、データを消失訂正符号によって符号化し、データを複数のデータ断片に分割し、データ断片を誤り訂正符号によって符号化し、複数のメモリチップのうち、いずれかのメモリチップに書き込むように構成されている。また、コントローラは、データをリードするときに、前記メモリチップより読み出した前記データ断片の誤り訂正を行い、リードされるデータに相当するデータ断片のうち、誤り訂正の完了した一部のデータ断片を使って消失訂正を行うように構成されている。
本開示による記憶装置において、コントローラは、個別のデータ線を介して複数のメモリチップと電気的に接続されていてもよい。コントローラは、共通のデータ線を介して複数のメモリチップと電気的に接続されていてもよい。メモリチップは、NANDフラッシュメモリを含んでいてもよい。
本開示による記憶装置は、インタフェース変換回路をさらに備えていてもよい。インタフェース変換回路は、コントローラがリードしたデータをネットワークで転送可能なパケットに変換し、ネットワークより受信したパケットをコントローラに入力可能な形式に変換するように構成されている。
上述のように、本開示による技術は、ライト対象のデータがデータ断片に分割されて複数のメモリチップに保存される記憶装置のリード性能を向上させるものである。
本開示による記憶装置では、メモリチップ側に第2符号による誤り訂正機能(第2符号化器および第2復号器)が実装されていてもよい。この場合、コントローラからデータ断片のリード開始の要求を受けたそれぞれのメモリチップは、データ断片を読み出し、第2符号による誤り訂正を開始する。それぞれのメモリチップは、メモリチップとコントローラとの間を接続する信号線を介して、コントローラに誤り訂正処理の完了状況または誤り訂正の成否を通知することができる。コントローラは、誤り訂正の完了したメモリ断片を読み出す。そして、コントローラは、誤り訂正の完了していないメモリチップがあっても、消失訂正が可能な数のメモリ断片の読み出しを完了したときに、消失訂正を開始することができる。また、コントローラは、誤り訂正の結果を確認するために、メモリチップに実装されるレジスタを読み出す必要がなくなる。このため、一部のメモリチップにおける遅延の影響を軽減し、記憶装置の全体的なリード速度を改善することができる。
また、本開示による記憶装置は、コントローラ側に第2符号による誤り訂正機能(第2符号化器および第2復号器)が実装されていてもよい。この場合、コントローラは、はじめにメモリチップよりデータ断片を読み出す。そして、コントローラは、読み出したデータ断片の誤り訂正を開始する。コントローラは、誤り訂正の完了していないデータ断片があっても、消失訂正が可能な数のデータ断片の誤り訂正が完了したときに、消失訂正を開始することができる。このため、一部のメモリチップにおける読み出しの遅延または一部のデータ断片の誤り訂正の遅延があったとしても、遅延による影響を軽減し、記憶装置の全体的なリード速度を改善することができる。
上述のように、記憶装置の分野では、NANDフラッシュメモリにおける微細化プロセスまたはマルチレベルセルの採用に伴うビット誤り率の増大、誤り訂正符号によるメモリチップ・コントローラ間のトラフィック、システムの消費電力およびレイテンシの増大などが課題となっていた。本開示によるコントローラおよび記憶装置を使うと、高い信頼性と性能とを両立し、これらの課題を解決することが可能となる。
なお、本技術は、以下のような構成をとることができる。
(1)
ライトされるデータの一部を含む複数のデータ断片のそれぞれを、誤り訂正機能を備えた複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、
リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、
それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、
信号線を介して取得したそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部を使って消失訂正を行うように構成された第1復号器とを備える、
コントローラ。
(2)
前記処理回路は、前記信号線を参照し、誤り訂正の完了した前記メモリチップから順に前記データ断片を読み出すように構成されている、
(1)に記載のコントローラ。
(3)
前記第1復号器は、前記処理回路が前記データ断片の書き込まれた前記メモリチップのうち、一部の前記メモリチップから前記データ断片が読み出されたときに消失訂正を行うように構成されている、
(1)または(2)に記載のコントローラ。
(4)
前記第1復号器は、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、前記処理回路が読み出した前記データ断片を使って消失訂正を行うように構成されている、
(1)ないし(3)のいずれか一項に記載のコントローラ。
(5)
前記処理回路は、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されている、
(1)ないし(4)のいずれか一項に記載のコントローラ。
(6)
ライトされるデータの一部を含む複数のデータ断片を複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、
リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、
それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、
前記処理回路が前記データ断片を前記メモリチップに書き込む前に、前記データ断片を誤り訂正符号によって符号化するように構成された第2符号化器と、
前記処理回路が前記メモリチップより読み出した前記データ断片の誤り訂正を行うように構成された第2復号器と、
リードされる前記データに相当する前記データ断片のうち、前記第2復号器による誤り訂正が完了した一部の前記データ断片を使って消失訂正を行うように構成された第1復号器とを備える、
コントローラ。
(7)
前記第1復号器は、前記第2復号器が少なくともいずれかの前記データ断片の誤り訂正を行っているときに、誤り訂正が完了している残りの前記データ断片を使って消失訂正を行うように構成されている、
(6)に記載のコントローラ。
(8)
誤り訂正機能を有する複数のメモリチップと、
ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、
前記データを複数の前記データ断片に分割し、
前記データ断片のそれぞれを複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、
信号線を介して取得されたそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備える、
記憶装置。
(9)
前記コントローラは、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、読み出した前記データ断片を使って消失訂正を行うように構成されている、
(8)に記載の記憶装置。
(10)
前記メモリチップは、前記コントローラが書き出した前記データ断片を誤り訂正符号によって符号化してからメモリセルに保存するように構成された第2符号化器と、リードされる前記データに相当する前記データ断片の誤り訂正を行い、前記信号線を介して誤り訂正の完了状況または成否を前記コントローラに通知するように構成された第2復号器とを含む、
(8)または(9)に記載の記憶装置。
(11)
前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されている、
(8)ないし(10)のいずれか一項に記載の記憶装置。
(12)
前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されている、
(8)ないし(11)のいずれか一項に記載の記憶装置。
(13)
前記メモリチップは、NANDフラッシュメモリを含む、
(8)ないし(12)のいずれか一項に記載の記憶装置。
(14)
前記コントローラは、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されている、
(8)ないし(13)のいずれか一項に記載の記憶装置。
(15)
前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備える、
(8)ないし(14)のいずれか一項に記載の記憶装置。
(16)
複数のメモリチップと、
ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、
前記データを複数の前記データ断片に分割し、
前記データ断片を誤り訂正符号によって符号化し、複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、
前記データをリードするときに、前記メモリチップより読み出した前記データ断片の誤り訂正を行い、
リードされる前記データに相当する前記データ断片のうち、誤り訂正の完了した一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備える、
記憶装置。
(17)
前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されている、
(16)に記載の記憶装置。
(18)
前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されている、
(16)または(17)に記載の記憶装置。
(19)
前記メモリチップは、NANDフラッシュメモリを含む、
(16)ないし(18)のいずれか一項に記載の記憶装置。
(20)
前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備える、
(16)ないし(19)のいずれか一項に記載の記憶装置。
本開示の態様は、上述した個々の実施形態に限定されるものではなく、当業者が想到しうる種々の変形も含むものであり、本開示の効果も上述した内容に限定されない。すなわち、特許請求の範囲に規定された内容およびその均等物から導き出される本開示の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
1、1A システム
2 ホストシステム
3 バス
4 インタフェース変換回路
5 ネットワーク
10、10A コントローラ
14 第1符号化器
15 第1復号器
16 第1インタフェース回路
17 監視部
18、24 第2符号化器
19、25 第2復号器
20、20A メモリチップ
21 メモリ
22 リードライト回路
23 第2インタフェース回路
100、101、102 記憶装置
1000 回路ブロック

Claims (20)

  1. ライトされるデータの一部を含む複数のデータ断片のそれぞれを、誤り訂正機能を備えた複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、
    リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、
    それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、
    信号線を介して取得したそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部を使って消失訂正を行うように構成された第1復号器とを備える、
    コントローラ。
  2. 前記処理回路は、前記信号線を参照し、誤り訂正の完了した前記メモリチップから順に前記データ断片を読み出すように構成されている、
    請求項1に記載のコントローラ。
  3. 前記第1復号器は、前記処理回路が前記データ断片の書き込まれた前記メモリチップのうち、一部の前記メモリチップから前記データ断片が読み出されたときに消失訂正を行うように構成されている、
    請求項1に記載のコントローラ。
  4. 前記第1復号器は、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、前記処理回路が読み出した前記データ断片を使って消失訂正を行うように構成されている、
    請求項1に記載のコントローラ。
  5. 前記処理回路は、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されている、
    請求項1に記載のコントローラ。
  6. ライトされるデータの一部を含む複数のデータ断片を複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、
    リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、
    それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、
    前記処理回路が前記データ断片を前記メモリチップに書き込む前に、前記データ断片を誤り訂正符号によって符号化するように構成された第2符号化器と、
    前記処理回路が前記メモリチップより読み出した前記データ断片の誤り訂正を行うように構成された第2復号器と、
    リードされる前記データに相当する前記データ断片のうち、前記第2復号器による誤り訂正が完了した一部の前記データ断片を使って消失訂正を行うように構成された第1復号器とを備える、
    コントローラ。
  7. 前記第1復号器は、前記第2復号器が少なくともいずれかの前記データ断片の誤り訂正を行っているときに、誤り訂正が完了している残りの前記データ断片を使って消失訂正を行うように構成されている、
    請求項6に記載のコントローラ。
  8. 誤り訂正機能を有する複数のメモリチップと、
    ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、
    前記データを複数の前記データ断片に分割し、
    前記データ断片のそれぞれを複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、
    信号線を介して取得されたそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備える、
    記憶装置。
  9. 前記コントローラは、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、読み出した前記データ断片を使って消失訂正を行うように構成されている、
    請求項8に記載の記憶装置。
  10. 前記メモリチップは、前記コントローラが書き出した前記データ断片を誤り訂正符号によって符号化してからメモリセルに保存するように構成された第2符号化器と、リードされる前記データに相当する前記データ断片の誤り訂正を行い、前記信号線を介して誤り訂正の完了状況または成否を前記コントローラに通知するように構成された第2復号器とを含む、
    請求項8に記載の記憶装置。
  11. 前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されている、
    請求項8に記載の記憶装置。
  12. 前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されている、
    請求項8に記載の記憶装置。
  13. 前記メモリチップは、NANDフラッシュメモリを含む、
    請求項8に記載の記憶装置。
  14. 前記コントローラは、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されている、
    請求項8に記載の記憶装置。
  15. 前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備える、
    請求項8に記載の記憶装置。
  16. 複数のメモリチップと、
    ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、
    前記データを複数の前記データ断片に分割し、
    前記データ断片を誤り訂正符号によって符号化し、複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、
    前記データをリードするときに、前記メモリチップより読み出した前記データ断片の誤り訂正を行い、
    リードされる前記データに相当する前記データ断片のうち、誤り訂正の完了した一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備える、
    記憶装置。
  17. 前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されている、
    請求項16に記載の記憶装置。
  18. 前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されている、
    請求項16に記載の記憶装置。
  19. 前記メモリチップは、NANDフラッシュメモリを含む、
    請求項16に記載の記憶装置。
  20. 前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備える、
    請求項16に記載の記憶装置。
JP2019215091A 2019-11-28 2019-11-28 コントローラおよび記憶装置 Pending JP2021086406A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019215091A JP2021086406A (ja) 2019-11-28 2019-11-28 コントローラおよび記憶装置
PCT/JP2020/041328 WO2021106514A1 (ja) 2019-11-28 2020-11-05 コントローラおよび記憶装置
US17/777,915 US11853162B2 (en) 2019-11-28 2020-11-05 Controller and storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019215091A JP2021086406A (ja) 2019-11-28 2019-11-28 コントローラおよび記憶装置

Publications (1)

Publication Number Publication Date
JP2021086406A true JP2021086406A (ja) 2021-06-03

Family

ID=76087848

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019215091A Pending JP2021086406A (ja) 2019-11-28 2019-11-28 コントローラおよび記憶装置

Country Status (3)

Country Link
US (1) US11853162B2 (ja)
JP (1) JP2021086406A (ja)
WO (1) WO2021106514A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022009935A1 (ja) 2020-07-07 2022-01-13 Agc株式会社 リチウムイオン二次電池に用いられる硫化物系固体電解質、及びその製造方法並びにリチウムイオン二次電池
WO2022009934A1 (ja) 2020-07-07 2022-01-13 Agc株式会社 リチウムイオン二次電池に用いられる硫化物系固体電解質及びその製造方法、固体電解質層並びにリチウムイオン二次電池

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023042992A (ja) * 2021-09-15 2023-03-28 キオクシア株式会社 メモリシステム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7322002B2 (en) * 2004-05-26 2008-01-22 Micron Technology, Inc. Erasure pointer error correction
JP2010079485A (ja) 2008-09-25 2010-04-08 Panasonic Corp 半導体記録装置
JP5017407B2 (ja) * 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
TWI456579B (zh) * 2010-03-26 2014-10-11 Silicon Motion Inc 提昇錯誤更正能力之方法以及相關之記憶裝置及其控制器
JP2012128660A (ja) 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
JP2014238871A (ja) 2014-08-01 2014-12-18 マイクロン テクノロジー, インク. 単一の仮想化されたeccアルゴリズムを提供するコントローラと、このコントローラを含む記憶システム、及びこの記憶システムを管理する方法
JP2018160166A (ja) 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム及び抵抗変化型メモリ
US10621035B2 (en) * 2017-10-18 2020-04-14 Intel Corporation Techniques for correcting data errors in memory devices

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022009935A1 (ja) 2020-07-07 2022-01-13 Agc株式会社 リチウムイオン二次電池に用いられる硫化物系固体電解質、及びその製造方法並びにリチウムイオン二次電池
WO2022009934A1 (ja) 2020-07-07 2022-01-13 Agc株式会社 リチウムイオン二次電池に用いられる硫化物系固体電解質及びその製造方法、固体電解質層並びにリチウムイオン二次電池

Also Published As

Publication number Publication date
US11853162B2 (en) 2023-12-26
US20220405168A1 (en) 2022-12-22
WO2021106514A1 (ja) 2021-06-03

Similar Documents

Publication Publication Date Title
US9213633B2 (en) Flash translation layer with lower write amplification
US10467093B2 (en) Non-volatile memory program failure recovery via redundant arrays
KR101660150B1 (ko) 물리 페이지, 논리 페이지, 및 코드워드 대응
WO2021106514A1 (ja) コントローラおよび記憶装置
US9135112B2 (en) Policy for read operations addressing on-the-fly decoding failure in non-volatile memory
KR101454807B1 (ko) 상위-레벨 리던던시 정보 계산
US9552290B2 (en) Partial R-block recycling
US8601347B1 (en) Flash memory device and storage control method
CN115114059B (zh) 使用区来管理归因于存储装置故障的容量减小
WO2012075200A2 (en) Dynamic higher-level redundancy mode management with independent silicon elements
WO2014022159A1 (en) Mixed granularity higher-level redundancy for non-volatile memory
US9477406B2 (en) Locating data in non-volatile memory
KR20210040463A (ko) 오류 정정 및 메모리 테스트 동작을 수행하기 위한 인-패키지 시퀀서를 포함하는 메모리 서브 시스템
US11487609B2 (en) Separating parity data from host data in a memory sub-system
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
CN116775368A (zh) 用于以不同码率在分区之间回拷的多层码率架构
CN114942862A (zh) 数据存储方法、存储服务器及电子设备
KR20220072398A (ko) 메모리 장치 및 메모리 시스템
US20230082008A1 (en) Parity protection in non-volatile memory
CN110383698B (zh) 数据访问方法及闪存设备
CN115167758A (zh) 存储器的存取控制方法、存储系统及计算机可读存储介质
CN115114055A (zh) 管理归因于存储装置故障的容量减小和恢复
CN117992282A (zh) 异常断电后的编码方法和存储器存储装置
CN118796532A (zh) 数据检查方法、存储器存储装置及存储器控制电路单元
CN115114061A (zh) 管理归因于存储装置故障的容量减小