Target storage system and method of using additional operations on the target storage system

By dividing the data into parts aligned with the storage medium and parts misaligned and storing them separately in the target storage system, and combining this with mapping table management, the problem of low efficiency in small write operations is solved, storage efficiency is improved and storage medium wear is reduced.

CN113093986BActive Publication Date: 2025-11-14SAMSUNG ELECTRONICS CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202010525721.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-03-05
Filing Date
2020-06-10
Publication Date
2025-11-14
Estimated Expiration
2040-06-10

AI Technical Summary

Technical Problem

Existing target storage devices are inefficient and may damage the storage medium when performing small write operations, and lack effective support for additional operations.

Method used

The controller divides the data into parts that match the data alignment characteristics of the storage medium and parts that do not, and stores them in the storage medium and permanent memory respectively. A mapping table is used to manage the data location to achieve efficient additional operations.

Benefits of technology

It improves the efficiency of small write operations, reduces wear and tear on storage media, and optimizes the performance of the storage system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113093986B_ABST
    Figure CN113093986B_ABST
Patent Text Reader

Abstract

This invention discloses a target storage system and a method for storing data from an application in the target storage system using additional operations. The size of the data received from the application using a request for an additional operation is determined based on the data alignment characteristics of the storage medium. Data not aligned with the data alignment characteristics is stored in persistent storage and aggregated with other data from the application that is not aligned with the data alignment characteristics, while data aligned with the data alignment characteristics is stored directly in the storage medium. Aggregated data that becomes aligned with the data alignment characteristics upon receiving additional requests for additional operations is migrated to the storage medium.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-reference to related applications

[0002] This application claims priority to U.S. Provisional Application No. 62 / 958,699, filed January 8, 2020, the disclosure of which is incorporated herein by reference in its entirety. Technical Field

[0003] The subject matter disclosed herein relates to target storage systems. More specifically, the subject matter disclosed herein relates to a system and method for efficiently supporting additional operations within a target storage system. Background Technology

[0004] Attach operations are common operations used with target storage devices. Typical target storage devices offer some workarounds or alternatives to attach operations, but these devices generally do not have native and efficient ways to support them. One technique used for attach operations is the read-modify-write operation, which can be an expensive and time-consuming storage media access technique.

[0005] Figure 1 The additional operation 100 is essentially a read-modify-write operation. At step 101, the original target is read from memory. At step 102, new data is appended to the original target. At step 103, the updated target is written back to memory.

[0006] Furthermore, small write sizes (i.e., write sizes smaller than the local block size of the storage medium) are generally not effectively controlled by the storage medium of the target storage device. Therefore, the numerous small additional operations that can be performed for a large number of small writes can actually increase latency and may wear down the storage device's medium at a rapid rate. Summary of the Invention

[0007] An example embodiment provides a target storage system that may include a storage medium, persistent memory, and a controller. The storage medium may include data alignment features. The persistent memory may include non-volatile memory accessible in a random access byte-addressable manner. The controller may be coupled to the storage medium and the persistent memory, and the controller may be configured to: receive data from an application for an additional operation; determine the size of a first portion of the data as the size of the data divided by a first integer multiple of the size of the data alignment features of the storage medium, wherein the first integer multiple may be greater than 0; determine the size of a second portion of the data as the remainder after dividing the size of the data by the first integer multiple of the size of the data alignment features of the storage medium; store the first portion of the data in the storage medium based on the first integer multiple greater than 0; temporarily store the second portion of the data in the persistent memory based on the size of the second portion of the data greater than 0, wherein the second portion of the data may be temporarily stored in the persistent memory together with other second portions of data received using a previously received additional operation; and store in the storage medium the temporarily stored second portion of data having a size that is a second integer multiple of the size of the data alignment features of the storage medium, wherein the second integer multiple is greater than 0. In one embodiment, the controller may be further configured to: use a mapping table to indicate that a first portion of the data is stored in a storage medium based on a first integer multiple of 0; and use a mapping table to indicate that a second portion of the data is stored in permanent memory based on the size of a second portion of the data greater than 0.

[0008] An example embodiment provides a target storage system that may include a storage medium, persistent memory, and a controller. The storage medium may include data alignment features. The persistent memory may include non-volatile memory accessible in a random access byte-addressable manner. The controller may be coupled to the storage medium and the persistent memory, and the controller may be configured to: receive first data from an application in response to a first additional operation; determine the size of a first portion of the first data as the size of the first data divided by a first integer multiple of the size of the data alignment features of the storage medium, wherein the first integer multiple is greater than 0; determine the size of a second portion of the first data as the remainder after dividing the size of the first data by the first integer multiple of the size of the data alignment features of the storage medium; store the first portion of the first data in the storage medium based on the first integer multiple greater than 0; temporarily store the second portion of the first data in the persistent memory based on the size of the second portion of the first data greater than 0; and receive second data from the application in response to a second additional operation following the first additional operation. The size of the first portion of the second data is determined as the size of the second data divisible by a second integer multiple of the size of the data alignment characteristics of the storage medium, wherein the second integer multiple is greater than 0; the size of the second portion of the second data is determined as the size of the second data divisible by a second integer multiple of the size of the data alignment characteristics of the storage medium; the first portion of the second data is stored in the storage medium based on the second integer multiple greater than 0; the second portion of the second data is temporarily stored in the permanent memory based on the size of the second portion of the second data greater than 0; and the second portion of the first data and the second portion of the second data, which are temporarily stored in the permanent memory and share a size that is a third integer multiple of the size of the data alignment characteristics of the storage medium, wherein the third integer multiple is greater than 0.

[0009] An example embodiment provides a method for storing data from an application in a target storage system using an additional operation, wherein the method may include: receiving first data from the application in response to a first additional operation; determining the size of a first portion of the first data as the size of the first data divided by a first integer multiple of the size of a data alignment characteristic of a storage medium, wherein the first integer multiple may be greater than 0; determining the size of a second portion of the first data as the remainder after dividing the size of the first data by the first integer multiple of the size of the data alignment characteristic of the storage medium; storing the first portion of the first data in the storage medium based on the first integer multiple greater than 0; and temporarily storing the second portion of the first data in a persistent memory based on the size of the second portion of the first data greater than 0, wherein the persistent memory may include non-volatile memory accessible in a random access byte-addressable manner; for The second additional operation following the first additional operation receives second data from the application; determines the size of the first portion of the second data as a second integer multiple divisible by the size of the data alignment characteristics of the storage medium, wherein the second integer multiple may be greater than 0; determines the size of the second portion of the second data as a second integer multiple divisible by the size of the data alignment characteristics of the storage medium; stores the first portion of the second data in the storage medium based on the second integer multiple greater than 0; temporarily stores the second portion of the second data in permanent memory based on the size of the second portion of the second data greater than 0; and stores in the storage medium the second portion of the first data and the second portion of the second data, which together have a size that is a third integer multiple of the size of the data alignment characteristics of the storage medium, wherein the third integer multiple is greater than 0, in the permanent memory. Attached Figure Description

[0010] In the following sections, aspects of the subject matter disclosed herein will be described with reference to exemplary embodiments illustrated in the figures, wherein:

[0011] Figure 1 It vividly describes the additional operations that are essentially read-modify-write operations.

[0012] Figure 2 A block diagram depicts a target storage system that provides effective technologies to support additional operations based on the topics disclosed herein.

[0013] Figure 3 A portion of an instance mapping table, which can be formed in, for example, persistent storage, according to the subject matter disclosed herein, is depicted, pointing to the locations of different portions of target data written to the target storage system by an application.

[0014] Figure 4 This vividly depicts an example of a series of small additional operations that are aggregated or temporarily stored in permanent memory according to the subject matter disclosed herein.

[0015] Figure 5 This vividly depicts another example of additional operations based on the topics disclosed in this article.

[0016] Explanation of icon numbers

[0017] 100: Additional operations;

[0018] 101, 102, 103, 401, 402, 403, 404, 405, 406: Steps;

[0019] 200: Target storage system;

[0020] 201: Controller;

[0021] 202: Data buffer;

[0022] 203: Permanent storage;

[0023] 204: Storage medium;

[0024] 205: Host system;

[0025] 206: Application;

[0026] 300: Mapping table;

[0027] 400, 500: Examples;

[0028] V1, V2, V3, V n :value. Detailed Implementation

[0029] In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of this disclosure. However, those skilled in the art will understand that the disclosed aspects can be practiced without these specific details. In other instances, well-known methods, processes, components, and circuits have not been described in detail to avoid obscuring the subject matter disclosed herein.

[0030] Throughout this specification, the reference to "an embodiment" or "an embodiment" means that a specific feature, structure, or characteristic described in connection with an embodiment may be included in at least one embodiment disclosed herein. Therefore, the phrases "in one embodiment," "in one embodiment," or "according to an embodiment" (or other phrases with similar meaning) appearing in different places throughout this specification may not necessarily all refer to the same embodiment. Furthermore, in one or more embodiments, specific features, structures, or characteristics may be combined in any suitable manner. In this regard, as used herein, the word "exemplary" means "serving as an example, illustration, or description." Any embodiment described herein as "exemplary" should not necessarily be considered preferred or advantageous over other embodiments. Additionally, in one or more embodiments, specific features, structures, or characteristics may be combined in any suitable manner. Furthermore, depending on the context discussed herein, singular terms may contain corresponding plural forms, and plural terms may contain corresponding singular forms. Similarly, hyphenated terms (e.g., "two-dimensional," "pre-determined," "pixel-specific") are interchangeable with their unhyphenated counterparts (e.g., "two-dimensional," "pre-determined," "pixel-specific"), and uppercase entries (e.g., "counter clock," "row select," "PIXOUT") are interchangeable with their unhyphenated counterparts (e.g., "counter clock," "row select," "pixout"). This interchangeability should not be considered inconsistent with each other.

[0031] Furthermore, depending on the context discussed herein, singular terms may contain corresponding plural forms, and plural terms may contain corresponding singular forms. It should also be noted that the various diagrams (including component diagrams) illustrated and discussed herein are for illustrative purposes only and are not drawn to scale. Similarly, various waveform and timing diagrams are shown for illustrative purposes only. For example, for clarity, the dimensions of some components may be enlarged relative to other components. Additionally, reference numerals are repeated in the figures to indicate corresponding and / or similar components where deemed appropriate.

[0032] The terminology used herein is for the purpose of describing some exemplary embodiments only and is not intended to limit the claimed subject matter. As used herein, unless the context clearly indicates otherwise, the singular forms “a / an” and “the” are also intended to include the plural forms. It will be further understood that the terms “comprises” and / or “comprising”, when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. As used herein, unless so explicitly defined, the terms “first,” “second,” etc., are used as noun labels preceding them and do not imply any type of order (e.g., spatial, temporal, logical, etc.). Furthermore, in two or more figures, the same reference numerals may be used to refer to parts, components, blocks, circuits, units, or modules having the same or similar functionality. However, such use is for the sake of brevity and ease of discussion only; it does not imply that the construction or architectural details of such components or units are the same in all embodiments, or that such general reference parts / modules are the only way to implement some of the exemplary embodiments disclosed herein.

[0033] It will be understood that when an element or layer is referred to as being on, "connected to," or "attached to" another element or layer, the element or layer may be directly on, directly connected to, or attached to the other element or layer, or an intervening element or layer may be present. In contrast, when an element is referred to as being "directly" on, "directly connected to," or "directly attached to" another element or layer, no intervening element or layer is present. The same reference numerals always refer to the same element. As used herein, the term "and / or" includes any and all combinations of one or more of the associated listed items.

[0034] As used herein, unless explicitly defined otherwise, the terms “first,” “second,” etc., are used as noun labels preceding them and do not imply any type of order (e.g., spatial, temporal, logical, etc.). Furthermore, in two or more figures, the same reference numerals may be used to refer to parts, components, blocks, circuits, units, or modules having the same or similar functionality. However, such use is for the sake of brevity and ease of discussion only; it does not imply that the construction or architectural details of such components or units are identical in all embodiments, or that such general reference parts / modules are the only way to implement some of the exemplary embodiments disclosed herein.

[0035] Unless otherwise defined, all terms used herein (including technical and scientific terms) shall have the same meaning as commonly understood by one of ordinary skill in the art to which this subject pertains. It will be further understood that terms as defined in commonly used dictionaries shall be interpreted as having a meaning consistent with their meaning in the context of their relevant art, and shall not be interpreted in an idealized or overly formal sense unless expressly defined herein.

[0036] As used herein, the term "module" refers to any combination of software, firmware, and / or hardware configured to provide the functionality described herein in conjunction with modules. Software may be implemented as a software package, code, and / or instruction set or instructions, and the term "hardware," as used in any implementation described herein, may, for example, include, hardwired circuitry, programmable circuitry, state machine circuitry, and / or firmware storing instructions executed by programmable circuitry, either alone or in any combination. Modules may be implemented collectively or individually as circuitry forming part of a larger system, such as, but not limited to, integrated circuits (ICs), system-on-chips (SoCs), and the like. The various components and / or functional blocks disclosed herein may be implemented as modules that may contain software, firmware, and / or hardware, providing the functionality described herein in conjunction with various components and / or functional blocks.

[0037] The subject matter disclosed herein provides an efficient method to support additional operations that avoid read-modify-write operations in a target storage device. The size of the data received from the application using requests for additional operations is determined based on the data alignment characteristics of the storage medium. Data not aligned to the data alignment characteristics is stored in persistent storage and aggregated with other data from the application that is not aligned to the data alignment characteristics, while data aligned to the data alignment characteristics is stored directly in the storage medium. Aggregated data that becomes aligned to the data alignment characteristics upon receiving additional requests for additional operations is migrated to the storage medium.

[0038] A table can be created that indicates where the target data associated with the application is located. That is, the table can contain the locations where the target data has been stored in storage media and permanent storage.

[0039] Figure 2 A block diagram depicts a target storage system 200 that provides effective techniques for supporting additional operations based on the subject matter disclosed herein. The target storage system 200 may include a controller 201, a data buffer 202, persistent memory 203, and a storage medium 204. The controller 201 is communicatively coupled to each of the data buffer 202, persistent memory 203, and storage medium 204. Figure 2The various components described for the target storage system 200 can be implemented as one or more modules.

[0040] The controller 201 may include, for example, at least one microprocessor, at least one digital signal processor, at least one microcontroller, etc. A memory (not shown) may be connected to the controller 201, which may store command codes or user data to be used by the controller 201.

[0041] Buffer 202 can be configured to receive data and commands from application 206 executing in host system 205, and to send data and status information to host system 205. Although only one application 206 has been depicted as executing in host system 205, it will be understood that any number of applications 206 can execute in host system 205. Furthermore, it will be understood that more than one host system 205 can be communicatively coupled to target storage device 200.

[0042] Persistent memory 203 may be nonvolatile (NV) memory accessible in a random access byte-addressable manner. In one example embodiment, persistent memory 203 may be, for example, dynamic random access memory (DRAM) or static random access memory (SRAM) with a power supply configured with battery backup. In another example embodiment, persistent memory 203 may be a dual inline memory module (DIMM). In yet another embodiment, persistent memory 203 may be storage class memory (SCM). Persistent memory 203 provides persistent storage, for example, during power failures.

[0043] Storage medium 204 may be a non-volatile mass storage device, such as, but not limited to, one or more solid-state drives (SSDs) and / or one or more hard drives (HDs). In one embodiment, controller 201 may use persistent memory 203 to store command codes and / or user data used by controller 201. Storage medium 204 may have a local block size. In one embodiment, the local block size of the storage medium may be 512 bytes.

[0044] In one embodiment, when application 206 sends a request for an additional operation and data associated with that operation, data buffer 202 receives the data. Controller 201 determines whether the size of the data associated with the received additional operation matches the local block size of storage medium 204. In one embodiment, the size of the received data is divided by the local block size. The portion of the received data whose size is a multiple of the local block size that is greater than zero is written directly to storage medium 204. Any remaining portion (i.e., the remainder) of the received data whose size is less than the local block size is written to persistent memory 203 for later storage in storage medium 204.

[0045] Small additional operations are aggregated or temporarily stored in permanent memory 203, and mapping entries in a table can be formed for targets that can point to addresses within permanent memory 203. Once a portion of the target in permanent memory 203 grows large enough to be effectively written to storage medium 204 (i.e., a positive integer multiple of the local block size of storage medium 204), the target data in permanent memory 203 can be migrated or written to storage medium 204 as a background operation. One or more mapping entries in the table for the migrated data can be updated accordingly.

[0046] Figure 3 A portion of an instance mapping table 300, which may be formed in, for example, persistent storage 203, is depicted, pointing to the locations of different portions of target data written to the target storage system 200 by application 206. That is, a target may be represented by a unique key that can point to multiple values ​​or locations in the target storage system 200. Each value may represent a fragment or portion of the entire target. Fragments may reside in storage medium 204 or persistent storage 203. For example, a target key may index values ​​V1 to V... n .like Figure 3 As depicted, values ​​V1 and V2 indicate locations within storage medium 204. Values ​​V3 and V... n Indicates the location in permanent memory 203. During a read operation, the target's mapping entry can be used to assemble the target from various fragments or parts.

[0047] Figure 4Example 400 illustrates multiple small append operations aggregated or temporarily stored in persistent memory 203. Consider storage medium 204 with a local block size of 512 bytes. At step 401, a first append operation (Append 1) produces 124 bytes (remainder) that are not byte-aligned. These 124 bytes can be written to persistent memory 203, and entries can be formed in a table (not shown) for the 124-byte target. For append 1 (and also for appends 2 through 4), byte-aligned data may also exist and be written directly to storage medium 204. Subsequently, at step 402, a second append operation (Append 2) produces 327 bytes that are not byte-aligned. These 327 bytes can be written to persistent memory 203, and entries can be formed in a table (not shown) for the 327-byte target. A third append operation and a fourth append operation, producing 657 bytes and 2998 bytes respectively written to persistent memory 203 at steps 403 and 404, can be received. At this point (at step 405), the four instance append operations append 1 to append 4 have a total of 4096 bytes of common bytes. At step 406, the 4096 bytes are written to storage medium 204, and the corresponding entries of the four append operations append 1 to append 4 are updated to indicate the data that has been migrated to storage medium 204.

[0048] Figure 5 Another example 500 of an append operation based on the subject matter disclosed herein is illustrated. Consider an append operation of 5000 bytes, and storage medium 204 has a local block size of 512 bytes. The size of the data received using the append operation is divisible by the local block size of 512 with a remainder of 392 bytes. A portion of the data, with a size of 4608 bytes, is written directly to storage medium 204, and the remaining 392 bytes are written to persistent memory 203. Entries are formed in a table (not shown) to indicate the location of the 4608 bytes stored in storage medium 204 and the location of the 392 bytes stored in persistent memory 203.

[0049] Although this specification may contain details of many specific embodiments, such details should not be considered as a limitation on the scope of any claimed subject matter, but rather as a description of features specific to particular embodiments. Certain features described in the context of individual embodiments in this specification may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented separately in multiple embodiments or in any suitable sub-combination. Furthermore, while features may be described above as functioning in certain combinations, and even initially so required, in some cases one or more features from the claimed combination may be removed from the combination, and the claimed combination may be for sub-combinations or variations thereof.

[0050] Similarly, although operations are depicted in a specific order in the accompanying drawings, this should not be construed as requiring that such operations be performed in the specific order shown or in sequential order, or that all shown operations be performed to achieve the desired result. In some cases, multitasking and parallel processing may be advantageous. Furthermore, the separation of the various system components in the embodiments described above should not be construed as requiring this separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.

[0051] Therefore, specific embodiments of the subject matter have been described herein. Other embodiments are within the scope of the following claims. In some cases, the actions described in the claims can be performed in a different order and still achieve the desired result. Furthermore, the processes depicted in the drawings do not necessarily require the specific order or sequence shown to achieve the desired result. In some embodiments, multitasking and parallel processing may be advantageous.

[0052] As those skilled in the art will recognize, the innovative concepts described herein can be modified and altered in a wide range of applications. Therefore, the scope of the claimed subject matter should not be limited to any of the specific exemplary teachings discussed above, but is defined by the appended claims.

Claims

1. A target storage system, comprising: Storage media, including data alignment characteristics; Persistent memory, including non-volatile memory that is accessible in a random access byte-addressable manner; as well as A controller, connected to the storage medium and the persistent memory, is configured to: Receive data from the application for additional operations; The size of the first portion of the data is determined as the size of the data divisible by a first integer multiple of the size of the data alignment characteristics of the storage medium, wherein the first integer multiple is greater than 0; The size of the second portion of the data is determined as the remainder after dividing the size of the data by a first integer multiple of the size of the data alignment characteristics of the storage medium; The first portion of the data is stored in the storage medium based on a first integer multiple greater than 0; The second portion of the data is temporarily stored in the permanent memory based on the size of the second portion of the data which is greater than 0, and the second portion of the data is temporarily stored in the permanent memory together with other second portions of the data received using the previously received additional operation; as well as A temporary second portion of the data, which shares a size that is a second integer multiple of the size of the data alignment characteristics of the storage medium, is stored in the storage medium, wherein the second integer multiple is greater than 0. The controller is further configured to: A mapping table is used to indicate that the first portion of the data is stored in the storage medium based on a first integer multiple greater than 0; as well as The mapping table is used to indicate that the second portion of the data, based on its size (greater than 0), is stored in the persistent memory. The mapping table includes a target key, a first value, and a second value. The target key indexes the first value and the second value. The first value indicates the location of the first part of the data in the storage medium, and the second value indicates the location of the second part of the data in the permanent storage.

2. The target storage system of claim 1, wherein the persistent memory comprises a random access memory having a power supply with battery backup.

3. The target storage system according to claim 1, wherein the persistent memory includes one of non-volatile dual in-line memory and memory-class memory.

4. The target storage system according to claim 1, wherein the data alignment feature is 512 bytes.

5. The target storage system according to claim 1, wherein the storage medium comprises one of a solid-state drive and a hard disk drive.

6. A target storage system, comprising: Storage media, including data alignment characteristics; Persistent memory, including non-volatile memory that is accessible in a random access byte-addressable manner; as well as A controller, connected to the storage medium and the persistent memory, is configured to: Receive first data from the application for the first additional operation; The size of the first portion of the first data is determined as the size of the first data divisible by a first integer multiple of the size of the data alignment characteristics of the storage medium, wherein the first integer multiple is greater than 0; The size of the second part of the first data is determined as the remainder after dividing the size of the first data by the first integer multiple of the size of the data alignment characteristics of the storage medium; The first portion of the first data is stored in the storage medium based on a first integer multiple greater than 0; The second portion of the first data is temporarily stored in the permanent memory based on the size of the second portion of the first data which is greater than 0; For a second additional operation following the first additional operation, second data is received from the application. The size of the first portion of the second data is determined as the size of the second data divisible by a second integer multiple of the size of the data alignment characteristics of the storage medium, wherein the second integer multiple is greater than 0; The size of the second portion of the second data is determined as the size of the second data that is divisible by the second integer multiple of the size of the data alignment characteristics of the storage medium; The first portion of the second data is stored in the storage medium based on a second integer multiple greater than 0; The second portion of the second data is temporarily stored in the permanent memory based on the size of the second portion of the second data that is greater than 0; as well as The storage medium stores, in the storage medium, a second portion of the first data and a second portion of the second data, both having a size that is a third integer multiple of the size of the data alignment characteristics of the storage medium, which are temporarily stored in the permanent memory, wherein the third integer multiple is greater than 0. The controller is further configured to: A mapping table is used to instruct the storage medium to store the first portion of the first data based on a first integer multiple greater than 0; as well as The mapping table is used to indicate that the second portion of the first data, based on its size (greater than 0), is stored in the persistent memory. The mapping table includes a target key, a first value, and a second value. The target key indexes the first value and the second value. The first value indicates the location of the first portion of the first data in the storage medium, and the second value indicates the location of the second portion of the first data in the permanent memory.

7. The target storage system of claim 6, wherein the controller is further configured to: The mapping table is used to instruct the storage medium to store the first portion of the second data based on a second integer multiple greater than 0; and The mapping table is used to indicate that the second portion of the second data is stored in the permanent memory based on the size of the second portion of the second data that is greater than 0.

8. The target storage system of claim 6, wherein the persistent memory comprises a random access memory having a power supply with battery backup.

9. The target storage system according to claim 6, wherein the persistent memory comprises one of non-volatile dual in-line memory and memory-class memory.

10. The target storage system of claim 6, wherein the data alignment feature is 512 bytes.

11. The target storage system of claim 6, wherein the storage medium comprises one of a solid-state drive and a hard disk drive.

12. A method for storing data from an application in a target storage system using additional operations, the method comprising: For the first additional operation, first data is received from the application. The size of the first portion of the first data is determined as the size of the first data divided by a first integer multiple of the size of the data alignment characteristics of the storage medium, wherein the first integer multiple is greater than 0; The size of the second part of the first data is determined as the remainder after dividing the size of the first data by the first integer multiple of the size of the data alignment characteristics of the storage medium; The first portion of the first data is stored in the storage medium based on a first integer multiple greater than 0; The second portion of the first data is temporarily stored in a permanent memory based on the size of the second portion of the first data which is greater than 0, the permanent memory including non-volatile memory accessible in a random access byte-addressable manner; For a second additional operation following the first additional operation, second data is received from the application. The size of the first portion of the second data is determined as the size of the second data divisible by a second integer multiple of the size of the data alignment characteristics of the storage medium, wherein the second integer multiple is greater than 0; The size of the second portion of the second data is determined as the size of the second data that is divisible by the second integer multiple of the size of the data alignment characteristics of the storage medium; The first portion of the second data is stored in the storage medium based on a second integer multiple greater than 0; The second portion of the second data is temporarily stored in the permanent memory based on the size of the second portion of the second data that is greater than 0; as well as The storage medium stores, in the storage medium, a second portion of the first data and a second portion of the second data, both having a size that is a third integer multiple of the size of the data alignment characteristics of the storage medium, which are temporarily stored in the permanent memory, wherein the third integer multiple is greater than 0. The method further includes: A mapping table is used to instruct the storage medium to store the first portion of the first data based on a first integer multiple greater than 0; and The mapping table is used to indicate that the second portion of the first data, based on its size (greater than 0), is stored in the persistent memory. The mapping table includes a target key, a first value, and a second value. The target key indexes the first value and the second value. The first value indicates the location of the first portion of the first data in the storage medium, and the second value indicates the location of the second portion of the first data in the permanent memory.

13. The method of claim 12, further comprising: The mapping table is used to instruct the storage medium to store the first portion of the second data based on a second integer multiple greater than 0; as well as The mapping table is used to indicate that the second portion of the second data is stored in the permanent memory based on the size of the second portion of the second data that is greater than 0.

14. The method of claim 12, wherein the persistent memory comprises a random access memory having a power supply with battery backup.

15. The method of claim 12, wherein the persistent memory comprises one of non-volatile dual in-line memory and memory-class memory.

16. The method of claim 12, wherein the data alignment feature is 512 bytes.

17. The method of claim 12, wherein the storage medium comprises one of a solid-state drive and a hard disk drive.

Citation Information

Patent Citations

  • System and method for operating a non-volatile memory including a portion operating as a single-level cell memory and a portion operating as a multi-level cell memory

    US20110252187A1

  • Logical to Physical Sector Size Adapter

    US20180275916A1