KR102556431B1 - 이종 불휘발성 메모리 형태를 갖는 솔리드 스테이트 드라이브 - Google Patents

이종 불휘발성 메모리 형태를 갖는 솔리드 스테이트 드라이브 Download PDF

Info

Publication number
KR102556431B1
KR102556431B1 KR1020170177853A KR20170177853A KR102556431B1 KR 102556431 B1 KR102556431 B1 KR 102556431B1 KR 1020170177853 A KR1020170177853 A KR 1020170177853A KR 20170177853 A KR20170177853 A KR 20170177853A KR 102556431 B1 KR102556431 B1 KR 102556431B1
Authority
KR
South Korea
Prior art keywords
storage device
memory
interface
write
memory bank
Prior art date
Application number
KR1020170177853A
Other languages
English (en)
Other versions
KR20180102483A (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 KR20180102483A publication Critical patent/KR20180102483A/ko
Application granted granted Critical
Publication of KR102556431B1 publication Critical patent/KR102556431B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0629Configuration or reconfiguration of storage systems
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • 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/068Hybrid storage device
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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 (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명에 따른 저장 장치는 제1 컨트롤러, 복수의 저속 불휘발성 메모리 셀들을 포함하는 제1 메모리 뱅크, 복수의 고속 영구 메모리 셀들을 포함하는 제2 메모리 뱅크, 및 스토리지 인터페이스를 포함하고, 제1 컨트롤러는 스토리지 인터페이스를 통해 수신된 입력 출력 요청들에 응답하도록 구성되고, 복수의 저속 불휘발성 메모리 셀들 각각은 고속 영구 메모리 셀들 중 일부보다 읽기 레이턴시에서 적어도 10배만큼 크고, 고속 영구 메모리 셀들 중 일부보다 쓰기 레이턴시에서 적어도 10배 크고, 스토리지 장치는 고속 영구 메모리 셀들보다 적어도 10배만큼 많은 저속 불휘발성 메모리 셀들을 포함한다.

Description

이종 불휘발성 메모리 형태를 갖는 솔리드 스테이트 드라이브{SOLID STATE DRIVE WITH HETEROGENEOUS NONVOLATILE MEMORY TYPES}
본 발명에 따른 하나 또는 그 이상의 실시 예들의 사상들은 데이터 스토리지에 관한 것으로, 더욱 상세하게는 이종 스토리지(heterogeneous storage)를 포함하는 스토리지 장치에 관한 것이다.
대규모 스토리지 아키텍처들은 입력되는 쓰기 입력/출력 요청들(IO requests)을 로깅(logging)하기 위하여 불휘발성 랜덤 액세스 메모리(NVRMA; nonvolatile random access memory) 또는 불휘발성 듀얼 인-라인 메모리 모듈(NVDIMM; nonvolatile dual in-line memory module)를 보조하는 배터리를 사용할 수 있다. 결국 IO 요청들은 저 성능의 불휘발성 데이터 저장 매체로 플러시될 수 있다. NVRAM/NVDIMM 솔루션들은 준비 영역(staging area)으로 사용되어 쓰기 지연을 감소시킬 수 있다. 그러나, 이러한 솔루션들은 작은 용량 및 증가된 복잡성(예를 들어, 중앙 처리 유닛(CPU; central processing unit)과 관련된 비동기식 DRAM 리프레쉬 (ADR) 동기화), 그리고 시스템에 배터리를 포함해야할 필요성으로 인한 제한된 기능을 가질 수 있다. 더욱이, 이러한 시스템의 성능은 시스템이 포함할 수 있는 VNRAM들 및/또는 NVDIMM들의 개수에 의해 제한될 수 있고, 일부 애플리케이션에서, 시스템 환경 제약으로 인하여 배터리들을 포함하는 것이 받아들여질 수 없고, 배터리가 부착된 솔루션이 동작하지 않도록 할 수 있다.
배터리 보조형 NVRAM 또는 NVDIMM의 사용을 더욱 복잡하게 하는 것은 NVDIM들 및/또는 NVRAM들의 크기를 결정하여 높은 쓰기 레이턴시 지터에 대한 비용을 절충할 필요가 있다는 것이다. 즉, 배터리 보조형 NVRAM 또는 NVDIMM을 포함하는 스토리지 시스템에 대한 향상된 대안이 요구된다.
본 발명의 목적은 향상된 성능을 갖는 이종 불휘발성 메모리 형태를 구비한 솔리드 스테이트 드라이브를 제공하는데 있다.
본 발명의 실시 예들의 사상들은 스토리지 장치에 관한 것이다. 스토리지 장치는 낮은-레이턴시의 영구 메모리 및 높은-레이턴시의 불휘발성 메모리 모두를 포함한다. 영구 메모리는 쓰기 캐싱 또는 저널링을 위하여 사용될 수 있다. B-트리는 영구 메모리에 임시적으로 저정된 쓰기 요청들의 인덱스를 유지하기 위해 사용될 수 있다. 가비지 콜렉션은 쓰기 요청들이 영구 메모리에 저장되는 동안 불휘발성 메모리에서 수행될 수 있다.
본 발명의 일 실시 예에 따르면, 저장 장치는 제1 컨트롤러, 복수의 저속 불휘발성 메모리 셀들을 포함하는 제1 메모리 뱅크, 복수의 고속 영구 메모리 셀들을 포함하는 제2 메모리 뱅크, 및 스토리지 인터페이스를 포함한다. 상기 제1 컨트롤러는 상기 스토리지 인터페이스를 통해 수신된 입력 출력 요청들에 응답하도록 구성되고, 상기 복수의 저속 불휘발성 메모리 셀들 각각은 상기 고속 영구 메모리 셀들 중 일부보다 읽기 레이턴시에서 적어도 10배만큼 크고, 상기 고속 영구 메모리 셀들 중 일부보다 쓰기 레이턴시에서 적어도 10배 크고, 상기 스토리지 장치는 상기 고속 영구 메모리 셀들보다 적어도 10배만큼 많은 상기 저속 불휘발성 메모리 셀들을 포함한다.
일 실시 예에서, 상기 제2 메모리 뱅크의 페이지 크기는 상기 제2 메모리 뱅크의 블록 크기와 같다.
일 실시 예에서, 상기 저속 불휘발성 메모리 셀들 각각은 상기 고속 영구 메모리 셀들의 일부보다 읽기 레이턴시에서 적어도 100배만큼 크고, 상기 고속 영구 메모리 셀들의 일부보다 쓰기 레이턴시에서 적어도 100배만큼 크다.
일 실시 예에서, 상기 스토리지 인터페이스는 PCIe(Peripheral Component Interconnect Express) 인터페이스, 이더넷을 통한 RDMA(remote direct memory access) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, 파이버 채널(Fibre Channel) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, 및 NVMe(Non Volatile Memory Express) 인터페이스를 포함하는 그룹으로부터 선택된다.
일 실시 예에서, 3.5 인치 하드 드라이브 폼-팩터 및 2.5 인치 하드 드라이브 폼-팩터를 포함하는 그룹으로부터 선택되는 폼-팩터를 갖는다.
일 실시 예에서, 상기 스토리지 인터페이스를 통해 쓰기 요청을 수신한 경우, 상기 제2 메모리 뱅크에 상기 쓰기 요청을 저장하고, 상기 쓰기 요청을 실행하고, 상기 제2 메모리 뱅크로부터 상기 쓰기 요청을 삭제하도록 구성된다.
일 실시 예에서, 상기 제2 메모리 뱅크의 일부는 순환 버퍼(circular buffer)로써 동작하도록 구성되고, 상기 스토리지 장치는 상기 스토리지 인터페이스를 통해 쓰기 요청을 수신한 경우, 상기 쓰기 요청을 상기 순환 버퍼에 저장하도록 구성된다.
일 실시 예에서, 상기 스토리지 인터페이스를 통해 상기 쓰기 요청을 수신한 경우, 쓰기 요청들의 B-트리 인덱스에 상기 쓰기 요청에 대한 인덱스 엔트리를 저장하도록 더 구성된다.
일 실시 예에서, 상기 스토리지 장치는 상기 제1 메모리 뱅크에서 가비지 콜렉션을 수행하고, 동시에 상기 순환 버퍼에 쓰기 요청들을 저장하도록 구성된다.
일 실시 예에서, 상기 스토리지 장치는 상기 제1 메모리 뱅크에서의 동작들을 제어하도록 구성된 제2 컨트롤러를 포함하고, 상기 스토리지 장치는 상기 순환 버퍼의 자유 공간의 양 및 상기 제2 메모리 뱅크의 최대 쓰기 속도의 비율로써 미래 버퍼링 구간을 연산하고, 상기 제2 컨트롤러가 상기 미래 버퍼링 구간과 동일한 길이를 갖는 시간 구간 동안 가비지 콜렉션 동작들을 수행하도록 명령하도록 구성된다.
일 실시 예에서, 상기 스토리지 장치는 상기 제1 메모리 뱅크에서의 동작들을 제어하도록 구성된 제2 컨트롤러를 포함하고, 상기 스토리지 장치는 상기 순환 버퍼의 자유 공간의 양 및 상기 제2 메모리 뱅크의 최대 쓰기 속도의 비율로써 미래 버퍼링 구간을 연산하고, 상기 제1 메모리 뱅크의 더티 블록 비율이 제1 기준치를 초과하는 경우, 상기 제2 컨트롤러가 상기 미래 버퍼링 구간과 동일한 길이를 갖는 시간 구간 동안 가비지 콜렉션 동작들을 수행하도록 명령하도록 구성된다.
일 실시 예에서, 상기 스토리지 장치는 상기 가비지 콜렉션 동작들 동안 상기 미래 버퍼링 구간을 재연산하고, 상기 재연산된 미래 버퍼링 구간이 이전 연산된 미래 버퍼링 구간을 초과하는 경우, 상기 제2 컨트롤러로 상기 재연산된 미래 버퍼링 구간을 알리도록 더 구성된다.
일 실시 예에서, 상기 스토리지 장치는, 상기 제1 메모리 뱅크내의 위치에 대한 쓰기 요청을 수신하고, 상기 B-트리가 이전에 생성된 인덱스 엔트리를 포함하고, 상기 제2 메모리 뱅크가 상기 제1 메모리 뱅크내의 위치와 동일한 위치에 대응하는 쓰기 요청을 포함하는 경우, 상기 순환 버퍼에 상기 쓰기 요청을 저장하고, 상기 B-트리 인덱스에 상기 쓰기 요청에 대한 인덱스 엔트리를 저장하고, 상기 순환 버퍼로부터 상기 이전에 생성된 인덱스 엔트리를 삭제하고, 상기 순환 버퍼에서 상기 이전에 생성된 인덱스 엔트리와 대응하는 상기 쓰기 요청을 삭제하도록 구성된다.
일 실시 예에서, 상기 스토리지 장치는 상기 제1 메모리 뱅크 내의 위치에 대한 읽기 요청을 수신하고, 상기 B-트리가 상기 제1 메모리 뱅크의 상기 위치와 동일한 위치에 대하여 이전에 생성된 인덱스 엔트리를 포함하는 경우, 상기 읽기 요청에 상기 순환 버퍼로부터 데이터로 응답하도록 구성된다.
일 실시 예에서, 상기 스토리지 장치는 상기 순환 버퍼의 빈 부분이 기준치 이하로 떨어질 때, 상기 스토리지 인터페이스를 통해 커맨드 완료를 전송하는 것을 지연하도록 구성된다.
본 발명의 일 실시 예에 따르면, 스토리지 시스템의 동작 방법이 제공된다. 상기 스토리지 장치는 복수의 저속 불휘발성 메모리 셀들을 포함하는 제1 메모리 뱅크, 복수의 고속 영구 메모리 셀들을 포함하는 제2 메모리 뱅크, 및 스토리지 인터페이스를 포함하고, 상기 제1 컨트롤러는 상기 스토리지 인터페이스를 통해 수신된 입력 출력 요청들에 응답하도록 구성되고, 상기 복수의 저속 불휘발성 메모리 셀들 각각은 상기 고속 영구 메모리 셀들 중 일부보다 읽기 레이턴시에서 적어도 10배만큼 크고, 상기 고속 영구 메모리 셀들 중 일부보다 쓰기 레이턴시에서 적어도 10배 크고, 상기 스토리지 장치는 상기 고속 영구 메모리 셀들보다 적어도 10배만큼 많은 상기 저속 불휘발성 메모리 셀들을 포함한다. 상기 동작 방법은 상기 스토리지 인터페이스를 통해 쓰기 요청을 수신하는 단계, 및 상기 쓰기 요청을 상기 제2 메모리 뱅크의 순환 버퍼에 저장하는 단계를 포함한다.
일 실시 예에서, 상기 방법은 상기 순환 버퍼에 상기 쓰기 요청을 저장하는 동안 상기 제1 메모리 뱅크에서 가비지 콜렉션을 수행하는 단계를 더 포함한다.
일 실시 예에서, 상기 방법은 상기 쓰기 요청에 대한 인덱스 엔트리를 쓰기 요청들의 B-트리 인덱스에 저장하는 단계를 더 포함한다.
일 실시 예에서, 상기 방법은 상기 순환 버퍼에 상기 쓰기 요청을 저장하는 단계 이전에, 상기 순환 버퍼의 자유 공간의 용량 및 상기 제2 메모리 뱅크의 최대 쓰기 속도의 비율로써 미래 버퍼링 구간을 연산하는 단계를 더 포함하고, 상기 가지비 콜렉션을 수행하는 단계는 상기 미래 버퍼링 구간과 동일한 길이를 갖는 시간 구간 동안 가비지 콜렉션을 수행하는 단계를 포함한다.
본 발명의 일 실시 예에 따르면, 스토리지 시스템은 복수의 스토리지 장치들을 포함하고, 상기 복수의 스토리지 장치들 각각은 복수의 저속 불휘발성 메모리 셀들을 포함하는 제1 메모리 뱅크, 복수의 고속 영구 메모리 셀들을 포함하는 제2 메모리 뱅크, 및 스토리지 인터페이스를 포함하고, 상기 제1 컨트롤러는 상기 스토리지 인터페이스를 통해 수신된 입력 출력 요청들에 응답하도록 구성되고, 상기 복수의 저속 불휘발성 메모리 셀들 각각은 상기 고속 영구 메모리 셀들 중 일부보다 읽기 레이턴시에서 적어도 10배만큼 크고, 상기 고속 영구 메모리 셀들 중 일부보다 쓰기 레이턴시에서 적어도 10배 크고, 상기 스토리지 장치는 상기 고속 영구 메모리 셀들보다 적어도 10배만큼 많은 상기 저속 불휘발성 메모리 셀들을 포함하고, 상기 시스템은 상기 제2 메모리 뱅크들 각각을 모아서 가상 제2 메모리 뱅크를 형성하도록 구성된다.
본 발명에 따르면, 향상된 성능을 갖는 이종 불휘발성 메모리 형태를 구비한 솔리드 스테이트 드라이브가 제공된다.
본 발명의 이러한 그리고 다른 특징들 및 이점들은 상세한 설명, 특허청구범위, 및 첨부된 도면들을 참조하여 분명하게 되고 이해될 것이다.
도 1은 본 발명의 실시 예에 따른, 호스트 및 스토리지 장치의 블록도이다.
도 2는 본 발명의 실시 예에 따른, 메모리 도면이다.
도 3은 본 발명의 실시 예에 따른, 스토리지 장치의 블록도이다.
도 4는 본 발명의 실시 예에 따른, 스토리지 장치의 블록도이다.
도 5는 본 발명의 실시 예에 따른, 스토리지 장치의 블록도이다.
도 6은 본 발명의 실시 예에 따른, 스토리지 시스템의 블록도이다.
도 7은 본 발명의 실시 예에 따른, 스토리지 시스템의 블록도이다.
이하에서 첨부된 도면들과 연관되어 제시되는 상세한 설명은 본 발명에 따라 제공되는 이종 NVM 타입들을 갖는 SSD의 예시적인 실시 예들의 설명인 것으로 간주되고, 본 발명이 구현되거나 또는 활용될 수 있는 특정한 형태를 나타내는 것으로 간주되지 않는다. 상세한 설명은 개시된 실시 예들을 참조하여 본 발명의 특징들을 제시한다. 그러나 동일하거나 또는 동등한 기능들 및 구조들이 본 발명의 사상 및 범위 내에 포함되는 것으로 간주될 수 있는 다른 실시 예들에 의해 달성될 수 있음이 이해될 것이다. 본문에서 다른 곳에 표기되는 바와 같이, 유사한 참조번호들은 유사한 요소들 또는 특징들을 지칭하는 것으로 의도된다.
도 1을 참조하면, 일부 실시 예들에서, 호스트(100)는 2개의 메모리 뱅크들을 포함하는 스토리지 장치(예를 들어, 이종 SSD(heterogeneous solid state drive))와 연결된다. 하나의 뱅크는 메인 백업 저장소로 동작하도록 구성된 NAND 플래시 메모리일 수 있는 상대적으로 느린 불휘발성 메모리(110)이고, 하나의 뱅크는 상대적으로 빠른 영구 메모리(persistent memory)(120)이다. 영구 메모리(120)는 불휘발성 메모리일 수 있고, 본문에서 상대적으로 느린 불휘발성 메모리(110)와 구분하기 위하여 "영구 메모리(persistent memory)"라 칭한다. 본문에서 사용되는 바와 같이, "불휘발성 메모리(nonvolatile memory)", "영구 스토리지(persistent storage)", 및 "영구 메모리(persistent memory)"의 용어들 전부는 제공되는 전력 없이 저장된 데이터를 유지하는 메모리를 칭한다.
Z-NANDTM, 3D X-POINTTM, 상 변화 메모리(Phase Change Memory), 저항 RAM, STTRMA 등과 같은 영구 메모리들은 상당히 빠른 액세스 및 낮은 IO 레이턴시들을 제공하는데 사용된다. NAND 컨트롤러(115)는 불휘발성 메모리(110)에 인터페이스를 제공하고 불휘발성 메모리(110)를 제어한다. 영구 메모리 컨트롤러(125)는 영구 메모리(120)에 인터페이스를 제공하고, 영구 메모리(120)를 제어한다. 스토리지 인터페이스(140)와 연결된 스토리지 장치 컨트롤러(130)는 스토리지 인터페이스(140)를 통해 호스트(100)로부터 수신된 IO 요청들에 응답한다.
본문에서 사용되는 바와 같이, "메모리 셀(memory cell)"의 용어는 데이터를 저장할 수 있는 구성들의 가장 작은 세트를 가리킨다. 예를 들어, NAND 플래시에 대하여, 스토리지 셀은 단일 플로팅 게이트 트랜지스터일 수 있고, 스토리지 셀은 싱글-레벨 셀로 구성된 경우, 데이터의 하나의 비트를 저장할 수 있고, 멀리 레벨 셀로 구성된 경우, 데이터의 복수의 비트들을 저장할 수 있다.
영구 메모리(120)는 불휘발성 메모리(100)보다 10배 또는 100배 또는 그 이상만큼 빠를 수 있다. 예를 들어, (i) 불휘발성 메모리(110)의 읽기 레이턴시는 영구 메모리(120)의 읽기 레이턴시보다 10배 또는 100배 또는 그 이상만큼 클 수 있거나 또는 (ii) 불휘발성 메모리(110)의 쓰기 레이턴시는 영구 메모리(120)의 쓰기 레이턴시보다 10배 또는 100배 또는 그 이상만큼 클 수 있다. 영구 메모리(120)의 블록 크기는 영구 메모리(120)의 페이지 크기와 동일할 수 있다. 이는 영구 메모리(120)에서 가비지 콜렉션을 불필요하게 한다. 본문에서 사용되는 바와 같이, "페이지(page)"는 한번의 동작(one operation)으로 기입될 수 있는 셀들의 최소 개수와 대응하는 메모리의 양(quantity)이다. 각 셀이 하나의 비트를 저장하는 경우(싱글-레벨 셀을 사용하는 NAND 플래시의 경우), 2048 바이트(bytes)의 페이지 크기는 16,383개(즉, 2048×8)의 셀들과 대응한다. "블록(block)"은 한번에 소거될 수 있는 셀들의 최소 개수와 대응하는 메모리의 양이다.
일부 실시 예들에서, 스토리지 장치는 3.5인치 하드 디스크 폼-팩터 (또는 대형 폼 팩터(LFF; large form factor)) 표준을 따른다. 다른 실시 예들에서, 스토리지 장치는 2.5인치 하드 디스크 폼-팩터(또는 소형 폼 팩터(SFF; small form factor)) 표준을 따른다. 다른 실시 예들에서, 스토리지 장치는 M.2 폼 팩터를 따른다. 일부 다른 실시 예들에서, 이러한 폼팩터들의 파생물들(derivatives)이 사용된다. 예를 들어, SFF는 설계서(specification)에 의해 핫-플러그/핫-스왑을 고려하나, LFF는 그렇지 않다. 따라서, 일부 실시 예들에서, 스토리지 장치는 LFF 표준의 핫-스왑될 수 있는 파생물을 따른다. 스토리지 인터페이스(140)는 스토리지 요청들 및 응답들을 교환하도록 호스트 및 스토리지 장치에 의해 일반적으로 사용되는 프로토콜 및 커넥터를 포함할 수 있다. 커넥터들 및 프로토콜들은, 예를 들어, PCIe(Peripheral Component Interconnect Express), 이더넷을 통한 RDMA(remote direct memory access), SATA(Serial Advanced Technology Attachment), 파이버 채널(Fibre Channel), SAS(Serial Attached SCSI), 또는 NVMe(Non Volatile Memory Express)를 따르거나, 이더넷 또는 USB(Universal Serial Bus)와 같은 범용 인터페이스를 따를 수 있다. 스토리지 인터페이스(140)는 스토리지 장치와 통신하는데 호스트에 의해 사용될 수 있다. 데이터 읽기 및 데이터 쓰기 요청들과 같은 입력 출력(IO/input output) 요청들 뿐만 아니라, 다양한 매체 관리 요청들(예를 들어, Identify, Get Log 등)은 스토리지 인터페이스(140)를 통해 호스트에 의해 스토리지 장치로 전송될 수 있다. 동일한 인터페이스들은 호스트(100)의 내부 메모리로부터 그리고 내부 메모리로의 데이터 전송들을 수행하는데 스토리지 장치에 의해 사용될 수 있다.
영구 메모리(120)는 불휘발성 메모리(100)로의 액세스를 가속화하고, 전체 IO 레이턴시(overall IO retency)를 감소시키는 쓰기 캐싱(write caching)을 위하여 사용될 수 있다. 이종 SSD의 영구 메모리(120)의 용량(예를 들어, 16GB)은 이종 SSD의 불휘발성 메모리(110)의 용량(예를 들어, 480GB)보다 작을 수 있다. 일부 실시 예들에서, 불휘발성 메모리(110)(예를 들어, NAND 플래시 메모리)의 용량은 이종 SSD의 용량으로서 호스트 소프트웨어에게 제공될 수 있다. 낮은-레이턴시/고-성능의 영구 메모리(120)는 호스트 소프트웨어에게 노출된 SSD 용량에 포함되지 않을 수 있다.
이종 SSD에서, NAND 플래시 메모리는 SSD 사용자들로부터의(예를 들어, 호스트(100)로부터의) 데이터를 저장하는 것을 담당하는 주 백업 저장소(main backing store)로써 동작하도록 구성된다. 이러한 SSD의 용량은 불휘발성 메모리(110)의 가용한 메모리 공간(예를 들어, NAND 플래시 메모리의 공간)과 동일하고, 논리 블록 어드레스(LBA; logical block address) 매핑은 단순히 선형적이다. 또는 FTL(flash translation layer)에 의해 관리된다. 영구 메모리(120)는 로그 선행 기입(WAL; write-ahead log)로써 동작할 수 있다. 예를 들어, 영구 메모리(120)는 모든 입력되는 쓰기들을 임시적으로 버퍼링하고, 배경 동작에서, 쓰기들을 백업 저장소(예를 들어, 불휘발성 메모리(110))로 다시 쓸 수 있다.
도 2는, 일부 실시 예들에서, 영구 메모리(120)내의 내부 데이터 조직화 및 입력되는 쓰기들을 버퍼링하고 다시 기입하는 방법을 보여준다. 영구 메모리(120)는 순환 버퍼(circular buffer)로써 사용된다. 새로운 쓰기 요청들 각각은 새로운 로그 기록 또는 현재 부분적인 전체 로그 기록 중 하나인 작업 진행 로그 기록(work-in-progress log record)에 저장된다. 로그 기록들은 고정된 크기의 데이터 청크들(예를 들어, 256kB)이고, 각 데이터 청크는 복수의 더 작은 쓰기 IO 요청들을 포함하거나 또는 복수의 더 작은 쓰기 IO 요청들로 구성된다. 요청들은 영구 메모리 LBA 공간에 순차적으로 채워진다. 영구 메모리(120)의 종료 지점에 도달한 경우, 쓰기 포인터에 의해 식별될 수 있는 기입된 위치는, 버퍼가 가득 차지 않은 경우 자유 LBA 공간을 포함하는 순한 버퍼의 시작 부분 주위를 랩핑 한다. 영구 메모리 슈퍼 블록(210)은 유효 로그 기록들의 시작 및 종료를 기록한다. 백그라운드 플러싱 절차는 유효하고 완료한 로그 기록들을 백업 저장소로(즉, 불휘발성 메모리(110))로 다시 쓰고, 그렇게 한 경우, 대응하는 영구 메모리 공간을 자유 공간으로 만든다. 이러한 방식으로, 이종 SSD에 내장된 영구 메모리(120)는 저널링 또는 WAL(write-ahead-logging) 기능을 위하여 사용될 수 있고, 이러한 동작들은 호스트 소프트웨어에게 투명(transparent)할 수 있다.
일부 실시 예들에서, 이종 SSD는 모든 버퍼링된 쓰기 요청들의 내부-메모리 B-트리 인덱스(예를 들어, 영구 메모리(120))를 더 유지할 수 있다. 이러한 인덱스는 각 원본 쓰기 요청의 LBA를 쓰기 요청을 저장하는 특정한 로그 기록들로 매핑 하는 것을 기록한다. 인덱스?z 2가지 목적들을 제공한다. 하나의 목적은 동일한 LBA 어드레스로 먼저 수신되었으나, 아직 실행되지 않은 쓰기 요청들을 제거하여 메인 백업 저장소(예를 들어, 불휘발성 메모리(110))로의 불필요한 쓰기들을 방지하기 위한 것이다. 인덱스의 다른 목적은 예를 들어, 동일한 LBA로의 쓰기 요청이 계류 중이고, 불휘발성 메모리(110)에서 아직 실행되지 않은 상황에서 영구 메모리로부터의 데이터를 사용하여 제공되어야 하는 읽기 요청들을 지원하기 위한 것이다. 본문에서 사용되는 바와 같이, B-트리는 저장된 데이터를 유지하고, 로그 시간(logarithmic time)으로 검색들, 순차적 액세스, 삽입들, 및 삭제들을 허용하는 자기 균형 트리 데이터 구조(self-balancing tree data structure)를 가리킨다. 본문에서 사용되는 바와 같이 기입될 데이터 및 데이터가 기입될 위치를 식별하는 논리 블록 어드레스(LBA)를 포함하는 쓰기 요청을 "실행(executing)" (또는 플러싱(flushing))하는것은 플래시 변환 계층에 의해 유지되는 하나 또는 그 이상의 테이블들에 따라 LBA와 대응하는 불휘발성 메모리(110)의 물리 어드레스에 기입될 데이터를 저장하는 것을 가리킨다.
도 3을 참조하면, 일부 실시 예들에서, 이종 SSD는 NAND 플래시 가비지 콜렉션과 같은 공동 백그라운드 동작들(coordinated background operations)을 수행한다. 공동 백그라운드 동작으로써 수행될 때, NAND 플래시 가비지 콜렉션은 "스마트 가비지 콜렉션(smart garbage collection)"이라 불릴 수 있다. 로그 선행 기입은 때로는 버퍼링된 쓰기 요청들을 메인 백업 저장소로 다시 기입할 수 있고, 다른 때에, 로그 선행 기입은 호스트로부터 입력되는 쓰기 요청들을 버퍼링할 수 있다. 로그 선행 기입이 호스트로부터 입력되는 쓰기 요청들을 버퍼링하는 동안, 이종 SSD는 NAND 컨트롤러로 스마트 가비지 콜렉션 요청을 발행할 수 있다. 본문에서 사용되는 바와 같이, 가비지 콜렉션은 하나 또는 그 이상의 무효 페이지들(invalid pages)을 포함하는 블록으로부터 하나 또는 그 이상의 블록들로 하나 또는 그 이상의 유효 페이지들(valid pages)을 이동하고, 블록을 소거하는 하나 또는 그 이상의 동작들을 가리킨다.
동작은 아래와 같이 진행할 수 있다. 영구 메모리 컨트롤러(125)는 데이터 후-기입(write back)없이 다음 수학식을 사용하여 미래 버퍼링 구간(FBP; future buffering period)를 예측할 수 있다.
수학식에서 Available_PM_SPACE은 버퍼링을 위하여 가용한 영구 메모리(120)의 용량이고, PM_MAX_THROUGHPUT은 영구 메모리(120)가 호스트로부터의 쓰기 요청들에 의해 채워질 수 있는 최대 비율이다. 스토리지 장치 컨트롤러(130)는 NAND 플래시 메모리 더티 블록 비율(즉, 불휘발성 메모리(110)내의 더티 블록 비율)을 체크하고, NAND 플래시 메모리 더티 블록 비율이 구성 가능한 임계 값보다 높은 경우, 스토리지 장치 컨트롤러(130)는, 화살표(310)에 의해 지시되는 바와 같이, NAND 컨트롤러(115)가 FBP와 같은 길이를 갖는 초기 시간 구간 내에서 가능한 정도로 가비지 콜렉션을 수행하도록 명령하는 스마트 가비지 콜렉션 요청을 NAND 컨트롤러(115)로 발행한다. 가비지 콜렉션 동작 동안 스토리지 장치 컨트롤러(130)는 호스트로부터 수신된 쓰기 요청들이 영구 메모리(120)를 채우는 실제 비율이 최대 가능 비율보다 적으면 변할 수 있는 FBP를 주기적으로 다시 계산하고 가비지 콜렉션 동작 동안 FBP의 임의의 증가를 NAND 컨트롤러(115)에게 알려서 NAND 컨트롤러(115)가 가비지 콜렉션 을 수행할 기회를 최대로 이용할 수 있게 한다. NAND 컨트롤러(115)는, 화살표(320)에 의해 지시되는 바와 같이, 가비지 콜렉션 동작이 종료될 때(FBP의 종료 또는 FBP의 종료 이전에 빨리 종료된 결과 중 하나), 영구 메모리 컨트롤러(125)로 알릴 수 있고, 스토리지 장치 컨트롤러(130), 영구 메모리 컨트롤러(125), 및 NAND 컨트롤러(115)의 제어에 따라, 영구 메모리(120)로부터 불휘발성 메모리(110)로의 데이터의 후 기입이, 화살표(330)에 도시된 바와 같이 재개(resume)될 수 있다. 본문에서 사용되는 바와 같이, "더티 블록 비율"은 (i) 각각이 더티 페이지들의 세트 개수보다 많은 것을 포함하는 불휘발성 메모리(110)의 블록들의 개수의 (ii) 불휘발성 메모리(110)의 블록들의 개수에 대한 비율이다.
도 4는 영구 메모리(120)에서 실행되는 로드 선행 기입을 구비한 이종 SSD가 공동 NAND 플래시 가비지 콜렉션과 함께 입력되는 쓰기 IO 요청들을 관리할 수 있는 방법을 보여준다. 새로운 쓰기 요청이, 예를 들어, 화살표(410)에 의해 지시되는 바와 같이, 스토리지 인터페이스(140)를 통해 수신되는 경우, 스토리지 장치 컨트롤러(130)는, 화살표(420)에 의해 지시되는 바와 같이 영구 메모리(120)에 새로운 로그 기록을 저장하는 영구 메모리 컨트롤러(125)로 쓰기 요청을 전송하고, 화살표(430)에 의해 지시되는 바와 같이, 스토리지 장치 컨트롤러(130)로 답신(acknowledgement)을 반환한다. 스토리지 장치 컨트롤러(130)는, 화살표(440)에 의해 지시되는 바와 같이, 답신(acknowledgement)을 상위 계층으로(예를 들어, 스토리지 인터페이스(140)를 통해 호스트 소프트웨어로) 반환한다. 동시에, 스마트 가비지 콜렉션 동작들은 불휘발성 메모리(110)에서 NAND 컨트롤러(115)에 의해 수행될 수 있다. 화살표(450)에 의해 지시되는 바와 같이, 유효 블록들의 백그라운드 후 기입 동작들이 또한 수행되어 쓰기 데이터가 불휘발성 메모리(110)에 저장되고 각 후 기입은 화살표(460)에 의해 지시되는 바와 같이 응답된다.
일부 실시 예들에서, 새로운 로그 기록이 B-트리에서 현재 블록 엔트리를 갱신할 때, 스토리지 장치 컨트롤러(130)는 그것의 로그 기록의 올드 블록을 무효로 마킹하여 올드 블록이 백그라운드 후 기입 절차에 의해 불휘발성 메모리(110)로 순차적으로 후 기입되는 것을 방지한다. 일부 실시 예에서, 불휘발성 메모리(110)로의 후 기입 절차가 사용자 쓰기들(예를 들어, 호스트로부터 수신된 쓰기 요청들)을 계속할 수 없는 경우, 스토리지 장치 컨트롤러(130)는 쓰기 쓰로틀링 메커니즘을 사용한다. 예를 들어, 쓰기 쓰로틀링 매커니즘은 호스트로부터 쓰기 요청을 수신한 이후에, 호스트로 쓰기 완료를 전송하는 것을 지연시킬 수 있다. 예를 들어, 순환 버퍼의 빈 공간(empty fraction)이 기준치 이하로 떨어지는 것을 판별함으로써, 이러한 조건이 검출될 수 있다.
레이턴시에 민감하지 않은 큰 순차적 IO 동작들에 대하여, 영구 메모리 컨트롤러(125)는 지역 버퍼들에 데이터를 위치시키는 것 없이, IO들을 NAND 컨트롤러(115)로 직접적으로 다시 보내도록 선택할 수 있다.
도 5를 참조하면, 화살표(510)에 의해 지시되는 바와 같이, 읽기 요청이 수신된 경우, 스토리지 장치 컨트롤러(130)는, 화살표(520)에 의해 지시되는 바와 같이, B-트리에서 읽기 요청의 논리적 블록 어드레스를 검색하여 읽어질 데이터가 영구 메모리(120)에 존재하는지 판별한다. 읽어질 데이터가 영구 메모리(120)에 존재하는 경우, 영구 메모리 컨트롤러(125)는 영구 메모리(120)로부터 데이터를 읽고, 화살표(530)에 의해 지시되는 바와 같이, 데이터를 스토리지 장치 컨트롤러(130)로 반환한다. 그렇지 않다면, 데이터는, 화살표(535)에 의해 지시되는 바와 같이, 불휘발성 메모리(110)로부터 읽어지고, 스토리지 장치 컨트롤러(130)로 반환된다. 어느 경우에서나, 스토리지 장치 컨트롤러(130)는, 화살표(540)에 의해 지시되는 바와 같이, 읽기 요청에서 요청된 데이터를 포함하는 응답을, 예를 들어, 호스트로 전송한다.
일부 실시 예들에서, 상술된 바와 같이, 이종 SSD는 작은 용량의 영구 메모리(120) 및 큰 용량의 불휘발성 메모리(110)를 포함한다. 작은 용량의 영구 메모리(120)가 제한이 될 수 있는 응용에서, 도 6에 도시된 바와 같이, 복수의 이종 SSD(620) 각각으로부터 영구 메모리(120)를 사용하여 복수의 이종 SSD들의 각각의 영구 메모리 뱅크들을 통합(pool)함으로써, 낮은-레이턴시의 영구 메모리의 가상 뱅크로써 동작하는 큰 가상 블록 장치(a larger virtual block device)가 생성될 수 있다. 일부 실시 예들에서, 가상 로그 장치(610)는 논리적 장치를 호스트 소프트웨어로 보여준다. 가상 로그 장치(610)는 피어링 기능(peering capabilities)을 사용하여 서로 통신할 수 있는 이종 SSD의 논리적 개념 또는 소프트웨어 모듈의 예시일 수 있다.
도 7은 특정 이종 SSD에서 대상이 되고 복수의 이종 SSD들(620)에 분산된 가상 로그 장치(610)를 통과하는 쓰기 요청에 대한 IO 흐름을 보여준다. 쓰기 동작에 대한 흐름이 도시된다. 새로운 쓰기 요청이, 화살표(630)에 의해 지시되는 바와 같이, 이종 SSD의 제1 가상 로그 장치(610)(VLD1로 참조 번호가 부여됨.)에 도착한 경우, 제1 가장 로그 장치(610)는, 화살표(635)에 의해 지시되는 바와 같이, 가상 로그 장치 관리자(710)로 쓰기 요청을 전송한다. 가상 로그 장치 관리자(710)는 애플리케이션(105)에 의해 특정된 바와 같이, VLD(610)의 용량 및 대역폭 요구들을 기반으로, 하나 또는 그 이상의 이종 SSD들에서 영구 메모리(120)의 위치를 선택하고, 화살표(640)에 의해 지시되는 바와 같이 영구 메모리(120)의 선택된 위치에 새로운 기록을 저장하고, 화살표(645)에 의해 지시되는 바와 같이, 제1 가상 로그 장치(610)(VLD1로 참조번호가 부여됨.)로 응답(acknowledgement)을 반환하고, 그 이후에, 화살표(650)에 의해 지시되는 바와 같이, 응답을 상위 계층(예를 들어, 호스트 애플리케이션)으로 반환한다. 그 이후에, 또는 동시에, 가상 로그 장치 관리자(710)는, 화살표(660)에 의해 지시되는 바와 같이 응답을 가상 로그 장치 관리자(710)로 반환하는, 목표 이종 SSD의 불휘발성 메모리(110)로 쓰기 요청을 화살표(655)에 의해 지시되는 바와 같이, 플러시한다. 마지막으로, 가상 로그 장치 관리자(710)는, 화살표(665)에 의해 지시되는 바와 같이, 플러시된 로그 기록을 제거한다.
가상 로그 장치(610)에 의해 선택된 영구 메모리(120)의 위치는 쓰기 요청의 목표인 특정 이종 SSD의 영구 메모리(120) 내부일 수 있거나 또는 아닐 수 있다. 가상 로그 장치(610)가 선택을 함에 고려할 수 있는 요인들(factors)은, 예를 들어, (i) 목표 SSD에서의 현재 작업 부하, (ii), 이종 SSD(620) 각각의 영구 메모리(120)의 남은 자유 공간의 용량, 및 (iii) IO 레이턴시에 영향을 줄 수 있는, 이종 SSD 각각의 영구 메모리(120)에서의 백그라운드 동작들의 상태를 포함할 수 있다.
읽기 동작들에 대하여, 가상 로그 장치(610)는 영구 메모리(120) 내에 요청된 데이터의 검색을 수행할 수 있다. 데이터가 영구 메모리(120)에 존재하는 경우, 가상 로그 장치(610)는 영구 메모리(120)로부터 요청된 데이터를 이종 SSD들(620) 중 하나로 반환한다. 요청된 데이터가 영구 메모리(120)에 존재하지 않는 경우, 요청된 데이터는, 요청된 데이터가 저장된 이종 SSD의 불휘발성 메모리(110)로부터 직접적으로 읽어진다. 비록 도 6 및 도 7이 오직 하나의 가상 로그 장치만을 보여주고 있으나, 본 발명이 이러한 실시 예들에 한정되는 것은 아니며, 일부 실시 예들에서, 복수의 가상 로그 장치들이 이종 SSD들의 그룹으로부터 형성된다.
특정 파일 시스템들, 특정 데이터베이스들, 또는 볼륨 관리자들과 같은 일부 애플리케이션들은 일반적이고, 호스트-인식 가능한 로그 장치를 사용하여 로그 선행 기입 또는 저널(journal)을 실행한다. 이러한 애플리케이션들은 이러한 로그 장치가 이러한 애플리케이션들을 실행하는 시스템에서 스토리지 소프트웨어 스택이 인식할 수 있는 방식으로 제공되거나 또는 제공되지 않는 경우, 최적으로 수행하지 않을 수 있거나 또는 전혀 실행하지 않을 수 있다. 따라서, 일부 실시 예들은 이하의 방법들을 제공하여 이러한 범주의 애플리케이션들을 지원한다.
로그 장치 맵 방식(Log Device Map method)은 이종 SSD의 낮은-레이턴시의 영구 메모리(120)가 이종 SSD와 연결된 호스트상에서 구동하는 애플리케이션 및/또는 운영 체제에 의해 IO 경로에서 직접적으로 주소 지정(addressable)되도록 할 수 있다. 맵 기능은 낮은-레이턴시의 장치가 저널 또는 로그 장치로서 사용하기에 적절한 별도의 스토리지 장치로서 호스트 운용체제 스토리지 스택에 의해 검출되도록 할 수 있다. 맵 기능은 이종 SSD의 영구 메모리(120)의 전체 주소 지정 가능한 공간 또는 그것들의 부분을 나타낼 수 있다.
[다른 일 실시예에서 맵 기능은 사용되지 않는다. 그 대신에, 통합된 이종 SSD에 대응하는 단일 스토리지 장치를 계속해서 액세스하고 사용하는 동안, 호스트는 데이터 블록들을 이종 SSD의 낮은-레이턴시의 영구 메모리(120) 또는 이종 SSD의 불휘발성 메모리(110) (즉, 백업 저장소)에 선택적으로 배치할 능력을 부여 받는다. 이러한 실시 예에서, 로그 장치 분할 방법(Log Device Partition method)은 지정된 오프셋("파티션 오프셋(Partition offset)")보다 작은 오프셋들(또는 LBA들)을 갖는 데이터 블록들만 이종 SSD의 낮은-레이턴시의 영구 메모리(120)에 위치되도록 할 수 있다. 로그 선행 기입으로 기입하기 위하여, 애플리케이션은 로그 사이즈가 파티션 오프셋에 의해 암시된 크기와 같거나 작으며, 오프셋 0에서 시작하는 것으로 단순히 가정할 수 있다. 메인 백업 저장소(즉, 이종 SSD의 불휘발성 메모리(110))를 위해 의도된 데이터 블록들은, 이종 SSD가 이종 SSD의 불휘발성 메모리(110)로 직접적으로 이러한 블록들을 보내게(dispatch) 할 수 있는 파티션 오프셋을 초과하는 오프셋을 사용하여 전송될 수 있다.
NAND 컨트롤러(115), 스토리지 장치 컨트롤러(130), 및 영구 메모리 컨트롤러(125) 각각은 프로세싱 회로이거나 또는 그것의 일부일 수 있다. "처리 회로(processing circuit)"의 용어는 데이터 또는 디지털 신호들을 처리하는데 사용되는 하드웨어, 펌웨어, 및 소프트웨어의 조합을 의미하기 위해 본문에서 사용된다. 처리 회로 하드웨어는, 예를 들어, ASIC들(application specific integrated circuits), 범용 또는 특수 목적 CPU들(general purpose or special purpose central processing units), DSP들(digital signal processors), GPU들(graphics processing units), 및 FPGA들(field programmable gate arrays)과 같은 프로그램 가능한 로직 장치들을 포함할 수 있다. 처리 회로에서, 본문에서 사용되는 바와 같이, 각 기능은, 기능을 수행하도록 구성된, 즉, 하드웨어에 내장된 하드웨어, 또는 비-일시적인 스토리지 매체에 저장된 명령어들을 실행하도록 구성된 CPU와 같은 범용 하드웨어 중 하나에 의해 수행된다. 처리 회로는 단일 PCB(single printed circuit board) 상에서 제작될 수 있고, 또는 다양한 상호 연결된 PCB들에 걸쳐 분포될 수 있다. 처리 회로는 다른 처리 회로들을 포함할 수 있다. 예를 들어, 처리 회로는 PCB 상에서 서로 연결된 FPGA 및 CPU인 2개의 처리 회로들을 포함할 수 있다. 일부 실시 예들에서, NAND 컨트롤러(115), 스토리지 장치 컨트롤러(130), 및 영구 메모리 컨트롤러(125) 중 적어도 하나의 컨트롤러는 NAND 컨트롤러(115), 스토리지 장치 컨트롤러(130), 및 영구 메모리 컨트롤러(125)의 다른 컨트롤러들을 구현하거나 또는 실행하는 것과 동일한 처리 회로이거나 또는 별도의 처리 회로일 수 있는 처리 회로에서 실행되는 소프트웨어로 구현된다.
"제1(first)", "제2(second)", "제3(third)" 등과 같은 용어들은 다양한 요소들, 구성들, 영역들, 계층들, 및/또는 구역들을 설명하기 위하여 본문에서 사용되나, 이러한 요소들, 구성들, 영역들, 계층들, 및/또는 구역들은 이러한 용어들에 한정되지 않음이 잘 이해될 것이다. 이러한 용어들은 하나의 요소, 구성, 영역, 계층, 또는 구역을 다른 하나의 요소, 구성, 영역, 계층, 또는 구역으로부터 구분하기 위해서만 사용된다. 즉, 상술된 제1 요소, 구성, 영역, 계층, 또는 구역은 본 발명의 사상 및 범위로부터 벗어남 없이, 제2 요소, 구성, 영역, 계층, 또는 구역으로 불릴 수 있다.
"~의 아래(beneath, below, lower, under)", "~의 위(above, upper)" 등과 같은 공간적으로 상대적인 용어들(spatially relative terms)은 도시된 다른 하나의 요소(들) 또는 특징(들)과 하나의 요소 또는 특징들과의 관련성을 용이하게 설명하기 위하여 본문에서 사용될 수 있다. 공간적으로 상대적인 용어들은 도면에 도시된 지향성에 추가적으로 동작 또는 사용에서 장치의 다른 지향성(orientations)을 포함하는 것으로 의도됨이 잘 이해될 것이다. 예를 들어, 도면들의 장치가 뒤집어지는 경우, 다른 요소들 또는 특징들의 "아래(below or beneath or under)"로 설명된 요소들은 다른 요소들 또는 특징들의 "상부(above)"로 향할 것이다. 즉, "아래(below, under)"의 예시적인 용어들은 위 및 아래의 방향들을 모두 포함할 수 있다. 장치가 다른 방향(예를 들어, 90도로 회전하거나 또는 다른 방향)을 지향할 수 있고, 본문에서 사용되는 공간적으로 상대적인 설명들은 이에 따라 해석되어야 한다. 추가적으로, 계층(layer)이 2개의 계층 "사이(between)"인 것으로 지칭되는 경우, 2개의 계층 사이에 오직 하나의 계층만 존재할 수 있거나 또는 하나 또는 그 이상의 중간 계층들이 존재할 수 있다.
본문에서 사용되는 용어들은 특정 실시 예들을 설명하기 위한 것이며, 본 발명이 이에 제한되는 것으로 의도되지 않는다. 본문에서 사용되는 바와 같이, "실질적으로(substantially)", "약(about)"과 같은 용어 및 유사한 용어들은 등급 용어(terms of degree)가 아닌 근사 용어(terms of approximation)로써 사용되며, 당업자에 의해 인식될 수 있는 측정되거나 또는 연산된 값들의 내재된 편차들을 설명하는 것으로 의도된다. 본문에서 사용되는 바와 같이 "주요 구성(major component)"는 조성물 또는 제품에서 다른 단일 구성의 양보다 많은 양을 갖는 조성물(composition), 폴리머(polymer), 또는 제품에서 나타나는 구성을 지칭한다. 대조적으로, "주된 구성(primary component)"는 조성물, 폴리머, 또는 제품에서 적어도 50%를 구성하는 구성을 지칭한다. 본문에서 사용되는 바와 같이, "주요 구성(major component)"은, 복수의 아이템들로 적용될 때, 아이템들의 적어도 절반을 의미한다.
본문에서 사용되는 바와 같이, 단수 용어들은 맥락에서 명확하게 다른 것을 지칭하지 않는 한, 복수의 형태를 포함하는 것으로 의도된다. 본 문에서 사용되는 "및/또는"의 용어는 열거된 목록들의 하나 또는 그 이상의 가능한 조합들을 포함하거나 참조하는 것임은 잘 이해될 것이다. 상세한 설명에서 사용되는 "포함한다"의 용어는 언급된 특성, 수, 단계들, 동작들, 및/또는 구성 요소들의 존재를 명시하며, 하나 또는 그 이상의 다른 특성, 수, 단계들, 동작들, 구성 요소들, 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 특징들 및 구성들은 필수적으로 계측되어 도시되지 않는다. 본문에서 사용되는 바와 같이, "및/또는(and/or)"의 용어는 하나 또는 그 이상의 연관되어 나열된 아이템들의 모든 조합 또는 일부 조합을 포함한다. 열거된 아이템들에 선행하는 "적어도 하나(at least one of)"와 같은 표현들은 열거된 요소들 전체를 수정하고, 리스트의 개별 요소들을 수정하지 않는다. 본 발명의 실시 예를 설명할 때, "할 수 있다.(may)"의 사용은 본 발명의 하나 또는 그 이상의 실시 예들을 지칭한다. 또한, "예시적인(exemplary)"의 용어는 예시적이고, 도식적인 것을 참조하도록 의도된다. 본문에서 사용되는 바와 같이 "사용(use, using, used)"의 용어들은 "활용(utilize, utilizing, utilized)의 용어들과 각각 동의어인 것으로 간주될 수 있다.
요소, 계층, 영역, 또는 구성이 다른 요소, 계층, 영역, 또는 구성과 "연결된(on, connected to, or coupled to)" 것으로 참조되는 경우, 이는 직접적으로(directly) 다른 요소, 계층, 영역, 또는 구성과 연결될 수 있거나 또는 하나 또는 그 이상의 중간(intervening) 요소들, 계층들, 영역들, 또는 구성들이 존재할 수 있음이 이해될 것이다. 추가적으로, 요소 또는 계층이 두 개의 요소들 또는 계층들 "사이(between)"에 있는 것으로 참조되는 경우, 이는 두 개의 요소들 또는 계층들 사이에 오직 하나의 요소 또는 계층만 존재하거나 또는 하나 또는 그 이상의 중간 요소들 또는 계층들이 더 존재할 수 있음이 이해될 것이다.
본문에서 참조되는 수치적인 범위는 참조된 범위 내에 포함된 동일한 수치 정밀도의 모든 하위 범위들을 포함하는 것으로 의도된다. 예를 들어, "1.0~10.0"의 범위는 1.0의 참조된 최소 값 및 10.0의 참조된 최대 값 사이의 모든 하위 범위들, 즉, 1.0보다 크거나 같은 최소 값 및 10.0보다 작거나 같은 최소 값을 갖는 범위, 예를 들어, 2.4~7.6의 범위를 포함하는 것으로 의도된다. 본문에서 참조되는 최대 수치 제한은 그것에 포함된 모든 하위 수치 제한들을 포함하는 것으로 의도되며, 본문에서 참조되는 최소 수치 제한은 그것에 포함된 모든 상위 수치 제한들을 포함하는 것으로 의도된다.
비록 이종 NVM 형태들을 구비한 SSD의 예시적인 실시 예들이 본문에서 상세하게 설명되고 도시되었으나, 다양한 변형들 및 변화들이 당업자에 의해 행해질 수 있을 것이다. 따라서, 본 발명의 이론들에 따라 구성된 이종 NVM 형태들을 구비한 SSD은 본문에서 상세하게 설명된 바와 다르게 구혀될 수 있다. 본 발명은 이하의 특허청구범위 및 그것의 동등물로 정의될 수 있다.

Claims (10)

  1. 스토리지 장치에 있어서,
    제1 컨트롤러;
    복수의 저속 불휘발성 메모리 셀들을 포함하는 제1 메모리 뱅크;
    복수의 고속 영구 메모리 셀들을 포함하는 제2 메모리 뱅크;
    스토리지 인터페이스를 포함하고,
    상기 제1 컨트롤러는 상기 스토리지 인터페이스를 통해 수신된 입력 출력 요청들에 응답하도록 구성되고,
    상기 복수의 저속 불휘발성 메모리 셀들을 각각은 상기 고속 영구 메모리 셀들 중 어느 것보다 읽기 레이턴시가 적어도 10배만큼 크고, 상기 복수의 고속 영구 메모리 셀들 중 어느 것보다 쓰기 레이턴시가 적어도 10배만큼 크고,
    상기 제2 메모리 뱅크의 일부는 순환 버퍼(circular buffer)로서 동작하도록 구성되고,
    상기 스토리지 장치는 상기 스토리지 인터페이스를 통해 쓰기 요청을 수신한 경우, 상기 순환 버퍼에 상기 쓰기 요청을 저장하도록 구성되고,
    상기 스토리지 장치는 상기 스토리지 인터페이스를 통해 상기 쓰기 요청을 수신한 경우, 쓰기 요청들의 B-트리 인덱스에 상기 쓰기 요청에 대한 인덱스 엔트리를 저장하도록 더 구성되고,
    상기 스토리지 장치는 상기 제1 메모리 뱅크의 가비지 콜렉션을 수행하는 것 및 상기 순환 버퍼에 쓰기 요청들을 저장하는 것을 동시에 수행하도록 구성되고,
    상기 스토리지 장치는 상기 제1 메모리 뱅크를 제어하도록 구성된 제2 컨트롤러를 더 포함하고,
    상기 스토리지 장치는:
    상기 순환 버퍼의 자유 공간의 크기 및 상기 제2 메모리 뱅크의 최대 쓰기 속도의 비율로서 제1 미래 버퍼링 구간을 연산하고;
    상기 제1 메모리 뱅크의 더티 블록 비율이 제1 임계치를 초과하는 경우, 상기 제1 미래 버퍼링 구간과 동일한 시간 구간 동안 상기 가비지 콜렉션을 수행하도록 상기 제2 컨트롤러를 제어하도록 구성된 스토리지 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제 1 항에 있어서,
    상기 스토리지 장치는:
    상기 가비지 콜렉션 동작 동안 제2 미래 버퍼링 구간을 재연산하고;
    상기 재연산된 제2 미래 버퍼링 구간이 상기 제1 미래 버퍼링 구간을 초과하는 경우, 상기 재연산된 제2 미래 버퍼링 구간을 상기 제2 컨트롤러로 알리도록 더 구성된 스토리지 장치.
  6. 제 1 항에 있어서,
    상기 제1 메모리 뱅크의 제1 영역에 대한 쓰기 요청을 수신할 때, 상기 B-트리 인덱스가 이전에 생성된 인덱스 엔트리를 포함하고, 상기 제2 메모리 뱅크가 제1 메모리 뱅크의 상기 제1 영역에 대한 대응하는 쓰기 요청을 포함하는 경우, 상기 스토리지 장치는:
    상기 순환 버퍼에 상기 쓰기 요청을 저장하고;
    상기 B-트리 인덱스에 상기 쓰기 요청에 대한 인덱스 엔트리를 저장하고,
    상기 순환 버퍼로부터 상기 이전에 생성된 인덱스 엔트리를 삭제하고;
    상기 순환 버퍼에서 상기 이전에 형성된 인덱스 엔트리에 대응하는 상기 쓰기 요청을 삭제하도록 구성된 스토리지 장치.
  7. 제 1 항에 있어서,
    상기 제1 메모리 뱅크의 제1 영역에 대한 읽기 요청이 수신될 때, 상기 B-트리 인덱스가 상기 제1 메모리 뱅크의 상기 제1 영역에 대한 이전에 생성된 인덱스 엔트리를 포함하는 경우, 상기 스토리지 장치는:
    상기 순환 버퍼로부터의 데이터를 사용하여 상기 읽기 요청에 응답하도록 구성된 스토리지 장치.
  8. 제 1 항에 있어서,
    상기 스토리지 장치는, 상기 순환 버퍼의 빈 공간(empty fraction)이 기준치 이하인 경우, 상기 스토리지 인터페이스을 통한 커맨드 완료 전송을 지연시키도록 구성된 스토리지 장치.
  9. 제 1 항에 있어서,
    상기 스토리지 인터페이스는 PCIe(Peripheral Component Interconnect Express) 인터페이스, RDMA(remote direct memory access) over 이더넷(Ethernet) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, 파이버 채널(Fibre Channel) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, 및 NVMe(Non Volatile Memory Express) 인터페이스 중 적어도 하나를 포함하는 스토리지 장치.
  10. 제 1 항에 있어서,
    상기 스토리지 장치는 3.5인치 하드 드라이브 폼-팩터 및 2.5인치 폼-팩터 중 하나의 폼-팩터를 갖는 스토리지 장치.


KR1020170177853A 2017-03-07 2017-12-22 이종 불휘발성 메모리 형태를 갖는 솔리드 스테이트 드라이브 KR102556431B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762468265P 2017-03-07 2017-03-07
US62/468,265 2017-03-07
US15/610,489 2017-05-31
US15/610,489 US10318175B2 (en) 2017-03-07 2017-05-31 SSD with heterogeneous NVM types

Publications (2)

Publication Number Publication Date
KR20180102483A KR20180102483A (ko) 2018-09-17
KR102556431B1 true KR102556431B1 (ko) 2023-07-18

Family

ID=63444767

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170177853A KR102556431B1 (ko) 2017-03-07 2017-12-22 이종 불휘발성 메모리 형태를 갖는 솔리드 스테이트 드라이브

Country Status (3)

Country Link
US (1) US10318175B2 (ko)
KR (1) KR102556431B1 (ko)
CN (1) CN108572796B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606484B2 (en) * 2017-06-23 2020-03-31 Google Llc NAND flash storage device with NAND buffer
US11442813B2 (en) * 2017-10-11 2022-09-13 Hewlett-Packard Development Company, L.P. Memory devices including execution trace buffers
KR20200016075A (ko) * 2018-08-06 2020-02-14 에스케이하이닉스 주식회사 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
US11301331B2 (en) 2018-09-20 2022-04-12 Samsung Electronics Co., Ltd. Storage device and operating method of storage device
CN109522243B (zh) * 2018-10-22 2021-11-19 郑州云海信息技术有限公司 一种全闪存储中元数据缓存管理方法、装置及存储介质
US10635355B1 (en) 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives
US10983909B2 (en) * 2019-01-18 2021-04-20 Vmware, Inc. Trading off cache space and write amplification for Bε-trees
CN110134340B (zh) * 2019-05-23 2020-03-06 苏州浪潮智能科技有限公司 一种元数据更新的方法、装置、设备以及存储介质
US11068396B2 (en) * 2019-08-01 2021-07-20 EMC IP Holding Company, LLC System and method for balance localization and priority of pages to flush in a sequential log
US10970211B2 (en) * 2019-08-02 2021-04-06 EMC IP Holding Company LLC Techniques for reducing size of log records
JP7467064B2 (ja) * 2019-10-17 2024-04-15 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
EP3872639A1 (en) * 2020-02-28 2021-09-01 Aptiv Technologies Limited Data logging device
CN111309270B (zh) * 2020-03-13 2021-04-27 清华大学 一种持久性内存键值存储系统
US11662943B2 (en) * 2020-06-16 2023-05-30 Micron Technology, Inc. Adjustable media management
US11481145B2 (en) * 2021-02-25 2022-10-25 PetaIO Inc. Dynamically throttling host write data rate
US11625190B2 (en) * 2021-08-17 2023-04-11 Vast Data Ltd. Segregating cold stripe defragmentation from new writes based on creation time of the cold stripe
CN114640688A (zh) * 2022-03-23 2022-06-17 中国兵器装备集团自动化研究所有限公司 一种异构双冗余设备运行状态数据存储装置及访问方法
KR20240057988A (ko) * 2022-10-25 2024-05-03 삼성전자주식회사 내구성이 높은 영구 스토리지 장치를 포함하는 시스템
US20240152455A1 (en) * 2022-11-09 2024-05-09 Lemon Inc. Techniques for instance storage using segment-based storage

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3905023A (en) * 1973-08-15 1975-09-09 Burroughs Corp Large scale multi-level information processing system employing improved failsaft techniques
KR950009291B1 (ko) * 1992-08-18 1995-08-18 삼성전자주식회사 시릴화된 레지스트의 박리방법
US7889544B2 (en) * 2004-04-05 2011-02-15 Super Talent Electronics, Inc. High-speed controller for phase-change memory peripheral device
US20030005233A1 (en) * 2001-06-28 2003-01-02 Daleen Technologies, Inc. Dual organization of cache contents
US6625081B2 (en) * 2001-08-13 2003-09-23 Micron Technology, Inc. Synchronous flash memory with virtual segment architecture
US7318112B2 (en) * 2001-10-11 2008-01-08 Texas Instruments Incorporated Universal interface simulating multiple interface protocols
JP3823040B2 (ja) * 2001-10-12 2006-09-20 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記憶装置、データ処理装置、書き込み要求の実行順序を最適化する方法、データ処理方法およびハード・ディスク・ドライブ
US7187689B1 (en) * 2001-10-29 2007-03-06 Juniper Networks, Inc. Self-cleaning mechanism for error recovery
US7171509B2 (en) * 2002-01-09 2007-01-30 International Business Machines Corporation Method and apparatus for host messaging unit for Peripheral Component Interconnect busmaster devices
JP2004171411A (ja) * 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
US6959374B2 (en) * 2003-01-29 2005-10-25 Sun Microsystems, Inc. System including a memory controller configured to perform pre-fetch operations including dynamic pre-fetch control
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US20050198062A1 (en) * 2004-03-05 2005-09-08 Shapiro Richard B. Method and apparatus for accelerating data access operations in a database system
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
KR100704037B1 (ko) * 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
GB0513433D0 (en) * 2005-06-30 2005-08-10 Nokia Corp Signal message compressor
US7549021B2 (en) * 2006-02-22 2009-06-16 Seagate Technology Llc Enhanced data integrity using parallel volatile and non-volatile transfer buffers
US7882381B2 (en) * 2006-06-29 2011-02-01 Intel Corporation Managing wasted active power in processors based on loop iterations and number of instructions executed since last loop
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US20080055326A1 (en) * 2006-09-05 2008-03-06 Yun Du Processing of Command Sub-Lists by Multiple Graphics Processing Units
JP2008097107A (ja) * 2006-10-06 2008-04-24 Seiko Epson Corp データ記録装置及びその制御方法
US7694099B2 (en) * 2007-01-16 2010-04-06 Advanced Risc Mach Ltd Memory controller having an interface for providing a connection to a plurality of memory devices
US8219749B2 (en) * 2007-04-27 2012-07-10 Netapp, Inc. System and method for efficient updates of sequential block storage
US7882304B2 (en) * 2007-04-27 2011-02-01 Netapp, Inc. System and method for efficient updates of sequential block storage
KR101498673B1 (ko) * 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
KR101365683B1 (ko) * 2007-12-27 2014-02-20 삼성전자주식회사 가변 저항 메모리 장치, 그것의 플렉서블 프로그램 방법,그리고 그것을 포함하는 메모리 시스템
US8285919B2 (en) 2008-05-27 2012-10-09 Initio Corporation SSD with improved bad block management
US8065304B2 (en) 2008-06-11 2011-11-22 International Business Machines Corporation Using asymmetric memory
KR20100016987A (ko) * 2008-08-05 2010-02-16 삼성전자주식회사 상 변화 메모리를 포함하는 컴퓨팅 시스템
US8291181B2 (en) * 2008-10-28 2012-10-16 Micron Technology, Inc. Temporary mirroring, logical segregation, and redundant programming or addressing for solid state drive operation
US8312204B2 (en) * 2009-01-23 2012-11-13 Seagate Technology Llc System and method for wear leveling in a data storage device
US8412688B1 (en) * 2009-06-29 2013-04-02 Emc Corporation Delegated reference count base file versioning
US8352482B2 (en) * 2009-07-21 2013-01-08 Vmware, Inc. System and method for replicating disk images in a cloud computing based virtual machine file system
US8543863B2 (en) * 2009-11-18 2013-09-24 Microsoft Corporation Efficiency of hardware memory access using dynamically replicated memory
US8307151B1 (en) * 2009-11-30 2012-11-06 Micron Technology, Inc. Multi-partitioning feature on e-MMC
US20110145477A1 (en) * 2009-12-15 2011-06-16 Rudelic John C Flash translation layer using phase change memory
KR20110119456A (ko) * 2010-04-27 2011-11-02 삼성전자주식회사 탄성 채널 트랜지스터를 구비하는 반도체 소자
US8688897B2 (en) * 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture
JP2012063871A (ja) * 2010-09-14 2012-03-29 Univ Of Tokyo 制御装置およびデータ記憶装置
US8527837B2 (en) * 2010-10-15 2013-09-03 Micron Technology, Inc. Selective error control coding in memory devices
US8612798B1 (en) * 2010-10-21 2013-12-17 Western Digital Technologies, Inc. Hybrid drive storing write data in non-volatile semiconductor memory if write verify of disk fails
US20120117303A1 (en) * 2010-11-04 2012-05-10 Numonyx B.V. Metadata storage associated with flash translation layer
US8516194B2 (en) * 2010-11-22 2013-08-20 Micron Technology, Inc. Systems and methods for caching data with a nonvolatile memory cache
US8650150B2 (en) 2011-03-14 2014-02-11 Sap Ag System and method of relating data and generating reports
US8806154B1 (en) * 2011-05-06 2014-08-12 Chelsio Communications, Inc. Thin provisioning row snapshot with reference count map
US20120311262A1 (en) * 2011-06-01 2012-12-06 International Business Machines Corporation Memory cell presetting for improved memory performance
KR20130019795A (ko) * 2011-08-18 2013-02-27 영남대학교 산학협력단 Pram에 데이터를 저장하는 전자기기 및 그의 메모리 제어방법
JP5792019B2 (ja) * 2011-10-03 2015-10-07 株式会社日立製作所 半導体装置
CA2761553C (en) 2011-12-09 2019-03-05 Ibm Canada Limited - Ibm Canada Limitee Logical buffer pool extension
US20130238832A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Deduplicating hybrid storage aggregate
KR20130114354A (ko) * 2012-04-09 2013-10-18 삼성전자주식회사 메모리 시스템 및 컨트롤러의 동작 방법
KR101938210B1 (ko) * 2012-04-18 2019-01-15 삼성전자주식회사 낸드 플래시 메모리, 가변 저항 메모리 및 컨트롤러를 포함하는 메모리 시스템의 동작 방법
US9645917B2 (en) 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9489293B2 (en) * 2012-08-17 2016-11-08 Netapp, Inc. Techniques for opportunistic data storage
KR101992934B1 (ko) * 2012-11-14 2019-06-26 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
US20140258591A1 (en) * 2013-03-07 2014-09-11 Kabushiki Kaisha Toshiba Data storage and retrieval in a hybrid drive
US9817835B2 (en) * 2013-03-12 2017-11-14 Tintri Inc. Efficient data synchronization for storage containers
CN105283857B (zh) 2013-03-14 2018-09-11 慧与发展有限责任合伙企业 用于持久性存储器的多版本化非易失性存储器层级
US9503491B2 (en) * 2013-03-15 2016-11-22 Echostar Technologies L.L.C. Playback stall avoidance in adaptive media streaming
KR102112115B1 (ko) * 2013-04-17 2020-05-18 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 프로그램 방법
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
KR102145420B1 (ko) * 2013-07-25 2020-08-18 삼성전자주식회사 데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법
US20150066988A1 (en) * 2013-08-30 2015-03-05 Nec Laboratories America, Inc. Scalable parallel sorting on manycore-based computing systems
US10440080B2 (en) * 2013-10-18 2019-10-08 Telefonaktiebolaget Lm Ericsson (Publ) Software-defined media platform
US9792221B2 (en) * 2013-11-22 2017-10-17 Swarm64 As System and method for improving performance of read/write operations from a persistent memory device
US9558229B2 (en) 2013-11-26 2017-01-31 Sap Se Transaction private log buffering for high performance of transaction processing
US9251064B2 (en) * 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system
US9152330B2 (en) * 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss
US9529745B2 (en) * 2014-02-26 2016-12-27 Nxp Usa, Inc. System on chip and method of operating a system on chip
US9767051B2 (en) * 2014-04-04 2017-09-19 Tidal Systems, Inc. Scalable, parameterizable, and script-generatable buffer manager architecture
US10073649B2 (en) * 2014-07-24 2018-09-11 Hewlett Packard Enterprise Development Lp Storing metadata
US9875055B1 (en) * 2014-08-04 2018-01-23 Western Digital Technologies, Inc. Check-pointing of metadata
GB2532051A (en) * 2014-11-07 2016-05-11 Nomad Spectrum Ltd Data traffic processing and analysis
US10126950B2 (en) 2014-12-22 2018-11-13 Intel Corporation Allocating and configuring persistent memory
US10339048B2 (en) * 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
TWI709864B (zh) 2015-01-29 2020-11-11 韓商愛思開海力士有限公司 一種利用重複刪除過程的儲存系統、方法及裝置
US20160259754A1 (en) * 2015-03-02 2016-09-08 Samsung Electronics Co., Ltd. Hard disk drive form factor solid state drive multi-card adapter
CN104778126B (zh) 2015-04-20 2017-10-24 清华大学 非易失性主存中事务数据存储优化方法及系统
US9870169B2 (en) * 2015-09-04 2018-01-16 Intel Corporation Interleaved all-level programming of non-volatile memory
KR20160114492A (ko) * 2015-09-17 2016-10-05 주식회사 티맥스데이터 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램
US10331586B2 (en) * 2015-10-30 2019-06-25 Samsung Electronics Co., Ltd. Nonvolatile memory device for providing fast booting and system including the same
US9785365B1 (en) * 2015-12-08 2017-10-10 Rambus Inc. Persistent memory descriptor
US10191849B2 (en) * 2015-12-15 2019-01-29 Vmware, Inc. Sizing cache data structures using fractal organization of an ordered sequence
US20170242785A1 (en) * 2016-02-23 2017-08-24 Sandisk Technologies Llc Efficient Implementation of Optimized Host-Based Garbage Collection Strategies Using Xcopy and Arrays of Flash Devices
US10007443B1 (en) * 2016-03-31 2018-06-26 EMC IP Holding Company LLC Host to device I/O flow
US20170285961A1 (en) * 2016-04-05 2017-10-05 Alibaba Group Holding Limited 3d stackable hybrid phase change memory with improved endurance and non-volatility
US10545861B2 (en) * 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US10007459B2 (en) * 2016-10-20 2018-06-26 Pure Storage, Inc. Performance tuning in a storage system that includes one or more storage devices
US10459644B2 (en) * 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
US10452290B2 (en) * 2016-12-19 2019-10-22 Pure Storage, Inc. Block consolidation in a direct-mapped flash storage system
US9910618B1 (en) * 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system

Non-Patent Citations (9)

* Cited by examiner, † Cited by third party
Title
Phase Change Memory,(https://www.pdl.cmu.edu/SDI/2009/slides/Numonyx.pdf,*
미국공개특허 제2011-0119456호(2011.05.19.) 1부.*
한국공개특허 제10-2006-0109042호(2006.10.19.) 1부.*
한국공개특허 제10-2006-0123573호(2006.12.01.) 1부.*
한국공개특허 제10-2009-0017238호(2009.02.18.) 1부.*
한국공개특허 제10-2016-0106501호(2016.09.12.) 1부.*
한국공개특허 제10-2016-0114492호(2016.10.05.) 1부.*
한국공고특허 제1994-0004742호(1994.05.28.) 1부.*
한국등록특허 제10-1044220호(2011.06.29.) 1부.*

Also Published As

Publication number Publication date
KR20180102483A (ko) 2018-09-17
CN108572796B (zh) 2023-06-27
US10318175B2 (en) 2019-06-11
CN108572796A (zh) 2018-09-25
US20180260136A1 (en) 2018-09-13

Similar Documents

Publication Publication Date Title
KR102556431B1 (ko) 이종 불휘발성 메모리 형태를 갖는 솔리드 스테이트 드라이브
KR102168838B1 (ko) 저장 장치들에 대한 매핑 테이블들
US10037272B2 (en) Storage system employing MRAM and array of solid state disks with integrated switch
US8918580B2 (en) Storage device with buffer memory including non-volatile RAM and volatile RAM
US9996542B2 (en) Cache management in a computerized system
US10468077B2 (en) Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage
US20160026579A1 (en) Storage Controller and Method for Managing Metadata Operations in a Cache
US20100100664A1 (en) Storage system
US20110276746A1 (en) Caching storage adapter architecture
GB2507410A (en) Storage class memory having low power, low latency, and high capacity
WO2012116369A2 (en) Apparatus, system, and method for managing contents of a cache
US20180089088A1 (en) Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
US20130219122A1 (en) Multi-stage cache directory and variable cache-line size for tiered storage architectures
US20160004644A1 (en) Storage Controller and Method for Managing Modified Data Flush Operations From a Cache
US11461041B2 (en) Storage device that receives inode address information to reduce external communication overhead
US20210141736A1 (en) Storage class memory access
US11550479B1 (en) Metadata management in storage systems
US20200341873A1 (en) Data access method, apparatus and computer program product
CN114077389A (zh) 控制器、存储器系统以及数据处理系统
US20240020014A1 (en) Method for Writing Data to Solid-State Drive
US20130054883A1 (en) Method and system for shared high speed cache in sas switches
CN115203079A (zh) 一种将数据写入固态硬盘的方法
US10884933B2 (en) Method and apparatus for performing pipeline-based accessing management in a storage server
US9864688B1 (en) Discarding cached data before cache flush

Legal Events

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