KR20230101394A - Storage device having an indirect access module, method of operating thereof, and method of operating storage system having the same - Google Patents

Storage device having an indirect access module, method of operating thereof, and method of operating storage system having the same Download PDF

Info

Publication number
KR20230101394A
KR20230101394A KR1020210191465A KR20210191465A KR20230101394A KR 20230101394 A KR20230101394 A KR 20230101394A KR 1020210191465 A KR1020210191465 A KR 1020210191465A KR 20210191465 A KR20210191465 A KR 20210191465A KR 20230101394 A KR20230101394 A KR 20230101394A
Authority
KR
South Korea
Prior art keywords
indirect
access module
metadata
data
target data
Prior art date
Application number
KR1020210191465A
Other languages
Korean (ko)
Inventor
조인순
황주영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210191465A priority Critical patent/KR20230101394A/en
Priority to US17/903,604 priority patent/US12045483B2/en
Priority to EP22197140.1A priority patent/EP4206937A1/en
Priority to CN202211274828.7A priority patent/CN116414724A/en
Publication of KR20230101394A publication Critical patent/KR20230101394A/en

Links

Images

Classifications

    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and 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/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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • 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/7207Details relating to flash memory management management of metadata or control data

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

본 개시의 실시 예에 따른 스토리지 장치는 호스트 장치와 통신한다. 스토리지 장치의 동작하는 방법은, 호스트 장치로부터 타겟 데이터의 액세스의 요청을 수신하는 단계, 요청에 기초하여, 간접 액세스 모듈을 실행하는 단계, 간접 액세스 모듈에 의해, 요청의 액세스 인자에 기초하여 타겟 데이터의 위치를 나타내는 타겟 어드레스를 결정하는 단계, 간접 액세스 모듈에 의해, 타겟 어드레스에 기초하여 데이터 블록에 액세스하는 단계, 및 간접 액세스 모듈에 의해, 액세스된 데이터 블록 또는 액세스된 데이터 블록 내의 타겟 데이터를 호스트 장치에 제공하는 단계를 포함한다.A storage device according to an embodiment of the present disclosure communicates with a host device. A method of operating a storage device includes receiving a request for access of target data from a host device, executing an indirect access module based on the request, and performing, by the indirect access module, target data based on an access factor of the request. Determining a target address indicating the location of the host; accessing, by the indirect access module, the block of data based on the target address; and, by the indirect access module, the accessed data block or the target data in the accessed data block as the host. and providing it to the device.

Figure P1020210191465
Figure P1020210191465

Description

간접 액세스 모듈을 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법{STORAGE DEVICE HAVING AN INDIRECT ACCESS MODULE, METHOD OF OPERATING THEREOF, AND METHOD OF OPERATING STORAGE SYSTEM HAVING THE SAME}A storage device including an indirect access module, a method of operating the same, and a method of operating a storage system including the same

본 개시는 스토리지 장치에 관한 것으로, 좀 더 상세하게는, 간접 액세스 모듈을 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법에 관한 것이다.The present disclosure relates to a storage device, and more particularly, to a storage device including an indirect access module, a method of operating the same, and a method of operating a storage system including the same.

메모리 장치는 쓰기 요청에 따라 데이터를 저장하고, 읽기 요청에 따라 저장된 데이터를 출력한다. 예를 들어, 메모리 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM), 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치, 및 플래시 메모리 장치, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 비-휘발성 메모리 장치로 구분된다.The memory device stores data according to a write request and outputs the stored data according to a read request. For example, memory devices include volatile memory devices, such as dynamic random access memory (DRAM) and static RAM (SRAM), in which stored data is lost when power is cut off, flash memory devices, and phase-change RAM (PRAM). ), MRAM (Magnetic RAM), RRAM (Resistive RAM), etc.

최근, 사용자 데이터, 애플리케이션(application) 등의 크기가 증가함에 따라, 대용량 데이터의 관리가 요구된다. 비-휘발성 메모리 장치는 대용량 데이터를 관리하기 위해, 멀티-레이어 구조를 갖는 메모리 블록들을 사용할 수 있다. 예를 들어, 상위 레이어는 메타데이터 블록을 포함하고, 하위 레이어는 데이터 블록을 포함할 수 있다. 레이어의 개수가 증가할수록 관리 가능한 데이터의 용량이 증가할 수 있다. 그러나, 순차적으로 여러 메타데이터 블록들에 액세스해야 하므로, 타겟 데이터를 포함하는 데이터 블록으로의 액세스가 지연될 수 있다. 이에 따라, 데이터 블록으로의 액세스를 위한 지연을 감소시키는 방안이 요구된다.Recently, as the size of user data, applications, etc. increases, management of large-capacity data is required. A non-volatile memory device may use memory blocks having a multi-layer structure to manage large amounts of data. For example, an upper layer may include a metadata block and a lower layer may include a data block. As the number of layers increases, the capacity of manageable data may increase. However, since several metadata blocks must be sequentially accessed, access to a data block including target data may be delayed. Accordingly, a method for reducing a delay for access to a data block is required.

본 개시의 일 실시 예에 따르면, 간접 액세스 모듈을 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법이 제공된다.According to one embodiment of the present disclosure, a storage device including an indirect access module, a method for operating the same, and a method for operating a storage system including the same are provided.

본 개시의 일 실시 예에 따르면, 스토리지 장치는 호스트 장치와 통신한다. 상기 스토리지 장치의 동작하는 방법은, 상기 호스트 장치로부터 타겟 데이터의 액세스의 요청을 수신하는 단계, 상기 요청에 기초하여, 간접 액세스 모듈을 실행하는 단계, 상기 간접 액세스 모듈에 의해, 상기 요청의 액세스 인자에 기초하여 상기 타겟 데이터의 위치를 나타내는 타겟 어드레스를 결정하는 단계, 상기 간접 액세스 모듈에 의해, 상기 타겟 어드레스에 기초하여 데이터 블록에 액세스하는 단계, 및 상기 간접 액세스 모듈에 의해, 상기 액세스된 데이터 블록 또는 상기 액세스된 데이터 블록 내의 상기 타겟 데이터를 상기 호스트 장치에 제공하는 단계를 포함한다.According to an embodiment of the present disclosure, a storage device communicates with a host device. The method of operating the storage device may include receiving a request for accessing target data from the host device, executing an indirect access module based on the request, and using the indirect access module to determine the access factor of the request. determining a target address indicating the location of the target data based on, by the indirect access module, accessing a data block based on the target address, and by the indirect access module, the accessed data block or providing the target data in the accessed data block to the host device.

본 개시의 일 실시 예에 따르면, 스토리지 시스템은 호스트 장치 및 스토리지 장치를 포함한다. 상기 스토리지 시스템의 동작하는 방법은, 상기 호스트 장치에 의해, 타겟 데이터의 액세스의 요청을 제공하는 단계, 상기 스토리지 장치에 의해, 상기 요청에 기초하여 간접 액세스 모듈을 실행하는 단계, 상기 간접 액세스 모듈에 의해, 상기 요청의 액세스 인자에 기초하여 상기 타겟 데이터의 위치를 가리키는 타겟 어드레스를 결정하는 단계, 상기 간접 액세스 모듈에 의해, 상기 타겟 어드레스에 기초하여 데이터 블록에 액세스하는 단계, 및 상기 간접 액세스 모듈에 의해, 상기 액세스된 데이터 블록 또는 상기 액세스된 데이터 블록 내의 상기 타겟 데이터를 상기 호스트 장치에 제공하는 단계를 포함한다.According to one embodiment of the present disclosure, a storage system includes a host device and a storage device. The method of operating the storage system may include providing, by the host device, a request for access to target data; executing, by the storage device, an indirect access module based on the request; determining a target address indicating the location of the target data based on an access factor of the request; accessing, by the indirect access module, a block of data based on the target address; and, by the indirect access module and providing the accessed data block or the target data in the accessed data block to the host device.

본 개시의 일 실시 예에 따르면, 스토리지 장치는, 복수의 데이터 세트들을 저장하도록 구성된 비-휘발성 메모리 장치, 상기 복수의 데이터 세트들 중 제1 데이터 세트를 관리하도록 구성된 제1 간접 액세스 모듈, 호스트 장치와 통신하도록 구성된 호스트 인터페이스 회로, 및 상기 호스트 장치로부터 상기 호스트 인터페이스 회로를 통해 제1 타겟 데이터의 액세스의 제1 요청을 수신하고, 상기 제1 요청에 기초하여 상기 제1 간접 액세스 모듈을 실행하도록 구성된 모듈 관리자를 포함한다. 상기 제1 데이터 세트는 상기 제1 타겟 데이터를 포함하는 제1 타겟 데이터 블록 및 제1 메타데이터를 포함하는 제1 메타데이터 블록을 포함하고, 그리고 상기 제1 간접 액세스 모듈은, 상기 모듈 관리자에 의해 실행되면, 상기 제1 요청의 제1 액세스 인자 및 상기 제1 메타데이터에 기초하여, 상기 제1 타겟 데이터의 위치를 나타내는 제1 타겟 어드레스를 결정하고, 상기 제1 타겟 어드레스에 기초하여 상기 제1 타겟 데이터 블록에 액세스하고, 그리고 상기 액세스된 제1 타겟 데이터 블록 또는 상기 액세스된 제1 타겟 데이터 블록 내의 상기 제1 타겟 데이터를 상기 호스트 인터페이스 회로에 제공하도록 더 구성된다.According to an embodiment of the present disclosure, a storage device may include a non-volatile memory device configured to store a plurality of data sets, a first indirect access module configured to manage a first data set among the plurality of data sets, and a host device. a host interface circuit configured to communicate with, and configured to receive a first request for access to first target data from the host device through the host interface circuit, and execute the first indirect access module based on the first request. Include the module manager. The first data set includes a first target data block including the first target data and a first metadata block including first metadata, and the first indirect access module is configured by the module manager If executed, a first target address indicating a location of the first target data is determined based on the first access factor of the first request and the first metadata, and the first target address is determined based on the first target address. and to access a target data block and provide the accessed first target data block or the first target data in the accessed first target data block to the host interface circuitry.

본 개시의 일 실시 예에 따르면, 간접 액세스 모듈을 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법이 제공된다.According to one embodiment of the present disclosure, a storage device including an indirect access module, a method for operating the same, and a method for operating a storage system including the same are provided.

또한, 간접 액세스 모듈이 메타데이터를 처리하고, 타겟 데이터로의 액세스를 제공함으로써, 호스트 장치 및 스토리지 장치 사이의 I/O(input/output) 로드를 감소시키고, 데이터 블록의 액세스 속도가 향상된 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법이 제공된다.In addition, the indirect access module processes metadata and provides access to target data, thereby reducing I/O (input/output) load between the host device and the storage device and improving the access speed of data blocks to the storage device. , a method of operating thereof, and a method of operating a storage system including the same are provided.

도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다.
도 3은 본 개시의 일부 실시 예들에 따라 도 1의 비-휘발성 메모리 장치를 구체화한 블록도이다.
도 4는 일반적인 스토리지 시스템의 데이터 처리 방법을 설명하는 도면이다.
도 5는 본 개시의 실시 예에 따른 데이터 처리 방법을 설명하는 도면이다.
도 6은 본 개시의 일부 실시 예들에 따른 데이터 처리 방법을 설명하는 도면이다.
도 7은 본 개시의 일부 실시 예들에 따른 데이터 처리 방법을 설명하는 도면이다.
도 8은 본 개시의 일부 실시 예들에 따른 스토리지 장치의 블록도이다.
도 9는 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다.
도 10은 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다.
도 11은 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다.
도 12는 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다.
도 13은 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록도이다.
1 is a block diagram of a storage system according to an embodiment of the present disclosure.
FIG. 2 is a block diagram embodying the storage controller of FIG. 1 according to some embodiments of the present disclosure.
FIG. 3 is a block diagram embodying the non-volatile memory device of FIG. 1 according to some embodiments of the present disclosure.
4 is a diagram illustrating a data processing method of a general storage system.
5 is a diagram for explaining a data processing method according to an embodiment of the present disclosure.
6 is a diagram illustrating a data processing method according to some embodiments of the present disclosure.
7 is a diagram illustrating a data processing method according to some embodiments of the present disclosure.
8 is a block diagram of a storage device according to some embodiments of the present disclosure.
9 is a flowchart illustrating a method of operating a storage device according to some embodiments of the present disclosure.
10 is a flowchart illustrating a method of operating a storage device according to some embodiments of the present disclosure.
11 is a flowchart illustrating a method of operating a storage device according to some embodiments of the present disclosure.
12 is a flowchart illustrating a method of operating a storage device according to some embodiments of the present disclosure.
13 is a block diagram of a storage system according to some embodiments of the present disclosure.

이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시의 실시 예들을 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present disclosure will be described clearly and in detail to the extent that those skilled in the art can easily practice the embodiments of the present disclosure.

도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트 장치(11) 및 스토리지 장치(100)를 포함할 수 있다. 일부 실시 예들에서, 스토리지 시스템(10)은 개인용 컴퓨터, 노트북, 랩탑, 서버, 워크스테이션, 태블릿 PC(Personal Computer), 스마트폰, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하도록 구성된 컴퓨팅 시스템일 수 있다.1 is a block diagram of a storage system according to an embodiment of the present disclosure. Referring to FIG. 1 , a storage system 10 may include a host device 11 and a storage device 100 . In some embodiments, the storage system 10 may be a computing system configured to process various information, such as a personal computer, notebook, laptop, server, workstation, tablet PC (Personal Computer), smart phone, digital camera, black box, etc. there is.

호스트 장치(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트 장치(11)는 스토리지 장치(100)에 데이터를 저장하거나 또는 스토리지 장치(100)에 저장된 데이터를 읽을 수 있다. The host device 11 may control overall operations of the storage system 10 . For example, the host device 11 may store data in the storage device 100 or read data stored in the storage device 100 .

호스트 장치(11)는 사용자 인터페이스(12), 애플리케이션(13), 및 운영 체제(14)를 포함할 수 있다. 사용자 인터페이스(12)는 스토리지 시스템(10)의 사용자와의 인터페이스를 제공할 수 있다. 예를 들어, 사용자 인터페이스(12)는 터치스크린, 모니터, 마우스, 키보드, 마이크, 스피커 등과 같은 외부 장치를 통해 사용자와의 인터페이스를 제공할 수 있다.The host device 11 may include a user interface 12 , an application 13 , and an operating system 14 . The user interface 12 may provide an interface with a user of the storage system 10 . For example, the user interface 12 may provide an interface with a user through an external device such as a touch screen, monitor, mouse, keyboard, microphone, or speaker.

애플리케이션(13)은 특정 기능을 수행하도록 설계된 소프트웨어 프로그램일 수 있다. 예를 들어, 애플리케이션(13)은 워드프로세서, 데이터베이스 프로그램, 웹 브라우저, 이미지 편집 프로그램 등을 포함할 수 있다.Application 13 may be a software program designed to perform a specific function. For example, the application 13 may include a word processor, database program, web browser, image editing program, and the like.

운영 체제(14)는 하드웨어 및 소프트웨어 사이의 인터페이스를 제공할 수 있다. 예를 들어, 운영 체제(14)는 애플리케이션(13)을 실행하고, 애플리케이션(13)에 리소스를 할당할 수 있다. 운영 체제(14)는 자체적인 동작 또는 애플리케이션(13)의 요청에 따라, 파일 시스템을 통해 파일을 관리할 수 있다. 예를 들어, 파일 시스템은 파일을 생성하고, 파일에 액세스하고, 파일을 열고, 파일을 변경하고, 파일을 제거하는 등의 동작을 체계적으로 관리할 수 있다. 파일은 일련의 데이터일 수 있다. 파일에 대응하는 일련의 데이터는 스토리지 장치(100)에 저장될 수 있다.Operating system 14 may provide an interface between hardware and software. For example, the operating system 14 may execute the application 13 and allocate resources to the application 13 . The operating system 14 may manage files through a file system according to its own operation or a request of the application 13 . For example, a file system can systematically manage the actions of creating files, accessing files, opening files, changing files, removing files, and so on. A file can be a set of data. A series of data corresponding to a file may be stored in the storage device 100 .

스토리지 장치(100)는 호스트 장치(11)로부터 수신된 데이터를 저장하거나, 또는 저장된 데이터를 호스트 장치(11)에 제공할 수 있다. 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. The storage device 100 may store data received from the host device 11 or provide stored data to the host device 11 . The storage device 100 may include a storage controller 110 and a non-volatile memory device 120 .

비-휘발성 메모리 장치(120)는 데이터를 저장할 수 있다. 스토리지 컨트롤러(110)는 비-휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 제어에 따라 동작할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 동작을 가리키는 커맨드(CMD), 및 데이터의 위치를 가리키는 어드레스(ADD)에 기초하여 비-휘발성 메모리 장치(120)에 데이터를 저장하거나, 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다.The non-volatile memory device 120 may store data. The storage controller 110 may store data in the non-volatile memory device 120 or read data stored in the non-volatile memory device 120 . The non-volatile memory device 120 may operate under the control of the storage controller 110 . For example, the storage controller 110 stores data in the non-volatile memory device 120 or stores data in the non-volatile memory device 120 based on a command CMD indicating an operation and an address ADD indicating a location of data. Data stored in device 120 may be read.

일부 실시 예들에서, 비-휘발성 메모리 장치(120)는 낸드 플래시 메모리일 수 있으나, 본 개시의 범위가 이에 제한되는 것은 아니며, 비-휘발성 메모리 장치(120)는 PRAM(Phase-change Random Access Memory), MRAM(Magnetic Random Access Memory), RRAM(Resistive Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지할 수 있는 다양한 저장 장치들 중 하나일 수 있다.In some embodiments, the non-volatile memory device 120 may be a NAND flash memory, but the scope of the present disclosure is not limited thereto, and the non-volatile memory device 120 may be a phase-change random access memory (PRAM). , MRAM (Magnetic Random Access Memory), RRAM (Resistive Random Access Memory), FRAM (Ferroelectric Random Access Memory), etc., may be one of various storage devices capable of maintaining stored data even when power supply is cut off.

스토리지 컨트롤러(110)는 간접 액세스 모듈(111) 및 모듈 관리자(112)를 포함할 수 있다. 간접 액세스 모듈(111)은 운영 체제(14)의 파일 시스템의 동작을 보조할 수 있다. 일반적으로, 파일 시스템은 파일을 관리함에 따라, 타겟 데이터가 필요할 수 있다. 타겟 데이터는 데이터 블록에 포함될 수 있다. 타겟 데이터의 위치를 나타내는 정보(예를 들어, 포인터)는 메타데이터로서 메타데이터 블록에 포함될 수 있다.The storage controller 110 may include an indirect access module 111 and a module manager 112 . The indirect access module 111 may assist the operation of the file system of the operating system 14 . In general, as a file system manages files, target data may be required. Target data may be included in a data block. Information indicating the location of the target data (eg, a pointer) may be included in the metadata block as metadata.

일반적인 파일 시스템은 타겟 데이터를 획득하기 위해, 순차적으로 메타데이터 블록에 접근하여 메타데이터를 읽고, 메타데이터로부터 타겟 데이터의 타겟 어드레스를 획득하고, 획득된 타겟 어드레스에 기초하여 데이터 블록의 타겟 데이터를 읽을 수 있다. 호스트 장치(11)의 프로세서의 성능은 스토리지 컨트롤러(110)의 프로세서의 성능보다 우수할 수 있다. 그러나, 호스트 장치(11)가 메타데이터를 직접 처리하는 경우, 메타데이터를 수신하고 타겟 어드레스를 반환하기 위해 호스트 장치(11) 및 스토리지 장치(100) 사이의 입출력(I/O; input/output) 로드가 증가하므로, 데이터 처리가 지연될 수 있다. A typical file system sequentially accesses metadata blocks to obtain target data, reads metadata, obtains a target address of target data from metadata, and reads target data of a data block based on the obtained target address. can The performance of the processor of the host device 11 may be superior to that of the processor of the storage controller 110 . However, when the host device 11 directly processes metadata, input/output (I/O) between the host device 11 and the storage device 100 is required to receive the metadata and return the target address. As the load increases, data processing may be delayed.

본 개시의 실시 예에 따르면, 간접 액세스 모듈(111)은 호스트 장치(11)의 파일 시스템의 메타데이터 연산을 보조할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 호스트 장치(11)로부터 타겟 데이터의 액세스의 요청을 수신할 수 있다. 타겟 데이터의 액세스는 타겟 데이터에 대한 직접 액세스 및 간접 액세스를 포함할 수 있다. 예를 들어, 직접 액세스는 타겟 데이터가 저장된 데이터 블록에 액세스하는 동작일 수 있고, 간접 액세스는 타겟 어드레스를 가리키는 메타데이터가 저장된 메타데이터 블록에 액세스하는 동작일 수 있다.According to an embodiment of the present disclosure, the indirect access module 111 may assist in metadata operation of a file system of the host device 11 . For example, the indirect access module 111 may receive a request for access to target data from the host device 11 . Access of the target data may include direct access and indirect access to the target data. For example, direct access may be an operation of accessing a data block in which target data is stored, and indirect access may be an operation of accessing a metadata block in which metadata indicating a target address is stored.

액세스의 요청은 액세스 인자(access parameter)를 포함할 수 있다. 액세스 인자는 호스트 장치(11)로부터 수신되고, 타겟 데이터 또는 타겟 데이터에 대응하는 메타데이터를 탐색하는데 필요한 정보를 가리킬 수 있다. 예를 들어, 액세스 인자는 타겟 데이터의 식별자, 간접 레이어 정보, 및 반환 정보 등을 포함할 수 있다. 타겟 데이터의 식별자는 타겟 데이터를 식별하기 위한 파일 바이트 오프셋(file byte offset), 기록 키(record key) 등을 의미할 수 있다. 간접 레이어 정보는 비-휘발성 메모리 장치(120)에 포함된 복수의 간접 레이어들 중 특정 간접 레이어를 가리킬 수 있다. 반환 정보는 호스트 장치(11)로 반환될 데이터의 타입을 정의할 수 있다.The access request may include an access parameter. The access factor is received from the host device 11 and may indicate information necessary to search for target data or metadata corresponding to the target data. For example, the access factor may include an identifier of target data, indirect layer information, and return information. The identifier of the target data may mean a file byte offset, a record key, and the like for identifying the target data. The indirect layer information may indicate a specific indirect layer among a plurality of indirect layers included in the non-volatile memory device 120 . Return information may define the type of data to be returned to the host device 11 .

간접 액세스 모듈(111)은 요청의 액세스 인자에 기초하여 메타데이터 블록의 메타데이터를 페치(fetch)할 수 있다. 간접 액세스 모듈(111)은 액세스 인자 및 페치된 메타데이터에 기초하여 타겟 어드레스를 결정할 수 있다. 간접 액세스 모듈(111)은 타겟 어드레스에 기초하여 데이터 블록 내의 타겟 데이터를 페치할 수 있다. 간접 액세스 모듈(111)은 타겟 데이터를 호스트 장치(11)에 반환할 수 있다. The indirect access module 111 may fetch metadata of a metadata block based on the access factor of the request. The indirect access module 111 may determine the target address based on the access factor and the fetched metadata. The indirect access module 111 can fetch target data in a data block based on the target address. The indirect access module 111 may return target data to the host device 11 .

즉, 간접 액세스 모듈(111)은 일반적인 파일 시스템이 수행했던 메타데이터 연산을 대신 수행함으로써, 호스트 장치(11)가 요청한 타겟 데이터를 추가적인 I/O 없이 바로 제공할 수 있다. 호스트 장치(11)는 한 번의 요청 및 한 번의 응답에 의해 타겟 데이터를 획득할 수 있다. 간접 액세스 모듈(111)에 의해 I/O로드가 감소된 특징에 대한 보다 상세한 설명은 도 4 및 도 5를 참조하여 후술될 것이다.That is, the indirect access module 111 may directly provide the target data requested by the host device 11 without additional I/O by performing a metadata operation performed by a general file system instead. The host device 11 may acquire target data through one request and one response. A more detailed description of the reduced I/O load by the indirect access module 111 will be described later with reference to FIGS. 4 and 5 .

모듈 관리자(112)는 간접 액세스 모듈(111)을 관리할 수 있다. 모듈 관리자(112)는 호스트 장치(11)로부터 수신된 액세스의 요청에 기초하여 간접 액세스 모듈(111)을 실행할 수 있다.The module manager 112 may manage the indirect access module 111 . The module manager 112 may execute the indirect access module 111 based on the access request received from the host device 11 .

간접 액세스 모듈(111) 및 모듈 관리자(112)는 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다. 예를 들어, 간접 액세스 모듈(111) 및 모듈 관리자(112)이 하드웨어로 구현되는 경우, 간접 액세스 모듈(111) 및 모듈 관리자(112)는 스토리지 컨트롤러(110) 내부에 별도의 모듈, 회로, 또는 칩의 형태로 제작될 수 있다.The indirect access module 111 and module manager 112 may be implemented by hardware, software, or a combination of hardware and software. For example, when the indirect access module 111 and the module manager 112 are implemented as hardware, the indirect access module 111 and the module manager 112 are separate modules, circuits, or modules within the storage controller 110. It can be manufactured in the form of a chip.

예를 들어, 간접 액세스 모듈(111) 및 모듈 관리자(112)이 소프트웨어로 구현되는 경우, 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110) 내의 읽기-전용 메모리(Read Only Memory; ROM)와 함께 펌웨어 메모리로 사용될 수 있다. 간접 액세스 모듈(111) 및 모듈 관리자(112)에 대응하는 명령어들은 비-휘발성 메모리 장치에 저장될 수 있고, 스토리지 컨트롤러(110)의 휘발성 메모리(예를 들어, 메인 메모리)에 로드됨으로써 호스트 장치(110)와 통신할 수 있다.For example, when the indirect access module 111 and the module manager 112 are implemented as software, the non-volatile memory device 120 includes read only memory (ROM) in the storage controller 110 and Together, they can be used as firmware memory. Commands corresponding to the indirect access module 111 and the module manager 112 may be stored in a non-volatile memory device and loaded into a volatile memory (eg, main memory) of the storage controller 110, thereby enabling the host device ( 110) can be communicated with.

비-휘발성 메모리 장치(120)는 메타데이터 블록 및 데이터 블록을 포함할 수 있다. 메타데이터 블록은 복수의 메타데이터를 포함할 수 있다. 메타데이터는 데이터의 타입, 위치, 액세스 방법, 식별 정보 등 데이터에 관한 다양한 정보 중 적어도 하나를 포함할 수 있다. 데이터 블록은 복수의 데이터를 포함할 수 있다. 데이터는 파일 시스템이 관리하는 파일에 대응할 수 있다. 예를 들어, 데이터 블록은 호스트 장치(11)가 요청한 타겟 데이터를 포함할 수 있다.The non-volatile memory device 120 may include a metadata block and a data block. A metadata block may include a plurality of pieces of metadata. Metadata may include at least one of various pieces of information about data, such as data type, location, access method, and identification information. A data block may include a plurality of data. Data may correspond to files managed by a file system. For example, the data block may include target data requested by the host device 11 .

일부 실시 예들에서, 메타데이터는 데이터의 위치를 나타낼 수 있다. 예를 들어, 메타데이터는 데이터의 어드레스를 포함하거나, 또는 데이터의 어드레스를 나타내는 다른 메타데이터의 어드레스를 포함할 수 있다. 데이터가 복수의 메타데이터에 의해 지시되는 구조는 멀티-레이어 구조로 지칭될 수 있다. 멀티-레이어 구조에 대한 상세한 설명은 도 6과 함께 후술될 것이다.In some embodiments, metadata may indicate the location of data. For example, the metadata may include an address of data, or may include the address of other metadata representing the address of data. A structure in which data is indicated by a plurality of metadata may be referred to as a multi-layer structure. A detailed description of the multi-layer structure will be described later along with FIG. 6 .

상술된 바와 같이, 본 개시의 실시 예에 따르면, 호스트 장치(11)의 메타데이터 연산을 보조하는 간접 액세스 모듈(111)을 포함하는 스토리지 장치(100)가 제공될 수 있다. 간접 액세스 모듈(111)은 메타데이터를 처리하고, 호스트 장치(11)에게 타겟 데이터의 직접적인 액세스를 제공할 수 있다. 이에 따라, 호스트 장치(11) 및 스토리지 장치(100) 사이의 I/O 로드가 감소되고, 데이터 블록의 액세스 속도가 향상될 수 있다.As described above, according to an embodiment of the present disclosure, the storage device 100 including the indirect access module 111 assisting the metadata operation of the host device 11 may be provided. The indirect access module 111 may process metadata and provide direct access of target data to the host device 11 . Accordingly, an I/O load between the host device 11 and the storage device 100 may be reduced, and data block access speed may be improved.

도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(110)는 호스트 장치(11) 및 비-휘발성 메모리 장치(120)와 통신할 수 있다. 스토리지 컨트롤러(110)는 간접 액세스 모듈(111), 모듈 관리자(112), 프로세서(113), 휘발성 메모리 장치(114), ROM(Read Only Memory)(115), ECC(Error Correction Code) 엔진(116), 호스트 인터페이스 회로(117), 및 비-휘발성 메모리 인터페이스 회로(118)를 포함할 수 있다. 간접 액세스 모듈(111) 및 모듈 관리자(112)는 도 1의 간접 액세스 모듈(111) 및 모듈 관리자(112)와 유사하므로, 이에 대한 상세한 설명은 생략된다.FIG. 2 is a block diagram embodying the storage controller of FIG. 1 according to some embodiments of the present disclosure. Referring to FIGS. 1 and 2 , the storage controller 110 may communicate with the host device 11 and the non-volatile memory device 120 . The storage controller 110 includes an indirect access module 111, a module manager 112, a processor 113, a volatile memory device 114, a read only memory (ROM) 115, and an error correction code (ECC) engine 116. ), a host interface circuit 117, and a non-volatile memory interface circuit 118. Since the indirect access module 111 and the module manager 112 are similar to the indirect access module 111 and the module manager 112 of FIG. 1, a detailed description thereof is omitted.

일부 실시 예들에서, 간접 액세스 모듈(111) 및 모듈 관리자(112)는 소프트웨어로 구현될 수 있다. 보다 상세하게는, 스토리지 장치(100)는 펌웨어 메모리를 포함할 수 있다. 펌웨어 메모리는 스토리지 장치(100)가 동작하는데 필요한 다양한 정보를 명령어들의 형태로 저장할 수 있다. 프로세서(113)가 펌웨어 메모리에 저장된 명령어들을 실행함으로써(즉, 명령어들을 휘발성 메모리 장치(114)에 로드함으로써), 간접 액세스 모듈(111) 및 모듈 관리자(112)을 실행하거나 구현할 수 있다. 간접 액세스 모듈(111) 및 모듈 관리자(112)는 호스트 장치(11)의 운영 체제(14)와 무관하게 구현되므로, 다양한 종류의 운영 체제(14)와 호환될 수 있다. 그러나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니며, 간접 액세스 모듈(111) 및 모듈 관리자(112)는 별도의 하드웨어 장치로도 구현될 수 있거나, 또는 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다.In some embodiments, indirect access module 111 and module manager 112 may be implemented in software. More specifically, the storage device 100 may include a firmware memory. The firmware memory may store various information necessary for the storage device 100 to operate in the form of commands. The processor 113 may execute or implement the indirect access module 111 and the module manager 112 by executing instructions stored in the firmware memory (ie, loading the instructions into the volatile memory device 114 ). Since the indirect access module 111 and the module manager 112 are implemented independently of the operating system 14 of the host device 11, they can be compatible with various types of operating systems 14. However, the scope of the present disclosure is not necessarily limited thereto, and the indirect access module 111 and the module manager 112 may be implemented as separate hardware devices or may be implemented by a combination of hardware and software. .

프로세서(113)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. 휘발성 메모리 장치(114)는 스토리지 컨트롤러(110)의 메인 메모리, 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로 사용될 수 있다. 예를 들어, 휘발성 메모리 장치(114)는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등으로 구현될 수 있다. 일부 실시 예들에서, 휘발성 메모리 장치(114)에 로드된 간접 액세스 모듈(111)은 호스트 장치(11)로부터 수신된 타겟 데이터의 액세스의 요청을 처리할 수 있다. ROM(115)은 스토리지 컨트롤러(110)의 동작에 필요한 정보를 저장하는 읽기 전용 메모리로 사용될 수 있다. The processor 113 may control overall operations of the storage controller 110 . The volatile memory device 114 may be used as a main memory, buffer memory, cache memory, or operation memory of the storage controller 110 . For example, the volatile memory device 114 may be implemented as static random access memory (SRAM) or dynamic random access memory (DRAM). In some embodiments, the indirect access module 111 loaded in the volatile memory device 114 may process a request for access to target data received from the host device 11 . The ROM 115 may be used as a read-only memory for storing information necessary for the operation of the storage controller 110 .

ECC 엔진(116)은 비-휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러를 검출하고 정정할 수 있다. 예를 들어, ECC 엔진(116)은 일정 수준의 에러 정정 능력을 가질 수 있다. ECC 엔진(116)은 에러 정정 능력을 초과하지 않는 데이터의 에러를 정정할 수 있고, 그리고 에러 정정 능력을 초과하는 에러 레벨(예를 들어, 플립된 비트들의 개수)을 갖는 데이터를 정정 불가능한 데이터로 처리할 수 있다.The ECC engine 116 may detect and correct errors in data read from the non-volatile memory device 120 . For example, the ECC engine 116 may have some level of error correction capability. The ECC engine 116 can correct errors in data that does not exceed its error correction capability, and converts data with an error level (e.g., the number of flipped bits) exceeding its error correction capability to uncorrectable data. can be dealt with

스토리지 컨트롤러(110)는 호스트 인터페이스 회로(117)를 통해 호스트 장치(11)와 통신할 수 있다. 호스트 인터페이스 회로(117)는 호스트 인터페이스 레이어(HIL; Host Interface Layer)을 제공할 수 있다. 일부 실시 예들에서, 호스트 인터페이스 회로(117)는 SATA(Serial ATA), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI) 인터페이스, NVMe(Nonvolatile Memory express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다. The storage controller 110 may communicate with the host device 11 through the host interface circuit 117 . The host interface circuit 117 may provide a host interface layer (HIL). In some embodiments, the host interface circuitry 117 may include various interfaces such as Serial ATA (SATA), Peripheral Component Interconnect Express (PCIe), Serial Attached SCSI (SAS) interface, Nonvolatile Memory express (NVMe), Universal Flash Storage (UFS), and the like. It can be implemented based on at least one of the interfaces.

스토리지 컨트롤러(110)는 비-휘발성 메모리 인터페이스 회로(118)를 통해 비-휘발성 메모리 장치(120)와 통신할 수 있다. 일부 실시 예들에서, 비-휘발성 메모리 인터페이스 회로(118)는 낸드 인터페이스를 기반으로 구현될 수 있다.The storage controller 110 may communicate with the non-volatile memory device 120 through the non-volatile memory interface circuit 118 . In some embodiments, the non-volatile memory interface circuit 118 may be implemented based on a NAND interface.

도 3은 본 개시의 일부 실시 예들에 따라 도 1의 비-휘발성 메모리 장치를 구체화한 블록도이다. 도 1 및 도 3을 참조하면, 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)와 통신할 수 있다. 예를 들어, 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)로부터 어드레스(ADD) 및 커맨드(CMD)를 수신할 수 있다. 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)와 데이터를 통신할 수 있다.FIG. 3 is a block diagram embodying the non-volatile memory device of FIG. 1 according to some embodiments of the present disclosure. Referring to FIGS. 1 and 3 , the non-volatile memory device 120 may communicate with the storage controller 110 . For example, the non-volatile memory device 120 may receive an address ADD and a command CMD from the storage controller 110 . The non-volatile memory device 120 may communicate data with the storage controller 110 .

비-휘발성 메모리 장치(120)는 제어 로직(121), 전압 생성기(122), 행 디코더(123), 메모리 셀 어레이(124), 페이지 버퍼 유닛(125), 열 디코더(126), 및 I/O 회로(127)를 포함할 수 있다. 도 1의 메타데이터 블록 및 데이터 블록은 메모리 셀 어레이(124)에 저장될 수 있다.The non-volatile memory device 120 includes a control logic 121, a voltage generator 122, a row decoder 123, a memory cell array 124, a page buffer unit 125, a column decoder 126, and I/ O circuit 127 may be included. The metadata block and data block of FIG. 1 may be stored in the memory cell array 124 .

제어 로직(121)은 스토리지 컨트롤러(110)로부터 커맨드(CMD) 및 어드레스(ADD)를 수신할 수 있다. 커맨드(CMD)는 읽기, 쓰기, 및 소거 등과 같은 비-휘발성 메모리 장치(120)에서 수행될 동작을 지시하는 신호일 수 있다. 어드레스(ADD)는 행 어드레스(ADDR) 및 열 어드레스(ADDC)를 포함할 수 있다. 제어 로직(121)은 어드레스(ADD)에 기초하여 행 어드레스(ADDR) 및 열 어드레스(ADDC)를 생성할 수 있다.The control logic 121 may receive a command CMD and an address ADD from the storage controller 110 . The command CMD may be a signal instructing operations to be performed in the non-volatile memory device 120, such as read, write, and erase. The address ADD may include a row address ADDR and a column address ADDC. The control logic 121 may generate a row address ADDR and a column address ADDC based on the address ADD.

전압 생성기(122)는 제어 로직(121)의 제어에 따라, 행 디코더(123)를 통해 메모리 셀 어레이(124)에 인가되는 전압들을 제어할 수 있다. The voltage generator 122 may control voltages applied to the memory cell array 124 through the row decoder 123 according to the control of the control logic 121 .

행 디코더(123)는 제어 로직(121)으로부터 행 어드레스(ADDR)를 수신할 수 있다. 행 디코더(123)는 스트링 선택 라인(SSL)들, 워드 라인(WL)들, 및 접지 선택 라인(GSL)들을 통해 메모리 셀 어레이(124)와 연결될 수 있다. 행 디코더(123)는 행 어드레스(ADDR)를 디코딩하고, 디코딩 결과 및 전압 생성기(122)로부터 수신된 전압에 기초하여 스트링 선택 라인(SSL)들, 워드 라인(WL)들, 및 접지 선택 라인(GSL)들에 인가되는 전압들을 제어할 수 있다.The row decoder 123 may receive the row address ADDR from the control logic 121 . The row decoder 123 may be connected to the memory cell array 124 through string select lines SSL, word lines WL, and ground select lines GSL. The row decoder 123 decodes the row address ADDR, and based on the decoding result and the voltage received from the voltage generator 122, string select lines SSL, word lines WL, and a ground select line ( The voltages applied to the GSLs can be controlled.

메모리 셀 어레이(124)는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀들 각각은 데이터에 대응하는 문턱 전압 레벨을 가질 수 있다. 메모리 셀들은 행 방향 및 열 방향으로 배열될 수 있다. 메모리 셀들 중 일부는 도 1의 메타데이터 블록 또는 데이터 블록에 대응할 수 있다. 메모리 셀들 중 다른 일부는 도 1에서 소프트웨어로 구현된 간접 액세스 모듈(111) 및 모듈 관리자(112)에 대응하는 명령어들을 저장할 수 있다. 일부 실시 예들에서, 메타데이터 블록 및 데이터 블록은 비-휘발성 메모리 장치(120)의 물리적 소거 단위일 수 있으나, 본 개시가 이에 제한되는 것은 아니며, 물리적 소거 단위는 페이지 단위, 워드 라인 단위, 서브 블록 단위 등으로 변경될 수 있다.The memory cell array 124 may include a plurality of memory cells. Each of the memory cells may have a threshold voltage level corresponding to data. Memory cells may be arranged in a row direction and a column direction. Some of the memory cells may correspond to the metadata block or data block of FIG. 1 . Some of the memory cells may store instructions corresponding to the indirect access module 111 and the module manager 112 implemented as software in FIG. 1 . In some embodiments, the metadata block and the data block may be a physical erase unit of the non-volatile memory device 120, but the present disclosure is not limited thereto, and the physical erase unit may be a page unit, a word line unit, or a sub block. Units can be changed.

페이지 버퍼 유닛(125)은 복수의 페이지 버퍼(PB)들을 포함할 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들을 통해 메모리 셀 어레이(124)와 연결될 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들의 전압을 감지함으로써, 메모리 셀 어레이(124)로부터 페이지 단위로 데이터를 읽을 수 있다. The page buffer unit 125 may include a plurality of page buffers (PBs). The page buffer unit 125 may be connected to the memory cell array 124 through bit lines BL. The page buffer unit 125 may read data in page units from the memory cell array 124 by sensing the voltages of the bit lines BL.

열 디코더(126)는 제어 로직(121)으로부터 열 어드레스(ADDC)를 수신할 수 있다. 열 디코더(126)는 열 어드레스(ADDC)를 디코딩하고, 디코딩 결과에 기초하여 페이지 버퍼 유닛(125)에 의해 읽어진 데이터를 I/O 회로(127)로 제공할 수 있다.The column decoder 126 may receive the column address ADDC from the control logic 121 . The column decoder 126 may decode the column address ADDC and provide data read by the page buffer unit 125 to the I/O circuit 127 based on the decoding result.

열 디코더(126)는 데이터 라인(DL)들을 통해 I/O 회로(127)로부터 데이터를 수신할 수 있다. 열 디코더(126)는 제어 로직(121)으로부터 열 어드레스(ADDC)를 수신할 수 있다. 열 디코더(126)는 열 어드레스(ADDC)를 디코딩하고, 디코딩 결과에 기초하여 I/O 회로(127)로부터 수신된 데이터를 페이지 버퍼 유닛(125)에 제공할 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들을 통해 I/O 회로(127)로부터 제공된 데이터를 페이지 단위로 메모리 셀 어레이(124)에 저장할 수 있다.The column decoder 126 may receive data from the I/O circuit 127 through the data lines DL. The column decoder 126 may receive the column address ADDC from the control logic 121 . The column decoder 126 may decode the column address ADDC and provide data received from the I/O circuit 127 to the page buffer unit 125 based on the decoding result. The page buffer unit 125 may store data provided from the I/O circuit 127 through the bit lines BL in the memory cell array 124 in page units.

I/O 회로(127)는 데이터 라인(DL)들을 통해 열 디코더(126)와 연결될 수 있다. I/O 회로(127)는 스토리지 컨트롤러(110)로부터 수신된 데이터를 데이터 라인(DL)들을 통해 열 디코더(126)로 전달할 수 있다. I/O 회로(127)는 데이터 라인(DL)들을 통해 수신된 데이터를 스토리지 컨트롤러(110)로 출력할 수 있다.The I/O circuit 127 may be connected to the column decoder 126 through data lines DL. The I/O circuit 127 may transmit data received from the storage controller 110 to the column decoder 126 through the data lines DL. The I/O circuit 127 may output data received through the data lines DL to the storage controller 110 .

도 4는 일반적인 스토리지 시스템의 데이터 처리 방법을 설명하는 도면이다. 도 4를 참조하면, 스토리지 시스템은 호스트 장치 및 스토리지 장치를 포함할 수 있다. 호스트 장치는 파일 시스템을 포함할 수 있다. 파일 시스템은 애플리케이션에 대응하는 파일들을 관리할 수 있다. 스토리지 장치는 제1 내지 제N 메타데이터 블록들(MBK1~MBKN)을 포함할 수 있다. 제1 내지 제N 메타데이터 블록들(MBK1~MBKN) 각각은 제1 내지 제i 메타데이터를 포함할 수 있다. 스토리지 장치는 제1 내지 제M 데이터 블록들(DBK1~DBKM)을 포함할 수 있다. 제1 내지 제M 데이터 블록들(DBK1~DBKM) 각각은 제1 내지 제j 데이터(DT1~DTj)를 포함할 수 있다. 여기서, N, M, i, 및 j는 임의의 자연수들이다.4 is a diagram illustrating a data processing method of a general storage system. Referring to FIG. 4 , a storage system may include a host device and a storage device. A host device may contain a file system. The file system may manage files corresponding to applications. The storage device may include first to N th metadata blocks MBK1 to MBKN. Each of the first to Nth metadata blocks MBK1 to MBKN may include first to ith metadata. The storage device may include first to M th data blocks DBK1 to DBKM. Each of the first to Mth data blocks DBK1 to DBKM may include the first to jth data DT1 to DTj. Here, N, M, i, and j are arbitrary natural numbers.

이하에서, 일반적인 스토리지 시스템이 타겟 데이터를 처리하는 방법이 설명된다. In the following, how a typical storage system processes target data is described.

제1 동작(①)에서, 호스트 장치의 파일 시스템은 타겟 데이터의 제1 액세스를 요청할 수 있다. 제1 액세스는 타겟 데이터에 대한 간접 액세스 또는 타겟 데이터에 대응하는 메타데이터에 대한 직접 액세스일 수 있다. 타겟 데이터는 파일 시스템이 필요한 최종적인 데이터일 수 있다. 호스트 장치는 커맨드를 발행함으로써, 타겟 데이터의 제1 액세스의 요청을 스토리지 장치에 제공할 수 있다. 예를 들어, 타겟 데이터는 제1 데이터 블록(DBK1)의 제1 데이터(DT1)일 수 있다. (본 개시의 이해를 돕기 위해, 도 4에서, 타겟 데이터 및 이에 대응하는 메타데이터에 “TG”가 병기됨)In a first operation (①), the file system of the host device may request first access to the target data. The first access may be indirect access to the target data or direct access to metadata corresponding to the target data. Target data may be final data that requires a file system. The host device may provide a request for first access of the target data to the storage device by issuing a command. For example, the target data may be the first data DT1 of the first data block DBK1. (In order to help understanding of the present disclosure, in FIG. 4, “TG” is written alongside target data and metadata corresponding thereto)

제2 동작(②)에서, 스토리지 장치는 제1 동작(①)의 제1 액세스의 요청에 기초하여 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)를 읽을 수 있다. 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)은 타겟 데이터에 대한 메타데이터일 수 있다. 스토리지 장치는 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)를 호스트 장치에 제공할 수 있다.In the second operation (②), the storage device may read the first metadata MD1 of the first metadata block MBK1 based on the first access request of the first operation (①). The first metadata MD1 of the first metadata block MBK1 may be metadata about target data. The storage device may provide the first metadata MD1 of the first metadata block MBK1 to the host device.

제3 동작(③)에서, 호스트 장치의 파일 시스템은 제2 동작(②)을 통해 수신된 메타데이터에 기초하여 타겟 데이터의 어드레스를 계산할 수 있다. 즉, 호스트 장치의 프로세서는 메타데이터를 처리하고, 메타데이터에 대응하는 어드레스를 획득할 수 있다. 예를 들어, 파일 시스템은 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)에 기초하여, 제1 데이터 블록(DBK1)의 제1 데이터(DT1)의 어드레스를 계산할 수 있다.In the third operation (③), the file system of the host device may calculate the address of the target data based on the metadata received through the second operation (②). That is, the processor of the host device may process metadata and obtain an address corresponding to the metadata. For example, the file system may calculate the address of the first data DT1 of the first data block DBK1 based on the first metadata MD1 of the first metadata block MBK1.

제4 동작(④)에서, 호스트 장치의 파일 시스템은 제3 동작(③)에서 계산된 어드레스에 기초하여, 타겟 데이터의 제2 액세스를 요청할 수 있다. 예를 들어, 제2 액세스는 타겟 데이터에 대한 직접 액세스일 수 있다. 파일 시스템은 메타데이터로부터 계산된 어드레스에 기초하여 제1 데이터 블록(DBK1)에 액세스할 수 있다.In a fourth operation (④), the file system of the host device may request second access to the target data based on the address calculated in the third operation (③). For example, the second access may be direct access to target data. The file system can access the first data block DBK1 based on the address calculated from metadata.

제5 동작(⑤)에서, 스토리지 장치는 제4 동작(④)에 대응하는 제2 액세스의 요청의 응답으로서 타겟 데이터를 호스트 장치에 제공할 수 있다. 예를 들어, 스토리지 장치는 호스트 장치로부터 계산된 어드레스를 포함하는 제2 액세스의 요청을 수신할 수 있다. 스토리지 장치는 요청에 대한 응답으로서 제1 데이터 블록(DBK1)의 제1 데이터(DT1)를 호스트 장치에 반환할 수 있다.In a fifth operation (⑤), the storage device may provide target data to the host device as a response to the second access request corresponding to the fourth operation (④). For example, the storage device may receive a second access request including the calculated address from the host device. The storage device may return the first data DT1 of the first data block DBK1 to the host device as a response to the request.

상술된 바와 같이, 일반적인 스토리지 시스템에서, 메타데이터의 연산은 호스트 장치에 의해 수행할 수 있다. 타겟 데이터를 요청하거나 타겟 데이터를 수신하는 것과 별도로, 일반적인 스토리지 시스템은 메타데이터를 제공하는 제2 동작(②) 및 계산된 어드레스에 기초하여 액세스하는 제4 동작(④)을 수행할 수 있다. 메타데이터 처리는 호스트 장치 및 스토리지 장치 사이의 I/O 로드를 증가시킬 수 있다. 이러한 I/O 로드를 경감시키는 방안은 도 5를 참조하여 후술될 것이다.As described above, in a general storage system, metadata operation may be performed by a host device. Apart from requesting target data or receiving target data, a general storage system may perform a second operation (②) of providing metadata and a fourth operation (④) of accessing based on the calculated address. Metadata processing can increase the I/O load between the host device and the storage device. A method of reducing the I/O load will be described later with reference to FIG. 5 .

도 5는 본 개시의 실시 예에 따른 데이터 처리 방법을 설명하는 도면이다. 도 5를 참조하면, 스토리지 시스템(10)은 호스트 장치(11) 및 스토리지 장치(100)를 포함할 수 있다. 스토리지 시스템(10), 호스트 장치(11), 및 스토리지 장치(100)는 도 1의 스토리지 시스템(10), 호스트 장치(11), 및 스토리지 장치(100)에 대응할 수 있다.5 is a diagram for explaining a data processing method according to an embodiment of the present disclosure. Referring to FIG. 5 , the storage system 10 may include a host device 11 and a storage device 100 . The storage system 10 , the host device 11 , and the storage device 100 may correspond to the storage system 10 , the host device 11 , and the storage device 100 of FIG. 1 .

호스트 장치(11)는 파일 시스템을 포함할 수 있다. 파일 시스템은 애플리케이션에 대응하는 파일들을 관리할 수 있다. 스토리지 장치(100)는 제1 내지 제N 메타데이터 블록들(MBK1~MBKN)을 포함할 수 있다. 제1 내지 제N 메타데이터 블록들(MBK1~MBKN) 각각은 제1 내지 제i 메타데이터를 포함할 수 있다. 스토리지 장치(100)는 제1 내지 제M 데이터 블록들(DBK1~DBKM)을 포함할 수 있다. 제1 내지 제M 데이터 블록들(DBK1~DBKM) 각각은 제1 내지 제j 데이터(DT1~DTj)를 포함할 수 있다. 여기서, N, M, i, 및 j는 임의의 자연수들이다.The host device 11 may include a file system. The file system may manage files corresponding to applications. The storage device 100 may include first to N th metadata blocks MBK1 to MBKN. Each of the first to Nth metadata blocks MBK1 to MBKN may include first to ith metadata. The storage device 100 may include first to Mth data blocks DBK1 to DBKM. Each of the first to Mth data blocks DBK1 to DBKM may include the first to jth data DT1 to DTj. Here, N, M, i, and j are arbitrary natural numbers.

스토리지 장치(100)는 간접 액세스 모듈(111)을 포함할 수 있다. 간접 액세스 모듈(111)은 호스트 장치(11)의 파일 시스템의 연산을 보조할 수 있다. 간접 액세스 모듈(111)은 도 1 및 도 2의 간접 액세스 모듈(111)에 대응할 수 있다. The storage device 100 may include an indirect access module 111 . The indirect access module 111 may assist file system operation of the host device 11 . The indirect access module 111 may correspond to the indirect access module 111 of FIGS. 1 and 2 .

이하에서, 본 개시의 실시 예들에 따른 스토리지 시스템(10)이 타겟 데이터를 처리하는 방법이 설명된다. Hereinafter, a method of processing target data by the storage system 10 according to embodiments of the present disclosure will be described.

제1 동작(①)에서, 호스트 장치(11)의 파일 시스템은 타겟 데이터의 액세스를 요청할 수 있다. 타겟 데이터의 액세스는 타겟 데이터에 대한 직접 액세스 및 간접 액세스를 포함할 수 있다. 예를 들어, 직접 액세스는 타겟 데이터가 저장된 데이터 블록에 액세스하는 동작일 수 있고, 간접 액세스는 타겟 어드레스를 가리키는 메타데이터가 저장된 메타데이터 블록에 액세스하는 동작일 수 있다. 타겟 데이터는 파일 시스템이 필요한 최종적인 데이터일 수 있다. In the first operation (①), the file system of the host device 11 may request access to the target data. Access of the target data may include direct access and indirect access to the target data. For example, direct access may be an operation of accessing a data block in which target data is stored, and indirect access may be an operation of accessing a metadata block in which metadata indicating a target address is stored. Target data may be final data that requires a file system.

호스트 장치(11)는 커맨드를 발행함으로써, 타겟 데이터의 액세스의 요청을 스토리지 장치(100)에 제공할 수 있다. 예를 들어, 타겟 데이터는 제1 데이터 블록(DBK1)의 제1 데이터(DT1)일 수 있다. (본 개시의 이해를 돕기 위해, 도 5에서, 타겟 데이터 및 이에 대응하는 메타데이터에 “TG”가 병기됨)The host device 11 may provide a request for access to target data to the storage device 100 by issuing a command. For example, the target data may be the first data DT1 of the first data block DBK1. (In order to help understanding of the present disclosure, in FIG. 5, “TG” is written alongside target data and metadata corresponding thereto)

제2 동작(②)에서, 스토리지 장치(100)의 간접 액세스 모듈(111)은 제1 동작(①)의 요청의 액세스 인자에 기초하여 메타데이터 블록에 액세스할 수 있다. 액세스 인자는 호스트 장치(11)로부터 수신되고, 타겟 데이터 또는 타겟 데이터에 대응하는 메타데이터를 탐색하는데 필요한 정보를 가리킬 수 있다. 예를 들어, 액세스 인자는 타겟 데이터의 식별자, 간접 레이어 정보, 및 반환 정보 등을 포함할 수 있다. In the second operation (②), the indirect access module 111 of the storage device 100 may access the metadata block based on the access factor of the request of the first operation (①). The access factor is received from the host device 11 and may indicate information necessary to search for target data or metadata corresponding to the target data. For example, the access factor may include an identifier of target data, indirect layer information, and return information.

예를 들어, 간접 액세스 모듈(111)은 요청의 액세스 인자에 기초하여 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)에 액세스할 수 있다. 제1 메타데이터(MD1)은 타겟 데이터에 대한 메타데이터일 수 있다.For example, the indirect access module 111 may access the first metadata MD1 of the first metadata block MBK1 based on the access factor of the request. The first metadata MD1 may be metadata about target data.

제3 동작(③)에서, 스토리지 장치(100)의 간접 액세스 모듈(111)은 액세스 인자 및 메타데이터에 기초하여 타겟 데이터의 어드레스를 계산할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 제2 동작(②)을 통해 액세스된 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)를 페치할 수 있다. 간접 액세스 모듈(111)은 액세스 인자 및 제1 메타데이터(MD1)에 기초하여, 제1 데이터 블록(DBK1)의 제1 데이터(DT1)의 어드레스를 계산할 수 있다.In a third operation (③), the indirect access module 111 of the storage device 100 may calculate an address of target data based on the access factor and metadata. For example, the indirect access module 111 may fetch the first metadata MD1 of the accessed first metadata block MBK1 through the second operation (②). The indirect access module 111 may calculate the address of the first data DT1 of the first data block DBK1 based on the access factor and the first metadata MD1.

제4 동작(④)에서, 간접 액세스 모듈(111)은 액세스 인자 및 제3 동작(③)에서 계산된 어드레스에 기초하여, 타겟 데이터를 갖는 데이터 블록에 액세스할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)로부터 계산된 어드레스에 기초하여 제1 데이터 블록(DBK1)의 제1 데이터(DT1)에 액세스할 수 있다.In the fourth operation (④), the indirect access module 111 may access a data block having target data based on the access factor and the address calculated in the third operation (③). For example, the indirect access module 111 accesses the first data DT1 of the first data block DBK1 based on the address calculated from the first metadata MD1 of the first metadata block MBK1. can do.

제5 동작(⑤)에서, 간접 액세스 모듈(111)은 제3 동작(③)에서 계산된 어드레스에 위치한 타겟 데이터를 페치할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 계산된 어드레스에 기초하여, 제4 동작(④)을 통해 액세스된 제1 데이터 블록(DBK1) 내의 제1 데이터(DT1)를 페치할 수 있다. In the fifth operation (⑤), the indirect access module 111 may fetch the target data located at the address calculated in the third operation (③). For example, the indirect access module 111 may fetch the first data DT1 in the first data block DBK1 accessed through the fourth operation ④ based on the calculated address.

일부 실시 예들에서, 간접 액세스 모듈(111)은 액세스 인자에 포함된 반환 타입에 기초하여, 타겟 데이터를 페치하거나, 또는 타겟 데이터를 포함하는 데이터 블록을 페치할 수 있다.In some embodiments, the indirect access module 111 may fetch target data or a data block including target data based on a return type included in an access factor.

제6 동작(⑥)에서, 간접 액세스 모듈(111)은 제5 동작(⑤)을 통해 페치된 타겟 데이터를 호스트 장치(11)에 제공할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 페치된 제1 데이터(DT1)를 호스트 장치(11)의 파일 시스템에 제공할 수 있다. 제6 동작(⑥)을 통해 제공되는 타겟 데이터는 제1 동작(①)의 요청에 대한 응답으로서 호스트 장치(11)에 제공될 수 있다.In the sixth operation (⑥), the indirect access module 111 may provide the target data fetched through the fifth operation (⑤) to the host device 11. For example, the indirect access module 111 may provide the fetched first data DT1 to the file system of the host device 11 . The target data provided through the sixth operation (⑥) may be provided to the host device 11 as a response to the request of the first operation (①).

일부 실시 예들에서, 간접 액세스 모듈(111)은 액세스 인자에 포함된 반환 타입에 기초하여, 타겟 데이터를 반환하거나 또는 타겟 데이터를 포함하는 데이터 블록을 반환할지 여부를 결정할 수 있다. 간접 액세스 모듈(111)은 액세스 인자에 포함된 반환 타입에 기초하여, 메타데이터를 반환할지 여부를 결정할 수 있고, 그리고 메타데이터를 반환한다고 결정하면, 메타데이터를 반환할지 또는 메타데이터를 포함하는 메타데이터 블록을 반환할지 여부를 결정할 수 있다.In some embodiments, the indirect access module 111 may determine whether to return target data or a data block including target data based on a return type included in an access factor. The indirect access module 111 may determine whether to return metadata based on the return type included in the access argument, and if it determines to return metadata, whether to return metadata or meta data including metadata. You can decide whether to return a block of data.

상술된 바와 같이, 본 개시의 실시 예들에 따르면, 스토리지 장치(100)의 간접 액세스 모듈(111)은 메타데이터를 처리할 수 있다. 스토리지 장치(100)는, 호스트 장치(11)의 개입 없이, 메타데이터를 페치하고, 메타데이터로부터 어드레스를 획득하고, 그리고 어드레스에 대응하는 데이터 블록에 액세스할 수 있다. 도 4의 일반적인 스토리지 시스템과 다르게, 메타데이터 연산을 위한 호스트 장치 및 스토리지 장치 사이의 I/O 로드가 감소됨에 따라, 데이터 블록의 액세스 속도가 향상된 스토리지 시스템(10)이 제공될 수 있다.As described above, according to embodiments of the present disclosure, the indirect access module 111 of the storage device 100 may process metadata. The storage device 100 may fetch metadata, obtain an address from the metadata, and access a data block corresponding to the address without intervention of the host device 11 . Unlike the general storage system of FIG. 4 , as an I/O load between a host device for metadata operation and a storage device is reduced, the storage system 10 with improved data block access speed may be provided.

도 6은 본 개시의 일부 실시 예들에 따른 데이터 처리 방법을 설명하는 도면이다. 도 6을 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 시스템이 메타데이터를 처리하는 방법이 설명된다.6 is a diagram illustrating a data processing method according to some embodiments of the present disclosure. Referring to FIG. 6 , a method of processing metadata by a storage system according to some embodiments of the present disclosure will be described.

본 개시의 일부 실시 예들에 따르면, 스토리지 시스템은 리눅스(Linux) 운영 체제를 지원할 수 있다. 예를 들어, 호스트 장치(11)는 리눅스(Linux) 운영 체제의 파일 시스템을 지원할 수 있다. 스토리지 장치(100)는 리눅스(Linux) 운영 체제의 파일 시스템에 따른 아이노드(inode)를 관리할 수 있다. 아이노드(inode)는 파일마다 생성될 수 있고, 파일에 대응하는 복수의 데이터들 각각의 액세스를 위한 포인터들을 포함할 수 있다.According to some embodiments of the present disclosure, the storage system may support a Linux operating system. For example, the host device 11 may support a file system of a Linux operating system. The storage device 100 may manage inodes according to a file system of a Linux operating system. An inode may be generated for each file and may include pointers for accessing each of a plurality of data corresponding to the file.

호스트 장치(11)는 타겟 데이터의 액세스의 요청을 스토리지 장치(100)에 제공할 수 있다. 스토리지 장치(100)는 타겟 데이터의 액세스의 요청에 기초하여 타겟 데이터를 호스트 장치(11)에 제공할 수 있다.The host device 11 may provide a request for access of target data to the storage device 100 . The storage device 100 may provide target data to the host device 11 based on a request for access to the target data.

스토리지 장치(100)는 데이터 레이어, 제1 간접 레이어, 제2 간접 레이어, 제3 간접 레이어, 및 제4 간접 레이어를 포함할 수 있다. 데이터 레이어는 적어도 하나의 데이터 블록을 포함할 수 있다. 제1 내지 제4 간접 레이어들 각각은 적어도 하나의 메타데이터 블록을 포함할 수 있다. The storage device 100 may include a data layer, a first indirect layer, a second indirect layer, a third indirect layer, and a fourth indirect layer. A data layer may include at least one data block. Each of the first to fourth indirect layers may include at least one metadata block.

제1 내지 제4 간접 레이어들은 호스트 장치(11)에 가까울수록 상위 레이어로 지칭될 수 있고, 데이터 레이어에 가까울수록 하위 레이어로 지칭될 수 있다. 예를 들어, 제1 간접 레이어는 제1 내지 제4 간접 레이어들 중 최하위 간접 레이어로 지칭될 수 있다. 제2 간접 레이어는 제3 간접 레이어보다 하위 레이어지만, 제1 간접 레이어보다 상위 레이어일 수 있다. 제3 간접 레이어는 제4 간접 레이어보다 하위 레이어지만, 제2 간접 레이어보다 상위 레이어일 수 있다. 제4 간접 레이어는 제1 내지 제4 간접 레이어들 중 최상위 간접 레이어로 지칭될 수 있다.The first to fourth indirect layers may be referred to as higher layers as they are closer to the host device 11, and may be referred to as lower layers as they are closer to the data layer. For example, the first indirect layer may be referred to as the lowest indirect layer among the first to fourth indirect layers. The second indirect layer is a lower layer than the third indirect layer, but may be a higher layer than the first indirect layer. The third indirect layer is a lower layer than the fourth indirect layer, but may be a higher layer than the second indirect layer. The fourth indirect layer may be referred to as the highest indirect layer among the first to fourth indirect layers.

스토리지 장치(100)는 호스트 장치(11)로부터 타겟 데이터의 액세스의 요청을 수신하면 아이노드 블록(INB)에 액세스할 수 있다. 스토리지 장치(100)는 아이노드 블록(INB)의 포인터에 기초하여 다른 포인터 또는 데이터에 액세스하고, 최종적인 타겟 데이터를 호스트 장치(11)로 반환할 수 있다. The storage device 100 may access the inode block INB upon receiving a request for accessing target data from the host device 11 . The storage device 100 may access other pointers or data based on the pointer of the inode block INB and return final target data to the host device 11 .

아이노드 블록(INB)은 제4 간접 레이어에 포함된 메타데이터 블록일 수 있다. 아이노드 블록(INB)은 직접 포인터 블록(DPBi), 간접 포인터 블록(IPBi), 더블 간접 포인터 블록(DIPBi), 및 트리플 간접 포인터 블록(TIPBi)을 포함할 수 있다. The inode block INB may be a metadata block included in the fourth indirect layer. The inode block INB may include a direct pointer block DPBi, an indirect pointer block IPBi, a double indirect pointer block DIPBi, and a triple indirect pointer block TIPBi.

직접 포인터 블록(DPBi)은 복수의 직접 포인터들을 포함할 수 있다. 직접 포인터는 메타데이터에 포함된 다양한 정보들 중 하나일 수 있다. 직접 포인터는 별도의 다른 메타데이터 블록을 경유하지 않고 데이터 레이어에 직접 액세스할 수 있다. The direct pointer block DPBi may include a plurality of direct pointers. A direct pointer may be one of various pieces of information included in metadata. Direct pointers provide direct access to the data layer without going through another metadata block.

예를 들어, 직접 포인터 블록(DPBi)의 직접 포인터는 데이터 레이어의 제1 데이터 블록(DBK1)의 데이터(DT)를 가리킬 수 있다. 도면의 복잡함을 피하기 위해, 도 6은 하나의 직접 포인터의 대응 관계만을 도시하였지만, 직접 포인터 블록(DPBi)의 포인터들은 데이터 레이어 내의 다른 데이터들을 가리킬 수 있다.For example, the direct pointer of the direct pointer block DPBi may point to the data DT of the first data block DBK1 of the data layer. In order to avoid the complexity of the drawing, FIG. 6 shows only one direct pointer correspondence, but the pointers of the direct pointer block DPBi may point to other data in the data layer.

간접 포인터 블록(IPBi)은 복수의 간접 포인터들을 포함할 수 있다. 이하에서, 본 개시의 이해를 돕기 위해, 간접 포인터는 싱글 간접 포인터를 지칭하는 것으로 의도된다. 간접 포인터는 메타데이터에 포함된 다양한 정보들 중 하나일 수 있다. 간접 포인터는 제1 간접 레이어를 경유하여 데이터 레이어에 액세스할 수 있다. The indirect pointer block IPBi may include a plurality of indirect pointers. In the following, for the purpose of understanding the present disclosure, an indirect pointer is intended to refer to a single indirect pointer. The indirect pointer may be one of various pieces of information included in metadata. The indirect pointer may access the data layer via the first indirection layer.

예를 들어, 간접 포인터 블록(IPBi)의 간접 포인터는 제1 간접 레이어의 제1 직접 포인터 블록(DPB1)의 직접 포인터를 가리킬 수 있다. 제1 직접 포인터 블록(DPB1)의 직접 포인터는 데이터 레이어의 제2 데이터 블록(DBK2)의 데이터(DT)를 가리킬 수 있다.For example, the indirect pointer of the indirect pointer block IPBi may point to the direct pointer of the first direct pointer block DPB1 of the first indirect layer. A direct pointer of the first direct pointer block DPB1 may point to the data DT of the second data block DBK2 of the data layer.

더블 간접 포인터 블록(DIPBi)은 복수의 더블 간접 포인터들을 포함할 수 있다. 더블 간접 포인터는 메타데이터에 포함된 다양한 정보들 중 하나일 수 있다. 더블 간접 포인터는 제2 간접 레이어 및 제1 간접 레이어를 순차적으로 경유하여 데이터 레이어에 액세스할 수 있다.The double indirect pointer block DIPBi may include a plurality of double indirect pointers. The double indirect pointer may be one of various pieces of information included in metadata. The double indirect pointer may access the data layer by sequentially passing through the second indirect layer and the first indirect layer.

예를 들어, 더블 간접 포인터 블록(DIPBi)의 더블 간접 포인터는 제2 간접 레이어의 제1 간접 포인터 블록(IPB1)의 간접 포인터를 가리킬 수 있다. 제1 간접 포인터 블록(IPB1)의 간접 포인터는 제1 간접 레이어의 제2 직접 포인터 블록(DPB2)의 직접 포인터를 가리킬 수 있다. 제2 직접 포인터 블록(DPB2)의 직접 포인터는 데이터 레이어의 제3 데이터 블록(DBK3)의 데이터(DT)를 가리킬 수 있다.For example, the double indirect pointer of the double indirect pointer block DIPBi may point to the indirect pointer of the first indirect pointer block IPB1 of the second indirect layer. The indirect pointer of the first indirect pointer block IPB1 may point to a direct pointer of the second direct pointer block DPB2 of the first indirect layer. A direct pointer of the second direct pointer block DPB2 may point to the data DT of the third data block DBK3 of the data layer.

트리플 간접 포인터 블록(TIPBi)은 복수의 트리플 간접 포인터들을 포함할 수 있다. 트리플 간접 포인터는 메타데이터에 포함된 다양한 정보들 중 하나일 수 있다. 트리플 간접 포인터는 제3 간접 레이어, 제2 간접 레이어, 및 제1 간접 레이어를 순차적으로 경유하여 데이터 레이어에 액세스할 수 있다. The triple indirect pointer block TIPBi may include a plurality of triple indirect pointers. The triple indirect pointer may be one of various pieces of information included in metadata. The triple indirect pointer may access the data layer by sequentially passing through the third indirect layer, the second indirect layer, and the first indirect layer.

예를 들어, 트리플 간접 포인터 블록(TIPBi)의 트리플 간접 포인터는 제3 간접 레이어의 더블 간접 포인터 블록(DIPB)의 더블 간접 포인터를 가리킬 수 있다. 더블 간접 포인터 블록(DIPB)의 더블 간접 포인터는 제2 간접 레이어의 제2 간접 포인터 블록(IPB2)의 간접 포인터를 가리킬 수 있다. 제2 간접 포인터 블록(IPB2)의 간접 포인터는 제1 간접 레이어의 제3 직접 포인터 블록(DPB3)의 직접 포인터를 가리킬 수 있다. 제3 직접 포인터 블록(DPB3)의 직접 포인터는 데이터 레이어의 제4 데이터 블록(DBK4)의 데이터(DT)를 가리킬 수 있다.For example, the triple indirect pointer of the triple indirect pointer block TIPBi may point to the double indirect pointer of the double indirect pointer block DIPB of the third indirect layer. The double indirect pointer of the double indirect pointer block DIPB may point to an indirect pointer of the second indirect pointer block IPB2 of the second indirect layer. The indirect pointer of the second indirect pointer block IPB2 may point to a direct pointer of the third direct pointer block DPB3 of the first indirect layer. A direct pointer of the third direct pointer block DPB3 may point to the data DT of the fourth data block DBK4 of the data layer.

일부 실시 예들에서, 스토리지 장치(100)는 호스트 장치(11)의 요청에 따라 타겟 데이터 및 타겟 데이터에 대응하는 포인터들을 함께 반환할 수 있다. 예를 들어, 호스트 장치(11)로부터의 요청은 액세스 인자를 포함할 수 있다. 액세스 인자는 반환 정보를 포함할 수 있다. 스토리지 장치(100)는 데이터 레이어에 액세스한 후, 타겟 데이터를 반환할 때, 반환 정보에 기초하여 타겟 데이터만 반환하거나, 또는 타겟 데이터 및 타겟 데이터에 대응하는 포인터들을 중 선택된 일부 또는 전부를 포함할 수 있다. 예를 들어, 반환 정보가 모든 포인터들의 반환을 요청하고 그리고 타겟 데이터가 아이노드 블록(INB)의 트리플 간접 포인터에 의해 지시되는 경우, 스토리지 장치(100)는 타겟 데이터에 대응하는 트리플 간접 포인터, 더블 간접 포인터, 간접 포인터, 및 직접 포인터를 타겟 데이터와 함께 호스트 장치(11)에 반환할 수 있다.In some embodiments, the storage device 100 may return target data and pointers corresponding to the target data together at the request of the host device 11 . For example, a request from the host device 11 may include an access factor. Access arguments may include return information. When the storage device 100 returns target data after accessing the data layer, it may return only the target data based on the return information or include some or all of the target data and pointers corresponding to the target data. can For example, when return information requests return of all pointers and target data is indicated by a triple indirect pointer of an inode block (INB), the storage device 100 returns a triple indirect pointer corresponding to the target data, double Indirect pointers, indirect pointers, and direct pointers can be returned to the host device 11 along with target data.

또는, 스토리지 장치(100)는 액세스 인자의 반환 정보에 기초하여, 트리플 간접 포인터를 포함하는 트리플 간접 포인터 블록, 더블 간접 포인터를 포함하는 더블 간접 포인터 블록, 간접 포인터를 포함하는 간접 포인터 블록, 직접 포인터를 포함하는 직접 포인터 블록, 및 타겟 데이터를 포함하는 데이터 블록을 호스트 장치(11)에 반환할 수 있다.Alternatively, the storage device 100 may select a triple indirect pointer block including a triple indirect pointer, a double indirect pointer block including a double indirect pointer, an indirect pointer block including an indirect pointer, and a direct pointer based on return information of an access factor. A direct pointer block including , and a data block including target data may be returned to the host device 11 .

일부 실시 예들에서, 스토리지 장치(100)는 아이노드 블록(INB)의 레이어보다 낮은 레이어에 대응하는 액세스의 요청을 수신할 수 있다. 예를 들어, 스토리지 장치(100)는 이전 타겟 데이터와 함께 대응하는 포인터들을 호스트 장치(11)에 반환할 수 있다. 호스트 장치(11)는 호스트 장치(11)의 메인 메모리 또는 캐시 메모리에 로드된 정보에 기초하여, 아이노드 블록(INB)의 포인터에 대응하는 어드레스 대신, 제1 간접 레이어의 포인터에 대응하는 어드레스를 요청의 액세스 인자의 일부로서 스토리지 장치(100)에 제공할 수 있다. 이 경우, 스토리지 장치(100)는 액세스 인자에 기초하여, 아이노드 블록(INB)부터 순차적으로 포인터를 처리하는 대신, 호스트 장치(11)로부터 수신된 어드레스에 기초하여 제1 간접 레이어부터 포인터 처리를 시작할 수 있다. In some embodiments, the storage device 100 may receive an access request corresponding to a layer lower than the layer of the inode block INB. For example, the storage device 100 may return corresponding pointers to the host device 11 along with previous target data. Based on the information loaded into the main memory or cache memory of the host device 11, the address corresponding to the pointer of the first indirect layer instead of the address corresponding to the pointer of the inode block INB. It may be provided to the storage device 100 as part of the access factor of the request. In this case, the storage device 100 performs pointer processing from the first indirect layer based on the address received from the host device 11 instead of sequentially processing pointers from the inode block INB based on the access factor. can start

일부 실시 예들에서, 간접 레이어의 개수가 증가할수록 저장 용량이 증가하지만, 데이터 액세스가 지연될 수 있다. 예를 들어, 아이노드 블록(INB)이 직접 포인터만 사용하면, 아이노드 블록(INB)은 4KB크기의 파일을 관리할 수 있다. 아이노드 블록(INB)이 간접 포인터만 사용하면, 아이노드 블록(INB)은 2MB크기의 파일을 관리할 수 있다. 아이노드 블록(INB)이 더블 간접 포인터만 사용하면, 아이노드 블록(INB)은 1GB크기의 파일을 관리할 수 있다. 아이노드 블록(INB)이 트리플 간접 포인터만 사용하면, 아이노드 블록(INB)은 512GB크기의 파일을 관리할 수 있다. 다만, 높은 레벨의 간접 포인터를 사용할수록, 타겟 데이터를 획득하기 위해 요구되는 블록 액세스 횟수가 증가하므로 데이터 처리가 지연될 수 있다. 간접 포인터의 레벨이 높은 것은 타겟 데이터를 획득하기 위해 순차적으로 처리될 포인터의 개수가 많은 것을 의미할 수 있다.In some embodiments, storage capacity increases as the number of indirect layers increases, but data access may be delayed. For example, if the inode block (INB) uses only a direct pointer, the inode block (INB) can manage a 4KB file. If the inode block (INB) uses only indirect pointers, the inode block (INB) can manage a 2MB file. If the inode block (INB) uses only double indirect pointers, the inode block (INB) can manage a 1GB file. If the inode block (INB) uses only triple indirect pointers, the inode block (INB) can manage a file of 512 GB. However, data processing may be delayed because the number of block accesses required to obtain target data increases as a higher level of indirect pointer is used. A high level of indirect pointers may mean that the number of pointers to be sequentially processed to obtain target data is large.

일반적인 스토리지 시스템(예를 들어, 도 4의 스토리지 시스템)의 경우, 호스트 장치가 포인터로부터 다음 블록(예를 들어, 포인터 블록 또는 데이터 블록)의 데이터의 어드레스를 계산하므로, 포인터의 레벨이 높을수록 호스트 장치 및 스토리지 장치 사이의 I/O 횟수가 증가할 수 있다.In the case of a general storage system (eg, the storage system of FIG. 4 ), since the host device calculates the address of data of the next block (eg, a pointer block or a data block) from a pointer, the higher the level of the pointer, the higher the host device. The number of I/Os between the device and the storage device may increase.

반면에, 본 개시의 실시 예들에 따르면, 스토리지 장치(100)가 호스트 장치(11)의 개입 없이, 포인터로부터 다음 블록의 어드레스를 자체적으로 계산하므로, 높은 레벨의 간접 포인터를 사용하더라도 I/O 로드가 증가하지 않을 수 있다. 즉, 본 개시의 실시 예들에 따른 스토리지 장치는 데이터 처리의 지연을 최소화하면서 대용량 데이터를 관리할 수 있다.On the other hand, according to embodiments of the present disclosure, since the storage device 100 calculates the address of the next block by itself from the pointer without intervention of the host device 11, even if a high-level indirect pointer is used, the I/O load is reduced. may not increase. That is, the storage device according to embodiments of the present disclosure can manage large-capacity data while minimizing data processing delay.

스토리지 장치(100)가 포인터를 처리하는 연산은 스토리지 장치(100) 내의 간접 액세스 모듈에 의해 수행될 수 있다. 예를 들어, 스토리지 장치(100)는 아이노드 블록(INB)에 대응하는 간접 액세스 모듈을 포함할 수 있다. 간접 액세스 모듈은 리눅스 운영 체제와 호환될 수 있다. 간접 액세스 모듈은 아이노드 블록(INB)으로부터 시작하는 파일 시스템의 포인터 연산을 지원할 수 있다. 호스트 장치(11)로부터 수신된 요청의 액세스 인자는 아이노드 블록(INB)의 직접 포인터, 간접 포인터, 더블 간접 포인터, 및 트리플 간접 포인터 중 적어도 하나를 처리하는데 사용될 수 있다. 예를 들어, 호스트로부터 수신된 액세스 인자는 처리될 포인터의 어드레스 및 포인터가 포함된 레이어의 정보를 포함할 수 있다.An operation in which the storage device 100 processes a pointer may be performed by an indirect access module in the storage device 100 . For example, the storage device 100 may include an indirect access module corresponding to the inode block INB. The indirect access module can be compatible with the Linux operating system. The indirect access module may support pointer operation of a file system starting from an inode block (INB). The access factor of the request received from the host device 11 may be used to process at least one of a direct pointer, an indirect pointer, a double indirect pointer, and a triple indirect pointer of the inode block INB. For example, the access factor received from the host may include an address of a pointer to be processed and information on a layer including the pointer.

도 7은 본 개시의 일부 실시 예들에 따른 데이터 처리 방법을 설명하는 도면이다. 도 7을 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 시스템이 메타데이터를 처리하는 방법이 설명된다.7 is a diagram illustrating a data processing method according to some embodiments of the present disclosure. Referring to FIG. 7 , a method of processing metadata by a storage system according to some embodiments of the present disclosure will be described.

본 개시의 일부 실시 예들에 따르면, 스토리지 시스템은 RocksDB를 지원할 수 있다. 예를 들어, 호스트 장치(11)는 RocksDB 파일 저장 형식과 호환되는 액세스의 요청을 제공할 수 있다. 스토리지 장치(100)는 RocksDB 파일 저장 형식들 중 SST 파일(Serialized Certificate Store File)의 구조로 키-값(key-value)을 저장할 수 있다.According to some embodiments of the present disclosure, the storage system may support RocksDB. For example, the host device 11 may provide a request for access compatible with the RocksDB file storage format. The storage device 100 may store a key-value in the structure of a serialized certificate store file (SST file) among RocksDB file storage formats.

호스트 장치(11)는 타겟 데이터의 액세스의 요청을 스토리지 장치(100)에 제공할 수 있다. 스토리지 장치(100)는 요청의 액세스 인자에 기초하여 타겟 데이터를 호스트 장치(11)에 제공할 수 있다. 예를 들어, 타겟 데이터는 제1 데이터 블록(DBK1)의 데이터(DT)일 수 있다. (본 개시의 이해를 돕기 위해, 도 7에서, 타겟 데이터에 “TG”가 병기됨)The host device 11 may provide a request for access of target data to the storage device 100 . The storage device 100 may provide target data to the host device 11 based on the access factor of the request. For example, the target data may be the data DT of the first data block DBK1. (For the purpose of understanding the present disclosure, in FIG. 7, “TG” is written alongside the target data.)

스토리지 장치(100)는 SST 파일을 포함할 수 있다. SST 파일은 푸터(footer), 인덱스 블록, 메타인덱스 블록, 제1 내지 제N 메타데이터 블록들(MBK1~MBKN), 및 제1 내지 제M 데이터 블록들(DBK1~DBKM)을 포함할 수 있다. 여기서, N 및 M은 임의의 자연수들이다.The storage device 100 may include SST files. The SST file may include a footer, an index block, a metaindex block, first to N th metadata blocks MBK1 to MBKN, and first to M th data blocks DBK1 to DBKM. Here, N and M are arbitrary natural numbers.

푸터는 메타인덱스 헨들러 및 인덱스 헨들러를 포함할 수 있다. 메타인덱스 헨들러는 메타데이터의 위치를 나타낼 수 있다. 인덱스 헨들러는 데이터 블록 핸들러의 위치를 나타낼 수 있다.Footers can include metaindex handlers and index handlers. A metaindex handler can indicate the location of metadata. An index handler may indicate the location of a data block handler.

인덱스 블록은 복수의 데이터 블록 핸들러들을 포함할 수 있다. 데이터 블록 핸들러는 타겟 데이터의 위치를 나타낼 수 있다. 예를 들어, 데이터 블록 핸들러는 제1 내지 제M 데이터 블록들(DBK1~DBKM) 중 타겟 데이터가 포함된 데이터 블록을 나타낼 수 있고, 그리고 대응하는 데이터 블록 내에서 타겟 데이터의 위치를 나타낼 수 있다.An index block may include a plurality of data block handlers. A data block handler may indicate the location of target data. For example, the data block handler may indicate a data block including target data among the first to M th data blocks DBK1 to DBKM, and may indicate a location of the target data within the corresponding data block.

메타인덱스 블록은 복수의 메타데이터 블록 핸들러들을 포함할 수 있다. 메타데이터 블록 핸들러는 메타데이터 블록의 위치 또는 메타데이터 블록 내의 메타데이터의 위치를 나타낼 수 있다. 예를 들어, 메타데이터 블록 핸들러는 제1 내지 제N 메타데이터 블록들(MBK1~MBKN) 중 타겟 데이터의 처리에 필요한 메타데이터 블록의 위치를 나타내거나, 또는 메타데이터 블록 내에서 메타데이터의 위치를 나타낼 수 있다.A metaindex block may include a plurality of metadata block handlers. A metadata block handler can indicate the location of a metadata block or the location of metadata within a metadata block. For example, the metadata block handler indicates the location of a metadata block necessary for processing target data among the first to Nth metadata blocks MBK1 to MBKN, or the location of metadata within a metadata block. can indicate

제1 내지 제M 데이터 블록들(DBK1~DBKM) 각각은 복수의 데이터를 포함할 수 있다. 데이터는 호스트 장치(11)에 의해 관리되는 SST 파일의 일부에 대응할 수 있다. Each of the first to Mth data blocks DBK1 to DBKM may include a plurality of data. Data may correspond to a part of the SST file managed by the host device 11 .

제1 내지 제N 메타데이터 블록들(MBK1~MBKN) 각각은 복수의 메타데이터를 포함할 수 있다. 예를 들어, 메타데이터는 타겟 데이터에 대응하는 키-값이 존재하는지 여부를 나타내는 블룸 필터(Bloom filter), 테이블의 크기 및 기록의 개수를 추정하기 위한 스탯(stats), 데이터 블록의 압축 또는 압축해제를 위한 딕셔너리(dictionary), 일정 범위의 키-값들을 삭제하기 위한 범위 삭제(range deletion) 등을 포함할 수 있다.Each of the first to N th metadata blocks MBK1 to MBKN may include a plurality of metadata. For example, metadata includes a bloom filter indicating whether a key-value corresponding to the target data exists, stats for estimating the size of a table and the number of records, and compression or compression of a data block. It can include a dictionary for release, range deletion for deleting key-values in a certain range, and the like.

이하에서, 본 개시의 일부 실시 예들에 따른 스토리지 시스템이 타겟 데이터를 처리하는 방법이 설명된다. 스토리지 시스템은 호스트 장치(11) 및 스토리지 장치(100)를 포함할 수 있다. 호스트 장치(11)는 타겟 데이터의 액세스의 요청을 스토리지 장치(100)에 제공할 수 있다.Hereinafter, a method of processing target data by a storage system according to some embodiments of the present disclosure will be described. The storage system may include a host device 11 and a storage device 100 . The host device 11 may provide a request for access of target data to the storage device 100 .

제1 동작(①)에서, 스토리지 장치(100)는 액세스의 요청에 기초하여 푸터에 액세스할 수 있다. 요청은 액세스 인자를 포함할 수 있다. 스토리지 장치(100)는 액세스 인자에 기초하여 푸터의 인덱스 헨들러를 참조하여 인덱스 블록에 액세스할 수 있다. 스토리지 장치(100)는 액세스 인자 및 액세스된 인덱스 블록 내의 데이터 블록 핸들러에 기초하여, 데이터(DT)를 포함하는 데이터 블록의 위치를 확인할 수 있다.In a first operation (①), the storage device 100 may access the footer based on an access request. Requests may include access arguments. The storage device 100 may access the index block by referring to the index handler of the footer based on the access factor. The storage device 100 may check the location of the data block including the data DT based on the access factor and the data block handler in the accessed index block.

제2 동작(②)에서, 스토리지 장치(100)는 액세스 인자에 기초하여 푸터의 메타인덱스 핸들러를 참조하여 메타인덱스 블록에 액세스할 수 있다.In the second operation (②), the storage device 100 may access the metaindex block by referring to the metaindex handler of the footer based on the access factor.

제3 동작(③)에서, 스토리지 장치(100)는 제2 동작(②)을 통해 액세스된 메타인덱스 블록 내의 메타데이터 블록 핸들러를 읽고, 액세스 인자 및 메타데이터 블록 핸들러에 기초하여 메타데이터 블록에 액세스할 수 있다. 스토리지 장치(100)는 액세스된 메타데이터 블록 내의 메타데이터를 처리할 수 있다. 예를 들어, 스토리지 장치(100)는 메타인덱스 블록 내의 메타인덱스 블록 핸들러를 참조하여, 제1 메타데이터 블록(MBK1)에 액세스할 수 있다. 스토리지 장치(100)는 제1 메타데이터 블록(MBK1)의 블룸 필터 정보에 기초하여, 타겟 데이터에 대응하는 키-값이 존재하는 것으로 결정할 수 있다.In the third operation (③), the storage device 100 reads the metadata block handler in the metaindex block accessed through the second operation (②), and accesses the metadata block based on the access factor and the metadata block handler. can do. The storage device 100 may process metadata within the accessed metadata block. For example, the storage device 100 may access the first metadata block MBK1 by referring to a metaindex block handler in the metaindex block. The storage device 100 may determine that a key-value corresponding to the target data exists based on the bloom filter information of the first metadata block MBK1.

제4 동작(④)에서, 스토리지 장치(100)는 데이터 블록에 액세스할 수 있다. 예를 들어, 스토리지 장치(100)는 액세스 인자에 포함된 타겟 데이터 식별자(예를 들어, 타겟 데이터에 대응하는 기록 키), 제1 동작(①)에서 획득된 데이터(DT)의 위치, 및 제3 동작(③)에서 처리된 메타데이터에 기초하여, 제1 데이터 블록(DBK1)의 데이터(DT)에 액세스할 수 있다. 이 후, 스토리지 장치(100)는 제4 동작(④)을 통해 획득된 데이터(DT) 또는 데이터(DT)를 포함하는 제1 데이터 블록(DBK1)을 호스트 장치(11)에 제공할 수 있다.In a fourth operation (④), the storage device 100 may access a data block. For example, the storage device 100 includes a target data identifier (eg, a record key corresponding to the target data) included in the access factor, the location of the data DT obtained in the first operation (①), and the second Based on the metadata processed in operation 3 (③), the data DT of the first data block DBK1 can be accessed. Thereafter, the storage device 100 may provide the data DT obtained through the fourth operation ④ or the first data block DBK1 including the data DT to the host device 11 .

스토리지 장치(100)가 인덱스 핸들러, 메타인덱스 핸들러, 데이터 블록 핸들러, 및 메타데이터 블록 핸들러를 처리하는 연산들은 스토리지 장치(100) 내의 간접 액세스 모듈에 의해 수행될 수 있다. 간접 액세스 모듈은 RocksDB와 호환될 수 있다. 호스트 장치(11)로부터 수신된 요청의 액세스 인자는 푸터의 메타인덱스 핸들러 및 인댁스 핸들러를 처리하는데 사용될 수 있다.Operations in which the storage device 100 processes the index handler, the metaindex handler, the data block handler, and the metadata block handler may be performed by an indirect access module in the storage device 100 . The indirect access module can be compatible with RocksDB. The access factor of the request received from the host device 11 may be used to process the metaindex handler and index handler of the footer.

도 8은 본 개시의 일부 실시 예들에 따른 스토리지 장치의 블록도이다. 도 8을 참조하면, 스토리지 장치(100)의 블록도가 도시된다. 스토리지 장치(100)는 도 1, 도 5, 도 6, 및 도 7의 스토리지 장치(100)에 대응할 수 있다.8 is a block diagram of a storage device according to some embodiments of the present disclosure. Referring to FIG. 8 , a block diagram of the storage device 100 is shown. The storage device 100 may correspond to the storage device 100 of FIGS. 1 , 5 , 6 , and 7 .

스토리지 장치(100)는 호스트 장치(11)와 통신할 수 있다. 스토리지 장치(100)는 호스트 장치(11)로부터 타겟 데이터의 액세스의 요청을 수신할 수 있다. 스토리지 장치는 타겟 데이터의 액세스의 요청에 따른 메타데이터 연산을 수행한 후, 타겟 데이터를 호스트 장치(11)에 제공할 수 있다.The storage device 100 may communicate with the host device 11 . The storage device 100 may receive a request for access of target data from the host device 11 . The storage device may provide the target data to the host device 11 after performing a metadata operation according to the access request of the target data.

스토리지 장치(100)는 제1 내지 제N 간접 액세스 모듈들(111-1~111-N), 모듈 관리자(112), 호스트 인터페이스 회로(117), 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 여기서, N은 임의의 자연수이다.The storage device 100 may include first to Nth indirect access modules 111-1 to 111-N, a module manager 112, a host interface circuit 117, and a non-volatile memory device 120. can Here, N is any natural number.

호스트 인터페이스 회로(117)는 호스트 장치(11) 및 스토리지 장치(100) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 호스트 인터페이스 회로(117)는 호스트 장치(11)와 통신할 수 있다. 호스트 인터페이스 회로(117)는 호스트 장치(11)로부터 수신된 타겟 데이터의 액세스의 요청을 모듈 관리자(112) 또는 대응하는 간접 액세스 모듈에 제공할 수 있다. 호스트 인터페이스 회로(117)는 대응하는 간접 액세스 모듈로부터 수신된 타겟 데이터를 호스트 장치(11)에 제공할 수 있다. The host interface circuit 117 may provide an interface between the host device 11 and the storage device 100 . For example, the host interface circuitry 117 may communicate with the host device 11 . The host interface circuit 117 may provide a request for access to the target data received from the host device 11 to the module manager 112 or a corresponding indirect access module. The host interface circuit 117 may provide the target data received from the corresponding indirect access module to the host device 11 .

비-휘발성 메모리 장치(120)는 제1 내지 제N 데이터 세트들(DS1~DSN)을 포함할 수 있다. 제1 내지 제N 데이터 세트들(DS1~DSN) 각각은 복수의 데이터 블록(DBK)들 및 복수의 메타데이터 블록(MBK)들을 포함할 수 있다. 제1 내지 제N 데이터 세트들(DS1~DSN) 각각은 호스트 장치(11)에 의해 관리되는 파일 또는 소프트웨어 프로그램에 대응할 수 있지만, 본 개시의 범위가 반드시 이에 제한되는 것은 아니다.The non-volatile memory device 120 may include first to Nth data sets DS1 to DSN. Each of the first to Nth data sets DS1 to DSN may include a plurality of data blocks DBK and a plurality of metadata blocks MBK. Each of the first to Nth data sets DS1 to DSN may correspond to a file or a software program managed by the host device 11, but the scope of the present disclosure is not limited thereto.

일부 실시 예들에서, 제1 내지 제N 간접 액세스 모듈들(111-1~111-N)은 각각 제1 내지 제N 데이터 세트들(DS1~DSN)을 관리할 수 있다. 예를 들어, 호스트 장치(11)의 운영 체제는 제1 애플리케이션 및 제2 애플리케이션을 실행할 수 있다. 제1 데이터 세트(DS1)는 제1 애플리케이션에 대응하고, 그리고 제2 데이터 세트(DS2)는 제2 애플리케이션에 대응할 수 있다. 제1 간접 액세스 모듈(111-1)은 제1 애플리케이션에 관한 제1 데이터 세트(DS1)를 관리(예를 들어, 제1 데이터 세트(DS1)에 포함된 데이터에 대한 액세스를 관리)할 수 있다. 제2 간접 액세스 모듈(111-2)은 제2 애플리케이션에 관한 제2 데이터 세트(DS2)를 관리(예를 들어, 제2 데이터 세트(DS2)에 포함된 데이터에 대한 액세스를 관리)할 수 있다.In some embodiments, the first to Nth indirect access modules 111-1 to 111-N may manage the first to Nth data sets DS1 to DSN, respectively. For example, the operating system of the host device 11 may execute the first application and the second application. The first data set DS1 may correspond to a first application, and the second data set DS2 may correspond to a second application. The first indirect access module 111-1 may manage the first data set DS1 related to the first application (eg, manage access to data included in the first data set DS1). . The second indirect access module 111-2 may manage the second data set DS2 related to the second application (eg, manage access to data included in the second data set DS2). .

보다 상세하게는, 타겟 데이터가 제1 데이터 세트(DS1)의 데이터 블록(DBK)에 포함된 경우, 제1 간접 액세스 모듈(111-1)은 호스트 장치(11)로부터 수신된 액세스의 요청에 기초하여, 메타데이터 연산을 수행하고, 데이터 블록(DBK)의 타겟 데이터를 페치하고, 그리고 페치된 타겟 데이터를 호스트 장치(11)에 제공할 수 있다. 이 때, 제2 내지 제N 간접 액세스 모듈(111-2~111-N)은 타겟 데이터에 관한 연산을 수행하지 않을 수 있다. 즉, 스토리지 장치(100)는 프로그램 또는 파일을 개별적으로 관리하는 간접 액세스 모듈을 포함할 수 있다.More specifically, when the target data is included in the data block DBK of the first data set DS1, the first indirect access module 111-1 based on the access request received from the host device 11 Thus, it is possible to perform metadata operations, fetch target data of the data block DBK, and provide the fetched target data to the host device 11 . At this time, the second to Nth indirect access modules 111-2 to 111-N may not perform an operation on the target data. That is, the storage device 100 may include an indirect access module that individually manages programs or files.

도 9는 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다. 도 9를 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법이 설명된다. 스토리지 장치는 호스트 장치와 통신할 수 있다. 스토리지 장치는 도 1, 도 5, 도 6, 도 7, 및 도 8의 스토리지 장치(100)에 대응할 수 있다.9 is a flowchart illustrating a method of operating a storage device according to some embodiments of the present disclosure. Referring to FIG. 9 , a method of operating a storage device according to some embodiments of the present disclosure will be described. A storage device may communicate with a host device. The storage device may correspond to the storage device 100 of FIGS. 1 , 5 , 6 , 7 , and 8 .

S110 단계에서, 스토리지 장치는 호스트 장치로부터 타겟 데이터의 액세스의 요청을 수신할 수 있다. 타겟 데이터의 액세스는 타겟 데이터로의 직접 액세스 또는 타겟 데이터에 대응하는 메타데이터로의 간접 액세스를 포함할 수 있다. 타겟 데이터는 스토리지 장치 내의 데이터 블록에 저장된 데이터일 수 있다.In step S110, the storage device may receive a request for access to target data from the host device. Access to the target data may include direct access to the target data or indirect access to metadata corresponding to the target data. The target data may be data stored in a data block in the storage device.

S120 단계에서, 스토리지 장치는 S110 단계의 요청에 기초하여, 간접 액세스 모듈을 실행할 수 있다. 예를 들어, 스토리지 장치는 프로세서, 휘발성 메모리 장치, 및 비-휘발성 메모리 장치를 포함할 수 있다. 프로세서가 비-휘발성 메모리 장치에 저장된 명령어들을 실행함으로써, 간접 액세스 모듈이 실행될 수 있다.In step S120, the storage device may execute an indirect access module based on the request in step S110. For example, the storage device may include a processor, a volatile memory device, and a non-volatile memory device. The indirect access module may be executed by a processor executing instructions stored in the non-volatile memory device.

S130 단계에서, 스토리지 장치의 간접 액세스 모듈은 요청의 액세스 인자에 기초하여 타겟 데이터의 위치를 나타내는 타겟 어드레스를 결정할 수 있다. 예를 들어, 호스트 장치로부터 수신된 요청은 액세스 인자를 포함할 수 있다. 액세스 인자는 타겟 데이터 또는 타겟 데이터에 대응하는 메타데이터를 탐색하는데 필요한 정보를 포함할 수 있다. 예를 들어, 액세스 인자는 타겟 데이터의 식별자, 간접 레이어 정보, 및 반환 정보 등을 포함할 수 있다.In operation S130 , the indirect access module of the storage device may determine a target address representing the location of target data based on the access factor of the request. For example, a request received from a host device may include an access factor. The access factor may include information necessary to search for target data or metadata corresponding to the target data. For example, the access factor may include an identifier of target data, indirect layer information, and return information.

스토리지 장치는 요청에 포함된 액세스 인자에 기초하여, 메타데이터 블록 내의 메타데이터를 페치할 수 있다. 스토리지 장치는 페치된 메타데이터에 기초하여, 타겟 데이터의 위치를 나타내는 타겟 어드레스를 결정할 수 있다. 이 때, 스토리지 장치는 호스트 장치의 개입 없이, 자체적으로 메타데이터에 기초하여 타겟 어드레스를 결정하므로, 호스트 장치 및 스토리지 장치 사이의 I/O 로드를 야기하지 않을 수 있다.The storage device may fetch metadata within the metadata block based on the access factor included in the request. The storage device may determine a target address indicating a location of target data based on the fetched metadata. In this case, since the storage device determines the target address based on metadata on its own without intervention of the host device, an I/O load between the host device and the storage device may not be caused.

S140 단계에서, 스토리지 장치의 간접 액세스 모듈은 타겟 어드레스에 기초하여 데이터 블록에 액세스할 수 있다. 액세스된 데이터 블록은 S110 단계에서 요청된 타겟 데이터를 포함할 수 있다. 이 때, 스토리지 장치는 호스트 장치의 개입 없이, S130 단계에서 결정된 어드레스에 기초하여 타겟 데이터를 포함하는 데이터 블록에 액세스할 수 있다. In step S140, the indirect access module of the storage device may access the data block based on the target address. The accessed data block may include target data requested in step S110. In this case, the storage device may access the data block including the target data based on the address determined in step S130 without intervention of the host device.

S150 단계에서, 스토리지 장치의 간접 액세스 모듈은 액세스된 데이터 블록 내의 타겟 데이터를 호스트 장치에 제공할 수 있다. 즉, 호스트 장치는 S110 단계에서 요청을 제공하고 S150 단계에서 타겟 데이터를 수신하는 I/O 동작에 기초하여 타겟 데이터를 획득할 수 있다. In step S150, the indirect access module of the storage device may provide target data within the accessed data block to the host device. That is, the host device may acquire target data based on an I/O operation of providing a request in step S110 and receiving target data in step S150.

일부 실시 예들에서, 간접 액세스 모듈은 액세스 인자에 포함된 반환 정보에 기초하여 타겟 데이터를 반환할지 또는 타겟 데이터를 포함하는 데이터 블록을 반환할지 여부를 결정할 수 있다. 간접 액세스 모듈은 반환 정보에 기초하여, S140 단계에서 액세스된 데이터 블록 또는 데이터 블록 내의 타겟 데이터를 호스트 장치에 제공할 수 있다.In some embodiments, the indirect access module may determine whether to return target data or a data block including target data based on return information included in an access factor. Based on the return information, the indirect access module may provide the accessed data block or target data within the data block to the host device in step S140.

도 10은 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다. 도 10을 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법이 설명된다. 스토리지 장치는 호스트 장치와 통신할 수 있다. 스토리지 장치는 도 1, 도 5, 도 6, 도 7, 및 도 8의 스토리지 장치(100)에 대응할 수 있다. S210 단계는 도 9의 S110 단계와 유사하므로, 이에 대한 상세한 설명은 생략된다.10 is a flowchart illustrating a method of operating a storage device according to some embodiments of the present disclosure. Referring to FIG. 10 , a method of operating a storage device according to some embodiments of the present disclosure will be described. A storage device may communicate with a host device. The storage device may correspond to the storage device 100 of FIGS. 1 , 5 , 6 , 7 , and 8 . Since step S210 is similar to step S110 of FIG. 9 , a detailed description thereof will be omitted.

S220 단계에서, 스토리지 장치는 비-휘발성 메모리 장치 내에 간접 액세스 모듈이 저장되었는지 여부를 결정할 수 있다. 예를 들어, 스토리지 장치는 비-휘발성 메모리 장치 및 프로세서를 포함할 수 있다. 프로세서가 비-휘발성 메모리 장치에 저장된 명령어들을 실행함으로써, 간접 액세스 모듈이 구현되거나 또는 실행될 수 있다. 그러나, 비-휘발성 메모리 장치 내에 아직 간접 액세스 모듈이 저장되지 않았으면, 간접 액세스 모듈을 다운로드하는 동작이 더 요구될 수 있다.In step S220, the storage device may determine whether the indirect access module is stored in the non-volatile memory device. For example, the storage device may include a non-volatile memory device and a processor. The indirect access module may be implemented or executed by a processor executing instructions stored in the non-volatile memory device. However, if the indirect access module is not yet stored in the non-volatile memory device, an operation of downloading the indirect access module may be further requested.

S220 단계에서 간접 액세스 모듈이 저장되지 않은 것으로 결정되면, 스토리지 장치는 S221 단계를 수행할 수 있다. S220 단계에서 간접 액세스 모듈이 저장된 것으로 결정되면, 스토리지 장치는 S222 단계를 수행할 수 있다.If it is determined in step S220 that the indirect access module is not stored, the storage device may perform step S221. If it is determined in step S220 that the indirect access module is stored, the storage device may perform step S222.

S221 단계에서, 스토리지 장치는 간접 액세스 모듈을 다운로드할 수 있다. 예를 들어, 스토리지 장치는 호스트 장치로부터 간접 액세스 모듈을 다운로드할 수 있다. 간접 액세스 모듈은 스토리지 장치의 비-휘발성 메모리 장치에 명령어로서 저장될 수 있다.In step S221, the storage device may download the indirect access module. For example, the storage device may download the indirect access module from the host device. The indirect access module may be stored as a command in a non-volatile memory device of a storage device.

S222 단계에서, 스토리지 장치는 간접 액세스 모듈이 로드되었는지 여부를 결정할 수 있다. 예를 들어, 스토리지 장치는 비-휘발성 메모리 장치, 휘발성 메모리 장치, 및 프로세서를 포함할 수 있다. 비-휘발성 메모리 장치는 간접 액세스 모듈에 대응하는 명령어들을 포함할 수 있다. 명령어들은 기존에 저장된 명령어들이거나, 또는 S221 단계를 통해 다운로드된 명령어들일 수 있다. 프로세서는 비-휘발성 메모리 장치에 저장된 명령어들을 실행함으로써, 간접 액세스 모듈을 휘발성 메모리 장치에 로드할 수 있다. 휘발성 메모리 장치에 로드된 간접 액세스 모듈은 호스트 장치로부터 수신된 요청을 처리할 수 있다. 즉, 비-휘발성 메모리 장치는 펌웨어 메모리로 사용될 수 있고, 휘발성 메모리 장치는 메인 메모리로 사용될 수 있다.In step S222, the storage device may determine whether the indirect access module is loaded. For example, the storage device may include a non-volatile memory device, a volatile memory device, and a processor. The non-volatile memory device may include instructions corresponding to the indirect access module. Commands may be previously stored commands or commands downloaded through step S221. The processor may load the indirect access module into the volatile memory device by executing instructions stored in the non-volatile memory device. The indirect access module loaded into the volatile memory device may process requests received from the host device. That is, the non-volatile memory device may be used as a firmware memory, and the volatile memory device may be used as a main memory.

S222 단계에서 간접 액세스 모듈이 로드되지 않은 것으로 결정되면, 스토리지 장치는 S223 단계를 수행할 수 있다. S222 단계에서 간접 액세스 모듈이 로드된 것으로 결정되면, 스토리지 장치는 S224 단계를 수행할 수 있다.If it is determined in step S222 that the indirect access module is not loaded, the storage device may perform step S223. If it is determined in step S222 that the indirect access module is loaded, the storage device may perform step S224.

S223 단계에서, 스토리지 장치는 간접 액세스 모듈을 휘발성 메모리 장치에 로드할 수 있다.In step S223, the storage device may load the indirect access module into the volatile memory device.

S224 단계에서, 스토리지 장치는 사전-로드된(pre-loaded) 간접 액세스 모듈을 사용할 수 있다. 즉, 간접 액세스 모듈이 이미 휘발성 메모리 장치에 로드되었으므로, 간접 액세스 모듈을 다시 로드할 필요 없이, 기존에 로드된 간접 액세스 모듈을 사용할 수 있다. In step S224, the storage device may use a pre-loaded indirect access module. That is, since the indirect access module has already been loaded into the volatile memory device, the previously loaded indirect access module can be used without the need to load the indirect access module again.

도 11은 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다. 도 11을 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법이 설명된다. 스토리지 장치는 호스트 장치와 통신할 수 있다. 스토리지 장치는 도 1, 도 5, 도 6, 도 7, 및 도 8의 스토리지 장치(100)에 대응할 수 있다. S320 단계는 도 9의 S120 단계와 유사하므로, 이에 대한 상세한 설명은 생략된다. 스토리지 장치는 간접 액세스 모듈을 포함할 수 있다.11 is a flowchart illustrating a method of operating a storage device according to some embodiments of the present disclosure. Referring to FIG. 11 , a method of operating a storage device according to some embodiments of the present disclosure will be described. A storage device may communicate with a host device. The storage device may correspond to the storage device 100 of FIGS. 1 , 5 , 6 , 7 , and 8 . Since step S320 is similar to step S120 of FIG. 9 , a detailed description thereof will be omitted. A storage device may include an indirect access module.

S310 단계에서, 스토리지 장치는 호스트 장치로부터 타겟 데이터의 액세스의 요청을 수신할 수 있다. 예를 들어, 액세스의 요청은 액세스 인자를 포함할 수 있다. 액세스 인자는 간접 레이어 정보를 포함할 수 있다. 간접 레이어 정보는 타겟 데이터의 액세스를 위한 메타데이터가 위치한 제1 간접 레이어를 가리킬 수 있다.In step S310, the storage device may receive a request for access to target data from the host device. For example, a request for access may include an access factor. The access factor may include indirect layer information. The indirect layer information may indicate a first indirect layer in which metadata for accessing target data is located.

이 때, 제1 간접 레이어는 스토리지 장치가 지원하는 복수의 간접 레이어들 중 하나를 지칭할 뿐, 최상위 간접 레이어 또는 최하위 간접 레이어를 지칭할 수도 있지만, 반드시 최상위 간접 레이어 또는 최하위 간접 레이어를 지칭하는 것으로 의도되지 않는다.In this case, the first indirect layer refers to only one of a plurality of indirect layers supported by the storage device, may refer to the highest indirect layer or the lowest indirect layer, but must refer to the highest indirect layer or the lowest indirect layer. not intended

일부 실시 예들에서, 스토리지 장치는 복수의 간접 레이어들 중 최상위 간접 레이어가 아닌 다른 간접 레이어부터 메타데이터 연산을 시작할 수 있다. 예를 들어, S310 단계에서 제1 간접 레이어는 스토리지 장치가 지원하는 복수의 간접 레이어들 중 최상위 간접 레이어가 아닐 수 있다. 즉, 호스트 장치는 캐시된 메타데이터에 기초하여, 중간의 간접 레이어로부터 타겟 데이터를 요청할 수 있다.In some embodiments, the storage device may start a metadata operation from an indirect layer other than the highest indirect layer among the plurality of indirect layers. For example, in step S310, the first indirect layer may not be the highest indirect layer among the plurality of indirect layers supported by the storage device. That is, the host device may request target data from an intermediate indirect layer based on the cached metadata.

S330 단계에서, 스토리지 장치의 간접 액세스 모듈은 S310 단계에서 수신된 액세스 인자의 간접 레이어 정보에 기초하여 제1 간접 레이어로부터 제1 메타데이터를 페치할 수 있다. 제1 메타데이터는 제2 간접 레이어에 포함된 제2 메타데이터의 위치 또는 제2 간접 레이어에 포함된 제3 메타데이터의 위치를 가리킬 수 있다. 제2 간접 레이어는 제1 간접 레이어보다 낮은 레이어일 수 있다. 예를 들어, 제2 간접 레이어는 제1 간접 레이어보다 데이터 레이어에 가까울 수 있다. 데이터 레이어는 S310 단계에서 요청된 타겟 데이터를 포함할 수 있다.In step S330, the indirect access module of the storage device may fetch first metadata from the first indirect layer based on the indirect layer information of the access factor received in step S310. The first metadata may indicate a location of second metadata included in the second indirect layer or a location of third metadata included in the second indirect layer. The second indirect layer may be a layer lower than the first indirect layer. For example, the second indirect layer may be closer to the data layer than the first indirect layer. The data layer may include target data requested in step S310.

S331 단계에서, 스토리지 장치의 간접 액세스 모듈은 제1 메타데이터에 의해 지시되는 제2 간접 레이어가 최하위 간접 레이어인지 여부를 결정할 수 있다. 최하위 간접 레이어는 데이터 레이어와의 직접적인 매핑을 제공하는 레이어일 수 있다. 예를 들어, 최하위 간접 레이어 내의 메타데이터는 데이터 레이어 내의 데이터의 어드레스를 가리킬 수 있다.In step S331, the indirect access module of the storage device may determine whether the second indirect layer indicated by the first metadata is the lowest indirect layer. The lowest indirect layer may be a layer providing a direct mapping with the data layer. For example, metadata in the lowest indirect layer may indicate the address of data in the data layer.

S331 단계에서 제2 간접 레이어가 최하위 간접 레이어인 것으로 결정되면, 스토리지 장치는 S332 단계를 수행할 수 있다. S331 단계에서 제2 간접 레이어가 최하위 간접 레이어가 아닌 것으로 결정되면, 스토리지 장치는 S333 단계를 수행할 수 있다.When it is determined in step S331 that the second indirect layer is the lowest indirect layer, the storage device may perform step S332. If it is determined in step S331 that the second indirect layer is not the lowest indirect layer, the storage device may perform step S333.

S332 단계에서, 스토리지 장치의 간접 액세스 모듈은 제1 메타데이터에 기초하여 제2 간접 레이어로부터 제2 메타데이터를 페치할 수 있다. 스토리지 장치의 간접 액세스 모듈은 제2 메타데이터에 기초하여 타겟 어드레스를 결정할 수 있다. 예를 들어, 제2 간접 레이어는 최하위 간접 레이어일 수 있다. 스토리지 장치의 간접 액세스 모듈은 최하위 간접 레이어인 제2 간접 레이어 내의 제2 메타데이터에 기초하여, 타겟 데이터의 타겟 어드레스를 결정할 수 있다.In step S332, the indirect access module of the storage device may fetch second metadata from the second indirect layer based on the first metadata. The indirect access module of the storage device may determine the target address based on the second metadata. For example, the second indirect layer may be the lowest indirect layer. The indirect access module of the storage device may determine a target address of target data based on second metadata in a second indirect layer, which is a lowermost indirect layer.

S333 단계에서, 스토리지 장치의 간접 액세스 모듈은 제1 메타데이터에 기초하여 제2 간접 레이어로부터 제3 메타데이터를 페치할 수 있다. 스토리지 장치의 간접 액세스 모듈은 제3 메타데이터에 기초하여 제3 간접 레이어에 액세스할 수 있다. 제3 간접 레이어는 제2 간접 레이어보다 낮은 레이어일 수 있다. 예를 들어, 제3 간접 레이어는 제2 간접 레이어보다 데이터 레이어에 가까울 수 있다.In step S333, the indirect access module of the storage device may fetch third metadata from the second indirect layer based on the first metadata. The indirect access module of the storage device may access the third indirect layer based on the third metadata. The third indirect layer may be a layer lower than the second indirect layer. For example, the third indirect layer may be closer to the data layer than the second indirect layer.

일부 실시 예들에서, 스토리지 장치는 최하위 간접 레이어를 가리키는 간접 레이어 정보를 포함하는 액세스 인자를 수신할 수 있다. 예를 들어, S330 단계에서, 제1 간접 레이어는 최하위 간접 레이어일 수 있다. 제1 메타데이터는 타겟 데이터의 타겟 어드레스를 직접적으로 가리킬 수 있다. 이 경우, S331, S332, 및 S333 단계들은 생략되고, 스토리지 장치의 간접 액세스 모듈은 액세스 인자 및 제1 메타데이터에 기초하여 데이터 레이어 내의 타겟 데이터를 페치할 수 있다.In some embodiments, the storage device may receive an access factor including indirect layer information indicating a lowest indirect layer. For example, in step S330, the first indirect layer may be the lowest indirect layer. The first metadata may directly indicate a target address of the target data. In this case, steps S331, S332, and S333 are omitted, and the indirect access module of the storage device may fetch target data in the data layer based on the access factor and the first metadata.

도 12는 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다. 도 12를 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법이 설명된다. 스토리지 장치는 호스트 장치와 통신할 수 있다. 스토리지 장치는 도 1, 도 5, 도 6, 도 7, 및 도 8의 스토리지 장치(100)에 대응할 수 있다. S420, S430, 및 S440 단계들은 도 9의 S120, S130, 및 S140 단계들과 유사하므로, 이에 대한 상세한 설명은 생략된다. 스토리지 장치는 간접 액세스 모듈을 포함할 수 있다.12 is a flowchart illustrating a method of operating a storage device according to some embodiments of the present disclosure. Referring to FIG. 12 , a method of operating a storage device according to some embodiments of the present disclosure will be described. A storage device may communicate with a host device. The storage device may correspond to the storage device 100 of FIGS. 1 , 5 , 6 , 7 , and 8 . Since steps S420, S430, and S440 are similar to steps S120, S130, and S140 of FIG. 9, detailed descriptions thereof are omitted. A storage device may include an indirect access module.

S410 단계에서, 스토리지 장치는 호스트 장치로부터 타겟 데이터의 액세스의 요청을 수신할 수 있다. 액세스의 요청은 액세스 인자를 포함할 수 있다. 액세스 인자는 반환 정보를 포함할 수 있다. 반환 정보는 요청에 대응하여 호스트 장치로 반환될 데이터의 타입을 정의할 수 있다.In step S410, the storage device may receive a request for access to target data from the host device. A request for access may include an access factor. Access arguments may include return information. The return information may define the type of data to be returned to the host device in response to the request.

예를 들어, 반환 타입은 타겟 데이터를 반환할지 또는 타겟 데이터를 포함하는 데이터 블록을 반환할지 여부를 정의할 수 있다. 반환 타입은 타겟 데이터에 대응하는 메타데이터의 반환 여부를 정의할 수 있다. 메타데이터를 반환하는 경우, 반환 타입은 메타데이터를 반환할지 또는 메타데이터를 포함하는 메타데이터 블록을 반환할지 여부를 정의할 수 있다. 타겟 데이터를 획득하기 위해 복수의 메타데이터가 사용되는 경우, 반환 타입은 복수의 메타데이터 중 호스트 장치로 반환될 적어도 하나의 메타데이터, 및 반환될 적어도 하나의 메타데이터 자체가 반환될지 또는 대응하는 메타데이터 블록들을 반환할지 여부를 정의할 수 있다.For example, the return type can define whether to return the target data or a data block containing the target data. The return type may define whether metadata corresponding to target data is returned. In the case of returning metadata, the return type can define whether to return metadata or a metadata block containing metadata. When a plurality of metadata is used to obtain the target data, the return type determines whether at least one metadata to be returned to the host device among the plurality of metadata and at least one metadata itself to be returned are returned or the corresponding metadata is returned. You can define whether to return data blocks.

S450 단계에서, 스토리지 장치의 간접 액세스 모듈은 S440 단계에서 액세스된 데이터 블록을 페치하거나, 또는 데이터 블록 내의 타겟 데이터를 페치할 수 있다. 타겟 데이터는 S410 단계에서 요청된 데이터일 수 있다.In step S450, the indirect access module of the storage device may fetch the data block accessed in step S440 or target data in the data block. The target data may be data requested in step S410.

S451 단계에서, 스토리지 장치의 간접 액세스 모듈은 반환 정보에 기초하여 타겟 데이터를 반환할 수 있다. 예를 들어, 스토리지 장치의 간접 액세스 모듈은 반환 정보에 기초하여, S450 단계에서 페치된 데이터 블록 또는 S450 단계에서 페치된 타겟 데이터와 함께 일부 또는 모든 메타데이터를 호스트 장치에 제공할 수 있다.In step S451, the indirect access module of the storage device may return target data based on the return information. For example, the indirect access module of the storage device may provide some or all metadata together with the data block fetched in step S450 or the target data fetched in step S450 to the host device based on the returned information.

도 13은 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록도이다. 도 13을 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 시스템이 설명된다. 스토리지 시스템(20)은 도 1의 스토리지 시스템(10)에 대응할 수 있다. 스토리지 시스템(20)은 여러 스토리지 장치들을 포함하는 스토리지 박스로도 지칭될 수 있다.13 is a block diagram of a storage system according to some embodiments of the present disclosure. Referring to FIG. 13 , a storage system according to some embodiments of the present disclosure is described. The storage system 20 may correspond to the storage system 10 of FIG. 1 . The storage system 20 may also be referred to as a storage box including several storage devices.

스토리지 시스템(20)은 호스트 장치(11), 스토리지 박스 컨트롤러(21), PCIe 스위치(22), 및 복수의 스토리지 장치들(100~N00)을 포함할 수 있다. 호스트 장치(11)는 도 1의 호스트 장치(11)에 대응할 수 있다.The storage system 20 may include a host device 11 , a storage box controller 21 , a PCIe switch 22 , and a plurality of storage devices 100 to N00 . The host device 11 may correspond to the host device 11 of FIG. 1 .

스토리지 박스 컨트롤러(21)는 호스트 장치(11)와 통신할 수 있다. 스토리지 박스 컨트롤러(21)는 PCIe 스위치(22)를 통해 복수의 스토리지 장치들(100~N00)과 연결될 수 있다. 복수의 스토리지 장치들(100~N00) 각각은 데이터를 저장할 수 있다.The storage box controller 21 may communicate with the host device 11 . The storage box controller 21 may be connected to the plurality of storage devices 100 to N00 through the PCIe switch 22 . Each of the plurality of storage devices 100 to N00 may store data.

일부 실시 예들에서, 스토리지 박스 컨트롤러(21)는 적어도 하나의 간접 액세스 모듈 및 모듈 매니저를 포함할 수 있다. 모듈 매니저는 적어도 하나의 간접 액세스 모듈을 관리할 수 있다. 적어도 하나의 간접 액세스 모듈은 복수의 스토리지 장치들(100~N00)에 저장된 복수의 데이터 각각에 대한 메타데이터 연산을 보조할 수 있다.In some embodiments, the storage box controller 21 may include at least one indirect access module and a module manager. A module manager may manage at least one indirect access module. At least one indirect access module may assist metadata operation for each of a plurality of data stored in the plurality of storage devices 100 to N00.

즉, 스토리지 박스 컨트롤러(21)는 도 1의 스토리지 컨트롤러(110)와 유사하게 동작할 수 있고, 복수의 스토리지 장치들(100~N00) 각각은 도 1의 비-휘발성 메모리 장치(120)와 유사하게 동작할 수 있다.That is, the storage box controller 21 may operate similarly to the storage controller 110 of FIG. 1 , and each of the plurality of storage devices 100 to N00 may operate similarly to the non-volatile memory device 120 of FIG. 1 . can work

상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The foregoing are specific embodiments for carrying out the present invention. The present invention will include not only the above-described embodiments, but also embodiments that can be simply or easily changed in design. In addition, the present invention will also include techniques that can be easily modified and practiced using the embodiments. Therefore, the scope of the present invention should not be limited to the above-described embodiments and should not be defined by the following claims as well as those equivalent to the claims of this invention.

Claims (20)

호스트 장치와 통신하는 스토리지 장치의 동작하는 방법에 있어서:
상기 호스트 장치로부터 타겟 데이터의 액세스의 요청을 수신하는 단계;
상기 요청에 기초하여, 간접 액세스 모듈을 실행하는 단계;
상기 간접 액세스 모듈에 의해, 상기 요청의 액세스 인자에 기초하여 상기 타겟 데이터의 위치를 나타내는 타겟 어드레스를 결정하는 단계;
상기 간접 액세스 모듈에 의해, 상기 타겟 어드레스에 기초하여 데이터 블록에 액세스하는 단계; 및
상기 간접 액세스 모듈에 의해, 상기 액세스된 데이터 블록 또는 상기 액세스된 데이터 블록 내의 상기 타겟 데이터를 상기 호스트 장치에 제공하는 단계를 포함하는 방법.
A method of operating a storage device in communication with a host device comprising:
receiving a request for access to target data from the host device;
based on the request, executing an indirect access module;
determining, by the indirect access module, a target address indicating a location of the target data based on an access factor of the request;
accessing, by the indirect access module, a block of data based on the target address; and
and providing, by the indirect access module, the accessed data block or the target data in the accessed data block to the host device.
제 1 항에 있어서,
상기 스토리지 장치는, 상기 호스트 장치로부터 상기 타겟 어드레스를 수신하지 않고, 자체적으로 상기 액세스 인자로부터 상기 타겟 어드레스를 결정하는 방법.
According to claim 1,
The storage device determines the target address from the access factor by itself without receiving the target address from the host device.
제 1 항에 있어서,
상기 스토리지 장치는 프로세서 및 비-휘발성 메모리 장치를 포함하고, 그리고
상기 프로세서가 상기 비-휘발성 메모리 장치에 저장된 명령어들을 실행함으로써, 상기 간접 액세스 모듈은 상기 호스트 장치의 운영 체제와 통신하는 방법.
According to claim 1,
the storage device includes a processor and a non-volatile memory device; and
The indirect access module communicates with an operating system of the host device by the processor executing instructions stored in the non-volatile memory device.
제 1 항에 있어서,
상기 스토리지 장치는 비-휘발성 메모리 장치를 포함하고, 그리고
상기 요청에 기초하여, 상기 간접 액세스 모듈을 실행하는 단계는:
상기 스토리지 장치의 상기 비-휘발성 메모리 장치 내에 상기 간접 액세스 모듈이 저장되었는지 여부를 결정하는 단계;
상기 간접 액세스 모듈이 저장되지 않은 것으로 결정되면, 상기 호스트 장치로부터 상기 간접 액세스 모듈을 다운로드하는 단계; 및
상기 다운로드된 간접 액세스 모듈을 실행하는 단계를 포함하는 방법.
According to claim 1,
The storage device includes a non-volatile memory device, and
Based on the request, executing the indirect access module comprises:
determining whether the indirect access module is stored in the non-volatile memory device of the storage device;
downloading the indirect access module from the host device if it is determined that the indirect access module is not stored; and
and executing the downloaded indirect access module.
제 1 항에 있어서,
상기 스토리지 장치는 상기 간접 액세스 모듈이 저장된 비-휘발성 메모리 장치 및 휘발성 메모리 장치를 포함하고, 그리고
상기 요청에 기초하여, 상기 간접 액세스 모듈을 실행하는 단계는:
상기 휘발성 메모리 장치에 상기 간접 액세스 모듈이 로드되었는지 여부를 결정하는 단계;
상기 간접 액세스 모듈이 로드된 것으로 결정되면, 사전-로드된(pre-loaded) 간접 액세스 모듈을 사용하는 단계; 및
상기 간접 액세스 모듈이 로드되지 않은 것으로 결정되면, 상기 비-휘발성 메모리 장치에 저장된 상기 간접 액세스 모듈을 상기 휘발성 메모리 장치에 로드하는 단계를 포함하는 방법.
According to claim 1,
The storage device includes a non-volatile memory device and a volatile memory device in which the indirect access module is stored, and
Based on the request, executing the indirect access module comprises:
determining whether the indirect access module is loaded into the volatile memory device;
if the indirect access module is determined to be loaded, using a pre-loaded indirect access module; and
and if it is determined that the indirect access module is not loaded, loading the indirect access module stored in the non-volatile memory device into the volatile memory device.
제 1 항에 있어서,
상기 간접 액세스 모듈에 의해, 상기 요청의 상기 액세스 인자에 기초하여 상기 타겟 데이터의 위치를 나타내는 상기 타겟 어드레스를 결정하는 단계는:
상기 간접 액세스 모듈에 의해, 상기 액세스 인자에 기초하여 메타데이터 블록 내의 제1 메타데이터를 페치하는 단계; 및
상기 페치된 제1 메타데이터 및 상기 액세스 인자에 기초하여 상기 타겟 어드레스를 결정하는 단계를 포함하는 방법.
According to claim 1,
Determining, by the indirect access module, the target address indicating the location of the target data based on the access factor of the request comprises:
fetching, by the indirect access module, first metadata in a metadata block based on the access factor; and
determining the target address based on the fetched first metadata and the access factor.
제 1 항에 있어서,
상기 요청의 상기 액세스 인자는 제1 간접 레이어를 가리키는 간접 레이어 정보를 포함하고, 그리고
상기 간접 액세스 모듈에 의해, 상기 요청의 상기 액세스 인자에 기초하여 상기 타겟 데이터의 위치를 나타내는 상기 타겟 어드레스를 결정하는 단계는:
상기 간접 액세스 모듈에 의해, 상기 액세스 인자에 기초하여 상기 제1 간접 레이어로부터 제1 메타데이터를 페치하는 단계;
상기 제1 메타데이터에 의해 지시되는 제2 간접 레이어가 최하위 간접 레이어인지 여부를 결정하는 단계;
상기 제2 간접 레이어가 상기 최하위 간접 레이어인 것으로 결정되면, 상기 제2 간접 레이어로부터 제2 메타데이터를 페치하는 단계; 및
상기 페치된 제2 메타데이터 및 상기 액세스 인자에 기초하여 상기 타겟 어드레스를 결정하는 단계를 포함하는 방법.
According to claim 1,
The access factor of the request includes indirect layer information indicating a first indirect layer, and
Determining, by the indirect access module, the target address indicating the location of the target data based on the access factor of the request comprises:
fetching, by the indirect access module, first metadata from the first indirect layer based on the access factor;
determining whether a second indirect layer indicated by the first metadata is a lowest indirect layer;
fetching second metadata from the second indirect layer when it is determined that the second indirect layer is the lowest indirect layer; and
and determining the target address based on the fetched second metadata and the access factor.
제 7 항에 있어서,
상기 간접 액세스 모듈에 의해, 상기 요청의 상기 액세스 인자에 기초하여 상기 타겟 데이터의 위치를 나타내는 상기 타겟 어드레스를 결정하는 단계는:
상기 제2 간접 레이어가 상기 최하위 간접 레이어가 아닌 것으로 결정되면, 상기 제2 간접 레이어로부터 제3 메타데이터를 페치하는 단계; 및
상기 제3 메타데이터에 기초하여 제3 간접 레이어에 액세스하는 단계를 더 포함하는 방법.
According to claim 7,
Determining, by the indirect access module, the target address indicating the location of the target data based on the access factor of the request comprises:
fetching third metadata from the second indirect layer when it is determined that the second indirect layer is not the lowest indirect layer; and
and accessing a third indirect layer based on the third metadata.
제 1 항에 있어서,
상기 스토리지 장치는 데이터 레이어, 제1 간접 레이어, 및 제2 간접 레이어, 및 데이터 레이어를 포함하고, 상기 데이터 레이어는 상기 타겟 데이터를 포함하고, 상기 제1 간접 레이어는 상기 제1 메타데이터를 포함하고, 상기 제2 간접 레이어는 제2 메타데이터를 포함하고 그리고 상기 제1 간접 레이어보다 상기 데이터 레어어로부터 멀고, 그리고
상기 호스트 장치는, 상기 타겟 데이터의 상기 액세스의 상기 요청을 생성하기 전에, 상기 제2 메타데이터에 기초하여 상기 제1 메타데이터를 생성하고, 상기 제1 간접 레이어를 가리키는 간접 레이어 정보 및 상기 제1 메타 데이터를 포함하는 상기 액세스 인자를 생성하는 방법.
According to claim 1,
The storage device includes a data layer, a first indirect layer, a second indirect layer, and a data layer, the data layer including the target data, the first indirect layer including the first metadata, , the second indirect layer includes second metadata and is further from the data layer than the first indirect layer, and
The host device, before generating the request of the access of the target data, generates the first metadata based on the second metadata, and indirect layer information indicating the first indirect layer and the first A method of generating said access factor containing meta data.
제 1 항에 있어서,
상기 요청의 상기 액세스 인자는 반환 정보를 포함하고, 그리고
상기 간접 액세스 모듈에 의해, 상기 액세스된 데이터 블록 또는 상기 액세스된 데이터 블록 내의 상기 타겟 데이터를 상기 호스트 장치에 제공하는 단계는:
상기 간접 액세스 모듈에 의해, 상기 반환 정보에 기초하여, 상기 타겟 데이터에 대응하는 메타데이터를 반환할지 여부를 결정하는 단계;
상기 간접 액세스 모듈에 의해, 상기 메타데이터를 반환하기로 결정하면, 상기 반환 정보에 기초하여, 상기 메타데이터를 반환할지 또는 상기 메타데이터를 포함하는 메타데이터 블록을 반환할지 여부를 결정하는 단계; 및
상기 간접 액세스 모듈에 의해, 상기 반환 정보에 기초하여, 상기 타겟 데이터를 반환할지 또는 상기 타겟 데이터를 포함하는 상기 액세스된 데이터 블록을 반환할지 여부를 결정하는 단계를 포함하는 방법.
According to claim 1,
the access argument of the request includes return information; and
Providing, by the indirect access module, the accessed data block or the target data in the accessed data block to the host device:
determining, by the indirect access module, whether to return metadata corresponding to the target data based on the return information;
determining, by the indirect access module, whether to return the metadata or a metadata block including the metadata, based on the return information, if it is determined to return the metadata; and
and determining, by the indirect access module, based on the return information whether to return the target data or the accessed block of data containing the target data.
제 1 항에 있어서,
상기 간접 액세스 모듈은 리눅스 운영 체제와 호환되고, 상기 요청의 상기 액세스 인자는 아이노드(inode) 블록의 직접 포인터, 간접 포인터, 더블 간접 포인터, 및 트리플 간접 포인터 중 적어도 하나를 처리하는데 사용되는 방법.
According to claim 1,
wherein the indirect access module is compatible with the Linux operating system, and the access factor of the request is used to process at least one of a direct pointer, an indirect pointer, a double indirect pointer, and a triple indirect pointer of an inode block.
제 1 항에 있어서,
상기 간접 액세스 모듈은 RocksDB와 호환되고, 상기 요청의 상기 액세스 인자는 푸터(footer)의 메타인덱스 핸들러(metaindex handler) 및 인댁스 핸들러(index handler)를 처리하는데 사용되는 방법.
According to claim 1,
The indirect access module is compatible with RocksDB, and the access factor of the request is used to process a footer's metaindex handler and index handler.
호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작하는 방법에 있어서:
상기 호스트 장치에 의해, 타겟 데이터의 액세스의 요청을 제공하는 단계;
상기 스토리지 장치에 의해, 상기 요청에 기초하여 간접 액세스 모듈을 실행하는 단계;
상기 간접 액세스 모듈에 의해, 상기 요청의 액세스 인자에 기초하여 상기 타겟 데이터의 위치를 가리키는 타겟 어드레스를 결정하는 단계;
상기 간접 액세스 모듈에 의해, 상기 타겟 어드레스에 기초하여 데이터 블록에 액세스하는 단계; 및
상기 간접 액세스 모듈에 의해, 상기 액세스된 데이터 블록 또는 상기 액세스된 데이터 블록 내의 상기 타겟 데이터를 상기 호스트 장치에 제공하는 단계를 포함하는 방법.
A method of operating a storage system comprising a host device and a storage device:
providing, by the host device, a request for access to target data;
executing, by the storage device, an indirect access module based on the request;
determining, by the indirect access module, a target address indicating a location of the target data based on an access factor of the request;
accessing, by the indirect access module, a block of data based on the target address; and
and providing, by the indirect access module, the accessed data block or the target data in the accessed data block to the host device.
제 13 항에 있어서,
상기 스토리지 장치는 비-휘발성 메모리 장치 및 휘발성 메모리 장치를 포함하고, 그리고
상기 스토리지 장치에 의해, 상기 요청에 기초하여 상기 간접 액세스 모듈을 실행하는 단계는:
상기 스토리지 장치의 상기 비-휘발성 메모리 장치에 상기 간접 액세스 모듈이 저장되었는지 여부를 결정하는 단계;
상기 간접 액세스 모듈이 저장되지 않은 것으로 결정되면, 상기 호스트 장치로부터 상기 간접 액세스 모듈을 상기 비-휘발성 메모리 장치에 다운로드하는 단계;
상기 간접 액세스 모듈이 저장된 것으로 결정되면, 상기 휘발성 메모리 장치에 상기 간접 액세스 모듈이 로드되었는지 여부를 결정하는 단계;
상기 간접 액세스 모듈이 로드된 것으로 결정되면, 사전-로드된(pre-loaded) 간접 액세스 모듈을 사용하는 단계; 및
상기 간접 액세스 모듈이 로드되지 않은 것으로 결정되면, 상기 비-휘발성 메모리 장치에 저장된 상기 간접 액세스 모듈을 상기 휘발성 메모리 장치에 로드하는 단계를 포함하는 방법.
According to claim 13,
The storage device includes a non-volatile memory device and a volatile memory device, and
Executing, by the storage device, the indirect access module based on the request to:
determining whether the indirect access module is stored in the non-volatile memory device of the storage device;
if it is determined that the indirect access module is not stored, downloading the indirect access module from the host device to the non-volatile memory device;
determining whether the indirect access module is loaded in the volatile memory device when it is determined that the indirect access module is stored;
if the indirect access module is determined to be loaded, using a pre-loaded indirect access module; and
and if it is determined that the indirect access module is not loaded, loading the indirect access module stored in the non-volatile memory device into the volatile memory device.
복수의 데이터 세트들을 저장하도록 구성된 비-휘발성 메모리 장치;
상기 복수의 데이터 세트들 중 제1 데이터 세트를 관리하도록 구성된 제1 간접 액세스 모듈;
호스트 장치와 통신하도록 구성된 호스트 인터페이스 회로; 및
상기 호스트 장치로부터 상기 호스트 인터페이스 회로를 통해 제1 타겟 데이터의 액세스의 제1 요청을 수신하고, 상기 제1 요청에 기초하여 상기 제1 간접 액세스 모듈을 실행하도록 구성된 모듈 관리자를 포함하되,
상기 제1 데이터 세트는 상기 제1 타겟 데이터를 포함하는 제1 타겟 데이터 블록 및 제1 메타데이터를 포함하는 제1 메타데이터 블록을 포함하고, 그리고
상기 제1 간접 액세스 모듈은, 상기 모듈 관리자에 의해 실행되면:
상기 제1 요청의 제1 액세스 인자 및 상기 제1 메타데이터에 기초하여, 상기 제1 타겟 데이터의 위치를 나타내는 제1 타겟 어드레스를 결정하고;
상기 제1 타겟 어드레스에 기초하여 상기 제1 타겟 데이터 블록에 액세스하고; 그리고
상기 액세스된 제1 타겟 데이터 블록 또는 상기 액세스된 제1 타겟 데이터 블록 내의 상기 제1 타겟 데이터를 상기 호스트 인터페이스 회로에 제공하도록 더 구성된 스토리지 장치.
a non-volatile memory device configured to store a plurality of data sets;
a first indirect access module configured to manage a first data set of the plurality of data sets;
host interface circuitry configured to communicate with a host device; and
a module manager configured to receive a first request for access of first target data from the host device through the host interface circuit, and execute the first indirect access module based on the first request;
the first data set comprises a first target data block comprising the first target data and a first metadata block comprising first metadata; and
When the first indirect access module is executed by the module manager:
determine a first target address indicating a location of the first target data based on a first access factor of the first request and the first metadata;
access the first target data block based on the first target address; and
The storage device further configured to provide the accessed first target data block or the first target data in the accessed first target data block to the host interface circuitry.
제 15 항에 있어서,
상기 복수의 데이터 세트들 중 제2 데이터 세트를 관리하도록 구성된 제2 간접 액세스 모듈을 더 포함하되,
상기 모듈 관리자는 상기 호스트 장치로부터 상기 호스트 인터페이스 회로를 통해 제2 타겟 데이터의 액세스의 제2 요청을 수신하고, 상기 제2 요청에 기초하여 상기 제2 간접 액세스 모듈을 실행하도록 더 구성되고,
상기 제2 데이터 세트는 상기 제2 타겟 데이터를 포함하는 제2 타겟 데이터 블록 및 제2 메타데이터를 포함하는 제2 메타데이터 블록을 포함하고, 그리고
상기 제2 간접 액세스 모듈은, 상기 모듈 관리자에 의해 실행되면:
상기 제2 요청의 제2 액세스 인자 및 상기 제2 메타데이터에 기초하여, 상기 제2 타겟 데이터의 위치를 나타내는 제2 타겟 어드레스를 결정하고;
상기 제2 타겟 어드레스에 기초하여 상기 제2 타겟 데이터 블록에 액세스하고; 그리고
상기 액세스된 제2 타겟 데이터 블록 또는 상기 액세스된 제2 타겟 데이터 블록 내의 상기 제2 타겟 데이터를 상기 호스트 인터페이스 회로에 제공하도록 더 구성된 스토리지 장치.
According to claim 15,
Further comprising a second indirect access module configured to manage a second data set of the plurality of data sets;
the module manager is further configured to receive a second request for access to second target data from the host device through the host interface circuit, and execute the second indirect access module based on the second request;
the second data set comprises a second target data block comprising the second target data and a second metadata block comprising second metadata; and
When the second indirect access module is executed by the module manager:
determine a second target address indicating a location of the second target data based on a second access factor of the second request and the second metadata;
access the second target data block based on the second target address; and
The storage device further configured to provide the accessed second target data block or the second target data in the accessed second target data block to the host interface circuitry.
제 16 항에 있어서,
상기 호스트 장치의 운영 체제는 제1 애플리케이션 및 제2 애플리케이션을 실행하도록 구성되고, 그리고
상기 제1 데이터 세트는 상기 제1 애플리케이션에 대응하고, 상기 제2 데이터 세트는 상기 제2 애플리케이션에 대응하는 스토리지 장치.
17. The method of claim 16,
The operating system of the host device is configured to run a first application and a second application, and
The first data set corresponds to the first application, and the second data set corresponds to the second application.
제 15 항에 있어서,
상기 제1 데이터 세트는 제1 내지 제4 간접 레이어들 및 데이터 레이어를 포함하고, 상기 제4 간접 레이어는 상기 제1 메타데이터 블록을 포함하고, 상기 데이터 레이어는 상기 제1 타겟 데이터 블록을 포함하고, 상기 제1 메타데이터는 트리플 간접 포인터이고, 그리고
상기 제1 간접 액세스 모듈은, 상기 모듈 관리자에 의해 실행되면:
상기 제1 요청의 제1 액세스 인자 및 상기 트리플 간접 포인터에 기초하여, 상기 제3 간접 레이어에 액세스하고;
상기 제3 간접 레이어의 더블 간접 포인터에 기초하여, 상기 제2 간접 레이어에 액세스하고;
상기 제2 간접 레이어의 간접 포인터에 기초하여, 상기 제1 간접 레이어에 액세스하고; 그리고
상기 제1 간접 레이어의 직접 포인터에 기초하여, 상기 제1 타겟 어드레스를 결정하도록 더 구성된 스토리지 장치.
According to claim 15,
The first data set includes first to fourth indirect layers and a data layer, the fourth indirect layer includes the first metadata block, the data layer includes the first target data block, , the first metadata is a triple indirect pointer, and
When the first indirect access module is executed by the module manager:
access the third indirect layer based on the first access factor of the first request and the triple indirect pointer;
access the second indirect layer based on the double indirect pointer of the third indirect layer;
access the first indirect layer based on the indirect pointer of the second indirect layer; and
The storage device further configured to determine the first target address based on the direct pointer of the first indirect layer.
제 15 항에 있어서,
상기 모듈 관리자는:
상기 비-휘발성 메모리 장치 내에 상기 제1 간접 액세스 모듈이 저장되지 않았으면, 상기 호스트 장치로부터 상기 호스트 인터페이스 회로를 통해 상기 제1 간접 액세스 모듈을 다운로드하고;
상기 비-휘발성 메모리 장치 내에 상기 제1 간접 액세스 모듈이 저장되었으면, 상기 스토리지 장치의 휘발성 메모리 장치에 상기 제1 간접 액세스 모듈이 로드되었는지 여부를 결정하고;
상기 제1 간접 액세스 모듈이 로드된 것으로 결정되면, 사전-로드된(pre-loaded) 제1 간접 액세스 모듈을 사용하고; 그리고
상기 제1 간접 액세스 모듈이 로드되지 않은 것으로 결정되면, 상기 비-휘발성 메모리 장치에 저장된 상기 제1 간접 액세스 모듈을 상기 휘발성 메모리 장치에 로드하도록 더 구성된 스토리지 장치.
According to claim 15,
The module manager:
if the first indirect access module is not stored in the non-volatile memory device, downloading the first indirect access module from the host device through the host interface circuit;
if the first indirect access module is stored in the non-volatile memory device, determine whether the first indirect access module is loaded in the volatile memory device of the storage device;
if it is determined that the first indirect access module is loaded, use a pre-loaded first indirect access module; and
and load the first indirect access module stored in the non-volatile memory device into the volatile memory device when it is determined that the first indirect access module is not loaded.
제 15 항에 있어서,
상기 제1 요청의 상기 제1 액세스 인자는 반환 정보를 포함하고,
상기 제1 간접 액세스 모듈은, 상기 모듈 관리자에 의해 실행되면:
상기 반환 정보에 기초하여, 상기 제1 메타데이터를 반환할지 여부를 결정하고;
상기 제1 메타데이터를 반환하기로 결정하면, 상기 반환 정보에 기초하여, 상기 제1 메타데이터 블록을 반환할지 또는 상기 제1 메타데이터를 반환할지 여부를 결정하고; 그리고
상기 반환 정보에 기초하여, 상기 제1 타겟 데이터 블록을 반환할지 또는 상기 제1 타겟 데이터를 반환할지 여부를 결정하도록 더 구성된 스토리지 장치.
According to claim 15,
The first access factor of the first request includes return information;
When the first indirect access module is executed by the module manager:
determine whether to return the first metadata based on the return information;
if it is determined to return the first metadata, determine whether to return the first metadata block or the first metadata based on the return information; and
The storage device further configured to determine whether to return the first target data block or the first target data based on the return information.
KR1020210191465A 2021-12-29 2021-12-29 Storage device having an indirect access module, method of operating thereof, and method of operating storage system having the same KR20230101394A (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210191465A KR20230101394A (en) 2021-12-29 2021-12-29 Storage device having an indirect access module, method of operating thereof, and method of operating storage system having the same
US17/903,604 US12045483B2 (en) 2021-12-29 2022-09-06 Storage device including indirect access module, method of operating the same, and method of operating storage system including the same
EP22197140.1A EP4206937A1 (en) 2021-12-29 2022-09-22 Storage device including indirect access module, method of operating the same, and method of operating storage system including the same
CN202211274828.7A CN116414724A (en) 2021-12-29 2022-10-18 Storage device, method of operating storage device, and method of operating storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210191465A KR20230101394A (en) 2021-12-29 2021-12-29 Storage device having an indirect access module, method of operating thereof, and method of operating storage system having the same

Publications (1)

Publication Number Publication Date
KR20230101394A true KR20230101394A (en) 2023-07-06

Family

ID=86897699

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210191465A KR20230101394A (en) 2021-12-29 2021-12-29 Storage device having an indirect access module, method of operating thereof, and method of operating storage system having the same

Country Status (3)

Country Link
US (1) US12045483B2 (en)
KR (1) KR20230101394A (en)
CN (1) CN116414724A (en)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991862A (en) 1996-12-30 1999-11-23 Sun Microsystems, Inc. Modified indirect addressing for file system
US6697367B1 (en) * 2000-06-12 2004-02-24 Emc Corporation Multihop system calls
KR100422801B1 (en) 2001-06-04 2004-03-12 한국전자통신연구원 Method for deleting and adding of dynamic multi-level inode for Huge File Storage System
US8285967B1 (en) * 2009-06-30 2012-10-09 Emc Corporation Method for on-demand block map generation for direct mapped LUN
US8499138B2 (en) 2010-06-30 2013-07-30 International Business Machines Corporation Demand-based memory management of non-pagable data storage
US8918621B1 (en) 2011-09-29 2014-12-23 Emc Corporation Block address isolation for file systems
US20140188952A1 (en) 2012-12-31 2014-07-03 Praveen Killamsetti Reading data without an indirection logical reference identifier in a system that uses indirection access
US9547586B2 (en) 2013-01-03 2017-01-17 Macronix International Co., Ltd. Metadata containers with indirect pointers
JP6129416B2 (en) 2013-07-02 2017-05-17 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited Method and apparatus for file system virtualization, data storage system for file system virtualization, and file server for use in a data storage system
JP6265041B2 (en) 2014-05-15 2018-01-24 富士通株式会社 Compilation program, compilation method, and compilation apparatus
US10552374B2 (en) * 2017-03-31 2020-02-04 VMwre, Inc. Minimizing file creation and access times using skip optimization
US10509728B2 (en) * 2017-09-29 2019-12-17 Intel Corporation Techniques to perform memory indirection for memory architectures
KR20200017664A (en) 2018-08-09 2020-02-19 삼성전자주식회사 Method of accessing data in storage device, method of managing data in storage device and storage device performing the same
US20220413855A1 (en) * 2021-06-25 2022-12-29 Intel Corporation Cache support for indirect loads and indirect stores in graph applications
US20230205705A1 (en) * 2021-12-23 2023-06-29 Advanced Micro Devices, Inc. Approach for providing indirect addressing in memory modules

Also Published As

Publication number Publication date
US20230205440A1 (en) 2023-06-29
US12045483B2 (en) 2024-07-23
CN116414724A (en) 2023-07-11

Similar Documents

Publication Publication Date Title
KR102549611B1 (en) Storage device and event notivication method thereof
US20170364301A1 (en) Data deduplication
CN106354615B (en) Solid state disk log generation method and device
KR102553261B1 (en) Memory controller, storage device including the same, and operating method of the memory controller
KR102381343B1 (en) Storage Device and Method of Operating the Storage Device
US8589618B2 (en) Memory system comprising nonvolatile memory device and controller
US9423977B2 (en) Lock-free communication storage request reordering
KR102567224B1 (en) Data storage device and computing system including the same
US10445252B2 (en) Storage device and operating method performed by the same
US10719263B2 (en) Method of handling page fault in nonvolatile main memory system
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
KR20200137244A (en) Memory system and operating method thereof
US10162568B2 (en) Method for searching matching key of storage device and server system including the same
KR20200017664A (en) Method of accessing data in storage device, method of managing data in storage device and storage device performing the same
CN113805791A (en) Transferring data relocation information from a storage device to a host to improve system performance
US20190227738A1 (en) Integrated circuit memory devices with enhanced buffer memory utilization during read and write operations and methods of operating same
KR20100097959A (en) User device including flash memory storing index and index accessing method thereof
US11709781B2 (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
KR20230101394A (en) Storage device having an indirect access module, method of operating thereof, and method of operating storage system having the same
EP4206937A1 (en) Storage device including indirect access module, method of operating the same, and method of operating storage system including the same
US20200310873A1 (en) Controller and memory system including the same
KR102653017B1 (en) Nonvolatile memory devices and methods of controlling the same
KR20210085499A (en) Storage device and operating method thereof
US20240184454A1 (en) Storage device and operating method of the same
US20240012564A1 (en) Memory controller and storage device including the same