KR20210121994A - 지능형 임계치 검출을 통한 커맨드 최적화 - Google Patents

지능형 임계치 검출을 통한 커맨드 최적화 Download PDF

Info

Publication number
KR20210121994A
KR20210121994A KR1020200070782A KR20200070782A KR20210121994A KR 20210121994 A KR20210121994 A KR 20210121994A KR 1020200070782 A KR1020200070782 A KR 1020200070782A KR 20200070782 A KR20200070782 A KR 20200070782A KR 20210121994 A KR20210121994 A KR 20210121994A
Authority
KR
South Korea
Prior art keywords
parameter
read
memory location
controller
threshold
Prior art date
Application number
KR1020200070782A
Other languages
English (en)
Other versions
KR102365602B1 (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 KR20210121994A publication Critical patent/KR20210121994A/ko
Application granted granted Critical
Publication of KR102365602B1 publication Critical patent/KR102365602B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • 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/10Programming or data input circuits
    • 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/26Sensing or reading circuits; Data output circuits
    • 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/30Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system

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)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

동일한 다이에 대해 동일한 판독 전압 임계치 오프셋들을 갖는 설정 피처 커맨드들의 재송신을 방지하는, 메모리 및 컨트롤러를 포함하는 저장 디바이스의 태양들이 제공된다. 컨트롤러가 메모리에 저장된 데이터에 대한 제1 판독 커맨드를 수신할 때, 컨트롤러는 제1 판독 임계치를 수정하기 위한 제1 파라미터를 식별하고, 제1 파라미터에 기초하여 판독 임계치를 수정하기 위한 제1 설정 피처 커맨드를 실행한다. 후속하여, 컨트롤러가 메모리에 저장된 데이터에 대한 제2 판독 커맨드를 호스트 디바이스로부터 수신할 때, 컨트롤러는 제2 판독 임계치를 수정하기 위한 제2 파라미터를 식별하고, 제1 파라미터와 제2 파라미터가 동일한 때를 결정한다. 파라미터들이 동일하면, 컨트롤러는 제2 판독 임계치를 수정하기 위한 제2 설정 피처 커맨드를 실행하는 것을 억제한다. 따라서, 저장 디바이스의 판독 레이턴시가 감소될 수 있다.

Description

지능형 임계치 검출을 통한 커맨드 최적화{COMMAND OPTIMIZATION THROUGH INTELLIGENT THRESHOLD DETECTION}
본 개시는 일반적으로 전자 디바이스들에 관한 것이며 더 구체적으로는 저장 디바이스들에 관한 것이다.
저장 디바이스들은 사용자들이 데이터를 저장하고 검색하는 것을 가능하게 한다. 저장 디바이스들의 예는 비휘발성 메모리 디바이스들을 포함한다. 비휘발성 메모리는 일반적으로 전력 사이클 후에 데이터를 유지한다. 비휘발성 메모리의 예는 하나 이상의 다이 상에 NAND 셀들의 어레이(들)를 포함할 수 있는 플래시 메모리이다. 플래시 메모리는 SSD(solid-state device)들, SD(Secure Digital) 카드들 등에서 발견될 수 있다.
플래시 저장 디바이스가 데이터와 관련된 제어 정보를 저장할 수 있다. 예를 들어, 플래시 저장 디바이스가 논리 어드레스들 대 물리 어드레스들의 매핑을 포함하는 제어 테이블들을 유지할 수 있다. 이러한 제어 테이블들은 플래시 메모리 내의, 논리 섹터들 또는 블록들의 물리 위치를 추적하는 데 사용된다. 제어 테이블들은 전력 사이클 후에 저장된 데이터에의 액세스를 가능하게 하기 위해 비휘발성 메모리에 저장된다.
플래시 저장 디바이스가 플래시 메모리의 셀로부터, 예를 들어, 블록과 같은 메모리 위치로부터 데이터를 판독할 때, 셀의 판독 전압이 하나 이상의 판독 전압 임계치와 비교되고, 그 비교에 기초하여 셀에 저장된 데이터(예를 들어, 로직 0 또는 1)가 식별된다. 몇몇 경우에, 플래시 저장 디바이스는 동적 판독들을 수행할 수 있고, 그 동안 판독 전압 임계치(들)는 셀 내의 저장된 데이터를 명확하게 식별하기 위해 각각의 판독 전에 설정 피처 커맨드를 이용하여 오프셋될 수 있다. 그러나, 각각의 판독 전에 설정 피처 커맨드를 전송하는 것은 판독 감지 커맨드에 비해 상당한 시간이 걸릴 수 있고(예를 들어, 판독에 대한 1 μs 미만과 비교하여 대략 2 μs), 이에 따라 판독 레이턴시를 증가시키고 플래시 저장 디바이스의 성능에 영향을 줄 수 있다.
저장 디바이스의 일 태양이 본 명세서에 개시된다. 저장 디바이스는 메모리 및 컨트롤러를 포함한다. 메모리는 제1 메모리 위치 및 제2 메모리 위치를 포함한다. 컨트롤러는 제1 메모리 위치에 저장된 데이터에 대한 제1 판독 커맨드를 호스트 디바이스로부터 수신하고, 제1 메모리 위치와 관련된 제1 판독 임계치를 수정하기 위한 제1 파라미터를 식별하고, 제1 파라미터에 기초하여 제1 판독 임계치를 수정하기 위한 제1 설정 피처 커맨드를 실행하도록 구성된다. 컨트롤러는 제2 메모리 위치에 저장된 데이터에 대한 제2 판독 커맨드를 호스트 디바이스로부터 수신하고, 제2 메모리 위치와 관련된 제2 판독 임계치를 수정하기 위한 제2 파라미터를 식별하고, 제2 파라미터가 제1 파라미터와 동일할 때 제2 판독 임계치를 수정하기 위한 제2 설정 피처 커맨드를 실행하는 것을 억제하도록 추가로 구성된다.
방법의 일 태양이 본 명세서에 개시된다. 방법은 저장 디바이스의 메모리의 제1 메모리 위치에 저장된 데이터에 대한 제1 판독 커맨드를 호스트 디바이스로부터 수신하는 단계, 제1 메모리 위치와 관련된 제1 판독 임계치를 수정하기 위한 제1 파라미터를 식별하는 단계, 및 제1 파라미터에 기초하여 제1 판독 임계치를 수정하기 위한 제1 설정 피처 커맨드를 실행하는 단계를 포함한다. 방법은 저장 디바이스의 메모리의 제2 메모리 위치에 저장된 데이터에 대한 제2 판독 커맨드를 호스트 디바이스로부터 수신하는 단계, 제2 메모리 위치와 관련된 제2 판독 임계치를 수정하기 위한 제2 파라미터를 식별하는 단계, 및 제2 파라미터가 제1 파라미터와 동일할 때 제2 판독 임계치를 수정하기 위한 제2 설정 피처 커맨드를 실행하는 것을 억제하는 단계를 추가로 포함한다.
저장 디바이스의 추가 태양이 본 명세서에 개시된다. 저장 디바이스는 메모리 및 컨트롤러를 포함한다. 메모리는 제1 메모리 위치 및 제2 메모리 위치를 포함한다. 컨트롤러는 제1 메모리 위치에 저장된 데이터에 대한 제1 판독 커맨드를 호스트 디바이스로부터 수신하고, 제1 메모리 위치와 관련된 제1 판독 임계치를 수정하기 위한 제1 파라미터를 식별하고, 제1 파라미터에 기초하여 제1 판독 임계치를 수정하기 위한 제1 설정 피처 커맨드를 실행하고, 제2 메모리 위치에 저장된 데이터에 대한 제2 판독 커맨드를 호스트 디바이스로부터 수신하고, 제2 메모리 위치와 관련된 제2 판독 임계치를 수정하기 위한 제2 파라미터를 식별하도록 구성된다. 저장 디바이스는 또한 제1 파라미터를 제2 파라미터와 비교하기 위한 수단을 포함한다. 컨트롤러는 비교하기 위한 수단에 기초하여 제2 파라미터가 제1 파라미터와 동일한 때를 결정하고, 제2 파라미터가 제1 파라미터와 동일할 때 제2 판독 임계치를 수정하기 위한 제2 설정 피처 커맨드를 실행하는 것을 억제하도록 추가로 구성된다.
장치들 및 방법들의 다양한 태양들이 예시로서 제시되고 설명되는 하기의 상세한 설명으로부터 저장 디바이스 및 방법의 다른 태양들이 당업자에게 즉시 명백해질 것으로 이해된다. 인식될 바와 같이, 이들 태양은 다른 형태 및 상이한 형태로 구현될 수 있고, 그의 몇몇 상세 사항들은 다양한 다른 측면들에서 수정이 가능하다. 따라서, 도면 및 상세한 설명은 본질적으로 예시적인 것으로 간주되어야 하며 제한적인 것으로 간주되어서는 안된다.
이제 첨부 도면들을 참조하여 본 발명의 다양한 태양들이 제한으로서가 아니라 예로서 상세한 설명에서 제시될 것이다.
도 1은 호스트 디바이스와 통신하는 저장 디바이스의 예시적인 실시예를 예시하는 블록도이다.
도 2는 도 1의 저장 디바이스의 비휘발성 메모리 내의 논리 대 물리 매핑 테이블(logical-to-physical mapping table)의 예를 예시하는 개념도이다.
도 3은 도 1의 저장 디바이스 내의 멀티-레벨 셀들에 대한 전압 분포 차트의 예를 예시하는 개념도이다.
도 4는 도 1의 저장 디바이스에 의해 각각의 동적 판독 커맨드 전에 실행되는 설정 피처 커맨드의 예를 예시하는 개념도이다.
도 5는 도 4에서의 각각의 설정 피처 커맨드 및 동적 판독 커맨드에 대한 타이밍 차트의 예를 예시하는 개념도이다.
도 6은 동일한 판독 전압 임계치 오프셋들을 갖는 다수의 설정 피처 커맨드들을 실행하는 것을 억제하기 위해 도 1의 저장 디바이스에 의해 사용되는 임계치 이력 버퍼 및 비교기의 예를 예시하는 개념도이다.
도 7은 도 1의 저장 디바이스에 의해 초기 동적 판독 커맨드에 대해서는 실행되지만 후속 동적 판독 커맨드들에 대해서는 실행되는 것이 억제되는 설정 피처 커맨드의 예를 예시하는 개념도이다.
도 8은 도 1의 저장 디바이스에 의한 동일한 판독 전압 임계치 오프셋들을 갖는 다수의 설정 피처 커맨드들의 재송신을 방지하기 위한 방법을 예시하는 흐름도이다.
첨부 도면들과 관련하여 아래에 기재되는 상세한 설명은 본 발명의 다양한 예시적인 실시예들의 설명으로 의도되며, 본 발명이 실시될 수 있는 유일한 실시예들을 나타내도록 의도되지 않는다. 상세한 설명은 본 발명의 완전한 이해를 제공할 목적으로 특정한 상세 사항들을 포함한다. 그러나, 본 발명이 이러한 특정한 상세 사항들 없이도 실시될 수 있다는 것이 당업자에게 명백할 것이다. 몇몇 경우에, 잘 알려진 구조들 및 컴포넌트들은 본 발명의 개념들을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다. 두문자어들 및 다른 기술 용어(descriptive terminology)는 단지 편의 및 명료함을 위해 사용될 수 있으며, 본 발명의 범위를 제한하도록 의도되지 않는다.
단어들 "예시적인" 및 "예"는 본 명세서에서 예, 사례, 또는 예시로서의 역할을 하는 것을 의미하도록 사용된다. 본 명세서에서 "예시적인"으로 기술되는 임의의 예시적인 실시예는 반드시 다른 예시적인 실시예들에 비해 바람직하거나 유리한 것으로 해석되어야 하는 것은 아니다. 마찬가지로, 용어 장치, 방법 또는 제조 물품의 "예시적인 실시예"는 본 발명의 모든 예시적인 실시예들이 기술된 컴포넌트들, 구조, 특징들, 기능, 프로세스들, 이점들, 이익들, 또는 동작 모드들을 포함할 것을 요구하지는 않는다.
하기의 상세한 설명에서, 호스트 디바이스와 통신하는 저장 디바이스의 다양한 태양들이 제시될 것이다. 이들 태양은 SSD들 및 SD 카드들과 같은 플래시 저장 디바이스들에 상당히 적합하다. 그러나, 당업자는 이들 태양이 데이터를 저장할 수 있는 모든 유형의 저장 디바이스들로 확장될 수 있다는 것을 인식할 것이다. 따라서, 특정 장치 또는 방법에 대한 임의의 언급은 단지 본 발명의 다양한 태양들을 예시하도록 의도될 뿐이며, 그러한 태양들은 본 개시의 사상 및 범위로부터 벗어남이 없이 광범위한 응용들을 가질 수 있다는 것이 이해되어야 한다.
저장 디바이스가 단일 다이의 다수의 동적 판독들을 수행할 때, 저장 디바이스는 일반적으로 각각의 판독 전에 설정 피처 커맨드를 전송한다. 각각의 설정 피처 커맨드는 하나 이상의 판독 전압 임계치 오프셋을 포함할 수 있으며, 이는 (예를 들어, 로직 0 또는 1로서) 셀에 저장된 데이터를 명확하게 식별함에 있어서 저장 디바이스를 돕기 위해 셀들의 디폴트, 프로그램된 판독 전압 임계치(들)를 수정한다. 그러나, 동일한 다이의 동적 판독들과 같은 소정 경우들에서, 동일한 판독 전압 임계치 오프셋들을 나타내는 다수의 설정 피처 커맨드들이 제공될 수 있다. 그러한 중복 설정 피처 커맨드들은 비효율적일 수 있으며, 이는 판독 레이턴시를 증가시키고 저장 디바이스의 성능에 영향을 줄 수 있다.
저장 디바이스 성능을 개선하기 위해, 본 개시는 저장 디바이스의 컨트롤러가 각각의 다이 또는 페이지에 대한 임계치 이력 버퍼, 및 XOR 엔진과 같은 비교기에 기초하여 동일한 판독 전압 임계치 오프셋들을 갖는 다수의 설정 피처 커맨드들을 전송하는 것을 억제할 수 있게 한다. 컨트롤러가 초기 동적 판독을 수행할 때, 컨트롤러는 (다이의 블록과 같은) 메모리 위치의 셀들에 대한 판독 전압 임계치 오프셋을 나타내는 파라미터, 예를 들어, 임계치 벡터를 식별한다. 이어서 컨트롤러는 파라미터를 그 다이(또는 페이지)에 대한 임계치 이력 버퍼에, 예를 들어, 마지막 임계치 벡터로서 저장한다. 컨트롤러는 이 파라미터를 포함하는 초기 설정 피처 커맨드를 실행하여 판독 전압 임계치를 수정하고, 이어서 컨트롤러는 그에 맞춰 동적 판독을 수행한다. 그 후에, 컨트롤러가 그 다이에 대해 다른 동적 판독을 수행할 때, 컨트롤러는 다른 판독 전압 임계치 오프셋을 나타내는 새로운 파라미터, 예를 들어, 타깃 임계치 벡터를 식별한다.
그러나, 이러한 새로운 파라미터를 포함하는 다른 설정 피처 커맨드를 실행하기 전에, 컨트롤러는 비교기를 이용하여 새로운 파라미터(타깃 임계치 벡터)가 저장된 파라미터(마지막 임계치 벡터)와 동일한지 여부를 결정한다. 파라미터들이 동일하면(예를 들어, XOR 결과가 0이거나 XNOR 결과가 0이 아니면), 컨트롤러는 판독 전압 임계치 오프셋이 변경되지 않은 것으로 결정하고, 컨트롤러는 후속 동적 판독을 수행하기 전에 다른 설정 피처 커맨드를 전송하는 것을 억제한다. 그렇지 않고, 파라미터들이 상이하면(예를 들어, XOR 결과가 0이 아니거나 XNOR 결과가 0이면), 컨트롤러는 후속 동적 판독을 수행하기 전에 새로운 오프셋을 갖는 다른 설정 피처 커맨드를 실행하고, 그 다이 또는 페이지에 대한 임계치 이력 버퍼는 오프셋을 나타내는 새로운 파라미터로 덮어쓰여진다. 이러한 방식으로, 저장 디바이스는 동일한 다이를 동적으로 판독할 때 동일한 판독 전압 임계치 오프셋을 갖는 설정 피처 커맨드들을 재송신하는 것을 억제할 수 있으며, 그에 의해 전체 판독 레이턴시를 감소시키고 저장 디바이스 성능을 개선할 수 있다.
도 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)은, 예를 들어, 단일-레벨 셀들, 멀티-레벨 셀들, 트리플-레벨 셀들, 쿼드-레벨 셀들, 및/또는 펜타-레벨 셀들일 수 있다. 메모리 위치들(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)에 저장한다.
컨트롤러(123)가 위에 설명된 바와 같이 NVM(110)으로부터 데이터(119)를 판독할 때, 컨트롤러는 셀들(116)에서의 전압을 하나 이상의 판독 전압 임계치와 비교하여 데이터의 논리 값을 결정한다. 도 3은 2 비트의 데이터(예를 들어, 로직 00, 01, 10, 또는 11)를 저장하는 멀티-레벨 셀들에 대한 전압 분포 차트(300)의 예를 예시한다. 각각의 멀티-레벨 셀의 논리 값은 셀에서의 전압과 판독 임계 전압들(302, 304, 306)의 비교에 기초하여 결정될 수 있다. 예를 들어, 컨트롤러는 특정 셀이 셀의 전압이 판독 임계 전압(302) 아래에 있을 때 로직 '11'에, 전압이 판독 임계 전압(302)과 판독 임계 전압(304) 사이에 있을 때 로직 '10'에, 전압이 판독 임계 전압(304)과 판독 임계 전압(306) 사이에 있을 때 로직 '01'에, 또는 전압이 판독 임계 전압(306) 위에 있을 때 로직 '00'에 대응하는 데이터를 저장하는 것으로 결정할 수 있다. 도 3은 멀티-레벨 셀들에 대한 3개의 판독 임계 전압을 예시하지만, 판독 임계 전압의 수는 각각의 셀에 저장되는 데이터의 양에 따라 달라질 수 있다(예를 들어, 단일-레벨 셀들에 대한 하나의 임계 전압, 트리플-레벨 셀들에 대한 7개의 임계 전압 등).
컨트롤러(123)는 디폴트 판독 전압들(예를 들어, 판독 임계 전압들(302, 304, 306))을 이용하여 셀들(116)로부터 데이터(119)를 판독할 수 있지만, 몇몇 경우에 판독 임계 전압들은 셀들 내의 저장된 데이터를 명확하게 구별하지 못할 수 있다(예를 들어, 로직 00, 01 등으로서). 예를 들어, 몇몇 경우에 판독 임계 전압들(302, 304, 306)은 도 3의 각자의 곡선들 중 하나 이상과 겹쳐서, 가능한 데이터 판독 오류를 야기할 수 있다. 그러한 경우에, 컨트롤러는 동적 판독 동작을 수행함으로써, 예를 들어, 데이터를 판독할 때 디폴트 판독 임계치들을 수정하기 위한 판독 임계 전압 오프셋들을 동적으로 적용함으로써 판독 오류들을 감소시킬 수 있다. 판독 임계치들을 수정하기 위해, 컨트롤러(123)는 설정 피처 커맨드를 전송할 수 있다.
도 4는 개별 설정 피처 커맨드들이 선행하는 다수의 동적 판독 커맨드들의 예(400)를 예시한다. 컨트롤러(123)가 호스트 디바이스(104)로부터 제1 판독 커맨드를 수신할 때, 컨트롤러는 호스트 디바이스에 의해 요청된 데이터에 대해 제1 동적 판독 커맨드(404)를 실행하기 전에 판독 전압 임계치(들)(302, 304, 306)를 수정하기 위한 제1 설정 피처 커맨드(402)를 실행할 수 있다. 유사하게, 컨트롤러가 호스트 디바이스로부터 제2 판독 커맨드를 수신할 때, 컨트롤러는 호스트 디바이스에 의해 요청된 데이터에 대해 제2 동적 판독 커맨드(408)를 실행하기 전에 판독 전압 임계치(들)를 수정하기 위한 제2 설정 피처 커맨드(406)를 실행할 수 있다. 각각의 동적 판독 커맨드는 특정 다이의 단일 평면 내의 데이터를 요청할 수 있다(예를 들어, 단일 평면 동적 판독).
일 예에서, 컨트롤러(123)가 설정 피처 커맨드(402, 406)를 실행할 때, 컨트롤러는 커맨드를 나타내는 값(예를 들어, 설정 피처에 대한 D5h), 커맨드에 대한 타깃 다이를 나타내는 다이 어드레스, 전압 임계치 오프셋들을 저장하기 위한 피처 레지스터를 나타내는 피처 어드레스, 및 피처 레지스터에 저장될 전압 임계치 오프셋들을 나타내는 하나 이상의 파라미터(들)(403, 407)(예를 들어, 4개의 바이트의 시퀀스)를 NVM(110) 내의 시퀀서에 전송할 수 있다. 몇몇 경우에, 컨트롤러는 후속하여 동적 판독 커맨드(404, 408)의 전송으로 진행하기 전에 다이의 내부 비지 상태(busy status)를 추적할 수 있다(예를 들어, 상태 조회를 통해). 대안적으로, 컨트롤러는 동적 판독 커맨드를 전송하기 전에 내부 비지 상태를 추적하는 것을 억제하고 소정 기간(예를 들어, tFeat_NO_BUSY 또는 대략 700 ns 또는 다른 수) 동안 기다릴 수 있으며, 이는 내부 비지 상태를 추적하는 것보다 더 많은 시간(예를 들어, 적어도 300 내지 도 400 ns)을 최적으로 절약할 수 있다.
설정 피처 커맨드(402, 406)를 실행한 후에, 컨트롤러(123)가 동적 판독 커맨드(404, 408)를 실행할 때, 컨트롤러는 커맨드를 나타내는 값들(예를 들어, 동적 판독에 대한 5Dh, 이어서 판독 동작에 대한 00h 및 30h), 데이터를 판독하기 위한 물리 어드레스(예를 들어, 물리 어드레스(210)), 및 다이가 준비되었다는 지시를 컨트롤러가 수신할 때까지 반복될 수 있는 상태 커맨드들(예를 들어, F1h)을 시퀀서에 전송할 수 있다. 피처 레지스터에 저장된 파라미터들(403, 407)은 셀들로부터 데이터를 판독할 때 판독 전압 임계치들을 오프셋하는 데 사용될 수 있다. 일단 데이터가 동적으로 판독되면, 데이터는 후속하여 호스트 디바이스로의 전송을 위해 컨트롤러로, 예를 들어, 휘발성 메모리(118)로 전송된다.
그러나, 저장 디바이스(102)가 전압 임계치 오프셋들에 기초하여 데이터를 판독하기 위해 동적 판독 커맨드들(404, 408)에 크게 의존할 때, 각각의 동적 판독 커맨드 이전에 설정 피처 커맨드(402, 406)를 전송하는 것은 저장 디바이스의 판독 레이턴시를 증가시킬 수 있다. 도 5는 설정 피처 커맨드와 동적 판독 커맨드 사이의 타이밍 차이의 예를 보여주는 타이밍 다이어그램(500)을 예시한다. 다이어그램에 도시된 바와 같이, 설정 피처 커맨드를 실행하기 위한 타이밍(502)은 동적 판독 커맨드를 실행하기 위한 타이밍(504)보다 상당히 더 길 수 있다. 예를 들어, 판독 감지 커맨드를 완료하기 위한 타이밍(504)은 1 μs 미만일 수 있지만, 설정 피처 커맨드를 구성 및 전송하기 위한 타이밍(502)은 (위에서 설명된 바와 같이 비지 상태 추적을 사용하지 않도록 최적화된 경우에도) 대략 2 μs일 수 있다. 따라서, 설정 피처 커맨드가 각각의 판독 감지 커맨드 이전에 재송신될 때, 저장 디바이스의 판독 레이턴시에 대한 전체적인 영향은, 특히 순차적 판독들에 대해서보다 더 많은 동적 판독 커맨드들이 실행될 수 있는 랜덤 판독들에 대해, 상당할 수 있다.
이러한 문제를 해결하기 위해, 도 6은 전술된 판독 레이턴시를 감소시키기 위해서 설정 피처 커맨드들(예를 들어, 제2 설정 피처 커맨드(406))의 재송신을 최소화하기 위해 사용될 수 있는 임계치 이력 버퍼(602) 및 비교기(604)의 예(600)를 예시한다. 임계치 이력 버퍼(602)는 다이에 대한 가장 최근의 또는 마지막 임계치 벡터를 저장하는 휘발성 메모리(118)(예를 들어, 캐시(122)) 내의 버퍼일 수 있다. 마지막 임계치 벡터는 특정 다이에 대한 판독 임계 전압 오프셋(들)을 나타내는, 설정 피처 커맨드(402, 406)에서 식별된 파라미터(403, 407)일 수 있다. 예를 들어, 도 4를 참조하면, 마지막 임계치 벡터는 동적 판독 커맨드(404)가 가장 최근에 실행된 판독 커맨드일 때 설정 피처 커맨드(402) 내의 파라미터(403)(예를 들어, 4개의 바이트의 시퀀스)에 대응할 수 있다. 임계치 이력 버퍼(602)는 펌웨어/소프트웨어로, 또는 도 6에 예시된 바와 같이 하드웨어(예를 들어, ASIC)로 구현될 수 있다. 예를 들어, 임계치 이력 버퍼는 위에 설명된 바와 같이 전압 임계치 오프셋들을 저장하는 피처 레지스터에 와이어링된 하나 이상의 데이터 래치를 포함할 수 있다.
일 예에서, 임계치 이력 버퍼(602)는 개별 다이(601)와 관련될 수 있다. 예를 들어, 다수의 임계치 이력 버퍼들(602)이 하드웨어로 존재할 수 있으며, 이때 각각의 버퍼가 각자의 다이와 관련된다. 따라서, 각각의 임계치 이력 버퍼는 상이한 다이에 대한 마지막 임계치 벡터를 저장할 수 있다. 예를 들어, 설정 피처 커맨드들(402, 406)이 상이한 다이 어드레스들을 포함한다면, 파라미터(403)는 제1 다이 어드레스와 관련된 하나의 임계치 이력 버퍼에 저장될 수 있고, 파라미터(407)는 제2 다이 어드레스와 관련된 다른 임계치 이력 버퍼에 저장될 수 있다.
다른 예에서, 임계치 이력 버퍼(602)는 메모리 위치(605)의 개별 페이지(603)와 관련될 수 있다. 메모리 위치(605)는 메모리 위치(112), 예를 들어, 블록(114)에 대응할 수 있다. 예를 들어, 다수의 임계치 이력 버퍼들(602)이 하드웨어로 존재할 수 있으며, 이때 각각의 버퍼가 다이의 블록의 각자의 페이지와 관련된다. 따라서, 각각의 임계치 이력 버퍼는 상이한 페이지에 대한 마지막 임계치 벡터를 저장할 수 있다. 예를 들어, 동적 판독 커맨드들(404, 408)이 (상이한 페이지들과 관련된) 상이한 물리 어드레스들을 포함한다면, 파라미터(403)는 제1 페이지와 관련된 하나의 임계치 이력 버퍼에 저장될 수 있고, 파라미터(407)는 제2 페이지와 관련된 다른 임계치 이력 버퍼에 저장될 수 있다.
각각의 임계치 이력 버퍼(602)는 마지막 임계치 벡터의 개별 컴포넌트들 또는 전압 설정들을 나타내는 하나 이상의 지시자(606) 또는 변수(예를 들어, A, C, E, G)를 포함할 수 있다. 예를 들어, 제1 지시자 A는 파라미터(403)의 제1 바이트를 나타낼 수 있고, 제2 지시자 C는 파라미터(403)의 제2 바이트를 나타낼 수 있고, 제3 지시자 E는 파라미터(403)의 제3 바이트를 나타낼 수 있고, 제4 지시자 G는 파라미터(403)의 제4 바이트를 나타낼 수 있다. 도 6에 예시된 임계치 이력 버퍼(602)는 4개의 지시자(A, C, E, G)를 갖고서 4개의 바이트(32 비트)에 걸쳐 있지만, 임계치 이력 버퍼(602)는 대안적으로 파라미터(403)의 길이 또는 구성에 기초하여 다른 길이들에 걸쳐 있거나 다른 수의 지시자(606)를 포함할 수 있다. 예를 들어, 파라미터(403)가 단일 바이트이면, 임계치 이력 버퍼(602)는 각각이 파라미터(403)의 2 비트를 나타내는 4개의 지시자, 파라미터(403)의 전체 8 비트를 나타내는 하나의 지시자, 또는 다른 예들을 포함할 수 있다.
비교기(604)는, 입력으로서, 임계치 이력 버퍼(602)로부터 데이터를 수신할 수 있다. 비교기(604)는 펌웨어/소프트웨어로(예를 들어, XOR 또는 XNOR 피연산자로서), 또는 도 6에 예시된 바와 같이 하드웨어로 구현될 수 있다. 예를 들어, 비교기(604)는 임계치 이력 버퍼(602)에 와이어링된 XOR 게이트들 또는 XNOR 게이트들을 포함할 수 있다. 비교기(604)의 길이는 임계치 이력 버퍼(602)의 길이에 대응할 수 있다. 예를 들어, 임계치 이력 버퍼(602)가 위에서 설명된 바와 같이 길이가 32 비트에 걸쳐 있다면, 비교기(604)는 임계치 이력 버퍼로부터 개별 비트들을 각각 수신하는 32개의 XOR 또는 XNOR 게이트를 포함할 수 있다. 또한, 도 6은 하나의 비교기(604) 및 임계치 이력 버퍼(602)를 예시하지만, 다수의 비교기들 및 임계치 이력 버퍼들이 존재할 수 있다. 예를 들어, 위에서 설명된 바와 같이 다수의 임계치 이력 버퍼들이 각각 상이한 다이들(또는 페이지들)과 관련되는 경우, 각자의 임계치 이력 버퍼들에 개별적으로 와이어링된 다수의 비교기들(604)이 하드웨어에 포함될 수 있다.
컨트롤러(123)가 호스트 디바이스(104)로부터 판독 커맨드를 수신할 때, 컨트롤러는 NVM(110)으로부터 데이터를 판독하기 위한 판독 전압 임계치 오프셋을 나타내는 타깃 임계치 벡터(608)를 식별할 수 있다. 예를 들어, 판독 커맨드가 특정 다이와 관련된 첫 번째 판독 커맨드일 때, 타깃 임계치 벡터는 첫 번째 판독 커맨드(예를 들어, 동적 판독 커맨드(404))와 관련된 다이에 대한 판독 임계 전압 오프셋(들)을 나타내는 바이트들의 시퀀스일 수 있는, 도 4의 파라미터(403)에 대응할 수 있다. 대안적으로, 판독 커맨드가 동일한 다이와 관련된 두 번째 또는 그 이후의 판독 커맨드일 때, 타깃 임계치 벡터는 두 번째 또는 그 이후의 판독 커맨드(예를 들어, 동적 판독 커맨드(408))와 관련된 다이에 대한 판독 임계 전압 오프셋(들)을 나타내는 바이트들의 시퀀스일 수 있는, 도 4의 파라미터(407)에 대응할 수 있다. 타깃 임계치 벡터(608)는 또한 임계치 이력 버퍼(602) 내의 마지막 임계치 벡터와 동일한 길이를 가질 수 있다. 예를 들어, 타깃 임계치 벡터(608)는 유사하게 4개의 지시자(A, C, E, 및 G)에 의해 표현될 수 있으며, 이때 각각의 지시자는 도 4에 예시된 파라미터(403 또는 407)의 4개의 바이트 중 대응하는 하나를 나타낸다.
동작의 일 예에서, 컨트롤러는 다이(601)의 메모리 위치(605, 607)로부터 데이터를 판독하기 위한 제1 판독 커맨드를 수신할 수 있다. 그러한 경우에, 컨트롤러는 그 메모리 위치에서의 셀들 또는 페이지(603)에 대한 판독 전압 임계치(들)를 수정하기 위한 초기 타깃 임계치 벡터(예를 들어, 파라미터(403))를 식별할 수 있고, 컨트롤러는 판독 동작(예를 들어, 동적 판독 커맨드(404))을 수행하기 전에 설정 피처 커맨드(예를 들어, 설정 피처 커맨드(402))를 전송할 수 있다. 이어서 다이(601) 또는 페이지(603)에 대한 임계치 이력 버퍼(602)는 초기 타깃 임계치 벡터로 업데이트될 수 있으며, 그에 의해 다이 또는 페이지에 대한 마지막 임계치 벡터가 될 수 있다. 예를 들어, 임계치 이력 버퍼가 펌웨어/소프트웨어로 구현될 때, 컨트롤러(123)는 가장 최근에 식별된 임계치 벡터로 버퍼를 업데이트할 수 있다. 다른 예에서, 임계치 이력 버퍼가 하드웨어로 구현될 때, 임계치 이력 버퍼는 피처 레지스터로부터의 판독 전압 임계치 오프셋들로 자동으로 업데이트될 수 있다(예를 들어, 설정 피처 커맨드(402)에 응답하여).
후속하여, 컨트롤러는 다이(601)의 메모리 위치(605, 607)로부터 데이터를 판독하기 위한 제2 판독 커맨드를 수신할 수 있다. 그러한 경우에, 컨트롤러는 그 메모리 위치에서의 셀들 또는 페이지(603)에 대한 판독 전압 임계치(들)를 수정하기 위한 타깃 임계치 벡터(608)(예를 들어, 파라미터(407))를 식별할 수 있다. 그러나, 컨트롤러는 임계치 벡터 또는 오프셋(들)이 이전 설정 피처 커맨드 이후로 변경되지 않았다면 판독 동작(예를 들어, 동적 판독 커맨드(408))을 수행하기 전에 다른 설정 피처 커맨드(예를 들어, 설정 피처 커맨드(406))를 전송하는 것을 억제할 수 있다.
오프셋들이 변경되었는지를 결정하기 위해, 컨트롤러는 비교기(604)를 이용하여 타깃 임계치 벡터(608)를 다이(601) 또는 페이지(603)에 대응하는 임계치 이력 버퍼(602) 내의 마지막 임계치 벡터와 비교한다. 비교의 결과(610)가 파라미터들이 동일하다는 것을 나타낸다면, 컨트롤러는 설정 피처 커맨드를 재송신하는 것을 억제하고, 이전에 저장된 전압 임계치 오프셋들에 기초하여 동적 판독 커맨드(예를 들어, 동적 판독 커맨드(408))가 수행될 수 있다. 대안적으로, 비교의 결과(610)가 파라미터들이 상이하다는 것을 나타낸다면, 컨트롤러는 설정 피처 커맨드(예를 들어, 설정 피처 커맨드(406))를 재송신하고 업데이트된 전압 임계치 오프셋들에 기초하여 동적 판독 커맨드를 수행한다. 예를 들어, 비교기(604)가 XOR 게이트들을 포함한다면, 컨트롤러는 결과(610)가 0일 때 설정 피처 커맨드를 재송신하는 것을 억제할 수 있고, 컨트롤러는 결과(610)가 0이 아닐 때 설정 피처 커맨드를 재송신할 수 있다. 유사하게, 비교기(604)가 XNOR 게이트들을 포함한다면, 컨트롤러는 결과(610)가 0이 아닐 때 설정 피처 커맨드를 재송신하는 것을 억제할 수 있고, 컨트롤러는 결과(610)가 0일 때 설정 피처 커맨드를 재송신할 수 있다. 이어서 임계치 이력 버퍼(602)는 타깃 임계치 벡터로 업데이트될 수 있으며, 그에 의해 다이(601) 또는 페이지(603)에 대한 마지막 임계치 벡터가 될 수 있다. 예를 들어, 임계치 이력 버퍼가 하드웨어로 구현될 때, 임계치 이력 버퍼는 업데이트된 피처 레지스터로부터의 수정된 판독 전압 임계치 오프셋들로 자동으로 업데이트될 수 있다(예를 들어, 설정 피처 커맨드(406)에 응답하여).
그 결과, 저장 디바이스는 판독 전압 임계치 오프셋이 변경되지 않을 때 중복 설정 피처 커맨드를 전송하는 것을 억제할 수 있으므로, 저장 디바이스의 판독 레이턴시가 감소될 수 있다. 예를 들어, 도 7은 컨트롤러가 도 6에서의 임계치 벡터들의 비교의 결과(610)에 기초하여 동일한 다이에 대한 설정 피처 커맨드들을 재송신하는 것을 억제할 수 있는, 도 4에 관한 수정된 커맨드 시퀀스의 예(700)를 예시한다. 예를 들어, 컨트롤러는 특정 다이에 대한 초기 동적 판독 커맨드(704)를 전송하기 전에 호스트 디바이스로부터의 판독 커맨드에 응답하여 초기 설정 피처 커맨드(702)를 전송할 수 있지만, 컨트롤러는 위에서 설명된 임계치 벡터 비교에 기초하여 다른 동적 판독 커맨드(706)를 전송하기 전에 후속 판독 커맨드에 응답하여 다른 설정 피처 커맨드를 전송하는 것을 억제할 수 있다.
도 8은 동일한 판독 전압 임계치 오프셋들을 갖는 다수의 설정 피처 커맨드들의 재송신을 방지하기 위한 방법의 예시적인 흐름도(800)를 예시한다. 예를 들어, 이 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은 아래에 설명된 바와 같은 컨트롤러(예를 들어, 컨트롤러(123))를 이용하여, 또는 어떤 다른 적합한 수단에 의해 제어될 수 있다. 선택적인 태양들은 파선으로 예시되어 있다.
블록 802에 의해 표현된 바와 같이, 컨트롤러는 메모리의 제1 메모리 위치에 저장된 데이터에 대한 제1 판독 커맨드를 호스트 디바이스로부터 수신한다. 예를 들어, 도 1 및 도 6을 참조하면, 컨트롤러(123)는 NVM(110)의 메모리 위치(112)(예를 들어, 메모리 위치(605))에 저장된 데이터(119)에 대한 제1 판독 커맨드를 호스트 디바이스(104)로부터 수신할 수 있다.
블록 804에 의해 표현된 바와 같이, 컨트롤러는 제1 메모리 위치와 관련된 제1 판독 임계치를 수정하기 위한 제1 파라미터를 식별한다. 제1 파라미터는 제1 전압 설정을 포함할 수 있다. 제1 파라미터는 또한 제1 메모리 위치를 갖는 다이를 나타낼 수 있다. 더욱이, 제1 파라미터는 제1 메모리 위치의 제1 페이지를 나타낼 수 있다. 예를 들어, 도 1, 도 3, 도 4 및 도 6을 참조하면, 컨트롤러(123)는 파라미터(403), 예를 들어, 다이(601)의 메모리 위치(605)에서의 셀들(116)의 판독 전압 임계치(302, 304, 306)를 수정하기 위한 하나 이상의 지시자(606)(예를 들어, 전압 설정들 또는 판독 전압 임계치 오프셋들)를 포함하는 임계치 벡터를 식별할 수 있다. 임계치 벡터는 판독 커맨드에 대응하는 다이(601)와, 또는 다이(601) 내의 메모리 위치(605)의 페이지(603)와 관련되는 임계치 이력 버퍼(602)에 저장될 수 있다. 따라서, 파라미터(403)는 다이(601) 또는 페이지(603)를 나타낼 수 있다(예를 들어, 임계치 이력 버퍼 관련에 기초하여).
블록 806에 의해 표현된 바와 같이, 컨트롤러는 제1 파라미터에 기초하여 제1 판독 임계치를 수정하기 위한 제1 설정 피처 커맨드를 실행한다. 예를 들어, 도 1 및 도 4를 참조하면, 컨트롤러(123)는 파라미터(403)에 기초하여 판독 임계 전압(들)(302, 304, 306)을 수정하기 위한 설정 피처 커맨드(402)를 실행할 수 있다.
블록 808에 의해 표현된 바와 같이, 컨트롤러는 제1 파라미터를 메모리의 캐시에 저장할 수 있다. 예를 들어, 도 1, 도 4, 및 도 6을 참조하면, 컨트롤러(123)는 파라미터(403)를 페이지(603) 또는 다이(601)에 대한 마지막 임계치 벡터로서 임계치 이력 버퍼(602)에 저장할 수 있다. 임계치 이력 버퍼(602)는 휘발성 메모리(118)에(예를 들어, 캐시(122)에) 저장될 수 있다.
블록 810에 의해 표현된 바와 같이, 컨트롤러는 메모리의 제2 메모리 위치에 저장된 데이터에 대한 제2 판독 커맨드를 호스트 디바이스로부터 수신한다. 예를 들어, 도 1 및 도 6을 참조하면, 컨트롤러(123)는 NVM(110)의 메모리 위치(112)(예를 들어, 메모리 위치(607))에 저장된 데이터(119)에 대한 제2 판독 커맨드를 호스트 디바이스(104)로부터 수신할 수 있다.
블록 812에 의해 표현된 바와 같이, 컨트롤러는 제2 메모리 위치와 관련된 제2 판독 임계치를 수정하기 위한 제2 파라미터를 식별한다. 제2 파라미터는 제2 전압 설정을 포함할 수 있다. 제2 파라미터는 또한 제2 메모리 위치를 갖는 다이를 나타낼 수 있다. 더욱이, 제2 파라미터는 제2 메모리 위치의 제2 페이지를 나타낼 수 있다. 예를 들어, 도 1, 도 3, 도 4 및 도 6을 참조하면, 컨트롤러(123)는 파라미터(407), 예를 들어, 다이(601)의 메모리 위치(607)에서의 셀들(116)의 판독 전압 임계치(302, 304, 306)를 수정하기 위한 하나 이상의 지시자(606)(예를 들어, 전압 설정들 또는 판독 전압 임계치 오프셋들)를 포함하는 타깃 임계치 벡터(608)를 식별할 수 있다. 타깃 임계치 벡터(608)는 후속하여 판독 커맨드에 대응하는 다이(601)와, 또는 다이(601) 내의 메모리 위치(607)의 페이지(603)와 관련된 임계치 이력 버퍼(602) 내의 데이터를 덮어쓸 수 있다. 따라서, 파라미터(407)는 다이(601) 또는 페이지(603)를 나타낼 수 있다(예를 들어, 임계치 이력 버퍼 관련에 기초하여).
블록 814에 의해 표현된 바와 같이, 컨트롤러는 비교기를 이용하여 제2 파라미터가 제1 파라미터와 동일한 때를 결정한다. 예를 들어, 비교기는 하나 이상의 배타적-or(XOR) 게이트 또는 배타적-nor(XNOR) 게이트를 포함할 수 있다. 예를 들어, 도 1, 도 4, 및 도 6을 참조하면, 컨트롤러(123)는 비교기(604)를 이용하여 파라미터(403)(임계치 이력 버퍼(602) 내의 마지막 임계치 벡터)가 파라미터(407)(타깃 임계치 벡터(608))와 동일한지를 결정할 수 있다. 비교기(604)는, 예를 들어, XOR 게이트들 또는 XNOR 게이트들을 포함할 수 있다.
비교기(604)는 임계치 이력 버퍼(602) 내의 마지막 임계치 벡터(제1 파라미터)를 타깃 임계치 벡터(608)(제2 파라미터)와 비교하기 위한 수단을 제공할 수 있다. 일 예에서, 비교기(604)는 컨트롤러(123)의 하나 이상의 프로세서를 이용하여 구현될 수 있다. 예를 들어, 비교기(604)는 펌웨어/소프트웨어로(예를 들어, XOR 또는 XNOR 피연산자로서) 구현될 수 있다. 다른 예에서, 비교기(604)는 도 6에 예시된 바와 같이 하드웨어로 구현될 수 있다. 예를 들어, 비교기(604)는 임계치 이력 버퍼(602)에 와이어링된 XOR 게이트들 또는 XNOR 게이트들을 포함할 수 있다. 비교기(604)의 길이는 임계치 이력 버퍼(602)의 길이에 대응할 수 있다. 예를 들어, 임계치 이력 버퍼(602)가 길이가 32 비트에 걸쳐 있다면, 비교기(604)는 임계치 이력 버퍼로부터 개별 비트들을 각각 수신하는 32개의 XOR 또는 XNOR 게이트를 포함할 수 있다. 또한, 도 6은 하나의 비교기(604) 및 임계치 이력 버퍼(602)를 예시하지만, 다수의 비교기들 및 임계치 이력 버퍼들이 존재할 수 있다. 예를 들어, 위에서 설명된 바와 같이 다수의 임계치 이력 버퍼들이 각각 상이한 다이들(또는 페이지들)과 관련되는 경우, 각자의 임계치 이력 버퍼들에 개별적으로 와이어링된 다수의 비교기들(604)이 하드웨어에 포함될 수 있다.
마지막으로, 블록 816에 의해 표현된 바와 같이, 컨트롤러는 제2 파라미터가 제1 파라미터와 동일할 때 제2 판독 임계치를 수정하기 위한 제2 설정 피처 커맨드를 실행하는 것을 억제할 수 있다. 예를 들어, 도 1, 도 4, 도 6, 및 도 7을 참조하면, 컨트롤러(123)는 비교기(604)에 의해 결정된 바와 같이 파라미터들(403, 407)이 동일할 때 판독 전압 임계치들(302, 304, 306)을 수정하기 위한 설정 피처 커맨드(406)를 실행하는 것을 억제할 수 있다. 따라서, 도 7에 예시된 바와 같이, 컨트롤러(123)는 바로 이전의 설정 피처 커맨드 없이 동적 판독 커맨드(706)를 전송할 수 있다. 대안적으로, 제2 파라미터가 제1 파라미터와 동일하지 않다면, 컨트롤러(123)는 설정 피처 커맨드(406)를 실행할 수 있다. 임계치 이력 버퍼(602)는 상응하여 마지막 임계치 벡터(파라미터(407))로 업데이트될 수 있다.
따라서, 본 개시는 동일한 다이에 대해 동일한 전압 임계치 오프셋들을 갖는 다수의 설정 피처 커맨드들에 의해 야기되는 판독 레이턴시를 감소시킨다. 동일한 다이에 대해 수행되는 동적 판독들은 단일 설정 피처 커맨드로 최소화될 수 있으며, 그에 의해 동일한 판독 전압 임계치 오프셋들을 갖는 다수의 설정 피처 커맨드들에 의해 야기되는 비효율적인 버스 이용을 감소시킬 수 있다. 더욱이, 후속 동적 판독 동작들을 준비하기 위한 상당한 시간(예를 들어, 700 ns)을 절약함으로써 랜덤 판독 성능이 개선될 수 있으며, 그에 의해 더 많은 판독 동작들이 절약된 시간 안에 수행될 수 있게 할 수 있다.
본 개시의 다양한 태양들은 당업자가 본 발명을 실시하는 것을 가능하게 하기 위해 제공된다. 본 개시 전반에 걸쳐 제시된 예시적인 실시예들에 대한 다양한 수정들을 당업자가 손쉽게 알 수 있을 것이며, 본 명세서에 개시된 개념들은 다른 자기 저장 디바이스들로 확장될 수 있다. 따라서, 청구항들은 본 개시의 다양한 태양들로 제한되도록 의도되지 않으며, 청구항들의 언어와 부합하는 최대 범위가 부여되어야 한다. 당업자에게 알려진 또는 나중에 알려지게 되는 본 개시 전체에 걸쳐 설명된 예시적인 실시예들의 다양한 컴포넌트에 대한 모든 구조적 및 기능적 등가물들은 명백히 본 명세서에 참고로 포함되며 청구항들에 의해 포함되도록 의도된다. 더욱이, 본 명세서에 개시된 어떠한 것도 그러한 개시가 청구항들에서 명시적으로 언급되는지 여부에 관계없이 대중에 헌정되도록 의도되지 않는다. 어떠한 청구항 요소도, 그 요소가 문구 "~하기 위한 수단"을 사용해 명시적으로 언급되거나, 방법 청구항의 경우, 그 요소가 문구 "~하기 위한 단계"를 사용해 언급되지 않는 한, 미국의 35 U.S.C. §112(f)의 규정 또는 다른 관할권 내의 유사한 법령 또는 법규하에서 해석되어서는 안된다.

Claims (20)

  1. 저장 디바이스로서,
    제1 메모리 위치 및 제2 메모리 위치를 포함하는 메모리; 및
    상기 제1 메모리 위치에 저장된 데이터에 대한 제1 판독 커맨드를 호스트 디바이스로부터 수신하고, 상기 제1 메모리 위치와 관련된 제1 판독 임계치를 수정하기 위한 제1 파라미터를 식별하고, 상기 제1 파라미터에 기초하여 상기 제1 판독 임계치를 수정하기 위한 제1 설정 피처 커맨드를 실행하도록 구성된 컨트롤러를 포함하며,
    상기 컨트롤러는 상기 제2 메모리 위치에 저장된 데이터에 대한 제2 판독 커맨드를 상기 호스트 디바이스로부터 수신하고, 상기 제2 메모리 위치와 관련된 제2 판독 임계치를 수정하기 위한 제2 파라미터를 식별하고, 상기 제2 파라미터가 상기 제1 파라미터와 동일할 때 상기 제2 판독 임계치를 수정하기 위한 제2 설정 피처 커맨드를 실행하는 것을 억제하도록 추가로 구성되는, 저장 디바이스.
  2. 제1항에 있어서, 상기 제1 파라미터는 제1 전압 설정을 포함하고, 상기 제2 파라미터는 제2 전압 설정을 포함하는, 저장 디바이스.
  3. 제1항에 있어서, 상기 메모리는 캐시를 추가로 포함하고, 상기 컨트롤러는 상기 제1 파라미터를 상기 캐시에 저장하도록 추가로 구성되는, 저장 디바이스.
  4. 제1항에 있어서, 상기 컨트롤러는 비교기를 이용하여 상기 제2 파라미터가 상기 제1 파라미터와 동일한 때를 결정하도록 추가로 구성되는, 저장 디바이스.
  5. 제4항에 있어서, 상기 비교기는 하나 이상의 배타적-or(XOR) 게이트들 또는 배타적-nor(XNOR) 게이트들을 포함하는, 저장 디바이스.
  6. 제1항에 있어서, 상기 메모리는 상기 제1 메모리 위치 및 상기 제2 메모리 위치를 갖는 다이를 포함하고, 상기 제1 파라미터 및 상기 제2 파라미터는 각각 상기 다이를 나타내는, 저장 디바이스.
  7. 제1항에 있어서, 상기 제1 메모리 위치는 제1 페이지를 포함하고, 상기 제2 메모리 위치는 제2 페이지를 포함하고, 상기 제1 파라미터는 상기 제1 페이지를 나타내고 상기 제2 파라미터는 상기 제2 페이지를 나타내는, 저장 디바이스.
  8. 방법으로서,
    저장 디바이스의 메모리의 제1 메모리 위치에 저장된 데이터에 대한 제1 판독 커맨드를 호스트 디바이스로부터 수신하는 단계;
    상기 제1 메모리 위치와 관련된 제1 판독 임계치를 수정하기 위한 제1 파라미터를 식별하는 단계;
    상기 제1 파라미터에 기초하여 상기 제1 판독 임계치를 수정하기 위한 제1 설정 피처 커맨드를 실행하는 단계;
    상기 저장 디바이스의 상기 메모리의 제2 메모리 위치에 저장된 데이터에 대한 제2 판독 커맨드를 상기 호스트 디바이스로부터 수신하는 단계;
    상기 제2 메모리 위치와 관련된 제2 판독 임계치를 수정하기 위한 제2 파라미터를 식별하는 단계; 및
    상기 제2 파라미터가 상기 제1 파라미터와 동일할 때 상기 제2 판독 임계치를 수정하기 위한 제2 설정 피처 커맨드를 실행하는 것을 억제하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 제1 파라미터는 제1 전압 설정을 포함하고, 상기 제2 파라미터는 제2 전압 설정을 포함하는, 방법.
  10. 제8항에 있어서,
    비교기를 이용하여 상기 제2 파라미터가 상기 제1 파라미터와 동일한 때를 결정하는 단계를 추가로 포함하는, 방법.
  11. 제10항에 있어서, 상기 비교기는 하나 이상의 배타적-or(XOR) 게이트들 또는 배타적-nor(XNOR) 게이트들을 포함하는, 방법.
  12. 제8항에 있어서, 상기 메모리는 상기 제1 메모리 위치 및 상기 제2 메모리 위치를 갖는 다이를 포함하고, 상기 제1 파라미터 및 상기 제2 파라미터는 각각 상기 다이를 나타내는, 방법.
  13. 제8항에 있어서, 상기 제1 메모리 위치는 제1 페이지를 포함하고 상기 제2 메모리 위치는 제2 페이지를 포함하며, 상기 제1 파라미터는 상기 제1 페이지를 나타내고 상기 제2 파라미터는 상기 제2 페이지를 나타내는, 방법.
  14. 저장 디바이스로서,
    제1 메모리 위치 및 제2 메모리 위치를 포함하는 메모리;
    상기 제1 메모리 위치에 저장된 데이터에 대한 제1 판독 커맨드를 호스트 디바이스로부터 수신하고, 상기 제1 메모리 위치와 관련된 제1 판독 임계치를 수정하기 위한 제1 파라미터를 식별하고, 상기 제1 파라미터에 기초하여 상기 제1 판독 임계치를 수정하기 위한 제1 설정 피처 커맨드를 실행하고, 상기 제2 메모리 위치에 저장된 데이터에 대한 제2 판독 커맨드를 상기 호스트 디바이스로부터 수신하고, 상기 제2 메모리 위치와 관련된 제2 판독 임계치를 수정하기 위한 제2 파라미터를 식별하도록 구성된 컨트롤러; 및
    상기 제1 파라미터를 상기 제2 파라미터와 비교하기 위한 수단을 포함하며,
    상기 컨트롤러는 상기 비교하기 위한 수단에 기초하여 상기 제2 파라미터가 상기 제1 파라미터와 동일한 때를 결정하고, 상기 제2 파라미터가 상기 제1 파라미터와 동일할 때 상기 제2 판독 임계치를 수정하기 위한 제2 설정 피처 커맨드를 실행하는 것을 억제하도록 추가로 구성되는, 저장 디바이스.
  15. 제14항에 있어서, 상기 제1 파라미터는 제1 전압 설정을 포함하고, 상기 제2 파라미터는 제2 전압 설정을 포함하는, 저장 디바이스.
  16. 제14항에 있어서, 상기 메모리는 캐시를 추가로 포함하고, 상기 컨트롤러는 상기 제1 파라미터를 상기 캐시에 저장하도록 추가로 구성되는, 저장 디바이스.
  17. 제14항에 있어서, 상기 비교하기 위한 수단은 하나 이상의 배타적-or(XOR) 게이트들을 포함하는, 저장 디바이스.
  18. 제14항에 있어서, 상기 비교하기 위한 수단은 하나 이상의 배타적-nor(XNOR) 게이트들을 포함하는, 저장 디바이스.
  19. 제14항에 있어서, 상기 메모리는 상기 제1 메모리 위치 및 상기 제2 메모리 위치를 갖는 다이를 포함하고, 상기 제1 파라미터 및 상기 제2 파라미터는 각각 상기 다이를 나타내는, 저장 디바이스.
  20. 제14항에 있어서, 상기 제1 메모리 위치는 제1 페이지를 포함하고, 상기 제2 메모리 위치는 제2 페이지를 포함하고, 상기 제1 파라미터는 상기 제1 페이지를 나타내고 상기 제2 파라미터는 상기 제2 페이지를 나타내는, 저장 디바이스.
KR1020200070782A 2020-03-31 2020-06-11 지능형 임계치 검출을 통한 커맨드 최적화 KR102365602B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/835,836 2020-03-31
US16/835,836 US11294819B2 (en) 2020-03-31 2020-03-31 Command optimization through intelligent threshold detection

Publications (2)

Publication Number Publication Date
KR20210121994A true KR20210121994A (ko) 2021-10-08
KR102365602B1 KR102365602B1 (ko) 2022-02-18

Family

ID=76968879

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200070782A KR102365602B1 (ko) 2020-03-31 2020-06-11 지능형 임계치 검출을 통한 커맨드 최적화

Country Status (3)

Country Link
US (1) US11294819B2 (ko)
KR (1) KR102365602B1 (ko)
DE (1) DE102020115970B3 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11610116B2 (en) 2018-12-31 2023-03-21 SK Hynix Inc. Storage device performance optimization using deep learning
US11960989B2 (en) 2020-07-24 2024-04-16 SK Hynix Inc. Read threshold estimation systems and methods using deep learning
US11393539B2 (en) * 2020-11-20 2022-07-19 SK Hynix Inc. Systems and methods for determining change of read threshold voltage

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170019328A (ko) * 2015-08-11 2017-02-21 에이취지에스티 네덜란드 비.브이. 연판정 디코딩을 위한 물리적 페이지 어드레스들을 상관시키는 것
JP2018028956A (ja) * 2016-08-19 2018-02-22 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
KR20180054394A (ko) * 2016-11-15 2018-05-24 삼성전자주식회사 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US20180232159A1 (en) * 2016-03-21 2018-08-16 Smart Modular Technologies, Inc. Solid state storage system with latency management mechanism and method of operation thereof
US20190066809A1 (en) * 2017-08-31 2019-02-28 SK Hynix Inc. Read disturb detection and recovery with adaptive thresholding for 3-d nand storage

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009072101A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8869008B2 (en) 2013-01-17 2014-10-21 Apple Inc. Adaptation of analog memory cell read thresholds using partial ECC syndromes
US9251053B2 (en) * 2013-03-14 2016-02-02 SanDisk Technologies, Inc. Managing configuration parameters for a non-volatile medium
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9298549B2 (en) 2013-12-11 2016-03-29 International Business Machines Corporation Read buffer architecture supporting integrated XOR-reconstructed and read-retry for non-volatile random access memory (NVRAM) systems
US9640270B2 (en) * 2014-08-12 2017-05-02 Sandisk Technologies Llc System and method of using multiple read operations
US10347331B2 (en) 2016-06-13 2019-07-09 SK Hynix Inc. Read threshold optimization in flash memories
US10043575B2 (en) * 2016-08-10 2018-08-07 SK Hynix Inc. Memory system with read threshold estimation and operating method thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170019328A (ko) * 2015-08-11 2017-02-21 에이취지에스티 네덜란드 비.브이. 연판정 디코딩을 위한 물리적 페이지 어드레스들을 상관시키는 것
US20180232159A1 (en) * 2016-03-21 2018-08-16 Smart Modular Technologies, Inc. Solid state storage system with latency management mechanism and method of operation thereof
JP2018028956A (ja) * 2016-08-19 2018-02-22 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
KR20180054394A (ko) * 2016-11-15 2018-05-24 삼성전자주식회사 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US20190066809A1 (en) * 2017-08-31 2019-02-28 SK Hynix Inc. Read disturb detection and recovery with adaptive thresholding for 3-d nand storage

Also Published As

Publication number Publication date
US11294819B2 (en) 2022-04-05
DE102020115970B3 (de) 2021-08-12
US20210303474A1 (en) 2021-09-30
KR102365602B1 (ko) 2022-02-18
CN113467704A (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
US11379151B2 (en) Flow control of large sequential host read commands based on a queue threshold
KR102365602B1 (ko) 지능형 임계치 검출을 통한 커맨드 최적화
US11513723B2 (en) Read handling in zoned namespace devices
KR20220031490A (ko) 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화
CN113196252B (zh) 基于温度以不同的传输速率重新定位存储器中的数据
KR102502318B1 (ko) 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법
US11347420B2 (en) Attribute mapping in multiprotocol devices
CN111352864A (zh) 快闪存储器持久性高速缓存技术
US11726717B2 (en) NAND dropped command detection and recovery
US11892928B2 (en) Delayed thermal throttling and associated data routing techniques
US11403011B1 (en) Host memory buffer allocation management
US11481150B2 (en) Read modify write optimization for video performance
US20210382652A1 (en) Controlled Die Asymmetry During MLC Operations For Optimal System Pipeline
US11775222B2 (en) Adaptive context metadata message for optimized two-chip performance
US11604735B1 (en) Host memory buffer (HMB) random cache access
CN113467704B (zh) 通过智能阈值检测的命令优化
US20210208808A1 (en) Host Supported Partitions in Storage Device
CN113076057B (zh) 用于减少读取-修改-写入操作的延迟的系统和方法
US20240086071A1 (en) Ssd use of host memory buffer for improved performance
US11782635B2 (en) Method to ensure message arrival before a message pointer
US11817154B2 (en) Optimized threshold translation from serialized pipeline
US20230154504A1 (en) Mlm mapped nand latch

Legal Events

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