KR20200018156A - 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법 - Google Patents

메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법 Download PDF

Info

Publication number
KR20200018156A
KR20200018156A KR1020180094039A KR20180094039A KR20200018156A KR 20200018156 A KR20200018156 A KR 20200018156A KR 1020180094039 A KR1020180094039 A KR 1020180094039A KR 20180094039 A KR20180094039 A KR 20180094039A KR 20200018156 A KR20200018156 A KR 20200018156A
Authority
KR
South Korea
Prior art keywords
write
memory
command
counting value
value
Prior art date
Application number
KR1020180094039A
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 KR1020180094039A priority Critical patent/KR20200018156A/ko
Priority to US16/236,000 priority patent/US10665297B2/en
Priority to CN201910098303.4A priority patent/CN110825553B/zh
Publication of KR20200018156A publication Critical patent/KR20200018156A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5678Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using amorphous/crystalline phase transition storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • 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
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5644Multilevel memory comprising counting devices
    • 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)
  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 시스템은, 복수개의 메모리영역들을 갖는 메모리장치와, 그리고 메모리영역들 중 어느 하나인 제1 메모리영역에 대한 연속적인 라이트 명령이 기준값에 도달되면 제1 메모리영역에 대한 리드 명령을 발생시키는 메모리 컨트롤러를 포함한다.

Description

메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법{Memory system having ECC functionality for memory apparatus and method of operating the memory system}
본 개시의 여러 실시예들은 메모리 시스템에 관한 것으로서, 보다 상세하게는 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법에 관한 것이다.
상변화메모리(Phase Change Memory)는 소자를 구성하는 특정 물질, 예컨대 GST(Ge-Sb-Te)와 같은 칼코게나이드 화합물의 상변화 상태를 판단하여 데이터를 저장한다. 예컨대 상변화물질의 결정 상태가 결정 상태인 경우는 데이터 "1", 비결정 상태인 경우는 데이터 "0"의 신호를 검출하는 방식으로 정보를 저장한다. 이와 같은 상변화메모리는 빠른 처리속도와 높은 집적도를 가지며, 이에 따라 컴퓨터들 및 다른 디지털 장치들에서 디램(DRAM; Dynamic Random Access Memory)을 잠재적으로 대체할 수 있다. 다른 비휘발성 메모리들(non-volatile memories)과 마찬가지로, 상변화메모리는 제한된 수명(lifetime) 및 내구성(durability)을 갖는다. 특히 상변화 물질 및 설계상의 한계로 인해 쓰기 횟수가 제한되고, 쓰기 횟수가 늘어남에 따라 에러 발생 확률이 증가될 수 있다. 이에 따라 상변화메모리에 대한 데이터 라이트(write) 및 리드(read) 과정에서 에러가 발생하는지의 여부를 체크하는 것이 중요하다.
상변화메모리를 사용하는 과정에서 에러 발생 여부의 체크는, 일반적으로 에러정정코드(Error Correction Code; 이하 ECC) 메커니즘을 이용하여 수행할 수 있다. ECC 메커니즘에 따라, 상변화메모리에 대한 라이트 데이터는 ECC 인코딩이 수행되어 패리티 데이터(parity data)가 부가된 코드워드(codeword) 형태로 전환되어 상변화메모리에 저장된다. 이 코드워드는, 리드 명령에 의해 ECC 디코딩이 수행되어 원래의 데이터 형태로 복원된다. ECC 디코딩 과정에서, 코드워드에 포함된 패리티 데이터를 이용하여 에러 발생 여부를 체크하고, 경우에 따라서 발생된 에러를 정정할 수 있다.
본 출원이 해결하고자 하는 과제는, 특정 영역에 대한 라이트 명령이 연속적으로 발생되더라도 그 특정 영역에서의 에러 발생 여부를 체크할 수 있도록 하는 메모리 시스템을 제공하는 것이다.
본 출원이 해결하고자 하는 다른 과제는, 위와 같은 메모리 시스템의 운영방법을 제공하는 것이다.
본 개시의 일 예에 따른 메모리 시스템은, 복수개의 메모리영역들을 갖는 메모리장치와, 그리고 메모리영역들 중 어느 하나인 제1 메모리영역에 대한 연속적인 라이트 명령이 기준값에 도달되면 제1 메모리영역에 대한 리드 명령을 발생시키는 메모리 컨트롤러를 포함한다.
본 개시의 일 예에 따른 메모리 시스템은, 복수개의 메모리영역들을 갖는 메모리장치와, 그리고 메모리영역들 중 어느 하나인 제1 메모리영역에 대한 라이트 명령 횟수가 기설정된 설정값 이상이면 제1 메모리영역에 대한 라이트 명령이 발생될 때마다 라이트 명령에 의해 라이트된 데이터에 대한 리드 명령을 발생시키는 메모리 컨트롤러를 포함한다.
본 개시의 일 예에 따른 메모리 시스템의 동작 방법은, 복수개의 메모리영역들을 갖는 메모리장치를 포함하는 메모리 시스템의 동작 방법에 있어서, 메모리영역들 중 어느 하나인 제1 메모리영역에 대한 라이트 명령이 발생되면 제1 메모리영역에 대한 현재 라이트 카운팅값을 카운팅해 업데이트된 라이트 카운팅값으로 변경하는 단계와, 그리고 업데이트된 라이트 카운팅값을 기준값과 비교하여 업데이트된 라이트 카운팅값이 기준값에 도달되면 제1 메모리영역에 대한 리드 명령을 발생시키는 단계를 포함한다.
본 개시의 일 예에 따른 메모리 시스템의 동작 방법은, 복수개의 메모리영역들을 갖는 메모리장치를 포함하는 메모리 시스템의 동작 방법에 있어서, 메모리영역들 중 어느 하나인 제1 메모리영역에 대한 라이트 명령이 발생되면 제1 메모리영역에 대한 현재 라이트 카운팅값을 카운팅해 업데이트된 라이트 카운팅값으로 변경하는 단계와, 그리고 업데이트된 라이트 카운팅값을 기설정된 설정값과 비교하여 업데이트된 라이트 카운팅값이 기설정된 설정값 이상이면 제1 메모리영역에 대한 라이트 명령이 발생될 때마다 라이트 명령에 의해 라이트된 데이터에 대한 리드 명령을 발생시키는 단계를 포함한다.
여러 실시예들에 따르면, 특정 영역에 대해 연속적으로 발생하는 라이트 명령의 횟수가 기준값 이상이 되는 경우 인위적으로 리드 명령을 수행하여 ECC 디코딩에 의한 에러 발생 여부를 체크함으로써, 메모리장치의 수명 및 내구성이 증가되도록 할 수 있다는 이점이 제공된다.
도 1은 본 개시에 따른 메모리 시스템의 일 예를 나타내 보인 블록도이다.
도 2는 도 1의 메모리장치의 하나의 블록 구성의 일 예를 나타내 보인 도면이다.
도 3은 도 1의 라이트 카운팅 회로 구성의 일 예를 나타내 보인 블록도이다.
도 4는 도 3의 라이트 카운팅값 저장소 구성의 일 예를 나타내 보인 도면이다.
도 5는 본 개시에 따른 메모리 시스템에서 라이트 명령 발생에 따른 라이트 카운팅값 저장소의 라이트 카운팅값 업데이트 과정을 설명하기 위해 나타내 보인 도면이다.
도 6은 본 개시에 따른 메모리 시스템에서 리셋신호 발생에 따른 라이트 카운팅값 저장소의 리셋 과정을 설명하기 위해 나타내 보인 도면이다.
도 7은 본 개시에 따른 메모리 시스템 동작의 일 예를 설명하기 위해 나타내 보인 플로챠트이다.
도 8은 본 개시에 따른 메모리 시스템을 구성하는 라이트 카운팅 회로 구성의 다른 예를 나타내 보인 블록도이다.
도 9는 본 개시에 따른 메모리 시스템 동작의 다른 예를 설명하기 위해 나타내 보인 플로챠트이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 부재를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 또한, 어느 부재의 "상"에 위치하거나 "상부", "하부", 또는 "측면"에 위치한다는 기재는 상대적인 위치 관계를 의미하는 것이지 그 부재에 직접 접촉하거나 또는 사이 계면에 다른 부재가 더 도입되는 특정한 경우를 한정하는 것은 아니다. 또한, 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다.
ECC 메커니즘을 메모리장치, 예컨대 상변화메모리의 동작 과정에 적용하는 경우, 상변화메모리의 에러 발생 여부의 체크 및 에러 정정은 ECC 디코딩 과정에 의해 이루어진다. ECC 디코딩 과정은 상변화메모리에 대한 리드 명령이 발생될 때 수행된다. 따라서 상변화메모리에 대한 특정 영역에 대해 라이트 명령이 연속적으로 발생되는 경우, 그 특정 영역에 대한 리드 명령이 발생되기 전까지는 그 특정 영역에 대한 에러 발생 여부가 확인되지 않는다. 본 개시의 여러 예들에서는 이와 같이 상변화메모리에 대한 특정 영역에 라이트 명령이 연속적으로 발생하는 경우, 연속적인 라이트 명령의 발생 횟수가 기준값 이상인 경우 인위적으로 그 특정 영역에 대한 리드 동작을 수행하도록 함으로써 그 특정 영역에 대한 에러 발생 여부를 확인할 수 있도록 구성된 메모리 시스템과 그 운영 방법을 제시하고자 한다.
도 1은 본 개시에 따른 메모리 시스템(100)의 일 예를 나타내 보인 블록도이다. 그리고 도 2는 도 1의 메모리장치(200)의 하나의 블록 구성의 일 예를 나타내 보인 도면이다. 도 1을 참조하면, 본 예에 따른 메모리 시스템(100)은, 메모리장치, 예컨대 상변화메모리(PCM)(200)와, 메모리 컨트롤러(memory controller)(300)를 포함하여 구성될 수 있다. 상변화메모리(PCM)(200)는, 복수개의 메모리영역들, 예컨대 m개의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1))을 포함할 수 있다. 본 예에서는 메모리영역을 블록으로 한정하고 있지만, 이는 단지 하나의 예일 뿐이며 메모리영역은 다양하게 한정될 수 있다. 예컨대 메모리영역은 페이지로 한정될 수도 있다. m개의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 각각은 블록 어드레스(block address)에 의해 지정될 수 있다. 도 1의 메모리장치(200)를 구성하는 m개의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 중 첫번째 블록(BLOCK(0))의 구성을 예로 들면, 도 2에 나타낸 바와 같이, 첫번째 블록(BLOCK(0))은 복수개, 예컨대 n개의 페이지들(PAGE(0), PAGE(1), …, PAGE(n-1))을 포함하여 구성될 수 있다. n개의 페이지들(PAGE(0), PAGE(1), …, PAGE(n-1)) 각각은 페이지 어드레스(PAGE ADDRESS)에 의해 지정될 수 있다. n개의 페이지들(PAGE(0), PAGE(1), …, PAGE(n-1)) 각각은 동일한 구성을 갖는다. 상변화메모리(PCM)(200)의 나머지 블록들(BLOCK(1), …, BLOCK(m-1)) 각각의 구성은 첫번째 블록(BLOCK(0))의 구성과 동일하다.
메모리 컨트롤러(300)는, 호스트(host)(102)로부터의 명령에 의해 상변화메모리(200)에 대한 라이트 동작 및 리드 동작에 대한 제어를 수행한다. 메모리 컨트롤러(300)는, 상변화메모리(PCM)(200)의 특정 영역에 대해 연속적인 쓰기 횟수가 기준값에 도달하는 경우, 호스트(102)와는 무관하게 자체적으로 리드 명령을 발생시킬 수 있다. 본 예에서 기준값은 인위적으로 설정할 수 있다. 기준값보다 작은 횟수의 연속적인 라이트 동작 횟수가 수행되는 동안 에러 검출 및 에러 정정 동작이 이루어지지 않으므로, 기준값이 작을수록 에러 검출 및 에러 정정 동작의 간격도 작아지며, 반면에 기준값이 클수록 에러 검출 및 에러 정정 동작의 간격도 커질 수 있다.
일 예에서 메모리 컨트롤러(300)는, 명령 처리 회로(command processing circuit)(310)와, 라이트 카운팅 회로(write counting circuit)(320)와, ECC 회로(ECC circuit)(330)와, 그리고 데이터 버퍼(data buffer)(340)를 포함하여 구성될 수 있다. 명령 처리 회로(310)는 리드 명령 발생기(read command generator)(312)를 포함할 수 있다. ECC 회로(331)는 ECC 인코더(ECC encoder)(331) 및 ECC 디코더(ECC decoder)(332)를 포함할 수 있다. 비록 도면에 나타내지는 않았지만, 메모리 컨트롤러(300)를 구성하는 명령 처리 회로(310), 라이트 카운팅 회로(320), ECC 회로(330), 및 데이터 버퍼(340)는 입력되는 클럭(clock)에 동기되어 적절한 시점에 동작될 수 있다.
명령 처리 회로(310)는, 호스트(102)로부터의 명령/어드레스(CMD/ADDR)를 전송받을 수 있으며, 또한 호스트(102)로 명령/어드레스(CMD/ADDR)를 전송할 수도 있다. 호스트(102)로부터 명령 처리 회로(310)로 전송되는 명령(CMD)은 라이트 명령 및 리드 명령을 포함할 수 있다. 호스트(102)로부터 명령 처리 회로(310)로 전송되는 어드레스(ADDR)는, 상변화메모리(PCM)(200)를 구성하는 m개의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 각각의 블록 어드레스와, 각각의 블록을 구성하는 n개의 페이지들(PAGE(0), PAGE(1), …, PAGE(n-1)) 각각의 페이지 어드레스를 포함할 수 있다. 명령 처리 회로(310)는, 호스트(102)로부터 명령(CMD) 및 블록 어드레스(BLK_ADDR)가 전송될 때마다 전송되는 명령(CMD) 및 블록 어드레스(BLK_ADDR)를 상변화메모리(PCM)(200) 및 라이트 카운팅 회로(320)에 전송한다. 호스트(102)로부터 블록 어드레스 및 페이지 어드레스가 전송되는 경우, 블록 어드레스(BLK_ADDR) 대신 블록 어드레스 및 페이지 어드레스가 함께 전송되며, 이는 본 예에서 동일하게 적용될 수 있다. 명령 처리 회로(310)는 리드 명령 발생기(312)로부터 리드 명령이 발생된 경우 그 리드 명령 및 블록 어드레스(BLK_ADDR)도 상변화메모리(PCM)(200)에 전송한다.
명령 처리 회로(310) 내의 리드 명령 발생기(312)는, 호스트(102)와는 관계없이 상변화메모리(PCM)(200)의 특정 영역에 대한 리드 명령을 발생시킨다. 이를 위해 리드 명령 발생기(312)는, 라이트 카운팅 회로(320)로부터 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)를 입력받을 수 있다. 라이트 카운팅 회로(320)로부터 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)가 입력되면, 리드 명령 발생기(312)는, 입력된 블록 어드레스(BLK_ADDR)에 해당하는 상변화메모리(PCM)(200)의 특정 블록에 대한 리드 명령을 발생시킨다. 명령 처리 회로(310)는, 리드 명령 발생기(312)에 의해 발생된 리드 명령 및 블록어드레스(BLK_ADDR)를 상변화메모리(PCM)(200)에 전송한다.
라이트 카운팅 회로(320)는, 상변화메모리(PCM)(200)의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 각각에 대한 연속적인 라이트 명령의 횟수를 카운팅한다. 이를 위해 라이트 카운팅 회로(320)는, 상변화메모리(PCM)(200)의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 각각에 대해 수행된 연속적인 라이트 명령의 횟수를 저장할 수 있는 저장영역을 포함할 수 있다. 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 중 어느 하나, 예컨대 첫번째 블록(BLOCK(0))에 대해 라이트 명령(WRITE CMD) 및 블록 어드레스(BLK_ADDR)가 명령 처리 회로(310)로부터 전송될 때마다, 라이트 카운팅 회로(320)는 첫번째 블록(BLOCK(0))에 대한 연속적인 라이트 명령의 횟수를 업데이트시킨다. 명령 처리 회로(310)로부터 리드 명령(READ CMD) 및 블록 어드레스(BLK_ADDR)가 입력되면, 라이트 카운팅 회로(320)에 저장된 첫번째 블록(BLOCK(0))에 대한 연속적인 라이트 명령의 횟수는, 초기값, 예컨대 "0"의 값으로 리셋(reset)된다.
라이트 카운팅 회로(320)는, 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 중 어느 하나, 예컨대 첫번째 블록(BLOCK(0))에 대한 연속적인 라이트 명령의 횟수를 기준값과 비교할 수 있다. 첫번째 블록(BLOCK(0))에 대한 연속적인 라이트 명령의 횟수가 기준값에 해당되는 경우, 라이트 카운팅 회로(320)는 리드 명령 발생 제어신호(RCG) 및 첫번째 블록(BLOCK(0))의 블록 어드레스(BLK_ADDR) "0"을 발생시킨다. 이 리드 명령 발생 제어신호(RCG) 및 첫번째 블록(BLOCK(0))의 블록 어드레스(BLK_ADDR) "0"은 명령 처리 회로(310) 내의 리드 명령 발생기(312)로 전송된다.
ECC 회로(330)는, 상변화메모리(PCM)(200)에 대한 라이트 과정 및 리드 과정에서 에러를 정정하는 기능을 수행한다. ECC 회로(330)를 구성하는 ECC 인코더(331)는, 라이트 동작에 의해 호스트(102)로부터 전송되는 라이트 데이터(WR_DATA)에 대해 ECC 인코딩을 수행한다. ECC 인코딩에 의해 코드워드(codeword) 형태의 라이트 데이터가 ECC 인코더(321)로부터 출력된다. 코드워드 형태의 라이트 데이터는 오리지널 라이트 데이터 및 패리티 데이터를 포함하여 구성될 수 있다. 코드워드 형태의 라이트 데이터는, 데이터 버퍼(340)를 통해 상변화메모리(PCM)(200)에 저장된다. ECC 회로(330)를 구성하는 ECC 디코더(332)는, 리드 동작에 의해 상변화메모리(PCM)(200)으로부터 읽어 데이터 버퍼(340)를 통해 입력되는 코드워드 형태의 리드 데이터에 대한 ECC 디코딩을 수행한다. ECC 디코딩에 의해, 패리티 데이터가 제거된 리드 데이터(RD_DATA)가 ECC 디코더(332)로부터 출력된다. ECC 인코더(332)로부터의 리드 데이터(RD_DATA)는 호스트(102)로 전송될 수 있다.
ECC 인코더(331)에 의해 생성되는 코드워드 형태의 라이트 데이터는, 추후 리드 동작시 수행되는 ECC 디코딩에서 에러를 검출하고, 에러가 검출된 경우 에러를 정정하는 과정에서 이용되는 패리티 데이터를 생성한다. 즉 ECC 인코딩 과정에서는 패리티 데이터를 생성할 뿐, 에러 검출 동작 및 에러 정정 동작이 이루어지지 않는다. 따라서 상변화메모리(PCM)(200)의 특정 블록에 대해 연속적인 라이트 동작이 수행되는 경우, 그 특정 블록에서의 에러 발생 상태를 파악할 수 없다. 상변화메모리(PCM)(200)에 대한 라이트 동작 및 리드 동작 과정에서 발생되는 에러의 검출 및 에러 정정은, ECC 디코딩을 통해 이루어진다. ECC 디코더(332)는, 코드워드 형태의 리드 데이터 내에 포함되는 패리티 데이터를 이용하여 에러를 검출한다. 에러가 검출된 경우, ECC 디코더(332)는, 에러 정정 능력(error correction capability) 내에서 에러를 정정한다. 일 예에서 에러 정정 능력은, ECC 회로(331)에 의해 정정할 수 있는 에러의 최대 비트수 또는 최대 심볼수로 정의될 수 있다. 에러 정정 능력검출된 에러가 에러 정정 능력을 넘는 경우, ECC 디코더(332)는 호스트로(102)로 블록 페일 신호(BLK FAIL SIGNAL)를 전송하여 리드 데이터가 저장된 블록에 페일이 발생했다는 정보를 제공한다.
데이터 버퍼(340)는, 라이트 과정에서, ECC 인코더(331)로부터 출력되는 코드워드 형태의 라이트 데이터를 일시적으로 저장한 후에 상변화메모리(PCM)(200) 로 전송한다. 데이터 버퍼(340)는, 리드 과정에서, 상변화메모리(PCM)(200)로부터 읽은 코드워드 형태의 리드 데이터를 일시적으로 저장한 후에 ECC 디코더(332)로 전송한다. 일 예에서 데이터 버퍼(340)는 디램(DRAM) 또는 에스램(SRAM)과 같은 휘발성 메모리로 구성될 수 있다. 다른 예에서 데이터 버퍼(340)는, 비휘발성 메모리 또는 휘발성 메모리와 비휘발성 메모리의 조합으로 구성될 수도 있다.
도 3은 도 1의 라이트 카운팅 회로(320) 구성의 일 예를 나타내 보인 블록도이다. 도 4는 도 3의 라이트 카운팅 회로(320)를 구성하는 라이트 카운팅값 저장소(322) 구성의 일 예를 나타내 보인 도면이다. 먼저 도 3을 참조하면, 라이트 카운팅 회로(320)는, 라이트 카운팅값 리셋부(write counting value reset)(321)와, 라이트 카운팅값 저장소(write counting value storage)(322)와, 라이트 카운터(wirte counter)(323)와, 그리고 라이트 카운팅값 체커(write counting value checker)(324)를 포함하여 구성될 수 있다. 라이트 카운팅 리셋부(321)는, 명령 처리 회로(도 1의 310)로부터 전송되는 리드 명령(READ CMD) 및 블록 어드레스(BLK_ADDR)를 입력받는다. 여기서 리드 명령(READ CMD)은, 호스트(102)로부터 발생된 리드 명령일 수 있으며, 또한 리드 명령 발생기(312)로부터 발생된 리드 명령일 수 있다. 리드 명령(READ CMD) 및 블록 어드레스(BLK_ADDR)가 입력되면, 라이트 카운팅 리셋부(321)는, 리셋신호(RESET) 및 블록 어드레스(BLK_ADDR)를 라이트 카운팅값 저장소(322)에 입력시킨다.
라이트 카운팅값 저장소(322)는, 상변화메모리(PCM)(200)의 m개의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 각각에 대해 수행되는 라이트 명령에 대한 카운팅값을 저장한다. 도 4에 나타낸 바와 같이, 라이트 카운팅값 저장소(322)는, 제1 저장영역(STORAGE1) 및 제2 저장영역(STORAGE2)을 갖는다. 제1 저장영역(STORAGE1)에는 상변화메모리(PCM)(200)이 갖는 블록들의 개수와 동일한 갯수, 즉 m개의 블록 어드레스 저장영역들이 배치된다. 블록 어드레스 저장영역들 각각에는 상변화메모리(PCM)(200)이 갖는 m개의 블록 어드레스들(BLOCK(0)_ADDR, BLOCK(1)_ADDR), …, BLOCK(m-1)_ADDR)) 각각이 저장된다. 제2 저장영역(STORAGE2)에는 상변화메모리(PCM)(200)이 갖는 블록들의 개수와 동일한 갯수, 즉 m개의 라이트 카운팅값 저장영역들이 배치된다. 라이트 카운팅값 저장영역들 각각에는 블록 어드레스들(BLOCK(0)_ADDR, BLOCK(1)_ADDR), …, BLOCK(m-1)_ADDR)) 각각에 대응되는 라이트 카운팅값들(VALUE(0), VALUE(1), …, VALUE(m-1))이 저장된다. 예컨대 첫번째라이트 카운팅값(VALUE(0))은, 첫번째 블록 어드레스(BLOCK(0)_ADDR)에 의해 지정되는 상변화메모리(PCM)(200)의 블록에 대한 연속적인 라이트 명령 횟수를 나타낸다.
도 4를 도 3과 함께 참조하면, 라이트 카운팅값 저장소(322)는, 명령 처리 회로(도 1의 310)로부터 라이트 명령(WRITE CMD) 및 블록 어드레스(BLK_ADDR)를 입력받을 수 있다. 라이트 명령(WRITE CMD) 및 블록 어드레스(BLK_ADDR)가 입력되면, 라이트 카운팅값 저장소(322)는, 입력된 블록 어드레스(BLK_ADDR)에 대해 현재 저장되어 있는 라이트 카운팅값(current counting value)을 라이트 카운터(323)로 전송한다. 라이트 카운팅값 저장소(322)는, 라이트 카운터(323)로부터 출력되는 업데이트된 라이트 카운팅값(updated counting value)을 입력받을 수 있다. 업데이트된 라이트 카운팅값이 입력되면, 라이트 카운팅값 저장소(322) 내에 저장되어 있던 현재 라이트 카운팅값을 업데이트된 라이트 카운팅값으로 갱신시킨다. 그리고 업데이트된 라이트 카운팅값을 블록 어드레스(BLK_ADDR)와 함께 라이트 카운팅값 체커(324)로 입력시킨다.
라이트 카운터(323)는, 라이트 카운팅값 저장소(322)로부터 입력되는 현재 저장되어 있는 라이트 카운팅값에 대한 카운팅 동작을 수행하여 현재 저장되어 있는 라이트 카운팅값에 "1"이 더해진 업데이트된 라이트 카운팅값(updated counting value)을 생성한다. 그리고 생성된 업데이트된 라이트 카운팅값을 라이트 카운팅값 저장소(322)에 전송한다. 일 예에서 라이트 카운터(323)는, 제1 입력단자 및 제2 입력단자로 입력되는 데이터를 가산하여 출력단자로 출력시키는 애더(adder) 회로로 구성될 수 있다. 이 경우 제1 입력단자로 현재 라이트 카운팅값이 입력되고, 제2 입력단자로 데이터 "1"이 입력될 수 있다. 그리고 출력단자로 업데이트된 라이트 카운팅값이 출력될 수 있다.
라이트 카운팅값 체커(324)는, 라이트 카운팅값 저장소(322)로부터 입력되는 업데이트된 라이트 카운팅값을 기설정된 기준값과 비교한 후에 그 결과에 따라 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)를 출력시킬 수 있다. 입력된 업데이트된 라이트 카운팅값이 기설정된 기준값보다 작은 경우, 라이트 카운팅값 체커(324)는 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)를 출력시키지 않는다. 반면에 입력된 업데이트된 라이트 카운팅값이 기설정된 기준값보다 같은 경우, 라이트 카운팅값 체커(324)는 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)를 출력시킨다. 라이트 카운팅값 체커(324)에 의해 출력된 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)는 명령 처리 회로(310) 내의 리드 명령 발생기(312)로 입력된다.
도 5는 라이트 명령 발생에 따른 라이트 카운팅값 저장소(322)의 라이트 카운팅값 업데이트 과정을 설명하기 위해 나타내 보인 도면이다. 도 5를 참조하면, 라이트 카운팅값 저장소(322)의 첫번째 블록 어드레스(BLOCK(0)_ADDR)에 대해서는 현재 라이트 카운팅값으로 데이터 "00010"이 저장되어 있다. 이는 첫번째 블록 어드레스(BLOCK(0)_ADDR)에 의해 지정되는 상변화메모리(PCM)(200)의 블록, 예컨대 첫번째 블록에 대해 연속적인 라이트 명령이 3회 발생되어 있는 상태라는 것을 나타낸다. 마찬가지로 두번째 블록 어드레스(BLOCK(1)_ADDR)에 대해서는 현재 라이트 카운팅값으로 데이터 "00101"이 저장되어 있으며, m번째 블록 어드레스(BLOCK(m-1)_ADDR)에 대해서는 현재 라이트 카운팅값으로 데이터 "00011"이 저장되어 있다. 이 상태에서 상변화메모리(PCM)(200)의 두번째 블록(BLOCK(1))에 대한 라이트 명령이 발생되면, 라이트 명령(WRITE CMD) 및 두번째 블록(BLOCK(1))의 블록 어드레스(BLK(1)_ADDR)가 라이트 카운팅값 저장소(322)에 전달된다. 라이트 카운팅값 저장소(322)는, 블록 어드레스(BLK(1)_ADDR)의 현재 라이트 카운팅값인 "00101"을 라이트 카운터(323)에 입력시킨다. 라이트 카운터(323)는 현재 라이트 카운팅값인 "00101"에 "1"을 더하는 카운팅 동작을 수행한 후에, 업데이트된 카운팅값으로 "00110"을 출력하여 라이트 카운팅값 저장소(322)로 입력시킨다. 라이트 카운팅값 저장소(322)는, 블록 어드레스(BLK(1)_ADDR)의 현재 라이트 카운팅값인 "00101"을 업데이트된 라이트 카운팅값인 "00110"으로 변경시킨다. 그리고 업데이트된 라이트 카운팅값인 "00110"은 라이트카운팅값 체커(324)로 입력시킨다.
도 6은 리셋신호 발생에 따른 라이트 카운팅값 저장소(322)의 리셋 과정을 설명하기 위해 나타내 보인 도면이다. 도 6을 참조하면, 상변화메모리(PCM)(200)의 두번째 블록(BLOCK(1))에 대한 리드 명령이 발생되는 경우, 라이트 카운팅값 리셋부(321)는 리셋신호(RESET) 및 두번째 블록 어드레스(BLK(1)_ADDR)를 라이트 카운팅값 저장소(322)로 입력시킨다. 리셋신호(RESET) 및 두번째 블록 어드레스(BLK(1)_ADDR)가 입력되면, 라이트 카운팅값 저장소(322)는, 두번째 블록 어드레스(BLK(1)_ADDR)의 현재 라이트 카운팅값인 "00101"을 초기값인 "00000"으로 변경시킨다.
도 7은 본 개시에 따른 메모리 시스템(100) 동작의 일 예를 설명하기 위해 나타내 보인 플로챠트이다. 이하에서는 메모리장치의 제1 블록에 대해 리드 명령 또는 라이트 명령이 발생되는 경우를 예로 들기로 한다. 여기서 제1 블록은, 도 1의 상변화메모리(PCM)(200)의 m개의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 중 어느 하나일 수 있다. 도 7을 참조하면, 단계 401에서 리드 명령이 발생했는지 여부를 판단한다. 단계 401의 판단 결과, 리드 명령이 발생한 경우 단계 407을 수행한다. 단계 401의 판단 결과, 리드 명령이 발생하지 않은 경우, 단계 402에서 라이트 명령이 발생했는지 여부를 판단한다. 단계 402의 판단 결과, 라이트 명령이 발생되지 않은 경우 단계 401를 다시 수행한다. 단계 402의 판단 결과, 라이트 명령이 발생된 경우, 단계 403을 수행한다. 단계 403에서, 명령 처리 회로(310)는, 제1 블록의 제1 블록 어드레스 및 라이트 명령을 라이트 카운팅 회로(320)에 전달한다. 단계 404에서, 라이트 카운팅 회로(320)는 제1 블록 어드레스에 대한 라이트 카운팅값을 업데이트시킨다. 이에 따라 제1 블록 어드레스에 대한 현재 라이트 카운팅값은 업데이트된 라이트 카운팅값으로 변경된다. 단계 405에서 업데이트된 라이트 카운팅값이 기준값과 같은지의 여부를 판단한다.
단계 405의 판단 결과, 업데이트된 라이트 카운팅값이 기준값과 같은 경우 단계 406을 수행한다. 단계 406에서 제1 블록 어드레스를 갖는 제1 블록에 대한 리드 명령을 발생시킨다. 구체적으로 라이트 카운팅 회로(320)는 명령 처리 회로(310) 내의 리드 명령 발생기(312)로 리드 명령 발생 제어신호(RCG) 및 제1 블록 어드레스를 입력시킨다. 리드 명령 발생기(312)는 제1 블록 어드레스를 갖는 제1 블록에 대한 리드 명령을 발생시킨다. 명령 처리 회로(310)는 제1 블록에 대한 리드 명령을 메모리장치, 즉 상변화메모리(PCM)(200)에 전송하여, 제1 블록에 대한 리드 동작이 수행되도록 한다. 단계 407에서 리드 명령이 발생된 제1 블록에 대한 라이트 카운팅값을 리셋시킨다. 단계 408에서 제1 블록에 대한 리드 동작에 의해 상변화메모리(PCM)(200)로부터 읽은 리드 데이터에 대한 ECC를 수행하여 블록 페일 여부를 체크한다.
도 8은 본 개시에 따른 메모리 시스템을 구성하는 라이트 카운팅 회로 구성의 다른 예를 나타내 보인 블록도이다. 도 8에서 도 3과 동일한 참조부호는 동일한 구성요소를 나타낸다. 도 8을 참조하면, 본 예에 따른 라이트 카운팅 회로(320')는, 도 3을 참조하여 설명한 라이트 카운팅 회로(320)의 라이트 카운팅값 리셋부(도 3의 321)를 포함하지 않는 점과, 라이트 카운팅값 체커(324)의 동작에 차이가 있는 점을 제외하고는 도 3의 라이트 카운팅 회로(320)와 동일하다. 라이트 카운팅값 리셋부(도 3의 321)가 제거됨으로써, 라이트 카운팅 회로(320')는 라이트 카운팅값 리셋 동작을 수행하지 않는다. 이에 따라 도 1의 메모리 시스템(100)을 구성하는 명령 처리 회로(310)는, 호스트(102)로부터 명령(CMD) 및 블록 어드레스(BLK_ADDR)가 전송될 때, 전송되는 명령(CMD) 및 블록 어드레스(BLK_ADDR)를 상변화메모리(PCM)(200)에 전송할 뿐, 라이트 카운팅 회로(320)에는 전송할 필요가 없다.
구체적으로 라이트 카운팅값 저장소(322)는, 상변화메모리(PCM)(도 1의 200)의 m개의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 각각에 대해 수행되는 라이트 명령에 대한 카운팅값을 저장한다. 라이트 카운팅값 저장소(322)는, 도 4를 참조하여 설명한 바와 동일하게 구성될 수 있다. 라이트 카운팅값 저장소(322)는, 명령 처리 회로(도 1의 310)로부터 라이트 명령(WRITE CMD) 및 블록 어드레스(BLK_ADDR)를 입력받을 수 있다. 라이트 명령(WRITE CMD) 및 블록 어드레스(BLK_ADDR)가 입력되면, 라이트 카운팅값 저장소(322)는, 입력된 블록 어드레스(BLK_ADDR)에 대해 현재 저장되어 있는 라이트 카운팅값(current counting value)을 라이트 카운터(323)로 전송한다. 라이트 카운팅값 저장소(322)는, 라이트 카운터(323)로부터 출력되는 업데이트된 라이트 카운팅값(updated counting value)을 입력받을 수 있다. 업데이트된 라이트 카운팅값이 입력되면, 라이트 카운팅값 저장소(322) 내에 저장되어 있던 현재 라이트 카운팅값을 업데이트된 라이트 카운팅값으로 갱신시킨다. 그리고 업데이트된 라이트 카운팅값을 블록 어드레스(BLK_ADDR)와 함께 라이트 카운팅값 체커(324)로 입력시킨다.
라이트 카운터(323)는, 라이트 카운팅값 저장소(322)로부터 입력되는 현재 저장되어 있는 라이트 카운팅값에 대한 카운팅 동작을 수행하여 현재 저장되어 있는 라이트 카운팅값에 "1"이 더해진 업데이트된 라이트 카운팅값(updated counting value)을 생성한다. 그리고 생성된 업데이트된 라이트 카운팅값을 라이트 카운팅값 저장소(322)에 전송한다. 일 예에서 라이트 카운터(323)는, 제1 입력단자 및 제2 입력단자로 입력되는 데이터를 가산하여 출력단자로 출력시키는 애더(adder) 회로로 구성될 수 있다. 이 경우 제1 입력단자로 현재 라이트 카운팅값이 입력되고, 제2 입력단자로 데이터 "1"이 입력될 수 있다. 그리고 출력단자로 업데이트된 라이트 카운팅값이 출력될 수 있다.
라이트 카운팅값 체커(324)는, 라이트 카운팅값 저장소(322)로부터 입력되는 업데이트된 라이트 카운팅값을 기설정된 설정값과 비교한 후에 그 결과에 따라 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)를 출력시킬 수 있다. 상변화 메모리의 어느 한 블록에 대한 라이트가 수행되는 횟수가 많아질수록 그 블록에 대한 동작 과정에서 에러가 발생될 가능성도 점점 더 높아진다. 따라서 에러가 발생될 가능성이 높다고 판단되는 경우, 해당되는 블록에 대한 라이트 동작시 리드 동작 및 그에 따른 ECC 동작을 임의로 수행할 필요가 있다. 본 예에서 기설정된 설정값은, 어느 한 블록에 대한 라이트 동작시 에러 발생 가능성이 높아지도록 하는 라이트 횟수로 정의될 수 있다. 설정값이 높을수록 리드 동작 및 ECC 동작 횟수는 감소되는 반면, 에러 발생 가능성은 높아질 수 있다. 반면에 설정값이 낮을수록 리드 동작 및 ECC 동작 횟수는 늘어나는 반면, 에러 발생 가능성은 낮아질 수 있다. 따라서 설정값은 리드 동작 및 ECC 동작 횟수와 에러 발생 가능성을 고려하여 적절하게 설정할 필요가 있다.
입력된 업데이트된 라이트 카운팅값이 기설정된 설정값보다 작은 경우, 라이트 카운팅값 체커(324)는 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)를 출력시키지 않는다. 반면에 입력된 업데이트된 라이트 카운팅값이 기설정된 기준값보다 같거나 큰 경우, 라이트 카운팅값 체커(324)는 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)를 출력시킨다. 라이트 카운팅값 체커(324)에 의해 출력되는 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)는 명령 처리 회로(도 1의 310) 내의 리드 명령 발생기(도 1의 312)로 입력된다.
이와 같은 라이트 카운팅 회로(320')의 동작에 따르면, 상변화메모리(PCM)(도 1의 200)의 m개의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 각각의 블록, 예컨대 제1 블록(BLOCK(0))에 대한 업데이트된 라이트 카운팅값이 설정값 이상인 경우 리드 명령 발생 제어신호(RCG) 및 블록 어드레스(BLK_ADDR)를 명령 처리 회로(도 1의 310) 내의 리드 명령 발생기(도 1의 312)로 입력시킨다. 따라서 일단 제1 블록(BLOCK(0))에 대한 업데이트된 라이트 카운팅값이 설정값에 도달하는 시점부터, 제1 블록(BLOCK(0))에 대한 라이트 명령이 추가적으로 발생될 때마다 제1 블록(BLOCK(0))에 대한 리드 명령 발생 제어신호(RCG)가 발생된다. 제1 블록(BLOCK(0))에 대한 리드 명령 발생 제어신호(RCG)가 발생되면, 제1 블록(BLOCK(0))에 라이팅된 데이터에 대한 리드 동작 및 ECC 동작이 수행된다. 즉 제1 블록(BLOCK(0))에 대한 업데이트된 라이트 카운팅값이 설정값에 도달하는 시점부터, 제1 블록(BLOCK(0))에 대한 라이트 동작이 수행될 때마다 라이트된 데이터에 대한 리드 동작 및 ECC 동작이 항상 수행된다.
도 9는 본 개시에 따른 메모리 시스템 동작의 다른 예를 설명하기 위해 나타내 보인 플로챠트이다. 이하에서는 메모리장치의 제1 블록에 대해 리드 명령 또는 라이트 명령이 발생되는 경우를 예로 들기로 한다. 여기서 제1 블록은, 도 1의 상변화메모리(PCM)(200)의 m개의 블록들(BLOCK(0), BLOCK(1), …, BLOCK(m-1)) 중 어느 하나일 수 있다. 도 9를 참조하면, 단계 501에서 제1 블록에 대한 라이트 명령이 발생하면, 단계 502에서 제1 블록에 대한 라이트 명령에 따라 제1 블록 어드레스 및 라이트 명령을 라이트 카운팅 회로(도 8의 320')에 전달한다. 단계 503에서, 라이트 카운팅 회로(320')는 제1 블록 어드레스에 대한 라이트 카운팅값을 업데이트시킨다. 이에 따라 제1 블록 어드레스에 대한 현재 라이트 카운팅값은 업데이트된 라이트 카운팅값으로 변경된다. 단계 504에서 업데이트된 라이트 카운팅값이 설정값보다 같거나 큰지의 여부를 판단한다.
단계 504의 판단 결과, 업데이트된 라이트 카운팅값이 설정값보다 작은 경우, 제1 블록에 대한 리드 명령을 생성하지 않고 라이트 카운팅 과정을 종료한다. 단계 504의 판단 결과, 업데이트된 라이트 카운팅값이 설정값보다 같거나 큰 경우, 단계 505에서 제1 블록 어드레스를 갖는 제1 블록에 대한 리드 명령을 생성한다. 구체적으로 라이트 카운팅 회로(320')는 명령 처리 회로(310) 내의 리드 명령 발생기(312)로 리드 명령 발생 제어신호(RCG) 및 제1 블록 어드레스를 입력시킨다. 리드 명령 발생기(312)는 제1 블록 어드레스를 갖는 제1 블록에 대한 리드 명령을 발생시킨다. 명령 처리 회로(310)는 제1 블록에 대한 리드 명령을 메모리장치, 즉 상변화메모리(PCM)(200)에 전송하여, 제1 블록에 대한 리드 동작이 수행되도록 한다. 단계 506에서 제1 블록에 대한 리드 동작에 의해 상변화메모리(PCM)(200)로부터 읽은 리드 데이터에 대한 ECC를 수행하여 블록 페일 여부를 체크한다.
상술한 바와 같이 본 출원의 실시 형태들을 도면들을 예시하며 설명하지만, 이는 본 출원에서 제시하고자 하는 바를 설명하기 위한 것이며, 세밀하게 제시된 형상으로 본 출원에서 제시하고자 하는 바를 한정하고자 한 것은 아니다.
100...메모리 시스템 102...호스트
200...상변화메모리(PCM) 300...메모리 컨트롤러
310...명령 처리 회로 312...리드 명령 발생기
320, 320'...라이트 카운팅 회로 321...라이트 카운팅값 리셋부
322...라이트 카운팅값 저장소 323...라이트 카운터
324...라이트 카운팅값 체커 330...ECC 회로
331...ECC 인코더 332...ECC 디코더
340...데이터 버퍼

Claims (34)

  1. 복수개의 메모리영역들을 갖는 메모리장치; 및
    상기 메모리영역들 중 어느 하나인 제1 메모리영역에 대한 연속적인 라이트 명령이 기준값에 도달되면 상기 제1 메모리영역에 대한 리드 명령을 발생시키는 메모리 컨트롤러를 포함하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 메모리장치는 상변화메모리를 포함하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 복수개의 메모리영역들은 복수개의 블록들을 포함하는 메모리 시스템.
  4. 제1항에 있어서,
    상기 복수개의 메모리영역들은 복수개의 페이지들을 포함하는 메모리 시스템.
  5. 제1항에 있어서, 상기 메모리 컨트롤러는,
    호스트로부터의 라이트 명령 및 리드 명령을 처리하되, 리드 명령 발생 제어신호에 응답하여 상기 호스트와는 무관하게 상기 제1 메모리영역에 대한 리드 명령을 발생시키는 명령 처리 회로; 및
    상기 제1 메모리영역에 대한 연속적인 라이트 명령이 기준값에 도달되면 상기 명령 처리 회로에 상기 리드 명령 발생 제어 신호를 입력시키는 라이트 카운팅 회로를 포함하는 메모리 시스템.
  6. 제5항에 있어서,
    상기 명령 처리 회로는, 상기 라이트 카운팅 회로로부터 상기 리드 명령 발생 제어신호 및 상기 제1 메모리영역의 어드레스를 입력받고, 상기 제1 메모리영역에 대한 리드 명령을 발생시키는 리드 명령 발생기를 포함하는 메모리 시스템.
  7. 제5항에 있어서,
    상기 명령 처리 회로는, 상기 호스트로부터의 라이트 명령 및 리드 명령이 발생되면, 상기 라이트 카운팅 회로 및 메모리장치로 상기 라이트 명령 및 리드 명령과 상기 제1 메모리영역의 어드레스를 전송하는 메모리 시스템.
  8. 제5항에 있어서, 상기 라이트 카운팅 회로는,
    상기 메모리영역들 각각의 라이트 카운팅값을 저장하되, 상기 명령 처리 회로로부터 상기 제1 메모리영역에 대한 라이트 명령이 전송되면 상기 제1 메모리영역의 현재 라이트 카운팅값을 업데이트된 라이트 카운팅값으로 변경하여 저장하는 라이트 카운팅값 저장소;
    상기 라이트 카운팅값 저장소로부터 상기 현재 라이트 카운팅값을 입력받아 카운팅 동작을 수행한 후 상기 업데이트된 라이트 카운팅값을 상기 라이트 카운팅값 저장소로 출력하는 라이트 카운터; 및
    상기 라이트 카운팅값 저장소로부터 상기 업데이트된 라이트 카운팅값을 입력받아 기준값과 비교하여 상기 업데이트된 라이트 카운팅값이 상기 기준값과 같으면 상기 제1 메모리영역에 대한 상기 리드 명령 발생 제어신호를 상기 명령 처리 회로에 입력시키는 라이트 카운팅값 체커를 포함하는 메모리 시스템.
  9. 제8항에 있어서,
    상기 라이트 카운팅 회로는, 상기 명령 처리 회로로부터의 상기 제1 메모리영역에 대한 리드 명령이 전송되면 상기 제1 메모리영역에 대한 리셋신호를 출력하는 라이트 카운팅값 리셋부를 더 포함하고,
    상기 라이트 카운팅값 저장소는, 상기 라이트 카운팅값 리셋부로부터 상기 리셋신호가 전송되면 상기 제1 메모리영역의 라이트 카운팅값을 리셋시키는 메모리 시스템.
  10. 제1항에 있어서,
    상기 메모리 컨트롤러는, 상기 메모리장치에 대한 리드 동작시 에러 검출 및 에러 정정을 수행하는 ECC 회로를 더 포함하는 메모리 시스템.
  11. 제10항에 있어서, 상기 ECC 회로는,
    상기 메모리장치에 대한 라이트 동작시 오리지널 라이트 데이터 및 패리티 데이터를 포함하는 코드워드 형태의 라이트 데이터를 발생시키는 ECC 인코더; 및
    상기 메모리장치에 대한 리드 동작시 상기 코드워드 형태의 리드 데이터에 대한 에러 검출 및 에러 정정을 수행하는 ECC 디코더를 포함하는 메모리 시스템.
  12. 복수개의 메모리영역들을 갖는 메모리장치; 및
    상기 메모리영역들 중 어느 하나인 제1 메모리영역에 대한 라이트 명령 횟수가 기설정된 설정값 이상이면 상기 제1 메모리영역에 대한 라이트 명령이 발생될 때마다 상기 라이트 명령에 의해 라이트된 데이터에 대한 리드 명령을 발생시키는 메모리 컨트롤러를 포함하는 메모리 시스템.
  13. 제12항에 있어서,
    상기 메모리장치는 상변화메모리를 포함하는 메모리 시스템.
  14. 제12항에 있어서,
    상기 복수개의 메모리영역들은 복수개의 블록들을 포함하는 메모리 시스템.
  15. 제12항에 있어서,
    상기 복수개의 메모리영역들은 복수개의 페이지들을 포함하는 메모리 시스템.
  16. 제12항에 있어서, 상기 메모리 컨트롤러는,
    호스트로부터의 라이트 명령 및 리드 명령을 처리하되, 리드 명령 발생 제어신호에 응답하여 상기 호스트와는 무관하게 상기 제1 메모리영역에 대한 리드 명령을 발생시키는 명령 처리 회로; 및
    상기 제1 메모리영역에 대한 라이트 명령 횟수가 기설정된 설정값 이상이면 상기 제1 메모리영역에 대한 라이트 명령이 발생될 때마다 상기 명령 처리 회로에 상기 리드 명령 발생 제어 신호를 입력시키는 라이트 카운팅 회로를 포함하는 메모리 시스템.
  17. 제16항에 있어서,
    상기 명령 처리 회로는, 상기 라이트 카운팅 회로로부터 상기 리드 명령 발생 제어신호 및 상기 제1 메모리영역의 어드레스를 입력받고, 상기 제1 메모리영역에 대한 리드 명령을 발생시키는 리드 명령 발생기를 포함하는 메모리 시스템.
  18. 제16항에 있어서,
    상기 명령 처리 회로는, 상기 호스트로부터의 라이트 명령 및 리드 명령이 발생되면, 상기 라이트 카운팅 회로 및 메모리장치로 상기 라이트 명령 및 리드 명령과 상기 제1 메모리영역의 어드레스를 전송하는 메모리 시스템.
  19. 제16항에 있어서, 상기 라이트 카운팅 회로는,
    상기 메모리영역들 각각의 라이트 카운팅값을 저장하되, 상기 명령 처리 회로로부터 상기 제1 메모리영역에 대한 라이트 명령이 전송되면 상기 제1 메모리영역의 현재 라이트 카운팅값을 업데이트된 라이트 카운팅값으로 변경하여 저장하는 라이트 카운팅값 저장소;
    상기 라이트 카운팅값 저장소로부터 상기 현재 라이트 카운팅값을 입력받아 카운팅 동작을 수행한 후 상기 업데이트된 라이트 카운팅값을 상기 라이트 카운팅값 저장소로 출력하는 라이트 카운터; 및
    상기 라이트 카운팅값 저장소로부터 상기 업데이트된 라이트 카운팅값을 입력받아 상기 기설정된 설정값과 비교하여 상기 업데이트된 라이트 카운팅값이 상기 기설정된 설정값 이상이면 상기 제1 메모리영역에 대한 상기 리드 명령 발생 제어신호를 상기 명령 처리 회로에 입력시키는 라이트 카운팅값 체커를 포함하는 메모리 시스템.
  20. 제12항에 있어서,
    상기 메모리 컨트롤러는, 상기 메모리장치에 대한 리드 동작시 에러 검출 및 에러 정정을 수행하는 ECC 회로를 더 포함하는 메모리 시스템.
  21. 제20항에 있어서, 상기 ECC 회로는,
    상기 메모리장치에 대한 라이트 동작시 오리지널 라이트 데이터 및 패리티 데이터를 포함하는 코드워드 형태의 라이트 데이터를 발생시키는 ECC 인코더; 및
    상기 메모리장치에 대한 리드 동작시 상기 코드워드 형태의 리드 데이터에 대한 에러 검출 및 에러 정정을 수행하는 ECC 디코더를 포함하는 메모리 시스템.
  22. 복수개의 메모리영역들을 갖는 메모리장치를 포함하는 메모리 시스템의 동작 방법에 있어서,
    상기 메모리영역들 중 어느 하나인 제1 메모리영역에 대한 라이트 명령이 발생되면 상기 제1 메모리영역에 대한 현재 라이트 카운팅값을 카운팅해 업데이트된 라이트 카운팅값으로 변경하는 단계; 및
    상기 업데이트된 라이트 카운팅값을 기준값과 비교하여 상기 업데이트된 라이트 카운팅값이 상기 기준값에 도달되면 상기 제1 메모리영역에 대한 리드 명령을 발생시키는 단계를 포함하는 메모리 시스템의 동작 방법.
  23. 제22항에 있어서,
    상기 제1 메모리영역에 대한 리드 명령이 발생되면 상기 제1 메모리영역에 대한 현재 라이트 카운팅값을 초기값으로 리셋시키는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  24. 제22항에 있어서,
    상기 업데이트된 라이트 카운팅값은, 상기 현재 라이트 카운팅값에 "1"을 가산한 값을 갖는 메모리 시스템의 동작 방법.
  25. 제22항에 있어서,
    상기 메모리장치는 상변화메모리를 포함하는 메모리 시스템의 동작 방법.
  26. 제22항에 있어서,
    상기 복수개의 메모리영역들은 복수개의 블록들을 포함하는 메모리 시스템의 동작 방법.
  27. 제22항에 있어서,
    상기 복수개의 메모리영역들은 복수개의 페이지들을 포함하는 메모리 시스템의 동작 방법.
  28. 제22항에 있어서,
    상기 제1 메모리영역에 대한 리드 명령에 따라 리드 동작을 수행하여 상기 제1 메모리영역으로부터의 리드 데이터에 대한 에러 검출 및 에러 정정 동작을 수행하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  29. 복수개의 메모리영역들을 갖는 메모리장치를 포함하는 메모리 시스템의 동작 방법에 있어서,
    상기 메모리영역들 중 어느 하나인 제1 메모리영역에 대한 라이트 명령이 발생되면 상기 제1 메모리영역에 대한 현재 라이트 카운팅값을 카운팅해 업데이트된 라이트 카운팅값으로 변경하는 단계; 및
    상기 업데이트된 라이트 카운팅값을 기설정된 설정값과 비교하여 상기 업데이트된 라이트 카운팅값이 상기 기설정된 설정값 이상이면 상기 제1 메모리영역에 대한 라이트 명령이 발생될 때마다 상기 라이트 명령에 의해 라이트된 데이터에 대한 리드 명령을 발생시키는 단계를 포함하는 메모리 시스템의 동작 방법.
  30. 제29항에 있어서,
    상기 업데이트된 라이트 카운팅값은, 상기 현재 라이트 카운팅값에 "1"을 가산한 값을 갖는 메모리 시스템의 동작 방법.
  31. 제29항에 있어서,
    상기 메모리장치는 상변화메모리를 포함하는 메모리 시스템의 동작 방법.
  32. 제29항에 있어서,
    상기 복수개의 메모리영역들은 복수개의 블록들을 포함하는 메모리 시스템의 동작 방법.
  33. 제29항에 있어서,
    상기 복수개의 메모리영역들은 복수개의 페이지들을 포함하는 메모리 시스템의 동작 방법.
  34. 제29항에 있어서,
    상기 제1 메모리영역에 대한 리드 명령에 따라 리드 동작을 수행하여 상기 제1 메모리영역으로부터의 리드 데이터에 대한 에러 검출 및 에러 정정 동작을 수행하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
KR1020180094039A 2018-08-10 2018-08-10 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법 KR20200018156A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180094039A KR20200018156A (ko) 2018-08-10 2018-08-10 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법
US16/236,000 US10665297B2 (en) 2018-08-10 2018-12-28 Memory systems for memory devices and methods of operating the memory systems
CN201910098303.4A CN110825553B (zh) 2018-08-10 2019-01-31 针对存储器件的存储系统以及存储系统的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180094039A KR20200018156A (ko) 2018-08-10 2018-08-10 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법

Publications (1)

Publication Number Publication Date
KR20200018156A true KR20200018156A (ko) 2020-02-19

Family

ID=69406510

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180094039A KR20200018156A (ko) 2018-08-10 2018-08-10 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법

Country Status (3)

Country Link
US (1) US10665297B2 (ko)
KR (1) KR20200018156A (ko)
CN (1) CN110825553B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10276794B1 (en) * 2017-10-31 2019-04-30 Taiwan Semiconductor Manufacturing Co., Ltd. Memory device and fabrication method thereof
CN110209597B (zh) * 2019-05-24 2021-10-15 北京百度网讯科技有限公司 处理访问请求的方法、装置、设备和存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102254102B1 (ko) * 2015-01-23 2021-05-20 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6950149B2 (ja) * 2015-09-08 2021-10-13 ソニーグループ株式会社 メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
KR102435181B1 (ko) * 2015-11-16 2022-08-23 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
CN105718530B (zh) * 2016-01-15 2020-02-04 上海磁宇信息科技有限公司 文件存储系统及其文件存储控制方法
KR20170099437A (ko) 2016-02-23 2017-09-01 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR102479212B1 (ko) * 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
JP2018045387A (ja) * 2016-09-13 2018-03-22 東芝メモリ株式会社 メモリシステム
KR20180035981A (ko) * 2016-09-29 2018-04-09 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법

Also Published As

Publication number Publication date
CN110825553B (zh) 2023-10-27
US20200051627A1 (en) 2020-02-13
US10665297B2 (en) 2020-05-26
CN110825553A (zh) 2020-02-21

Similar Documents

Publication Publication Date Title
US10459794B2 (en) Memory systems having extended product lifetime and methods of operating the same
US10102904B2 (en) Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
KR100842680B1 (ko) 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
KR101659888B1 (ko) 플래시 메모리 제어 방법, 제어기 및 전자 장치
US8321765B2 (en) Method of reading data in non-volatile memory device
US8438457B2 (en) Nonvolatile memory apparatus, memory controller, and memory system
JP4905866B2 (ja) 半導体記憶装置及びその動作方法
CN109542666B (zh) 用于支持纠错码的装置及其测试方法
US10803919B2 (en) Memory controller for controlling refresh operation and memory system including the same
KR101572038B1 (ko) 메모리 어레이의 에러 수정 방법
JP2015018451A (ja) メモリコントローラ、記憶装置およびメモリ制御方法
US10114693B2 (en) Memory systems and electronic systems performing an adaptive error correction operation with pre-checked error rate, and methods of operating the memory systems
JP2009042911A (ja) メモリアクセスシステム
US10186302B2 (en) Semiconductor systems performing double-write operations and methods of operating the same
KR20180022014A (ko) 반도체장치
KR20200018156A (ko) 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법
KR102004928B1 (ko) 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
KR20180087494A (ko) 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법
US20230197183A1 (en) Storage controller including parity management module, storage device including the same, and operating method of storage device
US11662941B2 (en) System and method for mitigating effect of erase cells on adjacent cells
US10922025B2 (en) Nonvolatile memory bad row management
JP6479638B2 (ja) ビデオサーバ装置およびデータ書き込み/読み出し方法
KR20170143084A (ko) 반도체장치 및 반도체시스템
KR20220023476A (ko) 레이드 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
KR20210010718A (ko) 메모리 시스템 및 메모리 시스템에서의 에러정정방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal