KR20170051688A - 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법 - Google Patents

저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법 Download PDF

Info

Publication number
KR20170051688A
KR20170051688A KR1020150151974A KR20150151974A KR20170051688A KR 20170051688 A KR20170051688 A KR 20170051688A KR 1020150151974 A KR1020150151974 A KR 1020150151974A KR 20150151974 A KR20150151974 A KR 20150151974A KR 20170051688 A KR20170051688 A KR 20170051688A
Authority
KR
South Korea
Prior art keywords
command
asynchronous
host
storage device
request
Prior art date
Application number
KR1020150151974A
Other languages
English (en)
Other versions
KR102358691B1 (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 삼성전자주식회사
Priority to KR1020150151974A priority Critical patent/KR102358691B1/ko
Priority to US15/336,018 priority patent/US11126584B2/en
Priority to CN201610971039.7A priority patent/CN107015929B/zh
Publication of KR20170051688A publication Critical patent/KR20170051688A/ko
Application granted granted Critical
Publication of KR102358691B1 publication Critical patent/KR102358691B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)
  • Power Sources (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명의 저장 장치의 요청 방법은, 비동기 이벤트 요청 커맨드에 대응하고 웰 클록 타임 요청을 가진 비동기 커맨드 컴플리션을 발생하는 단계, 및 상기 비동기 커맨드 컴플리션에 대응한 타임스탬프를 가진 셋 피쳐스 커맨드를 입력 받는 단계, 및 상기 타임스탬프를 이용하여 웰 클록 타임을 업데이트하는 단계를 포함한다

Description

저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법{METHOD FOR DEVICE REQUESTING IN STORAGE DEVICE AND COMMAND ISSUEING METHOD OF HOST}
본 발명은 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법에 관한 것이다.
반도체 제조 기술이 발전 되면서, 저장 장치와 통신하는 컴퓨터, 스마트폰, 스마트 패드 등과 같은 호스트의 동작 속도가 향상되고 있다. 또한, 저장 장치 및 저장 장치의 호스트에서 사용되는 콘텐츠의 용량이 증가하고 있다. 이에 따라, 더 향상된 동작 성능을 갖는 저장 장치에 대한 요구가 지속적으로 제기되고 있다.
본 발명의 목적은 호스트에 저장 장치의 요구 사항을 전달하는 저장장치의 요청 방법 및 호스트의 커맨드 발행 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 저장 장치의 요청 방법은, 비동기 이벤트 요청 커맨드에 대응하고 웰 클록 타임 요청을 가진 비동기 커맨드 컴플리션을 발생하는 단계, 및 상기 비동기 커맨드 컴플리션에 대응한 타임스탬프를 가진 셋 피쳐스 커맨드를 입력 받는 단계, 및 상기 타임스탬프를 이용하여 웰 클록 타임을 업데이트하는 단계를 포함한다.
본 발명의 다른 실시 예에 따른 저장 장치의 요청 방법은, 비동기 이벤트 요청 커맨드를 입력 받는 단계, 상기 저장 장치에 대한 프로토콜 버전을 알 필요가 있는 지를 판별하는 단계, 상기 프로토콜 버전을 알 필요가 있을 때, 상기 비동기 이벤트 요청 커맨드에 대응하고 프로토콜 버전 요청을 가진 비동기 커맨드 컴플리션을 발생하는 단계, 및 상기 비동기 커맨드 컴플리션에 대응한 프로토콜 버전 정보를 가진 셋 피쳐스 커맨드를 입력 받는 단계, 및 상기 프로토콜 버전 정보를 이용하여 상기 저장 장치를 동작하는 단계를 포함한다.
본 발명의 실시 예에 따른 호스트의 커맨드 발행 방법은, 저장 장치로부터 디바이스 요청을 가진 비동기 커맨드 컴플리션을 입력 받는 단계, 상기 비동기 커맨드 컴플리션에 응답하여 상기 디바이스 요청을 해석하고, 상기 디바이스 요청에 대응하는 동기 커맨드를 발행하는 단계, 및 상기 동기 커맨드에 대응하는 동기 커맨드 컴플리션을 입력 받는 단계를 포함한다.
본 발명의 실시 예에 따른 호스트 시스템은 비동기 이벤트 요청 커맨드의 비동기 커맨드 컴플리션을 이용하여 저장 장치의 디바이스 요청을 호스트로 전송할 수 있다.
도 1은 본 발명의 개념을 설명하는 호스트 시스템을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 커맨드 처리를 위한 큐 인터페이스 방법을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 웰 클록 타임 요청 방법을 예시적으로 보여주는 래더 다이어그램이다.
도 4는 본 발명의 실시 예에 따른 비동기 커맨드 컴플리션을 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 프로토콜 버전 요청 방법을 예시적으로 보여주는 래더 다이어그램이다.
도 6은 본 발명의 다른 실시 예에 따른 비동기 커맨드 컴플리션을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 호스트의 커맨드 발행 방법을 예시적으로 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 저장 장치의 커맨드 처리 방법을 예시적으로 보여주는 도면이다.
도 9는 본 발명의 다른 실시 예에 따른 저장 장치의 커맨드 처리 방법을 예시적으로 보여주는 도면이다.
도 10은 본 발명의 또 다른 실시 예에 따른 저장 장치의 커맨드 처리 방법을 예시적으로 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 파업 시 호스트의 커맨드 발행 방법을 예시적으로 보여주는 흐름도이다.
도 12는 본 발명의 실시 예에 따른 호스트의 비동기 커맨드 관리 방법을 예시적으로 보여주는 흐름도이다.
도 13은 본 발명의 실시 예에 따른 저장 장치의 비동기 커맨드 요청 방법을 예시적으로 보여주는 흐름도이다.
도 14는 본 발명의 실시 예에 따른 SSD를 예시적으로 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다. 본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 혹은 대체물을 포함한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 개념을 설명하는 호스트 시스템(1000)을 예시적으로 보여주는 도면이다. 도 1을 참조하면, 호스트 시스템(1000)은 호스트(1100) 및 저장 장치(NVMe, 1200)를 포함할 수 있다.
여기서, 호스트 시스템(1000)은 컴퓨터, 휴대용 컴퓨터, UMPC(ultra mobile PC), 워크스테이션(workstation), 데이터 서버(data server), 넷북, PDA, 웹 태블릿, 무선 폰, 모바일 폰, 스마트폰, 전자북, PMP(portable multimedia player), 디지털 카메라, 디지털오디오 녹음기/재생기, 디지털 사진기/비디오 기록기/재생기, 휴대용 게임 머신, 네비게이션 시스템, 블록 박스, 3D 텔레비전, 무선 환경에서 정보를 수신 및 송신하는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, RFID, 혹은 컴퓨팅 시스템을 구성하는 다양한 전자 장치들 중 어느 하나로 사용될 수 있다.
호스트(1100)는 서브미션 큐(submission queue, 1110), 컴플리션 큐(completion queue, 1120), 및 디바이스 드라이버(device driver, 1130)를 포함할 수 있다.
서브미션 큐(1110)는 저장 장치(1200)에서 처리될 커맨드들을 저장할 수 있다. 서브미션 큐(1100)는 타임 아웃(time-out)이 있는 동기식 커맨드(synchronous command)와 타임 아웃이 없는 비동기식 커맨드(asynchronous command)를 포함할 수 있다.
실시 예에 있어서, 동기식 커맨드는, 저장 장치(1200)에 저장된 데이터의 입출력을 위한 읽기/쓰기 커맨드, 저장 장치(1200)의 설정을 위한 셋 피쳐스 커맨드(set features CMD) 등을 포함할 수 있다.
셋 피쳐스 커맨드는, 중재(arbitration), 전력 관리(power management), 논리 어드레스 범위 종류(LBA Range Type), 온도 문턱값(temperature threshold), 에러 회복(error recovery), 휘발성 쓰기 캐쉬(volatile write cache), 인터럽트 콜레싱(interrupt coalescing), 인터럽트 벡터 구조(interrupt vector configuration), 쓰기 오토미씨티 노멀(write atomicity normal), 비동기 이벤트 구조(asynchronous event configuration), 자치 전력 상태 천이(autonomous power state transition), 호스트 메모리 버퍼(host memory buffer), 커맨드 셋 스페시픽(command set specific), 벤더 스페시픽(vendor specific), 절대 시간에 대응하는 웰 클록 타임(wall clock time, 혹은 timestamp), 지원되는 프로토콜 버전(protocol version) 등 을 포함할 수 있다.
실시 예에 있어서, 셋 피쳐스 커맨드는 호스트(1100)의 자체적인 판단에 따라 발행될 수 있다. 다른 실시 예에 있어서, 셋 피쳐스 커맨드는 저장 장치(1200)의 요청에 응답하여 디바이스 드라이버(1130)에 제어에 따라 셋 피쳐스 커맨드를 발행될 수 있다.
실시 예에 있어서, 비동기 커맨드는 비동기 이벤트 요청 커맨드(asynchronous event request CMD)을 포함할 수 있다. 비동기 이벤트들(asynchronous events)은 저장 장치(1200)의 상태(status), 에러(error), 및 헬쓰(health) 정보를 호스트(1100)의 스프트웨어에 알리는데 이용될 수 있다. 저장 장치는 비동기 이벤트 요청 커맨드에 응답한 비동기 커맨드 컴플리션에 의해 호스트(1100)로 이벤트를 설명할 수 있다.
또한, 비동기 이벤트 요청 커맨드는 호스트(1100)에 디바이스 요청(device request)을 전송하는데 이용될 수 있다. 예를 들어, 저장 장치(1200)가 호스트(1100)에 특정한 요청을 전송하고 싶을 때, 저장 장치(1200)는 비동기 이벤트 요청 커맨드의 비동기 커맨드 컴플리션에 호스트(1100)에 대한 디바이스 요청(device request)을 포함시킬 수 있다. 호스트(1100)는 디바이스 요청이 포함된 비동기 커맨드 컴플리션을 해석하여, 디바이스 요청에 대응하는 커맨드(예를 들어, 셋 피쳐스 커맨드)를 발행할 수 있다.
실시 예에 있어서, 호스트(1100)는 발행된 비동기 이벤트 요청 커맨드의 개수를 사전에 결정된 값으로 유지하도록 관리될 수 있다.
커맨드 컴플리션 큐(1120)는 저장 장치(1200)로부터 전송된 비동기 커맨드 컴플리션을 저장할 수 있다.
디바이스 드라이버(1130)는 커맨드 컴플리션 큐(1120)에 저장된 비동기 커맨드 컴플리션을 이용하여, 셋 피쳐스 커맨드 발행 여부를 결정할 수 있다. 예를 들어, 디바이스 드라이버(1130)는 비동기 커맨드 컴플리션에 디바이스 요청이 포함되어 있다는 것을 판별하면, 디바이스 요청에 대응하는 셋 피쳐스 커맨드를 발행할 수 있다. 발행된 셋 피쳐스 커맨드는 서브미션 큐(1110)에 저장될 수 있다.
저장 장치(1200)는 NVMe(nonvolatile memory device express)로 구현될 수 있다. 저장 장치(1200)는 비동기 이벤트 요청 커맨드 버퍼(1210), 비동기 커맨드 컴플리션 버퍼(1220), 및 디바이스 요청 모듈(1230)을 포함할 수 있다.
비동기 이벤트 요청 커맨드 버퍼(1210)는 서브미션 큐(1110)에 발행된 비동기 이벤트 요청 커맨드들을 저장할 수 있다.
비동기 커맨드 컴플리션 버퍼(1220)는 저장 장치(1200)에 입력된 동기 커맨드 혹은 비동기 커맨드의 완료 여부(성공/실패)를 지시하는 정보를 저장하는 커맨드 커맨드들을 저장할 수 있다.
디바이스 요청 모듈(1230)은 사전에 결정된 정책, 알고리즘, 혹은 환경 정보(노이즈, 온도, 등)에 응답하여 저장 장치(1200)를 관리하는 데 이용하는 디바이스 요청이 필요한 지를 판별할 수 있다. 만일, 디바이스 요청이 필요하다면, 디바이스 요청 모듈(1230)은 비동기 이벤트 요청 커맨드 중 어느 하나에 대한 비동기 커맨드 컴플리션에 필요한 디바이스 요청을 포함시킬 수 있다. 즉, 디바이스 요청 모듈(1230)은 디바이스 요청을 갖는 비동기 커맨드 컴플리션을 발생할 수 있다. 이렇게 발생된 디바이스 요청을 갖는 비동기 커맨드 컴플리션은 비동기 커맨드 컴플리션 버퍼(1220)를 통하여 호스트(1100)의 컴플리션 큐(1120)에 전송될 수 있다. 여기서 디바이스 요청은 적어도 하나의 셋 피쳐스 커맨드일 수 있다.
실시 예에 있어서, 디바이스 요청 모듈(1230)은 소프트웨어, 하드웨어, 혹은 펌웨어적으로 구현될 수 있다.
본 발명의 실시 예에 따른 호스트 시스템(1000)은 비동기 이벤트 요청 커맨드에 대응하는 비동기 커맨드 컴플리션을 이용하여 저장 장치(1200)의 디바이스 요청을 호스트(1100)로 전송할 수 있다.
도 2는 본 발명의 실시 예에 따른 커맨드 처리를 위한 큐 인터페이스 방법을 예시적으로 보여주는 도면이다. 도 2를 참조하면, 커맨드 큐 인터페이스는 다음과 같이 수행될 수 있다.
커맨드 큐 인터페이스는 커맨드 요청을 위한 서브미션 큐(submission queue, 1110)와 대응하는 커맨드의 처리 완료를 위한 컴플리션 큐(completion queue, 1120)로 구성된 큐 페어(queue pair)에 근거로 하여 수행될 수 있다. 호스트(1100)의 호스트 메모리(1150)는 링 버퍼 형태의 서브미션 큐(1110)와 컴플리션 큐(1120)를 포함할 수 있다.
호스트(1100)는 서브미션 큐에 큐 커맨드를 발행한다(1). 호스트(1100)는 업데이트된 서브미션 큐 테일 포인터를 메모리 제어기(1250)의 테일 도어 벨(tail doorbell)에 쓴다(2). 실시 예에 있어서, 메모리 제어기(1250)는, 물리 기능 제어기), 및/혹은 복수의 가상 기능 제어기들을 포함할 수 있다. 메모리 제어기(1250)는 서브미션 큐로부터 커맨드를 페치할 수 있다(3). 메모리 제어기(1250)는 페치된 커맨드를 처리할 수 있다(4). 메모리 제어기(1250)는 커맨드 처리 후에 컴플리션 큐에 비동기 커맨드 컴플리션을 쓴다(5). 메모리 제어기(1250)는 사전에 결정된 인터럽트를 발생할 수 있다(6). 호스트(1100)는 비동기 커맨드 컴플리션을 처리할 수 있다(7). 호스트(1100)는 업데이트된 컴플리션 큐 헤더 포인터를 저장 장치(1200)의 메모리 제어기(1250)의 헤드 도어 벨(head doorbell)에 쓴다(8).
도 3은 본 발명의 실시 예에 따른 웰 클록 타임(wall clock time) 요청 방법을 예시적으로 보여주는 래더 다이어그램이다. 도 1 내지 도 3을 참조하면, 저장 장치(NVMe, 1200)의 웰 클록 타임 요청 방법은 다음과 같이 진행될 수 있다.
호스트(1100)는 복수의 비동기 이벤트 요청 커맨드들을 발생할 수 있다. 저장 장치(1200)는 복수의 비동기 이벤트 요청 커맨드들을 페치할 수 있다(S11). 페치된 복수의 비동기 이벤트 요청 커맨드들은 비동기 이벤트 요청 커맨드 버퍼(1210, 도 1 참조)에 저장될 수 있다. 저장 장치(1200)는 내부 정책 혹은 사용자 선택에 의거하여 웰 클록 타임(wall clock)이 알 필요가 있는 지를 판별할 수 있다. 여기서 웰 클록 타임은 절대 시간에 대응하는 클록일 수 있다(S12). 웰 클록 타임을 알 필요가 있다고 판별되면, 저장 장치(1200)는 비동기 이벤트 요청 커맨드들 중 어느 하나에 대한 비동기 커맨드 컴플리션에 웰 클록 타임 요청을 삽입할 수 있다. 저장 장치(1200)는 웰 클록 타임 요청을 가진 비동기 커맨드 컴플리션을 호스트(1100)로 전송할 수 있다(S13).
호스트(1100)는 웰 클록 타임 요청을 가진 비동기 커맨드 컴플리션을 입력 받고, 이에 대응하는 셋 피쳐스 커맨드를 저장 장치(1200)에 전송할 수 있다. 여기서 셋 피쳐스 커맨드는 현재 시각 정보를 가진 타임스탬프(timestamp)를 포함할 수 있다(S14). 저장 장치(1100)는 타임스탬프를 이용하여 웰 클록 타임을 업데이트할 수 있다(S15).
본 발명의 실시 예에 따른 저장 장치(1200)는 비동기 이벤트 요청 커맨드의 비동기 커맨드 컴플리션에 웰 클록 타임 요청을 실어서 호스트(1100)에 전송할 수 있다.
도 4는 본 발명의 실시 예에 따른 비동기 커맨드 컴플리션을 예시적으로 보여주는 도면이다. 도 4를 참조하면, 비동기 커맨드 컴플리션은 타입을 지시하는 3 비트(0 ~ 2), 제 1 예비 영역의 5 비트(3 ~ 7), 요청 타입을 지시하는 8 비트(8-15), 사용되지 않고 로그 페이지 식별기를 지시하는 8 비트(16 ~ 23), 및 제 2 예비 영역의 8 비트(24 ~ 31)를 포함할 수 있다. 여기서 요청 타입은 타임스탬프 요청에 대응하는 비트들을 포함할 수 있다.
본 발명은 저장 장치를 구동하는데 필요한 프로토콜 버전 정보를 요청하는데도 이용 가능하다.
도 5는 본 발명의 실시 예에 따른 프로토콜 버전 요청 방법을 예시적으로 보여주는 래더 다이어그램이다. 도 1 내지 도 2, 및 도 5를 참조하면, 저장 장치(NVMe, 1200)의 프로토콜 버전 요청 방법은 다음과 같이 진행될 수 있다.
저장 장치(1200)는 호스트(1100)의 서브미션 큐(1110, 도 1 참조)에 발행된 비동기 이벤트 요청 커맨드들을 페치할 수 있다(S21). 페치된 복수의 비동기 이벤트 요청 커맨드들은 비동기 이벤트 요청 커맨드 버퍼(1210, 도 1 참조)에 저장될 수 있다. 저장 장치(1200)는 프로토콜 버전을 알 필요가 있는 지를 판별할 수 있다. 여기서 프로토콜 버전은 저장 장치(1200)를 구동하는데 필요한 펌웨어 관련 정보일 수 있다(S22).
프로토콜 버전을 알 필요가 있다고 판별되면, 저장 장치(1200)는 비동기 이벤트 요청 커맨드들 중 어느 하나에 대한 비동기 커맨드 컴플리션에 프로토콜 버전 요청을 삽입할 수 있다. 저장 장치(1200)는 프로토콜 버전 요청을 가진 비동기 커맨드 컴플리션을 호스트(1100)로 전송할 수 있다(S23).
호스트(1100)는 프로토콜 버전 요청을 가진 비동기 커맨드 컴플리션을 입력 받고, 이에 대응하는 셋 피쳐스 커맨드를 저장 장치(1200)에 전송할 수 있다. 여기서 셋 피쳐스 커맨드는 저장 장치(1200)를 관리하는 프로토콜 버전 정보를 포함할 수 있다(S24).
저장 장치(1100)는 프로토콜 버전 정보를 이용하여 동작할 수 있다(S25).
본 발명의 실시 예에 따른 저장 장치(1200)는 비동기 이벤트 요청 커맨드의 비동기 커맨드 컴플리션에 프로토콜 버전 요청을 실어서 호스트(1100)에 전송할 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 비동기 커맨드 컴플리션을 예시적으로 보여주는 도면이다. 도 6을 참조하면, 비동기 커맨드 컴플리션은 타입을 지시하는 3 비트(0 ~ 2), 제 1 예비 영역의 5 비트(3 ~ 7), 요청 타입을 지시하는 8 비트(8-15), 사용되지 않고 로그 페이지 식별기를 지시하는 8 비트(16 ~ 23), 및 제 2 예비 영역의 8 비트(24 ~ 31)를 포함할 수 있다. 여기서 요청 타입은 요청 타입은 호스트(1100)에 의해 지원되는 NVMe 버전, 즉, 프로토콜 버전 요청을 포함할 수 있다.
도 7은 본 발명의 실시 예에 따른 호스트의 커맨드 발행 방법을 예시적으로 보여주는 도면이다. 도 1 내지 도 7을 참조하면, 호스트(1100, 도 1 참조)의 커맨드 발행 방법은 다음과 같다.
호스트(1100)는 저장 장치(1200, 도 1 참조)로부터 디바이스 요청을 가진 비동기 커맨드 컴플리션을 입력 받는다(S110). 저장 장치(1200)는 내부 정책에 따른 디바이스 요청을 비동기 커맨드 컴플리션에 실어서 호스트(1100)에 전송할 수 있다. 호스트(1100)는 비동기 커맨드 컴플리션에 포함된 디바이스 요청을 읽고, 디바이스 요청에 대응하는 동기 커맨드를 발행할 수 있다(S120). 발행된 동기 커맨드는 저장 장치(1200)에서 페치될 수 있다(S120). 저장 장치(1200)는 페치된 동기 커맨드를 실행하고, 동기 커맨드에 대응하는 동기 커맨드 컴플리션을 발생할 수 있다. 이후에, 호스트(1100)는 저장 장치(1200)로부터 동기 커맨드 컴플리션을 입력 받을 수 있다(S130).
본 발명의 호스트(1100)는 비동기 커맨드 컴플리션을 이용하여 동기 커맨드를 발행할 수 있다. 한편, 도 7에 도시된 커맨드 발행 동작의 순서 및 방법은, 본 발명을 제한하지 않는 실시예에 불과하다고 이해되어야 할 것이다.
도 8은 본 발명의 실시 예에 따른 저장 장치의 커맨드 처리 방법을 예시적으로 보여주는 도면이다. 도 1 내지 도 8을 참조하면, 저장 장치(1200, 도 1 참조)의 커맨드 처리 방법은 다음과 같다.
저장 장치(1200)는 호스트(1100, 도 1 참조)로부터 적어도 하나의 비동기 커맨드를 페치할 수 있다(S210). 저장 장치(1200)는 호스트(1100)의 입출력 요청에 따라 적어도 하나의 입출력(I/O) 동작을 수행할 수 있다(S220).
저장 장치(1200)의 디바이스 요청 모듈(1230)은 내부 정책에 따라 호스트(1100)에 디바이스 요청을 전송할 필요가 있는 지를 판별할 수 있다(S230).
만일, 호스트(1100)에 디바이스 요청을 전송할 필요가 없을 때, S220 단계가 진행될 수 있다. 반면에, 호스트(1100)에 디바이스 요청을 전송할 필요가 있을 때, 디바이스 요청 모듈(1230)은 비동기 커맨드 컴플리션에 필요한 디바이스 요청을 포함시킬 수 있다. 저장 장치(1200)는 디바이스 요청을 가진 비동기 커맨드 컴플리션을 호스트(1100)로 전송할 수 있다(S240).
이후에, 저장 장치(1200)는 호스트(1100)로부터 디바이스 요청에 대응하는 동기 커맨드를 페치할 수 있다(S250). 여기서 페치된 동기 커맨드는 호스트(1100)의 디바이스 드라이버(1130)에 의해 서브미션 큐(1110)에 발행된 것이다. 이후에, 저장 장치(1200)는 페치된 동기 커맨드를 처리하고 동기 커맨드 컴플리션을 호스트(1100)에 전송할 수 있다(S260).
본 발명의 실시 예에 따른 저장 장치(1200)는 비동기 커맨드 컴플리션을 이용하여 디바이스 요청을 호스트(1100)에 전송할 수 있다.
한편, 도 8에 도시된 커맨드 처리 동작의 순서 및 방법은 본 발명을 제한하지 않는 실시 예들에 불과하다고 이해되어야 할 것이다. 본 발명의 커맨드 처리 동작은 호스트(1100)의 기능 제공 여부 후에 혹은 호스트(1100) 인증 후에만 수행될 수 있다. 도 9는 본 발명의 다른 실시 예에 따른 저장 장치의 커맨드 처리 방법을 예시적으로 보여주는 도면이다. 도 9를 참조하면, 저장 장치(1200)의 커맨드 처리 방법은, 도 8에 도시된 커맨드 처리 방법과 비교하여 S201 ~ S207 단계를 더 포함할 수 있다. 저장 장치(1200)가 파워-업 될 것이다(S201). 파워-업 후에, 저장 장치(1200)는 호스트(1100)로부터 비동기 커맨드(예, 비동기 이벤트 요청 커맨드)를 페치할 수 있다(S202). 이후에 저장 장치(1200)는 호스트 기능(예, 프로토콜 버전 정보)/인증을 확인하기 위하여 디바이스 요청(device request)을 가진 비동기 커맨드 컴플리션을 호스트(1100)로 전송할 수 있다(S203). 이후, 호스트(1100)는 저장 장치(1200)로부터 전송된 비동기 커맨드 컴플리션을 해석하여 호스트 기능/인증을 가진 디바이스 요청에 대응하는 동기 커맨드를 발행할 수 있다. 이후에, 저장 장치(1200)는 호스트 기능/인증을 가진 디바이스 요청에 대응하는 동기 커맨드를 페치할 수 있다(S204). 이후에, 저장 장치(1200)는 페치된 동기 커맨드를 이용하여 호스트 인증을 얻었는지 판별하거나 혹은 호스트(1100)에 제공된 기능(예, 디바이스 드라이버의 버전 정보)이 변화되었는 지를 판별할 수 있다(S205).
만일, 호스트 인증을 얻었거나 호스트(1100)에 제공된 기능이 변화되었다면, 저장 장치(1200)는 디바이스 요청 스킴을 사용하거나, 호스트(1100)를 위한 기능을 변화시킬 수 있다(S206). 여기서 디바이스 요청 스킴은 저장 장치(1200)가 비동기 커맨드 컴플리션을 이용하여 호스트(1100)에 요구 사항을 전달하는 방법을 의미한다. 반면에, 호스트 인증을 얻지 못하거나 호스트(1100)에 의해 제공된 기능이 변화되지 않았다면, 저장 장치(1200)는 디바이스 요청 스킴을 사용하지 않거나, 호스트(1100)를 위한 기능을 변화시키지 않을 수 있다(S207).
이후, 저장 장치(1200)는 호스트(1100)의 요청에 응답하여 입출력 동작을 수행할 수 있다(S220). 이후에, 저장 장치(1200)는 호스트에 디바이스 요청을 전송할 필요가 있는 지 혹은 호스트 인증을 얻을 필요가 있는 지를 판별할 수 있다(S230a). 이후부터는 도 8에 설명된 S240, S250, 및 S260 단계들이 동일하게 진행될 수 있다. 한편, 도 9에 도시된 단계들의 순서는 본 발명을 제한하지 않는다고 이해되어야 할 것이다.
한편, 본 발명의 커맨드 처리 방법은 전력 소비 저감 동작에도 적용 가능하다. 도 10은 본 발명의 또 다른 실시 예에 따른 저장 장치의 커맨드 처리 방법을 예시적으로 보여주는 도면이다. 도 1 내지 도 10을 참조하면, 저장 장치(1200)의 커맨드 처리 방법은 다음과 같다.
사전에 결정된 시간 동안 호스트(1100, 도 1 참조)로부터 입력된 커맨드가 없거나, 호스트(1100)로부터 저전력 커맨드(low power command)을 입력받았는지가 판별될 수 있다(S310).
만일, 사전에 결정된 시간 동안 호스트(1100, 도 1 참조)로부터 입력된 커맨드가 없거나, 호스트(1100)로부터 저전력 커맨드(low power command)을 입력받았다면, 저장 장치(1200)는 저전력 모드(low power mode)로 진입할 수 있다. 여기서 저전력 모드는 아이들(IDLE) 상태일 수 있다(S320). 반면에 그렇지 않으면, S330 단계로 곧바로 진입한다.
이후에, 저장 장치(1200)는 호스트(1100)로부터 웨이크-업 커맨드 혹은 입출력 커맨드를 입력 받을 수 있다(S330). 저장 장치(1200)는 입력된 커맨드에 대응하는 동작을 수행할 수 있다(S340).
이후에, 저장 장치(1200)는 펌웨어적/소프트웨어적으로 호스트에 필요한 디바이스 요청을 전송할 필요가 있는 지를 판별할 수 있다(S350).
만일, 디바이스 요청이 필요하다면, 저장 장치(1200)는 디바이스 요청을 가진 비동기 커맨드 컴플리션을 발생하고 이를 호스트(1100)에 전송할 수 있다(S360). 이후에, 저장 장치(1200)는 디바이스 요청을 위한 또 다른 비동기 커맨드를 입력받을 수 있다. 이후 S310 단계로 다시 진입될 수 있다(S310).
본 발명은 저장 장치의 파워-업 동작에도 적용 가능하다.
도 11은 본 발명의 실시 예에 따른 파업 시 호스트의 커맨드 발행 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 11을 참조하면, 호스트(1100)의 커맨드 발행 방법을 다음과 같다.
저장 장치(1200)의 파워-업 동작이 수행될 수 있다(S410). 즉 호스트(1100)에 저장 장치(1200)가 연결되거나, 호스트(1100)로부터 차단된 전원 전압이 저장 장치(1200)에 제공될 수 있다. 우선적으로 호스트(1100)는 저장 장치(1200)를 위한 사전에 결정된 개수의 비동기 커맨드들을 발행할 수 있다(S420). 발행된 비동기 커맨드들은 저장 장치(1200)에서 페치 및 저장될 수 있다.
호스트(1100)는 임의의 시간에 저장 장치(1200)로부터 비동기 커맨드들 중 어느 하나에 대응하는 비동기 커맨드 컴플리션을 입력 받을 수 있다. 여기서 비동기 커맨드 컴플리션은 호스트(1100)에 대한 디바이스 요청을 포함할 수 있다(S430).
호스트(1100)는 디바이스 요청에 대응하는 동기 커맨드를 발행할 수 있다(S440). 여기서 발행되는 동기 커맨드는 셋 피쳐스 커맨드일 수 있다.
한편, 본 발명의 비동기 커맨드의 개수는 일정한 개수로 관리될 수 있다. 도 12는 본 발명의 실시 예에 따른 호스트의 비동기 커맨드 관리 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 12를 참조하면, 호스트(1100, 도 1 참조)의 비동기 커맨드 관리 방법은 다음과 같다.
호스트(1100)는 서브미션 큐(SQ, 1110)에 저장된 비동기 커맨드들의 개수가 몇 개인지 판별할 수 있다(S510). 만일 비동기 커맨드들의 개수가 사전에 결정된 값보다 작으면, 호스트(1100)는 서브미션 큐(SQ, 1110)에 비동기 커맨드를 발행할 수 있다(S520).
본 발명의 실시 예에 따른 호스트(1100)는 비동기 커맨드의 개수를 일정하게 유지할 수 있다. 본 발명이 여기에 제한되지 않을 것이다. 본 발명은 저장 장치(1200, 도 1 참조)가 비동기 커맨드를 요청할 수도 있다. 도 13은 본 발명의 실시 예에 따른 저장 장치의 비동기 커맨드 요청 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 13을 참조하면, 저장 장치(1200, 도 1 참조)의 비동기 커맨드 요청 방법은 다음과 같다.
호스트(1100, 도 1 참조)는 복수의 비동기 이벤트 요청 커맨드들을 발생할 수 있다. 저장 장치(1200)는 복수의 비동기 이벤트 요청 커맨드들을 페치할 수 있다(S31). 페치된 복수의 비동기 이벤트 요청 커맨드들은 비동기 이벤트 요청 커맨드 버퍼(1210, 도 1 참조)에 저장될 수 있다. 저장 장치(1200)는 내부 정책 혹은 사용자 선택에 의거하여 비동기 이벤트 요청 커맨드의 발행이 필요한지를 판별할 수 있다(S32).
비동기 이벤트 요청 커맨드 발행이 필요하다고 판별되면, 저장 장치(1200)는 비동기 이벤트 요청 커맨드들 중 어느 하나에 대한 비동기 커맨드 컴플리션에 비동기 이벤트 요청 커맨드 발행 요청을 삽입할 수 있다. 저장 장치(1200)는 비동기 이벤트 요청 커맨드 발행 요청을 가진 비동기 커맨드 컴플리션을 호스트(1100)로 전송할 수 있다(S33).
호스트(1100)는 비동기 이벤트 요청 커맨드 발행 요청을 가진 비동기 커맨드 컴플리션을 입력 받고, 이에 대응하는 비동기 이벤트 요청 커맨드를 서브미션 큐(1110, 도 1 참조)에 발행할 수 있다. 이후, 저장 장치(1200)는 발행된 비동기 이벤트 요청 커맨드를 페치 및 저장할 수 있다(S34).
본 발명의 저장 장치는 SSD(solid state drive)일 수 있다. 도 14는 본 발명의 실시 예에 따른 SSD를 예시적으로 보여주는 도면이다. 도 14를 참조하면, SSD(2200)는 복수의 비휘발성 메모리 장치들(2210) 및 제어기(2220)를 포함할 수 있다.
비휘발성 메모리 장치들(2210)은 옵션적으로 외부 고전압(Vpp)을 제공받도록 구현될 수 있다. 비휘발성 메모리 장치들(2210) 각각은, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
또한, 비휘발성 메모리 장치는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명의 실시 예로서, 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 또는 그 이상의 물리 레벨들에 모놀리식으로(monolithically) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 모놀리식(monolithical)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착됨을 의미한다.
본 발명의 개념에 따른 실시 예로서, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩 층을 포함한다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조를 갖고, 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에 공유된 워드 라인들 또는 비트 라인들을 갖는다. 3차원 메모리 어레이에 적합한 구성은, 삼성전자에서 출원하였으며, 이 출원의 참고문헌으로 결합된 US 7,679,133, US 8,553,466, US 8,654,587, US 8,559,235, 및 US 2011/0233648에 설명될 것이다. 본 발명의 비휘발성 메모리 장치(NVM)는 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다. 아래에서는 설명의 편의를 위하여 비휘발성 메모리 장치가 수직형 낸드 플래시 메모리 장치라고 하겠다.
제어기(2220)는 복수의 채널들(CH1 ~ CHi, i는 2 이상의 정수)을 통하여 비휘발성 메모리 장치들(2210)에 연결된다. 제어기(2220)는 도 1 내지 도 21에서 설명된 메모리 제어기로 구현될 수 있다.
제어기(2220)는 적어도 하나의 프로세서(2221), 버퍼 메모리(2222), 에러 정정 회로(2223), 호스트 인터페이스(2225) 및 비휘발성 메모리 인터페이스(2226)를 포함할 수 있다.
버퍼 메모리(2222)는 메모리 제어기(2220)의 동작에 필요한 데이터를 임시로 저장할 것이다. 버퍼 메모리(2222)는 데이터 혹은 명령을 저장하는 복수의 메모리 라인들을 포함할 수 있다. 여기서 복수의 메모리 라인들은 캐시 라인들에 다양한 방법으로 맵핑 될 수 있다. 버퍼 메모리(2222)는 페이지 비트맵 정보 및 읽기 카운트 정보를 저장할 수 있다. 페이지 비트맵 정보 혹은 읽기 카운트 정보는 파워-업시 비휘발성 메모리 장치(2210)로부터 읽어오고, 내부 동작에 따라 업데이트 될 수 있다. 업데이트된 페이지 비트맵 정보 혹은 읽기 카운트 정보는 주기적 혹은 비주기적으로 비휘발성 메모리 장치(2210)에 저장될 수 있다.
에러 정정 회로(2223)는 쓰기 동작에서 프로그램될 데이터의 에러 정정 코드 값을 계산하고, 읽기 동작에서 읽혀진 데이터를 에러 정정 코드 값에 근거로 하여 에러 정정하고, 데이터 복구 동작에서 비휘발성 메모리 장치(2210)로부터 복구된 데이터의 에러를 정정할 수 있다. 도시되지 않았지만, 메모리 제어기(2220)를 동작하는 데 필요한 코드 데이터를 저장하는 코드 메모리가 더 포함될 수 있다. 코드 메모리는 비휘발성 메모리 장치로 구현될 수 있다.
호스트 인터페이스(2225)는 외부의 장치와 인터페이스 기능을 제공할 수 있다. 여기서 호스트 인터페이스(2225)는 낸드 플래시 인터페이스일 수 있다. 이 외에도 호스트 인터페이스(2225)는 다양한 인터페이스에 의해 구현될 수 있으며, 복수의 인터페이스들로 구현될 수도 있다. 비휘발성 메모리 인터페이스(2226)는 비휘발성 메모리 장치(2210)와 인터페이스 기능을 제공할 수 있다.
또한, 본 발명의 제어기(2220)는 도 1에 도시된 디바이스 요청 모듈(1230)을 포함하거나, 도 1 내지 도 13에서 설명된 바와 같이 비동기 커맨드 컴플리션을 이용하여 디바이스 요청을 호스트로 전송할 수 있도록 구현될 수 있다.
본 발명의 실시 예에 따른 SSD(2200)는 신뢰성 향상을 위한 디바이스 요청을 정책에 따라 호스트에 전송할 수 있음으로써, 데이터의 신뢰성을 크게 향상시킬 수 있다. 이에 데이터 센터의 서버에 적용 가능하다.
한편, 호스트와 저장 장치는 PCIe(Peripheral Component Interconnect Express) 인터페이스에 의해 연결될 수 있다. 도 15는 본 발명의 실시 예에 따른 컴퓨팅 시스템(3000)을 예시적으로 보여주는 블록도이다. 도 15를 참조하면, 컴퓨팅 시스템(3000)은 호스트(3100) 및 적어도 하나의 저장 장치(3200)를 포함할 수 있다. 호스트(3100)와 저장 장치(3200) 사이는 PCIe 버스를 통하여 연결될 수 있다.
호스트(3100)는 적어도 하나의 중앙 처리 장치(3110), 호스트 버퍼 메모리(3120), 및 PCIe 제어기(3130)를 포함할 수 있다. 호스트 버퍼 메모리(3120)는 서브미션 큐 및 컴플리션 큐를 저장할 수 있다. 실시 예에 있어서, PCIe 제어기(3130)는 도 1에 도시된 디바이스 드라이버(1130)를 포함할 수 있다.
저장 장치(3200)는 적어도 하나의 비휘발성 메모리 장치(3220) 및 그것을 제어하는 메모리 제어기(3250)를 포함할 수 있다. 메모리 제어기(3250)는 PCIe 제어기(3130)과 연결되는 PCIe 인터페이스(I/F, 3252)를 포함할 수 있다. 본 발명의 메모리 제어기(3250)는 도 1에 도시된 디바이스 요청 모듈(1230)을 포함하도록 구현될 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
1000: 메모리 시스템
1100: 호스트
1200: 저장 장치
1110: 서브미션 큐
1120: 컴플리션 큐
1130: 디바이스 드라이버
1210: 비동기 이벤트 요청 커맨드 버퍼
1220: 비동기 커맨드 컴플리션 버퍼
1230: 디바이스 요청 모듈

Claims (20)

  1. 저장 장치의 요청 방법에 있어서:
    비동기 이벤트 요청 커맨드(asynchronous event request command)에 대응하고 웰 클록 타임(wall clock time) 요청을 가진 비동기 커맨드 컴플리션(asynchronous command completion)을 발생하는 단계; 및
    상기 비동기 커맨드 컴플리션에 대응한 타임스탬프(timestamp)를 가진 셋 피쳐스 커맨드(set features command)를 입력 받는 단계; 및
    상기 타임스탬프를 이용하여 웰 클록 타임(wall clock time)을 업데이트하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 비동기 이벤트 요청 커맨드를 입력 받는 단계를 더 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 웰 클록 타임을 알 필요가 있는 지를 판별하는 단계를 더 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 저장 장치의 내부적인 정책에 따라 상기 웰 클록 타임을 알 필요가 있다고 판별되는 방법.
  5. 제 3 항에 있어서,
    호스트로부터 웨이크-업 커맨드를 입력 받을 때, 상기 웰 클록 타임을 알 필요가 있다고 판별되는 방법.
  6. 제 3 항에 있어서,
    상기 저장 장치의 파워-업 시, 상기 웰 클록 타임을 알 필요가 있다고 판별되는 방법.
  7. 제 1 항에 있어서,
    상기 비동기 커맨드 컴플리션을 발생하는 단계는,
    호스트가 상기 웰 클록 타임 요청을 가진 상기 비동기 커맨드 컴플리션을 해석하는 기능을 포함하는 지를 판별한 뒤 혹은 상기 호스트를 인증한 후에, 상기 비동기 커맨드 컴플리션을 발생하는 단계를 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 비동기 커맨드 컴플리션은,
    타입을 알리는 3 비트;
    제 1 예비 영역의 5 비트;
    상기 웰 클록 타임 요청에 대응하는 타임스탬프 요청을 지시하는 7 비트;
    로그 페이지 식별기를 지시하는 8 비트; 및
    제 2 예비 영역의 8 비트를 포함하는 방법.
  9. 제 1 항에 있어서,
    비동기 이벤트 요청 커맨드가 필요한지를 판별하는 단계를 더 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 저장 장치에 저장된 비동기 이벤트 요청 커맨드의 개수가 사전에 결정된 값보다 작을 때, 상기 비동기 이벤트 요청 커맨드 발행을 호스트에 요청하는 단계를 더 포함하고,
    상기 비동기 이벤트 요청 커맨드 발행 요청은 다른 비동기 커맨드 컴플리션을 통하여 상기 호스트로 전송되는 방법.
  11. 제 10 항에 있어서,
    상기 다른 비동기 커맨드 컴플리션에 대응하여 상기 호스트에 새롭게 발행된 비동기 이벤트 요청 커맨드를 페치하는 단계를 더 포함하는 방법.
  12. 저장 장치의 요청 방법에 있어서:
    비동기 이벤트 요청 커맨드(asynchronous event request command)를 입력 받는 단계;
    상기 저장 장치에 대한 프로토콜 버전(protocol version)을 알 필요가 있는 지를 판별하는 단계;
    상기 프로토콜 버전을 알 필요가 있을 때, 상기 비동기 이벤트 요청 커맨드에 대응하고 프로토콜 버전 요청을 가진 비동기 커맨드 컴플리션(asynchronous command completion)을 발생하는 단계; 및
    상기 비동기 커맨드 컴플리션에 대응한 프로토콜 버전 정보를 가진 셋 피쳐스 커맨드(set features command)를 입력 받는 단계; 및
    상기 프로토콜 버전 정보를 이용하여 상기 저장 장치를 동작하는 단계를 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 저장 장치의 파워-업 시 상기 프로토콜 버전을 알 필요가 있다고 판별되는 방법.
  14. 제 12 항에 있어서,
    상기 비동기 커맨드 컴플리션은,
    타입을 알리는 3 비트;
    제 1 예비 영역의 5 비트;
    상기 프로토콜 버전 요청을 지시하는 7 비트;
    로그 페이지 식별기를 지시하는 8 비트; 및
    제 2 예비 영역의 8 비트를 포함하는 방법.
  15. 호스트의 커맨드 발행 방법에 있어서:
    저장 장치로부터 디바이스 요청(device request)을 가진 비동기 커맨드 컴플리션(asynchronous command completion)을 입력 받는 단계;
    상기 비동기 커맨드 컴플리션에 응답하여 상기 디바이스 요청을 해석하고, 상기 디바이스 요청에 대응하는 동기 커맨드(synchronous command)를 발행하는 단계; 및
    상기 동기 커맨드에 대응하는 동기 커맨드 컴플리션(synchronous command completion)을 입력 받는 단계를 포함하는 방법.
  16. 제 15 항에 있어서,
    상기 비동기 커맨드는 비동기 이벤트 요청 커맨드인 방법.
  17. 제15 항에 있어서,
    발행된 비동기 이벤트 요청 커맨드의 개수를 사전에 결정된 값으로 유지시키는 단계를 더 포함하는 방법.
  18. 제 15 항에 있어서,
    상기 동기 커맨드는 셋 피쳐스 커맨드인 방법.
  19. 제 15 항에 있어서,
    상기 저장 장치는 SSD(solid state drive)이고,
    상기 SSD는 적어도 하나의 수직형 낸드 플래시 메모리 장치를 포함하는 방법.
  20. 제 15 항에 있어서,
    상기 호스트와 상기 저장 장치는 PCIe(peripheral component interconnect express)을 통하여 연결되는 방법.
KR1020150151974A 2015-10-30 2015-10-30 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법 KR102358691B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150151974A KR102358691B1 (ko) 2015-10-30 2015-10-30 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법
US15/336,018 US11126584B2 (en) 2015-10-30 2016-10-27 Method for transferring request in storage device and method for issuing command in host
CN201610971039.7A CN107015929B (zh) 2015-10-30 2016-10-28 在储存设备中传送请求的方法和在主机中发布命令的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150151974A KR102358691B1 (ko) 2015-10-30 2015-10-30 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법

Publications (2)

Publication Number Publication Date
KR20170051688A true KR20170051688A (ko) 2017-05-12
KR102358691B1 KR102358691B1 (ko) 2022-02-07

Family

ID=58637571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150151974A KR102358691B1 (ko) 2015-10-30 2015-10-30 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법

Country Status (3)

Country Link
US (1) US11126584B2 (ko)
KR (1) KR102358691B1 (ko)
CN (1) CN107015929B (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102387922B1 (ko) * 2017-02-07 2022-04-15 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US10387081B2 (en) 2017-03-24 2019-08-20 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10452278B2 (en) 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10564853B2 (en) 2017-04-26 2020-02-18 Western Digital Technologies, Inc. System and method for locality detection to identify read or write streams in a memory device
US10466903B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for dynamic and adaptive interrupt coalescing
US10296473B2 (en) 2017-03-24 2019-05-21 Western Digital Technologies, Inc. System and method for fast execution of in-capsule commands
US10509569B2 (en) 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
US10725835B2 (en) 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10466904B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10296249B2 (en) 2017-05-03 2019-05-21 Western Digital Technologies, Inc. System and method for processing non-contiguous submission and completion queues
US10114586B1 (en) 2017-06-22 2018-10-30 Western Digital Technologies, Inc. System and method for using host command data buffers as extended memory device volatile memory
US10482010B2 (en) * 2017-06-29 2019-11-19 Intel Corporation Persistent host memory buffer
US10642498B2 (en) 2017-11-07 2020-05-05 Western Digital Technologies, Inc. System and method for flexible management of resources in an NVMe virtualization
US10564857B2 (en) 2017-11-13 2020-02-18 Western Digital Technologies, Inc. System and method for QoS over NVMe virtualization platform using adaptive command fetching
CN109840232B (zh) 2017-11-28 2022-05-13 华为技术有限公司 存储设备及存储设备的元件管理方法
CN108196794A (zh) * 2017-12-29 2018-06-22 华为技术有限公司 一种消息处理方法、装置及***
US11392320B2 (en) 2018-07-03 2022-07-19 Western Digital Technologies, Inc. Quality of service based arbitrations optimized for enterprise solid state drives
US10732897B2 (en) 2018-07-03 2020-08-04 Western Digital Technologies, Inc. Quality of service based arbitrations optimized for enterprise solid state drives
DE102020110559A1 (de) * 2019-08-14 2021-02-18 Samsung Electronics Co., Ltd. Rechensystem zur Reduzierung von Latenz zwischen seriell verbundenen elektronischen Vorrichtungen
CN111090515B (zh) * 2019-11-22 2023-08-18 拉扎斯网络科技(上海)有限公司 一种访问控制方法、装置、终端设备及存储介质
CN112905124B (zh) * 2021-02-23 2023-03-21 记忆科技(深圳)有限公司 异步低功耗信号处理方法、装置、计算机设备及存储介质
KR20220126024A (ko) 2021-03-08 2022-09-15 삼성전자주식회사 호스트 장치 및 스토리지 장치 사이의 시간 동기화 방법 및 이를 수행하는 시스템
KR20220141383A (ko) * 2021-04-12 2022-10-20 삼성전자주식회사 스토리지 시스템, 스토리지 장치 및 스토리지 장치의 동작 방법
US20230153031A1 (en) * 2021-11-16 2023-05-18 Samsung Electronics Co., Ltd. Storage device supporting multi-host and operation method thereof

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008500657A (ja) * 2004-05-21 2008-01-10 エヌエイチエヌ コーポレーション 命令語の有効性判断方法及びそのシステム
KR20140067739A (ko) * 2012-11-27 2014-06-05 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR20140080948A (ko) * 2012-12-21 2014-07-01 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
KR20150105381A (ko) * 2013-01-04 2015-09-16 퀄컴 인코포레이티드 Http 를 통한 동적 적응형 스트리밍 (dash) 을 위한 라이브 타이밍
KR20150114363A (ko) * 2014-03-28 2015-10-12 삼성전자주식회사 스토리지 시스템, 그것의 쓰기 방지 수행 방법, 그리고 그것의 쓰기 방지 인증 방법

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5345347A (en) * 1992-02-18 1994-09-06 Western Digital Corporation Disk drive with reduced power modes
US7111189B1 (en) 2000-03-30 2006-09-19 Hewlett-Packard Development Company, L.P. Method for transaction log failover merging during asynchronous operations in a data storage network
DE60039033D1 (de) 2000-05-25 2008-07-10 Hitachi Ltd Speichersystem zur Bestätigung der Datensynchronisierung während des asynchronen Fernkopierens
KR100994940B1 (ko) 2002-07-19 2010-11-19 코닌클리케 필립스 일렉트로닉스 엔.브이. 전송 매체를 통해 송신기로부터 수신기로 데이터 패킷들을 송신하는 방법 및 전송 매체를 통해 상호 결합된 송신기 및 수신기를 포함하는 전송 시스템
US7290086B2 (en) 2003-05-28 2007-10-30 International Business Machines Corporation Method, apparatus and program storage device for providing asynchronous status messaging in a data storage system
US7624395B2 (en) * 2004-09-23 2009-11-24 Sap Ag Thread-level resource usage measurement
US7548994B2 (en) 2006-05-05 2009-06-16 Dell Products L.P. Disk initiated asynchronous event notification in an information handling system
US7757124B1 (en) 2007-07-16 2010-07-13 Oracle America, Inc. Method and system for automatic correlation of asynchronous errors and stimuli
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8231136B2 (en) 2008-08-21 2012-07-31 Wonderland Nurserygoods Company Limited System and method for mounting different types of infant carriers on a support structure
US8108582B2 (en) 2008-08-27 2012-01-31 Hewlett-Packard Development Company, L.P. Notifying asynchronous events to a host of a data storage system and apparatus for the same
US20110072442A1 (en) 2009-09-22 2011-03-24 International Business Machines Corporation Event-handler for selecting responsive actions
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
US8631284B2 (en) 2010-04-30 2014-01-14 Western Digital Technologies, Inc. Method for providing asynchronous event notification in systems
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US9426423B2 (en) 2012-11-01 2016-08-23 Polycom, Inc. Method and system for synchronizing audio and video streams in media relay conferencing
KR20150112075A (ko) 2014-03-26 2015-10-07 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008500657A (ja) * 2004-05-21 2008-01-10 エヌエイチエヌ コーポレーション 命令語の有効性判断方法及びそのシステム
KR20140067739A (ko) * 2012-11-27 2014-06-05 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR20140080948A (ko) * 2012-12-21 2014-07-01 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
KR20150105381A (ko) * 2013-01-04 2015-09-16 퀄컴 인코포레이티드 Http 를 통한 동적 적응형 스트리밍 (dash) 을 위한 라이브 타이밍
KR20150114363A (ko) * 2014-03-28 2015-10-12 삼성전자주식회사 스토리지 시스템, 그것의 쓰기 방지 수행 방법, 그리고 그것의 쓰기 방지 인증 방법

Also Published As

Publication number Publication date
US20170123659A1 (en) 2017-05-04
US11126584B2 (en) 2021-09-21
KR102358691B1 (ko) 2022-02-07
CN107015929B (zh) 2021-06-18
CN107015929A (zh) 2017-08-04

Similar Documents

Publication Publication Date Title
KR102358691B1 (ko) 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법
KR102491651B1 (ko) 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US11403044B2 (en) Method and apparatus for performing multi-object transformations on a storage device
US10019367B2 (en) Memory module, computing system having the same, and method for testing tag error thereof
KR20180043451A (ko) 컴퓨팅 시스템 및 그것의 동작 방법
US20160203091A1 (en) Memory controller and memory system including the same
US9122598B2 (en) Semiconductor device and operating method thereof
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
KR20170101199A (ko) 3d 메모리에 대한 액세스 동작들을 위한 계층 모드
US11494118B2 (en) Storage device and operating method thereof
US10664333B2 (en) Semiconductor memory device including a controller for controlling power and electronic device including the semiconductor memory device
US20150346795A1 (en) Multi-host power controller (mhpc) of a flash-memory-based storage device
US11360711B2 (en) Storage device temporarily suspending internal operation to provide short read response time for read request from host
US20190026029A1 (en) Storage device, storage system and method of operating the same
KR20210039171A (ko) 메모리 시스템을 포함하는 데이터 처리 시스템에서 동작 정보를 송수신하는 방법 및 장치
TW201732797A (zh) 半導體記憶體裝置的控制器及其操作方法
CN115963982A (zh) 存储装置及电子***
KR20190109872A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20240037027A1 (en) Method and device for storing data
KR20190106005A (ko) 메모리 시스템, 그것의 동작 방법 및 전자 장치
CN112783428A (zh) 包括交换存储器的数据存储设备及其操作方法
KR102514717B1 (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
EP4258097A1 (en) Operation method of host device and operation method of storage device
US20240020262A1 (en) Storage controller and storage device comprising the same
US20240231687A9 (en) Computational storage device, method for operating the computational storage device and method for operating host device

Legal Events

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