Method and storage device for copy command operation in data storage management system

By using the mapping technology of blocking non-operation commands and shadow storage address space in the data storage management system, the problem of maintaining the atomicity of copy commands is solved, and the replication-write subcommands is ensured without increasing the burden of resource allocation. The atomic operation improves the system efficiency.

CN119271119APending Publication Date: 2025-01-07SAMSUNG ELECTRONICS CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202410874738.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-12-01
Filing Date
2024-07-02
Publication Date
2025-01-07

AI Technical Summary

Technical Problem

In a data storage management system, it is difficult to maintain the atomicity of the copy command, especially when there is no increase in buffer space or increase the burden of resource allocation of data storage devices, especially when there is a storage address for the copy-write subcommand and non-copy commands. When overlapping.

Method used

By generating and inserting blocking Non-Operation (NOP) commands, the copy-write subcommands are mapped across the storage address space, and the shadow storage address space is used to maintain the atomicity of the copy-write subcommands, avoiding storage address overlap, and thus Ensure that the atomic operation of the replication command is run without increasing the burden of resource allocation.

Benefits of technology

It realizes that the atomicity of the copy command is maintained without increasing the buffer space or increasing the burden of resource allocation, ensuring that the atomic operation of the copy-write subcommand is avoided, and the efficiency of the data storage management system is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119271119A_ABST
    Figure CN119271119A_ABST
Patent Text Reader

Abstract

The invention provides a method for copy command execution in a data storage management system and a storage device. A controller of the storage device generates a copy-read sub-command and a copy-write sub-command of a copy command. The controller runs a blocking no-operation (NOP) command across a first memory address range of a copy-write sub-command in a first memory address space. The controller generates a mapping from copy-write subcommands of the first storage address range to copy-write subcommands of a mapping of the corresponding second storage address range in a second storage address space, the second storage address space being higher than a maximum storage address of the first storage address space. The controller runs a copy-read sub-command and a mapped copy-write sub-command. The mapped copy-write sub-command copy data is used for running in a first storage address range.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates generally to data storage management systems, and more particularly, to a method for replicating command execution in a data storage management system. Background Art

[0002] This background section is intended to provide background only, and the disclosure of any concepts in this section does not constitute an admission that the concepts are prior art.

[0003] As computing demands continue to grow, the complexity of data storage management continues to increase. The computing demands can be evidenced by the increase in commands (e.g., read commands, write commands, or copy commands) issued by a host and inserted into a data storage management system for execution. A copy command can consist of multiple pairs of copy-read and copy-write subcommands, and the atomicity of the copy-write subcommands should be maintained so that all subcommands are executed and indivisible during execution. However, a method is needed to maintain the atomicity of copy commands without requiring additional buffer space, delaying non-copy commands, or burdening resource allocation within the data storage device. Summary of the invention

[0004] According to an embodiment, a method is provided in which a controller of a storage device generates a copy-read subcommand and a copy-write subcommand of a copy command. The controller executes a blocking no operation (NOP) command that spans a first storage address range of the copy-write subcommand in a first storage address space. The controller generates a mapping of the copy-write subcommand from the copy-write subcommand of the first storage address range to a corresponding second storage address range in a second storage address space, the second storage address space being higher than a maximum storage address of the first storage address space. The controller executes the copy-read subcommand and the mapped copy-write subcommand. The mapped copy-write subcommand copies data for operation at the first storage address range.

[0005] According to this embodiment, a copy command can be received from a host device at a storage device. The controller can generate and insert a blocking NOP command for operation at the storage device. Based on the operation of the blocking NOP command, the controller can insert a copy-read subcommand and a copy-write subcommand for operation at the storage device. The controller can insert a non-copy command for operation on the storage device. Based on the insertion of the copy-read subcommand, the copy-write subcommand, and the non-copy command, the controller can perform a first overlap check based on the storage address of the copy-read subcommand, the copy-write subcommand, the non-copy command, and the blocking NOP command.

[0006] According to this embodiment, based on the first overlap check, the controller can determine that the storage address overlaps between the copy-write subcommand and the blocking NOP command. The mapping of the copy-write subcommand to the mapped copy-write subcommand is based on the storage address overlap. Based on the first overlap check, the controller can determine that the storage address overlaps between the non-copy command and the blocking NOP command, and the blocking non-copy command is run at the storage device. Based on the mapping of the generated copy-write subcommand to the mapped copy-write subcommand, the controller can perform a second overlap check based on the mapped copy-write subcommand. Based on the completion of the operation, the controller can remove the copy-write subcommand and the copy-read subcommand together from the first storage address range. The controller can remove the blocking NOP command from the first storage address range based on the removal of the copy-write subcommand. The controller can perform a third overlap check based on the non-copy command. The controller can run the non-copy command within the first storage address range.

[0007] According to this embodiment, based on the first overlap check, the controller can determine that the partial storage address overlaps between the non-copy command and the blocking NOP command. The controller can extend the blocking NOP command beyond the first storage address range, causing the extended blocking NOP command to have a complete storage address overlap with the non-copy command and at least a partial storage address overlap with the copy-read subcommand. The controller can generate a mapping of at least a portion of the copy-read subcommand with the storage address overlapped with the extended blocking NOP command to a storage address higher than the maximum address of the storage device. The copy-read subcommand can be run using at least a portion of the copy-read subcommand.

[0008] According to this embodiment, based on the first overlap check, the controller can determine that at least a portion of the storage address overlaps between the copy-read subcommand and the blocking NOP command. The controller can generate a mapping of at least a portion of the copy-read subcommand having a storage address overlap with the blocking NOP command to a storage address higher than the maximum address of the storage device. The copy-read subcommand can be executed using at least a portion of the copy-read subcommand.

[0009] According to an embodiment, a storage device including a storage medium and a controller is provided. The controller is configured to generate a copy-read subcommand and a copy-write subcommand of a copy command, and to run a blocking NOP command across a first storage address range of the copy-write subcommand in a first storage address space. The controller is also configured to generate a mapping of a copy-write subcommand from a copy-write subcommand of a first storage address range to a corresponding second storage address range in a second storage address space, the second storage address space being higher than a maximum storage address of the first storage address space, and to run a copy-read subcommand and a mapped copy-write subcommand. The mapped copy-write subcommand copies data for operation in the first storage address range.

[0010] According to this embodiment, the controller may also be configured to receive a copy command from the host device, generate a blocking NOP command and insert the blocking NOP command for execution, insert a copy-read subcommand and a copy-write subcommand for execution based on the execution of the blocking NOP command, and insert a non-copy command for execution. The controller may further be configured to perform a first overlap check based on the insertion of the copy-read subcommand, the copy-write subcommand, and the non-copy command, based on the storage addresses of the copy-read subcommand, the copy-write subcommand, the non-copy command, and the blocking NOP command.

[0011] According to this embodiment, the controller may be further configured to determine the storage address overlap between the copy-write subcommand and the blocking NOP command based on the first overlap check. The mapping of the copy-write subcommand to the mapped copy-write subcommand is based on the storage address overlap. The controller may also be configured to determine the storage address overlap between the non-copy command and the blocking NOP command based on the first overlap check, and the blocking non-copy command is run at the storage device. The controller may be further configured to perform a second overlap check based on the mapping of the copy-write subcommand to the mapped copy-write subcommand based on the generated copy-write subcommand. The controller may also be configured to clear the copy-write subcommand and the copy-read subcommand together from the first storage address range based on the completion of the operation, clear the blocking NOP command from the first storage address range based on the clearing copy-write subcommand, perform a third overlap check based on the non-copy command, and run the non-copy command within the first storage address range.

[0012] According to this embodiment, the controller can be further configured to determine a partial storage address overlap between a non-copy command and a blocking NOP command based on a first overlap check, and extend the blocking NOP command beyond the first storage address range, resulting in the extended blocking NOP command having a complete storage address overlap with the non-copy command and having at least a partial storage address overlap with the copy-read subcommand. The controller can also be configured to generate a mapping of at least a portion of the copy-read subcommand having a storage address overlap with the extended blocking NOP command to a storage address higher than the maximum address of the storage device. The copy-read subcommand can be run using at least a portion of the copy-read subcommand.

[0013] According to this embodiment, the controller may be further configured to determine at least a portion of the storage address overlap between the Copy-Read subcommand and the Blocking NOP command based on the first overlap check. The controller may also be configured to generate a mapping of at least a portion of the Copy-Read subcommand having a storage address overlap with the Blocking NOP command to a storage address higher than the maximum address of the storage device. The Copy-Read subcommand may be executed using at least a portion of the Copy-Read subcommand.

[0014] According to an embodiment, a storage device is provided, comprising: a copy command processor configured to generate a copy-read subcommand and a copy-write subcommand of a copy command; a command execution module configured to execute a blocking NOP command of a first storage address range of a copy-write subcommand across a first storage address space; and an overlap check module configured to determine storage address overlap based on the copy-read subcommand, the copy-write subcommand, and the blocking NOP command. The storage device also includes a shadow processor configured to generate a mapping of a copy-write subcommand from a first storage address range to a corresponding second storage address range in a second storage address space based on determining the storage address overlap between the copy-write subcommand and the blocking NOP command, wherein the second storage address space is higher than the maximum storage address of the first storage address space. The command execution module is also configured to execute a copy-read subcommand and a mapped copy-write subcommand. The mapped copy-write subcommand copies data for operation in the first storage address range.

[0015] According to this embodiment, the overlap check module can also be configured to clear the copy-write subcommand and the copy-read subcommand together from the first storage address range based on completing the atomic operation, and clear the blocking NOP command from the first storage address range based on clearing the copy-write subcommand. The command execution module can also be configured to run a non-copy command within the first storage address range. The overlap check module can perform an overlap check based on the non-copy command.

[0016] According to this embodiment, the overlap check module can also be configured to determine the partial storage address overlap between the non-copy command and the blocking NOP command. The shadow processor can also be configured to extend the blocking NOP command beyond the first storage address range, causing the extended blocking NOP command to have a complete storage address overlap with the non-copy command and to have at least a partial storage address overlap with the copy-read subcommand. The shadow processor can also be configured to generate a mapping of at least a portion of the copy-read subcommand having a storage address overlap with the extended blocking NOP command to a storage address higher than the maximum address of the storage device. The command execution module can use at least a portion of the copy-read subcommand to execute the copy-read subcommand.

[0017] According to this embodiment, the overlap check module may also be configured to determine that at least a portion of the storage address overlaps between the copy-read subcommand and the blocking NOP command. The shadow processor may also be configured to generate a mapping of at least a portion of the copy-read subcommand having a storage address overlap with the blocking NOP command to a storage address higher than the maximum address of the storage device. The command execution module may execute the copy-read subcommand using at least a portion of the copy-read subcommand. BRIEF DESCRIPTION OF THE DRAWINGS

[0018] The drawings described below are examples of how to implement embodiments of the present disclosure and are not intended to limit the embodiments of the present disclosure. Various embodiments of the present disclosure may include elements not shown in a particular drawing and / or may omit elements shown in a particular drawing. The drawings are intended to provide illustrations and may not be drawn to scale. In conjunction with the drawings, the above and other aspects, features and advantages of certain embodiments of the present disclosure will become more apparent from the following detailed description, in which:

[0019] Figure 1 is a schematic diagram showing a data storage management system for processing commands in an electronic device according to an embodiment;

[0020] Figure 2 is a diagram illustrating a copy command in a data storage management system according to an embodiment;

[0021] Figure 3 is a diagram illustrating a copy command and an overlapping non-copy command in a data storage management system according to an embodiment;

[0022] Figure 4 is a diagram illustrating a copy command, an overlapping non-copy command, and a blocking NOP command in a data storage management system according to an embodiment;

[0023] Figure 5 is a diagram illustrating a copy command, an overlapping non-copy command, a blocking NOP command, and a copy-write sub-command mapping in a data storage management system according to an embodiment;

[0024] Figure 6 is a schematic diagram illustrating a data storage management system that processes copy and non-copy commands according to an embodiment;

[0025] Figure 7 is a schematic diagram illustrating a copy command with copy-read subcommand overlap in a data storage management system according to an embodiment;

[0026] Figure 8 is a schematic diagram illustrating a copy command with partial write command overlap in a data storage management system according to an embodiment;

[0027] Fig. 9 is a flow chart illustrating a method for processing a copy command in a data storage management system according to an embodiment; and

[0028] Fig.10 is a block diagram of an electronic device for processing commands in a network environment according to an embodiment. DETAILED DESCRIPTION

[0029] Hereinafter, embodiments of the present disclosure are described in detail with reference to the accompanying drawings. It should be noted that although the same elements are shown in different drawings, the same elements will be represented by the same reference numerals. In the following description, specific details such as detailed configuration and components are only provided to help the overall understanding of 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. In addition, for clarity and brevity, the description of well-known functions and structures is omitted. The terms described below are defined terms in consideration of the functions in the present disclosure, and may be different according to the user, the user's intention or habit. Therefore, the definition of the term should be determined based on the content of the entire specification.

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

[0031] Although these terms include ordinal numbers, such as first, second, etc., they can be used to describe a variety of elements, but structural elements are not limited by these terms. These terms are only used to distinguish one element from another element. For example, without departing from the scope of the present disclosure, a first structural element can be referred to as a second structural element. Similarly, a second structural element can also be referred to as a first structural element. As used herein, the term "and / or" includes any and all combinations of one or more related items.

[0032] The terms used herein are only used to describe various embodiments of the present disclosure and are not intended to limit the present disclosure. Singular forms are intended to include plural forms unless the context clearly indicates otherwise. In the present disclosure, it should be understood that the terms "including" or "having" represent the presence of features, numbers, steps, operations, structural elements, parts or combinations thereof, and do not exclude the presence or possibility of adding one or more other features, numbers, steps, operations, structural elements, parts or combinations thereof.

[0033] 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. Terms such as those defined in general dictionaries will be interpreted as having the same meaning as the contextual meaning in the relevant technical field, and unless explicitly defined in the present disclosure, should not be interpreted as having an ideal or overly formal meaning.

[0034] The terms used in this disclosure are not intended to limit the disclosure, but are intended to include the various variations, equivalents or alternatives of the corresponding embodiments. Regarding the description of the accompanying drawings, similar reference numerals may be used to refer to similar or related elements. The singular form of the noun corresponding to an item may include one or more things, unless the relevant context clearly indicates otherwise. As used herein, each of the 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 a corresponding phrase. As used herein, terms such as "first", "second", "first" and "second" may be used to distinguish a corresponding component from another component, but are not intended to limit components in other respects (e.g., importance or order). It is intended that 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 (e.g., the second element)”, “connected with another element (e.g., the second element)”, or “connected to another element (e.g., the second element)”, with or without the term “operably” or “communicatively”, it means that the element may be coupled with another element directly (e.g., by wire), wirelessly, or via a third element.

[0035] 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, such as "logic," "logic block," "component," and "circuit." A module may be a single integrated component suitable for performing one or more functions, or a minimum unit or portion thereof. For example, according to one embodiment, a module may be implemented in the form of an application specific integrated circuit (ASIC), a coprocessor, or a field programmable gate array (FPGA).

[0036] According to one embodiment, the electronic device may be one of a plurality of types of electronic devices that utilize a storage device (e.g., a memory device). The electronic device may use any suitable storage standard, such as Peripheral Component Interconnect Express (PCIe), Non-Volatile Memory Express (NVMe), Network NVMe over F (NVMeoF), Advanced Extensible Interface (AXI), Ultra Path Interconnect (UPI), Ethernet, Transmission Control Protocol / Internet Protocol (TCP / IP), Remote Direct Memory Access (RDMA), Converged Ethernet RDMA (ROCE), Fibre Channel (FC), InfiniBand (IB), Serial Advanced Technology Attachment (SATA), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Internet Wide Area RDMA Protocol (iWARP), etc., or any combination thereof. In some embodiments, the interconnect interface may be implemented with 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, Consistent Accelerator Processor Interface (CAPI), Accelerator Cache Coherent Interconnect (CCIX), etc., or any combination thereof. Any memory device may be implemented with one or more of any type of memory 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. The 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. However, the electronic device is not limited to those described above.

[0037] In data storage management, for commands issued by a host and executed in a data storage device, overlap can be determined relative to a target address (e.g., a logical block address (LBA)) in a storage address space of the data storage device. LBA overlap indicates that the target LBA of an inserted command overlaps with the target LBA of a previously inserted command that has not yet completed execution. When no LBA overlap is detected, the inserted command can be executed. However, when an overlap is detected, the inserted command can remain suspended until the previously inserted command completes execution. When the previously inserted command is cleared after execution, the pending command can be released from the pending state and executed. Therefore, a command can be executed simultaneously across different LBAs of a storage address space, or can remain suspended when there is an LBA overlap with another command.

[0038] A copy command in a data storage management system may consist of multiple pairs of copy-read and copy-write subcommands that are inserted into the system in pairs. A copy-read subcommand may be read from one or more sources, and a copy-write subcommand may be written to a single target in consecutive LBAs of a storage address space. The atomicity of the copy-write subcommand should be maintained when another non-copy command is inserted that overlaps the target LBA of the copy-write subcommand.

[0039] To maintain atomicity, the method includes integrating the copy-write subcommand into a single continuous operation using additional buffer space, blocking non-copy commands and inserting all copy-read and copy-write subcommands simultaneously before unblocking the non-copy commands, and blocking subsequently inserted overlapping non-copy commands using a blocking no operation (NOP) command inserted after the copy-write subcommand. The embodiments of the present disclosure enable atomic operation of the copy-write subcommand by initially inserting a blocking command across the LBAs of the copy-write subcommand and mapping the copy-write subcommand to a shadow storage address space without any overlap.

[0040] Figure 1 1 is a schematic diagram showing a data storage management system for processing commands in an electronic device according to an embodiment. Storage system 100 includes a host 102 and a storage device 104 (e.g., a memory device). Although one host and one storage device are described, storage system 100 may include multiple hosts and / or multiple storage devices. Storage device 104 may be an SSD, a universal flash memory (UFS), etc. Storage device 104 includes a controller 106 and a storage medium 108 connected to controller 106. Controller 106 may be an SSD controller, a UFS controller, etc. Storage medium 108 may include volatile memory, non-volatile memory, or both, and may include one or more flash memory chips (or other storage media). Controller 106 may include one or more processors, one or more error correction circuits, one or more FPGAs, one or more host interfaces, one or more flash bus interfaces, etc., or a combination thereof. Controller 106 may be configured to facilitate data / command transmission between host 102 and storage medium 108. Host 102 sends data / commands to storage device 104 to be received by controller 106 and processed in conjunction with storage medium 108.

[0041] Figure 2 1 is a diagram showing a copy command in a data storage management system according to an embodiment. Figure 1 storage device 104) can be accessed from a host (e.g., Figure 1The host 102 receives the copy command. In the command input sequence 201, the copy command may consist of multiple pairs of copy-read and copy-write subcommands. The copy command processor (e.g., Figure 1 The controller 106 of the embodiment of the present invention can obtain the source entry of each copy-read subcommand and can compose the copy-read and copy-write subcommand pairs of the copy command. Figure 2 A first sub-command pair 202, a second sub-command pair 204, and a third sub-command pair 206 are shown. Figure 2 The number of subcommand pairs shown is for illustrative purposes only, and the present disclosure is not limited thereto. The copy command may include any number of subcommand pairs. The first subcommand pair 202 includes a first copy-read subcommand CR1 208 and a first copy-write subcommand CW1 210. The second subcommand pair 204 includes a second copy-read subcommand CR2 212 and a second copy-write subcommand CW2 214. The third subcommand pair 206 includes a third copy-read subcommand CR3 216 and a third copy-write subcommand CW3 218.

[0042] After the subcommand is inserted into the system for operation, the LBA overlap check (LOC) module (e.g., in Figure 1 ) can determine the storage address space (e.g., Figure 1 8), or more specifically, whether a given subcommand can be executed or remain pending due to LBA overlap with a previously inserted command or subcommand. LBA is used as an example of a storage address, but the present disclosure is not limited thereto and other storage addresses may be utilized. Figure 2 An embodiment with subcommands without LBA overlap is shown. Therefore, in the optimized execution sequence 203, the copy-read subcommands CR1 208, CR2 212, and CR3 216 can be executed, resulting in atomic execution of the copy-write subcommands CW1 210, CW2 214, and CW3 218. Specifically, the copy-write subcommands CW1 210, CW2 214, and CW3 218 can be executed atomically at consecutive LBAs of the target storage address space.

[0043] Figure 3 1 is a diagram illustrating a copy command and an overlapping non-copy command in a data storage management system according to an embodiment. The data storage device may receive a copy command and a non-copy command from a host. Figure 2As described, in the command input sequence 301, the copy command processor can obtain the source entry of each copy-read subcommand, and can compose copy-read and copy-write subcommand pairs 302, 304, and 306. The first subcommand pair 302 includes a first copy-read subcommand CR1 308 and a first copy-write subcommand CW1 310. The second subcommand pair 304 includes a second copy-read subcommand CR2 312 and a second copy-write subcommand CW2 314. The third subcommand pair 306 includes a third copy-read subcommand CR3 316 and a third copy-write subcommand CW3 318.

[0044] The copy subcommand may be inserted with the write command W1 320. The LOC module may determine any overlap between the inserted command and the subcommand. Figure 3 308, the LBA of the write command W1 320 is shown as overlapping with the LBA of the first copy-write subcommand CW1 310. Therefore, in the execution sequence 303, when executing the first copy-read subcommand CR1 308 and the first copy-write subcommand CW1 310, the write command W1 320 can be kept suspended by the LOC module until the first copy-write subcommand CW1 310 is completely executed and cleared. After the first copy-write subcommand CW1 310 is cleared by the LOC module, the LOC module can release the write command W1 320 from the suspended state for execution. The execution of the write command W1 320 can occur before or simultaneously with the execution of the second copy-write subcommand CW2 314 and / or the third copy-write subcommand CW3 318. Thus, the write command W1 320 may destroy the atomicity of the execution of the copy-write subcommands CW1 310, CW2 314, and CW3 318 on the copy-write subcommand LBA DR. Although the write command W1 320 is shown as overlapping with the first copy-write subcommand CW1 310, any number of read or write commands may be inserted with multiple subcommand pairs and may overlap with any number of LBAs of the copy-read and copy-write subcommands.

[0045] Figure 4 1 is a diagram showing a copy command, an overlapping non-copy command, and a blocking NOP command in a data storage management system according to an embodiment. Figure 3As described, in the insertion sequence 401, the storage device may receive a copy command and a non-copy command from the host. The copy command processor may obtain a source entry for each copy-read subcommand, and may compose copy-read and copy-write subcommand pairs 402, 404, and 406. The first subcommand pair 402 includes a first copy-read subcommand CR1 408 and a first copy-write subcommand CW1 410. The second subcommand pair 404 includes a second copy-read subcommand CR2 412 and a second copy-write subcommand CW2 414. The third subcommand pair 406 includes a third copy-read subcommand CR3 416 and a third copy-write subcommand CW3 418.

[0046] A write command W1 may be inserted with LBAs that overlap with the LBAs of the first copy-write subcommand CW1 410. Two possible insertion positions are shown for the write command W1. The write command W1 may be inserted as a first write command W1 420 at a first position in the copy subcommand or as a second write command W2 421 at a second position after the copy subcommand.

[0047] In an attempt to prevent any non-copy commands from interrupting the atomic execution of the copy-write subcommand, as described above Figure 3 As described, a blocking NOP command across the LBA target range (DR) (overlapping with the LBA) of the copy-write subcommands CW1 410, CW2 414, and CW3 418 may be inserted. Thus, a blocking NOP command may be inserted before the non-copy command to be blocked. With respect to the first write command W1 420, a first blocking NOP command 422 may be inserted before the copy subcommand to block the first write command W1 420.

[0048] In the run sequence 403, regarding the first write command W1 420, the LOC module can determine that the initial insertion of the first blocking NOP command 422 across LBA DR results in an overlap condition for the first write command W1 420 and the copy-write subcommand. The first write command W1 420 also overlaps with the first copy-write subcommand 410, resulting in the above reference Figure 3 However, the location of the first blocking NOP command 422 results in blocking all copy-write subcommands CW1 410, CW2 414 and CW3 418, as well as any other overlapping non-copy commands, thereby blocking the execution of the copy commands.

[0049] The deadlock caused by the placement of the first blocking NOP command 422 may prompt the disabling of insertion (or buffering) of all non-copy commands until all sub-commands are inserted. A second blocking NOP command 423 may be inserted after the sub-commands, and then the insertion of non-copy commands may be enabled. Thus, a non-copy command that was originally intended to be inserted as a first write command W1 420 may be inserted as a second write command W2 421.

[0050] With respect to the second write command W2 421, the LOC module may determine that there is no overlap for the copy-read subcommands CR1 408, CR2 412, and CR3 416 and the copy-write subcommands CW1 410, CW2 414, and CW3 418, which are described above with respect to Figure 2 The second blocking NOP command 423 overlaps the copy-write subcommands CW1 410, CW2 414, and CW 418 and remains pending until the atomic run of the copy-write subcommand is completed and the subcommand is cleared. The second blocking NOP command 423 across LBA DR holds the second write command W2 421 or any other command overlapping the copy-write subcommands CW1 410, CW2 414, CW3 418 in a pending state. However, this may cause significant delays to non-copy commands that were originally scheduled to be inserted earlier.

[0051] Figure 5 1 is a diagram showing a mapping of a copy command, an overlapping non-copy command, a blocking NOP command, and a copy-write subcommand in a data storage management system according to an embodiment. Figure 3 As described, in the command input sequence 501, the data storage device may receive a copy command and a non-copy command from the host. The copy command processor may obtain the source entry of each copy-read subcommand, and may compose a copy-read and copy-write subcommand pair. The first subcommand pair includes a first copy-read subcommand CR1 508 and a first copy-write subcommand CW1 510. The second subcommand pair includes a second copy-read subcommand CR2 512 and a second copy-write subcommand CW2 514. The third subcommand pair includes a third copy-read subcommand CR3 516 and a third copy-write subcommand CW3 518. The copy command may include any number of subcommand pairs.

[0052] The copy command processor may also construct and insert a blocking NOP command 522 that spans the LBA DR (or overlaps the LBA) of the copy-write subcommands CW1 510, CW2 514, and CW3 518. The copy command processor may insert the blocking NOP command 522 before the subcommands of the copy command, and the LOC module may perform a pre-run overlap check on the inserted blocking NOP command 522. When the blocking NOP command 522 does not overlap (e.g., the blocking NOP command is at the head of the queue of the LBA DR) and is ready to run, the copy command processor may insert the copy-read subcommands CR1 508, CR2 512, and CR3 516 and the copy-write subcommands CW1 510, CW2 514, and CW3 518. The write command W1 520 may also be inserted into the copy subcommand. Although Figure 5 Only a single non-copy command is shown in , but any number of non-copy commands may be provided before, during, or after the sub-command pair.

[0053] The LOC module may perform a pre-run overlap check on the inserted commands and sub-commands and may determine that there is no overlap between the first copy-read sub-command CR1 508, the second copy-read sub-command CR2 512, and the third copy-read sub-command CR3 516. The LOC module may also determine that the copy-write sub-commands CW1 510, CW2 514, and CW3 518 overlap with the blocking NOP command 522 and that the write command W1 520 overlaps with the first copy-write command CW1 510 and the blocking NOP command 522.

[0054] After determining the overlap of the copy-write subcommands, ( Figure 1 The shadow processor of the controller 106 may map the first copy-write subcommand CW1 510 to a shadow first copy-write subcommand S-CW1 528, which is a copy or virtual version of the first copy-write subcommand CW1 510 at a corresponding LBA of the shadow storage address space. The shadow storage address space starts after the maximum LBA of the storage address space, and the first shadow copy-write subcommand S-CW1 528 may be inserted at the shadow LBA starting after the start LBA (SLBA) in the shadow storage address space. The shadow storage address space extends the same maximum LBA length as the storage address space.

[0055] The shadow processor may also map the second copy-write subcommand CW2 514 to a shadow second copy-write subcommand S-CW2 530, which is a copy or virtual version of the second copy-write subcommand CW2 514. The shadow second copy-write subcommand S-CW2 530 may be inserted at a corresponding shadow LBA after and adjacent to the shadow first copy-write subcommand S-CW1 528. The shadow processor may map the third copy-write subcommand CW3 518 to a shadow third copy-write subcommand S-CW3 532, which is a copy or virtual version of the third copy-write subcommand CW3 518. The shadow third copy-write subcommand S-CW3 532 may be inserted at a corresponding shadow LBA after and adjacent to the shadow second copy-write subcommand S-CW2 530.

[0056] In the run sequence 503, the shadow processor may perform a run overlap check and may determine that the shadow first copy-write subcommand S-CW1 528, the shadow second copy-write command S-CW2 530, and the shadow third copy-write subcommand S-CW3 532 do not overlap. The blocking NOP command 522 prevents the command from running across the LBA RD of the copy-write subcommand. The shadow first copy-write subcommand S-CW1 528 may copy data to the LBA of the first copy-write subcommand CW1 510 for running, the shadow second copy-write subcommand S-CW2 530 may copy data to the LBA of the second copy-write subcommand CW2 514 for running, and the shadow third copy-write subcommand S-CW3 532 may copy data to the LBA of the third copy-write subcommand CW3 518 for running. At the same time, the write command W1 520 remains blocked by the blocking NOP command 522.

[0057] Therefore, once the run overlap check is cleared, multiple Copy Ready and Copy-Write subcommands can run simultaneously. Each Copy-Read and Copy-Write subcommand pair can run in a fly-through mode, in which LBA data can be written after it is read without having to wait for the Copy-Read subcommand to complete.

[0058] After atomically running and clearing the shadow copy-write subcommands S-CW1 528, S-CW2 530, and S-CW3 532, the LOC module also clears the blocked NOP command 522. The LOC module can determine that there is no overlap for the previously blocked write command W1 520, so that the write command W1 520 can be released from the pending state and run. Inserting the shadow copy-write subcommands S-CW1 528, S-CW2 530, and S-CW3 532 into the shadow LBA prevents the previously inserted blocking NOP command 522 from blocking the copy-write subcommand, while still allowing the blocking NOP command 522 to block non-copy commands on the LBA DR of the copy-write subcommands CW1 510, CW2 514, and CW3 518.

[0059] Figure 6 6 is a schematic diagram illustrating a data storage management system that processes copy and non-copy commands according to an embodiment. Figure 1 The controller 106 of the embodiment of the present invention can obtain the copy command and the non-copy command. The copy command can be forwarded to the copy command processor 604 (e.g., the controller 106), which can expand each copy command, write a copy-read subcommand and a copy-write subcommand pair, and determine the LBA DR of the copy-write subcommand of the given copy command.

[0060] The copy command processor 604 can write and insert a blocking NOP command across the LBA DR (or overlapping LBA) of the copy-write subcommand of a given copy command. The copy command processor 604 can insert the blocking NOP command before any subcommand of the given copy command via the insertion module 606. The LOC module 608 (e.g., of the controller 106) can determine that the blocking NOP command does not overlap, resulting in the blocking NOP command being located at the head of the queue for LBA DR. The copy command processor 504 can then insert the copy-read and copy-write subcommands via the insertion module 606. The non-copy command obtained by the command acquisition module 602 can also be inserted via the insertion module 606.

[0061] The LOC module 608 may perform a pre-run overlap check on each inserted command and subcommand. Based on the pre-run overlap check, if there is overlap within the LBA 612 for previously inserted and not yet cleared commands and / or subcommands, the copy-read subcommands and non-copy commands may be provided to the pending queue 610. If there is no overlap within the LBA 612 for previously inserted commands or subcommands, the copy-read subcommands and non-copy commands may be provided to the front of the queue 614 for execution.

[0062] The LOC module 608 may determine that the copy-write subcommand overlaps the LBA DR that blocks the NOP command, and the shadow processor 616 (e.g., of the controller 106) may map the copy-write command to a shadow copy-write subcommand at LBA 618, which is a copy or virtual version of the copy-write subcommand, as described above with reference to Figure 5 The shadow processor 610 may also perform an overlap check to determine that the shadow copy-write subcommands do not overlap.

[0063] Figure 6 6. The execution of commands and sub-commands at the command execution data transfer module 620 is shown when the LOC module 608 determines that there is no overlap and reaches the head of the queue 614 for its respective LBA. The command execution data transfer module 620 can execute the commands and sub-commands according to the memory module 622 (e.g., the storage medium 108). Figure 6 The configuration of the processor and the module is shown, but the embodiment is not limited to the configuration shown, and different processors and modules may be provided or combined, and these processors and modules provide the same as those described above. Figure 6 Those described herein have the same or similar functions.

[0064] Figure 7 is a diagram illustrating a copy command with copy-read subcommand overlap in a data storage management system according to an embodiment. Figure 5 As described, the storage device may receive a copy command from a host. In the command input sequence 701, the copy command processor may obtain the source entry of each copy-read subcommand and may write a copy-read and copy-write subcommand pair. The first subcommand pair includes a first copy-read subcommand CR1 708 and a first copy-write subcommand CW1 710. For example, Figure 5 As shown, the Copy command may include any number of additional Copy-Read and Copy-Write sub-command pairs.

[0065] The copy command processor may also write and insert blocking NOP commands 722 across the LBA DR (or overlapping LBAs) of the copy-write subcommands of the copy command, including the LBA of the first copy-write subcommand CW1 710. The copy command processor may insert the blocking NOP command 722 before any subcommand of the copy command. The copy command processor may insert the copy-read and copy-write subcommands 708 and 710 after passing the pre-run overlap check of the LOC module and when the blocking NOP command 722 is at the head of the queue for LBA DR and is ready to run.

[0066] At 703, the LOC module may perform a pre-run overlap check on the inserted subcommands and may determine that the first copy-read subcommand CR1 708 partially overlaps with the blocking NOP command 722 and the first copy-write subcommand CW1 710 completely overlaps with the blocking NOP command 722. The shadow processor may map the first copy-write subcommand CW1 710 to a shadow first copy-write subcommand S-CW1 728, which is a copy or virtual version of the first copy-write subcommand 710. As described above with reference to Figure 5 The insert shadow first copy-write subcommand S-CW2 728.

[0067] Since the blocking NOP command 722 blocks a portion of the first copy-read subcommand CR1 708, the shadow processor may split the first copy-read subcommand 708 into a first copy-read subcommand portion CR1.1 734 that overlaps with the blocking NOP command 722 and a second copy-read subcommand portion CR1.2 736 that does not overlap with the blocking NOP command 722. The shadow processor may map the first copy-read subcommand portion CR1.1 734 to a shadow first copy-read subcommand portion S-CR1.1 738 at a corresponding shadow LBA in the shadow storage address space.

[0068] The shadow processor may perform an overlap check and may determine that the shadow first copy-write subcommand S-CW1 728 and the shadow first copy-read subcommand portion S-CR1.1 738 do not overlap. In the command execution sequence 705, based on the execution of the combination of the shadow first copy-read subcommand portion S-CR1.1 738 and the second copy-read subcommand portion CR1.2 736, the first shadow copy-write subcommand S-CW1 728 may copy data to the LBA of the first copy-write subcommand CW1 710 for execution (as described above with reference to FIG. 1 ). Figure 5 Specifically, the mapping of the first copy-write subcommand 710 and the first copy-read subcommand portion 734 allows them to run despite overlapping with the blocking NOP command 722.

[0069] If the LOC module determines that the first copy-read subcommand CR1 708 completely overlaps with the blocking NOP command 722, the entire first copy-read subcommand 708 can be mapped to a shadow copy-read subcommand, and the first shadow copy-write subcommand S-CW1 728 can copy data to the LBA of the first copy-write subcommand CW1 710 based on the shadow copy-read subcommand for operation.

[0070] Figure 8is a schematic diagram showing the overlap of a copy command and a write command in a data storage management system according to an embodiment. Figure 5 As described, the storage device may receive a copy command and a non-copy command from a host. In a command insertion sequence 801, a copy command processor may obtain a source entry for each copy-read subcommand and may write a copy-read and copy-write subcommand pair. The first subcommand pair includes a first copy-read subcommand CR1 808 and a first copy-write subcommand CW1 810. The copy command may include additional copy-read and copy-write subcommands.

[0071] The Copy Command Processor may also construct and insert a blocking NOP command 822 that spans the LBA DR (or overlapping LBA) of the Copy-Write subcommand of the Copy Command, including the LBA of the first Copy-Write subcommand CW1810. The Copy Command Processor may insert a blocking NOP command 822 before any subcommand of the Copy Command. After passing the pre-run overlap check of the LOC module, and when the blocking NOP command 822 is at the head of the queue for LBA DR and is ready to run, the Copy Command Processor may insert the Copy-Read and Copy-Write subcommands. A Write command W1 820 may also be inserted.

[0072] At 803 , the LOC module may perform a pre-run overlap check on the inserted commands and subcommands and may determine that the first copy-write subcommand CW1 810 overlaps with the blocking NOP command 822 and that the write command W1 820 partially overlaps with the first copy-read subcommand CR1 808 and the blocking NOP command 822 .

[0073] The copy command processor may extend the blocking NOP command 822 by the extension portion 840 so that it blocks a portion of the LBA range of the write command W1 820 that was not previously blocked by the blocking NOP command 822. However, the first copy-read subcommand CR1 808 partially overlaps with the extension portion 840, resulting in the blocking of the first copy-read subcommand 808.

[0074] As mentioned above Figure 7 As described above, the shadow processor may map the first copy-write subcommand CW1 810 to a shadow first copy-write subcommand S-CW1 828, the first copy-write subcommand CW1 810 having an LBA blocked by the execution blocking NOP command 822, the shadow first copy-write subcommand S-CW1 828 being a copy or virtual version of the first copy-write subcommand 810. The shadow first copy-write subcommand S-CW2 828 may be inserted into the corresponding shadow LBA of the shadow storage address space (as described above with reference to Figure 5 described above).

[0075] The shadow processor may split the first copy-read subcommand 808 into a first copy-read subcommand portion CR1.1 834 that overlaps with the blocking NOP command 822 and a second copy-read subcommand portion CR1.2 836 that does not overlap with the blocking NOP command 822. The shadow processor may map the first copy-read subcommand portion CR1.1 834 to a shadow first copy-read subcommand portion S-CR1.1 838 at a corresponding shadow LBA of the shadow storage address space (as described above with reference to FIG. 1 ). Figure 7 described above).

[0076] The shadow processor may perform an overlap check and may determine that the shadow first copy-write subcommand S-CW1 828 and the shadow first copy-read subcommand portion S-CR1.1 838 do not overlap. In the execution sequence 805, based on the execution of the combination of the shadow first copy-read subcommand portion S-CR1.1 838 and the second copy-read subcommand portion CR1.2 836, the first shadow copy-write subcommand S-CW1 828 may be copied to the LBA of the first copy-write subcommand CW1 810 for execution (as described above with reference to FIG. 1 ). Figure 5 described above).

[0077] As described above with respect to claim 7, if the LOC module determines that the first copy-read subcommand CR1 808 completely overlaps with the blocking NOP command 822 and the extension 840, the entire first copy-read subcommand 808 can be mapped to a shadow copy-read subcommand, and the first shadow copy-write subcommand S-CW1 828 can copy data to the LBA of the first copy-write subcommand CW1 810 for operation based on the shadow copy-read subcommand.

[0078] When the shadow copy-write subcommand is atomically executed and cleared, the blocking NOP command 822 and the extension portion 840 may also be cleared, and the LOC module may determine that there is no overlap for the previously blocked write command W1 820, enabling the write command W1 820 to be released from the pending state and executed.

[0079] Fig. 9 1 is a flow chart illustrating a method for processing a copy command in a data storage management system according to an embodiment. At 902, a storage device may receive a copy command from a host, and a copy command processor may generate a copy-read and copy-write sub-command pair. A single copy command may include any number of copy-read and copy-write sub-command pairs.

[0080] At 904, the copy command processor may generate and insert a blocking NOP command. The blocking NOP command may be composed as an LBADR across the copy-write subcommand of the copy command. The blocking NOP command may be inserted before the subcommand of the copy command.

[0081] The copy command processor may insert the subcommand, and the LOC module may perform a pre-run overlap check on the subcommand and any inserted non-copy commands at 906. The subcommand may be inserted when a blocking NOP command is ready to run.

[0082] At 908, it may be determined whether the inserted non-copy command partially overlaps with a blocking NOP command. If the inserted non-copy command does not overlap with a blocking NOP command, then at 910, it is determined whether the copy-read subcommand overlaps with a blocking NOP command.

[0083] At 912, if the copy-read subcommand does not overlap with the blocking NOP command, the shadow processor may generate a mapping of the copy-write subcommand to the corresponding shadow LBA in the shadow storage address space, which the copy-read subcommand overlaps with the blocking NOP command due to the configured LBA span of the blocking NOP command. The shadow LBA may start after the maximum LBA of the storage address space, and the mapped copy-write subcommand may be mapped after the SLBA of the maximum LBA from the storage address space.

[0084] At 914, the shadow handler may perform a run overlap check on the shadow copy-write subcommands and may determine that no overlap exists for the shadow copy-write subcommands.

[0085] At 916, the shadow copy-write subcommand may copy the data to the LBA of the copy-write subcommand for atomic operation. Any inserted non-copy commands may remain blocked by the blocking NOP command. Upon atomic operation and clearing of the copy subcommand, the LOC module may clear the blocking NOP command and allow any non-copy commands previously blocked by the blocking NOP command to run.

[0086] If the inserted non-copy command partially overlaps with the blocking NOP command, then at 918, the blocking NOP command can be extended to completely block the LBA of the non-copy command. Due to the extension of the blocking NOP command, the copy-read subcommand can now overlap with the extended blocking NOP command, which is determined at 910. If the copy-read subcommand overlaps with the blocking NOP command, then at 920, it can be determined whether the complete copy-read subcommand overlaps with the blocking NOP command. If it is determined at 908 that the non-copy command does not partially overlap with the blocking NOP command, and at 910 the copy-read subcommand overlaps with the non-extended blocking NOP command, the determination at 920 can also be performed.

[0087] If the full copy-read subcommand does not overlap with the blocking NOP command (i.e., partially overlaps), then at 922, the copy-read subcommand may be divided into a first portion that overlaps with the blocking NOP command and a second portion that does not overlap with the blocking NOP command. At 924, the portion of the copy-read subcommand that overlaps with the blocking NOP command may be mapped to a corresponding shadow LBA in the shadow storage address space. If the full copy-read subcommand overlaps with the blocking NOP command, then at 924, the full copy-read subcommand may be mapped to a corresponding shadow LBA in the shadow storage space. The run overlap check of 914 may also be performed on the shadow copy-read subcommand or the shadow first portion of the copy-read subcommand, and the copy-write subcommand may be run at 916 based on the combination of the shadow copy-read subcommand or the shadow first portion of the copy-read subcommand and the second portion of the copy-read subcommand.

[0088] Fig.10 1 is a block diagram of an electronic device in a network environment 1000 for processing commands according to an embodiment. The electronic device may be a device that utilizes the above Figure 1 and Figure 6 One of the multiple types of electronic devices described in the storage device.

[0089] refer to Fig.10 , the electronic device 1001 in the network environment 1000 may communicate with the electronic device 1002 via the first network 1098 (e.g., a short-range wireless communication network), or communicate with the electronic device 1004 or the server 1008 via the second network 1099 (e.g., a long-range wireless communication network). The electronic device 1001 may communicate with the electronic device 1004 via the server 1008. The electronic device 1001 may include a processor 1020, a memory 1030, an input device 1050, a sound output device 1055, a display device 1060, an audio module 1070, a sensor module 1076, an interface 1077, a haptic module 1079, a camera module 1080, a power management module 1088, a battery 1089, a communication module 1090, a subscriber identification module (SIM) card 1096, or an antenna module 1097. In one embodiment, at least one component (e.g., display device 1060 or camera module 1080) may be omitted from electronic device 1001, or one or more other components may be added to electronic device 1001. Some components may be implemented as a single integrated circuit (IC). For example, sensor module 1076 (e.g., fingerprint sensor, iris sensor, or illumination sensor) may be embedded in display device 1060 (e.g., display).

[0090] The processor 1020 may execute software (eg, program 1040 ) to control at least one other component (eg, hardware or software component) of the electronic device 1001 coupled to the processor 1020 , and may perform various data processing or calculations.

[0091] As at least part of data processing or calculation, the processor 1020 may load commands or data received from a host or another component (e.g., a sensor module 1076 or a communication module 1090) into the volatile memory 1032, process the commands or data stored in the volatile memory 1032, and store the resultant data in the non-volatile memory 1034. The processor 1020 may include a main processor 1021 (e.g., a central processing unit (CPU) or an application processor (AP)) and an auxiliary processor 1023 (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 1023 may operate independently of the main processor 1021 or in conjunction with the main processor 1021. Additionally or alternatively, the auxiliary processor 1023 may be adapted to consume less power than the main processor 1021, or to perform a specific function. The auxiliary processor 1023 may be implemented to be independent of the main processor 1021 or to be a part of the main processor 1021.

[0092] When the main processor 1021 is in an inactive (e.g., sleep) state, the auxiliary processor 1023 can replace the main processor 1021, or when the main processor 1021 is in an active state (e.g., running an application), the auxiliary processor 1023 can control at least some functions or states related to at least one of the components of the electronic device 1001 (e.g., the display device 1060, the sensor module 1076, or the communication module 1090) together with the main processor 1021. The auxiliary processor 1023 (e.g., an image signal processor or a communication processor) can be implemented as a part of another component (e.g., the camera module 1080 or the communication module 1090) that is functionally related to the auxiliary processor 1023.

[0093] The memory 1030 may store various data used by at least one component of the electronic device 1001 (e.g., the processor 1020 or the sensor module 1076). The various data may include, for example, input data or output data of software (e.g., the program 1040) and commands related thereto. The memory 1030 may include a volatile memory 1032 or a non-volatile memory 1034. The non-volatile memory 1034 may include an internal memory 1036 and / or an external memory 1038. The memory 1030 may be embodied as Figure 1 storage device 104.

[0094] The program 1040 may be stored as software in the memory 1030 , and may include, for example, an operating system (OS) 1042 , middleware 1044 , or an application 1046 .

[0095] The input device 1050 may receive a command or data to be used by another component (eg, the processor 1020) of the electronic device 1001 from outside (eg, a user) of the electronic device 1001. The input device 1050 may include, for example, a microphone, a mouse, or a keyboard.

[0096] The sound output device 1055 can output sound signals to the outside of the electronic device 1001. The sound output device 1055 may include, for example, a speaker or a receiver. The speaker can be used for general purposes, such as playing multimedia or recording, and the receiver can be used to receive incoming calls. The receiver can be implemented as being separated from the speaker or as a part of the speaker.

[0097] The display device 1060 may visually provide information to the outside (e.g., a user) of the electronic device 1001. The display device 1060 may include, for example, a display, a holographic device, or a projector, and a control circuit that controls a corresponding one of the display, the holographic device, and the projector. The display device 1060 may include a touch circuit suitable for detecting a touch, or a sensor circuit (e.g., a pressure sensor) suitable for measuring the strength of a force caused by a touch.

[0098] The audio module 1070 can convert sound into an electrical signal and vice versa. The audio module 1070 can obtain sound via the input device 1050, or output sound via a sound output device 1055 or earphone of an external electronic device 1002 directly (eg, wired) or wirelessly coupled to the electronic device 1001.

[0099] The sensor module 1076 can detect an operating state (e.g., power or temperature) of the electronic device 1001 or an environmental state (e.g., a user's state) outside the electronic device 1001, and then generate an electrical signal or data value corresponding to the detected state. The sensor module 1076 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 biosensor, a temperature sensor, a humidity sensor, or an illumination sensor.

[0100] The interface 1077 may support one or more designated protocols for the electronic device 1001 to be directly (e.g., wired) or wirelessly coupled with the external electronic device 1002. The interface 1077 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.

[0101] The connection end 1078 may include a connector through which the electronic device 1001 may be physically connected to the external electronic device 1002. The connection end 1078 may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (eg, a headphone connector).

[0102] The haptic module 1079 may convert an electrical signal into a mechanical stimulus (eg, vibration or motion) or an electrical stimulus, which a user may recognize through tactile or kinesthetic sense. The haptic module 1079 may include, for example, a motor, a piezoelectric element, or an electrical stimulator.

[0103] The camera module 1080 may capture still images or moving images. The camera module 1080 may include one or more lenses, an image sensor, an image signal processor, or a flash. The power management module 1088 may manage the power supplied to the electronic device 1001. The power management module 1088 may be implemented as at least a portion of a power management integrated circuit (PMIC), for example.

[0104] The battery 1089 may supply power to at least one component of the electronic device 1001. The battery 1089 may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.

[0105] The communication module 1090 may support establishing a direct (e.g., wired) communication channel or a wireless communication channel between the electronic device 1001 and an external electronic device (e.g., electronic device 1002, electronic device 1004, or server 1008), and perform communication via the established communication channel. The communication module 1090 may include one or more communication processors that may operate independently of the processor 1020 (e.g., AP) and support direct (e.g., wired) communication or wireless communication. The communication module 1090 may include a wireless communication module 1092 (e.g., a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module 1094 (e.g., a local area network (LAN) communication module or a power line communication (PLC) module). A corresponding one of these communication modules can communicate with an external electronic device via a first network 1098 (e.g., a short-range communication network such as Bluetooth, Wireless Fidelity (Wi-Fi) Direct, or Infrared Data Association (IrDA) standards) or a second network 1099 (e.g., a long-range communication network such as a cellular network, the Internet, or a computer network (e.g., a LAN or a wide area network (WAN))). These different 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 1092 can use the subscriber information (e.g., International Mobile Subscriber Identity (IMSI)) stored in the subscriber identification module 1096 to identify and authenticate the electronic device 1001 in a communication network such as the first network 1098 or the second network 1099.

[0106] The antenna module 1097 may transmit or receive a signal or power to or from the outside of the electronic device 1001 (e.g., an external electronic device). The antenna module 1097 may include one or more antennas, and thus, for example, at least one antenna suitable for a communication scheme used in a communication network such as the first network 1098 or the second network 1099 may be selected by the communication module 1090 (e.g., the wireless communication module 1092). Then, a signal or power may be transmitted or received between the communication module 1090 and the external electronic device via the selected at least one antenna.

[0107] Commands or data may be sent or received between the electronic device 1001 and the external electronic device 1004 via a server 1008 coupled to the second network 1099. Each of the electronic devices 1002 and 1004 may be a device of the same type or a different type as the electronic device 1001. All or some operations to be run on the electronic device 1001 may be run on one or more external electronic devices 1002, 1004, or 1008. For example, if the electronic device 1001 should automatically perform a function or service, or in response to a request from a user or another device, the electronic device 1001 may request one or more external electronic devices to perform at least a portion of the function or service instead of or in addition to running 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 additional functions or additional services related to the request, and transmit the result of the execution to the electronic device 1001. The electronic device 1001 may provide the result as at least a part of the reply to the request with or without further processing the result. To this end, cloud computing, distributed computing, or client-server computing technology may be used, for example.

[0108] The subject matter and the embodiments of the operation described in this specification may be implemented in digital electronic circuits, or in computer software, firmware or hardware, including the structures disclosed in this specification and their structural equivalents, or in a combination of one or more of them. The embodiments of the subject matter described in this specification may be implemented as one or more computer programs, i.e., one or more computer program instruction modules, which are encoded on a computer storage medium to be run by a data processing device or to control the operation of a data processing device. Alternatively or additionally, the program instructions may be encoded on an artificially generated propagation signal, such as a machine-generated electrical, optical or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver device to be run by a data processing device. The computer storage medium may be or be included in a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination thereof. In addition, although the computer storage medium is not a propagation signal, the computer storage medium may be the source or target of the computer program instructions encoded in the artificially generated propagation signal. The computer storage medium may also be or be included in one or more separate physical components or media (e.g., multiple CDs, disks or other storage devices). Furthermore, the operations described in this specification may be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.

[0109] Although this specification may include many specific implementation details, these implementation details should not be interpreted as limiting the scope of any claimed subject matter, but should be interpreted as a description of features peculiar to a particular embodiment. Certain features described in the context of a separate embodiment in this specification may also be implemented in combination in a single embodiment. On the contrary, the various features described in the context of a single embodiment may also be implemented separately or in any suitable sub-combination in multiple embodiments. In addition, although features may be described above as working in certain combinations, and even initially claimed as such, one or more features from the claimed combination may be deleted from the combination in some cases, and the claimed combination may be directed to a variant of a sub-combination or a sub-combination.

[0110] Similarly, although operations are described in a particular order in the accompanying drawings, this should not be understood as requiring that the operations be performed in the particular order shown or in a sequential order, or that all of the operations shown be performed to obtain the desired results. In some cases, multitasking and parallel processing may be advantageous. In addition, the separation of various system components in the above-described embodiments should not be understood as requiring such 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.

[0111] Thus, particular embodiments of the subject matter have been described herein. Other embodiments are within the scope of the following claims. In some cases, the actions set forth in the claims can be performed in a different order and still achieve the desired results. Furthermore, the processes depicted in the accompanying drawings do not necessarily require the particular order shown or sequential order to achieve the desired results. In some implementations, multitasking and parallel processing may be advantageous.

[0112] 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 should be determined based on the attached claims and their equivalents.

Claims

1. A method for executing a replication command in a data storage management system, comprising: A controller of the storage device generates a copy-read subcommand and a copy-write subcommand of a copy command; executing, by the controller, a blocking no operation (NOP) command across a first memory address range of a copy-write subcommand in a first memory address space; generating, by the controller, a mapping of the copy-write subcommand from the first memory address range to a mapping of the copy-write subcommand corresponding to the second memory address range in a second memory address space, the second memory address space being higher than a maximum memory address of the first memory address space; as well as A copy-read subcommand and a mapped copy-write subcommand are executed by the controller, wherein the mapped copy-write subcommand copies data for operation at a first memory address range.

2. The method according to claim 1, further comprising: receiving, at the storage device, a copy command from the host device; generating, by the controller, a blocking NOP command and inserting the blocking NOP command for execution at the storage device; inserting, by the controller, a copy-read subcommand and a copy-write subcommand for execution at the storage device based on execution of the blocking NOP command; and The non-copy command is inserted by the controller for operation on the storage device.

3. The method according to claim 2, further comprising: Based on the insertion of the copy-read subcommand, the copy-write subcommand, and the non-copy command, a first overlap check is performed by the controller based on storage addresses of the copy-read subcommand, the copy-write subcommand, the non-copy command, and the blocking NOP command.

4. The method according to claim 3, further comprising: determining a storage address overlap between the copy-write subcommand and the blocking NOP command based on the first overlap check, wherein the mapping of the copy-write subcommand to the mapped copy-write subcommand is based on the storage address overlap; and A memory address overlap between a non-copy command and a blocking NOP command is determined based on the first overlap check, which blocks the non-copy command from being executed at the memory device.

5. The method according to claim 4, further comprising: Based on generating a mapping of the copy-write subcommands to the mapped copy-write subcommands, a second overlap check is performed by the controller based on the mapped copy-write subcommands.

6. The method according to claim 4, further comprising: Upon completion of the operation, the controller clears the copy-write subcommand and the copy-read subcommand from the first storage address range together; clearing, by the controller, blocking NOP commands from the first storage address range based on the clearing of the copy-write subcommand; performing, by the controller, a third overlap check based on the non-duplicate command; and A no-copy command is executed by the controller within the first memory address range.

7. The method according to claim 3, further comprising: determining, based on a first overlap check, that a portion of the storage address overlaps between the non-copy command and the blocking NOP command; extending, by the controller, a blocking NOP command beyond the first memory address range, resulting in the extended blocking NOP command having a full memory address overlap with a non-copy command and at least a partial memory address overlap with a copy-read sub-command; and A mapping is generated by the controller having at least a portion of a copy-read subcommand overlapping with a memory address of an extended blocking NOP command to a memory address higher than a maximum address of a memory device, wherein the copy-read subcommand is executed using the at least a portion of the copy-read subcommand.

8. The method according to claim 3, further comprising: Based on the first overlap check, determining that at least a portion of the storage address overlaps between the Copy-Read subcommand and the Blocking NOP command; and A mapping is generated by the controller having at least a portion of a copy-read subcommand overlapping with a memory address of a blocking NOP command to a memory address higher than a maximum address of the memory device, wherein the copy-read subcommand is executed using the at least a portion of the copy-read subcommand.

9. A storage device for executing a replication command in a data storage management system, comprising: Storage media; The controller is configured as: Generate a copy-read subcommand and a copy-write subcommand of a copy command; executing a blocking no operation (NOP) command, the blocking no operation (NOP) command spanning a first storage address range of a copy-write subcommand in a first storage address space; generating a mapping of copy-write subcommands from a first storage address range to a mapping of a corresponding second storage address range in a second storage address space, the second storage address space being higher than a maximum storage address of the first storage address space; as well as A copy-read subcommand and a mapped copy-write subcommand are executed, wherein the mapped copy-write subcommand copies data for operation at a first memory address range.

10. The storage device according to claim 9, wherein: The controller is also configured to: receiving a copy command from a host device; Generate blocking NOP commands and insert blocking NOP commands for operation; Inserting a copy-read subcommand and a copy-write subcommand for execution based on the execution of the blocking NOP command; and Insert non-copy commands for running.

11. The storage device according to claim 10, wherein: The controller is also configured to: Based on the insertion of the copy-read subcommand, the copy-write subcommand, and the non-copy command, a first overlap check is performed based on storage addresses of the copy-read subcommand, the copy-write subcommand, the non-copy command, and the blocking NOP command.

12. The storage device according to claim 11, wherein: The controller is also configured to: determining a storage address overlap between the copy-write subcommand and the blocking NOP command based on the first overlap check, wherein the mapping of the copy-write subcommand to the mapped copy-write subcommand is based on the storage address overlap; as well as Based on the first overlap check, a storage address overlap between the non-copy command and the blocking NOP command is determined, which blocks the non-copy command from being executed at the storage device.

13. The storage device according to claim 12, wherein: The controller is also configured to: Based on generating a mapping of the copy-write subcommands to the mapped copy-write subcommands, a second overlap check is performed based on the mapped copy-write subcommands.

14. The storage device according to claim 12, wherein: The controller is also configured to: upon completion of the operation, clearing the copy-write subcommand and the copy-read subcommand together from the first storage address range; clearing blocking NOP commands from the first storage address range based on the clearing of the copy-write subcommand; performing a third overlap check based on the non-copy command; as well as A no-copy command is executed within the first storage address range.

15. The storage device according to claim 11, wherein: The controller is also configured to: Based on the first overlap check, determining that a portion of the storage address overlaps between the non-copy command and the blocking NOP command; extending a blocking NOP command beyond the first memory address range, causing the extended blocking NOP command to have a full memory address overlap with a non-copy command and at least a partial memory address overlap with a copy-read sub-command; as well as A mapping is generated having at least a portion of a copy-read subcommand overlapping with a memory address of an extended blocking NOP command to a memory address higher than a maximum address of a memory device, wherein the copy-read subcommand is executed using the at least a portion of the copy-read subcommand.

16. The storage device according to claim 11, wherein: The controller is also configured to: Based on the first overlap check, determining that at least a portion of the storage addresses between the Copy-Read subcommand and the Blocking NOP command overlap; as well as A mapping is generated having at least a portion of a copy-read subcommand overlapping with a memory address of a blocking NOP command to a memory address higher than a maximum address of a memory device, wherein the copy-read subcommand is executed using the at least a portion of the copy-read subcommand.

17. A storage device for executing a replication command in a data storage management system, comprising: a copy command processor configured to generate a copy-read subcommand and a copy-write subcommand of the copy command; a command execution module configured to execute a blocking no operation (NOP) command across a first storage address range of a copy-write subcommand in a first storage address space; an overlap check module configured to determine storage address overlap based on the copy-read subcommand, the copy-write subcommand, and the blocking NOP command; as well as a shadow processor configured to generate a mapping of the copy-write subcommands from the first memory address range to a corresponding second memory address range in a second memory address space based on determining a memory address overlap between the copy-write subcommands and the blocking NOP command, the second memory address space being higher than a maximum memory address of the first memory address space, The command execution module is further configured to execute a copy-read subcommand and a mapped copy-write subcommand, wherein the mapped copy-write subcommand copies data for execution in the first storage address range.

18. The storage device according to claim 17, wherein the command execution module is further configured to: Upon completion of the atomic operation, flushing the copy-write subcommand and the copy-read subcommand together from the first storage address range; clearing blocked NOP commands from the first storage address range based on the clearing of the copy-write subcommand; and A no-copy command is executed within the first storage address range, wherein the overlap check module performs an overlap check based on the no-copy command.

19. The storage device according to claim 17, wherein: The overlap check module is further configured to determine a partial memory address overlap between a non-copy command and a blocking NOP command; The shadow processor is also configured to: extending a blocking NOP command beyond the first memory address range, causing the extended blocking NOP command to have a full memory address overlap with a non-copy command and at least a partial memory address overlap with a copy-read sub-command; as well as generating a mapping having at least a portion of a copy-read subcommand overlapping with a memory address of an extended blocking NOP command to a memory address higher than a maximum address of a memory device; And the command execution module executes the copy-read subcommand using the at least a portion of the copy-read subcommand.

20. The storage device of claim 17, wherein: The overlap check module is further configured to determine at least a partial memory address overlap between the Copy-Read subcommand and the Blocking NOP command; The shadow processor is further configured to generate a mapping having at least a portion of the copy-read subcommand overlapping with the memory address of the blocking NOP command to a memory address higher than a maximum address of the memory device; and The command execution module executes the Copy-Read subcommand using the at least a portion of the Copy-Read subcommand.

Citation Information

Patent Citations

  • Systems and methods for processing copy commands

    CN114003514A

  • Systems and methods for processing copy commands

    US20220035530A1