KR101623327B1 - 호스트에서 저장 디바이스로의 삭제된 데이터에 대한 힌트 제공 - Google Patents
호스트에서 저장 디바이스로의 삭제된 데이터에 대한 힌트 제공 Download PDFInfo
- Publication number
- KR101623327B1 KR101623327B1 KR1020157013925A KR20157013925A KR101623327B1 KR 101623327 B1 KR101623327 B1 KR 101623327B1 KR 1020157013925 A KR1020157013925 A KR 1020157013925A KR 20157013925 A KR20157013925 A KR 20157013925A KR 101623327 B1 KR101623327 B1 KR 101623327B1
- Authority
- KR
- South Korea
- Prior art keywords
- host
- data
- storage device
- logical addresses
- addresses
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
-
- G06F17/30221—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
저장 디바이스는 메모리 및 프로세서를 포함한다. 프로세서는 각각의 로직 어드레스들에 호스트에 대한 데이터 아이템들을 저장하고, 로직 어드레스들의 제1 서브셋을 자주 액세스되는 로직 어드레스들로서 식별하고, 로직 어드레스들의 제2 서브셋을 드물게 액세스되는 로직 어드레스들로서 식별하고, 자주 액세스되는 로직 어드레스들을 드물게 액세스되는 로직 어드레스들과 구분하여 관리하고, 사용자에 의해 삭제된 것으로서 호스트에 의해 식별된 데이터를 저장하는 데 사용되는 하나 이상의 로직 어드레스의 표시를 호스트에서 수신하고, 호스트에 의해 표시된 로직 어드레스들을 드물게 액세스되는 로직 어드레스들에 추가하도록 구성된다.
Description
본 발명은 개괄적으로 메모리 시스템에 관한 것으로, 특히 저장 디바이스에서 데이터를 관리하기 위한 방법에 관한 것이다.
데이터의 사용 패턴에 따라 메모리에 데이터를 저장하기 위한 다양한 기술들이 해당 기술분야에 알려져 있다. 예를 들어, 개시 내용이 참조로서 본 명세서에 포함된 미국 특허 출원 공개 2009/0049234는 제1 및 제2 메모리층을 포함하는 솔리드 스테이트 메모리에 데이터를 저장하는 저장 기법을 설명한다. 제1 평가를 실행하여 수신된 데이터가 핫 데이터(hot data)인지 콜드 데이터(cold data)인지 결정한다. 핫 데이터로 평가된 수신된 데이터는 제1 메모리층에 저장되고, 콜드 데이터로 평가된 수신된 데이터는 제2 메모리층에 저장된다. 추가로, 제2 평가를 실행하여 제1 메모리층에 저장된 데이터가 핫 데이터인지 콜드 데이터인지 결정한다. 이어서 제2 평가동안 콜드 데이터로 평가된 데이터는 제1 메모리층에서 제2 메모리층으로 이동된다.
다른 예로서, 개시 내용이 참조로서 본 명세서에 포함된 미국 특허 출원 공개 2011/0010489는 플래시 메모리 디바이스의 복수의 로직 블록을 관리하기 위한 로직 블록 관리 방법을 설명한다. 방법은 플래시 메모리 컨트롤러를 제공하는 단계, 및 로직 블록들을 복수의 로직 구역으로 분류하는 단계를 포함하고, 각 로직 블록은 로직 구역들 중 하나에 맵핑된다. 방법은 또한 각 로직 블록에 대하여 사용 카운트 값을 카운팅하는 단계, 및 사용 카운트 값들에 따라 로직 블록들과 로직 구역들 간의 맵핑 관계를 동적으로 조정하는 단계를 추가로 포함한다. 따라서, 로직 블록 관리 방법은 효과적으로 로직 구역들을 활용하는 단계를 포함하여 로직 블록들의 사용 패턴들을 결정하고 상이한 메커니즘을 사용해서 데이터를 기록하여, 플래시 메모리 저장 디바이스의 성능을 증진시키도록 할 수 있다.
핫 데이터 및 콜드 데이터를 관리하는 또 다른 예시가 2010년 5월, 홍과 신(Hong and Shin)에 의한, 저장 네트워크 아키텍처 및 병렬 I/O에 관한 2010 국제 워크샵 "SLC/MLC 조합형 플래시 메모리를 사용한 NAND 플래시 기반 디스크 캐시"에서 설명되고, 본 명세서에서 참조로서 포함된다.
본 명세서에서 설명하는 본 발명의 실시예는 메모리 및 프로세서를 포함하는 저장 디바이스를 제공한다. 프로세서는 호스트에 대한 데이터 아이템들을 각각의 로직 어드레스(logical address)들에 저장하고, 로직 어드레스들의 제1 서브셋을 자주 액세스되는 로직 어드레스들로서 식별하고, 로직 어드레스들의 제2 서브셋을 드물게 액세스되는 로직 어드레스들로서 식별하고, 자주 액세스되는 로직 어드레스들을 드물게 액세스되는 로직 어드레스들과 구분하여 관리하고, 사용자에 의해 삭제된 것으로서 호스트에 의해 식별된 데이터를 저장하는 데 사용되는 하나 이상의 로직 어드레스의 표시를 호스트로부터 수신하고, 호스트에 의해 표시된 로직 어드레스들을 드물게 액세스되는 로직 어드레스들에 추가하도록 구성된다.
일부 실시예에서, 식별된 데이터는 하나 이상의 로직 어드레스에 저장되고 사용자에 의해 삭제된 파일을 포함한다. 다른 실시예에서, 통지(notification)는 데이터가 삭제되었다고 프로세서에 명시(specify)한다. 또 다른 실시예에서, 통지는 데이터가 드물게 액세스되는 것으로 처리될 것이라고 프로세서에 명시한다.
일부 실시예에서, 프로세서는 사용자에 의해 삭제된 것으로서 호스트에 의하여 식별된 데이터를 저장하기 위한 파티션을 메모리에 정의하도록 구성된다. 다른 실시예에서, 프로세서는 호스트로부터 메모리에서의 파티션의 위치를 수신하도록 구성된다.
본 발명의 실시예에 따라 저장장치 인터페이스 및 프로세서를 포함하는 호스트가 추가적으로 제공된다. 저장장치 인터페이스는 저장 디바이스와 통신한다. 프로세서는 저장 디바이스에 저장되고 호스트의 사용자에 의해 삭제된 데이터를 식별하고, 식별된 데이터가 호스트에 의해 저장 디바이스에 저장되었던 하나 이상의 로직 어드레스를 저장 디바이스에 보고하도록 구성된다.
본 발명의 실시예에 따라 호스트 및 저장 디바이스를 포함하는 컴퓨터가 추가적으로 제공된다. 호스트는 사용자에 의해 삭제된 데이터를 식별하고 식별된 데이터가 호스트에 의해 저장 디바이스에 저장되었던 하나 이상의 로직 어드레스를 보고하는 통지를 전송하도록 구성된다. 저장 디바이스는 호스트에 대한 데이터 아이템들을 각각의 로직 어드레스들에 저장하고, 로직 어드레스들의 제1 서브셋을 자주 액세스되는 로직 어드레스들로서 식별하고 로직 어드레스들의 제2 서브셋을 드물게 액세스되는 로직 어드레스들로서 식별하고, 자주 액세스되는 로직 어드레스들을 드물게 액세스되는 로직 어드레스들과 구분하여 관리하고, 호스트로부터 통지를 수신하고, 통지에 표시된 하나 이상의 로직 어드레스를 드물게 액세스되는 로직 어드레스들에 추가하도록 구성된다.
본 발명의 실시예에 따라, 저장 디바이스에서 각각의 로직 어드레스들에 호스트에 대한 데이터 아이템들을 저장하는 단계를 포함하는 방법이 추가적으로 제공된다. 로직 어드레스들의 제1 서브셋은 저장 디바이스에서 자주 액세스되는 로직 어드레스들로서 식별, 및 로직 어드레스들의 제2 서브셋은 드물게 액세스되는 로직 어드레스들로서 식별되고, 자주 액세스되는 로직 어드레스들은 드물게 액세스되는 로직 어드레스들과 구분하여 관리된다. 저장 디바이스에서 하나 이상의 로직 어드레스의 통지는 호스트로부터 수신되고, 이는 사용자에 의해 삭제된 것으로서 호스트에 의해 식별된 데이터를 저장하는 데 사용된다.
호스트에 의해 표시된 로직 어드레스들은 드물게 액세스되는 로직 어드레스들에 추가된다.
본 발명의 실시예에 따라, 저장 디바이스에서 호스트에 의해 데이터 아이템들을 저장하는 단계를 포함하는 방법이 제공된다. 저장 디바이스에 저장되고 호스트의 사용자에 의해 삭제된 데이터는 호스트에서 식별된다. 식별된 데이터가 호스트에 의해 저장 디바이스에 저장된 하나 이상의 로직 어드레스의 통지는 저장 디바이스에 보고된다.
본 발명은 다음 도면들과 함께 그의 실시예들의 후속하는 상세한 설명들로부터 보다 충분히 이해될 것이다.
도 1은 본 발명의 실시예에 따라 저장 디바이스에 데이터를 저장하는 호스트 디바이스를 개략적으로 도시하는 블록 다이어그램이다.
도 2는 본 발명의 실시예에 따라 호스트 디바이스에 의한 삭제 이후 저장 디바이스에서 데이터를 관리하기 위한 방법을 개략적으로 도시하는 플로 차트이다.
도 2는 본 발명의 실시예에 따라 호스트 디바이스에 의한 삭제 이후 저장 디바이스에서 데이터를 관리하기 위한 방법을 개략적으로 도시하는 플로 차트이다.
개요
일부 저장 디바이스는 자주 액세스되는("핫") 데이터와 드물게 액세스되는("콜드") 데이터에 별개의 프로세싱을 적용한다. 이러한 종류의 관리는 저장 디바이스의 효율성 및 성능을 개선한다. 그러나, 별개의 프로세싱을 성공적으로 적용하기 위하여, 저장 디바이스는 핫 데이터와 콜드 데이터를 확실히 구별할 수 있어야 한다. 본 명세서에서 설명한 본 발명의 실시예들은 저장 디바이스들이 자주 액세스되는 데이터와 드물게 액세스되는 데이터를 더 잘 구별할 수 있게 하는 방법 및 시스템을 제공한다.
일부 호스트에서, 사용자에 의해 삭제된 데이터는, 예를 들어 사용자에게 그것을 삭제 취소할 기회를 주기 위하여 저장 디바이스에 보존된다. 삭제된 데이터는 긴 기간동안 저장장치에 보존될 수 있다. 이 시간동안, 삭제된 데이터가 액세스될 가능성은 매우 낮아서, 이 데이터는 콜드 데이터로 취급될 수 있다. 그러나, 종래에는, 저장 디바이스는 데이터가 삭제되는 사실을 알지 못하고, 이러한 정보를 이용할 수 없다.
개시된 실시예에서, 사용자가 호스트에서 특정 데이터를 삭제하면, 호스트는 이 데이터를 식별하는 통지를 저장 디바이스에 전송한다. 저장 디바이스는 통지에 표시된 데이터를 콜드로 분류하고, 그에 따라 그것을 처리한다. 통지는 통상적으로 호스트에서 삭제된 데이터의 로직 어드레스를 표시한다. 일부 실시예에서, 통지는 로직 어드레스가 삭제된 데이터에 속한다는 것을 명백하게 표시한다. 다른 실시예에서, 통지는 이유 없이 로직 어드레스가 콜드로 처리될 것이라고 표시한다.
개시된 기술들을 사용하면, 저장 디바이스는 자주 액세스되는 데이터와 드물게 액세스되는 데이터를 더 잘 구별할 수 있다. 결과적으로, 처리량, 대기시간 및 신뢰성과 같은 성능 측정치들이 개선될 수 있고, 저장 디바이스의 동작 수명이 연장될 수 있다.
시스템 설명
도 1은 본 발명의 실시예에 따라 저장 디바이스(20)에 데이터를 저장하는 호스트 디바이스(10)를 개략적으로 도시하는 블록 다이어그램이다. 비휘발성 저장 디바이스를 갖는 저장 디바이스에 데이터를 저장하는 호스트는, 예를 들어, 개인용 컴퓨터, 엔터프라이즈급 저장장치 컨트롤러, 모바일 폰, 디지털 카메라, 미디어 플레이어, 탈착식 메모리 카드 또는 디바이스, 및 많은 기타 장치들을 포함할 수 있다.
호스트 디바이스(10)는 중앙 프로세싱 유닛(CPU)(25)을 포함한다. CPU(25)는 통상적으로 소프트웨어로 프로그래밍된 운영체제(OS)(30)를 실행하고, 호스트의 기능들을 수행한다. 운영체제(30)는 파일 시스템(33)을 포함하고, 이는 데이터가 저장 디바이스(20)에 저장된 파일에 관한 정보를 저장한다. 특히, 파일 시스템(33)은 각 파일이 저장 디바이스(20)에 저장된 로직 어드레스(예를 들어, 로직 블록 어드레스(Logical Block Address: LBA))들을 기록한다. 파일 시스템은 저장장치 인터페이스(35)를 통해 저장 디바이스(20)와 통신한다.
본 명세서에서 설명하는 예시 실시예에서, 저장 디바이스(20)는 솔리드 스테이트 드라이브(SSD)를 포함한다. SSD(20)는 호스트와 하나 이상의 플래시 메모리 디바이스(45) 사이에 데이터를 전달하고, SSD의 다양한 저장장치 관리 기능들을 수행하는 SSD 컨트롤러(SSD CNTRL)(40)를 포함한다. 컨트롤러(40)는 호스트(10)와 통신하기 위한 호스트 인터페이스(50), 개시된 관리 기술들을 수행하는 프로세서(55), 및 플래시 디바이스(45)들과 통신하기 위한 메모리 인터페이스(60)를 포함한다.
SSD(20)는 로직-물리(L2P) 어드레스 맵핑(70)을 관리하고, 이는 LBA들을 각각의 물리적 어드레스들, 즉, 데이터가 저장된 플래시 디바이스(45)들의 메모리 셀 블록들 내의 물리적 저장 위치에 맵핑한다.
SSD(20)는 비휘발성 메모리, 본 실시예에서 하나 이상의 NAND 플래시 메모리 디바이스(45)에 호스트(10)를 위한 데이터를 저장한다. 대안적인 실시예에서, SSD(20)의 비휘발성 메모리는 그 밖에 다른 적합한 유형의 비휘발성 메모리, 예를 들어, NOR 플래시, 차지 트랩 플래시(CTF), 상변화 RAM(PRAM), 자기 저항 RAM(MRAM) 또는 강유전체 RAM (FeRAM)을 포함할 수 있다.
도 1의 구성은 예시적인 구성이고, 이는 순수하게 개념상 명료성을 위해 도시된 것으로, 본 발명의 실시예들에 대한 제한의 수단이 아니다. 그 밖에 다른 적합한 호스트 및/또는 저장 디바이스 구성 또한 사용될 수 있다. 도 1에 도시된 예시적인 시스템 구성에서, 메모리 디바이스(45)들 및 SSD 컨트롤러(40)는 별개의 집적 회로(IC)들로서 구현된다. 그러나, 대안적인 실시예들에서, 메모리 디바이스들 및 SSD 컨트롤러는 단일의 다중-칩 패키지(MCP) 또는 시스템 온 칩(SoC) 형태의 별개의 반도체 다이에 집적될 수 있고, 내부 버스에 의해 상호접속될 수 있다. 또한 대안적으로, SSD 컨트롤러 회로의 일부 또는 전부는 하나 이상의 메모리 디바이스(45)가 배치되어 있는 동일한 다이에 상주할 수 있다. 또한 대안적으로, SSD 컨트롤러(40)의 기능 중 일부 또는 전부는 소프트웨어로 구현될 수 있으며, CPU(25) 또는 호스트 내의 다른 프로세서에 의해 수행될 수 있다. 일부 실시예들에서, CPU(25) 및 SSD 컨트롤러(40)는 동일한 다이에 제조되거나, 동일한 디바이스 패키지에서 별개의 다이에 제작될 수 있다.
SSD 컨트롤러(40)의 프로세서(55) 및/또는 CPU(25)는 하드웨어로 구현될 수 있다. 대안적으로, SSD 컨트롤러 및/또는 CPU는 적합한 소프트웨어를 실행하는 마이크로프로세서, 또는 하드웨어 및 소프트웨어 요소들의 조합을 포함할 수 있다. 일부 실시예에서, 프로세서(55) 및/또는 CPU(25)는 범용 프로세서를 포함하며, 이는 본 명세서에서 설명한 기능들을 수행하도록 소프트웨어로 프로그래밍된다. 소프트웨어는 예를 들어 네트워크를 통해, 전자 형태로 프로세서에 다운로드될 수 있거나, 그것은 대안적으로 또는 부가적으로, 자기, 광학, 또는 전자 메모리와 같은, 비일시적 유형 매체(non-transitory tangible media) 상에 제공되고/되거나 저장될 수 있다.
핫 데이터와 콜드 데이터를 구분함으로써 SSD 성능 개선
통상적으로, 호스트(10)는 데이터가 저장될 하나 이상의 LBA를 따라 SSD(20)에 저장하기 위해 각 데이터 아이템(예를 들어, 파일)을 전송한다. 실제로, 일부 LBA는 자주 액세스되는 데이터에 대응하는 반면, 다른 LBA는 드물게 액세스되는 데이터에 대응한다. 자주 액세스되는 데이터는 일반적으로 핫 데이터 또는 동적 데이터라고 지칭되고 드물게 액세스되는 데이터는 일반적으로 콜드 데이터 또는 정적 데이터라고 지칭된다. 따라서, 자주 액세스되는 데이터에 대응하는 LBA는 본 명세서에서 핫 LBA 또는 동적 LBA라고 지칭되고, 드물게 액세스되는 데이터에 대응하는 LBA는 본 명세서에서 콜드 LBA 또는 정적 LBA라고 지칭된다.
일부 실시예에서, SSD 컨트롤러(40)의 프로세서(55)는 핫 LBA 및 콜드 LBA를 개별적으로 처리하도록 구성될 수 있다. 이런 종류의 프로세싱은 SSD의 성능을 현저하게 개선한다. 예를 들어, 플래시 메모리에서 데이터는 제자리에 중복해서 기록될 수 없다. 게다가, 데이터는 통상적으로 페이지 단위로 기록되지만, 블록 단위로만 소거된다. 이러한 이유들 때문에, 최신 버전들이 새로운 물리적 저장 위치에 기록된 플래시 디바이스(45)의 메모리 블록들은 유효하지 않은 데이터의 영역들을 점점 축적한다. 프로세서(55)는 통상적으로 블록 압축("폐영역 회수(garbage collection)") 프로세스를 실행하고, 이는 단편화된 블록들의 유효 데이터를 새로운 블록으로 복사하고 소거 및 새로운 프로그래밍을 위해 단편화된 블록들을 구제한다.
핫 데이터 및 콜드 데이터가 동일한 메모리 블록 내에서 혼합 방식(inter-mixed fashion)으로 저장되면 폐영역 회수 프로세스는 드물게 액세스되는 데이터를 빈번하게 복사해야 하는데, 그 이유는 바로 그것이 핫 데이터와 섞여있기 때문이다. 결과적으로 많은 불필요한 복사 동작을 하게 되고, 그로 인해 성능이 저하된다. 반면에, SSD가 핫 데이터와 콜드 데이터를 구분하는 경우, 폐영역 회수는 효율성이 높게 수행될 수 있다. 따라서, 일부 실시예에서 프로세서(55)는 메모리 블록들의 제1 서브셋에 핫 LBA를 저장하고 메모리 블록들의 제2 서브셋에 콜드 LBA를 저장하며, 블록들의 각 서브셋 내에서 개별적으로 블록 압축을 수행한다.
다른 예로서, 일부 실시예에서 SSD는 메모리 셀 당 멀티 비트를 저장하는 멀티 레벨 셀(MLC) 플래시 디바이스를 이용하여 동작하도록 구성된다. 2 비트/셀 디바이스에서, 예를 들어, 최하위 비트(LSB) 및 최상위 비트(MSB) 페이지는 메모리 셀들의 그룹의 각각의 비트에 저장된다. 통상적으로, LSB 저장 및 검색이 MSB 저장 및 검색보다 현저히 빠르다. 따라서, 일부 실시예에서 프로세서(55)는 LSB 페이지에 핫 데이터를 저장하고 MSB 페이지에 콜드 데이터를 저장한다. 결과적으로, 평균 프로그래밍 및 판독 대기 시간이 감소한다.
위의 시나리오는 순수하게 예로서, 핫 데이터와 콜드 데이터를 서로 개별적으로 처리하는 이익을 설명하기 위하여 주어진 것이다. 대안적인 실시예에서, 프로세서(55)는 그 밖의 다른 적절한 방법으로 핫 LBA와 콜드 LBA를 개별적으로 처리할 수 있다. 그러나, 핫 데이터 및 콜드 데이터를 구분하기 위하여, 프로세서(55)는 자주 액세스되는 LBA와 드물게 액세스되는 LBA를 식별하고 구별할 수 있어야 한다. 프로세서(55)는 다양한 LBA들의 액세스 빈도를 평가하는 등의 다양한 기술을 이용하여 핫 데이터 및 콜드 데이터의 LBA들을 식별할 수 있다.
저장 디바이스로의 삭제된 파일들에 대한 호스트 표시
통상적인 호스트에서, 사용자는 파일 시스템(33)에 의해 관리되는 파일을 삭제할 수 있다. 삭제된 파일의 데이터는, 예를 들어, 사용자에게 파일을 삭제 취소할 기회를 주기 위하여, SSD에 계속 보존되어야 한다. 그럼에도 불구하고, 삭제된 파일의 데이터는 다시 액세스될 확률이 매우 낮아서, 이 데이터는 콜드 또는 정적 데이터로 취급될 수 있다. 그러나, SSD는 통상적으로, 예를 들어, 어떤 LBA가 어떤 파일들에 대응하는지의 파일 구조에 대하여 알지 못하고, 어떤 파일들이 삭제되었는지와 같은 정보가 없다.
일부 실시예에서, 파일 시스템(33)의 특정 파일이 사용자에 의해 삭제되면, CPU(25)는 상기 파일의 LBA들이 콜드로서 간주되고 처리되어야 한다는 것을 SSD에 알려주는 통지를 SSD 컨트롤러(40)에 전송한다. 통지를 수신하면, 프로세서(55)는 보고된 LBA들을 콜드로서 분류하고 그에 따라서 그것들을 처리한다. 많은 경우에, 이 LBA들은 그렇지 않으면 SSD에 의해 콜드로서 식별되지 않았을 것이고, 또는 훨씬 나중에 콜드로서 식별될 수 있다. 다른 경우에, 호스트 통지("힌트(hint)"로도 지칭됨)는 SSD에 상당한 성능 개선을 가능하게 한다.
삭제된 파일의 LBA들이 SSD에서 콜드로서 분류되면, 프로세서(55)는 위에서 설명한 기술들을 이용하는 등 임의의 적합한 방법으로 핫 LBA들과는 개별적으로 그것들을 처리할 수 있다.
호스트는 임의의 적합한 방법으로 임의의 적합한 인터페이스를 이용하여 SSD에 삭제된 파일의 LBA들을 표시할 수 있다. 일부 실시예에서, 통지는 LBA들이 삭제된 파일에 속한다는 것을 표시한다. 다른 실시예에서, 통지는 이유를 명시함 없이 LBA들이 콜드로 처리될 것이라고 표시한다.
도 2는 본 발명의 실시예에 따라 호스트 디바이스에 의한 삭제 이후 저장 디바이스에서 데이터 파일들을 관리하기 위한 방법을 개략적으로 도시하는 플로 차트이다. 식별하는 단계(100)에서, 호스트 디바이스(10)는 특정 파일이 사용자에 의해 삭제되었다는 것을 식별한다. 보고하는 단계(110)에서, 호스트는 저장장치 인터페이스(35)를 통해 저장 디바이스에 삭제된 파일의 로직 블록 어드레스(LBA)들을 보고한다. 수신하는 단계(120)에서, 저장 디바이스는 호스트로부터 삭제된 파일의 LBA들의 표시를 수신한다. 처리하는 단계(130)에서, 저장 디바이스는 삭제된 파일들의 LBA들을 정적으로서 처리한다.
대안적인 실시예에서, SSD(20)는 호스트에서 삭제된 데이터를 보관하는 데 사용되는, 메모리 내의 파티션을 포함한다. 이 실시예에서, SSD(20)는 호스트(10)로부터 LBA 범위, 또는 파티션의 메모리상 위치를 식별하는 파티션의 전용 명칭 공간을 갖는 표시를 수신한다. 파티션은 동적 또는 정적일 수 있다.
본 명세서에서 설명하는 실시예들이 주로 삭제된 파일들을 처리하지만, 본 명세서에서 설명하는 방법 및 시스템은 파일들 또는 파일 시스템을 필수적으로 포함하지 않는 기타 애플리케이션들에도 이용될 수 있다. 다시 말해서, 호스트는 저장 디바이스에 임의의 종류의 삭제된 데이터의 LBA들을 보고할 수 있다. 예를 들어, 호스트는 데이터 베이스에서 삭제된 파일들의 LBA를 보고할 수 있고, 이는 더 이상 저장 디바이스에 파일들의 오래된 사본을 저장할 필요가 없다.
따라서, 전술된 실시예들은 예로서 인용되어 있고 본 발명은 이상의 본 명세서에서 구체적으로 도시되고 설명된 것으로 제한되지 않는다는 것이 이해될 것이다. 오히려, 본 발명의 범주는 본 명세서에서 전술된 다양한 특징들의 조합들 및 하위-조합들 둘 모두뿐만 아니라, 전술한 설명을 읽을 때 당업자에게 떠오를 것이고 종래 기술에서 개시되지 않은 변형들 및 수정들을 포함한다.
본 특허 출원에 참조로서 포함된 문헌들은, 임의의 용어들이 이들 포함된 문헌들에서 본 명세서에 명시적으로 또는 내재적으로 이루어진 정의와 상충하는 방식으로 정의되어 있는 경우에는 본 명세서 내의 정의만이 고려되어야 한다는 점을 제외하면, 본 출원의 통합 부분인 것으로 간주되어야 한다.
Claims (13)
- 저장 디바이스로서,
메모리; 및
프로세서
를 포함하고, 상기 프로세서는,
호스트에 대한 데이터 아이템들을 각각의 로직 어드레스(logical address)들에 저장하고, 상기 로직 어드레스들의 제1 서브셋을 자주 액세스되는 로직 어드레스들로서 식별하고 상기 로직 어드레스들의 제2 서브셋을 드물게 액세스되는 로직 어드레스들로서 식별하고, 상기 자주 액세스되는 로직 어드레스들을 상기 드물게 액세스되는 로직 어드레스들과 구분하여 관리하고, 사용자에 의해 삭제된 것으로서 상기 호스트에 의해 식별된 데이터를 저장하는 데 사용되는 하나 이상의 로직 어드레스의 표시를 상기 호스트로부터 수신하고, 상기 호스트에 의해 표시된 상기 로직 어드레스들을 상기 드물게 액세스되는 로직 어드레스들에 추가하도록 구성된, 저장 디바이스. - 제1항에 있어서, 상기 식별된 데이터는, 상기 하나 이상의 로직 어드레스에 저장되고 상기 사용자에 의해 삭제된 파일을 포함하는, 저장 디바이스.
- 제1항에 있어서, 통지(notification)는 상기 데이터가 삭제되었다고 상기 프로세서에 명시(specify)하는, 저장 디바이스.
- 제1항에 있어서, 통지는 상기 데이터가 드물게 액세스되는 것으로서 처리될 것이라고 상기 프로세서에 명시하는, 저장 디바이스.
- 제1항에 있어서, 상기 프로세서는 삭제된 것으로서 상기 호스트에 의해 식별된 상기 데이터를 저장하기 위한 파티션을 상기 메모리에 정의하도록 구성된, 저장 디바이스.
- 제5항에 있어서, 상기 프로세서는 상기 메모리 내의 상기 파티션의 위치를 상기 호스트로부터 수신하도록 구성된, 저장 디바이스.
- 컴퓨터로서,
호스트 - 상기 호스트는 사용자에 의해 삭제된 데이터를 식별하고
상기 식별된 데이터가 상기 호스트에 의해 저장 디바이스에 저장된 하나 이상의 로직 어드레스를 보고하는 통지를 전송하도록 구성됨 -; 및
저장 디바이스
를 포함하고, 상기 저장 디바이스는 상기 호스트에 대한 데이터 아이템들을 각각의 로직 어드레스들에 저장하고, 상기 로직 어드레스들의 제1 서브셋을 자주 액세스되는 로직 어드레스들로서 식별하고 상기 로직 어드레스들의 제2 서브셋을 드물게 액세스되는 로직 어드레스들로서 식별하고, 상기 자주 액세스되는 로직 어드레스들을 상기 드물게 액세스되는 로직 어드레스들과 구분하여 관리하고, 상기 호스트로부터 상기 통지를 수신하고, 상기 통지에 표시된 상기 하나 이상의 로직 어드레스를 상기 드물게 액세스되는 로직 어드레스들에 추가하도록 구성된, 컴퓨터. - 저장 디바이스에서 데이터를 관리하기 위한 방법으로서,
저장 디바이스에서, 호스트에 대한 데이터 아이템들을 각각의 로직 어드레스들에 저장하는 단계;
상기 저장 디바이스에서, 상기 로직 어드레스들의 제1 서브셋을 자주 액세스되는 로직 어드레스들로서 식별하고 상기 로직 어드레스들의 제2 서브셋을 드물게 액세스되는 로직 어드레스들로서 식별하고, 상기 자주 액세스되는 로직 어드레스들을 상기 드물게 액세스되는 로직 어드레스들과 구분하여 관리하는 단계;
상기 저장 디바이스에서, 사용자에 의해 삭제된 것으로서 상기 호스트에 의해 식별된 데이터를 저장하는 데 사용되는 하나 이상의 로직 어드레스의 표시를 상기 호스트로부터 수신하는 단계; 및
상기 호스트에 의해 표시된 상기 로직 어드레스들을 상기 드물게 액세스되는 로직 어드레스들에 추가하는 단계를 포함하는, 저장 디바이스에서 데이터를 관리하기 위한 방법. - 제8항에 있어서,
상기 식별된 데이터는, 상기 하나 이상의 로직 어드레스에 저장되고 상기 사용자에 의해 삭제된 파일을 포함하는, 저장 디바이스에서 데이터를 관리하기 위한 방법. - 제8항에 있어서, 통지는 상기 데이터가 삭제되었다고 상기 저장 디바이스에 명시하는, 저장 디바이스에서 데이터를 관리하기 위한 방법.
- 제8항에 있어서, 통지는 상기 데이터가 드물게 액세스되는 것으로서 처리될 것이라고 상기 저장 디바이스에 명시하는, 저장 디바이스에서 데이터를 관리하기 위한 방법.
- 제8항에 있어서, 상기 데이터 아이템들을 저장하는 단계는 삭제된 것으로서 상기 호스트에 의해 식별된 상기 데이터를 저장하기 위한 파티션을 상기 저장 디바이스에 정의하는 단계를 포함하는, 저장 디바이스에서 데이터를 관리하기 위한 방법.
- 제12항에 있어서, 상기 저장 디바이스에서 상기 파티션의 위치를 상기 호스트로부터 수신하는 단계를 포함하는, 저장 디바이스에서 데이터를 관리하기 위한 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/693,196 US8984251B2 (en) | 2012-12-04 | 2012-12-04 | Hinting of deleted data from host to storage device |
US13/693,196 | 2012-12-04 | ||
PCT/US2013/068753 WO2014088749A1 (en) | 2012-12-04 | 2013-11-06 | Hinting of deleted data from host to storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150079846A KR20150079846A (ko) | 2015-07-08 |
KR101623327B1 true KR101623327B1 (ko) | 2016-05-20 |
Family
ID=49627101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157013925A KR101623327B1 (ko) | 2012-12-04 | 2013-11-06 | 호스트에서 저장 디바이스로의 삭제된 데이터에 대한 힌트 제공 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8984251B2 (ko) |
EP (1) | EP2929425A1 (ko) |
JP (1) | JP6161721B2 (ko) |
KR (1) | KR101623327B1 (ko) |
CN (1) | CN104813270B (ko) |
TW (1) | TWI498735B (ko) |
WO (1) | WO2014088749A1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6555259B2 (ja) * | 2014-06-19 | 2019-08-07 | 日本電気株式会社 | 情報処理装置、データ格納方法、及び、プログラム |
KR102580820B1 (ko) * | 2016-03-10 | 2023-09-20 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10031689B2 (en) | 2016-09-15 | 2018-07-24 | Western Digital Technologies, Inc. | Stream management for storage devices |
CN107870728B (zh) | 2016-09-23 | 2021-02-09 | 伊姆西Ip控股有限责任公司 | 用于移动数据的方法和设备 |
CN114303123A (zh) * | 2019-08-27 | 2022-04-08 | 华为技术有限公司 | 一种固态硬盘的数据存储方法、装置及固态硬盘ssd |
CN112445412B (zh) * | 2019-08-28 | 2024-06-11 | 华为技术有限公司 | 一种数据存储方法及装置 |
JP2022051086A (ja) * | 2020-09-18 | 2022-03-31 | キオクシア株式会社 | メモリシステム |
US11907123B2 (en) * | 2021-04-20 | 2024-02-20 | International Business Machines Corporation | Flash memory garbage collection |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090049234A1 (en) | 2007-08-14 | 2009-02-19 | Samsung Electronics Co., Ltd. | Solid state memory (ssm), computer system including an ssm, and method of operating an ssm |
US20110161588A1 (en) | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Formation of an exclusive ownership coherence state in a lower level cache |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10222989A (ja) * | 1996-09-18 | 1998-08-21 | Nippon Steel Corp | 多値半導体記憶装置及びその書き込み方法と読み出し方法並びに記憶媒体 |
US7392234B2 (en) | 1999-05-18 | 2008-06-24 | Kom, Inc. | Method and system for electronic file lifecycle management |
US7143240B2 (en) * | 2003-10-31 | 2006-11-28 | International Business Machines Corporation | System and method for providing a cost-adaptive cache |
GB0407384D0 (en) * | 2004-03-31 | 2004-05-05 | Ignios Ltd | Resource management in a multicore processor |
US7912877B2 (en) | 2005-05-20 | 2011-03-22 | Microsoft Corporation | Leveraging garbage collection to dynamically infer heap invariants |
KR101257848B1 (ko) * | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법 |
US20080104333A1 (en) * | 2006-10-31 | 2008-05-01 | Veazey Judson E | Tracking of higher-level cache contents in a lower-level cache |
TWI400707B (zh) | 2009-07-09 | 2013-07-01 | Phison Electronics Corp | 快閃記憶體邏輯區塊管理方法及其控制電路與儲存系統 |
CN102473140B (zh) * | 2009-07-17 | 2015-05-13 | 株式会社东芝 | 存储器管理装置 |
JP5322978B2 (ja) * | 2010-03-04 | 2013-10-23 | 株式会社東芝 | 情報処理装置及び方法 |
US9189403B2 (en) * | 2009-12-30 | 2015-11-17 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
US8782370B2 (en) * | 2011-05-15 | 2014-07-15 | Apple Inc. | Selective data storage in LSB and MSB pages |
US9442858B2 (en) * | 2012-07-13 | 2016-09-13 | Ianywhere Solutions, Inc. | Solid state drives as a persistent cache for database systems |
-
2012
- 2012-12-04 US US13/693,196 patent/US8984251B2/en active Active
-
2013
- 2013-11-06 JP JP2015545058A patent/JP6161721B2/ja active Active
- 2013-11-06 CN CN201380061251.4A patent/CN104813270B/zh active Active
- 2013-11-06 WO PCT/US2013/068753 patent/WO2014088749A1/en active Application Filing
- 2013-11-06 EP EP13795093.7A patent/EP2929425A1/en not_active Ceased
- 2013-11-06 KR KR1020157013925A patent/KR101623327B1/ko active IP Right Grant
- 2013-11-26 TW TW102143062A patent/TWI498735B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090049234A1 (en) | 2007-08-14 | 2009-02-19 | Samsung Electronics Co., Ltd. | Solid state memory (ssm), computer system including an ssm, and method of operating an ssm |
US20110161588A1 (en) | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Formation of an exclusive ownership coherence state in a lower level cache |
Also Published As
Publication number | Publication date |
---|---|
EP2929425A1 (en) | 2015-10-14 |
TWI498735B (zh) | 2015-09-01 |
CN104813270A (zh) | 2015-07-29 |
JP6161721B2 (ja) | 2017-07-12 |
JP2015537312A (ja) | 2015-12-24 |
US8984251B2 (en) | 2015-03-17 |
CN104813270B (zh) | 2018-06-05 |
TW201432455A (zh) | 2014-08-16 |
US20140156967A1 (en) | 2014-06-05 |
KR20150079846A (ko) | 2015-07-08 |
WO2014088749A1 (en) | 2014-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101623327B1 (ko) | 호스트에서 저장 디바이스로의 삭제된 데이터에 대한 힌트 제공 | |
US10838859B2 (en) | Recency based victim block selection for garbage collection in a solid state device (SSD) | |
US10739996B1 (en) | Enhanced garbage collection | |
US9152559B2 (en) | Metadata storage associated with wear-level operation requests | |
US10649661B2 (en) | Dynamically resizing logical storage blocks | |
US9747202B1 (en) | Storage module and method for identifying hot and cold data | |
KR101852668B1 (ko) | 어드레스 매핑 | |
US8438361B2 (en) | Logical block storage in a storage device | |
TWI460590B (zh) | 用於資料儲存之方法及設備 | |
CN110678836A (zh) | 用于键值存储的持久性存储器 | |
US20130073798A1 (en) | Flash memory device and data management method | |
US10372382B2 (en) | Methods and apparatus for read disturb detection based on logical domain | |
US11157402B2 (en) | Apparatus and method for managing valid data in memory system | |
US20150186259A1 (en) | Method and apparatus for storing data in non-volatile memory | |
KR20200068941A (ko) | 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치 | |
US11669461B2 (en) | Logical to physical table fragments | |
US20190042405A1 (en) | Storing data based on writing frequency in data storage systems | |
US9081660B2 (en) | Method and system for efficiently swapping pieces into and out of DRAM | |
US9880930B2 (en) | Method for operating controller and method for operating device including the same | |
Huang et al. | Migration-based hybrid cache design for file systems over flash storage devices | |
Meruva | LFSM-a system to optimize the random write performance of FLASH memory |
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: 20190417 Year of fee payment: 4 |