Transmitters and receivers, serializers and deserializers, and methods for transmitting and receiving, serialization and deserialization.
By introducing a scheduling unit into the serializer-deserializer system, selecting and sending data streams that meet specific criteria, the problem of managing multiple streams to achieve deterministic system throughput is solved, and efficient data transmission is achieved.
Patent Information
- Application Number
- CN202080020494.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-03-12
- Filing Date
- 2020-03-12
- Publication Date
- 2025-03-25
- Estimated Expiration
- 2040-03-12
AI Technical Summary
In a serializer-deserializer system with multiple streams and non-point-to-point connections, managing media streams to achieve deterministic system throughput is a challenge.
A device and method are provided to select a data stream from a plurality of data streams by a scheduling unit and transmit according to scheduling information and counter values. The scheduling unit selects a data stream that meets the selection criteria for sending based on the selection information and the data flow information in the scheduling information.
It realizes efficient scheduling and sending of multiple data streams, ensures certainty of system throughput and improves the efficiency of data transmission.
Smart Images

Figure CN113647070B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a transmitter and a receiver, a serializer and a deserializer, and methods for transmitting and receiving, serializing and deserializing. Background Art
[0002] In a SerDes system with more than one stream and not just P2P (point-to-point) connections, the media streams must be managed across several nodes to achieve deterministic system throughput for each data stream.
[0003] It would be appreciated if improved concepts for scheduling data transmissions could be provided. Summary of the invention
[0004] The objects of the invention are solved by an apparatus according to claim 1 , an apparatus according to claim 29 , a method according to claim 42 , a method according to claim 43 and a computer program according to claim 44 .
[0005] A device for sending multiple data streams is provided. The device includes: a scheduling unit, which is used to select a data stream from the multiple data streams as a selected data stream. In addition, the device includes a sending unit for sending the selected data stream. The scheduling unit is configured to select a selected data stream from the multiple data streams according to scheduling information and according to a counter value, wherein the scheduling information includes multiple scheduling elements, wherein each of the multiple scheduling elements includes selection information and data stream information. For each of the multiple scheduling elements, a data stream in the multiple data streams is assigned to the scheduling element, wherein the data stream information of the scheduling element is the data stream information assigned to the data stream assigned to the scheduling element. In addition, for each of the multiple scheduling elements, according to the selection information of the scheduling element and according to the counter value, a selection criterion is met or not met. According to the order of the multiple scheduling elements of the scheduling information, the scheduling unit is configured to select the data stream assigned to the selection element in the multiple selection elements that meets the selection criterion from the multiple selected data streams as the selected data stream. In order to select the selected data stream, the scheduling unit is configured to determine, for at least one scheduling element of the plurality of scheduling elements of the scheduling information or for each scheduling element of the plurality of scheduling elements of the scheduling information, whether a selection criterion is met according to the counter value and according to the selection information of the scheduling element.
[0006] In addition, a device for sending scheduling information is provided. The device is configured to send scheduling information including multiple scheduling elements. Each of the multiple scheduling elements includes scheduling information and data flow information.
[0007] Furthermore, a method for transmitting a plurality of data streams, wherein the method comprises:
[0008] - selecting a data stream from the plurality of data streams as a selected data stream, and
[0009] -Send the selected data stream.
[0010] The selection of the selected data stream from the plurality of data streams is performed according to scheduling information and according to a counter value, wherein the scheduling information includes a plurality of scheduling elements, wherein each of the plurality of scheduling elements includes selection information and data stream information. For each of the plurality of scheduling elements, a data stream from the plurality of data streams is assigned to the scheduling element, wherein the data stream information of the scheduling element is data stream information of the data stream assigned to the scheduling element. In addition, for each of the plurality of scheduling elements, according to the selection information of the scheduling element and according to the counter value, a selection criterion is met or not met. The method comprises: according to the order of the plurality of scheduling elements of the scheduling information, selecting from the plurality of selected data streams a data stream assigned to a selection element of the plurality of selection elements that satisfies the selection criterion as a selected data stream. In order to select the selected data stream, the method comprises: for at least one of the plurality of scheduling elements of the scheduling information or for each of the plurality of scheduling elements of the scheduling information, determining whether the selection criterion is met according to the counter value and according to the selection information of the scheduling element.
[0011] In addition, a method for sending scheduling information is provided. The method includes: sending scheduling information including multiple scheduling elements. Each scheduling element of the multiple scheduling elements includes scheduling information and data flow information.
[0012] Furthermore, a computer program is provided for implementing one of the above methods when executed on a computer or a signal processor. BRIEF DESCRIPTION OF THE DRAWINGS
[0013] The embodiments of the present invention are described in more detail below with reference to the accompanying drawings, in which:
[0014] Figure 1 is a device according to an embodiment.
[0015] Figure 2 An apparatus 200 for sending scheduling information according to an embodiment is illustrated.
[0016] Figure 3 A system according to an embodiment is illustrated.
[0017] Figure 4 Four network topologies are illustrated.
[0018] Figure 5 illustrates the general layer structure of a serializer / deserializer node.
[0019] Figure 6 The packet / frame format in the packet layer protocol is illustrated.
[0020] Figure 7 The frame structure is illustrated, sent in defined fragments distributed over several packets at the data link and transport layers.
[0021] Figure 8 An example of a sender schedule is illustrated.
[0022] Fig. 9 A table including minimum necessary scheduling information is illustrated.
[0023] Fig.10 A table including information used to construct a header of each packet is illustrated.
[0024] Fig.11 A representation of scheduling information according to a first example is illustrated.
[0025] Fig.12 A representation of scheduling information according to a second example is illustrated, wherein 50% is used for the first stream and 25% is used for each of the second stream and the third stream.
[0026] Fig.13 A representation of scheduling information according to a third example is illustrated, in which one time slot is used for GPIO and the remaining time slots are used for three videos.
[0027] Fig.14 A point-to-point link with two data link layers is illustrated.
[0028] Fig.15 A table for multiplexing different streams onto the physical layer is illustrated.
[0029] Fig.16 A daisy chain example is shown.
[0030] Fig.17 The two parts of the receiver demultiplexing table are illustrated.
[0031] Fig.18 A plurality of connected nodes and their connections are illustrated.
[0032] Fig.19 An example of an assignment for a connection is illustrated. DETAILED DESCRIPTION
[0033] Figure 1 An apparatus 100 for transmitting multiple data streams according to an embodiment is illustrated.
[0034] The apparatus 100 comprises a scheduling unit 110 for selecting a data stream from the plurality of data streams as a selected data stream.
[0035] Furthermore, the arrangement comprises a sending unit 120 for sending the selected data stream.
[0036] The scheduling unit 110 is configured to select a selected data stream from the multiple data streams according to scheduling information and the counter value, wherein the scheduling information includes multiple scheduling elements, and each of the multiple scheduling elements includes selection information and data stream information.
[0037] For each scheduling element in the plurality of scheduling elements, a data flow in the plurality of data flows is assigned to the scheduling element. The data flow information of the scheduling unit is data flow information assigned to the data flow of the scheduling unit.
[0038] Furthermore, for each scheduling element of the plurality of scheduling elements, a selection criterion is satisfied or not satisfied according to the selection information of the scheduling element and according to the counter value.
[0039] According to the order of the plurality of scheduling elements of the scheduling information, the scheduling unit 110 is configured to select, from the plurality of selected data streams, a data stream assigned to a selection element among the plurality of selection elements that meets a selection criterion as a selected data stream.
[0040] In order to select the selected data stream, the scheduling unit 110 is configured to determine whether a selection criterion is met according to the counter value and the selection information of the scheduling element for at least one scheduling element of the multiple scheduling elements of the scheduling information or for each scheduling element of the multiple scheduling elements of the scheduling information.
[0041] In an embodiment, the scheduling unit 110 may be configured to sequentially process the plurality of scheduling elements of the scheduling information, for example, until the scheduling unit 110 finds a scheduling element that satisfies the selection criterion.
[0042] According to an embodiment, the scheduling unit 110 may be configured, for example, to determine, in the determining step, for a current scheduling element among the multiple scheduling elements of the scheduling information, whether the current scheduling element satisfies a selection criterion. If the current scheduling element satisfies the selection criterion, the scheduling unit 110 may be configured, for example, to determine the selected data stream using the data stream information of the current scheduling element in the selecting step. If the current scheduling element does not satisfy the selection criterion, the scheduling unit 110 may be configured, for example, to update the current scheduling element in the updating step, and select another scheduling element among the multiple scheduling elements as the current scheduling element according to the order of the multiple scheduling elements of the scheduling information.
[0043] In an embodiment, the order of the plurality of scheduling elements of the scheduling information is defined such that the plurality of scheduling elements are ordered in the following manner: none of the plurality of scheduling elements precedes the first scheduling element of the plurality of scheduling elements, none of the plurality of scheduling elements follows the last scheduling element of the plurality of scheduling elements, and each scheduling element of the plurality of scheduling elements that is different from the first scheduling element and different from the last scheduling element has exactly one directly preceding scheduling element in the plurality of scheduling elements and has exactly one directly following scheduling element in the plurality of scheduling elements. In the updating step, if the current scheduling element should not be used to determine the selected data stream, and if the current scheduling element is neither the first scheduling element nor the last scheduling element, the scheduling unit 110 may, for example, be configured to update the current scheduling element and select the directly preceding scheduling element or the directly following scheduling element of the current scheduling element as the current scheduling element according to the search direction. The search direction is an increasing search direction or a decreasing search direction. If the search direction is an increasing search direction, the scheduling unit 110 may, for example, be configured to select the directly following scheduling element. If the search direction is a decreasing search direction, the scheduling unit 110 may, for example, be configured to select the directly preceding scheduled element.
[0044] In an embodiment, the scheduling unit 110 may be configured to repeat the determining step and the updating step, for example, until the scheduling unit 110 determines that the current scheduling element should be used to determine the selected data stream. Alternatively, the scheduling unit 110 may be configured to repeat the determining step and the updating step, for example, until the scheduling unit 110 determines that the current scheduling element should be used to determine the selected data stream or until a criterion for stopping the search is met.
[0045] According to an embodiment, if the search direction is an increasing search direction and if the current scheduled element is the last scheduled element, and if the last scheduled element should not be used to determine the selected data stream, then the criterion for stopping the search may be met, for example. Alternatively, if the search direction is a decreasing search direction and the current scheduled element is the first scheduled element, and if the first scheduled element should not be used to determine the selected data stream, then the criterion for stopping the search may be met, for example.
[0046] In an embodiment, the scheduling unit 110 may be configured to process at least two scheduling elements of the plurality of scheduling elements of the scheduling information in parallel, to determine, for each of the at least two scheduling elements, whether the scheduling element satisfies a selection criterion.
[0047] In an embodiment, the scheduling unit 110 is configured to: determine whether a selection criterion is met for two or more scheduling elements of the scheduling information or for all scheduling elements of the scheduling information to obtain a group of one or more scheduling elements that meet the selection criterion. The scheduling unit 110 is configured to: select a scheduling element from the group of one or more scheduling elements that meet the selection criterion as a selected scheduling element according to the order of the multiple scheduling elements of the scheduling information. The scheduling unit 110 selects a data stream assigned to the selected scheduling element as a selected data stream.
[0048] According to an embodiment, if the group of one or more scheduling elements that satisfy the selection criteria includes more than one scheduling element of the multiple scheduling elements of the scheduling information, the scheduling unit 110 is configured to select a selected scheduling element from the group of one or more scheduling elements that satisfy the selection criteria according to the order of the multiple scheduling elements of the scheduling information.
[0049] In an embodiment, the order of the multiple scheduling elements of the scheduling information is defined such that the multiple scheduling elements are ordered in the following manner: none of the multiple scheduling elements is before the first scheduling element of the multiple scheduling elements, none of the multiple scheduling elements is after the last scheduling element of the multiple scheduling elements, and each scheduling element of the multiple scheduling elements that is different from the first scheduling element and different from the last scheduling element has exactly one directly preceding scheduling element in the multiple scheduling elements that is immediately before the scheduling element, and has exactly one directly succeeding scheduling element in the multiple scheduling elements that is immediately succeeding the scheduling element.
[0050] According to an embodiment, if any one of the plurality of scheduling elements of the scheduling information does not satisfy the selection criterion, the scheduling unit 110 is configured to select the selected data stream from the plurality of data streams by performing a subsequent selection step. The scheduling unit 110 is configured to perform the subsequent selection step without considering the plurality of scheduling elements of the scheduling information.
[0051] In an embodiment, the scheduling unit 110 is configured to perform a subsequent selection step by selecting a port ID from the stack to select the selected data flow.
[0052] For example, the stack may include a request for best effort traffic.
[0053] According to an embodiment, the scheduling unit 110 is configured to use a credit-based scheduler for the subsequent selection step.
[0054] In an embodiment, the selected data stream may be, for example, a first selected data stream. After the scheduling unit 110 selects the first selected data stream, the scheduling unit 110 may be, for example, configured to select another data stream in the plurality of data streams as the second selected data stream. After the sending unit 120 sends the data unit of the first selected data stream, the sending unit 120 may be, for example, configured to send the data unit of the second selected data stream. After the scheduling unit 110 selects the first selected data stream, the scheduling unit 110 may be, for example, configured to modify the counter value. In order to select the second selected data stream, the scheduling unit 110 may be, for example, configured to: select, from the plurality of selected data streams, a data stream assigned to a selection element in the plurality of selection elements that meets the selection criteria according to the order of the plurality of scheduling elements of the scheduling information as the second limited data stream. In order to select the second selected data stream, the scheduling unit 110 may be, for example, configured to: for at least one scheduling element in the plurality of scheduling elements of the scheduling information or for each scheduling element in the plurality of scheduling elements of the scheduling information, determine whether the selection criteria are met according to the counter value modified by the scheduling unit 110 and according to the selection information of the scheduling element.
[0055] For example, the scheduling unit 110 may, for example, operate on a certain size of data blocks / data units, wherein the size may, for example, be configurable, for example, at initialization, and thus may, for example, be a fixed size at runtime. For example, the size may depend on the data rate and / or time slot of the underlying data transmission medium. Thus, deterministic allocation of an exact portion of the total available bandwidth becomes possible. A data stream may, for example, be a sequence of these data units. In other words, a data stream may, for example, include a plurality of data units.
[0056] According to an embodiment, before or after the scheduling unit 110 modifies the counter value, the scheduling unit 110 may be configured to determine the counter comparison result by comparing the counter value with a threshold value, for example. If the counter comparison result is equal to the first counter comparison result, the scheduling unit 110 may, for example, set the counter value to the initial value. If the counter comparison result is not equal to the first counter comparison result, the scheduling unit 110 may, for example, be configured not to set the counter value to the initial value.
[0057] In an embodiment, the apparatus 100 may be configured, for example, to select and send one or more additional selected data streams from the plurality of data streams. In order to select each additional selected data stream from the one or more additional selected data streams, the scheduling unit 110 may be configured, for example, to modify the counter value, and the scheduling unit 110 may be configured, for example, to select, from the plurality of selected data streams, a data stream assigned to a selection element from the plurality of selection elements that meets a selection criterion according to the order of the plurality of scheduling elements of the scheduling information as the additional selected data stream. In order to select the additional selected data stream, the scheduling unit 110 may be configured, for example, to determine, for at least one scheduling element from the plurality of scheduling elements of the scheduling information or for each scheduling element from the plurality of scheduling elements of the scheduling information, whether the selection criterion is met according to the counter value modified by the scheduling unit 110 and according to the selection information of the scheduling element. The sending unit 120 is configured to send each data stream from the one or more additional data streams selected by the scheduling unit 110.
[0058] According to an embodiment, the sending unit 120 may, for example, be configured to send the one or more further selected data streams in the same order as the scheduling unit 110 selects the one or more further selected data streams.
[0059] In an embodiment, the selection information may, for example, include a slot mask and a slot value. The scheduling unit 110 may, for example, be configured to combine the counter value and the slot mask according to a combination rule to obtain a combined value. For example, if the combined value is equal to the slot value, the current scheduling element should be used to determine the selected data stream. For example, if the combined value is not equal to the slot value, the current scheduling element should not be used to determine the selected data stream.
[0060] According to an embodiment, the scheduling unit 110 may, for example, be configured to combine the counter value and the slot mask according to a combination rule, for example including performing a bitwise operation.
[0061] In an embodiment, the bitwise operation may be, for example, an AND operation, or an OR operation, or a NAND operation, or a NOR operation, or an XOR operation, or an XNOR operation.
[0062] According to an embodiment, the combination rule may include, for example, performing a shift operation after a bitwise operation. For example, an example of a combination rule may be, for example, performing an AND combination on the counter and the binary value 0011, and then shifting the result right by 2 bits.
[0063] According to an embodiment, each scheduling element of the plurality of scheduling elements of the scheduling information may, for example, be assigned to exactly one data stream of the plurality of data streams.
[0064] In an embodiment, for a data flow of the plurality of data flows, two or more scheduling elements of the plurality of scheduling elements of the scheduling information may, for example, be assigned to the data flow.
[0065] According to an embodiment, the data flow information of the current scheduling element may include, for example, at least one of the following:
[0066] - a port identifier identifying the port,
[0067] - a stream identifier identifying the data stream assigned to the current scheduled element,
[0068] - a target node identifier, identifying the target node to which the data flow assigned to the current scheduling element should be sent,
[0069] - Data unit number, identifying the data unit assigned to the data flow of the current scheduling element.
[0070] For example, the port identifier includes information for selecting the next data unit to be sent. For example, the flow identifier and the target node can be attached to the port identifier, for example. The complete information can be organized, for example, in a header. The header can, for example, also include the data unit number and can, for example, be CRC protected. Other functions can, for example, be performed, such as demultiplexing (delivering the data unit to the correct output port at the receiver) and / or switching and / or routing to the correct port in the forwarding node.
[0071] In an embodiment, the apparatus may, for example, be configured to receive scheduling information including the plurality of scheduling elements. Each of the plurality of scheduling elements may, for example, include scheduling information and data flow information.
[0072] According to an embodiment, the scheduling information may, for example, include index information of the range of the plurality of scheduling elements.
[0073] According to an embodiment, the scheduling information may, for example, further include a cyclic redundancy check code, which provides verification information for the plurality of scheduling elements. The apparatus may, for example, be configured to use the cyclic redundancy check code to verify whether the plurality of scheduling elements are correctly received.
[0074] In an embodiment, the scheduling information of each of the plurality of scheduling elements may, for example, include a time slot mask and a time slot value for the scheduling element. The data flow information of each of the plurality of scheduling elements may, for example, include at least one of the following: a port identifier identifying a port, a flow identifier identifying one of the plurality of data flows, and a target node identifier identifying a target node.
[0075] Figure 2The apparatus 200 for sending scheduling information according to an embodiment is illustrated. The apparatus 200 is configured to send scheduling information including a plurality of scheduling elements. Each scheduling element of the plurality of scheduling elements includes scheduling information and data flow information.
[0076] According to an embodiment, the scheduling information may, for example, further include a cyclic redundancy check code, which provides check information for the multiple scheduling elements.
[0077] In an embodiment, the scheduling information of each of the plurality of scheduling elements may, for example, include a time slot mask and a time slot value for the scheduling element. The data flow information of each of the plurality of scheduling elements may, for example, include at least one of the following: a port identifier identifying a port, a flow identifier identifying one of the plurality of data flows, and a target node identifier identifying a target node.
[0078] Figure 3 A system according to an embodiment is illustrated. The system includes Figure 2 The apparatus 200 for sending scheduling information described above. In addition, the system includes Figure 1 An apparatus 100 for transmitting multiple data streams is described.
[0079] Figure 2 The device 200 is configured to send the scheduling information to Figure 1 device.
[0080] Figure 1 The apparatus 100 is configured to Figure 2 The device receives scheduling information.
[0081] Figure 1 The scheduling unit 110 of the apparatus 100 is configured to use Figure 2 The apparatus 200 receives the scheduling information and selects a data stream from the multiple data streams as the selected data stream.
[0082] Figure 1 The sending unit 120 of the apparatus 100 is configured to send the selected data stream.
[0083] according to Figure 3 An embodiment of a system, Figure 1 The sending unit 120 of the apparatus 100 may be configured, for example, to Figure 2 The device 200 sends the selected data stream.
[0084] exist Figure 3 In an embodiment of the system, Figure 1 The device 100 may for example be based on Figure 1The system may also include: one or more additional Figure 1 The device 101 is used to send one or more additional data streams. Figure 1 Each device 101 in the device 101,
[0085] -according to Figure 2 The apparatus 200 may be configured, for example, to provide a Figure 1 The device 101 sends according to Figure 1 scheduling information of the device 101,
[0086] -according to Figure 1 The device 101 may for example be configured to Figure 2 The device 200 receives the scheduling information,
[0087] -according to Figure 1 The scheduling unit 110 of the apparatus 101 may be configured to use Figure 2 The scheduling information received by the apparatus 200, selecting a data stream from one of the one or more other data streams as a selected data stream, and
[0088] -according to Figure 1 The sending unit 120 of the apparatus 101 may, for example, be configured to send the selected data stream.
[0089] according to Figure 3 Embodiments of the system, for which one or more additional Figure 1 For each device 101 in the device 101, the sending unit 120 of the device 101 may be configured to send Figure 2 The device sends the selected data stream selected by the device 101.
[0090] Furthermore, a motor vehicle is provided which comprises a system according to one of the above-described embodiments.
[0091] According to an embodiment, the motor vehicle may be, for example, a car or a motor truck.
[0092] In an embodiment, the system is based on assigning traffic of different flows to fixed-length time slots and scheduling these time slots using a weighted round-robin approach to ensure that available bandwidth is allocated to different data flows with absolute certainty.
[0093] The schedule is encoded in an efficient way so that several flows with widely different throughputs can be configured in a small number of table entries. This will also allow fast reconfiguration in case of low power states of the source, changes in port weights (bandwidth allocations) or activity / inactivity.
[0094] Flows carry unique identifiers across the network branches, which are retained in the daisy-chain nodes. Packet integrity can be checked for each link segment through CRC and packet counter evaluation of each header.
[0095] Figure 4 Possible network topologies are illustrated, which may be supported by the required routing or flow management mechanisms.A daisy chain is simply a linear topology of an arbitrary number (n) of nodes.
[0096] A tree is an extension of the daisy chain, where each node can be connected to any number (more than two) of link segments (each link segment through a physical layer instance).
[0097] A ring is a linear topology that loops back on the first node in the linear topology. The flow management mechanism does not depend on a ring topology, but can be configured to handle any loop (meaning that there is at least one alternative path for the link segment from node A to another node B).
[0098] A star is a special form of a tree where, except for the central node, each node is connected to only a single link segment.
[0099] Each node in the topology can act as a source for a large number of flows, as a sink for a large number of flows, and as a forwarder for a large number of flows. The number of flows that can be handled is determined by the size of the sender's schedule.
[0100] Figure 5 The general layer structure of a SerDes node is illustrated. There is a physical layer with a single interface / port, called a physical layer port (PLP), for payload data from and to higher layers. The higher layers (data link and transport layers) are responsible for managing flow control to the physical layer of data flows from a large number of input ports (again, input from higher layers (applications)), called data link and transport layer ports (DTLP) on the transmitter side; and managing the distribution of aggregated data flows from the physical layer to a large number of output ports to higher layers on the receiver side. To do this, the transmitter side uses a transmitter scheduling table and the receiver side uses a receiver flow assignment table.
[0101] It is assumed that each node has at least a physical layer transmitter, a physical layer receiver, data link and transport layer receive functions, and data link and transport layer transmit functions.
[0102] The physical layer is assumed to be full duplex. Any type of echo cancellation or other techniques to ensure correct (meeting target data rate and bit error rate) data reception (while transmitting at the same time) is handled by the physical layer. The data link and transport layers do not handle collisions.
[0103] Therefore, the physical layer can also be half-duplex or dual-simplex; these properties are usually encapsulated in the physical layer and not exposed to higher layers, and therefore do not interfere with scheduler operation.
[0104] Figure 6 The packet / frame format at the PLP is shown. The packet / frame format consists of a header and a payload data field. The header should include at least the stream ID information, which is read on the receiver side to assign the received packet / frame to the correct output DTLP. The node ID can help maintain the uniqueness of the stream identification if each additional information (node ID) is used only once in the network; it is an extended stream identifier.
[0105] The target ID can be used to identify the node ID (e.g., address) at which the packet "leaves the network". This information can be used to double check or error detection for receiver demultiplexing at the target node and facilitate forwarding packets at intermediate nodes. This field can be a single target ID, a list of target IDs, or the field can be encoded (to take up fewer bits) as a first target ID and multiple (shorter) offset values for additional target IDs.
[0106] The Packet ID comprises a counter value which is incremented by the sending Data Link and Transport layers for each new packet / frame which is passed to the PLP. The Packet ID may be a global counter for all flows of a node.
[0107] Alternatively, each flow has its own packet ID counter. The length of the counter is finite and once it reaches the maximum value it will overflow (run over) to 0 (or a defined minimum value) and increment again. The packet ID counter can be used as an error detection mechanism: each final flow sink is expecting packet IDs in ascending order (going from the maximum value to 0 (or a defined minimum value) is also considered ascending order) and is expecting no missing packet IDs. Any other received sequence of packet IDs indicates some kind of error between the flow source DTLP and the sink DTLP.
[0108] The MgmtDatafield (or Management Data Field) is used for internal communication between two data links and the transport layer connected (via the corresponding physical layer instance) to a link segment. The communication can use a fixed set of predefined fields or a frame structure that requests information from certain register addresses. The predefined set of fields or the frame structure can be integrated into a single DTLP packet / frame payload or it can be segmented and sent over several DTLP packets / frames.
[0109] All of these fields preferably have a fixed length to simplify decoding of the header in the receiver. However, variable length fields are possible and may be useful, especially for the MgmtDatafield. The order of the fields does not have any effect; it only needs to be defined between sending DTLP and receiving DTLP.
[0110] The CRC (Cyclic Redundancy Check) can be run on the entire field or on excerpts of the field. It provides a mechanism to check the header information for data corruption. It can be evaluated by the receiving data link and transport layers. It can exist even if the physical layer uses error correction mechanisms (which will also be used to mark any data corruption of the packet / frame).
[0111] CRC is just one example of a data integrity check, and any other known technique may be used to perform the same function.
[0112] To facilitate scalable internal communication through MgmtDatafield, a frame structure can be used, which is sent in defined fragments distributed over several packets at the data link and transport layers.
[0113] Figure 7 An example of a frame structure is shown. There are header and payload fields. The StartFrame marker and the EndFrame marker are used for flexible frame sizes and can be omitted when the MgmtData-Frame is a fixed size. The order of the frame start and header can also be reversed. When a flexible frame size is used to allow for the StartFrame marker and the EndFrame marker, the payload is encoded. Fixed frame sizes can use encoded and unencoded payloads. The payload either sends information in a predefined period or uses a command, address, and data scheme that includes certain operations (such as requesting a read / write register and returning a response).
[0114] Figure 8 An example of a transmitter scheduling table is shown. The table has n entries, preferably a power of 2, such as 256. The scheduler runs a counter that starts at some initial value (such as 0) and increments for each packet put into the physical layer. The table also includes a setting "counter_max" that defines at what value the counter overflows and is reset to "counter_min". If counter_max is omitted, the counter will overflow at the maximum value defined by its bit width, which should be equal to or less than the number of rows in the table. If counter_min is not used, the counter is reset to all zeros.
[0115] Line_min and Line_max define the range of the table, which is evaluated after each counter increment. Setting Line_min and Line_max to only a portion of the filled rows in the table essentially enables "sub-tables". This can be used to implement two or more different schedules in the table, which can be switched by simply changing Line_min and Line_max.
[0116] For each new value of the counter, the table is evaluated as follows:
[0117] - Starting from the "Line_min" row, the counter value is a logical value and is concatenated with the slot-mask field of that row and compared with the slot-value field of that row
[0118] - If the comparison is negative, the same evaluation is done on the next row
[0119] - If the comparison is positive, the packet corresponding to the port value in this row is placed into the physical layer, the counter is incremented and the evaluation starts again
[0120] In other words, instead of having to evaluate to positive for just a single counter value, the rows of the schedule table have a precedence order: the lowest row number between Line_min and Line_max that evaluates to positive wins.
[0121] Evaluation of rows may be performed in parallel to speed up evaluation, and precedence rules may be applied to rows that evaluate to positive.
[0122] Flow IDs may be assigned like port numbers; alternatively, the schedule table may include separate columns for port numbers and flow IDs for independent assignment of flow IDs.
[0123] A certain Flow ID (e.g. 0x00) may remain reserved for internal management / supervision data between nodes (in addition to the MgmtField in the header, or in place of the MgmtField in the header). Several reserved Flow IDs for network internal functions such as node management and debugging or security are possible.
[0124] Locally generated streams can get assigned a destination node ID, which makes it possible to forward with a smaller decoder table. An empty or all-zero "Destination Node ID" field can specify reception from a forwarding port. In this case, DTL does not generate a header for the packet, but reads the header from the port.
[0125] To save memory, the minimum necessary scheduling information can be kept in a table, such as Fig. 9 Indicates.
[0126] And the information used for the header construction of each packet can be kept in another table, such as Fig.10 Indicates.
[0127] This avoids duplication.
[0128] The combination of the counter mask information and the precedence rules is an efficient and easily evaluated representation of the scheduling information. Complex schedules can be encoded into a small number of rows. At the same time, if the slot-mask is set to all ones, the table can be used in a conventional way, where each row includes and only evaluates positive values under a single counter value. A mixture of the two notations is also possible.
[0129] Here are some examples:
[0130] Fig.11 A first example is illustrated: one time slot is used for GPIO and the rest are evenly spaced between the two video streams.
[0131] Fig.12 A second example is illustrated: the first flow is 50%, and each of the second and third flows is 25%.
[0132] Fig.13 A third example is illustrated: one time slot is used for GPIO and the remaining 33% is used for three videos.
[0133] As can be seen from these examples, relatively long schedules with fine-grained bandwidth assignment / allocation can be achieved by utilizing descriptions with very few rows in the table.
[0134] The scheduler must provide at least the bandwidth required by the port (or top protocol), but it can also provide more. This mismatch may be unavoidable because the granularity of the scheduler is not infinitesimally precise. This means that sometimes there will be no or not enough data from the port and the time slot will be wasted. In this case, there may be something like a best-effort port (or port ID stack) that is not included in the normal schedule and only starts sending data when a regular port in the schedule loses a time slot. There is no bandwidth allocation guarantee for best-effort ports.
[0135] Fig.14 The description of a point-to-point link with two data link layers is shown. The different streams that have been multiplexed into the physical layer must be demultiplexed at the receiver side to the output ports of the data link and transport layers. This is again done using tables such as Fig.15 Indicates.
[0136] The combination of Node ID. Flow ID is a unique identifier for a logical flow in the network and is used for lookup. The receiving DTL must decode the packet header, check the CRC and use the fields Node ID and Port ID for table lookup. The found Port ID gets the packet. This is done for each received packet. DTLP can detect and log errors like a bad CRC or a Node ID. Flow ID pair not found in the receiver's demultiplexing table. Error packets like these should be discarded.
[0137] This table is needed as long as there are possible local ports.
[0138] Multiplexing technology supports more than just point-to-point connections. This means that there is a network device / chip ( Fig.16 Data flow forwarded between nodes 2 and 3 in the illustrated daisy chain example.
[0139] A communications node may be, for example, a physical or logical device configured to send and / or receive data streams.
[0140] To support this, the receiver demultiplexing table has a second section such as Fig.17 As shown, the second part includes the output port ID to which each packet needs to go for each target node ID. Several target IDs can be mapped to the same port because these parts are other hops far away but are all connected to the link behind the port. (In Fig.17 , node 4 can connect to other nodes 5, 6, and 7, and all of these destination IDs will be forwarded through the same port in node 2). See also Fig.18 A more abstract diagram of .
[0141] Star and tree topologies have multiple forwarding connections between at least three DTLs in at least one node of the network. A receiving DTL can be connected to any number of DTLs through its output port, but only one port is required for each DTL because routing is handled by the destination ID and any number of logical flows can share the port.
[0142] The second part of the receiver demultiplex table is organized by target ID instead of node ID.stream ID to save space / memory. The number of nodes (and possible target IDs) of a network is always less than or equal to the number of possible logical flows, because each node has at least one logical flow (slow control or fast data) originating from it. A hypothetical network can be constructed where only one node produces data, several nodes consume it and there is no control flow (back channel). Here, there are more nodes than logical flows, but this example is not important in practice.
[0143] The destination ID is carried in the packet's header (see above), and the information is available concurrently with, and extracted in the same manner as, the demultiplexing of a local (non-forwarded) output port. Multiple destination IDs are used to enable stream duplication. Fig.18 In the example above, if a stream originating from node 1 will carry destination IDs 7 and 8, the receiving DTL in node 2 will send it to nodes 4 and 5 over the port, thus performing streaming replication.
[0144] In this forwarding scenario, sender scheduling must also be handled for each intermediate send DTL. Flows that traverse the network farther than point-to-point (e.g. Fig.18 Streams or protocol conversions in a daisy-chain topology (#2, #3, and #4) must rely on guaranteed bandwidth allocations on all hops (or link segments).
[0145] In the basic case, there is one clock master in the network and all other clocks synchronize their local oscillators to it, so that on average the data rates of the links are at a fixed ratio. There may be different speed physical layers, so the first link (from node 1 to node 2 in the daisy chain example) runs at 2Gbps and the second link (from node 3 to node 4) runs at 4Gbps. If the number of slots in one round of the scheduler is chosen so that the bandwidth per slot on the first and second link is equal, then the same number of slots allocated to the flow on both schedulers guarantees bandwidth on the daisy chain. PT FW (protocol forwarding) requires the implementation of buffers (FIFOs) to compensate for short term differences between local oscillators.
[0146] Instead of oscillator-based synchronization, timestamp-based synchronization can be used to facilitate network forwarding without any buffer overflows, which is based on a logical clock. For example, timestamps based on a mechanism similar to or comparable to the Precision Time Protocol can be used.
[0147] In the case where the bandwidth per time slot is not equal or in some manageable reasonable fraction ratio, the bandwidth reservation on the second link must be greater than the bandwidth reservation on the first link. In this case, the buffer in the PT FW will underflow from time to time and the scheduler in node 3 will have nothing to send. The same applies to empty time slots and the possibility of best effort traffic as described above.
[0148] In more complex cases, where the clocks of the nodes are not synchronized but are accurate only within a certain clock skew specification "clk_prcsnppm", reserving the same number of slots for nominally equal bandwidth per slot is not feasible. Instead, the total number of schedulers to use slots1 can be calculated by:
[0149] Slots1>Slots2*(1e6+clk_prcsn1) / (data_rate1 / data_rate2*1e6-clk_prcsn2)
[0150] Here, link 1 with nominal data_rate1 and clk_prscn1 is sent to link 2 with data_rate2 and clk_prscn2 and is scheduled using the total number of "slots2".
[0151] Under this condition of total scheduler slots, assigning the same number of slots to flows in one round of the scheduler guarantees bandwidth through the daisy chain (across hops).
[0152] Any other reservations in the case where link 2 bandwidth (slow clock) is equal to or greater than link 1 bandwidth (fast clock) also apply. The above approach achieves this condition for the same number of stream assigned time slots.
[0153] Fig.19 The assignment of one flow is described. The sending scheduler in the forwarding network node (node 3 in the daisy chain example) must of course assign enough slots for all logical flows forwarded through this port. The above calculation can be performed for each pair of links (slots1 is the first link, "m slots" above), and the necessary allocation is then the sum of all slots for all forwarded flows from the first link.
[0154] Using the forwarding flow functionality and the fact that each header includes a small portion of internal control / configuration / monitoring communications (MgmtInfoField), a (master) node that receives flows from several different nodes (and sends flows back to these nodes; e.g., control data) can run several independent internal control communication sessions and can therefore manage the nodes on the network. For example, in the daisy chain example above, flows for protocols #6 and #7 are used for the session between node 4 and node 3; while flows for protocols #2, #3, and #4 are used to run the session between node 4 and node 1.
[0155] In case of repeated streams, only one (e.g. the first) target ID can be used to transmit a segment of the control session (actually a segment of the receive control session). Otherwise the receiver is confused and generates a large number of error frames.
[0156] In case a bidirectional communication is not possible, the scheduler may append a control session frame with flow ID=0 and the necessary destination node as payload.
[0157] Therefore, in an embodiment, a system for transmitting a set of data streams is provided. The system includes a plurality of communication nodes.
[0158] Each of the plurality of communication nodes is configured to transmit at least one data stream of the set of data streams and / or is configured to receive one or more data streams of the set of data streams.
[0159] One or more of the plurality of communication nodes include Figure 1 The invention relates to an apparatus 100 for sending a plurality of data streams, wherein the group of data streams comprises the plurality of data streams.
[0160] According to an embodiment, comprising Figure 1 At least one of the one or more communication nodes of the plurality of communication nodes of the apparatus 100 may be, for example, a forwarding node, and the forwarding node may be configured to: for each of the plurality of data streams, receive the data stream from a first node of the plurality of communication nodes, and send the data stream to a second node of the plurality of communication nodes, wherein the data stream may, for example, include header information, wherein the header information may, for example, include a stream identifier of the data stream. The at least one node may, for example, include a demultiplexing table, which may, for example, include a plurality of table entries for mapping the stream identifier to an output port. In addition, the at least one node may, for example, be configured to use the header information of the data stream and the demultiplexing table to determine the second node of the plurality of communication nodes to which the data stream should be sent.
[0161] In one embodiment, the at least one node may be configured, for example, to receive two or more of the plurality of data streams from an intermediate node of the plurality of communication nodes, wherein the intermediate node does not include Figure 1 device 100.
[0162] According to an embodiment, the at least one node may, for example, be configured to replicate a data stream of the plurality of data streams to obtain two generated data streams. Figure 1 In the apparatus 100, the at least one node may, for example, be configured to send the two generated data streams to two different nodes among the plurality of communication nodes.
[0163] A specific feature of an embodiment of the present invention is an efficiently implementable and flexibly adjustable transmitter scheduler or serializer scheduler, or an efficiently implementable and flexibly adjustable receiver de-scheduler or de-serializer.
[0164] In an embodiment, the configuration possibilities of the transmitter scheduler or the serializer scheduler can be written via registers.
[0165] Embodiments may be used in many different scenarios where different data streams have to be sent, such as in automotive applications where data streams from different sensors such as radar sensors, optical sensors, etc., are serialized, sent, deserialized, and processed, e.g. for autonomous driving.
[0166] The transmission signal or reception signal of the present invention may be stored in a digital storage medium or a non-transitory storage medium, or may be transmitted over a transmission medium (eg, a wireless transmission medium or a wired transmission medium, such as the Internet).
[0167] In an embodiment, a transmitter or serializer as described above or using a transmitter schedule is provided.
[0168] Furthermore, in another embodiment, a receiver or deserializer as described above or using a receiver stream assignment table is provided.
[0169] Furthermore, according to an embodiment, a method of transmitting or serializing as described above or using a transmitter schedule is provided.
[0170] Furthermore, in another embodiment, a method of receiving or deserializing as described above or using a receiver stream assignment table is provided.
[0171] Furthermore, a computer program is provided for performing one of the above methods when run on a computer or a processor.
[0172] Furthermore, there is provided a method for transmitting or receiving a signal as described above.
[0173] Although some aspects have been described in the context of an apparatus, it is clear that these aspects also represent descriptions of corresponding methods, where blocks or devices correspond to method steps or features of method steps. Similarly, aspects described in the context of method steps also represent descriptions of items or features of corresponding blocks or corresponding apparatus. Some or all method steps may be performed by (or using) hardware devices, such as microprocessors, programmable computers, or electronic circuits. In some embodiments, one or more of the most important method steps may be performed by such devices.
[0174] According to certain implementation requirements, embodiments of the present invention may be implemented in hardware or in software or at least in part in hardware or at least in software. The implementation may be performed using a digital storage medium, such as a floppy disk, DVD, Blu-ray, CD, ROM, PROM, EPROM, EEPROM or flash memory, on which electronically readable control signals are stored, which cooperate (or can cooperate) with a programmable computer system to perform the corresponding method. Therefore, the digital storage medium may be computer readable.
[0175] Some embodiments according to the invention comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, such that the system performs one of the methods described herein.
[0176] Generally, embodiments of the present invention can be implemented as a computer program product with a program code, the program code being operative for performing one of the methods when the computer program product runs on a computer.The program code may, for example, be stored on a machine readable carrier.
[0177] Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier or a non-transitory storage medium.
[0178] In other words, an embodiment of the inventive method is, therefore, a computer program having a program code for performing one of the methods described herein, when the computer program runs on a computer.
[0179] A further embodiment of the inventive method is, therefore, a data carrier (or a digital storage medium, or a computer-readable medium) on which is recorded the computer program for performing one of the methods described herein. The data carrier, the digital storage medium or the recorded medium are typically tangible and / or non-transitory.
[0180] A further embodiment of the inventive method is, therefore, a data stream or a sequence of signals representing the computer program for performing one of the methods described herein.The data stream or the sequence of signals may, for example, be configured to be transmitted via a data communication connection, for example via the Internet.
[0181] A further embodiment comprises a processing means, for example a computer or a programmable logic device, configured to or adapted to perform one of the methods described herein.
[0182] A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.
[0183] Another embodiment according to the invention comprises: an apparatus or system configured to transmit (e.g., electronically or optically) to a receiver a computer program for performing one of the methods described herein. For example, the receiver may be a computer, a mobile device, a storage device, etc. For example, the apparatus or system may comprise a file server for transmitting the computer program to the receiver.
[0184] In some embodiments, a programmable logic device (e.g., a field programmable gate array) may be used to perform some or all of the functions of the methods described herein. In some embodiments, a field programmable gate array may collaborate with a microprocessor to perform one of the methods described herein. Typically, these methods are preferably performed by any hardware device.
[0185] The devices described herein may be implemented using hardware devices, or using computers, or using a combination of hardware devices and computers.
[0186] The methods described herein may be performed using a hardware device, or using a computer, or using a combination of a hardware device and a computer.
[0187] The above embodiments are only used to illustrate the principles of the present invention. It should be understood that modifications and variations of the arrangements and details described herein will be apparent to those skilled in the art. Therefore, it is intended to be limited only by the scope of the pending patent claims, rather than by the specific details presented by the description and explanation of the embodiments herein.
Claims
1. An apparatus (100; 101) for transmitting a plurality of data streams, wherein the apparatus (100; 101) comprises: a scheduling unit (110), configured to select a data stream from the plurality of data streams as a selected data stream, and A sending unit (120), configured to send a selected data stream, The scheduling unit (110) is configured to select a selected data stream from the plurality of data streams according to scheduling information and according to a counter value, wherein the scheduling information comprises a plurality of scheduling elements, wherein each of the plurality of scheduling elements comprises selection information and data stream information, wherein, for each scheduling element in the plurality of scheduling elements, a data flow in the plurality of data flows is assigned to the scheduling element, wherein the data flow information of the scheduling element is the data flow information assigned to the data flow of the scheduling element, wherein, for each scheduling element of the plurality of scheduling elements, a selection criterion is satisfied or not satisfied according to selection information of the scheduling element and according to a counter value, According to the order of the plurality of scheduling elements of the scheduling information, the scheduling unit (110) is configured to select, from the plurality of selected data streams, a data stream assigned to a selection element that meets a selection criterion among the plurality of selection elements as the selected data stream, In order to select the selected data stream, the scheduling unit (110) is configured to determine whether a selection criterion is met according to a counter value and selection information of the scheduling element for at least one scheduling element of the multiple scheduling elements of the scheduling information or for each scheduling element of the multiple scheduling elements of the scheduling information.
2. The device (100; 101) according to claim 1, in, The scheduling unit (110) is configured to sequentially process the plurality of scheduling elements of the scheduling information until the scheduling unit (110) finds a scheduling element that satisfies a selection criterion.
3. The device (100; 101) according to claim 1, in, The scheduling unit (110) is configured to: in the determining step, determine whether the current scheduling element among the multiple scheduling elements of the scheduling information satisfies the selection criterion, Wherein, if the current scheduling element meets the selection criteria, the scheduling unit (110) is configured to determine the selected data flow using the data flow information of the current scheduling element in the selection step, and If the current scheduling element does not meet the selection criteria, the scheduling unit (110) is configured to update the current scheduling element in the updating step and select another scheduling element from the multiple scheduling elements as the current scheduling element according to the order of the multiple scheduling elements of the scheduling information.
4. The device (100; 101) according to claim 3, in, an order of the plurality of schedule elements of the scheduling information is defined such that the plurality of schedule elements are ordered in the following manner: none of the plurality of schedule elements precedes a first schedule element of the plurality of schedule elements, none of the plurality of schedule elements follows a last schedule element of the plurality of schedule elements, and each schedule element of the plurality of schedule elements that is different from the first schedule element and different from the last schedule element has exactly one directly preceding schedule element in the plurality of schedule elements and has exactly one directly succeeding schedule element in the plurality of schedule elements that is immediately preceding the schedule element, and has exactly one directly succeeding schedule element in the plurality of schedule elements that is immediately succeeding the schedule element, Wherein, in the updating step, if the current scheduling element should not be used to determine the selected data stream, and the current scheduling element is neither the first scheduling element nor the last scheduling element, the scheduling unit (110) is configured to update the current scheduling element and select a scheduling element directly preceding or directly following the current scheduling element as the current scheduling element according to the search direction, Wherein, the search direction is an increasing search direction or a decreasing search direction; Wherein, the scheduling unit (110) is configured to: if the search direction is an increasing search direction, select the element to be scheduled directly afterwards; The scheduling unit (110) is configured to: if the search direction is a decreasing search direction, select the directly preceding scheduling element.
5. The device (100; 101) according to claim 4, in, The scheduling unit (110) is configured to repeat the determining step and the updating step until the scheduling unit (110) determines that the current scheduling element should be used to determine the selected data flow, or The scheduling unit (110) is configured to repeat the determining step and the updating step until the scheduling unit (110) determines that the current scheduling element should be used to determine the selected data stream or until a criterion for stopping the search is met.
6. The device (100; 101) according to claim 5, in, If the search direction is an increasing search direction and if the current scheduled element is said last scheduled element and if said last scheduled element should not be used to determine the selected data stream, then the criterion for stopping the search is met, or If the search direction is a decreasing search direction and if the current scheduling element is the first scheduling element, and if the first scheduling element should not be used to determine the selected data stream, then the criterion for stopping the search is met.
7. The device (100; 101) according to claim 1, in, The scheduling unit (110) is configured to process at least two scheduling elements of the plurality of scheduling elements of the scheduling information in parallel to determine, for each of the at least two scheduling elements, whether the scheduling element satisfies a selection criterion.
8. The device (100; 101) according to claim 1, in, The scheduling unit (110) is configured to: determine whether a selection criterion is satisfied for two or more scheduling elements of the scheduling information or for all scheduling elements of the scheduling information, so as to obtain a set of one or more scheduling elements satisfying the selection criterion, The scheduling unit (110) is configured to: select a scheduling element as a selected scheduling element from the group of one or more scheduling elements satisfying a selection criterion according to the order of the plurality of scheduling elements in the scheduling information, The scheduling unit (110) selects the data flow assigned to the selected scheduling element as the selected data flow.
9. The device (100; 101) according to claim 8, in, If the set of one or more scheduling elements satisfying the selection criterion includes more than one scheduling element of the plurality of scheduling elements of the scheduling information, the scheduling unit (110) is configured to: select the selected scheduling element from the set of one or more scheduling elements satisfying the selection criterion according to the order of the plurality of scheduling elements of the scheduling information.
10. The device (100; 101) according to claim 7, in, The order of the multiple scheduling elements of the scheduling information is defined such that the multiple scheduling elements are ordered in the following manner: none of the multiple scheduling elements precedes a first scheduling element of the multiple scheduling elements, none of the multiple scheduling elements follows a last scheduling element of the multiple scheduling elements, and each scheduling element of the multiple scheduling elements that is different from the first scheduling element and different from the last scheduling element has exactly one directly preceding scheduling element in the multiple scheduling elements and has exactly one directly succeeding scheduling element in the multiple scheduling elements.
11. The device (100; 101) according to claim 1, in, If none of the plurality of scheduling elements of the scheduling information satisfies the selection criterion, the scheduling unit (110) is configured to select the selected data stream from the plurality of data streams by performing a subsequent selection step, wherein the scheduling unit (110) is configured to perform the subsequent selection step without considering the plurality of scheduling elements of the scheduling information.
12. The device (100; 101) according to claim 11, in, The scheduling unit (110) is configured to perform a subsequent selection step by selecting a port ID from the stack to select a selected data flow.
13. The device (100; 101) according to claim 11, in, The scheduling unit (110) is configured to use a credit-based scheduler for the subsequent selection step.
14. The device (100; 101) according to claim 1, in, the selected data stream is a first selected data stream, wherein after the scheduling unit (110) selects the first selected data stream, the scheduling unit (110) is configured to select another data stream from the plurality of data streams as a second selected data stream, and After the sending unit (120) sends the data unit of the first selected data stream, the sending unit (120) is configured to send the data unit of the second selected data stream. wherein after the scheduling unit (110) selects the first selected data stream, the scheduling unit (110) is configured to modify the counter value, and Wherein, in order to select the second selected data stream, The scheduling unit (110) is configured to select, from the plurality of selected data streams, a data stream assigned to a selection element satisfying a selection criterion among the plurality of selection elements as a second selected data stream according to the order of the plurality of scheduling elements of the scheduling information, In order to select the second selected data stream, the scheduling unit (110) is configured to determine whether a selection criterion is met for at least one scheduling element among the multiple scheduling elements of the scheduling information or for each scheduling element among the multiple scheduling elements of the scheduling information according to a counter value modified by the scheduling unit (110) and according to the selection information of the scheduling element.
15. The device (100; 101) according to claim 14, in, Before or after the scheduling unit (110) modifies the counter value, the scheduling unit (110) is configured to determine a counter comparison result by comparing the counter value with a threshold value, The scheduling unit (110) is used to: if the counter comparison result is equal to the first counter comparison result, set the counter value to an initial value, and The scheduling unit (110) is used for: if the counter comparison result is not equal to the first counter comparison result, not setting the counter value to the initial value.
16. The device (100; 101) according to claim 14, wherein the device (100; 101) is used to select and transmit one or more further selected data streams from the plurality of data streams, in, for selecting each of the one or more further selected data streams, The scheduling unit (110) is configured to modify the counter value, and The scheduling unit (110) is configured to: select, from the plurality of selected data streams, a data stream assigned to a selection element satisfying a selection criterion among the plurality of selection elements according to the order of the plurality of scheduling elements of the scheduling information as the additional selected data stream, wherein, in order to select the additional selected data stream, the scheduling unit (110) is configured to determine, for at least one scheduling element of the plurality of scheduling elements of the scheduling information or for each scheduling element of the plurality of scheduling elements of the scheduling information, whether a selection criterion is met according to a counter value modified by the scheduling unit (110) and according to selection information of the scheduling element, The sending unit (120) is configured to send each data stream of the one or more additional data streams selected by the scheduling unit (110).
17. The device (100; 101) according to claim 16, in, The sending unit (120) is configured to send the one or more further selected data streams in the same order as the scheduling unit (110) selected the one or more further selected data streams.
18. The device (100; 101) according to claim 1, The selection information includes the time slot mask and the time slot value. The scheduling unit (110) is configured to combine the counter value and the time slot mask according to a combination rule to obtain a combined value, in, If the combined value is equal to the slot value, then the current schedule element shall be used to determine the selected data stream, and Therein, if the combined value is not equal to the time slot value, the current scheduling element should not be used to determine the selected data stream.
19. The device (100; 101) according to claim 18, in, The scheduling unit (110) is configured to combine the counter value and the time slot mask according to a combination rule, wherein the combination rule includes performing a bitwise operation.
20. The device (100; 101) according to claim 19, in, The bitwise operation is an AND operation, an OR operation, a NAND operation, a NOR operation, an XOR operation, or an XNOR operation.
21. The device (100; 101) according to claim 19, in, The combination rule involves performing a shift operation after the bitwise operation.
22. The device (100; 101) according to claim 1, in, Each scheduling element of the plurality of scheduling elements of the scheduling information is assigned to exactly one data stream of the plurality of data streams.
23. The device (100; 101) according to claim 22, in, For a data stream among the plurality of data streams, two or more scheduling elements among the plurality of scheduling elements of scheduling information are assigned to the data stream.
24. The device (100; 101) according to claim 1, in, The data flow information of the current scheduling element includes at least one of the following: a port identifier that identifies the port, a stream identifier identifying the data stream assigned to the current scheduled element, The target node identifier identifies the target node to which the data flow assigned to the current schedule element should be sent. The data unit number identifies the data unit assigned to the data flow of the current scheduling element.
25. The device (100; 101) according to claim 1, The apparatus (100; 101) is configured to receive scheduling information including the plurality of scheduling elements, in, Each of the plurality of scheduling elements includes selection information and data flow information.
26. The device (100; 101) according to claim 25, in, The scheduling information includes index information of ranges of the plurality of scheduling elements.
27. The device (100; 101) according to claim 25, in, The scheduling information also includes a cyclic redundancy check code, which provides check information for the plurality of scheduling elements, and The device (100; 101) is configured to use a cyclic redundancy check code to check whether the multiple scheduling elements are correctly received.
28. The device (100; 101) according to claim 25, in, The scheduling information of each scheduling element of the plurality of scheduling elements comprises a slot mask and a slot value for the scheduling element, and The data flow information of each scheduling element in the multiple scheduling elements includes at least one of a port identifier identifying a port, a flow identifier identifying one of the multiple data flows, and a target node identifier identifying a target node.
29. A system for transmitting a data stream, comprising: means (200) for sending scheduling information, The device (100) for transmitting a plurality of data streams according to claim 1, The device (200) for sending scheduling information is configured to send scheduling information including a plurality of scheduling elements. Each of the plurality of scheduling elements includes selection information and data flow information. The device (200) for sending scheduling information is configured to send scheduling information to the device (100) according to claim 1, wherein the apparatus (100) according to claim 1 is configured to receive scheduling information from the means (200) for sending scheduling information, The scheduling unit (110) of the apparatus (100) according to claim 1 is configured to: select a data stream from the plurality of data streams as a selected data stream using the scheduling information received from the apparatus (200) for sending scheduling information, and Wherein, the sending unit (120) of the apparatus (100) according to claim 1 is configured to send the selected data stream.
30. The system according to claim 29, in, The sending unit (120) of the apparatus (100) according to claim 1 is configured to send the selected data stream to the means (200) for sending scheduling information.
31. The system according to claim 29, in, The apparatus (100) according to claim 1 is a first apparatus (100) according to claim 1, wherein the scheduling information is a first scheduling information, wherein the plurality of data streams is a first plurality of data streams, The system further comprises: one or more further devices (101) according to claim 1, for sending one or more further data streams, wherein, for each of the one or more further devices (101) according to claim 1, The device (200) for sending scheduling information is configured to send scheduling information of the device (101) according to claim 1 to the device (101) according to claim 1, The apparatus (101) according to claim 1 is configured to receive the scheduling information from the means (200) for sending scheduling information, The scheduling unit (110) of the apparatus (101) according to claim 1 is configured to select a data stream from one of the one or more further pluralities of data streams as a selected data stream using the scheduling information received from the means (200) for sending scheduling information, and The sending unit (120) of the apparatus (101) according to claim 1 is configured to send the selected data stream.
32. The system according to claim 31, in, For each of the one or more further apparatuses (101) according to claim 1, the sending unit (120) of the apparatus (101) is configured to send the selected data stream selected by the apparatus (101) to the means (200) for sending scheduling information.
33. A system for transmitting a set of data streams, wherein the system comprises a plurality of communication nodes, in, Each of the plurality of communication nodes is configured to transmit at least one data stream of the set of data streams, and / or is configured to receive one or more data streams of the set of data streams, Wherein one or more communication nodes of said plurality of communication nodes comprise an apparatus (100; 101) according to claim 1 for transmitting a plurality of data streams, wherein said set of data streams comprises said plurality of data streams.
34. The system according to claim 33, in, At least one of the one or more communication nodes of the plurality of communication nodes including the apparatus (100; 101) according to claim 1 is a forwarding node, the forwarding node being configured to: for each of the plurality of data flows, receive the data flow from a first node of the plurality of communication nodes and send the data flow to a second node of the plurality of communication nodes, wherein the data flow comprises header information, wherein the header information comprises a flow identifier of the data flow, wherein the at least one node comprises a demultiplexing table comprising a plurality of table entries for mapping flow identifiers to output ports, and The at least one node is configured to use the header information of the data stream and the demultiplexing table to determine a second node among the plurality of communication nodes to which the data stream should be sent.
35. The system according to claim 34, wherein the at least one node is configured to receive two or more of the plurality of data streams from an intermediate node of the plurality of communication nodes, wherein the intermediate node does not comprise the apparatus (100; 101) according to claim 1.
36. The system according to claim 34, wherein the at least one node is configured to replicate a data stream of the plurality of data streams to obtain two resultant data streams, in, With the arrangement (100; 101) according to claim 1, said at least one node is configured to send said two resulting data streams to two different nodes of said plurality of communication nodes.
37. A motor vehicle comprising a system according to claim 29 or 33.
38. The motor vehicle of claim 37, wherein the motor vehicle is a car or a motor truck.
39. A method for transmitting multiple data streams, wherein: The method comprises: selecting a data stream from the plurality of data streams as a selected data stream, and Send the selected data stream, wherein selecting the selected data stream from the plurality of data streams is performed according to scheduling information and according to the counter value, wherein the scheduling information comprises a plurality of scheduling elements, wherein each of the plurality of scheduling elements comprises selection information and data stream information, wherein, for each scheduling element in the plurality of scheduling elements, a data flow in the plurality of data flows is assigned to the scheduling element, wherein the data flow information of the scheduling element is the data flow information assigned to the data flow of the scheduling element, wherein, for each scheduling element of the plurality of scheduling elements, a selection criterion is satisfied or not satisfied according to selection information of the scheduling element and according to a counter value, The method comprises: selecting, from a plurality of selected data streams, a data stream assigned to a selection element satisfying a selection criterion among a plurality of selection elements according to the order of the plurality of scheduling elements of the scheduling information as a selected data stream, In order to select the selected data stream, the method includes: for at least one scheduling element among the multiple scheduling elements of the scheduling information or for each scheduling element among the multiple scheduling elements of the scheduling information, determining whether a selection criterion is met according to a counter value and according to selection information of the scheduling element.
40. A computer program product comprising a computer program which, when executed on a computer or a signal processor, implements the method of claim 39.
Citation Information
Patent Citations
Method and apparatus for WFQ scheduling using a plurality of scheduling queues to provide fairness, high scalability, and low computation complexity
US20030179774A1