KR20100107456A - 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템 - Google Patents

호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템 Download PDF

Info

Publication number
KR20100107456A
KR20100107456A KR1020107014261A KR20107014261A KR20100107456A KR 20100107456 A KR20100107456 A KR 20100107456A KR 1020107014261 A KR1020107014261 A KR 1020107014261A KR 20107014261 A KR20107014261 A KR 20107014261A KR 20100107456 A KR20100107456 A KR 20100107456A
Authority
KR
South Korea
Prior art keywords
cache
host
storage
data
command
Prior art date
Application number
KR1020107014261A
Other languages
English (en)
Other versions
KR101563875B1 (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 KR20100107456A publication Critical patent/KR20100107456A/ko
Application granted granted Critical
Publication of KR101563875B1 publication Critical patent/KR101563875B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • 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/0893Caches characterised by their organisation or structure
    • 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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • G06F2212/1024Latency reduction
    • 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
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

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

Abstract

호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템이 개시되어 있다. 이 방법은, 자체 캐싱 저장 장치의 캐시 저장부 부분의 가용 용량을 결정하는 단계와, 가용 용량이, 요구되는 임계값 미만인 경우 호스트 기록 명령에 대한 캐시 플러싱 단계의 비를 결정하는 단계와, 이 비를 얻기 위해 호스트 기록 명령으로 캐시 플러싱 단계를 인터리빙하는 단계를 포함한다. 캐시 플러싱 단계는 호스트 기록 명령을 실행한 후 사용중 상태로 저장 장치를 유지하고 이 추가 시간을 캐시 저장부로부터 데이터의 일부를 주 저장부로 복사하는데 사용하여 실행될 수 있다. 이 시스템은, 캐시 저장부, 주 저장부 및 호스트 기록 명령에 대한 캐시 플러싱 단계의 비를 결정하고 호스트 기록 명령 후 사용중 상태를 유지하면서 캐시 플러싱 단계를 실행함으로써 호스트 기록 명령에 대한 캐시 플러싱 단계의 비를 실행하도록 구성된 제어기를 포함할 수 있다.

Description

호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템{METHOD AND SYSTEM FOR BALANCING HOST WRITE OPERATIONS AND CACHE FLUSHING}
본 발명은, 호스트 기록 작업(host write operation)과 캐시 플러싱(cache flushing)을 균형화하기 위한 방법과 시스템에 관한 것이다.
플래시 메모리 같은 비휘발성 메모리 시스템은 소비자 제품들을 위해 널리 사용되고 있다. 플래시 메모리는 예로서, 호스트 장치 내에 내장된 고체 상태 디스크(SSD)로서 또는 호스트 장치 사이에서 전달될 수 있는 휴대용 메모리 카드의 형태로, 다양한 형태로 형성될 수 있다. 플래시 메모리 내에 형성되는 두 가지 일반적 메모리 셀 구조는 NOR과 NAND를 포함한다. 통상적인 NOR 구조에서, 메모리 셀은 컬럼 방향으로 연장하는 드레인 확산부와 인접한 비트 라인 소스 사이에 연결되며, 제어 게이트는 셀의 로우를 따라 연장하는 워드 라인에 연결된다. 메모리 셀은 소스와 드레인 사이의 셀 채널 영역의 적어도 일부 위에 위치된 적어도 하나의 저장 소자를 포함한다. 따라서, 저장 소자 상의 전하의 프로그램 레벨은 셀의 동작 특성을 제어하며, 이는 그후 어드레스된 메모리 셀에 적절한 전압을 인가함으로써 판독될 수 있다.
통상적인 NAND 구조는 셀의 컬럼을 형성하도록 기준 전위와 개별 비트 라인 사이의 하나 이상의 선택 트랜지스터와 함께 연결되어 있는 16개 또는 32개 같은 둘 이상의 직렬 연결된 메모리 셀의 스트링을 사용한다. 워드 라인은 다수의 이들 컬럼 내의 셀을 가로질러 연장한다. 스트링 내의 나머지 셀을 온 상태로 전환시켜 스트링을 통해 흐르는 전류가 어드레스된 셀에 저장된 전하의 레벨에 의존하도록 함으로써 프로그램 동안 컬럼 내의 개별 셀이 판독 및 확인된다.
일부 플래시 메모리 관리 시스템은 자체 캐싱 구조를 사용하며, 이 자체 캐싱 구조에서는 호스트로부터 수신된 데이터가 먼저 캐시로서 지정된 플래시 메모리의 부분에 저장되고, 이후, 주 저장 영역으로서 지정된 플래시 메모리의 부분에 복사된다. 이 유형의 플래시 메모리 관리 시스템에서, 캐시 플러싱 작업을 스케줄링하는 시기에 대한 문제가 있다. 캐시 플러싱 작업시, 통상적으로 공용 논리 블록에 대응하는 데이터인 캐시 내의 데이터의 부분은 개시로부터 주 저장 영역으로 복사되고, 그후, 캐시로부터 제거되어 캐시 내에 새로운 입력 데이터를 위한 공간을 형성한다. 본 명세서에서 사용될 때, 용어 캐시 플러싱 및 캐시 소거는 동의어이다.
자체 캐싱 플래시 메모리 관리 시스템은 캐시 플러싱 작업의 스케줄링에 관하여, 그리고, 플러싱될 특정 데이터의 선택에 관하여 다양한 방침을 사용할 수 있다. 통상적으로, 스케쥴링 판정에 영향을 주는 인자는 캐시가 얼마나 채워져 있는지 및 서비스해야할 호스트로부터 도달하는 액세스 요청이 있는지 여부이다. 저장 시스템이 호스트 요청에 관하여 유휴 상태일 때, 플래시 메모리 관리 시스템은 통상적으로 캐시 내의 모든 데이터를 플러싱하고, 그래서, 캐시는 미래에 있을 수 있는 호스트의 폭발적 활동에 대해 더 양호하게 대비할 수 있다.
자체 캐시형 저장 장치의 기록 성능은 일반적으로 두 개의 수치들에 의해 특정된다. 첫 번째 수치는 빠른 기록 성능(burst write performance)이다. 빠른 기록 성능은 캐시 내에 충분한 공간이 있을 때 입력 데이터의 스트림을 저장 장치가 흡수할 수 있는 속도이다. 따라서, 빠른 기록 성능은 전적으로 캐시의 기록 성능에 의존하며, 주 저장 영역의 기록 성능에는 의존하지 않는다. 두 번째 수치는 연속 기록 성능(sustained write performance)이다. 연속 기록 성능은 캐시 크기보다 매우 큰 입력 데이터의 스트림을 저장 장치가 흡수할 수 있는 속도이다. 연속 기록 성능은 캐시 기록 성능 및 주 저장 영역 기록 성능 양자 모두의 함수이다. 주 저장 영역이 캐시보다 매우 느린 경우, 이때, 연속 기록 성능은 주로 주 저장 영역 기록 성능에 의해 결정된다.
저장 장치는 소정의 주어진 연속 기록 속도가 지정되어 있지만, 지정된 것보다 빠른 속도로 호스트가 저장 장치에 데이터를 전송하는 것을 막을 수는 없으며, 페이스를 유지할 수 없을 때 입력 스트림을 지연시키기 위해 "사용중(busy)" 상태를 발생시키고, 더 많은 입력이 수신될 수 있을 때 사용중 상태를 소거하는 것은 저장 장치에 의지한다. 호스트는 가능한 빠르게 저장 장치에 기록될 데이터를 전송하며, 저장 장치가 이를 강제로 유보 및 대기시킬 때까지 이를 지속한다.
이러한 작업 패턴에 따를 때, 통상적으로 관찰된 영향은 아래와 같다. 저장 장치의 캐시가 비우기를 시작하는 것을 가정하면, 호스트는 먼저 빠른 기록 성능과 같은 높은 성능을 보게 된다. 점진적으로, 캐시는 채워져가게 되지만, 캐시가 완전히 채워지거나 이에 매우 근접해지는 지점까지 성능은 여전히 빠른 기록 성능으로 존재한다. 이 지점에서, 저장 장치는 사용중 상태를 발생시키고 소정의 콘텐츠를 주 저장 영역으로 이동시킴으로써 캐시 내의 공간을 소거하기 시작하여야 한다. 통상적으로, 사용중 상태는 전체 논리 블록이 캐시로부터 복사되는 것에 대응하는 데이터 이후에만 소거될 것이다. 결과적으로, 호스트는 영점 수초 또는 심지어 주 저장부가 느리고 블록이 큰 경우에는 수 초가 될 수 있는 비교적 긴 사용중 기간을 겪게 된다. 비록, 호스트가 관찰하는 평균 성능이 여전히 광고된 연속 기록 성능 속도 제원 내에 있지만, 일부 호스트들은 이런 긴 사용중 기간을 용인하지 못할 수 있다. 이는 긴 사용중 기간이 사용중 기간 동안 최악의 경우 상황에서 발생될 수 있는 새로운 데이터 모두를 호스트 내의 더 큰 버퍼에 축적하는 것을 필요로하기 때문이다.
소정 캐시 구현에서, 문제는 더 심할 수 있으며, 그 이유는 캐시로부터 데이터를 소거하는 유효 속도가 캐시가 더 많이 채워질수록 감소할 수 있기 때문이다. 이는 호스트가 순차적이 아니라 임의적 주소에 데이터를 기록하고 캐시가 다수의 데이터 페이지를 포함하는 대형 블록들로 조직되어 있는 경우에 발생할 수 있다. 이런 장치는 사용중 기간이 더 길어질 뿐만 아니라, 캐시가 그 완충 상태에 근접해서 연속적으로 동작할 때 연속 기록 성능도 충족시킬 수 없다.
일부 경우에, 저장 장치가 사용중 상태를 나타낼 수 있는 시간에 하드 리미트(hard limit)가 존재할 수도 있으며, 이런 리미트에 대한 위배는 호스트의 트랜젝션 중단을 유발할 수 있다. 예로서, 플래시 메모리를 위한 시큐어디지털(SD) 표준은 SD-호환 카드에 250ms 이내에 호스트 기록 명령에 항상 응답할 것을 요구한다. 카드가 이 엄격한 시간 제한을 충족시키지 못하면, 호스트는 카드와의 통신 세션을 중단시키고 데이터 저장 작업을 중단할 수 있다. 따라서, 동작의 "상시 만충 캐시(always full cashe)" 모드에 진입하는 것은 이런 시간 제한을 위반할 위험을 크게 증가시킬 수 있다.
카드 저장 장치는 일반적으로 두 가지 조건 중 하나일 때 캐시로부터 데이터가 플러싱되는 데이터 플러싱 방침을 사용한다. 첫 번째 조건은 저장 장치가 유휴 상태일 때이며, 저장 장치는 호스트로부터 데이터를 수신하지 않거나, 다른 이유로 호스트에 의해 액세스되지 않을 때 유휴 상태로 정의된다. 두 번째 조건은 캐시 내에 더 이상 공간이 존재하지 않아 새로운 데이터를 수용할 수 있는 다른 방법이 존재하지 않을 때이다. 이런 캐시 플러싱 방침은 상술한 문제를 초래할 수 있다. 몇몇 캐시형 저장 장치는 플래시 작업들에 대한 명시적 제어를 호스트에게 제공하지만, 그러나, 호스트가 상술한 문제를 피하기 위해 캐시 작업에 대해 이런 제어를 활용하기는 어렵다. 호스트가 이를 수행하기 위해서는 저장 장치의 내부에 대한 상세한 지식과 이해가 필요하며, 이는 일반적 호스트는 갖고 있지 않은 정보이다.
상술한 문제점을 해결하기 위해, 호스트 기록 및 캐시 플러싱을 균형화하기 위한 방법 및 시스템이 개시된다.
본 발명의 제 1 양상에 따라서, 외부 호스트로부터의 기록 명령 내에서 수신된 유입 데이터가 먼저 캐시 저장부에 기록되고 이후 주 저장부로 이동되는, 저장 장치 내의 캐시 저장부로부터 주 저장부로의 데이터 이동을 관리하기 위한 방법이 개시된다. 이 방법은 저장 장치에서 호스트로부터 기록 명령을 수신하는 단계와, 캐시 저장부 내에 기록 명령과 함께 수신된 데이터를 저장하는 단계와, 기록 명령을 수신한 이후 저장 장치에서 사용중 상태를 발생시키는 단계를 포함한다. 이 방법은 사용중 상태를 유지하면서 캐시 저장부로부터 주 저장부로 데이터의 적어도 일부를 복사하는 단계를 포함하고, 복사가 개시될 때 호스트로부터의 후속 기록 명령시 데이터를 수신하기 위한 충분한 가용 용량이 캐시 내에 존재한다.
다른 양상에 따라서, 외부 호스트로부터의 기록 명령 내에 수신된 유입 데이터가 먼저 캐시 저장부에 저장되고 이후 주 저장부로 이동되는, 저장 장치 내의 캐시 저장부로부터 주 저장부로의 데이터의 이동을 관리하는 방법이 개시된다. 이 방법은 캐시 저장부의 가용 용량을 감지하는 단계와, 캐시 저장부의 감지된 가용 용량에 기초하여 호스트 기록 명령에 대한 캐시 소거 단계의 비를 결정하는 단계를 포함한다. 캐시 소거 단계는 결정된 비를 얻기 위해 호스트 기록 명령의 실행으로 인터리빙(interleave)되며, 캐시 소거 단계의 실행은 호스트 기록 명령을 실행하는데 충분한 시간을 초과하는 시간 동안 호스트 기록 명령에 의해 트리거되는 저장 장치에서 발생한 사용중 상태를 유지하는 단계와, 이 시간 동안 캐시 저장부로부터 주 저장부로 데이터를 복사하는 단계를 포함한다.
또 다른 양상에서, 저장 장치 내의 캐시 저장부로부터 주 저장부로의 데이터의 이동을 관리하는 방법은 캐시 저장부의 가용 용량을 감지하는 단계와, 그후, 감지된 가용 용량에 기초하여 호스트 명령에 대한 캐시 소거의 비를 결정하는 단계를 포함한다. 캐시 소거 단계는 호스트 명령에 대한 캐시 소거 단계의 결정된 비를 얻기 위해 호스트 명령의 실행으로 인터리빙된다. 캐시 소거 단계의 실행은 호스트 명령을 실행하는데 충분한 시간을 초과하는 시간 동안 호스트 명령에 의해 트리거되면서 저장 장치에서 발생한 사용중 상태를 유지하는 단계와, 이 시간 동안 캐시 저장부로부터 주 저장부로 데이터의 적어도 일부를 복사하는 단계를 포함한다.
본 발명의 다른 양상에서, 저장 장치는 호스트 명령과 관련된 데이터를 수신하도록 구성된 캐시 저장부와, 캐시 저장부와 통신하며 캐시 저장부로부터 전달된 데이터를 수신하도록 구성된 주 저장부와, 캐시 저장부로부터 주 저장부로의 데이터의 전달을 관리하도록 배열된 제어기를 포함한다. 제어기는 호스트 기록 명령을 수신한 이후 사용중 상태를 발생시키고, 그리고, 캐시 저장부에 호스트 기록 명령과 함께 수신된 데이터를 기록한 이후, 사용중 상태를 유지하면서 캐시 저장부로부터 주 저장부로 데이터의 적어도 일부를 복사하도록 구성되며, 복사가 개시될 때 호스트로부터의 후속 기록 명령시 데이터를 수신하기 위한 충분한 가용 용량이 캐시 저장부 내에 존재한다.
본 발명의 다른 양상에서, 호스트로부터 데이터를 수신하도록 구성된 캐시 저장부와, 캐시 저장부와 통신하며 캐시 저장부로부터 전달된 데이터를 수신하도록 구성된 주 저장부와, 캐시 저장부로부터 주 저장부로의 데이터의 전달을 관리하도록 배열된 제어기를 포함하는 저장 장치가 개시된다. 제어기는 캐시 저장부의 가용 용량이 호스트로부터의 데이터를 수신하기 위한 최소 용량보다 크고 원하는 임계 용량보다 작은 경우를 감지하도록 추가 구성된다. 또한, 제어기는 감지된 가용 용량에 기초하여 호스트 명령에 대한 캐시 소거 단계의 비를 결정하고, 그 후, 호스트 명령에 대한 캐시 소거 단계의 결정된 비를 얻기 위해 호스트 명령의 실행으로 캐시 소거 단계의 실행을 인터리빙하도록 구성되고, 캐시 소거 단계의 실행은 호스트 명령을 실행하는데 충분한 시간을 초과하는 시간 동안 호스트 명령에 의해 트리거되고 저장 장치에서 발생한 사용중 상태를 유지하는 단계와, 이 시간 동안 캐시 저장부로부터 주 저장부로 데이터를 복사하는 단계를 포함한다.
다른 양상에 따라서, 자체 캐싱 저장 장치에서 호스트 명령의 실행과 캐시 소거를 균형화하기 위한 프로세서 실행 가능 명령을 포함하는 프로세서 판독가능 매체가 개시된다. 프로세서 실행 가능 명령은 캐시 저장부의 가용 용량을 결정하는 동작, 감지된 가용 용량에 기초하여 호스트 명령에 대한 캐시 소거 단계의 비를 결정하는 동작 및 호스트 명령에 대한 캐시 소거 단계의 결정된 비를 얻기 위해 호스트 명령의 실행으로 캐시 소거 단계의 실행을 인터리빙하는 동작을 프로세서가 수행하게 하도록 구성된다. 캐시 소거 단계의 실행은 호스트 명령을 실행하는데 충분한 시간을 초과하는 시간 동안 호스트 명령에 의해 트리거되고 저장 장치에서 발생한 사용중 상태를 유지하는 단계와, 이 시간 동안 캐시 저장부로부터 주 저장부로 데이터의 적어도 일부를 복사하는 단계를 포함한다.
다른 양상에서, 저장 장치 내의 캐시 저장부로부터 주 저장부로의 데이터의 전달을 관리하도록 배열된 제어기를 포함하는 회로가 개시된다. 제어기는 캐시 저장부의 가용 용량을 감지하고, 캐시 저장부의 감지된 가용 용량에 기초하여 호스트 명령에 대한 캐시 소거 단계의 비를 결정하고, 호스트 명령에 대한 캐시 소거 단계의 결정된 비를 얻기 위해 호스트 명령의 실행으로 캐시 소거 단계의 실행을 인터리빙하도록 구성된다. 캐시 소거 단계의 실행은 호스트 명령을 실행하는데 충분한 시간을 초과하는 시간 동안 호스트 명령에 의해 트리거되고 저장 장치에서 발생한 사용중 상태를 유지하는 단계와, 이 시간 동안 캐시 저장부로부터 주 저장부로 데이터의 적어도 일부를 복사하는 단계를 포함한다.
본 발명의 또 다른 양상에 따라서, 회로는 저장 장치 내의 캐시 저장부로부터 주 저장부로의 데이터의 전달을 관리하도록 배열된 제어기를 포함한다. 제어기는 호스트 기록 명령의 수신 이후 사용중 상태를 발생시키고, 그리고, 호스트 기록 명령과 함께 수신된 데이터를 캐시 저장부에 기록한 이후, 사용중 상태를 유지하면서 캐시 저장부로부터 주 저장부로 데이터의 적어도 일부를 복사하도록 구성되며, 복사가 개시될 때, 호스트로부터의 후속 기록 명령시 데이터를 수신하기 위한 충분한 가용 용량이 캐시 저장부 내에 존재한다.
본 발명은, 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템을 제공하는 효과를 갖는다.
도 1은, 자체 캐싱 메모리 시스템의 블록도.
도 2는, 도 1의 시스템의 예시적 물리적 메모리 조직을 예시하는 도면.
도 3은, 도 2의 물리적 메모리의 일부의 확대도.
도 4는, 양호한 실시예에 따른 기록과 캐시 플러시의 균형화 메커니즘을 실행할지 여부를 결정하는 방법을 예시하는 흐름도.
도 5는, 양호한 실시예에 따른 호스트 기록과 캐시 플러시의 균형화 메커니즘의 일 실시예를 예시하는 흐름도.
본 발명의 양상을 구현하는데 사용하는데 적합한 플래시 메모리 시스템이 도 1에 도시되어 있다. 호스트 시스템(10)은 자체 캐싱 플래시 저장 장치(12)에 데이터를 저장하고, 그로부터 데이터를 검색한다. 저장 장치(12)는 호스트 내에 내장되거나, 기계적 및 전기적 커넥터를 통해 호스트(10)에 제거가능하게 연결되는 카드 또는 다른 제거가능한 드라이브의 형태로 존재할 수 있다. 호스트(10)는 퍼스널 컴퓨터 같은 다수의 데이터 생성 장치 중 임의의 것일 수 있다. 호스트(10)는 통신 채널(14)을 거쳐 저장 장치와 통신한다.
저장 장치(12)는 캐시 저장부(16) 및 주 저장부(18)로서 배열된 비휘발성 메모리 셀을 포함한다. 캐시 저장부(16) 및 주 저장부(18)는 다른 모드에서 동작하도록 구성된 동일 유형의 플래시 메모리 셀이나, 다른 유형의 플래시 메모리 셀로 구성될 수 있다. 예로서, SLC 플래시의 더 높은 기록 속도와 MLC 플래시의 더 높은 밀도의 장점을 취하도록 캐시 저장부(16)는 단일 레벨 셀(SLC) 형의 플래시 구조로 구성될 수 있고, 주 저장부(18)는 다중 레벨 셀(MLC)형 플래시 메모리 구조로 구성될 수 있다. 캐시 저장부(16) 및 주 저장부(18)를 위해 플래시 메모리 유형의 다양한 조합들도 고려된다. 또한, 저장 장치(12)는 프로세서(20)와, 프로세서(20)를 동작시키기 위한 명령(22)과, 논리 블록 대 물리 블록 트랜슬레이션 테이블(23)을 포함할 수 있는 제어기(19)를 포함한다. 본 명세서에 설명된 캐시 플러싱을 이행하도록 구성될 수 있는 적절한 자체 캐싱 플래시 메모리 구조의 예는, 리(Lee) 등의 미국 특허 제 5,930,167호와 래서(Lasser) 등의 미국 출원 제 11/318,906호에 개시되어 있으며, 이들 양자 모두는 본 명세서에 그 전문이 참조로 포함되어 있다.
상술한 캐시 저장부(16) 및 주 저장부(18)는 메모리 셀의 블록으로 배열된 비휘발성 플래시 메모리일 수 있다. 메모리 셀의 블록은 삭제 단위, 즉, 물리적으로 함께 삭제할 수 있는 메모리 셀의 최소 수이다. 그러나, 병렬성 증가를 위해, 블록은 더 큰 메타블록 유닛으로 동작할 수 있다. 메모리 셀의 각 평면으로부터의 하나의 블록이 논리적으로 함께 링크되어 메타블록을 형성할 수 있다. 캐시 저장부(16)가 SLC 구조이고, 주 저장부(18)가 MLC 구조인 저장 장치에서, 메타블록 배열은 유용하며, 그 이유는 하나의 주 저장 블록과 동일한 양의 데이터를 저장하기 위해 다수의 캐시 블록이 필요할 수 있기 때문이다. 도 2를 참조하면, 대표적 플래시 메모리 셀 어레이의 개념적 예시도가 도시되어 있다. 4개 평면 또는 서브 어레이(30, 32, 34, 36) 메모리 셀은 하나의 집적 메모리 셀 상에, 두 개의 칩(각 칩 상에 두 개의 평면) 또는 네 개의 별개의 칩 상에 존재할 수 있다. 특정 배열은 이하의 설명에 중요하지 않으며, 다른 수의 평면이 시스템에 존재할 수 있다. 평면은 각각의 평면(30, 32, 34, 36) 내에 위치된 블록(38, 40, 42, 44) 같은 직사각형에 의해 도 2에 도시된 메모리셀의 블록으로 독립적으로 분할된다. 각 평면 내에 수 더즌(dozen) 또는 수 백개의 블록들이 존재할 수 있다. 블록들은 서로 논리적으로 링크되어 단일 유닛으로서 삭제될 수 있는 메타블록을 형성한다. 예로서, 블록(38, 40, 42, 44)은 제 1 메타블록(46)을 형성할 수 있다. 메타블록을 형성하기 위해 사용되는 블록은 블록(50, 52, 54, 56)으로 구성된 제 2 메타블록(48)에 도시된 바와 같이, 그 각각의 평면 내의 동일한 상대적 위치에 규제될 필요는 없다.
도 3에 예시된 바와 같이, 순차적으로, 개별 블록은 동작 목적을 위해 메모리 셀의 페이지로 분할된다. 예로서, 블록(38, 40, 42, 44) 각각의 메모리 셀은 각각 8개 페이지(P0-P7)로 분할된다. 대안적으로, 각 블록 내에 16, 32 또는 그 이상의 메모리 셀의 페이지가 존재할 수 있다. 페이지는 블록 내에서 데이터의 프로그래밍(기록) 및 판독 단위이며, 한번에 프로그램(기록) 또는 판독되는 데이터의 최소량을 포함한다. 메타페이지(58)는 4개 블록(38, 40, 42, 44) 각각을 위한 하나의 물리적 페이지로 형성되는 것으로 도 3에 예시되어 있다. 메타페이지(58)는 4개 블록(38, 40, 42, 44) 각각의 페이지(P2)를 포함하지만, 메타페이지의 페이지는 반드시 각 블록 내의 동일한 상대적 위치를 가질 필요는 없다. 메타페이지는 프로그래밍의 최대 단위이다. 도 2 및 도 3에 개시된 블록은 본 명세서에서 물리 블록이라 지칭되며, 그 이유는 이들이 상술한 바와 같이 물리적 메모리 셀의 그룹에 관련되기 때문이다. 본 명세서에서 사용될 때, 논리 블록은 물리 블록과 동일한 크기를 갖도록 정의된 어드레스 공간의 가상 단위이다. 각 논리 블록은 호스트(10)로부터 수신된 데이터와 관련된 논리 블록 어드레스(LBA)의 범위를 포함한다. LBA는 그후 데이터가 물리적으로 저장되는 저장 장치(12) 내의 하나 이상의 물리 블록에 맵핑된다. 동작시, 저장 장치(12)의 캐시 저장부(16)는 호스트 기록 명령과 관련된 호스트(10)로부터 데이터를 수신한다. 캐시 저장부에서 수신된 데이터는 호스트에 의한 어드레스의 논리 블록 내에 어드레스되며, 캐시 저장부(16) 내에 데이터가 저장될 때, 주어진 어드레스의 논리 블록과 관련된 데이터는 캐시 저장부(16) 내의 단일 물리 블록 내에 저장되거나, 캐시 저장부(16) 내의 다수의 서로 다른 물리 블록에 걸쳐 분산될 수 있다. 프로세서(20)는 논리 대 물리 맵핑 테이블(23)에서 물리적 어드레스에 대한 논리적 어드레스의 맵핑을 추적한다. 프로세서(20)는 본 명세서에 설명된 호스트 기록과 캐시 플러시 균형화 메커니즘이 명령 데이터베이스(22) 내의 프로세서 실행 가능 명령에 기초하여 개시될 시기를 결정하기 위해 현재 캐시 저장부 용량을 관찰한다. 현재 캐시 용량 및 균형화 알고리즘에 기초하여 캐시 저장부 플러싱이 허가될 때, 프로세서는 특정 논리 블록에 대응하는 캐시 저장부(16)의 하나 이상의 물리 블록 내에 존재하는 데이터의 부분이 주 저장부(18)로 복사될 것인지를 결정하기 위해 데이터의 논리 블록들을 관찰한다. 본 명세서에 개시된 호스트 기록과 캐시 플러시의 균형화 알고리즘을 포함하도록 변형될 수 있는 플래시 관리 시스템의 예는 그 전문이 본 명세서에 참조로 포함되어 있는 밴(Ban)의 미국 특허 제 5,937,425호 및 래서(Lasser)의 미국 특허 제 6,678,785호에서 발견할 수 있다.
캐시 저장부(16)가 너무 가득차지 않도록 유지하기 위해 할당된 자원과 호스트를 지원하도록 제공된 저장 장치(12)의 자원 사이의 균형화를 위해, 저장 장치(12)는 의도적으로, 실제 제공할 수 있는 것보다 낮은 성능을 호스트(10)에 제공하는 호스트 기록과 캐시 플러시의 균형화 알고리즘을 이행하도록 구성된다. 저장 장치는 플러싱 작업이 불필요한 경우에도 캐시 저장부를 플러싱하기 위해 "강탈한(stolen)" 시간을 사용한다. 비록, 본 명세서에 제공된 예들이 캐시 플러싱과 호스트 기록 명령을 균형화하는 것에 초점을 두지만, 호스트 판독 명령 또는 삭제 명령 같은 다른 호스트 명령도 캐시 저장 평형을 얻기 위해 캐시 소거 단계로 인터리빙될 수 있다.
도 4에 예시된 바와 같이, 캐시 저장부(16)가 비교적 비어있을 때, 저장 장치(12)는 호스트(10)가 최대 지원을 받고, 최대 성능(빠른 기록 성능)을 보도록 공지된 캐시 플러싱 방침을 사용할 수 있다. 호스트(10)가 장치를 액세스하지 않고 저장 장치가 달리 유휴 상태가 되지 않으면, 어떠한 데이터도 캐시 저장부(16)로부터 플러싱되지 않는다(60, 62에서). 그러나, 캐시 저장부(16)가 비교적 가득차 있는 경우, 저장 장치(12)는 호스트(10) 서빙과 캐시 저장부(12) 서빙 사이에서 시간을 할당하는 균형화 메커니즘을 작동시킨다(60, 64에서). 비제한적인 예로서, 캐시는 절반 채워진 상태 미만일 때 비교적 비어져 있는 것으로 고려되고, 절반 채워진 상태 이상일 때 비교적 가득차 있는 것으로 고려된다. 또한, 균형화 메커니즘을 작동시키기 위한 트리거 지점을 설정하기 위해, 다른 임계값이 사용될 수도 있다.
호스트 기록과 캐시 플러시의 균형화 메커니즘의 일 구현예의 더 상세한 설명이 도 5에 도시되어 있다. 캐시 저장부 내의 가용 용량이 소정 용량 미만이면(즉, 캐시 저장부(16)가 상술한 바와 같이 비교적 가득차 있으면), 프로세서(20)는 다수의 캐시 플러싱 단계를 각각의 두 개의 연속적 호스트 요청 사이에 삽입할 것을 결정한다(68, 70에서). 제한된 환경에서, 가용 용량이 캐시 소거 단계를 먼저 수행하지 않고 저장 장치(12)가 동작할 수 있게 하는 최소 임계값보다 낮은 정도로 캐시 저장부(16)가 너무 많이 채워져 있는 경우, 캐시 플러싱 및 호스트 기록 단계의 균형화는 지연될 수 있다(66에서). 한 가지 비제한적 예로서, 특정 저장 장치를 위한 최소 임계치가 1% 가용 용량인 경우, 캐시 내의 현재 가용 용량이 이 임계값 미만이면, 저장 장치는 가용 용량이 적어도 이 최소 임계값에 도달하도록 캐시 소거 단계가 실행될 때까지 호스트 기록 및 캐시 플러싱 단계의 어떠한 균형화도 연기할 수 있다.
일 실시예에서, 캐시 플러싱 단계의 수는 캐시 저장부(16) 내의 가용 용량의 서로 다른 트리거 레벨들에 대해 서로 다른 비를 연관하는 표에 저장된 호스트 명령에 대한 캐시 소거 단계 실행의 비를 참조하는 프로세서(20)에 의해 결정될 수 있다. 그후, 캐시 저장부(16) 내의 감지된 가용 용량에 대응하는 비가 프로세서(20)에 의해 사용되어 상기 비에 대응하는 연속적 호스트 명령 사이에 다수의 캐시 플러싱 단계가 인터리빙되도록 스케줄링한다. 예로서, 2의 비는 프로세서(20)가 각 호스트 명령에 후속하여 두 개의 캐시 플러싱 단계를 스케줄링한다. 호스트 명령과 캐시 플러싱 실행 사이의 균형화의 더 양호한 해상도 및 미세 조율을 가능하게 하도록, 이 비는 비정수(non-integer)를 포함한다. 일 예로서, 가용 캐시 저장부의 특정 트리거 레벨을 위한 비는 3.5일 수 있다. 이때, 프로세서(20)는 호스트 명령에 3개 캐시 플러싱 단계가 이어지고, 다음 호스트 명령에 4개 캐시 플러싱 단계가 이어지는 반복 패턴을 스케줄링하여 3.5의 유효 비를 얻는다. 단지 소량의 캐시 플러싱만이 필요한 경우, 비는 1 미만일 수 있으며, 이 경우, 캐시 소거 단계가 스케줄링되기 이전에 연속적 호스트 명령들이 수행될 수 있다.
대안적 실시예에서, 캐시 저장부의 감지된 가용 용량에 추가하여 하나 이상의 다른 파라미터가 호스트 기록 명령에 대한 캐시 플러싱 단계의 비를 결정하기 위한 요인이 될 수 있다. 저장 장치(12)의 할당된 힙 메모리(heap memory)의 현재량 같은 저장 장치 로드 파라미터가 사용될 수 있다. 이런 부가적 파라미터는 다음 비가 선택되는 트리거 지점을 변경하기 위한 비의 결정의 요인이 될 수 있다. 사용될 수 있는 다른 저장 장치 로드 파라미터는 저장 장치(12)에서 이행되는 특정 플래시 관리 알고리즘에 특정할 수 있다. 이런 다른 파라미터는 플래시 관리 알고리즘에 의해 사용되는 특정 목록의 길이, 특정 해시 테이블 내의 사용된 공간의 양 등을 포함할 수 있다.
도 5를 다시 참조하면, 호스트 명령에 대한 캐시 플러싱 단계의 수를 결정 및 스케줄링한 이후, 프로세서는 호스트 명령의 수신시 저장 장치를 위한 사용중 상태를 설정함으로써 스케줄을 이행할 수 있다(72에서). 호스트 명령이 실행된 이후, 프로세서는 호스트 명령 이후 저장 장치(12)에 의해 설정되는 사용중 상태의 기간을 연장할 것이다. 사용중 상태 표시는 저장 장치(12)가 설정하고 호스트(10)가 인지하는, 사용중 상태가 소거될 때까지 호스트(10)가 데이터를 전송하는 것을 방지하고, 통상적으로, 또한, 대부분의 명령을 호스트가 전송하는 것을 방지하는 표준 상태이다. 저장 장치(12)는 일반적으로 호스트 명령을 수신한 이후 사용중 상태를 설정하고, 명령을 실행하기 위해 필요한 단계를 완료하기 위해 저장 장치(12)가 소요하는 시간 동안 사용중 상태를 유지한다. 균형화 메커니즘을 이행할 때, 프로세서는 특정 명령을 실행하기 위해 필요한 시간을 초과하여 스케줄링된 캐시 플러싱 단계의 수가 실행될 때까지 저장 장치가 사용중 상태를 유지하는 시간을 연장시킨다(74에서). 장치를 위한 사용중 상태의 특정 구현예는 그 장치를 위한 프로토콜에 의존할 것이다. 예로서, 저장 장치가 NAND 장치이거나 NAND 장치 프로토콜을 에뮬레이팅하는 경우, 사용중 상태는 사용중 또는 사용 준비 상태라는 것을 호스트(10)에게 알리는 저장 장치(12)에 의해 제어된 별개의 신호일 수 있다. SD 프로토콜 장치에서, 저장 장치는 데이터 전송에 사용되는 라인 중 하나를 제어함으로써 사용중이라는 것을 나타낸다. 호스트(10)는 기록될 데이터의 차순위 배치(batch)를 전송할 수 있는지를 결정하기 위해 적시에 소정 지점에서 그 라인을 샘플링한다. 다른 프로토콜은 여기에 설명된 사용중 상태를 제공하기 위해 다른 체계를 사용할 수 있으며, 임의의 다수의 유형의 사용중 상태 표시가 본 명세서에 개시된 방법 및 시스템에 사용될 수 있다.
각 캐시 플러싱 단계는 어드레스의 논리 블록을 선택하고, 특정 논리 블록과 관련된 캐시 저장부(16)로부터의 데이터의 적어도 하나의 페이지를 주 저장부(18)로 복사하는 것으로 이루어질 수 있다. 비록, 캐시 플러싱 단계가 또한 선택된 논리 블록과 관련된 데이터의 모든 페이지(즉, 전체 논리 블록)를 복사하는 것으로 구성될 수 있지만, 선택된 논리 블록과 관련된 데이터 전체보다 작은 양인 페이지 그룹 또는 단일 페이지가 더 통상적으로 사용될 수 있다. 별개의 페이지 복사 작업의 순서열로 복사가 이루어지는 시스템의 일 예는 본 명세서에 전문이 참조로 포함되어 있는 발명의 명칭이 "플래시 메모리 시스템에서의 중단가능한 캐시 플러싱"인 2007년 10월 23일자로 출원된 계류중인 미국 출원 제 11/876,893호에서 찾을 수 있다. 사용중 상태는 결정된 수의 캐시 플러싱 단계가 완료되는 동안 유지되고, 그후, 사용중 상태가 소거되어 호스트가 다른 명령을 전송할 수 있게 한다. 주 저장부로 복사될 그 대응 데이터를 갖는 특정 논리 블록의 선택은 임의의 다수의 기준들에 기초할 수 있다. 예로서, 선택은 논리 블록이 캐시 저장부(16)의 물리 블록 내의 대부분의 데이터를 갖는지 또는 논리 블록이 캐시 저장부(16) 내의 가장 큰 수의 물리 블록 내의 데이터를 갖는지에 기초할 수 있다.
캐시 저장부(16) 내의 가용 용량이 최소 용량을 초과하고, 소정 용량 미만이며, 호스트 기록 요청에 대한 스케줄링된 캐시 소거 단계의 결정된 비가 N1인 경우를 가정하면, 호스트가 인지하는 평균 성능은 W1(초당 메가바이트 단위로 측정됨)일 것이다. 캐시 소거 단계를 실행하는 시간 동안, 저장 장치(12)는 사용중 상태 표시를 유지한다. 구체적으로, 이는 호스트가 기록 요청을 전송한 이후 사용중 상태를 시작하지만, 또한 이를 삽입된 캐시 소거 단계를 위해 필요한 시간 동안 유지한다. 사용중 상태를 유지하는 추가된 시간은 호스트(10)가 느려지게 하며, 저장 장치(12)로 전송되는 데이터의 속도를 감소시킨다. 그러나, 이 단계에서, 감소된 속도는 여전히 연속 기록 성능 등급을 초과할 수 있다는 것을 주의하여야 한다.
균형화 메커니즘을 개시한 이후, 저장 장치(12)의 프로세서(20)는 캐시 상태의 감시를 지속한다. 호스트 명령에 대한 캐시 소거 단계의 현재 비가 캐시 저장부(16)가 더 이상 충전되는 것을 중단시키는 것으로 판명될 수 있지만, 때때로 이는 계속 충전될 수도 있다. 이러한 경우, 제 2 트리거 지점이 도달될 것이다. 예로서, 캐시가 50% 채워지는 초기 상태가 균형화 메커니즘을 트리거하였다면, 캐시가 60% 채워진 상태는 제 2 트리거 지점이 될 수 있다. 저장 장치가 이러한 지점을 감지하는 경우, 더 가혹한 방침이 채택된다. 각 호스트 요청 당 N1 캐시 소거 단계의 비를 스케줄링하는 대신, N2(N2>N1) 단계의 비가 스케줄링될 것이다. 호스트에 의해 관찰되는 유효 연속 기록 성능은 W2(W2<W1)로 떨어질 것이다. 이 더 감소된 성능 모드는 캐시가 충전되는 것을 중단시키는 평형 상태로 시스템을 균형화하는데 충분할 수 있거나, 이는 여전히 충분하지 못할 수 있으며, 이 경우, 대응적으로 추가 감소된 호스트 성능값을 갖는 추가적인 이런 트리거링 지점들이 작동된다. 결국, 캐시가 더 이상 추가 충전되지 않으면서, 호스트가 동일한 평균 속도로 서비스를 받는 평형 상태가 도달된다.
호스트 기록과 캐시 플러시의 균형화의 조잡한 형태를 시도하기 위해 단일 트리거 지점을 사용하는 것이 가능하지만, 다수의 트리거 지점을 사용하는 것이 바람직하며, 그 이유는 저장 장치의 실수명 성능은 호스트(10)의 액세스 패턴에 의존하기 때문이다. 통상적으로, 저장 장치의 광고된 연속 기록 성능은 호스트가 순차적 어드레스에 데이터를 기록하는 경우에 정확하다. 호스트(10)가 데이터를 임의적 어드레스에 기록할 때, 연속 기록 성능은 낮아지는 것이 일반적이다. 임의적 액세스 패턴이 심하면 심할수록, 유효 성능은 더 낮아진다. 이 효과는 임의적 어드레스 패턴을 다룰 때의 플래시 관리 알고리즘의 상대적 비효율성에 기인한다. 이 때문에, 캐시를 평형 상태가 되게 하는 적절한 균형화 비는 예측 불가할 수 있으며, 일반적으로 평형에 도달할 때까지 호스트 서비스 성능을 연속적으로 감소시키기 위해 트리거 조건의 순서열이 필요하다. 또한, 임의적 어드레스 패턴하에서, 평형점은 광고된 연속 기록 성능보다 매우 낮은 평균 연속 기록 성능(호스트에 의해 관찰되는)을 초래할 수 있다는 것도 유의하여야 한다.
도 5를 다시 한번 참조하면, 호스트가 새로운 데이터 발생이 느려지기 시작할 때 반대 프로세스가 이루어진다. 캐시 저장부(16)가 비워짐에 따라, 캐시의 가용 용량이 더 작아질 때 프로세서(20)가 호스트 명령에 대한 캐시 소거 단계의 비의 증가를 적용하게 하였던 것과 동일한 트리거 레벨은 캐시가 비워지고 가용 용량이 증가하여 더 소수의 자원이 캐시 소거 프로세스에 사용됨에 따라 반대 순서로 적용될 수 있다. 대안적 실시예에서, 캐시가 충전될 때 점증적 증가 비를 적용하기 위한 트리거는 캐시가 비워질 때 동일 또는 다른 비를 적용하기 위한 트리거와 다를 수 있다. 예로서, 캐시가 채워질 때 제 1 비를 제 2 비로 변경하기 위한 트리거는 캐시가 60% 채워질 때일 수 있지만, 캐시가 비워질 때 제 2 비로부터 제 1 비로 역방향 전환하기 위한 트리거 지점은 캐시 저장부가 55% 채워질 때로 설정될 수 있다. 이 방식으로, 트리거링 조건에 히스테리시스형 효과가 제공되며, 두 스케줄링 모드 사이의 높은 빈도수의 토글링이 피해질 수 있다. 결국, 캐시 저장부(16)는 예로서 50% 충전 상태 미만의 비교적 비워진 상태에 도달할 것이고, 저장 장치(12)는 호스트 요청에 전체적 우선권(빠른 기록 성능)을 제공하는 초기 모드로 복귀할 것이다.
캐시 평형을 유지하고 연장된 타임아웃 기간의 경우를 피하도록 데이터 기록 성능의 양을 희생시키는 호스트 기록 작업 및 캐시 플러시 균형화 메커니즘을 이행하기 위한 방법 및 시스템이 설명되었다. 이 방법은 자체 캐싱 저장 장치의 캐시 저장 부분의 가용 용량을 결정하고, 가용 용량이 소정 임계값 미만인 경우 호스트 기록 명령에 대한 캐시 플러싱 단계의 비를 결정하고, 이 비를 얻기 위해 캐시 플러싱 단계를 호스트 명령으로 인터리빙한다. 캐시 플러싱 단계는 호스트 기록 명령을 실행한 이후 저장 장치를 사용중 상태로 유지하고, 이 추가적 시간을 캐시 저장부로부터 주 저장부로 데이터의 일부를 복사하는데 사용함으로써 실행될 수 있다. 비록, 호스트에 제공되는 성능이 이 방법에 의해 감소되지만, 이는 여전히 매우 높을 수 있으며, 가능하게는 광고된 연속 기록 속도보다 매우 높을 수 있다.

Claims (29)

  1. 외부 호스트로부터의 기록 명령에 수신된 유입 데이터가 먼저 캐시 저장부(cache storage)에 저장되고 이후 주 저장부(main storage)로 이동하는 저장 장치에서 캐시 저장부로부터 주 저장부로 데이터의 이동을 관리하는 방법에 있어서,
    저장 장치에서 상기 호스트로부터 기록 명령을 수신하는 단계와,
    기록 명령과 함께 수신된 데이터를 상기 캐시 저장부에 저장하는 단계와,
    상기 기록 명령 수신 후 상기 저장 장치에서 사용중 상태(busy status)를 발생시키는 단계와,
    상기 캐시 저장부에 상기 데이터를 저장한 후, 상기 사용중 상태를 유지하면서 상기 캐시 저장부로부터 상기 주 저장부로 데이터의 적어도 일부를 복사하는 단계로서, 상기 복사 시작시 상기 호스트로부터 후속 기록 명령에 데이터를 수신하기 위해 상기 캐시에 충분한 가용 용량이 존재하는, 상기 복사 단계를
    포함하는, 데이터의 이동 관리 방법.
  2. 제 1항에 있어서, 상기 캐시 저장부로부터 데이터의 적어도 일부를 복사하는 단계는, 상기 캐시 저장부의 가용 용량이, 요구되는 임계값 미만인 경우, 상기 캐시 저장부로부터 데이터의 적어도 일부를 복사하는 단계를 포함하는, 데이터의 이동 관리 방법.
  3. 제 2항에 있어서, 상기 요구되는 임계값은 상기 캐시 저장부에서 50% 가용 용량인, 데이터의 이동 관리 방법.
  4. 제 1항에 있어서, 상기 캐시 저장부로부터 상기 데이터의 적어도 일부를 복사하는 단계는 선택 가능한 수의 캐시 소거 단계를 실행하는 단계를 포함하고, 각 캐시 소거 단계는 상기 캐시 저장부의 적어도 하나의 페이지로부터 상기 주 저장부로 데이터를 복사하는, 데이터의 이동 관리 방법.
  5. 제 4항에 있어서, 상기 캐시 저장부의 가용 용량에 적어도 부분적으로 기초하여 선택 가능한 수를 결정하는 단계를 더 포함하는, 데이터의 이동 관리 방법.
  6. 외부 호스트로부터의 유입 데이터가 먼저 캐시 저장부에 저장되고 이후 주 저장부로 이동하는 저장 장치에서 캐시 저장부로부터 주 저장부로 데이터의 이동을 관리하는 방법에 있어서,
    캐시 저장부의 가용 용량을 감지하는 단계와,
    감지된 상기 가용 용량에 기초하여 호스트 명령에 대한 캐시 소거 단계의 비(ratio)를 결정하는 단계와,
    호스트에 대한 캐시 소거 단계의 결정된 비를 얻기 위해 호스트 명령의 실행으로 캐시 소거 단계의 실행을 인터리빙(interleaving)하는 단계로서, 캐시 소거 단계의 실행은 호스트 명령을 실행하는데 충분한 시간을 초과하는 시간 동안 저장 장치에서 발생되고 호스트 명령에 의해 트리거되는 사용중 상태(busy status)를 유지하는 단계와, 상기 시간 동안 상기 캐시 저장부로부터 상기 주 저장부로 데이터의 적어도 일부를 복사하는 단계를 포함하는, 상기 인터리빙 단계를
    포함하는, 데이터의 이동 관리 방법.
  7. 제 6항에 있어서, 상기 비는 비-정수 비를 포함하는, 데이터의 이동 관리 방법.
  8. 제 6항에 있어서, 상기 호스트 명령은 호스트 기록 명령을 포함하는, 데이터의 이동 관리 방법.
  9. 제 6항에 있어서, 상기 호스트 명령은 호스트 판독 명령을 포함하는, 데이터의 이동 관리 방법.
  10. 제 6항에 있어서, 상기 호스트 명령은 호스트 삭제 명령을 포함하는, 데이터 이동 관리 방법.
  11. 제 6항에 있어서, 상기 호스트 명령에 대한 캐시 소거 단계의 비를 결정하는 단계는, 감지된 상기 가용 용량 외에 적어도 하나의 추가 파라미터에 기초하는, 데이터의 이동 관리 방법.
  12. 제 11항에 있어서, 적어도 하나의 추가 파라미터는 저장 장치 로드 파라미터(storage device load parameter)를 포함하는, 데이터의 이동 관리 방법.
  13. 제 12항에 있어서, 상기 저장 장치 로드 파라미터는 할당된 힙 메모리(heap memory)의 현재량을 포함하는, 데이터의 이동 관리 방법.
  14. 제 6항에 있어서, 감지된 상기 가용 용량이 요구되는 임계값 용량 미만인 경우, 호스트 명령에 대한 캐시 소거 단계의 비를 결정하는 단계와, 호스트 명령의 실행으로 캐시 소거 단계의 실행을 인터리빙하는 단계를 더 포함하는, 데이터의 이동 관리 방법.
  15. 제 6항에 있어서, 감지된 상기 가용 용량이 호스트로부터 데이터를 수신하기 위한 최소 용량보다 크고 요구되는 임계값 용량보다 작은 경우, 호스트 명령에 대한 캐시 소거 단계의 비를 결정하는 단계와, 호스트 명령의 실행으로 캐시 소거 단계의 실행을 인터리빙하는 단계를 더 포함하는, 데이터의 이동 관리 방법.
  16. 저장 장치에 있어서,
    호스트 기록 명령과 관련된 데이터를 수신하도록 구성된 캐시 저장부와,
    캐시 저장부와 통신하고 상기 캐시 저장부로부터 전달된 데이터를 수신하도록 구성된 주 저장부와,
    상기 캐시 저장부로부터 상기 주 저장부로 데이터의 전달을 관리하도록 배열된 제어기를
    포함하고,
    상기 제어기는,
    호스트 기록 명령을 수신한 후 사용중 상태를 발생시키고, 호스트 기록 명령과 함께 수신된 데이터를 상기 캐시 저장부에 기록한 다음, 상기 사용중 상태를 유지하면서 상기 캐시 저장부로부터 상기 주 저장부로 데이터의 적어도 일부를 복사하도록 구성되며,
    복사 시작시 상기 호스트로부터 후속하는 기록 명령에 데이터를 수신하기 위한 캐시 저장부에 충분한 가용 용량이 존재하는, 저장 장치.
  17. 제 16항에 있어서, 상기 제어기는 상기 캐시 저장부의 가용 용량이 요구되는 임계값 미만이면, 상기 호스트 기록 명령과 함께 수신된 데이터를 기록한 후 상기 사용중 상태를 유지하도록 구성되는, 저장 장치.
  18. 제 17항에 있어서, 상기 요구되는 임계값은 상기 캐시 저장부에서 50% 가용 용량인, 저장 장치.
  19. 제 16항에 있어서, 상기 캐시 저장부는 단일 레벨 셀 비휘발성 메모리를 포함하고, 상기 주 저장부는 다중 레벨 셀 비휘발성 메모리를 포함하는, 저장 장치.
  20. 저장 장치에 있어서,
    호스트로부터 데이터를 수신하도록 구성된 캐시 저장부와,
    상기 캐시 저장부와 통신하고, 상기 캐시 저장부로부터 전달된 데이터를 수신하도록 구성된 주 저장부와,
    상기 캐시 저장부로부터 상기 주 저장부로 데이터의 전달을 관리하도록 배열된 제어기를
    포함하고,
    상기 제어기는,
    상기 캐시 저장부의 가용 용량을 감지하고,
    상기 캐시 저장부의 감지된 상기 가용 용량에 기초하여 호스트 명령에 대한 캐시 소거 단계의 비를 결정하고,
    호스트 명령에 대한 캐시 소거 단계의 결정된 비를 얻기 위해 호스트 명령의 실행으로 캐시 소거 단계의 실행을 인터리빙하도록 구성되고,
    캐시 소거 단계의 실행은, 호스트 명령을 실행하는데 충분한 시간을 초과한 시간 동안 저장 장치에서 발생하고 호스트 명령에 의해 트리거되는 사용중 상태를 유지하는 단계와, 상기 시간 동안 상기 캐시 저장부로부터 상기 주 저장부로 데이터를 복사하는 단계를 포함하는, 저장 장치.
  21. 제 20항에 있어서, 상기 제어기는 감지된 상기 가용 용량 외에 적어도 하나의 추가 파라미터에 기초하여 호스트 명령에 대한 캐시 소거 단계의 비를 결정하도록 구성되는, 저장 장치.
  22. 제 21항에 있어서, 적어도 하나의 추가 파라미터는 저장 장치 로드 파라미터를 포함하는, 저장 장치.
  23. 제 22항에 있어서, 상기 저장 장치 로드 파라미터는 할당된 힙 메모리의 현재량을 포함하는, 저장 장치.
  24. 제 20항에 있어서, 상기 호스트 명령은 호스트 기록 명령을 포함하고, 상기 호스트 기록 명령 중 하나를 실행하는데 충분한 시간은 상기 호스트 기록 명령과 관련된 데이터를 상기 캐시 메모리에 기록하기 위한 시간을 포함하는, 저장 장치.
  25. 제 20항에 있어서, 상기 제어기는 선택 가능한 수의 캐시 소거 단계를 실행하도록 구성되고, 각 캐시 소거 단계는 상기 캐시 저장부의 적어도 하나의 페이지로부터 주 저장부로 데이터를 복사하는 단계를 포함하는, 저장 장치.
  26. 제 25항에 있어서, 상기 제어기는 상기 캐시 저장부의 가용 용량에 적어도 부분적으로 기초하여 선택 가능한 수를 결정하도록 추가 구성되는, 저장 장치.
  27. 제 20항에 있어서, 상기 제어기는, 상기 감지된 가용 용량이, 요구되는 임계값 용량 미만인 경우, 호스트 명령에 대한 캐시 소거 단계의 비를 결정하고 호스트 명령의 실행으로 캐시 소거 단계의 실행을 인터리빙하도록 추가 구성되는, 저장 장치.
  28. 제 20항에 있어서, 상기 제어기는, 감지된 상기 가용 용량이 호스트로부터 데이터를 수신하기 위한 최소 용량보다 크고 요구되는 임계값 용량보다 작은 경우, 호스트 명령에 대한 캐시 소거 단계의 비를 결정하고 호스트 명령의 실행으로 캐시 소거 단계의 실행을 인터리빙하도록 추가 구성되는, 저장 장치.
  29. 회로에 있어서,
    저장 장치에서 캐시 저장부로부터 주 저장부로 데이터의 전달을 관리하도록 배열된 제어기를
    포함하고,
    상기 제어기는,
    호스트 기록 명령을 수신한 후 사용중 상태를 발생시키고,
    호스트 기록 명령과 함께 수신된 데이터를 상기 캐시 저장부에 기록한 다음, 사용중 상태를 유지하면서 상기 캐시 저장부로부터 상기 주 저장부로 데이터의 적어도 일부를 복사하도록 구성되고, 복사 시작시 상기 호스트로부터 후속 기록 명령에 데이터를 수신하기 위해 충분한 가용 용량이 상기 캐시 저장부에 존재하는, 회로.
KR1020107014261A 2007-12-31 2008-12-10 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템 KR101563875B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/967,369 US7865658B2 (en) 2007-12-31 2007-12-31 Method and system for balancing host write operations and cache flushing
US11/967,369 2007-12-31

Publications (2)

Publication Number Publication Date
KR20100107456A true KR20100107456A (ko) 2010-10-05
KR101563875B1 KR101563875B1 (ko) 2015-10-28

Family

ID=40800012

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107014261A KR101563875B1 (ko) 2007-12-31 2008-12-10 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템

Country Status (6)

Country Link
US (1) US7865658B2 (ko)
EP (1) EP2227740B1 (ko)
JP (1) JP5443384B2 (ko)
KR (1) KR101563875B1 (ko)
TW (1) TWI421877B (ko)
WO (1) WO2009088626A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150016886A (ko) * 2013-08-05 2015-02-13 삼성전자주식회사 데이터 생성 또는 소비에 기반하여 캐시된 입출력 데이터를 필터링하는 방법

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8261009B2 (en) * 2008-12-30 2012-09-04 Sandisk Il Ltd. Method and apparatus for retroactive adaptation of data location
US20100169540A1 (en) * 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
US8239617B1 (en) * 2010-02-12 2012-08-07 Emc Corporation Enterprise data storage system using multi-level cell flash memory
US8402226B1 (en) * 2010-06-18 2013-03-19 Emc Corporation Rate proportional cache write-back in a storage server
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
KR20120088454A (ko) * 2011-01-31 2012-08-08 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 장치와, 이를 위한 프로그램 방법
US20130067168A1 (en) * 2011-09-09 2013-03-14 Microsoft Corporation Caching for a file system
US8856443B2 (en) * 2012-03-12 2014-10-07 Infinidat Ltd. Avoiding duplication of data units in a cache memory of a storage system
US9606730B2 (en) 2012-05-04 2017-03-28 Samsung Electronics Co., Ltd. System and method including three dimensional nonvolatile memory device and random access memory
CN103514111A (zh) * 2012-06-21 2014-01-15 华为技术有限公司 一种Cache的替换方法及装置
KR102024850B1 (ko) 2012-08-08 2019-11-05 삼성전자주식회사 3차원 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
US9112922B2 (en) 2012-08-28 2015-08-18 Vantrix Corporation Method and system for self-tuning cache management
US9740485B2 (en) 2012-10-26 2017-08-22 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9754648B2 (en) * 2012-10-26 2017-09-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9280482B2 (en) * 2012-12-13 2016-03-08 Western Digital Technologies, Inc. Methods and systems for provisioning a bootable image on to an external drive
US9141531B1 (en) 2012-12-14 2015-09-22 Western Digital Technologies, Inc. Data flush from cache to disk based on track limit
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9542306B2 (en) * 2013-03-13 2017-01-10 Seagate Technology Llc Dynamic storage device provisioning
US9727453B2 (en) 2013-03-14 2017-08-08 Sandisk Technologies Llc Multi-level table deltas
US9734097B2 (en) 2013-03-15 2017-08-15 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
WO2014209276A1 (en) * 2013-06-25 2014-12-31 Hewlett-Packard Development Company, L.P. Flushing dirty data from cache memory
US9563565B2 (en) 2013-08-14 2017-02-07 Micron Technology, Inc. Apparatuses and methods for providing data from a buffer
US9727493B2 (en) 2013-08-14 2017-08-08 Micron Technology, Inc. Apparatuses and methods for providing data to a configurable storage area
US9170943B2 (en) * 2013-08-29 2015-10-27 Globalfoundries U.S. 2 Llc Selectively enabling write caching in a storage system based on performance metrics
US9824004B2 (en) 2013-10-04 2017-11-21 Micron Technology, Inc. Methods and apparatuses for requesting ready status information from a memory
US10108372B2 (en) 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US10365835B2 (en) 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
US9720837B2 (en) * 2014-06-27 2017-08-01 International Business Machines Corporation Allowing non-cacheable loads within a transaction
BR112017001991B1 (pt) * 2014-08-15 2022-11-16 Microsoft Technology Licensing, Llc Método e dispositivo eletrônico compreendendo memória e armazenamento, e meio de armazenamento em computador
US10127157B2 (en) * 2014-10-06 2018-11-13 SK Hynix Inc. Sizing a cache while taking into account a total bytes written requirement
US9940259B2 (en) * 2015-01-16 2018-04-10 International Business Machines Corporation Virtual disk alignment access
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
TWI598733B (zh) * 2016-01-12 2017-09-11 瑞昱半導體股份有限公司 權重式資料搬遷控制裝置與方法
US20170212711A1 (en) * 2016-01-21 2017-07-27 Kabushiki Kaisha Toshiba Disk apparatus and control method
US20180239532A1 (en) 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10372351B2 (en) 2017-02-23 2019-08-06 Western Digital Technologies, Inc. Techniques for non-blocking control information and data synchronization by a data storage device
US10359955B2 (en) 2017-02-23 2019-07-23 Western Digital Technologies, Inc. Data storage device configured to perform a non-blocking control update operation
TWI645286B (zh) * 2017-08-31 2018-12-21 慧榮科技股份有限公司 記憶體控制裝置和方法
US10877686B2 (en) * 2018-04-13 2020-12-29 Intel Corporation Mass storage device with host initiated buffer flushing
US11188474B2 (en) * 2018-06-19 2021-11-30 Western Digital Technologies, Inc. Balanced caching between a cache and a non-volatile memory based on rates corresponding to the cache and the non-volatile memory
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US10782916B2 (en) 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system
KR102243923B1 (ko) 2018-12-31 2021-04-22 강원대학교산학협력단 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법
US11023150B2 (en) 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
US11182089B2 (en) 2019-07-01 2021-11-23 International Business Machines.Corporation Adapting memory block pool sizes using hybrid controllers
CN112181938B (zh) * 2019-07-05 2024-06-14 杭州海康威视数字技术股份有限公司 数据库清理方法、装置和计算机可读存储介质
KR102650809B1 (ko) * 2019-08-02 2024-03-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
US11994983B2 (en) * 2022-08-24 2024-05-28 Micron Technology, Inc. Multimedia card command timeout measurement

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5636355A (en) 1993-06-30 1997-06-03 Digital Equipment Corporation Disk cache management techniques using non-volatile storage
US6412045B1 (en) 1995-05-23 2002-06-25 Lsi Logic Corporation Method for transferring data from a host computer to a storage media using selectable caching strategies
JP3484874B2 (ja) * 1996-05-01 2004-01-06 日本電気株式会社 記憶システム
US5895488A (en) 1997-02-24 1999-04-20 Eccs, Inc. Cache flushing methods and apparatus
US5883904A (en) * 1997-04-14 1999-03-16 International Business Machines Corporation Method for recoverability via redundant cache arrays
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
ATE323305T1 (de) * 1998-07-24 2006-04-15 Sun Microsystems Inc Verfahren und vorrichtung zur durchführung einer deterministischen speicherzuordnungsantwort in einem computer-system
JPH11288387A (ja) * 1998-12-11 1999-10-19 Fujitsu Ltd ディスクキャッシュ装置
JP2001135017A (ja) * 1999-11-02 2001-05-18 Nec Corp データ記憶装置及びデータ記憶装置用インタフェース装置
US6658532B1 (en) * 1999-12-15 2003-12-02 Intel Corporation Cache flushing
US6678785B2 (en) 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6976128B1 (en) 2002-09-26 2005-12-13 Unisys Corporation Cache flush system and method
US7076605B1 (en) 2003-04-25 2006-07-11 Network Appliance, Inc. Method and apparatus for writing data to a storage device
US7085895B2 (en) 2003-09-05 2006-08-01 International Business Machines Corporation Apparatus, system, and method flushing data from a cache to secondary storage
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
JP4402997B2 (ja) 2004-03-26 2010-01-20 株式会社日立製作所 ストレージ装置
US7752382B2 (en) * 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
US7444478B2 (en) 2005-11-18 2008-10-28 International Business Machines Corporation Priority scheme for transmitting blocks of data
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US7711890B2 (en) 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
US8200904B2 (en) 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150016886A (ko) * 2013-08-05 2015-02-13 삼성전자주식회사 데이터 생성 또는 소비에 기반하여 캐시된 입출력 데이터를 필터링하는 방법

Also Published As

Publication number Publication date
WO2009088626A3 (en) 2009-10-01
JP2011508347A (ja) 2011-03-10
EP2227740A2 (en) 2010-09-15
KR101563875B1 (ko) 2015-10-28
US7865658B2 (en) 2011-01-04
US20090172286A1 (en) 2009-07-02
JP5443384B2 (ja) 2014-03-19
EP2227740B1 (en) 2018-01-24
EP2227740A4 (en) 2011-11-16
TWI421877B (zh) 2014-01-01
TW200937424A (en) 2009-09-01
WO2009088626A2 (en) 2009-07-16

Similar Documents

Publication Publication Date Title
KR101563875B1 (ko) 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템
US11355197B2 (en) Memory system with nonvolatile cache and control method thereof
US11204696B2 (en) Memory devices and electronic systems having a hybrid cache including static and dynamic caches that may be selectively disabled based on cache workload or availability, and related methods
US8200904B2 (en) System and method for clearing data from a cache
JP6266019B2 (ja) データストレージシステム向けの優先度に基づくガベージコレクション
US9952766B2 (en) Memory system, including memory device capable of overwrite operation, and method of operating the memory system
JP5728672B2 (ja) ハイブリッドメモリ管理
KR101297563B1 (ko) 스토리지 관리 방법 및 관리 시스템
JP5418808B2 (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
KR20170130011A (ko) 캐시 메모리를 포함하는 서버 장치 및 그것의 동작 방법
US20120246397A1 (en) Storage device management device and method for managing storage device
US11249903B2 (en) Memory system for garbage collection operation and operating method thereof
US10776268B2 (en) Priority addresses for storage cache management
JP2020035128A (ja) メモリシステム
KR20120030137A (ko) 영구 가비지 컬렉션을 갖는 메모리 시스템
JP6697410B2 (ja) メモリシステムおよび制御方法
Kim et al. Improving performance and lifetime of large-page NAND storages using erase-free subpage programming
KR20230142795A (ko) Zns 디바이스들에서의 상이한 기입 우선순위화
US11537303B1 (en) Dissimilar write prioritization in ZNS devices

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee