KR102398186B1 - 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법 - Google Patents

메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법 Download PDF

Info

Publication number
KR102398186B1
KR102398186B1 KR1020170084198A KR20170084198A KR102398186B1 KR 102398186 B1 KR102398186 B1 KR 102398186B1 KR 1020170084198 A KR1020170084198 A KR 1020170084198A KR 20170084198 A KR20170084198 A KR 20170084198A KR 102398186 B1 KR102398186 B1 KR 102398186B1
Authority
KR
South Korea
Prior art keywords
write data
buffer memory
memory
host
write
Prior art date
Application number
KR1020170084198A
Other languages
English (en)
Other versions
KR20190004400A (ko
Inventor
김진우
문귀연
이철
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170084198A priority Critical patent/KR102398186B1/ko
Priority to US15/871,283 priority patent/US10649898B2/en
Priority to DE102018110957.1A priority patent/DE102018110957A1/de
Priority to CN201810714290.4A priority patent/CN109213440B/zh
Publication of KR20190004400A publication Critical patent/KR20190004400A/ko
Application granted granted Critical
Publication of KR102398186B1 publication Critical patent/KR102398186B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • G06F11/1056Updating check bits on partial write, i.e. read/modify/write
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/221Static RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA

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

Abstract

본 발명에 따른 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법은 호스트로부터의 쓰기 데이터를 제1 버퍼 메모리에 저장하고, 쓰기 완료를 호스트로 전송하는 단계, 제1 버퍼 메모리에 저장된 쓰기 데이터를 불휘발성 메모리 장치 및 제2 버퍼 메모리로 전송하고, 제1 버퍼 메모리를 해제하는 단계, 및 불휘발성 메모리 장치로부터 쓰기 데이터에 대한 프로그램 성공 정보가 수신된 경우, 제2 버퍼 메모리를 해제하는 단계를 포함한다.

Description

메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법{OPERATION METHOD OF MEMORY CONTROLLER AND OPERATION METHOD OF USER DEVICE}
본 발명은 반도체 메모리에 관한 것으로, 좀 더 상세하게는 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법에 관한 것이다.
반도체 메모리는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
불휘발성 메모리 장치의 한 종류인 플래시 메모리 장치는 사용자 장치의 대용량 저장 매체로써 널리 사용된다. 최근에는 컴퓨팅 기술이 발달함에 따라 플래시 메모리 기반의 대용량 저장 매체에서 더욱 향상된 성능이 요구되고 있다. 일 예로서, 플래시 메모리 기반의 대용량 저장 매체는 호스트와의 입출력 속도를 보완하기 위하여 랜덤 액세스 메모리와 같은 고속 버퍼 메모리를 사용한다. 그러나, 고속 버퍼 메모리의 용량 제한 또는 플래시 메모리에 저장될 데이터의 신뢰성 보장과 같은 특성으로 인하여 성능 향상이 제한되고 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 향상된 성능을 갖는 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른, 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법은 호스트로부터의 쓰기 데이터를 제1 버퍼 메모리에 저장하고, 쓰기 완료를 상기 호스트로 전송하는 단계, 상기 제1 버퍼 메모리에 저장된 상기 쓰기 데이터를 상기 불휘발성 메모리 장치 및 제2 버퍼 메모리로 전송하고, 상기 제1 버퍼 메모리를 해제하는 단계, 및 상기 불휘발성 메모리 장치로부터 상기 쓰기 데이터에 대한 프로그램 성공 정보가 수신된 경우, 상기 제2 버퍼 메모리를 해제하는 단계를 포함한다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법은 호스트로부터의 복수의 쓰기 데이터를 제1 버퍼 메모리에 저장하고, 쓰기 완료를 상기 호스트로 전송하는 단계, 상기 제1 버퍼 메모리에 저장된 상기 복수의 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하고, 상기 복수의 쓰기 데이터에 대한 패리티를 생성하여 상기 패리티를 제2 버퍼 메모리에 저장하고, 상기 제1 버퍼 메모리를 해제하는 단계, 및 상기 불휘발성 메모리 장치로부터 상기 복수의 쓰기 데이터에 대한 프로그램 성공 정보가 수신된 경우, 상기 제2 버퍼 메모리를 해제하는 단계를 포함한다.
본 발명의 실시 예에 따른 제1 버퍼 메모리 및 불휘발성 메모리 장치를 포함하는 저장 장치 및 제2 버퍼 메모리를 포함하고 상기 저장 장치를 제어하도록 구성되는 호스트를 포함하는 사용자 장치의 동작 방법은 상기 호스트가 상기 제2 버퍼 메모리에 쓰기 데이터를 저장하고, 상기 저장 장치로 상기 쓰기 데이터를 전송하는 단계, 상기 저장 장치가 상기 쓰기 데이터를 상기 제1 버퍼 메모리에 저장하고, 상기 호스트로 쓰기 완료를 전송하는 단계, 상기 저장 장치가 상기 제1 버퍼 메모리에 저장된 상기 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하고, 상기 제1 버퍼 메모리를 해제하는 단계, 및 상기 불휘발성 메모리 장치가 상기 쓰기 데이터를 정상적으로 프로그램한 경우, 상기 저장 장치가 상기 제2 버퍼 메모리를 해제하는 단계를 포함한다.
본 발명에 따른 저장 장치는 쓰기 데이터의 프로그램 완료 이전에 쓰기 완료 전송 및 쓰기 버퍼 해제를 수행함으로써, 쓰기 버퍼 용량 제한 및 쓰기 지연에 따른 성능 저하를 방지할 수 있으며, 쓰기 데이터에 대한 프로그램이 완료될 ‹š까지 별도의 버퍼에 쓰기 데이터를 유지하여 프로그램 페일시에 쓰기 데이터를 복원함으로써, 쓰기 데이터에 대한 신뢰성을 보장할 수 있다. 따라서, 향상된 성능 및 향상된 신뢰성을 갖는 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 2는 도 1의 메모리 컨트롤러를 상세하게 보여주는 블록도이다.
도 3a 및 도 3b는 도 1의 메모리 컨트롤러의 동작 방법을 보여주는 순서도이다.
도 4 내지 도 6은 도 1의 메모리 컨트롤러의 동작 방법을 상세하게 설명하기 위한 도면들이다.
도 7 및 도 8은 도 1의 저장 장치의 구조 및 제2 버퍼 메모리의 구조를 예시적으로 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 10 내지 도 12는 도 9의 메모리 컨트롤러의 동작을 설명하기 위한 도면들이다.
도 13은 본 발명의 실시 예에 따른 사용자 시스템을 보여주는 블록도이다.
도 14는 도 13의 메모리 컨트롤러의 동작을 보여주는 순서도이다.
도 15는 도 13의 메모리 컨트롤러의 동작을 상세하게 설명하기 위한 도면이다.
도 16은 복수의 채널들을 통해 불휘발성 메모리 장치들로 쓰기 데이터를 전송하는 동작을 설명하기 위한 타이밍도이다.
도 17은 프로그램 페일 상황에서, 메모리 컨트롤러가 쓰기 데이터를 복원하는 방법을 설명하기 위한 도면이다.
도 18은 본 발명의 실시 예에 따른 데이터 전송 단위를 설명하기 위한 타이밍도이다.
도 19는 본 발명의 실시 예에 따른 메모리 컨트롤러의 구성을 보여주는 블록도이다.
도 20은 본 발명이 적용된 저장 장치를 예시적으로 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 사용자 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 사용자 시스템(100)은 호스트(110) 및 저장 장치(120)를 포함한다. 사용자 시스템(100)은 컴퓨터, 노트북, 서버, 워크 스테이션, 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트폰, 또는 웨어러블(Wearable) 장치와 같은 컴퓨팅 시스템 또는 정보 처리 시스템일 수 있다.
호스트(110)는 미리 정해진 인터페이스를 기반으로 저장 장치(120)에 데이터를 저장하거나 또는 저장 장치(120)에 저장된 데이터를 읽을 수 있다. 예시적으로, 미리 정해진 인터페이스는 DDR(Double Data Rate) 인터페이스, USB (Universal Serial Bus) 인터페이스, MMC (multimedia card), eMMC(embedded MMC) 인터페이스, PCI (peripheral component interconnection) 인터페이스, PCI-E (PCI-express) 인터페이스, ATA (Advanced Technology Attachment) 인터페이스, Serial-ATA 인터페이스, Parallel-ATA 인터페이스, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics) 인터페이스, 파이어와이어(Firewire) 인터페이스, UFS(Universal Flash Storage) 인터페이스, NVMe (Nonvolatile Memory express) 인터페이스 중 적어도 하나를 포함할 수 있다.
저장 장치(120)는 메모리 컨트롤러(121), 불휘발성 메모리 장치들(122), 및 제2 버퍼 메모리(123)를 포함할 수 있다. 예시적으로, 저장 장치(120)는 솔리드 스테이트 드라이브(SSD), UBS 메모리, 하드 디스크, USB 스틱 등과 같은 사용자 시스템(100)의 대용량 저장 매체일 수 있다.
메모리 컨트롤러(121)는 호스트(110)의 제어에 따라 불휘발성 메모리 장치들(122)에 데이터를 저장하거나 또는 불휘발성 메모리 장치들(122)에 저장된 데이터를 읽을 수 있다. 메모리 컨트롤러(121)는 제1 버퍼 메모리(121a)를 포함할 수 있다. 제1 버퍼 메모리(121a)는 불휘발성 메모리 장치들(122)에 저장될 데이터 또는 불휘발성 메모리 장치들(122)로부터 읽어진 데이터를 임시 저장할 수 있다. 즉, 제1 버퍼 메모리(121a)는 저장 장치(120)의 쓰기 버퍼 또는 읽기 버퍼로써 사용될 수 있다.
불휘발성 메모리 장치들(122)은 메모리 컨트롤러(121)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 예시적으로, 불휘발성 메모리 장치들(122) 각각은 낸드 플래시 메모리를 포함할 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 장치들(122)은 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, 또는 PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
제2 버퍼 메모리(123)는 저장 장치(120)가 동작하는데 필요한 다양한 정보를 저장할 수 있다. 예를 들어, 제2 버퍼 메모리(123)는 메모리 컨트롤러(121)의 플래시 변환 계층(FTL; flash translation layer)에서 사용되는 맵핑 테이블과 같은 정보를 저장할 수 있다. 또는 제2 버퍼 메모리(123)는 불휘발성 메모리 장치들(122)에 저장될 쓰기 데이터를 임시 저장하도록 구성될 수 있다. 예시적으로, 제2 버퍼 메모리(123)는 메모리 컨트롤러(121)와 별도의 반도체 다이, 칩, 패키지, 또는 모듈로 구현되거나 또는 메모리 컨트롤러(121)와 동일한 반도체 다이, 칩, 패키지, 또는 모듈로 구현될 수 있다. 예시적으로, 제2 버퍼 메모리(123)는 제1 버퍼 메모리(121a)보다 큰 저장 용량을 가질 수 있다.
본 발명의 실시 예에 따른 저장 장치(120)는 쓰기 버퍼로써 사용되는 제1 버퍼 메모리(121a)에 대한 해제(release) 및 호스트(110)로의 쓰기 완료(write completion) 전송을 미리 수행함으로써, 호스트(110)로부터의 쓰기 요청에 따른 지연을 최소화하고, 제1 버퍼 메모리(121a)의 가용 용량을 확보할 수 있다.
예를 들어, 저장 장치(120)는 호스트(110)로부터의 쓰기 데이터를 메모리 컨트롤러(121)의 제1 버퍼 메모리(121a)에 임시 저장할 수 있다. 저장 장치(120)는 제1 버퍼 메모리(121a)에 저장된 쓰기 데이터를 불휘발성 메모리 장치들(122) 및 제2 버퍼 메모리(123)로 전송한 이후에, 제1 버퍼 메모리(121a)를 해제(release)함으로써, 제1 버퍼 메모리(121a)의 가용 용량을 확보할 수 있다. 대신에, 불휘발성 메모리 장치들(122)에서 프로그램이 완료될 때까지, 제2 버퍼 메모리(123)에 저장된 쓰기 데이터를 유지할 수 있다. 이에 따라, 불휘발성 메모리 장치들(122)에서 프로그램 페일이 발생하더라도, 제2 버퍼 메모리(123)로부터 쓰기 데이터를 복원할 수 있기 때문에, 데이터의 신뢰성이 보장될 수 있다. 즉, 본 발명에 따른 제1 버퍼 메모리(121a)는 쓰기 버퍼로써 사용되고, 제2 버퍼 메모리(123)는 백업 버퍼(backup buffer) 또는 로깅 버퍼(logging buffer)로써 사용될 수 있다.
종래의 저장 장치는, 쓰기 동작시, 불휘발성 메모리 장치들의 프로그램이 완료될 때까지 쓰기 버퍼에 저장된 데이터를 유지하거나 또는 불휘발성 메모리 장치들의 프로그램이 완료된 이후에 쓰기 완료를 호스트로 전송함으로써, 데이터의 신뢰성을 보장한다. 그러나, 이러한 경우에, 쓰기 버퍼의 용량이 충분하지 않은 경우, 쓰기 성능 저하가 발생할 수 있고, 쓰기 완료 전송 시점이 늦어지기 때문에, 쓰기 지연이 증가할 수 있다.
그러나, 본 발명에 따른 저장 장치(120)는 불휘발성 메모리 장치들(122)의 프로그램 완료 여부와 무관하게 쓰기 버퍼를 미리 해제함으로써, 쓰기 버퍼로써 사용되는 제1 버퍼 메모리(121a)의 가용 용량을 확보할 수 있고, 쓰기 완료를 호스트(110)로 미리 전송함으로써, 쓰기 지연을 방지할 수 있다. 대신에, 불휘발성 메모리 장치들(122)이 프로그램을 완료할 때까지, 제2 버퍼 메모리(123)에 쓰기 데이터를 유지함으로써, 불휘발성 메모리 장치들(122)의 프로그램 페일 상황에서의 데이터 신뢰성을 보장할 수 있다.
따라서, 디램-리스(DRAM less) 저장 장치 또는 작은 쓰기 버퍼(small write buffer)를 갖는 저장 장치에서, 쓰기 버퍼의 가용 공간을 충분히 확보할 수 있을 뿐만 아니라, 쓰기 데이터에 대한 신뢰성이 보장될 수 있다. 즉, 본 발명에 따른 저장 장치(120)는 향상된 성능 및 향상된 신뢰성을 제공할 수 있다. 본 발명에 따른 저장 장치(120)의 구체적인 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 2는 도 1의 메모리 컨트롤러(121)를 상세하게 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 메모리 컨트롤러(121)는 제1 버퍼 메모리(121a), 프로세서(121b), ROM(121c), 버퍼 관리자(121d), 호스트 인터페이스 계층(121e), 및 플래시 인터페이스 계층(121f)을 포함할 수 있다.
도 1을 참조하여 설명된 바와 같이, 제1 버퍼 메모리(121a)는 저장 장치(120)의 쓰기 버퍼 또는 읽기 버퍼로써 사용될 수 있다. 예를 들어, 제1 버퍼 메모리(121a)는 호스트(110)로부터 수신된 쓰기 데이터 또는 불휘발성 메모리 장치들(122)로부터 읽어진 읽기 데이터를 임시 저장하도록 구성될 수 있다. 예시적으로, 제1 버퍼 메모리(121a)는 SRAM(Static RAM)을 포함할 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 제1 버퍼 메모리(121a)는 DRAM (Dynamic RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 랜덤 액세스 메모리를 포함할 수 있다.
프로세서(121b)는 메모리 컨트롤러(121)의 제반 동작을 제어할 수 있다. 예를 들어, 프로세서(121b)는 메모리 컨트롤러(121)가 동작하는데 필요한 다양한 펌웨어, 프로그램 코드, 소프트웨어 계층 등을 구동하거나 또는 메모리 컨트롤러(121)에 포함된 다양한 하드웨어 구성들 제어하도록 구성될 수 있다. ROM(121c)은 메모리 컨트롤러(121)가 동작하는데 요구되는 다양한 정보를 펌웨어 형태로 저장할 수 있다. 예시적으로, 프로세서(121b)는 ROM(121c)에 저장된 펌웨어를 구동하도록 구성될 수 있다.
버퍼 관리자(121d)는 제2 버퍼 메모리(123)를 제어하도록 구성될 수 있다. 예를 들어, 제2 버퍼 메모리(123)는 DRAM을 포함할 수 있고, 버퍼 관리자(121d)는 제2 버퍼 메모리(123)에 데이터를 기입하거나 또는 제2 버퍼 메모리(123)에 저장된 데이터를 읽도록 구성된 DRAM 제어기일 수 있다. 예시적으로, 버퍼 관리자(121d)는 메모리 컨트롤러(121) 또는 제2 버퍼 메모리(123)의 구조에 따라 생략될 수 있다.
메모리 컨트롤러(121)는 호스트 인터페이스 계층(121e)을 통해 호스트(110)와 통신하도록 구성될 수 있다. 호스트 인터페이스 계층(121e)은 도 1을 참조하여 설명된 미리 정해진 인터페이스들 중 적어도 하나를 포함할 수 있다. 메모리 컨트롤러(121)는 플래시 인터페이스 계층(121f)을 통해 불휘발성 메모리 장치들(122)과 통신하도록 구성될 수 있다.
도 3a 및 도 3b는 도 1의 메모리 컨트롤러(121)의 동작 방법을 보여주는 순서도이다. 이하에서, 간결한 설명을 위하여, 저장 장치(120)의 쓰기 동작을 기준으로 본 발명의 실시 예들이 설명된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 본 발명의 기술적 사상은 저장 장치(120)의 다양한 동작들에 적용될 수 있다.
이하에서, 간결한 설명을 위하여, 하나의 쓰기 데이터 단위를 기준으로 메모리 컨트롤러(121)의 동작이 설명된다. 예를 들어, 메모리 컨트롤러(121)는 하나의 쓰기 데이터(WRD)를 호스트(110)로부터 수신하고, 수신된 하나의 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122)로 전송할 수 있다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 호스트(110) 및 메모리 컨트롤러(121) 사이에서 전송되는 데이터 단위 및 메모리 컨트롤러(121) 및 불휘발성 메모리 장치들(122) 사이에서 전송되는 데이터 단위는 서로 다를 수 있다.
이하에서, "제1 버퍼 메모리(121a) 또는 제2 버퍼 메모리(123)가 해제(release)되는 것"은 쓰기 데이터가 저장된 제1 버퍼 메모리(121a)의 영역 또는 쓰기 데이터가 저장된 제2 버퍼 메모리(123)의 영역에 다른 쓰기 데이터가 저장될 수 있는 상태가 되는 것을 가리킨다. 즉, 쓰기 데이터가 저장된 제1 버퍼 메모리(121a)가 해제(release)된 경우, 쓰기 데이터가 저장된 제1 버퍼 메모리(121a)(좀 더 상세하게는, 제1 버퍼 메모리(121a)의 영역 중 쓰기 데이터가 저장된 영역)에 다른 쓰기 데이터가 저장되거나 또는 다른 쓰기 데이터가 저장되도록 할당될 수 있다. 예시적으로, 이러한 버퍼 메모리의 해제(release) 또는 할당(allocation)은 메모리 컨트롤러(121)의 프로세서(121b) 또는 다른 별도의 하드웨어 구성 또는 다른 별도의 소프트웨어 구성에 의해 수행될 수 있다.
이하에서, 간결한 설명을 위하여, 데이터 또는 정보는 각 구성 요소들 사이에서 단순히 교환되는 것으로 설명된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 각 구성 요소들 사이의 데이터 또는 정보의 전송 및 흐름은 각 구성 요소들 사이의 미리 정해진 규약(predefined protocol)에 의해 행해질 수 있다. 상술된 가정들은 본 발명의 기술적 사상을 간결하고 명확하게 설명하기 위한 예시적인 것이며, 본 발명의 기술적 사상이 이에 한정되는 것은 아니다.
도 1 내지 도 3a을 참조하면, S110 단계에서, 메모리 컨트롤러(121)는 호스트(110)로부터 쓰기 데이터(WRD)를 수신하여 수신된 쓰기 데이터(WRD)를 제1 버퍼 메모리(121a)에 저장할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 제1 버퍼 메모리(121a)는 호스트(110)로부터의 쓰기 데이터(WRD)를 임시 저장하는 쓰기 버퍼로써 사용될 수 있다. 메모리 컨트롤러(121)는 호스트(110)로부터의 쓰기 데이터(WRD)를 제1 버퍼 메모리(121a)에 저장할 수 있다. 예시적으로, 메모리 컨트롤러(121)는 호스트(110)로부터 쓰기 요청(또는 쓰기 커맨드)를 수신하고, 수신된 쓰기 요청에 응답하여 대응하는 쓰기 데이터가 저장될 제1 버퍼 메모리(121a)를 할당하도록 구성될 수 있다.
S120 단계에서, 메모리 컨트롤러(121)는 호스트(110)로 쓰기 완료(WR-completion)를 전송할 수 있다. 예를 들어, 메모리 컨트롤러(121)는 쓰기 데이터(WRD)를 제1 버퍼 메모리(121a)에 저장한 이후에, 상술된 쓰기 요청에 대한 쓰기 완료(WR-completion)를 호스트(110)로 전송할 수 있다. 예시적으로, 쓰기 완료(WR-completion)를 수신한 호스트(110)는 대응하는 쓰기 요청에 대한 쓰기 동작이 완료된 것으로 인식하고, 다른 동작들(예를 들어, 다른 쓰기 요청, 읽기 요청, 또는 내부적인 다른 동작들)을 수행할 수 있다.
S130 단계에서, 메모리 컨트롤러(121)는 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122) 및 제2 버퍼 메모리(123)로 전송할 수 있다. 예를 들어, 메모리 컨트롤러(121)는 제1 버퍼 메모리(121a)에 저장된 쓰기 데이터(WRD)가 불휘발성 메모리 장치들(122)에 저장되도록 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122)로 전송할 수 있다. 불휘발성 메모리 장치들(122)은 수신된 쓰기 데이터(WRD)에 대한 프로그램 동작을 수행할 수 있다.
이와 함께, 메모리 컨트롤러(121)는 제1 버퍼 메모리(121a)에 저장된 쓰기 데이터(WRD)를 제2 버퍼 메모리(123)로 전송할 수 있다. 예시적으로, 제2 버퍼 메모리(123)에 저장된 쓰기 데이터(WRD)는 불휘발성 메모리 장치들(122)의 프로그램 페일 상황에서, 데이터를 복원하기 위하여 사용될 수 있다. 예시적으로, 쓰기 데이터(WRD)를 제1 버퍼 메모리(121a)로부터 불휘발성 메모리 장치들(122) 및 제2 버퍼 메모리(123)로 동시에 전송하기 위하여, 제1 버퍼 메모리(121a)는 듀얼-포트(dual-port) 또는 멀티-포트(multi-port) 형태로 구현될 수 있다.
S140 단계에서, 메모리 컨트롤러(121)는 제1 버퍼 메모리(121a)를 해제(release)할 수 있다. 예를 들어, 메모리 컨트롤러(121)는 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122) 및 제2 버퍼 메모리(123)로 전송한 이후에, 제1 버퍼 메모리(121a)를 해제할 수 있다. 이 경우, 쓰기 버퍼로서 사용되는 제1 버퍼 메모리(121a)가 해제됨으로써, 제1 버퍼 메모리(121a)의 가용 용량이 확보될 수 있고, 이에 따라, 메모리 컨트롤러(121)는 호스트(110)로부터 다른 쓰기 데이터를 수신 및 저장할 수 있다. 즉, 제1 버퍼 메모리(121a)가 해제됨으로써, 쓰기 버퍼 용량 제한에 따른 쓰기 지연이 방지될 수 있다.
S150 단계에서, 메모리 컨트롤러(121)는 불휘발성 메모리 장치들(122)에서 쓰기 데이터(WRD)에 대한 프로그램이 성공인지 판별할 수 있다. 예를 들어, 메모리 컨트롤러(121)는 불휘발성 메모리 장치들(122)로부터 프로그램 결과에 대한 정보(즉, 프로그램 성공 또는 페일)를 수신할 수 있다. 메모리 컨트롤러(121)는 수신된 정보를 기반으로 프로그램 성공 여부를 판별할 수 있다.
프로그램 성공인 경우, S160 단계에서, 메모리 컨트롤러(121)는 제2 버퍼 메모리(123)를 해제할 수 있다. 예를 들어, 프로그램 성공인 경우, 쓰기 데이터(WRD)가 불휘발성 메모리 장치들(122)에 정상적으로 저장된 것이므로, 쓰기 데이터(WRD)가 저장된 제2 버퍼 메모리(123)를 해제함으로써, 제2 버퍼 메모리(123)의 가용 용량을 확보할 수 있다.
프로그램 페일인 경우, S170 단계에서, 메모리 컨트롤러(121)는 제2 버퍼 메모리(123)에 저장된 쓰기 데이터(WRD)를 제1 버퍼 메모리(121a)로 복사(또는 복원)할 수 있다. 예를 들어, 프로그램 페일인 경우, 쓰기 데이터(WRD)가 불휘발성 메모리 장치들(122)에 정상적으로 저장되지 않은 것이므로, 쓰기 데이터(WRD)에 대한 추가적인 프로그램이 요구될 것이다. 이 때, 제1 버퍼 메모리(121a)는 S140 단계에서 이미 해제되었으므로, 제1 버퍼 메모리(121a)는 쓰기 데이터(WRD)를 저장하지 않은 상태일 것이다. 단, S130 단계에서, 쓰기 데이터(WRD)가 제2 버퍼 메모리(123)에 저장되었으므로, 제2 버퍼 메모리(123)는 쓰기 데이터(WRD)를 저장한 상태일 것이다. 따라서, 제2 버퍼 메모리(123)로부터 쓰기 데이터(WRD)를 제1 버퍼 메모리(121a)로 복사(또는 복원)하여, 쓰기 데이터(WRD)에 대한 프로그램을 다시 수행할 수 있다.
S170 단계의 동작 이후에, S130 단계 내지 S150 단계의 동작들이 수행될 수 있다. 이 경우, 쓰기 데이터(WRD)가 제2 버퍼 메모리(123)에 이미 저장되어 있으므로, 제2 버퍼 메모리(123)로 쓰기 데이터(WRD)를 전송하는 동작은 생략될 수 있다.
다음으로, 도 1, 도 2, 및 도 3b를 참조하면, 메모리 컨트롤러(121)는 S110 단계 내지 S160 단계의 동작들을 수행할 수 있다.
프로그램 페일인 경우, S180 단계에서, 메모리 컨트롤러(121)는 제2 버퍼 메모리(123)에 저장된 쓰기 데이터(WRD)를 불휘발성 메모리 장치(122)로 직접 전송할 수 있다. 예를 들어, 도 3a의 실시 예에 따르면, 메모리 컨트롤러(121)는, 프로그램 페일시, 제2 버퍼 메모리(123)에 저장된 쓰기 데이터(WRD)를 제1 버퍼 메모리(121a)로 복사하고, 이후에, 제1 버퍼 메모리(121a)로부터 쓰기 데이터(WRD)를 불휘발성 메모리 장치(122)로 전송하도록 구성된다.
반면에, 도 3b의 실시 예에 따르면, 메모리 컨트롤러(121)는 제2 버퍼 메모리(123)로부터 쓰기 데이터(WRD)를 불휘발성 메모리 장치(122)로 직접 전송하도록 구성될 수 있다. 즉, 제1 버퍼 메모리(121a)에 데이터를 복구하는 동작이 생략될 수 있다. 이하에서, 간결한 설명을 위하여, 제1 버퍼 메모리(121a)에 데이터를 복구하는 동작이 설명되나, 본 발명의 범위가 이에 제한되는 것은 아니며, 제1 버퍼 메모리(121a)에 쓰기 데이터(WRD)를 복구하는 동작은 생략될 수 있고, 제2 버퍼 메모리(123)로부터 쓰기 데이터(WRD)가 불휘발성 메모리 장치(122)로 직접 전송될 수 있다.
상술된 바와 같이, 본 발명에 따른 저장 장치(120) 또는 메모리 컨트롤러(121)는 불휘발성 메모리 장치들(122)의 프로그램 완료 이전에 쓰기 버퍼(즉, 제1 버퍼 메모리(121a)) 해제 및 쓰기 완료 전송을 미리 수행함으로써, 버퍼 용량 제한으로 인한 성능 저하 또는 쓰기 완료 전송 지연으로 인한 성능 저하를 방지할 수 있다. 또한, 불휘발성 메모리 장치들(122)에서 프로그램 페일이 발생하더라도, 별도의 버퍼 메모리(즉, 제2 버퍼 메모리(123))로부터 쓰기 데이터(WRD)를 복원할 수 있기 때문에, 데이터의 신뢰성을 보장할 수 있다.
도 4 내지 도 6은 도 1의 메모리 컨트롤러(121)의 동작 방법을 상세하게 설명하기 위한 도면들이다. 간결한 설명을 위하여, 메모리 컨트롤러(121)의 동작을 설명하는데 불필요한 구성 요소들은 생략된다. 예시적으로, 도 4는 프로그램 성공시의 메모리 컨트롤러(121)의 동작 및 데이터 흐름을 설명하기 위한 도면이다. 도 5는 프로그램 성공시의 데이터 흐름을 보여주는 타이밍도이다. 도 6은 프로그램 페일시의 메모리 컨트롤러(121)의 동작 및 데이터 흐름을 설명하기 위한 도면이다.
먼저, 도 4 및 도 5를 참조하면, 호스트(110)는 메모리 컨트롤러(121)로 쓰기 데이터(WRD)를 전송할 수 있다(①). 예를 들어, 도 5의 제1 시점(t1)에서, 메모리 컨트롤러(121)는 제1 버퍼 메모리(121a)의 영역 중 쓰기 데이터(WRD)가 저장될 영역을 할당할 수 있다. 예시적으로, 제1 버퍼 메모리(121a)에 대한 할당은 호스트(110)로부터의 쓰기 요청에 응답하여 수행될 수 있다. 메모리 컨트롤러(121)는 할당된 영역에 쓰기 데이터(WRD)를 저장할 수 있다.
제1 버퍼 메모리(121a)에 쓰기 데이터(WRD)가 저장된 이후에, 메모리 컨트롤러(121)는 쓰기 완료(WR-completion)를 호스트(110)로 전송할 수 있다(②). 예를 들어, 도 5의 제2 시점(t2)에서, 호스트(110)로부터의 쓰기 데이터(WRD) 전송이 완료되고, 메모리 컨트롤러(121)는 쓰기 완료(WR-completion)를 호스트(110)로 전송할 수 있다. 예시적으로, 호스트(110)는 쓰기 완료(WR-completion)를 수신함으로써, 쓰기 데이터(WRD)에 대한 쓰기 동작이 완료된 것으로 인식할 수 있다.
메모리 컨트롤러(121)는 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122) 및 제2 버퍼 메모리(123)로 전송할 수 있다(③). 예를 들어, 메모리 컨트롤러(121)는 쓰기 데이터(WRD)가 불휘발성 메모리 장치들(122)에 저장될 수 있도록, 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122)로 전송할 수 있다. 이와 함께, 메모리 컨트롤러(121)는 제2 버퍼 메모리(123)에 쓰기 데이터(WRD)가 저장될 수 있도록, 쓰기 데이터(WRD)를 제2 버퍼 메모리(123)로 전송할 수 있다. 예시적으로, 불휘발성 메모리 장치들(122)은 쓰기 데이터(WRD)를 수신하고, 수신된 쓰기 데이터(WRD)에 대한 프로그램 동작을 수행할 수 있다.
예시적으로, 불휘발성 메모리 장치들(122) 및 제2 버퍼 메모리(123)로의 쓰기 데이터(WRD)의 전송은 실질적으로 동시에 수행될 수 있다. 이에 따라, 즉, 제2 버퍼 메모리(123)로의 쓰기 데이터(WRD)의 전송으로 인한 추가 시간은 요구되지 않을 수 있다.
메모리 컨트롤러(121)는 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122) 및 제2 버퍼 메모리(123)로 전송한 이후에, 제1 버퍼 메모리(121a)를 해제(release)할 수 있다(④). 예를 들어, 도 5의 제3 시점(t3)에서, 제1 버퍼 메모리(121a)로부터 불휘발성 메모리 장치들(122) 및 제2 버퍼 메모리(123)로의 쓰기 데이터(WRD) 전송이 완료되고, 메모리 컨트롤러(121)는 호스트(110)로부터의 다른 쓰기 데이터가 제1 버퍼 메모리(121a)에 저장될 수 있도록 제1 버퍼 메모리(121a)를 해제할 수 있다. 즉, 불휘발성 메모리 장치들(122)의 프로그램 완료 이전에 제1 버퍼 메모리(121a)가 해제되기 때문에, 메모리 컨트롤러(121)는 불휘발성 메모리 장치들(122)의 프로그램 완료 시점보다 먼저 다른 쓰기 데이터를 더 수신할 수 있다. 이는 버퍼 용량 제한에 따른 쓰기 지연이 방지됨을 의미한다.
이후에, 메모리 컨트롤러(121)는 불휘발성 메모리 장치들(122)로부터 프로그램 성공에 대한 정보를 수신할 수 있다(⑤). 이후에, 메모리 컨트롤러(121)는 제2 버퍼 메모리(123)를 해제할 수 있다(⑥). 예를 들어, 도 5의 제4 시점(t4)에서, 메모리 컨트롤러(121)는 불휘발성 메모리 장치들(122)로부터 프로그램 성공에 대한 정보를 수신하고, 이에 응답하여, 제2 버퍼 메모리(123)를 해제할 수 있다. 예시적으로, 해제된 제2 버퍼 메모리(123)의 영역은 다른 쓰기 데이터를 저장(또는 백업, 로깅 등)하기 위한 영역으로 할당될 수 있다.
다음으로, 도 6을 참조하여 프로그램 페일시, 쓰기 데이터를 복원하는 방법이 설명된다. 간결한 설명을 위하여, 도 4 및 도 5를 참조하여 설명된 동작 및 구성은 도 6에서 생략된다. 즉, 도 6의 메모리 컨트롤러(121)는 도 4 및 도 5를 참조하여 설명된 ①~④의 동작들을 이미 수행한 것으로 가정한다. 다시 말해서, 도 6의 실시 예에서, 제1 버퍼 메모리(121a)는 쓰기 데이터(WRD)를 저장하지 않은 상태(즉, 해제된 상태)이고, 제2 버퍼 메모리(123)는 쓰기 데이터(WRD)를 저장한 상태인 것으로 가정한다.
도 6을 참조하면, 메모리 컨트롤러(121)는 불휘발성 메모리 장치들(122)로부터 프로그램 페일에 대한 정보를 수신할 수 있다(⑤). 앞서 설명된 바와 같이, 불휘발성 메모리 장치들(122)로부터 프로그램 페일에 대한 정보가 수신된 것은 불휘발성 메모리 장치들(122)에 쓰기 데이터(WRD)에 정상적으로 저장되지 않음을 가리킨다. 이에 따라, 쓰기 데이터(WRD)에 대한 추가적인 프로그램이 요구될 것이다.
메모리 컨트롤러(121)는 수신된 정보(즉, 프로그램 페일에 대한 정보)에 응답하여, 쓰기 데이터(WRD)를 제2 버퍼 메모리(123)로부터 제1 버퍼 메모리(121a)로 복사(또는 복원)할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 제1 버퍼 메모리(121a)는 쓰기 데이터(WRD)를 저장하지 않은 상태이고, 제2 버퍼 메모리(123)는 쓰기 데이터(WRD)를 저장한 상태이다. 따라서, 메모리 컨트롤러(121)는 쓰기 데이터(WRD)를 제2 버퍼 메모리(123)로부터 제1 버퍼 메모리(121a)로 복사함으로써, 쓰기 데이터(WRD)를 복원할 수 있다.
이후에, 메모리 컨트롤러(121)는 제1 버퍼 메모리(121a)의 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122)로 전송할 수 있다(⑦). 메모리 컨트롤러(121)는 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122)로 전송한 이후에, 제1 버퍼 메모리(121a)를 해제할 수 있다(⑧).
예시적으로, 제2 버퍼 메모리(123)는 불휘발성 메모리 장치들(122)의 프로그램 성공 이후에 해제될 수 있다. 다시 말해서, 불휘발성 메모리 장치들(122)이 쓰기 데이터(WRD)에 대한 프로그램을 성공할 때까지, 제2 버퍼 메모리(123)에 저장된 쓰기 데이터(WRD)는 유지될 수 있다.
상술된 바와 같이, 쓰기 버퍼로써 사용되는 제1 버퍼 메모리(121a)가 불휘발성 메모리 장치들(122)의 프로그램 완료 이전에 해제되더라도, 메모리 컨트롤러(121)는 제2 버퍼 메모리(123)에 저장된 쓰기 데이터(WRD)를 사용하여 데이터 신뢰성을 보장할 수 있다.
예시적으로, 비록 도면에 도시되지는 않았으나, 프로그램 페일시, 메모리 컨트롤러(121)는 제2 버퍼 메모리(123)의 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(122)로 직접 전송하도록 구성될 수 있다. 다시 말해서, 프로그램 페일시, 메모리 컨트롤러(121)는 쓰기 데이터(WRD)를 제1 버퍼 메모리(121a)에 복사하는 동작을 생략하고, 제2 버퍼 메모리(123)에서 불휘발성 메모리 장치들(122)로 직접 쓰기 데이터(WRD)를 제공하도록 구성될 수 있다.
예시적으로, 제1 버퍼 메모리(121a)가 해제된 이후에, 호스트(110)는 제1 버퍼 메모리(121a)로 새로운 쓰기 데이터를 제공할 수 있다. 호스트(110)로부터 새로운 쓰기 데이터가 제1 버퍼 메모리(121a)에 저장된 상태에서, 이전 쓰기 데이터(WRD)에 대한 프로그램 페일이 발생할 수 있다. 이 경우, 메모리 컨트롤러(121)는 프로그램 페일된 쓰기 데이터(WRD)를 제2 버퍼 메모리(123)로부터 불휘발성 메모리 장치(122)로 직접 전송하여 프로그램 페일된 쓰기 데이터에 대한 프로그램 동작을 먼저 수행하도록 구성될 수 있다. 상술된 동작 동안, 새로운 쓰기 데이터는 제1 버퍼 메모리(121a)에 유지되거나 또는 제1 버퍼 메모리(121a)는 해제되지 않을 것이다. 또는, 메모리 컨트롤러(121)는 새로운 쓰기 데이터에 대한 프로그램을 먼저 수행한 이후에, 제2 버퍼 메모리(123)에 저장된 쓰기 데이터(WRD)에 대한 프로그램을 수행할 수 있다. 그러나, 본 발명이 상술된 방법들에 제한되는 것은 아니며, 본 발명의 사상으로부터 벗어나지 않는 범위 내에서 다양한 방식으로 쓰기 데이터를 프로그램할 수 있다.
도 7 및 도 8은 도 1의 저장 장치(120)의 구조 및 제2 버퍼 메모리(123)의 구조를 예시적으로 보여주는 도면이다. 도 1, 도 7, 및 도 8을 참조하면, 저장 장치(120)는 메모리 컨트롤러(121)는 복수의 불휘발성 메모리 장치들(122)(NVM; nonvolatile memory devices)을 포함할 수 있다. 메모리 컨트롤러(121) 및 복수의 불휘발성 메모리 장치들(122)은 도 1 내지 도 6을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 7 및 도 8을 참조하면, 메모리 컨트롤러(121)는 복수의 채널들(CH1~CHm)을 통해 복수의 불휘발성 메모리 장치들(122)과 각각 통신할 수 있다. 복수의 불휘발성 메모리 장치들(122)은 복수의 웨이들(WAY1~WAYn)로 구분될 수 있다. 예를 들어, 제1 채널(CH1)과 연결된 불휘발성 메모리 장치들 각각은 제1 내지 제n 웨이들(WAY1~ WAYn) 각각에 포함될 수 있다. 마찬가지로, 복수의 채널들(CH2~CHm)과 연결된 불휘발성 메모리 장치들 각각은 제1 내지 제n 웨이들(WAY1~ WAYn) 각각에 포함될 수 있다.
또는, 제1 웨이(WAY1)에 포함된 복수의 불휘발성 메모리 장치들 각각은 복수의 채널들(CH1~CHm) 각각과 연결될 수 있다. 마찬가지로, 복수의 웨이들(WAY2~WAYn)에 포함된 복수의 불휘발성 메모리 장치들 각각은 복수의 채널들(CH1~CHm) 각각과 연결될 수 있다.
즉, 복수의 불휘발성 메모리 장치들(122) 각각은 별도의 반도체 다이, 칩, 패키지, 또는 모듈로 구현될 수 있으며, 채널별 또는 웨이별로 서로 구분될 수 있다.
제2 버퍼 메모리(123)는 복수의 불휘발성 메모리 장치들(122) 각각에 대한 저장 영역으로 구분될 수 있다. 예를 들어, 도 8에 도시된 바와 같이, 제2 버퍼 메모리(123)는 복수의 영역들로 구분되고, 각 영역들은 복수의 불휘발성 메모리 장치들(122) 각각과 대응될 수 있다. 이 때, 각 영역들은 복수의 불휘발성 메모리 장치들(122)의 채널별 및 웨이별로 구분될 수 있으며, 대응하는 불휘발성 메모리 장치에 저장될 쓰기 데이터를 저장하도록 구성될 수 있다. 예시적으로, 도 8에 도시된 저장 영역들 각각은 논리적 또는 물리적으로 구분된 영역일 수 있다.
도 9는 본 발명의 실시 예에 따른 사용자 시스템(200)을 보여주는 블록도이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 설명은 생략된다. 도 9를 참조하면, 사용자 시스템(200)은 호스트(210) 및 저장 장치(220)를 포함한다. 저장 장치(220)는 메모리 컨트롤러(221) 및 불휘발성 메모리 장치들(222)을 포함할 수 있다. 메모리 컨트롤러(221)는 제1 버퍼 메모리(221a)를 포함한다.
도 1의 실시 예에서, 제2 버퍼 메모리(123)는 저장 장치(120)에 포함된다. 그러나, 도 9의 실시 예에서, 제2 버퍼 메모리(211)는 호스트(210)에 포함된다. 다시 말해서, 저장 장치(220)는 프로그램 페일시 쓰기 데이터의 복원을 위한 수단으로서, 호스트(210)에 포함된 제2 버퍼 메모리(211)를 사용할 수 있다. 이 때, 제2 버퍼 메모리(211)는 호스트 버퍼 메모리(HBM; host buffer memory)일 수 있다. 즉, 저장 장치(220)는 호스트(210)에 포함된 제2 버퍼 메모리(211)(즉, 호스트 버퍼 메모리)를 사용할 수 있다.
도 10 내지 도 12는 도 9의 메모리 컨트롤러(221)의 동작을 설명하기 위한 도면들이다. 간결한 설명을 위하여, 메모리 컨트롤러(221)의 동작을 설명하는데 불필요한 구성 요소들 및 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
먼저, 도 10을 참조하면, 호스트(210)는 쓰기 데이터(WRD)를 제1 버퍼 메모리(221a)로 전송할 수 있다(①). 쓰기 데이터(WRD)가 제1 버퍼 메모리(221a)에 저장된 이후에, 메모리 컨트롤러(221)는 쓰기 완료(WR-completion)를 호스트(210)로 전송할 수 있다(②). ① 및 ②의 동작들은 도 4를 참조하여 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.
이후에, 메모리 컨트롤러(221)는 제1 버퍼 메모리(221a)의 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(222) 및 제2 버퍼 메모리(211)로 전송할 수 있다(③). 예시적으로, 도 10에 도시된 ③의 동작(쓰기 데이터 전송)은 도 4의 ③의 동작과 다를 수 있다. 예를 들어, 도 4의 ③의 동작(쓰기 데이터 전송)에서 제2 버퍼 메모리(123)로의 쓰기 데이터(WRD) 전송은 버퍼 관리자(121d, 도 2 참조)를 통해 수행될 수 있다. 그러나, 도 10의 제2 버퍼 메모리(211)는 호스트(210)에 포함된 호스트 버퍼 메모리(HBM)이기 때문에, 도 10의 ③의 동작(쓰기 데이터 전송)에서 제2 버퍼 메모리(211)로의 쓰기 데이터(WRD) 전송은 호스트 인터페이스 계층(121e, 도 2 참조)을 통해 수행될 수 있다.
이후에, 메모리 컨트롤러(221)는 제1 버퍼 메모리(221a)를 해제하고(④), 불휘발성 메모리 장치들(222)로부터 프로그램 성공에 대한 정보를 수신하고(⑤), 수신된 정보에 응답하여 제2 버퍼 메모리(211)를 해제할 수 있다(⑥). 예시적으로, 제2 버퍼 메모리(211)에 대한 해제 동작은 호스트 인터페이스 계층을 통해 수행될 수 있다.
다음으로, 도 11을 참조하면, 호스트(210)는 쓰기 데이터(WRD)를 제1 버퍼 메모리(221a)로 전송할 수 있다(①). 이 때, 도 10의 실시 예와 달리, 호스트(210)는 쓰기 데이터(WRD)를 제2 버퍼 메모리(211)로 전송할 수 있다. 다시 말해서, 호스트(210)는 쓰기 데이터(WRD)를 제1 버퍼 메모리(221a)로 전송하면서, 쓰기 데이터(WRD)를 제2 버퍼 메모리(211)에 저장할 수 있다. 예시적으로, 호스트(210)는 쓰기 데이터(WRD)가 저장된 제2 버퍼 메모리(211)의 포인터 정보를 메모리 컨트롤러(221)로 제공할 수 있다. 예시적으로, 포인터 정보는 쓰기 데이터(WRD)가 저장된 제1 버퍼 메모리(221a)의 논리적 또는 물리적 위치를 가리킬 수 있다.
쓰기 데이터(WRD)가 제1 버퍼 메모리(221a)에 저장된 이후에, 메모리 컨트롤러(221)는 쓰기 완료(WR-completion)를 호스트(210)로 전송할 수 있다(②). 이후에, 메모리 컨트롤러(221)는 제1 버퍼 메모리(221a)의 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(222)로 전송할 수 있다(③). 이 때, 호스트(210)에 의해 쓰기 데이터(WRD)가 제2 버퍼 메모리(211)에 저장되었으므로, 메모리 컨트롤러(221)는 제2 버퍼 메모리(211)로 쓰기 데이터(WRD)를 전송하지 않을 것이다.
이후에, 메모리 컨트롤러(221)는 ④, ⑤, 및 ⑥의 동작들을 수행할 수 있다. ④, ⑤, 및 ⑥의 동작들은 도 10을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 예시적으로, 메모리 컨트롤러(221)는 쓰기 데이터에 대한 포인터 정보를 기반으로 제2 버퍼 메모리(211)를 해제할 수 있다.
상술된 바와 같이, 저장 장치(220)는 프로그램 페일시, 쓰기 데이터를 복원하기 위한 버퍼 메모리로써 호스트 버퍼 메모리(HBM; host buffer memory)를 사용할 수 있다. 예시적으로, 저장 장치(220)의 메모리 컨트롤러(221)는 미리 정해진 인터페이스 또는 프로토콜을 포함하는 호스트 인터페이스 계층을 통해 호스트 버퍼 메모리를 접근할 수 있다.
예시적으로, 도 10을 참조하여 설명된 실시 예에서는, 쓰기 데이터(WRD)가 불휘발성 메모리 장치들(222)로 전송될 때, 메모리 컨트롤러(221)에 의해 제2 버퍼 메모리(211)에 전송되므로, 제2 버퍼 메모리(211)에 저장되는 쓰기 데이터(WRD)의 단위는 프로그램 단위(즉, PGM-D의 단위, 예를 들어, 96KB)일 수 있다. 반면에, 도 11을 참조하여 설명된 실시 예에서는, 쓰기 데이터(WRD)가 제1 버퍼 메모리(221a)로 전송될 때, 호스트(210)에 의해 제2 버퍼 메모리(211)로 전송되므로, 쓰기 데이터 단위는 호스트 및 메모리 컨트롤러 사이의 데이터 전송 단위(예를 들어, 4KB)일 수 있다.
다음으로, 도 12를 참조하여, 프로그램 페일시에, 저장 장치(220)의 데이터 복원 방법이 설명된다. 간결한 설명을 위하여, 도 12의 호스트(210) 및 메모리 컨트롤러(221)는 도 10 또는 도 11의 ①, ②, ③, 및 ④의 동작들을 수행한 상태인 것으로 가정한다. 즉, 메모리 컨트롤러(221)의 제1 버퍼 메모리(221a)는 쓰기 데이터(WRD)를 저장하지 않은 상태(즉, 해제된 상태)이고, 호스트(210)의 제2 버퍼 메모리(211)는 쓰기 데이터(WRD)를 저장한 상태일 것이다.
도 12를 참조하면, 메모리 컨트롤러(221)는 불휘발성 메모리 장치들(222)로부터 프로그램 페일에 대한 정보를 수신할 수 있다(⑤). 메모리 컨트롤러(221)는 수신된 정보에 응답하여, 호스트(210)의 제2 버퍼 메모리(211)로부터 쓰기 데이터(WRD)를 제1 버퍼 메모리(221a)로 복사(또는 복원)할 수 있다(⑥). 예시적으로, 메모리 컨트롤러(221)는 프로그램 실패된 쓰기 데이터(WRD)가 저장된 영역에 대한 정보를 기반으로 호스트(210)의 제2 버퍼 메모리(211)에 접근함으로써, 쓰기 데이터(WRD)를 제1 버퍼 메모리(221a)로 복사할 수 있다. 예시적으로, ⑥의 동작은 호스트 인터페이스 계층을 통해 수행될 수 있다. 예시적으로, 호스트(210)에 의해 쓰기 데이터(WRD)가 제2 버퍼 메모리(211)에 저장된 경우, 메모리 컨트롤러(221)는 호스트(210)로부터 수신된 포인터 정보를 기반으로 제2 버퍼 메모리(211)를 액세스할 수 있다.
이후에, 메모리 컨트롤러(221)는 제1 버퍼 메모리(221a)의 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(222)로 전송하고(⑦), 제1 버퍼 메모리(221a)를 해제할 수 있다(⑧).
상술된 바와 같이, 본 발명에 따른 저장 장치(220)는 쓰기 버퍼의 해제 및 쓰기 완료 전송을 프로그램 완료 이전에 수행함으로써, 쓰기 버퍼 용량 제한 또는 쓰기 지연에 따른 성능 저하를 방지할 수 있다. 또한, 본 발명에 따른 저장 장치(220)는 프로그램 페일시 쓰기 데이터를 복원하기 위한 수단으로 호스트(210)의 제2 버퍼 메모리(211)(즉, 호스트 버퍼 메모리)를 사용함으로써, 저장 장치(220)의 신뢰성을 향상시킬 수 있다.
도 13은 본 발명의 실시 예에 따른 사용자 시스템(300)을 보여주는 블록도이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 13을 참조하면, 사용자 시스템(300)은 호스트(310) 및 저장 장치(320)를 포함한다. 저장 장치(320)는 메모리 컨트롤러(321) 및 불휘발성 메모리 장치들(322)을 포함한다.
메모리 컨트롤러(321)는 제1 버퍼 메모리(321a), 제2 버퍼 메모리(321b), 및 패리티 생성기(321c)를 포함할 수 있다. 제1 버퍼 메모리(321a)는 쓰기 버퍼 또는 읽기 버퍼로써 사용될 수 있다. 제1 버퍼 메모리(321a)는 도 1 내지 도 12를 참조하여 설명되었으므로 이에 대한 상세한 설명은 생략된다.
제2 버퍼 메모리(321b)는 불휘발성 메모리 장치들(322)에 저장될 쓰기 데이터에 대한 패리티(parity)를 저장하도록 구성될 수 있다. 예시적으로, 도 1 내지 도 12를 참조하여 설명된 실시 예들에서, 제2 버퍼 메모리는 쓰기 데이터(WRD) 자체를 저장하도록 구성된다. 그러나, 도 13의 실시 예에서, 제2 버퍼 메모리(321b)는 쓰기 데이터 자체가 아닌 쓰기 데이터에 대한 패리티를 저장하도록 구성될 수 있다. 프로그램 페일시, 메모리 컨트롤러(321)는 제2 버퍼 메모리(321b)에 저장된 패리티 및 불휘발성 메모리 장치들(322)에 저장된 대응하는 데이터를 기반으로 프로그램 페일된 쓰기 데이터를 복원할 수 있다.
예시적으로, 제2 버퍼 메모리(321b)는 메모리 컨트롤러(321)에 포함된 SRAM(Static RAM)일 수 있다. 제2 버퍼 메모리(321b)는 제1 버퍼 메모리(321a)와 물리적으로 구분된 메모리일 수 있다. 또는 제1 및 제2 버퍼 메모리들(321a, 321b)은 동일한 메모리에 포함되고, 서로 논리적으로 구분될 수 있다. 예시적으로, 비록 도면에 도시되지는 않았으나, 제2 버퍼 메모리(321b)는 메모리 컨트롤러(321) 외부에 구비된 별도의 메모리(예를 들어, DRAM)일 수 있다.
패리티 생성기(321c)는 하나 또는 그 이상의 쓰기 데이터에 대한 패리티를 생성하도록 구성될 수 있다. 예를 들어, 패리티 생성기(321c)는 기본 패리티 및 하나 또는 그 이상의 쓰기 데이터에 대한 비트와이즈 배타적-오아(bitwise XOR) 연산을 수행함으로써, 하나 또는 그 이상의 쓰기 데이터에 대한 패리티를 생성할 수 있다. 예시적으로, 패리티 생성기(321c)는 온-더-플라이(on-the-fly) 방식으로 하나 또는 그 이상의 쓰기 데이터에 대한 패리티를 생성할 수 있다.
예시적으로, 기본 패리티는 하나의 쓰기 데이터 단위 또는 불휘발성 메모리 장치들(322)에 저장되는 프로그램 단위와 동일한 길이를 갖는 올-제로(all-zero) 비트이거나 또는 특정 패턴의 데이터 비트일 수 있다. 예시적으로 패리티를 생성하기 위한 비트와이즈 배타적-오아(bitwise XOR) 연산은 단순한 예시이며, 패리티 생성기(321c)의 연산 동작이 이에 한정되는 것은 아니다.
상술된 바와 같이, 저장 장치(320)는 쓰기 데이터에 대한 프로그램 완료 이전에, 쓰기 완료 전송 및 쓰기 버퍼 해제를 수행함으로써, 성능 저하를 방지할 수 있다. 또한, 저장 장치(320)는 하나 또는 그 이상의 쓰기 데이터에 대한 패리티를 생성하고, 프로그램 실패시, 생성된 패리티 및 대응하는 데이터를 기반으로 프로그램 페일된 쓰기 데이터를 복원할 수 있다. 저장 장치(320)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 14는 도 13의 메모리 컨트롤러(321)의 동작을 보여주는 순서도이다. 도 13 및 도 14를 참조하면, 메모리 컨트롤러(321)는 S210 단계 및 S220 단계의 동작들을 수행할 수 있다. S210 단계 및 S220 단계의 동작들은 도 3a의 S110 단계 및 S120 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S230 단계에서, 메모리 컨트롤러(321)는 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(322)로 전송하고, 쓰기 데이터(WRD)를 기반으로 패리티(PRT)를 생성하여 제2 버퍼 메모리(321b)에 저장할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 메모리 컨트롤러(321)는 쓰기 데이터(WRD)가 불휘발성 메모리 장치들(322)에 저장되도록 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(322)로 전송할 수 있다. 이와 함께, 메모리 컨트롤러(321)는 쓰기 데이터(WRD)를 기반으로 패리티(PRT)를 생성하여 제2 버퍼 메모리(321b)에 저장할 수 있다.
좀 더 상세한 예로써, 메모리 컨트롤러(321)는 제2 버퍼 메모리(321b)에 저장된 패리티(PRT)를 읽고, 읽은 패리티(PRT) 및 쓰기 데이터(WRD)를 비트와이즈 배타적-오아(bitwise XOR) 연산을 수행하여, 새로운 패리티를 생성할 수 있다. 예시적으로, 제2 버퍼 메모리(321b)에 저장된 패리티(PTR)는 기본 패리티이거나 또는 이전 쓰기 데이터에 대한 패리티일 수 있다. 즉, 이전 쓰기 데이터 및 새로운 패리티에 대한 비트와이즈 배타적-오아 연산을 통해 쓰기 데이터(WRD)를 복원할 수 있다. 생성된 새로운 패리티(PRT)는 제2 버퍼 메모리(321b)에 저장된다. 예시적으로, 제2 버퍼 메모리(321b)에 저장된 이전 패리티가 생성된 새로운 패리티(PRT)로 갱신될 수 있다.
이후에, 메모리 컨트롤러(321)는 S240 단계 내지 S260 단계의 동작들을 수행할 수 있다. S240 단계 내지 S260 단계의 동작들은 도 3a의 S140 단계 내지 S160 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S250 단계의 판별 결과가 프로그램 페일을 가리키는 경우, S270 단계에서, 메모리 컨트롤러(321)는 제2 버퍼 메모리(321b)에 저장된 패리티(PRT)를 기반으로 쓰기 데이터(WRD)를 복원할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 제2 버퍼 메모리(321b)에 저장된 패리티(PRT)는 이전 쓰기 데이터 및 현재 쓰기 데이터(WRD)에 대한 패리티일 것이다. 즉, 이전 쓰기 데이터 및 패리티(PRT)에 연산을 수행함으로써, 현재 쓰기 데이터(WRD)가 복원될 수 있다. 예시적으로, S250 단계의 동작을 수행하기 위하여, 메모리 컨트롤러(321)는 불휘발성 메모리 장치들(322)로부터 적어도 하나 이상의 이전 쓰기 데이터를 읽을 수 있다.
쓰기 데이터(WRD)가 복원된 이후에, 메모리 컨트롤러(321)는 S230 단계 내지 S250 단계의 동작을 수행할 수 있다. 예시적으로, 쓰기 데이터(WRD)가 복원된 이후에, S230 단계에서는 패리티(PRT)를 생성하는 동작이 생략될 수 있다.
상술된 바와 같이, 본 발명에 따른 저장 장치(320)는 쓰기 버퍼 해제 및 쓰기 완료 전송을 불휘발성 메모리 장치들(322)의 프로그램 완료 이전에 미리 수행함으로써, 성능 저하를 방지할 수 있다. 또한, 본 발명에 따른 저장 장치(320)는 쓰기 데이터에 대한 패리티를 생성하고, 불휘발성 메모리 장치들(322)의 프로그램 완료까지 패리티를 유지함으로써, 쓰기 데이터에 대한 신뢰성을 보장할 수 있다.
도 15는 도 13의 메모리 컨트롤러(321)의 동작을 상세하게 설명하기 위한 도면이다. 간결한 설명을 위하여, 도 13의 메모리 컨트롤러(321)의 동작을 설명하는데 불필요한 구성은 생략된다. 또한, 도 13을 참조하여, 프로그램 성공 시의 메모리 컨트롤러(321)의 동작이 설명된다.
또한, 하나의 쓰기 데이터(WRD)를 기준으로 메모리 컨트롤러(321)의 동작이 설명된다. 그러나, 이는 단순히 본 발명의 기술적 사상을 간결하고 명확하게 설명하기 위한 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 메모리 컨트롤러(321)는 복수의 쓰기 데이터를 복수의 채널들을 통해 인터리빙 방식으로 불휘발성 메모리 장치들(322)로 전송할 수 있고, 복수의 쓰기 데이터 각각이 불휘발성 메모리 장치들(322)로 전송될 때마다, 패리티를 갱신하도록 구성될 수 있다. 즉, 메모리 컨트롤러(321)는 복수의 쓰기 데이터에 대한 하나의 패리티를 생성, 갱신, 및 관리하도록 구성될 수 있다.
도 15를 참조하면, 호스트(310) 및 메모리 컨트롤러(321)는 ① 및 ②의 동작들을 수행할 수 있다. ① 및 ②의 동작들은 도 4를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 이후에, 메모리 컨트롤러(321)는 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(322)로 전송하고, 패리티(PRT)를 갱신할 수 있다(③).
예를 들어, 메모리 컨트롤러(321)는 쓰기 데이터(WRD)를 불휘발성 메모리 장치들(322)로 전송할 수 있다. 이와 함께, 메모리 컨트롤러(321)는 제2 버퍼 메모리(321b)로부터 패리티(PRT)를 읽고(③'), 읽은 패리티(PRT) 및 쓰기 데이터(WRD)를 기반으로 새로운 패리티를 생성하여 제2 버퍼 메모리(321b)의 패리티(PRT)를 갱신할 수 있다(③"). 예시적으로, 제2 버퍼 메모리(321b)에 저장된 이전 패리티(PRT)는 기본 패리티이거나 또는 이전 쓰기 데이터에 대한 패리티일 수 있다. 예시적으로, 쓰기 데이터(WRD)의 신뢰성을 보장하기 위하여, 쓰기 데이터(WRD)의 전송, 패리티(PRT) 읽기(③'), 및 패리티(PRT) 갱신(③")의 동작은 아토믹 동작(atomic operation)으로서 행해질 수 있다.
쓰기 데이터(WRD)의 전송, 패리티(PRT) 읽기(③'), 및 패리티(PRT) 갱신(③")의 동작이 완료된 이후에, 메모리 컨트롤러(321)는 제1 버퍼 메모리(321a)를 해제할 수 있다(④).
이후에, 메모리 컨트롤러(321)는 불휘발성 메모리 장치들(322)로부터 프로그램 성공에 대한 정보를 수신할 수 있다(⑤). 메모리 컨트롤러(321)는 수신된 정보에 응답하여 제2 버퍼 메모리(321b)를 해제할 수 있다. 예시적으로, 제2 버퍼 메모리(321b)를 해제하는 것은 제2 버퍼 메모리(321b)에 저장된 대응하는 패리티를 기본 패리티로 변환하는 것을 포함할 수 있다. 제2 버퍼 메모리(321b)에 저장된 기본 패리티는 새로운 쓰기 데이터에 대한 기본 패리티로써 사용될 수 있다.
예시적으로, 비록 도면에 명확하게 도시되지는 않았으나, 복수의 쓰기 데이터에 대한 프로그램이 모두 성공한 이후에, 제2 버퍼 메모리(321b)가 해제 또는 제2 버퍼 메모리(321b)에 저장된 패리티가 기본 패리티로 변경될 수 있다. 예를 들어, 메모리 컨트롤러(321)는 앞서 설명된 쓰기 데이터(WRD)의 전송, 패리티(PRT) 읽기(③'), 및 패리티(PRT) 갱신(③")의 동작들을 반복 수행함으로써, 복수의 쓰기 데이터에 대한 하나의 패리티를 생성할 수 있다. 이 경우, 복수의 쓰기 데이터에 대한 프로그램 동작들이 모두 성공한 이후에, 메모리 컨트롤러(321)는 제2 버퍼 메모리(321b)를 해제하도록 구성될 수 있다. 예시적으로, 복수의 쓰기 데이터에 대한 프로그램 동작들 중 적어도 하나가 페일인 경우, 메모리 컨트롤러(321)는 프로그램 성공된 쓰기 데이터 및 패리티(PRT)를 기반으로 프로그램 페일된 쓰기 데이터를 복원할 수 있다.
도 16은 복수의 채널들을 통해 불휘발성 메모리 장치들로 쓰기 데이터를 전송하는 동작을 설명하기 위한 타이밍도이다. 도면의 간결성 및 설명의 편의를 위하여, 쓰기 데이터가 호스트(310)로부터 수신되는 구성 및 불휘발성 메모리 장치들(322)의 프로그램 동작은 도 16에서 도시되지 않으며, 메모리 컨트롤러(321)가 제1 내지 제4 채널들(CH1~CH4)을 통해 복수의 쓰기 데이터(WRD1~WRDn)를 전송하는 구성만 도 16에 도시된다. 또한, 메모리 컨트롤러(321)는 제1 내지 제n 쓰기 데이터(WRD1~WRDn)를 기반으로 하나의 패리티(PRT)를 생성하는 것으로 가정한다. 이 때, 하나의 패리티(PRT)의 크기는 쓰기 데이터의 크기 또는 프로그램 데이터의 크기와 동일할 수 있다.
그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 저장 장치(320)는 추가적인 채널들을 통해 추가적인 불휘발성 메모리 장치들과 통신할 수 있다. 또한, 메모리 컨트롤러(321)는 제1 내지 제4 채널들(CH1~CH4)을 통해 복수의 쓰기 데이터(WRD1~WRDn)를 전송할 때 마다, 패리티(PRT)를 갱신할 수 있다.
도 13 및 도 15를 참조하면, 메모리 컨트롤러(321)는 복수의 쓰기 데이터(WRD1~WRDn)를 인터리빙 방식으로 제1 내지 제4 채널들(CH1~CH4)을 통해 불휘발성 메모리 장치들(322)로 전송할 수 있다. 예시적으로, 메모리 컨트롤러(321) 및 불휘발성 메모리 장치들(322)은 도 7을 참조하여 설명된 구조(즉, 복수의 채널 및 복수의 웨이)로 구성될 수 있다.
메모리 컨트롤러(321)는 복수의 쓰기 데이터(WRD1~WRDn) 각각을 불휘발성 메모리 장치들(322)로 전송할 때마다, 대응하는 패리티(PRT)를 생성하고, 복수의 쓰기 데이터(WRD1~WRDn) 각각이 불휘발성 메모리 장치들(322)로 전송된 이후에, 제1 버퍼 메모리(321a)(좀 더 상세하게는 대응하는 쓰기 데이터가 저장된 영역)를 해제할 수 있다.
예를 들어, 메모리 컨트롤러(321)는 제1 채널(CH1)을 통해 제1 쓰기 데이터(WRD1)를 불휘발성 메모리 장치들(322) 중 대응하는 하나로 전송할 수 있다. 이와 함께, 메모리 컨트롤러(321)는 제1 쓰기 데이터(WRD1) 및 기본 패리티를 기반으로 패리티(PRT)를 생성할 수 있다.
이후에, 메모리 컨트롤러(321)는 인터리빙 방식으로 제1 내지 제4 채널들(CH1~CH4)을 통해 복수의 쓰기 데이터(WRD2~WRDn) 각각을 불휘발성 메모리 장치들(322) 중 대응하는 하나로 전송하고, 복수의 쓰기 데이터(WRD2~WRDn) 각각을 기반으로 패리티(PRT)를 갱신할 수 있다.
메모리 컨트롤러(321)는 복수의 쓰기 데이터(WRD1~WRDn) 각각의 전송이 완료되는 시점(또는 복수의 쓰기 데이터(WRD1~WRDn) 각각에 기반된 패리티가 갱신된 시점)에서, 제1 버퍼 메모리(321a)(좀 더 상세하게는 대응하는 쓰기 데이터가 저장된 영역)를 해제할 수 있다. 즉, 복수의 쓰기 데이터(WRD1~WRDn) 각각에 대한 프로그램이 완료되기 이전에, 제1 내지 제n 시점들(t1~tn) 각각에서, 제1 버퍼 메모리(321a)가 해제될 수 있다.
이후에, 제1 내지 제n 쓰기 데이터(WRD1~WRDn) 각각에 대한 프로그램이 모두 성공한 이후에, 제2 버퍼 메모리(321b)가 해제될 수 있다. 예시적으로, 제1 내지 제n 쓰기 데이터(WRD1~WRDn)에서, n은 저장 장치(320)의 채널의 개수 × 웨이의 개수일 수 있다. 또는 n은 쓰기 데이터의 신뢰성을 보장하고, 쓰기 성능을 최적화할 수 있도록 미리 정해진 개수일 수 있다.
상술된 바와 같이, 메모리 컨트롤러(321)는 복수의 쓰기 데이터(WRD1~WRDn)에 대한 프로그램 완료 이전에 쓰기 완료 전송 및 쓰기 버퍼 해제를 수행함으로써, 쓰기 버퍼 용량 제한 및 쓰기 지연으로 인한 성능 저하를 방지할 수 있다. 또한, 메모리 컨트롤러(321)는 복수의 쓰기 데이터(WRD1~WRDn)에 대한 패리티(PRT)를 생성하고, 복수의 쓰기 데이터(WRD1~WRDn)에 대한 프로그램이 모두 완료될 때까지 패리티(PRT)를 유지함으로써, 복수의 쓰기 데이터(WRD1~WRDn)에 대한 신뢰성을 보장할 수 있다.
도 17은 프로그램 페일 상황에서, 메모리 컨트롤러(321)가 쓰기 데이터를 복원하는 방법을 설명하기 위한 도면이다. 간결한 설명을 위하여, 프로그램 페일시, 메모리 컨트롤러(321)가 쓰기 데이터를 복원하는 방법을 설명하는데 불필요한 구성 요소들은 생략된다.
또한, 도 17의 실시 예에서, 메모리 컨트롤러(321)는 복수의 쓰기 데이터(WRD1~WRDn)에 대하여 도 15의 ①, ②, ③, 및 ④의 동작들을 반복 수행한 상태인 것으로 가정한다. 즉, 복수의 쓰기 데이터(WRD1~WRDn)는 불휘발성 메모리 장치들(322)로 전송된 상태이고, 제1 버퍼 메모리(321a)는 해제된 상태이고, 제2 버퍼 메모리(321b)는 복수의 쓰기 데이터(WRD1~WRDn)에 대한 패리티(PRT)를 저장한 상태인 것으로 가정한다. 또한, 도면의 간결성 및 설명의 편의을 위하여, 불휘발성 메모리 장치들(322)은 하나의 블록으로 도시되고, 제3 쓰기 데이터(WRD3)에 대한 프로그램이 페일인 것으로 가정한다.
그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 장치들(322) 각각은 서로 다른 장치들로 구현되고, 복수의 웨이들로 구분되고, 복수의 채널들을 통해 메모리 컨트롤러(321)와 통신할 수 있다. 또한, 복수의 쓰기 데이터(WRD1~WRDn) 각각은 서로 다른 불휘발성 메모리 장치에 저장될 수 있다.
도 16 및 도 17을 참조하면, 앞서 설명된 바와 같이, 메모리 컨트롤러(321)는 복수의 쓰기 데이터(WRD1~WRDn)를 인터리빙 방식으로 복수의 불휘발성 메모리 장치들(322)로 전송할 수 있다. 이 때, 메모리 컨트롤러(321)는 복수의 쓰기 데이터(WRD1~WRDn)에 대한 패리티(PRT)를 생성하고, 생성된 패리티(PRT)를 제2 버퍼 메모리(321b)에 저장될 것이다.
불휘발성 메모리 장치들(322) 각각은 수신된 복수의 쓰기 데이터(WRD1~WRDn)에 대한 프로그램 동작들을 수행할 수 있다. 이 때, 제3 쓰기 데이터(WRD3)에 대한 프로그램 동작이 페일일 수 있다. 메모리 컨트롤러(321)는 제3 쓰기 데이터(WRD3)의 프로그램이 페일임을 가리키는 정보를 수신할 수 있다(⑤). 비록 도면에 도시되지는 않았으나, 메모리 컨트롤러(321)는 나머지 쓰기 데이터(WRD1, WRD2, WRD4~WRDn) 각각의 프로그램 성공에 대한 정보를 각각 수신할 수 있다.
메모리 컨트롤러(321)는 수신된 정보에 응답하여, 복수의 쓰기 데이터(WRD1~WRDn) 중 프로그램 페일된 쓰기 데이터(WRD3)를 제외한 나머지 쓰기 데이터(즉, WRD1, WRD2, WRD4~WRDn)를 불휘발성 메모리 장치들(322)로부터 읽을 수 있다(⑥). 예시적으로, 불휘발성 메모리 장치들(322)로부터 쓰기 데이터를 읽는 동작은 프로그램 페일된 쓰기 데이터(WRD3)를 제외한 나머지 쓰기 데이터(즉, WRD1, WRD2, WRD4~WRDn)에 대한 프로그램 동작이 완료(또는 프로그램 성공)된 이후에 수행될 수 있다.
메모리 컨트롤러(321)는 제2 버퍼 메모리(321b)에 저장된 패리티(PRT)를 읽을 수 있다(⑥'). 메모리 컨트롤러(321)는 패리티(PRT) 및 읽은 쓰기 데이터(WRD1, WRD2, WRD4~WRDn)를 기반으로 프로그램 페일된 쓰기 데이터(즉, 제3 쓰기 데이터(WRD3))를 복원할 수 있다(⑦). 예를 들어, 앞서 설명된 바와 같이, 패리티 생성기(321c)는 패리티(PRT) 및 읽은 쓰기 데이터(WRD1, WRD2, WRD4~WRDn)에 대한 비트와이즈 배타적-오아(bitwise XOR) 연산을 수행하여 제3 쓰기 데이터(WRD3)를 복원할 수 있다. 복원된 제3 쓰기 데이터(WRD3)는 제1 버퍼 메모리(321a)에 저장되고, 메모리 컨트롤러(321)는 제3 쓰기 데이터(WRD3)가 불휘발성 메모리 장치들(322)에 저장되도록, 제3 쓰기 데이터(WRD3)를 불휘발성 메모리 장치들(322)로 전송할 수 있다.
예시적으로 도 17을 참조하여 복수의 쓰기 데이터(WRD1~WRDn) 중 하나의 쓰기 데이터에 대한 프로그램 페일에서의 데이터 복원 방법이 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 메모리 컨트롤러(321)는 패리티의 개수를 증가시킴으로써, 복수의 쓰기 데이터에 대한 프로그램 페일 상황에서 복수의 쓰기 데이터가 복원될 수 있다. 이 때, 복수의 패리티들은 제2 버퍼 메모리(321b)에 저장되거나 또는 복수의 패리티들 중 일부는 불휘발성 메모리 장치들(322)에 저장되도록 구성될 수 있다.
상술된 바와 같이, 본 발명에 따른 저장 장치(320)는 복수의 쓰기 데이터의 프로그램 완료 이전에 쓰기 버퍼 해제 및 쓰기 완료 전송을 수행함으로써, 쓰기 지연을 방지할 수 있다. 또한, 저장 장치(320)는 복수의 쓰기 데이터 중 일부 쓰기 데이터에 대한 프로그램 페일이 발생한 경우, 나머지 쓰기 데이터 및 패리티를 기반으로 프로그램 페일된 쓰기 데이터를 복원할 수 있다. 따라서, 향상된 성능 및 향상된 신뢰성을 갖는 저장 장치가 제공된다.
도 18은 본 발명의 실시 예에 따른 데이터 전송 단위를 설명하기 위한 타이밍도이다. 예시적으로, 본 발명의 기술적 사상을 명확하게 설명하기 위하여, 앞서 설명된 실시 예들에서는, 호스트(110, 210, 또는 310) 및 메모리 컨트롤러(121, 221, 또는 321) 사이에서 전송되는 데이터 단위와 메모리 컨트롤러(121, 221, 또는 321) 및 불휘발성 메모리 장치들(122, 222, 또는 322) 사이에서 전송되는 데이터 단위는 서로 동일한 것으로 가정하여 실시 예들이 설명되었다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니다.
예를 들어, 호스트(110, 210, 또는 310) 및 메모리 컨트롤러(121, 221, 또는 321) 사이에서 전송되는 데이터 단위는 호스트(110, 210, 또는 310) 및 메모리 컨트롤러(121, 221, 또는 321) 사이의 미리 정해진 인터페이스 또는 프로토콜 또는 호스트(110, 210, 또는 310)의 파일 시스템에 따라 결정될 수 있다. 또한, 메모리 컨트롤러(121, 221, 또는 321) 및 불휘발성 메모리 장치들(122, 222, 또는 322) 사이에서 전송되는 데이터 단위는 메모리 컨트롤러(121, 221, 또는 321) 및 불휘발성 메모리 장치들(122, 222, 또는 322) 사이의 미리 정해진 인터페이스 또는 프로토콜 또는 불휘발성 메모리 장치들(122, 222, 또는 322)의 동작 특정에 따라 결정될 수 있다. 즉, 각각의 데이터 전송 단위가 서로 다를 수 있다.
예를 들어, 호스트(110, 210, 또는 310) 및 메모리 컨트롤러(121, 221, 또는 321) 사이에서 전송되는 데이터의 단위는 섹터 단위(예를 들어, 4KB)일 수 있고, 메모리 컨트롤러(121, 221, 또는 321) 및 불휘발성 메모리 장치들(122, 222, 또는 322) 사이에서 전송되는 데이터 단위는 불휘발성 메모리 장치들(122, 222, 또는 322)의 프로그램 단위, 또는 페이지 단위(예를 들어, 96KB)일 수 있다. 즉, 메모리 컨트롤러(121, 221, 또는 321)는 호스트(110, 210, 또는 310)로부터 복수의 쓰기 데이터를 수신하고, 수신된 복수의 쓰기 데이터가 프로그램 단위를 형성한 경우, 메모리 컨트롤러(121, 221, 또는 321)는 프로그램 단위의 데이터를 불휘발성 메모리 장치들(122, 222, 또는 322)로 전송할 수 있다.
좀 더 상세한 예로써, 복수의 쓰기 데이터(WRD1~WRDk)는 하나의 프로그램 단위의 데이터를 구성하는 것으로 가정한다. 도 8에 도시된 바와 같이, 복수의 쓰기 데이터(WRD1~WRDk)가 호스트(110, 210, 또는 310)로부터 제1 버퍼 메모리(121a, 221a, 321a)로 전송될 수 있다. 이 때, 복수의 쓰기 데이터(WRD1~WRDk) 각각이 제1 버퍼 메모리(121a, 221a, 321a)로 전송 완료될 때마다, 메모리 컨트롤러(121, 221, 또는 321)는 쓰기 완료(WR-completion)를 호스트(110, 210, 또는 310)로 전송할 수 있다.
이후에, 메모리 컨트롤러(121, 221, 또는 321)는 하나의 프로그램 단위의 데이터(PGM-D)를 불휘발성 메모리 장치들(122, 222, 또는 322)로 전송할 수 있다. 이 때, 앞서 설명된 실시 예들과 유사하게, 메모리 컨트롤러(121, 221, 또는 321)는 프로그램 단위의 데이터(PGM-D)를 제2 버퍼 메모리(123, 211)로 전송하거나 또는 프로그램 단위의 데이터(PGM-D)를 기반으로 대응하는 패리티를 생성할 수 있다.
프로그램 단위의 데이터(PGM-D)가 전송된 이후에, 메모리 컨트롤러(121, 221, 321)는 제1 버퍼 메모리(121a, 221a, 321a)를 해제할 수 있다. 불휘발성 메모리 장치들(122, 222, 또는 322)에서 프로그램이 완료된 이후에, 메모리 컨트롤러(121, 221, 321)는 제2 버퍼 메모리(123, 211, 221b)를 해제할 수 있다.
상술된 바와 같이, 본 발명에 따른 저장 장치는 호스트로부터 수신된 쓰기 데이터를 제1 버퍼 메모리에 저장할 때마다, 쓰기 완료를 호스트로 전송하고, 프로그램 단위의 데이터를 불휘발성 메모리 장치들로 전송할 때마다, 제1 버퍼 메모리를 해제할 수 있다. 즉, 호스트로부터의 쓰기 데이터에 대한 프로그램이 완료되기 이전에 쓰기 완료 전송 및 쓰기 버퍼 해제를 수행함으로써, 쓰기 지연을 방지할 수 있다. 또한, 쓰기 데이터에 대한 프로그램이 완료될 때까지 쓰기 데이터를 복원하기 위한 다양한 수단(예를 들어, 저장 장치 내의 버퍼 메모리에 저장된 데이터, 호스트의 HBM에 저장된 쓰기 데이터, 또는 쓰기 데이터에 대한 패리티)을 유지함으로써, 데이터에 대한 신뢰성을 보장할 수 있다.
도 19는 본 발명의 실시 예에 따른 메모리 컨트롤러(421)의 구성을 보여주는 블록도이다. 간결한 설명을 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
도 19를 참조하면, 메모리 컨트롤러(421)는 제1 버퍼 메모리(421a), 프로세서(421b), ROM(421c), 버퍼 관리자(421d), 호스트 인터페이스 계층(421e), 플래시 인터페이스 계층(421f), HDMA 엔진(421g)(Host Direct Memory Access engine), 및 FDMA 엔진(421h)(Flash Direct Memory Access engine)을 포함할 수 있다. 제1 버퍼 메모리(421a), 프로세서(421b), ROM(421c), 버퍼 관리자(421d), 호스트 인터페이스 계층(421e), 및 플래시 인터페이스 계층(421f)은 도 2를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 19의 메모리 컨트롤러(421)는 HDMA 엔진(421g) 및 FDMA 엔진(421h)을 더 포함한다. HDMA 엔진(421g)은 프로세서(421b)의 개입 없이 호스트(410) 및 제1 버퍼 메모리(421a) 사이의 직접 메모리 접근(DMA; Direct Memory Access) 동작을 제어하는 하드웨어 장치일 수 있다. FDMA 엔진(421h)은 제1 버퍼 메모리(421a) 및 불휘발성 메모리 장치들(422) 사이의 DMA 동작과 제1 버퍼 메모리(421a) 및 제2 버퍼 메모리(423) 사이의 DMA 동작을 제어하는 하드웨어 장치일 수 있다.
예를 들어, 저장 장치는 데이터 전송 속도를 향상시키기 위하여, DMA 모드로 동작할 수 있다. DMA 모드는 메모리 컨트롤러(421)에 포함된 프로세서(421b) 또는 코어의 개입 또는 없이, DMA 엔진들(421g, 421h)의 제어에 따라 데이터가 전달되는 동작 모드를 가리킨다. 즉, 데이터가 전달되는 동안, 프로세서 또는 코어로부터의 제어 또는 처리가 요구되지 않기 때문에, 데이터 전달 속도가 향상될 수 있다.
이러한 DMA 동작 모드에서, HDMA 엔진(421g)은 호스트(410) 및 제1 버퍼 메모리(421a) 사이의 데이터 전달을 제어 또는 관장할 수 있고, FDMA 엔진(421h)은 제1 버퍼 메모리(421a) 및 불휘발성 메모리 장치들(422) 사이의 데이터 전달과 제1 버퍼 메모리(421a) 및 제2 버퍼 메모리(423) 사이의 데이터 전달을 제어 또는 관장할 수 있다.
예시적으로, 도 1 내지 도 18을 참조하여 설명된 호스트 및 제1 버퍼 메모리 사이의 쓰기 데이터 전송은 DMA 모드로 수행될 수 있으며, 이 경우, 쓰기 데이터 전송에 대한 HDMA 동작(Host Direct Memory Access operation)은 프로세서(421b)의 개입 없이 HDMA 엔진(421g)에 의해 수행될 수 있다. 또한, 도 1 내지 도 18을 참조하여 설명된 제1 버퍼 메모리 및 불휘발성 메모리 장치들 사이와 제1 버퍼 메모리 및 제2 버퍼 메모리 사이의 데이터 전송은 DMA 모드로 수행될 수 있으며, 이 경우, 데이터 전송에 대한 FDMA 동작(Flash Direct Memory Access operation)은 프로세서(421b)의 개입 없이 FDMA 엔진(421h)에 의해 수행될 수 있다.
예시적으로, 비록 도면에 도시되지는 않았으나, 메모리 컨트롤러(421)는 제1 버퍼 메모리(421a) 및 제2 버퍼 메모리(423) 사이의 DMA 동작을 제어 또는 관장하는 별도의 DMA 엔진을 더 포함할 수 있다.
본 발명에 따른 메모리 컨트롤러(421)는 호스트(410)로부터 쓰기 데이터를 수신하는 HDMA 동작을 완료한 이후에, 쓰기 완료(WR-completion)를 호스트(410)로 전송하고, 불휘발성 메모리 장치들(422) 및 제2 버퍼 메모리(423)로 데이터를 전송하는 FDMA 동작을 완료한 이후에, 제1 버퍼 메모리(421a)를 해제할 수 있다. 또한, 불휘발성 메모리 장치들(422)에서 프로그램이 완료된 이후에, 제2 버퍼 메모리(423)를 해제함으로써, 프로그램 페일 시에도 데이터를 정상적으로 복원할 수 있다. 따라서, 향상된 성능 및 향상된 신뢰성을 갖는 저장 장치가 제공된다.
도 20은 본 발명이 적용된 저장 장치를 예시적으로 보여주는 블록도이다. 도 20을 참조하면, 사용자 시스템(2000)은 호스트(2100) 및 저장 장치(2200)를 포함할 수 있다. 호스트(2100)는 저장 장치(2200)에 데이터를 저장하거나 또는 저장 장치(2200)에 저장된 데이터를 읽도록 구성될 수 있다.
저장 장치(2200)는 컨트롤러(2210), 복수의 불휘발성 메모리 장치들(2220), 및 버퍼 메모리(2230)를 포함할 수 있다. 컨트롤러(2210)는 프로세서(2211), 데이터 영역 관리 회로(2212), 쓰기 관리 회로(2213), 읽기 관리 회로(2214), 호스트 인터페이스 계층(2215), 및 메모리 인터페이스 계층(2216)을 포함할 수 있다.
프로세서(2211)는 하나 이상의 프로세서 코어를 포함할 수 있다. 프로세서(2211)는 프로세서 코어의 동작에 따라 소프트웨어(SW) 및/또는 펌웨어(FW)의 프로그램 코드를 실행할 수 있다.
데이터 영역 관리 회로(2212)는 저장 장치(2200)에 대한 제1 유형의 작업을 관리하도록 구성될 수 있다. 예를 들어, 데이터 영역 관리 회로(2212)는 제 1 유형의 작업을 수행하는 것과 관련하여, 불휘발성 메모리 장치들(2220), 쓰기 데이터, 및 읽기 데이터 중 적어도 하나의 상태의 정보를 획득할 수 있다. 쓰기 관리 회로(2213) 및 읽기 관리 회로(2214)는 제 1 유형의 작업을 수행함에 따라 다양한 상태의 정보를 데이터 영역 관리 회로(2212)로 제공할 수 있다. 데이터 영역 관리 회로(2212)는, 획득되는 정보를 기반으로 컨트롤러(2210) 또는 복수의 불휘발성 메모리 장치들(2220)의 동작들에 관한 상태를 모니터링할 수 있다.
쓰기 관리 회로(2213)는 제 1 유형의 작업(특히, 쓰기 작업)을 관리할 수 있다. 예를 들어, 쓰기 관리 회로(2213)는 호스트(2100)로부터의 쓰기 데이터를 불휘발성 메모리 장치들(2220)에 저장하기 위한 쓰기 동작을 관리할 수 있다. 예시적으로, 쓰기 관리 회로(2213)는 호스트(2100)로부터 수신되는 쓰기 데이터를 복수의 불휘발성 메모리 장치들(2220)로 전달하기 위한 쓰기 경로 상에 놓일 수 있다.
읽기 관리 회로(2214)는 제 1 유형의 작업(특히, 읽기 작업)을 관리할 수 있다. 예를 들어, 읽기 관리 회로(2214)는 읽기 데이터를 컨트롤러(2210)의 외부(예를 들어, 호스트(2100))로 출력하기 위한 읽기 동작을 관리할 수 있다. 예시적으로, 읽기 관리 회로(2214)는 불휘발성 메모리 장치(2220)로부터 출력되는 읽기 데이터를 컨트롤러(2210)의 외부로 전달하기 위한 읽기 경로 상에 놓일 수 있다.
예시적으로, 쓰기 관리 회로(2213) 및 읽기 관리 회로(2214)는 내부 버퍼를 포함할 수 있다. 내부 버퍼는 저장 장치(2200)의 쓰기 버퍼 또는 읽기 버퍼로써 사용될 수 있다.
예시적으로, 데이터 영역 관리 회로(2212), 쓰기 관리 회로(2213), 및 읽기 관리 회로(2214)는 하드웨어 형태로 구현되며, 제1 유형의 작업을 관리하도록 구성될 수 있다. 예시적으로, 제1 유형의 작업은 데이터 쓰기, 데이터 읽기 등과 같은 단순 작업을 포함할 수 있다. 또는 제1 유형의 작업은 제1 처리 단위(예를 들어, 페이지 단위)에 대한 작업을 포함할 수 있다.
예시적으로, 제1 유형의 작업과 다른 제2 유형의 작업은 프로세서(2211)에 의해 구동되는 소프트웨어(SW) 및/또는 펌웨어(FW)에 의해 처리될 수 있다. 예시적으로, 제2 유형의 작업은 불휘발성 메모리 장치들(2220)에 대한 가비지 콜렉션, 웨어 레벨링, 리드 리클레임, 리드 리프레쉬, 오류 정정 등과 같은 유지 관리 작업을 포함할 수 있다. 예시적으로 제2 유형의 작업은 제1 처리 단위와 다른 제2 처리 단위(예를 들어, 메모리 블록 단위)에 대한 작업을 포함할 수 있다.
예시적으로, 데이터 읽기 또는 데이터 쓰기와 같은 제1 유형의 작업들(즉, 단순 작업들)이 하드웨어 회로에 의해 수행되고, 유지 관리 동작이 프로세서(2211)에 의해 실행되는 프로세서(2211)에 의해 구동되는 소프트웨어(SW) 및/또는 펌웨어(FW)에 의해 처리됨으로써, 저장 장치(2200)의 전반적인 성능이 향상될 수 있다.
예시적으로, 쓰기 관리 회로(2213) 및 읽기 관리 회로(2214)는 도 1 내지 도 19를 참조하여 설명된 동작 방법들을 기반으로 동작할 수 있다. 예를 들어, 쓰기 관리 회로(2213)는 호스트(2100)로부터 쓰기 데이터를 수신한 이후에 쓰기 완료를 호스트(2100)로 전송하고, 쓰기 데이터를 불휘발성 메모리 장치들(2220)로 전송한 이후에, 내부 버퍼를 해제하도록 구성될 수 있다. 또한, 쓰기 관리 회로(2213)는 쓰기 데이터를 불휘발성 메모리 장치들(2220)로 전송하면서, 쓰기 데이터를 버퍼 메모리(2230)(또는 호스트(2100)의 HBM)로 전송하거나 또는 패리티를 생성함으로써, 쓰기 데이터에 대한 신뢰성을 확보할 수 있다.
컨트롤러(2210)는 호스트 인터페이스 계층(2215)을 통해 호스트(2100)와 통신할 수 있다. 예를 들어, 호스트 인터페이스 계층(2215)은 호스트(2100)로부터 수신되는 커맨드 및 데이터를 컨트롤러(2210)에서 처리되는 포맷으로 변환할 수 있고, 그 역으로도 변환할 수 있다. 컨트롤러(2210)는 메모리 인터페이스 계층(2216)을 통해 불휘발성 메모리 장치들(2220)과 통신할 수 있다. 예를 들어, 메모리 인터페이스 계층(2216)은 쓰기 데이터 및 관련 커맨드를 불휘발성 메모리 장치들(2220)에서 식별 가능한 포맷으로 변환할 수 있고, 그 역으로도 변환할 수 있다.
예시적으로, 호스트 인터페이스 계층(2215) 및 메모리 인터페이스 계층(2216)은 데이터 또는 정보를 컨트롤러(2210)에서 사용되는 포맷으로 변환하기 위한 패킷화기(packetizer) 및 디패킷화기(depacketizer)를 포함할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 사용자 시스템
110: 호스트
120: 저장 장치
121: 메모리 컨트롤러
121a: 제1 버퍼 메모리
122: 불휘발성 메모리 장치들
123: 제2 버퍼 메모리

Claims (20)

  1. 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법에 있어서,
    호스트로부터의 쓰기 데이터를 제1 버퍼 메모리에 저장하고, 쓰기 완료를 상기 호스트로 전송하는 단계;
    상기 제1 버퍼 메모리에 저장된 상기 쓰기 데이터를 상기 불휘발성 메모리 장치 및 제2 버퍼 메모리로 전송하고, 상기 제1 버퍼 메모리를 해제(release)하는 단계; 및
    상기 불휘발성 메모리 장치로부터 상기 쓰기 데이터에 대한 프로그램 성공 정보가 수신된 경우, 상기 제2 버퍼 메모리를 해제(release)하는 단계를 포함하고,
    상기 호스트로부터의 쓰기 데이터를 제1 버퍼 메모리에 저장하고, 쓰기 완료를 상기 호스트로 전송하는 단계는,
    상기 불휘발성 메모리 장치로부터 상기 프로그램 성공 정보를 수신하기 이전에 상기 쓰기 완료를 상기 호스트로 전송하는 단계를 포함하는 동작 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제1 버퍼 메모리에 저장된 상기 쓰기 데이터를 불휘발성 메모리 장치 및 제2 버퍼 메모리로 전송하고, 상기 제1 버퍼 메모리를 해제하는 단계는,
    상기 불휘발성 메모리 장치로부터 상기 프로그램 성공 정보를 수신하기 이전에 상기 제1 버퍼 메모리를 해제하는 단계를 포함하는 동작 방법.
  4. 제 1 항에 있어서,
    상기 불휘발성 메모리 장치로부터 상기 쓰기 데이터에 대한 프로그램 페일 정보가 수신된 경우, 상기 제2 버퍼 메모리에 저장된 상기 쓰기 데이터를 상기 제1 버퍼 메모리로 복사하는 단계를 더 포함하는 동작 방법.
  5. 제 4 항에 있어서,
    상기 제1 버퍼 메모리로 복사된 상기 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하는 단계를 더 포함하는 동작 방법.
  6. 제 1 항에 있어서,
    상기 제1 버퍼 메모리는 상기 메모리 컨트롤러에 포함되고, 상기 제2 버퍼 메모리는 상기 메모리 컨트롤러 외부에 위치하는 동작 방법.
  7. 제 1 항에 있어서,
    상기 제2 버퍼 메모리는 상기 호스트에 포함된 호스트 버퍼 메모리(HBM; Host Buffer Memory)인 동작 방법.
  8. 제 1 항에 있어서,
    호스트로부터의 쓰기 데이터를 제1 버퍼 메모리에 저장하고, 쓰기 완료를 상기 호스트로 전송하는 단계는:
    상기 호스트로부터 상기 쓰기 데이터를 상기 제1 버퍼 메모리에 저장하는 단계; 및
    상기 쓰기 데이터가 상기 제1 버퍼 메모리에 저장된 이후에 상기 쓰기 완료를 상기 호스트로 전송하는 단계를 포함하고,
    상기 호스트로부터 상기 쓰기 데이터를 상기 제1 버퍼 메모리에 저장하는 단계는 상기 메모리 컨트롤러에 포함된 제1 직접 메모리 접근(DMA; Direct Memory Access) 엔진에 의해 수행되는 동작 방법.
  9. 제 8 항에 있어서,
    상기 제1 버퍼 메모리에 저장된 상기 쓰기 데이터를 불휘발성 메모리 장치 및 제2 버퍼 메모리로 전송하고, 상기 제1 버퍼 메모리를 해제하는 단계는,
    상기 제1 버퍼 메모리에 저장된 상기 쓰기 데이터를 상기 불휘발성 메모리 및 상기 제2 버퍼 메모리로 전송하는 단계; 및
    상기 쓰기 데이터가 상기 불휘발성 메모리 장치 및 상기 제2 버퍼 메모리로 전송된 이후에, 상기 제1 버퍼 메모리를 해제하는 단계를 포함하고,
    상기 제1 버퍼 메모리에 저장된 상기 쓰기 데이터를 상기 불휘발성 메모리 및 상기 제2 버퍼 메모리로 전송하는 단계는 상기 메모리 컨트롤러에 포함된 제2 DMA 엔진에 의해 수행되는 동작 방법.
  10. 제 1 항에 있어서,
    상기 호스트로부터 수신되는 상기 쓰기 데이터는 상기 호스트에 의해 관리되는 데이터 단위이고, 상기 불휘발성 메모리 장치 및 상기 제2 버퍼 메모리로 전송되는 상기 쓰기 데이터는 상기 불휘발성 메모리 장치의 프로그램 단위인 동작 방법.
  11. 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법에 있어서,
    호스트로부터의 복수의 쓰기 데이터를 제1 버퍼 메모리에 저장하고, 쓰기 완료를 상기 호스트로 전송하는 단계;
    상기 제1 버퍼 메모리에 저장된 상기 복수의 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하고, 상기 복수의 쓰기 데이터에 대한 패리티를 생성하여 상기 패리티를 제2 버퍼 메모리에 저장하고, 상기 제1 버퍼 메모리를 해제(release)하는 단계; 및
    상기 불휘발성 메모리 장치로부터 상기 복수의 쓰기 데이터에 대한 프로그램 성공 정보가 수신된 경우, 상기 제2 버퍼 메모리를 해제(release)하는 단계를 포함하고,
    호스트로부터의 복수의 쓰기 데이터를 제1 버퍼 메모리에 저장하고, 쓰기 완료를 상기 호스트로 전송하는 단계는:
    상기 호스트로부터 복수의 쓰기 데이터 각각이 상기 제1 버퍼 메모리에 저장될 때마다 복수의 쓰기 데이터 각각에 대응하는 쓰기 완료를 상기 호스트로 전송하는 단계를 포함하는 동작 방법.
  12. 삭제
  13. 제 11 항에 있어서,
    상기 제1 버퍼 메모리에 저장된 상기 복수의 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하고, 상기 복수의 쓰기 데이터에 대한 패리티를 생성하여 상기 패리티를 제2 버퍼 메모리에 저장하고, 상기 제1 버퍼 메모리를 해제하는 단계는:
    상기 제1 버퍼 메모리에 저장된 상기 복수의 쓰기 데이터를 포함하는 복수의 프로그램 데이터를 상기 불휘발성 메모리 장치로 전송하는 단계; 및
    상기 복수의 프로그램 데이터에 대한 패리티를 생성하여 상기 생성된 패리티를 상기 제2 버퍼 메모리에 저장하는 단계를 포함하되,
    상기 복수의 쓰기 데이터 각각의 크기는 상기 복수의 프로그램 데이터 각각의 크기보다 작고, 상기 패리티의 크기는 상기 복수의 프로그램 데이터 각각의 크기와 동일한 동작 방법.
  14. 제 13 항에 있어서,
    상기 복수의 프로그램 데이터에 대한 패리티를 생성하여 상기 생성된 패리티를 상기 제2 버퍼 메모리에 저장하는 단계는,
    상기 복수의 프로그램 데이터가 상기 불휘발성 메모리 장치로 전송되는 도중에, 온-더-플라이 방식으로 상기 복수의 프로그램 데이터에 대한 패리티를 생성하는 단계를 포함하는 동작 방법.
  15. 제 11 항에 있어서,
    상기 불휘발성 메모리 장치로부터 상기 복수의 쓰기 데이터 중 적어도 하나의 쓰기 데이터에 대한 프로그램 페일 정보가 수신된 경우, 상기 제2 버퍼 메모리에 저장된 패리티 및 상기 복수의 쓰기 데이터 중 상기 적어도 하나의 쓰기 데이터를 제외한 나머지 쓰기 데이터를 기반으로 상기 적어도 하나의 쓰기 데이터를 복원하는 단계; 및
    상기 복원된 적어도 하나의 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하는 단계를 더 포함하는 동작 방법.
  16. 제1 버퍼 메모리 및 불휘발성 메모리 장치를 포함하는 저장 장치 및 제2 버퍼 메모리를 포함하고 상기 저장 장치를 제어하도록 구성되는 호스트를 포함하는 사용자 장치의 동작 방법에 있어서,
    상기 호스트가 상기 제2 버퍼 메모리에 쓰기 데이터를 저장하고, 상기 저장 장치로 상기 쓰기 데이터를 전송하는 단계;
    상기 저장 장치가 상기 쓰기 데이터를 상기 제1 버퍼 메모리에 저장하고, 상기 호스트로 쓰기 완료를 전송하는 단계;
    상기 저장 장치가 상기 제1 버퍼 메모리에 저장된 상기 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하고, 상기 제1 버퍼 메모리를 해제(release)하는 단계; 및
    상기 불휘발성 메모리 장치가 상기 쓰기 데이터를 정상적으로 프로그램한 경우, 상기 저장 장치가 상기 제2 버퍼 메모리를 해제(release)하는 단계를 포함하는 동작 방법.
  17. 제 16 항에 있어서,
    상기 호스트가 상기 제2 버퍼 메모리에 쓰기 데이터를 저장하고, 상기 저장 장치로 상기 쓰기 데이터를 전송하는 단계는,
    상기 호스트가 상기 쓰기 데이터가 저장된 상기 제2 버퍼 메모리에 대한 포인터 정보를 상기 저장 장치로 전송하는 단계를 포함하는 동작 방법.
  18. 제 17 항에 있어서,
    상기 불휘발성 메모리 장치가 상기 쓰기 데이터를 정상적으로 프로그램한 경우, 상기 저장 장치가 상기 제2 버퍼 메모리를 해제하는 단계는,
    상기 저장 장치가 상기 포인터 정보를 기반으로 상기 제2 버퍼 메모리를 해제하는 단계를 포함하는 동작 방법.
  19. 제 17 항에 있어서,
    상기 불휘발성 메모리 장치가 상기 쓰기 데이터를 정상적으로 프로그램하지 못한 경우, 상기 저장 장치가 상기 포인터 정보를 기반으로 상기 제2 버퍼 메모리를 액세스하여 상기 쓰기 데이터를 읽는 단계; 및
    상기 읽은 쓰기 데이터 상기 불휘발성 메모리 장치에 저장되도록 상기 저장 장치가 상기 읽은 쓰기 데이터를 상기 불휘발성 메모리 장치로 전송하는 단계를 더 포함하는 동작 방법.
  20. 제 16 항에 있어서,
    상기 불휘발성 메모리 장치가 상기 쓰기 데이터에 대한 프로그램을 완료하기 이전에, 상기 저장 장치가 상기 쓰기 완료를 전송하는 단계 및 상기 저장 장치가 상기 제1 버퍼 메모리를 해제하는 단계가 수행되는 동작 방법.


KR1020170084198A 2017-07-03 2017-07-03 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법 KR102398186B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170084198A KR102398186B1 (ko) 2017-07-03 2017-07-03 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
US15/871,283 US10649898B2 (en) 2017-07-03 2018-01-15 Memory system, memory controller for memory system, operation method of memory controller, and operation method of user device including memory device
DE102018110957.1A DE102018110957A1 (de) 2017-07-03 2018-05-08 Speichersystem, Speichersteuerung für ein Speichersystem, Betriebsverfahren einer Speichersteuerung und Betriebsverfahren einer Benutzervorrichtung mit einem Speichersystem
CN201810714290.4A CN109213440B (zh) 2017-07-03 2018-07-03 存储器系统、存储器控制器及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170084198A KR102398186B1 (ko) 2017-07-03 2017-07-03 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190004400A KR20190004400A (ko) 2019-01-14
KR102398186B1 true KR102398186B1 (ko) 2022-05-17

Family

ID=64738938

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170084198A KR102398186B1 (ko) 2017-07-03 2017-07-03 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법

Country Status (3)

Country Link
US (1) US10649898B2 (ko)
KR (1) KR102398186B1 (ko)
CN (1) CN109213440B (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019133391A (ja) * 2018-01-31 2019-08-08 東芝メモリ株式会社 メモリシステムおよび制御方法
JP6693547B2 (ja) * 2018-09-28 2020-05-13 ダイキン工業株式会社 情報送信装置および機器管理システム
US11113006B2 (en) * 2019-05-06 2021-09-07 Micron Technology, Inc. Dynamic data placement for collision avoidance among concurrent write streams
US11113198B2 (en) 2019-05-06 2021-09-07 Micron Technology, Inc. Timed data transfer between a host system and a memory sub-system
KR20210013483A (ko) 2019-07-26 2021-02-04 삼성전자주식회사 불휘발성 메모리 모듈을 포함하는 스토리지 시스템 및 불휘발성 메모리 모듈의 동작 방법
KR102088944B1 (ko) * 2019-10-01 2020-05-26 주식회사 파두 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
KR102088945B1 (ko) * 2019-10-11 2020-04-24 주식회사 파두 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
US11205473B2 (en) * 2020-02-04 2021-12-21 Western Digital Technologies, Inc. Dual SLC/QLC programming and resource releasing
TWI755739B (zh) * 2020-05-26 2022-02-21 慧榮科技股份有限公司 記憶體控制器與資料處理方法
KR20220029903A (ko) 2020-09-02 2022-03-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20220179593A1 (en) * 2020-10-02 2022-06-09 Western Digital Technologies, Inc. DRAM-Less SSD With Secure HMB For Low Latency
KR20220053973A (ko) * 2020-10-23 2022-05-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
JP2022143278A (ja) 2021-03-17 2022-10-03 キオクシア株式会社 メモリシステム
CN112947869A (zh) * 2021-04-25 2021-06-11 联芸科技(杭州)有限公司 固态硬盘及写操作方法
KR102351237B1 (ko) * 2021-04-29 2022-01-13 삼성전자주식회사 메모리 저장 장치 및 통신 시스템
JP2023037883A (ja) * 2021-09-06 2023-03-16 キオクシア株式会社 情報処理装置
KR20230043408A (ko) 2021-09-24 2023-03-31 삼성전자주식회사 메모리 컨트롤러 및 스토리지 장치

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4881856B2 (ja) 2005-03-28 2012-02-22 パナソニック株式会社 記憶装置
US20070297433A1 (en) * 2006-06-26 2007-12-27 Mediatek Inc. Method and apparatus for double buffering
US20080082750A1 (en) * 2006-09-28 2008-04-03 Okin Kenneth A Methods of communicating to, memory modules in a memory channel
WO2008101316A1 (en) 2007-02-22 2008-08-28 Mosaid Technologies Incorporated Apparatus and method for using a page buffer of a memory device as a temporary cache
KR100823175B1 (ko) 2007-02-27 2008-04-18 삼성전자주식회사 프로그램 성능을 향상시킬 수 있는 플래시 메모리 장치 및그것을 포함한 메모리 시스템
US8880778B2 (en) 2010-05-13 2014-11-04 Micron Technology, Inc. Memory buffer having accessible information after a program-fail
KR101739556B1 (ko) * 2010-11-15 2017-05-24 삼성전자주식회사 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법
US9076530B2 (en) * 2013-02-07 2015-07-07 Seagate Technology Llc Non-volatile write buffer data retention pending scheduled verification
US9170939B1 (en) 2013-09-26 2015-10-27 Western Digital Technologies, Inc. Early de-allocation of write buffer in an SSD
KR102147993B1 (ko) * 2013-11-14 2020-08-25 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US9454551B2 (en) 2014-03-13 2016-09-27 NXGN Data, Inc. System and method for management of garbage collection operation in a solid state drive
US9251054B2 (en) * 2014-03-27 2016-02-02 International Business Machines Corporation Implementing enhanced reliability of systems utilizing dual port DRAM
KR102319402B1 (ko) 2015-06-30 2021-11-01 에스케이하이닉스 주식회사 복수의 채널들을 통해 반도체 메모리 장치들을 제어하는 메모리 시스템
CN106681652B (zh) * 2016-08-26 2019-11-19 合肥兆芯电子有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
공개특허공보 제10-2012-0052028호(2012.05.23.) 1부*
공개특허공보 제10-2015-0055882호(2015.05.22.) 1부*

Also Published As

Publication number Publication date
US20190004949A1 (en) 2019-01-03
CN109213440A (zh) 2019-01-15
US10649898B2 (en) 2020-05-12
KR20190004400A (ko) 2019-01-14
CN109213440B (zh) 2023-05-09

Similar Documents

Publication Publication Date Title
KR102398186B1 (ko) 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
KR102580123B1 (ko) Raid 스토리지 장치 및 그것의 관리 방법
US9697116B2 (en) Storage system and writing method thereof
US8996959B2 (en) Adaptive copy-back method and storage device using same
US10127166B2 (en) Data storage controller with multiple pipelines
CN111240586A (zh) 存储器系统及其操作方法
US20160231941A1 (en) Solid state memory (ssm), computer system including an ssm, and method of operating an ssm
CN109426449B (zh) 存储器系统及其操作方法
KR101993704B1 (ko) 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법
KR102233400B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20100091379A (ko) 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법
US11861223B2 (en) Memory controller and storage device for scheduling addresses
US11775223B2 (en) Memory controller and storage device including 1HE same
US20210279127A1 (en) Memory controller and method of operating the same
US20220269602A1 (en) Storage device and storage system including the same
CN110968522A (zh) 存储器系统及其操作方法、包括存储器系统的数据库系统
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN112612639A (zh) 操作存储器系统的方法、操作主机的方法和计算系统
CN114764396A (zh) 数据存储装置及其操作方法
US11281381B2 (en) Storage node of distributed storage system and method of operating the same
CN115390747A (zh) 存储设备及其操作方法
KR20220063648A (ko) 메모리 장치, 저장 장치 및 메모리 컨트롤러의 동작 방법
KR20220076803A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102583244B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20220171707A1 (en) Storage device and operating method thereof

Legal Events

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