KR20100062191A - 플래시 메모리장치, 및 그 제어방법 - Google Patents

플래시 메모리장치, 및 그 제어방법 Download PDF

Info

Publication number
KR20100062191A
KR20100062191A KR1020080120657A KR20080120657A KR20100062191A KR 20100062191 A KR20100062191 A KR 20100062191A KR 1020080120657 A KR1020080120657 A KR 1020080120657A KR 20080120657 A KR20080120657 A KR 20080120657A KR 20100062191 A KR20100062191 A KR 20100062191A
Authority
KR
South Korea
Prior art keywords
block
wear
host
value
error bits
Prior art date
Application number
KR1020080120657A
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 KR1020080120657A priority Critical patent/KR20100062191A/ko
Publication of KR20100062191A publication Critical patent/KR20100062191A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

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

Abstract

본 발명은 ECC 보정 때, 읽기 대상 섹터에서 발생하는 오류 비트수를 이용하여 메모리 셀을 구성하는 블럭들에 대한 마모도 평준화를 수행하는 플래시 메모리장치, 및 제어방법을 개시한다.
마모도 평준화, 섹터, 블록, 오류 비트수

Description

플래시 메모리장치, 및 그 제어방법{Flash device and flash device control mehtod}
본 발명은 플래시 메모리장치, 및 플래시 메모리장치의 제어방법에 대한 것이다.
최근 플래시 메모리를 이용한 SSD(Solide State Disk)장치가 하드디스크를 대체하고 있다.
SSD 장치는 NAND 타입(또는 NOR 타입) 플래시 메모리 칩을 기판에 집적하여 하드디스크처럼 사용할 수 있도록 한 데이터 저장장치로서, 저가품의 경우, 1만 번의 소거(erase)를 견디는 MLC(MultiLevel Cell) 방식의 칩을 주로 사용하고, 고가품의 경우, 10만 번의 소거 소거를 견디는 SLC(Single Level Cell) 방식의 칩을 주로 사용하고 있다.
SSD 장치는 플래시 메모리 칩을 사용하여 데이터 저장장치를 구성하므로 마모도 평준화(Wear-leveling)를 통해 특정 블록에 소거 연산이 집중되는 것을 방지힌다. 마모도 평준화는 SSD 장치에 내장되는 컨트롤러가 플래시 메모리 칩의 저장 영역을 구획한 각 블록의 소거 횟수를 참조하며, 소거 횟수가 가장 적은 블록을 기 록 대상 블록으로 선택하고, 선택된 블록에 데이터를 기록함으로써 SSD 장치를 구성하는 각 블록이 골고루 마모되도록 한다.
한편, 플래시 메모리칩을 구성하는 셀들의 수명, 즉 소거횟수는 동일한 생산라인에서 생산된 플래시 메모리 칩들 사이에서도 차이가 나며, 하나의 플래시 메모리 칩 내부의 셀들 사이에서도 균일하지 않다. 플래시 메모리 칩을 구성하는 셀 각각에 대한 소거횟수를 기준으로 하는 수명은 평균적인 수명일 뿐, 절대적으로 신뢰할 수 있는 횟수에 해당하지 않는다.
또한, 플래시 메모리 칩의 저장 영역을 복수의 블록으로 구획했을 때, 각 블록은 자신의 소거횟수를 가지고 있어야 한다. 현재, 플래시 메모리 칩을 이용한 SSD 장치의 각 블록은 24비트의 저장 영역을 소거 횟수를 계수하는데 할당하고 있다.
따라서, 본 발명의 목적은 읽기 대상 섹터에서 발생하는 오류 비트수를 이용하여 마모도 평준화를 수행하는 플래시 메모리장치, 및 제어방법을 제공함에 있다.
상기한 목적은 본 발명에 따라, 복수의 블록으로 구성되며, 각 블록은 복수의 섹터를 포함하는 적어도 하나의 메모리 셀, 및 읽기 대상 섹터에 대한 ECC 보정을 통해 오류 비트수를 판단하고, 상기 오류 비트수를 상기 읽기 대상 섹터를 포함하는 블록에 대한 마모도 값으로 설정하며, 상기 마모도 값을 토대로 상기 각 블록에 대한 마모도 평준화를 수행하는 제어부에 의해 달성된다.
상기한 목적은 본 발명에 따라, 복수의 블록으로 구성되며, 각 블록은 복수의 섹터를 포함하는 적어도 하나의 메모리 셀을 구비하는 플래시 메모리장치에 대한 제어방법에 있어서, 읽기 대상 섹터에 대한 ECC 보정을 통해 상기 읽기 대상 섹터에 대한 오류 비트수를 판단하는 단계, 및 상기 오류 비트수를 상기 읽기 대상 섹터를 포함하는 블록에 대한 마모도 값으로 설정하여 상기 각 블록에 대한 마모도 평준화를 수행하는 단계에 의해 달성된다.
본 발명은 저장장치를 구성하는 메모리 셀의 각 블록이 실제 수명을 참조하여 균등 마모될 수 있도록한다.
이하, 도면을 참조하여 본 발명을 상세히 설명하도록 한다.
본 명세서에서 기술되는 플래시 메모리장치는 NAND 게이트, 또는 NOR 게이트를 이용하는 플래시 메모리장치일 수 있다. 또한, 본 발명에서 기술되는 플래시 메모리 장치는 SLC(Single Level Cell) 방식, 또는 MLC(Multi Level Cell) 방식의 칩을 구비하는 플래시 메모리장치일 수 있다.
본 발명은, 어떤 종류의 메모리 셀을 이용하는가에 따라 그 기술적 사상이 영향을 받지 않는다. 따라서, 본 발명에서 언급되는 메모리 셀은 NAND 게이트나 NOR 게이트 방식의 플래시 메모리 칩을 이용할 수 있으며, 마찬가지로, SLC 방식에 따른 메모리 칩이거나, MLC 방식에 따른 칩이 적용되어도 무방하므로 따로 구분하여 설명하지 않는다.
또한, 이하의 설명에서는 메모리 셀을 제어하는 컨트롤러, 및 컨트롤러와 연동하여 구동하는 부분을 제어부라 하고, 제어부를 구성하는 구성요소에 대한 접미사로서 "모듈", 또는 "부"가 사용될 수 있다. 따라서, 제어부는 단일 칩(chip)으로 형성되거나, 복수의 칩(chip)이 모여서 하나의 구성요소를 이룰 수 있다.
본 명세서에서 사용되는 구성요소, 및 그에 대한 접미사는 본 명세서 작성의 용이함만을 고려하여 부여되는 것으로, 상기 "모듈", 및 "부"는 상호 혼용되어 사용될 수 있다.
본 명세서에서 기술되는 "플래시 메모리장치"는 SSD(Solid State Disk)로 구현되거나, 임베디드 장치에서 비 휘발성 저장매체의 역할을 수행할 수 있다. 따라서, 본 명세서에서 기술되는 플래시 메모리장치는 퍼스널 컴퓨터, 서버, 노트북, PDA(Personal Digital Assistant), PMP(Personal Media Player), 비디오 게임기, 휴대단말기(mobile phone), 및 기타 데이터 저장을 위한 다양한 장치에 적용될 수 있다.
도 1은 본 발명에 따른 플래시 메모리장치와 호스트의 접속관계에 대한 개념도를 도시한다.
도 1을 참조하면, 본 발명에 따른 플래시 메모리장치(100)는 호스트(50)에 접속되어 사용되며, 호스트(50)가 부팅될 때, 호스트(50)와 데이터 전송 방식을 협의하고, 협의된 데이터 전송 방식에 따라 상호 데이터 전송을 처리한다.
먼저, 호스트(50)가 부팅될 때, 프로세서(CPU)(51)는 바이오스(BIOS)(52)를 통해 플래시 메모리장치(100)에 대한 장치 정보를 획득한다. 바이오스(52)는 호스트(50)에 장착되는 각종 하드웨어 장치에 대한 장치 정보를 구비하며, 호스트(50)가 부팅될 때, 각종 하드웨어 장치 정보를 프로세서(51)로 전송한다. 다음으로, 프로세서(51)는 플래시 메모리장치(100)의 존재를 인식하고, 플래시 메모리장치(100)가 사용 가능한지를 확인한다(S1). 이때, 플래시 메모리장치(100)의 제어부(120)는 호스트(50)에 대해 사용 가능함을 응답하며(S2), 호스트(50)와 데이터 전송을 위한 주소 체계를 협의한다(S3). 주소체계는 통상 CHS 주소체계와 LBA 주소체계 중 하나가 적용될 수 있다. CHS 주소 체계는 바이오스(52)가 하드디스크 드라이브의 실린더(Cylinder), 헤드(Head), 섹터(Sector)정보를 저장해두고, 호스트(50) 측 프로세서(51)가 CHS 정보를 이용하여 하드디스크 드라이브와 데이터 통 신을 수행하는 주소 체계를 의미한다.
LBA(Logical Block Addressing) 주소 체계는 하드디스크 드라이브의 첫 번째 섹터에 일렬번호를 매긴 뒤, 그 다음번 일련번호를 그 다음번 섹터에 할당하여 주소를 형성하는 주소 체계를 의미한다. 본 명세서는 현재 가장 널리 이용되는 LBA 주소 체계를 기준으로 설명을 진행하도록 한다. 물론, 추후, 주소 체계는 현재의 주소 체계(CHS, LBA)와 다른 것이 존재할 수 있으나, 새로운 주소 체계가 바이오스를 통해 프로세서(51)로 제공되고, 프로세서(51)가 플래시 메모리장치(100)와 협의할 수 있다면 본 발명에 따른 플래시 메모리장치(100)는 새로운 주소 체계를 이용할 수 있음이 자명하다 할 것이다.
호스트(50)와 플래시 메모리장치(100)의 제어부(120)가 상호 인식하고, 데이터 전송을 위한 주소 체계에 대한 협의가 종료되면, 호스트(50)는 플래시 메모리장치(100)로 데이터 읽기, 쓰기, 삭제, 및 기타 다양한 제어 명령어(command)를 전송할 수 있으며(S4), 플래시 메모리장치(100)는 호스트(50)의 제어 명령어(command)에 대한 응답(response)을 수행한다(S5). 플래시 메모리장치(100)의 응답은 호스트(50)가 원하는 데이터를 읽거나, 쓰거나, 삭제했을 때, 호스트(50)로 데이터를 전송하거나, 호스트(50)의 제어 명령어(commnand)에 대한 처리 결과를 호스트(50)로 전송하는 것 중 하나에 해당한다.
한편, 플래시 메모리장치(100)는 호스트(50)가 제어 명령어(command)를 전송하기 전, 메모리 셀(140)을 구성하는 각 블록에 대해 매핑테이블을 형성한다.
메모리 셀(140)은 복수의 블록으로 구성되며, 각 블록은 기계식 하드디스크 드라이브와는 달리 실린더, 헤더, 및 섹터의 기준으로 구획되지 않는다. 따라서, 현재도 널리 사용되는 하드디스크 드라이브를 대신하여 호스트(50)와 데이터 통신을 수행하기 위해서는 각 물리적인 블록을 호스트(50)의 논리 주소체계와 대응시켜야 하며, 통상 "매핑 테이블"을 이용한다. 본 발명에서, 매핑 테이블은 복수로 구획되어 복수의 부분 매핑 테이블을 형성하고, 각 부분 매핑 테이블은 각 블록(141a ∼ 141n)에 분산되어 저장된다. 여기서, 메모리 셀(140)은 하나만이 도시되어 있으나, 이는 설명과 이해의 편의를 위한 것일 뿐이며, 메모리 셀(140)은 둘, 또는 복수일 수 있다.
또한, 각각의 블록(141a ∼ 141n)은 복수의 섹터(SECTOR)로 구성된다. 섹터는 호스트(50)가 기록을 요청하는 데이터의 최소 기록단위로서 수 Byte ∼ 수 KB의 크기를 가질 수 있다.
제어부(120)는 각 블록(141a ∼ 141n)에 분산되어 저장되어있는 부분 매핑 테이블을 모아 하나의 전체 매핑 테이블을 형성하며, 형성된 전체 매핑 테이블은 메모리(150)에 저장한다. 이후, 제어부(120)은 호스트(50)가 논리 주소를 이용하여 제어 명령어(command)를 전송하면, 전체 매핑 테이블을 이용하여 해당하는 블록을 대응시킨다.
이때, 전체 매핑 테이블은 각 블록(141a ∼ 141n)의 마모도를 참조하여 호스트(50)의 논리주소(LBA)와 대응하는 실제 물리 블록의 주소(PBA)를 변경할 수 있다.
통상의 경우 각 블록(141a ∼ 141n)을 프로그래밍하기 전, 블록을 소거하는 횟수를 참조하여 마모도 평준화를 수행하나, 본 발명에서는 소거 횟수 대신, 각 블록(141a ∼ 141n)을 대표하는 마모도 값을 이용하여 마모도 평준화를 수행한다. 여기서, 마모도 값은 각 블록(141a ∼ 141n)을 구성하는 섹터에서 데이터를 읽을 때, 발생하는 오류의 비트수를 의미한다.
제어부(120)는 블록(141a ∼ 141n 중 어느 하나)에서 데이터를 획득할 때, 최종적으로는 섹터로부터 데이터를 획득한다. 이때, 제어부(120)는 섹터에 기록된 데이터, 및 ECC 정보를 참조하여 섹터에서 획득한 데이터에 대해 오류 보정을 수행한다. 제어부(120)는 오류 보정을 수행할 때, 섹터에서 발생한 오류의 비트수를 인지할 수 있으며, 섹터에서 발생한 오류 비트수를 섹터가 포함되는 블록에 대한 마모도 값으로 설정한다. 오류 비트수가 많다는 것은 섹터에 기록된 데이터에 오류가 많거나, 섹터 자체가 불량일 확률이 크다는 것을 의미하며, 반대로, 오류 비트수가 적다는 것은 섹터에 기록된 데이터에 오류가 적고 섹터 자체가 불량일 확률이 적다는 것을 의미한다.
제어부(120)는 각 블록(141a ∼ 141n)에 포함되는 섹터에서 데이터를 획득할 때, 섹터에서 발생하는 마모도 값(오류 비트수)을 매핑 테이블에 기록하고, 매핑 테이블을 참조하여 마모도 평준화를 수행할 수 있다.
예컨대, 제어부(120)는 호스트(50)에서 데이터 기록 명령을 전송할 때, 오류 비트수가 가장 적은 블록을 기록대상 블록으로 선택할 수 있다.
도 2는 본 발명의 일 실시예에 따른 플래시 메모리장치에 대한 개념도를 도시한다.
도 2를 참조하면, 본 발명에서 제어부(120)는 호스트(50)에서 읽기 명령이 발생할 때, 읽기 대상 섹터(ST1)에 대해 ECC 보정을 수행하고, ECC 보정을 수행할 때, 섹터에 대한 오류 비트수를 얻는다.
오류 비트수는 섹터에서 획득한 데이터들 중 몇 개의 비트에서 오류가 발생하였는지를 의미하며, 매핑 테이블에 기록된다.
도 2를 참조하면, 각 블록(141a ∼ 141n)은 복수의 섹터로 이루어진다. 블록(141a)에는 섹터(ST1 ∼ STn)가 마련되고, 각 섹터(ST1 ∼ STn)에서 발생한 오류 비트수가 블록(141a)에 대한 마모도 값을 결정한다.
마모도 값은 제어부(120)가 호스트(50)의 데이터 읽기 명령을 수신할 때, 수행된다.
예컨대, 호스트(50)가 제어부(120)로 블록(예컨대 참조부호 141a)에 대한 읽기 명령을 전송할 때, 제어부(120)는 블록(141a)에서 섹터(ST1)에 억세스하여 데이터를 ECC 보정하고, ECC 보정된 데이터를 호스트(50)로 전송한다. 이때, 제어부(120)는 ECC 보정 과정에서, 섹터(ST1)에서 읽은 데이터의 몇 비트가 오류를 발생시키는지를 인지할 수 있다. 섹터(ST1), 또는 블록(141a)에는 데이터 보정을 위한 ECC 정보가 포함된다.
제어부(120)는 데이터 읽기 과정을 통해 각 블록(141a ∼ 141n)에 포함되는 섹터들의 오류 비트수를 획득한다. 획득한 오류 비트수는 매핑 테이블에 기록되고, 추후, 호스트(50)가 전송하는 데이터 기록 명령에 응답하여 제어부(120)는 마모도 평준화를 수행한다.
도 3은 본 발명의 일 실실예에 따른 플래시 메모리장치의 블록개념도를 나타낸다.
도 3을 참조하면, 본 실시예에 따른 플래시 메모리장치(100)는 호스트 인터페이스부(110), 제어부(120), 메모리 인터페이스부(130), 및 복수의 메모리 셀(140)을 포함한다.
메모리 셀(140)은 하나, 또는 복수일 수 있으며, 각각의 메모리 셀(140a ∼ 140n)은 복수의 블록으로 구성된다.
메모리 셀(140)은 제1메모리 셀(140a) ∼ 제n메모리 셀(140n)로 구성된다. 제1메모리 셀(140a)의 경우, 제1블록(141a) ∼ 제n블록(141n)으로 구성되며, 제1블록(141a)은 제1섹터(ST1) ∼ 제n섹터(STn)으로 구성된다. 나머지, 메모리 셀(제2메모리 셀(140b) ∼ 제n메모리 셀(140n))도 마찬가지로, 복수의 블록, 및 섹터로 구성된다.
각 메모리 셀(140a ∼ 140n)은 기록, 재기록, 및 삭제가 가능한 플래시 메모리 칩으로 구성된다. 각 메모리 셀(140a ∼ 140n)은 호스트(30)의 논리주소(LBA : Logical Block Address)에 대응하는 고유의 물리주소(PBA : Physical Block Address)를 갖는다.
물리 주소(PBA)는 호스트(50) 측 논리주소(LBA)와 1:1 대응하나, 블록의 마모도 값이 클 경우, 해당 블록은 타 LBA에 대응할 수 있다.
블록이 타 LBA로 대응할 경우, 변경 사항은 메모리(150)에 형성되는 전체 매핑 테이블에 반영된다.
호스트 인터페이스부(110)는 호스트(50)와 제어부(120) 사이에 전송되는 데이터의 형태를 변환한다. 예를들어, 호스트(50)가 SATA(Serial-ATA) 방식의 인터페이스를 통해 플래시 메모리장치와 인터페이스를 수행할 경우, 호스트 인터페이스부(110)는 제어부(120)에서 전송되는 데이터를 SATA 방식에 따라 변환하여 호스트(50)로 제공한다. 호스트 인터페이스부(110)는 호스트(50)의 인터페이스 방식에 따라 SATA1, SATA2, SCSI, 및 IDE 인터페이스 등을 지원할 수 있으며, 이 외에도, 호스트(50)가 필요로 하는 인터페이스에 따라 다양한 인터페이스가 적용될 수 있다.
또한, 호스트 인터페이스부(110)는 호스트(50)가 전송하는 명령어를 수신하고, 수신된 명령어를 제어부(120)로 제공한다. 호스트(50)가 전송하는 명령어는 읽기, 쓰기 명령이 주류를 이루나, 레이드 지원을 위한 명령어, 및 기타 플래시 메모리장치(100)에 대한 상태정보를 요청하는 명령어가 될 수 있다.
제어부(120)는 호스트 인터페이스부(110)를 통해 호스트(50)의 각종 명령어를 수신하고, 수신된 명령어를 수행한다. 또한, 제어부(120)는 호스트 인터페이스부(110)를 통해 수신된 명령어의 처리 결과를 호스트(50)로 리턴하며, 호스트(50)가 데이터를 요청할 경우, 메모리 셀(140)에서 데이터를 독출하고, 호스트 인터페이스부(110)를 통해 독출된 데이터를 호스트(50)로 제공한다.
또한, 제어부(120)는 호스트(50)가 블록(예컨대 참조부호 "140a")에 대한 데이터 읽기 명령을 전송할 때, 블록(예컨대 참조부호 "141a")에 포함되는 섹터(예컨대 참조부호 "ST1")에서 데이터를 획득하고, 획득한 데이터에 대해 ECC 오류 보정 을 수행한다. ECC 오류 보정은 섹터, 또는 블록에 포함되는 ECC 정보를 참조하여 수행하며, 어느 비트에서 오류가 발생하는지는 알 수 없어도, 몇 개의 비트에서 오류가 발생하는지는 인지할 수 있다. 제어부(120)는 ECC 오류 보정을 통해 획득한 오류 비트수를 이용하여 각 블록(141a ∼ 141n)에 대한 마모도 값을 산출하고, 산출된 마모도 값은 매핑 테이블에 저장한다.
여기서, 마모도 값은 아래의 각 호에 따라 결정될 수 있다.
1) 블록(141a)에 대한 마모도 값은 블록(141a)을 구성하는 각 섹터(ST1 ∼ STn)들의 오류 비트수 중 최대값이다.
2) 블록(141a)에 대한 마모도 값은 블록(141a)을 구성하는 각 섹터(ST1 ∼ STn)에서 발생한 오류 비트수 전체에 대한 합이다.
3) 블록(141a)에 대한 마모도 값은 블록(141a)을 구성하는 각 섹터(ST1 ∼ STn)에서 발생한 오류 비트수에 대한 평균값이다.
통상적인 마모도 평준화는 소거 횟수를 참조하여 수행된다. 통상적인 마모도 평준화는 호스트(50)에서 데이터 읽기 명령이 제어부(120)로 전달될 때, 소거 횟수가 가장 적은 블록을 기록대상 블록으로 선택한다. 그러나, 본 실시예에서는 각 블록(141a ∼ 141n)의 특성에 따라 그 값이 일정하지 않은 소거횟수 대신, 오류 비트수를 이용함으로써 기록대상 블록의 선택이 더 정확해지는 장점이 있다.
오류 비트수가 많다는 것은 기록 대상 블록에 결점이 많다는 것을 의미한다.
제어부(120)는 1) ∼ 3)에 기재된 바에 따라 블록(141a)에 대한 마모도 값을 산출하고, 산출된 마모도 값을 매핑 테이블에 기록한다. 매핑 테이블은 추후, 제어부(120)가 호스트(50)의 기록 명령에 응답하여 마모도가 가장 적은 블록을 선택할 때, 즉 마모도 평준화를 수행할 때, 제어부(120)에 의해 참조된다. 이때, 제어부(120)는 호스트(50)가 기록을 요청한 데이터를 마모도가 가장 적은 블록(141a ∼ 141n)에 기록한다.
바람직하게는, 제어부(120)는 FTL 처리부(121), 및 ECC 처리부(122)를 구비한다.
FTL 처리부(121)는 호스트(50)에서 데이터 기록 명령이 전송될 때, 매핑 테이블에 저장된 마모도 값을 참조하여 각 블록(141a ∼ 141n)에 대한 마모도 평준화를 수행한다. 또한, FTL 처리부(121)는 호스트(50)가 데이터 읽기 명령, 또는 데이터 기록명령을 전송하면서 함께 전송하는 논리주소(LBA)에 대한 물리주소(PBA)를 판단하고, 논리주소(LBA)와 물리주소(PBA)의 대응관계를 설정한다. 여기서, 논리주소(LBA)와 물리주소(PBA)의 대응관계는 마모도 평준화에 의해 변경될 수 있음은 물론이다.
ECC 처리부(122)는 호스트(50)에서 전송되는 데이터 읽기 명령에 응답하여 블록(141a ∼ 141n)에 포함되는 섹터(예컨대 참조부호 ST1)에서 데이터를 획득하고, 획득한 데이터에 대해 ECC 오류 보정을 수행한다. ECC 처리부(122)는 섹터(예컨대 참조부호 ST1)에서 획득한 데이터에 대해 ECC 오류 보정을 수행 후, 섹터(ST1)에서 발생한 오류 비트수를 판단한다. ECC 처리부(122)는 오류 비트수를 매핑 테이블에 기록하며, 매핑 테이블에 기록된 오류 비트수는 추후 마모도 값으로 사용된다. 마모도 값은 앞서의 항목 1) ∼ 3)을 참조하도록 한다.
여기서, ECC 처리부(122)가 1) 블록(141a)을 구성하는 각 섹터(ST1 ∼ STn)들의 오류 비트수 중 최대값을 마모도 값으로 사용할 경우, ECC 처리부(122)는 블록(141a)을 구성하는 섹터들(ST1 ∼ STn) 중 오류 비트수가 최대인 것만 매핑 테이블에 기록하고 나머지 오류 비트수는 무시할 수 있다. 여기서, ECC 처리부(122)가 매핑 테이블에 마모도 값(최대 오류 비트수)을 기록할 경우, 마모도 값의 기록을 위해, 3비트 ∼ 8비트 정도를 할당할 수 있다. 마모도 값은 매핑 테이블, 또는 각 블록(또는 블록에 소속되는 섹터)에 기록할 수 있으며, 오류가 발생한 비트수만 기록하면 되므로 통상의 매핑 테이블에 비해 매우 적은 비트수를 할당할 수 있다.
10만 번의 재기록이 가능한 SLC 방식의 플래시 메모리장치의 경우, 종래에는 10만 번을 기록하기 위해 수십 비트(예컨대 24비트)를 할당하였다.
한편, ECC 처리부(122)는 호스트(50)가 블록(예컨대 참조부호 141a)으로 데이터 기록 명령과, 데이터를 전송할 경우, 데이터를 블록(141a)에 기록할 때, 오류정정 코드를 생성하고, 생성된 오류 정정코드를 블록(141a)의 일 영역에 기록할 수 있다.
메모리 인터페이스부(130)는 제어부(120)에서 각 메모리 셀(140a ∼ 140n)로 제공되는 명령어를 전송하고, 각 메모리 셀(140a ∼ 140n)에서 독출된 데이터를 제어부(120)로 제공한다.
도 4 내지 도 6은 본 발명에 따른 매핑 테이블의 참조 도면을 도시한다.
먼저, 도 4는 누적 오류 비트수를 마모도 값으로 하는 매핑 테이블의 일 예 를 도시한다.
도 4에서, 매핑 테이블은 논리주소(LBA), 물리주소(PBA), 및 누적 오류 비트수에 대한 정보를 구비한다. 여기서, 매핑 테이블은 논리주소(LBA), 물리주소(PBA) 이외에도 플래시 메모리장치(100)를 위한 파일 시스템에 따라 블록의 불량 여부, 블록에 포함되는 섹터정보와 같은 부가정보를 더 포함할 수 있다.
다음으로, 도 5는 섹터(ST1 ∼ STn)에서 획득되는 오류 비트수들 중 최대값만을 마모도 값으로 하는 매핑 테이블의 일 예를 나타낸다.
도 5는 제어부(120)가 각 섹터(ST1 ∼ STn)에 대한 오류 비트수들 중 가장 많은 오류 비트수를 섹터(ST1 ∼ STn)를 포함하는 블록(141a)에 대한 마모도 값으로 설정한다.
마지막으로, 도 6은 블록을 구성하는 각 섹터의 오류 비트수에 대한 평균값을 마모도 값으로 이용하는 일 예를 도시한다.
도 6에서 오류 비트수에 대한 평균값은 아래의 각 호에 따라 산출될 수 있다.
4) 각 섹터(ST1 ∼ STn)에서 획득한 오류 비트수를 각 섹터(ST1 ∼ STn)의 개수로 나눈값을 블록(141a)에 대한 마모도 값으로 설정한다.
5) 제어부(120)가 ECC 오류 보정을 수행한 섹터의 수로 ECC 오류 보정을 하면서 발생한 오류 비트수를 나눈값을 블록(141a)에 대한 마모도 값으로 설정한다.
도 7은 본 발명의 일 실시예에 따른 흐름도를 나타낸다.
먼저, 제어부(120)는 호스트(50)의 명령을 기다리는 대기 상태를 유지하며, (S301), 호스트(50)의 명령이 발생하면 읽기명령, 및 읽기명령에 따른 논리주소(LBA)가 포함되는가를 판단한다(S302). 호스트(50)가 읽기명령, 및 기록명령을 제어부(120)로 전송할 때, 호스트(50)는 논리주소(LBA)를 함께 전송한다. 제어부(120)는 호스트(50)가 읽기명령, 및 그에 해당하는 논리주소(LBA)를 제공하지 않을 경우, 호스트(50)가 전송한 명령을 처리한다(S312). 호스트(50)는 플래시 메모리장치(100)의 상태정보를 요청하거나, 기록 명령을 전송하거나, 이전 명령의 수행 결과를 제어부(120)에 요청할 수 있다.
다음으로, 호스트(50)로부터 읽기명령과 그에 따른 논리주소(LBA)를 수신했을 때, FTL 처리부(121)는 매핑 테이블을 참조하여 호스트(50)의 논리 주소(LBA)에 대한 블록의 물리주소(PBA)를 대응한다(S303). 이후, FTL 처리부(121)는 호스트(50)의 논리 주소(LBA)에 대응하는 물리주소(PBA)의 블록에 데이터 읽기 명령을 전송한다(S304). 다음으로, ECC 처리부(122)는 물리주소(PBA)에 해당하는 블록의 섹터가 데이터를 전송하면(S305), 전송된 섹터의 데이터에 대해 ECC 오류보정을 수행하여 데이터의 오류를 수정한다(S306). 이때, ECC 처리부(122)는 섹터 데이터에 대한 오류보정 과정에서 섹터 데이터의 오류 비트수를 산출하며(S307), 호스트(50)로 수정된 데이터를 전송한다(S308). 다음으로, ECC 처리부(122)는 오류 비트수가 기준값에 부합하는가를 판단한다(S309). 여기서, 기준값은 매핑 테이블에 기록된 블록에 대한 최대값을 의미한다.
예컨대, ECC 처리부(122)가 오류 보정을 수행한 섹터가 참조부호 "ST1"이고, 섹터(ST1)가 포함되는 블록이 참조부호 "141a"이며, 매핑 테이블에 기록된 블 록(141a)에 대한 오류 비트수가 5일 경우, 기준값은 "5"가 된다.
즉, ECC 처리부(122)가 섹터에서 획득한 동일 블록에 대한 오류 비트수가 매핑 테이블에 기록된 값보다 작을 경우, 매핑 테이블(311)은 그대로 유지된다.
반대로, ECC 처리부(122)가 오류 보정 과정에서 동일 블록에 대해 산출한 오류 비트수가 매핑 테이블에 기록된 것보다 더 많을 경우, 매핑 테이블은 기록된 값을 갱신한다(S310)
한편, S309 단계는, 블록(예컨대 참조부호 "141a")에 대한 마모도 값이 블록(141a)을 구성하는 각 섹터(예컨대 참조부호 "ST1 ∼ STn")에서 발생한 오류 비트수 전체에 대한 합일 경우에는 필요치 않은 단계이며, S310 단계도 삭제될 수 있다.
또한, S309 단계는, 블록(예컨대 참조부호 "141a")에 대한 마모도 값은 블록(141a)을 구성하는 각 섹터(예컨대 참조부호 "ST1 ∼ STn")에서 발생한 오류 비트수에 대한 평균값일 경우에도 불필요한 단계이며, S310 단계도 삭제될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
도 1은 본 발명에 따른 플래시 메모리장치와 호스트의 접속관계에 대한 개념도,
도 2는 본 발명의 일 실시예에 따른 플래시 메모리장치에 대한 개념도,
도 3은 본 발명의 일 실실예에 따른 플래시 메모리장치의 블록개념도,
도 4 내지 도 6은 본 발명에 따른 매핑 테이블의 참조 도면, 그리고
도 7은 본 발명의 일 실시예에 따른 흐름도를 나타낸다.
*도면의 주요 부분에 대한 부호의 설명*
100 : 플래시 메모리장치 110 : 호스트 인터페이스부
120 : 제어부 121 : FTL 처리부
122 : ECC 처리부 130 : 메모리 인터페이스부
140 : 메모리 셀 150 : 램

Claims (11)

  1. 복수의 블록으로 구성되며, 각 블록은 복수의 섹터를 포함하는 적어도 하나의 메모리 셀; 및
    읽기 대상 섹터에 대한 ECC 보정을 통해 오류 비트수를 판단하고, 상기 오류 비트수를 상기 읽기 대상 섹터를 포함하는 블록에 대한 마모도 값으로 설정하며, 상기 마모도 값을 토대로 상기 각 블록에 대한 마모도 평준화를 수행하는 제어부;를 포함하는 것을 특징으로 하는 플래시 메모리장치.
  2. 제1항에 있어서,
    상기 마모도 값은,
    상기 각 블록에 포함되는 섹터들의 오류 비트수들 중 최대값인 것을 특징으로 하는 플래시 메모리장치.
  3. 제1항에 있어서,
    상기 마모도 값은,
    상기 각 블록에 포함되는 섹터들의 오류 비트수들의 합인 것을 특징으로 하는 플래시 메모리장치.
  4. 제1항에 있어서,
    상기 마모도 값은,
    상기 각 블록에 포함되는 섹터들의 오류 비트수에 대한 평균값인 것을 특징으로 하는 플래시 메모리장치.
  5. 제1항에 있어서,
    상기 제어부는,
    읽기 대상 섹터에 대한 ECC 보정을 수행하며, 상기 읽기 대상 섹터로부터 오류 비트수를 획득하는 ECC 처리모듈; 및
    상기 읽기 대상 섹터를 포함하는 블록에 상기 오류 비트수를 대응하는 매핑 테이블을 생성하고, 상기 매핑 테이블을 참조하여 마모도 평준화를 수행하는 FTL 처리부;를 포함하는 것을 특징으로 하는 플래시 메모리장치.
  6. 제5항에 있어서,
    상기 FTL 처리부는,
    호스트의 논리 주소에 대응하는 상기 블록의 물리 주소를 매핑하는 것을 특징으로 하는 플래시 메모리장치.
  7. 제5항에 있어서,
    상기 매핑 테이블은,
    호스트의 논리주소(LBA), 상기 블록의 물리주소(PBA), 및 상기 블록에 대한 오류 비트수에 대한 정보를 포함하는 것을 특징으로 하는 플래시 메모리장치.
  8. 복수의 블록으로 구성되며, 각 블록은 복수의 섹터를 포함하는 적어도 하나의 메모리 셀을 구비하는 플래시 메모리장치에 대한 제어방법에 있어서,
    읽기 대상 섹터에 대한 ECC 보정을 통해 상기 읽기 대상 섹터에 대한 오류 비트수를 판단하는 단계; 및
    상기 오류 비트수를 상기 읽기 대상 섹터를 포함하는 블록에 대한 마모도 값으로 설정하여 상기 각 블록에 대한 마모도 평준화를 수행하는 단계;를 포함하는 것을 특징으로 하는 플래시 메모리장치 제어방법.
  9. 제8항에 있어서,
    상기 마모도 값은,
    상기 각 블록에 포함되는 섹터들의 오류 비트수들 중 최대값인 것을 특징으로 하는 플래시 메모리장치 제어방법.
  10. 제8항에 있어서,
    상기 마모도 값은,
    상기 각 블록에 포함되는 섹터들의 오류 비트수들의 합인 것을 특징으로 하는 플래시 메모리장치 제어방법.
  11. 제8항에 있어서,
    상기 마모도 값은,
    상기 각 블록에 포함되는 섹터들의 오류 비트수에 대한 평균값인 것을 특징으로 하는 플래시 메모리장치 제어방법.
KR1020080120657A 2008-12-01 2008-12-01 플래시 메모리장치, 및 그 제어방법 KR20100062191A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080120657A KR20100062191A (ko) 2008-12-01 2008-12-01 플래시 메모리장치, 및 그 제어방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080120657A KR20100062191A (ko) 2008-12-01 2008-12-01 플래시 메모리장치, 및 그 제어방법

Publications (1)

Publication Number Publication Date
KR20100062191A true KR20100062191A (ko) 2010-06-10

Family

ID=42362505

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080120657A KR20100062191A (ko) 2008-12-01 2008-12-01 플래시 메모리장치, 및 그 제어방법

Country Status (1)

Country Link
KR (1) KR20100062191A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010060890A1 (de) 2010-06-29 2011-12-29 Hyundai Motor Co. Synchronisiervorrichtung für ein Getriebe
US9594673B2 (en) 2013-11-13 2017-03-14 Samsung Electronics Co., Ltd. Driving method of memory controller and nonvolatile memory device controlled by memory controller
CN113782082A (zh) * 2021-09-10 2021-12-10 深圳大普微电子科技有限公司 一种闪存的二维磨损均衡方法及固态硬盘

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010060890A1 (de) 2010-06-29 2011-12-29 Hyundai Motor Co. Synchronisiervorrichtung für ein Getriebe
US9594673B2 (en) 2013-11-13 2017-03-14 Samsung Electronics Co., Ltd. Driving method of memory controller and nonvolatile memory device controlled by memory controller
CN113782082A (zh) * 2021-09-10 2021-12-10 深圳大普微电子科技有限公司 一种闪存的二维磨损均衡方法及固态硬盘
CN113782082B (zh) * 2021-09-10 2024-01-16 深圳大普微电子科技有限公司 一种闪存的二维磨损均衡方法及固态硬盘

Similar Documents

Publication Publication Date Title
US11593259B2 (en) Directed sanitization of memory
US9520992B2 (en) Logical-to-physical address translation for a removable data storage device
US8812776B2 (en) Data writing method, and memory controller and memory storage device using the same
KR101086876B1 (ko) 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US9213629B2 (en) Block management method, memory controller and memory stoarge apparatus
US9268688B2 (en) Data management method, memory controller and memory storage apparatus
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
KR20140078893A (ko) 데이터 저장 장치의 동작 방법
US11144210B2 (en) Valid data merging method, memory control circuit unit and memory storage apparatus
US10564862B2 (en) Wear leveling method, memory control circuit unit and memory storage apparatus
US20170052720A1 (en) Data protection method, memory contorl circuit unit and memory storage apparatus
US11366751B2 (en) Storage device and storage control method
US20140089566A1 (en) Data storing method, and memory controller and memory storage apparatus using the same
KR20100062191A (ko) 플래시 메모리장치, 및 그 제어방법
US20190065101A1 (en) Data storing method, memory control circuit unit and memory storage device
KR20100055201A (ko) 플래시 메모리장치, 및 데이터 기록방법
CN109669620B (zh) 存储器管理方法、存储器控制电路单元及存储器储存装置
KR20100106109A (ko) 플래시 메모리장치
KR20100068905A (ko) 플래시 메모리장치, 및 그 제어방법
CN110633224A (zh) 逻辑转实体表更新方法及存储控制器

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination