US9270604B2 - Bus system and router - Google Patents
Bus system and router Download PDFInfo
- Publication number
- US9270604B2 US9270604B2 US14/221,619 US201414221619A US9270604B2 US 9270604 B2 US9270604 B2 US 9270604B2 US 201414221619 A US201414221619 A US 201414221619A US 9270604 B2 US9270604 B2 US 9270604B2
- Authority
- US
- United States
- Prior art keywords
- packets
- data
- transmission
- class
- router
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related, expires
Links
- 239000000872 buffer Substances 0.000 claims abstract description 310
- 230000005540 biological transmission Effects 0.000 claims abstract description 307
- 238000012545 processing Methods 0.000 claims description 52
- 239000004065 semiconductor Substances 0.000 claims description 21
- 238000004891 communication Methods 0.000 description 86
- 238000000034 method Methods 0.000 description 29
- 230000015654 memory Effects 0.000 description 23
- 230000004044 response Effects 0.000 description 11
- 239000000284 extract Substances 0.000 description 7
- 238000004088 simulation Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 238000012938 design process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 239000010750 BS 2869 Class C2 Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 235000019800 disodium phosphate Nutrition 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000001152 differential interference contrast microscopy Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 239000010749 BS 2869 Class C1 Substances 0.000 description 1
- 238000012356 Product development Methods 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
Definitions
- the present application relates to a technology for controlling a network of communications buses (distributed buses) provided for a bus system in a semiconductor integrated circuit.
- An NoC Network-on-Chip
- An NoC is a network of communications buses to be provided on a semiconductor chip which is a semiconductor integrated circuit.
- buses are connected together via routers and traffic flows are transmitted from a plurality of masters through the same bus shared. As a result, the number of buses to use can be cut down and the buses can be used more efficiently.
- Those multiple masters pass traffic flows which require mutually different kinds of performances independently of each other.
- a traffic flow which needs to be transmitted with as short a time delay as possible i.e., a traffic flow of time-delay-guaranteed type
- a traffic flow which always needs to be transmitted in a constant transmission quantity for sure i.e., a traffic flow of throughput guaranteed type
- a traffic flow which needs to transmit a huge size of data at irregular intervals will be transmitted through the same bus as a mix.
- an NoC it is important to realize a performance ensuring scheme for satisfying the performance required by each traffic flow (in terms of at least one of throughput and time delay) at a minimum required bus bandwidth. If the performance of an NoC is ensured, the buses can be used more efficiently and the NoC can be designed at the minimum required bus bandwidth to satisfy the required performance. As a result, the hardware design and development of buses can be carried out more easily.
- FIG. 1A illustrates an exemplary configuration for a router 301 which outputs the data of traffic flows with high levels of priorities that are stored in buffers 304 and 303 earlier than the traffic flow stored in the other buffer 301 .
- the numerals indicate the respective levels of priorities, and the larger a numeral, the higher the level of priority indicated by the numeral is.
- the router 301 determines, according to the levels of priorities of the data that are stored at the respective tops of the input buffers, which traffic flows should be provided as output data.
- FIG. 1B illustrates a modified configuration for the router 301 shown in FIG. 1A .
- the level of priority of each input buffer is determined by the highest level of priority of the messages stored there, and the data is output according to the respective levels of priorities of the input buffers.
- one message, of which the level of priority is Level 3 , and three messages, of which the level of priority is Level 1 are stored in the input buffer 302 .
- Two messages, of which the level of priority is Level 2 , and two messages, of which the level of priority is Level 1 are stored in the input buffer 303 .
- one message, of which the level of priority is Level 1 one message, of which the level of priority is Level 2 , and two messages, of which the level of priority is Level 3 , are stored in the input buffer 304 .
- the priority level of each input buffer is determined by the highest priority level of the messages stored in that input buffer. That is why the priority levels of the input buffers 302 , 303 and 304 become Levels 3 , 2 and 3 , respectively. Since the messages are sent in the descending order of priorities, the messages stored at the respective tops of the input buffers 302 and 304 are sent as a result.
- the input buffer 302 that stores a message, of which the level of priority is Level 3 can advance the transmission processing preferentially without depending on the levels of priorities of the preceding messages stored. Consequently, the time delay of such a message with a high level of priority can be reduced even if the preceding space of the buffer is occupied with messages with a low level of priority.
- the prior art technique needs further improvement in view of performance on an NOC.
- One non-limiting, and exemplary embodiment provides a technique to improve higher performance on an NOC.
- a bus system for a semiconductor circuit to transmit data between a first node and at least one second node through a network of buses and at least one router which is arranged on any of the buses.
- the data to be transmitted includes performance-ensuring data which guarantees at least one of throughput and a permitted time delay.
- the first node includes: a packet generator which generates a plurality of packets, each of which includes the data to be transmitted and classification information that indicates the class of the data to be transmitted to be determined according to its required performance; and a transmission controller which controls transmission of the packets.
- the at least one router includes: a buffer section which stores the received packets separately after having classified the packets according to their required performance by reference to the classification information; and a relay controller which controls transmission of the packets that are stored in the buffer section at a transmission rate which is equal to or higher than the sum of transmission rates to be guaranteed for every first node associated with the classification information by reference to each piece of the classification information.
- the router can minimize mutual interference and the bus' operating frequency to ensure the required performance can be estimated to be a low value. For example, since a traffic flow in a performance ensured class with a high priority level can be transmitted without being interfered with by a traffic flow in a non-performance-ensured class with a low priority level, the rate of the traffic flow to interfere when the bus bandwidth is estimated can be reduced. As a result, a bus of which the performance can be ensured at a low operating frequency can be established without making overestimation. In addition, the extra bus band to be produced by worst estimation can be reduced as much as possible by adjusting the transmission schedule between the master and the router. In other words, the extra bus band can be used more efficiently.
- FIG. 1A illustrates an exemplary configuration for a router 301 which outputs the data of traffic flows with high levels of priorities that are stored in buffers 304 and 303 earlier than the traffic flow stored in the other buffer 301 .
- FIG. 1B illustrates a modified configuration for the router 301 shown in FIG. 1A in which the level of priority of each input buffer is determined by the highest level of priority of the messages stored there, and the data is output according to the respective levels of priorities of the input buffers.
- FIG. 2 shows a processing policy according to this embodiment to be applied to the performance-ensured class and the non-performance-ensured class.
- FIG. 3 illustrates an exemplary NoC which is implemented using routers 103 as an embodiment of the present invention.
- FIG. 4 shows the concepts of respective components of an NoC.
- FIG. 5 schematically illustrates a configuration for the NoC shown in FIG. 3 .
- FIGS. 6A and 6B show exemplary transmission rate values to be set for respective routers.
- FIGS. 7A and 7B show how the effect achieved varies depending on whether the configuration of the router 103 is applied to the Internet or to a semiconductor bus system.
- FIG. 8 is a flowchart showing the procedure of operation of an NoC including routers according to an embodiment of the present invention.
- FIG. 9 shows the rule of classifying bus masters so that performance-ensuring data and non-performance-ensuring data can be distinguished from each other, to say the least, in order to lower an estimated bus' operating frequency required.
- FIG. 10 shows specific exemplary definitions of specifications required for traffic flows to be generated by masters.
- FIG. 11 shows respective classes to which the bus masters 101 are grouped and their specific examples.
- FIG. 12 illustrates a configuration for a master NIC 102 .
- FIG. 13 shows the flow of operation of the master NIC 102 .
- FIG. 14 illustrates a data structure for each packet 202 .
- FIG. 15 illustrates a configuration for a rate controller 804 provided for the master NIC 102 .
- FIG. 16 shows a rate value stored in a rate value storage 1003 .
- FIG. 17 shows the flow of operation of a rate controller 804 .
- FIG. 18 shows how a transmission determination circuit 1001 performs transmission determining processing step S 1103 .
- FIG. 19 shows the flow of operation of a timer processor 1002 .
- FIG. 20 illustrates how to carry out a general flow control between the master NIC 102 and the router 103 .
- FIGS. 21A and 21B show how a flow control and a rate control are different.
- FIG. 22 illustrates a configuration for the router 103 .
- FIG. 23 shows class priority level information to be stored in class information storage 1411 .
- FIG. 24 shows a specific example of the results of arbitration conducted by the output arbitrator 1410 of the router 103 between respective buffers to transmit packets from in order to determine their order of priorities.
- FIG. 25 shows the flow of operation of the router 103 .
- FIG. 26 shows what is input to, and output from, the class analyzer 1403 of the router 103 .
- FIG. 27 illustrates a configuration for the rate controller 1409 of the router 103 .
- FIG. 28 shows the flow of operation of the rate controller 1409 .
- FIG. 29 shows the procedure in which the rate controller 1409 performs transmission determining processing step.
- FIG. 30 shows a specific example of the management information for the timer processor.
- FIG. 31 shows the flow of operation of the timer processor 2002 of the rate controller 1409 .
- FIG. 32 shows exemplary transmission rate values that are managed by the rate value storage 2003 on a class-by-class basis.
- FIG. 33 shows the flow of operation of an output arbitrator 1410 .
- FIG. 34 is a flowchart showing how the output arbitrator 1410 carries out the processing step S 2805 of conducting arbitration between the input buffers 1415 to transmit packets from.
- FIG. 35 shows a specific exemplary format for management information to be stored in the buffer information storage 1407 of the router 103 .
- FIG. 36 illustrates exemplary NoCs which can be used as other embodiments of the present invention.
- FIG. 37 illustrates an exemplary buffer arrangement to be adopted in a situation where a command and data are separated from each other.
- FIGS. 38A and 38B show how the delay involved with a command can be shortened, which is an effect to be achieved by separating the command and data from each other.
- FIG. 39 shows generally how to multiplex and transmit a packet.
- FIG. 40 illustrates how packets may be transmitted depending on whether the packets are multiplexed or not.
- FIG. 41 illustrates a packet multiplexing format for a packet 202 .
- FIG. 42 is a flowchart showing how the master NIC 102 operates to get packet multiplexing done.
- FIG. 43 illustrates a packet multiplexing configuration for a slave NIC 104 .
- FIG. 44 shows the flow of packet multiplexing operation of the slave NIC 104 .
- FIG. 45 illustrates an example in which multiple masters and multiple memories on a semiconductor circuit and common input/output (I/O) ports to exchange data with external devices are connected together with distributed buses.
- I/O input/output
- FIG. 46 illustrates a multi-core processor in which a number of core processors such as a CPU, a GPU and a DSP are arranged in a mesh pattern and connected together with distributed buses in order to improve the processing performance of these core processors.
- core processors such as a CPU, a GPU and a DSP are arranged in a mesh pattern and connected together with distributed buses in order to improve the processing performance of these core processors.
- FIG. 47 illustrates how classification may be done according to the priority level of a time-delay-guaranteed class.
- the bandwidth provided should be significantly broader than what is actually needed.
- the transmission bandwidth required varies according to the ratio of high and low levels of priorities in a buffer.
- a bus' band is obtained so as not to be overestimated with respect to the performance required for each traffic flow running through the bus. After that, the bus' extra band to be produced by being estimated in a worst case scenario is cut down as much as possible.
- To have a burst property refers herein to a situation where while a bus master is transmitting the communication data of traffic flows continuously, those traffic flows have only a short permitted time delay or request a broad bandwidth.
- video based data may be classified, for example.
- USB data may be classified as communication data in a time-delay-guaranteed class with no burst property. It is determined from a designer's point of view whether given data has a burst property or not.
- the “non-performance-ensuring data” is data which needs to guarantee neither throughput nor time delay.
- the “requested bandwidth” refers herein to the transmission quantity per unit time of a traffic flow, of which the throughput is guaranteed.
- the “deadline” of a traffic flow refers herein to a time by which the traffic flow is supposed to arrive at its destination (i.e., slave) as specified by a bus master that has started to transmit the traffic flow.
- bus system and router to be described below can be obtained.
- an embodiment provides a bus system for a semiconductor circuit to transmit data between a first node and at least one second node through a network of buses and at least one router which is arranged on any of the buses.
- the data to be transmitted includes performance-ensuring data which guarantees at least one of throughput and a permitted time delay.
- the first node includes: a packet generator configured to generate a plurality of packets, each of which includes the data to be transmitted and classification information that indicates the class of the data to be transmitted to be determined according to its required performance; and a transmission controller configured to control transmission of the packets.
- the at least one router includes: a buffer section configured to store the received packets separately after having classified the packets according to their required performance by reference to the classification information; and a relay controller configured to control transmission of the packets that are stored in the buffer section at a transmission rate which is equal to or higher than the sum of transmission rates to be guaranteed for every first node associated with the classification information by reference to each piece of the classification information.
- the at least one router includes a plurality of routers.
- the plurality of routers operate at the same operating frequency, and the respective relay controllers provided for those routers control transmission of the packets at the same transmission rate.
- the same transmission rate is set to be equal to or higher than the maximum one of the transmission rates to be guaranteed by the plurality of routers.
- a transmission rate to be guaranteed has been set in advance with respect to each performance-ensuring data.
- the transmission controller controls transmission of packets of the performance-ensuring data either at a predetermined rate which exceeds a transmission rate to be guaranteed by the performance-ensuring data or without imposing a limit to the transmission rate.
- the at least one router is able to transmit the packets of the performance-ensuring data at a rate exceeding the transmission rate to be guaranteed by using a first band in which the transmission rate to be guaranteed is able to be maintained and a second band which is an extra band.
- the relay controller classifies, by reference to the classification information, the respective packets of the performance-ensuring data among the plurality of packets that are stored in the buffer section into packets to be transmitted using the first band and packets to be transmitted using the first and second bands, and transmits preferentially the packets to be transmitted using the first band.
- the data to be transmitted further includes non-performance-ensuring data which guarantees neither throughput nor permitted time delay.
- the transmission controller controls transmission of packets of the non-performance-ensuring data without imposing a limit to their transmission rate.
- the buffer section stores the received packets of the non-performance-ensuring data separately.
- the relay controller transmits the packets of the performance-ensuring data and the packets of the non-performance-ensuring data in this order.
- the packet generator further gives time information about the deadlines of the packets to the packets, and as for packets to which the same piece of classification information is given, the relay controller determines the order of transmission of the packets according to their deadlines.
- the time information about the deadlines is information about a deadline by which the packets are supposed to arrive at the at least one second node, information about a time when the first node transmitted the packets, information about an accumulated value of processing times by the first node and the router, or information about the value of a transmission counter indicating the order of transmission of the packets from the first node.
- the relay controller transmits packets with closer deadlines more preferentially than the other packets.
- the relay controller and the transmission controller determine a rate exceeding a transmission rate to be guaranteed based on the processing ability of a node or link that is going to cause a bottleneck for the bus system.
- the performance-ensuring data includes burst data with a burst property and non-burst data with no burst property.
- the classification information given by the packet generator is able to distinguish the burst data from the non-burst data.
- the buffer section of the at least one router stores the burst data and the non-burst data in the multiple buffers separately. And the relay controller of the at least one router transmits the packets of the burst data and then the packets of the non-burst data.
- the transmission controller of the first node transmits the burst data at a predetermined transmission rate
- the relay controller transmits at least the burst data at a predetermined transmission rate
- the at least one second node includes a plurality of second nodes, and the buffer section of the at least one router stores the packets of the respective second nodes in the plurality of buffers separately from each other.
- the packets include command-sending packets and data-sending packets, and the relay controller transmits the command-sending packets without imposing any limit to their transmission rate.
- the packets include command-sending packets and data-sending packets
- the buffer section of the at least one router stores the command-sending packets and the data-sending packets in the plurality of buffers separately from each other.
- the packet generator of the first node multiplexes the packets and transmits a resultant multiplexed packet.
- the first node that transmits the multiplexed packet and the at least one router include a signal line to transmit information indicating division positions at which the multiplexed packet is restored to respective data.
- a router is arranged on any of buses that form a network in a bus system for a semiconductor circuit to relay data to be transmitted between a first node and at least one second node of the bus system.
- the first node generates and transmits a plurality of packets, each of which includes the data to be transmitted and classification information that indicates the class of the data to be transmitted to be determined according to its required performance.
- the data to be transmitted includes performance-ensuring data which guarantees at least one of throughput and a permitted time delay.
- the router includes: a buffer section which stores the received packets separately after having classified the packets according to their required performance by reference to the classification information; and a relay controller which controls transmission of the packets that are stored in the buffer section at a transmission rate which is equal to or higher than the sum of transmission rates to be guaranteed for every first node associated with the classification information by reference to each piece of the classification information.
- the present inventors set “classes”, into any of which a given traffic flow is to be grouped according to its required performance. That is to say, a traffic flow running out of a bus master as an output node is grouped into any of those classes that have been set and a buffer to store the traffic flow is provided separately in a router for each of those classes in order to reduce interference between the classes.
- a performance-ensured class and a non-performance-ensured class
- each of these classes may be subdivided into sub-classes according to its required performance. It will be described in further detail later with respect to exemplary embodiments how to set such classes and sub-classes.
- routers and bus masters perform transmission processing at a high priority level and at a controlled rate.
- a traffic flow of the performance-ensured class, on which a less strict performance requirement is imposed, and a traffic flow of the non-performance-ensured class, on which no performance requirement is imposed at all are transmitted at a low priority level but at a rate exceeding the requested band.
- the traffic flow of the performance-ensured class can definitely have its performance ensured.
- the traffic flow of the performance-ensured class with less strict performance requirement and the traffic flow of the non-performance-ensured class can be transmitted using the bus' extra band to be produced by worst estimation.
- the bus' operating frequency can be decreased, the power dissipation by the bus and the required chip area can be both reduced, the flexibility of layout can be increased, and the restriction of bus lines (e.g., distance of bus lines to be wired) can be relaxed.
- FIG. 2 shows a processing policy according to this embodiment to be applied to the performance-ensured class and the non-performance-ensured class.
- Performance-Ensured Classes A, B and C and Non-Performance-Ensured Class Z have been defined as traffic flow classes as shown in FIG. 2 .
- routers and bus masters set a transmission rate (upper limit value) based on the requested bandwidth and control the transmission rate of the traffic flows, thereby ensuring their performance.
- a traffic flow of Class A needs to satisfy a more strict performance requirement than a traffic flow of Class B does, and therefore, is transmitted at a higher priority level.
- a traffic flow of Class C is transmitted by routers and bus masters at a transmission rate exceeding the requested band. As a result, the bus' extra band can be used with the performance ensured.
- a traffic flow of Class Z is processed at a lower priority level than a traffic flow of any of the other classes described above.
- non-performance-ensuring data can be transmitted without putting an upper limit to the transmission rate and the bus' extra band can be used.
- the routers can group the buffers into the respective classes, can reduce the interference between the classes by performing the transmission control on a class-by-class basis, and can transmit a traffic flow with a high priority level at a shorter time delay. As a result, the bus can be used more efficiently with the performance ensured at a lower bus' operating frequency.
- the “worst estimation” refers herein to calculating the bus bandwidth at which the performance can be ensured by expecting, during the design process, the traffic flow status when the bus system is in the worst-case scenario. Actually, however, the traffic flow rate may sometimes be lower than in the worst-case scenario, and there will be an extra band, i.e., a margin, in the bus.
- FIG. 3 illustrates an exemplary NoC which is implemented using routers 103 as an embodiment of the present invention.
- illustrated are an exemplary buffer configuration for the routers 103 and how a packet may be transmitted.
- This NoC includes a bus master 101 , a master network interface controller (NIC) 102 , at least one router (such as the router 103 ), a slave NIC 104 , and a slave 105 .
- NIC master network interface controller
- the bus master 101 (which will be sometimes simply referred to herein as a “master”) is connected to the master NIC 102 .
- the master and slave NICs 102 and 104 are connected together via the at least one router (such as the router 103 ).
- the slave NIC 104 is connected to the slave 105 .
- each of the routers is supposed to have the same configuration and perform the same operation.
- the router 103 will be described as an example of the at least one router.
- the router 103 includes an input buffer section 1404 to store the packets 202 .
- the input buffer section 1404 stores the packets 202 on a class-by-class basis according to the class of each of those packets 202 to relay.
- the router 103 includes such an input buffer section 1404 , and therefore, can arrange the order of priorities of the packets 202 to transmit as will be described in detail later. Also, since the master NIC 102 and the router 103 transmit the packets at rates that have been set in advance for the respective classes, each of the NIC 102 and router 103 includes a rate controller (to be described later).
- the master NIC 102 generates one or more packets 202 based on the communication data 201 received from the bus master 101 , divides the packet 202 into data units, of which the size is small enough to send it in one cycle of the bus' operating frequency, and transmits those data units.
- data units of which the size is small enough to send them in one cycle of the bus' operating frequency, will be referred to herein as “flits”.
- flits such data units, of which the size is small enough to send them in one cycle of the bus' operating frequency.
- the packet to be transmitted is stored in the input buffer section 1404 of the router 103 , is sent on a flit-by-flit basis from the router 103 and other routers, and then arrives at the slave NIC 104 .
- the slave NIC 104 reconstructs each packet based on those flits 203 received, restores the original communication data based on a plurality of packets, and transmits the original communication data to the slave 105 .
- FIG. 4 shows the concepts of respective components of an NoC.
- the bus master 101 and the master NIC 102 will be collectively referred to herein as a “first node 211 ”.
- the slave 105 and the slave NIC 104 will be collectively referred to herein as a “second node 215 ”.
- More than one router 103 will be regarded herein as a single router macroscopically, and will be referred to herein as a “router 206 ”.
- first and second nodes 211 and 215 and the entire router 206 will be collectively referred to herein as a “bus system 5501 ”.
- FIG. 5 schematically illustrates a configuration for the NoC shown in FIG. 3 .
- the master NIC 102 receives data about each traffic flow in the input buffer section (not shown) from the master 101 and transmits the packets 202 at a transmission rate which has been set for each master 101 to be high enough to satisfy the performance requirement on each traffic flow.
- the router 103 includes an input buffer section 1404 and a rate controller 1409 .
- the input buffer section 1404 (will be simply referred to herein as a “buffer section”) includes input buffers 1405 , which store traffic flows that have been grouped according to their destinations and their classes.
- each of those input buffers 1405 is implemented as an FIFO (First In, First Out) buffer.
- the router 103 can change the traffic flows to transmit so as to prevent a traffic flow of a high priority level class from being affected by a traffic flow of a low priority level class.
- the buffer is supposed to be an input buffer in this embodiment, this configuration is also applicable in the same way, even if the buffer is included as an output buffer. The reason is that the packets just need to be stored separately according to the performance requirement and the rate of transmission of the packets to an adjacent router or slave NIC just needs to be controlled, no matter where the buffers are arranged.
- the rate controller 1409 transmits the packets at a transmission rate that has been set on a class-by-class basis.
- the rate controller 1409 may set the transmission rate in the form of a transmission interval.
- the rate controller will be sometimes referred to herein as a “relay controller”.
- a transmission rate value which is equal to or greater than the transmission rate guaranteed for the master NIC 102 needs to be set on a class-by-class basis, because the packets issued by a plurality of masters are confluent there. For example, if there are N masters that have been grouped into the same class and if the transmission rate is set at a predetermined transmission interval, the transmission interval is set to be equal to or smaller than the value obtained by dividing the transmission interval of the master NIC by N. That is to say, the packets are transmitted at a transmission rate that is equal to or greater than the sum of the transmission rates to be guaranteed by the respective masters.
- the time delay and throughput of each class can be guaranteed end-to-end.
- an individual transmission rate value may be set for each router based on the rate to be guaranteed for the traffic flow running through that router.
- FIGS. 6A and 6B show exemplary transmission rate values to be set for respective routers.
- FIG. 6A illustrates an example in which a minimum guaranteed transmission rate value is set based on the traffic flows running through the respective routers.
- the sum of the transmission rates to be guaranteed for the respective traffic flows coming from the masters A 0 and A 1 is set to be the traffic flow transmission rate for the router R 2 and controlled. If the transmission rates of the respective routers are set by such a method, the bus operating frequencies of the respective routers can be minimized. However, the implementation cost will rise, because the respective routers should be designed to have the best frequencies.
- the same transmission rate value may also be set for the respective routers.
- the traffic flow transmission rates of the respective routers may be set, with respect to each class, to be the transmission rate of a router where traffic flows to be guaranteed are confluent with each other most heavily in the overall system, and controlled.
- the router R 2 sets the traffic flow transmission rate of each router based on the transmission rate value (i.e., the sum of the rates guaranteed for the masters B 0 , B 1 and B 2 ) of the router R 3 where traffic flows are confluent with each other most heavily.
- the transmission rate value i.e., the sum of the rates guaranteed for the masters B 0 , B 1 and B 2
- the router R 3 where traffic flows are confluent with each other most heavily.
- the highest transmission rate in the entire system is supposed to be set in common to be the transmission rate at the relay controller of each router.
- the transmission rate may even be set to be higher than the highest transmission rate in the entire system.
- the operating frequency that makes the routers operate at the sum of the respective transmission rates to be guaranteed is excessively high, then not every router has to be driven at the same operating frequency.
- the operating frequency may be changed on a bus role basis, a router with the highest transmission rate may be selected, and the transmission rate may be set. In this manner, it is possible to prevent the operating frequency of a router on a local bus which is relatively close to a master from going excessively high.
- the classes in the input buffer section 1404 may be grouped into a time-delay-guaranteed class which needs to take the time delay into consideration and a non-time-delay-guaranteed class which does not have to take the time delay into consideration.
- the time-delay-guaranteed class is subdivided into Class A with a burst property and Class B with any other property.
- the input buffers are allocated according to those subdivided low-order classes.
- any arbitrary number of input buffers may be allocated to any arbitrary number of classes.
- the “time-delay-guaranteed class” is supposed to be subdivided based on a permitted time delay.
- the “time-delay-guaranteed class” may also be subdivided based on throughput, not on time delay. That is to say, according to this embodiment, the time-delay-guaranteed class may be subdivided based on at least one of time delay and throughput.
- the input buffer section 1404 of the router 103 and the input buffer section (not shown) of the master NIC 102 are configured so that buffers are separated according to their destinations. By separating the buffers not only on a class-by-class basis but also according to their destinations, interference between traffic flows with mutually different destinations can be reduced. Also, even if the bus is congested with traffic flows bound for a certain destination, traffic flows bound for another destination can secure buffers for sure, and can be transmitted just as intended.
- the buffers are separated as described above, interference between traffic flows with mutually different priority levels and interference between traffic flows with mutually different destinations can be reduced by changing the transmission rate according to the class and the destination in a situation where those buffers are implemented as FIFOs. Nevertheless, if the transmission rate can be changed and if the buffers to use can be managed on a class-by-class basis or on a destination basis by using randomly accessible memories, for example, then those buffers do not have to be physically separated from each other.
- an address table as data may be provided for the router 103 .
- the address table is a table with which the storage addresses and stored packets are managed on a destination slave basis for each class in the memory. By using those memories and such an address table, any arbitrary packet stored in the input buffer of the router 103 can be freely read from and written to. As a result, effects to be obtained by logically separating the buffers can be achieved. Even if packets with low priority levels or bound for a certain destination are stored in a buffer, packets with high priority levels or bound for another destination can be transmitted without interfering with the former packets.
- the bus system may also be configured so that buffers to be used by a traffic flow with a low priority level are usable for a traffic flow with a high priority level.
- the buffers usable for the traffic flow with the high priority level will include both buffers not to be interfered with by the traffic flow with the low priority level and buffers to be interfered with by the traffic flow with the low priority level.
- just at least one buffer not to be interfered with by the traffic flow with the low priority level needs to be secured. In that case, interference by the traffic flow with the low priority level can be reduced.
- the packet transmission interval is controlled according to this embodiment, because such a method can be implemented easily. For example, if a traffic flow needs to be transmitted at a higher transmission rate, the transmission rate can be increased by setting the transmission interval to be a narrower one. Specifically, if the traffic flow transmission rate needs to be doubled, then the transmission interval may be halved. On the other hand, if the traffic flow transmission rate needs to be halved, then the transmission interval may be doubled.
- the transmission rate may also be controlled by any other method such as a technique for measuring the size or length of data that has been transmitted per unit time or in a unit cycle.
- the slave is generally implemented as a memory or a memory controller, the slave does not have to be a memory but may also be any other arbitrary node such as a master, an I/O or a router.
- the flow control to be carried out by the router 103 of this embodiment is quite different from a flow control to be applied to the Internet.
- the reason will be described with reference to FIGS. 7A and 7B .
- FIGS. 7A and 7B shows how the effect achieved varies depending on whether the configuration of the router 103 described above is applied to the Internet or to a semiconductor bus system.
- the flow control of data transmitted from a master is carried out based on the exchange between the master and a slave compliant with the TCP (Transmission Control Protocol). Meanwhile, each router on the transmission route performs a routing control for determining the transmission route or the QoS control. However, no routers on the Internet carry out any flow control. Instead, since data is just transmitted through the Internet, no matter how much space is left in a buffer at an adjacent node, data could be lost due to buffer overflowing.
- TCP Transmission Control Protocol
- each of Routers 1 and 2 and Slave can receive data that has been transmitted from the adjacent node.
- Router 3 of which the buffer has no space left, cannot store the data in its buffer and causes buffer overflowing. In addition, even if packets are discarded on the router end in order to avoid convergence before the buffer overflows, data could be lost, too.
- the flow control is carried out between every pair of nodes on the transmission route. Specifically, for that purpose, before sending data, each node sees if there is any space left in the buffer of the adjacent destination node. And the node transmits the data only if there is still a space left in the buffer.
- each router can transmit low priority level data that has been accumulated in the buffer by taking advantage of a time interval in which no high priority level data is being transmitted, and therefore, can use the bus more efficiently.
- Each router will have such a time interval in which no high priority level data is being transmitted and in which there is a margin in the bus band.
- the router of this embodiment can make data flow by using that extra band as will be described later.
- FIG. 8 is a flowchart showing the procedure of operation of an NoC including routers according to an embodiment of the present invention.
- the bus master 101 transmits communication data 201 to the master NIC 102 (in Step S 501 ).
- the master NIC 102 transforms the communication data 201 received into packets 202 and transmits the packets 202 to the router 103 at a transmission rate to be set on a class-by-class basis (in Step S 502 ).
- the master NIC 102 sets the transmission rates of time-delay-guaranteed classes A and B to be a transmission rate at which the performance required by each of these classes in terms of the requested bandwidth and time delay is satisfied.
- the transmission rate of Class C may or may not set the transmission rate to be an upper limit value exceeding the requested bandwidth in order to use the extra band while ensuring the performance in terms of requested bandwidth and delay.
- the master NIC 102 does not put an upper limit to the transmission rate in order to use the extra band.
- the transmission priority levels of these four classes are supposed to decrease in the order of Classes A, B, C and Z. That is to say, Class A is processed at the highest priority level.
- FIG. 2 shows a difference in priority level and a difference in rate control between the performance ensured classes A, B and C and the non-performance ensured class Z.
- the more than one router 103 transmits the packets at a preset rate value in the descending order of the class priority levels according to the destination slave IDs and classes of the packets 202 received (in Step S 503 ).
- the slave NIC 104 converts the packets 202 received from the router 103 into the original communication data 201 and then transmits the communication data to the slave 105 (in Step S 504 ).
- the slave 105 interprets the communication data 201 received to determine whether or not the slave 105 needs to respond to the communication data 201 received (in Step S 505 ). If the answer is YES, the slave 105 generates communication data as a response and transmits the communication data to the slave NIC 104 (in Step S 506 ).
- the slave NIC 104 converts the communication data 201 which has been received as a response from the slave into packets 202 and transmits the packets 202 to the router 103 (in Step S 507 ).
- the router 103 checks out the destination of the packets 202 received, determines their target and transmits them to the target (in Step S 508 ). Meanwhile, the master NIC 102 converts the packets 202 received into the communication data 201 and then transmits the communication data 201 to the bus master 101 (in Step S 509 ).
- FIG. 9 shows the rule of classifying bus masters so that the performance-ensuring data and the non-performance-ensuring data can be distinguished from each other, to say the least, in order to lower the estimated bus' operating frequency required.
- the designer of a bus system sets the class of a given bus master according to this classification rule. Although this is not an operation to be performed by a router, it will be described anyway in the following description.
- the designer defines the specification required for a traffic flow generated by every master during the design process (in Step S 3201 ).
- the designer groups a master which has a low priority level and which just needs to make a traffic flow run only when the bus is not occupied into Class Z (in Step S 3202 ).
- a master grouped into Class Z generates a non-performance-ensured traffic flow, which may be data output from a processor, for example.
- Class C further includes a master that outputs a traffic flow which should be transmitted at rates that vary with time but that are always equal to or higher than a certain rate as in filter processing, for example, and which may be transmitted as a preceding flow at a rate that is equal to or higher than an average requested bandwidth time wise.
- the designer groups a master which belongs to the time-delay-guaranteed class, on which a strict requirement is imposed in terms of requested bandwidth and permitted time delay, and which has a burst property into Class A (in Step S 3203 ).
- a traffic flow generated by such a master in Class A is subjected to transmission processing most preferentially, and therefore, is transmitted by a router without interfering with a traffic flow in any other class. Consequently, the performance of each traffic flow can be ensured in terms of time delay and throughput at an even lower bus' operating frequency.
- the designer groups the other masters into Class B (in Step S 3204 ).
- FIG. 10 shows specific exemplary definitions of specifications required for traffic flows to be generated by masters.
- the required specifications are defined by various parameters. Examples of those parameters include a master ID, a traffic flow requested bandwidth, a permitted time delay, the length of a packet when generated, and a destination slave ID. If the slave is a memory, the type of the communication data, which may be Read access or Write access, for example, is also defined. For example, the item on the second row of the table shown in FIG. 10 indicates the attributes of a traffic flow generated by a master of which the master ID is 0. This traffic flow has a requested bandwidth of 800 megabytes per second (MB/s), a permitted time delay of 0.2 ⁇ s and one packet length of 10 flits, and is a Write access with respect to a slave of which the slave ID is 0.
- MB/s megabytes per second
- 10 a Write access with respect to a slave of which the slave ID is 0.
- FIG. 11 shows respective classes to which the bus masters 101 are grouped and their specific examples.
- a bus master 101 once a bus master 101 is determined, its class is supposed to be determined automatically. However, if a certain bus master performs multiple kinds of processing and sends a traffic flow, the class may be determined on a traffic flow basis.
- One of the following two methods may be adopted as a method for defining classes on a traffic flow basis.
- the classes may be defined on a traffic flow basis by having a bus master add class specifying information to data that forms a traffic flow and send such data to a master NIC.
- class specifying information may be defined on a traffic flow basis by having a bus master add class specifying information to data that forms a traffic flow and send such data to a master NIC.
- the specification required for a traffic flow to be generated by each bus master is defined by the designer. The bus master naturally knows the specifications required for a traffic flow and therefore can specify the class.
- the master NIC may define the classes on a traffic flow basis.
- the master NIC stores, in a memory in advance, a table (not shown) in which the identifier of each traffic flow is associated with a class.
- a bus master adds an identifier associated with the specifications required for a traffic flow to the data that forms the traffic flow and then sends the data to the master NIC.
- the master NIC can determine the class of that traffic flow by reference to the table with the identifier of the traffic flow received.
- the bus masters 101 are grouped into respective classes following the classification rule shown in FIG. 9 .
- the classes are grouped into time-delay-guaranteed classes (i.e., Classes A, B and C) in which the time delay needs to be taken into consideration and a non-time-delay-guaranteed class (i.e., Class Z) in which the permitted time delay is so long that the time delay can be guaranteed even without taking the delay into consideration.
- the time delay guaranteed class is subdivided into a class in which a traffic flow is transmitted at a rate exceeding the requested bandwidth (i.e., Class C), a class which generates a traffic flow with a burst property and of which the permitted time delay is particularly short or the requested bandwidth is particularly broad (i.e., Class A), and the other class in which delay and throughput need to be taken into consideration (i.e., Class B).
- masters such as encoders and decoders which need to transmit a huge size of data in a short period are grouped into Class A
- masters such as peripherals and I/Os are grouped into Class B
- non-time-delay-guaranteed class i.e., Class Z
- Class Z grouped is a master that generates a traffic flow for which the performance does not have to be ensured in terms of throughput and time delay and which has a low priority level and may just need to be transmitted only when the bus is not occupied.
- the classes may also be grouped on a traffic flow basis as described above. For example, a traffic flow for graphics related processing, for which the performance does not have to be ensured, and a traffic flow including the output data of a processor are grouped into Class Z. It should be noted that if the processor or graphics related traffic flow includes data for which the performance needs to be guaranteed in terms of time delay or throughput, such a traffic flow may also be grouped into a performance-ensured class, instead of Class Z.
- a class with an even higher priority level may be provided for a traffic flow or master for which a particularly strict performance requirement (on a permitted time delay or a requested bandwidth) is imposed among other classes, and such a traffic flow or master may be grouped into such a class.
- Portions (a), (b) and (a) of FIG. 47 illustrate how classification may be done according to the priority level of a time-delay-guaranteed class.
- classification is supposed to be done independently of each other. It should be noted that there is no correspondence in priority level between these portions (a), (b) and (c) of FIG. 47 .
- Portion (a) of FIG. 47 illustrates an exemplary set of priority levels for Classes A, B and C as described above. As far as the priority level is concerned, Class A has the highest priority level, and the priority level decreases in the order of Classes B and C.
- another high-priority-level class D may be provided for such a traffic flow, separately from the other traffic flows belonging to the same Class C.
- Portion (b) of FIG. 47 illustrates such Class D, of which the priority level is lower than that of Class B but higher than that of Class C.
- Some processor related traffic flow is grouped into such Class D.
- at least a traffic flow with a requested bandwidth that has been set with respect to Class D is transmitted at a higher priority level than a traffic flow belonging to Class C.
- traffic flows to be grouped into Class D described above may also be grouped into subdivided classes.
- Portion (c) of FIG. 47 illustrates exemplary classes which have been subdivided with a traffic flow to be transmitted at a rate exceeding the requested bandwidth taken into consideration.
- Classes A, B, D, C 1 , C and C 2 have been set in the descending order of priorities.
- a class to which traffic flows exceeding the requested bandwidth belong is set to be Class C 1 .
- those traffic flows exceeding the requested bandwidth are transmitted at a higher priority level than traffic flows also exceeding the requested bandwidth but belonging to Class C.
- a class to which traffic flows exceeding the requested bandwidth belong may also be set to be Class C 2 .
- those traffic flows exceeding the requested bandwidth are transmitted at a lower priority level than traffic flows belonging to Class C.
- the time delay to be caused by a traffic flow belonging to Class D may be set to be shorter than what is caused by a traffic flow belonging to Class C.
- those traffic flows exceeding the bandwidth requested for Class D need to be transmitted at a low priority level, those traffic flows exceeding the requested bandwidth may be grouped into Class C 2 , and the time delay to be caused by a traffic flow belonging to Class C 2 may be shorter than what is caused by a traffic flow belonging to Class C.
- an extra band may be secured in advance for such a traffic flow.
- traffic flows belonging to Class C are transmitted in advance using the extra band.
- traffic flows belonging to Class C are transmitted at a rate exceeding the requested bandwidth.
- the sum of the traffic flows belonging to Class C to be transmitted in the future can be reduced and the extra band can be used to transmit other traffic flows. Consequently, the interference with traffic flows belonging to Class C can be reduced and the time delay to be caused by traffic flows belonging to Class D can be shortened.
- FIG. 12 illustrates a configuration for the master NIC 102 , which is comprised mostly of hardware circuits.
- Each component of the master NIC 102 is implemented as a combination of multiple circuit elements. Alternatively, each component may also be implemented as either a single integrated circuit or multiple integrated circuits.
- the master NIC 102 includes a destination analyzing section 801 , an input buffer section 802 , a master information storage 803 , a rate controller 804 , an output changer 805 , a packet generator 806 and a buffer use information communication circuit 807 .
- the destination analyzing section 801 communicates with the bus master 101 to receive the communication data 201 , a destination slave ID 705 , a deadline time 707 and a source ID 704 and store the respective data.
- the input buffer section 802 stores the communication data 201 on a destination basis.
- the master information storage 803 stores what the destination analyzing section 801 has gotten by communicating with the bus master 101 , i.e., the source ID 704 identifying that bus master 101 , the class to which the bus master 101 belongs, the deadline time 707 , or the destination slave ID 705 .
- the rate controller 804 determines the transmission rate based on the rate value that has been set in advance in the rate value storage 1003 and controls the transmission rate of packets. In this description, the rate controller will be sometimes referred to herein as a “transmission controller”.
- a bus master which is going to transmit performance-ensuring data, on which a strict performance requirement is imposed sets the transmission rate to be a transmission rate that needs to be guaranteed.
- a bus master which is going to transmit data at a rate exceeding the requested bandwidth either sets the traffic flow rate value (upper limit value) to be a transmission rate exceeding the requested bandwidth or does not set the traffic flow rate value (upper limit value) at all in order to use the extra band.
- the bus master does not set the traffic flow rate value (upper limit value). As a result, the traffic flow is always ready to be transmitted and can be transmitted using the extra band.
- the rate value (upper limit value) could be determined based on the processing ability of a node or link that would cause a bottleneck for the entire bus system. For example, suppose a particular link would cause a bottleneck where the traffic flow becomes the heaviest in the entire bus system. In that case, the transmission performance of that link is determined based on the operating frequency and width of the bus so as to use the link with maximum efficiency, and the transmission rate (upper limit value) is determined based on the transmission performance.
- the extra band, and eventually the rate value may be determined by subtracting the requested bandwidth of the performance-ensuring data that has been transmitted from another bus master.
- the slave is a memory
- a bottleneck could be produced depending on the ability of the memory to process the communication data. That is why the transmission rate (upper limit value) can be set to be high enough for the memory to transmit a size of data that can be processed continuously. As a result, the bottleneck of the bus system can be used most efficiently without transmitting a traffic flow at an excessively high rate.
- the output changer 805 changes the buffers for transmission according to the communication data 201 stored in the input buffer section 802 , information provided by the rate controller 804 about whether or not the packets are ready to be transmitted, and information provided by the buffer use information communication circuit 807 about buffers available from the slave router 1402 , and outputs the data stored in the input buffer section 802 to the packet generator 806 .
- the packet generator 806 converts the communication data provided by the output changer 805 into packets, divides each of those packets into flits, and then transmits the flits. In converting the communication data into packets, the packet generator 806 adds a header and an end code to the data to be communicated, as will be described later.
- FIG. 13 shows the flow of operation of the master NIC 102 .
- the destination analyzing section 801 gets information by communicating with the bus master 101 and records the destination slave ID and deadline of the traffic flow to be transmitted to the master information storage 803 (in Step S 901 ).
- Information about the deadline is added to each packet by the master NIC 102 .
- the permitted time delay may be represented by the maximum relative time (difference) between a point in time when a packet is transmitted from a source node and a point in time when the packet arrives at a destination node.
- the deadline is represented by an absolute time by which the packet should arrive at the destination node. Both of the time delay and deadline may be represented as either absolute times or relative times as well.
- the destination analyzing section 801 stores the communication data 201 received in an input buffer associated with each destination slave in the input buffer section 802 (in Step S 902 ).
- the output changer 805 inquires of the rate controller 804 whether or not input buffers are ready to transmit packets. In response to the inquiry, the rate controller 804 informs the output changer 805 about whether input buffers are ready to transmit packets or not so that the transmission rate that has been set is not exceeded (in Step S 903 ).
- the buffer use information communication circuit 807 gets information about available buffers from the slave router 1402 . In accordance with the buffer availability information provided by the buffer use information communication circuit 807 , the output changer 805 allocates available buffers at the destination to the communication data that is stored in the input buffer section 802 .
- the output changer 805 transfers the communication data 201 from the input buffers that are ready to transmit packets (in Step S 904 ).
- the packet generator 806 generates a header 701 for the communication data 201 received based on the information provided by the master information storage 803 (including the source ID 704 , the destination slave ID 705 , the deadline 707 , and the class 706 that has been set in advance with respect to the master information storage 803 ) and the input buffer number 708 that is the buffer allocation result. Then, the packet generator 806 generates a packet 202 by adding the header 701 and the end code 702 to the communication data 201 , divides the packet 202 into flits, and transfers those flits (in Step S 905 ).
- FIG. 14 illustrates a data structure for each packet 202 .
- the packet 202 includes communication data 201 , header information 701 and an end code 702 .
- the communication data 201 is real data to be communicated between the bus master 101 and the slave 105 and may be moving picture or audio data, for example.
- the header information 701 includes information about a start code 703 indicating the beginning of a packet, a source ID 704 to identify the master, a destination slave ID 705 to identify the slave that is the target, a class 706 to which a given traffic flow belongs, a deadline 707 by which the communication data should arrive at either the slave 105 or the bus master 101 , and an input buffer number allocation result 708 which is stored in each router 103 .
- the end code 702 is a piece of information indicating the end of a packet.
- the router 103 can transmit data on a class-by-class basis.
- the class 706 just needs to be a piece of information that indicates the class of given data to be determined by its required performance (which will be referred to herein as “classification information”).
- the packet may be generated so as to include information about the order of priorities of transmission of respective data classes, for example, instead of the class 706 .
- a packet may be generated so as to include a combination of the buffer numbers that can be stored in each router, and the order of priorities of transmission may be determined by the buffer numbers stored in the router.
- FIG. 15 illustrates a configuration for the rate controller 804 that is provided for the master NIC 102 .
- the rate controller 804 includes a transmission determination circuit 1001 , a timer processor 1002 and a rate value storage 1003 .
- the transmission determination circuit 1001 determines, based on the transmission rate, whether those buffers are ready to transmit packets or not, and notifies the output changer 805 of the result of the decision.
- the timer processor 1002 includes a timer for measuring the transmission interval of packets 201 in order to control the transmission rate.
- the rate value storage 1003 stores the values of preset transmission rates in order to control the transmission rate of packets to be transmitted from the master.
- each of the transmission determination circuit 1001 and the timer processor 1002 may be implemented as either a combination of multiple circuit elements or a single integrated circuit.
- the rate value storage 1003 may be loaded with the transmission rate either by retrieving the transmission rate from a nonvolatile memory when the power is turned ON to start the bus system or by getting a preset transmission rate from another node through a signal line.
- the rate controller 804 may be implemented as a combination of a computer program and a computer (integrated circuit) that executes that program.
- FIG. 16 shows a rate value stored in the rate value storage 1003 . If the transmission rate is controlled by the transmission interval of packets, a transmission interval value is set in advance. The transmission rate may be either set to be the same value for each class or set individually on a master-by-master basis. It should be noted that the term “transmission interval” is shown in FIG. 16 just for convenience sake and does not have to be stored actually. Instead, by clearly defining the storage area, either the transmission interval value itself or information corresponding to the transmission interval value (i.e., information indicating the value of the transmission rate) just needs to be held.
- FIG. 17 shows the flow of operation of the rate controller 804 .
- the timer processor 1002 retrieves a preset rate value from the rate value storage 1003 (in Step S 1101 ). Specifically, with respect to a class to be grouped as a time-delay-guaranteed class, a rate value that ensures the performance in terms of a time delay and a throughput may be set. On the other hand, with respect to a class to be grouped as a non-time-delay-guaranteed class, no upper limit is set with respect to the rate value in order to use the extra band with maximum efficiency.
- the transmission determination circuit 1001 determines, based on the timer value provided by the time processing section 1002 , whether those buffers are ready to transmit packets or not (in Step S 1103 ).
- the transmission determination circuit 1001 provides the transmissibility information thus obtained for the output changer 805 .
- FIG. 18 shows how the transmission determination circuit 1001 performs the transmission determining processing step S 1103 .
- the transmission determination circuit 1001 gets the current timer value from the timer processor 1002 on an input buffer basis (in Step S 1201 ).
- the answer is “those buffers are ready to transmit”.
- the answer is “those buffers are not ready to transmit”.
- FIG. 19 shows the flow of operation of the timer processor 1002 .
- the timer processor 1002 carries out a timer control in order to control the transmission rate. Before starting its processing, first of ail, the timer processor 1002 resets the value of its own timer into zero. Next, if the timer processor 1002 has received the result of transmission in transmitting the communication data from the input buffer (i.e., if the answer to the query of the processing step S 1302 is YES), the timer processor 1002 sets the timer value to be the rate value that has been retrieved from the rate value storage 1003 .
- the timer processor 1002 decrements the timer value every cycle of the bus' operating frequency until the timer value gets equal to zero (in Step S 1304 ).
- the timer processor 1002 refrains from transmitting the communication data 201 that is stored in the associated buffer.
- the transmission rate can be controlled so as not to exceed the preset rate value.
- the transmission rate may also be controlled by any method other than what has just been described, as mentioned above.
- FIG. 20 illustrates how to carry out a general flow control between the master NIC 102 and the router 103 .
- the “flow control” refers herein to receiving the communication status at the destination and controlling the transmission of packets according to the communication status.
- the control to be performed by the master NIC 102 that gets buffer availability information from routers on the route leading from the source to the destination and from the slave NIC and that transmits the packets by reference to the buffer availability information is an exemplary flow control.
- FIGS. 21A and 21B show how the flow control and rate control are different.
- FIG. 21A shows how the transmission quantity per unit time changes if the rate control is performed
- FIG. 21B shows how the transmission quantity per unit time changes if no rate control is performed.
- the transmission quantity per unit time of the packets being transmitted from either the master NIC or the router is controlled so as not to exceed the preset rate value (upper limit value).
- the transmission control by the flow control within the physical band prevails as shown in FIG. 21B .
- the packets can be transmitted using the entire physical band of the bus without being restricted by the transmission rate.
- the transmission control by the flow control will also prevail if the rate value is set to be a sufficiently large value.
- the router 103 and the master NIC 102 perform a flow control by transmitting packets by reference to the buffer availability information in the input buffer section at the destination.
- FIG. 22 illustrates a configuration for the router 103 .
- the router 103 receives a packet 202 from either a master router 1401 or a master NIC 102 and transmits the packet 202 to either a slave router 1402 or a slave NIC 104 .
- the master and slave are connected together through bus lines.
- the router 103 includes a class analyzer 1403 , an input buffer section 1404 , an output port selector 1406 , a buffer information storage 1407 , a buffer use information communication circuit 1408 , a rate controller 1409 , an output arbitrator 1410 , a class information storage 1411 and a switch changer 1412 .
- the class analyzer 1403 receives the packet 202 , and analyzes the header information 701 by reference to the packet's start code, thereby getting the class, destination slave ID and deadline. In addition, the class analyzer 1403 gets the buffer availability information in the slave router 1402 from the buffer use information communication circuit 1408 and allocates input buffers according to the class. The result of the allocation will be stored in the buffer information storage 1407 .
- the input buffer section 1404 stores the packets on a class-by-class basis.
- the output port selector 1406 determines the output port number by the destination slave ID that has been gotten by the class analyzer 1403 and stores the output port number in the buffer information storage 1407 .
- the buffer information storage 1407 stores various kinds of information about the packet 202 that is stored in the input buffer section 1404 (including the class, destination slave ID, deadline, output port number, and result of allocation of the input buffers to the slave master).
- the buffer use information communication circuit 1408 gets the buffer availability information from the slave router 1402 , gets the available information in the input buffer section 1404 from the buffer information storage 1407 , and provides the availability information for the buffer use information communication circuit 1408 in the master router 1401 .
- the rate controller 1409 gets the class of the packets 202 that are stored in the input buffer section 1404 from the buffer information storage 1407 and controls the transmission of the packets according to the packets' guaranteed transmission rate on a class-by-class basis.
- the transmission rate to be guaranteed on a class-by-class basis is determined based on the rate value that has been set in the rate value storage 2003 (not shown in FIG. 22 but to be described later).
- the rate controller 1409 notifies the output arbitrator 1410 of the result of the rate control as a packet transmission permission signal.
- the output arbitrator 1410 conducts arbitration so as to sequentially give high priorities to the packets, of which the transmission rates are equal to or lower than the guaranteed transmission rate, and give low priorities to the packets, of which the transmission rates exceed the guaranteed transmission rate.
- the rate value to be set for the rate value storage 2003 (to be described later) is set to be equal to or greater than the guaranteed rate value that has been set by the master NIC 102 so that traffic flows belonging to the same class can be confluent to each other while maintaining their requested bandwidths.
- the transmission interval of the router 103 is set using the value (P/N) which is obtained by dividing the transmission interval P that has been set by the master NIC 102 by the number of masters N belonging to the same class, thereby transmitting the traffic flows while maintaining their requested bandwidths.
- P/N the value which is obtained by dividing the transmission interval P that has been set by the master NIC 102 by the number of masters N belonging to the same class, thereby transmitting the traffic flows while maintaining their requested bandwidths.
- no upper limit is imposed on the transmission rate so as to use the bus' extra band more efficiently.
- the output arbitrator 1410 conducts arbitration between the packets to transmit according to the priority levels of classes that are stored in the class information storage 1411 , the deadlines gotten from the buffer information storage 1407 , and the transmission permission signal gotten from the rate controller 1409 .
- the class information storage 1411 stores in advance the priority levels of those classes.
- FIG. 23 shows the class priority level information to be stored in the class information storage 1411 .
- the priority level of Class A is “1”, and Class A is processed most preferentially.
- Class B and C are “2” and “3”, respectively, Class B is processed second most preferentially, next to Class A.
- Class C is processed after Class B.
- any other arbitrary set of priority levels may be allocated according to the number of the classes designed.
- the output arbitrator 1410 of the router 103 conducts arbitration and performs transmission processing between the input buffers in the descending order of their priority levels and in the ascending order of their deadlines (i.e., an input buffer with a higher priority level or a closer deadline than any other input buffer is processed most preferentially).
- FIG. 24 shows a specific example of the results of the arbitration conducted by the output arbitrator 1410 of the router 103 between respective buffers to transmit packets from in order to determine their order of priorities.
- the output arbitrator 1410 extracts input buffers belonging to a class with the highest priority level (e.g., input buffers in Class A) from input buffers in which packets that are ready to transmit are stored.
- the output arbitrator 1410 further extracts an input buffer with the closest deadline from those input buffers extracted. On the other hand, if no input buffers have been extracted at all, then the output arbitrator 1410 extracts a single input buffer belonging to a class with the highest priority level or with the closest deadline from input buffers in which packets that are not ready to transmit are stored. In any case, the output arbitrator 1410 regards the input buffer that has been extracted as an input buffer to transmit packets from with respect to Output Port # 0 . Subsequently, the output arbitrator 1410 selects an input buffer to transmit packets from with respect to Output Port # 1 through the same arbitration procedure.
- the switch changer 1412 Based on the result of the arbitration that has been conducted by the output arbitrator 1410 and the output port number that is stored in the buffer information storage 1407 , the switch changer 1412 turns the switch and transmits the packets.
- the order of transmission of packets is supposed to be determined within the same class by comparing their deadlines to each other.
- the deadline may be any piece of information as long as the information indicates the degree of temporal urgency with which a given packet needs to be transmitted within the same class.
- the deadline may be a time by which communication data should arrive at the destination slave or a time by which a response from the slave should arrive at the source master.
- the permitted time delay may be either the amount of time it takes for a packet transmitted from a master to reach a slave through a forward route or the amount of time it takes for a packet transmitted from the source master to reach the slave and go back to the master through the forward and backward routes.
- the degree of temporal urgency with respect to transmission does not have to be represented by the deadline but may also be represented by the time when the packet was transmitted, the amount of time that has passed since the transmission time (i.e., information about the accumulated processing time at the master NIC 102 and the router 103 ) or the number of packets that have been transmitted so far up to the transmission time (i.e., the count of the transmission counter indicating the order of transmission of packets at the master NIC 102 ).
- these pieces of information will be sometimes referred to herein as “time information concerning the deadline” collectively.
- the time may be indicated by the count of a counter to be driven by a bus clock signal supplied to the semiconductor bus system, for example. If the amount of time that has passed since the transmission time is used instead of the deadline, the header needs to have a space to store the count of counter that measures the time passed instead of the deadline, and the count of the counter may be incremented by one at the master NIC 102 or the router 103 every operating clock pulse. Alternatively, if a transmission counter that indicates the order of transmission of packets instead of the deadline is used, the transmission counter may be provided for the packet generator 806 , which may increment the count of its transmission counter every time a packet is transmitted, and the count of the transmission counter at the time of transmission may be added to the header. Although an up-counter is supposed to be used in this example, the up-counter may be naturally replaced with a down-counter.
- FIG. 25 shows the flow of operation of the router 103 .
- the class analyzer 1403 receives a packet 202 from the master router 1401 (in Step S 1501 ).
- the class analyzer 1403 analyzes the header information 701 (including the destination slave ID, class and deadline) of the packet 202 and records the information in the buffer information storage 1407 (in Step S 1502 ).
- the class analyzer 1403 extracts an input buffer number from the packet 202 and stores the packet in an associated input buffer 1405 in the input buffer section 1404 (in Step S 1503 ).
- the output port selector 1406 selects an output port number for the packet 202 based on the destination slave ID (in Step S 1504 ).
- the output port number may generally be selected either by using a routing table to be determined statically by how the router is connected or by making calculations using the destination slave ID following a certain rule, for example.
- the rate controller 1409 measures the transmission rates of packets in respective classes with respect to each output port number, and decides that the packets stored in the input buffer section 1404 are ready to be transmitted so as to allow the output arbitrator 1410 to see if the actual transmission rate is greater than the preset rate value (in Step S 1505 ). It should be noted that with respect to a traffic flow, for which the rate value (upper limit value) has been set by the rate controller 1409 to be the guaranteed rate value, that traffic flow rate can be guaranteed. In this description, such a traffic flow will be referred to herein as a “traffic flow to be transmitted using a first band (i.e., the band to be secured for that traffic flow)”.
- an extra band can be used with that transmission rate guaranteed.
- a traffic flow will be referred to herein as a “traffic flow to be transmitted using the first band and a second band (i.e., the extra band)”.
- the transmission interval may be set to be zero, for example. In that case, the traffic flow can be transmitted continuously and the extra band can be used to the upper limit of the bus' physical bandwidth at maximum.
- the buffer use information communication circuit 1408 gets buffer availability information to be used when buffers are allocated in the slave router 1402 (in Step S 1506 ).
- the buffer availability information indicates whether there are any packets stored in, and how many flits are available from, each of the input buffers 1405 that are allocated to the destination slaves in respective classes in the slave router 1402 .
- the input buffer section 1404 is comprised of a single randomly accessible memory and an address table which manages the addresses on a destination slave basis with respect to each class, then a plurality of packets can be stored in a single input buffer. That is why in that case, the number of packets available and the number of flits available are obtained on a destination basis with respect to each class, and used as pieces of the buffer availability information.
- the class analyzer 1403 allocates buffers available from the slave router 1402 to unallocated input buffers that should store packets at the slave router on a destination slave ID basis with respect to each class (in Step S 1507 ).
- the output arbitrator 1410 conducts arbitration between the packets that are stored in the input buffer section 1405 and that are going to be transmitted in the descending order of priorities. And if there is any extra band available, the output arbitrator 1410 also conducts arbitration between even packets that the rate controller 1409 have found not ready to be transmitted to give them low priorities (in Step S 1508 ).
- the rate controller 1409 in the router controls the transmission at a rate value (upper limit value) based on the requested bandwidth, thereby transmitting, if the bus has any extra band, either a traffic flow exceeding the requested bandwidth or a non-performance-ensured traffic flow while ensuring the required performance. In this manner, the extra band can be used more efficiently.
- the switch changer 1412 turns the switches in order to transmit the packet 202 and then does transmit the packet 202 (in Step S 1509 ).
- the buffer information storage 1407 initializes the information stored in the input buffer in question (in Step S 1511 ). Otherwise (i.e., if the answer to the query of the processing step S 1510 is NO), the packet continues to be transmitted.
- FIG. 26 shows what is input to, and output from, the class analyzer 1403 of the router 103 .
- the class analyzer 1403 receives a packet 202 from the master router 1401 and notifies the output port selector 1406 of the destination slave ID to determine where the packet 202 should be transferred. Then, the class analyzer 1403 gets an output port number and records the output port number in the buffer information storage 1407 . Also, the class analyzer 1403 retrieves the buffer availability information of the slave router 1402 from the buffer use information communication circuit 1408 on a destination slave ID basis with respect to each class in order to allocate an input buffer in the slave router 1402 . Then, the class analyzer 1403 makes the buffer information storage 1407 record the header 701 and output port number of the packet 202 . And the class analyzer 1403 makes the input buffer section 1404 store the packet 202 .
- FIG. 27 illustrates a configuration for the rate controller 1409 of the router 103 .
- this rate controller 1409 also controls the rate by adjusting the transmission interval of packets using a timer.
- the timer processor 2002 manages its timer independently on an output port number basis with respect to each class.
- the transmission determination circuit 2001 gets a timer value on an output port number basis with respect to each class and determines whether or not the buffers are ready to transmit packets.
- a rate value that has been set on a class-by-class basis is stored in the rate value storage 2003 .
- the output arbitrator 1410 sometimes gets packets transmitted from input buffers that are not ready to transmit packets.
- the rate value of each class may be set in advance by the designer according to the performance required. For example, with respect to a performance-ensured traffic flow, the rate value is set to be the guaranteed transmission rate. With respect to a non-performance-ensured traffic flow, on the other hand, no rate value (upper limit value) is set. Furthermore, if no upper limit rate value is set, the transmission interval may be set to be zero, for example.
- FIG. 28 shows the flow of operation of the rate controller 1409 .
- the timer processor 2002 of the rate controller 1409 retrieves the rate value of each class from the rate value storage 2003 (in Step S 2101 ).
- the transmission determination circuit 2001 gets the output port number and class of each input buffer from the output arbitrator 1410 (in Step S 2102 ).
- the transmission determination circuit 2001 determines, based on the timer value provided by the timer processor 2002 , whether the buffers are ready to transmit packets or not, with respect to the output port number and class gotten (in Step S 2103 ).
- the transmission determination circuit 2001 provides the transmissibility information for the output arbitrator 1410 (in Step S 2104 ).
- FIG. 29 shows the procedure in which the rate controller 1409 performs the transmission determining processing step.
- the transmission determination circuit 2001 of the rate controller 1409 receives information about the output port number and class from the output arbitrator 1410 (in Step S 2201 ).
- the transmission determination circuit 2001 gets a timer value associated with the output port number and class from the timer processor 2002 (in Step S 2202 ).
- the transmission determination circuit 2001 decides that the buffers are not ready to transmit packets. On the other hand, unless the timer value gotten is positive (i.e., if the answer to the query of the processing step S 2203 is NO), the transmission determination circuit 2001 decides that, if the answer to the query of the processing step S 2205 is NO, the buffers are ready to transmit packets with respect to a performance-ensured class (i.e., unless the buffer belongs to Class Z) (in Step S 2204 ) but decides that, if the answer to the query of the processing step S 2205 is YES, the buffers are not ready to transmit packets with respect to a non-performance-ensured class (i.e., when the buffer belongs to Class Z) (in Step S 2206 ).
- a performance-ensured class i.e., unless the buffer belongs to Class Z
- Step S 2204 decides that, if the answer to the query of the processing step S 2205 is YES, the buffers are not ready
- FIG. 30 shows a specific example of the management information for the timer processor.
- the second row of the table shown in FIG. 30 says that the timer value associated with Class A at Output Port # 0 is zero. If the timer value is zero, then it means that no packets have been transmitted for at least as long a period of time as the preset transmission interval since the packets were transmitted last time, and therefore, this is a “transmissible” state.
- the third row of this table says that the timer value associated with Class B at Output Port # 0 is six. This means that this is a “non-transmissible” state in which transmission is prohibited in order to set the packet transmission rate to be equal to or smaller than the transmission rate that has been set in the rate value storage 2003 .
- FIG. 31 shows the flow of operation of the timer processor 2002 of the rate controller 1409 .
- the timer processor 2002 resets each timer value into zero when starting to operate. And if the timer processor 2002 receives the result of transmission (i.e., the class and output port number of the input buffer that have been transmitted) from the output arbitrator 1410 when transmitting the packets (i.e., if the answer to the query of the processing step S 2401 is YES), the timer processor 2002 sets the associated timer value to be the rate value that has been set in the rate value storage 2003 (i.e., the transmission interval in this case).
- the timer value is decremented by one every cycle of the bus' operating frequency and will eventually be decreased to zero (in Step S 2403 ).
- the timer processor 2002 of this embodiment controls the transmission rate for the router 103
- the transmission rate may also be controlled by any other method. Specifically, the transmission rate may also be controlled by the bit rate. Alternatively, the number of cycles in which packets are transmitted for a certain period of time may be specified. Still alternatively, the transmission interval may also be specified on a time basis, not on a cycle basis. Depending on what embodiment is adopted, as long as the transmission rate is satisfied in the long term, the transmission rate may exceed a sufficiently low rate for just a short period of time.
- FIG. 32 shows exemplary transmission rate values that are managed by the rate value storage 2003 on a class-by-class basis.
- the value that has been set represents the transmission interval.
- the value of Class A is set to be “10”, which means that packets can be transmitted every ten cycles at maximum from each output port of the router 103 .
- Class Z on the other hand, the value is set to be “0”, which means that packets in a traffic flow belonging to Class Z can be transmitted continuously at no transmission intervals from the router 103 .
- the rate value storage 2003 may set the transmission rate either by retrieving the transmission rate from a nonvolatile memory when the power is turned ON to start the bus system or by getting a preset transmission rate from another node through a signal line.
- FIG. 33 shows the flow of operation of the output arbitrator 1410 .
- the output arbitrator 1410 gets the priority level of each class from the class information storage 1411 (in Step S 2801 ).
- the output arbitrator 1410 retrieves information about the input buffer 1415 (including the output port number, class' attribute information and deadline) from the buffer information storage 1407 (in Step S 2802 ).
- the output arbitrator 1410 notifies the rate controller 1409 of the output port number and class' attribute information of the input buffer (in Step S 2803 ) and gets information about whether the buffer is ready to transmit or not from the rate controller 1409 (in Step S 2804 ).
- the output arbitrator 1410 chooses a buffer with the highest class priority level from those input buffers that are ready to transmit packets from with respect to each output port number. If two or more buffers have the same priority level, then the output arbitrator 1410 chooses a buffer with the closest deadline from them. In this manner, the output arbitrator 1410 conducts arbitration between the input buffers to transmit packets from (in Step S 2805 ).
- the output arbitrator 1410 notifies the switch changer 1412 of the combination of the input buffer to transmit packets from and the output port number (in Step S 2806 ) and then notifies the rate controller 1409 of the information about the input buffer 1415 to transmit the packets from (i.e., the class and output port number of that input buffer) (in Step S 2807 ).
- FIG. 34 is a flowchart showing how the output arbitrator 1410 carries out the processing step S 2805 of conducting arbitration between the input buffers 1415 to transmit packets from.
- the output arbitrator 1410 carries out a control operation so that input buffers that are ready to transmit packets are given high priorities and that input buffers that are not ready to transmit packets are given lower priorities than the former input buffers.
- the output arbitrator 1410 extracts input buffers that are ready to transmit packets from the input buffers 1415 (in Step S 2901 ) and then chooses an input buffer with the highest class priority level from those input buffers extracted with respect to each output port number (in Step S 2902 ).
- the output arbitrator 1410 extracts an input buffer with the closest deadline with respect to each output port number and regards the input buffer as an input buffer to transmit packets from (in Step S 2903 ).
- the output arbitrator 1410 extracts an input buffer that is not ready to transmit packets from the input buffers 1415 belonging to a class other than Classes A and B with respect to each output port number (in Step S 2904 ). Then, the output arbitrator 1410 chooses an input buffer with the highest class priority level from those input buffers extracted with respect to each output port number (in Step S 2905 ). Finally, the output arbitrator 1410 chooses an input buffer with the closest deadline from those input buffers extracted with respect to each output port number (in Step S 2906 ).
- FIG. 35 shows a specific exemplary format for the management information to be stored in the buffer information storage 1407 of the router 103 .
- the buffer information storage 1407 stores the class and destination slave ID associated with each input buffer 1405 .
- the buffer information storage 1407 also stores information about whether or not any packets are stored in each input buffer 1405 , the deadlines, the output port numbers that have been selected based on the destination slave IDs, and the results of allocation of the input buffers (i.e., the input buffer IDs) at the slave router 1402 .
- This item represents pieces of information about the input buffer ID 0 at Input Port # 0 of the router 103 .
- a packet belonging to Class A and having a destination slave ID of zero is stored in the input buffer 1405 .
- the deadline of the packet is 100, and the output port number allocated to the packet by the output port selector 1406 is zero.
- the input buffer ID allocated by the class analyzer 1403 to the slave router 1402 is zero.
- the item on the third row of this table represents pieces of information about the input buffer ID 1 at Input Port # 0 .
- a packet belonging to Class A and having a destination slave ID of one is stored in the input buffer 1405 .
- this item says it has no data, it can be seen that no packets are stored there.
- FIG. 36 illustrates exemplary NoCs which can be used as other embodiments of the present invention.
- a router according to an embodiment of the present invention lowers the bus' operating frequency to ensure the required performance and uses the extra band more efficiently by dividing the buffers and controlling the transmission according to the required performance. That is why no matter how the routers are connected there, any of various types of NoCs such as the mesh, torus and tree types shown in portions (a), (b), and (c) of FIG. 36 can be used.
- the router can narrow the required bus bandwidth while minimizing the interference by low-priority classes.
- the buffers may also be grouped according to the types of packets.
- command-sending packets There are two types of packets, namely, command-sending packets and data-sending packets.
- command including request information which needs to be used to read data when having a Read access to a slave.
- command including data write response information when having a Write access to a slave.
- a Read request command is transmitted from a master and received at a slave.
- a Write response command is transmitted from a slave and received at a master.
- One type is data including content to be written on a slave when having a Write access.
- the other type is data including content that has been read out from a slave when having a Read access.
- a packet including Write data is transmitted from a master and received at a slave.
- a packet including Read data is transmitted from a slave and received at a master.
- the router may perform no rate control on a packet including a Read access command and may perform a rate control only on a packet including Write access data.
- the router may perform no rate control on a packet including a Read access command and may perform a rate control only on a packet including Write access data.
- FIG. 37 illustrates an exemplary buffer arrangement to be adopted in a situation where a command and data are separated from each other. No rate control is carried out on the command and a rate control is carried out only on the data.
- a configuration in which buffers are physically separated is supposed to be used. However, as long as the buffers are logically separated, the buffers do not have to be physically separated from each other.
- FIGS. 38A and 38B show how the delay involved with a command can be shortened, which is an effect to be achieved by separating the command and data from each other.
- the router 103 includes an input buffer section 1404 including a command input buffer 3701 and a data input buffer 3702 .
- an input buffer section 1404 including a command input buffer 3701 and a data input buffer 3702 .
- FIG. 38B shows packet transmission times in a situation where the transmission cannot be changed between the packets. In that case, the packets that should be stored in the same input buffer would interfere with each other to cause an increased delay, and therefore, the operating frequency to ensure the required performance should be estimated to be higher than in the situation shown in FIG. 38A .
- FIG. 39 shows generally how to multiplex and transmit a packet.
- “to multiplex a packet” means that the master NIC 102 generates a single packet based on multiple sets of communication data.
- the inverse processing of the “packet multiplexing” is “packet demultiplexing”.
- the slave NIC 104 demultiplexes the multiplexed packet received and restores original sets of communication data.
- FIG. 40 illustrate how packets may be transmitted depending on whether the packets are multiplexed or not.
- Portion (A) of FIG. 40 illustrates an example in which the packets are not multiplexed. In this example, a packet is generated for each set of communication data and transmitted.
- Portion (B) of FIG. 40 illustrates an example in which the packets are multiplexed. In this example, a packet is generated based on multiple sets of communication data and transmitted.
- the maximum transmission interval can be extended by increasing the transmission quantity per transmission interval.
- a number of masters to be grouped into the same class are controlled by the router at the same transmission interval. That is why if there is a significant difference in the maximum transmission interval that ensures the throughput performance, the transmission interval should be shortened more than necessarily and the estimated operating frequency tends to be an excessive one. For that reason, by transmitting multiplexed packets to a master of which the maximum transmission interval is relatively short within the same class, the maximum transmission interval that can ensure the throughput performance can be extended and the required operating frequency can be lowered.
- FIG. 41 illustrates a packet multiplexing format for a packet 202 .
- This packet 202 includes not only the packet start code 703 but also a communication data start code 709 at the top of each set of communication data in order to store multiple sets of communication data in a single packet.
- the bus system includes a signal line dedicated to transmitting the communication data start code 709 .
- the communication data start code 709 is inserted to a division marker position when communication data is restored, and is transmitted along the packet through the dedicated signal line. By using such a dedicated signal line, packet multiplexing can get done without providing any complicated structure.
- a dedicated signal line is supposed to be used to transmit the communication data start code 709 .
- information representing the structure of multiple sets of communication data that have been multiplexed may be added to the header. For example, even if information about the number of sets of the communication data multiplexed and information about the data length of each set of communication data are added to the header, the communication data can also be restored.
- the master NIC 102 may have the same configuration as what is shown in FIG. 12 .
- FIG. 42 is a flowchart showing how the master NIC 102 operates to get packet multiplexing done.
- the output changer 805 transfers multiple sets of communication data stored from an input buffer that is ready to transmit packets (in Step S 6204 ).
- the packet generator 806 adds the communication data start code 709 to the top of each of the multiple sets of communication data received and also adds the header 701 and the end code 702 to those sets of data, thereby generating a packet (in Step S 6205 ).
- the number does not have to be the number of the sets of communication data stored as described above. For example, if a master issues a traffic flow only in a predetermined pattern, its behavior can be completely predicted during the design process, and therefore, the number of the sets of data to be multiplexed together may also be determined during the design process. On the other hand, if a master issues a traffic flow in an irregular pattern, a single packet may be transmitted when a preset packet length is reached.
- FIG. 43 illustrates a packet multiplexing configuration for the slave NIC 104 , which includes a communication data restoration circuit 6303 to restore multiple sets of communication data from the multiplexed packet.
- the slave NIC 104 further includes a packet receiver 6301 which receives a packet, a buffer information storage 6302 which stores information about the packet (including its source ID, deadline and class), an input buffer section 6304 which stores the restored communication data, a buffer use information communication circuit 6307 which gets the slave's ( 105 ) buffer availability information from the slave 105 and which provides buffer availability information of the slave NIC 104 for the master router 1401 , and an output changing section 6305 which allocates the number of the buffer to store at the slave end by reference to the buffer availability information, class and source ID and which determines the order of transmission based on the deadline and the class.
- FIG. 44 shows the flow of packet multiplexing operation of the slave NIC 104 .
- the packet receiver 6301 receives a packet 202 from the master router (in Step S 6401 ) and writes information about the packet (including its source ID, deadline and class) in the packet information storage section 6302 (in Step S 6402 ).
- the communication data restoration circuit 6303 removes the header 701 and the end code 702 from the packet and restores the communication data 201 (in Step S 6403 ).
- the packet is divided into multiple sets of communication data based on the communication data start code 709 that has been received along with the packet.
- the communication data restoration circuit 6303 stores the communication data 201 in the input buffer section 6304 by reference to the input buffer number 708 indicated by the header 701 (in Step S 6404 ).
- the slave NIC 104 retrieves the slave's ( 105 ) buffer availability information from the slave 105 . Meanwhile, to allocate the number of the buffer to store at the slave NIC 104 , the master router 1401 is notified of the slave NIC's ( 104 ) buffer availability information (in Step S 6405 ). Then, the output changing section 6305 allocates the number of the buffer to store at the slave 105 by reference to the slave's buffer availability information gotten and the information (including source ID and class) stored in the buffer information storage 6302 (in Step S 6406 ).
- the output changing section 6305 determines the order of transmission of the sets of the communication data 202 that are stored in the input buffer section 6304 based on the class and the deadline, and then transmits the communication data 202 and the input buffer number 708 allocated to the slave 105 (in Step S 6407 ).
- FIG. 45 illustrates an example in which multiple bus masters and multiple memories on a semiconductor circuit and common input/output (I/O) ports to exchange data with external devices are connected together with distributed buses.
- a semiconductor circuit may be used in portable electronic devices such as cellphones, PDAs (personal digital assistants) and electronic book readers, TVs, video recorders, camcorders and surveillance cameras, for example.
- the masters may be CPUs, DSPs, transmission processing sections and image processing sections, for example.
- the slaves may be volatile DRAMs and/or nonvolatile flash memories.
- the input/output ports may be USB, EthernetTM or any other communications interfaces to be connected to an external storage device such as an HDD, an SSD or a DVD.
- FIG. 46 illustrates a multi-core processor in which a number of core processors such as a CPU, a GPU and a DSP are arranged in a mesh pattern and connected together with distributed buses in order to improve the processing performance of these core processors.
- each of these core processors may function as either a first node or a second node according to the present invention.
- each core processor has a cache memory to store necessary data to get arithmetic processing done. And information stored in the respective cache memories can be exchanged and shared with each other between those core processors. As a result, their performance can be improved.
- the communications are carried out between those core processors on such a multi-core processor at respectively different locations, over mutually different distances (which are represented by the number of routers to hop), and with varying frequencies of communication. That is why if data packets transmitted are just relayed with their order of reception maintained, then applications with high degrees of priority will be interfered with by applications with low degrees of priority and it will take a lot more time to transmit those packets. As a result, the performance of the multi-core processor will decline.
- the bus' band can be used highly efficiently and the required bus' bandwidth can be estimated to be an even smaller one by classifying the buffers according to the attributes of an application executed by each CPU. For example, in the case of an application in which a memory needs to be accessed highly frequently, buffers may be grouped into a class with a higher priority level than in other applications. On the other hand, in the case of an application in which a memory needs to be accessed much less frequently on a regular basis and in which an access request can be issued in advance, each traffic flow will be transmitted through the bus for a shorter period of time and the bus' extra band can be used by controlling the transmission rate beyond the requested bandwidth while lowering the priority level. As a result, the performance of each core processor, and eventually the processing time efficiency, can be improved.
- the respective components of the first node, router and second node are represented as individual functional block sections.
- the operation of the router described above may also be performed by getting a program defining the processing of those functional sections executed by a processor (computer) built in the router.
- the procedure of processing of such a program is just as shown in the various flowcharts that have been referred to in the foregoing description.
- the present invention can be carried out not just as such on-chip implementation but also as a simulation program for performing design and verification processes before that on-chip implementation process. And such a simulation program is executed by a computer.
- the respective elements shown in FIG. 12 are implemented as a class of objects on the simulation program. By loading a predefined simulation scenario, each class gets the operations of the respective elements performed by the computer. In other words, the operations of the respective elements are carried out either in series or in parallel to/with each other as respective processing steps by the computer.
- a data class that is implemented as router gets such a simulation scenario, which has been defined by a simulator, loaded, thereby setting conditions on not only the class of the bus masters but also determining the timings to send packets that have been received from a class of other routers, destination addresses, the degrees of priority, and the deadlines.
- the data class that is implemented as routers performs its operation until the condition to end the simulation, which is described in the simulation scenario, is satisfied, thereby calculating and getting the throughput and latency during the operation, a variation in flow rate on the bus, and estimated operating frequency and power dissipation and providing them to the user of the program. And based on these data provided, the user of the program evaluates the topology and performance and performs design and verification processes.
- various kinds of information such as the ID of a node on the transmitting end, the ID of a node on the receiving end, the size of a packet to send, and the timing to send the packet are usually described on each row of the simulation scenario.
- the routers and the receiving nodes changed, it can be determined what network architecture is best suited to the simulation scenario.
- the configuration of any of the embodiments described above can be used as design and verification tools for this embodiment. That is to say, an exemplary embodiment of the present invention can also be carried out as such design and verification tools.
- An embodiment of the present invention is applicable to a router which is configured to maximize, based on quantitative tentative computations, the bus transmission efficiency at a relatively low (e.g., lowest) bus' operating frequency with respect to multiple traffic flows running with mutually different levels of required performances through distributed buses in a semiconductor integrated circuit and yet to ensure performance. That embodiment is also applicable to semiconductor buses to which the QoS technology is incorporated.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
Description
-
- United States Laid-Open Patent Publication No. 2005/0117589; and
- Jean-Jacques Lecler and Gilles Baillieu, “Application Driven Network on Chip Architecture Exploration and Refinement for a Complex SoC”, Springer Verlag's Design Automation for Embedded Systems Journal, Volume 15,
Number 2, pp. 133-158.
Claims (19)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012-163833 | 2012-07-24 | ||
JP2012163833 | 2012-07-24 | ||
PCT/JP2013/004449 WO2014017069A1 (en) | 2012-07-24 | 2013-07-22 | Bus system and relay device |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2013/004449 Continuation WO2014017069A1 (en) | 2012-07-24 | 2013-07-22 | Bus system and relay device |
Publications (2)
Publication Number | Publication Date |
---|---|
US20140204740A1 US20140204740A1 (en) | 2014-07-24 |
US9270604B2 true US9270604B2 (en) | 2016-02-23 |
Family
ID=49996897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/221,619 Expired - Fee Related US9270604B2 (en) | 2012-07-24 | 2014-03-21 | Bus system and router |
Country Status (4)
Country | Link |
---|---|
US (1) | US9270604B2 (en) |
JP (1) | JP5838365B2 (en) |
CN (1) | CN103828312B (en) |
WO (1) | WO2014017069A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11422528B2 (en) | 2019-07-04 | 2022-08-23 | Kokusai Electric Corporation | Substrate processing system, method of manufacturing semiconductor device, and recording medium |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9237581B2 (en) * | 2013-03-14 | 2016-01-12 | Cavium, Inc. | Apparatus and method for media access control scheduling with a sort hardware coprocessor |
US9571402B2 (en) * | 2013-05-03 | 2017-02-14 | Netspeed Systems | Congestion control and QoS in NoC by regulating the injection traffic |
US9473415B2 (en) * | 2014-02-20 | 2016-10-18 | Netspeed Systems | QoS in a system with end-to-end flow control and QoS aware buffer allocation |
JP6540095B2 (en) * | 2015-02-27 | 2019-07-10 | 日本電気株式会社 | Communication apparatus, information processing system, message processing method |
KR102255334B1 (en) * | 2015-03-11 | 2021-05-24 | 삼성전자주식회사 | Apparatus and method for generating a network on chip in an electronic device |
US10305952B2 (en) | 2015-11-09 | 2019-05-28 | T-Mobile Usa, Inc. | Preference-aware content streaming |
US10193943B2 (en) | 2015-11-09 | 2019-01-29 | T-Mobile Usa, Inc. | Data-plan-based quality setting suggestions and use thereof to manage content provider services |
US10728152B2 (en) * | 2016-02-08 | 2020-07-28 | T-Mobile Usa, Inc. | Dynamic network rate control |
US10966070B2 (en) * | 2017-01-30 | 2021-03-30 | Veniam, Inc. | Systems and methods for managing data with heterogeneous multi-paths and multi-networks in an internet of moving things |
CN111917656B (en) * | 2017-07-27 | 2023-11-07 | 超聚变数字技术有限公司 | Method and device for transmitting data |
US11206096B2 (en) * | 2018-05-10 | 2021-12-21 | Mitsubishi Electric Corporation | Electronic control apparatus |
CN112702056B (en) * | 2020-12-03 | 2023-07-21 | 成都海光集成电路设计有限公司 | Integrated circuit, broadcasting method of integrated circuit, relay module and electronic device |
CN114884765B (en) * | 2022-01-14 | 2024-06-21 | 天地融科技股份有限公司 | PLC bus communication method and system based on relay equipment and relay equipment |
US20230370392A1 (en) * | 2022-05-13 | 2023-11-16 | Xilinx, Inc. | Network-on-chip architecture for handling different data sizes |
CN115102875B (en) * | 2022-07-15 | 2024-04-09 | 深信服科技股份有限公司 | Data packet processing method, device, equipment and medium |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002185503A (en) | 2000-12-11 | 2002-06-28 | Nippon Telegr & Teleph Corp <Ntt> | Packet processing unit and communication system |
US20050117589A1 (en) | 2003-08-13 | 2005-06-02 | Cesar Douady | Method and device for managing priority during the transmission of a message |
US6912225B1 (en) * | 1999-05-21 | 2005-06-28 | Hitachi, Ltd. | Packet forwarding device and packet priority setting method |
US6970466B2 (en) * | 2000-07-11 | 2005-11-29 | Mitsubishi Denki Kabushiki Kaisha | Packet switching apparatus |
US7016366B2 (en) * | 2000-03-22 | 2006-03-21 | Fujitsu Limited | Packet switch that converts variable length packets to fixed length packets and uses fewer QOS categories in the input queues that in the outout queues |
US20070081515A1 (en) * | 2003-10-31 | 2007-04-12 | Koninklijke Philips Electronics N.V. | Integrated circuit and method for avoiding starvation of data |
US20070253410A1 (en) * | 2004-03-08 | 2007-11-01 | Koninklijke Philips Electronics, N.V. | Integrated Circuit and Method for Packet Switching Control |
US7321594B2 (en) * | 2002-12-17 | 2008-01-22 | Semiconductor Technology Academic Research Center | Router apparatus provided with output port circuit including storage unit, and method of controlling output port circuit of router apparatus |
JP2008109534A (en) | 2006-10-27 | 2008-05-08 | Renesas Technology Corp | Packet relay device, and semiconductor chip |
JP2008294865A (en) | 2007-05-25 | 2008-12-04 | Funai Electric Co Ltd | Digital broadcast receiver |
US7525912B2 (en) * | 2000-05-17 | 2009-04-28 | Hitachi, Ltd | Packet shaper |
JP2009253949A (en) | 2008-04-11 | 2009-10-29 | Yamaha Corp | Communicating system, transmitting device and program |
US20100271955A1 (en) * | 2009-04-27 | 2010-10-28 | Hitachi, Ltd. | Communication system |
JP2011229192A (en) | 2010-03-05 | 2011-11-10 | Panasonic Corp | Relay |
US20120072635A1 (en) | 2010-09-03 | 2012-03-22 | Panasonic Corporation | Relay device |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2859942Y (en) * | 2005-12-21 | 2007-01-17 | 浙江大学 | Bus physical repeater of multi-path controller local area network |
JP4796668B2 (en) * | 2009-07-07 | 2011-10-19 | パナソニック株式会社 | Bus control device |
WO2011089899A1 (en) * | 2010-01-25 | 2011-07-28 | パナソニック株式会社 | Semiconductor system, relay apparatus, and chip circuit |
JP5200197B2 (en) * | 2011-03-28 | 2013-05-15 | パナソニック株式会社 | Repeater, repeater control method, and program |
-
2013
- 2013-07-22 WO PCT/JP2013/004449 patent/WO2014017069A1/en active Application Filing
- 2013-07-22 CN CN201380003156.9A patent/CN103828312B/en not_active Expired - Fee Related
- 2013-07-22 JP JP2014501125A patent/JP5838365B2/en not_active Expired - Fee Related
-
2014
- 2014-03-21 US US14/221,619 patent/US9270604B2/en not_active Expired - Fee Related
Patent Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6912225B1 (en) * | 1999-05-21 | 2005-06-28 | Hitachi, Ltd. | Packet forwarding device and packet priority setting method |
US7016366B2 (en) * | 2000-03-22 | 2006-03-21 | Fujitsu Limited | Packet switch that converts variable length packets to fixed length packets and uses fewer QOS categories in the input queues that in the outout queues |
US7525912B2 (en) * | 2000-05-17 | 2009-04-28 | Hitachi, Ltd | Packet shaper |
US6970466B2 (en) * | 2000-07-11 | 2005-11-29 | Mitsubishi Denki Kabushiki Kaisha | Packet switching apparatus |
JP2002185503A (en) | 2000-12-11 | 2002-06-28 | Nippon Telegr & Teleph Corp <Ntt> | Packet processing unit and communication system |
US7321594B2 (en) * | 2002-12-17 | 2008-01-22 | Semiconductor Technology Academic Research Center | Router apparatus provided with output port circuit including storage unit, and method of controlling output port circuit of router apparatus |
US20100296400A1 (en) | 2003-08-13 | 2010-11-25 | Arteris | Method and Device for Managing Priority During the Transmission of a Message |
US20050117589A1 (en) | 2003-08-13 | 2005-06-02 | Cesar Douady | Method and device for managing priority during the transmission of a message |
US8441931B2 (en) * | 2003-08-13 | 2013-05-14 | Arteris Inc. | Method and device for managing priority during the transmission of a message |
US20070081515A1 (en) * | 2003-10-31 | 2007-04-12 | Koninklijke Philips Electronics N.V. | Integrated circuit and method for avoiding starvation of data |
JP2007510345A (en) | 2003-10-31 | 2007-04-19 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Integrated circuit and method for avoiding data deficiency |
US20070253410A1 (en) * | 2004-03-08 | 2007-11-01 | Koninklijke Philips Electronics, N.V. | Integrated Circuit and Method for Packet Switching Control |
JP2008109534A (en) | 2006-10-27 | 2008-05-08 | Renesas Technology Corp | Packet relay device, and semiconductor chip |
JP2008294865A (en) | 2007-05-25 | 2008-12-04 | Funai Electric Co Ltd | Digital broadcast receiver |
JP2009253949A (en) | 2008-04-11 | 2009-10-29 | Yamaha Corp | Communicating system, transmitting device and program |
US20100271955A1 (en) * | 2009-04-27 | 2010-10-28 | Hitachi, Ltd. | Communication system |
JP2011229192A (en) | 2010-03-05 | 2011-11-10 | Panasonic Corp | Relay |
US20120057467A1 (en) | 2010-03-05 | 2012-03-08 | Panasonic Corporation | Relay device |
US20120072635A1 (en) | 2010-09-03 | 2012-03-22 | Panasonic Corporation | Relay device |
Non-Patent Citations (5)
Title |
---|
E. Rijpkema et al., "Trade-offs in the design of a router with both guaranteed and best-effort services for networks on chip", Computers and Digital Techniques, IEE Proceedings-(vol. 150,Issue:5), Sep. 22, 2003. |
Form PCT/ISA/237 for corresponding International Application No. PCT/JP2013/004449 dated Oct. 22, 2013 and partial English translation. |
International Search Report for corresponding International Application No. PCT/JP2013/004449 mailed Oct. 22, 2013. |
Jean-Jacques Lecler and Gilles Baillieu, "Application Driven Network on Chip Architecture Exploration and Refinement for a Complex SoC", Springer Verlag's Design Automation for Embedded Systems Journal, vol. 15, No. 2, pp. 133-158; Apr. 7, 2011. |
John Dielissen et al., "Concepts and Implementation of the Philips Network-on-Chip", 2003. |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11422528B2 (en) | 2019-07-04 | 2022-08-23 | Kokusai Electric Corporation | Substrate processing system, method of manufacturing semiconductor device, and recording medium |
Also Published As
Publication number | Publication date |
---|---|
JP5838365B2 (en) | 2016-01-06 |
CN103828312A (en) | 2014-05-28 |
WO2014017069A1 (en) | 2014-01-30 |
JPWO2014017069A1 (en) | 2016-07-07 |
CN103828312B (en) | 2017-06-30 |
US20140204740A1 (en) | 2014-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9270604B2 (en) | Bus system and router | |
US9025457B2 (en) | Router and chip circuit | |
US9444740B2 (en) | Router, method for controlling router, and program | |
US9094231B2 (en) | Router | |
US9426099B2 (en) | Router, method for controlling router, and program | |
JP6229985B2 (en) | Bus system and computer program | |
US9264371B2 (en) | Router, method for controlling the router, and computer program | |
US9379983B2 (en) | Router, method for controlling router, and computer program | |
US8234435B2 (en) | Relay device | |
US9606945B2 (en) | Access controller, router, access controlling method, and computer program | |
US9436642B2 (en) | Bus system for semiconductor circuit | |
EP4020900B1 (en) | Methods, systems, and apparatuses for priority-based time partitioning in time-triggered ethernet networks | |
CN112804166B (en) | Message receiving and sending method, device and storage medium | |
CN118175111A (en) | Data transmission method, DMA controller, equipment and storage medium | |
CN112822125A (en) | Service flow transmission method, device, equipment and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: PANASONIC CORPORATION, JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TOKUTSU, SATORU;ISHII, TOMOKI;YOSHIDA, ATSUSHI;AND OTHERS;SIGNING DATES FROM 20140310 TO 20140315;REEL/FRAME:033123/0241 |
|
AS | Assignment |
Owner name: PANASONIC INTELLECTUAL PROPERTY MANAGEMENT CO., LTD., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PANASONIC CORPORATION;REEL/FRAME:034194/0143 Effective date: 20141110 Owner name: PANASONIC INTELLECTUAL PROPERTY MANAGEMENT CO., LT Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PANASONIC CORPORATION;REEL/FRAME:034194/0143 Effective date: 20141110 |
|
ZAAA | Notice of allowance and fees due |
Free format text: ORIGINAL CODE: NOA |
|
ZAAB | Notice of allowance mailed |
Free format text: ORIGINAL CODE: MN/=. |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: PANASONIC INTELLECTUAL PROPERTY MANAGEMENT CO., LTD., JAPAN Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY FILED APPLICATION NUMBERS 13/384239, 13/498734, 14/116681 AND 14/301144 PREVIOUSLY RECORDED ON REEL 034194 FRAME 0143. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNOR:PANASONIC CORPORATION;REEL/FRAME:056788/0362 Effective date: 20141110 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20240223 |