Apparatus and method for universal flash storage write-booster buffer partial flush

The LRU partial flush mode in UFS systems addresses memory corruptions and inefficiencies in existing flush modes by retaining frequently used data, enhancing read performance and reducing latency through data temperature-based flush criteria.

WO2026123141A1PCT designated stage Publication Date: 2026-06-18QUALCOMM INC +6

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
QUALCOMM INC
Filing Date
2024-12-09
Publication Date
2026-06-18

AI Technical Summary

Technical Problem

Universal flash storage (UFS) systems suffer from memory corruptions such as bit-flip errors and transmission errors, and existing flush modes like FIFO are not equitable, failing to consider the actual usage patterns of data, leading to inefficient data handling.

Method used

Implementing a least recently used (LRU) partial flush mode for the write-booster buffer, which identifies and retains frequently used data while flushing least recently used data to a secondary buffer, using a measurable metric like data temperature to determine flush criteria.

🎯Benefits of technology

The LRU partial flush mode enhances data retention in the write-booster buffer, improving read performance and reducing latency by maintaining frequently accessed data, thus optimizing the UFS system's efficiency and data handling.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024137679_18062026_PF_FP_ABST
    Figure CN2024137679_18062026_PF_FP_ABST
Patent Text Reader

Abstract

A method for universal flash storage (UFS) buffer operation is described. The method includes selecting least recently used (LRU) logical data blocks stored in a UFS write-booster buffer. The method also includes flushing the selected LRU logical data blocks stored in the UFS write-booster buffer to a secondary UFS buffer.
Need to check novelty before this filing date? Find Prior Art

Description

APPARATUS AND METHOD FOR UNIVERSAL FLASH STORAGE WRITE-BOOSTER BUFFER PARTIAL FLUSHBACKGROUNDField

[0001] The present disclosure generally relates to apparatuses incorporating integrated circuits (ICs) . More specifically, aspects of the present disclosure relate to an apparatus and method for universal flash storage (UFS) write-booster partial flush. Background

[0002] Electronic devices, such as mobile platform devices, are continually driving the demand for faster data and higher data storage specifications. One option for meeting this ever-expanding volume of data is using high speed non-volatile (NV) memory devices. Flash memory is a type of NV memory device with the capability to meet the expanding volume of data consumed by mobile platform devices.

[0003] A flash memory storage device is a type of non-volatile memory implemented using solid-state drive (SSD) technology. For example, SSD-based flash memory is an electronic non-volatile computer storage device capable of maintaining, erasing, and / or reprogramming data. Flash memory can be fabricated with several different types of integrated circuit (IC) technologies, such as a negative logical OR (NOR) gate or a negative logical AND (NAND) gate using, for example, floating-gate transistors. This flash memory can be configured to support block-based, page-based, word-based, and / or byte-based memory access, depending on the type of supported applications.

[0004] The internal memories of the mobile platform devices may be implemented using universal flash storage (UFS) . UFS is a flash storage specification for consumer electronic devices specifying high performance and low power consumption. Unfortunately, universal flash storage is susceptible to memory corruptions, such as bit-flip errors and transmission errors. Selecting a memory refresh operation for UFS is generally performed in a non-intelligent manner.SUMMARY

[0005] A method for universal flash storage (UFS) buffer operation is described. The method includes selecting least recently used (LRU) logical data blocks stored in a UFS write-booster buffer. The method also includes flushing the selected LRU logical data blocks stored in the UFS write-booster buffer to a secondary UFS buffer.

[0006] A non-transitory computer-readable medium having program code recorded thereon for universal flash storage (UFS) buffer operation is described. The program code is executed by a processor. The non-transitory computer-readable medium includes program code to select least recently used (LRU) logical data blocks stored in a UFS write-booster buffer. The non-transitory computer-readable medium also includes program code to flush the selected LRU logical data blocks stored in the UFS write-booster buffer to a secondary UFS buffer.

[0007] This has outlined, rather broadly, the features and technical advantages of the present disclosure in order that the detailed description that follows may be better understood. Additional features and advantages of the disclosure will be described below. It should be appreciated by those skilled in the art that this disclosure may be readily used as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. It should also be realized by those skilled in the art that such equivalent constructions do not depart from the teachings of the disclosure as set forth in the appended claims. The novel features, which are believed to be characteristic of the disclosure, both as to its organization and method of operation, together with further objects and advantages, will be better understood from the following description when considered in connection with the accompanying figures. It is to be expressly understood, however, that each of the figures is provided for the purpose of illustration and description only and is not intended as a definition of the limits of the present disclosure.BRIEF DESCRIPTION OF THE DRAWINGS

[0008] For a more complete understanding of the present disclosure, reference is now made to the following description taken in conjunction with the accompanying drawings.

[0009] FIGURE 1 illustrates an example implementation of a system-on-a-chip (SOC) , including a universal flash storge (UFS) device having a write-booster (WB) buffer configured for a partial flush, in accordance with various aspects of the present disclosure.

[0010] FIGURE 2 is an example implementation illustrating a host controller coupled to universal flash storage (UFS) devices, in accordance with various aspects of the present disclosure.

[0011] FIGURE 3 is block diagram illustrating a write-booster buffer implementation of the host controller and universal flash storage (UFS) devices of FIGURE 2, according to various aspects of the present disclosure.

[0012] FIGURE 4 is a block diagram illustrating a least recently used (LRU) partial flush mode of a universal flash storage (UFS) write-booster (WB) buffer, according to various aspects of the present disclosure.

[0013] FIGURE 5 is a flow diagram illustrating an example method of universal flash storage (UFS) operation, according to various aspects of the present disclosure.

[0014] FIGURE 6 is a block diagram showing a wireless communications system in which a configuration of the disclosure may be advantageously employed.DETAILED DESCRIPTION

[0015] The detailed description set forth below, in connection with the appended drawings, is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the various concepts. It will be apparent to those skilled in the art, however, that these concepts may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring such concepts.

[0016] Based on the teachings, one skilled in the art should appreciate that the scope of the disclosure is intended to cover any aspect of the disclosure, whether implemented independently of or combined with any other aspect of the disclosure. For example, an apparatus may be implemented, or a method may be practiced using any number of the aspects set forth. The apparatus may, for example, be one of a computing system (e.g., servers, datacenters, desktop computers) , mobile computing device (e.g., laptops, cell phones, vehicles, etc. ) , Internet of Things device, and virtual reality or augmented reality system. In addition, the scope of the disclosure is intended to cover such an apparatus or method practiced using other structure, functionality, or structure and functionality in addition to or other than the various aspects of the disclosure set forth. It should be understood that any aspect of the disclosure disclosed may be embodied by one or more elements of a claim.

[0017] As described herein, the use of the term “and / or” is intended to represent an “inclusive OR, ” and the use of the term “or” is intended to represent an “exclusive OR. ” The word “exemplary” is used herein to mean “serving as an example, instance, or illustration. ” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.

[0018] Although particular aspects are described, many variations and permutations of these aspects fall within the scope of the disclosure. Although some benefits and advantages of the preferred aspects are mentioned, the scope of the disclosure is not intended to be limited to particular benefits, uses, or objectives. Rather, aspects of the disclosure are intended to be broadly applicable to different technologies, system configurations, networks, and protocols, some of which are illustrated by way of example in the figures and in the following description of the preferred aspects. The detailed description and drawings are merely illustrative of the disclosure, rather than limiting the scope of the disclosure being defined by the appended claims and equivalents thereof.

[0019] Internal memories of mobile platform devices may be implemented with universal flash storage (UFS) . Universal flash storage or UFS is a flash storage specification for consumer electronic devices, such as mobile phones, digital cameras, and other like consumer electronic devices specifying high performance and low power consumption. Flash memory is a type of non-volatile memory implemented using solid-state drive (SSD) technology. For example, SSD-based flash memory is an electronic non-volatile computer storage device capable of maintaining, erasing, and / or reprogramming data.

[0020] Universal flash storage can be fabricated with several different types of integrated circuit (IC) technologies, such as a negative logical OR (NOR) gate or a negative logical AND (NAND) gate using, for example, floating-gate transistors. Conventional flash storage may be implemented using triple-level cell (TLC) NAND gates. Unfortunately, flash storage implemented using TLC NAND gates incurs a significant read / write latency. One solution to this problem is utilizing the TLC NAND-based flash storage as a primary storage that is supplemented using a single-level cell (SLC) NAND-based write-booster (WB) buffer.

[0021] Utilizing a WB buffer enables processing of write requests to the flash storage with a lower latency and improves an overall read / write performance of the flash storage. In practice, some portions of the TLC NAND-based primary storage allocated for a user area are assigned to the WB buffer. In this implementation, data written in the WB buffer is flushed into the TLC NAND-based primary storage by a host flush command or implicitly while in a hibernate state (HIBERN8) .

[0022] During operation, a limited size of the WB buffer results in frequent flushing of the WB buffer to the TLC NAND-based primary storage. To keep the most recently written data in the WB buffer as long as possible, the UFS Joint Electron Device Engineering Council (JEDEC) standard specifies a first-in-first-out (FIFO) WB buffer partial flush mode. According to the FIFO WB buffer partial flush mode, the most recently written data in the WB buffer is excluded from a WB buffer flush operation. In practice, many logical units (LU) share the WB buffer, and each LU may include several filesystems. A similar problem, however, is incurred for logical units having a dedicated WB buffer.

[0023] Unfortunately, the FIFO partial flush mode is not equitable, as the FIFO partial flush mode assumes the most recently written data is the most often used data in the WB buffer. In particular, the FIFO partial flush mode is limited to a write scenario, which considers only the write data written to the WB buffer. In practice, however, filesystems prefer storing frequently accessed files in the WB buffer because the WB buffer provides a significantly improved read performance. In particular, the SLC NAND-based implementation of the WB buffer doubles a random read performance relative to the TLC NAND-based primary storage.

[0024] Various aspects of the present disclosure are directed to a new WB buffer partial flush mode. In some implementations, the disclosed WB buffer partial flush mode is specified as a least recently used (LRU) partial flush mode. For example, according to the LRU partial flush mode, flushing of the WB buffer partial flush is limited to the data that has been used less frequently than the other frequently used data. When some data are equally identified as the least recently used, these data shall be flushed using the FIFO partial flush mode. A method for specification of the data that is least recently used is left to vendor specific implementations.

[0025] FIGURE 1 illustrates an example implementation of a host system-on-a-chip (SOC) 100 (e.g., a host controller) coupled to universal flash storage (UFS) device having a write-booster (WB) buffer configured for a partial flush, in accordance with aspects of the present disclosure. The host SOC 100 includes processing blocks tailored to specific functions, such as a connectivity block 110. The connectivity block 110 may include fifth generation (5G) new radio (NR) connectivity, fourth generation long term evolution (4G LTE) connectivity, Wi-Fi connectivity, USB connectivity, Bluetooth connectivity, Secure Digital (SD) connectivity, and the like.

[0026] In this configuration, the host SOC 100 includes various processing units that support multi-threaded operation. For the configuration shown in FIGURE 1, the host SOC 100 includes a multi-core central processing unit (CPU) 102, a graphics processor unit (GPU) 104, a digital signal processor (DSP) 106, and a neural processor unit (NPU) 108. The host SOC 100 may also include a sensor processor 114, image signal processors (ISPs) 116, a navigation module 120, which may include a global positioning system, and a memory 118. The multi-core CPU 102, the GPU 104, the DSP 106, the NPU 108, and the multi-media engine 112 support various functions such as video, audio, graphics, gaming, artificial networks, and the like. Each processor core of the multi-core CPU 102 may be a reduced instruction set computing (RISC) machine, RISC-V, an advanced RISC machine (ARM) , a microprocessor, or any reduced instruction set computing (RISC) architecture. The NPU 108 may be based on an ARM instruction set.

[0027] FIGURE 2 is an example implementation illustrating a host controller coupled to universal flash storage (UFS) devices, in accordance with aspects of the present disclosure. In this configuration, a host controller 200 may be the host SOC 100, or a block of the host SOC 100 (e.g., connectivity block 110 or another like block of the host SOC 100) including a UFS interface 210. In this example, the host controller 200 includes the UFS interface 210, configured to communicate with UFS devices 230 (230-1, …, 230-N) over, for example, a small computer system interface (SCSI) bus 220.

[0028] As previously noted, the UFS devices 230 can be fabricated with several different types of integrated circuit (IC) technologies, such as a negative logical OR (NOR) gate or a negative logical AND (NAND) gate using, for example, floating-gate transistors. Conventional flash storage may be implemented using triple-level cell (TLC) NAND gates. Unfortunately, flash storage implemented using TLC NAND gates incurs a significant read / write latency. One solution to this problem is utilizing the TLC NAND-based flash storage as a primary storage that is supplemented using a single-level cell (SLC) NAND-based write-booster (WB) buffer, for example, as shown in FIGURE 3.

[0029] FIGURE 3 is block diagram illustrating a write-booster (WB) buffer implementation 300 of the host controller and universal flash storage (UFS) devices of FIGURE 2, according to aspects of the present disclosure. As shown in FIGURE 3, a host 302 is coupled to a UFS device 330, in which a triple-level cell (TLC) negative logical AND (NAND) -based flash storage is implemented as a primary storage 350 (e.g., a secondary UFS buffer) that is supplemented using a single-level cell (SLC) NAND-based, WB buffer 340. Utilizing the WB buffer 340 enables processing of write requests from the host 302 to the UFS device 330 with a lower latency and an improved, overall read / write performance according to a WB mode (1) for a faster response (2) . In practice, some portions of the primary storage 350 allocated for a user area are assigned to the WB buffer 340. In this implementation, data written in the WB buffer 340 is flushed into the primary storage 350 by an explicit host command or implicitly while in a hibernate (HIBERN8) state.

[0030] During operation, a limited size of the WB buffer results in frequent flushing (3) of the WB buffer 340 to the primary storage 350. To keep the most recently written data in the WB buffer 340 for an extended duration, the UFS Joint Electron Device Engineering Council (JEDEC) standard specifies a first-in-first-out (FIFO) WB buffer partial flush mode. According to the FIFO WB buffer partial flush mode, the most recently written data in the WB buffer 340 is excluded from a WB buffer flush operation. In practice, many logical units (LUs) share the WB buffer 340, and each LU may include several filesystems. A similar problem, however, is incurred for logical units having a dedicated WB buffer.

[0031] Unfortunately, the FIFO partial flush mode is not equitable, as the FIFO partial flush mode assumes the most recently written data is the most often used data in the WB buffer. In particular, the FIFO partial flush mode is limited to a write scenario, which considers only the write data written to the WB buffer. In practice, however, filesystems prefer storing frequently accessed files in the WB buffer because the WB buffer provides a significantly improved read performance. In particular, the SLC NAND-based implementation of the WB buffer doubles a random read performance relative to the TLC NAND-based primary storage.

[0032] Various aspects of the present disclosure are directed to a new WB buffer partial flush mode. In some implementations, the disclosed WB buffer partial flush mode is specified as a least recently used (LRU) partial flush mode. For example, according to the LRU partial flush mode, flushing of the WB buffer 340 is limited to the data that has been used less frequently than the other frequently used data. This LRU partial flush mode includes identifying logical data blocks having a measurable metric (e.g., a data temperature) greater than the predetermined measurable metric threshold (e.g., a data temperature threshold) as the frequently used (FU) logical data blocks. These identified FU logical data blocks are excluded from the LRU partial flush mode. Additionally, the LRU partial flush mode includes selecting least recently used (LRU) logical data blocks for flushing. When a portion of data are equally identified as the LRU, the portion of data is flushed using the FIFO partial flush mode. A method for specification of the data that is least recently used is left to vendor specific implementations.

[0033] FIGURE 4 is a block diagram illustrating a least recently used (LRU) partial flush mode 400 of a universal flash storage (UFS) write-booster (WB) buffer, according to aspects of the present disclosure. As shown in FIGURE 4, a WB buffer 440 is sized to include twenty (20) logical data blocks (LDB 1, LDB 2, …, LDB 20) that are written to the WB buffer 440 row-wise and column-wise. In this example, an LDB programming sequence 450 is shown based on the LDBs shorted in the WB buffer 440. According to the noted first-in-first-out (FIFO) partial flush mode, a flushing sequence of the WB buffer 440 would match the LDB programming sequence 450.

[0034] According to various aspects of the present disclosure, the LRU partial flush mode 400 identifies the logical data blocks (LDB 1, LDB 2, …, LDB 20) that are written to the WB buffer 440 as either frequently used (FU) logical data blocks or least recently used (LRU) logical data blocks. In this example, the logical data blocks (LDB 1, LDB 2, …, LDB 20) are shaded according to a data temperature concept. For example, selecting the FU logical data blocks is performed by comparing a data temperature of the respective logical data blocks with a software (SW) programmable data temperature threshold. Based on the data temperature of the logical data blocks (LDBs) in the WB buffer 440, the LRU partial flush mode 400 performs a WB buffer flushing sequence 420 that differs from the LDB programming sequence 450. In this example, FU LDBs 460 are only flushed when a size of the WB buffer 440 decreases.

[0035] A process for determining a data temperature of the LDBs in the WB buffer 440 may be a simple counter or more advanced algorithm. In one implementation, an exponentially weighted moving average (EWMA) algorithm is utilized according to Equation (1) :

[0036] For example, assuming the following values (e.g., Temperature = 0, EWMA_FACTOR = 5, EWMA_WEIGHT = 8) , five (5) READs to a logical data block per second, the temperature of the data in this logical data block steadily increases (e.g., 0 → 4 → 7 → 10 → 12 → 14) . A process for determining a data temperature of the LDBs in the WB buffer 440 may vary according to a desired, vendor specific implementation, such as a number of read requests to a logical data block per second. In some implementation, an assigned temperature of each logical data unit stored in the WB buffer 440 (e.g., UFS write-booster buffer) is adjusted according to the exponential weight moving average of Equation (1) .

[0037] A register specification for implementing the LRU partial flush mode 400 is shown in Tables 1 and 2. These tables describe various attributes including an identification (IDN) , a Name, an Access Property, Size, Type, a manufacturer default value (MDV) , and a Description. Table 1 Table 2

[0038] As shown in Table 1, a WriteBooster Buffer Partial Flush Mode attribute indicates whether the LRU partial flush mode 400 is enabled. Additionally, a logical unit (LU) -based WB buffer partial refresh selection attribute is bit significant, in which ‘1’ stands for selection of one LU. If any LUs are selected, the WB buffer partial flush only flushes the data from selected Lus. The data from LUs not selected are not flushed. Table 2 illustrates an LRU WriteBooster Buffer Partial Flush Configuration attribute and an LRU WriteBooster Buffer Partial Flush Threshold for enabling data temperature calculations, which may be referred to as a predetermined data temperature threshold.

[0039] According to various aspects of the present disclosure, the LRU partial flush mode 400 provides an equitable partial flush scheme, in which data that is used more frequently (e.g., the FU LDBs 460) are retained in the WB buffer 440 for an extended period of time. The proposed solution is not mutually exclusive to the existing FIFO partial flush mode, but more like an enhancement. In some implementation, one or more of the logical data blocks stored in the UFS write-booster buffer are detected as having a same temperature. In this implementation, flushing the one or more logical data blocks having the same temperature is performed according to a predetermined designation (e.g., first-in-first-out (FIFO) , priority based, or other like designation) . Additionally, the LRU partial flush mode 400 provides flexibilities by allowing host software (SW) to fine tune the LRU partial flush mode parameters. For example, the LRU partial flush mode 400 enables the host SW to determine when a partial flush occurs and select the LDBs that are flushed from the WB buffer 440. A process for an LRU partial flush mode is illustrated, for example, in FIGURE 5.

[0040] FIGURE 5 is a flow diagram illustrating an example method 500 of universal flash storage (UFS) operation, according to various aspects of the present disclosure. The method 500 begins at block 502, in which least recently used (LRU) logical data blocks stored in a UFS write-booster buffer are selected. For example, as shown in FIGURE 4, the LRU partial flush mode 400 identifies the logical data blocks (LDB 1, LDB 2, …, LDB 20) that are written to the WB buffer 440 as either frequently used (FU) logical data blocks or least recently used (LRU) logical data blocks. In this example, the logical data blocks (LDB 1, LDB 2, …, LDB 20) are shaded according to a data temperature concept. For example, selecting the FU logical data blocks is performed by comparing a data temperature of the respective logical data blocks with a software (SW) programmable data temperature threshold.

[0041] At block 504, the selected LRU logical data blocks stored in the UFS write-booster buffer are flushed to a secondary UFS buffer. For example, as shown in FIGURE 4, based on the data temperature of the logical data blocks (LDBs) in the WB buffer 440, the selected LRU LDBs stored in the WB buffer 440 are flushed to a secondary UFS buffer. As shown in FIGURE 4, the LRU partial flush mode 400 performs a WB buffer flushing sequence 420 that differs from the LDB programming sequence 450. In this example, FU LDBs 460 are only flushed when a size of the WB buffer 440 decreases.

[0042] FIGURE 6 is a block diagram showing an exemplary wireless communications system 600 in which a configuration of the disclosure may be advantageously employed. For purposes of illustration, FIGURE 6 shows three remote units 620, 630, and 650 and two base stations 640. It will be recognized that wireless communications systems may have many more remote units and base stations. Remote units 620, 630, and 650 include IC devices 625A, 625B, and 625C, which include the disclosed UFS interface. It will be recognized that any device containing an IC may also include the disclosed UFS interface, including the base stations, switching devices, and network equipment. FIGURE 6 shows forward link signals 680 from the base station 640 to the remote units 620, 630, and 650, and reverse link signals 690 from the remote units 620, 630, and 650 to base stations 640.

[0043] In FIGURE 6, a remote unit 620 is shown as a mobile telephone, a remote unit 630 is shown as a portable computer, and a remote unit 650 is shown as a fixed location remote unit in a wireless local loop system. For example, the remote units may be a mobile phone, a hand-held personal communications systems (PCS) unit, a portable data unit such as a personal data assistant, a GPS enabled device, a navigation device, a set top box, a music player, a video player, an entertainment unit, a fixed location data unit such as meter reading equipment, or any other device that stores or retrieves data or computer instructions, or any combination thereof. For example, a remote unit, including the UFS interface, may be integrated within a vehicle control system, a server computing system or other like system specifying critical data integrity. Although FIGURE 6 illustrates IC devices 625A, 625B, and 625C, which include the disclosed UFS interface, the disclosure is not limited to these exemplary illustrated units. Aspects of the present disclosure may be suitably employed in any device, which includes the UFS interface.

[0044] Implementation examples are described in the following numbered clauses: 1. A method for universal flash storage (UFS) buffer operation, the method  comprising: selecting least recently used (LRU) logical data blocks stored in a UFS write- booster buffer; and flushing the selected LRU logical data blocks stored in the UFS write-booster  buffer to a secondary UFS buffer. 2. The method of clause 1, in which selecting the LRU logical data blocks  stored in the UFS write-booster buffer comprises: comparing a measurable metric of each of a plurality of logical data block stored  in the UFS write-booster buffer to a predetermined measurable metric threshold; and selecting a portion of the plurality of logical data blocks stored in the UFS write- booster buffer, in which the measurable metric is less than the predetermined measurable metric threshold as the selected LRU logical data blocks. 3. The method of clause 2, in which the measurable metric comprises a data  temperature of each logical data block stored in the UFS write-booster buffer according to a number of read requests to the logical data block. 4. The method of clause 2, further comprising: detecting one or more of the plurality of logical data blocks stored in the UFS  write-booster buffer having a same temperature; and flushing the one or more of the plurality of logical data blocks having the same  temperature according to a predetermined designation. 5. The method of clause 2, further comprising identifying logical data  blocks, in which the measurable metric is greater than the predetermined measurable metric threshold as frequently used logical data blocks. 6. The method of clause 5, further comprising maintaining the frequently  used (FU) logical data blocks in the UFS write-booster buffer during flushing. 7. The method of clause 6, further comprising flushing the frequently used  logical data blocks in the UFS write-booster buffer in response to a detected decrease in a size of the UFS write-booster buffer. 8. The method of any of clauses 1-7, further comprising adjusting an  assigned temperature of each logical data block stored in the UFS write-booster buffer according to an exponential weight moving average. 9. The method of any of clauses 1-8, in which flushing the selected LRU  logical data blocks stored in the UFS write-booster buffer to the secondary UFS buffer is performed during a hibernate state. 10. The method of any of clauses 1-9, in which flushing the selected LRU  logical data blocks stored in the UFS write-booster buffer to the secondary UFS buffer is performed in response to a host flush command. 11. A non-transitory computer-readable medium having program code  recorded thereon for universal flash storage (UFS) buffer operation, the program code being executed by a processor and comprising: program code to select least recently used (LRU) logical data blocks stored in a  UFS write-booster buffer; and program code to flush the selected LRU logical data blocks stored in the UFS  write-booster buffer to a secondary UFS buffer. 12. The non-transitory computer-readable medium of clause 11`, in which  the program code to select the LRU logical data blocks stored in the UFS write-booster buffer comprises: program code to compare a measurable metric of each of a plurality of logical  data block stored in the UFS write-booster buffer to a predetermined measurable metric threshold; and program code to select a portion of the plurality of logical data blocks stored in  the UFS write-booster buffer, in which the measurable metric is less than the predetermined measurable metric threshold as the selected LRU logical data blocks. 13. The non-transitory computer-readable medium of clause 12, in which the  measurable metric comprises a data temperature of each logical data block stored in the UFS write-booster buffer according to a number of read requests to the logical data block. 14. The non-transitory computer-readable medium of clause 12, further  comprising: program code to detect one or more of the plurality of logical data blocks stored  in the UFS write-booster buffer having a same temperature; and program code to flush the one or more of the plurality of logical data blocks  having the same temperature according to a predetermined designation. 15. The non-transitory computer-readable medium of clause 12, further  comprising program code to identify logical data blocks, in which the measurable metric is greater than the predetermined measurable metric threshold as frequently used logical data blocks. 16. The non-transitory computer-readable medium of clause 15, further  comprising program code to maintain the frequently used (FU) logical data blocks in the UFS write-booster buffer during flushing. 17. The non-transitory computer-readable medium of clause 16, further  comprising program code to flush the frequently used logical data blocks in the UFS write-booster buffer in response to a detected decrease in a size of the UFS write-booster buffer. 18. The non-transitory computer-readable medium of any of clauses 11-17,  further comprising program code to adjust an assigned temperature of each logical data block stored in the UFS write-booster buffer according to an exponential weight moving average. 19. The non-transitory computer-readable medium of any of clauses 11-18,  in which the program code to flush the selected LRU logical data blocks stored in the UFS write-booster buffer to the secondary UFS buffer is performed during a hibernate state. 20. The non-transitory computer-readable medium of any of clauses 11-19,  in which the program code to flush the selected LRU logical data blocks stored in the UFS write-booster buffer to the secondary UFS buffer is performed in response to a host flush command.

[0045] For a firmware and / or software implementation, the methodologies may be implemented with modules (e.g., procedures, functions, and so on) that perform the described functions. Any machine-readable medium tangibly embodying instructions may be used in implementing the methodologies described herein. For example, software codes may be stored in a memory and executed by a processor unit. Memory may be implemented within the processor unit or external to the processor unit. As used herein the term “memory” refers to any type of long term, short term, volatile, nonvolatile, or other memory and is not to be limited to any particular type of memory or number of memories, or type of media upon which memory is stored.

[0046] If implemented in firmware and / or software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable medium. Examples include computer-readable media encoded with a data structure and computer-readable media encoded with a computer program. Computer-readable media includes physical computer storage media. A storage medium may be an available medium that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, include compact disc (CD) , laser disc, optical disc, digital versatile disc (DVD) and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0047] In addition to storage on computer-readable medium, instructions and / or data may be provided as signals on transmission media included in a communications apparatus. For example, a communications apparatus may include a transceiver having signals indicative of instructions and data. The instructions and data are configured to cause one or more processors to implement the functions outlined in the claims.

[0048] Although the present disclosure and its advantages have been described in detail, it should be understood that various changes, substitutions, and alterations can be made herein without departing from the technology of the disclosure as defined by the appended claims. For example, relational terms, such as “above” and “below” are used with respect to a substrate or electronic device. Of course, if the substrate or electronic device is inverted, above becomes below, and vice versa. Additionally, if oriented sideways, above, and below may refer to sides of a substrate or electronic device. Moreover, the scope of the present application is not intended to be limited to the particular configurations of the process, machine, manufacture, composition of matter, means, methods, and steps described in the specification. As one of ordinary skill in the art will readily appreciate from the disclosure, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed that perform substantially the same function or achieve substantially the same result as the corresponding configurations described herein may be utilized according to the present disclosure. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.

[0049] Those of skill would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the disclosure herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.

[0050] The various illustrative logical blocks, modules, and circuits described in connection with the disclosure herein may be implemented or performed with a general-purpose processor, a digital signal processor (DSP) , an application specific integrated circuit (ASIC) , a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.

[0051] The steps of a method or algorithm described in connection with the disclosure may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM, flash memory, ROM, EPROM, EEPROM, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.

[0052] In one or more exemplary designs, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communications media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a general-purpose or special-purpose computer. By way of example, and not limitation, such computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store specified program code means in the form of instructions or data structures and that can be accessed by a general-purpose or special-purpose computer, or a general-purpose or special-purpose processor. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL) , or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, include compact disc (CD) , laser disc, optical disc, digital versatile disc (DVD) and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0053] The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein but are to be accorded the full scope consistent with the language of the claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more. ” Unless specifically stated otherwise, the term “some” refers to one or more. A phrase referring to “at least one of” a list of items refers to any combination of those items, including single members. As an example, “at least one of: a, b, or c” is intended to cover: a; b; c; a and b; a and c; b and c; and a, b, and c. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. §112, sixth paragraph, unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “a step for.”

Claims

1.A method for universal flash storage (UFS) buffer operation, the method comprising:selecting least recently used (LRU) logical data blocks stored in a UFS write-booster buffer; andflushing the selected LRU logical data blocks stored in the UFS write-booster buffer to a secondary UFS buffer.2.The method of claim 1, in which selecting the LRU logical data blocks stored in the UFS write-booster buffer comprises:comparing a measurable metric of each of a plurality of logical data block stored in the UFS write-booster buffer to a predetermined measurable metric threshold; andselecting a portion of the plurality of logical data blocks stored in the UFS write-booster buffer, in which the measurable metric is less than the predetermined measurable metric threshold as the selected LRU logical data blocks.3.The method of claim 2, in which the measurable metric comprises a data temperature of each logical data block stored in the UFS write-booster buffer according to a number of read requests to the logical data block.4.The method of claim 2, further comprising:detecting one or more of the plurality of logical data blocks stored in the UFS write-booster buffer having a same measurable metric; andflushing the one or more of the plurality of logical data blocks having the same measurable metric according to a predetermined designation.5.The method of claim 2, further comprising identifying logical data blocks, in which the measurable metric is greater than the predetermined measurable metric threshold as frequently used logical data blocks.6.The method of claim 5, further comprising maintaining the frequently used (FU) logical data blocks in the UFS write-booster buffer during flushing.7.The method of claim 6, further comprising flushing the frequently used logical data blocks in the UFS write-booster buffer in response to a detected decrease in a size of the UFS write-booster buffer.8.The method of claim 1, further comprising adjusting an assigned temperature of each logical data block stored in the UFS write-booster buffer according to an exponential weight moving average.9.The method of claim 1, in which flushing the selected LRU logical data blocks stored in the UFS write-booster buffer to the secondary UFS buffer is performed during a hibernate state.10.The method of claim 1, in which flushing the selected LRU logical data blocks stored in the UFS write-booster buffer to the secondary UFS buffer is performed in response to a host flush command.11.A non-transitory computer-readable medium having program code recorded thereon for universal flash storage (UFS) buffer operation, the program code being executed by a processor and comprising:program code to select least recently used (LRU) logical data blocks stored in a UFS write-booster buffer; andprogram code to flush the selected LRU logical data blocks stored in the UFS write-booster buffer to a secondary UFS buffer.12.The non-transitory computer-readable medium of claim 11`, in which the program code to select the LRU logical data blocks stored in the UFS write-booster buffer comprises:program code to compare a measurable metric of each of a plurality of logical data block stored in the UFS write-booster buffer to a predetermined measurable metric threshold; andprogram code to select a portion of the plurality of logical data blocks stored in the UFS write-booster buffer, in which the measurable metric is less than the predetermined measurable metric threshold as the selected LRU logical data blocks.13.The non-transitory computer-readable medium of claim 12, in which the measurable metric comprises a data temperature of each logical data block stored in the UFS write-booster buffer according to a number of read requests to the logical data block.14.The non-transitory computer-readable medium of claim 12, further comprising:program code to detect one or more of the plurality of logical data blocks stored in the UFS write-booster buffer having a same measurable metric; andprogram code to flush the one or more of the plurality of logical data blocks having the same measurable metric according to a predetermined designation.15.The non-transitory computer-readable medium of claim 12, further comprising program code to identify logical data blocks, in which the measurable metric is greater than the predetermined measurable metric threshold as frequently used logical data blocks.16.The non-transitory computer-readable medium of claim 15, further comprising program code to maintain the frequently used (FU) logical data blocks in the UFS write-booster buffer during flushing.17.The non-transitory computer-readable medium of claim 16, further comprising program code to flush the frequently used logical data blocks in the UFS write-booster buffer in response to a detected decrease in a size of the UFS write-booster buffer.18.The non-transitory computer-readable medium of claim 11, further comprising program code to adjust an assigned temperature of each logical data block stored in the UFS write-booster buffer according to an exponential weight moving average.19.The non-transitory computer-readable medium of claim 11, in which the program code to flush the selected LRU logical data blocks stored in the UFS write-booster buffer to the secondary UFS buffer is performed during a hibernate state.20.The non-transitory computer-readable medium of claim 11, in which the program code to flush the selected LRU logical data blocks stored in the UFS write-booster buffer to the secondary UFS buffer is performed in response to a host flush command.