Storage system and method for adaptive prefetch of storage device

By using adaptive prefetch tables in the storage system and dynamically updating the prefetch policy, the problem of high access latency and insufficient adaptability of the prefetch mechanism in SSD is solved, and higher throughput performance and resource allocation efficiency are achieved.

CN119536630APending Publication Date: 2025-02-28SAMSUNG ELECTRONICS CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411199012.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-04-17
Filing Date
2024-08-29
Publication Date
2025-02-28

AI Technical Summary

Technical Problem

In existing storage systems, solid-state drives (SSDs) have become a bottleneck in system performance due to their high access latency, and the existing prefetch mechanism is difficult to effectively adapt to new workloads in multi-processing environments.

Method used

Adaptive prefetch table is adopted to determine whether the prefetch operation should be performed by receiving data requests and performing search operations. The adaptive prefetch table contains entries about the data page, including the address and weighting factors of the predicted next page, updated dynamically to accommodate new workloads.

Benefits of technology

It improves the throughput performance of the storage system, effectively allocates resources, reduces the access latency of SSDs, is highly adaptable, and can optimize performance in a multi-processing environment.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119536630A_ABST
    Figure CN119536630A_ABST
Patent Text Reader

Abstract

A storage system and method for performing adaptive prefetch in a storage system are provided. The method includes receiving a first data request including a first address of a first data page stored in a storage device, and performing a lookup operation using an adaptive prefetch table to determine whether a prefetch operation should be performed based on the received first data request. The adaptive prefetch table includes an entry of a first data page corresponding to the received first data request, and the entry of the first data page includes an address of a predicted next page and a weight factor of the predicted next page.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] priority

[0002] This application is based upon and claims priority to U.S. Provisional Patent Applications Serial Nos. 63 / 579,556, 63 / 579,563, and 63 / 579,568, filed in the U.S. Patent and Trademark Office on August 30, 2023, the entire contents of each of which are incorporated herein by reference. Technical Field

[0003] The present invention relates generally to storage systems, and more particularly to methods and systems for adaptive prefetch operations in such systems to improve throughput performance and efficient resource allocation. Background Art

[0004] Flash-based solid-state drives (SSDs) can be used as a higher-performance alternative to hard disk drives (HDDs), for example in cloud and mobile environments. Although SSDs offer significantly higher speeds than HDDs, SSDs are still the performance bottleneck of the system because processor and dynamic random access memory (DRAM) technology supports access latencies that are three orders of magnitude lower. Summary of the invention

[0005] According to an embodiment of the present disclosure, a method for performing adaptive prefetching in a storage system is provided. The method includes: receiving a first data request, the first data request including a first address of a first data page stored in a storage device; and performing a lookup operation using an adaptive prefetch table to determine whether a prefetch operation should be performed based on the received first data request. The adaptive prefetch table includes an entry for a first data page corresponding to the received first data request, and the entry for the first data page includes an address of a predicted next page and a weight factor of the predicted next page.

[0006] According to another embodiment of the present disclosure, a storage system is provided, comprising: a storage device; an adaptive prefetch table; and a processor, configured to receive a first data request including a first address of a first data page stored in the storage device, and perform a lookup operation using the adaptive prefetch table to determine whether a prefetch operation should be performed based on the received first data request. The adaptive prefetch table includes an entry about a first data page corresponding to the received first data request, and the entry about the first data page includes an address of a predicted next page and a weight factor of the predicted next page. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] The above and other aspects, features and advantages of certain embodiments of the present disclosure will become more apparent through the following detailed description in conjunction with the accompanying drawings, in which:

[0008] Figure 1Shows a cache without pre-fetching in the SSD storage system;

[0009] Figure 2 shows the prefetch operation;

[0010] Figure 3 An SSD storage system including an adaptive prefetch table according to an embodiment is shown;

[0011] Figure 4 illustrates the operation of an adaptive prefetch controller and an adaptive prefetch table according to an embodiment;

[0012] Figure 5A and Figure 5B An example of an adaptive prefetch table update operation according to an embodiment is shown;

[0013] Figure 6 illustrates an example prefetch operation using an adaptive prefetch table and a prefetch stride greater than 1 according to an embodiment;

[0014] Figure 7 An SSD storage system including a pre-fetch cache according to an embodiment is shown;

[0015] Figure 8 illustrates the operation of an SSD storage system including a pre-fetch cache according to an embodiment;

[0016] Fig. 9 is a flow chart illustrating a method for processing a data request in an SSD storage system including a prefetch cache according to an embodiment;

[0017] Fig.10 An early prefetch operation for an SSD storage system including a deep request queue according to an embodiment is shown;

[0018] Fig.11 is a block diagram illustrating an electronic device in a network environment according to an embodiment; and

[0019] Fig.12 A diagram illustrating a storage system according to an embodiment. DETAILED DESCRIPTION

[0020] Hereinafter, various embodiments of the present disclosure are described in detail with reference to the accompanying drawings. It should be noted that the same elements will be denoted by the same reference numerals although they are shown in different drawings.

[0021] In the following description, only specific details such as detailed configuration and components are provided to help fully understand the embodiments of the present disclosure. Therefore, it is obvious to those skilled in the art that various changes and modifications can be made to the embodiments described herein without departing from the scope of the present disclosure.

[0022] In addition, descriptions of well-known functions and constructions are omitted for clarity and conciseness.

[0023] The terms described below are defined in consideration of functions in the present disclosure and may differ depending on the user, the user's intention, or custom. Therefore, the definition of the terms should be determined based on the contents throughout the specification.

[0024] The present disclosure may have various modifications and various embodiments, in which the embodiments are described in detail below with reference to the accompanying drawings. However, it should be understood that the present disclosure is not limited to the embodiments, but includes all modifications, equivalents and substitutes within the scope of the present disclosure.

[0025] Although the terms including ordinal numbers such as first, second, etc. can be used to describe various elements, structural elements are not limited by the terms. These terms are used to distinguish one element from another element. That is to say, terms such as "first", "second", "first" and "second" can be used to distinguish the corresponding component from another component, but are not intended to limit the component in other aspects (for example, importance or order). For example, without departing from the scope of the present disclosure, the first structural element can be referred to as the second structural element. Similarly, the second structural element can also be referred to as the first structural element.

[0026] As used herein, the term "and / or" includes any and all combinations of one or more associated items. In addition, each of phrases such as "A or B", "at least one of A and B", "at least one of A or B", "A, B or C", "at least one of A, B and C", and "at least one of A, B or C" may include all possible combinations of items listed together in the corresponding one phrase.

[0027] The terms used herein are only used to describe various embodiments of the present disclosure and are not intended to limit the present disclosure. Unless the context clearly indicates otherwise, the singular form is intended to include the plural form. Terms such as "including" or "having" indicate the presence of features, numbers, steps, operations, structural elements, parts or combinations thereof, and do not exclude the possibility of the presence or addition of one or more other features, numbers, steps, operations, structural elements, parts or combinations thereof.

[0028] Unless otherwise defined, all terms used herein have the same meaning as understood by those skilled in the art to which the present disclosure belongs. Unless explicitly defined in the present disclosure, terms such as those defined in commonly used dictionaries should be interpreted as having the same meaning as the contextual meaning in the relevant art, and should not be interpreted as having an ideal or overly formal meaning.

[0029] An electronic device according to an embodiment may be one of various types of electronic devices utilizing a storage device. An electronic device may include, for example, a portable communication device (e.g., a smart phone), a computer, a portable multimedia device, a portable medical device, a camera, a wearable device, or a household appliance. An electronic device may use any suitable storage standard, such as, for example, a peripheral component interconnect express (PCIe), a non-volatile memory express (NVMe), an NVMe on structure (NVMeoF), an advanced extensible interface (AXI), an ultra-path interconnect (UPI), Ethernet, a transmission control protocol / Internet protocol (TCP / IP), a remote direct memory access (RDMA), RDMA on converged Ethernet (ROCE), a fiber channel (FC), an infinite bandwidth (IB), a serial advanced technology attachment (SATA), a small computer system interface (SCSI), a serial attached SCSI (SAS), an Internet wide area RDMA protocol (iWARP) and / or the like or any combination thereof. In some embodiments, the interconnect interface may be implemented using one or more memory semantics and / or memory consistency interfaces and / or protocols, including one or more Compute Express Link (CXL) protocols (such as CXL.mem, CXL.io, and / or CXL.cache), Gen-Z, Coherent Accelerator Processor Interface (CAPI), Cache Coherent Interconnect for Accelerators (CCIX), etc. or any combination thereof. Any storage device may be implemented using one or more of any type of storage device interface, including double data rate (DDR), DDR2, DDR3, DDR4, DDR5, low power DDR (LPDDRX), open memory interface (OMI), NVlink high bandwidth memory (HBM), HBM2, HBM3, etc. However, the electronic device is not limited to the above examples.

[0030] If an element (e.g., a first element) is referred to as being “coupled with another element (e.g., a second element)”, “coupled to another element”, “connected with another element” or “connected to another element” with or without the term “operably” or “communicatively”, it indicates that the element can be coupled with the other element directly (e.g., by wire), wirelessly or via a third element.

[0031] As used herein, the term "module" may include a unit implemented in hardware, software, firmware, or a combination thereof, and may be used interchangeably with other terms (e.g., "logic," "logic block," "component," and "circuit"). A module may be a single integrated component or its smallest unit or portion suitable for performing one or more functions. For example, according to one embodiment, a module may be implemented in the form of an integrated circuit (IC).

[0032] Although various embodiments of the present disclosure are described below with reference to SSD and DRAM cache by way of example, the present disclosure is not limited thereto. Therefore, various embodiments of the present disclosure may also be applied to different types of storage systems and devices.

[0033] Two methods of hiding the high access latency of SSD devices are caching and prefetching. Caching utilizes less dense but faster types of memory to store frequently used data items, thereby filtering out many accesses to the slow SSD. Prefetching is a method used to improve access latency that predicts future block accesses and preloads them into memory in advance. The prefetch method reads data from the SSD in advance in order to service subsequent demand accesses from the cache with low latency. Prefetching can be implemented in software, such as within the operating system (OS), or in hardware, such as within the SSD itself.

[0034] Prefetching mechanisms may be limited by the computational complexity and difficulty of correctly predicting future input / output (I / O) accesses. For example, read-ahead prefetchers are often limited to prefetching the next data item within a file to speed up sequential access. Although more advanced prefetchers that can learn the proposed complex I / O access patterns have been proposed, these proposals are generally rejected due to their computational cost.

[0035] In addition, most software and hardware prefetching methods are either based on static profiling or based on hints from applications. Therefore, these methods are usually not well adapted to new workloads on multi-processing environments (such as data centers).

[0036] Furthermore, cache prefetch requests are typically predicted and created at the central processing unit (CPU) cache controller. However, a CXL-based device cache for high-capacity, slower SSD flash storage with its unique behavior should have a separate prefetch strategy that can adapt well to the SSD traffic pattern.

[0037] Figure 1 Shown is a cache without prefetch in an SSD storage system.

[0038] Reference Figure 1 , a DRAM cache 106 is provided to store frequently used data items. As described above, the use of the DRAM cache 106 can filter out many accesses to the slower SSD.

[0039] More specifically, when a request for data is received from request queue 101, device cache tag lookup 102 is used to determine whether there is a cache hit for the requested data in DRAM cache 106. That is, device cache tag lookup 102 is used to determine whether the requested data is stored in DRAM cache 106.

[0040] When there is no cache hit at 103, that is, when a cache miss is determined, the SSD request queue 104 receives the data request, which will be sent to the SSD for retrieval. However, when there is a cache hit at 103, the DRAM controller 105 receives the data request and controls the requested data to be retrieved from the DRAM cache 106 in response to the data request and provided to the response queue 107 so as to be provided to the memory bus 108.

[0041] While the caching process can filter out some access requests to the slower SSD storage, it only works for frequently used data and is not adaptive.

[0042] As mentioned above, prefetching can be used in storage systems to preload data from slow storage devices (e.g., SSDs) into faster memory (usually DRAM) to reduce overall read latency. Accurate and timely prefetching can effectively reduce the performance gap between different levels of memory.

[0043] For example, three metrics can be used to compare prefetchers, including the coverage, accuracy, and timeliness of the prefetchers. Coverage is the ratio of the number of SSD reads that can be prefetched to the total number of SSD reads. Accuracy is the ratio of the number of data blocks being prefetched to the number of prefetched data blocks actually requested. Timeliness requires that data blocks be prefetched sufficiently in advance so that the data is available in DRAM whenever a read request is performed. For example, if the prefetched data block is not available when needed, the read process will stop, making the prefetch invalid. If the data is prefetched too early, it may no longer be available when the data is actually needed due to being evicted from the capacity-limited cache.

[0044] Inaccurate prefetches that read unneeded data can also be detrimental because they waste I / O bandwidth and DRAM capacity. If prefetches are performed too conservatively, coverage is low and the overall performance gain is limited. Therefore, an ideal prefetcher has high coverage, high accuracy, and performs prefetches in a timely manner so that data is retrieved exactly when it is needed.

[0045] Figure 2 A prefetch operation is shown.

[0046] refer to Figure 2, SSD prefetcher 202 can predict candidate data blocks to be prefetched from SSD 201 into a fast cache (e.g., DRAM) buffer 203 of size 3 data blocks. The cache eviction policy will evict data blocks from cache buffer 203 to make room for new incoming data. Figure 2 In the example of , at time t, SSD prefetcher 202 determines candidates x1, x2, x3, and x4 for prefetch, but the actual data requested at time t is candidates x1, x2, and x3 at data block 205. Therefore, candidates x2 and x3 are present in cache buffer 203 when requested, resulting in a cache hit. However, candidate x1 is prefetched prematurely and is evicted from cache buffer 203 at 204 when x4 is prefetched, and x4 is prefetched inaccurately, resulting in a cache miss in both cases.

[0047] Figure 3 An SSD storage system including an adaptive prefetch table according to an embodiment is shown.

[0048] refer to Figure 3 , similar to Figure 1 In the operation in, when a request for data (e.g., a data request) is received from the request queue 301, the device cache tag lookup 302 is used to determine whether there is a cache hit for the requested data in the DRAM cache 306. That is, the device cache tag lookup 302 is used to determine whether the requested data is stored in the DRAM cache 306.

[0049] When there is a cache hit at 303, the DRAM controller 305 receives the data request and, in response to the data request, controls the requested data to be retrieved from the DRAM cache 306 and provided to the response queue 307 so as to be provided to the memory bus. However, when there is no cache hit at 303, the SSD request queue 304 receives the data request, which will be sent to the SSD for retrieval.

[0050] Additionally, data requests are provided from request queue 301 to adaptive prefetch controller 308, for example in parallel operations.

[0051] Upon receiving a data request, the adaptive prefetch controller 308 performs a lookup operation using the adaptive prefetch table 309 to determine whether a prefetch operation should be performed based on the received data request. For each data request, the adaptive prefetch table 309 may include: a corresponding page entry, i.e., a page address corresponding to the data request; and an associated next page entry, i.e., an address of the predicted next page; and a weight factor of the predicted next page. The weight factor indicates the probability that the address of the predicted next page is correct. For example, the adaptive prefetch table 309 may include a 3-port RAM, in which each row is indexed by a page address corresponding to a data request, and each row contains a corresponding address of the predicted next page and a weight factor of the predicted next page.

[0052] When it is determined that a prefetch operation is to be performed, a prefetch data request is retrieved from the adaptive prefetch table 309 and sent to the SSD request queue 304, which sends the prefetch data request to the SSD for retrieval. The data retrieved from the SSD in response to the prefetch data request can then be prestored in the prefetch data buffer for subsequent data requests.

[0053] In addition, when a data request is received from the request queue 301, the adaptive prefetch controller 308 may determine whether to update the adaptive prefetch table 309 based on a comparison of the data request with a previous data request. That is, the page address of the current data request and the predicted address of the previous data request may be used to update the weight factor and / or the predicted address of the next page. Figure 4 This operation is described in more detail.

[0054] Figure 4 The operations of an adaptive prefetch controller and an adaptive prefetch table according to an embodiment are shown.

[0055] refer to Figure 4 , upon receiving a data request from the request queue 401, the adaptive prefetch controller performs a lookup operation using the adaptive prefetch table 409 to determine whether a prefetch operation should be performed based on the received data request. More specifically, the adaptive prefetch controller provides the page address of the current data request 402 to the adaptive prefetch table 409, which is used to identify the address of the predicted next page and the weight factor of the predicted next page. For example, the weight factor range can be 0-5. When the weight factor of the predicted next page is greater than or equal to a predetermined threshold, such as 2, a prefetch request generation for the address of the predicted next page is performed at 406, and the prefetch request is sent to the SSD request queue 410 and then to the SSD. The predetermined threshold can be controlled / updated by software and set according to system requirements.

[0056] Data received from the SSD in response to a prefetch request may be stored in a prefetch cache.

[0057] The address of the predicted next page being prefetched is also provided to the adaptive prefetch table 409. The address of the predicted next page being prefetched will then be used as the previous next page with the next data request.

[0058] like Figure 4 As shown, the arbiter 405 may be used to selectively provide the page address of the current data request 402 and the address of the predicted next page being prefetched to the adaptive prefetch table 409 .

[0059] In addition, upon receiving a data request from the request queue 401, the adaptive prefetch controller compares the page address of the current data request 402 with the last predicted next page 403 from the previous data request to determine the accuracy of the prediction of the last predicted next page 403 according to the previous data request. When the page address of the current data request 402 corresponds to the last predicted next page 403 at 404, the adaptive prefetch controller determines a prefetch cache hit and controls updating (e.g., increasing) a weight factor corresponding to the last predicted next page 403 in the adaptive prefetch table 409 at 407. However, when the page address of the current data request 402 does not correspond to the last predicted next page 403 at 404, the adaptive prefetch controller determines a prefetch cache miss and controls updating (e.g., decreasing) a weight factor corresponding to the last predicted next page 403 in the adaptive prefetch table 409 at 407.

[0060] After the weight factor reaches a predetermined threshold, such as hitting 0, at 407 , the adaptive prefetch controller may control updating of the predicted next page in the adaptive prefetch table 409 , and may reset the weight factor corresponding to the updated predicted next page to a predetermined value, such as 1.

[0061] Despite the above Figure 4 The description of relates to increasing the weight factor after a hit and decreasing the weight factor after a miss, and performing prefetch request generation when the weight factor is greater than a predetermined threshold, but the present disclosure is not limited thereto. For example, the weight factor may be decreased after a hit and increased after a miss, and prefetch request generation is performed when the weight factor is less than a predetermined threshold.

[0062] Table 1 below shows an example algorithm for updating the adaptive prefetch table 409 .

[0063] Table 1

[0064]

[0065] As shown in Table 1 above, if the page address (current page.address) of the current data request 402 is equal to the page address (last page.next_address) of the last predicted next page 403, that is, the page address of the predicted next page corresponding to the previous data request, then the weight factor associated with the page address of the previous data request is increased by 1.

[0066] If the page address of the current data request 402 is not equal to the page address of the last predicted next page 403, and if the weight factor associated with the page address of the previous data request is equal to 0, the weight factor associated with the page address of the previous data request is set to 1, and the page address of the last predicted next page 403 is set to the page address of the current data request 402.

[0067] If the page address of the current data request 402 is not equal to the page address of the last predicted next page 403 and the weight factor associated with the page address of the previous data request is not equal to 0, the weight factor associated with the page address of the previous data request is decreased by 1.

[0068] Using the algorithm shown in Table 1, the hardware adaptive prefetch table 409 can dynamically adapt itself to new workloads and new applications, making it a good machine learning (ML) tool.

[0069] Figure 5A and Figure 5B An example of an adaptive prefetch table update operation according to an embodiment is shown.

[0070] refer to Figure 5A At 501, adaptive prefetching initially uses a sequential access order so that the predicted next page is initially in the next page of the sequence. However, the present disclosure is not limited thereto. For example, the initial table may be set to different values ​​based on traces collected from a set of different data center applications.

[0071] Additionally, the weight factor range is 0-5, where the prefetch threshold is 2, and it is assumed that the access pattern (0, 1, 3, 5, 6, 7) is repeated.

[0072] Thus, upon receiving a data request for page 0, ie, the first page address in the access pattern, the adaptive prefetch controller provides 0 to the adaptive prefetch table at 501, indicating that the address of the predicted next page is 1 and the weight factor of the predicted next page is 2.

[0073] Upon receiving a data request for page 1 , ie, the second page address in the access pattern, the adaptive prefetch controller provides 1 to the adaptive prefetch table at 502 , indicating that the address of the predicted next page is 2 and the weight factor of the predicted next page is 2.

[0074] Furthermore, when the weight factor of the predicted next page satisfies the prefetch threshold, a prefetch request is generated for the address of the predicted next page.

[0075] For example, because the weight factor of the predicted next page is 2, which is greater than or equal to the prefetch threshold 2, ie, the prefetch threshold is satisfied, a prefetch request is generated for the address of the predicted next page, ie, 2.

[0076] At this time, the page address of the current request, i.e., 1, is compared with the address of the predicted next page of the previous request, i.e., 1. Because the page address of the current request corresponds to the address of the predicted next page of the previous request, i.e., both are 1, the weight factor of the predicted next page of the previous request is updated from 2 to 3 at 502.

[0077] Upon receiving a data request for page 3, i.e., the third page address in the access pattern, the adaptive prefetch controller provides 3 to the adaptive prefetch table at 503, indicating that the address of the predicted next page is 4 and the weight factor of the predicted next page is 2. Furthermore, because the weight factor of the predicted next page is 2, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 4).

[0078] At this time, the page address of the current request, 3, is compared with the address of the predicted next page of the previous request, 2. Because the page address of the current request does not correspond to the address of the predicted next page of the previous request, the weight factor of the predicted next page of the previous request is updated from 2 to 1 at 503.

[0079] Upon receiving a data request for page 5, i.e., the fourth page address in the access pattern, at 504, the adaptive prefetch controller provides 5 to the adaptive prefetch table, indicating that the address of the predicted next page is 6 and the weight factor of the predicted next page is 2. Furthermore, because the weight factor of the predicted next page is 2, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 6).

[0080] At this point, the page address of the current request, 5, is compared with the address of the previously requested predicted next page, 4. Because the page address of the current request does not correspond to the address of the previously requested predicted next page, the weight factor of the previously requested predicted next page is updated from 2 to 1 at 504.

[0081] Upon receiving a data request for page 6, i.e., the fifth page address in the access pattern, at 505, the adaptive prefetch controller provides 6 to the adaptive prefetch table, indicating that the address of the predicted next page is 7 and the weight factor of the predicted next page is 2. Furthermore, because the weight factor of the predicted next page is 2, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 7).

[0082] At this time, the page address of the current request, i.e., 6, is compared with the address of the predicted next page of the previous request, i.e., 6. Because the page address of the current request corresponds to the address of the predicted next page of the previous request, i.e., both are 6, the weight factor of the predicted next page of the previous request is updated from 2 to 3 at 505.

[0083] Upon receiving a data request for page 7, i.e., the sixth page address in the access pattern, the adaptive prefetch controller provides 7 to the adaptive prefetch table at 506, which indicates that the address of the predicted next page is 0 and the weight factor of the predicted next page is 2. Furthermore, because the weight factor of the predicted next page is 2, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page, i.e., 0.

[0084] At this time, the page address of the current request, i.e., 7, is compared with the address of the predicted next page of the previous request, i.e., 7. Because the page address of the current request corresponds to the address of the predicted next page of the previous request, i.e., both are 7, the weight factor of the predicted next page of the previous request is updated from 2 to 3 at 506.

[0085] Upon receiving a data request for page 0, i.e., the first page address in the access pattern, the adaptive prefetch controller provides 0 to the adaptive prefetch table at 507, indicating that the address of the predicted next page is 1 and the weight factor of the predicted next page is 3. Furthermore, because the weight factor of the predicted next page is 3, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 1).

[0086] At this time, the page address of the current request, i.e. 0, is compared with the address of the predicted next page of the previous request, i.e. 0. Because the page address of the current request corresponds to the address of the predicted next page of the previous request, i.e. both are 0, the weight factor of the predicted next page of the previous request is updated from 2 to 3 at 507.

[0087] Upon receiving a data request for page 1, i.e., the second page address in the access pattern, the adaptive prefetch controller provides 1 to the adaptive prefetch table at 508, indicating that the address of the predicted next page is 2 and the weight factor of the predicted next page is 1. Furthermore, because the weight factor of the predicted next page is 1, which is not greater than or equal to the prefetch threshold of 2, a prefetch request for the address of the predicted next page is not generated.

[0088] At this time, the page address of the current request, i.e., 1, is compared with the address of the predicted next page of the previous request, i.e., 1. Because the page address of the current request corresponds to the address of the predicted next page of the previous request, i.e., both are 1, the weight factor of the predicted next page of the previous request is updated from 3 to 4 at 508.

[0089] refer to Figure 5B , upon receiving a data request for page 3, i.e., the third page address in the access pattern, at 509, the adaptive prefetch controller provides 3 to the adaptive prefetch table, which indicates that the address of the predicted next page is 4 and the weight factor of the predicted next page is 1. Furthermore, because the weight factor of the predicted next page is 1, which is not greater than or equal to the prefetch threshold of 2, no prefetch request is generated for the address of the predicted next page.

[0090] At this time, the page address of the current request, 3, is compared with the address of the predicted next page of the previous request, 2. Because the page address of the current request does not correspond to the address of the predicted next page of the previous request, at 509, the weight factor of the predicted next page of the previous request is updated from 1 to 0.

[0091] Upon receiving a data request for page 5, i.e., the fourth page address in the access pattern, at 510, the adaptive prefetch controller provides 5 to the adaptive prefetch table, indicating that the address of the predicted next page is 6 and the weight factor of the predicted next page is 3. Furthermore, because the weight factor of the predicted next page is 3, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 6).

[0092] At this point, the currently requested page address, 5, is compared with the address of the previously requested predicted next page, 4. Because the currently requested page address does not correspond to the address of the previously requested predicted next page, the weight factor of the previously requested predicted next page is updated from 1 to 0 at 510.

[0093] Upon receiving a data request for page 6, i.e., the fifth page address in the access pattern, at 511, the adaptive prefetch controller provides 6 to the adaptive prefetch table, which indicates that the address of the predicted next page is 7 and the weight factor of the predicted next page is 3. Furthermore, because the weight factor of the predicted next page is 3, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 7).

[0094] At this time, the page address of the current request, i.e., 6, is compared with the address of the predicted next page of the previous request, i.e., 6. Because the page address of the current request corresponds to the address of the predicted next page of the previous request, i.e., both are 6, the weight factor of the predicted next page of the previous request is updated from 3 to 4 at 511.

[0095] Upon receiving a data request for page 7, i.e., the sixth page address in the access pattern, the adaptive prefetch controller provides 7 to the adaptive prefetch table at 512, which indicates that the address of the predicted next page is 0 and the weight factor of the predicted next page is 3. Furthermore, because the weight factor of the predicted next page is 3, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page, i.e., 0.

[0096] At this time, the page address of the current request, i.e., 7, is compared with the address of the predicted next page of the previous request, i.e., 7. Because the page address of the current request corresponds to the address of the predicted next page of the previous request, i.e., both are 7, the weight factor of the predicted next page of the previous request is updated from 3 to 4 at 512.

[0097] Upon receiving a data request for page 0, i.e., the first page address in the access pattern, the adaptive prefetch controller provides 0 to the adaptive prefetch table at 513, indicating that the address of the predicted next page is 1 and the weight factor of the predicted next page is 4. Furthermore, because the weight factor of the predicted next page is 4, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 1).

[0098] At this time, the page address of the current request, i.e. 0, is compared with the address of the predicted next page of the previous request, i.e. 0. Because the page address of the current request corresponds to the address of the predicted next page of the previous request, i.e. both are 0, the weight factor of the predicted next page of the previous request is updated from 3 to 4 at 513.

[0099] Upon receiving a data request for page 1, i.e., the second page address in the access pattern, the adaptive prefetch controller provides 1 to the adaptive prefetch table at 514, indicating that the address of the predicted next page is 2 and the weight factor of the predicted next page is 0. Furthermore, because the weight factor of the predicted next page is 0, which is not greater than or equal to the prefetch threshold of 2, a prefetch request for the address of the predicted next page is not generated.

[0100] At this time, the page address of the current request, i.e., 1, is compared with the address of the predicted next page of the previous request, i.e., 1. Because the page address of the current request corresponds to the address of the predicted next page of the previous request, i.e., both are 1, the weight factor of the predicted next page of the previous request is updated from 4 to 5 at 514.

[0101] Upon receiving a data request for page 3, i.e., the third page address in the access pattern, the adaptive prefetch controller provides 3 to the adaptive prefetch table at 515, indicating that the address of the predicted next page is 4 and the weight factor of the predicted next page is 0. Furthermore, because the weight factor of the predicted next page is 0, which is not greater than or equal to the prefetch threshold of 2, a prefetch request for the address of the predicted next page is not generated.

[0102] At this time, at 515, because the weight factor of the previously requested predicted next page is equal to 0, the weight factor of the previously requested predicted next page is changed from 0 to 1, and the address of the previously requested predicted next page is changed to the page address of the current data request, that is, from 2 to 3.

[0103] Upon receiving a data request for page 5, i.e., the fourth page address in the access pattern, the adaptive prefetch controller provides 5 to the adaptive prefetch table at 516, indicating that the address of the predicted next page is 6 and the weight factor of the predicted next page is 4. Furthermore, because the weight factor of the predicted next page is 4, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 6).

[0104] At this time, at 516, because the weight factor of the previously requested predicted next page is equal to 0, the weight factor of the previously requested predicted next page is changed from 0 to 1, and the address of the previously requested predicted next page is changed to the page address of the current data request, that is, from 4 to 5.

[0105] Although the above embodiment has been described using an example in which one page may be prefetched in response to a data request for a current page, the present disclosure is not limited thereto. For example, a plurality of pages may be prefetched in response to a data request for a current page.

[0106] Table 2 below shows an example algorithm for prefetch generation using an adaptive prefetch table.

[0107] Table 2

[0108]

[0109]

[0110] As shown in Table 2 above, prefetch_stride, such as N, can be set by software, which allows the system to potentially prefetch the N next address pages before the current address page.

[0111] Figure 6 An example prefetch operation using an adaptive prefetch table and a prefetch stride greater than 1 is shown according to an embodiment.

[0112] refer to Figure 6 , the prefetch stride is set to 3, and the prefetch threshold is set to 2.

[0113] In the first example, upon receiving a data request for page 0, at 601 the adaptive prefetch controller provides 0 to the adaptive prefetch table, which indicates that the address of the predicted next page is 2 and the weight factor of the predicted next page is 3. Furthermore, because the weight factor of the predicted next page is 3, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 2).

[0114] In addition, because the prefetch stride is set to 3 and only one prefetch operation has been performed, i.e., n=1, at 602, the adaptive prefetch table identifies the predicted next page, i.e., 2, as the current page address, which indicates that the address of the predicted next page is 5 and the weight factor of the predicted next page is 4. Furthermore, because the weight factor of the predicted next page is 4, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 5).

[0115] In addition, because the prefetch stride is set to 3 and only two prefetch operations have been performed, i.e., n=2, the adaptive prefetch table identifies the predicted next page, i.e., 5, as the current page address at 603, which indicates that the address of the predicted next page is 5 and the weight factor of the predicted next page is 3. Furthermore, because the weight factor of the predicted next page is 3, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 6).

[0116] In addition, because the prefetch stride is set to 3 and three prefetch operations have been performed, ie, n=3, the original data request for page 0 ends the process.

[0117] In the second example, upon receiving a data request for page 6, at 605, the adaptive prefetch controller provides 6 to the adaptive prefetch table, indicating that the address of the predicted next page is 7 and the weight factor of the predicted next page is 3. Furthermore, because the weight factor of the predicted next page is 3, which is greater than or equal to the prefetch threshold of 2, a prefetch request is generated for the address of the predicted next page (i.e., 7).

[0118] In addition, because the prefetch stride is set to 3 and only one prefetch operation has been performed, i.e., n=1, at 606, the adaptive prefetch table identifies the predicted next page, i.e., 7, as the current page address, which indicates that the address of the predicted next page is 0 and the weight factor of the predicted next page is 0. However, because the weight factor of the predicted next page is 0, which is not greater than or equal to the prefetch threshold 2, no prefetch request is generated for the address of the predicted next page, and the process ends for the original data request of page 6.

[0119] Figure 7 An SSD storage system including a pre-fetch cache according to an embodiment is shown.

[0120] refer to Figure 7 , the SSD storage system includes a request queue 701 , a DRAM cache 706 , a response queue 707 , a pre-fetch cache 710 and an SSD response queue 704 .

[0121] The request queue 701 receives and stores data requests for the SSD, which are processed sequentially.

[0122] DRAM cache 706 stores frequently used data items from the SSD.

[0123] Prefetch cache 710 is a fast temporary buffer for storing prefetch data from prefetch requests to the SSD. With a smaller size, prefetch cache 710 can be implemented as a very fast on-chip cache, while DRAM cache 706 is typically implemented off-chip on a slower DRAM. Prefetch cache 710 can isolate DRAM cache 706 operations from speculative request / response data from prefetch operations.

[0124] The prefetch cache 710 can be viewed as an extension of the DRAM cache 706. However, the replacement policies of these two caches are completely independent of each other.

[0125] The capacity of the pre-fetch cache 710 should be calculated to have enough space to store the outstanding pre-fetch response pages. For example, the number of outstanding pre-fetch requests may be closely related to the size of the request queue 701 .

[0126] Data stored in the DRAM cache 706 and the pre-fetch cache 710 is provided from the SSD via the SSD response queue 704, for example, in response to a DRAM cache data fill request or a pre-fetch data request.

[0127] When processing a data request from the request queue 701, a cache lookup request may be sent from the request queue 701 to the DRAM cache 706 and the prefetch cache 710. When the requested data is stored in the DRAM cache 706 or the prefetch cache 710, the requested data is retrieved from the corresponding cache and provided to the response queue 707, and then provided to the requesting device or software via the memory bus 712 in response to the data request. When the requested data is not stored in the DRAM cache 706 but is stored in the prefetch cache 710, the requested data may also be provided to the DRAM cache 706 from the prefetch cache 710. In addition, after the requested data is provided to the DRAM cache 706, a copy of the requested data may be vacated (invalidated) from the prefetch cache 710 to make room for the next prefetched data.

[0128] Figure 8 Operation of an SSD storage system including a pre-fetch cache according to an embodiment is illustrated.

[0129] refer to Figure 8 When a data request is received via a memory bus 814 , such as a CXL memory bus, it may be provided to a prefetch table 809 , a device cache (or DRAM cache) 806 , and a prefetch cache 810 .

[0130] When a data request is received, the prefetch table 809 is used to determine whether a prefetch request should be generated for the predicted next page, for example, Figure 4 When a pre-fetch request is generated, the generated pre-fetch request is provided to the SSD request / response queue 804 for sequential processing.

[0131] After the SSD request / response queue 804 sends the generated prefetch request to the SSD and then receives the requested prefetch data, the SSD request / response queue 804 provides the received data to the prefetch cache 810 for storage.

[0132] Upon receiving a data request, the device cache 806 determines whether the requested data is stored therein. When the requested data is stored in the device cache 806, the device cache 806 provides the requested data in response to the request.

[0133] Upon receiving a data request, the pre-fetch cache 810 determines whether the requested data is stored therein. When the requested data is stored in the pre-fetch cache 810, the pre-fetch cache 810 provides the requested data in response to the request.

[0134] like Figure 8 As shown, an arbiter 812 may be used to selectively provide requested data from the device cache 806 and the prefetch cache 810 .

[0135] Additionally, when the requested data is stored in the pre-fetch cache 810 but not in the device cache 806, the pre-fetch cache 810 may also provide the requested data to the device cache 806. Thereafter, the pre-fetch cache 810 may evict the provided data therefrom, freeing up space for more pre-fetched data.

[0136] If neither the device cache 806 nor the prefetch cache 810 has the requested data, a cache miss request may be generated and sent to the SSD request / response queue 804 to retrieve the requested data from the SSD.

[0137] Fig. 9 is a flow chart illustrating a method for processing a data request in an SSD storage system including a pre-fetch cache according to an embodiment.

[0138] refer to Fig. 9 , in step 1, a device cache lookup is performed for the received data request. When a cache hit occurs, i.e., when the requested data is stored in the device cache, the requested data is provided in response to the request in step 5. However, when a cache miss occurs, i.e., when the requested data is not stored in the device cache, a prefetch cache lookup is performed in step 2.

[0139] When a prefetch cache hit occurs in step 2, that is, when the requested data is stored in the prefetch cache, the requested data is stored in the device cache in step 4, and is provided in response to the request in step 6. However, when a prefetch cache miss occurs, that is, when the requested data is not stored in the prefetch cache, the data is requested from the SSD in step 3.

[0140] After receiving the data from the SSD, a determination is made as to which cache should receive the data in step 7. If the received data is in response to a request for data that is not stored in either the device cache or the prefetch cache, then the received data is stored in the device cache in step 8 and provided in response to the request in step 6. However, if the received data is in response to a prefetch request, then the received data is stored in the prefetch cache in step 9.

[0141] As described above, the prefetch cache can operate similarly to the device cache and can provide fast responses to data requests if the request hits any page on the prefetch cache. In addition, even though the prefetch may be speculative to some extent, it does not force any useful data to be evicted from the device cache.

[0142] According to another embodiment of the present disclosure, an early prefetch mechanism is provided to ensure that prefetched data is available before it is needed, thereby maintaining good system throughput. More specifically, when a data request initially enters the request queue, the system will attempt to calculate (or find) and generate a prefetch request very early.

[0143] For example, a Bloom filter structure can be used to perform a fast lookup of a data request to identify a device cache hit / miss status. The same request will pass through an adaptive prefetch table to determine whether a prefetch request should be generated and sent to the SSD device.

[0144] When a data request is at the head of the request queue, another lookup may be performed at the prefetch cache to see if the response data for an earlier prefetch request is ready (or still pending). A hit in the prefetch cache will provide the response data for the request and promote the requested page to the primary SSD cache.

[0145] Fig.10 An early prefetch operation for an SSD storage system including a deep request queue is shown according to an embodiment.

[0146] refer to Fig.10 , a deep request queue 1001 (e.g., capable of storing 128-256 entries) is provided, in which the latest arriving data request Req#0 can be searched, and a pre-fetch request to the SSD can be generated in advance before the latest arriving data request is pushed into the deep request queue 1001.

[0147] More specifically, when a data request Req#0 is received via a bus, e.g., CXL memory bus 1000, the data request Req#0 is provided to a hash generator 1011 before being pushed into a deep request queue 1001 or shortly after being pushed into the deep request queue 1001. A Bloom filter may be provided to pass a new request address through the hash generator 1011, and the hash address may be used for a fast device cache lookup hit / miss indication. For example, Fig.10 As shown, the data request Req#0 is provided to the hash generator 1011 , while the data request Req#255 that has been moved to the head of the deep request queue 1001 is sent to the device cache lookup 1002 .

[0148] Hash generator 1011 generates a hash value for data request Req#0, and then performs an early cache lookup by sending the hash value to hash table lookup 1012. Hash table lookup 1012 compares the hash value with a value in a hash table corresponding to data stored in the device cache. The hash table should be frequently updated to correspond to the device cache. Therefore, if hash table lookup 1012 results in a table hit at 1013, this indicates that the data for data request Req#0 may have been included in the device cache, thereby increasing the possibility that the device cache lookup 1002 for data request Req#0 will result in a cache hit at 1003 when the data request Req#0 advances to the head of the deep request queue 1001.

[0149] However, if the hash table lookup 1012 results in a table miss at 1013 , this indicates that the data for data request Req# 0 may not be included in the device cache. In response, an SSD request may then be generated for data request Req# 0 and provided to the SSD request queue 1010 .

[0150] In addition, the SSD request for data request Req#0 may be sent to the adaptive prefetch table 1009 so that a prefetch request may be generated for the predicted next page, for example, as described above with reference to Figure 3 and Figure 4 described.

[0151] like Fig.10 As shown, an arbiter 1005 may be provided to selectively provide data requests and pre-fetch requests to an SSD request queue 1010 for subsequent retrieval from the SSD.

[0152] As described above, using hash table lookup 1012 for early cache lookup can increase the probability of device cache hits and hide some relatively long access latency of SSD storage systems. In addition, using hash table lookup 1012 for early cache lookup can allow pre-fetch operations to be performed faster.

[0153] Fig.11 is a block diagram illustrating an electronic device in a network environment according to an embodiment.

[0154] refer to Fig.11 , an electronic device 1101 (e.g., a mobile terminal including a global positioning system (GPS) function) in a network environment 1100 may communicate with an electronic device 1102 via a first network 1198 (e.g., a short-range wireless communication network), or communicate with an electronic device 1104 or a server 1108 via a second network 1199 (e.g., a long-range wireless communication network). The electronic device 1101 may communicate with the electronic device 1104 via the server 1108. The electronic device 1101 may include a processor 1120, a memory 1130, an input device 1150, a sound output device 1155, a display device 1160, an audio module 1170, a sensor module 1176, an interface 1177, a haptic module 1179, a camera module 1180, a power management module 1188, a battery 1189, a communication module 1190, a subscriber identity module (SIM) 1196, or an antenna module 1197 including a global navigation satellite system (GNSS) antenna. In one embodiment, at least one of the components (e.g., display device 1160 or camera module 1180) may be omitted from electronic device 1101, or one or more other components may be added to electronic device 1101. In one embodiment, some components may be implemented as a single IC. For example, sensor module 1176 (e.g., fingerprint sensor, iris sensor, or illumination sensor) may be embedded in display device 1160 (e.g., display).

[0155] The processor 1120 may execute, for example, software (e.g., program 1140) to control at least one other component (e.g., hardware or software component) of the electronic device 1101 coupled to the processor 1120, and may perform various data processing or calculations. As at least part of the data processing or calculation, the processor 1120 may load a command or data received from another component (e.g., sensor module 1176 or communication module 1190) into the volatile memory 1132, process the command or data stored in the volatile memory 1132, and store the resulting data in the non-volatile memory 1134. The processor 1120 may include a main processor 1121 (e.g., a CPU or an application processor) and an auxiliary processor 1123 (e.g., a graphics processing unit (GPU), an image signal processor (ISP), a sensor hub processor, or a communication processor (CP)), and the auxiliary processor 1123 may operate independently of the main processor 1121 or in conjunction with the main processor 1121. Additionally or alternatively, the auxiliary processor 1123 may be adapted to consume less power than the main processor 1121, or to perform specific functions. The auxiliary processor 1123 may be implemented as a separate part of the main processor 1121 or as a part of the main processor 1121.

[0156] For example, the main processor 1121 and / or the auxiliary processor 1123 may include Figure 3 and Figure 4 One or more of the adaptive prefetch controller or DRAM controller.

[0157] The auxiliary processor 1123 may replace the main processor 1121 when the main processor 1121 is in an inactive (e.g., sleep) state, or control at least some of the functions or states related to at least one of the components of the electronic device 1101 (e.g., the display device 1160, the sensor module 1176, or the communication module 1190) together with the main processor 1121 when the main processor 1121 is in an active state (e.g., executing an application). According to one embodiment, the auxiliary processor 1123 (e.g., an image signal processor or a communication processor) may be implemented as a part of another component (e.g., a camera module 1180 or a communication module 1190) that is functionally related to the auxiliary processor 1123.

[0158] The memory 1130 may store various data used by at least one component of the electronic device 1101 (e.g., the processor 1120 or the sensor module 1176). The various data may include, for example, software (e.g., program 1140) and input data or output data for commands related thereto. The memory 1130 may include a volatile memory 1132 or a non-volatile memory 1134. For example, the memory may include an SSD storage system including the SSD storage system described in the above embodiments (e.g., as Figure 3 , Figure 4 or Fig.10 An adaptive prefetch table (described in ).

[0159] The program 1140 may be stored as software in the memory 1130 , and may include, for example, an OS 1142 , middleware 1144 , or an application 1146 .

[0160] The input device 1150 may receive commands or data to be used by other components (eg, the processor 1120) of the electronic device 1101 from outside (eg, a user) of the electronic device 1101. The input device 1150 may include, for example, a microphone, a mouse, or a keyboard.

[0161] The sound output device 1155 can output sound signals to the outside of the electronic device 1101. The sound output device 1155 may include, for example, a speaker or a receiver. The speaker may be used for general purposes, such as playing multimedia or recording, and the receiver may be used to receive incoming calls. According to one embodiment, the receiver may be implemented as a part of the speaker or as a separate speaker.

[0162] The display device 1160 may visually provide information to the outside of the electronic device 1101 (e.g., a user). The display device 1160 may include, for example, a display, a hologram device, or a projector, and a control circuit for controlling a corresponding one of the display, the hologram device, and the projector. According to one embodiment, the display device 1160 may include a touch circuit adapted to detect a touch or a sensor circuit (e.g., a pressure sensor) adapted to measure the strength of a force caused by a touch.

[0163] The audio module 1170 may convert sound into an electrical signal, and vice versa. According to one embodiment, the audio module 1170 may obtain sound via the input device 1150, or output sound via the sound output device 1155 or an earphone of an external electronic device 1102 directly (e.g., wired) or wirelessly coupled to the electronic device 1101.

[0164] The sensor module 1176 can detect the operating state (e.g., power or temperature) of the electronic device 1101 or the environmental state (e.g., the state of the user) outside the electronic device 1101, and then generate an electrical signal or data value corresponding to the detected state. The sensor module 1176 may include, for example, a gesture sensor, a gyroscope sensor, an atmospheric pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an infrared (IR) sensor, a biometric sensor, a temperature sensor, a humidity sensor, or an illumination sensor.

[0165] The interface 1177 may support one or more designated protocols for the electronic device 1101 to be directly (e.g., wired) or wirelessly coupled to the external electronic device 1102. According to one embodiment, the interface 1177 may include, for example, a high-definition multimedia interface (HDMI), a universal serial bus (USB) interface, a secure digital (SD) card interface, or an audio interface.

[0166] The connection terminal 1178 may include a connector via which the electronic device 1101 can be physically connected to the external electronic device 1102. According to one embodiment, the connection terminal 1178 may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (eg, a headphone connector).

[0167] The haptic module 1179 may convert the electric signal into mechanical stimulation (eg, vibration or movement) or electric stimulation that can be recognized by the user via tactile or kinesthetic sense. According to one embodiment, the haptic module 1179 may include, for example, a motor, a piezoelectric element, or an electric stimulator.

[0168] The camera module 1180 may capture still images or moving images. According to one embodiment, the camera module 1180 may include one or more lenses, an image sensor, an image signal processor, or a flash.

[0169] The power management module 1188 may manage power supplied to the electronic device 1101. The power management module 1188 may be implemented as, for example, at least a portion of a power management integrated circuit (PMIC).

[0170] The battery 1189 may supply power to at least one component of the electronic device 1101. According to one embodiment, the battery 1189 may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.

[0171] The communication module 1190 may support establishing a direct (e.g., wired) communication channel or a wireless communication channel between the electronic device 1101 and an external electronic device (e.g., electronic device 1102, electronic device 1104, or server 1108), and perform communication via the established communication channel. The communication module 1190 may include one or more communication processors that may operate independently of the processor 1120 (e.g., an application processor) and support direct (e.g., wired) communication or wireless communication. According to one embodiment, the communication module 1190 may include a wireless communication module 1192 (e.g., a cellular communication module, a short-range wireless communication module, or a GNSS communication module) or a wired communication module 1194 (e.g., a local area network (LAN) communication module or a power line communication (PLC) module). A corresponding one of these communication modules may communicate with the external electronic device 1101 via a first network 1198 (e.g., a short-range communication network such as Bluetooth TM , Wireless Fidelity (Wi-Fi) Direct, or Infrared Data Association (IrDA) standards) or a second network 1199 (e.g., a long-distance communication network such as a cellular network, the Internet, or a computer network (e.g., a LAN or a wide area network (WAN)) to communicate with an external electronic device. These various types of communication modules can be implemented as a single component (e.g., a single IC), or can be implemented as multiple components separated from each other (e.g., multiple ICs). The wireless communication module 1192 can use user information (e.g., an International Mobile Subscriber Identity (IMSI)) stored in the user identity module 1196 to identify and authenticate the electronic device 1101 in a communication network (such as the first network 1198 or the second network 1199).

[0172] The antenna module 1197 may transmit or receive a signal or power to or from the outside of the electronic device 1101 (e.g., an external electronic device). According to one embodiment, the antenna module 1197 may include one or more antennas, and thereby, at least one antenna suitable for a communication scheme used in a communication network such as the first network 1198 or the second network 1199 may be selected, for example, by the communication module 1190 (e.g., the wireless communication module 1192). Then, a signal or power may be transmitted or received between the communication module 1190 and the external electronic device via the selected at least one antenna.

[0173] At least some of the above components may be coupled to each other and transmit signals (e.g., commands or data) therebetween via an inter-peripheral communication scheme (e.g., a bus, general purpose input and output (GPIO), a serial peripheral interface (SPI), or a mobile industry processor interface (MIPI)).

[0174] According to one embodiment, commands or data may be sent or received between the electronic device 1101 and the external electronic device 1104 via a server 1108 coupled to the second network 1199. Each of the electronic devices 1102 and 1104 may be a device of the same type or a different type as the electronic device 1101. All or some operations to be performed at the electronic device 1101 may be performed at one or more of the external electronic devices 1102, 1104, or 1108. For example, if the electronic device 1101 should automatically or in response to a request from a user or another device to perform a function or service, the electronic device 1101 may request one or more external electronic devices to perform at least a portion of the function or service, instead of performing the function or service, or in addition to performing the function or service, the electronic device 1101 may also request one or more external electronic devices to perform at least a portion of the function or service. The one or more external electronic devices receiving the request may perform at least a portion of the requested function or service, or an additional function or additional service related to the request, and transmit the result of the execution to the electronic device 1101. The electronic device 1101 may provide the result with or without further processing the result as at least part of the reply to the request. To this end, for example, cloud computing, distributed computing or client-server computing techniques may be used.

[0175] One embodiment may be implemented as software (e.g., program 1140) including one or more instructions stored in a storage medium (e.g., internal memory 1136 or external memory 1138) readable by a machine (e.g., electronic device 1101). For example, a processor of electronic device 1101 may call at least one of the one or more instructions stored in the storage medium and execute it with or without one or more other components under the control of the processor. Thus, the machine may be operated to perform at least one function according to at least one instruction called. The one or more instructions may include code generated by a compiler or code executable by an interpreter. The machine-readable storage medium may be provided in the form of a non-transitory storage medium. The term "non-transitory" indicates that the storage medium is a tangible device and does not include signals (e.g., electromagnetic waves), but the term does not distinguish between a location where data is semi-permanently stored in the storage medium and a location where data is temporarily stored in the storage medium.

[0176] According to one embodiment, the method of the present disclosure may be included and provided in a computer program product. The computer program product may be traded as a product between a seller and a buyer. The computer program product may be distributed in the form of a machine-readable storage medium (e.g., a compact disc read-only memory (CD-ROM)), or via an application store (e.g., Play Store TM) online distribution (e.g., download or upload), or directly between two user devices (e.g., smartphones) (e.g., download or upload). If distributed online, at least a portion of the computer program product may be temporarily generated or at least temporarily stored in a machine-readable storage medium, such as a memory of a manufacturer's server, a server of an application store, or a relay server.

[0177] According to one embodiment, each of the above-mentioned components (e.g., a module or a program) may include a single entity or multiple entities. One or more of the above-mentioned components may be omitted, or one or more other components may be added. Alternatively or additionally, multiple components (e.g., modules or programs) may be integrated into a single component. In this case, the integrated component may still perform one or more functions of each of the multiple components in the same or similar manner as performed by the corresponding components in the multiple components before integration. The operations performed by a module, a program, or another component may be performed sequentially, in parallel, repeatedly, or heuristically, or one or more of the operations may be performed or omitted in a different order, or one or more other operations may be added.

[0178] Fig.12 A diagram of a storage system according to an embodiment is shown.

[0179] refer to Fig.12 , the storage system 1300 includes a host 1302 and a storage device 1304. Although one host and one storage device are depicted, the storage system 1300 may include multiple hosts and / or multiple storage devices, such as a RAID array. The storage device 1304 may be an SSD, a universal flash storage (UFS), etc. The storage device 1304 includes a controller 1306 and a storage medium 1308 connected to the controller 1306. The controller 1306 may be an SSD controller, a UFS controller, etc. The storage medium 1308 may include volatile memory, non-volatile memory, or both, and may include one or more flash memory chips (or other storage media). The controller 806 may include one or more processors, one or more error correction circuits, one or more field programmable gate arrays (FPGAs), one or more host interfaces, one or more flash bus interfaces, etc., or a combination thereof. The controller 1306 may be configured to facilitate the transmission of data / commands between the host 1302 and the storage medium 1308. The host 1302 sends data / commands to the storage device 1304 to be received by the controller 1306 and processed in conjunction with the storage medium 1308. As described herein, the methods, processes, and algorithms may be implemented on a storage device controller such as the controller 1306. The arbitrator, command fetcher, and command processor may be implemented in the controller 1306 of the storage device 1304, and the processor and buffer may be implemented in the host 1302.

[0180] Although certain embodiments of the present disclosure have been described in the detailed description of the present disclosure, the present disclosure may be modified in various forms without departing from the scope of the present disclosure. Therefore, the scope of the present disclosure should not be determined based solely on the described embodiments, but rather on the appended claims and their equivalents.

Claims

1. A method for performing adaptive prefetching in a storage system, the method comprising: receiving a first data request, the first data request comprising a first address of a first data page stored in a storage device; as well as performing a lookup operation using the adaptive prefetch table to determine whether a prefetch operation should be performed based on the received first data request, wherein the adaptive prefetch table includes an entry for a first data page corresponding to the received first data request, and The entry of the first data page includes the address of the predicted next page and the weight factor of the predicted next page.

2. The method according to claim 1, further comprising: Based on the weight factor of the predicted next page satisfying the prefetch threshold, a prefetch operation is performed on the predicted next page.

3. The method according to claim 2, wherein: The prefetch operation for the predicted next page includes: generating a prefetch data request for an address of a predicted next page; and Send a pre-fetch data request to the storage device.

4. The method according to claim 3, further comprising: receiving data regarding an address of a predicted next page from a storage device; as well as The received data is stored in the prefetch cache.

5. The method according to claim 2, further comprising: In response to a first data request, receiving a prefetch stride value indicating a number of pages to prefetch; as well as Additional prefetch operations are performed on the predicted next page until the number of pages to be prefetched is reached or the weight factor of one of the predicted next pages is zero.

6. The method according to claim 1, further comprising: receiving a second data request, the second data request comprising a second address of a second data page stored in the storage device; comparing a second address of a second data page with the predicted address of a next page; and An entry of the first data page is updated based on the comparison.

7. The method according to claim 6, wherein: Updating the entry of the first data page based on the comparison includes increasing a weight factor of the predicted next page based on the second address of the second data page corresponding to an address of the predicted next page.

8. The method according to claim 6, wherein: Updating the entry of the first data page based on the comparison includes reducing a weight factor of the predicted next page based on the second address of the second data page being different from the address of the predicted next page.

9. The method according to claim 1, further comprising: receiving a second data request, the second data request comprising a second address of a second data page stored in the storage device; as well as Based on the weight factor of the predicted next page, the address of the predicted next page is updated to the second address of the second data page.

10. The method according to claim 9, further comprising: The weight factor of the updated predicted next page is set to a predetermined initial value.

11. A storage system comprising: Storage devices; Adaptive prefetch table; as well as The processor is configured as: receiving a first data request, the first data request comprising a first address of a first data page stored in a storage device; and performing a lookup operation using the adaptive prefetch table to determine whether a prefetch operation should be performed based on the received first data request, wherein the adaptive prefetch table includes an entry for a first data page corresponding to the received first data request, and The entry of the first data page includes the address of the predicted next page and the weight factor of the predicted next page.

12. The storage system according to claim 11, wherein: The processor is further configured to perform a prefetch operation on the predicted next page based on the weight factor of the predicted next page satisfying the prefetch threshold.

13. The storage system according to claim 12, wherein: The processor is further configured to perform a prefetch operation on the predicted next page by: generating a prefetch data request for an address of a predicted next page; and Send a pre-fetch data request to the storage device.

14. The storage system of claim 13, further comprising a pre-fetch cache, in, The processor is also configured to: receiving data regarding the address of the predicted next page from the storage device; and The received data is stored in the prefetch cache.

15. The storage system according to claim 12, wherein: The processor is also configured to: In response to a first data request, receiving a prefetch stride value indicating a number of pages to prefetch; as well as Additional prefetch operations are performed on the predicted next page until the number of pages to be prefetched is reached or the weight factor of one of the predicted next pages is zero.

16. The storage system according to claim 11, wherein: The processor is also configured to: receiving a second data request, the second data request comprising a second address of a second data page stored in the storage device; comparing a second address of a second data page with the predicted address of a next page; and An entry of the first data page is updated based on the comparison.

17. The storage system according to claim 16, wherein: The processor is further configured to update the entry of the first data page by increasing a weight factor of the predicted next page based on the second address of the second data page corresponding to the address of the predicted next page.

18. The storage system according to claim 16, wherein: The processor is further configured to update the entry of the first data page by decreasing a weight factor of the predicted next page based on the second address of the second data page being different from the address of the predicted next page.

19. The storage system according to claim 1, wherein: The processor is also configured to: receiving a second data request, the second data request comprising a second address of a second data page stored in the memory device; and Based on the weight factor of the predicted next page, the address of the predicted next page is updated to the second address of the second data page.

20. The storage system according to claim 19, wherein: The processor is further configured to set the updated predicted next page weight factor to a predetermined initial value.