KR20180131466A - 데이터 저장 디바이스와 버퍼 테뉴어 관리 - Google Patents

데이터 저장 디바이스와 버퍼 테뉴어 관리 Download PDF

Info

Publication number
KR20180131466A
KR20180131466A KR1020180061833A KR20180061833A KR20180131466A KR 20180131466 A KR20180131466 A KR 20180131466A KR 1020180061833 A KR1020180061833 A KR 1020180061833A KR 20180061833 A KR20180061833 A KR 20180061833A KR 20180131466 A KR20180131466 A KR 20180131466A
Authority
KR
South Korea
Prior art keywords
buffer
data
data storage
storage device
manager
Prior art date
Application number
KR1020180061833A
Other languages
English (en)
Other versions
KR102095471B1 (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 KR20180131466A publication Critical patent/KR20180131466A/ko
Application granted granted Critical
Publication of KR102095471B1 publication Critical patent/KR102095471B1/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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • 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]
    • G06F2003/0691

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

하나 이상의 버퍼를 구비한 데이터 저장 디바이스가 적어도 제1 버퍼, 제2 버퍼, 버퍼 관리자, 및 비휘발성 메모리를 갖는 데이터 저장 디바이스를 이용하는 버퍼 테뉴어 관리를 채용할 수 있다. 제1 버퍼는 온-칩에 위치할 수 있는 반면, 제2 버퍼는 오프-칩에 위치한다. 제1 버퍼는 버퍼 관리자에 의해 인도되는 바에 따라 사전결정된 테뉴어 임계치 미만의 테뉴어를 갖는 데이터로 채워질 수 있다.

Description

데이터 저장 디바이스와 버퍼 테뉴어 관리{DATA STORAGE DEVICE WITH BUFFER TENURE MANAGEMENT}
데이터 저장 디바이스는, 일부 실시예들에서, 제1 버퍼, 제2 버퍼, 버퍼 관리자, 및 비휘발성 메모리를 갖는 데이터 저장 디바이스를 갖는다. 제1 버퍼는 온-칩에 위치하게 되는 반면, 제2 버퍼는 오프-칩에 위치한다. 제1 버퍼는 버퍼 테뉴어 관리의 일부로서 버퍼 관리자에 의해 인도되는 바에 따라 사전결정된 테뉴어 임계치 미만의 테뉴어를 갖는 데이터로 채워진다.
도 1은 다양한 실시예들에 따라 배열된 예시 데이터 저장 시스템의 블록 표현이다.
도 2는 도 1의 데이터 저장 시스템에 사용될 수 있는 예시 데이터 저장 디바이스의 부분들의 블록 표현을 표시한다.
도 3은 일부 실시예들에 따라 구축되고 동작되는 일부 예시 데이터 저장 시스템의 블록 표현을 도시한다.
도 4는 도 3의 데이터 저장 시스템에 활용되는 예시 데이터 저장 디바이스의 일부분의 블록 표현을 도시한다.
도 5는 도 3의 데이터 저장 시스템에 채용된 예시 데이터 저장 디바이스의 일부분을 도시한다.
도 6a 내지 도 6c는 각각 다양한 실시예들에 따라 동작되는 예시 데이터 저장 디바이스의 상이한 블록 표현들을 도시한다.
도 7은 도 3의 데이터 저장 시스템에 활용되는 예시 데이터 저장 디바이스의 일부분을 나타낸다.
도 8은 다양한 실시예들에 따라 수행되는 예시 버퍼 테뉴어 관리 루틴의 흐름도를 제공한다.
다양한 실시예들은 일반적으로 호스트로부터의 기록 요청과 부합하는 기록 데이터의 실제 및/또는 예측 테뉴어에 기초한 버퍼 관리를 구비한 데이터 저장 시스템에 관한 것이다.
컴퓨팅 디바이스들이 더 유행하고 강력해짐에 따라, 점점 더 많은 양의 데이터가 생성, 전송, 및 저장된다. 다양하고 상이한 유형들의 데이터 메모리는 데이터 저장 시스템에서의 더 빠른 데이터의 전송을 수용하도록 발전되어 왔다. 그러나, 상이한 유형들의 데이터 메모리는 물리적 특성 및 성능 특성들이 상이하여, 단일 유형의 데이터 메모리를 구비한 데이터 저장 시스템의 지원을 어렵게 한다. 결과적으로, 다수의 상이한 유형들의 데이터 메모리를 이용하여 데이터의 전송 및 저장을 관리할 때 병목현상 및 비효율성이 존재한다.
따라서, 일부 실시예들은 예측 및/또는 실제 데이터 테뉴어에 기초하여 상이한 유형들의 데이터 메모리 간에 데이터를 지능적으로 인도하는 버퍼 관리자를 제공한다. 다수의 상이한 유형들의 데이터 메모리를 선택적으로 활용할 수 있다면, 데이터 저장 시스템은 각각의 유형들의 메모리의 특성들을 효과적으로 이용함으로써 데이터 전송 및 저장 성능을 최적화할 수 있다.
도면으로 돌아가서, 도 1은 다양한 실시예들이 실행될 수 있는 예시 데이터 저장 시스템(100)의 블록 표현을 디스플레이한다. 데이터 저장 시스템(100)은 임의의 수의 데이터 저장 디바이스들(102)을 채용할 수 있는데, 이들은 유사하거나, 또는 유사하지 않은 유형들의 디바이스들, 예컨대 솔리드 스테이트, 회전식 자기, 또는 하이브리드 드라이브일 수 있다. 하나 이상의 호스트(104)는 동시에, 순차적으로, 또는 선택적으로 유선 및/또는 무선 네트워크를 통해 연결된 적어도 하나의 네트워크 제어기(106)를 통해 데이터 저장 디바이스(102)에 액세스할 수 있다. 주의할 점은, 네트워크 제어기(106)는 서버 또는 카드와 같은 하드웨어 구현예, 또는 가상 머신과 같은 소프트웨어 구현예일 수 있다는 것이다.
파선에 의해 도시된 바와 같이, 제2 데이터 저장 디바이스(108)가 데이터 저장 시스템(100) 내에 통합되어 단일 데이터 저장 디바이스(102)보다 큰 데이터 용량을 제공할 수 있다. 데이터 저장 디바이스(들)(108)를 추가함으로써, 독립 디바이스들의 중복 어레이(RAID)와 같이 스트리핑, 미러링, 및 패리티 데이터의 저장과 같은 데이터 보호 및 보안을 추가적으로 강화할 수 있다. 필수 또는 제한 없이, 데이터 저장 디바이스(102/108)는 마이크로프로세서 또는 프로그램가능 제어기와 같은 로컬 제어기(110), 솔리드 스테이트 유형과 같은 비휘발성 메모리(112), 휘발성 메모리와 같은 적어도 하나의 버퍼(114), 및 휘발성 메모리와 같은 캐시(116)로 구성될 수 있다.
다수의 호스트들(102)이 상대적으로 큰 데이터 용량에 액세스할 수 있는 경우, 특히 RAID 시스템 구성에서, 큰 볼륨의 데이터가 각각의 데이터 저장 디바이스들(102/108)에 의해 동시에, 및 순차적으로 프로세싱될 수 있다. 이러한 큰 볼륨의 데이터는 처리되는 동안 비휘발성 메모리(112)에 할당된 데이터가 버퍼(114) 또는 캐시(116)에 계류중일 때 성능 병목현상을 경험할 수 있다. 즉, NAND 플래시와 같은 일부 비휘발성 메모리들(112)은 바이트 또는 비트로 어드레싱되지 않으면 적소에 기록될 수 없는데, 이는 데이터 맵, 다중 데이터 섹터의 맵 유닛, 및 메모리(112)의 가비지 수집 부분들을 컴파일하는 데 비효율을 초래한다.
도 2는 도 1의 데이터 저장 시스템(100)에 채용될 수 있는 예시 데이터 저장 디바이스(120)의 부분들의 블록 표현을 전달한다. 데이터 저장 디바이스(120)는 연결된 로컬 제어기(110)와 함께 웨이퍼 칩(124)에 상주하는, 정적 랜덤 액세스 메모리와 같은 제1 휘발성 버퍼 메모리(122)를 포함할 수 있다.
웨이퍼 칩(124)의 규소 재료로 된 제1 휘발성 버퍼 메모리(122)의 물리적 구성은 "온-칩"을 특징으로 할 수 있는 반면, 제2 휘발성 버퍼 메모리(126)와 같이, 하나 이상의 상호연결부를 통해 칩(124)에 상호연결만 된 것은 "오프-칩"을 특징으로 할 수 있다. 다시 말해서, 웨이퍼 칩(124)의 규소 재료로부터 제1 휘발성 버퍼 메모리(122)의 양태들을 만드는 것은 메모리(122)가 온-칩임을 의미하고, 웨이퍼 재료로 구성되지 않고 칩(124)에 연결하는 것은 제2 메모리(126)가 오프-칩임을 의미한다.
온-칩 제1 휘발성 버퍼 메모리(122)의 구성은 더 빠른 데이터 전송 및 더 낮은 데이터 지연을 제공하는데, 그 이유는, 적어도 부분적으로, 인터페이스들 및 버퍼들이 적을 뿐만 아니라, 오프-칩 제2 휘발성 버퍼 메모리(126)를 제약하는 클록 주파수 제한이 감소되기 때문이다. 온-칩 제1 휘발성 버퍼 메모리(122)가 더 빠를수록 웨이퍼 칩(124) 상의 이용가능한 실제 공간을 과소비하기 때문에, 결과적으로 메모리(122)의 데이터 용량을 더 작게 한다. 따라서, 데이터 저장 디바이스(120)는 제1(122) 및 제2(124) 휘발성 버퍼 메모리 둘 모두를 채용하여 데이터 기록 요청과 연관된 데이터를 비휘발성 메모리(112)에 일시적으로 저장한다.
이전에, 버퍼 관리는 역사상 기초적이었고, 큰 볼륨의 데이터를 비휘발성 메모리(112)에 기록하는 것과 연관된 성능 병목현상을 악화시키기만 했다. 예를 들어, 선입선출 버퍼 관리 기법은 처리 및/또는 메모리(112)에 기록하는 데 상대적으로 긴 시간이 드는 데이터를 더 빠른 제1 버퍼 메모리(122)에 채울 수 있다. 다른 예로서, 순차적으로 데이터를 더 큰 용량의 제2 버퍼 메모리(126)에 기록하고, 이어서 더 빠른 제1 버퍼 메모리(122)에 기록함으로써, 제1 버퍼 메모리(122)에 의해 처리될 수 있는 기록 데이터의 수행을 저하하는 제2 버퍼 메모리(126)의 지연을 야기한다.
이러한 이슈들, 및 다른 이슈들은 계류중인 기록 요청들과 연관된 데이터를 지원할 다수의 상이한 유형들의 버퍼들을 지능적으로 관리하는 데이터 저장 시스템을 제공할 다양한 실시예들을 만들었다. 도 3은 본 개시내용의 다양한 실시예들이 채용될 수 있는 예시 데이터 저장 시스템(140)의 부분들의 블록 표현을 도시한다. 데이터 저장 시스템(140)은 데이터 저장 디바이스(142)와 통신하는 임의의 수의 로컬 또는 원격 호스트들(104)을 갖는다. 이러한 통신은 네트워크 제어기, 스위치, 및 기타 업스트림 네트워크 분산 하드웨어 및/또는 소프트웨어와 부합할 수 있다.
정적인 펌웨어 코드에 따라 단순히 버퍼에 저장되는 대신에, 버퍼 관리자(144)는 각각의 버퍼(122/126) 내의 기록 데이터의 생성된 실제 테뉴어 및/또는 예측 테뉴어에 기초하여 온-칩 제1 버퍼(122) 및 오프-칩 제2 버퍼(124) 중에서 선택하는 적응형 지능을 제공할 수 있다. 주의할 점은 "테뉴어"는 기록 요청과 연관된 데이터가 비휘발성 메모리(112)에 기록되는 시간에 상관없이 버퍼(122/126)에 머무르는 시간으로서 이해될 것이다. 즉, 데이터 테뉴어는, 데이터가 비휘발성 메모리(112)에 기록되고 한참 뒤에, 예컨대, 가비지 수집을 통해 삭제되기 전에 데이터가 버퍼(122/126)에 머무르는 시간의 양을 특징으로 할 수 있다.
일부 실시예들에 따라, 버퍼 관리자(144)는 인입 기록 요청을 평가하고, 데이터 저장 성능을 최적화하고 데이터 기록 요청의 지원에 최소한으로 영향을 주는 버퍼(122/126) 목적지에 부합하는 데이터 테뉴어 값을 생성한다. 이러한 지능적 평가를 통해, 버퍼 관리자(144)는 시스템(140) 동작 조건들에 사전 대비하여 그리고 반응하여 데이터를 각각의 버퍼들(122/126)에, 그리고 그들 사이에 인도할 수 있다.
도 4는 도 3의 데이터 저장 시스템(140)에 활용될 수 있는 예시 버퍼 시스템(150)의 일부분을 나타낸다. 버퍼 시스템(150)은 데이터 저장 디바이스(102/142)의 하우징 내에 위치할 수 있고, 데이터 저장 시스템(100/140)의 각각의 데이터 저장 디바이스가 타이머(154), 소프트웨어 알고리즘(156), 로그(158), 및 예측 모듈(160)로 구성된 별개의 버퍼 관리자(152)를 갖는 것이 고려된다. 다수의 별개의 버퍼 관리자들(152)이, 타이머(154), 알고리즘(156), 로그(158), 및 예측 모듈(160)이 데이터 저장 디바이스 하우징 내에 포함되거나, 또는 포함되지 않은 공용 시스템 하드웨어 및/또는 소프트웨어를 활용할 수 있음이 고려된다.
버퍼 관리자(152)는 데이터 저장 시스템의 내부 또는 외부에 있는 하나 이상의 소스로부터 임의의 수의 시스템, 기록 데이터, 및 모델 파라미터를 수신할 수 있다. 그러나, 일부 실시예들은 순차적으로, 또는 동시에, 계류중인 기록 요청, 시스템 성능 메트릭, 모델링된 시스템 활동, 및 현재 시스템 활동에 관련된 정보를 수신한다. 계류중인 기록 요청 정보는 볼륨, 위치, 기간, 할당된 로직 블록 어드레스(LBA), 및 할당된 물리적 블록 어드레스(PBA)를 수반할 수 있다. 시스템 성능 메트릭은 시스템 지연, 에러율, 버퍼 이용가능 용량, 비휘발성 메모리 이용가능 용량, 및 데이터 액세스 요청 충족 임계치로 구성될 수 있다.
모델링된 활동은 시간이 경과한 이전에 지원한 데이터 액세스 요청 및/또는 데이터 액세스 요청을 지원하는 컴퓨터-생성 가상 시스템일 수 있다. 현재 활동은 지원 완료된 실제 데이터 액세스 요청들의 위치, 듀레이션, 및 지연 뿐만 아니라 데이터 저장 시스템에 대한 계류중인 데이터 액세스 요청들의 수 및 크기를 수반할 수 있다.
이러한 다양한 시스템 정보를 모델링된 성능 정보와 함께 입력함으로써, 버퍼 관리자(152)는 데이터 저장 시스템의 현재 상태에 대한 정확한 이해를 갖게 될 것이고, 시스템 성능을 최적화하는 버퍼 목적지를 이용하여 계류중인 데이터 기록 요청에 지능적으로 응답할 수 있다. 즉, 버퍼 관리자(152)는 알고리즘(156) 및 데이터 액세스 요청들의 과거 지원에 대한 로그(158)를 활용하여 계류중인 데이터 기록 요청에 대한 버퍼 테뉴어 값을 생성할 수 있다. 예를 들어, 버퍼 관리자(152)는 계류중인 기록 요청이 사전결정된 임계치보다 큰 테뉴어 값을 갖게 될 것을 식별할 수 있고, 이는 기록 요청들이 너무 오랫동안 버퍼에 머물 가능성이 높다는 것에 해당한다.
버퍼 관리자(152)를 이용하여 버퍼 테뉴어 값을 생성할 수 있다면, 변화하는 시스템 조건들에 기초하여 데이터의 버퍼 위치를 조정할 수 있음이 고려된다. 비제한적인 예로서, 버퍼 테뉴어 값은 초기에 임계치 미만일 수 있지만, 데이터가 버퍼에 너무 오랫동안 머무르고, 타이머(154)에 의해 식별되면, 버퍼 관리자(152)가 빠른 데이터 버퍼로 데이터를 옮기도록 트리거한다. 따라서, 버퍼 관리자(152)는 데이터 저장 시스템에 대하여 사전 대비하여 그리고 반응하여 평가를 제공하여, 데이터 기록 요청의 데이터에 관하여 연속적이고, 잠재적으로 가변적인, 결정 및 실행을 허용할 수 있다.
도 5는 버퍼 관리자(172)가 데이터 판독 동작을 지시할 수 있는 예시 데이터 저장 시스템(170)의 일부분의 블록 표현을 나타낸다. 주의할 점은, 상이한 참조 번호들이 버퍼 관리자에 사용되지만, 버퍼 관리자(172)는 도 3 및 도 4에서 논의한 관리자들(144/152)의 임의의 또는 모든 특성 및 기능들을 갖거나 또는 어느 것도 갖지 않을 수 있다는 것이다. 버퍼 관리자(172)는 SRAM과 같은 하나 이상의 온-칩 버퍼(174), 및 더블 데이터 레이트(DDR) DRAM과 같은 하나 이상의 오프-칩 버퍼(176)에 연결될 수 있다.
인입 데이터 기록 요청(178)은 버퍼 관리자(172)에 의해 평가될 수 있고, 이는 후속적으로 버퍼 목적지와 부합하는 버퍼 테뉴어 값을 생성한다. 기록 요청의 데이터는 화살표(180)에 의해 나타난 바와 같이 오프-칩 버퍼(176)로부터 비휘발성 메모리(112)에 기록될 수 있거나, 또는 화살표(182)에 의해 나타난 바와 같이 온-칩 버퍼(174)로부터 기록될 수 있다. 기록 요청의 모든 데이터를 메모리(112) 안으로 옮기는 데 단일 기록 동작이 충분하지만, 비휘발성 메모리(112)가 트리플(TLC) 또는 쿼드(QLC) 셀과 같은 다중레벨 셀들을 포함하여, 데이터를 완전히 전송하는 데 다수의 별개의 기록 동작들을 요구하는 것을 고려한다. 다중레벨 셀들의 기록은 버퍼 관리자(172)에 의해 온-칩 버퍼(174) 대신에 더 느린 오프-칩 버퍼(176)에 인도되어 온-칩 버퍼가 새로운 기록 요청 데이터를 수신하고 지원할 수 있도록 하는 리드백(readback) 데이터를 수반할 수 있다.
버퍼 관리자(172)는 임의의 이유로 인해 발생한 비휘발성 메모리(112)로부터의 리드백 데이터를 사전에, 또는 반응하여 평가하여 시스템 성능을 떨어뜨리지 않으면서 데이터를 가장 잘 지원할 버퍼로 리드백 데이터를 인도할 수 있다. 이와 같이, 버퍼 관리자(172)는 기록 액세스 요청을 실행하면서 발생하는 실제, 또는 예측 리드백 데이터에 대한 버퍼 테뉴어 값을 생성할 수 있다.
도 6a 내지 도 6c는 각각 분산 네트워크 데이터 저장 시스템의 일부로서 데이터 저장 디바이스에 의해 시간이 경과함에 따라 수행되는 비제한적인 동작들의 블록 표현들을 도시한다. 도 6a는 시퀀스(190)를 나타내고, 단계(192)에서 기록 액세스 요청이 버퍼 관리자에 의해 수신된다. 버퍼 관리자는 시점(194)에서 요청을 처리하고, 단계(196)에서 할당된 버퍼와 부합하는 실제, 및/또는 예측 버퍼 테뉴어 값을 생성한다.
버퍼 테뉴어 값이 성능 임계치, 예컨대, 1 분, 10 마이크로초, 또는 10 나노초보다 낮은 경우에, 단계(198)는 기록 요청의 데이터를 온-칩 SRAM 버퍼에 기록하도록 진행한다. 단계(198)에서 버퍼에 데이터를 기록하는 것은 즉시 데이터를 데이터 저장 디바이스의 비휘발성 메모리에 기록하는 것을 스케줄링하는 것을 고려한다. 그러나, 단계(200)의 이벤트의 발생은 버퍼 관리자가 데이터를 단계(202)에서 더 느린 오프-칩 버퍼로 내보내도록 트리거할 수 있다. 단계(200)의 이벤트는 특정 경우에 제한되지 않고, 시스템 파라미터의 변경, 다른, 더 우선순위가 있는 기록 요청, 또는 기대되는 비휘발성 메모리 성능보다 더 느린 기록 요청의 수신일 수 있다.
도 6b의 시퀀스(210)는 이벤트(212)가 어떻게 단계(196)의 버퍼 할당 후 그리고 데이터가 버퍼에 기록되기 전에 일어날 수 있는지 보여준다. 이벤트(212)는 버퍼 테뉴어 값을 변경하거나, 또는 다른 방식으로 단계(214)에서 버퍼 관리자로 하여금 데이터 요청의 데이터를 오프-칩 DRAM에 송신하도록 할 수 있다. 데이터는 버퍼 관리자가 단계(216)에서 데이터로 하여금 SRAM 온-칩 버퍼로 이동되게 하기 전에 임의의 양의 시간 동안 오프-칩 버퍼에 상주할 수 있다. DRAM에서 SRAM으로 데이터 이동을 트리거하는 것은 이벤트(212)와 유사하거나, 또는 비유사할 수 있는 제2 이벤트로 간주될 수 있다.
온-칩 버퍼에 기록 요청 데이터를 저장하는 것은 단계(218)에서 데이터를 빠르게 비휘발성 메모리에 기록할 수 있게 한다. 따라서, 버퍼 관리자는 다수의 이벤트들에 적응하고, 오프-칩 DRAM으로부터가 아니라 온-칩 SRAM으로부터 비휘발성 메모리에 데이터를 최적으로 기록한다. 버퍼 관리자가 일부, 또는 전체 계류중인 기록 데이터를 오프-칩 버퍼들에 저장할 수 있다면, 데이터 저장 시스템은 계류중인 기록 데이터로 가득 찬 온-칩 버퍼를 유지할 수 있고, 이는 NAND 플래시와 같은 솔리드 스테이트 비휘발성 메모리를 채용하는 데이터 저장 디바이스를 이용하여 실현할 수 있는 가장 빠른 기록 요청 충족과 부합한다.
도 6c는 시퀀스(220)를 나타내며, 하나 이상의 이벤트(222)가 버퍼 관리자로부터의 버퍼 할당 전에, 또는 그 중간에 일어난다. 이벤트(들)(222)는 버퍼 관리자가 이전에 생성된 버퍼 테뉴어 값 및/또는 버퍼 할당을, 기록 데이터를 단계(226)에서 오프-칩 DRAM에 기록하고 단계(228)에서 온-칩 SRAM에 기록하도록 지정하는 단계(224)의 할당으로 변경하도록 트리거할 수 있다. 버퍼 관리자는 기록 데이터를, 단계들(226, 228)에서 버퍼들끼리 나누는 서브섹터들로 분할할 수 있다. 일부 실시예들에서, 기록 데이터는 단계들(226, 228)에서 두 버퍼에 미러링, 또는 스트라이핑되는데, 이는 단계(202)와 같이 내보내기 동안 데이터가 DRAM에 성공적으로 기록될 때까지 데이터를 SRAM에 담고 있어야 하는 것보다 더 효율적인, SRAM으로부터 내보내기를 허용한다.
하나, 또는 둘 모두의 버퍼에 데이터가 존재함으로 인해, 단계(230)에서 데이터를 비휘발성 메모리에 효율적으로 기록할 수 있다. 도 6a 내지 도 6c의 다양한, 비제한적인 실시예들을 이용하여, 버퍼 관리자의 적응 능력이 일반적으로 도시된다. 그러나, 시퀀스들(190, 210, 220)의 실시예들이 전부는 아니고, 버퍼 관리자는 데이터 저장 디바이스의 비휘발성 메모리에 대한 데이터 기록 대역폭을 최적화하는 임의의 방식으로 하나 이상의 갑작스런 이벤트에 적응할 수 있다. 결과적으로, 큰 볼륨의 데이터 기록 요청들은 분산 데이터 저장 시스템 네트워크의 별개의 데이터 저장 디바이스들에 의해 지능적으로, 아마도 상이하게 처리될 수 있다.
버퍼 관리자의 다양한 실시예들을 통해, 역동적인 이벤트들이 인식되고 시스템 성능을 떨어뜨리지 않으면서 효과적으로 처리될 수 있다. 예를 들어, 역동적인 이벤트는 데이터 경로 장애물 및/또는 병목현상을 만드는 에러일 수 있다 다른 비제한적인 경우는 버퍼 관리자가 데이터를 다양한 연결된 메모리들에 이동 또는 재전송하지 않고, 데이터 액세스 요청의 지원을 저하시킬 수 있는 충돌을 처리하는 것을 수반할 수 있다. 에러에 의해 차단된 데이터를 긴 테뉴어 메모리에 동적으로 재전송하는 경우에 대한 하나의 동기는, 짧은(빠른 경로) 테뉴어 메모리가 다른 호스트 인터페이스 포트 또는 다른 가상 저장 디바이스에 대한 데이터와 같이, 차단되지 않은 데이터를 지원할 수 있게 보존하기 위한 것이다.
가비지 수집 동작 동안 플래시 페이지들에 걸친 맵 유닛들이 판독되는 어드레싱 충돌이 일어나는 경우에, 알고리즘(156)은 전체 맵 유닛이 메모리로부터의 이송에 이용가능할 때까지 메모리로 판독된 제1 플래시 페이지를 재할당하지 못할 수 있다. 플래시 다이 충돌, 예컨대, 다이가 다이 상의 다른 페이지에 대한 가비지 수집 기록 또는 소거 동작으로 바빠서, 판독되고 있는 맵 유닛의 제2 절반을 일시적으로 지연시키는 경우, 전체 맵 유닛 및 연관된 제1 페이지는 긴 시간 동안 제1 메모리에 할당된 채 남게 되어, 가비지 수집 및/또는 호스트 동작에 대해 주어진 쓰루풋을 달성하는 데 이용가능한 메모리의 양을 감소시킬 것이다. 플래시 스케줄링이 앞서 일어나는 경우, 충돌은 제1 페이지가 메모리에 기록되기 전에 검출될 수 있고, 데이터는 버퍼 관리자에 의해 더 긴 테뉴어 메모리로 인도될 수 있고, 이는 짧은 테뉴어 메모리를 다른 동작들에 이용가능하게 보관한다.
버퍼 관리자의 지능의 일부는 계류중인 기록 요청과 연관된 다양한 특성들을 예측하는 능력이다. 도 7은 예측 동작들이 수행될 수 있는 예시 데이터 저장 디바이스의 일부분을 나타낸다. 도시된 바와 같이, 버퍼 관리자(232)는 적어도 계류중인 기록 요청 상태, 시스템 성능 메트릭, 모델링된 시스템 활동, 및 현재 시스템 활동을 수신하여 기록 요청을 지원하는 데 연관된 하나 이상의 파라미터를 예측할 수 있는 예측 모듈(160)을 갖는다.
예측 모듈(160)은 단독으로 작동하거나, 또는 로그(158) 또는 알고리즘(156)과 같은 버퍼 관리자의 다른 양태들과 함께 작동하여 듀레이션, 지연, 에러율, 및 전력 소비와 같은 지원 파라미터들을 수반하는 가상의 요청 지원 시나리오를 생성할 수 있다. 예측 모듈(160)은 동시에, 또는 순차적으로, 다양한 위험성 프로파일을 갖는 하나 초과의 요청 지원 시나리오를 생성할 수 있다. 즉, 예측 모듈(160)은 정확성 및 발생가능 위험성에 대하여 생성된 요청 지원 시나리오를 평가할 수 있다. 이러한 위험성에 대한 평가를 통해, 모듈(160)은 정확성 및 발생가능 위험성이 가장 높은 시나리오를 선택할 수 있는데, 이는 정확성이 사전결정된 임계치, 예컨대, 90% 초과하는 것에 부합할 수 있다.
예측 모듈(160)이 어떻게 예측된 요청 지원 시나리오의 지원 파라미터들에 도달하는지 상관없이, 버퍼 관리자(232)는 기록 요청을 처리하기 위한 사전정의된 펌웨어 명령어들을 변경함으로써 반응할 수 있다. 예를 들어, 버퍼 관리자(232)는 데이터에 대한 맞춤 타이머 범위를 설정하고, 기록 요청의 데이터를 수정, 및/또는 다수의 상이한 버퍼들에 데이터를 섀도우 기록할 수 있다. 주의할 점은, 도 7의 버퍼 관리자(232)의 출력 반응이 한정하거나 또는 총망라한 것은 아니며, 버퍼 관리자(232)는 10 나노초 또는 10 마이크로초 미만의 기록 요청 지연을 유지하는 것과 같이, 하나 이상의 데이터 기록 요청을 지원하는 동안 시스템 성능을 최적화하기 위한 데이터 기록 요청의 처리에 임의의 변경을 수행할 수 있다는 것이다.
도 9는 도 1 내지 도 8의 다양한 실시예들에서 실행되는 버퍼 관리 루틴(250)의 실행의 흐름도이다. 루틴(250)은 데이터 저장 시스템 분산 네트워크의 일부로서 하나 이상의 데이터 저장 디바이스를 활성화하는 단계(252)에서 시작한다. 각각의 데이터 저장 디바이스는 온-칩 제1 버퍼 및 오프-칩 제2 버퍼에 연결된 버퍼 관리자 및 공동 디바이스 하우징 내의 비휘발성 메모리로 구성될 수 있다. 시스템의 각각의 데이터 저장 디바이스가 하나 이상의 원격 호스트에 의해 액세스될 수 있음이 고려된다.
단계(254)에서, 하나 이상의 데이터 기록 요청이 적어도 하나의 호스트로부터 수신된다. 버퍼 또는 비휘발성 메모리에 기록되기 전에, 단계(256)는 계류중인 기록 요청의 데이터를 평가하여 버퍼 테뉴어 값을 생성한다. 데이터는, 일부 실시예들에서, 네트워크 제어기에 상주하는 캐시 메모리, 또는 데이터 저장 디바이스 자체에 기록되지만, 단계(256)는 기록 요청을 처리하여 버퍼 테뉴어 값 및 버퍼 목적지를 제공한다.
생성된 버퍼 테뉴어 값은 이어서 버퍼 관리자에 의해 현재 데이터 저장 시스템 성능의 관점에서 생성된 임계치에 대하여 버퍼 관리자에 의해 평가된다. 즉, 버퍼 관리자는 연속적으로, 또는 산발적으로, 데이터 저장 디바이스 및/또는 시스템의 성능을 평가하여 최적 데이터 기록 요청 지원에 부합하는 버퍼 테뉴어 값들에 대한 임계치를 생성할 수 있다. 결정단계(258)는 단계(256)의 버퍼 테뉴어 값을 테뉴어 임계치와 비교한다. 테뉴어 값이 임계치보다 큰 경우, 기록 요청의 데이터가 임계 할당 시간보다 오랫동안 버퍼에 상주할 것을 의미하며, 루틴(250)은 데이터 기록 요청의 데이터가 오프-칩 제2 버퍼에 기록되는 단계(260)로 진행한다.
단계(260)의 결론에서, 또는 버퍼 테뉴어 값이 결정단계(258)의 임계치 미만인 경우, 결정단계(262)는 온-칩 제1 버퍼가 비휘발성 메모리에 기록되기 위하여 대기중인 데이터로 가득 차 있는지 평가하도록 진행한다. 그런 경우, 데이터는 오프-칩 제2 버퍼에 기록된다. 제1 버퍼가 가득 차 있지 않은 경우, 단계(266)는 데이터를 온-칩 제1 버퍼에 기록한다. 결정단계(262)에서 온-칩 제1 버퍼가 데이터로 가득 차 있는지 결정하는 것은 데이터를 더 느린 오프-칩 제2 버퍼에 기록하기 전에 더 빠른 제1 버퍼가 가득 차도록 보장한다.
단계들(264 또는 266)에서 제1 또는 제2 버퍼 중 어느 하나에 상주하는 데이터는 단계(268)에서 버퍼 관리자가 데이터 저장 디바이스의 비휘발성 메모리에 데이터를 기록하는 것을 효과적으로 스케줄하게 해준다. 데이터를 기록해야 하는 대신에 각각의 버퍼들로부터의 데이터를 비휘발성 메모리에 기록하는 것을 편리하게 스케줄할 수 있음으로써 버퍼 관리자는 가득 찬 SRAM 온-칩 버퍼를 유지하는 데이터 기록 요청들의 대역폭을 최적화할 수 있다.
본 개시의 다양한 실시예들의 다수의 특성들 및 구성들이 다양한 실시예들의 구조 및 기능의 세부사항들과 함께 전술한 설명에서 기술되었지만, 이러한 상세한 설명은 단지 예시적이고, 첨부된 청구 범위가 표현되는 용어들의 광의의 일반적인 의미에 의해 표시되는 최대한의 범위까지, 특히 본 개시의 원리들 내의 부분들의 구조 및 배열들에 관한 문제들에서 변화들이 상세히 행해질 수 있음을 이해해야 한다. 예를 들어, 특정 구성요소들은 본 기술의 사상 및 범주를 벗어나지 않고 특정 응용에 따라 달라질 수 있다.

Claims (20)

  1. 제1 버퍼, 제2 버퍼, 버퍼 관리자, 및 비휘발성 메모리를 갖는 데이터 저장 디바이스를 포함하는 장치로서, 상기 제1 버퍼는 온-칩에 위치하고, 상기 제2 버퍼는 오프-칩에 위치하며, 상기 제1 버퍼는 상기 버퍼 관리자에 의해 인도된 바에 따라 사전결정된 테뉴어(tenure) 임계치 미만의 테뉴어를 갖는 데이터로 채워지는, 장치.
  2. 제1항에 있어서, 상기 제1 버퍼는 정적 랜덤 액세스 메모리인, 장치.
  3. 제1항에 있어서, 상기 제2 버퍼는 동적 랜덤 액세스 메모리인, 장치.
  4. 제1항에 있어서, 상기 비휘발성 메모리는 NAND 플래시인, 장치.
  5. 제1항에 있어서, 상기 제2 버퍼는 상기 데이터 저장 디바이스의 하우징 내에 위치설정되는, 장치.
  6. 방법으로서,
    데이터 저장 디바이스를 활성화하는 단계 - 상기 데이터 저장 디바이스는 제1 버퍼, 제2 버퍼, 버퍼 관리자, 및 비휘발성 메모리를 가지며, 상기 제1 버퍼는 온-칩에 위치하고, 상기 제2 버퍼는 오프-칩에 위치함 -;
    상기 버퍼 관리자를 이용하여 테뉴어 임계치를 생성하는 단계;
    제1 데이터 섹터가 상기 테뉴어 임계치를 초과하는 것에 응답하여 상기 버퍼 관리자를 이용하여 상기 제1 데이터 섹터를 상기 제1 버퍼로부터 내보내는 단계; 및
    상기 버퍼 관리자에 의해 상기 제1 버퍼를 상기 테뉴어 임계치 미만의 테뉴어를 갖는 데이터로 채우도록 인도됨에 따라 제2 데이터 섹터를 상기 제1 버퍼에 저장하는 단계를 포함하는, 방법.
  7. 제6항에 있어서, 상기 테뉴어 임계치는 상기 제2 버퍼의 지연 속도(latency speed)와 매칭되는, 방법.
  8. 제6항에 있어서, 상기 버퍼 관리자는 상기 제1 데이터 섹터를 상기 제2 버퍼로 내보내는, 방법.
  9. 제6항에 있어서, 상기 제2 데이터 섹터는 후속적으로 상기 비휘발성 메모리에 기록되는, 방법.
  10. 제6항에 있어서, 상기 테뉴어 임계치는 알고리즘, 현재 데이터 저장 디바이스 활동, 데이터 저장 디바이스 과거 성능, 및 계류중인 기록 요청 볼륨에 기초하여 생성되는, 방법.
  11. 제6항에 있어서, 상기 버퍼 관리자는 상기 비휘발성 메모리로부터의 리드백(readback) 데이터를 상기 제2 버퍼에 저장하여, 상기 리드백 데이터가 상기 제1 버퍼에 저장되지 않는, 방법.
  12. 제6항에 있어서, 상기 버퍼 관리자는 상기 제2 데이터 섹터를 상기 제1 버퍼에서 상기 제2 버퍼로 재전송함으로써 역동적인 이벤트에 반응하는, 방법.
  13. 제12항에 있어서, 상기 역동적인 이벤트는 데이터 저장 디바이스 성능의 감소에 부합하는 데이터 에러인, 방법.
  14. 제12항에 있어서, 상기 역동적인 이벤트는 데이터 저장 디바이스 성능의 감소에 부합하는 어드레싱 충돌인, 방법.
  15. 방법으로서,
    데이터 저장 디바이스를 활성화하는 단계 - 상기 데이터 저장 디바이스는 제1 버퍼, 제2 버퍼, 버퍼 관리자, 및 비휘발성 메모리를 가지며, 상기 제1 버퍼는 온-칩에 위치하고, 상기 제2 버퍼는 오프-칩에 위치함 -;
    상기 버퍼 관리자를 이용하여 테뉴어 임계치를 생성하는 단계;
    상기 버퍼 관리자를 이용하여 제1 데이터 섹터의 테뉴어를 예측하는 단계;
    상기 예측 테뉴어가 상기 테뉴어 임계치보다 큰 것에 응답하여 상기 제1 데이터 섹터를 상기 제2 버퍼에 저장하는 단계;
    상기 버퍼 관리자를 이용하여 제2 데이터 섹터의 테뉴어를 예측하는 단계;
    제3 데이터 섹터가 상기 테뉴어 임계치를 초과하는 것에 응답하여 상기 버퍼 관리자를 이용하여 상기 제3 데이터 섹터를 상기 제1 버퍼로부터 내보내는 단계; 및
    상기 버퍼 관리자에 의해 상기 제1 버퍼를 상기 테뉴어 임계치 미만의 테뉴어를 갖는 데이터로 채우도록 인도됨에 따라 상기 제2 데이터 섹터를 상기 제1 버퍼에 저장하는 단계를 포함하는, 방법.
  16. 제15항에 있어서, 상기 버퍼 관리자는 예측 모듈이 상기 제2 데이터 섹터를 평가하는 것에 응답하여 맞춤 타이머를 설정하는, 방법.
  17. 제16항에 있어서, 상기 맞춤 타이머는 상기 테뉴어 임계치와 상이한, 방법.
  18. 제15항에 있어서, 상기 버퍼 관리자는 상기 제2 데이터 섹터의 상기 예측 테뉴어에 응답하여 상기 제2 데이터 섹터를 변경하는, 방법.
  19. 제18항에 있어서, 상기 버퍼 관리자는 상기 제2 데이터 섹터를 제1 서브섹터 및 제2 서브섹터로 분할하고, 상기 제1 서브섹터는 상기 제1 버퍼에 저장되고, 상기 제2 서브섹터는 상기 제2 버퍼에 저장되는, 방법.
  20. 제15항에 있어서, 상기 버퍼 관리자는 각각의 예측 단계 동안 적어도 하나의 데이터 저장 디바이스 성능 메트릭을 예측하는, 방법.
KR1020180061833A 2017-05-30 2018-05-30 데이터 저장 디바이스와 버퍼 테뉴어 관리 KR102095471B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/608,203 US10248330B2 (en) 2017-05-30 2017-05-30 Data storage device with buffer tenure management
US15/608,203 2017-05-30

Publications (2)

Publication Number Publication Date
KR20180131466A true KR20180131466A (ko) 2018-12-10
KR102095471B1 KR102095471B1 (ko) 2020-03-31

Family

ID=64459939

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180061833A KR102095471B1 (ko) 2017-05-30 2018-05-30 데이터 저장 디바이스와 버퍼 테뉴어 관리

Country Status (4)

Country Link
US (1) US10248330B2 (ko)
JP (1) JP2018206380A (ko)
KR (1) KR102095471B1 (ko)
CN (1) CN108984429B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210017833A (ko) * 2019-08-09 2021-02-17 한국전자기술연구원 뉴로모픽 메모리 관리 시스템 및 이를 통한 가중치 연산 방법
US11449738B2 (en) 2019-08-09 2022-09-20 Korea Electronics Technology Institute Neuromorphic memory management system and method thereof

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10776023B2 (en) * 2016-11-07 2020-09-15 Gaea LLC Data storage device with configurable policy-based storage device behavior
JP2019046238A (ja) * 2017-09-04 2019-03-22 東芝メモリ株式会社 メモリシステム
KR102507302B1 (ko) * 2018-01-22 2023-03-07 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
DE102018005618B4 (de) * 2018-07-17 2021-10-14 WAGO Verwaltungsgesellschaft mit beschränkter Haftung Vorrichtung zur gepufferten Übertragung von Daten
US11169919B2 (en) 2019-05-12 2021-11-09 International Business Machines Corporation Cache preference for selected volumes within a storage system
US11151035B2 (en) 2019-05-12 2021-10-19 International Business Machines Corporation Cache hit ratios for selected volumes within a storage system
US11237730B2 (en) 2019-05-12 2022-02-01 International Business Machines Corporation Favored cache status for selected volumes within a storage system
US11163698B2 (en) 2019-05-12 2021-11-02 International Business Machines Corporation Cache hit ratios for selected volumes using synchronous I/O
US11176052B2 (en) 2019-05-12 2021-11-16 International Business Machines Corporation Variable cache status for selected volumes within a storage system
KR102408966B1 (ko) * 2019-08-09 2022-06-15 한국전자기술연구원 뉴로모픽 메모리 관리 시스템 및 관리 방법
US11663144B2 (en) 2020-01-20 2023-05-30 International Business Machines Corporation LRU list reorganization for favored and unfavored volumes
US11972109B2 (en) 2021-03-01 2024-04-30 Micron Technology, Inc. Two-stage buffer operations supporting write commands

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161552A1 (en) * 2009-12-30 2011-06-30 Lsi Corporation Command Tracking for Direct Access Block Storage Devices
US20130086131A1 (en) * 2011-10-03 2013-04-04 Oracle International Corporation Time-based object aging for generational garbage collectors
US9043530B1 (en) * 2012-04-09 2015-05-26 Netapp, Inc. Data storage within hybrid storage aggregate

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638528A (en) 1993-11-01 1997-06-10 Motorola, Inc. Data processing system and a method for cycling longword addresses during a burst bus cycle
US6397287B1 (en) 1999-01-27 2002-05-28 3Com Corporation Method and apparatus for dynamic bus request and burst-length control
US6425023B1 (en) 1999-03-24 2002-07-23 International Business Machines Corporation Method and system for gathering and buffering sequential data for a transaction comprising multiple data access requests
US6556952B1 (en) 2000-05-04 2003-04-29 Advanced Micro Devices, Inc. Performance monitoring and optimizing of controller parameters
DE10309919B4 (de) 2003-03-07 2008-09-25 Qimonda Ag Pufferbaustein und Speichermodule
US20050041453A1 (en) * 2003-08-22 2005-02-24 Brazis Paul W. Method and apparatus for reading and writing to solid-state memory
US7380102B2 (en) * 2005-09-27 2008-05-27 International Business Machines Corporation Communication link control among inter-coupled multiple processing units in a node to respective units in another node for request broadcasting and combined response
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US7921243B1 (en) 2007-01-05 2011-04-05 Marvell International Ltd. System and method for a DDR SDRAM controller
US7818497B2 (en) 2007-08-31 2010-10-19 International Business Machines Corporation Buffered memory module supporting two independent memory channels
US7584308B2 (en) 2007-08-31 2009-09-01 International Business Machines Corporation System for supporting partial cache line write operations to a memory module to reduce write data traffic on a memory channel
US7925824B2 (en) 2008-01-24 2011-04-12 International Business Machines Corporation System to reduce latency by running a memory channel frequency fully asynchronous from a memory device frequency
US8949500B2 (en) 2011-08-08 2015-02-03 Lsi Corporation Non-blocking processor bus bridge for network processors or the like
US9569320B2 (en) * 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US20120311269A1 (en) * 2011-06-03 2012-12-06 Loh Gabriel H Non-uniform memory-aware cache management
US8738882B2 (en) * 2011-06-03 2014-05-27 Apple Inc. Pre-organization of data
US8825721B2 (en) * 2011-10-03 2014-09-02 Oracle International Corporation Time-based object aging for generational garbage collectors
US9645917B2 (en) * 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9274865B2 (en) * 2013-08-01 2016-03-01 HGST Netherlands B.V. Implementing enhanced buffer management for data storage devices
US10481799B2 (en) * 2016-03-25 2019-11-19 Samsung Electronics Co., Ltd. Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161552A1 (en) * 2009-12-30 2011-06-30 Lsi Corporation Command Tracking for Direct Access Block Storage Devices
US20130086131A1 (en) * 2011-10-03 2013-04-04 Oracle International Corporation Time-based object aging for generational garbage collectors
US9043530B1 (en) * 2012-04-09 2015-05-26 Netapp, Inc. Data storage within hybrid storage aggregate

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210017833A (ko) * 2019-08-09 2021-02-17 한국전자기술연구원 뉴로모픽 메모리 관리 시스템 및 이를 통한 가중치 연산 방법
US11449738B2 (en) 2019-08-09 2022-09-20 Korea Electronics Technology Institute Neuromorphic memory management system and method thereof

Also Published As

Publication number Publication date
US10248330B2 (en) 2019-04-02
JP2018206380A (ja) 2018-12-27
CN108984429A (zh) 2018-12-11
US20180349035A1 (en) 2018-12-06
CN108984429B (zh) 2023-07-28
KR102095471B1 (ko) 2020-03-31

Similar Documents

Publication Publication Date Title
KR102095471B1 (ko) 데이터 저장 디바이스와 버퍼 테뉴어 관리
US10824352B2 (en) Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded
US10776263B2 (en) Non-deterministic window scheduling for data storage systems
US11138124B2 (en) Migrating data between block pools in a storage system
US8171239B2 (en) Storage management method and system using the same
US11762569B2 (en) Workload based relief valve activation for hybrid controller architectures
US9696934B2 (en) Hybrid solid state drive (SSD) using PCM or other high performance solid-state memory
US20200004455A1 (en) Data storage system with improved time-to-ready
US20180074751A1 (en) Data transmission method, memory storage device and memory control circuit unit
US20160313921A1 (en) Memory device that controls timing of receiving write data from a host
US11016679B2 (en) Balanced die set execution in a data storage system
US10956049B2 (en) Wear-aware block mode conversion in non-volatile memory
US9898201B2 (en) Non-volatile memory device, and storage apparatus to reduce a read retry occurrence frequency and prevent read performance from lowering
US10929025B2 (en) Data storage system with I/O determinism latency optimization
WO2020248798A1 (zh) 智能识别非易失存储介质不可靠块的方法与装置
US11803468B2 (en) Data storage system with write back cache
US20200387307A1 (en) Namespace auto-routing data storage system
US11256621B2 (en) Dual controller cache optimization in a deterministic data storage system
US20210096985A1 (en) Memory controller and storage device including the same
US10564890B2 (en) Runt handling data storage system
US10872015B2 (en) Data storage system with strategic contention avoidance
KR20100105127A (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
US11861175B2 (en) Latency in data storage systems
US20220113898A1 (en) Data storage system with workload-based asymmetry compensation
US20180335961A1 (en) Network Data Storage Buffer System

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