KR20180091989A - 연장된 제품 수명을 갖는 메모리장치 및 그 동작방법 - Google Patents

연장된 제품 수명을 갖는 메모리장치 및 그 동작방법 Download PDF

Info

Publication number
KR20180091989A
KR20180091989A KR1020170016451A KR20170016451A KR20180091989A KR 20180091989 A KR20180091989 A KR 20180091989A KR 1020170016451 A KR1020170016451 A KR 1020170016451A KR 20170016451 A KR20170016451 A KR 20170016451A KR 20180091989 A KR20180091989 A KR 20180091989A
Authority
KR
South Korea
Prior art keywords
memory
data
original data
bit
inversion
Prior art date
Application number
KR1020170016451A
Other languages
English (en)
Inventor
백진호
박일
송다은
이호균
주영표
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020170016451A priority Critical patent/KR20180091989A/ko
Priority to US15/821,493 priority patent/US10459794B2/en
Priority to CN201711294672.8A priority patent/CN108399936B/zh
Publication of KR20180091989A publication Critical patent/KR20180091989A/ko

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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리장치는, 제1 메모리와, 제1 메모리보다 상대적으로 높은 쓰기 내구성을 갖는 제2 메모리와, 그리고 컨트롤러를 포함한다. 컨트롤러는, 호스트로부터 전송되는 오리지널 데이터에 대한 에러 정정 과정에서 오리지널 데이터에 패리티 비트가 부가되어 발생되는 코드워드에 대해 오리지널 데이터 및 패리티 비트를 분리하여 오리지널 데이터는 제1 메모리에 기록하고 패리티 비트는 제2 메모리에 기록되도록 제어동작을 수행한다.

Description

연장된 제품 수명을 갖는 메모리장치 및 그 동작방법{Memory device having extending product lifetime and method of operating the memory device}
본 개시의 여러 실시예들은 메모리장치에 관한 것으로서, 특히 연장된 제품 수명을 갖는 메모리장치 및 그 동작방법에 관한 것이다.
차세대 메모리로 주목받고 있는 FRAM(Ferroelectric RAM), MRAM(Magnetic RAM), PRAM(Phase change RAM) 등과 같은 비휘발성 메모리(NVRAM)은, 구동에 필요한 전력이 매우 낮으며, 바이트 단위로 액세스(access)가 가능하다는 장점을 가지면서 비휘발성이라는 저장매체의 특성을 갖고 있다. 현재 비휘발성 메모리로서 NAND 플래시 메모리가 널리 사용되고 있지만, 낸드 플래시(NAND flash) 메모리는 페이지 단위로 읽기 및 쓰기 동작이 이루어지고 블록 단위로 지우기 동작이 이루어져야 한다는 한계를 갖고 있다. 이에 따라 바이트 단위로 읽기 및 쓰기 동작이 이루어지는 비휘발성 메모리(NVRAM)의 응용 분야는 점점 확대될 것으로 기대되고 있다. 그런데 이와 같은 비휘발성 메모리(NVRAM)는, 일반적으로 쓰기 횟수를 나타내는 지표인 쓰기 내구성(write endurance)이 휘발성 메모리에 비하여 열악하며, 따라서 휘발성 메모리에 비해 수명이 짧은 것으로 알려져 있다. 예컨대 휘발성 메모리로 대표적인 디램(DRAM)의 경우 대략 1015의 쓰기 내구성을 갖는 반면, PRAM은 대략 108의 쓰기 내구성을 가지며, RRAM의 경우 대략 105의 쓰기 내구성을 갖는다. 따라서 최근에는 이와 같은 단점을 극복하기 위해 웨어-레벨링(wear-leveling)이나 데이터 반전(data inverting)과 같은 방법들을 적용하고 있다.
한편 비휘발성 메모리(NVRAM)는 셀 특성으로 인하여 데이터 "0"과 데이터 "1"을 구분하는 리드 마진(read margin)이 상대적으로 작은 것으로 알려져 있다. 이와 같은 비휘발성 메모리(NVRAM)는, 싱글 레벨 셀(single-level cell)의 구조를 갖더라도 낸드 메모리에 비하여 상대적으로 높은 에러율(error rate)을 나타내며, 그 결과 에러정정코드(Error Correction Code; 이하 ECC)를 이용한 에러정정기술의 적용에 대한 요구가 크다. ECC를 이용한 에러정정을 수행하는 경우, 비휘발성 메모리(NVRAM)에 쓰고자 하는 오리지널 데이터(original data)에 에러정정에 필요한 데이터, 예컨대 패리티 비트들(parity bits)이 추가된 상태로 비휘발성 메모리(NVRAM)에 쓰여진다. 오리지널 데이터의 덮어 쓰기 비율이 50% 이하인 경우, 오리지널 데이터에 비하여 상대적으로 패리티 비트들의 덮어 쓰기 비율이 높게 나타나며, 이 경우 데이터 비트들의 추가로 인해 비휘발성 메모리(NVRAM)의 수명을 결정하는데 우선적인 영향을 끼치고 있다.
본 출원이 해결하고자 하는 과제는, 상대적으로 쓰기 빈도가 높은 패리티 비트 및/또는 인버전 상태 비트(inversion status bit)로 인한 수명 저하를 억제함으로써 제품 수명이 연장되는 메모리장치를 제공하는 것이다.
본 출원이 해결하고자 하는 다른 과제는, 위와 같은 메모리장치의 동작방법을 제공하는 것이다.
본 개시의 일 예에 따른 메모리장치는, 제1 메모리와, 제1 메모리보다 상대적으로 높은 쓰기 내구성을 갖는 제2 메모리와, 그리고 컨트롤러를 포함한다. 컨트롤러는, 호스트로부터 전송되는 오리지널 데이터에 대한 에러 정정 과정에서 오리지널 데이터에 패리티 비트가 부가되어 발생되는 코드워드에 대해 오리지널 데이터 및 패리티 비트를 분리하여 오리지널 데이터는 제1 메모리에 기록하고 패리티 비트는 제2 메모리에 기록되도록 제어동작을 수행한다.
본 개시의 다른 예에 따른 메모리장치는, 제1 메모리와, 제1 메모리보다 상대적으로 높은 쓰기 내구성을 갖는 제2 메모리와, 그리고 컨트롤러를 포함한다. 컨트롤러는, 호스트로부터 전송되는 오리지널 데이터에 대한 에러 정정 과정 및 데이터 반전 과정에서 오리지널 데이터에 메타데이터가 부가되어 발생되는 이진 데이터 스트림에 대해 오리지널 데이터 및 메타데이터를 분리하여 오리지널 데이터는 제1 메모리에 기록하고 메타데이터는 제2 메모리에 기록되도록 제어동작을 수행한다.
본 개시의 일 예에 따른 메모리장치의 동작방법은, 호스트로부터 전송되는 오리지널 데이터에 대한 에러 정정을 수행하여 오리지널 데이터에 패리티 비트가 부가되는 코드워드를 발생시키는 단계와, 그리고 코드워드에 대해 오리지널 데이터 및 패리티 비트를 분리하여 오리지널 데이터는 제1 메모리에 기록하고 패리티 비트는 제1 메모리보다 상대적으로 높은 쓰기 내구성을 갖는 제2 메모리에 저장되도록 하는 단계를 포함한다.
본 개시의 다른 예에 따른 메모리장치의 동작방법은, 호스트로부터 전송되는 오리지널 데이터에 대한 에러 정정을 수행하여 오리지널 데이터에 패리티 비트가 부가되는 코드워드를 발생시키는 단계와, 코드워드에 대해 모든 비트 값들을 반전시키거나 반전시키지 않는 데이터 반전을 수행하여 코드워드에 데이터 반전 여부의 정보를 갖는 인버전 상태 비트가 부가되는 이진 데이터 스트림을 발생시키는 단계와, 그리고 이진 데이터 스트림에 대해 오리지널 데이터와, 패리티 비트 및 인버전 상태 비트로 구성되는 메타데이터를 분리하여 오리지널 데이터는 상기 메모리에 기록하고 메타데이터는 제1 메모리보다 상대적으로 높은 쓰기 내구성을 갖는 제2 메모리에 기록하는 단계를 포함한다.
여러 실시예들에 따르면, 덮어 쓰는 빈도가 상대적으로 작은 오리지널 데이터는 비휘발성 메모리에 기록하고, 덮어 쓰는 빈도가 상대적으로 높은 패리티 비트는 상대적으로 쓰기 내구성이 높은 휘발성 메모리에 기록함으로써 비휘발성 메모리의 수명 저하를 억제할 수 있다는 이점이 제공된다.
도 1은 본 개시의 일 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 2는 도 1의 메모리장치의 쓰기 동작시의 에러 정정부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 3은 도 1의 메모리장치의 쓰기 동작시의 데이터 분리/병합부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 4는 도 1의 메모리장치의 읽기 동작시의 데이터 분리/병합부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 5는 도 1의 메모리장치의 읽기 동작시의 에러 정정부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 6은 본 개시의 다른 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 7은 본 개시의 또 다른 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 8은 본 개시의 또 다른 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 9는 도 8의 메모리장치의 쓰기 동작시의 에러 정정부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 10은 도 8의 메모리장치의 쓰기 동작시의 데이터 반전부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 11은 도 8의 메모리장치의 쓰기 동작시의 데이터 분리/병합부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 12는 도 8의 메모리장치의 읽기 동작시의 데이터 분리/병합부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 13은 도 8의 메모리장치의 읽기 동작시의 데이터 반전부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 14는 도 8의 메모리장치의 읽기 동작시의 에러 정정부의 동작을 설명하기 위해 나타내 보인 도면이다.
도 15는 본 개시의 또 다른 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 16은 본 개시의 또 다른 예에 따른 메모리장치를 나타내 보인 블록도이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 부재를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 또한, 어느 부재의 "상"에 위치하거나 "상부", "하부", 또는 "측면"에 위치한다는 기재는 상대적인 위치 관계를 의미하는 것이지 그 부재에 직접 접촉하거나 또는 사이 계면에 다른 부재가 더 도입되는 특정한 경우를 한정하는 것은 아니다. 또한, 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다.
도 1은 본 개시의 일 예에 따른 메모리장치를 나타내 보인 블록도이다. 도 1을 참조하면, 본 예에 따른 메모리장치(10)는, 제1 메모리(Memory1)(100)와, 제2 메모리(Memory2)(200)와, 그리고 컨트롤러(Controller)(300)를 포함하여 구성될 수 있다. 일 예에서 제1 메모리(100)는 비휘발성 메모리일 수 있다. 예컨대 제1 메모리(100)는, PRAM, MRAM, RRAM, NFGM(Nano Floating Gate Memory), 또는 폴리머 램(Polymer RAM)일 수 있다. 제2 메모리(200)는, 제1 메모리(100)보다 높은 쓰기 내구성(write endurance)을 갖는 다른 종류의 비휘발성 메모리일 수 있다. 다른 예에서 제1 메모리(100)는 비휘발성 메모리이고, 제2 메모리(200)는 제1 메모리(100)보다 높은 쓰기 내구성(write endurance)을 갖는 휘발성 메모리일 수 있다. 예컨대 제1 메모리(100)는 PRAM, MRAM, RRAM, NFGM(Nano Floating Gate Memory), 또는 폴리머 램(Polymer RAM)일 수 있으며, 제2 메모리(200)는 디램(DRAM)일 수 있다.
컨트롤러(300)는, 호스트(Host)로부터의 읽기/쓰기 명령에 의해 비휘발성 메모리(100)로 데이터를 쓰거나 비휘발성 메모리(100)로부터 데이터를 읽는 동작을 제어한다. 컨트롤러(300)는 이와 같은 제어 과정에서 에러정정을 수행하는 에러정정부(ECC)(310)와, 데이터 분리 및 병합을 수행하는 데이터 분리/병합부(data separating/merging)(330)를 포함할 수 있다. 에러정정부(310)는, 입력되는 데이터에 대한 ECC 인코딩을 수행하는 ECC 인코더(ECC encoder)(311)와, 입력되는 데이터에 대한 ECC 디코딩을 수행하는 ECC 디코더(ECC decoder)(312)를 포함하여 구성될 수 있다. 데이터 분리/병합부(330)는, 입력되는 데이터를 2개로 분리하는 데이터 분리부(Data Separating)(331)와, 입력되는 2개의 데이터를 하나로 병합하는 데이터 병합부(Data Merging)(332)를 포함할 수 있다.
호스트(Host)로부터의 읽기 명령에 따라 오리지널 데이터(original data)가 컨트롤러(300)에 전송되면, 에러정정부(310)의 ECC 인코더(311)는 오리지널 데이터에 대한 ECC 인코딩을 수행하여 오리지널 데이터에 패리티 비트가 부가된 코드워드를 출력시킨다. ECC 인코더(311)로부터 출력되는 코드워드는 데이터 분리/병합부(330)에 의해 각각 오리지널 데이터와 패리티 비트로 분리된다. 컨트롤러(300)는, 분리된 오리지널 데이터와 패리티 비트를 각각 제1 메모리(100) 및 제2 메모리(200)에 기록한다.
호스트(Host)로부터의 쓰기 명령에 따라 컨트롤러(300)는 비휘발성 메모리(100)로부터의 오리지널 데이터(original data) 및 휘발성 메모리(200)로부터의 패리티 비트를 읽는다. 컨트롤러(300)에 입력되는 오리지널 데이터 및 패리티 비트는, 데이터 분리/병합부(330)에 의해 병합되어 코드워드 형태로 출력된다. 이 코드워드는, 에러 정정부(310)의 ECC 디코더(312)에 의한 ECC 디코딩을 통해 오리지널 데이터로 복원되며, 복원된 오리지널 데이터는 호스트로 전송된다.
도 2 및 도 3은 본 개시의 일 예에 따른 메모리장치(10)의 쓰기 동작을 설명하기 위해 나타내 보인 도면들이다. 구체적으로 도 2는 쓰기 동작시의 에러 정정부(310)의 동작을 설명하기 위해 나타내 보인 도면이고, 도 3은 쓰기 동작시의 데이터 분리/병합부(330)의 동작을 설명하기 위해 나타내 보인 도면이다. 먼저 도 2를 참조하면, 쓰기 명령 및 어드레스 정보와 함께 컨트롤러(300)로 전송되는 k비트의 오리지널 데이터(original data)는 에러 정정부(300)의 ECC 인코더(311)에 입력된다. ECC 인코더(311)는, 오리지널 데이터에 대한 ECC 인코딩을 수행하고, 그 결과를 코드워드(codeword) 형태로 출력시킨다. 코드워드는 k비트보다 많은 n비트로 구성된다. n비트의 코드워드는, k비트의 오리지널 데이터에 (n-k)비트의 패리티 비트(parity bit)가 더해진 구성을 갖는다. 패리티 비트는, 후속의 ECC 디코딩 과정에서 에러 위치 파악 및 에러를 정정하는데 이용될 수 있다.
다음에 도 4를 참조하면, ECC 인코더(311)로부터 출력되는 n비트의 코드워드(codeword)는 데이터 분리/병합부(330)의 데이터 분리부(331)에 입력된다. 데이터 분리부(331)는, 입력되는 코드워드를 각각 k비트의 오리지널 데이터와 (n-k)비트의 패리티 비트로 분리하여 출력시킨다. 도 1을 참조하여 설명한 바와 같이, 컨트롤러(300)는, 분리된 k비트의 오리지널 데이터는 제1 메모리(100)에 저장하고, 분리된 (n-k)비트의 패리티 비트는 제2 메모리(200)에 저장한다. 나중의 쓰기 과정에서 분리된 오리지널 데이터 및 패리티 비트를 다시 병합시키기 위해, 컨트롤러(300)는, 오리지널 데이터가 저장되는 제1 메모리(100)의 어드레스 정보와, 패리티 비트가 저장되는 제2 메모리(200)의 어드레스 정보가 연동되도록 컨트롤러(300) 내의 어드레스 맵을 업데이트시킨다.
도 4 및 도 5는 본 개시의 일 예에 따른 메모리장치(10)의 읽기 동작을 설명하기 위해 나타내 보인 도면들이다. 구체적으로 도 4는 읽기 동작시의 데이터 분리/병합부(330)의 동작을 설명하기 위해 나타내 보인 도면이고, 도 5는 읽기 동작시의 에러 정정부(310)의 동작을 설명하기 위해 나타내 보인 도면이다. 먼저 도 4를 참조하면, 읽기 명령 및 어드레스 정보가 입력되면, 컨트롤러(300)는 제1 메모리(100)에 저장되어 있는 오리지널 데이터를 읽어 데이터 분리/병합부(330)의 데이터 병합부(332)에 입력시킨다. 또한 컨트롤러(300)는 제2 메모리(200)에 저장되어 있는 패리티 비트를 읽어 데이터 병합부(332)에 입력시킨다. 이 과정에서 컨트롤러(300) 내의 어드레스 맵에 업데이트되어 있는 오리지널 데이터의 저장 어드레스 및 이에 연동되는 패리티 비트의 저장 어드레스를 사용하여 쓰기 과정에서 하나의 코드워드를 구성하던 오리지널 데이터 및 패리티 비트를 정확하게 읽어들인다. 데이터 병합부(332)는, 분리되어 입력되는 k비트의 오리지널 데이터와 (n-k)비트의 패리티 비트를 병합하여 n비트의 코드워드(codeword)를 출력시킨다. 데이터 병합부(332)로부터 출력되는 코드워드에는, 오리지널 데이터 및 패리티 비트가 모두 포함된다.
다음에 도 5를 참조하면, 데이터 병합부(332)로부터 출력되는 n비트의 코드워드는 에러 정정부(310)의 ECC 디코더(312)에 입력된다. ECC 디코더(312)는, 입력되는 n비트의 코드워드에 대한 ECC 디코딩을 수행하여 에러를 정정하고, 패리티 비트가 제거된 k비트의 오리지널 데이터를 출력한다. ECC 디코더(312)로부터 출력되는 k비트의 오리지널 데이터는 호스트 인터페이스를 통해 호스트로 전송된다.
본 예에 따른 메모리장치에 있어서, 에러 정정 과정에서 추가되는 패리티 비트는 오리지널 데이터와 분리되어 제1 메모리(100)보다 높은 쓰기 내구성을 갖는 제2 메모리(200)에 저장된다. 일 예에서 오리지널 데이터가 쓰여질 어드레스에 대응되는 제1 메모리(100)의 영역에 저장되어 있는 덮여 쓰여질 데이터와 오리지널 데이터의 각 비트 값들을 비교할 때, 전체 오리지널 데이터 비트의 대략 25% 이하가 새로운 값으로 덮어 써야 하는 경우에는 패리티 비트는 전체 패리티 비트의 대략 75%가 새로운 값으로 덮어 써야 한다. 따라서 이와 같은 경우, 덮어 써야 할 비트수가 상대적으로 많은 패리티 비트를 오리지널 데이터로부터 분리하여 쓰기 내구성이 상대적으로 더 높은 제2 메모리(200)에 저장함으로써 비휘발성 메모리(100)의 수명 단축을 억제할 수 있다.
도 6은 본 개시의 다른 예에 따른 메모리장치(20)를 나타내 보인 블록도이다. 도 6에서 도 1과 동일한 참조부호는 동일한 구성요소를 나타내며, 이하에서 중복되는 설명은 생략하기로 한다. 도 6을 참조하면, 본 예에 따른 메모리장치(20)는, 제3 메모리(Memory3)(400)을 더 포함하여 구성될 수 있다. 제3 메모리(400)는 비휘발성 메모리로 구성된다. 제3 메모리(400)는, 제2 메모리(200)에 저장되어 있는 패리티 비트의 백업 저장소(backup storage)로 사용될 수 있다. 제2 메모리(200)가 휘발성 메모리로 구성되는 경우 전원 공급이 중단되면 제2 메모리(200)저장되어 있던 패리티 비트 데이터가 모두 소실될 수 있다. 데이터 서버 시스템(data server system)의 경우, 일반적으로 장기간 전원 공급이 유지되지만, 경우에 따라서 전원 공급을 오프(off)시킬 수도 있다. 이와 같이 전원 공급이 오프될 경우, 컨트롤러(300)는, 제2 메모리(200)에 저장되어 있는 패리티 비트 데이터를 모두 제3 메모리(400)에 저장시킨다. 제3 메모리(400)는 비휘발성 메모리로 구성되므로, 전원 공급이 오프되더라도 백업된 패리티 비트 데이터를 유지할 수 있다. 전원 공급이 다시 재개되면, 컨트롤러(300)는, 제3 메모리(400)에 백업된 패리티 비트 데이터를 다시 제2 메모리(200)에 복원시킨다.
도 7은 본 개시의 또 다른 예에 따른 메모리장치(30)를 나타내 보인 블록도이다. 도 7에서 도 1과 동일한 참조부호는 동일한 구성요소를 나타내며, 이하에서 중복되는 설명은 생략하기로 한다. 도 7을 참조하면, 본 예에 따른 메모리장치(30)에 있어서, 제1 메모리(100)의 전체 영역은 데이터 저장 영역(110) 및 백업 영역(120)으로 구분된다. 데이터 저장 영역(110)에는 오리지널 데이터가 저장된다. 백업 영역(120)에는, 전원 공급이 오프되는 경우, 제2 메모리(200)에 저장되어 있는 패리티 비트 데이터가 저장된다. 그리고 다시 전원 공급이 재개되면, 백업 영역(120)에 백업된 패리티 비트 데이터는 다시 제2 메모리(200)에 복원될 수 있다.
도 8은 본 개시의 또 다른 예에 따른 메모리장치(40)를 나타내 보인 블록도이다. 도 8을 참조하면, 메모리장치(40)는, 제1 메모리(Memory1)(500)와, 제2 메모리(Memory2)(600)와, 그리고 컨트롤러(Controller)(700)를 포함하여 구성될 수 있다. 일 예에서 제1 메모리(500)는 비휘발성 메모리일 수 있다. 예컨대 제1 메모리(500)는, PRAM, MRAM, RRAM, NFGM(Nano Floating Gate Memory), 또는 폴리머 램(Polymer RAM)일 수 있다. 제2 메모리(600)는, 제1 메모리(500)보다 높은 쓰기 내구성(write endurance)을 갖는 다른 종류의 비휘발성 메모리일 수 있다. 다른 예에서 제1 메모리(500)는 비휘발성 메모리이고, 제2 메모리(600)는 제1 메모리(500)보다 높은 쓰기 내구성(write endurance)을 갖는 휘발성 메모리일 수 있다. 예컨대 제1 메모리(500)는 PRAM, MRAM, RRAM, NFGM(Nano Floating Gate Memory), 또는 폴리머 램(Polymer RAM)일 수 있으며, 제2 메모리(600)는 디램(DRAM)일 수 있다.
컨트롤러(700)는, 호스트(Host)로부터의 읽기/쓰기 명령에 의해 제1 메모리(500)로 데이터를 쓰거나 제1 메모리(500)로부터 데이터를 읽는 동작을 제어한다. 컨트롤러(700)는, 에러 정정을 수행하는 에러 정정부(710)와, 데이터 값을 반전시키는 데이터 반전부(DI)(720)와, 그리고 데이터 분리 및 병합을 수행하는 데이터 분리/병합부(data separating/merging)(730)를 포함할 수 있다.
에러정정부(710)는, 입력되는 데이터에 대한 ECC 인코딩을 수행하는 ECC 인코더(ECC encoder)(711)와, 입력되는 데이터에 대한 ECC 디코딩을 수행하는 ECC 디코더(ECC decoder)(712)를 포함하여 구성될 수 있다. 데이터 반전부(720)는, 일정 조건에서 입력되는 데이터의 값을 반전시켜 출력시키는 데이터 반전 회로(Data Inversion Circuit)(721)을 포함할 수 있다. 데이터 분리/병합부(730)는, 입력되는 데이터를 2개로 분리하는 데이터 분리부(Data Separating)(731)와, 입력되는 2개의 데이터를 하나로 병합하는 데이터 병합부(Data Merging)(732)를 포함할 수 있다.
호스트(Host)로부터의 읽기 명령에 따라 오리지널 데이터(original data)가 컨트롤러(700)에 전송되면, 에러정정부(710)에서는 오리지널 데이터에 대한 ECC 인코딩을 수행하고, 데이터 반전부(720)는, 덮어 써야 하는 비트 수와 덮어 쓸 필요가 없는 비트 수의 비교 결과에 따라서, 데이터의 모든 비트 값들을 반전시키거나, 반전시키지 않고 출력시킨다. 이와 같은 에러 정정 및 데이터 반전 과정을 통해 오리지널 데이터(original data)에는 메타데이터(metadata)가 추가될 수 있다. 메타데이터는 에러 정정 과정에서 추가되는 패리티 비트와, 데이터 반전 과정에서 추가되는 인버전 상태 비트를 포함할 수 있다. 데이터 반전부(720)로부터 출력되는 이진 데이터 스트림(binary data stream)은 데이터 분리/병합부(730)에 의해 각각 오리지널 데이터와 메타데이터로 분리된다. 컨트롤러(700)는, 분리된 오리지널 데이터와 메타데이터를 각각 제1 메모리(500) 및 제2 메모리(600)에 기록한다.
호스트(Host)로부터의 쓰기 명령에 따라 컨트롤러(700)는 제1 메모리(500)로부터의 오리지널 데이터(original data) 및 제2 메모리(600)로부터의 메타데이터를 읽는다. 컨트롤러(700)에 입력되는 오리지널 데이터 및 메타데이터는, 데이터 분리/병합부(730)에 의해 병합된다. 병합된 이진 데이터 스트림은, 데이터 반전부(720) 및 에러 정정부(710)를 통해 오리지널 데이터로 복원되며, 복원된 오리지널 데이터는 호스트로 전송된다.
도 9 내지 11은 도 8의 메모리장치(40)의 쓰기 동작을 설명하기 위해 나타내 보인 도면들이다. 구체적으로 도 9는 쓰기 동작시의 에러 정정부(710)의 동작을 설명하기 위해 나타내 보인 도면이고, 도 10은 쓰기 동작시의 데이터 반전부(720)의 동작을 설명하기 위해 나타내 보인 도면이며, 그리고 도 11은 쓰기 동작시의 데이터 분리/병합부(730)의 동작을 설명하기 위해 나타내 보인 도면이다. 먼저 도 9를 참조하면, 쓰기 명령 및 어드레스 정보와 함께 컨트롤러(700)로 전송되는 k비트의 오리지널 데이터(original data)는 에러 정정부(710)의 ECC 인코더(711)에 입력된다. ECC 인코더(711)는, 오리지널 데이터에 대한 ECC 인코딩을 수행하고, 그 결과를 코드워드(codeword) 형태로 출력시킨다. 코드워드는 k비트보다 많은 n비트로 구성된다. n비트의 코드워드는, k비트의 오리지널 데이터에 (n-k)비트의 패리티 비트(parity bit)가 더해진 구성을 갖는다. 패리티 비트는, 후속의 ECC 디코딩 과정에서 에러 위치 파악 및 에러를 정정하는데 이용될 수 있다.
다음에 도 10을 참조하면, ECC 인코더(711)로부터 출력되는 n비트의 코드워드는 데이터 반전부(720)로 전송된다. 컨트롤러(700)는, 오리지널 데이터가 쓰여질 어드레스에 대응하는 제1 메모리(500)의 영역에 기록되어 있는 데이터와 코드워드의 오리지널 데이터를 비교한 후에, 덮어 써야 하는 비트 수가 덮어 쓸 필요가 없는 비트 수보다 더 많은 경우 데이터 반전부(720)의 데이터 반전 회로(721)에 데이터 반전 제어신호를 입력시킨다. 데이터 반전 회로(721)는, 데이터 반전 제어신호에 응답하여 입력되는 코드워드의 각 비트 값을 반전시킨 후에 출력시킨다. 반면에 코드워드에 대해 덮어 써야 하는 비트 수가 덮어 쓸 필요가 없는 비트 수보다 적은 경우, 컨트롤러(700)는, 데이터 반전부(720)의 데이터 반전 회로(721)에 데이터 비반전 제어신호를 입력시킨다. 데이터 반전 회로(721)는, 데이터 비반전 제어신호에 응답하여 입력되는 코드워드의 각 비트 값을 반전시키지 않고 그대로 출력시킨다.
이 과정에서 데이터 반전이 이루어졌는지의 여부에 관한 정보 기록을 위해, 코드워드에는 m비트의 인버전 상태 비트(inversion status bit)가 추가된다. 예컨대 인버전 상태 비트의 비트수(m)가 1인 경우, 데이터 반전이 이루어지면 인버전 상태 비트에는 값 "1"이 저장될 수 있다. 반면에 데이터 반전이 이루어지지 않으면 인버전 상태 비트에는 값 "0"이 저장될 수 있다. 인버전 상태 비트의 비트수(m)는 1일 수 있지만, 2비트 이상일 수도 있다. 일 예에서 코드워드를 2개로 섭-그룹(sub-groub)으로 구분하여 각각 독립적으로 데이터 반전 방법을 적용하는 경우, 인버전 상태 비트의 비트수(m)는 2가 된다. 데이터 반전부(720)로부터 출력되는 이진데이터 스트림은 k비트의 오리지널 데이터에 (n+m-k)비트의 메타데이터(metadata)가 추가된 구성을 갖는다. 메타데이터는, (n-k)비트의 패리티 비트와 m비트의 인버전 상태 비트를 포함한다.
다음에 도 11을 참조하면, 데이터 반전부(721)로부터 출력되는 (n+m)비트의 이진 데이터 스트림은 데이터 분리/병합부(730)의 데이터 분리부(731)에 입력된다. 데이터 분리부(731)는, 입력되는 이진 데이터 스트림을 각각 k비트의 오리지널 데이터와 (n+m-k)비트의 메타데이터로 분리하여 출력시킨다. 메타데이터는, (n-k)비트의 패리티 비트와 m비트의 인버전 상태 비트를 포함한다. 도 8을 참조하여 설명한 바와 같이, 컨트롤러(700)는, 분리된 k비트의 오리지널 데이터는 제1 메모리(500)에 저장하고, 분리된 (n+m-k)비트의 메타데이터는 제2 메모리(600)에 저장한다. 나중의 쓰기 과정에서 분리된 오리지널 데이터 및 메타데이터의 병합을 위해, 컨트롤러(700)는, 오리지널 데이터가 저장되는 제1 메모리(500)의 어드레스 정보와, 메타데이터가 저장되는 제2 메모리(600)의 어드레스 정보가 연동되도록 컨트롤러(700) 내의 어드레스 맵을 업데이트시킨다.
도 12 내지 14는 도 8의 메모리장치(40)의 읽기 동작을 설명하기 위해 나타내 보인 도면들이다. 구체적으로 도 12는 읽기 동작시의 데이터 분리/병합부(730)의 동작을 설명하기 위해 나타내 보인 도면이고, 도 13은 읽기 동작시의 데이터 반전부(720)의 동작을 설명하기 위해 나타내 보인 도면이며, 그리고 도 14는 읽기 동작시의 에러 정정부(710)의 동작을 설명하기 위해 나타내 보인 도면이다. 먼저 도 12를 참조하면, 읽기 명령 및 어드레스 정보가 입력되면, 컨트롤러(700)는 제1 메모리(500)에 저장되어 있는 오리지널 데이터를 읽어 데이터 분리/병합부(730)의 데이터 병합부(732)에 입력시킨다. 또한 컨트롤러(700)는 제2 메모리(600)에 저장되어 있는 메타데이터를 읽어 데이터 병합부(732)에 입력시킨다. 이 과정에서 컨트롤러(700) 내의 어드레스 맵에 업데이트되어 있는 오리지널 데이터의 저장 어드레스 및 이에 연동되는 메타 데이터의 저장 어드레스를 사용하여 쓰기 과정에서 하나의 이진 데이터 스트림을 구성하던 오리지널 데이터 및 메타데이터를 정확하게 읽어들인다. 데이터 병합부(732)는, 분리되어 입력되는 k비트의 오리지널 데이터와 (n+m-k)비트의 메타데이터를 병합하여 (n+m)비트의 이진 데이터 스트림을 출력시킨다. 데이터 병합부(732)로부터 출력되는 이진 데이터 스트림에는, 오리지널 데이터, 패리티 비트, 및 인버전 상태 비트가 모두 포함된다.
다음에 도 13을 참조하면, 데이터 병합부(721)로부터 출력되는 (n+m)비트의 이진 데이터 스트림은 데이터 반전부(720)의 데이터 반전 회로(721)에 입력된다. 컨트롤러(700)는, 이진 데이터 스트림의 m비트의 인버전 상태 비트의 값에 따라 쓰기 과정에서 데이터 반전이 이루어졌는지의 여부를 판단한 후 적절한 제어신호를 데이터 반전 회로(721)에 입력시킨다. 데이터 반전 회로(721)는 이 제어신호에 응답하여, 쓰기 과정에서 데이터 반전이 이루어진 경우, (n+m)비트의 이진 데이터 스트림의 모든 비트 값들을 반전시킨 후에 인버전 상태 비트가 제거된 n비트의 코드워드를 출력시킨다. 쓰기 과정에서 데이터 반전이 이루어지지 않은 경우, 데이터 반전 회로(721)는 (n+m)비트의 이진 데이터 스트림의 모든 비트 값들을 그대로 유지한 후에 인버전 상태 비트가 제거된 n비트의 코드워드를 출력시킨다.
다음에 도 14를 참조하면, 데이터 반전 회로(721)로부터 출력되는 n비트의 코드워드는 에러 정정부(710)의 ECC 디코더(712)에 입력된다. ECC 디코더(712)는, 입력되는 n비트의 코드워드에 대한 ECC 디코딩을 수행하여 에러가 정정된 k비트의 오리지널 데이터를 출력한다. ECC 디코더(712)로부터 출력되는 k비트의 오리지널 데이터는 호스트 인터페이스를 통해 호스트로 전송된다.
도 15는 본 개시의 또 다른 예에 따른 메모리장치(50)를 나타내 보인 블록도이다. 도 15에서 도 8과 동일한 참조부호는 동일한 구성요소를 나타내며, 이하에서 중복되는 설명은 생략하기로 한다. 도 15를 참조하면, 본 예에 따른 메모리장치(50)는, 제3 메모리(Memory3)(800)을 더 포함하여 구성될 수 있다. 제3 메모리(800)는 비휘발성 메모리로 구성된다. 제3 메모리(800)는, 제2 메모리(600)에 저장되어 있는 패리티 비트의 백업 저장소(backup storage)로 사용될 수 있다. 제2 메모리(600)가 휘발성 메모리로 구성되는 경우 전원 공급이 중단되면 제2 메모리(600)저장되어 있던 패리티 비트 데이터가 모두 소실될 수 있다. 데이터 서버 시스템(data server system)의 경우, 일반적으로 장기간 전원 공급이 유지되지만, 경우에 따라서 전원 공급을 오프(off)시킬 수도 있다. 이와 같이 전원 공급이 오프될 경우, 컨트롤러(700)는, 제2 메모리(600)에 저장되어 있는 패리티 비트 데이터를 모두 제3 메모리(800)에 저장시킨다. 제3 메모리(800)는 비휘발성 메모리로 구성되므로, 전원 공급이 오프되더라도 백업된 패리티 비트 데이터를 유지할 수 있다. 전원 공급이 다시 재개되면, 컨트롤러(700)는, 제3 메모리(800)에 백업된 패리티 비트 데이터를 다시 제2 메모리(600)에 복원시킨다.
도 16은 본 개시의 또 다른 예에 따른 메모리장치(60)를 나타내 보인 블록도이다. 도 16에서 도 8과 동일한 참조부호는 동일한 구성요소를 나타내며, 이하에서 중복되는 설명은 생략하기로 한다. 도 16을 참조하면, 본 예에 따른 메모리장치(60)에 있어서, 제1 메모리(500)의 전체 영역은 데이터 저장 영역(510) 및 백업 영역(520)으로 구분된다. 데이터 저장 영역(510)에는 오리지널 데이터가 저장된다. 백업 영역(520)에는, 전원 공급이 오프되는 경우, 제2 메모리(600)에 저장되어 있는 메타데이터가 저장된다. 그리고 다시 전원 공급이 재개되면, 백업 영역(520)에 백업된 메타데이터는 다시 제2 메모리(600)에 복원될 수 있다.
상술한 바와 같이 본 출원의 실시 형태들을 도면들을 예시하며 설명하지만, 이는 본 출원에서 제시하고자 하는 바를 설명하기 위한 것이며, 세밀하게 제시된 형상으로 본 출원에서 제시하고자 하는 바를 한정하고자 한 것은 아니다.
10...메모리장치 100...제1 메모리
200...제1 메모리 300...컨트롤러
310...에러 정정부 311...ECC 인코더
312...ECC 디코더 330...데이터 분리/병합부
331...데이터 분리부 332...데이터 병합부

Claims (23)

  1. 제1 메모리;
    상기 제1 메모리보다 상대적으로 높은 쓰기 내구성을 갖는 제2 메모리; 및
    호스트로부터 전송되는 오리지널 데이터에 대한 에러 정정 과정에서 상기 오리지널 데이터에 패리티 비트가 부가되어 발생되는 코드워드에 대해 상기 오리지널 데이터 및 패리티 비트를 분리하여 상기 오리지널 데이터는 상기 제1 메모리에 기록하고 상기 패리티 비트는 상기 제2 메모리에 저장되도록 제어동작을 수행하는 컨트롤러를 포함하는 메모리장치.
  2. 제1항에 있어서,
    상기 제1 메모리 및 제2 메모리는 비휘발성 메모리인 메모리장치.
  3. 제1항에 있어서,
    상기 제1 메모리는 비휘발성 메모리이고, 상기 제2 메모리는 휘발성 메모리인 메모리장치.
  4. 제1항에 있어서, 상기 컨트롤러는,
    쓰기 과정에서 입력되는 상기 오리지널 데이터에 대한 에러정정코드 인코딩을 수행하여 상기 코드워드를 출력하는 에러정정코드 인코더와, 읽기 과정에서 입력되는 코드워드에 대한 에러정정코드 디코딩을 수행하여 에러가 정정된 오리지널 데이터를 출력하는 에러정정코드 디코더를 갖는 에러 정정부를 포함하는 메모리장치.
  5. 제1항에 있어서, 상기 컨트롤러는,
    상기 코드워드에 대해 상기 오리지널 데이터와 상기 패리티 비트를 분리하여 출력시키는 데이터 분리부와, 분리되어 입력되는 오리지널 데이터 및 패리티 비트를 병합하여 코드워드로 출력시키는 데이터 병합부를 갖는 데이터 분리/병합부를 포함하는 메모리장치.
  6. 제1항에 있어서,
    상기 제2 메모리에 저장되어 있는 패리티 비트를 백업 저장할 수 있는 비휘발성 메모리를 더 포함하는 메모리장치.
  7. 제1항에 있어서,
    상기 제1 메모리는, 상기 오리지널 데이터가 저장되는 저장영역, 및 상기 제2 메모리에 저장되어 있는 패리티 비트가 백업 저장될 수 있는 백업영역을 갖는 메모리장치.
  8. 제1 메모리;
    상기 제1 메모리보다 상대적으로 높은 쓰기 내구성을 갖는 제2 메모리; 및
    호스트로부터 전송되는 오리지널 데이터에 대한 에러 정정 과정 및 데이터 반전 과정에서 상기 오리지널 데이터에 메타데이터가 부가되어 발생되는 이진 데이터 스트림에 대해 상기 오리지널 데이터 및 메타데이터를 분리하여 상기 오리지널 데이터는 상기 제1 메모리에 기록하고 상기 메타데이터는 상기 제2 메모리에 저장되도록 제어동작을 수행하는 컨트롤러를 포함하는 메모리장치.
  9. 제8항에 있어서,
    상기 제1 메모리 및 제2 메모리는 비휘발성 메모리인 메모리장치.
  10. 제8항에 있어서,
    상기 제1 메모리는 비휘발성 메모리이고, 상기 제2 메모리는 휘발성 메모리인 메모리장치.
  11. 제1항에 있어서, 상기 컨트롤러는,
    쓰기 과정에서 입력되는 상기 오리지널 데이터에 대한 에러정정코드 인코딩을 수행하여 상기 코드워드를 출력하는 에러정정코드 인코더와, 읽기 과정에서 입력되는 코드워드에 대한 에러정정코드 디코딩을 수행하여 에러가 정정된 오리지널 데이터를 출력하는 에러정정코드 디코더를 갖는 에러 정정부를 포함하는 메모리장치.
  12. 제11항에 있어서, 상기 컨트롤러는,
    상기 에러정정코드 인코더로부터 입력되는 코드워드의 모든 비트 값들을 반전시키거나 또는 그대로 출력시키되, 출력 데이터에 반전 여부의 정보를 갖는 인버전 상태 비트가 부가된 이진 데이터 스트림을 출력시키는 데이터 반전 회로를 갖는 데이터 반전부를 포함하는 메모리장치.
  13. 제12항에 있어서,
    상기 데이터 반전 회로는, 상기 오리지널 데이터가 쓰여질 어드레스에 대응하는 상기 제1 메모리의 영역에 기록되어 있는 데이터와 상기 오리지널 데이터를 비교하여 덮어 써야 하는 비트 수가 덮어 쓸 필요가 없는 비트 수보다 더 많은 경우 상기 입력되는 데이터에 대한 모든 비트 값들을 반전시켜 출력하고, 반대의 경우 상기 입력되는 데이터에 대한 모든 비트 값들을 그대로 출력시키는 메모리장치.
  14. 제12항에 있어서,
    상기 데이터 반전 회로로부터 출력되는 이진 데이터 스트림의 패리티 비트 및 인버전 상태 비트는, 상기 메타데이터를 구성하는 메모리장치.
  15. 제12항에 있어서, 상기 컨트롤러는,
    상기 데이터 반전 회로로부터 입력되는 이진 데이터 스트림에 대해 상기 오리지널 데이터와 상기 패리티 비트 및 인버전 상태 비트를 분리하여 출력시키는 데이터 분리부와, 분리되어 입력되는 오리지널 데이터와 패리티 비트 및 인버전 상태비트를 병합하여 이진 데이터 스트림으로 출력시키는 데이터 병합부를 갖는 데이터 분리/병합부를 포함하는 메모리장치.
  16. 제8항에 있어서,
    상기 제2 메모리에 저장되어 있는 패리티 비트를 백업 저장할 수 있는 비휘발성 메모리를 더 포함하는 메모리장치.
  17. 제8항에 있어서,
    상기 제1 메모리는, 상기 오리지널 데이터가 저장되는 저장영역, 및 상기 제2 메모리에 저장되어 있는 패리티 비트가 백업 저장될 수 있는 백업영역을 갖는 메모리장치.
  18. 호스트로부터 전송되는 오리지널 데이터에 대한 에러 정정을 수행하여 상기 오리지널 데이터에 패리티 비트가 부가되는 코드워드를 발생시키는 단계; 및
    상기 코드워드에 대해 상기 오리지널 데이터 및 패리티 비트를 분리하여 상기 오리지널 데이터는 제1 메모리에 기록하고 상기 패리티 비트는 상기 제1 메모리보다 상대적으로 높은 쓰기 내구성을 갖는 제2 메모리에 저장되도록 하는 단계를 포함하는 메모리장치의 동작방법.
  19. 제18항에 있어서,
    상기 제1 메모리 및 제2 메모리는 비휘발성 메모리인 메모리장치의 동작방법.
  20. 제22항에 있어서,
    상기 제1 메모리는 비휘발성 메모리이고, 상기 제2 메모리는 휘발성 메모리인 메모리장치의 동작방법.
  21. 호스트로부터 전송되는 오리지널 데이터에 대한 에러 정정을 수행하여 상기 오리지널 데이터에 패리티 비트가 부가되는 코드워드를 발생시키는 단계;
    상기 코드워드에 대해 모든 비트 값들을 반전시키거나 반전시키지 않는 데이터 반전을 수행하여 상기 코드워드에 상기 데이터 반전 여부의 정보를 갖는 인버전 상태 비트가 부가되는 이진 데이터 스트림을 발생시키는 단계; 및
    상기 이진 데이터 스트림에 대해 상기 오리지널 데이터와, 상기 패리티 비트 및 인버전 상태 비트로 구성되는 메타데이터를 분리하여 상기 오리지널 데이터는 상기 제1 메모리에 기록하고 상기 메타데이터는 상기 제1 메모리보다 상대적으로 높은 쓰기 내구성을 갖는 제2 메모리에 기록하는 단계를 포함하는 메모리장치의 동작방법.
  22. 제21항에 있어서,
    상기 제1 메모리 및 제2 메모리는 비휘발성 메모리인 메모리장치의 동작방법.
  23. 제21항에 있어서,
    상기 제1 메모리는 비휘발성 메모리이고, 상기 제2 메모리는 휘발성 메모리인 메모리장치의 동작방법.
KR1020170016451A 2017-02-06 2017-02-06 연장된 제품 수명을 갖는 메모리장치 및 그 동작방법 KR20180091989A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170016451A KR20180091989A (ko) 2017-02-06 2017-02-06 연장된 제품 수명을 갖는 메모리장치 및 그 동작방법
US15/821,493 US10459794B2 (en) 2017-02-06 2017-11-22 Memory systems having extended product lifetime and methods of operating the same
CN201711294672.8A CN108399936B (zh) 2017-02-06 2017-12-08 具有延长产品寿命的存储系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170016451A KR20180091989A (ko) 2017-02-06 2017-02-06 연장된 제품 수명을 갖는 메모리장치 및 그 동작방법

Publications (1)

Publication Number Publication Date
KR20180091989A true KR20180091989A (ko) 2018-08-17

Family

ID=63037174

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170016451A KR20180091989A (ko) 2017-02-06 2017-02-06 연장된 제품 수명을 갖는 메모리장치 및 그 동작방법

Country Status (3)

Country Link
US (1) US10459794B2 (ko)
KR (1) KR20180091989A (ko)
CN (1) CN108399936B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11488681B2 (en) 2018-09-11 2022-11-01 Micron Technology, Inc. Data state synchronization

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558254B2 (en) * 2017-04-01 2020-02-11 Intel Corporation Power consumption management for communication bus
KR20190031787A (ko) * 2017-09-18 2019-03-27 삼성전자주식회사 병렬 리드-모디파이-라이트 동작을 수행하는 메모리 장치
US10733046B2 (en) 2018-04-20 2020-08-04 Micron Technology, Inc. Transaction metadata
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
KR102599047B1 (ko) 2018-11-13 2023-11-06 삼성전자주식회사 데이터 신뢰성을 향상한 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작방법
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
KR20200091184A (ko) * 2019-01-22 2020-07-30 에스케이하이닉스 주식회사 반도체 메모리 장치
FR3100347B1 (fr) 2019-09-04 2022-07-22 St Microelectronics Rousset Détection d'erreurs
FR3100346B1 (fr) 2019-09-04 2022-07-15 St Microelectronics Rousset Détection d'erreurs
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11309032B2 (en) 2019-11-26 2022-04-19 Samsung Electronics Co., Ltd. Operating method of memory system including memory controller and nonvolatile memory device
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
KR20220124582A (ko) * 2021-03-03 2022-09-14 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11476874B1 (en) * 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
CN114490172B (zh) * 2022-04-02 2022-07-12 武汉杰开科技有限公司 数据存储系统及方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5402428A (en) * 1989-12-25 1995-03-28 Hitachi, Ltd. Array disk subsystem
US6854070B2 (en) * 2000-01-25 2005-02-08 Hewlett-Packard Development Company, L.P. Hot-upgrade/hot-add memory
JP2004234545A (ja) * 2003-01-31 2004-08-19 Toshiba Corp 制御回路及びメモリコントローラ
JP4073799B2 (ja) * 2003-02-07 2008-04-09 株式会社ルネサステクノロジ メモリシステム
US7543215B2 (en) * 2005-02-14 2009-06-02 Mediatek Inc. Integrated apparatus for multi-standard optical storage media
US20060195774A1 (en) 2005-02-17 2006-08-31 Stephen Bowyer Error correction circuit and method
US7734985B2 (en) * 2006-02-27 2010-06-08 Intel Corporation Systems, methods, and apparatuses for using the same memory type to support an error check mode and a non-error check mode
US20100125695A1 (en) * 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
US20120324156A1 (en) * 2011-06-17 2012-12-20 Naveen Muralimanohar Method and system of organizing a heterogeneous memory architecture
US8694754B2 (en) * 2011-09-09 2014-04-08 Ocz Technology Group, Inc. Non-volatile memory-based mass storage devices and methods for writing data thereto
KR102025340B1 (ko) 2012-11-27 2019-09-25 삼성전자 주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치, 이를 포함하는 캐쉬 메모리 및 컴퓨터 시스템
US9830092B2 (en) * 2015-02-20 2017-11-28 Netapp, Inc. Solid state device parity caching in a hybrid storage array

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11488681B2 (en) 2018-09-11 2022-11-01 Micron Technology, Inc. Data state synchronization

Also Published As

Publication number Publication date
US20180225173A1 (en) 2018-08-09
US10459794B2 (en) 2019-10-29
CN108399936A (zh) 2018-08-14
CN108399936B (zh) 2021-09-24

Similar Documents

Publication Publication Date Title
KR20180091989A (ko) 연장된 제품 수명을 갖는 메모리장치 및 그 동작방법
US8732553B2 (en) Memory system and control method thereof
US10372529B2 (en) Iterative soft information correction and decoding
KR102571747B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11861195B2 (en) TLC data programming with hybrid parity
KR101572038B1 (ko) 메모리 어레이의 에러 수정 방법
KR102529679B1 (ko) 메모리 시스템
CN112068778B (zh) 用于保持从存储阵列中读取的数据的完整性的方法和设备
US20230082008A1 (en) Parity protection in non-volatile memory
JPWO2014083811A1 (ja) 半導体記憶装置およびその制御方法
US11500569B2 (en) Rolling XOR protection in efficient pipeline
KR20180086815A (ko) 쓰기 버퍼를 이용한 중복-쓰기 동작을 수행하는 메모리장치 및 메모리장치의 읽기 및 쓰기 방법
US20130047056A1 (en) Flash memory device with rectifiable redundancy and method of controlling the same
US11177012B1 (en) Fast copy through controller
JP2009157515A (ja) 半導体メモリコントローラおよび半導体メモリ
US11269704B2 (en) Memory system and control method thereof
US20130104003A1 (en) Memory system and method for recording/reproducing data thereof
KR20210152738A (ko) 스트라이프 형태로 데이터를 액세스하는 메모리 시스템 및 메모리 시스템의 동작방법
JP5335779B2 (ja) 半導体記録装置
US10922025B2 (en) Nonvolatile memory bad row management
US11204834B1 (en) Implementation of keeping data integrity in multiple dimensions
US11294598B2 (en) Storage devices having minimum write sizes of data
CN104681095A (zh) 储存装置及其操作方法
US11568938B2 (en) QLC data programming
US20220254435A1 (en) Semiconductor storage device and error processing method for defective memory cell in the device

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right