JP2014099174A - メモリ装置に保存された部分データを変更するメモリコントローラ及びその部分データを変更する方法 - Google Patents

メモリ装置に保存された部分データを変更するメモリコントローラ及びその部分データを変更する方法 Download PDF

Info

Publication number
JP2014099174A
JP2014099174A JP2013235041A JP2013235041A JP2014099174A JP 2014099174 A JP2014099174 A JP 2014099174A JP 2013235041 A JP2013235041 A JP 2013235041A JP 2013235041 A JP2013235041 A JP 2013235041A JP 2014099174 A JP2014099174 A JP 2014099174A
Authority
JP
Japan
Prior art keywords
data
parity
memory device
partial
new
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
JP2013235041A
Other languages
English (en)
Inventor
Ki Jun Lee
起 準 李
Jun-Jin Kong
駿 鎮 孔
Hong-Rak Son
弘 楽 孫
Sejin Lim
世 鎮 林
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from KR1020120129549A external-priority patent/KR102041874B1/ko
Priority claimed from KR1020120129548A external-priority patent/KR102002044B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2014099174A publication Critical patent/JP2014099174A/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/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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2942Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

【課題】メモリコントローラの部分データ(partial data)を変更する方法を提供する。
【解決手段】ホストから部分データを変更するための要求信号を受信する段階と、エラー検出コード(EDC)を利用して、メモリ装置から読み取られた部分データのエラーを検出する段階と、メモリ装置から読み取られた部分データにエラーがない場合、ホストから提供される新しいデータDnewとメモリ装置から読み取られた部分データ(Dold、既存のデータと言う)との差を求め、データの差Ddifとメモリ装置から読み取られた既存のパリティPoldとを使用して、新しいパリティPnewを計算する段階と、新しいデータと新しいパリティをメモリ装置に保存する段階を含む。本発明によれば、変更しようとする一部のデータにエラーがある場合にエラーを早期に検出し、訂正することによって新しいパリティのエラーが発生することを防止する。
【選択図】 図20

Description

本発明は半導体メモリシステムに係り、さらに詳しくは、メモリ装置に保存された部分データを変更するメモリコントローラ及びその部分データを変更する方法に関する。
半導体メモリ装置(semiconductor memory device)はシリコン(Si、silicon)、ゲルマニウム(Ge、Germanium)、ガリウム砒素(GaAs、gallium arsenide)、リン化インジウム(InP、indium phosphide)などの半導体を使用して具現される記憶装置である。
半導体メモリ装置は、DRAMやSRAMなどの揮発性メモリ装置(Volatile Memory Device)とフラッシュメモリやMRAM(Magnetic RAM)のような不揮発性メモリ装置(Nonvolatile Memory Device)を含む。
メモリ装置にデータを保存し、保存されたデータの読み取りのときエラーが発生することがある。これらのエラーを検出及び訂正するためにさまざまなエラー訂正コードが使用される。エラー訂正コードはRS(Reed−Solomon)コード、BCH(Bose−Chaudhuri−Hocquenghem)コード、LDPC(Low Density Parity Check)コードなどがある。
メモリ装置にデータを保存するとき、エラー訂正のためのパリティ(parity)もデータと共にメモリ装置に保存される。メモリ装置に保存されたデータの一部が変更された場合、新たなパリティを生成するためにはパリティと共に保存されたすべてのデータの読み取りをしなければならない。これは、データの読み取り時間と消費電力が増加する原因になる。
米国特許公開第2012/0017139号公報
本発明は上述した技術的な課題を解決するためのもので、メモリ装置に保存されたデータの一部が変更されて新しいパリティを生成する場合、データの読み取り時間と消費電力を削減することができるメモリコントローラ及びメモリシステムを提供する。
また、本発明はメモリ装置に保存された部分データ(partial data)のエラーを検出または訂正し、新たなパリティを生成するメモリコントローラの部分データを変更する方法を提供する。
本発明は、メモリコントローラの部分データ(partial data)を変更する方法に関するもので、ホストから部分データを変更するための要求信号を受信する段階と、エラー検出コード(EDC)を利用して、メモリ装置から読み取られた部分データのエラーを検出する段階と、前記メモリ装置から読み取られた部分データにエラーがない場合には、前記ホストから提供される新しいデータDnewと前記メモリ装置から読み取られた部分データ(Dold、以下では既存のデータと言う)との差を求め、前記データの差Ddifと前記メモリ装置から読み取られた既存のパリティPoldとを使用して新しいパリティPnewを計算する段階と、前記新しいデータと前記新しいパリティとを前記メモリ装置に保存する段階を含む。
実施形態として、本発明は、前記既存のデータにエラーがある場合には、前記メモリ装置から全データ(whole data)の読み取りを実行し、エラー訂正コード(ECC)を使用して前記既存のデータのエラーを訂正する段階をさらに含む。前記既存のデータのエラーを訂正した後に、前記ホストから提供される新しいデータと前記エラーを訂正した既存のデータとの差を求め、前記データの差Ddifと前記メモリ装置から読み取られた既存のパリティPoldとを利用して、新しいパリティPnewを計算する。
他の実施形態として、本発明は、前記メモリ装置に保存される全データを複数の部分データに分割し、それぞれの部分データのEDCのためのパリティを生成し、部分符号化データ(partial encoded data)を作成する部分データのエンコード段階と、前記部分データのエンコード段階を実行した後に、部分符号化データ全体のECCのためのパリティを生成する全データのエンコード段階とをさらに含む。
また他の実施形態として、本発明は、前記メモリ装置に保存される全データのECCのためのパリティを生成する全データのエンコード段階と、前記全データのエンコード段階を実行した後に、前記メモリ装置に保存される全データを複数の部分データに分割し、全データのEDCのためのパリティを生成する段階と、それぞれの部分データのEDCのためのパリティを生成し、部分符号化データ(partial encoded data)を作成する部分データのエンコード段階とを含む。前記部分データのエンコード段階で、前記全データのエンコード段階で生成された全データのEDCのためのパリティに応じた符号化パリティを生成する。
本発明の他の一面は、メモリコントローラの部分データ(partial data)を変更する方法に関するもので、ホストから部分データを変更するための要求信号を受信する段階と、エラー訂正コード(ECC)を使用してメモリ装置から読み取られた部分データのエラーを検出する段階と、検出の結果、前記メモリ装置から読み取られた部分データにエラーがある場合にエラーを訂正し、前記ホストから提供される新しいデータDnewと前記エラーが訂正された部分データ(Dold、以下では既存のデータと言う)との差を求め、前記データの差Ddifと前記メモリ装置から読み取られた既存のパリティPoldとを使用して新しいパリティPnewを計算する段階と、前記新しいデータと前記新しいパリティを前記メモリ装置に保存する段階とを含む。
実施形態として、本発明は、前記メモリ装置に保存される全データを複数の部分データに分割し、それぞれの部分データのECCのためのパリティを生成し、部分符号化データ(partial encoded data)を作成する部分データのエンコード段階と、前記部分データのエンコード段階を実行した後に、部分符号化データ全体のECCのためのパリティを生成する全データのエンコード段階とをさらに含む。
他の実施形態として、本発明は、前記メモリ装置に保存される全データのECCのためのパリティを生成する全データのエンコード段階と、前記全データのエンコード段階を実行した後に、前記メモリ装置に保存される全データを複数の部分データに分割し、全データのECCのためのパリティを生成する段階と、それぞれの部分データのECCのためのパリティを生成し、部分符号化データ(partial encoded data)を作成する部分データのエンコード段階とをさらに含む。前記部分データのエンコード段階で、前記全データのエンコード段階で生成された全データのECCのためのパリティに応じた符号化パリティを生成する。
また他の実施形態として、本発明は、検出の結果、前記メモリ装置から読み取られた部分データにエラーがない場合には、前記ホストから提供される新しいデータDnewと前記メモリ装置から読み取られた部分データDoldとの差を求め、前記データの差Ddifと前記メモリ装置から読み取られた既存のパリティPoldとを使用して新しいパリティPnewを計算する段階をさらに含む。
本発明はメモリ装置に保存されるデータの一部が変更された場合、変更されていないデータの読み取りを実行せず、変更された一部のデータを利用して新しいパリティを生成する。本発明によれば、変更されたデータのみを使用して新しいパリティを生成するのでデータの読み取り時間と消費電力を削減することができる。また、本発明は変更しようとする一部のデータにエラーが生じる場合、エラーを早期に検出し、訂正することによって新しいパリティのエラーが発生することを防止する。
本発明の実施形態によるメモリシステムを示すブロック図。 図1に示したメモリ装置1100を示すブロック図。 図2に示したメモリセルアレイの実施形態を示す回路図。 図2に示したメモリセルアレイの実施形態を示す回路図。 図1に示したメモリコントローラを示すブロック図。 図5に示した新しいパリティジェネレータを例示的に示すブロック図。 図6に示した新しいパリティジェネレータの動作を例示的に説明するための図表。 図6に示した新しいパリティジェネレータの動作を例示的に説明するためのブロック図。 図6に示した新しいパリティジェネレータの動作を例示的に説明するための図表。 図6に示した新しいパリティジェネレータの動作を例示的に説明するためのブロック図。 図6に示した新しいパリティジェネレータの動作を例示的に説明するための図表。 本発明の実施形態によるメモリシステムの新しいパリティを生成する方法を示すフローチャート。 パリティチェックマトリックス(parity check matrix)の例を示す図。 図13に示したパリティチェックマトリックス(parity check matrix)の最初の1バイトのデータが変更された場合を示す図表。 図13に示したパリティチェックマトリックス(parity check matrix)の領域ごとに、新しいパリティ生成処理を実行する例を示す図表。 部分データのエラー検出または訂正のためのデータ構造を示す図表。 部分データのエラー検出または訂正のためのデータ構造を示す図表。 部分データのエンコード(partial data encoding)と全データのエンコード(whole data encoding)の順序を示す概念図。 部分データのエンコード(partial data encoding)と全データのエンコード(whole data encoding)の順序を示す概念図。 本発明の実施形態によるメモリシステムのエラー検出または訂正の動作を実行する新しいパリティを生成する方法を示すフローチャート。 本発明の実施形態によるメモリシステムのエラー検出または訂正の動作を実行する新しいパリティを生成する方法を示すフローチャート。 図1に示したメモリシステムの応用例を示すブロック図。 本発明の実施形態によるメモリシステムがメモリカードに適用された例を示す図。 本発明の実施形態によるメモリシステムがソリッドステートドライブ(SSD、Solid State Drive)に適用された例を示す図。 本発明の実施形態によるメモリシステムがコンピューティングシステムに適用された例を示すブロック図。
以下に、本発明の属する技術の分野において、通常の知識を有する者が本発明の技術的な思想を容易に具現できるように、本発明の実施形態を添付図面を参照して説明する。
I.ECCエンコーダを含むメモリシステム。
図1は本発明の実施形態によるメモリシステムを示すブロック図である。図1を参照すると、メモリシステム1000はメモリ装置1100、メモリコントローラ1200、ホスト1300を備える。
メモリ装置1100は揮発性メモリ装置(Volatile Memory Device)と不揮発性メモリ装置(Nonvolatile Memory Device)を含む。揮発性メモリ装置は電源供給が遮断されると保存されたデータを失うメモリ装置である。揮発性メモリ装置はSRAMやDRAMなどがある。不揮発性メモリ装置は電源供給が遮断されても保存されているデータを保持するメモリ装置である。不揮発性メモリ装置はROM(Read Only Memory)、PROM(Programmable ROM)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasableand Programmable ROM)、フラッシュメモリ装置、PRAM(登録商標)(Phase−change RAM)、MRAM(Magnetic RAM)、RRAM(Resistive RAM)、FRAM(登録商標)(Ferroelectric RAM)などがある。メモリ装置1100は使用中にビットエラー(bit error)が発生することがあり、エラーを訂正するための様々な方法が使用されている。
メモリコントローラ1200はメモリ装置1100とホスト1300との間に接続される。メモリコントローラ1200はホスト1300の要求に応答してメモリ装置1100をアクセスする。メモリコントローラ1200はホスト1300からデータDATAを受信して、符号化されたデータ(DATA_C;coded data)を生成する。メモリコントローラ1200はメモリ装置1100にコマンドCMD、アドレスADDR、符号化データDATA_C及び制御信号CTRLを提供する。
一方、メモリコントローラ1200はメモリ装置1100から符号化データDATA_Cを受信し、これを復号化して元のデータ(DATA、original data)を復元する。メモリコントローラ1200は復元されたデータDATAをホスト1300に伝達する。
続いて、図1を参照すると、メモリコントローラ1200はECCエンコーダ1270を有する。ECCエンコーダ1270はメモリ装置1100に提供されるデータに対してECCエンコード(encoding)を実行してパリティ(parity)が付加された符号化データDATA_Cを生成する。ECCエンコーダ1270はパリティを使用してエラーを訂正する。
ECCエンコーダ1270はLDPC(low density parity check)コード、BCHコード、turboコード、リード−ソロモンコード(Reed−Solomon code)、convolutionコード、RSC(recursive systematic code)、TCM(trellis−coded modulation)、BCM(Block coded modulation)などの符号化変調(coded modulation)を使用してエラーを訂正する。
一方、ECCエンコーダ1270はメモリ装置1100に保存されたデータの一部が変更された場合、変更された一部のデータを利用して、新しいパリティを生成する。本発明の実施形態によるメモリシステム1000は新しいパリティを生成するときに変更されていないデータを使用していないので、データの読み取り時間と消費電力を削減することができる。
図2は図1に示したメモリ装置1100を示すブロック図である。図2を参照すると、メモリ装置1100はメモリセルアレイ1110、アドレスデコーダ1120、データ入出力回路1130及び制御ロジック1140を備える。
メモリセルアレイ1110は、ワード線WLを介してアドレスデコーダ1120に接続され、ビット線BLを介してデータ入出力回路1130に接続される。メモリセルアレイ1110は複数のメモリセルを備える。行(row)方向に配列されるメモリセルはワード線WLに接続される。列(column)方向に配列されるメモリセルはビット線BLに接続される。1つのメモリセルに1つ以上のデータを保存できる。
アドレスデコーダ1120はワード線WLを介してメモリセルアレイ1110に接続される。アドレスデコーダ1120はメモリコントローラ(図1参照、1200)からアドレスADDRを受信する。アドレスADDRは行アドレス(row address)と列アドレス(column address)を備える。アドレスデコーダ1120は行アドレスを利用して単一または複数のワード線WLを選択し、列アドレス(CA;Column Address)をデータ入出力回路1130に伝送する。
データ入出力回路1130はビット線BLを介してメモリセルアレイ1110に接続され、メモリコントローラ1200と符号化データDATA_Cを交換する。データ入出力回路1130は制御ロジック1140の制御に応答して動作する。データ入出力回路1130はアドレスデコーダ1120から列アドレスCAを受信して、1つ以上のビット線BLを選択する。
データ入出力回路1130は外部から符号化データDATA_Cを受信し、受信したデータDATA_Cをメモリセルアレイ1110に提供する。データ入出力回路1130はメモリセルアレイ1110からの符号化データDATA_Cを読み取り、その読み取りデータDATA_Cをメモリコントローラ1200に出力する。
制御ロジック1140はアドレスデコーダ1120とデータ入出力回路1130に接続される。制御ロジック1140はメモリコントローラ1200からコマンドCMDと制御信号CTRLが受信され、メモリ装置1100の諸動作(例えば、読み取りや書き込みの動作など)を制御する。
図3及び図4は、図2に示したメモリセルアレイの実施形態を示す回路図である。図3はNAND型フラッシュメモリの例を示し、図4はSTT−MRAM(Spin transfer torque magneto Resistive random access memory)の例を示す。
図3を参照すると、メモリセルアレイ1110aは複数のフラッシュメモリセルを備える。行方向に沿って提供されているメモリセルMC1〜MCmはワード線WL1〜WLmに接続される。同じ行のメモリセルMCは同じワード線WLに接続される。列方向に沿って提供されているメモリセルMC1〜MCmはビット線BL1〜BLnに対応する。同じ列のメモリセルMC1〜MCmは同じビット線BLに接続される。
ビット線BL1〜BLnとメモリセルMC1〜MCmとの間にストリング選択トランジスタSSTが接続されている。ストリング選択トランジスタSSTはストリング選択ラインSSLに接続される。共通ソースラインCSLとメモリセルMC1〜MCmとの間に接地選択トランジスタGSTが接続される。接地選択トランジスタGSTは接地選択ラインGSLに接続される。
図4を参照すると、メモリセルアレイ1110bは複数のワード線WL1〜WLm、複数のビット線BL1〜BLn、ワード線WL1〜WLmとビット線のBL1〜BLnが交差する領域に配置されている複数のメモリセルを備える。
メモリセルがSTT−MRAM(Spin transfer torque magneto Resistive random access memory)セルで具現されている場合、セルトランジスタ及び磁性体を有する磁気トンネル接合素子(magnetic tunnel junction、以下にMTJ素子と称する)を備える。MTJ素子は相変化物質を利用するPRAM(Phase Change Random Access Memory)、複合金属酸化物(Complex Metal oxide)などの可変抵抗物質を利用したRRAM(Resistive Random Access Memory)などの抵抗素子に代替できる。
再び図1を参照すると、本発明の実施形態によるメモリシステム1000はメモリコントローラ1200内にECCエンコーダ1270を具備する。本発明の実施形態によるECCエンコーダ1270はメモリ装置1100に保存されたデータの一部が変更された場合、変更された一部のデータを利用して新しいパリティを生成する。本発明によれば、変更された一部のデータのみを利用して、新しいパリティを生成するのでデータの読み取り時間と消費電力を削減することができる。
II.一部のデータが変更される場合に新しいパリティを生成する方法。
図5は図1に示したメモリコントローラを示すブロック図である。図5を参照すると、メモリコントローラ1200は、システムバス1210、制御ユニット1220、RAM1230、ホストインターフェース1240、メモリインターフェース1250、そしてECCエンコーダ1270を備える。
システムバス1210は制御ユニット1220、RAM1230、ホストインターフェース1240、メモリインターフェース1250、そしてECCエンコーダ1270の間にチャンネルを提供する。制御ユニット1220はメモリコントローラ1200の諸動作を制御する。ラム1230は制御ユニット1220の動作メモリ、キャッシュメモリ及びバッファメモリなどを使用できる。
ホストインターフェース1240は特定の通信規格に応じてホスト1300と通信する。例示的に、メモリコントローラ1200はUSB(Universal Serial Bus)、PCI(peripheral component interconnection)、PCI−E(PCI−express)、ATA(Advanced Technology Attachment)、Serial−ATA、Parallel−ATA、SCSI(small computer system interface)、ESDI(enhanced small disk interface)、IDE(Integrated Drive Electronics)及びファイヤーワイヤ(Firewire)などのさまざまな通信規格のうち少なくとも1つを介してホスト(1300、図1参照)と通信する。
メモリインターフェース1250はメモリ装置(1100、図1参照)とインターフェースする。例えば、メモリインターフェース1250はNAND型フラッシュインターフェースまたはMRAMインターフェースなどを含む。
ECCエンコーダ1270はホスト1300から受信されるデータをECCエンコード(ECC encoding)して、符号化データ(DATA_C;coded data)とパリティをメモリ装置1100に提供する。ここで、符号化データはECCデータとも呼ばれる。メモリ装置1100に保存されるデータをD1、D2、D3、D4と仮定すると、パリティPは、数式1によって計算できる。
Figure 2014099174
数式1で加算演算はXOR演算またはmod2演算である。非バイナリコード、非線形コードではそれに該当する演算になる。
続いて、図5を参照すると、ECCエンコーダ1270は新しいパリティジェネレータ1260を具備する。ECCエンコーダ1270は新しいパリティジェネレータ1260を使用して、メモリ装置1100に保存されたデータの中から一部が変更された場合、変更された一部のデータを利用して新しいパリティを生成する。図5において、新しいパリティジェネレータ1260はECCエンコーダ1270の外部に位置しても良い。
図6は図5に示した新しいパリティジェネレータを例示的に示すブロック図である。図6を参照すると、新しいパリティジェネレータ1260はデータの位置識別器1261、データ差の計算機1262パリティ計算機1263を備える。
データの位置識別器1261はホスト1300から入力される新しいデータDnewの位置を識別し、位置信号LOCをデータ差の計算機1262とパリティ計算機1263に提供する。ここで、新しいデータの位置はメモリ装置1100に保存されたデータの中から新しいデータに変更されるデータの位置を意味する。
例えば、パリティ(P;Parity)が4つのデータD1、D2、D3、D4を通じて生成されると仮定する。このとき、データD1〜D4はそれぞれd1〜d4の位置にある。D1とD2が新しいデータに変更される場合、新しいデータの位置はd1とd2である。以下では、d1の位置の既存のデータ(old data)はD1oldで表記し、新しいデータはD1newと表記する。d1の位置の既存のデータD1oldが新しいデータD1newに変更される場合、データの位置識別器1261はd1を示す位置信号LOCを提供する。
データ差の計算機1262はデータの位置識別器1261から新しいデータの位置信号LOCを受信し、ホスト1300から入力された新しいデータDnewとメモリ装置1100に保存された既存のデータDoldの差を計算する。データ差の計算機1262は新しいデータDnewと既存のデータDoldのデータの差Ddifをパリティ計算機1263に提供する。データ差の計算機1262の動作は図8及び図9を参照してより詳しく説明する。
パリティ計算機1263は新しいデータの位置信号LOCを受信し、データ差の計算機1262から入力されたデータの差Ddifとメモリ装置1100に保存された既存のパリティPoldを利用して新しいパリティPnewを計算する。パリティ計算機1263の動作は図10及び図11を参照してより詳細に説明する。
一方、図6に示された新しいパリティジェネレータの構成と動作原理は次のような数学的な原理に基づいている。メモリ装置1100にデータD1old、D2old、D3old、D4oldとパリティPoldが保存されていると仮定する。
既存のパリティPoldは数式1によって次のように計算される。
Pold=D1old+D2old+D3old+D4old ・・・・式(1)
ここで、D1oldとD2oldがD1newとD2newに変わると、Poldも変わることになる。メモリ装置1100に保存されたデータの中から一部のデータが変わると、従来のメモリシステムはメモリ装置1100からのすべてのデータD1old、D2old、D3old、D4oldを読み取りし、データを変更した後に新しいパリティPnewを生成しなければならない。
新しいパリティPnewは数式1によって次のように計算される。
Pnew=D1new+D2new+D3old+D4old ・・・・式(2)
式(2)から式(1)を減算すると、次のようになる。
Pnew−Pold=(D1old+D2old+D3old+D4old)
−(D1new+D2new+D3old+D4old)。
Pnewは次のように計算することができる。
Pnew=Pold+(D1new+D2new+D3old+D4old)
−(D1old+D2old+D3old+D4old)。
Pnew=Pold+(D1new+D2new)−
(D1old+D2old)。
Pnew=Pold+(D1new−D1old)+
(D2new−D2old) ・・・・式(3)
式(3)を求める過程を見ると、変更されていないデータD3old、D4oldが演算のときに除去されたことが分かる。これは、メモリ装置1100に保存されたデータの一部が変更された場合、変更されていないデータは不要であることを示す。
従来のメモリシステムは変更されないデータD3old、D4oldを含むすべてのデータを読み取りして新しいパリティを演算する。従来のメモリシステムはECCデータのサイズが大きく、変更されるデータのサイズが小さい場合にも、新しいパリティを生成するためにすべてのデータを読み取る必要があるので、データの読み取りに時間がかかり、多くの電力を消費することになる。
本発明の実施形態によるメモリシステム1000は図6に示された新しいパリティジェネレータ1260を利用してメモリ装置1100に保存されているデータの中から一部が変更された場合に、すべてのデータを読み取りせずに変更された一部のデータのみを利用して新しいパリティを生成することができる。本発明の実施形態によるメモリシステムは変更されたデータのみを使用して新しいパリティを生成するのでデータの読み取り時間と消費電力を削減することができる。
図7〜図11は、図6に示された新しいパリティジェネレータの動作を例示的に説明するための図表またはブロック図である。
図7の図表を参照すると、メモリ装置1100には4つの既存のデータDoldと1つの既存のパリティPが保存されていると仮定する。d1〜d4の位置にある既存のデータDoldはそれぞれ0、0、1、1である。即ち、D1oldは0であり、D2oldは0であり、D3oldは1であり、D4oldは1である。式(1)にD1old〜D4oldを代入するとPoldはXOR演算によって0になる。
既存のデータD1oldとD2oldが新しいデータD1newとD2newに変更されると仮定する。図7に示すように、D1newは0であり、D2newは1である。図7で変更されているデータD1new、D2newは斜線で示されている。図6に示された新しいパリティジェネレータ1260は変更されていないデータD3old、D4oldがなくても新しいパリティPnewを生成することができる。以下では、D3oldとD4oldがなくても新しいパリティPnewを生成する方法を説明する。
図8は図6に示されたデータ差の計算機を示すブロック図である。図8を参照すると、データ差の計算機1262は新しいデータの位置信号LOCを受信し、新しいデータDnewと既存のデータDoldの差を計算する。データの差Ddifは数式2によって計算される。
Figure 2014099174
数式2から減算演算はXOR演算またはmod2演算である。非バイナリコード、非線形コードではそれに対応する演算になる。
式(3)で、データ差の計算機1262は位置信号d1が入力され、新しいデータD1newと既存のデータD1oldの差D1difを計算した後に位置信号d2が入力され、新しいデータD2newと既存のデータD2oldの差D2difを計算する。ここで、D1difはd1の位置にある新しいデータD1newと既存のデータD1oldのデータの差を意味する。データ差の計算機1262は位置信号d1、d2が入力され、データの差D1dif、D2difを同時に計算することもできる。データの差D1dif、D2difはパリティ計算機1263に提供される。
図9は、図8に示されたデータ差の計算機の動作を例示的に説明するための図表である。前述したように、既存のデータD1old、D2oldが新しいデータD1new、D2newに変更されるとD1newとD1oldはすべて0であるので数式2によるとD1difは0となる。そしてD2oldは0であり、D2newは1であるのでD2difは1となる。
図10は、図6に示されたパリティ計算機を示すブロック図である。図10を参照すると、パリティ計算機1263は新しいデータの位置信号LOCが入力され、データ差の計算機1262から入力されたデータの差Ddifとメモリ装置1100に保存された既存のパリティPoldを利用して新しいパリティPnewを計算する。新しいパリティPnewは数式3によって計算される。
Figure 2014099174
前記例で、DdifはD1difとD2difの合計である。そしてD1difはD1newとD1oldの差であり、D2difはD2newとD2oldの差である。即ち、数式3は前述した式(3)のように表現することができる。
Pnew=Pold+D1dif+D2dif=Pold+(D1new−
D1old)+(D2new−D2old) ・・・・式(3)
図11は、図10に示されたパリティ計算機の動作を説明するための図表である。図9の例で計算したように、D1difは0であり、D2difが1とすると、全データの差Ddifは1となる。Poldは0であり、Ddifは1であるので新しいパリティPnewは1となる。
数式3を参照すると、新しいパリティPnewは既存のパリティPoldと変更されるデータの差Ddifの関数形態で表れることが分かる。ここで、新しいパリティPnewを取得する関数は変更されないデータ(例えば、D3old、D4old)とは無関係であることを分かる。これは一般的な非線形コードまたは非バイナリコードにも拡張できる。
本発明の実施形態によるメモリシステムは、変更されたデータのみを使用して新しいパリティを生成するので、データの読み取り時間と消費電力を削減することができる。特に、本発明の実施形態によるメモリシステムは小さな単位のデータを変更する場合に有効に活用することができる。
図12は、本発明の実施形態によるメモリシステムの新しいパリティを生成する方法を示すフローチャートである。
S110段階で、メモリコントローラ(図1参照、1200)はメモリ装置(図1参照、1100)から既存のデータDoldと既存のパリティPoldを読み取る。S120段階で、メモリコントローラ1200はホスト(図1参照、1300)から新しいデータDnewを受信する。S130段階で、メモリコントローラ1200は新しいデータDnewと、既存のデータDoldの差Ddifを計算する。S140段階で、メモリコントローラ1200は既存のパリティPoldとデータの差Ddifを利用して新しいパリティPnewを計算する。
図13は、パリティチェックマトリックス(parity check matrix)の例を示す図表である。図13を参照すると、メモリ装置(図1参照、1100)に保存されたデータの符号長(code length)は72であり、データの長さ(data length)は64である。図13は、72、64シングルエラー訂正−二重エラー検出(SEC−DED;single error correction−double error detection)のパリティチェックマトリックス(parity check matrix)の例である。ここで、シングルエラー訂正−二重エラー検出SEC−DEDは1つのエラーを訂正し、2つのエラーを検出することを意味する。
図13で1つの行(row)は1つのパリティチェック式(parity check equation)で表すことができる。パリティは1つの行で1に該当する位置の符号ビットが加算されて生成される。たとえば、第1行R1からパリティP0は式(4)により求めることができる。
P0=d0+d1+d2+d3+...+d53+d56+d57+d58
・・・・式(4)
式(4)と同様の方法で、第2から第8行R2〜R8でのパリティP1〜P7を求めることができる。下記の表1は各行のパリティを求める式を示す。
Figure 2014099174
本発明の実施形態によるメモリシステム(図1参照、1000)は複数の行に対して新しいパリティを生成する。図13に示すように、第1行から第8行に対して所定の大きさの単位で新しいパリティを生成する。この場合にも前述したように、一部のデータだけが変更された場合にすべてのデータの読み取りは実行せず、変更された一部のデータのみを利用して新しいパリティを生成する。
図14は、図13に示されたパリティチェックマトリックス(parity check matrix)の最初の1バイトのデータが変更される場合を示す図表である。図14から変更されないデータ、即ち、新しいパリティPnewを取得するために利用されないデータはXが表示されている。
メモリ装置1100に保存されているデータのうち最初の1バイトのデータが変更されると、既存のメモリシステムは図13に示されたすべてのデータの読み取りを実行して新しいパリティを生成する。しかし、本発明の実施形態によるメモリシステム(図1参照、1000)は最初の1バイトのデータと1バイトのパリティだけ読み取りを実行して新しいパリティを生成することができる。即ち、数式3のように本発明の実施形態によるメモリシステム1000は1バイトの新しいデータDnewと1バイトの既存のデータDoldの差を求め、データの差Ddifと既存のパリティPoldを利用して新しいパリティPnewを生成する。本発明によれば、変更されたデータのみを使用して新しいパリティを生成するのでデータの読み取り時間と消費電力を削減することができる。
一方、図14に示すように、メモリ装置の一部のデータ(例えば、最初の1バイトのデータ)のみを使用して新しいパリティを生成する場合には様々な方法でECCエンコードを行うことができる。たとえば、変更されないデータをすべて0とみなして、ECCエンコードを行うことができる。すなわち、図14のXが表示されているデータをすべて0とみなして、変更されるデータの差Ddifと既存のパリティPoldを利用して新しいパリティPnewを生成する。他の方法としては、メモリ装置(図1参照、1100)に保存されたデータを一定の大きさの領域(section)に分け、領域ごとに新しいパリティ生成動作を実行することができる。
図15は、図13に示されたパリティチェックマトリックス(parity check matrix)の領域ごとに新しいパリティ生成動作を実行する例を示す図表である。領域ごとに新しいパリティ生成動作を実行するために、ECCエンコーダ(図5参照、1270)は領域ごとに新しいパリティジェネレータを備える。
第1領域(section1)のデータが変更される場合に、新しいパリティP0newは数式3によって次のように計算される。
P0new=P0old+D0dif+D1dif+D2dif+D3dif+D4dif+D5dif+D6dif+D7dif・・・・式(4)
ここで、D1dif=D1new−D1oldである。領域別に新しいパリティジェネレータは式(4)を通じて設計される。図15に示すように、領域別にパリティ生成動作がバイト単位で実行されるとECCエンコーダ1270はバイトマスキング動作(byte−masking operation)を実行する。
前記のように、本発明は変更されたデータのみを使用して新しいパリティを生成するのでデータの読み取り時間と消費電力を削減することができる。また本発明は、新しいパリティ生成の動作を領域別に分けて実行することができる。特に、本発明の実施形態によるメモリシステムは小さな単位のデータを変更する場合に有効に活用することができる。
III.エラー検出及び訂正動作を含む部分データを変更する方法。
前述した式(4)を再び参照すると、第1領域(section1)のデータが変更される場合、新しいパリティP0newは次のようになる。
P0new=P0old+D0dif+D1dif+D2dif+D3dif+D4dif+D5dif+D6dif+D7dif・・・・式(4)
式(4)で変更しようとする第1領域(section1)のデータにエラーがあれば新しいパリティP0newにもエラーが発生する。
本発明は変更しようとする一部のデータにエラーがある場合、エラーを早期に検出し、訂正することによって新しいパリティのエラーの発生を防止する。このため、本発明はデータをエンコードするとき、各領域ごとにエラーの検出や訂正のためのパリティを生成する。以下では、各領域のデータは部分データ(partial data)と称する。
図16及び図17は、部分データのエラー検出や訂正のためのデータ構造を示す図表である。図16は部分データのエラーを検出するためのデータ構造であり、図17は部分データのエラーを訂正するためのデータ構造である。
図16を参照すると、全データ(whole data)はn個の部分データ(partial DATA1〜partial DATAn)に分けられる。データのエンコードのときそれぞれの部分データのエラーを検出するためのパリティと全データのエラーを訂正するためのパリティを生成する。図17を参照すると、それぞれの部分データのエラーを訂正するためのパリティと全データのエラーを訂正するためのパリティを生成する。
図18及び図19は、部分データのエンコード(partial data encoding)と全データのエンコード(whole data encoding)の順序を示す概念図である。図18は、部分データのエンコードを先に実行した後、全データのエンコードを実行する方法を示す。
図18を参照すると、全データ(whole data、110)は、n(nは自然数)個の部分データ領域(partial DATA1〜partial DATAn)に分けられる。それぞれの部分データに対して部分データのエンコード動作が実行される。ここで、部分データのエンコードのときエラー検出及び訂正のためのパリティが生成される。
n個の部分データ(partial DATA1〜partial DATAn)で構成される全データ110は、EDC、ECCのための部分データのエンコード動作(partial data encoding operation)を通じて部分的に符号化される全データ(partially encoded whole data、120)になる。部分的に符号化された全データ(partially encoded whole data)はn個の部分符号化データ(partial encoded DATA1〜partial encoded DATAn)で構成される。それぞれの部分符号化データは部分データとパリティを含む。
例えば、第1部分データ(partial DATA1)はEDCまたはECCのための部分データのエンコード動作により第1部分符号化データ(partial encoded DATA1)となる。第1部分符号化データは第1部分データ(partial DATA1)と第1パリティP1で構成される。同様に、第n部分符号化データ(partial encoded DATAn)は第n部分データ(partial DATAn)と第nパリティPnで構成される。
続いて、部分的に符号化された全データ(partially encoded whole data、120)はECCのための全データのエンコード動作(whole data encoding operation)を通じて最終符号化データ(final encoded data、130)となる。最終符号化データ130は部分的に符号化された全データ131とパリティ132とで構成される。ここで、パリティ132は部分的に符号化された全データ131に対するパリティである。
図19は、全データのエンコードを実行した後に部分データのエンコードを実行する方法を示す。図19を参照すると、全データ(whole data、210)はECCのための全データのエンコード動作(whole data encoding operation)を通じて全体的に符号化されたデータ(entirely encoded data、220)となる。
全体的に符号化されたデータ(entirely encoded data、220)は全データ221とこれに対応するパリティ222で構成される。図19の点線211、221は部分データの領域(partial data section)に分けられる前の全データ(whole data)を示す。そして、パリティ222は全データのエラーを訂正するためのものである。
図19を参照すると、全データ221は第1〜第n部分データの領域(partial DATA1〜partial DATAn)に分けられる。それぞれの部分データに対してEDCまたはECCのための部分データのエンコード動作(Partial data encoding operation)が実行される。ここで、部分データのエンコードのときエラー検出または訂正のためのパリティが生成される。
n個の部分データ(partial DATA1〜partial DATAn)で構成される全データ221はEDCまたはECCのための部分データのエンコード動作を通じて部分的に符号化されたデータ(partially encoded data)となる。例えば、第1部分データ(partial DATA1)は第1部分符号化データ(partial encoded DATA1、231)となる。第1部分符号化データ(partial encoded DATA1、231)は第1部分データ(partial DATA1)と第1パリティP1で構成される。
一方、全データのパリティ222はEDCまたはECCのための部分データのエンコード動作を通じて符号化パリティ(encoded parity)となる。ここで、符号化パリティ(encoded parity、232)は全データのパリティ222を符号化したものである。
図20及び図21は、本発明の実施形態によるメモリシステムのエラー検出または訂正を実行する部分データの変更方法を示すフローチャートである。図20はEDCのための部分データのエンコード動作(partial data encoding operation)を実行し、図21はECCのための部分データのエンコード処理動作を実行する。
図20を参照すると、S210段階で、ホスト(図1参照、1300)からメモリコントローラ(図1参照、1200)に部分データ(partial data)を変更するための要求(request)信号が入力される。
S220段階で、メモリコントローラ1200はメモリ装置(図1参照、1100)から読み取った部分データのためのEDCを使用してエラーを検査する。ここで、メモリ装置1100から読み取った部分データは既存のデータ(Dold、olddata)である。メモリ装置1100には既存のデータDoldとEDCのためのパリティPoldが保存されている。
S230段階で、メモリコントローラ1200はメモリ装置1100から読み取った部分データにエラーがあるか否かを判断する。判断の結果、エラーがあれば(YES)、メモリコントローラ1200は全データ(whole data)の読み取りを実行し(S240)、全データのためのECCを使用してエラーデータを訂正する(S245)。
S240段階でエラーがないか、S245段階でエラーが訂正された場合、S250段階でメモリコントローラ1200は部分データの読み取りを実行し、新しいパリティPnewを生成する。すなわち、図12で説明したように、新しいデータDnewと既存のデータDoldのデータの差Ddifと既存のパリティPoldを利用して新しいパリティPnewを生成する。
S260段階で、新しい部分データ(new partial data)と新しいパリティPnewをメモリ装置1100に保存する。
図21は、ECCのための部分データのエンコード動作(partial data encoding operation)を示す。図21を参照すると、S310段階で、部分データ(partial data)を変更するための要求(request)信号が入力される。
S320段階で、メモリ装置1100から読み取った部分データのためのECCを使用してエラーを検査する。メモリ装置1100には既存のデータDoldとECCのためのパリティPoldが保存されている。
S330段階で、メモリコントローラ1200はメモリ装置1100から読み取った部分データにエラーがあるか否かを判断する。判断の結果、エラーがあれば(YES)、メモリコントローラ1200は部分データのためのECCを利用してエラーデータを訂正する(S340)。
S330段階でエラーがないか、S340段階でエラーが訂正された場合、S350段階で、メモリコントローラ1200は部分データの読み取りを実行し、新しいパリティを生成する。S360段階で、新しい部分データ(new partial data)と新しいパリティPnewをメモリ装置1100に保存する。
前記のように本発明は、変更されたデータのみを使用して新しいパリティを生成するので、データの読み取り時間と消費電力を削減することができる。本発明は新しいパリティ生成の動作を領域別に分けて行う。本発明は変更しようとする一部のデータにエラーがある場合、エラーを早期に検出し、訂正することによって、新しいパリティにエラーが発生することを防止する。
IV.本発明の適用例。
図22は、図1に示されたメモリシステムの応用例を示すブロック図である。図22を参照すると、メモリシステム2000はメモリ装置2100とコントローラ2200を備える。メモリ装置2100は複数のメモリチップを備える。複数のメモリチップは複数のグループに分割される。複数のメモリチップの各グループは1つの共通チャネルを介してコントローラ2200と通信できるように構成される。例示的に、複数のメモリチップは第1から第kチャンネルCH1〜CHkを介してコントローラ2200と通信できる。
図23は、本発明の実施形態によるメモリシステムがメモリカードに適用された例を示す。図23を参照すると、メモリカード3000はメモリ装置3100、コントローラ3200及びコネクタ3300を備える。
コネクタ3300はメモリカード3000とホストを電気的に接続する。メモリカード3000はPCカード(PCMCIA、personal computer memory card international association)、コンパクトフラッシュ(登録商標)カード(CF)、スマートメディアカード(SM、SMC)、メモリスティック、マルチメディアカード(MMC、RS−MMC、MMCmicro)、SDカード(SD、miniSD、microSD、SDHC)、ユニバーサルフラッシュメモリ(UFS)などのメモリカードで構成される。
図24は、本発明の実施形態によるメモリシステムがソリッドステートドライブ(SSD、Solid State Drive)に適用された例を示す。図24を参照すると、ソリッドステートドライブ4000は複数のメモリ装置4100、コントローラ4200、及びコネクタ4300を備える。コネクタ4300はソリッドステートドライブ5000とホストを電気的に接続する。
図25は、本発明の実施形態によるメモリシステムがコンピューティングシステムに適用された例を示すブロック図である。図25を参照すると、コンピューティングシステム5000はバス5100、プロセッサ5200、メモリシステム5300、モデム5400そしてユーザーインターフェース5500を備える。
バス5100はコンピューティングシステム5000の構成要素の間にチャンネルを提供する。プロセッサ5200はコンピューティングシステム5000の諸動作を制御し、論理演算を実行する。メモリシステム5300は本発明の実施形態によるメモリシステム1000または2000を備える。
メモリシステム5300はコンピューティングシステム5000の動作メモリまたはストレージに提供される。動作メモリはプロセッサ5200がコンピューティングシステム5000を制御するために使用されるストレージ領域である。ストレージはコンピューティングシステム5000がデータの長期的な保存のために使用されるストレージ領域である。
メモリシステム5300が動作メモリとして提供されるとき、コンピューティングシステム5000は他のストレージをさらに備えることができる。メモリシステム5300がストレージとして提供されるとき、コンピューティングシステム5000は他の動作メモリをさらに備えることができる。モデム5400は外部と有線または無線通信を行う。
ユーザーインターフェース5500はカメラ、キーボード、マウス、マイク、タッチパッド、タッチパネル、ボタン、センサーなどのユーザー入力インターフェース、ディスプレイ、スピーカー、ランプ、モーターなどのユーザー出力インターフェースを含む。
コンピューティングシステム5000はスマートフォン、スマートパッドなどのモバイルマルチメディア機器、スマートテレビ、スマートモニタ、コンピュータ、ラップトップコンピュータなどのマルチメディアデバイスで構成される。
本発明の詳細な説明では具体的な実施形態について説明したが、本発明の範囲と技術的思想から逸脱しない範囲内で様々な変形が可能である。そのため、本発明の範囲は上述した実施形態に限定されず、本発明の特許請求の範囲及び特許請求の範囲と均等なものにより定められるべきである。
1000、2000・・・メモリシステム
1100、2100・・・メモリ装置
1200、2200・・・コントローラ
1110・・・メモリセルアレイ
1120・・・アドレスデコーダ
1130・・・読み取りと書き込み回路
1140・・・制御ロジック
1210・・・システムバス
1220・・・制御ユニット
1230・・・ランダムアクセスメモリ
1240・・・ホストインターフェース
1250・・・メモリインターフェース
1260・・・ECCエンコーダ

Claims (30)

  1. ホストから部分データを変更するための要求信号を受信する段階と、
    エラー検出コード(EDC)を利用して、メモリ装置から読み取られた部分データのエラーを検出する段階と、
    前記メモリ装置から読み取られた部分データにエラーがない場合には、前記ホストから提供される新しいデータDnewと前記メモリ装置から読み取られた部分データ(Dold、既存のデータと言う)との差を求め、前記データの差Ddifと前記メモリ装置から読み取られた既存のパリティPoldとを使用して、新しいパリティPnewを計算する段階と、
    前記新しいデータと前記新しいパリティを前記メモリ装置に保存する段階を含むことを特徴とするメモリコントローラの部分データを変更する方法。
  2. 前記既存のデータにエラーがある場合には、前記メモリ装置から全データの読み取りを実行し、エラー訂正コード(ECC)を使用して、前記既存のデータのエラーを訂正する段階をさらに含み、
    前記既存のデータのエラーはエラー検出コードを使用して、検出され、前記データの差を計算する段階は前記既存のデータにエラーが無い場合に遂行されることを特徴とする請求項1に記載のメモリコントローラの部分データを変更する方法。
  3. 前記既存のデータのエラーを訂正した後に、前記ホストから提供される新しいデータと前記エラーを訂正した既存のデータとの差を求め、前記データの差Ddifと前記メモリ装置から読み取られた既存のパリティPoldとを利用して、新しいパリティPnewを計算することを特徴とする請求項2に記載のメモリコントローラの部分データを変更する方法。
  4. 前記メモリ装置に保存される全データを複数の部分データに分割し、それぞれの部分データのEDCのためのパリティを生成し、部分符号化データを作成する部分データのエンコード段階とをさらに含むことを特徴とする請求項3に記載のメモリコントローラの部分データを変更する方法。
  5. 前記部分データのエンコード段階を実行した後に、部分符号化データ全体のECCのためのパリティを生成する全データのエンコード段階をさらに含むことを特徴とする請求項4に記載のメモリコントローラの部分データを変更する方法。
  6. 前記メモリ装置に保存される全データのECCのためのパリティを生成する全データのエンコード段階をさらに含むことを特徴とする請求項2に記載のメモリコントローラの部分データを変更する方法。
  7. 前記全データのエンコード段階を実行した後に、前記メモリ装置に保存される全データを複数の部分データに分割し、全データのEDCのためのパリティを生成する段階をさらに含むことを特徴とする請求項6に記載のメモリコントローラの部分データを変更する方法。
  8. それぞれの部分データのEDCのためのパリティを生成し、部分符号化データを作成する部分データのエンコード段階をさらに含むことを特徴とする請求項7に記載のメモリコントローラの部分データを変更する方法。
  9. 前記部分データのエンコード段階で、前記全データのエンコード段階で生成された全データの符号化パリティを生成することを特徴とする請求項8に記載のメモリコントローラの部分データを変更する方法。
  10. ホストから部分データを変更するための要求信号を受信する段階と、
    エラー訂正コード(ECC)を使用して、メモリ装置から読み取られた部分データのエラーを検出する段階と、
    検出の結果、前記メモリ装置から読み取られた部分データにエラーがある場合にエラーを訂正し、前記ホストから提供される新しいデータDnewと前記エラーが訂正された部分データ(Dold、既存のデータと言う)との差を求め、前記データの差Ddifと前記メモリ装置から読み取られた既存のパリティPoldとを使用して、新しいパリティPnewを計算する段階を含むことを特徴とするメモリコントローラの部分データを変更する方法。
  11. 前記新しいデータと前記新しいパリティを前記メモリ装置に保存する段階を含むことを特徴とする請求項10に記載のメモリコントローラの部分データを変更する方法。
  12. 前記メモリ装置に保存される全データを複数の部分データに分割し、それぞれの部分データのECCのためのパリティを生成し、部分符号化データを作成する部分データのエンコード段階と、
    前記部分データのエンコード段階を実行した後に、部分符号化データ全体のECCのためのパリティを生成する全データのエンコード段階とをさらに含むことを特徴とする請求項10に記載のメモリコントローラの部分データを変更する方法。
  13. 前記メモリ装置に保存される全データのECCのためのパリティを生成する全データのエンコード段階と、
    前記全データのエンコード段階を実行した後に、前記メモリ装置に保存される全データを複数の部分データに分割し、全データのECCのためのパリティを生成する段階とをさらに含むことを特徴とする請求項10に記載のメモリコントローラの部分データを変更する方法。
  14. それぞれの部分データのECCのためのパリティを生成し、部分符号化データを作成する部分データのエンコード段階をさらに含むことを特徴とする請求項13に記載のメモリコントローラの部分データを変更する方法。
  15. 前記部分データのエンコード段階で、前記全データのエンコード段階で生成された全データの符号化パリティを生成することを特徴とする請求項14に記載のメモリコントローラの部分データを変更する方法。
  16. 検出結果、前記メモリ装置から読み取られた部分データにエラーがない場合に、前記ホストから提供される新しいデータDnewと前記メモリ装置から読み取られた部分データDoldとの差を求め、前記データの差Ddifと前記メモリ装置から読み取られた既存のパリティPoldとを使用して、新しいパリティPnewを計算する段階をさらに含むことを特徴とする請求項10に記載のメモリコントローラの部分データを変更する方法。
  17. 前記メモリ装置は、揮発性メモリ装置であることを特徴とする請求項10に記載のメモリコントローラの部分データを変更する方法。
  18. 前記メモリ装置は、不揮発性メモリ装置であることを特徴とする請求項10に記載のメモリコントローラの部分データを変更する方法。
  19. メモリ装置のデータの一部が変更される場合に新しいパリティを生成するメモリコントローラにおいて、
    前記変更される一部のデータの位置を識別するためのデータの位置識別器と、
    前記データの位置識別器から前記変更される一部のデータの位置情報を受信して、ホストから入力される新しいデータDnewと前記メモリ装置から入力される既存のデータDoldとのデータの差Ddifを計算するデータ差の計算機と、
    前記メモリ装置に保存されている既存のパリティPoldと前記データの差Ddifとを利用して、新しいパリティPnewを計算するパリティ計算機を含むことを特徴とするメモリコントローラ。
  20. 前記データの位置識別器、前記データ差の計算機、前記パリティ計算機は新しいパリティジェネレータを構成することを特徴とする請求項19に記載のメモリコントローラ。
  21. 前記データ差の計算機は前記メモリ装置に保存されたデータのうち変更されていないデータをすべて0として処理し、前記新しいデータDnewと前記既存のデータDoldとのデータの差Ddifを計算することを特徴とする請求項19に記載のメモリコントローラ。
  22. 前記データ差の計算機は前記変更される一部のデータを複数の領域に分割し、各領域からの新しいデータと既存のデータとのデータの差を計算することを特徴とする請求項19に記載のメモリコントローラ。
  23. 前記データ差の計算機は前記新しいデータと前記既存のデータとのデータの差をXOR演算で計算することを特徴とする請求項19に記載のメモリコントローラ。
  24. データとパリティPoldを保存するメモリ装置と、
    前記メモリ装置に保存されたデータの一部を変更するための新しいデータDnewと位置情報を提供するホストと、
    前記ホストから新しいデータと位置情報を受信して、前記ホストから提供される新しいデータと前記メモリ装置から入力される既存のデータとのデータの差Ddifを計算し、前記メモリ装置に保存されている既存のパリティPoldと前記データの差Ddifとを利用して、新しいパリティPnewを生成するメモリコントローラを含むことを特徴とするメモリシステム。
  25. 前記メモリコントローラは、
    前記変更される一部のデータの位置を識別するためのデータの位置識別器と、
    前記データの位置識別器から前記変更される一部のデータの位置情報を受信して、前記ホストから入力される新しいデータDnewと前記メモリ装置から入力される既存のデータDoldとのデータの差Ddifを計算するデータ差の計算機と、
    前記既存のパリティPoldと前記データの差Ddifとを利用して、新しいパリティPnewを計算するパリティ計算機を備えることを特徴とする請求項24に記載のメモリシステム。
  26. 前記データ差の計算機は前記メモリ装置に保存されたデータのうち変更されていないデータをすべて0として処理し、前記新しいデータDnewと前記既存のデータDoldとのデータの差Ddifを計算することを特徴とする請求項24に記載のメモリシステム。
  27. 前記データ差の計算機は前記変更される一部のデータを複数の領域に分割し、各領域からの新しいデータと既存のデータとのデータの差を計算することを特徴とする請求項24に記載のメモリシステム。
  28. メモリコントローラで第1パリティを決定し、前記第1パリティはメモリ装置に格納された第1データの全体に該当するパリティであり、前記第1データは第1及び第2部分を含む段階と、
    前記第1部分を新しいデータに取り替えるように要請される段階と、
    前記メモリコントローラで、前記新しいデータと前記第1部分とに基づいたデータ差値を生成する段階と、
    前記メモリコントローラで、前記データ差と前記第1パリティに基づいて、前記第1データの新しいパリティを生成することによって、前記第1パリティをアップデートする段階と、
    前記メモリ装置で前記新しいデータと前記新しいパリティとを格納することによって、前記第1データの第1部分を前記新しいデータに取り替える段階とを含むメモリコントローラパリティ情報をアップデートするためのメモリコントローラの動作方法。
  29. 前記メモリコントローラは前記データ差を発生する動作を遂行し、前記新しいパリティを生成することは前記第2部分を使用しなく遂行され、前記新しいパリティは前記新しいデータと前記第2部分とを含む前記第1データの全体に該当する請求項28に記載のメモリコントローラパリティ情報をアップデートするためのメモリコントローラの動作方法。
  30. 前記第1部分は前記第1データの隣接するビットを含み、前記第2部分は前記第1データの隣接するビットを含み、前記第1及び第2部分は互いにオーバーラップされない請求項28に記載のメモリコントローラパリティ情報をアップデートするためのメモリコントローラの動作方法。
JP2013235041A 2012-11-15 2013-11-13 メモリ装置に保存された部分データを変更するメモリコントローラ及びその部分データを変更する方法 Pending JP2014099174A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2012-0129549 2012-11-15
KR1020120129549A KR102041874B1 (ko) 2012-11-15 2012-11-15 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법
KR10-2012-0129548 2012-11-15
KR1020120129548A KR102002044B1 (ko) 2012-11-15 2012-11-15 새 패러티를 생성하기 위한 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러와 메모리 시스템

Publications (1)

Publication Number Publication Date
JP2014099174A true JP2014099174A (ja) 2014-05-29

Family

ID=50555968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013235041A Pending JP2014099174A (ja) 2012-11-15 2013-11-13 メモリ装置に保存された部分データを変更するメモリコントローラ及びその部分データを変更する方法

Country Status (5)

Country Link
US (1) US9311181B2 (ja)
JP (1) JP2014099174A (ja)
CN (1) CN103824599B (ja)
DE (1) DE102013112195A1 (ja)
TW (1) TWI627535B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6414497B2 (ja) * 2015-03-25 2018-10-31 アイシン・エィ・ダブリュ株式会社 メモリコントローラ
JP2016184372A (ja) * 2015-03-27 2016-10-20 富士通株式会社 ストレージシステム,情報処理装置,パリティ生成プログラム及びパリティ生成方法
DE102015104841B4 (de) * 2015-03-30 2024-08-14 Infineon Technologies Ag Chip und Verfahren zum Detektieren einer Veränderung eines gespeicherten Datenvektors
US10176040B2 (en) 2016-04-05 2019-01-08 Micron Technology, Inc. Error correction code (ECC) operations in memory
KR20170121798A (ko) * 2016-04-26 2017-11-03 삼성전자주식회사 반도체 메모리 장치 및 이의 동작 방법
US20170324425A1 (en) * 2016-05-06 2017-11-09 Infineon Technologies Ag Embedded parity matrix generator
CN107068194A (zh) * 2017-04-20 2017-08-18 聚辰半导体(上海)有限公司 一种应用在eeprom上的错误纠正编码及相应的eeprom
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
KR20190031787A (ko) 2017-09-18 2019-03-27 삼성전자주식회사 병렬 리드-모디파이-라이트 동작을 수행하는 메모리 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100107036A1 (en) * 2008-10-28 2010-04-29 Micron Technology, Inc. Error correction in multiple semiconductor memory units
US20110239081A1 (en) * 2010-03-23 2011-09-29 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling a semiconductor storage device
US20120254694A1 (en) * 2011-04-03 2012-10-04 Anobit Technologies Ltd. Redundant storage in non-volatile memory by storing redundancy information in volatile memory

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06342405A (ja) 1993-06-01 1994-12-13 Nec Corp ファイル・システム
JP3270959B2 (ja) 1993-10-05 2002-04-02 株式会社日立製作所 ディスクアレイ装置におけるパリティ格納方法およびディスクアレイ装置
JPH11212877A (ja) 1998-01-28 1999-08-06 Nec Kofu Ltd 記憶装置
KR100300175B1 (ko) 1998-09-17 2001-10-27 서평원 인쇄회로기판에다운로드하는방법
JP2000259496A (ja) 1999-03-08 2000-09-22 Nec Kofu Ltd 記憶装置
JP2001337759A (ja) 2000-05-24 2001-12-07 Fuji Xerox Co Ltd ディスクアレイ装置
JP4877894B2 (ja) * 2001-07-04 2012-02-15 ルネサスエレクトロニクス株式会社 半導体装置
KR100423812B1 (ko) 2001-12-20 2004-03-22 한국전자통신연구원 디스크 캐쉬메모리 제어기 및 패리티 연산장치를 구비한알에이아이디 제어기 및 패리티 연산방법
US7100097B2 (en) 2002-07-16 2006-08-29 Hewlett-Packard Development Company, L.P. Detection of bit errors in maskable content addressable memories
JP4336168B2 (ja) 2003-09-08 2009-09-30 株式会社ルネサステクノロジ Ecc機能付き半導体記憶装置
US7191379B2 (en) 2003-09-10 2007-03-13 Hewlett-Packard Development Company, L.P. Magnetic memory with error correction coding
US7188303B2 (en) * 2003-12-29 2007-03-06 Intel Corporation Method, system, and program for generating parity data
KR100634414B1 (ko) 2004-09-06 2006-10-16 삼성전자주식회사 에러 검출용 패러티 발생기를 구비한 낸드 플래시 메모리 장치 및 그것의 에러 검출 방법
US7392428B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
JP4643334B2 (ja) * 2005-03-31 2011-03-02 富士通セミコンダクター株式会社 半導体記憶装置
US7467335B2 (en) 2005-07-01 2008-12-16 Alcatel-Lucent Usa Inc. Method and apparatus for synchronizing data channels using an alternating parity deskew channel
TWI309768B (en) * 2005-09-06 2009-05-11 Realtek Semiconductor Corp Error correction apparatus capable of raising memory bandwidth utilization efficiency and related method thereof
US7954034B1 (en) * 2005-09-30 2011-05-31 Emc Corporation Method of and system for protecting data during conversion from an ECC protection scheme to a parity protection scheme
JP4469783B2 (ja) * 2005-11-28 2010-05-26 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
JP4643479B2 (ja) * 2006-03-22 2011-03-02 株式会社東芝 アクセス制御装置、アクセス制御システム、プロセッサ、アクセス制御方法およびメモリアクセス制御方法
US7945840B2 (en) 2007-02-12 2011-05-17 Micron Technology, Inc. Memory array error correction apparatus, systems, and methods
KR100855979B1 (ko) 2007-02-13 2008-09-02 삼성전자주식회사 바이트 마스킹 동작을 위한 반도체 메모리 장치 및 패리티데이터 생성 방법
KR101472797B1 (ko) * 2007-07-16 2014-12-15 삼성전자주식회사 데이터를 읽거나 쓰기 위한 방법 및 장치
JP2010123156A (ja) 2008-11-17 2010-06-03 Elpida Memory Inc 半導体記憶装置及びその制御方法
US8769188B2 (en) * 2009-11-18 2014-07-01 Mediatek Inc. Nonvolatile memory controller and method for writing data to nonvolatile memory
KR101079367B1 (ko) 2010-01-13 2011-11-02 성균관대학교산학협력단 플래시 메모리를 사용하는 raid 저장 장치에서 패리티 데이터 관리 방법 및 그 장치
KR101623119B1 (ko) 2010-02-01 2016-05-20 삼성전자주식회사 솔리드 스테이트 드라이브의 에러 제어 방법
JP4940322B2 (ja) 2010-03-16 2012-05-30 株式会社東芝 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法
JP2012022422A (ja) 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
KR20120129549A (ko) 2011-05-20 2012-11-28 송권호 향기가 배출되는 의자
KR101249956B1 (ko) 2011-05-20 2013-04-03 한밭대학교 산학협력단 세탁물 건조장치 및 건조방법
US9444496B2 (en) * 2012-04-04 2016-09-13 University Of Southern California Correctable parity protected memory
CN104205059B (zh) * 2012-04-27 2017-07-14 株式会社日立制作所 存储系统和存储控制装置
US9619318B2 (en) * 2013-02-22 2017-04-11 Intel Deutschland Gmbh Memory circuits, method for accessing a memory and method for repairing a memory
KR101750662B1 (ko) * 2013-06-24 2017-06-23 마이크론 테크놀로지, 인크. 데이터 에러 교정용 회로, 장치, 및 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100107036A1 (en) * 2008-10-28 2010-04-29 Micron Technology, Inc. Error correction in multiple semiconductor memory units
WO2010062655A2 (en) * 2008-10-28 2010-06-03 Micron Technology, Inc. Error correction in multiple semiconductor memory units
JP2012507104A (ja) * 2008-10-28 2012-03-22 マイクロン テクノロジー, インク. 複数の半導体メモリユニットにおけるエラー訂正
US20110239081A1 (en) * 2010-03-23 2011-09-29 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling a semiconductor storage device
JP2011198272A (ja) * 2010-03-23 2011-10-06 Toshiba Corp 半導体記憶装置および半導体記憶装置の制御方法
US20120254694A1 (en) * 2011-04-03 2012-10-04 Anobit Technologies Ltd. Redundant storage in non-volatile memory by storing redundancy information in volatile memory

Also Published As

Publication number Publication date
TWI627535B (zh) 2018-06-21
US9311181B2 (en) 2016-04-12
US20140136920A1 (en) 2014-05-15
DE102013112195A1 (de) 2014-05-15
CN103824599B (zh) 2018-06-05
TW201432458A (zh) 2014-08-16
CN103824599A (zh) 2014-05-28

Similar Documents

Publication Publication Date Title
JP2014099174A (ja) メモリ装置に保存された部分データを変更するメモリコントローラ及びその部分データを変更する方法
US10002652B1 (en) Memory system and method for operating the same
US9602134B2 (en) Operating method of error correction code decoder and memory controller including the error correction code decoder
US10120585B2 (en) Memory system of optimal read reference voltage and operating method thereof
US10484008B2 (en) Memory system with on-the-fly error detection and termination and operating method thereof
KR20180060524A (ko) 메모리 시스템 및 그의 동작 방법
KR20120123985A (ko) 메모리 시스템 및 에러 정정 방법
US20120124449A1 (en) Method and apparatus to perform concurrent read and write memory operations
KR20180058328A (ko) 메모리 시스템 및 그의 동작 방법
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
US20160334999A1 (en) Reduction of maximum latency using dynamic self-tuning for redundant array of independent disks
US11182243B2 (en) Memory system with adaptive information propagation and method of operating such memory
US10289328B2 (en) Memory controller and method for handling host request based on data character
US10348335B2 (en) Miscorrection avoidance for turbo product codes
KR102041874B1 (ko) 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법
US11281381B2 (en) Storage node of distributed storage system and method of operating the same
US11023388B2 (en) Data path protection parity determination for data patterns in storage devices
US11062758B2 (en) Memory system to process multiple word line failures with limited storage and method of operating such memory system
US11115062B2 (en) Memory system with adaptive threshold decoding and method of operating such memory system
KR102002044B1 (ko) 새 패러티를 생성하기 위한 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러와 메모리 시스템
KR20180058327A (ko) 컨트롤러, 메모리 시스템 및 그의 동작 방법
US9996412B2 (en) Enhanced chip-kill schemes by using sub-trunk CRC
CN110047554B (zh) 具有超级芯片删除恢复的存储器系统及其操作方法
US10922222B2 (en) Data processing system and operating method for generating physical address update history
CN108073469A (zh) 用于通用产品代码的数据映射方案

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160815

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20161222

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20161228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170530

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171226