KR20150107197A - 배드 블록을 이용한 스토리지 장치 및 방법 - Google Patents

배드 블록을 이용한 스토리지 장치 및 방법 Download PDF

Info

Publication number
KR20150107197A
KR20150107197A KR1020140029733A KR20140029733A KR20150107197A KR 20150107197 A KR20150107197 A KR 20150107197A KR 1020140029733 A KR1020140029733 A KR 1020140029733A KR 20140029733 A KR20140029733 A KR 20140029733A KR 20150107197 A KR20150107197 A KR 20150107197A
Authority
KR
South Korea
Prior art keywords
block
bad
page
bad block
virtual
Prior art date
Application number
KR1020140029733A
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 KR1020140029733A priority Critical patent/KR20150107197A/ko
Publication of KR20150107197A publication Critical patent/KR20150107197A/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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

Landscapes

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

Abstract

본 발명은 배드 블록 내에 존재하는 사용 가능한 페이지를 이용하여 스토리지 시스템의 수명을 연장하는 스토리지 장치 및 방법에 관한 것이다.
본 발명의 일면에 따른 배드 블록을 이용한 스토리지 장치는 배드 페이지를 포함하는 블록을 배드 블록으로 추출하고, 추출한 배드 블록의 정보를 포함하는 테이블을 구성하는 배드 블록 추출부와, 배드 블록 추출부가 추출한 배드 블록을 이용하여 버츄얼 블록을 구성하고, 버츄얼 블록의 정보를 포함하는 테이블을 구성하는 버츄얼 블록 구성부 및 커맨드를 입력 받고, 버츄얼 블록 내의 페이지를 할당하여 입력 받은 커맨드를 수행하는 제어부를 포함한다.

Description

배드 블록을 이용한 스토리지 장치 및 방법{APPARATUS AND METHOD FOR STORAGE USING BAD BLOCK}
본 발명은 배드 블록 내에 존재하는 사용 가능한 페이지를 이용하여 스토리지 시스템의 수명을 연장하는 스토리지 장치 및 방법에 관한 것이다.
1970년대에 등장한 SSD(Solid State Drive)는 NAND 플래시 또는 DRAM 등 초고속 반도체 메모리를 저장 매체로 사용하는 대용량 저장 장치이다. 이러한 초고속 반도체 메모리는 휴대폰, MP3, 메모리 카드 등에 사용되는 데이터 저장용 반도체 소자를 말한다. 수명이 제한적인 SSD와 같은 비휘발성 메모리를 활용한 스토리지 시스템에 대하여는 수명 연장과 관련한 니즈(Needs)가 있다.
이러한 스토리지의 수명을 연장하기 위한 종래기술로는 사용 중 발생한 배드 블록(Bad Block, BER이 ECC 엔진으로 수정 가능한 범위를 넘는 블록)을 FTL(Flash Translation Layer)이 사용하지 못하도록 배드 블록에 대한 정보를 테이블(Table)로 관리하는 기술이 소개되었다.
또한 BBS(Bad Block Salvaging) 기술은 스토리지의 사용 중에 발생한 배드 블록을 3가지 그룹(Backing Block, Discarded Block, Salvaged Block)으로 나눈다. Backing Block은 배드 블록 중 NAND 플래쉬 메모리 셀의 마모도가 상대적으로 적은 블록을 그룹화한 것이고, Discarded Block은 Discarded Threshold를 넘는 블록을 그룹화한 것이며, Salvaged Block은 Backing Block과 Discarded Block 사이의 마모도를 갖는 블록을 그룹화한 것이다. 이러한 BBS 기술에 따르면 Free Block 그룹에 Free Block을 할당하기 위하여 Backing Block 내의 사용 가능한 페이지를 Salvaged Block의 배드 페이지에 할당하여 Free Block을 생성하며, Discarded Block은 사용하지 않는다.
NAND 플래쉬 메모리 기반의 스토리지 시스템의 수명(Lifetime)을 향상시키기 위한 종래의 기술은 NAND 플래쉬 메모리로 발생하는 라이트(Write)를 줄이는 기술 또는 효율적으로 라이트(Write)하기 위한 기술이나, 이러한 종래 기술은 NAND 플래쉬 디바이스 자체의 수명을 향상시키지는 못하는 문제점이 있다.
또한, 종래 기술에 따르면 특정 배드 블록을 재사용하기 위하여 가장 많은 굿 페이지(Good Page)가 존재하는 배드 블록의 페이지를 특정 배드 블록의 배드 페이지 대신 사용하므로, 이는 페이지 매핑(Page Mapping) 방식과 유사하여 배드 블록 재사용과 관련된 매핑 테이블(Mapping Table)을 유지하는데 큰 오버헤드가 발생하는 문제점이 있다.
종래 기술에 따르면 굿 페이지(Good Page)가 다수 존재하는 하나의 배드 블록이 각기 다른 배드 블록의 배드 페이지에 매핑되어 있으므로, 합병 연산(Merge Operation) 발생 시 큰 오버헤드가 발생하는 문제점이 있다.
본 발명의 목적은 비트 오류율(BER, Bit Error Rate)이 기설정값보다 높은 배드 페이지(Bad Page)를 포함하는 배드 블록(Bad Block) 내의 사용 가능한 페이지를 재사용함으로써 스토리지 시스템(Storage System)의 수명을 연장하는 스토리지 장치 및 방법을 제공하는 데 목적이 있다.
본 발명의 일면에 따른 배드 블록을 이용한 스토리지 장치는 배드 페이지를 포함하는 블록을 배드 블록으로 추출하고, 추출한 배드 블록의 정보를 포함하는 테이블을 구성하는 배드 블록 추출부와, 배드 블록 추출부가 추출한 배드 블록을 이용하여 버츄얼 블록을 구성하고, 버츄얼 블록의 정보를 포함하는 테이블을 구성하는 버츄얼 블록 구성부 및 커맨드를 입력 받고, 버츄얼 블록 내의 페이지를 할당하여 입력 받은 커맨드를 수행하는 제어부를 포함하는 것을 특징으로 한다.
본 발명의 다른 면에 따른 배드 블록을 이용한 스토리지 장치는 비트 오류율 값이 기설정값보다 큰 페이지를 포함하는 블록을 배드 블록으로 추출하고, 추출한 배드 블록의 정보를 SLC 모드로 저장용 배드 블록의 LSB 페이지에 저장하는 것을 특징으로 한다.
본 발명의 또 다른 면에 따른 배드 블록을 이용한 스토리지 방법은 블록이 배드 블록인지 여부를 판단하여 배드 블록을 추출하고, 추출한 배드 블록의 정보 테이블을 구성하는 배드 블록 판단 단계와, 배드 블록을 이용하여 버츄얼 블록을 구성하고, 버츄얼 블록의 정보 테이블을 구성하는 버츄얼 블록 구성 단계 및 커맨드를 입력 받고, 입력 받은 커맨드에 해당하는 로지컬 페이지를 버츄얼 블록의 페이지로 매핑하여 커맨드를 수행하는 로지컬 블록 대 버츄얼 블록 매핑 단계를 포함하는 것을 특징으로 한다.
본 발명에 따른 배드 블록을 이용한 스토리지 장치 및 방법은 비트 오류율 값이 큰 배드 페이지를 포함하는 블록을 세크먼트 단위로 그룹화하고, 사용 가능한 세그먼트를 이용하여 새로운 버츄얼 블록을 구성함으로써, 배드 페이지를 제외한 영역을 최대한 재사용하여 플래시 디바이스의 P/E(Program/Erase) 사이클을 증가시키는 효과가 있다.
아울러 본 발명은 배드 페이지를 재사용하여 NAND 플래시 메모리 기반 스토리지 시스템의 수명을 향상시키는 효과가 있다.
비트 오류율 값이 큰 배드 페이지를 포함하는 배드 블록에 대한 정보 테이블을 저장함에 있어서 SLC 모드로 배드 블록 정보를 저장함으로써 배드 블록 정보에 대한 신뢰성을 확보하는 효과가 있다.
본 발명의 효과는 이상에서 언급한 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일면에 따른 배드 블록을 이용한 스토리지 장치를 나타내는 블록도.
도 2는 본 발명의 일 실시예에 따른 배드 블록의 세그먼트 및 배드 블록의 정보 테이블을 도시하는 개념도.
도 3은 본 발명의 일 실시예에 따른 배드 블록의 세그먼트 분할, 배드 블록의 정보 테이블 및 SLC 모드 전환을 나타내는 개념도.
도 4는 본 발명의 일 실시예에 따른 버츄얼 블록의 구성을 나타내는 예시도.
도 5는 본 발명의 일 실시예에 따른 버츄얼 블록의 정보 테이블을 나타내는 예시도.
도 6은 본 발명의 일 실시예에 따라 구성된 버츄얼 블록을 나타내는 개념도.
도 7a 및 도 7b는 본 발명의 일 실시예에 따른 버츄얼 블록에 대한 페이지 할당 및 커맨드 수행 과정을 나타내는 개념도.
도 8a 및 도 8b는 본 발명의 다른 실시예에 따른 SLC 모드 시 버츄얼 블록의 커맨드 수행 과정을 나타내는 개념도.
도 9는 본 발명의 다른 실시예에 따른 버츄얼 블록 오프셋에 대한 LSB 페이지의 물리적 주소 정보를 포함하는 SLC 모드 참조 테이블을 도시한 도면.
도 10, 도 11 및 도 12는 본 발명의 일 실시예에 따른 버츄얼 블록 구성, 버츄얼 블록의 정보 테이블, 버츄얼 블록의 개념도인 도 4, 도 5 및 도 6을 일반화하여 도시한 도면.
도 13은 본 발명의 또 다른 면에 따른 배드 블록을 이용한 스토리지 방법을 나타낸 순서도.
도 14는 본 발명의 또 다른 면에 따른 배드 블록을 이용한 스토리지 방법의 배드 블록의 정보 테이블 저장 단계를 상세히 나타낸 순서도.
이하에서는 도면을 참조하면서, 본 발명의 바람직한 실시예들을 구체적으로 설명한다.
도 1은 본 발명의 일면에 따른 배드 블록(Bad Block)을 이용한 스토리지(Storage) 장치를 나타내는 블록도이다.
도 1에 도시된 바와 같이, 배드 블록을 이용한 스토리지 장치는 배드 페이지(Bad Page)를 포함하는 블록을 배드 블록으로 추출하고, 추출한 배드 블록의 정보를 포함하는 테이블을 구성하는 배드 블록 추출부(100)와, 배드 블록 추출부(100)가 추출한 배드 블록을 이용하여 버츄얼(Virtual) 블록을 구성하고, 버츄얼 블록의 정보를 포함하는 테이블을 구성하는 버츄얼 블록 구성부(200) 및 프로그램(Program) 또는 리드(Read) 커맨드를 입력 받고, 배드 블록 추출부(100)가 구성한 배드 블록의 정보를 포함하는 테이블 및 버츄얼 블록 구성부(200)가 구성한 버츄얼 블록의 정보를 포함하는 테이블에 따라 할당된 배드 블록을 이용하여 입력 받은 커맨드를 수행하는 제어부(300)를 포함한다.
배드 블록 추출부(100)는 블록이 포함하는 적어도 어느 하나의 페이지의 비트 오류율(BER, Bit Error Rate) 값이 기설정값보다 큰 경우로서 ECC 엔진으로 복구가 가능한 범위를 넘는 경우, 해당 페이지를 배드 페이지로 판단하고, 배드 페이지를 포함하는 블록을 배드 블록으로 구분하여 추출한다.
해당 배드 블록 내에도 사용 가능한 다수의 페이지가 존재하므로, 배드 블록 추출부(100)는 추출한 배드 블록 내에 포함되는 페이지들을 세그먼트(Segment) 단위로 재구성한다.
도 2는 본 발명의 일 실시예에 따른 배드 블록의 세그먼트 분할 및 배드 블록의 정보 테이블을 도시하는 개념도이다. 도 2에 도시된 바와 같이, 배드 블록 추출부(100)는 배드 페이지를 포함하는 배드 블록(30)의 페이지들을 그룹핑하여 세그먼트 단위로 사용할 수 있는 영역 및 사용 불가한 영역으로 분할한다.
배드 블록 추출부(100)는 배드 블록의 물리적 주소(Physical Address), 각 세그먼트의 배드 페이지 포함 여부에 대한 정보(Valid Segment, 배드 페이지를 포함하는 세그먼트는 0을, 배드 페이지를 포함하지 않는 세그먼트는 1의 값을 가짐) 및 SLC 모드로의 사용 여부에 대한 정보를 포함하는 배드 블록의 정보를 포함하는 테이블(Bad Block Table)을 구성한다.
적어도 하나의 사용 가능한 영역에 해당하는 세그먼트가 존재하는 경우, 배드 블록 테이블의 SLC 모드 (Single Level Cell-Mode) 값은 0이 되고, SLC 모드로도 사용이 불가하고, 공정상의 이유로 사용이 불가한 블록에 해당하는 영구적 배드 블록(Permanent Bad Block)의 값은 1이 된다.
이 때, SLC 모드 값은 각 세그먼트가 모두 배드 페이지를 포함하여 밸리드 세그먼트 값이 모두 0이 되어 더 이상 MSB(Most Significant Bit) 페이지를 사용할 수 없을 때, SLC 모드로 전환하여 사용 가능함을 나타내는 값이다.
반면에, 도 3에 도시된 바와 같이, 배드 블록(30)의 각 세그먼트들에 적어도 하나 이상의 배드 페이지가 포함되는 경우, 배드 블록 테이블의 Valid Segment는 모두 0의 값을 가지게 되고, 이 때 SLC-mode 값은 1이 된다. 또한, SLC- 모드로도 사용할 수 없고, 공정상의 이유로 사용할 수 없는 블록인 경우 배드 블록 테이블의 영구적 배드 블록(Permanent Bad Block) 값은 0이 된다.
도 4는 본 발명의 일 실시예에 따른 버츄얼 블록 구성을 나타내는 예시도로서, 버츄얼 블록 구성부(200)는 배드 블록(2, 4)이 포함하는 세그먼트 중 배드 페이지를 포함하지 않는 세그먼트를 조합하여 버츄얼 블록(1A)을 구성한다.
도 4는 본 발명에 따른 버츄얼 블록 구성의 실시예를 설명하기 위한 개념도로서, 버츄얼 블록을 구성하는 세그먼트를 4개라고 가정한 경우에 한하여 도시한 개념도이다. 이는 본 발명의 일 실시예를 자세히 설명하기 위하여 든 예시에 불과하며, 버츄얼 블록을 구성하는 세그먼트의 수는 변경 가능하다. 버츄얼 블록을 구성하는 세그먼트의 수에 대하여 일반화된 경우의 실시예에 대하여는 도 10 내지 도 12에 도시된 바와 같다.
도 4에 도시된 바와 같이, 버츄얼 블록 구성부(200)는 배드블록(2, 4)에서 배드 페이지를 포함하지 않는, 즉 배드 블록 테이블 상에서 Valid Segment 값이 1인 세그먼트를 추출하고, 추출한 세그먼트의 조합을 통하여 버츄얼 블록(1A)을 구성한다.
일례로, 도 5 및 도 6에 도시된 바에 따르면, 버츄얼 블록 구성부(200)는 배드 블록(2)로부터 세그먼트 0 및 세그먼트 1을 추출하고, 배드 블록(4)로부터 세그먼트 0 및 세그먼트 2를 추출하여, 버츄얼 블록(1A)를 구성한다.
버츄얼 블록 구성부(200)는 세그먼트를 포함하는 배드 블록의 물리적 주소(예: 2, 4), 세그먼트의 물리적 주소(에: 0, 1 및 0, 2), SLC 모드로의 사용 여부에 대한 정보를 포함하는 버츄얼 블록의 정보를 포함하는 테이블을 구성한다.
버츄얼 블록의 세그먼트를 4개로 가정한 경우, 버츄얼 블록의 로지컬 세그먼트(Logical Segment) 0, 1, 2, 3은 각각 배드 블록(2)의 세그먼트 0, 배드 블록 (2)의 세그먼트 1, 배드 블록(4)의 세그먼트 0, 배드 블록(4)의 세그먼트 2에 대응된다.
도 7a 및 도 7b는 버츄얼 블록을 구성하는 세그먼트를 4개라고 가정한 경우인 본 발명의 일 실시예에 따라서 버츄얼 블록에 대한 페이지 할당 과정 및 커맨드 수행 과정을 도시하는 개념도이다.
제어부(300)는 커맨드가 포함하는 페이지를 버츄얼 블록의 세그먼트 및 버츄얼 블록의 세그먼트 내의 페이지로 매핑을 수행하고, 이 때 제어부(300)는 커맨드가 포함하는 페이지 번호 및 블록이 포함하는 페이지의 수에 따라 설정되는 오프셋에 기초하여 페이지 오프셋을 산출하고, 산출된 페이지 오프셋에 따라 버츄얼 블록 내의 페이지를 할당하여 커맨드를 수행한다.
도 7a 및 도 7b를 참조하면, 입력되는 커맨드는 프로그램(Program) 또는 리드(Read) 커맨드로서, 페이지 148에 대한 커맨드이다. 하나의 블록에 128개의 페이지가 포함된다고 가정하는 경우, 148을 128로 나눈 몫은 1이고, 나머지는 20이 되며, 이러한 나머지 20이 오프셋으로서 산출된다.
스토리지 장치의 FTL(Flash Translation Layer)에서는 로지컬 어드레스(Logical Address)의 피지컬 어드레스(Physical Address)으로의 매핑이 수행되며, 로지컬 블록(1)은 FTL 관점에서 보는 주소 체계이다.
로지컬 블록(1)에서 버츄얼 블록(1A)로 매핑을 수행함에 있어서, 제어부(300)는 버츄얼 블록 테이블을 참조하여, 매핑을 수행한다.
하나의 세그먼트에 페이지가 32개 있다고 가정하는 경우, 20을 32로 나눈 몫은 0이고, 나머지는 20이 된다. 즉, 몫에 해당하는 0은 버츄얼 블록(1A)의 로지컬 세그먼트 0에 해당함을 의미하고, 나머지 20은 세그먼트 0에서 20번째 페이지를 할당하는 페이지 오프셋이 된다.
제어부(300)는 이러한 페이지 오프셋을 이용하여 페이지 오프셋에 해당하는 세그먼트(배드 블록 2의 세그먼트 0) 내의 페이지를 찾고, 해당되는 페이지를 할당하여 입력 받은 커맨드를 수행하게 된다.
도 8a 및 도 8b는 본 발명의 다른 실시예에 따른 SLC 모드 시 버츄얼 블록의 커맨드 수행 과정을 나타내는 개념도로서, 제어부(300)는 버츄얼 블록의 정보 테이블을 통하여 SLC-모드로 사용하는 경우, 커맨드가 포함하는 페이지 정보 148을 한 블록의 페이지 수 128로 나눈 나머지값 20을 오프셋으로 산출하고, 오프셋 20을 하나의 세그먼트에 포함되는 페이지 수 32로 나눈 나머지값 20을 페이지 오프셋으로 산출한 후, 도 9에 도시된 SLC 모드 참조 테이블을 이용하여 커맨드가 포함하는 페이지 정보에 해당되는 LSB 페이지를 할당하여 커맨드를 수행한다. 도 9에 도시된 바에 따르면 SLC 모드 참조 테이블은 10진수로 표현된 각 버츄얼 세그먼트 별 페이지 오프셋 값에 대응하는 LSB의 물리적 페이지 번호(도 9에 도시된 바에 따르면 헥사 코드로 표현됨)에 대한 정보를 포함한다. 제조사에 따라 기설정된 헥사 코드가 상이할 수 있으나, 본 발명의 다른 실시예에 따르면, 페이지 오프셋이 20인 경우 해당되는 헥사코드는 26이다.
본 발명의 일면에 따른 배드 블록을 이용한 스토리지 장치는 배드 블록의 정보를 포함하는 테이블을 저장하는 저장용 베드 블록을 SLC 모드로 사용하여, 배드 블록의 정보를 포함하는 테이블을 저장용 배드 블록의 LSB 페이지에 저장하는 관리부(400)를 더 포함하는 것이 바람직하다.
배드 블록으로 판명이 되었다는 것은, 이미 웨어 카운트(Wear count)가 높을 확률이 크므로, 배드 블록 정보에 대한 신뢰성을 확보하기 위하여, LSB 페이지만 사용하는 SLC 모드로 저장용 배드 블록을 사용하며, 관리부(400)는 배드 블록 정보를 저장용 배드 블록에 저장한다.
도 10, 도 11, 도 12는 본 발명의 일 실시예에 따른 버츄얼 블록 구성, 버츄얼 블록의 정보 테이블, 버츄얼 블록의 개념도에 대한 도 4, 도 5, 도 6을 일반화하여 도시한 도면이다.
도 10을 참조하면, 버츄얼 블록 구성부(200)는 배드블록(2A, 2B)로부터 배드 페이지를 포함하지 않은 세그먼트들을 추출하여 버츄얼 블록(1N+1)을 구성한다.
도 11에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 경우 배드 블록(2A)의 세그먼트(0, 1, … M/2-1)와 배드 블록(2B)의 세그먼트(0, 2, … M/2)의 조합으로 버츄얼 블록 (1N+1)이 생성된다. 이에 따라 생성된 버츄얼 블록에 대한 개념도는 도 12를 통하여 도시된다.
본 발명의 다른 면에 따른 배드 블록을 이용한 스토리지 장치는 비트 오류율(BER) 값이 기설정값보다 큰, 즉 ECC 엔진으로 수정이 가능한 범위를 넘는 비트 오류율 값을 가지는 페이지를 포함하는 블록을 배드 블록으로 추출하고, 추출한 배드 블록의 정보를 SLC 모드로 저장용 배드 블록의 LSB 페이지에 저장하는 배드 블록을 이용한 스토리지 장치이다.
본 발명의 다른 면에 따른 배드 블록을 이용한 스토리지 장치는 배드 블록이 발생하는 경우 배드 블록의 정보를 생성하고, 배드 블록의 정보에 대한 테이블을 저장하는 저장용 블록이 포화상태인지 확인하고, 포화상태가 아닌 경우 배드 블록의 정보에 대한 테이블을 저장용 블록에 저장한다. 반면, 저장용 블록이 포화상태인 경우, LSB 페이지만 사용하는 SLC 모드로 배드 블록 정보 저장용 배드 블록을 사용하여 배드 블록의 정보에 대한 테이블을 저장함으로써 배드 블록 정보의 저장에 대한 신뢰성을 높인다.
도 13은 본 발명의 또 다른 면에 따른 배드 블록을 이용한 스토리지 방법을 나타낸 순서도이고, 도 14는 본 발명의 또 다른 면에 따른 배드 블록을 이용한 스토리지 방법의 배드 블록의 정보 테이블 저장 단계를 상세히 나타낸 순서도이다.
도 13에 도시된 바와 같이, 배드 블록을 이용한 스토리지 방법은 블록이 배드 블록인지 여부를 판단하여 배드 블록을 추출하고, 추출한 배드 블록의 정보 테이블을 구성하는 배드 블록 판단 단계(S100)와, 배드 블록을 이용하여 버츄얼 블록을 구성하고, 버츄얼 블록의 정보 테이블을 구성하는 버츄얼 블록 구성 단계(S200) 및 커맨드를 입력 받고, 배드 블록의 정보 테이블 및 버츄얼 블록의 정보 테이블에 따라 커맨드가 포함하는 로지컬 페이지를 버츄얼 블록의 페이지로 매핑하여 커맨드를 수행하는 로지컬 블록 대 버츄얼 블록 매핑 단계(S300)를 포함한다.
배드 블록 판단 단계(S100)는 도 2에 도시된 바와 같이, 블록 내의 페이지의 비트 오류율(BER) 값이 기설정값보다 큰 경우 페이지를 포함하는 블록을 배드 블록(30)으로 추출한다. 이 때, 페이지의 비트 오류율 값이 ECC 엔진으로 수정이 가능한 최대값인 기설정값보다 큰 경우, 블록을 배드 블록(30)으로 추출한다.
배드 블록 판단 단계(S100)는 도 2에 도시된 바와 같이, 비트 오류율 값과 기설정값의 비교 결과에 따라 추출된 배드 블록을 세그먼트 단위로 재구성하고(일례로, n개의 세그먼트로 분할하는 경우Segment 0 내지 Segment n-1로 분할함), 배드 블록의 물리적 주소(30), 세그먼트의 배드 페이지 포함 여부에 대한 정보(Valid Segments), SLC 모드로의 사용 여부에 대한 정보(SLC-mode) 및 영구적 배드 블록 여부에 대한 정보(Permanent Bad Block)를 포함하는 배드 블록의 정보 테이블 구성한다.
버츄얼 블록 구성 단계(S200)는 도 4에 도시된 바와 같이 배드 블록(2, 4)이 포함하는 세그먼트(배드 블록 2의 세그먼트 0 및 세그먼트 1, 배드 블록 4의 세그먼트 0 및 세그먼트 2)를 조합하여 버츄얼 블록(1A)을 구성하고, 버츄얼 블록(1A)을 구성하는 배드 블록 및 배드 블록의 세그먼트에 대한 물리적 주소(0, 1, 0, 2) 및 SLC 모드로의 사용 여부 정보를 포함하는 버츄얼 블록의 정보 테이블을 구성한다.
로지컬 블록 대 버츄얼 블록 매핑 단계(S300)는 도 7에 도시된 바와 같이, 프로그램(Program) 커맨드 또는 리드(Read) 커맨드가 포함하는 페이지 정보를 이용하여 버츄얼 블록(1A)의 세그먼트 내의 페이지로 매핑을 수행하여, 커맨드를 수행할 버츄얼 블록의 페이지를 할당한다.
로지컬 블록 대 버츄얼 블록 매핑 단계(S300)는 커맨드가 포함하는 페이지 번호(도 7에 도시된 실시예에 따르면, 148) 및 블록이 포함하는 페이지의 수(도 7에 도시된 실시예에 따르면, 128)에 따라 설정되는 오프셋 값인 20에 기초하여 페이지 오프셋 20을 산출하고, 산출한 페이지 오프셋 20에 따라 버츄얼 블록 내의 페이지를 할당하여 커맨드를 수행한다.
로지컬 블록 대 버츄얼 블록 매핑 단계는(S300) 도 8에 도시된 바와 같이 SLC 모드로 커맨드를 수행하는 경우 버츄얼 블록의 정보 테이블에 따라 구성된 SLC 모드 참조 테이블(SLC-mode Reference Table)을 이용하여 산출된 페이지 오프셋에 따라 버츄얼 블록 내의 LSB 페이지를 할당하여 커맨드를 수행한다.
본 발명에 따른 배드 블록을 이용한 스토리지 방법은 배드 블록의 정보 테이블을 저장하는 단계를 더 포함하되, 배드 블록의 정보 테이블을 저장하는 단계는 배드 블록의 정보를 생성하는 단계(S400)와, 배드 블록 정보 테이블을 저장하는 저장용 배드 블록이 포화 상태인지 판단하는 단계(S500)와, 저장용 블록이 포화 상태인 경우 저장용 배드 블록을 SLC 모드로 사용하는 단계(S600) 및 SLC 모드로 사용되는 저장용 배드 블록에 배드 블록의 정보 테이블을 저장하는 단계(S700)를 포함한다.
배드 블록의 정보 테이블을 저장하는 단계(S700)에서 SLC 모드로 저장용 배드 블록에 배드 블록의 정보 테이블을 저장함으로써, 배드 블록 정보의 신뢰성을 확보하는 효과가 있다.
이제까지 본 발명의 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 배드 블록 추출부 200: 버츄얼 블록 구성부
300: 제어부 400: 관리부

Claims (20)

  1. 배드 페이지를 포함하는 블록을 배드 블록으로 추출하고, 상기 추출한 배드 블록의 정보를 포함하는 테이블을 구성하는 배드 블록 추출부;
    상기 배드 블록 추출부가 추출한 배드 블록을 이용하여 버츄얼 블록을 구성하고, 상기 버츄얼 블록의 정보를 포함하는 테이블을 구성하는 버츄얼 블록 구성부; 및
    커맨드를 입력 받고, 상기 버츄얼 블록 내의 페이지를 할당하여 상기 입력 받은 커맨드를 수행하는 제어부
    를 포함하는 배드 블록을 이용한 스토리지 장치.
  2. 제1항에 있어서, 상기 배드 블록 추출부는
    상기 블록이 포함하는 적어도 하나의 페이지의 비트 오류율값이 기설정값보다 큰 경우 해당 페이지를 배드 페이지로 판단하고, 상기 배드 페이지를 포함하는 상기 블록을 배드 블록으로 구분하여 추출하고, 상기 추출한 배드 블록이 포함하는 페이지를 세그먼트 단위로 재구성하는 것
    인 배드 블록을 이용한 스토리지 장치.
  3. 제2항에 있어서, 상기 배드 블록 추출부는
    상기 배드 블록의 물리적 주소, 상기 세그먼트의 배드 페이지 포함 여부에 대한 정보 및 SLC 모드로의 사용 여부에 대한 정보를 포함하는 상기 배드 블록의 정보를 포함하는 테이블을 구성하는 것
    인 배드 블록을 이용한 스토리지 장치.
  4. 제2항에 있어서, 상기 버츄얼 블록 구성부는
    상기 배드 블록이 포함하는 세그먼트 중 상기 배드 페이지를 포함하지 않는 세그먼트를 조합하여 상기 버츄얼 블록을 구성하는 것
    인 배드 블록을 이용한 스토리지 장치.
  5. 제4항에 있어서, 상기 버츄얼 블록 구성부는
    상기 세그먼트를 포함하는 배드 블록의 물리적 주소, 상기 세그먼트의 물리적 주소 및 SLC 모드로의 사용 여부에 대한 정보를 포함하는 상기 버츄얼 블록의 정보를 포함하는 테이블을 구성하는 것
    인 배드 블록을 이용한 스토리지 장치.
  6. 제4항에 있어서, 상기 제어부는
    상기 커멘드가 포함하는 페이지를 상기 버츄얼 블록의 세그먼트 및 상기 버츄얼 블록의 세그먼트 내의 페이지로 매핑을 수행하는 것
    인 배드 블록을 이용한 스토리지 장치.
  7. 제6항에 있어서, 상기 제어부는
    상기 커맨드가 포함하는 페이지 번호 및 상기 메모리 블록이 포함하는 페이지의 수에 따라 설정되는 오프셋에 기초하여 페이지 오프셋을 산출하고, 상기 산출된 페이지 오프셋에 따라 상기 버츄얼 블록 내의 페이지를 할당하여 상기 커맨드를 수행하는 것
    인 배드 블록을 이용한 스토리지 장치.
  8. 제7항에 있어서, 상기 제어부는
    SLC 모드로 상기 커맨드를 수행하는 경우 상기 버츄얼 블록 테이블에 따라 구성된 SLC(Single Level Cell) 모드 참조 테이블을 이용하여 산출된 페이지 오프셋에 따라 상기 버츄얼 블록 내의 LSB(Least Significant Bit) 페이지를 할당하여 상기 커맨드를 수행하는 것
    인 배드 블록을 이용한 스토리지 장치.
  9. 제3항에 있어서,
    상기 배드 블록의 정보를 포함하는 테이블을 저장하는 저장용 배드 블록을 SLC 모드로 사용하여, 상기 배드 블록의 정보를 포함하는 테이블을 상기 저장용 배드 블록의 LSB 페이지에 저장하는 관리부
    를 더 포함하는 배드 블록을 이용한 스토리지 장치.
  10. 비트 오류율 값이 기설정값보다 큰 페이지를 포함하는 메모리 블록을 배드 블록으로 추출하고, 상기 추출한 배드 블록의 정보를 SLC 모드로 저장용 배드 블록의 LSB 페이지에 저장하는 배드 블록을 이용한 스토리지 장치.
  11. 메모리 블록이 배드 블록인지 여부를 판단하여 상기 배드 블록을 추출하고, 상기 추출한 배드 블록의 정보 테이블을 구성하는 배드 블록 판단 단계;
    상기 배드 블록을 이용하여 버츄얼 블록을 구성하고, 상기 버츄얼 블록의 정보 테이블을 구성하는 버츄얼 블록 구성 단계; 및
    커맨드를 입력 받고, 상기 커맨드에 해당하는 로지컬 페이지를 상기 버츄얼 블록의 페이지로 매핑하여 상기 커맨드를 수행하는 로지컬 블록 대 버츄얼 블록 매핑 단계
    를 포함하는 배드 블록을 이용한 스토리지 방법.
  12. 제11항에 있어서, 상기 배드 블록 판단 단계는
    상기 블록 내의 페이지의 비트 오류율 값이 기설정값보다 큰 경우 상기 페이지를 포함하는 블록을 상기 배드 블록으로 추출하는 것
    인 배드 블록을 이용한 스토리지 방법.
  13. 제12항에 있어서, 상기 배드 블록 판단 단계는
    상기 비트 오류율 값과 기설정값의 비교 결과에 따라 추출된 상기 배드 블록을 세크먼트 단위로 재구성하는 것
    인 배드 블록을 이용한 스토리지 방법.
  14. 제13항에 있어서, 상기 배드 블록 판단 단계는
    상기 배드 블록의 물리적 주소, 상기 세그먼트의 배드 페이지 포함 여부 정보 및 SLC 모드로의 사용 여부에 대한 정보를 포함하는 상기 배드 블록의 정보 테이블 구성하는 것
    인 배드 블록을 이용한 스토리지 방법.
  15. 제13항에 있어서, 상기 버츄얼 블록 구성 단계는
    상기 배드 블록이 포함하는 세그먼트를 조합하여 상기 버츄얼 블록을 구성하는 것
    인 배드 블록을 이용한 스토리지 방법.
  16. 제15항에 있어서, 상기 버츄얼 블록 구성 단계는
    상기 버츄얼 블록을 구성하는 배드 블록 및 상기 배드 블록의 세그먼트에 대한 물리적 주소 및 SLC 모드로의 사용 여부 정보를 포함하는 상기 버츄얼 블록의 정보 테이블을 구성하는 것
    인 배드 블록을 이용한 스토리지 방법.
  17. 제15항에 있어서, 상기 로지컬 블록 대 버츄얼 블록 매핑 단계는
    상기 커맨드가 포함하는 페이지를 상기 버츄얼 블록의 세그먼트 내의 페이지로 매핑을 수행하는 것
    인 배드 블록을 이용한 스토리지 방법.
  18. 제17항에 있어서, 상기 로지컬 블록 대 버츄얼 블록 매핑 단계는
    상기 커맨드가 포함하는 페이지 번호 및 상기 메모리 블록이 포함하는 페이지의 수에 따라 설정되는 오프셋에 기초하여 페이지 오프셋을 산출하고, 상기 산출한 페이지 오프셋에 따라 상기 버츄얼 블록 내의 페이지를 할당하여 상기 커맨드를 수행하는 것
    인 배드 블록을 이용한 스토리지 방법.
  19. 제18항에 있어서, 상기 로지컬 블록 대 버츄얼 블록 매핑 단계는
    SLC 모드로 상기 커맨드를 수행하는 경우 상기 버츄얼 블록의 정보 테이블에 따라 구성된 SLC 모드 참조 테이블을 이용하여 산출된 버츄얼 블록 오프셋에 따라 상기 버츄얼 블록 내의 LSB 페이지를 할당하여 상기 커맨드를 수행하는 것
    인 배드 블록을 이용한 스토리지 방법.
  20. 제14항에 있어서,
    상기 배드 블록의 정보 테이블을 저장하는 단계를 더 포함하되, 상기 배드 블록의 정보 테이블을 저장하는 단계는
    상기 배드 블록의 정보 테이블을 저장하는 저장용 블록이 포화 상태인지 판단하는 단계와,
    상기 저장용 블록이 포화 상태인 경우 저장용 배드 블록을 SLC 모드로 사용하는 단계 및
    상기 SLC 모드로 사용되는 저장용 배드 블록에 상기 배드 블록의 정보 테이블을 저장하는 단계를 포함하는 것
    인 배드 블록을 이용한 스토리지 방법.
KR1020140029733A 2014-03-13 2014-03-13 배드 블록을 이용한 스토리지 장치 및 방법 KR20150107197A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140029733A KR20150107197A (ko) 2014-03-13 2014-03-13 배드 블록을 이용한 스토리지 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140029733A KR20150107197A (ko) 2014-03-13 2014-03-13 배드 블록을 이용한 스토리지 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20150107197A true KR20150107197A (ko) 2015-09-23

Family

ID=54245758

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140029733A KR20150107197A (ko) 2014-03-13 2014-03-13 배드 블록을 이용한 스토리지 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20150107197A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366761B2 (en) 2016-09-05 2019-07-30 SK Hynix Inc. Memory system and operating method thereof
US10366776B2 (en) 2016-11-29 2019-07-30 SK Hynix Inc. Memory system for effectively organizing super memory block and operating method thereof
CN114398010A (zh) * 2022-01-14 2022-04-26 深圳宏芯宇电子股份有限公司 数据读写方法、存储器存储装置及存储器控制器
US11379363B2 (en) 2019-07-25 2022-07-05 SK Hynix Inc. Controller, memory system, and operating methods thereof

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366761B2 (en) 2016-09-05 2019-07-30 SK Hynix Inc. Memory system and operating method thereof
US10366776B2 (en) 2016-11-29 2019-07-30 SK Hynix Inc. Memory system for effectively organizing super memory block and operating method thereof
US11379363B2 (en) 2019-07-25 2022-07-05 SK Hynix Inc. Controller, memory system, and operating methods thereof
CN114398010A (zh) * 2022-01-14 2022-04-26 深圳宏芯宇电子股份有限公司 数据读写方法、存储器存储装置及存储器控制器

Similar Documents

Publication Publication Date Title
US11693770B2 (en) Memory system and method for controlling nonvolatile memory
US10545863B2 (en) Memory system and method for controlling nonvolatile memory
US9170885B2 (en) Independent management of data and parity logical block addresses
US20100088461A1 (en) Solid state storage system using global wear leveling and method of controlling the solid state storage system
WO2018189858A1 (ja) ストレージシステム
US20100082917A1 (en) Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method
KR102349999B1 (ko) 반도체 장치 및 그 동작 방법
KR101086876B1 (ko) 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR101090394B1 (ko) 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US10073771B2 (en) Data storage method and system thereof
US20160034341A1 (en) Orphan block management in non-volatile memory devices
CN108475230B (zh) 一种存储系统和系统垃圾回收方法
JP6130971B2 (ja) データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム
KR20150107197A (ko) 배드 블록을 이용한 스토리지 장치 및 방법
KR20180003692A (ko) 메모리 시스템 및 그의 동작방법
US9703495B2 (en) Memory controller, memory system, and memory control method
KR101626218B1 (ko) 블록 기반의 페이지 매핑 방법
JP2020017134A (ja) 記憶装置及び記憶制御方法
CN111813708B (zh) 用于存储装置的块映射系统和方法
JP2021125089A (ja) メモリコントローラ及びフラッシュメモリシステム
JP4952741B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
EP3035195A1 (en) A wear leveling method and a wear leveling system for a non-volatile memory

Legal Events

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