Out-of-order aggregation processing method and device, and solid state disk

CN117331500BActive Publication Date: 2026-09-29SHANDONG YUNHAI GUOCHUANG CLOUD COMPUTING EQUIP IND INNOVATION CENT CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202311271414.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2023-09-28
Publication Date
2026-09-29
Estimated Expiration
2043-09-28

AI Technical Summary

Technical Problem

然而,现有技术中的IO聚合方案只涉及对聚合条件的优化,即对如何组成聚合报文进行了优化;但对于关联的聚合报文,应该如何识别其关联性,以完成聚合报文的处理,在现有技术方案中并没有相关阐述

Benefits of technology

[0035]本发明所提供的一种乱序聚合处理方法,包括:获取聚合输入输出的数据帧;其中,数据帧包括数据结构信息,数据结构信息包括数据帧的聚合位置信息、链表指针标识和相邻数据帧信息;数据帧存储在链表中;根据数据帧的数据结构信息,配置各聚合输入输出各自对应的链表标志位信息;根据配置完成的链表标志位信息,对聚合输入输出对应的全部数据帧进行处理;其中,配置完成的链表标志位信息包括相应的聚合输入输出对应的全部数据帧的数据结构信息;

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN117331500B_ABST
    Figure CN117331500B_ABST
Patent Text Reader

Abstract

The application discloses a disorderly sequence aggregation processing method and device and a solid state disk, and relates to the technical field of communication. The method comprises the following steps: acquiring data frames of an aggregation input and output; wherein the data frames comprise data structure information, the data structure information comprises aggregation position information of the data frames, a linked list pointer identifier and adjacent data frame information; configuring linked list flag information corresponding to each aggregation input and output according to the data structure information of the data frames; and processing all data frames corresponding to the aggregation input and output according to the configured linked list flag information. Through the setting of the data structure information in each data frame of the aggregation IO, the application can identify the correlation of each data frame of the aggregation IO, thereby configuring the linked list flag information corresponding to each aggregation IO by using the data structure information of the data frames, correctly aggregating the data frames transmitted in disorder, realizing disorderly processing when processing the aggregation IO, and improving the read-write efficiency of the solid state disk.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to the field of communication technology, and in particular to a method, apparatus, and solid-state drive for out-of-order aggregation processing. Background Technology

[0002] NVMe (Non-volatile memory express) is a communication specification specifically designed for accessing non-volatile memory media attached via the PCIe (PCI-Express, a bus and interface standard) bus. The NVMe protocol, combined with the PCIe protocol, leverages the parallel capabilities of solid-state drives (SSDs) to improve SSD read and write speeds, achieving faster non-volatile storage.

[0003] Currently, aggregating small I / O (Input / Output) operations at contiguous addresses into large I / O operations is a common method to improve SSD disk read / write efficiency. This method can effectively reduce read / write time and latency. However, existing I / O aggregation schemes only optimize the aggregation conditions, i.e., how to form aggregated packets; they do not address how to identify the correlation between associated aggregated packets to complete the processing. Therefore, how to identify the correlation between aggregated I / O packets to correctly aggregate out-of-order data frames is an urgent problem to be solved. Summary of the Invention

[0004] The purpose of this invention is to provide an out-of-order aggregation processing method, apparatus, and solid-state drive to identify the message correlation of aggregated I / O and achieve correct aggregation of out-of-order transmitted data frames.

[0005] To solve the above-mentioned technical problems, the present invention provides a method for out-of-order aggregation processing, comprising:

[0006] Acquire aggregated input and output data frames; wherein, the data frame includes data structure information, including aggregated position information of the data frame, linked list pointer identifier, and adjacent data frame information; the data frame is stored in a linked list;

[0007] Based on the data structure information of the data frame, configure the linked list flag information corresponding to each of the aggregated inputs and outputs;

[0008] Based on the configured linked list flag information, all data frames corresponding to the aggregated input and output are processed; wherein, the configured linked list flag information includes the data structure information of all data frames corresponding to the aggregated input and output.

[0009] In some embodiments, the aggregated location information includes a first data frame identifier, a last data frame identifier, and intermediate data frame information, wherein the intermediate data frame information includes an intermediate data frame presence identifier and an intermediate data frame arrival identifier.

[0010] In some embodiments, the number of all data frames corresponding to the aggregated input and output is less than or equal to 3.

[0011] In some embodiments, the adjacent data frame information includes previous data frame information and / or next data frame information; wherein, the previous data frame information includes a previous data frame existence identifier and a previous data frame linked list pointer identifier, and the next data frame information includes a next data frame existence identifier and a next data frame linked list pointer identifier.

[0012] In some embodiments, acquiring the aggregated input and output data frame includes:

[0013] The solid-state drive receives input / output requests from the host.

[0014] Based on the input / output type and destination address of the input / output request, the input / output requests are aggregated to obtain the aggregated input / output, and the data frames corresponding to each aggregated input / output are configured.

[0015] In some embodiments, configuring the linked list flag information corresponding to each of the aggregated inputs and outputs according to the data structure information of the data frame includes:

[0016] Based on the data structure information of the current data frame, configure the flag bits corresponding to the current data frame in the current linked list flag information; wherein, the current linked list flag information is the linked list flag information of the aggregated input and output corresponding to the current data frame, and the flag bits include the flag bits corresponding to the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier and the intermediate data frame arrival identifier in the aggregated position information, the flag bits corresponding to the linked list pointer identifier, and the flag bits corresponding to the previous data frame existence identifier and the previous data frame linked list pointer identifier in the adjacent data frame information;

[0017] Update the target flag bits corresponding to each data frame in the current linked list flag bit information; wherein, the target flag bits are the flag bits corresponding to the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier, and the intermediate data frame arrival identifier.

[0018] In some embodiments, the number of all data frames corresponding to the aggregated input and output is less than or equal to 3, and configuring the flag bit corresponding to the current data frame in the current linked list flag bit information according to the data structure information of the current data frame includes:

[0019] If the total number of data frames corresponding to the current aggregate input / output is 1, then the flag bits of the first data frame identifier, the last data frame identifier, the middle data frame existence identifier, the middle data frame reach identifier, the previous data frame existence identifier, and the previous data frame linked list pointer identifier corresponding to the current data frame in the current linked list flag information are configured to 0, and the flag bit of the linked list pointer identifier corresponding to the current data frame is configured to the linked list pointer identifier of the current data frame; where, the current aggregate input / output is the aggregate input / output corresponding to the current data frame;

[0020] If the total number of data frames corresponding to the current aggregate input and output is 2 or 3, then when the current data frame is the first data frame of the current aggregate input and output, the flag bit of the first data frame identifier corresponding to the current data frame in the current linked list flag information is configured from 0 to 1, and the flag bit of the linked list pointer identifier corresponding to the current data frame is configured from 0 to the linked list pointer identifier of the current data frame.

[0021] When the current data frame is the last data frame of the current aggregated input and output, the flag bits of the first data frame identifier and the previous data frame existence identifier corresponding to the current data frame in the current linked list flag information are configured from 0 to 1, the flag bit of the linked list pointer identifier corresponding to the current data frame is configured from 0 to the linked list pointer identifier of the current data frame, and the flag bit of the linked list pointer identifier corresponding to the previous data frame is configured from 0 to the linked list pointer identifier of the previous data frame corresponding to the current data frame.

[0022] When the current data frame is an intermediate data frame of the current aggregated input and output, the flag bits of the intermediate data frame existence flag, intermediate data frame arrival flag, and previous data frame existence flag in the current linked list flag information are configured from 0 to 1, the flag bit of the linked list pointer flag corresponding to the current data frame is configured from 0 to the linked list pointer flag of the current data frame, and the flag bit of the linked list pointer flag corresponding to the previous data frame is configured from 0 to the linked list pointer flag of the previous data frame corresponding to the current data frame.

[0023] Accordingly, updating the target flag bits corresponding to each data frame in the current linked list flag bit information includes:

[0024] If the total number of data frames corresponding to the current aggregated input and output is 2 or 3, use the target flag bit corresponding to the current data frame that is 1 in the current linked list flag information to update the target flag bit corresponding to the previous data frame in the current linked list flag information.

[0025] In some embodiments, processing all data frames corresponding to the aggregated input and output based on the configured linked list flag information includes:

[0026] Based on the target flag bit corresponding to the first data frame in the current linked list flag bit information, check whether the current linked list flag bit information has been configured.

[0027] If so, then all data frames corresponding to the current aggregate input / output are processed according to the current linked list flag information; where the current aggregate input / output is the aggregate input / output corresponding to the current linked list flag information.

[0028] The present invention also provides a disordered aggregation processing apparatus, comprising:

[0029] The data acquisition module is used to acquire aggregated input and output data frames; wherein, the data frame includes data structure information, including the aggregation position information of the data frame, the linked list pointer identifier, and the adjacent data frame information; the data frame is stored in a linked list;

[0030] The linked list configuration module is used to configure the linked list flag information corresponding to each of the aggregate inputs and outputs according to the data structure information of the data frame;

[0031] The aggregation processing module is used to process all data frames corresponding to the aggregated input and output according to the configured linked list flag information; wherein, the configured linked list flag information includes the data structure information of all data frames corresponding to the aggregated input and output.

[0032] In addition, the present invention also provides a solid-state drive, comprising:

[0033] Memory, used to store computer programs;

[0034] A processor is configured to implement the steps of the out-of-order aggregation processing method as described above when executing the computer program.

[0035] The present invention provides a method for out-of-order aggregation processing, comprising: acquiring data frames of aggregation input and output; wherein, the data frame includes data structure information, including aggregation position information, linked list pointer identifier, and adjacent data frame information; the data frame is stored in a linked list; configuring linked list flag information corresponding to each aggregation input and output according to the data structure information of the data frame; and processing all data frames corresponding to the aggregation input and output according to the configured linked list flag information; wherein, the configured linked list flag information includes the data structure information of all data frames corresponding to the respective aggregation input and output.

[0036] As can be seen, by setting the data structure information in each data frame of aggregated I / O, this invention can identify the correlation between the data frames of aggregated I / O. Therefore, by utilizing the data structure information of the data frames, the linked list flag information corresponding to each aggregated I / O can be configured. This allows for the correct aggregation of out-of-order data frames using the linked list flag information, achieving out-of-order processing during aggregated I / O and improving the read / write efficiency of the solid-state drive. Furthermore, this invention also provides an out-of-order aggregation processing device and a solid-state drive, which also possess the aforementioned beneficial effects. Attached Figure Description

[0037] To more clearly illustrate the technical solutions in the embodiments of the present invention or the prior art, the drawings used in the description of the embodiments or the prior art will be briefly introduced below. Obviously, the drawings described below are only embodiments of the present invention. For those skilled in the art, other drawings can be obtained based on the provided drawings without creative effort.

[0038] Figure 1 A flowchart of a randomized aggregation processing method provided in an embodiment of the present invention;

[0039] Figure 2 This is a schematic diagram illustrating an actual full-strip scenario in a disk, provided by an embodiment of the present invention.

[0040] Figure 3 This is a schematic diagram of an actual cross-strip scenario in a disk provided by an embodiment of the present invention;

[0041] Figure 4 This is a schematic diagram of a non-strip data frame provided in an embodiment of the present invention;

[0042] Figure 5 This is a schematic diagram of a data frame spanning two bands provided in an embodiment of the present invention;

[0043] Figure 6 This is a schematic diagram of a three-band data frame provided in an embodiment of the present invention;

[0044] Figure 7 This is a schematic diagram of a data structure corresponding to a non-strip data frame provided in an embodiment of the present invention;

[0045] Figure 8 This is a schematic diagram of a data structure corresponding to a data frame spanning two data bands, provided in an embodiment of the present invention.

[0046] Figure 9 This is a schematic diagram of a data structure corresponding to a data frame spanning three stripes, provided in an embodiment of the present invention;

[0047] Figure 10This is a schematic diagram of a data frame combination provided in an embodiment of the present invention;

[0048] Figure 11 This is a schematic diagram illustrating a linked list creation process provided in an embodiment of the present invention;

[0049] Figure 12 This is a schematic diagram illustrating the configuration of linked list flag information corresponding to a data frame spanning two aggregated I / O lines, as provided in an embodiment of the present invention.

[0050] Figure 13 This is a schematic diagram illustrating the updating of the linked list flag information corresponding to a data frame spanning two aggregated I / O lines, as provided in an embodiment of the present invention.

[0051] Figure 14 This is a schematic diagram illustrating the configuration of flag information across two linked lists corresponding to aggregated I / O, as provided in an embodiment of the present invention.

[0052] Figure 15 This is a schematic diagram illustrating the configuration of the linked list flag information corresponding to non-strip aggregated IO provided in an embodiment of the present invention;

[0053] Figure 16 This is a schematic diagram illustrating the configuration and update of the linked list flag information corresponding to the tail strip data frame of a three-strip aggregated IO, as provided in an embodiment of the present invention.

[0054] Figure 17 This is a schematic diagram illustrating the configuration of the linked list flag information corresponding to the intermediate stripe data frame of a three-strip aggregated IO, as provided in an embodiment of the present invention.

[0055] Figure 18 This is a schematic diagram illustrating the configuration of the linked list flag information corresponding to the first data frame of a three-band aggregated I / O, as provided in an embodiment of the present invention.

[0056] Figure 19 This is a structural block diagram of a randomized polymerization processing apparatus provided in an embodiment of the present invention;

[0057] Figure 20 This is a schematic diagram of the structure of a solid-state drive provided in an embodiment of the present invention;

[0058] Figure 21 This is a schematic diagram of the structure of a computer-readable storage medium provided in an embodiment of the present invention. Detailed Implementation

[0059] To make the objectives, technical solutions, and advantages of the embodiments of the present invention clearer, the technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of the present invention, not all embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of the present invention.

[0060] Please refer to Figure 1 , Figure 1 This is a flowchart illustrating a disordered aggregation processing method provided in an embodiment of the present invention. The method may include:

[0061] Step 101: Obtain the aggregated input and output data frame; wherein, the data frame includes data structure information, including the aggregated position information of the data frame, the linked list pointer identifier, and the information of adjacent data frames; the data frame is stored in the linked list.

[0062] It's understandable that storing information on a disk essentially involves reading and writing to the disk via the bus. For data at adjacent addresses, the ideal is to group the adjacent data together and write it all at once. In most modes, the basic unit of disk writing can be called a stripe. Within a stripe, data from the same I / O (input / output) is placed in adjacent address segments for continuous reading and writing, such as... Figure 2 As shown, all data for IO0 can be placed within a single stripe. If the data for a particular IO cannot fit entirely into a single stripe, it will be split and placed across two or more different stripes, with the addresses of the IOs being contiguous. Figure 3 As shown, the data for IO1 can be placed in two stripes.

[0063] Correspondingly, in this embodiment, when IO is aggregated, it is aggregated according to IO type (such as IO read request or IO write request). IOs with the same destination address are encapsulated into one data frame (i.e., a striped data frame), which can be called a "non-striped data frame". Figure 4 As shown. If individual I / O operations need to be shared by two data frames, this can be referred to as "spanning two data frames," such as... Figure 5 As shown. If it needs to be shared by three data frames, it can be called a "three-band data frame", such as... Figure 6 As shown.

[0064] Accordingly, in this embodiment, the data in the acquired data frame has a mapping relationship with its storage location on the hard disk, such as... Figure 3 The data above corresponds to Figure 5 The first data frame in the series, Figure 3 The data in the middle and lower part corresponds to Figure 5 The second data frame in the series.

[0065] It should be noted that the IO requests obtained after IO aggregation processing of the aggregated input / output (i.e., aggregated IO) in this embodiment include IO requests obtained by aggregating multiple IO requests with adjacent destination addresses and IO requests that are not aggregated into other IO requests; each aggregated IO data frame can be one or more. In this embodiment, by setting data structure information in the data frame, the processor (such as the processor of an SSD) can configure the linked list flag information corresponding to the aggregated IO, thereby determining the correlation between the data frames of each acquired aggregated IO, so as to correctly aggregate out-of-order data frames using the linked list flag information.

[0066] Correspondingly, the specific content of the data structure information within the data frame in this step can be set by the designer according to the practical scenario and user needs. For example, the data structure information within the data frame may include the aggregation position information, linked list pointer identifier, and adjacent data frame information. The aggregation position information can be used to describe the position of the data frame in all data frames of the aggregated IO (such as the first data frame, middle data frame, or last data frame). The linked list pointer identifier can be a unique identifier used to describe the storage position of the data frame in the linked list. The adjacent data frame information can be used to describe the information of the adjacent data frames in all data frames corresponding to the aggregated IO. In this embodiment, the aggregated input and output data frames can be stored in a linked list. A linked list is a common basic data structure, a linear list, but it does not store data in a linear order. Instead, each node stores a pointer to the next node. In this embodiment, using a linked list structure can overcome the problem of needing to know the data size in advance and achieve flexible dynamic memory management.

[0067] Accordingly, this embodiment does not limit the specific content of the aggregation position information of the data frame. For example, in this embodiment, when the number of all data frames corresponding to a certain aggregated IO is greater than or equal to 3, the aggregation position information of the data frame includes the first data frame identifier, the last data frame identifier, and the intermediate data frame information. The intermediate data frame information includes the intermediate data frame presence identifier and the intermediate data frame arrival identifier. Among them, the first data frame identifier can be used to identify whether the data frame is the first data frame in the aggregated IO (i.e., the first data frame), the last data frame identifier can be used to identify whether the data frame is the last data frame in the aggregated IO (i.e., the last data frame), the intermediate data frame presence identifier can be used to identify whether there is a data frame between the first data frame and the last data frame in the aggregated IO, and the intermediate data frame arrival identifier... The identifier can be used to determine whether the data frame is an intermediate data frame in an aggregated I / O. Correspondingly, the maximum number of all data frames corresponding to a given aggregated I / O is 3. That is, when the total number of all data frames corresponding to aggregated input / output is less than or equal to 3, both the intermediate data frame presence identifier and the number of intermediate data frames reaching the identifier can be 1. When the total number of all data frames corresponding to a given aggregated I / O is greater than 3, both the intermediate data frame presence identifier and the number of intermediate data frames reaching the identifier can be values ​​greater than 1. For example, when the total number of all data frames corresponding to aggregated input / output is less than or equal to 4, both the intermediate data frame presence identifier and the number of intermediate data frames reaching the identifier can be 2. That is, each pair of intermediate data frame presence identifiers and intermediate data frame reaching identifiers can mark the presence and reception status of one intermediate data frame. Correspondingly, in this embodiment, when the total number of all data frames corresponding to an aggregated I / O is less than or equal to 2, the aggregated position information of the data frame can include the first data frame identifier and the last data frame identifier.

[0068] Similarly, this embodiment does not limit the specific content of adjacent data frame information. For example, the adjacent data frame information of a data frame includes the information of the previous data frame and / or the information of the next data frame. The information of the previous data frame can be used to describe the information of the data frame preceding the data frame in the aggregated IO (i.e., the previous data frame), and the information of the next data frame in the aggregated IO is the information of the data frame following the data frame (i.e., the previous data frame). The information of the previous data frame includes a previous data frame existence identifier and a table pointer identifier of the previous data frame chain (i.e., the previous data frame linked list pointer identifier) ​​used to identify whether the previous data frame exists. The information of the next data frame includes a next data frame existence identifier and a table pointer identifier of the next data frame chain (the next data frame linked list pointer identifier) ​​used to identify whether the next data frame exists.

[0069] For example, such as Figures 7 to 9As shown, the data structure information may include FstCIDisTail (i.e., the tail data frame identifier), LastCIDisHead (i.e., the first data frame identifier), MiddleCIDIsBody (i.e., the middle data frame existence identifier), UseCIDBody (i.e., the middle data frame arrival identifier), context_idx (i.e., the linked list pointer identifier), prior_head_context_idx_vld (the previous data frame existence identifier), and prior_head_context_idx (the previous data frame linked list pointer identifier); such as Figure 7 As shown, the aggregated I / O corresponding to the data frame identified by the linked list pointer in the linked list as context_idx_0 can not cross striped data frames; for example... Figure 8 As shown, the aggregated I / O corresponding to the two data frames identified by the linked list pointers in the linked list as context_idx_3 and context_idx_4 can span two data frames; for example... Figure 9 As shown, the aggregated I / O corresponding to the three data frames identified by the linked list pointers in the linked list as context_idx_9, context_idx_10, and context_idx_11 can span three data frames.

[0070] It is understood that the processor (i.e., processing device) of the solid-state drive in this embodiment can implement the out-of-order aggregation processing method provided in this embodiment using various software modules, or it can implement the out-of-order aggregation processing method provided in this embodiment using various hardware units. This embodiment does not impose any restrictions on this. Correspondingly, the specific method for obtaining the aggregated input and output data frames in this step can be set by the designer. For example, the Data_Fetcher (data loading) unit of the solid-state drive can directly receive the aggregated IO data frames transmitted out of order after the IO aggregation processing of the previous unit; the CTX_CTRL (linked list control) unit of the solid-state drive can establish a linked list based on the information in the data frame to obtain the data structure information of the data frame in order to identify cross-strip data frames.

[0071] Correspondingly, the method provided in this embodiment may also include a process for generating aggregated I / O. For example, in this step, the solid-state drive can receive input / output requests from the host; based on the input / output type and destination address of the input / output requests, the input / output requests are aggregated to obtain aggregated input / output, and the data frames corresponding to each aggregated input / output are configured. Figure 10 As shown, adjacent I / O requests on the host can be aggregated and placed in the same data frame, such as... Figure 10 As shown in "Data Frame 0"; Figure 10This is for illustrative purposes only. In actual SSD read / write operations, the number of adjacent I / O requests should far exceed two. Therefore, the number of I / O requests aggregated in the same data frame will be much greater than shown in the diagram. After aggregating adjacent I / O requests, if a special I / O request requires multiple processing steps, it is generated into a cross-strip data frame, such as... Figure 10 As shown in "Data Frames 3 and 4" and "Data Frames 9, 10 and 11"; the generated data frames can contain Figure 7-9 The data structure information is shown; after the data frame is generated, the system begins processing. Both the data frame being sent and the data frame being processed may be out of order, that is, sent and processed in the order of data frame 10-9-7-8-6… Since both sending and processing are out of order, in this embodiment, after the data frame has been processed by the previous module, cross-strip identification and aggregation can be achieved by configuring the linked list flag information.

[0072] Step 102: Configure the linked list flag information corresponding to each aggregate input and output according to the data structure information of the data frame.

[0073] It is understood that in this embodiment, the processor can identify whether all data frames of each aggregated IO have been acquired and the position of each acquired data frame in the corresponding aggregated IO by configuring the linked list flag information corresponding to each aggregated IO based on the data structure information of the acquired aggregated IO data frame, thereby using the linked list flag information to realize cross-strip identification and aggregation.

[0074] Correspondingly, the specific method for configuring the corresponding linked list flag information for each aggregate input and output based on the data structure information of the data frame in this step can be set by the designer. For example, if the data structure information includes the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier and the intermediate data frame arrival identifier, the linked list pointer identifier, the previous data frame existence identifier and the previous data frame linked list pointer identifier, then in this step, the solid-state drive can first configure the flags corresponding to the current data frame in the current linked list flag information based on the data structure information of the current data frame; update the flags in the current linked list flag information... The target flag bit corresponding to the data frame; wherein, the current linked list flag bit information is the linked list flag bit information of the aggregated input and output corresponding to the current data frame, the flag bits include the flag bits corresponding to the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier and the intermediate data frame arrival identifier in the aggregated position information, the flag bits corresponding to the linked list pointer identifier, and the flag bits corresponding to the previous data frame existence identifier and the previous data frame linked list pointer identifier in the adjacent data frame information; the target flag bit is the flag bit corresponding to the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier and the intermediate data frame arrival identifier.

[0075] Accordingly, the specific method for configuring the flag bits corresponding to the current data frame in the current linked list flag information based on the data structure information of the current data frame can be set by the designer. For example, if the total number of data frames corresponding to the current aggregate input / output is 1, then the flag bits of the first data frame identifier, the last data frame identifier, the middle data frame existence identifier, the middle data frame reach identifier, the previous data frame existence identifier, and the previous data frame linked list pointer identifier corresponding to the current data frame in the current linked list flag information are configured to 0, and the flag bit of the linked list pointer identifier corresponding to the current data frame is configured as the linked list pointer identifier of the current data frame; where the current aggregate input / output is the aggregate input / output corresponding to the current data frame;

[0076] If the total number of data frames corresponding to the current aggregate input and output is 2 or 3, then when the current data frame is the first data frame of the current aggregate input and output, the flag bit of the first data frame identifier corresponding to the current data frame in the current linked list flag information is configured from 0 to 1, and the flag bit of the linked list pointer identifier corresponding to the current data frame is configured from 0 to the linked list pointer identifier of the current data frame.

[0077] When the current data frame is the last data frame of the current aggregated input and output, the flag bits of the first data frame identifier and the previous data frame existence identifier corresponding to the current data frame in the current linked list flag information are configured from 0 to 1, the flag bit of the linked list pointer identifier corresponding to the current data frame is configured from 0 to the linked list pointer identifier of the current data frame, and the flag bit of the linked list pointer identifier corresponding to the previous data frame is configured from 0 to the linked list pointer identifier of the previous data frame corresponding to the current data frame.

[0078] When the current data frame is an intermediate data frame of the current aggregated input and output, the flag bits of the intermediate data frame existence flag, intermediate data frame arrival flag, and previous data frame existence flag in the current linked list flag information are configured from 0 to 1. The flag bit of the linked list pointer flag corresponding to the current data frame is configured from 0 to the linked list pointer flag of the current data frame. The flag bit of the previous data frame linked list pointer flag corresponding to the current data frame is configured from 0 to the linked list pointer flag of the previous data frame corresponding to the current data frame.

[0079] Correspondingly, the process of updating the target flag bit corresponding to each data frame in the current linked list flag bit information can be as follows: if the number of all data frames corresponding to the current aggregate input and output is 2 or 3, use the target flag bit corresponding to the current data frame that is 1 in the current linked list flag bit information to update the target flag bit corresponding to the previous data frame in the current linked list flag bit information.

[0080] For example, if data frames are received in the order of 4-3-0-11-10-9, this can be used to establish... Figure 11When the current data frame processed by the CTX_CTRL unit is a data frame with a linked list pointer identifier (context_idx) of 6, as shown in the linked list, context_idx can be used as the linked list address of the current data frame. Using information such as FstCIDisTail (tail data frame identifier), LastCIDisHead (first data frame identifier), MiddleCIDIsBody (intermediate data frame existence identifier), UseCIDBody (intermediate data frame arrival identifier), prior_head_context_idx_vld (previous data frame existence identifier), and prior_head_context_idx (previous data frame linked list pointer identifier) ​​in the data frame, the linked list flag information of the aggregate IO corresponding to the current data frame can be configured. At this time, the state of the flag bits corresponding to the current data frame in the linked list flag information can be as follows: Figure 12 As shown.

[0081] The CTX_CTRL unit sends the data that needs to be processed in the current data frame, such as the CQ (Completion Queue) information, to the CQ Processor (Completion Queue Processor, or disk controller) unit for processing. After the CQ Processor unit finishes processing, it returns the context_idx corresponding to the current data frame. After the CQ Processor module finishes processing, the CTX_CTRL unit, based on prior_head_context_idx_vld and prior_head_context_idx, determines that the preceding data frame (i.e., the previous data frame) will be written to the position where context_idx = 4. Therefore, it updates the target flag bit (FstCIDisTail) corresponding to 1 for the current data frame (context_idx = 6) to the corresponding position in the linked list flag information of the preceding data frame. That is, since no data has been written to the position where context_idx = 4, FstCIDisTail, MiddleCIDIsBody, UseCIDBody, and LastCIDisHead are all 0. The flag at context_idx = 6 can be used to overwrite the corresponding flag at the position where context_idx = 4, as shown below. Figure 13 As shown; simultaneously, the information context_idx = 6 can be updated to the next_head_context_idx (the pointer identifier of the next data frame linked list) field at context_idx = 4. This establishes a bidirectional lookup mechanism for the linked list.

[0082] Next, when the CTX_CTRL unit receives the next data frame, i.e., the current data frame is a data frame with a linked list pointer identifier (context_idx) of 4, since the flag bits of this data frame have already been configured, the CTX_CTRL unit can, when writing the flag bits corresponding to this data frame in the current linked list flag bit information, adopt the principle of "completing" instead of "overwriting," and only update the flag bits that are 0. The result can be as follows: Figure 14 As shown. Afterwards, the data that the CTX_CTRL unit needs to process in the current data frame is sent to the CQ Processor unit for processing. After the CQ Processor unit finishes processing, it returns the context_idx corresponding to the current data frame. Since the target flag bits corresponding to the first data frame (context_idx=4) in the returned context_idx are FstCIDisTail=1, MiddleCIDIsBody=0, UseCIDBody=0, and LastCIDisHead=1, it can be determined that the current linked list flag bit information has been configured, meaning that the aggregated IO across two bands has been completed, and all data processing actions have been completed in the CQ Processor module. Therefore, the two data frames corresponding to the current linked list flag bit information can be released from the linked list.

[0083] For the next data frame received by the CTX_CTRL unit, i.e., the current data frame is the data frame whose linked list pointer identifier (context_idx) is 3, it is a non-striping data frame. The current linked list flag information corresponding to the current frame can be as follows: Figure 15 As shown, the target flag bits corresponding to the first data frame in the current linked list flag information are FstCIDisTail=0, MiddleCIDIsBody=0, UseCIDBody=0 and LastCIDisHead=0; after processing by the CQ Processor module, the data frame of the linked list can be released directly.

[0084] Next, the processing of aggregated IO data frames spanning three bands, i.e., data frames with context_idx of 1, 11, and 0, is similar to the processing of data frames spanning two bands, and will not be repeated here. During the processing, the content of the linked list flag information for aggregated IO spanning three bands can be obtained through... Figures 16 to 18 The changes.

[0085] Step 103: Process all data frames corresponding to the aggregated input and output according to the configured linked list flag information; wherein, the configured linked list flag information includes the data structure information of all data frames corresponding to the aggregated input and output.

[0086] It is understood that in this embodiment, the solid-state drive can use the configured linked list flag information to determine the order of all data frames of the corresponding aggregated IO in the aggregated IO and the linked list storage location of each data frame, thereby enabling the aggregation of all data frames corresponding to the aggregated IO.

[0087] Correspondingly, in this step, the solid-state drive can also detect whether the current linked list flag information has been configured completely based on the target flag in the current linked list flag information, that is, whether all data frames of the aggregated IO corresponding to the current linked list flag information have been acquired. Thus, after the current linked list flag information is configured, all data frames corresponding to the current aggregated input and output are processed; if the current linked list flag information is not configured completely, the process returns to step 101 to continue acquiring the next data frame.

[0088] For example, when adjacent data frame information includes information from the previous data frame, the update of the target flag in the linked list flag information can be aligned with the first data frame. Correspondingly, the solid-state drive (SSD) can detect whether the current linked list flag information is configured correctly based on the target flag corresponding to the first data frame in the current linked list flag information. If so, it processes all data frames corresponding to the current aggregated input / output based on the current linked list flag information. The current aggregated input / output is the aggregated input / output corresponding to the current linked list flag information. For instance, if the target flag {FstCIDisTail,MiddleCIDIsBody,UseCIDBody,LastCIDisHead} corresponding to the first data frame is {0,0,0,0}, {1,0,0,1}, or {1,1,1,1}, it can be determined that the current linked list flag information is configured correctly. When {FstCIDisTail,MiddleCIDIsBody,UseCIDBody,LastCIDisHead} = {0,0,0,0}, the current linked list flag information is configured correctly. When the information corresponds to aggregated IO that does not span data frames across stripes; when {FstCIDisTail,MiddleCIDIsBody,UseCIDBody,LastCIDisHead}={1,0,0,1}, the current linked list flag information corresponds to aggregated IO that spans two data frames across stripes; when {FstCIDisTail,MiddleCIDIsBody,UseCIDBody,LastCIDisHead}={1,1,1,1}, the current linked list flag information corresponds to aggregated IO that spans three data frames across stripes.

[0089] Furthermore, after all data frames of the aggregated IO corresponding to the configured linked list flag information have been processed, all data frames of the aggregated IO can be deleted from the linked list to release the linked list pointer identifier, facilitating subsequent data frame storage.

[0090] In this embodiment, the present invention can identify the correlation between the data frames of aggregated IO by setting the data structure information in each data frame of aggregated IO. By using the data structure information of the data frames, the linked list flag information corresponding to each aggregated IO can be configured. The linked list flag information can then be used to correctly aggregate out-of-order data frames, thereby realizing out-of-order processing when processing aggregated IO and improving the read and write efficiency of solid-state drives.

[0091] Corresponding to the above method embodiments, this invention also provides a randomized aggregation processing apparatus. The randomized aggregation processing apparatus described below and the randomized aggregation processing method described above can be referred to in correspondence.

[0092] Please refer to Figure 19 , Figure 19 This is a structural block diagram of a randomized polymerization processing apparatus provided in an embodiment of the present invention. The apparatus may include:

[0093] The data acquisition module 10 is used to acquire data frames of aggregated input and output; wherein, the data frame includes data structure information, including the aggregation position information of the data frame, the linked list pointer identifier, and the information of adjacent data frames; the data frame is stored in a linked list;

[0094] The linked list configuration module 20 is used to configure the linked list flag information corresponding to each aggregate input and output according to the data structure information of the data frame;

[0095] The aggregation processing module 30 is used to process all data frames corresponding to the aggregation input and output according to the configured linked list flag information; wherein, the configured linked list flag information includes the data structure information of all data frames corresponding to the aggregation input and output.

[0096] In some embodiments, the aggregated location information includes the first data frame identifier, the last data frame identifier, and intermediate data frame information, wherein the intermediate data frame information includes an intermediate data frame presence identifier and an intermediate data frame arrival identifier.

[0097] In some embodiments, the total number of data frames corresponding to the aggregated input and output is less than or equal to 3.

[0098] In some embodiments, adjacent data frame information includes previous data frame information and / or next data frame information; wherein, the previous data frame information includes a previous data frame existence identifier and a previous data frame linked list pointer identifier, and the next data frame information includes a next data frame existence identifier and a next data frame linked list pointer identifier.

[0099] In some embodiments, the data acquisition module 10 may include:

[0100] The receiving submodule is used for the solid-state drive to receive input / output requests from the host.

[0101] The aggregation submodule is used to aggregate input and output requests based on their input / output types and destination addresses to obtain aggregated inputs and outputs, and to configure the data frames corresponding to each aggregated input and output.

[0102] In some embodiments, the linked list configuration module 20 may include:

[0103] The configuration submodule is used to configure the flag bits corresponding to the current data frame in the current linked list flag information according to the data structure information of the current data frame. The current linked list flag information is the linked list flag information of the aggregated input and output corresponding to the current data frame. The flag bits include the flag bits corresponding to the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier, and the intermediate data frame arrival identifier in the aggregated position information, the flag bits corresponding to the linked list pointer identifier, and the flag bits corresponding to the previous data frame existence identifier and the previous data frame linked list pointer identifier in the adjacent data frame information.

[0104] The update submodule is used to update the target flag bits corresponding to each data frame in the current linked list flag information; where the target flag bits are the flag bits corresponding to the first data frame identifier, the last data frame identifier, the middle data frame existence identifier, and the middle data frame arrival identifier.

[0105] In some embodiments, the number of all data frames corresponding to the aggregated input / output is less than or equal to 3. The configuration submodule can be specifically configured to, if the number of all data frames corresponding to the current aggregated input / output is 1, set the flag bits of the first data frame identifier, the last data frame identifier, the middle data frame existence identifier, the middle data frame reach identifier, the previous data frame existence identifier, and the previous data frame linked list pointer identifier in the current linked list flag information to 0, and set the flag bit of the linked list pointer identifier corresponding to the current data frame to the linked list pointer identifier of the current data frame; wherein, the current aggregated input / output is the aggregated input / output corresponding to the current data frame;

[0106] If the total number of data frames corresponding to the current aggregate input and output is 2 or 3, then when the current data frame is the first data frame of the current aggregate input and output, the flag bit of the first data frame identifier corresponding to the current data frame in the current linked list flag information is configured from 0 to 1, and the flag bit of the linked list pointer identifier corresponding to the current data frame is configured from 0 to the linked list pointer identifier of the current data frame.

[0107] When the current data frame is the last data frame of the current aggregated input and output, the flag bits of the first data frame identifier and the previous data frame existence identifier corresponding to the current data frame in the current linked list flag information are configured from 0 to 1, the flag bit of the linked list pointer identifier corresponding to the current data frame is configured from 0 to the linked list pointer identifier of the current data frame, and the flag bit of the linked list pointer identifier corresponding to the previous data frame is configured from 0 to the linked list pointer identifier of the previous data frame corresponding to the current data frame.

[0108] When the current data frame is an intermediate data frame of the current aggregated input and output, the flag bits of the intermediate data frame existence flag, intermediate data frame arrival flag, and previous data frame existence flag in the current linked list flag information are configured from 0 to 1, the flag bit of the linked list pointer flag corresponding to the current data frame is configured from 0 to the linked list pointer flag of the current data frame, and the flag bit of the linked list pointer flag corresponding to the previous data frame is configured from 0 to the linked list pointer flag of the previous data frame corresponding to the current data frame.

[0109] Correspondingly, the update submodule can be specifically used to update the target flag corresponding to the previous data frame in the current linked list flag information if the number of all data frames corresponding to the current aggregate input and output is 2 or 3, using the target flag corresponding to the current data frame that is 1 in the current linked list flag information.

[0110] In some embodiments, the aggregation processing module 30 may include:

[0111] The detection submodule is used to detect whether the current linked list flag information has been configured completely, based on the target flag corresponding to the first data frame in the current linked list flag information.

[0112] The processing submodule is used to process all data frames corresponding to the current aggregate input and output based on the current linked list flag information if the configuration is complete; where the current aggregate input and output is the aggregate input and output corresponding to the current linked list flag information.

[0113] In this embodiment, the present invention can identify the correlation between the data frames of aggregated IO by setting the data structure information in each data frame of aggregated IO. Then, the linked list configuration module 20 uses the data structure information of the data frame to configure the linked list flag information corresponding to each aggregated IO. In this way, the linked list flag information is used to correctly aggregate out-of-order data frames, realize out-of-order processing when processing aggregated IO, and improve the read and write efficiency of solid-state drive.

[0114] Corresponding to the above method embodiments, this invention also provides a solid-state drive. The solid-state drive described below and the out-of-order aggregation processing method described above can be referred to in correspondence.

[0115] Please refer to Figure 20 , Figure 20 This is a schematic diagram of a solid-state drive provided in an embodiment of the present invention. The decoy file delivery device may include:

[0116] Memory D1 is used to store computer programs;

[0117] Processor D2 is used to implement the steps of the out-of-order aggregation processing method provided in the above method embodiments when executing a computer program.

[0118] Corresponding to the above method embodiments, this invention also provides a computer-readable storage medium. The computer-readable storage medium described below corresponds to and can be referred to in relation to the out-of-order aggregation processing method described above.

[0119] Please refer to Figure 21 , Figure 21 This is a schematic diagram of a computer-readable storage medium provided in an embodiment of the present invention. The computer-readable storage medium 40 stores a computer program 41, which, when executed by a processor, implements the steps of the out-of-order aggregation processing method provided in the above-described method embodiment.

[0120] The computer-readable storage medium 40 can specifically be a USB flash drive, a portable hard drive, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk, or any other storage medium capable of storing program code.

[0121] The various embodiments in this specification are described in a progressive manner, with each embodiment focusing on its differences from other embodiments. Similar or identical parts between embodiments can be referred to interchangeably. For the apparatus, solid-state drive, and computer-readable storage medium disclosed in the embodiments, since they correspond to the methods disclosed in the embodiments, the descriptions are relatively simple; relevant parts can be referred to in the method section.

[0122] The above provides a detailed description of the out-of-order aggregation processing method, apparatus, and solid-state drive provided by the present invention. Specific examples have been used to illustrate the principles and implementation methods of the present invention. The descriptions of the embodiments above are merely for the purpose of helping to understand the method and core ideas of the present invention. It should be noted that those skilled in the art can make various improvements and modifications to the present invention without departing from its principles, and these improvements and modifications also fall within the protection scope of the claims of the present invention.

Claims

1. A method for processing disordered aggregation, characterized in that, include: The solid-state drive receives input / output requests from the host. Based on the input / output type and destination address of the input / output request, the input / output requests are aggregated to obtain aggregated input / output, and data frames corresponding to each aggregated input / output are configured. Each data frame includes data structure information, including aggregation position information, linked list pointer identifiers, and adjacent data frame information. The data frames are stored in a linked list. The aggregation position information includes a first data frame identifier, a last data frame identifier, and intermediate data frame information. The intermediate data frame information includes an intermediate data frame existence identifier and an intermediate data frame arrival identifier. The adjacent data frame information includes previous data frame information and / or next data frame information. The previous data frame information includes a previous data frame existence identifier and a previous data frame linked list pointer identifier, and the next data frame information includes a next data frame existence identifier and a next data frame linked list pointer identifier. Based on the data structure information of the data frame, configure the linked list flag information corresponding to each of the aggregated inputs and outputs; Based on the configured linked list flag information, all data frames corresponding to the aggregated input and output are processed; wherein, the configured linked list flag information includes the data structure information of all data frames corresponding to the aggregated input and output. The step of configuring the linked list flag information corresponding to each of the aggregated inputs and outputs according to the data structure information of the data frame includes: Based on the data structure information of the current data frame, configure the flag bits corresponding to the current data frame in the current linked list flag information; wherein, the current linked list flag information is the linked list flag information of the aggregated input and output corresponding to the current data frame, and the flag bits include the flag bits corresponding to the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier and the intermediate data frame arrival identifier in the aggregated position information, the flag bits corresponding to the linked list pointer identifier, and the flag bits corresponding to the previous data frame existence identifier and the previous data frame linked list pointer identifier in the adjacent data frame information; Update the target flag bits corresponding to each data frame in the current linked list flag information; wherein, the target flag bits are the flag bits corresponding to the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier, and the intermediate data frame arrival identifier.

2. The disordered aggregation processing method according to claim 1, characterized in that, The total number of data frames corresponding to the aggregated input and output is less than or equal to 3.

3. The disordered aggregation processing method according to claim 1, characterized in that, The number of all data frames corresponding to the aggregated input and output is less than or equal to 3. The step of configuring the flag bit corresponding to the current data frame in the current linked list flag bit information based on the data structure information of the current data frame includes: If the total number of data frames corresponding to the current aggregate input / output is 1, then the flag bits of the first data frame identifier, the last data frame identifier, the middle data frame existence identifier, the middle data frame reach identifier, the previous data frame existence identifier, and the previous data frame linked list pointer identifier corresponding to the current data frame in the current linked list flag information are configured to 0, and the flag bit of the linked list pointer identifier corresponding to the current data frame is configured to the linked list pointer identifier of the current data frame; where, the current aggregate input / output is the aggregate input / output corresponding to the current data frame; If the total number of data frames corresponding to the current aggregate input and output is 2 or 3, then when the current data frame is the first data frame of the current aggregate input and output, the flag bit of the first data frame identifier corresponding to the current data frame in the current linked list flag information is configured from 0 to 1, and the flag bit of the linked list pointer identifier corresponding to the current data frame is configured from 0 to the linked list pointer identifier of the current data frame. When the current data frame is the last data frame of the current aggregated input and output, the flag bits of the first data frame identifier and the previous data frame existence identifier corresponding to the current data frame in the current linked list flag information are configured from 0 to 1, the flag bit of the linked list pointer identifier corresponding to the current data frame is configured from 0 to the linked list pointer identifier of the current data frame, and the flag bit of the linked list pointer identifier corresponding to the previous data frame is configured from 0 to the linked list pointer identifier of the previous data frame corresponding to the current data frame. When the current data frame is an intermediate data frame of the current aggregated input and output, the flag bits of the intermediate data frame existence flag, intermediate data frame arrival flag, and previous data frame existence flag in the current linked list flag information are configured from 0 to 1, the flag bit of the linked list pointer flag corresponding to the current data frame is configured from 0 to the linked list pointer flag of the current data frame, and the flag bit of the linked list pointer flag corresponding to the previous data frame is configured from 0 to the linked list pointer flag of the previous data frame corresponding to the current data frame. Accordingly, updating the target flag bits corresponding to each data frame in the current linked list flag bit information includes: If the total number of data frames corresponding to the current aggregated input and output is 2 or 3, use the target flag bit corresponding to the current data frame that is 1 in the current linked list flag information to update the target flag bit corresponding to the previous data frame in the current linked list flag information.

4. The disordered aggregation processing method according to claim 1, characterized in that, The step of processing all data frames corresponding to the aggregated input and output based on the configured linked list flag information includes: Based on the target flag bit corresponding to the first data frame in the current linked list flag bit information, check whether the current linked list flag bit information has been configured. If so, then all data frames corresponding to the current aggregate input / output are processed according to the current linked list flag information; where the current aggregate input / output is the aggregate input / output corresponding to the current linked list flag information.

5. A disordered polymerization processing apparatus, characterized in that, include: A data acquisition module is used to acquire aggregated input and output data frames. Each data frame includes data structure information, such as aggregation position information, linked list pointer identifiers, and adjacent data frame information. The data frames are stored in a linked list. The aggregation position information includes a first data frame identifier, a last data frame identifier, and intermediate data frame information. The intermediate data frame information includes an intermediate data frame existence identifier and an intermediate data frame arrival identifier. The adjacent data frame information includes previous data frame information and / or next data frame information. The previous data frame information includes a previous data frame existence identifier and a previous data frame linked list pointer identifier, and the next data frame information includes a next data frame existence identifier and a next data frame linked list pointer identifier. The linked list configuration module is used to configure the linked list flag information corresponding to each of the aggregate inputs and outputs according to the data structure information of the data frame; The aggregation processing module is used to process all data frames corresponding to the aggregation input and output according to the configured linked list flag information; wherein, the configured linked list flag information includes the data structure information of all data frames corresponding to the aggregation input and output. The device is applied to a solid-state drive, and the data acquisition module includes: The receiving submodule is used to receive input / output requests from the host. The aggregation submodule is used to aggregate the input / output requests according to the input / output type and destination address of the input / output requests to obtain the aggregated input / output, and configure the data frames corresponding to each of the aggregated input / output; The linked list configuration module includes: The configuration submodule is used to configure the flag bits corresponding to the current data frame in the current linked list flag information according to the data structure information of the current data frame; wherein, the current linked list flag information is the linked list flag information of the aggregated input and output corresponding to the current data frame, and the flag bits include the flag bits corresponding to the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier and the intermediate data frame arrival identifier in the aggregated position information, the flag bits corresponding to the linked list pointer identifier, and the flag bits corresponding to the previous data frame existence identifier and the previous data frame linked list pointer identifier in the adjacent data frame information; The update submodule is used to update the target flag bits corresponding to each data frame in the current linked list flag bit information; wherein, the target flag bits are the flag bits corresponding to the first data frame identifier, the last data frame identifier, the intermediate data frame existence identifier, and the intermediate data frame arrival identifier.

6. A solid-state drive, characterized in that, include: Memory, used to store computer programs; A processor, configured to implement the steps of the out-of-order aggregation processing method as described in any one of claims 1 to 4 when executing the computer program.

Citation Information

Patent Citations

  • System and method for transferring data out of order in next generation solid state drive controller

    CN103577119A

  • Data queue de-queuing control method and device

    CN103914341A