KR20150050457A - 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐 - Google Patents

하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐 Download PDF

Info

Publication number
KR20150050457A
KR20150050457A KR1020140148307A KR20140148307A KR20150050457A KR 20150050457 A KR20150050457 A KR 20150050457A KR 1020140148307 A KR1020140148307 A KR 1020140148307A KR 20140148307 A KR20140148307 A KR 20140148307A KR 20150050457 A KR20150050457 A KR 20150050457A
Authority
KR
South Korea
Prior art keywords
data access
command
access command
memory
data
Prior art date
Application number
KR1020140148307A
Other languages
English (en)
Other versions
KR101663066B1 (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 KR20150050457A publication Critical patent/KR20150050457A/ko
Application granted granted Critical
Publication of KR101663066B1 publication Critical patent/KR101663066B1/ko

Links

Images

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions

Landscapes

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

Abstract

저장 디바이스 레이턴스의 성능을 개선하기 위한 시스템들 및 방법들이 개시된다. 일 실시예에서, 장치는 제어기를 포함하며, 상기 제어기는, 비휘발성 고체 상태 메모리 및 디스크 메모리를 포함하는 디바이스에서 제 1 데이터 액세스 커맨드를 수신하고, 그리고 제 1 데이터 액세스 커맨드가 비휘발성 고체 상태 메모리에 대해 지시될 때, 제 1 데이터 액세스 커맨드를 비휘발성 고체 상태 메모리에 대한 제 1 커맨드 큐(queue)에 저장하도록 구성된다. 또 다른 실시예에서, 방법은, 데이터 저장 디바이스에서, 제 1 데이터 액세스 커맨드를 수신하는 단계, 제 1 데이터 액세스 커맨드를 제 1 커맨드 큐에 저장하는 단계, 데이터 액세스 커맨드가 플래시 메모리에 대해 지시되는지 또는 디스크 메모리에 대해 지시되는지를 결정하는 단계, 및 제 1 데이터 액세스 커맨드가 플래시 메모리에 대해 지시될 때, 제 1 데이터 액세스 커맨드를 제 2 커맨드 큐에 저장하는 단계를 포함한다.

Description

하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐{SOLID STATE MEMORY COMMAND QUEUE IN HYBRID DEVICE}
본 개시물은 데이터 저장 디바이스들(DSD들)에 관한 것이며, 특히, 고체 상태 메모리를 사용하는 DSD들에 관한 것이다.
실시예에서, 장치는 비휘발성 고체 상태 메모리 및 디스크 메모리를 포함하는 디바이스에서 제 1 데이터 액세스 커맨드를 수신하고, 제 1 데이터 액세스 커맨드가 비휘발성 고체 상태 메모리로 지향될 때, 제 1 데이터 액세스 커맨드를 비휘발성 고체 상태 메모리에 대한 제 1 커맨드 큐에 저장하도록 구성된 제어기를 포함할 수 있다.
또 다른 실시예에서, 메모리 장치는, 캐시 메모리를 포함하는 데이터 저장 디바이스에서 제 1 데이터 액세스 커맨드를 수신하는 단계, 및 제 1 데이터 액세스 커맨드가 캐시 메모리로 지향될 때 제 1 데이터 액세스 커맨드를 캐시 메모리에 대한 제 1 커맨드 큐에 저장하는 단계를 포함하는 방법을 프로세서로 하여금 수행하게 하는 명령들을 저장할 수 있다.
또 다른 실시예에서, 방법은, 데이터 저장 디바이스에서, 제 1 데이터 액세스 커맨드를 수신하는 단계, 제 1 데이터 액세스 커맨드를 제 1 커맨드 큐에 저장하는 단계, 데이터 액세스 커맨드가 플래시 메모리로 지향되는지 또는 디스크 메모리로 지향되는지를 결정하는 단계, 및 제 1 데이터 액세스 커맨드가 플래시 메모리로 지향될 때 제 1 데이터 액세스 커맨드를 제 2 커맨드 큐에 저장하는 단계를 포함할 수 있다.
도 1은 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 포함하는 시스템의 예시적인 실시예의 도면이다.
도 2는 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 포함하는 시스템의 또 다른 예시적인 실시예의 도면이다.
도 3은 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 포함하는 시스템의 또 다른 예시적인 실시예의 도면이다.
도 4는 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 사용하는 처리의 예시적인 실시예의 도면이다.
도 5는 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 사용하는 방법의 예시적인 실시예의 흐름도이다.
도 6은 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 사용하는 처리의 예시적인 실시예의 도면이다.
도 7은 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 사용하는 방법의 예시적인 실시예의 흐름도이다.
하기 실시예들에 대한 상세한 설명에서, 실시예들의 부분을 형성하고 특정한 실시예들의 예로서 도시되는 첨부 도면들에 대한 참조가 이루어진다. 다른 실시예들이 활용될 수 있고, 구조적인 변경들이 본 개시의 범위로부터 벗어남 없이 이루어질 수 있다는 것이 이해될 것이다. 또한 다양한 실시예들의 특징들은 본 개시의 범위로부터 벗어남 벗이 결합, 분리, 교환, 또는 제거될 수 있다는 것이 이해될 것이다.
도 1은 일반적으로 100으로 지정되는 하이브리드 디바이스에서 고상 메모리 커맨드 큐를 포함하는 시스템의 실시예를 도시한다. 시스템(100)은 호스트(102) 및 데이터 저장 디바이스(DSD)(104)를 포함할 수 있다. 호스트(102)는 또한 호스트 시스템 또는 호스트 컴퓨터로서 지칭될 수 있다. 호스트(102)는 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버, 태블릿 컴퓨터, 전화, 음악 재생기, 다른 전자 디바이스, 또는 이들의 임의의 결합일 수 있다. 유사하게, DSD(104)는 위에서 나열된 디바이스들 중 임의의 것, 또는 데이터를 저장 또는 리트리브하는데 이용될 수 있는 임의의 다른 디바이스일 수 있다. 호스트(102) 및 DSD(104)는 유선 또는 무선 연결에 의해, 또는 로컬 영역 네트워크(LAN) 또는 광역 네트워크(WAN)에 의해 연결될 수 있다. 몇몇 실시예들에서, DSD(104)는 호스트(102)에 연결되지 않는 자립형 디바이스일 수 있거나, 또는 호스트(102) 및 DSD(104)는 둘 다 단일 유닛의 부분일 수 있다.
DSD(104)는 비휘발성 메모리(106) 및 고상 메모리(108)를 포함할 수 있다. 비휘발성 메모리(106)는 디스크 드라이브들과 같은 자기 저장 매체들, 비휘발성 고상 메모리들, 또는 다른 타입들의 메모리, 또는 이들의 결합을 포함할 수 있다. 고상 메모리(108)는 NAND 또는 다른 타입들의 플래시 메모리와 같은 다른 비휘발성 메모리, 임의의 다른 타입의 비휘발성 메모리, 또는 이들의 결합을 포함할 수 있다. 고상 메모리(108)는 예를 들어, 비휘발성 메모리(106)로부터 빈번하게 또는 최근에 액세스한 데이터를 저장하기 위한 비휘발성 메모리(106)용 캐시로서 이용될 수 있다. 예를 들어, DSD(104)는 디스크 비휘발성 메모리(106) 및 고상 플래시 캐시 메모리(108)를 갖는 하이브리드 드라이브를 포함할 수 있다. 예를 들어, 비휘발성 메모리(106)는 디스크 메모리, 단일-레벨 또는 다중-레벨 플래시와 같은 고상 메모리, 다른 종류의 비휘발성 메모리, 또는 이들의 임의의 결합일 수 있다. 몇몇 실시예들에서, 비휘발성 메모리(106) 및 고상 메모리(108)는 데이터를 저장 또는 리트리브하기 위해 상이한 액세스 방법들을 이용할 수 있다.
몇몇 실시예들에서, 고상 메모리(108)는 비휘발성 메모리(106)보다 더 빠른 판독 또는 기록 액세스 시간을 가질 수 있다. 고상 메모리(108)는 비휘발성 메모리(106)에 대한 액세스 속도들보다 더 빠른 액세스를 위해 데이터를 저장하기 위한 캐시로서 이용될 수 있다. 예를 들어, DSD(104)는 호스트(102)로부터 데이터 판독 요청을 수신할 수 있고, DSD는 그것이 요청된 데이터를 보유하는지를 결정하기 위해 먼저 캐시 메모리(108)를 검사할 수 있다. 보유한 경우, DSD(104)는 데이터를 빠르게 리트리브할 수 있을 수도 있는 반면에, 보유하지 않은 경우, DSD는 더 느린 비휘발성 메모리(106)로부터 데이터를 리트리브할 필요가 있을 수 있고, 미래의 판독 요청들의 경우에 데이터를 캐시(108)에 로딩할 수 있다. 다른 예에서, DSD(104)는 데이터 기록 커맨드를 수신할 수 있다. DSD(104)는 캐시 메모리(108)에 데이터를 기록할 수 있고, 이는 비휘발성 메모리(106)로의 기록보다 더 빠를 수 있다. 이러한 방식으로, 데이터가 빈번하게 업데이트되는 경우, 데이터는 더 빠른 캐시(108)에 기록될 수 있고, 간격을 두고 또는 추후의 시간에 비휘발성 메모리(106)에 단지 복제될 수 있다. 고상 메모리(108)에 의해 제공되는 감소된 레이턴시는 DSD(104)의 전체 성능 및 응답 시간들을 개선할 수 있다.
도 2는, 하이브리드 디바이스에 고체 상태 메모리 커맨드 큐를 포함하는 시스템의 일 실시예의 다이어그램을 도시하며, 그 다이어그램은 일반적으로 (200)으로 지정된다. 시스템(200)은, 도 1에 도시된 호스트(102)와 같은 호스트 디바이스(202)를 포함할 수도 있다. 호스트(202)는, 도 1에 도시된 고체 상태 하이브리드 드라이브 데이터 저장 디바이스(DSD)(104)와 같은 DSD(204)에 유선 또는 무선 접속을 통해 접속될 수도 있다. DSD(204)는, 하드 디스크 드라이브(206)와 같은 비휘발성 메모리, 및 NAND 플래시 메모리(208)와 같은 비휘발성 고체 상태 메모리를 포함할 수도 있다. DSD(204)는, 메모리들에 대한 액세스 동작들 뿐만 아니라 DSD(204)의 다른 동작들 및 프로세스들을 제어하기 위해 HDD 제어기(210) 및 플래시 제어기(212)를 더 포함할 수도 있다. 몇몇 실시예들에서, HDD 제어기(210) 및 플래시 제어기(212)는, 하나 또는 그 초과의 회로 디바이스들을 포함할 수도 있으며, 다수의 동작들을 수행하도록 구성된 단일 유닛으로 통합될 수도 있다. 부가적으로, DSD(204)는, DSD(204)의 계류중인 액세스 동작들을 저장하는데 사용될 수도 있는 1차 큐(214) 및 플래시 큐(216)를 가질 수도 있다. 1차 큐(214) 및 플래시 큐(216)는, 동적 랜덤 액세스 메모리(DRAM) 또는 정적 RAM(SRAM) 유닛과 같은 하나 또는 그 초과의 메모리들에 저장될 수도 있다.
일 예시적인 실시예에서, 호스트(202)는, SATA 인터페이스와 같은 유선 또는 무선 인터페이스를 통해 DSD(204)에 커맨드들을 전송할 수도 있다. 인터페이스를 통해 DSD(204)에 의하여 수신된 커맨드들은 1차 큐(214)에 큐잉될 수도 있다. 예를 들어, 단일 커맨드를 수신하고, 커맨드를 실행하며, 그 후, 제 2 커맨드를 수신하기 전에 "동작 완료" 응답을 호스트에 리턴하기보다는, DSD는 대신, 다수의 커맨드들을 수신하고 그들을 큐에 저장할 수도 있어서, 각각 이후, 커맨드가 성공적으로 수신되었고 새로운 커맨드들이 전송될 수도 있단느 표시를 호스트에 리턴한다. 이것은, 기존의 커맨드들이 여전히 실행되고 있는 동안 새로운 커맨드들이 수신되게 한다. 이것은 또한, 예컨대 SATA 인터페이스 커맨드들에 대해 커맨드 오버헤드로 인한 지연들을 감소시키는 것을 도울 수 있다.
DSD(204)는, 예를 들어, 1차 큐(214)로부터 가장 오래된 수신된 커맨드를 리트리브함으로써, 주어진 커맨드를 HDD 제어기(210)에서 수신할 수도 있다. 판독 또는 기입 동작과 같은 데이터 액세스 동작에 대해, HDD 제어기(210)는, 동작이 HDD(206) 또는 플래시 메모리(208)에 지향되어야 하는지를 결정할 수도 있다. 데이터 동작이 HDD(206)에 지향되면, HDD 제어기(210)는 HDD(206)에 액세스하고, 그 후, 적절할 때 결과를 호스트(202)에 리턴할 수 있다.
본 발명의 일 실시예에 따르면, 플래시 메모리(208)를 향해 지향된 동작들은, 예를 들어, 플래시-기반 동작들을 실행하기 위한 프로그래밍가능 상태 머신(PSM)을 포함할 수도 있는 플래시 제어기(212)에 전송될 수도 있다. 플래시 큐(216) 없는 시스템에서, 커맨드는, 동작을 완료하기 위해 플래시 메모리(208)에 액세스할 플래시 제어기(212)에 전송될 수도 있다. 그 후, 플래시 제어기(212)는, HDD 제어기가 1차 큐(214)로부터 후속 동작으로 진행할 수 있기 전에, HDD 제어기(210)에 다시 결과들을 전송할 수도 있다. 그러나, 본 발명의 예에서와 같이 플래시 큐(212)를 갖는 시스템에서, 커맨드는, 실행 전에 또는 플래시 제어기(212)에 도달하기 전에 플래시 큐(216)로 저장될 수도 있다.
다수의 커맨드 상황에서, 이것은, 버스를 통해 전송되는 다수의 커맨드들로 인해 레이턴시의 양을 감소시킴으로써, 커맨드들을 수신 및 실행하고, NAND 플래시로부터 HDD 제어기로 데이터를 전달할 시에 성능을 개선시킬 수도 있다. 플래시 캐시를 사용하여 커맨드들을 버퍼링하는 것은 도 4에 도시된 바와 같이 파이프라이닝을 허용한다.
도 3은 일반적으로 300으로 표시된, 하이브리드 디바이스에 고체 상태 메모리 커맨드 큐를 포함하는 시스템의 실시예의 다른 도면을 묘사한다. 구체적으로, 도 3은 예시적 고체 상태 하이브리드 디스크 드라이브 데이터 저장 디바이스(DSD)(300)의 기능 블록도를 제공한다. DSD(300)는 도 1에 도시된 디바이스(104)와 같은 데이터 저장 디바이스일 수 있다. DSD(300)는, DSD(300)가 호스트(302)로부터 물리적으로 제거되도록 허용하는 커넥터(미도시)를 포함할 수 있는 하드웨어 또는 펌웨어-기반 인터페이스 회로(304)를 통해, 호스트 디바이스(302)(예컨대, 도 1에 도시된 호스트 시스템(102))와 통신할 수 있다. 몇몇 실시예들에서, DSD(300)는 DSD의 컴포넌트들을 하우징하는 케이싱(340)을 가질 수 있다. 몇몇 실시예들에서, DSD(300)는 인터페이스(304)를 통해 유선 또는 무선 통신을 경유해 호스트(302)와 통신할 수 있다. 버퍼(312)는 판독 및 기록 동작들 동안 데이터를 일시적으로 저장할 수 있고, 다수의 계류중인 동작들이 실행이 계류된 채로 일시적으로 저장될 수 있는 커맨드 큐(CQ)(313)를 포함할 수 있다. CQ(313)는 도 2에 도시된 일차 큐(214)에 대응할 수 있다. 인터페이스(304)를 경유해 도달하는 커맨드들은 CQ(313)에 자동으로 수신될 수 있거나, 또는 그곳에 HDD 제어기(306), 인터페이스(304) 또는 다른 컴포넌트에 의해 저장될 수 있다. 예컨대 최근에 또는 빈번하게 판독된 또는 기록된 데이터를 저장하기 위해 캐시로서 사용될 수 있는 NAND 플래시 메모리와 같이, 고체 상태 메모리(330)가 포함될 수 있다. 디스크(309) 및 플래시(330)와 같이, 다수의 타입들의 비휘발성 저장 매체들을 포함하는 DSD(300)는 하이브리드 저장 디바이스일 수 있다.
DSD(300)는 연관된 메모리(308) 및 프로세서(310)를 갖는 프로그램어블제어기(306)(예컨대, 도 2의 HDD 제어기(210))를 포함할 수 있다. 추가로, 도 3은, 기록 동작들 동안 데이터를 인코딩할 수 있고 판독 동작들 동안 디스크(들)(309)로부터 리트리빙된 사용자 데이터를 재구성할 수 있는 판독-기록(R/W) 채널(317)을 DSD(300)가 포함할 수 있음을 도시한다. 전치증폭기 회로(preamp)(318)는 기록 전류들을 헤드(들)(319)에 인가할 수 있고, 리드-백(read-back) 신호들의 전치-증폭을 제공한다. 서보 제어 회로(320)는, 헤드(들)(319)를 포지셔팅하기 위해 적절한 전류를 코일(324)에 제공하는데 서보 데이터를 사용할 수 있다. 제어기(306)는, 커맨드 큐(313)에 있는 다양한 계류중인 커맨드들의 실행 동안 헤드(들)(319)를 디스크(들)(309) 상의 원하는 위치들로 이동시키기 위해 프로세서(322)와 통신할 수 있다. 몇몇 실시예들에서, 플래시(330)는, 디스크로부터 판독되고 캐시에 로딩된 데이터와 같이, 디스크(309) 상에 이미 저장된 데이터의 복사들을 저장할 수 있다. 다른 시간들에, 플래시(330)는, 디스크(309)에 아직 레코딩되지 않은 기록 데이터와 같이, 디스크(309) 상에는 없는 데이터를 포함할 수 있다.
예시적 실시예에서, 커맨드는 호스트(302)로부터 인터페이스(304)를 경유해 DSD(300)에 수신된다. 인터페이스(304)는, 그 중에서도, USB, IEEE 1394, Compact Flash, SATA, eSATA, PATA, SCSI, SAS, PCIe, Fibre Channel, Ethernet, 또는 Thunderbolt와 같이, 유선으로든 또는 무선으로든, 호스트(302)와 DSD(300) 사이의 통신을 허용하는 임의의 인터페이스를 포함할 수 있다. DSD(300)는, 커맨드의 본질을 결정하고 따라서 동작하도록 구성될 수 있다. 예컨대, 판독 커맨드는, DSD(300)가, 예컨대 HDD 제어기(306)를 사용하여, 데이터가 캐시(330)에 있는지 또는 디스크(309) 상에만 있는지, 그리고 캐시로부터 데이터를 리트리빙할 것인지 또는 데이터가 캐시에 없다면 디스크를 회전시킬 것인지 중 어느 쪽인지를 결정하도록 야기할 수 있다. 다른 예에서, 기록 커맨드는, DSD(300)가, 데이터를 캐시(330)에 기록하고, 캐시에 여전히 존재하는 동일 데이터의 임의의 오래된 복사들을 무효화하고, 그리고 이후에 기록 데이터를 디스크(309)로 옮기도록 야기할 수 있다.
일부 실시예들에서, DSD(300)는 플래시 큐(326) 및 플래시 제어기(328)를 더 포함할 수 있다. 특정 실시예들에서, 플래시 큐(326)는 플래시 메모리(330)로부터 물리적으로 분리된 메모리 컴포넌트일 수 있다. 플래시 큐(326)는, 커맨드 큐(313)를 갖는 DRAM 버퍼(312)와 유사한 휘발성 또는 비휘발성 메모리를 포함할 수 있으며, 플래시 메모리(330)에 펜딩(pending) 동작들을 저장하기 위해서 사용될 수 있다. 일부 실시예들에서, 플래시 큐는 CQ(313)과 더불어, DRAM 버퍼(312)에 저장될 수 있다. 플래시 큐를 포함하는 것은 DSD(300)가 다른 동작들이 실행되고 있는 동안 플래시 메모리(330)에 대한 다수의 동작들을 큐 업하게 할 수 있으며, 이에 의해 레이턴시들을 향상시키고, 플래시 메모리(330)의 유휴 시간을 감소시킨다.
플래시 제어기(328)는 플래시 메모리(330)의 동작들, 이를테면, 데이터의 저장 또는 리트리브를 제어하기 위한 프로그래머블 상태 머신(PSM)과 같은 회로를 포함할 수 있다. 일부 실시예들에서, HDD 제어기(306) 및 플래시 제어기(328)는 서로 다른 기능들을 수행하기 위한 단일 회로 동작 소프트웨어, 이를테면, 커맨드가 디스크 또는 플래시로 지향되어야 하는지 여부를 결정하기 위한 소프트웨어, 디스크 메모리(309)의 동작들을 제어하기 위한 소프트웨어 및 플래시 메모리(330)의 동작들을 제어하기 위한 소프트웨어의 부분일 수 있다. 일부 실시예들에서, HDD 제어기(306)는 모든 플래시 커맨드들을 플래시 큐(326)에 전송하도록 구성될 수 있고, 플래시 제어기(328)는 큐(326)를 통해 커맨드들을 수신한다. 일부 실시예들에서, 커맨드들은 HDD 제어기(306)로부터 플래시 제어기(328)로 전송될 수 있고, 플래시 제어기는 동작들을 즉시 시작하거나, 플래시 메모리가 동작 중(busy)인 경우에는 플래시 큐(326)에 커맨드(들)를 배치하도록 구성될 수 있다. 커맨드가 수신 및 실행되거나, 플래시 큐(326)에 성공적으로 저장되면, 커맨드가 성공적으로 수신되었다는 표시자가 리턴될 수 있다. 플래시 큐(326)가 꽉찬 경우, 플래시 메모리가 동작 중이라는 표시자가 리턴될 수 있다. 플래시 메모리(330), 플래시 제어기(328) 및 플래시 큐(326) 사이의 다른 구현들 및 동작들이 또한 가능하다.
이제, 도 4로 리턴하면, 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 사용하는 처리의 예시적인 실시예의 도면이 도시된다. 제 1 예(400)에서, 플래시 메모리에 대하여 큐잉이 없는 시스템의 도면이 도시된다. 예(400)에서, 제 1 커맨드(402)는 플래시 메모리에서 수신되어, 그 다음, 404에서, 처리되고, 상태 리턴된다. 제 1 커맨드가 처리를 종료한 이후에만, 플래시 메모리는 제 2 커맨드(406)를 수신할 수 있고, 제 2 커맨드의 처리 이후에만 제 3 커맨드가 수신될 수 있는 식이다. 각각의 커맨드를 완료한 이후, 플래시 메모리 자신은 다음 커맨드가 수신되는 동안 유휴 상태에 있을 수 있어서, 전반적인 비효율을 초래한다.
도 4의 제 2 예(420)에서, 플래시 메모리에 대한 커맨드 큐를 사용하는 시스템의 도면이 도시된다. 이 예(420)에서, 제 1 커맨드(422)는 플래시 메모리에서 수신될 수 있으며, 처리가 시작될 수 있다. 제 1 커맨드(422)의 처리가 완료되기 이전에, 플래시는 큐잉될 수 있는 제 2 커맨드(424)를 수신할 수 있으며, 플래시 제어기는 심지어 제 1 커맨드가 완료되기 전에도 제 2 커맨드의 실행을 시작할 수 있다. 제 3 커맨드(426)가 또한, 수신될 수 있으며, 제 3 커맨드(426)는 제 1 커맨드(422)가 완료되기 이전에 수신 및 큐잉될 수 있다. 제 1 커맨드(422)가 처리를 종료하고, 상태가 리턴되기 이전에, 제 2 커맨드(424)는 플래시 메모리의 유휴 시간을 거의 가지지 않거나 전혀 가지지 않고 처리를 시작할 수 있다. 플래시 제어기는 각각의 커맨드가 수신될 때 그리고 이전의 커맨드가 완료되기 이전에, 각각의 커맨드에 대한 동작들, 이를테면, 각각의 커맨드의 일부분으로서 수신된 LBA(Logical Block Address)에 대응하는 플래시 메모리에서의 물리적 위치를 결정하는 것, 플래시로부터 데이터를 리트리브하는 것 및 커맨드의 결과들을 리턴하는 것을 수행할 수 있다. 이러한 방식으로, 플래시 제어기는 다수의 커맨드들을 동시에 처리할 수 있고; 이용가능성의 처리가 가능해질 때 플래시 커맨드 큐로부터 커맨드들을 리트리브한다. 버퍼 및 파이프라이닝 동작들에서 커맨드들을 저장함으로써, 플래시 큐잉이 없는 예(402)에 비해 3개의 커맨드들에 대한 총 레이턴시의 현저한 감소(430)가 달성될 수 있다.
몇몇 실시예들에서, 플래시 큐는 선입선출(first-in first-out; FIFO) 큐로서 기능할 수 있고, 여기서 커맨드들은 이들이 수신되는 순서로 실행된다. 다른 실시예들에서, 큐잉된 커맨드들은 비순차적으로(out of order) 수행될 수 있다. 예를 들어, 도 6 및 도 7과 관련하여 더 상세하게 설명될 바와 같이, 커맨드들은 결합될 수 있고, 이는 특정 커맨드들이, 이들이 수신되었던 순서와 상이한 순서로 완료되는 것을 초래할 수 있다. 몇몇 실시예들에서, DSD는 큐잉된 커맨드들의 우선권(priority) 또는 중요도(importance)에 기초하는 동작들의 수행을 조직(organize)할 수 있다. 예를 들어, 커맨드들에는 우선권 값들이 할당될 수 있고, 사용자 애플리케이션들로부터 비롯된 커맨드들에는 시스템 애플리케이션들로부터의 커맨드들보다 우선권이 주어질 수 있다.
도 5는, 일반적으로 500으로 지시되는, 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 이용하는 방법의 예시적인 실시예의 흐름도를 도시한다. 방법은, 502에서, 데이터 저장 디바이스(DSD)에서 호스트로부터 커맨드를 수신하는 단계를 포함할 수 있다. 예를 들어, 호스트는 유선 또는 무선 연결을 통해 데이터 저장 디바이스에 데이터를 기록 또는 판독하라는 커맨드를 전송할 수 있다. 커맨드는 제어기 또는 프로세서에서 수신될 수 있고, 그 다음으로, 상기 제어기 또는 프로세서는 커맨드를 다른 메모리 제어기들, 또는 제어기 또는 프로세서의 다른 소프트웨어 모듈들로 지향시킬 수 있다.
그 다음으로, 방법은, 504에서, 예를 들어, DSD의 제어기에서, 커맨드가 디스크 메모리와 같은 제 1 메모리로 지향되어야 하는지 또는 고체 상태 NAND 플래시 메모리와 같은 제 2 메모리로 지향되어야 하는지를 결정하는 단계를 포함할 수 있다. 예를 들어, 기록 커맨드는, 연관된 데이터를 저장을 위해 플래시 메모리로 전송하는 것을 포함할 수 있고, 그 다음으로, 상기 데이터는 나중 시간에 디스크 메모리에 저장될 수 있다. 몇몇 환경들에서, 기록 데이터는 저장을 위해 디스크 메모리로 직접적으로 전송될 수 있다. 판독 커맨드는, 판독 커맨드에서 식별된 로직 블록 어드레스들(LBA들)이 플래시 메모리에 저장되는지 또는 이들이 디스크 메모리로부터 리트리빙되어야 하는지를 결정하는 것을 포함할 수 있다.
504에서 커맨드를 디스크 메모리로 지향시키는 결정이 이루어진 경우, 방법은 506에서 상기 커맨드를 수행하기 위해 디스크 메모리에 액세스하는 단계를 포함할 수 있다. 예를 들어, 디스크는 스핀업(spin up)될 수 있고, 데이터는 디스크에 기록되거나 또는 디스크로부터 판독될 수 있고, 이때 결과들이 리턴될 수 있다(예를 들어, 기록 완료 표시 또는 판독 데이터). 커맨드를 수행한 후에, 또는 몇몇 실시예들에서는 커맨드를 성공적으로 수신하고 타겟 메모리를 식별한 후에, DSD는, 502에서 호스트로부터 커맨드들을 수신하는 단계로 리턴될 수 있다. 예를 들어, DSD는 이전의 커맨드를 완료하기 전에 부가적인 커맨드들을 수신할 수 있다.
504에서, 호스트로부터 수신된 커맨드를 플래시 메모리로 지향시키는 결정이 이루어지는 경우, 방법은, 508에서 커맨드를 플래시 커맨드 큐에 부가하는 단계를 포함할 수 있다. 몇몇 실시예들에서, 커맨드는, 예를 들어, 플래시 메모리가 유휴(idle)이고, 커맨드를 처리하는 것을 즉시 시작할 수 있는 경우, 플래시 큐에 위치되지 않고 즉시 실행을 위해 플래시 제어기로 전송될 수 있다. 다른 실시예들에서, 커맨드는, 임의의 다른 커맨드들이 플래시 메모리에서 처리되고 있는지와 무관하게 플래시 큐로 위치될 수 있다.
일단 커맨드가 508에서 플래시 큐로 위치되면, 방법은 510에서 커맨드의 실행을 시작하는 단계를 포함할 수 있다. 예를 들어, 커맨드는, 플래시 메모리가 아직 바쁘지(busy) 않은 경우, 즉시 실행될 수 있거나, 또는 상기 커맨드는 플래시 메모리가 더 이상 바쁘지 않을 때까지 큐에서 계류(pending)될 수 있다. 몇몇 실시예들에서, 플래시 제어기는, 이전의 플래시 메모리 동작이 아직 완료되지 않았을지라도, 커맨드를 실행할 준비를 할 수 있다. 일단 커맨드가 실행되면, 방법은, 동작의 결과들을 예를 들어, DSD 제어기 또는 호스트 디바이스에 리턴하는 단계를 포함할 수 있다.
508에서 커맨드를 플래시 큐에 위치시킨 후, 방법은 또한, 514에서, 플래시 메모리가 커맨드를 수신했다는 것을 표시하는 커맨드 수신 응답을 전송하는 단계를 포함할 수 있고, 이는 부가적인 커맨드들이 플래시에 전송될 수 있다는 것을 DSD 제어기 또는 호스트에 표시할 수 있다. 510에서 커맨드를 실행하는 것을 시작하기 전에 또는 시작하는 것과 동시에, 커맨드 수신 응답이 전송될 수 있고, 부가적인 커맨드들이 수신될 수 있다. 예를 들어, 커맨드는 508에서 플래시 큐로 위치될 수 있고, "커맨드 수신" 응답이 514에서 전송될 수 있고, 커맨드는, 다른 동작들이 플래시 메모리 상에서 완료되고, 부가적인 커맨드들이 수신되어, 또한 플래시 큐에 위치되는 동안 큐에서 계속 계류될 수 있다.
이제 도 6으로 돌아오면, 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 채용하는 처리의 예시적인 실시예의 도면이 도시된다. 도 4에서와 같이, 제 1 예시(600)는 플래시 메모리에 대해 큐잉하지 않고 시스템의 도면을 도시한다. 예시(600)에서, 각각의 커맨드는, 오직 이전 동작이 완료되어 상태가 리턴된 후에만, 플래시 메모리로 송신된다. 이는, 커맨드들이 전송되고 있는 동안 플래시 메모리가 유휴일 수 있기 때문에 비효율을 초래할 수 있다.
큐잉하지 않고 플래시 메모리를 채용하는 일부 시스템들에서 추가적인 비효율성이 존재할 수 있다. 일부 실시예들에서, 데이터는 플래시 메모리의 "페이지" 크기에 기초하여 증가하는 상태로(in increments) 플래시 메모리들로부터 판독될 수 있다. 예를 들어, 플래시 페이지는 데이터의 8kBytes, 16kBytes 또는 일부 다른 증가분을 포함할 수 있다. 일부 시스템 아키텍쳐들에서, 2개 또는 그 초과의 페이지들이 함께 판독되도록, DSD는 다수의 페이지들을 함께 스트라이핑하도록 구성될 수 있어서, 16kBytes, 32kBytes, 또는 플래시 페이지 크기들의 일부 다른 배수의 유효 판독 크기로 유도한다. 그러나, 데이터에 대한 호스트 요청들은 플래시 판독 엔티티보다 더 작은 증가분에 있을 수 있다. 예를 들어, 호스트는 각각의 판독 커맨드를 갖는 DSD로부터 오직 데이터의 4kBytes만을 요청할 수 있지만, DSD는 한 번에 8 또는 16kBytes를 판독하도록 구성될 수 있다. 이러한 실시예들에서, 플래시 컨트롤러는 HDD 또는 DSD 컨트롤러에, 그리고 후속하여 호스트에 데이터의 4kBytes를 오직 전송할 수 있고, 요청된 4kBytes를 제외하고는 판독 데이터 전체를 폐기할 수 있다. 후속하여, 호스트는 방금 판독되고 폐기되었던 동일한 플래시 엔티티에 위치되었던 데이터의 다른 4kBytes에 대한 다른 판독 요청을 전송할 수 있다. 이는, 동일한 플래시 페이지가 단기간 내에 다수 회 판독될 필요가 있을 수 있기 때문에, DSD에서의 운용상 비효율성으로 유도할 수 있다.
도 6의 제 2 예시(620)는, 플래시 큐를 포함하고, 그리고 단일 동작에서 호스트 커맨드에 의해 요청되는 것보다 플래시 메모리로부터 더 큰 데이터 엔티티들을 판독하도록 구성될 수 있는 시스템을 도시한다. 예시(620)에서, 제 1 커맨드(622)는, 이후에 630에서 그 커맨드를 처리하기 시작할 수 있는, 플래시 메모리에 수신될 수 있다. 제 1 커맨드(622)가 처리하는 동안, 제 2 커맨드(624) 및 제 3 커맨드(626)는 수신되어 플래시 큐에 위치될 수 있다. 플래시 컨트롤러는, 제 2 커맨드(624) 및 제 3 커맨드(626) 둘 다가 단일 플래시 데이터 엔티티에 포함된 데이터에 대한 판독 요청들인 것으로 결정할 수 있다. 예를 들어, 두 커맨드들은 16kBytes의 동일한 플래시 페이지에 저장된 데이터의 4kBytes에 대한 판독 커맨드들일 수 있다. 제 2 커맨드(624) 및 제 3 커맨드(626)가 합병될(coalesced) 수 있는 것으로 결정한 후, 플래시 컨트롤러는 제 2 커맨드(624) 및 제 3 커맨드(626) 둘 다에 대한 데이터를 포함하는 플래시 페이지 상에서 단일 판독 동작(632)을 수행할 수 있고, 둘 다에 대한 데이터를 리턴할 수 있다. 2개의 커맨드들에 대한 2개의 판독 동작들을 수행하는 것 이외에, 단일 동작이 수행될 수 있다. 이는, 다른 커맨드들이 완료되는 동안 커맨드들을 큐잉하는 이점들을 조합함으로써, 그리고 커맨드들을 플래시 메모리 상에서의 더 적은 동작들로 조합함으로써, 상기 수신된 동작들에 대한 응답 시간 내에 상당한 감소(634)를 창출할 수 있다.
일부 실시예들에서, DSD는 커맨드들을 조합하는 이점들을 최대화하기 위해 동작들을 시작하기 전에 일 세트 수의 커맨드들을 큐잉하도록 구성될 수 있다. 예를 들어, 관련 커맨드들이 더 적은 동작들로 조합될 수 있도록, 8개의 커맨드들이 그 커맨드들을 실행하기 전에 플래시 케모리에 대해 큐잉될 때까지, DSD가 대기할 수 있다. 관련 커맨드들이 시퀀스에 수신될 필요는 없다. 예를 들어, 6개의 커맨드들이 플래시 큐 내에 있으면, 플래시 컨트롤러는 제 1 커맨드 및 제 5 커맨드가 동일한 플래시 판독가능 데이터 엔티티에 대한 판독 요청들인 것으로 식별할 수 있다. 그 두 커맨드들은, 플래시 큐로부터의 제 1 커맨드 및 제 5 커맨드 둘 다를 제거하는 동일한 동작으로 완료될 수 있다. 일부 실시예들에서, 커맨드들이 오랫동안 플래시 큐에서 계류한 채로 남아있지 않도록, 추가적인 동작들이 수신될 것인지 결정하기 위해 DSD는 오직 단기간 동안만 대기할 수 있다.
일부 실시예들에서, 다수의 기록 커맨드들은 또한, 다수의 기록 동작들로 보다는, 하나의 동작으로 플래시 메모리에 기록되도록 조합될 수 있다. 일부 실시예들에서, 플래시는 판독들 또는 기록들로부터 최신 데이터를 저장하도록 이용될 수 있고, 기록 커맨드들은 단일 기록 동작으로 조합될 수 있다. 기록들은 동일한 LBA 범위로 제한될 필요는 없다. 별개의 LBA 범위들에서의 모든 다수의 기록 커맨드들은 단일 동작으로 플래시에 기록될 수 있다. 일부 실시예들에서, 일 세트의 기록들은, 개별적인 기록들을 플래시 페이지 바운더리들로 정렬하는 것으로부터 발생할 수 있는 것과 같은, 플래시에서의 낭비 공간이 존재하지 않도록, 함께 그룹화될 수 있다. 이는, 기록 속도가 더 빠를 수 있기 때문에, 플래시 사용 효율뿐만 아니라 성능을 개선시킬 수 있다.
도 7은, 하이브리드 디바이스에서 고체 상태 메모리 커맨드 큐를 이용하는 방법(700)의 일 예시적인 실시예의 흐름도를 도시한다. 방법(700)은, (702)에서, 데이터의 제 1 유닛에 대한 판독 커맨드를 수신하는 단계를 포함할 수도 있다. 예를 들어, 이것은 하나 또는 그 초과의 로직 블록 어드레스(LBA)들과 연관된 데이터의 4 kByte 유닛과 같은 데이터의 특정한 청크(chunk)를 리트리브하도록, 하이브리드 데이터 저장 디바이스에서 호스트로부터 판독 커맨드를 수신하는 단계를 포함할 수도 있다.
그 후, 방법은, (704)에서, 요청된 데이터가 플래시 메모리에(예를 들어, NAND 플래시 메모리의 고체 상태 캐시에) 있는지, 또는 데이터가 디스크 메모리 상에만 로케이팅되는지를 결정하는 단계를 포함할 수도 있다. (704)에서 데이터가 디스크로부터 리트리브될 것이라면, 방법은, (706)에서, 디스크로부터의 데이터를 판독하는 단계를 포함할 수도 있다. DSD는, 플래시 메모리에 판독 데이터의 카피를 저장하고, 호스트 디바이스로 요청된 데이터를 리턴시키며, (702)에서 추가적인 커맨드들을 대기할 수도 있다. 요청된 데이터가 (704)에서 이미 플래시에 로케이팅되었다면, 방법은, (708)에서, 플래시 큐 내로 판독 커맨드를 배치시키는 단계를 포함할 수도 있다.
방법(700)은, (710)에서, 요청된 데이터의 제 1 유닛이 다른 큐잉된 판독 커맨드와 연관된 데이터로서 동일한 판독가능 플래시 엔티티 상에 로케이팅되는지를 결정하는 단계를 포함할 수도 있다. 예를 들어, 플래시 제어기는, 데이터의 제 1 유닛이 다른 요청된 데이터로서 동일한 플래시 페이지 상에 있는지를, 또는, 다수의 플래시 페이지들이 한번에 판독되는 실시예들에서, 제 1 데이터가 다른 요청된 데이터로서 스트라이핑된 페이지들의 동일한 세트 상에 있는지를 결정할 수도 있다. 데이터의 제 1 유닛이 다른 요청된 데이터로서 동일한 플래시 판독 엔티티 상에 있지 않다면, 방법은, (712)에서, 제 1 데이터를 포함하는 페이지를 판독하고 그것을 호스트로 리턴시키는 단계를 포함할 수도 있다. 이것은, 플래시 큐에서 앞선 계류 동작들이 먼저 완료된 후에 발생할 수도 있다.
데이터의 제 1 유닛이 다른 요청된 데이터로서 동일한 플래시 엔티티 상에 있다는 것이 결정된다면, 방법은, (714)에서, 제 1 데이터 및 다른 큐잉된 커맨드와 연관된 다른 데이터 둘 모두를 포함하는 플래시 페이지 또는 엔티티를 판독하고, 호스트로 데이터의 둘 모두의 세트들을 리턴시키는 단계를 포함할 수도 있다. 관련된 커맨드들 상의 (710)의 결정은, 주어진 커맨드가 큐에서의 앞선 커맨드와 결합될 수도 있도록, 또는 그것이 추후-수신된 커맨드와 결합될 수도 있도록, 각각의 새로운 커맨드가 수신되는 경우 수행될 수도 있다. 예를 들어 커맨드가 앞선 큐잉된 커맨드와 결합된다면, 커맨드는 "비순차적(out of turn)"으로 실행될 수도 있고, 각각의 커맨드가 그것이 큐 내로 배치된 때에 따라 차례로 실행되었다면, 그것보다 일찍 리트리브된 데이터가 있었을 것이다.
도 5 및 7의 방법들은 예시적인 실시예들이고, 변경들이 본 개시의 범위를 벗어나지 않으면서 행해질 수도 있다. 예를 들어, 도 6과 관련하여 설명된 기록 커맨드들 같은, 판독 커맨드들 외의 커맨드들이 결합될 수도 있다. 디스크 메모리들 및 플래시 메모리들 외의 다른 타입들의 메모리들이 사용될 수도 있다. 다른 변경들이 또한 가능하다.
다양한 실시예들에 따라, 본 명세서에 설명된 방법들은, 컴퓨터 프로세서 또는 제어기 디바이스 상에서 구동하는 하나 또는 그 초과의 소프트웨어 프로그램들로서 구현될 수도 있다. 다른 실시예들에 따라, 본 명세서에 설명된 방법들은, 디스크 드라이브와 같은 데이터 저장 디바이스를 사용하는 개인용 컴퓨터와 같은 컴퓨팅 디바이스 상에서 구동하는 하나 또는 그 초과의 소프트웨어 프로그램들로서 구현될 수도 있다. 주문형 반도체들, 프로그래밍가능 로직 어레이들, 및 다른 하드웨어 디바이스들을 포함하지만 이에 제한되지 않는 전용 하드웨어 구현들이 본 명세서에 설명된 방법들을 구현하도록 또한 구성될 수 있다. 추가적으로, 본 명세서에 설명된 방법들은, 실행된 경우 프로세서로 하여금 방법들을 수행하게 하는 명령들을 저장하는 하드웨어 컴포넌트들과 같은, 컴퓨터 판독가능 저장 매체 또는 디바이스로 구현될 수도 있다. 또한, 본 명세서에 기재된 방법들을 수행하기 위한 명령들은, 컴퓨터 판독가능 송신 매체들을 사용하여, 실행을 위한 디바이스에 브로드캐스팅될 수도 있다.
본 명세서에 설명된 실시예들의 도면들은 다양한 실시예들의 구조의 일반적인 이해를 제공하도록 의도된다. 도면들은, 본 명세서에 설명된 구조들 또는 방법들을 이용하는 장치 및 시스템들의 엘리먼트들 및 속성들 중 전부의 완전한 설명으로서 서빙하도록 의도되지 않는다. 많은 다른 실시예들이 본 개시를 검토할 시 당업자들에게 명백할 수도 있다. 다른 실시예들은, 구조적 및 로직 치환들 및 변화들이 본 개시의 범위를 벗어나지 않으면서 행해질 수도 있도록, 이용될 수도 있고 본 개시로부터 도출될 수도 있다. 또한, 특정한 실시예들이 본 명세서에 도시되고 설명되었지만, 동일한 또는 유사한 목적을 달성하도록 설계된 임의의 후속 어레인지먼트가 도시된 특정한 실시예들에 대하여 치환될 수도 있음이 인식되어야 한다.
본 개시는 다양한 실시예들의 임의의 후속 구성들 및 변경들 및 모든 후속 구성들 및 변경들을 커버하도록 의도된다. 상기 실시예들의 결합들 및 본 명세서에 상세하게 설명되지 않은 다른 실시예들은, 설명을 검토할 시 당업자들에게 명백해질 것이다. 부가적으로, 도면들은, 단지 대표적이며 실척에 맞게 도시되지 않을 수도 있다. 도면들 내의 특정한 부분들이 과장될 수도 있지만 다른 부분들은 감소될 수도 있다. 따라서, 본 개시 및 도면들은 예시적이고, 제한적이지 않은 것으로서 고려될 것이다.

Claims (20)

  1. 장치로서,
    제어기를 포함하며,
    상기 제어기는,
    제 1 비휘발성 고체 상태 메모리 및 상기 제 1 비휘발성 고체 상태 메모리보다 더 느린 액세스 속도를 갖는 제 2 비휘발성 메모리를 포함하는 디바이스에서 제 1 데이터 액세스 커맨드를 수신하고; 그리고
    상기 제 1 데이터 액세스 커맨드가 상기 제 1 비휘발성 고체 상태 메모리에 대해 지시될 때, 상기 제 1 데이터 액세스 커맨드를 상기 제 1 비휘발성 고체 상태 메모리에 대한 제 1 커맨드 큐(queue)에 저장하도록
    구성되는, 장치.
  2. 제 1 항에 있어서,
    상기 제 1 비휘발성 고체 상태 메모리;
    상기 제 2 비휘발성 메모리; 및
    상기 제 1 커맨드 큐
    를 더 포함하는, 장치.
  3. 제 2 항에 있어서,
    제 2 커맨드 큐를 더 포함하며,
    상기 제어기는 추가로,
    상기 제 1 데이터 액세스 커맨드가 상기 디바이스에서 수신될 때, 상기 제 1 데이터 액세스 커맨드를 상기 제 2 커맨드 큐에 저장하고; 그리고
    상기 제 1 비휘발성 고체 상태 메모리와 상기 제 2 비휘발성 메모리 사이에서 어느 메모리가 상기 제 1 데이터 액세스 커맨드를 지시했는지 결정하도록 구성되는, 장치.
  4. 제 1 항에 있어서,
    상기 제 1 데이터 액세스 커맨드를 상기 제 1 커맨드 큐에 저장한 후, 상기 제 1 데이터 액세스 커맨드가 수신되었고 추가의 커맨드들이 상기 제어기에 전송될 수 있다는 표시를 전송하도록 추가로 구성된 상기 제어기를 더 포함하는, 장치.
  5. 제 1 항에 있어서,
    상기 제 1 데이터 액세스 커맨드의 실행을 시작하고;
    상기 제 1 데이터 액세스 커맨드의 실행이 완료되기 이전에, 상기 제 1 비휘발성 고체 상태 메모리에 대해 지시된 제 2 데이터 액세스 커맨드를 수신하고; 그리고
    상기 제 2 데이터 액세스 커맨드를 상기 제 1 커맨드 큐에 저장하도록 추가로 구성된 상기 제어기를 더 포함하는, 장치.
  6. 제 5 항에 있어서,
    제 3 데이터 액세스 커맨드를 상기 제 1 커맨드 큐에 저장하고;
    상기 제 2 데이터 액세스 커맨드 및 상기 제 3 데이터 액세스 커맨드 둘다가 단일 데이터 액세스로 수행될 수 있는지를 결정하고; 그리고
    상기 결정에 기초하여 상기 단일 데이터 액세스를 수행하도록 추가로 구성된 상기 제어기를 더 포함하는, 장치.
  7. 제 1 항에 있어서,
    호스트 디바이스로부터 커맨드들을 수신하도록 구성된 인터페이스를 더 포함하며,
    상기 제어기는 추가로, 상기 인터페이스를 통해 상기 호스트 디바이스에 커맨드들의 결과들을 리턴하도록 구성되는, 장치.
  8. 제 1 항에 있어서,
    상기 제 1 비휘발성 고체 상태 메모리는 NAND 플래시 메모리이며,
    상기 제 2 비휘발성 메모리는 디스크(disc) 메모리인, 장치.
  9. 제 1 항에 있어서,
    데이터 액세스 커맨드가 상기 제 1 비휘발성 고체 상태 메모리에 저장된 데이터를 요청할 때 또는 데이터 액세스 커맨드가 상기 제 1 비휘발성 고체 상태 메모리에 기록될 데이터를 포함할 때, 상기 제 1 비휘발성 고체 상태 메모리에 대해 지시되는 데이터 액세스 커맨드를 더 포함하는, 장치.
  10. 명령들을 저장하는 메모리 디바이스로서,
    상기 명령들은, 프로세서로 하여금,
    캐시 메모리를 포함하는 데이터 저장 디바이스에서 제 1 데이터 액세스 커맨드를 수신하는 단계; 및
    상기 제 1 데이터 액세스 커맨드가 상기 캐시 메모리에 대해 지시될 때, 상기 제 1 데이터 액세스 커맨드를 상기 캐시 메모리에 대한 제 1 커맨드 큐에 저장하는 단계
    를 포함하는 방법을 수행하게 하는, 명령들을 저장하는 메모리 디바이스.
  11. 제 10 항에 있어서,
    상기 방법은,
    상기 제 1 데이터 액세스 커맨드가 데이터 저장 디바이스에 수신될 때, 상기 제 1 데이터 액세스 커맨드를 제 2 커맨드 큐에 저장하는 단계; 및
    상기 제 1 데이터 액세스 커맨드가 캐시 메모리에 대해 지시되는지 또는 제 1 비휘발성 메모리에 대해 지시되는지를 결정하는 단계를 더 포함하는, 명령들을 저장하는 메모리 디바이스.
  12. 제 10 항에 있어서,
    상기 방법은,
    상기 제 1 데이터 액세스 커맨드를 상기 제 1 커맨드 큐에 저장한 후, 상기 제 1 데이터 액세스 커맨드가 수신되었고 추가의 커맨드들이 데이터 저장 디바이스의 제어기에 전송될 수 있다는 표시를 전송하는 단계
    를 더 포함하는, 명령들을 저장하는 메모리 디바이스.
  13. 제 10 항에 있어서,
    상기 방법은,
    상기 제 1 데이터 액세스 커맨드의 실행을 시작하는 단계;
    상기 제 1 데이터 액세스 커맨드의 실행이 완료되기 전에, 캐시 메모리에 대해 지시된 제 2 데이터 액세스 커맨드를 수신하는 단계; 및
    상기 제 2 데이터 액세스 커맨드를 상기 제 1 커맨드 큐에 저장하는 단계
    를 더 포함하는, 명령들을 저장하는 메모리 디바이스.
  14. 제 13 항에 있어서,
    상기 방법은,
    제 3 데이터 액세스 커맨드를 상기 제 1 커맨드 큐에 저장하는 단계;
    상기 제 2 데이터 액세스 커맨드 및 상기 제 3 데이터 액세스 커맨드 둘다가 캐시 메모리의 동일한 데이터 엔티티에 액세스하는 것을 요구할지를 결정하는 단계 ―데이터 엔티티는, 단일 액세스 동작 동안 액세스되는 일정량의(an amount of) 저장 공간임―; 및
    상기 제 2 데이터 액세스 커맨드 및 상기 제 3 데이터 액세스 커맨드 둘다가 상기 동일한 데이터 엔티티에 액세스하는 것을 요구할 때, 상기 제 2 데이터 액세스 커맨드 및 상기 제 3 데이터 액세스 커맨드 둘다에 대해 단일 액세스 동작을 수행하는 단계
    를 더 포함하는, 명령들을 저장하는 메모리 디바이스.
  15. 제 10 항에 있어서,
    상기 방법은,
    인터페이스를 통해 호스트 디바이스로부터 상기 제 1 데이터 액세스 커맨드를 수신하는 단계; 및
    상기 인터페이스를 통해 상기 호스트 디바이스로 커맨드들의 결과들을 리턴하는 단계
    를 더 포함하는, 명령들을 저장하는 메모리 디바이스.
  16. 방법으로서,
    데이터 저장 디바이스에서, 제 1 데이터 액세스 커맨드를 수신하는 단계;
    상기 제 1 데이터 액세스 커맨드를 제 1 커맨드 큐에 저장하는 단계;
    상기 데이터 액세스 커맨드가 플래시 메모리에 대해 지시되는지 또는 상기 플래시 메모리보다 더 느린 액세스 시간을 갖는 제 1 비휘발성 메모리에 대해 지시되는지를 결정하는 단계; 및
    상기 제 1 데이터 액세스 커맨드가 상기 플래시 메모리에 대해 지시될 때, 상기 제 1 데이터 액세스 커맨드를 제 2 커맨드 큐에 저장하는 단계
    를 포함하는, 방법.
  17. 제 16 항에 있어서,
    상기 제 1 데이터 액세스 커맨드를 제 2 커맨드 큐에 저장한 후, 상기 제 1 데이터 액세스 커맨드가 성공적으로 수신되었다는 표시를 전송하는 단계;
    상기 플래시 메모리에 대한 상기 제 1 데이터 액세스 커맨드의 실행을 시작하는 단계; 및
    상기 제 1 데이터 액세스 커맨드가 실행을 마치기 전에, 제 2 데이터 액세스 커맨드를 수신하고 상기 제 2 커맨드 큐에 저장하는 단계
    를 더 포함하는, 방법.
  18. 제 17 항에 있어서,
    제 3 데이터 액세스 커맨드를 상기 제 2 커맨드 큐에 저장하는 단계;
    상기 제 2 데이터 액세스 커맨드 및 상기 제 3 데이터 액세스 커맨드가 상기 플래시 메모리에 대한 단일 데이터 액세스 동작을 완료할 수 있는지를 결정하는 단계; 및
    상기 제 2 데이터 액세스 커맨드 및 상기 제 3 데이터 액세스 커맨드 둘다가 상기 단일 데이터 액세스 동작으로 완료될 수 있을 때, 상기 제 2 데이터 액세스 커맨드 및 상기 제 3 데이터 액세스 커맨드를 리졸브(resolve)하기 위해 상기 단일 데이터 액세스 동작을 수행하는 단계를 더 포함하는, 방법.
  19. 제 18 항에 있어서,
    상기 제 2 데이터 액세스 커맨드와 상기 제 3 데이터 액세스 커맨드 사이의 중간(intermediate) 데이터 액세스 커맨드를 상기 제 2 커맨드 큐에 저장하는 단계를 더 포함하는, 방법.
  20. 제 16 항에 있어서,
    복수의 데이터 액세스 동작들 각각과 연관된 우선순위 값에 기초한 순서로 상기 플래시 메모리상에서 상기 제 2 커맨드 큐에 저장된 상기 복수의 데이터 액세스 동작들을 수행하는 단계를 더 포함하는, 방법.
KR1020140148307A 2013-10-29 2014-10-29 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐 KR101663066B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/066,266 2013-10-29
US14/066,266 US9348747B2 (en) 2013-10-29 2013-10-29 Solid state memory command queue in hybrid device

Publications (2)

Publication Number Publication Date
KR20150050457A true KR20150050457A (ko) 2015-05-08
KR101663066B1 KR101663066B1 (ko) 2016-10-06

Family

ID=53388254

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140148307A KR101663066B1 (ko) 2013-10-29 2014-10-29 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐

Country Status (3)

Country Link
US (1) US9348747B2 (ko)
JP (1) JP5922740B2 (ko)
KR (1) KR101663066B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6255893B2 (ja) * 2013-10-24 2018-01-10 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
US20160188510A1 (en) * 2014-12-26 2016-06-30 Samsung Electronics Co., Ltd. METHOD FETCHING/PROCESSING NVMe COMMANDS IN MULTI-PORT, SR-IOV OR MR-IOV SUPPORTED PCIe BASED STORAGE DEVICES
KR20160118836A (ko) * 2015-04-03 2016-10-12 에스케이하이닉스 주식회사 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법
JP6721821B2 (ja) 2015-11-19 2020-07-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
US9460791B1 (en) * 2015-12-08 2016-10-04 Inphi Corporation Data clock synchronization in hybrid memory modules
KR102547795B1 (ko) 2016-05-04 2023-06-27 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US10025510B1 (en) * 2016-06-30 2018-07-17 EMC IP Holding Company LLC Technique for copying unallocated logical regions of thin logical units
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US11182102B2 (en) * 2018-12-28 2021-11-23 Micron Technology, Inc. Host inquiry response generation in a memory device
CN111399750B (zh) * 2019-01-03 2023-05-26 慧荣科技股份有限公司 闪存数据写入方法及计算机可读取存储介质
US11288185B2 (en) * 2019-01-03 2022-03-29 Silicon Motion, Inc. Method and computer program product for performing data writes into a flash memory
CN113253939B (zh) * 2021-06-11 2023-05-16 锐掣(杭州)科技有限公司 数据处理方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120210041A1 (en) * 2007-12-06 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for caching data

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5420998A (en) * 1992-04-10 1995-05-30 Fujitsu Limited Dual memory disk drive
JPH09258907A (ja) * 1996-03-25 1997-10-03 Mitsubishi Electric Corp 複数の記憶ディスク部を有した高可用性の外部記憶装置
US6704835B1 (en) 2000-09-26 2004-03-09 Intel Corporation Posted write-through cache for flash memory
US8176238B2 (en) 2003-12-02 2012-05-08 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
JP4234753B2 (ja) * 2006-12-15 2009-03-04 株式会社東芝 ハードディスクドライブおよびコマンド実行方法
JP2008217855A (ja) * 2007-02-28 2008-09-18 Fujitsu Ltd 記憶装置用制御装置、記憶装置およびそのデータ記憶制御方法
US7886110B2 (en) * 2007-12-27 2011-02-08 Intel Corporation Dynamically adjusting cache policy based on device load in a mass storage system
JP2010044814A (ja) * 2008-08-11 2010-02-25 Toshiba Storage Device Corp 記憶装置の制御方法及び記憶装置
US8756369B2 (en) * 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
US8078848B2 (en) * 2009-01-09 2011-12-13 Micron Technology, Inc. Memory controller having front end and back end channels for modifying commands
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US20120204008A1 (en) 2011-02-04 2012-08-09 Qualcomm Incorporated Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
US20130054880A1 (en) 2011-08-26 2013-02-28 Stec, Inc. Systems and methods for reducing a number of close operations in a flash memory
US9009396B2 (en) * 2011-09-23 2015-04-14 Avalanche Technology, Inc. Physically addressed solid state disk employing magnetic random access memory (MRAM)
US20130326113A1 (en) * 2012-05-29 2013-12-05 Apple Inc. Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory
JP6101170B2 (ja) * 2013-07-26 2017-03-22 株式会社日立製作所 計算機システム、キャッシュ管理方法、及び計算機

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120210041A1 (en) * 2007-12-06 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for caching data

Also Published As

Publication number Publication date
JP5922740B2 (ja) 2016-05-24
JP2015130150A (ja) 2015-07-16
US20160011966A1 (en) 2016-01-14
US9348747B2 (en) 2016-05-24
KR101663066B1 (ko) 2016-10-06

Similar Documents

Publication Publication Date Title
KR101663066B1 (ko) 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐
KR101245011B1 (ko) 복수의 전달을 큐잉하는 방법, 복수의 불연속 어드레스 범위 전달 요청 방법, 제품 및 시스템
JP5759623B2 (ja) メモリシステムコントローラを含む装置および関連する方法
US8769232B2 (en) Non-volatile semiconductor memory module enabling out of order host command chunk media access
US8327076B2 (en) Systems and methods of tiered caching
US10114589B2 (en) Command control for multi-core non-volatile memory
JP2013242908A (ja) ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
KR20140013098A (ko) 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들
KR20210096133A (ko) 구역화된 네임스페이스들에서의 기록 커맨드들의 유지
US10180792B1 (en) Cache management in data storage systems
US10445252B2 (en) Storage device and operating method performed by the same
TW201520765A (zh) 儲存系統及其控制方法
JP2019028954A (ja) ストレージ制御装置、プログラム、及び重複排除方法
KR102366512B1 (ko) 논리 블록 어드레싱 범위 충돌 크롤러
CN111752479A (zh) 有效存储数据的方法和系统
US9977732B1 (en) Selective nonvolatile data caching based on estimated resource usage
US10628045B2 (en) Internal data transfer management in a hybrid data storage device
US10268386B2 (en) Data storage device including temporary storage locations
JP2017097466A (ja) ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
US10459658B2 (en) Hybrid data storage device with embedded command queuing
US9236066B1 (en) Atomic write-in-place for hard disk drives
US9785563B1 (en) Read command processing for data storage system based on previous writes
KR101569049B1 (ko) 패스 스루 스토리지 디바이스들
CN113254363A (zh) 具有部分逻辑到物理地址转换表的非易失性存储控制器
US20240086108A1 (en) Parallel fragmented sgl fetching for hiding host turnaround time

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
FPAY Annual fee payment

Payment date: 20190809

Year of fee payment: 4