KR20240028856A - 스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법 - Google Patents

스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR20240028856A
KR20240028856A KR1020220107132A KR20220107132A KR20240028856A KR 20240028856 A KR20240028856 A KR 20240028856A KR 1020220107132 A KR1020220107132 A KR 1020220107132A KR 20220107132 A KR20220107132 A KR 20220107132A KR 20240028856 A KR20240028856 A KR 20240028856A
Authority
KR
South Korea
Prior art keywords
data
program data
volatile memory
check bit
storage
Prior art date
Application number
KR1020220107132A
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 삼성전자주식회사
Priority to KR1020220107132A priority Critical patent/KR20240028856A/ko
Priority to US18/322,725 priority patent/US20240071449A1/en
Priority to CN202311051116.3A priority patent/CN117636972A/zh
Publication of KR20240028856A publication Critical patent/KR20240028856A/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • 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
    • 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
    • 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
    • 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
    • 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/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • 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/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • 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/3436Arrangements for verifying correct programming or erasure
    • 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/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1087Data input latches
    • 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/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법이 제공된다. 스토리지 장치는 커맨드 및 프로그램 데이터를 전송하는 스토리지 컨트롤러, 커맨드 및 프로그램 데이터를 수신하는 비휘발성 메모리 장치, 스토리지 컨트롤러에서 전송되는 프로그램 데이터의 패턴을 모니터링하는 패턴 모니터링 회로를 포함하되, 패턴 모니터링 회로는 프로그램 데이터가 미리 설정된 반복 횟수 이상 동일하게 반복 수신되면, 비정상 상태 체크 비트를 스토리지 컨트롤러에 전송하고, 스토리지 컨트롤러는 비정상 상태 체크 비트를 수신하는 것에 응답하여, 프로그램 데이터를 비휘발성 메모리 장치로 재전송한다.

Description

스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법 {STORAGE DEVICE, NONVOLATILE MEMORY DEVICE AND OPERATING METHOD THEREOF}
본 발명은 스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법에 관한 것이다.
SSD(Solid State Drive), UFS(Universal Flash Storage) 등 솔루션(Solution) 제품들의 고용량화 및 고성능화가 진행되면서, 낸드 플래시 메모리(Nand Flash Memory)의 입출력 주파수(I/O Frequency)는 점점 높아지고 있다. 이에 따라, 낸드 플래시 메모리의 SI(Signal Integrity) 특성은 점점 악화되고 있다. 이에, 낸드 플래시 메모리의 SI 특성을 개선하기 위해 ODT(On Die Termination) 및 FBI(Frequency Boosting Interface) 등을 사용하고 있으나, Solution 제품의 동작 환경 및 노이즈(Noise) 등 환경적인 요인으로 인해 호스트(Host)에서 의도하지 않은 데이터들, 예를 들어 동일한 데이터 패턴이 연속적으로 낸드 플래시 메모리에 전송되는 경우가 발생한다. 이에, 낸드 플래시 메모리에 입력되는 데이터의 패턴을 모니터링하여 낸드 플래시 메모리에 의도치 않은 데이터가 프로그램되는 것을 사전에 방지하는 방법에 대한 연구가 진행 중이다.
본 발명이 해결하고자 하는 기술적 과제는 비휘발성 메모리 장치에 비정상 데이터가 프로그램되는 것을 사전에 방지하는 스토리지 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 비정상 데이터가 프로그램되는 것을 사전에 방지하는 비휘발성 메모리 장치의 동작 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 비정상 데이터가 프로그램되는 것을 사전에 방지하는 비휘발성 메모리 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 장치는 커맨드 및 프로그램 데이터를 전송하는 스토리지 컨트롤러, 커맨드 및 프로그램 데이터를 수신하는 비휘발성 메모리 장치, 스토리지 컨트롤러에서 전송되는 프로그램 데이터의 패턴을 모니터링하는 패턴 모니터링 회로를 포함하되, 패턴 모니터링 회로는 프로그램 데이터가 미리 설정된 반복 횟수 이상 동일하게 반복 수신되면, 비정상 상태 체크 비트를 스토리지 컨트롤러에 전송하고, 스토리지 컨트롤러는 비정상 상태 체크 비트를 수신하는 것에 응답하여, 프로그램 데이터를 비휘발성 메모리 장치로 재전송한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 비휘발성 메모리 장치의 동작 방법은 스토리지 컨트롤러로부터 프로그램 커맨드를 수신하는 단계, 데이터 입력(Data-in) 커맨드를 수신하는 단계, 프로그램 데이터를 수신하는 단계, 상태 확인 커맨드(Status Check Command)를 수신하는 단계, 프로그램 데이터의 패턴을 모니터링하는 단계, 프로그램 데이터가 미리 설정된 반복 횟수 이상 동일하게 반복 수신되면 비정상 상태 체크 비트를 생성하는 단계, 비정상 상태 체크 비트를 스토리지 컨트롤러에 전송하는 단계, 비정상 상태 체크 비트에 기초하여, 스토리지 컨트롤러로부터 프로그램 데이터를 재수신하는 단계를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 비휘발성 메모리 장치는 스토리지 컨트롤러로부터 랜덤화된 프로그램 데이터를 수신하는 입출력 회로 및 입출력 회로로부터 랜덤화된 프로그램 데이터를 수신하고, 랜덤화된 프로그램 데이터의 패턴을 모니터링하는 패턴 모니터링 회로를 포함하되, 패턴 모니터링 회로는 랜덤화된 프로그램 데이터의 반복 여부에 기초하여 카운트 값을 생성하는 카운터 및 카운트 값에 기초하여 상태 체크 비트를 생성하는 상태 체크 비트 생성기를 포함하고, 상태 체크 비트를 스토리지 컨트롤러에 전송한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예들에 따른 스토리지 시스템을 설명하기 위한 블록도이다.
도 2는 몇몇 실시예들에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 3은 몇몇 실시예들에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 4는 몇몇 실시예들에 따른 비휘발성 메모리 장치를 나타내는 예시적인 블록도이다.
도 5는 몇몇 실시예들에 따른 패턴 모니터링 회로를 포함하는 스토리지 장치를 설명하기 위한 블록도이다.
도 6은 몇몇 실시예들에 따른 프로그램 데이터의 오류를 설명하기 위한 예시적인 도면이다.
도 7은 몇몇 실시예들에 따른 패턴 모니터링 회로를 설명하기 위한 블록도이다.
도 8은 몇몇 실시예들에 따른 카운트 값 및 정상 상태 체크 비트를 설명하기 위한 예시적인 도면이다.
도 9는 몇몇 실시예들에 따른 카운트 값 및 비정상 상태 체크 비트를 설명하기 위한 예시적인 도면이다.
도 10 및 도 11은 몇몇 실시예들에 따른 스토리지 장치의 동작을 설명하기 위한 순서도이다.
도 12는 몇몇 실시예들에 따른 패턴 모니터링 회로의 동작을 설명하기 위한 순서도이다.
도 13은 몇몇 실시예들에 따른 스토리지 컨트롤러 및 패턴 모니터링 회로의 동작을 설명하기 위한 순서도이다.
도 14는 다른 몇몇 실시예들에 따른 패턴 모니터링 회로를 포함하는 스토리지 장치를 설명하기 위한 블록도이다.
도 15는 몇몇 실시예들에 따른 스토리지 시스템이 적용된 시스템을 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 몇몇 실시예들에 따른 스토리지 시스템을 설명하기 위한 블록도이다.
도 1을 참조하면, 스토리지 시스템(10)은 호스트(20) 및 스토리지 장치(100)를 포함할 수 있다. 또한, 스토리지 장치(100)는 스토리지 컨트롤러(200) 및 복수의 비휘발성 메모리 장치(NVM, 300_1 내지 300_3)를 포함할 수 있다. 또한, 몇몇 실시예들에서, 호스트(20)는 호스트 컨트롤러(21) 및 호스트 메모리(22)를 포함할 수 있다. 호스트 메모리(22)는 스토리지 장치(100)로 전송될 데이터, 혹은 스토리지 장치(100)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(100)는 호스트(20)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(100)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(100)가 SSD인 경우, 스토리지 장치(100)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(100)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(100)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(20)와 스토리지 장치(100)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
비휘발성 메모리 장치(300_1 내지 300_3)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical, 또는 본딩-수직형(Bonding Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(100)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(100)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
일 실시예에 따라, 호스트 컨트롤러(21)와 호스트 메모리(22)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(21)와 호스트 메모리(22)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(21)는 어플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 어플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(22)는 상기 어플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 어플리케이션 프로세서의 외부에 배치되는 휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(21)는 호스트 메모리(22)의 데이터(예컨대, 기록 데이터)를 비휘발성 메모리 장치(300_1 내지 300_3)에 저장하거나, 비휘발성 메모리 장치(300)의 데이터(예컨대, 리드 데이터)를 호스트 메모리(22)에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(200)는 호스트 인터페이스(211), 컨트롤러 인터페이스(212) 및 CPU(central processing unit, 213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(200)는 인덱스 리드 유닛(Index Read Unit(IRU), 214), 플래시 변환 레이어(Flash Translation Layer(FTL), 215), 버퍼 메모리(216), ECC(error correction code, 217) 엔진 및 내부 비휘발성 메모리(218)를 더 포함할 수 있다. 스토리지 컨트롤러(200)는 플래시 변환 레이어(FTL, 215)가 로딩되는 워킹 메모리를 더 포함할 수 있으며, CPU(213)가 플래시 변환 레이어(FTL, 215)를 실행하는 것에 의해 비휘발성 메모리에 대한 데이터 기록 및 리드 동작이 제어될 수 있다.
호스트 인터페이스(211)는 호스트(20)와 패킷(packet)을 송수신할 수 있다. 호스트(20)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리 장치(300_1 내지 300_3)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(20)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리 장치(300_1 내지 300_3)로부터 리드된 데이터 등을 포함할 수 있다. 컨트롤러 인터페이스(212)는 비휘발성 메모리 장치(300_1 내지 300_3)에 기록될 데이터를 비휘발성 메모리 장치(300_1 내지 300_3)로 송신하거나, 비휘발성 메모리 장치(300_1 내지 300_3)로부터 리드된 데이터를 수신할 수 있다. 이러한 컨트롤러 인터페이스(212)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(215)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 또한, 버퍼 메모리(216)는 비휘발성 메모리 장치(300)에 기록될 데이터 혹은 비휘발성 메모리 장치(300_1 내지 300_3)로부터 리드된 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(200) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(200)의 외부에 배치되어도 무방하다.
ECC 엔진(217)은 비휘발성 메모리 장치(300_1 내지 300_3)로부터 리드되는 리드 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리 장치(300_1 내지 300_3)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리 장치(300_1 내지 300_3) 내에 저장될 수 있다. 비휘발성 메모리 장치(300_1 내지 300_3)로부터의 데이터 리드 시, ECC 엔진(217)은 리드 데이터와 함께 비휘발성 메모리 장치(300_1 내지 300_3)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
도 2는 몇몇 실시예들에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 2를 참조하면, 비휘발성 메모리 장치(300)와 스토리지 컨트롤러(200)는 복수의 채널들(CH1~CHm)을 통해 연결될 수 있다. 예를 들어, 스토리지 장치(100)는 SSD(Solid State Drive)와 같은 스토리지 장치로 구현될 수 있다.
비휘발성 메모리 장치(300)는 복수의 비휘발성 메모리 장치들(NVM11~NVMmn)을 포함할 수 있다. 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 대응하는 웨이(way)를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예시적인 실시 예에서, 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 스토리지 컨트롤러(200)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 비휘발성 메모리 장치들(NVM11~NVMmn) 각각은 칩(chip) 또는 다이(die)로 구현될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
스토리지 컨트롤러(200)는 복수의 채널들(CH1~CHm)을 통해 비휘발성 메모리 장치(300)와 신호들을 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(200)는 채널들(CH1~CHm)을 통해 비휘발성 메모리 장치(300)로 커맨드들(CMDa~CMDm), 어드레스들(ADDRa~ADDRm), 및 데이터(DATAa~DATAm)를 비휘발성 메모리 장치(300)로 전송하거나, 비휘발성 메모리 장치(300)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.
스토리지 컨트롤러(200)는 각각의 채널을 통해 해당 채널에 연결된 비휘발성 메모리 장치들(300) 중 하나를 선택하고, 선택된 비휘발성 메모리 장치와 신호들을 송수신할 수 있다.
스토리지 컨트롤러(200)는 서로 다른 채널들을 통해 비휘발성 메모리 장치(300)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 스토리지 컨트롤러(200)는 제1 채널(CH1)을 통해 메모리 장치(NVM11)로 커맨드(CMDa)를 전송하는 동안 제2 채널(CH2)을 통해 메모리 장치(NVM21)로 커맨드(CMDb)를 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(200)는 제1 채널(CH1)을 통해 메모리 장치(NVM11)로부터 데이터(DATAa)를 수신하는 동안 제2 채널(CH2)을 통해 메모리 장치(NVM21)로부터 데이터(DATAb)를 수신할 수 있다.
도 2에는 비휘발성 메모리 장치(300)가 m개의 채널을 통해 스토리지 컨트롤러(200)와 통신하고, 비휘발성 메모리 장치(300)가 각각의 채널에 대응하여 n개의 비휘발성 메모리 장치를 포함하는 것으로 도시되나, 채널들의 개수와 하나의 채널에 연결된 비휘발성 메모리 장치의 개수는 다양하게 변경될 수 있다.
도 3은 몇몇 실시예들에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 3을 참조하면, 스토리지 장치(100)는 스토리지 컨트롤러(200) 및 비휘발성 메모리 장치(300)를 포함할 수 있다. 비휘발성 메모리 장치(300)는 도 2의 복수의 채널들(CH1~CHm) 중 하나를 기반으로 도 2의 스토리지 컨트롤러(200)와 통신하는 몇몇 실시예들에 따른 비휘발성 메모리 장치들(NVM11~NVMmn) 중 하나에 대응할 수 있다.
비휘발성 메모리 장치(300)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(310), 제어 로직 회로(320), 및 메모리 셀 어레이(330)를 포함할 수 있다.
메모리 인터페이스 회로(310)는 제1 핀(P11)을 통해 스토리지 컨트롤러(200)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(200)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 하이 레벨)인 경우, 메모리 인터페이스 회로(310)는 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(200)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(310)는 제2 내지 제4 핀들(P12~P14)을 통해 스토리지 컨트롤러(200)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 제7 핀(P17)을 통해 스토리지 컨트롤러(200)로부터 데이터 신호(DQ)를 수신하거나, 스토리지 컨트롤러(200)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호들에 대응하는 복수 개의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(310)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(310)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
예시적인 실시 예에서, 쓰기 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 쓰기 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(310)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(310)는 제5 핀(P15)을 통해 스토리지 컨트롤러(200)로부터 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 제6 핀(P16)을 통해 스토리지 컨트롤러(200)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 스토리지 컨트롤러(200)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
비휘발성 메모리 장치(300)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(310)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 읽기 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(310)는 읽기 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 스토리지 컨트롤러(200)로 전송될 수 있다.
비휘발성 메모리 장치(300)의 데이터(DATA) 입력 동작에서, 스토리지 컨트롤러(200)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)이 수신되는 경우, 메모리 인터페이스 회로(310)는 스토리지 컨트롤러(200)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(310)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.
메모리 인터페이스 회로(310)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(200)로 전송할 수 있다. 메모리 인터페이스 회로(310)는 레디/비지 출력 신호(nR/B)를 통해 비휘발성 메모리 장치(300)의 상태 정보를 스토리지 컨트롤러(200)로 전송할 수 있다. 비휘발성 메모리 장치(300)가 비지 상태인 경우(즉, 비휘발성 메모리 장치(300) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(310)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(200)로 전송할 수 있다. 비휘발성 메모리 장치(300)가 레디 상태인 경우(즉, 비휘발성 메모리 장치(300) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(310)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(200)로 전송할 수 있다. 예를 들어, 비휘발성 메모리 장치(300)가 페이지 독출 명령에 응답하여 메모리 셀 어레이(330)로부터 데이터(DATA)를 독출하는 동안, 메모리 인터페이스 회로(310)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(200)로 전송할 수 있다. 예를 들어, 비휘발성 메모리 장치(300)가 프로그램 명령에 응답하여 메모리 셀 어레이(330)로 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(310)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(200)로 전송할 수 있다.
제어 로직 회로(320)는 비휘발성 메모리 장치(300)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(320)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 비휘발성 메모리 장치(300)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(320)는 메모리 셀 어레이(330)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(330)로부터 데이터(DATA)를 독출하기 위한 각종 제어 신호들을 생성할 수 있다. 또는 메모리 셀 어레이 내의 채널 포텐셜을 조정하기 위한 제어 신호들을 생성할 수도 있다.
메모리 셀 어레이(330)는 제어 로직 회로(320)의 제어에 따라 메모리 인터페이스 회로(310)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(330)는 제어 로직 회로(320)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(310)로 출력할 수 있다. 또한, 메모리 셀 어레이(330)는 제어 로직 회로(320)의 제어에 따라, 메모리 셀 어레이(330) 내의 채널 포텐셜이 조정될 수 있다.
메모리 셀 어레이(330)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다. 이하에서는, 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 실시 예를 중심으로 실시 예들이 설명될 것이다.
스토리지 컨트롤러(200)는 제1 내지 제8 핀들(P21~P28), 및 컨트롤러 인터페이스(212)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 비휘발성 메모리 장치(300)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다.
컨트롤러 인터페이스(212)는 제1 핀(P21)을 통해 비휘발성 메모리 장치(300)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스(212)는 칩 인에이블 신호(nCE)를 통해 선택한 비휘발성 메모리 장치(300)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.
컨트롤러 인터페이스(212)는 제2 내지 제4 핀들(P22~P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 비휘발성 메모리 장치(300)로 전송할 수 있다. 컨트롤러 인터페이스(212)는 제7 핀(P27)을 통해 비휘발성 메모리 장치(300)로 데이터 신호(DQ)를 전송하거나, 비휘발성 메모리 장치(300)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스(212)는 토글하는 쓰기 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리 장치(300)로 전송할 수 있다. 컨트롤러 인터페이스(212)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리 장치(300)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리 장치(300)로 전송할 수 있다.
컨트롤러 인터페이스(212)는 제5 핀(P25)을 통해 비휘발성 메모리 장치(300)로 읽기 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스(212)는 제6 핀(P26)을 통해 비휘발성 메모리 장치(300)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 비휘발성 메모리 장치(300)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
비휘발성 메모리 장치(300)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스(212)는 토글하는 읽기 인에이블 신호(nRE)를 생성하고, 읽기 인에이블 신호(nRE)를 비휘발성 메모리 장치(300)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스(212)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 읽기 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 비휘발성 메모리 장치(300)에서 읽기 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스(212)는 비휘발성 메모리 장치(300)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스(212)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.
비휘발성 메모리 장치(300)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스(212)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스(212)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스(212)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리 장치(300)로 전송할 수 있다.
컨트롤러 인터페이스(212)는 제8 핀(P28)을 통해 비휘발성 메모리 장치(300)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스(212)는 레디/비지 출력 신호(nR/B)에 기초하여 비휘발성 메모리 장치(300)의 상태 정보를 판별할 수 있다.
도 4는 몇몇 실시예들에 따른 비휘발성 메모리 장치를 나타내는 예시적인 블록도이다.
도 4를 참조하면, 비휘발성 스토리지 장치(300)는 제어 로직 회로(320), 메모리 셀 어레이(330), 페이지 버퍼부(340), 전압 생성기(350), 및 로우 디코더(360)를 포함할 수 있다. 비휘발성 스토리지 장치(300)는 메모리 인터페이스 회로(310)를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다.
제어 로직 회로(320)는 비휘발성 스토리지 장치(300) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(320)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.
메모리 셀 어레이(330)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(330)는 비트 라인들(BL)을 통해 페이지 버퍼부(340)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(360)에 연결될 수 있다.
예시적인 실시 예에서, 메모리 셀 어레이(330)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 예시적인 실시 예에서, 메모리 셀 어레이(330)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수 있다.
페이지 버퍼부(340)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼부(340)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼부(340)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼부(340)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 리드 동작 시, 페이지 버퍼부(340)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다.
전압 생성기(350)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 리드, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(350)는 워드 라인 전압(VWL)으로서 프로그램 전압, 리드 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.
로우 디코더(360)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(360)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 리드 동작 시, 선택된 워드 라인으로 리드 전압을 인가할 수 있다.
도 5는 몇몇 실시예들에 따른 패턴 모니터링 회로를 포함하는 스토리지 장치를 설명하기 위한 블록도이다.
도 5를 참조하면, 몇몇 실시예에서, 스토리지 장치(100)는 스토리지 컨트롤러(200) 및 비휘발성 메모리 장치(300)를 포함할 수 있다. 스토리지 컨트롤러(200)는 랜더마이저(Randomizer, 219)를 포함할 수 있고, 비휘발성 메모리 장치(300)는 입출력 회로(370) 및 패턴 모니터링 회로(380)를 포함할 수 있다.
비록 도 5에는 1개의 비휘발성 메모리 장치(300)만이 도시되어 있으나, 도 1 및 도 2에서 전술한 바와 같이, 스토리지 컨트롤러(200)와 데이터를 교신하는 비휘발성 메모리 장치(300)는 복수 개로 구현될 수 있다. 또한, 복수 개의 비휘발성 메모리 장치(300)는 각각 입출력 회로(370) 및 패턴 모니터링 회로(380)를 포함할 수 있다.
호스트(20, 도 1에 도시됨)에서 비휘발성 메모리 장치(300)에 데이터가 프로그램될 때, 호스트(20, 도 1에 도시됨)에서 스토리지 장치(100)에 프로그램 데이터를 전송하고, 스토리지 장치(100) 내부의 스토리지 컨트롤러(200)에서 프로그램 데이터를 변환하여 비휘발성 메모리 장치(300)에 전송한다.
몇몇 실시예에서, 스토리지 컨트롤러(200)에서 비휘발성 메모리 장치(300)로 전송되는 프로그램 데이터를 변환하는 과정은 프로그램 데이터의 순서를 랜덤화하는 랜더마이징(Randomizing)을 포함할 수 있다. 랜더마이저(219)는 스토리지 컨트롤러(200)에서 비휘발성 메모리 장치(300)로 전송되는 프로그램 데이터의 신뢰성을 확보하기 위해 프로그램 데이터의 순서를 랜덤화할 수 있다. 랜더마이저(219)는 순서가 랜덤화된 프로그램 데이터를 비휘발성 메모리 장치(300)의 입출력 회로(370)에 전송할 수 있다. 몇몇 실시예에서, 스토리지 컨트롤러(200)와 비휘발성 메모리 장치(300) 사이의 데이터 전송은 8개의 데이터 신호(DQ) 선을 이용하여 수행될 수 있다.
입출력 회로(370)는 데이터 신호(DQ) 선을 통해 랜더마이저(219)로부터 랜덤화된 프로그램 데이터를 수신하여 패턴 모니터링 회로(380)에 전송할 수 있다. 패턴 모니터링 회로(380)는 입출력 회로(370)로부터 수신한 프로그램 데이터의 패턴을 모니터링하여 프로그램 데이터의 정상 여부를 판단할 수 있다.
도 6은 몇몇 실시예들에 따른 프로그램 데이터의 오류를 설명하기 위한 예시적인 도면이다.
도 5에서 전술한 바와 같이, 비휘발성 메모리 장치(300)에 프로그램되는 데이터는 랜더마이저(219)에서 랜덤화 과정을 거치기 때문에 연속적으로 동일한 패턴을 갖는 데이터가 비휘발성 메모리 장치(300)에 프로그램되는 경우는 매우 적다. 단, 비휘발성 메모리 장치(300)에 노이즈(Noise)가 발생하거나 스토리지 컨트롤러(200) 사이의 데이터 신호(DQ) 통신에 오류가 발생하는 경우, 연속적으로 동일한 패턴을 갖는 데이터가 비휘발성 메모리 장치(300)에 프로그램되는 에러가 발생할 수 있다. 예를 들어, 도 6을 참조하면, 비휘발성 메모리 장치(300)에 '00' 패턴이 연속적으로 동일하게 프로그램된 것을 알 수 있다.
따라서, 패턴 모니터링 회로(380)는 비휘발성 메모리 장치(300)에 데이터가 프로그램되기 전, 프로그램 데이터의 패턴을 사전에 모니터링하여 스토리지 컨트롤러(200)로부터 미리 설정된 반복 횟수 이상 연속적으로 동일한 패턴의 데이터가 수신되는지 여부를 모니터링할 수 있다. 패턴 모니터링 회로(380)는 스토리지 컨트롤러(200)에 상태 체크 비트(Status Check Bit)를 전송하여 미리 설정된 반복 횟수 이상 연속적으로 동일한 패턴의 데이터가 모니터링되는지 여부를 스토리지 컨트롤러(200)에 알릴 수 있다.
프로그램 데이터의 정상 여부를 판단하는 기준이 되는 미리 설정된 반복 횟수는 비휘발성 메모리 장치(300) 내의 UIB 퓨즈(Fuse)에 저장되거나 스토리지 컨트롤러(200)에 저장될 수 있다.
도 7은 몇몇 실시예들에 따른 패턴 모니터링 회로를 설명하기 위한 블록도이다.
도 7을 참조하면, 몇몇 실시예에서 패턴 모니터링 회로(380)는 데이터 수신 회로(381), 데이터 저장 래치(382), 비교기(383), 카운터(384), 및 상태 체크 비트 생성기(385)를 포함할 수 있다.
데이터 수신 회로(381)는 입출력 회로(370, 도 5에 도시됨)로부터 프로그램 데이터를 수신하여 저장할 수 있다. 또한, 데이터 수신 회로(381)는 데이터 저장 래치(382)에 프로그램 데이터를 전송할 수 있다. 몇몇 실시예에서, 데이터 수신회로(381)가 수신한 프로그램 데이터는 랜더마이저(219, 도 5에 도시됨)에 의해 순서가 랜덤화된 데이터에 해당할 수 있다. 데이터 저장 래치(382)는 데이터 수신 회로(381)로부터 프로그램 데이터를 임시로 저장할 수 있다. 즉, 패턴 모니터링 회로(380)에 복수의 프로그램 데이터가 순차적으로 입력될 때, 데이터 저장 래치(382)에는 이전의 프로그램 데이터가 저장될 수 있고 데이터 수신 회로(381)에는 현재의 프로그램 데이터가 저장될 수 있다.
비교기(383)는 데이터 수신 회로(381)로부터 현재의 프로그램 데이터를 수신할 수 있고, 데이터 저장 래치(382)로부터 이전의 프로그램 데이터를 수신할 수 있다. 비교기(383)는 수신한 데이터들을 비교하여 현재의 프로그램 데이터와 이전의 프로그램 데이터가 일치하는지 여부를 확인할 수 있다.
카운터(384)는 비교기(383)의 비교 결과에 기초하여, 카운트 값(Count Value)을 생성하고 저장할 수 있다. 예를 들어, 카운터(384)는 현재의 프로그램 데이터와 이전의 프로그램 데이터가 일치하는 경우, 카운트 값을 1 만큼 증가시킬 수 있다. 또한, 카운터(384)는 현재의 프로그램 데이터와 이전의 프로그램 데이터가 일치하지 않는 경우, 카운트 값을 0으로 초기화시킬 수 있다.
상태 체크 비트 생성기(Status Check Bit Generator, 385)는 카운터(384)에 저장된 카운트 값과 미리 설정된 반복 횟수에 기초하여 상태 체크 비트(Status Check Bit)를 생성하고 스토리지 컨트롤러(200, 도 5에 도시됨)에 상태 체크 비트를 전송할 수 있다. 예를 들어, 미리 설정된 프로그램 데이터의 반복 횟수가 N회라고 가정하면, 상태 체크 비트 생성기(385)는 카운터(384)에 저장된 카운트 값이 N-1인 경우, 비정상 상태 체크 비트(비트 값 1)를 생성하여 스토리지 컨트롤러(200, 도 5에 도시됨)에 전송할 수 있다. 또한, 카운터(384)에 저장된 카운트 값이 N-1 보다 작은 경우, 상태 체크 비트 생성기(385)는 정상 상태 체크 비트(비트 값 0)를 생성하여 스토리지 컨트롤러(200, 도 5에 도시됨)에 전송할 수 있다.
도 8은 몇몇 실시예들에 따른 카운트 값 및 정상 상태 체크 비트를 설명하기 위한 예시적인 도면이다. 이하, 미리 설정된 반복 횟수가 5회인 경우를 예시로 들어 설명한다. 단, 실시예는 이에 제한되지 않으며, 프로그램 데이터의 정상 여부를 판별하는 기준이 되는 미리 설정된 반복 횟수는 실시예에 따라 2 이상의 정수 중 어느 하나에 해당할 수 있다.
도 8을 참조하면, DQ는 비교기(383, 도 7에 도시됨)가 데이터 수신 회로(381, 도 7에 도시됨)로부터 수신한 현재의 프로그램 데이터에 해당한다. prev.DQ는 비교기(383, 도 7에 도시됨)가 데이터 저장 래치(382, 도 7에 도시됨)로부터 수신한 이전의 프로그램 데이터에 해당한다. 초기에 카운터(384, 도 7에 도시됨)에 저장된 카운트 값은 0이다. 이후, '00' 패턴이 1회 반복되면, 카운트 값이 1 만큼 증가하여 1이 된다. '00' 패턴이 2회 반복되면 카운트 값이 또 1만큼 증가하여 2가 된다. 이후, '00' 패턴이 더 이상 반복되지 않으므로, 카운트 값이 0으로 초기화되고, 상태 체크 비트 생성기(385, 도 7에 도시됨)는 정상 상태 체크 비트(비트 값 0)를 생성하고 스토리지 컨트롤러(200, 도 5에 도시됨)에 정상 상태 체크 비트(비트 값 0)를 전송한다.
도 9는 몇몇 실시예들에 따른 카운트 값 및 비정상 상태 체크 비트를 설명하기 위한 예시적인 도면이다. 이하에서는, 상술된 설명과 중복된 설명은 생략한다.
도 9를 참조하면, '00' 패턴이 1회 반복될 때마다 카운트 값이 1씩 증가한다. 이때, '00' 패턴이 미리 설정된 반복 횟수인 5회 반복되면, 카운트 값이 4가 되고, 상태 체크 비트 생성기(385, 도 7에 도시됨)는 비정상 상태 체크 비트(비트 값 1)를 생성한다. 이후, '00' 패턴이 더 이상 반복되지 않아 카운트 값이 0으로 초기화되어도 상태 체크 비트의 값은 1에서 변경되지 않고, 상태 체크 비트 생성기(385, 도 7에 도시됨)는 비정상 상태 체크 비트(비트 값 1)을 스토리지 컨트롤러(200, 도 5에 도시됨)에 전송한다.
도 10 및 도 11은 몇몇 실시예들에 따른 스토리지 장치의 동작을 설명하기 위한 순서도이다.
먼저 도 10을 참조하면, 스토리지 컨트롤러(200)는 비휘발성 메모리 장치(300)에 프로그램 커맨드를 전송한다(S100). 이후, 스토리지 컨트롤러(200)가 비휘발성 메모리 장치(300)에 데이터 입력 커맨드를 전송하면(S110), 스토리지 컨트롤러(200)는 랜더마이저(219, 도 5에 도시됨)에 의해 랜덤화된 프로그램 데이터를 비휘발성 메모리 장치(300)의 입출력 회로(370)에 전송한다(S120). 이후, 입출력 회로(370)는 패턴 모니터링 회로(380)에 프로그램 데이터를 전송한다(S130).
이후, 스토리지 컨트롤러(200)는 비휘발성 메모리 장치(300)에 메모리의 상태를 체크하는 상태 체크 커맨드를 전송한다(S140). 패턴 모니터링 회로(380)는 상태 체크 커맨드에 응답하여 상태 체크 비트를 생성하고(S150), 상태 체크 비트를 스토리지 컨트롤러(200)에 전송할 수 있다(S160). 패턴 모니터링 회로(380)가 상태 체크 비트를 생성하는 동작은 도 12 및 도 13을 참조하여 후술한다.
스토리지 컨트롤러(200)는 패턴 모니터링 회로(380)로부터 수신한 상태 체크 비트의 값이 1인지 판단한다(S170, 노드 A). 상태 체크 비트의 값이 1이 아닌 경우(S170-N), 스토리지 컨트롤러(200)는 비휘발성 메모리 장치(300)에 전송된 프로그램 데이터가 정상이라고 판단하고, 비휘발성 메모리 장치(300)는 전송받은 프로그램 데이터에 대해 프로그램 동작을 수행한다(S180).
다음으로, 도 11을 참조하면, 상태 체크 비트의 값이 1인 경우(S170-Y), 스토리지 컨트롤러(200)는 비휘발성 메모리 장치(300)의 입출력 회로(370)에 프로그램 데이터를 재전송한다(S200). 이후, 입출력 회로(370)는 패턴 모니터링 회로(380)에 프로그램 데이터를 재전송한다(S210). 이후, 스토리지 컨트롤러(200)는 비휘발성 메모리 장치(300)에 상태 체크 커맨드를 재전송하고(S220), 패턴 모니터링 회로(380)는 상태 체크 커맨드에 응답하여 상태 체크 비트를 재생성한다(S230). 이후, 패턴 모니터링 회로(380)는 재생성된 상태 체크 비트를 스토리지 컨트롤러(200)에 전송한다(S240).
스토리지 컨트롤러(200)는 패턴 모니터링 회로(380)로부터 수신한 재생성된 상태 체크 비트의 값이 1인지 판단한다(S250). 재생성된 상태 체크 비트의 값이 1이 아닌 경우(S250-N), 스토리지 컨트롤러(200)는 비휘발성 메모리 장치(300)에 재전송된 프로그램 데이터가 정상이라고 판단하고, 비휘발성 메모리 장치(300)는 재전송받은 프로그램 데이터에 대한 프로그램 동작을 수행한다(S260). 만약, 재생성된 상태 체크 비트의 값이 1인 경우(S250-Y), 스토리지 컨트롤러(200)는 해당 프로그램 데이터에 대해 PSF(Program Status Fail) 처리를 하고, 비휘발성 메모리 장치(300)는 해당 프로그램 데이터에 대해 프로그램 동작을 수행하지 않는다.
이와 같이, 몇몇 실시예에서 스토리지 컨트롤러(200)는 비휘발성 메모리 장치(300)로부터 비정상 상태 체크 비트를 수신한 경우, 글리치(Glitch) 등 일시적인 오류에 해당할 수 있기 때문에, 프로그램 데이터를 비휘발성 메모리 장치(300)에 1회 재전송할 수 있다. 그러나, 프로그램 데이터를 재전송한 결과 여전히 비정상 상태 체크 비트를 수신하는 경우, 스토리지 컨트롤러(200)는 PSF 처리를 하고 해당 프로그램 데이터에 대해 프로그램 동작을 수행하지 않을 수 있다. 이때, 몇몇 실시예에서, 스토리지 컨트롤러(200)는 비휘발성 메모리 장치(300)의 입출력 주파수(I/O Frequency)를 낮추도록 제어하여 비휘발성 메모리 장치(300)의 SI(Signal Integrity) 특성을 개선할 수 있다.
이처럼, 몇몇 실시예에서 비휘발성 메모리 장치(300)에 비정상적인 데이터가 프로그램되는 것을 비휘발성 메모리 장치(300)가 프로그램 동작을 수행하기 전에 확인함으로써 UECC(Uncorrectable Error Correction Code) 발생을 사전에 방지할 수 있다. 단, 다른 몇몇 실시예에서는 스토리지 컨트롤러(200)가 상태 체크 비트의 값을 확인하는 동작을 비휘발성 메모리 장치(300)에 프로그램 확인 커맨드(Program Confirm Command)를 전송한 후에 한 번 더 수행할 수 있다. 또 다른 몇몇 실시예에서는 비휘발성 메모리 장치(300)가 프로그램 동작을 수행하는 도중 또는 비휘발성 메모리 장치(300)가 프로그램 동작 수행을 완료한 이후에 상태 체크 비트의 값을 확인함으로써 프로그램 데이터의 이상 여부를 확인할 수 있다.
도 12는 몇몇 실시예들에 따른 패턴 모니터링 회로의 동작을 설명하기 위한 순서도이다.
먼저, 입출력 회로(370, 도 5에 도시됨)로부터 패턴 모니터링 회로(380)에 제1 프로그램 데이터가 입력되고(S300), 데이터 수신 회로(381)는 제1 프로그램 데이터를 수신한다(S310). 이후, 데이터 수신 회로(381)는 데이터 저장 래치(382)에 제1 프로그램 데이터를 전송한다(S320). 데이터 저장 래치(382)는 데이터 수신 회로(381)로부터 수신한 제1 프로그램 데이터를 저장하고(S330), 비교기(383)에 제1 프로그램 데이터를 전송한다(S340).
이후, 입출력 회로(370, 도 5에 도시됨)로부터 패턴 모니터링 회로(380)에 제2 프로그램 데이터가 입력되고(S350), 데이터 수신 회로(381)는 제2 프로그램 데이터를 수신한다(S360), 이후, 데이터 수신 회로(381)는 비교기(383)에 제2 프로그램 데이터를 전송한다(S370). 비교기(383)는 데이터 저장 래치(382)로부터 수신한 제1 프로그램 데이터와 데이터 수신 회로(381)로부터 수신한 제2 프로그램 데이터가 일치하는지 여부를 판단한다(S380). 제1 프로그램 데이터와 제2 프로그램 데이터가 일치하는 경우(S380-Y), 카운터(384)는 카운트 값을 1 만큼 증가시킨다(S381). 만약, 제1 프로그램 데이터와 제2 프로그램 데이터가 일치하지 않는 경우(S380-N), 카운터(384)는 카운트 값을 0으로 초기화시킨다(S382). 이와 같이, 카운터(384)는 패턴 모니터링 회로(380)에 순차적으로 입력된 제1 프로그램 데이터와 제2 프로그램 데이터의 일치 여부에 기초하여 카운트 값을 생성하고 저장할 수 있다.
도 13은 몇몇 실시예들에 따른 스토리지 컨트롤러 및 및 패턴 모니터링 회로의 동작을 설명하기 위한 순서도이다.
카운터(384)는 저장된 카운트 값을 상태 체크 비트 생성기(385)에 전송한다(S400). 상태 체크 비트 생성기(385)는 카운트 값을 수신하고(S410), 카운트 값이 미리 설정된 반복 횟수(N회) 보다 1 만큼 작은지 여부를 판단한다(S420). 카운트 값이 미리 설정된 반복 횟수(N회) 보다 1 만큼 작은 경우(S420-Y), 상태 체크 비트 생성기(385)는 비트 값이 1인 비정상 상태 체크 비트를 생성하고, 이를 스토리지 컨트롤러(200)에 전송한다(S430). 만약, 카운트 값이 미리 지정된 반복 횟수(N회) 보다 1 만큼 작지 않은 경우(S420-N), 상태 체크 비트 생성기(385)는 비트 값이 0인 정상 상태 체크 비트를 생성하고, 이를 스토리지 컨트롤러(200)에 전송한다(S440).
도 14는 다른 몇몇 실시예들에 따른 패턴 모니터링 회로를 포함하는 스토리지 장치를 설명하기 위한 블록도이다.
도 14를 참조하면, 몇몇 실시예에서는 도 5에서와 달리, 스토리지 장치(100)는 FBI 칩(400)을 더 포함할 수 있다. FBI 칩(400)은 스토리지 컨트롤러(200)와 비휘발성 메모리 장치(300) 사이에 배치되어 스토리지 컨트롤러(200)로부터 데이터를 수신하여 비휘발성 메모리 장치(300)에 전달할 수 있고, 비휘발성 메모리 장치(300)로부터 데이터를 수신하여 스토리지 컨트롤러(200)에 데이터를 전달할 수 있다. 비록 도 14에는 1개의 비휘발성 메모리 장치(300)만이 도시되어 있으나, FBI 칩(400)과 데이터를 교신하는 비휘발성 메모리 장치(300)는 복수 개로 구현될 수 있다.
몇몇 실시예에서, 패턴 모니터링 회로(380)는 FBI 칩(400) 내에 배치될 수 있다. 이때, 스토리지 컨트롤러(200)는 FBI 칩(400)에 FBI 칩(400)이 인식할 수 있는 상태 체크 커맨드를 전송할 수 있다. FBI 칩(400) 내에 배치된 패턴 모니터링 회로(380)는 상태 체크 커맨드에 응답하여, 스토리지 컨트롤러(200)로부터 수신한 프로그램 데이터에 관한 상태 체크 비트를 스토리지 컨트롤러(200)에 전송할 수 있다. 이처럼, 비휘발성 메모리 장치(300)에 프로그램되는 데이터의 패턴을 FBI 칩(400) 내에 배치된 패턴 모니터링 회로(380)에서 선제적으로 모니터링함으로써, 복수 개의 비휘발성 메모리 장치(300) 각각에 대하여 프로그램 데이터의 패턴을 모니터링하는 경우에 비하여, 신속하게 프로그램 데이터의 오류를 확인할 수 있다.
도 15는 몇몇 실시예들에 따른 스토리지 시스템이 적용된 시스템을 도시한 도면이다.
도 15의 전자시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 15의 전자시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 15을 참조하면, 전자시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(optical input device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 전자시스템(1000)의 전반적인 동작, 보다 구체적으로는 전자시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator) 블록(1130)을 더 포함할 수 있다. 이와 같은 가속기 블록(1130)은 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 전자시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성(non-volatile memory, NVM) 스토리지(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 전자시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 전자시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(universal flash storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 전자시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 전자시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 전자시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 전자시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 전자시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 전자시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 전자시스템(1000)과, 전자시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
스토리지 컨트롤러: 200 비휘발성 메모리 장치: 300
랜더마이저: 219 입출력 회로: 370
패턴 모니터링 회로: 380 데이터 수신 회로: 381
데이터 저장 래치: 382 비교기: 383
카운터: 384 상태 체크 비트 생성기: 385

Claims (10)

  1. 커맨드 및 프로그램 데이터를 전송하는 스토리지 컨트롤러;
    상기 커맨드 및 상기 프로그램 데이터를 수신하는 비휘발성 메모리 장치;
    상기 스토리지 컨트롤러에서 전송되는 상기 프로그램 데이터의 패턴을 모니터링하는 패턴 모니터링 회로를 포함하되,
    상기 패턴 모니터링 회로는,
    상기 프로그램 데이터가 미리 설정된 반복 횟수 이상 동일하게 반복 수신되면,
    비정상 상태 체크 비트를 상기 스토리지 컨트롤러에 전송하고,
    상기 스토리지 컨트롤러는,
    상기 비정상 상태 체크 비트를 수신하는 것에 응답하여, 상기 프로그램 데이터를 상기 비휘발성 메모리 장치로 재전송하는,
    스토리지 장치.
  2. 제1항에 있어서,
    상기 비휘발성 메모리 장치는,
    상기 재전송된 프로그램 데이터가 상기 미리 설정된 반복 횟수 이상 동일하게 반복 수신되면,
    상기 프로그램 데이터에 대한 프로그램 동작을 수행하지 않는,
    스토리지 장치.
  3. 제1항에 있어서,
    상기 패턴 모니터링 회로는,
    상기 프로그램 데이터를 수신하는 데이터 수신 회로; 및
    상기 데이터 수신 회로로부터 상기 프로그램 데이터를 수신하여 저장하는 데이터 저장 래치를 포함하는,
    스토리지 장치.
  4. 제3항에 있어서,
    상기 패턴 모니터링 회로는,
    상기 데이터 수신 회로에 저장된 데이터와 상기 데이터 저장 래치에 저장된 데이터를 비교하는 비교기를 더 포함하는,
    스토리지 장치.
  5. 제4항에 있어서,
    상기 패턴 모니터링 회로는,
    상기 데이터 수신 회로에 저장된 데이터와 상기 데이터 저장 래치에 저장된 데이터가 일치하면,
    카운트 값을 증가시키는 카운터를 더 포함하는,
    스토리지 장치.
  6. 제5항에 있어서,
    상기 패턴 모니터링 회로는,
    상기 카운트 값에 기초하여, 상기 비정상 상태 체크 비트 또는 정상 상태 체크 비트를 생성하는 상태 체크 비트 생성기를 더 포함하는,
    스토리지 장치.
  7. 제6항에 있어서,
    상기 상태 체크 비트 생성기는,
    상기 카운터에 저장된 상기 카운트 값이 상기 미리 설정된 반복 횟수 보다 1 만큼 작으면,
    상기 비정상 상태 체크 비트를 생성하는,
    스토리지 장치.
  8. 제1항에 있어서,
    상기 패턴 모니터링 회로는,
    상기 프로그램 데이터가 미리 설정된 반복 횟수 이상 동일하게 반복 수신되지 않으면,
    정상 상태 체크 비트를 상기 스토리지 컨트롤러에 전송하는,
    스토리지 장치.
  9. 스토리지 컨트롤러로부터 프로그램 커맨드를 수신하는 단계;
    데이터 입력(Data-in) 커맨드를 수신하는 단계;
    프로그램 데이터를 수신하는 단계;
    상태 확인 커맨드(Status Check Command)를 수신하는 단계;
    상기 프로그램 데이터의 패턴을 모니터링하는 단계;
    상기 프로그램 데이터가 미리 설정된 반복 횟수 이상 동일하게 반복 수신되면 비정상 상태 체크 비트를 생성하는 단계;
    상기 비정상 상태 체크 비트를 상기 스토리지 컨트롤러에 전송하는 단계;
    상기 비정상 상태 체크 비트에 기초하여, 상기 스토리지 컨트롤러로부터 상기 프로그램 데이터를 재수신하는 단계를 포함하는,
    비휘발성 메모리 장치의 동작 방법.
  10. 스토리지 컨트롤러로부터 랜덤화된 프로그램 데이터를 수신하는 입출력 회로; 및
    상기 입출력 회로로부터 상기 랜덤화된 프로그램 데이터를 수신하고, 상기 랜덤화된 프로그램 데이터의 패턴을 모니터링하는 패턴 모니터링 회로를 포함하되,
    상기 패턴 모니터링 회로는,
    상기 랜덤화된 프로그램 데이터의 반복 여부에 기초하여 카운트 값을 생성하는 카운터 및 상기 카운트 값에 기초하여 상태 체크 비트를 생성하는 상태 체크 비트 생성기를 포함하고,
    상기 상태 체크 비트를 상기 스토리지 컨트롤러에 전송하는,
    비휘발성 메모리 장치.
KR1020220107132A 2022-08-25 2022-08-25 스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법 KR20240028856A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220107132A KR20240028856A (ko) 2022-08-25 2022-08-25 스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법
US18/322,725 US20240071449A1 (en) 2022-08-25 2023-05-24 Storage device, non-volatile memory device, and method of operating the non-volatile memory device
CN202311051116.3A CN117636972A (zh) 2022-08-25 2023-08-21 存储装置、非易失性存储器装置及操作nvm装置的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220107132A KR20240028856A (ko) 2022-08-25 2022-08-25 스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20240028856A true KR20240028856A (ko) 2024-03-05

Family

ID=89998072

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220107132A KR20240028856A (ko) 2022-08-25 2022-08-25 스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법

Country Status (3)

Country Link
US (1) US20240071449A1 (ko)
KR (1) KR20240028856A (ko)
CN (1) CN117636972A (ko)

Also Published As

Publication number Publication date
US20240071449A1 (en) 2024-02-29
CN117636972A (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
US10838653B2 (en) Electronic device and operating method thereof
US11899531B2 (en) Storage device and operating method of storage controller
KR20200085519A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20140006460A (ko) 불휘발성 메모리 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치
US11961561B2 (en) Memory device and method of operating the same
KR20160101219A (ko) 특정 패턴을 갖는 저장 장치 및 그것의 동작 방법
KR20220069543A (ko) 스토리지 장치, 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
US20240062790A1 (en) Memory device, memory system, and operating method of memory system
US20140003167A1 (en) Nonvolatile memory device, operating method thereof, and data storage device having the same
KR102029933B1 (ko) 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
US11456021B2 (en) Methods, semiconductor devices, and semiconductor systems
KR102469098B1 (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 이를 포함하는 데이터 저장 장치
US11901321B2 (en) Three-dimensional (3D) storage device using wafer-to-wafer bonding
US11726871B2 (en) Storage controller for selecting a gear level of a storage device and storage system including the same
KR20240028856A (ko) 스토리지 장치, 비휘발성 메모리 장치 및 그 동작 방법
US20180081582A1 (en) Data storage device and operating method thereof
US20230038363A1 (en) Three-dimensional storage device using wafer-to-wafer bonding
EP4152333A2 (en) Operation method of memory controller configured to control memory device
US20140063956A1 (en) Nonvolatile memory device and operating method thereof
KR20230041864A (ko) 메모리 장치를 제어하도록 구성된 메모리 컨트롤러의 동작 방법
KR20240090083A (ko) 메모리 장치를 제어하도록 구성된 메모리 컨트롤러의 동작 방법
KR20230068718A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
CN118782109A (zh) 存储器件及其运行方法
CN112309444A (zh) 存储器接口电路、存储器存储装置及设定状态检测方法