KR100789406B1 - 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 - Google Patents
플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 Download PDFInfo
- Publication number
- KR100789406B1 KR100789406B1 KR1020060108520A KR20060108520A KR100789406B1 KR 100789406 B1 KR100789406 B1 KR 100789406B1 KR 1020060108520 A KR1020060108520 A KR 1020060108520A KR 20060108520 A KR20060108520 A KR 20060108520A KR 100789406 B1 KR100789406 B1 KR 100789406B1
- Authority
- KR
- South Korea
- Prior art keywords
- garbage collection
- flash memory
- cost
- collection cost
- hash table
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
여기에 개시된 플래시 메모리 시스템의 가비지 컬렉션 방법은 적어도 둘 이상의 계수들에게 각각 가중치를 적용하여 가비지 컬렉션 코스트를 계산하는 단계, 상기 계산된 가비지 컬렉션 코스트로 해쉬 테이블을 구성하는 단계, 상기 해쉬 테이블에서 가장 작은 가비지 컬렉션 코스트를 갖는 블록을 탐색하는 단계, 그리고 상기 탐색된 블록으로 가비지 컬렉션을 수행하는 단계를 포함한다.
Description
도 1은 본 발명에 따른 플래시 메모리 시스템의 구성을 개략적으로 보여주는 블록도;
도 2는 본 발명에 따른 가비지 컬렉션 코스트의 계산 방법을 예시적으로 보여주는 흐름도;
도 3은 본 발명에 따른 해쉬 테이블의 구성을 예시적으로 보여주는 도면;
도 4는 도 3에 도시된 데이터 리스트의 구성을 예시적으로 보여주는 도면; 그리고
도 5는 본 발명에 따른 가비지 컬렉션 방법을 보여주는 도면이다.
* 도면의 주요 부분에 대한 부호 설명 *
100 : 호스트 200 : 외부 저장 장치
300 : 인터페이스 장치 400 : 플래시 메모리
310 : 호스트 인터페이스 320 : 중앙처리장치
330 : 워크 메모리 340 : 버퍼 메모리
350 : 플래시 컨트롤러
본 발명의 저장 장치에 관한 것으로, 좀 더 구체적으로는 플래시 메모리와 같이 불휘발성이면서 전기적으로 소거 가능한 반도체 메모리 장치를 효율적으로 관리하는 장치 및 방법에 관한 것이다.
불휘발성 메모리 장치는 드라이브 전원이 공급되지 않아도 셀에 기록된 데이터가 소멸되지 않고 남아있다. 불휘발성 메모리들 중에서도 플래시 메모리는, 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지고 있기 때문에, 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다. 최근 들어서는, 휴대폰, PDA, 디지털카메라 등과 같은 휴대용 정보기기의 사용이 급증함에 따라, 하드디스크 대신 플래시 메모리가 저장장치로서 널리 사용되고 있다.
플래시 메모리는 셀과 비트 라인의 연결 상태에 따라 NOR형과 NAND형으로 구분된다. NOR형 플래시메모리는 읽기 속도가 빠른데 반하여 쓰기 속도가 느리기 때문에, 주로 코드용 메모리로 사용된다. 그리고, NAND형 플래시메모리는 쓰기 속도가 빠르고 단위 면적당 단가가 낮기 때문에, 주로 대용량 데이터 저장장치로 사용된다. 플래시 메모리는 다른 메모리 소자와 비교할 때, 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있는 장점이 있다. 그러나, 플래시 메모리에 데이터를 기입하기 위해서는 삭제 연산이 반드시 선행되어야 하며, 기입되는 데이터의 단위보다 삭제되는 데이터의 단위가 큰 특징을 가지고 있다. 이러한 특징은 플래시 메모리를 주 메모리로 사용하는 것을 어렵게 할 뿐만 아니라, 플래시 메모리가 보조기억장치 로 사용되는 경우에도 일반 하드디스크용 파일 시스템(file system)을 그대로 활용하는 것을 저해하는 요인이 된다. 따라서, 플래시 메모리의 삭제 연산을 감추기 위해, 파일 시스템과 플래시 메모리 사이에 플래시 변환 계층(flash translation layer ; 이하, FTL이라 칭함)이 사용된다.
FTL은 논리 어드레스-물리 어드레스 매핑 정보 관리, 배드 블럭 관리, 예상치 못한 전원 차단에 따른 데이터 보존성 관리, 마모도 관리 등을 포함한다. FTL의 기능들 중 핵심적인 기능은 매핑 기법에 관련된 것으로, 예시적인 매핑 기법들이 U.S. Patent No. 5,404,485에 "FLASH FILE SYSTEM"이라는 제목으로, U.S. Patent No. 5,937,425에 "FLASH FILE SYSTEM OPTIMIZED FOR PAGE-MODE FLASH TECHNOLOGIES"라는 제목으로, 그리고 U.S. Patent No. 6,381,176에 "METHOD OF DRIVING REMAPPING IN FLASH MEMORY AND FLASH MEMORY ARCHITECTURE SUITABLE THEREFOR"라는 제목으로 각각 게재되어 있으며, 이 출원의 레퍼런스로 포함된다.
플래시 메모리가 블록 단위로 액세스되는 경우에, 플래시 메모리는 복수의 블록들로 분할된다. 분할된 블록에 순차적으로 할당된 번호를 물리 블록 번호라 하고, 사용자가 생각하는 분할된 블록의 가상 번호를 논리 블록 번호라 한다. 논리 블록 번호와 물리 블록 번호 간의 매핑을 제공하는 방법으로, 블록 매핑 기법, 섹터 매핑 기법, 그리고 로그 매핑 기법이 있다. FTL의 매핑 기법에 따르면 논리적으로 연속된 어드레스를 가지는 데이터가 물리적으로는 서로 상이한 위치에 기록되어 있을 수 있다.
호스트가 기존에 기입된 적이 있는 논리 블록 번호에 대해 기입 명령을 보내 는 경우, FTL은 호스트로부터 제공된 데이터를 다른 위치에 쓰고, 기존 데이터를 무효화하는 기법을 사용한다. 이와 같은 FTL의 알고리즘적인 특성으로 인해 블록 전체가 무효화된 데이터로 채워지는 블록이 생길 수 있는데, 이러한 블록을 가비지 블록(garbage block)이라 한다. 가비지 블록은 먼저 소거 연산을 통해 기입이 가능한 생태로 변환된 후, 재사용된다. FTL에서는 이러한 연산 과정을 가비지 컬렉션(garbage collection) 또는 리클레임(reclaim)이라 부른다. 이러한 연산이 얼마나 빠르게 수행되느냐에 따라 플래시 메모리의 성능이 좌우된다. 특히, 시스템의 사용 기간이 길어짐에 따라 저장된 데이터의 양이 많아지고 사용 가능한 가용 블록(reserved block)의 개수가 줄어들수록, 가비지 컬렉션의 성능은 더욱 중요시된다.
플래시 메모리에서 성능과 함께 중요한 또 다른 요소는 플래시 메모리 장치의 신뢰성이다. 일반적으로, 플래시 메모리는 반복적으로 프로그램되고 소거될 수 있으나, 각각의 블록의 소거 및 프로그램 사이클은 소정의 횟수 이내로 제한된다. 예를 들면, 어떤 메모리에서는 블록의 사용이 불가능한 것으로 간주하기 전까지 대략 만 번 정도의 소거 동작이 가능할 수 있다. 그리고, 다른 메모리에서는, 블록이 마모되었다고 간주 되기까지 십만 번 내지 백만 번까지 소거 동작이 가능할 수 있다. 블록이 마모된 경우, 플래시 메모리의 일부 영역에서는 현저한 성능 저하 또는 사용 손실이 야기된다. 그리고, 플래시 메모리 시스템의 사용자는 예를 들면 마모된 블록에 저장된 데이터의 손실이나, 데이터 저장능력의 불가능으로 인해 악영향을 받게 된다.
플래시 메모리 시스템 내에서 블록(또는 물리적 위치)의 마모는 주로 소거 주기(erase cycle)에 의해 결정되며, 플래시 메모리는 대략 105번 정도 소거를 수행하면 그 수명이 다하게 된다. 따라서, 플래시 메모리의 수명을 길게 하기 위해서는 메모리 블록(또는 물리적 위치)의 소거 주기를 플래시 메모리의 전체 영역에 골고루 분포시켜야 할 것이다.
따라서, 본 발명의 목적은 높은 신뢰성과 성능을 보장할 수 있는 플래시 메모리 시스템 및 그것의 관리 방법을 제공하는 데 있다.
본 발명의 다른 목적은 소거 주기를 플래시 메모리의 전체 영역에 골고루 분포시키면서도 고속의 가비지 컬렉션을 수행할 수 있는 플래시 메모리 시스템 및 그것의 관리 방법을 제공하는 데 있다.
상술한 바와 같은 본 발명의 목적을 달성하기 위한 본 발명의 특징에 의하면, 가비지 컬렉션 방법은 적어도 둘 이상의 계수들에게 각각 가중치를 적용하여 가비지 컬렉션 코스트를 계산하는 단계; 상기 계산된 가비지 컬렉션 코스트로 해쉬 테이블을 구성하는 단계; 상기 해쉬 테이블에서 가장 작은 가비지 컬렉션 코스트를 갖는 블록을 탐색하는 단계; 그리고 상기 탐색된 블록으로 가비지 컬렉션을 수행하는 단계를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 계수는 웨어 레벨링(wear leveling) 정보와, 블록 당 유효 페이지 개수 정보 중 적어도 하나를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 계수들에게 할당된 상기 가중치의 합은 1.0의 값을 갖는 것을 특징으로 한다.
이 실시예에 있어서, 상기 가비지 컬렉션 코스트를 계산하는 단계에서는 각각의 물리 블록에 대해 상기 각각의 계수와 상기 각각의 가중치의 곱을 더하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 해쉬 테이블을 구성하는 단계에서는, 상기 각각의 가비지 컬렉션 코스트에 대응되는 복수 개의 데이터 리스트들이 구성되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 데이터 리스트는 링크드 리스트로 구성되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 데이터 리스트는 싱글 링크드 리스트, 더블 링크드 리스트, 및 원형 링크드 리스트 중 어느 하나로 구성되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 가비지 컬렉션 코스트는 상기 플래시 메모리 장치에서 기입 동작이 수행될 때마다 업데이트 되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 가비지 컬렉션 코스트는 상기 플래시 메모리 장치에서 기입 동작이 종료될 때마다 업데이트 되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 탐색 단계에서는 상기 가비지 컬렉션 코스트가 작은 순으로 N개의 블록을 검출하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 가비지 컬렉션 단계에서는 상기 N개의 블록에 대해 가비지 컬렉션을 수행하는 것을 특징으로 한다.
상술한 바와 같은 본 발명의 목적을 달성하기 위한 본 발명의 특징에 의하면, 호스트; 플래시 메모리; 그리고 상기 호스트로부터 상기 플래시 메모리에 대한 기입 요청에 응답해서, 적어도 둘 이상의 계수들에게 각각 가중치를 적용하여 가비지 컬렉션 코스트를 계산하고, 상기 계산된 가비지 컬렉션 코스트로 해쉬 테이블을 구성하는 인터페이스 장치를 포함하며, 상기 인터페이스 장치는, 상기 해쉬 테이블에서 가장 작은 가비지 컬렉션 코스트를 갖는 블록을 탐색하고, 상기 탐색 결과를 근거로 하여 가비지 컬렉션을 수행하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 계수는 웨어 레벨링(wear leveling) 정보와, 블록 당 유효 페이지 개수 정보 중 적어도 하나를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 계수들에게 할당된 상기 가충치의 합은 1.0의 값을 갖는 것을 특징으로 한다.
이 실시예에 있어서, 상기 가비지 컬렉션 코스트는, 각각의 물리 블록에 대해 상기 각각의 계수와 상기 각각의 가중치의 곱을 더한 것에 해당되는 특징으로 한다.
이 실시예에 있어서, 상기 해쉬 테이블은, 상기 각각의 가비지 컬렉션 코스트에 대응되는 복수 개의 데이터 리스트들을 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 데이터 리스트는 링크드 리스트로 구성되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 각각의 데이터 리스트는 싱글 링크드 리스트, 더블 링크드 리스트, 및 원형 링크드 리스트 중 어느 하나로 구성되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 가비지 컬렉션 코스트는 상기 플래시 메모리 장치에서 기입 동작이 수행될 때마다 계산되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 가비지 컬렉션 코스트는 상기 플래시 메모리 장치에서 기입 동작이 종료될 때마다 계산되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 인터페이스 장치는 상기 가비지 컬렉션 코스트가 작은 순으로 N개의 블록을 검출하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 인터페이스 장치는 상기 N개의 블록에 대해 가비지 컬렉션을 수행하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 플래시 메모리는 플래시 변환계층의 기능을 수행하는 데 필요한 소프트웨어를 저장하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 인터페이스 장치는 상기 플래시 메모리로부터 플래시 변환계층의 기능을 수행하는 데 필요한 소프트웨어를 로딩하는 메모리를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 메모리는 DRAM 및 SRAM 중 어느 하나로 구성되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 해쉬 테이블은 상기 플래시 메모리에 저장되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 해쉬 테이블은 상기 플래시 메모리로부터 상기 메모리로 로딩되는 것을 특징으로 한다.
(실시예)
이하 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
본 발명의 신규한 플래시 메모리 시스템은, 적어도 둘 이상의 계수들에게 각각 가중치를 적용하여 가비지 컬렉션 코스트를 계산하고, 계산된 가비지 컬렉션 코스트로 해쉬 테이블을 구성한다. 상기 해쉬 테이블은 가비지 컬렉션을 수행하는데 사용된다. 가비지 컬렉션의 수행시 상기 해쉬 테이블에서 가장 작은 가비지 컬렉션 코스트를 갖는 블록이 탐색되고, 상기 탐색된 블록을 이용하여 가비지 컬렉션이 수행된다. 이와 같은 구성에 따르면 소거 분포가 메모리 전체 영역에 걸쳐 고루 분포하도록 하면서도 빠른 속도로 가비지 컬렉션을 수행할 수 있게 된다. 따라서, 플래시 메모리 장치의 신뢰성과 성능을 보장할 수 있게 된다.
도 1은 본 발명에 따른 플래시 메모리 시스템의 구성을 개략적으로 보여주는 블록도이다.
도 1을 참조하면, 본 발명에 따른 플래시 메모리 시스템(1000)은 호스트(100)와 외부 저장 장치(200)를 포함한다. 외부 저장 장치(200)는 인터페이스 장치(300)와 플래시 메모리(400)로 구성된다. 인터페이스 장치(300)는 호스트(100)로부터 플래시 메모리(400)에 대한 액세스가 요청될 때 플래시 메모리(400)를 제어한다. 예를 들면, 인터페이스 장치(300)는 플래시 메모리(400)의 읽기/쓰기/소거 동작을 제어한다. 뿐만 아니라, 인터페이스 장치(300)는 호스트(100)가 플래시 메모 리(400)를 SRAM/HDD 처럼 읽기/쓰기/소거 동작이 자유롭게 수행되는 매체로서 사용되도록 플래시 메모리(400)의 매핑 정보를 관리한다.
인터페이스 장치(300)는 호스트 인터페이스(310), 중앙처리장치(320), 워크 메모리(330), 버퍼 메모리(340), 그리고 플래시 컨트롤러(350)를 포함한다. 호스트 인터페이스(310)는 외부 저장 장치(200)와 호스트(100) 사이의 인터페이스 기능을 제공한다. 중앙처리장치(320)는 외부 저장 장치(200)의 전반적인 동작을 제어한다. 워크 메모리(330)는 FTL 기능을 수행하는 데 필요한 소프트웨어를 저장하는 데 사용된다. 워크 메모리(330)는 또한 플래시 메모리(400)의 매핑 정보를 저장하는 데 사용된다. 플래시 메모리(400)의 매핑 정보는 플래시 메모리(400)의 임의의 영역(예를 들면, 메타 영역)에 저장되고, 파워-업 동작시 워크 메모리(330)로 자동 로딩된다. FTL 기능을 수행하는 데 필요한 소프트웨어는 플래시 메모리(400)의 임의의 영역(예를 들면, 부트 코드 영역)에 저장되고, 파워-업시 워크 메모리(330)로 자동 로딩된다.
워크 메모리(330)는 또한 플래시 메모리(400)의 가비지 컬렉션을 수행하기 위한 정보(이하, 가비지 컬렉션 코스트라 칭함)를 저장하는 데 사용된다. FTL에 의해 계산된 가비지 컬렉션 코스트는 플래시 메모리(400)의 임의의 영역(예를 들면, 메타 영역)에 해쉬 테이블(hash table) 형태로 저장되고, 파워-업 동작시 워크 메모리(330)로 자동 로딩된다. 워크 메모리(330)에서는 해쉬 테이블 형태로 저장된 가비지 컬렉션 코스트를 이용하여 가비지 컬렉션이 수행된다. 가비지 컬렉션 코스트는 플래시 메모리에서 즉 기입 동작이 수행될 때마다(또는 기입 동작이 종료될 때마다) 업데이트 된다.
이 분야의 통상의 지식을 가진 이들에게 잘 알려져 있는 바와 같이, 키 값에 의한 탐색이 가능한 구조를 해시 테이블이라 하고, 해시 테이블을 이용한 탐색을 해싱(hashing)이라 한다. 키 값을 입력 받아 해시 함수(hash function)로 연산한 결과인 해시 주소(hash address)를 인덱스로 사용하여 해시 테이블에 있는 레코드가 액세스(access) 된다. 해쉬 테이블을 이용한 검색은 빠른 속도를 낼 수 있다는 점에서 매우 유리하다. 가비지 컬렉션 코스트의 계산 과정과, 계산된 가비지 컬렉션 코스트를 이용한 가비지 컬렉션 방법은 아래에서 상세히 설명될 것이다.
계속해서, 버퍼 메모리(340)는 플래시 메모리(400)에 데이터를 저장하고자 하는 경우 또는 플래시 메모리(400)로부터 데이터를 읽는 경우 임시적으로 데이터를 저장하는 데 사용된다. 버퍼 메모리(340)는, 예를 들면, 플래시 메모리(400)의 페이지 사이즈에 대응하는 저장 용량을 갖는다. 워크 메모리(320)와 버퍼 메모리(330)는 각각 휘발성 메모리(예를 들면, SRAM)로 구현될 수 있다. 플래시 컨트롤러(350)는 중앙처리장치(320)의 제어 하에서 플래시 메모리(400)의 액세스 동작(예를 들면, 읽기/쓰기/소거 동작들)을 제어하도록 구현된다. 한편, 워크 메모리(330) 및 버퍼 메모리(340)가 동일한 기능을 수행하도록 하나의 메모리(예를 들면, SRAM)로 구현될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
플래시 메모리(400)는 복수 개의 메모리 블록들로 구성된 메모리 셀 어레이를 포함하며, 각 메모리 블록은 복수의 페이지들로 구성된다. 하나의 페이지는 하나의 섹터에 대응하거나 복수의 섹터들에 대응한다. 메모리 셀 어레이의 메모리 블 록들은, 앞서 언급된 바와 같이, 데이터 영역, 로그 영역, 그리고 메타 영역으로 구분된다. 또한, 메모리 셀 어레이에는, 일반적으로, 부트 코드 그리고/또는 FTL를 저장하기 위한 메모리 블록이 더 제공된다. 데이터 플래시 메모리(400)의 어레이 구조가 이상의 설명에 국한되지 않음은 자명하다. 즉, FTL의 매핑 기법에 따라 메모리 셀 어레이의 구조가 다양하게 구현될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 있어 자명하다.
플래시 메모리 장치가 가기고 있는 기입 전 소거 특성상, 올드 블록(old block)을 효과적으로 재 사용하기 위한 기술, 즉 가비지 컬렉션에 대한 중요성이 더욱 높아지고 있다. 플래시 메모리의 자원은 한정되어 있으며, 플래시 메모리의 신뢰성은 소거 횟수를 얼마나 적절히 분배하느냐 하는 문제와 밀접한 관계를 가지고 있다. 또한, 호스트의 기입 명령을 빠르게 처리하기 위해서는 최대한 적은 연산으로 빈 블록(free block)을 만들어 내야 한다. 따라서, 본 발명에서는 가비지 컬렉션을 수행하기 위한 코스트를 미리 계산하고, 계산된 코스트를 근거로 하여 가비지 컬렉션을 수행한다. 그 결과, 플래시 메모리의 재 사용 빈도가 균등하게 관리될 수 있고, 소거 분포가 메모리 전체에 걸쳐 고루 분포될 수 있다. 특히, 본 발명에서는 계산된 가비지 컬렉션 코스르를 관리하기 위한 방법으로, 해쉬 테이블을 이용한 해싱 기법을 사용한다. 잘 알려져 있는 바와 같이 해싱 기법은 빠른 검색 결과를 도출할 수 있기 때문에 빠른 속도로 빈 블록을 만들어 낼 수 있게 된다. 본 발명에 따른 가비지 컬렉션 코스트 계산 방법과, 이를 이용한 해쉬 테이블 구성 방법을 살펴보면 다음과 같다.
도 2는 본 발명에 따른 가비지 컬렉션 코스트의 계산 방법을 예시적으로 보여주는 흐름도이다. 도 2에 도시된 가비지 컬렉션 코스트는 호스트로부터 입력된 기입 명령에 응답해서 TFL에 의해 계산되며, 기입 동작을 수행할 때 또는 기입동작이 수행된 후에 계산될 수 있다.
도 2를 참조하면, 가비지 컬렉션 코스트의 계산에 앞서 상기 코스트의 계산에 사용될 계수(factor)가 선정된다(S1000 단계). 그리고 나서, 선정된 각 계수에 대한 가중치(weight)가 정의된다(S1100 단계). 가비지 컬렉션 코스트에 반영된 계수와, 가중치의 값은 플래시 메모리의 특성에 따라 각기 다르게 정의될 수 있다. 예를 들면, 플래시 메모리의 수명과 성능이 중요시되는 시스템인 경우, 플래시 메모리의 수명을 나타내는 웨어 레벨링(wear leveling) 정보와, 블록 당 유효 페이지 개수 정보가 상기 코스트의 계산에 사용될 계수로서 사용될 수 있다. 상기 두 개의 계수들 중 웨어 레벨링의 중요도가 높다면, 상기 웨어 레벨링에는 예컨대 0.7의 가중치가 적용되고, 상기 블록 당 유효 페이지 개수에는 예컨대 0.3의 가중치가 적용될 수 있다. 이 경우, 계수들에 적용된 가중치의 전체 합은 1.0 (예를 들면, 0.7+0.3=1.0)이 되도록 구성된다.
이어서, S1000 단계와 S1100 단계에서 정의된 계수와, 선정된 각 계수에 대한 가중치를 이용하여 각각의 물리 블록 번호(physical block number ; PBN)에 대해서 가비지 컬렉션 코스트(CostPBN)가 계산된다(S1200 단계). 상기 코스트를 계산하는 계산식은 다음과 같다.
여기서, CostPBN는 물리 블록 번호에 대응되는 가비지 컬렉션 코스트를 의미한다. 그리고, Factorn은 n개(n>1)의 계수 각각을 의미하고, Weightfct는 각각의 계수에 설정된 가중치를 의미한다. [수학식 1]에서 계산된 가비지 컬렉션 코스트(CostPBN)의 값이 적을수록 해당 블록의 소거 횟수가 적음을 의미하고, 가비지 컬렉션 코스트(CostPBN)의 값이 클수록 해당 블록의 소거 횟수가 많음을 의미한다. 그리고, [수학식 1]에서 계산된 가비지 컬렉션 코스트(CostPBN)의 값이 적을수록 해당 블록에 유효 페이지 개수가 적음을 의미하고, 가비지 컬렉션 코스트(CostPBN)의 값이 클수록 해당 블록에 유효 페이지 개수가 많음을 의미한다. S1200 단계에서 계산된 각 물리 번호에 대한 가비지 컬렉션 코스트(CostPBN)는, 해쉬 테이블에 저장된다(S1300 단계). 본 발명에서는 해쉬 테이블에 저장된 데이터 중 가비지 컬렉션 코스트(CostPBN)가 가장 작은 물리 블록을 우선적으로 이용하여 가비지 컬렉션이 수행된다. 그 결과, 소거 횟수가 적으면서도 블록 당 유효 페이지 개수가 적은 블록이 우선적으로 선택되어 가비지 컬렉션이 수행될 수 있게 된다. 따라서, 플래시 메모리의 성능과 신뢰성이 모두 향상된다.
도 3은 본 발명에 따른 해쉬 테이블(500)의 구성을 예시적으로 보여주는 도 면이다. 그리고, 도 4는 도 3에 도시된 데이터 리스트(520)의 구성을 예시적으로 보여주는 도면이다.
도 3을 참조하면, 본 발명에 따른 해쉬 테이블(500)은 해쉬 인덱스(510)와 메인 데이터 리스트(530)를 포함한다. 해쉬 인덱스(510)에는 도 2에서 계산된 가비지 컬렉션 코스트 값이 저장되며, 상기 코스트 값은 0 내지 N의 값을 갖는다. 예를 들어, 가비지 컬렉션 코스트 값의 범위가 0∼N이면 해쉬 테이블의 인덱스 크기는 N+1이 된다.
메인 데이터 리스트(530)는 각각의 인덱스에 대응되는 복수 개의 데이터 리스트(520)로 구성된다. 데이터 리스트(520)의 구성 예는 도 4와 같다. 본 발명에서는 더블 링크드 리스트(double linked list) 방식을 이용하여 각각의 데이터 리스트(520)를 구성하는 예가 예시적으로 설명되어 있다. 도 3 및 도 4에서 알 수 있는 바와 같이, 더블 데이터 리스트(520)에는 다음 노드를 가리키는 포인터(next)와, 이전 노드를 가리키는 포인터(prev)가 모두 포함된다. 따라서, 순방향은 물론 역방향으로도 리스트를 검색할 수 있으며, 노드의 삽입과 삭제가 용이한 특징을 갖는다. 여기서, 더블 데이터 리스트(520)를 구성하는 각각의 포인터는 2 바이트로 구성된다. 그러므로, 이전 노드를 가리키는 포인터와 다음 노드를 가리키는 포인터로 구성된 1 쌍의 포인터는 4 바이트로 구성된다. 하지만, 도 3 및 도 4에 도시된 링크드 리스트의 형태는 본 발명이 적용되는 일 예에 불과하며, 본 발명에서 사용되는 링크드 리스트의 구성은 플래시 메모리 시스템의 특성에 따라 싱글 링크드 리스트(single linked list), 또는 원형 링크드 리스트(circular linked list) 등의 형 태로도 구현 가능하다.
다시 도 3을 참조하면, 각각의 인덱스에는 대응되는 코스트 값을 가지는 물리 블록 번호(즉, 물리 블록 어드레스)가 저장된다. 이 경우, 인덱스에는 대응되어 저장되는 물리 블록 번호는 1개에 불과하다. 그러나, 각각의 물리 블록 번호는 링크드 리스트 형태로 상호 연결되기 때문에, 1개의 물리 블록 번호만 알더라도 상기 물리 블록 번호와 동일한 코스트를 갖는 다른 물리 블록 번호들도 알 수 있게 된다.
예를 들면, "0"의 가비지 컬렉션 코스트 값에 대응되는 인덱스(0xFF00)에는 "0x00F3"이라는 물리 블록 번호가 대응된다. "0x00F3" 이전의 물리 번호는 "0xFF00"이고, "0x00F3" 다음의 물리 번호는 "0x0004"이다. 그리고, "0x0004" 다음의 물리 번호는 "0x0011"이고, "0x0011" 다음의 물리 번호는 "0xFFFF"이다. 이 경우, 상기 물리번호들은 "0xFF00", "0x00F3", "0x0004", "0x0011", "0xFFFF"의 순서로 배열되며, 각각이 "0"의 가비지 컬렉션 코스트 값을 갖는다. 이와 마찬가지로, "N-1"의 가비지 컬렉션 코스트 값에 대응되는 인덱스(0xFF3F)에는 "0x0010"이라는 물리 블록 번호가 대응된다. "0x0010" 이전의 물리 번호는 "0xFFFF"(즉, NULL)이고, "0x0010" 다음의 물리 번호는 "0x0082"이다. 그리고, "0x0082" 다음의 물리 번호는 "0x00FF"이고, "0x00FF" 다음의 물리 번호는 "0xFFFF"이다. 그리고, "1" 내지 "4"의 가비지 컬렉션 코스트 값을 갖는 인덱스와, "N"의 가비지 컬렉션 코스트 값을 갖는 인덱스에는 대응되는 물리 번호가 없으므로, "0xFFFF"(즉, NULL) 상태의 값이 대응된다. 상기 물리번호들은 "0xFFFF", "0x0010", "0x0082", "0x00FF", "0xFFFF"의 순서로 배열되며, 각각이 "N-1"의 가비지 컬렉션 코스트 값을 갖는다.
도 5는 본 발명에 따른 가비지 컬렉션 방법을 보여주는 도면이다. 도 5에 도시된 가비지 컬렉션 방법에는 도 3에 도시된 해쉬 테이블이 사용된다.
도 5를 참조하면, 본 발명에 따른 가비지 컬렉션 방법은 먼저 해쉬 테이블(500)에서 코스트가 가장 적은 블록을 탐색한다(S2000 단계). 탐색된 블록은 가비지 컬렉션에 사용될 대상 블록이 된다. 이어서, 탐색 결과로 얻어진 블록들이 N개가 확보되었는지 여부가 판별된다(S2100 단계). S2100 단계에서의 판별 결과, 탐색 결과로 얻어진 블록들이 N개가 확보되었으면 상기 N개의 블록에 대해 가비지 컬렉션을 수행한다(S2200 단계). 그리고 S2100 단계에서의 판별 결과, 탐색 결과로 얻어진 블록들이 N개가 확보되지 않았으면 수순은 S2000 단계로 되돌아가서 해쉬 테이블(500)에서 코스트가 가장 적은 블록을 탐색한다. 상기 블록의 탐색은 N개의 블록이 확보될 때까지 반복된다.
가비지 컬렉션에 사용될 블록들의 개수(즉, N)는 FTL의 가비지 컬렉션 알고리즘에 의해 결정되며, 상기 블록들의 개수(즉, N)는 다양한 형태로 변경 가능하다. 한편, S2000 단계에서 코스트 값이 M인 메모리 블록이 가장 적은 코스트 값을 갖는 블록으로서 탐색된 경우, 탐색된 블록과 링크드 리스트 형태로 연결된 블록들이 가비지 컬렉션에 사용될 블록들로서 탐색된다. 만일 코스트 값 M에 대응되는 메모리 블록들의 개수가 N개 존재한다면, 코스트 값 M을 가지는 N 개의 메모리 블록들을 이용하여 가비지 컬렉션이 수행될 것이다. 그러나, 만일 코스트 값 M에 대응되는 메모리 블록들의 개수가 N개 존재하지 않다면, 코스트 값이 M+1인 블록(또는 코스트 값이 M+1 이상인 블록)들을 추가 탐색하여 N 개의 메모리 블록들을 확보한다. 확보된 N개의 블록들을 이용하여 가비지 컬렉션이 수행된다.
앞에서 설명한 바와 같이, 본 발명에 따른 해쉬 테이블(500)과, 상기 해쉬 테이블(500)을 구성하는 메인 데이터 리스트(530)의 자료 구조는 가비지 컬렉션 코스트의 범위 이내에서 단 1 번의 선형 탐색(linear search)을 허용한다, 그리고, 상기 선형 탐색 구간 동안 N 개의 블록을 찾기 위한 N회의 탐색 시간이 허용된다. 만일 가비지 컬렉션 코스트가 해쉬 테이블로 구성되지 않는 경우, 가비지 컬렉션에 사용될 N개의 블록을 모두 찾을 때까지 N회의 탐색 시간을 필요로 하는 선형 탐색이 N회 반복될 것이다. 그러므로, 가비지 컬렉션 코스트를 해쉬 테이블로 구성한 본 발명에 따른 구성에 따르면, 가비지 컬렉션에 사용될 N개의 블록을 탐색하는 시간이 현저히 줄어들게 된다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이상과 같은 본 발명에 의하면, 소거 분포가 메모리 전체 영역에 걸쳐 고루 분포하도록 하면서도 빠른 속도로 가비지 컬렉션을 수행할 수 있게 되므로, 플래시 메모리 장치의 신뢰성과 성능을 보장할 수 있게 된다.
Claims (27)
- 적어도 둘 이상의 계수들에게 각각 가중치를 적용하여 가비지 컬렉션 코스트를 계산하는 단계;상기 계산된 가비지 컬렉션 코스트로 해쉬 테이블을 구성하는 단계;상기 해쉬 테이블에서 가장 작은 가비지 컬렉션 코스트를 갖는 블록을 탐색하는 단계; 그리고상기 탐색된 블록으로 가비지 컬렉션을 수행하는 단계를 포함하는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 1 항에 있어서,상기 계수는 웨어 레벨링(wear leveling) 정보와, 블록 당 유효 페이지 개수 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 1 항에 있어서,상기 계수들에게 할당된 상기 가중치의 합은 1.0의 값을 갖는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 1 항에 있어서,상기 가비지 컬렉션 코스트를 계산하는 단계에서는, 각각의 물리 블록에 대 해 상기 각각의 계수와 상기 각각의 가중치의 곱을 더하는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 1 항에 있어서,상기 해쉬 테이블을 구성하는 단계에서는, 상기 각각의 가비지 컬렉션 코스트에 대응되는 복수 개의 데이터 리스트들이 구성되는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 5 항에 있어서,상기 각각의 데이터 리스트는 링크드 리스트로 구성되는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 5 항에 있어서,상기 각각의 데이터 리스트는 싱글 링크드 리스트, 더블 링크드 리스트, 및 원형 링크드 리스트 중 어느 하나로 구성되는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 1 항에 있어서,상기 가비지 컬렉션 코스트는 상기 플래시 메모리 장치에서 기입 동작이 수행될 때마다 업데이트 되는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 1 항에 있어서,상기 가비지 컬렉션 코스트는 상기 플래시 메모리 장치에서 기입 동작이 종료될 때마다 업데이트 되는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 1 항에 있어서,상기 탐색 단계에서는 상기 가비지 컬렉션 코스트가 작은 순으로 N개의 블록을 검출하는 것을 특징으로 하는 가비지 컬렉션 방법.
- 제 10 항에 있어서,상기 가비지 컬렉션 단계에서는 상기 N개의 블록에 대해 가비지 컬렉션을 수행하는 것을 특징으로 하는 가비지 컬렉션 방법.
- 호스트;플래시 메모리; 그리고상기 호스트로부터 상기 플래시 메모리에 대한 기입 요청에 응답해서, 적어도 둘 이상의 계수들에게 각각 가중치를 적용하여 가비지 컬렉션 코스트를 계산하고, 상기 계산된 가비지 컬렉션 코스트로 해쉬 테이블을 구성하는 인터페이스 장치를 포함하며,상기 인터페이스 장치는, 상기 해쉬 테이블에서 가장 작은 가비지 컬렉션 코 스트를 갖는 블록을 탐색하고, 상기 탐색 결과를 근거로 하여 가비지 컬렉션을 수행하는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 계수는 웨어 레벨링(wear leveling) 정보와, 블록 당 유효 페이지 개수 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 계수들에게 할당된 상기 가충치의 합은 1.0의 값을 갖는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 가비지 컬렉션 코스트는, 각각의 물리 블록에 대해 상기 각각의 계수와 상기 각각의 가중치의 곱을 더한 것에 해당되는 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 해쉬 테이블은, 상기 각각의 가비지 컬렉션 코스트에 대응되는 복수 개의 데이터 리스트들을 포함하는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 16 항에 있어서,상기 각각의 데이터 리스트는 링크드 리스트로 구성되는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 16 항에 있어서,상기 각각의 데이터 리스트는 싱글 링크드 리스트, 더블 링크드 리스트, 및 원형 링크드 리스트 중 어느 하나로 구성되는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 가비지 컬렉션 코스트는 상기 플래시 메모리 장치에서 기입 동작이 수행될 때마다 계산되는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 가비지 컬렉션 코스트는 상기 플래시 메모리 장치에서 기입 동작이 종료될 때마다 계산되는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 인터페이스 장치는 상기 가비지 컬렉션 코스트가 작은 순으로 N개의 블록을 검출하는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 21 항에 있어서,상기 인터페이스 장치는 상기 N개의 블록에 대해 가비지 컬렉션을 수행하는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 플래시 메모리는 플래시 변환계층의 기능을 수행하는 데 필요한 소프트웨어를 저장하는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 인터페이스 장치는 상기 플래시 메모리로부터 플래시 변환계층의 기능을 수행하는 데 필요한 소프트웨어를 로딩하는 메모리를 포함하는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 24 항에 있어서,상기 메모리는 DRAM 및 SRAM 중 어느 하나로 구성되는 것을 특징으로 하는 플래시 메모리 시스템.
- 제 12 항에 있어서,상기 해쉬 테이블은 상기 플래시 메모리에 저장되는 것을 특징으로 하는 플 래시 메모리 시스템.
- 제 24 항에 있어서,상기 해쉬 테이블은 상기 플래시 메모리로부터 상기 메모리로 로딩되는 것을 특징으로 하는 플래시 메모리 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060108520A KR100789406B1 (ko) | 2006-11-03 | 2006-11-03 | 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 |
US11/646,501 US7890550B2 (en) | 2006-11-03 | 2006-12-28 | Flash memory system and garbage collection method thereof |
CNA2007101441783A CN101241471A (zh) | 2006-11-03 | 2007-11-05 | 快闪存储器系统及其垃圾收集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060108520A KR100789406B1 (ko) | 2006-11-03 | 2006-11-03 | 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100789406B1 true KR100789406B1 (ko) | 2007-12-28 |
Family
ID=39148169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060108520A KR100789406B1 (ko) | 2006-11-03 | 2006-11-03 | 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7890550B2 (ko) |
KR (1) | KR100789406B1 (ko) |
CN (1) | CN101241471A (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101397353B1 (ko) | 2011-08-08 | 2014-05-19 | 가부시끼가이샤 도시바 | Key-value 스토어를 포함하는 메모리 시스템 |
KR101397264B1 (ko) | 2011-08-08 | 2014-05-20 | 가부시끼가이샤 도시바 | 키값 스토어를 포함하는 메모리 시스템 |
KR20160110596A (ko) * | 2015-03-09 | 2016-09-22 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법 |
KR20160119607A (ko) * | 2015-04-06 | 2016-10-14 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20170003776A (ko) * | 2015-06-30 | 2017-01-10 | 삼성전자주식회사 | 저장 장치 및 그것의 가비지 컬렉션 방법 |
US11966608B2 (en) | 2021-11-15 | 2024-04-23 | Samsung Electronics Co., Ltd. | Memory controller with improved data reliability and memory system including the same |
Families Citing this family (110)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007132452A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies | Reducing programming error in memory devices |
US8239735B2 (en) | 2006-05-12 | 2012-08-07 | Apple Inc. | Memory Device with adaptive capacity |
KR101202537B1 (ko) | 2006-05-12 | 2012-11-19 | 애플 인크. | 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩 |
CN103280239B (zh) | 2006-05-12 | 2016-04-06 | 苹果公司 | 存储设备中的失真估计和消除 |
WO2008026203A2 (en) | 2006-08-27 | 2008-03-06 | Anobit Technologies | Estimation of non-linear distortion in memory devices |
WO2008053473A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Memory cell readout using successive approximation |
US7975192B2 (en) | 2006-10-30 | 2011-07-05 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US7924648B2 (en) | 2006-11-28 | 2011-04-12 | Anobit Technologies Ltd. | Memory power and performance management |
US8151163B2 (en) | 2006-12-03 | 2012-04-03 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
US7900102B2 (en) | 2006-12-17 | 2011-03-01 | Anobit Technologies Ltd. | High-speed programming of memory devices |
US7751240B2 (en) | 2007-01-24 | 2010-07-06 | Anobit Technologies Ltd. | Memory device with negative thresholds |
US8151166B2 (en) | 2007-01-24 | 2012-04-03 | Anobit Technologies Ltd. | Reduction of back pattern dependency effects in memory devices |
WO2008111058A2 (en) | 2007-03-12 | 2008-09-18 | Anobit Technologies Ltd. | Adaptive estimation of memory cell read thresholds |
US8001320B2 (en) | 2007-04-22 | 2011-08-16 | Anobit Technologies Ltd. | Command interface for memory devices |
US8234545B2 (en) | 2007-05-12 | 2012-07-31 | Apple Inc. | Data storage with incremental redundancy |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US7925936B1 (en) | 2007-07-13 | 2011-04-12 | Anobit Technologies Ltd. | Memory device with non-uniform programming levels |
US8259497B2 (en) | 2007-08-06 | 2012-09-04 | Apple Inc. | Programming schemes for multi-level analog memory cells |
US8174905B2 (en) | 2007-09-19 | 2012-05-08 | Anobit Technologies Ltd. | Programming orders for reducing distortion in arrays of multi-level analog memory cells |
US7773413B2 (en) | 2007-10-08 | 2010-08-10 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells in the presence of temperature variations |
US8068360B2 (en) | 2007-10-19 | 2011-11-29 | Anobit Technologies Ltd. | Reading analog memory cells using built-in multi-threshold commands |
US8527819B2 (en) | 2007-10-19 | 2013-09-03 | Apple Inc. | Data storage in analog memory cell arrays having erase failures |
US8000141B1 (en) | 2007-10-19 | 2011-08-16 | Anobit Technologies Ltd. | Compensation for voltage drifts in analog memory cells |
KR101509836B1 (ko) | 2007-11-13 | 2015-04-06 | 애플 인크. | 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택 |
US8225181B2 (en) | 2007-11-30 | 2012-07-17 | Apple Inc. | Efficient re-read operations from memory devices |
US8209588B2 (en) | 2007-12-12 | 2012-06-26 | Anobit Technologies Ltd. | Efficient interference cancellation in analog memory cell arrays |
US8456905B2 (en) | 2007-12-16 | 2013-06-04 | Apple Inc. | Efficient data storage in multi-plane memory devices |
US8085586B2 (en) | 2007-12-27 | 2011-12-27 | Anobit Technologies Ltd. | Wear level estimation in analog memory cells |
US8156398B2 (en) | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
US7924587B2 (en) | 2008-02-21 | 2011-04-12 | Anobit Technologies Ltd. | Programming of analog memory cells using a single programming pulse per state transition |
US7864573B2 (en) | 2008-02-24 | 2011-01-04 | Anobit Technologies Ltd. | Programming analog memory cells for reduced variance after retention |
JP4675985B2 (ja) * | 2008-03-01 | 2011-04-27 | 株式会社東芝 | メモリシステム |
US8230300B2 (en) | 2008-03-07 | 2012-07-24 | Apple Inc. | Efficient readout from analog memory cells using data compression |
US8400858B2 (en) | 2008-03-18 | 2013-03-19 | Apple Inc. | Memory device with reduced sense time readout |
US8059457B2 (en) | 2008-03-18 | 2011-11-15 | Anobit Technologies Ltd. | Memory device with multiple-accuracy read commands |
US7995388B1 (en) | 2008-08-05 | 2011-08-09 | Anobit Technologies Ltd. | Data storage using modified voltages |
US7924613B1 (en) | 2008-08-05 | 2011-04-12 | Anobit Technologies Ltd. | Data storage in analog memory cells with protection against programming interruption |
US8169825B1 (en) | 2008-09-02 | 2012-05-01 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells subjected to long retention periods |
US8949684B1 (en) | 2008-09-02 | 2015-02-03 | Apple Inc. | Segmented data storage |
US8000135B1 (en) | 2008-09-14 | 2011-08-16 | Anobit Technologies Ltd. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8482978B1 (en) | 2008-09-14 | 2013-07-09 | Apple Inc. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8239734B1 (en) | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
US8261159B1 (en) | 2008-10-30 | 2012-09-04 | Apple, Inc. | Data scrambling schemes for memory devices |
US8208304B2 (en) | 2008-11-16 | 2012-06-26 | Anobit Technologies Ltd. | Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N |
US8174857B1 (en) | 2008-12-31 | 2012-05-08 | Anobit Technologies Ltd. | Efficient readout schemes for analog memory cell devices using multiple read threshold sets |
US8248831B2 (en) | 2008-12-31 | 2012-08-21 | Apple Inc. | Rejuvenation of analog memory cells |
US8924661B1 (en) | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
US8228701B2 (en) | 2009-03-01 | 2012-07-24 | Apple Inc. | Selective activation of programming schemes in analog memory cell arrays |
US8832354B2 (en) | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8259506B1 (en) | 2009-03-25 | 2012-09-04 | Apple Inc. | Database of memory read thresholds |
US8977805B2 (en) | 2009-03-25 | 2015-03-10 | Apple Inc. | Host-assisted compaction of memory blocks |
US8238157B1 (en) | 2009-04-12 | 2012-08-07 | Apple Inc. | Selective re-programming of analog memory cells |
TWI405214B (zh) * | 2009-05-06 | 2013-08-11 | A Data Technology Co Ltd | 快閃記憶體儲存系統之資料燒錄方法 |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US8495465B1 (en) | 2009-10-15 | 2013-07-23 | Apple Inc. | Error correction coding over multiple memory pages |
US8677054B1 (en) | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
US8694814B1 (en) | 2010-01-10 | 2014-04-08 | Apple Inc. | Reuse of host hibernation storage space by memory controller |
US8572311B1 (en) | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
US8375161B2 (en) * | 2010-03-03 | 2013-02-12 | James H. Stephens | Flash memory hash table |
US8694853B1 (en) | 2010-05-04 | 2014-04-08 | Apple Inc. | Read commands for reading interfering memory cells |
US8572423B1 (en) | 2010-06-22 | 2013-10-29 | Apple Inc. | Reducing peak current in memory systems |
KR20110139956A (ko) * | 2010-06-24 | 2011-12-30 | 삼성전자주식회사 | 맵핑 테이블을 복구하는 데이터 기억 장치 및 데이터 관리 방법 |
US8595591B1 (en) | 2010-07-11 | 2013-11-26 | Apple Inc. | Interference-aware assignment of programming levels in analog memory cells |
US9104580B1 (en) | 2010-07-27 | 2015-08-11 | Apple Inc. | Cache memory for hybrid disk drives |
US8767459B1 (en) | 2010-07-31 | 2014-07-01 | Apple Inc. | Data storage in analog memory cells across word lines using a non-integer number of bits per cell |
US8856475B1 (en) | 2010-08-01 | 2014-10-07 | Apple Inc. | Efficient selection of memory blocks for compaction |
US8694854B1 (en) | 2010-08-17 | 2014-04-08 | Apple Inc. | Read threshold setting based on soft readout statistics |
US20120059974A1 (en) * | 2010-09-02 | 2012-03-08 | Sai Krishna Mylavarapu | Method and apparatus for improving computer system performance by isolating system and user data |
US8417878B2 (en) | 2010-09-20 | 2013-04-09 | Seagate Technology Llc | Selection of units for garbage collection in flash memory |
US9021181B1 (en) | 2010-09-27 | 2015-04-28 | Apple Inc. | Memory management for unifying memory cell conditions by using maximum time intervals |
US9146766B2 (en) | 2011-06-22 | 2015-09-29 | Vmware, Inc. | Consistent unmapping of application data in presence of concurrent, unquiesced writers and readers |
CN102981959B (zh) * | 2011-09-05 | 2015-11-04 | 光宝科技股份有限公司 | 固态存储装置及其垃圾搜集动作的控制方法 |
US9141533B2 (en) * | 2012-05-31 | 2015-09-22 | Silicon Motion, Inc. | Data storage device and flash memory control method for performing garbage collection |
US10120796B2 (en) * | 2012-09-14 | 2018-11-06 | Sap Se | Memory allocation for long-lived objects |
KR20140040998A (ko) * | 2012-09-27 | 2014-04-04 | 삼성전자주식회사 | 로그기반 데이터 저장 시스템의 관리방법 |
KR102002830B1 (ko) | 2012-09-28 | 2019-07-23 | 삼성전자 주식회사 | 세그먼트 클리닝 장치 및 방법 |
US9430376B2 (en) * | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
KR102053865B1 (ko) | 2013-03-15 | 2019-12-09 | 삼성전자주식회사 | 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템 |
CN103927263B (zh) * | 2014-04-01 | 2017-02-15 | 华为技术有限公司 | 垃圾回收方法和装置 |
US10725668B1 (en) * | 2014-08-29 | 2020-07-28 | SK Hynix Inc. | Data separation during garbage collection and wear leveling |
US10318414B2 (en) * | 2014-10-29 | 2019-06-11 | SK Hynix Inc. | Memory system and memory management method thereof |
US20160179401A1 (en) * | 2014-12-17 | 2016-06-23 | Sk Hynix Memory Solutions Inc. | Memory system and the operation method thereof |
US20160188233A1 (en) * | 2014-12-26 | 2016-06-30 | Mediatek Inc. | Method for interrupting cleaning procedure of flash memory |
KR102467032B1 (ko) | 2015-10-08 | 2022-11-14 | 삼성전자주식회사 | 메모리 스케줄링 방법 및 메모리 시스템의 동작방법 |
JP6414852B2 (ja) * | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR20170099018A (ko) * | 2016-02-22 | 2017-08-31 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
US10540274B2 (en) * | 2016-03-29 | 2020-01-21 | Micron Technology, Inc. | Memory devices including dynamic superblocks, and related methods and electronic systems |
KR102475798B1 (ko) | 2016-07-14 | 2022-12-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20180032728A (ko) | 2016-09-22 | 2018-04-02 | 삼성전자주식회사 | 저장 장치, 저장 장치를 포함하는 사용자 장치, 및 사용자 장치의 동작 방법 |
US10754788B1 (en) * | 2016-09-30 | 2020-08-25 | EMC IP Holding Company LLC | Hash tables in flash memory |
US20180121348A1 (en) * | 2016-10-31 | 2018-05-03 | Microsoft Technology Licensing, Llc | Automatic Garbage Collection for Distributed Storage |
US10248562B2 (en) | 2017-06-30 | 2019-04-02 | Microsoft Technology Licensing, Llc | Cost-based garbage collection scheduling in a distributed storage environment |
US10241716B2 (en) | 2017-06-30 | 2019-03-26 | Microsoft Technology Licensing, Llc | Global occupancy aggregator for global garbage collection scheduling |
KR102544162B1 (ko) * | 2017-07-11 | 2023-06-16 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20190026246A (ko) * | 2017-09-04 | 2019-03-13 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
TWI679534B (zh) | 2017-09-18 | 2019-12-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及資料儲存方法 |
KR102457400B1 (ko) * | 2017-11-16 | 2022-10-21 | 삼성전자주식회사 | 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템 |
KR102512727B1 (ko) * | 2017-12-22 | 2023-03-22 | 삼성전자주식회사 | 가비지 컬렉션을 수행하는 스토리지 장치, 및 스토리지 장치의 가비지 컬렉션 방법 |
TW202001565A (zh) * | 2018-06-21 | 2020-01-01 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 |
TWI687930B (zh) * | 2018-11-07 | 2020-03-11 | 慧榮科技股份有限公司 | 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置 |
TWI759580B (zh) * | 2019-01-29 | 2022-04-01 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
CN111026673B (zh) * | 2019-11-19 | 2023-05-05 | 中国航空工业集团公司西安航空计算技术研究所 | 一种nand flash垃圾回收动态优化方法 |
CN111258505B (zh) * | 2020-01-21 | 2023-09-26 | 合肥兆芯电子有限公司 | 快闪存储器的数据合并方法、控制电路单元与存储装置 |
CN112052193B (zh) * | 2020-09-28 | 2023-04-07 | 成都佰维存储科技有限公司 | 一种垃圾回收方法、装置、可读存储介质及电子设备 |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11556416B2 (en) | 2021-05-05 | 2023-01-17 | Apple Inc. | Controlling memory readout reliability and throughput by adjusting distance between read thresholds |
CN113657708B (zh) * | 2021-07-05 | 2024-06-21 | 江汉大学 | 一种服务器的处理方法、装置以及服务器 |
US11847342B2 (en) | 2021-07-28 | 2023-12-19 | Apple Inc. | Efficient transfer of hard data and confidence levels in reading a nonvolatile memory |
CN114327254A (zh) * | 2021-11-16 | 2022-04-12 | 三星(中国)半导体有限公司 | 存储数据的方法和装置 |
CN117435517B (zh) * | 2023-12-19 | 2024-04-05 | 合肥康芯威存储技术有限公司 | 一种存储器件及其数据处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0997218A (ja) * | 1995-09-28 | 1997-04-08 | Canon Inc | フラッシュrom管理方法及び装置及びコンピュータ制御装置 |
JP2002032256A (ja) | 2000-07-19 | 2002-01-31 | Matsushita Electric Ind Co Ltd | 端末装置 |
JP2004296014A (ja) | 2003-03-27 | 2004-10-21 | Mitsubishi Electric Corp | 不揮発性メモリの消去回数平準化方法 |
JP2006268880A (ja) | 1991-11-28 | 2006-10-05 | Hitachi Ltd | フラッシュメモリを備えた情報機器 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4775932A (en) * | 1984-07-31 | 1988-10-04 | Texas Instruments Incorporated | Computer memory system with parallel garbage collection independent from an associated user processor |
US5485613A (en) * | 1991-08-27 | 1996-01-16 | At&T Corp. | Method for automatic memory reclamation for object-oriented systems with real-time constraints |
US5404485A (en) | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US5937425A (en) | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
KR100644602B1 (ko) | 2000-10-11 | 2006-11-10 | 삼성전자주식회사 | 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조 |
US6732221B2 (en) * | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
KR100453053B1 (ko) * | 2002-06-10 | 2004-10-15 | 삼성전자주식회사 | 플래쉬 메모리용 파일 시스템 |
JP3808842B2 (ja) | 2003-04-25 | 2006-08-16 | 株式会社東芝 | 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 |
JP4242245B2 (ja) | 2003-10-06 | 2009-03-25 | 株式会社ワークビット | フラッシュrom制御装置 |
JP4334331B2 (ja) | 2003-12-11 | 2009-09-30 | 群聯電子股▲ふん▼有限公司 | フラッシュメモリのアクセス制御方法 |
US7315917B2 (en) * | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US20060161724A1 (en) * | 2005-01-20 | 2006-07-20 | Bennett Alan D | Scheduling of housekeeping operations in flash memory systems |
US8060718B2 (en) * | 2006-06-20 | 2011-11-15 | International Business Machines | Updating a memory to maintain even wear |
-
2006
- 2006-11-03 KR KR1020060108520A patent/KR100789406B1/ko active IP Right Grant
- 2006-12-28 US US11/646,501 patent/US7890550B2/en active Active
-
2007
- 2007-11-05 CN CNA2007101441783A patent/CN101241471A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006268880A (ja) | 1991-11-28 | 2006-10-05 | Hitachi Ltd | フラッシュメモリを備えた情報機器 |
JPH0997218A (ja) * | 1995-09-28 | 1997-04-08 | Canon Inc | フラッシュrom管理方法及び装置及びコンピュータ制御装置 |
JP2002032256A (ja) | 2000-07-19 | 2002-01-31 | Matsushita Electric Ind Co Ltd | 端末装置 |
JP2004296014A (ja) | 2003-03-27 | 2004-10-21 | Mitsubishi Electric Corp | 不揮発性メモリの消去回数平準化方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101397353B1 (ko) | 2011-08-08 | 2014-05-19 | 가부시끼가이샤 도시바 | Key-value 스토어를 포함하는 메모리 시스템 |
KR101397264B1 (ko) | 2011-08-08 | 2014-05-20 | 가부시끼가이샤 도시바 | 키값 스토어를 포함하는 메모리 시스템 |
KR20160110596A (ko) * | 2015-03-09 | 2016-09-22 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법 |
KR102301772B1 (ko) * | 2015-03-09 | 2021-09-16 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법 |
KR20160119607A (ko) * | 2015-04-06 | 2016-10-14 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US9652172B2 (en) | 2015-04-06 | 2017-05-16 | SK Hynix Inc. | Data storage device performing merging process on groups of memory blocks and operation method thereof |
KR102425470B1 (ko) | 2015-04-06 | 2022-07-27 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20170003776A (ko) * | 2015-06-30 | 2017-01-10 | 삼성전자주식회사 | 저장 장치 및 그것의 가비지 컬렉션 방법 |
KR102509540B1 (ko) | 2015-06-30 | 2023-03-14 | 삼성전자주식회사 | 저장 장치 및 그것의 가비지 컬렉션 방법 |
US11645199B2 (en) | 2015-06-30 | 2023-05-09 | Samsung Electronics Co., Ltd. | Storage device and garbage collection method thereof |
US11966608B2 (en) | 2021-11-15 | 2024-04-23 | Samsung Electronics Co., Ltd. | Memory controller with improved data reliability and memory system including the same |
Also Published As
Publication number | Publication date |
---|---|
US20080109590A1 (en) | 2008-05-08 |
US7890550B2 (en) | 2011-02-15 |
CN101241471A (zh) | 2008-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100789406B1 (ko) | 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 | |
US20230152969A1 (en) | Memory system and method of controlling memory system | |
US10838859B2 (en) | Recency based victim block selection for garbage collection in a solid state device (SSD) | |
KR100526190B1 (ko) | 플래시 메모리의 재사상 방법 | |
KR101038167B1 (ko) | 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 | |
KR101257691B1 (ko) | 메모리 컨트롤러 및 이의 데이터 관리방법 | |
US6675281B1 (en) | Distributed mapping scheme for mass storage system | |
KR100914089B1 (ko) | 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치 | |
US8738882B2 (en) | Pre-organization of data | |
US9367451B2 (en) | Storage device management device and method for managing storage device | |
US6587915B1 (en) | Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same | |
US7876616B2 (en) | System and method for wear leveling utilizing a relative wear counter | |
CN110678836A (zh) | 用于键值存储的持久性存储器 | |
US20120239853A1 (en) | Solid state device with allocated flash cache | |
US20050015557A1 (en) | Nonvolatile memory unit with specific cache | |
US20100169540A1 (en) | Method and apparatus for relocating selected data between flash partitions in a memory device | |
US20090031076A1 (en) | Method for Managing Flash Memory | |
US20110055458A1 (en) | Page based management of flash storage | |
KR20070060070A (ko) | 최적화된 순차적인 클러스터 관리용 에프에이티 분석 | |
WO2011061724A1 (en) | Memory controller and methods for enhancing write performance of a flash device | |
KR20070096429A (ko) | 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템 | |
CN111104045A (zh) | 一种存储控制方法、装置、设备和计算机存储介质 | |
KR101026634B1 (ko) | 하이브리드 플래시 메모리의 데이터 저장 방법 | |
CN111324284B (zh) | 一种存储器 | |
KR101191650B1 (ko) | 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20121130 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20131129 Year of fee payment: 7 |