Host device, method of operating host device, and computing system
By introducing an early read control module and a data control virtual machine in the host device, dynamically controlling the data size and logical address to be read, the problem of low efficiency in advance read operation in the prior art is solved, and efficient early reading of continuous files and improved computing system performance is achieved.
Patent Information
- Application Number
- CN202411380477.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-10-05
- Filing Date
- 2024-09-30
- Publication Date
- 2025-04-08
AI Technical Summary
The prior art is difficult to effectively improve the efficiency of early reading operations, especially when processing continuous files, the size of the data to be read is difficult to dynamically control according to the early reading operations.
By introducing an early read control module and a data control virtual machine in the host device, a read command instructing early read is generated, and the data size and logical address to be read are determined based on application-related information, thereby achieving efficient early reading of continuous files.
The efficiency of the early read operation is improved, the data size to be read can be dynamically controlled according to the early read operation, the read request processing of multiple files is optimized, and the overall performance of the computing system is improved.
Smart Images

Figure CN119781668A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to Korean Patent Application No. 10-2023-0132692, filed on October 5, 2023, the disclosure of which is incorporated herein by reference in its entirety. Technical Field
[0003] Various embodiments of the present disclosure generally relate to a semiconductor device, and more particularly, to a host device for controlling a read-ahead operation, a method of operating the host device, and a computing system including the host device. Background Art
[0004] The storage device may be a device that stores data. The data stored in the storage device may be loaded into the memory in response to a read request received from the host device, and the host device may run an application based on the data loaded into the memory.
[0005] Before receiving a data request from an application, the host device may read (pre-read) data stored in a storage device in advance based on an advance read operation and load the data into the memory. The advance read operation may be performed only within a single file, or may be performed according to a size specified by the kernel. However, in order to improve the efficiency of the advance read operation, the size of the target file or data to be read needs to be expanded. Summary of the invention
[0006] Various embodiments of the present disclosure are directed to a host device that can perform a read-ahead operation on consecutive files, a method of operating the host device, and a computing system including the host device.
[0007] Various embodiments of the present disclosure are directed to a host device that can control the size of data to be read according to a read-ahead operation, a method of operating the host device, and a computing system including the host device.
[0008] An embodiment of the present disclosure may provide a method for operating a host device. The method may include: determining that a read request for data in a first file among multiple files stored in a storage device is continuous; in response to determining that the read request is continuous, generating a first read command indicating to read the second data in advance, the second data is continuous with the first data corresponding to the read request among multiple data in the first file; determining a logical address corresponding to the first read command; providing the first read command and the logical address to the storage device; determining whether the read request in advance for the first file has been completed based on a first file pointer and a first offset corresponding to a storage area storing the first file in the storage device; and in response to determining that the read request in advance for the first file has been completed, executing a read request in advance for a second file among the multiple files.
[0009] Embodiments of the present disclosure may provide a computing system. The computing system may include: a storage device configured to store multiple files related to an application and output data related to at least one of the multiple files in response to a read command; and a host device configured to temporarily store the data output from the storage device and run the application based on the data, wherein the host device is configured to provide a first read command and a second read command to the storage device in response to a sequential read request for a first file among the multiple files, and wherein the first read command indicates to read data in the first file in advance based on information related to the application, and the second read command indicates to read data in a second file that is continuous with the first file among the multiple files in advance.
[0010] Other features, aspects, and advantages of embodiments of the present disclosure will become apparent from the following detailed description and accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] Figure 1 is a diagram illustrating a computing system according to an embodiment of the present disclosure.
[0012] Figure 2 is a diagram illustrating a software layer structure of a host device according to an embodiment of the present disclosure.
[0013] Figure 3 is a diagram for describing a read-ahead operation according to an embodiment of the present disclosure.
[0014] Figure 4 is a diagram illustrating a data control virtual machine according to an embodiment of the present disclosure.
[0015] Figure 5A and Figure 5B is a diagram for describing a read-ahead operation on consecutive files according to an embodiment of the present disclosure.
[0016] Figure 6is a diagram illustrating determining the size of data read through a read-ahead operation according to an embodiment of the present disclosure.
[0017] Figure 7 is a flowchart illustrating a method of operating a host device according to an embodiment of the present disclosure.
[0018] Figure 8 is a flowchart illustrating a method of operating a host device according to an embodiment of the present disclosure. DETAILED DESCRIPTION
[0019] The specific structural or functional descriptions in the embodiments of the present disclosure introduced in this specification are provided as examples to describe the embodiments according to the concepts of the present disclosure. The embodiments according to the concepts of the present disclosure can be practiced in various forms and should not be interpreted as being limited to the embodiments described in this specification.
[0020] Figure 1 is a diagram illustrating a computing system 1000 according to an embodiment of the present disclosure.
[0021] Reference Figure 1 , the computing system 1000 may include a host device 1100 and a storage device 1200 .
[0022] The host device 1100 may store data in the storage device 1200, or may read data stored in the storage device 1200. The host device 1100 may include a host controller 1110, a host memory 1120, a data control virtual machine 1130, and a read-ahead control module 1140. The host controller 1110, the host memory 1120, the data control virtual machine 1130, and the read-ahead control module 1140 may communicate with each other through an internal communication bus 1150.
[0023] The host controller 1110 may control the overall operation of the host device 1100. In an embodiment, the host controller 1110 may run an application, an operating system (OS), etc. for controlling the computing system 1000. The host controller 1110 may run the application, the operating system, etc. based on the data stored in the host memory 1120. For example, the host controller 1110 may include a processor, an interface, and a graphic engine that run the application, the operating system, etc. Moreover, the host controller 1110 may generate a control signal for controlling the data control virtual machine 1130 and the read-ahead control module 1140, and may provide the control signal to the data control virtual machine 1130 and the read-ahead control module 1140.
[0024] In an embodiment, the host controller 1110 may communicate with the storage device 1200 using at least one of various communication standards or interfaces such as: Universal Serial Bus (USB), Serial AT Attachment (SATA), Serial SCSI (SAS), High-Speed Inter-Chip (HSIC), Small Computer System Interface (SCSI), Peripheral Component Interconnect (PCI), PCI Express (PCIe), Non-Volatile Memory Express (NVMe), Universal Flash Storage (UFS), Secure Digital (SD), MultiMedia Card (MMC), Embedded MMC (eMMC), Dual In-line Memory Module (DIMM), Registered DIMM (RDIMM), and Load Reduced DIMM (LRDIMM).
[0025] The host memory 1120 may be used as a main memory, a working memory, a buffer memory, or a cache memory of the host device 1100. The host memory 1120 may include a volatile memory such as a DRAM or an SRAM.
[0026] In an embodiment, under the control of the host controller 1110, the host memory 1120 may store various types of information required for the operation of the host device 1100. For example, the host memory 1120 may store data related to applications, operating systems, etc., and one or more programs.
[0027] In an embodiment, under the control of the host controller 1110, the host memory 1120 may temporarily store data to be transmitted to or received from the storage device 1200. For example, the host memory 1120 may load data related to an application or an operating system from the storage device 1200 and may store the loaded data.
[0028] The data control virtual machine 1130 may run a program, for example, a program implemented as an extended Berkeley Packet Filter (eBPF). The data control virtual machine 1130 may include instructions for controlling information related to an application or an operating system.
[0029] In an embodiment, the information related to the application may include application identification information for identifying the application and information indicating whether the files related to the application are continuous (sequential) with each other. Further, the information related to the application may include file pointers, offsets, size information of the files related to the application, and data size setting information corresponding to the application.
[0030] The read-ahead control module 1140 may run a program configured to control the read-ahead operation. In an embodiment, the read-ahead control module 1140 may include instructions for reading in advance a plurality of data in a plurality of files stored in the storage device 1200 based on information related to the application and loading the read-ahead data into the host memory 1120.
[0031] In an embodiment, the host controller 1110 can control the advance reading operation of multiple files stored in the storage device 1200 by controlling the data control virtual machine 1130 and the advance reading control module 1140. For example, the host controller 1110 can generate a first read command indicating to read the data in the first file in advance in response to a sequential read request for the first file among multiple files. Moreover, the host controller 1110 can determine whether to generate a second read command indicating to read the data in the second file in advance based on information related to the application. Here, the data in the second file is data that is continuous (or in sequence) with the first file among the multiple files. Further, the host controller 1110 can check the size of the data to be read in response to the first read command based on information related to the application.
[0032] In an embodiment, the data control virtual machine 1130 and the read ahead control module 1140 may be implemented as hardware, software, or a combination of hardware and software. In an example, each of the data control virtual machine 1130 and the read ahead control module 1140 may be a circuit or a processor operating according to an algorithm, or a processor running a program. In another embodiment, Figure 1 Unlike the illustrated embodiment, each of the data control virtual machine 1130 and the read-ahead control module 1140 may be a program stored in the host memory 1120 and may be executed by the host controller 1110 .
[0033] The storage device 1200 may store data and may be a nonvolatile memory. For example, the storage device 1200 may include a controller for storing data, and a working memory and a nonvolatile memory of the controller.
[0034] In an embodiment, the memory device 1200 may be manufactured as any of various types of memory devices according to a scheme of communication with the host device 1100. In addition, the memory device 1200 may be manufactured as any of various types of packaging forms.
[0035] In an embodiment, the storage device 1200 may store data in a plurality of files related to an application.
[0036] Figure 2 is a diagram illustrating a software layer structure of a host device according to an embodiment of the present disclosure. Figure 2The data, instructions, programs, etc. of the components included in the software layer structure shown can be stored in Figure 1 In the host memory 1120. Further, Figure 2 The components shown in the software layer structure shown can be composed of Figure 1 The host controller 1110 runs.
[0037] Reference Figure 2 , the software layer structure of the host device 1100 may include a user space and a kernel space.
[0038] The user space may include applications 210. Applications 210 may run normal user programs run by the operating system.
[0039] The kernel space may include a virtual file system (VFS) layer 220 , a memory management layer 230 , a file system layer 240 , a block layer 250 , and a device driver layer 260 .
[0040] The virtual file system (VFS) layer 220 may allow one or more file system layers 240 to interact with each other. The virtual file system (VFS) layer 220 may use standardized system calls to perform programming operations or read operations on different file system layers 240. That is, the virtual file system layer 220 may be an abstract layer existing between the application 210 and each file system layer 240.
[0041] The memory management layer 230 may be a system for managing memory, and may manage the memory so that the memory is shared between processors.
[0042] In an embodiment, the memory management layer 230 may include a data control virtual machine 1130 and a read-ahead control module 1140 .
[0043] The file system layer 240 may provide methods and functions for programming, reading, and using data. The file system layer 240 may perform functions for effectively managing files as a set of data, and may provide fast data search and recovery, support for large amounts of data, and the like. The file system layer 240 is intended to improve the performance of the entire system by smoothly processing files and reducing bottlenecks brought to the system by storage media having a processing speed lower than that of a processor such as a CPU. The file system layer 240 may divide the storage device 1200 into a plurality of logical blocks, and may be configured to allocate the at least one programming request or read request to one of the plurality of logical blocks when at least one programming request or read request is input to the storage device 1200, and then execute the programming request or read request based on each logical block.
[0044] In an embodiment of the present disclosure, the file system layer 240 may perform data input / output on data based on blocks, where a block is implemented as a group of multiple bytes. However, such a data block may be referred to by another term indicating an input / output unit of data, such as a cluster, a sector, or a page.
[0045] The block layer 250 may manage and schedule input / output requests of the storage device 1200 , such as a program request or a read request.
[0046] The device driver layer 260 may be responsible for the interface between the hardware and the operating system. The device driver layer 260 may be a program necessary for the hardware to operate normally under a specific operating system.
[0047] Figure 3 is a diagram for describing an advance read operation according to an embodiment of the present disclosure. Figure 3 In the Figure 2 Description of the operations of the virtual file system layer 220, the file system layer 240, the block layer 250, and the device driver layer 260 in FIG.
[0048] Reference Figure 3 , the application 210 may generate a read request REQ_FILE1 for the first file FILE1.
[0049] The memory management layer 230 may provide a normal read command CMD_NORMAL for reading data to the memory device 1200 in response to the read request REQ_FILE1 .
[0050] The memory device 1200 may provide data DATA to the memory management layer 230 in response to the normal read command CMD_NORMAL.
[0051] In an embodiment, the memory management layer 230 may manage a host memory area storing a first file FILE1. The host memory area may include a first memory area and a second memory area. The first memory area may be an area for storing data strips among a plurality of data strips present in the first file FILE1, which are read from the storage device 1200 and loaded into the host memory 1120. The second memory area may be an empty area where no data exists.
[0052] In an embodiment, the memory management layer 230 may determine whether the read request REQ_FILE1 for the first file FILE1 is a sequential read request, that is, whether the read request REQ_FILE1 is continuous. For example, the memory management layer 230 may set a recycling bit at a specific location in the second memory area. Here, when the first memory area reaches the recycling bit, the memory management layer 230 may determine that the read request REQ_FILE1 for the first file FILE1 is continuous.
[0053] In an embodiment, when the read request REQ_FILE1 for the first file FILE1 is continuous, the memory management layer 230 may execute an advance read request indicating that the data in the first file FILE1 is read in advance, regardless of the read request of the application 210. For example, the memory management layer 230 may generate a read command CMD_AHEAD indicating that data having a first size SIZE1 is read in advance. Further, the memory management layer 230 may determine a logical address LA1 indicating the location of a storage area in the storage device 1200 storing data having the first size SIZE1. The memory management layer 230 may provide the read command CMD_AHEAD and the logical address LA1 to the storage device 1200. In addition, the memory management layer 230 may generate a read command CMD_AHEAD indicating that data having a second size SIZE2 is read in advance. Here, the second size SIZE2 may be greater than the first size SIZE1. That is, the memory management layer 230 may generate a read command CMD_AHEAD indicating to read data with gradually increasing sizes in advance. The memory management layer 230 may determine a logical address LA2 indicating the location of a storage area storing data with a second size SIZE2 in the storage device 1200. The memory management layer 230 may provide the read command CMD_AHEAD and the logical address LA2 to the storage device 1200.
[0054] Figure 4 is a diagram illustrating a data control virtual machine 1130 according to an embodiment of the present disclosure.
[0055] Reference Figure 4 , the data control virtual machine 1130 may include information SEQ INFO indicating files related to each other among the plurality of files. The data control virtual machine 1130 may check information of other files related to the file currently being read ahead based on the corresponding information SEQ_INFO.
[0056] The data control virtual machine 1130 may store application identification information PID and data size setting information SIZE INFO corresponding to the application 210. The data size setting information SIZE INFO may indicate the size of data required by each application when a read request is issued. The data control virtual machine 1130 may receive the data size setting information SIZE INFO from the application and store the data size setting information SIZE INFO.
[0057] The data control virtual machine 1130 may store multiple pieces of information related to multiple files FILE1_INFO to FILEn_INFO. The multiple pieces of information related to multiple files FILE1_INFO to FILEn_INFO may include file pointers FP1 to FPn, offsets OFFSET1 to OFFSETn, and file sizes FSIZE1 to FSIZEn corresponding to each file. The file pointer FP may indicate the starting logical address of the storage area storing each file in the storage device 1200. The offset OFFSET may indicate the length of the logical address read from the corresponding file pointer. Here, the offset may first have an initial value.
[0058] In an embodiment, the data control virtual machine 1130 may provide a request REQ_FILE to the read ahead control module 1140, and the request REQ_FILE is used to identify the location where the read ahead operation of the file currently being read ahead is being performed. The data control virtual machine 1130 may obtain the file pointer FP, the offset OFFSET, and the size FSIZE of the file currently being read ahead from the read ahead control module 1140 by providing the request.
[0059] In an embodiment, the data control virtual machine 1130 may provide a control signal SIG_UPDATE to the read ahead control module 1140, and the control signal SIG_UPDATE is used to update the information related to the file in the read ahead control module 1140. In an example, the data control virtual machine 1130 may provide information related to the target file among multiple pieces of information related to multiple files FILE1_INFO to FILEn_INFO together with the control signal SIG_UPDATE to the read ahead control module 1140. In this case, the read ahead control module 1140 may change the information related to the stored file to the provided information related to the target file. In an example, the data control virtual machine 1130 may check the size of the read data required by the application based on the data size setting information SIZE INFO. The data control virtual machine 1130 may provide the checked read data size to the read ahead control module 1140 together with the control signal SIG_UPDATE.
[0060] Figure 5A and Figure 5B is a diagram for describing a read-ahead operation on consecutive files according to an embodiment of the present disclosure.
[0061] In detail, Figure 5A is a diagram for describing an advance read request for a first file of a run according to an embodiment of the present disclosure, Figure 5B is a diagram for describing a read-ahead request for a running second file according to an embodiment of the present disclosure.
[0062] Reference Figure 5A , the application 210 may generate a read request REQ_FILE1 for data in a first file FILE1 among a plurality of files related to the application 210 .
[0063] When read requests REQ_FILE1 for data in the first file FILE1 are continuous, the memory management layer 230 may generate a first read command CMD_AHEAD1 instructing to read in advance the second data. The second data may be continuous with the first data corresponding to the read request REQ_FILE1 among the plurality of pieces of data in the first file FILE1.
[0064] The memory management layer 230 may provide a first read command CMD_AHEAD1 to the memory device 1200 .
[0065] In an embodiment, the memory management layer 230 may manage a host memory area storing a first file FILE1 and a host memory area storing a second file FILE2. The host memory area storing the first file FILE1 may include a first memory area and a second memory area. The first memory area may be an area for storing data strips read from the storage device 1200 and loaded into the host memory 1120 among a plurality of data strips in the first file FILE1. The second memory area may be an empty area where no data exists. The host memory area storing the second file FILE2 may include a third memory area. The third memory area may be an empty area where no data exists.
[0066] In an embodiment, the data control virtual machine 1130 may store information SEQ INFO indicating that the first file FILE1 and the second file FILE2 are associated with each other. Therefore, the memory management layer 230 may determine information indicating that the first file FILE1 and the second file FILE2 are continuous with each other based on the corresponding information SEQ INFO, and may execute an advance read request for the second file FILE2 when the advance read request for the first file FILE1 is completed.
[0067] In an embodiment, the read-ahead control module 1140 may store a first file pointer FP1, a first offset OFFSET1, and a first file size FSIZE1. The first file pointer FP1 may indicate a starting logical address of a first storage area storing a first file FILE1 in the storage device 1200. The first offset OFFSET1 may indicate a length of a logical address corresponding to a first read command CMD_AHEAD1. For example, the read-ahead control module 1140 may set the length of a logical address corresponding to data read in response to a sequential read request and data to be read in response to the first read command CMD_AHEAD1 to the first offset OFFSET1. That is, whenever a read command for data in the first file FILE1 is sent to the storage device 1200, the read-ahead control module 1140 may set the length of a logical address corresponding to the size of data to be read in response to the read command to the first offset OFFSET1.
[0068] For example, the read-ahead control module 1140 may identify the location of the currently indicated read-ahead data based on the first file pointer FP1 and the first offset OFFSET1, and may determine the logical address corresponding to the data to be read-ahead subsequently based on the identified location. Further, the read-ahead control module 1140 may check the final logical address of the storage area storing the first file FILE1 in the storage device 1200 based on the first file size FSIZE1.
[0069] In an embodiment, the memory management layer 230 may determine whether the read-ahead request for the first file FILE1 is completed based on the first file pointer FP1 and the first offset OFFSET1 corresponding to the first storage area storing the first file FILE1 in the storage device 1200 .
[0070] For example, the data control virtual machine 1130 may provide a request REQ_FILE1 to the read-ahead control module 1140 for identifying the location where the read-ahead operation of the first file FILE1 is being performed. The read-ahead control module 1140 may provide the first file pointer FP1, the first offset OFFSET1, and the first file size FSIZE1 to the data control virtual machine 1130 in response to the received request REQ_FILE1. The data control virtual machine 1130 may obtain the first file pointer FP1, the first offset OFFSET1, and the first file size FSIZE1 from the read-ahead control module 1140. The data control virtual machine 1130 may check the starting logical address of the first storage area based on the first file pointer FP1. The data control virtual machine 1130 may check the final logical address of the first storage area based on the starting logical address and the first file size FSIZE1. The data control virtual machine 1130 may determine whether the logical address moved by the first offset OFFSET1 from the starting logical address indicates the final logical address.
[0071] In an embodiment, when the logical address shifted by the first offset OFFSET1 from the start logical address does not indicate the final logical address, the data control virtual machine 1130 may determine that the read-ahead request for the first file FILE1 has not been completed.
[0072] In this case, the read ahead control module 1140 may continue to execute the read ahead request for the first file FILE1. For example, the read ahead control module 1140 may generate a second read command CMD_AHEAD2 indicating read ahead data. The indicated data may be continuous with the data read in response to the first read command CMD_AHEAD1 among the plurality of data in the first file. The second read command CMD_AHEAD2 may be provided to the storage device 1200.
[0073] Reference Figure 5B In response to the situation that the logical address shifted by the first offset OFFSET1 from the start logical address indicates the final logical address, the data control virtual machine 1130 may determine that the read-ahead request for the first file FILE1 has been completed.
[0074] In an embodiment, the data control virtual machine 1130 may provide a control signal SIG_UPDATE to the read-ahead control module 1140 to update the first file pointer FP1, the first offset OFFSET1 and the first file size FSIZE1 stored in the read-ahead control module 1140 to information related to the second file.
[0075] For example, the data control virtual machine 1130 may provide the second file pointer FP2, the second offset OFFSET2, and the second file size FSIZE2 to the read ahead control module 1140 together with the control signal SIG_UPDATE. The second file pointer FP2 may indicate the starting logical address of the second storage area storing the second file FILE2 in the storage device 1200. The second offset OFFSET2 may have an initialization value. The read ahead control module 1140 may change the first file pointer FP1 to the second file pointer FP2 in response to the control signal SIG_UPDATE. Further, the read ahead control module 1140 may change the first offset OFFSET1 to the second offset OFFSET2 in response to the control signal SIG_UPDATE. In addition, the read ahead control module 1140 may change the first file size FSIZE1 to the second file size FSIZE2 in response to the control signal SIG_UPDATE. Therefore, the read ahead control module 1140 may store the second file pointer FP2, the second offset OFFSET2, and the second file size FSIZE2.
[0076] In an embodiment, the read-ahead control module 1140 may execute a read-ahead request for the second file FILE2 in response to completion of the read-ahead request for the first file FILE1 .
[0077] In an embodiment, the read ahead control module 1140 may generate a third read command CMD_AHEAD3 indicating to read ahead the data in the second file FILE2 from the logical address indicated by the second file pointer FP2. The generated third read command CMD_AHEAD3 may be provided to the storage device 1200.
[0078] In an embodiment, after providing the third read command CMD_AHEAD3 to the storage device 1200, the read-ahead control module 1140 may set the length of the logical address corresponding to the third read command CMD_AHEAD3 to the second offset OFFSET2. That is, the read-ahead control module 1140 may set the length of the logical address corresponding to the size of the data to be read in response to the third read command CMD_AHEAD3 to the second offset OFFSET2.
[0079] Figure 6 is a diagram illustrating determining the size of data read through a read-ahead operation according to an embodiment of the present disclosure.
[0080] Reference Figure 6The data control virtual machine 1130 may store application identification information PID and data size setting information SIZE INFO corresponding to the application 210 in association with each other. The data size setting information SIZE INFO may indicate a data size required by the application 210.
[0081] In an embodiment, the application 210 may generate a read request REQ_FILE1 for data in a first file FILE1 among a plurality of files related to the application 210 .
[0082] When read requests REQ_FILE1 for data in the first file FILE1 are continuous, the memory management layer 230 may generate a read command CMD_AHEAD indicating to read data in advance. The indicated data may be continuous with data corresponding to the read request REQ_FILE1 among a plurality of pieces of data in the first file FILE1.
[0083] In an embodiment, the data control virtual machine 1130 may check the data size setting information SIZE INFO corresponding to the application 210 based on the application identification information PID. For example, the data control virtual machine 1130 may determine whether the application 210 is a preset application based on the application identification information PID.
[0084] In an embodiment, when it is determined that the application 210 is a preset application, the data control virtual machine 1130 may control the read-ahead control module 1140 to update the size READ SIZE of the read data to be read in response to the read command CMD_AHEAD according to the data size setting information SIZE INFO. For example, the data control virtual machine 1130 may provide a control signal SIG_UPDATE to the read-ahead control module 1140, for updating the size READ SIZE of the checked read data according to the data size setting information SIZE INFO. The read-ahead control module 1140 may store the size READ SIZE of the read data in response to the control signal SIG_UPDATE.
[0085] In an embodiment, the read ahead control module 1140 may determine the logical address LA_READ SIZE corresponding to the read command CMD_AHEAD based on the data size setting information SIZE INFO. For example, the read ahead control module 1140 may determine the length of the logical address LA_READ SIZE based on the data size setting information SIZE INFO so that the data size to be read in response to the read command CMD_AHEAD is the size READ SIZE.
[0086] A logical address LA_READ SIZE and a read command CMD_AHEAD may be provided to the memory device 1200 .
[0087] Figure 7 is a flowchart illustrating a method of operating a host device according to an embodiment of the present disclosure.
[0088] Figure 7 The method shown can be used, for example, Figure 1 The host device 1100 is shown to perform.
[0089] In operation S701 , the host device 1100 may generate a read request for data in a first file among a plurality of files related to an application.
[0090] In operation S703 , the host device 1100 may determine whether read requests for data in the first file are continuous.
[0091] When it is determined in operation S703 that the read request for the data in the first file is continuous, the host device 1100 may generate a read command indicating to read the data in the first file in advance in operation S705. For example, the host device 1100 may generate a read command indicating to read the second data in advance. The second data may be continuous with the first data corresponding to the read request among the plurality of data in the first file.
[0092] In operation S707 , the host device 1100 may provide a read command to the memory device 1200 .
[0093] In operation S709 , the host device 1100 may determine whether the read-ahead request for the first file has been completed based on the first file pointer and the first offset corresponding to the storage area storing the first file within the storage device.
[0094] When it is determined in operation S709 that the read-ahead request for the first file has been completed, the host device 1100 may execute a read-ahead request for a second file among the plurality of files in operation S711 .
[0095] When it is determined in operation S709 that the read-ahead request for the first file has not been completed, the host device 1100 may generate a read command instructing to read-ahead the third data in operation S705. The third data may be continuous with the first data and the second data.
[0096] Figure 8 is a flowchart illustrating a method of operating a host device according to an embodiment of the present disclosure.
[0097] Figure 8 The method shown can be used, for example, Figure 1 The host device 1100 is shown to perform.
[0098] In operation S801 , the host device 1100 may generate a read request for data in a file related to an application.
[0099] In operation S803 , the host device 1100 may determine whether read requests for data in the file are continuous.
[0100] When it is determined in operation S803 that the read requests for data in the file are continuous, the host device 1100 may generate a read command indicating to read the data in advance in operation S805. The indicated data may be continuous with the data corresponding to the read request.
[0101] In operation S807, the host device 1100 may check data size setting information corresponding to the application based on the application identification information.
[0102] In operation S809 , the host device 1100 may determine a logical address corresponding to the read command based on the data size setting information.
[0103] In operation S811 , the host device 1100 may provide a logical address and a read command to the memory device 1200 .
[0104] According to the present disclosure, a host device having improved read-ahead operation performance, a method of operating the host device, and a computing system including the host device are provided.
Claims
1. A method for operating a host device, comprising: determining that read requests for data in a first file among a plurality of files stored in a storage device are continuous; In response to determining that the read request is continuous, generating a first read command instructing to read in advance second data, the second data being continuous with first data corresponding to the read request among the plurality of data in the first file; determining a logical address corresponding to the first read command; providing the first read command and the logical address to the storage device; determining whether a read-ahead request for the first file has been completed based on a first file pointer and a first offset corresponding to a storage area storing the first file in the storage device; as well as In response to determining that the read-ahead request for the first file has been completed, executing a read-ahead request for a second file among the plurality of files.
2. The method according to claim 1, further comprising: Before generating the first read command, information indicating that the first file and the second file are associated with each other is stored.
3. The method according to claim 1, further comprising: After the first read command is generated, the length of a logical address corresponding to the first data and the second data is set to the first offset.
4. The method according to claim 3, wherein: Determining whether the read-ahead request has been completed includes: checking a starting logical address of the storage area based on the first file pointer; checking a final logical address of the storage area based on the starting logical address and a file size of the first file; and It is determined whether a logical address shifted by the first offset from the start logical address indicates the final logical address.
5. The method according to claim 4, wherein: Determining whether the read-ahead request has been completed includes: In response to determining that the logical address shifted by the first offset indicates the final logical address, it is determined that the read-ahead request has been completed.
6. The method according to claim 4, further comprising: In response to determining that the logical address shifted by the first offset does not indicate the final logical address, a second read command is generated to read in advance third data that is continuous with the second data among the plurality of pieces of data in the first file.
7. The method according to claim 1, wherein: Running a read-ahead request for the second file includes: changing the first file pointer to a second file pointer, wherein the second file pointer indicates a starting logical address of a storage area storing the second file in the storage device; changing the first offset to an initialized second offset; Generate a third read command, wherein the third read command instructs to read data in the second file in advance from the logical address indicated by the second file pointer; providing the third read command to the storage device; and The length of a logical address corresponding to the third read command is set to the second offset.
8. The method according to claim 1, wherein: Determining the logical address includes: Based on the application identification information, checking data size setting information corresponding to the applications associated with the plurality of files; and Based on the data size setting information, the logical address is determined.
9. The method according to claim 8, further comprising: Before generating the first read command, the application identification information and the data size setting information are stored in association with each other.
10. The method according to claim 9, wherein: Determining the logical address based on the data size setting information includes: The length of the logical address is determined so that data read in advance in response to the first read command has a size based on the data size setting information.
11. A computing system comprising: a storage device storing a plurality of files related to the application and outputting data related to at least one file among the plurality of files in response to a read command; as well as a host device that temporarily stores the data output from the storage device and runs the application based on the data, wherein the host device provides a first read command and a second read command to the storage device in response to a sequential read request for a first file among the plurality of files, and The first read command instructs advance reading of data in the first file based on information related to the application, and the second read command instructs advance reading of data in a second file continuous with the first file among the plurality of files.
12. The computing system of claim 11, wherein: The host device comprises: A data control virtual machine controls information related to the application; and The read-ahead control module controls the read-ahead operation of reading a plurality of data in the plurality of files in advance based on the information related to the application.
13. The computing system of claim 12, wherein: The data control virtual machine stores information indicating that the first file and the second file are associated with each other.
14. The computing system of claim 13, wherein: The advance read control module stores a first file pointer, a first offset and a size of the first file, wherein the first file pointer indicates a starting logical address of a storage area storing the first file in the storage device, and the first offset indicates a length of a logical address corresponding to the first read command.
15. The computing system of claim 14, wherein: The data control virtual machine obtains the first file pointer, the first offset and the size of the first file from the advance reading control module, and provides a second file pointer, an initialized second offset and the size of the second file to the advance reading control module when the logical address of the first offset moved from the first file pointer indicates the final logical address of the storage area corresponding to the size of the first file, wherein the second file pointer indicates the starting logical address of the storage area storing the second file in the storage device.
16. The computing system of claim 15, wherein: The read-ahead control module stores the second file pointer, the second offset, and the size of the second file, generates the second read command based on the second file pointer and the second offset, and provides the second read command to the storage device.
17. The computing system of claim 12, wherein: The data control virtual machine stores application identification information and data size setting information corresponding to the application.
18. The computing system of claim 17, wherein: When it is determined that the application is a preset application based on the application identification information, the data control virtual machine provides the data size setting information to the read-ahead control module.
19. The computing system of claim 18, wherein: The read-ahead control module determines a logical address corresponding to the first read command or the second read command so that a size of data read in response to the first read command or the second read command is the same as a size based on the data size setting information, and provides the logical address to the storage device.