An I / O processing device and method
By combining the CL request control module and the waiting queue management module, the problems of repeated IO suspension and repeated SGE transfer caused by CL request failures are solved, the CL flow efficiency is improved, the AXI bus bandwidth pressure is reduced, the system performance is improved and the power consumption is reduced.
Patent Information
- Application Number
- CN202411471300.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2024-10-21
- Publication Date
- 2025-10-28
- Estimated Expiration
- 2044-10-21
AI Technical Summary
In storage I/O acceleration chips, due to CL resource limitations, CL request failures lead to repeated I/O suspensions and multiple transfers of SGE information, affecting system IOPS performance and increasing chip power consumption.
The system employs a CL request control module and a waiting queue management module to record breakpoint information of failed CL requests, skip failed CL requests, aggregate consecutive waiting CLs, avoid repeatedly handling SGE information, and re-deliver waiting IO when the CL is released.
It improves the flow efficiency of CL, reduces the bandwidth pressure on the AXI bus, improves system IOPS performance, and reduces power consumption.
Smart Images

Figure CN119396340B_ABST
Abstract
Description
Technical Field
[0001] This application belongs to the field of chip technology, and specifically relates to an I / O processing device and method. Background Technology
[0002] In storage I / O acceleration chips, due to the limitations of CL (Cache Line) resources, CL resource allocation failures are inevitable when processing foreground I / O. In such cases, the remaining unprocessed I / O needs to be added to a waiting queue, and the SGE (Short List Descriptor for Data Transfer) and frame information already moved locally should be discarded. Once the corresponding CL resource is released, the suspended I / O is removed from the waiting queue, and the SGE and frame information are re-moved before processing continues. If the same I / O experiences multiple CL allocation failures, it will be repeatedly suspended, severely impacting the system's IOPS (IOPS) performance. Furthermore, repeatedly moving SGE information also consumes bus bandwidth, increasing the chip's power consumption. Summary of the Invention
[0003] The purpose of this application is to provide an IO processing device and method, which aims to solve the problems of repeated suspension after CL application failure and multiple transfers of SGE information in related technologies.
[0004] According to a first aspect of this application, an I / O processing apparatus is provided, comprising: a CL request control module and a waiting queue management module;
[0005] The CL request control module is used to read the IO to be processed from the IO queue and the SGE to be processed corresponding to the IO to be processed from the SGE queue; and to request CLs in sequence for the IO to be processed, writing the CL information of the successfully requested CLs into the CL information buffer, and for the CLs that failed to be requested, generating the waiting IO and waiting SGE corresponding to the failed CLs and writing them into the waiting queue.
[0006] The waiting queue management module is used to, upon receiving a message that the CL corresponding to the waiting IO has been released, retrieve the waiting IO and waiting SGE corresponding to the released CL from the waiting queue and put them into the IO queue and the SGE queue, respectively.
[0007] In an optional implementation, 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 a failed CL application, the CL application control module is further configured to detect whether an existing waiting chain CL is continuous with the failed CL application;
[0009] If they are consecutive, the failed CLs will be aggregated with the existing waiting chain CLs to form a new waiting chain CL;
[0010] If they are not continuous, wait IO and wait SGE corresponding to the existing wait chain CL are generated and put into the wait queue. The CL that failed to apply is marked as wait chain CL.
[0011] In an optional implementation, if the CL corresponding to the waiting IO includes the released CL and other CLs, then after the waiting queue management module receives the message that the CL corresponding to the waiting IO is released, it 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.
[0012] The split waiting IO and the split waiting SGE are placed into the IO queue and the SGE queue, respectively. Other IOs and other SGEs are placed into the waiting queue as new waiting IOs and new waiting SGEs, respectively.
[0013] In an optional implementation, the IO processing device further includes: a front-end and a back-end IO generation module;
[0014] The front-end and back-end IO generation module is used to read the CL information from the CL information buffer and generate corresponding front-end IO and back-end IO for the CL information, so as to complete the task to be performed by the IO to be processed through the front-end IO and the back-end IO.
[0015] According to a second aspect of this application, an I / O processing method is provided, comprising:
[0016] The CL application control module reads the IO to be processed from the IO queue and the SGE to be processed corresponding to the IO to be processed from the SGE queue;
[0017] The CL request control module requests CL sequentially for the IO to be processed, in units of CL.
[0018] If the CL application is successful, the CL application control module will write the successful CL application information 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 failed CL application and writes them into the waiting queue.
[0020] After receiving the message that the CL corresponding to the waiting IO has been released, the waiting queue management module retrieves 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, if a CL request fails, the CL request control module generates a waiting IO and a waiting SGE corresponding to the failed CL request, and writes them into the 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 completed.
[0023] In an optional implementation, if a CL request fails, the CL request control module generates a waiting IO and a waiting SGE corresponding to the failed CL request, and writes them into the waiting queue, including:
[0024] If the CL application fails, the CL application control module also checks whether the existing waiting chain CLs are consecutive with the failed CL application;
[0025] If they are consecutive, the CL application control module will aggregate the failed CL applications with the existing waiting chain CLs into a new waiting chain CL;
[0026] If the chain is not continuous, the CL application control module generates waiting IO and waiting SGE corresponding to the existing waiting chain CL and puts them into the waiting queue. The CL that failed to apply is marked as a waiting chain CL.
[0027] In an optional implementation, 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 has been released, the waiting queue management module retrieves 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:
[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 places the split waiting IO and the split waiting SGE into the IO queue and the SGE queue, respectively, and other IOs and other SGEs into the waiting queue as new waiting IOs and new waiting SGEs, respectively.
[0030] In an optional implementation, the method further includes:
[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 for the CL information, so as to complete the task to be performed by the IO to be processed through the front-end IO and the back-end IO.
[0032] Compared with related technologies, the technical solution of this application has the following advantages:
[0033] 1. Skip failed CLs to avoid blocking subsequent CL processing and improve CL throughput efficiency;
[0034] 2. When releasing a conflict, any segment of the Wait_IO queue can be processed, not just sequential CL processing;
[0035] 3. The suspended Wait_IO queue records breakpoint information to avoid repeated SGE transfers and reduce AXI bus bandwidth pressure.
[0036] Other features and advantages of this application will be set forth in the description which follows, and will be apparent in part from the description, or may be learned by practicing the application. The objectives and other advantages of this application may be realized and obtained by means of the structures and processes shown in the description and the accompanying drawings. Attached Figure Description
[0037] To more clearly illustrate the technical solutions in the embodiments or related technologies of this application, the accompanying drawings used in the description of the embodiments or related technologies will be briefly introduced below. Obviously, the accompanying drawings described below are some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.
[0038] Figure 1 This is a schematic diagram illustrating the effect of the CL application process based on relevant technologies.
[0039] Figure 2 This is a schematic diagram of the structure of an IO processing apparatus according to an exemplary embodiment of this application.
[0040] Figure 3 This is a flowchart of the CL application control module processing according to an exemplary embodiment of this application.
[0041] Figure 4 This is a schematic diagram illustrating the effect of the CL application process according to an exemplary embodiment of this application.
[0042] Figure 5This is a flowchart of an IO processing method according to an exemplary embodiment of this application. Detailed Implementation
[0043] To make the objectives, technical solutions, and advantages of the embodiments of this application clearer, the technical solutions of the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this application, not all embodiments. Based on the embodiments of this application, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of this application.
[0044] See Figure 1 As shown, existing technologies have the following problems:
[0045] 1. Low CL flow efficiency. In the first round of CL allocation, because CL2 allocation failed, the potentially successful CLs (CL3-CL7) were not allocated, and only 2 CLs were processed. In the second round of CL allocation, CL3, which might have been successfully allocated in the first round, was occupied by other IO operations before the second round of allocation, causing the allocation to fail, and only 1 CL was processed. In the third round, CL5 allocation failed, and 2 CLs were processed. In the fourth round, 3 CLs were processed. In this situation, the CL flow efficiency is low, which will also reduce the system's IOPS performance.
[0046] 2. Repeated frame and SGE transfers significantly consume the bandwidth of the AXI (Advanced Extensible Interface) bus. Because frame and SGE transfers are required before any normal or suspended I / O is initiated, re-initiating suspended Wait_IO1, Wait_IO2, and Wait_IO3 necessitates repeated frame and SGE transfers. The SGE corresponding to CL2 requires two transfers, the SGEs corresponding to CL3-CL4 require three transfers, and the SGEs corresponding to CL5-CL7 require four transfers.
[0047] Based on the above analysis, this application proposes, for example, that all CLs corresponding to an IO be allocated in the first round during IO processing. If a CL allocation fails, the breakpoint information of the CL allocation failure is recorded and added to the Wait IO queue, and then the remaining CLs are allocated again until the first round of allocation is completed. After the CL resources corresponding to the waiting IO are released, the waiting IO is resubmitted, solving the following problems:
[0048] 1. When a CL request fails, only the IO information corresponding to the current CL is suspended, and then subsequent CLs are processed.
[0049] 2. When releasing a CL, any segment of CL waiting for I / O can be processed, not limited to sequential CL processing;
[0050] 3. Record the frame and SGE breakpoint information corresponding to the failed CL request (i.e., the SGE corresponding to the failed CL request). When re-executing the waiting IO, you only need to read the frame and SGE locally based on the breakpoint information, which reduces the bandwidth pressure on the AXI bus.
[0051] like Figure 2 As shown, this application exemplarily provides an I / O processing device, which mainly resolves I / O conflicts through CL request control and Wait queue management. The I / O processing device includes: a CL request control module and a Wait queue management module;
[0052] The CL request control module reads the pending IO from the IO queue and the pending SGE corresponding to the pending IO from the SGE queue; and requests CLs sequentially for the pending IO in units of CL. The information of successfully requested CLs is written into the CL information buffer. For CLs that fail to be requested, the module generates the waiting IO and waiting SGE corresponding to the failed CL and writes them into the waiting queue.
[0053] After receiving the message that the CL corresponding to the waiting IO has been released, the waiting queue management module retrieves 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 illustrate the processing procedure of the CL request control module for pending I / O. The I / O queue can include raw I / O and / or waiting I / O. Raw I / O can be I / O issued by the host, and waiting I / O can be managed by the waiting queue management module (…). Figure 2 The Wait queue management module in the middle) from the waiting queue ( Figure 2 The IO is delivered to the Wait_IO queue; the SGE queue includes original SGEs and / or waiting SGEs. Original SGEs are the SGEs corresponding to the original IOs, while waiting SGEs are the SGEs corresponding to the waiting SGEs. The processing flow of the CL request control module can be described as follows:
[0055] 1. Read pending IO (raw IO or Wait_IO) from the IO queue;
[0056] 2. Parse the IO information and read the corresponding SGE information (raw SGE or Wait_SGE) from the SGE queue according to the IO to be processed;
[0057] 3. Request CLs from the Cache management module sequentially, one CL at a time. If a CL request fails, skip it and continue with subsequent CL requests until all CL requests for pending IO are completed.
[0058] 4. If the CL allocation is successful, the corresponding CL information is written into the CL information buffer for further processing. If the CL allocation fails, the corresponding wait IO and wait SGE are regenerated based on the failed CL and added to the wait queue. The wait queue includes the wait IO queue (Wait_IO queue) and the wait SGE queue (Wait_SGE queue).
[0059] For example, Figure 2 Labels w1-w4 illustrate the processing procedure of the waiting queue management module for waiting I / O. The waiting I / O queue is a doubly linked list; if a CL (Clearing Queue) allocation fails, the corresponding waiting I / O is suspended in the Wait_IO queue, and the corresponding waiting SGE is suspended in the Wait_SGE queue.
[0060] The Wait_IO queue mainly records the Cmd information and breakpoint information including frames and SGEs, as shown in Table 1 below:
[0061] cmd LBA len sge_num sge_baseaddr sge_offset ...
[0062] Table 1
[0063] The Wait_SGE queue primarily caches the SGE information for waiting I / Os corresponding to CLs that have experienced request failures. The cmd and frame information in Table 1 above comes from pending I / Os, while the SGE-related information comes from the corresponding pending SGEs.
[0064] The processing flow of pending I / O in the waiting queue management module 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 based on the waiting IO, pop the waiting SGE and put it into the SGE queue. This can avoid repeatedly moving SGE from the AXI bus.
[0067] 3. Resubmit the waiting I / O to the I / O queue for scheduling processing.
[0068] In some alternative implementations, after the current CL allocation fails, the CL allocation control module continues to allocate the next CL of the current CL until the last CL corresponding to the pending IO is allocated.
[0069] For example, the IO to be processed can correspond to multiple CLs. The CL application control module will apply for the 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 IO to be processed, and so on, until the last CL corresponding to the IO to be processed.
[0070] In some optional implementations, for a failed CL application, the CL application control module also detects whether an existing waiting chain CL is continuous with the failed CL application;
[0071] If they are consecutive, the failed CLs will be aggregated with the existing waiting chain CLs to form a new waiting chain CL;
[0072] If they are not continuous, wait IO and wait SGE corresponding to the existing wait chain CL are generated and put into the wait queue. The CL that failed to apply is marked as wait chain CL.
[0073] As mentioned above, for a failed CL application, the CL application control module will add the corresponding waiting IO and waiting SGE to the waiting queue. For example, to reduce the number of waiting IOs, conserve hardware resources, and shorten processing time, when the CL application control module encounters a failed CL, if this CL is the first failed CL, it will temporarily not generate the corresponding waiting IO and waiting SGE, but will continue to apply for the next CL; this first failed CL can be marked as a pending chain CL; if this CL is not the first failed CL, the CL application control module will check whether the previously failed CL (i.e., the existing pending chain CL) is consecutive to the currently failed CL. It can be understood that two consecutive CLs can be understood as two CLs with consecutive addresses.
[0074] If they are not consecutive, the existing CLs waiting to be attached to the chain can perform the chain attachment process, that is, generate the corresponding waiting IO and waiting SGE, and put them into the waiting queue; if the currently failed CL is not the last CL, the currently failed CL is marked as a CL waiting to be attached to the chain and is not processed temporarily; if the currently failed CL is the last CL, the chain attachment operation is also performed on the currently failed CL.
[0075] If the chain is continuous and the currently failed CL application is not the last CL, then the corresponding waiting IO and waiting SGE will not be generated for the time being. Instead, the existing chain CLs to be attached and the currently failed CL applications will be aggregated into a new chain CL to be attached, and the next CL application will continue. If the currently failed CL application is the last CL, then the chain attachment operation will be performed on the new chain CL to be attached.
[0076] like Figure 3 As shown, the exemplary process of the CL request control module requesting a 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. Request CLs from the Cache management module in units of CLs. If the request is successful, proceed to step 3; if the request fails, proceed to step 4.
[0079] 3. Write the successful CL application information into the CL information buffer;
[0080] 4. Check if the failed CL request is consecutive to the previous failed CL request, and aggregate consecutive CL requests into a larger waiting IO and add them to the waiting queue (Wait_IO queue) and SGE queue (Wait_SGE queue), thereby reducing the number of Wait IO requests, saving hardware resources, and shortening processing time; if they are not consecutive, add them directly to the waiting queue and SGE queue.
[0081] 5. Regardless of success or failure, the CL allocation is completed in the first round. If the last CL allocation is completed, the next pending IO is read. If it is not the last CL, return to step 1 to continue allocation. This speeds up CL flow and shortens processing time.
[0082] In some optional implementations, if the CL corresponding to the waiting IO includes the released CL and other CLs, then after the waiting queue management module receives the message that the CL corresponding to the waiting IO is released, it 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 placed into the IO queue and the SGE queue, respectively. Other IOs and other SGEs are placed into the waiting queue as new waiting IOs and new waiting SGEs, respectively.
[0084] For example, as described above, a waiting I / O may correspond to multiple CLs. If the cache management module has only released some of these CLs, the waiting I / O can be split into the waiting I / Os corresponding to the released portion of the CLs and other I / Os corresponding to other CLs. Thus, the waiting I / Os corresponding to the released portion of the CLs can be submitted to the I / O queue for scheduling, while the other I / Os remain 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 modules read the CL information from the CL information buffer and generate corresponding front-end IO and back-end IO for the CL information, so as to complete the task to be performed by the IO to be processed through the front-end IO and the back-end IO.
[0087] For example, such as Figure 2 As shown in reference numeral g5, the front-end and back-end I / O generation modules (FIO & BIO generation modules) read CL information from the CL information buffer, and then generate front-end I / O (FIO) and back-end I / O (BIO) based on the specific scenario, i.e., whether the original I / O to be processed is a read command or a write command. These modules respectively complete data movement between the host and the cache, and data movement between the storage medium and the cache. Specifically, front-end I / O is used for data movement from the host to on-chip and from on-chip to the host, while back-end I / O is used for data movement between on-chip and off-chip storage media.
[0088] like Figure 4 As shown, comparison Figure 1 In terms of processing, this application only used two rounds to process the original IO. The first round processed 5 CLs, and the second round processed 3 CLs. CL2 and CL3, which failed to be allocated, were aggregated into one IO1 and suspended. The suspended IO1 contained 2 CLs, and the suspended IO2 contained one CL. The suspended IO breakpoint information in the Wait_IO queue recorded the information needed to re-execute the suspended IO, so there was no need to repeatedly move frames and SGEs.
[0089] Compared to related technologies that suspend processing when encountering conflicts, this method neither blocks subsequent CL processing nor requires discarding already moved SGEs. It responds quickly after the conflict is resolved, reducing the access bandwidth of the AXI bus.
[0090] The solution proposed in this application can achieve the following beneficial effects:
[0091] 1. Skip failed CLs to avoid blocking subsequent CL processing and improve CL throughput efficiency;
[0092] 2. When releasing a conflict, any segment of the Wait_IO queue can be processed, not just sequential CL processing;
[0093] 3. The suspended Wait_IO queue records breakpoint information to avoid repeated SGE transfers and reduce AXI bus bandwidth pressure.
[0094] Accordingly, such as Figure 5 As shown, this application provides an I / O processing method in a second aspect, comprising:
[0095] In S501, the CL request control module reads the IO to be processed from the IO queue and the SGE to be processed corresponding to the IO to be processed from the SGE queue;
[0096] In S502, the CL request control module requests CL sequentially in units of CL for the IO to be processed;
[0097] In S503, if the CL application is successful, the CL application control module writes the successful CL application information 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 failed CL application and writes them into the waiting queue.
[0099] In S505, after the waiting queue management module receives the message that the CL corresponding to the waiting IO has been 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.
[0100] In an optional implementation, if a CL request fails, the CL request control module generates a waiting IO and a waiting SGE corresponding to the failed CL request, and writes them into the 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 completed.
[0102] In an optional implementation, if a CL request fails, the CL request control module generates a waiting IO and a waiting SGE corresponding to the failed CL request, and writes them into the waiting queue, including:
[0103] If the CL application fails, the CL application control module also checks whether the existing waiting chain CLs are consecutive with the failed CL application;
[0104] If they are consecutive, the CL application control module will aggregate the failed CL applications with the existing waiting chain CLs into a new waiting chain CL;
[0105] If the chain is not continuous, the CL application control module generates waiting IO and waiting SGE corresponding to the existing waiting chain CL and puts them into the waiting queue. The CL that failed to apply is marked as a waiting chain CL.
[0106] In an optional implementation, 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 has been released, the waiting queue management module retrieves 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:
[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 places the split waiting IO and the split waiting SGE into the IO queue and the SGE queue, respectively, and other IOs and other SGEs into the waiting queue as new waiting IOs and new waiting SGEs, respectively.
[0109] In an optional implementation, the method further includes:
[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 for the CL information, so as to complete the task to be performed by the IO to be processed through the front-end IO and the back-end IO.
[0111] The above-mentioned device can be implemented by the IO processing device provided in the above embodiments. For specific implementation methods, please refer to the description of the IO processing device in the above embodiments, which will not be repeated here.
[0112] It is understood that the circuit structures, names, and parameters described in the above embodiments are merely examples. Those skilled in the art can also make readily conceived combinations and adjustments to the structural features of the above embodiments according to their needs, and the concept of this application should not be limited to the specific details of the above examples.
[0113] Although this application has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that modifications can still be made to the technical solutions described in the foregoing embodiments, or equivalent substitutions can be made to some of the technical features; 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 this application.
Claims
1. An I / O processing device, characterized in that, include: CL application control module and waiting queue management module; The CL request control module is used to read the IO to be processed from the IO queue and the SGE to be processed corresponding to the IO to be processed from the SGE queue; and to request CLs in sequence for the IO to be processed, writing the CL information of the successfully requested CLs into the CL information buffer, and for the CLs that failed to be requested, generating the waiting IO and waiting SGE corresponding to the failed CLs and writing them into the waiting queue. The waiting queue management module is used to, upon receiving a message that the CL corresponding to the waiting IO has been released, retrieve the waiting IO and waiting SGE corresponding to the released CL from the waiting queue and put them into the IO queue and the SGE queue, respectively.
2. The I / O 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 completed.
3. The I / O processing apparatus according to claim 1 or 2, characterized in that, For a failed CL application, the CL application control module is also used to detect whether an existing waiting chain CL is continuous with the failed CL application; If they are consecutive, the failed CLs will be aggregated with the existing waiting chain CLs to form a new waiting chain CL; If they are not continuous, wait IO and wait SGE corresponding to the existing wait chain CL are generated and put into the wait queue. The CL that failed to apply is marked as wait chain CL.
4. The I / O processing apparatus according to claim 1 or 2, characterized in that, If the CL corresponding to the waiting IO includes the released CL and other CLs, then after the waiting queue management module receives the message that the CL corresponding to the waiting IO is released, it 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 placed into the IO queue and the SGE queue, respectively. Other IOs and other SGEs are placed into the waiting queue as new waiting IOs and new waiting SGEs, respectively.
5. The I / O processing apparatus according to claim 1 or 2, characterized in that, The IO processing device further includes: a front-end and a back-end IO generation module; The front-end and back-end IO generation module is used to read the CL information from the CL information buffer and generate corresponding front-end IO and back-end IO for the CL information, so as to complete the task to be performed by the IO to be processed through the front-end IO and the back-end IO.
6. An I / O processing method, characterized in that, include: The CL application control module reads the IO to be processed from the IO queue and the SGE to be processed corresponding to the IO to be processed from the SGE queue; The CL request control module requests CL sequentially for the IO to be processed, in units of CL. If the CL application is successful, the CL application control module will write the successful CL application information 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 failed CL application and writes them into the waiting queue. After receiving the message that the CL corresponding to the waiting IO has been released, the waiting queue management module retrieves 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 I / O processing method according to claim 6, characterized in that, If a CL request fails, the CL request control module generates a waiting IO and a waiting SGE corresponding to the failed CL request 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 completed.
8. The IO processing method according to claim 6 or 7, characterized in that, If a CL request fails, the CL request control module generates a waiting IO and a waiting SGE corresponding to the failed CL request and writes them into the waiting queue, including: If the CL application fails, the CL application control module also checks whether the existing waiting chain CLs are consecutive with the failed CL application; If they are consecutive, the CL application control module will aggregate the failed CL applications with the existing waiting chain CLs into a new waiting chain CL; If the chain is not continuous, the CL application control module generates waiting IO and waiting SGE corresponding to the existing waiting chain CL and puts them into the waiting queue. The CL that failed to apply is marked as a waiting chain CL.
9. The IO processing method according to claim 6 or 7, characterized in that, The waiting IO queues include released IO queues and other IO queues; after receiving a message that the waiting IO queues are released, the waiting queue management module retrieves the waiting IO queues and waiting SGE queues corresponding to the released IO queues from the waiting queues, and places 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 places the split waiting IO and the split waiting SGE into the IO queue and the SGE queue, respectively, and other IOs and other SGEs into the waiting queue as new waiting IOs and new waiting SGEs, 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 for the CL information, so as to complete the task to be performed by the IO to be processed 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