KR101894625B1 - 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 - Google Patents

데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 Download PDF

Info

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
Application number
KR1020157020012A
Other languages
English (en)
Other versions
KR20150100862A (ko
Inventor
로버트 엘 혼
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20150100862A publication Critical patent/KR20150100862A/ko
Application granted granted Critical
Publication of KR101894625B1 publication Critical patent/KR101894625B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

우선순위 기반 가비지 수집은, 가비지 수집의 그리고 전체 데이터 저장 시스템의 효율을 개선하기 위해 비휘발성 메모리 어레이에 저장된 데이터의 속성들을 활용한다. 저 우선순위 데이터의 세트는 비휘발성 메모리 어레이로부터 선택적으로 축출될 수 있다. 이는, 예를 들어, 가비지 수집과 연관된 기입 증폭을 감소시킬 수 있다. 저 우선순위 데이터의 다른 세트는 비휘발성 메모리 어레이의 상이한 영역에서 재그룹핑되거나 통합될 수 있다. 부가적으로, 데이터의 플러싱이 가비지 수집을 향상시키거나 최적화하기 위해 수행될 수 있다. 이에 의해, 성능 및 내구성이 개선될 수 있다.

Description

데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집{PRIORITY-BASED GARBAGE COLLECTION FOR DATA STORAGE SYSTEMS}
본 개시는 컴퓨터 시스템들에 대한 데이터 저장 시스템들에 관한 것이다. 더 상세하게, 본 개시는 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집에 관한 것이다.
데이터 저장 시스템들은 그 정규 동작 동안 다수의 하우스키핑 동작들을 실행한다. 예를 들어, 가비지 수집이, 유효한 및 무효한 데이터 양자를 포함할 수도 있는 메모리 영역들에 대해 빈번히 수행된다. 영역이 가비지 수집을 위해 선택될 경우, 가비지 수집 동작은 메모리 영역 내의 유효한 데이터를 메모리의 새로운 위치(들)에 카피하고, 그 후, 전체 영역을 소거하거나 제거하고, 이에 의해, 그 영역이 데이터의 추후 저장을 위해 이용가능하게 한다. 하지만, 가비지 수집을 수행하는 것은, 솔리드 스테이트 메모리가 데이터를 저장을 위해 사용될 경우들에 있어서 증가된 기입 증폭 (write amplification) 과 같은 실질적인 오버헤드를 수반한다. 이에 따라, 더 효율적인 가비지 수집 메커니즘들을 제공하는 것이 바람직하다.
이제, 본 발명의 다양한 특징들을 구현하는 시스템들 및 방법들이 다음의 도면들을 참조하여 설명될 것이다.
도 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. 데이터 저장 시스템에 있어서,
    복수의 데이터 유닛들을 저장하도록 구성된 복수의 메모리 영역들을 갖는 비휘발성 메모리 어레이 ― 상기 복수의 메모리 영역들은 제 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 메모리 영역에서 상기 가비지 수집 동작을 수행하도록 구성되는 것인, 데이터 저장 시스템.
  2. 제 1 항에 있어서,
    상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하는 것에 후속하여, 상기 제어기는 또한, 상기 제 2 메모리 영역이 소거될 때 상기 제 2 메모리 영역 내의 상기 복수의 데이터 유닛들 중에서 적어도 일부의 유효한 데이터 유닛들이 소거되도록, 상기 제 2 메모리 영역 내의 상기 복수의 데이터 유닛들 중에서 상기 적어도 일부의 유효한 데이터 유닛들을 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터 유닛들로서 지정하는 것에 의해, 상기 제 2 메모리 영역에서 가비지 수집 동작을 수행하도록 구성되는 것인, 데이터 저장 시스템.
  3. 제 1 항에 있어서,
    상기 제어기는 또한, 상기 제 1 세트와 연관된 우선순위 정보의 임계치(threshold)와의 비교에 기초하여 상기 제 1 세트가 상기 제 1 우선순위를 갖는다고 결정하도록 구성되는 것인, 데이터 저장 시스템.
  4. 제 1 항에 있어서,
    상기 제어기는 또한:
    상기 복수의 메모리 영역들 내의 상기 복수의 데이터 유닛들의 우선순위 정보에 적어도 부분적으로 기초하여, 상기 복수의 메모리 영역들의 가비지 수집 랭킹들을 결정하고;
    상기 가비지 수집 랭킹들에 기초하여, 복수의 메모리 영역들 중, 상기 제 1 메모리 영역에서의 상기 가비지 수집 동작을 포함하는 가비지 수집 동작들을 위한 하나 이상의 메모리 영역들을 선택하도록
    구성되는 것인, 데이터 저장 시스템.
  5. 제 1 항에 있어서,
    상기 복수의 데이터 유닛들은, 무효한 데이터를 포함하는 무효한 데이터 유닛들을 더 포함하고, 상기 무효한 데이터는 하나 이상의 논리 어드레스에 대응하는 데이터의 카피를 포함하고, 상기 카피는 상기 하나 이상의 논리 어드레스에 대응하는 데이터의 더 최근의 카피보다 먼저 기록되었던 것인, 데이터 저장 시스템.
  6. 제 4 항에 있어서,
    데이터를 저장하도록 구성되는 자기(magnetic) 저장부를 더 포함하고,
    상기 제어기는 또한:
    상기 자기 저장부와의 동기화를 위한 데이터를 선택함에 있어서, (1) 상기 데이터와 연관된 우선순위 정보에 기초하여 축출(eviction) 임계치를 충족하고 (2) 상기 가비지 수집 동작들을 위한 후보들인 상기 하나 이상의 메모리 영역들에 상주하는 데이터에 우선순위를 주고;
    상기 선택된 데이터의 적어도 일부를 동기화하며;
    상기 동기화된 데이터를, 상기 가비지 수집 동작들 중 적어도 하나의 가비지 수집 동작 동안 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터로서 지정하도록
    구성되는 것인, 데이터 저장 시스템.
  7. 제 1 항에 있어서,
    상기 제어기는 또한, 호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 1 세트의 액세스의 빈도, 상기 제 1 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 1 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 1 우선순위를 결정하도록 구성되는 것인, 데이터 저장 시스템.
  8. 복수의 데이터 유닛들을 저장하도록 구성된 복수의 메모리 영역들을 갖는 비휘발성 메모리 어레이를 포함하는 데이터 저장 시스템에서의 방법에 있어서,
    상기 복수의 메모리 영역들은 제 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 메모리 영역에서 상기 가비지 수집 동작을 수행하는 단계
    를 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하는 단계에 후속하여, 적어도, 상기 제 2 메모리 영역이 소거될 때 상기 제 2 메모리 영역 내의 상기 복수의 데이터 유닛들 중에서 적어도 일부의 유효한 데이터 유닛들이 소거되도록, 상기 제 2 메모리 영역 내의 상기 복수의 데이터 유닛들 중에서 상기 적어도 일부의 유효한 데이터 유닛들을 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터 유닛들로서 지정하는 것에 의해, 상기 제 2 메모리 영역에서 가비지 수집 동작을 수행하는 단계를 더 포함하는, 방법.
  10. 제 8 항에 있어서,
    상기 제 1 세트와 연관된 우선순위 정보의 임계치와의 비교에 기초하여 상기 제 1 세트가 상기 제 1 우선순위를 갖는다고 결정하는 단계를 더 포함하는, 방법.
  11. 제 8 항에 있어서,
    상기 복수의 메모리 영역들 내의 상기 복수의 데이터 유닛들의 우선순위 정보에 적어도 부분적으로 기초하여, 상기 복수의 메모리 영역들의 가비지 수집 랭킹들을 결정하는 단계; 및
    상기 가비지 수집 랭킹들에 기초하여, 복수의 메모리 영역들 중, 상기 제 1 메모리 영역에서의 상기 가비지 수집 동작을 포함하는 가비지 수집 동작들을 위한 하나 이상의 메모리 영역들을 선택하는 단계
    를 더 포함하는, 방법.
  12. 제 8 항에 있어서,
    상기 복수의 데이터 유닛들은 무효한 데이터를 포함하는 무효한 데이터 유닛들을 더 포함하고, 상기 무효한 데이터는 하나 이상의 논리 어드레스에 대응하는 데이터의 카피를 포함하고, 상기 카피는 상기 하나 이상의 논리 어드레스에 대응하는 데이터의 더 최근의 카피보다 먼저 기록되었던 것인, 방법.
  13. 제 11 항에 있어서,
    상기 데이터 저장 시스템은 데이터를 저장하도록 구성되는 또 다른 데이터 저장부를 더 포함하고,
    상기 방법은:
    상기 또 다른 데이터 저장부와의 동기화를 위한 데이터를 선택함에 있어서, (1) 상기 데이터와 연관된 우선순위 정보에 기초하여 축출 임계치를 충족하고 (2) 상기 가비지 수집 동작들을 위한 후보들인 상기 하나 이상의 메모리 영역들에 상주하는 데이터에 우선순위를 주는 단계;
    적어도 일부의 선택된 데이터를 동기화하는 단계; 및
    상기 동기화된 데이터를, 상기 가비지 수집 동작들 중 적어도 하나의 가비지 수집 동작 동안 상기 비휘발성 메모리 어레이 내의 어떠한 메모리 영역에도 카피되지 않을 데이터로서 지정하는 단계
    를 더 포함하는, 방법.
  14. 제 8 항에 있어서,
    호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 1 세트의 액세스의 빈도, 상기 제 1 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 1 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 1 우선순위를 결정하는 단계를 더 포함하는, 방법.
  15. 제 8 항에 있어서,
    상기 데이터 저장 시스템은 자기 매체를 더 포함하고,
    상기 방법은:
    상기 제 3 세트를 자기 매체에 축출될 데이터 유닛들로서 지정하는 단계; 및
    상기 비휘발성 메모리 어레이를 상기 자기 매체를 위한 캐시 메모리로서 사용하는 단계
    를 더 포함하는, 방법.
  16. 제 8 항에 있어서,
    상기 제 3 세트를 원격 데이터 저장부에 축출될 데이터 유닛들로서 지정하는 단계; 및
    상기 비휘발성 메모리 어레이를 상기 원격 데이터 저장부를 위한 캐시 메모리로서 사용하는 단계
    를 더 포함하는, 방법.
  17. 제 1 항에 있어서,
    상기 제어기는 또한, 자기 매체에 축출될 데이터 유닛들로서 상기 제 3 세트를 지정하는 것에 의해 상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하도록 구성되고, 상기 비휘발성 메모리 어레이는 상기 자기 매체를 위한 캐시 메모리로서 구성되는 것인, 데이터 저장 시스템.
  18. 제 1 항에 있어서,
    상기 제어기는 또한, 원격 데이터 저장부에 축출될 데이터 유닛들로서 상기 제 3 세트를 지정하는 것에 의해 상기 제 1 메모리 영역에서 상기 가비지 수집 동작을 수행하도록 구성되고, 상기 비휘발성 메모리 어레이는 상기 원격 데이터 저장부를 위한 캐시 메모리로서 구성되는 것인, 데이터 저장 시스템.
  19. 제 1 항에 있어서,
    상기 복수의 메모리 영역들은 상기 제 1, 제 2, 및 제 3 메모리 영역들 중 임의의 메모리 영역과는 상이한 제 4 메모리 영역을 포함하고, 상기 제 4 메모리 영역은 가비지 수집되도록 구성되는 메모리 유닛으로서 정의되고, 상기 제 4 메모리 영역은 상기 제 1 우선순위를 갖는 유효한 데이터 유닛들의 제 4 세트 및 상기 제 2 우선순위를 갖는 유효한 데이터 유닛들의 제 5 세트를 포함하며, 상기 제어기는 또한, 상기 유효한 데이터 유닛들의 제 4 세트를 상기 제 4 메모리 영역으로부터 상기 제 2 메모리 영역으로 카피하고 상기 유효한 데이터 유닛들의 제 5 세트를 상기 제 4 메모리 영역으로부터 상기 제 3 메모리 영역으로 카피하도록 구성되는 것인, 데이터 저장 시스템.
  20. 제 1 항에 있어서,
    상기 제어기는 또한, 호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 2 세트의 액세스의 빈도, 상기 제 2 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 2 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 2 우선순위를 결정하도록 구성되는 것인, 데이터 저장 시스템.
  21. 제 1 항에 있어서,
    상기 제어기는 또한, 호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 3 세트의 액세스의 빈도, 상기 제 3 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 3 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 3 우선순위를 결정하도록 구성되는 것인, 데이터 저장 시스템.
  22. 제 8 항에 있어서,
    호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 2 세트의 액세스의 빈도, 상기 제 2 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 2 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 2 우선순위를 결정하는 단계를 더 포함하는, 방법.
  23. 제 8 항에 있어서,
    호스트 시스템에 의해 제공된 우선순위 정보, 상기 제 3 세트의 액세스의 빈도, 상기 제 3 세트의 마지막 액세스 이래로의 지속기간, 및 상기 제 3 세트의 판독 대 기입 비율 중 하나 이상에 기초하여 상기 제 3 우선순위를 결정하는 단계를 더 포함하는, 방법.
KR1020157020012A 2012-12-26 2013-09-24 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 KR101894625B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 记忆科技(深圳)有限公司 固态硬盘的数据处理方法及固态硬盘

Patent Citations (3)

* Cited by examiner, † Cited by third party
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