Shared cache recovery system
The shared cache recycling system uniformly manages idle and data cache units and uses linked list pointers for dynamic conversion, which solves the problem of resource waste in traditional solutions and achieves efficient resource utilization and simplified management.
Patent Information
- Application Number
- CN202510840265.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-06-20
- Publication Date
- 2025-09-16
AI Technical Summary
In traditional data cache management solutions, the separate management of idle cache units and data cache units leads to resource waste and excessive system resource usage.
A shared cache recycling system is adopted, and the free list and data list are unified into the same list structure framework through the shared cache management module. The list pointer is used for dynamic conversion to achieve unified management of free and data cache units, reducing resource occupation and idleness.
It significantly reduces system resource usage, avoids idle resource waste, and simplifies data structure management and recycling processes.
Smart Images

Figure CN120658764A_ABST
Abstract
Description
Technical Field
[0001] The present application relates to data shared cache technology, and in particular to a shared cache recycling system. Background Art
[0002] In traditional data cache management solutions, the system typically uses a separate, structured resource management mechanism to handle the caching needs of network packets. Traditional solutions typically use a first-in-first-out queue (FIFO) to manage free cache units, while data cache units are typically managed using descriptors in the form of a linked list. This separate management of free and data cache units requires the system to simultaneously maintain and manage two independent data structures: a FIFO queue for free cache units and a descriptor linked list for data cache units. After a data cache unit is recycled into the free linked list, its descriptors used for packet caching become idle, which not only consumes more resources but also results in resource waste. Summary of the Invention
[0003] The present application provides a shared cache recycling system that can reduce resource occupation and improve resource utilization.
[0004] A shared cache recycling system, comprising: A shared cache management module includes a storage unit to be reclaimed, a cache management unit, a data linked list, and a free linked list, wherein the data linked list includes at least one data cache unit and a data information unit corresponding to the data cache unit in a one-to-one manner, and the free linked list includes multiple free cache units and free information units corresponding to each free cache unit in a one-to-one manner; wherein the information unit of each cache unit includes a linked list pointer with the address of the next cache unit in the same linked list written therein, so as to link the cache units under the same linked list; a port receiving module connected to the shared cache management module, configured to, in each round of data receiving process, after a data packet is written into the data cache unit of the data linked list and it is determined that the data packet does not need to be discarded, if the free cache unit for the cache of the next round of data receiving process is applied for from the free linked list, write the address of the head-end data cache unit in the data linked list into the to-be-sent queue of the port sending module; The port sending module is connected to the shared cache management module and is used to determine the data linked list where the data packet is located according to the address of the head-end data cache unit, send the data packet in the data linked list, and write the address of the head-end data cache unit into the storage unit to be recycled after the sending is completed; The cache management unit is used to read the address of the head-end data cache unit in the storage unit to be reclaimed, and write it into the linked list pointer of the free information unit corresponding to the end free cache unit in the free linked list, so as to link the head-end data cache unit of the data linked list to the end free cache unit of the free linked list to obtain the new free linked list.
[0005] In one embodiment, the cache management unit is also used to, after reading the address of the head-end data cache unit in the storage unit to be recycled, write the address of the head-end data cache unit into the linked list pointer of the idle information unit corresponding to the end idle cache unit in the free linked list if the number of times the port sending module sends the data packet reaches the target sending number, so as to link the head-end data cache unit of the data linked list to the end idle cache unit of the free linked list to obtain the new free linked list.
[0006] In one embodiment, the port receiving module is further configured to, in each round of data receiving process, after the data packet is written into the data linked list and it is determined that the data packet in the data linked list does not need to be discarded, if the free cache unit for caching the next round of data receiving process is applied for from the free linked list, write the number of pending transmissions into the head-end information unit corresponding to the head-end data cache unit in the data linked list; The cache management unit is further configured to obtain the number of pending transmissions in the corresponding head-end information unit according to the address of the head-end data cache unit. If the number of pending transmissions is equal to 1, it is determined that the number of times the port sending module sends the data packet reaches the target number of transmissions.
[0007] In one embodiment, the cache management unit is also used to reduce the number of pending transmissions in the head-end information unit by 1 if the obtained number of pending transmissions is greater than 1, so as to update the number of pending transmissions, until the port sending module completes the next transmission of the data packet in the data linked list, and the updated number of pending transmissions obtained by the cache management unit is equal to 1, then it is determined that the number of times the port sending module sends the data packet reaches the target number of transmissions.
[0008] In one embodiment, the cache management unit includes a free table tail pointer storing the address of the end free cache unit in the free linked list, and the cache management unit is further used to determine the free information unit corresponding to the end free cache unit according to the free table tail pointer.
[0009] In one embodiment, the port receiving module is further configured to, in each round of data receiving process, after the data packet is written into the data linked list and it is determined that the data packet in the data linked list does not need to be discarded, if the free cache unit for caching the next round of data receiving process is applied for from the free linked list, write a linked list end flag into the end information unit corresponding to the end data cache unit in the data linked list; The port sending module is further configured to determine the address of the end data cache unit according to the tail flag of the linked list, and write the address of the end data cache unit into the storage unit to be recycled after the data packet is sent. The cache management unit is also used to read the address of the end data cache unit, and after writing the address of the head end data cache unit into the linked list pointer of the idle information unit corresponding to the end idle cache unit, update the address in the idle list tail pointer to the address of the end data cache unit.
[0010] In one embodiment, the port receiving module is further configured to, in each round of data receiving process, after the data packet is written into the data linked list and it is determined that the data packet in the data linked list does not need to be discarded, if the free cache unit for caching the next round of data receiving process is applied for from the free linked list, write the valid data length of the data packet into the end information unit corresponding to the end data cache unit in the data linked list; The data packet in the data linked list includes at least one data fragment, and each data fragment is stored in each data cache unit of the data linked list in a one-to-one correspondence; the port sending module is also used to read the information in the information unit corresponding to each data cache unit in sequence if it is determined that the data packet in the data linked list does not need to be discarded, and send the data fragments in each data cache unit in sequence until the valid data length is read and the length of the data fragment sent reaches the valid data length, then determining that the data packet has been sent.
[0011] In one embodiment, the port sending module is also used to read the information in the information unit corresponding to each data cache unit in sequence if it is determined that the data packet in the data linked list needs to be discarded, until the end flag of the linked list is read, and then write the address of the head data cache unit and the address of the end data cache unit into the storage unit to be recycled.
[0012] In one embodiment, the shared cache management module further includes a plurality of cache pools, each of which corresponds to a corresponding number of free cache units in the free linked list; wherein the types of the cache pools include a global cache pool and a dedicated cache pool; The cache management unit is further configured to determine a usage amount of the free cache unit corresponding to the target cache pool according to the processing priority of the data packet, and select, based on the usage amount, to access the free cache unit corresponding to the global cache pool or the free cache unit corresponding to the dedicated cache pool for the port receiving module to use for data reception, and update the usage amount of the accessed cache pool; wherein the target cache pool includes at least one of the global cache pool and the dedicated cache pool; The port sending module is further used for: Determining the processing priority according to the to-be-sent queue with the address written therein; Counting the data cache units in the data linked list to obtain the number of nodes; After the data packets in the data linked list are sent, the processing priority and the number of nodes are written into the storage unit to be recycled; The cache management unit is further configured to read the processing priority and the number of nodes, determine the corresponding cache pool according to the processing priority, and reduce usage of the corresponding cache pool according to the number of nodes.
[0013] In one embodiment, if the port receiving module writes the address of the head-end data cache unit, the address of the end data cache unit, the processing priority of the data packet, and the number of nodes of the data cache unit in the data linked list into the storage unit to be recycled, the cache management unit is further configured to: Reading the address of the head-end data cache unit in the storage unit to be reclaimed, and writing the address into the linked list pointer of the free information unit corresponding to the end free cache unit in the free linked list, so as to link the head-end data cache unit of the data linked list to the end free cache unit of the free linked list, thereby obtaining a new free linked list; Reading the address of the end data cache unit, and updating the address in the free list tail pointer to the address of the end data cache unit; The processing priority and the number of nodes are read, and the corresponding buffer pool is determined according to the processing priority, and the usage of the corresponding buffer pool is reduced according to the number of nodes.
[0014] The above-mentioned structure of information storage unit and linked list pointer makes the idle linked list and data linked list have a unified linked list structure framework. All cache units and their accompanying information units are structurally homogeneous, but are organized in different logical linked lists through linked list pointers. When the port receiving module completes data packet reception and caching, and completes sending through the port sending module, it only needs to be dynamically converted through linked list pointer operation to achieve recycling. This method makes the system no longer require two cache management units with different logic or structure due to the maintenance of "idle" and "data", which significantly reduces system resource usage, avoids idle resource waste, and simplifies data structure management and recycling processes. BRIEF DESCRIPTION OF THE DRAWINGS
[0015] Figure 1 This is a structural block diagram of a shared cache recycling system according to an embodiment of the present application; Figure 2 A schematic diagram of the structure of a free linked list and a data linked list according to an embodiment of the present application; Figure 3 A schematic diagram of the structure of a free linked list and a data linked list according to another embodiment of the present application; Figure 4 A schematic diagram of the structure of a free linked list and a data linked list according to another embodiment of the present application; Figure 5 This is a workflow diagram of a port sending module according to an embodiment of the present application; Figure 6 This is a flowchart of the cache management unit according to an embodiment of the present application. DETAILED DESCRIPTION
[0016] It should be understood that the specific embodiments described herein are only used to explain the present application and are not intended to limit the present application.
[0017] The following will be combined with the drawings in the embodiments of this application to clearly and completely describe the technical solutions in the embodiments of this application. Obviously, the embodiments described are only part of the embodiments of this application, not all of the embodiments. Based on the embodiments in this application, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of this application.
[0018] It should be noted that all directional indications in the embodiments of the present application (such as up, down, left, right, front, back, etc.) are only used to explain the relative position relationship, movement status, etc. between the components under a certain specific posture (as shown in the accompanying drawings). If the specific posture changes, the directional indication will also change accordingly. The connection can be a direct connection or an indirect connection.
[0019] In addition, the descriptions of "first", "second", etc. in this application are for descriptive purposes only and should not be understood as indicating or implying their relative importance or implicitly indicating the number of the technical features indicated. Therefore, the features defined as "first" or "second" may explicitly or implicitly include at least one of such features. In addition, the technical solutions between the various embodiments can be combined with each other, but this must be based on the fact that they can be implemented by ordinary technicians in this field. When the combination of technical solutions is contradictory or cannot be implemented, it should be deemed that such combination of technical solutions does not exist and is not within the scope of protection required by this application.
[0020] Figure 1 FIG. 1 is a structural block diagram of a shared cache recycling system according to an embodiment of the present invention. Figure 1 As shown, the shared cache recycling system includes a shared cache management module 110, a port receiving module 120 and a port sending module 130; wherein the shared cache management module 110 includes a storage unit to be recycled 111, a cache management unit 112, a data linked list 113 and a free linked list 114, wherein the data linked list 113 includes at least one data cache unit and a data information unit corresponding to the data cache unit one by one, and the free linked list 114 includes multiple free cache units and free information units corresponding to each free cache unit one by one; wherein the information unit of each cache unit includes a linked list pointer with the address of the next cache unit in the same linked list written therein to link the cache units under the same linked list; the port receiving module 120 is connected to the shared cache management module 110 and is used for, in each round of data receiving process, after a data packet is written into the data cache unit of the data linked list 113 and it is determined that the data packet does not need to be discarded, If a free cache unit for caching the next round of data receiving process is applied for from the free list 114, the address of the head-end data cache unit in the data list 113 is written into the to-be-sent queue of the port sending module 130; the port sending module 130 is connected to the shared cache management module 110, and is used to determine the data list 113 where the data packet is located according to the address of the head-end data cache unit, send the data packet in the data list 113, and write the address of the head-end data cache unit into the to-be-reclaimed storage unit 111 after the sending is completed; the cache management unit 112 is used to read the address of the head-end data cache unit in the to-be-reclaimed storage unit 111, and write it into the linked list pointer of the free information unit corresponding to the end free cache unit in the free list 114, so as to link the head-end data cache unit of the data list 113 to the end free cache unit of the free list 114 to obtain a new free list 114.
[0021] It can be understood that the free list 114 is formed by linking the currently unused free cache units, and the data list 113 is formed by linking the data cache units that currently store data packets. When the data packet is cached, the free cache unit is selected from the free list 114 as the data cache unit, and then the data is written. When the data packet is large and a single free cache unit cannot be completely written, a chain structure is used to take out multiple free cache units in turn, and the data packet is written together through fragmented storage to form a data linked list 113 composed of multiple data cache units. Due to the linking effect of the linked list pointer, the arrangement order of each data fragment in each data cache unit is consistent with the data packet, ensuring the continuity of the data packet.
[0022] Each cache unit in the free list 114 and the data list 113 corresponds to an information unit, and the information unit has the same address as the corresponding cache unit. Figure 2 As shown in the figure, for any linked list, the cache unit with address 1 corresponds to the information unit with address 1, and the cache unit with address n corresponds to the information unit with address n. The corresponding information cache unit is provided with a linked list pointer, which has the address of the next cache unit, thereby connecting the cache units under the same linked list in series. For example, Figure 3 As shown, for the free linked list 114, by using the linked list pointer to write the address of the next free cache unit in the free information unit, the free cache unit with address 0 (the linked list pointer points to address 1), the free cache unit with address 1 (the linked list pointer points to address 4), the free cache unit with address 4 (the linked list pointer points to address 5), the free cache unit with address 5 (the linked list pointer points to address 8) ... can be sequentially connected; similarly, for the data linked list 113, by using the linked list pointer to write the address of the next data cache unit in the data information unit, the data cache unit with address 2 (the linked list pointer points to address 6), the data cache unit with address 6 (the linked list pointer points to address 10), the data cache unit with address 10 (the linked list pointer points to address 14), the data cache unit with address 14 ... can be sequentially connected; wherein, according to the number of data packets, the data linked list 113 may include multiple, Figure 3 For example, there may also be a data linked list consisting of a data cache unit at address 17, a data cache unit at address 16, a data cache unit at address 12, and so on. Since only one shared, multi-purpose pointer is embedded in the cache unit design and a unified linked list pointer mechanism is adopted, the simultaneous management of idle cache units and data cache units is achieved, which not only reduces resource usage but also eliminates the redundancy and idle waste of pointer resources.
[0023] The port receiving module 120 is responsible for receiving and caching data packets. A round of data receiving represents the reception and caching of one data packet. The port receiving module 120 has a filtering function, detecting whether a received data packet meets the caching requirements. If so, it determines that the data packet does not need to be discarded; otherwise, it determines that the data packet needs to be discarded. In each round of data receiving, after a data packet is completely written to the data linked list 113 and it is determined that the data packet in the data linked list 113 does not need to be discarded, the port receiving module 120 will request a free cache unit for caching in the next round of data receiving. If a free cache unit is successfully requested, it indicates that the next round of data receiving can proceed smoothly. Therefore, the data packet is determined to be transmittable via the port sending module 130. At this point, the address of the head-end data cache unit in the data linked list 113 is written to the port sending module 130's to-be-sent queue. The head-end data cache unit is the data cache unit in the data linked list 113 that stores the first data fragment. In some embodiments, the port receiving module 120 may include multiple receiving ports to achieve parallel reception of multiple data packets; the port sending module 130 may also include multiple sending ports to achieve parallel transmission of multiple data packets.
[0024] The pending-reclaim storage unit 111 is used to store the addresses of cache units that are about to be reclaimed. When a data packet is successfully transmitted, its corresponding cache unit address is written to this unit, awaiting subsequent reclaim operations. The port sending module 130 can find the corresponding data packet based on the cache unit address of the head-end data in the pending-transmission queue and transmit it. After transmission is completed, the address of the cache unit of the head-end data is written to the pending-reclaim storage unit 111, indicating that the data linked list 113 has been sent and can be recycled.
[0025] The cache management unit 112 is used to read the address of the head-end data cache unit in the storage unit 111 to be recycled, thereby starting to recycle the data linked list 113. The specific method is: write the address of the read head-end data cache unit into the linked list pointer of the free information unit corresponding to the end free cache unit in the free linked list 114, thereby linking the data linked list 113 to be recycled to the end of the free linked list 114 to form a new free linked list 114.
[0026] In this way, through the structure of the information storage unit and the linked list pointer, the idle linked list 114 and the data linked list 113 have a unified linked list structure framework. All cache units and their accompanying information units are structurally homogeneous, but are organized in different logical linked lists through linked list pointers. When the port receiving module 120 completes the reception and caching of data packets and completes the sending through the port sending module 130, it only needs to be dynamically converted through the linked list pointer operation to achieve recycling. This method makes the system no longer need two cache management units 112 with different logics or structures due to the maintenance of "idle" and "data", which significantly reduces the system resource usage, avoids idle resource waste, and simplifies the data structure management and recycling process.
[0027] In one embodiment, the cache management unit 112 is also used to write the address of the head-end data cache unit into the linked list pointer of the idle information unit corresponding to the end idle cache unit in the free list 114 after reading the address of the head-end data cache unit in the storage unit to be recycled 111, if the port sending module 130 completes the sending of data packets and reaches the target sending number of times, so as to link the head-end data cache unit of the data linked list 113 to the end idle cache unit of the free linked list 114 to obtain a new free linked list 114.
[0028] It is understood that in scenarios where a data packet needs to be sent to multiple destinations, the cache management unit 112 must complete all data packet sending tasks before reclaiming the data linked list 113. Therefore, after reading the address of the head-end data cache unit in the to-be-reclaimed storage unit 111, the cache management unit 112 must also determine whether the number of times the port sending module 130 has completed sending the data packet has reached the target number of times. If so, it indicates that the data packet has completed all sending tasks. At this point, the linked list pointer is used to link the data linked list 113 to be reclaimed to the end of the free linked list 114. Since the port sending module 130 writes the address of the head-end data cache unit to the to-be-reclaimed storage unit 111 after completing data packet sending, in some embodiments, the cache management unit 112 can determine the number of times the port sending module 130 has completed sending the data packet based on the number of times the address of the head-end data cache unit is read from the to-be-reclaimed storage unit 111.
[0029] In one embodiment, the port receiving module 120 is also used to, in each round of data receiving process, after the data packet is written into the data linked list 113 and it is determined that the data packet in the data linked list 113 does not need to be discarded, if a free cache unit for the cache of the next round of data receiving process is applied for from the free linked list 114, then the number of pending transmissions is written into the head-end information unit corresponding to the head-end data cache unit in the data linked list 113; the cache management unit 112 is also used to obtain the number of pending transmissions in the corresponding head-end information unit according to the address of the head-end data cache unit, and if the number of pending transmissions is equal to 1, it is determined that the number of times the port sending module 130 sends the data packet reaches the target number of transmissions.
[0030] It can be understood that in each round of data reception, after a data packet is written into the data linked list 113 and the port receiving module 120 determines that the data packet in the data linked list 113 does not need to be discarded, if a free cache unit for the next round of data reception is requested from the free linked list 114, it indicates that the data packet can be sent through the port sending module 130. At this time, the number of pending transmissions can also be written into the head-end information unit corresponding to the head-end data cache unit in the data linked list 113. After the port sending module 130 completes data transmission and writes the address of the head-end data cache unit into the to-be-reclaimed storage unit 111, the cache management unit 112 reads the address of the head-end data cache unit, thereby locating the head-end data cache unit and further obtaining the number of pending transmissions in the corresponding head-end information unit. If the number of pending transmissions is equal to 1, it indicates that this is the last transmission of the data packet and that the data packet has completed all transmission tasks. Therefore, it can be determined that the number of times the port sending module 130 has sent the data packet has reached the target number of transmissions.
[0031] In one embodiment, the cache management unit 112 is also used to reduce the number of pending transmissions in the head-end information unit by 1 if the obtained number of pending transmissions is greater than 1, so as to update the number of pending transmissions, until the port sending module 130 completes the next transmission of the data packet in the data linked list 113, and the updated number of pending transmissions obtained by the cache management unit 112 is equal to 1, then it is determined that the number of times the port sending module 130 sends the data packet reaches the target number of transmissions.
[0032] It can be understood that if the number of times to be sent obtained by the cache management unit 112 is greater than 1, it indicates that the data packet has not completed all sending tasks. Since the data packet has been sent once, the number of times to be sent in the head-end information unit can be reduced by 1. The new number of times to be sent after reduction is the number of times the data packet needs to be sent. The port sending module 130 will write the address of the head-end data cache unit in the to-be-recovered storage unit 111 after each completion of the sending of the data packet. Then, the cache management unit 112 will obtain the new number of times to be sent according to the address of the head-end data cache unit, and then continue to judge the relationship between the number of times to be sent and 1. If the number of times to be sent is still greater than 1, continue the above-mentioned step of reducing the number of times to be sent by 1. If the number of times to be sent is still equal to 1, it indicates that the data packet has completed all sending tasks. At this time, it can be determined that the number of times the port sending module 130 sends the data packet has reached the target sending number.
[0033] In this way, by presetting the number of pending transmissions in the receiving stage, it is only necessary to decrement the number of pending transmissions each time the port sending module 130 completes the transmission until the number of pending transmissions drops to 1, so as to confirm whether the data packet has completed all the sending tasks. Compared with the traditional method that requires polling or receiving the interrupt notification of the port sending module 130 to confirm the sending completion status of the data packet, this embodiment uses the writing of preset parameters and the decrement mechanism, and only requires one read operation to determine whether the sending is completed, thereby reducing the number of bus accesses, reducing system power consumption and delay, and the advantages are significant especially in high-throughput scenarios.
[0034] In one embodiment, the cache management unit 112 includes a free list tail pointer storing the address of the end free cache unit in the free list 114. The cache management unit 112 is further configured to determine the free information unit corresponding to the end free cache unit according to the free list tail pointer.
[0035] It can be understood that the free list tail pointer can be a dedicated register stored in the cache management unit 112, which is used to store the address of the end free cache unit in the free list 114, thereby pointing to the last node of the free list 114. In this way, the cache management unit 112 can first determine the free information unit corresponding to the end free cache unit based on the free list tail pointer, and then write the address of the head end data cache unit into the linked list pointer of the free information unit corresponding to the end free cache unit. This method does not need to traverse the entire free list 114, but only needs to maintain the free list tail pointer, thereby achieving end access with zero time complexity.
[0036] In one embodiment, the port receiving module 120 is also used to, in each round of data receiving process, after the data packet is written into the data linked list 113 and it is determined that the data packet in the data linked list 113 does not need to be discarded, if a free cache unit for the cache of the next round of data receiving process is applied for from the free linked list 114, then the end information unit corresponding to the end data cache unit in the data linked list 113 is written into the end list tail flag; the port sending module 130 is also used to determine the address of the end data cache unit according to the end list tail flag, and write the address of the end data cache unit into the to-be-reclaimed storage unit 111 after the data packet is sent; the cache management unit 112 is also used to read the address of the end data cache unit, and after writing the address of the head end data cache unit into the linked list pointer of the free information unit corresponding to the end free cache unit, update the address in the free list tail pointer to the address of the end data cache unit.
[0037] It can be understood that when the received data packet meets the sending requirements, the port receiving module 120 also writes the end of the linked list mark into the end information unit corresponding to the end data buffer unit in the data linked list 113 to mark this data buffer unit as the end point of the current data linked list 113; the port sending module 130 scans each data information unit and sends data fragments one by one according to the linked list pointer in the data information unit, thereby realizing data packet sending. When the end of the linked list mark is scanned, it indicates that the current information unit is the end information unit corresponding to the end data buffer unit, and then the corresponding end data is sent after the data packet is sent. The address of the cache unit is written into the storage unit to be recycled 111 for the cache management unit 112 to read the information; after the cache management unit 112 writes the address of the head data cache unit into the linked list pointer of the free information unit corresponding to the end free cache unit, it also updates the address in the free list tail pointer to the address of the end data cache unit, so that the end data cache unit becomes the end free cache unit of the new free list 114, and points to the end free cache unit for the next round of data receiving process, and links the head data cache unit of the data linked list 113 to the end free cache unit of the free linked list 114. The free linked list 114 updated according to the above method can be referred to Figure 4 shown.
[0038] Since the data cache unit where port sending module 130 completes data packet transmission is the terminal data cache unit, setting the end-of-list flag in the terminal information unit allows port sending module 130 to promptly read the end-of-list flag when completing data packet transmission and thereby obtain the address of the corresponding terminal data cache unit. Furthermore, by updating the free list tail pointer, which contains the address of the terminal free unit in the original free list 114, each time a new free list 114 is formed, so that it points to the end of the new free list 114, it facilitates continuous recycling of linked lists.
[0039] In one embodiment, the port receiving module 120 is further configured to, in each round of data receiving process, after a data packet is written into the data linked list 113 and it is determined that the data packet in the data linked list 113 does not need to be discarded, if a free cache unit for the cache of the next round of data receiving process is requested from the free linked list 114, then the valid data length of the data packet is written into the terminal information unit corresponding to the terminal data cache unit in the data linked list 113; the data packet in the data linked list 113 includes at least one data fragment, and each data fragment is stored in each data cache unit of the data linked list 113 in a one-to-one correspondence; the port sending module 130 is further configured to, if it is determined that the data packet in the data linked list 113 does not need to be discarded, read the information in the information unit corresponding to each data cache unit in sequence, and send the data fragments in each data cache unit in sequence until the valid data length is read and the length of the sent data fragment reaches the valid data length, then determining that the data packet has been sent.
[0040] It can be understood that when the port receiving module 120 determines that the data packet meets the sending requirements, it also writes the effective data length of the data packet into the terminal information unit corresponding to the terminal data cache unit in the data linked list 113. The effective data length of the data packet is equal to the data length of all data fragments of the data packet added together. In addition to the port receiving module 120, the port sending module 130 also needs to determine whether the data packet needs to be discarded. If it is determined that it does not need to be discarded, the information in the information unit corresponding to each data cache unit is read in sequence according to the guidance of the linked list pointer in the data linked list 113, and the data fragments in each data cache unit are sent in sequence until the effective data length is read. At the same time, if the length of the sent data fragment reaches the effective data length, it indicates that all data fragments in the data packet have been sent.
[0041] In this way, by writing the valid data length into the terminal information unit corresponding to the terminal data cache unit during the receiving stage, the port sending module 130 only needs to measure the length of the data sent during data sending, and then compare it with the valid data length to determine whether the data packet has been sent. The method is simple and solves the integrity verification problem when the data packet is transmitted in fragments.
[0042] In one embodiment, if it is determined that the data packet in the data linked list 113 needs to be discarded, the port sending module 130 is also used to read the information in the information unit corresponding to each data cache unit in sequence until the end mark of the linked list is read, and then write the address of the head data cache unit and the address of the end data cache unit into the storage unit to be recycled 111.
[0043] It can be understood that if the port sending module 130 determines that the data packet in the data linked list 113 needs to be discarded, there is no need to send the data packet. It only needs to read the information in the information unit corresponding to each data cache unit in turn. If the tail flag of the linked list is read, it indicates that the information unit corresponding to the end data cache unit has been traversed. At this time, the address of the head data cache unit in its to-be-sent queue that was written at the beginning and the address of the end data cache unit where the tail flag of the linked list is traversed are both written into the storage unit to be recycled 111, and then the cache management unit 112 writes the data linked list 113 to the free linked list 114 through the linked list pointer, and updates the address of the end free cache unit in the free list tail pointer to complete the recycling of the data linked list 113.
[0044] In one embodiment, the shared cache management module 110 further includes multiple cache pools, each corresponding to a corresponding number of free cache units in the free linked list 114. The types of cache pools include global cache pools and dedicated cache pools. The cache management unit 112 is further configured to determine the usage of the free cache units corresponding to the target cache pool based on the processing priority of the data packet, and select, based on the usage, the free cache units corresponding to the global cache pool or the free cache units corresponding to the dedicated cache pool for data reception by the port receiving module 120, and update the usage of the selected cache pool. The target cache pool includes at least one of the global cache pool and the dedicated cache pool. The port sending module 130 is further configured to: determine the processing priority based on the addressed to-be-sent queue; count the data cache units in the data linked list 113 to obtain the number of nodes; and write the processing priority and the number of nodes into the to-be-reclaimed storage unit 111 after the data packet in the data linked list 113 is sent. The cache management unit 112 is further configured to read the processing priority and the number of nodes, determine the corresponding cache pool based on the processing priority, and reduce the usage of the corresponding cache pool based on the number of nodes.
[0045] It can be understood that the system includes multiple cache pools, each of which is associated with a specific number of free cache units in the free list 114. The types of cache pools include global cache pools and dedicated cache pools. The global cache pool serves as a system-level shared resource pool, which can achieve efficient sharing of a larger cache area, while the dedicated cache pool can be bound to a specific port or priority to provide exclusive resource guarantees and provide minimum cache resource guarantees for specific traffic categories. Each pool independently maintains its free unit list segment and usage counter to achieve resource isolation statistics.
[0046] Among them, the processing priority of the data packet corresponds one-to-one to the target cache pool. Since in the data packet receiving stage, the cache management unit 112 first determines the usage of the free cache unit corresponding to the target cache pool according to the processing priority of the data packet, and then selects the free cache unit corresponding to the global cache pool or the dedicated cache pool according to the usage, and updates the usage of the free cache units in the global cache pool or the dedicated cache pool after being used. Therefore, in the data linked list 113 recycling stage, it is also necessary to recycle the corresponding data cache unit to the corresponding cache pool and update the usage of the corresponding cache pool accordingly. Specifically, the processing priority of the data packet corresponds one-to-one to the queue to be sent of the port sending module 130. When the port receiving module 120 writes the address of the head-end data cache unit into the queue to be sent of the port sending module 130, it writes it into the corresponding queue to be sent according to the processing priority of the data packet. Therefore, the port sending module 130 can determine the processing priority of the data packet according to the queue to be sent with the address of the head-end data cache unit written in it. At the same time, when sending the data packet, the data cache units in the data linked list 113 are counted to obtain the number of nodes in the data linked list 113. When the data packet is sent, the number of nodes is equal to the number of all data cache units in the data linked list 113. At this time, the processing priority and the number of nodes are written into the storage unit to be recycled 111 for the cache management unit 112 to read when recycling.
[0047] When the cache management unit 112 recycles the data linked list 113, it links the data linked list 113 to the end of the free linked list 114 to obtain a new free linked list 114. At the same time, it determines the cache pool according to the processing priority, and then updates the usage of the cache pool according to the number of nodes for use when the next data packet is received.
[0048] In this way, priority is mapped to the queue to be sent, so that resources can be accurately returned according to priority when they are recycled, ensuring that the high-priority dedicated pool is not polluted by low-priority services.
[0049] In one embodiment, if the port receiving module 120 writes the address of the head-end data cache unit, the address of the end data cache unit, the processing priority of the data packet and the number of nodes of the data cache unit in the data linked list 113 into the storage unit to be recycled 111, the cache management unit 112 is also used to: read the address of the head-end data cache unit in the storage unit to be recycled 111, and write it into the linked list pointer of the free information unit corresponding to the end free cache unit in the free linked list 114, so as to link the head-end data cache unit of the data linked list 113 to the end free cache unit of the free linked list 114 to obtain a new free linked list 114; read the address of the end data cache unit, and update the address in the free list tail pointer to the address of the end data cache unit; read the processing priority and the number of nodes, and determine the corresponding cache pool according to the processing priority, and reduce the usage of the corresponding cache pool according to the number of nodes.
[0050] Among them, in the data packet receiving stage, during the receiving process of the port receiving module 120, or after the reception is completed, it may be determined that the data packet needs to be discarded. At this time, there is no need to transmit it to the port sending module 130 for data packet sending, and the port sending module 130 writes the relevant recovery parameters into the to-be-recycled storage unit 111. Instead, the port receiving module 120 writes the relevant recovery parameters into the to-be-recycled storage unit 111, thereby directly recovering the used data cache unit. Specifically, the receiving module is also used to, in each round of data receiving process, when a data packet is written into the data linked list 113 and it is determined that the data packet in the data linked list 113 needs to be discarded, or it is determined that the data packet in the data linked list 113 does not need to be discarded, but no free cache unit for the cache of the next round of data receiving process is applied from the free linked list 114, then determine to discard the data packet, and at the same time write the address of the head end data cache unit in the data linked list 113, the address of the end data cache unit, the processing priority of the data packet and the number of nodes of the data cache unit in the data linked list 113 into the storage unit to be recycled 111, so as to recycle the data linked list 113 containing the data packet through the cache management unit 112.
[0051] Specifically, the address of the head-end data cache unit is used to write into the linked list pointer of the idle information unit corresponding to the terminal idle cache unit, so that the data linked list 113 is linked to the end of the idle linked list 114; the address of the terminal data cache unit is used to update the address in the idle list tail pointer to mark the new end of the idle linked list 114 for the next recycling of the data linked list 113; the processing priority is used to determine the corresponding cache pool during recycling, and the number of nodes is used to update the usage of the cache pool for the next data packet reception. In this way, by considering the discarding of the data packet during the port receiving module 120 receiving process, the port receiving module 120 directly writes the relevant recycling parameters, and finally realizes the recycling of the data linked list 113, which can give priority to releasing the data cache unit and improve the recycling efficiency.
[0052] An embodiment of the present invention further provides a shared cache recycling system, comprising a shared cache management module 110, a port receiving module 120, and a port sending module 130, wherein the port receiving module 120 and the port sending module 130 are respectively connected to the shared cache management module 110, wherein the shared cache management module 110 comprises a storage unit to be recycled 111, a cache management unit 112, a data linked list 113, and a free linked list 114, wherein the data linked list 113 comprises at least one data cache unit and a data information unit corresponding to each data cache unit, and the free linked list 114 comprises a plurality of free cache units and a free information unit corresponding to each free cache unit; wherein the information unit of each cache unit comprises a linked list pointer in which the address of the next cache unit in the same linked list is written, so as to link the cache units under the same linked list. The working steps of each module unit in the recycling phase may include steps (a1) to (a10).
[0053] In step (a1), in each round of data receiving process, after the data packet is written into the data cache unit of the data linked list 113 and it is determined that the data packet does not need to be discarded, if the port receiving module 120 applies for a free cache unit for caching the next round of data receiving process from the free linked list 114, the number of pending transmissions is written into the head-end information unit corresponding to the head-end data cache unit in the data linked list 113, the end of the linked list flag and the valid data length of the data packet are written into the end information unit corresponding to the end data cache unit in the data linked list 113, and the address of the head-end data cache unit in the data linked list 113 is written into the waiting-to-send queue of the port sending module 130.
[0054] In step (a2), the shared cache management module 110 further includes a plurality of cache pools, each of which corresponds to a corresponding number of free cache units in the free linked list 114; wherein the types of cache pools include a global cache pool and a dedicated cache pool; the cache management unit 112 is further configured to determine the usage of the free cache units corresponding to the target cache pool according to the processing priority of the data packet, and select to use the free cache units corresponding to the global cache pool or the free cache units corresponding to the dedicated cache pool according to the usage, for the port receiving module 120 to use for data reception, and to update the usage of the cache pool after being used; wherein the target cache pool includes at least one of the global cache pool and the dedicated cache pool.
[0055] In step (a3), the port sending module 130 determines the data linked list 113 where the data packet is located according to the address of the head-end data buffer unit; determines the processing priority according to the to-be-sent queue with the address; and counts the data buffer units in the data linked list 113 to obtain the number of nodes.
[0056] In step (a4), the data packet in the data linked list 113 includes at least one data fragment, and each data fragment is stored in each data cache unit of the data linked list 113 in a one-to-one correspondence; the port sending module 130 is also used to read the information in the information unit corresponding to each data cache unit in sequence if it is determined that the data packet in the data linked list 113 does not need to be discarded, and send the data fragments in each data cache unit in sequence until the valid data length is read and the length of the sent data fragment reaches the valid data length, then write the address of the head-end data cache unit, the address of the end data cache unit, the processing priority and the number of nodes into the storage unit to be recycled 111.
[0057] In step (a5), the port sending module 130 is further configured to read the information in the information unit corresponding to each data cache unit in sequence if it is determined that the data packet in the data linked list 113 needs to be discarded, until the end mark of the linked list is read, and then write the address of the head end data cache unit, the address of the end end data cache unit, the processing priority and the number of nodes into the to-be-reclaimed storage unit 111.
[0058] In step (a6), the cache management unit 112 includes a free list tail pointer storing the address of the last free cache unit in the free list 114. The cache management unit 112 is further configured to determine the free information unit corresponding to the last free cache unit according to the free list tail pointer.
[0059] In step (a7), the cache management unit 112 reads the address of the head-end data cache unit in the storage unit to be recycled 111, obtains the number of pending transmissions in the corresponding head-end information unit according to the address of the head-end data cache unit, and if the number of pending transmissions is equal to 1, writes the address of the head-end data cache unit into the list pointer of the free information unit corresponding to the end free cache unit in the free list 114, so as to link the head-end data cache unit of the data list 113 to the end free cache unit of the free list 114, obtain a new free list 114, and update the address in the free list tail pointer to the address of the end data cache unit, and at the same time reads the processing priority and the number of nodes, and determines the corresponding cache pool according to the processing priority, and reduces the usage of the corresponding cache pool according to the number of nodes.
[0060] In step (a8), the cache management unit 112 is further configured to reduce the number of pending transmissions in the head-end information unit by 1 if the obtained number of pending transmissions is greater than 1, so as to update the number of pending transmissions, until the port sending module 130 completes the next transmission of the data packet in the data linked list 113, and the updated number of pending transmissions obtained by the cache management unit 112 is equal to 1, then the address of the head-end data cache unit is written into the linked list pointer of the idle information unit corresponding to the end idle cache unit in the free linked list 114, so as to link the head-end data cache unit of the data linked list 113 to the end idle cache unit of the free linked list 114, thereby obtaining a new free linked list 114.
[0061] In step (a9), the cache management unit 112 reads the processing priority and the number of nodes, determines a corresponding cache pool according to the processing priority, and reduces the usage of the corresponding cache pool according to the number of nodes.
[0062] In step (a10), if the port receiving module 120 writes the address of the head-end data cache unit, the address of the end data cache unit, the processing priority of the data packet and the number of nodes of the data cache unit in the data linked list 113 into the storage unit to be recycled 111, the cache management unit 112 is further used to: read the address of the head-end data cache unit in the storage unit to be recycled 111, and write it into the linked list pointer of the free information unit corresponding to the end free cache unit in the free linked list 114, so as to link the head-end data cache unit of the data linked list 113 to the end free cache unit of the free linked list 114 to obtain a new free linked list 114; read the address of the end data cache unit, and update the address in the free list tail pointer to the address of the end data cache unit; read the processing priority and the number of nodes, and determine the corresponding cache pool according to the processing priority, and reduce the usage of the corresponding cache pool according to the number of nodes.
[0063] It should be understood that although the various steps in steps (a1) to (a10) are shown in sequence according to the numbering, these steps are not necessarily performed in the order indicated by the arrows or numbers. Unless otherwise specified herein, there is no strict order restriction on the execution of these steps, and these steps can be performed in other orders. Moreover, at least a portion of the above steps may include multiple steps or multiple stages, and these steps or stages are not necessarily performed at the same time, but can be performed at different times. The order of execution of these steps or stages is not necessarily sequential, but can be performed in rotation or alternation with other steps or at least a portion of steps or stages in other steps.
[0064] The specific working process of the port sending module 130 in the shared cache recovery system according to the embodiment of the present invention can be referred to Figure 5 shown.
[0065] First, the port sending module 130 determines whether the queue to be sent is empty. If it is empty, it means that there is no data packet that needs to be sent. Otherwise, the address of a head-end data cache unit is taken out according to the queue scheduling algorithm of the port sending module 130 to determine the data linked list 113 where it is located, and read the cache unit and information unit corresponding to the address.
[0066] Then determine whether the data packets in the data linked list 113 need to be discarded. If necessary, traverse each cache unit and the corresponding information unit according to the linked list pointer in the data linked list 113 until the information unit with the tail of the linked list is traversed, indicating that the data linked list 113 has been traversed. At this time, the address of the head end data cache unit, the address of the end data cache unit, the processing priority and the number of nodes are written into the storage unit to be recycled 111. If it is determined that the data packet does not need to be discarded, the data fragment of the current cache unit is sent, and at the same time, it is determined whether the current cache unit contains a valid data length or an end-of-list flag; if the valid data length and the end-of-list flag are not read, it indicates that the current cache unit is not the end of the list. At this time, after sending all the data fragments of the current cache unit, the next node of the data linked list 113 is set as the current cache unit based on the linked list pointer, and the current cache unit and its corresponding information unit are continued to be read, and then the data fragment is sent and the valid data length or the end-of-list flag is determined; if the valid data length is read, it indicates that the current cache unit is the end of the list. At this time, the data fragment of the current cache unit is sent until the number of sent data fragments measured during the data packet sending process reaches the valid data length, and the data sending is determined to be completed. At this time, the address of the head-end data cache unit, the address of the end data cache unit, the processing priority and the number of nodes are written into the storage unit to be recycled 111 for subsequent reading and recycling by the cache management unit 112.
[0067] The specific working process of the cache management unit 112 in the shared cache recycling system according to the embodiment of the present invention can be referred to Figure 6 shown.
[0068] First, the cache management unit 112 determines whether the storage unit 111 to be recycled is empty. If it is not empty, the storage unit 111 to be recycled is read. According to the address of a head-end data cache unit stored therein, a data linked list 113 to be recycled can be determined. Then, the information unit corresponding to the head-end data cache unit is read to determine whether the number of times to be sent stored therein is equal to 1. If it is not equal to 1, it indicates that the sending requirement has not been completed. At this time, the information unit corresponding to the first address of the linked list to be recycled is written, and the number of times to be sent is reduced by 1 to obtain a new number of times to be sent. Then, the storage unit 111 to be recycled is continued to be read to perform the next data linked list 113 recycling; if the number of times to be sent is equal to 1, it indicates that the sending requirement has been completed. At this time, the information unit pointed to by the tail of the free linked list is written, and the head address of the linked list to be recycled is written in its linked list pointer. At the same time, the address in the tail pointer of the free linked list is updated to the tail address of the linked list to be recycled, and the processing priority and the number of nodes are read. The corresponding cache pool is determined according to the processing priority, and the corresponding cache pool usage is reduced according to the number of nodes.
[0069] The above description is only a preferred embodiment of the present application and does not limit the patent scope of the present application. Any equivalent structure or equivalent process transformation made using the contents of the present application specification and drawings, or directly or indirectly applied in other related technical fields, are also included in the patent protection scope of the present application.
Claims
1. A shared cache recycling system, characterized in that: include: A shared cache management module includes a storage unit to be reclaimed, a cache management unit, a data linked list, and a free linked list, wherein the data linked list includes at least one data cache unit and a data information unit corresponding to the data cache unit in a one-to-one manner, and the free linked list includes multiple free cache units and free information units corresponding to each free cache unit in a one-to-one manner; wherein the information unit of each cache unit includes a linked list pointer with the address of the next cache unit in the same linked list written therein, so as to link the cache units under the same linked list; a port receiving module connected to the shared cache management module, configured to, in each round of data receiving process, after a data packet is written into the data cache unit of the data linked list and it is determined that the data packet does not need to be discarded, if the free cache unit for the cache of the next round of data receiving process is applied for from the free linked list, write the address of the head-end data cache unit in the data linked list into the to-be-sent queue of the port sending module; The port sending module is connected to the shared cache management module and is used to determine the data linked list where the data packet is located according to the address of the head-end data cache unit, send the data packet in the data linked list, and write the address of the head-end data cache unit into the storage unit to be recycled after the sending is completed; The cache management unit is used to read the address of the head-end data cache unit in the storage unit to be reclaimed, and write it into the linked list pointer of the free information unit corresponding to the end free cache unit in the free linked list, so as to link the head-end data cache unit of the data linked list to the end free cache unit of the free linked list to obtain the new free linked list.
2. The shared cache recycling system according to claim 1, wherein: The cache management unit is also used to, after reading the address of the head-end data cache unit in the storage unit to be recycled, write the address of the head-end data cache unit into the linked list pointer of the idle information unit corresponding to the end idle cache unit in the free linked list if the number of times the port sending module sends the data packet reaches the target number of times, so as to link the head-end data cache unit of the data linked list to the end idle cache unit of the free linked list to obtain the new free linked list.
3. The shared cache recycling system according to claim 2, wherein: The port receiving module is further configured to, in each round of data receiving process, after the data packet is written into the data linked list and it is determined that the data packet in the data linked list does not need to be discarded, if the free cache unit for caching the next round of data receiving process is applied for from the free linked list, write the number of pending transmissions into the head-end information unit corresponding to the head-end data cache unit in the data linked list; The cache management unit is further configured to obtain the number of pending transmissions in the corresponding head-end information unit according to the address of the head-end data cache unit. If the number of pending transmissions is equal to 1, it is determined that the number of times the port sending module sends the data packet reaches the target number of transmissions.
4. The shared cache recycling system according to claim 3, wherein: The cache management unit is also used to, if the obtained number of pending transmissions is greater than 1, reduce the number of pending transmissions in the head-end information unit by 1 to update the number of pending transmissions, until the port sending module completes the next transmission of the data packet in the data linked list, and the updated number of pending transmissions obtained by the cache management unit is equal to 1, then it is determined that the number of times the port sending module sends the data packet reaches the target number of transmissions.
5. The shared cache reclaiming system according to claim 1, wherein: The cache management unit includes a free list tail pointer storing the address of the terminal free cache unit in the free linked list, and the cache management unit is further configured to determine the free information unit corresponding to the terminal free cache unit according to the free list tail pointer.
6. The shared cache reclaiming system according to claim 5, characterized in that: The port receiving module is further configured to, in each round of data receiving process, after the data packet is written into the data linked list and it is determined that the data packet in the data linked list does not need to be discarded, write a list end flag into an end information unit corresponding to an end data cache unit in the data linked list if the free cache unit for caching the next round of data receiving process is requested from the free linked list; The port sending module is further configured to determine the address of the end data cache unit according to the tail flag of the linked list, and write the address of the end data cache unit into the storage unit to be recycled after the data packet is sent. The cache management unit is also used to read the address of the end data cache unit, and after writing the address of the head end data cache unit into the linked list pointer of the idle information unit corresponding to the end idle cache unit, update the address in the idle list tail pointer to the address of the end data cache unit.
7. The shared cache reclaiming system according to claim 6, wherein: The port receiving module is further configured to, in each round of data receiving process, after the data packet is written into the data linked list and it is determined that the data packet in the data linked list does not need to be discarded, if the free cache unit for caching the next round of data receiving process is applied for from the free linked list, write the valid data length of the data packet into the terminal information unit corresponding to the terminal data cache unit in the data linked list; The data packet in the data linked list includes at least one data fragment, and each data fragment is stored in each data cache unit of the data linked list in a one-to-one correspondence; the port sending module is also used to read the information in the information unit corresponding to each data cache unit in sequence if it is determined that the data packet in the data linked list does not need to be discarded, and send the data fragments in each data cache unit in sequence until the valid data length is read and the length of the data fragment sent reaches the valid data length, then determining that the data packet has been sent.
8. The shared cache reclaiming system according to claim 7, wherein: The port sending module is also used to read the information in the information unit corresponding to each data cache unit in sequence if it is determined that the data packet in the data linked list needs to be discarded, until the end flag of the linked list is read, and then write the address of the head end data cache unit and the address of the end data cache unit into the storage unit to be recycled.
9. The shared cache reclaiming system according to claim 1, wherein: The shared cache management module further includes a plurality of cache pools, each of which corresponds to a corresponding number of free cache units in the free linked list; wherein the types of the cache pools include a global cache pool and a dedicated cache pool; The cache management unit is further configured to determine a usage amount of the free cache unit corresponding to the target cache pool according to the processing priority of the data packet, and select, based on the usage amount, to access the free cache unit corresponding to the global cache pool or the free cache unit corresponding to the dedicated cache pool for the port receiving module to use for data reception, and update the usage amount of the accessed cache pool; wherein the target cache pool includes at least one of the global cache pool and the dedicated cache pool; The port sending module is further used for: Determining the processing priority according to the to-be-sent queue with the address written therein; Counting the data cache units in the data linked list to obtain the number of nodes; After the data packets in the data linked list are sent, the processing priority and the number of nodes are written into the storage unit to be recycled; The cache management unit is further configured to read the processing priority and the number of nodes, determine the corresponding cache pool according to the processing priority, and reduce usage of the corresponding cache pool according to the number of nodes.
10. The shared cache reclaiming system according to claim 9, wherein: If the port receiving module writes the address of the head-end data cache unit in the data linked list, the address of the end data cache unit, the processing priority of the data packet, and the number of nodes of the data cache unit in the data linked list into the to-be-reclaimed storage unit, the cache management unit is further configured to: Reading the address of the head-end data cache unit in the storage unit to be reclaimed, and writing the address into the linked list pointer of the free information unit corresponding to the end free cache unit in the free linked list, so as to link the head-end data cache unit of the data linked list to the end free cache unit of the free linked list, thereby obtaining a new free linked list; Reading the address of the end data cache unit, and updating the address in the free list tail pointer to the address of the end data cache unit; The processing priority and the number of nodes are read, and the corresponding buffer pool is determined according to the processing priority, and the usage of the corresponding buffer pool is reduced according to the number of nodes.
Citation Information
Cited By
Buffer method and device based on dynamic linked list structure, computer equipment and medium
CN122332334A