KR20200049051A - 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법 - Google Patents

스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법 Download PDF

Info

Publication number
KR20200049051A
KR20200049051A KR1020180131859A KR20180131859A KR20200049051A KR 20200049051 A KR20200049051 A KR 20200049051A KR 1020180131859 A KR1020180131859 A KR 1020180131859A KR 20180131859 A KR20180131859 A KR 20180131859A KR 20200049051 A KR20200049051 A KR 20200049051A
Authority
KR
South Korea
Prior art keywords
data
data read
meta
storage device
hpb
Prior art date
Application number
KR1020180131859A
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 KR1020180131859A priority Critical patent/KR20200049051A/ko
Priority to US16/416,872 priority patent/US11314450B2/en
Priority to SG10201907275UA priority patent/SG10201907275UA/en
Priority to EP19190440.8A priority patent/EP3647930A1/en
Priority to CN201910879584.7A priority patent/CN111128287B/zh
Publication of KR20200049051A publication Critical patent/KR20200049051A/ko
Priority to US17/712,520 priority patent/US11714578B2/en
Priority to US18/335,328 priority patent/US20230325123A1/en

Links

Images

Classifications

    • 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)

Abstract

스토리지 장치의 구동 방법에서, 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드를 수신한다. 데이터 독출 요청 및 메타 정보 전달 커맨드에 대응하는 데이터 독출 커맨드를 수신한다. 데이터 독출 요청 및 메타 정보 전달 커맨드에 대응하는 복수의 메타 데이터들을 수신한다. 데이터 독출 커맨드 및 복수의 메타 데이터들에 기초하여 데이터 독출 동작을 수행한다.

Description

스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법{METHOD OF OPERATING STORAGE DEVICE, STORAGE DEVICE PERFORMING THE SAME AND METHOD OF OPERATING STORAGE SYSTEM USING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 스토리지 장치의 구동 방법, 상기 구동 방법을 수행하는 스토리지 장치 및 상기 구동 방법을 이용한 스토리지 시스템의 구동 방법에 관한 것이다.
스토리지 시스템(storage system)은 호스트 장치(host device) 및 스토리지 장치(storage device)를 포함한다. 스토리지 장치는 메모리 컨트롤러와 메모리 장치를 포함하는 메모리 시스템 또는 메모리 장치만을 포함하여 구현될 수 있다. 스토리지 시스템 내에서 호스트 장치와 스토리지 장치는 UFS(Universal Flash Storage), SATA(Serial ATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), eMMC(embedded MMC) 등과 같은 다양한 인터페이스 표준을 통해 서로 연결된다. 호스트 장치는 스토리지 장치와 별개로 내부에 호스트 메모리를 포함하며, 최근에는 호스트 메모리를 스토리지 장치의 캐시 메모리로 활용하는 기술이 연구되고 있다.
본 발명의 일 목적은 대용량의 데이터를 효과적으로 독출할 수 있는 스토리지 장치의 구동 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 구동 방법을 수행하여 대용량의 데이터를 효과적으로 독출할 수 있는 스토리지 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 상기 구동 방법을 이용한 스토리지 시스템의 구동 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드를 수신한다. 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 데이터 독출 커맨드를 수신한다. 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 복수의 메타 데이터들을 수신한다. 상기 데이터 독출 커맨드 및 상기 복수의 메타 데이터들에 기초하여 데이터 독출 동작을 수행한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치는 복수의 비휘발성 메모리들 및 스토리지 컨트롤러를 포함한다. 상기 복수의 비휘발성 메모리들은 복수의 데이터들을 저장한다. 상기 스토리지 컨트롤러는 상기 복수의 비휘발성 메모리들의 동작을 제어한다. 상기 스토리지 컨트롤러는 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드를 수신하고, 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 데이터 독출 커맨드를 수신하고, 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 복수의 메타 데이터들을 수신하며, 상기 데이터 독출 커맨드 및 상기 복수의 메타 데이터들에 기초하여 데이터 독출 동작을 수행한다.
상기 또 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 구동 방법에서, 상기 스토리지 장치에 저장된 복수의 메타 데이터들을 상기 호스트 장치에 전송하여, 상기 복수의 메타 데이터들을 상기 호스트 장치에 포함되는 호스트 메모리에 저장한다. 상기 호스트 장치의 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드를 상기 스토리지 장치에 전송한다. 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 데이터 독출 커맨드를 상기 스토리지 장치에 전송한다. 상기 복수의 메타 데이터들 중 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 제1 메타 데이터들을 상기 스토리지 장치에 전송한다. 상기 데이터 독출 커맨드 및 상기 제1 메타 데이터들에 기초하여 상기 스토리지 장치에 대한 데이터 독출 동작을 수행한다.
상기와 같은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법, 스토리지 장치 및 스토리지 시스템의 구동 방법에서는, 메타 데이터들을 호스트 메모리에 적재해 놓은 환경에서, 단일의 데이터 독출 요청에 대하여 두 개의 커맨드들(즉, 메타 정보 전달 커맨드 및 데이터 독출 커맨드) 및 관련된 메타 데이터들을 수신하고, 수신된 데이터 독출 커맨드 및 메타 데이터들에 기초하여 데이터 독출 동작을 수행함으로써, 대용량 데이터 및 다양한 크기의 데이터를 효과적으로 독출할 수 있다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 3a 및 3b는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 설명하기 위한 도면들이다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서 이용되는 메타 정보 전달 커맨드의 일 예를 나타내는 도면이다.
도 5는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서 이용되는 데이터 독출 커맨드의 일 예를 나타내는 도면이다.
도 6은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서 이용되는 복수의 메타 데이터들의 일 예를 나타내는 도면이다.
도 7은 도 1의 데이터 독출 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 8은 도 1의 스토리지 장치의 구동 방법의 일 예를 나타내는 순서도이다.
도 9는 도 8의 스토리지 장치의 구동 방법을 설명하기 위한 도면이다.
도 10은 도 1의 스토리지 장치의 구동 방법의 다른 예를 나타내는 순서도이다.
도 11은 도 10의 스토리지 장치의 구동 방법을 설명하기 위한 도면이다.
도 12는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리 장치를 나타내는 블록도이다.
도 13 및 14는 본 발명의 실시예들에 따른 스토리지 시스템의 구동 방법을 나타내는 순서도들이다.
도 15는 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 스토리지 장치는 외부의 호스트 장치로부터 수신되는 커맨드에 기초하여 데이터 독출 동작을 수행한다. 상기 스토리지 장치 및 이를 포함하는 스토리지 시스템의 구조에 대해서는 도 2를 참조하여 후술하도록 한다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 상기 스토리지 장치는 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드를 수신하고(단계 S100), 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 데이터 독출 커맨드를 수신하며(단계 S200), 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 복수의 메타 데이터들을 수신한다(단계 S300). 도 8 내지 11을 참조하여 후술하는 것처럼, 단계 S100이 가장 먼저 수행되며, 단계 S200 및 S300의 순서는 변경될 수 있다.
상기 메타 정보 전달 커맨드, 상기 데이터 독출 커맨드 및 상기 복수의 메타 데이터들은 모두 외부의 호스트 장치로부터 제공될 수 있다. 또한, 상기 복수의 메타 데이터들은 상기 데이터 독출 동작을 수행하기 위한 복수의 물리 어드레스들 관련 정보를 포함할 수 있다. 상기 메타 정보 전달 커맨드, 상기 데이터 독출 커맨드 및 상기 복수의 메타 데이터들의 구성에 대해서는 도 4, 5 및 6을 참조하여 후술하도록 한다.
상기 스토리지 장치는 상기 데이터 독출 커맨드 및 상기 복수의 메타 데이터들에 기초하여 데이터 독출 동작을 수행한다(단계 S400).
일 실시예에서, 상기 데이터 독출 요청은 미리 정해진 크기보다 큰 대용량 데이터를 한 번에 또는 순차적으로 독출하는 대용량 데이터 독출 요청이고, 상기 데이터 독출 동작 또한 대용량 데이터 독출 동작일 수 있다. 예를 들어, 상기 미리 정해진 크기는 일반적인 하나의 데이터 독출 요청 및 하나의 데이터 독출 커맨드에 의해 독출되는 데이터의 크기일 수 있다.
일 실시예에서, 상기 데이터 독출 요청은 단일의 독출 요청일 수 있다. 다시 말하면, 단일의 데이터 독출 요청에 기초하여 두 개의 커맨드들 및 다량의 메타 데이터들이 동시에 및/또는 순차적으로 수신되며, 상기 두 개의 커맨드들 및 상기 다량의 메타 데이터들에 기초하여 상기 데이터 독출 동작이 수행될 수 있다.
본 발명의 실시예들에 따른 스토리지 장치는 HPB(Host Performance Booster) 또는 HMB(Host Memory Buffer) 기법에 기초하여 구동된다. HPB 기법은 호스트 장치에 포함되는 호스트 메모리에 스토리지 장치의 동작과 관련된 메타 데이터들을 저장함으로써, 호스트 메모리를 스토리지 장치의 캐시 메모리로서 이용하는 것을 나타낸다. 일반적으로 스토리지 장치에 포함되는 버퍼 메모리는 상대적으로 용량이 작아 스토리지 장치의 모든 메타 데이터들을 한 번에 저장하지 못하며, 스토리지 장치에 포함되고 데이터 저장 공간으로 이용되는 비휘발성 메모리들은 버퍼 메모리 및 호스트 메모리보다 속도가 느릴 수 있다. 호스트 메모리는 버퍼 메모리보다 용량이 크고 비휘발성 메모리보다 동작 속도가 빠르므로, 호스트 메모리를 스토리지 장치의 캐시 메모리로서 이용하는 경우에 스토리지 장치에 대한 액세스 성능이 향상될 수 있다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에 따르면, HPB 기법에 기초하여 메타 데이터들을 호스트 메모리에 적재해 놓은 환경에서, 단일의 데이터 독출 요청에 대하여 두 개의 커맨드들(즉, 메타 정보 전달 커맨드 및 데이터 독출 커맨드) 및 관련된 메타 데이터들을 수신하고, 수신된 데이터 독출 커맨드 및 메타 데이터들에 기초하여 데이터 독출 동작을 수행함으로써, 대용량 데이터 및 다양한 크기의 데이터를 효과적으로 독출할 수 있다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(200) 및 스토리지 장치(300)를 포함한다.
호스트 장치(200)는 스토리지 시스템(100)의 전반적인 동작을 제어한다. 호스트 장치(200)는 프로세서(210) 및 호스트 메모리(220)를 포함할 수 있다.
프로세서(210)는 호스트 장치(200)의 동작을 제어할 수 있다. 예를 들어, 프로세서(210)는 운영 체제(operating system; OS)를 실행할 수 있다. 도 3a 및 3b를 참조하여 후술하는 것처럼, 상기 운영 체제는 파일 관리를 위한 파일 시스템(file system), 및 스토리지 장치(300)를 포함하는 주변 기기를 상기 운영 체제 레벨에서 제어하기 위한 장치 드라이버(device driver)를 포함할 수 있다. 예를 들어, 프로세서(210)는 CPU(Central Processing Unit)와 같은 임의의 프로세서를 포함할 수 있다.
호스트 메모리(220)는 프로세서(210)에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다. 호스트 메모리(220)는 상대적으로 빠른 동작 속도를 갖는 메모리로 구현될 수 있다. 예를 들어, 호스트 메모리(220)는 DRAM(Dynamic Random Access Memory) 등과 같은 휘발성 메모리를 포함할 수 있다.
또한, 호스트 메모리(220)는 스토리지 장치(300)로부터 스토리지 장치(300)의 동작과 관련된 모든 메타 데이터들(MDATs)을 수신하여 저장할 수 있다. 예를 들어, 메타 데이터들(MDATs)은 스토리지 장치(300) 내부적으로 저장되어 있으며, 스토리지 시스템(100)이 부팅되는 경우에(예를 들어, 파워 온(power on) 시에) 또는 리셋되는 경우에 스토리지 장치(300)로부터 제공되어 호스트 메모리(220)에 저장될 수 있다. 호스트 메모리(220)에 저장된 메타 데이터들(MDATs)을 이용하여 스토리지 장치(300)에 액세스하는 HPB 기법에 기초하여 동작함으로써, 스토리지 장치(300)에 대한 액세스 성능이 향상될 수 있다.
스토리지 장치(300)는 호스트 장치(200)에 의해 액세스된다. 스토리지 장치(300)는 스토리지 컨트롤러(310), 복수의 비휘발성 메모리들(320a, 320b, 320c) 및 버퍼 메모리(330)를 포함할 수 있다.
스토리지 컨트롤러(310)는 스토리지 장치(300)의 동작을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 호스트 장치(200)로부터 수신된 커맨드 및 데이터에 기초하여 스토리지 장치(300)의 동작, 예를 들어 데이터 독출 동작을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 호스트 장치(200)로부터 메타 정보 전달 커맨드(HPB_PREF_CMD), 데이터 독출 커맨드(HPB_RD_CMD) 및 복수의 메타 데이터들(MDAT1~MDATN)을 수신하고, 이를 기초로 데이터 독출 동작을 수행하여 독출하고자 하는 데이터, 즉 목표 데이터(RDAT)를 출력하여 호스트 장치(200)에 제공할 수 있다.
복수의 비휘발성 메모리들(320a, 320b, 320c)은 복수의 데이터들을 저장할 수 있다. 예를 들어, 복수의 비휘발성 메모리들(320a, 320b, 320c)은 메타 데이터들(MDATs), 목표 데이터(RDAT) 및 그 밖의 사용자 데이터들을 저장할 수 있다.
일 실시예에서, 복수의 비휘발성 메모리들(320a, 320b, 320c) 각각은 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash 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) 등과 같은 휘발성 메모리를 포함할 수 있다.
일 실시예에서, 호스트 메모리(220)의 용량은 버퍼 메모리(330)의 용량보다 클 수 있다.
일 실시예에서, 스토리지 장치(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)는 UFS, eMMC, SATA(Serial Advanced Technology Attachment) 버스, SCSI(Small Computer Small Interface) 버스, NVMe(Non-Volatile Memory Express) 버스, SAS(Serial Attached SCSI) 버스 등의 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)를 통해 호스트 장치(200)와 연결되고, 호스트 장치(200)에 의해 상기 블록 액세서블 인터페이스를 통하여 블록 단위로 액세스될 수 있다.
일 실시예에서, 스토리지 시스템(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) 기기 등의 임의의 모바일 시스템일 수 있다. 다른 실시예에서, 스토리지 시스템(100)은 PC(Personal Computer), 서버 컴퓨터(server computer), 워크스테이션(workstation), 디지털 TV(digital television), 셋-탑 박스(set-top box), 네비게이션 시스템 등의 임의의 컴퓨팅 시스템일 수 있다.
도 3a 및 3b는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 설명하기 위한 도면들이다. 도 3a 및 3b는 도 2의 호스트 장치(200) 및 스토리지 장치(300)의 소프트웨어 계층 구조 및 저장 공간 구조를 개념적으로 도시하고 있다.
도 3a 및 3b를 참조하면, 호스트 장치(200)는 어플리케이션(application)(232), 파일 시스템(234), 블록 계층(block layer)(236), 장치 드라이버(238) 및 호스트 메모리(220)를 포함하고, 스토리지 장치(300)는 플래시 변환 계층(Flash Translation Layer; FTL)(342), 비휘발성 메모리(320) 및 버퍼 메모리(330)를 포함할 수 있다. 호스트 장치(200) 측의 어플리케이션(232), 파일 시스템(234), 블록 계층(236) 및 장치 드라이버(238)는 상위 레벨(high level)이라고 부를 수 있고, 스토리지 장치(300) 측의 플래시 변환 계층(342) 및 비휘발성 메모리(320)는 하위 레벨(low level)이라고 부를 수 있다.
어플리케이션(232)은 응용 프로그램(application program)이라고도 하며, 운영 체제 상에서 실행되는 소프트웨어일 수 있다. 예를 들어, 어플리케이션(232)은 파일(file)의 생성, 복사 및 삭제 동작을 지원하도록 프로그램 되어 있을 수 있다. 예를 들어, 어플리케이션(232)은 동영상, 게임, 웹 브라우저 등과 같은 다양한 서비스를 제공할 수 있다.
파일 시스템(234)은 호스트 장치(200)에서 사용되는 파일을 관리할 수 있다. 예를 들어, 파일 시스템(234)은 호스트 장치(200)의 요청에 따라 액세스되는 파일들에 대한 파일명, 확장자, 파일 속성, 파일 크기, 클러스터 정보 등을 관리할 수 있다. 또한, 파일 시스템(234)에 의해 파일 단위의 데이터가 생성, 삭제 및 관리될 수 있다. 예를 들어, 파일 시스템(234)은 저장 공간에 데이터를 로그(log) 형태로 저장하는 로그 구조(log-structured) 방식으로 데이터를 관리할 수 있다.
블록 계층(236)은 블록 입출력(input/output) 계층이라고도 하며, 블록 단위로 데이터 독출/기입 동작을 수행할 수 있다. 다시 말하면, 블록 계층(236)에 의해 블록 액세서블 인터페이스가 구현될 수 있다.
장치 드라이버(238)는 스토리지 장치(300)를 운영 체제 레벨에서 제어할 수 있다. 예를 들어, 장치 드라이버(238)는 스토리지 장치(300)를 제어하기 위한 커널(Kernel)의 소프트웨어 모듈일 수 있다. 호스트 장치(200)는 장치 드라이버(238)를 통하여 스토리지 장치(300)에 대한 데이터 독출/기입 동작 등을 요청할 수 있다.
호스트 메모리(220)는 도 2의 호스트 메모리(220)와 실질적으로 동일할 수 있다. 예를 들어, 도 2를 참조하여 상술한 것처럼, 스토리지 시스템(100)이 부팅 또는 리셋되는 경우에, 호스트 장치(200)는 스토리지 장치(300)의 모든 메타 데이터들(MDATs)을 수신하여 저장하며, 호스트 메모리(220)에 저장된 메타 데이터들(MDATs)을 이용하여 스토리지 장치(300)에 액세스할 수 있다.
플래시 변환 계층(342)은 호스트 장치(200)로부터 제공되는 논리 어드레스를 비휘발성 메모리(320)의 물리 어드레스로 변환하고, 비휘발성 메모리(320)에 저장된 데이터를 관리할 수 있다.
비휘발성 메모리(320) 및 버퍼 메모리(330)는 도 2의 비휘발성 메모리들(320a, 320b, 320c) 및 버퍼 메모리(330)와 각각 실질적으로 동일할 수 있다. 예를 들어, 도 2를 참조하여 상술한 것처럼, 비휘발성 메모리(320)는 목표 데이터(RDAT)와 같은 사용자 데이터들을 저장하고, 데이터 독출/기입/소거 동작 등을 수행할 수 있다. 버퍼 메모리(330)는 비휘발성 메모리(320)에 저장되어 있거나 저장하고자 하는 데이터를 임시로 저장할 수 있다.
도 3a 및 3b를 참조하여 도 1의 스토리지 장치의 구동 방법을 설명하면 다음과 같다.
먼저 도 3a에 도시된 것처럼, 어플리케이션(232)은 스토리지 장치(300)에 저장된 특정 파일에 대한 파일 요청(F_REG)을 발생할 수 있다. 파일 시스템(234)은 파일 요청(F_REG)에 대응하는 독출 요청(R_REQ)을 발생하고, 블록 계층(236)은 독출 요청(R_REQ)에 대응하는 입출력 요청(IO_REQ)을 발생할 수 있다. 파일 요청(F_REG), 독출 요청(R_REQ) 및 입출력 요청(IO_REQ) 중 적어도 하나가 도 1을 참조하여 상술한 상기 데이터 독출 요청을 나타내며, 상기 데이터 독출 요청은 단일의 데이터 독출 요청일 수 있다.
장치 드라이버(238)는 상기 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드(HPB_PREF_CMD) 및 데이터 독출 커맨드(HPB_RD_CMD)를 발생하여 스토리지 장치(300)에 전송할 수 있다. 또한, HPB 기법에 기초하여 메타 데이터들(MDATs)이 호스트 메모리에 저장되어 있으므로, 장치 드라이버(238)는 호스트 메모리(220)에 저장된 메타 데이터들(MDATs) 중 상기 데이터 독출 요청에 대응하는 복수의 메타 데이터들(MDAT1~MDATN)을 스토리지 장치(300)에 전송할 수 있다.
일 실시예에서, 메타 정보 전달 커맨드(HPB_PREF_CMD)가 가장 먼저 전송되며, 이후에 데이터 독출 커맨드(HPB_RD_CMD) 및 복수의 메타 데이터들(MDAT1~MDATN)이 전송될 수 있다. 데이터 독출 커맨드(HPB_RD_CMD) 및 복수의 메타 데이터들(MDAT1~MDATN)의 전송 순서는 달라질 수 있으며, 데이터 독출 커맨드(HPB_RD_CMD) 및 복수의 메타 데이터들(MDAT1~MDATN)의 전송 순서에 따른 데이터 독출 동작의 실시예들은 도 8 내지 11을 참조하여 후술하도록 한다.
일 실시예에서, 복수의 메타 데이터들(MDAT1~MDATN)은 DMA(Direct Memory Access) 인터페이스를 통해 전송될 수 있다. DMA 인터페이스를 이용함으로써, 복수의 메타 데이터들(MDAT1~MDATN)보다 빠르게 전송할 수 있다.
한편, 실시예에 따라서 메타 정보 전달 커맨드(HPB_PREF_CMD), 데이터 독출 커맨드(HPB_RD_CMD) 및 복수의 메타 데이터들(MDAT1~MDATN)은 동일한 전송 라인을 통해 제공될 수도 있고, 메타 정보 전달 커맨드(HPB_PREF_CMD) 및 데이터 독출 커맨드(HPB_RD_CMD)는 커맨드 전송 라인을 통해 제공되고 복수의 메타 데이터들(MDAT1~MDATN)은 상기 커맨드 전송 라인과 다른 데이터 전송 라인을 통해 제공될 수도 있다.
다음에 도 3b에 도시된 것처럼, 스토리지 장치(300)는 데이터 독출 커맨드(HPB_RD_CMD) 및 복수의 메타 데이터들(MDAT1~MDATN)을 기초로 데이터 독출 동작을 수행하여, 비휘발성 메모리(320)에 저장된 목표 데이터(RDAT)를 호스트 장치(200)에 전송할 수 있다. 도시하지는 않았으나, 실시예에 따라서 목표 데이터(RDAT)는 버퍼 메모리(330)에 임시로 저장되었다가 호스트 장치(200)에 전송될 수도 있다.
한편, 도 3a 및 3b에서는 메타 정보 전달 커맨드(HPB_PREF_CMD), 데이터 독출 커맨드(HPB_RD_CMD) 및 복수의 메타 데이터들(MDAT1~MDATN)이 장치 드라이버(238)로부터 직접 출력되고 목표 데이터(RDAT)가 비휘발성 메모리(320)로부터 직접 출력되는 것으로 도시하였으나, 호스트 장치(200)는 메타 정보 전달 커맨드(HPB_PREF_CMD), 데이터 독출 커맨드(HPB_RD_CMD) 및 복수의 메타 데이터들(MDAT1~MDATN)을 출력하고 스토리지 장치(300)와의 인터페이싱을 위한 호스트 인터페이스를 포함할 수 있고, 스토리지 장치(300)는 목표 데이터(RDAT)를 수신하고 비휘발성 메모리(320)와의 인터페이싱을 위한 메모리 인터페이스, 및 메타 정보 전달 커맨드(HPB_PREF_CMD), 데이터 독출 커맨드(HPB_RD_CMD) 및 복수의 메타 데이터들(MDAT1~MDATN)을 수신하고 목표 데이터(RDAT)를 출력하며 호스트 장치(200)와의 인터페이싱을 위한 호스트 인터페이스를 포함할 수 있다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서 이용되는 메타 정보 전달 커맨드의 일 예를 나타내는 도면이다.
도 2 및 4를 참조하면, 메타 정보 전달 커맨드(HPB_PREF_CMD)의 필드(field)는 동작 코드(operation code)(HPB_PREF_OPCD), 예약(reserved) 비트들(RESERVED), 즉시(immediate) 비트(IMMED), 이전(obsolete) 비트(OBSOL), 논리 블록 어드레스 정보(HPB_PREF_LBA), 메타 정보 전달 ID(Identification)(HPB_PREF_ID), 길이 코드(HPB_PREF_LENG) 및 제어 코드(HPB_PREF_CON)를 포함할 수 있다. 메타 정보 전달 커맨드(HPB_PREF_CMD)는 다량의 메타 정보 전달 커맨드 또는 HPB 프리페치(prefetch) 커맨드라고 부를 수 있다.
동작 코드(HPB_PREF_OPCD)는 메타 정보 전달 커맨드(HPB_PREF_CMD)임을 나타내기 위한 것으로, 예를 들어 "FAh"로 설정될 수 있다. 제어 코드(HPB_PREF_CON)는 예를 들어 "00h"로 설정될 수 있다. 길이 코드(HPB_PREF_LENG)는 메타 정보 전달 커맨드(HPB_PREF_CMD)의 길이를 나타낼 수 있다.
논리 블록 어드레스 정보(HPB_PREF_LBA)는 메타 정보 전달 커맨드(HPB_PREF_CMD)에 기초한 데이터 독출 동작을 위한 논리 블록 어드레스를 나타낼 수 있다.
메타 정보 전달 ID(HPB_PREF_ID)는 메타 정보 전달 커맨드(HPB_PREF_CMD) 및 이에 대응하는 데이터 독출 커맨드(HPB_RD_CMD)를 판별하는데 이용될 수 있다. 구체적으로, 상술한 것처럼 하나의 데이터 독출 요청에 기초하여 하나의 메타 정보 전달 커맨드(HPB_PREF_CMD) 및 하나의 데이터 독출 커맨드(HPB_RD_CMD)가 하나의 쌍을 이루어 발생할 수 있다. 만약 복수의 데이터 독출 요청들이 존재한다면, 이에 대응하는 복수의 메타 정보 전달 커맨드들 및 복수의 데이터 독출 커맨드들이 발생되므로, 메타 정보 전달 ID(HPB_PREF_ID)를 이용하여 각 메타 정보 전달 커맨드가 어떠한 데이터 독출 요청 및 어떠한 데이터 독출 커맨드에 대응하는 것인지 판별할 수 있다. 도 5를 참조하여 후술하는 것처럼, 데이터 독출 커맨드(HPB_RD_CMD)는 이와 유사하게 독출 ID(HPB_RD_ID)를 포함할 수 있다.
도 5는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서 이용되는 데이터 독출 커맨드의 일 예를 나타내는 도면이다.
도 2 및 5를 참조하면, 데이터 독출 커맨드(HPB_RD_CMD)의 필드는 동작 코드(HPB_RD_OPCD), FUA(Force Unit Access) 비트(FUA), 독출 ID(HPB_RD_ID), 논리 블록 어드레스 정보(HPB_RD_LBA), 엔트리 정보(HPB_RD_ENTRY), 예약 비트들(RESERVED), 그룹 넘버 코드(HPB_RD_GRN) 및 전송 길이 코드(HPB_RD_TLENG)를 포함할 수 있다. 데이터 독출 커맨드(HPB_RD_CMD)는 HPB 독출 커맨드라고 부를 수 있다.
동작 코드(HPB_RD_OPCD)는 데이터 독출 커맨드(HPB_RD_CMD)임을 나타내기 위한 것으로, 예를 들어 "88h"로 설정될 수 있다. 그룹 넘버 코드(HPB_RD_GRN)는 예를 들어 "11h"로 설정될 수 있다. 전송 길이 코드(HPB_RD_TLENG)는 데이터 독출 커맨드(HPB_RD_CMD)의 길이를 나타낼 수 있다.
독출 ID(HPB_RD_ID)는 데이터 독출 커맨드(HPB_RD_CMD) 및 이에 대응하는 메타 정보 전달 커맨드(HPB_PREF_CMD)를 판별하는데 이용되며, 도 4를 참조하여 상술한 메타 정보 전달 ID(HPB_PREF_ID)에 대응할 수 있다. 구체적으로, 독출 ID(HPB_RD_ID)를 이용하여 각 데이터 독출 커맨드가 어떠한 데이터 독출 요청 및 어떠한 메타 정보 전달 커맨드에 대응하는 것인지 판별할 수 있다.
일 실시예에서, 도 4의 메타 정보 전달 커맨드(HPB_PREF_CMD)와 도 5의 데이터 독출 커맨드(HPB_RD_CMD)가 동일한 데이터 독출 요청에 기초하여 발생된 경우에, 도 4의 메타 정보 전달 ID(HPB_PREF_ID)와 도 5의 독출 ID(HPB_RD_ID)는 동일한 값을 가질 수 있다. 다시 말하면, 메타 정보 전달 ID(HPB_PREF_ID)와 독출 ID(HPB_RD_ID)가 동일한 값을 가지는 경우에, 이들을 포함하는 메타 정보 전달 커맨드(HPB_PREF_CMD)와 데이터 독출 커맨드(HPB_RD_CMD)는 서로 대응하는 한 쌍의 커맨드임을 확인할 수 있다.
논리 블록 어드레스 정보(HPB_RD_LBA)는 데이터 독출 커맨드(HPB_RD_CMD)에 기초한 데이터 독출 동작을 위한 논리 블록 어드레스를 나타낼 수 있다. 예를 들어, 메타 정보 전달 ID(HPB_PREF_ID)와 독출 ID(HPB_RD_ID)가 동일한 값을 가지는 경우에, 논리 블록 어드레스(HPB_PREF_LBA)와 논리 블록 어드레스(HPB_RD_LBA) 또한 동일한 값을 가질 수 있다.
엔트리 정보(HPB_RD_ENTRY)는 하나의 메타 데이터에 대응하며, 데이터 독출 커맨드(HPB_RD_CMD)에 기초한 데이터 독출 동작을 위한 복수의 물리 어드레스들 관련 정보를 포함할 수 있다. 다만, 메타 정보 전달 커맨드(HPB_PREF_CMD) 이후에 전송되는 복수의 메타 데이터들(MDAT1~MDATN)에 기초하여 데이터 독출 동작이 수행되므로, 데이터 독출 커맨드(HPB_RD_CMD)에 포함되는 엔트리 정보(HPB_RD_ENTRY)는 상기 복수의 물리 어드레스들 중 일부(예를 들어, 첫 번째 물리 어드레스)와 관련된 정보만을 포함할 수 있다.
도 6은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서 이용되는 복수의 메타 데이터들의 일 예를 나타내는 도면이다.
도 2 및 6을 참조하면, 복수의 메타 데이터들(MDAT1~MDATN)은 복수의 엔트리 정보들(HPB_PREF_ENTRY1, HPB_PREF_ENTRY2, ..., HPB_PREF_ENTRYN)을 포함할 수 있다.
도 5의 엔트리 정보(HPB_RD_ENTRY)와 유사하게, 복수의 엔트리 정보들(HPB_PREF_ENTRY1, HPB_PREF_ENTRY2, ..., HPB_PREF_ENTRYN) 각각은 하나의 메타 데이터에 대응할 수 있다. 예를 들어, 제1 엔트리 정보(HPB_PREF_ENTRY1)는 제1 메타 데이터(MDAT1)에 대응하고, 제N(N은 2 이상의 자연수) 엔트리 정보(HPB_PREF_ENTRYN)는 제N 메타 데이터(MDATN)에 대응할 수 있다.
복수의 엔트리 정보들(HPB_PREF_ENTRY1, HPB_PREF_ENTRY2, ..., HPB_PREF_ENTRYN)은 메타 정보 전달 커맨드(HPB_PREF_CMD) 및 데이터 독출 커맨드(HPB_RD_CMD)에 기초한 데이터 독출 동작을 위한 복수의 물리 어드레스들 관련 정보를 포함할 수 있다. 예를 들어, 복수의 엔트리 정보들(HPB_PREF_ENTRY1, HPB_PREF_ENTRY2, ..., HPB_PREF_ENTRYN)은 복수의 논리 어드레스들(예를 들어, 논리 블록 어드레스들)과 상기 복수의 물리 어드레스들(예를 들어, 물리 페이지 넘버들)의 대응 관계를 나타내는 논리-물리(logical-to-physical) 맵핑 정보, 즉 논리-물리 맵핑 엔트리들을 포함할 수 있다.
도시하지는 않았으나, 복수의 메타 데이터들(MDAT1~MDATN), 즉 복수의 엔트리 정보들(HPB_PREF_ENTRY1, HPB_PREF_ENTRY2, ..., HPB_PREF_ENTRYN)의 맨 앞단 또는 뒷단에는 도 4를 참조하여 상술한 메타 정보 전달 ID(HPB_PREF_ID)가 함께 부가되어 전송될 수 있다.
일 실시예에서, 도 4의 메타 정보 전달 ID(HPB_PREF_ID)와 도 5의 독출 ID(HPB_RD_ID)가 동일한 값을 가지는 경우, 및 도 6의 복수의 메타 데이터들(MDAT1~MDATN)이 도 4의 메타 정보 전달 커맨드(HPB_PREF_CMD)에 기초하여 발생 및 전송되는 경우에, 도 5의 데이터 독출 커맨드(HPB_RD_CMD)에 포함되는 엔트리 정보(HPB_RD_ENTRY)는 도 6의 복수의 메타 데이터들(MDAT1~MDATN)에 포함되는 복수의 엔트리 정보들(HPB_PREF_ENTRY1, HPB_PREF_ENTRY2, ..., HPB_PREF_ENTRYN) 중 하나(예를 들어, 제1 엔트리 정보(HPB_PREF_ENTRY1))와 동일한 값을 가질 수 있다.
도 4, 5 및 6을 참조하여 메타 정보 전달 ID(HPB_PREF_ID)가 1바이트이고 독출 ID(HPB_RD_ID)가 7비트이고 논리 블록 어드레스들(HPB_PREF_LBA, HPB_RD_LBA)이 각각 4바이트이며 엔트리 정보들(HPB_RD_ENTRY, HPB_PREF_ENTRY1, HPB_PREF_ENTRY2, ..., HPB_PREF_ENTRYN)이 각각 8바이트인 경우에 기초하여 본 발명의 실시예들을 설명하였으나, 본 발명은 이에 한정되지 않을 수 있다.
도 7은 도 1의 데이터 독출 동작을 수행하는 단계의 일 예를 나타내는 순서도이다.
도 1, 2, 3a 및 7을 참조하면, 상기 데이터 독출 커맨드 및 상기 복수의 메타 데이터들에 기초하여 데이터 독출 동작을 수행하는데 있어서(단계 S400), 복수의 메타 데이터들(MDAT1~MDATN)에 기초하여 복수의 물리 어드레스들을 획득할 수 있다(단계 S410). 예를 들어, 플래시 변환 계층(342)은 데이터 독출 커맨드(HPB_RD_CMD)에 포함되는 논리 블록 어드레스 정보(도 5의 HPB_RD_LBA) 및 복수의 메타 데이터들(MDAT1~MDATN)에 포함되는 복수의 엔트리 정보들(도 6의 HPB_PREF_ENTRY1, HPB_PREF_ENTRY2, ..., HPB_PREF_ENTRYN)을 기초로 논리-물리 어드레스 변환을 수행하여 상기 복수의 물리 어드레스들을 획득할 수 있다.
상기 복수의 물리 어드레스들에 기초하여 목표 데이터(RDAT)를 독출하고(단계 S420), 목표 데이터(RDAT)를 출력할 수 있다(단계 S430). 예를 들어, 스토리지 장치(300)에 포함되는 메모리 인터페이스를 통해 비휘발성 메모리(320)에 액세스하여 목표 데이터(RDAT)를 독출하며, 스토리지 장치(300)에 포함되는 호스트 인터페이스를 통해 독출된 목표 데이터(RDAT)를 출력할 수 있다.
도 8은 도 1의 스토리지 장치의 구동 방법의 일 예를 나타내는 순서도이다. 도 9는 도 8의 스토리지 장치의 구동 방법을 설명하기 위한 도면이다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 상기 메타 정보 전달 커맨드와 상기 데이터 독출 커맨드는 동일 우선 순위에서 함께 스케쥴링되어 비동기 처리될 수 있다. 또한, 상기 메타 정보 전달 커맨드는 상기 복수의 메타 데이터들의 전송을 동반하며, 상기 메타 정보 전달 커맨드의 전송 이후에 상기 데이터 독출 커맨드 및 상기 복수의 메타 데이터들의 전송 순서 및 간격이 달라질 수 있다. 도 8 및 9에서는 상기 데이터 독출 커맨드가 먼저 수신되고 상기 복수의 메타 데이터들이 나중에 수신되는 경우에 기초하여 본 발명의 실시예들을 설명하도록 한다.
도 1, 2, 8 및 9를 참조하면, 상기 메타 정보 전달 커맨드를 수신하는데 있어서(단계 S100), 제1 시점에서 메타 정보 전달 커맨드(HPB_PREF_CMD0)를 수신할 수 있다(단계 S110). 예를 들어, 호스트 장치(200)는 메타 정보 전달 ID(HPB_PREF_ID)가 0인(즉, ID=0)인 메타 정보 전달 커맨드(HPB_PREF_CMD0)를 전송하며(단계 S112), 스토리지 장치(300)는 상기 제1 시점에서 메타 정보 전달 커맨드(HPB_PREF_CMD0)의 수신을 완료할 수 있다(단계 S114).
상기 데이터 독출 커맨드를 수신하는데 있어서(단계 S200), 상기 제1 시점 이후의 제2 시점에서 데이터 독출 커맨드(HPB_RD_CMD0)를 수신할 수 있다(단계 S210). 예를 들어, 호스트 장치(200)는 독출 ID(HPB_RD_ID)가 0인(즉, ID=0)인 데이터 독출 커맨드(HPB_RD_CMD0)를 전송하며(단계 S212), 스토리지 장치(300)는 상기 제2 시점에서 데이터 독출 커맨드(HPB_RD_CMD0)의 수신을 완료할 수 있다(단계 S214).
메타 정보 전달 커맨드(HPB_PREF_CMD0) 및 데이터 독출 커맨드(HPB_RD_CMD0)의 수신이 완료된 이후에, 메타 정보 전달 커맨드(HPB_PREF_CMD0)가 수신된 상기 제1 시점과 데이터 독출 커맨드(HPB_RD_CMD0)가 수신된 상기 제2 시점의 차이(TD1)가 제1 기준 시간보다 짧은지 판단할 수 있다(단계 S220). 또한, 상기 복수의 메타 데이터들을 수신하는데 있어서(단계 S300), 메타 정보 전달 커맨드(HPB_PREF_CMD0)에 대응하는 복수의 메타 데이터들(MDATA)의 수신이 완료되었는지 판단할 수 있다(단계 S310).
상기 제1 시점과 상기 제2 시점의 차이(TD1)가 상기 제1 기준 시간보다 짧은 경우(단계 S220: 예), 및 복수의 메타 데이터들(MDATA)의 수신이 미완료된 경우에(단계 S310: 아니오), 데이터 독출 동작을 바로 수행하지 않으며, 복수의 메타 데이터들(MDATA)의 수신이 완료될 때까지 대기할 수 있다(단계 S320). 예를 들어, 호스트 장치(200)는 메타 정보 전달 ID(HPB_PREF_ID)가 0인(즉, ID=0)인 메타 정보 전달 커맨드(HPB_PREF_CMD0)에 대응하는 복수의 메타 데이터들(MDATA)을 전송하며(단계 S312), 스토리지 장치(300)는 상기 제1 시점 및 상기 제2 시점 이후의 제3 시점에서 복수의 메타 데이터들(MDATA)의 수신을 완료할 수 있다(단계 S314).
한편, 도 9에서는 호스트 장치(200)가 복수의 메타 데이터들(MDATA)의 전송을 시작하는 시점이 데이터 독출 커맨드(HPB_RD_CMD0)의 전송을 시작하는 시점보다 늦은 것으로 도시하였으나, 실시예에 따라서 호스트 장치(200)가 복수의 메타 데이터들(MDATA)의 전송을 시작하는 시점이 데이터 독출 커맨드(HPB_RD_CMD0)의 전송을 시작하는 시점보다 빠르고 스토리지 장치(300)가 복수의 메타 데이터들(MDATA)의 수신을 완료하는 시점이 데이터 독출 커맨드(HPB_RD_CMD0)의 수신을 완료하는 시점보다 늦을 수도 있다.
상기 제1 시점과 상기 제2 시점의 차이(TD1)가 상기 제1 기준 시간보다 길거나 같은 경우(단계 S220: 아니오), 복수의 메타 데이터들(MDATA)의 전송이 완료될 정도로 충분한 시간이 경과한 것으로 판단하여, 수신된 데이터 독출 커맨드(HPB_RD_CMD0) 및 복수의 메타 데이터들(MDATA)에 기초하여 데이터 독출 동작을 수행할 수 있다(단계 S400).
또한, 상기 제1 시점과 상기 제2 시점의 차이(TD1)가 상기 제1 기준 시간보다 짧은 경우(단계 S220: 예)라고 하더라도, 복수의 메타 데이터들(MDATA)의 수신이 완료된 경우에는(단계 S310: 예), 수신된 데이터 독출 커맨드(HPB_RD_CMD0) 및 복수의 메타 데이터들(MDATA)에 기초하여 데이터 독출 동작을 수행할 수 있다(단계 S400).
다시 말하면, 도 8 및 9의 실시예에서, 메타 정보 전달 커맨드(HPB_PREF_CMD0)와 데이터 독출 커맨드(HPB_RD_CMD0) 사이의 간격이 상대적으로 짧아 복수의 메타 데이터들(MDATA)의 전송이 완료되지 않은 경우에는, 데이터 독출 동작을 바로 수행하지 않고 복수의 메타 데이터들(MDATA)의 전송을 기다린 후에 복수의 메타 데이터들(MDATA)에 기반한 데이터 독출 동작을 수행할 수 있다.
도 10은 도 1의 스토리지 장치의 구동 방법의 다른 예를 나타내는 순서도이다. 도 11은 도 10의 스토리지 장치의 구동 방법을 설명하기 위한 도면이다.
도 10 및 11에서는 상기 복수의 메타 데이터들이 먼저 수신되고 상기 데이터 독출 커맨드가 나중에 수신되는 경우에 기초하여 본 발명의 실시예들을 설명하도록 한다.
도 1, 2, 10 및 11을 참조하면, 상기 메타 정보 전달 커맨드를 수신하는데 있어서(단계 S100), 제1 시점에서 메타 정보 전달 커맨드(HPB_PREF_CMD1)를 수신할 수 있다(단계 S110). 예를 들어, 호스트 장치(200)는 메타 정보 전달 ID(HPB_PREF_ID)가 1인(즉, ID=1)인 메타 정보 전달 커맨드(HPB_PREF_CMD1)를 전송하며(단계 S116), 스토리지 장치(300)는 상기 제1 시점에서 메타 정보 전달 커맨드(HPB_PREF_CMD1)의 수신을 완료할 수 있다(단계 S118).
상기 복수의 메타 데이터들을 수신하는데 있어서(단계 S300), 메타 정보 전달 ID(HPB_PREF_ID)가 1인(즉, ID=1)인 메타 정보 전달 커맨드(HPB_PREF_CMD1)에 대응하는 복수의 메타 데이터들(MDATB)의 수신이 완료되었는지 판단할 수 있다(단계 S310).
복수의 메타 데이터들(MDATB)의 수신이 미완료된 경우에(단계 S310: 아니오), 복수의 메타 데이터들(MDATB)의 수신이 완료될 때까지 대기할 수 있다(단계 S320). 예를 들어, 호스트 장치(200)는 메타 정보 전달 커맨드(HPB_PREF_CMD1)에 대응하는 복수의 메타 데이터들(MDATB)을 전송하며(단계 S316), 스토리지 장치(300)는 상기 제1 시점 이후의 제4 시점에서 복수의 메타 데이터들(MDATB)의 수신을 완료할 수 있다(단계 S318).
메타 정보 전달 커맨드(HPB_PREF_CMD1) 및 복수의 메타 데이터들(MDATB)의 수신이 완료된 이후에, 상기 데이터 독출 커맨드를 수신하는데 있어서(단계 S200), 상기 제1 시점으로부터 제2 기준 시간이 경과하기 이전에 독출 ID(HPB_RD_ID)가 1인(즉, ID=1)인 데이터 독출 커맨드(HPB_RD_CMD1)를 수신하는지 판단할 수 있다(단계 S230).
상기 제1 시점으로부터 상기 제2 기준 시간이 경과하기 이전에 데이터 독출 커맨드(HPB_RD_CMD1)가 수신된 경우에(단계 S230: 예), 수신된 데이터 독출 커맨드(HPB_RD_CMD1) 및 복수의 메타 데이터들(MDATB)에 기초하여 데이터 독출 동작을 수행할 수 있다(단계 S400).
상기 제1 시점으로부터 상기 제2 기준 시간이 경과하였으나 데이터 독출 커맨드(HPB_RD_CMD1)가 미수신된 경우에(단계 S230: 아니오), 데이터 독출 커맨드(HPB_RD_CMD1)가 수신되지 않았으므로, 데이터 독출 동작을 바로 수행하지 않을 수 있다. 다만, 메타 정보 전달 커맨드(HPB_PREF_CMD1)와 데이터 독출 커맨드(HPB_RD_CMD1)는 단일의 데이터 독출 요청에 대응하는 한 쌍의 커맨드이므로, 메타 정보 전달 커맨드(HPB_PREF_CMD1)가 수신되었다면 이후에 반드시 데이터 독출 커맨드(HPB_RD_CMD1)가 수신된다. 따라서, 이후에 데이터 독출 커맨드(HPB_RD_CMD1)가 수신되었을 때 데이터 독출에 소요되는 시간을 절약하기 위해, 데이터 독출 커맨드(HPB_RD_CMD1)가 아직 수신되지 않았더라도 복수의 메타 데이터들(MDATB)에 기초하여 목표 데이터(RDAT)를 미리 독출할 수 있다(단계 S450).
일 실시예에서, 단계 S450에서 미리 독출된 목표 데이터(RDAT)는 스토리지 장치(300) 내부의 버퍼 메모리(330)에 임시로 저장되어 있을 수 있다.
메타 정보 전달 커맨드(HPB_PREF_CMD1) 및 복수의 메타 데이터들(MDATB)의 수신이 완료된 이후에, 상기 제1 시점으로부터 상기 제2 기준 시간이 경과한 이후인 제2 시점에 데이터 독출 커맨드(HPB_RD_CMD1)를 수신할 수 있다(단계 S240). 예를 들어, 호스트 장치(200)는 데이터 독출 커맨드(HPB_RD_CMD1)를 전송하며(단계 S246), 스토리지 장치(300)는 상기 제2 시점에서 데이터 독출 커맨드(HPB_RD_CMD1)의 수신을 완료할 수 있다(단계 S248). 다시 말하면, 메타 정보 전달 커맨드(HPB_PREF_CMD1)가 수신된 상기 제1 시점과 데이터 독출 커맨드(HPB_RD_CMD1)가 수신된 상기 제2 시점의 차이(TD2)가 상기 제2 기준 시간보다 길 수 있다.
상기 제1 시점과 상기 제2 시점의 차이(TD2)가 상기 제2 기준 시간보다 긴 경우에, 목표 데이터(RDAT)는 단계 S450에서 미리 독출되어 있으므로, 데이터 독출 커맨드(HPB_RD_CMD1)가 수신된 상기 제2 시점 직후에 미리 독출된 목표 데이터(RDAT)를 바로 출력할 수 있다(단계 S460).
다시 말하면, 도 10 및 11의 실시예에서, 메타 정보 전달 커맨드(HPB_PREF_CMD1)와 데이터 독출 커맨드(HPB_RD_CMD1) 사이의 간격이 상대적으로 길어 복수의 메타 데이터들(MDATB)의 전송이 완료된 후에도 데이터 독출 커맨드(HPB_RD_CMD1)가 수신되지 않은 경우에는, 우선 목표 데이터(RDAT)를 로드 해두고, 이후에 데이터 독출 커맨드(HPB_RD_CMD1)가 수신되면 즉시 목표 데이터(RDAT)를 출력할 수 있다.
일 실시예에서, 상기 제1 시점과 상기 제2 시점의 차이(TD2)가 상기 제2 기준 시간보다 긴 경우에, 목표 데이터(RDAT)가 미리 독출된 이후 및 데이터 독출 커맨드(HPB_RD_CMD1)가 수신되기 이전에, 메타 정보 전달 커맨드(HPB_PREF_CMD1), 데이터 독출 커맨드(HPB_RD_CMD1) 및 복수의 메타 데이터들(MDATB)에 기초한 데이터 독출 동작 이외에 적어도 하나의 다른 동작을 선택적/추가적으로 수행할 수 있다(단계 S500). 예를 들어, 상기 적어도 하나의 다른 동작은 다른 커맨드에 기초한 데이터 독출/기입/소거 동작을 포함할 수도 있고, 커맨드 없이 스토리지 장치(300) 내부적으로 수행되는 동작(예를 들어, 가비지 컬렉션(garbage collection) 동작)을 포함할 수도 있다.
이상, 단일의 데이터 독출 요청에 대하여 두 개의 커맨드들(즉, 메타 정보 전달 커맨드 및 데이터 독출 커맨드) 및 관련된 메타 데이터들을 수신하고, 수신된 메타 데이터들에 기초하여 데이터 독출 동작을 수행하는 것으로 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 설명하였으나, 본 발명의 실시예들에 따른 스토리지 장치는 상술한 데이터 독출 동작만을 수행하지는 않으며, 단일의 메타 데이터를 포함하는 단일의 데이터 독출 커맨드에 기초하여 일반적인 데이터 독출 동작을 수행할 수도 있다.
도 12는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리 장치를 나타내는 블록도이다.
도 12를 참조하면, 비휘발성 메모리 장치(500)는 메모리 셀 어레이(510), 로우 디코더(520), 페이지 버퍼 회로(530), 데이터 입출력 회로(540), 전압 발생기(550) 및 제어 회로(560)를 포함한다.
메모리 셀 어레이(510)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)을 통해 로우 디코더(520)와 연결된다. 또한, 메모리 셀 어레이(510)는 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(530)와 연결된다.
메모리 셀 어레이(510)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결되는 복수의 메모리 셀들을 포함할 수 있다. 도시하지는 않았으나, 메모리 셀 어레이(510)는 각각 메모리 셀들을 포함하는 복수의 메모리 블록들로 구분될 수 있다. 실시예에 따라서, 메모리 셀 어레이(510)는 2차원 어레이(array) 구조 또는 3차원 수직 어레이 구조로 형성될 수 있다. 수직형(또는 3차원) 메모리 셀 어레이에 대한 자세한 설명은 본 명세서에 참고 문헌으로 결합된 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다.
제어 회로(560)는 외부(예를 들어, 도 2의 호스트 장치(200) 및/또는 스토리지 컨트롤러(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)을 발생할 수 있다. 소거 전압(VERS)은 메모리 셀 어레이(510)에 직접 인가되거나 비트 라인(BL)을 통해 인가될 수 있다.
예를 들어, 소거 동작 시에, 전압 발생기(550)는 하나의 메모리 블록의 공통 소스 라인 콘택 및/또는 비트 라인(BL)에 소거 전압(VERS)을 인가하고, 로우 디코더(520)를 통해 하나의 메모리 블록의 모든 워드 라인들 또는 일부의 서브 블록에 해당하는 워드 라인들에 소거 허용 전압(예를 들어, 접지 전압)을 인가할 수 있다. 소거 검증 동작 시에, 전압 발생기(550)는 하나의 메모리 블록의 모든 워드 라인들에 소거 검증 전압을 인가하거나 워드 라인 단위로 소거 검증 전압을 인가할 수 있다.
예를 들어, 프로그램 동작 시에, 전압 발생기(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)를 외부에 제공할 수 있다.
도 13 및 14는 본 발명의 실시예들에 따른 스토리지 시스템의 구동 방법을 나타내는 순서도들이다.
도 13을 참조하면, 본 발명의 실시예들에 따른 스토리지 시스템은 호스트 장치 및 스토리지 장치를 포함하여 구현된다. 상기 스토리지 시스템은 도 2를 참조하여 상술한 것과 실질적으로 동일한 구조를 가질 수 있다.
본 발명의 실시예들에 따른 스토리지 시스템의 구동 방법에서, 상기 스토리지 장치에 저장된 복수의 메타 데이터들을 상기 호스트 장치에 전송하여, 상기 복수의 메타 데이터들을 상기 호스트 장치에 포함되는 호스트 메모리에 저장할 수 있다(단계 S1100). 예를 들어, 단계 S1100은 상기 스토리지 시스템이 부팅 또는 리셋되는 경우에 수행되며, 상기 스토리지 시스템은 상기 호스트 메모리에 저장된 상기 복수의 메타 데이터들을 이용하여 상기 스토리지 장치에 액세스하는 HPB 기법에 기초하여 동작한다.
상기 호스트 장치는 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드를 상기 스토리지 장치에 전송하고(단계 S1200), 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 데이터 독출 커맨드를 상기 스토리지 장치에 전송하며(단계 S1300), 상기 복수의 메타 데이터들 중 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 메타 데이터들을 상기 스토리지 장치에 전송한다(단계 S1400). 상기 데이터 독출 커맨드 및 상기 제1 메타 데이터들에 기초하여 상기 스토리지 장치에 대한 데이터 독출 동작을 수행한다(단계 S1500).
단계 S1200, S1300, S1400 및 S1500은 각각 도 1의 단계 S100, S200, S300 및 S400과 유사하며, 도 1 내지 11을 참조하여 상술한 방식에 기초하여 수행될 수 있다.
도 14를 참조하면, 본 발명의 실시예들에 따른 스토리지 시스템의 구동 방법에서, 단계 S1600이 추가되는 것을 제외하면 도 14의 방법은 도 13의 방법과 실질적으로 동일할 수 있다.
상기 호스트 메모리에 저장된 상기 복수의 메타 데이터들 중 적어도 하나가 변경된 경우에, 상기 변경된 메타 데이터를 상기 호스트 장치에 전송하여 상기 호스트 메모리에 저장된 상기 복수의 메타 데이터들을 업데이트할 수 있다(단계 S1600).
일 실시예에서, 단계 S1600은 단계 S1100이 수행된 이후에 임의의 시점에서 수행될 수 있다.
실시예에 따라서, 본 발명의 스토리지 장치의 구동 방법 및 스토리지 시스템의 구동 방법은, 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수도 있다. 상기 컴퓨터로 판독 가능한 프로그램 코드는 다양한 컴퓨터 또는 다른 데이터 처리 장치의 프로세서로 제공될 수 있다. 상기 컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 기록 매체일 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 명령어 실행 시스템, 장비 또는 장치 내에 또는 이들과 접속되어 프로그램을 저장하거나 포함할 수 있는 임의의 유형적인 매체일 수 있다.
도 15는 본 발명의 실시예들에 따른 전자 시스템을 나타내는 블록도이다.
도 15를 참조하면, 전자 시스템(4000)은 프로세서(4100), 통신 모듈(4200), 디스플레이/터치 모듈(4300), 스토리지 장치(4400) 및 메모리 장치(4500)를 포함한다. 예를 들어, 전자 시스템(4000)은 임의의 모바일 시스템 또는 컴퓨팅 시스템일 수 있다.
프로세서(4100)는 전자 시스템(4000)의 전반적인 동작을 제어한다. 프로세서(4100)는 운영 체제, 어플리케이션 등을 실행할 수 있다. 통신 모듈(4200)은 외부와의 유선 통신 및/또는 무선 통신을 제어하도록 구현될 수 있다. 디스플레이/터치 모듈(4300)은 프로세서(4100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 수 있다. 스토리지 장치(4400)는 사용자의 데이터를 저장하며, 본 발명의 실시예들에 따른 구동 방법에 기초하여 동작할 수 있다. 메모리 장치(4500)는 전자 시스템(4000)의 처리 동작 시 필요한 데이터를 임시로 저장할 수 있다. 프로세서(4100) 및 메모리 장치(4500)가 도 2의 호스트 장치(200)에 포함되는 프로세서(210) 및 호스트 메모리(220)에 각각 대응할 수 있다.
본 발명의 실시예들은 스토리지 장치 및 스토리지 시스템을 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 컴퓨터(computer), 노트북(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) 기기 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드를 수신하는 단계;
    상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 데이터 독출 커맨드를 수신하는 단계;
    상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 복수의 메타 데이터들을 수신하는 단계; 및
    상기 데이터 독출 커맨드 및 상기 복수의 메타 데이터들에 기초하여 데이터 독출 동작을 수행하는 단계를 포함하는 스토리지 장치의 구동 방법.
  2. 제 1 항에 있어서,
    상기 메타 정보 전달 커맨드는 메타 정보 전달 ID(Identification)를 포함하고,
    상기 데이터 독출 커맨드는 상기 메타 정보 전달 ID에 대응하는 독출 ID를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  3. 제 2 항에 있어서,
    상기 메타 정보 전달 ID와 상기 독출 ID는 동일한 값을 가지는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  4. 제 1 항에 있어서,
    상기 복수의 메타 데이터들은 상기 데이터 독출 동작을 수행하기 위한 복수의 물리 어드레스들 관련 정보를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  5. 제 4 항에 있어서,
    상기 복수의 메타 데이터들은 복수의 논리 어드레스들과 상기 복수의 물리 어드레스들의 대응 관계를 나타내는 논리-물리 맵핑 정보를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  6. 제 1 항에 있어서, 상기 데이터 독출 동작을 수행하는 단계는,
    상기 복수의 메타 데이터들에 기초하여 복수의 물리 어드레스들을 획득하는 단계;
    상기 복수의 물리 어드레스들에 기초하여 목표 데이터를 독출하는 단계; 및
    상기 목표 데이터를 출력하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  7. 제 6 항에 있어서,
    상기 메타 정보 전달 커맨드가 수신된 제1 시점과 상기 데이터 독출 커맨드가 수신된 제2 시점의 차이가 제1 기준 시간보다 짧은 경우 및 상기 복수의 메타 데이터들의 수신이 미완료된 경우에, 상기 복수의 메타 데이터들의 수신이 완료될 때까지 대기하고, 상기 복수의 메타 데이터들의 수신이 완료된 이후에 상기 복수의 메타 데이터들에 기초하여 상기 목표 데이터를 독출하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  8. 제 6 항에 있어서,
    상기 메타 정보 전달 커맨드가 수신된 제1 시점과 상기 데이터 독출 커맨드가 수신된 제2 시점의 차이가 제2 기준 시간보다 긴 경우 및 상기 복수의 메타 데이터들의 수신이 완료된 경우에, 상기 데이터 독출 커맨드가 수신되기 이전에 상기 복수의 메타 데이터들에 기초하여 상기 목표 데이터를 미리 독출하고, 상기 데이터 독출 커맨드가 수신된 상기 제2 시점 직후에 상기 목표 데이터를 출력하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  9. 제 8 항에 있어서,
    상기 제1 시점과 상기 제2 시점 사이에 상기 데이터 독출 동작을 제외한 적어도 하나의 다른 동작이 수행되는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  10. 제 1 항에 있어서,
    상기 데이터 독출 요청은 미리 정해진 크기보다 큰 대용량 데이터를 한 번에 독출하는 대용량 데이터 독출 요청인 것을 특징으로 하는 스토리지 장치의 구동 방법.
  11. 제 10 항에 있어서,
    상기 데이터 독출 요청은 단일의 독출 요청인 것을 특징으로 하는 스토리지 장치의 구동 방법.
  12. 제 1 항에 있어서,
    상기 복수의 메타 데이터들은 DMA(Direct Memory Access) 인터페이스를 통해 전송되는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  13. 복수의 데이터들을 저장하는 복수의 비휘발성 메모리들; 및
    상기 복수의 비휘발성 메모리들의 동작을 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드를 수신하고, 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 데이터 독출 커맨드를 수신하고, 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 복수의 메타 데이터들을 수신하며, 상기 데이터 독출 커맨드 및 상기 복수의 메타 데이터들에 기초하여 데이터 독출 동작을 수행하는 스토리지 장치.
  14. 제 13 항에 있어서,
    상기 메타 정보 전달 커맨드가 수신된 제1 시점과 상기 데이터 독출 커맨드가 수신된 제2 시점의 차이가 기준 시간보다 긴 경우 및 상기 복수의 메타 데이터들의 수신이 완료된 경우에, 상기 데이터 독출 커맨드가 수신되기 이전에 상기 복수의 메타 데이터들에 기초하여 미리 독출된 목표 데이터를 저장하는 버퍼 메모리를 더 포함하는 것을 특징으로 하는 스토리지 장치.
  15. 제 14 항에 있어서,
    상기 버퍼 메모리는 휘발성 메모리를 포함하는 것을 특징으로 하는 스토리지 장치.
  16. 제 13 항에 있어서,
    상기 스토리지 장치는 UFS(Universal Flash Storage)인 것을 특징으로 하는 스토리지 장치.
  17. 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 구동 방법으로서,
    상기 스토리지 장치에 저장된 복수의 메타 데이터들을 상기 호스트 장치에 전송하여, 상기 복수의 메타 데이터들을 상기 호스트 장치에 포함되는 호스트 메모리에 저장하는 단계;
    상기 호스트 장치의 데이터 독출 요청에 기초하여 메타 정보 전달 커맨드를 상기 스토리지 장치에 전송하는 단계;
    상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 데이터 독출 커맨드를 상기 스토리지 장치에 전송하는 단계;
    상기 복수의 메타 데이터들 중 상기 데이터 독출 요청 및 상기 메타 정보 전달 커맨드에 대응하는 제1 메타 데이터들을 상기 스토리지 장치에 전송하는 단계; 및
    상기 데이터 독출 커맨드 및 상기 제1 메타 데이터들에 기초하여 상기 스토리지 장치에 대한 데이터 독출 동작을 수행하는 단계를 포함하는 스토리지 시스템의 구동 방법.
  18. 제 17 항에 있어서,
    상기 복수의 메타 데이터들 중 적어도 하나가 변경된 경우에, 상기 변경된 메타 데이터를 상기 호스트 장치에 전송하여 상기 호스트 메모리에 저장된 상기 복수의 메타 데이터들을 업데이트하는 것을 특징으로 하는 스토리지 시스템의 구동 방법.
  19. 제 17 항에 있어서,
    상기 호스트 메모리는 휘발성 메모리를 포함하고,
    상기 호스트 메모리의 용량은 상기 스토리지 장치에 포함되는 버퍼 메모리의 용량보다 큰 것을 특징으로 하는 스토리지 시스템의 구동 방법.
  20. 제 17 항에 있어서,
    상기 스토리지 시스템은 휴대폰(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) 기기 중 적어도 하나를 포함하는 모바일 시스템인 것을 특징으로 하는 스토리지 시스템의 구동 방법.
KR1020180131859A 2018-10-31 2018-10-31 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법 KR20200049051A (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020180131859A KR20200049051A (ko) 2018-10-31 2018-10-31 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법
US16/416,872 US11314450B2 (en) 2018-10-31 2019-05-20 Method of operating storage device, storage device performing the same and method of operating storage system using the same
SG10201907275UA SG10201907275UA (en) 2018-10-31 2019-08-06 Method of operating storage device, storage device performing the same and method of operating storage system using the same
EP19190440.8A EP3647930A1 (en) 2018-10-31 2019-08-07 Method of operating storage device, storage device performing the same and method of operating storage system using the same
CN201910879584.7A CN111128287B (zh) 2018-10-31 2019-09-17 操作存储设备的方法、存储设备以及操作存储系统的方法
US17/712,520 US11714578B2 (en) 2018-10-31 2022-04-04 Method of operating storage device, storage device performing the same and method of operating storage system using the same
US18/335,328 US20230325123A1 (en) 2018-10-31 2023-06-15 Method of operating storage device, storage device performing the same and method of operating storage system using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180131859A KR20200049051A (ko) 2018-10-31 2018-10-31 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법

Publications (1)

Publication Number Publication Date
KR20200049051A true KR20200049051A (ko) 2020-05-08

Family

ID=67614418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180131859A KR20200049051A (ko) 2018-10-31 2018-10-31 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법

Country Status (4)

Country Link
US (3) US11314450B2 (ko)
EP (1) EP3647930A1 (ko)
KR (1) KR20200049051A (ko)
SG (1) SG10201907275UA (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200049051A (ko) 2018-10-31 2020-05-08 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법
CN115461726A (zh) * 2020-06-15 2022-12-09 华为技术有限公司 逻辑地址到物理地址映射表同步方法、装置及系统
KR20210157537A (ko) * 2020-06-22 2021-12-29 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
KR20220049215A (ko) 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 호스트 장치 및 이들을 포함하는 메모리 시스템
US11734193B2 (en) 2020-12-14 2023-08-22 Micron Technology, Inc. Exclusion regions for host-side memory address translation
WO2022133397A1 (en) * 2020-12-14 2022-06-23 Micron Technology, Inc. Exclusion regions for host-side memory address translation
CN112905111A (zh) 2021-02-05 2021-06-04 三星(中国)半导体有限公司 数据缓存的方法和数据缓存的装置
CN115514793B (zh) * 2022-11-23 2023-03-28 北京时代凌宇信息技术有限公司 物联网数据汇聚共享方法、装置、电子设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100449807B1 (ko) 2002-12-20 2004-09-22 한국전자통신연구원 호스트 버스 인터페이스를 갖는 데이터 전송 프로토콜제어 시스템
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
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
US8966176B2 (en) 2010-05-27 2015-02-24 Sandisk Il Ltd. Memory management storage to a host device
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
JP5611889B2 (ja) 2011-05-17 2014-10-22 株式会社東芝 データ転送装置、データ送信システムおよびデータ送信方法
EP2742429A4 (en) * 2011-08-09 2015-03-25 Lsi Corp I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST
KR101932920B1 (ko) 2012-09-14 2019-03-18 삼성전자 주식회사 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
KR101420754B1 (ko) 2012-11-22 2014-07-17 주식회사 이에프텍 비휘발성 메모리 시스템 및 이를 위한 맵핑 테이블 관리 방법
TWI526838B (zh) 2013-02-27 2016-03-21 東芝股份有限公司 記憶體裝置
KR102450555B1 (ko) 2015-11-09 2022-10-05 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US10303372B2 (en) * 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US10229051B2 (en) 2015-12-30 2019-03-12 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
KR20170081118A (ko) 2015-12-30 2017-07-11 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법
KR20170108739A (ko) * 2016-03-18 2017-09-27 삼성전자주식회사 DIX (Data Integrity Extension )모드의 NVMe(Non-Volatile Memory Express) 인터페이스에서 데이터를 전송하기 위한 방법 및 시스템
JP6274589B1 (ja) 2016-09-28 2018-02-07 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および連続読出し方法
KR20200049051A (ko) 2018-10-31 2020-05-08 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법

Also Published As

Publication number Publication date
US20200133571A1 (en) 2020-04-30
US20220236918A1 (en) 2022-07-28
US20230325123A1 (en) 2023-10-12
CN111128287A (zh) 2020-05-08
EP3647930A1 (en) 2020-05-06
SG10201907275UA (en) 2020-05-28
US11714578B2 (en) 2023-08-01
US11314450B2 (en) 2022-04-26

Similar Documents

Publication Publication Date Title
US11714578B2 (en) Method of operating storage device, storage device performing the same and method of operating storage system using the same
US11150837B2 (en) Method, device and system for processing sequential groups of buffered write data
KR102395538B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102675131B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR20190057887A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10296233B2 (en) Method of managing message transmission flow and storage device using the method
KR20190090635A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20170105760A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102507140B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20190120573A (ko) 메모리 시스템, 데이터 처리 시스템 및 메모리 시스템의 동작 방법
KR20200085967A (ko) 데이터 저장 장치 및 그 동작 방법
CN111338564B (zh) 包括数据存储设备的系统和控制丢弃操作的方法
KR20150112075A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR20190083148A (ko) 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200017664A (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
US20230273878A1 (en) Storage device for classifying data based on stream class number, storage system, and operating method thereof
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
US10146553B2 (en) Electronic apparatus and booting method thereof
US11669470B2 (en) Storage system with capacity scalability and method of operating the same
CN111128287B (zh) 操作存储设备的方法、存储设备以及操作存储系统的方法
US20220222003A1 (en) Method of writing data in storage device and storage device performing the same
KR20230027957A (ko) 호스트 및 스토리지 장치를 포함하는 스토리지 시스템 및 이의 동작 방법
CN116149540A (zh) 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置

Legal Events

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