KR20120003283A - 데이터 저장 장치 및 그것의 배드 블록 관리 방법 - Google Patents

데이터 저장 장치 및 그것의 배드 블록 관리 방법 Download PDF

Info

Publication number
KR20120003283A
KR20120003283A KR1020100064049A KR20100064049A KR20120003283A KR 20120003283 A KR20120003283 A KR 20120003283A KR 1020100064049 A KR1020100064049 A KR 1020100064049A KR 20100064049 A KR20100064049 A KR 20100064049A KR 20120003283 A KR20120003283 A KR 20120003283A
Authority
KR
South Korea
Prior art keywords
block
virtual
storage medium
bad
address
Prior art date
Application number
KR1020100064049A
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 KR1020100064049A priority Critical patent/KR20120003283A/ko
Priority to US13/175,361 priority patent/US20120005451A1/en
Publication of KR20120003283A publication Critical patent/KR20120003283A/ko

Links

Images

Classifications

    • 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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

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

Abstract

여기에 제공되는 데이터 저장 장치는 저장 매체와; 그리고 상기 저장 매체를 제어하도록 구성된 제어기를 포함하며, 상기 제어기는 논리 어드레스 공간과 상기 저장 매체의 가상 어드레스 공간의 사상을 관리하도록 구성되되, 상기 저장 매체의 가상 어드레스 공간은 가변된다.

Description

데이터 저장 장치 및 그것의 배드 블록 관리 방법{DATA STORAGE DEVICE AND BAD BLOCK MANAGING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것이다.
반도체 메모리는, 일반적으로, 위성에서 소비자 전자 기술까지의 범위에 속하는 마이크로프로세서를 기반으로 한 응용 및 컴퓨터과 같은 디지털 로직 설계의 가장 필수적인 마이크로 전자 소자이다. 그러므로, 높은 집적도 및 빠른 속도를 위한 축소 (scaling)를 통해 얻어지는 프로세스 향상 및 기술 개발을 포함한 반도체 메모리의 제조 기술의 진보는 다른 디지털 로직 계열의 성능 기준을 확립하는 데 도움이 된다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치와 불 휘발성 반도체 메모리 장치로 나뉘어진다. 휘발성 반도체 메모리 장치에 있어서, 로직 정보는 스태틱 랜덤 액세스 메모리의 경우 쌍안정 플립-플롭의 로직 상태를 설정함으로써 또는 다이나믹 랜덤 액세스 메모리의 경우 커패시터의 충전을 통해 저장된다. 휘발성 반도체 메모리 장치의 경우, 전원이 인가되는 동안 데이터가 저장되고 읽혀지며, 전원이 차단될 때 데이터는 소실된다.
MROM, PROM, EPROM, EEPROM 등과 같은 불 휘발성 반도체 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 불 휘발성 메모리 데이터 저장 상태는 사용되는 제조 기술에 따라 영구적이거나 재프로그램 가능하다. 불 휘발성 반도체 메모리 장치는 컴퓨터, 항공 전자 공학, 통신, 그리고 소비자 전자 기술 산업과 같은 넓은 범위의 응용에서 프로그램 및 마이크로코드의 저장을 위해서 사용된다. 단일 칩에서 휘발성 및 불 휘발성 메모리 저장 모드들의 조합이 빠르고 재프로그램 가능한 불 휘발성 메모리를 요구하는 시스템에서 불 휘발성 RAM (nvRAM)과 같은 장치들에서 또한 사용 가능하다. 게다가, 응용 지향 업무를 위한 성능을 최적화시키기 위해 몇몇 추가적인 로직 회로를 포함하는 특정 메모리 구조가 개발되어 오고 있다.
불 휘발성 반도체 메모리 장치에 있어서, MROM, PROM 및 EPROM은 시스템 자체적으로 소거 및 쓰기가 자유롭지 않아서 일반 사용자들이 기억 내용을 새롭게 하기가 용이하지 않다. 이에 반해 EEPROM은 전기적으로 소거 및 쓰기가 가능하므로 계속적인 갱신이 필요한 시스템 프로그래밍(system programming)이나 보조 기억 장치로의 응용이 확대되고 있다.
본 발명의 목적은 배드 블록들을 관리하는 데이터 저장 장치 및 그것의 배드 블록 관리 방법을 제공하는 것이다.
본 발명의 일 특징은 저장 매체와; 그리고 상기 저장 매체를 제어하도록 구성된 제어기를 포함하며, 상기 제어기는 논리 어드레스 공간과 상기 저장 매체의 가상 어드레스 공간의 사상을 관리하도록 구성되되, 상기 저장 매체의 가상 어드레스 공간은 가변되는 데이터 저장 장치를 제공하는 것이다.
본 발명의 다른 특징은 저장 매체를 포함하는 데이터 저장 장치의 배드 블록 관리 방법을 제공하는 것이며, 배드 블록 관리 방법은 상기 저장 매체의 가상 어드레스 공간을 결정하고, 상기 저장 매체에서 배드 블록이 발생할 때, 상기 저장 매체의 가상 어드레스 공간을 불연속적으로 가변시키는 것을 포함한다.
본 발명의 예시적인 실시예들에 따르면, 배드 블록의 가상 어드레스를 맵 테이블로부터 제거하고 배드 블록의 가상 어드레스 대신 대체된 블록의 가상 어드레스를 대응하는 논리 어드레스에 사상함으로써 유저 데이터 영역의 가상 어드레스 공간을 불연속적으로 가변시키는 것이 가능하다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 2는 도 1에 도시된 데이터 저장 장치의 배드 블록 관리 방법을 설명하기 위한 도면이다.
도 3은 배드 블록이 생성되기 전후의 맵 테이블들을 보여주는 도면이다.
도 4는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 동작을 개략적으로 설명하기 위한 흐름도이다.
도 5는 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 6은 도 5에서 설명된 제어기에 의해서 관리되는 가상 어드레스 공간을 설명하기 위한 도면이다.
도 7은 배드 블록이 생성되기 전후에 플래시 변환 계층에 의해서 관리되는 맵 테이블을 보여주는 도면이다.
도 8은 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치의 동작을 설명하기 위한 흐름도이다.
도 9는 본 발명의 또 다른 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 10a 및 도 10b는 도 9에서 설명된 언페어드 맵핑 방식을 개략적으로 설명하기 위한 도면이다.
도 11은 본 발명의 또 다른 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 12는 본 발명의 예시적인 실시예에 따른 제어기를 개략적으로 보여주는 블록도이다.
도 13은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 저장 매체를 개략적으로 보여주는 블록도이다.
도 14는 본 발명의 예시적인 실시예들에 따른 데이터 저장 시스템을 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 또한 명세서 전체에 걸쳐서 동일한 참조번호로 표시된 부분들은 동일한 구성요소를 나타낸다.
본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작, 소자 및 장치의 존재 또는 추가를 의미한다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 1을 참조하면, 데이터 저장 장치는 M-비트 데이터(M은 1 또는 그 보다 큰 정수)를 저장하는 저장 매체(100)를 포함할 것이다. 저장 매체(100)는 텍스트, 그래픽, 소프트웨어 코드, 등과 같은 다양한 데이터 형태들을 갖는 데이터 정보를 저장하는 데 사용될 것이다. 저장 매체(100)는, 예를 들면, 낸드 플래시 메모리, 노어 플래시 메모리, 상변화 메모리 장치(PRAM), 강유전체 메모리 장치(FeRAM), 자기 저항램 장치(MRAM), 등과 같은 불 휘발성 메모리들을 이용하여 구성될 수 있다. 하지만, 저장 매체(100)에 적용되는 불 휘발성 메모리들이 여기에 게재된 것에 국한되지 않음은 잘 이해될 것이다. 메모리 셀 어레이(101)는 2차원 어레이 구조(two-dimensional array structure) 또는 3차원 어레이 구조(three-dimensional array structure)를 갖도록 구성될 수 있다.
저장 매체(100)는, 도 1에 도시된 바와 같이, 복수의 블록들(BLK1∼BLKi, BLKi+1∼BLKj)로 구성된 메모리 셀 어레이(101)를 포함할 것이다. 메모리 셀 어레이(101)는 유저 데이터가 저장되는 유저 데이터 영역(101a)과 유저 데이터 영역(101a)의 배드 블록들을 대체하는 데 사용되는 예비 영역(reserved area)(101b)으로 구분된다. 비록 도면에는 도시되지 않았지만, 저장 매체(100)는 메모리 셀 어레이(101)에 대한 액세스를 가능하게 하는 잘 알려진 구성 요소들(예를 들면, 행 디코더 회로, 읽기/쓰기 회로, 제어 로직, 전압 발생 회로, 열 디코더 회로, 입출력 인터페이스, 등)을 더 포함할 것이다.
도 1에 도시된 데이터 저장 장치는 외부(예를 들면, 호스트)와 저장 매체(100) 사이의 인터페이스를 제공하는 제어기(200)를 더 포함할 것이다. 제어기(200)는, 예를 들면, 외부의 요청에 응답하여 저장 매체(100)를 제어할 것이다. 특히, 제어기(200)는 다양한 방식들을 이용하여 유저 데이터 영역(101a)의 배드 블록들을 관리하도록 구성되며, 이는 이후 상세히 설명될 것이다.
도 2는 도 1에 도시된 데이터 저장 장치의 배드 블록 관리 방법을 설명하기 위한 도면이다.
제어기(200)는 가상 어드레스(virtual address)를 이용하여 메모리 셀 어레이(101)의 블록들(BLK1∼BLKi, BLKi+1∼BLKj)을 관리할 것이다. 메모리 셀 어레이(101)의 블록들(BLK1∼BLKi, BLKi+1∼BLKj)에는 대응하는 가상 어드레스들이 각각 할당될 것이다. 각 블록에 할당된 가상 어드레스는 가상 블록 어드레스(virtual block address)라 불린다. 제어기(200)는 외부로부터 제공되는 어드레스(이하, 논리 블록 어드레스라 칭함)와 가상 블록 어드레스 사이의 사상(mapping)을 관리할 것이다. 외부로부터 논리 블록 어드레스가 입력될 때, 제어기(200)는 논리 블록 어드레스에 대응하는 가상 블록 어드레스를 저장 매체(100)로 제공할 것이다. 논리 블록 어드레스와 가상 블록 어드레스 사이의 사상은 플래시 변환 계층(Flash Translation Layer: FTL)과 같은 펌웨어(또는, 소프트웨어)를 통해 관리된다. 플래시 변환 계층(FTL)의 역할이 여기에 개시된 것에 제한되지 않음은 잘 이해될 것이다. 예를 들면, 플래시 변환 계층(FTL)은 저장 매체(100)의 웨어-레벨링(wear-leveling) 관리, 예상치 못한 전원 차단에 기인한 데이터 보존성 관리, 등을 행하는 데 사용될 것이다.
유저 데이터 영역(101a)에 속한 블록이 배드 블록으로 결정되는 경우, 배드 블록은 예비 영역(101b)에 속한 블록으로 대체될 것이다. 예를 들면, 도 2에 도시된 바와 같이, 유저 데이터 영역(101a)의 배드 블록(BLK2)은 예비 영역(101b)에 속한 블록(BLKi+1)으로 대체되고, 유저 데이터 영역(101a)의 배드 블록(BLK4)은 예비 영역(101b)에 속한 블록(BLKi+2)으로 대체될 것이다. 제어기(200)는 유저 데이터 영역(101a)의 블록들(BLK1∼BLKi)이 배드 블록인 지의 여부를 판별하기 위한 비트맵(201)을 관리할 것이다. 예를 들면, 도 2에 도시된 바와 같이, 유저 데이터 영역(101a)의 배드 블록들(BLK2, BLK4)에 각각 대응하는 비트값들은 '1'로 설정될 것이다. 비트맵(201)에서, '0'의 비트값은 대응하는 블록이 배드 블록이 아님을 의미한다.
제어기(200)는 배드 블록과 대체된 블록 사이의 사상을 관리할 것이다. 배드 블록과 대체된 블록 사이의 사상은 배드 블록 맵 테이블(bad block map table)(202)을 통해 관리될 것이다. 배드 블록 맵 테이블(202)은 배드 블록이 예비 영역(101b)의 어느 블록으로 대체되었는 지의 여부를 판별하는 데 사용될 것이다. 비트맵(201)과 배드 블록 맵 테이블(202)의 관리는 플래시 변환 계층(FTL)의 하위 계층(이하, 가상 플래시 계층(Virtual Flash Layer: VFL))에 의해서 행해질 것이다. 가상 플래시 계층(VFL)은 비트맵(201)과 배드 블록 맵 테이블(202)을 이용하여 유저 데이터 영역(101a)에 속한 배드 블록들을 관리할 것이다. 상술한 비트맵, 배드 블록 맵 테이블, 등과 같은 정보는 제어기(200)의 버퍼(도 12 참조)에 임시적으로 저장될 것이다. 그러한 정보의 양은 배드 블록들의 증가에 비례하여 증가할 수 있다.
도 3은 배드 블록이 생성되기 전후의 맵 테이블들을 보여주는 도면이다.
도 3을 참조하면, 논리 블록 어드레스와 가상 블록 어드레스의 대응 관계는 플래시 변환 계층(FTL)에 의해서 관리될 것이다. 그러한 대응 관계는 블록 맵 테이블(203)을 통해 관리될 것이다. 임의의 블록(예를 들면, 가상 블록(BLK2))이 배드 블록으로 결정된다고 가정하자. 이러한 경우, 도 3에 도시된 바와 같이, 블록 맵 테이블(203)은 변화되지 않는다. 이는 유저 데이터 영역(101a)의 가상 어드레스 공간이 변화되지 않음을 의미한다. 플래시 변환 계층(FTL)에서 제공되는 가상 블록 어드레스에 의거하여 비트맵(201)과 배드 블록 맵 테이블(202)이 가상 플래시 계층(VFL)에 의해서 변화될 것이다.
도 4는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 동작을 개략적으로 설명하기 위한 흐름도이다. 이하, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 동작이 참조 도면들에 의거하여 상세히 설명될 것이다.
먼저, S100 단계에서, 제어기(200)는 외부(예를 들면, 호스트)로부터 입출력(읽기/쓰기) 요청을 받는다. S110 단계에서, 제어기(200)는 입출력 요청된 블록에 대응하는 비트맵(201)의 비트값을 검색할 것이다. S120 단계에서, 제어기(200)는 검색된 비트값에 의거하여, 입출력 요청된 블록이 배드 블록인 지의 여부를 판별할 것이다. 입출력 요청된 블록이 배드 블록이 아닌 것으로 판별되면, 절차는 S130 단계로 진행할 것이다. S130 단계에서, 입출력 요청된 블록이 액세스될 것이다. 입출력 요청된 블록이 배드 블록인 것으로 판별되면, 절차는 S140 단계로 진행할 것이다. S140 단계에서, 입출력 요청된 블록 대신 대체된 블록이 액세스될 것이다.
예를 들면, 입출력 요청된 블록이 배드 블록으로서 유저 데이터 영역(101a)에 속한 블록(BLK2)(도 3 참조)이라고 가정하자. 플래시 변환 계층(FTL)은 블록(BLK2)에 대한 액세스가 요청되었음을 가상 플래시 계층(VFL)에 알릴 것이다. 가상 플래시 계층(VFL)은 비트맵(201)에 의거하여 액세드 요청된 블록(BLK2)이 배드 블록인 지의 여부를 결정할 것이다. 액세스 요청된 블록(BLK2)이 배드 블록인 경우, 가상 플래시 계층(VFL)은 배드 블록 맵 테이블(202)에 의거하여 액세스 요청된 블록(BLK2)이 예비 블록(101b)의 블록(BLKi+1)으로 대체된 것으로 판단할 것이다. 따라서, 액세스 요청된 블록(BLK2) 대신에 예비 블록(101b)의 대체된 블록(BLKi+1)이 액세스될 것이다.
도 5는 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 5를 참조하면, 데이터 저장 장치(1000)는 저장 매체(1100)와 제어기(1200)를 포함할 것이다. 저장 매체(1100)는 도 1에 도시된 것과 실질적으로 동일하게 구성될 것이다. 예를 들면, 저장 매체(1100)는 복수의 블록들(BLK1∼BLKi, BLKi+1∼BLKj)로 구성된 메모리 셀 어레이를 포함할 것이다. 메모리 셀 어레이는 유저 데이터가 저장되는 유저 데이터 영역과 유저 데이터 영역의 배드 블록들을 대체하는 데 사용되는 예비 영역(reserved area)으로 구분된다.
제어기(1200)는 호스트(2000)의 요청에 응답하여 저장 매체(1100)의 액세스(예를 들면, 읽기, 쓰기, 그리고 소거 동작들)를 제어할 것이다. 제어기(1200)는 플래시 변환 계층(FTL)(1201)과 가상 플래시 계층(VFL)(1202)을 포함할 것이다. 플래시 변환 계층(1201)은 논리 어드레스와 가상 어드레스의 맵핑을 관리할 것이다. 가상 플래시 계층(1202)은 배드 블록들을 관리할 것이다. 특히, 플래시 변환 계층(1201)은 유저 데이터 영역에 포함되는 배드 블록들의 수에 따라 유저 데이터 영역의 가상 어드레스 공간을 가변적으로 관리할 것이다. 이는 이후 상세히 설명될 것이다. 배드 블록이 발생하는 경우, 가상 플래시 계층(1202)은 배드 블록을 예비 영역의 블록으로 대체하고, 대체된 블록에 대응하는 가상 어드레스를 플래시 변환 계층(1201)에 통지한다. 플래시 변환 계층(1201)은 배드 블록의 가상 어드레스 대신 대체된 블록의 가상 어드레스가 대응하는 논리 어드레스와 사상되도록 맵 테이블을 관리할 것이다. 이는 배드 블록의 가상 어드레스가 사용되지 않기 때문에(또는, 배드 블록의 가상 어드레스가 맵 테이블로부터 제거되기 때문에) 유저 데이터 영역의 가상 어드레스 공간이 불연속적으로 가변됨을 의미한다.
상술한 배드 블록 관리 방식의 경우, 배드 블록을 대체하는 데 사용되는 예비 영역의 블록의 가상 블록 어드레스가 플래시 변환 계층(1201)에 의해서 대응하는 논리 블록 어드레스와 직접 사상되기 때문에, 액세스될 블록이 배드 블록인 지의 여부와, 배드 블록이 어느 블록으로 대체되었는 지의 여부를 판별하는 과정들을 생략하는 것이 가능하다.
도 6은 도 5에서 설명된 제어기에 의해서 관리되는 가상 어드레스 공간을 설명하기 위한 도면이다.
제어기(1000)는, 도 6에 도시된 바와 같이, 저장 매체(1100)의 메모리 셀 어레이를 유저 데이터 영역(1101)과 예비 영역(1102)으로 구분할 것이다. 유저 데이터 영역(1101)은 유저 데이터가 저장되는 복수의 블록들을 포함하고, 예비 영역(1102)은 유저 데이터 영역(1101)의 배드 블록(들)을 대체하기 위한 복수의 블록들을 포함한다. 제어기(1000)는 유저 데이터 영역(1101)의 블록들과 예비 영역(1102)의 블록들에 대응하는 가상 블록 어드레스들을 각각 할당할 것이다. 도 1에서 설명된 것과 달리, 유저 데이터 영역(1101)의 가상 어드레스 공간은 배드 블록이 생성됨에 따라 가변될 것이다. 예를 들면, 도 6에 도시된 바와 같이, 유저 데이터 영역(1101)에 포함되는 배드 블록들의 수가 증가함에 따라, 플래시 변환 계층(1201)은 예비 영역(1102)의 가상 어드레스 공간을 포함하도록 유저 데이터 영역(1101)의 가상 어드레스 공간을 증가시킨다. 이는 예비 영역(1102)의 가상 어드레스 공간이 감소함을 의미한다. 이러한 경우, 유저 데이터 영역(1101)의 가상 어드레스 공간은 배드 블록에 대응하는 가상 어드레스를 포함할 것이다. 따라서, 배드 블록의 가상 어드레스가 사용되지 않기 때문에(또는, 배드 블록의 가상 어드레스가 맵 테이블로부터 제거되기 때문에) 유저 데이터 영역의 가상 어드레스 공간이 불연속적으로 가변될 것이다.
도 7은 배드 블록이 생성되기 전후에 플래시 변환 계층에 의해서 관리되는 맵 테이블을 보여주는 도면이다.
도 7을 참조하면, 플래시 변환 계층(1201)은 호스트(2000)에서 제공되는 논리 블록 어드레스와 저장 매체(1100)의 가상 블록 어드레스 사이의 사상을 관리하며, 이는 블록 맵 테이블(1210)을 통해 행해질 것이다. 유저 데이터 영역(1101)에 포함된 블록이 배드 블록으로 결정되는 경우, 가상 플래시 계층(1202)은 배드 블록을 예비 영역(1102)의 블록으로 대체하고, 대체된 블록에 대응하는 가상 블록 어드레스를 플래시 변환 계층(1201)에 통지한다. 플래시 변환 계층(1201)은 배드 블록의 가상 블록 어드레스 대신 대체된 블록의 가상 블록 어드레스가 대응하는 논리 어드레스와 사상되도록 블록 맵 테이블(1210)을 관리할 것이다. 예를 들면, 가상 블록(BLK2)이 배드 블록으로 결정되었다고 가정하자. 이러한 경우, 가상 플래시 계층(1202)은 배드 블록(BLK2)을 예비 영역(1102)의 블록(예를 들면, BLK(i+1))으로 대체하고, 대체된 블록(BLK(i+1))에 대응하는 가상 블록 어드레스를 플래시 변환 계층(1201)에 통지한다. 플래시 변환 계층(1201)은 배드 블록(BLK2)의 가상 블록 어드레스 대신 대체된 블록BLK(i+1))의 가상 블록 어드레스가 대응하는 논리 블록 어드레스와 사상되도록 블록 맵 테이블(1210)을 관리할 것이다(도 7에서 헤치된 부분 참조).
이상의 설명으로부터 알 수 있듯이, 대체된 블록의 가상 블록 어드레스를 포함하도록 블록 맵 테이블(1210)을 관리함으로써 액세스될 블록이 배드 블록인 지의 여부와, 배드 블록이 어느 블록으로 대체되었는 지의 여부를 판별하는 과정들을 생략하는 것이 가능하다. 이는 도 1 내지 도 4에서 설명된 비트맵 정보 및 배드 블록 맵 정보를 버퍼에 저장하는 것을 필요로 하지 않는다.
도 8은 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치의 동작을 설명하기 위한 흐름도이다. 이하, 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치의 동작이 참조 도면들에 의거하여 상세히 설명될 것이다.
먼저, S200 단계에서, 제어기(1200)는 호스트(2000)로부터 입출력(읽기/쓰기) 요청을 받는다. S210 단계에서, 제어기(1200)는 비트맵 검색없이 입출력 요청된 블록을 액세스할 것이다. 예를 들면, 유저 데이터 영역(1101)에 포함된 정상적인 블록에 대한 액세스가 요청될 때, 도 1에서 설명된 것과 동일하게 정상적인 블록에 대한 액세스가 처리될 것이다. 마찬가지로, 배드 블록(BLK2)에 대한 액세스가 요청되는 경우, 배드 블록(BLK2)가 예비 영역(1102)의 블록(BLK(i+1))으로 대체되고 블록 맵 테이블(1210)이 배드 블록(BLK2) 대신 대체된 블록(BLK(i+1))의 가상 블록 어드레스와 호스트(2000)로부터 제공된 논리 블록 어드레스가 서로 사상되기 때문에, 제어기(1200)는 비트맵 및 배드 블록 맵 테이블의 검색없이 대체된 블록(BLK(i+1))을 액세스할 것이다. 비트맵 및 배드 블록 맵 테이블이 제어기에 의해서 별도로 관리되지 않음은 상술한 바와 같다.
도 9는 본 발명의 또 다른 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 9를 참조하면, 데이터 저장 장치(3000)는 저장 매체(3100)와 제어기(3200)를 포함할 것이다. 저장 매체(3100)는 멀티-플랜 구조의 메모리 셀 어레이(3110)를 포함할 것이다. 메모리 셀 어레이(3110)는, 예를 들면, 2개의 플랜들(3111, 3112)을 포함할 것이다. 플랜들(3111, 3112) 각각은 복수의 블록들로 구성되며, 플랜들(3111, 3112)의 블록들은 서로 대응한다. 제어기(3200)는 플랜들(3111, 3112)의 각 행에 속한 2개의 블록들을 하나의 가상 블록(virtual block)으로 관리하도록 구성될 것이다. 가상 블록들은 유저 데이터 영역(3113)과 예비 영역(3114)으로 구분될 것이다. 앞서 언급된 바와 같이, 유저 데이터 영역(3113)은 유저 데이터를 저장하는 데 사용되고, 예비 영역(3114)은 유저 데이터 영역(3113)의 배드 블록들을 대체하는 데 사용될 것이다.
제어기(3200)는 페어드 맵핑 방식(paired mapping manner)과 언페어드 맵핑 방식(unpaired mapping manner) 중 어느 하나에 따라 배드 블록들을 관리하도록 구성될 것이다. 페어드 맵핑 방식의 경우, 가상 블록에 속한 블록들 중 어느 하나가 배드 블록으로 결정될 때, 배드 블록을 포함한 가상 블록은 예비 영역(3114)의 가상 블록으로 대체될 것이다. 즉, 배드 블록의 대체는 가상 블록 단위로 행해질 것이다. 이러한 경우, 도 7에서 설명된 바와 같이, 플래시 변환 계층(FTL)은 대체된 가상 블록의 가상 블록 어드레스를 포함하도록 블록 맵 테이블을 관리할 것이다. 언페어드 맵핑 방식의 경우, 가상 블록에 속한 블록들 중 어느 하나가 배드 블록으로 결정될 때, 가상 블록의 블록들 중 배드 블록만이 예비 영역(3114)의 대응하는 가상 블록에 속한 블록으로 대체될 것이다. 이때, 가상 블록의 정상적인 블록은 그대로 사용될 것이다. 마찬가지로, 도 7에서 설명된 바와 같이, 플래시 변환 계층(FTL)은 대체된 가상 블록의 가상 블록 어드레스를 포함하도록 블록 맵 테이블을 관리할 것이다. 또한, 언페어드 맵핑 방식이 사용되는 경우, 가상 플래시 계층(VFL)은 대체된 가상 블록의 가상 블록 어드레스와 대체된 블록의 플랜 정보를 관리할 것이다. 이는 이후 상세히 설명될 것이다.
도 10a 및 도 10b는 도 9에서 설명된 언페어드 맵핑 방식을 개략적으로 설명하기 위한 도면이다.
도 10a 및 도 10b를 참조하면, 플랜(3112)에 속한 가상 블록(3115)의 물리적인 블록이 배드 블록으로 결정되었다고 가정하자. 이러한 가정에 따르면, 앞서 설명된 바와 같이, 플래시 변환 계층(FTL)은 논리 블록(4)이 예비 영역(3114)의 대응하는 가상 블록(3116)에 대응함을 나타내도록 블록 맵 테이블(3201)을 갱신할 것이다. 블록 맵 테이블(3201)의 관리는 언페어드 맵핑 방식과 페어드 맵핑 방식에서 동일하게 행해질 것이다. 언페어드 맵핑 방식이 제어기(3200)에 적용되는 경우, 어느 플랜에 속한 블록이 대체되었는 지에 대한 정보가 관리되어야 한다. 이는 가상 플래시 계층(VFL)에 의해서 관리되는 배드 블록 맵핑 테이블(3202)을 통해 행해질 것이다. 이러한 배드 블록 맵핑 테이블(3202)을 이용하여 정상적인 블록과 대체된 블록을 액세스하는 것이 가능하다. 예를 들면, 가상 블록(3116)에 대한 액세스가 요청되는 경우, 플래시 변환 계층(FTL)은 가상 블록(3116)에 대응하는 가상 블록 어드레스를 가상 플래시 계층(VFL)에 제공할 것이다. 가상 플래시 계층(VFL)은 비트맵에 의거하여 가상 블록 어드레스가 대체된 가상 블록에 대응하는 지의 여부를 판별할 것이다. 가상 블록 어드레스가 대체된 가상 블록에 대응하는 것으로 판별되면, 가상 플래시 계층(VFL)은 배드 블록 맵핑 테이블(3202)을 참조하여 플랜(3111)의 정상적인 블록과 플랜(3112)의 대체된 블록을 액세스하도록 저장 매체(3100)로 어드레스 정보를 제공할 것이다.
도 11은 본 발명의 또 다른 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 11를 참조하면, 데이터 저장 장치(4000)는 저장 매체(4100)와 제어기(4200)를 포함할 것이다. 저장 매체(4100)는 복수의, 예를 들면, 4개의 메모리 칩들(4101, 4102, 4103, 4104)을 포함할 것이다. 메모리 칩들(4101, 4102, 4103, 4104) 각각은, 도 1 또는 도 9에 도시된 어레이 구조를 갖도록 구성될 것이다. 도 11에는 도 9에 도시된 어레이 구조(플랜 구조)가 도시되어 있다. 하지만, 도 1에 도시된 어레이 구조가 도 11에 도시된 저장 매체(4100)에 적용될 수 있음은 잘 이해될 것이다. 제어기(4200)는 2개의 메모리 칩들(이하, 메모리 칩 쌍이라 칭함)의 각 행에 속한 4개의 블록들을 하나의 가상 블록(virtual block)으로 관리하도록 구성될 것이다. 메모리 칩 쌍(4101, 4102)의 가상 블록들은 유저 데이터 영역과 예비 영역으로 구분될 것이다. 마찬가지로, 메모리 칩 쌍(4103, 4104)의 가상 블록들은 유저 데이터 영역과 예비 영역(reserved area)으로 구분될 것이다.
도 11에 도시된 바와 같이, 가상 블록들의 순서는 순차적으로 결정되는 것이 아니라 스트립핑 방식(stripping manner)으로 결정될 것이다. 이러한 방식은 가상 블록 어드레스들을 순차적으로 결정하는 것과 구별될 것이다. 가상 블록 어드레스들을 순차적으로 결정하는 것은 예비 영역이 하나의 메모리 칩 쌍에만 제공됨을 의미한다. 가상 블록 어드레스들을 스트립핑 방식으로 결정함에 따라 각 메모리 칩 쌍에는 예비 영역이 제공될 것이다. 제어기(4200)는, 도 11에 도시된 바와 같이, 메모리 칩 쌍들(4101, 4102) 및 (4103, 4104)의 가상 블록들이 번갈아 액세스되도록 가상 블록 어드레스들을 관리할 것이다. 가상 블록 어드레스들을 스트립핑(stripping)함으로써 배드 블록 관리가 용이하다. 예를 들면, 임의의 메모리 칩 쌍에서 생긴 배드 블록은 동일한 메모리 칩 쌍의 예비 영역의 블록으로 대체될 것이다. 이는 메모리 칩 쌍들 사이의 데이터 전송 없이 배드 블록과 대체 블록 사이의 데이터 전송이 동일한 메모리 칩 쌍에서 행해짐을 의미한다.
도 12는 본 발명의 예시적인 실시예에 따른 제어기를 개략적으로 보여주는 블록도이다.
도 12를 참조하면, 본 발명의 예시적인 실시예에 따른 제어기(5000)는 제 1 인터페이스(5100), 제 2 인터페이스(5200), 처리 유니트로서 CPU(5300), 버퍼 램(5400), 그리고 코드 램(5500)을 포함할 것이다. 제 1 인터페이스(5100)는 외부(또는, 호스트)와 인터페이스하도록 구성될 것이다. 제 2 인터페이스(5200)는 저장 매체와 인터페이스하도록 구성될 것이다. 처리 유니트 즉, CPU(5300)는 제어기(5000)의 전반적인 동작을 제어하도록 구성될 것이다. 예를 들면, CPU(5300)는 코드 램(5500)에 저장된 플래시 변환 계층(FTL), 가상 플래시 계층(VFL), 등과 같은 펌웨어(또는, 소프트웨어)를 운용하도록 구성될 것이다. 플래시 변환 계층(FTL) 및 가상 플래시 계층(VFL)은 도 1, 도 5, 도 9, 그리고 도 11에서 설명된 것과 실질적으로 동일하게 동작하며, 그것에 대한 설명은 그러므로 생략될 것이다. 버퍼 램(5400)은 제 1 인터페이스(5100)를 통해 외부로부터 전달되는 데이터를 임시 저장하는 데 사용될 것이다. 버퍼 램(5400)은 제 2 인터페이스(5200)를 통해 저장 매체로부터 전달되는 데이터를 임시 저장하는 데 사용될 것이다. 코드 램(5500)에는, 예를 들면, 데이터 저장 장치에 전원이 공급될 때 저장 매체에 저장되는 코드들(FTL, VFL, 등)이 로드될 것이다. 이에 반해서, 코드 램(5500) 대신 상술한 코드들을 저장하기 위한 코드 롬이 사용될 수 있다.
예시적인 실시예에 있어서, 제어기(5000)의 제 1 인터페이스(5100)는 컴퓨터 버스 표준들, 스토리지 버스 표준들, iFCPPeripheral 버스 표준들, 등 중 하나 또는 그 보다 많은 것들의 조합으로 구성될 수 있다. 컴퓨터 버스 표준들(computer bus standards)은 S-100 bus, Mbus, Smbus, Q-Bus, ISA, Zorro II, Zorro III, CAMAC, FASTBUS, LPC, EISA, VME, VXI, NuBus, TURBOchannel, MCA, Sbus, VLB, PCI, PXI, HP GSC bus, CoreConnect, InfiniBand, UPA, PCI-X, AGP, PCIe, Intel QuickPath Interconnect, Hyper Transport, 등을 포함한다. 스토리지 버스 표준들(Storage bus standards)은 ST-506, ESDI, SMD, Parallel ATA, DMA, SSA, HIPPI, USB MSC, FireWire(1394), Serial ATA, eSATA, SCSI, Parallel SCSI, Serial Attached SCSI, Fibre Channel, iSCSI, SAS, RapidIO, FCIP, 등을 포함한다. iFCPPeripheral 버스 표준들(iFCPPeripheral bus standards)은 Apple Desktop Bus, HIL, MIDI, Multibus, RS-232, DMX512-A, EIA/RS-422, IEEE-1284, UNI/O, 1-Wire, I2C, SPI, EIA/RS-485, USB, Camera Link, External PCIe, Light Peak, Multidrop Bus, 등을 포함한다.
본 발명의 예시적인 실시예들에 따른 데이터 저장 장치는, 예를 들면, 메모리 카드를 구성할 것이다. 비록 도면에는 도시되지 않았지만, 도 12에 도시된 제어기(5000)는 응용처에 따라 에러 정정 블록, 암호화/복호화 블록, 등을 더 포함할 수 있다.
도 13은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 저장 매체를 개략적으로 보여주는 블록도이다.
도 13을 참조하면, 저장 매체(6100)는 제어기(6200)의 제어에 응답하여 동작할 것이다. 저장 매체(6100)는 복수의 채널들(CH0∼CHn-1)을 통해 제어기(6200)와 연결될 것이다. 채널들(CH0∼CHn-1) 각각에는 복수의 불 휘발성 메모리들(NVM)이 공통으로 연결될 것이다. 도 13에 도시된 데이터 저장 장치는 반도체 드라이브(Solid State Drive: SSD)일 것이다. 도 13에 도시된 제어기(6200)는 도 1, 도 5, 도 9, 또는 도 11에 도시된 것과 실질적으로 동일하며, 그것에 대한 설명은 그러므로 생략될 것이다. 또한, 도 13에 도시된 저장 매체(6100)의 각 불 휘발성 메모리(NVM)는 도 1, 도 9, 또는 도 11에 도시된 것과 실질적으로 동일하며, 그것에 대한 설명은 그러므로 생략될 것이다.
도 14는 본 발명의 예시적인 실시예들에 따른 데이터 저장 시스템을 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
본 발명에 따른 컴퓨팅 시스템은 마이크로프로세서(7100), 사용자 인터페이스(7200), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(7300), 제어기(7400), 그리고 불 휘발성 메모리 칩들로 구성된 저장 매체(7500)를 포함한다. 모뎀(3300)에는 유선 또는 무선을 통해 네트워크에 연결될 것이다. 제어기(7400) 및 저장 매체(7500)는 도 1, 도 9, 또는 도 11에 도시된 것과 실질적으로 동일하며, 그것에 대한 설명은 그러므로 생략될 것이다. 저장 매체(7500)에는 마이크로프로세서(7100)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 제어기(7400)를 통해 저장될 것이다. 본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(3600)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
100: 저장 매체
200: 제어기

Claims (10)

  1. 저장 매체와; 그리고
    상기 저장 매체를 제어하도록 구성된 제어기를 포함하며,
    상기 제어기는 논리 어드레스 공간과 상기 저장 매체의 가상 어드레스 공간의 사상을 관리하도록 구성되되, 상기 저장 매체의 가상 어드레스 공간은 가변되는 데이터 저장 장치.
  2. 제 1 항에 있어서,
    상기 제어기는 상기 저장 매체에서 배드 블록이 생길 때 상기 가상 어드레스 공간을 불연속적으로 가변시키는 데이터 저장 장치.
  3. 제 1 항에 있어서,
    상기 저장 매체는 복수의 블록들을 갖는 유저 데이터 영역과 복수의 블록들을 갖는 예비 영역을 포함하며, 상기 가상 어드레스 공간은 상기 유저 데이터 영역에 대응하는 데이터 저장 장치.
  4. 제 3 항에 있어서,
    상기 유저 데이터 영역의 블록들 중 하나가 배드 블록으로 결정될 때, 상기 제어기는 상기 배드 블록을 상기 예비 영역의 대응하는 블록으로 대체하고 상기 배드 블록의 가상 블록 어드레스 대신 상기 대체된 블록의 가상 블록 어드레스를 대응하는 논리 블록 어드레스와 사상하는 데이터 저장 장치.
  5. 제 4 항에 있어서,
    상기 제어기는
    상기 논리 어드레스 공간과 상기 저장 매체의 가상 어드레스 공간의 사상을 관리하는 플래시 변환 계층과; 그리고
    상기 배드 블록을 관리하는 가상 플래시 계층을 포함하며,
    상기 가상 플래시 계층은 상기 배드 블록의 가상 블록 어드레스를 상기 플래시 변환 계층으로 제공하고, 상기 플래시 변환 계층은 상기 배드 블록의 가상 블록 어드레스 대신 상기 대체된 블록의 가상 블록 어드레스를 대응하는 논리 블록 어드레스와 사상하는 데이터 저장 장치.
  6. 제 5 항에 있어서,
    상기 배드 블록의 가상 블록 어드레스 대신 상기 대체된 블록의 가상 블록 어드레스를 대응하는 논리 블록 어드레스와 사상함으로써 상기 유저 데이터 영역의 가상 어드레스 공간이 불연속적으로 가변되는 데이터 저장 장치.
  7. 제 6 항에 있어서,
    상기 저장 매체의 블록에 대한 액세스가 요청될 때, 상기 제어기는 상기 액세스 요청된 블록이 배드 블록인 지의 여부를 판별하지 않고 상기 저장 매체를 액세스하는 데이터 저장 장치.
  8. 저장 매체를 포함하는 데이터 저장 장치의 배드 블록 관리 방법에 있어서:
    상기 저장 매체의 가상 어드레스 공간을 결정하고,
    상기 저장 매체에서 배드 블록이 발생할 때, 상기 저장 매체의 가상 어드레스 공간을 불연속적으로 가변시키는 것을 포함하는 것을 특징으로 하는 배드 블록 관리 방법.
  9. 제 8 항에 있어서,
    상기 저장 매체는 복수의 블록들을 갖는 유저 데이터 영역과 복수의 블록들을 갖는 예비 영역을 포함하며, 상기 가상 어드레스 공간은 상기 유저 데이터 영역에 대응하는 것을 특징으로 하는 배드 블록 관리 방법.
  10. 제 9 항에 있어서,
    상기 저장 매체의 가상 어드레스 공간을 불연속적으로 가변시키는 것
    상기 배드 블록을 상기 예비 영역의 대응하는 블록으로 대체하고,
    상기 배드 블록의 가상 블록 어드레스 대신 상기 대체된 블록의 가상 블록 어드레스를 대응하는 논리 블록 어드레스와 사상하는 것을 포함하는 것을 특징으로 하는 배드 블록 관리 방법.
KR1020100064049A 2010-07-02 2010-07-02 데이터 저장 장치 및 그것의 배드 블록 관리 방법 KR20120003283A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100064049A KR20120003283A (ko) 2010-07-02 2010-07-02 데이터 저장 장치 및 그것의 배드 블록 관리 방법
US13/175,361 US20120005451A1 (en) 2010-07-02 2011-07-01 Data storage device and bad block managing method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100064049A KR20120003283A (ko) 2010-07-02 2010-07-02 데이터 저장 장치 및 그것의 배드 블록 관리 방법

Publications (1)

Publication Number Publication Date
KR20120003283A true KR20120003283A (ko) 2012-01-10

Family

ID=45400631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100064049A KR20120003283A (ko) 2010-07-02 2010-07-02 데이터 저장 장치 및 그것의 배드 블록 관리 방법

Country Status (2)

Country Link
US (1) US20120005451A1 (ko)
KR (1) KR20120003283A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150024323A (ko) * 2012-06-29 2015-03-06 인텔 코오퍼레이션 불량 블록 관리 메커니즘
US10089031B2 (en) 2015-04-13 2018-10-02 Samsung Electronics Co., Ltd. Data storage and operating method thereof
KR20190131170A (ko) * 2018-05-16 2019-11-26 주식회사 디에이아이오 비휘발성 메모리 시스템

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI489272B (zh) * 2012-04-03 2015-06-21 Phison Electronics Corp 保護資料的方法、記憶體控制器與記憶體儲存裝置
KR101934519B1 (ko) 2012-11-26 2019-01-02 삼성전자주식회사 저장 장치 및 그것의 데이터 전송 방법
KR20140142035A (ko) * 2013-06-03 2014-12-11 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작방법
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US9519427B2 (en) 2014-09-02 2016-12-13 Sandisk Technologies Llc Triggering, at a host system, a process to reduce declared capacity of a storage device
US9582193B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
US9652153B2 (en) 2014-09-02 2017-05-16 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses
US9563370B2 (en) 2014-09-02 2017-02-07 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device
US9524112B2 (en) 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by trimming
US9524105B2 (en) 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
US9563362B2 (en) 2014-09-02 2017-02-07 Sandisk Technologies Llc Host system and process to reduce declared capacity of a storage device by trimming
US9552166B2 (en) 2014-09-02 2017-01-24 Sandisk Technologies Llc. Process and apparatus to reduce declared capacity of a storage device by deleting data
US9582220B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9665311B2 (en) 2014-09-02 2017-05-30 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable
US9582202B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by moving data
US9582203B2 (en) * 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
US9582212B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device
US10108344B1 (en) * 2015-05-06 2018-10-23 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
US9946473B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive
US9946483B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning
US10409513B2 (en) * 2017-05-08 2019-09-10 Qualcomm Incorporated Configurable low memory modes for reduced power consumption
KR20190040607A (ko) * 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN109144897B (zh) * 2018-09-04 2023-07-14 杭州阿姆科技有限公司 一种实现大容量ssd磁盘的方法
CN109273042A (zh) * 2018-09-18 2019-01-25 长江存储科技有限责任公司 Nand存储器及其访问方法、访问装置
US10942659B2 (en) * 2019-06-03 2021-03-09 International Business Machines Corporation Persistent logical to virtual table
CN114968066A (zh) * 2021-02-19 2022-08-30 瑞昱半导体股份有限公司 用于快闪存储器中进行故障区块管理的方法与装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW261687B (ko) * 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7426623B2 (en) * 2005-01-14 2008-09-16 Sandisk Il Ltd System and method for configuring flash memory partitions as super-units
KR100874702B1 (ko) * 2006-10-02 2008-12-18 삼성전자주식회사 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
US20090013148A1 (en) * 2007-07-03 2009-01-08 Micron Technology, Inc. Block addressing for parallel memory arrays
KR101399549B1 (ko) * 2007-09-04 2014-05-28 삼성전자주식회사 반도체 메모리 장치 및 그것의 블록 관리 방법
US8214579B2 (en) * 2008-09-30 2012-07-03 Tdk Corporation Memory controller, flash memory system with memory controller, and method of controlling flash memory
US8095765B2 (en) * 2009-03-04 2012-01-10 Micron Technology, Inc. Memory block management
KR101090394B1 (ko) * 2009-12-24 2011-12-07 주식회사 하이닉스반도체 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
KR101756228B1 (ko) * 2011-07-19 2017-07-11 삼성전자 주식회사 메모리 장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150024323A (ko) * 2012-06-29 2015-03-06 인텔 코오퍼레이션 불량 블록 관리 메커니즘
US10089031B2 (en) 2015-04-13 2018-10-02 Samsung Electronics Co., Ltd. Data storage and operating method thereof
KR20190131170A (ko) * 2018-05-16 2019-11-26 주식회사 디에이아이오 비휘발성 메모리 시스템

Also Published As

Publication number Publication date
US20120005451A1 (en) 2012-01-05

Similar Documents

Publication Publication Date Title
KR20120003283A (ko) 데이터 저장 장치 및 그것의 배드 블록 관리 방법
US11237769B2 (en) Memory system and method of controlling nonvolatile memory
US10331364B2 (en) Method and apparatus for providing hybrid mode to access SSD drive
CN109725847B (zh) 存储器系统及控制方法
US10120615B2 (en) Memory management method and storage controller using the same
US11042305B2 (en) Memory system and method for controlling nonvolatile memory
US11487669B2 (en) Memory system for storing data of log-structured merge tree structure and data processing system including the same
US20200057725A1 (en) Data storage device and operating method thereof
JP2019160215A (ja) メモリシステムおよび制御方法
US10990536B2 (en) Memory controller, operating method of the memory controller, and storage device including the memory controller
US10896125B2 (en) Garbage collection methods and memory systems for hybrid address mapping
CN114527931A (zh) 存储器系统
KR20220022318A (ko) 컨트롤러 및 메모리 시스템
JP2019148913A (ja) メモリシステム
CN113628655B (zh) 用以存取闪存模块的方法、闪存控制器与电子装置
JP7077151B2 (ja) メモリシステム
CN113220216A (zh) 数据存储设备及其操作方法
KR20210133494A (ko) 다수의 메모리 시스템을 포함하는 데이터 처리 시스템
CN113515466A (zh) 用于多内核之间动态逻辑块地址分布的系统和方法
CN111708716A (zh) 数据存储设备、具有数据存储设备的计算设备和操作方法
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
TWI780697B (zh) 用以管理快閃記憶體模組的方法、快閃記憶體控制器與電子裝置
US11809713B1 (en) Method and apparatus for performing data access management of memory device with aid of randomness-property control
US20240069723A1 (en) Memory system and method for controlling the same
US20240220143A1 (en) Method for managing virtual zone

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid