KR20210091647A - 비휘발성 메모리에 대한 자동 증분 기입 카운트 - Google Patents

비휘발성 메모리에 대한 자동 증분 기입 카운트 Download PDF

Info

Publication number
KR20210091647A
KR20210091647A KR1020200118221A KR20200118221A KR20210091647A KR 20210091647 A KR20210091647 A KR 20210091647A KR 1020200118221 A KR1020200118221 A KR 1020200118221A KR 20200118221 A KR20200118221 A KR 20200118221A KR 20210091647 A KR20210091647 A KR 20210091647A
Authority
KR
South Korea
Prior art keywords
memory
write
data
write count
memory arrays
Prior art date
Application number
KR1020200118221A
Other languages
English (en)
Inventor
셰쿼페 콰와미
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20210091647A publication Critical patent/KR20210091647A/ko

Links

Images

Classifications

    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/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/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
    • 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/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/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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/30098Register arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0076Write operation performed depending on read result
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2263Write conditionally, e.g. only if new data and old data differ

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

메모리 디바이스는 데이터 블록을 집합적으로 저장하는 다수의 비휘발성(NV) 메모리 어레이를 갖고, 각각의 어레이는 데이터 블록의 일부를 저장하는 것이다. 선택된 NV 메모리 어레이는 데이터 블록에 대한 기입 카운트를 저장한다. 기입 커맨드에 응답하여, 데이터를 저장하는 NV 메모리 어레이들은 내부 사전 기입 판독을 수행한다. 기입 카운트를 저장하는 선택된 NV 메모리 어레이는 기입 카운트의 사전 기입 판독을 수행하고, 선택된 NV 메모리 어레이에 내부적으로 기입 카운트를 증분하고, 증분된 기입 카운트를 선택된 NV 메모리 어레이에 다시 기입할 것이다.

Description

비휘발성 메모리에 대한 자동 증분 기입 카운트{AUTO-INCREMENT WRITE COUNT FOR NONVOLATILE MEMORY}
설명들은 일반적으로 비휘발성 메모리 디바이스들에 관련되고, 더 구체적인 설명들은 비휘발성 메모리 디바이스에 대한 메타데이터를 추적하는 것에 관련된다.
비휘발성(NV) 메모리 디바이스들은 제한된 기입 내구성을 갖는다. NV 메모리는 디바이스에 대한 전력이 중단되어도 그 상태가 확정적인 메모리를 지칭한다. 기입 내구성은 매체가 신뢰할 수 없게 되기 전에 기입될 수 있는 횟수를 지칭한다. 추가적으로, 매체는 기입 교란을 받고, 이는 타겟 메모리 어드레스로의 반복된 액세스가 인접 위치의 희생 어드레스에서의 값의 의도하지 않은 변경을 야기하는 상태이다.
기입들의 수와 관련된 잠재적인 문제들에 따라, 시스템들은 셀 내구성 및 기입 교란을 관리하기 위해 얼마나 자주 데이터를 리프레시하고 데이터를 이동시킬지를 결정하기 위해 기입들의 수를 계속 추적한다. 기입들을 추적하기 위한 전통적인 접근법은 블록당 기입들을 추적하는 것이다. 블록에 데이터가 기입될 때마다, 시스템은 기입 카운트에 액세스하여 기입 카운트를 증분한다. 기입 카운트가 비휘발성 매체 자체에 저장되는 시스템에서, 액세스는 블록이 기입되기 전에 데이터의 판독을 요구한다. 전통적으로 매체 컨트롤러는 데이터를 판독하고 그것을 증분하여 사용자 데이터와 함께 매체에 다시 기입되게 한다. 이 동작은 시스템의 유효 기입 대역폭을 감소시킨다.
이하의 설명은 구현의 예로서 주어진 예시들을 갖는 도면들에 대한 논의를 포함한다. 도면들은 제한으로서가 아니라 예로서 이해되어야 한다. 본 명세서에 사용된 바와 같이, 하나 이상의 "예"에 대한 언급들은 본 발명의 적어도 하나의 구현에 포함된 특정한 특징, 구조, 또는 특성을 설명하는 것으로 이해되어야 한다. 본 명세서에 나타나는 "일 예에서" 또는 "대안의 예에서"와 같은 문구들은 본 발명의 구현들의 예들을 제공하고, 반드시 모두 동일한 구현을 지칭하는 것은 아니다. 그러나, 이들이 반드시 상호 배타적인 것도 아니다.
도 1은 선택된 메모리 어레이가 기입 카운트를 저장하고 기입 카운트에 대해 자동 증분을 수행하게 하는 시스템의 예의 블록도이다.
도 2는 선택된 메모리 어레이가 기입 카운트 메타데이터에 대해 자동 증분을 수행하게 하는 시스템의 예의 블록도이다.
도 3은 기입 카운트 메타데이터에 대해 자동 증분을 수행하는 구현의 블록도이다.
도 4는 기입 카운트 자동 증분을 위한 프로세스의 예의 흐름도이다.
도 5는 기입 카운트 자동 증분이 구현될 수 있는 메모리 서브시스템의 예의 블록도이다.
도 6은 기입 카운트 자동 증분이 구현될 수 있는 컴퓨팅 시스템의 예의 블록도이다.
도 7은 기입 카운트 자동 증분이 구현될 수 있는 모바일 디바이스의 예의 블록도이다.
일부 또는 모든 예들, 그리고 뿐만 아니라 다른 잠재적인 구현들을 도시할 수 있는 도면들의 비제한적인 설명들을 포함하는, 특정 상세들 및 구현들의 설명들이 뒤따른다.
본 명세서에 설명된 바와 같이, 시스템은 메타데이터를 다수의 NV 메모리 어레이 중 하나에 저장함으로써 비휘발성(NV) 메모리에 대한 기입들의 수를 계속 추적할 수 있다. 일 예에서, NV 메모리는 3차원 크로스포인트(3DXP) 저장 매체를 갖는 메모리 디바이스이다. NV 메모리 어레이들은 데이터 블록을 집합적으로 저장하고, 각각의 어레이는 데이터 블록의 일부를 저장하고, 선택된 어레이는 데이터 블록에 대한 기입 카운트를 저장한다. 시스템은 셀 내구성 및 기입 교란을 관리하기 위해 얼마나 자주 데이터를 리프레시할지 또는 데이터를 이동시킬지를 결정하기 위해 기입 카운트를 사용할 수 있다.
특정 NV 메모리 기술들에 대한 기입 절차는 비교적 긴 시간이 걸리고 많은 전력을 사용한다. 에너지 사용량 및 기입 지연을 관리하기 위해, 일 예에서, NV 메모리는 기입에 대해 변경되는 비트들만을 기입한다. NV 메모리는 기입 커맨드에 응답하여 내부적으로 판독 동작을 발행할 수 있다. 내부 판독은 "사전 판독(pre-read)" 또는 "사전 기입 판독(pre-write read)"으로 지칭되고, 이는 메모리 디바이스가 그것의 메모리 셀들의 콘텐츠를 판독하고, 기존의 데이터를 인입 데이터와 비교하고, 변경되고 있는 비트들만을 기입할 수 있게 한다.
기입 카운트를 저장하는 선택된 NV 메모리 어레이는 기입 카운트를 포함하는 그것의 콘텐츠의 내부 판독을 수행할 것이다. 선택된 NV 메모리 어레이는 증분될 기입 카운트를 컨트롤러에 전송하지 않고 내부적으로 기입 카운트를 자동 증분한다. 선택된 NV 메모리 어레이는 증분된 기입 카운트를 그것의 비트셀들에 다시 기입할 수 있다. 일 예에서, 선택된 NV 메모리 어레이는 다른 NV 메모리 어레이들에 기입될 사용자 데이터와 함께 기입 카운트를 다시 기입한다. 자동 증분은 컨트롤러가 기입 카운트를 판독하고 증분할 필요성을 제거할 수 있다. 컨트롤러의 관여 없이, 자동 증분은 NV 매체의 각각의 기입 사이클에 대해 컨트롤러에 의해 NV 매체에 발행된 적어도 판독 사이클을 저장할 수 있다.
일 예에서, 기입 카운트를 저장하는 선택된 NV 메모리 어레이는 내부 기입 카운트 임계값을 포함할 수 있다. NV 메모리 어레이가 기입 카운트를 증분할 때, 그것은 또한 임계값과 비교하고, 기입 카운트 임계값에 도달할 때 경보를 컨트롤러에 전송 또는 전달할 수 있다.
일 예에서, 선택된 NV 메모리 어레이는 메모리 디바이스 내의 모드의 선택에 응답하여 자동 증분을 수행한다. 모드는 일반적으로 구성 설정에 기초하여 수행되는 동작을 지칭하며, 상이한 구성에 기초하여 동일한 상황에 응답하여 상이한 동작들이 발생한다. 따라서, 예를 들어, 선택된 NV 메모리 어레이는 사전 판독 동작으로 자동 증분을 수행하도록 구성될 수 있고, 다른 NV 메모리 어레이들은 자동 증분 없이 사전 판독 동작을 단순히 수행하도록 구성된다. 일 예에서, 모드는 각각의 NV 메모리 어레이에서 이용가능한 자동 증분 하드웨어를 가능하게 한다.
도 1은 선택된 메모리 어레이가 기입 카운트를 저장하고 기입 카운트에 대해 자동 증분을 수행하게 하는 시스템의 예의 블록도이다. 시스템(100)은 메모리 시스템 또는 메모리 디바이스를 나타낸다. 시스템(100)은 디바이스들[0:10]으로서 식별되는 다수의 메모리 디바이스(110)를 포함한다. 11개의 디바이스들을 갖는 것은 예이고, 다른 시스템들은 더 많거나 더 적은 디바이스들을 가질 수 있다는 것이 이해될 것이다. 도시된 각각의 디바이스는 하나 이상의 메모리 디바이스를 포함할 수 있다.
일 예에서, 디바이스들(110)은 시스템(100)을 위한 별개의 NV 메모리 어레이들을 나타낸다. 일 예에서, 메모리 어레이들은 3DXP 매체를 포함할 수 있다. 일 예에서, 메모리 어레이들은 다른 NV 저장 매체를 포함할 수 있다. 일 예에서, 각각의 디바이스(110)는 다수의 어레이를 포함한다. 일 예에서, 각각의 디바이스(110)는 별개의 NV 메모리 어레이를 나타낸다. 일 예에서, 각각의 디바이스(110)는 별개의 NV 메모리 칩 또는 메모리 다이를 나타낸다. 시스템(100) 내의 디바이스들(110)의 수는 시스템(100)의 저장 용량, 내부 아키텍처 및 다른 인자들에 의존할 것이다. 일 예에서, 각각의 디바이스(110)는 개별 매체 다이를 나타낸다. 일 예에서, 각각의 디바이스(110)는 개별 매체 디바이스를 나타낸다.
일 예에서, 시스템(100)은 NV 듀얼 인라인 메모리 모듈(DIMM)과 같은, 저장 모듈과 같은 NV 저장 디바이스를 나타낸다. 일 예에서, 시스템(100)은 솔리드 스테이트 드라이브(SSD)와 같은 디바이스이거나 그의 일부이다. 일 예에서, 컨트롤러(120)는 시스템(100)에 대한 매체 컨트롤러를 나타낸다. 매체 컨트롤러는 시스템(100)의 저장 매체로의 액세스를 제어하는 제어 디바이스를 나타낸다. 시스템(100)이 통합된 호스트 시스템의 관점에서, 디바이스들(110)은 단순히 이용가능한 스토리지로서 간주된다. 매체 컨트롤러로서의 컨트롤러(120)는 특정 디바이스들로의 액세스, 데이터 어드레스, 호스트 커맨드를 실행하기 위한 내부 커맨드들 및 동작들, 타이밍에 대한 준수, 및 디바이스들(110)로의 액세스를 통한 다른 관리를 관리한다.
시스템(100)은 데이터(130)를 저장하는 것으로서 디바이스들[0:7]을 예시한다. 데이터(130)는 시스템(100)에 저장될 연관된 호스트에 의해 생성된 데이터 또는 사용자 데이터를 나타낸다. 일 예에서, 디바이스들[8:9]는 데이터(130)에 대한 에러 검사 및 정정(error checking and correction)(ECC) 데이터를 나타내는 ECC(132)를 저장한다. 일 예에서, 디바이스 10은 ECC(132) 및 메타데이터(MD)(134)를 저장한다. 따라서, 디바이스 10은 ECC(132)와 함께 사용하기 위한 ECC 데이터를 저장할 뿐만 아니라 디바이스들(110)로의 액세스의 관리를 위한 추가적인 메타데이터를 가질 수 있다. 일 예에서, 추가적인 메타데이터(134)는 블록 112에 대한 기입들의 수를 추적하기 위한 기입 카운트를 포함한다. 블록 112는 데이터(130), ECC(132), 및 MD(134)를 포함할 수 있다. 디바이스들(110)이 데이터 블록을 집합적으로 저장한다는 것이 블록 112로부터 이해될 것이다.
채널(140)은 컨트롤러(120)와 디바이스들(110) 사이의 통신 채널을 나타낸다. 일 예에서, 채널(140)은 3DXP 채널로서 지칭될 수 있다. 채널(140)은 컨트롤러(120)가 디바이스들(110)과 통신할 수 있게 한다. 채널(140)은 제어 또는 커맨드 신호 라인들뿐만 아니라 데이터 신호 라인들을 포함할 수 있다.
일 예에서, 시스템(100)이 호스트로부터 기입 동작 또는 기입 커맨드를 수신할 때, 컨트롤러(120)는 시스템(100) 내에서 커맨드들을 생성 또는 제어하여 디바이스(110)가 기입 커맨드를 실행하게 할 수 있다. 커맨드는 기입될 어드레스 및 데이터를 포함할 것이다. 컨트롤러(120)는 커맨드를 디코딩하고, 블록 112를 기입될 데이터에 대한 어드레스로서 식별한다. 일 예에서, 컨트롤러(120)는 호스트로부터 수신된 데이터와 함께 기입하기 위한 ECC 데이터를 생성한다. 일 예에서, 디바이스들[0:7]은 데이터(130)에 기입될 다수의 바이트의 데이터를 수신하고, 컨트롤러(120)는 또한 ECC(132)를 디바이스들[8:10]에 제공한다. 일 예에서, 컨트롤러(120)는 기입 카운트를 디바이스 10에 제공하지 않는다. 메타데이터(134)가 기입 카운트 이외의 정보를 포함하는 경우, 컨트롤러(120)는 이러한 메타데이터를 디바이스 10에 제공할 수 있다.
일 예에서, 블록 112는 다수의 디바이스(110)에 걸쳐 기입되는, 데이터(130)에 의해 표현되는 코드워드를 갖는 것으로 간주될 수 있다. 일 예에서, 디바이스 10은 메타데이터에서 기입 카운트를 계속 추적하는 것에 전용되는 선택된 디바이스이다. 일 예에서, 컨트롤러(120)는 각각의 디바이스(110)의 위치들을 식별하고, 메타데이터를 추적하기 위한 하나의 디바이스를 선택한다. 시스템(100)은 메타데이터(134)를 저장하기 위한 선택된 어레이로서 디바이스 10을 예시한다. 일 예에서, 컨트롤러(120)는 각각의 디바이스(110)에 대한 구성 설정들을 제공하고, 여기서 디바이스(110)는 기입 카운트의 자동 증분을 수행하기 위해 선택된 어레이로서 인에이블된다. 따라서, 구성 설정은 선택된 메모리 어레이에 대한 자동 증분을 선택적으로 인에이블 또는 디스에이블할 수 있다.
일 예에서, 모든 코드기입에 대해, 또는 코드워드의 기입에 대해, 디바이스들(110)은 먼저 그들 각자의 데이터 콘텐츠를 판독한다. 사전 기입 판독의 일부로서, 일 예에서, 디바이스 10은 기입 카운트를 판독하고 그것을 디바이스 10에 다시 기입하기 위해 증분한다. 일 예에서, 디바이스 10은 증분된 기입 카운트를 기입될 다른 데이터와 함께 데이터 버스에 배치한다.
전통적으로, 기입 카운트를 추적하기 위한 로직은 컨트롤러(120)에 포함될 것이다. 일 예에서, 디바이스 10은 기입 카운트를 추적하기 위한 로직을 포함한다. 일 예에서, 로직은 디바이스 10이 자동 증분 모드에 놓일 때 인에이블된다. 일 예에서, 컨트롤러(120)는 디바이스 10을 자동 증분 모드로 설정하는 것과 관련하여 기입 카운트 임계값(예를 들어, 레지스터 내의 값)을 설정한다.
일 예에서, 블록 112에 대한 블록 크기는 64바이트, 128바이트, 256바이트, 또는 3DXP 매체에 대한 일부 다른 수의 바이트일 수 있다. NAND(not AND) 플래시는 전형적으로 4K 또는 2K바이트와 같은 더 큰 블록 크기를 갖는다. 블록에 대한 기입 카운트의 관리는 더 작은 블록 크기를 갖는 시스템에 대한 더 높은 긍정적인 성능 영향을 가질 수 있다.
도 2는 선택된 메모리 어레이가 기입 카운트 메타데이터에 대해 자동 증분을 수행하게 하는 시스템의 블록도이다. 시스템(200)은 도 1의 시스템(100)에 따른 시스템의 예를 제공한다. 스토리지(250)는 시스템(100)의 예를 나타낼 수 있고, 여기서 컨트롤러(252)는 시스템(100)의 컨트롤러(120)의 예이다.
시스템(200)은 스토리지(250)에 결합된 메모리 컨트롤러(220)를 갖는 호스트(210)를 포함한다. 호스트(210)는 스토리지(250)가 결합되는 컴퓨팅 플랫폼을 나타낸다. 예를 들어, 호스트(210)는 컴퓨터 또는 다른 컴퓨팅 디바이스일 수 있거나 이를 포함할 수 있다. 메모리 컨트롤러(220)는 메모리 디바이스(230)로의 액세스를 관리하기 위한 컨트롤러를 나타낸다. 일 예에서, 메모리 컨트롤러(220)는 호스트(210)의 호스트 프로세서(구체적으로 도시되지 않음)의 일부이다. 메모리 컨트롤러(220)는 대안적으로 스토리지(250)의 접속에 따라, 스토리지 컨트롤러로 간주될 수 있다.
일 예에서, 메모리 디바이스(230)의 비휘발성 메모리는 PCIe(peripheral component interconnect express) 버스와 같은 저장 버스에 결합될 수 있다. 일 예에서, 메모리 디바이스(230)의 비휘발성 메모리는 비휘발성이지만 또한 바이트 어드레싱가능하고 랜덤 액세스이며, 더블 데이터 레이트(DDR) 메모리 버스와 같은 시스템 메모리 버스에 결합될 수 있다. 호스트(210)는 I/O(입력/출력) 인터페이스(212)를 포함한다. I/O(212)는 스토리지(250)와 인터페이싱하는 하드웨어를 나타낸다. I/O(212)는 커맨드 버스 또는 커맨드 및 어드레스 버스 및 데이터 버스에 대한 인터페이스를 포함할 수 있다. 일 예에서, 인터페이스는 메모리 디바이스(230)가 경보를 호스트(210)에 전송하기 위한 신호 라인과 같은 기타 신호 라인들을 포함한다.
메모리 디바이스들에 대한 I/O를 나타내는 I/O(240)를 갖는 메모리 디바이스(230)가 예시된다. 컨트롤러(252)가 I/O로 구체적으로 예시되어 있지 않지만, 컨트롤러(252)는 커맨드들을 수신하고 호스트(210)와 데이터를 교환하고, 메모리 디바이스들(230)과 인터페이싱하기 위한 I/O 하드웨어 및 펌웨어를 포함한다는 것이 이해될 것이다. I/O(240)는 커맨드 버스 또는 CA 버스에 대한 인터페이스를 나타내는 커맨드(CMD)(242)를 포함한다. 데이터(244)는 데이터 버스 또는 DQ 버스에 대한 인터페이스를 나타낸다. 일 예에서, I/O(240)는 경보(246)를 포함하고, 이 경보는 호스트(210)로의 경보에 대한, 메모리 디바이스(230)를 위한 하나 이상의 신호 라인에 대한 인터페이스를 나타낸다. 예를 들어, 메모리 디바이스(230)가 메모리 디바이스들의 그룹에 대한 기입 카운트를 관리하기 위한 선택된 디바이스일 때, 경보(246)는 기입 카운트가 임계값에 도달하는 것에 응답하여 선택된 디바이스가 경보를 전송할 수 있게 한다.
메모리 컨트롤러(220)는 스토리지(250)에 대한 커맨드들의 시퀀스들의 스케줄링 및 전송을 관리하기 위한 스케줄러(222)를 포함한다. 스케줄러(222)는 커맨드들의 순서뿐만 아니라 커맨드들에 대한 타이밍 요건들을 결정하기 위한 로직을 포함한다. 메모리 컨트롤러(220)는 어떤 커맨드들을 어떤 순서로 전송할지에 대한 결정을 행한다. 스케줄러(222)는 타이밍 요건들에 대한 준수를 보장하기 위해 커맨드들의 순서를 결정한다.
일 예에서, 호스트(210)는 데이터 블록에 대해 기입 임계값에 도달되었음을 표시하기 위한 경보를 메모리 디바이스(230)로부터 수신한다. 일 예에서, 경보 플래그에 응답하여, 메모리 컨트롤러(220)는 경보를 식별하기 위해 메모리 디바이스(230)의 하나 이상의 레지스터를 판독할 수 있다. 경보에 응답하여, 일 예에서, 메모리 컨트롤러(220)는, 데이터의 리프레시 또는 이동과 같은 동작을 트리거링하라는 커맨드를 상이한 저장 위치(예를 들어, 스토리지 내의 상이한 어드레스)에 전송할지를 결정한다. 메모리 컨트롤러(220)가 경보에 응답하여 동작을 수행하기로 결정하는 경우, 스케줄러(222)는 스토리지(250)에 전송하기 위한 커맨드들을 스케줄링할 수 있다.
메모리 컨트롤러(220)는 메모리 디바이스(230)에 전송할 커맨드들을 생성하기 위한 커맨드 로직(224)을 포함한다. 커맨드들은 기입 커맨드들 또는 판독 커맨드들을 포함할 수 있다. 메모리 컨트롤러(220)는 커맨드 버스를 통해 판독 커맨드를 전송하고, 이 커맨드 버스는 커맨드 및 어드레스 버스로서 또한 지칭될 수 있고, 지연 기간 후에 메모리 디바이스(230)는 데이터 버스 상의 데이터를 구동할 것이다. 일 예에서, 커맨드 로직(224)은 리프레시 커맨드 또는 상이한 위치로 데이터를 이동시키라는 커맨드를 전송할 수 있다.
스토리지(250)는 다수의 메모리 디바이스(230)를 포함한다. 메모리 디바이스(230)는 비휘발성 메모리 셀들 또는 저장 셀들의 어레이를 나타내는 메모리 어레이(232)를 포함한다. 메모리 셀은 데이터의 비트 또는 멀티레벨 셀을 위한 다수의 비트를 저장한다. 일 예에서, 어레이(232)는 메모리의 뱅크들 또는 메모리의 다른 서브세트로서 분리된다. 일 예에서, 메모리 디바이스(230)는 하나 이상의 메모리 디바이스가 메모리의 랭크로서 조직되는 메모리 디바이스들의 그룹의 일부이다. 메모리의 랭크는 칩 선택 또는 인에이블 신호를 공유하고 따라서 병렬로 액세스되는 메모리 리소스들의 그룹이다.
일 예에서, 어레이(232)는 비휘발성 메모리 셀들을 포함한다. 비휘발성(NV) 메모리는 메모리에 대해 전력이 중단될 때에도 그 상태를 유지한다. 휘발성 메모리는 메모리에 대한 전력이 중단되면 불확정 상태를 갖는다. 일 예에서, 어레이(232)의 NV 매체는 3DXP 매체이다.
시스템(200)은 메모리 또는 저장 모듈을 나타내는 스토리지(250)를 위한 매체 컨트롤러를 나타내는 컨트롤러(252)를 포함한다. 일 예에서, 컨트롤러(252)는 호스트(210)로부터 커맨드들 및 데이터를 수신하고, 내부 커맨드들을 결정하여 메모리 디바이스들(230)에 전송하여 메모리 디바이스들이 그 커맨드들에 응답한다. 컨트롤러(252)는 또한 특정한 데이터의 부분들을 특정한 메모리 디바이스들(230)로 지향시킬 수 있다. 시스템(200)은 또한 메모리 디바이스(230)의 컨트롤러(234)를 도시한다. 컨트롤러(234)는 커맨드들을 수신하고 디코딩하기 위한 메모리 디바이스에서의 로직을 나타내고, 커맨드에 응답하는 데 필요한 회로를 구동할 수 있다.
메모리 디바이스(230)는 메모리 디바이스(230)의 동작에 관련된 구성 정보 또는 값들을 저장하기 위한 하나 이상의 레지스터 또는 저장 위치를 나타내는 레지스터(236)를 포함한다. 일 예에서, 레지스터(236)는 하나 이상의 모드 레지스터를 포함한다. 일 예에서, 레지스터(236)는 메모리 디바이스(230)에 대한 기입 카운트 자동 증분 모드를 제어하기 위한 구성 정보를 포함한다.
일 예에서, 메모리 디바이스(230)는, 메모리 디바이스(230)가 내부 동작들에 사용하기 위한 임시 저장 위치를 나타내는 스크래치패드(262)를 포함한다. 일 예에서, 메모리 디바이스(230)는 기입 커맨드에 응답하여 사전 기입 판독 동작을 수행한다. 사전 기입 판독 동작은 어레이(232)의 어드레스의 콘텐츠를 판독하고 기입될 데이터의 버퍼링된 카피와 비교하는 것을 포함할 수 있다. 기입 버퍼는 구체적으로 도시되지 않지만, 어레이(232)와 교환될 데이터에 대한 임시 버퍼를 제공한다. 일 예에서, 버퍼는 어레이(232)와 데이터 버스 사이에서 데이터를 교환하기 위해 버퍼가 데이터 경로들에 접속한다는 점에서 데이터 버스에 대해 인라인(inline)인 것으로 고려될 수 있다.
일 예에서, 비교는 스크래치패드(262)에 저장될 수 있는 결과를 생성한다. 스크래치패드(262)는 컨트롤러(252)에 전송되지 않는 내부 동작을 위한 스토리지를 나타낸다. 자동 증분 회로(264)는 값의 증분을 수행하고 그것을 사용자 데이터 및 ECC 데이터와 다시 조합하는 것을 수행하여 메모리 어레이에 다시 기입되게 하기 위해, 자동 증분을 가능하게 하기 위한 하드웨어 예컨대, 로직 회로들을 나타낸다. 일 예에서, 자동 증분 회로(264)는 메모리 디바이스(230)의 구성에 기초하여 동적으로 인에이블되고 디스에이블될 수 있다. 즉, 메모리 디바이스(230)가 선택된 기입 카운트 어레이로서 구성될 때, 자동 증분 회로(264)는 기입 카운트에 대한 자동 증분 동작을 수행하도록 인에이블될 수 있다.
도 3은 기입 카운트 메타데이터에 대해 자동 증분을 수행하는 구현의 블록도이다. 도면(300)은 설명된 비휘발성 메모리 시스템에 따른 시스템에 의해 구현될 수 있는 흐름을 나타낸다.
일 예에서, 컨트롤러는 매체 컨트롤러를 나타내고, 3DXP는 NV 메모리 디바이스를 나타낸다. 중간 열은 모든 3DXP 또는 모든 메모리 어레이들 또는 메모리 디바이스들에 의해 수행되는 동작들을 나타낸다. 우측 열은 선택된 3DXP 디바이스에 의해 수행될 동작들을 나타낸다.
컨트롤러는, 기입 커맨드에 대한 기입 커맨드 및 어드레스(write command and address)(ADDR)를 생성한다(블록 310). 일 예에서, 기입 커맨드에 응답하여, 모든 3DXP 디바이스들은 커맨드의 어드레스를 디코딩한다(블록 320). 커맨드를 전송한 후에, 컨트롤러는 적절한 지연 후에 DQ 버스 상에서 데이터를 전송한다(블록 312). 지연은 3DXP 매체에 대해 정의된 기입 지연이다.
일 예에서, 커맨드를 디코딩하는 것에 응답하여, 모든 3DXP 디바이스들은 그들의 현재 데이터 콘텐츠를 사전 판독한다(블록 322). 3DXP 디바이스들은 사전 판독 데이터를 DQ 버스 상에서 수신된 데이터와 비교한다(블록 324).
3DXP 디바이스들 중 하나는 기입 카운트를 관리하기 위한 선택된 3DXP 디바이스로서 선택된다. 일 예에서, 선택된 3DXP는 자동 증분 모드로 구성된다. 그러한 모드는 일 예에서, 레지스터 또는 구성 비트를 설정함으로써 구성될 수 있다. 예를 들어, 구성 필드 또는 구성 비트는 비-선택된 3DXP 디바이스들에 대해 자동 증분=0일 수 있고 선택된 디바이스에 대해 자동 증분=1일 수 있다.
일 예에서, 선택된 3DXP는 기입 카운트를 증분한다(블록 330). 일 예에서, 선택된 3DXP 디바이스는 현재 기입 카운트(WR_CNT)를 증분된 기입 카운트(WR_CNT+1)와 비교한다(블록 332). 일 예에서, 선택된 3DXP는 기입 카운트에 추가하여 ECC 데이터 또는 사용자 데이터를 저장한다. 따라서, 선택된 3DXP는 DQ 버스 상의 데이터와 사전 판독 데이터의 비교를 수행할 수 있다.
일 예에서, 선택된 3DXP 디바이스에 대해, 자동 증분 기입 카운트 모드가 인에이블되고, 이는 시스템이 기입 커맨드에 대해 DQ 버스의 특정 N바이트(예를 들어, 2 또는 3바이트)를 무시할 수 있다는 것을 의미한다. 따라서, 예를 들어, 집합적으로 일 예의 3DXP 디바이스들은 DQ_BUS[15:3]과 PRE_RD[15:3]의 비교를 수행할 수 있고, 여기서 PRE_RD[15:3]은 3DXP 디바이스들의 메모리 어레이들로부터 판독된 14바이트의 데이터(선택된 3DXP 디바이스로부터의 데이터를 포함할 수 있음)를 나타내고 DQ_BUS[15:3]는 호스트로부터 수신된 14바이트의 데이터를 나타낸다. DQ 버스의 마지막 3바이트는 무시될 수 있다. 선택된 3DXP 디바이스는 (PRE_RD[2:0]+1)과 PRE_RD[2:0]의 비교를 수행할 수 있고, 여기서 PRE_RD[2:0]는 기입 카운트 메타데이터를 나타내고, (PRE_RD[2:0]+1)은 증분된 기입 카운트를 나타낸다.
일 예에서, 3DXP 디바이스들은 기입 커맨드에 응답하여 변경되는 데이터만을 기입한다. 일 예에서, 사용자 데이터의 비교인지, ECC 데이터의 비교인지, 또는 기입 카운트 메타데이터의 비교인지에 관계없이, 3DXP 디바이스들은 데이터를 버스 상에 다시 배치한다. 예를 들어, 디바이스들은 기입 버퍼에 데이터의 비교를 배치하여 플립된 비트들에 대해 비교되게 할 수 있다. 일 예에서, 3DXP 디바이스들은 플립된 비트들만을 기입한다(블록 326).
일 예에서, 선택된 3DXP 디바이스는 증분된 기입 카운트(WR_CNT+1)를 임계 카운트(WR_CNT_MAX)와 비교한다(블록 334). 일 예에서, 임계값에 도달하면, 3DXP 디바이스는 호스트에 경보를 발한다(블록 336). 일 예에서, 매체 컨트롤러는 (모드 레지스터와 같은) 구성 레지스터에 의해 임계값 또는 기입 카운트 한계를 설정한다. 따라서, 선택된 3DXP는 카운트가 임계값에 도달하면 플래그 또는 다른 경보를 설정할 수 있다. 경보에 응답하여, 매체 컨트롤러는 임계값에 도달하는 기입 카운트에 응답하기 위해 적절한 액션을 취할 수 있다(블록 338).
도 4는 기입 카운트 자동 증분을 위한 프로세스의 예의 흐름도이다. 자동 증분 기입 카운트를 위한 프로세스(400)는 도 1의 시스템(100) 또는 도 2의 시스템(200)에 따른 시스템의 예에 의해 수행될 수 있다.
일 예에서, 402에서, 3DXP 디바이스와 같은 비휘발성 메모리 디바이스가 호스트 컨트롤러로부터 구성 커맨드를 수신한다. 구성 커맨드는 NV 메모리 디바이스가 기입 카운트를 저장하도록 선택된 것일 때 자동 증분을 수행하도록 NV 메모리 디바이스를 설정할 수 있다.
구성 커맨드가 자동 증분을 인에이블하는 것인 경우, 404 예 분기에서, 일 예에서, 커맨드는 406에서 기입 카운트를 관리하도록 선택된 디바이스를 구성한다. 구성 커맨드가 자동 증분을 인에이블하지 않는 것인 경우, 404 아니오 분기에서, 디바이스는 기입 카운트를 관리하도록 선택되지 않는다. 디바이스가 기입 카운트 메타데이터를 관리하지 않는 것인 경우, 일 예에서, 구성은 408에서 디바이스 상의 자동 증분 회로를 디스에이블한다. 따라서, 모든 디바이스들은 자동 증분 회로를 포함할 수 있고, 하나의 선택된 디바이스는 능력이 인에이블되게 하고 다른 디바이스들은 능력이 디스에이블되게 할 수 있다.
메모리 디바이스들에 대해 어느 구성이 설정되든, 메모리 디바이스들은 액세스 커맨드들을 수신할 준비가 될 수 있다. 410에서, 기입 커맨드를 수신하는 것에 응답하여 또는 커맨드의 수신에 응답하여, 일 예에서, 메모리 디바이스들은 412에서, 메모리 디바이스들이 기입 커맨드와 연관된 어드레스에 저장했던 데이터의 사전 판독을 수행한다.
다수의 메모리 디바이스에 대해, 기입 카운트를 관리하도록 선택된 하나의 디바이스가 있을 것이다. 따라서, 전형적인 경우는 표준 동작을 위한 것일 것이고, 하나의 디바이스는 기입 카운트를 관리하기 위한 다른 동작을 가질 것이다. 자동 증분이 인에이블되지 않을 때, 414 아니오 분기에서, 일 예에서, 메모리 디바이스는 416에서 기입 커맨드에 대해 수신된 데이터와 사전 판독 데이터를 비교한다.
일 예에서, 메모리 디바이스는 기입될 데이터와 현재 데이터 콘텐츠(사전 판독 데이터)의 비교를 수행하는데, 그 이유는 디바이스가 기입 커맨드로 인해 플립될 비트들 또는 델타만을 기입하기 때문이다. 따라서, 일 예에서, 메모리 디바이스들은 기입될 데이터의 각각의 비트에 대해 비트가 플립되는지를 각각 결정한다. 비트가 플립되지 않으면, 418 아니오 분기에서, 일 예에서, 디바이스는 변경되지 않은 비트에 대한 기입을 수행하지 않는다(420).
비트가 플립되는 경우, 418 예 분기에서, 일 예에서, 디바이스는 422에서, 데이터 버스 상의 비트를 플립한다. 따라서, 디바이스는 메모리 어레이에 기입하기 위해 데이터 버스 상에 비교의 결과들을 배치할 수 있다. 일 예에서, 사전 판독 데이터는 데이터 버스 상에 배치되지 않지만, 비교를 위해서만 사용되며, 결과들은 기입되기 위해 데이터 버스 상에 배치된다. 데이터 버스 상의 데이터가 설정되면, 디바이스는 424에서 데이터를 어레이에 기입한다.
기입 카운트를 저장하는 디바이스에 대해, 414 예 분기에서, 자동 증분이 인에이블된다. 일 예에서, 선택된 디바이스는 426에서, 기입 카운트를 증분하고 증분된 기입 카운트를 임계값과 비교한다. 임계값은 기입 교란의 위험을 표시하기 위한 임계값, 수명의 종료를 표시하기 위한 임계값, 또는 일부 다른 임계값일 수 있다. 일 예에서, 디바이스는 증분된 값을 다수의 상이한 임계값과 비교한다.
하나 이상의 임계값에 도달했다면, 428 예 분기에서, 일 예에서, 디바이스는 430에서 호스트에 경보를 전송한다. 일 예에서, 다수의 임계값이 비교되면, 디바이스는 상이한 임계값들에 대해 상이한 경보들을 전송할 수 있다. 일 예에서, 디바이스는 단일 경보를 전송하고, 호스트는 경보의 소스를 결정하기 위해 디바이스에 쿼리한다. 임계값에 도달했는지 여부에 관계없이, 일 예에서, 기입 카운트를 증분한 후에, 디바이스는 432에서, 어레이에 다시 기입하기 위해 증분된 기입 카운트를 로딩할 수 있다. 선택된 디바이스에 대한 플립된 비트들을 비교하기 위해, 증분된 기입 카운트는 DQ 버스로부터의 기입 데이터 대신일 수 있고 기입 카운트는 사전 판독 데이터로 간주될 수 있어, 프로세스를 416으로 복귀시킨다.
도 5는 기입 카운트 자동 증분이 구현될 수 있는 메모리 서브시스템의 예의 블록도이다. 시스템(500)은 컴퓨팅 디바이스 내의 메모리 서브시스템의 요소들 및 프로세서를 포함한다. 시스템(500)은 도 1의 시스템(100) 또는 도 2의 시스템(200)에 따른 시스템의 예를 제공한다.
일 예에서, 시스템(500)은 메모리 디바이스(540) 내의 자동 증분 로직(590)을 포함한다. 일 예에서, 메모리 디바이스(540)는 본 명세서에서의 임의의 예에 따라 메모리의 블록에 대한 블록 기입 카운트를 관리하기 위해 메모리 모듈(570)의 다수의 메모리 디바이스 중에서 선택될 수 있다. 일 예에서, 메모리 디바이스(540)는 메모리 어레이(560)에 기입 카운트 메타데이터를 저장한다. 일 예에서, 레지스터(544)는 메모리 디바이스(540)가 기입 카운트를 관리하기 위해 선택된 메모리 디바이스인지를 결정하기 위해 기입될 필드를 포함한다. 일 예에서, 자동 증분 로직(590)은 기입 카운트의 자동 증분을 수행하기 위한 하드웨어를 포함한다.
프로세서(510)는, 집합적으로 호스트 또는 메모리의 사용자로서 지칭될 수 있는, 운영 체제(OS) 및 애플리케이션들을 실행할 수 있는 컴퓨팅 플랫폼의 프로세싱 유닛을 나타낸다. OS 및 애플리케이션들은 메모리 액세스들을 초래하는 동작들을 실행한다. 프로세서(510)는 하나 이상의 별개의 프로세서를 포함할 수 있다. 각각의 별개의 프로세서는 단일 프로세싱 유닛, 멀티코어 프로세싱 유닛, 또는 조합을 포함할 수 있다. 프로세싱 유닛은 CPU(중앙 프로세싱 유닛)와 같은 주 프로세서, GPU(그래픽 프로세싱 유닛)와 같은 주변장치 프로세서, 또는 조합일 수 있다. 메모리 액세스들은 또한 네트워크 컨트롤러 또는 하드 디스크 컨트롤러와 같은 디바이스들에 의해 개시될 수 있다. 그러한 디바이스들은 일부 시스템들에서 프로세서와 통합되거나 버스(예를 들어, PCI 익스프레스)를 통해 프로세서에 부착되거나, 조합일 수 있다. 시스템(500)은 SOC(시스템 온 칩)로서 구현되거나, 독립형 컴포넌트들로 구현될 수 있다.
일 예에서, 메모리 디바이스들에 대한 언급은 디바이스에 대해 전력이 중단되더라도 그 상태가 확정적인 비휘발성 메모리 디바이스를 지칭할 수 있다. 일 예에서, 비휘발성 메모리 디바이스는 NAND 또는 NOR 기술들과 같은 블록 어드레싱가능 메모리 디바이스이다. 따라서, 메모리 디바이스는, 3차원 크로스포인트 메모리 디바이스, 다른 바이트 어드레싱가능 비휘발성 메모리 디바이스들과 같은, 향후 세대의 비휘발성 디바이스들을 또한 포함할 수 있다. 메모리 디바이스는 메모리 셀의 저항성 상태 또는 메모리 셀의 상(phase)에 기초하여 데이터를 저장하는 비휘발성, 바이트 어드레싱가능 매체를 포함할 수 있다. 일 예에서, 메모리 디바이스는 칼코게나이드 상 변화 재료(chalcogenide phase change material)(예를 들어, 칼코게나이드 글래스(chalcogenide glass))를 사용할 수 있다. 일 예에서, 메모리 디바이스는 멀티-임계 레벨 NAND 플래시 메모리, NOR 플래시 메모리, 단일 또는 멀티-레벨 상 변화 메모리(PCM) 또는 스위치를 갖는 상 변화 메모리(PCMS), 저항성 메모리, 나노와이어 메모리, 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM), 멤리스터 기술을 포함하는 자기저항 랜덤 액세스 메모리(MRAM) 메모리, 또는 스핀 전달 토크(STT)-MRAM, 또는 위 항목들 중 임의의 것의 조합, 또는 다른 메모리일 수 있거나, 이들을 포함할 수 있다.
메모리 컨트롤러(520)는 시스템(500)을 위한 하나 이상의 메모리 컨트롤러 회로 또는 디바이스를 나타낸다. 메모리 컨트롤러(520)는 프로세서(510)에 의한 동작들의 실행에 응답하여 메모리 액세스 커맨드들을 생성하는 제어 로직을 나타낸다. 메모리 컨트롤러(520)는 하나 이상의 메모리 디바이스(540)에 액세스한다. 메모리 디바이스들(540)은 위에 언급된 임의의 것에 따른 DRAM 디바이스들일 수 있다. 일 예에서, 메모리 디바이스들(540)은 상이한 채널들로서 조직되고 관리되며, 각각의 채널은 다수의 메모리 디바이스에 병렬로 결합되는 버스들 및 신호 라인들에 결합된다. 각각의 채널은 독립적으로 동작가능하다. 따라서, 각각의 채널은 독립적으로 액세스되고 제어되고, 타이밍, 데이터 전송, 커맨드 및 어드레스 교환들, 및 다른 동작들이 각각의 채널에 대해 개별적이다. 결합은 전기적 결합, 통신적 결합, 물리적 결합, 또는 이들의 조합을 지칭할 수 있다. 물리적 결합은 직접 접촉을 포함할 수 있다. 전기적 결합은 컴포넌트들 사이의 전기적 흐름을 허용하거나 컴포넌트들 사이의 시그널링을 허용하거나 또는 둘 다를 허용하는 인터페이스 또는 상호접속을 포함한다. 통신적 결합은 컴포넌트들이 데이터를 교환하는 것을 가능하게 하는 유선 또는 무선을 포함하는 접속들을 포함한다.
일 예에서, 각각의 채널에 대한 설정들은 별개의 모드 레지스터들 또는 다른 레지스터 설정들에 의해 제어된다. 일 예에서, 비록 시스템(500)은 단일 컨트롤러에 의해 관리되는 다수의 채널을 갖거나, 단일의 채널 상에 다수의 컨트롤러를 갖도록 구성될 수 있지만, 각각의 메모리 컨트롤러(520)는 별개의 메모리 채널을 관리한다. 일 예에서, 메모리 컨트롤러(520)는 동일한 다이 상에 구현되거나 프로세서와 동일한 패키지 공간에서 구현되는 로직과 같은, 호스트 프로세서 또는 호스트 프로세서 디바이스(510)의 일부이다.
메모리 컨트롤러(520)는 위에서 언급된 메모리 채널과 같은, 메모리 버스에 결합하기 위한 I/O 인터페이스 로직(522)을 포함한다. I/O 인터페이스 로직(522)(뿐만 아니라 메모리 디바이스(540)의 I/O 인터페이스 로직(542))은 핀들, 패드들, 커넥터들, 신호 라인들, 트레이스들, 또는 와이어들, 또는 디바이스들을 접속시키기 위한 다른 하드웨어, 또는 이들의 조합을 포함할 수 있다. I/O 인터페이스 로직(522)은 하드웨어 인터페이스를 포함할 수 있다. 예시된 바와 같이, I/O 인터페이스 로직(522)은 신호 라인들에 대한 적어도 드라이버들/송수신기들을 포함한다. 일반적으로, 집적 회로 인터페이스 내의 와이어들은 디바이스들 사이의 신호 라인들 또는 트레이스들 또는 다른 와이어들에 인터페이싱하기 위해 패드, 핀, 또는 커넥터와 결합한다. I/O 인터페이스 로직(522)은 디바이스들 사이의 신호 라인들 상의 신호들을 교환하기 위한 드라이버들, 수신기들, 송수신기들, 또는 종단 또는 다른 회로 또는 회로의 조합들을 포함할 수 있다. 신호들의 교환은 송신 또는 수신 중 적어도 하나를 포함한다. 메모리 컨트롤러(520)로부터의 I/O(522)를 메모리 디바이스(540)의 I/O(542)로 결합하는 것으로 도시되어 있지만, 메모리 디바이스(540)의 그룹들이 병렬로 액세스되는 시스템(500)의 구현에서, 다수의 메모리 디바이스는 메모리 컨트롤러(520)의 동일한 인터페이스에 대한 I/O 인터페이스들을 포함할 수 있다는 것이 이해될 것이다. 하나 이상의 메모리 모듈(570)을 포함하는 시스템(500)의 구현에서, I/O(542)는 메모리 디바이스 자체 상의 인터페이스 하드웨어에 더하여 메모리 모듈의 인터페이스 하드웨어를 포함할 수 있다. 다른 메모리 컨트롤러들(520)은 다른 메모리 디바이스들(540)에 대한 별개의 인터페이스들을 포함할 것이다.
메모리 컨트롤러(520)와 메모리 디바이스들(540) 사이의 버스는 메모리 디바이스들(540)에 메모리 컨트롤러(520)를 결합하는 다수의 신호 라인으로서 구현될 수 있다. 버스는 전형적으로 적어도 클록(CLK)(532), 커맨드/어드레스(CMD)(534), 및 기입 데이터(DQ) 및 판독 데이터(DQ)(536), 및 0개 이상의 기타 신호 라인(538)을 포함할 수 있다. 일 예에서, 메모리 컨트롤러(520)와 메모리 사이의 버스 또는 접속은 메모리 버스로 지칭될 수 있다. 일 예에서, 메모리 버스는 멀티 드롭 버스이다. CMD를 위한 신호 라인들은 "C/A 버스"(또는 ADD/CMD 버스, 또는 커맨드들(C 또는 CMD) 및 어드레스(A 또는 ADD) 정보의 전송을 나타내는 일부 다른 지정)로 지칭될 수 있고 기입 및 판독 DQ를 위한 신호 라인들은 "데이터 버스"로 지칭될 수 있다. 일 예에서, 독립적인 채널들은 상이한 클록 신호들, C/A 버스들, 데이터 버스들, 및 기타 신호 라인들을 갖는다. 따라서, 독립적인 인터페이스 경로가 별개의 버스로 간주될 수 있다는 의미에서, 시스템(500)은 다수의 "버스"를 갖는 것으로 간주될 수 있다. 명시적으로 도시된 라인들에 더하여, 버스는 스트로브 시그널링 라인들, 경보 라인들, 보조 라인들, 또는 기타 신호 라인들 중 적어도 하나, 또는 조합을 포함할 수 있다는 것이 이해될 것이다. 직렬 버스 기술들이 메모리 컨트롤러(520)와 메모리 디바이스들(540) 사이의 접속을 위해 사용될 수 있다는 것이 또한 이해될 것이다. 직렬 버스 기술의 예는 각각의 방향으로 신호들의 단일 차동 쌍에 걸쳐 내장된 클록을 갖는 고속 데이터의 8B10B 인코딩 및 송신이다. 일 예에서, CMD(534)는 다수의 메모리 디바이스와 병렬로 공유되는 신호 라인들을 나타낸다. 일 예에서, 다수의 메모리 디바이스는 CMD(534)의 커맨드 신호 라인들을 인코딩하는 것을 공유하고, 각각은 개별 메모리 디바이스들을 선택하기 위한 개별 칩 선택(CS_n) 신호 라인을 갖는다.
시스템(500)의 예에서, 메모리 컨트롤러(520)와 메모리 디바이스들(540) 사이의 버스는 보조 커맨드 버스 CMD(534) 및 기입 및 판독 데이터를 운반하기 위한 보조 버스 DQ(536)를 포함한다는 것이 이해될 것이다. 일 예에서, 데이터 버스는 판독 데이터 및 기입/커맨드 데이터에 대한 양방향 라인들을 포함할 수 있다. 다른 예에서, 보조 버스 DQ(536)는 호스트로부터 메모리로의 기입 및 데이터에 대한 단방향 기입 신호 라인들을 포함할 수 있고, 메모리로부터 호스트로의 판독 데이터에 대한 단방향 라인들을 포함할 수 있다. 선택된 메모리 기술 및 시스템 설계에 따라, 기타 신호들(538)은 스트로브 라인들 DQS과 같은 버스 또는 서브 버스를 수반할 수 있다. 시스템(500)의 설계, 또는 구현에 기초하여, 설계가 다수의 구현을 지원하는 경우에, 데이터 버스는 메모리 디바이스(540)당 더 많은 또는 더 적은 대역폭을 가질 수 있다. 예를 들어, 데이터 버스는 x4 인터페이스, x8 인터페이스, x16 인터페이스, 또는 다른 인터페이스를 갖는 메모리 디바이스들을 지원할 수 있다. 관례 "xW", 여기서, W는 메모리 컨트롤러(520)와 데이터를 교환하기 위한 신호 라인들의 수를 나타내는, 메모리 디바이스(540)의 인터페이스의 인터페이스 크기 또는 폭을 지칭하는 정수이다. 메모리 디바이스들의 인터페이스 크기는 얼마나 많은 메모리 디바이스들이 시스템(500) 내의 채널마다 동시에 사용되거나 동일한 신호 라인들에 병렬로 결합될 수 있는지에 대한 제어 인자이다. 일 예에서, 고 대역폭 메모리 디바이스들, 와이드 인터페이스 디바이스들, 또는 스택형 메모리 구성들, 또는 조합들은 x128 인터페이스, x256 인터페이스, x512 인터페이스, x1024 인터페이스, 또는 다른 데이터 버스 인터페이스 폭과 같은, 더 넓은 인터페이스들을 가능하게 할 수 있다.
일 예에서, 메모리 디바이스들(540) 및 메모리 컨트롤러(520)는 연속적인 데이터 전송들의 시퀀스 또는 버스트로 데이터 버스를 통해 데이터를 교환한다. 버스트는 다수의 전송 사이클에 대응하고, 이것은 버스 주파수와 관련된다. 일 예에서, 전송 사이클은 동일한 클록 또는 스트로브 신호 에지 상에서(예를 들어, 상승 에지 상에서) 발생하는 전송들에 대한 전체 클록 사이클일 수 있다. 일 예에서, 시스템 클록의 사이클을 지칭하는 모든 클록 사이클은 다수 유닛 간격(UI)으로 분리되고, 여기서 각각의 UI는 전송 사이클이다. 예를 들어, 더블 데이터 레이트 전송 트리거는 클록 신호의 둘 다의 에지들(예를 들어, 상승 및 하강) 상에서 트리거링한다. 버스트는 구성된 수의 UI들을 지속할 수 있으며, 이는 레지스터에 저장되거나, 온 더 플라이(on the fly)로 트리거링된 구성일 수 있다. 예를 들어, 8개의 연속적인 전송 기간의 시퀀스는 버스트 길이 8(BL8)로 간주될 수 있고, 각각의 메모리 디바이스(540)는 각각의 UI 상에서 데이터를 전송할 수 있다. 따라서, BL8 상에서 동작하는 x8 메모리 디바이스는 54비트의 데이터(8개의 데이터 신호 라인x버스트를 통해 라인당 전송된 8개의 데이터 비트)를 전송할 수 있다. 이러한 간단한 예는 단지 예시이고 제한적이지 않다는 것이 이해될 것이다.
메모리 디바이스들(540)은 시스템(500)에 대한 메모리 리소스들을 나타낸다. 일 예에서, 각각의 메모리 디바이스(540)는 별개의 메모리 다이이다. 일 예에서, 각각의 메모리 디바이스(540)는 디바이스 또는 다이당 다수의(예를 들어, 2개) 채널과 인터페이싱할 수 있다. 각각의 메모리 디바이스(540)는 디바이스의 구현에 의해 결정되는 대역폭(예를 들어, x16 또는 x8 또는 일부 다른 인터페이스 대역폭)을 갖는 I/O 인터페이스 로직(542)을 포함한다. I/O 인터페이스 로직(542)은 메모리 디바이스들이 메모리 컨트롤러(520)와 인터페이싱하는 것을 가능하게 한다. I/O 인터페이스 로직(542)은 하드웨어 인터페이스를 포함할 수 있고, 메모리 컨트롤러의 I/O(522)에 따르지만, 메모리 디바이스 단부에 있을 수 있다. 일 예에서, 다수의 메모리 디바이스(540)는 동일한 커맨드 및 데이터 버스들에 병렬로 접속된다. 다른 실시예에서, 다수의 메모리 디바이스(540)는 동일한 커맨드 버스에 병렬로 접속되고, 상이한 데이터 버스들에 접속된다. 예를 들어, 시스템(500)은 병렬로 결합된 다수의 메모리 디바이스(540)로 구성될 수 있고, 각각의 메모리 디바이스는 커맨드에 응답하고, 각각의 내부에 있는 메모리 리소스들(560)에 액세스한다. 기입 동작을 위해, 개별 메모리 디바이스(540)는 전체 데이터 워드의 일부를 기입할 수 있고, 판독 동작을 위해, 개별 메모리 디바이스(540)는 전체 데이터 워드의 일부를 페치할 수 있다. 워드의 나머지 비트들은 다른 메모리 디바이스들에 의해 병렬로 제공되거나 수신될 것이다.
일 예에서, 메모리 디바이스들(540)은 컴퓨팅 디바이스의 마더보드 또는 호스트 시스템 플랫폼(예를 들어, 프로세서(510)가 배치되는 PCB(인쇄 회로 보드)) 상에 직접 배치된다. 일 예에서, 메모리 디바이스들(540)은 메모리 모듈들(570)로 조직될 수 있다. 일 예에서, 메모리 모듈들(570)은 듀얼 인라인 메모리 모듈(DIMM)들을 나타낸다. 일 예에서, 메모리 모듈들(570)은 호스트 시스템 플랫폼과 별개의 회로, 별개의 디바이스, 또는 별개의 보드일 수 있는, 액세스 또는 제어 회로의 적어도 일부를 공유하기 위한 다수의 메모리 디바이스의 다른 조직을 나타낸다. 메모리 모듈들(570)은 다수의 메모리 디바이스(540)를 포함할 수 있고, 메모리 모듈들은 그들 상에 배치된 포함된 메모리 디바이스들에 대한 다수의 별개의 채널에 대한 지원을 포함할 수 있다. 다른 예에서, 메모리 디바이스들(540)은 예컨대 멀티-칩 모듈(MCM), 패키지-온-패키지, 실리콘 관통 비아(TSV)와 같은 기술들, 또는 다른 기술들 또는 조합들에 의해, 메모리 컨트롤러(520)와 동일한 패키지 내에 통합될 수 있다. 유사하게, 일 예에서, 다수의 메모리 디바이스(540)가 메모리 모듈들(570)에 통합될 수 있고, 이 메모리 모듈들 자체가 메모리 컨트롤러(520)와 동일한 패키지 내에 통합될 수 있다. 이들 및 다른 구현들에 대해, 메모리 컨트롤러(520)는 호스트 프로세서(510)의 일부일 수 있다는 것이 인정될 것이다.
메모리 디바이스들(540)은 하나 이상의 메모리 어레이(560)를 각각 포함한다. 메모리 어레이(560)는 데이터에 대한 저장 위치들 또는 어드레싱가능한 메모리 위치들을 나타낸다. 전형적으로 메모리 어레이(560)는 워드라인(행들) 및 비트라인(행 내의 개별 비트들) 제어를 통해 액세스되는 데이터의 행들로서 관리된다. 메모리 어레이(560)는 메모리의 개별 채널들, 랭크들, 뱅크들, 및 파티션들로서 조직될 수 있다. 채널들은 메모리 디바이스들(540) 내의 저장 위치들에 대한 독립적인 제어 경로들을 지칭할 수 있다. 랭크들은 병렬로 다수의 메모리 디바이스에 걸친 공통 위치들(예를 들어, 상이한 디바이스들 내의 동일한 행 어드레스들)을 지칭할 수 있다. 뱅크들은 메모리 디바이스(540) 내의 메모리 위치들의 서브-어레이(sub-array)들을 지칭할 수 있다. 일 예에서, 메모리의 뱅크들은 서브-뱅크들에 대한 공유 회로(예를 들어, 드라이버들, 신호 라인들, 제어 로직)의 적어도 일부를 갖는 서브-뱅크들로 분할되어, 개별 어드레싱 및 액세스를 허용한다. 채널들, 랭크들, 뱅크들, 서브-뱅크들, 뱅크 그룹들, 또는 메모리 위치들의 다른 조직들, 및 조직들의 조합들은 물리 리소스들에 대한 그들의 적용에서 중첩할 수 있다는 것이 이해될 것이다. 예를 들어, 동일한 물리적 메모리 위치들은 랭크에 또한 속할 수 있는 특정 뱅크로서 특정 채널을 통해 액세스될 수 있다. 따라서, 메모리 리소스들의 조직은 배타적이기보다는 포괄적인 방식으로 이해될 것이다.
일 예에서, 메모리 디바이스들(540)은 하나 이상의 레지스터(544)를 포함한다. 레지스터(544)는 메모리 디바이스의 동작을 위한 구성 또는 설정들을 제공하는 하나 이상의 저장 디바이스 또는 저장 위치를 나타낸다. 일 예에서, 레지스터(544)는 메모리 디바이스(540)가 제어 또는 관리 동작의 일부로서 메모리 컨트롤러(520)에 의한 액세스를 위한 데이터를 저장하기 위한 저장 위치를 제공할 수 있다. 일 예에서, 레지스터(544)는 하나 이상의 모드 레지스터를 포함한다. 일 예에서, 레지스터(544)는 하나 이상의 다목적 레지스터를 포함한다. 레지스터(544) 내의 위치들의 구성은 상이한 "모드들"로 동작하도록 메모리 디바이스(540)를 구성할 수 있고, 여기서 커맨드 정보는 모드에 기초하여 메모리 디바이스(540) 내에서 상이한 동작들을 트리거링할 수 있다. 추가적으로 또는 대안적으로, 상이한 모드들은 또한 모드에 따라 어드레스 정보 또는 기타 신호 라인들로부터 상이한 동작을 트리거링할 수 있다. 레지스터(544)의 설정들은 I/O 설정들(예를 들어, 타이밍, 종단 또는 ODT(온-다이 종단)(546), 드라이버 구성, 또는 다른 I/O 설정들)에 대한 구성을 표시할 수 있다.
일 예에서, 메모리 디바이스(540)는 I/O(542)와 연관된 인터페이스 하드웨어의 일부로서 ODT(546)를 포함한다. ODT(546)는 위에 언급된 바와 같이 구성될 수 있고, 특정된 신호 라인들에 대한 인터페이스에 적용될 임피던스에 대한 설정들을 제공할 수 있다. 일 예에서, ODT(546)는 DQ 신호 라인들에 적용된다. 일 예에서, ODT(546)는 커맨드 신호 라인들에 적용된다. 일 예에서, ODT(546)는 어드레스 신호 라인들에 적용된다. 일 예에서, ODT(546)는 전술한 것의 임의의 조합에 적용될 수 있다. ODT 설정들은 메모리 디바이스가 액세스 동작의 선택된 타겟인지 또는 비-타겟 디바이스인지에 기초하여 변경될 수 있다. ODT(546) 설정들은 종단된 라인들 상의 시그널링의 타이밍 및 반사들에 영향을 미칠 수 있다. ODT(546)에 대한 신중한 제어는 적용된 임피던스 및 로딩의 개선된 매칭을 이용하여 더 고속의 동작을 가능하게 할 수 있다. ODT(546)는 I/O 인터페이스(542, 522)의 특정 신호 라인들에 적용될 수 있고(예를 들어, DQ 라인들에 대한 ODT 또는 CA 라인들에 대한 ODT), 반드시 모든 신호 라인들에 적용되는 것은 아니다.
메모리 디바이스(540)는 컨트롤러(550)를 포함하고, 이 컨트롤러는 메모리 디바이스 내의 내부 동작들을 제어하기 위한 메모리 디바이스 내의 제어 로직을 나타낸다. 예를 들어, 컨트롤러(550)는 메모리 컨트롤러(520)에 의해 전송된 커맨드들을 디코딩하고, 커맨드들을 실행하거나 충족시키는 내부 동작들을 생성한다. 컨트롤러(550)는 내부 컨트롤러로서 지칭될 수 있고, 호스트의 메모리 컨트롤러(520)로부터 분리된다. 컨트롤러(550)는 레지스터(544)에 기초하여 어떤 모드가 선택되는지를 결정할 수 있고, 선택된 모드에 기초하여 메모리 리소스들(560)로의 액세스를 위한 동작들 또는 다른 동작들의 내부 실행을 구성할 수 있다. 컨트롤러(550)는 선택된 모드에 대한 적절한 인터페이스를 제공하고 커맨드를 적절한 메모리 위치들 또는 어드레스들로 지향시키기 위해 메모리 디바이스(540) 내의 비트들의 라우팅을 제어하기 위한 제어 신호들을 생성한다. 컨트롤러(550)는 커맨드 및 어드레스 신호 라인들 상에서 수신된 커맨드 인코딩을 디코딩할 수 있는 커맨드 로직(552)을 포함한다. 따라서, 커맨드 로직(552)은 커맨드 디코더일 수 있거나 이를 포함할 수 있다. 커맨드 로직(552)에 의해, 메모리 디바이스는 요청된 커맨드들을 실행하기 위해 커맨드들을 식별하고 내부 동작들을 생성할 수 있다.
메모리 컨트롤러(520)를 다시 참조하면, 메모리 컨트롤러(520)는 메모리 디바이스들(540)에 전송할 커맨드들을 생성하는 로직 또는 회로를 나타내는 커맨드(CMD) 로직(524)을 포함한다. 커맨드들의 생성은 스케줄링 전의 커맨드, 또는 전송될 준비가 된 큐잉된 커맨드들의 준비를 지칭할 수 있다. 일반적으로, 메모리 서브시스템들 내의 시그널링은 메모리 디바이스들이 커맨드를 실행해야 하는 하나 이상의 메모리 위치를 표시하거나 선택하기 위해 커맨드 내에 또는 그와 동반하는 어드레스 정보를 포함한다. 메모리 디바이스(540)에 대한 트랜잭션들의 스케줄링에 응답하여, 메모리 컨트롤러(520)는 I/O(522)를 통해 커맨드들을 발행하여 메모리 디바이스(540)가 커맨드들을 실행하게 할 수 있다. 일 예에서, 메모리 디바이스(540)의 컨트롤러(550)는 메모리 컨트롤러(520)로부터 I/O(542)를 통해 수신된 커맨드 및 어드레스 정보를 수신하고 디코딩한다. 수신된 커맨드 및 어드레스 정보에 기초하여, 컨트롤러(550)는 커맨드들을 실행하기 위해 메모리 디바이스(540) 내의 로직 및 회로의 동작들의 타이밍을 제어할 수 있다. 컨트롤러(550)는 타이밍 및 시그널링 요건들과 같은, 메모리 디바이스(540) 내의 표준들 또는 사양들을 준수할 책임이 있다. 메모리 컨트롤러(520)는 액세스 스케줄링 및 제어에 의해 표준들 또는 사양들의 준수를 구현할 수 있다.
메모리 컨트롤러(520)는 메모리 디바이스(540)에 전송할 트랜잭션들을 생성하고 순서화하는 로직 또는 회로를 나타내는 스케줄러(530)를 포함한다. 하나의 관점에서, 메모리 컨트롤러(520)의 주 기능은 메모리 디바이스(540)에 대한 메모리 액세스 및 다른 트랜잭션들을 스케줄링하는 것이라고 말할 수 있다. 그러한 스케줄링은, 프로세서(510)에 의한 데이터에 대한 요청들을 구현하고 데이터의 무결성을 유지하기 위해(예를 들어, 리프레시에 관련된 커맨드들과 같이) 트랜잭션들 자체를 생성하는 것을 포함할 수 있다. 트랜잭션들은 하나 이상의 커맨드를 포함할 수 있고, 클록 사이클들 또는 유닛 간격들과 같은 하나 또는 다수의 타이밍 사이클에 걸쳐 커맨드들 또는 데이터 또는 둘 다의 전송을 초래할 수 있다. 트랜잭션들은 판독 또는 기입 또는 관련 커맨드들 또는 조합과 같은 액세스를 위한 것일 수 있고, 다른 트랜잭션들은 구성, 설정들, 데이터 무결성, 또는 다른 커맨드들 또는 조합에 대한 메모리 관리 커맨드들을 포함할 수 있다.
메모리 컨트롤러(520)는 통상적으로 시스템(500)의 성능을 개선하기 위해 트랜잭션들의 선택 및 순서화를 허용하는 스케줄러(530)와 같은 로직을 포함한다. 따라서, 메모리 컨트롤러(520)는 미처리 트랜잭션들 중 어느 것이 어느 순서로 메모리 디바이스(540)에 전송되어야 하는지를 선택할 수 있고, 이는 전형적으로 단순한 선입선출(first-in first-out) 알고리즘보다 훨씬 더 복잡한 로직으로 달성된다. 메모리 컨트롤러(520)는 메모리 디바이스(540)에 대한 트랜잭션들의 송신을 관리하고, 트랜잭션과 연관된 타이밍을 관리한다. 일 예에서, 트랜잭션들은 결정론적 타이밍을 가지며, 이는 메모리 컨트롤러(520)에 의해 관리될 수 있고 스케줄러(530)로 트랜잭션들을 어떻게 스케줄링할지를 결정하기 위해 사용될 수 있다.
일 예에서, 메모리 컨트롤러(520)는 리프레시(REF) 로직(526)을 포함한다. 리프레시 로직(526)은 결정론적 상태를 유지하기 위해 메모리 리소스들을 리프레싱하기 위해 사용될 수 있다. 휘발성 메모리 리소스들은 상태를 유지하기 위해 정기적으로 리프레싱될 필요가 있는 한편, 비휘발성 메모리 리소스들은 판독/기입 교란을 회피하기 위해 리프레싱될 필요가 있을 수 있다. 일 예에서, 리프레시 로직(526)은 리프레시에 대한 위치, 및 수행할 리프레시의 타입을 표시한다. 리프레시 로직(526)은 메모리 디바이스(540) 내에 셀프-리프레시를 트리거링하거나, 리프레시 커맨드들을 전송함으로써 (자동 리프레시 커맨드들이라고 지칭될 수 있는) 외부 리프레시들을 실행하거나, 또는 조합을 실행할 수 있다. 일 예에서, 메모리 디바이스(540) 내의 컨트롤러(550)는 메모리 디바이스(540) 내에 리프레시를 적용하기 위한 리프레시 로직(554)을 포함한다. 리프레시 로직(554)은 내부적으로, 또는 메모리 컨트롤러(520)로부터 수신된 외부 리프레시에 따라, 리프레시를 수행하기 위한 내부 동작들을 생성한다.
도 6은 기입 카운트 자동 증분이 구현될 수 있는 컴퓨팅 시스템의 예의 블록도이다. 시스템(600)은 본 명세서에서의 임의의 예에 따른 컴퓨팅 디바이스를 나타내고, 랩톱 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 서버, 게이밍 또는 엔터테인먼트 제어 시스템, 임베디드 컴퓨팅 디바이스, 또는 다른 전자 디바이스일 수 있다. 시스템(600)은 도 1의 시스템(100) 또는 도 2의 시스템(200)에 따른 시스템의 예를 제공한다.
일 예에서, 시스템(600)은 메모리 서브시스템(620) 내의 자동 증분 로직(692) 또는 저장 서브시스템(680) 내의 자동 증분 로직(694)을 포함하거나, 또는 둘 다를 포함한다. 일 예에서, 메모리(630)의 하나의 NV 메모리 디바이스 또는 NV 메모리 어레이, 또는 스토리지(684)의 하나의 NV 메모리 디바이스는 본 명세서에서의 임의의 예에 따라 메모리의 블록에 대한 블록 기입 카운트를 관리하기 위해 다수의 디바이스 중에서 선택될 수 있다. 일 예에서, 선택된 NV 메모리 디바이스 또는 NV 메모리 어레이는 기입 카운트 메타데이터를 저장한다. 일 예에서, 선택된 디바이스는 기입 카운트를 관리하도록 구성된 구성 모드에 기초하여 선택된다. 일 예에서, 자동 증분 로직(692) 또는 자동 증분 로직(694)은 기입 카운트의 자동 증분을 수행하기 위한 하드웨어를 포함한다.
시스템(600)은 시스템(600)에 대한 명령어들의 프로세싱 또는 실행을 제공하기 위해, 임의의 타입의 마이크로프로세서, 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 프로세싱 코어, 또는 다른 프로세싱 하드웨어, 또는 조합을 포함할 수 있는 프로세서(610)를 포함할 수 있다. 프로세서(610)는 시스템(600)의 전체 동작을 제어하고, 하나 이상의 프로그램가능 범용 또는 특수 목적 마이크로프로세서들, DSP들(digital signal processors), 프로그램가능 컨트롤러들, ASIC들(application specific integrated circuits), PLD들(programmable logic devices), 또는 이러한 디바이스들의 조합일 수 있거나 이들을 포함할 수 있다.
일 예에서, 시스템(600)은 프로세서(610)에 결합되는 인터페이스(612)를 포함하고, 이는 메모리 서브시스템(620) 또는 그래픽 인터페이스 컴포넌트들(640)과 같은, 더 높은 대역폭의 접속들을 필요로 하는 시스템 컴포넌트들에 대한 더 고속의 인터페이스 또는 높은 스루풋의 인터페이스를 나타낼 수 있다. 인터페이스(612)는 인터페이스 회로를 나타내고, 이는 독립형 컴포넌트일 수 있거나 프로세서 다이 상에 통합될 수 있다. 인터페이스(612)는 프로세서 다이 상에 회로로서 통합되거나 또는 시스템 온 칩 상의 컴포넌트로서 통합될 수 있다. 존재하는 경우, 그래픽 인터페이스(640)는 시스템(600)의 사용자에게 시각적 디스플레이를 제공하기 위한 그래픽 컴포넌트들에 인터페이싱한다. 그래픽 인터페이스(640)는 독립형 컴포넌트일 수 있거나 또는 프로세서 다이 또는 시스템 온 칩 상에 통합될 수 있다. 일 예에서, 그래픽 인터페이스(640)는 사용자에게 출력을 제공하는 HD(high definition) 디스플레이 또는 UHD(ultra high definition) 디스플레이를 구동할 수 있다. 일 예에서, 디스플레이는 터치스크린 디스플레이를 포함할 수 있다. 일 예에서, 그래픽 인터페이스(640)는 메모리(630)에 저장된 데이터에 기초하여 또는 프로세서(610)에 의해 실행되는 동작들에 기초하여 또는 둘 다에 기초하여 디스플레이를 생성한다.
메모리 서브시스템(620)은 시스템(600)의 메인 메모리를 나타내고, 프로세서(610)에 의해 실행될 코드, 또는 루틴을 실행하는 데 사용될 데이터 값들에 대한 저장을 제공한다. 메모리 서브시스템(620)은 ROM(read-only memory), 플래시 메모리, DRAM과 같은 하나 이상의 다양한 RAM(random access memory), 3DXP(3차원 크로스포인트), 또는 다른 메모리 디바이스들, 또는 이러한 디바이스들의 조합과 같은 하나 이상의 메모리 디바이스(630)를 포함할 수 있다. 메모리(630)는, 특히, 시스템(600)에서의 명령어들의 실행을 위한 소프트웨어 플랫폼을 제공하기 위한 OS(operating system)(632)를 저장하고 호스팅한다. 추가적으로, 애플리케이션들(634)은 메모리(630)로부터의 OS(632)의 소프트웨어 플랫폼 상에서 실행될 수 있다. 애플리케이션들(634)은 하나 이상의 기능의 실행을 수행하는 그들 자신의 연산 로직을 갖는 프로그램들을 나타낸다. 프로세스들(636)은 OS(632) 또는 하나 이상의 애플리케이션(634) 또는 조합에 보조 기능들을 제공하는 에이전트들 또는 루틴들을 나타낸다. OS(632), 애플리케이션들(634), 및 프로세스들(636)은 시스템(600)에 대한 기능들을 제공하기 위한 소프트웨어 로직을 제공한다. 일 예에서, 메모리 서브시스템(620)은 메모리 컨트롤러(622)를 포함하고, 이는 메모리(630)에 커맨드들을 생성하고 발행하기 위한 메모리 컨트롤러이다. 메모리 컨트롤러(622)는 프로세서(610)의 물리적 부분 또는 인터페이스(612)의 물리적 부분일 수 있다는 것이 이해될 것이다. 예를 들어, 메모리 컨트롤러(622)는, 프로세서 다이 또는 시스템 온 칩 상에 통합되는 것과 같이, 프로세서(610)와 함께 회로 상에 통합되는, 통합 메모리 컨트롤러일 수 있다.
구체적으로 예시되지는 않았지만, 시스템(600)은 메모리 버스, 그래픽 버스, 인터페이스 버스 등과 같은 디바이스들 사이의 하나 이상의 버스 또는 버스 시스템을 포함할 수 있다는 것이 이해될 것이다. 버스들 또는 기타 신호 라인들은 컴포넌트들을 함께 통신적으로 또는 전기적으로 결합하거나, 또는 컴포넌트들을 통신적으로 및 전기적으로 둘 다로 결합할 수 있다. 버스들은 물리적 통신 라인들, 포인트-투-포인트(point-to-point) 접속들, 브리지들, 어댑터들, 컨트롤러들, 또는 다른 회로 또는 조합을 포함할 수 있다. 버스들은, 예를 들어, 시스템 버스, PCI(Peripheral Component Interconnect) 버스, 하이퍼트랜스포트 또는 ISA(industry standard architecture) 버스, SCSI(small computer system interface) 버스, USB(universal serial bus), 또는 다른 버스, 또는 조합 중 하나 이상을 포함할 수 있다.
일 예에서, 시스템(600)은 인터페이스(614)를 포함하고, 이는 인터페이스(612)에 결합될 수 있다. 인터페이스(614)는 인터페이스(612)보다 더 저속의 인터페이스일 수 있다. 일 예에서, 인터페이스(614)는 인터페이스 회로를 나타내고, 이는 독립형 컴포넌트들 및 집적 회로를 포함할 수 있다. 일 예에서, 다수의 사용자 인터페이스 컴포넌트들 또는 주변장치 컴포넌트들, 또는 둘 다가 인터페이스(614)에 결합된다. 네트워크 인터페이스(650)는 시스템(600)에게 하나 이상의 네트워크를 통해 원격 디바이스들(예를 들어, 서버들 또는 다른 컴퓨팅 디바이스들)과 통신하는 능력을 제공한다. 네트워크 인터페이스(650)는 이더넷(Ethernet) 어댑터, 무선 상호접속 컴포넌트들, 셀룰러 네트워크 상호접속 컴포넌트들, USB(universal serial bus), 또는 다른 유선 또는 무선 표준-기반 또는 독점적 인터페이스들을 포함할 수 있다. 네트워크 인터페이스(650)는 원격 디바이스와 데이터를 교환할 수 있고, 이는 메모리에 저장된 데이터를 전송하거나 메모리에 저장될 데이터를 수신하는 것을 포함할 수 있다.
일 예에서, 시스템(600)은 하나 이상의 입력/출력(I/O) 인터페이스(들)(660)를 포함한다. I/O 인터페이스(660)는 그를 통해 사용자가 시스템(600)과 상호작용하는 하나 이상의 인터페이스 컴포넌트(예를 들어, 오디오, 영숫자, 촉각/터치, 또는 다른 인터페이싱)를 포함할 수 있다. 주변장치 인터페이스(670)는 위에서 구체적으로 언급되지 않은 임의의 하드웨어 인터페이스를 포함할 수 있다. 주변장치들은 일반적으로 시스템(600)에 의존적으로 접속하는 디바이스들을 지칭한다. 종속 접속은 시스템(600)이 그 위에서 동작이 실행되고, 그와 사용자가 상호작용하는 소프트웨어 플랫폼 또는 하드웨어 플랫폼을 제공하는 것이다.
일 예에서, 시스템(600)은 데이터를 비휘발성 방식으로 저장하기 위한 저장 서브시스템(680)을 포함한다. 일 예에서, 특정 시스템 구현들에서, 스토리지(680)의 적어도 특정 컴포넌트들이 메모리 서브시스템(620)의 컴포넌트들과 중첩될 수 있다. 저장 서브시스템(680)은 저장 디바이스(들)(684)를 포함하며, 이는 하나 이상의 자기, 솔리드 스테이트, 3DXP, 또는 광학 기반 디스크들, 또는 조합과 같은 비휘발성 방식으로 많은 양의 데이터를 저장하기 위한 임의의 종래의 매체일 수 있거나 이들을 포함할 수 있다. 스토리지(684)는 코드 또는 명령어들 및 데이터(686)를 지속적인 상태로 유지한다(즉, 시스템(600)에의 전력이 중단되더라도 값이 보유됨). 메모리(630)는 통상적으로 프로세서(610)에 명령어들을 제공하기 위한 실행 또는 동작 메모리이더라도, 스토리지(684)는 일반적으로 "메모리(memory)"인 것으로 간주될 수 있다. 스토리지(684)가 비휘발성인 반면, 메모리(630)는 휘발성 메모리를 포함할 수 있다(즉, 시스템(600)에 대해 전력이 중단되면, 데이터의 값 또는 상태가 불확정적임). 일 예에서, 저장 서브시스템(680)은 스토리지(684)와 인터페이싱하기 위한 컨트롤러(682)를 포함한다. 일 예에서, 컨트롤러(682)는 인터페이스(614) 또는 프로세서(610)의 물리적 부분이거나, 또는 프로세서(610) 및 인터페이스(614) 둘 다에서의 회로들 또는 로직을 포함할 수 있다.
전력 소스(602)는 시스템(600)의 컴포넌트들에 전력을 제공한다. 더 구체적으로, 전력 소스(602)는 시스템(600)의 컴포넌트들에 전력을 제공하기 위해 시스템(600) 내의 하나 또는 다수의 전력 공급장치(604)에 전형적으로 인터페이싱한다. 일 예에서, 전력 공급장치(604)는 벽 콘센트에 플러그하기 위한 AC-DC(교류-직류) 어댑터를 포함한다. 그러한 AC 전력은 재생가능 에너지(예를 들어, 태양 전력) 전력 소스(602)일 수 있다. 일 예에서, 전력 소스(602)는 외부 AC-DC 컨버터와 같은 DC 전력 소스를 포함한다. 일 예에서, 전력 소스(602) 또는 전력 공급장치(604)는 충전 필드에의 근접을 통해 충전하기 위한 무선 충전 하드웨어를 포함한다. 일 예에서, 전력 소스(602)는 내부 배터리 또는 연료 전지 소스를 포함할 수 있다.
도 7은 기입 카운트 자동 증분이 구현될 수 있는 모바일 디바이스의 예의 블록도이다. 시스템(700)은 컴퓨팅 태블릿, 모바일 폰 또는 스마트폰, 웨어러블 컴퓨팅 디바이스, 또는 다른 모바일 디바이스, 또는 임베디드 컴퓨팅 디바이스와 같은 모바일 컴퓨팅 디바이스를 나타낸다. 컴포넌트들의 일부가 일반적으로 도시되며, 이러한 디바이스의 모든 컴포넌트들이 시스템(700)에 도시되는 것은 아닌 것이 이해될 것이다. 시스템(700)은 도 1의 시스템(100) 또는 도 2의 시스템(200)에 따른 시스템의 예를 제공한다.
일 예에서, 시스템(700)은 메모리 서브시스템(760)에서의 자동 증분 로직(790)을 포함한다. 일 예에서, 메모리(762)의 하나의 NV 메모리 디바이스 또는 NV 메모리 어레이는 본 명세서에서의 임의의 예에 따라 메모리의 블록에 대한 블록 기입 카운트를 관리하기 위해 다수의 디바이스 중에서 선택될 수 있다. 일 예에서, 선택된 NV 메모리 디바이스 또는 NV 메모리 어레이는 기입 카운트 메타데이터를 저장한다. 일 예에서, 선택된 디바이스는 기입 카운트를 관리하도록 구성된 구성 모드에 기초하여 선택된다. 일 예에서, 자동 증분 로직(790)은 기입 카운트의 자동 증분을 수행하기 위한 하드웨어를 포함한다.
시스템(700)은 시스템(700)의 주된 프로세싱 동작들을 수행하는 프로세서(710)를 포함한다. 프로세서(710)는 마이크로프로세서들, 애플리케이션 프로세서들, 마이크로컨트롤러들, 프로그램가능 로직 디바이스들, 또는 다른 프로세싱 수단과 같은 하나 이상의 물리적 디바이스를 포함할 수 있다. 프로세서(710)에 의해 수행되는 프로세싱 동작들은 애플리케이션들 및/또는 디바이스 기능들이 실행되는 운영 플랫폼 또는 운영 체제의 실행을 포함한다. 프로세싱 동작들은 인간 사용자와의 또는 다른 디바이스들과의 I/O(입력/출력)에 관련된 동작들, 전력 관리에 관련된 동작들, 및/또는 시스템(700)을 다른 디바이스에 접속시키는 것에 관련된 동작들, 또는 이들의 조합을 포함한다. 프로세싱 동작들은 오디오 I/O, 디스플레이 I/O, 또는 다른 인터페이싱, 또는 조합에 관련된 동작들을 또한 포함할 수 있다. 프로세서(710)는 메모리에 저장된 데이터를 실행할 수 있다. 프로세서(710)는 메모리에 저장된 데이터를 기입 또는 편집할 수 있다.
일 예에서, 시스템(700)은 하나 이상의 센서(712)를 포함한다. 센서들(712)은 임베디드 센서들 또는 외부 센서들에 대한 인터페이스들, 또는 조합을 나타낸다. 센서들(712)은 시스템(700)으로 하여금 시스템(700)이 구현되는 환경 또는 디바이스의 하나 이상의 조건을 모니터링 또는 검출할 수 있게 한다. 센서들(712)은 환경 센서들(예컨대, 온도 센서들, 모션 검출기들, 광 검출기들, 카메라들, 화학적 센서들(예를 들어, 일산화탄소, 이산화탄소, 또는 다른 화학적 센서들)), 압력 센서들, 가속도계들, 자이로스코프들, 의료용 또는 생리학 센서들(예를 들어, 바이오센서들, 심장 박동수 측정기들, 또는 생리학적 속성들을 검출하기 위한 다른 센서들), 또는 다른 센서들, 또는 조합을 포함할 수 있다. 센서들(712)은 지문 인식 시스템들, 얼굴 검출 또는 인식 시스템들, 또는 사용자 특징들을 검출 또는 인식하는 다른 시스템들과 같은 생체인식 시스템들을 위한 센서들을 또한 포함할 수 있다. 센서들(712)은 광범위하게 이해되어야 하고, 시스템(700)으로 구현될 수 있는 다수의 상이한 타입의 센서들에 제한을 두지 않는다. 일 예에서는, 하나 이상의 센서(712)가 프로세서(710)와 통합되는 프론트엔드 회로를 통해 프로세서(710)에 결합된다. 일 예에서는, 하나 이상의 센서(712)가 시스템(700)의 다른 컴포넌트를 통해 프로세서(710)에 결합된다.
일 예에서, 시스템(700)은 오디오 서브시스템(720)을 포함하고, 이는 오디오 기능들을 컴퓨팅 디바이스에 제공하는 것과 연관된 하드웨어(예를 들어, 오디오 하드웨어 및 오디오 회로들) 및 소프트웨어(예를 들어, 드라이버들, 코덱들) 컴포넌트들을 나타낸다. 오디오 기능들은 스피커 또는 헤드폰 출력뿐만 아니라 마이크로폰 입력을 포함할 수 있다. 이러한 기능들을 위한 디바이스들은 시스템(700)에 통합될 수 있거나, 시스템(700)에 접속될 수 있다. 일 예에서, 사용자는 프로세서(710)에 의해 수신되고 프로세싱되는 오디오 커맨드들을 제공함으로써 시스템(700)과 상호작용한다.
디스플레이 서브시스템(730)은 사용자에게 프레젠테이션하기 위한 시각적 디스플레이를 제공하는 하드웨어(예를 들어, 디스플레이 디바이스들) 및 소프트웨어 컴포넌트들(예를 들어, 드라이버들)을 나타낸다. 일 예에서, 디스플레이는 사용자가 컴퓨팅 디바이스와 상호 작용하기 위한 촉각 컴포넌트들 또는 터치스크린 요소들을 포함한다. 디스플레이 서브시스템(730)은 디스플레이를 사용자에게 제공하기 위해 사용되는 특정한 스크린 또는 하드웨어 디바이스를 포함하는 디스플레이 인터페이스(732)를 포함한다. 일 예에서는, 디스플레이 인터페이스(732)가 디스플레이에 관련된 적어도 일부 프로세싱을 수행하는 프로세서(710)와는 별개인 (그래픽 프로세서와 같은) 로직을 포함한다. 일 예에서, 디스플레이 서브시스템(730)은 사용자에게 출력 및 입력 둘 다를 제공하는 터치스크린 디바이스를 포함한다. 일 예에서, 디스플레이 서브시스템(730)은 사용자에게 출력을 제공하는 HD(high definition) 또는 UHD(ultra-high definition) 디스플레이를 포함한다. 일 예에서, 디스플레이 서브시스템은 터치스크린 디스플레이를 포함하거나 이를 구동한다. 일 예에서, 디스플레이 서브시스템(730)은 메모리에 저장된 데이터에 기초하여 또는 프로세서(710)에 의해 실행되는 동작들에 기초하여 또는 둘 다에 기초하여 디스플레이 정보를 생성한다.
I/O 컨트롤러(740)는 사용자와의 상호작용과 관련된 하드웨어 디바이스들 및 소프트웨어 컴포넌트들을 나타낸다. I/O 컨트롤러(740)는 오디오 서브시스템(720), 또는 디스플레이 서브시스템(730), 또는 둘 다의 일부인 하드웨어를 관리하도록 동작할 수 있다. 추가로, I/O 컨트롤러(740)는 시스템(700)에 접속하는 추가 디바이스들에 대한 접속 포인트를 예시하고, 이 접속 포인트를 통해 사용자가 시스템과 상호작용할 수 있다. 예를 들어, 시스템(700)에 부착될 수 있는 디바이스들은 마이크로폰 디바이스들, 스피커 또는 스테레오 시스템들, 비디오 시스템들 또는 다른 디스플레이 디바이스, 키보드 또는 키패드 디바이스들, 버튼들/스위치들, 또는 카드 판독기들 또는 다른 디바이스들과 같은 특정한 애플리케이션들과 사용하기 위한 다른 I/O 디바이스들을 포함할 수 있다.
위에 언급된 바와 같이, I/O 컨트롤러(740)는 오디오 서브시스템(720) 또는 디스플레이 서브시스템(730) 또는 둘 다와 상호작용할 수 있다. 예를 들어, 마이크로폰 또는 다른 오디오 디바이스를 통한 입력은 시스템(700)의 하나 이상의 애플리케이션 또는 기능들에 대한 입력 또는 커맨드들을 제공할 수 있다. 추가로, 오디오 출력은 디스플레이 출력 대신에 또는 디스플레이 출력에 추가하여 제공될 수 있다. 다른 일 예에서, 디스플레이 서브시스템이 터치스크린을 포함하면, 디스플레이 디바이스는 I/O 컨트롤러(740)에 의해 적어도 부분적으로 관리될 수 있는 입력 디바이스로서 또한 작용한다. I/O 컨트롤러(740)에 의해 관리되는 I/O 기능들을 제공하기 위한 시스템(700) 상의 추가 버튼들 또는 스위치들이 또한 존재할 수 있다.
일 예에서, I/O 컨트롤러(740)는 가속도계들, 카메라들, 광 센서들 또는 다른 환경 센서들, 자이로스코프들, GPS(global positioning system), 또는 시스템(700) 내에 포함될 수 있는 다른 하드웨어, 또는 센서들(712)과 같은 디바이스들을 관리한다. 입력은 시스템에 환경 입력을 제공하여 그 동작들(예컨대, 노이즈에 대한 필터링, 밝기 검출에 대한 디스플레이들의 조정, 카메라에 대한 플래시의 적용 또는 다른 특징들)에 영향을 줄 뿐만 아니라, 직접 사용자 상호작용의 일부일 수 있다.
일 예에서, 시스템(700)은 배터리 전력 사용, 배터리의 충전, 및 절전 동작과 관련된 특징들을 관리하는 전력 관리(750)를 포함한다. 전력 관리(750)는 시스템(700)의 컴포넌트들에 전력을 제공하는 전력 소스(752)로부터의 전력을 관리한다. 일 예에서, 전력 소스(752)는 벽 콘센트에 플러그하기 위한 AC-DC(교류-직류) 어댑터를 포함한다. 그러한 AC 전력은 재생가능 에너지(예를 들어, 태양 전력, 모션 기반 전력)일 수 있다. 일 예에서, 전력 소스(752)는 외부 AC-DC 컨버터와 같은, DC 전력 소스에 의해 제공될 수 있는 DC 전력만을 포함한다. 일 예에서, 전력 소스(752)는 충전 필드에 대한 근접을 통해 충전하기 위한 무선 충전 하드웨어를 포함한다. 일 예에서, 전력 소스(752)는 내부 배터리 또는 연료 전지 소스를 포함할 수 있다.
메모리 서브시스템(760)은 시스템(700)에 정보를 저장하기 위한 메모리 디바이스(들)(762)를 포함한다. 메모리 서브시스템(760)은 비휘발성(메모리 디바이스에의 전력이 중단되는 경우 상태가 변경되지 않음) 또는 휘발성(메모리 디바이스에의 전력이 중단되는 경우 상태가 불확정적임) 메모리 디바이스들, 또는 조합을 포함할 수 있다. 메모리(760)는 애플리케이션 데이터, 사용자 데이터, 음악, 사진들, 문서들, 또는 다른 데이터뿐만 아니라 시스템(700)의 애플리케이션들 및 기능들의 실행에 관한 시스템 데이터(장기적이든지 또는 일시적이든지)를 저장할 수 있다. 일 예에서, 메모리 서브시스템(760)은 (시스템(700)의 제어의 일부인 것으로도 간주될 수 있고 잠재적으로 프로세서(710)의 일부인 것으로 간주될 수 있는) 메모리 컨트롤러(764)를 포함한다. 메모리 컨트롤러(764)는 메모리 디바이스(762)에의 액세스를 제어하기 위한 커맨드들을 생성 및 발행하기 위한 스케줄러를 포함한다.
접속성(connectivity)(770)은 시스템(700)이 외부 디바이스들과 통신할 수 있게 하기 위한 하드웨어 디바이스들(예를 들어, 무선 또는 유선 커넥터들 및 통신 하드웨어, 또는 유선 및 무선 하드웨어의 조합) 및 소프트웨어 컴포넌트들(예를 들어, 드라이버들, 프로토콜 스택들)을 포함한다. 외부 디바이스는, 다른 컴퓨팅 디바이스들, 무선 액세스 포인트들 또는 기지국들과 같은 별개의 디바이스들뿐만 아니라 헤드셋들, 프린터들, 또는 다른 디바이스들과 같은 주변장치들일 수 있다. 일 예에서, 시스템(700)은 메모리에 저장하기 위해 또는 디스플레이 디바이스 상의 디스플레이를 위해 외부 디바이스와 데이터를 교환한다. 교환된 데이터는 데이터를 판독, 기입, 또는 편집하기 위해, 메모리에 이미 저장된 데이터, 또는 메모리에 저장될 데이터를 포함할 수 있다.
접속성(770)은 다수의 상이한 타입의 접속성을 포함할 수 있다. 일반화하기 위해, 셀룰러 접속성(772) 및 무선 접속성(774)을 갖는 시스템(700)이 예시되어 있다. 셀룰러 접속성(772)은 일반적으로 GSM(global system for mobile communications) 또는 변형들 또는 파생물들, CDMA(code division multiple access) 또는 변형들 또는 파생물들, TDM(time division multiplexing) 또는 변형들 또는 파생물들, LTE(long term evolution - "4G"로서 또한 지칭됨), 5G, 또는 다른 셀룰러 서비스 표준들을 통해 제공되는 것과 같은 무선 통신사들(wireless carriers)에 의해 제공되는 셀룰러 네트워크 접속성을 지칭한다. 무선 접속성(774)은 셀룰러가 아닌 무선 접속성을 지칭하고, 개인 영역 네트워크들(예컨대 블루투스), 로컬 영역 네트워크(예컨대 WiFi), 또는 광역 네트워크들(예컨대 WiMax), 또는 다른 무선 통신, 또는 조합을 포함할 수 있다. 무선 통신은 비-솔리드 매체(non-solid medium)를 통한 변조된 전자기 방사(modulated electromagnetic radiation)의 사용을 통하여 데이터를 전송하는 것을 지칭한다. 유선 통신은 솔리드 통신 매체(solid communication medium)를 통해 일어난다.
주변장치 접속들(peripheral connections)(780)은, 주변 장치 접속들을 구축하기 위한 하드웨어 인터페이스들과 커넥터들뿐만 아니라 소프트웨어 컴포넌트들(예를 들어, 드라이버들, 프로토콜 스택들)을 포함한다. 시스템(700)은 다른 컴퓨팅 디바이스들에 대한 주변 디바이스("~로(to)"(782))일 수 있는 것뿐만 아니라, 그것에 접속된 주변 디바이스들("~로부터(from)"(784))을 가질 수 있는 것 둘 다일 수 있다는 점이 이해될 것이다. 시스템(700)은 시스템(700) 상의 콘텐츠를 관리하는 것(예를 들어, 다운로딩하는 것, 업로딩하는 것, 변경하는 것, 또는 동기화하는 것)과 같은 목적들을 위해 다른 컴퓨팅 디바이스들에 접속하기 위한 "도킹(docking)" 커넥터를 보통 갖는다. 추가로, 도킹 커넥터는 예를 들어, 시청각 또는 다른 시스템들로의 콘텐츠 출력을 시스템(700)이 제어하는 것을 허용하는 특정한 주변장치들에 시스템(700)이 접속되게 할 수 있다.
독점적 도킹 커넥터(proprietary docking connector) 또는 다른 독점적 접속 하드웨어에 추가하여, 시스템(700)은 공통 또는 표준 기반 커넥터들을 통해 주변장치 접속들(780)을 구축할 수 있다. 공통 타입들은 USB(Universal Serial Bus) 커넥터(다수의 상이한 하드웨어 인터페이스 중 임의의 것을 포함할 수 있음), MDP(MiniDisplayPort)를 포함하는 DisplayPort, HDMI(High Definition Multimedia Interface), 또는 다른 타입을 포함할 수 있다.
일반적으로 본 명세서의 설명들과 관련하여, 일 예에서 비휘발성 메모리 디바이스는 다음을 포함한다: 데이터 블록을 집합적으로 저장하기 위한 다수의 비휘발성(NV) 메모리 어레이- 각각의 어레이는 데이터 블록의 일부를 저장하는 것이고, NV 메모리 어레이들 중 하나는 데이터 블록에 대한 기입 카운트를 저장하는 것임 -; 및 NV 메모리 어레이들에 데이터 블록을 기입하기 위한 기입 커맨드를 수신하기 위한 커맨드 버스 인터페이스- 기입 커맨드의 수신에 응답하여, NV 메모리 어레이들은 NV 메모리 어레이들에서의 데이터의 내부 사전 기입 판독을 수행하는 것이고, 하나의 NV 메모리 어레이는 기입 카운트의 사전 기입 판독을 수행하고, 하나의 NV 메모리 어레이 내부의 기입 카운트를 증분하고, 증분된 기입 카운트를 하나의 NV 메모리 어레이에 기입하는 것임 -.
일 예에서, NV 메모리 어레이들은 별개의 NV 메모리 칩들을 포함한다. 일 예에서, 하나의 NV 메모리 어레이는 에러 검사 및 정정(ECC) 데이터를 추가로 저장하는 것이다. 일 예에서, NV 메모리 어레이들은 기입 카운트 구성을 저장하기 위한 레지스터들을 추가로 포함하고, 하나의 NV 메모리 어레이는 기입 카운트 모드에 대한 레지스터 구성을 저장하는 것이고, 다른 NV 메모리 어레이들은 기입 카운트 모드를 인에이블하지 않기 위한 레지스터 구성을 저장하는 것이다. 일 예에서, NV 메모리 어레이들은 자동 증분 하드웨어를 추가로 포함하고, 여기서 기입 카운트 모드는 자동 증분 하드웨어를 선택적으로 인에이블 또는 디스에이블하는 것이다. 일 예에서, NV 메모리 어레이들은 NV 메모리 어레이들에서의 데이터의 사전 기입 판독을 수행하고, NV 메모리 어레이들에서의 데이터를 기입될 데이터와 비교하고, 기입 커맨드로 인해 상이한 값을 갖는 비트들만을 기입하는 것이다. 일 예에서, 하나의 NV 메모리 어레이는 기입 임계값을 저장하고, 기입 카운트가 기입 임계값에 도달한 것에 응답하여 연관된 컨트롤러에 경보를 전달하는 것이다.
일반적으로 본 명세서의 설명들과 관련하여, 일 예에서 시스템은: 컨트롤러; 및 비휘발성 메모리 디바이스를 포함하고, 이 비휘발성 메모리 디바이스는 다음을 포함한다: 데이터 블록을 집합적으로 저장하기 위한 다수의 비휘발성(NV) 메모리 어레이- 각각의 어레이는 데이터 블록의 일부를 저장하는 것이고, NV 메모리 어레이들 중 하나는 데이터 블록에 대한 기입 카운트를 저장하는 것임 -; 및 NV 메모리 어레이들에 데이터 블록을 기입하기 위한 기입 커맨드를 수신하기 위한 커맨드 버스 인터페이스- 기입 커맨드의 수신에 응답하여, NV 메모리 어레이들은 NV 메모리 어레이들에서의 데이터의 내부 사전 기입 판독을 수행하는 것이고, 하나의 NV 메모리 어레이는 기입 카운트의 사전 기입 판독을 수행하고, 하나의 NV 메모리 어레이 내부의 기입 카운트를 증분하고, 증분된 기입 카운트를 하나의 NV 메모리 어레이에 기입하는 것임 -.
일 예에서, NV 메모리 어레이들은 별개의 NV 메모리 칩들을 포함한다. 일 예에서, 하나의 NV 메모리 어레이는 에러 검사 및 정정(ECC) 데이터를 추가로 저장하는 것이다. 일 예에서, NV 메모리 어레이들은 기입 카운트 구성을 저장하기 위한 레지스터들을 추가로 포함하고, 하나의 NV 메모리 어레이는 기입 카운트 모드에 대한 레지스터 구성을 저장하는 것이고, 다른 NV 메모리 어레이들은 기입 카운트 모드를 인에이블하지 않기 위한 레지스터 구성을 저장하는 것이다. 일 예에서, NV 메모리 어레이들은 자동 증분 하드웨어를 추가로 포함하고, 여기서 기입 카운트 모드는 자동 증분 하드웨어를 선택적으로 인에이블 또는 디스에이블하는 것이다. 일 예에서, 하나의 NV 메모리 어레이는 기입 임계값을 저장하고, 기입 카운트가 기입 임계값에 도달한 것에 응답하여 컨트롤러에 경보를 전달하는 것이다. 일 예에서, 시스템은: 비휘발성 메모리 디바이스에 결합된 호스트 프로세서 디바이스; 호스트 프로세서에 통신가능하게 결합된 디스플레이; 호스트 프로세서에 통신가능하게 결합된 네트워크 인터페이스; 또는 시스템에 전력을 공급하기 위한 배터리 중 하나 이상을 추가로 포함한다.
일반적으로 본 명세서의 설명들과 관련하여, 일 예에서, 방법은 다음을 포함한다: 다수의 비휘발성(NV) 메모리 어레이에 데이터 블록을 집합적으로 저장하는 단계- 각각의 어레이는 데이터 블록의 일부를 저장하고, NV 메모리 어레이들 중 하나는 데이터 블록에 대한 기입 카운트를 저장함 -; 및 NV 메모리 어레이들에 데이터 블록을 기입하기 위한 기입 커맨드를 수신하는 단계- 기입 커맨드를 수신하는 것에 응답하여, NV 메모리 어레이들은 NV 메모리 어레이들에서의 데이터의 내부 사전 기입 판독을 수행하는 것이고, 하나의 NV 메모리 어레이는 기입 카운트의 사전 기입 판독을 수행하고, 하나의 NV 메모리 어레이 내부의 기입 카운트를 증분하고, 증분된 기입 카운트를 하나의 NV 메모리 어레이에 기입하는 것임 -.
일 예에서, NV 메모리 어레이들은 별개의 NV 메모리 칩들을 포함한다. 일 예에서, 하나의 NV 메모리 어레이는 에러 검사 및 정정(ECC) 데이터를 추가로 저장한다. 일 예에서, NV 메모리 어레이들은 기입 카운트 구성을 저장하는 레지스터들을 추가로 포함하고, 하나의 NV 메모리 어레이는 기입 카운트 모드에 대한 레지스터 구성을 저장하고, 다른 NV 메모리 어레이들은 기입 카운트 모드를 인에이블하지 않기 위한 레지스터 구성을 저장한다. 일 예에서, NV 메모리 어레이들은 자동 증분 하드웨어를 추가로 포함하고, 기입 카운트 모드는 자동 증분 하드웨어를 선택적으로 인에이블 또는 디스에이블한다. 일 예에서, 하나의 NV 메모리 어레이는 기입 임계값을 추가로 저장하고, 하나의 NV 메모리 어레이는 기입 카운트가 기입 임계값에 도달한 것에 응답하여 연관된 컨트롤러에 경보를 전달하는 것이다.
본 명세서에 예시된 것과 같은 흐름도들은 다양한 프로세스 액션들의 시퀀스들의 예들을 제공한다. 이러한 흐름도들은 소프트웨어 또는 펌웨어 루틴에 의해 실행될 동작들뿐만 아니라 물리적 동작들을 표시할 수 있다. 흐름도는 하드웨어 및/또는 소프트웨어로 구현될 수 있는 유한 상태 머신(finite state machine)(FSM)의 상태들의 구현의 예를 예시할 수 있다. 특정 시퀀스 또는 순서로 도시되지만, 달리 명시되지 않는 한, 액션들의 순서는 수정될 수 있다. 따라서, 예시되는 도면들은 예들로서만 이해되어야 하며, 프로세스는 상이한 순서로 수행될 수 있고, 일부 액션들은 병렬로 수행될 수 있다. 추가적으로, 하나 이상의 액션이 생략될 수 있다; 따라서, 모든 구현들이 모든 액션들을 수행할 것은 아니다.
다양한 동작들 또는 기능들이 본 명세서에 설명되는 범위에 대해, 이들은 소프트웨어 코드, 명령어들, 구성 및/또는 데이터로서 설명되거나 또는 정의될 수 있다. 콘텐츠는 직접 실행가능할 수 있거나("오브젝트" 또는 "실행파일(executable)" 형태), 소스 코드, 또는 차가 코드("델타" 또는 "패치" 코드)일 수 있다. 본 명세서에 설명된 것의 소프트웨어 콘텐츠는 콘텐츠가 저장되어 있는 제조 물품(article of manufacture)을 통해, 또는 통신 인터페이스를 통해 데이터를 전송하기 위해 통신 인터페이스를 동작시키는 방법을 통해 제공될 수 있다. 머신 판독가능 저장 매체는 머신으로 하여금 설명되는 기능들 또는 동작들을 수행하게 할 수 있고, 기록가능/비-기록가능 매체(예를 들어, ROM(read only memory), RAM(random access memory), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스들 등)와 같이, 머신(예를 들어, 컴퓨팅 디바이스, 전자 시스템 등)에 의해 액세스가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함한다. 통신 인터페이스는, 메모리 버스 인터페이스, 프로세서 버스 인터페이스, 인터넷 접속, 디스크 컨트롤러 등과 같은, 다른 디바이스에 통신하는 하드와이어드, 무선, 광 등의 매체 중 임의의 것에 인터페이싱하는 임의의 메커니즘을 포함한다. 이러한 통신 인터페이스는 소프트웨어 콘텐츠를 설명하는 데이터 신호를 제공하기 위한 통신 인터페이스를 마련하기 위해 구성 파라미터들을 제공하는 것 및/또는 신호들을 전송하는 것에 의해 구성될 수 있다. 통신 인터페이스는 통신 인터페이스에 전송되는 하나 이상의 커맨드 또는 신호를 통해 액세스될 수 있다.
본 명세서에 설명되는 다양한 컴포넌트들은 설명되는 동작들 또는 기능들을 수행하는 수단일 수 있다. 본 명세서에 설명된 각 컴포넌트는 소프트웨어, 하드웨어, 또는 이들의 조합을 포함한다. 이 컴포넌트들은 소프트웨어 모듈들, 하드웨어 모듈들, 특수-목적 하드웨어(예를 들어, 애플리케이션 특정 하드웨어, 애플리케이션 특정 집적 회로(application specific integrated circuit)(ASIC)들, 디지털 신호 프로세서(digital signal processor)(DSP)들 등), 임베디드 컨트롤러들, 하드와이어드 회로 등으로서 구현될 수 있다.
본 명세서에 설명되는 것 이외에, 본 발명의 범주를 벗어남이 없이 본 발명의 개시된 것 및 구현들에 대해 다양한 수정들이 행해질 수 있다. 따라서, 본 명세서에서의 예시들 및 예들은 제한적인 의미가 아니라 예시적으로 해석되어야 한다. 본 발명의 범주는 후속하는 청구항들에 대한 참조들에 의해서만 측정되어야 한다.

Claims (20)

  1. 비휘발성 메모리 디바이스로서,
    데이터 블록을 집합적으로 저장하기 위한 다수의 비휘발성(NV) 메모리 어레이- 각각의 어레이는 상기 데이터 블록의 일부를 저장하는 것이고, 상기 NV 메모리 어레이들 중 하나의 NV 메모리 어레이는 상기 데이터 블록에 대한 기입 카운트를 저장하는 것임 -; 및
    상기 NV 메모리 어레이들에 상기 데이터 블록을 기입하기 위한 기입 커맨드를 수신하기 위한 커맨드 버스 인터페이스- 상기 기입 커맨드의 수신에 응답하여, 상기 NV 메모리 어레이들은 상기 NV 메모리 어레이들에서의 상기 데이터 블록의 내부 사전 기입 판독을 수행하는 것이고, 상기 하나의 NV 메모리 어레이는 상기 기입 카운트의 사전 기입 판독을 수행하고, 상기 하나의 NV 메모리 어레이 내부의 상기 기입 카운트를 증분하고, 상기 증분된 기입 카운트를 상기 하나의 NV 메모리 어레이에 기입하는 것임 -를 포함하는 비휘발성 메모리 디바이스.
  2. 제1항에 있어서,
    상기 NV 메모리 어레이들은 별개의 NV 메모리 칩들을 포함하는 비휘발성 메모리 디바이스.
  3. 제1항에 있어서,
    상기 하나의 NV 메모리 어레이는 에러 검사 및 정정(ECC) 데이터를 추가로 저장하는 것인 비휘발성 메모리 디바이스.
  4. 제1항에 있어서,
    상기 NV 메모리 어레이들은 기입 카운트 구성을 저장하기 위한 레지스터들을 추가로 포함하고, 상기 하나의 NV 메모리 어레이는 기입 카운트 모드에 대한 레지스터 구성을 저장하는 것이고, 다른 NV 메모리 어레이들은 상기 기입 카운트 모드를 인에이블하지 않기 위한 레지스터 구성을 저장하는 것인 비휘발성 메모리 디바이스.
  5. 제4항에 있어서,
    상기 NV 메모리 어레이들은 자동 증분 하드웨어를 추가로 포함하고, 상기 기입 카운트 모드는 상기 자동 증분 하드웨어를 선택적으로 인에이블 또는 디스에이블하는 것인 비휘발성 메모리 디바이스.
  6. 제1항에 있어서,
    상기 NV 메모리 어레이들은 상기 NV 메모리 어레이들에서의 상기 데이터 블록의 상기 사전 기입 판독을 수행하고, 상기 NV 메모리 어레이들에서의 데이터를 기입될 데이터와 비교하고, 상기 기입 커맨드로 인해 상이한 값을 갖는 비트들만을 기입하는 것인 비휘발성 메모리 디바이스.
  7. 제1항에 있어서,
    상기 하나의 NV 메모리 어레이는 기입 임계값을 저장하고, 상기 기입 카운트가 상기 기입 임계값에 도달한 것에 응답하여 연관된 컨트롤러에 경보를 전달하는 것인 비휘발성 메모리 디바이스.
  8. 시스템으로서,
    컨트롤러; 및
    비휘발성 메모리 디바이스를 포함하고, 상기 비휘발성 메모리 디바이스는,
    데이터 블록을 집합적으로 저장하기 위한 다수의 비휘발성(NV) 메모리 어레이- 각각의 어레이는 상기 데이터 블록의 일부를 저장하는 것이고, 상기 NV 메모리 어레이들 중 하나의 NV 메모리 어레이는 상기 데이터 블록에 대한 기입 카운트를 저장하는 것임 -; 및
    상기 NV 메모리 어레이들에 상기 데이터 블록을 기입하기 위한 기입 커맨드를 수신하기 위한 커맨드 버스 인터페이스- 상기 기입 커맨드의 수신에 응답하여, 상기 NV 메모리 어레이들은 상기 NV 메모리 어레이들에서의 상기 데이터 블록의 내부 사전 기입 판독을 수행하는 것이고, 상기 하나의 NV 메모리 어레이는 상기 기입 카운트의 사전 기입 판독을 수행하고, 상기 하나의 NV 메모리 어레이 내부의 상기 기입 카운트를 증분하고, 상기 증분된 기입 카운트를 상기 하나의 NV 메모리 어레이에 기입하는 것임 -를 포함하는 시스템.
  9. 제8항에 있어서,
    상기 NV 메모리 어레이들은 별개의 NV 메모리 칩들을 포함하는 시스템.
  10. 제8항에 있어서,
    상기 하나의 NV 메모리 어레이는 에러 검사 및 정정(ECC) 데이터를 추가로 저장하는 것인 시스템.
  11. 제8항에 있어서,
    상기 NV 메모리 어레이들은 기입 카운트 구성을 저장하기 위한 레지스터들을 추가로 포함하고, 상기 하나의 NV 메모리 어레이는 기입 카운트 모드에 대한 레지스터 구성을 저장하는 것이고, 다른 NV 메모리 어레이들은 상기 기입 카운트 모드를 인에이블하지 않기 위한 레지스터 구성을 저장하는 것인 시스템.
  12. 제11항에 있어서,
    상기 NV 메모리 어레이들은 자동 증분 하드웨어를 추가로 포함하고, 상기 기입 카운트 모드는 상기 자동 증분 하드웨어를 선택적으로 인에이블 또는 디스에이블하는 것인 시스템.
  13. 제8항에 있어서,
    상기 하나의 NV 메모리 어레이는 기입 임계값을 저장하고, 상기 기입 카운트가 상기 기입 임계값에 도달한 것에 응답하여 상기 컨트롤러에 경보를 전달하는 것인 시스템.
  14. 제8항에 있어서,
    상기 비휘발성 메모리 디바이스에 결합된 호스트 프로세서 디바이스;
    호스트 프로세서에 통신가능하게 결합된 디스플레이;
    호스트 프로세서에 통신가능하게 결합된 네트워크 인터페이스; 또는
    상기 시스템에 전력을 공급하는 배터리 중 하나 이상을 추가로 포함하는 시스템.
  15. 방법으로서,
    다수의 비휘발성(NV) 메모리 어레이에 데이터 블록을 집합적으로 저장하는 단계- 각각의 어레이는 상기 데이터 블록의 일부를 저장하고, 상기 NV 메모리 어레이들 중 하나의 NV 메모리 어레이는 상기 데이터 블록에 대한 기입 카운트를 저장함 -; 및
    상기 NV 메모리 어레이들에 상기 데이터 블록을 기입하기 위한 기입 커맨드를 수신하는 단계를 포함하고,
    상기 기입 커맨드를 수신하는 것에 응답하여, 상기 NV 메모리 어레이들은 상기 NV 메모리 어레이들에서의 상기 데이터 블록의 내부 사전 기입 판독을 수행하는 것이고, 상기 하나의 NV 메모리 어레이는 상기 기입 카운트의 사전 기입 판독을 수행하고, 상기 하나의 NV 메모리 어레이 내부의 상기 기입 카운트를 증분하고, 상기 증분된 기입 카운트를 상기 하나의 NV 메모리 어레이에 기입하는 것인 방법.
  16. 제15항에 있어서,
    상기 NV 메모리 어레이들은 별개의 NV 메모리 칩들을 포함하는 방법.
  17. 제15항에 있어서,
    상기 하나의 NV 메모리 어레이는 에러 검사 및 정정(ECC) 데이터를 추가로 저장하는 방법.
  18. 제15항에 있어서,
    상기 NV 메모리 어레이들은 기입 카운트 구성을 저장하는 레지스터들을 추가로 포함하고, 상기 하나의 NV 메모리 어레이는 기입 카운트 모드에 대한 레지스터 구성을 저장하고, 다른 NV 메모리 어레이들은 상기 기입 카운트 모드를 인에이블하지 않기 위한 레지스터 구성을 저장하는 방법.
  19. 제18항에 있어서,
    상기 NV 메모리 어레이들은 자동 증분 하드웨어를 추가로 포함하고, 상기 기입 카운트 모드는 상기 자동 증분 하드웨어를 선택적으로 인에이블 또는 디스에이블하는 방법.
  20. 제15항에 있어서,
    상기 하나의 NV 메모리 어레이는 기입 임계값을 추가로 저장하고, 상기 하나의 NV 메모리 어레이는 상기 기입 카운트가 상기 기입 임계값에 도달한 것에 응답하여 연관된 컨트롤러에 경보를 전달하는 것인 방법.
KR1020200118221A 2020-01-14 2020-09-15 비휘발성 메모리에 대한 자동 증분 기입 카운트 KR20210091647A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/742,332 US11200113B2 (en) 2020-01-14 2020-01-14 Auto-increment write count for nonvolatile memory
US16/742,332 2020-01-14

Publications (1)

Publication Number Publication Date
KR20210091647A true KR20210091647A (ko) 2021-07-22

Family

ID=70550520

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200118221A KR20210091647A (ko) 2020-01-14 2020-09-15 비휘발성 메모리에 대한 자동 증분 기입 카운트

Country Status (5)

Country Link
US (1) US11200113B2 (ko)
EP (1) EP3852109A1 (ko)
JP (1) JP2021111333A (ko)
KR (1) KR20210091647A (ko)
CN (1) CN113129949A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7401193B2 (ja) * 2019-04-17 2023-12-19 キヤノン株式会社 情報処理装置及びその制御方法並びにプログラム
US11403195B2 (en) * 2019-08-07 2022-08-02 Micron Technology, Inc. Application of dynamic trim strategy in a die-protection memory sub-system
US11561729B2 (en) * 2020-08-19 2023-01-24 Micron Technology, Inc. Write determination counter
US11373705B2 (en) * 2020-11-23 2022-06-28 Micron Technology, Inc. Dynamically boosting read voltage for a memory device

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9153337B2 (en) 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
KR101411499B1 (ko) * 2008-05-19 2014-07-01 삼성전자주식회사 가변 저항 메모리 장치 및 그것의 관리 방법
US7830726B2 (en) 2008-09-30 2010-11-09 Seagate Technology Llc Data storage using read-mask-write operation
US9176800B2 (en) * 2011-08-31 2015-11-03 Micron Technology, Inc. Memory refresh methods and apparatuses
KR20140008702A (ko) 2012-07-11 2014-01-22 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 쓰기 방법
US9424946B2 (en) * 2013-02-08 2016-08-23 Seagate Technology Llc Non-volatile buffering to enable sloppy writes and fast write verification
KR102244618B1 (ko) * 2014-02-21 2021-04-26 삼성전자 주식회사 플래시 메모리 시스템 및 플래시 메모리 시스템의 제어 방법
US10127964B2 (en) * 2014-07-03 2018-11-13 Yale University Circuitry for ferroelectric FET-based dynamic random access memory and non-volatile memory
US9524790B1 (en) * 2015-08-02 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory cells wear reduction
US10031845B2 (en) 2016-04-01 2018-07-24 Intel Corporation Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
US10019198B2 (en) 2016-04-01 2018-07-10 Intel Corporation Method and apparatus for processing sequential writes to portions of an addressable unit
TW202001565A (zh) * 2018-06-21 2020-01-01 慧榮科技股份有限公司 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置
US10672452B2 (en) * 2018-09-21 2020-06-02 Micron Technology, Inc. Temperature informed memory refresh
US10825534B2 (en) * 2018-10-26 2020-11-03 Intel Corporation Per row activation count values embedded in storage cell array storage cells

Also Published As

Publication number Publication date
CN113129949A (zh) 2021-07-16
EP3852109A1 (en) 2021-07-21
US20200151052A1 (en) 2020-05-14
JP2021111333A (ja) 2021-08-02
US11200113B2 (en) 2021-12-14

Similar Documents

Publication Publication Date Title
US11990172B2 (en) Refresh command control for host assist of row hammer mitigation
US10755753B2 (en) Memory device with flexible internal data write control circuitry
US10636476B2 (en) Row hammer mitigation with randomization of target row selection
US10482947B2 (en) Integrated error checking and correction (ECC) in byte mode memory devices
US10679698B2 (en) Memory preset adjustment based on adaptive calibration
JP2020166832A5 (ko)
US11989106B2 (en) Inline buffer for in-memory post package repair (PPR)
US11200113B2 (en) Auto-increment write count for nonvolatile memory
US11210167B2 (en) Memory wordline isolation for improvement in reliability, availability, and scalability (RAS)
US11188264B2 (en) Configurable write command delay in nonvolatile memory
US20220121398A1 (en) Perfect row hammer tracking with multiple count increments
NL2031713B1 (en) Double fetch for long burst length memory data transfer
KR20230043692A (ko) 메모리 모듈 데이터 폭의 유연한 구성을 위한 인에이블링 로직