KR20220101349A - 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 - Google Patents

스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 Download PDF

Info

Publication number
KR20220101349A
KR20220101349A KR1020210003270A KR20210003270A KR20220101349A KR 20220101349 A KR20220101349 A KR 20220101349A KR 1020210003270 A KR1020210003270 A KR 1020210003270A KR 20210003270 A KR20210003270 A KR 20210003270A KR 20220101349 A KR20220101349 A KR 20220101349A
Authority
KR
South Korea
Prior art keywords
data
identifier
attribute
command
identifiers
Prior art date
Application number
KR1020210003270A
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 KR1020210003270A priority Critical patent/KR20220101349A/ko
Priority to US17/394,801 priority patent/US11693574B2/en
Priority to DE102021121871.3A priority patent/DE102021121871A1/de
Priority to CN202210015024.9A priority patent/CN114764309A/zh
Publication of KR20220101349A publication Critical patent/KR20220101349A/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/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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

스토리지 장치의 데이터 기입 방법에서, 식별자 정보 요청을 수신한다. 식별자 정보 요청에 기초하여, 데이터 속성 부여를 위해 사용되는 복수의 식별자(identifier)들에 대한 정보를 출력한다. 복수의 식별자들 중 제1 식별자를 포함하는 제1 기입 커맨드 및 제1 데이터를 수신한다. 제1 기입 커맨드에 기초하여, 제1 식별자에 대응하는 제1 데이터를 기입한다. 제1 식별자 및 복수의 속성들 중 제1 속성을 포함하는 제1 속성 부여 커맨드를 수신한다. 제1 속성 부여 커맨드에 기초하여, 기입되어 있는 제1 데이터에 제1 속성을 부여한다.

Description

스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치{METHOD OF WRITING DATA IN STORAGE DEVICE AND STORAGE DEVICE PERFORMING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 스토리지 장치의 데이터 기입 방법 및 상기 데이터 기입 방법을 수행하는 스토리지 장치에 관한 것이다.
최근에는 메모리 장치를 이용하는 SSD(solid state drive)와 같은 스토리지 장치가 널리 사용되고 있다. 상기와 같은 스토리지 장치는 기계적인 구동부가 없어 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 최근 들어 노트북과 같은 전자 시스템뿐만 아니라, 자동차, 항공기, 드론(drone) 등과 같은 다양한 종류의 시스템에 전자 회로가 적용됨에 따라, 스토리지 장치 역시 다양한 종류의 시스템에서 사용되고 있다.
최근에는 스토리지 장치의 성능 및/또는 수명을 개선하기 위해, 스토리지 장치에 기입하고자 하는 데이터에 입출력 속성을 부여하고 이를 관리하는 다양한 방식들이 연구되고 있다.
본 발명의 일 목적은 이미 기입된 데이터에 대해 나중에 입출력 속성을 부여할 수 있는 스토리지 장치의 데이터 기입 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 데이터 기입 방법을 수행하는 스토리지 장치를 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 식별자 정보 요청을 수신한다. 상기 식별자 정보 요청에 기초하여, 데이터 속성 부여를 위해 사용되는 복수의 식별자(identifier)들에 대한 정보를 출력한다. 상기 복수의 식별자들 중 제1 식별자를 포함하는 제1 기입 커맨드 및 제1 데이터를 수신한다. 상기 제1 기입 커맨드에 기초하여, 상기 제1 식별자에 대응하는 제1 데이터를 기입한다. 상기 제1 식별자 및 복수의 속성들 중 제1 속성을 포함하는 제1 속성 부여 커맨드를 수신한다. 상기 제1 속성 부여 커맨드에 기초하여, 기입되어 있는 상기 제1 데이터에 상기 제1 속성을 부여한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치는 복수의 비휘발성 메모리들 및 스토리지 컨트롤러를 포함한다. 상기 스토리지 컨트롤러는 상기 복수의 비휘발성 메모리들의 동작을 제어하고, 외부의 호스트 장치로부터 식별자 정보 요청을 수신하며, 상기 식별자 정보 요청에 기초하여 데이터 속성 부여를 위해 사용되는 복수의 식별자(identifier)들에 대한 정보를 상기 호스트 장치로 출력하고, 상기 호스트 장치로부터 상기 복수의 식별자들 중 제1 식별자를 포함하는 제1 기입 커맨드 및 제1 데이터를 수신하며, 상기 제1 기입 커맨드에 기초하여 상기 제1 식별자에 대응하는 제1 데이터를 기입하고, 상기 호스트 장치로부터 상기 제1 식별자 및 복수의 속성들 중 제1 속성을 포함하는 제1 속성 부여 커맨드를 수신하며, 상기 제1 속성 부여 커맨드에 기초하여 기입되어 있는 상기 제1 데이터에 상기 제1 속성을 부여한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 외부의 호스트 장치로부터 식별자 정보 획득을 위한 제1 쿼리(query) 요청을 수신한다. 상기 제1 쿼리 요청에 기초하여, 스토리지 장치에서 데이터 속성 부여를 위해 사용되는 복수의 식별자(identifier)들의 개수를 나타내는 최대 식별자 개수를 상기 호스트 장치로 출력한다. 상기 호스트 장치로부터 상기 식별자 정보 획득을 위한 제2 쿼리 요청을 수신한다. 상기 제2 쿼리 요청에 기초하여, 상기 복수의 식별자들과 상기 복수의 식별자들 각각의 이용 가능 여부를 나타내는 속성 확정 예정 식별자 목록을 상기 호스트 장치로 출력한다. 상기 호스트 장치로부터 상기 복수의 식별자들 중 제1 식별자를 포함하는 제1 기입 커맨드 및 제1 데이터를 수신한다. 상기 제1 기입 커맨드에 기초하여, 상기 제1 식별자에 대응하는 상기 제1 데이터를 상기 스토리지 장치의 제1 영역에 저장하고, 상기 복수의 식별자들과 상기 복수의 식별자들 각각이 부여된 논리 어드레스들의 관계를 나타내는 속성 확정 예정 스트림 정보 목록에서 상기 제1 데이터에 대한 제1 논리 어드레스를 상기 제1 식별자에 대응하도록 기록한다. 상기 호스트 장치로부터 상기 제1 식별자 및 복수의 속성들 중 제1 속성을 포함하는 제1 컨펌 스트림(confirm stream) 커맨드 또는 제2 기입 커맨드를 수신한다. 상기 제1 컨펌 스트림 커맨드 또는 상기 제2 기입 커맨드에 기초하여, 기입되어 있는 상기 제1 데이터에 상기 제1 속성을 부여하고, 상기 속성 확정 예정 스트림 정보 목록에서 상기 제1 식별자에 대응하도록 기록된 상기 제1 논리 어드레스를 삭제한다. 상기 제1 데이터는 기입 동작이 수행되는 시점에서는 속성이 설정되지 않으며, 상기 기입 동작이 완료되고 상기 제1 컨펌 스트림 커맨드 또는 상기 제2 기입 커맨드가 수신된 이후에 상기 제1 속성을 가지도록 설정되며, 상기 제1 기입 커맨드에 포함되는 상기 제1 식별자는 상기 제1 데이터에 대한 상기 기입 동작이 완료된 이후에 상기 제1 데이터에 대한 속성이 설정될 예정임을 나타낸다.
상기와 같은 본 발명의 실시예들에 따른 데이터 기입 방법 및 스토리지 장치에서는, 임시 ID로서 기능하는 상기 복수의 식별자들 및 기입 커맨드와 별개로 제공되는 추가 커맨드를 이용하여, 특정 데이터에 대한 기입 동작이 완료된 이후에 이미 기입되어 있는 데이터에 대한 속성을 설정할 수 있다. 따라서, 상기 스토리지 장치에 데이터 및 대응하는 속성을 효과적으로 기입할 수 있으며, 이를 기초로 상기 스토리지 장치의 성능 및/또는 수명을 효과적으로 개선할 수 있다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 스토리지 시스템의 동작을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 5는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 6은 본 발명의 실시예들에 따른 비휘발성 메모리 및 이를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 7은 도 1의 식별자 정보 요청을 수신하는 단계 및 복수의 식별자들에 대한 정보를 출력하는 단계의 일 예를 나타내는 순서도이다.
도 8, 9, 10a, 10b, 10c 및 10d는 도 7의 동작을 설명하기 위한 도면들이다.
도 11은 도 1의 제1 데이터를 기입하는 단계의 일 예를 나타내는 순서도이다.
도 12, 13 및 14는 도 11의 동작을 설명하기 위한 도면들이다.
도 15는 도 1의 제1 속성 부여 커맨드를 수신하는 단계 및 제1 데이터에 제1 속성을 부여하는 단계의 일 예를 나타내는 순서도이다.
도 16, 17, 18 및 19는 도 15의 동작을 설명하기 위한 도면들이다.
도 20은 도 1의 제1 속성 부여 커맨드를 수신하는 단계 및 제1 데이터에 제1 속성을 부여하는 단계의 다른 예를 나타내는 순서도이다.
도 21 및 22는 도 20의 동작을 설명하기 위한 도면들이다.
도 23은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 24는 도 23의 동작을 설명하기 위한 도면이다.
도 25는 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 26은 도 25의 동작을 설명하기 위한 도면이다.
도 27은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 28, 29 및 30은 도 27의 동작을 설명하기 위한 도면들이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 데이터 기입 방법은 비휘발성 메모리 및 스토리지 컨트롤러를 포함하는 스토리지 장치에 의해 수행된다. 상기 스토리지 장치는 외부의 호스트 장치로부터 수신되는 커맨드에 기초하여 동작한다. 상기 스토리지 장치 및 이를 포함하는 스토리지 시스템의 구조에 대해서는 도 2 등을 참조하여 후술하도록 한다.
본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 상기 스토리지 장치는 상기 외부의 호스트 장치로부터 식별자 정보 요청을 수신하고(단계 S110), 상기 식별자 정보 요청에 기초하여 데이터 속성 부여를 위해 사용되는 복수의 식별자(identifier)들에 대한 정보를 출력한다(단계 S120). 예를 들어, 단계 S110 및 S120은 상기 스토리지 장치의 동작 초기에(예를 들어, 부팅 시에) 수행될 수 있다. 단계 S110 및 S120에 대해서는 도 7 등을 참조하여 후술하도록 한다.
상기 스토리지 장치는 상기 외부의 호스트 장치로부터 상기 복수의 식별자들 중 제1 식별자를 포함하는 제1 기입 커맨드 및 제1 데이터를 수신하고(단계 S210), 상기 제1 기입 커맨드에 기초하여 상기 제1 식별자에 대응하는 제1 데이터를 기입한다(단계 S220). 예를 들어, 상기 제1 데이터는 기입 동작이 수행되는 시점, 즉 단계 S210 및 S220에서는 속성이 설정되지 않을 수 있다. 이 때, 상기 제1 기입 커맨드에 포함되는 상기 제1 식별자는 상기 제1 데이터에 대한 상기 기입 동작이 완료된 이후에 상기 제1 데이터에 대한 속성이 설정될 예정임을 나타내며, 상기 제1 데이터는 상기 제1 식별자에 대응하도록 별도로 관리되는 목록에 기록될 수 있다. 다시 말하면, 상기 제1 식별자는 상기 제1 데이터에 대한 속성이 실제로 설정되기 전까지 임시 ID(Identification)로서 기능할 수 있다. 단계 S210 및 S220에 대해서는 도 11 등을 참조하여 후술하도록 한다.
상기 스토리지 장치는 상기 외부의 호스트 장치로부터 상기 제1 식별자 및 복수의 속성들 중 제1 속성을 포함하는 제1 속성 부여 커맨드를 수신하고(단계 S310), 상기 제1 속성 부여 커맨드에 기초하여 기입되어 있는 상기 제1 데이터에 상기 제1 속성을 부여한다(단계 S320). 예를 들어, 상기 제1 데이터는 상기 기입 동작이 완료되고 상기 제1 속성 부여 커맨드가 수신된 이후의 시점, 즉 단계 S310 및 S320에서 상기 제1 속성을 가지도록 설정될 수 있다. 예를 들어, 상기 제1 속성은 제1 스트림 ID의 형태로 제공되며, 상기 제1 스트림 ID는 임시 ID인 상기 제1 식별자와 다르게 상기 제1 데이터에 대해 실제로 설정된 속성을 나타내는 정식 ID로서 기능할 수 있다.
일 실시예에서, 도 15 등을 참조하여 후술하는 것처럼, 상기 제1 속성 부여 커맨드는 상기 제1 기입 커맨드와 다른 필드(field) 구성을 가지도록 정의되고 상기 데이터 속성 부여를 위해 사용되는 제1 컨펌 스트림(confirm stream) 커맨드일 수 있다. 다시 말하면, 본 발명의 실시예들에 따라 이미 기입되어 있는 데이터에 대해 나중에 속성을 부여하기 위해 별도의 커맨드를 정의할 수 있다.
다른 실시예에서, 도 20 등을 참조하여 후술하는 것처럼, 상기 제1 속성 부여 커맨드는 상기 제1 기입 커맨드와 동일한 필드 구성을 가지도록 정의되고 상기 데이터 속성 부여를 위해 사용되는 제2 기입 커맨드일 수 있다. 다시 말하면, 실시예들에 따라 이미 기입되어 있는 데이터에 대해 나중에 속성을 부여하기 위해 기존의 기입 커맨드를 변형하여 사용할 수 있다.
본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서는, 임시 ID로서 기능하는 상기 복수의 식별자들 및 기입 커맨드와 별개로 제공되는 추가 커맨드를 이용하여, 특정 데이터에 대한 기입 동작이 완료된 이후에 이미 기입되어 있는 데이터에 대한 속성을 설정할 수 있다. 이 경우, 기입 시점에 데이터의 속성을 반드시 부여할 필요가 없고 속성을 전달하는 시점의 기회 범위를 확대할 수 있으며, 스토리지 장치가 자체적으로 데이터의 속성을 판단해야 할 필요성을 제거할 수 있다. 따라서, 상기 스토리지 장치에 데이터 및 대응하는 속성을 효과적으로 기입할 수 있으며, 이를 기초로 상기 스토리지 장치의 성능 및/또는 수명을 효과적으로 개선할 수 있다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(200) 및 스토리지 장치(300)를 포함한다.
호스트 장치(200)는 스토리지 시스템(100)의 전반적인 동작을 제어한다. 호스트 장치(200)는 호스트 프로세서(210) 및 호스트 메모리(220)를 포함할 수 있다.
호스트 프로세서(210)는 호스트 장치(200)의 동작을 제어할 수 있다. 예를 들어, 호스트 프로세서(210)는 운영 체제(Operating System; OS)를 실행할 수 있다. 예를 들어, 상기 운영 체제는 파일 관리를 위한 파일 시스템(file system), 및 스토리지 장치(300)를 포함하는 주변 기기를 상기 운영 체제 레벨에서 제어하기 위한 장치 드라이버(device driver)를 포함할 수 있다. 예를 들어, 호스트 프로세서(210)는 CPU(Central Processing Unit)와 같은 임의의 프로세서를 포함할 수 있다.
호스트 메모리(220)는 호스트 프로세서(210)에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다. 예를 들어, 호스트 메모리(220)는 DRAM(Dynamic Random Access Memory) 등과 같은 휘발성 메모리를 포함할 수 있다.
스토리지 장치(300)는 호스트 장치(200)에 의해 액세스된다. 스토리지 장치(300)는 스토리지 컨트롤러(310), 복수의 비휘발성 메모리들(320a, 320b, 320c) 및 버퍼 메모리(330)를 포함할 수 있다.
스토리지 컨트롤러(310)는 스토리지 장치(300)의 동작을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 호스트 장치(200)로부터 수신된 커맨드 및 데이터에 기초하여 복수의 비휘발성 메모리들(320a, 320b, 320c)의 동작을 제어할 수 있다.
스토리지 컨트롤러(310)는 도 1을 참조하면 본 발명의 실시예들에 따른 데이터 기입 방법을 수행하도록 구현될 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 호스트 장치(200)로부터 식별자 정보 요청을 수신하고 이를 기초로 복수의 식별자들에 대한 정보를 호스트 장치(200)로 출력하고, 호스트 장치(200)로부터 제1 식별자를 포함하는 제1 기입 커맨드 및 제1 데이터를 수신하고 이를 기초로 상기 제1 데이터를 기입하며, 호스트 장치(200)로부터 상기 제1 식별자 및 제1 속성을 포함하는 제1 속성 부여 커맨드를 수신하고 이를 기초로 기입되어 있는 상기 제1 데이터에 상기 제1 속성을 부여할 수 있다.
스토리지 컨트롤러(310)는 도 1을 참조하면 본 발명의 실시예들에 따른 데이터 기입 방법을 수행하기 위한 제1 목록(LIST1)(312) 및 제2 목록(LIST2)(314)을 포함할 수 있다.
제1 목록(312)은 상기 복수의 식별자들과 상기 복수의 식별자들 각각의 이용 가능 여부를 나타내며, 상기 복수의 식별자들로 구성된 자료구조일 수 있다. 제1 목록(312)은 속성 확정 예정 식별자 목록이라고 부를 수 있고, 보다 간단하게는 ID 목록(또는 임시 ID 목록)이라고 부를 수도 있다.
제2 목록(314)은 상기 복수의 식별자들 및 복수의 속성들과 데이터들에 대응하는 논리 어드레스들의 관계를 나타내며, 스트림 별 메타 정보로 구성된 자료구조일 수 있다. 제2 목록(314)은 스트림 정보 목록이라고 부를 수 있고, 보다 간단하게는 스트림 목록이라고 부를 수도 있다.
제2 목록(314)은 제1 서브 목록(CSL) 및 제2 서브 목록(ESL)을 포함할 수 있다. 제1 서브 목록(CSL)은 상기 복수의 속성들과 상기 복수의 속성들 각각이 부여된 논리 어드레스들의 관계를 나타낼 수 있다. 제2 서브 목록(ESL)은 상기 복수의 식별자들과 상기 복수의 식별자들 각각이 부여된 논리 어드레스들의 관계를 나타낼 수 있다. 제1 서브 목록(CSL)은 속성 확정(즉, 속성이 확정된) 스트림 정보 목록이라고 부를 수 있고, 제2 서브 목록(ESL)은 속성 확정 예정(즉, 속성이 확정될) 스트림 정보 목록이라고 부를 수 있다.
상기 복수의 속성들은 스토리지 장치(300)가 제공하는 입출력 특성을 나타낼 수 있다. 예를 들어, 상기 복수의 속성들은 데이터의 액세스 빈도(또는 횟수)에 따라 구분되고 상대적으로 높은 수준의 액세스 빈도를 나타내는 핫(hot), 상대적으로 낮은 수준의 액세스 빈도를 나타내는 콜드(cold), 중간 수준의 액세스 빈도를 나타내는 웜(warm) 등과 같은 특성을 포함할 수 있다. 예를 들어, 상기 복수의 속성들은 스트림 또는 스트림 ID의 형태로 제공될 수 있다.
제1 서브 목록(CSL)에 포함된 속성이 확정된 스트림들은 기입 시점에 속성이 지정되어 들어온 단일 또는 복수 개의 데이터들 및/또는 논리 어드레스들을 나타낼 수 있다. 제2 서브 목록(ESL)에 포함된 속성이 확정될 스트림들은 기입 시점에 속성이 지정되지 않았으나, 추후 속성이 확정될 것임을 알리는 식별자가 설정되어 들어온 복수 개의 데이터들 및/또는 논리 어드레스들을 나타낼 수 있다. 후술하는 것처럼, 단계 S310 및 S320에 의해 상기 속성이 확정될 스트림들의 일부가 상기 속성이 확정된 스트림으로 변경/전환될 수 있다.
상기 복수의 식별자들은 상기 속성이 확정될 스트림에 공통으로 부여하는 구분자를 나타낼 수 있다. 제1 목록(312), 즉 속성 확정 예정 식별자 목록은 상기 속성이 확정될 스트림에 대해 부여할 수 있는 식별자 목록이며, 스토리지 장치(300)가 최대 지원 가능한 식별자를 나타낼 수 있다.
스토리지 장치(300)는 상술한 상기 복수의 식별자들, 제1 목록(312) 및 제2 목록(314)을 이용하여 기입 동작이 완료된 이후에 이미 기입되어 있는 데이터에 대한 속성을 설정할 수 있다. 다만 본 발명은 이에 한정되지 않으며, 스토리지 장치(300)는 기입 시점에 데이터에 대한 속성을 확정하여 기입 동작을 수행할 수도 있고, 속성이 없는 데이터(즉, 기입 시점 및 기입 이후에 속성을 설정하지 않는 데이터)에 대한 기입 동작을 수행할 수도 있다.
복수의 비휘발성 메모리들(320a, 320b, 320c)은 복수의 데이터들을 저장할 수 있다. 예를 들어, 복수의 비휘발성 메모리들(320a, 320b, 320c)은 메타 데이터들 및 그 밖의 사용자 데이터들을 저장할 수 있다.
일 실시예에서, 복수의 비휘발성 메모리들(320a, 320b, 320c) 각각은 NAND 플래시 메모리(Flash Memory)를 포함할 수 있다. 다른 실시예에서, 복수의 비휘발성 메모리들(320a, 320b, 320c) 각각은 EEPROM(Electrically Erasable Programmable Read-Only Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리를 포함할 수 있다.
버퍼 메모리(330)는 스토리지 컨트롤러(310)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있고, 복수의 비휘발성 메모리들(320a, 320b, 320c)에 저장되어 있거나 저장하고자 하는 데이터를 임시로 저장할 수 있다. 예를 들어, 버퍼 메모리(330)는 SRAM(Static Random Access Memory), DRAM 등과 같은 휘발성 메모리를 포함할 수 있다.
일 실시예에서, 스토리지 장치(300)는 UFS(Universal Flash Storage)일 수 있다. 다른 실시예에서, 스토리지 장치(300)는 SSD(Solid State Drive), MMC(Multi Media Card) 또는 eMMC(embedded MMC)일 수 있다. 또 다른 실시예에서, SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(memory stick), 칩 카드(chip card), USB(Universal Serial Bus) 카드, 스마트 카드(smart card), CF(Compact Flash) 카드 또는 이와 유사한 형태로 구현될 수 있다.
일 실시예에서, 스토리지 장치(300)는 SATA(Serial Advanced Technology Attachment) 버스, SCSI(Small Computer Small Interface) 버스, NVMe(Non-Volatile Memory Express) 버스, SAS(Serial Attached SCSI) 버스, UFS, eMMC 등의 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)를 통해 호스트 장치(200)와 연결되고, 호스트 장치(200)에 의해 상기 블록 액세서블 인터페이스를 통하여 블록 단위로 액세스될 수 있다.
일 실시예에서, 스토리지 시스템(100)은 PC(Personal Computer), 서버 컴퓨터(server computer), 데이터 센터(data center), 워크스테이션(workstation), 디지털 TV(digital television), 셋-탑 박스(set-top box) 등의 임의의 컴퓨팅 시스템일 수 있다. 다른 실시예에서, 스토리지 시스템(100)은 휴대폰(mobile phone), 스마트 폰(smart phone), 태블릿(tablet) PC(Personal Computer), 노트북(laptop computer), PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 카메라(digital camera), 캠코더(camcorder), 휴대용 게임 콘솔(portable game console), 음악 재생기(music player), 동영상 재생기(video player), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone) 등의 임의의 모바일 시스템일 수 있다.
도 3은 본 발명의 실시예들에 따른 스토리지 시스템의 동작을 설명하기 위한 도면이다. 도 3은 도 2의 호스트 장치(200) 및 스토리지 장치(300)의 소프트웨어 계층 구조를 개념적으로 도시하고 있다.
도 3을 참조하면, 호스트 장치(200)는 어플리케이션(251), 파일 시스템(252), 입출력 스트림 관리자(253), 장치 관리자(254), 커맨드 관리자(255), 데이터 전송 관리자(256), 링크 관리자(257) 및 PHY(physical layer)(258)를 포함할 수 있다.
어플리케이션(251)은 응용 프로그램(application program)이라고도 하며, 운영 체제 상에서 실행되는 소프트웨어일 수 있다. 예를 들어, 어플리케이션(251)은 파일(file)의 생성, 복사 및 삭제 동작을 지원하도록 프로그램 되어 있을 수 있다. 예를 들어, 어플리케이션(251)은 동영상, 게임, 웹 브라우저 등과 같은 다양한 서비스를 제공할 수 있다.
파일 시스템(252)은 호스트 장치(200)에서 사용되는 파일을 관리할 수 있다. 예를 들어, 파일 시스템(252)은 호스트 장치(200)의 요청에 따라 액세스되는 파일들에 대한 파일명, 확장자, 파일 속성, 파일 크기, 클러스터 정보 등을 관리할 수 있다. 또한, 파일 시스템(252)에 의해 파일 단위의 데이터가 생성, 삭제 및 관리될 수 있다. 예를 들어, 파일 시스템(252)은 F2FS(Flash-Friendly File System)일 수 있다.
입출력 스트림 관리자(253)는 어플리케이션(251) 및 파일 시스템(252)으로부터 수신한 입출력을 분석하여 속성 또는 특성을 구분할 수 있다. 장치 관리자(254)는 장치 관리를 담당할 수 있다. 커맨드 관리자(255)는 스토리지 장치(300)로 제공되는 커맨드 관리를 담당할 수 있다. 데이터 전송 관리자(256)는 데이터 전송을 담당할 수 있다. 링크 관리자(257)는 스토리지 장치(300)의 연결 관리를 제어할 수 있다. PHY(258)는 스토리지 장치(300)와의 물리적 데이터 통신을 관리할 수 있다.
어플리케이션(251), 파일 시스템(252) 등을 상위 레벨(high level)이라고 부를 수 있고, 데이터 전송 관리자(256), 링크 관리자(257), PHY(258) 등을 하위 레벨(low level)이라고 부를 수 있다.
스토리지 장치(300)는 입출력 스트림 관리자(351), FTL(Flash Translation Layer)(352), 장치 관리자(353), 커맨드 관리자(354), 데이터 전송 관리자(355), 링크 관리자(356) 및 PHY(357)를 포함할 수 있다.
입출력 스트림 관리자(351)는 호스트 장치(200)로부터 수신한 속성들을 관리하며, 본 발명의 실시예들에 따른 데이터 기입 방법을 수행하기 위한 제1 목록(312) 및 제2 목록(314)을 관리할 수 있다. 제1 목록(312) 및 제2 목록(314)은 도 2를 참조하여 상술한 것과 실질적으로 동일할 수 있다.
FTL(352)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트 장치(200)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(예를 들어, 도 2의 320a, 320b, 320c) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(320a, 320b, 320c) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 메모리 블록의 유효 데이터를 새 메모리 블록에 복사한 후 기존 메모리 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(320a, 320b, 320c) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
장치 관리자(353)는 장치 관리를 담당할 수 있다. 커맨드 관리자(354)는 호스트 장치(200)로부터 수신되는 커맨드 분석을 담당할 수 있다. 데이터 전송 관리자(355)는 데이터 전송을 담당할 수 있다. 링크 관리자(356)는 호스트 장치(200)의 연결 관리를 제어할 수 있다. PHY(357)는 호스트 장치(200)와의 물리적 데이터 통신을 관리할 수 있다.
커맨드 관리자(354) 등을 상위 레벨이라고 부를 수 있고, 데이터 전송 관리자(355), 링크 관리자(356), PHY(357) 등을 하위 레벨이라고 부를 수 있다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 4를 참조하면, 스토리지 컨트롤러(400)는 프로세서(410), 메모리(420), 입출력 스트림 관리자(430), 호스트 인터페이스(440), ECC(Error Correction Code) 엔진(450), 메모리 인터페이스(460) 및 AES(Advanced Encryption Standard) 엔진(470)을 포함할 수 있다.
프로세서(410)는 호스트 장치(예를 들어, 도 2의 200)로부터 호스트 인터페이스(440)를 통하여 수신된 커맨드에 응답하여 스토리지 컨트롤러(400)의 동작을 제어할 수 있다. 예를 들어, 프로세서(410)는 스토리지 장치(예를 들어, 도 2의 300)의 동작을 제어하며, 스토리지 장치(300)를 구동하기 위한 펌웨어(Firmware)를 채용하여 각각의 구성들을 제어할 수 있다.
메모리(420)는 프로세서(410)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있다. 예를 들어, 메모리(420)는 SRAM, DRAM 등과 같은 휘발성 메모리로 구현될 수 있다.
본 발명의 실시예들에 따른 데이터 기입 방법을 수행하기 위한 제1 목록(312) 및 제2 목록(314)을 관리하는 입출력 스트림 관리자(430)는 도 3의 입출력 스트림 관리자(351)와 실질적으로 동일할 수 있다. 실시예에 따라서, 입출력 스트림 관리자(430)의 일부 또는 전부는 하드웨어의 형태로 구현될 수도 있고 소프트웨어(즉, 프로그램)의 형태로 구현될 수도 있다.
에러 정정을 위한 ECC 엔진(450)은 BCH(Bose-Chaudhuri-Hocquenghem) 코드, LDPC(Low Density Parity Check) 코드, 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 콘볼루션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
호스트 인터페이스(440)는 호스트 장치(200)와 스토리지 장치(300) 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(440)는 호스트 장치(200)의 버스 포맷(bus format)에 대응하여 스토리지 장치(300)와의 인터페이싱을 제공할 수 있다. 일 실시예에서, 호스트 장치(200)의 버스 포맷은 SCSI 또는 SAS일 수 있다. 다른 실시예에서, 호스트 장치(200)의 버스 포맷은 USB, PCIe(peripheral component interconnect express), ATA, PATA, SATA, NVMe 등일 수 있다.
메모리 인터페이스(460)는 비휘발성 메모리(예를 들어, 도 2의 320a, 320b, 320c)와 데이터를 교환할 수 있다. 메모리 인터페이스(460)는 데이터를 비휘발성 메모리(320a, 320b, 320c)에 전송할 수 있고, 비휘발성 메모리(320a, 320b, 320c)로부터 독출된 데이터를 수신할 수 있다. 예를 들어, 메모리 인터페이스(460)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
AES 엔진(470)은 스토리지 컨트롤러(400)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다. 상세하게 도시하지는 않았으나, AES 엔진(470)은 암호화 모듈 및 복호화 모듈을 포함할 수 있다. 실시예에 따라서, 상기 암호화 모듈 및 상기 복호화 모듈은 서로 별개의 모듈로 구현될 수도 있고 하나의 모듈로 구현될 수도 있다.
도 5는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 5를 참조하면, 비휘발성 메모리(500)는 메모리 셀 어레이(510), 어드레스 디코더(520), 페이지 버퍼 회로(530), 데이터 입출력 회로(540), 전압 생성기(550) 및 제어 회로(560)를 포함한다.
메모리 셀 어레이(510)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)을 통해 어드레스 디코더(520)와 연결된다. 또한, 메모리 셀 어레이(510)는 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(530)와 연결된다. 메모리 셀 어레이(510)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결되는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(510)는 각각 메모리 셀들을 포함하는 복수의 메모리 블록들(BLK1, BLK2, ..., BLKz)로 구분될 수 있다. 또한, 메모리 블록들(BLK1~BLKz) 각각은 복수의 페이지들로 구분될 수 있다.
실시예에 따라서, 메모리 셀 어레이(510)는 2차원 어레이(array) 구조 또는 3차원 수직 어레이 구조로 형성될 수 있다. 수직형(또는 3차원) 메모리 셀 어레이에 대한 자세한 설명은 본 명세서에 참고 문헌으로 결합된 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다.
제어 회로(560)는 외부(예를 들어, 도 2의 스토리지 컨트롤러(310))로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신하고, 커맨드(CMD) 및 어드레스(ADDR)에 기초하여 비휘발성 메모리(500)의 소거 루프, 프로그램 루프 및 독출 동작을 제어한다. 여기서 프로그램 루프는 프로그램 동작과 프로그램 검증 동작을 포함하고, 소거 루프는 소거 동작과 소거 검증 동작을 포함할 수 있다. 여기서 독출 동작은 노멀 독출 동작과 데이터 리커버리 독출 동작을 포함할 수 있다.
예를 들어, 제어 회로(560)는 커맨드(CMD)에 기초하여 전압 생성기(550)를 제어하기 위한 제어 신호들(CON) 및 페이지 버퍼 회로(530)를 제어하기 위한 제어 신호들(PBC)을 발생하고, 어드레스(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 발생할 수 있다. 제어 회로(560)는 로우 어드레스(R_ADDR)를 어드레스 디코더(520)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(540)에 제공할 수 있다.
어드레스 디코더(520)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(510)와 연결된다.
예를 들어, 소거/프로그램/독출 동작 시에, 어드레스 디코더(520)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 워드 라인들(WL) 중 적어도 하나를 선택 워드 라인으로 결정하고, 복수의 워드 라인들(WL) 중에서 상기 선택 워드 라인을 제외한 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
또한, 소거/프로그램/독출 동작 시에, 어드레스 디코더(520)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 스트링 선택 라인들(SSL) 중 적어도 하나를 선택 스트링 선택 라인으로 결정하고, 나머지 스트링 선택 라인들을 비선택 스트링 선택 라인들로 결정할 수 있다.
또한, 소거/프로그램/독출 동작 시에, 어드레스 디코더(520)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 접지 선택 라인들(GSL) 중 적어도 하나를 선택 접지 선택 라인으로 결정하고, 나머지 접지 선택 라인들을 비선택 접지 선택 라인들로 결정할 수 있다.
전압 생성기(550)는 전원 전압(PWR) 및 제어 신호들(CON)에 기초하여 비휘발성 메모리(500)의 동작에 필요한 전압들(VS)을 발생할 수 있다. 전압들(VS)은 어드레스 디코더(520)를 통해 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)에 인가될 수 있다. 또한, 전압 생성기(550)는 전원 전압(PWR) 및 제어 신호들(CON)에 기초하여 소거 동작에 필요한 소거 전압(VERS)을 발생할 수 있다.
예를 들어, 소거 동작 시에, 전압 생성기(550)는 메모리 블록들(BLK1~BLKz)의 공통 소스 라인 및/또는 비트 라인(BL)에 소거 전압(VERS)을 인가하고, 어드레스 디코더(520)를 통해 하나의 메모리 블록의 모든 워드 라인들에 소거 허용 전압(예를 들어, 접지 전압)을 인가할 수 있다. 소거 검증 동작 시에, 전압 생성기(550)는 어드레스 디코더(520)를 통해 하나의 메모리 블록의 모든 워드 라인들에 소거 검증 전압을 동시에 인가하거나 워드 라인 단위로 순차적으로 인가할 수 있다.
예를 들어, 프로그램 동작 시에, 전압 생성기(550)는 어드레스 디코더(520)를 통해 상기 선택 워드 라인에 프로그램 전압을 인가하고, 상기 비선택 워드 라인들에는 프로그램 금지 전압을 인가할 수 있다. 프로그램 검증 동작 시에, 전압 생성기(550)는 어드레스 디코더(520)를 통해 상기 선택 워드 라인에 프로그램 검증 전압을 인가하고, 상기 비선택 워드 라인들에는 검증 패스 전압을 인가할 수 있다.
또한, 노멀 독출 동작 시에, 전압 생성기(550)는 어드레스 디코더(520)를 통해 상기 선택 워드 라인에 독출 전압을 인가하고, 상기 비선택 워드 라인들에는 독출 패스 전압을 인가할 수 있다. 또한 데이터 리커버리 독출 동작 시에, 전압 생성기(550)는 어드레스 디코더(520)를 통해 상기 선택 워드 라인에 인접한 워드 라인에 독출 전압을 인가하고, 상기 선택 워드 라인에는 리커버리 독출 전압을 인가할 수 있다.
페이지 버퍼 회로(530)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(510)와 연결될 수 있다. 페이지 버퍼 회로(530)는 복수의 페이지 버퍼들을 포함할 수 있다. 일 실시예에서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다.
페이지 버퍼 회로(530)는 메모리 셀 어레이(510)에 프로그램 될 기입 데이터(DAT)를 저장하거나 혹은 메모리 셀 어레이(510)로부터 감지된 독출 데이터(DAT)를 저장할 수 있다. 즉, 페이지 버퍼 회로(530)는 비휘발성 메모리(500)의 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다.
데이터 입출력 회로(540)는 데이터 라인들(DL)을 통해 페이지 버퍼 회로(530)와 연결될 수 있다. 데이터 입출력 회로(540)는 컬럼 어드레스(C_ADDR)에 응답하여, 데이터(DAT)를 페이지 버퍼 회로(530)를 거쳐서 메모리 셀 어레이(510)에 제공하거나 메모리 셀 어레이(510)로부터 페이지 버퍼 회로(530)를 거쳐서 출력되는 데이터(DAT)를 외부에 제공할 수 있다.
한편, NAND 플래시 메모리에 기초하여 본 발명의 실시예들에 따른 비휘발성 메모리를 설명하였으나, 본 발명의 실시예들에 따른 비휘발성 메모리는 PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같은 임의의 비휘발성 메모리일 수 있다.
도 6은 본 발명의 실시예들에 따른 비휘발성 메모리 및 이를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 6을 참조하면, 메모리 시스템(600)은 메모리 장치(610) 및 메모리 컨트롤러(620)를 포함할 수 있다. 메모리 시스템(600)은 복수의 채널들(CH1, CH2, ..., CHm)을 지원할 수 있고, 메모리 장치(610)와 메모리 컨트롤러(620)는 복수의 채널들(CH1~CHm)을 통해 연결될 수 있다. 예를 들어, 메모리 시스템(600)은 UFS, SSD와 같은 스토리지 장치로 구현되며, 도 2의 스토리지 장치(300)에 대응할 수 있다.
메모리 장치(610)는 복수의 비휘발성 메모리들(NVM11, NVM12, ..., NVM1n, NVM21, NVM22, ..., NVM2n, NVMm1, NVMm2, ..., NVMmn)을 포함할 수 있다. 예를 들어, 비휘발성 메모리들(NVM11~NVMmn)은 도 2의 비휘발성 메모리들(320a, 320b, 320c)에 대응할 수 있다. 비휘발성 메모리들(NVM11~NVMmn) 각각은 대응하는 웨이(way)를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예를 들어, 비휘발성 메모리들(NVM11~NVM1n)은 웨이들(W11, W12, ..., W1n)을 통해 제1 채널(CH1)에 연결되고, 비휘발성 메모리들(NVM21~NVM2n)은 웨이들(W21, W22, ..., W2n)을 통해 제2 채널(CH2)에 연결되며, 비휘발성 메모리들(NVMm1~NVMmn)은 웨이들(Wm1, Wm2, ..., Wmn)을 통해 제m 채널(CHm)에 연결될 수 있다. 예시적인 실시예에서, 비휘발성 메모리들(NVM11~NVMmn) 각각은 메모리 컨트롤러(620)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 비휘발성 메모리들(NVM11~NVMmn) 각각은 칩(chip) 또는 다이(die)로 구현될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
메모리 컨트롤러(620)는 복수의 채널들(CH1~CHm)을 통해 메모리 장치(610)와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 도 2의 스토리지 컨트롤러(310)에 대응할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 채널들(CH1~CHm)을 통해 메모리 장치(610)로 커맨드들(CMDa, CMDb, ..., CMDm), 어드레스들(ADDRa, ADDRb, ..., ADDRm) 및 데이터(DATAa, DATAb, ..., DATAm)를 전송하거나, 메모리 장치(610)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.
메모리 컨트롤러(620)는 각각의 채널을 통해 해당 채널에 연결된 비휘발성 메모리들 중 하나를 선택하고, 선택된 비휘발성 메모리와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 제1 채널(CH1)에 연결된 비휘발성 메모리들(NVM11~NVM1n) 중 비휘발성 메모리(NVM11)를 선택할 수 있다. 메모리 컨트롤러(620)는 선택된 비휘발성 메모리(NVM11)로 제1 채널(CH1)을 통해 커맨드(CMDa), 어드레스(ADDRa) 및 데이터(DATAa)를 전송하거나, 선택된 비휘발성 메모리(NVM11)로부터 데이터(DATAa)를 수신할 수 있다.
메모리 컨트롤러(620)는 서로 다른 채널들을 통해 메모리 장치(610)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 제1 채널(CH1)을 통해 메모리 장치(610)로 커맨드(CMDa)를 전송하는 동안 제2 채널(CH2)을 통해 메모리 장치(610)로 커맨드(CMDb)를 전송할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 제1 채널(CH1)을 통해 메모리 장치(610)로부터 데이터(DATAa)를 수신하는 동안 제2 채널(CH2)을 통해 메모리 장치(610)로부터 데이터(DATAb)를 수신할 수 있다.
메모리 컨트롤러(620)는 메모리 장치(610)의 전반적인 동작을 제어할 수 있다. 메모리 컨트롤러(620)는 채널들(CH1~CHm)로 신호를 전송하여 채널들(CH1~CHm)에 연결된 비휘발성 메모리들(NVM11~NVMmn) 각각을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 제1 채널(CH1)로 커맨드(CMDa) 및 어드레스(ADDRa)를 전송하여 비휘발성 메모리들(NVM11~NVM1n) 중 선택된 하나를 제어할 수 있다.
비휘발성 메모리들(NVM11~NVMmn) 각각은 메모리 컨트롤러(620)의 제어에 따라 동작할 수 있다. 예를 들어, 비휘발성 메모리(NVM11)는 제1 채널(CH1)로 제공되는 커맨드(CMDa), 어드레스(ADDRa) 및 데이터(DATAa)에 따라 데이터(DATAa)를 프로그램할 수 있다. 예를 들어, 비휘발성 메모리(NVM21)는 제2 채널(CH2)로 제공되는 커맨드(CMDb) 및 어드레스(ADDRb)에 따라 데이터(DATAb)를 독출하고, 독출된 데이터(DATAb)를 메모리 컨트롤러(620)로 전송할 수 있다.
도 6에서는 메모리 장치(610)가 m개의 채널을 통해 메모리 컨트롤러(620)와 통신하고, 메모리 장치(610)가 각각의 채널에 대응하여 n개의 비휘발성 메모리를 포함하는 것으로 도시하였으나, 채널들의 개수와 하나의 채널에 연결된 비휘발성 메모리의 개수는 다양하게 변경될 수 있다.
이하에서는 스토리지 장치가 UFS인 경우에 기초하여 본 발명의 실시예들을 상세하게 설명하도록 한다. 다만 본 발명은 이에 한정되지 않으며, 스토리지 장치는 SSD 등과 같이 그 밖에 다양한 형태로 구현될 수 있다.
도 7은 도 1의 식별자 정보 요청을 수신하는 단계 및 복수의 식별자들에 대한 정보를 출력하는 단계의 일 예를 나타내는 순서도이다. 도 8, 9, 10a, 10b, 10c 및 10d는 도 7의 동작을 설명하기 위한 도면들이다.
도 1, 7 및 8을 참조하면, 상기 식별자 정보 요청을 수신하는데 있어서(단계 S110), 호스트 장치(200)로부터 제1 쿼리(query) 요청(QREQ1)을 수신할 수 있다(단계 S112). 예를 들어, 제1 쿼리 요청(QREQ1)은 호스트 장치(200)가 스토리지 장치(300)로부터 제공되는 정보를 획득하는 수단이고 UFS 표준을 따르는 쿼리 요청 UPIU(UFS Protocol Information Unit)를 포함하며, 상기 쿼리 요청 UPIU의 특정 필드에 특정 기술자(Descriptor)를 독출하기 위한 명령어를 설정하여 제공할 수 있다.
이후에, 상기 복수의 식별자들에 대한 정보를 출력하는데 있어서(단계 S120), 제1 쿼리 요청(QREQ1)에 기초하여 스토리지 장치(300)에서 지원되는 상기 복수의 식별자들의 개수를 나타내는 최대 식별자 개수(NOI)를 출력할 수 있다(단계 S122). 최대 식별자 개수(NOI)는 스토리지 장치(300)가 최대로 지원 가능한 식별자들의 개수를 나타낼 수 있다. 예를 들어, 최대 식별자 개수(NOI)는 제1 쿼리 요청(QREQ1)에 대응하는 제1 쿼리 응답(QRSP1)에 포함되어 출력될 수 있다. 예를 들어, 제1 쿼리 응답(QRSP1)은 UFS 표준을 따르는 쿼리 응답 UPIU를 포함할 수 있다.
이후에, 상기 식별자 정보 요청을 수신하는데 있어서(단계 S110), 호스트 장치(200)로부터 제2 쿼리 요청(QREQ2)을 수신할 수 있다(단계 S114). 예를 들어, 제1 쿼리 요청(QREQ1)과 유사하게, 제2 쿼리 요청(QREQ2)은 쿼리 요청 UPIU를 포함하며, 상기 쿼리 요청 UPIU의 특정 필드에 특정 속성(Attribute)을 독출하기 위한 명령어를 설정하여 제공할 수 있다.
이후에, 상기 복수의 식별자들에 대한 정보를 출력하는데 있어서(단계 S120), 제2 쿼리 요청(QREQ2)에 기초하여 상기 복수의 식별자들과 상기 복수의 식별자들 각각의 이용 가능 여부를 나타내는 속성 확정 예정 식별자 목록(LIST1)을 출력할 수 있다(단계 S124). 속성 확정 예정 식별자 목록(LIST1)은 도 2의 제1 목록(312)과 실질적으로 동일할 수 있다. 예를 들어, 속성 확정 예정 식별자 목록(LIST1)은 제2 쿼리 요청(QREQ2)에 대응하는 제2 쿼리 응답(QRSP2)에 포함되어 출력될 수 있다. 예를 들어, 제1 쿼리 응답(QRSP1)과 유사하게, 제2 쿼리 응답(QRSP2)은 쿼리 응답 UPIU를 포함할 수 있다.
도 9를 참조하면, 도 8의 제1 쿼리 요청(QREQ1) 및 제2 쿼리 요청(QREQ2)에 포함되는 쿼리 요청 UPIU를 나타내고 있다.
도 9에 도시된 것처럼, 쿼리 요청 UPIU는 복수의 필드들을 포함하며, 각 필드에 대한 숫자 및 명칭이 기재되어 있다. 예를 들어, xx010110b, Flags, Reserved, Task Tag, Query Function, Total EHS Length (00h), Reserved, Data Segment Length, Transaction Specific Fields, Header E2ECRC, Data[0], Data[1], Data[2], Data[3], ..., Data[Length-4], Data[Length-3], Data[Length-2], Data[Length-1], Data E2ECRC 등과 같은 필드들을 포함할 수 있다.
일 실시예에서, 제1 쿼리 요청(QREQ1)에 포함되는 쿼리 요청 UPIU는, Transaction Specific Fields인 필드(FR1)에 Geometry Descriptor를 독출하기 위한 명령어를 Read Descriptor 07h (Geometry)와 같이 설정하여 제공할 수 있다.
일 실시예에서, 제2 쿼리 요청(QREQ2)에 포함되는 쿼리 요청 UPIU는, 필드(FR1)에 Attribute를 독출하기 위한 명령어를 Read Attribute 2Bh (wIdListBitmap)과 같이 설정하여 제공할 수 있다.
도 10a, 10b, 10c 및 10d를 참조하면, 도 8의 제1 쿼리 응답(QRSP1) 및 제2 쿼리 응답(QRSP2)에 포함되는 쿼리 응답 UPIU를 나타내고 있다.
도 10a에 도시된 것처럼, 쿼리 응답 UPIU는 복수의 필드들을 포함하며, 각 필드에 대한 숫자 및 명칭이 기재되어 있다. 예를 들어, xx110110b, Flags, Reserved, Task Tag, Query Function, Query Response, Total EHS Length (00h), Device Information, Data Segment Length, Transaction Specific Fields, Header E2ECRC, Data[0], Data[1], Data[2], Data[3], ..., Data[Length-4], Data[Length-3], Data[Length-2], Data[Length-1], Data E2ECRC 등과 같은 필드들을 포함할 수 있다.
일 실시예에서, 제1 쿼리 응답(QRSP1)에 포함되는 쿼리 응답 UPIU는, Transaction Specific Fields인 필드(FR21)에 제1 쿼리 요청(QREQ1)과 유사하게 Geometry Descriptor의 독출을 나타내도록 Read Descriptor 07h (Geometry)와 같이 설정하고, Data Field인 필드(FR22)에 독출된 Geometry Descriptor를 포함하도록 설정하여 제공할 수 있다. 예를 들어, Geometry Descriptor는 도 10b에 도시된 것처럼 구현되며, 최대 식별자 개수(NOI)를 포함할 수 있다. 예를 들어, Geometry Descriptor에 포함되는 최대 식별자 개수(NOI)는 N(N은 2 이상의 자연수)개일 수 있다.
일 실시예에서, 제2 쿼리 응답(QRSP2)에 포함되는 쿼리 응답 UPIU는, Transaction Specific Fields인 필드(FR21)에 제2 쿼리 요청(QREQ2)과 유사하게 Attribute의 독출을 나타내도록 Read Attribute 2Bh (wIdListBitmap)과 같이 설정하고, 다른 Transaction Specific Fields인 필드(FR23)에 독출된 Attribute를 포함하도록 설정하여 제공할 수 있다. 예를 들어, Attribute는 도 10c에 도시된 것처럼 구현되며, 속성 확정 예정 식별자 목록(LIST1)을 포함할 수 있다.
일 실시예에서, 도 10d에 도시된 것처럼, 속성 확정 예정 식별자 목록(LIST1)은 비트맵(bitmap) 형태로 제공될 수 있다. 예를 들어, 속성 확정 예정 식별자 목록(LIST1)은 reserved 비트들(Reserved[31:N]) 및 식별자 비트들(Identifier[N-1:0])을 포함할 수 있다. 예를 들어, 상기 복수의 식별자들은 숫자들로 표현되며, 최대 식별자 개수(NOI)가 N인 경우에 0부터 N-1까지 N개의 숫자들로 표현될 수 있다.
일 실시예에서, 식별자 비트들(Identifier[N-1:0])의 위치는 각 식별자를 나타낼 수 있다. 예를 들어, 식별자 비트들(Identifier[N-1:0])만을 기준으로 하여 LSB(Least Significant Bit)는 숫자 0에 대응하는 식별자를 나타내고, MSB(Most Significant Bit)는 숫자 N-1에 대응하는 식별자를 나타낼 수 있다.
일 실시예에서, 식별자 비트들(Identifier[N-1:0])의 비트 값은 각 식별자의 사용 가능 여부를 나타낼 수 있다. 예를 들어, 도 10d에 도시된 것처럼, 식별자 비트들(Identifier[N-1:0]) 중 LSB의 비트 값이 1인 경우에 숫자 0에 대응하는 식별자는 사용 가능함을 나타내고, MSB의 비트 값이 0인 경우에 숫자 N-1에 대응하는 식별자는 사용 불가함을 나타낼 수 있다.
도 11은 도 1의 제1 데이터를 기입하는 단계의 일 예를 나타내는 순서도이다. 도 12, 13 및 14는 도 11의 동작을 설명하기 위한 도면들이다.
도 1, 11 및 12를 참조하면, 먼저 도 1, 7 및 8을 참조하여 상술한 것처럼 단계 S112, S122, S114 및 S124를 수행할 수 있다.
이후에, 호스트 장치(200)로부터 제1 식별자(IDF1)를 포함하는 제1 기입 커맨드(WCMD1) 및 제1 데이터(WDAT1)를 수신할 수 있다(단계 S210). 예를 들어, 제1 기입 커맨드(WCMD1)는 UFS 표준을 따르는 기입 커맨드 UPIU를 포함할 수 있다.
상세하게 도시하지는 않았으나, 제1 기입 커맨드(WCMD1) 및 제1 데이터(WDAT1)를 수신하는데 있어서, 호스트 장치(200)로부터 제1 기입 커맨드(WCMD1)를 먼저 수신하고, 이에 기초하여 호스트 장치(200)로 RTT(Ready To Transfer) 응답을 출력하며, 이후에 호스트 장치(200)로부터 제1 데이터(WDAT1)를 수신할 수 있다.
이후에, 상기 제1 데이터를 기입하는데 있어서(단계 S220), 제1 데이터(WDAT1)를 스토리지 장치(300)의 제1 영역에 저장할 수 있다(단계 S222). 예를 들어, 상기 제1 영역은 제1 기입 커맨드(WCMD1)에 포함되는 제1 논리 어드레스에 대응하는 영역일 수 있다. 예를 들어, 상기 제1 논리 어드레스는 논리 블록 어드레스(Logical Block Address; LBA)를 포함할 수 있다.
또한, 상기 제1 데이터를 기입하는데 있어서(단계 S220), 상기 복수의 식별자들과 상기 복수의 식별자들 각각이 부여된 논리 어드레스들의 관계를 나타내는 속성 확정 예정 스트림 정보 목록에서, 제1 데이터(WDAT1)에 대한 제1 논리 어드레스를 제1 식별자(IDF1)에 대응하도록 기록할 수 있다(단계 S224). 다시 말하면, 상기 속성 확정 예정 스트림 정보 목록을 업데이트할 수 있다. 예를 들어, 상기 속성 확정 예정 스트림 정보 목록은 도 2의 제2 목록(314)에 포함되는 제2 서브 목록(ESL)과 실질적으로 동일할 수 있다.
한편, 도 11에서는 단계 S222가 먼저 수행되고 단계 S224가 나중에 수행되는 것으로 도시하였으나, 실시예에 따라서 단계 S224가 먼저 수행되고 단계 S222가 나중에 수행될 수도 있고 단계 S222 및 S224가 실질적으로 동시에 수행될 수도 있다.
이후에, 제1 기입 커맨드(WCMD1)의 처리 완료, 즉 제1 데이터(WDAT1)에 대한 기입 동작의 완료를 나타내는 제1 기입 응답(WCRSP1)을 출력할 수 있다.
도 13을 참조하면, 도 12의 제1 기입 커맨드(WCMD1)에 포함되는 기입 커맨드 UPIU를 나타내고 있다.
도 13에 도시된 것처럼, 기입 커맨드 UPIU는 복수의 필드들을 포함할 수 있다. 예를 들어, OPERATION CODE (2Ah), WRPROTECT, DPO(Disable Page Out), FUA(Force Unit Access), Reserved, FUA_NV, Obsolete, LOGICAL BLOCK ADDRESS, Identifier, GROUP NUMBER, TRANSFER LENGTH, CONTROL = 00h 등과 같은 필드들을 포함할 수 있다.
일 실시예에서, 제1 식별자(IDF1)는 제1 기입 커맨드(WCMD1)의 식별자 필드(FR31)에 포함될 수 있다. 다시 말하면, 제1 기입 커맨드(WCMD1)에 포함되는 기입 커맨드 UPIU는, Identifier Field인 필드(FR31)에 제1 식별자(IDF1)를 포함하도록 설정하여 제공할 수 있다. 식별자 필드(FR31)는 기존의 기입 커맨드 UPIU에서는 Reserved Field이며, 본 발명의 실시예들에 따른 데이터 기입 방법을 수행하기 위해 Identifier Field로 설정될 수 있다.
상술한 것처럼, 호스트 장치(200)는 스토리지 장치(300)가 지원 가능한 식별자들 중 하나를 선정하여, 추후에 속성이 부여될 기입 커맨드의 필드에 함께 설정하여 전송할 수 있다.
도 14를 참조하면, 상기 속성 확정 예정 스트림 정보 목록, 즉 도 2의 제2 목록(314)에 포함되는 제2 서브 목록(ESL)을 나타내고 있다.
도 14에 도시된 것처럼, 복수의 식별자들(IDF)은 숫자 0에 대응하는 식별자, 숫자 1에 대응하는 식별자 및 숫자 2에 대응하는 식별자를 포함할 수 있다. 제1 기입 커맨드(WCMD1)가 숫자 0에 대응하는 식별자 및 논리 어드레스들(LBA0, LBA1, LBA2)을 포함하여 제공되는 경우에, 단계 S224가 수행됨에 따라 논리 어드레스들(LBA0, LBA1, LBA2)이 숫자 0에 대응하도록 상기 속성 확정 예정 스트림 정보 목록에 기록될 수 있다.
도 15는 도 1의 제1 속성 부여 커맨드를 수신하는 단계 및 제1 데이터에 제1 속성을 부여하는 단계의 일 예를 나타내는 순서도이다. 도 16, 17, 18 및 19는 도 15의 동작을 설명하기 위한 도면들이다.
도 1, 15 및 16을 참조하면, 먼저 도 1, 7 및 8을 참조하여 상술한 것처럼 단계 S112, S122, S114 및 S124를 수행하고 도 1, 11 및 12를 참조하여 단계 S210, S222 및 S224를 수행할 수 있다.
이후에, 데이터 속성 부여를 위한 상기 제1 속성 부여 커맨드를 수신할 수 있다(단계 S310).
구체적으로, 상기 제1 속성 부여 커맨드를 수신하는데 있어서(단계 S310), 제1 식별자(IDF1) 및 제1 속성(SID1)을 포함하는 제1 컨펌 스트림 커맨드(CSCMD1)를 수신할 수 있다(단계 S312). 제1 컨펌 스트림 커맨드(CSCMD1)는 제1 기입 커맨드(WCMD1)와 다른 필드 구성을 가지도록 정의되고 본 발명의 실시예들에 따른 데이터 기입 방법을 수행하기 위해 새롭게 정의된 커맨드일 수 있다. 예를 들어, 제1 컨펌 스트림 커맨드(CSCMD1)는 UFS 표준을 따르는 컨펌 스트림 커맨드 UPIU를 포함할 수 있다.
이후에, 상기 제1 데이터에 상기 제1 속성을 부여하는데 있어서(단계 S320), 상기 복수의 속성들과 상기 복수의 속성들 각각이 부여된 논리 어드레스들의 관계를 나타내는 속성 확정 스트림 정보 목록에서, 제1 식별자(IDF1)에 대응하는 제1 데이터(WDAT1)에 대한 상기 제1 논리 어드레스를 상기 제1 속성(SID1)에 대응하도록 기록할 수 있다(단계 S322). 예를 들어, 상기 속성 확정 스트림 정보 목록은 도 2의 제2 목록(314)에 포함되는 제1 서브 목록(CSL)과 실질적으로 동일할 수 있다.
이후에, 상기 제1 데이터에 상기 제1 속성을 부여하는데 있어서(단계 S320), 상기 속성 확정 예정 스트림 정보 목록에서, 제1 식별자(IDF1)에 대응하도록 기록된 상기 제1 논리 어드레스를 삭제할 수 있다(단계 S324).
다시 말하면, 제1 컨펌 스트림 커맨드(CSCMD1)에 기초하여 제1 데이터(WDAT1) 및 상기 제1 논리 어드레스가 속성이 확정될 예정인 상태에서 속성이 확정된 상태로 전환되며, 이러한 상태 변경을 반영하도록 상기 속성 확정 스트림 정보 목록 및 상기 속성 확정 예정 스트림 정보 목록을 업데이트할 수 있다.
이후에, 제1 컨펌 스트림 커맨드(CSCMD1)의 처리 완료, 즉 제1 데이터(WDAT1) 및 상기 제1 논리 어드레스에 대한 속성을 설정하는 동작의 완료를 나타내는 제1 응답(CSCRSP1)을 출력할 수 있다.
도 17을 참조하면, 제1 컨펌 스트림 커맨드(CSCMD1)에 포함되는 컨펌 스트림 커맨드 UPIU를 나타내고 있다.
도 17에 도시된 것처럼, 컨펌 스트림 커맨드 UPIU는 복수의 필드들을 포함할 수 있다. 예를 들어, OPERATION CODE (51h), Confirm Mode, ALL Delete Mode, Delete Mode, Stream ID, Identifier, Reserved 등과 같은 필드들을 포함할 수 있다.
컨펌 모드 필드(FR41)는 속성을 부여하는 동작을 수행하는 동작 모드를 설정하기 위한 필드일 수 있다. 스트림 ID 필드(FR44)는 속성을 나타내는 스트림 ID를 포함하는 필드이고, 식별자 필드(FR45)는 식별자를 포함하는 필드일 수 있다.
일 실시예에서, 단계 S310 및 S320을 수행하기 위해 제1 컨펌 스트림 커맨드(CSCMD1)의 컨펌 모드 필드(FR41)가 설정 또는 활성화되며, 제1 식별자(IDF1) 및 제1 속성(SID1)은 제1 컨펌 스트림 커맨드(CSCMD1)의 식별자 필드(FR45) 및 스트림 ID 필드(FR44)에 각각 포함될 수 있다.
상술한 것처럼, 호스트 장치(200)는 기입 커맨드의 전송 이후에, 이전에 전송한 기입 커맨드에 포함된 식별자, 부여하려는 속성 및 컨펌 모드 필드를 설정하여 컨펌 스트림 커맨드를 전송할 수 있다.
한편, 전체 삭제 모드 필드(FR42) 및 삭제 모드 필드(FR43)는 상기 속성 확정 예정 스트림 정보 목록의 적어도 일부를 삭제하는 동작을 수행하는 동작 모드를 설정하기 위한 필드일 수 있다. 전체 삭제 모드 필드(FR42) 및 삭제 모드 필드(FR43)에 대해서는 도 27 등을 참조하여 후술하도록 한다.
도 18 및 19를 참조하면, 도 18은 상기 속성 확정 스트림 정보 목록, 즉 도 2의 제2 목록(314)에 포함되는 제1 서브 목록(CSL)을 나타내고 있다. 도 19는 상기 속성 확정 예정 스트림 정보 목록, 즉 도 2의 제2 목록(314)에 포함되는 제2 서브 목록(ESL)을 나타내고 있다.
도 18에 도시된 것처럼, 상기 복수의 속성들, 즉 복수의 스트림 ID들(SID)은 핫 속성에 대응하는 스트림 ID 및 콜드 속성에 대응하는 스트림 ID를 포함할 수 있다. 도 19에 도시된 것처럼, 복수의 식별자들(IDF)은 숫자 0에 대응하는 식별자, 숫자 1에 대응하는 식별자 및 숫자 2에 대응하는 식별자를 포함할 수 있다.
제1 컨펌 스트림 커맨드(CSCMD1)가 컨펌 모드로 설정되고 숫자 0에 대응하는 식별자 및 핫 속성에 대응하는 스트림 ID를 포함하여 제공되는 경우에, 단계 S322가 수행됨에 따라 상기 속성 확정 예정 스트림 정보 목록에서 숫자 0에 대응하는 논리 어드레스들(LBA0, LBA1, LBA2)이 핫 속성에 대응하도록 상기 속성 확정 스트림 정보 목록에 기록되며, 단계 S324가 수행됨에 따라 상기 속성 확정 예정 스트림 정보 목록에서 숫자 0에 대응하는 논리 어드레스들(LBA0, LBA1, LBA2)이 삭제될 수 있다.
상술한 것처럼, 스토리지 장치(300)는 컨펌 스트림 커맨드를 수신한 경우에, 컨펌 스트림 커맨드를 수신하기 전까지 수신된 기입 커맨드들 중 식별자를 기준으로 속성을 부여할 수 있다.
도 20은 도 1의 제1 속성 부여 커맨드를 수신하는 단계 및 제1 데이터에 제1 속성을 부여하는 단계의 다른 예를 나타내는 순서도이다. 도 21 및 22는 도 20의 동작을 설명하기 위한 도면들이다. 이하 도 15, 16, 17, 18 및 19와 중복되는 설명은 생략한다.
도 1, 20 및 21을 참조하면, 먼저 도 1, 7 및 8을 참조하여 상술한 것처럼 단계 S112, S122, S114 및 S124를 수행하고 도 1, 11 및 12를 참조하여 단계 S210, S222 및 S224를 수행할 수 있다. 이 때, 호스트 장치(200)로부터 수신되는 제1 기입 커맨드(WCMD1e)는 도 12 및 16의 제1 기입 커맨드(WCMD1)와 일부 상이할 수 있으며, 이에 대해서는 도 22를 참조하여 후술하도록 한다.
이후에, 데이터 속성 부여를 위한 상기 제1 속성 부여 커맨드를 수신할 수 있다(단계 S310).
구체적으로, 상기 제1 속성 부여 커맨드를 수신하는데 있어서(단계 S310), 제1 식별자(IDF1) 및 제1 속성(SID1)을 포함하는 제2 기입 커맨드(WCMD1c)를 수신할 수 있다(단계 S314). 제2 기입 커맨드(WCMD1c)는 제1 기입 커맨드(WCMD1e)와 동일한 필드 구성을 가지도록 정의된 커맨드일 수 있다. 예를 들어, 제1 기입 커맨드(WCMD1e)와 유사하게, 제2 기입 커맨드(WCMD1c)는 UFS 표준을 따르는 기입 커맨드 UPIU를 포함할 수 있다.
이후에, 상기 제1 데이터에 상기 제1 속성을 부여하는데 있어서(단계 S320), 단계 S322 및 S324는 각각 도 15의 단계 S322 및 S324와 실질적으로 동일하며, 도 18 및 19를 참조하여 상술한 것처럼 수행될 수 있다.
이후에, 제2 기입 커맨드(WCMD1c)의 처리 완료, 즉 제1 데이터(WDAT1) 및 상기 제1 논리 어드레스에 대한 속성을 설정하는 동작의 완료를 나타내는 제2 응답(WCRSP1c)을 출력할 수 있다.
도 22를 참조하면, 도 21의 제1 기입 커맨드(WCMD1e) 및 제2 기입 커맨드(WCMD1c)에 포함되는 기입 커맨드 UPIU를 나타내고 있다.
Byte=1 및 Bit=2에 대응하는 Reserved Field가 스트림 모드 필드(FR32)로 변경되고 그룹 넘버 필드(FR33)를 추가적으로 이용하는 것을 제외하면, 도 22의 기입 커맨드 UPIU는 도 13의 기입 커맨드 UPIU와 실질적으로 동일할 수 있다.
스트림 모드 필드(FR32)는 동작 모드를 설정하기 위한 필드일 수 있다. 예를 들어, 스트림 모드 필드(FR32)의 값이 0으로 설정되면 속성 미확정된 데이터를 기입하기 위한 동작 모드를 나타내고, 스트림 모드 필드(FR32)의 값이 1로 설정되면 속성 미확정 상태로 기입되어 있는 데이터에 대한 속성을 부여하기 위한 동작 모드를 나타낼 수 있다.
식별자 필드(FR31)는 식별자를 포함하는 필드일 수 있다. 예를 들어, 스트림 모드 필드(FR32)의 값이 0인 경우에 식별자 필드(FR31)에 포함되는 식별자는 속성 미확정된 데이터에 대응하는 식별자를 나타내고, 스트림 모드 필드(FR32)의 값이 1인 경우에 식별자 필드(FR31)에 포함되는 식별자는 속성을 부여하기 위한 데이터에 대응하는 식별자를 나타낼 수 있다.
그룹 넘버 필드(FR33)는 속성을 나타내는 스트림 ID를 선택적으로 포함하는 필드일 수 있다. 예를 들어, 스트림 모드 필드(FR32)의 값이 0인 경우에 그룹 넘버 필드(FR33)는 스트림 ID를 포함하지 않으며, 스트림 모드 필드(FR32)의 값이 1인 경우에 그룹 넘버 필드(FR33)는 속성을 부여하기 위한 데이터에 대응하는 스트림 ID를 포함할 수 있다.
일 실시예에서, 단계 S210 및 S220을 수행하기 위해 제1 기입 커맨드(WCMD1e)의 스트림 모드 필드(FR32)를 0으로 설정하며, 제1 식별자(IDF1)는 제1 기입 커맨드(WCMD1e)의 식별자 필드(FR31)에 포함될 수 있다.
일 실시예에서, 단계 S310 및 S320을 수행하기 위해 제2 기입 커맨드(WCMD1e)의 스트림 모드 필드(FR32)를 1로 설정하며, 제1 식별자(IDF1) 및 제1 속성(SID1)은 제2 기입 커맨드(WCMD1e)의 식별자 필드(FR31) 및 그룹 넘버 필드(FR33)에 각각 포함될 수 있다.
상술한 것처럼, 호스트 장치(200)는 스토리지 장치(300)가 지원 가능한 식별자들 중 하나를 선정하여, 추후에 속성이 부여될 기입 커맨드의 필드에 설정하고 스트림 모드 필드를 0으로 함께 설정하여 전송할 수 있다. 이후에, 호스트 장치(200)는 이전에 전송한 기입 커맨드에 포함된 식별자, 부여하려는 속성 및 스트림 모드 필드를 1로 설정하여 기입 커맨드를 전송할 수 있다. 스토리지 장치(300)는 스트림 모드 필드가 1로 설정된 기입 커맨드를 수신한 경우에, 스트림 모드 필드가 1로 설정된 기입 커맨드를 수신하기 전까지 수신된 스트림 모드 필드가 0으로 설정된 기입 커맨드들 중 식별자를 기준으로 속성을 부여할 수 있다.
도 23은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다. 이하 도 1과 중복되는 설명은 생략한다.
도 23을 참조하면, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 단계 S110, S120, S210 및 S220은 각각 도 1의 단계 S110, S120, S210 및 S220과 실질적으로 동일할 수 있다.
상기 스토리지 장치는 상기 외부의 호스트 장치로부터 상기 제1 식별자를 포함하는 제2 기입 커맨드 및 제2 데이터를 수신하고(단계 S230), 상기 제2 기입 커맨드에 기초하여 상기 제1 식별자에 대응하는 제2 데이터를 기입한다(단계 S240). 단계 S230 및 S240은 각각 단계 S210 및 S220과 유사할 수 있다.
이후의 단계 S310은 도 1의 단계 S310과 실질적으로 동일할 수 있다. 상기 스토리지 장치는 상기 제1 속성 부여 커맨드에 기초하여 기입되어 있는 상기 제1 및 제2 데이터들에 상기 제1 속성을 동시에 부여한다(단계 S325). 복수의 기입 커맨드들 및 복수의 데이터들에 대한 속성 부여를 한 번에 수행할 수 있다.
도 24는 도 23의 동작을 설명하기 위한 도면이다. 이하 도 12 및 16과 중복되는 설명은 생략한다.
도 23 및 24를 참조하면, 상기 제1 속성 부여 커맨드가 제1 컨펌 스트림 커맨드(CSCMD1)인 경우를 나타내고 있다. 도시의 편의상, 상기 식별자 정보 요청을 수신하고 상기 복수의 식별자들에 대한 정보를 출력하는 동작은 생략하였다.
제1 식별자(IDF1)를 포함하는 제1 기입 커맨드(WCMD1) 및 제1 데이터(WDAT1)를 수신하고, 제1 기입 커맨드(WCMD1)의 처리 완료를 나타내는 제1 기입 응답(WCRSP1)을 출력할 수 있다. 제1 식별자(IDF1)를 포함하는 제2 기입 커맨드(WCMD2) 및 제2 데이터(WDAT2)를 수신하고, 제2 기입 커맨드(WCMD2)의 처리 완료를 나타내는 제2 기입 응답(WCRSP2)을 출력할 수 있다. 이후에, 제1 식별자(IDF1) 및 제1 속성(SID1)을 포함하는 제1 컨펌 스트림 커맨드(CSCMD1)를 수신하고, 제1 컨펌 스트림 커맨드(CSCMD1)의 처리 완료를 나타내는 제1 응답(CSCRSP1)을 출력할 수 있다.
도 25는 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다. 이하 도 1과 중복되는 설명은 생략한다.
도 25를 참조하면, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 단계 S110, S120, S210, S220, S310 및 S320은 각각 도 1의 단계 S110, S120, S210, S220, S310 및 S320과 실질적으로 동일할 수 있다.
상기 스토리지 장치는 상기 외부의 호스트 장치로부터 상기 복수의 식별자들 중 제2 식별자를 포함하는 제2 기입 커맨드 및 제2 데이터를 수신하고(단계 S410), 상기 제2 기입 커맨드에 기초하여 상기 제2 식별자에 대응하는 제2 데이터를 기입한다(단계 S420). 단계 S410 및 S420은 각각 단계 S210 및 S220과 유사할 수 있다.
상기 스토리지 장치는 상기 제2 식별자 및 상기 복수의 속성들 중 제2 속성을 포함하는 제2 속성 부여 커맨드를 수신하고(단계 S510), 상기 제2 속성 부여 커맨드에 기초하여 기입되어 있는 상기 제2 데이터에 상기 제2 속성을 부여한다(단계 S520). 단계 S510 및 S520은 각각 단계 S410 및 S420과 유사할 수 있다.
도 26은 도 25의 동작을 설명하기 위한 도면이다. 이하 도 12 및 16과 중복되는 설명은 생략한다.
도 25 및 26을 참조하면, 상기 제1 및 제2 속성 부여 커맨드들이 각각 제1 및 제2 컨펌 스트림 커맨드들(CSCMD1, CSCMD2)인 경우를 나타내고 있다. 도시의 편의상, 상기 식별자 정보 요청을 수신하고 상기 복수의 식별자들에 대한 정보를 출력하는 동작은 생략하였다.
제1 식별자(IDF1)를 포함하는 제1 기입 커맨드(WCMD1) 및 제1 데이터(WDAT1)를 수신하고, 제1 기입 커맨드(WCMD1)의 처리 완료를 나타내는 제1 기입 응답(WCRSP1)을 출력할 수 있다. 제1 식별자(IDF1) 및 제1 속성(SID1)을 포함하는 제1 컨펌 스트림 커맨드(CSCMD1)를 수신하고, 제1 컨펌 스트림 커맨드(CSCMD1)의 처리 완료를 나타내는 제1 응답(CSCRSP1)을 출력할 수 있다.
이후에, 제2 식별자(IDF2)를 포함하는 제2 기입 커맨드(WCMD2') 및 제2 데이터(WDAT2)를 수신하고, 제2 기입 커맨드(WCMD2')의 처리 완료를 나타내는 제2 기입 응답(WCRSP2)을 출력할 수 있다. 이후에, 제2 식별자(IDF2) 및 제2 속성(SID2)을 포함하는 제2 컨펌 스트림 커맨드(CSCMD2)를 수신하고, 제2 컨펌 스트림 커맨드(CSCMD2)의 처리 완료를 나타내는 제2 응답(CSCRSP2)을 출력할 수 있다.
한편, 도 23 및 24에서는 기입 커맨드를 2회 수신하고 컨펌 스트림 커맨드를 1회 전송하는 것으로 도시하였고 도 25 및 26에서는 기입 커맨드 및 컨펌 스트림 커맨드를 각각 2회 전송하는 것으로 도시하였으나, 본 발명은 이에 한정되지 않으며, 기입 커맨드들 및 컨펌 스트림 커맨드들의 개수는 실시예에 따라서 다양하게 변경될 수 있다. 기입 동작 시에 기입 커맨드들 및 컨펌 스트림 커맨드들이 제공됨에 따라, 상기 속성 확정 예정 식별자 목록, 상기 속성 확정 예정 스트림 정보 목록 및 상기 속성 확정 스트림 정보 목록이 지속적으로 관리 및 업데이트되고, 결과적으로 기입 동작이 완료된 이후에 이미 기입되어 있는 데이터에 대한 속성을 설정하는 동작이 효과적으로 구현될 수 있다.
한편, 도 24 및 26에서는 컨펌 스트림 커맨드에 기초하여 본 발명의 실시예들을 설명하였으나, 본 발명은 이에 한정되지 않으며, 도 20 내지 22를 참조하여 상술한 것처럼 기입 커맨드를 이용할 수도 있다.
도 27은 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법을 나타내는 순서도이다. 이하 도 1과 중복되는 설명은 생략한다.
도 27을 참조하면, 본 발명의 실시예들에 따른 스토리지 장치의 데이터 기입 방법에서, 상기 스토리지 장치는 데이터 속성 부여를 위해 사용되는 복수의 식별자들 및 속성 부여 커맨드에 기초하여, 기입하고자 하는 데이터의 속성을 관리한다(단계 S1100). 예를 들어, 단계 S1100은 도 1 내지 26을 참조하여 상술한 본 발명의 실시예들에 기초하여 수행될 수 있다.
상기 스토리지 장치는 식별자 정보의 삭제가 필요한지 판단할 수 있다(단계 S1200). 예를 들어, 상기 스토리지 장치가 지원 가능한 식별자가 없는 경우, 즉 상기 복수의 식별자들 모두가 현재 사용중인 경우에, 적어도 하나의 식별자를 사용 가능하도록 만들기 위해 상기 복수의 식별자들 중 적어도 하나에 대한 식별자 정보의 삭제가 필요할 수 있다. 다른 예에서, 그 밖에 다양한 다른 이유들 중 하나에 의해 상기 복수의 식별자들 중 적어도 하나에 대한 식별자 정보의 삭제가 필요할 수 있다.
일 실시예에서, 단계 S1200을 수행하기 위해, 단계 S110 및 S120과 유사하게, 상기 스토리지 장치는 구동 중에(예를 들어, runtime에) 상기 식별자 정보 요청을 수신하고 상기 복수의 식별자들에 대한 정보를 출력할 수 있다. 상기 외부의 호스트 장치는 상기 복수의 식별자들에 대한 정보에 기초하여 관련 정보를 삭제하고자 하는 식별자를 선택할 수 있다.
상기 식별자 정보의 삭제가 필요한 경우에(단계 S1200: 예), 상기 스토리지 장치는 상기 외부의 호스트 장치로부터 목록 삭제 커맨드를 수신하고(단계 S1310), 상기 목록 삭제 커맨드에 기초하여 상기 속성 확정 예정 스트림 정보 목록의 적어도 일부를 삭제할 수 있다(단계 S1320). 예를 들어, 상기 목록 삭제 커맨드는 도 17을 참조하여 상술한 컨펌 스트림 커맨드일 수 있다.
단계 S1320이 수행되어 상기 속성 확정 예정 스트림 정보 목록의 적어도 일부가 삭제된 이후에, 또는 상기 식별자 정보의 삭제가 필요하지 않은 경우에(단계 S1200: 아니오), 본 발명의 실시예들에 기초한 단계 S1100이 계속 수행될 수 있다.
도 28, 29 및 30은 도 27의 동작을 설명하기 위한 도면들이다.
도 28을 참조하면, 도 27의 단계 S1100이 수행됨에 따라 관리되는 상기 속성 확정 예정 스트림 정보 목록의 현재 상태를 나타내고 있다.
도 28에 도시된 것처럼, 복수의 식별자들(IDF)은 숫자 0, 1, 2, 3, 4, 5, 6 및 7에 대응하는 식별자들을 포함할 수 있다. 상기 속성 확정 예정 스트림 정보 목록에서, 논리 어드레스들(LBA0, LBA1, LBA5)이 숫자 0에 대응하도록 기록되어 있고, 논리 어드레스들(LBA3, LBA7, LBA9, LBAm)이 숫자 4에 대응하도록 기록되어 있으며, 논리 어드레스들(LBAn, LBAn+1, LBAn+2)이 숫자 7에 대응하도록 기록되어 있을 수 있다.
도 29를 참조하면, 도 27의 단계 S1310 및 S1320이 수행됨에 따라 상기 속성 확정 예정 스트림 정보 목록의 일부가 삭제되는 경우를 나타내고 있다.
일 실시예에서, 단계 S1310 및 S1320을 수행하기 위해 상기 목록 삭제 커맨드인 컨펌 스트림 커맨드의 삭제 모드 필드(FR43)가 설정되며, 숫자 0에 대응하는 식별자가 식별자 필드(FR45)에 포함될 수 있다. 상기와 같은 목록 삭제 커맨드가 수신되는 경우에, 도 29에 도시된 것처럼 상기 속성 확정 예정 스트림 정보 목록에서 숫자 0에 대응하는 논리 어드레스들(LBA0, LBA1, LBA5)이 삭제될 수 있다.
상술한 것처럼, 호스트 장치(200)는 삭제하고자 하는 식별자 및 삭제 모드 필드를 설정하여 컨펌 스트림 커맨드를 전송할 수 있다.
도 30을 참조하면, 도 27의 단계 S1310 및 S1320이 수행됨에 따라 상기 속성 확정 예정 스트림 정보 목록의 전부가 삭제되는 경우를 나타내고 있다.
일 실시예에서, 단계 S1310 및 S1320을 수행하기 위해 상기 목록 삭제 커맨드인 컨펌 스트림 커맨드의 전체 삭제 모드 필드(FR42)가 설정될 수 있다. 상기와 같은 목록 삭제 커맨드가 수신되는 경우에, 도 30에 도시된 것처럼 상기 속성 확정 예정 스트림 정보 목록에서 모든 식별자들에 대응하는 모든 논리 어드레스들(LBA0, LBA1, LBA5, LBA3, LBA7, LBA9, LBAm, LBAn, LBAn+1, LBAn+2)이 삭제될 수 있다.
상술한 것처럼, 호스트 장치(200)는 전체 삭제 모드 필드를 설정하여 컨펌 스트림 커맨드를 전송할 수 있다.
한편, 본 발명의 실시예들은 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수도 있다. 상기 컴퓨터로 판독 가능한 프로그램 코드는 다양한 컴퓨터 또는 다른 데이터 처리 장치의 프로세서로 제공될 수 있다. 상기 컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 기록 매체일 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 명령어 실행 시스템, 장비 또는 장치 내에 또는 이들과 접속되어 프로그램을 저장하거나 포함할 수 있는 임의의 유형적인 매체일 수 있다. 예를 들어, 상기 컴퓨터로 판독 가능한 매체는 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, 비일시적은 저장 매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장 매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
본 발명의 실시예들은 비휘발성 메모리 장치 및 스토리지 장치를 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 PC(Personal Computer), 서버 컴퓨터(server computer), 데이터 센터(data center), 워크스테이션(workstation), 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, IoE(Internet of Everything) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone) 등과 같은 전자 시스템에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 식별자 정보 요청을 수신하는 단계;
    상기 식별자 정보 요청에 기초하여, 데이터 속성 부여를 위해 사용되는 복수의 식별자(identifier)들에 대한 정보를 출력하는 단계;
    상기 복수의 식별자들 중 제1 식별자를 포함하는 제1 기입 커맨드 및 제1 데이터를 수신하는 단계;
    상기 제1 기입 커맨드에 기초하여, 상기 제1 식별자에 대응하는 제1 데이터를 기입하는 단계;
    상기 제1 식별자 및 복수의 속성들 중 제1 속성을 포함하는 제1 속성 부여 커맨드를 수신하는 단계; 및
    상기 제1 속성 부여 커맨드에 기초하여, 기입되어 있는 상기 제1 데이터에 상기 제1 속성을 부여하는 단계를 포함하는 스토리지 장치의 데이터 기입 방법.
  2. 제 1 항에 있어서,
    상기 제1 데이터는 기입 동작이 수행되는 시점에서는 속성이 설정되지 않으며, 상기 기입 동작이 완료되고 상기 제1 속성 부여 커맨드가 수신된 이후에 상기 제1 속성을 가지도록 설정되는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  3. 제 2 항에 있어서,
    상기 제1 기입 커맨드에 포함되는 상기 제1 식별자는 상기 제1 데이터에 대한 상기 기입 동작이 완료된 이후에 상기 제1 데이터에 대한 속성이 설정될 예정임을 나타내는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  4. 제 1 항에 있어서, 상기 제1 데이터에 상기 제1 속성을 부여하는 단계는,
    상기 복수의 속성들과 상기 복수의 속성들 각각이 부여된 논리 어드레스들의 관계를 나타내는 속성 확정 스트림 정보 목록에서, 상기 제1 식별자에 대응하는 상기 제1 데이터에 대한 제1 논리 어드레스를 상기 제1 속성에 대응하도록 기록하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  5. 제 4 항에 있어서, 상기 제1 데이터에 상기 제1 속성을 부여하는 단계는,
    상기 복수의 식별자들과 상기 복수의 식별자들 각각이 부여된 논리 어드레스들의 관계를 나타내는 속성 확정 예정 스트림 정보 목록에서, 상기 제1 식별자에 대응하도록 기록된 상기 제1 논리 어드레스를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  6. 제 4 항에 있어서,
    상기 제1 속성 부여 커맨드는 상기 제1 기입 커맨드와 다른 필드(field) 구성을 가지도록 정의되고 상기 데이터 속성 부여를 위해 사용되는 제1 컨펌 스트림(confirm stream) 커맨드인 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  7. 제 6 항에 있어서, 상기 제1 컨펌 스트림 커맨드는,
    동작 모드를 설정하기 위한 컨펌 모드 필드, 상기 제1 속성에 대응하는 제1 스트림 ID(identification)를 포함하는 스트림 ID 필드, 및 상기 제1 식별자를 포함하는 식별자 필드를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  8. 제 4 항에 있어서,
    상기 제1 속성 부여 커맨드는 상기 제1 기입 커맨드와 동일한 필드 구성을 가지도록 정의되고 상기 데이터 속성 부여를 위해 사용되는 제2 기입 커맨드인 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  9. 제 8 항에 있어서, 상기 제2 기입 커맨드는,
    동작 모드를 설정하기 위한 스트림 모드 필드, 상기 제1 식별자를 포함하는 식별자 필드, 및 상기 제1 속성에 대응하는 제1 스트림 ID(identification)를 포함하는 그룹 넘버(group number) 필드를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  10. 제 1 항에 있어서, 상기 제1 데이터를 기입하는 단계는,
    상기 제1 데이터를 상기 스토리지 장치의 제1 영역에 저장하는 단계; 및
    상기 복수의 식별자들과 상기 복수의 식별자들 각각이 부여된 논리 어드레스들의 관계를 나타내는 속성 확정 예정 스트림 정보 목록에서, 상기 제1 데이터에 대한 제1 논리 어드레스를 상기 제1 식별자에 대응하도록 기록하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  11. 제 10 항에 있어서,
    상기 제1 식별자는 상기 제1 기입 커맨드에 포함되는 식별자 필드에 포함되는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  12. 제 1 항에 있어서, 상기 식별자 정보 요청을 수신하는 단계는,
    제1 쿼리(query) 요청을 수신하는 단계; 및
    제2 쿼리 요청을 수신하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  13. 제 12 항에 있어서, 상기 복수의 식별자들에 대한 정보를 출력하는 단계는,
    상기 제1 쿼리 요청에 기초하여, 상기 스토리지 장치에서 지원되는 상기 복수의 식별자들의 개수를 나타내는 최대 식별자 개수를 출력하는 단계; 및
    상기 제2 쿼리 요청에 기초하여, 상기 복수의 식별자들과 상기 복수의 식별자들 각각의 이용 가능 여부를 나타내는 속성 확정 예정 식별자 목록을 출력하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  14. 제 1 항에 있어서,
    목록 삭제 커맨드를 수신하는 단계; 및
    상기 목록 삭제 커맨드에 기초하여, 상기 복수의 식별자들과 상기 복수의 식별자들 각각이 부여된 논리 어드레스들의 관계를 나타내는 속성 확정 예정 스트림 정보 목록의 적어도 일부를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  15. 제 14 항에 있어서,
    상기 목록 삭제 커맨드는, 동작 모드를 설정하기 위한 삭제 모드 필드, 및 제2 식별자를 포함하는 식별자 필드를 포함하고,
    상기 목록 삭제 커맨드에 기초하여 상기 속성 확정 예정 스트림 정보 목록에서 제2 식별자에 대응하는 논리 어드레스들만이 삭제되는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  16. 제 14 항에 있어서,
    상기 목록 삭제 커맨드는, 동작 모드를 설정하기 위한 전체 삭제 모드 필드를 포함하고,
    상기 목록 삭제 커맨드에 기초하여 상기 속성 확정 예정 스트림 정보 목록에서 상기 복수의 식별자들 모두에 대응하는 논리 어드레스들이 삭제되는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  17. 제 1 항에 있어서,
    상기 제1 식별자를 포함하는 제2 기입 커맨드 및 제2 데이터를 수신하는 단계; 및
    상기 제2 기입 커맨드에 기초하여, 상기 제1 식별자에 대응하는 제2 데이터를 기입하는 단계를 더 포함하고,
    상기 제1 속성 부여 커맨드에 기초하여, 기입되어 있는 상기 제1 및 제2 데이터들에 상기 제1 속성을 동시에 부여하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  18. 제 1 항에 있어서,
    상기 복수의 식별자들 중 제2 식별자를 포함하는 제2 기입 커맨드 및 제2 데이터를 수신하는 단계;
    상기 제2 기입 커맨드에 기초하여, 상기 제2 식별자에 대응하는 제2 데이터를 기입하는 단계;
    상기 제2 식별자 및 상기 복수의 속성들 중 제2 속성을 포함하는 제2 속성 부여 커맨드를 수신하는 단계; 및
    상기 제2 속성 부여 커맨드에 기초하여, 기입되어 있는 상기 제2 데이터에 상기 제2 속성을 부여하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 데이터 기입 방법.
  19. 복수의 비휘발성 메모리들; 및
    상기 복수의 비휘발성 메모리들의 동작을 제어하고, 외부의 호스트 장치로부터 식별자 정보 요청을 수신하며, 상기 식별자 정보 요청에 기초하여 데이터 속성 부여를 위해 사용되는 복수의 식별자(identifier)들에 대한 정보를 상기 호스트 장치로 출력하고, 상기 호스트 장치로부터 상기 복수의 식별자들 중 제1 식별자를 포함하는 제1 기입 커맨드 및 제1 데이터를 수신하며, 상기 제1 기입 커맨드에 기초하여 상기 제1 식별자에 대응하는 제1 데이터를 기입하고, 상기 호스트 장치로부터 상기 제1 식별자 및 복수의 속성들 중 제1 속성을 포함하는 제1 속성 부여 커맨드를 수신하며, 상기 제1 속성 부여 커맨드에 기초하여 기입되어 있는 상기 제1 데이터에 상기 제1 속성을 부여하는 스토리지 컨트롤러를 포함하는 스토리지 장치.
  20. 외부의 호스트 장치로부터 식별자 정보 획득을 위한 제1 쿼리(query) 요청을 수신하는 단계;
    상기 제1 쿼리 요청에 기초하여, 스토리지 장치에서 데이터 속성 부여를 위해 사용되는 복수의 식별자(identifier)들의 개수를 나타내는 최대 식별자 개수를 상기 호스트 장치로 출력하는 단계;
    상기 호스트 장치로부터 상기 식별자 정보 획득을 위한 제2 쿼리 요청을 수신하는 단계;
    상기 제2 쿼리 요청에 기초하여, 상기 복수의 식별자들과 상기 복수의 식별자들 각각의 이용 가능 여부를 나타내는 속성 확정 예정 식별자 목록을 상기 호스트 장치로 출력하는 단계;
    상기 호스트 장치로부터 상기 복수의 식별자들 중 제1 식별자를 포함하는 제1 기입 커맨드 및 제1 데이터를 수신하는 단계;
    상기 제1 기입 커맨드에 기초하여, 상기 제1 식별자에 대응하는 상기 제1 데이터를 상기 스토리지 장치의 제1 영역에 저장하고, 상기 복수의 식별자들과 상기 복수의 식별자들 각각이 부여된 논리 어드레스들의 관계를 나타내는 속성 확정 예정 스트림 정보 목록에서 상기 제1 데이터에 대한 제1 논리 어드레스를 상기 제1 식별자에 대응하도록 기록하는 단계;
    상기 호스트 장치로부터 상기 제1 식별자 및 복수의 속성들 중 제1 속성을 포함하는 제1 컨펌 스트림(confirm stream) 커맨드 또는 제2 기입 커맨드를 수신하는 단계; 및
    상기 제1 컨펌 스트림 커맨드 또는 상기 제2 기입 커맨드에 기초하여, 기입되어 있는 상기 제1 데이터에 상기 제1 속성을 부여하고, 상기 속성 확정 예정 스트림 정보 목록에서 상기 제1 식별자에 대응하도록 기록된 상기 제1 논리 어드레스를 삭제하는 단계를 포함하며,
    상기 제1 데이터는 기입 동작이 수행되는 시점에서는 속성이 설정되지 않으며, 상기 기입 동작이 완료되고 상기 제1 컨펌 스트림 커맨드 또는 상기 제2 기입 커맨드가 수신된 이후에 상기 제1 속성을 가지도록 설정되며, 상기 제1 기입 커맨드에 포함되는 상기 제1 식별자는 상기 제1 데이터에 대한 상기 기입 동작이 완료된 이후에 상기 제1 데이터에 대한 속성이 설정될 예정임을 나타내는 스토리지 장치의 데이터 기입 방법.
KR1020210003270A 2021-01-11 2021-01-11 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 KR20220101349A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210003270A KR20220101349A (ko) 2021-01-11 2021-01-11 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
US17/394,801 US11693574B2 (en) 2021-01-11 2021-08-05 Method of writing data in storage device and storage device performing the same
DE102021121871.3A DE102021121871A1 (de) 2021-01-11 2021-08-24 Verfahren zum schreiben von daten in eine speichereinrichtung und speichereinrichtung, welche dasselbe durchführt
CN202210015024.9A CN114764309A (zh) 2021-01-11 2022-01-07 将数据写入存储装置中的方法和执行该方法的存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210003270A KR20220101349A (ko) 2021-01-11 2021-01-11 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20220101349A true KR20220101349A (ko) 2022-07-19

Family

ID=82116358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210003270A KR20220101349A (ko) 2021-01-11 2021-01-11 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치

Country Status (4)

Country Link
US (1) US11693574B2 (ko)
KR (1) KR20220101349A (ko)
CN (1) CN114764309A (ko)
DE (1) DE102021121871A1 (ko)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US9141528B2 (en) 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US20120297121A1 (en) 2011-05-17 2012-11-22 Sergey Anatolievich Gorobets Non-Volatile Memory and Method with Small Logical Groups Distributed Among Active SLC and MLC Memory Partitions
EP2742429A4 (en) 2011-08-09 2015-03-25 Lsi Corp I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST
US8949517B2 (en) 2011-10-05 2015-02-03 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage
US11036533B2 (en) 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
US9696935B2 (en) * 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
JP2018160189A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム
JP6947932B2 (ja) 2018-06-26 2021-10-13 京セラ株式会社 試料保持具
US10592162B2 (en) 2018-08-22 2020-03-17 Intel Corporation Distributed storage location hinting for non-volatile memories
US11340810B2 (en) 2018-10-09 2022-05-24 Western Digital Technologies, Inc. Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints
KR20200053204A (ko) * 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법

Also Published As

Publication number Publication date
DE102021121871A1 (de) 2022-07-14
CN114764309A (zh) 2022-07-19
US20220222003A1 (en) 2022-07-14
US11693574B2 (en) 2023-07-04

Similar Documents

Publication Publication Date Title
US20140372685A1 (en) Memory system, data storage device, user device and data management method thereof
US11714578B2 (en) Method of operating storage device, storage device performing the same and method of operating storage system using the same
KR20190106228A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US12001413B2 (en) Key-value storage device and operating method thereof
US20110040930A1 (en) Method for Accessing Flash Memory Device and Memory System Including the Same
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
US20200089619A1 (en) Data storage device and method of deleting namespace thereof
KR20190120573A (ko) 메모리 시스템, 데이터 처리 시스템 및 메모리 시스템의 동작 방법
US10942678B2 (en) Method of accessing data in storage device, method of managing data in storage device and storage device performing the same
KR20190083148A (ko) 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
TW201344434A (zh) 記憶體格式化方法、記憶體控制器及記憶體儲存裝置
KR20220055034A (ko) 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법
TW201329999A (zh) 緩衝記憶體管理方法、記憶體控制器與記憶體儲存裝置
US11681638B2 (en) Method of synchronizing time between host device and storage device and system performing the same
KR20210012641A (ko) 메모리 시스템, 데이터 시스템 및 그 동작방법
US20230315646A1 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
US20230350578A1 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
KR20210039185A (ko) 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치
KR20200113990A (ko) 메모리 시스템 내 메모리 장치의 동작 상태를 확인하는 방법 및 장치
CN115390747A (zh) 存储设备及其操作方法
KR20230037255A (ko) 이벤트 로그 관리 방법, 컨트롤러 및 저장 장치
KR20220101349A (ko) 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
CN112835536A (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
TWI584292B (zh) 記憶體抹除方法、記憶體控制電路單元及記憶體儲存裝置
EP4180969B1 (en) Method of operating a storage device using multi-level address translation and a storage device performing the same

Legal Events

Date Code Title Description
A201 Request for examination