KR102583244B1 - 스토리지 장치 및 스토리지 장치의 동작 방법 - Google Patents

스토리지 장치 및 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR102583244B1
KR102583244B1 KR1020220013146A KR20220013146A KR102583244B1 KR 102583244 B1 KR102583244 B1 KR 102583244B1 KR 1020220013146 A KR1020220013146 A KR 1020220013146A KR 20220013146 A KR20220013146 A KR 20220013146A KR 102583244 B1 KR102583244 B1 KR 102583244B1
Authority
KR
South Korea
Prior art keywords
controller
command
data
read
volatile memory
Prior art date
Application number
KR1020220013146A
Other languages
English (en)
Other versions
KR20230116341A (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 KR1020220013146A priority Critical patent/KR102583244B1/ko
Priority to US17/946,239 priority patent/US20230244402A1/en
Priority to EP22206606.0A priority patent/EP4220374A1/en
Priority to CN202310012373.XA priority patent/CN116521059A/zh
Publication of KR20230116341A publication Critical patent/KR20230116341A/ko
Application granted granted Critical
Publication of KR102583244B1 publication Critical patent/KR102583244B1/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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

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

Abstract

본 기재는 스토리지 장치에 관한 것이다. 본 기재의 스토리지 장치는 불휘발성 메모리 장치; 그리고 불휘발성 메모리 장치의 저장 공간을 복수의 존들로 분할하여 액세스하는 컨트롤러를 포함하고, 복수의 존들의 각각은 불휘발성 메모리 장치의 연속한 물리 어드레스들에 대응하고, 컨트롤러는 복수의 존들의 각각의 연속한 물리 어드레스들을 연속한 논리 어드레스들과 매핑하고, 외부의 호스트 장치로부터 카피 명령이 수신되는 것에 응답하여, 컨트롤러는 복수의 존들 중 제1 존의 데이터를 제2 존으로 카피하는 카피 동작을 시작하여 불휘발성 메모리 장치에 제1 읽기 명령들 및 제1 쓰기 명령들을 전송하고, 그리고 카피 동작이 완료되기 전에 외부의 호스트 장치로부터 서스펜드 명령이 수신되는 것에 응답하여, 컨트롤러는 카피 동작을 중지하고, 카피 동작의 진행 상태를 저장하고, 외부의 호스트 장치로 서스펜드 응답을 전송한다.

Description

스토리지 장치 및 스토리지 장치의 동작 방법{STORAGE DEVICE AND OPERATING METHOD OF STORAGE DEVICE}
본 기재는 전자 장치에 관한 것으로, 더 상세하게는 카피 동작의 중지 및 재개를 지원하는 스토리지 장치 및 스토리지 장치의 동작 방법에 관한 것이다.
스토리지 장치는 전원이 소실되어도 저장된 데이터를 유지하는 불휘발성 매체이다. 스토리지 장치는 운영 체제, 응용들과 같은 다양한 소프트웨어들의 원본 데이터를 저장하는데 사용될 수 있다. 스토리지 장치는 다양한 전자 장치들에서 필수적인 구성 요소로 사용되고 있다.
스토리지 장치가 사용되는 분야들이 확장되면서, 스토리지 장치에 요구되는 특색들이 다양하게 제기되고 있다. 예를 들어, 특정한 응용 분야에서는 스토리지 장치가 호스트 장치의 부하를 오프로딩하는 특색이 요구될 수 있다. 또는, 다른 특정한 응용 분야에서는 스토리지 장치가 복잡한 기능을 갖지 않고 저렴한 비용으로 구현될 것이 요구될 수 있다. 따라서, 다양한 요구들에 따라 다양한 특색들을 갖는 스토리지 장치들이 연구되고 있다.
본 기재의 목적은 구획된(zoned) 저장 공간의 카피 동작 시에 읽기 레이턴시를 줄이는 스토리지 장치 및 스토리지 장치의 동작 방법을 제공하는데 있다.
본 기재의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치; 그리고 불휘발성 메모리 장치의 저장 공간을 복수의 존들로 분할하여 액세스하는 컨트롤러를 포함하고, 복수의 존들의 각각은 불휘발성 메모리 장치의 연속한 물리 어드레스들에 대응하고, 컨트롤러는 복수의 존들의 각각의 연속한 물리 어드레스들을 연속한 논리 어드레스들과 매핑하고, 외부의 호스트 장치로부터 카피 명령이 수신되는 것에 응답하여, 컨트롤러는 복수의 존들 중 제1 존의 데이터를 제2 존으로 카피하는 카피 동작을 시작하여 불휘발성 메모리 장치에 제1 읽기 명령들 및 제1 쓰기 명령들을 전송하고, 그리고 카피 동작이 완료되기 전에 외부의 호스트 장치로부터 서스펜드 명령이 수신되는 것에 응답하여, 컨트롤러는 카피 동작을 중지하고, 카피 동작의 진행 상태를 저장하고, 외부의 호스트 장치로 서스펜드 응답을 전송한다.
본 기재의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치; 그리고 불휘발성 메모리 장치의 저장 공간을 복수의 존들로 분할하여 액세스하는 컨트롤러를 포함하고, 복수의 존들의 각각은 불휘발성 메모리 장치의 연속한 물리 어드레스들에 대응하고, 컨트롤러는 복수의 존들의 각각의 연속한 물리 어드레스들을 연속한 논리 어드레스들과 매핑하고, 외부의 호스트 장치로부터 제1 UPIU(UFS Protocol Information Unit)가 수신되는 것에 응답하여, 컨트롤러는 복수의 존들 중 제1 존의 데이터를 제2 존으로 카피하는 카피 동작을 시작하여 불휘발성 메모리 장치에 제1 읽기 명령들 및 제1 쓰기 명령들을 전송하고, 그리고 카피 동작이 완료되기 전에 외부의 호스트 장치로부터 제2 UPIU가 수신되는 것에 응답하여, 컨트롤러는 카피 동작을 중지하고, 카피 동작의 진행 상태를 저장하고, 외부의 호스트 장치로 응답 UPIU를 전송한다.
본 기재의 실시 예에 따른 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치의 동작 방법은, 컨트롤러가 외부의 호스트 장치로부터 카피 명령을 수신하는 단계, 컨트롤러가 복수의 존들 중 제1 존의 데이터를 제2 존으로 카피하는 카피 동작을 시작하여 불휘발성 메모리 장치로 제1 읽기 명령들 및 제1 쓰기 명령들을 전송하는 단계, 컨트롤러가 외부의 호스트 장치로부터 서스펜드 명령을 수신하는 단계, 컨트롤러가 서스펜드 명령에 응답하여 카피 동작을 중지하고 그리고 외부의 호스트 장치에 서스펜드 응답을 전송하는 단계, 컨트롤러가 외부의 호스트 장치로부터 제2 읽기 명령을 수신하는 단계, 읽기 명령에 응답하여 컨트롤러가 불휘발성 메모리 장치로부터 데이터를 읽고 그리고 읽혀진 데이터를 포함하는 읽기 응답을 외부의 호스트 장치로 전송하는 단계; 그리고 컨트롤러가 카피 동작을 재개하는 단계를 포함한다.
본 기재에 따르면, 구획된(zoned) 저장 공간의 카피 동작은 중지 및 재개될 수 있다. 따라서, 카피 동작 시에 읽기 레이턴시가 감소하는 스토리지 장치 및 스토리지 장치의 동작 방법이 제공된다.
도 1은 본 발명의 예시적인 실시 예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
도 2는 스토리지 장치의 저장 공간이 존들로 분할되는 예를 보여준다.
도 3은 호스트-스토리지 시스템에서 쓰기 동작이 수행되는 과정의 예를 보여준다.
도 4는 호스트-스토리지 시스템에서 카피 동작이 수행되는 과정의 예를 보여준다.
도 5는 카피 명령을 이용하여 가비지 컬렉션이 수행되는 예를 보여준다.
도 6은 호스트-스토리지 시스템에서 카피 동작의 중지 및 재개가 수행되는 과정의 예를 보여준다.
도 7은 호스트-스토리지 시스템에서 카피 동작의 중지 및 재개가 수행되는 과정의 다른 예를 보여준다.
도 8은 본 발명의 일 실시 예에 따른 UFS 시스템에 대해 설명하기 위한 도면이다.
도 9는 도 8의 UFS 시스템이 자동 재개 모드에서 동작하는 과정의 예를 보여준다.
도 10은 도 8의 UFS 시스템이 호스트 제어 모드에서 동작하는 과정의 예를 보여준다.
도 11은 본 발명의 하나의 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.
도 12는 본 발명의 실시 예에 따른 불휘발성 메모리를 보여주는 블록도이다.
도 13은 존들의 논리 주소들과 불휘발성 메모리의 물리 주소들이 매핑되는 예를 보여준다.
도 14는 본 기재의 일 실시 예에 따른 시스템을 도시한 도면이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다. 아래에서, '그리고/또는'의 용어는 해당 용어와 연관되어 나열된 항목들의 어느 하나, 그리고 연관되어 나열된 항목들 중 일부 또는 전부의 조합을 포함하는 것으로 해석된다.
도 1은 본 발명의 예시적인 실시 예에 따른 호스트-스토리지 시스템(10)을 나타내는 블록도이다.
도 1을 참조하면, 호스트-스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 불휘발성 메모리 (NVM)(220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시 예에 따라, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(200)의 불휘발성 메모리(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 불휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
일 실시 예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시 예들에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 불휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(110)는 호스트 메모리(120)의 버퍼 영역의 데이터(예컨대, 기록 데이터)를 불휘발성 메모리(220)에 저장하거나, 불휘발성 메모리(220)의 데이터(예컨대, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 CPU(central processing unit)(213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 레이어(Flash Translation Layer; FTL)(214), 패킷 매니저(215), 버퍼 메모리(216), ECC(error correction code)(217) 엔진 및 AES(advanced encryption standard) 엔진(218)을 더 포함할 수 있다. 스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL)(214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(213)가 플래시 변환 레이어를 실행하는 것에 의해 불휘발성 메모리(220)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
호스트 인터페이스(211)는 호스트(100)와 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 불휘발성 메모리(220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 불휘발성 메모리(220)로부터 독출된 데이터 등을 포함할 수 있다. 메모리 인터페이스(212)는 불휘발성 메모리(220)에 기록될 데이터를 불휘발성 메모리(220)로 송신하거나, 불휘발성 메모리(220)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 계층(214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(100)로부터 수신한 논리 어드레스(logical address)를, 불휘발성 메모리(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 불휘발성 메모리(220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다.
패킷 매니저(215)는 호스트(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(100)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(216)는 불휘발성 메모리(220)에 기록될 데이터 혹은 불휘발성 메모리(220)로부터 독출될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다.
ECC 엔진(217)은 불휘발성 메모리(220)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 불휘발성 메모리(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 불휘발성 메모리(220) 내에 저장될 수 있다. 불휘발성 메모리(220)로부터의 데이터 독출 시, ECC 엔진(217)은 독출 데이터와 함께 불휘발성 메모리(220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
AES 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
예시적으로, 스토리지 장치(200)는 구획된 장치(zoned device)일 수 있다. 스토리지 장치(200)의 저장 공간은 복수의 존들로 분할될 수 있다. 스토리지 장치(200)는 복수의 존들의 각각에서 순차 쓰기만을 지원할 수 있다. 스토리지 장치(200)의 복수의 존들의 각각에서, 랜덤 쓰기는 금지될 수 있다. 스토리지 장치(200)는 ZNS(Zoned NameSpace), ZBD(Zoned Block Device) 등과 같은 다양한 표준들에 기반하여 구현될 수 있다.
도 2는 스토리지 장치(200)의 저장 공간이 존들로 분할되는 예를 보여준다.
도 1 및 도 2를 참조하면, 스토리지 장치(200)의 저장 공간은 제1 내지 제m 존들(Z1~Zm)로 분할될 수 있다. 제1 존(Z1)의 저장 공간은 제11 내지 제1n 논리 블록 어드레스들(LBA11~LBA1n)에 대응할 수 있다. 제2 존(Z2)의 저장 공간은 제21 내지 제2n 논리 블록 어드레스들(LBA21~LBA2n)에 대응할 수 있다. 제m 존(Zm)의 저장 공간은 제m1 내지 제mn 논리 블록 어드레스들(LBAm1~LBAmn)에 대응할 수 있다.
각 존의 논리 블록 어드레스들은 연속할 수 있다. 각 존의 연속한 논리 블록 어드레스들은 불휘발성 메모리(220)의 연속한 물리 블록 어드레스들에 대응할 수 있다. 스토리지 장치(200)는 각 존에서 순차 쓰기를 지원하고, 랜덤 쓰기를 지원하지 않을 수 있다.
호스트(100)는 스토리지 장치(200)의 제1 내지 제m 존들(Z1~Zm)의 정보를 스토리지 장치(200)로부터 수신할 수 있다. 호스트(100)는 제1 내지 제m 존들(Z1~Zm) 중 하나 또는 그보다 많은 존들을 열(open) 수 있다. 호스트(100)는 열린 존들의 각각에 대해 순차 쓰기를 스토리지 장치(200)에 요청할 수 있다. 호스트(100)는 제1 내지 제m 존들(Z1~Zm)의 각각에 대해 랜덤 또는 순차 읽기를 스토리지 장치(200)에 요청할 수 있다.
호스트(100)는 논리 블록 어드레스들에 기반하여 스토리지 장치(200)의 저장 공간을 액세스할 수 있다. 그러나 호스트(100)는 논리 블록 어드레스의 단위로 스토리지 장치(200)의 데이터를 소거, 무효화 또는 디스카드(discard)하는 것이 금지될 수 있다. 호스트(100)는 존의 단위로 스토리지 장치(200)의 데이터를 소거, 무효화 또는 디스카드하도록 허용될 수 있다. 호스트(100)는 제1 내지 제m 존들(Z1~Zm)의 각각을 초기화 함으로써, 각 존에 저장된 데이터 전체를 소거, 무효화 또는 디스카드할 수 있다.
호스트(100)에 의해 존이 관리되므로, 스토리지 장치(200)의 컨트롤러(210)는 자체적으로, 예를 들어 배경 동작을 통해 불휘발성 메모리(220)에 저장된 데이터를 카피, 무효화, 또는 소거하는 것이 금지될 수 있다. 호스트(100)에 의해 존이 관리되므로, 스토리지 장치(200)의 컨트롤러(210)가 관리하는 매핑 테이블, 예를 들어 논리 블록 어드레스들과 물리 블록 어드레스들의 매핑 테이블은 간소화될 수 있다. 예를 들어, 매핑 테이블은 제1 내지 제m 존들(Z1~Zm)의 수에 대응하는 매핑 정보를 저장하므로, 매핑 테이블의 사이즈가 감소될 수 있다.
매핑 테이블의 사이즈가 감소되면, 매핑 테이블을 로드하기 위한 버퍼 메모리(예를 들어, 216)의 사이즈가 감소될 수 있다. 따라서, 호스트-스토리지 시스템(10)은 순차 쓰기가 주요 쓰기로 발생하는 환경에서 고속 및 저비용으로 구현될 수 있다.
도 3은 호스트-스토리지 시스템(10)에서 쓰기 동작이 수행되는 과정의 예를 보여준다.
도 1 및 도 3을 참조하면, S110 단계에서, 호스트(100)는 컨트롤러(210)로 쓰기 명령(또는 커맨드)을 전송할 수 있다. 예를 들어, 쓰기 명령은 논리 블록 어드레스 또는 쓰기 포인터를 포함할 수 있다. 쓰기 포인터는 각 존에서 다음 데이터를 기입할 위치에 대한 정보를 포함할 수 있다.
S120 단계에서, 컨트롤러(210)는 어드레스 매핑을 수행할 수 있다. 예를 들어, 쓰기 명령에 논리 블록 어드레스가 포함된 때에, 컨트롤러(210)의 플래시 변환 계층(214)은 논리 블록 어드레스를 물리 블록 어드레스로 변환할 수 있다. 쓰기 명령에 쓰기 포인터가 포함된 때에, 플래시 변환 계층(214)은 쓰기 포인터를 물리 블록 어드레스로 변환할 수 있다. 쓰기 명령에 논리 블록 어드레스 또는 쓰기 포인터가 포함되지 않은 때에, 플래시 변환 계층(214)은 쓰기 명령에 대응하는 존의 현재 쓰기 포인터의 위치에 대응하는 물리 블록 어드레스를 식별할 수 있다.
S130 단계에서, 컨트롤러(210)는 물리 블록 어드레스를 포함하는 쓰기 명령을 불휘발성 메모리(220)로 전송할 수 있다. 예시적으로, S110 단계의 쓰기 명령과 S130 단계의 쓰기 명령은 동일한 용어들을 사용하지만, S110 단계의 쓰기 명령과 S130 단계의 쓰기 명령은 서로 다를 수 있다.
예를 들어, S110 단계의 쓰기 명령은 호스트(100)와 컨트롤러(210) 사이의 인터페이스에 대응할 수 있다. S110 단계의 쓰기 명령은 NVMe(Non Volatile Memory express), UFS(Universal Flash Storage), PCIe(Peripheral Component Interconnect express), SATA(Serial Advanced Technology Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI) 등과 같은 통신 프로토콜에 기반할 수 있다. 예를 들어, S110 단계의 쓰기 명령은 큐잉(queuing), 라이트 백(write back)과 같은 컨트롤러(210)의 논리적인 버퍼링에 의존하는 통신 프로토콜에 기반할 수 있다.
S130 단계의 쓰기 명령은 Toggle NAND, ONFI 등과 같은 메모리 인터페이스 프로토콜에 기반할 수 있다. 예를 들어, S130 단계의 쓰기 명령은 큐잉, 라이트 백과 같은 논리적인 버퍼링이 필요한 통신 프로토콜과 달리, 라이트 스루(write through)만을 지원하는 통신 프로토콜에 기반할 수 있다.
이하에서, 별도로 다르게 언급되지 않으면, 호스트(100)와 컨트롤러(210) 사이의 명령과 컨트롤러(210)와 불휘발성 메모리(220) 사이의 명령은 상술된 바와 같이 서로 구별되는 것으로 해석된다.
S130 단계의 쓰기 명령에 응답하여, 불휘발성 메모리(220)는 쓰기 동작을 수행할 수 있다. 쓰기 동작이 완료되면, S140 단계에서, 컨트롤러(210)는 호스트(100)에 쓰기 응답을 전송할 수 있다. 예를 들어, S110 단계의 쓰기 명령에 논리 블록 어드레스 또는 쓰기 포인터가 포함되지 않은 경우, 컨트롤러(210)는 쓰기 응답을 통해 논리 블록 어드레스 또는 쓰기 포인터를 반환함으로써, 호스트(100)에 데이터가 기입된 위치를 알릴 수 있다.
도 4는 호스트-스토리지 시스템(10)에서 카피 동작이 수행되는 과정의 예를 보여준다.
도 1 및 도 4를 참조하면, S210 단계에서, 호스트(100)는 컨트롤러(210)로 카피 명령을 전송할 수 있다. 예를 들어, 카피 명령은 소스 존의 논리 블록 어드레스들 또는 논리 블록 어드레스 범위, 그리고 목표 존의 논리 블록 어드레스들, 논리 블록 어드레스 범위, 논리 블록 어드레스 또는 쓰기 포인터를 포함할 수 있다.
S220 단계에서, 컨트롤러(210)는 어드레스 매핑을 수행할 수 있다. 어드레스 매핑은 S120 단계를 참조하여 설명된 것과 같이 수행될 수 있다. 이후에, 스토리지 장치(200)는 카피 동작을 시작할 수 있다. 예를 들어, 컨트롤러(210)는 불휘발성 메모리(220)에 소스 존에 대한 읽기 명령을 전송하고(S230 단계), 그리고 목표 존에 대한 쓰기 명령을 전송(S240 단계)함으로써, 소스 존의 데이터를 목표 존으로 카피할 수 있다. 카피 동작이 완료되면, S250 단계에서, 컨트롤러(210)는 호스트(100)에 카피 응답을 전송할 수 있다.
예시적으로, 호스트(100)가 컨트롤러(210)에 카피 동작을 요청하는 데이터의 크기는 컨트롤러(210)가 불휘발성 메모리(220)의 데이터를 액세스(예를 들어, 읽기 또는 쓰기)하는 단위보다 클 수 있다. 컨트롤러(210)는 둘 이상의 읽기 명령들 및 둘 이상의 쓰기 명령들을 불휘발성 메모리(220)로 전송할 수 있다.
예를 들어, 컨트롤러(210)는 불휘발성 메모리(220)에 둘 이상의 읽기 명령들을 전송하고, 읽혀진 데이터를 저장할 수 있다. 이후에, 컨트롤러(210)는 불휘발성 메모리(220)에 둘 이상의 쓰기 명령들을 전송함으로써 카피 동작을 수행할 수 있다. 다른 예로서, 컨트롤러(210)는 불휘발성 메모리(220)에 읽기 명령 및 쓰기 명령을 순차적으로 전송하여, 데이터의 일부를 카피하는 과정을 두 번 이상 반복하여 수행할 수 있다. 전체 데이터의 카피가 완료되면, 컨트롤러(210)는 호스트(100)에 카피 응답을 전송할 수 있다.
스토리지 장치(200)는 구획된 장치일 수 있다. 컨트롤러(210)가 자체적으로, 예를 들어 배경 동작을 통해 불휘발성 메모리(220)의 데이터를 카피하거나 무효화하는 것이 금지될 수 있다. 즉, 컨트롤러(210)가 배경 동작으로 가비지 컬렉션을 수행하는 것이 금지될 수 있다. 따라서, 호스트(100)는 스토리지 장치(200)의 가비지 컬렉션을 지원하여야 한다. 호스트(100)는 카피 명령을 이용하여 스토리지 장치(200)의 가비지 컬렉션을 수행할 수 있다.
도 5는 카피 명령을 이용하여 가비지 컬렉션이 수행되는 예를 보여준다.
도 1 및 도 5를 참조하면, 제1 존(Z1)에 제1 데이터(D1), 제2 데이터(D2), 제3 데이터(D3), 제4 데이터(D4), 제5 데이터(D5), 제6 데이터(D6), 제7 데이터(D7), 제8 데이터(D8), 그리고 제9 데이터(D9)가 저장될 수 있다. 제2 존(Z2)에 제10 데이터(D10), 제11 데이터(D11), 제12 데이터(D12), 제13 데이터(D13), 제14 데이터(D14), 제15 데이터(D15), 제16 데이터(D16), 제17 데이터(D17), 그리고 제18 데이터(D18)가 저장될 수 있다.
호스트(100)는 제1 존(Z1) 및 제2 존(Z2)의 데이터 중 유효한 일부 데이터를 제3 존(Z3)으로 카피할 수 있다. 예를 들어, 호스트(100)는 카피 명령을 이용하여, 제1 존(Z1)의 제1 데이터(D1), 제2 데이터(D2), 제3 데이터(D3), 제5 데이터(D5), 그리고 제6 데이터(D6)를 제3 존(Z3)에 기입할 수 있다. 이후에, 호스트(100)는 카피 명령을 이용하여 제2 존(Z2)의 제12 데이터(D12), 제13 데이터(D13), 제15 데이터(D15), 그리고 제17 데이터(D17)를 제3 존(Z3)에 기입할 수 있다.
가비지 컬렉션이 완료되면, 호스트(100)는 제1 존(Z1) 및 제2 존(Z2)을 초기화하여, 제1 존(Z1) 및 제2 존(Z2)을 빈 존(empty zone)으로 설정할 수 있다. 즉, 가비지 컬렉션이 수행될 수 있다.
가비지 컬렉션의 카피 동작이 수행되는 동안, 호스트(100)에서 카피 중인 데이터에 대한 읽기 요구가 발생할 수 있다. 예를 들어, 호스트(100)가 제1 존(Z1)의 제1 데이터(D1)를 제3 존(Z3)으로 카피하는 동안, 제1 데이터(D1) 중 특정 데이터에 대한 읽기 요구가 호스트(100)에서 발생할 수 있다.
그러나 읽기 요구와 연관된 데이터에 대한 카피 동작이 완료될 때까지, 해당 데이터에 대한 읽기 동작은 지연될 수 있다. 호스트(100)는 카피 동작이 완료된 후에, 읽기 요구가 발생한 데이터의 읽기 명령을 컨트롤러(210)로 전송할 수 있다. 이는 읽기 레이턴시를 크게 증가시킬 수 있다.
가비지 컬렉션을 위한 카피 명령이 카피하는 데이터의 사이즈는 통상의 카피 명령이 카피하는 데이터의 사이즈보다 크므로, 가비지 컬렉션 시에 읽기 레이턴시가 크게 증가할 수 있다. 읽기 요구가 긴급한(urgent) 요구인 경우, 읽기 레이턴시의 증가는 호스트-스토리지 시스템(10)에서 치명적인 오류를 유발할 수 있다.
도 6은 호스트-스토리지 시스템(10)에서 카피 동작의 중지(suspend) 및 재개(resume)가 수행되는 과정의 예를 보여준다.
도 1 및 도 6을 참조하면, S310 단계에서, 호스트(100)는 컨트롤러(210)에 카피 명령, 예를 들어 가비지 컬렉션을 위한 카피 명령을 전송할 수 있다. S310 단계는 S210 단계와 동일하게 수행될 수 있다.
S320 단계에서, 어드레스 매핑이 수행될 수 있다. S320 단계는 S220 단계와 동일하게 수행될 수 있다. 스토리지 장치(200)는 카피 동작을 시작할 수 있다. S330 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 읽기 명령을 전송할 수 있다. S340 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 쓰기 명령을 전송할 수 있다. S330 단계 및 S340 단계는 S230 단계 및 S240 단계와 동일하게 수행될 수 있다.
카피 중인 데이터에 대한 읽기 요구가 발생하면, S350 단계에서, 호스트(100)는 컨트롤러(210)에 서스펜드 명령을 전송할 수 있다. 서스펜드 명령은 중지의 대상인 카피 명령에 대한 정보, 예를 들어 소스 존 또는 목표 존의 논리 블록 어드레스들, 논리 블록 어드레스 범위, 논리 블록 어드레스, 또는 쓰기 포인터 등을 포함할 수 있다.
컨트롤러(210)는 카피 동작을 중지하고, 그리고 카피 동작의 진행 상태의 정보를 저장할 수 있다. 예를 들어, 컨트롤러(210)는 소스 존의 데이터 중 목표 존에 가장 마지막으로 기입된 데이터의 논리 블록 어드레스(또는 그 다음의 논리 블록 어드레스)를 저장할 수 있다. 컨트롤러(210)는 읽기 명령을 통해 읽었지만 아직 목표 존에 기입되지 않은 데이터, 예를 들어 버퍼링 중인 데이터를 유지하거나 버릴 수 있다.
S360 단계에서, 컨트롤러(210)는 호스트(100)에 서스펜드 응답을 전송할 수 있다. 예를 들어, 서스펜드 응답은 카피 동작의 진행 상태에 대한 정보를 포함할 수 있다.
S370 단계에서, 호스트(100)는 컨트롤러(210)에 읽기 명령을 전송할 수 있다. 읽기 명령은 카피 중인 데이터에 대응하는 논리 블록 어드레스(들)를 포함할 수 있다. S380 단계에서, 컨트롤러(210)는 어드레스 매핑을 수행할 수 있다. S360 단계는 S220 단계와 동일하게 수행될 수 있다.
S390 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 읽기 명령을 전송하여 데이터를 읽을 수 있다. 예시적으로, 읽기 요청된 데이터가 컨트롤러(210)에 버퍼링된 경우, S390 단계는 생략될 수 있다. S400 단계에서, 컨트롤러(210)는 읽혀진 데이터를 포함하는 읽기 응답을 호스트(100)로 전송할 수 있다.
읽기 응답을 전송한 후에, 컨트롤러(210)는 카피 동작을 자동 재개할 수 있다. S420 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 읽기 명령을 전송할 수 있다. S430 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 쓰기 명령을 전송할 수 있다. S420 단계 및 S430 단계는 S230 단계 및 S240 단계와 동일하게 수행될 수 있다.
카피 동작이 완료되면, S440 단계에서, 컨트롤러(210)는 카피 응답을 호스트(100)로 전송할 수 있다.
상술된 바와 같이, 스토리지 장치(200)는 서스펜드 명령에 응답하여 카피 동작을 중지하고, 그리고 1회의 읽기 명령을 처리한 후에 자동적으로 카피 동작을 재개할 수 있다. 따라서, 카피 동작으로 인해 읽기 레이턴시가 증가하는 것이 방지된다.
예시적으로, 서스펜드 명령은 읽기 명령의 횟수 정보를 포함할 수 있다. 스토리지 장치(200)는 서스펜드 명령에 의해 정해진 횟수만큼의 읽기 명령들을 처리한 후에 카피 동작을 자동 재개할 수 있다.
다른 예로서, 호스트(100)는 임의의 시점에 읽기 명령의 횟수 정보를 스토리지 장치(200)에 제공할 수 있다. 스토리지 장치(200)는 임의의 시점에 정해진 횟수만큼의 읽기 명령들을 처리한 후에 카피 동작을 자동 재개할 수 있다.
예시적으로, 도 6의 동작 방법은 자동 재개 모드일 수 있다. 호스트(100)는 스토리지 장치(200)의 자동 재개 모드의 활성화 여부를 설정할 수 있다. 자동 재개 모드가 활성화된 때에, 스토리지 장치(200)는 도 6을 참조하여 설명된 카피 동작의 자동 재개를 수행할 수 있다.
도 7은 호스트-스토리지 시스템(10)에서 카피 동작의 중지(suspend) 및 재개(resume)가 수행되는 과정의 다른 예를 보여준다.
도 1 및 도 7을 참조하면, S510 단계에서, 호스트(100)는 컨트롤러(210)에 카피 명령, 예를 들어 가비지 컬렉션을 위한 카피 명령을 전송할 수 있다. S510 단계는 S310 단계와 동일하게 수행될 수 있다.
S520 단계에서, 어드레스 매핑이 수행될 수 있다. S520 단계는 S320 단계와 동일하게 수행될 수 있다. 스토리지 장치(200)는 카피 동작을 시작할 수 있다. S530 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 읽기 명령을 전송할 수 있다. S540 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 쓰기 명령을 전송할 수 있다. S530 단계 및 S540 단계는 S330 단계 및 S340 단계와 동일하게 수행될 수 있다.
카피 중인 데이터에 대한 읽기 요구가 발생하면, S550 단계에서, 호스트(100)는 컨트롤러(210)에 서스펜드 명령을 전송할 수 있다. 컨트롤러(210)는 카피 동작을 중지하고, 그리고 카피 동작의 진행 상태의 정보를 저장할 수 있다. S560 단계에서, 컨트롤러(210)는 서스펜드 응답을 호스트(100)에 전송할 수 있다. S550 단계 및 S560 단계는 S350 단계 및 S360 단계와 동일하게 수행될 수 있다.
S570 단계에서, 호스트(100)는 컨트롤러(210)에 읽기 명령을 전송할 수 있다. 읽기 명령은 카피 중인 데이터에 대응하는 논리 블록 어드레스(들)를 포함할 수 있다. S580 단계에서, 컨트롤러(210)는 어드레스 매핑을 수행할 수 있다. S590 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 읽기 명령을 전송할 수 있다. S600 단계에서, 컨트롤러(210)는 읽혀진 데이터를 포함하는 읽기 응답을 호스트(100)로 전송할 수 있다. S570 단계, S580 단계, S590 단계, 그리고 S600 단계는 S370 단계, S380 단계, S390 단계, 그리고 S400 단계와 동일하게 수행될 수 있다.
도 6을 참조하여 설명된 것과 달리, 컨트롤러(210)는 카피 동작을 자동 재개하지 않을 수 있다. 호스트(100)는 S610 단계, S620 단계, S630 단계 및 S640 단계를 통해 추가적인 읽기 동작을 수행할 수 있다. S610 단계, S620 단계, S630 단계 및 S640 단계는 S370 단계, S380 단계, S390 단계, 그리고 S400 단계와 동일하게 수행될 수 있다.
필요한 읽기 동작(들)이 완료되면, S650 단계에서, 호스트(100)는 컨트롤러(210)에 재개 명령을 전송할 수 있다. 재개 명령은 재개의 대상인 카피 명령에 대한 정보, 예를 들어 소스 존 또는 목표 존의 논리 블록 어드레스들, 논리 블록 어드레스 범위, 논리 블록 어드레스, 또는 쓰기 포인터 등을 포함할 수 있다.
재개 명령에 응답하여, 컨트롤러(210)는 카피 동작을 재개할 수 있다. S670 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 읽기 명령을 전송할 수 있다. S680 단계에서, 컨트롤러(210)는 불휘발성 메모리(220)에 쓰기 명령을 전송할 수 있다. S670 단계 및 S680 단계는 S330 단계 및 S340 단계와 동일하게 수행될 수 있다.
카피 동작이 완료되면, S690 단계에서, 컨트롤러(210)는 카피 응답을 호스트(100)로 전송할 수 있다.
상술된 바와 같이, 스토리지 장치(200)는 서스펜드 명령에 응답하여 카피 동작을 중지하고, 그리고 재개 명령에 응답하여 카피 동작을 재개할 수 있다. 따라서, 카피 동작으로 인해 읽기 레이턴시가 증가하는 것이 방지된다.
예시적으로, 도 7의 동작 방법은 호스트 제어 모드일 수 있다. 호스트(100)는 스토리지 장치(200)의 호스트 제어 모드의 활성화 여부를 설정할 수 있다. 호스트 제어 모드가 활성화된 때에, 스토리지 장치(200)는 도 7을 참조하여 설명된 카피 동작의 호스트 제어 재개를 수행할 수 있다.
예시적으로, 스토리지 장치(200)는 도 6의 자동 재개 모드 및 도 7의 호스트 제어 모드를 지원할 수 있다. 호스트(100)는 스토리지 장치(200)의 자동 재개 모드 및 호스트 제어 모드 중 하나를 활성화하거나 둘 모두를 비활성화할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 UFS 시스템(1000)에 대해 설명하기 위한 도면이다.
도 8을 참조하면, UFS 시스템(1000)은 JEDEC(Joint Electron Device Engineering Council)에서 발표하는 UFS 표준(standard)을 따르는 시스템으로서, UFS 호스트(1100), UFS 장치(1200) 및 UFS 인터페이스(1300)를 포함할 수 있다. 전술한 도 1의 호스트-스토리지 시스템(10)에 대한 설명은, 도 8에 대한 이하의 설명과 상충되지 않는 범위 내에서 도 8의 UFS 시스템(1000)에도 적용될 수 있다.
도 8을 참조하면, UFS 호스트(1100)와 UFS 장치(1200)는 UFS 인터페이스(1300)를 통해 상호 연결될 수 있다. 도 1의 호스트(100)가 애플리케이션 프로세서일 경우, UFS 호스트(1100)는 해당 애플리케이션 프로세서의 일부로서 구현될 수 있다. UFS 호스트 컨트롤러(1110) 및 호스트 메모리(1140)는 도 1의 호스트(100)의 호스트 컨트롤러(110) 및 호스트 메모리(120)에 각각 대응될 수 있다. UFS 장치(1200)는 도 1의 스토리지 장치(200)에 대응될 수 있으며, UFS 장치 컨트롤러(1210) 및 불휘발성 메모리(1220)는 도 1의 컨트롤러(210) 및 불휘발성 메모리(220)에 각각 대응될 수 있다.
UFS 호스트(1100)는 UFS 호스트 컨트롤러(1110), 애플리케이션(1120), UFS 드라이버(1130), 호스트 메모리(1140) 및 UIC(UFS interconnect) 레이어(1150)를 포함할 수 있다. UFS 장치(1200)는 UFS 장치 컨트롤러(1210), 불휘발성 메모리(1220), 스토리지 인터페이스(1230), 장치 메모리(1240), UIC 레이어(1250) 및 레귤레이터(1260)를 포함할 수 있다. 불휘발성 메모리(1220)는 복수의 메모리 유닛(1221)으로 구성될 수 있으며, 이와 같은 메모리 유닛(1221)은 2D 구조 혹은 3D 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 불휘발성 메모리를 포함할 수도 있다. UFS 장치 컨트롤러(1210)와 불휘발성 메모리(1220)는 스토리지 인터페이스(1230)를 통해 서로 연결될 수 있다. 스토리지 인터페이스(1230)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
애플리케이션(1120)은 UFS 장치(1200)의 기능을 이용하기 위해 UFS 장치(1200)와의 통신을 원하는 프로그램을 의미할 수 있다. 애플리케이션(1120)은 UFS 장치(1200)에 대한 입출력을 위해 입출력 요청(input-output request, IOR)을 UFS 드라이버(1130)로 전송할 수 있다. 입출력 요청(IOR)은 데이터의 독출(read) 요청, 저장(write) 요청 및/또는 소거(discard) 요청 등을 의미할 수 있으나, 반드시 이에 한정되는 것은 아니다.
UFS 드라이버(1130)는 UFS-HCI(host controller interface)를 통해 UFS 호스트 컨트롤러(1110)를 관리할 수 있다. UFS 드라이버(1130)는 애플리케이션(1120)에 의해 생성된 입출력 요청을 UFS 표준에 의해 정의된 UFS 명령으로 변환하고, 변환된 UFS 명령을 UFS 호스트 컨트롤러(1110)로 전달할 수 있다. 하나의 입출력 요청은 복수의 UFS 명령으로 변환될 수 있다. UFS 명령은 기본적으로 SCSI 표준에 의해 정의된 명령일 수 있지만, UFS 표준 전용 명령일 수도 있다.
UFS 호스트 컨트롤러(1110)는 UFS 드라이버(1130)에 의해 변환된 UFS 명령을 UIC 레이어(1150)와 UFS 인터페이스(1300)를 통해 UFS 장치(1200)의 UIC 레이어(1250)로 전송할 수 있다. 이 과정에서, UFS 호스트 컨트롤러(1110)의 UFS 호스트 레지스터(1111)는 명령 큐(command queue, CQ)로서의 역할을 수행할 수 있다.
UFS 호스트(1100) 측의 UIC 레이어(1150)는 MIPI M-PHY(1151)와 MIPI UniPro(1152)를 포함할 수 있으며, UFS 장치(1200) 측의 UIC 레이어(1250) 또한 MIPI M-PHY(1251)와 MIPI UniPro(1252)을 포함할 수 있다.
UFS 인터페이스(1300)는 기준 클럭(REF_CLK)을 전송하는 라인, UFS 장치(1200)에 대한 하드웨어 리셋 신호(RESET_n)를 전송하는 라인, 차동 입력 신호 쌍(DIN_t와 DIN_c)을 전송하는 한 쌍의 라인 및 차동 출력 신호 쌍(DOUT_t와 DOUT_c)을 전송하는 한 쌍의 라인을 포함할 수 있다.
UFS 호스트(1100)로부터 UFS 장치(1200)로 제공되는 기준 클럭(REF_CLK)의 주파수 값은 19.2MHz, 26MHz, 38.4MHz 및 52MHz의 네 개의 값 중 하나일 수 있으나, 반드시 이에 한정되지는 않는다. UFS 호스트(1100)는 동작 중에도, 즉 UFS 호스트(1100)와 UFS 장치(1200) 사이에서 데이터 송수신이 수행되는 중에도 기준 클럭(REF_CLK)의 주파수 값을 변경할 수 있다. UFS 장치(1200)는 위상 동기 루프(phase-locked loop, PLL) 등을 이용하여, UFS 호스트(1100)로부터 제공받은 기준 클럭(REF_CLK)으로부터 다양한 주파수의 클럭을 생성할 수 있다. 또한, UFS 호스트(1100)는 기준 클럭(REF_CLK)의 주파수 값을 통해 UFS 호스트(1100)와 UFS 장치(1200) 간의 데이터 레이트(data rate)의 값을 설정할 수도 있다. 즉, 상기 데이터 레이트의 값은 기준 클럭(REF_CLK)의 주파수 값에 의존하여 결정될 수 있다.
UFS 인터페이스(1300)는 복수의 레인들(multiple lanes)을 지원할 수 있으며, 각 레인은 차동(differential) 라인 쌍으로 구현될 수 있다. 예컨대, UFS 인터페이스(1300)는 하나 이상의 수신 레인(receive lane)과 하나 이상의 송신 레인(transmit lane)을 포함할 수 있다. 도 8에서, 차동 입력 신호 쌍(DIN_T와 DIN_C)을 전송하는 한 쌍의 라인은 수신 레인을, 차동 출력 신호 쌍(DOUT_T와 DOUT_C)을 전송하는 한 쌍의 라인은 송신 레인을 각각 구성할 수 있다. 도 5에서는 하나의 송신 레인과 하나의 수신 레인을 도시하였지만, 송신 레인과 수신 레인의 수는 변경될 수 있다.
수신 레인 및 송신 레인은 직렬 통신(serial communication) 방식으로 데이터를 전송할 수 있으며, 수신 레인과 송신 레인이 분리된 구조에 의해 UFS 호스트(1100)와 UFS 장치(1200) 간의 풀 듀플렉스(full-duplex) 방식의 통신이 가능하다. 즉, UFS 장치(1200)는 수신 레인을 통해 UFS 호스트(1100)로부터 데이터를 수신받는 동안에도, 송신 레인을 통해 UFS 호스트(1100)로 데이터를 송신할 수 있다. 또한, UFS 호스트(1100)로부터 UFS 장치(1200)로의 명령과 같은 제어 데이터와, UFS 호스트(1100)가 UFS 장치(1200)의 불휘발성 메모리(1220)에 저장하고자 하거나 불휘발성 메모리(1220)로부터 독출하고자 하는 사용자 데이터는 동일한 레인을 통해 전송될 수 있다. 이에 따라, UFS 호스트(1100)와 UFS 장치(1200) 간에는 한 쌍의 수신 레인과 한 쌍의 송신 레인 외에 데이터 전송을 위한 별도의 레인이 더 구비될 필요가 없다.
UFS 장치(1200)의 UFS 장치 컨트롤러(1210)는 UFS 장치(1200)의 동작을 전반적으로 제어할 수 있다. UFS 장치 컨트롤러(1210)는 논리적인 데이터 저장 단위인 LU(logical unit)(1211)를 통해 불휘발성 메모리(1220)를 관리할 수 있다. LU(1211)의 개수는 8개일 수 있으나, 이에 한정되는 것은 아니다. UFS 장치 컨트롤러(1210)는 플래시 변환 계층(flash translation layer, FTL)을 포함할 수 있으며, FTL의 어드레스 매핑(address mapping) 정보를 이용하여 UFS 호스트(1100)로부터 전달된 논리적인 데이터 주소, 예컨대 LBA(logical block address)를 물리적인 데이터 주소로, 예컨대 PBA(physical block address)로 변환할 수 있다. UFS 시스템(1000)에서 사용자 데이터(user data)의 저장을 위한 논리 블록(logical block)은 소정 범위의 크기를 가질 수 있다. 예컨대, 논리 블록의 최소 크기는 4Kbyte로 설정될 수 있다.
UFS 호스트(1100)로부터의 명령이 UIC 레이어(1250)를 통해 UFS 장치(1200)로 입력되면, UFS 장치 컨트롤러(1210)는 입력된 명령에 따른 동작을 수행하고, 상기 동작이 완료되면 완료 응답을 UFS 호스트(1100)로 전송할 수 있다.
일례로서, UFS 호스트(1100)가 UFS 장치(1200)에 사용자 데이터를 저장하고자 할 경우, UFS 호스트(1100)는 데이터 저장 명령을 UFS 장치(1200)로 전송할 수 있다. 사용자 데이터를 전송받을 준비가 되었다(ready-to-transfer)는 응답을 UFS 장치(1200)로부터 수신하면, UFS 호스트(1100)는 사용자 데이터를 UFS 장치(1200)로 전송할 수 있다. UFS 장치 컨트롤러(1210)는 전송받은 사용자 데이터를 장치 메모리(1240) 내에 임시로 저장하고, FTL의 어드레스 매핑 정보에 기초하여 장치 메모리(1240)에 임시로 저장된 사용자 데이터를 불휘발성 메모리(1220)의 선택된 위치에 저장할 수 있다.
또 다른 예로서, UFS 호스트(1100)가 UFS 장치(1200)에 저장된 사용자 데이터를 독출하고자 할 경우, UFS 호스트(1100)는 데이터 독출 명령을 UFS 장치(1200)로 전송할 수 있다. 명령을 수신한 UFS 장치 컨트롤러(1210)는 상기 데이터 독출 명령에 기초하여 불휘발성 메모리(1220)로부터 사용자 데이터를 독출하고, 독출된 사용자 데이터를 장치 메모리(1240) 내에 임시로 저장할 수 있다. 이러한 독출 과정에서, UFS 장치 컨트롤러(1210)는 내장된 ECC(error correction code) 엔진(미도시)을 이용하여, 독출된 사용자 데이터의 에러를 검출하고 정정할 수 있다. 보다 구체적으로, ECC 엔진은 불휘발성 메모리(1220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 불휘발성 메모리(1220) 내에 저장될 수 있다. 불휘발성 메모리(1220)로부터의 데이터 독출 시, ECC 엔진은 독출 데이터와 함께 불휘발성 메모리(1220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
그리고, UFS 장치 컨트롤러(1210)는 장치 메모리(1240) 내에 임시로 저장된 사용자 데이터를 UFS 호스트(1100)로 전송할 수 있다. 아울러, UFS 장치 컨트롤러(1210)는 AES(advanced encryption standard) 엔진(미도시)을 더 포함할 수 있다. AES 엔진은, UFS 장치 컨트롤러(1210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다.
UFS 호스트(1100)는 명령 큐로 기능할 수 있는 UFS 호스트 레지스터(1111)에 UFS 장치(1200)로 송신될 명령들을 순서에 따라 저장하고, 상기 순서대로 UFS 장치(1200)에 명령을 송신할 수 있다. 이때, UFS 호스트(1100)는 이전에 송신된 명령이 아직 UFS 장치(1200)에 의해 처리 중인 경우에도, 즉 이전에 송신된 명령이 UFS 장치(1200)에 의해 처리가 완료되었다는 통지를 받기 전에도 명령 큐에 대기 중인 다음 명령을 UFS 장치(1200)로 송신할 수 있으며, 이에 따라 UFS 장치(1200) 역시 이전에 송신된 명령을 처리하는 중에도 다음 명령을 UFS 호스트(1100)로부터 수신할 수 있다. 이와 같은 명령 큐에 저장될 수 있는 명령의 최대 개수(queue depth)는 예컨대 32개일 수 있다. 또한, 명령 큐는 헤드 포인터(head point)와 테일 포인터(tail pointer)를 통해 큐에 저장된 명령 열의 시작과 끝을 각각 나타내는 원형 큐(circular queue) 타입으로 구현될 수 있다.
복수의 메모리 유닛(1221) 각각은 메모리 셀 어레이(미도시)와 상기 메모리 셀 어레이의 작동을 제어하는 제어 회로(미도시)를 포함할 수 있다. 상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 셀을 포함하며, 각각의 메모리 셀은 1비트의 정보를 저장하는 셀(single level cell, SLC)일 수도 있지만, MLC(multi-level cell), TLC(triple-level cell), QLC(quadruple-level cell)와 같이 2비트 이상의 정보를 저장하는 셀일 수도 있다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다.
UFS 장치(1200)에는 전원 전압으로서 VCC, VCCQ, VCCQ2 등이 입력될 수 있다. VCC는 UFS 장치(1200)를 위한 주 전원 전압으로서, 2.4~3.6V의 값을 가질 수 있다. VCCQ는 낮은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 UFS 장치 컨트롤러(1210)를 위한 것이며. 1.14~1.26V의 값을 가질 수 있다. VCCQ2는 VCC보다는 낮지만 VCCQ보다는 높은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 MIPI M-PHY(1251)와 같은 입출력 인터페이스를 위한 것이며, 1.7~1.95V의 값을 가질 수 있다. 상기 전원 전압들은 레귤레이터(1260)를 거쳐 UFS 장치(1200)의 각 구성 요소들을 위해 공급될 수 있다. 레귤레이터(1260)는 전술한 전원 전압들 중 서로 다른 것에 각각 연결되는 단위 레귤레이터의 집합으로 구현될 수 있다.
UFS 장치(1200)는 구획된 장치(zoned device)일 수 있다. UFS 호스트(1100)는 UFS 장치(1200)에 카피 명령을 전송함으로써 카피 동작을 수행할 수 있다. UFS 호스트(1100)는 카피 동작을 이용하여 UFS 장치(1200)의 가비지 컬렉션을 수행할 수 있다. UFS 호스트(1100)는 UFS 장치(1200)에 카피 동작의 중지 명령을 전송할 수 있다. UFS 장치(1200)는 자동 재개 모드 그리고/또는 호스트 제어 모드로 동작할 수 있다.
도 9는 도 8의 UFS 시스템(1000)이 자동 재개 모드에서 동작하는 과정의 예를 보여준다. 중복되는 설명을 줄이기 위하여, 도 6과 동일하게 수행되는 UFS 장치 컨트롤러(1210)와 불휘발성 메모리(1220) 사이의 명령들의 전송은 생략된다.
도 8 및 도 9를 참조하면, S910 단계에서, UFS 호스트(1100)는 UFS 장치(1200)에 카피 UPIU(UFS(Universal Flash Storage) Protocol Information Unit), 예를 들어 가비지 컬렉션을 위한 카피 UPIU를 전송할 수 있다. 카피 UPIU는 소스 존의 논리 블록 어드레스들 또는 논리 블록 어드레스 범위, 그리고 목표 존의 논리 블록 어드레스들, 논리 블록 어드레스 범위, 논리 블록 어드레스 또는 쓰기 포인터를 포함할 수 있다. 카피 UPIU는 커맨드 UPIU 또는 쿼리 리퀘스트 UPIU를 포함하며, 카피 동작의 시작을 UFS 장치(1200)에 요구할 수 있다.
S920 단계에서, UFS 장치(1200)는 카피 동작을 시작할 수 있다. 예를 들어, UFS 장치(1200)의 UFS 장치 컨트롤러(1210)는 어드레스 매핑을 수행하고, 그리고 불휘발성 메모리(1220)에 읽기 명령 및 쓰기 명령을 전송할 수 있다.
S930 단계에서, UFS 호스트(1100)는 UFS 장치(1200)에 서스펜드 UPIU를 전송할 수 있다. 서스펜드 UPIU는 중지의 대상인 카피 UPIU에 대한 정보, 예를 들어 소스 존 또는 목표 존의 논리 블록 어드레스들, 논리 블록 어드레스 범위, 논리 블록 어드레스, 또는 쓰기 포인터 등을 포함할 수 있다. 서스펜드 UPIU는 커맨드 UPIU, 쿼리 리퀘스트 UPIU, 또는 태스크 매니지먼트 UPIU를 포함하며, 카피 동작의 중지를 UFS 장치(1200)에 요구할 수 있다.
S940 단계에서, UFS 장치(1200)는 UFS 호스트(1100)에 서스펜드 UPIU에 대한 응답 UPIU를 전송할 수 있다.
S950 단계에서, UFS 호스트(1100)는 UFS 장치(1200)에 커맨드 UPIU를 전송할 수 있다. 커맨드 UPIU는 카피 동작에 의해 옮겨지는 데이터 중 일부에 대한 읽기 명령을 포함할 수 있다.
S960 단계에서, UFS 장치(1200)는 UFS 호스트(1100)로 읽혀진 데이터를 포함하는 데이터 인 UPIU를 전송할 수 있다. 예를 들어, UFS 장치(1200)는 둘 이상의 데이터 인 UPIU들을 UFS 호스트(1100)로 전송할 수 있다.
UFS 호스트(1100)가 요청한 데이터의 출력이 완료됨에 따라, S970 단계에서, UFS 장치(1200)는 UFS 호스트(1100)에 커맨드 UPIU에 대한 응답 UPIU를 전송할 수 있다.
커맨드 UPIU에 대한 응답 UPIU가 전송됨에 따라, S980 단계에서, UFS 장치(1200)는 카피 동작을 자동 재개할 수 있다. 카피 동작이 완료되면, UFS 장치(1200)는 카피 UPIU에 대한 응답 UPIU를 UFS 호스트(1100)로 전송할 수 있다.
예시적으로, UFS 장치(1200)는 UFS 호스트(1100)가 정해진 수의 커맨드 UPIU들 전송하고 그리고 정해진 수의 커맨드 UPIU들에 대응하는 응답 UPIU들을 UFS 호스트(1100)로 전송함에 따라, 카피 동작을 자동 재개할 수 있다. 정해진 수는 서스펜드 UPIU에 포함될 수 있으며, 또는 UFS 호스트(1100)에 의해 사전에 정해질 수 있다. UFS 호스트(1100)는 쿼리 리퀘스트 UPIU를 이용하여 정해진 수를 설정할 수 있다.
도 10은 도 8의 UFS 시스템(1000)이 호스트 제어 모드에서 동작하는 과정의 예를 보여준다. 중복되는 설명을 줄이기 위하여, 도 6과 동일하게 수행되는 UFS 장치 컨트롤러(1210)와 불휘발성 메모리(1220) 사이의 명령들의 전송은 생략된다.
도 8 및 도 10을 참조하면, S1010 단계에서, UFS 호스트(1100)는 UFS 장치(1200)에 카피 UPIU, 예를 들어 가비지 컬렉션을 위한 카피 UPIU를 전송할 수 있다. S1010 단계는 S910 단계와 동일하게 수행될 수 있다.
S1020 단계에서, UFS 장치(1200)는 카피 동작을 시작할 수 있다. S1020 단계는 S920 단계와 동일하게 수행될 수 있다.
S1030 단계에서, UFS 호스트(1100)는 UFS 장치(1200)에 서스펜드 UPIU를 전송할 수 있다. S1040 단계에서, UFS 장치(1200)는 UFS 호스트(1100)에 서스펜드 UPIU에 대한 응답 UPIU를 전송할 수 있다. S1030 단계 및 S1040 단계는 S930 단계 및 S940 단계와 동일하게 수행될 수 있다.
S1050 단계에서, UFS 호스트(1100)는 UFS 장치(1200)에 커맨드 UPIU를 전송할 수 있다. S1060 단계에서, UFS 장치(1200)는 UFS 호스트(1100)로 읽혀진 데이터를 포함하는 적어도 하나의 데이터 인 UPIU를 전송할 수 있다. UFS 호스트(1100)가 요청한 데이터의 출력이 완료됨에 따라, S1070 단계에서, UFS 장치(1200)는 UFS 호스트(1100)에 커맨드 UPIU에 대한 응답 UPIU를 전송할 수 있다. S1050 단계, S1060 단계, 그리고 S1070 단계는 S950 단계, S960 단계, 그리고 S970 단계와 동일하게 수행될 수 있다.
S1080 단계에서, UFS 호스트(1100)는 UFS 장치(1200)에 커맨드 UPIU를 전송할 수 있다. S1090 단계에서, UFS 장치(1200)는 UFS 호스트(1100)로 읽혀진 데이터를 포함하는 적어도 하나의 데이터 인 UPIU를 전송할 수 있다. UFS 호스트(1100)가 요청한 데이터의 출력이 완료됨에 따라, S1100 단계에서, UFS 장치(1200)는 UFS 호스트(1100)에 커맨드 UPIU에 대한 응답 UPIU를 전송할 수 있다. S1080 단계, S1090 단계, 그리고 S1100 단계는 S950 단계, S960 단계, 그리고 S970 단계와 동일하게 수행될 수 있다.
S1110 단계에서, UFS 호스트(1100)는 UFS 장치(1200)에 재개 UPIU를 전송할 수 있다. 재개 UPIU는 재개의 대상인 카피 명령에 대한 정보, 예를 들어 소스 존 또는 목표 존의 논리 블록 어드레스들, 논리 블록 어드레스 범위, 논리 블록 어드레스, 또는 쓰기 포인터 등을 포함할 수 있다. 재개 UPIU는 커맨드 UPIU, 쿼리 리퀘스트 UPIU, 또는 태스크 매니지먼트 UPIU를 포함하며, 카피 동작의 재개를 UFS 장치(1200)에 요구할 수 있다.
도 11은 본 발명의 하나의 실시 예에 따른 스토리지 장치(300)를 나타내는 블록도이다.
도 11을 참조하면, 스토리지 장치(300)는 메모리 장치(320) 및 메모리 컨트롤러(310)를 포함할 수 있다. 메모리 장치(320)는 도 1의 불휘발성 메모리(220) 또는 도 8의 불휘발성 메모리(1220)에 대응할 수 있다. 메모리 컨트롤러(310)는 도 1의 스토리지 컨트롤러(210) 또는 도 8의 UFS 장치 컨트롤러(1210)에 대응할 수 있다.
스토리지 장치(300)는 복수의 채널들(CH1~CHm)을 지원할 수 있고, 메모리 장치(320)와 메모리 컨트롤러(310)는 복수의 채널들(CH1~CHm)을 통해 연결될 수 있다. 예를 들어, 스토리지 장치(300)는 SSD(Solid State Drive)와 같은 스토리지 장치로 구현될 수 있다.
메모리 장치(320)는 복수의 불휘발성 메모리 장치들(NVM11~NVMmn)을 포함할 수 있다. 불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 대응하는 웨이(way)를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예를 들어, 불휘발성 메모리 장치들(NVM11~NVM1n)은 웨이들(W11~W1n)을 통해 제1 채널(CH1)에 연결되고, 불휘발성 메모리 장치들(NVM21~NVM2n)은 웨이들(W21~W2n)을 통해 제2 채널(CH2)에 연결될 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 메모리 컨트롤러(310)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 칩(chip) 또는 다이(die)로 구현될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
메모리 컨트롤러(310)는 복수의 채널들(CH1~CHm)을 통해 메모리 장치(320)와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(310)는 채널들(CH1~CHm)을 통해 메모리 장치(320)로 커맨드들(CMDa~CMDm), 어드레스들(ADDRa~ADDRm), 및 데이터(DATAa~DATAm)를 메모리 장치(320)로 전송하거나, 메모리 장치(320)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.
메모리 컨트롤러(310)는 각각의 채널을 통해 해당 채널에 연결된 불휘발성 메모리 장치들(NVM11~NVMmn) 중 하나를 선택하고, 선택된 불휘발성 메모리 장치와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(310)는 제1 채널(CH1)에 연결된 불휘발성 메모리 장치들(NVM11~NVM1n) 중 불휘발성 메모리 장치(NVM11)를 선택할 수 있다. 메모리 컨트롤러(310)는 선택된 불휘발성 메모리 장치(NVM11)로 제1 채널(CH1)을 통해 커맨드(CMDa), 어드레스(ADDRa), 및 데이터(DATAa)를 전송하거나, 선택된 불휘발성 메모리 장치(NVM11)로부터 데이터(DATAa)를 수신할 수 있다.
메모리 컨트롤러(310)는 서로 다른 채널들을 통해 메모리 장치(320)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(310)는 제1 채널(CH1)을 통해 메모리 장치(320)로 커맨드(CMDa)를 전송하는 동안 제2 채널(CH2)을 통해 메모리 장치(320)로 커맨드(CMDb)를 전송할 수 있다. 예를 들어, 메모리 컨트롤러(310)는 제1 채널(CH1)을 통해 메모리 장치(320)로부터 데이터(DATAa)를 수신하는 동안 제2 채널(CH2)을 통해 메모리 장치(320)로부터 데이터(DATAb)를 수신할 수 있다.
메모리 컨트롤러(310)는 메모리 장치(320)의 전반적인 동작을 제어할 수 있다. 메모리 컨트롤러(310)는 채널들(CH1~CHm)로 신호를 전송하여 채널들(CH1~CHm)에 연결된 불휘발성 메모리 장치들(NVM11~NVMmn) 각각을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(310)는 제1 채널(CH1)로 커맨드(CMDa) 및 어드레스(ADDRa)를 전송하여 불휘발성 메모리 장치들(NVM11~NVM1n) 중 선택된 하나를 제어할 수 있다.
불휘발성 메모리 장치들(NVM11~NVMmn) 각각은 메모리 컨트롤러(310)의 제어에 따라 동작할 수 있다. 예를 들어, 불휘발성 메모리 장치(NVM11)는 제1 채널(CH1)로 제공되는 커맨드(CMDa), 어드레스(ADDRa)에 따라, 데이터(DATAa)를 프로그램할 수 있다. 예를 들어, 불휘발성 메모리 장치(NVM21)는 제2 채널(CH2)로 제공되는 커맨드(CMDb) 및 어드레스(ADDRb)에 따라 데이터(DATAb)를 독출하고, 독출된 데이터(DATAb)를 메모리 컨트롤러(310)로 전송할 수 있다.
도 11에는 메모리 장치(320)가 m개의 채널을 통해 메모리 컨트롤러(310)와 통신하고, 메모리 장치(320)가 각각의 채널에 대응하여 n개의 불휘발성 메모리 장치를 포함하는 것으로 도시되나, 채널들의 개수와 하나의 채널에 연결된 불휘발성 메모리 장치의 개수는 다양하게 변경될 수 있다.
스토리지 장치(300)는 구획된 장치(zoned device)일 수 있다. 메모리 컨트롤러(310)는 호스트의 카피 명령에 응답하여 메모리 장치(320)에 저장된 데이터의 카피 동작을 시작할 수 있다. 메모리 컨트롤러(310)는 호스트의 서스펜드 명령에 응답하여 카피 동작을 중지할 수 있다. 메모리 컨트롤러(310)는 자동 재개 모드 또는 호스트 제어 모드에 기반하여 카피 동작을 재개할 수 있다.
메모리 컨트롤러(310)는 불휘발성 메모리 장치들(NVM11~NVMmn)의 각각에 둘 이상의 존들을 매핑할 수 있다. 복수의 존들의 논리 주소들은 고정되지만, 복수의 존들의 물리 주소들은 메모리 컨트롤러(310)에 의해 변경될 수 있다. 예를 들어, 복수의 존들이 매핑되는 불휘발성 메모리 또는 채널은 메모리 컨트롤러(310)에 의해 변경될 수 있다.
호스트가 복수의 존들 중 특정한 존을 열 때, 메모리 컨트롤러(310)는 해당 존에 물리 주소들을 매핑할 수 있다. 예를 들어, 호스트의 카피 명령에 의해 목표 존이 새로 열릴 때, 메모리 컨트롤러(310)는 소스 존의 채널과 다른 채널의 물리 주소들을 목표 존에 매핑할 수 있다. 즉, 카피 동작은 서로 다른 채널들의 불휘발성 메모리들에서 수행될 수 있다. 따라서, 카피 동작의 속도가 향상될 수 있다.
도 12는 본 발명의 실시 예에 따른 불휘발성 메모리(400)를 보여주는 블록도이다.
도 12를 참조하면, 불휘발성 메모리(400)는 메모리 셀 어레이(410), 행 디코더 블록(420), 페이지 버퍼 블록(430), 패스 페일 체크 블록(440)(PFC), 데이터 입력 및 출력 블록(450), 버퍼 블록(460), 그리고 제어 로직 블록(470)을 포함한다.
메모리 셀 어레이(410)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각 메모리 블록은 복수의 메모리 셀들을 포함한다. 각 메모리 블록은 적어도 하나의 접지 선택 라인(GSL), 워드 라인들(WL), 그리고 적어도 하나의 스트링 선택 라인(SSL)을 통해 행 디코더 블록(420)에 연결될 수 있다. 워드 라인들(WL) 중 일부는 더미 워드 라인들로 사용될 수 있다. 각 메모리 블록은 복수의 비트 라인들(BL)을 통해 페이지 버퍼 블록(430)에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)은 복수의 비트 라인들(BL)에 공통으로 연결될 수 있다.
예시적으로, 복수의 메모리 블록들(BLK1~BLKz) 각각은 소거 동작의 단위일 수 있다. 각 메모리 블록에 속한 메모리 셀들은 동시에 소거될 수 있다. 다른 예로서, 각 메모리 블록은 복수의 서브 블록들로 분할될 수 있다. 복수의 서브 블록들 각각은 소거 동작의 단위일 수 있다.
행 디코더 블록(420)은 접지 선택 라인들(GSL), 워드 라인들(WL), 그리고 스트링 선택 라인들(SSL)을 통해 메모리 셀 어레이(410)에 연결된다. 행 디코더 블록(420)은 제어 로직 블록(470)의 제어에 따라 동작한다.
행 디코더 블록(420)은 버퍼 블록(460)으로부터 수신되는 행 주소(RA)를 디코딩하고, 디코딩된 행 주소에 따라 스트링 선택 라인들(SSL), 워드 라인들(WL), 그리고 접지 선택 라인들(GSL)에 인가되는 전압들을 제어할 수 있다.
페이지 버퍼 블록(430)은 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(410)에 연결된다. 페이지 버퍼 블록(430)은 복수의 데이터 라인들(DL)을 통해 데이터 입력 및 출력 블록(450)과 연결된다. 페이지 버퍼 블록(430)은 제어 로직 블록(470)의 제어에 따라 동작한다.
프로그램 동작 시에, 페이지 버퍼 블록(430)은 메모리 셀들에 기입될 데이터를 저장할 수 있다. 저장된 데이터에 기반하여, 페이지 버퍼 블록(430)은 복수의 비트 라인들(BL)에 전압들을 인가할 수 있다. 읽기 동작 시에, 또는 프로그램 동작 또는 소거 동작의 검증 읽기 시에, 페이지 버퍼 블록(430)은 비트 라인들(BL)의 전압들을 감지하고, 감지 결과를 저장할 수 있다.
패스 페일 체크 블록(440)은 프로그램 동작의 검증 읽기 또는 소거 동작의 검증 읽기 시에, 페이지 버퍼 블록(430)의 감지 결과를 검증할 수 있다. 예를 들어, 프로그램 동작의 검증 읽기 시에, 패스 페일 체크 블록(440)은 목표 문턱 전압 이상으로 프로그램되지 않은 온-셀들에 대응하는 값(예를 들어 '0')의 수를 카운트할 수 있다.
소거 동작의 검증 읽기 시에, 패스 페일 체크 블록(440)은 목표 문턱 전압 이하로 소거되지 않은 오프-셀들에 대응하는 값(예를 들어 '1')이 수를 카운트할 수 있다. 패스 페일 체크 블록(440)은 카운트된 결과가 문턱값 이상일 때, 페일을 나타내는 신호를 제어 로직 블록(470)으로 출력할 수 있다. 패스 페일 체크 블록(440)은 카운트된 결과가 문턱값보다 작을 때, 패스를 나타내는 신호를 제어 로직 블록(470)으로 출력할 수 있다. 패스 페일 체크 블록(440)의 검증의 결과에 따라, 프로그램 동작의 프로그램 루프가 더 수행되거나 또는 소거 동작의 소거 루프가 더 수행될 수 있다.
데이터 입력 및 출력 블록(450)은 복수의 데이터 라인들(DL)을 통해 페이지 버퍼 블록(430)과 연결된다. 데이터 입력 및 출력 블록(450)은 버퍼 블록(460)으로부터 열 주소(CA)를 수신할 수 있다. 데이터 입력 및 출력 블록(450)은 페이지 버퍼 블록(430)에 의해 읽힌 데이터를 열 주소(CA)에 따라 버퍼 블록(460)으로 출력할 수 있다. 데이터 입력 및 출력 블록(450)은 열 주소(CA)에 의존하여, 버퍼 블록(460)으로부터 수신되는 데이터를 페이지 버퍼 블록(430)에 전달할 수 있다.
버퍼 블록(460)은 제1 신호선들(SIGL1)을 통해 명령(CMD) 및 주소(ADDR)를 외부의 장치로부터 수신하고, 그리고 데이터(DATA)를 외부의 장치와 교환할 수 있다. 버퍼 블록(460)은 제어 로직 블록(470)의 제어에 따라 동작할 수 있다. 버퍼 블록(460)은 명령(CMD)을 제어 로직 블록(470)에 전달할 수 있다. 버퍼 블록(460)은 주소(ADDR)의 행 주소(RA)를 행 디코더 블록(420)에 전달하고, 열 주소(CA)를 데이터 입력 및 출력 블록(450)에 전달할 수 있다. 버퍼 블록(460)은 데이터(DATA)를 데이터 입력 및 출력 블록(450)과 교환할 수 있다.
제어 로직 블록(470)은 외부 장치와 제2 신호선들(SIGL2)을 통해 제어 신호(CTRL)를 교환할 수 있다. 제어 로직 블록(470)은 버퍼 블록(460)이 명령(CMD), 주소(ADDR) 및 데이터(DATA)를 라우팅하게 제어할 수 있다. 제어 로직 블록(470)은 버퍼 블록(460)으로부터 수신된 명령(CMD)을 디코딩하고, 디코딩된 명령에 따라 불휘발성 메모리(400)를 제어할 수 있다.
예시적으로, 불휘발성 메모리(400)는 본딩 방식으로 제조될 수 있다. 메모리 셀 어레이(410)는 제1 웨이퍼에서 제조되고, 행 디코더 블록(420), 페이지 버퍼 블록(430), 데이터 입력 및 출력 블록(450), 버퍼 블록(460), 그리고 제어 로직 블록(470)은 제2 웨이퍼에서 제조될 수 있다. 제1 웨이퍼의 상부면과 및 제2 웨이퍼의 상부면을 마주보게 하여 결합함으로써, 불휘발성 메모리(400)가 구현될 수 있다.
다른 예로서, 불휘발성 메모리(400)는 COP(Cell Over Peri) 방식으로 제조될 수 있다. 기판 상에 행 디코더 블록(420), 페이지 버퍼 블록(430), 데이터 입력 및 출력 블록(450), 버퍼 블록(460), 그리고 제어 로직 블록(470)을 포함하는 주변 회로가 구현될 수 있다 주변 회로의 상부에 메모리 셀 어레이(410)가 구현될 수 있다. 주변 회로 및 메모리 셀 어레이(410)는 관통 비아들을 통해 연결될 수 있다.
도 13은 존들의 논리 주소들과 불휘발성 메모리(400)의 물리 주소들이 매핑되는 예를 보여준다.
도 12 및 도 13을 참조하면, 매핑 테이블(MT)은 논리 블록 주소(LBA), 물리 블록 주소(PBA), 그리고 쓰기 포인터(WP)의 항목들을 포함할 수 있다. 논리 블록 주소(LBA)로서 각 존의 논리 블록 주소들 중 1개의 대표 논리 블록 주소(예를 들어, 시작 주소, 끝 주소 등)가 매핑 테이블(MT)에 기록될 수 있다.
제1 내지 제z 존들(Z1~Zz)은 제1 내지 제z 메모리 블록들(BLK1~BLKz)(또는 각각 둘 이상의 병렬 액세스 가능한 메모리 블록들을 포함하는 슈퍼 블록들)에 각각 매핑될 수 있다. 물리 블록 주소(PBA)로서, 각 메모리 블록의 대표 물리 주소(예를 들어, 시작 주소, 끝 주소 등)가 매핑 테이블(MT)에 기록될 수 있다.
쓰기 포인터(WP)는 각 존에서 다음 데이터가 기입될 위치를 가리킬 수 있다. 제1 존(Z1)에 제1 쓰기 포인터(WP1)가 기록되고, 그리고 제2 존(Z2)에 제2 쓰기 포인터(WP2)가 기록될 수 있다. 각 존에 데이터가 기입되면, 대응하는 쓰기 포인터가 갱신될 수 있다. 쓰기 포인터는 열린 존들에만 할당될 수 있다. 동시에 열리는 존들의 수는 제한될 수 있다.
도 14는 본 기재의 일 실시 예에 따른 시스템(2000)을 도시한 도면이다. 도 14의 시스템(2000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 14의 시스템(2000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 네비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 14를 참조하면, 시스템(2000)은 메인 프로세서(main processor)(2100), 메모리(2200a, 2200b) 및 스토리지 장치(2300a, 2300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(2410), 사용자 입력 장치(user input device)(2420), 센서(2430), 통신 장치(2440), 디스플레이(2450), 스피커(2460), 전력 공급 장치(power supplying device)(2470) 및 연결 인터페이스(connecting interface)(2480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(2100)는 시스템(2000)의 전반적인 동작, 보다 구체적으로는 시스템(2000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(2100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(2100)는 하나 이상의 CPU 코어(2110)를 포함할 수 있으며, 메모리(2200a, 2200b) 및/또는 스토리지 장치(2300a, 2300b)를 제어하기 위한 컨트롤러(2120)를 더 포함할 수 있다. 실시 예에 따라서는, 메인 프로세서(2100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(2130)를 더 포함할 수 있다. 이와 같은 가속기(2130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(2100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(2200a, 2200b)는 시스템(2000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 불휘발성 메모리를 포함할 수도 있다. 메모리(2200a, 2200b)는 메인 프로세서(2100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(2300a, 2300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 불휘발성 저장 장치로서 기능할 수 있으며, 메모리(2200a, 2200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(2300a, 2300b)는 스토리지 컨트롤러(2310a, 2310b)(STRG CTRL)와, 스토리지 컨트롤러(2310a, 2310b)의 제어 하에 데이터를 저장하는 불휘발성 메모리(non-volatile memory, NVM)(2320a, 2320b)를 포함할 수 있다. 불휘발성 메모리(2320a, 2320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 불휘발성 메모리를 포함할 수도 있다.
스토리지 장치(2300a, 2300b)는 메인 프로세서(2100)와는 물리적으로 분리된 상태로 시스템(2000)에 포함될 수도 있고, 메인 프로세서(2100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(2300a, 2300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(2480)와 같은 인터페이스를 통해 시스템(2000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(2300a, 2300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(2410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(2420)는 시스템(2000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keypad), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(2430)는 시스템(2000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(2430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(2440)는 다양한 통신 규약에 따라 시스템(2000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(2440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(2450) 및 스피커(2460)는 시스템(2000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(2470)는 시스템(2000)에 내장된 배터리(도시 안함) 및/또는 외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(2000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(2480)는 시스템(2000)과, 시스템(2000)에 연결되어 시스템(2000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(2480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 장치(2300a, 2300b)는 도 1을 참조하여 설명된 스토리지 장치(200), 도 8을 참조하여 설명된 UFS 장치(1200), 또는 도 11을 참조하여 설명된 스토리지 장치(300)에 대응할 수 있다. 메인 프로세서(2100)는 도 1을 참조하여 설명된 호스트(100) 또는 도 8을 참조하여 설명된 UFS 호스트(1100)에 대응할 수 있다.
상술된 실시 예들에서, 제1, 제2, 제3 등의 용어들을 사용하여 본 발명의 기술적 사상에 따른 구성 요소들이 설명되었다. 그러나 제1, 제2, 제3 등과 같은 용어들은 구성 요소들을 서로 구별하기 위해 사용되며, 본 발명을 한정하지 않는다. 예를 들어, 제1, 제2, 제3 등과 같은 용어들은 순서 또는 임의의 형태의 수치적 의미를 내포하지 않는다.
상술된 실시 예들에서, 블록들을 사용하여 본 발명의 실시 예들에 따른 구성 요소들이 참조되었다. 블록들은 IC (Integrated Circuit), ASIC (Application Specific IC), FPGA (Field Programmable Gate Array), CPLD (Complex Programmable Logic Device) 등과 같은 다양한 하드웨어 장치들, 하드웨어 장치들에서 구동되는 펌웨어, 응용과 같은 소프트웨어, 또는 하드웨어 장치와 소프트웨어가 조합된 형태로 구현될 수 있다. 또한, 블록들은 IC 내의 반도체 소자들로 구성되는 회로들 또는 IP(Intellectual Property)로 등록된 회로들을 포함할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10: 호스트-스토리지 시스템
100: 호스트
110: 호스트 컨트롤러
120: 호스트 메모리
200: 스토리지 장치
210: 스토리지 컨트롤러
220: 불휘발성 메모리

Claims (20)

  1. 불휘발성 메모리 장치; 그리고
    상기 불휘발성 메모리 장치의 저장 공간을 복수의 존들로 분할하여 액세스하는 컨트롤러를 포함하고,
    상기 복수의 존들의 각각은 상기 불휘발성 메모리 장치의 연속한 물리 어드레스들에 대응하고,
    상기 컨트롤러는 상기 복수의 존들의 각각의 상기 연속한 물리 어드레스들을 연속한 논리 어드레스들과 매핑하고, 그리고 상기 복수의 존들의 각각에 대해 외부의 호스트 장치의 순차 쓰기만을 허용하고,
    상기 외부의 호스트 장치로부터 카피 명령이 수신되는 것에 응답하여, 상기 컨트롤러는 상기 복수의 존들 중 제1 존의 데이터를 제2 존으로 카피하는 카피 동작을 시작하여 상기 불휘발성 메모리 장치에 상기 제1 존의 데이터를 읽는 제1 읽기 명령들 및 상기 읽혀진 데이터를 상기 제2 존에 기입하는 제1 쓰기 명령들을 전송하고,
    상기 카피 동작이 완료되기 전에 상기 외부의 호스트 장치로부터 서스펜드 명령이 수신되는 것에 응답하여, 상기 컨트롤러는 상기 불휘발성 메모리 장치에 상기 제1 읽기 명령들 및 상기 제1 쓰기 명령들을 전송하는 것을 중지함으로써 상기 카피 동작을 중지하고, 상기 카피 동작의 진행 상태를 저장하고, 상기 외부의 호스트 장치로 상기 서스펜드 명령에 대응하는 서스펜드 응답을 전송하고, 그리고
    상기 컨트롤러는 상기 저장된 카피 동작의 진행 상태에 기반하여, 상기 불휘발성 메모리 장치에 상기 제1 읽기 명령들 및 상기 제1 쓰기 명령들을 전송하는 것을 재개함으로써 상기 카피 동작을 재개하고, 그리고 상기 재개된 카피 동작이 완료되면 상기 외부의 호스트 장치로 상기 카피 명령에 대응하는 카피 응답을 전송하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 외부의 호스트 장치로부터 제2 읽기 명령이 수신되는 것에 응답하여, 상기 컨트롤러는 상기 불휘발성 메모리 장치로 제3 읽기 명령을 전송하여 읽기 동작을 수행하고, 상기 읽기 동작에 의해 읽혀진 데이터를 포함하는 읽기 응답을 상기 외부의 호스트 장치로 전송하고, 그리고 상기 카피 동작을 재개하는 스토리지 장치.
  3. 제2항에 있어서,
    상기 컨트롤러는 상기 읽기 응답을 상기 외부의 호스트 장치로 전소한 후에, 상기 카피 동작을 자동적으로 재개하는 스토리지 장치.
  4. 제3항에 있어서,
    상기 제2 읽기 명령은 상기 카피 동작에 의해 카피되는 데이터 중 일부에 대한 것인 스토리지 장치.
  5. 제1항에 있어서,
    상기 외부의 호스트 장치로부터 재개 명령이 수신되는 것에 응답하여, 상기 컨트롤러는 상기 외부의 호스트 장치로 재개 응답을 전송하고, 그리고 상기 카피 동작을 재개하는 스토리지 장치.
  6. 삭제
  7. 제1항에 있어서,
    상기 카피 동작이 완료된 후에, 상기 외부의 호스트 장치의 명령에 응답하여, 상기 컨트롤러는 상기 제1 존을 무효화하는 스토리지 장치.
  8. 제1항에 있어서,
    상기 컨트롤러는 상기 복수의 존들 각각에 저장된 데이터 중 일부를 무효화하는 것이 금지되는 스토리지 장치.
  9. 제1항에 있어서,
    상기 컨트롤러는 상기 외부의 호스트의 개입 없이 상기 복수의 존들 각각의 데이터를 카피 또는 무효화하는 것이 금지되는 스토리지 장치.
  10. 불휘발성 메모리 장치; 그리고
    상기 불휘발성 메모리 장치의 저장 공간을 복수의 존들로 분할하여 액세스하는 컨트롤러를 포함하고,
    상기 복수의 존들의 각각은 상기 불휘발성 메모리 장치의 연속한 물리 어드레스들에 대응하고,
    상기 컨트롤러는 상기 복수의 존들의 각각의 상기 연속한 물리 어드레스들을 연속한 논리 어드레스들과 매핑하고, 그리고 상기 복수의 존들의 각각에 대해 외부의 호스트 장치의 순차 쓰기만을 허용하고,
    상기 외부의 호스트 장치로부터 제1 UPIU(UFS Protocol Information Unit)가 수신되는 것에 응답하여, 상기 컨트롤러는 상기 복수의 존들 중 제1 존의 데이터를 제2 존으로 카피하는 카피 동작을 시작하여 상기 불휘발성 메모리 장치에 상기 제1 존의 데이터를 읽는 제1 읽기 명령들 및 상기 읽혀진 데이터를 상기 제2 존에 기입하는 제1 쓰기 명령들을 전송하고,
    상기 카피 동작이 완료되기 전에 상기 외부의 호스트 장치로부터 제2 UPIU가 수신되는 것에 응답하여, 상기 컨트롤러는 상기 카피 동작을 중지하고, 상기 카피 동작의 진행 상태를 저장하고, 상기 외부의 호스트 장치로 상기 제2 UPIU에 대응하는 제1 응답 UPIU를 전송하고, 그리고
    상기 컨트롤러는 상기 저장된 카피 동작의 진행 상태에 기반하여, 상기 불휘발성 메모리 장치에 상기 제1 읽기 명령들 및 상기 제1 쓰기 명령들을 전송하는 것을 재개함으로써 상기 카피 동작을 재개하고, 그리고 상기 재개된 카피 동작이 완료되면 상기 외부의 호스트 장치로 상기 제1 UPIU에 대응하는 제2 응답 UPIU를 전송하는 스토리지 장치.
  11. 제10항에 있어서,
    상기 제1 UPIU는 커맨드 UPIU 및 쿼리 리퀘스트 UPIU 중 하나를 포함하는 스토리지 장치.
  12. 제10항에 있어서,
    상기 제2 UPIU는 커맨드 UPIU, 쿼리 리퀘스트 UPIU, 그리고 태스크 매니지먼트 UPIU 중 하나를 포함하는 스토리지 장치.
  13. 제10항에 있어서,
    상기 외부의 호스트 장치로부터 제2 커맨드 UPIU가 수신되는 것에 응답하여, 상기 컨트롤러는 상기 불휘발성 메모리 장치로 제2 읽기 명령을 전송하여 읽기 동작을 수행하고, 상기 읽기 동작에 의해 읽혀진 데이터를 포함하는 데이터 인 UPIU를 상기 외부의 호스트 장치로 전송하고, 제2 응답 UPIU를 상기 외부의 호스트 장치로 전송하고, 그리고 상기 카피 동작을 재개하는 스토리지 장치.
  14. 제10항에 있어서,
    상기 외부의 호스트 장치로부터 제3 UPIU가 수신되는 것에 응답하여, 상기 컨트롤러는 상기 외부의 호스트 장치로 제2 응답 UPIU를 전송하고, 그리고 상기 카피 동작을 재개하는 스토리지 장치.
  15. 제14항에 있어서,
    상기 제3 UPIU는 커맨드 UPIU, 쿼리 리퀘스트 UPIU, 그리고 태스크 매니지먼트 UPIU 중 하나를 포함하는 스토리지 장치.
  16. 제10항에 있어서,
    상기 불휘발성 메모리 장치는 복수의 메모리 블록들을 포함하고,
    상기 컨트롤러는 상기 복수의 메모리 블록들을 상기 복수의 존들에 각각 매핑하는 스토리지 장치.
  17. 제16항에 있어서,
    상기 컨트롤러는 상기 복수의 메모리 블록들 각각의 하나의 물리 주소를 상기 복수의 존들 각각의 하나의 논리 주소와 매핑하는 매핑 테이블을 관리하는 스토리지 장치.
  18. 제10항에 있어서,
    상기 불휘발성 메모리 장치는 복수의 채널들을 통해 상기 컨트롤러와 연결되는 복수의 불휘발성 메모리 장치들을 포함하고,
    상기 제1 존 및 상기 제2 존은 서로 다른 채널들의 불휘발성 메모리 장치들에 대응하는 스토리지 장치.
  19. 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 있어서:
    상기 컨트롤러가 외부의 호스트 장치로부터 카피 명령을 수신하는 단계;
    상기 컨트롤러가 상기 불휘발성 메모리 장치의 저장 공간에 매핑된 복수의 존들 중 제1 존의 데이터를 제2 존으로 카피하는 카피 동작을 시작하여 상기 불휘발성 메모리 장치로 상기 제1 존의 데이터를 읽는 제1 읽기 명령들 및 상기 읽혀진 데이터를 상기 제2 존에 기입하는 제1 쓰기 명령들을 전송하는 단계;
    상기 컨트롤러가 상기 외부의 호스트 장치로부터 서스펜드 명령을 수신하는 단계;
    상기 컨트롤러가 상기 서스펜드 명령에 응답하여 상기 카피 동작을 중지하고 그리고 상기 외부의 호스트 장치에 상기 서스펜드 명령에 대응하는 서스펜드 응답을 전송하는 단계;
    상기 컨트롤러가 상기 외부의 호스트 장치로부터 제2 읽기 명령을 수신하는 단계;
    상기 제2 읽기 명령에 응답하여 상기 컨트롤러가 상기 불휘발성 메모리 장치로부터 데이터를 읽고 그리고 상기 읽혀진 데이터를 포함하는 상기 제2 읽기 명령에 대응하는 읽기 응답을 상기 외부의 호스트 장치로 전송하는 단계;
    상기 컨트롤러가 상기 불휘발성 메모리 장치에 상기 제1 읽기 명령들 및 상기 제1 쓰기 명령들을 전송하는 것을 재개함으로써 상기 카피 동작을 재개하는 단계; 그리고
    상기 재개된 카피 동작이 완료되면 상기 컨트롤러가 상기 외부의 호스트 장치로 상기 카피 명령에 대응하는 카피 응답을 전송하는 단계를 포함하고,
    상기 컨트롤러는 상기 복수의 존들의 각각의 연속한 물리 어드레스들을 연속한 논리 어드레스들과 매핑하고, 그리고 상기 복수의 존들의 각각에 대해 상기 외부의 호스트 장치의 순차 쓰기만을 허용하는 동작 방법.
  20. 제19항에 있어서,
    상기 카피 동작을 재개하는 단계는:
    제1 동작 모드로 설정된 것에 응답하여, 상기 컨트롤러는 상기 읽기 응답을 상기 외부의 호스트 장치로 전송한 후에 상기 카피 동작을 자동적으로 재개하는 단계; 그리고
    제2 동작 모드로 설정된 것에 응답하여, 상기 컨트롤러가 상기 외부의 호스트 장치로부터 재개 명령이 수신되는 것에 응답하여 상기 카피 동작을 재개하는 단계를 포함하는 동작 방법.
KR1020220013146A 2022-01-28 2022-01-28 스토리지 장치 및 스토리지 장치의 동작 방법 KR102583244B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220013146A KR102583244B1 (ko) 2022-01-28 2022-01-28 스토리지 장치 및 스토리지 장치의 동작 방법
US17/946,239 US20230244402A1 (en) 2022-01-28 2022-09-16 Storage device and operating method of storage device
EP22206606.0A EP4220374A1 (en) 2022-01-28 2022-11-10 Storage device and operating method of storage device
CN202310012373.XA CN116521059A (zh) 2022-01-28 2023-01-05 存储装置及存储装置的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220013146A KR102583244B1 (ko) 2022-01-28 2022-01-28 스토리지 장치 및 스토리지 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20230116341A KR20230116341A (ko) 2023-08-04
KR102583244B1 true KR102583244B1 (ko) 2023-09-26

Family

ID=87392794

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220013146A KR102583244B1 (ko) 2022-01-28 2022-01-28 스토리지 장치 및 스토리지 장치의 동작 방법

Country Status (3)

Country Link
US (1) US20230244402A1 (ko)
KR (1) KR102583244B1 (ko)
CN (1) CN116521059A (ko)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100706242B1 (ko) * 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
KR101348255B1 (ko) * 2005-10-13 2014-01-08 샌디스크 테크놀로지스, 인코포레이티드 고정된 크기의 저장 블록을 가진 메모리 시스템에서데이터의 변환된 유닛의 저장
KR20120102923A (ko) * 2011-03-09 2012-09-19 (주)인디링스 복사 명령 및 이동 명령을 지원하는 스토리지 시스템 및 상기 스토리지 시스템의 동작 방법
US9933950B2 (en) * 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
KR20180018886A (ko) * 2016-08-09 2018-02-22 삼성전자주식회사 스토리지 시스템의 동작 방법 및 호스트의 동작 방법
US10418115B2 (en) * 2017-07-07 2019-09-17 Micron Technology, Inc. Managed NAND performance throttling
KR20200129700A (ko) * 2019-05-09 2020-11-18 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
KR102650689B1 (ko) * 2019-08-02 2024-03-25 삼성전자주식회사 스토리지 장치
US11157404B2 (en) * 2019-08-27 2021-10-26 Micron Technology, Inc. Remapping techniques for a range of logical block addresses in a logical to physical table of NAND storage
KR20210148852A (ko) * 2020-06-01 2021-12-08 삼성전자주식회사 다중 원형 큐를 이용하는 호스트 컨트롤러 인터페이스 및 이의 동작 방법
JP7443195B2 (ja) * 2020-08-21 2024-03-05 キオクシア株式会社 メモリシステムおよび制御方法
US20220342553A1 (en) * 2021-04-27 2022-10-27 Micron Technology, Inc. Copy command for a memory system
KR20230072886A (ko) * 2021-11-18 2023-05-25 에스케이하이닉스 주식회사 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법

Non-Patent Citations (9)

* Cited by examiner, † Cited by third party
Title
한국공개특허 제10-2006-0090080호(2006.08.10.) 1부.*
한국공개특허 제10-2008-0074124호(2008.08.12.) 1부.*
한국공개특허 제10-2012-0102923호(2012.09.19.) 1부.*
한국공개특허 제10-2018-0018886호(2018.02.22.) 1부.*
한국공개특허 제10-2020-0027982호(2020.03.13.) 1부.*
한국공개특허 제10-2020-0129700호(2020.11.18.) 1부.*
한국공개특허 제10-2020-0132566호(2020.11.25.) 1부.*
한국공개특허 제10-2021-0016206호(2021.02.15.) 1부.*
한국공개특허 제10-2021-0148852호(2021.12.08.) 1부.*

Also Published As

Publication number Publication date
KR20230116341A (ko) 2023-08-04
US20230244402A1 (en) 2023-08-03
CN116521059A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
US8843697B2 (en) Operating method of data storage device
KR102580820B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11249897B2 (en) Data storage device and operating method thereof
US20130275657A1 (en) Data storage device and operating method thereof
US11567685B2 (en) Storage controller and storage device including the same
US20200218653A1 (en) Controller, data storage device, and operating method thereof
US11698855B2 (en) Method, memory controller and storage device to perform garbage collection based on fragmentation ratio of blocks
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
US20220113909A1 (en) Operating method of host device and storage device using credit
US20230132327A1 (en) Storage system performing overwrite, host system controlling storage system, and operating method for storage system
US20200327069A1 (en) Data storage device and operation method thereof, controller using the same
US20230036616A1 (en) Storage devices and operating methods of storage controllers
KR102583244B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR20220076803A (ko) 데이터 저장 장치 및 그것의 동작 방법
EP4220374A1 (en) Storage device and operating method of storage device
KR20210156061A (ko) 저장 장치 및 그 동작 방법
KR20210001206A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR20200015260A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11294587B2 (en) Data storage device capable of maintaining continuity of logical addresses mapped to consecutive physical addresses, electronic device including the same, and method of operating the data storage device
US20230146540A1 (en) Storage device and an operating method of a storage controller thereof
US11989451B2 (en) Method of operating a memory controller in which commands are stored in urgent or normal queues based on priority. a nonvolatile memory device including a buffer selector and a storage device thereof
US20240069782A1 (en) Storage device including nonvolatile memory device and operating method of storage device
US20230153237A1 (en) Method and device for storing data
US20230376247A1 (en) Embedded storage device, host system having the same, and method of operating the same

Legal Events

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