KR20140027894A - 적응형 압축 비율을 사용하는 플러시 명령들의 빠른 실행 - Google Patents

적응형 압축 비율을 사용하는 플러시 명령들의 빠른 실행 Download PDF

Info

Publication number
KR20140027894A
KR20140027894A KR1020130101970A KR20130101970A KR20140027894A KR 20140027894 A KR20140027894 A KR 20140027894A KR 1020130101970 A KR1020130101970 A KR 1020130101970A KR 20130101970 A KR20130101970 A KR 20130101970A KR 20140027894 A KR20140027894 A KR 20140027894A
Authority
KR
South Korea
Prior art keywords
storage
memory
data
processor
flush
Prior art date
Application number
KR1020130101970A
Other languages
English (en)
Other versions
KR101497826B1 (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 KR20140027894A publication Critical patent/KR20140027894A/ko
Application granted granted Critical
Publication of KR101497826B1 publication Critical patent/KR101497826B1/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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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/7205Cleaning, compaction, garbage collection, erase control

Abstract

방법은, 비휘발성 메모리와 비휘발성 메모리에 저장하기 위해 수신된 데이터를 버퍼링하기 위한 휘발성 버퍼를 포함하는, 저장 디바이스에서 하나 이상의 저장 명령 및 적어도 하나의 플러시 명령을 수신하는 단계를 포함한다. 플러시 명령은 휘발성 버퍼에 버퍼링된 데이터를 비휘발성 메모리에 커밋하도록 저장 디바이스에게 지시한다. 저장 명령은 제1 저장 규칙에 따라 실행된다. 플러시 명령은 제1 저장 규칙에 비해 더 작은 지연(latency)을 갖는 제2 저장 규칙에 따라 실행된다.

Description

적응형 압축 비율을 사용하는 플러시 명령들의 빠른 실행{FAST EXECUTION OF FLUSH COMMANDS USING ADAPTIVE COMPACTION RATIO}
본 발명은 일반적으로 메모리 디바이스에 관한 것으로, 특히, 플러시 명령들의 빠른 실행을 위한 방법 및 시스템에 관한 것이다.
일부 비휘발성 메모리 시스템은 비휘발성 메모리에 저장하기 위해 보류중인 데이터를 일시적으로 버퍼링하기 위한 휘발성 버퍼를 포함한다. 일부 저장 프로토콜은, 휘발성 메모리에 있는 임의의 데이터를 비휘발성 메모리로 전송하도록 저장 디바이스에게 지시하는 플러시 명령을 지원한다.
플러시 명령은, 예를 들어, NVM 익스프레스 프로토콜에서 지원된다. NVM 익스프레스에서의 플러시 명령은, 예를 들어, 여기에 참조로 포함되는, "NVM 익스프레스"(개정 1.0b, 2011년 7월 12일, 섹션 6.7)에서 지정된다. 직렬 ATA(SATA) 프로토콜은 또한 "FLUSH CACHE"와 "FLUSH CACHE EXT"라는 플러시 명령을 지정한다. 소형 컴퓨터 시스템 인터페이스(SCSI) 프로토콜은 "SYNCHRONIZE CACHE"라는 플러시 명령을 지정한다.
여기에서 설명되는 본 발명의 일 실시예는, 비휘발성 메모리와 비휘발성 메모리에 저장하기 위해 수신된 데이터를 버퍼링하기 위한 휘발성 버퍼를 포함하는, 저장 디바이스에서의 방법을 제공한다. 방법은 저장 디바이스에서 하나 이상의 저장 명령과 적어도 하나의 플러시 명령을 수신하는 단계를 포함한다. 플러시 명령은 휘발성 버퍼에 버퍼링된 데이터를 비휘발성 메모리에 커밋하도록 저장 디바이스에게 지시한다. 저장 명령은 제1 저장 규칙에 따라 실행된다. 플러시 명령은 제1 저장 규칙에 비해 더 작은 지연(latency)을 갖는 제2 저장 규칙에 따라 실행된다.
일부 실시예에서, 제2 저장 규칙에 따라 플러시 명령을 실행하는 단계는, 각각의 압축 동작마다 비휘발성 메모리에서 수행될 프로그래밍 동작들의 수를 미리 정의된 비율로 제한하는 단계를 포함하고, 제1 저장 규칙에 따라 저장 명령들을 실행하는 단계는 상기 수(number)가 미리 정의된 비율을 초과하는 것을 허용하는 단계를 포함한다.
제1 저장 규칙에 따라 저장 명령들을 실행하는 단계는, 미리 정의된 비율보다 더 큰, 대안적인 비율을 시행하는 단계를 포함할 수 있다. 일 실시예에서, 압축 동작마다 프로그래밍 동작들의 수를 제한하는 단계는 비휘발성 메모리에서 사용할 수 있는 프리 메모리 블록들의 카운트에 따라 미리 정의된 비율을 수정하는 단계를 포함한다.
일부 실시예에서, 방법은, 플러시 명령을 더 신속히 처리(expedite)하기 위해 독점적으로(exclusively) 비휘발성 메모리에서의 하나 이상의 메모리 블록을 할당하는 단계, 휘발성 버퍼에 버퍼링된 데이터를 독점적으로 할당된 메모리 블록에 커밋하는 단계, 및 후속해서 커밋된 데이터를 독점적으로 할당된 메모리 블록들로부터 비휘발성 메모리에 있는 대안적인 저장 위치들로 전송하는 단계를 포함한다. 일 실시예에서, 독점적으로 할당된 메모리 블록에 데이터를 커밋하는 단계는 저-지연 저장 구성(low-latency storage configuration)을 사용하여 독점적으로 할당된 메모리 블록들에 데이터를 저장하는 단계를 포함한다.
추가로, 본 발명의 일 실시예에 따른, 비휘발성 메모리, 비휘발성 메모리에 저장하기 위해 수신된 데이터를 버퍼링하기 위한 휘발성 버퍼, 및 프로세서를 포함하는 저장 디바이스가 제공된다. 프로세서는, 하나 이상의 저장 명령 및 휘발성 버퍼에 버퍼링된 데이터를 비휘발성 메모리에 커밋하도록 저장 디바이스에게 지시하는 적어도 하나의 플러시 명령을 수신하고, 제1 저장 규칙에 따라 저장 명령들을 실행하고, 제1 저장 규칙에 비해 더 작은 지연을 갖는 제2 저장 규칙에 따라 플러시 명령을 실행하도록 구성된다.
또한, 본 발명의 일 실시예에 따른, 인터페이스와 프로세서를 포함하는 메모리 제어기가 제공된다. 인터페이스는 비휘발성 메모리와 통신하도록 구성된다. 프로세서는 비휘발성 메모리에 저장하기 위해 수신된 데이터를 휘발성 버퍼에 버퍼링하고, 하나 이상의 저장 명령 및 휘발성 버퍼에 버퍼링된 데이터를 비휘발성 메모리에 커밋하도록 메모리 제어기에게 지시하는 적어도 하나의 플러시 명령을 수신하고, 제1 저장 규칙에 따라 저장 명령들을 실행하고, 제1 저장 규칙에 비해 더 작은 지연을 갖는 제2 저장 규칙에 따라 플러시 명령을 실행하도록 구성된다.
본 발명의 일 실시예에 따른, 호스트와 저장 디바이스를 포함하는 시스템이 더 제공된다. 저장 디바이스는, 비휘발성 메모리, 비휘발성 메모리에 저장하기 위해 호스트로부터 수신된 데이터를 버퍼링하기 위한 휘발성 버퍼, 및 프로세서를 포함한다. 프로세서는, 호스트로부터 하나 이상의 저장 명령 및 휘발성 버퍼에 버퍼링된 데이터를 비휘발성 메모리에 커밋하도록 저장 디바이스에게 지시하는 적어도 하나의 플러시 명령을 수신하고, 제1 저장 규칙에 따라 저장 명령들을 실행하고, 제1 저장 규칙에 비해 더 작은 지연을 갖는 제2 저장 규칙에 따라 플러시 명령을 실행하도록 구성된다.
본 발명은, 도면들과 함께 고려된, 그의 실시예들에 대한 다음의 상세한 설명으로부터 더 충분히 이해될 것이다.
도 1은, 본 발명의 일 실시예에 따른, 메모리 시스템을 개략적으로 도시하는 블록도이고;
도 2는, 본 발명의 일 실시예에 따른, 플러시 명령들의 빠른 실행을 위한 방법을 개략적으로 도시하는 흐름도이다.
개요(OVERVIEW)
일부 비휘발성 메모리 시스템은 비휘발성 메모리에 저장하기 위해 보류중인 데이터를 일시적으로 버퍼링하기 위한 휘발성 버퍼를 포함한다. 일부 솔리드 스테이트 드라이브(SSD)는, 예를 들어, 호스트로부터 데이터를 수신하여, 처음에는 휘발성 버퍼에 데이터를 버퍼링하고, 나중에 비휘발성 메모리로 데이터를 전송한다. SSD는 일반적으로 데이터가 휘발성 버퍼에 저장되자마자, 종종 데이터가 성공적으로 비휘발성 메모리에 커밋되기 전에, 호스트에 확인응답(acknowledgement)을 전송한다.
이런 종류의 버퍼링은 저장 성능을 상당히 향상시킨다. 다른 한편으로, 전력이 중단(disrupt)되는 경우에, 성공적인 저장이 호스트에게 이미 확인응답되었음에도 불구하고, 버퍼링되었지만 아직 비휘발성 메모리에 커밋되지 않은 데이터는 손실될 수 있다. 이러한 시나리오는 데이터 불일치를 야기할 수 있고 따라서 방지되어야 한다.
이들 및 다른 시나리오들을 방지하기 위해, 일부 저장 프로토콜은, 버퍼링된 모든 데이터를 비휘발성 메모리에 커밋하도록 저장 디바이스에게 지시하는 플러시 명령을 지원한다. 저장 디바이스는 휘발성 버퍼에 있는 모든 데이터가 비휘발성 메모리로 성공적으로 전송된 경우에만 플러시 명령에 대해 확인응답한다. 플러시 명령은 일반적으로 차단 명령(blocking command)으로서, 즉, 플러시 동작이 완료될 때까지 호스트 운영 체제 및 파일 시스템은 새로운 기록 명령들을 전송하지 않는다. 따라서, 플러시 명령을 실행하면 오랜 기간 동안 저장 디바이스를 중지(halt)할 수 있다.
여기에서 기술된 본 발명의 실시예들은, SSD와 같은 비휘발성 메모리 시스템에서 플러시 명령을 구현하기 위한 개선된 방법 및 시스템을 제공한다. 개시된 실시예들에서, 저장 디바이스에 있는 프로세서는 호스트로부터 수락된 명령의 실행을 관리한다. 특히, 프로세서는, 저장 명령을 실행하는 경우에는 특정 저장 규칙을 적용하고, 플러시 명령을 실행하는 경우에는 더 작은 지연을 갖는 또 다른 저장 규칙을 적용한다. 그 결과, 플러시 명령에 의해 야기된 차단 시간이 단축된다.
실시예의 일례에서, 플러시 명령을 실행하는 동안, 프로세서는 저장 명령 동안보다 프로그래밍 동작마다 더 적은 압축 동작들을 수행한다. 또한 "가비지 수집(garbage collection)"으로도 알려진, 압축 동작은, 새로운 저장을 위해 인접 메모리 공간을 프리하게 하기 위하여, 비휘발성 메모리의 부분적으로 유효한 메모리 블록으로부터 새로운 메모리 블록으로 유효 데이터를 복사한다. 플러시 명령을 실행하는 동안 압축 동작들의 수를 일시적으로 제한하여, 프로세서는 데이터가 휘발성 메모리로부터 비휘발성 메모리로 전송되는 속도를 증가시킬 수 있다. 따라서, 플러시 명령에 의해 야기된 차단 시간이 단축된다.
일부 실시예에서, 저장 명령을 실행할 때 프로세서는 가변 프로그래밍-압축 비율(variable programming-compaction ratio)을 시행한다. 비율은, 특정 규칙에 따라, 비휘발성 메모리에 남아있는 프리 메모리 블록의 수의 함수로서 달라진다. 플러시 명령을 실행할 때, 프로세서는 더 높은 프로그래밍 압축 비율을 시행하는 대안적인 규칙으로 전환한다.
일부 실시예에서, 프로세서는 플러시 명령 동안 휘발성 버퍼로부터 전송된 데이터를 저장하기 위해, 비휘발성 메모리에 프리 메모리 블록들의 풀(a pool of free memory blocks)을 독점적으로 할당한다. 이러한 풀(pool)을 사용함으로써, 플러시 명령은 더 고속으로 실행될 수 있고, 그들의 차단 시간을 더 단축할 수 있다.
시스템 설명(SYSTEM DESCRIPTION)
도 1은, 본 발명의 일 실시예에 따른, 메모리 시스템으로서, 본 예에서는, 솔리드 스테이트 드라이브(SSD)(20)를 개략적으로 도시하는 블록도이다. SSD(20)는 호스트(24) 대신 데이터를 저장한다. 예를 들어, SSD(20)는, 호스트(24)가 컴퓨터의 중앙 처리 장치(CPU) 칩셋을 포함하는, 이동 또는 개인 컴퓨터에 설치될 수 있다. 대안적으로, SSD(20)는 임의의 다른 적절한 호스트와 함께 사용될 수 있다. 여기에서 설명된 실시예들은 주로 SSD를 참조하지만, 개시된 기술들은, 다양한 다른 종류의 메모리 시스템들, 이를테면, 기업 저장 디바이스(enterprise storage devices), 휴대폰(mobile phones), 디지털 카메라(digital cameras), 랩톱 컴퓨터, 태블릿 컴퓨터 또는 개인 디지털 보조(PDA)와 같은 모바일 컴퓨팅 디바이스, 미디어 플레이어, 이동식 메모리 카드 또는 디바이스, 또는 임의의 다른 적절한 데이터 저장 시스템과 함께 사용될 수 있다.
SSD(20)는, 비휘발성 메모리에서, 본 예에서는, 하나 이상의 NAND 플래시 메모리 디바이스(28)에서, 호스트(24) 대신 데이터를 저장한다. 대안적인 실시예에서, SSD(20)에 있는 비휘발성 메모리는 임의의 다른 적절한 유형의 비휘발성 메모리, 이를테면, 예를 들어, NOR 플래시, CTF(Charge Trap Flash), PRAM(Phase Change RAM), MRAM(Magnetoresistive RAM) 또는 FeRAM(Ferroelectric RAM)을 포함할 수 있다.
SSD 제어기(36)는 SSD의 다양한 저장 및 관리 작업을 수행하며, 특히, 아래에 설명되는 방법들을 사용하여 플러시 명령들을 실행한다. SSD 제어기는 또한 일반적으로 메모리 제어기라고도 지칭된다. SSD 제어기(36)는 호스트(24)와 통신하기 위한 호스트 인터페이스(40), 플래시 디바이스(28)와 통신하기 위한 메모리 인터페이스(44), 및 여기에서 설명된 방법들을 수행하는 프로세서(48)를 포함한다.
SSD(20)는 호스트(24)로부터 저장을 위해 수신되는 데이터를 일시적으로 버퍼링하기 위한, 휘발성 기록 버퍼(32)를 더 포함한다. 일반적으로, 입력되는 데이터는 처음에는 버퍼(32)에 저장되고 나중에 비휘발성 메모리 디바이스(28)에서 그의 지정된 저장 위치에 복사된다. 복사 동작은 일반적으로 DMA(Direct Memory Access)를 사용하여 구현되지만, 또한 프로세서(48)에 의해 수행될 수도 있다.
본 예에서, 버퍼(32)는 RAM(Random Access Memory)에, 아마도 뿐만 아니라 추가적인 목적을 위해 프로세서(48)에 의해 사용되는 RAM 디바이스에 구현된다. 도 1의 실시예에서, RAM은 대안적으로는 SSD 제어기에서 분리될 수 있지만, RAM 보유 버퍼(RAM holding buffer; 32)는 SSD 제어기(36)의 일부로 표시된다. 다양한 실시예에서, 휘발성 메모리 보유 버퍼(volatile memory holding buffer; 32)는 임의의 적절한 유형의 휘발성 메모리, 이를테면, 예를 들어, DRAM(Dynamic RAM), DDR DRAM(Double Data Rate DRAM) 또는 SRAM(Static RAM)을 포함할 수 있다.
SSD 제어기(36), 및 특히 프로세서(48)는 하드웨어로 구현될 수 있다. 대안적으로, SSD 제어기는 적절한 소프트웨어 또는 하드웨어와 소프트웨어 요소의 조합을 실행하는 마이크로프로세서를 포함할 수 있다.
도 1의 구성은, 순수하게 개념적 명확성을 위해서만 표시되는, 예시적인 구성이다. 임의의 다른 적절한 SSD 또는 다른 메모리 시스템 구성 또한 사용될 수 있다. 다양한 인터페이스, 어드레싱 회로, 타이밍 및 시퀀싱 회로 및 디버깅 회로와 같은 본 발명의 원리를 이해하는데 필요하지 않은 요소는 명확성을 위해 도면에서 생략되었다. 일부 애플리케이션, 예컨대, 논-SSD 애플리케이션(non-SSD applications)에서, SSD 제어기(36)의 기능은 적절한 메모리 제어기에 의해 수행된다.
도 1에 도시된 예시적인 시스템 구성에서, 메모리 디바이스(28) 및 SSD 제어기(48)는 별도의 집적 회로(IC)로 구현된다. 대안적인 실시예에서는, 그러나, 메모리 디바이스와 SSD 제어기가 단일 MCP(Multi-Chip Package) 또는 SoC(System on Chip)에서 별도의 반도체 다이에 통합될 수 있고, 내부 버스에 의해 상호접속될 수 있다. 또한, 대안적으로, SSD 제어기 회로의 일부 또는 전부는 하나 이상의 메모리 디바이스(28)가 배치되어 있는 동일한 다이에 상주할 수 있다. 또한, 대안적으로 SSD 제어기(36)의 기능성의 일부 또는 전부는 소프트웨어로 구현되어 프로세서 또는 호스트(24)의 다른 요소에 의해 수행될 수 있다. 일부 실시예에서, 호스트(24) 및 SSD 제어기(36)는 동일한 다이에, 또는 동일한 디바이스 패키지에서 별도의 다이에 제작될 수 있다.
일부 실시예에서, SSD 제어기(36)는, 여기에서 설명된 기능을 수행하도록 소프트웨어로 프로그래밍되는, 범용 프로세서를 포함한다. 소프트웨어는, 예를 들어, 네트워크를 통해 전자 형태로 프로세서에 다운로드될 수 있고, 또는, 대안적으로 또는 추가적으로 자기, 광, 또는 전자 메모리와 같은, 비-일시적 유형 매체에 제공 및/또는 저장될 수 있다.
플러시 명령들의 빠른 실행(FAST EXECUTION OF FLUSH COMMANDS)
일부 실시예에서, SSD(20)의 프로세서(48)는, 우선, 진입하는 데이터를 휘발성 버퍼(32)에 저장하고, 나중에, 버퍼링된 데이터를 비휘발성 메모리 디바이스(28)에 전송하여, 높은 기록 성능을 달성한다. 이러한 종류의 휘발성 버퍼링은, 그러나, 전력 중단의 경우에 데이터 불일치를 야기할 수 있다.
예를 들어, 버퍼(32)에 있는 데이터 중 일부가 아직 비휘발성 메모리 디바이스(28)에 성공적으로 전송되지 않은 동안 SSD(24)의 전력 공급이 중단되는 시나리오를 고려해 보자. 한편으로, 이러한 데이터는 일반적으로 손실된다. 다른 한편으로, 프로세서(48)는 데이터 저장이 성공적임을 호스트(24)에게 이미 확인응답했다. 그 결과, 호스트에서 데이터 불일치 또는 동기화의 결여가 성장할 수 있어: 호스트는, 사실은 데이터가 손실되었는데, 데이터가 성공적으로 저장된 것으로 간주할 수 있다.
이러한 시나리오를 방지하기 위해, 호스트(24)와 SSD(20) 사이의 저장 프로토콜은 플러시 명령을 포함한다. 플러시 명령은 호스트에 의해 발행되고, 휘발성 버퍼(32)에 있는 모든 데이터를 비휘발성 메모리 디바이스(28)에 전송하도록 SSD(20)에서 프로세서(48)에게 지시한다. 프로세서(48)는 버퍼(32) 내의 모든 데이터가 전송되고 비휘발성 메모리에 성공적으로 커밋된 경우에만 플러시 명령에 대해 확인응답한다.
플러시 명령은 일반적으로 차단 명령으로서, 즉, 플러시 동작이 완료될 때까지 새로운 기록 명령은 프로세서(48)로 전송되지 않을 것이다. 따라서, 플러시 명령을 실행하면 오랜 기간 동안, 때때로, 대략 수 초동안 저장 디바이스를 중지할 수 있다. 플러시 명령의 지속 기간은, 예를 들어, 버퍼링된 데이터의 양 및 메모리 디바이스(28)에서의 프리 메모리 공간에 따라 달라질 수 있다.
일부 실시예에서, 프로세서(48)는, 플러시 명령 실행 동안, 감소된 지연을 갖는 저장 규칙이나 모드를 적용하여, 플러시 명령에 의해 야기된 차단 시간을 단축한다. 여기에서 설명된 실시예들은 플러시 명령을 실행하는 동안 압축 동작들의 수를 제한하는 것을 주로 참조한다. 그러나, 대안적인 실시예에서, 프로세서(48)는 임의의 다른 적절한 규칙이나 모드를 적용하여, 플러시 명령 실행이 저장 명령 실행보다 더 작은 지연을 갖게 할 수 있다. 다음의 설명에서, "저장 명령(storage command)"이라는 용어는 호스트로부터 수신되고, 플러시 명령이 아닌 임의의 명령, 예컨대, 기록 명령 또는 판독 명령을 지칭한다. "호스트 명령(host command)"이라는 용어는, 저장 명령과 플러시 명령을 둘 다 포함하는, SSD에서 실행하기 위해 호스트로부터 수신되는 임의의 명령을 지칭한다.
일반적인 플래시 메모리에서, 데이터는 메모리 디바이스(28)에 페이지 단위로 기록되지만, 소거는 전체 메모리 블록에 적용된다. 데이터는 단지 소거된 페이지에만 기록되고, 따라서, 데이터를 제자리에서(in-place) 업데이트하는 것이 불가능하다. 데이터를 업데이트하는 것은 플래시 메모리에서 또 다른 물리적 저장 위치에 업데이트된 데이터를 기록하는 것, 데이터의 이전 버전을 무효한 것으로 마크하는 것, 및 데이터의 논리적 주소를 데이터가 저장되어 있는 물리적 저장 위치로 변환하는 논리적-물리적 어드레스 매핑을 동적으로 업데이트하는 것을 수반한다.
플래시 메모리의 이러한 특성때문에, 메모리 디바이스(28)의 메모리 블록은, 그의 업데이트된 버전이 다른 물리적 저장 위치에 저장된, 무효 데이터 페이지를 점차적으로 늘린다(accumulate). 무효 페이지의 수를 감소시키기 위해, SSD 제어기(36)의 프로세서(48)는 압축, 또는 "가비지 수집(garbage collection)" 프로세스를 수행한다. 이러한 배경 프로세스는 압축을 위해 하나 이상의 메모리 블록(소스 블록으로 지칭됨)을 선택하고, 선택된 소스 블록으로부터 하나 이상의 다른 블록(타겟 블록으로 지칭됨)에서 다른 저장 위치로 유효 데이터를 복사하고, 그 다음, 소스 블록을 소거한다. 그 다음, 소거된 블록은 후속 프로그래밍을 위한 준비가 되어 있다. 압축 프로세스는, 임의의 주어진 시간에, 미리 정의된 수의 메모리 블록이 소거되어 새로운 프로그래밍을 위해 사용할 수 있도록 보장한다. 이러한 메모리 블록은 여기에서는 프리 블록으로 지칭된다.
인정될 수 있듯이, 압축 프로세스는 호스트로부터 도착하는 새로운 데이터를 기록하는 프로그래밍 동작들을 희생시켜가며 이루어질 수 있는 다수의 복사 동작을 수반한다. 다시 말해, 새로운 데이터의 프로그래밍 동작과 압축 프로세스의 복사 동작은 SSD에서 동일한 프로세싱 자원을 위해 경쟁한다.
일부 실시예에서, 프로세서(48)는 원하는 수의 프리 블록을 유지하기 위해 프로그래밍 및 압축 동작의 속도를 조절한다. 실시예의 일례에서, 프리 블록 수가 미리 정의된 임계값 아래로 떨어지면, 프로세서(48)는 임의의 새로운 프로그래밍 동작을 중단시키고, 임의의 압축 동작을 실행한다. 압축 동작이 프리 블록의 수를 증가시키기 때문에, 프리 블록의 수가 미리 정의된 임계값을 초과하면, 프로세서(48)는 새로운 프로그래밍 동작이 진행하도록 허용한다.
더 일반적으로, 프로세서(48)는 프리 메모리 블록의 수의 범위를 정의하는 두 개 이상의 미리 정의된 임계값을 사용할 수 있다. 각각의 범위에서, 프로세서(48)는 압축 동작마다 프로그래밍 동작의 수를 특정 프로그래밍 압축 비율로 제한한다. ("프로그래밍-압축 비율(programming-compaction ratio)"이라는 용어는 일반적으로 비교할 수 있는 데이터 크기들의 복사 및 프로그래밍을 지칭한다. 예를 들어, 그 비율은 다음과 같이 정의될 수 있다:
Figure pat00001
일반적으로, 프리 블록의 수가 감소하면, 프로세서(48)는 압축 동작마다 더 적은 프로그래밍 동작들을 허용하고, 그 반대의 경우도 마찬가지이다. 다음 표는 5개의 범위(4개의 임계값) 및 대응하는 프로그래밍-압축 비율에 대한 구성의 일례를 제공한다:
프로그래밍-압축 비율의 예
범위 인덱스 프리 블록의 수(N) 프로그래밍-압축 동작 비율
Ⅰ-프로그래밍만 N>20 프로그래밍만
15<N≤20 3:1
10<N≤15 1:1
5<N≤10 1:3
Ⅴ-압축만 N≤5 압축만
표 1의 구성에서, 프로세서는 모든 새로운 프로그래밍을 정지하고 프리 블록의 수(N)가 5 이하인 경우에만 압축을 허용한다. 다른 극단에서, 프리 블록의 수가 20을 초과할 경우, 프로세서(48)는 압축을 정지하고 프로그래밍만 수행한다. N의 중간 값에서, 프로세서(48)는 중간 프로그래밍-압축 비율을 적용한다.
프로세서(48)가 표 1의 구성을 사용하고, 다수의 랜덤(즉, 비-연속) 기록 명령을 수행하는 시나리오의 예를 고려해 보자. 프리 블록의 수가 최저 임계값 아래로 떨어질 때, 호스트(24)에 의해 플러시 명령이 발행된다. 이 시점에서, 프로세서(48)는 새로운 저장 명령을 허용하지 않으며, 프리 블록의 수가 "압축만(compact only)" 임계값을 초과할 때까지 버퍼(32)에 있는 데이터는 메모리 디바이스(28)에 커밋될 수 없다. 이러한 시나리오에서, 호스트는 일반적으로 오랜 기간 동안 압축 프로세스가 끝나기를 기다려야 한다. 그런 다음에야, 플러시 명령은 실제로 버퍼링된 데이터를 비휘발성 메모리로 전송하고 확인응답한다. 개시된 기술들은 이러한 및 다른 문제 시나리오를 극복한다.
일부 실시예에서, 주어진 수의 프리 블록에 대해, 프로세서(48)는 저장 명령을 실행할 때 더 작은 프로그래밍-압축 비율을 시행하고, 플러시 명령을 실행할 때 더 큰 프로그래밍 압축 비율을 시행한다. 플러시 명령을 실행하는 동안 압축 동작마다 더 많은 프로그래밍 동작을 허용함으로써, 프로세서는 버퍼링된 데이터를 버퍼(32)로부터 플러시 디바이스들(28)로 고속으로 전송할 수 있다. 그 결과, 플러시 명령의 차단 시간이 상당히 단축된다.
이러한 메커니즘이 없으면, 차단 시간은 500ms의 오더에 달할 수 있으며, 일부 경우에는 최대 수 초에 달할 수 있다. 개시된 메커니즘을 사용하는 경우, 차단 시간은 10ms의 오더로 단축될 수 있다. 이러한 수치는 순전히 예로서 제공되며, 대안적인 실시예에서 다양한 다른 차단 시간이 달성될 수 있다.
일부 실시예에서, 저장 명령을 실행하는 동안, 프로세서(48)는 압축 동작마다 프로그래밍 동작들의 수를 특정한 비율로 제한하지만, 플러시 명령을 실행하는 동안 그 비율이 초과되는 것을 허용한다. 일부 실시예에서, 플러시 명령을 실행하는 동안, 프로세서(48)는 저장 명령을 실행하는 동안 사용되는 비율보다 더 큰 프로그래밍 압축 비율을 시행한다.
상기 표 1에서와 같은 다수의 임계값을 사용하는 경우, 프로세서(48)는 두 개의 서로 다른 구성 - 저장 명령을 실행하는 동안의 하나의 구성과 플러시 명령을 실행하는 동안의 다른 구성 - 을 시행할 수 있다. 주어진 수의 프리 메모리 블록에 대해, 플러시 명령을 실행하는 동안 적용되는 프로그래밍-압축 비율은 저장 명령을 실행하는 동안 적용되는 비율보다 더 크다.
실시예의 일례에서, 프로세서(48)는 저장 명령을 실행하는 동안 상기 표 1의 구성을 시행하고, 플러시 명령을 실행하는 동안 아래 표 2의 구성을 시행한다:
플러시 명령을 실행하는 동안 프로그래밍-압축 비율의 예
범위 인덱스 프리 블록의 수(N) 프로그래밍-압축 동작 비율
N>20 프로그래밍만
15<N≤20 프로그래밍만
10<N≤15 프로그래밍만
5<N≤10 프로그래밍만
2<N≤5 프로그래밍만
Ⅵ-압축만 N≤2 압축만
표 2의 예는 기록 버퍼(32)의 크기가 세 개의 메모리 블록보다 작은 것으로 가정한다. 플러시 명령이 완료되고 확인응답될 때, 프로세서(48)는 후속 저장 명령들을 위해 상기 표 1로 되돌아간다. 상기 표 1 및 표 2의 구성은 순전히 예로서 표시된다. 대안적인 실시예에서, 프로그래밍-압축 비율의 임의의 다른 적절한 구성을 사용할 수 있다.
일부 실시예에서, 프로세서(48)는, 플러시 명령 동안 버퍼(32)로부터 전송된 데이터를 저장하기 위해, 하나 이상의 프리 메모리 블록의 풀을 비휘발성 메모리 디바이스(28)에 독점적으로 할당한다. 플러시 명령을 실행하는 경우에, 프로세서(48)는 버퍼(32)로부터 이러한 독점적으로 할당된 블록으로 데이터를 복사한다. 프로세서는 나중에 독점적으로 할당된 블록들로부터 디바이스(28) 내의 대안적인 저장 위치들로 데이터를 전송할 수 있어, 블록들의 풀은 다음 플러시 명령을 위해 다시 사용할 수 있다. 이러한 메커니즘은 플러시 명령 실행의 속도를 증가시킨다.
일부 실시예에서, 프로세서(48)는 저-지연 저장 구성을 사용하는 독점적으로 할당된 블록에 데이터를 저장하여 플러시 명령 실행의 속도를 높인다. 예를 들어, 프로세서는 MLC(Multi-Level Cell) 구성을 사용하여, 즉 메모리 셀마다 다수의 비트의 저장 밀도로, 노멀 데이터를 저장할 수 있다. 그러나, 버퍼(32)로부터 독점적으로 할당된 블록의 풀로 데이터를 전송할 때, 프로세서는 SLC(Single-Level Cell) 구성을 사용하여, 즉, 메모리 셀마다 하나의 비트의 저장 밀도로 데이터를 저장할 수 있다.
SLC 저장은 MLC 저장보다 상당히 더 빠르기 때문에, 이러한 기술은 플러시 명령의 실행 시간을 상당히 단축한다. 일반적으로, 프로세서(48)는 나중에 블록들의 풀로부터 대안적인 저장 위치들로 데이터를 전송하고, MLC를 사용하여 데이터를 저장한다.
도 2는, 본 발명의 일 실시예에 따른, 플러시 명령들을 빠르게 실행하기 위한 방법을 개략적으로 도시하는 흐름도이다. 이 방법은, 풀 할당 단계(pool assignment step; 60)에서, 플러시 명령 동안 사용하기 위해 SSD 제어기(36)의 프로세서(48)가 비휘발성 메모리 디바이스(28)에 빈 메모리 블록의 풀(a pool of empty memory blocks)을 할당하는 것으로 시작한다.
규칙 정의 단계(64)에서, 프로세서(48)는 저장 명령을 실행하는 동안 및 플러시 명령을 실행하는 동안 각각 적용될 제1 및 제2 저장 규칙을 정의한다. 제1 규칙은 저장 명령을 실행하는 동안 사용될 하나 이상의 프로그래밍-압축 비율을 지정한다(예컨대, 상기 표 1). 제2 규칙은 플러시 명령을 실행하는 동안 사용될 하나 이상의 프로그래밍-압축 비율을 지정한다(예컨대, 상기 표 2). 주어진 수의 프리 메모리 블록에 대해, 제2 규칙에 의해 지정된 프로그래밍-압축 비율은 제1 규칙에 의해 지정된 프로그래밍-압축 비율보다 더 크다.
명령 입력 단계(68)에서, 프로세서(48)는 SSD에서 실행하기 위해 호스트(24)로부터 명령을 수신한다. 체크 단계(72)에서, 프로세서(48)는 명령이 저장 명령을 포함할지 플러시 명령을 포함할지를 체크한다. 명령이 저장 명령을 포함하는 경우, 제1 규칙 애플리케이션 단계(76)에서, 프로세서(48)는 제1 저장 규칙을 적용한다. 명령이 플러시 명령을 포함하는 경우, 제2 규칙 애플리케이션 단계(80)에서, 프로세서(48)는 제2 저장 규칙을 적용한다.
실행 단계(84)에서, 프로세서(48)는 적용가능한 제1 또는 제2 규칙에 따라 수신된 명령을 실행한다. 그 다음, 방법은 다음 호스트 명령을 처리하기 위해 상기 단계(68)로 루프백한다.
위에서 설명한 실시예들은 예로서 인용된 것이고, 본 발명은 위에서 특별히 표시되고 설명된 것으로 제한되지 않는다는 것이 인정될 것이다. 오히려, 본 발명의 범위는 위에서 설명된 다양한 특징들의 조합 및 하위 조합(sub-combinations) 둘 다는 물론, 종래 기술에는 개시되어 있지 않은 전술한 설명을 본 당업자가 떠올릴 그들의 변형 및 수정도 포함한다. 본 특허 출원에 참조로 통합된 문서들은, 임의의 용어들이 본 명세서에서 명시적으로 또는 암시적으로 이루어진 정의에 모순되는 방식으로 통합된 문서들에서 정의되는 정도를 제외하고는 본 출원의 필수적인 부분으로 간주될 것이고, 단지 본 명세서에서의 정의만 고려되어야 한다.

Claims (18)

  1. 비휘발성 메모리, 및 상기 비휘발성 메모리에 저장하기 위해 수신된 데이터를 버퍼링하기 위한 휘발성 버퍼를 포함하는 저장 디바이스에서, 하나 이상의 저장 명령, 및 상기 휘발성 버퍼에 버퍼링된 데이터를 상기 비휘발성 메모리에 커밋(commit)하도록 상기 저장 디바이스에 지시하는 적어도 하나의 플러시 명령(flush command)을 수신하는 단계;
    제1 저장 규칙에 따라 상기 저장 명령들을 실행하는 단계; 및
    상기 제1 저장 규칙에 대하여 더 작은 지연(latency)을 갖는 제2 저장 규칙에 따라 상기 플러시 명령을 실행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제2 저장 규칙에 따라 상기 플러시 명령을 실행하는 단계는, 각각의 압축 동작마다 상기 비휘발성 메모리에서 수행될 프로그래밍 동작들의 수를 미리 정의된 비율로 제한하는 단계를 포함하며, 상기 제1 저장 규칙에 따라 상기 저장 명령들을 실행하는 단계는, 상기 수가 상기 미리 정의된 비율을 초과하는 것을 허용하는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    상기 제1 저장 규칙에 따라 상기 저장 명령들을 실행하는 단계는, 상기 미리 정의된 비율보다 더 큰 대체 비율(alternative ratio)을 시행하는 단계를 포함하는 방법.
  4. 제2항에 있어서,
    상기 압축 동작마다 프로그래밍 동작들의 수를 제한하는 단계는, 상기 비휘발성 메모리에서 사용 가능한 프리 메모리 블록들의 카운트(count of free memory blocks)에 따라 상기 미리 정의된 비율을 수정하는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    상기 플러시 명령을 신속히 처리(expedite)하기 위해 독점적으로 상기 비휘발성 메모리에서의 하나 이상의 메모리 블록을 할당하는 단계를 포함하고,
    상기 플러시 명령을 실행하는 단계는, 상기 휘발성 버퍼에 버퍼링된 데이터를 상기 독점적으로 할당된 메모리 블록들에 커밋하는 단계, 및 후속해서 상기 커밋된 데이터를 상기 독점적으로 할당된 메모리 블록들로부터 상기 비휘발성 메모리 내의 대체 저장 위치들로 전송하는 단계를 포함하는 방법.
  6. 제5항에 있어서,
    상기 데이터를 상기 독점적으로 할당된 메모리 블록들에 커밋하는 단계는, 저-지연 저장 구성(low-latency storage configuration)을 사용하여 상기 독점적으로 할당된 메모리 블록들에 상기 데이터를 저장하는 단계를 포함하는 방법.
  7. 저장 시스템으로서,
    비휘발성 메모리;
    상기 비휘발성 메모리에 저장하기 위해 수신된 데이터를 버퍼링하기 위한 휘발성 버퍼; 및
    하나 이상의 저장 명령, 및 상기 휘발성 버퍼에 버퍼링된 데이터를 상기 비휘발성 메모리에 커밋하도록 저장 디바이스에 지시하는 적어도 하나의 플러시 명령을 수신하고, 제1 저장 규칙에 따라 상기 저장 명령들을 실행하며, 상기 제1 저장 규칙에 대하여 더 작은 지연을 갖는 제2 저장 규칙에 따라 상기 플러시 명령을 실행하도록 구성된 프로세서
    를 포함하는 저장 시스템.
  8. 제7항에 있어서,
    상기 프로세서는, 각각의 압축 동작마다 상기 비휘발성 메모리에서 수행될 프로그래밍 동작들의 수를 미리 정의된 비율로 제한함으로써 상기 제2 저장 규칙에 따라 상기 플러시 명령을 실행하고, 상기 수가 상기 미리 정의된 비율을 초과하는 것을 허용함으로써 상기 제1 저장 규칙에 따라 상기 저장 명령들을 실행하도록 구성되는 저장 시스템.
  9. 제8항에 있어서,
    상기 프로세서는, 상기 미리 정의된 비율보다 더 큰 대체 비율을 시행함으로써 상기 제1 저장 규칙에 따라 상기 저장 명령들을 실행하도록 구성되는 저장 시스템.
  10. 제8항에 있어서,
    상기 프로세서는, 상기 비휘발성 메모리에서 사용 가능한 프리 메모리 블록들의 카운트에 따라 상기 미리 정의된 비율을 수정하도록 구성되는 저장 시스템.
  11. 제7항에 있어서,
    상기 프로세서는, 상기 플러시 명령을 신속히 처리하기 위해 독점적으로 상기 비휘발성 메모리에서의 하나 이상의 메모리 블록을 할당하고, 상기 휘발성 버퍼에 버퍼링된 데이터를 상기 독점적으로 할당된 메모리 블록들에 커밋하며, 후속해서 상기 커밋된 데이터를 상기 독점적으로 할당된 메모리 블록들로부터 상기 비휘발성 메모리 내의 대체 저장 위치들로 전송함으로써, 상기 플러시 명령을 실행하도록 구성되는 저장 시스템.
  12. 제11항에 있어서,
    상기 프로세서는, 저-지연 저장 구성을 사용하여 상기 독점적으로 할당된 메모리 블록들에 상기 데이터를 저장하도록 구성되는 저장 시스템.
  13. 메모리 제어기로서,
    비휘발성 메모리와 통신하기 위한 인터페이스; 및
    상기 비휘발성 메모리에 저장하기 위해 수신된 데이터를 휘발성 버퍼에 버퍼링하고, 하나 이상의 저장 명령, 및 상기 휘발성 버퍼에 버퍼링된 데이터를 상기 비휘발성 메모리 버퍼에 커밋하도록 상기 메모리 제어기에 지시하는 적어도 하나의 플러시 명령을 수신하고, 제1 저장 규칙에 따라 상기 저장 명령들을 실행하며, 상기 제1 저장 규칙에 대하여 더 작은 지연을 갖는 제2 저장 규칙에 따라 상기 플러시 명령을 실행하도록 구성되는 프로세서
    를 포함하는 메모리 제어기.
  14. 제13항에 있어서,
    상기 프로세서는, 각각의 압축 동작마다 상기 비휘발성 메모리에서 수행될 프로그래밍 동작들의 수를 미리 정의된 비율로 제한함으로써 상기 제2 저장 규칙에 따라 상기 플러시 명령을 실행하고, 상기 수가 상기 미리 정의된 비율을 초과하는 것을 허용함으로써 상기 제1 저장 규칙에 따라 상기 저장 명령들을 실행하도록 구성되는 메모리 제어기.
  15. 제14항에 있어서,
    상기 프로세서는, 상기 미리 정의된 비율보다 더 큰 대체 비율을 시행함으로써 상기 제1 저장 규칙에 따라 상기 저장 명령들을 실행하도록 구성되는 메모리 제어기.
  16. 제14항에 있어서,
    상기 프로세서는, 상기 비휘발성 메모리에서 사용 가능한 프리 메모리 블록들의 카운트에 따라 상기 미리 정의된 비율을 수정하도록 구성되는 메모리 제어기.
  17. 제13항에 있어서,
    상기 프로세서는, 상기 플러시 명령을 신속히 처리하기 위해 독점적으로 상기 비휘발성 메모리에서의 하나 이상의 메모리 블록을 할당하고, 상기 휘발성 버퍼에 버퍼링된 데이터를 상기 독점적으로 할당된 메모리 블록들에 커밋하며, 후속해서 상기 커밋된 데이터를 상기 독점적으로 할당된 메모리 블록들로부터 상기 비휘발성 메모리 내의 대체 저장 위치들로 전송함으로써, 상기 플러시 명령을 실행하도록 구성되는 메모리 제어기.
  18. 제17항에 있어서,
    상기 프로세서는, 저-지연 저장 구성을 사용하여 상기 독점적으로 할당된 메모리 블록들에 상기 데이터를 저장하도록 구성되는 메모리 제어기.
KR1020130101970A 2012-08-27 2013-08-27 적응형 압축 비율을 사용하는 플러시 명령들의 빠른 실행 KR101497826B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/595,806 2012-08-27
US13/595,806 US20140059271A1 (en) 2012-08-27 2012-08-27 Fast execution of flush commands using adaptive compaction ratio

Publications (2)

Publication Number Publication Date
KR20140027894A true KR20140027894A (ko) 2014-03-07
KR101497826B1 KR101497826B1 (ko) 2015-03-02

Family

ID=49084775

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130101970A KR101497826B1 (ko) 2012-08-27 2013-08-27 적응형 압축 비율을 사용하는 플러시 명령들의 빠른 실행

Country Status (6)

Country Link
US (1) US20140059271A1 (ko)
EP (1) EP2703995A1 (ko)
KR (1) KR101497826B1 (ko)
CN (1) CN103631728A (ko)
TW (1) TW201415233A (ko)
WO (1) WO2014035756A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190099590A (ko) * 2018-02-19 2019-08-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200060154A (ko) * 2018-11-22 2020-05-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996889B2 (en) * 2013-03-29 2015-03-31 Dropbox, Inc. Portable computing device with methodologies for client-side analytic data collection
CN104956327B (zh) * 2013-07-31 2018-07-03 株式会社日立制作所 计算机系统及计算机系统控制方法
US10133570B2 (en) 2014-09-19 2018-11-20 Intel Corporation Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated
US10346048B2 (en) * 2015-04-10 2019-07-09 Samsung Electronics Co., Ltd. Electronic system with storage management mechanism and method of operation thereof
US9946496B2 (en) * 2015-07-27 2018-04-17 Elastifile Ltd. SSD with non-blocking flush command
TWI635495B (zh) * 2016-02-05 2018-09-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
TWI607457B (zh) * 2016-06-28 2017-12-01 光寶電子(廣州)有限公司 固態儲存裝置及其資料寫入方法
KR20180040769A (ko) 2016-10-12 2018-04-23 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US10489288B2 (en) 2017-01-25 2019-11-26 Samsung Electronics Co., Ltd. Algorithm methodologies for efficient compaction of overprovisioned memory systems
KR102450514B1 (ko) * 2017-09-19 2022-10-05 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치의 동작 방법
CN108170379A (zh) * 2017-12-28 2018-06-15 深圳忆联信息系统有限公司 一种提升ssd稳态时写命令服务质量的方法及ssd
CN108595264A (zh) * 2018-04-10 2018-09-28 平安科技(深圳)有限公司 刷新任务分配方法、电子设备及计算机可读存储介质
KR102624911B1 (ko) * 2018-06-13 2024-01-12 삼성전자주식회사 개선된 메타 데이터 관리를 통한 플래시 메모리의 내구성 향상 방법
US11061612B2 (en) * 2019-05-20 2021-07-13 Micron Technology, Inc. Internal communication interface management
CN110413233A (zh) * 2019-07-26 2019-11-05 杭州电子科技大学 一种固态硬盘控制器

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
KR100725410B1 (ko) * 2006-01-20 2007-06-07 삼성전자주식회사 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
US7711890B2 (en) * 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
EP1988474A1 (en) * 2007-05-04 2008-11-05 Axalto SA System and method of managing indexation of flash memory
CN101303845A (zh) * 2007-05-10 2008-11-12 智多微电子(上海)有限公司 一种控制图像数据写入缓冲单元及读取的控制装置和方法
TWI385516B (zh) * 2008-08-12 2013-02-11 Phison Electronics Corp 快閃記憶體儲存系統及其資料寫入方法
US8205063B2 (en) * 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8447918B2 (en) * 2009-04-08 2013-05-21 Google Inc. Garbage collection for failure prediction and repartitioning
US20100287217A1 (en) * 2009-04-08 2010-11-11 Google Inc. Host control of background garbage collection in a data storage device
US8289801B2 (en) * 2009-09-09 2012-10-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
TWI385523B (zh) * 2009-11-06 2013-02-11 Phison Electronics Corp 用於快閃記憶體的資料備份方法及其控制器與儲存系統
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
US8438361B2 (en) * 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device
US8799561B2 (en) * 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190099590A (ko) * 2018-02-19 2019-08-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200060154A (ko) * 2018-11-22 2020-05-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Also Published As

Publication number Publication date
EP2703995A1 (en) 2014-03-05
TW201415233A (zh) 2014-04-16
US20140059271A1 (en) 2014-02-27
WO2014035756A1 (en) 2014-03-06
CN103631728A (zh) 2014-03-12
KR101497826B1 (ko) 2015-03-02

Similar Documents

Publication Publication Date Title
KR101497826B1 (ko) 적응형 압축 비율을 사용하는 플러시 명령들의 빠른 실행
US11030093B2 (en) High efficiency garbage collection method, associated data storage device and controller thereof
JP5907255B2 (ja) Lsb及びmsbページにおける選択的データ記憶
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
US8706952B2 (en) Flash memory storage device, controller thereof, and data programming method thereof
US8595414B2 (en) Selectively combining commands for a system having non-volatile memory
TWI437439B (zh) 用來以動態門檻進行區塊管理之方法及記憶裝置及控制器
US8555000B2 (en) Data storage device and data storing method thereof
US20140095555A1 (en) File management device and method for storage system
TWI735918B (zh) 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置
TWI446349B (zh) 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器
US20170228191A1 (en) Systems and methods for suppressing latency in non-volatile solid state devices
US20200401516A1 (en) Data Storage Devices and Data Processing Methods
TW202006553A (zh) 快閃記憶體的資料內部搬移方法以及使用該方法的裝置
US11573891B2 (en) Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
JP2020524839A (ja) Nandバッファを有するnandフラッシュストレージデバイス
WO2023087861A1 (zh) 基于固态硬盘的写放大优化方法、装置及计算机设备
US11481136B1 (en) Very low sized zone support for storage devices
US11403011B1 (en) Host memory buffer allocation management
CN113467713A (zh) 数据分离方法及固态硬盘
US10346040B2 (en) Data merging management method based on data type, memory storage device and memory control circuit unit
TWI805445B (zh) 借助額外實體位址資訊來進行記憶體裝置之存取控制的方法、記憶體裝置以及記憶體裝置的控制器
US11604735B1 (en) Host memory buffer (HMB) random cache access
US20190310795A1 (en) Suspending and resuming a read operation for a non-volatile memory
US11556249B2 (en) Delaying random data relocation for reducing write amplification in storage 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
FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 6