KR101899343B1 - 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법 - Google Patents

오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법 Download PDF

Info

Publication number
KR101899343B1
KR101899343B1 KR1020160129720A KR20160129720A KR101899343B1 KR 101899343 B1 KR101899343 B1 KR 101899343B1 KR 1020160129720 A KR1020160129720 A KR 1020160129720A KR 20160129720 A KR20160129720 A KR 20160129720A KR 101899343 B1 KR101899343 B1 KR 101899343B1
Authority
KR
South Korea
Prior art keywords
data
phase change
change memory
read
written
Prior art date
Application number
KR1020160129720A
Other languages
English (en)
Other versions
KR20180038725A (ko
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 KR1020160129720A priority Critical patent/KR101899343B1/ko
Publication of KR20180038725A publication Critical patent/KR20180038725A/ko
Application granted granted Critical
Publication of KR101899343B1 publication Critical patent/KR101899343B1/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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

Landscapes

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

Abstract

본 발명은 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법을 개시한다. 즉, 본 발명은 오류 검출 및 정정 코드 사용시, 데이터 읽기에서 발생한 오류의 개수를 근거로 가변적으로 웨어 레벨링을 적용함으로써, 웨어 레벨링 기법 적용에 의한 성능 저하를 최소화하면서 동시에 전체 메모리 셀의 쓰기 횟수를 셀 고유의 내구성에 대비하여 최대한 균일하게 유지함으로써 오류 발생을 줄일 수 있다.

Description

오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법{Apparatus for managing Phase Change Memory using error detection and error correction code and method thereof}
본 발명은 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법에 관한 것으로, 특히 오류 검출 및 정정 코드 사용시, 데이터 읽기에서 발생한 오류의 개수를 근거로 가변적으로 웨어 레벨링을 적용하는 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법에 관한 것이다.
상변화 메모리(Phase Change Memory: PCM)는 소자가 되는 특정 물질(예를 들어 칼코게나이드 화합물, Ge-Sb-Te: GST)의 상변화를 판단해서, 데이터를 저장하는 메모리 반도체이다.
예를 들어, 상변화 물질의 결정 상태가 결정인 경우는 1, 비결정인 경우는 0의 신호를 검출하는 방식으로 정보를 저장한다.
상기 상변화 메모리는 비휘발성 메모리이면서, 기존의 DRAM에 비견될 정도의 빠른 처리 속도와 높은 집적도를 가지는 장점이 있으나, 정보를 저장하는 상변화 물질 및 상변화 물질을 이용한 메모리 셀의 설계상의 한계로 인해 쓰기 횟수가 제한되고, 쓰기 횟수가 늘어남에 따라 오류 발생 확률이 증가하는 문제점이 있다.
또한, 상기 상변화 메모리의 셀은 제조 과정에서 발생하는 공정 변화(process variation)로 인해 각 메모리 셀의 내구성이 동일하지 않으며, 내구성이 약한 메모리 셀은 오류가 자주 발생하고, 내구성이 높은 메모리 셀은 오류가 상대적으로 적게 발생한다. 기존의 메모리에 비해 오류의 발생 확률이 높은 상변화 메모리의 특성상, 대부분의 상변화 메모리를 이용한 메모리 시스템은 오류 검출 및 정정 코드를 이용하여 오류를 수정하게 되며, 얼마만큼의 오류를 수정 가능한지는 오류 검출 및 정정 코드에 필요한 정보인 메타 데이터(metadata)의 길이에 따라 다르다.
이러한 오류 정정 코드에 추가적인 저장 공간이 필요하며, 오류 정정 코드를 생성 및 저장하기 위해 추가적인 저장 시간이 필요한 문제점이 있다.
또한, 오류 정정 코드가 정정할 수 있는 범위를 넘어선 오류가 발생할 경우에는 대응을 할 수 없는 문제점이 있다.
특히, 메모리 셀에 불균일하게 쓰기 동작이 발생하여 특정 셀이 다른 셀에 비해 쓰기 횟수가 많아지면, 쓰기 횟수가 많은 셀의 수명이 먼저 다하게 되고, 수명이 다한 셀들은 오류를 발생시킴으로써 전체적인 메모리 시스템의 성능을 크게 저하시키거나, 해당 셀이 포함된 메모리 영역을 전혀 사용하지 못하게 되는 문제점이 있다.
또한, 기존의 웨어 레벨링 방법은 전체 메모리 셀의 쓰기 횟수를 균일하게 하여, 특정 셀만 노후화됨으로써 발생하는 문제를 해결하는 데에 초점을 맞추고 있다.
그러나 각 셀들은 서로 다른 내구성을 가지고, 서로 다른 오류 발생률을 가지고 있음에도 불구하고, 이러한 점을 고려하지 않고 일률적으로 웨어 레벨링을 적용함으로써, 내구성이 강한 셀의 특징을 전혀 활용하지 못하고 있다. 또한, 웨어 레벨링 기술이 적용되어 특정 블록이 이동하는 동안에는 메모리 요청에 대한 서비스를 수행할 수 없기 때문에 웨어 레벨링 적용은 메모리 시스템 성능에 큰 영향을 미친다.
한국등록특허 제10-1080191호 [명칭: 웨어레벨링 방법]
본 발명의 목적은 오류 검출 및 정정 코드 사용시, 데이터 읽기에서 발생한 오류의 개수를 근거로 가변적으로 웨어 레벨링을 적용하는 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법을 제공하는 데 있다.
본 발명의 실시예에 따른 상변화 메모리 관리 방법은 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 방법에 있어서, 상변화 메모리 관리부에 의해, 메모리 요청이 상변화 메모리에 대한 쓰기 요청인지 또는 읽기 요청인지 여부를 확인하는 단계; 상기 확인 결과, 상기 메모리 요청이 상변화 메모리에 대한 쓰기 요청일 때, ECC 모듈에 의해, 상기 상변화 메모리에 쓰고자 하는 데이터에 대한 메타데이터를 생성하는 단계; 상기 상변화 메모리 관리부에 의해, 상기 쓰고자 하는 데이터와 상기 쓰고자 하는 데이터에 대응하는 메타데이터를 근거로 상기 상변화 메모리에 대한 쓰기 동작을 수행하는 단계; 상기 상변화 메모리 관리부에 의해, 새로 쓰여진 데이터에 대한 데이터 읽기 동작을 수행하는 단계; 상기 상변화 메모리 관리부에 의해, 상기 쓰고자 하는 데이터와 상기 쓰고자 하는 데이터에 대응하는 메타데이터를 근거로 상기 읽기 동작에 따라 다시 읽은 데이터 및 상기 다시 읽은 데이터에 대응하는 메타데이터에 대한 데이터 검증을 실행하는 단계; 상기 상변화 메모리 관리부에 의해, 상기 다시 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 상기 다시 읽은 데이터와 관련하여 발생한 에러의 개수를 확인하는 단계; 및 웨어 레벨링 제어부에 의해, 상기 확인된 다시 읽은 데이터와 관련하여 발생한 에러의 개수를 근거로 상기 다시 읽은 데이터에 대응하는 증가/감소값 저장 레지스터의 증감 단위를 업데이트하는 단계를 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 상변화 메모리 관리부에 의해, 상기 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리 상의 저장 공간에 대응하는 증가/감소값 저장 레지스터에 저장된 증감 단위를 근거로 상기 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리 상의 저장 공간에 대응하는 쓰기 카운터의 카운터 값을 증가시키는 단계; 상기 웨어 레벨링 제어부에 의해, 상기 쓰기 카운터의 카운터 값이 미리 설정된 임계값을 초과하는지 여부를 판단하는 단계; 및 상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터의 카운터 값이 상기 임계값을 초과할 때, 상기 웨어 레벨링 제어부에 의해, 웨어 레벨링을 수행하는 단계를 더 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터의 카운터 값이 상기 임계값을 초과하지 않을 때, 상기 웨어 레벨링 제어부에 의해, 현재 커맨드에 의한 동작을 종료하는 단계를 더 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 확인 결과, 상기 메모리 요청이 상변화 메모리에 대한 읽기 요청일 때, 상기 상변화 메모리 관리부에 의해, 상기 상변화 메모리에서 데이터 읽기 동작을 수행하는 단계; 상기 ECC 모듈에 의해, 상기 읽기 동작에 따라 읽은 데이터에 대응하는 메타데이터와 에러 정정 코드를 근거로 상기 읽은 데이터에 대한 데이터 검증을 실행하는 단계; 상기 ECC 모듈에 의해, 상기 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 상기 읽은 데이터와 관련하여 발생한 에러의 개수를 확인하는 단계; 및 상기 웨어 레벨링 제어부에 의해, 상기 읽은 데이터와 관련하여 발생한 에러의 개수를 근거로 상기 읽은 데이터에 대응하는 증가/감소값 저장 레지스터의 증감 단위를 업데이트하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따른 상변화 메모리 관리 장치는 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치에 있어서, 메모리 요청이 상변화 메모리에 대한 쓰기 요청일 때, 상기 상변화 메모리에 쓰고자 하는 데이터에 대한 메타데이터를 생성하는 ECC 모듈; 메모리 요청이 상기 상변화 메모리에 대한 쓰기 요청인지 또는 읽기 요청인지 여부를 확인하고, 상기 상변화 메모리에 쓰고자 하는 데이터와 상기 쓰고자 하는 데이터에 대응하는 메타데이터를 근거로 상기 상변화 메모리에 대한 쓰기 동작을 수행하고, 새로 쓰여진 데이터와 상기 새로 쓰여진 데이터에 대응하는 메타데이터에 대한 데이터 읽기 동작을 수행하고, 상기 쓰고자 하는 데이터와 상기 쓰고자 하는 데이터에 대응하는 메타데이터를 근거로 상기 읽기 동작에 따라 다시 읽은 데이터 및 상기 다시 읽은 데이터에 대응하는 메타데이터에 대한 데이터 검증을 실행하고, 상기 다시 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 상기 다시 읽은 데이터와 관련하여 발생한 에러의 개수를 확인하는 상변화 메모리 관리부; 및 상기 확인된 다시 읽은 데이터와 관련하여 발생한 에러의 개수를 근거로 상기 다시 읽은 데이터에 대응하는 증가/감소값 저장 레지스터의 증감 단위를 업데이트하는 웨어 레벨링 제어부를 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 상변화 메모리 관리부는, 상기 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리 상의 저장 공간에 대응하는 증가/감소값 저장 레지스터에 저장된 증감 단위를 근거로 상기 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리 상의 저장 공간에 대응하는 쓰기 카운터의 카운터 값을 증가시킬 수 있다.
본 발명과 관련된 일 예로서 상기 웨어 레벨링 제어부는, 상기 쓰기 카운터의 카운터 값이 미리 설정된 임계값을 초과하는지 여부를 판단하고, 상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터의 카운터 값이 상기 임계값을 초과할 때, 웨어 레벨링을 수행할 수 있다.
본 발명과 관련된 일 예로서 상기 웨어 레벨링 제어부는, 상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터의 카운터 값이 상기 임계값을 초과하지 않을 때, 현재 커맨드에 의한 동작을 종료할 수 있다.
본 발명과 관련된 일 예로서 상기 상변화 메모리 관리부는, 상기 확인 결과, 상기 메모리 요청이 상변화 메모리에 대한 읽기 요청일 때, 상기 상변화 메모리에서 데이터 읽기 동작을 수행할 수 있다.
본 발명과 관련된 일 예로서 상기 ECC 모듈은, 상기 읽기 동작에 따라 읽은 데이터에 대응하는 메타데이터와 에러 정정 코드를 근거로 상기 읽은 데이터에 대한 데이터 검증을 실행하고, 상기 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 상기 읽은 데이터와 관련하여 발생한 에러의 개수를 확인할 수 있다.
본 발명과 관련된 일 예로서 상기 웨어 레벨링 제어부는, 상기 읽은 데이터와 관련하여 발생한 에러의 개수를 근거로 상기 읽은 데이터에 대응하는 증가/감소값 저장 레지스터의 증감 단위를 업데이트할 수 있다.
본 발명은 오류 검출 및 정정 코드 사용시, 데이터 읽기에서 발생한 오류의 개수를 근거로 가변적으로 웨어 레벨링을 적용함으로써, 웨어 레벨링 기법 적용에 의한 성능 저하를 최소화하면서 동시에 전체 메모리 셀의 쓰기 횟수를 셀 고유의 내구성에 대비하여 최대한 균일하게 유지함으로써 오류 발생을 줄일 수 있는 효과가 있다.
도 1 및 도 2는 본 발명의 실시예에 따른 상변화 메모리 관리 장치의 구성을 나타낸 도이다.
도 3은 본 발명의 실시예에 따른 웨어 레벨링 기법을 나타낸 도이다.
도 4는 본 발명의 실시예에 따른 가변적 웨어 레벨링을 위한 쓰기 카운터 증가값에 대한 상태 다이어그램을 나타낸 도이다.
도 5는 본 발명의 실시예에 따른 가변적 웨어 레벨링을 위한 쓰기 카운터의 값 감소에 대한 상태 다이어그램을 나타낸 도이다.
도 6은 본 발명의 실시예에 따른 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 방법을 나타낸 흐름도이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서 "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 발명에서 사용되는 제 1, 제 2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성 요소는 제 2 구성 요소로 명명될 수 있고, 유사하게 제 2 구성 요소도 제 1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1 및 도 2는 본 발명의 실시예에 따른 상변화 메모리 관리 장치의 구성을 나타낸 도이다.
도 1 및 도 2에 도시한 바와 같이, 상변화 메모리 관리 장치(10)는 상변화 메모리 컨트롤러(100) 및 상변화 메모리(200)로 구성된다. 도 1에 도시된 상변화 메모리 관리 장치(10)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 1에 도시된 구성 요소보다 많은 구성 요소에 의해 상변화 메모리 관리 장치(10)가 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 상변화 메모리 관리 장치(10)가 구현될 수도 있다.
또한, 상기 도 2에 도시한 바와 같이, 상기 상변화 메모리 컨트롤러(100)는 상변화 메모리 관리부(110), ECC 모듈(120) 및 웨어 레벨링 제어부(130)로 구성된다. 도 2에 도시된 상변화 메모리 컨트롤러(10)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 2에 도시된 구성 요소보다 많은 구성 요소에 의해 상변화 메모리 컨트롤러(10)가 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 상변화 메모리 컨트롤러(10)가 구현될 수도 있다.
상기 상변화 메모리 관리부(110)는 상기 상변화 메모리 컨트롤러(100)의 전반적인 제어 기능을 수행한다.
또한, 상기 상변화 메모리 관리부(110)는 메모리 요청이 상변화 메모리(200)에 대한 쓰기 요청인지 또는 읽기 요청인지 여부를 확인한다.
상기 확인 결과, 상기 메모리 요청이 상변화 메모리(200)에 대한 읽기 요청인 경우, 상기 상변화 메모리 관리부(110)는 상기 상변화 메모리(200)에서 데이터 읽기 동작을 수행한다.
또한, 상기 확인 결과, 상기 메모리 요청이 상변화 메모리(200)에 대한 쓰기 요청인 경우, 상기 상변화 메모리 관리부(110)는 쓰고자 하는 데이터 및 상기 ECC 모듈(120)에 의해 생성된 상기 쓰고자 하는 데이터에 대응하는 메타데이터(metadata)를 근거로 상기 상변화 메모리(200)에 대한 쓰기 동작을 수행(또는 실행)한다.
또한, 상기 상변화 메모리 관리부(110)는 상기 쓰고자 하는 데이터에 대한 쓰기 동작 이후, 새로 쓰여진 데이터와 메타데이터에 대해 다시 읽기 동작을 수행한다. 이때, 상기 새로 쓰여진 데이터는 오류가 없는 경우 앞선 상기 쓰고자 하는 데이터와 동일할 수 있으며, 오류가 있는 경우 앞선 상기 쓰고자 하는 데이터와 다른 상태의 데이터일 수 있다.
또한, 상기 상변화 메모리 관리부(110)는 상기 쓰고자 하는 데이터와 메타데이터를 근거로 상기 읽기 동작에 따라 다시 읽은 데이터와 메타데이터(또는 상기 다시 읽은 데이터에 대응하는 메타데이터)에 대한 검증을 실행(또는 수행)한다.
또한, 상기 상변화 메모리 관리부(110)는 상기 다시 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 해당 다시 읽은 데이터와 관련하여 발생한 에러의 개수(또는 에러 비트의 수)를 확인한다.
또한, 상기 상변화 메모리 관리부(110)는 에러의 개수(또는 에러 비트의 수/상기 다시 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 해당 데이터, 메타데이터와 관련하여 발생한 에러의 개수)를 상기 웨어 레벨링 제어부(130)에 제공한다.
또한, 상기 상변화 메모리 관리부(110)는 해당 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리(200) 상의 저장 공간에 대응하는 상기 증가/감소값 저장 레지스터(210)에 저장된 증감 단위를 근거로 해당 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리(200) 상의 저장 공간에 대응하는 쓰기 카운터(220)의 카운터 값을 증가시킨다.
이와 같이, 상기 상변화 메모리 관리부(110)는 외부에서 메모리 요청을 받아 상기 상변화 메모리(200)의 동작 커맨드를 생성한다.
상기 ECC 모듈(Error Correction Code Module: ECC 모듈)(120)은 오류 정정 코드 및 오류 검출 코드를 생성하거나 해석하여 오류를 정정하는 기능을 수행한다.
또한, 상기 도 2에 도시한 바와 같이, 상기 ECC 모듈(120)은 ECC 인코더(121)와 ECC 디코더(122)로 구성한다.
상기 ECC 인코더(121)는 데이터를 저장할 때(또는 쓸 때/기록할 때), 오류 정정을 위한 메타데이터를 생성하는 기능을 수행한다.
즉, 상기 메모리 요청이 상변화 메모리(200)에 대한 쓰기 요청인 경우, 상기 ECC 인코더(121)는 상기 상변화 메모리(200)에 쓰고자 하는 데이터에 대한 메타데이터를 생성한다.
상기 ECC 디코더(122)는 데이터를 읽을 때 메타데이터를 해석하여 읽은 데이터에 오류가 있는지 여부를 판단(또는 확인)한다.
즉, 상기 ECC 디코더(122)는 상기 읽기 동작에 따라 상기 상변화 메모리 관리부(110)에 의해 읽은 데이터에 대응하는 메타데이터와 에러 정정 코드를 근거로 상기 읽은 데이터(또는 상기 읽기 동작에 따라 읽은 데이터)에 대한 데이터 검증을 실행(또는 수행)한다.
또한, 상기 ECC 디코더(122)는 상기 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 해당 데이터(또는 상기 읽은 데이터)와 관련하여 발생한 에러의 개수(또는 에러 비트의 수)를 확인한다.
또한, 상기 ECC 디코더(122)는 상기 확인된 에러의 개수(또는 에러 비트의 수/상기 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 해당 데이터와 관련하여 발생한 에러의 개수)를 상기 웨어 레벨링 제어부(130)에 제공한다.
상기 웨어 레벨링 제어부(130)는 상기 상변화 메모리 관리부(110), 상기 ECC 모듈(120)로부터 제공되는 특정 데이터에 대한 오류 발생 빈도에 대한 정보(또는 해당 데이터와 관련한/대응하는 에러의 개수/에러 비트의 수)를 제공받는다(또는 전달받는다/수신한다).
또한, 상기 웨어 레벨링 제어부(130)는 상기 확인된 해당 데이터와 관련하여 발생한 에러의 개수(또는 에러 비트의 수)를 근거로 상기 읽은 데이터에 대응하는 증가/감소값 저장 레지스터(210)의 값(또는 증감 단위)을 업데이트하여, 웨어 레벨링의 속도를 제어하는 역할을 한다.
또한, 상기 웨어 레벨링 제어부(130)는 상기 확인된 해당 다시 읽은 데이터와 관련하여 발생한 에러의 개수(또는 에러 비트의 수)를 근거로 상기 다시 읽은 데이터에 대응하는 증가/감소값 저장 레지스터(210)의 값(또는 증감 단위)을 업데이트하여, 웨어 레벨링의 속도를 제어하는 역할을 한다.
즉, 상기 웨어 레벨링 제어부(130)는 오류 발생의 빈도가 낮으면 상기 증가/감소값 저장 레지스터(210)의 값(또는 증가값)을 낮게 설정하여 웨어 레벨링이 천천히 이루어지도록 한다.
또한, 상기 웨어 레벨링 제어부(130)는 오류 발생의 빈도가 높으면 상기 증가/감소값 저장 레지스터(210)의 값(또는 증가값)을 높게 설정하여 웨어 레벨링이 빠르게 이루어지도록 한다.
또한, 상기 웨어 레벨링 제어부(130)는 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터(220)의 카운터 값이 미리 설정된 임계값을 초과하는지 여부를 판단한다.
상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터(220)의 카운터 값이 상기 임계값을 초과하지 않는 경우(또는 상기 쓰기 카운터(220)의 카운터 값이 상기 임계값 이하인 경우), 상기 웨어 레벨링 제어부(130)는 현재 커맨드(또는 상기 메모리 요청)에 의한 동작을 종료(또는 새로운 메모리 요청을 수신하는 초기 단계로 복귀)한다.
또한, 상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터(220)의 카운터 값이 상기 임계값을 초과하는 경우, 상기 웨어 레벨링 제어부(130)는 상기 쓰고자 하는 데이터에 대응하는 스타트 갭 영역에 대한 정보를 근거로 해당 스타트 갭 영역에서 갭 영역을 이동시켜 웨어 레벨링(wear-leveling)을 수행한다.
즉, 도 3에 도시한 바와 같이, 상기 웨어 레벨링 제어부(130)는 다음의 과정을 통해 웨어 레벨링을 수행한다.
본 발명의 실시예에서는 스타트 갭을 이용한 웨어 레벨링 방식에 대해서 설명하고 있으나, 이에 한정되는 것은 아니며, 다른 웨어 레벨링 방식을 통해서도 본 발명의 기술적 특징들을 구현할 수 있다.
상기 웨어 레벨링 제어부(130)는 상변화 메모리 셀을 미리 설정된 단위로 묶어 스타트 갭 영역(start gap region)으로 지정한다.
또한, 상기 웨어 레벨링 제어부(130)는 상기 지정된 스타트 갭 영역 내에서 웨어 레벨링을 실시(또는 수행)한다.
여기서, 상기 스타트 갭 방식을 통한 웨어 레벨링은 상기 지정된 스타트 갭 영역 내에서 시작 영역과 갭 영역의 두 가지 영역의 주소만 가지고 웨어 레벨링을 구현함으로써, 적은 오버헤드로 웨어 레벨링이 가능하다. 이때, 상기 시작 영역은 스타트 갭 영역 내에서 첫 번째 자료가 들어가는 위치이며, 상기 갭 영역은 현재 사용하지 않고 비어 있는 영역이다.
상기 도 3에 도시한 바와 같이, 최초 시작 영역은 데이터 A가 위치하는 1행을 가리키고 있고, 갭 영역은 최하단의 비어 있는 4행을 가리킨다.
이후, 상기 스타트 갭 영역에 임계값 이상의 쓰기 동작이 발생하면, 상기 웨어 레벨링 제어부(130)는 갭 영역의 바로 전 주소에 있는 데이터(예를 들어 3행의 C 데이터)를 갭 영역(예를 들어 4행)으로 복사하고, 갭 영역을 복사된 데이터가 원래 있던 위치(예를 들어 3행)로 이동시킨다.
이후, 다시 상기 스타트 갭 영역에 임계값 이상의 쓰기 동작이 발생하면, 상기 웨어 레벨링 제어부(130)는 2행에 있던 데이터 B를 기존의 갭 영역인 3행으로 복사하고, 갭 영역을 2행으로 이동시킨다.
이후, 웨어 레벨링이 반복되어 시작 영역의 데이터인 A가 기존 갭 영역인 2행으로 이동하면 시작 영역도 같이 데이터 A의 이동에 따라 2행으로 이동하게 되고, 갭 영역은 1행으로 바뀐다.
이후, 다시 상기 스타트 갭 영역에 임계값 이상의 쓰기 동작이 발생하면, 상기 웨어 레벨링 제어부(130)는 4행의 데이터 C를 갭 영역인 1행으로 복사하고, 갭 영역을 다시 4행으로 이동하는 방식으로 웨어 레벨링을 진행한다.
이와 같이, 웨어 레벨링 방식은 데이터가 저장되는 위치를 일정 쓰기 횟수 단위마다 이동시켜 줌으로써, 메모리 셀이 전체적으로 균일하게 사용될 수 있도록 분포시키는 역할을 한다. 따라서, 일정 쓰기 횟수 단위마다 이동시키는 방법에서는 내구성이 약한 셀과 강한 셀을 구별하지 않기 때문에 쓰기 동작이 자주 발생하는 블록이 내구성이 약한 셀에 대응하는 경우, 메모리 시스템의 내구성을 급속하게 약화시킬 수 있다. 또한, 이러한 문제를 해결하기 위하여 웨어 레벨링을 발생시키는 쓰기 횟수를 작게 설정하면, 웨어 레벨링을 위한 블록 이동의 수를 증가시켜 메모리 시스템 전체의 성능이 저하될 수 있다.
이에 대해, 본 발명의 실시예에서는, 상기 웨어 레벨링 제어부(130)는 내구성이 약한 셀과 내구성이 강한 셀에 대해서 서로 다른 사용 횟수를 적용(또는 쓰기 동작 시에 쓰기 카운터(220)의 값을 다르게 설정)하여 가변적으로 웨어 레벨링을 사용(또는 적용)할 수 있다.
또한, 상기 도 2에 도시한 바와 같이, 상기 상변화 메모리(200)는 증가/감소값 저장 레지스터(210), 쓰기 카운터(220), 스타트 갭 영역(230) 및 메타데이터 영역(240)으로 구성된다. 도 2에 도시된 상변화 메모리(200)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 2에 도시된 구성 요소보다 많은 구성 요소에 의해 상변화 메모리(200)가 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 상변화 메모리(200)가 구현될 수도 있다.
상기 증가/감소값 저장 레지스터(210)는 상기 상변화 메모리(200)(또는 해당 증가/감소값 저장 레지스터(210)에 대응하는 데이터 블록)에 대한 쓰기 요청 시, 상기 쓰기 카운터(220)의 값을 증가시키기 위한 값(또는 증감 단위)을 저장한다.
또한, 상기 증가/감소값 저장 레지스터(210)는 상기 웨어 레벨링 제어부(130)의 제어에 의해 특정 데이터와 관련하여 발생한 에러의 개수(또는 에러 비트의 수)를 근거로 해당 특정 데이터에 대응하는 증가/감소값 저장 레지스터(210)의 값(또는 증감 단위)을 업데이트한다.
상기 쓰기 카운터(220)는 상기 상변화 메모리(200)(또는 상기 특정 데이터에 대응하는 데이터 블록)에 대한 쓰기 동작의 횟수를 세는 카운터이다.
또한, 상기 쓰기 카운터(220)는 미리 설정된 임계값 이상의 값을 가지는 경우, 해당 쓰기 카운터(220)의 값을 0으로 초기화하고, 상기 도 3에 설명된 방법에 따라 해당하는 스타트 갭 영역(230)에서 갭 영역을 이동시켜 웨어 레벨링을 실시하게 된다.
또한, 상기 쓰기 카운터(220)는 증가값이 1로 고정되어 쓰기 동작 1회당 카운터가 1씩 증가하는 일반적인 카운터가 아니라, 상기 증가/감소값 저장 레지스터(210)에 저장된 값(또는 증감 단위)에 따라 해당 쓰기 카운터(220)의 증가값(또는 감소값)을 임의로 설정할 수 있는 카운터로서, 상기 쓰기 카운터(220)의 증가값을 변화시켜 가변적인 웨어 레벨링을 실현할 수 있다.
예를 들어, 상기 증가/감소값 저장 레지스터(210)에 저장된 증가값이 2이고, 임계값이 100으로 설정되어 있는 쓰기 카운터(220)는 1회의 쓰기 동작마다 카운터 값이 2씩 증가하게 되며, 50회의 쓰기 동작이 끝나면 임계값인 100을 초과하게 되므로, 상기 쓰기 카운터(220)의 초기화와 웨어 레벨링을 수행한다.
상기 스타트 갭 영역(230)은 데이터 블록(예를 들어 M개의 데이터 블록)과 갭 영역으로 구성한다.
또한, 상기 상변화 메모리(200)에 대한 메모리 읽기 요청이 있는 경우, 상기 스타트 갭 영역(230)은 상기 상변화 메모리 관리부(110)의 제어에 의해 해당 데이터 블록에 저장된 데이터가 독출된다.
또한, 상기 상변화 메모리(200)에 대한 메모리 쓰기 요청이 있는 경우, 상기 스타트 갭 영역(230)은 상기 상변화 메모리 관리부(110)의 제어에 의해 해당 데이터 블록에 데이터를 저장(또는 기록)한다.
또한, 상기 스타트 갭 영역(230)은 상기 웨어 레벨링 제어부(130)의 제어에 의해 웨어 레벨링 수행에 따라 갭 영역의 위치를 변화시킨다.
상기 메타데이터 영역(240)은 오류 검출 및 오류 정정 코드를 위한 메타데이터를 저장한다.
또한, 상기 메타데이터 영역(240)은 상기 ECC 모듈(120)의 제어에 의해 해당 메타데이터 영역(240)에 대응하는 메타데이터를 근거로 해당 메타데이터 영역(240)과 관련한 스타트 갭 영역에 저장된 데이터의 오류를 검출 및 정정하기 위해 이용된다.
또한, 본 발명의 실시예에 따른 상변화 메모리 관리 장치(10)는 64 바이트 단위(또는 64 바이트 데이터 블록)로 읽기 또는 쓰기를 실시하고, 64 바이트 당 6 비트 오류 정정이 가능한 오류 검출 및 오류 정정 코드를 사용하는 상변화 메모리 셀에 대해 설명하고 있으나, 이에 한정되는 것은 아니며, 설계자의 설계에 따라 다양하게 변형하여 실시할 수 있다. 이때, 64 바이트의 데이터 블록에서 6 비트의 오류를 정정하기 위해서는 60 비트의 메타데이터가 필요하다. 또한, 한 개의 스타트 갭 영역과 메타데이터영역은 M개의 데이터 블록과 메타데이터 블록으로 이루어지며, 각 데이터 블록은 64 바이트, 메타데이터 블록은 60 비트로 구성한다. 여기서, 읽기/쓰기 단위인 데이터 블록의 크기와 오류 정정 코드의 성능과 메타데이터 블록의 크기, 한 개의 스타트 갭 영역으로 묶인 데이터 블록의 개수 등은 상변화 메모리 관리 장치(10)(또는 상변화 메모리 시스템)의 설계에 따라 달라질 수 있다.
도 4는 본 발명의 실시예에 따른 가변적 웨어 레벨링을 위한 쓰기 카운터 증가값에 대한 상태 다이어그램을 나타낸 도이다. 여기서, 상기 상태 다이어그램에서 원 안의 숫자는 현재 쓰기 카운터(220)의 상태를 나타낸다. 상기 현재 쓰기 카운터(220)의 상태는 상태 변화를 상태 다이어그램을 통해 나타내기 위해 임의로 설정된 값이며, 적용에 따라 달라질 수 있다. 또한, 상태 변화 시, 슬래쉬 기호(/) 왼쪽의 값은 입력값을 나타내고, 오른쪽의 값은 해당 시점의 상기 쓰기 카운터(220)의 동작을 나타낸다. 또한, 화살표는 현재 상태에서 입력값이 들어왔을 때의 상태 변화를 나타낸다.
또한, 원 안의 숫자는 상기 쓰기 카운터(220)의 증가값을 나타내며, 상기 상변화 메모리(200)의 해당 영역에 쓰기 동작이 이루어질 때마다, 증가값만큼 값을 증가시킨다.
또한, 상기 상변화 메모리(200)가 읽기 동작을 실시할 때, 상기 ECC 모듈(120)은 몇 개의 오류가 발생하는지를 메타데이터와 에러 정정 코드(또는 오류 검출 코드)를 이용하여 검출한다.
또한, 상기 웨어 레벨링 제어부(130)는 상기 검출된 오류 발생 개수에 따라 상기 쓰기 카운터(220)의 증가값을 조절한다.
본 발명의 실시예에서는 오류의 개수가 2개를 초과하면, 상기 쓰기 카운터(220)의 상태가 '00'에서 '01'로 변화하여 증가값이 1에서 2로 증가하고, 오류의 개수가 2개 이하이면 상기 쓰기 카운터(220)의 상태가 '01'에서 '00'으로 변화하여 증가값이 2에서 1로 감소하게 된다.
같은 방법으로, 오류의 개수가 3개를 초과화면, 상기 쓰기 카운터(220)의 상태가 '01'에서 '10'로 변화하여 증가값이 2에서 4로 증가하고, 오류의 개수가 3개 이하이면 상기 쓰기 카운터(220)의 상태가 '10'에서 '01'로 변화하여 증가값이 4에서 2로 감소하게 된다.
또한, 같은 방법으로, 오류의 개수가 4개를 초과하면, 상기 쓰기 카운터(220)의 상태가 '10'에서 '11'로 변화하여 증가값이 4에서 8로 증가하고, 오류의 개수가 4개 이하이면 상기 쓰기 카운터(200)의 상태가 '11'에서 '10'으로 변화하여 증가값이 8에서 4로 감소하게 된다.
또한, 현재 증가값에 해당하는 범위 안의 오류의 개수가 들어오면, 상기 쓰기 카운터(220)의 증가값은 변하지 않고, 현재값을 유지한다.
위와 같이, 읽기 동작 시, 현재 영역에서 발생하는 오류의 개수에 따라, 쓰기 카운터(220)의 증가값을 조절하여, 카운터가 임계값을 가질 때까지의 속도를 변화시켜, 웨어 레벨링의 속도를 변화시켜 가변적인 웨어 레벨링을 수행할 수 있다.
도 5는 본 발명의 실시예에 따른 가변적 웨어 레벨링을 위한 쓰기 카운터 임계값 감소에 대한 상태 다이어그램을 나타낸 도이다.
앞선 상기 도 4에 따른 본 발명의 실시예에서는 쓰기 카운터(220)의 증가값을 변화시키는 방식에 대해서 설명하고 있으나, 상기 도 5에서는 다른 쓰기 카운터(220)를 사용한다. 여기서, 상기 상태 다이어그램에서 원 안의 숫자는 현재 쓰기 카운터(220)의 상태를 나타낸다. 상기 현재 쓰기 카운터(220)의 상태는 상태 변화를 상태 다이어그램을 통해 나타내기 위해 임의로 설정된 값이며, 적용에 따라 달라질 수 있다. 또한, 상태 변화 시, 슬래쉬 기호(/) 왼쪽의 값은 입력값을 나타내고, 오른쪽의 값은 해당 시점의 상기 쓰기 카운터(220)의 동작을 나타낸다. 또한, 화살표는 현재 상태에서 입력값이 들어왔을 때의 상태 변화를 나타낸다.
즉, 상기 도 5의 방식으로 구현하는 경우, 상기 쓰기 카운터(220)는 증가 카운터가 아니라 감소하는 카운터로 변경한다.
최초 임계값으로 상기 쓰기 카운터(220)의 값을 초기화하고, 쓰기 동작이 발생할 때마다 값을 1씩 감소시킨다.
또한, 상기 쓰기 카운터(220)의 값이 0이 되면, 웨어 레벨링을 실행하고, 상기 쓰기 카운터(220)의 값은 임계값으로 초기화한다.
또한, 본 발명의 실시예에 따른 상기 도 5의 방식으로 상기 쓰기 카운터(220)를 구현하는 경우, 상기 쓰기 카운터(220)의 현재 값을 조절하여 웨어 레벨링의 속도를 조절한다.
즉, 최초 오류의 개수가 2개 이하인 '00' 상태일 경우, 쓰기 동작에 따라 상기 쓰기 카운터(220)의 값을 변화시키지 않는다.
또한, 오류의 개수가 2개 초과 3개 이하가 될 경우, 상기 쓰기 카운터(220)의 상태가 '01'로 변경되며, 현재 쓰기 카운터(220)가 저장하고 있는 값을 1/2하여 웨어 레벨링을 조금 더 빨리 진행시킬 수 있도록 구성한다.
또한, 오류의 개수가 3개 초과 4개 이하가 될 경우, 상기 쓰기 카운터(220)의 상태가 '10'으로 변경되며, 현재 쓰기 카운터(220)가 저장하고 있는 값을 1/2하여 웨어 레벨링을 조금 더 빨리 진행시킬 수 있도록 구성한다.
다시 오류의 개수가 4개를 초과할 경우, 상기 쓰기 카운터(220)의 상태가 '11'로 변경되며, 현재 쓰기 카운터(220)가 저장하고 있는 값을 1/2하여 웨어 레벨링을 조금 더 빨리 진행시킬 수 있도록 구성한다.
또한, 오류의 개수가 감소할 경우에는, 상기 쓰기 카운터(220)의 값을 2배씩 증가시켜 웨어 레벨링을 천천히 진행하도록 조정한다.
또한, 현재 표시한 상태의 오류 개수 범위를 벗어나지 않는 오류가 발생하는 경우, 현재 쓰기 카운터(220)의 값을 유지하며, 쓰기 동작이 발생할 때마다 쓰기 카운터(220)의 값을 1씩 감소시킨다.
본 발명의 실시예에 따른 감소값, 감소값을 판단하기 위한 오류의 개수, 감소값의 개수(또는 상태도에서 상태의 개수)는 상기 상변화 메모리(200)의 내구성에 따라 달라질 수 있으며, 이러한 값은 메모리 테스트(또는 상기 상변화 메모리 테스트) 시에 초기화될 수 있다.
이와 같이, 오류 검출 및 정정 코드 사용시, 데이터 읽기에서 발생한 오류의 개수를 근거로 가변적으로 웨어 레벨링을 적용할 수 있다.
이하에서는, 본 발명에 따른 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 방법을 도 1 내지 도 6을 참조하여 상세히 설명한다.
도 6은 본 발명의 실시예에 따른 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 방법을 나타낸 흐름도이다.
먼저, 상변화 메모리 관리부(110)는 메모리 요청이 상변화 메모리(200)에 대한 쓰기 요청인지 또는 읽기 요청인지 여부를 확인한다.
일 예로, 상기 상변화 메모리 관리부(110)는 제 1 메모리 요청이 상기 상변화 메모리(200)에 대한 쓰기 요청인지 또는 읽기 요청인지 여부를 확인한다(S610).
상기 확인 결과, 상기 메모리 요청이 상변화 메모리(200)에 대한 읽기 요청인 경우, 상기 상변화 메모리 관리부(110)는 상기 상변화 메모리(200)에서 데이터 읽기 동작을 수행한다.
일 예로, 상기 확인 결과, 상기 제 1 메모리 요청이 상기 읽기 요청일 때, 상기 상변화 메모리 관리부(110)는 64 바이트 단위(또는 64 바이트 데이터 블록)로 관리되는 상기 상변화 메모리(200)에서 상기 제 1 메모리 요청에 대응하는 제 1 데이터에 대한 읽기 동작을 수행한다. 이때, 상기 제 1 데이터는 64 바이트일 수 있다(S620).
이후, ECC 모듈(120)(또는 상기 ECC 모듈(120)에 포함된 ECC 디코더(122))은 상기 읽기 동작에 따라 읽은 데이터에 대응하는 메타데이터와 에러 정정 코드를 근거로 상기 읽은 데이터(또는 상기 읽기 동작에 따라 읽은 데이터)에 대한 데이터 검증을 실행(또는 수행)한다.
또한, 상기 ECC 모듈(120)은 상기 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 해당 데이터(또는 상기 읽은 데이터)와 관련하여 발생한 에러의 개수(또는 에러 비트의 수)를 확인한다.
일 예로, 상기 ECC 모듈(120)은 상기 읽은 제 1 데이터에 대응하는 60 비트의 제 1 메타데이터 및 상기 제 1 데이터에 대응하는 제 1 에러 정정 코드를 근거로 상기 제 1 데이터에 대한 데이터 검증을 실행한다.
또한, 상기 ECC 모듈(120)은 상기 제 1 데이터에 대한 데이터 검증 실행 결과에 따른 해당 제 1 데이터에 대응하는 에러의 개수(예를 들어 2개)를 확인한다(S630).
이후, 웨어 레벨링 제어부(130)는 상기 확인된 해당 데이터와 관련하여 발생한 에러의 개수(또는 에러 비트의 수)를 근거로 상기 읽은 데이터에 대응하는 증가/감소값 저장 레지스터(210)의 값(또는 증감 단위)을 업데이트한다.
일 예로, 상기 웨어 레벨링 제어부(130)는 상기 제 1 데이터에 대응하는 에러의 개수(예를 들어 2개)를 근거로 상기 제 1 데이터에 대응하는 제 1 증가/감소값 저장 레지스터(210)의 값(또는 증가값/감소값)을 기존 값인 2에서 4로 미리 설정된 값인 2만큼 증가시킨다(S640).
또한, 상기 확인 결과, 상기 메모리 요청이 상변화 메모리(200)에 대한 쓰기 요청인 경우, 상기 ECC 모듈(120)(또는 상기 ECC 모듈(120)에 포함된 ECC 인코더(121))은 상기 상변화 메모리(200)에 쓰고자 하는 데이터에 대한 메타데이터를 생성한다.
일 예로, 상기 확인 결과, 상기 제 1 메모리 요청이 상기 쓰기 요청일 때, 상기 ECC 모듈(120)은 64 바이트 단위(또는 64 바이트 데이터 블록)로 관리되는 상기 상변화 메모리(200)에 쓰고자 하는 제 2 데이터에 대한 제 2 메타데이터를 생성한다(S650).
이후, 상기 상변화 메모리 관리부(110)는 상기 쓰고자 하는 데이터와 상기 쓰고자 하는 데이터에 대응하는 메타데이터를 근거로 상기 상변화 메모리(200)에 대한 쓰기 동작을 수행(또는 실행)한다.
일 예로, 상기 상변화 메모리 관리부(110)는 상기 쓰고자 하는 제 2 데이터와 상기 제 2 데이터에 대응하는 제 2 메타데이터를 근거로 상기 상변화 메모리(200)에 대한 쓰기 동작을 수행한다(S660).
이후, 상기 상변화 메모리 관리부(110)는 새로 쓰여진 데이터와 메타데이터에 대해 다시 읽기 동작을 수행한다. 이때, 상기 새로 쓰여진 데이터는 오류가 없는 경우 앞선 상기 쓰고자 하는 데이터와 동일할 수 있으며, 오류가 있는 경우 앞선 상기 쓰고자 하는 데이터와 다른 상태의 데이터일 수 있다.
일 예로, 상기 상변화 메모리 관리부(110)는 상기 새로 쓰여진 데이터와 해당 새로 쓰여진 데이터와 관련한 메타데이터에 대해서 다시 읽기 동작을 수행하여 제 3 데이터와 제 3 메타데이터를 확인한다(S670).
이후, 상기 상변화 메모리 관리부(110)는 상기 쓰고자 하는 데이터와 메타데이터를 근거로 상기 읽기 동작에 따라 다시 읽은 데이터와 메타데이터(또는 상기 다시 읽은 데이터에 대응하는 메타데이터)에 대한 검증을 실행(또는 수행)한다.
또한, 상기 상변화 메모리 관리부(110)는 상기 다시 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 해당 다시 읽은 데이터와 관련하여 발생한 에러의 개수(또는 에러 비트의 수)를 확인한다.
일 예로, 상기 상변화 메모리 관리부(110)는 상기 쓰고자 하는 데이터인 제 2 데이터와 그에 대응하는 제 2 메타데이터를 근거로 상기 제 2 데이터와 제 3 데이터, 제 2 메타데이터와 제 3 메타데이터를 비교하여, 상기 제 3 데이터와 상기 제 3 메타데이터에 대한 데이터 검증을 실행한다.
또한, 상기 상변화 메모리 관리부(110)는 상기 제 3 데이터에 대한 데이터 검증 실행 결과에 따른 해당 제 3 데이터에 대응하는 에러의 개수(예를 들어 2개)를 확인한다(S680).
이후, 상기 웨어 레벨링 제어부(130)는 상기 확인된 해당 다시 읽은 데이터와 관련하여 발생한 에러의 개수(또는 에러 비트의 수)를 근거로 상기 다시 읽은 데이터에 대응하는 증가/감소값 저장 레지스터(210)의 값(또는 증감 단위)을 업데이트한다.
일 예로, 상기 웨어 레벨링 제어부(130)는 상기 제 3 데이터에 대응하는 에러의 개수(예를 들어 2개)를 근거로 상기 제 3 데이터에 대응하는 제 3 증가/감소값 저장 레지스터(210)의 값(또는 증가값/감소값)을 기존 값인 2에서 4로 미리 설정된 값인 2만큼 증가시킨다(S690).
이후, 상기 상변화 메모리 관리부(110)는 해당 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리(200) 상의 저장 공간에 대응하는 상기 증가/감소값 저장 레지스터(210)에 저장된 증감 단위를 근거로 해당 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리(200) 상의 저장 공간에 대응하는 쓰기 카운터(220)의 카운터 값을 증가시킨다.
일 예로, 상기 상변화 메모리 관리부(110)는 상기 제 2 데이터에 대응하는 제 2 증가/감소값 저장 레지스터(210)에 저장된 증감 단위인 2를 근거로 상기 제 2 데이터에 대응하는 제 2 쓰기 카운터(220)의 카운터 값을 기존 값인 50에서 2만큼 증가시켜 52로 업데이트한다(S700).
이후, 상기 웨어 레벨링 제어부(130)는 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터(220)의 카운터 값이 미리 설정된 임계값을 초과하는지 여부를 판단한다.
일 예로, 상기 웨어 레벨링 제어부(130)는 상기 제 2 데이터에 대응하는 제 2 쓰기 카운터의 카운터 값(예를 들어 52)이 미리 설정된 임계값(예를 들어 100)을 초과하는지 여부를 판단한다(S710).
상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터(220)의 카운터 값이 상기 임계값을 초과하는 경우, 상기 웨어 레벨링 제어부(130)는 상기 쓰고자 하는 데이터에 대응하는 스타트 갭 영역에 대한 정보를 근거로 해당 스타트 갭 영역에서 갭 영역을 이동시켜 웨어 레벨링을 수행한다.
일 예로, 상기 판단 결과, 상기 제 2 데이터에 대응하는 제 2 쓰기 카운터에 대한 카운터 값의 업데이트 이후, 상기 제 2 데이터에 대응하는 제 2 쓰기 카운터의 카운터 값(예를 들어 52)이 미리 설정된 제 2 임계값인 50을 초과할 때, 상기 웨어 레벨링 제어부(130)는 상기 제 2 데이터에 대응하는 제 2 스타트 갭 영역에 대한 정보를 근거로 웨어 레벨링을 수행하여, 갭 영역을 제 1 영역에서 제 2 영역으로 이동한다(S720).
또한, 상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터(220)의 카운터 값이 상기 임계값을 초과하지 않는 경우(또는 상기 쓰기 카운터(220)의 카운터 값이 상기 임계값 이하인 경우), 상기 웨어 레벨링 제어부(130)는 현재 커맨드(또는 상기 메모리 요청)에 의한 동작을 종료(또는 새로운 메모리 요청을 수신하는 초기 단계로 복귀)한다.
일 예로, 상기 판단 결과, 상기 제 2 데이터에 대응하는 제 2 쓰기 카운터에 대한 카운터 값의 업데이트 이후, 상기 제 2 데이터에 대응하는 제 2 쓰기 카운터의 카운터 값(예를 들어 52)이 상기 임계값(예를 들어 100)을 초과하지 않을 때, 상기 웨어 레벨링 제어부(130)는 전체 과정을 종료한다(S730).
본 발명의 실시예는 앞서 설명된 바와 같이, 오류 검출 및 정정 코드 사용시, 데이터 읽기에서 발생한 오류의 개수를 근거로 가변적으로 웨어 레벨링을 적용하여, 웨어 레벨링 기법 적용에 의한 성능 저하를 최소화하면서 동시에 전체 메모리 셀의 쓰기 횟수를 셀 고유의 내구성에 대비하여 최대한 균일하게 유지함으로써 오류 발생을 줄일 수 있다.
전술된 내용은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
본 발명은 오류 검출 및 정정 코드 사용시, 데이터 읽기에서 발생한 오류의 개수를 근거로 가변적으로 웨어 레벨링을 적용함으로써, 웨어 레벨링 기법 적용에 의한 성능 저하를 최소화하면서 동시에 전체 메모리 셀의 쓰기 횟수를 셀 고유의 내구성에 대비하여 최대한 균일하게 유지함으로써 오류 발생을 줄일 수 있는 것으로 메모리 분야 등의 정보 저장 디바이스에서 광범위하게 이용될 수 있다.
10: 상변화 메모리 관리 장치 100: 상변화 메모리 컨트롤러
200: 상변화 메모리 110: 상변화 메모리 관리부
120: ECC 모듈 121: ECC 인코더
122: ECC 디코더 130: 웨어 레벨링 제어부
210: 증가/감소값 저장 레지스터 220: 쓰기 카운터
230: 스타트 갭 영역 240: 메타데이터 영역

Claims (11)

  1. 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 방법에 있어서,
    상변화 메모리 관리부에 의해, 메모리 요청이 상변화 메모리에 대한 쓰기 요청인지 또는 읽기 요청인지 여부를 확인하는 단계;
    상기 확인 결과, 상기 메모리 요청이 상변화 메모리에 대한 쓰기 요청일 때, ECC 모듈에 의해, 상기 상변화 메모리에 쓰고자 하는 데이터에 대한 메타데이터를 생성하는 단계;
    상기 상변화 메모리 관리부에 의해, 상기 쓰고자 하는 데이터와 상기 쓰고자 하는 데이터에 대응하는 메타데이터를 근거로 상기 상변화 메모리에 대한 쓰기 동작을 수행하는 단계;
    상기 상변화 메모리 관리부에 의해, 새로 쓰여진 데이터에 대한 데이터 읽기 동작을 수행하는 단계;
    상기 상변화 메모리 관리부에 의해, 상기 쓰고자 하는 데이터와 상기 쓰고자 하는 데이터에 대응하는 메타데이터를 근거로 상기 읽기 동작에 따라 다시 읽은 데이터 및 상기 다시 읽은 데이터에 대응하는 메타데이터에 대한 데이터 검증을 실행하는 단계;
    상기 상변화 메모리 관리부에 의해, 상기 다시 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 상기 다시 읽은 데이터와 관련하여 발생한 에러의 개수를 확인하는 단계; 및
    웨어 레벨링 제어부에 의해, 상기 확인된 다시 읽은 데이터와 관련하여 발생한 에러의 개수를 근거로 상기 다시 읽은 데이터에 대응하는 증가/감소값 저장 레지스터의 증감 단위를 업데이트하는 단계를 포함하는 상변화 메모리 관리 방법.
  2. 제 1 항에 있어서,
    상기 상변화 메모리 관리부에 의해, 상기 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리 상의 저장 공간에 대응하는 증가/감소값 저장 레지스터에 저장된 증감 단위를 근거로 상기 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리 상의 저장 공간에 대응하는 쓰기 카운터의 카운터 값을 증가시키는 단계;
    상기 웨어 레벨링 제어부에 의해, 상기 쓰기 카운터의 카운터 값이 미리 설정된 임계값을 초과하는지 여부를 판단하는 단계; 및
    상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터의 카운터 값이 상기 임계값을 초과할 때, 상기 웨어 레벨링 제어부에 의해, 웨어 레벨링을 수행하는 단계를 더 포함하는 것을 특징으로 하는 상변화 메모리 관리 방법.
  3. 제 2 항에 있어서,
    상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터의 카운터 값이 상기 임계값을 초과하지 않을 때, 상기 웨어 레벨링 제어부에 의해, 현재 커맨드에 의한 동작을 종료하는 단계를 더 포함하는 것을 특징으로 하는 상변화 메모리 관리 방법.
  4. 제 1 항에 있어서,
    상기 확인 결과, 상기 메모리 요청이 상변화 메모리에 대한 읽기 요청일 때, 상기 상변화 메모리 관리부에 의해, 상기 상변화 메모리에서 데이터 읽기 동작을 수행하는 단계;
    상기 ECC 모듈에 의해, 상기 읽기 동작에 따라 읽은 데이터에 대응하는 메타데이터와 에러 정정 코드를 근거로 상기 읽은 데이터에 대한 데이터 검증을 실행하는 단계;
    상기 ECC 모듈에 의해, 상기 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 상기 읽은 데이터와 관련하여 발생한 에러의 개수를 확인하는 단계; 및
    상기 웨어 레벨링 제어부에 의해, 상기 읽은 데이터와 관련하여 발생한 에러의 개수를 근거로 상기 읽은 데이터에 대응하는 증가/감소값 저장 레지스터의 증감 단위를 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 상변화 메모리 관리 방법.
  5. 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치에 있어서,
    메모리 요청이 상변화 메모리에 대한 쓰기 요청일 때, 상기 상변화 메모리에 쓰고자 하는 데이터에 대한 메타데이터를 생성하는 ECC 모듈;
    메모리 요청이 상기 상변화 메모리에 대한 쓰기 요청인지 또는 읽기 요청인지 여부를 확인하고, 상기 상변화 메모리에 쓰고자 하는 데이터와 상기 쓰고자 하는 데이터에 대응하는 메타데이터를 근거로 상기 상변화 메모리에 대한 쓰기 동작을 수행하고, 새로 쓰여진 데이터와 상기 새로 쓰여진 데이터에 대응하는 메타데이터에 대한 데이터 읽기 동작을 수행하고, 상기 쓰고자 하는 데이터와 상기 쓰고자 하는 데이터에 대응하는 메타데이터를 근거로 상기 읽기 동작에 따라 다시 읽은 데이터 및 상기 다시 읽은 데이터에 대응하는 메타데이터에 대한 데이터 검증을 실행하고, 상기 다시 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 상기 다시 읽은 데이터와 관련하여 발생한 에러의 개수를 확인하는 상변화 메모리 관리부; 및
    상기 확인된 다시 읽은 데이터와 관련하여 발생한 에러의 개수를 근거로 상기 다시 읽은 데이터에 대응하는 증가/감소값 저장 레지스터의 증감 단위를 업데이트하는 웨어 레벨링 제어부를 포함하는 상변화 메모리 관리 장치.
  6. 제 5 항에 있어서,
    상기 상변화 메모리 관리부는,
    상기 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리 상의 저장 공간에 대응하는 증가/감소값 저장 레지스터에 저장된 증감 단위를 근거로 상기 쓰고자 하는 데이터가 기록되는 상기 상변화 메모리 상의 저장 공간에 대응하는 쓰기 카운터의 카운터 값을 증가시키는 것을 특징으로 하는 상변화 메모리 관리 장치.
  7. 제 6 항에 있어서,
    상기 웨어 레벨링 제어부는,
    상기 쓰기 카운터의 카운터 값이 미리 설정된 임계값을 초과하는지 여부를 판단하고, 상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터의 카운터 값이 상기 임계값을 초과할 때, 웨어 레벨링을 수행하는 것을 특징으로 하는 상변화 메모리 관리 장치.
  8. 제 7 항에 있어서,
    상기 웨어 레벨링 제어부는,
    상기 판단 결과, 상기 쓰고자 하는 데이터에 대응하는 쓰기 카운터의 카운터 값이 상기 임계값을 초과하지 않을 때, 현재 커맨드에 의한 동작을 종료하는 것을 특징으로 하는 상변화 메모리 관리 장치.
  9. 제 5 항에 있어서,
    상기 상변화 메모리 관리부는,
    상기 확인 결과, 상기 메모리 요청이 상변화 메모리에 대한 읽기 요청일 때, 상기 상변화 메모리에서 데이터 읽기 동작을 수행하는 것을 특징으로 하는 상변화 메모리 관리 장치.
  10. 제 9 항에 있어서,
    상기 ECC 모듈은,
    상기 읽기 동작에 따라 읽은 데이터에 대응하는 메타데이터와 에러 정정 코드를 근거로 상기 읽은 데이터에 대한 데이터 검증을 실행하고, 상기 읽은 데이터에 대한 데이터 검증 실행 결과에 따른 상기 읽은 데이터와 관련하여 발생한 에러의 개수를 확인하는 것을 특징으로 하는 상변화 메모리 관리 장치.
  11. 제 10 항에 있어서,
    상기 웨어 레벨링 제어부는,
    상기 읽은 데이터와 관련하여 발생한 에러의 개수를 근거로 상기 읽은 데이터에 대응하는 증가/감소값 저장 레지스터의 증감 단위를 업데이트하는 것을 특징으로 하는 상변화 메모리 관리 장치.
KR1020160129720A 2016-10-07 2016-10-07 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법 KR101899343B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160129720A KR101899343B1 (ko) 2016-10-07 2016-10-07 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160129720A KR101899343B1 (ko) 2016-10-07 2016-10-07 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20180038725A KR20180038725A (ko) 2018-04-17
KR101899343B1 true KR101899343B1 (ko) 2018-09-17

Family

ID=62083004

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160129720A KR101899343B1 (ko) 2016-10-07 2016-10-07 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101899343B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220085100A (ko) * 2020-12-14 2022-06-22 현대오토에버 주식회사 플래시 메모리 ecc 모듈의 진단 장치 및 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102610821B1 (ko) 2018-11-15 2023-12-06 삼성전자주식회사 내구성 저하를 판단하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100306582A1 (en) 2009-05-29 2010-12-02 Jung Chul Han Method of operating nonvolatile memory device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100306582A1 (en) 2009-05-29 2010-12-02 Jung Chul Han Method of operating nonvolatile memory device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220085100A (ko) * 2020-12-14 2022-06-22 현대오토에버 주식회사 플래시 메모리 ecc 모듈의 진단 장치 및 방법
KR102418060B1 (ko) 2020-12-14 2022-07-07 현대오토에버 주식회사 플래시 메모리 ecc 모듈의 진단 장치 및 방법

Also Published As

Publication number Publication date
KR20180038725A (ko) 2018-04-17

Similar Documents

Publication Publication Date Title
US8694715B2 (en) Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US10613781B2 (en) Apparatus and method for determining an operating condition of a memory cell based on cycle information
US10790035B2 (en) Method of operating storage device
US8819503B2 (en) Apparatus and method for determining an operating condition of a memory cell based on cycle information
US9047955B2 (en) Adjusting operating parameters for memory cells based on wordline address and cycle information
US8503237B1 (en) System and method for data recovery in a solid state storage device
KR101522744B1 (ko) 새로운 불량 블록 검출
US20160077753A1 (en) Determining bias information for offsetting operating variations in memory cells
US8122295B2 (en) Memory systems and methods of detecting distribution of unstable memory cells
JP5629391B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP5918284B2 (ja) メモリセルの抵抗偏移を逆転させるためのバイアス信号のメモリセルへの印加
US10552063B2 (en) Background mitigation reads in a non-volatile memory system
WO2009053963A2 (en) Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US9449684B2 (en) Storage control device, storage device, information processing system, and storage control method
CN109599143B (zh) 具有读阈值机制的存储系统及其操作方法
US20150039842A1 (en) Data storage system with dynamic read threshold mechanism and method of operation thereof
KR20160014030A (ko) 솔리드-스테이트 스토리지 디바이스들에서의 판독 전압 계산
TW201545161A (zh) 非揮發性記憶體裝置讀取干擾管理方法
CN112447260B (zh) 使用阈值电压分布之间的间隔来调整读取和写入电压
US10586601B2 (en) Semiconductor memory device and read control method thereof
TW201611018A (zh) 非揮發性記憶體裝置進行耗損管理之方法
US20210216395A1 (en) Bit error rate based dynamic program step characteristic adjustment
JP2010079486A (ja) 半導体記録装置
KR101899343B1 (ko) 오류 검출 및 오류 정정 코드를 이용한 상변화 메모리 관리 장치 및 그 방법
US9898406B2 (en) Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant