Communication control device, information processing device, communication control method, information processing method, and program
The communication control device addresses the challenge of inaccurate transmission timing and amount in TSN standard devices by using a transmission control unit that considers message states after passing through gates, ensuring precise control over message transmission.
Patent Information
- Application Number
- JP2021195486
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-12-01
- Publication Date
- 2025-06-30
- Estimated Expiration
- 2041-12-01
AI Technical Summary
Existing communication control devices using the TSN standard struggle to accurately control the transmission timing and amount of messages due to limitations in gate control lists and consideration of frame states after passing through gates.
A communication control device is designed with a transmission control unit that determines the transfer start timing of messages based on gate control information, considering the state of messages after passing through gates, including data amount and communication overhead, to ensure accurate transmission timing and amount control.
The proposed solution enables precise control over the transmission timing and amount of messages, addressing the inaccuracies in existing TSN standard implementations and ensuring reliable real-time communication.
Smart Images

Figure 0007700031000001 
Figure 0007700031000002 
Figure 0007700031000003
Abstract
Description
Technical Field
[0001] Embodiments of the present invention relate to a communication control device, an information processing device, a communication control method, an information processing method, and a program.
Background Art
[0002] There is known a communication control device that executes real-time communication via a network compliant with the TSN (Time-Sensitive Networking) standard or the like. In TSN, the opening and closing of gates corresponding to each of a plurality of queues (that is, whether to transmit a message stored in the queue) controls the transmission timing and transmission amount of messages from the queue according to a gate control list set in time units.
[0003] However, in the above-mentioned TSN standard or the like, there are cases where the transmission timing and transmission amount of messages cannot be accurately controlled.
Prior Art Documents
Patent Documents
[0004]
Patent Document 1
Non-Patent Documents
[0005]
Non-Patent Document 1
Non-Patent Document 2
Summary of the Invention
Problems to be Solved by the Invention
[0006] Therefore, the problem to be solved by the present invention is to provide a communication control device, an information processing device, a communication control method, an information processing method, and a program capable of accurately controlling the transmission timing and transmission amount of messages.
Means for Solving the Problem
[0007] The communication control device according to the embodiment includes a transmission control unit and a communication unit. The transmission control unit controls the transfer start timing of the first message stored in the queue based on gate control information in which the opening and closing of gates corresponding to each of a plurality of queues are set. The communication unit transmits the first message transferred from the transmission control unit according to the transfer start timing. The transfer start timing of the first message is determined based on the transmission when the second message that has been determined to pass through the gate is transmitted by the communication unit, and the transfer of the second message between the transmission control unit and the communication unit. Information and the transfer of the second message between the transmission control unit and the communication unit Transfer information related to and is determined based on this. The transmission information includes at least one of the data volume of the second message and the communication overhead that will occur when actually transmitting the second message. The transfer information includes at least one of the delay time occurring between the transmission control unit and the communication unit and the data volume of the second message staying between the transmission control unit and the communication unit.
Brief Description of the Drawings
[0008]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24
Figure 25
Figure 26A
Figure 26B
Figure 27A
Figure 27B
Figure 28
Figure 29
Figure 30
Figure 31
Figure 32
Figure 33
Figure 34
Figure 35
Figure 36
Figure 37
Figure 38
Figure 39
Figure 40
Figure 41
Figure 42
Figure 43
Figure 44
Figure 45
Figure 46
Figure 47
Figure 48
Figure 49
Embodiments for Carrying Out the Invention
[0009] Hereinafter, each embodiment will be described with reference to the drawings. (First Embodiment) First, the first embodiment will be described. The communication device in the present embodiment is a device configured to execute real-time communication of messages via a network. Hereinafter, an example using TSN (Time-Sensitive Networking) as the real-time communication standard will be described, but the standard applicable to the present embodiment is not limited to TSN.
[0010] Incidentally, in TSN, the transmission timing of a frame (an example of a message) is determined using a gate control list (gate control information) in which the opening and closing of gates corresponding to each of a plurality of queues are set in time units. This gate control list includes entries for each time unit. When the open state of the gate corresponding to a queue continues across a plurality of entries (time units) in each of the plurality of queues, frames stored in the queue can be transmitted until the gate is finally closed. Note that according to the TSN standard, it is necessary to determine the transmission timing of a frame by determining whether the frame can be transmitted according to the opening and closing of the gates corresponding to each of the plurality of queues. However, whether the frame can be transmitted is determined in consideration of the current state of the gate (open or closed), the state of the previous gate (the state of the gate at a time later than the current time), and the state of the frame before passing through the gate (the size of the frame, the upper limit value of the size of the frame, or the overhead generated during communication, etc.).
[0011] However, when determining whether a frame can be transmitted according to the gate control list defined by the TSN standard as described above, the state of the frame that has been determined to pass through the gate is not considered, so it may not be possible to accurately control the transmission timing of the frame. Specifically, when the bus width when passing through the gate (that is, the amount of data transmitted in one operation calculated based on the number of bits and the operating frequency) is different from the bus width when actually transmitted (output) onto the network 200, or when the frame is temporarily stored in the buffer section after passing through the gate (that is, buffering is performed), the transmission timing of the frame determined as described above cannot be guaranteed.
[0012] Therefore, in the communication device according to the present embodiment, when determining whether to transmit a frame (controlling the transmission of the frame), in addition to the state of the frame (that is, the frame before passing through the gate), the state of the frame that has been determined to pass through the gate is further considered. Specifically, in the present embodiment, the data amount of the frame that has been determined to pass through the above-described gate is continuously monitored, and the result of the monitoring is incorporated into the conditions for determining whether to transmit subsequent frames in terms of time. Further, in the present embodiment, the data amount of the frames staying after passing through the gate is monitored, and a backpressure described later is generated at an appropriate timing. In the present embodiment, by determining whether to transmit subsequent frames (that is, controlling the transmission of the frame) in consideration of the state of the frame after passing through the gate in this way, accurate control of the transmission timing of the frame is realized.
[0013] FIG. 1 shows an example of the hardware configuration of the communication device according to the present embodiment. As shown in FIG. 1, the communication device 100 includes a memory 1, a host processor 2, a storage 3, a network interface controller 4, a storage controller 5, and the like.
[0014] The memory 1 is connected to the host processor 2 via a memory controller in the host processor 2. The memory 1 is realized by, for example, DRAM (Dynamic Random Access Memory) or the like.
[0015] The host processor 2 is connected to the storage controller 5 using a bus such as PCI Express (registered trademark). Similarly, the host processor 2 is connected to the network interface controller 4 using a bus such as PCI Express.
[0016] The host processor 2 functions as an information processing device that expands the image of the execution program stored in the storage 3 into the memory 1 and executes processing while reading instructions and data on the memory 1. The processing executed by the host processor 2 is executed by one or more cores provided in the host processor 2. Although the memory 1 and the host processor 2 are shown separately in FIG. 1, the host processor 2 may be configured integrally with the memory 1.
[0017] The storage 3 is realized by, for example, an HDD (Hard Disk Drive) and an SSD (Solid State Drive). The storage 3 is connected to the storage controller 5 according to standards such as SATA, SAS, and U.2 (SFF-8639). The storage 3 and the storage controller 5 may be configured integrally.
[0018] The network interface controller 4 functions as a communication control device that connects the host processor 2 to the network 200.
[0019] The network 200 is, for example, Ethernet (registered trademark). Specifically, the network 200 is a network compliant with the standards defined in IEEE 802.1. The standards defined in IEEE 802.1 are, for example, the above-described TSN standard and AVB (Audio Video Bridging) standard. Also, the type of the network 200 may be arbitrary. Specifically, the network 200 is, for example, an office network, a network inside a data center, an in-vehicle network, a factory network, a network of a mobile base station, and a network of core facilities.
[0020] The network interface controller 4 and the storage controller 5 are realized by a processor such as an ASIC (Application Specific Integrated Circuit), an FPGA (Field-Programmable Gate Array), or a CPU (Central Processing Unit). Further, the network interface controller 4 and the storage controller 5 may be realized by combining two or three of an ASIC, an FPGA, and a processor. Further, the network interface controller 4 and the storage controller 5 may incorporate a memory different from the above-described memory 1 inside. Further, the network interface controller 4 and the storage controller 5 may be implemented as a separate chip from the host processor 2, or may be implemented on the same chip as the host processor 2 as a SoC (System-on-a-Chip).
[0021] FIG. 2 is a block diagram showing an example of the functional configuration of the communication device 100 in the present embodiment. In FIG. 2, the functional configurations of the host processor 2 (information processing device) and the network interface controller 4 (communication control device) mainly provided in the communication device 100 will be described.
[0022] As shown in FIG. 2, the host processor 2 includes a gate control list storage unit 201, a synchronization control unit 202, a frame generation unit 203, a transmission control information generation unit 204, a setting unit 205, and a detection unit 206.
[0023] The gate control list storage unit 201 stores a gate control list used for the above-described frame transmission control (control of transmission timing). The gate control list (Gate Control List) is information used to execute the control of Enhancements for scheduled traffic defined in IEEE 802.1Q.
[0024] The gate control list stored in the gate control list storage unit 201 may be stored in advance in a storage device 3 or the like, or may be received (acquired) via the network 200 by CNC (Centralized Network Configuration) defined in IEEE 802.1Qcc, for example.
[0025] Figure 3 shows an example of a gate control list. The gate control list shown in Figure 3 includes six entries from T00 to T05. Each entry includes the gate state of the queue corresponding to each of the eight traffic classes and a time interval. TC0 to TC7 represent traffic classes. For example, TC7 represents the seventh traffic class.
[0026] The gate state of each traffic class is represented by "o" and "C". "o" means that the gate is open. "C" means that the gate is closed. The gate state indicates whether transmission in the queue of the traffic class (transmission of the frame stored in the queue) is permitted.
[0027] The time interval represents the time for which the entry continues. For example, in the example of Figure 3, a time interval of 128 μs is set for the entry of T00. This indicates that the entry of T00 continues for 128 μs. In order from T00, the set gate state is maintained for the time interval, and as time passes through T01, T02, ···, the gate state of the gate for each traffic class is switched. When the last entry (T05 in the example of Figure 3) ends, it means that the gate control for one cycle is completed. Regarding the start timing of the next cycle, the process may be repeated by returning to the first entry (T00 in the example of Figure 3) immediately after the last entry ends. Also, the start timing of the next cycle may be determined based on the time information managed by the time management unit 404. Note that before the gate control for one cycle is completely finished, the next cycle may be forcibly started based on the time information.
[0028] Each entry further includes an operation. In the example shown in FIG. 3, SetGateStates is commonly set for each entry, and the SetGateStates represents setting "o" or "C" as the gate state for a plurality of queues (queues of ports that the network interface controller 4 has).
[0029] Although not shown in FIG. 3, the time (base time) at which gate control starts is also set (stored) in the gate control list. The base time is included in the transmission control information described later and transmitted to the network interface controller 4. The base time is represented by, for example, year / month / day / hour / minute / second, etc., but may be represented in other formats as long as it can specify the timing to start gate control. Further, although not shown in FIG. 3, the gate control list may include the time (cycle time) for one cycle of gate control. For example, the total value of the time intervals of all the entries (T00 to T05 in the example of FIG. 3) included in the gate control list may be set (stored) as the cycle time. The cycle time is displayed in microseconds, etc., similar to the time interval, for example, but may be represented in other formats as long as it can specify the time for one cycle.
[0030] The synchronization control unit 202 performs time synchronization with other communication devices via the network 200. For example, the synchronization control unit 202 performs time synchronization by a time synchronization protocol such as IEEE 1588 or IEEE 802.1AS via the network 200, and corrects the time information managed by the network interface controller 4 (time management unit 404 described later).
[0031] The frame generation unit 203 generates a frame (transmission frame) transmitted via the network interface controller 4. Here, a frame refers to the smallest unit of data exchanged at the data link layer. The frame generation unit 203 generates, for example, the data included in the transmission frame and the headers and footers of the protocols corresponding to the upper layers of Ethernet. The frame generation unit 203 is realized, for example, by a transmission application, a protocol stack, and a device driver operating on the host processor 2.
[0032] The frame generation unit 203 sets a traffic class in the transmission frame according to the characteristics of the information to be transmitted and the like. When eight traffic classes are used, for example, values from TC0 to TC7 are used as the identification information of the traffic class.
[0033] Note that in FIG. 2, only one frame generation unit 203 is shown, but the host processor 2 may be configured to include a plurality of frame generation units 203.
[0034] The transmission control information generation unit 204 generates transmission control information from the gate control list stored in the gate control list storage unit 201. The transmission control information generation unit 204 reads the gate control list from the gate control list storage unit 201 and generates transmission control information, for example, at the time of initialization and when a change in link speed or operation speed information is detected by the detection unit 206 described later. Although the details of the process of generating the transmission control information will be described later, the transmission control information (each entry) generated by the transmission control information generation unit 204 includes period information indicating the period assigned to the entry and transmission enable information indicating the data amount (hereinafter referred to as the transmission enable amount) or time of the frames that can be transmitted until the next gate closes at the start time of the period (that is, the timing of gate switching).
[0035] The setting unit 205 transmits the transmission control information generated by the transmission control information generation unit 204 to the network interface controller 4.
[0036] The detection unit 206 detects a change in the link speed of the network interface controller 4. The detection unit 206 receives, for example, a notification from the network interface controller 4 and detects a change in the link speed. The link speed represents the speed of communication via the network 200 by the network interface controller 4. Further, the detection unit 206 receives, for example, a notification from the network interface controller 4 and also detects a change in the operation speed information including at least one of the clock information and the bit width information. The clock information represents the clock frequency or the clock cycle (clock period) for performing frame transmission control (processing) in the network interface controller 4. In the present embodiment, the clock frequency or the clock cycle (clock period) for performing frame transmission control refers to the clock frequency on the data transfer path between the transmission control unit 409 and the communication unit 401 and the clock frequency with the communication unit 401. The bit width information represents the bit width of the bus when the network interface controller 4 (communication unit 401) transmits a frame or the bit width of the bus provided between the transmission control unit 409 and the buffer unit 412. Note that, as will be described later, for example, when the buffer unit 412 does not exist or the buffer unit 412 is incorporated inside the communication unit 401, the bit width information represents the bit width of the bus when the transmission control unit 409 outputs a frame. Also, when a plurality of buffer units 412 are cascade-connected, the bit width information represents the bit width of the bus on the data transfer path between the transmission control unit 409 and the communication unit 401. That is, although not shown, the change in the operation speed information notified by the network interface controller 4 to the detection unit 206 may be based on clock information or bit width information other than that of the communication unit 401.
[0037] Note that the gate control list storage unit 201 described above is realized by, for example, the memory 1 configured integrally with the host processor 2, but may be realized by a memory other than the memory 1.
[0038] Further, each of the above-described units 202 to 206 is realized by, for example, one or a plurality of processors. Specifically, each of the units 202 to 206 may be realized by causing a processor such as a CPU (Central Processing Unit) to execute a program, that is, by software. Note that each of the units 202 to 206 may be realized by hardware such as a dedicated IC (Integrated Circuit), or may be realized by a combination of software and hardware. When a plurality of processors are used to realize each of the units 202 to 206, each processor may be used to realize one of the units 202 to 206, or may be used to realize two or more of the units 202 to 206.
[0039] Also, as shown in FIG. 2, the network interface controller 4 includes a communication unit 401, a received frame storage unit 402, a transmitted frame storage unit 403, a time management unit 404, a data transfer unit 405, a reception unit 406, a transmission control information storage unit 407, a transmission control information management unit 408, a transmission control unit 409, a transmission permission determination unit 410, a data transfer state management unit 411, a buffer unit 412, and a notification unit 413.
[0040] The communication unit 401 includes functions referred to as a MAC (Media Access Controller) and a PHY, and performs processes necessary for transmitting and receiving frames according to the protocols of the data link layer and the physical layer in the network 200. Specifically, the communication unit 401 performs the processes of the data link layer and the physical layer of Ethernet defined by IEEE 802.3.
[0041] The received frame storage unit 402 stores the received frames received by the communication unit 401. The received frame storage unit 402 stores the data of the received frame and the length of the frame in a set in order using a queue (FIFO) prepared for each traffic class. Note that the data of the frame may include time stamp information at the time of reception.
[0042] The transmission frame storage unit 403 stores the transmission frames generated by the frame generation unit 203 included in the host processor 2. The transmission frame storage unit 403 stores the data of the transmission frames and the lengths of the frames in sequence in sets, using queues (FIFOs) prepared for each traffic class.
[0043] The time management unit 404 manages, for example, the time (time information indicating the time) within the network interface controller 4.
[0044] When the synchronization control unit 202 performs time synchronization, the communication unit 401 uses the time information provided from the time management unit 404 to acquire the timestamp from the received frame and attach the timestamp to the transmitted frame.
[0045] The data transfer unit 405 transfers data to and from the memory 1 (host processor 2). The data transfer unit 405 transfers frames by DMA (Direct Memory Access) between, for example, the received frame storage unit 402 and the memory 1 and between the memory 1 and the transmission frame storage unit 403.
[0046] When a frame is received, the data transfer unit 405 reads the transfer destination address from the receive descriptor and writes the data of the received frame read from the corresponding queue in the received frame storage unit 402 to the area of the memory 1 specified by the transfer destination address. Then, the data transfer unit 405 writes the length and status of the receive descriptor.
[0047] On the other hand, when a frame is transmitted, the data transfer unit 405 reads the transfer source address and length from the transmit descriptor, reads the data of the length specified by the length from the area of the memory 1 specified by the transfer source address, and writes the data of the frame to the corresponding queue in the transmission frame storage unit 403. Then, the data transfer unit 405 writes the status of the transmit descriptor.
[0048] Transmission and reception of frames according to the time synchronization protocol are also executed via the data transfer unit 405. The synchronization control unit 202 calculates, for example, the time offset with respect to the master connected via the network 200 from the timestamps of each frame, and corrects the time information of the time management unit 404.
[0049] Here, FIG. 4 shows a configuration example of a reception descriptor. As shown in FIG. 4, the reception descriptor is a ring buffer and is managed using two variables, Head and Tail. As shown in FIG. 4, the descriptors from Head to Tail - 1 indicate the descriptors owned by the HW (hardware), that is, the network interface controller 4. Also, the descriptors from Tail to Head - 1 indicate the descriptors owned by the SW (software), that is, the software (frame generation unit 203 and synchronization control unit 202) operating on the host processor 2. The values of Head and Tail are notified between the network interface controller 4 and the host processor 2 using the register interface and interrupt signals.
[0050] Each entry (each descriptor) of the reception descriptor (reception descriptor ring) includes a destination address, length, and status. The destination address indicates the start address indicating the start position of the storage area of the data storage unit (for example, memory 1) that stores the data of the frame to be received. The length indicates the length of the frame to be received. The status stores information indicating the state of the reception process.
[0051] FIG. 5 shows a configuration example of a transmission descriptor. Although detailed description is omitted, the transmission descriptor is a ring buffer and is managed using two variables, Head and Tail, in the same manner as the above-described reception descriptor.
[0052] Each entry (each descriptor) of the transmission descriptor (transmission descriptor ring) includes a source address, a length, and a status. The source address indicates the start address indicating the start position of the storage area of the data storage unit (for example, memory 1) in which the data of the frame to be transmitted is stored. The length indicates the length of the frame to be transmitted. The status stores information indicating the state of the transmission process.
[0053] The above status includes, for example, an error bit and a DONE bit. The error bit indicates the presence or absence of a transfer error. The DONE bit indicates that the processing has been completed by the network interface controller 4. When the DONE bit of the reception descriptor is 1, it indicates that the reception process has been completed. When the DONE bit of the transmission descriptor is 1, it indicates that the transmission process has been completed. The network interface controller 4 writes 1 to each bit (error bit and DONE bit). Then, after the frame generation unit 203 or the synchronization control unit 202 checks each bit, it clears each bit by writing 0 to each bit.
[0054] The reception unit 406 receives the input of the transmission control information transmitted by the setting unit 205 of the host processor 2. The reception unit 406 may be able to set the transmission control information by a predefined register. The setting unit 205 may notify the start address and length of the transmission control information stored in the memory 1 in a predefined format by a register, and the reception unit 406 may access the memory 1 to read the transmission control information.
[0055] The transmission control information received by the reception unit 406 is stored in the transmission control information storage unit 407.
[0056] The transmission control information management unit 408 determines the timing to read (load) a new entry from among a plurality of entries included in the transmission control information stored in the transmission control information storage unit 407 based on the time information (global clock synchronized across the entire network) managed by the time management unit 404 and the local clock inside the network interface controller 4 (for example, a 156.25 MHz clock signal supplied from a 10 Gbps MAC). Specifically, the transmission control information management unit 408 determines, for example, the timing to read the entry at the head of the gate control list (which is the start timing of the transmission control cycle and corresponds to the timing when CycleStart of IEEE 802.1Qbv becomes valid) based on the above-described global clock, base time, and cycle time. Also, for the timing to read the second and subsequent entries (the i-th entry) (which corresponds to the timing when the ExitTimer of IEEE 802.1Qbv becomes 0), it is determined based on the above-described local clock and the time interval (the time for which the entry continues) of the (i - 1)-th entry.
[0057] Further, the transmission control information management unit 408 manages the read entry and updates, for example, the transmittable information (the transmittable amount indicated thereby) included in the entry based on the progress of the local clock.
[0058] The transmittable information included in the entry managed by the transmission control information management unit 408 is provided to the transmission permission determination unit 410. Note that the transmittable information provided from the transmission control information management unit 408 to the transmission permission determination unit 410 is the number of frame transmittable bits or the frame transmittable time, as will be described later.
[0059] The transmission control unit 409 determines the transfer start timing (transmission timing) of the frame to be transmitted, which is selected from the frames stored in a plurality of queues, in cooperation with the transmission permission determination unit 410 and the data transfer state management unit 411. Although the details will be described later, the transfer start timing of the frame is determined based on, for example, the transmission cost when the frame that has been confirmed to pass through the gate is transmitted by the communication unit 401, and the transfer state of the frame between the transmission control unit 409 and the communication unit 401.
[0060] When the transfer start timing of the frame is determined by the transmission control unit 409 as described above, the frame is transferred from the transmission control unit 409 to the communication unit 401 according to the transfer start timing, and is transmitted onto the network 200 by the communication unit 401.
[0061] The transmission permission determination unit 410 executes a determination (hereinafter referred to as guard band determination) as to whether it is possible to transmit the frame (the head frame of the queue) stored at the head of a plurality of queues according to Enhancements for scheduled traffic. The guard band determination in the present embodiment is based on the transmission enable information provided from the transmission control information management unit 408 as described above, the transmission cost when each head frame of the plurality of queues is transmitted by the communication unit 401, and the transfer cost of the frame (hereinafter referred to as transfer cost information) based on the transmission cost when the frame that has been confirmed to pass through the gate corresponding to each of the plurality of queues is transmitted by the communication unit 401. In the following description, although the transfer cost information is mainly described as being the transfer data amount (transfer cost represented in units of data amount), the transfer cost information may be the data transfer time (transfer cost represented in units of time).
[0062] The data transfer status management unit 411 monitors the transfer status of frames (the status of frames after being output from the transmission control unit 409) after passing through gates corresponding to each of the plurality of queues, and generates a backpressure that suppresses the output (transfer) of frames from the transmission control unit 409. Specifically, the data transfer status management unit 411 determines whether the transmission control unit 409 can transfer a frame to the communication unit 401 (hereinafter referred to as frame transfer determination) based on the delay time generated between the transmission control unit 409 and the communication unit 401, the data amount of frames staying between the transmission control unit 409 and the communication unit 401, and the data amount that the communication unit 401 can transmit per unit time. The delay time generated between the transmission control unit 409 and the communication unit 401 used in the frame transfer determination includes the delay time until a frame output from the transmission control unit 409 actually reaches the input port of the communication unit 401, and the delay time until a frame output from the transmission control unit 409 arrives at the input port of the communication unit 401 and the leading data of the frame is taken into the communication unit 401. Note that the determination that the transmission control unit 409 cannot transfer a frame to the communication unit 401 in the frame transfer determination corresponds to the generation of the above-described backpressure.
[0063] The frame transfer start timing (the timing when the head of the frame passes through the gate) in the present embodiment is determined based on the results of the above-described guard band determination and frame transfer determination.
[0064] In this embodiment, a buffer unit 412 is provided between the communication unit 401 and the transmission control unit 409. That is, the transfer of frames from the above-described transmission control unit 409 to the communication unit 401 is executed via the buffer unit 412. In this embodiment, the network interface controller 4 is described as including the buffer unit 412, but the network interface controller 4 may be configured not to include the buffer unit 412. Also, although not shown, for example, in a configuration not including the buffer unit 412, the transmission control unit 409 and the communication unit 401 may be directly connected.
[0065] The notification unit 413 acquires the link speed and operation speed information of the communication unit 401 and notifies the host processor 2 (detection unit 206). This notification may use an interrupt or may cause the detection unit 206 to perform a polling operation.
[0066] Note that the above-described received frame storage unit 402, transmitted frame storage unit 403, transmission control information storage unit 407, and buffer unit 412 are realized by, for example, SRAM (Static Random Access Memory).
[0067] Also, in this embodiment, it is assumed that the above-described respective units 401, 404 to 406, 408 to 411, and 413 are realized by hardware such as a dedicated IC. However, the respective units 401, 404 to 406, 408 to 411, and 413 may be realized by causing one or more processors to execute a program, that is, by software, or may be realized by a combination of software and hardware. Also, when using a plurality of processors to realize the respective units 401, 404 to 406, 408 to 411, and 413, each processor may be used to realize one of the respective units 401, 404 to 406, 408 to 411, and 413, or may be used to realize two or more of the respective units 401, 404 to 406, 408 to 411, and 413.
[0068] Next, with reference to FIGS. 6 and 7, the operation outlines of frame reception processing and frame transmission processing will be described.
[0069] FIG. 6 is a diagram showing the operation outline of frame reception processing. The communication unit 401 distributes the received frame to a traffic class using the presence or absence of a VLAN (Virtual Local Area Network) tag of the received frame and, if there is a VLAN tag, its PCP (Priority Code Point) value. The received frame is sequentially stored in the corresponding queue of the received frame storage unit 402. Thereafter, the received frame is stored at the memory address of memory 1 set in the corresponding receive descriptor of the data transfer unit 405 and passed to the synchronization control unit 202 and the like.
[0070] FIG. 7 is a diagram showing the operation outline of frame transmission processing. The frame transmission processing starts from the frame generation unit 203 or the synchronization control unit 202. The frame generation unit 203 and the synchronization control unit 202 generate the payload data of the frame and attach the headers and (if necessary) footers of each protocol to generate a frame (transmission frame). The frame generation unit 203 and the synchronization control unit 202 select which traffic class to use for transmitting the frame according to the characteristics of the application and the like. The transmission descriptors of the data transfer unit 405 are prepared, for example, for each traffic class. The frame instructed to be transferred using the transmission descriptor is read from memory 1 and transferred to the corresponding traffic class queue of the transmission frame storage unit 403. Thereafter, the transmission control unit 409 selects the frame to be transmitted and transmits the frame using the communication unit 401.
[0071] Next, with reference to the flowchart of FIG. 8, the transmission control information generation processing will be described. The transmission control information generation processing is executed, for example, when a gate control list is set and when the detection unit 206 detects a change in link speed or operation speed information.
[0072] The transmission control information generation unit 204 reads the gate control list from the gate control list storage unit 201 (step S1). Here, for example, it is assumed that the gate control list shown in FIG. 3 is read.
[0073] For each traffic class, the transmission control information generation unit 204 calculates the time during which "o" in the gate control list continues (continuous open time) (step S2).
[0074] FIG. 9 shows an example of the continuous open time calculated in step S2. For example, for the entry T02 of traffic class TC7, "o" continues from T02 to T03 and becomes "C" at T04. Since the time intervals of T02 and T03 are 512 μs and 128 μs, respectively, "o" continues for 512 + 128 = 640 μs from the start of T02. Similarly, in the case of T03, since it becomes "C" at T04, "o" continues for 128 μs. Note that when the gate control list reaches the last entry, it returns to the first (the head entry). In the case of T05, since "o" continues from T05 to T00, "o" continues for 512 + 128 = 640 μs. In the case where it is always "o" like traffic class TC0, "o" continues as long as the gate control list does not change, so the continuous open time is infinite (∞).
[0075] Returning to FIG. 8 again, the transmission control information generation unit 204 generates transmission control information using the continuous open time calculated in step S2 (step S3).
[0076] Hereinafter, the transmission control information generated in step S3 will be described. FIGS. 10 to 17 are diagrams for specifically explaining the transmission control information generated by the transmission control information generation unit 204.
[0077] The transmission control information shown in FIG. 10 includes, as transmission available information, the time during which frames can be transmitted in the queue of each traffic class at the timing of gate switching (hereinafter referred to as the frame transmission available time). In the example shown in FIG. 10, the time corresponds to period information and is expressed as a relative value (relative time) from the start time of the gate control list. The transmission control information also includes information on the base time and cycle time set in the gate control list.
[0078] Note that FIG. 10 shows an example of transmission control information including the frame transmission available time for all traffic classes at the timing of gate switching. In contrast, FIG. 11 shows an example of transmission control information including only the frame transmission available time when a new opening occurs. In the example shown in FIG. 11, the entry in the fourth row may be deleted.
[0079] By the way, for example, when the link speed is obtained, the frame transmission available time can be converted into the data amount of frames that can be transmitted within that time (that is, the frame transmission available number of bits). FIGS. 12 and 13 show examples of transmission control information including, as transmission available information, the frame transmission available number of bits converted from the frame transmission available time shown in FIGS. 10 and 11 when the link speed is 1 Gbps. For example, when the link speed is 1 Gbps, the number of bits that can be transmitted in 128 μs is calculated as 1,000,000,000×(128 / 1,000,000)=128,000 bits. When the transmission available information is expressed in terms of the frame transmission available number of bits, the computational amount when using the frame transmission available number of bits on the network interface controller 4 side can be reduced. Further, the relative value (period information) from the start may be expressed in terms of the number of bits instead of time. FIGS. 14 and 15 show examples of transmission control information that employs the number of bits instead of time. Note that when the transmission available information is not expressed in terms of the frame transmission available number of bits, for example, since it is not necessary to detect the link speed, the process of detecting the link speed in the detection unit 206 described above may be omitted.
[0080] In FIGS. 12 to 15 described above, an example in which the transmittable information (transmittable amount) is expressed in terms of the number of bits is shown, but the transmittable information may be expressed in terms of the number of bytes.
[0081] Furthermore, as shown in FIG. 16, the period information included in the transmission control information may be the number of clock cycles of the network interface controller 4 (for example, the transmission control unit 409) that represents the value of the time interval included in the gate control list (that is, the number of clock cycles based on the local clock). Also, the value of the time interval may be expressed in terms of time in the same manner as the gate control list.
[0082] The number of clock cycles representing the value of the time interval described above indicates how many clock operations of, for example, the transmission control unit 409 each entry's time interval corresponds to. For example, when the transmission control unit 409 operates at 156.25 MHz, one clock cycle is 1 / 156.25 = 6.4 ns. For example, a time interval of 128 μs is 128 μs / 6.4 ns = 20000 in terms of clock cycles.
[0083] FIG. 16 shows the transmission control information including the transmittable information (frame transmittable number of bits) of all traffic classes at the timing of gate switching, but it may be the transmission control information including only the transmittable information in the case of newly opening as shown in FIG. 17, for example.
[0084] Note that the transmission control information including the number of clock cycles as the period information as described above is generated based on, for example, the clock information representing the clock frequency or the clock cycle (clock period) at which the network interface controller 4 (such as the transmission control unit 409) performs processing. This clock information is acquired by, for example, the notification unit 413 as the operation speed information as described above, and may be notified from the notification unit 413 to the host processor 2 (detection unit 206).
[0085] Considering that the frame transmission available time can be converted into the data amount of frames that can be transmitted within that time (i.e., the transmittable amount), it can be said that the transmission control information in the present embodiment is information indicating the data amount of frames that can be transmitted before the gates corresponding to each of the plurality of queues are closed.
[0086] Returning to FIG. 8 again, the setting unit 205 stores the transmission control information generated in step S3 in the transmission control information storage unit 407 included in the network interface controller 4 (step S4).
[0087] When the transmission control information is stored in the transmission control information storage unit 407 in step S4, for example, the transmission control unit 409 activates frame transmission control (gate control) based on the transmission control information (step S5).
[0088] When the process of FIG. 8 is executed as described above, for example, as shown in FIG. 18, transmission control information including a plurality of entries is stored in the transmission control information storage unit 407, and the transmission control information management unit 408 uses the time (i.e., the global clock) managed by the time management unit 404, the local clock, the base time, and the cycle time to identify and read the currently valid entry (hereinafter referred to as the current entry) from among the plurality of entries. The current entry read by the transmission control information management unit 408 is temporarily stored in the storage unit (temporary storage unit) 408a within the transmission control information management unit 408.
[0089] The current entry stored in the storage unit 408a shall include period information (time interval represented by the number of clock cycles) and transmittable information per traffic class (frame transmittable bit number) as shown in FIGS. 16 and 17 described above.
[0090] Furthermore, the transmission control information management unit 408 includes a fixed cache unit 408b and a variable cache unit 408c. The fixed cache unit 408b holds the first entry (period information and transmission enable information). The variable cache unit 408c holds the entry next to the current entry (period information and transmission enable information). By providing such a fixed cache unit 408b and variable cache unit 408c, even when the transmission control information management unit 408 cannot immediately read an entry from the transmission control information storage unit 407, for example, the current entry can be appropriately switched at the entry switching timing. Note that the fixed cache unit 408b fixedly holds the first entry, while the variable cache unit 408c operates to hold the entry next to the current entry each time the current entry stored in the storage unit 408a is switched.
[0091] Here, the transmission control information management unit 408 has been described as having a fixed cache unit 408b and a variable cache unit 408c. However, the transmission control information management unit 408 may have a single cache unit configured to have a storage area corresponding to the fixed cache unit 408b and a storage area corresponding to the variable cache unit 408c.
[0092] As described with reference to FIG. 18, when the current entry is stored in the storage unit 408a in the transmission control information management unit 408, the transmission permission determination unit 410 acquires the transmission enable information (number of frame transmissible bits) included in the current entry, and also acquires the frames stored at the head of each of the plurality of queues prepared in the transmission frame storage unit 403, and executes the guard band determination described above. As shown in FIG. 19, it is assumed that the transmission permission determination unit 410 includes a plurality of determination units (hereinafter referred to as traffic class determination units) 410a corresponding to a plurality of traffic classes. According to this, the guard band determination is executed for each traffic class. Specifically, for example, the determination unit 410a for traffic class TC7 executes the guard band determination using the transmission enable information for traffic class TC7 read from the storage unit 408a in the transmission control information management unit 408 and the frame information acquired from the queue for traffic class TC7. Although traffic class TC7 has been described here, the same applies to other traffic classes (the determination units 410a).
[0093] Next, the operation of the network interface controller 4 (communication control device) according to the present embodiment will be described. In the following description, it is assumed that the transmission control information storage unit 407 stores the transmission control information shown in FIG. 16, for example.
[0094] First, with reference to the flowchart of FIG. 20, an example of the processing procedure of the transmission control information management unit 408 will be described. The processing shown in FIG. 20 is executed for each clock cycle based on the local clock (operation clock of the transmission control unit 409 etc.) in the network interface controller 4. Also, here, the description will be made on the assumption that the head entry of the transmission control information is held in the fixed cache unit 408b of the transmission control information management unit 408 from the transmission control information storage unit 407.
[0095] The transmission control information management unit 408 refers to the time information managed by the time management unit 404 (i.e., the time information provided by the time management unit 404), and determines whether the current time is the cycle start time of gate control (i.e., the start time of the head process) (step S11). Note that the process of step S11 corresponds to the process of determining whether the cycle start signal in IEEE 802.1Qbv is active, and is determined using the cycle time, base time included in the transmission control information, and the time information provided by the time management unit 404.
[0096] When it is determined that the current time is the cycle start time of gate control (YES in step S11), the transmission control information management unit 408 reads out the first entry of the transmission control information from the fixed cache unit 408b possessed by the transmission control information management unit 408 (step S12). When the process of step S12 is executed, the entry read out in step S12 is stored in the storage unit 408a in the transmission control information management unit 408 as the current entry described above.
[0097] On the other hand, when it is determined that the current time is not the cycle start time of gate control (NO in step S11), the transmission control information management unit 408 determines whether the current clock cycle is the clock cycle for performing processing (i.e., the clock cycle corresponding to the preset number of clock cycles for the processing unit) (step S13). For example, if the number of clock cycles for the processing unit is 1, it means that processing is executed every clock cycle. Also, for example, when the number of clock cycles for the processing unit is 5 (i.e., processing is performed once every 5 clock cycles), it means that the 4 clock cycles following the clock cycle in which processing was performed are not processed, and processing is executed in the next clock cycle.
[0098] When it is determined that the current clock cycle is the clock cycle for performing processing (YES in step S13), the current entry is already stored in the storage unit 408a of the transmission control information management unit 408. In this case, the transmission control information management unit 408 determines whether the period information (the value of the time interval represented by the number of clock cycles) included in the current entry stored in the storage unit 408a is 0 (step S14).
[0099] When it is determined that the period information is not 0 (NO in step S14), the transmission control information management unit 408 determines whether the period information included in the current entry stored in the storage unit 408a is less than or equal to a specified value (step S15). The specified value in step S15 is set in consideration of the time required to read an entry from the transmission control information storage unit 407.
[0100] When it is determined that the period information is less than or equal to the specified value (YES in step S15), the transmission control information management unit 408 starts reading the next entry after the current entry from the transmission control information storage unit 407 (step S16). When the reading of the next entry after the current entry is completed by executing the process of step S16, the next entry is held in the variable cache unit 408c of the transmission control information management unit 408.
[0101] Note that when it is determined that the period information is not less than or equal to the specified value (NO in step S15), the process of step S16 is not executed.
[0102] Next, the transmission control information management unit 408 updates the period information included in the current entry stored in the storage unit 408a (step S17). Note that in step S17, a process of subtracting the number of clock cycles of the above-described processing unit from the period information (the number of clock cycles) is executed.
[0103] Further, the transmission control information management unit 408 updates the transmission enable information (e.g., the number of frame transmissible bits or the frame transmissible time) for each traffic class included in the current entry stored in the storage unit 408a (step S18). When the transmission enable information is the number of frame transmissible bits, in step S18, a process of subtracting a predetermined value such as the amount of data that can be transmitted during the number of processing unit clock cycles by the communication unit 401 from the transmission enable information (the number of frame transmissible bits indicated thereby) is executed. When transmitting a frame externally, the amount of data that can be transmitted per clock cycle needs to be consistent with the data transfer rate of the MAC. Also, although not shown, when only internal data transfer is performed, the amount of data that can be transmitted per clock cycle needs to be consistent with the data transfer rate of the internal module connected to the output portion of the transmission control unit 409 (i.e., the module that does not communicate directly with the external network to which the communication unit 401 is connected). For example, when one clock cycle is 6.4 ns (when the operating frequency is 156.25 MHz) when transmitting a frame externally, in order to achieve 10 Gbps, 64 bits of data are transferred per clock cycle. In this case, assuming that the number of processing unit clock cycles is 5, in step S18, 64 bits × 5 = 320 bits are subtracted from the transmission enable information for each traffic class. On the other hand, when the transmission enable information is the frame transmissible time, in step S18, a process of subtracting a value corresponding to the actually elapsed time from the transmission enable information (the frame transmissible time indicated thereby) may be executed.
[0104] On the other hand, when it is determined that the period information is 0 (YES in step S14), since it means that the period assigned to the current entry stored in the storage unit 408a has ended, the transmission control information management unit 408 determines whether the next entry is held in the variable cache unit 408c of the transmission control information management unit 408 (step S19).
[0105] When it is determined that the next entry is held in the variable cache unit 408c (YES in step S19), the transmission control information management unit 408 reads the next entry from the variable cache unit 408c (step S20). The next entry read in step S20 is stored in the storage unit 408a as the current entry.
[0106] When the above-described step S12 is executed, the transmission control information management unit 408 outputs the current entry stored in the storage unit 408a as valid transmission control information (step S21). That is, it outputs the transmission enable information updated to the latest state (for example, the number of frame transmissible bits or the frame transmissible time). When it is determined in step S13 that the current clock cycle is not the clock cycle for performing the process (NO in step S13), when the process of step S18 is executed, and when the process of step S20 is executed, the process of step S21 is similarly executed.
[0107] On the other hand, when it is determined in step S19 that the next entry is not held in the variable cache unit 408c (NO in step S19), "invalid" indicating that the current entry stored in the storage unit 408a is invalid is output (step S22). In the present embodiment, "invalid" represents that the transmission control information (entry) has not been updated to the latest state. That is, "invalid" means that the transmission enable information (for example, the number of frame transmissible bits or the frame transmissible time) has not been updated to the latest state.
[0108] In FIG. 20, although it has been described that the process of step S21 is executed when it is determined in step S13 that the current clock cycle is not the clock cycle for performing the process, the process of step S22 may be executed when the current clock cycle is not the clock cycle for performing the process. Also, the value calculated as the transmission control information may be a value obtained by subtracting the number of processing unit clock cycles in advance.
[0109] By executing the process shown in FIG. 20 described above, the transmission control information management unit 408 can appropriately switch the entry according to the operation clock of the transmission control unit 409 or the like, and always manage the period information and the transmission enable information of each traffic class included in the entry in the latest state.
[0110] Here, for example, when the operating frequency of the network interface controller 4 (for example, the transmission control unit 409) does not match the bus width transmitted on the network 200 (that is, the amount of data that the communication unit 401 can transmit per clock cycle), the value subtracted from the transmission enable information of each traffic class in step S18 (hereinafter referred to as the subtraction value) may be changed. In this case, the host processor 2 may notify the transmission control information management unit 408 of information (subtraction value information) regarding the subtraction value to be changed. For example, when changing the subtraction value at a predetermined clock cycle period, the subtraction value information may be information including, for example, the first subtraction value and its repetition count, and the second subtraction value and its repetition count. The subtraction value information may be in other forms as long as it can specify the subtraction value for each position of the clock cycle within a period (operation clock) of a predetermined number of clock cycles.
[0111] Here, although the description has been made assuming that the transmission control information shown in FIG. 16 is stored in the transmission control information storage unit 407, for example, when the transmission control information shown in FIG. 10 (that is, the transmission enable information is expressed in terms of time) is stored in the transmission control information storage unit 407, assuming a clock operation frequency of 156.25 MHz, for example, 6.4 ns may be subtracted from the transmission enable information (frame transmission enable time) for each clock cycle. Further, when managing the period (information) assigned to each entry as in the transmission control information shown in FIG. 10 in terms of time (relative time from the head of the gate control list), it may be determined whether to read a new entry based on the time information managed by the time management unit 404. Further, the time interval in each entry may be directly held in the form of time for determination.
[0112] Next, the frame transmission control in this embodiment will be described. In the frame transmission control in this embodiment, when the frame transmission control (gate control) based on the transmission control information is enabled in step S5 shown in FIG. 8 described above, the following guard band determination process, frame selection process, transfer cost information calculation process, and backpressure process are executed in parallel for each clock cycle. Note that, as a synchronization clock signal serving as a reference for executing these processes, it is assumed that a local clock inside the network interface controller 4 (for example, a 156.25 MHz clock signal supplied from a 10 Gbps MAC) is used, but other clock signals may be used.
[0113] Hereinafter, the above-described guard band determination process, frame selection process, transfer cost information calculation process, and backpressure process will be described. Here, it is assumed that the store-and-forward method is adopted in the network interface controller 4 (transmission frame storage unit 403).
[0114] First, with reference to the flowchart of FIG. 21, an example of the processing procedure of the guard band determination process will be described. The guard band determination process is executed by the transmission permission determination unit 410. Further, as described above, the transmission permission determination unit 410 includes a plurality of determination units 410a corresponding to a plurality of traffic classes, and the guard band determination process is executed by each of the plurality of determination units 410a.
[0115] Here, the guard band determination process executed by one determination unit (hereinafter referred to as the target determination unit) 410a among the plurality of determination units 410a will be described. Further, the queue of the traffic class corresponding to the target determination unit 410a is conveniently referred to as the target queue.
[0116] In this case, the target determination unit 410a determines whether there is a frame in a state where it can be transmitted to the target queue (step S31). As described above, when the store-and-forward method is adopted in the network interface controller 4 (transmission frame storage unit 403), the above-mentioned "there is a frame in a state where it can be transmitted to the target queue" means that there is a frame in which all data is stored in the target queue (that is, a frame in which all data constituting the frame is complete is stored in the target queue). In other words, a frame in a transmissible state means a frame with a determined data amount.
[0117] When it is determined that there is a frame in a state where it can be transmitted to the target queue (YES in step S31), the target determination unit 410a determines whether the transmission control information is valid (that is, a current entry is output as valid transmission control information from the transmission control information management unit 408) (step S32). That is, the target determination unit 410a determines whether the transmissible information updated to the latest state is output from the transmission control information management unit 408.
[0118] When it is determined that the transmission control information is valid (YES in step S32), the target determination unit 410a acquires the transmissible information of the traffic class corresponding to the target determination unit 410a included in the current entry output from the transmission control information management unit 408 (step S33).
[0119] Next, the target determination unit 410a acquires the data amount (frame length) of the frame stored at the head of the target queue (hereinafter referred to as the target frame) (step S34).
[0120] When the process of step S34 is executed, the target determination unit 410a performs a guard band determination based on the transmissible information (frame transmissible bit number or frame transmissible time) acquired in step S33, the total communication cost (transmission cost) when the target frame is transmitted by the communication unit 401, and the transfer cost information (transferred data amount or data transfer time) (step S35).
[0121] As the total communication cost used in the guard band determination in step S35, for example, the total value of the data amount of the target frame acquired in step S34 and the communication overhead that will occur when the communication unit 401 actually transmits the target frame can be used. Note that the communication overhead includes, for example, the data amount added inside the communication unit 401 when transmitting the target frame (for example, a frame checksum sequence such as 32-bit CRC) and the media-dependent overhead. Note that FIG. 22 shows an example of the media-dependent overhead. The media-dependent overhead includes, for example, the inter-frame gap (IFG) and the sizes of the preamble and SFD (Start Frame Delimiter) of the next frame.
[0122] Also, the total communication cost can be expressed in time units. For example, based on the above-mentioned total value (data amount) and the link speed (the data amount that can be transmitted per unit time), the total communication cost can be converted into time units. Specifically, for example, when the total communication cost (data amount) is 1000 bits and the link speed is 10 Gbps, the total communication cost (time) is 1000 bits / 10 Gbps = 100 ns. The total communication cost expressed in such time units is used in the guard band determination when the transmissible information is the frame transmissible time as described above.
[0123] Here, the total communication cost has been described, but the transfer cost information (transfer data amount) to be described later can also be converted into time units in the same manner as the total communication cost.
[0124] Also, the transfer cost information (e.g., transfer data volume or data transfer time) used in the guard band determination in step S35 is calculated for each clock cycle by executing the transfer cost information calculation process described later. Assuming that the guard band determination process shown in FIG. 21 is being executed in the Nth clock cycle, in the guard band determination in step S35, the transfer cost information calculated in the (N - 1)th clock cycle is used. Specifically, the transfer cost information calculated in the (N - 1)th clock cycle is stored in a register or the like, and in the guard band determination, the register or the like may be referred to as necessary. Details of the transfer cost information will be described later.
[0125] When the process of step S35 is executed, the target determination unit 410a determines whether the target frame satisfies the conditions for guard band determination (step S36). When the transmitable information acquired in step S33 is the number of frame transmitable bits, the condition for guard band determination is, for example, "the transmitable information (number of frame transmitable bits) ≥ total communication cost (data volume) when the target frame is transmitted by the communication unit 401 + transfer data volume". On the other hand, when the transmitable information acquired in step S33 is the frame transmitable time, the condition for guard band determination is, for example, "the transmitable information (frame transmitable time) ≥ total communication cost (time) when the target frame is transmitted by the communication unit 401 + data transfer time". That is, the condition for guard band determination is "transmitable information ≥ transmission cost + transfer cost information".
[0126] When it is determined that the target frame satisfies the conditions for guard band determination (YES in step S36), the target determination unit 410a notifies the transmission control unit 409 that the target frame (i.e., the frame stored at the head of the target queue) is transmitable (step S37). Specifically, in step S37, transmitability information indicating that the target frame is transmitable is passed from the target determination unit 410a to the transmission control unit 409.
[0127] On the other hand, when it is determined that the target frame does not satisfy the guard band determination condition (NO in step S36), the target determination unit 410a notifies the transmission control unit 409 that the target frame cannot be transmitted (i.e., non-transmittable) (step S38). Specifically, in step S37, transmission availability information indicating that the target frame cannot be transmitted is passed from the target determination unit 410a to the transmission control unit 409.
[0128] In addition, when it is determined in step S31 above that there is no frame in the target queue in a transmittable state (NO in step S31) or when it is determined in step S32 that the transmission control information is invalid (NO in step S32), the process of step S38 is executed.
[0129] Since the above-described guard band determination process is executed by a plurality of determination units 410a corresponding to a plurality of traffic classes, by executing the guard band determination process, the transmission availability of the queue stored at the head of each traffic class queue is notified from the transmission availability determination unit 410 (a plurality of determination units 410a) to the transmission control unit 409.
[0130] Next, with reference to the flowchart of FIG. 23, an example of the processing procedure of the frame selection process will be described. The frame selection process is executed by the transmission control unit 409.
[0131] First, the transmission control unit 409 determines whether the transmission control unit 409 is in a busy state (step S41). Note that the busy state means a state in which the transmission control unit 409 is transferring a frame to the communication unit 401 (buffer unit 412).
[0132] When it is determined that the transmission control unit 409 is not in the busy state (i.e., in the idle state where it is not transferring a frame) (NO in step S41), the transmission control unit 409 determines whether it is possible to start transferring a new frame based on a notification from the data transfer state management unit 411 (i.e., the result of the frame transfer determination) due to the execution of the backpressure process described later (step S42).
[0133] When it is determined that it is possible to start transferring a new frame (YES in step S42), the transmission control unit 409 acquires the transmission permission information passed from the transmission permission determination unit 410 (a plurality of determination units 410a) by executing the guard band determination process described above (step S43). According to the transmission permission information acquired in step S43, the transmission control unit 409 can grasp whether each frame stored at the head of the queues of a plurality of traffic classes is transmissible.
[0134] Next, the transmission control unit 409 selects a frame to actually start transferring from the transmission control unit 409 to the communication unit 401 from among the transmissible frames (step S44). Note that the process of step S44 may be executed according to an arbitrary selection algorithm. For example, when "Strict Priority" is used as the selection algorithm, the frame with the highest priority among the transmissible frames is selected. Hereinafter, the frame selected in step S44 is referred to as the transfer start frame.
[0135] When the process of step S44 is executed, the transmission control unit 409 notifies the transmission permission determination unit 410 of starting the transfer of the transfer start frame and the total communication cost when the transfer start frame is transmitted by the communication unit 401 (hereinafter referred to as the total communication cost of the transfer start frame) (step S45).
[0136] When the process of step S45 is executed, the transmission control unit 409 starts the transfer of the transfer start frame and transitions to the busy state (step S46). Note that the busy state of the transmission control unit 409 is released at the timing when the transfer of the transfer start frame is completed. The transmission control unit 409 automatically transitions to the idle state when the busy state is released.
[0137] On the other hand, when it is determined in step S41 that the transmission control unit 409 is in the busy state (YES in step S41) and when it is determined in step S42 that it is not possible to start the transfer of a new frame (NO in step S42), the process shown in FIG. 23 ends.
[0138] According to the above-described frame selection process, the transfer start frame is selected based on the result of the guard band determination by the transmission permission determination unit 410 and the result of the frame transfer determination by the data transfer state management unit 411 (that is, the transfer start timing of the frame is determined), and the transfer of the transfer start frame can be started.
[0139] Next, with reference to the flowchart of FIG. 24, an example of the processing procedure of the transfer cost information calculation process will be described. Note that the transfer cost information calculation process is executed by the transmission permission determination unit 410. Here, it is described assuming that the transfer cost information is the transfer data amount, but the same process is executed when the transfer cost information is the data transfer time.
[0140] First, the transmission availability determination unit 410 acquires, for example, the amount of transfer data held inside the transmission availability determination unit 410 (step S51). Note that the transfer cost information calculation process shown in FIG. 24 is a process of calculating transfer cost information (here, the amount of transfer data). Assuming that the transfer cost information calculation process is executed, for example, in the Nth clock cycle, the amount of transfer data acquired in step S52 is the amount of transfer data calculated in the transfer cost information calculation process executed in the (N - 1)th clock cycle. In this case, the amount of transfer data calculated in the (N - 1)th clock cycle is stored in a register or the like, and the process of step S51 may be executed by referring to the register or the like as necessary. Also, since the amount of transfer data in the initial state where no frame has been transferred at all is 0, 0 may be set as the default value when initializing the register or the like that stores the amount of transfer data.
[0141] Next, based on the notification from the transmission control unit 409 due to the execution of the above-described frame selection process, the transmission availability determination unit 410 determines whether to start transferring a new frame (step S52). In step S52, if the process of step S45 shown in FIG. 23 described above is being executed, it is determined to start transferring a new frame. On the other hand, if the process of step S45 shown in FIG. 23 is not being executed, it is determined not to start transferring a new frame.
[0142] If it is determined to start transferring a new frame (YES in step S52), the transmission availability determination unit 410 increases the amount of transfer data acquired in step S51 based on the total communication cost (that is, the total communication cost of the frame to start transfer) notified from the transmission control unit 409 due to the execution of the process of step S45 shown in FIG. 23 described above (step S53). In step S53, for example, a process of adding the total communication cost to the amount of transfer data may be executed, but other processes may be executed as long as the total communication cost can be reflected in the amount of transfer data.
[0143] Although the description has been made on the assumption that the total communication cost is notified from the transmission control unit 409, if the total communication cost is not notified from the transmission control unit 409, the process of step S53 is omitted.
[0144] Next, the transmission permission determination unit 410 reduces the transfer data amount acquired in step S51 or the transfer data amount after the process of step S53 is executed, based on the data amount that can be transmitted by the communication unit 401 per one clock cycle (hereinafter referred to as the transmission data amount per one clock cycle) (step S54). In step S54, for example, a process of subtracting the data amount that can be transmitted by the communication unit 401 per one clock cycle from the transfer data amount may be executed, but other processes may be executed as long as the data amount can be reflected in the transfer data amount.
[0145] The transfer data amount after the process of step S54 is executed is held inside the transmission permission determination unit 410 (step S55). As described above, when the transmission determination completed information calculation process is executed in the Nth clock cycle, the transfer data amount held in step S55 of the transfer cost information calculation process is used in the guard band determination process executed in the (N + 1)th clock cycle.
[0146] According to the transfer cost information calculation process described above, the transfer data amount in each clock cycle can be calculated and reflected in the frame selection process (that is, the determination of the frame transfer start timing).
[0147] In this embodiment, the transfer data volume is a value obtained by periodically subtracting the data volume transmitted per clock cycle from the total communication cost (data volume) calculated based on the frame that the transmission control unit 409 determines to start transferring in the immediate past and the communication overhead that occurs when the communication unit 401 actually transmits the frame. In other words, the transfer data volume can be said to be the current evaluation value of the communication cost (transmission cost) that is certain to occur. Note that since the transfer data volume is 0 when no frame has been transferred from the transmission control unit 409, the transfer data volume is a value of 0 or more.
[0148] Here, the transfer cost information has been described as the transfer data volume. However, when the transfer cost information is the data transfer time, the data transfer time may be a value obtained by periodically subtracting the time corresponding to one clock cycle from the total communication cost (time).
[0149] Next, with reference to the flowchart of FIG. 25, an example of the processing procedure of the backpressure processing (processing for generating backpressure) will be described. Note that the backpressure processing is executed by the data transfer state management unit 411.
[0150] First, the data transfer state management unit 411 acquires information related to the transfer state of the frame (transfer start frame) that the transmission control unit 409 has started transferring (hereinafter referred to as transfer state information) (step S61).
[0151] Note that the transfer state information acquired in step S61 includes, for example, the delay time that occurs between the transmission control unit 409 and the communication unit 401 (that is, the delay time until the data output from the transmission control unit 409 actually reaches the input port of the communication unit 401) and the total value of the data volumes of the frames staying between the transmission control unit 409 and the communication unit 401 (hereinafter referred to as the staying data volume).
[0152] The delay time may be a static value calculated in advance based on, for example, the specifications of each IP core, or it may be a value dynamically calculated by monitoring the input / output ports of the buffer unit 412 or the like.
[0153] Since the amount of data in residence corresponds to, for example, the amount of data of the frames stored in the buffer unit 412, it can be obtained from, for example, the buffer unit 412. Note that the amount of data in residence may be dynamically estimated by monitoring the output ports of the transmission control unit 409 or the like. In this case, for example, a value of 0 or more obtained by periodically subtracting the amount of data transmitted per clock cycle from the actual amount of data output from the transmission control unit 409 can be estimated as the amount of data in residence.
[0154] When the process of step S61 is executed, the data transfer state management unit 411 executes a frame transfer determination based on the transfer state information (delay time and amount of data in residence) acquired in step S61 and the amount of data transmitted per clock cycle (step S62).
[0155] When the process of step S62 is executed, the data transfer state management unit 411 determines whether or not the transfer state of the current frame satisfies the conditions for the frame transfer determination (step S63). Note that the conditions for the frame transfer determination are, for example, "amount of data in residence ≦ delay time × amount of data transmitted per clock cycle". That is, the conditions for the frame transfer determination determine whether or not there is a minimum amount of data necessary for efficiently using the network bandwidth between the transmission control unit 409 and the communication unit 401.
[0156] If it is determined that the transfer state of the current frame satisfies the conditions for the frame transfer determination (YES in step S63), the data transfer state management unit 411 notifies the transmission control unit 409 that the frame can be transferred (step S64).
[0157] On the other hand, when it is determined that the transfer state of the current frame does not satisfy the conditions for frame transfer determination (NO in step S63), the data transfer state management unit 411 notifies the transmission control unit 409 that the frame cannot be transferred (step S65). When the process of step S65 is executed, it is determined that it is not possible to start the transfer of a new frame in the frame selection process (step S32 shown in FIG. 23), and backpressure can be generated.
[0158] In the above-described backpressure process, backpressure can be generated in consideration of the frame transfer state between the transmission control unit 409 and the communication unit 401. Note that the backpressure process in the present embodiment does not generate backpressure for a frame whose transfer has been started in the past (the currently transferring frame). That is, the frame to which backpressure is applied is a frame that the transmission control unit 409 is about to newly start transferring (the frame before passing through the gate), and it is assumed that no backpressure is generated for a frame whose leading part has already passed through the gate even slightly (that is, a frame for which it is certain that it has passed through the gate).
[0159] In the present embodiment, by executing the above-described guard band determination process, frame selection process, transfer cost information calculation process, and backpressure process in combination for each clock cycle, frame transmission control considering the results of guard band determination and frame transfer determination is realized.
[0160] Note that transfer cost information is used in guard band determination, and data transfer state is used in the backpressure process, but the transfer cost information and the data transfer state are independent concepts.
[0161] Specifically, the transfer cost information takes into account communication overheads (such as 32-bit CRC, media-dependent overheads, etc.) in addition to the frames (data) actually output by the transmission control unit 409. However, when it is possible to ignore the communication overhead (for example, in the case of only internal data transfer not shown in the figure), the communication overhead may not be included in the transfer cost information.
[0162] On the other hand, the data transfer state (frame transfer state) is considered based on the frames actually output by the transmission control unit 409 (for example, the data flowing between the transmission control unit 409 and the communication unit 401), but the communication overhead is not considered. For example, whether it is the case of externally transmitting frames or internally transferring data, the communication overhead is basically excluded from the data transfer state used in the backpressure process.
[0163] Note that the flowcharts of FIGS. 26A and 26B show the overall process flow of frame transmission control realized by the combination of the above-described guard band determination process, frame selection process, transfer cost information calculation process, and backpressure process.
[0164] First, in frame transmission control, it is determined whether the frame transmission control (gate control) based on the transmission control information is effective (step S71). In step S71, when the process shown in FIG. 8 above (the process of step S5) is being executed, it is determined that the frame transmission control based on the transmission control information is effective.
[0165] When it is determined that the frame transmission control based on the transmission control information is effective (YES in step S71), the process of step S72 corresponding to the process of step S41 shown in FIG. 23 is executed.
[0166] When it is determined in step S72 that the transmission control unit 409 is not in the busy state (NO in step S72), the process of step S73 corresponding to the process of step S61 shown in FIG. 25 is executed.
[0167] When the process of step S73 is executed, it is determined whether or not the conditions for frame transfer determination are satisfied (step S74). Note that the process of step S74 corresponds to the processes of steps S62 and S63 shown in FIG. 25.
[0168] If it is determined in step S74 that the transfer state of the current frame satisfies the conditions for frame transfer determination (YES in step S74), the processes of steps S75 to S78, which correspond to the processes of steps S31 to S34 shown in FIG. 21, are executed.
[0169] Next, it is determined whether or not the conditions for guard band determination are satisfied (step S79). Note that the process of step S79 corresponds to the processes of steps S35 and S36 shown in FIG. 21.
[0170] If it is determined in step S79 that the conditions for guard band determination are satisfied (YES in step S79), the process of step S80, which corresponds to the process of step S44 shown in FIG. 23, is executed, and the process of step S81, which corresponds to the process of step S53 shown in FIG. 24, is executed.
[0171] When the process of step S81 is executed, the transfer of the transfer start frame is started (step S82). Note that when the process of step S82 is executed, the transmission control unit 409 transitions to the busy state.
[0172] When the process of step S82 is executed, the process of step S83, which corresponds to the process of step S54 shown in FIG. 24, is executed.
[0173] If it is determined in step S72 that the transmission control unit 409 is in the busy state (YES in step S72), if it is determined in step S74 that the conditions for frame transfer determination are not satisfied (NO in step S74), if it is determined in step S75 that there is no frame in a transmittable state in all queues (NO in step S75), if it is determined in step S76 that the transmission control information is not valid (NO in step S76), and if it is determined in step S79 that there is not even one frame satisfying the conditions for guard band determination (NO in step S79), the process of step S83 is executed.
[0174] As described above, when it is determined in step S71 that the transmission control based on the transmission control information is valid, the transmission control of the frame (that is, the determination of the frame transfer start timing) is performed based on the guard band determination (conditions) and the frame transfer determination (conditions).
[0175] On the other hand, in the example shown in FIGS. 26A and 26B, when it is determined in step S71 that the transmission control based on the transmission control information is not valid (NO in step S71), for example, the transmission control of the frame is performed based on the frame transfer determination (conditions).
[0176] Specifically, the processes of steps S84 to S87 corresponding to the processes of steps S72 to S75 described above are executed.
[0177] Also, when it is determined in step S87 that there is a frame in a transmittable state in the target queue (YES in step S31), the processes of steps S88 and S89 corresponding to the processes of steps S80 and S82 described above are executed.
[0178] Here, the processes of steps S84 to S89 have been described as being executed when the transmission control of the frame based on the transmission control information is not valid. However, when the said transmission control is not valid, the processes of steps S84 to S89 may not be executed and the frame transmission control may be terminated.
[0179] The transmission control (series of processes) of the frame described in FIGS. 26A and 26B above is premised on being completed within one clock cycle, and is suitable when the above-described guard band determination process, frame selection process, transfer cost information calculation process, and backpressure process are realized by hardware implementation.
[0180] On the other hand, the flowcharts shown in FIGS. 27A and 27B show the overall flow of the frame transmission control process when the frame transmission control (series of processes) does not necessarily complete within one clock cycle.
[0181] Since the processes shown in FIGS. 27A and 27B are generally the same as the processes shown in FIGS. 26A and 26B, the same reference numerals are given to the same parts as in FIGS. 26A and 26B, and detailed description is omitted here.
[0182] Note that the processes shown in FIGS. 27A and 27B are different from the processes shown in FIGS. 26A and 26B in that the process of step S90 is added between the processes of steps S78 and S79 shown in FIGS. 26A and 26B, and the process of step S83 is omitted. In step S90, a process of reducing the transfer data amount is executed based on the time actually elapsed from the previous iteration (repetitive process) and the amount of transmission data per clock.
[0183] The frame transmission control shown in FIGS. 27A and 27B above is suitable when the guard band determination process, frame selection process, transfer cost information calculation process, and backpressure process are realized by software implementation. Note that when the guard band determination process, frame selection process, transfer cost information calculation process, and backpressure process are realized by hardware implementation, the frame transmission control shown in FIGS. 27A and 27B may be executed.
[0184] Incidentally, although the frame transmission control has been described above in the case where the store-and-forward method is adopted in the network interface controller 4 (transmission frame storage unit 403), the frame transmission control cannot be applied to the cut-through method that starts transmitting the frame before the reception of the frame is completed.
[0185] Therefore, the frame transmission control in the case where the cut-through method is adopted in the network interface controller 4 (transmission frame storage unit 403) will be described. In the following description, for the sake of convenience, the guard band determination process shown in FIG. 21 described above is referred to as the first guard band determination process, the frame selection process shown in FIG. 23 is referred to as the first frame selection process, and the transfer cost information calculation process shown in FIG. 24 is referred to as the first transfer cost information calculation process. The guard band determination process, the frame selection process, and the transfer cost information calculation process executed when the cut-through method is adopted are referred to as the second guard band determination process, the second frame selection process, and the second transfer cost information calculation process, respectively.
[0186] First, with reference to the flowchart of FIG. 28, an example of the processing procedure of the second guard band determination process will be described. Here, the parts different from the above-described first guard band determination process will be mainly described.
[0187] The target determination unit 410a determines whether there is a frame in a transmissible state in the target queue (step S101). As described above, when the cut-through method is adopted in the network interface controller 4 (transmission frame storage unit 403), unlike the above-described first guard band determination process (that is, step S31 shown in FIG. 21), "there is a frame in a transmissible state in the target queue" means that a frame whose leading data is ready is stored in the target queue, and it is not necessarily required that a frame in which all the data constituting the frame is complete is stored in the target queue (that is, it is not necessary that the data amount is determined).
[0188] When it is determined that there is a frame in a state where it can be transmitted to the target queue (YES in step S101), the processes of steps S102 and S103 corresponding to the processes of steps S32 and S33 shown in FIG. 21 described above are executed.
[0189] Here, in the above-described first guard band determination process, the data amount of the frame (target frame) stored at the head of the target queue is acquired. However, in the second guard band determination process, all the data of the target frame is not yet present in the target queue, and the data amount of the target frame cannot be acquired. For this reason, the target determination unit 410a acquires the upper limit value of the data amount (frame length) of the frame stored in the target queue (step S104). In step S104, for example, the value of queueMaxSDU (maximum data unit defined for each queue) of the target queue can be acquired as the upper limit value of the data amount of the frame. Also, the MTU (Maximum Transmission Unit), which is the maximum transmission unit in the communication unit 401, may be used as the upper limit value of the data amount of the frame.
[0190] When the process of step S104 is executed, the target determination unit 410a performs a guard band determination using the upper limit value of the data amount of the frame acquired in step S104 instead of the data amount of the target frame in the first guard band determination process (step S105). In other words, in step S105, a guard band determination is executed based on the upper limit value of the total communication cost when the target frame is transmitted by the communication unit 401. Since it is the same as the guard band determination in the first guard band determination process except for using the upper limit value of the data amount of the frame instead of the data amount of the target frame, the detailed description of step S105 is omitted here.
[0191] When the process of step S105 is executed, the processes of steps S106 to S108 corresponding to the processes of steps S36 to S38 shown in FIG. 21 are executed.
[0192] In the second guard band determination process described above, by using the upper limit value of the data amount of the frame, even when the cut-through method is adopted, the guard band determination can be appropriately executed.
[0193] Next, with reference to the flowchart of FIG. 29, an example of the processing procedure of the second frame selection process will be described. Here, mainly the parts different from the first frame selection process described above will be explained.
[0194] First, the processes of steps S111 to S114 corresponding to the processes of steps S41 to S44 shown in FIG. 23 are executed.
[0195] When the process of step S114 is executed, the transmission control unit 409 notifies the transmission permission determination unit 410 to start the transfer of the transfer start frame (step S115). In the first frame selection process described above, the start of the transfer of the transfer start frame and the total communication cost of the transfer start frame are notified to the transmission permission determination unit 410. However, in the second frame selection process, since the data amount of the transfer start frame is not determined, the total communication cost is not notified.
[0196] When the process of step S115 is executed, the process of step S116 corresponding to the process of step S46 shown in FIG. 23 is executed.
[0197] If it is determined in step S111 that the transmission control unit 409 is in the busy state (YES in step S111), the transmission control unit 409 acquires the data amount of the frame output from the transmission control unit 409 (that is, the frame being transferred), and notifies the transmission permission determination unit 410 of the data amount (hereinafter referred to as the output data amount) (step S117).
[0198] In the above-described second frame selection process, unlike the first frame selection process, when the transmission control unit 409 is in the busy state, by notifying the amount of output data, the amount of output data can be reflected in the transfer cost information (transfer data amount or data transfer time) calculated in the transfer cost information calculation process.
[0199] Next, with reference to the flowchart of FIG. 30, an example of the processing procedure of the second transfer cost information calculation process will be described. Here, mainly the parts different from the above-described first transfer cost information calculation process will be described.
[0200] First, the processes of steps S121 and S122 corresponding to the processes of steps S51 and S52 shown in FIG. 24 are executed.
[0201] When it is determined in step S122 that the transfer of a new frame is to be started (YES in step S122), the transmission availability determination unit 410 increases the transfer data amount obtained in step S122 based on the communication overhead of the frame for which the transfer is newly started (the amount of data added inside the communication unit 401 and the media-dependent overhead when transmitting the frame) (step S123). In step S123, for example, a process of adding the communication overhead to the transfer data amount may be executed, but other processes may be executed as long as the communication overhead can be reflected in the transfer data amount.
[0202] When it is determined that the transfer of a new frame is not to be started (NO in step S121) or when the process of step S123 is executed, the transmission availability determination unit 410 determines whether there is a notification of the amount of output data from the transmission control unit 409 due to the execution of the above-described second frame selection process (step S124).
[0203] When it is determined that there is a notification of the amount of data already output from the transmission control unit 409 (YES in step S124), the transmission permission determination unit 410 increases the transfer data amount after the process of step S123 is executed based on the amount of data already output (step S125). In step S125, for example, a process of adding the amount of data already output to the transfer data amount may be executed. However, as long as it is possible to reflect the amount of data already output in the transfer data amount, other processes may be executed.
[0204] When the process of step S125 is executed, the transmission permission determination unit 410 decreases the transfer data amount after the process of step S125 is executed based on the amount of transmission data per one clock cycle (step S126).
[0205] On the other hand, when it is determined that there is no notification of the amount of data already output from the transmission control unit 409 (NO in step S124), the transmission permission determination unit 410 decreases the transfer data amount after the process of step S123 is executed based on the amount of transmission data per one clock cycle (step S126).
[0206] Note that since the process of step S126 corresponds to the process of step S54 shown in FIG. 24 described above, the detailed description thereof is omitted here.
[0207] When the process of step S126 is executed, the process of step S127 corresponding to the process of step S55 shown in FIG. 24 is executed.
[0208] According to the second transfer cost information calculation process described above, even when the cut-through method is adopted, the transfer data amount can be calculated using the communication overhead and the amount of data already output. Here, the transfer cost information has been described as the transfer data amount. However, when the transfer cost information is the data transfer time, the data transfer time obtained by expressing the communication overhead and the amount of data already output in time units may be calculated in the second transfer cost information calculation process.
[0209] Here, assuming the cut-through method is adopted, the second guard band determination process, the second frame selection process, and the second transfer cost information calculation process have been described. However, whether the store-and-forward method or the cut-through method is adopted, the backpressure process shown in FIG. 25 can be commonly executed.
[0210] That is, in the present embodiment, when the store-and-forward method is adopted, the transmission control of the frame is realized by a combination of the first guard band determination process, the first frame selection process, the first transfer cost information calculation process, and the backpressure process. However, when the cut-through method is adopted, it is assumed that the transmission control of the frame is realized by a combination of the second guard band determination process, the second frame selection process, the second transfer cost information calculation process, and the backpressure process.
[0211] In other words, the transmission control of the frame combined with the first guard band determination process, the first frame selection process, the first transfer cost information calculation process, and the backpressure process is suitable for a communication method in which the data amount (frame length) of the frame is determined at the time of determining whether the frame can be transmitted (the timing at which the transmission control unit 409 determines whether it is in the busy state in the first frame selection process). On the other hand, the transmission control of the frame combined with the second guard band determination process, the second frame selection process, the second transfer cost information calculation process, and the backpressure process is suitable for a communication method in which the data amount (frame length) of the frame is not determined at the time of determining whether the frame can be transmitted (the timing at which the transmission control unit 409 determines whether it is in the busy state in the second frame selection process).
[0212] In addition, in the present embodiment, although the second guard band determination process, the second frame selection process, and the second transfer cost information calculation process have been described as processes executed when the cut-through method is adopted, the second guard band determination process, the second frame selection process, and the second transfer cost information calculation process may be executed when the store-and-forward method is adopted. Specifically, as frame transmission control suitable for a communication method in which the data amount (frame length) of the frame is determined at the time of determining whether or not the frame can be transmitted, for example, a process combining the first guard band determination process, the second frame selection process, the second transfer cost information calculation process, and the backpressure process may be executed.
[0213] As described above, the network interface controller 4 (communication control device) according to the present embodiment includes a transmission control unit 409 that controls the transfer start timing of frames (first messages) stored in the queue based on a gate control list (gate control information) in which the opening and closing of gates corresponding to each of a plurality of queues are set, and a communication unit 401 that transmits the frames transferred from the transmission control unit 409 according to the transfer start timing. In the present embodiment, the transfer start timing of the frame is determined based on the transmission cost when a frame (second message) that has been determined to pass through the gate is transmitted by the communication unit 401 and the transfer state of the frame between the transmission control unit 409 and the communication unit 401.
[0214] In the present embodiment, with such a configuration, it is possible to accurately control the transfer start timing and data amount of the frame (that is, the transmission timing and transmission amount of the message).
[0215] In addition, in the present embodiment, the "frame that has been determined to pass through the gate" is a concept that includes frames that have passed through the gate in the past and frames that are currently passing through the gate. That is, the "frame that has been determined to pass through the gate" means that the timing at which the frame passes through the gate is determined, that is, the state in which the timing at which the transmission control unit 409 transfers the head data of the frame is determined. Further, the "frame that has passed through the gate in the past" is a frame for which the transfer by the transmission control unit 409 has been completed. Furthermore, the "frame that is currently passing through the gate" is a frame being transferred when the transmission control unit 409 is in the busy state.
[0216] Also, in the present embodiment, the "transmission cost" is a concept that includes the above-described total communication cost and the upper limit value of the total communication cost. When the store-and-forward method is adopted, it corresponds to the total communication cost, and when the cut-through method is adopted, it corresponds to the upper limit value of the total communication cost.
[0217] Furthermore, the "transfer state of the frame between the transmission control unit 409 and the communication unit 401" corresponds to the transfer state of the frame (data) after passing through the gate. In the present embodiment, the "frame after passing through the gate" is a concept that includes a frame being transferred between the transmission control unit 409 and the buffer unit 412, a frame held in the buffer unit 412, and data being transferred between the buffer unit 412 and the communication unit 401. Although the network interface controller 4 has been described as including the buffer unit 412 in the present embodiment, when the network interface controller 4 does not include the buffer unit 412, the "frame after passing through the gate" is a concept that includes data being transferred between the transmission control unit 409 and the communication unit 401.
[0218] Also, in the present embodiment, based on the transmission control information (transmittable information) generated from the gate control list, the transmission cost when the frame stored at the head of each of the plurality of queues is transmitted by the communication unit 401, and the transfer cost information based on the transmission cost when the frame determined to pass through the gate is transmitted by the communication unit 401, it is determined whether it is possible to transmit the frame stored at the head of each of the plurality of queues (that is, guard band determination is executed). Note that the transmission control information (transmittable information) indicates the data amount of the frame that can be transmitted until the gate corresponding to each of the plurality of queues closes at the time when the transmission control unit 409 determines the transfer start timing of the frame, or the time until the gate closes. The transfer start timing of the frame in the present embodiment is determined based on the result of such guard band determination (that is, the determination result by the transmission permission determination unit 410).
[0219] In the present embodiment, with such a configuration, it is possible to determine whether it is possible to transmit subsequent frames in consideration of the state of the frame after passing through the gate.
[0220] Also, in the present embodiment, for example, when the store-and-forward method is adopted, the first guard band determination process using the total communication cost may be executed, and when the cut-through method is adopted, the second guard band determination process using the upper limit value of the total communication cost may be executed.
[0221] In addition, in this embodiment, the "time when the transmission control unit 409 determines the transfer start timing of the frame" means the time when the transmission control unit 409 is in the idle state. Also, in this embodiment, the transmission control information is managed by the transmission control information management unit 408, and the data amount of the frame that can be transmitted before the gates corresponding to each of the plurality of queues are closed (that is, the transmissible amount indicated by the transmissible information) can be received from the transmission control information management unit 408. Furthermore, in this embodiment, the guard band determination is executed based on the transmission control information (transmissible information), the transmission cost, and the transfer cost information. Although the transmission control information, the transmission cost, and the transfer cost information can be defined (expressed) in units of data amount (such as bits or bytes), they may be defined in units of time (such as nanoseconds), for example.
[0222] Furthermore, in this embodiment, it is possible to determine whether it is possible to transfer a frame based on the delay time generated between the transmission control unit 409 and the communication unit 401, the data amount of the frames staying between the transmission control unit 409 and the communication unit 401, and the transmission data amount per clock cycle (the data amount that the communication unit 401 can transmit per unit time) (that is, execute frame transfer determination). The transfer start timing of the frame in this embodiment is determined based on the result of such frame transfer determination (that is, the determination result by the data transfer state management unit 411).
[0223] Note that when the buffer unit 412 is provided between the transmission control unit 409 and the communication unit 401 as described in this embodiment, the delay time generated between the transmission control unit 409 and the communication unit 401 includes the delay time generated in the buffer unit 412, and the data amount of the frames staying between the transmission control unit 409 and the communication unit 401 includes the data amount of the frames held in the buffer unit 412.
[0224] In this embodiment, with such a configuration, backpressure can be appropriately generated, avoiding the situation where frames (data) are held in the buffer unit 412 more than necessary, and the given bandwidth can be effectively utilized.
[0225] Note that in this embodiment, the "data amount of the frame staying" refers to the concept including the data amount of the frame being transferred between the transmission control unit 409 and the buffer unit 412 and the data amount of the frame being transferred between the buffer unit 412 and the communication unit 401, and the data amount of the frame held in the buffer unit 412 (the buffered data amount).
[0226] Also, in this embodiment, although it has been described that the transfer start timing of the frame is determined based on the result of the guard band determination (the first determination result) and the result of the frame transfer determination (the second determination result), this embodiment may have a configuration in which the transfer timing of the frame is determined based on at least one of the result of the guard band determination and the result of the frame transfer determination. Specifically, this embodiment may have a configuration in which the transfer start timing of the frame is determined based only on the result of the above-described guard band determination, for example. Further, in this embodiment, although it has been described that the guard band determination is executed using the transfer cost information (that is, the transmission cost when the frame for which it is determined that it will pass through the gate is transmitted by the communication unit 401), this embodiment may have a configuration in which the transfer start timing of the frame is determined by combining the guard band determination that does not use the transfer cost information and the above-described frame transfer determination.
[0227] Furthermore, in this embodiment, by the configuration of determining the transfer start timing of the frame using the transmission control information generated from the gate control list, while simplifying the processing of the hardware configuration or the software configuration, it is possible to accurately operate according to the gate control list, and it is possible to effectively utilize the given bandwidth. Also, it is possible to give real-time performance (completing the processing within a defined time) to the transmission control process (transmission control of the frame).
[0228] Here, in the present embodiment, as shown in FIG. 2, transmission control information is generated by the transmission control information generation unit 204 included in the host processor 2, and the transmission control information is described as being stored in the transmission control information storage unit 407 included in the network interface controller 4. However, the transmission control information may be dynamically generated (calculated) on the network interface controller 4 side.
[0229] FIG. 31 is a block diagram showing an example of the functional configuration of the communication device 100 when the transmission control information is generated on the network interface controller 4 side (hereinafter referred to as the first modification example of the present embodiment). In FIG. 31, the same parts as those in FIG. 2 are denoted by the same reference numerals, and detailed descriptions thereof are omitted.
[0230] As shown in FIG. 31, the network interface controller 4 includes a gate control list storage unit 414 and a transmission control information generation unit 415.
[0231] In the first modification example of the present embodiment, the host processor 2 does not include the transmission control information generation unit 204, and the reception unit 406 provided in the network interface controller 4 receives the gate control list stored in the gate control list storage unit 201 via the setting unit 205 provided in the host processor 2. The gate control list received by the reception unit 406 in this way is stored in the gate control list storage unit 414.
[0232] The transmission control information generation unit 415 reads one or more entries from the gate control list storage unit 414 based on the global clock and the local clock, calculates the transmissible amount (for example, the number of frame transmissible bits) indicated by the transmissible information of each traffic class (corresponding queue), and generates transmission control information including the period information (for example, the number of clock cycles representing the value of the time interval) and the transmissible information.
[0233] Note that, as described above, since the transmission control information management unit 408 switches entries according to the global clock and the local clock (progress), in order for the transmission control information generation unit 415 to smoothly perform such entry switching, the transmission control information generation unit 415 preferably operates to calculate in advance the transmissible amount indicated by the transmissible information included in the entry next to the current entry stored in the storage unit 408a in the transmission control information management unit 408. For example, when the calculation of the transmissible amount (that is, the generation of the transmission control information) by the transmission control information generation unit 415 is not in time, the transmission control information management unit 408 may output "invalid" to the transmission permission determination unit 410. Note that "invalid" means that the transmission control information (transmissible information) has not been updated to the latest state as described above.
[0234] For the transmissible amount indicated by the transmissible information included in the first (top) entry, the transmission control information generation unit 415 shall calculate it in advance before the gate control becomes effective and hold the entry. Also, for the second and subsequent entries, the calculated transmissible amount (transmissible information) may be cached and the cached transmissible amount may be reused in subsequent times.
[0235] Note that the transmission control of the frame in the first modification example of the present embodiment is the same as that described in the above-described present embodiment, and thus the detailed description thereof is omitted here.
[0236] Furthermore, in the present embodiment, the buffer unit 412 has been described as being provided between the transmission control unit 409 and the communication unit 401. However, as shown in FIG. 32, a configuration in which the buffer unit 412 is provided inside the communication unit 401 (hereinafter referred to as the second modification example of the present embodiment) may be adopted.
[0237] In the configuration related to the second variant of this embodiment, for example, there are cases where it is not possible to obtain the amount of data of the frame stored in buffer unit 412 in frame transmission control. Even in such a case, however, it is possible to grasp the amount of data of the frame input to buffer unit 412 as the amount of retained data, for example by monitoring the output port of transmission control unit 409, and to execute the above-mentioned backpressure processing based on this amount of data.
[0238] 33, the network interface controller 4 may be configured to include a plurality of buffer units 412 (hereinafter, referred to as a third modified example of this embodiment). For example, in the case of a configuration including a plurality of buffer units 412, a process of converting the bus width may be executed in a buffer unit 412 at a front stage. Furthermore, a process of converting the clock frequency, that is, a process of switching the clock domain (CDC: Clock Domain Crossing) may be executed in a buffer unit 412 at a rear stage.
[0239] Here, the first to third modified examples of this embodiment have been described, but the first to third modified examples can be appropriately combined. Specifically, for example, when the first and third modified examples are combined, it is possible to realize a configuration as shown in FIG.
[0240] The network interface controller 4 can be configured to perform transmission and reception processing of indivisible frames (high-priority frames that require low-latency transmission) called express frames in express Media Access Control (eMAC) defined by IEEE802.3br, and to perform transmission and reception processing of divisible frames (low-priority frames that do not require low-latency transmission) called preemptable frames in preemptable Media Access Control (pMAC).
[0241] In this case, the network interface controller 4 may be configured to execute transmission control for each of the express frame and the preemptable frame (hereinafter referred to as the fourth modification example of the present embodiment). In the fourth modification example of the present embodiment, as shown in FIG. 35, the transmission control unit 409 includes a first transmission control unit 409a and a second transmission control unit 409b, the data transfer state management unit 411 includes a first data transfer state management unit 411a and a second data transfer state management unit 411b, and the buffer unit 412 includes a first buffer unit 412a and a second buffer unit 412b. According to such a configuration, the first transmission control unit 409a, the first data transfer state management unit 411a, and the first buffer unit 412a may operate to execute transmission control for the express frame, and the second transmission control unit 409b, the second data transfer state management unit 411b, and the second buffer unit 412b may operate to execute transmission control for the preemptable frame.
[0242] In this case, for example, the second data transfer state management unit 411b executes a frame transfer determination based on the amount of data remaining in the second buffer unit 412b (the amount of data of the frames stored in the second buffer unit 412b) in the transmission control of the preemptable frame. The frame transfer determination may be executed with reference to the amount of data remaining in the first buffer unit 412a obtained via the first data transfer state management unit 411a. According to this, the second data transfer state management unit 411b can execute a frame transfer determination based on the amounts of data remaining in the first buffer unit 412a and the second buffer unit 412b. Note that the delay time in this frame transfer determination may be the delay time of the first buffer unit 412a or the delay time of the second buffer unit 412b. Further, when it is determined that the first data transfer state management unit 411a does not satisfy the conditions for frame transfer determination (that is, the frame is not transferable), the second data transfer state management unit 411b may similarly determine that the conditions for frame transfer determination are not satisfied in the frame transfer determination executed by the second data transfer state management unit 411b.
[0243] Note that, as shown in FIG. 35, the network interface controller 4 in the fourth modification of the present embodiment further includes a queue attribute information storage unit 416 that stores attribute information indicating a queue (that is, the attribute of the queue) in which the above-described express frame and preemptable frame are stored, and a communication process determination unit 417 that refers to the attribute information to determine whether to transmit the frame stored in each of the plurality of queues as an express frame or a preemptable frame, and determines the communication process for the frame.
[0244] Furthermore, although omitted in FIG. 35, the network interface controller 4 in the fourth modification of the present embodiment may further include a communication processing unit including a first communication processing unit that performs transmission and reception processing of an express frame (a non-divisible frame) and a second communication processing unit that performs transmission and reception processing of a preemptable frame (a divisible frame).
[0245] (Second Embodiment) Next, the second embodiment will be described. In the present embodiment, the description of the same parts as those in the above-described first embodiment will be omitted, and the parts different from the first embodiment will be mainly described. Note that since the hardware configuration of the communication device in the present embodiment is the same as that in the above-described first embodiment, it will be described with reference to FIG. 1 as appropriate.
[0246] FIG. 36 is a block diagram showing an example of the functional configuration of the communication device 100 in the present embodiment. In FIG. 36, the same parts as those in FIG. 2 described above are denoted by the same reference numerals, and the detailed description thereof will be omitted.
[0247] As shown in FIG. 36, the host processor 2 in the present embodiment is different from the host processor 2 shown in FIG. 2 described above in that it does not include a setting unit 205 and includes a transmission control information storage unit 207. Further, the network interface controller 4 in the present embodiment is different from the network interface controller 4 shown in FIG. 2 described above in that it does not include a reception unit 406 and a transmission control information storage unit 407 and includes a cache unit 418 (temporary storage unit).
[0248] In the present embodiment, the transmission control information storage unit 207 stores the transmission control information generated by the transmission control information generation unit 204.
[0249] The transmission control information management unit 408 directly acquires the transmission control information from the transmission control information storage unit 207 without passing through the setting unit 205 and the reception unit 406 described in the first embodiment above. The transmission control information management unit 408 acquires the transmission control information from the transmission control information storage unit 207 by, for example, DMA.
[0250] The cache unit 418 is a storage medium (temporary storage unit) that temporarily stores at least a part of the transmission control information. The cache unit 418 can be configured by, for example, a storage medium that can be accessed faster than the transmission control information storage unit 207. Note that a configuration without the cache unit 418 may also be possible.
[0251] The transmission control information management unit 408, for example, periodically reads the transmission control information from the transmission control information storage unit 207 in advance and stores it in the cache unit 418. Thereby, even when the memory of the network interface controller 4 is small and it is not possible to store all of the transmission control information (entries included therein), it is possible to cope with the situation.
[0252] In order to prevent the transmission control information required for transmission control from being depleted, the cache unit 418 may be configured to include a plurality of storage areas (cache areas). FIG. 37 is a diagram showing a configuration example of the cache areas in the cache unit 418. The transmission control information storage unit 207 may be configured with a large-capacity memory such as DRAM in addition to SRAM, for example. In contrast, the cache unit 418 is configured with a memory such as SRAM that has a smaller capacity than the transmission control information storage unit 207 but can be read out at high speed with a fixed delay.
[0253] As shown in FIG. 37, the cache unit 418 includes a fixed (static) cache area (fixed storage unit) and a variable (dynamic) cache area (variable storage unit).
[0254] The fixed cache area stores predetermined transmission control information among the transmission control information stored in the transmission control information storage unit 207. The predetermined transmission control information is, for example, a certain number of transmission control information from the beginning. The variable cache area stores a certain number of transmission control information among the transmission control information other than the transmission control information stored in the fixed cache area, and stores the transmission control information that varies according to the transmission control.
[0255] In the example shown in FIG. 37, the cache unit 418 stores m entries in the fixed cache area and n entries in the variable cache area. The head area (from entry 0 to m - 1) of the transmission control information storage unit 207 is written into the fixed cache area, and a part of the other areas (from entry k to k + n - 1) is written into the variable cache area. k is the offset from the beginning of the transmission control information. Among the variable cache areas, the areas for which the reading by the transmission control information management unit 408 has been completed are overwritten and reused.
[0256] The number of entries m in the fixed cache area and the number of entries n in the variable cache area can be any specified values, and may be determined by, for example, the capacity of the SRAM or the like used. By m and n, it is possible to change the ratio between the fixed cache area and the variable cache area. For example, m = n may be set to a 1:1 ratio, or 2m = n may be set to a 1:2 ratio.
[0257] The flowchart of FIG. 38 shows an example of the processing procedure of the initialization process of the cache unit 418. The initialization process is executed, for example, when the gate control list is updated by a user setting or a setting via a network.
[0258] The transmission control information management unit 408 writes the transmission control information into the fixed cache area from the beginning (step S131). When the transmission control information management unit 408 has finished writing all to the fixed cache area, it starts writing to the variable cache area from the next (step S132). Specifically, if the fixed cache area can cache m entries, the entries after the (m + 1)-th entry are written to the variable cache area.
[0259] When the number of entries that can be cached in the variable cache area is n, the initialization process is completed when the writing of the n entries to the variable cache area is finished. Note that the transmission control information management unit 408 manages the position where the writing is completed.
[0260] Thereafter, the transmission control information management unit 408 reads out the transmission control information stored in the fixed cache area or the variable cache area and uses it for transmission control. When the reading of the transmission control information stored in the variable cache area is completed, the transmission control information management unit 408 updates the transmission control information stored in the variable cache area.
[0261] The transmission control information management unit 408 updates, for example, from the entry next to the last writing position in the variable cache area to the entry before the reading position from which the transmission control information management unit 408 reads the entry.
[0262] Using FIGS. 39 to 46, a specific example of the update process of the transmission control information will be described. To simplify the description, the number of entries n in the variable cache area is set to 10. Also, as shown in FIG. 39, the number of pieces of transmission control information stored in the transmission control information storage unit 207 is set to m + 20 (from the 0th to the (m + 19)th). Note that although the entries included in the transmission control information are stored in the fixed cache area and the variable cache area, in the following description, for convenience, it is described as if the transmission control information is stored in the fixed cache area and the variable cache area.
[0263] FIG. 40 is a diagram showing the state of the cache unit 418 after the initialization process shown in FIG. 38. In this state, the transmission control information of the 0th to (m - 1)th in the transmission control information storage unit 207 is stored in the entries 0 to (m - 1) of the fixed cache area, and the transmission control information of the mth to (m + 9)th in the transmission control information storage unit 207 is stored in the entries m to (m + 9) of the variable cache area. The last write position at this time is m + 9. Since the variable cache area operates as a circular buffer, the position after m + 9 is m. When the transmission control becomes valid, the transmission control information management unit 408 reads the transmission control information of entry 0 corresponding to the current read position 0 and performs transmission control.
[0264] FIG. 41 is a diagram showing a state where time has passed and the read position of the transmission control information management unit 408 has become m + 3. In this state, the transmission control information of the entries m to (m + 2) corresponding to the entries from the entry next to the last write position to the entry before the read position will not be referenced immediately in the future. This is because the transmission control information is read and used in order from the beginning as time passes. Therefore, the transmission control information management unit 408 updates these entries.
[0265] FIG. 42 is a diagram showing the state after these entries are updated. The transmission control information management unit 408 reads out the number of pieces of transmission control information corresponding to the rewritable area of the variable cache area from the position next to the last-written transmission control information in the transmission control information storage unit 207, and writes it to the variable cache area. In the example shown in FIG. 42, the transmission control information management unit 408 writes the transmission control information of the (m + 10)th to (m + 12)th to the entries m to m + 2.
[0266] FIG. 43 is a diagram showing the state after the entries of m + 3 to m + 8 are updated in the same manner as time elapses. That is, when the read position reaches m + 9 as time elapses, the entries of m + 3 to m + 8 are updated. Since the variable cache area is a circular buffer (ring buffer) as described above, the entry next to m + 9 is m.
[0267] When the read position circulates and becomes m, the transmission control information management unit 408 updates the entry m + 9 corresponding to the position next to the last write position. FIG. 44 is a diagram showing the state after the entry of m + 9 is updated.
[0268] In this way, the variable cache area can store while updating the transmission control information to be referred to next.
[0269] Note that the transmission control (gate control) operates by a clock (local clock) that controls the operation of the transmission control information management unit 408 and a clock (global clock) of the time management unit 404. In the present embodiment, by storing a certain number of pieces of transmission control information from the head in the fixed cache area, even when the gate control list is returned to the head entry by a signal (CycleStart signal) generated based on the time of the time management unit 404 called CycleStart, the transmission control information does not run out (underflow), and transmission control can be performed.
[0270] FIG. 45 is a diagram showing a state in which the read position has returned to the head by the CycleStart signal from the state shown in FIG. 44. As shown in FIG. 45, the read position returns to 0 which is the head of the fixed cache area, and the last write position moves to m - 1. After that, the transmission control information management unit 408 writes the transmission control information to the variable cache area in the same manner as the initialization process.
[0271] FIG. 46 is a diagram showing a state after the transmission control information has been written to the variable cache area in this way. By such processing, even when the read position moves to the variable cache area thereafter, the transmission control information can be kept in the state of being stored in the cache unit 418.
[0272] FIGS. 36 and 37 show a configuration including one cache unit 418, but a plurality of cache units may be provided. FIG. 47 is a block diagram showing an example of the functional configuration of the communication device 100 (host processor 2 and network interface controller 4) configured to include two cache units 418-1 and 418-2.
[0273] In transmission control (gate control), when switching the gate control list, it is simultaneously specified when the gate control list becomes effective. When switching to a new gate control list, it is desirable that the transmission control information management unit 408 performs transmission control using the old gate control list until immediately before the switching, and performs transmission control using the new gate control list immediately after the switching.
[0274] If the two cache units 418-1 and 418-2 store the transmission control information generated from the gate control lists before and after switching respectively and are configured to switch the cache unit to be used, it becomes possible to switch the transmission control information more accurately at the specified time. The transmission control information management unit 408, for example, stores the new transmission control information in advance in the cache unit that is not currently in use among the cache units 418-1 and 418-2 before switching, and switches the cache unit to be read at the switching timing (specified time). As a result, it becomes possible to switch instantaneously to the transmission control using the new transmission control information while performing the transmission control using the old transmission control information until just before.
[0275] In addition, in this embodiment, the transmission control information storage unit 207 has been described as being realized by the memory in the host processor 2. However, the transmission control information storage unit 207 may be realized by the memory (DRAM) in the network interface controller 4. Also, although the transmission control information management unit 408 has been described as reading the transmission control information from the transmission control information storage unit 207 and storing it in the cache unit 418, the storage method in the cache unit 418 is not limited to this. For example, the transmission control information management unit 408 or another control unit may instruct the DMA controller to read the transmission control information from the transmission control information storage unit 207 and store it in the cache unit 418.
[0276] In addition, in this embodiment, the cache unit 418 has been described as being provided outside the transmission control information management unit 408. However, it is also possible to use the registers (fixed registers and variable registers) inside the transmission control information management unit 408 as the cache unit.
[0277] Also, the cache units 418, 418-1, and 418-2 described in this embodiment may be configured to have only a fixed cache area without a variable cache area. Also, the number of entries in the fixed cache area may be set to 1.
[0278] Note that since the transmission control of the frame in the present embodiment is the same as that in the first embodiment described above, the detailed description thereof is omitted here.
[0279] In the present embodiment, in the configuration in which the network interface controller 4 has the cache unit as described above, the same effects as those in the first embodiment described above can be achieved.
[0280] (Third Embodiment) Next, the third embodiment will be described. In the present embodiment, the description of the same parts as those in the first embodiment described above is omitted, and mainly the parts different from the first embodiment will be described. Note that since the hardware configuration of the communication device in the present embodiment is the same as that in the first embodiment described above, it will be described with reference to FIG. 1 as appropriate.
[0281] FIG. 48 is a block diagram showing an example of the functional configuration of the communication device 100 in the present embodiment. In FIG. 48, the same parts as those in FIG. 2 described above are denoted by the same reference numerals, and the detailed description thereof is omitted.
[0282] As shown in FIG. 48, the host processor 2 in the present embodiment is different from the host processor 2 shown in FIG. 2 described above in that it does not include a transmission control information generation unit 204 and a detection unit 206. Further, the network interface controller 4 in the present embodiment is different from the network interface controller 4 shown in FIG. 2 described above in that it includes a processor 4a.
[0283] In the present embodiment, the setting unit 205 transmits the gate control list stored in the gate control list storage unit 201 to the network interface controller 4.
[0284] The processor 4a includes a reception unit 4a-1, a transmission control information generation unit 4a-2, a transmission control information storage unit 4a-3, and a detection unit 4a-4.
[0285] The reception unit 4a-1 receives the input of the gate control list transmitted by the setting unit 205 of the host processor 2. The reception unit 4a-1 may receive the gate control list from a device other than the host processor 2, for example, via the network 200.
[0286] The transmission control information generation unit 4a-2 generates transmission control information from the gate control list received by the reception unit 4a-1.
[0287] The transmission control information storage unit 4a-3 stores the transmission control information generated by the transmission control information generation unit 4a-2.
[0288] The detection unit 4a-4 detects changes in the link speed and operation speed information via the internal bus of the network interface controller 4. When a change in the link speed or operation speed information is detected, the detection unit 4a-4 instructs the transmission control information generation unit 4a-2 to regenerate the transmission control information.
[0289] Note that since the transmission control of the frame in this embodiment is the same as that in the first embodiment described above, the detailed description thereof is omitted here.
[0290] In this embodiment, as described above, in the configuration where the network interface controller 4 includes a processor, the same effects as those in the first embodiment described above can be achieved.
[0291] (Fourth Embodiment) In each of the above-described embodiments, the case where there is one network interface controller and one port has been described. However, each of these embodiments may be configured to include a plurality of network interface controllers and a plurality of ports corresponding to each of the plurality of network interface controllers. In this case, the transmission control information is set (generated) for each port.
[0292] Also, in each of the above-described embodiments, the frame generation unit 203 has been described as being realized by the host processor 2, but the frame generation unit 203 may be realized by hardware such as an FPGA or an ASIC. In that case, the DMA function of the data transfer unit 405 may be omitted, and data (frames) may be directly exchanged through a stream interface.
[0293] According to at least one of the above-described embodiments, it is possible to provide a communication control device, a communication control method, and a program capable of accurately controlling the transmission timing and transmission amount of messages (frames).
[0294] Also, in at least one of the above-described embodiments, while simplifying the hardware configuration or software processing, it is possible to accurately operate according to the gate control list and effectively utilize the given bandwidth. Further, it is possible to provide real-time performance (completing the processing within a defined time) to the transmission control processing.
[0295] In the description of the operations of the above-described embodiments, an example in which processing is performed for each operation clock cycle, that is, an example in which processing is executed for each cycle, has been mainly described, but this does not prevent processing from being performed for each predetermined number of clock cycles. For example, processing may be performed for every 5 clock cycles. In this case, in the process of subtracting a predetermined amount of transmission control information (the transmissible amount indicated by the transmissible information), subtraction may be performed according to the number of clock cycles for which the processing is performed. Also, in the calculation of transfer cost information, a data output amount measurement unit (not shown) for grasping the amount of data output (transferred) during the clock cycles for which the processing is performed may be provided, and the transfer cost information may be calculated based on the amount of data obtained from the data output amount measurement unit.
[0296] Furthermore, in each of the above-described embodiments, it has been described that the link speed, the subtraction value of the transmittable amount indicated by the transmittable information, and the subtraction value of the transfer cost information used for generating the transmission control information are determined based on the data transfer rate of the MAC (communication unit 401) (that is, the amount of transmission data per clock cycle). However, the present embodiment may be applied when communication is performed inside a predetermined device. In this case, it may be used based on the data transfer rate between components that perform communication inside the predetermined device. That is, when performing internal data transfer, it may be used based on the data transfer rate between components that perform communication inside the predetermined device. Although not shown, for example, assuming that the bus width of the transmission control unit 409 is 256 bits and the bus width of the component is 64 bits, 256 bits may be used as the reference for the data transfer rate, or 64 bits may be used. In any case, it is important that the generation process of the transmission control information, the subtraction process of the transmittable amount, and the calculation process of the transfer cost information are consistent (that is, based on a common data transfer rate).
[0297] Also, in each of the above-described embodiments, when generating transmission control information, an example of calculating the amount of data until the next gate closes in each traffic class has been described. However, calculate the time required to transmit the sum of queueMaxSDU, frame checksum sequence, and media-dependent overhead defined in each traffic class (hereinafter, maximum frame transmissible time) from the current link speed, and add the maximum frame transmissible time from the start of the next entry (the end of the current entry). It may be calculated so as to calculate the amount of data that can be transmitted up to the time point (calculation target end point). In this case, in each traffic class, if the gate closes from the start of the current entry to the calculation target end point, the amount of data that can be transmitted up to that point is calculated as the transmissible amount. If the gate does not close, the amount of data that can be transmitted up to the calculation target end point is set as the transmissible amount. Note that the maximum frame transmissible time may be calculated using the value of MTU instead of queueMaxSDU. Further, for example, the transmissible amount may be calculated with the end of the current entry as the calculation target end point. Further, the transmissible amount may be calculated with the end of the entry n entries ahead from the current entry as the calculation target end point.
[0298] Note that in each of the above-described embodiments, the communication unit 401 has been described as being connected to an external network, but this may be an internal communication unit (that is, an internal module) that performs internal connection. In this case, the communication unit 401 may not have functions such as MAC and PHY, and may simply perform bus connection internally.
[0299] (System configuration example) FIG. 49 is a diagram showing a configuration example of a system using the communication device 100 in each of the above-described embodiments. FIG. 49 shows an example of controlling the on-site robot arms 602a, 602b and the belt conveyor 601 from the edge server 700 via the 5G (5th Generation) / local 5G system 500 in a factory or a plant.
[0300] The 5G / Local 5G system 500 includes a 5G Core Network 505, a Central Unit 504, a Distributed Unit 503, a Remote Unit 502, and User Equipment 501. The 5G / Local 5G system 500 performs 5G communication defined by the specifications of the 3GPP (3rd Generation Partnership Project).
[0301] The communication device 100 in each embodiment can be implemented, for example, in the edge server 700 and the 5G Core Network 505. Thereby, the real-time performance of communication between the edge server 700 and the 5G Core Network 505 can be improved.
[0302] Also, the communication device 100 in each embodiment may be used for communication between each part within the 5G / Local 5G system 500. That is, in order to perform communication between the Remote Unit 502, the Distributed Unit 503, the Central Unit 504, and the 5G Core Network 505, the communication device 100 in each embodiment may be implemented in at least a part of the Remote Unit 502, the Distributed Unit 503, the Central Unit 504, and the 5G Core Network 505.
[0303] The communication device 100 in each embodiment may be used for communication between at least one of the belt conveyor 601 and the robot arms 602a, 602b and the User Equipment 501, or for communication between the belt conveyor 601 and the robot arms 602a, 602b.
[0304] The system to which the communication device 100 in each embodiment can be applied is not limited to this, and any system may be used. For example, it can also be applied to industrial network systems of factories or plants that do not use 5G / Local 5G, network systems inside automobiles and airplanes, and the like.
[0305] The program executed by the communication device 100 (information processing device and communication control device) in each embodiment is provided by being pre - incorporated in the storage 3 and a ROM (Read - Only Memory) not shown in the figure. When the communication device 100 is realized by an FPGA, for example, data for setting the configuration of the FPGA (configuration data) corresponds to the program.
[0306] The program executed by the communication device 100 in each embodiment may be configured to be recorded on a computer - readable storage medium such as a CD - ROM (Compact Disk Read - Only Memory), flexible disk (FD), CD - R (Compact Disk Recordable), DVD (Digital Versatile Disk) in an installable or executable file format and provided as a computer program product.
[0307] Furthermore, the program executed by the communication device 100 in each embodiment may be configured to be stored on a computer connected to a network such as the Internet and provided by being downloaded via the network. Also, the program executed by the communication device 100 in this embodiment may be configured to be provided or distributed via a network such as the Internet.
[0308] The program executed by the communication device 100 in each embodiment can cause a computer to function as each part of the communication device 100. This program can be read from a computer - readable storage medium onto the main memory device and executed by a computer (processor).
[0309] Although some embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the gist of the invention. These embodiments and their modifications are included in the scope and gist of the invention, as well as in the invention described in the claims and the equivalent scope thereof.
Explanation of Reference Numerals
[0310] 1... Memory, 2... Host Processor (Information Processing Device), 3... Storage, 4... Network Interface Controller (Communication Control Device), 4a... Processor, 4a-1... Reception Unit, 4a-2... Transmission Control Information Generation Unit, 4a-3... Transmission Control Information Storage Unit, 4a-4... Detection Unit, 5... Storage Controller, 100... Communication Device, 201... Gate Control List Storage Unit, 202... Synchronization Control Unit, 203... Frame Generation Unit, 204... Transmission Control Information Generation Unit, 205... Setting Unit, 206... Detection Unit, 401... Communication Unit, 402... Received Frame Storage Unit, 403... Transmitted Frame Storage Unit, 404... Time Management Unit, 405... Data Transfer Unit, 406... Reception Unit, 407... Transmission Control Information Storage Unit, 408... Transmission Control Information Management Unit, 408a... Storage Unit (Temporary Storage Unit), 409... Transmission Control Unit, 409a... First Transmission Control Unit, 409b... Second Transmission Control Unit, 410... Transmission Permission Determination Unit, 411... Data Transfer State Management Unit, 411a... First Data Transfer State Management Unit, 411b... Second Data Transfer State Management Unit, 412... Buffer Unit, 412a... First Buffer Unit, 412b... Second Buffer Unit, 413... Notification Unit, 414... Gate Control List Storage Unit, 415... Transmission Control Information Generation Unit, 416... Queue Attribute Information Storage Unit, 417... Communication Processing Determination Unit, 418, 418-1, 418-2... Cache Unit (Temporary Storage Unit).
Claims
1. A transmission control unit that controls the transfer start timing of a first message stored in the queue based on gate control information in which the opening and closing of gates corresponding to each of a plurality of queues are set; A communication unit that transmits the first message transferred from the transmission control unit according to the transfer start timing; Comprising: The transfer start timing of the first message is determined based on transmission information when a second message that has been determined to pass through the gate is transmitted by the communication unit, and transfer information related to the transfer of the second message between the transmission control unit and the communication unit. The transmission information includes at least one of the data amount of the second message and the communication overhead that will occur when the second message is actually transmitted. The transfer information includes at least one of the delay time that occurs between the transmission control unit and the communication unit and the data amount of the second message staying between the transmission control unit and the communication unit. The transmission information includes at least one of the data amount of the second message and the communication overhead that will occur when the second message is actually transmitted. The transfer information includes at least one of the delay time that occurs between the transmission control unit and the communication unit and the data amount of the second message staying between the transmission control unit and the communication unit. Communication control device.
2. Further comprising a transmission availability determination unit that determines whether it is possible to transmit the first message based on the transmission control information generated from the gate control information, the transmission information when the first message stored at the head of each of the plurality of queues is transmitted by the communication unit, and transfer cost information based on the transmission information when a second message that has been determined to pass through the gate is transmitted by the communication unit. The transmission control information indicates the data amount or the available transmission time of the first message that can be transmitted corresponding to each of the plurality of queues at the time when the transmission control unit determines the transfer start timing of the first message. The transfer start timing of the first message is determined based on the determination result by the transmission availability determination unit. The transmission control information indicates the data amount or the available transmission time of the first message that can be transmitted corresponding to each of the plurality of queues at the time when the transmission control unit determines the transfer start timing of the first message. The transfer start timing of the first message is determined based on the determination result by the transmission availability determination unit. The communication control device according to Claim 1.
3. The second message that has been determined to pass through the gate includes a message that has been determined to pass through the gate in the past and a message that is currently passing through the gate. The communication control device according to Claim 2.
4. When the second message is a message that has been determined to pass through the gate in the past, the transmission availability determination unit calculates the transfer cost information based on the transmission information when the second message is transmitted by the communication unit and the data amount that the communication unit can transmit per unit time. The communication control device according to Claim 3.
5. The transmission permission determination unit calculates the transfer cost information based on the communication overhead of the second message, the data amount of the second message that has actually passed through the gate, and the data amount that the communication unit can transmit per unit time, when the second message is a message currently passing through the gate. The communication control device according to claim 3.
6. The communication control device further includes a data transfer state management unit that determines whether it is possible to transfer the first message based on the delay time generated between the transmission control unit and the communication unit, the data amount of the second message staying between the transmission control unit and the communication unit, and the data amount that the communication unit can transmit per unit time. The transfer start timing of the first message is determined based on the determination result by the data transfer state management unit. The communication control device according to any one of claims 1 to 5.
7. The communication control device further includes a buffer unit provided between the transmission control unit and the communication unit. The delay time generated between the transmission control unit and the communication unit includes the delay time generated in the buffer unit. The data amount of the second message staying between the transmission control unit and the communication unit includes the data amount of the second message held in the buffer unit. The communication control device according to claim 6.
8. The communication unit includes a buffer unit. The data amount of the second message staying between the transmission control unit and the communication unit includes the data amount of the second message input to the buffer unit. The communication control device according to claim 6.
9. The transfer start timing of the first message is determined based on at least one of: the transmission control information generated from the gate control information, the transmission information when the first message stored at the head of each of the plurality of queues is transmitted by the communication unit, and the transfer cost information based on the transmission information when the second message determined to pass through the gate is transmitted by the communication unit, to determine whether it is possible to transmit the first message; the first determination result; the delay time occurring between the transmission control unit and the communication unit; the data amount of the second message staying between the transmission control unit and the communication unit; and the second determination result obtained by determining whether it is possible to transfer the first message based on the data amount that the communication unit can transmit per unit time. The transmission control information indicates the data amount or transmission time of the first message that can be transmitted corresponding to each of the plurality of queues at the time when the transmission control unit determines the transfer start timing of the first message. The communication control device according to claim 1.
10. The transmission control information includes a plurality of entries. Each of the plurality of entries includes a period assigned to the entry. The period is represented by the number of clock cycles based on the operation clock of the transmission control unit. The communication control device according to any one of claims 2 to 5.
11. The communication control device further includes a temporary storage unit that temporarily stores the transmission control information. The transmission permission determination unit determines whether it is possible to transmit the first message based on the transmission control information stored in the temporary storage unit. The communication control device according to claim 10.
12. The communication control device according to claim 10 or 11 further includes a transmission control information management unit that subtracts a value corresponding to one clock for each operation clock from the data amount or time indicated by the transmission control information, or subtracts a value corresponding to the actually elapsed time from the data amount or time indicated by the transmission control information.
13. The transmission control unit includes a first transmission control unit that controls the transfer start timing of the first message that requires low-latency transmission, and a second transmission control unit that controls the transfer start timing of the first message that does not require low-latency transmission, according to claim 1.
14. A transmission control unit that controls the transfer start timing of the first message stored in the queue based on gate control information in which the opening and closing of gates corresponding to each of a plurality of queues are set; A communication unit that transmits the first message transferred from the transmission control unit according to the transfer start timing; A transmission availability determination unit that determines whether it is possible to transmit the first message stored at the head of each of the plurality of queues based on the transmission control information generated from the gate control information and the transmission information when the first message stored at the head of each of the plurality of queues is transmitted by the communication unit; A data transfer state management unit that determines whether it is possible to transfer the first message based on the delay time occurring between the transmission control unit and the communication unit, the data amount of the second message staying between the transmission control unit and the communication unit, and the data amount that the communication unit can transmit per unit time Comprising; The transmission control information indicates the data amount or the available transmission time of the first message that can be transmitted corresponding to each of the plurality of queues at the time when the transmission control unit determines the transfer start timing of the first message; The transfer start timing of the first message is determined based on the determination result by the transmission availability determination unit and the determination result by the data transfer state management unit; The transmission information includes at least one of the data amount of the first message and the communication overhead that will occur at the time of actually transmitting the first message. Communication control device.
15. An information processing apparatus comprising a transmission control information generation unit that generates transmission control information based on gate control information in which the opening and closing of gates corresponding to each of a plurality of queues are set; The transmission control information indicates the data amount or the available transmission time of the first message that can be transmitted corresponding to each of the plurality of queues at the time when the transfer start timing of the first message stored in each of the plurality of queues is determined; The transmission control information includes a plurality of entries; Each of the plurality of entries includes a period assigned to the entry; The period is represented by the number of clock cycles based on the operation clock of the transmission control unit that controls the transfer start timing of the first message. Information processing apparatus.
16. The information processing apparatus according to claim 15, wherein the data amount or time indicated by the transmission control information is updated by subtracting a value corresponding to one clock or a value corresponding to the actually elapsed time for each operation clock.
17. A step in which a transmission control unit controls the transfer start timing of a first message stored in the queue based on gate control information in which opening and closing of gates corresponding to each of a plurality of queues are set; A step in which a communication unit transmits the first message transferred from the transmission control unit according to the transfer start timing; comprising: The transfer start timing of the first message is determined based on transmission information when a second message that has been determined to pass through the gate is transmitted by the communication unit, and transfer information related to the transfer of the second message between the transmission control unit and the communication unit. The transmission information includes at least one of the data amount of the second message and communication overhead that will occur at the time when the second message is actually transmitted. The transfer information includes at least one of a delay time occurring between the transmission control unit and the communication unit and the data amount of the second message staying between the transmission control unit and the communication unit. A communication control method.
18. A step in which a transmission control unit controls the transfer start timing of a first message stored in the queue based on gate control information in which opening and closing of gates corresponding to each of a plurality of queues are set; A step in which a communication unit transmits the first message transferred from the transmission control unit according to the transfer start timing; A step of determining whether it is possible to transmit the first message stored at the head of each of the plurality of queues based on the transmission control information generated from the gate control information and the transmission information when the first message stored at the head of each of the plurality of queues is transmitted by the communication unit; A step of determining whether it is possible to transfer the first message based on a delay time occurring between the transmission control unit and the communication unit, the data amount of the second message staying between the transmission control unit and the communication unit, and the data amount that the communication unit can transmit per unit time; comprising: The transmission control information indicates the data amount or the transmittable time of the first message that can be transmitted for each of the plurality of queues at the time when the transmission control unit determines the transfer start timing of the first message. The transfer start timing of the first message is determined based on the determination result as to whether it is possible to transmit the first message stored at the head of each of the plurality of queues and the determination result as to whether it is possible to transfer the first message. The transmission information includes at least one of the data amount of the first message and the communication overhead that will occur at the time when the first message is actually transmitted. Communication control method.
19. A step of generating transmission control information based on gate control information in which the opening and closing of gates corresponding to each of a plurality of queues are set. The transmission control information indicates the data amount or the transmittable time of the first message that can be transmitted for each of the plurality of queues at the time when the transfer start timing of the first message stored in each of the plurality of queues is determined. The transmission control information includes a plurality of entries. Each of the plurality of entries includes a period assigned to the entry. The period is represented by the number of clock cycles based on the operation clock of the transmission control unit that controls the transfer start timing of the first message. Information processing method.
20. Causing a computer to control a transmission control unit to determine a transfer start timing of a first message stored in the queue based on gate control information in which the opening and closing of gates corresponding to each of a plurality of queues are set; and to cause a communication unit to transmit the first message transferred from the transmission control unit according to the transfer start timing. to execute, The transfer start timing of the first message is determined based on the transmission information when a second message that has been determined to pass through the gate is transmitted by the communication unit and the transfer information related to the transfer of the second message between the transmission control unit and the communication unit. The transmission information includes at least one of the data amount of the second message and the communication overhead that will occur at the time when the second message is actually transmitted. The transfer information includes at least one of a delay time generated between the transmission control unit and the communication unit and a data amount of the second message staying between the transmission control unit and the communication unit. Program.
21. Cause a computer to control the transmission control unit to determine the transfer start timing of the first message stored in the queue based on gate control information in which the opening and closing of gates corresponding to each of a plurality of queues are set; cause the communication unit to transmit the first message transferred from the transmission control unit according to the transfer start timing; determine whether it is possible to transmit the first message stored at the head of each of the plurality of queues based on the transmission control information generated from the gate control information and the transmission information when the first message stored at the head of each of the plurality of queues is transmitted by the communication unit; determine whether it is possible to transfer the first message based on a delay time generated between the transmission control unit and the communication unit, a data amount of the second message staying between the transmission control unit and the communication unit, and a data amount that the communication unit can transmit per unit time; and execute, wherein the transmission control information indicates a data amount or a transmissible time of the transmissible first message corresponding to each of the plurality of queues at the time when the transmission control unit determines the transfer start timing of the first message; the transfer start timing of the first message is determined based on a determination result as to whether it is possible to transmit the first message stored at the head of each of the plurality of queues and a determination result as to whether it is possible to transfer the first message; the transmission information includes at least one of a data amount of the first message and a communication overhead that will occur at the time of actually transmitting the first message; Program.
22. Cause a computer to execute a step of generating transmission control information based on gate control information in which the opening and closing of gates corresponding to each of a plurality of queues are set; the transmission control information indicates a data amount or a transmissible time of the transmissible first message corresponding to each of the plurality of queues at the time when the transfer start timing of the first message stored in each of the plurality of queues is determined; the transmission control information includes a plurality of entries; Each of the plurality of entries includes a period assigned to the entry, wherein the period is represented by the number of clock cycles based on the operation clock of the transmission control unit that controls the transfer start timing of the first message Program.
Citation Information
Patent Citations
Relay device
JP2015115704A
Packet processing device and packet processing method
JP2018125597A
Communication device and signal transfer method
JP2019004379A
Information processing unit, information processing method, and program
JP2019096930A