Data transfer device and method

The data transfer device ensures compliant data transfer across PCIe switches by aligning packet starts with 4 kB boundaries, enhancing performance and accuracy through metadata management and confirmation processes.

JP2025159359AActive Publication Date: 2025-10-21HITACHI VANTARA LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2024052456
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-03-27
Publication Date
2025-10-21
Estimated Expiration
2044-03-27

AI Technical Summary

Technical Problem

Existing data transfer methods across PCIe switches face challenges in maintaining compliance with the 4 kB boundary, leading to violations when the data transfer start position is slightly before this boundary, complicating control mechanisms.

Method used

A data transfer device that divides and compresses data into packets, generates metadata for each packet, and ensures the transfer start position aligns with a 4 kB boundary, using a metadata generation unit and data transfer unit to manage data transmission, thereby adhering to PCIe standards.

Benefits of technology

Enables data transfer without crossing the 4 kB boundary, doubling transfer performance without altering PCIe generation or bus width, and includes confirmation processes to ensure accurate decompression and transfer.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025159359000001_ABST
    Figure 2025159359000001_ABST
Patent Text Reader

Abstract

To provide a technique capable of transferring data without crossing a 4kB boundary.SOLUTION: A data transfer device 100 includes: a metadata generation unit 111 that generates metadata including a transfer destination address; a data transfer unit 114 that divides transfer data into a plurality of packets, adds the metadata to a head packet, and sequentially transfers the plurality of packets; and a data transmission unit 123 that transmits the plurality of packets transferred by the data transfer unit 114 to a transfer destination address included in the metadata. The data transfer unit 114 adds the metadata to the head packet of the plurality of packets and transfers the head packet according to a write address simulated at a 4kb boundary position.SELECTED DRAWING: Figure 1A
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to a data transfer device and method. [Background technology]

[0002] To speed up data transfer between controllers of storage devices connected via a PCIe (Peripheral Component Interconnect Express) switch, a known method is to compress data before transferring it and then decompress it at the destination. In this method, for example, 8320 B (bytes) of data is divided into transfer packets of 512 B each and compressed.

[0003] In path-compressed transfer, if the data transfer start position is slightly before the 4kB boundary, the compressed transfer data may cross the 4kB boundary, which violates the PCIe standard.

[0004] Therefore, in order to divide transfer packets at 4kB boundaries, if data transfer is in bytes, it is necessary to specify transfer packet division for 1024 cases where the lower address is 0x0 to 0xFFC, which makes control complicated.

[0005] Patent Document 1 describes a technique for preventing compressed data from exceeding 4 kB, which involves identifying segment positions when input data is divided into predetermined sizes, identifying compression positions in the input data that correspond to positions in the compressed data obtained by compressing the input data where the size from both ends is equal to or greater than the predetermined size and positions between adjacent segment positions where the size between them is equal to or greater than the predetermined size, compressing each pre-compressed data sandwiched between compression positions that are adjacent to the segment positions in the input data, and compressing each post-compressed data divided by the pre-compressed data in the input data based on the pre-compressed data adjacent to the post-compressed data and each post-compressed data. If the compressed size exceeds 4 kB, it is determined that compression has failed, and the data is divided at the center of the input data and divided and compressed. [Prior art documents] [Patent documents]

[0006] [Patent Document 1] Japanese Patent Application Publication No. 2018-132991 Summary of the Invention [Problem to be solved by the invention]

[0007] However, the above-mentioned Patent Document 1 does not disclose a technique for transferring data without crossing the 4 kB boundary when the data transfer start position is slightly before the 4 kB boundary.

[0008] Therefore, an object of the present invention is to provide a technique that allows data to be transferred without crossing a 4 kB boundary. [Means for solving the problem]

[0009] In order to solve the above problem, one representative data transfer device of the present invention is a data transfer device that transfers data from a sending data transfer device to a receiving data transfer device in units of a predetermined size, and is equipped with a metadata generation unit that generates metadata including a destination address, a data transfer unit that divides the transfer data into multiple packets, attaches metadata to the first packet, and transfers the multiple packets sequentially, and a data transmission unit that transmits the multiple packets transferred by the data transfer unit to the destination address included in the metadata, and the data transfer unit transfers the first packet according to a write address that is simulated at the boundary position of the predetermined size. [Effects of the Invention]

[0010] According to the present invention, data can be transferred without crossing a 4 kB boundary.

[0011] Problems, configurations, and effects other than those described above will become apparent from the following description of the embodiments. [Brief explanation of the drawings]

[0012] [Figure 1A] 1 is a block diagram showing an example of the configuration of a data transfer device according to an embodiment of the present invention; [Figure 1B] 2 is a block diagram showing the hardware configuration of a controller equipped with the data transfer device of the present embodiment. FIG. [Figure 2A] FIG. 2 is a diagram illustrating an example of the configuration of data transferred by the data transfer device according to the embodiment. [Figure 2B] FIG. 10 is a diagram illustrating an example of the configuration of decompression control data. [Figure 3A] FIG. 2 is a diagram illustrating a path compression transfer performed by the data transfer device according to the embodiment. [Figure 3B] 3A and 3B are diagrams illustrating a compression transfer unit of transfer data by the data transfer device of the present embodiment. [Figure 4] 10 is a flowchart illustrating an example of a route compression and transfer process of the data transfer device according to the present embodiment. [Figure 5] 10 is a flowchart illustrating an example of a decompression process of the data transfer device according to the present embodiment. [Figure 6] FIG. 2 is a diagram illustrating an example of an address management table stored in a main memory. [Figure 7] FIG. 10 is a diagram showing an example of details of information constituting decompression control data. DETAILED DESCRIPTION OF THE INVENTION

[0013] Hereinafter, an embodiment will be described with reference to the drawings.

[0014] FIG. 1A is a block diagram showing an example of the configuration of a data transfer device according to this embodiment.

[0015] The storage device includes controllers 1 and 2 that transfer data and drives 4 that store data. Controller 1 and controller 2 are connected via a PCIe switch 5. In FIG. 1A, two controllers 1 and 2 are connected to the PCIe switch 5, but three or more controllers may be connected.

[0016] The controllers 1 and 2 transfer data to other controllers in 4 kB units via a PCIe switch 5. Each of the controllers 1 and 2 includes a driver 3, a main memory 6, and a data transfer device 100 that is an FPGA (Field-Programmable Gate Array) that transfers data.

[0017] In this embodiment, data is transferred in 4 kB units via the PCIe switch, but the present invention is not limited to this and can be applied to data transfers in other predetermined size units.

[0018] The driver 3 starts up the data transfer device 100 and instructs the data transfer between the controllers 1 and 2. When the driver 3 receives data to be transferred (transfer data) sent from a host terminal (not shown), it specifies an address (transfer destination address) in the main memory of the destination controller, includes this in a transfer instruction parameter, stores it together with the transfer data in the main memory 6 of its own controller, and starts up the data transfer device 100. The started data transfer device 100 reads the transfer data, transfer destination address, and transfer instruction parameter stored in the main memory 100 and performs path compression transfer.

[0019] Between controllers 1 and 2, route compression transfer is performed in which data is compressed by controller 1 on the sending side and transferred via PCIe switch 5, and then decompressed by controller 2 on the receiving side. Route compression transfer makes it possible to roughly double the transfer performance on the route of PCIe switch 5 without changing the PCIe generation or bus width.

[0020] The data transfer device 100 comprises a compressor 110 that compresses transfer data and a decompressor 120 that decompresses the compressed transfer data.

[0021] Compressor 110 includes a metadata generation unit 111, a compression processing unit 112, an applanation information assignment unit 113, a data transfer unit 114, and a confirmation information transmission / reception unit 115. The operation of each unit constituting compressor 110 will be described later with reference to FIG. 2A.

[0022] The decompressor 120 includes an applanation information reader 121, a decompression processor 122, a data transmitter 123, and a determination processor 124. The operation of each component of the decompressor 120 will be described later with reference to FIG. 2A.

[0023] FIG. 1B is a block diagram showing the hardware configuration of a controller that includes the data transfer device 100 of this embodiment.

[0024] The controller 1 includes a CPU (Central Processing Unit) 301 that implements necessary functions by executing programs stored in the main memory 6, the main memory 6 that stores the programs and data used in the path compression transfer in Fig. 6 as well as an address management table 600 (described later), a host interface 303 that controls communication with a host terminal (not shown), a back-end interface 304 that controls communication with the drive 4, and the data transfer device 100. The CPU 301 reads the programs stored in the main memory 6 and implements the functions of the driver 3 in Fig. 1A.

[0025] The data transfer device 100 includes a plurality of compression IPs (Intellectual Properties) 305 that perform data compression processing, and a plurality of decompression IPs 306 that perform data decompression processing. The data transfer device 100 also stores a data management table 700, which will be described later with reference to FIG. 7, in a portion of its circuitry.

[0026] The compression IP 305 in the data transfer apparatus 100 corresponds to the compression units 111 to 114 of the data transfer apparatus 110 in FIG. 1A, and the decompression IP 306 corresponds to the decompression units 121 to 124 of the data transfer apparatus 120 in FIG. 1A.

[0027] FIG. 2A is a diagram showing an example of the structure of data transferred by the data transfer device 100 of this embodiment.

[0028] As described above, the driver 3 provides the data transfer device 100 with transfer data 201 and a transfer destination address 204 included in the transfer instruction parameter. The transfer destination address 204 indicates a storage address in the main memory of the controller to which the transfer data 201 is to be transferred, and is expressed as, for example, 64-bit data.

[0029] In path compression transfer, the compressor 110 of the data transfer device 100 of the sending controller 1 divides transfer data 201 into multiple packets, compresses them, generates compressed data 202, and transfers it to the receiving controller 2. The expander 120 of the data transfer device 100 of the receiving controller 2 expands the compressed data 202 to generate expanded data 203.

[0030] In the compressor 110 of the data transfer device 100 of the controller 1 on the sending side, the metadata generation unit 111 generates the metadata 205 shown in Fig. 2A by referring to the transfer destination address 204. The metadata 205 may be, for example, the transfer destination address 204 directly, or may be data that can identify the transfer data 204 by indicating the attributes, characteristics, etc. of the transfer data 204.

[0031] Furthermore, the compression processing unit 112 divides the transfer data 201 into a plurality of packets and compresses them using the compression IP 305 in FIG. 1B to generate compressed data 202.

[0032] The applanation information providing unit 113 also determines whether or not the compression processing unit 112 has successfully compressed the packet, and stores the determination result in the decompression control data 210. Details of the decompression control data 210 will be described later with reference to FIG. 2B.

[0033] Furthermore, the data transfer unit 114 refers to the address management table 600 in FIG. 6 for each packet of the compressed data 202 generated by the compression processing unit 112, identifies the receiving controller 2 to which the data is to be transferred, and transfers the data.

[0034] As mentioned above, in the sending controller 1, the driver 3 specifies a destination address in the main memory of the destination controller, but the specified address value is arbitrary. Therefore, if the address of the first data of the transfer data is located before the 4kB boundary, transferring the transfer data 201 as is would cross the 4kB boundary, which would be a violation of the PCIe standard. For this reason, the data transfer unit 114 generates a write address 206 that is set so that the transfer start position of the leading data is at a 4 kB boundary. The write address 206 is, for example, a 64-bit address that sends data in accordance with the PCIe standard, and is transferred together with each divided packet.

[0035] For example, by specifying the byte length of the transfer data with the bit value of the write address 206 and setting the lowest 9 bits of the write address 206 to 0, the transfer start position of the leading data is set to an integer multiple of 512 bytes, so that the compressed data 202 can be transferred without crossing a 4 kB boundary. When generating the write address 206, part of the transfer destination address 204 (for example, the upper bit value of the transfer destination address 204) may be used as is.

[0036] The write address 206 includes decompression control data 210 used to decompress the compressed data 202 in the receiving controller 2 .

[0037] In the decompressor 120 of the data transfer device 100 of the receiving controller 2, the applanation information reader 121 refers to the data management table 700 in FIG.

[0038] The decompression processing unit 122 also decompresses the compressed data 202 sent from the controller 1 using the decompression IP 306 in FIG. 1B to generate decompressed data 203 .

[0039] The data transmission unit 123 also restores the transfer destination address 207 from the metadata 205 added to the compressed data 202 transmitted from the controller 1, and transmits the decompressed data 203 to the transfer destination address.

[0040] Furthermore, the confirmation processing unit 124 reads the last 8 bytes of the decompressed data 203 from the transfer destination address in the main memory 6 and compares it with the transfer data 201 to confirm whether the compressed data 202 has been correctly decompressed by the decompression processing unit 122 and transferred to the transfer destination address. If the last 8 bytes of the decompressed data 203 match the last 8 bytes of the transfer data 201, the confirmation processing unit 124 determines that the compressed data 202 has been correctly decompressed and transferred by the decompression processing unit 122, and if the last 8 bytes of the decompressed data 203 do not match the last 8 bytes of the transfer data 201, the confirmation processing unit 124 determines that the compressed data 202 was not correctly decompressed or transferred by the decompression processing unit 122, and transmits confirmation information indicating the result of the confirmation processing to the confirmation information transmitting / receiving unit 125 of the controller 1 on the transmitting side.

[0041] The determination information transmitting / receiving unit 115 of the transmitting controller 1 receives the determination information transmitted from the determination processing unit 124, stores the result of the determination processing in the main memory 6, and notifies the driver 3 of the result.

[0042] FIG. 2B is a diagram showing an example of the configuration of the decompression control data 210. As shown in FIG.

[0043] The decompression control data 210 includes compression / flattening determination information 211 , a compression ID 212 , confirmation process setting information 213 , and a sequence number 214 .

[0044] The compression / flattening determination information 211 is information indicating whether or not the compression processing unit 112 has successfully compressed the transfer data 201.

[0045] The compression ID 212 is the number of the compression IP 305 that compressed the transfer data.

[0046] The confirmation processing setting information 213 is setting information for determining whether or not the confirmation processing unit 124 of the expander 120 of the receiving controller 2 executes confirmation processing to confirm whether the compressed data 202 has been expanded and written correctly to the main memory 6.

[0047] The sequence number 214 is a number consecutively assigned to the compressed data 202 by the applanation information assigning unit 113. As will be described later with reference to Fig. 3B, each compressed data 202 is spaced 512 B apart, and the write address 206 of each compressed data 202 can be specified based on this sequence number 214.

[0048] FIG. 6 is a diagram showing an example of an address management table stored in the main memory 302. As shown in FIG.

[0049] The address management table 600 stores information about the destination controller corresponding to an address (e.g., the destination address 204) included in the metadata 205. The address management table 600 stores information about the destination controller corresponding to an address pattern of specific bits in the destination address 204 in association with each other, and the destination controller for the transfer data can be identified by referencing the address pattern. In this case, if the address pattern of the transfer address 204 is diverted to the write address 206, the destination controller can be identified by referencing the write address 206.

[0050] 7 is a diagram showing an example of details of information constituting the decompression control data. The detailed information shown in Fig. 7 is stored in a data management table 700 and is used to generate the decompression control data and to read the decompression control data 210 included in the write address 206 in the path compression transfer process.

[0051] The data management table 700 includes a pressure / flat determination information management table 701 , a pressure ID management table 702 , a determination process setting information management table 703 , and a sequence number management table 704 .

[0052] The pressure / flat determination information management table 701 stores information indicating whether or not the compression of the transfer data 201 by the compression processing unit 112 was successful. According to the pressure / flat determination information management table 701, the pressure / flat determination information 211 stores a value of "0" indicating compressed text if the compression was successful, and stores a value of "1" indicating plain text if the compression was unsuccessful.

[0053] The compression ID management table 702 stores the number of the decompression IP 306 that decompresses the compressed data in association with the compression IP 305 that compressed the transfer data. Thereafter, during a series of data transfers, route compression transfers are performed using the pair of the compression IP 305 and the decompression IP 306 stored in the compression ID management table 702.

[0054] The confirmation process setting information management table 703 stores setting information on whether or not to execute confirmation process, which checks whether the compressed data 202 has been correctly decompressed, in the confirmation process unit 124. According to the confirmation process setting information management table 703, the confirmation process setting information 213 stores a value of "0" when the confirmation process is not set to be executed, and stores a value of "1" when the confirmation process is set to be executed.

[0055] The sequence number management table 704 stores sequence numbers that are assigned consecutively to each packet of the compressed data 202 .

[0056] FIG. 3A is a diagram illustrating the path compression transfer performed by the data transfer apparatus 100 of this embodiment.

[0057] As shown in FIG. 3A, if the transfer start position of transfer data 201 from the sending controller 1 to the receiving controller 2 is slightly before the 4 kB boundary, the data will cross the 4 kB boundary, violating the PCIe standard.

[0058] Therefore, a write address 206 is specified at the position of a 4 kB boundary and transferred. Specifically, the compression processing unit 112 compresses the transfer data 201 to generate compressed data 202, and the data transfer unit 114 uses a fixed value that is 4 kB aligned for the lower bits of the write address 206 (for example, the lower 9 bits of the write address 206 are set to 0), and transfers the compressed data 202 to the controller 2. The original transfer destination address 204 is added as metadata 205 to the beginning data of the compressed data 202.

[0059] The receiving controller 2 decompresses the compressed data 202 to generate decompressed data 203, and returns the correct destination address 207 by referring to the metadata 205.

[0060] This allows the compressed data 202 to be transferred to the controller 2 without crossing a 4 kB boundary.

[0061] FIG. 3B is a diagram for explaining the compression transfer unit of the transfer data by the data transfer device 100 of this embodiment.

[0062] The transfer data 201 is compressed and transferred in units of 8,320 B+ (8 B metadata).

[0063] The first data of the compressed transfer unit is 128B of plain text, and the following data is divided into 16 packets of 512B of plain text, and each divided packet is compressed. In addition, 8B of metadata is added to the first data.

[0064] 4 is a flowchart showing an example of the path compression transfer process of the data transfer device of this embodiment. This process is executed by the data transfer device 100 of the controller 1 on the sending side. Note that the path compression transfer in this embodiment will be described assuming that write data (transfer data) to a drive 4 managed by the controller 2 is received by the controller 1 from a host terminal (not shown) and compressed and transferred.

[0065] When the data transfer device 100 reads the transfer data and the transfer destination address from the main memory 6 and determines that the transfer destination is the main memory 6 of the controller 2, the metadata generation unit 111 generates the metadata 205 by referring to the transfer destination address 204 (step S401).

[0066] Next, the compression processing unit 112 starts the compression processing of the transfer data 201 (step S402). As shown in Fig. 3B, the transfer data 201 is divided into packets, each of which is 128B of plain text at the beginning and 512B of plain text at the end, and each of the divided packets is compressed to generate compressed data 202.

[0067] In step S403, it is determined whether the packet to be compressed is the first data of a compression transfer unit.

[0068] If the packet to be compressed in step S403 is the first data (Yes in step S403), the compression processing unit 112 compresses the packet (step S404), and the applanation information adding unit 113 determines whether the packet compression was successful (step S405).

[0069] If it is determined in step S405 that the packet compression was successful (Yes in step S405), the metadata 205 generated in step S401 is added before the compressed first data packet, the applanation information adding unit 113 stores the value "0" indicating successful compression in the applanation / flattening determination information 211 of the decompression control data 210, and the data transfer unit 114 generates a write address 206 set so that the transfer start position is at a 4 kB boundary (step S406), and proceeds to step S412.

[0070] If it is determined in step S405 that the packet compression has failed (No in step S405), the metadata 205 generated in step S401 is added to the end of the packet of the first data in plain text, the applanation information adding unit 113 stores the value "1" indicating the compression failure in the applanation / flattening determination information 211 of the decompression control data 210, and the data transfer unit 114 generates a write address 206 set so that the transfer start position is at a 4 kB boundary (step S407), and proceeds to step S412.

[0071] If the packet to be compressed in step S403 is not the first data (No in step S403), the compression processing unit 112 compresses the packet (step S408), and the applanation information adding unit 113 determines whether the packet compression was successful (step S409).

[0072] If it is determined in step S409 that the packet compression was successful (Yes in step S409), the applanation information adding unit 113 stores the value "0" indicating successful compression in the compression / flattening determination information 211 of the decompression control data 210, and the data transferring unit 114 generates the write address 206 based on the write address 206 of the first data and the sequence number 214 of the packet (step S410), and proceeds to step S412.

[0073] If it is determined in step S409 that the packet compression has failed (No in step S409), the applanation information adding unit 113 stores the value "1" indicating the compression failure in the compression / flattening determination information 211 of the decompression control data 210, and the data transfer unit 114 generates the write address 206 based on the write address 206 of the first data and the sequence number 214 of the packet (step S411), and proceeds to step S412.

[0074] In step S412, the data transfer unit 114 starts transferring the compressed data 202 to the receiving controller 2. Packets that failed to be compressed in step S404 or step S408 are transferred in plaintext form to the controller 2. Here, the transferred compressed data 202 includes compressed packets that were successfully compressed in step S404 or step S408 and plaintext packets that failed to be compressed in step S404 or step S408.

[0075] Next, the data transfer device 100 determines whether the transferred packet is the final data of the compressed transfer unit (step S413). The determination of whether the data is the final data is made by, for example, comparing the value obtained by dividing the size of the transfer data by the size of the transfer packet with the sequence number.

[0076] If it is determined in step S413 that the transferred packet is not the final data of the compressed transfer unit (No in step S413), the process returns to step S403, and packet compression processing continues by the compression processing unit 112. On the other hand, if it is determined in step S413 that the transferred packet is the final data of the compressed transfer unit (Yes in step S413), the process proceeds to step S414.

[0077] In step S414, the data transfer device 100 references the confirmation process setting information 213 in the decompression control data 210 to determine whether or not the confirmation process is set to be executed by the receiving controller 2. Whether or not the confirmation process is set to be executed may be determined by setting the confirmation process setting information 213 to the transmitting controller 1, for example, based on an instruction sent from a host terminal (not shown).

[0078] If it is set in step S414 that the receiving controller 2 is to execute the confirmation process (Yes in step S414), the process waits for confirmation information from the expander 120 of the receiving controller 2 (step S415).

[0079] Next, the confirmation information transmission / reception unit 115 checks the confirmation information from the expander 120 of the receiving controller 2 and determines whether the compressed data 202 has been successfully expanded and the writing to the destination address in the main memory 6 has been confirmed (step S416).

[0080] If it is determined in step S416 that the compressed data 202 has been successfully decompressed and the writing to the destination address in the main memory 6 has been confirmed (Yes in step S416), this process ends. Note that the confirmation information transmitting / receiving unit 115 may notify the driver 3 of information indicating that the path compression transfer has been successful.

[0081] On the other hand, if it is determined in step S416 that the compressed data 202 has not been normally decompressed or that writing to the main memory 6 has not been confirmed (No in step S416), the confirmation information transmitting / receiving unit 115 notifies the driver 3 of information indicating that the route compression transfer has failed (step S417), and ends this process. This allows the driver 3 to notify the user that the route compression transfer has failed, and the user can take action such as issuing a data transfer instruction again.

[0082] If it is not set in step S414 that the receiving controller 2 executes the confirmation process (No in step S414), the process waits for a notification of completion of compression and transfer from the decompressor 120 of the controller 2 (step S418), and ends this process.

[0083] 5 is a flowchart showing an example of decompression processing of the data transfer device of this embodiment. This processing is executed by the data transfer device 100 of the controller 2 on the receiving side.

[0084] When receiving the compressed data 202 from the transmitting controller 1, the applanation information reading unit 121 reads the applanation / flattening determination information 211 and the applanation ID 212 from the decompression control data 210 in the write address 206 (step S501).

[0085] Next, it is determined whether the received packet is the first data of a compressed transfer unit (step S502).

[0086] If it is determined in step S502 that the received packet is the leading data (Yes in step S502), the applanation information reading unit 121 determines whether the received packet of the leading data is a compressed sentence or not by referring to the applanation / flat determination information 211 read in step S501 (step S503). Here, by referring to the applanation / flat determination information management table 701 in Fig. 7, if the value of the applanation / flat determination information 211 is "0", it is determined to be a compressed sentence, and if the value of the applanation / flat determination information 211 is "1", it is determined to be a plain sentence.

[0087] If it is determined in step S503 that the received packet of the first data is a compressed packet (Yes in step S503), the decompression processing unit 122 acquires the metadata 205 attached to the received packet of the first data (step S504).

[0088] Next, the compression IP 305 in controller 1 that performed the compression is identified from the compression ID 212 read in step S501, and the decompression IP 306 in controller 2 that will perform the decompression process is determined. The decompression processing unit 122 then decompresses the packet of the first data (step S505), and the process proceeds to step S509. In step S505, the decompression processing unit 122 stores a pair of the compression IP 305 that performed the compression and the newly determined decompression IP 306 in the compression ID management table 702 in controller 2.

[0089] If it is determined in step S503 that the received packet of the first data is plain text (NO in step S503), the decompression processing unit 122 acquires the metadata 205 attached to the received packet of the first data (step S506) and proceeds to step S509.

[0090] If it is determined in step S502 that the received packet is not the first data (No in step S502), the applanation information reading unit 121 determines whether the received packet is a compressed packet by referring to the applanation / flattening determination information 211 read in step S501 (step S507).

[0091] If it is determined in step S507 that the received packet is a compressed packet (Yes in step S507), the decompression processing unit 122 refers to the compression ID management table 702 and identifies the decompression IP 306 that decompressed the first data stored in association with the compression IP 305 corresponding to the compression ID 212 read in step S501. Then, the decompression processing unit 122 decompresses the packet using the identified decompression IP 306 (step S508), and proceeds to step S509.

[0092] If it is determined in step S507 that the received packet is plaintext (NO in step S507), the process proceeds to step S509.

[0093] In step S509, the data transmission unit 123 transfers the decompressed data 203 to the destination address 207 restored from the metadata 205 added to the packet. Here, the transferred decompressed data 203 includes plaintext packets decompressed from compressed text in step S505 or step S508, and packets determined to be plaintext in step S503 or step S507. In transferring the decompressed data 203 to the destination address 207, the data transmission unit 123 stores the decompressed data 203 at the destination address 207 in the main memory 6 of the controller 2, and the controller 2 writes the decompressed data 203 to the drive 4 via the backend I / F 304 asynchronously with the storage in the main memory 6.

[0094] Next, it is determined whether the packet transferred in step S509 is the final data of the compressed transfer unit (step S510). In determining the final data, for example, the compressor 110 of the controller 1 may set a flag bit in the write address 206 assigned to the packet corresponding to the final data and transfer it, and the decompressor 120 of the controller 2 may make a determination based on the value of the flag bit.

[0095] If it is determined in step S510 that the transferred packet is not the final data in the compressed transfer unit (No in step S510), the process returns to step S502, and packet decompression processing continues by the decompression processing unit 122. On the other hand, if it is determined in step S510 that the transferred packet is the final data in the compressed transfer unit, the process proceeds to step S511.

[0096] In step S511, the confirmation process setting information 213 of the decompression control data 210 is referenced to determine whether or not the setting is such that confirmation process is to be executed by the receiving controller 2.

[0097] If it is set in step S511 that the receiving controller 2 is to execute the confirmation process, the confirmation processing unit 124 performs the confirmation process to determine whether the final data has been normally decompressed and transferred to the transfer destination address (step S512).

[0098] Specifically, in the confirmation process, the confirmation processing unit 124 reads the value of the last 8 bytes of the final data from the transfer destination address in the main memory 6, and determines whether it matches the value of the last 8 bytes of the transfer data 201 (step S513). The match determination between the final data and the corresponding transfer data may be performed by referring to a data protection code (e.g., DIF (Data Integrity Field)) generated from each data. The reference to the data protection code may be performed not only on the final data, but also on the entire transfer data to ensure the consistency of the decompressed data.

[0099] Furthermore, when referring to the transfer data 201, the confirmation processing unit 124 may instruct the controller 1 to retransfer the transfer data to be compared, and the controller 1 that receives the instruction may transfer the transfer data in the form of plain text.

[0100] If the value of the last 8B of the final data matches the value of the last 8B of the transferred data 201 in step S513 (Yes in step S513), the decompression processing unit 122 determines that the compressed data 202 has been correctly decompressed and transferred, and sends confirmation information indicating that the path compression transfer was successful to the data transfer device 100 of the sending controller 1 (step S514), and this process ends.

[0101] If the value of the last 8 bytes of the final data does not match the value of the last 8 bytes of the transfer data 201 in step S513, the decompression processing unit 122 determines that the compressed data 202 has not been correctly decompressed or transferred correctly, and sends confirmation information indicating that the path compression transfer has failed to the data transfer device 100 of the sending controller 1 (step S515), and this process ends.

[0102] If the receiving controller 2 is not set to execute the confirmation process in step S511, a compression transfer completion notification indicating that the path compression transfer has been completed is sent to the data transfer device 100 of the sending controller 1 (step S516), and this process is terminated.

[0103] According to this embodiment, the data transfer device 100 of the sending controller 1 transfers data in accordance with the write address 206 set so that the transfer start position is at a 4kB boundary, and the data transfer device 100 of the receiving controller 2 transfers the transfer data to the transfer destination address restored from the metadata 205 added to the transfer data, so that data can be transferred without crossing a 4kB boundary.

[0104] In addition, the confirmation processing unit 124 performs confirmation processing to confirm whether the compressed data 202 has been correctly decompressed by the decompression processing unit 122 and transferred to the destination address, and therefore can notify the user whether the route compression transfer was successful or not.

[0105] In addition, the decompression control data 210 including the compression / flattening judgment information 211, the compression ID 212, the confirmation process setting information 213, and the sequence number 214 is transferred together with the packet, so that the data transfer device 100 of the receiving controller 2 can refer to the decompression control data 210, decompress the data, and execute the confirmation process.

[0106] The present invention is not limited to the above-described embodiments and includes various modifications. For example, the above-described embodiments have been described in detail to clearly explain the present invention, and the present invention is not necessarily limited to those including all of the described configurations. Furthermore, it is possible to replace part of the configuration of one embodiment with the configuration of another embodiment, or to add the configuration of another embodiment to the configuration of one embodiment. Furthermore, it is possible to add, delete, or replace part of the configuration of each embodiment with other configurations.

[0107] Furthermore, the above-described configurations, functions, processing units, processing means, etc. may be partially or entirely implemented in hardware, for example, by designing them as integrated circuits. The above-described configurations, functions, etc. may also be implemented in software, with a processor interpreting and executing a program that implements each function. Information such as the programs, tables, and files that implement each function can be stored in a memory, a recording device such as a hard disk or SSD (Solid State Drive), or a recording medium such as an IC card, SD card, or DVD. [Explanation of symbols]

[0108] 1...Transmitting-side controller, 2...Receiving-side controller, 3...Driver, 4...Drive, 5...PCIe switch, 100...Data transfer device, 110...Compressor, 120...Decompressor, 111...Metadata generation unit, 112...Compression processing unit, 113...Applanation information assignment unit, 114...Data transfer unit, 115...Confirmation information transmission / reception unit, 121...Applanation information reading unit, 122...Decompression processing unit, 123...Data transmission unit, 124...Confirmation processing unit

Claims

1. A data transfer device that transfers data from a data transfer device on a sending side to a data transfer device on a receiving side in units of a predetermined size, a metadata generating unit that generates metadata including a forwarding address; a data transfer unit that divides transfer data into a plurality of packets, adds the metadata to the first packet, and sequentially transfers the plurality of packets; a data transmission unit that transmits the plurality of packets transferred by the data transfer unit to the transfer destination address included in the metadata, The data transfer unit A data transfer device that transfers the first packet in accordance with a write address that is set to a boundary position of the predetermined size.

2. 2. The data transfer device according to claim 1, a compression processing unit that compresses the packets; The data transfer device further comprises a decompression processing unit that decompresses the packets compressed by the compression processing unit.

3. 3. The data transfer device according to claim 2, the data transfer unit transfers applanation determination information indicating whether each of the plurality of packets is compressed data together with the packet; The decompression processing unit refers to the applanation determination information and determines whether or not to decompress the packet.

4. 3. The data transfer device according to claim 2, The data transfer unit If the compression processing unit has successfully compressed the first packet, the metadata is added before the first packet; a data transfer device that, if the compression processing unit fails to compress the first packet, adds the metadata to the end of the first packet.

5. 3. The data transfer device according to claim 2, a confirmation processing unit that executes a confirmation process by comparing the packet decompressed by the decompression processing unit with the transfer data to confirm whether the packet has been correctly decompressed by the decompression processing unit and transferred to the transfer destination address, The confirmation processing unit is a data transfer device that transmits confirmation information indicating a result of the confirmation processing to the transmission side transfer device.

6. 6. The data transfer device according to claim 5, the data transfer unit transfers, together with the packet, confirmation process setting information indicating whether or not the confirmation process is to be executed; The confirmation processing unit is a data transfer device that refers to confirmation process setting information and determines whether or not to execute the confirmation process.

7. A data transfer method for transferring data from a data transfer device on a sending side to a data transfer device on a receiving side in units of a predetermined size, comprising: a metadata generation step of generating metadata including a forwarding address; a data transfer step of dividing transfer data into a plurality of packets, adding the metadata to the first packet, and sequentially transferring the plurality of packets; a data transmitting step of transmitting the plurality of packets transferred in the data transferring step to the transfer destination address included in the metadata, In the data transfer step, adding the metadata to a first packet of the plurality of packets; A data transfer method in which the first packet is transferred in accordance with a write address that is set to a boundary position of the predetermined size.

Citation Information

Patent Citations

  • Apparatus and method for storing data and program

    JP2010061518A

  • Data access device

    JP2010079535A

  • Information processing device, data compression method and data compression program

    JP2018132991A