KR101894625B1 - 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 - Google Patents
데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 Download PDFInfo
- Publication number
- KR101894625B1 KR101894625B1 KR1020157020012A KR20157020012A KR101894625B1 KR 101894625 B1 KR101894625 B1 KR 101894625B1 KR 1020157020012 A KR1020157020012 A KR 1020157020012A KR 20157020012 A KR20157020012 A KR 20157020012A KR 101894625 B1 KR101894625 B1 KR 101894625B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory area
- data units
- memory
- garbage collection
- 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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
-
- 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
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- 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
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- 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
-
- 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
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- 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/7211—Wear leveling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
우선순위 기반 가비지 수집은, 가비지 수집의 그리고 전체 데이터 저장 시스템의 효율을 개선하기 위해 비휘발성 메모리 어레이에 저장된 데이터의 속성들을 활용한다. 저 우선순위 데이터의 세트는 비휘발성 메모리 어레이로부터 선택적으로 축출될 수 있다. 이는, 예를 들어, 가비지 수집과 연관된 기입 증폭을 감소시킬 수 있다. 저 우선순위 데이터의 다른 세트는 비휘발성 메모리 어레이의 상이한 영역에서 재그룹핑되거나 통합될 수 있다. 부가적으로, 데이터의 플러싱이 가비지 수집을 향상시키거나 최적화하기 위해 수행될 수 있다. 이에 의해, 성능 및 내구성이 개선될 수 있다.
Description
본 개시는 컴퓨터 시스템들에 대한 데이터 저장 시스템들에 관한 것이다. 더 상세하게, 본 개시는 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집에 관한 것이다.
데이터 저장 시스템들은 그 정규 동작 동안 다수의 하우스키핑 동작들을 실행한다. 예를 들어, 가비지 수집이, 유효한 및 무효한 데이터 양자를 포함할 수도 있는 메모리 영역들에 대해 빈번히 수행된다. 영역이 가비지 수집을 위해 선택될 경우, 가비지 수집 동작은 메모리 영역 내의 유효한 데이터를 메모리의 새로운 위치(들)에 카피하고, 그 후, 전체 영역을 소거하거나 제거하고, 이에 의해, 그 영역이 데이터의 추후 저장을 위해 이용가능하게 한다. 하지만, 가비지 수집을 수행하는 것은, 솔리드 스테이트 메모리가 데이터를 저장을 위해 사용될 경우들에 있어서 증가된 기입 증폭 (write amplification) 과 같은 실질적인 오버헤드를 수반한다. 이에 따라, 더 효율적인 가비지 수집 메커니즘들을 제공하는 것이 바람직하다.
이제, 본 발명의 다양한 특징들을 구현하는 시스템들 및 방법들이 다음의 도면들을 참조하여 설명될 것이다.
도 1 은 본 발명의 일 실시형태에 따른 우선순위 기반 가비지 수집을 구현하는 데이터 저장 시스템과 호스트 시스템의 조합을 도시한다.
도 2 는 본 발명의 일 실시형태에 따른 우선순위 정보에 기초한 랭킹을 도시한다.
도 3 은 본 발명의 일 실시형태에 따른 우선순위 기반 가비지 수집의 동작을 도시한다.
도 4 는 본 발명의 다른 실시형태에 따른 우선순위 기반 가비지 수집의 플로우 다이어그램을 도시한다.
도 5 는 본 발명의 일 실시형태에 따른 가비지 수집을 위한 하나 이상의 영역들을 선택하는 것을 도시한다.
도 1 은 본 발명의 일 실시형태에 따른 우선순위 기반 가비지 수집을 구현하는 데이터 저장 시스템과 호스트 시스템의 조합을 도시한다.
도 2 는 본 발명의 일 실시형태에 따른 우선순위 정보에 기초한 랭킹을 도시한다.
도 3 은 본 발명의 일 실시형태에 따른 우선순위 기반 가비지 수집의 동작을 도시한다.
도 4 는 본 발명의 다른 실시형태에 따른 우선순위 기반 가비지 수집의 플로우 다이어그램을 도시한다.
도 5 는 본 발명의 일 실시형태에 따른 가비지 수집을 위한 하나 이상의 영역들을 선택하는 것을 도시한다.
특정 실시형태들이 설명되지만, 이들 실시형태들은 단지 예로서 제시될 뿐 보호의 범위를 한정하도록 의도되지 않는다. 실제로, 본 명세서에서 설명된 신규한 방법들 및 시스템들은 다양한 다른 형태들로 구현될 수도 있다. 더욱이, 본 명세서에서 설명된 방법들 및 시스템들의 형태로의 다양한 생략들, 대체들, 및 변경들이 보호의 범위로부터 일탈함없이 행해질 수도 있다.
개관
플래시 저장 디바이스들과 같은 데이터 저장 시스템들은 가비지 수집, 웨어 레벨링, 불량 블록 관리 등과 같은 내부 시스템 동작들을 수행하여 성능 및 수명을 개선시킨다. 가비지 수집은 메모리 영역에 저장된 유효한 데이터를 다른 메모리 영역으로 카피하는 것, 및 이전 메모리 영역이 더 이상 임의의 유효한 데이터를 저장하지 않음을 추가로 나타내는 것을 수반할 수 있다. 우선순위화를 위해, 가비지 수집은 가비지 수집될 메모리 영역들에 남아 있는 무효한 데이터의 양을 활용할 수 있다. 하지만, 가비지 수집 동작은 상당한 오버헤드를 수반하고, 오로지 무효한 데이터의 양에만 기초하여 가비지 수집을 우선순위화하는 것은 바람직하지 않은 비효율들을 도입할 수도 있다. 예를 들어, 저장된 데이터는 우선순위의 가변 레벨들과 연관될 수도 있으며, 가비지 수집을 수행할 경우에 데이터의 우선순위를 고려하는 것이 유리할 수 있다.
본 발명의 실시형태들은, 가비지 수집을 수행할 경우에 저장된 데이터의 우선순위를 고려하는 가비지 수집에 관한 것이다. 일 실시형태에 있어서, 비휘발성 솔리드 스테이트 메모리 (NVSM) 는 NVSM 을 회전식 자기 매체들과 페어링하는 하이브리드 디스크 드라이브에서의 캐시로서 기능한다. NVSM 에 있어서의 메모리 영역의 가비지 수집 동안, 우선순위 정보는, 예를 들어, 데이터를 이동할지, 캐시로부터 데이터를 축출(evict)할지, 캐시에 데이터를 통합할지 등의 여부를 판정하는데 사용될 수 있다. 예를 들어, 고 우선순위 데이터는 가비지 수집 동안 수집된 유효한 데이터를 보유하기 위한 상이한 메모리 영역으로 이동될 수 있지만, 저 우선순위 데이터는 캐시로부터 축출될 수 있다. 축출당하는 데이터의 우선순위 범위보다 아주 조금 더 높은 특정 우선순위 범위 내의 데이터는 또다른 메모리 영역에서 통합될 수 있다. 그러한 데이터가 더 나중 시간에 축출당할 가능성이 있고 가비지 수집의 개관으로부터 무효한 데이터가 되기 때문에, 가비지 수집 동안에 무효화될 가능성있는 데이터의 그러한 통합을 수행하는 것은 오버헤드를 감소시키고 추후의 가비지 수집 동작들과 연관된 효율을 개선시킬 수 있다. 부가적으로, 우선순위 정보는 캐시로부터 자기 디스크와 같은 다른 저장 매체로 데이터를 플러싱하는 것에 관하여 판정하는데 사용될 수 있다. 예를 들어, 캐시에 저장된 비-용장성 (non-redundant) 저 우선순위 데이터는 다른 저장 매체에 주기적으로 플러싱될 수 있다. 이는, 더 나중 시간에 캐시로부터의 축출을 위한 후보일 수도 있는 그러한 데이터가 동기화됨을 보장할 수 있다.
일부 실시형태들에 있어서, 우선순위 정보는 다음 중 하나 이상의 조합일 수 있다: (예를 들어, 기입 데이터 커맨드의 부분으로서) 호스트 시스템에 의해 제공된 우선순위, 데이터의 액세스의 빈도, 데이터의 마지막 액세스 이래로의 지속기간, 데이터를 판독하는 것 대 기입하는 것의 빈도 (예를 들어, 판독 대 기입 비율), 우선순위 레벨 내의 데이터의 상대적인 중요도, 데이터가 다른 저장부와 동기화되었는지 여부 등. 예를 들어, 빈번히 액세스된 데이터에는 더 높은 우선순위가 할당될 수도 있는데, 왜냐하면 빈번히 액세스된 데이터를 캐시에 유지하는 것은 데이터 저장 시스템의 성능을 개선시킬 수 있기 때문이다. 다른 예로서, 다른 데이터보다 더 최근에 액세스되었던 데이터에는 더 높은 우선순위가 할당될 수도 있는데, 왜냐하면 그러한 더 최근에 액세스된 데이터는 추후에 다시 액세스될 가능성이 있을 수 있기 때문이다. 또다른 예로서, 기입되는 것보다 더 빈번히 판독되는 데이터에는 더 높은 우선순위가 할당될 수도 있는데, 왜냐하면 그러한 빈번히 판독된 데이터를 캐시에 유지하는 것은 NVSM 웨어를 감소시키면서 성능을 개선할 수 있기 때문이다. 일부 실시형태들에 있어서, 우선순위는 하나 이상의 전술한 인자들의 가중된 조합에 기초하여 할당될 수도 있다.
간략화 및 예시를 위해, 하기의 설명은 비휘발성 메모리 어레이 (150) 가 자기 저장부 (160) 에 대한 캐시 메모리로서 기능하는 예시적인 실시형태들에 촛점을 맞출 것이다. 하지만, 본 개시의 범위는 그러한 실시형태들에 한정되지 않는다. 예를 들어, 다른 실시형태들에 있어서, 자기 저장부 (160) 대신, 데이터 저장 시스템 (120) 은 제 2 비휘발성 메모리 어레이와 같은 다른 타입의 데이터 저장부를 포함할 수도 있다. 예를 들어, 비휘발성 메모리 어레이 (150) 는, 제 2 비휘발성 메모리 어레이에서 사용된 메모리의 타입보다 더 빠른 기입/판독 성능을 제공하는 메모리의 타입을 포함할 수도 있다. 일부 실시형태들에 있어서, 비휘발성 메모리 어레이 (150) 는 원격 위치에서의 데이터 저장부에 대한 캐시로서 기능할 수도 있으며, 데이터의 동기화가 하나 이상의 네트워크 커넥션들에 걸쳐 발생할 수도 있다.
시스템 개관
도 1 은 본 발명의 일 실시형태에 따른 우선순위 기반 가비지 수집을 구현하는 데이터 저장 시스템과 호스트 시스템의 조합 (100) 을 도시한다. 도시된 바와 같이, 데이터 저장 시스템 (120) (예를 들어, 하이브리드 디스크 드라이브) 은 제어기 (130) 및 비휘발성 메모리 어레이 (150) 그리고 자기 저장부 (160) 를 포함하고, 자기 저장부 (160) 는 자기 매체들 (164) 을 포함한다. 비휘발성 메모리 어레이 (150) 는 플래시 집적회로들, 칼코게나이드 RAM (C-RAM), 상변화 메모리 (PC-RAM 또는 PRAM), 프로그래밍가능 금속화 셀 RAM (PMC-RAM 또는 PMCm), 오보닉 통합형 메모리 (OUM), 저항성 RAM (RRAM), NAND 메모리 (예를 들어, 싱글 레벨 셀 (SLC) 메모리, 멀티 레벨 메모리 (MLC) 메모리, 또는 이들의 임의의 조합), NOR 메모리, EEPROM, 강유전체 메모리 (FeRAM), 자기저항성 RAM (MRAM), 다른 이산 NVM (비휘발성 메모리) 칩들, 또는 이들의 임의의 조합과 같은 비휘발성 메모리를 포함할 수도 있다. 비휘발성 메모리 어레이 (150) 는 블록들, 페이지들 등과 같은 하나 이상의 메모리 영역들을 포함할 수 있다. 메모리 영역들은 메모리 유닛들을 포함할 수 있다. 일 실시형태에 있어서, 비휘발성 메모리 어레이 (150) 는 자기 저장부 (160) 에 대한 캐시로서 작용할 수 있다. 데이터 저장 시스템 (120) 은 다른 타입들의 저장부를 더 포함할 수 있다.
제어기 (130) 는 호스트 시스템 (110) 의 저장부 인터페이스 모듈 (112) (예를 들어, 디바이스 드라이버) 로부터 데이터 및/또는 저장부 액세스 커맨드들을 수신하도록 구성될 수 있다. 저장부 인터페이스 (112) 에 의해 통신된 저장부 액세스 커맨드들은 호스트 시스템 (110) 에 의해 발행된 기입 데이터 및 판독 데이터 커맨드들을 포함할 수 있다. 판독 및 기입 커맨드들은 데이터 저장 시스템 (120) 에 액세스하는데 사용된 논리 어드레스 (예를 들어, 논리 블록 어드레스들 또는 LBA들) 를 명시할 수 있다. 제어기 (130) 는 비휘발성 메모리 어레이 (150) 에서의 수신된 커맨드들을 실행할 수 있다.
데이터 저장 시스템 (120) 은 호스트 시스템 (110) 에 의해 통신된 데이터를 저장할 수 있다. 즉, 데이터 저장 시스템 (120) 은 호스트 시스템 (110) 에 대한 메모리 저장부로서 작용할 수 있다. 이러한 기능을 용이하게 하기 위해, 제어기 (130) 는 논리 인터페이스를 구현할 수 있다. 논리 인터페이스는, 사용자 데이터가 저장될 수 있는 논리 어드레스들 (예를 들어, 인접 어드레스) 의 세트로서 데이터 저장 시스템의 메모리를 호스트 시스템 (110) 에 제시할 수 있다. 내부적으로, 제어기 (130) 는 논리 어드레스들을, 비휘발성 메모리 어레이 (150), 자기 저장부 (160), 및/또는 다른 저장 모듈들에서의 다양한 물리적 위치들 또는 어드레스들에 매핑할 수 있다. 물리적 위치들은 데이터를 저장하도록 구성될 수 있다. 제어기 (130) 는 비휘발성 메모리 어레이 (150) 의 가비지 수집을 수행하도록 구성된 가비지 수집 모듈 (132), 및 비휘발성 메모리 어레이 (150) 와 함께 자기 저장부 (160) 및/또는 다른 저장 모듈들에 저장된 (예를 들어, 캐시된) 데이터를 동기화하도록 구성된 데이터 플러시 모듈 (134) 을 포함한다. 일 실시형태에 있어서, 가비지 수집 모듈 (132) 은, 가비지 수집이 수행되는 메모리 유닛들 (예를 들어, 블록들) 을 선택하는 태스크를 포함하여 우선순위 기반 가비지 수집을 수행하도록 구성된다. 일 실시형태에 있어서, 데이터 플러시 모듈 (134) 은 데이터의 우선순위 기반 플러싱을 수행하도록 구성된다.
우선순위 기반 가비지 수집
도 2 는 본 발명의 일 실시형태에 따른 데이터 유닛들의 우선순위 정보에 기초한 데이터 유닛들의 랭킹 (200) 을 도시한다. 랭킹 (200) 은 리스트, 큐, 테이블, 해시 테이블, 그래프 등과 같은 적절한 데이터 구조를 이용하여 표현될 수 있다. 일 실시형태에 있어서, 랭킹 (200) 은 우선순위 정보에 따라 소팅된 큐로서 표현될 수 있다. 예를 들어, 랭킹 (200) 은 저장된 데이터와 연관된 우선순위 정보에 따라 소팅된 비휘발성 메모리 어레이 (150) 에 저장된 데이터 유닛들 (예를 들어, 논리 어드레스들) 의 포지션들을 표시할 수 있다. 일 실시형태에 있어서, 데이터 유닛들은 호스트로부터 수신된 암시된 우선순위 레벨 정보에 따라 첫번째로 소팅되고, 그 후, LRU (least recently access) 기준과 같은 관측된 데이터 액세스 메트릭에 기초하여 두번째로 소팅될 수도 있다.
도시된 바와 같이, 랭킹 범위 (202) 에 대응하는 데이터 유닛들은, 통합 임계치 (210) 및 축출 임계치 (220) 를 만족하지 않는 (예를 들어, 그 보다 더 높은) 우선순위 정보를 갖는다. 예를 들어, 통합 임계치는 9 의 우선순위 스코어로 설정되고 축출 임계치는 6 으로 설정되면, 15 의 우선순위 스코어를 갖는 데이터 유닛 (예를 들어, 논리 블록 어드레스 (LBA)) 은 양 임계치들을 초과하며 랭킹 범위 (202) 에 있을 것이다. 그러한 데이터 유닛은, 하나 이상의 실시형태들에서 하이브리드 드라이브의 캐시로서 기능하고 있는 비휘발성 메모리 어레이 (150) 에 유지되어야 하는 고 우선순위 데이터 (예를 들어, 빈번히 판독된 데이터) 일 수도 있다. 따라서, 랭킹 범위 (202) 에서의 고 우선순위 데이터 유닛들 (예를 들어, LBA들) 은 가비지 수집 동안 비휘발성 메모리 어레이 (150) 의 상이한 메모리 영역으로 이동되거나 카피될 수 있다. 그러한 상이한 메모리 영역은 가비지 수집 동안 보존될 유효한 데이터를 저장하기 위해 지정된 자유 메모리 영역일 수도 있다.
본 발명의 실시형태들은 다른 랭킹 범위들에서의 데이터 유닛들에 대하여 종래의 가비지 수집을 변경한다. 제 1 변경은, 통합 임계치 (210) 를 만족 (예를 들어, 그 보다 더 낮음) 하지만 축출 임계치 (220) 보다 더 높은 우선순위 정보를 갖는 랭킹 범위 (204) 에서의 데이터 유닛들을 수반한다. 상기 논의된 바와 같이, 그러한 데이터는, 우선순위 정보에 의해 시사된 바와 같이 가까운 장래에 비휘발성 메모리 어레이 (150) 로부터 축출될 수도 있다. 따라서, 랭킹 범위 (204) 에서의 데이터 유닛들은 가비지 수집 동안 비휘발성 메모리 어레이 (150) 의 또다른 메모리 영역에서 통합될 수 있다. 그러한 메모리 영역은 다양한 메모리 영역들로부터 데이터 유닛들을 통합하는데 사용될 수도 있다. 이를 예시하기 위해, 종래의 가비지 수집 프로세스가 모든 유효한 데이터 유닛들을 특정 블록들 (1-N) 로부터 자유 블록 (X) 으로 카피할 수도 있는 예를 고려한다. 하지만, 일 실시형태에 있어서, 블록들 (1-N) 로부터의 유효한 데이터 유닛들은 그 우선순위 랭킹에 기초하여 상이한 처리를 수신한다. 예를 들어, 랭킹 범위 (202) 내의 유효한 데이터가 블록 (X) 에 계속 카피되는 동안, 랭킹 범위 (204) 내의 그 유효한 데이터는 블록 (X) 에 카피되지 않지만 그러한 데이터를 통합하기 위해 예비된 블록 (Y) 에 카피될 것이다. 블록 (Y) 은 곧 무효화될 가능성이 있는 그러한 더 낮은 우선순위 데이터로 충진되고, 따라서, 추후의 가비지 수집 동작에 대한 탁월한 후보일 것이다.
제 2 변경은, 통합 임계치 (210) 및 축출 임계치 (220) 를 만족 (예를 들어, 그 보다 더 낮음) 하는 우선순위 정보를 갖는 랭킹 범위 (206) 에서의 데이터 유닛들을 수반한다. 랭킹 범위 (206) 에서의 데이터 유닛들은 가비지 수집 동안 비휘발성 메모리 어레이 (150) 로부터 축출되거나 축출을 위해 마킹될 수 있다. 다시, 비휘발성 메모리 어레이 (150) 가 캐시로서 작동하고 있기 때문에, 특정 데이터는, 축출되어야 하는 그러한 저 우선순위를 가질 수도 있다. 따라서, 본 발명의 일부 실시형태들은 이러한 축출 고려를 가비지 수집 프로세스에 통합하여, 종래의 가비지 수집 방식 하에서 통상 보존될 특정한 유효 데이터가 일부 실시형태들의 가비지 수집 방식에서 보존되지 않게 한다. 즉, 그러한 유효 데이터는 마치 무효한 데이터인 것처럼 처리된다. 예를 들어, 랭킹 범위 (206) 에서의 데이터 유닛들은 삭제를 위해 마킹되고, 비휘발성 메모리 어레이 (150) 에서의 임의의 메모리 영역으로 이동 또는 카피되지 않을 수 있다. 상기 예를 계속하면, 가비지 수집 동안에 조우되는 랭킹 범위 (206) 에서의 유효한 데이터는 임의의 블록에 모두로서 (종래의 방식 하에서 블록 (X) 에 카피되는 것으로 가정되는 바와 같이) 카피되지 않을 것이다.
일 실시형태에 있어서, 축출 임계치 (220) 및/또는 통합 임계치 (210) 는 다양한 인자들에 기초하여 선택될 수 있다. 예를 들어, (예컨데, 더 많은 데이터가 축출되도록) 축출 임계치를 높게 설정하는 것은 새로운 데이터로 하여금 비휘발성 메모리 어레이 (150) 에 저장되게 할 것이다. 한편, 이미 저장된 데이터가 축출될 수도 있다. 이는, 비휘발성 메모리 어레이 (150) 에 저장된 데이터의 적어도 일부가 업데이트되거나 구식이 되었음을 데이터 저장 시스템 (120) 이 결정할 경우에 유리할 수도 있다. 이러한 결정은 호스트 시스템 (110) 의 활동에 적어도 부분적으로 기초할 수도 있다. 일 실시형태에 있어서, 축출 임계치 (220) 및/또는 통합 임계치 (210) 는 데이터 저장 시스템 (120) 의 동작 동안에 동적으로 조정될 수 있다. 당업자는, 도 2 에 도시된 우선순위 랭킹은 단지 일 예일 뿐이고 다른 실시형태들에 있어서 (우선순위 랭킹 결정에 대하여 "최저" 에 대한 "최고" 의 의미를 반전시키는 것과 같이) 상이한 방식을 사용할 수 있음을 인식할 것이다. 다른 실시형태들에 있어서, 데이터 플래그들, 링크된 링크들, 비트 맵들 등과 같이 우선순위를 추적하는 다른 방법들이 사용될 수도 있다. 상기 설명된 가비지 수집 시스템들 및 프로세스들은 특정 타입의 우선순위 추적 메커니즘에 의존하지 않는다.
도 3 은 본 발명의 일 실시형태에 따른 우선순위 기반 가비지 수집 (300) 의 동작을 도시한다. 우선순위 기반 가비지 수집 (300) 은 제어기 (130) 및/또는 가비지 수집 모듈 (132) 및/또는 데이터 플러시 모듈 (134) 에 의해 실행될 수 있다. 도시된 바와 같이, 메모리 영역들 (310 및 320) 은 가비지 수집되고 있다. 우선순위 기반 가비지 수집 (300) 은 영역 (310) 의 데이터 유닛들 (312, 314, 316, 318, 및 319) 및 영역 (320) 의 데이터 유닛들 (322, 324, 326, 328, 및 329) 과 연관된 우선순위 정보를 결정한다. 일 실시형태에 있어서, 우선순위 기반 가비지 수집 (300) 은 랭킹 (200) 을 이용하여 우선순위 정보를 결정한다. 예를 들어, 우선순위 기반 가비지 수집 (300) 은 데이터 유닛들과 연관된 우선순위 정보를 조사할 수 있다.
도 3 의 예에 있어서, 데이터 유닛들 (312, 314, 316, 및 318) 은 우선순위 기반 가비지 수집 (300) 에 의해 유효한 (예를 들어, 다른 곳에 저장된 데이터의 더 최근의 카피에 의해 구식이거나 무효화되지 않은) 것으로서 결정되었다. 상기 언급된 바와 같이, 유효한 데이터는 그 관련 우선순위 정보에 의존하여 상이한 처리를 수신할 것이다.
제 1 케이스에 있어서, 우선순위 기반 가비지 수집 (300) 은 데이터 유닛 (312) 과 연관된 우선순위 정보가 축출당함을 표시한다고 결정한다. 예를 들어, 가비지 수집 (300) 은 우선순위 정보가 축출 임계치 (220) 를 만족한다고 결정한다. 부가적으로, 우선순위 기반 가비지 수집 (300) 은 데이터 유닛 (312) 이 예를 들어 자기 저장부 (160) 와 동기화되지 않았음을 결정한다. 예를 들어, 데이터 유닛 (312) 은 호스트 시스템 (110) 에 의해 저장된 데이터의 가장 최근의 카피일 수 있다. 즉, 메모리 유닛 (312) 에 저장된 데이터는 비-용장성이다. 따라서, 데이터 유닛 (312) 은 비휘발성 메모리 어레이 (150) 로부터 축출가능하지 않다. 일 실시형태에 있어서, 데이터 유닛 (312) 은 상이한 메모리 영역에 카피될 수 있다.
제 2 케이스에 있어서, 우선순위 기반 가비지 수집 (300) 은 데이터 유닛 (314) 과 연관된 우선순위 정보가 또한 축출당함을 표시한다고 결정한다. 데이터 유닛 (312) 와 달리, 데이터 유닛 (314) 은 예를 들어 자기 저장부 (160) 와 동기화되었다. 따라서, 데이터 유닛 (314) 은 자기 저장부 (160) 에 플러싱되지 않고도 비휘발성 메모리 어레이 (150) 로부터 축출될 수 있다. 일 실시형태에 있어서, 데이터 유닛 (314) 을 저장하는 메모리 영역 (310) 내의 메모리 위치는 후속적인 삭제 또는 오버라이팅을 위해 마킹될 수 있다.
제 3 케이스에 있어서, 우선순위 기반 가비지 수집 (300) 은 데이터 유닛 (316) 과 연관된 우선순위 정보가 통합당함 (예를 들어, 그 우선순위 정보가 통합 임계치 (210) 를 만족함) 을 표시한다고 결정한다. 따라서, 데이터 유닛 (316) 은 메모리 영역 (340) 에 통합될 수 있으며, 이 메모리 영역 (340) 은 통합을 위해 지정된 데이터를 저장하도록 구성된다. 일 실시형태에 있어서, 더 낮은 우선순위 데이터를 하나 이상의 메모리 영역들에 통합하는 것은 가비지 수집의 효율을 증가시킬 수 있는데, 왜냐하면 그러한 데이터는 추후에 축출될 가능성이 있기 때문이다. 예를 들어, 비휘발성 메모리 어레이 (150) 내에 데이터를 이동 또는 카피하는 것과 연관된 기입 증폭은 더 낮은 우선순위 데이터를 하나 이상의 메모리 영역들에 통합하는 결과로서 감소될 수 있다. 도시된 바와 같이, 데이터 유닛 (316) 은 메모리 영역 (340) 에 카피된다. 일 실시형태에 있어서, 데이터 유닛 (316) 을 저장하는 메모리 영역 (310) 내의 메모리 위치가 후속적인 삭제 또는 오버라이팅을 위해 마킹될 수 있다.
제 4 케이스에 있어서, 우선순위 기반 가비지 수집 (300) 은 데이터 유닛 (318) 과 연관된 우선순위 정보가 축출 또는 통합당하지 않음을 표시한다고 결정한다. 예를 들어, 가비지 수집 (300) 은 우선순위 정보가 통합 임계치 (210) 또는 축출 임계치 (220) 를 만족하지 않는다고 결정한다. 따라서, 종래의 가비지 수집에서와 같이, 데이터 유닛 (318) 은 다른 메모리 영역 (330) 으로 이동되거나 카피될 수 있다. 예를 들어, 그러한 데이터는, 비휘발성 메모리 어레이 (150) 에 보유되어야 하는 고 우선순위 데이터일 수도 있다. 도시된 바와 같이, 데이터 유닛 (318) 은 메모리 영역 (330) 에 카피된다. 일 실시형태에 있어서, 데이터 유닛 (318) 을 저장하는 메모리 영역 (310) 내의 메모리 위치가 후속적인 삭제 또는 오버라이팅을 위해 마킹될 수 있다.
마지막으로, 우선순위 기반 가비지 수집 (300) 에 의해 조우된 임의의 무효한 데이터는 종래의 가비지 수집에서와 동일한 방식으로 핸들링된다. 따라서, (예를 들어, 다른 곳에 저장된 데이터의 더 최근의 카피에 의해 구식이거나 무효화된) 무효한 데이터 유닛 (319) 은 다른 메모리 영역에 카피되지 않으며, 데이터 유닛 (319) 을 저장하는 메모리 영역 (310) 내의 메모리 위치가 후속적인 삭제 또는 오버라이팅을 위해 마킹될 수 있다.
메모리 영역 (320) 에 대하여, 메모리 영역 (310) 내의 상기 설명된 대응물들에서와 같이, 우선순위 기반 가비지 수집 (300) 은 데이터 유닛들 (322, 324, 326, 328, 및 329) 에 대해 유사한 액션들을 수행하고, 그 관련 우선순위 정보에 따라 각각 처리한다. 일 실시형태에 있어서, 데이터 유닛 (326) 은, 데이터 유닛 (316) 이 카피된 메모리 영역과는 상이한 메모리 영역에 카피될 수 있다. 예를 들어, 메모리 영역 (340) 은 가득 찼을 수도 있으며, 상이한 통합 영역이 사용될 수도 있다.
동일한 방식으로, 일 실시형태에 있어서, 데이터 유닛 (328) 은, 데이터 유닛 (318) 이 카피된 메모리 영역과는 상이한 메모리 영역에 카피될 수 있다. 예를 들어, 메모리 영역 (330) 은 가득 찼을 수도 있으며, 상이한 메모리 영역이 사용될 수도 있다.
도 4 는 본 발명의 일 실시형태에 따른 우선순위 기반 가비지 수집의 프로세스 (400) 를 도시한 플로우 다이어그램이다. 프로세스 (400) 는 제어기 (130) 및/또는 가비지 수집 모듈 (132) 및/또는 데이터 플러시 모듈 (134) 에 의해 실행될 수 있다. 프로세스 (400) 는, 가비지 수집을 위한 메모리 영역을 선택하는 블록 402 에서 시작한다. 프로세스 (400) 는, 유효한 데이터를 저장하는 하나 이상의 메모리 유닛들을 식별하는 블록 404 로 천이한다. 각각의 그러한 메모리 유닛에 대해, 프로세스 (400) 는 다음의 동작들을 수행한다.
블록 406 에 있어서, 프로세스 (400) 는 메모리 유닛에 저장된 데이터 유닛이 축출 당하는지 여부를 결정한다. 일 실시형태에 있어서, 프로세스 (400) 는 데이터 유닛과 연관된 우선순위 정보가 축출 임계치 (220) 를 만족하는지 여부 및 데이터 유닛이 용장성인지 여부를 결정한다. 이들 조건들 양자가 만족된다고 프로세스 (400) 가 결정하면 데이터 유닛은 축출가능하고, 프로세스는, 비휘발성 메모리 (150) 로부터 데이터 유닛을 축출하는 블록 408 로 천이한다. 일 실시형태에 있어서, 프로세스 (400) 는 후속적인 삭제 또는 오버라이팅을 위한 데이터 유닛을 마킹할 수 있다. 그 후, 프로세스 (400) 는, 프로세싱할 추가 메모리 유닛들이 존재하는지 여부를 결정하는 블록 416 으로 천이한다. 프로세싱할 하나 이상의 추가 메모리 유닛들이 존재한다고 프로세스 (400) 가 결정하면, 프로세스 (400) 는, 다음 데이터 유닛을 프로세싱하는 406 으로 천이한다. 그렇지 않으면, 프로세스 (400) 는 종료한다.
블록 406 에 있어서, 데이터 유닛이 축출 당하지 않는다고 프로세스 (400) 가 결정하면, 프로세스는, 데이터 유닛이 통합 당하는지 여부를 결정하는 블록 410 으로 천이한다. 일 실시형태에 있어서, 프로세스 (400) 는 데이터 유닛과 연관된 우선순위 정보가 통합 임계치 (210) 를 만족하는지 여부를 결정한다. 데이터 유닛이 통합 당한다고 프로세스 (400) 가 결정하면, 프로세스는, 통합 메모리 영역으로서 구성되는 제 1 메모리 유닛에서의 메모리 유닛에 데이터 유닛을 카피하는 블록 412 로 천이한다. 그 후, 프로세스 (400) 는, 프로세싱할 추가 메모리 유닛들이 존재하는지 여부를 결정하는 블록 416 으로 천이한다. 프로세싱할 하나 이상의 추가 메모리 유닛들이 존재한다고 프로세스 (400) 가 결정하면, 프로세스 (400) 는, 다음 데이터 유닛을 프로세싱하는 406 으로 천이한다. 그렇지 않으면, 프로세스 (400) 는 종료한다.
블록 410 에 있어서, 데이터 유닛이 통합 당하지 않는다고 프로세스 (400) 가 결정하면, 프로세스는 블록 414 로 천이한다. 예를 들어, 데이터 유닛은 도 2 의 랭킹 범위 (202) 로부터의 데이터 유닛과 같이 고 우선순위 데이터이거나, 또는 비-용장성 저 우선순위 데이터이다. 블록 414 에 있어서, 프로세스 (400) 는, 표준 메모리 영역으로서 구성되는 제 2 메모리 영역에 대한 메모리 유닛으로 데이터 유닛을 이동시키거나 카피한다. 그 후, 프로세스 (400) 는, 프로세싱할 추가 메모리 유닛들이 존재하는지 여부를 결정하는 블록 416 으로 천이한다. 프로세싱할 하나 이상의 추가 메모리 유닛들이 존재한다고 프로세스 (400) 가 결정하면, 프로세스 (400) 는, 다음 데이터 유닛을 프로세싱하는 406 으로 천이한다. 그렇지 않으면, 프로세스 (400) 는 종료한다.
도 5 는 본 발명의 일 실시형태에 따른 가비지 수집을 위한 하나 이상의 영역들을 선택하는 것을 도시한다. 가비지 수집을 위한 하나 이상의 영역들을 선택하는 것은 제어기 (130) 및/또는 가비지 수집 모듈 (132) 에 의해 실행될 수 있다. 일 실시형태에 있어서, 그 선택은 도 4 의 블록 402 에서 수행될 수 있다. 가비지 수집 후보 리스트 (500) 는 블록들 (502, 504, 506, 520, 530 등) 과 같은 메모리 영역들을 포함한다. 종래, 가비지 수집 후보 리스트는 메모리 영역에 있어서의 무효한 데이터 유닛들의 수에 따라 소팅될 수 있다. 일 실시형태에 있어서, 가비지 수집 후보 리스트 (500) 는 또한, 데이터 유닛들과 연관된 우선순위 정보에 따라 소팅된다. 예를 들어, 영역에서의 무효한 데이터 유닛들의 수 및 영역에 저장된 데이터 유닛들의 우선순위 정보를 고려하는 조합된 메트릭이 연산될 수 있다. 일 실시형태에 있어서, 조합된 메트릭은 무효한 데이터 유닛들의 수와 축출가능한 데이터 유닛들 (예를 들어, 우선순위 정보가 축출 임계치 (220) 를 만족하는 용장성 데이터 유닛들) 의 수의 합이다. 다른 실시형태에 있어서, 조합된 메트릭은, 무효한 데이터 유닛들의 수와 영역에 저장된 데이터 유닛들과 연관된 우선순위 정보와의 가중된 평균이다. 리스트 (500) 에서의 엔트리들은 우선순위의 내림차순에 따라 소팅될 수 있다. 즉, 더 높은 조합된 메트릭을 갖는 영역들이 리스트 (500) 의 상부에 배치될 수 있다. 더 높은 조합된 메트릭은, 그 영역이 가비지 수집을 위한 더 가능성있는 후보임을 표시할 수 있다. 예를 들어, 영역 (502) 은 가비지 수집을 위한 가장 가능성있는 후보일 수 있다. 다른 실시형태에 있어서, 리스트에서의 엔트리들은 우선순위의 오름차순에 따라 소팅될 수 있다. 다른 실시형태에 있어서, 더 높은 조합된 메트릭은, 그 영역이 가비지 수집을 위한 덜 가능성있는 후보임을 표시할 수 있다. 또다른 실시형태에 있어서, 큐, 테이블, 해시 테이블, 그래프 등과 같이, 임의의 적절한 데이터 구조가 리스트 (500) 과 함께 또는 그 대신 사용될 수 있다.
일 실시형태에 있어서, 가비지 수집 동안, 무효한 데이터를 저장하는 데이터 유닛들 및 우선순위 정보가 축출 임계치 (220) 를 만족하는 유효한 용장성 (예를 들어, 동기화된) 데이터를 갖는 데이터 유닛들이 효율적으로 가비지 수집될 수 있는데, 왜냐하면 그러한 데이터 유닛들은 임의의 다른 메모리 영역으로 카피 또는 이동되지 않기 때문이다. 우선순위 정보가 축출 임계치 (220) 를 만족하지만 데이터가 비-용장성인 유효한 데이터를 갖는 데이터 유닛들은 축출가능하지 않고, 가비지 수집 동안 다른 메모리 영역으로 카피 또는 이동될 필요가 있을 수도 있다. 예를 들어, 자기 디스크는 가비지 수집 동안에 회전하고 있지 않을 수도 있으며, 따라서, 비-용장성 데이터는 동기화될 수 없다. 다른 예로서, 비록 자기 디스크가 회전하고 있더라도, 카피하는 것과 연관된 지연들로 인해 비-용장성 데이터를 디스크에 카피하는 것은 바람직하지 않을 수도 있다. 이에 따라, 가비지 수집의 효율이 향상되도록 유효한 비-용장성의 저 우선순위 데이터 유닛들을 자기 저장부 (160) 에 플러싱하는 것이 유리할 수도 있다. 그러한 플러싱은 데이터 플러시 모듈 (134) 에 의해 수행될 수 있다.
일 실시형태에 있어서, 비-용장성의 저 우선순위 데이터 유닛들의 플러싱은 데이터 유닛들과 연관된 우선순위 정보를 고려한다. 저-용장성 데이터 유닛들을 플러싱하는 것은, 플러싱된 데이터 유닛들의 우선순위 정보가 축출 임계치 (220) 를 만족한다면, 데이터 유닛들이 저장되는 영역의 조합된 메트릭을 증가시킬 수 있다. 데이터 플러시 모듈 (134) 은 우선순위 정보가 축출 임계치 (220) 를 만족하는 하나 이상의 비-용장성 데이터 유닛들을 플러싱하기 위해 선택하고, 이에 의해, 그러한 하나 이상의 영역들로 하여금 가비지 수집을 위한 더 매력적인 후보들이 되게 할 수 있다. 일단 그러한 비-용장성 데이터 유닛들이 플러싱되었으면, 이 데이트 유닛들은 가비지 수집 동안에 축출될 수 있다. 이에 따라, 가비지 수집의 효율이 개선된다. 이러한 접근법을 사용하여, 저 우선순위 데이터의 플러싱은, 가비지 수집의 효율이 향상되도록 재순서화 또는 우선순위화된다.
일 실시형태에 있어서, 데이터 유닛들은, 축출 임계치 (220) 를 만족하고 그리고 가비지 수집을 위한 후보들인 하나 이상의 메모리 영역들에 저장되는 그 데이터 유닛들을 선호함으로써 자기 저장부 (160) 와의 동기화를 위해 선택될 수 있다. 그렇게 선택된 적어도 일부의 데이터 유닛들이 동기화되거나 플러싱된다. 이들 플러싱된 데이터 유닛들은 가비지 수집 동안에 축출될 수 있다. 예를 들어, 플러싱된 데이터 유닛들은 가비지 수집 동안 임의의 메모리 영역으로 카피되지 않도록 지정될 수 있다.
예를 들어, 영역 (506) 은 50% 무효한 데이터 유닛들을 저장하고, 우선순위 정보가 축출 임계치 (220) 를 만족하는 10% 유효한 용장성 데이터 유닛들을 저장하고 그리고 우선순위 정보가 축출 임계치 (220) 를 만족하는 15% 유효한 비-용장성 데이터 유닛들을 저장한다고 가정한다. 비-용장성의 저 우선순위 데이터 유닛들이 플러싱되기 전에, 영역 (506) 의 조합된 메트릭은 60 이다. 하지만, 모든 비-용장성의 저 우선순위 데이터 유닛들이 플러싱되거나 동기화되면, 영역의 조합된 메트릭은 75 로 증가할 것이다. 이에 따라, 영역 (506) 은 가비지 수집을 위한 더 매력적인 후보가 될 것인데, 왜냐하면 그 영역에 저장된 데이터 유닛들의 오직 25% 만이 가비지 수집 동안 다른 메모리 영역으로 카피 또는 이동될 필요가 있을 수도 있기 때문이다.
결론
개시된 우선순위 기반 가비지 수집은, 가비지 수집의 그리고 전체 데이터 저장 시스템의 효율을 개선하기 위해 비휘발성 메모리 어레이에 저장된 데이터의 속성들을 활용한다. 저 우선순위 데이터의 세트는 비휘발성 메모리 어레이로부터 선택적으로 축출될 수 있다. 이는, 예를 들어, 가비지 수집과 연관된 기입 증폭을 감소시킬 수 있다. 저 우선순위 데이터의 다른 세트는 비휘발성 메모리 어레이의 상이한 영역에서 재그룹핑되거나 통합될 수 있다. 부가적으로, 데이터의 플러싱이 가비지 수집을 향상시키거나 최적화하기 위해 수행될 수 있다. 이에 의해, 성능 및 내구성이 개선될 수 있다.
다른 변형들
당업자는, 일부 실시형태들에 있어서, 개시된 기술들이 저장 시스템에 의해 수행된 다른 하우스키핑 동작들에 적용될 수 있음을 인식할 것이다. 예를 들어, 데이터의 우선순위는 웨어 레벨링, 불량 블록 관리 등의 동안에 고려될 수 있다. 부가적으로, 추가 인자들이 저장된 데이터의 우선순위를 결정하는데 사용될 수 있다. 더욱이, 저장된 데이터의 우선순위는, 인자들의 임의의 적절한 조합을 이용하여 그리고 평균화, 가중 평균화, 최소 제곱 결정, 및 다른 선형 및/또는 비선형 함수들과 같은 임의의 적절한 함수를 그 조합에 적용하여, 결정될 수 있다. 도 3 및 도 4 에 도시된 프로세스들과 같은 개시된 프로세스들에서 취해진 실제 단계들은 도면들에 도시된 것들과는 상이할 수도 있다. 부가적인 시스템 컴포넌트들이 활용될 수 있으며, 개시된 시스템 컴포넌트들은 조합되거나 생략될 수 있다. 실시형태에 의존하여, 상기 설명된 단계들 중 특정 단계가 제거될 수도 있고 다른 단계들이 부가될 수도 있다. 이에 따라, 본 개시의 범위는 오직 첨부된 청구항들에 대한 참조에 의해서만 정의되도록 의도된다.
특정 실시형태들이 설명되었지만, 이들 실시형태들은 단지 예로서 제시되었을 뿐 보호의 범위를 한정하도록 의도되지 않는다. 실제로, 본 명세서에서 설명된 신규한 방법들 및 시스템들은 다양한 다른 형태들로 구현될 수도 있다. 더욱이, 본 명세서에서 설명된 방법들 및 시스템들의 형태로의 다양한 생략들, 대체들, 및 변경들이 보호의 사상으로부터 일탈함없이 행해질 수도 있다. 첨부한 청구항들 및 그 균등물들은, 보호의 범위 및 사상 내에 있을 그러한 형태들 또는 변형들을 커버하도록 의도된다. 예를 들어, 본 명세서에 개시된 시스템들 및 방법들은 하드 디스크 드라이브들, 솔리드 스테이트 드라이브들 등에 적용될 수 있다. 부가적으로, 다른 형태들의 저장부 (예를 들어, DRAM 또는 SRAM, 배터리 백업식 휘발성 DRAM 또는 SRAM 디바이스들, EPROM, EEPROM 메모리 등) 가 추가적으로 또는 대안적으로 사용될 수도 있다. 다른 예로서, 도면들에서 도시된 다양한 컴포넌트들은 프로세서 상의 소프트웨어 및/또는 펌웨어, ASIC/FPGA, 또는 전용 하드웨어로서 구현될 수도 있다. 또한, 상기 개시된 특정 실시형태들의 특징들 및 속성들은 상이한 방식들로 결합되어 부가적인 실시형태들을 형성할 수도 있으며, 이들 모두는 본 개시의 범위 내에 있다. 비록 본 개시가 특정 선호된 실시형태들 및 어플리케이션들을 제공하지만, 본 명세서에서 설명된 특징들 및 이점들 모두를 제공하지는 않는 실시형태들을 포함하여 당업자에게 자명한 다른 실시형태들이 또한 본 개시의 범위 내에 있다. 이에 따라, 본 개시의 범위는 오직 첨부된 청구항들에 대한 참조에 의해서만 정의되도록 의도된다.
Claims (23)
- 데이터 저장 시스템에 있어서,
복수의 데이터 유닛들을 저장하도록 구성된 복수의 메모리 영역들을 갖는 비휘발성 메모리 어레이 ― 상기 복수의 메모리 영역들은 제 1 메모리 영역, 제 2 메모리 영역, 및 제 3 메모리 영역을 포함하고, 상기 제 1, 제 2, 및 제 3 메모리 영역 각각은 가비지(garbage) 수집되도록 구성된 메모리 유닛으로서 정의되고, 상기 복수의 데이터 유닛들은 유효한 데이터 유닛들을 포함함 ―; 및
제어기
를 포함하고,
상기 제어기는, 적어도:
상기 제 1 메모리 영역에서 상기 복수의 데이터 유닛들 중에서 유효한 데이터를 포함하는 유효한 데이터 유닛들을 식별하는 것;
상기 유효한 데이터 유닛들의 제 1 세트가 제 1 우선순위를 갖는다고 결정하는 것에 응답하여, 상기 제 1 세트를 상기 제 2 메모리 영역에 카피될 데이터 유닛들로서 지정하는 것 ― 상기 제 1 우선순위는, 상기 제 1 세트의 유효한 데이터 유닛들이 후속 가비지 수집 동작 동안 상기 비휘발성 메모리 어레이로부터 소거될 후보들임을 나타냄 ― ;
상기 유효한 데이터 유닛들의 제 2 세트가 상기 제 1 우선순위와는 상이한 제 2 우선순위를 갖는다고 결정하는 것에 응답하여, 상기 제 2 세트를 상기 제 3 메모리 영역에 카피될 데이터 유닛들로서 지정하는 것; 및
상기 유효한 데이터 유닛들의 제 1 세트를 상기 제 1 메모리 영역으로부터 상기 제 2 메모리 영역에, 그리고 상기 유효한 데이터 유닛들의 제 2 세트를 상기 제 1 메모리 영역으로부터 상기 제 2 메모리 영역과는 상이한 제 3 메모리 영역에 카피하는 것
에 의해, 상기 제 1 메모리 영역에서 가비지 수집 동작을 수행하도록 구성되고,
상기 제어기는 또한, 상기 유효한 데이터 유닛들의 제 3 세트가 상기 제 1 우선순위 및 상기 제 2 우선순위와는 상이한 제 3 우선순위를 갖는다고 결정하는 것에 응답하여, 상기 제 1 메모리 영역이 소거될 때 상기 유효한 데이터 유닛들의 제 3 세트가 소거되도록, 상기 제 3 세트를 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터 유닛들로서 지정하는 것에 의해, 상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하도록 구성되는 것인, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하는 것에 후속하여, 상기 제어기는 또한, 상기 제 2 메모리 영역이 소거될 때 상기 제 2 메모리 영역 내의 상기 복수의 데이터 유닛들 중에서 적어도 일부의 유효한 데이터 유닛들이 소거되도록, 상기 제 2 메모리 영역 내의 상기 복수의 데이터 유닛들 중에서 상기 적어도 일부의 유효한 데이터 유닛들을 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터 유닛들로서 지정하는 것에 의해, 상기 제 2 메모리 영역에서 가비지 수집 동작을 수행하도록 구성되는 것인, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 또한, 상기 제 1 세트와 연관된 우선순위 정보의 임계치(threshold)와의 비교에 기초하여 상기 제 1 세트가 상기 제 1 우선순위를 갖는다고 결정하도록 구성되는 것인, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 또한:
상기 복수의 메모리 영역들 내의 상기 복수의 데이터 유닛들의 우선순위 정보에 적어도 부분적으로 기초하여, 상기 복수의 메모리 영역들의 가비지 수집 랭킹들을 결정하고;
상기 가비지 수집 랭킹들에 기초하여, 복수의 메모리 영역들 중, 상기 제 1 메모리 영역에서의 상기 가비지 수집 동작을 포함하는 가비지 수집 동작들을 위한 하나 이상의 메모리 영역들을 선택하도록
구성되는 것인, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 복수의 데이터 유닛들은, 무효한 데이터를 포함하는 무효한 데이터 유닛들을 더 포함하고, 상기 무효한 데이터는 하나 이상의 논리 어드레스에 대응하는 데이터의 카피를 포함하고, 상기 카피는 상기 하나 이상의 논리 어드레스에 대응하는 데이터의 더 최근의 카피보다 먼저 기록되었던 것인, 데이터 저장 시스템. - 제 4 항에 있어서,
데이터를 저장하도록 구성되는 자기(magnetic) 저장부를 더 포함하고,
상기 제어기는 또한:
상기 자기 저장부와의 동기화를 위한 데이터를 선택함에 있어서, (1) 상기 데이터와 연관된 우선순위 정보에 기초하여 축출(eviction) 임계치를 충족하고 (2) 상기 가비지 수집 동작들을 위한 후보들인 상기 하나 이상의 메모리 영역들에 상주하는 데이터에 우선순위를 주고;
상기 선택된 데이터의 적어도 일부를 동기화하며;
상기 동기화된 데이터를, 상기 가비지 수집 동작들 중 적어도 하나의 가비지 수집 동작 동안 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터로서 지정하도록
구성되는 것인, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 또한, 호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 1 세트의 액세스의 빈도, 상기 제 1 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 1 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 1 우선순위를 결정하도록 구성되는 것인, 데이터 저장 시스템. - 복수의 데이터 유닛들을 저장하도록 구성된 복수의 메모리 영역들을 갖는 비휘발성 메모리 어레이를 포함하는 데이터 저장 시스템에서의 방법에 있어서,
상기 복수의 메모리 영역들은 제 1 메모리 영역, 제 2 메모리 영역, 및 제 3 메모리 영역을 포함하고, 상기 제 1, 제 2, 및 제 3 메모리 영역 각각은 가비지 수집되도록 구성된 메모리 유닛으로서 정의되고, 상기 복수의 데이터 유닛들은 유효한 데이터 유닛들을 포함하며,
상기 방법은:
적어도,
상기 제 1 메모리 영역에서 상기 복수의 데이터 유닛들 중에서 유효한 데이터를 포함하는 유효한 데이터 유닛들을 식별하는 것;
상기 유효한 데이터 유닛들의 제 1 세트가 제 1 우선순위를 갖는다고 결정하는 것에 응답하여, 상기 제 1 세트를 상기 제 2 메모리 영역에 카피될 데이터 유닛들로서 지정하는 것 ― 상기 제 1 우선순위는, 상기 제 1 세트의 유효한 데이터 유닛들이 후속 가비지 수집 동작 동안 상기 비휘발성 메모리 어레이로부터 소거될 후보들임을 나타냄 ― ;
상기 유효한 데이터 유닛들의 제 2 세트가 상기 제 1 우선순위와는 상이한 제 2 우선순위를 갖는다고 결정하는 것에 응답하여, 상기 제 2 세트를 상기 제 3 메모리 영역에 카피될 데이터 유닛들로서 지정하는 것; 및
상기 유효한 데이터 유닛들의 제 1 세트를 상기 제 1 메모리 영역으로부터 상기 제 2 메모리 영역에, 그리고 상기 유효한 데이터 유닛들의 제 2 세트를 상기 제 1 메모리 영역으로부터 상기 제 2 메모리 영역과는 상이한 제 3 메모리 영역에 카피하는 것
에 의해, 상기 제 1 메모리 영역에서 가비지 수집 동작을 수행하는 단계; 및
상기 유효한 데이터 유닛들의 제 3 세트가 상기 제 1 우선순위 및 상기 제 2 우선순위와는 상이한 제 3 우선순위를 갖는다고 결정하는 것에 응답하여, 상기 제 1 메모리 영역이 소거될 때 상기 유효한 데이터 유닛들의 제 3 세트가 소거되도록, 상기 제 3 세트를 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터 유닛들로서 지정하는 것에 의해, 상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하는 단계
를 포함하는, 방법. - 제 8 항에 있어서,
상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하는 단계에 후속하여, 적어도, 상기 제 2 메모리 영역이 소거될 때 상기 제 2 메모리 영역 내의 상기 복수의 데이터 유닛들 중에서 적어도 일부의 유효한 데이터 유닛들이 소거되도록, 상기 제 2 메모리 영역 내의 상기 복수의 데이터 유닛들 중에서 상기 적어도 일부의 유효한 데이터 유닛들을 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터 유닛들로서 지정하는 것에 의해, 상기 제 2 메모리 영역에서 가비지 수집 동작을 수행하는 단계를 더 포함하는, 방법. - 제 8 항에 있어서,
상기 제 1 세트와 연관된 우선순위 정보의 임계치와의 비교에 기초하여 상기 제 1 세트가 상기 제 1 우선순위를 갖는다고 결정하는 단계를 더 포함하는, 방법. - 제 8 항에 있어서,
상기 복수의 메모리 영역들 내의 상기 복수의 데이터 유닛들의 우선순위 정보에 적어도 부분적으로 기초하여, 상기 복수의 메모리 영역들의 가비지 수집 랭킹들을 결정하는 단계; 및
상기 가비지 수집 랭킹들에 기초하여, 복수의 메모리 영역들 중, 상기 제 1 메모리 영역에서의 상기 가비지 수집 동작을 포함하는 가비지 수집 동작들을 위한 하나 이상의 메모리 영역들을 선택하는 단계
를 더 포함하는, 방법. - 제 8 항에 있어서,
상기 복수의 데이터 유닛들은 무효한 데이터를 포함하는 무효한 데이터 유닛들을 더 포함하고, 상기 무효한 데이터는 하나 이상의 논리 어드레스에 대응하는 데이터의 카피를 포함하고, 상기 카피는 상기 하나 이상의 논리 어드레스에 대응하는 데이터의 더 최근의 카피보다 먼저 기록되었던 것인, 방법. - 제 11 항에 있어서,
상기 데이터 저장 시스템은 데이터를 저장하도록 구성되는 또 다른 데이터 저장부를 더 포함하고,
상기 방법은:
상기 또 다른 데이터 저장부와의 동기화를 위한 데이터를 선택함에 있어서, (1) 상기 데이터와 연관된 우선순위 정보에 기초하여 축출 임계치를 충족하고 (2) 상기 가비지 수집 동작들을 위한 후보들인 상기 하나 이상의 메모리 영역들에 상주하는 데이터에 우선순위를 주는 단계;
적어도 일부의 선택된 데이터를 동기화하는 단계; 및
상기 동기화된 데이터를, 상기 가비지 수집 동작들 중 적어도 하나의 가비지 수집 동작 동안 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터로서 지정하는 단계
를 더 포함하는, 방법. - 제 8 항에 있어서,
호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 1 세트의 액세스의 빈도, 상기 제 1 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 1 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 1 우선순위를 결정하는 단계를 더 포함하는, 방법. - 제 8 항에 있어서,
상기 데이터 저장 시스템은 자기 매체를 더 포함하고,
상기 방법은:
상기 제 3 세트를 자기 매체에 축출될 데이터 유닛들로서 지정하는 단계; 및
상기 비휘발성 메모리 어레이를 상기 자기 매체를 위한 캐시 메모리로서 사용하는 단계
를 더 포함하는, 방법. - 제 8 항에 있어서,
상기 제 3 세트를 원격 데이터 저장부에 축출될 데이터 유닛들로서 지정하는 단계; 및
상기 비휘발성 메모리 어레이를 상기 원격 데이터 저장부를 위한 캐시 메모리로서 사용하는 단계
를 더 포함하는, 방법. - 제 1 항에 있어서,
상기 제어기는 또한, 자기 매체에 축출될 데이터 유닛들로서 상기 제 3 세트를 지정하는 것에 의해 상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하도록 구성되고, 상기 비휘발성 메모리 어레이는 상기 자기 매체를 위한 캐시 메모리로서 구성되는 것인, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 또한, 원격 데이터 저장부에 축출될 데이터 유닛들로서 상기 제 3 세트를 지정하는 것에 의해 상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하도록 구성되고, 상기 비휘발성 메모리 어레이는 상기 원격 데이터 저장부를 위한 캐시 메모리로서 구성되는 것인, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 복수의 메모리 영역들은 상기 제 1, 제 2, 및 제 3 메모리 영역들 중 임의의 메모리 영역과는 상이한 제 4 메모리 영역을 포함하고, 상기 제 4 메모리 영역은 가비지 수집되도록 구성되는 메모리 유닛으로서 정의되고, 상기 제 4 메모리 영역은 상기 제 1 우선순위를 갖는 유효한 데이터 유닛들의 제 4 세트 및 상기 제 2 우선순위를 갖는 유효한 데이터 유닛들의 제 5 세트를 포함하며, 상기 제어기는 또한, 상기 유효한 데이터 유닛들의 제 4 세트를 상기 제 4 메모리 영역으로부터 상기 제 2 메모리 영역으로 카피하고 상기 유효한 데이터 유닛들의 제 5 세트를 상기 제 4 메모리 영역으로부터 상기 제 3 메모리 영역으로 카피하도록 구성되는 것인, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 또한, 호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 2 세트의 액세스의 빈도, 상기 제 2 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 2 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 2 우선순위를 결정하도록 구성되는 것인, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 또한, 호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 3 세트의 액세스의 빈도, 상기 제 3 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 3 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 3 우선순위를 결정하도록 구성되는 것인, 데이터 저장 시스템. - 제 8 항에 있어서,
호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 2 세트의 액세스의 빈도, 상기 제 2 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 2 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 2 우선순위를 결정하는 단계를 더 포함하는, 방법. - 제 8 항에 있어서,
호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 3 세트의 액세스의 빈도, 상기 제 3 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 3 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 3 우선순위를 결정하는 단계를 더 포함하는, 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/727,278 US9430376B2 (en) | 2012-12-26 | 2012-12-26 | Priority-based garbage collection for data storage systems |
US13/727,278 | 2012-12-26 | ||
PCT/US2013/061473 WO2014105229A1 (en) | 2012-12-26 | 2013-09-24 | Priority-based garbage collection for data storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150100862A KR20150100862A (ko) | 2015-09-02 |
KR101894625B1 true KR101894625B1 (ko) | 2018-09-03 |
Family
ID=50976073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157020012A KR101894625B1 (ko) | 2012-12-26 | 2013-09-24 | 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9430376B2 (ko) |
EP (1) | EP2939120B1 (ko) |
JP (1) | JP6266019B2 (ko) |
KR (1) | KR101894625B1 (ko) |
CN (1) | CN105074673B (ko) |
HK (1) | HK1217371A1 (ko) |
WO (1) | WO2014105229A1 (ko) |
Families Citing this family (137)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8959284B1 (en) | 2010-06-28 | 2015-02-17 | Western Digital Technologies, Inc. | Disk drive steering write data to write cache based on workload |
US9058280B1 (en) | 2010-08-13 | 2015-06-16 | Western Digital Technologies, Inc. | Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
US9069475B1 (en) | 2010-10-26 | 2015-06-30 | Western Digital Technologies, Inc. | Hybrid drive selectively spinning up disk when powered on |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US9195530B1 (en) | 2011-09-06 | 2015-11-24 | Western Digital Technologies, Inc. | Systems and methods for improved data management in data storage systems |
US9268701B1 (en) | 2011-11-21 | 2016-02-23 | Western Digital Technologies, Inc. | Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability |
US8959416B1 (en) | 2011-12-16 | 2015-02-17 | Western Digital Technologies, Inc. | Memory defect management using signature identification |
US9348741B1 (en) | 2011-12-19 | 2016-05-24 | Western Digital Technologies, Inc. | Systems and methods for handling write data access requests in data storage devices |
US9053008B1 (en) | 2012-03-26 | 2015-06-09 | Western Digital Technologies, Inc. | Systems and methods for providing inline parameter service in data storage devices |
US9977612B1 (en) | 2012-05-11 | 2018-05-22 | Western Digital Technologies, Inc. | System data management using garbage collection and logs |
US9170932B1 (en) | 2012-05-22 | 2015-10-27 | Western Digital Technologies, Inc. | System data storage mechanism providing coherency and segmented data loading |
US8924832B1 (en) | 2012-06-26 | 2014-12-30 | Western Digital Technologies, Inc. | Efficient error handling mechanisms in data storage systems |
US8954653B1 (en) | 2012-06-26 | 2015-02-10 | Western Digital Technologies, Inc. | Mechanisms for efficient management of system data in data storage systems |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US9489296B1 (en) | 2012-10-17 | 2016-11-08 | Western Digital Technologies, Inc. | Methods, devices and systems for hardware-based garbage collection in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US9032271B2 (en) | 2012-12-07 | 2015-05-12 | Western Digital Technologies, Inc. | System and method for lower page data recovery in a solid state drive |
US8954655B2 (en) | 2013-01-14 | 2015-02-10 | Western Digital Technologies, Inc. | Systems and methods of configuring a mode of operation in a solid-state memory |
US8972655B2 (en) | 2013-01-21 | 2015-03-03 | Western Digital Technolgies, Inc. | Initialization of a storage device |
US9274966B1 (en) | 2013-02-20 | 2016-03-01 | Western Digital Technologies, Inc. | Dynamically throttling host commands to disk drives |
US9454474B2 (en) | 2013-03-05 | 2016-09-27 | Western Digital Technologies, Inc. | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive |
US8924824B1 (en) | 2013-03-12 | 2014-12-30 | Western Digital Technologies, Inc. | Soft-decision input generation for data storage systems |
US8990668B2 (en) | 2013-03-14 | 2015-03-24 | Western Digital Technologies, Inc. | Decoding data stored in solid-state memory |
US9335950B2 (en) | 2013-03-15 | 2016-05-10 | Western Digital Technologies, Inc. | Multiple stream compression and formatting of data for data storage systems |
US9448738B2 (en) | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
US9218279B2 (en) | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
US9946495B2 (en) * | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
US9338927B2 (en) | 2013-05-02 | 2016-05-10 | Western Digital Technologies, Inc. | Thermal interface material pad and method of forming the same |
US9195293B1 (en) | 2013-05-03 | 2015-11-24 | Western Digital Technologies, Inc. | User controlled data storage device power and performance settings |
US9632926B1 (en) | 2013-05-16 | 2017-04-25 | Western Digital Technologies, Inc. | Memory unit assignment and selection for internal memory operations in data storage systems |
US9081700B2 (en) | 2013-05-16 | 2015-07-14 | Western Digital Technologies, Inc. | High performance read-modify-write system providing line-rate merging of dataframe segments in hardware |
US9170938B1 (en) | 2013-05-17 | 2015-10-27 | Western Digital Technologies, Inc. | Method and system for atomically writing scattered information in a solid state storage device |
US9280200B1 (en) | 2013-05-20 | 2016-03-08 | Western Digital Technologies, Inc. | Automatic peak current throttle of tiered storage elements |
US9740248B2 (en) | 2013-06-07 | 2017-08-22 | Western Digital Technologies, Inc. | Component placement within a solid state drive |
US9274978B2 (en) | 2013-06-10 | 2016-03-01 | Western Digital Technologies, Inc. | Migration of encrypted data for data storage systems |
US9436630B2 (en) | 2013-06-11 | 2016-09-06 | Western Digital Technologies, Inc. | Using dual phys to support multiple PCIe link widths |
US9830257B1 (en) | 2013-06-12 | 2017-11-28 | Western Digital Technologies, Inc. | Fast saving of data during power interruption in data storage systems |
US9665501B1 (en) | 2013-06-18 | 2017-05-30 | Western Digital Technologies, Inc. | Self-encrypting data storage device supporting object-level encryption |
US9304560B2 (en) | 2013-06-19 | 2016-04-05 | Western Digital Technologies, Inc. | Backup power for reducing host current transients |
US9208101B2 (en) | 2013-06-26 | 2015-12-08 | Western Digital Technologies, Inc. | Virtual NAND capacity extension in a hybrid drive |
US9583153B1 (en) | 2013-06-28 | 2017-02-28 | Western Digital Technologies, Inc. | Memory card placement within a solid state drive |
US9042197B2 (en) | 2013-07-23 | 2015-05-26 | Western Digital Technologies, Inc. | Power fail protection and recovery using low power states in a data storage device/system |
US9442668B1 (en) | 2013-08-29 | 2016-09-13 | Western Digital Technologies, Inc. | Adaptive power management control with performance feedback |
US9263136B1 (en) | 2013-09-04 | 2016-02-16 | Western Digital Technologies, Inc. | Data retention flags in solid-state drives |
US9330143B2 (en) | 2013-10-24 | 2016-05-03 | Western Digital Technologies, Inc. | Data storage device supporting accelerated database operations |
US9007841B1 (en) | 2013-10-24 | 2015-04-14 | Western Digital Technologies, Inc. | Programming scheme for improved voltage distribution in solid-state memory |
US10444998B1 (en) | 2013-10-24 | 2019-10-15 | Western Digital Technologies, Inc. | Data storage device providing data maintenance services |
US9323467B2 (en) | 2013-10-29 | 2016-04-26 | Western Digital Technologies, Inc. | Data storage device startup |
US9286176B1 (en) | 2013-11-08 | 2016-03-15 | Western Digital Technologies, Inc. | Selective skipping of blocks in an SSD |
US9270296B1 (en) | 2013-11-13 | 2016-02-23 | Western Digital Technologies, Inc. | Method and system for soft decoding through single read |
US9529710B1 (en) | 2013-12-06 | 2016-12-27 | Western Digital Technologies, Inc. | Interleaved channels in a solid-state drive |
US9652373B2 (en) * | 2013-12-16 | 2017-05-16 | International Business Machines Corporation | Adaptive statistics for a linear address space |
US10140067B1 (en) | 2013-12-19 | 2018-11-27 | Western Digital Technologies, Inc. | Data management for data storage device with multiple types of non-volatile memory media |
US9524236B1 (en) * | 2014-01-09 | 2016-12-20 | Marvell International Ltd. | Systems and methods for performing memory management based on data access properties |
US9036283B1 (en) | 2014-01-22 | 2015-05-19 | Western Digital Technologies, Inc. | Data storage device with selective write to a first storage media or a second storage media |
US9337864B1 (en) | 2014-01-29 | 2016-05-10 | Western Digital Technologies, Inc. | Non-binary LDPC decoder using binary subgroup processing |
US9250994B1 (en) | 2014-02-05 | 2016-02-02 | Western Digital Technologies, Inc. | Non-binary low-density parity check (LDPC) decoding using trellis maximization |
US9384088B1 (en) | 2014-02-24 | 2016-07-05 | Western Digital Technologies, Inc. | Double writing map table entries in a data storage system to guard against silent corruption |
US9354955B1 (en) | 2014-03-19 | 2016-05-31 | Western Digital Technologies, Inc. | Partial garbage collection for fast error handling and optimized garbage collection for the invisible band |
US9348520B2 (en) | 2014-03-24 | 2016-05-24 | Western Digital Technologies, Inc. | Lifetime extension of non-volatile semiconductor memory for data storage device |
US9268487B2 (en) | 2014-03-24 | 2016-02-23 | Western Digital Technologies, Inc. | Method and apparatus for restricting writes to solid state memory when an end-of life condition is reached |
US9448742B2 (en) | 2014-03-27 | 2016-09-20 | Western Digital Technologies, Inc. | Communication between a host and a secondary storage device |
US9564212B2 (en) | 2014-05-06 | 2017-02-07 | Western Digital Technologies, Inc. | Solid-state memory corruption mitigation |
US9690696B1 (en) | 2014-05-14 | 2017-06-27 | Western Digital Technologies, Inc. | Lifetime extension of memory for data storage system |
US9472222B2 (en) | 2014-05-16 | 2016-10-18 | Western Digital Technologies, Inc. | Vibration mitigation for a data storage device |
US10521358B2 (en) * | 2014-06-20 | 2019-12-31 | Hewlett Packard Enterprise Development Lp | System, apparatus and method for prioritizing the storage of content based on a threat index |
US10645002B2 (en) | 2014-06-20 | 2020-05-05 | Hewlett Packard Enterprise Development Lp | System, apparatus and method for managing redundancy elimination in packet storage during observation of data movement |
US9275741B1 (en) | 2014-09-10 | 2016-03-01 | Western Digital Technologies, Inc. | Temperature compensation management in solid-state memory |
US9875039B2 (en) * | 2014-09-30 | 2018-01-23 | Sandisk Technologies Llc | Method and apparatus for wear-leveling non-volatile memory |
US9418699B1 (en) | 2014-10-09 | 2016-08-16 | Western Digital Technologies, Inc. | Management of sequentially written data |
US9405356B1 (en) | 2014-10-21 | 2016-08-02 | Western Digital Technologies, Inc. | Temperature compensation in data storage device |
US9530490B2 (en) | 2014-10-27 | 2016-12-27 | Sandisk Technologies Llc | Compaction process for a data storage device |
US9823859B2 (en) | 2014-11-06 | 2017-11-21 | Western Digital Technologies, Inc. | Mechanical shock mitigation for data storage |
US20160179401A1 (en) * | 2014-12-17 | 2016-06-23 | Sk Hynix Memory Solutions Inc. | Memory system and the operation method thereof |
US9892045B1 (en) * | 2015-01-30 | 2018-02-13 | EMC IP Holding Company LLC | Methods to select segments of an evicted cache unit for reinsertion into the cache |
US9892044B1 (en) * | 2015-01-30 | 2018-02-13 | EMC IP Holding Company LLC | Methods to efficiently implement coarse granularity cache eviction |
US9720835B1 (en) * | 2015-01-30 | 2017-08-01 | EMC IP Holding Company LLC | Methods to efficiently implement coarse granularity cache eviction based on segment deletion hints |
US9921963B1 (en) * | 2015-01-30 | 2018-03-20 | EMC IP Holding Company LLC | Method to decrease computation for cache eviction using deferred calculations |
US9857995B1 (en) | 2015-03-09 | 2018-01-02 | Western Digital Technologies, Inc. | Data storage device and method providing non-volatile memory buffer for real-time primary non-volatile memory protection |
US9785563B1 (en) | 2015-08-13 | 2017-10-10 | Western Digital Technologies, Inc. | Read command processing for data storage system based on previous writes |
US9668337B2 (en) | 2015-09-08 | 2017-05-30 | Western Digital Technologies, Inc. | Temperature management in data storage devices |
US9727261B2 (en) | 2015-09-24 | 2017-08-08 | Western Digital Technologies, Inc. | Weighted programming patterns in solid-state data storage systems |
US10013174B2 (en) | 2015-09-30 | 2018-07-03 | Western Digital Technologies, Inc. | Mapping system selection for data storage device |
US9836232B1 (en) | 2015-09-30 | 2017-12-05 | Western Digital Technologies, Inc. | Data storage device and method for using secondary non-volatile memory for temporary metadata storage |
WO2017069646A1 (en) * | 2015-10-19 | 2017-04-27 | Huawei Technologies Co., Ltd. | Method and device for determination of garbage collector thread number and activity management in log-structured file systems |
US9620226B1 (en) | 2015-10-30 | 2017-04-11 | Western Digital Technologies, Inc. | Data retention charge loss and read disturb compensation in solid-state data storage systems |
US10126981B1 (en) | 2015-12-14 | 2018-11-13 | Western Digital Technologies, Inc. | Tiered storage using storage class memory |
TWI598733B (zh) * | 2016-01-12 | 2017-09-11 | 瑞昱半導體股份有限公司 | 權重式資料搬遷控制裝置與方法 |
US10884914B2 (en) | 2016-02-19 | 2021-01-05 | International Business Machines Corporation | Regrouping data during relocation to facilitate write amplification reduction |
US10248327B2 (en) * | 2016-04-01 | 2019-04-02 | SK Hynix Inc. | Throttling for a memory system using a GC/HOST ratio and operating method thereof |
CN107484427B (zh) * | 2016-04-07 | 2020-11-06 | 华为技术有限公司 | 用于处理存储设备中分条的方法和存储设备 |
KR101950759B1 (ko) * | 2016-04-26 | 2019-02-21 | 한양대학교 산학협력단 | 저장 장치의 메모리 컨트롤러가 수행하는 가비지 컬렉션 방법 및 메모리 컨트롤러 |
US10387303B2 (en) | 2016-08-16 | 2019-08-20 | Western Digital Technologies, Inc. | Non-volatile storage system with compute engine to accelerate big data applications |
CN106502579B (zh) * | 2016-09-22 | 2019-10-11 | 广州华多网络科技有限公司 | 一种数据存储失败时的重建方法及装置 |
US10459644B2 (en) | 2016-10-28 | 2019-10-29 | Western Digital Techologies, Inc. | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
TWI615710B (zh) | 2016-12-14 | 2018-02-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
CN106775479B (zh) * | 2016-12-21 | 2020-05-12 | 合肥兆芯电子有限公司 | 存储器管理方法、存储器储存装置及存储器控制电路单元 |
US10521143B2 (en) | 2017-03-23 | 2019-12-31 | Netapp Inc. | Composite aggregate architecture |
US10565123B2 (en) | 2017-04-10 | 2020-02-18 | Western Digital Technologies, Inc. | Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module |
US10579288B2 (en) * | 2017-08-31 | 2020-03-03 | Micron Technology, Inc. | Prioritized security |
US10509722B2 (en) | 2017-08-31 | 2019-12-17 | Micron Technology, Inc. | Memory device with dynamic cache management |
KR102347871B1 (ko) * | 2017-11-14 | 2022-01-06 | 삼성전자주식회사 | 캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법 |
CN108038001B (zh) * | 2017-12-13 | 2022-10-14 | 腾讯科技(深圳)有限公司 | 垃圾文件清理策略生成方法、装置及服务器 |
US10572184B2 (en) * | 2018-01-11 | 2020-02-25 | International Business Machines Corporation | Garbage collection in data storage systems |
US10360155B1 (en) | 2018-04-05 | 2019-07-23 | Western Digital Technologies, Inc. | Multi-tier memory management |
US10776268B2 (en) * | 2018-04-19 | 2020-09-15 | Western Digital Technologies, Inc. | Priority addresses for storage cache management |
KR20200016075A (ko) | 2018-08-06 | 2020-02-14 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치 |
US10769062B2 (en) | 2018-10-01 | 2020-09-08 | Western Digital Technologies, Inc. | Fine granularity translation layer for data storage devices |
US10956071B2 (en) | 2018-10-01 | 2021-03-23 | Western Digital Technologies, Inc. | Container key value store for data storage devices |
US10740231B2 (en) | 2018-11-20 | 2020-08-11 | Western Digital Technologies, Inc. | Data access in data storage device including storage class memory |
TWI759580B (zh) * | 2019-01-29 | 2022-04-01 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
TWI781886B (zh) * | 2019-01-29 | 2022-10-21 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
US10878907B1 (en) | 2019-06-05 | 2020-12-29 | Sandisk Technologies Llc | Sub-block size reduction for 3D non-volatile memory |
US10978152B1 (en) | 2019-11-13 | 2021-04-13 | Sandisk Technologies Llc | Adaptive VPASS for 3D flash memory with pair string structure |
US11016905B1 (en) | 2019-11-13 | 2021-05-25 | Western Digital Technologies, Inc. | Storage class memory access |
US11194714B2 (en) | 2020-03-31 | 2021-12-07 | International Business Machines Corporation | Deep object graph traversal |
US11249921B2 (en) | 2020-05-06 | 2022-02-15 | Western Digital Technologies, Inc. | Page modification encoding and caching |
KR20210138996A (ko) | 2020-05-13 | 2021-11-22 | 삼성전자주식회사 | 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법 |
TWI751580B (zh) | 2020-06-10 | 2022-01-01 | 財團法人工業技術研究院 | 儲存空間暫存檔案的管理方法及用於儲存多個暫存檔案的記錄裝置 |
JP2023108843A (ja) | 2022-01-26 | 2023-08-07 | キオクシア株式会社 | メモリシステム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033330A1 (en) | 2005-08-03 | 2007-02-08 | Sinclair Alan W | Reclaiming Data Storage Capacity in Flash Memory Systems |
US20080109590A1 (en) | 2006-11-03 | 2008-05-08 | Samsung Electronics Co., Ltd. | Flash memory system and garbage collection method thereof |
US20100172180A1 (en) | 2009-01-05 | 2010-07-08 | Alexander Paley | Non-Volatile Memory and Method With Write Cache Partitioning |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0744325A (ja) | 1993-07-27 | 1995-02-14 | Fuji Electric Co Ltd | ディスク記憶装置の起動およびデータ読み書き方式 |
US5586291A (en) | 1994-12-23 | 1996-12-17 | Emc Corporation | Disk controller with volatile and non-volatile cache memories |
US6044439A (en) | 1997-10-27 | 2000-03-28 | Acceleration Software International Corporation | Heuristic method for preloading cache to enhance hit rate |
US7886108B2 (en) | 2000-01-06 | 2011-02-08 | Super Talent Electronics, Inc. | Methods and systems of managing memory addresses in a large capacity multi-level cell (MLC) based flash memory device |
US6539456B2 (en) | 1999-10-13 | 2003-03-25 | Intel Corporation | Hardware acceleration of boot-up utilizing a non-volatile disk cache |
US7610438B2 (en) | 2000-01-06 | 2009-10-27 | Super Talent Electronics, Inc. | Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table |
US6807630B2 (en) | 2000-12-15 | 2004-10-19 | International Business Machines Corporation | Method for fast reinitialization wherein a saved system image of an operating system is transferred into a primary memory from a secondary memory |
US7120806B1 (en) | 2001-10-31 | 2006-10-10 | Western Digital Technologies, Inc. | Method for setting a power operating mode transition interval of a disk drive in a mobile device based on application category |
US6968450B1 (en) | 2002-06-01 | 2005-11-22 | Western Digital Technologies, Inc. | Disk drive caching initial host requested data in non-volatile semiconductor memory to reduce start-up time of a host computer |
US7017037B2 (en) | 2002-06-27 | 2006-03-21 | Microsoft Corporation | Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time |
KR100484147B1 (ko) * | 2002-07-26 | 2005-04-18 | 삼성전자주식회사 | 플래시 메모리 관리 방법 |
US7028174B1 (en) | 2002-09-30 | 2006-04-11 | Western Digital Technologies, Inc. | Disk drive employing a non-volatile serial semiconductor memory for storing a control program for a microprocessor |
US7082494B1 (en) | 2002-12-24 | 2006-07-25 | Western Digital Technologies, Inc. | Disk drive executing a preemptive multitasking operating system comprising tasks of varying priority |
US7334082B2 (en) | 2003-12-30 | 2008-02-19 | Intel Corporation | Method and system to change a power state of a hard drive |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7395452B2 (en) | 2004-09-24 | 2008-07-01 | Microsoft Corporation | Method and system for improved reliability in storage devices |
US7472222B2 (en) | 2004-10-12 | 2008-12-30 | Hitachi Global Storage Technologies Netherlands B.V. | HDD having both DRAM and flash memory |
US7516346B2 (en) | 2004-10-28 | 2009-04-07 | Nec Laboratories America, Inc. | System and method for dynamically changing the power mode of storage disks based on redundancy and system load |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
WO2007019155A1 (en) * | 2005-08-03 | 2007-02-15 | Sandisk Corporation | Reclaiming data storage capacity in flash memory systems |
KR101329068B1 (ko) * | 2005-08-03 | 2013-11-14 | 샌디스크 테크놀로지스, 인코포레이티드 | 블록 관리를 가지는 비휘발성 메모리 |
US7644231B2 (en) | 2005-08-11 | 2010-01-05 | International Business Machines Corporation | Selective information caching on disk drive |
US7509471B2 (en) | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
US7613876B2 (en) | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
US7411757B2 (en) | 2006-07-27 | 2008-08-12 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with nonvolatile memory having multiple modes of operation |
KR100801015B1 (ko) | 2006-08-30 | 2008-02-04 | 삼성전자주식회사 | 하이브리드 하드 디스크 드라이브와 데이터 저장 방법 |
US8015433B2 (en) | 2006-09-13 | 2011-09-06 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with nonvolatile memory for storage of failure-related data |
US9104599B2 (en) | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
KR100881187B1 (ko) | 2007-01-16 | 2009-02-05 | 삼성전자주식회사 | 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로 |
KR100866962B1 (ko) | 2007-03-08 | 2008-11-05 | 삼성전자주식회사 | Hdd를 하이브리드 hdd에서 노멀 hdd로 전환시키는방법 |
KR101297563B1 (ko) | 2007-11-15 | 2013-08-19 | 삼성전자주식회사 | 스토리지 관리 방법 및 관리 시스템 |
JP2009181314A (ja) | 2008-01-30 | 2009-08-13 | Toshiba Corp | 情報記録装置およびその制御方法 |
US20090271562A1 (en) | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
EP2315126A4 (en) | 2008-08-11 | 2012-06-20 | Fujitsu Ltd | PEST INFORMATION COLLECTION PROGRAM, PASSING INFORMATION COLLECTION METHOD, AND PASSING INFORMATION COLLECTION SYSTEM |
US8180995B2 (en) * | 2009-01-21 | 2012-05-15 | Micron Technology, Inc. | Logical address offset in response to detecting a memory formatting operation |
US8166233B2 (en) | 2009-07-24 | 2012-04-24 | Lsi Corporation | Garbage collection for solid state disks |
US8463826B2 (en) * | 2009-09-03 | 2013-06-11 | Apple Inc. | Incremental garbage collection for non-volatile memories |
WO2011031796A2 (en) * | 2009-09-08 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for caching data on a solid-state storage device |
US8677203B1 (en) * | 2010-01-11 | 2014-03-18 | Apple Inc. | Redundant data storage schemes for multi-die memory systems |
US8356137B2 (en) * | 2010-02-26 | 2013-01-15 | Apple Inc. | Data storage scheme for non-volatile memories based on data priority |
US8458417B2 (en) | 2010-03-10 | 2013-06-04 | Seagate Technology Llc | Garbage collection in a storage device |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
JP2012033002A (ja) * | 2010-07-30 | 2012-02-16 | Toshiba Corp | メモリ管理装置およびメモリ管理方法 |
US8850114B2 (en) * | 2010-09-07 | 2014-09-30 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
US8595463B2 (en) | 2010-09-15 | 2013-11-26 | International Business Machines Corporation | Memory architecture with policy based data storage |
KR20120028581A (ko) | 2010-09-15 | 2012-03-23 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 장치들 |
WO2012051600A2 (en) * | 2010-10-15 | 2012-04-19 | Kyquang Son | File system-aware solid-state storage management system |
US10049040B2 (en) * | 2011-01-21 | 2018-08-14 | Seagate Technology Llc | Just in time garbage collection |
US9092337B2 (en) | 2011-01-31 | 2015-07-28 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing eviction of data |
EP2710475A1 (en) * | 2011-05-17 | 2014-03-26 | SanDisk Technologies Inc. | Non-volatile memory and method with small logical groups distributed among active slc and mlc memory partitions |
US9176864B2 (en) * | 2011-05-17 | 2015-11-03 | SanDisk Technologies, Inc. | Non-volatile memory and method having block management with hot/cold data sorting |
CN102799535A (zh) * | 2012-06-29 | 2012-11-28 | 记忆科技(深圳)有限公司 | 固态硬盘的数据处理方法及固态硬盘 |
-
2012
- 2012-12-26 US US13/727,278 patent/US9430376B2/en active Active
-
2013
- 2013-09-24 KR KR1020157020012A patent/KR101894625B1/ko active IP Right Grant
- 2013-09-24 WO PCT/US2013/061473 patent/WO2014105229A1/en active Application Filing
- 2013-09-24 EP EP13867022.9A patent/EP2939120B1/en active Active
- 2013-09-24 JP JP2015550378A patent/JP6266019B2/ja active Active
- 2013-09-24 CN CN201380068656.0A patent/CN105074673B/zh active Active
-
2016
- 2016-05-10 HK HK16105300.6A patent/HK1217371A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033330A1 (en) | 2005-08-03 | 2007-02-08 | Sinclair Alan W | Reclaiming Data Storage Capacity in Flash Memory Systems |
US20080109590A1 (en) | 2006-11-03 | 2008-05-08 | Samsung Electronics Co., Ltd. | Flash memory system and garbage collection method thereof |
US20100172180A1 (en) | 2009-01-05 | 2010-07-08 | Alexander Paley | Non-Volatile Memory and Method With Write Cache Partitioning |
Also Published As
Publication number | Publication date |
---|---|
WO2014105229A1 (en) | 2014-07-03 |
EP2939120B1 (en) | 2020-02-12 |
JP6266019B2 (ja) | 2018-01-24 |
JP2016506579A (ja) | 2016-03-03 |
EP2939120A4 (en) | 2016-06-22 |
KR20150100862A (ko) | 2015-09-02 |
HK1217371A1 (zh) | 2017-01-06 |
US20140181432A1 (en) | 2014-06-26 |
US9430376B2 (en) | 2016-08-30 |
CN105074673B (zh) | 2018-11-13 |
EP2939120A1 (en) | 2015-11-04 |
CN105074673A (zh) | 2015-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101894625B1 (ko) | 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 | |
US20230152969A1 (en) | Memory system and method of controlling memory system | |
EP3384394B1 (en) | Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes | |
CN107622022B (zh) | 数据存储设备中的高速缓存超量配置 | |
CN102576293B (zh) | 固态存储设备和分层存储系统中的数据管理 | |
US10126981B1 (en) | Tiered storage using storage class memory | |
US8788778B1 (en) | Garbage collection based on the inactivity level of stored data | |
KR101717644B1 (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
US9378131B2 (en) | Non-volatile storage addressing using multiple tables | |
US20170131902A1 (en) | Multi-Tiered Memory with Different Metadata Levels | |
US20160217071A1 (en) | Cache Allocation in a Computerized System | |
CN108762664B (zh) | 一种固态硬盘页级缓存区管理方法 | |
US20150127889A1 (en) | Nonvolatile memory system | |
JP2011192260A (ja) | 半導体記憶装置 | |
JP2009181314A (ja) | 情報記録装置およびその制御方法 | |
Agarwal et al. | A closed-form expression for write amplification in nand flash | |
JP2009099149A (ja) | 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置 | |
JP6711121B2 (ja) | 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム | |
KR101297442B1 (ko) | 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템 | |
CN110413537B (zh) | 一种面向混合固态硬盘的闪存转换层及转换方法 | |
US20090094391A1 (en) | Storage device including write buffer and method for controlling the same | |
CN108845957B (zh) | 一种置换和回写自适应的缓冲区管理方法 | |
KR20100115090A (ko) | 버퍼를 고려한 가비지 컬렉션 기법 | |
KR101017067B1 (ko) | 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 | |
WO2014209880A1 (en) | Virtual nand capacity extension in a hybrid drive |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |