KR102500896B1 - Nand 드롭된 커맨드 검출 및 복구 - Google Patents

Nand 드롭된 커맨드 검출 및 복구 Download PDF

Info

Publication number
KR102500896B1
KR102500896B1 KR1020200073134A KR20200073134A KR102500896B1 KR 102500896 B1 KR102500896 B1 KR 102500896B1 KR 1020200073134 A KR1020200073134 A KR 1020200073134A KR 20200073134 A KR20200073134 A KR 20200073134A KR 102500896 B1 KR102500896 B1 KR 102500896B1
Authority
KR
South Korea
Prior art keywords
die
controller
command
state
data
Prior art date
Application number
KR1020200073134A
Other languages
English (en)
Other versions
KR20210102019A (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 KR20210102019A publication Critical patent/KR20210102019A/ko
Application granted granted Critical
Publication of KR102500896B1 publication Critical patent/KR102500896B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1063Control signal output circuits, e.g. status or busy flags, feedback command signals
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

호스트 디바이스로부터 수신된 커맨드의 다이 상태(준비/비지 상태)에 기초하여 드롭된 커맨드들의 검출을 가능하게 하는, 메모리 및 컨트롤러를 포함하는 저장 디바이스의 태양들이 제공된다. 메모리는 칩-인에이블들(CE)에 의해 제어되는 다이들을 포함할 수 있다. CE를 이용하여 다이를 선택한 후에, 컨트롤러는 다이 상태를 조회하라는 커맨드를 수신한 후에 최소 시간과 최대 시간 사이를 기다리며, 여기서 최소 시간은 커맨드가 실행을 시작할 것으로 예상되는 시간이고 최대 시간은 커맨드가 실행을 완료할 것으로 예상되는 최단 시간이다. 컨트롤러는 상기 기간을 기다린 후에 다이 상태를 조회한다. 다이 상태가 그것이 비지 상태로 판독되어야 했을 때 준비 상태이면, 컨트롤러는 데이터와 관련된 커맨드가 드롭된 것을 검출하고 호스트 디바이스에게 커맨드를 재발행하도록 요청한다.

Description

NAND 드롭된 커맨드 검출 및 복구{NAND DROPPED COMMAND DETECTION AND RECOVERY}
본 개시는 일반적으로 전자 디바이스들에 관한 것이며 더 구체적으로는 저장 디바이스들에 관한 것이다.
저장 디바이스들은 사용자들이 데이터를 저장하고 검색하는 것을 가능하게 한다. 저장 디바이스들의 예는 비휘발성 메모리 디바이스들을 포함한다. 비휘발성 메모리는 일반적으로 전력 사이클 후에 데이터를 유지한다. 비휘발성 메모리의 예는 하나 이상의 다이 상에 NAND 셀들의 어레이(들)를 포함할 수 있는 플래시 메모리이다. 플래시 메모리는 SSD(solid-state device)들, SD(Secure Digital) 카드들 등에서 발견될 수 있다.
플래시 저장 디바이스가 데이터와 관련된 제어 정보를 저장할 수 있다. 예를 들어, 플래시 저장 디바이스가 논리 어드레스들 대 물리 어드레스들의 매핑을 포함하는 제어 테이블들을 유지할 수 있다. 이러한 제어 테이블들은 플래시 메모리 내의, 논리 섹터들 또는 블록들의 물리 위치를 추적하는 데 사용된다. 제어 테이블들은 전력 사이클 후에 저장된 데이터에의 액세스를 가능하게 하기 위해 비휘발성 메모리에 저장된다.
플래시 저장 디바이스는 단일 버스를 공유하는 다수의 다이들과 함께 패키징될 수 있다. 각각의 다이는 플래시 저장 디바이스의 컨트롤러가 호스트 디바이스로부터의 커맨드들을 실행하기 위해 다이들 중 하나를 인에이블(또는 선택)하기 위한 신호를 전송할 수 있게 하는 칩 인에이블(CE)(또는 칩 선택(CS)) 핀을 포함할 수 있다. 예를 들어, 플래시 저장 디바이스가 하나의 다이로부터 데이터를 판독하기 위한 판독 커맨드를 수신할 때, 컨트롤러는 그 다이로부터 데이터를 판독하기 전에 CE를 이용하여 다이를 선택(예를 들어, 다이를 활성화 또는 웨이크업)할 수 있다. 컨트롤러는 그에 맞춰 그러한 다이들로 지향되는 CE들을 전송함으로써 다이들 중에서 선택할 수 있다.
그러나, 플래시 저장 디바이스가 상이한 다이들 중에서 선택하거나 상이한 다이들을 활성화하기 위한 CE 신호들을 전송할 때, 다이가 CE 신호에 올바르게 응답하지 않을 수 있다. 예를 들어, NAND 회로에 금속간 단락(metal to metal short)과 같은 결함이 있다면, 다이는 예상보다 늦게 활성화될 수 있다. 다이가 성공적으로 활성화되기 전에 컨트롤러가 후속하여 다이로부터 데이터를 판독하거나, 기입하거나, 소거하려고 시도하면, 다이는 커맨드를 처리하지 못할 수 있다. 그 결과, 커맨드는 조용히 드롭될 수 있다.
저장 디바이스의 일 태양이 본 명세서에 개시된다. 저장 디바이스는 데이터 및 데이터와 관련된 커맨드에 대한 다이 상태를 저장하도록 구성된 메모리를 포함한다. 다이 상태는 준비 상태(ready status) 또는 비지 상태(busy status) 중 하나를 포함한다. 저장 디바이스는 또한 데이터와 관련된 커맨드를 호스트 디바이스로부터 수신하도록 구성된 컨트롤러를 포함한다. 컨트롤러는 다이 상태를 조회하라는 커맨드를 수신한 후에 기간 t DCDmin <= t < t DCDmax 를 기다리도록 추가로 구성되며, 여기서 t DCDmin 은 커맨드가 실행을 시작할 것으로 예상되는 최소 시간이고 t DCDmax 는 커맨드가 실행을 완료할 것으로 예상되는 최소 시간이다. 컨트롤러는 상기 기간을 기다린 후에 다이 상태를 조회하도록, 그리고 다이 상태에 기초하여 데이터와 관련된 커맨드가 드롭되었는지를 검출하도록 추가로 구성된다.
저장 디바이스의 다른 태양이 본 명세서에 개시된다. 저장 디바이스는 데이터 및 데이터와 관련된 커맨드에 대한 다이 상태를 저장하도록 구성된 메모리를 포함한다. 메모리는 하나 이상의 CE 신호들에 의해 제어되는 복수의 메모리 위치들을 포함한다. 저장 디바이스는 또한 복수의 메모리 위치들 중의 메모리 위치에 대한 데이터와 관련된 커맨드를 호스트 디바이스로부터 수신하도록, 그리고 하나 이상의 CE 신호들을 이용하여 메모리 위치를 선택하도록 구성된 컨트롤러를 포함한다. 컨트롤러는 다이 상태를 조회하라는 커맨드를 수신한 후에 기간 t DCDmin <= t < t DCDmax 를 기다리도록 추가로 구성되며, 여기서 t DCDmin 은 커맨드가 실행을 시작할 것으로 예상되는 최소 시간이고 t DCDmax 는 커맨드가 실행을 완료할 것으로 예상되는 최소 시간이다. 컨트롤러는 상기 기간을 기다린 후에 다이 상태를 조회하도록, 그리고 다이 상태에 기초하여 데이터와 관련된 커맨드가 드롭되었는지를 검출하도록 추가로 구성된다. 다이 상태는 준비 상태 또는 비지 상태 중 하나를 포함한다.
저장 디바이스의 추가 태양이 본 명세서에 개시된다. 저장 디바이스는 데이터 및 데이터와 관련된 커맨드에 대한 다이 상태를 저장하도록 구성된 메모리를 포함한다. 다이 상태는 준비 상태 또는 비지 상태 중 하나를 포함한다. 저장 디바이스는 또한 데이터와 관련된 커맨드를 호스트 디바이스로부터 수신하도록 구성된 컨트롤러를 포함한다. 컨트롤러는 다이 상태를 조회하라는 커맨드를 수신한 후에 기간 t DCDmin <= t < t DCDmax 를 기다리도록 추가로 구성되며, 여기서 t DCDmin 은 커맨드가 실행을 시작할 것으로 예상되는 최소 시간이고 t DCDmax 는 커맨드가 실행을 완료할 것으로 예상되는 최소 시간이다. 컨트롤러는 상기 기간을 기다린 후에 다이 상태를 조회하도록, 그리고 데이터와 관련된 커맨드가 드롭된 것을 검출하고 다이 상태가 준비 상태일 때 호스트 디바이스에게 커맨드를 재발행하도록 요청하도록 추가로 구성된다.
장치들 및 방법들의 다양한 태양들이 예시로서 제시되고 설명되는 하기의 상세한 설명으로부터 저장 디바이스의 다른 태양들이 당업자에게 즉시 명백해질 것으로 이해된다. 인식될 바와 같이, 이들 태양은 다른 형태 및 상이한 형태로 구현될 수 있고, 그의 몇몇 상세 사항들은 다양한 다른 측면들에서 수정이 가능하다. 따라서, 도면 및 상세한 설명은 본질적으로 예시적인 것으로 간주되어야 하며 제한적인 것으로 간주되어서는 안된다.
이제 첨부 도면들을 참조하여 본 발명의 다양한 태양들이 제한으로서가 아니라 예로서 상세한 설명에서 제시될 것이다.
도 1은 호스트 디바이스와 통신하는 저장 디바이스의 예시적인 실시예를 예시하는 블록도이다.
도 2는 도 1의 저장 디바이스의 비휘발성 메모리 내의 논리 대 물리 매핑 테이블(logical-to-physical mapping table)의 예를 예시하는 개념도이다.
도 3은 도 1의 저장 디바이스 내의 다수의 다이들과 통신하는 컨트롤러의 예를 예시하는 개념도이다.
도 4는 도 1의 저장 디바이스에 의한 드롭된 커맨드 검출을 포함하는 커맨드 타이밍 시퀀스의 예를 예시하는 개념도이다.
도 5는 도 1의 저장 디바이스 내의 다이들과 컨트롤러 사이의 신호 통신의 예를 예시하는 개념적 타이밍 다이어그램이다.
도 6은 도 1의 저장 디바이스에 의한 드롭된 커맨드 검출을 수행하기 위한 방법을 예시하는 흐름도이다.
도 7은 도 1의 저장 디바이스에 의한 드롭된 커맨드를 검출하기 위한 예시적인 방법을 예시하는 흐름도이다.
첨부 도면들과 관련하여 아래에 기재되는 상세한 설명은 본 발명의 다양한 예시적인 실시예들의 설명으로 의도되며, 본 발명이 실시될 수 있는 유일한 실시예들을 나타내도록 의도되지 않는다. 상세한 설명은 본 발명의 완전한 이해를 제공할 목적으로 특정한 상세 사항들을 포함한다. 그러나, 본 발명이 이러한 특정한 상세 사항들 없이도 실시될 수 있다는 것이 당업자에게 명백할 것이다. 몇몇 경우에, 잘 알려진 구조들 및 컴포넌트들은 본 발명의 개념들을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다. 두문자어들 및 다른 기술 용어(descriptive terminology)는 단지 편의 및 명료함을 위해 사용될 수 있으며, 본 발명의 범위를 제한하도록 의도되지 않는다.
단어들 "예시적인" 및 "예"는 본 명세서에서 예, 사례, 또는 예시로서의 역할을 하는 것을 의미하도록 사용된다. 본 명세서에서 "예시적인"으로 기술되는 임의의 예시적인 실시예는 반드시 다른 예시적인 실시예들에 비해 바람직하거나 유리한 것으로 해석되어야 하는 것은 아니다. 마찬가지로, 용어 장치, 방법 또는 제조 물품의 "예시적인 실시예"는 본 발명의 모든 예시적인 실시예들이 기술된 컴포넌트들, 구조, 특징들, 기능, 프로세스들, 이점들, 이익들, 또는 동작 모드들을 포함할 것을 요구하지는 않는다.
하기의 상세한 설명에서, 호스트 디바이스와 통신하는 저장 디바이스의 다양한 태양들이 제시될 것이다. 이들 태양은 SSD들 및 SD 카드들과 같은 플래시 저장 디바이스들에 상당히 적합하다. 그러나, 당업자는 이들 태양이 데이터를 저장할 수 있는 모든 유형의 저장 디바이스들로 확장될 수 있다는 것을 인식할 것이다. 따라서, 특정 장치 또는 방법에 대한 임의의 언급은 단지 본 발명의 다양한 태양들을 예시하도록 의도될 뿐이며, 그러한 태양들은 본 개시의 사상 및 범위로부터 벗어남이 없이 광범위한 응용들을 가질 수 있다는 것이 이해되어야 한다.
저장 디바이스의 컨트롤러가 상이한 다이들의 CE들 중에서 선택하려고 시도할 때, 선택된 다이는 허용 가능한 타이밍 파라미터들 내에서 활성화되지 않을 수 있다. 그 결과, 컨트롤러가 후속하여 NAND에서 데이터를 판독하거나, 기입하거나, 소거하려고 시도하는 하나 이상의 커맨드 바이트를 선택된 다이로 전송하면, 다이는 커맨드 바이트들을 올바르게 처리하지 못하여 판독, 기입, 또는 소거 커맨드의 각자의 드롭으로 이어질 수 있다. 위에 언급된 커맨드들 중 판독 커맨드들이 전형적으로 가장 빈번하게 전송되므로, 이들 커맨드는 그러한 상황에서 가장 빈번하게 드롭되는 경향이 있다.
CE간 선택(CE-to-CE selection)에 있어서의 문제들로 인한 커맨드들의 드롭은 저장 디바이스의 컨트롤러가 알지 못할 수 있다. 예를 들어, 컨트롤러가 의도치 않게 비활성화된 다이에서 NAND에서 판독 커맨드를 실행하려고 시도하면, 데이터가 NAND로부터 래치들 내로 감지되지 않을 수 있다. 그 결과, (예를 들어, 이전 판독 커맨드로부터의) 이전 데이터가 모르게 래치들로부터 컨트롤러로 전송될 수 있으며, 이는 저장 디바이스에 의해 검출 가능하지 않을 수 있는데 그 이유는, 예를 들어, 오류 정정 코드(ECC) 디코딩이 여전히 성공할 수 있기 때문이다. 컨트롤러는 정상적으로, 다이가 현재 커맨드를 실행 중인지(예를 들어, 다이가 비지 상태인지) 또는 커맨드의 실행을 완료하였는지(예를 들어, 다이가 준비 상태인지)를 지시하는, 다이의 준비/비지 상태를 식별하기 위해 주기적인 상태 커맨드들을 전송하지만, 그러한 상태 커맨드들은 호스트 커맨드들을 실행하기 위한 최대 예상 시간 후에 전송된다. 그 결과, 컨트롤러가 준비/비지 상태로부터 다이가 준비 상태인 것으로 결정할지라도, 다이가 준비 상태인 것이 그것이 마지막 커맨드를 올바르게 실행했기 때문인지, 또는 그것이 이전 커맨드 이후 전체 시간 동안 준비 상태를 유지하였고 결코 비지 상태가 되지 않았기 때문인지는 알려지지 않는다.
지연된 CE간 선택으로부터의 위에 언급된 문제를 해결하기 위한 한 가지 접근법은 CE 신호의 어써션(assertion)과 버스 상의 커맨드를 NAND에 제공하는 것 사이의 시간 지연(tCS)을 증가시키는 것이다. 그러한 접근법은 늦은 CE 활성화를 고려하기 위한 추가 시간을 추가함으로써 드롭된 커맨드들의 확률을 감소시킬 수 있지만, 이러한 접근법은 드롭된 커맨드들이 발생하지 않았음을 보장하지는 않는다. 예를 들어, 저장 디바이스의 컨트롤러는 최대 tCS로 제한될 수 있고, 최대 tCS 후에 CE로부터 다이의 늦은 활성화가 우연히 발생하면, 드롭된 커맨드들이 여전히 생길 수 있다. 더욱이, tCS를 증가시키는 것은 저장 디바이스 성능을 상당히 감소시킬 수 있는 전체적인 변화인데, 그 이유는 지연이 모든 유형의 커맨드들에 대해 컨트롤러와 동일한 버스를 공유하는 모든 다이들(예를 들어, CE간 선택 문제들을 갖지 않을 수 있는 다이들을 포함함)의 실행 타이밍에 영향을 미칠 수 있기 때문이다.
따라서, 성능의 감소 없이 CE간 선택 문제들로 인한 커맨드들의 드롭을 검출하기 위해, 본 개시는 저장 디바이스에 의해 커맨드가 발행된 후에, 그러나 저장 디바이스가 커맨드의 처리를 완료할 가능성이 있기 전에 시간 엔벨로프 내에서 저장 디바이스의 준비/비지 상태를 조회하는 것에 의존하는 드롭된 커맨드 검출(dropped command detection, DCD)에 대한 접근법을 제공한다. 시간 엔벨로프는 저장 디바이스의 컨트롤러가 상태를 너무 일찍(예를 들어, 커맨드가 여전히 초기화되고 있고 이에 따라 임의의 준비/비지 상태 지시자가 무효일 동안) 또는 너무 늦게(예를 들어, 위에 설명된 바와 같이 정상적인 주기적 상태 조회 동안 일반적으로 그러하듯이 커맨드가 이미 실행을 완료하였을 수 있을 때) 조회하려고 시도하지 않도록 구성된다. 이러한 시간 엔벨로프 동안 상태가 준비 상태로 판독된다면, 컨트롤러는 커맨드가 드롭되었다고 결정할 수 있고 즉시 교정 조치를 취할 수 있지만, 이 시간 엔벨로프 동안 상태가 비지 상태로 판독된다면, 컨트롤러는 커맨드가 올바르게 실행되고 있다고 결정할 수 있다. 그 결과, 본 개시는 컨트롤러가 전체적인 시간 지연들(예를 들어, tCS 변화들)을 부과함으로써 야기될 수 있는 성능의 감소 없이 드롭된 커맨드 검출을 수행할 수 있게 한다.
도 1은 예시적인 실시예에 따른 호스트 디바이스(104)(또한 "호스트")와 통신하는 저장 디바이스(102)의 예시적인 블록도(100)를 도시한다. 호스트(104) 및 저장 디바이스(102)는 컴퓨터 시스템(예를 들어, 서버, 데스크톱, 모바일/랩톱, 태블릿, 스마트폰 등)과 같은 시스템을 형성할 수 있다. 도 1의 컴포넌트들은 물리적으로 같은 장소에 배치될 수 있거나 그렇지 않을 수 있다. 이와 관련하여, 호스트(104)는 저장 디바이스(102)로부터 원격에 위치할 수 있다. 도 1은 호스트(104)가 저장 디바이스(102)와는 별개로 도시되어 있는 것을 예시하지만, 호스트(104)는 다른 실시예들에서, 전체적으로 또는 부분적으로, 저장 디바이스(102)에 통합될 수 있다. 대안적으로, 호스트(104)는, 전체적으로, 또는 대안적으로 어떤 기능이 저장 디바이스(102)에 있는 상태로, 다수의 원격 엔티티들에 걸쳐 분산될 수 있다.
당업자는 다른 예시적인 실시예들이 도 1에 도시된 그러한 요소들보다 많이 또는 적게 포함할 수 있고 개시된 프로세스들이 다른 환경들에서 구현될 수 있다는 것을 인식할 것이다. 예를 들어, 다른 예시적인 실시예들은 저장 디바이스(102)와 통신하는 상이한 수의 호스트들, 또는 호스트(들)와 통신하는 다수의 저장 디바이스들(102)을 포함할 수 있다.
호스트 디바이스(104)는 저장 디바이스(102)에 데이터를 저장하고/하거나 그로부터 데이터를 검색할 수 있다. 호스트 디바이스(104)는, 예를 들어, 컴퓨터 서버, NAS(network attached storage) 유닛, 데스크톱 컴퓨터, 노트북(예를 들어, 랩톱) 컴퓨터, 태블릿 컴퓨터, 스마트폰과 같은 모바일 컴퓨팅 디바이스, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스 등을 포함한 임의의 컴퓨팅 디바이스를 포함할 수 있다. 호스트 디바이스(104)는 적어도 하나의 프로세서(101) 및 호스트 메모리(103)를 포함할 수 있다. 적어도 하나의 프로세서(101)는 데이터를 처리할 수 있는 임의의 형태의 하드웨어를 포함할 수 있고, 범용 처리 유닛(예컨대, 중앙 처리 장치(CPU)), 전용 하드웨어(예컨대, 주문형 집적 회로(ASIC)), 디지털 신호 프로세서(DSP), 구성 가능 하드웨어(예컨대, 필드 프로그래머블 게이트 어레이(FPGA)), 또는 소프트웨어 명령어들, 펌웨어 등에 의해 구성된 임의의 다른 형태의 처리 유닛을 포함할 수 있다. 호스트 메모리(103)는 호스트에 의해 처리된 데이터 또는 명령어들 또는 저장 디바이스(102)로부터 수신된 데이터를 저장하기 위해 호스트 디바이스(104)에 의해 사용될 수 있다. 몇몇 예들에서, 호스트 메모리(103)는 비휘발성 메모리, 예컨대 자기 메모리 디바이스들, 광학 메모리 디바이스들, 홀로그래픽 메모리 디바이스들, 플래시 메모리 디바이스들(예를 들어, NAND 또는 NOR), 상변화 메모리(PCM) 디바이스들, 저항성 랜덤 액세스 메모리(ReRAM) 디바이스들, 자기 저항 랜덤 액세스 메모리(MRAM) 디바이스들, 강유전성 랜덤 액세스 메모리(F-RAM), 및 임의의 다른 유형의 비휘발성 메모리 디바이스들을 포함할 수 있다. 다른 예들에서, 호스트 메모리(103)는 휘발성 메모리, 예컨대 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 RAM(SRAM), 및 동기식 동적 RAM(SDRAM 예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 등)을 포함할 수 있다. 호스트 메모리(103)는 또한, 함께 통합되든지 또는 별개의 유닛들로서든지 간에, 비휘발성 메모리 및 휘발성 메모리 둘 모두를 포함할 수 있다.
호스트 인터페이스(106)는 버스/네트워크(108)를 통해 저장 디바이스(102)를 호스트(104)와 인터페이스하도록 구성되며, 예를 들어, 이더넷 또는 WiFi, 또는 여러 가능한 후보들 중에서, SATA(Serial Advanced Technology Attachment), PCIe(PCI express), SCSI(Small Computer System Interface), 또는 SAS(Serial Attached SCSI)와 같은 버스 표준을 이용하여 인터페이스할 수 있다. 대안적으로, 호스트 인터페이스(106)는 무선일 수 있고, 예를 들어, 셀룰러 통신(예를 들어, 5G NR, 4G LTE, 3G, 2G, GSM/UMTS, CDMA One/CDMA2000 등), 액세스 포인트들을 통한 무선 배포 방법들(예를 들어, IEEE 802.11, WiFi, HiperLAN 등), IR(Infra Red), 블루투스, 지그비, 또는 다른 WWAN(Wireless Wide Area Network), WLAN(Wireless Local Area Network), WPAN(Wireless Personal Area Network) 기술, 또는 비교할 만한 광역, 로컬 영역 및 개인 영역 기술들을 이용하여 저장 디바이스(102)를 호스트(104)와 인터페이스할 수 있다.
도 1의 예시적인 실시예에 도시된 바와 같이, 저장 디바이스(102)는 호스트(104)로부터 수신된 데이터를 비휘발성으로 저장하기 위한 비휘발성 메모리(NVM)(110)를 포함한다. NVM(110)은, 예를 들어, 플래시 집적 회로, NAND 메모리(예를 들어, 단일-레벨 셀(SLC) 메모리, 멀티-레벨 셀(MLC) 메모리, 트리플-레벨 셀(TLC) 메모리, 쿼드-레벨 셀(QLC) 메모리, 펜타-레벨 셀(PLC) 메모리, 또는 이들의 임의의 조합), 또는 NOR 메모리를 포함할 수 있다. NVM(110)은 저장 디바이스(102)를 동작시키기 위한 시스템 데이터 또는 저장 디바이스(102)에 저장하기 위해 호스트로부터 수신된 사용자 데이터를 저장할 수 있는 복수의 메모리 위치(112)를 포함할 수 있다. 예를 들어, NVM은 n개의 행과 m개의 열을 갖는 메모리 위치들(112)의 2-D NAND 어레이를 포함하는 크로스-포인트 아키텍처를 가질 수 있으며, 여기서 mn은 NVM의 크기에 따라 사전 정의된다. 도 1의 예시된 예시적인 실시예에서, 각각의 메모리 위치(112)는 다수의 셀들(116)을 포함하는 블록(114)일 수 있다. 셀들(116)은 예를 들어 SLC들, MLC들, TLC들, QLC들, 및/또는 PLC들일 수 있다. 메모리 위치들(112)의 다른 예들이 가능하다; 예를 들어, 각각의 메모리 위치는 다수의 블록들을 포함하는 다이일 수 있다. 더욱이, 각각의 메모리 위치는 3-D NAND 어레이 내의 하나 이상의 블록을 포함할 수 있다. 더욱이, 예시된 메모리 위치(112)는 하나 이상의 물리 블록에 매핑되는 논리 블록들일 수 있다.
저장 디바이스(102)는 또한, 예를 들어, DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)을 포함할 수 있는 휘발성 메모리(118)를 포함한다. 휘발성 메모리(118)에 저장된 데이터는 NVM(110)으로부터 판독된 데이터 또는 NVM(110)에 기입될 데이터를 포함할 수 있다. 이와 관련하여, 휘발성 메모리(118)는 데이터를 임시로 저장하기 위한 기입 버퍼 또는 판독 버퍼를 포함할 수 있다. 도 1은 휘발성 메모리(118)를 저장 디바이스(102)의 컨트롤러(123)로부터 원격에 있는 것으로 예시하지만, 휘발성 메모리(118)는 컨트롤러(123)에 통합될 수 있다.
메모리(예를 들어, NVM(110))는 호스트 디바이스(104)로부터 수신된 데이터(119)를 저장하도록 구성된다. 데이터(119)는 메모리 위치들(112) 중 임의의 메모리 위치의 셀들(116)에 저장될 수 있다. 예로서, 도 1은 데이터(119)가 상이한 메모리 위치들(112)에 저장되는 것을 예시하지만, 데이터는 동일한 메모리 위치에 저장될 수 있다. 다른 예에서, 메모리 위치들(112)은 상이한 다이들일 수 있고, 데이터는 상이한 다이들 중 하나 이상에 저장될 수 있다.
데이터(119) 각각은 논리 어드레스와 관련될 수 있다. 예를 들어, NVM(110)은 각각의 데이터(119)를 논리 어드레스와 관련시키는 저장 디바이스(102)에 대한 논리 대 물리(L2P) 매핑 테이블(120)을 저장할 수 있다. L2P 매핑 테이블(120)은 호스트(104)로부터 기입된 데이터에 대해 지정된 논리 어드레스들 대 데이터 각각이 저장되는 위치(들)를 나타내는 NVM(110) 내의 물리 어드레스들의 매핑을 저장한다. 이 매핑은 저장 디바이스의 컨트롤러(123)에 의해 수행될 수 있다. L2P 매핑 테이블은 데이터가 저장되는 NVM 내의 각각의 메모리 위치(112)와 관련된 논리 블록 어드레스(LBA)와 같은 식별자를 포함하는 테이블 또는 다른 데이터 구조일 수 있다. 도 1은 도 1의 개념들을 과도하게 모호하게 하는 것을 피하기 위해 NVM의 메모리 위치들(112) 중 하나에 저장된 단일 L2P 매핑 테이블(120)을 예시하지만, L2P 매핑 테이블(120)은 실제로는 NVM의 하나 이상의 메모리 위치에 저장된 다수의 테이블들을 포함할 수 있다.
도 2는 호스트 디바이스로부터 수신된 데이터(202) 대 도 1의 NVM(110) 내의 논리 어드레스들 및 물리 어드레스들의 매핑을 예시하는 L2P 매핑 테이블(205)의 예의 개념도(200)이다. 데이터(202)는 도 1에서의 데이터(119)에 대응할 수 있는 반면, L2P 매핑 테이블(205)은 도 1에서의 L2P 매핑 테이블(120)에 대응할 수 있다. 하나의 예시적인 실시예에서, 데이터(202)는 하나 이상의 페이지(204), 예를 들어, 페이지 1 내지 페이지 x에 저장될 수 있으며, 여기서 x는 NVM(110)에 기입되는 데이터의 총 페이지 수이다. 각각의 페이지(204)는 논리 블록 어드레스(LBA)(208), NVM에 기입된 데이터와 관련된 물리 어드레스(210), 및 데이터의 길이(212)를 식별하는 L2P 매핑 테이블(205)의 하나 이상의 엔트리(206)와 관련될 수 있다. LBA(208)는 호스트 디바이스로부터 수신된 데이터에 대한 기입 커맨드에서 지정된 논리 어드레스일 수 있다. 물리 어드레스(210)는 LBA(208)와 관련된 데이터가 물리적으로 기입되는 블록 및 오프셋을 나타낼 수 있다. 길이(212)는 기입된 데이터의 크기(예를 들어, 4 KB 또는 어떤 다른 크기)를 나타낼 수 있다.
다시 도 1을 참조하면, 휘발성 메모리(118)는 또한 저장 디바이스(102)를 위한 캐시(122)를 저장한다. 캐시(122)는 호스트(104)에 의해 요청된 데이터에 대해 지정된 논리 어드레스들 대 데이터가 저장되는 위치(들)를 나타내는 NVM(110) 내의 물리 어드레스들의 매핑을 보여주는 엔트리들을 포함한다. 이 매핑은 컨트롤러(123)에 의해 수행될 수 있다. 컨트롤러(123)가 데이터(119)에 대한 판독 커맨드 또는 기입 커맨드를 수신할 때, 컨트롤러는 각각의 데이터의 논리 대 물리 매핑에 대해 캐시(122)를 체크한다. 매핑이 존재하지 않으면(예를 들어, 그것이 데이터에 대한 첫 번째 요청이면), 컨트롤러는 L2P 매핑 테이블(120)에 액세스하고 매핑을 캐시(122)에 저장한다. 컨트롤러(123)가 판독 커맨드 또는 기입 커맨드를 실행할 때, 컨트롤러는 캐시로부터의 매핑에 액세스하고 지정된 물리 어드레스에서 NVM(110)으로부터 데이터를 판독하거나 그것에 데이터를 기입한다. 캐시는 데이터가 판독되고 있는 NVM 내의 각각의 메모리 위치(112)와 관련된 논리 어드레스를 포함하는 테이블 또는 다른 데이터 구조의 형태로 저장될 수 있다.
NVM(110)은 각각의 메모리 위치(112)에 연결된 감지 증폭기들(124) 및 데이터 래치들(126)을 포함한다. 예를 들어, 메모리 위치(112)는 다수의 비트 라인들 상의 셀들(116)을 포함하는 블록일 수 있고, NVM(110)은 각각의 비트 라인 상의 감지 증폭기(124)를 포함할 수 있다. 더욱이, 하나 이상의 데이터 래치(126)가 비트 라인들 및/또는 감지 증폭기들에 연결될 수 있다. 데이터 래치들은, 예를 들어, 시프트 레지스터들일 수 있다. 메모리 위치(112)의 셀들(116)로부터 데이터가 판독될 때, 감지 증폭기들(124)은 비트 라인들 상의 전압들을 로직 레벨(예를 들어, '0' 또는 '1'로서 판독 가능)로 증폭함으로써 데이터를 감지하고, 감지된 데이터는 데이터 래치들(126)에 저장된다. 이어서 데이터는 데이터 래치들(126)로부터 컨트롤러(123)로 전송되고, 그 후에 데이터는 그것이 호스트 디바이스(104)로 전송될 때까지 휘발성 메모리(118)에 저장된다. 메모리 위치(112)의 셀들(116)에 데이터가 기입될 때, 컨트롤러(123)는 프로그램된 데이터를 데이터 래치들(126)에 저장하고, 데이터는 후속하여 데이터 래치들(126)로부터 셀들(116)로 전송된다.
저장 디바이스(102)는, 명령어들을 실행하기 위한 하나 이상의 프로세서와 같은 회로를 포함하고 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 하드-와이어드 로직, 아날로그 회로 및/또는 이들의 조합을 포함할 수 있는 컨트롤러(123)를 포함한다.
컨트롤러(123)는 판독 커맨드에 응답하여 다양한 메모리 위치들(112)의 셀들(116) 중 하나 이상으로부터 전송된 데이터를 수신하도록 구성된다. 예를 들어, 컨트롤러(123)는 감지 증폭기들(124)을 활성화하여 셀들(116)로부터 데이터 래치들(126)로의 데이터를 감지함으로써 데이터(119)를 판독할 수 있고, 컨트롤러(123)는 데이터 래치들(126)로부터 데이터를 수신할 수 있다. 컨트롤러(123)는 또한 기입 커맨드에 응답하여 셀들(116) 중 하나 이상에 데이터를 프로그램하도록 구성된다. 예를 들어, 컨트롤러(123)는 셀들(116)에 프로그램되도록 데이터를 데이터 래치들(126)에 전송함으로써 데이터(119)를 기입할 수 있다. 컨트롤러(123)는 셀들(116)에 데이터를 기입하거나 판독할 때 NVM(110) 내의 L2P 매핑 테이블(120)에 액세스하도록 추가로 구성된다. 예를 들어, 컨트롤러(123)는 호스트 디바이스(104)로부터의 판독 또는 기입 커맨드들에 응답하여 NVM(110)으로부터 논리 대 물리 어드레스 매핑들을 수신하고, 커맨드들에서 식별된 논리 어드레스들에 매핑된 물리 어드레스들을 식별하고(예를 들어, 논리 어드레스들을 물리 어드레스들로 변환하고), 매핑된 물리 어드레스들에 위치한 셀들(116) 내의 데이터에 액세스하거나 거기에 데이터를 저장할 수 있다.
컨트롤러(123) 및 그의 컴포넌트들은 본 개시 전반에 걸쳐 설명되는 컨트롤러의 다양한 기능들을 수행하는 내장형 소프트웨어로 구현될 수 있다. 대안적으로, 전술된 기능들 및 컴포넌트들 각각을 구현하기 위한 소프트웨어는 NVM(110)에 또는 저장 디바이스(102) 또는 호스트 디바이스(104) 외부의 메모리에 저장될 수 있고, 컨트롤러(123)의 하나 이상의 프로세서에 의한 실행을 위해 컨트롤러(123)에 의해 액세스될 수 있다. 대안적으로, 컨트롤러의 기능들 및 컴포넌트들은 컨트롤러(123) 내의 하드웨어로 구현될 수 있거나, 전술된 하드웨어와 소프트웨어의 조합을 이용하여 구현될 수 있다.
동작 시, 호스트 디바이스(104)는 하나 이상의 논리 어드레스(예를 들어, LBA)뿐만 아니라 기입될 데이터의 길이를 지정하는 기입 커맨드를 저장 디바이스(102)에 전송함으로써 저장 디바이스(102)에 데이터를 저장한다. 인터페이스 요소(106)는 기입 커맨드를 수신하고, 컨트롤러는 데이터를 저장하기 위한 저장 디바이스(102)의 NVM(110) 내의 메모리 위치(112)를 할당한다. 컨트롤러(123)는 데이터와 관련된 논리 어드레스를 데이터에 대해 할당된 메모리 위치(112)의 물리 어드레스에 매핑하기 위한 L2P 매핑을 NVM(및 캐시(122))에 저장한다. 컨트롤러는 또한 L2P 매핑된 데이터의 길이를 저장한다. 이어서 컨트롤러(123)는 데이터를 할당된 메모리 위치에 연결된 하나 이상의 데이터 래치(126)로 전송함으로써 데이터를 메모리 위치(112)에 저장하며, 그로부터 데이터가 셀들(116)에 프로그램된다.
호스트(104)는 저장 디바이스(102)로부터 검색될 데이터와 관련된 하나 이상의 논리 어드레스뿐만 아니라 판독될 데이터의 길이를 지정하는 판독 커맨드를 전송함으로써 저장 디바이스(102)로부터 데이터를 검색할 수 있다. 인터페이스(106)는 판독 커맨드를 수신하고, 컨트롤러(123)는 캐시(122) 또는 달리 NVM 내의 L2P 매핑에 액세스하여 판독 커맨드에서 지정된 논리 어드레스들을 데이터의 위치를 나타내는 물리 어드레스들로 변환한다. 이어서 컨트롤러(123)는 감지 증폭기들(124)을 이용하여 데이터를 감지함으로써 물리 어드레스들에 의해 지정된 메모리 위치(112)로부터 요청된 데이터를 판독하고, 판독된 데이터가 호스트 인터페이스(106)를 통해 호스트(104)로 반환될 때까지 그것들을 데이터 래치들(126)에 저장한다.
도 3은 버스(306)를 공유하는 다수의 다이들(304)과 통신하는 컨트롤러(302)를 예시하는 예시적인 다이어그램(300)을 예시한다. 컨트롤러(302)는 도 1의 컨트롤러(123)에 대응할 수 있고, 다이들(304)은 도 1의 메모리 위치들(112)에 대응할 수 있다. 각각의 다이는 컨트롤러와 다이 사이의 인터페이스들로서의 역할을 하는 다양한 핀들을 포함할 수 있다. 예를 들어, 각각의 다이는 컨트롤러로부터 칩-인에이블 신호를 수신하도록 구성된 CE(308), 컨트롤러로부터 커맨드들(예를 들어, 데이터를 판독하거나, 기입하거나, 소거하기 위한)을 수신하도록 구성된 입력/출력(I/O)(310), 및 준비 또는 비지 상태(다이의 메모리에 저장된 NAND 다이 상태)를 컨트롤러에 출력하도록 구성된 준비/비지(R/B)(312)를 포함할 수 있다. 명료함을 위해, 각각의 다이에 대해 CE(308), I/O(310), 및 R/B(312)만이 도 3에 예시되어 있다; 그러나, 다이들(304)은 다른 핀들을 포함할 수 있다. 예를 들어, 각각의 다이는 NAND에 어드레스들을 래치하기 위한 어드레스 래치 인에이블(ALE), 커맨드 레지스터에 커맨드들을 래치하기 위한 커맨드 래치 인에이블(CLE), 출력 데이터 버퍼들을 인에이블하기 위한 RE(판독 인에이블), NAND에 데이터, 어드레스들, 또는 커맨드들을 클로킹하기 위한 WE(기입 인에이블), 및 데이터 트랜잭션들을 처리하기 위한 양방향 데이터 스트로브 신호(DQS)를 포함할 수 있다.
일 예에서, 컨트롤러(302)는 상이한 다이들 상의 데이터에 대한 커맨드들을 호스트 디바이스(예를 들어, 호스트 디바이스(104))로부터 수신할 수 있다. 예를 들어, 컨트롤러(302)는 다이들(304) 중 하나의 다이(예를 들어, 제1 다이) 상의 데이터에 대한 제1 판독 커맨드를 수신할 수 있고, 컨트롤러(302)는 다이들(304) 중 다른 다이(예를 들어, 제2 다이) 상의 데이터에 대한 제2 판독 커맨드를 수신할 수 있다. 따라서, 제1 판독 커맨드를 실행하기 위해, 컨트롤러(302)는 버스(306) 상에서 CE 신호를 제1 다이의 CE(308)로 전송하고, 미리 구성된 기간(예를 들어, 위에 설명된 tCS) 후에, 컨트롤러(302)는 버스(306) 상에서 제1 다이로부터 데이터를 판독하기 위한 커맨드를 I/O(310)로 전송한다. 예를 들어, 컨트롤러는 감지 증폭기들(예를 들어, 도 1의 감지 증폭기들(124))을 활성화하여 제1 다이로부터 데이터(예를 들어, 데이터(119))를 감지하고, 그 후 감지된 데이터를 래치들(예를 들어, 래치들(126))로부터 컨트롤러로 전송하기 위한 커맨드를 전송할 수 있다. 컨트롤러가 제1 판독 커맨드가 실행되기를 기다리는 동안, 컨트롤러(302)는 버스 상에서 CE 신호를 제2 다이의 CE(308)로 전송함으로써 제2 판독 커맨드를 실행할 수 있고, 미리 구성된 기간 tCS 후에, 컨트롤러는 제2 다이로부터의 다른 데이터를 유사하게 감지하기 위한 커맨드를 I/O(310)로 전송한다. 컨트롤러는 버스(306) 상의 다른 다이들과, 그들 각자의 다이들에 대해 커맨드들이 실행되고 있는 동안, 유사하게 상호 작용할 수 있다.
컨트롤러가 새로운 커맨드를 수신하거나 다이들(304) 중 하나의 다이에 대한 호스트 디바이스로부터의 다른 조회된 커맨드를 실행하기로 결정하면, 컨트롤러는 그것이 그 다이에 대해 새로운 커맨드를 실행하기 전에 이전 커맨드가 완료되었다고 결정할 때까지 기다린다. 즉, 컨트롤러는 이전 커맨드의 실행을 완료하기 위한 최대 예상 시간에 대응하는 기간 동안 기다리고, 그 후 주기적인 준비/비지 상태 조회들을 다이로 전송함으로써 다이를 폴링한다. 예를 들어, 컨트롤러가 제1 다이에 대해 다른 판독 커맨드를 실행하려고 계획 중이라면, 컨트롤러는 I/O(310)를 통해 제1 다이에 그의 준비/비지 상태에 대해 상태 커맨드를 전송하거나 그의 준비/비지 상태에 대해 R/B(312)를 체크하기 전에 위에 언급된 시간이 경과할 때까지 기다린다. 컨트롤러가 다이(304)가 준비 상태인 것을 식별하면, 컨트롤러는 다이가 커맨드 실행을 완료한 것으로 가정하고 위에 설명된 바와 같이 CE 신호를 제1 다이로 전송하고 이어서 새로운 커맨드를 전송한다. 대안적으로, 컨트롤러가 다이가 여전히 비지 상태인 것을 식별하면, 컨트롤러는 다이가 여전히 이전 커맨드를 실행하고 있는 것으로 가정하고 다이가 준비 상태가 될 때까지 상태를 폴링하는 것을 계속한다. 그 후 컨트롤러는 새로운 커맨드를 실행한다. 프로세스는 모든 다이들(304)에 대해 유사하게 반복될 수 있다. 따라서, 컨트롤러(302)는 상이한 다이들에 대한 커맨드들을 실행하기 위해 버스 상의 다수의 다이들 사이의 CE 선택을 스위칭할 수 있다.
그러나, 예를 들어, 다이들 중 임의의 다이의 CE(308)와의 금속간 단락 문제로 인해, CE들 사이에 설명되지 않은 스위칭 지연이 있다면, 컨트롤러(302)는 새로운 커맨드를 처리하기 위해 CE에 의해 다이가 활성화되기 전에 다이(304) 상의 데이터를 판독하거나, 기입하거나, 소거하기 위해 새로운 커맨드를 I/O(310)로 전송할 수 있다. 그 결과, 커맨드는 각자의 다이에 의해 무시되거나 드롭될 수 있다. 그러한 경우에, 컨트롤러(302)는 위에 설명된 바와 같이 커맨드 실행을 위한 최대 예상 시간 후에 단순히 준비/비지 상태를 폴링하는 것에 의해서는 드롭된 커맨드를 검출하는 것이 가능하지 않을 수 있는데, 그 이유는 폴링의 결과로서 다이가 준비 상태라는 초기 결정이 애매모호할 수 있기 때문이다. 즉, 다이는 그것이 새로운 커맨드의 실행을 완료하였기 때문에, 또는 그것이 이전 커맨드의 실행을 완료하였고 결코 새로운 커맨드를 처리하지 않았기 때문에 준비 상태일 수 있다. 따라서, 드롭된 커맨드들은 조용할 수 있다(예를 들어, 컨트롤러에게 알려지지 않음). 더욱이, tCS를 최대 한도까지 증가시키는 것은 CE 스위칭 지연이 그 한도보다 길다면 도움이 되지 않을 뿐만 아니라, 버스(306) 상의 모든 다이들(304)의 성능을 전체적으로 희생시킬 수 있다.
조용히 드롭된 커맨드들의 이러한 문제를 해결하기 위해, 본 개시는 드롭된 커맨드 검출(DCD)의 시스템을 포함한다. 도 4는 DCD를 포함하는 커맨드 실행 타임라인의 예시적인 다이어그램(400)을 예시한다. 도 4는 컨트롤러가 판독 커맨드를 실행하는 예를 예시하지만, 컨트롤러는 드롭된 커맨드 검출을 수행하는 동안 다른 커맨드들(예를 들어, 기입 커맨드들 또는 소거 커맨드들)을 실행할 수도 있다. 이 예에서, 컨트롤러는 다음의 멀티-바이트, 판독 커맨드(402)를 이용하여 NAND 판독을 발행한다: 초기 커맨드(404)(예를 들어, 00h), 이어서 판독될 데이터의 물리 어드레스(406)(예를 들어, 5 또는 6 바이트), 및 포스트-커맨드(408)(예를 들어, 30h). 물리 어드레스(406)를 포함하는 필드는 그 어드레스가 위치하는 다이에 대한 식별자를 포함할 수 있다. 따라서, 도 3을 참조하면, 컨트롤러(302)는 다이들 중 하나의 다이의 멀티-바이트 커맨드(402)를 I/O(310)에 발행하여 그 다이로부터 데이터를 판독할 수 있다.
특정 다이에 대한 판독 커맨드를 발행한 후에, 컨트롤러는 그 다이에 대해 드롭된 커맨드 검출(DCD)을 수행하기 전에 커맨드가 실행을 초기화하거나 시작하기 위한 최소 시간(410)과 커맨드가 실행을 완료하기 위한 최대 시간(412) 사이를 기다린다. 예를 들어, 컨트롤러는 다른 다이들에 대한 다른 커맨드들을 수행하는 것으로 진행함으로써, 또는 임의의 커맨드들을 수행하는 것을 억제함으로써 기다릴 수 있다. 일단 컨트롤러가 이러한 시간 엔벨로프 내에서 소정 시간(예를 들어, tDCD)까지 기다리면, 컨트롤러는 NAND의 다이 상태(예를 들어, 준비 또는 비지)의 DCD 상태 조회(414)를 수행한다. 따라서 컨트롤러가 허용 가능한 DCD 상태 조회들을 수행할 수 있는 시간 엔벨로프는 tDCD_min < tDCD < tDCD_max에 의해 정의될 수 있으며, 여기서 최소 시간(410)(tDCD_min)은 다이의 준비/비지 상태가 유효하기 위한 최단 시간이고(예를 들어, 판독 커맨드에 대해 600 ns 또는 다른 수), 최대 시간(412)(tDCD_max)은 커맨드(402)가 완료된 것으로 간주될 수 있기 전의 최단 시간이다(예를 들어, 판독 커맨드에 대해 30 μs 또는 다른 수). 따라서, tDCD를 위한 최대 시간(412)은 그 자체가 커맨드 실행 완료를 위한 최소 시간일 수 있다(예를 들어, 판독 커맨드에 대해 30 μs 내지 100 μs).
컨트롤러는, 도 3에 관하여 위에서 설명된 바와 같이, 다이에 의해 제공된 R/B 인터페이스에 기초하여 다이의 준비/비지 상태에 대한 DCD 상태 조회(414)를 수행할 수 있다. 예를 들어, 컨트롤러는 버스(306) 상의 상태 커맨드를 I/O(310)를 통해 다이(304)로 전송하여 준비/비지 상태를 결정할 수 있다. 컨트롤러는 또한 R/B(312)에 연결된 와이어를 통해 다이로부터 준비/비지 상태를 판독할 수 있지만, 이 접근법은 도 3에서와 같이 다수의 다이들이 동일한 버스를 공유할 때 DCD에 덜 유리할 수 있다. 예를 들어, 컨트롤러가 단일 버스를 통해 각각의 다이의 모든 R/B(312)(핀들)에 연결되면, 컨트롤러는, 선택된 다이를 식별할 수 있는 상태 커맨드와는 대조적으로, 어느 다이가 어느 상태를 발신했는지를 결정하는 것이 가능하지 않을 수 있다. 더욱이, 각각의 다이의 R/B(312)에의 개별적인 연결을 위해 컨트롤러 상에 추가 핀들을 예비하는 것은 컨트롤러의 핀의 유한한 수로 인해 비실용적일 수 있다.
따라서, 도 4는 컨트롤러가, DCD를 수행하기 위해, 초기 커맨드(416)(예를 들어, F1h) 및 포스트 커맨드(418)(예를 들어, 71h)를 포함한, 멀티-바이트 상태 커맨드를 전송하는 예를 예시한다. 초기 커맨드(416)는 DCD 상태 조회(414)가 목표로 하고 있는 다이를 지시할 수 있고, 포스트 커맨드(418)는 그 다이에게 그의 준비/비지 상태를 컨트롤러에 반환하라는 명령을 지시할 수 있다. 이들 2개의 커맨드는, 목표 다이를 식별하는 물리 어드레스(406)와 결합하여, 올바른 다이가 상태 커맨드를 성공적으로 디코딩하고 수신할 수 있게 한다. 예를 들어, 도 3을 참조하면, 다이들(304) 중 하나의 다이(제1 다이)가 다이 0으로 식별될 수 있고, 다이들(304) 중 다른 다이(제2 다이)가 다이 1로 식별될 수 있다. 따라서, 제2 다이가 그 다이를 식별하는 물리 어드레스, 이어서 초기 커맨드(F1h) 및 포스트 커맨드(71h)를 수신하면, 제2 다이는 그의 식별자에 기초하여 상태 커맨드를 성공적으로 디코딩할 수 있는 반면 버스 상의 제1 다이 및 다른 다이들은 상태 커맨드를 디코딩하는 데 실패할 수 있다. 따라서, 제2 다이는 그의 준비/비지 상태를 컨트롤러에 반환할 것이다. 이러한 어드레싱 스킴은 컨트롤러와 동일한 버스를 공유하는 상이한 다이들을 목표로 하는 개재되는 커맨드들(예를 들어, 판독 커맨드(402)와 DCD 상태 조회(414) 사이에, 또는 초기 커맨드(416)와 포스트 커맨드(418) 사이에)에 의해 야기되는 오류들을 방지할 수 있다.
다이가 컨트롤러로부터 DCD 상태 조회(414)를 수신한 후에, 다이가 판독 커맨드(402)를 올바르게 실행하고 있다면, 컨트롤러는 다이로부터의 조회에 응답하여 비지 상태(420)를 수신할 것이다. 이러한 비지 상태(420)에 기초하여, 컨트롤러는 커맨드가 드롭되지 않았다고 결정할 수 있고, 컨트롤러는 커맨드가 완전히 실행되고 다이가 준비 상태가 될 때까지 버스를 이용하여 다른 다이들과 상호 작용하는 것으로 진행할 수 있다. 컨트롤러는 커맨드 실행을 위한 최대 예상 시간(예를 들어, 표준 지연(422))이 완료된 후에 다이의 준비/비지 상태를 폴링함으로써 다이가 준비 상태가 되는 때를 결정할 수 있다. 예를 들어, 표준 지연(422)은 판독 커맨드에 대해 100 μs일 수 있는 반면, 표준 지연(422)은 소거 커맨드에 대해 5 ms일 수 있다. 표준 지연(422)이 경과한 후에, 컨트롤러는 주기적으로 상태 커맨드 조회들(424)을 다이로 송신하여 다이가 여전히 비지 상태인지(예를 들어, 다이가 다른 비지 상태(426)를 반환하는지), 또는 준비 상태가 되었는지를 결정할 수 있다.
그러나, 다이가 DCD 상태 조회(414)에 응답하여 비지 상태(420)를 반환하지 않고 대신에 준비 상태를 반환하면, 컨트롤러는 커맨드가 드롭되었다고(예를 들어, CE간 선택 지연으로 인해) 그리고 판독 커맨드(402)가 올바르게 실행되지 않았다고 결정할 수 있다. 그 결과, 컨트롤러는 호스트 디바이스에 통지하는 것, 판독 커맨드(402)를 재전송하는 것, 또는 다른 오류 정정 조치를 수행하는 것과 같은 교정 조치를 포함할 수 있다.
따라서, 도 4의 예는 컨트롤러가 다이의 준비/비지 상태를 체크하기 위해 표준 지연(422)을 기다림이 없이 드롭된 커맨드들을 성공적으로 검출할 수 있게 하는데, 그러한 기다림은, 위에서 설명된 바와 같이, DCD를 위한 최대 시간(412)보다 훨씬 이후이기 때문에 결정에 너무 늦을 수 있고 이에 따라 다이에 의해 보고된 상태는 애매모호할 것이다. 예를 들어, 표준 지연(422)은 판독 커맨드에 대해 100 μs일 수 있는 반면, DCD를 위한 최대 시간(412)은 30 μs 또는 표준 지연보다 상당히 작은 다른 수일 수 있다. 또한, DCD 상태 조회(414)가 최소 시간(410) 및 최대 시간(412) 내에 언제든 컨트롤러에 의해 전송되면 드롭된 커맨드들이 성공적으로 검출될 수 있지만, 최소 시간(410)에 더 가깝게(예를 들어, 30 μs보다는, 600 ns 또는 다른 수까지) DCD 상태 조회(414)를 전송하도록 컨트롤러를 구성함으로써 효율이 개선될 수 있다. 그 결과, 문제가 발생하고 다이가 그것이 비지 상태(420)를 반환했어야 할 때 준비 상태를 반환하면, 컨트롤러는 DCD를 위한 최대 시간(412)까지 불필요하게 기다리기보다는, 신속히 교정 조치를 취하기 위해 가능한 한 빨리(예를 들어, 적어도 최소 시간(410)까지) 드롭된 커맨드를 결정하는 것이 가능할 수 있다.
도 5는 판독 커맨드(예를 들어, 도 4의 판독 커맨드(402))의 실행 동안 컨트롤러(예를 들어, 컨트롤러(123 또는 302))와 다이(예를 들어, 다이(304)) 사이에서 통신되는 신호들의 예시적인 타이밍 다이어그램(500)을 예시한다. 완벽함을 위해 이 예에서는 CLE, ALE, WE, RE, 및 DQS와 같이 도 3에 관하여 위에서 언급된 다양한 신호들이 도시되어 있지만, 이하에서는 신호들 CE(예를 들어, CE(308)), I/O(예를 들어, I/O(310)), 및 R/B(예를 들어, R/B(312))에 관련된 타이밍만이 설명될 것이다.
컨트롤러가 호스트 디바이스로부터 판독 커맨드를 수신할 때, 컨트롤러는 타이밍(502)에서(또는 대략 그 타이밍에서) 다이에 대한 CE 신호를 토글링한다(예를 들어, 1로부터 0으로). 그 후 컨트롤러는 타이밍(504)에서(또는 대략 그 타이밍에서) I/O 상의 판독 커맨드를 다이에 발행하며, 이는 커맨드의 실행을 시작하고 후속하여 RB 상에서의 비지 상태(예를 들어, 0)의 출력을 야기한다. 후속하여, (예를 들어, 도 4의 표준 지연(422)의 기간에 대응할 수 있는) 타이밍(506) 동안, 컨트롤러는 일반적으로 다이에 어떠한 새로운 커맨드도 발행하지 않는데, 그 이유는 다이가 도 5에 예시된 바와 같이 이전 커맨드를 실행하느라 비지 상태에 있을 것으로 예상되기 때문이다. 대신에, 컨트롤러는 동일한 버스 상의 다른 다이들에 커맨드들을 발행하는 것으로 진행할 수 있다. 타이밍(506) 후에, 컨트롤러는 I/O를 통해 상태 커맨드들(예를 들어, 80h)을 전송하는 것에 의해 또는 RB 라인을 체크하여 다이가 여전히 비지 상태인지를 결정하는 것에 의해 타이밍(508)에서 시작하여 다이를 폴링할 수 있다. 예시된 예에서, 다이는 여전히 비지 상태이고(예를 들어, RB(0)는 여전히 0이고), 따라서 컨트롤러는 RB가 다이가 다시 준비 상태인 것(예를 들어, 도면에 도시되지는 않았지만, RB(0)는 나중에 1로 되돌아감)을 지시할 때까지 계속해서 폴링한다. 그 후 컨트롤러는 다이에 대한 새로운 커맨드를 실행할 수 있다.
도 5는 커맨드가 올바르게 실행된(예를 들어, RB 라인이 예상된 바와 같이 비지 상태가 됨) 예를 예시하지만, 다른 예들에서는 커맨드가 조용히 드롭될 수 있다. 예를 들어, CE 토글링을 위한 타이밍(502)이 위에 설명된 바와 같이 판독 커맨드를 발행하기 위한 타이밍(504)보다 늦게 발생하면, 다이는 판독 커맨드를 실행하지 않을 수 있고 RB(0)는 전체 시간 동안 1(예를 들어, 준비 상태)로 유지될 수 있다. 커맨드가 실행을 완료할 것으로 예상되는 타이밍(508)에서 준비/비지 상태에 대한 폴링이 시작될 때까지, 컨트롤러는 준비 상태를 검출할 것이지만 그것은 애매모호할 것이다; 컨트롤러는 RB(0)가 초기에는 0이었고 그 후 1이 되었는지, 또는 그것이 항상 1이었는지를 결정할 수 없을 것이다.
따라서, 그러한 조용히 드롭된 커맨드들을 검출하기 위해, 컨트롤러는 구성된 최소 및 최대 DCD 타이밍들 내에 상태 조회(예를 들어, 도 4의 DCD 상태 조회(414))를 전송할 수 있다. 예를 들어, 컨트롤러는 최소 시간(410) 또는 tDCD_min에 대응하는 최소 시간(510), 및 최대 시간(412) 또는 tDCD_max에 대응하는 최대 시간(512) 내에 상태 조회를 전송할 수 있다. 예를 들어, 최소 시간(510)은 타이밍(504)에서 또는 그 후에 다이에서 커맨드가 실행을 시작할 것으로 예상되는 최단 시간이도록 구성될 수 있고, 최대 시간(512)은 타이밍(506) 내에 커맨드가 실행을 완료할 것으로 예상되는 최단 시간이도록 구성될 수 있다. 따라서, 최소 시간 및 최대 시간은 상이한 다이들에 대해 상이할 수 있다(예를 들어, 각각의 tDCD 최소/최대 쌍은 특정 NAND 노드에 의존할 수 있음); 예를 들어, 타이밍들(504, 506)이 각각의 다이에 대해 항상 동일하지는 않을 수 있다. 컨트롤러가 그것이 비지 상태를 예상하고 있었을 때 상태가 준비 상태이다는 것을 결정하면, 컨트롤러는 커맨드가 드롭되었다는 것을 확신하여 결정하고, 그 후 지연 또는 CE 라인들의 토글링 없이 다시 커맨드를 재발행하는 것으로 진행할 수 있다.
도 6은 드롭된 커맨드 검출의 방법의 예시적인 흐름도(600)를 예시한다. 예를 들어, 이 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은 아래에 설명된 바와 같은 컨트롤러(예를 들어, 컨트롤러(123))를 이용하여, 또는 어떤 다른 적합한 수단에 의해 제어될 수 있다.
블록 602에 의해 표현된 바와 같이, 컨트롤러는 다이에 대한 NAND 커맨드를 작성한다. 예를 들어, 컨트롤러가 다이 내의 메모리 위치와 관련된 논리 어드레스를 포함하는 커맨드(예를 들어, 판독, 기입, 또는 소거 커맨드)를 호스트 디바이스로부터 수신할 때, 컨트롤러는 논리 어드레스를 NAND 내의 물리 어드레스로 변환한다. 예를 들어, 도 2를 참조하면, 컨트롤러는 L2P 매핑 테이블(205)(예를 들어, 도 1의 L2P 매핑 테이블(120)) 내의 논리 어드레스(208)를 식별하고, 이 논리 어드레스를 커맨드를 실행하는 데 사용될 물리 어드레스(210)로 변환한다.
블록 604에 의해 표현된 바와 같이, 컨트롤러는 NAND 커맨드를 다이에 발행한다. 예를 들어, 도 4를 참조하면, 컨트롤러는 초기 커맨드(404)(예를 들어, 00h), 이어서 판독될 데이터의 물리 어드레스(406)(예를 들어, 5 또는 6 바이트), 이어서 포스트-커맨드(408)(예를 들어, 30h)를 포함하는 판독 커맨드(402)를 발행할 수 있다. 물리 어드레스(406)를 포함하는 필드는 그 어드레스가 위치하는 다이에 대한 식별자를 포함할 수 있다. 따라서, 도 3을 참조하면, 컨트롤러(302)는 판독 커맨드(402)를 다이들 중 하나의 다이의 I/O(310)에 발행하여 그 다이로부터 데이터를 판독할 수 있다. 대안적으로, 컨트롤러는 호스트 디바이스로부터 수신된 커맨드에 응답하여 다른 커맨드들(예를 들어, 기입 커맨드 또는 소거 커맨드)을 실행할 수 있다.
블록 606에 의해 표현된 바와 같이, 다이에 대한 NAND 커맨드를 발행한 후에, 컨트롤러는 DCD를 수행한다. DCD 프로세스는 블록들 608, 610, 612 및 618의 임의의 조합에 의해 표현될 수 있으며, 이는 아래에서 더 상세히 설명된다.
블록 608에 의해 표현된 바와 같이, 컨트롤러는 다이의 준비/비지 상태를 조회하기 전에 시간 t 동안 기다리며, 여기서 tDCD_min <= t < tDCD_max이다. 예를 들어, 도 4를 참조하면, 특정 다이에 대한 판독 커맨드를 발행한 후에, 컨트롤러는 그 다이에 대해 DCD를 수행하기 전에 커맨드가 실행을 초기화하거나 시작하기 위한 최소 시간(410)과 커맨드가 실행을 완료하기 위한 최대 시간(412) 사이를 기다릴 수 있다. 예를 들어, 컨트롤러는 다른 다이들에 대한 다른 커맨드들을 수행하는 것으로 진행함으로써, 또는 임의의 커맨드들을 수행하는 것을 억제함으로써 기다릴 수 있다. 따라서 컨트롤러가 허용 가능한 DCD 상태 조회들을 수행할 수 있는 시간 엔벨로프는 tDCD_min < tDCD < tDCD_max에 의해 정의될 수 있으며, 여기서 최소 시간(410)(tDCD_min)은 다이의 준비/비지 상태가 유효하기 위한 최단 시간이고, 최대 시간(412)(tDCD_max)은 커맨드(402)가 완료된 것으로 간주될 수 있기 전의 최단 시간이다.
블록 610에 의해 표현된 바와 같이, 컨트롤러는 다이의 준비/비지 상태를 조회할 수 있다. 예를 들어, 도 4를 참조하면, 일단 컨트롤러가 이러한 시간 엔벨로프 내에서 소정 시간(예를 들어, tDCD)까지 기다리면, 컨트롤러는 다이의 다이 상태(예를 들어, 준비 또는 비지)의 DCD 상태 조회(414)를 수행한다. 예를 들어, 컨트롤러는 버스(306) 상의 상태 커맨드를 I/O(310)를 통해 다이(304)로 전송할 수 있다. 상태 커맨드의 예로서, 컨트롤러는 초기 커맨드(416)(예를 들어, F1h)에 바로 이어서 포스트 커맨드(418)(예를 들어, 71h)를 전송하여 식별된 다이에 대해 DCD를 수행할 수 있다.
블록 612에 의해 표현된 바와 같이, 컨트롤러는 다이의 준비/비지 상태가 비지 상태로 판독되는지를 결정한다. 다이가 비지 상태로 판독되면, 컨트롤러는 커맨드가 드롭되지 않은 것을 검출할 수 있고, 블록 614에 의해 표현된 바와 같이, 컨트롤러는 다이의 준비/비지 상태의 정상(표준) 제1 폴링을 수행하기 위해 기다린다. 그 후 컨트롤러는 상태가 마침내 준비 상태로 판독될 때까지 주기적으로 다이의 상태를 폴링하고, 상태가 결국에 준비 상태로 판독된 후에, 블록 616에 의해 표현된 바와 같이, 컨트롤러는 다이의 상태가 정상이라는 보고를 호스트 디바이스에 발행한다. 예를 들어, 도 4를 참조하면, 다이가 컨트롤러로부터 DCD 상태 조회(414)를 수신한 후에, 다이가 판독 커맨드(402)를 올바르게 실행하고 있다면, 컨트롤러는 다이로부터의 조회에 응답하여 비지 상태(420)를 수신할 것이다. 이러한 비지 상태(420)에 기초하여, 컨트롤러는 커맨드가 드롭되지 않았다고 결정할 수 있고, 컨트롤러는 커맨드가 완전히 실행되고 다이가 준비 상태가 될 때까지 버스를 이용하여 다른 다이들과 상호 작용하는 것으로 진행할 수 있다. 컨트롤러는 커맨드 실행을 위한 최대 예상 시간(예를 들어, 표준 지연(422))이 완료된 후에 다이의 준비/비지 상태를 폴링함으로써 다이가 준비 상태가 되는 때를 결정할 수 있다. 예를 들어, 표준 지연(422)이 경과한 후에, 컨트롤러는 주기적으로 상태 커맨드 조회들(424)을 다이로 송신하여 다이가 여전히 비지 상태인지(예를 들어, 다이가 다른 비지 상태(426)를 반환하는지), 또는 준비 상태가 되었는지를 결정할 수 있다. 일단 다이가 준비 상태가 되면, 컨트롤러는 호스트 디바이스에게 다이의 동작이 정상적으로 작동하고 있음을 통지할 수 있다.
그러나, 블록 612에서의 결정에 기초하여 다이가 준비 상태로 판독되면, 컨트롤러는 커맨드가 드롭된 것을 검출하고, 블록 618에 의해 표현된 바와 같이, 컨트롤러는 커맨드의 재시도 또는 다른 처리를 위해 시스템에 오류를 발행한다. 예를 들어, 도 4를 참조하면, 다이가 DCD 상태 조회(414)에 응답하여 비지 상태(420)를 반환하지 않고 대신에 준비 상태를 반환하면, 컨트롤러는 커맨드가 드롭되었다고(예를 들어, CE간 선택 지연으로 인해) 그리고 판독 커맨드(402)가 올바르게 실행되지 않았다고 결정할 수 있다. 그 결과, 컨트롤러는 호스트 디바이스에 통지하는 것, 판독 커맨드(402)를 재전송하는 것, 또는 다른 오류 정정 조치를 수행하는 것과 같은 교정 조치를 포함할 수 있다.
도 7은 드롭된 커맨드 검출의 다른 방법의 예시적인 흐름도(700)를 예시한다. 예를 들어, 이 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은 아래에 설명된 바와 같은 컨트롤러(예를 들어, 컨트롤러(123))를 이용하여, 또는 어떤 다른 적합한 수단에 의해 제어될 수 있다.
블록 702에 의해 표현된 바와 같이, 컨트롤러는 복수의 메모리 위치 중의 메모리 위치에 대한 데이터와 관련된 커맨드를 호스트 디바이스로부터 수신할 수 있다. 복수의 메모리 위치는 하나 이상의 CE 신호에 의해 제어될 수 있다; 예를 들어, 복수의 메모리 위치는 컨트롤러와 단일 버스를 공유하는 다이들을 포함할 수 있다. 다이 상태가 메모리 위치에 저장될 수 있고, 다이 상태는 준비 상태 또는 비지 상태 중 하나를 포함할 수 있다. 예를 들어, 도 3을 참조하면, 컨트롤러(302)는 버스(306)를 공유하는 상이한 다이들(304) 상의 데이터에 대한 커맨드들을 호스트 디바이스(예를 들어, 호스트 디바이스(104))로부터 수신할 수 있다. 예를 들어, 컨트롤러(302)는 다이들(304) 중 하나의 다이(예를 들어, 제1 다이) 상의 데이터에 대한 제1 판독 커맨드를 수신할 수 있고, 컨트롤러(302)는 다이들(304) 중 다른 다이(예를 들어, 제2 다이) 상의 데이터에 대한 제2 판독 커맨드를 수신할 수 있다. 컨트롤러(302)는 도 1의 컨트롤러(123)에 대응할 수 있고, 다이들(304)은 도 1의 메모리 위치들(112)에 대응할 수 있다. 각각의 다이는 컨트롤러로부터 칩-인에이블 신호를 수신하도록 구성된 CE(308), 컨트롤러로부터 커맨드들(예를 들어, 데이터를 판독하거나, 기입하거나, 소거하기 위한)을 수신하도록 구성된 입력/출력(I/O)(310), 및 준비 또는 비지 상태(다이의 메모리에 저장된 다이 상태)를 컨트롤러에 출력하도록 구성된 준비/비지(R/B)(312)와 같은 다양한 핀들을 포함할 수 있다.
블록 704에 의해 표현된 바와 같이, 컨트롤러는 하나 이상의 CE 신호를 이용하여 메모리 위치를 선택할 수 있다. 예를 들어, 도 3을 참조하면, 컨트롤러(302)가 다이들(304) 중 하나의 다이(예를 들어, 제1 다이)에 대한 제1 판독 커맨드를 실행하고 있을 때, 컨트롤러는 버스(306) 상에서 CE 신호를 제1 다이의 CE(308)로 전송할 수 있고, 컨트롤러가 다이들(304) 중 다른 다이(예를 들어, 제2 다이)에 대한 제2 판독 커맨드를 실행하고 있을 때, 컨트롤러는 버스(306) 상에서 CE 신호를 제2 다이의 CE(308)로 전송할 수 있다. 미리 구성된 기간(예를 들어, 위에 설명된 tCS) 후에, 컨트롤러(302)는 버스(306) 상의 커맨드를 I/O(310)로 전송하여 대응하는 다이로부터 데이터를 판독할 수 있다.
블록 706에 의해 표현된 바와 같이, 컨트롤러는 메모리에 저장된 다이 상태를 조회하라는 커맨드를 수신한 후에 기간 t DCDmin <= t < t DCDmax 를 기다릴 수 있으며, 여기서 t DCDmin 은 커맨드가 실행을 시작할 것으로 예상되는 최소 시간이고 t DCDmax 는 커맨드가 실행을 완료할 것으로 예상되는 최소 시간이다. t DCDmin t DCDmax 는 상이한 다이들에 대해 상이할 수 있다. 예를 들어, 도 6을 참조하면, 블록 608에 의해 표현된 바와 같이, 컨트롤러는 다이의 준비/비지 상태를 조회하기 전에 시간 t 동안 기다릴 수 있으며, 여기서 tDCD_min <= t < tDCD_max이다. 예를 들어, 도 4를 참조하면, 특정 다이에 대한 판독 커맨드를 발행한 후에, 컨트롤러는 그 다이의 준비/비지 상태를 조회하기 전에 커맨드가 실행을 초기화하거나 시작하기 위한 최소 시간(410)과 커맨드가 실행을 완료하기 위한 최대 시간(412) 사이를 기다릴 수 있다. 도 5를 참조하면, 최소 시간(510)(예를 들어, 최소 시간(410))은 타이밍(504)에서 또는 그 후에 다이에서 커맨드가 실행을 시작할 것으로 예상되는 최단 시간이도록 구성될 수 있고, 최대 시간(512)(예를 들어, 최대 시간(412))은 타이밍(506) 내에 커맨드가 실행을 완료할 것으로 예상되는 최단 시간이도록 구성될 수 있다. 따라서, 최소 시간 및 최대 시간은 상이한 다이들에 대해 상이할 수 있는데(예를 들어, 각각의 tDCD 최소/최대 쌍은 특정 NAND 노드에 의존할 수 있음), 그 이유는 타이밍(504) 및 타이밍(506)이 각각의 다이에 대해 항상 동일하지는 않을 수 있기 때문이다.
블록 708에 의해 표현된 바와 같이, 컨트롤러는 메모리 위치를 선택하고 상기 기간을 기다린 후에 다이 상태를 조회할 수 있다. 컨트롤러는 단일 버스 상의 다이들 중 하나의 다이에 상태 커맨드들을 전송하는 것, 또는 다이들 중 하나의 다이의 비지 와이어를 판독하는 것 중 하나에 의해 다이 상태를 조회할 수 있다. 예를 들어, 도 6을 참조하면, 블록 610에 의해 표현된 바와 같이, 컨트롤러는 다이의 준비/비지 상태를 조회할 수 있다. 예를 들어, 도 4를 참조하면, 일단 컨트롤러가 이러한 시간 엔벨로프 내에서 소정 시간(예를 들어, tDCD)까지 기다리면, 컨트롤러는 다이의 다이 상태(예를 들어, 준비 또는 비지)의 DCD 상태 조회(414)를 수행할 수 있다. 예를 들어, 컨트롤러는 버스(306) 상의 상태 커맨드를 I/O(310)를 통해 다이(304)로 전송할 수 있다. 상태 커맨드의 예로서, 컨트롤러는 초기 커맨드(416)(예를 들어, F1h)에 바로 이어서 포스트 커맨드(418)(예를 들어, 71h)를 전송하여 식별된 다이에 대해 DCD를 수행할 수 있다. 대안적으로, 컨트롤러는 핀 R/B(312)에 연결된 와이어를 통해 다이로부터 준비/비지 상태를 판독할 수 있다.
블록 710에 의해 표현된 바와 같이, 컨트롤러는 다이 상태에 기초하여 데이터와 관련된 커맨드가 드롭되었는지를 검출할 수 있다. 예를 들어, 도 4를 참조하면, 다이가 컨트롤러로부터 DCD 상태 조회(414)를 수신한 후에, 다이가 커맨드를 실행하고 있지 않다면, 다이는 조회에 응답하여 준비 상태를 컨트롤러에 반환할 것이다. 예를 들어, 다이(304)는 그의 준비 상태를 포함한 상태 응답을 I/O(310)를 통해 버스(306) 상에서 컨트롤러에 보고할 수 있거나, 다이는 R/B(312)를 통해 버스(306) 상에서 "1"(준비)을 반환할 수 있다. 식별된 상태에 기초하여, 컨트롤러가 그것이 비지 상태를 예상하고 있었을 때 준비 상태를 수신했기 때문에, 컨트롤러는 커맨드가 드롭되었다고, 그리고 판독 커맨드(402)가 올바르게 실행되지 않았다고 결정할 수 있다.
커맨드가 드롭되면, 블록 712에 의해 표현된 바와 같이, 컨트롤러는 다이 상태가 준비 상태일 때 호스트 디바이스에게 커맨드를 재발행하도록 요청할 수 있다. 예를 들어, 도 6을 참조하면, 블록 618에 의해 표현된 바와 같이, 컨트롤러는 커맨드의 재시도 또는 다른 처리를 위해 시스템에 오류를 발행할 수 있다. 예를 들어, 도 4를 참조하면, 다이가 DCD 상태 조회(414)에 응답하여 비지 상태(420)를 반환하지 않고 대신에 준비 상태를 반환하면, 컨트롤러는 커맨드가 드롭되었다고(예를 들어, CE간 선택 지연으로 인해) 그리고 판독 커맨드(402)가 올바르게 실행되지 않았다고 결정할 수 있다. 그 결과, 컨트롤러는 호스트 디바이스에 통지하는 것, 판독 커맨드(402)를 재전송하는 것, 또는 다른 오류 정정 조치를 수행하는 것과 같은 교정 조치를 포함할 수 있다.
그렇지 않으면, 블록 714에 의해 표현된 바와 같이, 컨트롤러는 다이 상태가 준비 상태가 될 때까지 다이 상태가 비지 상태일 때 다이 상태를 반복적으로 폴링한다. 예를 들어, 도 6을 참조하면, 다이가 비지 상태로 판독되면, 블록 614에 의해 표현된 바와 같이, 컨트롤러는 다이의 준비/비지 상태의 정상(표준) 제1 폴링을 수행하기 위해 기다린다. 그 후 컨트롤러는 상태가 마침내 준비 상태로 판독될 때까지 주기적으로 다이의 상태를 폴링한다. 예를 들어, 표준 지연(422)이 경과한 후에, 컨트롤러는 주기적으로 상태 커맨드 조회들(424)을 다이로 송신하여 다이가 여전히 비지 상태인지(예를 들어, 다이가 다른 비지 상태(426)를 반환하는지), 또는 준비 상태가 되었는지를 결정할 수 있다. 일단 다이가 준비 상태가 되면, 컨트롤러는 호스트 디바이스에게 다이의 동작이 정상적으로 작동하고 있음을 통지할 수 있다.
따라서, 본 개시는 시스템 안정성을 증가시키고, 성능을 증가시키고, 서비스 품질(QoS)에 대한 드롭된 커맨드들의 영향을 감소시키면서 드롭된 커맨드들의 검출을 가능하게 한다. CE를 이용하여 다이들이 선택되는 때와 각각의 커맨드가 마침내 실행되는 때의 시간 사이의 시간을 전체적으로 증가시킴이 없이(예를 들어, tCS를 증가시킴이 없이) 드롭된 커맨드들이 검출될 수 있게 함으로써 시스템 안정성이 증가될 수 있는데, 왜냐하면 그러한 접근법은 위에 설명된 바와 같이 드롭된 커맨드들의 검출을 보장하지도 않을 수 있기 때문이다. 이에 따라 tCS의 증가를 회피함으로써 시스템 안정성에 대한 영향 없이 성능이 증가될 수 있으며, 그에 의해 커맨드들이 빠른 실행을 유지할 수 있게 할 수 있다. 더욱이, 개선된 QoS로 판독 동작들이 수행될 수 있는데, 왜냐하면 저장 디바이스가 판독 감지가 올바르게 실행되지 않았다고 결정할 수 있고, 그 결과, 의도치 않은 데이터(예를 들어, 디코딩 또는 ECC 체크들을 통과하는 상이한 커맨드에 대한 이전에 판독된 데이터) 또는 무효 데이터(예를 들어, 디코딩하지 않고 이에 따라 오류 복구 경로를 강제할 수 있는 데이터)가 호스트 디바이스로 전송되기 전에 검출될 수 있기 때문이다.
본 개시의 다양한 태양들은 당업자가 본 발명을 실시하는 것을 가능하게 하기 위해 제공된다. 본 개시 전반에 걸쳐 제시된 예시적인 실시예들에 대한 다양한 수정들을 당업자가 손쉽게 알 수 있을 것이며, 본 명세서에 개시된 개념들은 다른 자기 저장 디바이스들로 확장될 수 있다. 따라서, 청구항들은 본 개시의 다양한 태양들로 제한되도록 의도되지 않으며, 청구항들의 언어와 부합하는 최대 범위가 부여되어야 한다. 당업자에게 알려진 또는 나중에 알려지게 되는 본 개시 전체에 걸쳐 설명된 예시적인 실시예들의 다양한 컴포넌트에 대한 모든 구조적 및 기능적 등가물들은 명백히 본 명세서에 참고로 포함되며 청구항들에 의해 포함되도록 의도된다. 더욱이, 본 명세서에 개시된 어떠한 것도 그러한 개시가 청구항들에서 명시적으로 언급되는지 여부에 관계없이 대중에 헌정되도록 의도되지 않는다. 어떠한 청구항 요소도, 그 요소가 문구 "~하기 위한 수단"을 사용해 명시적으로 언급되거나, 방법 청구항의 경우, 그 요소가 문구 "~하기 위한 단계"를 사용해 언급되지 않는 한, 미국의 35 U.S.C. §112(f)의 규정 또는 다른 관할권 내의 유사한 법령 또는 법규하에서 해석되어서는 안된다.

Claims (20)

  1. 저장 디바이스로서,
    데이터 및 상기 데이터와 관련된 커맨드에 대한 다이 상태를 저장하도록 구성된 메모리로서, 상기 다이 상태는 준비 상태(ready status) 또는 비지 상태(busy status) 중 하나를 포함하는 것인 메모리; 및
    상기 메모리에 결합된 컨트롤러
    를 포함하고, 상기 컨트롤러는,
    호스트 디바이스로부터, 상기 데이터와 관련된 상기 커맨드를 수신하고,
    상기 다이 상태를 조회하라는 상기 커맨드를 수신한 후에, 기간 tDCDmin <= t < tDCDmax 를 기다리고 - tDCDmin 은 상기 커맨드가 실행을 시작할 것으로 예상되는 최소 시간이고 tDCDmax 는 상기 커맨드가 실행을 완료할 것으로 예상되는 최대 시간임 - ,
    상기 기간을 기다린 후에, 상기 다이 상태를 조회하고,
    상기 다이 상태에 기초하여 상기 데이터와 관련된 상기 커맨드가 드롭되었는지를 검출하도록
    구성되는 것인, 저장 디바이스.
  2. 제1항에 있어서, 상기 메모리는 하나 이상의 칩-인에이블(CE) 신호들에 의해 제어되는 복수의 메모리 위치들을 포함하고, 상기 데이터와 관련된 상기 커맨드는 상기 복수의 메모리 위치들 중의 메모리 위치에 대한 것인, 저장 디바이스.
  3. 제2항에 있어서, 상기 컨트롤러는 상기 하나 이상의 CE 신호들을 이용하여 상기 메모리 위치를 선택하도록, 그리고 상기 메모리 위치를 선택한 후에 상기 커맨드에 대한 상기 다이 상태를 조회하도록 추가로 구성되는, 저장 디바이스.
  4. 제3항에 있어서, 상기 복수의 메모리 위치들은 상기 컨트롤러와 단일 버스를 공유하는 다이들을 포함하는 것인, 저장 디바이스.
  5. 제1항에 있어서, 상기 컨트롤러는 상기 데이터와 관련된 상기 커맨드가 드롭된 것을 검출하도록, 그리고 후속하여 상기 다이 상태가 상기 준비 상태일 때 상기 호스트 디바이스에게 상기 커맨드를 재발행하도록 요청하도록 구성되는 것인, 저장 디바이스.
  6. 제1항에 있어서, 상기 컨트롤러는 상기 다이 상태가 상기 준비 상태가 될 때까지 상기 다이 상태가 상기 비지 상태일 때 상기 다이 상태를 반복적으로 폴링하도록 추가로 구성되는 것인, 저장 디바이스.
  7. 저장 디바이스로서,
    데이터 및 상기 데이터와 관련된 커맨드에 대한 다이 상태를 저장하도록 구성된 메모리로서, 상기 메모리는 하나 이상의 칩-인에이블(CE) 신호들에 의해 제어되는 복수의 메모리 위치들을 포함하는 것인 메모리; 및
    상기 복수의 메모리 위치들 중의 메모리 위치에 대한 상기 데이터와 관련된 상기 커맨드를 호스트 디바이스로부터 수신하도록, 그리고 상기 하나 이상의 CE 신호들을 이용하여 상기 메모리 위치를 선택하도록 구성된 컨트롤러로서, 상기 컨트롤러는 상기 다이 상태를 조회하라는 상기 커맨드를 수신한 후에 기간 tDCDmin <= t < tDCDmax 를 기다리도록 추가로 구성 - tDCDmin 은 상기 커맨드가 실행을 시작할 것으로 예상되는 최소 시간이고 tDCDmax 는 상기 커맨드가 실행을 완료할 것으로 예상되는 최대 시간임 - 되는 것인 컨트롤러
    를 포함하며,
    상기 컨트롤러는 상기 기간을 기다린 후에 상기 다이 상태를 조회하도록, 그리고 상기 다이 상태에 기초하여 상기 데이터와 관련된 상기 커맨드가 드롭되었는지를 검출하도록 추가로 구성되며, 상기 다이 상태는 준비 상태 또는 비지 상태 중 하나를 포함하는 것인, 저장 디바이스.
  8. 제7항에 있어서, 상기 복수의 메모리 위치들은 상기 컨트롤러와 단일 버스를 공유하는 복수의 다이들을 포함하는 것인, 저장 디바이스.
  9. 제8항에 있어서, 상기 컨트롤러는,
    상기 단일 버스 상의 상기 복수의 다이들 중 하나의 다이에 상태 커맨드들을 전송하는 것, 또는
    상기 복수의 다이들 중 상기 하나의 다이의 비지 와이어를 판독하는 것
    중 하나에 의해 상기 다이 상태를 조회하도록 구성되는 것인, 저장 디바이스.
  10. 제8항에 있어서, tDCDmin tDCDmax 는 상기 복수의 다이들 중 상이한 다이들에 대해 상이한 것인, 저장 디바이스.
  11. 제7항에 있어서, 상기 컨트롤러는 상기 다이 상태가 상기 준비 상태일 때 상기 데이터와 관련된 상기 커맨드가 드롭된 것을 검출하도록 구성되는 것인, 저장 디바이스.
  12. 제11항에 있어서, 상기 컨트롤러는 상기 다이 상태가 상기 준비 상태일 때 상기 호스트 디바이스에게 상기 커맨드를 재발행하도록 요청하도록 추가로 구성되는 것인, 저장 디바이스.
  13. 제7항에 있어서, 상기 컨트롤러는 상기 다이 상태가 상기 준비 상태가 될 때까지 상기 다이 상태가 상기 비지 상태일 때 상기 다이 상태를 반복적으로 폴링하도록 추가로 구성되는 것인, 저장 디바이스.
  14. 저장 디바이스로서,
    데이터 및 상기 데이터와 관련된 커맨드에 대한 다이 상태를 저장하도록 구성된 메모리로서, 상기 다이 상태는 준비 상태 또는 비지 상태 중 하나를 포함하는 것인 메모리; 및
    상기 데이터와 관련된 상기 커맨드를 호스트 디바이스로부터 수신하도록 구성된 컨트롤러로서, 상기 컨트롤러는 상기 다이 상태를 조회하라는 상기 커맨드를 수신한 후에 기간 tDCDmin <= t < tDCDmax 를 기다리도록 추가로 구성 - tDCDmin 은 상기 커맨드가 실행을 시작할 것으로 예상되는 최소 시간이고 tDCDmax 는 상기 커맨드가 실행을 완료할 것으로 예상되는 최대 시간임 - 되는 것인 컨트롤러
    를 포함하며,
    상기 컨트롤러는 상기 기간을 기다린 후에 상기 다이 상태를 조회하도록, 그리고 상기 데이터와 관련된 상기 커맨드가 드롭된 것을 검출하고 상기 다이 상태가 상기 준비 상태일 때 상기 호스트 디바이스에게 상기 커맨드를 재발행하도록 요청하도록 추가로 구성되는 것인, 저장 디바이스.
  15. 제14항에 있어서, 상기 메모리는 하나 이상의 칩-인에이블(CE) 신호들에 의해 제어되는 복수의 메모리 위치들을 포함하고, 상기 데이터와 관련된 상기 커맨드는 상기 복수의 메모리 위치들 중의 메모리 위치에 대한 것인, 저장 디바이스.
  16. 제15항에 있어서, 상기 컨트롤러는 상기 하나 이상의 CE 신호들을 이용하여 상기 메모리 위치를 선택하도록, 그리고 상기 메모리 위치를 선택한 후에 상기 커맨드에 대한 상기 다이 상태를 조회하도록 추가로 구성되는 것인, 저장 디바이스.
  17. 제15항에 있어서, 상기 복수의 메모리 위치들은 상기 컨트롤러와 단일 버스를 공유하는 복수의 다이들을 포함하는 것인, 저장 디바이스.
  18. 제17항에 있어서, 상기 컨트롤러는,
    상기 단일 버스 상의 상기 복수의 다이들 중 하나의 다이에 상태 커맨드들을 전송하는 것, 또는
    상기 복수의 다이들 중 상기 하나의 다이의 비지 와이어를 판독하는 것
    중 하나에 의해 상기 다이 상태를 조회하도록 구성되는 것인, 저장 디바이스.
  19. 제17항에 있어서, tDCDmin tDCDmax 는 상기 복수의 다이들 중 상이한 다이들에 대해 상이한 것인, 저장 디바이스.
  20. 제14항에 있어서, 상기 컨트롤러는 상기 다이 상태가 상기 준비 상태가 될 때까지 상기 다이 상태가 상기 비지 상태일 때 상기 다이 상태를 반복적으로 폴링하도록 추가로 구성되는 것인, 저장 디바이스.
KR1020200073134A 2020-02-10 2020-06-16 Nand 드롭된 커맨드 검출 및 복구 KR102500896B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/786,889 US11150841B2 (en) 2020-02-10 2020-02-10 NAND dropped command detection and recovery
US16/786,889 2020-02-10

Publications (2)

Publication Number Publication Date
KR20210102019A KR20210102019A (ko) 2021-08-19
KR102500896B1 true KR102500896B1 (ko) 2023-02-16

Family

ID=76968730

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200073134A KR102500896B1 (ko) 2020-02-10 2020-06-16 Nand 드롭된 커맨드 검출 및 복구

Country Status (3)

Country Link
US (2) US11150841B2 (ko)
KR (1) KR102500896B1 (ko)
DE (1) DE102020116192A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586393B2 (en) * 2020-12-30 2023-02-21 Macronix International Co., Ltd. Control method for requesting status of flash memory, flash memory die and flash memory with the same
US11836384B2 (en) 2022-03-10 2023-12-05 Western Digital Technologies, Inc. Automatic prediction timers adaptation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140325131A1 (en) * 2010-12-30 2014-10-30 Sandisk Technologies Inc. Controller and Method for Performing Background Operations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778777B2 (ja) 1991-02-19 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション ディジタルコンピュータとメモリの通信方法および通信システム
US7793167B2 (en) 2007-08-23 2010-09-07 International Business Machines Corporation Detection and correction of dropped write errors in a data storage system
US8438356B2 (en) 2007-10-01 2013-05-07 Marvell World Trade Ltd. Flash memory controller
US20090172213A1 (en) 2007-12-31 2009-07-02 Sowmiya Jayachandran Command completion detection in a mass storage device
US8996782B2 (en) 2012-03-23 2015-03-31 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
US9335952B2 (en) 2013-03-01 2016-05-10 Ocz Storage Solutions, Inc. System and method for polling the status of memory devices
US9620182B2 (en) * 2013-12-31 2017-04-11 Sandisk Technologies Llc Pulse mechanism for memory circuit interruption

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140325131A1 (en) * 2010-12-30 2014-10-30 Sandisk Technologies Inc. Controller and Method for Performing Background Operations

Also Published As

Publication number Publication date
DE102020116192A1 (de) 2021-08-12
US11726717B2 (en) 2023-08-15
CN113253910A (zh) 2021-08-13
US11150841B2 (en) 2021-10-19
US20220019382A1 (en) 2022-01-20
KR20210102019A (ko) 2021-08-19
US20210247931A1 (en) 2021-08-12

Similar Documents

Publication Publication Date Title
JP6802933B2 (ja) 自動動的ワード線開始電圧のための装置及び方法
US11036412B2 (en) Dynamically changing between latency-focused read operation and bandwidth-focused read operation
US10853254B2 (en) Memory system having a memory controller and a memory device having a page buffer
US11354041B2 (en) Read latency reduction through command and polling overhead avoidance
US11726717B2 (en) NAND dropped command detection and recovery
US20140237177A1 (en) Memory module and memory system having the same
KR102365602B1 (ko) 지능형 임계치 검출을 통한 커맨드 최적화
KR102502318B1 (ko) 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법
US11347420B2 (en) Attribute mapping in multiprotocol devices
JP2021522567A (ja) カウンタ更新動作のための装置及び方法
US11892928B2 (en) Delayed thermal throttling and associated data routing techniques
US20220147274A1 (en) Storage device and operating method thereof
US11775222B2 (en) Adaptive context metadata message for optimized two-chip performance
CN113454720B (zh) 存储设备及其控制方法
CN113253910B (zh) Nand丢弃的命令检测和恢复
KR20220155518A (ko) 전자 장치, 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 장치의 동작 방법
KR20220032816A (ko) 메모리 시스템에서 데이터 통신을 보정하는 장치 및 방법
US20220121391A1 (en) Management of operations during exception handling in memory
US20240086071A1 (en) Ssd use of host memory buffer for improved performance
US11256423B2 (en) Efficiently identifying command readiness based on system state and data spread in multi queue depth environment
US20230305743A1 (en) Memory controller and memory system including the same
KR20240015513A (ko) 메모리 시스템 및 그 동작 방법

Legal Events

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