KR20160105625A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20160105625A
KR20160105625A KR1020150028334A KR20150028334A KR20160105625A KR 20160105625 A KR20160105625 A KR 20160105625A KR 1020150028334 A KR1020150028334 A KR 1020150028334A KR 20150028334 A KR20150028334 A KR 20150028334A KR 20160105625 A KR20160105625 A KR 20160105625A
Authority
KR
South Korea
Prior art keywords
data
ecc
unit
error
correction code
Prior art date
Application number
KR1020150028334A
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 KR1020150028334A priority Critical patent/KR20160105625A/ko
Priority to US14/790,787 priority patent/US20160253239A1/en
Priority to CN201510662233.2A priority patent/CN105931673A/zh
Publication of KR20160105625A publication Critical patent/KR20160105625A/ko

Links

Images

Classifications

    • 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/0673Single storage device
    • 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/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • 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
    • 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

Abstract

본 발명은 데이터의 신뢰성을 향상시키기 위한 데이터 가공 동작을 수행할 수 있는 데이터 저장 장치 및 그것의 동작 방법에 관한 것이다. 상기 데이터 저장 장치의 동작 방법은, 쓰기 데이터를 에러 정정 코드(ECC) 인코딩하고, 에러 정정 코드(ECC) 인코딩된 데이터에 에러를 삽입하고, 그리고 에러가 삽입된 데이터를 저장하는 것을 포함한다.

Description

데이터 저장 장치 및 그것의 동작 방법{DATA STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 데이터의 신뢰성을 향상시키기 위한 데이터 가공 동작을 수행할 수 있는 데이터 저장 장치 및 그것의 동작 방법에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 데이터 저장 장치는 USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, UFS(Universal Flash Storage) 장치, 솔리드 스테이트 드라이브(Solid State Drive, 이하, SSD라 칭함)를 포함한다.
메모리 장치의 메모리 셀들에 저장된 데이터는 메모리 셀들 간의 간섭(interference)에 의해서 데이터가 변경된 것처럼 센싱될 수 있다. 다른 예로서, 메모리 장치의 메모리 셀들에 저장된 데이터는 메모리 셀들 간의 방해(disturbance) 또는 커플링(coupling)에 의해서 변경될 수 있다. 다른 예로서, 메모리 장치의 메모리 셀들에 저장된 데이터는 반복적인 소거/프로그램 동작에 의한 메모리 셀의 마모로 인해서 변경될 수 있다. 다양한 원인에 의해서 메모리 셀들에 저장된 데이터가 변경된 것처럼 센싱되거나 변경된 경우, 메모리 셀들에 저장된 데이터는 에러를 포함하는 것으로 판단될 수 있다.
특정한 데이터 패턴이 메모리 장치의 메모리 셀들에 저장되는 경우, 간섭, 방해, 또는 커플링의 영향이 커질 수 있고, 그로 인해서 메모리 셀들에 저장된 데이터는 더 많은 에러를 포함할 수 있다. 데이터 저장 장치는 메모리 셀들에 저장된 데이터의 에러율을 낮추기 위해서, 메모리 셀들에 저장될 데이터에 대해서 랜덤화 동작을 수행할 수 있다. 그리고, 데이터 저장 장치는 메모리 셀들로부터 독출된 데이터에 대해서 디-랜덤화 동작을 수행할 수 있다.
본 발명의 실시 예는 데이터의 신뢰성을 향상시키기 위한 데이터 가공 동작을 수행할 수 있는 데이터 저장 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은, 쓰기 데이터를 에러 정정 코드(ECC) 인코딩하고, 에러 정정 코드(ECC) 인코딩된 데이터에 에러를 삽입하고, 그리고 에러가 삽입된 데이터를 저장하는 것을 포함한다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 불휘발성 메모리 장치; 상기 불휘발성 메모리 장치에 저장될 쓰기 데이터를 에러 정정 코드(ECC) 처리하는 에러 정정 코드(ECC) 유닛; 에러 정정 코드(ECC) 처리된 데이터에 에러를 삽입하는 에러 삽입 유닛; 에러가 삽입된 데이터를 랜덤화하는 랜덤화 유닛; 그리고 랜덤화된 데이터를 상기 불휘발성 메모리 장치에 저장하는 컨트롤 유닛을 포함한다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은, 쓰기 데이터를 에러 정정 코드(ECC) 인코딩하고, 에러 정정 코드(ECC) 인코딩된 데이터에 에러를 삽입하고, 에러가 삽입된 데이터를 랜덤화하고, 그리고 랜덤화된 데이터를 저장하는 것을 포함한다.
본 발명의 실시 예에 따르면 데이터 저장 장치의 신뢰성이 향상될 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 예시적으로 보여주는 블럭도이다.
도 2는 본 발명의 다른 실시 예에 따른 데이터 저장 장치를 예시적으로 보여주는 블럭도이다.
도 3은 본 발명의 실시 예에 따른 데이터 저장 장치의 쓰기 동작을 설명하기 위한 순서도이다.
도 4는 도 3의 순서도에 따라서 처리되는 쓰기 데이터의 변화 과정을 설명하기 위한 도면이다.
도 5 내지 도 7은 도 2의 에러 삽입 단계를 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 데이터 저장 장치의 읽기 동작을 설명하기 위한 순서도이다.
도 9는 도 8의 순서도에 따라서 처리되는 독출 데이터의 변화 과정을 설명하기 위한 도면이다.
도 10은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블럭도이다.
도 11은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블럭도이다.
도 12는 도 11에 도시된 SSD 컨트롤러를 예시적으로 보여주는 블럭도이다.
도 13은 본 발명의 실시 예에 따른 데이터 저장 장치가 장착되는 컴퓨터 시스템을 예시적으로 보여주는 블럭도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 본 명세서에서 특정한 용어들이 사용되었으나. 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서에서 '및/또는'이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, '연결되는/결합되는'이란 표현은 다른 구성 요소와 직접적으로 연결되거나 다른 구성 요소를 통해서 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 '포함한다' 또는 '포함하는'으로 언급된 구성 요소, 단계, 동작 및 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 예시적으로 보여주는 블럭도이다. 데이터 저장 장치(100)는 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트 장치(도시되지 않음)에 의해서 액세스되는 데이터를 저장할 수 있다. 데이터 저장 장치(100)는 메모리 시스템이라고도 불릴 수 있다.
데이터 저장 장치(100)는 호스트 장치와 연결되는 인터페이스 프로토콜에 따라서 다양한 종류의 저장 장치들 중 어느 하나로 제조될 수 있다. 예를 들면, 데이터 저장 장치(100)는 솔리드 스테이트 드라이브(solid state drive, SSD), MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multi media card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal storage bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
데이터 저장 장치(100)는 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들면, 데이터 저장 장치(100)는 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
데이터 저장 장치(100)는 불휘발성 메모리 장치(110)를 포함할 수 있다. 불휘발성 메모리 장치(110)는 데이터 저장 장치(100)의 저장 매체로서 동작할 수 있다. 불휘발성 메모리 장치(110)는, 메모리 셀 영역(111)을 구성하는 메모리 셀에 따라서, 낸드(NAND) 플래시 메모리 장치, 노어(NOR) 플래시 메모리 장치, 강유전체 커패시터를 이용한 강유전체 램(ferroelectric random access memory: FRAM), 티엠알(tunneling magneto-resistive: TMR) 막을 이용한 마그네틱 램(magnetic random access memory: MRAM), 칼코겐 화합물(chalcogenide alloys)을 이용한 상 변화 램(phase change random access memory: PRAM), 전이 금속 산화물(transition metal oxide)을 이용한 저항성 램(resistive random access memory: RERAM) 등과 같은 다양한 형태의 불휘발성 메모리 장치들 중 어느 하나로 구성될 수 있다.
데이터 저장 장치(100)는 컨트롤러(120)를 포함할 수 있다. 컨트롤러(120)는 컨트롤 유닛(121), 랜덤 액세스 메모리(123), 에러 정정 코드(ECC) 유닛(125), 에러 삽입 유닛(127) 그리고 랜덤화 유닛(129)을 포함할 수 있다.
컨트롤 유닛(121)은 컨트롤러(120)의 제반 동작을 제어할 수 있다. 컨트롤 유닛(121)은 호스트 장치로부터 입력된 신호, 명령 또는 요청을 분석하고 처리할 수 있다. 이를 위해서, 컨트롤 유닛(121)은 랜덤 액세스 메모리(123)에 로딩된 펌웨어 또는 소프트웨어를 해독하고 구동할 수 있다. 컨트롤 유닛(121)은 하드웨어 또는 하드웨어와 소프트웨어가 조합된 형태로 구현될 수 있다.
랜덤 액세스 메모리(123)는 컨트롤 유닛(121)에 의해서 구동되는 펌웨어 또는 소프트웨어를 저장할 수 있다. 또한, 랜덤 액세스 메모리(123)는 펌웨어 또는 소프트웨어의 구동에 필요한 데이터, 예를 들면, 어드레스 맵핑 정보와 같은 메타 데이터를 저장할 수 있다. 즉, 랜덤 액세스 메모리(123)는 컨트롤 유닛(121)의 동작 메모리(working memory)로서 동작할 수 있다.
랜덤 액세스 메모리(123)는 호스트 장치로부터 불휘발성 메모리 장치(110)로 또는 불휘발성 메모리 장치(110)로부터 호스트 장치로 전송될 데이터를 임시 저장할 수 있다. 즉, 랜덤 액세스 메모리(123)는 데이터 버퍼 메모리 또는 데이터 캐시(cache) 메모리로서 동작할 수 있다.
에러 정정 코드(ECC) 유닛(125)(이하, ECC 유닛(125)으로 칭함)은 불휘발성 메모리 장치(110)에 저장될 데이터를 ECC 처리할 수 있다. 불휘발성 메모리 장치(110)에 데이터를 저장하는 쓰기 동작 중의 ECC 처리는, ECC 인코딩 동작, 즉, 에러 정정 코드를 생성하는 동작과, 생성된 에러 정정 코드를 부가하는 동작을 포함할 수 있다. 예를 들면, ECC 유닛(125)은 불휘발성 메모리 장치(110)에 저장될 데이터에 대해서 에러 정정 코드를 생성할 수 있다. 그리고 ECC 유닛(125)은 생성된 에러 정정 코드를 불휘발성 메모리 장치(110)에 저장될 데이터에 부가할 수 있다.
불휘발성 메모리 장치(110)에 저장된 데이터를 읽는 읽기 동작 중의 ECC 처리는, ECC 디코딩 동작, 즉, 에러 정정 코드에 근거하여 에러 검사 동작과 에러 정정 동작을 포함할 수 있다. 예를 들면, ECC 유닛(125)은 불휘발성 메모리 장치(110)로부터 독출된 데이터에 에러가 포함되었는지의 여부를 검사할 수 있다. 그리고 ECC 유닛(125)은 에러 정정 능력 범위 내에서 데이터에 포함된 에러를 제거 또는 정정할 수 있다.
다양한 원인에 의해서, 불휘발성 메모리 장치(110)의 메모리 셀들에 저장된 데이터가 원래의 데이터와는 다른 데이터로 독출되면, 이는 데이터가 변경된 것을 의미한다. 에러 관점에서, 데이터의 변경은 데이터에 에러가 포함되었거나 에러가 발생된 것을 의미한다. 에러 삽입 유닛(127)은 불휘발성 메모리 장치(110)에 저장될 데이터에 인위적으로 그리고 랜덤하게 에러를 삽입(insert)할 수 있다. 즉, 에러 삽입 유닛(127)은 에러를 삽입함으로써 불휘발성 메모리 장치(110)에 저장될 데이터를 원래의 데이터와는 다른 데이터로 변경할 수 있다. 에러 삽입 유닛(127)은 소프트웨어, 하드웨어 또는 소프트웨어와 하드웨어가 조합된 형태로 구현될 수 있다.
랜덤화 유닛(129)은 불휘발성 메모리 장치(110)에 저장될 데이터를 랜덤화(randomizing)할 수 있다. 또한, 랜덤화 유닛(129)은 불휘발성 메모리 장치(110)로부터 독출된 데이터를 디-랜덤화(de-randomizing)할 수 있다. 랜덤화 유닛(129)은 데이터(즉, 저장될 데이터 또는 독출된 데이터)와 시드 값(seed value)을 논리 연산하여, 데이터를 랜덤화하거나 디-랜덤화할 수 있다. 랜덤화 유닛(129)은 소프트웨어, 하드웨어 또는 소프트웨어와 하드웨어가 조합된 형태로 구현될 수 있다.
도 2는 본 발명의 다른 실시 예에 따른 데이터 저장 장치를 예시적으로 보여주는 블럭도이다.
데이터 저장 장치(200)는 불휘발성 메모리 장치(210)를 포함할 수 있다. 불휘발성 메모리 장치(210)는 데이터 저장 장치(200)의 저장 매체로서 동작할 수 있다.
데이터 저장 장치(200)는 컨트롤러(220)를 포함할 수 있다. 컨트롤러(220)는 컨트롤 유닛(221), 제1 랜덤 액세스 메모리(222) 그리고 메모리 인터페이스 유닛(223)을 포함할 수 있다.
컨트롤 유닛(221)은 컨트롤러(220)의 제반 동작을 제어할 수 있다. 컨트롤 유닛(121)은 호스트 장치로부터 입력된 신호, 명령 또는 요청을 분석하고 처리할 수 있다. 이를 위해서, 컨트롤 유닛(221)은 제1 랜덤 액세스 메모리(222)에 로딩된 펌웨어 또는 소프트웨어를 해독하고 구동할 수 있다. 컨트롤 유닛(221)은 하드웨어 또는 하드웨어와 소프트웨어가 조합된 형태로 구현될 수 있다.
제1 랜덤 액세스 메모리(222)는 컨트롤 유닛(221)에 의해서 구동되는 펌웨어 또는 소프트웨어를 저장할 수 있다. 또한, 제1 랜덤 액세스 메모리(222)는 펌웨어 또는 소프트웨어의 구동에 필요한 데이터, 예를 들면, 어드레스 맵핑 정보와 같은 메타 데이터를 저장할 수 있다. 즉, 랜덤 액세스 메모리(222)는 컨트롤 유닛(221)의 동작 메모리(working memory)로서 동작할 수 있다.
메모리 인터페이스 유닛(223)은 컨트롤 유닛(221)의 제어에 따라서 불휘발성 메모리 장치(210)에 제어 신호(예를 들면, 커맨드, 어드레스, 동작 제어 신호)를 제공할 수 있다. 그리고 메모리 인터페이스 유닛(223)은 불휘발성 메모리 장치(210)와 데이터를 주고 받을 수 있다. 메모리 인터페이스 유닛(223)은 제2 랜덤 액세스 메모리(224), 에러 정정 코드(ECC) 유닛(225), 에러 삽입 유닛(227) 그리고 랜덤화 유닛(229)을 포함할 수 있다.
제2 랜덤 액세스 메모리(224)는 호스트 장치로부터 불휘발성 메모리 장치(210)로 또는 불휘발성 메모리 장치(210)로부터 호스트 장치로 전송될 데이터를 임시 저장할 수 있다. 즉, 제2 랜덤 액세스 메모리(224)는 데이터 버퍼 메모리 또는 데이터 캐시(cache) 메모리로서 동작할 수 있다.
에러 정정 코드(ECC) 유닛(225)(이하, ECC 유닛(225)으로 칭함)은 불휘발성 메모리 장치(210)에 저장될 데이터를 ECC 처리할 수 있다. 불휘발성 메모리 장치(210)에 데이터를 저장하는 쓰기 동작 중의 ECC 처리는, ECC 인코딩 동작, 즉, 에러 정정 코드를 생성하는 동작과, 생성된 에러 정정 코드를 부가하는 동작을 포함할 수 있다. 예를 들면, ECC 유닛(225)은 불휘발성 메모리 장치(210)에 저장될 데이터에 대해서 에러 정정 코드를 생성할 수 있다. 그리고 ECC 유닛(225)은 생성된 에러 정정 코드를 불휘발성 메모리 장치(210)에 저장될 데이터에 부가할 수 있다.
불휘발성 메모리 장치(210)에 저장된 데이터를 읽는 읽기 동작 중의 ECC 처리는, ECC 디코딩 동작, 즉, 에러 정정 코드에 근거하여 에러 검사 동작과 에러 정정 동작을 포함할 수 있다. 예를 들면, ECC 유닛(225)은 불휘발성 메모리 장치(210)로부터 독출된 데이터에 에러가 포함되었는지의 여부를 검사할 수 있다. 그리고 ECC 유닛(225)은 에러 정정 능력 범위 내에서 데이터에 포함된 에러를 제거 또는 정정할 수 있다.
에러 삽입 유닛(227)은 불휘발성 메모리 장치(210)에 저장될 데이터에 인위적으로 그리고 랜덤하게 에러를 삽입할 수 있다. 즉, 에러 삽입 유닛(227)은 에러를 삽입함으로써 불휘발성 메모리 장치(210)에 저장될 데이터를 원래의 데이터와는 다른 데이터로 변경할 수 있다.
랜덤화 유닛(229)은 불휘발성 메모리 장치(210)에 저장될 데이터를 랜덤화(randomizing)할 수 있다. 또한, 랜덤화 유닛(229)은 불휘발성 메모리 장치(210)로부터 독출된 데이터를 디-랜덤화(de-randomizing)할 수 있다. 랜덤화 유닛(229)은 데이터(즉, 저장될 데이터 또는 독출된 데이터)와 시드 값(seed value)을 논리 연산하여, 데이터를 랜덤화하거나 디-랜덤화할 수 있다.
도 3은 본 발명의 실시 예에 따른 데이터 저장 장치의 쓰기 동작을 설명하기 위한 순서도이다. 설명의 편의를 위해서, 도 3에 도시된 쓰기 동작의 순서도는 도 1에 도시된 데이터 저장 장치(100)의 구성들, 즉, 컨트롤 유닛(121), 랜덤 액세스 메모리(123), ECC 유닛(125), 에러 삽입 유닛(127) 그리고 랜덤화 유닛(129)을 예로 들어 설명될 것이다. 컨트롤 유닛(121), 랜덤 액세스 메모리(123), ECC 유닛(125), 에러 삽입 유닛(127) 그리고 랜덤화 유닛(129)은 도 2에 도시된 데이터 저장 장치(200)의 구성들, 즉, 컨트롤 유닛(221), 제2 랜덤 액세스 메모리(224), ECC 유닛(225), 에러 삽입 유닛(227) 그리고 랜덤화 유닛(229)으로 각각 대체되어 설명될 수 있음은 잘 이해될 것이다.
S110 단계에서, 컨트롤 유닛(121)은 호스트 장치로부터 쓰기 요청과 쓰기 데이터를 수신할 수 있다. 컨트롤 유닛(121)은 쓰기 데이터를 랜덤 액세스 메모리(123)에 저장 할 수 있다.
S120 단계에서, ECC 유닛(125)은 쓰기 데이터를 ECC 처리할 수 있다. 즉, ECC 유닛(125)은 쓰기 데이터에 대해서 에러 정정 코드를 생성하고, 생성된 에러 정정 코드를 쓰기 데이터에 부가하는 ECC 인코딩을 수행할 수 있다.
S130 단계에서, 에러 삽입 유닛(127)은 ECC 처리된 데이터, 즉, ECC 인코딩된 데이터에 에러를 삽입할 수 있다. 에러 삽입 유닛(127)에 의해서 수행되는 에러 삽입 단계는 이하에서 상세히 설명될 것이다.
S140 단계에서, 랜덤화 유닛(129)은 에러 삽입된 데이터를 랜덤화할 수 있다. 즉, 랜덤화 유닛(129)은 에러 삽입된 데이터와 시드 값을 논리 연산하여 랜덤화된 데이터를 생성할 수 있다.
S150 단계에서, 컨트롤 유닛(121)은 랜덤 액세스 메모리(123)에 저장된 랜덤화된 데이터를 불휘발성 메모리 장치(110)에 저장할 수 있다.
트레이드 오프 관계에 있는 성능과 신뢰성을 고려하였을 때, S140 단계는 생략될 수 있다. S140 단계가 생략되는 경우에, S150 단계에서, 컨트롤 유닛(121)은 에러 삽입된 데이터를 불휘발성 메모리 장치(110)에 저장할 수 있다.
도 4는 도 3의 순서도에 따라서 처리되는 쓰기 데이터의 변화 과정을 설명하기 위한 도면이다. 설명의 편의를 위해서, 도 4에 도시된 쓰기 데이터의 변화 과정은 도 1의 데이터 저장 장치(100)의 구성들, 즉, 랜덤 액세스 메모리(123), ECC 유닛(125), 에러 삽입 유닛(127) 그리고 랜덤화 유닛(129)을 예로 들어 설명될 것이다. 랜덤 액세스 메모리(123), ECC 유닛(125), 에러 삽입 유닛(127) 그리고 랜덤화 유닛(129)은 도 2에 도시된 데이터 저장 장치(200)의 구성들, 즉, 제2 랜덤 액세스 메모리(224), ECC 유닛(225), 에러 삽입 유닛(227) 그리고 랜덤화 유닛(229)으로 각각 대체되어 설명될 수 있음은 잘 이해될 것이다.
랜덤 액세스 메모리(123)에 저장된 쓰기 데이터(D)는 ECC 유닛(125)으로 입력될 수 있다. ECC 유닛(125)에 의해서 쓰기 데이터(D)가 ECC 처리되면, 쓰기 데이터(D)는 에러 정정 코드, 즉, 패리티 데이터(PD)가 부가된 ECC 인코딩된 데이터(ED)로 변화될 수 있다. ECC 인코딩된 데이터(ED)는 랜덤 액세스 메모리(123)에 저장될 수 있다.
랜덤 액세스 메모리(123)에 저장된 ECC 인코딩된 데이터(ED)는 에러 삽입 유닛(127)으로 입력될 수 있다. 에러 삽입 유닛(127)에 의해서 ECC 인코딩된 데이터(ED)의 랜덤한 위치에 에러(심볼 ●로 도시됨)가 삽입되면, ECC 인코딩된 데이터(ED)는 에러 삽입된 데이터(ID)로 변화될 수 있다. 에러 삽입된 데이터(ID)는 랜덤 액세스 메모리(123)에 저장될 수 있다.
에러 삽입된 데이터(ID)는 랜덤화 유닛(129)으로 입력될 수 있다. 랜덤화 유닛(129)에 의해서 에러 삽입된 데이터(ID)가 랜덤화되면, 에러 삽입된 데이터(ID)는 랜덤화된 데이터(RD)로 변화될 수 있다. 랜덤화된 데이터(RD)는 랜덤 액세스 메모리(123)에 저장될 수 있다.
ECC 유닛(125)은 동일한 입력 데이터가 입력될 때마다 동일한 출력 데이터를 출력할 수 있다. 시드 값이 동일한 경우에, 랜덤화 유닛(129) 역시 동일한 입력 데이터가 입력될 때마다 동일한 출력 데이터를 출력할 수 있다. 그러나 에러 삽입 유닛(127)은 랜덤하게 에러를 삽입하기 때문에, 동일한 입력 데이터가 입력되더라도 매번 다른 출력 데이터를 출력할 수 있다.
즉, 동일한 쓰기 데이터(D)가 쓰기 요청되더라도, 불휘발성 메모리 장치(110)에 저장되는 랜덤화된 데이터(RD)는, 데이터의 신뢰성을 향상시키기 위한 일련의 데이터 가공 과정, 특히, 에러 삽입 유닛(127)에 의한 가공 동작에 의해서, 매번 달라질 수 있다. 이는, 에러 삽입 유닛(127)에 의해서 동일한 쓰기 데이터(D)가 특정한 패턴의 랜덤화된 데이터(RD)로 고착되는 것이 방지될 수 있음을 의미한다. 동일한 쓰기 데이터(D)가 특정한 패턴의 랜덤화된 데이터(RD)로 고착되지 않으면, 메모리 셀들에 간섭, 방해, 또는 커플링의 영향이 감소되어 데이터 에러율 역시 감소될 수 있다.
도 5 내지 도 7은 도 3의 에러 삽입 단계를 설명하기 위한 도면이다. 에러삽입 단계는 입력 데이터를 구성하는 데이터 비트들 중에서 랜덤한 위치의 적어도 하나를 반전시킴으로써 수행될 수 있다.
즉, 에러 삽입 유닛(127)은 입력 데이터를 구성하는 비트 값들 중 적어도 하나의 비트 값을 다른 값으로 변경할 수 있다. 또한, 에러 삽입 유닛(127)은 랜덤한 위치의 비트 값을 다른 값으로 변경할 수 있다. 도 4 및 도 5를 참조하여 예를 들면, 에러 삽입 유닛(127)은 ECC 인코딩된 데이터의 데이터 부분(D)에 위치한 비트 값이 1인 경우 0으로, 0인 경우 1로 변경할 수 있다. 또한, 에러 삽입 유닛(127)은 ECC 인코딩된 데이터의 패리티 데이터 부분(PD)에 위치한 비트 값이 1인 경우 0으로, 0인 경우 1로 변경할 수 있다.
에러 삽입 유닛(127)은 ECC 유닛(125)의 에러 정정 능력 범위 안에서, 즉, ECC 유닛(125)이 에러 정정할 수 있는 비트의 수를 초과하지 않도록 입력 데이터의 비트 값을 다른 값으로 변경할 수 있다. 도 6을 참조하여 예를 들면, ECC 유닛(125)의 에러 정정 능력이 3비트라고 가정할 때, 에러 삽입 유닛(127)은 3개의 비트 값을 다른 값으로 변경할 수 있다.
도 8은 본 발명의 실시 예에 따른 데이터 저장 장치의 읽기 동작을 설명하기 위한 순서도이다. 설명의 편의를 위해서, 도 8에 도시된 읽기 동작의 순서도는 도 1에 도시된 데이터 저장 장치(100)의 구성들, 즉, 컨트롤 유닛(121), 랜덤 액세스 메모리(123), ECC 유닛(125) 그리고 랜덤화 유닛(129)을 예로 들어 설명될 것이다. 컨트롤 유닛(121), 랜덤 액세스 메모리(123), ECC 유닛(125) 그리고 랜덤화 유닛(129)은 도 2에 도시된 데이터 저장 장치(200)의 구성들, 즉, 컨트롤 유닛(221), 제2 랜덤 액세스 메모리(224), ECC 유닛(225) 그리고 랜덤화 유닛(229)으로 각각 대체되어 설명될 수 있음은 잘 이해될 것이다.
S210 단계에서, 컨트롤 유닛(121)은 호스트 장치로부터 읽기 요청을 수신할 수 있다. 컨트롤 유닛(121)은 불휘발성 메모리 장치로부터 데이터를 독출하고, 독출된 데이터를 랜덤 액세스 메모리(123)에 저장할 수 있다.
S220 단계에서, 랜덤화 유닛(129)은 독출된 데이터를 디-랜덤화할 수 있다. 즉, 랜덤화 유닛(129)은 독출된 데이터와 시드 값을 논리 연산하여 디-랜덤화된 데이터를 생성할 수 있다. 예시적으로, 디-랜덤화 동작에 사용되는 시드 값은 S140 단계의 랜덤화 동작에 사용된 시드 값과 동일한 값일 수 있다.
S230 단계에서, ECC 유닛(125)은 디-랜덤화된 데이터를 ECC 처리할 수 있다. 즉, ECC 유닛(125)은 디-랜덤화된 데이터에 포함된 에러 정정 코드에 근거하여 디-랜덤화된 데이터에 에러가 포함되었는지의 여부를 검사하고, 에러 정정 능력 범위 내에서 디-랜덤화된 데이터에 포함된 에러를 제거 또는 정정하는 ECC 디코딩을 수행할 수 있다.
S240 단계에서, 컨트롤 유닛(121)은 ECC 디코딩된 데이터를 호스트 장치로 전송할 수 있다. 즉, 컨트롤 유닛(121)은 ECC 처리에 의해서 쓰기 요청되었던 상태로 복원된 원래 데이터를 호스트 장치로 전송할 수 있다.
도 9는 도 8의 순서도에 따라서 처리되는 독출된 데이터의 변화 과정을 설명하기 위한 도면이다. 설명의 편의를 위해서, 도 9에 도시된 독출된 데이터의 변화 과정은 도 1의 데이터 저장 장치(100)의 구성들, 즉, 랜덤 액세스 메모리(123), ECC 유닛(125) 그리고 랜덤화 유닛(129)을 예로 들어 설명될 것이다. 랜덤 액세스 메모리(123), ECC 유닛(125) 그리고 랜덤화 유닛(129)은 도 2에 도시된 데이터 저장 장치(200)의 구성들, 즉, 제2 랜덤 액세스 메모리(224), ECC 유닛(225) 그리고 랜덤화 유닛(229)으로 각각 대체되어 설명될 수 있음은 잘 이해될 것이다.
랜덤 액세스 메모리(123)에 저장된 독출된 데이터(RDD)는 랜덤화 유닛(129)으로 입력될 수 있다. 랜덤화 유닛(129)에 의해서 독출 데이터(RDD)가 디-랜덤화되면, 독출된 데이터(RDD)는 디-랜덤화된 데이터(DRD)로 변화될 수 있다. 디-랜덤화된 데이터(DRD)는, 쓰기 동작 시 인위적으로 삽입된 에러로 인해서 또는 불휘발성 메모리 장치(도 1의 110)의 문제로 인해서, 에러를 포함하는 데이터(D')와 에러를 포함하는 패리티 데이터(PD')로 구성될 수 있다. 디-랜덤화된 데이터(DRD)는 랜덤 액세스 메모리(123)에 저장될 수 있다.
랜덤 액세스 메모리(123)에 저장된 디-랜덤화된 데이터(DRD)는 ECC 유닛(125)으로 입력될 수 있다. ECC 유닛(125)에 의해서 디-랜덤화된 데이터(DRD)가 ECC 처리되면, 디-랜덤화된 데이터(DRD)는 에러 정정 코드, 즉, 패리티 데이터(PD')가 제거된 데이터(D)로 변화될 수 있다.
이러한 일련의 과정을 통해서 독출된 데이터(RDD)는 쓰기 요청되었던 상태로 복원된 데이터, 즉, 쓰기 데이터(D)로 변화될 수 있다.
도 10은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블럭도이다. 도 10을 참조하면, 데이터 처리 시스템(1000)은 호스트 장치(1100)와 데이터 저장 장치(1200)를 포함할 수 있다.
데이터 저장 장치(1200)는 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)를 포함할 수 있다. 데이터 저장 장치(1200)는 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트 장치(1100)에 접속되어 사용될 수 있다. 데이터 저장 장치(1200)는 메모리 시스템이라고도 불린다.
컨트롤러(1210)는 호스트 인터페이스 유닛(1211), 컨트롤 유닛(1212), 메모리 인터페이스 유닛(1213), 랜덤 액세스 메모리(1214), 에러 정정 코드(ECC) 유닛(1215), 에러 삽입 유닛(1216) 그리고 랜덤화 유닛(1217)을 포함할 수 있다.
컨트롤 유닛(1212)은 호스트 장치(1100)의 요청에 응답하여 컨트롤러(1210)의 제반 동작을 제어할 수 있다. 컨트롤 유닛(1212)은 불휘발성 메모리 장치(1220)를 제어하기 위한 펌웨어 또는 소프트웨어를 구동할 수 있다.
랜덤 액세스 메모리(1214)는 컨트롤 유닛(1212)의 동작 메모리(working memory)로서 이용될 수 있다. 랜덤 액세스 메모리(1214)는 불휘발성 메모리 장치(1220)로부터 읽혀진 데이터 또는 호스트 장치(1100)로부터 제공된 데이터를 임시로 저장하는 버퍼 메모리로서 이용될 수 있다.
호스트 인터페이스 유닛(1211)은 호스트 장치(1100)와 컨트롤러(1210)를 인터페이싱할 수 있다. 예를 들면, 호스트 인터페이스 유닛(1211)은 USB(universal serial bus) 프로토콜, UFS(universal flash storage) 프로토콜, MMC(multi-media card) 프로토콜, PCI(peripheral component interconnection) 프로토콜, PCI-E(PCI-Express) 프로토콜, PATA(parallel advanced technology attachment) 프로토콜, SATA(serial advanced technology attachment) 프로토콜, SCSI(small computer system interface) 프로토콜, 그리고 SAS(serial attached SCSI) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 호스트 장치(1100)와 통신할 수 있다.
메모리 인터페이스 유닛(1213)은 컨트롤러(1210)와 불휘발성 메모리 장치(1220)를 인터페이싱할 수 있다. 메모리 인터페이스 유닛(1213)은 불휘발성 메모리 장치(1220)에 커맨드 및 어드레스를 제공할 수 있다. 그리고 메모리 인터페이스 유닛(1213)은 불휘발성 메모리 장치(1220)와 데이터를 주고 받을 수 있다.
에러 정정 코드(ECC) 유닛(1215)은 불휘발성 메모리 장치(1220)로 저장될 데이터를 ECC 인코딩할 수 있다. 그리고 에러 정정 코드(ECC) 유닛(1215)은 랜덤화 유닛(1217)에 의해서 디-랜덤화된 데이터를 ECC 디코딩할 수 있다.
에러 삽입 유닛(1216)은 에러 정정 코드(ECC) 유닛(1215)에 의해서 ECC 인코딩된 데이터에 에러를 인위적으로 삽입할 수 있다.
랜덤화 유닛(1217)은 에러 삽입 유닛(1216)에 의해서 에러가 삽입된 데이터를 시드 값을 사용하여 랜덤화할 수 있다. 또한, 랜덤화 유닛(1217)은 불휘발성 메모리 장치(1220)로부터 독출된 데이터를 시드 값을 사용하여 디-랜덤화할 수 있다.
에러 삽입 유닛(1216)과 랜덤화 유닛(1217)은 메모리 인터페이스 유닛(1213)에 포함될 수 있다.
불휘발성 메모리 장치(1220)는 데이터 저장 장치(1200)의 저장 매체로 사용될 수 있다. 불휘발성 메모리 장치(1220)는 복수의 불휘발성 메모리 칩들(또는 다이들(dies))(NVM_1~NVM_k)을 포함할 수 있다.
컨트롤러(1210) 및 불휘발성 메모리 장치(1220)는 다양한 데이터 저장 장치 중 어느 하나로 제조될 수 있다. 예를 들면, 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)는 하나의 반도체 장치로 집적되어 MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티미디어 카드(multi-media card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal serial bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 중 어느 하나로 제조될 수 있다.
도 11은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이버(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블럭도이다. 도 11을 참조하면, 데이터 처리 시스템(2000)은 호스트 장치(2100)와 솔리드 스테이트 드라이브(solid state drive, 이하, SSD라 칭함, 2200)를 포함할 수 있다.
SSD(2200)는 SSD 컨트롤러(2210), 버퍼 메모리 장치(2220), 불휘발성 메모리 장치들(2231~223n), 전원 공급기(2240), 신호 커넥터(2250), 전원 커넥터(2260)를 포함할 수 있다.
SSD 컨트롤러(2210)는 호스트 장치(2100)로부터의 요청에 응답하여 불휘발성 메모리 장치들(2231~223n)을 액세스할 수 있다.
버퍼 메모리 장치(2220)는 불휘발성 메모리 장치들(2231~223n)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(2220)는 불휘발성 메모리 장치들(2231~223n)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(2220)에 임시 저장된 데이터는 SSD 컨트롤러(2210)의 제어에 따라 호스트 장치(2100) 또는 불휘발성 메모리 장치들(2231~223n)로 전송될 수 있다.
불휘발성 메모리 장치들(2231~223n)은 SSD(2200)의 저장 매체로 사용될 수 있다. 불휘발성 메모리 장치들(2231~223n) 각각은 복수의 채널들(CH1~CHn)을 통해 SSD 컨트롤러(2210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리 장치들은 동일한 신호 버스 및 데이터 버스에 연결될 수 있다.
전원 공급기(2240)는 전원 커넥터(2260)를 통해 입력된 전원(PWR)을 SSD(2200) 내부에 제공할 수 있다. 전원 공급기(2240)는 보조 전원 공급기(2241)를 포함할 수 있다. 보조 전원 공급기(2241)는 서든 파워 오프(sudden power off)가 발생되는 경우, SSD(2200)가 정상적으로 종료될 수 있도록 전원을 공급할 수 있다. 보조 전원 공급기(2241)는 전원(PWR)을 충전할 수 있는 슈퍼 캐패시터들(super capacitors)을 포함할 수 있다.
SSD 컨트롤러(2210)는 신호 커넥터(2250)를 통해서 호스트 장치(2100)와 신호(SGL)를 주고 받을 수 있다. 여기에서, 신호(SGL)는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. 신호 커넥터(2250)는 호스트 장치(2100)와 SSD(2200)의 인터페이스 방식에 따라 PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI Express) 등의 커넥터로 구성될 수 있다.
도 12는 도 11에 도시된 SSD 컨트롤러를 예시적으로 보여주는 블럭도이다. 도 12를 참조하면, SSD 컨트롤러(2210)는 메모리 인터페이스 유닛(2211), 호스트 인터페이스 유닛(2212), 컨트롤 유닛(2213), 랜덤 액세스 메모리(2214), 에러 정정 코드(ECC) 유닛(2215), 에러 삽입 유닛(2216) 그리고 랜덤화 유닛(2217)을 포함할 수 있다.
메모리 인터페이스 유닛(2211)은 불휘발성 메모리 장치들(2231~223n)에 커맨드 및 어드레스와 같은 제어 신호를 제공할 수 있다. 그리고 메모리 인터페이스 유닛(2211)은 불휘발성 메모리 장치들(2231~223n)과 데이터를 주고 받을 수 있다. 메모리 인터페이스 유닛(2211)은 컨트롤 유닛(2214)의 제어에 따라 버퍼 메모리 장치(2220)로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)할 수 있다. 그리고 메모리 인터페이스 유닛(2211)은 컨트롤 유닛(2214)의 제어에 따라 불휘발성 메모리 장치들(2231~223n)로부터 읽혀진 데이터를 버퍼 메모리 장치(2220)로 전달할 수 있다.
호스트 인터페이스 유닛(2212)은 호스트 장치(2100)의 프로토콜에 대응하여 SSD(2200)와의 인터페이싱을 제공할 수 있다. 예를 들면, 호스트 인터페이스(2212)는 PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI Expresss) 프로토콜들 중 어느 하나를 통해 호스트 장치(2100)와 통신할 수 있다. 또한, 호스트 인터페이스 유닛(2212)은 호스트 장치(2100)가 SSD(2200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(disk emulation) 기능을 수행할 수 있다.
컨트롤 유닛(2213)은 호스트 장치(2100)로부터 입력된 신호(SGL)를 분석하고 처리할 수 있다. 컨트롤 유닛(2213)은 SSD(2200)를 구동하기 위한 펌웨어 또는 소프트웨어에 따라서 버퍼 메모리 장치(2220) 그리고 불휘발성 메모리 장치들(2231~223n)의 동작을 제어할 수 있다. 랜덤 액세스 메모리(2214)는 이러한 펌웨어 또는 소프트웨어를 구동하기 위한 동작 메모리로서 사용될 수 있다.
에러 정정 코드(ECC) 유닛(2215)은 버퍼 메모리 장치(2220)에 저장된 데이터 중에서 불휘발성 메모리 장치들(2231~223n)로 전송될 데이터의 패리티 데이터를 생성할 수 있다. 생성된 패리티 데이터는 데이터와 함께 불휘발성 메모리 장치들(2231~223n)에 저장될 수 있다. 에러 정정 코드(ECC) 유닛(2215)은 랜덤화 유닛(2217)에 의해서 디-랜덤화된 데이터의 에러를 검출할 수 있다. 만약, 검출된 에러가 정정 범위 내이면, 에러 정정 코드(ECC) 유닛(2213)은 검출된 에러를 정정할 수 있다.
에러 삽입 유닛(2216)은 에러 정정 코드(ECC) 유닛(2215)에 의해서 ECC 인코딩된 데이터에 에러를 인위적으로 삽입할 수 있다.
랜덤화 유닛(2217)은 에러 삽입 유닛(2216)에 의해서 에러가 삽입된 데이터를 시드 값을 사용하여 랜덤화할 수 있다. 또한, 랜덤화 유닛(2217)은 버퍼 메모리 장치(2220)에 저장된 데이터 중에서 불휘발성 메모리 장치들(2231~223n)로부터 독출된 데이터를 시드 값을 사용하여 디-랜덤화할 수 있다.
에러 삽입 유닛(2216)과 랜덤화 유닛(2217)은 메모리 인터페이스 유닛(2211)에 포함될 수 있다.
도 13은 본 발명의 실시 예에 따른 데이터 저장 장치가 장착되는 컴퓨터 시스템을 예시적으로 보여주는 블럭도이다. 도 13을 참조하면, 컴퓨터 시스템(3000)은 시스템 버스(3700)에 전기적으로 연결되는 네트워크 어댑터(3100), 중앙 처리 장치(3200), 데이터 저장 장치(3300), 램(3400), 롬(3500) 그리고 사용자 인터페이스(3600)를 포함할 수 있다. 여기에서, 데이터 저장 장치(3300)는 도 1에 도시된 데이터 저장 장치(100), 도 2에 도시된 데이터 저장 장치(200), 도 10에 도시된 데이터 저장 장치(1200) 또는 도 11에 도시된 SSD(2200)로 구성될 수 있다.
네트워크 어댑터(3100)는 컴퓨터 시스템(3000)과 외부의 네트워크들 사이의 인터페이싱을 제공할 수 있다. 중앙 처리 장치(3200)는 램(3400)에 상주하는 운영 체제(Operating System)나 응용 프로그램(Application Program)을 구동하기 위한 제반 연산 처리를 수행할 수 있다.
데이터 저장 장치(3300)는 컴퓨터 시스템(3000)에서 필요한 제반 데이터를 저장할 수 있다. 예를 들면, 컴퓨터 시스템(3000)을 구동하기 위한 운영 체제(Operating System), 응용 프로그램(Application Program), 다양한 프로그램 모듈(Program Module), 프로그램 데이터(Program data), 그리고 유저 데이터(User data) 등이 데이터 저장 장치(3300)에 저장될 수 있다.
램(3400)은 컴퓨터 시스템(3000)의 동작 메모리로서 사용될 수 있다. 부팅 시에 램(3400)에는 데이터 저장 장치(3300)로부터 읽혀진 운영 체제(Operating System), 응용 프로그램(Application Program), 다양한 프로그램 모듈(Program Module)과 프로그램들의 구동에 소요되는 프로그램 데이터(Program data)가 로드될 수 있다. 롬(3500)에는 운영 체제(Operating System)가 구동되기 이전부터 활성화되는 기본적인 입출력 시스템인 바이오스(BIOS: Basic Input/Output System)가 저장될 수 있다. 유저 인터페이스(3600)를 통해서 컴퓨터 시스템(3000)과 사용자 사이의 정보 교환이 이루어질 수 있다.
이상에서, 본 발명은 구체적인 실시 예를 통해 설명되고 있으나, 본 발명은 그 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있음은 잘 이해될 것이다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며, 후술하는 특허청구범위 및 이와 균등한 것들에 의해 정해져야 한다. 본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 잘 이해될 것이다.
100 : 데이터 저장 장치
110 : 불휘발성 메모리 장치
120 : 컨트롤러
121 : 컨트롤 유닛
123 : 랜덤 액세스 메모리
125 : ECC 유닛
127 : 에러 삽입 유닛
129 : 랜덤화 유닛

Claims (15)

  1. 데이터 저장 장치의 동작 방법에 있어서:
    쓰기 데이터를 에러 정정 코드(ECC) 인코딩하고,
    에러 정정 코드(ECC) 인코딩된 데이터에 에러를 삽입하고, 그리고
    에러가 삽입된 데이터를 저장하는 데이터 저장 장치의 동작 방법.
  2. 제1항에 있어서,
    상기 에러를 삽입하는 것은 상기 에러 정정 코드(ECC) 인코딩된 데이터를 구성하는 데이터 비트들 중에서 적어도 하나를 반전하는 것을 포함하는 데이터 저장 장치의 동작 방법.
  3. 제2항에 있어서,
    상기 에러를 삽입하는 것은 상기 에러 정정 코드(ECC) 인코딩을 수행함으로 인해서 상기 에러 정정 코드(ECC) 인코딩된 데이터를 정정할 수 있는 비트의 수를 초과하지 않도록 데이터 비트를 반전하는 것을 포함하는 데이터 저장 장치의 동작 방법.
  4. 제2항에 있어서,
    상기 에러 정정 코드(ECC) 인코딩된 데이터는 상기 쓰기 데이터와 상기 쓰기 데이터에 대한 패리티 데이터를 포함하되,
    상기 에러를 삽입하는 것은 상기 쓰기 데이터와 상기 패리티 데이터를 구성하는 데이터 비트들 중에서 랜덤한 위치의 데이터 비트를 반전하는 것을 포함하는 데이터 저장 장치의 동작 방법.
  5. 불휘발성 메모리 장치;
    상기 불휘발성 메모리 장치에 저장될 쓰기 데이터를 에러 정정 코드(ECC) 처리하는 에러 정정 코드(ECC) 유닛;
    에러 정정 코드(ECC) 처리된 데이터에 에러를 삽입하는 에러 삽입 유닛;
    에러가 삽입된 데이터를 랜덤화하는 랜덤화 유닛; 그리고
    랜덤화된 데이터를 상기 불휘발성 메모리 장치에 저장하는 컨트롤 유닛을 포함하는 데이터 저장 장치.
  6. 제5항에 있어서,
    상기 에러 삽입 유닛은 상기 에러 정정 코드(ECC) 처리된 데이터를 구성하는 데이터 비트들 중에서 적어도 하나를 반전시키는 데이터 저장 장치.
  7. 제6항에 있어서,
    상기 에러 삽입 유닛은 상기 에러 정정 코드(ECC) 유닛의 에러 정정 능력의 범위 내에서 상기 데이터 비트를 반전시키는 데이터 저장 장치.
  8. 제6항에 있어서,
    상기 에러 삽입 유닛은 상기 에러 정정 코드(ECC) 처리된 데이터를 구성하는 데이터 비트들 중에서 랜덤한 위치의 데이터 비트를 반전시키는 데이터 저장 장치.
  9. 제5항에 있어서,
    상기 컨트롤 유닛은 상기 불휘발성 메모리 장치로부터 데이터를 독출하고,
    상기 랜덤화 유닛은 독출된 데이터를 디-랜덤화하고, 그리고
    상기 에러 정정 코드(ECC) 유닛은 디-랜덤화된 데이터를 에러 정정 코드(ECC) 처리하는 데이터 저장 장치.
  10. 제5항에 있어서,
    상기 컨트롤 유닛의 제어에 따라서 상기 불휘발성 메모리 장치에 제어 신호를 제공하고, 상기 불휘발성 메모리 장치와 데이터를 주고 받는 메모리 인터페이스 유닛을 더 포함하는 데이터 저장 장치.
  11. 제10항에 있어서,
    상기 메모리 인터페이스 유닛은 상기 에러 정정 코드(ECC) 유닛, 상기 에러 삽입 유닛 그리고 상기 랜덤화 유닛을 포함하는 데이터 저장 장치.
  12. 데이터 저장 장치의 동작 방법에 있어서:
    쓰기 데이터를 에러 정정 코드(ECC) 인코딩하고,
    에러 정정 코드(ECC) 인코딩된 데이터에 에러를 삽입하고,
    에러가 삽입된 데이터를 랜덤화하고, 그리고
    랜덤화된 데이터를 저장하는 데이터 저장 장치의 동작 방법.
  13. 제12항에 있어서,
    상기 에러를 삽입하는 것은 상기 에러 정정 코드(ECC) 인코딩된 데이터를 구성하는 데이터 비트들 중에서 랜덤한 위치의 적어도 하나를 반전하는 것을 포함하는 데이터 저장 장치의 동작 방법.
  14. 제13항에 있어서,
    상기 에러를 삽입하는 것은 상기 에러 정정 코드(ECC) 인코딩을 수행함으로 인해서 상기 에러 정정 코드(ECC) 인코딩된 데이터를 정정할 수 있는 비트의 수를 초과하지 않도록 데이터 비트를 반전하는 것을 포함하는 데이터 저장 장치의 동작 방법.
  15. 제12항에 있어서,
    독출된 데이터를 디-랜덤화하고, 그리고
    디-랜덤화된 데이터를 에러 정정 코드(ECC) 디코딩하는 것을 더 포함하는 데이터 저장 장치의 동작 방법.
KR1020150028334A 2015-02-27 2015-02-27 데이터 저장 장치 및 그것의 동작 방법 KR20160105625A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150028334A KR20160105625A (ko) 2015-02-27 2015-02-27 데이터 저장 장치 및 그것의 동작 방법
US14/790,787 US20160253239A1 (en) 2015-02-27 2015-07-02 Data storage device and operating method thereof
CN201510662233.2A CN105931673A (zh) 2015-02-27 2015-10-14 数据储存器件及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150028334A KR20160105625A (ko) 2015-02-27 2015-02-27 데이터 저장 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20160105625A true KR20160105625A (ko) 2016-09-07

Family

ID=56798338

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150028334A KR20160105625A (ko) 2015-02-27 2015-02-27 데이터 저장 장치 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US20160253239A1 (ko)
KR (1) KR20160105625A (ko)
CN (1) CN105931673A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190071573A (ko) * 2017-12-14 2019-06-24 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102636039B1 (ko) * 2016-05-12 2024-02-14 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법
KR20180087496A (ko) * 2017-01-23 2018-08-02 에스케이하이닉스 주식회사 메모리 시스템
CN108665939B (zh) * 2017-03-31 2021-01-05 厦门旌存半导体技术有限公司 为存储器提供ecc的方法与装置
KR102648618B1 (ko) * 2018-03-28 2024-03-19 에스케이하이닉스 주식회사 컨트롤러, 그것의 동작방법 및 컨트롤러를 포함하는 메모리 시스템
US11182244B2 (en) * 2018-10-16 2021-11-23 Micron Technology, Inc. Error correction management for a memory device
EP4127941A1 (en) * 2020-05-27 2023-02-08 Huawei Technologies Co., Ltd. Method for using nand flash memory sram in solid state drive controller

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7149945B2 (en) * 2003-05-09 2006-12-12 Hewlett-Packard Development Company, L.P. Systems and methods for providing error correction code testing functionality
JP4834721B2 (ja) * 2006-02-24 2011-12-14 富士通株式会社 メモリ制御装置およびメモリ制御方法
KR100902051B1 (ko) * 2007-07-12 2009-06-15 주식회사 하이닉스반도체 오류 검사 코드 생성장치 및 방법
US8296739B2 (en) * 2008-03-31 2012-10-23 International Business Machines Corporation Testing soft error rate of an application program
KR20130021633A (ko) * 2011-08-23 2013-03-06 삼성전자주식회사 오류정정부호를 이용한 데이터의 은닉과 검출 방법 및 장치
US20130139008A1 (en) * 2011-11-29 2013-05-30 Advanced Micro Devices, Inc. Methods and apparatus for ecc memory error injection
US8645797B2 (en) * 2011-12-12 2014-02-04 Intel Corporation Injecting a data error into a writeback path to memory
US10248521B2 (en) * 2015-04-02 2019-04-02 Microchip Technology Incorporated Run time ECC error injection scheme for hardware validation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190071573A (ko) * 2017-12-14 2019-06-24 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Also Published As

Publication number Publication date
US20160253239A1 (en) 2016-09-01
CN105931673A (zh) 2016-09-07

Similar Documents

Publication Publication Date Title
US20180314643A1 (en) Data storage device and operating method thereof
US10943639B2 (en) Data storage device and operating method thereof
KR20200095103A (ko) 데이터 저장 장치 및 그 동작 방법
KR20160105625A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10838854B2 (en) Data storage device and operating method thereof
KR20170099618A (ko) 데이터 저장 장치
KR20200093362A (ko) 메모리 시스템 및 그것의 동작 방법
US20160179596A1 (en) Operating method of data storage device
KR20160025292A (ko) 데이터 저장 장치, 그것을 포함하는 데이터 처리 시스템 및 그것의 동작 방법
KR20170007613A (ko) 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
KR20160097657A (ko) 데이터 저장 장치 그리고 그것의 동작 방법
US10546618B2 (en) Nonvolatile memory device, data storage device including the same and operating method thereof
KR20200129863A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR20170094674A (ko) 데이터 저장 장치
KR102140297B1 (ko) 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
US11748025B2 (en) Nonvolatile memory device, data storage device including the same and operating method thereof
US11263126B2 (en) Data storage device and operating method thereof
KR102645786B1 (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102180972B1 (ko) 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
KR20170031311A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11157401B2 (en) Data storage device and operating method thereof performing a block scan operation for checking for valid page counts
KR20180077872A (ko) 불휘발성 메모리 장치의 동작 방법 및 그것을 포함하는 데이터 저장 장치의 동작 방법
KR20210001206A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US11314461B2 (en) Data storage device and operating method of checking success of garbage collection operation
KR20150122825A (ko) 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치