IO processing device and method

By designing the CL application control module and the waiting queue management module in the IO processing device, the problems of IO suspend and SGE repeated transport after the CL application fails, achieving more efficient CL flow and reducing bus bandwidth usage, and improving system IOPS Performance and reduced power consumption.

CN119396340AActive Publication Date: 2025-02-07WUXI STARS MICRO SYSTEM TECHNOLOGIES CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202411471300.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-10-21
Publication Date
2025-02-07
Estimated Expiration
2044-10-21

AI Technical Summary

Technical Problem

In the storage IO acceleration chip, due to the limitation of CL resources, IO needs to be suspended and SGE and frame information are discarded after the CL application fails, resulting in a degradation of system IOPS performance and an increase in bus bandwidth usage.

Method used

An IO processing device is designed, including a CL application control module and a waiting queue management module. The CL application control module continues to apply for the next CL after the CL application fails until all CL applications are completed for the pending IO, and records the breakpoint information of the failed application. When the waiting queue management module is released, it takes the waiting IO and waiting SGE out of the waiting queue and puts it back to the IO queue and SGE queue.

Benefits of technology

By skipping the failed CL, the CL flow efficiency is improved, the SGE is avoided, the AXI bus bandwidth pressure is reduced, the system IOPS performance is improved, and the power consumption is reduced.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119396340A_ABST
    Figure CN119396340A_ABST
Patent Text Reader

Abstract

The invention provides an IO processing device and method. The device comprises a CL application control module and a waiting queue management module. Wherein the CL application control module reads to-be-processed IO from an IO queue and reads to-be-processed SGE corresponding to the to-be-processed IO from an SGE queue; for the to-be-processed IO, sequentially applying for CL by taking the CL as a unit, writing information of the successfully applied CL into a CL information buffer, generating a waiting IO and a waiting SGE corresponding to the failed applied CL for the failed applied CL, and writing the waiting IO and the waiting SGE into a waiting queue; and after the waiting queue management module receives a message that the CL corresponding to the waiting IO is released, taking out the waiting IO and the waiting SGE corresponding to the released CL from the waiting queue, and respectively putting the waiting IO and the waiting SGE into the IO queue and the SGE queue. According to the technical scheme, the CL which fails to apply is skipped, subsequent CL processing is not blocked, and the circulation efficiency of the CL is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application belongs to the field of chip technology, and in particular relates to an IO processing device and method. Background Art

[0002] In storage IO acceleration chips, due to the limitation of CL (Cache Line) resources, it is inevitable to encounter CL resource application failure when processing foreground IO. At this time, it is necessary to hang the remaining unprocessed IO in the waiting queue and discard the SGE (linked list descriptor for data transmission) and frame (command frame) information that have been moved to the local. After the corresponding CL resources are released, the suspended IO is removed from the waiting queue, and the SGE and frame information are re-moved to continue processing. If the same IO fails to apply for CL multiple times, it will be suspended repeatedly, seriously affecting the system IOPS (number of IO processed per second) performance, and the bus bandwidth will be occupied when the SGE information is repeatedly moved, resulting in increased power consumption of the chip. Summary of the invention

[0003] The purpose of the present application is to provide an IO processing device and method, aiming to solve the problem of repeated suspension after CL application failure and multiple transfer of SGE information in the related art.

[0004] According to a first aspect of the present application, an IO processing device is provided, comprising: a CL application control module and a waiting queue management module;

[0005] The CL application control module is used to read the pending IO from the IO queue and the pending SGE corresponding to the pending IO from the SGE queue; and apply CL in order with CL as the unit for the pending IO, write the CL information of the successfully applied CL into the CL information buffer, and generate the waiting IO and waiting SGE corresponding to the failed CL for the failed application, and write them into the waiting queue;

[0006] The waiting queue management module is used for taking out the waiting IO and waiting SGE corresponding to the released CL from the waiting queue after receiving the message that the CL corresponding to the waiting IO is released, and putting them into the IO queue and the SGE queue respectively.

[0007] In an optional implementation manner, after the current CL application fails, the CL application control module continues to apply for the next CL of the current CL until the last CL corresponding to the pending IO is applied for.

[0008] In an optional implementation, for the CL whose application fails, the CL application control module is further used to detect whether the existing waiting chain CL is continuous with the CL whose application fails;

[0009] If they are continuous, the CL whose application failed and the existing waiting chain CL are aggregated into a new waiting chain CL;

[0010] If it is not continuous, a waiting IO and a waiting SGE corresponding to the existing waiting hanging chain CL are generated and put into the waiting queue. The CL whose application fails is marked as the waiting hanging chain CL.

[0011] In an optional implementation manner, if the CL corresponding to the waiting IO includes the released CL and other CLs, after the waiting queue management module receives the message that the CL corresponding to the waiting IO is released, the waiting IO is split into the waiting IO corresponding to the released CL and other IOs corresponding to other CLs, and the waiting SGE corresponding to the waiting IO is split into the waiting SGE corresponding to the released CL and other SGEs corresponding to other CLs;

[0012] The split waiting IO and the split waiting SGE are put into the IO queue and the SGE queue respectively, and other IOs and other SGEs are put into the waiting queue as new waiting IO and new waiting SGE respectively.

[0013] In an optional embodiment, the IO processing device further includes: front-end and back-end IO generation modules;

[0014] The front-end and back-end IO generation modules are used to read the CL information from the CL information buffer and generate corresponding front-end IO and back-end IO according to the CL information, so as to complete the task to be implemented by the to-be-processed IO through the front-end IO and the back-end IO.

[0015] According to a second aspect of the present application, an IO processing method is provided, comprising:

[0016] The CL application control module reads the pending IO from the IO queue and reads the pending SGE corresponding to the pending IO from the SGE queue;

[0017] The CL application control module applies for CL in units of CL in sequence for the IO to be processed;

[0018] If the CL application is successful, the CL application control module writes the CL information of the successful application into the CL information buffer;

[0019] If the CL application fails, the CL application control module generates a waiting IO and a waiting SGE corresponding to the CL whose application fails, and writes them into the waiting queue;

[0020] After receiving the message that the CL corresponding to the waiting IO is released, the waiting queue management module takes out the waiting IO and waiting SGE corresponding to the released CL from the waiting queue, and puts them into the IO queue and the SGE queue respectively.

[0021] In an optional implementation manner, if the CL application fails, the CL application control module generates a waiting IO and a waiting SGE corresponding to the CL whose application fails, and writes them into a waiting queue, including:

[0022] After the current CL application fails, the CL application control module continues to apply for the next CL of the current CL until the last CL corresponding to the pending IO is applied for.

[0023] In an optional implementation manner, if the CL application fails, the CL application control module generates a waiting IO and a waiting SGE corresponding to the CL whose application failed, and writes them into a waiting queue, including:

[0024] If the CL application fails, the CL application control module further detects whether the existing waiting chain CL and the CL whose application failed are continuous;

[0025] If they are continuous, the CL application control module aggregates the CL whose application failed and the existing waiting chain CL into a new waiting chain CL;

[0026] If not, the CL application control module generates a waiting IO and a waiting SGE corresponding to the existing waiting hanging chain CL, and puts them into the waiting queue. The CL whose application fails is marked as the waiting hanging chain CL.

[0027] In an optional implementation manner, the CL corresponding to the waiting IO includes a released CL and other CLs; after the waiting queue management module receives a message that the CL corresponding to the waiting IO is released, the waiting IO and the waiting SGE corresponding to the released CL are taken out from the waiting queue, and are put into the IO queue and the SGE queue respectively, including:

[0028] After receiving the message that the CL corresponding to the waiting IO is released, the waiting queue management module splits the waiting IO into the waiting IO corresponding to the released CL and other IOs corresponding to other CLs, and splits the waiting SGE corresponding to the waiting IO into the waiting SGE corresponding to the released CL and other SGEs corresponding to other CLs;

[0029] The waiting queue management module puts the split waiting IO and the split waiting SGE into the IO queue and the SGE queue respectively, and puts other IOs and other SGEs into the waiting queue as new waiting IO and new waiting SGE respectively.

[0030] In an optional embodiment, the method further comprises:

[0031] The front-end and back-end IO generation modules read the CL information from the CL information buffer, and generate corresponding front-end IO and back-end IO according to the CL information, so as to complete the task to be implemented by the to-be-processed IO through the front-end IO and the back-end IO.

[0032] Compared with the related art, the technical solution of this application has the following advantages:

[0033] 1. Skip the CLs that failed to apply, do not block the subsequent CL processing, and improve the circulation efficiency of CLs;

[0034] 2. When the conflict is released, any CL in the Wait_IO queue can be processed, not limited to sequential CL processing;

[0035] 3. The suspended Wait_IO queue records breakpoint information to avoid repeated handling of SGE and reduce the pressure on AXI bus bandwidth.

[0036] Other features and advantages of the present application will be described in the following description, and partly become apparent from the description, or be understood by practicing the present application. The purpose and other advantages of the present application can be realized and obtained through the structures and processes indicated in the description and the drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0037] In order to more clearly illustrate the technical solutions in the embodiments of the present application or the related technologies, the drawings required for use in the embodiments or the related technical descriptions are briefly introduced below. It is obvious that the drawings described below are certain embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying any creative work.

[0038] Figure 1 It is a schematic diagram of the effect of the CL application process according to the related art.

[0039] Figure 2 is a schematic structural diagram of an IO processing device according to an exemplary embodiment of the present application.

[0040] Figure 3 It is a processing flow chart of the CL application control module according to an exemplary embodiment of the present application.

[0041] Figure 4 It is a schematic diagram of the effect of the CL application process according to an exemplary embodiment of the present application.

[0042] Figure 5is a flowchart of an IO processing method according to an exemplary embodiment of the present application. DETAILED DESCRIPTION

[0043] In order to make the purpose, technical solution and advantages of the embodiments of the present application clearer, the technical solution in the embodiments of the present application will be clearly and completely described below in conjunction with the drawings in the embodiments of the present application. Obviously, the described embodiments are part of the embodiments of the present application, not all of the embodiments. Based on the embodiments in the present application, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of this application.

[0044] See also Figure 1 As shown, the existing technology has the following problems:

[0045] 1. Low CL transfer efficiency. In the first round of CL applications, because CL2 failed to apply, the CLs (CL3-CL7) that might have been successfully applied for later were not applied for, so only two CLs were processed; in the second round of CL applications, CL3, which might have been successfully applied for in the first round, was occupied by other IOs before the second round of applications, resulting in application failure, so only one CL was processed; in the third round, CL5 failed to apply, so two CLs were processed; in the fourth round, three CLs were processed. In this case, the CL transfer efficiency is low, which will also reduce the IOPS performance of the system.

[0046] 2. Repeated handling of frames and SGEs greatly occupies the bandwidth of the AXI (Advanced eXtensible Interface) bus. Because the handling of frames and SGEs must be completed before delivering normal IOs or suspended IOs, the handling of frames and SGEs is required when re-delivering suspended Wait_IO1, Wait_IO2, and Wait_IO3. The SGE corresponding to CL2 needs to be handled twice, the SGE corresponding to CL3-CL4 needs to be handled three times, and the SGE corresponding to CL5-CL7 needs to be handled four times.

[0047] Based on the above analysis, this application proposes that in the process of processing IO, all CLs corresponding to the IO should be applied for in the first round. If a CL application fails, the breakpoint information of the CL application failure is recorded and linked to the Wait IO queue, and then the remaining CLs are applied until the first round of applications is completed. After the CL resources corresponding to the waiting IO are released, the waiting IO is resubmitted, which solves the following problems:

[0048] 1. When CL application fails, only the IO information corresponding to the current CL is suspended, and then the subsequent CL is processed;

[0049] 2. When CL is released, any section of CL in waiting IO can be processed, not limited to sequential CL processing;

[0050] 3. Record the frame and SGE breakpoint information of the CL application failure corresponding to the waiting IO (that is, the SGE corresponding to the CL application failure). When re-executing the waiting IO, you only need to read the frame and SGE locally according to the breakpoint information, reducing the bandwidth pressure of the AXI bus.

[0051] like Figure 2 As shown, the present application exemplarily provides an IO processing device, which mainly solves IO conflicts through CL application control and Wait queue management. The IO processing device includes: a CL application control module and a waiting queue management module;

[0052] The CL application control module reads pending IOs from the IO queue and the pending SGEs corresponding to the pending IOs from the SGE queue; applies CLs in order in units of CL for the pending IOs, writes the CL information of successfully applied CLs into the CL information buffer, and generates waiting IOs and waiting SGEs corresponding to the failed CLs, and writes them into the waiting queue.

[0053] After receiving the message that the CL corresponding to the waiting IO is released, the waiting queue management module takes out the waiting IO and waiting SGE corresponding to the released CL from the waiting queue, and puts them into the IO queue and the SGE queue respectively.

[0054] For example, Figure 2 The numbers g1-g4 in the figure show the processing process of the CL application control module for the pending IO. The IO queue may include original IO and / or waiting IO. The original IO may be the IO sent by the host, and the waiting IO may be the waiting queue management module ( Figure 2 Wait queue management module in) from the waiting queue ( Figure 2 The SGE queue includes the original SGE and / or the waiting SGE. The original SGE is the SGE corresponding to the original IO, and the waiting SGE is the SGE corresponding to the waiting SGE. The processing flow of the CL application control module can be described as follows:

[0055] 1. Read pending IO from the IO queue (raw IO or Wait_IO);

[0056] 2. Parse the IO information and read the corresponding SGE information (original SGE or Wait_SGE) from the SGE queue according to the pending IO;

[0057] 3. Apply for CL from the cache management module in units of CL. If a CL application fails, skip it and continue to apply for subsequent CLs until all CL applications for pending IO are completed.

[0058] 4. If the CL application is successful, the corresponding CL information is written into the CL information Buffer and waits for the next step of processing; if the CL application fails, the corresponding waiting IO and waiting SGE are regenerated based on the failed CL and then hung in the waiting queue. The waiting queue includes the waiting IO queue (Wait_IO queue) and the waiting SGE queue (Wait_SGE queue).

[0059] For example, Figure 2 The middle numbers w1-w4 show the processing process of the waiting queue management module for the waiting IO. Among them, the waiting IO queue is a two-way chain. If the CL application fails, the corresponding generated waiting IO is suspended to the Wait_IO queue, and the corresponding waiting SGE is suspended to the Wait_SGE queue.

[0060] The Wait_IO queue mainly records the Cmd information and breakpoint information including frame and SGE as shown in Table 1 below:

[0061] cmd LBA len sge_num sge_baseaddr sge_offset ...

[0062] Table 1

[0063] Among them, the Wait_SGE queue mainly caches the SGE information of the waiting IO corresponding to the CL where the application failed. The cmd and frame information in Table 1 above are all from the pending IO, and the SGE-related information comes from the corresponding pending SGE.

[0064] The processing flow of the waiting queue management module for pending IO is described as follows:

[0065] 1. Receive and parse the CL information released by the Cache Management Module. After the Cache Management Module releases the CL, if it detects that there is a waiting IO corresponding to the CL, it will send the CL information to the waiting queue management module. After parsing the CL information, the waiting queue management module can determine the waiting IO corresponding to the CL;

[0066] 2. Determine the corresponding waiting SGE in the waiting SGE queue of the CL according to the waiting IO, pop the waiting SGE, and put it into the SGE queue, so as to avoid repeatedly moving the SGE from the AXI bus;

[0067] 3. Re-deliver the waiting IO to the IO queue and wait for scheduling processing.

[0068] In some optional implementations, after the current CL application fails, the CL application control module continues to apply for the next CL of the current CL until the last CL corresponding to the pending IO is applied for.

[0069] Exemplarily, a pending IO may correspond to multiple CLs, and the CL application control module will apply for corresponding resources from the Cache management module in sequence starting from the first CL. If the currently applied CL is occupied by other processes, the application will fail. At this time, the CL application control module will not interrupt the CL application process, but will continue to apply for the next CL corresponding to the pending IO, and so on, until the last CL corresponding to the pending IO.

[0070] In some optional implementations, for the CL whose application fails, the CL application control module further detects whether the existing waiting chained CL is continuous with the CL whose application fails;

[0071] If they are continuous, the CL whose application failed and the existing waiting chain CL are aggregated into a new waiting chain CL;

[0072] If it is not continuous, a waiting IO and a waiting SGE corresponding to the existing waiting hanging chain CL are generated and put into the waiting queue. The CL whose application fails is marked as the waiting hanging chain CL.

[0073] As described above, for CLs whose applications fail, the CL application control module will hang the waiting IO and waiting SGE corresponding to the CL in the waiting queue. For example, in order to save and reduce the number of waiting IOs, save hardware resources and shorten processing time, after the CL application control module encounters a CL whose application fails, if the CL is the first CL whose application fails, it will not generate the corresponding waiting IO and waiting SGE temporarily, but continue to apply for the next CL; the first CL whose application fails can be identified as a CL to be chained; if the CL is not the first CL whose application fails, the CL application control module will detect whether the last CL whose application failed, that is, the existing CL to be chained, is continuous with the current CL whose application fails. It can be understood that two consecutive CLs can be understood as two CLs with consecutive addresses.

[0074] If it is not continuous, the existing CL to be chained can execute the chaining process, that is, generate the corresponding waiting IO and waiting SGE, and put it into the waiting queue; if the CL whose application currently fails is not the last CL, the CL whose application currently fails will be marked as the CL to be chained and will not be processed temporarily; if the CL whose application currently fails is the last CL, the chaining operation will also be performed on the CL whose application currently fails.

[0075] If it is continuous and the current CL that failed to apply is not the last CL, the corresponding waiting IO and waiting SGE will not be generated temporarily. Instead, the existing CL to be chained and the current CL that failed to apply will be aggregated into a new CL to be chained, and the next CL will be applied. If the current CL that failed to apply is the last CL, the chaining operation will be performed on the new CL to be chained.

[0076] like Figure 3 As shown, illustratively, the processing flow of the CL application control module applying for CL from the Cache management module can be described in detail as follows:

[0077] 1. Read and parse IO commands and SGE information;

[0078] 2. Apply for CL from the cache management module in units of CL. If the application is successful, execute step 3. If the application fails, execute step 4.

[0079] 3. Write the successfully applied CL information into the CL information Buffer;

[0080] 4. Check whether the CL that failed to apply is continuous with the previous CL that failed to apply, and aggregate the continuous CL into a larger waiting IO and hang it in the waiting queue (Wait_IO queue) and SGE queue (Wait_SGE queue), so as to reduce the number of Wait IO, save hardware resources, and shorten the processing time; if not continuous, directly hang it in the waiting queue and SGE queue;

[0081] 5. Regardless of success or failure, the CL application work will be completed in the first round. If the last CL application is completed, read the next pending IO. If it is not the last CL, return to step 1 to continue the application, which can speed up the circulation efficiency of CL and shorten the processing time.

[0082] In some optional implementations, if the CL corresponding to the waiting IO includes the released CL and other CLs, after receiving the message that the CL corresponding to the waiting IO is released, the waiting queue management module splits the waiting IO into the waiting IO corresponding to the released CL and other IOs corresponding to other CLs, and splits the waiting SGE corresponding to the waiting IO into the waiting SGE corresponding to the released CL and other SGEs corresponding to other CLs;

[0083] The split waiting IO and the split waiting SGE are put into the IO queue and the SGE queue respectively, and other IOs and other SGEs are put into the waiting queue as new waiting IO and new waiting SGE respectively.

[0084] For example, as described above, a waiting IO may correspond to multiple CLs. If the Cache management module currently releases only some of the CLs, the waiting IO can be split into waiting IOs corresponding to the released part of the CLs and other IOs corresponding to other CLs. Thus, the waiting IOs corresponding to the released part of the CLs can be delivered to the IO queue for scheduling, while other IOs are still hung in the waiting queue.

[0085] In some optional implementations, the IO processing device further includes: front-end and back-end IO generation modules;

[0086] The front-end and back-end IO generation module reads the CL information from the CL information buffer, and generates corresponding front-end IO and back-end IO according to the CL information, so as to complete the task to be implemented by the to-be-processed IO through the front-end IO and the back-end IO.

[0087] For example, Figure 2 As shown in the middle label g5, the front-end and back-end IO generation modules (FIO & BIO generation modules) read the CL information from the CL information buffer, and then generate the front-end IO (FIO) and back-end IO (BIO) according to the specific scenario, that is, according to whether the original IO to be processed is a read command or a write command, to complete the data movement between the host and the cache, and the data movement between the storage medium and the cache. Among them, the front-end IO is used for data movement from the host to the chip and from the chip to the host, and the back-end IO is used for data movement between the on-chip and off-chip storage media.

[0088] like Figure 4 As shown, compared Figure 1 This application only uses 2 rounds to process the original IO. The first round processes 5 CLs, and the second round processes 3 CLs. CL2 and CL3 that failed to apply for CL are aggregated into one IO1 and suspended. The suspended IO1 contains 2 CLs, and the suspended IO2 contains one CL. The Wait_IO queue suspended IO breakpoint information records the information needed to re-execute the suspended IO, and there is no need to repeatedly move the frame and SGE.

[0089] Compared with the related art's processing method of suspending when encountering a conflict, it will neither block the subsequent CL processing nor need to discard the SGE that has been moved. It responds quickly after the conflict is resolved, reducing the access bandwidth of the AXI bus.

[0090] The solution of this application can achieve the following beneficial effects:

[0091] 1. Skip the CLs that failed to apply, do not block the subsequent CL processing, and improve the circulation efficiency of CLs;

[0092] 2. When the conflict is released, any CL in the Wait_IO queue can be processed, not limited to sequential CL processing;

[0093] 3. The suspended Wait_IO queue records breakpoint information to avoid repeated handling of SGE and reduce the pressure on AXI bus bandwidth.

[0094] Accordingly, if Figure 5 As shown, the present application provides an IO processing method in a second aspect, comprising:

[0095] In S501, the CL application control module reads the pending IO from the IO queue and reads the pending SGE corresponding to the pending IO from the SGE queue;

[0096] In S502, the CL application control module applies for CLs in order based on the IOs to be processed.

[0097] In S503, if the CL application is successful, the CL application control module writes the CL information of the successful application into the CL information buffer;

[0098] In S504, if the CL application fails, the CL application control module generates a waiting IO and a waiting SGE corresponding to the CL application failure, and writes them into a waiting queue;

[0099] In S505, after receiving the message that the CL corresponding to the waiting IO is released, the waiting queue management module takes out the waiting IO and waiting SGE corresponding to the released CL from the waiting queue, and puts them into the IO queue and the SGE queue respectively.

[0100] In an optional implementation manner, if the CL application fails, the CL application control module generates a waiting IO and a waiting SGE corresponding to the CL whose application failed, and writes them into a waiting queue, including:

[0101] After the current CL application fails, the CL application control module continues to apply for the next CL of the current CL until the last CL corresponding to the pending IO is applied for.

[0102] In an optional implementation manner, if the CL application fails, the CL application control module generates a waiting IO and a waiting SGE corresponding to the CL whose application failed, and writes them into a waiting queue, including:

[0103] If the CL application fails, the CL application control module further detects whether the existing waiting chain CL and the CL whose application failed are continuous;

[0104] If they are continuous, the CL application control module aggregates the CL whose application failed and the existing waiting chain CL into a new waiting chain CL;

[0105] If not, the CL application control module generates a waiting IO and a waiting SGE corresponding to the existing waiting hanging chain CL, and puts them into the waiting queue. The CL whose application fails is marked as the waiting hanging chain CL.

[0106] In an optional implementation manner, the CL corresponding to the waiting IO includes a released CL and other CLs; after the waiting queue management module receives a message that the CL corresponding to the waiting IO is released, the waiting IO and the waiting SGE corresponding to the released CL are taken out from the waiting queue, and are put into the IO queue and the SGE queue respectively, including:

[0107] After receiving the message that the CL corresponding to the waiting IO is released, the waiting queue management module splits the waiting IO into the waiting IO corresponding to the released CL and other IOs corresponding to other CLs, and splits the waiting SGE corresponding to the waiting IO into the waiting SGE corresponding to the released CL and other SGEs corresponding to other CLs;

[0108] The waiting queue management module puts the split waiting IO and the split waiting SGE into the IO queue and the SGE queue respectively, and puts other IOs and other SGEs into the waiting queue as new waiting IO and new waiting SGE respectively.

[0109] In an optional embodiment, the method further comprises:

[0110] The front-end and back-end IO generation modules read the CL information from the CL information buffer, and generate corresponding front-end IO and back-end IO according to the CL information, so as to complete the task to be implemented by the to-be-processed IO through the front-end IO and the back-end IO.

[0111] The above device can be implemented by the IO processing device provided in the above embodiment. The specific implementation method can refer to the description of the IO processing device in the above embodiment, which will not be repeated here.

[0112] It is understood that the circuit structures, names and parameters described in the above embodiments are only examples. Those skilled in the art can also easily combine and adjust the structural features of the above embodiments according to the use requirements, and should not limit the concept of the present application to the specific details of the above examples.

[0113] Although the present application has been described in detail with reference to the aforementioned embodiments, a person skilled in the art should understand that he or she may still modify the technical solutions described in the aforementioned embodiments, or make equivalent substitutions for some of the technical features therein; and these modifications or substitutions do not cause the essence of the corresponding technical solutions to deviate from the spirit and scope of the technical solutions of the embodiments of the present application.

Claims

1. An IO processing device, characterized in that: include: CL application control module and waiting queue management module; The CL application control module is used to read the pending IO from the IO queue and the pending SGE corresponding to the pending IO from the SGE queue; and apply CL in order with CL as the unit for the pending IO, write the CL information of the successfully applied CL into the CL information buffer, and generate the waiting IO and waiting SGE corresponding to the failed CL for the failed application, and write them into the waiting queue; The waiting queue management module is used for taking out the waiting IO and waiting SGE corresponding to the released CL from the waiting queue after receiving the message that the CL corresponding to the waiting IO is released, and putting them into the IO queue and the SGE queue respectively.

2. The IO processing device according to claim 1, characterized in that: After the current CL application fails, the CL application control module continues to apply for the next CL of the current CL until the last CL corresponding to the pending IO is applied for.

3. The IO processing device according to claim 1 or 2, characterized in that: For the CL whose application fails, the CL application control module is further used to detect whether the existing waiting chain CL is continuous with the CL whose application fails; If they are continuous, the CL that failed to apply and the existing waiting chain CL are aggregated into a new waiting chain CL; If it is not continuous, a waiting IO and a waiting SGE corresponding to the existing waiting hanging chain CL are generated and put into the waiting queue. The CL whose application fails is marked as the waiting hanging chain CL.

4. The IO processing device according to claim 1 or 2, characterized in that: If the CL corresponding to the waiting IO includes the released CL and other CLs, after receiving the message that the CL corresponding to the waiting IO is released, the waiting queue management module splits the waiting IO into the waiting IO corresponding to the released CL and other IOs corresponding to other CLs, and splits the waiting SGE corresponding to the waiting IO into the waiting SGE corresponding to the released CL and other SGEs corresponding to other CLs; The split waiting IO and the split waiting SGE are put into the IO queue and the SGE queue respectively, and other IOs and other SGEs are put into the waiting queue as new waiting IO and new waiting SGE respectively.

5. The IO processing device according to claim 1 or 2, characterized in that: The IO processing device also includes: front-end and back-end IO generation modules; The front-end and back-end IO generation modules are used to read the CL information from the CL information buffer and generate corresponding front-end IO and back-end IO according to the CL information, so as to complete the task to be implemented by the to-be-processed IO through the front-end IO and the back-end IO.

6. An IO processing method, characterized in that: include: The CL application control module reads the pending IO from the IO queue and reads the pending SGE corresponding to the pending IO from the SGE queue; The CL application control module applies for CL in units of CL in sequence for the IO to be processed; If the CL application is successful, the CL application control module writes the CL information of the successful application into the CL information buffer; If the CL application fails, the CL application control module generates a waiting IO and a waiting SGE corresponding to the CL application failure, and writes them into the waiting queue; After receiving the message that the CL corresponding to the waiting IO is released, the waiting queue management module takes out the waiting IO and waiting SGE corresponding to the released CL from the waiting queue, and puts them into the IO queue and the SGE queue respectively.

7. The IO processing method according to claim 6, characterized in that: If the CL application fails, the CL application control module generates a waiting IO and a waiting SGE corresponding to the CL application failure, and writes them into the waiting queue, including: After the current CL application fails, the CL application control module continues to apply for the next CL of the current CL until the last CL corresponding to the pending IO is applied for.

8. The IO processing method according to claim 6 or 7, characterized in that: If the CL application fails, the CL application control module generates a waiting IO and a waiting SGE corresponding to the CL application failure, and writes them into the waiting queue, including: If the CL application fails, the CL application control module further detects whether the existing waiting chain CL and the CL whose application failed are continuous; If they are continuous, the CL application control module aggregates the CL whose application failed and the existing waiting chain CL into a new waiting chain CL; If not, the CL application control module generates a waiting IO and a waiting SGE corresponding to the existing waiting hanging chain CL, and puts them into the waiting queue. The CL whose application fails is marked as the waiting hanging chain CL.

9. The IO processing method according to claim 6 or 7, characterized in that: The CL corresponding to the waiting IO includes the released CL and other CLs; after the waiting queue management module receives the message that the CL corresponding to the waiting IO is released, it takes out the waiting IO and waiting SGE corresponding to the released CL from the waiting queue and puts them into the IO queue and the SGE queue respectively, including: After receiving the message that the CL corresponding to the waiting IO is released, the waiting queue management module splits the waiting IO into the waiting IO corresponding to the released CL and other IOs corresponding to other CLs, and splits the waiting SGE corresponding to the waiting IO into the waiting SGE corresponding to the released CL and other SGEs corresponding to other CLs; The waiting queue management module puts the split waiting IO and the split waiting SGE into the IO queue and the SGE queue respectively, and puts other IOs and other SGEs into the waiting queue as new waiting IO and new waiting SGE respectively.

10. The IO processing method according to claim 6 or 7, characterized in that: Also includes: The front-end and back-end IO generation modules read the CL information from the CL information buffer, and generate corresponding front-end IO and back-end IO according to the CL information, so as to complete the task to be implemented by the to-be-processed IO through the front-end IO and the back-end IO.

Citation Information

Patent Citations

  • Three-dimensional semiconductor memory devices

    CN111354731A

  • Data transmission test method and device, electronic equipment and storage medium

    CN118550771A

  • Task Backpressure and Deletion in a Multi-Flow Network Processor Architecture

    US20130125127A1

  • System and method for distributing output queue space

    US6532501B1