KR20210088707A - 인터리빙된 호스트 리셋 및 다음 재초기화 동작들 - Google Patents

인터리빙된 호스트 리셋 및 다음 재초기화 동작들 Download PDF

Info

Publication number
KR20210088707A
KR20210088707A KR1020217018036A KR20217018036A KR20210088707A KR 20210088707 A KR20210088707 A KR 20210088707A KR 1020217018036 A KR1020217018036 A KR 1020217018036A KR 20217018036 A KR20217018036 A KR 20217018036A KR 20210088707 A KR20210088707 A KR 20210088707A
Authority
KR
South Korea
Prior art keywords
reset
operations
data storage
host
reset operations
Prior art date
Application number
KR1020217018036A
Other languages
English (en)
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 KR20210088707A publication Critical patent/KR20210088707A/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

본 개시내용의 실시예들은 NVMe 디바이스 리셋 및 포스트-리셋 재초기화를 병렬로 수행함으로써 이전의 접근법들의 타이밍 이슈들을 완화하는 것을 추구한다. 실시예들에서, NVMe 디바이스 리셋 및 재초기화 동작들은 논리적으로 병렬로 수행될 수 있는 프론트-엔드 및 백-엔드 동작들로 분할된다. 호스트로부터 리셋하기 위한 커맨드를 수신하면, NVMe 디바이스는 디바이스를 리셋하고, 병렬로 백-엔드 재초기화 동작들을 수행하기 위한 프론트-엔드 리셋 동작들을 수행한다. 프론트-엔드 리셋 동작들이 완료되거나, 또는 사전결정된 기간 후에, NVMe 디바이스는 디바이스 리셋은 완료되었지만, 백-엔드 동작들은 계속중임을 호스트에 보고한다. 모든 리셋 및 재초기화 동작들이 완료되면, NVMe 디바이스는 호스트로부터의 I/O 명령어들을 계속해서 수행할 수 있다.

Description

인터리빙된 호스트 리셋 및 다음 재초기화 동작들
관련 출원의 상호 참조
본 출원은 2019년 10월 14일자로 출원된 미국 출원 제16/600,816호에 대한 우선권을 주장하며, 이는 본 출원의 양수인에게 양도되고, 전체적으로 본 명세서에 참조로서 포함된다.
기술분야
본 개시내용의 실시예들은 일반적으로 데이터 저장의 관리에 관한 것으로, 더 구체적으로는 NVMe 디바이스의 리셋에 관한 것이다.
비휘발성 메모리 익스프레스(NVMe) 데이터 저장 디바이스를 포함하는 호스트 시스템의 동작 동안, 가끔 NVMe는 리셋 동작을 겪을 필요가 있다.
이러한 리셋 동작을 구성하는 2개의 메인 단계들이 있다. 제1은 디바이스 리셋 핸들링이다. 리셋 핸들링 동안, 현재 뛰어난 관리 또는 I/O 프로세스들의 중단, I/O 제출 및 완료 큐들의 삭제, NVMe 제어기의 아이들 상태로의 전환, NAND로 모든 캐시 데이터를 플러싱, 다음 동작을 대비하여 FTL 표들에 업데이트를 포함하는 다수의 동작들이 수행된다.
리셋 동작들이 완료되면, NVMe 디바이스는 재초기화되고, NVMe 디바이스 리셋의 제2 단계가 시작한다. 디바이스는 호스트에 의해 다수의 동작들 예컨대, 레지스터 상태에 대한 업데이트, NVMe 제어기의 구성, I/O 완료 및 제출 큐들의 생성, 및 이것들이 완료되면, NVMe의 정상 I/O 동작의 계속으로 재초기화된다.
그러나, 리셋 및 재초기화(re-initialization) 프로세스들은 통상적으로 직렬로 수행된다. 리셋 및/또는 재초기화 단계들이 얼마나 오래 걸릴지 알려져 있지 않기 때문에, 전체 프로세스가 얼마나 오래 걸릴지 알 수 없다. 이 시간이 알려지지 않았기 때문에, 재초기화가 후속하는 NVMe 리셋 프로세스는 호스트 시스템의 표준 기반 예상들을 충족하지 않을 수 있다. 이러한 표준들은 NVMe, PCIe, 및/또는 메모리 하드웨어의 활용을 위한 기타 표준들을 포함할 수 있다.
시간의 관점에서 더 예측가능하고 표준에 부합하는 방식으로 NVMe 디바이스를 리셋하기 위한 시스템 및 방법이 필요하다.
본 개시내용의 실시예들은 NVMe, PCIe, 또는 다른 디바이스 리셋 및 포스트-리셋 재초기화를 병렬로 수행함으로써 이전의 접근법들의 타이밍 이슈들을 완화하는 것을 추구한다. 실시예들에서, NVMe 디바이스 리셋 및 재초기화 동작들은 논리적으로 병렬로 수행될 수 있는 프론트-엔드 및 백-엔드 동작들로 분할된다. 호스트로부터 리셋하기 위한 커맨드를 수신하면, NVMe 디바이스는 디바이스를 리셋하고, 병렬로 백-엔드 재초기화 동작들을 수행하기 위한 프론트-엔드 리셋 동작들을 수행한다. 프론트-엔드 리셋 동작들이 완료되거나, 또는 사전결정된 기간 후에, NVMe 디바이스는 디바이스 리셋은 완료되었고, 백-엔드 동작들은 계속중임을 호스트에 보고한다. 모든 리셋 및 재초기화 동작들이 완료되면, NVMe 디바이스는 호스트로부터의 I/O 명령어들을 계속해서 수행할 수 있다.
일 실시예에서, 데이터 저장 디바이스가 개시된다. 실시예들에서, 데이터 저장 디바이스는, 프로세서에 의해 실행 시, 제어기로 하여금 데이터 저장 디바이스를 리셋하는 방법을 수행하게 하는 명령어들을 포함하는 제어기를 포함할 수 있다. 실시예들에서, 방법은 프론트-엔드 리셋 태스크들의 세트를 백-엔드 리셋 태스크들의 세트로부터 논리적으로 분리하는 단계, 호스트 시스템으로부터 리셋 커맨드를 수신하는 단계, 리셋 커맨드의 수신 시 프론트-엔드 리셋 태스크들의 세트 및 백-엔드 리셋 태스크들의 세트를 병렬로 수행하는 단계를 포함한다. 방법은 프론트-엔드 리셋 태스크들의 세트의 완료 시 호스트 시스템에 리셋 완료 신호를 전송하는 단계, 및 저장 디바이스가 호스트 시스템으로부터 커맨드를 수신하는 상태에 있음을 나타내는 저장 디바이스 준비 신호를 호스트 시스템에 전송하는 단계를 추가로 포함할 수 있다. 실시예들에서, 방법은 호스트 시스템으로부터 커맨드를 수신하는 단계 및 백-엔드 리셋 태스크들의 세트가 완료되면 커맨드를 실행하는 단계를 추가로 포함할 수 있다.
다른 실시예에서, 데이터 저장 시스템이 개시된다. 데이터 저장 시스템은, 실시예들에서, 호스트로부터 리셋 명령어들을 수신하도록 구성된 인터페이스, 프론트-엔드 리셋 동작들을 수행하도록 구성된 프론트-엔드 모듈, 및 백-엔드 리셋 동작들을 수행하도록 구성된 백-엔드 모듈을 포함한다. 이 시스템은 백-엔드 모듈로부터 프론트-엔드 모듈을 논리적으로 분리하도록 구성된 리셋 핸들러 모듈을 추가로 포함할 수 있고, 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들은 병렬로 수행되고, 리셋 핸들러 모듈은 프론트-엔드 동작들의 완료 시 리셋 동작들이 완료되었음을 호스트와 통신하도록 구성된다.
다른 실시예에서, 데이터 저장 시스템을 리셋하기 위한 컴퓨터 명령어들을 실행하기 위한 프로세서를 포함하는 제어기를 포함하는 데이터 저장 시스템이 개시된다. 실시예들에서, 제어기는 프론트-엔드 리셋 동작들을 수행하도록 구성된 프론트-엔드 모듈, 백-엔드 리셋 동작들을 수행하도록 구성된 백-엔드 모듈, 및 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들이 병렬로 수행되도록 백-엔드 리셋 동작들로부터 프론트-엔드 리셋 동작들을 논리적으로 분리하기 위한 수단을 포함할 수 있다.
상기에 언급된 본 발명의 특징들이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 발명의 보다 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 이들 실시예 중 일부가 첨부 도면에 예시되어 있다. 그러나, 첨부 도면은 단지 본 발명의 전형적인 실시예들을 도시하는 것이므로 본 발명의 범주를 제한하는 것으로 간주되지 않아야 한다는 것에 유의해야 하는데, 이는 본 발명이 다른 균등하게 유효한 실시예들을 허용할 수 있기 때문이다.
도 1은 하나 이상의 실시예들에 따른 NVMe 디바이스를 도시한다.
도 2는 하나 이상의 실시예들에 따른 인터리빙된 NVMe 리셋 및 재초기화를 설명하는 흐름도를 도시한다.
도 3은 하나 이상의 실시예들에 따른 NVMe 디바이스의 인터리빙된 리셋 및 재초기화를 위한 예시적인 프로세싱 시스템을 도시한다.
도 4는 개시된 실시예들에 따른 예시적인 타이밍 다이어그램을 도시한다.
이해를 촉진하기 위해, 도면들에 공통인 동일한 요소들을 지시하기 위해, 가능한 경우, 동일한 도면 부호들이 사용되었다. 일 실시예에 개시된 요소들이 구체적인 언급 없이도 다른 실시예들에서 유익하게 이용될 수 있다는 것이 고려된다.
하기에서, 본 발명의 실시예들을 참조한다. 그러나, 본 발명은 설명된 특정 실시예들로 제한되지 않는다는 것이 이해되어야 한다. 대신에, 하기의 특징들 및 요소들의 임의의 조합이, 상이한 실시예들과 관련되든지 또는 그렇지 않든지 간에, 본 발명을 구현하고 실시하기 위해 고려된다. 게다가, 본 발명의 실시예가 다른 가능한 해법들에 비해 그리고/또는 종래 기술에 비해 이점을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 발명의 제한이 아니다. 따라서, 하기의 태양들, 특징들, 실시예들, 및 이점들은 단지 예시적인 것이며, 청구범위(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구범위들의 요소 또는 제한으로 간주되지 않는다. 마찬가지로, "본 발명"에 대한 언급은 본 명세서에 개시되는 임의의 발명의 주제의 일반화로서 해석되어서는 안되며, 청구범위(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구범위의 요소 또는 제한인 것으로 간주되어서는 안된다.
본 개시내용의 실시예들은 NVMe 디바이스 리셋 및 포스트-리셋 재초기화를 병렬로 수행함으로써 이전의 접근법들의 타이밍 이슈들을 완화하는 것을 추구한다. 실시예들에서, NVMe 디바이스 리셋 및 재초기화 동작들은 논리적으로 분할된다. 리셋 동작들은 프론트-엔드 및 백-엔드 동작들로 분할되고, 백-엔드 리셋 동작들은 재초기화 동작들과 병렬로 수행된다. 호스트로부터 리셋하기 위한 커맨드를 수신하면, NVMe 디바이스는 디바이스를 리셋하기 위한 프론트-엔드 리셋 동작들을 수행한다. 프론트-엔드 리셋 동작들이 완료되거나, 또는 사전결정된 기간 후에, NVMe 디바이스는 디바이스 리셋은 완료되었고, 디바이스 재초기화 및 백-엔드 동작들은 계속중임을 호스트에 보고한다. 모든 리셋 및 재초기화 동작들이 완료되면, NVMe 디바이스는 호스트로부터의 I/O 명령어들을 계속해서 수행할 수 있다.
도 1은 예시적인 NVMe 디바이스(100)를 도시한다. NVMe 디바이스(100)는 임의의 유형의 비휘발성 메모리 저장 디바이스일 수 있으나, 그러나 본 명세서에 개시된 실시예들은 다른 유형들의 데이터 저장 디바이스들에 적용가능할 수 있다. NVMe 디바이스(100)에 적합한 수단들은 솔리드-스테이트 드라이브(SSD)들을 포함하고, 비휘발성 및/또는 휘발성 메모리를 활용하는 기타 저장 디바이스들을 포함할 수 있다.
NVMe 디바이스(100)는 실시예들에 따른 NVMe 디바이스 제어기(105)를 포함한다. NVMe 디바이스 제어기(105)는 리셋 핸들러(110)를 포함한다. 리셋 핸들러(110)는 리셋 핸들러 프로세서(111) 및 NVMe 디바이스 제어기(105)를 위한 리셋 동작들을 관리할 수 있는 명령어들을 포함한다. 리셋 동작들의 관리에 적합한 수단들은 하드웨어, 펌웨어, 소프트웨어, 또는 리셋 핸들러(110)에 의해 판독될 수 있는 명령어들을 저장할 수있는 기타 매체로 구현될 수 있다. 리셋 핸들러(110)는 일부 실시예들에서 호스트(130)에 리셋 완료를 보고하기 위한 시간을 평가하기 위한 리셋 핸들러 평가(112)를 추가로 포함한다.
리셋 핸들러(110)는 프론트-엔드(115) 및 백-엔드(120)와 통신한다. 프론트-엔드(115) 및 백-엔드(120)의 동작들을 제어하는 것에 더하여, 리셋 핸들러(110)는 이 컴포넌트들의 각각의 기능을 기능적으로 및/또는 논리적으로 분리하는 역할을 한다. 아래 논의되는 바와 같이, 프론트-엔드(115)는 리셋 동작들뿐만 아니라 디바이스 재초기화 동작들을 수행하도록 구성된다. 실시예들에서의 리셋 핸들러(110)는 프론트-엔드(115)의 이 기능들도 논리적으로 분리하도록 구성된다. 실시예들에서의 논리적 분리는 NVMe 디바이스(100)의 아키텍처 레벨에서 수행될 수 있다.
프론트-엔드(115)는 프론트-엔드 프로세서(116)뿐만 아니라 NVMe 레지스터들(117)과 같은 다수의 레지스터들을 포함하고, 일부 실시예들에서 PCI 구성 공간(118)을 포함할 수 있다. 프론트-엔드(115)는 PCIe, PHY, MAC, NVMe와 같은 호스트(130), 및 프론트-엔드 프로세서(116)와 같은 프로세서들과의 상호작용을 담당하는 컴포넌트들을 포함한다. 프론트-엔드(115)는, 현재 뛰어난 관리 또는 I/O 프로세스들의 중단, I/O 제출 및 완료 큐들의 삭제, NVMe 제어기의 아이들 상태로의 전환, NAND로 모든 캐시 데이터를 플러싱, 다음 동작을 대비하여 FTL 표들에 업데이트, 내부 데이터베이스 표들(예컨대 충돌 표)을 클린업, 모든 상태 및 구성 레지스터들을 리셋, 데이터 경로를 클리닝 등 포함하는 다수의 리셋 동작들을 수행하도록 구성될 수 있다. 실시예들에서, 프론트-엔드(115)는 NVMe 디바이스(100)를 재초기화하도록 구성된다. 실시예들에서의 재초기화는 NVMe 디바이스(100)에 결합된 호스트에 대한 링크를 재설정, PCIe 계수 및 초기화, NVMe 레지스터 재초기화, NVMe 큐들의 재생성, 및 MSI-X 표 초기화를 포함하고, 이에 한정되지 않는다.
백-엔드(120)는 백-엔드 프로세서(121), 및 DMA(122)와 같은 메모리들과의 상호작용들을 담당하는 모듈들을 통합하는 컴포넌트들 뿐만 아니라 에러 정정(123)과 같은 데이터 완결성을 보장하는 컴포넌트들을 포함한다. 실시예들에서 백-엔드(120)는 백-엔드 리셋 동작들 동안 액세스될 수 있는 하나 이상의 NAND들 및 하나 이상의 메모리들(예컨대 DDR 메모리)에 대한 접속부들을 포함한다. 백-엔드(120)는 모든 캐시 데이터를 NAND에 플러싱하고, NAND 내의 표를 업데이트하고, 내부 데이터베이스들을 클리닝하고, 모든 상태 및 구성 레지스터들을 리셋하는 것과 같은 리셋 동작들, 및 기타 백그라운드 동작들을 수행하도록 구성된다.
호스트(130)는 I/O 동작들의 실행에서 NVMe 디바이스 제어기(105)에 의해 제어되는 NVMe 디바이스(100)를 활용한다. 호스트(130)는 NVMe 디바이스(100)를 이용할 수 있는 임의의 유형의 연산 시스템일 수 있다. 호스트에 적합한 수단들은 휴대용 연산 디바이스, 데스크톱/워크스테이션 컴퓨터, 분산 연산 시스템, 가상화된 연산 시스템, 또는 NVMe 디바이스(100)를 이용할 수 있는 임의의 유형의 연산 시스템을 포함한다.
리셋 커맨드를 수신하면, 일부 실시예들에서 NVMe 디바이스 제어기(105)는 리셋 핸들러(110)의 리셋 핸들러 평가(112)를 통해, 리셋이 완료되고 정상적인 I/O 동작들이 계속될 수 있을지에 대하여 호스트(130)에 통지할 시기를 평가한다. 호스트(130)의 통지의 타이밍에 대한 평가에 적합한 수단들은 디바이스 내의 보류중인 커맨드들의 수, 현재 캐시 버퍼 사이즈, NAND 상태, 보류중인 백그라운드 동작들, 리셋 동안 프론트-엔드(115)에서 완료되어야 하는 NAND로 플러싱되는 FTL 표 내의 더티 엔트리들(dirty entries) 등, 뿐만 아니라 리셋 및 재초기화를 위한 추정 시간과 같은 파라미터들에 기초한다. 호스트에 통지할 시간은 재초기화 동작들의 개시 및 백-엔드(120)가 그것의 리셋 동작들을 완료하기 전의 시간에 결정될 수 있음을 유의하여야 한다.
다른 실시예들에서 리셋 핸들러(110)는 호스트(130)에 통지할 특정 시간을 평가하지 않고, 대신 재초기화 동작들의 시작 및 백-엔드(120) 동작들의 완료 이전에, 프론트-엔드(115)가 그것의 리셋 동작들을 완료하면 리셋이 완료되었음을 호스트(130)에 통지하기 위한 신호를 생성한다.
NVMe 디바이스 제어기(105)는 프론트-엔드 프로세서(116), 백-엔드 프로세서(121), 및 제어기 프로세서(140)와 같은, 다수의 개별 프로세서들을 갖는 것으로 도 1에 도시된다. 그러나, 이들 프로세서의 하나 이상에 적합한 수단들은 단일 프로세서, 다수의 프로세서들, 또는 NVMe 디바이스 제어기(105) 또는 NVMe 디바이스(100)로부터 원격으로 위치된 하나 이상의 프로세서들일 수 있다.
도 2는 본 개시내용의 실시예들에 따른 인터리빙된 NVMe 리셋 및 재초기화를 설명하는 흐름도(200)를 도시한다. 205에서, 리셋 커맨드가 발행된다. 일부 실시예들에서, 호스트(130), 또는 NVMe 디바이스(100) 외부의 다른 디바이스는 리셋 커맨드를 발행할 수 있는 반면, 다른 실시예들에서 NVMe 디바이스 제어기(105)는 리셋 커맨드를 발행할 수 있다.
210에서 리셋 핸들링 시간 평가는 완료되어야 하는 프론트-엔드(115) 내의 보류중인 활동들, 및 리셋 및 재초기화에 필요한 추정된 타이밍에 기초하여 호스트 리셋 완료 통지 시간을 결정하기 위하여 수행된다. 병렬로 NVMe 디바이스(100)가 재초기화를 시작하고 계속해서 백-엔드 리셋 동작들을 처리하는 동안, 이 평가의 결과는 NVMe 디바이스 제어기(105)에 의해 리셋이 완료되었음을 호스트(130)에 보고할 시기를 결정하는 데 사용될 수 있다. 대안적인 실시예에서, 리셋 핸들링 시간 평가는 수행되지 않고, 대신 재초기화 동작들이 개시되기 전에, 실시예들에서, 백-엔드(120) 리셋 동작들의 완료 전에, 프론트-엔드(115)가 그것의 리셋 동작들을 완료하면, 리셋 완료 신호가 호스트(130)에 제공된다.
215에서, 프론트-엔드(115)는, 재초기화 동작들로부터 논리적으로 격리되고, 백-엔드(120)로부터 기능적으로 격리되는 그것의 리셋 핸들링 동작들을 가지며, 프론트-엔드 리셋 핸들링 동작들을 수행한다.
220에서, 그리고 단계(215)와 병렬로, 백-엔드(120)는, 기능적으로 프론트-엔드(115)와 격리되어, 백-엔드 리셋 핸들링 동작들을 수행한다.
225에서, 프론트-엔드(115)가 프론트-엔드 리셋 핸들링 동작들을 완료했는지 여부에 대한 결정이 이루어진다. 그렇지 않은 경우, '아니오' 경로를 따라서 프론트-엔드(115)가 프론트-엔드 리셋 핸들링 동작들을 완료하게 한다. 프론트-엔드 리셋 핸들링 동작들이 완료되는 경우, 프로세스는 230으로 계속된다. 실시예들에서, 이는 백-엔드(120)가 백-엔드 리셋 핸들링 동작들을 수행하는 것과 병렬로 일어난다.
230에서, 리셋 평가에 기초하여 호스트(130)에 대한 보고가 이루어진다. NVMe 디바이스 제어기(105)는, 호스트 리셋 통지 시간에 도달하면, 리셋이 완료되었음을 나타내는 신호를 호스트에 송신한다. 이는 백-엔드 리셋 동작들이 완료되지 않은 경우에도 일어날 것이고 프론트-엔드(115) 상의 재초기화 동작들의 시작을 신호보낼 것이고; 이 동작들은 병렬로 계속될 것이다.
호스트 리셋 통지 시간이 결정되지 않은 대안적인 실시예에서, NVMe 디바이스 제어기(105)는 프론트-엔드(115) 리셋 동작들이 완료되면 리셋이 완료되었다는 신호를 호스트에 송신할 것이다. 이는 백-엔드 리셋 동작들이 완료되었는지에 상관없이 일어나고, 재초기화 동작들을 개시할 것이다.
235에서 호스트(130)는 NVMe 디바이스(100)를 재초기화한다. 이는 단계(220)의 백-엔드 리셋 동작들 및 230에서 개시된 재초기화 동작들과 병렬로 일어날 수 있다.
240에서, 호스트는 I/O 커맨드가 보류중임을 나타내는 I/O 제출 큐에 도어벨 기록을 발행한다.
245에서 NVMe 제어기(105)는 단계(220)의 백-엔드 리셋 동작들이 완료되는지 결정한다. 그렇지 않은 경우, 백-엔드 리셋 동작들은 계속될 것이고 커맨드들은 페치되지 않을 것이다. 백-엔드 리셋 동작들 및 재초기화가 완료되는 경우, 프로세스는 호스트(130)로부터의 커맨드들이 페치되고 처리될 수 있는 단계(250)로 진행한다. 대안적인 실시예에서, 커맨드들은 백-엔드 리셋 동작들를 완료하기 전에 호스트(130)로부터 페치될 수 있다. 이러한 실시예에서, 프론트-엔드(115)는 재초기화를 포함하는 모든 리셋 동작들이 완료되기 전에는 어떠한 통지도 백-엔드(120)에 전송하지 않을 것이다.
250에서, NVMe 디바이스(100)는 실행을 위해 호스트(130)로부터 커맨드들을 페치한다.
도 3은 개시된 실시예들이 통합될 수 있고 도 1 및 도 2에 관하여 본 명세서에 기재된 방법들을 수행할 수 있는 예시적인 호스트 시스템을 도시한다.
호스트 시스템(300)은 데이터 버스(304)에 연결된 중앙 처리 유닛(CPU)(302)을 포함한다. CPU(302)는, 예를 들어 도 1 및 도 2에 관하여 본 명세서에 기재된 방법들을 수행하기 위한 NVMe 모듈(350)을 포함할 수 있는, 예를 들어, 메모리(306) 또는 저장장치(308)에 저장될 수 있는, 컴퓨터-실행가능 명령어들을 처리할 수 있다. 실시예들에서, 호스트 시스템(300)은 전술된 호스트(130)와 유사할 수 있다.
메모리(306)에 적합한 수단들은 단일 물리적 메모리, 다수의 메모리들 뿐만 아니라 호스트 시스템(300)으로부터 원격으로 위치되고 네트워크를 통해 액세스되는 하나 이상의 메모리들일 수 있다. 유사하게 저장장치(308)에 적합한 수단들은 하나 이상의 물리적 저장 디바이스들이 활용될 수 있고, 하나 이상의 물리적 저장 디바이스들이 호스트 시스템(300)으로부터 원격으로 위치되고 네트워크를 통해 액세스될 수 있다. 저장장치(308)를 포함하는 하나의 이러한 물리적 저장 디바이스는, 일부 실시예들에서, NVMe 모듈(350)이다.
실시예들에서 CPU(302)에 적합한 수단들은 단일 CPU, 다중 CPU, 다중 코어들을 갖는 단일 CPU, 호스트 시스템(300)으로부터 원격으로 위치한 하나 이상의 CPU, 하나 이상의 가상화된 CPU, 또는 컴퓨터-판독가능 명령어들을 실행할 수 있는 처리 아키텍처의 기타 형태들일 수 있다.
실시예들에서, 호스트 시스템(300)은 추가로, 호스트 시스템(300)이 예를 들어, 키보드, 디스플레이, 마우스 디바이스들, 펜, 및 호스트 시스템(300)과의 상호작용을 허용하는 다른 디바이스들과 같은 I/O 디바이스들(310)과 통신하게하는, 입력/출력(I/O) 디바이스(들)(310) 및 I/O 디바이스 인터페이스(들)(312)를 포함한다. 호스트 시스템(300)은 물리적 및 무선 접속부들을 통해 외부 I/O 디바이스들과 연결될 수 있음에 유의한다.
호스트 시스템(300)은 외부 네트워크(316) 및 부수적으로, 외부 컴퓨팅 디바이스들, 컴포넌트들, 및 서비스들에 대한 액세스를 호스트 시스템(300)에 제공하기 위한 네트워크 인터페이스(314)를 추가로 포함할 수 있다.
호스트 시스템(300)은 NVMe 모듈(350)을 추가로 포함하고, 이는 이 예에서 도 1 및 도 2에 관련하여 기재된 동작들을 수행하기 위한 NVMe 제어기 모듈(355) 및 NAND 모듈(353), 리셋 핸들링 모듈(360), 리셋 핸들링 평가 모듈(363), 백-엔드 모듈(370)로부터 기능적으로 및/또는 논리적으로 분리된 프론트-엔드 모듈(365)을 포함한다.
도 4는 본 개시내용의 실시예들에 따른 타이밍 다이어그램(400)을 도시한다.
410에서 NVMe 디바이스(100)에 리셋이 발행된다. 리셋(410)은 호스트(130)에 의해, 또는 NVMe 디바이스(100) 자체에 의해 발행될 수 있다.
420에서, 디바이스 리셋 핸들링은 리셋 핸들러(110)에 의해 개시되어, 프론트-엔드(115), 백-엔드(120)의 리셋 동작들, 및 재초기화를 논리적으로 분할한다. 430에서, 프론트-엔드 리셋 핸들링이 개시되고, 완료되면, 440에서 리셋 핸들러(110)는 호스트(130)에 리셋 완료의 발행을 제공한다.
450에서 NVMe 디바이스(100) 재초기화는, 백-엔드 리셋 핸들링(460)과 병렬로 시작된다.
호스트로부터의 I/O 커맨드 페칭(470)은 백-엔드 리셋 핸들링(460) 및 디바이스 재초기화(450) 중 어느 하나 또는 둘 모두의 완료 전에 임의의 시간에 일어날 수 있다. 이들 중 어느 하나의 완료 전에 페치된 커맨드들은 프론트-엔드(115)로 하여금 백-엔드 리셋 핸들링(460) 및 디바이스 재초기화(450)가 완료될 때까지 커맨드들를 유지하게 할 것이다.
이전의 설명은 당업자가 본 명세서에 기술된 다양한 실시예들을 실시할 수 있게 하기 위해 제공된다. 본 명세서에 논의된 예들은 청구범위에 기재된 범주, 적용가능성, 또는 실시예들을 제한하지 않는다. 이러한 실시예들에 대한 다양한 수정들이 당업자들에게 용이하게 명백할 것이며, 본 명세서에서 정의된 일반 원리들은 다른 실시예들에도 적용될 수 있다. 예를 들어, 본 개시내용의 범주로부터 벗어남 없이 논의된 요소들의 기능 및 배열에 변경이 이루어질 수 있다. 다양한 예들이 생략, 대체되거나, 또는 다양한 절차들 또는 컴포넌트들을 적절하게 추가할 수 있다. 예를 들어, 기재된 방법들은 기재된 것과 상이한 순서로 수행될 수 있고, 다양한 단계들이 추가, 생략, 또는 조합될 수 있다. 또한, 일부 예들에 관하여 기재된 특징부들은 일부 다른 예들에서 조합될 수 있다. 예를 들어, 본 명세서에 기재된 임의의 수의 태양을 사용하여 장치가 구현될 수 있거나 방법이 실시될 수 있다. 또한, 본 개시내용의 범주는 다른 구조, 기능성, 또는 본 명세서에 기술된 개시내용의 다양한 양태들에 추가적으로, 또는 그 이외의 구조 및 기능성을 이용하여 실시되는 이러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 기재된 개시내용의 임의의 양태가 청구범위의 하나 이상의 구성요소들에 의해 구현될 수 있음이 이해되어야 한다.
본 명세서에 사용된 바와 같이, 소정 목록의 항목들 "중 적어도 하나"를 지칭하는 구문은 단일 구성원들을 포함하는, 그러한 항목들의 임의의 조합을 지칭한다. 예를 들어, "a, b, 또는 c 중 적어도 하나"는 a, b, c, a-b, a-c, b-c, 및 a-b-c 뿐만 아니라 동일한 구성요소의 다수의 임의의 조합(예컨대, a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, 및 c-c-c 또는 a, b, 및 c의 임의의 다른 순서)을 커버하도록 의도된다.
본 명세서에서 사용되는 바와 같이, 용어 "결정"은 매우 다양한 액션들을 포함한다. 예를 들어, "결정"은 계산, 컴퓨팅, 처리, 도출, 조사, 검색(예를 들어, 표, 데이터베이스 또는 다른 데이터 구조에서의 검색), 확인 등을 포함할 수 있다. 또한, "결정"은 수신(예를 들어, 정보를 수신), 액세스(예를 들어, 메모리 내의 데이터에 액세스) 등을 포함할 수 있다. 또한, "결정"은 해결, 선택, 선정, 확립 등을 포함할 수 있다.
본 명세서에 개시된 방법들은 방법들을 달성하기 위한 하나 이상의 단계들 또는 행동들을 포함한다. 방법 단계들 및/또는 행동들은 청구범위들의 범주로부터 벗어남이 없이 서로 교환될 수 있다. 다시 말해서, 단계들 또는 행동들의 구체적인 순서가 명시되지 않는 한, 구체적인 단계들 및/또는 행동들의 순서 및/또는 사용은 청구범위들의 범주를 벗어남이 없이 수정될 수 있다. 또한, 위에 기재된 방법들의 다양한 동작들은 대응하는 기능들을 수행할 수 있는 임의의 적합한 수단들에 의해 수행될 수 있다. 수단은 주문형 집적 회로(ASIC), 또는 프로세서를 포함하지만, 회로에 한정되지 않는, 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)을 포함할 수 있다. 일반적으로, 도면들에 도시된 동작들이 있는 경우, 이 동작들은 유사한 도면부호를 갖는 대응하는 상대 기능식(means-plus-function) 컴포넌트들을 가질 수 있다.
본 개시내용과 연관되어 기재된 다양한 예시적인 로직 블록들, 모듈들 및 회로들이 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 기타 프로그램가능 로직 디바이스(PLD), 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 본 명세서에 기재된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안예에서, 프로세서는 임의의 구매가능한 프로세서, 제어기, 마이크로제어기, 또는 스테이트 머신(state machine)일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 연동하는 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수 있다.
프로세싱 시스템은 버스 아키텍처로 구현될 수 있다. 버스는 처리 시스템의 특정 응용 및 전체 설계 제약들에 따라 임의의 수의 상호접속 버스 및 브리지를 포함할 수 있다. 버스는 특히 프로세서, 기계-판독가능 매체, 및 입력/출력 디바이스들을 포함하는 다양한 회로들을 서로 링크시킬 수 있다. 사용자 인터페이스(예컨대, 키패드, 디스플레이, 마우스, 조이스틱 등)는 또한 버스에 연결될 수 있고. 버스는 타이밍 소스들, 주변장치, 전압 레귤레이터, 전력 관리 회로들, 및 해당 기술분야에서 잘 알려져서, 추가로 더 설명되지 않을 기타 회로 요소들과 같은 다양한 기타 회로들을 또한 링크시킬 수 있다. 프로세서는 하나 이상의 범용 및/또는 특수-목적 프로세서들로 구현될 수 있다. 예들은 마이크로프로세서들, 마이크로제어기들, DSP 프로세서들, 소프트웨어를 실행할 수 있는 기타 회로부를 포함한다. 통상의 기술자는 특정 응용예 및 전체 시스템에 부과된 전체 설계 제약들에 따라 프로세싱 시스템에 대하여 기재된 기능성을 가장 잘 구현할 방법을 인식할 것이다.
소프트웨어로 구현되는 경우, 기능들은 컴퓨터-판독가능 매체 상의 하나 이상의 명령어들 또는 코드를 통해 저장되거나 또는 전송될 수 있다. 소프트웨어는 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 설명 언어, 또는 다른 방식으로 지칭되든, 명령어들, 데이터, 또는 이들의 임의의 조합을 의미하도록 광범위하게 해석될 것이다. 컴퓨터-판독가능 매체는 컴퓨터 저장 매체, 및 한 곳에서 다른 곳으로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체와 같은 통신 매체 둘 모두를 포함한다. 프로세서는 컴퓨터-판독가능 저장 매체 상에 저장된 소프트웨어 모듈들의 실행을 포함하는, 버스 및 일반 프로세싱을 관리하는 것을 담당할 수 있다. 컴퓨터-판독가능 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고, 그것에 정보를 기록할 수 있도록, 프로세서에 결합될 수 있다. 대안예에서, 저장 매체는 프로세서에 내장될 수 있다. 예를 들어, 컴퓨터-판독가능 매체는 전송 라인, 데이터에 의해 변조된 반송파, 및/또는 무선 노드로부터 분리된 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 매체를 포함할 수 있고, 이들 모두는 버스 인터페이스를 통해 프로세서에 의해 액세스될 수 있다. 대안적으로, 또는 추가적으로, 컴퓨터-판독가능 매체, 또는 이들의 임의의 부분은 프로세서에 통합될 수 있고, 예컨대 이 경우는 캐시 및/또는 일반 레지스터 파일들을 갖는 것일 수 있다. 기계-판독가능 저장 매체의 예들은, 예를 들어, RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), PROM(Programmable Read-Only Memory), EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 레지스터들, 자기 디스크들, 광학 디스크들, 하드 드라이브, 또는 임의의 기타 적합한 저장 매체, 또는 이들의 임의의 조합을 포함할 수 있다. 기계-판독가능 매체는 컴퓨터-프로그램 제품으로 구현될 수 있다.
소프트웨어 모듈은 단일 명령어, 또는 다수의 명령어들을 포함할 수 있고, 상이한 프로그램들 중에서 여러 상이한 코드 세그먼트들에 걸쳐, 그리고 다수의 저장 매체에 걸쳐 분산될 수 있다. 컴퓨터-판독가능 매체는 다수의 소프트웨어 모듈들을 포함할 수 있다. 소프트웨어 모듈들은, 프로세서와 같은 장치에 의해 실행될 때, 프로세싱 시스템으로 하여금 다양한 기능들을 수행하게 하는 명령어들을 포함한다. 소프트웨어 모듈들은 전송 모듈 및 수신 모듈을 포함할 수 있다. 각각의 소프트웨어 모듈은 단일 저장 디바이스 내에 존재하거나 또는 다수의 저장 디바이스들에 걸쳐 분산될 수 있다. 예를 들어, 소프트웨어 모듈은 트리거링 이벤트가 발생하면 하드 드라이브로부터 RAM으로 로딩될 수 있다. 소프트웨어 모듈의 실행 동안, 프로세서는 액세스 속도를 증가시키기 위하여 명령어들 중 일부를 캐시로 로딩할 수 있다. 이어서 하나 이상의 캐시 라인들은 프로세서에 의한 실행을 위해 일반 레지스터 파일로 로딩될 수 있다. 소프트웨어 모듈의 기능성을 언급할 때, 이러한 기능성은 소프트웨어 모듈로부터의 명령어들로부터 실행할 때 프로세서에 의해 구현됨이 이해될 것이다.
다음의 청구범위들은 본 명세서에 도시된 실시예들에 한정되도록 의도되지 않으며, 청구범위들의 언어와 일치하는 전체 범주에 부합되어야 한다. 청구범위 내에서, 단수의 요소에 대한 언급은 구체적으로 그렇게 진술되지 않는 한 "유일함"을 의미하도록 의도되지 않으며, 오히려 "하나 이상"을 의미하도록 의도된다. 달리 구체적으로 언급되지 않는 한, 용어 "일부"는 하나 이상을 지칭한다. 청구범위 구성요소도, 그 구성요소가 문구 "~하기 위한 수단"을 사용하여 명시적으로 인용되지 않는 한, 또는 방법 청구범위의 경우, 그 구성요소가 문구 "~하기 위한 단계"를 사용하여 인용되지 않는 한, 35 U.S.C. §112(f) 규정 하에서 해석되어서는 안된다. 당업자에게 알려져 있거나 나중에 알려지게 될 본 개시내용 전반에 걸쳐 기술된 다양한 태양들의 요소들에 대한 모든 구조적 및 기능적 등가물들은 명백히 본 명세서에 참고로 포함되며, 청구범위에 의해 포괄되도록 의도된다. 더욱이, 본 명세서에 개시된 어떠한 것도, 그러한 개시내용이 청구범위에서 명시적으로 인용되는지 여부에 관계없이 공중에게 전용되는 것으로 의도되지 않는다.
본 명세서에 개시된 시스템들 및 방법들에 따라, NVMe 디바이스의 리셋의 타이밍은 더 예측가능하게 되어, 호스트에서의 동작들이 효율적인 방식으로 진행되도록 한다.
일 실시예에서, 데이터 저장 디바이스가 개시된다. 실시예들에서, 데이터 저장 디바이스는, 프로세서에 의해 실행 시, 제어기로 하여금 데이터 저장 디바이스를 리셋하는 방법을 수행하게 하는 명령어들을 포함하는 제어기를 포함할 수 있다. 실시예들에서, 방법은 프론트-엔드 리셋 태스크들의 세트를 백-엔드 리셋 태스크들의 세트로부터 논리적으로 분리하는 단계, 호스트 시스템으로부터 리셋 커맨드를 수신하는 단계, 리셋 커맨드의 수신 시 프론트-엔드 리셋 태스크들의 세트 및 백-엔드 리셋 태스크들의 세트를 병렬로 수행하는 단계를 포함한다. 방법은 프론트-엔드 리셋 태스크들의 세트의 완료 시 호스트 시스템에 리셋 완료 신호를 전송하는 단계, 및 저장 디바이스가 호스트 시스템으로부터 커맨드를 수신하는 상태에 있음을 나타내는 저장 디바이스 준비 신호를 호스트 시스템에 전송하는 단계를 추가로 포함할 수 있다. 실시예들에서, 방법은 호스트 시스템으로부터 커맨드를 수신하는 단계 및 백-엔드 리셋 태스크들의 세트가 완료되면 커맨드를 실행하는 단계를 추가로 포함할 수 있다.
다른 실시예에서, 데이터 저장 시스템이 개시된다. 데이터 저장 시스템은, 실시예들에서, 호스트로부터 리셋 명령어들을 수신하도록 구성된 인터페이스, 프론트-엔드 리셋 동작들을 수행하도록 구성된 프론트-엔드 모듈, 및 백-엔드 리셋 동작들을 수행하도록 구성된 백-엔드 모듈을 포함한다. 이 시스템은 백-엔드 모듈로부터 프론트-엔드 모듈을 논리적으로 분리하도록 구성된 리셋 핸들러 모듈을 추가로 포함할 수 있고, 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들은 병렬로 수행되고, 리셋 핸들러 모듈은 프론트-엔드 동작들의 완료 시 리셋 동작들이 완료되었음을 호스트와 통신하도록 구성된다.
다른 실시예에서, 데이터 저장 시스템을 리셋하기 위한 컴퓨터 명령어들을 실행하기 위한 프로세서를 포함하는 제어기를 포함하는 데이터 저장 시스템이 개시된다. 실시예들에서, 제어기는 프론트-엔드 리셋 동작들을 수행하도록 구성된 프론트-엔드 모듈, 백-엔드 리셋 동작들을 수행하도록 구성된 백-엔드 모듈, 및 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들이 병렬로 수행되도록 백-엔드 리셋 동작들로부터 프론트-엔드 리셋 동작들을 논리적으로 분리하기 위한 수단을 포함할 수 있다.
전술한 것은 본 발명의 실시예들에 관한 것이지만, 본 발명의 다른 및 추가 실시예들이 본 발명의 기본 범주로부터 벗어남이 없이 고안될 수 있으며, 본 발명의 그 범주는 후속하는 청구범위에 의해 결정된다.

Claims (20)

  1. 데이터 저장 디바이스로서,
    프로세서에 의해 실행될 때, 상기 제어기로 하여금 상기 데이터 저장 디바이스를 리셋하는 방법을 수행하게 하는 명령어들을 포함하는 제어기를 포함하고, 상기 방법은:
    백-엔드 리셋 태스크들의 세트로부터 프론트-엔드 리셋 태스크들의 세트를 논리적으로 분리하는 단계;
    호스트 시스템으로부터 리셋 커맨드를 수신하는 단계;
    상기 리셋 커맨드의 수신 시 상기 프론트-엔드 리셋 태스크들의 세트 및 백-엔드 리셋 태스크들의 세트를 병렬로 수행하는 단계;
    상기 프론트-엔드 리셋 태스크들의 세트의 완료 시 상기 호스트 시스템에 리셋 완료 신호를 전송하는 단계;
    상기 저장 디바이스가 상기 호스트 시스템으로부터 커맨드를 수신하는 상태에 있음을 나타내는 저장 디바이스 준비 신호를 상기 호스트 시스템에 전송하는 단계;
    상기 호스트 시스템으로부터 커맨드를 수신하는 단계; 및
    상기 백-엔드 리셋 태스크들의 세트가 완료되면 상기 커맨드를 실행하는 단계를 포함하는, 데이터 저장 디바이스.
  2. 제1항에 있어서, 상기 리셋 완료 신호가 전송될 때 상기 백엔드 리셋 태스크들의 세트는 완료되지 않은, 데이터 저장 디바이스.
  3. 제1항에 있어서, 상기 호스트 시스템에 상기 리셋 신호를 전송한 후에 상기 호스트 시스템에 의한 상기 저장 디바이스의 재초기화를 추가로 포함하는, 데이터 저장 디바이스.
  4. 제1항에 있어서, 상기 저장 디바이스 준비 신호는 지연 시간 후에 전송되는, 데이터 저장 디바이스.
  5. 제4항에 있어서, 상기 지연 시간은 상기 프론트-엔드 태스크들 및 상기 백-엔드 태스크들 중 하나를 완료하는 시간을 프로세서로 추정하는 것을 포함하는, 데이터 저장 디바이스.
  6. 제5항에 있어서, 상기 지연 시간은 상기 프론트-엔드 태스크들 및 백-엔드 태스크들 둘 모두를 완료하는 시간을 프로세서로 추정하는 것을 포함하는, 데이터 저장 디바이스.
  7. 제1항에 있어서, 상기 프론트-엔드 태스크들의 세트는 레지스터를 리셋하는 것 및 큐(queue)를 리셋하는 것 중 하나를 포함하고, 상기 백-엔드 태스크들의 세트는 NAND 및 메모리 중 하나에 기록하는 것을 포함하는, 데이터 저장 디바이스.
  8. 데이터 저장 시스템으로서,
    호스트로부터 리셋 명령어들을 수신하도록 구성된 인터페이스;
    프론트-엔드 리셋 동작들을 수행하도록 구성된 프론트-엔드 모듈;
    백-엔드 리셋 동작들을 수행하도록 구성된 백-엔드 모듈; 및
    상기 백-엔드 모듈로부터 상기 프론트-엔드 모듈을 논리적으로 분리하도록 구성된 리셋 핸들러 모듈을 포함하고, 상기 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들은 병렬로 수행되고, 상기 리셋 핸들러 모듈은 프론트-엔드 리셋 동작들의 완료 시 리셋 동작들이 완료되었음을 상기 호스트와 통신하도록 구성된, 데이터 저장 시스템.
  9. 제8항에 있어서, 상기 호스트에 제공할 리셋-완료 통지 시간을 결정하도록 구성된 리셋 핸들러 평가 모듈을 추가로 포함하는, 데이터 저장 시스템.
  10. 제9항에 있어서, 상기 리셋-경쟁(compete) 통지 시간은 백-엔드 리셋 동작들을 수행하는 데 필요한 상기 시간보다 적은 것으로 결정되는, 데이터 저장 시스템.
  11. 제9항에 있어서, 상기 리셋-완료 통지 시간은 백-엔드 리셋 동작들 및 프론트-엔드 리셋 동작들을 수행하는 데 필요한 상기 시간보다 적은, 데이터 저장 시스템.
  12. 제9항에 있어서, 상기 리셋 핸들러 평가 모듈은 상기 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들 중 하나의 완료에 적어도 부분적으로 기초하여 상기 리셋-완료 통지 시간을 결정하도록 구성된, 데이터 저장 시스템.
  13. 제9항에 있어서, 상기 리셋 핸들러 평가 모듈은 상기 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들 둘 모두의 완료에 적어도 부분적으로 기초하여 상기 리셋-완료 통지 시간을 결정하도록 구성된, 데이터 저장 시스템.
  14. 제11항에 있어서, 상기 프론트-엔드 리셋 동작들 중 적어도 하나는 상기 리셋-완료 통지 시간이 상기 리셋 명령어들이 상기 호스트로부터 수신되는 시간에 상기 데이터 저장 시스템 내의 보류중인 활동들이라고 결정하는 데 사용되는, 데이터 저장 시스템.
  15. 제8항에 있어서, 상기 리셋 핸들러 모듈은 상기 백-엔드 리셋 동작들의 완료 전에 리셋 동작들이 완료되었음을 상기 호스트와 통신하는, 데이터 저장 시스템.
  16. 제15항에 있어서, 상기 데이터 저장 시스템은 상기 백-엔드 리셋 동작들의 완료 전에 상기 호스트에 대한 도어벨 액세스(doorbell access)를 제공하도록 구성된, 데이터 저장 시스템.
  17. 제16항에 있어서, 상기 데이터 저장 시스템은 백-엔드 리셋 동작들이 완료될 때까지 상기 호스트로부터 커맨드들을 페치하지 않도록 구성된, 데이터 저장 시스템.
  18. 데이터 저장 시스템으로서,
    상기 데이터 저장 시스템을 리셋하기 위한 컴퓨터 명령어들을 실행하기 위한 프로세서를 포함하는 제어기:
    프론트-엔드 리셋 동작들을 수행하도록 구성된 프론트-엔드 모듈;
    백-엔드 리셋 동작들을 수행하도록 구성된 백-엔드 모듈; 및
    상기 백-엔드 리셋 동작들로부터 상기 프론트-엔드 리셋 동작들을 논리적으로 분리하기 위한 수단을 포함하고, 상기 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들은 병렬로 실행되는, 데이터 저장 시스템.
  19. 제18항에 있어서, 상기 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들 중 적어도 하나가 완료되었음을 호스트에 통지하기 위한 수단을 추가로 포함하는, 데이터 저장 시스템.
  20. 제19항에 있어서, 상기 호스트에 통지한 후에 상기 프론트-엔드 리셋 동작들 및 백-엔드 리셋 동작들 중 하나는 완료되지 않도록 구성된, 데이터 저장 시스템.
KR1020217018036A 2019-10-14 2020-03-18 인터리빙된 호스트 리셋 및 다음 재초기화 동작들 KR20210088707A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/600,816 US10860333B1 (en) 2019-10-14 2019-10-14 Interleaved host reset and next re-initialization operations
US16/600,816 2019-10-14
PCT/US2020/023406 WO2021076179A1 (en) 2019-10-14 2020-03-18 Interleaved host reset and next re-initialization operations

Publications (1)

Publication Number Publication Date
KR20210088707A true KR20210088707A (ko) 2021-07-14

Family

ID=73653571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217018036A KR20210088707A (ko) 2019-10-14 2020-03-18 인터리빙된 호스트 리셋 및 다음 재초기화 동작들

Country Status (5)

Country Link
US (2) US10860333B1 (ko)
KR (1) KR20210088707A (ko)
CN (1) CN113196224A (ko)
DE (1) DE112020000167T5 (ko)
WO (1) WO2021076179A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561909B2 (en) * 2021-04-28 2023-01-24 Western Digital Technologies, Inc. Bandwidth allocation for storage system commands in peer-to-peer environment
US11640335B2 (en) * 2021-06-15 2023-05-02 Western Digital Technologies, Inc. Multiple function level reset management
US11977755B2 (en) * 2021-09-02 2024-05-07 Micron Technology, Inc. Firmware power up sequencing in memory sub-systems

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5495606A (en) * 1993-11-04 1996-02-27 International Business Machines Corporation System for parallel processing of complex read-only database queries using master and slave central processor complexes
US6256695B1 (en) * 1999-03-15 2001-07-03 Western Digital Corporation Disk drive method of determining SCSI bus state information after a SCSI bus reset condition
WO2002073600A1 (en) * 2001-03-14 2002-09-19 International Business Machines Corporation Method and processor system for processing of an audio signal
US7313681B2 (en) * 2003-11-20 2007-12-25 International Business Machines Corporation Apparatus, system, and method for adapter fastload
DE112004002928T5 (de) 2004-07-29 2007-08-09 Spansion LLC, Santa Clara Verfahren zum Steuern der Initialisierung eines nicht-flüchtigen Speicherbauelements und nicht-flüchtiges Speicherbauelement
US20100271378A1 (en) * 2009-04-24 2010-10-28 Yun Shon Low Rapid Activation Of A Device Having An Electrophoretic Display
US8307151B1 (en) * 2009-11-30 2012-11-06 Micron Technology, Inc. Multi-partitioning feature on e-MMC
US10360143B2 (en) * 2010-07-01 2019-07-23 Qualcomm Incorporated Parallel use of integrated non-volatile memory and main volatile memory within a mobile device
US8856482B2 (en) 2011-03-11 2014-10-07 Micron Technology, Inc. Systems, devices, memory controllers, and methods for memory initialization
US8719646B2 (en) 2012-04-30 2014-05-06 Freescale Semiconductor, Inc. Non-volatile memory (NVM) reset sequence with built-in read check
US20140223213A1 (en) 2013-02-05 2014-08-07 Kabushiki Kaisha Toshiba Memory system
CN104751889B (zh) 2013-12-26 2018-05-15 北京兆易创新科技股份有限公司 一种非易失性存储器的复位方法
KR102415385B1 (ko) 2015-07-22 2022-07-01 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 저장 장치
US20170168747A1 (en) 2015-12-11 2017-06-15 Intel Corporation Intelligent memory support for platform reset operation
US9990023B2 (en) 2016-03-28 2018-06-05 Apple Inc. Systems and methods for handling sudden power failures in solid state drives
CN108021471A (zh) * 2016-11-04 2018-05-11 三星电子株式会社 数据存储装置、数据处理系统及制造数据存储装置的方法
US11243782B2 (en) * 2016-12-14 2022-02-08 Microsoft Technology Licensing, Llc Kernel soft reset using non-volatile RAM
US10909051B2 (en) 2017-06-01 2021-02-02 Seagate Technology Llc NAND flash reset control
US10929309B2 (en) 2017-12-19 2021-02-23 Western Digital Technologies, Inc. Direct host access to storage device memory space
US10613778B2 (en) * 2018-03-21 2020-04-07 Western Digital Technologies, Inc. Dynamic host memory allocation to a memory controller

Also Published As

Publication number Publication date
US11422828B2 (en) 2022-08-23
DE112020000167T5 (de) 2021-09-16
CN113196224A (zh) 2021-07-30
US20210109765A1 (en) 2021-04-15
US10860333B1 (en) 2020-12-08
WO2021076179A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
US11422828B2 (en) Interleaved host reset and next re-initialization operations
US20170083252A1 (en) Method of managing input/output(i/o) queues by non-volatile memory express(nvme) controller
KR100708128B1 (ko) 낸드 플래시 메모리 제어 장치 및 방법
US10318454B2 (en) Interrupt processing method and interrupt controller
JP6800850B2 (ja) 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構
EP2664990A1 (en) Method and device for implementing memory migration
US20160117225A1 (en) Mobile flash storage boot partition and/or logical unit shadowing
KR101337676B1 (ko) 트랜잭션 메모리
JP2019520639A5 (ko)
EP3734466A1 (en) Apparatus, systems, and methods to detect and/or correct bit errors using an in band link over a serial peripheral interface
US20130111103A1 (en) High-speed synchronous writes to persistent storage
US9684613B2 (en) Methods and systems for reducing spurious interrupts in a data storage system
US8850129B2 (en) Memory ordered store system in a multiprocessor computer system
US11861390B1 (en) Transparent disk caching for virtual machines
CN115934389A (zh) 用于错误报告和处理的系统和方法
US7904614B1 (en) Direct memory access controller with multiple transaction functionality
US20230118408A1 (en) Fault Isolation and Recovery of CPU Cores for Failed Secondary Asymmetric Multiprocessing Instance
KR101868717B1 (ko) 비-차단 커맨드들
TW201303870A (zh) 利用快閃記憶體介面的方法及裝置
US10908987B1 (en) Handling memory errors in computing systems
TW202040361A (zh) 伺服器及錯誤事件紀錄登載功能的控制方法
CN114341811A (zh) 存储器子系统中的存储器子系统控制器的重置和重放
US10983818B2 (en) Method and system for preventing execution of a dirty virtual machine on an undesirable host server in a virtualization cluster environment
JP5843804B2 (ja) 演算装置およびエラー処理方法
US10528253B2 (en) Increased bandwidth of ordered stores in a non-uniform memory subsystem

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right