Method of operating a storage controller, storage system and method of operating a storage system

By introducing an unloading manager and adaptive read request and reverse unloading operations for the storage controller, the problem of low efficiency in data-dependent read mode of the storage system is solved, achieving more efficient resource utilization and reduced latency, and improving the overall performance of the storage system.

CN122431592APending Publication Date: 2026-07-21SAMSUNG ELECTRONICS CO LTD +1
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
SAMSUNG ELECTRONICS CO LTD
Filing Date
2026-01-07
Publication Date
2026-07-21

AI Technical Summary

Technical Problem

Existing storage systems suffer from inefficiency and increased latency when handling workloads with data-dependent read patterns, especially when resources are insufficient and operations cannot be effectively offloaded, leading to performance degradation.

Method used

An unloading manager and a storage controller are introduced to dynamically manage read operations to optimize resource utilization through adaptive read requests and reverse unloading operations. The unloading manager generates metadata and decides whether to perform a second unloading operation based on the internal resource status, while the storage controller generates logical addresses based on unloading requests and performs corresponding operations.

Benefits of technology

By working together with the unloading manager and storage controller, the operational load of the host device is effectively distributed, latency is reduced, and the overall performance of the storage system is improved. In particular, when resources are insufficient, reverse unloading avoids increased latency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122431592A_ABST
    Figure CN122431592A_ABST
Patent Text Reader

Abstract

A method of operating a storage system, a method of operating a storage controller, and a storage system are provided. The method of operating a storage system includes receiving, by an offload manager, a read offload request for a workload having a data dependent read pattern; sending, by the offload manager, a first adaptive read request including metadata and a first address to a storage device based on the read offload request; performing, by the storage device, a first read operation corresponding to the first address, determining, by the storage device, whether to perform a second offload operation based on internal resources, when it is determined, by the storage device, to perform the second offload operation, generating a second address based on the metadata and first read data, and performing a second read operation corresponding to the second address; and when it is determined, by the storage device, not to perform the second offload operation, sending a first response including a reverse offload field indicating an activation value to the offload manager.
Need to check novelty before this filing date? Find Prior Art

Description

Cross-references to related applications

[0001] This application is based on and claims priority to Korean Patent Application No. 10-2025-0008325 filed on January 20, 2025, with the Korean Intellectual Property Office, and Korean Patent Application No. 10-2025-0078898 filed on June 16, 2025, the disclosures of each of which are incorporated herein by reference in their entirety. Technical Field

[0002] This disclosure relates to a method for operating a storage controller, a storage system, and a method for operating a storage system. Background Technology

[0003] Semiconductor memories are classified into volatile memory devices (such as static random access memory (SRAM) and dynamic RAM (DRAM)) whose stored data is destroyed when the power supply to them is cut off, and non-volatile memory devices (such as flash memory devices, phase change RAM (PRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM) and ferroelectric RAM (FRAM)) whose stored data is retained even when the power supply to them is cut off.

[0004] Storage devices are examples of various electronic devices. Storage devices can store and output data based on the operation of their constituent components, and thus can provide storage services to users. Storage devices can manage data independently, or they can manage data while communicating with other electronic devices.

[0005] A host device can be an electronic device that provides services to users by communicating with a storage device. The host device can send data to be stored in the storage device. Furthermore, the host device can manage the data to be stored in the storage device. Summary of the Invention

[0006] This disclosure relates to a semiconductor memory, and more specifically, to a method of operating a memory controller including an unloading engine, a memory system, and a method of operating the memory system.

[0007] This disclosure provides a method for operating a storage controller with improved performance, a storage system, and a method for operating a storage system.

[0008] According to one aspect of this disclosure, a method is provided for operating a storage system including a host device and a storage device, the host device including an unloading manager, the method comprising: obtaining a read unloading request for a workload having a data-dependent read pattern by the unloading manager; sending a first adaptive read request including metadata and a first address to the storage device based on the read unloading request by the unloading manager; performing a first read operation corresponding to the first address by the storage device based on the first adaptive read request; determining whether to perform a second unloading operation based on internal resources by the storage device, wherein when the storage device determines to perform the second unloading operation, a second address is generated based on metadata and first read data as a result of the first read operation, and a second read operation corresponding to the second address is performed; and when the storage device determines not to perform the second unloading operation, sending a first response including a reverse unloading field indicating an activation value to the unloading manager.

[0009] According to one aspect of this disclosure, a method for operating a storage controller is provided, the method comprising: receiving an adaptive read request including a first address and an address of host memory wherein metadata is stored; reading metadata from the address of the host memory; sending a first read command corresponding to the first address to a non-volatile memory device; receiving first read data corresponding to the first read command from the non-volatile memory device; determining, based on internal resources, whether to perform a second offload operation; when it is determined that the second offload operation should be performed, generating a second address based on the metadata and the first read data and performing a second read operation corresponding to the second address; when it is determined that the second offload operation should not be performed, sending a first response including a reverse offload field indicating an activation value to the host device; and sending a second response including a reverse offload field indicating a deactivation value and a version number field indicating a version number of the metadata to the host device, wherein the first adaptive read request is an offload request for a workload having a data-dependent read pattern.

[0010] According to one aspect of this disclosure, a storage system is provided, comprising: a host device including an offload manager; and a storage device including a storage controller and a non-volatile memory device, wherein the offload manager is configured to receive read offload requests for workloads having a data-dependent read pattern, and to send a first adaptive read request including metadata and a first address to the storage device based on the read offload requests, and the storage controller is configured to: perform a first read operation corresponding to the first address based on the first adaptive read request; determine whether to perform a second offload operation based on internal resources; when it is determined that the second offload operation should be performed, generate a second address based on metadata and first read data as a result of the first read operation, and perform a second read operation corresponding to the second address; and when it is determined that the second offload operation should not be performed, send a first response including a reverse offload field indicating an activation value to the offload manager. Attached Figure Description

[0011] The embodiments will become clearer from the following detailed description taken in conjunction with the accompanying drawings, in which: Figure 1 This is a block diagram illustrating a storage system according to an embodiment; Figure 2 This illustrates an embodiment. Figure 1 A diagram illustrating the software layer of a storage system; Figure 3 This shows the implementation details. Figure 1 A block diagram of the uninstallation manager and uninstallation engine; Figure 4 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of a method for a storage system; Figures 5A to 5C The operation according to the implementation method is shown respectively. Figure 1 A diagram illustrating an example of a storage system method; Figure 6 This is a diagram illustrating the metadata according to the implementation method; Figure 7 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of the uninstallation manager's methods; Figure 8 This shows the implementation details. Figure 7 Flowchart of S580 operation; Figure 9 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of a storage controller method; Figure 10 This shows the implementation details. Figure 9Flowchart of operation S604; Figure 11A This shows the implementation details. Figure 9 Flowchart of operation S604; Figure 11B This shows the implementation details. Figure 11A Flowchart of the operation of S640; Figure 11C This shows the implementation details. Figure 11A Flowchart of S650 operation; Figure 12A and Figure 12B These are shown separately according to the embodiments. Figure 1 A diagram illustrating the operation of the storage system; Figure 13 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of a method for a storage system; Figure 14 This is a more detailed block diagram illustrating the workload analyzer, uninstall manager, and uninstall engine according to the implementation method; Figure 15 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of a method for a storage system; and Figure 16 This is a diagram of the system according to the implementation method. Detailed Implementation

[0012] In the following description, embodiments of the present disclosure will be described more clearly and in more detail so that those skilled in the art can readily implement the present disclosure.

[0013] Figure 1 This is a block diagram illustrating a storage system according to an embodiment.

[0014] Reference Figure 1 The storage system 1000 may include a host device 1100 and a storage device 1200. In some embodiments, the storage device 1200 may include a storage controller 1210 and a non-volatile memory device 1220. In some embodiments, the host device 1100 may include a host controller 1110 and a host memory 1120. The host memory 1120 may be used as a buffer for temporarily storing data to be sent to or received from the storage device 1200.

[0015] Storage device 1200 may include a storage medium for storing data according to a request from host device 1100. For example, storage device 1200 may include at least one of a solid-state drive (SSD), embedded memory, and removable external memory. When storage device 1200 is an SSD, it may be a device compliant with the Non-Volatile Memory High Speed ​​(NVMe) standard. When storage device 1200 is embedded memory or removable external memory, it may be a device compliant with the Universal Flash Memory (UFS) or Embedded Multimedia Card (eMMC) standard. Host device 1100 and storage device 1200 may each generate data packets according to a standard protocol and send the generated data packets to each other.

[0016] When the non-volatile memory device 1220 of storage device 1200 includes flash memory, the flash memory may include a two-dimensional (2D) NAND memory array or a three-dimensional (3D) (or vertical) NAND (VNAND) memory array. As another example, storage device 1200 may include various other types of non-volatile memory. For example, storage device 1200 may employ magnetic random access memory (MRAM), spin-torque MRAM, conductive bridged RAM (CBRAM), ferroelectric RAM (FeRAM), phase-change RAM (PRAM), resistive RAM, and various other types of memory.

[0017] According to embodiments, the host controller 1110 and the host memory 1120 can be implemented as separate semiconductor chips. Alternatively, in some embodiments, the host controller 1110 and the host memory 1120 can be integrated into the same semiconductor chip. For example, the host controller 1110 can be any one of a plurality of modules disposed in an application processor, and the application processor can be implemented as a system-on-a-chip (SoC). In some embodiments, the host memory 1120 can be embedded memory disposed in the application processor, or non-volatile memory or memory module disposed outside the application processor.

[0018] The host controller 1110 can manage operations that store data in the buffer area (e.g., write data) in the non-volatile memory device 1220 or store data in the non-volatile memory device 1220 (e.g., read data) in the buffer area.

[0019] The storage controller 1210 may include an offload engine 1211, a central processing unit (CPU) 1212, a flash translation layer (FTL) 1213, a buffer memory 1214, an error correction code (ECC) engine 1215, a host interface circuit 1216, and a memory interface circuit 1217. The storage controller 1210 may also include working memory in which the FTL 1213 is loaded, and data write and read operations with respect to the non-volatile memory can be controlled by the CPU 1212 executing the FTL 1213.

[0020] Host interface circuit 1216 can send data packets to or receive data packets from host device 1100. Data packets sent from host device 1100 to host interface circuit 1216 may include commands or data to be recorded in non-volatile memory device 1220, and data packets sent from host interface circuit 1216 to host device 1100 may include responses to commands or data read from non-volatile memory device 1220. Memory interface circuit 1217 can send write data to or receive read data from non-volatile memory device 1220. Memory interface circuit 1217 can be implemented to conform to standard protocols such as toggle or Open NAND Flash Interface (ONFI).

[0021] FTL 1213 can perform various functions, such as address mapping, wear leveling, and garbage collection. Address mapping is the process of translating logical addresses received from the host into physical addresses used to actually store data in the non-volatile memory device 1220. Wear leveling is a technique used to prevent excessive degradation of specific blocks by using blocks evenly in the non-volatile memory device 1220, and can be implemented, for example, through firmware techniques that balance the erasure of physical blocks. Garbage collection is a technique used to ensure available capacity in the non-volatile memory device 1220 by erasing existing blocks after copying valid data from a block to a new block.

[0022] ECC engine 1215 can perform error detection and correction functions on read data read from non-volatile memory device 1220. ECC engine 1215 can perform error detection operations and error correction operations. ECC engine 1215 can perform error detection operations to determine whether there are errors in the data.

[0023] The storage controller 1210 can communicate with the non-volatile memory device 1220 through multiple channels. The non-volatile memory device 1220 can store data or output stored data under the control of the storage controller 1210. The non-volatile memory device 1220 may include multiple non-volatile memory (NVMs).

[0024] Storage system 1000 can enable applications ( Figure 2 The operations of the application (APP) can be offloaded to storage device 1200 or uninstallation manager 1111. Storage device 1200 or uninstallation manager 1111 can perform operations that replace the application APP. Workloads with data-dependent read modes can be performed within storage device 1200 or kernel space. This can improve the workload of host device 1100.

[0025] Unloading manager 1111 and storage controller 1210 can perform unloading operations via an extended Berkeley grouping filter (eBPF). Unloading manager 1111 and storage controller 1210 can receive read uninstaller instructions. Unloading manager 1111 and storage controller 1210 can load and execute read uninstaller instructions. Read uninstaller instructions can be in the format of an eBPF program, but the implementation is not limited to this. Read uninstaller instructions can be implemented in different formats, such as other types of machine language code, bytecode, or program formats that can be executed by unloading manager 1111 and storage controller 1210.

[0026] Storage system 1000 can perform a hybrid read-unload operation (hereinafter referred to as a read-unload operation). According to an embodiment, a read-unload operation can indicate an operation in which at least one of the kernel space unload manager 1111 and storage device 1200 performs an operation to be processed by an application (APP). In other words, a read-unload operation can refer to the operation of unloading an operation to be processed by an application (APP) to the unload manager 1111 or storage device 1200 and distributing and executing that operation. A read-unload operation can also refer to an operation in which storage device 1200 preferentially performs the unload operation, and when operating resources are insufficient, the kernel space unload manager 1111 performs the unload operation.

[0027] Storage system 1000 can handle workloads with data-dependent read patterns more efficiently through read offload operations. For example, a data-dependent read pattern may include at least two read operations for the storage device, and subsequent read operations may refer to operations performed by referencing the results of previous read operations. Examples of workloads with data-dependent read patterns include database query processing, key-value stores, log structure merge trees (LSM trees), B-tree-based search, etc.

[0028] Host controller 1110 may include unload manager 1111. Unload manager 1111 may receive read unload requests. For example, a read unload request may be a request that instructs a first unload operation performed by unload manager 1111 in kernel space or a second unload operation performed by storage device 1200. In some implementations, the read unload request may be a read unload request for a workload with a data-dependent read pattern.

[0029] In one implementation, the unload operation can be a hybrid resubmit operation. A resubmit operation can refer to a data-dependent read operation that performs a subsequent read operation based on the result of a previous read operation. In other words, the unload operation according to this implementation can instruct the calculation of the logical address of a second read operation based on the read data corresponding to the first read operation. Here, the second read operation can refer to a read operation to be performed after the first read operation. Alternatively, the unload operation can refer to the operation of calculating a file offset based on the read data corresponding to the first read operation and converting the file offset into a logical address based on metadata.

[0030] In this implementation, the uninstallation operation may include a first uninstallation operation and a second uninstallation operation. The first uninstallation operation may refer to an uninstallation operation performed in kernel space (or uninstallation manager 1111). The second uninstallation operation may refer to an uninstallation operation performed by storage device 1200.

[0031] In this implementation, the uninstallation manager 1111 can generate metadata MD_C by copying the metadata MD_O of the file system FS (see [link]). Figure 6 The metadata MD_C can include mapping information between file offsets and logical addresses. The unloading manager 1111 can send the metadata MD_C to the storage device 1200.

[0032] In one implementation, the unloading manager 1111 may send adaptive read requests to the storage device 1200. For example, the adaptive read request may be a request to perform a second unloading operation when resources are sufficient and to instruct the execution of a reverse unloading operation when resources are insufficient. In another implementation, the adaptive read request may be an unloading request for workloads with data-dependent read patterns.

[0033] In this implementation, the uninstallation manager 1111 can perform a first uninstallation operation. The uninstallation manager 1111 can perform a first uninstallation operation to uninstall the application (APP). For example, the uninstallation manager 1111 can perform the first uninstallation operation based on a reverse uninstallation request received from the storage device 1200.

[0034] In this implementation, the uninstallation manager 1111 may perform a verification operation. To ensure the validity of the metadata MD_C when the uninstallation manager 1111 performs a read uninstallation operation, a verification operation may be performed. For example, the uninstallation manager 1111 may determine whether the version number of the metadata MD_C is the same as the version number of the metadata MD_O of the file system FS.

[0035] In this implementation, the uninstallation engine 1211 may receive an adaptive read request from the host device 1100. The uninstallation engine 1211 may determine whether to perform a second uninstallation operation. The uninstallation engine 1211 may perform the second uninstallation operation. The uninstallation engine 1211 may perform the second uninstallation operation for performing the uninstallation operation in the application (APP). For example, the second uninstallation operation may be instructed to be performed on the device.

[0036] In this implementation, the unloading engine 1211 can receive metadata MD_C from the host device 1100. The unloading engine 1211 can read the metadata MD_C from the host memory 1120. The unloading engine 1211 can manage the metadata MD_C. The unloading engine 1211 can cache and use the metadata MD_C. The unloading engine 1211 can perform a second unloading operation based on the metadata MD_C.

[0037] In this implementation, the unloading engine 1211 can perform reverse unloading. Reverse unloading can indicate an operation requesting the execution of a first unloading operation in kernel space. For example, the unloading engine 1211 can perform reverse unloading when the CPU 1212 (or core or processor) is in use and the operation latency of the second unloading operation is predicted to be longer than the transmission latency between the host device 1100 and the storage device 1200.

[0038] In this implementation, the unloading engine 1211 can perform the second unloading operation in parallel. To reduce latency, the unloading engine 1211 can have multiple cores that execute the second unloading operation in parallel.

[0039] As described above, the storage system 1000 can perform read unloading operations. The unloading manager 1111 can perform a first unloading operation, and the storage device 1200 can perform a second unloading operation. Therefore, the operational load of the host device 1100 can be distributed, and latency can be reduced. In some embodiments, when the internal resources of the storage device 1200 are insufficient, reverse unloading can be performed to prevent an increase in latency. Therefore, a storage system 1000 with improved performance is provided.

[0040] The uninstallation manager 1111 may take the form of hardware, software, or a combination thereof configured to manage the above-described operations. The uninstallation engine 1211 may take the form of hardware, software, or a combination thereof configured to manage the above-described operations. The operation of the uninstallation manager 1111 and the uninstallation engine 1211 will be described in more detail with reference to the accompanying drawings.

[0041] Figure 2 This illustrates an embodiment. Figure 1 A diagram illustrating the software layer of a storage system.

[0042] Reference Figure 1 and Figure 2 The software layer of storage system 1000 may include an application (APP), a file system (FS), a device driver (DD), an unloading engine (1211), and an FTL (Functional Loading Manager) (FTL) (1213). Host device 1100 may include the application (APP), the file system (FS), and the device driver (DD). The device driver (DD) may include an unloading manager (1111). Storage device 1200 may include the unloading engine (1211) and the FTL (FTL) (1213). For ease of description, detailed descriptions of the above components are omitted.

[0043] In this implementation, the software layer of the host device 1100 may include user space and kernel space. User space may be the space where applications are executed, and kernel space may be a restricted space reserved for kernel execution. System calls can be used to gain access to kernel space from user space. User space may include an application (APP). Kernel space may include a file system (FS), a device driver (DD), an unmount manager (1111), etc.

[0044] The application (APP) may include various applications driven in the host device 1100. The application (APP) may include multiple applications. The application (APP) may send read / uninstall requests to the uninstallation manager 1111. The application (APP) may send read / uninstall requests to the uninstallation manager 1111 in parallel.

[0045] The file system (FS) can be configured to organize files or data used by applications (APPs). For example, the file system (FS) can manage the storage space of storage device 1200 as logical block addresses (LBAs) (hereinafter referred to as logical addresses). The file system (FS) can assign and manage logical addresses to data to be stored in storage device 1200.

[0046] In implementation, the file system FS can take different forms depending on the operating system of the host device 1100. The file system FS can include at least one of the following file system forms: File Allocation Table (FAT), FAT32, NT File System (NTFS), Hierarchical File System (HFS), Journaling File System 2 (JFS2), XFS, Disk Structure-5 (ODS-5), UDF, ZFS, Unix File System (UFS), ext2, ext3, ext4, ReiserFS, Reiser4, ISO 9660, Gnome VFS, BFS, WinFS, etc.

[0047] The device driver DD can perform operations that convert information from the file system FS or application APP into information recognizable in the storage device 1200. In an embodiment, the application APP, file system FS, device driver DD, and unmount manager 1111 can be implemented in software and can be driven on the host device 1100.

[0048] Uninstall manager 1111 can receive read uninstallation requests. Uninstall manager 1111 can process read uninstallation requests. Uninstall manager 1111 can send adaptive read requests to storage device 1200. Uninstall manager 1111 can perform a first uninstallation operation based on a reverse uninstallation request (or a response including a reverse uninstallation field indicating an activation value).

[0049] Uninstall engine 1211 can receive adaptive read uninstall requests. Uninstall engine 1211 can process adaptive read uninstall requests. Uninstall engine 1211 can send reverse uninstall requests to uninstall manager 1111. Uninstall engine 1211 can perform a second uninstall operation.

[0050] FTL 1213 can be configured to translate the logical address of a request received from host device 1100 into a physical block address (or physical address) used in non-volatile memory device 1220.

[0051] Figure 3 This shows the implementation details. Figure 1 A block diagram of the uninstallation manager and uninstallation engine.

[0052] Reference Figure 1 and Figure 3 The uninstallation manager 1111 may include computing logic 11 and metadata management logic 12. The uninstallation engine 1211 may include a computing unit 110, a determination unit 120, and a resource monitoring unit 130.

[0053] Calculation logic 11 can perform the first unload operation. Calculation logic 11 can calculate the file offset based on the first read data RD1. Calculation logic 11 can convert the file offset into a logical address based on the metadata MD_C.

[0054] Metadata management logic 12 can manage metadata MD_C. Metadata management logic 12 can generate metadata MD_C by copying metadata MD_O from the file system FS. Metadata management logic 12 can perform verification operations.

[0055] The calculation unit 110 can perform a second unloading operation. The calculation unit 110 can calculate the file offset based on the first read data RD1. The calculation unit 110 can convert the file offset into a logical address based on the metadata MD_C.

[0056] The determining unit 120 can receive internal resource status from the resource monitoring unit 130. The determining unit 120 can determine whether to perform a second unloading operation based on the internal resource status. For example, the internal resource status may include the operational resource status. The determining unit 120 can determine to perform the second unloading operation when operational resources are sufficient, and can determine to perform a reverse unloading operation when operational resources are insufficient.

[0057] Resource monitoring unit 130 can monitor the status of internal resources. Resource monitoring unit 130 can periodically check the status of CPU 1212 (e.g., cores or processors). For example, CPU 1212 may include multiple cores. Resource monitoring unit 130 can monitor the status of multiple cores. Resource monitoring unit 130 can monitor the utilization or load of multiple cores. Resource monitoring unit 130 can provide the internal resource status to determination unit 120.

[0058] Figure 4 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of a storage system method.

[0059] Reference Figure 1 , Figure 2 and Figure 4 The storage system 1000 can perform a read-unload operation. In operation S110, the unload manager 1111 can obtain a read-unload request R_OFF_REQ. The application APP can send the read-unload request R_OFF_REQ to the unload manager 1111. In this implementation, the application APP can send the read-unload request R_OFF_REQ to the unload manager 1111 using a system call. The read-unload request R_OFF_REQ can be of a system call type. For example, the read-unload request R_OFF_REQ can be read_sode(). The unload manager 1111 can receive the read-unload request R_OFF_REQ.

[0060] In operation S120, the unloading manager 1111 can send an adaptive read request to the storage device 1200. The unloading manager 1111 can also send a first adaptive read request A_READ1, including a first address ADDR1, to the storage device 1200. The unloading manager 1111 can obtain metadata corresponding to the read unloading request R_OFF_REQ from the file system FS. In this embodiment, the unloading manager 1111 can generate metadata MD_C (i.e., a copy of the metadata) by copying the metadata MD_O (i.e., the original metadata) of the file system FS.

[0061] The unloading manager 1111 can send a first adaptive read request A_READ1 corresponding to the read unloading request R_OFF_REQ to the storage device 1200. For example, the first adaptive read request A_READ1 may include a first address ADDR1 provided from the file system FS and metadata MD_C. Alternatively, the first adaptive read request A_READ1 may include a first address ADDR1 and an address of the host memory 1120 where the metadata MD_C is stored. The first address ADDR1 may indicate a logical address corresponding to the read unloading request R_OFF_REQ. The storage device 1200 can receive the first adaptive read request A_READ1 and metadata MD_C (see [link to documentation]). Figure 5A ).

[0062] In operation S130, storage device 1200 can perform a first read operation. Storage device 1200 can perform the first read operation in response to a first adaptive read request A_READ1. For example, storage controller 1210 can send a first read command R_CMD1 corresponding to the first adaptive read request A_READ1 to non-volatile memory device 1220. Storage controller 1210 can translate a first address ADDR1 into a first physical address PADDR1. The first read command R_CMD1 may include the first physical address PADDR1 corresponding to the first address ADDR1. Non-volatile memory device 1220 can send first read data RD1 (or the first address ADDR1) corresponding to the first physical address PADDR1 to storage controller 1210.

[0063] In operation S140, the storage device 1200 may determine whether to perform a second unloading operation. The storage device 1200 may determine whether to perform the second unloading operation based on internal resources. For example, internal resources may include operation resources. In an embodiment, if an increase in latency is expected when performing the second unloading operation, the storage device 1200 may determine not to perform the second unloading operation.

[0064] For example, storage device 1200 can determine whether a processor is in an idle state. When a processor in a standby state exists, storage device 1200 can determine to perform a second unload operation. When it is determined to perform the second unload operation, storage system 1000 can perform operation S150, and when it is determined not to perform the second unload operation (i.e., when it is determined to perform the first unload operation or when it is determined to perform reverse unload), storage system 1000 can perform operation S160.

[0065] In operation S150, storage device 1200 may perform a second unloading operation. Storage device 1200 may perform the second unloading operation based on metadata MD_C and first read data RD1. For example, storage device 1200 may calculate a file offset based on the first read data RD1. Storage device 1200 may convert the file offset into a logical address based on metadata MD_C. Storage device 1200 may generate a second address ADDR2. For example, the second address ADDR2 may indicate the logical address of a subsequent read operation generated by referring to read data corresponding to the previous read operation. After operation S150, storage system 1000 may perform the operation of operation S190.

[0066] In operation S160, storage device 1200 may send a reverse unloading request to unloading manager 1111. Storage device 1200 may send a reverse unloading request and first read data RD1 (see...) Figure 5C The first response REP1 is sent to the unloading manager 1111. For example, storage device 1200 may send the first read data RD1 to host memory 1120. Storage device 1200 may send the first response REP1, which includes a reverse unloading field indicating an activation value, to host device 1100. The first response REP1 may be a response corresponding to the first adaptive read request A_READ1.

[0067] In one implementation, when a reverse uninstallation request is made, the storage device 1200 may send a response including a reverse uninstallation field indicating an activation value to the host device 1100. When no reverse uninstallation request is made, the storage device 1200 may send a response including a reverse uninstallation field indicating a deactivation value to the host device 1100.

[0068] In operation S170, the uninstallation manager 1111 can perform a first uninstallation operation. The uninstallation manager 1111 can perform the first uninstallation operation based on metadata MD_C and first read data RD1. For example, the uninstallation manager 1111 can calculate the file offset based on the first read data RD1. The uninstallation manager 1111 can convert the file offset into a logical address based on the metadata MD_C. The uninstallation manager 1111 can generate a second address ADDR2.

[0069] In operation S180, the unloading manager 1111 can send an adaptive read request to the storage device 1200. The unloading manager 1111 can also send a second adaptive read request A_READ2, including the second address ADDR2, to the storage device 1200. For example, the second adaptive read request A_READ2 may also include the address of the host memory 1120 where metadata MD_C is stored. After operation S180, the storage system 1000 can perform the operation of operation S190.

[0070] In operation S190, the storage device 1200 can perform a second read operation. When the first unload operation is performed, the storage device 1200 can perform a second read operation corresponding to the second address ADDR2 based on the second adaptive read request A_READ2. The storage device 1200 can perform the second read operation based on the second address ADDR2 included in the second adaptive read request A_READ2. When the second unload operation is performed, the storage device 1200 can perform the second read operation based on the second address ADDR2 calculated by the storage device 1200.

[0071] In one implementation, the storage controller 1210 can translate the second address ADDR2 to the second physical address PADDR2. The storage controller 1210 can translate the second physical address PADDR2 (see...) Figure 5B The second read command R_CMD2 is sent to the non-volatile memory device 1220. The non-volatile memory device 1220 can send the second read data RD2 corresponding to the second physical address PADDR2 to the memory controller 1210.

[0072] In one implementation, storage controller 1210 may send second read data RD2 and second response REP2 to host device 1100. Storage controller 1210 may also send second response REP2, which includes a reverse unload field indicating a deactivation value, to host device 1100.

[0073] Figures 5A to 5C The operation according to the implementation method is shown respectively. Figure 1 A diagram illustrating an example of a storage system method.

[0074] Reference Figure 1 , Figure 5A , Figure 5B and Figure 5CThe storage system 1000 can perform a read-unload operation. In operation S210, the uninstallation manager 1111 can obtain a read-unload request R_OFF_REQ. For example, an application (APP) can send a read-unload request R_OFF_REQ to the uninstallation manager 1111 using a system call.

[0075] In operation S220, the uninstallation manager 1111 can obtain the metadata MD_C. The uninstallation manager 1111 can obtain the metadata MD_C corresponding to the read uninstallation request R_OFF_REQ. For example, the uninstallation manager 1111 can copy the metadata MD_O managed in the file system FS. The uninstallation manager 1111 can generate a metadata MD_C that is identical to the metadata MD_O managed in the file system FS. For example, the metadata MD_O and metadata MD_C can be stored in the host memory 1120.

[0076] In operation S230, the unloading manager 1111 may send a first adaptive read request A_READ1 to the storage device 1200. In this embodiment, the first adaptive read request A_READ1 may be a command supported by the NVMe standard. The command may include an opcode field. The opcode field may indicate the opcode of the command to be executed. The opcode of the first adaptive read request A_READ1 may indicate an adaptive read request (e.g., 0x80). The first adaptive read request A_READ1 may also include a version number field indicating the version number of the metadata MD_C.

[0077] For example, a first adaptive read request A_READ1 may include a first address ADDR1. The first address ADDR1 may correspond to a read off request R_OFF_REQ. The first address ADDR1 may indicate the logical address to be accessed first according to the read off request R_OFF_REQ. The first address ADDR1 may be included in the read off request R_OFF_REQ. Alternatively, the first address ADDR1 may be provided from the file system FS.

[0078] For example, the first adaptive read request A_READ1 may include metadata MD_C. Alternatively, the first adaptive read request A_READ1 may include the address of the host memory 1120 where the metadata MD_C is stored. The unloading manager 1111 may send the first address ADDR1 and the metadata MD_C to the storage controller 1210.

[0079] In one implementation, the storage controller 1210 may receive a first adaptive read request A_READ1. The storage controller 1210 may also receive a first address ADDR1 and metadata MD_C.

[0080] In operation S240, the memory controller 1210 may send a first read command R_CMD1 to the non-volatile memory device 1220. The memory controller 1210 may send the first read command R_CMD1 to the non-volatile memory device 1220 in response to a first adaptive read request A_READ1. The memory controller 1210 may translate the first address ADDR1 to a first physical address PADDR1. The memory controller 1210 may send the first read command R_CMD1, including the first physical address PADDR1, to the non-volatile memory device 1220.

[0081] A logical address can indicate an LBA managed by host device 1100. The file system (FS) of host device 1100 can identify or manage the storage space of storage device 1200 as logical addresses. For example, a logical address can be used to access the storage space of storage device 1200 in units of blocks or pages.

[0082] A physical address can indicate the actual physical address of a non-volatile memory device 1220 managed by a memory controller 1210. The memory controller 1210 can identify or manage the memory space of the non-volatile memory device 1220 as a physical address. For example, a physical address can be used to access the memory space of the non-volatile memory device 1220 on a page-by-page basis.

[0083] In operation S250, the non-volatile memory device 1220 can send the first read data RD1 to the memory controller 1210. The non-volatile memory device 1220 can receive the first read command R_CMD1. In response to the first read command R_CMD1, the non-volatile memory device 1220 can read the first read data RD1 corresponding to the first physical address PADDR1. The non-volatile memory device 1220 can send the first read data RD1 to the memory controller 1210.

[0084] In operation S260, the storage controller 1210 can determine whether to perform a second offload operation. The storage controller 1210 can determine whether to perform the second offload operation based on the state of internal resources (e.g., operating resources). When internal resources are sufficient, the storage controller 1210 can determine to perform the second offload operation. When internal resources are insufficient, the storage controller 1210 can determine to perform a first offload operation. When it is determined to perform the second offload operation, the storage system 1000 can perform operations S310 to S350. When it is determined to perform the first offload operation, the storage system 1000 can perform operations S410 to S470.

[0085] In operation S310, the storage controller 1210 can generate a second address ADDR2 by performing a second unload operation. The storage controller 1210 can calculate the file offset based on the first read data RD1. The storage controller 1210 can convert the file offset into the second address ADDR2 based on the metadata MD_C.

[0086] In operation S320, the memory controller 1210 can send a second read command R_CMD2 to the non-volatile memory device 1220. The memory controller 1210 can send the second read command R_CMD2 to the non-volatile memory device 1220 based on the second address ADDR2 generated through the second unload operation. The memory controller 1210 can translate the second address ADDR2 into a second physical address PADDR2. The memory controller 1210 can send the second read command R_CMD2, including the second physical address PADDR2, to the non-volatile memory device 1220.

[0087] In operation S330, the non-volatile memory device 1220 can send the second read data RD2 to the memory controller 1210. The non-volatile memory device 1220 can receive the second read command R_CMD2. In response to the second read command R_CMD2, the non-volatile memory device 1220 can read the second read data RD2 corresponding to the second physical address PADDR2. The non-volatile memory device 1220 can send the second read data RD2 to the memory controller 1210.

[0088] In operation S340, storage controller 1210 may send a second response REP2 to unloading manager 1111. For example, the second response REP2 may include a reverse unloading field indicating a deactivation value. The second response REP2 may include a version number field indicating the version number included in the first adaptive read request A_READ1. Alternatively, the second response REP2 may include a version number field indicating the version number corresponding to the metadata MD_C.

[0089] The storage controller 1210 can write the second read data RD2 to the data page address included in the first read adaptive request A_READ1. The data page address can indicate the address of the host memory 1120. The storage controller 1210 can send the second read data RD2 and the second response REP2 to the host device 1100.

[0090] In operation S350, the uninstallation manager 1111 can send a read uninstallation response R_OFF_REP to the application APP. The uninstallation manager 1111 can receive a second response REP2 from the storage device 1200. The uninstallation manager 1111 can perform a verification operation based on the second response REP2. The uninstallation manager 1111 can determine whether the version number field included in the second response REP2 is the same as the version number of the metadata MD_O of the file system FS. When the uninstallation manager 1111 passes the verification operation, the uninstallation manager 1111 can determine that the second read data RD2 is valid and send the read uninstallation response R_OFF_REP to the application APP.

[0091] exist Figure 5B The diagram illustrates an example of sending a second response REP2 (or a read unloading response R_OFF_REP) indicating that the read unloading has ended after performing the second unloading operation once, but the implementation is not limited to this. When another read is needed even after receiving the second read data RD2, the storage system 1000 can again determine whether to perform the second unloading operation, and therefore, the first or second unloading operation can be performed again. For example, for simplicity, the diagram shows only one execution of the second unloading operation, but in reality, the first or second unloading operation can be performed multiple times before sending the second response REP2 (or the read unloading response R_OFF_REP).

[0092] In operation S410, storage controller 1210 may send a first response REP1 to unloading manager 1111. For example, the first response REP1 may include a reverse unloading field indicating an activation value. Storage controller 1210 may write first read data RD1 to the data page address included in the first read adaptive request A_READ1. The data page address may indicate an address of host memory 1120. Storage controller 1210 may send the first read data RD1 and the first response REP1 to host device 1100.

[0093] In operation S420, the unloading manager 1111 can generate a second address ADDR2 by performing a first unloading operation. In response to a first response REP1 including a reverse unloading field indicating an activation value, the unloading manager 1111 can calculate a file offset based on first read data RD1. The storage controller 1210 can convert the file offset into the second address ADDR2 based on metadata MD_C.

[0094] In operation S430, the unloading manager 1111 may send a second adaptive read request A_READ2 to the storage device 1200. For example, the second adaptive read request A_READ2 may include a second address ADDR2. For example, the unloading manager 1111 may send metadata MD_C to the storage device 1200.

[0095] In operation S440, the memory controller 1210 can send a second read command R_CMD2 to the non-volatile memory device 1220. The memory controller 1210 can receive a second adaptive read request A_READ2 including a second address ADDR2. The memory controller 1210 can send a second read command R_CMD2 corresponding to the second address ADDR2 to the non-volatile memory device 1220 based on the second adaptive read request A_READ2. The memory controller 1210 can send the second read command R_CMD2 to the non-volatile memory device 1220 based on the second address ADDR2 generated through the first unload operation. The memory controller 1210 can translate the second address ADDR2 into a second physical address PADDR2. The memory controller 1210 can translate the second physical address PADDR2 (see...) Figure 5B The second read command R_CMD2 is sent to the non-volatile memory device 1220.

[0096] In operation S450, the non-volatile memory device 1220 can send the second read data RD2 to the memory controller 1210. The non-volatile memory device 1220 can receive the second read command R_CMD2. In response to the second read command R_CMD2, the non-volatile memory device 1220 can read the second read data RD2 corresponding to the second physical address PADDR2. The non-volatile memory device 1220 can send the second read data RD2 to the memory controller 1210.

[0097] In operation S460, storage controller 1210 may send a second response REP2 to unloading manager 1111. For example, the second response REP2 may include a reverse unloading field indicating a deactivation value. Storage controller 1210 may also send second read data RD2 and the second response REP2 to host device 1100.

[0098] In operation S470, uninstallation manager 1111 can send the read uninstallation response R_OFF_REP to application APP. Uninstallation manager 1111 can receive a second response REP2 from storage device 1200. Uninstallation manager 1111 can perform a verification operation based on the second response REP2. When uninstallation manager 1111 passes the verification operation, uninstallation manager 1111 can send the read uninstallation response R_OFF_REP to application APP.

[0099] exist Figure 5C The diagram illustrates an example of sending a second response REP2 (or a read unloading response R_OFF_REP) indicating that the read unloading has ended after performing the first unloading operation once, but the implementation is not limited to this. When further reading is required even after receiving the second read data RD2, the storage system 1000 can again determine whether to perform a second unloading operation, and therefore, the first or second unloading operation can be performed again. For example, for simplicity, the diagram shows only one execution of the first unloading operation, but in reality, the first or second unloading operation can be performed multiple times before sending the second response REP2 (or the read unloading response R_OFF_REP).

[0100] Figure 6 This is a diagram illustrating the metadata according to the implementation method.

[0101] Reference Figure 1 and Figure 6 The uninstallation manager 1111 and uninstallation engine 1211 can directly convert file offsets to logical addresses based on metadata MD_C instead of the file system FS. The uninstallation manager 1111 generates metadata MD_C by copying metadata MD_O managed by the file system FS. The uninstallation manager 1111 can then send the metadata MD_C to the uninstallation engine 1211. Both the uninstallation manager 1111 and uninstallation engine 1211 can convert file offsets to logical addresses based on the metadata MD_C.

[0102] In an implementation, the metadata MD_C may include a range state tree and a version number. The range state tree can be used when converting file offsets to logical addresses. When generating the metadata MD_C, the version number can indicate the version number of the range state tree corresponding to the corresponding file. The version number can be used for verification operations. The version number can change whenever a file is updated. For example, the file system FS can update the version number whenever the range state tree is updated. In an implementation, the metadata MD_C may also include the number of range tree nodes.

[0103] In this implementation, the unloading operation is primarily performed on read-only files, and most of these files can remain unchanged. Therefore, the unloading engine 1211 can perform a second unloading operation based on cached metadata MD_C.

[0104] The unloading engine 1211 can perform a second unloading operation based on the cached metadata MD_C. The unloading engine 1211 can predict that a file has not yet been modified and prioritizes performing the second unloading operation. In other words, although the metadata MD_C may differ from the current file system FS's metadata MD_O, the unloading engine 1211 can first perform the second unloading operation based on the metadata MD_C. For example, the unloading engine 1211 can perform the second unloading operation according to the optimal method. The unloading engine 1211 can trust the verification operation to be performed by the unloading manager 1111 and can perform the second unloading operation first.

[0105] The uninstallation engine 1211 can send a response, including a version number, to the uninstallation manager 1111. Here, the response can indicate the response corresponding to the adaptive read request. The version number included in the response can be used in the verification operation.

[0106] The uninstallation manager 1111 can perform a verification operation. This verification operation can refer to checking data consistency. In an implementation, the verification operation can instruct the verification of data consistency by comparing the metadata MD_C with the metadata MD_O stored in the file system FS. Since the metadata MD_C is a copy of the metadata MD_O in the file system FS, the metadata MD_O can be updated when the file system FS changes the file. The uninstallation manager 1111 can verify the validity of the metadata MD_C by checking whether the metadata MD_O has changed via the verification operation. Therefore, the uninstallation manager 1111 can verify the validity of the result of reading the uninstallation operation.

[0107] The uninstallation manager 1111 can determine whether metadata MD_O is the same as metadata MD_C based on the version number included in metadata MD_O and metadata MD_C. The uninstallation manager 1111 can compare the version number included in metadata MD_O with the version number included in metadata MD_C. When the version number included in metadata MD_O is the same as the version number included in metadata MD_C, the uninstallation manager 1111 can determine that metadata MD_O and metadata MD_C are the same. When the version number included in metadata MD_O is different from the version number included in metadata MD_C, the uninstallation manager 1111 can determine that metadata MD_O and metadata MD_C are different.

[0108] As described above, the unloading manager 1111 can copy the metadata of the file system FS required for address translation. The unloading manager 1111 can generate metadata MD_C by copying the metadata MD_O of the file system FS. The unloading manager 1111 can send the metadata MD_C to the storage device 1200. The unloading manager 1111 can perform a first unloading operation based on the metadata MD_C, and the unloading engine 1211 can perform a second unloading operation based on the metadata MD_C. Neither the unloading manager 1111 nor the unloading engine 1211 can access the metadata MD_O of the file system FS during the first or second unloading operation. Therefore, the storage system 1000 can reduce latency and improve performance.

[0109] Figure 7 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of the uninstallation manager's methods.

[0110] Reference Figure 1 and Figure 7 The uninstallation manager 1111 can process the read uninstallation request and perform the first uninstallation operation. In operation S510, the uninstallation manager 1111 can obtain the read uninstallation request R_OFF_REQ.

[0111] In operation S520, the uninstallation manager 1111 can generate metadata MD_C. The uninstallation manager 1111 can generate metadata MD_C by copying the metadata MD_O of the file system FS. In an implementation, metadata MD_C may include mapping information between file offsets and logical addresses. For example, metadata MD_C may include a range state tree. Metadata MD_C may also include a version number. Metadata MD_C may be stored in host memory 1120.

[0112] In operation S530, the unloading manager 1111 may send a first adaptive read request A_READ1 to the storage device 1200. In one embodiment, the first adaptive read request A_READ1 may include the address of the host memory 1120 where metadata MD_C is stored. In another embodiment, the first adaptive read request A_READ1 may include a version number.

[0113] In implementations, the adaptive read request may further include a data page address, a scratch page address, a Berkeley Packet Filter (BPF) program address, a parallel field, an EXT4 inode operation field, etc. For example, the data page address may indicate the address of the host memory 1120 where the read data is to be stored. The scratch page address may indicate the address of the scratch page used for the parallel second offload operation. The scratch page address may indicate the address of the host memory 1120 where the data is to be stored. The BPF program address may indicate the address of the host memory 1120 where the eBPF program is stored. The parallel field may indicate a request for the parallel second offload operation. For example, a parallel field with an active value may indicate the parallel second offload operation, and a parallel field with a deactivated value may indicate the second offload operation. The EXT4 inode operation field may be a field used to identify whether direct mapping is used.

[0114] In operation S540, the uninstallation manager 1111 can determine whether a reverse uninstallation request has been received. The uninstallation manager 1111 can receive a response including a reverse uninstallation field indicating an activation value. The uninstallation manager 1111 can perform the operation of operation S550 when a reverse uninstallation request is received, and can perform the operation of operation S570 when a reverse uninstallation request is not received.

[0115] In operation S550, the uninstallation manager 1111 can perform a first uninstallation operation. The uninstallation manager 1111 can receive first read data RD1. The uninstallation manager 1111 can generate a second address ADDR2 based on the metadata MD_C and the first read data RD1. The uninstallation manager 1111 can calculate the file offset based on the first read data RD1 and convert the file offset into a second logical address based on the metadata MD_C.

[0116] In operation S560, the unloading manager 1111 can send a second adaptive read request A_READ2 to the storage device 1200. The unloading manager 1111 can send a second adaptive read request A_READ2, which includes a second logical address, to the storage device 1200.

[0117] In operation S570, the uninstallation manager 1111 may receive second read data RD2. The uninstallation manager 1111 may also receive a second response REP2 corresponding to the second read data RD2. The uninstallation manager 1111 may receive a second response REP2 including a reverse uninstallation field indicating a deactivation value. For example, the reverse uninstallation field indicating a deactivation value may indicate the end of the read uninstallation operation.

[0118] In operation S580, the uninstallation manager 1111 can perform verification operations. The uninstallation manager 1111 can perform verification operations to ensure the validity of the metadata MD_C. The uninstallation manager 1111 can perform verification operations based on the original metadata and the metadata copy.

[0119] Figure 8 This shows the implementation details. Figure 7 The flowchart for operating S580.

[0120] Reference Figure 1 , Figure 7 and Figure 8 The uninstallation manager 1111 can perform verification operations. The first and second uninstallation operations can be performed based on the metadata MD_C. The metadata MD_C can be data obtained by copying the metadata MD_O managed in the file system FS. Therefore, when the file content is changed, the metadata MD_C becomes invalid, and thus reading the result of the uninstallation operation may not be valid.

[0121] The Unload Manager 1111 can check whether the file system FS metadata MD_O remains unchanged from the time when the metadata MD_C is copied until the adaptive read request (or read unload request) completes. Therefore, the Unload Manager 1111 can ensure the validity of the metadata MD_C. The Unload Manager 1111 can also ensure the validity of the scope state tree while performing a read unload operation.

[0122] In one implementation, the uninstallation manager 1111 may perform the verification operation based on the version number included in the metadata MD_C. Alternatively, the uninstallation manager 1111 may perform the verification operation based on the version number included in the second response REP2.

[0123] In operation S581, the uninstallation manager 1111 can determine whether the original metadata file is the same as the metadata copy. The uninstallation manager 1111 can compare the original metadata file with the metadata copy. Here, the original metadata file may indicate the metadata MD_O managed by the file system FS, and the metadata copy may indicate the metadata MD_C managed by the uninstallation manager 1111.

[0124] Uninstall Manager 1111 can perform operation S582 when it is determined that the original metadata document and the copy of the metadata document are the same, and can perform operation S583 when it is determined that the original metadata document and the copy of the metadata document are different.

[0125] In this implementation, the uninstallation manager 1111 can determine whether the metadata original is the same as the metadata copy based on the version number included in the original metadata and the version number included in the metadata copy. The uninstallation manager 1111 can compare the version number included in the original metadata with the version number included in the metadata copy (or the version number included in the response). When the version number included in the original metadata is the same as the version number included in the metadata copy, the uninstallation manager 1111 can determine that the original metadata is the same as the metadata copy. When the version number included in the original metadata is different from the version number included in the metadata copy, the uninstallation manager 1111 can determine that the original metadata is different from the metadata copy.

[0126] In operation S582, the uninstallation manager 1111 can send the read uninstallation response R_OFF_REP to the application APP. For example, the read uninstallation response R_OFF_REP may include a status field indicating that the read uninstallation was successful. Since the original metadata is identical to the metadata copy, the uninstallation manager 1111 can determine that the result of the read uninstallation operation is valid. The uninstallation manager 1111 can then send the result of the read uninstallation operation to the application APP.

[0127] In operation S583, the uninstallation manager 1111 can notify the application APP that the read uninstallation failed. For example, the uninstallation manager 1111 can send a read uninstallation response, including a status field indicating that the read uninstallation failed, to the application APP. Since the original metadata and the metadata copy are different, the uninstallation manager 1111 can determine that the result of the read uninstallation operation is invalid. The uninstallation manager 1111 can notify the application APP that the read uninstallation has failed. However, the implementation is not limited to this.

[0128] In this implementation, the uninstallation manager 1111 can re-execute the read uninstallation operation instead of notifying the application APP of the read uninstallation failure. The uninstallation manager 1111 can recreate the metadata MD_C based on the metadata managed by the file system FS (i.e., updated metadata). The uninstallation manager 1111 can then send the adaptive read request to the storage device 1200 again based on the updated metadata MD_C. For example, the uninstallation manager 1111 can retry the read uninstallation operation based on the updated metadata MD_C.

[0129] Figure 9 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of the storage controller's methods.

[0130] Reference Figure 1 and Figure 9The storage controller 1210 can handle adaptive read requests. The storage controller 1210 can perform a second offload operation. When operating resources are insufficient, the storage controller 1210 can perform a reverse offload.

[0131] In operation S601, the storage controller 1210 may receive adaptive read requests. For example, the storage controller 1210 may receive a first adaptive read request A_READ1. The first adaptive read request A_READ1 may include a first address ADDR1 and the address of the host memory 1120 where metadata MD_C is stored. The storage controller 1210 may receive the metadata MD_C. Alternatively, the storage controller 1210 may read the metadata MD_C from the address of the host memory 1120.

[0132] In operation S602, the memory controller 1210 may send a read command to the non-volatile memory device 1220. For example, the memory controller 1210 may send a first read command R_CMD1 to the non-volatile memory device 1220 based on an adaptive read request. The first read command R_CMD1 may include a first physical address PADDR1 corresponding to a first address ADDR1.

[0133] In operation S603, the memory controller 1210 can receive read data from the non-volatile memory device 1220. The memory controller 1210 can receive first read data RD1 corresponding to the first physical address PADDR1.

[0134] In operation S604, the storage controller 1210 can determine whether to perform a second unloading operation. The storage controller 1210 can determine whether to perform the second unloading operation based on internal resources. The storage controller 1210 can determine whether operating resources are sufficient. When operating resources are sufficient, the storage controller 1210 can determine to perform the second unloading operation. When operating resources are insufficient, the storage controller 1210 can determine to perform a reverse unloading operation. When it is determined to perform the second unloading operation, the storage controller 1210 can perform the operation in operation S607, and when it is determined not to perform the second unloading operation (i.e., when it is determined to perform a reverse unloading operation), the storage controller 1210 can perform the operation in operation S605.

[0135] In this implementation, when there is an idle core, the storage controller 1210 can determine to perform a second unload operation. When there is no idle core, the storage controller 1210 can determine to perform a reverse unload.

[0136] In operation S605, the storage controller 1210 may send a response including a reverse unload field indicating an activation value to the host device 1100. In one embodiment, the storage controller 1210 may send first read data RD1 to the host device 1100. For example, the storage controller 1210 may write the first read data RD1 to a data page address included in the first adaptive read request A_READ1. The data page address may indicate an address of the host memory 1120. The storage controller 1210 may send a first response REP1 including a reverse unload request to the unload manager 1111.

[0137] In operation S606, the storage controller 1210 can receive adaptive read requests. For example, the storage controller 1210 can receive a second adaptive read request A_READ2 that includes a second address ADDR2. The second address ADDR2 can be generated by the unloading manager 1111.

[0138] In operation S607, the storage controller 1210 can calculate the second address based on metadata and read data. The storage controller 1210 can generate the second address ADDR2 based on the metadata MD_C and the first read data RD1. For example, the storage controller 1210 can calculate the file offset based on the first read data RD1. The storage controller 1210 can convert the file offset into the second address ADDR2 based on the metadata MD_C.

[0139] In operation S608, the memory controller 1210 may send a read command to the non-volatile memory device 1220. For example, the memory controller 1210 may send a second read command R_CMD2, which includes a second physical address PADDR2 corresponding to the second address ADDR2, to the non-volatile memory device 1220.

[0140] In operation S609, the memory controller 1210 can receive read data. The memory controller 1210 can receive second read data RD2 corresponding to the second physical address PADDR2 from the non-volatile memory device 1220.

[0141] In operation S610, the storage controller 1210 may send a response to the host device 1100. The storage controller 1210 may send second read data RD2 to the host device 1100. The storage controller 1210 may write the second read data RD2 to the data page address included in the most recently received adaptive read request. The data page address may indicate an address of the host memory 1120. The storage controller 1210 may send a response including a reverse unload field indicating a deactivation value to the unload manager 1111. Alternatively, the storage controller 1210 may send a response including a termination field indicating termination to the unload manager 1111. For example, the termination field may be a field used to distinguish whether the termination field signifies actual completion or a request for the first unload operation.

[0142] Figure 10 This shows the implementation details. Figure 9 The flowchart for operation S604.

[0143] Reference Figure 1 , Figure 9 and Figure 10 Operation S604 may include operations S621 to S624. In operation S621, the storage controller 1210 may acquire resource status. Resource status can be used as a reference for determining whether to perform a second offload operation. For example, the storage controller 1210 may acquire operational resource status. Operational resources may include one or more cores or processors. For example, resource status may be operational resource status. Specifically, resource status may include status information indicating whether a core is idle or busy (or in operation). Resource status may include information indicating the utilization or load of a core. Resource status may include the length of the task queue allocated to the core (or the number of tasks (or requests) stored in the queue).

[0144] In operation S622, the storage controller 1210 can determine whether resources are sufficient. In this embodiment, the storage controller 1210 can determine whether operating resources are sufficient based on the state of operating resources. For example, the storage controller 1210 can determine whether there are sufficient operating resources to perform the second offload operation. The storage controller 1210 can determine whether there are any idle cores among the multiple cores. The storage controller 1210 can perform operation S623 when operating resources are sufficient, and can perform operation S624 when operating resources are insufficient.

[0145] In operation S623, the storage controller 1210 can determine to perform a second unloading operation. Since the storage controller 1210 has sufficient operating resources, it can be determined that the second unloading operation will be performed within the storage controller 1210.

[0146] In operation S624, the storage controller 1210 may determine to perform a reverse unloading operation. The storage controller 1210 may determine to perform a first unloading operation. Because the storage controller 1210 has insufficient operating resources, it may determine not to perform a second unloading operation. The storage controller 1210 may determine to perform a reverse unloading operation.

[0147] As described above, the storage controller 1210 can determine whether to perform a second offload operation based on the operating resource status. For example, when a core or processor is in an overloaded state, the storage controller 1210 can perform a reverse offload to prevent increased latency.

[0148] Figure 11A This shows the implementation details. Figure 9 The flowchart for operation S604. Figure 11B This shows the implementation details. Figure 11A The flowchart for the operation of S640. Figure 11C This shows the implementation details. Figure 11A The flowchart for operating the S650.

[0149] Reference Figure 1 , Figure 9 and Figure 11A Operation S604 may include operations S630 to S650. The storage controller 1210 may determine a reverse offloading strategy based on the operation execution time. For example, the reverse offloading strategy may include a first strategy and a second strategy. The first strategy may indicate a strategy for operations whose execution time is greater than a first threshold. The second strategy may indicate a strategy for operations whose execution time is equal to or less than the first threshold.

[0150] In operation S630, the storage controller 1210 can compare the operation execution time with a threshold. The storage controller 1210 can determine whether the execution time of the second unloading operation is greater than the first threshold. The execution time of the second unloading operation can be predetermined or predicted. The first threshold can be a predetermined value. The first threshold can be adjusted. The storage controller 1210 can perform operation S640 when the operation execution time is greater than the first threshold, and can perform operation S650 when the operation execution time is less than or equal to the first threshold.

[0151] In operation S640, the storage controller 1210 may execute a first policy. For example, the first policy may be a policy for operations with relatively long execution times. The first policy may be a reverse offload priority policy. For example, the first policy may be a policy for determining whether to execute a second offload operation solely based on the presence or absence of an idle core.

[0152] In operation S650, the storage controller 1210 can execute a second policy. For example, the second policy could be a policy for operations with relatively short execution times. The second policy could be a second offload priority policy. For example, the second policy could be a policy for determining whether to execute a second offload operation based on the number of tasks assigned to a core, even if no idle cores exist.

[0153] Reference Figure 11B Operation S640 may include operations S641 to S643. In operation S641, the storage controller 1210 may determine whether resources are sufficient. The storage controller 1210 may perform operation S643 when resources are sufficient, and may perform operation S642 when resources are insufficient.

[0154] In operation S642, the storage controller 1210 can determine to perform a reverse unloading operation. Because the storage controller 1210 has insufficient resources, it can be determined not to perform a second unloading operation. The storage controller 1210 can determine that performing a reverse unloading operation would cause the unloading manager 1111 to perform the first unloading operation to prevent increased latency. Afterwards, the storage controller 1210 can execute... Figure 9 The operation of S605.

[0155] In operation S643, the storage controller 1210 can determine to perform a second offload operation. Since the storage controller 1210 has sufficient resources, it can determine to perform the second offload operation. Afterwards, the storage controller 1210 can execute... Figure 9 The operation of S607.

[0156] Reference Figure 11C Operation S650 may include operations S651 to S654. In operation S651, the storage controller 1210 may determine whether resources are sufficient. The storage controller 1210 may perform operation S652 when resources are sufficient, and may perform operation S653 when resources are insufficient.

[0157] In this configuration, the storage controller 1210 can determine that resources are sufficient when an available core exists. The storage controller 1210 can determine that resources are sufficient when an unassigned core exists. The storage controller 1210 can determine that resources are sufficient when an operation is pending.

[0158] In operation S652, the storage controller 1210 can determine to perform a second offload operation. Since the storage controller 1210 has sufficient resources, it can determine to perform the second offload operation. Afterwards, the storage controller 1210 can execute... Figure 9 The operation of S607.

[0159] In operation S653, the storage controller 1210 can compare the number of tasks with a second threshold. The second threshold can be a predetermined value. The second threshold can be adjusted. The storage controller 1210 can determine whether the number of tasks allocated to the core is greater than the second threshold. The storage controller 1210 can perform operation S654 when the number of tasks is greater than the second threshold, and can perform operation S652 when the number of tasks is equal to or less than the second threshold. The storage controller 1210 can determine to perform a second offload operation based on determining that the number of tasks is equal to or less than the second threshold. Based on determining that the number of tasks is greater than the second threshold, the storage controller 1210 can determine not to perform the second offload operation (i.e., it can determine to perform reverse offload).

[0160] In operation S654, the storage controller 1210 can determine to perform reverse unloading. Because the storage controller 1210 has insufficient resources, it can be determined not to perform the second unloading operation. When resources are insufficient and the number of tasks is large, the storage controller 1210 can determine to perform reverse unloading so that the unloading manager 1111 performs the first unloading operation to prevent increased latency. Afterwards, the storage controller 1210 can execute... Figure 9 The operation of S605.

[0161] Storage controller 1210 may have relatively lower operational capabilities compared to host controller 1110. Storage controller 1210 can dynamically execute a second offload operation. For example, storage controller 1210 can determine whether to execute a second offload operation based on the availability of operational resources. Storage controller 1210 can execute a second offload operation when spare operational resources exist, and can execute a reverse offload operation when spare operational resources do not exist. Therefore, increased latency due to a lack of operational resources for storage device 1200 can be prevented.

[0162] Figure 12A and Figure 12B These are shown separately according to the embodiments. Figure 1 A diagram illustrating the operation of the storage system.

[0163] Reference Figure 1 and Figure 12A The CPU 1212 may include multiple cores C1 to C4. For example, the unloading operation may be a search operation within page data. The page data PD may include a first region S1 to a fourth region S4. The storage system 1000 may perform a read unloading operation. The storage device 1200 may perform a second unloading operation. In an embodiment, the first core C1 may perform a second unloading operation. The first core C1 may perform a search operation on the entire page data PD. For example, the first core C1 may perform a search operation on all regions from the first region S1 to the fourth region S4.

[0164] Reference Figure 1 and Figure 12B The storage device 1200 can receive an adaptive read request that includes a parallel field indicating an activation value. Based on the adaptive read request that includes the parallel field indicating an activation value, the storage device 1200 can perform a parallel second offload operation by multiple cores C1 to C4. For example, when resources are insufficient, the storage device 1200 can perform a reverse offload, and when resources are sufficient, the storage device 1200 can perform a second offload operation by multiple cores C1 to C4.

[0165] For example, the first core C1 can perform a search operation on the first region S1, the second core C2 can perform a search operation on the second region S2, the third core C3 can perform a search operation on the third region S3, and the fourth core C4 can perform a search operation on the fourth region S4. The first core C1 can generate first intermediate data IMD1 as the result of the operation on the first region S1. The second core C2 can generate second intermediate data IMD2 as the result of the operation on the second region S2. The third core C3 can generate third intermediate data IMD3 as the result of the operation on the third region S3. The fourth core C4 can generate fourth intermediate data IMD4 as the result of the operation on the fourth region S4.

[0166] In the following text, it is assumed that the first core C1 out of the first core C1 to the fourth core C4 is the master core (or dominant core). The first core C1, as the master core, can generate the final data FD based on the first intermediate data IMD1 to the fourth intermediate data IMD4. The final data FD can be compared with... Figure 12A The operation results of using only the entire page data PD of the first core C1 are the same.

[0167] Storage system 1000 can use multiple eBPFs to perform a second offload operation in parallel. Host device 1100 can send multiple eBPFs to storage device 1200. Each of multiple cores C1 to C4 can perform a recommit operation in parallel through its corresponding eBPF. For example, each of multiple cores C1 to C4 can perform a second offload operation in parallel through its corresponding eBPF.

[0168] In this implementation, the parallel second unload operation may instruct multiple cores C1 to C4 to perform offset operations for subsequent read operations in parallel, based on read data or previous read operations. For example, each of the multiple cores C1 to C4 may receive a portion of page data PD. Page data PD1 may be first read data RD1 as a result of the first read operation. Each of the multiple cores C1 to C4 may receive a corresponding region and search for a file offset corresponding to a subsequent read operation within that region. Each of the multiple cores C1 to C4 may convert the file offset into a logical address. Each of the multiple cores C1 to C4 may generate its result. For example, each of the multiple cores C1 to C4 may generate corresponding intermediate data.

[0169] In one implementation, each of the multiple cores C1 through C4 can write its results on a draft page. For example, the draft page can indicate an address of host memory 1120. However, the implementation is not limited to this, and the draft page can indicate an address of buffer memory 1214. The address of the draft page can be included in the adaptive read request. Alternatively, the metadata MD_C can include the address of the draft page. Alternatively, the adaptive read request can include the address of host memory 1120 where auxiliary data is stored. The auxiliary data can include the address of the draft page. For example, the draft page can include a first draft page through a fourth draft page.

[0170] For example, the first core C1 can write the first intermediate data IMD1 to the first draft page, the second core C2 can write the second intermediate data IMD2 to the second draft page, the third core C3 can write the third intermediate data IMD3 to the third draft page, and the fourth core C4 can write the fourth intermediate data IMD4 to the fourth draft page. The first core C1, previously designated as the primary core, can copy the first intermediate data IMD1 to the fourth intermediate data IMD4 to write the final data FD to the fifth draft page.

[0171] As described above, the storage device 1200 can perform a parallel second unloading operation. Operation execution time (or execution duration) can be reduced by parallelizing the operation.

[0172] Figure 13 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of a storage system method.

[0173] Reference Figure 1 and Figure 13The storage system 1000 can perform parallel hybrid read-unload operations. In operation S710, the unload manager 1111 can obtain parallel read-unload requests. The application APP can send the parallel read-unload request to the unload manager 1111. In this implementation, the application APP can send the parallel read-unload request to the unload manager 1111 using a system call. The parallel read-unload request can be of the type of system call. For example, the parallel read-unload request R_OFF_REQ can be read_sode_parallel().

[0174] In operation S720, the unloading manager 1111 can send an adaptive read request to the storage device 1200. The unloading manager 1111 can send a first adaptive read request to the storage device 1200, which includes a parallel field indicating an activation value. The first adaptive read request may include a first address and the address of the host memory 1120 where the metadata MD_C is stored.

[0175] In operation S730, storage device 1200 can perform a first read operation. Storage controller 1210 can, in response to a first adaptive read request A_READ1, translate a first address ADDR1 into a first physical address PADDR1. Storage controller 1210 can send a first read command R_CMD1, including the first physical address PADDR1, to non-volatile memory device 1220. Non-volatile memory device 1220 can send first read data RD1, corresponding to the first physical address PADDR1, to storage controller 1210.

[0176] In operation S740, storage device 1200 can determine whether to perform a second unloading operation. Storage device 1200 can determine whether to perform a second unloading operation based on internal resources. When it is determined that the second unloading operation should be performed, storage system 1000 can perform operation S750, and when it is determined that the second unloading operation should not be performed (i.e., when it is determined that a reverse unloading operation should be performed), storage system 1000 can perform operation S760.

[0177] In operation S750, storage device 1200 can perform a parallel second offload operation. Storage device 1200 can perform the parallel second offload operation based on metadata MD_C and first read data RD1. For example, storage device 1200 can calculate a file offset based on the first read data RD1. Multiple cores can calculate the file offset to be used in subsequent read operations in parallel based on the first read data RD1. Latency can be reduced by performing the operation with multiple cores. Storage device 1200 can convert the file offset into a logical address based on metadata MD_C. Storage device 1200 can generate a second address ADDR2. After operation S750, storage system 1000 can perform the operation of operation S790.

[0178] In operation S760, storage device 1200 can send a reverse unloading request to unloading manager 1111. In operation S770, unloading manager 1111 can perform a first unloading operation. In operation S780, unloading manager 1111 can send an adaptive read request to storage device 1200. Unloading manager 1111 can send a second adaptive read request A_READ2, including the second address ADDR2, to storage device 1200. After operation S780, storage system 1000 can execute... Figure 4 Operation S190 is performed. In operation S790, the storage device 1200 can perform a second read operation. Operations S760 to S790 are related to... Figure 4 Operations S160 to S190 are the same or similar, and therefore their detailed descriptions are omitted.

[0179] Figure 14 This is a more detailed block diagram illustrating the workload analyzer, uninstall manager, and uninstall engine according to the implementation method.

[0180] Reference Figure 1 , Figure 3 and Figure 14 The host controller 1110 may include an offload manager 1111 and a workload analyzer 1112. The offload manager 1111 may include computing logic 11 and metadata management logic 12. The offload engine 1211 may include a computing unit 110, a determination unit 120, and a resource monitoring unit 130. For ease of description, detailed descriptions of the above components are omitted.

[0181] The workload analyzer 1112 can analyze the workload of an application (APP). In one embodiment, the workload analyzer 1112 can analyze the workload statically. In another embodiment, the workload analyzer 1112 can analyze the workload dynamically. For example, the workload analyzer 1112 can extract workload characteristics by monitoring data access (or input / output) between the application (APP) and the storage device 1200. The workload analyzer 1112 can detect and analyze data access patterns. The workload analyzer 1112 can monitor requests (or commands) and data between the application (APP) and the storage device 1200. The workload analyzer 1112 can extract workload characteristics based on the monitoring results.

[0182] In one implementation, workload characteristics may include data-dependent read patterns. However, implementations are not limited to this, and workload characteristics may also include at least one of read-intensive, write-intensive, read ratio, workload size, working set size, cache state information (e.g., hit rate), and workflow.

[0183] In an implementation, the workload analyzer 1112 can determine whether the workload is a data-dependent read mode (or a data-dependent access mode). A data-dependent read mode may include at least two read operations, and a subsequent read operation may indicate a data access mode performed based on the result of a previous read operation. In other words, a data-dependent read mode may include a first read operation and a second read operation, and a second address corresponding to the second read operation may indicate a data access mode calculated based on the first read data corresponding to the first read operation.

[0184] In this implementation, the workload analyzer 1112 can send workload characteristics to the offload manager 1111 or the application APP. The workload analyzer 1112 can notify the offload manager 1111 or the application APP that the workload is in a data-dependent read mode. The storage system 1000 can perform a read offload operation or a parallel read offload operation based on the workload characteristics being in a data-dependent read mode.

[0185] Figure 15 This illustrates the operation according to the implementation method. Figure 1 A flowchart illustrating an example of a storage system method.

[0186] Reference Figure 1 , Figure 14 and Figure 15 During operation S810, storage system 1000 can analyze data access patterns. For example, storage system 1000 can perform one of workload static analysis and dynamic analysis. Storage system 1000 can monitor the data access patterns of the workload between application APP and storage device 1200.

[0187] In operation S820, storage system 1000 can detect that the workload is in a data-dependent read mode. Storage system 1000 can determine that the workload is in a data-dependent read mode based on the results of static analysis or dynamic analysis. Storage system 1000 can determine whether the workload needs to access the storage device at least twice (e.g., a first read operation and a second read operation), and perform the second read operation based on the result of the first read operation.

[0188] In an implementation, the workload analyzer 1112 can notify the uninstall manager 1111 or the application APP that the workload is in a data-dependent read mode.

[0189] In operation S830, storage system 1000 can perform a read offload operation. Storage system 1000 can perform a read offload operation to execute at least one of a first offload operation and a second offload operation. Storage system 1000 can handle workloads through the read offload operation.

[0190] Figure 16 This is a diagram of the system according to the implementation method.

[0191] Reference Figure 16 The system 2000 may include a main processor 2100, memories 2200a and 2200b and storage devices 2300a and 2300b, and may also include at least one of an image capture device 2410, a user input device 2420, a sensor 2430, a communication device 2440, a display 2450, a speaker 2460, a power supply device 2470 and a connection interface 2480.

[0192] The main processor 2100 can control the overall operation of the system 2000, and more specifically, the operation of other components constituting the system 2000. Such a main processor 2100 can be implemented as a general-purpose processor, a special-purpose processor, an application processor, etc.

[0193] The main processor 2100 may include one or more CPU cores 2110, and may also include a controller 2120 for controlling memories 2200a and 2200b and / or storage devices 2300a and 2300b. According to an embodiment, the main processor 2100 may also include an accelerator 2130 as dedicated circuitry for high-speed data operations such as artificial intelligence (AI) data operations. The accelerator 2130 may include a graphics processing unit (GPU), a neural processing unit (NPU), and / or a data processing unit (DPU), and may be implemented as a separate chip physically independent of other components of the main processor 2100.

[0194] Memory 2200a and 2200b can be used as the main memory device of system 2000 and can include volatile memory such as SRAM and / or DRAM, but can also include non-volatile memory such as flash memory, FRAM, PRAM and / or RRAM. Memory 2200a and 2200b can be implemented in the same package as main processor 2100.

[0195] Storage devices 2300a and 2300b can be used as non-volatile storage devices that store data regardless of power supply, and can have a relatively large storage capacity compared to memory devices 2200a and 2200b. Storage devices 2300a and 2300b may include storage controllers 2310a and 2310b and non-volatile memory (NVM) 2320a and 2320b that store data under the control of storage controllers 2310a and 2310b. Non-volatile memory 2320a and 2320b may include flash memory with a 2D or 3D vertical NAND (V-NAND) structure, but may also include other types of non-volatile memory such as PRAM and / or RRAM.

[0196] Storage devices 2300a and 2300b may be included in system 2000 in a physically separate state from main processor 2100, or may be implemented in the same package as main processor 2100. In some embodiments, storage devices 2300a and 2300b may be detachably combined with other components of system 2000 via an interface such as a connection interface 2480 having the form of a solid-state device (SSD) or memory card, as will be described later. Such storage devices 2300a and 2300b may be devices that apply standard protocols such as UFS, eMMC, or Non-Volatile Memory High Speed ​​(NVMe), but are not limited thereto.

[0197] The image capture device 2410 can capture still images or moving images, and can be a camera, video camera, webcam, etc.

[0198] User input device 2420 can receive various types of data input from the user in system 2000, and can be a touchpad, keypad, keyboard, mouse and / or microphone.

[0199] Sensor 2430 can detect various types of physical quantities that can be obtained from outside the system 2000 and convert the sensed physical quantities into electrical signals. Sensor 2430 can be a temperature sensor, pressure sensor, illuminance sensor, position sensor, acceleration sensor, biosensor, gyroscope sensor, etc.

[0200] The communication device 2440 can transmit and receive signals relative to other devices outside the system 2000 according to various communication protocols. Such a communication device 2440 can be implemented by including an antenna, a transceiver, and / or a modulation / demodulation unit (modem).

[0201] The display 2450 and the speaker 2460 can be used as output devices to output visual and auditory information to the user of the system 2000, respectively.

[0202] The power supply unit 2470 can appropriately convert the power supplied from the battery and / or external power source embedded in the system 2000 and supply the converted power to each component of the system 2000.

[0203] The connection interface 2480 provides a connection between the system 2000 and external devices connected to the system 2000 for exchanging data with the system 2000. The connection interface 2480 can be implemented in various interface methods such as: Advanced Technology Attachment (ATA), Serial ATA (SATA), External SATA (e-SATA), Small Computer Interface (SCSI), Serial Attached SCSI (SAS), Peripheral Component Interconnect (PCI), PCI High Speed ​​(PCIe), NVMe, IEEE 1394, Universal Serial Bus (USB), Secure Digital (SD) card interface, MMC, eUFS, Compact Flash (CF) card interface, etc.

[0204] In an implementation, the processor 2100 may be a reference Figures 1 to 15 The described host controller 1110, and memories 2200a and 2200b may be referenced. Figures 1 to 15 The host memory 1120 is described, and storage devices 2300a and 2300b may be referenced. Figures 1 to 15 The storage device 1200 is described. The system 2000 can be based on a reference... Figures 1 to 15 The described method performs read-offload operations and parallel read-offload operations. Storage devices 2300a and 2300b can perform a second offload operation, a reverse offload operation, and a parallel second offload operation. Processor 2100 can perform a first offload operation. Therefore, the operational load of host controller 1110 can be distributed and latency can be reduced. In some embodiments, when the internal resources of storage devices 2300a and 2300b are insufficient, reverse offload can be performed to prevent increased latency. System 2000 with improved performance is provided.

[0205] Although this disclosure contains numerous specific implementation details, these should not be construed as limiting the scope of any invention or the scope that may be claimed, but rather as descriptions of features that may be specific to particular embodiments of the invention. Certain features described in this specification in the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually or in any suitable sub-combination in multiple embodiments. Furthermore, although features may be described above as functioning in certain combinations, one or more features from a combination may be removed from that combination in some cases, and the combination may be for sub-combinations or variations thereof.

[0206] Although this disclosure has been specifically shown and described with reference to embodiments thereof, it will be understood that various changes in form and detail may be made herein without departing from the spirit and scope of the appended claims.

Claims

1. A method of operating a storage system, the storage system comprising a host device and a storage device, the host device comprising an unloading manager, the method comprising: The uninstallation manager receives read uninstallation requests for workloads with data-dependent read patterns; The uninstallation manager sends a first adaptive read request, including metadata and a first address, to the storage device based on the read uninstallation request; The storage device performs a first read operation corresponding to the first address based on the first adaptive read request; Based on the storage device determining to perform a second unload operation according to its internal resources, a second address is generated based on the metadata and the first read data as a result of the first read operation, and a second read operation corresponding to the second address is performed. as well as Based on the storage device's determination, according to the internal resources, not to perform the second uninstallation operation, a first response, including a reverse uninstallation field indicating an activation value, is sent to the uninstallation manager.

2. The method according to claim 1, further comprising: Based on the first response, which includes the reverse unload field indicating the activation value, the unload manager generates a second address based on the metadata and the first read data, and sends a second adaptive read request including the second address to the storage device; as well as The storage device performs a second read operation corresponding to the second address based on the second adaptive read request.

3. The method according to claim 1, further comprising: The metadata is generated by copying the original metadata of the file system by the uninstallation manager.

4. The method according to claim 1, wherein, The metadata of the first adaptive read request includes a range state tree.

5. The method according to claim 4, further comprising: The storage device sends the second read data corresponding to the second read operation to the host device; The storage device sends a second response, including the reverse unload field indicating a deactivation value, to the host device; as well as The uninstallation manager performs a verification operation based on the second response.

6. The method according to claim 5, wherein, Performing the verification operation includes: the uninstallation manager determining that the metadata of the first adaptive read request is the same as the metadata of the file system.

7. The method according to claim 5, wherein, Performing the verification operation includes the uninstallation manager determining that the value of the version number field included in the second response is the same as the version number of the file system.

8. The method according to claim 1, wherein, The storage device determines, based on the internal resources, to perform the second offloading operation, including: Receive the status of operational resources; The adequacy of operational resources is determined based on the status of the operational resources. The second unloading operation is performed based on the determination that the operational resources are sufficient; and The decision is made not to perform the second uninstallation operation based on the determination that the operating resources are insufficient.

9. The method according to claim 1, wherein, The storage device determines, based on the internal resources, to perform the second offloading operation, including: The first strategy is executed based on the operation execution time exceeding a first threshold; and The second strategy is executed based on the operation execution time being equal to or less than the first threshold.

10. The method according to claim 9, wherein, Executing the first strategy includes: The second unloading operation is determined to be performed based on the assumption that sufficient operational resources are available; and Based on the determination that the operational resources are insufficient, the second uninstallation operation will not be performed, and Executing the second strategy includes: Based on the determination that the operational resources are sufficient, the second uninstallation operation is to be executed. Based on the determination that the operational resources are insufficient, the number of tasks assigned to the core relative to the second threshold is determined. The second uninstallation operation is not performed based on the determination that the number of tasks exceeds a second threshold; and The second unloading operation is determined to be performed based on whether the number of tasks is equal to or less than the second threshold.

11. The method according to claim 1, further comprising: The uninstallation manager receives parallel read uninstallation requests; The uninstallation manager sends a third adaptive read request corresponding to the parallel read uninstallation request to the storage device; The storage device performs a third read operation corresponding to the third address included in the third adaptive read request; The storage device determines to perform the second unloading operation based on the internal resources; as well as A second offloading operation is performed in parallel by multiple cores included in the storage device. The third adaptive read request includes a parallel field indicating an activation value, and the parallel second unload operation indicates an operation to determine the file offset to be used for subsequent read operations based on the third read data, which is the result of the third read operation performed in parallel by the plurality of cores.

12. The method according to claim 1, further comprising: The workload data access patterns are analyzed by the workload analyzer included in the host device; The workload analyzer detects that the workload is a data-dependent read mode; as well as The workload analyzer notifies the application or the uninstall manager that the workload is in the data-dependent read mode.

13. A method of operating a storage controller, the method comprising: Receive a first adaptive read request, the first adaptive read request including a first address and an address of the host memory where metadata is stored; Read the metadata from the address in the host memory; Send the first read command corresponding to the first address to the non-volatile memory device; Receive first read data corresponding to the first read command from the non-volatile memory device; Based on the determination of internal resources to perform a second unload operation, a second address is generated based on the metadata and the first read data, and a second read operation corresponding to the second address is performed; Based on the determination that the second unloading operation will not be performed according to the internal resources, a first response including a reverse unloading field indicating an activation value is sent to the host device. as well as A second response, including a reverse uninstallation field indicating a deactivation value and a version number field indicating the version number of the metadata, is sent to the host device. The first adaptive read request is an offload request for workloads with a data-dependent read pattern.

14. The method according to claim 13, wherein, The metadata includes a range state tree.

15. The method according to claim 13, wherein, Determining to perform the second uninstallation operation based on the internal resources includes: Receive the status of operational resources; The adequacy of operational resources is determined based on the status of these operational resources; The second unloading operation is performed based on the determination that the operational resources are sufficient; and The decision is made not to perform the second uninstallation operation based on the determination that the operating resources are insufficient.

16. The method of claim 13, further comprising: Receive a third adaptive read request, including a parallel field indicating the activation value; Perform a third read operation corresponding to the third address included in the third adaptive read request; The second uninstallation operation is determined based on the internal resources; as well as The second offload operation is performed in parallel by multiple cores included in the storage controller. The parallel second unload operation indicates an operation to determine the file offset to be used for subsequent read operations based on third read data, which is the result of the third read operation performed in parallel by the plurality of cores.

17. A storage system, comprising: The host device includes an uninstallation manager; as well as Storage devices, including storage controllers and non-volatile memory devices, The unloading manager is configured to receive read unloading requests for workloads with a data-dependent read pattern, and based on the read unloading requests, send a first adaptive read request, including metadata and a first address, to the storage device. The storage controller is configured as follows: Based on the first adaptive read request, execute the first read operation corresponding to the first address; Based on the determination of internal resources to perform a second unload operation, a second address is generated based on the metadata and the first read data as a result of the first read operation, and a second read operation corresponding to the second address is executed; and Based on the determination that the second uninstallation operation will not be performed according to the internal resources, a first response including a reverse uninstallation field indicating an activation value is sent to the uninstallation manager.

18. The storage system according to claim 17, in, Based on the first response, including the reverse unloading field indicating the activation value, the unloading manager is configured to generate a second address based on the metadata and the first read data, and send a second adaptive read request including the second address to the storage device. The storage controller is configured to perform a second read operation corresponding to the second address based on the second adaptive read request.

19. The storage system according to claim 17, in, The storage controller is configured to send second read data corresponding to the second read operation to the host device, and to send a second response including a reverse offload field indicating a deactivation value to the host device. The uninstallation manager is configured to perform a verification operation based on the second response, the verification operation being used to determine that the metadata is the same as the metadata of the file system.

20. The storage system according to claim 17, in, The host device includes a workload analyzer, and The workload analyzer is configured to analyze the data access patterns of workloads, detect that the workload is in a data-dependent read mode, and notify the application or the uninstallation manager that the workload is in the data-dependent read mode.