KR20230072886A - 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법 - Google Patents

저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법 Download PDF

Info

Publication number
KR20230072886A
KR20230072886A KR1020210159566A KR20210159566A KR20230072886A KR 20230072886 A KR20230072886 A KR 20230072886A KR 1020210159566 A KR1020210159566 A KR 1020210159566A KR 20210159566 A KR20210159566 A KR 20210159566A KR 20230072886 A KR20230072886 A KR 20230072886A
Authority
KR
South Korea
Prior art keywords
data
memory
storage space
memory device
write data
Prior art date
Application number
KR1020210159566A
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 KR1020210159566A priority Critical patent/KR20230072886A/ko
Priority to US17/828,443 priority patent/US20230153032A1/en
Priority to CN202210766947.8A priority patent/CN116136739A/zh
Priority to TW111135317A priority patent/TW202322129A/zh
Priority to DE102022210344.0A priority patent/DE102022210344A1/de
Publication of KR20230072886A publication Critical patent/KR20230072886A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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]

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 기술은 적어도 하나의 저장 공간을 포함하는 메모리 장치 및 외부 장치에서 전달된 쓰기 데이터와 상기 메모리 장치에 저장된 데이터에 관한 메타 데이터를 구분하여, 상기 저장 공간의 동작 상태에 대응하여 상기 쓰기 데이터를 전달하기 위한 버퍼에 포함시키고 상기 메타 데이터는 상기 동작 상태와 관련 없이 상기 버퍼에 포함시키며, 상기 버퍼에 포함된 상기 쓰기 데이터 혹은 상기 메타 데이터를 상기 메모리 장치로 전달하는 컨트롤러를 포함하는 메모리 시스템을 제공한다.

Description

저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법{APPARATUS AND METHOD FOR IMPROVING DATA INPUT/OUTPUT PERFORMANCE OF STORAGE}
본 발명은 저장 장치 및 저장 장치를 포함하는 데이터 처리 시스템에 관한 것으로서, 구체적으로 존단위 네임스페이스(zoned namespace)를 사용하는 데이터 처리 시스템에서 데이터를 입출력하는 장치와 방법에 관한 것이다.
데이터를 저장하는 저장 장치의 성능은 보다 많은 데이터를 저장하는지, 보다 빠르게 데이터를 입출력 하는지에 따라 결정될 수 있다. 시스템 반도체 장치는 데이터 연산, 제어 등의 정보를 처리하는 역할을 수행하고, 메모리 반도체 장치는 데이터를 저장하는 역할을 수행한다. 메모리 반도체 장치는 데이터를 임시 저장하기 위해 사용되는 휘발성(volatile) 메모리 장치와 데이터를 영구 저장하기 위해 사용되는 비휘발성(non-volatile) 메모리 장치를 포함할 수 있다.
자기 디스크와 기계적인 구동장치(예, mechanical arm)을 포함하는 하드 디스크와 비교하면, 비휘발성 메모리 장치는 반도체 공정 기술의 발달로 작은 면적에 많은 데이터를 저장할 수 있을 뿐만 아니라 기계적인 구동장치를 사용할 필요가 없어 데이터를 액세스하는 속도가 빠르고 전력 소모가 적을 수 있다. 이러한 장점을 갖는 비휘발성 메모리 장치를 포함하는 메모리 시스템의 예로서, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등이 있다.
본 발명의 일 실시예는 메모리 시스템의 복잡도 및 성능 저하를 피하고, 메모리 장치의 사용 효율을 개선하여, 메모리 장치에 저장되는 데이터를 안전하게 보호하고 신속하게 처리할 수 있는 메모리 시스템, 데이터 처리 시스템, 혹은 그것의 동작 방법을 제공할 수 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시 예들은 메모리 시스템, 메모리 시스템에 포함되는 컨트롤러 혹은 메모리 시스템을 포함하는 데이터 처리 장치를 제공할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 적어도 하나의 저장 공간을 포함하는 메모리 장치; 및 외부 장치에서 전달된 쓰기 데이터와 상기 메모리 장치에 저장된 데이터에 관한 메타 데이터를 구분하여, 상기 저장 공간의 동작 상태에 대응하여 상기 쓰기 데이터를 전달하기 위한 버퍼에 포함시키고 상기 메타 데이터는 상기 동작 상태와 관련 없이 상기 버퍼에 포함시키며, 상기 버퍼에 포함된 상기 쓰기 데이터 혹은 상기 메타 데이터를 상기 메모리 장치로 전달하는 컨트롤러를 포함할 수 있다.
본 발명의 다른 실시예에 따른 메모리 시스템의 동작 방법은 적어도 하나의 저장 공간을 포함하는 메모리 장치에 외부 장치에서 전달된 쓰기 데이터와 상기 메모리 장치에 저장된 데이터에 관한 메타 데이터를 구분하는 단계; 상기 저장 공간의 동작 상태에 대응하여 상기 쓰기 데이터를 전달하기 위한 버퍼에 포함시키고 상기 메타 데이터는 상기 동작 상태와 관련 없이 상기 버퍼에 포함시키는 단계; 및 상기 버퍼에 포함된 상기 쓰기 데이터 혹은 상기 메타 데이터를 상기 메모리 장치로 전송하는 단계를 포함할 수 있다.
본 발명의 다른 실시예에 따른 메모리 시스템은 복수의 블록 혹은 복수의 다이를 포함하는 메모리 장치; 및 상기 복수의 블록 혹은 상기 복수의 다이를 복수의 존(zone) 각각에 할당하고, 호스트로부터 쓰기 데이터와 상기 쓰기 데이터에 대한 논리 주소를 수신하고, 상기 논리 주소에 대응하는 상기 복수의 존 중 하나의 존에 상기 쓰기 데이터를 전달하기 위해 상기 하나의 존에 대응하는 블록 혹은 다이에서 발생된 에러의 처리 여부에 대응하여 상기 블록 혹은 다이에 대응하는 버퍼에 상기 쓰기 데이터를 포함하며, 상기 메모리 장치에 저장된 데이터에 관한 메타 데이터를 전달하기 위해 상기 에러의 처리 여부와 관련없이 상기 버퍼에 상기 메타 데이터를 포함시키는 컨트롤러를 포함할 수 있다.
상기 본 발명의 양태들은 본 발명의 바람직한 실시예들 중 일부에 불과하며, 본원 발명의 기술적 특징들이 반영된 다양한 실시예들이 당해 기술분야의 통상적인 지식을 가진 자에 의해 이하 상술할 본 발명의 상세한 설명을 기반으로 도출되고 이해될 수 있다.
본 발명에 따른 장치에 대한 효과에 대해 설명하면 다음과 같다.
본 발명의 일 실시 예에 따른 메모리 시스템 혹은 데이터 처리 시스템은 존(Zone) 단위로 구분되는 네임스페이스(Namespace)를 지원하는 비휘발성 메모리 장치에서 오류로 인하여 프로그램 동작이 지연되는 것을 감소시킬 수 있다.
또한, 본 발명의 일 실시 예에 따른 메모리 시스템은 라이트 캐시(write cache)를 포함하지 않는 메모리 다이를 포함하는 메모리 장치에 존(Zone) 단위로 구분되는 네임스페이스(Namespace)에 대응하여 호스트 데이터를 저장할 수 있고, 호스트 데이터의 프로그램 동작의 속도를 개선할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 설명한다.
도 2는 본 발명의 다른 실시예에 따른 데이터 처리 시스템을 설명한다.
도 3은 본 발명의 다른 실시예에 따른 메모리 시스템을 설명한다.
도 4는 도 1~3에서 설명한 컨트롤러의 내부 계층을 설명한다.
도 5는 존(Zone) 단위로 구분되는 네임스페이스(Namespace)를 지원하는 메모리 시스템을 설명한다.
도 6은 존(Zone) 단위로 구분되는 네임스페이스(Namespace)를 지원하는 메모리 시스템의 동작을 설명한다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템의 동작 방법을 설명한다.
도 8은 메모리 다이의 동작 상태에 따른 프로그램 동작 방법의 제1예를 설명한다.
도 9는 메모리 다이의 동작 상태에 따른 프로그램 동작 방법의 제2예를 설명한다.
도 10은 메모리 다이의 동작 상태에 따른 프로그램 동작 방법의 제3예를 설명한다.
도 11은 프로그램 명령에 추가된 지시자에 따른 프로그램 동작 방법을 설명한다.
도 12는 메모리 다이의 동작 상태에 따른 프로그램 동작 방법의 효과를 설명한다.
도 13은 본 발명의 다른 실시예에 따른 메모리 시스템의 제1예를 설명한다.
도 14는 본 발명의 다른 실시예에 따른 메모리 시스템의 제2예를 설명한다.
도 15는 본 발명의 다른 실시예에 따른 메모리 시스템의 제3예를 설명한다.
도 16은 본 발명의 다른 실시예에 따른 메모리 시스템의 제4예를 설명한다.
도 17은 본 발명의 다른 실시예에 따른 메모리 시스템의 제5예를 설명한다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 설명한다.
도 1을 참조하면, 메모리 시스템(110)은 메모리 장치(150)와 컨트롤러(130)를 포함할 수 있다. 메모리 시스템(110) 내 메모리 장치(150)와 컨트롤러(130)는 물리적으로 구분되는 구성요소일 수 있다. 메모리 장치(150)와 컨트롤러(130)는 적어도 하나의 데이터 패스(data path)로 연결될 수 있다. 예를 들면, 데이터 패스는 채널(channel) 및/또는 웨이(way) 등으로 구성될 수 있다.
실시예에 따라, 메모리 장치(150)와 컨트롤러(130)는 기능적으로 구분되는 구성요소일 수 있다. 또한, 실시예에 따라, 메모리 장치(150)와 컨트롤러(130)는 하나의 칩(chip) 혹은 복수의 칩(chip)을 통해 구현될 수 있다.
실시예에 따라, 메모리 장치(150)는 복수의 다이(292, 294)를 포함할 수 있다. 메모리 다이(die)는 적어도 하나의 메모리 플레인을 포함할 수 있으며, 물리적으로 구분될 수 있는 기판 상에 구현되는 구성 요소의 집합으로 이해될 수 있다. 각 메모리 다이(die)는 컨트롤러(130)와 데이터 패스를 통해 연결될 수 있으며, 컨트롤러(130)와 데이터, 신호 등을 주고받기 위한 인터페이스를 포함할 수 있다.
실시예에 따라, 메모리 장치(150)는 복수의 메모리 플레인(plane)를 포함할 수 있다. 메모리 플레인은 적어도 하나의 메모리 블록을 포함할 수 있으며, 복수의 비휘발성 메모리 셀로 구성된 어레이를 제어할 수 있는 구동 회로 및 복수의 비휘발성 메모리 셀로 입력 혹은 복수의 비휘발성 메모리 셀로부터 출력되는 데이터를 임시 저장할 수 있는 버퍼를 포함하는 논리적 혹은 물리적인 파티션(partition)으로 이해할 수 있다.
복수의 다이(292, 294)는 복수의 메모리 블록(152, 154, 156, 도 2 참조)을 포함할 수 있다. 메모리 블록은 삭제 동작을 통해 함께 데이터가 제거되는 비휘발성 메모리 셀들의 그룹으로 이해할 수 있다. 도시되지 않았지만, 메모리 블록은 프로그램 동작 시 함께 데이터가 저장되거나 리드 동작 시 데이터를 함께 출력하는 비휘발성 메모리 셀들의 그룹인 페이지(page)를 포함할 수 있다. 예를 들면, 하나의 메모리 블록에는 복수의 페이지가 포함될 수 있다. 도 1에서 설명한 메모리 장치(150)는 메모리 시스템(110)의 동작 성능에 대응하여 내부 구성이 달라질 수 있다. 본 발명의 일 실시예는 도 1에서 설명한 내부 구성에 한정되지 않을 수 있다.
실시예에 따라, 메모리 장치(150)에 포함되는 복수의 메모리 블록 중 적어도 일부는 존(Zone) 단위로 구분되는 네임스페이스(Namespace) (이하, 존단위 네임스페이스(Zoned Namespace, ZNS)로 칭함)에 할당될 수 있다. 실시예에 따라, 컨트롤러(130)는 메모리 장치(150)에 포함된 모든 메모리 블록을 복수의 존단위 네임스페이스에 균등하게 할당할 수 있다. 이 경우, 존단위 네임스페이스에 할당된 복수의 메모리 블록에는 데이터를 저장하고 있는 메모리 블록과 데이터를 저장하지 않은 프리 메모리 블록이 포함될 수 있다.
또한, 실시예에 따라, 컨트롤러(130)는 메모리 장치(150)에 포함된 모든 메모리 블록 중 각각의 존단위 네임스페이스가 요구하는 저장 공간에 대응하는 일부만 할당할 수 있다. 가비지 컬렉션에 따라 메모리 블록의 할당이 해제되는 경우, 메모리 장치(150)에 포함된 메모리 블록 중 일부는 어느 존단위 네임스페이스에도 할당되지 않은 상태로 유지될 수 있다. 컨트롤러(130)는 외부 장치의 요청 혹은 입출력 동작을 수행하는 과정에서 필요에 따라 할당되지 않은 메모리 블록을 존단위 네임스페이스에 추가로 할당할 수 있다.
존단위 네임스페이스(Zoned Namespace, ZNS)는 네임스페이스(Namespace)를 존(Zone) 단위로 나눠 사용하는 것을 가리킨다. 여기서 네임스페이스는 논리 블록으로 포맷할 수 있는 비(非) 휘발성 메모리의 양(저장공간)을 의미할 수 있다. 존단위 네임스페이스가 적용된 메모리 시스템(110)에서는 데이터 입출력 동작이 일반적인 비휘발성 메모리 시스템과는 다르게 수행될 수 있다. 예를 들어, 외부 장치(예, 호스트(102), 도 2 내지 도 3 참조)로부터 전달된 데이터(예, 호스트 데이터)는 해당 데이터의 논리 주소에 대응하는 특정 존(zone)에 할당된 메모리 다이(292, 294)에 저장될 수 있다. 존단위 네임스페이스를 사용하는 메모리 시스템 혹은 데이터 처리 시스템은 복수의 존을 설정하고, 각 존에는 특정 범위의 논리 주소에 대응하는 데이터가 저장될 수 있다. 메모리 시스템(110)은 각 존에 메모리 블록 혹은 메모리 다이를 할당할 수 있다. 메모리 시스템(110)은 호스트 데이터를 호스트 데이터에 대응하는 논리 주소에 따라 정해질 수 있는 존(zone)에 순차적으로 저장할 수 있다.
존단위 네임스페이스가 적용된 메모리 시스템(110)은 메모리 장치(150) 내 적어도 하나의 메모리 다이(292, 294) 혹은 적어도 하나의 메모리 블록(152, 154, 156)을 각각의 존(zone)에 할당한다. 초기화된 존(zone)에는 쓰기 포인터가 존(zone)의 시작 위치에 위치할 수 있다. 여기서, 존(zone)의 시작 위치는 존(zone)에 할당된 메모리 다이 혹은 메모리 블록의 시작 위치를 가리킬 수 있다.
메모리 장치(150)에 데이터가 저장되면서, 각 존의 쓰기 포인터 위치는 자동으로 변경될 수 있다. 예를 들면, 각 존(zone)의 쓰기 포인터 현재 위치에서 해당 존에 저장된 데이터의 논리 주소(LBA)의 개수만큼 변경될 수 있다. 예를 들어, 제1 존에 저장되는 1~100의 논리 주소(LBA1 ~ LBA100)에 대응하는 데이터가 저장될 수 있다고 가정한다. 제5 논리 주소(LBA1)에 대응하는 데이터가 제1 존에 처음으로 저장되면, 제1 존의 쓰기 포인터는 다음 위치로 이동할 수 있다. 제10 논리주소(LBA10) 부터 제20 논리주소(LBA20)에 대응하는 데이터가 제1 존에 저장되면, 제1 존의 쓰기 포인터는 11개만큼 이동할 수 있다. 제1 존에 대응하는 논리 주소와 관련된 데이터는 제1 존에 순차적으로 저장될 수 있고, 제1 존에 저장되는 데이터의 양만큼 쓰기 포인터는 이동할 수 있다. 존을 사용하는 어플리케이션은 새로운 데이터를 저장할 때마다 다음 논리 주소를 사용하고, 해당 논리 주소에 대응하여 쓰기 포인터에 저장될 수 있다.
존단위 네임스페이스를 지원하는 메모리 시스템(110)은 여러 응용프로그램이 각자 정해진 존(zone)에 순차적으로 데이터를 저장하고, 여기서 존은 논리적인 공간과 더불어 실제 낸드블록에서도 나누어져 있고, 하나의 존 안에는 비슷한 데이터끼리 모여 있을 수 있다. 데이터들은 각 존에서 순차적으로 저장했다가 존 단위로 삭제되기 때문에 유효하지 않은 데이터인 가비지(Garbage)가 발생하지 않는다. 따라서, 존단위 네임스페이스를 지원하는 메모리 시스템(110)은 가비지 컬렉션(garbage collection)을 수행할 필요가 없어지면서, 메모리 시스템(110) 내 오버헤드(overhead)가 줄어들 수 있다.
또한, 외부 장치의 요청에 대응하여, 메모리 시스템(110)은 복수의 존(zones) 중 하나의 존(zone)을 재설정할 수 있다. 이 경우, 쓰기 포인터는 재설정된 존의 시작 위치로 설정될 수 있다. 실시예에 따라, 외부 장치의 요청에 대응하여, 메모리 시스템(110)은 복수의 존(zones) 전체에 대한 재설정을 수행할 수 있다(예, 로우 레벨 포맷, low level format). 이 경우, 복수의 존(zones)의 쓰기 포인터는 재설정될 수 있다.
컨트롤러(130)는 플래시 변환 계층(Flash Translation Layer(FTL), 240) 및 입출력 제어 모듈(260)을 포함할 수 있다. 컨트롤러(130)에 포함된 플래시 변환 계층(FTL, 240)은 외부 장치(예, 호스트(102), 도 2 내지 도 3 참조)로부터 전달된 데이터(예, 호스트 데이터)를 메모리 장치(150)에 저장하기 위한 데이터 처리 동작을 수행할 수 있다. 외부 장치가 사용하는 주소체계(예, 논리 주소)와 메모리 시스템(110)이 사용하는 주소체계(예, 물리 주소)가 상이하기 때문에, 플래시 변환 계층(FTL, 240)은 외부 장치가 전달한 데이터가 메모리 장치(150) 내 저장될 위치를 결정할 수 있다. 또한, 플래시 변환 계층(FTL, 240)은 메모리 장치(150)에 저장되는 데이터에 대한 서로 다른 주소 체계인 논리 주소와 물리 주소를 연결하는 맵 정보 혹은 맵 데이터를 생성할 수 있다.
입출력 제어 모듈(260)은 플래시 변환 계층(FTL, 240)에서 전달된 데이터를 메모리 장치(150)에 저장하기 위한 동작을 제어할 수 있다. 메모리 장치(150)는 복수의 메모리 다이(292, 294) 혹은 복수의 플레인을 포함할 수 있고, 입출력 성능의 향상을 위해 메모리 장치(150)의 데이터 입출력 동작은 병렬로 수행될 수 있다. 입출력 제어 모듈(260)은 복수의 메모리 다이(292, 294) 혹은 복수의 플레인에서 수행되는 데이터 입출력 동작을 스케줄링할 수 있다.
실시예에 따라, 입출력 제어 모듈(260)은 복수의 메모리 다이(292, 294) 혹은 복수의 플레인에 전달되는 데이터의 종류에 따라 다르게 제어할 수 있다. 전술한 바와 같이, 외부 장치인 호스트(102)로부터 입력된 데이터인 호스트 데이터는 해당 데이터의 논리 주소에 대응하는 존에 할당된 영역에 순차적으로 저장된다. 하지만, 플래시 변환 계층(FTL, 240)이 생성한 맵 정보 등과 같이 메모리 시스템(110)이 내부 동작의 제어를 위해 생성하여 관리하는 메타 데이터(metadata)는 호스트 데이터와 같은 제약으로부터 자유로울 수 있다. 메모리 시스템(110)은 메모리 장치(150) 내 메타 데이터를 기 설정된 위치 혹은 임의의 위치에 저장할 수 있다. 따라서, 입출력 제어 모듈(260)은 메모리 장치(150)에 전달되는 데이터가 호스트 데이터인지 메타 데이터인지에 따라 다르게 제어할 수 있다.
실시예에 따라, 컨트롤러(130) 내 입출력 제어 모듈(260)은 복수의 메모리 다이(292, 294) 혹은 복수의 플레인에 대응하는 버퍼를 포함할 수 있다. 버퍼는 큐(queue)와 같은 데이터 구조를 가질 수 있다. 입출력 제어 모듈(260)은 플래시 변환 계층(FTL, 240)으로부터 전달된 데이터를 버퍼에 포함시킬 지를 결정할 수 있다. 버퍼에 포함된 데이터는 순차적으로 복수의 메모리 다이(292, 294) 혹은 복수의 플레인에 전달될 수 있다.
실시예에 따라, 입출력 제어 모듈(260)은 도 2 내지 도 3에서 설명한 메모리 인터페이스(142)에 포함될 수 있다. 다른 실시예에서는 입출력 제어 모듈(260)은 도 3에서 설명한 플래시 변환 계층(FTL, 240)과 메모리 인터페이스(142) 사이에 배치될 수 있다.
본 발명의 일 실시예에 따른 메모리 시스템(110)은 존(Zone) 단위로 구분되는 네임스페이스(Namespace)를 지원하는 메모리 장치(150)에서 데이터 입출력 동작을 수행하는 과정에서 외부 장치(예, 호스트(102), 도 2 내지 도 3 참조)로부터 전달된 데이터(예, 호스트 데이터)를 논리 주소에 대응하는 존(zone)에 할당된 메모리 장치(150) 내 저장 공간에 순차적으로 저장하지만, 호스트 데이터가 아닌 메모리 시스템(110)이 생성한 데이터(예, 메타 데이터)는 호스트 데이터와 달리 메모리 장치(150) 내 임의의 위치 혹은 기 설정된 위치에 저장할 수 있는 장치와 방법을 제공할 수 있다. 호스트 데이터와 메타 데이터를 저장하는 과정에서, 메모리 시스템(110)은 호스트 데이터가 저장될 메모리 블록(152, 154, 156, 도 2 참조) 혹은 메모리 다이(292, 294)의 동작 상태, 에러의 발생 여부, 발생된 에러의 처리 여부에 대응하여 호스트 데이터의 프로그램 동작을 진행하거나 대기시킨다. 반면, 메모리 시스템(110)은 메타 데이터가 저장될 메모리 블록(152, 154, 156) 혹은 메모리 다이(292, 294)에서 발생한 에러를 확인하거나 처리하는 것과 관련없이 메타 데이터를 메모리 장치로 전달하여 프로그램이 진행되도록 할 수 있다.
예를 들어, 메모리 다이(292, 294)에 포함된 복수의 메모리 블록(152, 154, 156) 중 일부를 쓰기 데이터를 임시 저장할 수 있는 라이트 캐시 혹은 라이트 버퍼로 사용하는 경우, 메모리 장치(150)는 쓰기 요청에 대한 쓰기 완료를 보다 빠르게 전달할 수 있다. 이후, 데이터 입출력 동작 없는 유휴 시점에 라이트 캐시(write cache) 혹은 라이트 버퍼(write buffer)에 임시 저장된 데이터를 데이터 저장 공간으로 이동시키면서, 데이터 특성에 따라 저장되는 위치를 조정할 수도 있다. 또한, 데이터 저장 공간에 에러가 발생한 경우, 라이트 캐시 혹은 라이트 버퍼에 데이터를 임시 저장할 수도 있다. 하지만 존(Zone) 단위로 구분되는 네임스페이스(Namespace)를 지원하는 메모리 장치(150)에서는 호스트 데이터가 순차적으로 저장되기 때문에, 메모리 장치(150) 내 별도의 라이트 캐시(write cache)를 확보할 필요가 없다. 메모리 장치(150) 내 라이트 캐시가 불필요하기 때문에, 라이트 캐시로 할당되는 공간이 없어지면서 데이터 저장 공간이 더 커질 수 있다. 다만, 라이트 캐시(write cache) 혹은 라이트 버퍼(write buffer)가 없는 경우, 호스트 데이터를 데이터 저장 공간에 오류가 발생하면 해당 공간에 데이터를 프로그램하기 어려워질 수 있다. 다만, 호스트 데이터가 아닌 메타 데이터의 경우, 호스트 데이터와 같이 논리 주소에 대응하는 특정 존에 순차적으로 프로그램될 필요가 없으므로, 메모리 시스템(110) 내 컨트롤러(130)는 데이터 저장 공간에서의 오류 발생 혹은 오류 처리 여부와 관련 없이 메타 데이터를 메모리 장치(150)에 전달할 수 있다.
실시예에 따라, 메모리 시스템은 비휘발성 메모리 장치에 프로그램되는 데이터를 호스트 데이터인지 메타 데이터인지에 따라 프로그램 스케줄링을 상이하게 처리할 수 있다. 비휘발성 메모리 장치 내 에러가 발생하면, 비휘발성 메모리 장치의 통지에 대응하여 컨트롤러는 비휘발성 메모리 장치 내 에러가 발생했으므로 프로그램될 데이터의 전송을 차단할 수 있다. 에러가 발생한 경우, 컨트롤러는 호스트 데이터의 처리를 중단할 수 있지만 메타 데이터는 비휘발성 메모리 장치로 전달을 준비할 수 있다.
비휘발성 메모리 장치는 복수의 메모리 다이 혹은 복수의 메모리 플레인을 포함할 수 있으며, 컨트롤러는 메모리 다이 혹은 메모리 플레인에 대응하는 버퍼를 포함할 수 있다. 실시예에 따라, 버퍼는 큐(queue)와 같은 데이터 구조를 가질 수 있다. 컨트롤러는 비휘발성 메모리 장치에서의 오류 발생 여부 혹은 해당 오류의 처리/복구 여부에 대응하여 호스트 데이터를 버퍼에 추가할 수 있다. 호스트 데이터와 달리, 컨트롤러는 메타 데이터를 오류 발생 여부 혹은 해당 오류의 처리/복구 여부와 관련없이 버퍼에 추가할 수 있다. 비휘발성 메모리 장치에서 발생한 오류가 처리/복구된 후에는 버퍼에 저장된 데이터가 순차적으로 전달될 수 있다. 이를 통해, 호스트 데이터에 비해 메타 데이터는 비휘발성 메모리 장치로 우선적으로 전달될 수 있고, 비휘발성 메모리 장치는 해당 메타 데이터를 기 설정된 위치 혹은 임의의 위치에 프로그램할 수 있다. 비휘발성 메모리 장치에서 발생된 오류가 처리/복구된 후에, 컨트롤러가 비휘발성 메모리 장치에 저장하기 위한 데이터는 호스트 데이터만 남게 되고, 존(Zone) 단위로 구분되는 네임스페이스(Namespace)에 대응하는 위치에 순차적으로 저장할 수 있다. 이를 통해, 메모리 시스템은 오류로 인하여 프로그램 동작이 지연되는 것을 감소시킬 수 있다.
도 2를 참조하면, 데이터 처리 시스템(100)은 호스트(102) 및 메모리 시스템(110)을 포함한다. 예를 들면, 호스트(102)와 메모리 시스템(110)은 데이터 버스(data bus), 호스트 케이블(host cable) 등과 같은 데이터 전달 수단을 통해 연결되어, 데이터를 송수신할 수 있다.
호스트(102)는 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 비휴대용 전자 장치들을 포함할 수 있다. 예를 들어, 호스트(102)는 컴퓨팅 장치 혹은 유무선 전자 장치들을 포함할 수 있다.
또한, 호스트(102)는, 적어도 하나의 운영 시스템(OS: operating system)를 포함하며, 운영 시스템은, 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 여기서, 운영 시스템은, 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 예컨대, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 또한, 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있으며, 일 예로, 개인용 운영 시스템은 일반 사용자를 위한 서비스 제공 기능을 지원하도록 특성화된 시스템을 포함할 수 있고, 기업용 운영 시스템은 고성능을 확보 및 지원하도록 특성화된 시스템을 포함할 수 있다. 한편, 호스트(102)는 복수의 운영 시스템들을 포함할 수 있으며, 또한 사용자 요청(user request)에 상응한 메모리 시스템(110)과의 동작 수행을 위해 운영 시스템을 실행한다. 호스트(102)는 사용자 요청에 해당하는 복수의 커맨드들을 메모리 시스템(110)으로 전송하며, 메모리 시스템(110)에서는 복수의 커맨드들에 해당하는 동작들(즉, 사용자 요청에 상응하는 동작들)을 수행한다.
메모리 시스템(110) 내 컨트롤러(130)는 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어할 수 있다. 예를 들면, 컨트롤러(130)는 읽기 동작을 수행하여 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공할 수 있고, 쓰기 동작(프로그램 동작)을 수행하여 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장할 수 있다. 이러한 데이터 입출력 동작을 수행하기 위해, 컨트롤러(130)는 리드, 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다. 도 1에서 설명한 바와 같이, 호스트(102)는 복수의 어플리케이션(APPL1, APPL2, APPL3)을 실행할 수 있으며, 복수의 어플리케이션(APPL1, APPL2, APPL3) 각각에 적어도 하나의 존단위 네임스페이스(322)를 할당하여 메모리 시스템(110)에 데이터 입출력 동작을 지시할 수 있다.
실시예에 따라, 컨트롤러(130)는 호스트 인터페이스(132), 프로세서(134), 에러 정정부(138), 파워 관리 유닛(Power Management Unit, PMU)(140), 메모리 인터페이스(142), 및 메모리(144)를 포함할 수 있다. 도 2에서 설명한 컨트롤러(130)에 포함된 구성 요소들은 메모리 시스템(110)의 구현 형태, 동작 성능 등에 따라 달라질 수 있다. 예를 들면, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다. 컨트롤러(130)의 내부에 포함되는 구성 요소들은 메모리 시스템(110)의 구현 형태에 따라 추가되거나 제거될 수 있다.
호스트(102)와 메모리 시스템(110)은 약속된 규격에 대응하여 신호, 데이터 등을 송수신하기 위한 컨트롤러 혹은 인터페이스를 포함할 수 있다. 예를 들면, 메모리 시스템(110) 내 호스트 인터페이스(132)는 호스트(102)에 신호, 데이터 등을 송신하거나 호스트(102)로부터 전달되는 신호, 데이터 등을 수신할 수 있는 장치를 포함할 수 있다.
컨트롤러(130)에 포함된 호스트 인터페이스(132)는 호스트(102)로부터 전달되는 신호, 커맨드(command) 또는 데이터를 수신할 수 있다. 즉, 호스트(102)와 메모리 시스템(110)은 서로 약속된 규격을 통해 데이터를 송수신할 수 있다. 데이터를 송수신하기 위한 약속된 규격의 예로서 USB(Universal Serial Bus), MMC(Multi-Media Card), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), PCIE(Peripheral Component Interconnect Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜이 있다. 실시예에 따라, 호스트 인터페이스(132)는 호스트(102)와 데이터를 주고받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구현되거나 구동될 수 있다.
데이터를 송수신하기 위한 규격 중 하나인 IDE(Integrated Drive Electronics) 혹은 ATA(Advanced Technology Attachment)는 40개의 선이 병렬로 연결된 케이블을 사용하여 호스트(102)와 메모리 시스템(110) 간의 데이터의 송수신을 지원할 수 있다. 하나의 호스트(102)에 복수의 메모리 시스템(110)이 연결되는 경우, 복수의 메모리 시스템(110)이 연결되는 위치 혹은 딥스위치를 이용하여 복수의 메모리 시스템(110)을 마스터 혹은 슬레이브로 구분할 수 있다. 마스터로 설정된 메모리 시스템(110)이 주된 메모리 장치로 사용될 수 있다. IDE(ATA)는 Fast-ATA, ATAPI, EIDE(Enhanced IDE) 방식 등으로 발전해왔다.
SATA(Seral Advanced Technology Attachment, S-ATA)는 IDE(Integrated Drive Electronics) 장치의 접속 규격인 병렬 데이터 송수신 방식의 각종 ATA 규격과 호환성을 갖는 직렬 데이터 송수신 방식으로서, 연결선은 병렬 신호 40개에서 직렬 신호 6개로 줄일 수 있다. SATA는 IDE보다 데이터 송수신 속도가 빠르고, 데이터 송수신에 사용되는 호스트(102) 내 자원을 소모가 적은 이유로 널리 사용되어 왔다. SATA는 호스트(102)에 포함된 하나의 송수신 장치에 최대 30개의 외부 장치를 연결할 수 있다. 또한, SATA는 데이터 통신이 실행 중에도 외부 장치를 탈착할 수 있는 핫 플러깅을 지원하기 때문에, 호스트(102)에 전원이 공급된 상태에서도 유니버설 시리얼 버스(USB)처럼 메모리 시스템(110)을 추가 장치로서 연결하거나 분리할 수 있다. 예를 들어, eSATA 포트가 있는 장치의 경우, 호스트(102)에 메모리 시스템(110)을 외장 하드처럼 자유롭게 탈착할 수 있다.
SCSI(Small Computer System Interface)는 컴퓨터, 서버 등과 주변 장치를 연결하는 데 사용하는 직렬 연결 방식으로서, IDE 및 SATA와 같은 인터페이스에 비하여 전송 속도가 빠른 장점이 있다. SCSI에서는 호스트(102)와 복수의 주변 장치(예, 메모리 시스템(110)이 직렬로 연결되지만, 호스트(102)와 각 주변 장치 간 데이터 송수신은 병렬 데이터 송수신 방식으로 구현될 수 있다. SCSI에서는 호스트(102)에 메모리 시스템(110)과 같은 장치의 연결과 분리가 쉽다. SCSI는 호스트(102)에 포함된 하나의 송수신 장치에 15개의 외부 장치가 연결되는 것을 지원할 수 있다.
SAS(Serial Attached SCSI)는 SCSI의 직렬 데이터 송수신 버전으로 이해할 수 있다. SAS는 호스트(102)와 복수의 주변 장치가 직렬로 연결될 뿐만 아니라, 호스트(102)와 각 주변 장치간 데이터 송수신도 직렬 데이터 송수신 방식으로 수행될 수 있다. SAS는 많은 연결선을 포함하는 넓은 병렬 케이블 대신 시리얼 케이블로 연결하여 장비 관리가 쉽고 신뢰성과 성능이 개선될 수 있다. SAS는 호스트(102)에 포함된 하나의 송수신 장치에 최대 8개의 외부 장치를 연결할 수 있다.
NVMe(Non-volatile memory express)는 비휘발성 메모리 시스템(110)을 탑재한 서버, 컴퓨팅 장치 등의 호스트(102)의 성능 향상과 설계 유연성을 높일 수 있도록 만든 PCIe(Peripheral Component Interconnect Express, PCI Express) 인터페이스 기반의 프로토콜을 가리킬 수 있다. 여기서, PCIe는 컴퓨팅 장치와 같은 호스트(102)와 컴퓨팅 장치와 연결되는 주변 장치와 같은 메모리 시스템(110)을 연결하기 위한 슬롯(slot) 혹은 특정 케이블을 이용하여, 복수의 핀(예, 18개, 32개, 49개, 82개 등)과 적어도 하나의 배선(예, x1, x4, x8, x16 등)을 통해 배선 당 초당 수백 MB이상(예, 250 MB/s, 500 MB/s, 984.6250 MB/s, 1969 MB/s 등)의 대역폭을 가질 수 있다. 이를 통해, PCIe는 초당 수십~수백 Gbit의 대역폭을 구현할 수 있다. NVMe는 하드 디스크보다 더 빠른 속도로 동작하는 SSD와 같은 비휘발성 메모리 시스템(110)의 속도를 지원할 수 있다.
실시예에 따라, 호스트(102)와 메모리 시스템(110)은 범용 직렬 버스(Universal Serial Bus, USB)를 통해 연결될 수 있다. 범용 직렬 버스(USB)는 키보드, 마우스, 조이스틱, 프린터, 스캐너, 저장 장치, 모뎀, 화상 회의 카메라 등과 같은 주변 장치에 대한 경제적인 표준 연결을 보장하는 확장성이 뛰어난 핫 플러그형 플러그 앤 플레이 직렬 인터페이스를 포함할 수 있다. 호스트(102)에 포함된 하나의 송수신 장치에 메모리 시스템(110)과 같은 복수의 주변 장치를 연결할 수 있다.
도 2를 참조하면, 컨트롤러(130) 내 에러 정정부(error correction circuitry, 138)는 메모리 장치(150)에서 처리되는 데이터의 에러 비트를 정정할 수 있다. 실시예에 따라, 에러 정정부(138)는 ECC 인코더와 ECC 디코더를 포함할 수 있다. 여기서, ECC 인코더(ECC encoder)는 메모리 장치(150)에 프로그램될 데이터를 에러 정정 인코딩(error correction encoding)하여, 패리티(parity) 비트가 부가된 데이터를 생성할 수 있다. 패리티 비트가 부가된 데이터는 메모리 장치(150)에 저장될 수 있다. ECC 디코더(ECC decoder)는, 메모리 장치(150)에 저장된 데이터를 리드할 경우, 메모리 장치(150)로부터 리드된 데이터에 포함되는 에러를 검출 및 정정한다. ECC 유닛(138)은 메모리 장치(150)로부터 리드한 데이터를 에러 정정 디코딩(error correction decoding)한 후, 에러 정정 디코딩의 성공 여부를 판단하고, 판단 결과에 따라 지시 신호, 예컨대 에러 정정 성공(success)/실패(fail) 신호를 출력하며, ECC 인코딩 과정에서 생성된 패리티(parity) 비트를 사용하여 리드된 데이터의 에러 비트를 정정할 수 있다. ECC 유닛(138)은 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없으며, 에러 비트를 정정하지 못함에 상응하는 에러 정정 실패 신호를 출력할 수 있다.
실시예에 따라, 에러 정정부(138)는 LDPC(low density parity check) 코드(code), BCH(Bose, Chaudhri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며, 이에 한정되는 것은 아니다. 또한, 에러 정정부(138)는 데이터에 포함된 오류를 정정하기 위한 프로그램, 회로, 모듈, 시스템, 또는 장치를 포함할 수 있다.
PMU(140)는 메모리 시스템(110)에 인가되는 전원(예, 컨트롤러(130)에 공급되는 전압)을 감시하고, 컨트롤러(130)에 포함된 구성 요소들에 파워를 제공할 수 있다. PMU(140)는 전원의 온(On) 혹은 오프(Off)를 감지할 뿐만 아니라, 공급되는 전압 레벨이 불안정한 경우, 메모리 시스템(110)이 긴급하게 현재 상태를 백업할 수 있도록 트리거 신호를 생성할 수 있다. 실시예에 따라, PMU(140)는 긴급 상황에서 사용될 수 있는 전력을 축적할 수 있는 장치를 포함할 수 있다.
메모리 인터페이스(142)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(150) 간의 신호, 데이터를 송수신할 수 있다. 메모리 장치(150)가 플래시 메모리(예, NAND 플래시 메모리)일 경우, 메모리 인터페이스(142)는 NAND 플래시 컨트롤러(NAND Flash Controller, NFC)를 포함할 수 있다. 프로세서(134)의 제어에 따라, 메모리 인터페이스(142)는 메모리 장치(150)의 동작을 제어하기 위한 신호를 생성할 수 있고, 메모리 장치(150)에서 출력된 데이터를 수신하거나, 메모리 장치(150)에 저장될 데이터를 송신할 수 있다. 실시예에 따라, 메모리 인터페이스(142)는 메모리 장치(150) 간 데이터 입출력을 지원하며, 메모리 장치(150)와 데이터를 주고받는 영역으로 플래시 인터페이스 계층(FIL: Flash Interface Layer, 이하 'FIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구현되거나 구동될 수 있다.
실시예에 따라, 메모리 인터페이스(142)는 메모리 장치(150) 간 데이터 입출력을 위해 Open NAND Flash Interface(ONFi), 토글(toggle) 모드 등을 지원할 수 있다. 예를 들면, ONFi는 8-비트 혹은 16-비트의 단위 데이터에 대한 양방향(bidirectional) 송수신을 지원할 수 있는 신호선을 포함하는 데이터 경로(예, 채널, 웨이 등)를 사용할 수 있다. 컨트롤러(130)와 메모리 장치(150) 사이의 데이터 통신은 비동기식 SDR(Asynchronous Single Data Rate), 동기식 DDR(Synchronous Double Data Rate) 및 토글 DDR(Toggle Double Data Rate) 중 적어도 하나에 대한 인터페이스(interface)를 지원하는 장치를 통해 수행될 수 있다.
메모리(144)는 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리(working memory)로서, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위해 필요한 데이터 혹은 구동 중 발생한 데이터를 저장할 수 있다. 예를 들어, 메모리(144)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)로부터 제공된읽기 데이터를 호스트(102)로 제공하기 전 임시 저장할 수 있다. 또한, 컨트롤러(130)는 호스트(102)로부터 제공된 쓰기 데이터를 메모리 장치(150)에 저장하기 전, 메모리(144)에 임시 저정할 수 있다. 메모리 장치(150)의 리드, 라이트, 프로그램, 이레이즈(erase) 등의 동작을 제어할 경우, 메모리 시스템(110) 내 컨트롤러(130)와 메모리 장치(150) 사이에 전달되거나 발생하는 데이터는 메모리(144)에 저장될 수 있다.읽기 데이터 또는 쓰기 데이터뿐만 아니라, 메모리(144)는 호스트(102)와 메모리 장치(150) 간 데이터 라이트 및읽기 등의 동작을 수행하기 위해 필요한 정보(예, 맵 데이터, 읽기 명령, 프로그램 명령 등)를 저장할 수 있다. 메모리(144)는 명령큐(command queue), 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache),읽기 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다.
실시예에 따라, 메모리(144)는 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 아울러, 메모리(144)는, 도 2에서 도시한 바와 같이, 컨트롤러(130)의 내부에 존재하거나, 또는 컨트롤러(130)의 외부에 존재할 수 있으며, 이때 메모리 인터페이스를 통해 컨트롤러(130)로부터 데이터가 입출력되는 외부 휘발성 메모리로 구현될 수도 있다.
실시예에 따라, 메모리(144)에는 도 1에서 설명한 입출력 제어 모듈(260)에 의해 제어되는 버퍼를 위한 공간이 할당될 수 있다. 각 버퍼는 복수의 메모리 다이(292, 294) 혹은 복수의 플레인에 대응할 수 있으며, 메모리(144)에는 복수의 메모리 다이(292, 294) 혹은 복수의 플레인의 개수와 동일한 수의 버퍼가 설정될 수 있다.
프로세서(134)는 컨트롤러(130)의 동작을 제어할 수 있다. 호스트(102)로부터의 라이트 요청 또는읽기 요청에 응답하여, 프로세서(134)는 메모리 장치(150)에 대한 프로그램 동작 또는 읽기 동작을 수행할 수 있다. 프로세서(134)는, 컨트롤러(130)의 데이터 입출력 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동할 수 있다. 플래시 변환 계층(FTL)은 도 3에서 보다 구체적으로 설명한다. 실시예에 따라, 프로세서(134)는 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
또한, 실시예에 따라, 프로세서(134)는 서로 구별되는 연산 처리 영역인 코어(core)가 두 개 이상이 집적된 회로인 멀티 코어(multi-core) 프로세서로 구현될 수도 있다. 예를 들어, 멀티 코어 프로세서 내 복수의 코어는 복수의 플래시 변환 계층(FTL)을 각각 구동하면, 메모리 시스템(110)의 데이터 입출력 속도를 향상시킬 수 있다.
컨트롤러(130) 내 프로세서(134)는 호스트(102)로부터 입력된 커맨드에 대응하는 동작을 수행할 수도 있고, 호스트(102)와 같은 외부 장치에서 입력되는 커맨드와 무관하게 메모리 시스템(110)이 독립적으로 동작을 수행할 수도 있다. 통상적으로 호스트(102)로부터 전달된 커맨드에 대응하여 컨트롤러(130)가 수행하는 동작이 포그라운드(foreground) 동작으로 이해될 수 있고, 호스트(102)로부터 전달된 커맨드와 무관하게 컨트롤러(130)가 독립적으로 수행하는 동작이 백그라운드(background) 동작으로 이해될 수 있다. 포그라운드(foreground) 동작 또는 백그라운드(background) 동작으로, 컨트롤러(130)는 메모리 장치(150)에 저장된 데이터에 대한 읽기(read), 쓰기(write) 혹은 프로그램(program), 삭제(erase) 등을 위한 동작을 수행할 수도 있다. 또한, 호스트(102)로부터 전달된 셋 커맨드(set command)로 셋 파라미터 커맨드(set parameter command) 또는 셋 픽쳐 커맨드(set feature command)에 해당하는 파라미터 셋 동작 등도 포그라운드 동작으로 이해될 수 있다. 한편, 호스트(102)에서 전달되는 명령없이 백그라운드 동작으로, 메모리 장치(150)에 포함된 복수의 메모리 블록들(152, 154, 156)과 관련하여, 메모리 시스템(110)은 가비지 컬렉션(Garbage Collection, GC), 웨어 레벨링(Wear Leveling, WL), 배드 블록을 확인하여 처리하는 배드 블록 관리(bad block management) 등을 위한 동작들을 수행할 수도 있다.
메모리 장치(150)는 메모리 블록(152, 154, 156)에 적어도 하나의 전압을 공급할 수 있는 전압 공급 회로(170)를 포함할 수 있다. 전압 공급 회로(170)는 읽기 전압(Vrd), 프로그램 전압(Vprog), 패스 전압(Vpass) 혹은 삭제 전압(Vers)을 메모리 블록(152, 154, 156)에 포함된 비휘발성 메모리 셀에 공급할 수 있다. 예를 들어, 메모리 블록(152, 154, 156)에 포함된 비휘발성 메모리 셀에 저장된 데이터를 읽기 위한 리드 동작 중, 전압 공급 회로(170)는 선택된 비휘발성 메모리 셀에 읽기 전압(Vrd)을 공급할 수 있다. 메모리 블록(152, 154, 156)에 포함된 비휘발성 메모리 셀에 데이터를 저장하기 위한 프로그램 동작 중, 전압 공급 회로(170)는 선택된 비휘발성 메모리 셀에 프로그램 전압(Vprog)을 공급할 수 있다. 또한, 선택된 비휘발성 메모리 셀에 리드 동작 혹은 프로그램 동작 중, 전압 공급 회로(170)는 선택되지 않은 비휘발성 메모리 셀에 패스 전압(Vpass)을 공급할 수 있다. 메모리 블록(152, 154, 156)에 포함된 비휘발성 메모리 셀에 저장된 데이터를 삭제하기 위한 삭제 동작 중, 전압 공급 회로(170)는 메모리 블록에 삭제 전압(Vers)을 공급할 수 있다.
메모리 장치(150)는 메모리 블록(152, 154, 156)에 공급하는 다양한 전압에 대한 정보를 저장할 수 있다. 예를 들어, 메모리 블록(152, 154, 156) 내 비휘발성 메모리 셀이 멀티 비트의 데이터를 저장할 수 있는 경우, 멀티 비트의 데이터를 식별하기 위한 읽기 전압(Vrd)의 레벨은 다양할 수 있다. 메모리 장치(150)는 멀티 비트의 데이터에 대응하는 복수의 읽기 전압(Vrd)의 레벨을 포함하는 전압 테이블을 포함할 수 있다.
한편, 포그라운드(foreground) 동작 또는 백그라운드(background) 동작으로 실질적으로 유사한 동작이 수행될 수도 있다. 예를 들어, 메모리 시스템(110)이 호스트(102)의 명령에 대응하여 수동 가비지 컬렉션(Manual GC)을 수행하면 포그라운드 동작으로 이해될 수 있고, 메모리 시스템(110)이 독립적으로 자동 가비지 컬렉션(Auto GC)을 수행하면 백그라운드 동작으로 이해될 수 있다.
메모리 장치(150)가 비휘발성 메모리 셀을 포함하는 복수의 다이(dies) 혹은 복수의 칩(chips)으로 구성된 경우, 컨트롤러(130)는 메모리 시스템(110)의 성능 향상을 위해 호스트(102)에서 전달된 요청 혹은 명령들을 메모리 장치(150) 내 복수의 다이(dies) 혹은 복수의 칩(chips)에 나누어 동시에 처리할 수 있다. 컨트롤러(130) 내 메모리 인터페이스(142)은 메모리 장치(150) 내 복수의 다이(dies) 혹은 복수의 칩(chips)과 적어도 하나의 채널(channel)과 적어도 하나의 웨이(way)를 통해 연결될 수 있다. 컨트롤러(130)가 비휘발성 메모리 셀로 구성되는 복수의 페이지에 대응하는 요청 혹은 명령을 처리하기 위해 데이터를 각 채널 혹은 각 웨이를 통해 분산하여 저장할 경우, 해당 요청 혹은 명령에 대한 동작이 동시에 혹은 병렬로 수행될 수 있다. 이러한 처리 방식 혹은 방법을 인터리빙(interleaving) 방식으로 이해할 수 있다. 메모리 장치(150) 내 각 다이(die) 혹은 각 칩(chip)의 데이터 입출력 속도보다 인터리빙 방식으로 동작할 수 있는 메모리 시스템(110)의 데이터 입출력 속도는 빠를 수 있으므로, 메모리 시스템(110)의 데이터 입출력 성능을 향상시킬 수 있다.
컨트롤러(130)는 메모리 장치(150)에 포함된 복수의 메모리 다이들과 연결된 복수의 채널들 또는 웨이들의 상태를 확인할 수 있다. 예컨대, 채널들 또는 웨이들의 상태는 비지(busy) 상태, 레디(ready) 상태, 액티브(active) 상태, 아이들(idle) 상태, 정상(normal) 상태, 비정상(abnormal) 상태 등으로 구분할 수 있다. 컨트롤러(130)가 명령, 요청 및/또는 데이터가 전달되는 채널 또는 웨이에 대응하여, 저장되는 데이터의 물리 주소가 결정될 수 있다. 한편, 컨트롤러(130)는 메모리 디바이스 (150)로부터 전달된 디스크립터(descriptor)를 참조할 수 있다. 디스크립터는 미리 결정된 포맷 또는 구조를 갖는 데이터로서, 메모리 장치(150)에 관한 무언가를 기술하는 파라미터의 블록 또는 페이지를 포함할 수 있다. 예를 들어, 디스크립터는 장치 디스크립터, 구성 디스크립터, 유닛 디스크립터 등을 포함할 수 있다. 컨트롤러(130)는 명령 또는 데이터가 어떤 채널(들) 또는 방법(들)을 통해 교환되는지를 결정하기 위해 디스크립터를 참조하거나 사용한다.
메모리 시스템(110) 내 메모리 장치(150)는 복수의 메모리 블록(152, 154, 156)을 포함할 수 있다. 복수의 메모리 블록(152, 154, 156) 각각은 복수의 비휘발성 메모리 셀을 포함한다. 도시되지 않았지만, 실시예에 따라, 복수의 메모리 블록(152, 154, 156) 각각은 3차원(dimension) 입체 스택(stack) 구조를 가질 수 있다. 복수의 메모리 블록(152, 154, 156)은 도 1에서 설명한 존단위 네임스페이스(ZNS)에 할당된 메모리 블록에 대응할 수 있다.
메모리 장치(150)에 포함된 복수의 메모리 블록들(152, 154, 156)은, 하나의 메모리 셀에 저장 또는 표현할 수 있는 비트의 수에 따라, 단일 레벨 셀(Single Level Cell, SLC) 메모리 블록 및 멀티 레벨 셀(Multi Level Cell, MLC) 메모리 블록 등으로 구분될 수 있다. SLC 메모리 블록은 하나의 메모리 셀에 1 비트 데이터를 저장하는 비휘발성 메모리 셀들로 구현된 복수의 페이지들을 포함할 수 있다. MLC 메모리 블록에 비하여, SLC 메모리 블록은 데이터 연산 성능이 빠르며 내구성이 높을 수 있다. MLC 메모리 블록은 하나의 메모리 셀에 멀티 비트 데이터(예를 들면, 2 비트 또는 그 이상의 비트)를 저장하는 메모리 셀들로 구현된 복수의 페이지들을 포함할 수 있다 SLC 메모리 블록에 비하여, MLC 메모리 블록은 동일한 면적, 공간에 더 많은 데이터를 저장할 수 있다. 메모리 장치(150)에 포함된 MLC 메모리 블록은 하나의 메모리 셀에 2 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 더블 레벨 셀(Double Level Cell, DLC), 하나의 메모리 셀에 3 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 트리플 레벨 셀(Triple Level Cell, TLC), 하나의 메모리 셀에 4 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 쿼드러플 레벨 셀(Quadruple Level Cell, QLC), 또는 하나의 메모리 셀에 5 비트 또는 그 이상의 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 다중 레벨 셀(multiple level cell) 등을 포함할 수 있다.
실시예에 따라, 컨트롤러(130)는 메모리 시스템(150)에 포함된 멀티 레벨 셀(MLC) 메모리 블록을 하나의 메모리 셀에 1 비트 데이터를 저장하는 SLC 메모리 블록과 같이 운용할 수 있다. 예를 들어, 멀티 레벨 셀(MLC) 메모리 블록의 일부에서 다른 블록에 비하여 더 빠를 수 있는 데이터 입출력 속도를 활용하여, 컨트롤러(130)는 멀티 레벨 셀(MLC) 메모리 블록의 일부를 SLC 메모리 블록으로 운용함으로써 데이터를 임시로 저장하기 위한 버퍼(buffer)로 사용할 수도 있다. 이러한 방식으로 사용되는 버퍼(buffer)는 도 1에서 설명한 존단위 네임스페이스(ZNS)에 할당될 수 있다.
또한, 실시예에 따라, 컨트롤러(130)는 메모리 시스템(150)에 포함된 멀티 레벨 셀(MLC) 메모리 블록에 삭제 동작 없이 복수 번 데이터를 프로그램할 수 있다. 일반적으로, 비휘발성 메모리 셀은 덮어 쓰기(overwrite)를 지원하지 않는 특징을 가지고 있다. 하지만, 멀티 레벨 셀(MLC) 메모리 블록이 멀티 비트 데이터를 저장할 수 있는 특징을 이용하여, 컨트롤러(130)는 비휘발성 메모리 셀에 1비트 데이터를 복수 번 프로그램할 수도 있다. 이를 위해, 컨트롤러(130)는 비휘발성 메모리 셀에 데이터를 프로그램한 횟수를 별도의 동작 정보로 저장할 수 있고, 동일한 비휘발성 메모리 셀에 다시 프로그램하기 전 비휘발성 메모리 셀의 문턱 전압의 레벨을 균일하게 하기 위한 균일화(uniformity) 동작을 수행할 수도 있다.
실시예에 따라, 메모리 장치(150)는 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND 혹은 NOR 플래시 메모리(flash memory), 상변환 메모리(PCRAM: Phase Change Random Access Memory), 저항 메모리(RRAM(ReRAM): Resistive Random Access Memory), 강유전체 메모리(FRAM: Ferroelectrics Random Access Memory), 또는 스핀 주입 자기 메모리(STT-RAM(STT-MRAM): Spin Transfer Torque Magnetic Random Access Memory) 등과 같은 메모리 장치로 구현될 수 있다.
도 3은 본 발명의 다른 실시예에 따른 메모리 시스템을 설명한다.
도 3을 참조하면, 호스트(102) 및 메모리 장치(150)와 연동하는 컨트롤러(130)는 호스트 인터페이스(132), 플래시 변환 계층(FTL, 240), 메모리 인터페이스(142) 및 메모리(144)를 포함할 수 있다. 도 3에서 설명하는 플래시 변환 계층(Flash Translation Layer (FTL), 240)의 하나의 실시예로서, 플래시 변환 계층(FTL, 240)은 메모리 시스템(110)의 동작 성능에 따라 다양한 형태로 구현될 수 있다.
호스트 인터페이스(132)은 호스트(102)로부터 전달되는 명령, 데이터 등을 주고받기 위한 것이다. 예를 들어, 호스트 인터페이스 유닛(132)은 호스트(102)로부터 전달되는 명령, 데이터 등을 순차적으로 저장한 뒤, 저장된 순서에 따라 출력할 수 있는 명령큐(56), 명령큐(56)로부터 전달되는 명령, 데이터 등을 분류하거나 처리 순서를 조정할 수 있는 버퍼관리자(52), 및 버퍼관리자(52)로부터 전달된 명령, 데이터 등의 처리를 위한 이벤트를 순차적으로 전달하기 위한 이벤트큐(54)를 포함할 수 있다.
호스트(102)로부터 명령, 데이터는 동일한 특성의 복수개가 연속적으로 전달될 수도 있고, 서로 다른 특성의 명령, 데이터가 뒤 섞여 전달될 수도 있다. 예를 들어, 데이터를 읽기 위한 명령어가 복수 개 전달되거나, 읽기 및 프로그램 명령이 교번적으로 전달될 수도 있다. 호스트 인터페이스(132)은 호스트(102)로부터 전달된 명령, 데이터 등을 명령큐(56)에 먼저 순차적으로 저장한다. 이후, 호스트(102)로부터 전달된 명령, 데이터 등의 특성에 따라 컨트롤러(130)가 어떠한 동작을 수행할 지를 예측할 수 있으며, 이를 근거로 명령, 데이터 등의 처리 순서나 우선 순위를 결정할 수도 있다. 또한, 호스트(102)로부터 전달된 명령, 데이터 등의 특성에 따라, 호스트 인터페이스(132) 내 버퍼관리자(52)는 명령, 데이터 등을 메모리(144)에 저장할 지, 플래시 변환 계층(FTL, 240)으로 전달할 지도 결정할 수도 있다. 이벤트큐(54)는 호스트(102)로부터 전달된 명령, 데이터 등에 따라 메모리 시스템 혹은 컨트롤러(130)가 내부적으로 수행, 처리해야 하는 이벤트를 버퍼관리자(52)로부터 수신한 후, 수신된 순서대로 플래시 변환 계층(FTL, 240)에 전달할 수 있다.
실시예에 따라, 플래시 변환 계층(FTL, 240)은 이벤트규(54)로부터 수신된 이벤트를 관리하기 위한 호스트 요구 관리자(Host Request Manager(HRM), 46), 맵 데이터를 관리하는 맵데이터 관리자(Map Manger(MM), 44), 가비지 컬렉션 또는 웨어 레벨링을 수행하기 위한 상태 관리자(42), 메모리 장치 내 블록에 명령을 수행하기 위한 블록 관리자(48)를 포함할 수 있다. 도 3에서 도시되지 않았지만, 실시예에 따라, 도 2에서 설명한 ECC 유닛(138)은 플래시 변환 계층(FTL, 240)에 포함될 수 있다. 실시예에 따라, ECC 유닛(138)은 컨트롤러(130) 내 별도의 모듈, 회로, 또는 펌웨어 등으로 구현될 수도 있다.
호스트 요구 관리자(HRM, 46)는 맵데이터 관리자(MM, 44) 및 블록 관리자(48)를 사용하여 호스트 인터페이스(132)으로부터 수신된 읽기 및 프로그램 명령, 이벤트에 따른 요청을 처리할 수 있다. 호스트 요구 관리자(HRM, 46)는 전달된 요청의 논리 주소에 해당하는 물리 주소를 파악하기 위해 맵데이터 관리자(MM, 44)에 조회 요청을 보내고, 맵데이터 관리자(MM, 44)는 주소 변환(address translation)을 수행할 수 있다. 호스트 요구 관리자(HRM, 46)는 물리 주소에 대해 메모리 인터페이스 유닛(142)에 플래시 읽기 요청을 전송하여 읽기 요청을 처리할 수 있다. 한편, 호스트 요구 관리자(HRM, 46)는 먼저 블록 관리자(48)에 프로그램 요청을 전송함으로써 미기록된(데이터가 없는) 메모리 장치의 특정 페이지에 데이터를 프로그램한 다음, 맵데이터 관리자(MM, 44)에 프로그램 요청에 대한 맵 갱신(update) 요청을 전송함으로써 논리-물리 주소의 매핑 정보에 프로그램한 데이터에 대한 내용을 업데이트할 수 있다.
여기서, 블록 관리자(48)는 호스트 요구 관리자(HRM, 46), 맵데이터 관리자(MM, 44), 및 상태 관리자(42)가 요청한 프로그램 요청을 메모리 장치(150)를 위한 프로그램 요청으로 변환하여 메모리 장치(150) 내 블록을 관리할 수 있다. 메모리 시스템(110, 도 2 참조)의 프로그램 혹은 쓰기 성능을 극대화하기 위해 블록 관리자(48)는 프로그램 요청을 수집하고 다중 평면 및 원샷 프로그램 작동에 대한 플래시 프로그램 요청을 메모리 인터페이스(142)으로 보낼 수 있다. 또한, 다중 채널 및 다중 방향 플래시 컨트롤러의 병렬 처리(예, 인터리빙 동작)를 최대화하기 위해 여러 가지 뛰어난 플래시 프로그램 요청을 메모리 인터페이스(142)으로 전송할 수도 있다.
한편, 블록 관리자(48)는 유효 페이지 수에 따라 플래시 블록을 관리하고 여유 블록이 필요한 경우 유효한 페이지가 없는 블록을 선택 및 지우고, 쓰레기(garbage) 수집이 필요한 경우 가장 적게 유효한 페이지를 포함하고 있는 블록을 선택할 수 있다. 실시예에 따라, 블록 관리자(48)는 도 1에서 설명한 존단위 네임스페이스(ZNS) 각각에 할당된 메모리 블록에 대해 구별하여 가비지 컬렉션을 수행할 수 있다. 또한, 실시예에 따라, 가비지 컬렉션에 의해 삭제 동작이 수행된 메모리 블록은 존단위 네임스페이스(ZNS)에 할당이 해제될 수 있다. 이렇게 할당이 해제된 메모리 블록은 호스트(102)의 요청에 대응하여 존단위 네임스페이스(ZNS)에 할당될 수 있다. 블록 관리자(48)가 충분한 빈 블록을 가질 수 있도록, 상태 관리자(42)는 가비지 수집을 수행하여 유효 데이터를 모아 빈 블록으로 이동시키고, 이동된 유효 데이터를 포함하고 있었던 블록들을 삭제할 수 있다. 블록 관리자(48)가 상태 관리자(42)에 대해 삭제될 블록에 대한 정보를 제공하면, 상태 관리자(42)는 먼저 삭제될 블록의 모든 플래시 페이지를 확인하여 각 페이지가 유효한지 여부를 확인할 수 있다. 예를 들어, 각 페이지의 유효성을 판단하기 위해, 상태 관리자(42)는 각 페이지의 스페어(Out Of Band, OOB) 영역에 기록된 논리 주소를 식별한 뒤, 페이지의 실제 주소와 맵 관리자(44)의 조회 요청에서 얻은 논리 주소에 매핑된 실제 주소를 비교할 수 있다. 상태 관리자(42)는 각 유효한 페이지에 대해 블록 관리자(48)에 프로그램 요청을 전송하고, 프로그램 작업이 완료되면 맵 관리자(44)의 갱신을 통해 매핑 테이블이 업데이트될 수 있다.
맵 관리자(44)는 논리-물리 매핑 테이블을 관리하고, 호스트 요구 관리자(HRM, 46) 및 상태 관리자(42)에 의해 생성된 조회, 업데이트 등의 요청을 처리할 수 있다. 실시예에 따라, 맵 관리자(44)는 논리-물리 매핑 테이블을 도 1에서 설명한 존단위 네임스페이스(ZNS)에 대응하여 각각 구분하여 저장, 관리할 수 있다. 맵 관리자(44)는 전체 매핑 테이블을 플래시 메모리에 저장하고, 메몰시 소자(144) 용량에 따라 매핑 항목을 캐시할 수도 있다. 조회 및 업데이트 요청을 처리하는 동안 맵 캐시 미스가 발생하면, 맵 관리자(44)는 메모리 인터페이스(142)에 읽기 요청을 전송하여 메모리 장치(150)에 저장된 매핑 테이블을 로드(load)할 수 있다. 맵 관리자(44)의 더티 캐시 블록 수가 특정 임계 값을 초과하면 블록 관리자(48)에 프로그램 요청을 보내서 깨끗한 캐시 블록을 만들고 더티 맵 테이블이 메모리 장치(150)에 저장될 수 있다.
한편, 가비지 컬렉션이 수행되는 경우, 상태 관리자(42)가 유효한 페이지를 복사하는 동안 호스트 요구 관리자(HRM, 46)는 페이지의 동일한 논리 주소에 대한 데이터의 최신 버전을 프로그래밍하고 업데이트 요청을 동시에 발행할 수 있다. 유효한 페이지의 복사가 정상적으로 완료되지 않은 상태에서 상태 관리자(42)가 맵 업데이트를 요청하면 맵 관리자(44)는 매핑 테이블 업데이트를 수행하지 않을 수도 있다. 맵 관리자(44)는 최신 맵 테이블이 여전히 이전 실제 주소를 가리키는 경우에만 맵 업데이트를 수행하여 정확성을 보장할 수 있다.
도 4는 도 1 내지 도 4에서 설명한 컨트롤러(130)의 내부 계층 을 설명한다.
도 4를 참조하면, 컨트롤러(130) 내 플래시 변환 계층(Flash Translation Layer (FTL), 240)은 크게 어드레스 변환 계층(Address Translation Layer, ATL), 가상 플래시 계층(Virtual Flash Layer, VFL) 및 플래시 인터페이스 계층(Flash Interface Layer, FIL)으로 구분될 수 있다.
예를 들면, 어드레스 변환 계층(ATL)은 파일 시스템으로부터 전송된 논리 어드레스(LA)을 논리 페이지 어드레스(Logical Page Address)로 변환할 수 있다. 어드레스 변환 계층(ATL)은 논리 어드레스 공간의 어드레스 변환 과정을 수행한다. 즉, 어드레스 변환 계층(ATL)은 호스트에서 전송된 논리 어드레스(LA)에 대하여 플래시 메모리(144)의 논리 페이지 어드레스(LPA)가 맵핑되는 맵핑 정보에 의거하여 어드레스 변환 과정을 수행한다. 이러한 논리 대 논리 어드레스 맵핑 정보(Logical to Logical Address mapping information: 이하 'L2L'이라고 함)들은 메모리 장치(150) 내 메타 데이터를 저장하는 영역에 저장될 수 있다.
가상 플래시 계층(VFL)은 어드레스 변환 계층(ATL)로부터 변환된 논리 페이지 어드레스(LPA)을 가상 페이지 어드레스(Virtual Page Address, VPA)로 변환할 수 있다. 여기서 가상 페이지 어드레스(VPA)는 가상의 플래시 메모리의 물리적 어드레스에 대응할 수 있다. 즉, 가상 페이지 어드레스(VPA)는 도 2에서 설명한 메모리 장치(150) 내 메모리 블록(152, 154, 156)에 대응할 수 있다. 이때, 메모리 장치(150) 내 메모리 블록(152, 154, 156) 중 배드 블록이 있다면 제외될 수 있다. 또한, 가상 플래시 계층(VFL)은 메모리 장치(150)에 저장된 논리 대 가상 어드레스 맵핑 정보(L2V) 및 유저 데이터를 저장하기 위한 데이터 영역 내 맵핑 정보를 복원하기 위한 스캔 영역으로부터 스캔된 정보(Scanned Information)을 이용하여 논리 대 가상 어드레스 맵핑 정보(L2V)을 복원할 수 있는 복원 알고리즘(Recovering Algorithm)은 포함할 수 있다. 가상 플래시 계층(VFL)은 이러한 복원 알고리즘을 통하여 복원된 논리 대 가상 어드레스 맵핑 정보(L2V)을 이용하여 가상 어드레스 공간의 어드레스 변환 과정을 수행할 수 있다.
플래시 인터페이스 계층(FIL)는 가상 플래시 계층(VFL)의 가상 페이지 어드레스(Virtual Page Address)을 메모리 장치(150)의 물리적 페이지 어드레스(Physical Page Address)로 변환한다. 플래시 인터페이스 계층(FIL)은 메모리 장치(150)와의 인터페이싱 동작을 수행하는 위한 로우 레벨 동작을 수행한다. 예를 들어, 메모리 장치(150)의 하드웨어를 제어하기 위한 로우 레벨 드라이버, 메모리 장치(150)로부터 전달된 데이터의 에러를 정정하기 위한 에러 정정코드(Error Correction Code, ECC) 및 베드 블록 관리 모듈(Bad Block Management, BBM) 등의 동작을 수행하는 모듈 혹은 회로들이 플래시 인터페이스 계층(FIL)에 포함될 수 있다.
도 5는 존(Zone) 단위로 구분되는 네임스페이스(Namespace)를 지원하는 메모리 시스템을 설명한다.
도 5를 참조하면, 호스트(102)는 메모리 시스템(110)의 저장 공간을 복수의 존(Zone 0, Zone 1, …, Zone x-1)으로 구분될 수 있다. 예를 들어, 메모리 시스템(110)이 1G byte의 저장 공간을 가지고 있는데, 10개의 존이 설정되어 있다고 가정한다. 10개의 존 각각은 100M byte의 크기를 가질 수 있다.
논리 블록 주소 지정(Logical block addressing)은 컴퓨터 장치와 연동하는 저장 장치에 저장되는 데이터 블록의 위치를 지정하는데 쓰이는 주소 체계로서, 메모리 시스템(110)과 같은 저장 장치를 사용하기 위해 단순한 선형 주소를 지정하는 체계로서 사용될 수 있다. 논리 블록 주소 지정이 등장하기 전에는 저장 장치인 하드 드라이브가 CHS(실린더, 헤드, 섹터) 또는 확장 CHS를 통해 액세스되었다. 즉, 실린더, 헤드 및 섹터 주소를 지정하여 드라이브에 액세스할 수 있었다. 이와 달리, 논리 블록 주소 지정(LBA)은 섹터 주소를 지정하는 방법으로 EIDE/IDE 인터페이스에 포함되었다. 드라이브 실린더, 헤드 및 섹터 번호를 참조하여 액세스하거나 "주소를 지정"하는 대신, 논리 블록 주소 지정(Logical block addressing)은 각 섹터에 고유한 "섹터 번호"가 할당됩니다. 본질적으로 논리 블록 주소(logical block address, LBA)는 헤드 0의 섹터 1에서 시작하여 LBA 0으로 실린더 0을 시작하여 드라이브의 마지막 물리적 섹터까지 순차적으로 진행하여 섹터 주소를 선형으로 지정하여 드라이브에 액세스하는 수단이다. 예를 들어, 540 M Byte 저장 장치에서 논리 블록 주소(LBA)의 개수는 1,065,456일 수 있다.
네임 스페이스를 지원하는 메모리 시스템(110)의 저장 공간은 복수의 존(Zone 0, Zone 1, …, Zone x-1)에 할당되어 있고, 복수의 논리 주소(LBA 0, LBA 1, …, LBA z-1)에 지정된 블록으로 구별될 수 있다. 존단위 네임스페이스(ZNS)에는 각 존(Zone 0, Zone 1, …, Zone x-1) 마다 특정 범위의 논리 주소가 할당될 수 있다. 예를 들면, 제2 존(Zone 1)에는 (m+1)번째 논리 블록 주소(LBA m)부터 n번째 논리 블록 주소(LBA n-1)까지 할당될 수 있다. 제2 존(Zone 1)을 사용하는 어플리케이션은 메모리 시스템(110)에 저장이 필요한 데이터에 할당된 논리 블록 주소를 순서대로 지정할 수 있다(Write Sequentially).
도 6은 존(Zone) 단위로 구분되는 네임스페이스(Namespace)를 지원하는 메모리 시스템의 동작을 설명한다.
도 6을 참조하면, 호스트(102, 도 2 내지 도 3 참조)에서 수행되는 복수의 어플리케이션(312, 314, 316)은 컨트롤러(130)에 존단위 네임스페이스(ZNS)를 사용하여 데이터 입출력 동작을 요청할 수 있다. 메모리 장치(150)에 포함된 복수의 메모리 블록은 3개의 존단위 네임스페이스(322, 324, 326)에 할당될 수 있다.
제1존단위 네임스페이스(322)에 할당된 메모리 블록(322_1)에 대해 설명한다. 메모리 블록(322_1)은 삭제 동작의 단위(Erase Unit)일 수 있다. 제1 어플리케이션(APPL1, 312)은 제1 존단위 네임스페이스(322, zone#0)를 사용할 수 있고, 호스트(102)가 사용하는 논리적 주소 체계와 메모리 장치(150) 내 물리적 주소 체계의 차이를 줄일 수 있다. 제1 어플리케이션(APPL1, 312)은 논리적 주소 체계에서 제1 존단위 네임스페이스(322, zone#0)으로 설정된 영역 내 논리 주소를 생성된 데이터에 부여할 수 있다. 이러한 데이터는 제1 어플리케이션(APPL1, 312)에 할당된 메모리 블록(322_1)에 순차적으로 저장될 수 있다.
복수의 어플리케이션(312, 314, 316)은 자신에게 할당된 존단위 네임스페이스(zone#0, zone#1, zone#3, zone#n)을 사용할 수 있다. 도 1에서도 설명한 바와 같이, 실시예에 따라, 하나의 어플리케이션에 복수의 존단위 네임스페이스가 할당될 수 있고, 복수의 어플리케이션이 하나의 존단위 네임스페이스를 공유할 수도 있다. 존단위 네임스페이스(322, 324, 326) 각각은 논리 주소 체계에서 복수의 어플리케이션(312, 314, 316)에서 요청한 영역이 미리 할당될 수 있다. 복수의 어플리케이션(312, 314, 316) 각각은 자신에게 할당되지 않은 존단위 네임스페이스(zone#0, zone#1, zone#3, zone#n)는 사용하지 않을 수 있다. 즉, 특정 존단위 네임스페이스에 미리 할당된 논리 주소는 다른 존단위 네임스페이스를 사용하는 다른 어플리케이션에 의해 사용되지 않을 수 있다. 이를 통해, 종래의 비휘발성 메모리 장치에서 여러 어플리케이션에서 생성된 데이터가 뒤섞여 메모리 블록에 저장되는 것을 피할 수 있다.
논리 주소 체계와 물리 주소 체계에서, 어플리케이션이 생성한 데이터에 논리 주소와 물리 주소가 순차적으로 부여되어 가비지 컬렉션의 수행이 용이해질 수 있다. 한편, 실시예에 따라, 호스트(102)는 존단위 네임스페이스(zone#0, zone#1, zone#3, zone#n)에 할당된 저장 공간을 변경할 수 있고, 메모리 장치(150) 내 존단위 네임스페이스(322, 324, 326)에 할당되지 않은 메모리 블록을 추가로 할당할 수 있다.
한편, 실시예에 따라, 특정 존단위 네임스페이스에 저장된 데이터를 모두 삭제하는 경우 혹은 해당 존단위 네임스페이스에 대한 사용이 완료된 경우, 호스트(102)는 메모리 시스템(110)에 통지할 수 있다. 메모리 시스템(110)은 호스트(102)의 통지에 따라 해당 존단위 네임스페이스를 비활성화하고 할당된 메모리 블록에 대해 삭제 동작을 수행하거나 할당된 메모리 블록에 대한 저장 공간과 관련한 설정값을 초기화할 수 있다. 호스트(102)의 요청에 대응하여, 메모리 시스템(110)은 메모리 장치(150) 내 데이터가 저장되지 않은 존단위 네임스페이스를 비활성화하거나, 어떠한 존단위 네임스페이스에도 할당되지 않은 메모리 블록을 추가 할당할 수도 있다.
예를 들어, 호스트(102)에서 복수의 어플리케이션(APPL1, APPL2, APPL3,)이 수행되고 있고, 복수의 어플리케이션(APPL1, APPL2, APPL3)들이 데이터를 생성하여 메모리 시스템(110)에 저장한다고 가정한다. 먼저, 일반적인 비휘발성 메모리 시스템은 메모리 시스템과 연결된 호스트(102)로부터 입력된 데이터를 순차적으로 메모리 장치에 저장된다. 즉, 복수의 어플리케이션(APPL1, APPL2, APPL3)들에 의해 생성된 데이터는 호스트(102)에서 메모리 시스템(110)으로 전달된 순서에 따라 구분없이 순차적으로 메모리 장치에 저장될 수 있다. 데이터를 프로그램하기 위한 오픈 메모리 블록에는 복수의 어플리케이션(APPL1, APPL2, APPL3)에 의해 생성된 데이터가 혼재되어 저장될 수 있다. 이 과정에서 컨트롤러는 호스트(102)로부터 입력된 논리 주소와 메모리 장치에 데이터가 저장된 위치를 가리키는 물리 주소를 연결할 수 있는 맵데이터를 생성한다. 이후, 호스트(102)의 복수의 어플리케이션(APPL1, APPL2, APPL3)이 메모리 시스템에 저장된 데이터를 요청하면, 컨트롤러는 맵데이터를 기초로 복수의 어플리케이션(APPL1, APPL2, APPL3)이 요구하는 데이터를 출력할 수 있다.
일반적인 비휘발성 메모리 시스템에서는 하나의 메모리 블록에 여러 종류의 데이터 혹은 여러 어플리케이션에 의해 생성된 데이터들이 혼재되어 저장될 수 있다. 이 경우, 메모리 블록에 저장된 데이터들의 유효성(최신 데이터)은 서로 다르고 예상하기 어렵다. 이로 인하여, 가비지 컬렉션을 수행하는 경우, 유효한 데이터를 추려내거나 데이터가 유효한지를 확인하는 데 자원이 많이 소비될 수 있다. 또한, 하나의 메모리 블록과 관련된 어플리케이션이 복수 개일 수 있어, 해당 메모리 블록에 대한 가비지 컬렉션이 수행되면 대응하는 복수의 어플리케이션에서 요구하는 데이터의 입출력 동작이 지연될 수 있다. 하지만, 존단위 네임스페이스(ZNS)는 전술한 일반적인 비휘발성 메모리 시스템에서의 문제를 개선할 수 있다.
존단위 네임스페이스(ZNS)에서는 호스트(102)에서 수행되는 복수의 어플리케이션(APPL1, APPL2, APPL3)이 각자 정해진 존(zone)에 순차적으로 데이터를 저장할 수 있다. 여기서 존은 호스트(102)가 사용하는 논리적인 주소 체계에서의 일정 공간과 메모리 장치(150)에 포함된 복수의 메모리 블록의 일부를 포함할 수 있다. 도 1을 참조하면, 복수의 어플리케이션(APPL1, APPL2, APPL3)에 대응하는 복수의 존단위 네임스페이스(322, 324, 326)가 메모리 장치(150)에 포함되어 있다. 제1 어플리케이션(APPL1, 312)은 제1 존단위 네임스페이스(322)에 데이터를 저장하고, 제2 어플리케이션(APPL2, 314)은 제2 존단위 네임스페이스(324)에 데이터를 저장하며, 제3 어플리케이션(APPL3, 316)은 제3 존단위 네임스페이스(326)에 데이터를 저장할 수 있다. 이 경우, 제1 어플리케이션(APPL1)에 의해 생성된 데이터들은 제1 존단위 네임스페이스(322)에 포함되는 메모리 블록에 순차적으로 저장되므로, 유효한 데이터를 확인하기 위해 다른 존단위 네임스페이스에 포함된 메모리 블록을 확인할 필요가 없다. 또한, 제1 어플리케이션(APPL1)에 할당된 제1 존단위 네임스페이스(322) 내에서 저장공간이 부족해지기 전까지는 제1 존단위 네임스페이스(322)에 할당된 메모리 블록에 대한 가비지 컬렉션을 수행할 필요가 없어진다. 이러한 이유로, 메모리 장치(150)에 대한 가비지 컬렉션의 효율이 높아지고, 가지비 컬렉션의 빈도도 낮아질 수 있다. 이는 메모리 장치(150)에서 쓰기의 양이 증폭되는 정도를 가리키는 쓰기 증폭 지수(Write Amplification Factor, WAF)의 감소를 가져오고, 메모리 장치(150)의 수명(lifespan)을 증가시킬 수 있다. 또한, 존단위 네임스페이스(ZNS)가 적용된 메모리 시스템(110)에서는 메모리 장치(150)에서 미디어 오버 프로비저닝(media over-provisioning)이 감소하고, 휘발성 메모리(144, 도 2 내지 도 3 참조)의 사용률을 감소시키며, 데이터 처리양, 송수신양을 줄일 수 있는 등의 메모리 시스템(110) 내에서 발생하는 오버헤드를 감소시킬 수 있다. 이를 통해, 메모리 시스템(110)의 데이터 입출력 동작의 성능이 향상될 수 있다.
실시예에 따라, 호스트(102)에서 수행되는 복수의 어플리케이션(APPL1, APPL2, APPL3) 각각이 서로 다른 존단위 네임스페이스(ZNS)를 할당 받을 수 있다. 또 다른 실시 호스트(102)에서 수행되는 복수의 어플리케이션(APPL1, APPL2, APPL3) 각각은 특정 존단위 네임스페이스(ZNS)를 함께 사용할 수도 있다. 또한, 다른 실시예에서는 호스트(102)에서 수행되는 복수의 어플리케이션(APPL1, APPL2, APPL3) 각각이 복수의 존단위 네임스페이스(ZNS)를 할당 받아, 복수의 어플리케이션(APPL1, APPL2, APPL3) 각각은 메모리 시스템(110)에 저장할 데이터의 특성에 대응하여 할당된 복수의 존단위 네임스페이스(ZNS)를 활용할 수 있다. 예를 들어, 제1 어플리케이션(APPL1)이 제1 존단위 네임스페이스(322) 및 제2 존단위 네임스페이스(324)를 할당 받은 경우, 제1 어플리케이션(APPL1)은 제1 존단위 네임스페이스(322)에는 핫(hot) 데이터(예, 데이터의 액세스가 자주 발생하거나 데이터의 유효 기간(갱신 기간)이 짧음)를 저장하고, 제2 존단위 네임스페이스(324)에는 콜드(cold) 데이터(예, 데이터의 액세스가 드물게 발생하거나 데이터의 유효 기간(갱신 기간)이 김)를 저장할 수 있다.
서로 연동하기 위한 초기 동작 중 호스트(102)와 메모리 시스템(110)은 복수의 어플리케이션(APPL1, APPL2, APPL3)에 대응하는 존단위 네임스페이스(ZNS)와 할당된 정보를 교환할 수 있다. 이렇게 정해진 존단위 네임스페이스(ZNS)에 대응하여 데이터 입출력 동작이 수행될 수 있다. 데이터 입출력 동작 중 데이터의 특성, 혹은 호스트(102)에서 수행되는 어플리케이션의 특성 등에 따라, 호스트(102)는 메모리 시스템(110)에 보다 빠른 데이터 입출력 속도가 요구되거나, 우선순위가 매우 높은 데이터를 안전하게 저장하기를 요구할 수 있다.
한편, 메모리 장치(150)에 포함된 복수의 비휘발성 메모리 셀은 멀티 비트 데이터를 저장할 수 있으나, 한 비트 데이터를 저장할 수도 있다. 만약 빠른 입출력 속도 혹은 데이터를 안전하게 저장하기 위해서, 메모리 시스템(110)은 멀티 비트 데이터를 저장할 수 있는 메모리 블록은 한 비트 데이터를 저장하기 위한 용도로 사용할 수 있다. 또한, 필요에 따라, 메모리 장치(150) 내 특정 블록을 SLC(Single-level cell) 버퍼로 사용할 수도 있다. 하지만, 호스트(102)와 메모리 시스템(110)이 존단위 네임스페이스(ZNS)를 설정하고, 설정값을 교환한 후에는 메모리 시스템(110)이 비휘발성 메모리 셀에 저장되는 데이터의 비트 수를 독립적으로 변경할 수 없다. 데이터의 비트 수를 변경하면, 존단위 네임스페이스(ZNS)에 할당된 저장 공간이 달라지기 때문이다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템의 동작 방법을 설명한다.
도 7을 참조하면, 메모리 시스템(110)의 동작 방법은 외부 장치인 호스트로부터 메모리 장치(150)에 저장하도록 쓰기 요청 및 쓰기 데이터를 수신하거나, 메모리 시스템(110)의 내부 동작을 제어, 관리하기 위한 메타 데이터를 생성하면, 프로그램 동작을 시작할 수 있다(708).
메모리 시스템(110)은 프로그램 동작이 호스트 데이터를 메모리 장치(150)에 저장하기 위한 동작인 호스트의 요청에 의한 동작(즉, 호스트 동작)인지 메모리 시스템(110)의 메타 데이터를 저장하기 위한 동작인지를 확인할 수 있다.
프로그램 동작이 호스트 데이터에 관한 것일 경우(HOST PROGRAM), 메모리 시스템(110)은 프로그램 동작이 수행될 메모리 다이, 메모리 플레인, 혹은 메모리 블록의 동작 상태를 확인할 수 있다(712). 예를 들어, 메모리 시스템(110)은 호스트로부터 전달된 데이터의 논리 주소를 바탕으로, 논리 주소에 대응하는 존(zone)에 할당된 메모리 블록, 메모리 플레인 혹은 메모리 다이에 해당 데이터를 저장할 수 있다. 메모리 시스템(110)은 해당 위치에 데이터를 저장하기 전에 메모리 다이 혹은 메모리 플레인의 동작 상태를 확인하기 위해, 메모리 다이 혹은 메모리 플레인에 발생한 에러가 발생했는 지를 판단할 수 있다(712).
에러가 발생하지 않은 경우, 메모리 시스템(110)은 호스트 데이터가 저장될 메모리 블록, 메모리 플레인 혹은 메모리 다이에 전달할 수 있다(716). 에러가 발생한 경우 메모리 시스템(110)은 해당 에러를 처리, 복구한 후, 메모리 시스템(110)은 호스트 데이터를 메모리 블록, 메모리 플레인 혹은 메모리 다이에 전달할 수 있다(716). 존단위 네임스페이스를 지원하는 메모리 시스템(110)은 호스트가 전달한 데이터를 논리 주소에 대응하여 순차적으로 저장한다. 한편, 메모리 장치(150) 내 특정 위치에서 에러가 발생하는 경우, 해당 위치에에 대응하는 존(zone)에서 데이터가 순차적으로 저장되지 못하는 문제가 발생할 수 있다. 메모리 시스템(110)은 존단위 네임스페이스를 지원하기 위해, 해당 위치를 복구한 후 호스트 데이터를 순차적으로 프로그램할 수 있다. 이를 위해, 메모리 장치(150)에서 오류가 복구될 때가지 다음 호스트 데이터는 메모리 장치(150)로 전달되는 것을 차단할 수 있다. 오류가 처리, 복구되면, 메모리 시스템(110)은 호스트 데이터를 메모리 장치(150)로 전달할 수 있다.
메모리 장치(150) 내 메모리 다이, 메모리 플레인, 혹은 메모리 블록에 호스트 데이터가 전달되면, 메모리 장치(150)는 호스트 데이터를 순차적으로 프로그램할 수 있다(720). 예를 들어, 특정 존에 할당된 특정 메모리 블록에 10개의 페이지가 포함된다고 가정한다. 해당 존에 할당된 특정 메모리 블록에 3개의 페이지에 데이터가 저장되어 있고, 해당 존의 쓰기 포인터는 4번째 페이지를 가리킬 수 있다. 해당 존의 다음 논리 주소에 대응하는 호스트 데이터가 입력되면, 메모리 시스템(110)은 호스트 데이터를 4번째 페이지에 저장할 수 있다. 하지만, 해당 메모리 블록에서 에러가 발생하는 경우, 메모리 장치(150)는 오류가 발생한 메모리 블록을 다른 메모리 블록으로 대체할 수 있다. 이를 위해, 오류가 발생한 메모리 블록에 저장된 3개의 페이지의 데이터를 새로운 메모리 블록으로 이동시킨 뒤, 메모리 시스템(110)은 새로운 메모리 블록의 4번째 페이지에 입력된 호스트 데이터를 저장할 수 있다.
한편, 프로그램 동작이 메타 데이터에 관한 것일 경우(MATA/JOURNAL PROGRAM), 메모리 시스템(110)은 프로그램 동작이 수행될 메모리 다이, 메모리 플레인, 혹은 메모리 블록에 메타 데이터를 전달할 수 있다(714). 도 1에서 설명한 바와 같이, 존단위 네임스페이스를 지원하는 메모리 시스템(110)에서 호스트 데이터와 메타 데이터는 구별될 수 있다. 호스트 데이터는 논리 주소에 대응하는 존에 할당된 물리적인 공간에서 순차적으로 프로그램되어야 하지만, 메타 데이터는 메모리 장치(150) 내 저장되는 위치에 대한 제약이 없을 수 있다. 메타 데이터는 메모리 장치(150) 내 임의의 위치 혹은 기 설정된 위치에 저장될 수 있으므로, 호스트 데이터와 달리 메타 데이터는 메모리 장치(150)에 전달될 수 있다(714). 메모리 장치(150)에 메타 데이터가 전달되면, 메모리 장치(150)는 메타 데이터를 프로그램할 수 있다(718).
예를 들면, 메모리 장치(150) 내 메타 데이터를 저장하는 위치인 메모리 블록, 메모리 플레인 혹은 메모리 다이에 오류가 발생한 경우, 메모리 시스템(110)은 해당 오류가 처리, 복구될 때까지 메타 데이터의 전달을 지연시킬 필요가 없다. 예를 들면, 메모리 장치(150) 내 특정 메모리 블록에 제1 페이지부터 제3 페이지까지 메타 데이터가 저장되어 있고, 제4 페이지에 새로운 메타 데이터를 저장할 수 있다. 만약 제4 페이지에 오류가 발생하면, 새로운 메타 데이터는 제5 페이지에 저장할 수 있다. 이러한 메타 데이터의 저장 방식은 호스트 데이터를 저장하는 경우와 달라질 수 있다. 메타 데이터의 저장 방식에서는 호스트 데이터와 달리 물리적 공간에 순차적으로 저장해야 하는 제약이 없기 때문이다.
도 8은 메모리 다이의 동작 상태에 따른 프로그램 동작 방법의 제1예를 설명한다. 도 8은 메모리 장치(150) 내 4개의 메모리 다이(292, 294, 296, 298)가 포함된 경우를 예로 들어 설명한다.
도 8을 참조하면, 존단위 네임스페이스를 지원하는 메모리 시스템(110)은 다이 블록 모듈(272) 및 에러 처리 모듈(274)을 포함할 수 있다. 실시예에 따라, 다이 블록 모듈(272) 및 에러 처리 모듈(274)은 도 1에서 설명한 입출력 제어 모듈(260)에 포함될 수 있다. 또한, 다른 실시예에서는, 다이 블록 모듈(272)은 입출력 제어 모듈(260)에 포함될 수 있고, 에러 처리 모듈(274)은 메모리 인터페이스(142)에 포함될 수 있다.
다이 블록 모듈(272)은 4개의 메모리 다이(292, 294, 296, 298)의 동작 상태에 따라 4개의 메모리 다이(292, 294, 296, 298)에 전달되는 데이터를 차단할 수 있다. 도 8을 참조하면, 제1 메모리 다이(Die 0, 292)에서 에러(Error)가 발생했다고 가정한다. 에러 처리 모듈(274)은 제1 메모리 다이(Die 0, 292)에서 발생한 에러를 처리, 복구하기 위해, 제1 메모리 다이(Die 0)에 저장된 데이터를 읽은 후 제3 메모리 다이(Die 2, 296)에 저장시킬 수 있다. 에러 처리 모듈(274)이 메모리 장치(150) 내 제1 메모리 다이(Die 0, 292)에서 발생한 오류를 처리, 복구하는 동안 오류 처리, 복구 과정에서 사용되는 제1 메모리 다이(Die 0, 292) 및 제3 메모리 다이(Die 2, 296)에서 새로운 데이터를 저장하기 위한 동작이 수행되기 어렵다. 에러 처리 모듈(274)이 에러를 확인하고 해당 에러를 처리, 복구하는 동안, 에러 처리 모듈(274)로부터 에러에 대한 정보가 전달되면 다이 블록 모듈(272)은 제1 메모리 다이(Die 0, 292) 및 제3 메모리 다이(Die 2, 296)로 전달되는 데이터를 차단할 수 있다. 도 8에서는 제1 메모리 다이(Die 0, 292)에 저장될 메타 데이터의 프로그램 동작(Meta/Journal Program)이 차단되어, 해당 동작이 지연될 수 있다.
한편, 제2 메모리 다이(Die 1, 294)는 에러 처리 모듈(274)이 에러를 확인하고 해당 에러를 처리, 복구하는 동작에 사용되지 않는다. 다이 블록 모듈(272)은 제2 메모리 다이(Die 1, 294)에서 수행될 호스트 명령(Host Command)을 차단하지 않을 수 있다. 따라서, 호스트 명령(Host Command)은 제2 메모리 다이(Die 1, 294)에 전달될 수 있고, 제2 메모리 다이(Die 1, 294)는 호스트 명령(Host Command)에 대응하는 데이터 입출력 동작을 수행할 수 있다.
도 9는 메모리 다이의 동작 상태에 따른 프로그램 동작 방법의 제2예를 설명한다. 도 9는 도 8과 유사한 동작 환경(예, 제1 메모리 다이(Die 0, 292)에서 발생한 에러를 처리, 복구하기 위해, 제1 메모리 다이(Die 0)에 저장된 데이터를 읽은 후 제3 메모리 다이(Die 2, 296)에 저장하는 경우)에서의 다른 동작을 예로 들어 설명한다.
도 9를 참조하면, 에러 처리 모듈(274)이 메모리 장치(150) 내 제1 메모리 다이(Die 0, 292)에서 발생한 오류를 처리, 복구하는 동안 오류 처리, 복구 과정에서 사용되는 제1 메모리 다이(Die 0, 292) 및 제3 메모리 다이(Die 2, 296)에서 새로운 데이터인 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)이 수행되기 어렵다. 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)의 수행이 제1 메모리 다이(Die 0, 292) 및 제3 메모리 다이(Die 2, 296)에서 차단되어 지연될 수 있다.
메타 데이터를 저장하기 위한 동작(Meta/Journal Program)의 수행이 지연되면서, 호스트 명령(Host Command)에 대응하는 프로그램 동작의 수행이 지연될 수 있다. 예를 들어, 컨트롤러(130)는 메모리 시스템(110) 내 메모리 장치(150)에 호스트 데이터를 프로그램하는 동작을 수행하면서 메타 데이터인 맵 정보(예, 논리 주소와 물리 주소를 연결시키는 맵핑 정보)를 생성할 수 있다. 컨트롤러(130)는 맵 정보를 생성한 후, 맵 정보를 저장하기 위해 할당된 공간(예, 메모리(144) 내 저장된 맵 테이블)이 가득 채워지면, 맵 갱신(map update) 혹은 맵 플러시(map flush)를 수행할 수 있다. 도 9에 도시된 바와 같이, 맵 갱신(map update) 혹은 맵 플러시(map flush)와 같이 메타 데이터를 메모리 장치(150) 내 저장하기 위한 동작(Meta/Journal Program)이 지연되면, 호스트 명령(Host Command)에 대응하여 입력된 새로운 데이터를 메모리 장치(150)에 저장하기 위해 플래시 변환 계층(240)이 수행할 동작이 대기, 지연될 수 있다. 이 경우, 메모리 시스템(110)의 데이터 입출력 성능이 악화될 수 있다.
도 10은 메모리 다이의 동작 상태에 따른 프로그램 동작 방법의 제3예를 설명한다. 도 10은 도 8과 유사한 동작 환경(예, 제1 메모리 다이(Die 0, 292)에서 발생한 에러를 처리, 복구하기 위해, 제1 메모리 다이(Die 0)에 저장된 데이터를 읽은 후 제3 메모리 다이(Die 2, 296)에 저장하는 경우)에서의 다른 동작을 예로 들어 설명한다.
도 10을 참조하면, 메모리 시스템(110)은 메타 데이터 통과 모듈(278) 및 메타 데이터 계류 모듈(276)을 더 포함할 수 있다. 메타 데이터 통과 모듈(278)과 메타 데이터 계류 모듈(276)의 사이에는 다이 블록 모듈(272)이 배치될 수 있다. 에러 처리 모듈(274)이 메모리 장치(150) 내 제1 메모리 다이(Die 0, 292)에서 발생한 오류를 처리, 복구하는 동안, 다이 블록 모듈(272)은 오류 처리, 복구 과정에서 사용되는 제1 메모리 다이(Die 0, 292) 및 제3 메모리 다이(Die 2, 296)에서 새로운 데이터인 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)을 차단할 수 있다. 다만, 메타 데이터 통과 모듈(278)은 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)이 제1 메모리 다이(Die 0, 292) 및 제3 메모리 다이(Die 2, 296)에 전달될 수 있도록 다이 블록 모듈(272)을 통과시킬 수 있다. 즉, 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)은 메타 데이터 통과 모듈(278)에 의해 다이 블록 모듈(272)을 통과할 수 있지만, 호스트 명령(Host Command)에 의한 프로그램 동작은 다이 블록 모듈(272)에 의해 차단되어 지연될 수 있다.
도 10에서는 제1 메모리 다이(Die 0, 292) 및 제3 메모리 다이(Die 2, 296)에 전달되는 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)은 메타 데이터 통과 모듈(278)에 의해 다이 블록 모듈(272)을 통과할 수 있다. 다이 블록 모듈(272)을 통과한 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)은 메타 데이터 계류 모듈(276)에서 대기할 수 있다. 에러 처리 모듈(274)은 제1 메모리 다이(Die 0, 292)에서 발생한 에러를 처리, 복구하기 위해, 제1 메모리 다이(Die 0)에 저장된 데이터를 읽은 후 제3 메모리 다이(Die 2, 296)에 저장시킬 수 있다. 제1 메모리 다이(Die 0)에서의 에러 처리, 복구 동작이 끝나면, 메타 데이터 계류 모듈(276)에서 대기 중인 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)이 제1 메모리 다이(Die 0)에서 수행될 수 있다. 즉, 메타 데이터 계류 모듈(276)에 의해 대기하던 메타 데이터가 제1 메모리 다이(Die 0)에 전달되고, 제1 메모리 다이(Die 0)는 전달된 메타 데이터를 프로그램할 수 있다. 마찬가지로, 제3 메모리 다이(Die 2, 296)에서 에러를 처리, 복구하는 동작이 끝나면, 메타 데이터 계류 모듈(276)에서 대기 중인 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)이 제3 메모리 다이(Die 3)에서 수행될 수 있다. 즉, 메타 데이터 계류 모듈(276)에 의해 대기하던 메타 데이터가 제3 메모리 다이(Die 3)에 전달되고, 제3 메모리 다이(Die 3)는 전달된 메타 데이터를 프로그램할 수 있다.
도 9와 도 10을 비교하면, 메타 데이터가 다이 블록 모듈(272)을 통과하여 메타 데이터 계류 모듈(276)에서 대기하는 동안, 호스트 명령(Host Command)에 대응하여 입력된 새로운 데이터를 메모리 장치(150)에 저장하기 위해 플래시 변환 계층(240)이 수행할 동작이 대기, 지연되는 것을 방지할 수 있다. 호스트 명령(Host Command)에 대응하여 입력된 새로운 데이터가 제2 메모리 다이(Die 1) 혹은 제4 메모리 다이(Die 3)에서 수행되는 경우, 다이 블록 모듈(272)을 통과하여 제2 메모리 다이(Die 1) 혹은 제4 메모리 다이(Die 3)로 전달된 후, 제2 메모리 다이(Die 1) 혹은 제4 메모리 다이(Die 3)에서 해당 데이터가 프로그램될 수 있다. 호스트 명령(Host Command)에 대응하여 입력된 새로운 데이터가 제1 메모리 다이(Die 0) 혹은 제3 메모리 다이(Die 2)에서 수행되는 경우, 다이 블록 모듈(272)을 통과하지 못하더라도 플래시 변환 계층(240)의 동작이 지연되지 않고 수행될 수 있다. 에러 처리 모듈(274)에 의해 제1 메모리 다이(Die 0, 292) 혹은 제3 메모리 다이(Die 2, 296)에서 오류 처리, 복구 동작이 끝나면, 호스트 명령(Host Command)에 대응하여 입력된 새로운 데이터에 대한 다이 블록 모듈(272)에 의한 차단은 해지되어 해당 데이터는 제1 메모리 다이(Die 0) 혹은 제3 메모리 다이(Die 2)로 전달될 수 있다. 제1 메모리 다이(Die 0) 혹은 제3 메모리 다이(Die 2)는 해당 데이터를 프로그램할 수 있다.
도 11은 프로그램 명령에 추가된 지시자에 따른 프로그램 동작 방법을 설명한다. 구체적으로, 도 11의 (A), (B), (C)는 메모리 장치(150) 내 제1 메모리 다이(Dio 0, 292)의 동작 상태에 따라 호스트 데이터를 저장하기 위한 동작(Host Command) 혹은 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)을 순차적으로 설명한다.
도 8, 도 10 및 도 11의 (A)를 참조하면, 제1 메모리 다이(Dio 0, 292)에서 발생한 에러로 인해 제1 메모리 다이(Dio 0, 292)의 에러를 복구하는 동작을 시작할 수 있다. 에러 처리 모듈(274)은 에러를 복구하기 위해 제1 메모리 다이(Dio 0, 292)에 저장된 데이터를 읽어 들어 다른 위치로 이동시킬 수 있다. 이때, 에러 처리 모듈(274)에 의해 제1 메모리 다이(Dio 0, 292) 내 오류를 복구하는 중이기 때문에, 제1 메모리 다이(Dio 0, 292)는 새로운 프로그램 동작을 수행할 수 없다. 제1 메모리 다이(Dio 0, 292)에 전달되는 데이터를 메타 데이터 계류 모듈(276)에 계류시키기 위해, 제1 메모리 다이(Dio 0, 292)는 메타 데이터 계류 모듈(276)를 활성화(SET =1)할 수 있도록 동작 상태를 전송할 수 있다. 메타 데이터 계류 모듈(276)은 제1 메모리 다이(Dio 0, 292)의 동작 상태에 대응하여 활성화되어, 제1 메모리 다이(Dio 0, 292)로 전달된 데이터를 전달하지 않고 계류시킬 수 있다.
도 11의 (B)를 참조하면, 제1 메모리 다이(Dio 0, 292)에서 발생한 에러로 인해 에러 처리 모듈(274)이 제1 메모리 다이(Dio 0, 292)의 에러를 복구하는 동작을 시작하면, 메타 데이터 계류 모듈(276)은 제1 메모리 다이(Dio 0, 292)의 동작 상태에 대응하여 활성화될 수 있다(SET = 1). 메타 데이터 계류 모듈(276)이 활성화되더라도, 메타 데이터 계류 모듈(276)에 전달된 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)의 경우 제1 메모리 다이(Dio 0, 292)에 전달될 수 있다. 이때, 메타 데이터 계류 모듈(276)에서 호스트 데이터와 달리 메타 데이터는 대기 혹은 계류하지 않기 위해 설정될 수 있다(Meta Write Flag: Clear). 또한, 에러 처리 모듈(274)이 제1 메모리 다이(Dio 0, 292) 내 오류를 복구하기 위해 제1 메모리 다이(Dio 0, 292)에 저장된 데이터를 읽는 동작을 일시적으로 중단시킬 수 있다.
실시예에 따라, 데이터 계류 모듈(276)은 제1 메모리 다이(Dio 0, 292)의 동작 상태에 대응하여 전달될 데이터를 임시 저장하는 버퍼를 포함할 수 있다. 데이터 계류 모듈(276)은 메모리 장치(150)에 포함된 메모리 다이, 메모리 플레인 혹은 메모리 블록의 동작 상태에 대응하여 버퍼에 저장된 데이터의 출력 혹은 계류를 제어할 수 있다. 예를 들어, 제1 메모리 다이(Dio 0, 292)가 데이터 입출력 동작을 수행 중인 경우, 데이터 계류 모듈(276)은 제1 메모리 다이(Dio 0, 292)에 전달될 새로운 호스트 데이터는 대기시킬 수 있으나, 제1 메모리 다이(Dio 0, 292)에 전달될 메타 데이터는 전달할 수 있다. 한편, 제1 메모리 다이(Dio 0, 292)에서 발생한 오류로 인해 데이터 입출력 동작이 불가능한 경우, 데이터 계류 모듈(276)은 제1 메모리 다이(Dio 0, 292)에 전달될 호스트 데이터 혹은 메타 데이터를 전달하지 않을 수 있다.
도 11의 (C)를 참조하면, 에러 처리 모듈(274)에 의해 제1 메모리 다이(Dio 0, 292) 내 오류에 대한 복구, 처리가 완료되면, 데이터 계류 모듈(276)을 비활성화시킬 수 있다(Clear = 0). 데이터 계류 모듈(276)이 비활성화되면, 데이터 계류 모듈(276)에 의해 제어되는 버퍼는 입력되는 데이터를 순차적으로 제1 메모리 다이(Dio 0, 292)에 전달할 수 있다. 데이터 계류 모듈(276)이 비활성화되면, 버퍼에 전달되거나 추가된 데이터를 계류시키는 동작이 수행되지 않을 수 있다. 따라서, 데이터 계류 모듈(276)이 계류시키는 동작을 수행하지 않으면, 플래시 변환 계층(FTL, 240)에서 처리된 데이터는 제1 메모리 다이(Dio 0, 292)에 순차적으로 전달되고, 제1 메모리 다이(Dio 0, 292)는 전달된 데이터를 순차적으로 프로그램할 수 있다.
도 12는 메모리 다이의 동작 상태에 따른 프로그램 동작 방법의 효과를 설명한다.
도 12는 도 10 및 도 11에서 설명한 바와 같이, 메모리 시스템(110)은 메타 데이터 통과 모듈(278), 다이 블록 모듈(272), 및 메타 데이터 계류 모듈(276)을 포함할 수 있다. 도 12는 도 10과 유사한 동작 환경(예, 제1 메모리 다이(Die 0, 292)에서 발생한 에러를 처리, 복구하기 위해, 제1 메모리 다이(Die 0)에 저장된 데이터를 읽은 후 제3 메모리 다이(Die 2, 296)에 저장하는 경우)에서의 효과를 설명한다.
제1 메모리 다이(Die 0, 292)와 제3 메모리 다이(Die 2, 296)는 에러를 처리, 복구하기 위해 사용되기 때문에, 제1 메모리 다이(Die 0)와 제3 메모리 다이(Die 2, 296)에 전달되는 호스트 데이터(즉, 호스트 명령(Host Command)에 동반된 쓰기 데이터)는 다이 블록 모듈(272)에 의해 차단될 수 있다. 하지만, 제1 메모리 다이(Die 0)와 제3 메모리 다이(Die 2, 296)에 저장되는 메타 데이터는 메타 데이터 통과 모듈(278)에 의해 다이 블록 모듈(272)을 통과할 수 있다. 제1 메모리 다이(Die 0)와 제3 메모리 다이(Die 2, 296)의 동작이 불가능한 것이 아닌 데이터 입출력 동작(예, 에러 복구를 위한 읽기, 쓰기 동작)을 수행 중인 경우, 메타 데이터 계류 모듈(276)은 메타 데이터를 저장하기 위한 동작(Meta/Journal Program)에 대응하여 메타 데이터를 계류시키지 않고 제1 메모리 다이(Die 0)와 제3 메모리 다이(Die 2, 296)에 전달할 수 있다.
한편, 제2 메모리 다이(Die 1, 294)와 제4 메모리 다이(Die 3, 298)는 에러를 처리, 복구하는 동작에 사용되지 않으므로, 호스트 명령(Host Command)에 동반된 쓰기 데이터인 호스트 데이터를 전달받을 수 있다. 제2 메모리 다이(Die 1, 294)와 제4 메모리 다이(Die 3, 298)는 호스트 데이터를 순차적으로 저장할 수 있다.
도 12를 참조하면, 메타 데이터가 지연, 계류없이 메모리 장치(150) 내 기 설정된 위치 혹은 임의의 위치에 프로그램될 수 있으므로, 플래시 변환 계층(FTL, 240)이 수행할 동작에 지연이 발생하지 않을 수 있다. 따라서, 메모리 시스템(110)의 데이터 입출력 성능이 개선될 수 있다.
도 13은 본 발명의 다른 실시예에 따른 메모리 시스템의 제1예를 설명한다.
도 13을 참조하면, 메모리 시스템(110)은 컨트롤러(130) 및 메모리 장치(150)를 포함할 수 있다. 메모리 장치(150)는 도 1 내지 도 2에서 설명한 복수의 메모리 블록(292, 294) 혹은 복수의 메모리 블록(152, 154, 156)을 포함할 수 있다.
컨트롤러(130)는 플래시 변환 계층(FTL, 240) 및 호스트 체크 모듈(262)을 포함할 수 있다. 도 1 내지 도 4에서 설명한 바와 같이, 플래시 변환 계층(FTL, 240)은 메모리 장치(150) 내 호스트(102)로부터 입력된 데이터를 저장할 위치를 결정할 수 있고, 메모리 장치(150)에 저장된 데이터에 관한 맵 정보를 포함한 메타 데이터를 생성할 수 있다. 플래시 변환 계층(FTL, 240)은 호스트 데이터와 메타 데이터를 메모리 장치(150)에 전달할 수 있다.
플래시 변환 계층(FTL, 240)은 메모리 장치(150)에 호스트 데이터 혹은 메타 데이터에 관한 프로그램 명령을 생성할 수 있다. 호스트 체크 모듈(262)은 플래시 변환 계층(FTL, 240)이 생성한 프로그램 명령에 식별자 혹은 키 값(key value)을 추가할 수 있다. 예를 들어, 호스트 데이터를 메모리 장치(150)에 저장하기 위한 프로그램 명령에 대응하는 식별자 혹은 키 값은 '1'로 설정될 수 있다. 반면, 메타 데이터를 메모리 장치(150)에 저장하기 위한 프로그램 명령에 대응하는 식별자 혹은 키 값은 '0'으로 설정될 수 있다.
프로그램 명령에 더해진 식별자 혹은 키 값이 설정되면, 메모리 장치(150)는 프로그램 명령과 함께 전달되는 데이터가 메타 데이터 인지 호스트 데이터 인지를 판단할 수 있다. 플래시 변환 계층(FTL, 240)과 메모리 장치(150) 사이에 메타 데이터 통과 모듈(278), 다이 블록 모듈(272), 혹은 메타 데이터 계류 모듈(276)이 포함된 경우, 메타 데이터 통과 모듈(278), 다이 블록 모듈(272), 혹은 메타 데이터 계류 모듈(276)은 프로그램 명령에 더해진 식별자 혹은 키 값을 확인하여, 해당 프로그램 명령이 메타 데이터 혹은 호스트 데이터에 관한 것인지를 확인할 수 있다.
도 14는 본 발명의 다른 실시예에 따른 메모리 시스템의 제2예를 설명한다.
도 14를 참조하면, 메모리 시스템(110) 내 플래시 변환 계층(FTL, 240)과 메모리 장치(150) 사이에 메타 데이터 통과 모듈(278)이 포함될 수 있다.
메모리 장치(150)에서 에러가 발생하면, 메모리 장치(150)는 발생한 에러에 대응하여 메타 데이터 통과 모듈(278)에 오류에 대한 정보를 통지할 수 있다. 메모리 장치(150)는 에러가 발생한 프로그램 명령을 플래시 변환 계층(240)으로 전달할 수 있고, 메모리 장치(150)는 에러가 발생한 프로그램 명령에 식별자를 덧붙여 전송할 수 있다. 메타 데이터 통과 모듈(278)은 메모리 장치(150)에서 전달된 식별자를 기초하여 활성화 여부를 결정할 수 있다. 예를 들어, 메모리 장치(150)가 에러가 발생한 프로그램 명령을 플래시 변환 계층(240)에 전송할 때, 해당 프로그램 명령에 덧붙여진 식별자가 '1'인 경우, 메타 데이터 통과 모듈(278)은 활성화될 수 있다.
식별자를 통해, 메타 데이터 통과 모듈(278)은 메타 데이터를 메모리 장치(150)에 전달할 것인지 메타 데이터를 메모리 장치(150)에 전달하지 않을 지를 결정할 수 있다. 메모리 장치(150)는 내부에서 발생한 에러를 처리, 복구하는 과정에서 메타 데이터를 프로그램할 수 있는 지에 따라 식별자를 결정할 수 있다. 실시예에 따라, 메모리 장치(150)가 에러를 처리, 복구하기 위해 데이터 입출력 동작(예, 읽기, 쓰기 동작 등)을 수행하는 경우에는 식별자를 '1'로 설정할 수 있다. 식별자가 '1'인 경우, 메타 데이터는 통과되지만 호스트 데이터는 통과되지 않을 수 있다. 반면, 식별자가 '0'인 경우, 메타 데이터 통과 모듈(278)은 비활성화될 수 있다. 메타 데이터 통과 모듈(278)가 비활성화되면, 메타 데이터 통과 모듈(278)은 메타 데이터 뿐만 아니라 호스트 데이터를 통과시킬 수 있다.
도 15는 본 발명의 다른 실시예에 따른 메모리 시스템의 제3예를 설명한다.
도 15를 참조하면, 메모리 시스템(110)에 포함된 메타 데이터 통과 모듈(278)이 활성화되었을 때의 동작을 설명한다.
도 13을 참조하면, 플래시 변환 계층(FTL, 240)으로부터 전달된 프로그램 명령은 식별자 혹은 키 값을 포함할 수 있다. 호스트 데이터를 메모리 장치(150)에 저장하기 위한 프로그램 명령에 대응하는 식별자 혹은 키 값은 '1'로 설정되고, 메타 데이터를 메모리 장치(150)에 저장하기 위한 프로그램 명령에 더해진 식별자는 '0'으로 설정될 수 있다.
메타 데이터 통과 모듈(278)이 활성화되면, 프로그램 명령의 식별자가 '1'인 경우, 해당 프로그램 명령을 플래시 변환 계층(FTL, 240)으로 되돌릴 수 있다(Return to FTL). 반면, 프로그램 명령의 식별자가 '0'인 경우, 해당 프로그램 명령을 메모리 장치(150)로 전달할 수 있다(Issue to Storage).
도 16은 본 발명의 다른 실시예에 따른 메모리 시스템의 제4예를 설명한다.
도 16을 참조하면, 메모리 시스템(110) 내 플래시 변환 계층(FTL, 240)과 메모리 장치(150) 사이에 메타 데이터 계류 모듈(276)이 포함될 수 있다. 플래시 변환 계층(FTL, 240)에서 메타 데이터를 메모리 장치(150)에 저장하기 위한 프로그램 명령(270)이 메타 데이터 계류 모듈(276)에 전달될 수 있다. 이때, 프로그램 명령(270)은 메타 데이터에 관한 것이므로 '0'의 식별자를 포함할 수 있다.
메타 데이터 계류 모듈(276)은 버퍼에 프로그램 명령(270)과 메타 데이터를 임시 저장할 수 있다. 이후, 메타 데이터 계류 모듈(276)은 메모리 장치(150)에서 수행 중인 에러 확인, 처리, 복구 동작을 확인할 수 있다(① Check Pending). 메모리 장치(150)에서 수행 중인 에러 확인, 처리, 복구 동작은 에러의 크기, 에러가 발생한 위치에 대응하는 단위 별로 수행될 수 있다. 메모리 장치(150)에서 수행 중인 에러 확인, 처리, 복구 동작 중 현재 수행 중인 단위 동작이 종료되면, 메타 데이터 계류 모듈(276)은 버퍼에 임시 저장된 프로그램 명령(270)과 메타 데이터를 메모리 장치(150)로 전달할 수 있다(② Issue Pending Command). 메모리 장치(150)는 프로그램 명령(270)과 메타 데이터를 수신하여 기 설정된 위치 혹은 임의의 위치에 메타 데이터를 프로그램할 수 있다.
도 17은 본 발명의 다른 실시예에 따른 메모리 시스템의 제5예를 설명한다.
도 17을 참조하면, 메모리 시스템(110) 내 플래시 변환 계층(FTL, 240)과 메모리 장치(150) 사이에 메타 데이터 통과 모듈(278) 및 메타 데이터 계류 모듈(276)이 포함될 수 있다.
메타 데이터 계류 모듈(276)은 메모리 장치(150)에서 수행되는 에러 확인, 처리, 복구 동작을 단위 동작마다 확인할 수 있고, 메모리 장치(150)에서 수행되는 에러 확인, 처리, 복구 동작이 종료되었는 지를 확인할 수 있다. 메타 데이터 계류 모듈(276)은 에러 확인, 처리, 복구 동작이 종료되면 메타 데이터 통과 모듈(278)를 비활성화(Deactivate)시킬 수 있다. 메타 데이터 통과 모듈(278)이 비활성화(Deactivate)되면, 호스트 데이터 혹은 메타 데이터 모두가 순차적으로 메모리 장치(150)에 전달될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 적어도 하나의 저장 공간을 포함하는 메모리 장치; 및
    외부 장치에서 전달된 쓰기 데이터와 상기 메모리 장치에 저장된 데이터에 관한 메타 데이터를 구분하여, 상기 저장 공간의 동작 상태에 대응하여 상기 쓰기 데이터를 전달하기 위한 버퍼에 포함시키고 상기 메타 데이터는 상기 동작 상태와 관련 없이 상기 버퍼에 포함시키며, 상기 버퍼에 포함된 상기 쓰기 데이터 혹은 상기 메타 데이터를 상기 메모리 장치로 전달하는 컨트롤러
    를 포함하는, 메모리 시스템.
  2. 제1항에 있어서,
    상기 적어도 하나의 저장 공간은 존단위 네임스페이스(Zoned Namespace)에 대응하여 할당되며,
    상기 적어도 하나의 저장 공간에서 에러가 발생하면 상기 에러를 복구한 후, 상기 메타 데이터를 상기 적어도 하나의 저장 공간에 저장하는 에러 처리 모듈
    을 더 포함하는, 메모리 시스템.
  3. 제2항에 있어서,
    상기 에러 처리 모듈은 상기 저장 공간에 포함되며,
    상기 적어도 하나의 저장 공간은 적어도 하나의 메모리 다이를 포함하는,
    메모리 시스템.
  4. 제2항에 있어서,
    상기 에러 처리 모듈은 상기 컨트롤러에 포함되며,
    상기 적어도 하나의 저장 공간은 적어도 하나의 메모리 블록을 포함하는,
    메모리 시스템.
  5. 제2항에 있어서,
    상기 컨트롤러는
    상기 쓰기 데이터를 저장할 저장 공간을 확인하고 상기 쓰기 데이터에 대한 메타 데이터를 생성하는 플래시 변환 모듈;
    상기 에러 처리 모듈이 상기 저장 공간에서 발생한 에러를 감지하면, 상기 저장 공간으로 전달되는 상기 쓰기 데이터와 상기 메타 데이터를 차단하는 차단 모듈; 및
    상기 차단 모듈에서 상기 메타 데이터를 통과시키는 메타 데이터 통과 모듈
    을 포함하는, 메모리 시스템.
  6. 제5항에 있어서,
    상기 컨트롤러는
    상기 에러 처리 모듈이 상기 적어도 하나의 저장 공간에서 상기 에러를 복구하는 동안 상기 메타 데이터를 상기 버퍼에 계류(pending)시킬 수 있는 메타 데이터 계류 모듈
    을 더 포함하는, 메모리 시스템.
  7. 제5항에 있어서,
    상기 플래시 변환 모듈은 상기 쓰기 데이터를 상기 메모리 장치에 프로그램하기 위한 제1 명령과 상기 메타 데이터를 상기 메모리 장치에 프로그램하기 위한 제2 명령에 서로 다른 식별자를 추가하는,
    메모리 시스템.
  8. 제2항에 있어서,
    상기 컨트롤러는
    상기 쓰기 데이터를 저장할 저장 공간을 확인하고 상기 쓰기 데이터에 대한 메타 데이터를 생성하는 플래시 변환 모듈; 및
    상기 에러 처리 모듈이 상기 저장 공간에서 발생한 에러를 감지하면, 상기 저장 공간으로 전달되는 상기 쓰기 데이터를 차단하고 상기 메타 데이터를 통과시키는 메타 데이터 통과 모듈
    을 포함하는, 메모리 시스템.
  9. 제1항에 있어서,
    상기 컨트롤러는 상기 쓰기 데이터를 상기 쓰기 데이터에 대응하는 논리 주소가 포함된 상기 존단위 네임스페이스에 대응하여 할당되는 저장 공간에 순차적으로 프로그램되도록 상기 메모리 장치를 제어하고,
    상기 버퍼는 상기 적어도 하나의 저장 공간을 포함하는 메모리 다이 혹은 메모리 플레인에 대응하여 배치되는,
    메모리 시스템.
  10. 제1항에 있어서,
    상기 컨트롤러는
    상기 적어도 하나의 저장 공간에 저장되는 쓰기 데이터에 대한 메타 데이터를 생성한 후, 생성된 메타 데이터는 상기 메모리 장치 내 상기 적어도 하나의 저장 공간이 아닌 다른 저장 공간에 저장하는,
    메모리 시스템.
  11. 적어도 하나의 저장 공간을 포함하는 메모리 장치에 외부 장치에서 전달된 쓰기 데이터와 상기 메모리 장치에 저장된 데이터에 관한 메타 데이터를 구분하는 단계;
    상기 저장 공간의 동작 상태에 대응하여 상기 쓰기 데이터를 전달하기 위한 버퍼에 포함시키고 상기 메타 데이터는 상기 동작 상태와 관련 없이 상기 버퍼에 포함시키는 단계; 및
    상기 버퍼에 포함된 상기 쓰기 데이터 혹은 상기 메타 데이터를 상기 메모리 장치로 전송하는 단계
    를 포함하는, 메모리 시스템의 동작 방법.
  12. 제11항에 있어서,
    상기 적어도 하나의 저장 공간은 존단위 네임스페이스(Zoned Namespace)에 대응하여 할당하는 단계; 및
    상기 적어도 하나의 저장 공간에서 에러가 발생하면 상기 에러를 복구한 후, 상기 메타 데이터를 상기 적어도 하나의 저장 공간에 저장하는 단계
    를 더 포함하는, 메모리 시스템의 동작 방법.
  13. 제12항에 있어서,
    상기 버퍼에 포함시키는 단계는
    상기 저장 공간에서 발생한 에러가 감지되면, 상기 버퍼에 데이터가 추가되는 것을 차단하는 단계; 및
    상기 메타 데이터를 상기 버퍼에 추가하는 단계
    를 포함하는, 메모리 시스템의 동작방법.
  14. 제13항에 있어서,
    상기 적어도 하나의 저장 공간에서 상기 에러를 복구하는 동안 상기 메타 데이터를 상기 버퍼에서 계류(pending)시키는 단계
    를 더 포함하는, 메모리 시스템의 동작 방법.
  15. 제13항에 있어서,
    상기 쓰기 데이터를 상기 메모리 장치에 프로그램하기 위한 제1 명령과 상기 메타 데이터를 상기 메모리 장치에 프로그램하기 위한 제2 명령에 서로 다른 식별자를 추가하는 단계
    를 더 포함하는, 메모리 시스템의 동작방법.
  16. 제12항에 있어서,
    상기 쓰기 데이터를 저장할 저장 공간을 확인하고 상기 쓰기 데이터에 대한 메타 데이터를 생성하는 단계
    를 더 포함하는, 메모리 시스템의 동작방법.
  17. 제11항에 있어서,
    상기 쓰기 데이터를 상기 쓰기 데이터에 대응하는 논리 주소가 포함된 상기 존단위 네임스페이스에 대응하여 할당되는 저장 공간에 순차적으로 프로그램하는 단계
    를 더 포함하는, 메모리 시스템의 동작방법.
  18. 제11항에 있어서,
    상기 쓰기 데이터에 대응하는 메타 데이터를 생성한 후, 상기 메타 데이터는 상기 쓰기 데이터가 프로그램된 저장 공간과 다른 저장 공간에 프로그램하는 단계
    를 더 포함하는, 메모리 시스템의 동작방법.
  19. 복수의 블록 혹은 복수의 다이를 포함하는 메모리 장치; 및
    상기 복수의 블록 혹은 상기 복수의 다이를 복수의 존(zone) 각각에 할당하고, 호스트로부터 쓰기 데이터와 상기 쓰기 데이터에 대한 논리 주소를 수신하고, 상기 논리 주소에 대응하는 상기 복수의 존 중 하나의 존에 상기 쓰기 데이터를 전달하기 위해 상기 하나의 존에 대응하는 블록 혹은 다이에서 발생된 에러의 처리 여부에 대응하여 상기 블록 혹은 다이에 대응하는 버퍼에 상기 쓰기 데이터를 포함하며, 상기 메모리 장치에 저장된 데이터에 관한 메타 데이터를 전달하기 위해 상기 에러의 처리 여부와 관련없이 상기 버퍼에 상기 메타 데이터를 포함시키는 컨트롤러
    를 포함하는, 메모리 시스템.
  20. 제19항에 있어서,
    상기 쓰기 데이터는 상기 논리 주소에 대응하여 상기 메모리 장치 내 순차적으로 프로그램되며, 상기 메타 데이터는 상기 쓰기 데이터와 관련 없이 상기 메모리 장치 내 임의의 위치에 프로그램되는,
    메모리 시스템.
KR1020210159566A 2021-11-18 2021-11-18 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법 KR20230072886A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020210159566A KR20230072886A (ko) 2021-11-18 2021-11-18 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법
US17/828,443 US20230153032A1 (en) 2021-11-18 2022-05-31 Apparatus and method for improving data input/output performance of storage
CN202210766947.8A CN116136739A (zh) 2021-11-18 2022-06-30 用于改善存储装置的数据输入/输出性能的设备和方法
TW111135317A TW202322129A (zh) 2021-11-18 2022-09-19 用於改善存儲裝置的資料輸入/輸出性能的設備和方法
DE102022210344.0A DE102022210344A1 (de) 2021-11-18 2022-09-29 Vorrichtung und verfahren zum verbessern der dateneingabe-/-ausgabeleistung eines speichers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210159566A KR20230072886A (ko) 2021-11-18 2021-11-18 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20230072886A true KR20230072886A (ko) 2023-05-25

Family

ID=86227600

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210159566A KR20230072886A (ko) 2021-11-18 2021-11-18 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법

Country Status (5)

Country Link
US (1) US20230153032A1 (ko)
KR (1) KR20230072886A (ko)
CN (1) CN116136739A (ko)
DE (1) DE102022210344A1 (ko)
TW (1) TW202322129A (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8032707B2 (en) * 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US10474584B2 (en) * 2012-04-30 2019-11-12 Hewlett Packard Enterprise Development Lp Storing cache metadata separately from integrated circuit containing cache controller
JP2014153873A (ja) * 2013-02-07 2014-08-25 Canon Inc 情報処理装置、情報処理方法およびプログラム
US10671635B2 (en) * 2013-02-27 2020-06-02 Hitachi Vantara Llc Decoupled content and metadata in a distributed object storage ecosystem
US20180089088A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache
KR102281966B1 (ko) * 2017-11-01 2021-07-26 삼성전자주식회사 데이터 스토리지 장치 및 그 동작 방법
US11775179B2 (en) * 2021-08-27 2023-10-03 Micron Technology, Inc. Enabling stripe-based operations for error recovery at a memory sub-system

Also Published As

Publication number Publication date
TW202322129A (zh) 2023-06-01
CN116136739A (zh) 2023-05-19
US20230153032A1 (en) 2023-05-18
DE102022210344A1 (de) 2023-05-25

Similar Documents

Publication Publication Date Title
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
CN112445723A (zh) 用于在存储器系统中的传输映射信息的装置和方法
US20210279180A1 (en) Apparatus and method for controlling map data in a memory system
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
US11861189B2 (en) Calibration apparatus and method for data communication in a memory system
KR20210124705A (ko) 메모리 시스템 내 맵 정보를 제어하는 장치 및 방법
US11507501B2 (en) Apparatus and method for transmitting, based on assignment of block to HPB region, metadata generated by a non-volatile memory system
KR20220103378A (ko) 메모리 시스템에 저장된 데이터를 처리하는 장치 및 방법
KR20210131058A (ko) 메모리 시스템 내 데이터를 보호하는 장치 및 방법
US20230073200A1 (en) Apparatus and method for controlling a shared memory in a data processing system
US20210365183A1 (en) Apparatus and method for increasing operation efficiency in data processing system
KR20230147950A (ko) 시스템 내 전원 손실 데이터 보호를 위한 장치 및 방법
KR20220049230A (ko) 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법
US11550502B2 (en) Apparatus and method for controlling multi-stream program operations performed in a memory block included in a memory system
KR20220086934A (ko) 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법
KR20220032826A (ko) 메모리 시스템 내 맵 정보를 제어 및 저장하는 장치 및 방법
KR20210114718A (ko) 리드 동작을 수행하는 메모리 시스템 및 메모리 시스템의 동작방법
KR20230072886A (ko) 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법
US11893269B2 (en) Apparatus and method for improving read performance in a system
US11704068B2 (en) Apparatus and method for scheduling operations performed in plural memory devices included in a memory system
KR20230036682A (ko) 인터리빙 동작을 지원하는 메모리 장치, 메모리 시스템 및 그의 동작 방법
US11775426B2 (en) Apparatus and method for securing a free memory block in a memory system
US20240126462A1 (en) Apparatus and method for managing map data between host and memory system
KR20240048774A (ko) 호스트와 메모리 시스템이 데이터를 공유하는 장치 및 방법