Shared linked list structure and arbitrated transmission circuit and system including same
Patent Information
- Application Number
- CN202610895387.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2026-06-22
- Publication Date
- 2026-08-21
- Estimated Expiration
- 2046-06-22
AI Technical Summary
现有的传输电路通常需要为每一上游数据源设置一个地址暂存器,需要消耗存储位数=数据源个数×上游数据缓冲器深度×缓冲器地址位宽
本发明通过设置共享链表结构来存储多个上游发送端传输的数据,并实时维护每一上游发送端对应的有效标识和链表头指针,来保证每一上游发送端数据传输的顺序,共享链表结构使得需要消耗存储位数由数据源个数×上游数据缓冲器深度×缓冲器地址位宽减少为上游数据缓冲器深度×缓冲器地址位宽,减少了多个发送端的传输电路的硬件资源消耗。
Smart Images

Figure CN122412347B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of integrated circuit technology, and more particularly to a shared linked list structure and an arbitration transmission circuit and system including therein. Background Technology
[0002] In electronic systems, it's common to encounter scenarios where multiple transmitters simultaneously initiate information transmissions to a single receiver. Typically, multiple requests from these transmitters need to be time-division multiplexed onto the receiver's transmission path to prevent data loss. Existing transmission circuits usually require an address register for each upstream data source, consuming storage bits equal to the number of data sources multiplied by the upstream data buffer depth multiplied by the buffer address width. However, resource consumption increases exponentially with the number of data sources; for distributed circuits, the increase in the number of data sources per node leads to an exponential increase in resource consumption. Therefore, reducing the hardware resource consumption of transmission circuits with multiple transmitters is a pressing technical problem. Summary of the Invention
[0003] The purpose of this invention is to provide a shared linked list structure and an arbitration transmission circuit and system including therein, which reduces the hardware resource consumption of the transmission circuits of multiple sending ends.
[0004] According to a first aspect of the present invention, a shared linked list structure is provided, comprising: a shared pointer memory, a shared data buffer, and R linked list management units, wherein R is the total number of upstream sending ends connected to the shared linked list structure; The shared pointer memory includes D pointer storage units, and the shared data buffer includes D data buffer units. The d-th pointer storage unit and the d-th data buffer unit correspond one-to-one and have the same address. The value of d ranges from 1 to D. The data buffer unit is used to store the transmission data sent by the upstream sending end; The pointer storage unit is used to store the address of the data buffer unit where the next piece of transmitted data from the upstream sender is stored, corresponding to the transmitted data stored in the corresponding data buffer unit. Each linked list management unit manages the linked list information of an upstream sender. The linked list information includes a valid identifier and a linked list head pointer. When the shared data buffer stores the transmission data of the upstream sender, the valid identifier corresponding to the upstream sender is valid, and the linked list head pointer points to the address of the data buffer unit where the earliest stored but unsent transmission data of the upstream sender is located in the shared data buffer. When the shared data buffer does not store the transmission data of the upstream sender, the valid identifier corresponding to the upstream sender is invalid.
[0005] According to a second aspect of the present invention, an arbitration transmission circuit is provided, comprising: The system includes at least one local data buffer circuit, at least one shared linked list structure, an arbitrator, and a multiplexer, wherein the local data buffer circuit is connected to the arbitrator and the multiplexer respectively, and the shared linked list structure is connected to the arbitrator and the multiplexer respectively. The local data buffer circuit is used to buffer local data transmitted by the local sending end; The arbitrator arbitrates the local sender identifier and the valid upstream sender identifier in the linked list information of the shared linked list structure to determine a target sender. If the target sender is the local sender, a local sender data transmission instruction is sent to the local sender. If the target sender is the upstream sender, a target upstream sender data transmission instruction is sent to the shared linked list structure. The local data buffer circuit is used to output the earliest transmitted data stored in the local data buffer circuit through the multiplexer after receiving the data transmission instruction from the local transmitter. The shared linked list structure is used to output the earliest data transmitted by the upstream sender of the target after receiving the data transmission instruction from the upstream sender of the target through the multiplexer.
[0006] According to a third aspect of the present invention, a distributed arbitration transmission system is provided, comprising multiple cascaded arbitration transmission circuits.
[0007] Compared with existing technologies, this invention has significant advantages and beneficial effects. Through the above technical solution, the shared linked list structure and the arbitration transmission circuit and system including it provided by this invention achieve considerable technological advancement and practicality, and have broad industrial application value. It has at least the following beneficial effects: This invention uses a shared linked list structure to store data transmitted from multiple upstream senders and maintains the valid identifier and linked list head pointer for each upstream sender in real time to ensure the order of data transmission from each upstream sender. The shared linked list structure reduces the number of bits required for storage from the number of data sources × upstream data buffer depth × buffer address width to the upstream data buffer depth × buffer address width, thereby reducing the hardware resource consumption of the transmission circuits of multiple senders. Attached Figure Description
[0008] To more clearly illustrate the technical solutions in the embodiments of the present invention, the accompanying drawings used in the description of the embodiments will be briefly introduced below. Obviously, the accompanying drawings described below are only some embodiments of the present invention. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.
[0009] Figure 1 This is a schematic diagram of a shared linked list structure provided in an embodiment of the present invention; Figure 2A schematic diagram of an arbitration transmission circuit provided in an embodiment of the present invention. Detailed Implementation
[0010] The technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of the present invention, and not all embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of the present invention.
[0011] This invention provides a shared linked list structure, such as... Figure 1 As shown, it includes: a shared pointer memory, a shared data buffer, and R linked list management units, where R is the total number of upstream sending ends connected by the shared linked list structure. It should be noted that an upstream sending end refers to the end that generates and sends data to the local machine, relative to the local machine.
[0012] The shared pointer memory includes D pointer storage units, and the shared data buffer includes D data buffer units. The d-th pointer storage unit and the d-th data buffer unit correspond one-to-one and have the same address, where d ranges from 1 to D. Each pair of pointer storage units and data buffer units forms a linked list unit. Multiple linked list units are linked together sequentially to form a linked list structure. It can be understood that there can be R linked list structures, with each upstream sending end corresponding to one linked list structure. Each linked list unit is requested and used simultaneously as a whole, and then released simultaneously after use. It should be noted that D is the depth of the shared pointer memory and the shared data buffer. As a preferred example, D is equal to the depth of the upstream data buffer corresponding to the upstream sending end.
[0013] The data buffer unit is used to store the transmission data sent by the upstream sender. It should be noted that the shared linked list structure is shared by R upstream senders. Therefore, each data buffer unit can store the transmission data sent by any one upstream sender, and the upstream sender can also use any idle data buffer unit.
[0014] The pointer storage unit is used to store the address of the data buffer unit where the next piece of transmitted data from the upstream sender is stored, corresponding to the data transmitted data stored in the corresponding data buffer unit.
[0015] Each linked list management unit manages the linked list information of an upstream sender. The linked list information includes a valid identifier and a linked list head pointer. When the shared data buffer stores the transmitted data of the upstream sender, the valid identifier corresponding to that upstream sender is valid, and the linked list head pointer points to the address of the earliest stored but unsent transmitted data in the shared data buffer for that upstream sender. When the shared data buffer does not store the transmitted data of the upstream sender, the valid identifier corresponding to that upstream sender is invalid. Initially, the valid identifiers corresponding to each linked list are invalid.
[0016] It should be noted that the shared data buffer can only send one data transmission at a time. Which transmission is sent is determined based on the received data transmission command, which can be generated through arbitration by an arbitrator. When the shared data buffer receives a data transmission command from the upstream sender, it sends the data transmission from the data buffer unit currently pointed to by the upstream sender's linked list head pointer, updates the upstream sender's linked list head pointer to point to the address of the data buffer unit stored in the pointer storage unit of the linked list unit currently pointed to by the upstream sender's linked list head pointer, and then releases the data buffer unit from which the data transmission was sent, as well as the pointer storage unit corresponding to the data transmission data sent. By maintaining each linked list head pointer in real time, it can be ensured that when each upstream sender is selected, the data transmission sent is the earliest stored and unsent data transmission data in the shared data buffer, thus ensuring that the upstream sender's data transmission is sent in the correct order.
[0017] It should be noted that when an upstream sender has sent all the data in the shared data buffer, the validity flag of the upstream sender's linked list information must be updated to invalid. This will prevent the upstream sender from participating in subsequent arbitration. Therefore, it is also necessary to obtain the tail information of the linked list in the shared data buffer from the upstream sender. This can be achieved through two implementation methods.
[0018] Implementation Method 1 The linked list information also includes a tail pointer, which points to the address of the data buffer unit where the last transmitted data is stored in the shared data buffer by the corresponding upstream sender.
[0019] The shared data buffer is used to allocate a group of unused data buffer units and pointer storage units when receiving data to be processed. The data to be processed is written into the allocated data buffer units, while the allocated pointer storage units are not written to temporarily. Specifically, a usage flag can be set for each group of data buffer units and pointer storage units to indicate whether the group is in use. For example, a usage flag of 0 indicates that it is not in use. After being allocated, the corresponding usage flag is set to 1. After the group of data buffer units and pointer storage units is released, the corresponding usage flag is reset to 0. With the above settings, during allocation, one unit from the group with a usage flag of 0 is randomly selected, and the corresponding group of data buffer units and pointer storage units is allocated to the data to be processed.
[0020] If the shared data buffer currently contains only one piece of data to be transmitted, then the head and tail pointers of the corresponding linked list management unit are both set to point to the address of the data buffer unit where that piece of data is located. It can be understood that when the upstream sender stores the first piece of data in the shared data buffer, it sets the validity flag in the linked list information of the corresponding linked list management unit to valid, and sets the head and tail pointers of the linked list management unit to point to the address of the data buffer unit where the first piece of data is located. If the upstream sender has stored multiple pieces of data in the shared data buffer and has sent multiple pieces of data, and only one piece of data remains unsent in the shared data buffer, then in this case, the head and tail pointers of the corresponding linked list management unit are both set to point to the address of the data buffer unit where that piece of data is located.
[0021] If the shared data buffer currently contains multiple pending data transmissions, the address of the data buffer unit containing the pending data is written into the pointer storage unit corresponding to the previous data transmission from the upstream sender. The tail pointer of the corresponding linked list management unit is then updated to point to the address of the data buffer unit containing that data transmission. It's understandable that when the shared data buffer currently contains multiple pending data transmissions, the head and tail pointers of the linked list from the upstream sender will point to different addresses.
[0022] As one embodiment, if the shared data buffer sends out the transmission data from the target upstream sender, and the head pointer and tail pointer of the linked list corresponding to the target upstream sender point to the same address, it indicates that the transmitted data from the target upstream sender is the last piece of data currently in the shared data buffer of the target upstream sender. In this case, the valid identifier in the linked list management unit corresponding to the target upstream sender is set to invalid. When the valid identifier is set to invalid, the corresponding head pointer and tail pointer of the linked list are also invalid.
[0023] Implementation Method 2 In the second implementation method, it is not necessary to set the tail pointer of the linked list in the linked list information. The shared data buffer is used to allocate a set of unused data buffer units and pointer storage units when receiving the data to be processed. The data to be processed is written into the allocated data buffer units, and the address of the data buffer unit where the data to be processed is located is written into the pointer storage unit of the allocated linked list unit.
[0024] If the shared data buffer currently contains multiple pending data transmissions, the address of the data buffer unit containing the pending data transmissions is updated to the pointer storage unit corresponding to the previous data transmission from the upstream sender. With this setting, when the shared data buffer currently contains multiple pending data transmissions, the addresses stored in the pointer storage units of all but the last transmission are different from those in the corresponding data buffer units; the address stored in the pointer storage unit of the last transmission is the same as its corresponding data buffer unit. When the shared data buffer currently contains only one pending data transmission, the address stored in the pointer storage unit of that transmission is the same as its corresponding data buffer unit.
[0025] If the address stored in the pointer unit corresponding to the transmitted data from the target upstream sender sent by the shared data buffer is the same as the address of the corresponding data buffer unit, it indicates that the transmitted data is the last piece of data from the target upstream sender in the shared data buffer. In this case, the valid identifier in the linked list management unit corresponding to the target upstream sender is set to invalid. When the valid identifier is invalid, the corresponding linked list head pointer is also invalid. In the case of an invalid valid identifier, the corresponding upstream sender no longer needs to participate in data transmission arbitration.
[0026] It should be noted that Implementation Method 1 runs faster than Implementation Method 2, while Implementation Method 2 consumes fewer hardware resources than Implementation Method 1. The appropriate implementation method can be selected based on the application requirements.
[0027] The shared linked list structure described in this invention can be applied to various transmission circuit scenarios involving multiple transmitters, specifically in arbitration transmission circuit scenarios. This invention also provides an arbitration transmission circuit, such as... Figure 2 As shown, the arbitration transmission circuit includes: at least one local data buffer circuit ( Figure 2 Taking M as an example, at least one shared linked list structure ( Figure 2 Taking N as an example, there are arbitrators and multiplexers. Each local data buffer circuit corresponds to a local transmitter, and each shared linked list structure corresponds to at least one upstream transmitter. The local data buffer circuits are connected to the arbitrators and multiplexers respectively, and the shared linked list structures are connected to the arbitrators and multiplexers respectively.
[0028] The local data buffer circuit is used to buffer local data transmitted by the local sender. Specifically, the local data buffer circuit may include a first-in-first-out buffer.
[0029] The arbitrator arbitrates the valid upstream sender identifiers in the shared linked list structure and the local sender identifier to determine a target sender. If the target sender is the local sender, a local sender data transmission command is sent to the local sender; if the target sender is an upstream sender, a target upstream sender data transmission command is sent to the shared linked list structure. It should be noted that each arbitration involves the local sender that stores buffered data in its local data buffer circuit and the upstream sender that stores transmitted data in the shared linked list structure.
[0030] The local data buffer circuit is used to output the earliest transmitted data stored in the local data buffer circuit through the multiplexer after receiving a data transmission instruction from the local transmitter. The shared linked list structure is used to output the earliest transmitted data from the upstream transmitter of the target target, stored in the shared linked list structure, through the multiplexer after receiving a data transmission instruction from the upstream transmitter of the target target.
[0031] This invention also provides a distributed arbitration transmission system, including multiple cascaded arbitration transmission circuits. The cascaded topology of the multiple arbitration transmission circuits can specifically be a multi-level series connection or a tree structure, etc.
[0032] This invention utilizes a shared linked list structure to store data transmitted from multiple upstream senders and maintains the valid identifier and linked list head pointer for each upstream sender in real time. This ensures the order of data transmission from each upstream sender. The shared linked list structure reduces the required storage bits from the number of data sources × upstream data buffer depth × buffer address width to the upstream data buffer depth × buffer address width. This reduces the hardware resource consumption of the transmission circuits of multiple senders and significantly reduces the hardware resource consumption of the arbitration transmission circuit and the distributed arbitration transmission system.
[0033] The above description is merely a preferred embodiment of the present invention and is not intended to limit the present invention in any way. Although the present invention has been disclosed above with reference to preferred embodiments, it is not intended to limit the present invention. Any person skilled in the art can make some modifications or alterations to the above-disclosed technical content to create equivalent embodiments without departing from the scope of the present invention. Any simple modifications, equivalent changes, and alterations made to the above embodiments based on the technical essence of the present invention without departing from the scope of the present invention shall still fall within the scope of the present invention.
Claims
1. A shared linked list structure, Its features are, include: A shared pointer memory, a shared data buffer, and R linked list management units, where R is the total number of upstream sending ends connected by the shared linked list structure; The shared pointer memory includes D pointer storage units, and the shared data buffer includes D data buffer units. The d-th pointer storage unit and the d-th data buffer unit correspond one-to-one and have the same address. The value of d ranges from 1 to D. The data buffer unit is used to store the transmission data sent by the upstream sending end; The pointer storage unit is used to store the address of the data buffer unit where the next piece of transmitted data from the upstream sender is stored, corresponding to the transmitted data stored in the corresponding data buffer unit. Each linked list management unit manages the linked list information of an upstream sender. The linked list information includes a valid identifier and a linked list head pointer. When the shared data buffer stores the transmission data of the upstream sender, the valid identifier corresponding to the upstream sender is valid, and the linked list head pointer points to the address of the data buffer unit where the earliest stored but unsent transmission data of the upstream sender is located in the shared data buffer. When the shared data buffer does not store the transmission data of the upstream sender, the valid identifier corresponding to the upstream sender is invalid.
2. The shared linked list structure according to claim 1, characterized in that, The shared data buffer is used to send the data to be transmitted in the data buffer unit currently pointed to by the head pointer of the target upstream sender when a data transmission instruction is received from the target upstream sender, update the head pointer of the target upstream sender to point to the address of the data buffer unit stored in the pointer storage unit of the linked list unit currently pointed to by the head pointer of the target upstream sender, and then release the data buffer unit that sent the data and the pointer storage unit corresponding to the data buffer unit that sent the data.
3. The shared linked list structure according to claim 2, characterized in that, The linked list information also includes a linked list tail pointer, which points to the address of the data buffer unit where the last piece of transmitted data is stored in the shared data buffer of the corresponding upstream sender. The shared data buffer is used to allocate a set of unused data buffer units and pointer storage units when receiving data to be processed for transmission, and to write the data to be processed for transmission into the allocated data buffer units; If there is only one piece of data to be transmitted in the shared data buffer, then the head pointer and tail pointer of the corresponding linked list management unit are both set to point to the address of the data buffer unit where the transmitted data is located. If there are multiple pending data transmissions in the shared data buffer, the address of the data buffer unit where the pending data transmission is located is written into the pointer storage unit corresponding to the previous data transmission from the upstream sender corresponding to the pending data transmission, and the tail pointer of the linked list in the corresponding linked list management unit is updated to point to the address of the data buffer unit where the data transmission is located.
4. The shared linked list structure according to claim 3, characterized in that, If the shared data buffer sends transmission data from the target upstream sender, and the head pointer and tail pointer of the linked list corresponding to the target upstream sender point to the same address, then the valid identifier in the linked list management unit corresponding to the target upstream sender is set to invalid. When the valid identifier is invalid, the corresponding head pointer and tail pointer of the linked list are also invalid.
5. The shared linked list structure according to claim 2, characterized in that, The shared data buffer is used to allocate a set of unused data buffer units and pointer storage units when receiving data to be processed, write the data to be processed into the allocated data buffer units, and write the address of the data buffer unit where the data to be processed is located into the pointer storage unit of the allocated linked list unit. If there are multiple pending data transmissions in the shared data buffer, the address of the data buffer unit containing the pending data transmissions will be updated to the pointer storage unit corresponding to the previous data transmission from the upstream sender of the pending data transmission.
6. The shared linked list structure according to claim 5, characterized in that, If the address stored in the pointer unit corresponding to the transmitted data sent by the target upstream sender is the same as the address of the corresponding data buffer unit, then the valid identifier in the linked list management unit corresponding to the target upstream sender is set to invalid. When the valid identifier is invalid, the corresponding linked list head pointer is invalid.
7. An arbitration transmission circuit, characterized in that, include: The system includes at least one local data buffer circuit, at least one shared linked list structure as described in any one of claims 1-6, an arbitrator, and a multiplexer, wherein the local data buffer circuit is connected to the arbitrator and the multiplexer respectively, and the shared linked list structure is connected to the arbitrator and the multiplexer respectively. The local data buffer circuit is used to buffer local data transmitted by the local sending end; The arbitrator arbitrates the local sender identifier and the valid upstream sender identifier in the linked list information of the shared linked list structure to determine a target sender. If the target sender is the local sender, a local sender data transmission instruction is sent to the local sender. If the target sender is the upstream sender, a target upstream sender data transmission instruction is sent to the shared linked list structure. The local data buffer circuit is used to output the earliest transmitted data stored in the local data buffer circuit through the multiplexer after receiving the data transmission instruction from the local transmitter. The shared linked list structure is used to output the earliest data transmitted by the upstream sender of the target after receiving the data transmission instruction from the upstream sender of the target through the multiplexer.
8. A distributed arbitration transmission system, characterized in that, It includes multiple cascaded arbitration transmission circuits as described in claim 7.
9. The distributed arbitration transmission system according to claim 8, characterized in that, The cascaded topology of multiple arbitration transmission circuits is a multi-level series or tree structure.
Citation Information
Patent Citations
Data caching method for network interface to support multi-link and retransmission
CN111538694A
Message address management device, network processing chip and message reading and storing method
CN117424865A