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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000010586 diagram Methods 0.000 description 19
- 102100034368 Potassium voltage-gated channel subfamily A member 1 Human genes 0.000 description 16
- 101710154114 Potassium voltage-gated channel subfamily A member 1 Proteins 0.000 description 16
- 238000012545 processing Methods 0.000 description 11
- 239000000872 buffer Substances 0.000 description 9
- 238000003672 processing method Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 101150095057 DPB2 gene Proteins 0.000 description 2
- 101150030825 DPB3 gene Proteins 0.000 description 2
- 101000648997 Homo sapiens Tripartite motif-containing protein 44 Proteins 0.000 description 2
- 102100028017 Tripartite motif-containing protein 44 Human genes 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details 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.
Description
본 개시는 스토리지 장치에 관한 것으로, 좀 더 상세하게는, 간접 액세스 모듈을 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법에 관한 것이다.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
호스트 장치(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트 장치(11)는 스토리지 장치(100)에 데이터를 저장하거나 또는 스토리지 장치(100)에 저장된 데이터를 읽을 수 있다. The
호스트 장치(11)는 사용자 인터페이스(12), 애플리케이션(13), 및 운영 체제(14)를 포함할 수 있다. 사용자 인터페이스(12)는 스토리지 시스템(10)의 사용자와의 인터페이스를 제공할 수 있다. 예를 들어, 사용자 인터페이스(12)는 터치스크린, 모니터, 마우스, 키보드, 마이크, 스피커 등과 같은 외부 장치를 통해 사용자와의 인터페이스를 제공할 수 있다.The
애플리케이션(13)은 특정 기능을 수행하도록 설계된 소프트웨어 프로그램일 수 있다. 예를 들어, 애플리케이션(13)은 워드프로세서, 데이터베이스 프로그램, 웹 브라우저, 이미지 편집 프로그램 등을 포함할 수 있다.
운영 체제(14)는 하드웨어 및 소프트웨어 사이의 인터페이스를 제공할 수 있다. 예를 들어, 운영 체제(14)는 애플리케이션(13)을 실행하고, 애플리케이션(13)에 리소스를 할당할 수 있다. 운영 체제(14)는 자체적인 동작 또는 애플리케이션(13)의 요청에 따라, 파일 시스템을 통해 파일을 관리할 수 있다. 예를 들어, 파일 시스템은 파일을 생성하고, 파일에 액세스하고, 파일을 열고, 파일을 변경하고, 파일을 제거하는 등의 동작을 체계적으로 관리할 수 있다. 파일은 일련의 데이터일 수 있다. 파일에 대응하는 일련의 데이터는 스토리지 장치(100)에 저장될 수 있다.
스토리지 장치(100)는 호스트 장치(11)로부터 수신된 데이터를 저장하거나, 또는 저장된 데이터를 호스트 장치(11)에 제공할 수 있다. 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. The
비-휘발성 메모리 장치(120)는 데이터를 저장할 수 있다. 스토리지 컨트롤러(110)는 비-휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 제어에 따라 동작할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 동작을 가리키는 커맨드(CMD), 및 데이터의 위치를 가리키는 어드레스(ADD)에 기초하여 비-휘발성 메모리 장치(120)에 데이터를 저장하거나, 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다.The
일부 실시 예들에서, 비-휘발성 메모리 장치(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
스토리지 컨트롤러(110)는 간접 액세스 모듈(111) 및 모듈 관리자(112)를 포함할 수 있다. 간접 액세스 모듈(111)은 운영 체제(14)의 파일 시스템의 동작을 보조할 수 있다. 일반적으로, 파일 시스템은 파일을 관리함에 따라, 타겟 데이터가 필요할 수 있다. 타겟 데이터는 데이터 블록에 포함될 수 있다. 타겟 데이터의 위치를 나타내는 정보(예를 들어, 포인터)는 메타데이터로서 메타데이터 블록에 포함될 수 있다.The
일반적인 파일 시스템은 타겟 데이터를 획득하기 위해, 순차적으로 메타데이터 블록에 접근하여 메타데이터를 읽고, 메타데이터로부터 타겟 데이터의 타겟 어드레스를 획득하고, 획득된 타겟 어드레스에 기초하여 데이터 블록의 타겟 데이터를 읽을 수 있다. 호스트 장치(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
본 개시의 실시 예에 따르면, 간접 액세스 모듈(111)은 호스트 장치(11)의 파일 시스템의 메타데이터 연산을 보조할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 호스트 장치(11)로부터 타겟 데이터의 액세스의 요청을 수신할 수 있다. 타겟 데이터의 액세스는 타겟 데이터에 대한 직접 액세스 및 간접 액세스를 포함할 수 있다. 예를 들어, 직접 액세스는 타겟 데이터가 저장된 데이터 블록에 액세스하는 동작일 수 있고, 간접 액세스는 타겟 어드레스를 가리키는 메타데이터가 저장된 메타데이터 블록에 액세스하는 동작일 수 있다.According to an embodiment of the present disclosure, the
액세스의 요청은 액세스 인자(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
간접 액세스 모듈(111)은 요청의 액세스 인자에 기초하여 메타데이터 블록의 메타데이터를 페치(fetch)할 수 있다. 간접 액세스 모듈(111)은 액세스 인자 및 페치된 메타데이터에 기초하여 타겟 어드레스를 결정할 수 있다. 간접 액세스 모듈(111)은 타겟 어드레스에 기초하여 데이터 블록 내의 타겟 데이터를 페치할 수 있다. 간접 액세스 모듈(111)은 타겟 데이터를 호스트 장치(11)에 반환할 수 있다. The
즉, 간접 액세스 모듈(111)은 일반적인 파일 시스템이 수행했던 메타데이터 연산을 대신 수행함으로써, 호스트 장치(11)가 요청한 타겟 데이터를 추가적인 I/O 없이 바로 제공할 수 있다. 호스트 장치(11)는 한 번의 요청 및 한 번의 응답에 의해 타겟 데이터를 획득할 수 있다. 간접 액세스 모듈(111)에 의해 I/O로드가 감소된 특징에 대한 보다 상세한 설명은 도 4 및 도 5를 참조하여 후술될 것이다.That is, the
모듈 관리자(112)는 간접 액세스 모듈(111)을 관리할 수 있다. 모듈 관리자(112)는 호스트 장치(11)로부터 수신된 액세스의 요청에 기초하여 간접 액세스 모듈(111)을 실행할 수 있다.The
간접 액세스 모듈(111) 및 모듈 관리자(112)는 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다. 예를 들어, 간접 액세스 모듈(111) 및 모듈 관리자(112)이 하드웨어로 구현되는 경우, 간접 액세스 모듈(111) 및 모듈 관리자(112)는 스토리지 컨트롤러(110) 내부에 별도의 모듈, 회로, 또는 칩의 형태로 제작될 수 있다.The
예를 들어, 간접 액세스 모듈(111) 및 모듈 관리자(112)이 소프트웨어로 구현되는 경우, 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110) 내의 읽기-전용 메모리(Read Only Memory; ROM)와 함께 펌웨어 메모리로 사용될 수 있다. 간접 액세스 모듈(111) 및 모듈 관리자(112)에 대응하는 명령어들은 비-휘발성 메모리 장치에 저장될 수 있고, 스토리지 컨트롤러(110)의 휘발성 메모리(예를 들어, 메인 메모리)에 로드됨으로써 호스트 장치(110)와 통신할 수 있다.For example, when the
비-휘발성 메모리 장치(120)는 메타데이터 블록 및 데이터 블록을 포함할 수 있다. 메타데이터 블록은 복수의 메타데이터를 포함할 수 있다. 메타데이터는 데이터의 타입, 위치, 액세스 방법, 식별 정보 등 데이터에 관한 다양한 정보 중 적어도 하나를 포함할 수 있다. 데이터 블록은 복수의 데이터를 포함할 수 있다. 데이터는 파일 시스템이 관리하는 파일에 대응할 수 있다. 예를 들어, 데이터 블록은 호스트 장치(11)가 요청한 타겟 데이터를 포함할 수 있다.The
일부 실시 예들에서, 메타데이터는 데이터의 위치를 나타낼 수 있다. 예를 들어, 메타데이터는 데이터의 어드레스를 포함하거나, 또는 데이터의 어드레스를 나타내는 다른 메타데이터의 어드레스를 포함할 수 있다. 데이터가 복수의 메타데이터에 의해 지시되는 구조는 멀티-레이어 구조로 지칭될 수 있다. 멀티-레이어 구조에 대한 상세한 설명은 도 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
도 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
일부 실시 예들에서, 간접 액세스 모듈(111) 및 모듈 관리자(112)는 소프트웨어로 구현될 수 있다. 보다 상세하게는, 스토리지 장치(100)는 펌웨어 메모리를 포함할 수 있다. 펌웨어 메모리는 스토리지 장치(100)가 동작하는데 필요한 다양한 정보를 명령어들의 형태로 저장할 수 있다. 프로세서(113)가 펌웨어 메모리에 저장된 명령어들을 실행함으로써(즉, 명령어들을 휘발성 메모리 장치(114)에 로드함으로써), 간접 액세스 모듈(111) 및 모듈 관리자(112)을 실행하거나 구현할 수 있다. 간접 액세스 모듈(111) 및 모듈 관리자(112)는 호스트 장치(11)의 운영 체제(14)와 무관하게 구현되므로, 다양한 종류의 운영 체제(14)와 호환될 수 있다. 그러나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니며, 간접 액세스 모듈(111) 및 모듈 관리자(112)는 별도의 하드웨어 장치로도 구현될 수 있거나, 또는 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다.In some embodiments,
프로세서(113)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. 휘발성 메모리 장치(114)는 스토리지 컨트롤러(110)의 메인 메모리, 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로 사용될 수 있다. 예를 들어, 휘발성 메모리 장치(114)는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등으로 구현될 수 있다. 일부 실시 예들에서, 휘발성 메모리 장치(114)에 로드된 간접 액세스 모듈(111)은 호스트 장치(11)로부터 수신된 타겟 데이터의 액세스의 요청을 처리할 수 있다. ROM(115)은 스토리지 컨트롤러(110)의 동작에 필요한 정보를 저장하는 읽기 전용 메모리로 사용될 수 있다. The
ECC 엔진(116)은 비-휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러를 검출하고 정정할 수 있다. 예를 들어, ECC 엔진(116)은 일정 수준의 에러 정정 능력을 가질 수 있다. ECC 엔진(116)은 에러 정정 능력을 초과하지 않는 데이터의 에러를 정정할 수 있고, 그리고 에러 정정 능력을 초과하는 에러 레벨(예를 들어, 플립된 비트들의 개수)을 갖는 데이터를 정정 불가능한 데이터로 처리할 수 있다.The
스토리지 컨트롤러(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
스토리지 컨트롤러(110)는 비-휘발성 메모리 인터페이스 회로(118)를 통해 비-휘발성 메모리 장치(120)와 통신할 수 있다. 일부 실시 예들에서, 비-휘발성 메모리 인터페이스 회로(118)는 낸드 인터페이스를 기반으로 구현될 수 있다.The
도 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
비-휘발성 메모리 장치(120)는 제어 로직(121), 전압 생성기(122), 행 디코더(123), 메모리 셀 어레이(124), 페이지 버퍼 유닛(125), 열 디코더(126), 및 I/O 회로(127)를 포함할 수 있다. 도 1의 메타데이터 블록 및 데이터 블록은 메모리 셀 어레이(124)에 저장될 수 있다.The
제어 로직(121)은 스토리지 컨트롤러(110)로부터 커맨드(CMD) 및 어드레스(ADD)를 수신할 수 있다. 커맨드(CMD)는 읽기, 쓰기, 및 소거 등과 같은 비-휘발성 메모리 장치(120)에서 수행될 동작을 지시하는 신호일 수 있다. 어드레스(ADD)는 행 어드레스(ADDR) 및 열 어드레스(ADDC)를 포함할 수 있다. 제어 로직(121)은 어드레스(ADD)에 기초하여 행 어드레스(ADDR) 및 열 어드레스(ADDC)를 생성할 수 있다.The
전압 생성기(122)는 제어 로직(121)의 제어에 따라, 행 디코더(123)를 통해 메모리 셀 어레이(124)에 인가되는 전압들을 제어할 수 있다. The
행 디코더(123)는 제어 로직(121)으로부터 행 어드레스(ADDR)를 수신할 수 있다. 행 디코더(123)는 스트링 선택 라인(SSL)들, 워드 라인(WL)들, 및 접지 선택 라인(GSL)들을 통해 메모리 셀 어레이(124)와 연결될 수 있다. 행 디코더(123)는 행 어드레스(ADDR)를 디코딩하고, 디코딩 결과 및 전압 생성기(122)로부터 수신된 전압에 기초하여 스트링 선택 라인(SSL)들, 워드 라인(WL)들, 및 접지 선택 라인(GSL)들에 인가되는 전압들을 제어할 수 있다.The
메모리 셀 어레이(124)는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀들 각각은 데이터에 대응하는 문턱 전압 레벨을 가질 수 있다. 메모리 셀들은 행 방향 및 열 방향으로 배열될 수 있다. 메모리 셀들 중 일부는 도 1의 메타데이터 블록 또는 데이터 블록에 대응할 수 있다. 메모리 셀들 중 다른 일부는 도 1에서 소프트웨어로 구현된 간접 액세스 모듈(111) 및 모듈 관리자(112)에 대응하는 명령어들을 저장할 수 있다. 일부 실시 예들에서, 메타데이터 블록 및 데이터 블록은 비-휘발성 메모리 장치(120)의 물리적 소거 단위일 수 있으나, 본 개시가 이에 제한되는 것은 아니며, 물리적 소거 단위는 페이지 단위, 워드 라인 단위, 서브 블록 단위 등으로 변경될 수 있다.The
페이지 버퍼 유닛(125)은 복수의 페이지 버퍼(PB)들을 포함할 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들을 통해 메모리 셀 어레이(124)와 연결될 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들의 전압을 감지함으로써, 메모리 셀 어레이(124)로부터 페이지 단위로 데이터를 읽을 수 있다. The
열 디코더(126)는 제어 로직(121)으로부터 열 어드레스(ADDC)를 수신할 수 있다. 열 디코더(126)는 열 어드레스(ADDC)를 디코딩하고, 디코딩 결과에 기초하여 페이지 버퍼 유닛(125)에 의해 읽어진 데이터를 I/O 회로(127)로 제공할 수 있다.The
열 디코더(126)는 데이터 라인(DL)들을 통해 I/O 회로(127)로부터 데이터를 수신할 수 있다. 열 디코더(126)는 제어 로직(121)으로부터 열 어드레스(ADDC)를 수신할 수 있다. 열 디코더(126)는 열 어드레스(ADDC)를 디코딩하고, 디코딩 결과에 기초하여 I/O 회로(127)로부터 수신된 데이터를 페이지 버퍼 유닛(125)에 제공할 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들을 통해 I/O 회로(127)로부터 제공된 데이터를 페이지 단위로 메모리 셀 어레이(124)에 저장할 수 있다.The
I/O 회로(127)는 데이터 라인(DL)들을 통해 열 디코더(126)와 연결될 수 있다. I/O 회로(127)는 스토리지 컨트롤러(110)로부터 수신된 데이터를 데이터 라인(DL)들을 통해 열 디코더(126)로 전달할 수 있다. I/O 회로(127)는 데이터 라인(DL)들을 통해 수신된 데이터를 스토리지 컨트롤러(110)로 출력할 수 있다.The I/
도 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
호스트 장치(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
스토리지 장치(100)는 간접 액세스 모듈(111)을 포함할 수 있다. 간접 액세스 모듈(111)은 호스트 장치(11)의 파일 시스템의 연산을 보조할 수 있다. 간접 액세스 모듈(111)은 도 1 및 도 2의 간접 액세스 모듈(111)에 대응할 수 있다. The
이하에서, 본 개시의 실시 예들에 따른 스토리지 시스템(10)이 타겟 데이터를 처리하는 방법이 설명된다. Hereinafter, a method of processing target data by the
제1 동작(①)에서, 호스트 장치(11)의 파일 시스템은 타겟 데이터의 액세스를 요청할 수 있다. 타겟 데이터의 액세스는 타겟 데이터에 대한 직접 액세스 및 간접 액세스를 포함할 수 있다. 예를 들어, 직접 액세스는 타겟 데이터가 저장된 데이터 블록에 액세스하는 동작일 수 있고, 간접 액세스는 타겟 어드레스를 가리키는 메타데이터가 저장된 메타데이터 블록에 액세스하는 동작일 수 있다. 타겟 데이터는 파일 시스템이 필요한 최종적인 데이터일 수 있다. In the first operation (①), the file system of the
호스트 장치(11)는 커맨드를 발행함으로써, 타겟 데이터의 액세스의 요청을 스토리지 장치(100)에 제공할 수 있다. 예를 들어, 타겟 데이터는 제1 데이터 블록(DBK1)의 제1 데이터(DT1)일 수 있다. (본 개시의 이해를 돕기 위해, 도 5에서, 타겟 데이터 및 이에 대응하는 메타데이터에 “TG”가 병기됨)The
제2 동작(②)에서, 스토리지 장치(100)의 간접 액세스 모듈(111)은 제1 동작(①)의 요청의 액세스 인자에 기초하여 메타데이터 블록에 액세스할 수 있다. 액세스 인자는 호스트 장치(11)로부터 수신되고, 타겟 데이터 또는 타겟 데이터에 대응하는 메타데이터를 탐색하는데 필요한 정보를 가리킬 수 있다. 예를 들어, 액세스 인자는 타겟 데이터의 식별자, 간접 레이어 정보, 및 반환 정보 등을 포함할 수 있다. In the second operation (②), the
예를 들어, 간접 액세스 모듈(111)은 요청의 액세스 인자에 기초하여 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)에 액세스할 수 있다. 제1 메타데이터(MD1)은 타겟 데이터에 대한 메타데이터일 수 있다.For example, the
제3 동작(③)에서, 스토리지 장치(100)의 간접 액세스 모듈(111)은 액세스 인자 및 메타데이터에 기초하여 타겟 데이터의 어드레스를 계산할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 제2 동작(②)을 통해 액세스된 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)를 페치할 수 있다. 간접 액세스 모듈(111)은 액세스 인자 및 제1 메타데이터(MD1)에 기초하여, 제1 데이터 블록(DBK1)의 제1 데이터(DT1)의 어드레스를 계산할 수 있다.In a third operation (③), the
제4 동작(④)에서, 간접 액세스 모듈(111)은 액세스 인자 및 제3 동작(③)에서 계산된 어드레스에 기초하여, 타겟 데이터를 갖는 데이터 블록에 액세스할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 제1 메타데이터 블록(MBK1)의 제1 메타데이터(MD1)로부터 계산된 어드레스에 기초하여 제1 데이터 블록(DBK1)의 제1 데이터(DT1)에 액세스할 수 있다.In the fourth operation (④), the
제5 동작(⑤)에서, 간접 액세스 모듈(111)은 제3 동작(③)에서 계산된 어드레스에 위치한 타겟 데이터를 페치할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 계산된 어드레스에 기초하여, 제4 동작(④)을 통해 액세스된 제1 데이터 블록(DBK1) 내의 제1 데이터(DT1)를 페치할 수 있다. In the fifth operation (⑤), the
일부 실시 예들에서, 간접 액세스 모듈(111)은 액세스 인자에 포함된 반환 타입에 기초하여, 타겟 데이터를 페치하거나, 또는 타겟 데이터를 포함하는 데이터 블록을 페치할 수 있다.In some embodiments, the
제6 동작(⑥)에서, 간접 액세스 모듈(111)은 제5 동작(⑤)을 통해 페치된 타겟 데이터를 호스트 장치(11)에 제공할 수 있다. 예를 들어, 간접 액세스 모듈(111)은 페치된 제1 데이터(DT1)를 호스트 장치(11)의 파일 시스템에 제공할 수 있다. 제6 동작(⑥)을 통해 제공되는 타겟 데이터는 제1 동작(①)의 요청에 대한 응답으로서 호스트 장치(11)에 제공될 수 있다.In the sixth operation (⑥), the
일부 실시 예들에서, 간접 액세스 모듈(111)은 액세스 인자에 포함된 반환 타입에 기초하여, 타겟 데이터를 반환하거나 또는 타겟 데이터를 포함하는 데이터 블록을 반환할지 여부를 결정할 수 있다. 간접 액세스 모듈(111)은 액세스 인자에 포함된 반환 타입에 기초하여, 메타데이터를 반환할지 여부를 결정할 수 있고, 그리고 메타데이터를 반환한다고 결정하면, 메타데이터를 반환할지 또는 메타데이터를 포함하는 메타데이터 블록을 반환할지 여부를 결정할 수 있다.In some embodiments, the
상술된 바와 같이, 본 개시의 실시 예들에 따르면, 스토리지 장치(100)의 간접 액세스 모듈(111)은 메타데이터를 처리할 수 있다. 스토리지 장치(100)는, 호스트 장치(11)의 개입 없이, 메타데이터를 페치하고, 메타데이터로부터 어드레스를 획득하고, 그리고 어드레스에 대응하는 데이터 블록에 액세스할 수 있다. 도 4의 일반적인 스토리지 시스템과 다르게, 메타데이터 연산을 위한 호스트 장치 및 스토리지 장치 사이의 I/O 로드가 감소됨에 따라, 데이터 블록의 액세스 속도가 향상된 스토리지 시스템(10)이 제공될 수 있다.As described above, according to embodiments of the present disclosure, the
도 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
호스트 장치(11)는 타겟 데이터의 액세스의 요청을 스토리지 장치(100)에 제공할 수 있다. 스토리지 장치(100)는 타겟 데이터의 액세스의 요청에 기초하여 타겟 데이터를 호스트 장치(11)에 제공할 수 있다.The
스토리지 장치(100)는 데이터 레이어, 제1 간접 레이어, 제2 간접 레이어, 제3 간접 레이어, 및 제4 간접 레이어를 포함할 수 있다. 데이터 레이어는 적어도 하나의 데이터 블록을 포함할 수 있다. 제1 내지 제4 간접 레이어들 각각은 적어도 하나의 메타데이터 블록을 포함할 수 있다. The
제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
스토리지 장치(100)는 호스트 장치(11)로부터 타겟 데이터의 액세스의 요청을 수신하면 아이노드 블록(INB)에 액세스할 수 있다. 스토리지 장치(100)는 아이노드 블록(INB)의 포인터에 기초하여 다른 포인터 또는 데이터에 액세스하고, 최종적인 타겟 데이터를 호스트 장치(11)로 반환할 수 있다. The
아이노드 블록(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
또는, 스토리지 장치(100)는 액세스 인자의 반환 정보에 기초하여, 트리플 간접 포인터를 포함하는 트리플 간접 포인터 블록, 더블 간접 포인터를 포함하는 더블 간접 포인터 블록, 간접 포인터를 포함하는 간접 포인터 블록, 직접 포인터를 포함하는 직접 포인터 블록, 및 타겟 데이터를 포함하는 데이터 블록을 호스트 장치(11)에 반환할 수 있다.Alternatively, the
일부 실시 예들에서, 스토리지 장치(100)는 아이노드 블록(INB)의 레이어보다 낮은 레이어에 대응하는 액세스의 요청을 수신할 수 있다. 예를 들어, 스토리지 장치(100)는 이전 타겟 데이터와 함께 대응하는 포인터들을 호스트 장치(11)에 반환할 수 있다. 호스트 장치(11)는 호스트 장치(11)의 메인 메모리 또는 캐시 메모리에 로드된 정보에 기초하여, 아이노드 블록(INB)의 포인터에 대응하는 어드레스 대신, 제1 간접 레이어의 포인터에 대응하는 어드레스를 요청의 액세스 인자의 일부로서 스토리지 장치(100)에 제공할 수 있다. 이 경우, 스토리지 장치(100)는 액세스 인자에 기초하여, 아이노드 블록(INB)부터 순차적으로 포인터를 처리하는 대신, 호스트 장치(11)로부터 수신된 어드레스에 기초하여 제1 간접 레이어부터 포인터 처리를 시작할 수 있다. In some embodiments, the
일부 실시 예들에서, 간접 레이어의 개수가 증가할수록 저장 용량이 증가하지만, 데이터 액세스가 지연될 수 있다. 예를 들어, 아이노드 블록(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
스토리지 장치(100)가 포인터를 처리하는 연산은 스토리지 장치(100) 내의 간접 액세스 모듈에 의해 수행될 수 있다. 예를 들어, 스토리지 장치(100)는 아이노드 블록(INB)에 대응하는 간접 액세스 모듈을 포함할 수 있다. 간접 액세스 모듈은 리눅스 운영 체제와 호환될 수 있다. 간접 액세스 모듈은 아이노드 블록(INB)으로부터 시작하는 파일 시스템의 포인터 연산을 지원할 수 있다. 호스트 장치(11)로부터 수신된 요청의 액세스 인자는 아이노드 블록(INB)의 직접 포인터, 간접 포인터, 더블 간접 포인터, 및 트리플 간접 포인터 중 적어도 하나를 처리하는데 사용될 수 있다. 예를 들어, 호스트로부터 수신된 액세스 인자는 처리될 포인터의 어드레스 및 포인터가 포함된 레이어의 정보를 포함할 수 있다.An operation in which the
도 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
호스트 장치(11)는 타겟 데이터의 액세스의 요청을 스토리지 장치(100)에 제공할 수 있다. 스토리지 장치(100)는 요청의 액세스 인자에 기초하여 타겟 데이터를 호스트 장치(11)에 제공할 수 있다. 예를 들어, 타겟 데이터는 제1 데이터 블록(DBK1)의 데이터(DT)일 수 있다. (본 개시의 이해를 돕기 위해, 도 7에서, 타겟 데이터에 “TG”가 병기됨)The
스토리지 장치(100)는 SST 파일을 포함할 수 있다. SST 파일은 푸터(footer), 인덱스 블록, 메타인덱스 블록, 제1 내지 제N 메타데이터 블록들(MBK1~MBKN), 및 제1 내지 제M 데이터 블록들(DBK1~DBKM)을 포함할 수 있다. 여기서, N 및 M은 임의의 자연수들이다.The
푸터는 메타인덱스 헨들러 및 인덱스 헨들러를 포함할 수 있다. 메타인덱스 헨들러는 메타데이터의 위치를 나타낼 수 있다. 인덱스 헨들러는 데이터 블록 핸들러의 위치를 나타낼 수 있다.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
제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
제1 동작(①)에서, 스토리지 장치(100)는 액세스의 요청에 기초하여 푸터에 액세스할 수 있다. 요청은 액세스 인자를 포함할 수 있다. 스토리지 장치(100)는 액세스 인자에 기초하여 푸터의 인덱스 헨들러를 참조하여 인덱스 블록에 액세스할 수 있다. 스토리지 장치(100)는 액세스 인자 및 액세스된 인덱스 블록 내의 데이터 블록 핸들러에 기초하여, 데이터(DT)를 포함하는 데이터 블록의 위치를 확인할 수 있다.In a first operation (①), the
제2 동작(②)에서, 스토리지 장치(100)는 액세스 인자에 기초하여 푸터의 메타인덱스 핸들러를 참조하여 메타인덱스 블록에 액세스할 수 있다.In the second operation (②), the
제3 동작(③)에서, 스토리지 장치(100)는 제2 동작(②)을 통해 액세스된 메타인덱스 블록 내의 메타데이터 블록 핸들러를 읽고, 액세스 인자 및 메타데이터 블록 핸들러에 기초하여 메타데이터 블록에 액세스할 수 있다. 스토리지 장치(100)는 액세스된 메타데이터 블록 내의 메타데이터를 처리할 수 있다. 예를 들어, 스토리지 장치(100)는 메타인덱스 블록 내의 메타인덱스 블록 핸들러를 참조하여, 제1 메타데이터 블록(MBK1)에 액세스할 수 있다. 스토리지 장치(100)는 제1 메타데이터 블록(MBK1)의 블룸 필터 정보에 기초하여, 타겟 데이터에 대응하는 키-값이 존재하는 것으로 결정할 수 있다.In the third operation (③), the
제4 동작(④)에서, 스토리지 장치(100)는 데이터 블록에 액세스할 수 있다. 예를 들어, 스토리지 장치(100)는 액세스 인자에 포함된 타겟 데이터 식별자(예를 들어, 타겟 데이터에 대응하는 기록 키), 제1 동작(①)에서 획득된 데이터(DT)의 위치, 및 제3 동작(③)에서 처리된 메타데이터에 기초하여, 제1 데이터 블록(DBK1)의 데이터(DT)에 액세스할 수 있다. 이 후, 스토리지 장치(100)는 제4 동작(④)을 통해 획득된 데이터(DT) 또는 데이터(DT)를 포함하는 제1 데이터 블록(DBK1)을 호스트 장치(11)에 제공할 수 있다.In a fourth operation (④), the
스토리지 장치(100)가 인덱스 핸들러, 메타인덱스 핸들러, 데이터 블록 핸들러, 및 메타데이터 블록 핸들러를 처리하는 연산들은 스토리지 장치(100) 내의 간접 액세스 모듈에 의해 수행될 수 있다. 간접 액세스 모듈은 RocksDB와 호환될 수 있다. 호스트 장치(11)로부터 수신된 요청의 액세스 인자는 푸터의 메타인덱스 핸들러 및 인댁스 핸들러를 처리하는데 사용될 수 있다.Operations in which the
도 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
스토리지 장치(100)는 호스트 장치(11)와 통신할 수 있다. 스토리지 장치(100)는 호스트 장치(11)로부터 타겟 데이터의 액세스의 요청을 수신할 수 있다. 스토리지 장치는 타겟 데이터의 액세스의 요청에 따른 메타데이터 연산을 수행한 후, 타겟 데이터를 호스트 장치(11)에 제공할 수 있다.The
스토리지 장치(100)는 제1 내지 제N 간접 액세스 모듈들(111-1~111-N), 모듈 관리자(112), 호스트 인터페이스 회로(117), 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 여기서, N은 임의의 자연수이다.The
호스트 인터페이스 회로(117)는 호스트 장치(11) 및 스토리지 장치(100) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 호스트 인터페이스 회로(117)는 호스트 장치(11)와 통신할 수 있다. 호스트 인터페이스 회로(117)는 호스트 장치(11)로부터 수신된 타겟 데이터의 액세스의 요청을 모듈 관리자(112) 또는 대응하는 간접 액세스 모듈에 제공할 수 있다. 호스트 인터페이스 회로(117)는 대응하는 간접 액세스 모듈로부터 수신된 타겟 데이터를 호스트 장치(11)에 제공할 수 있다. The
비-휘발성 메모리 장치(120)는 제1 내지 제N 데이터 세트들(DS1~DSN)을 포함할 수 있다. 제1 내지 제N 데이터 세트들(DS1~DSN) 각각은 복수의 데이터 블록(DBK)들 및 복수의 메타데이터 블록(MBK)들을 포함할 수 있다. 제1 내지 제N 데이터 세트들(DS1~DSN) 각각은 호스트 장치(11)에 의해 관리되는 파일 또는 소프트웨어 프로그램에 대응할 수 있지만, 본 개시의 범위가 반드시 이에 제한되는 것은 아니다.The
일부 실시 예들에서, 제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
보다 상세하게는, 타겟 데이터가 제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
도 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
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
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
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
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
스토리지 시스템(20)은 호스트 장치(11), 스토리지 박스 컨트롤러(21), PCIe 스위치(22), 및 복수의 스토리지 장치들(100~N00)을 포함할 수 있다. 호스트 장치(11)는 도 1의 호스트 장치(11)에 대응할 수 있다.The
스토리지 박스 컨트롤러(21)는 호스트 장치(11)와 통신할 수 있다. 스토리지 박스 컨트롤러(21)는 PCIe 스위치(22)를 통해 복수의 스토리지 장치들(100~N00)과 연결될 수 있다. 복수의 스토리지 장치들(100~N00) 각각은 데이터를 저장할 수 있다.The
일부 실시 예들에서, 스토리지 박스 컨트롤러(21)는 적어도 하나의 간접 액세스 모듈 및 모듈 매니저를 포함할 수 있다. 모듈 매니저는 적어도 하나의 간접 액세스 모듈을 관리할 수 있다. 적어도 하나의 간접 액세스 모듈은 복수의 스토리지 장치들(100~N00)에 저장된 복수의 데이터 각각에 대한 메타데이터 연산을 보조할 수 있다.In some embodiments, the
즉, 스토리지 박스 컨트롤러(21)는 도 1의 스토리지 컨트롤러(110)와 유사하게 동작할 수 있고, 복수의 스토리지 장치들(100~N00) 각각은 도 1의 비-휘발성 메모리 장치(120)와 유사하게 동작할 수 있다.That is, the
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.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.
상기 스토리지 장치는, 상기 호스트 장치로부터 상기 타겟 어드레스를 수신하지 않고, 자체적으로 상기 액세스 인자로부터 상기 타겟 어드레스를 결정하는 방법.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.
상기 스토리지 장치는 프로세서 및 비-휘발성 메모리 장치를 포함하고, 그리고
상기 프로세서가 상기 비-휘발성 메모리 장치에 저장된 명령어들을 실행함으로써, 상기 간접 액세스 모듈은 상기 호스트 장치의 운영 체제와 통신하는 방법.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.
상기 스토리지 장치는 비-휘발성 메모리 장치를 포함하고, 그리고
상기 요청에 기초하여, 상기 간접 액세스 모듈을 실행하는 단계는:
상기 스토리지 장치의 상기 비-휘발성 메모리 장치 내에 상기 간접 액세스 모듈이 저장되었는지 여부를 결정하는 단계;
상기 간접 액세스 모듈이 저장되지 않은 것으로 결정되면, 상기 호스트 장치로부터 상기 간접 액세스 모듈을 다운로드하는 단계; 및
상기 다운로드된 간접 액세스 모듈을 실행하는 단계를 포함하는 방법.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.
상기 스토리지 장치는 상기 간접 액세스 모듈이 저장된 비-휘발성 메모리 장치 및 휘발성 메모리 장치를 포함하고, 그리고
상기 요청에 기초하여, 상기 간접 액세스 모듈을 실행하는 단계는:
상기 휘발성 메모리 장치에 상기 간접 액세스 모듈이 로드되었는지 여부를 결정하는 단계;
상기 간접 액세스 모듈이 로드된 것으로 결정되면, 사전-로드된(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 메타데이터 및 상기 액세스 인자에 기초하여 상기 타겟 어드레스를 결정하는 단계를 포함하는 방법.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 메타데이터에 의해 지시되는 제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.
상기 간접 액세스 모듈에 의해, 상기 요청의 상기 액세스 인자에 기초하여 상기 타겟 데이터의 위치를 나타내는 상기 타겟 어드레스를 결정하는 단계는:
상기 제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 간접 레이어, 및 제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.
상기 요청의 상기 액세스 인자는 반환 정보를 포함하고, 그리고
상기 간접 액세스 모듈에 의해, 상기 액세스된 데이터 블록 또는 상기 액세스된 데이터 블록 내의 상기 타겟 데이터를 상기 호스트 장치에 제공하는 단계는:
상기 간접 액세스 모듈에 의해, 상기 반환 정보에 기초하여, 상기 타겟 데이터에 대응하는 메타데이터를 반환할지 여부를 결정하는 단계;
상기 간접 액세스 모듈에 의해, 상기 메타데이터를 반환하기로 결정하면, 상기 반환 정보에 기초하여, 상기 메타데이터를 반환할지 또는 상기 메타데이터를 포함하는 메타데이터 블록을 반환할지 여부를 결정하는 단계; 및
상기 간접 액세스 모듈에 의해, 상기 반환 정보에 기초하여, 상기 타겟 데이터를 반환할지 또는 상기 타겟 데이터를 포함하는 상기 액세스된 데이터 블록을 반환할지 여부를 결정하는 단계를 포함하는 방법.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.
상기 간접 액세스 모듈은 리눅스 운영 체제와 호환되고, 상기 요청의 상기 액세스 인자는 아이노드(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.
상기 간접 액세스 모듈은 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.
상기 스토리지 장치는 비-휘발성 메모리 장치 및 휘발성 메모리 장치를 포함하고, 그리고
상기 스토리지 장치에 의해, 상기 요청에 기초하여 상기 간접 액세스 모듈을 실행하는 단계는:
상기 스토리지 장치의 상기 비-휘발성 메모리 장치에 상기 간접 액세스 모듈이 저장되었는지 여부를 결정하는 단계;
상기 간접 액세스 모듈이 저장되지 않은 것으로 결정되면, 상기 호스트 장치로부터 상기 간접 액세스 모듈을 상기 비-휘발성 메모리 장치에 다운로드하는 단계;
상기 간접 액세스 모듈이 저장된 것으로 결정되면, 상기 휘발성 메모리 장치에 상기 간접 액세스 모듈이 로드되었는지 여부를 결정하는 단계;
상기 간접 액세스 모듈이 로드된 것으로 결정되면, 사전-로드된(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.
상기 복수의 데이터 세트들 중 제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.
상기 호스트 장치의 운영 체제는 제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.
상기 제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.
상기 모듈 관리자는:
상기 비-휘발성 메모리 장치 내에 상기 제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.
상기 제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.
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)
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 |
-
2021
- 2021-12-29 KR KR1020210191465A patent/KR20230101394A/en unknown
-
2022
- 2022-09-06 US US17/903,604 patent/US12045483B2/en active Active
- 2022-10-18 CN CN202211274828.7A patent/CN116414724A/en active Pending
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 |