Nonlinear traffic shaper with automatically adjustable cost parameters

TWI937226BActive Publication Date: 2026-09-01MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
TW111114629
Authority / Receiving Office
TW · TW
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-05-28
Filing Date
2022-04-18
Publication Date
2026-09-01
Estimated Expiration
2042-04-17

AI Technical Summary

Technical Problem

In networks where congestion feedback is impractical or unavailable, existing traffic shapers struggle to effectively manage network congestion due to the high cost of detecting and distributing congestion status, and the relevance of feedback may not be guaranteed, especially in grid-based networks with multiple clients.

Method used

Implementing a traffic shaping circuit with programmable features that dynamically adjusts packet delivery costs and budget limits based on self-monitoring, using a cost table with records that index delivery rates and thresholds to throttle packet delivery, allowing the system to adapt without external congestion feedback.

Benefits of technology

The system effectively reduces network congestion by throttling packet delivery rates, preventing oversaturation, and adapting to traffic bursts without relying on external feedback, thus optimizing network performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure TWG2TB001908203_001
    Figure TWG2TB001908203_001
  • Figure TWG2TB001908203_002
    Figure TWG2TB001908203_002
  • Figure TWG2TB001908203_003
    Figure TWG2TB001908203_003
Patent Text Reader

Abstract

A traffic shaping circuit regulates the delivery of packets to a network (e.g., an on-chip network) on behalf of a client using transmission resources. It selectively enables or disables packet delivery based on a current budget value. In response to delivering packets to the network, the budget value is modified based on the packet delivery cost. The rate at which packets are delivered to the network is monitored. A cost adjustment signal is generated based on the packet delivery rate. In response to the cost adjustment signal, the packet delivery cost is modified to consider delivering subsequent packets to the network. The cost adjustment signal can indicate an increase or decrease in packet delivery cost and / or budget limits, both read from a cost table containing records sorted based on the corresponding packet delivery cost values. The packet delivery cost and / or budget limits are configurable.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This disclosure relates to a nonlinear flow shaper with automatically adjustable cost parameters. [Previous Technology]

[0002] A network traffic shaper can throttle the rate at which clients (e.g., processors, package schedulers, transmitters, etc.) send information on a network (such as an IP network, Ethernet, or on-chip network). The rate can be controlled in an attempt to avoid congestion. In some networks, network congestion status or flow control information can be provided to the transmitter to determine when to throttle traffic. However, in other networks, congestion or flow control information may be unavailable or impractical for providing traffic shaping purposes. For example, in a mesh-based network with dozens or hundreds of clients simultaneously accessing the mesh, providing feedback to the transmitter about the network congestion status may be impractical because the cost of detecting and distributing this information within the mesh may be too high, and the relevance of this information may not be guaranteed (e.g., when the congestion status in the network changes before the information becomes available). [Summary of the Invention]

[0003] This summary is provided to introduce, in a simplified form, the concept selections that will be further described in the embodiments described below. This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter.

[0004] This document describes methods, systems, and computer-readable media storing code for executing the methods. In one example, a method for shaping traffic is executed in a traffic shaping circuit, the traffic comprising packets delivered to a network (e.g., an on-chip network) on behalf of a client via transmission resources. The method includes selectively enabling or disabling the delivery of packets to the network via transmission resources based on a budget value. In response to the delivery of packets to the network via transmission resources, the budget value may be modified based on the packet delivery cost. The rate at which packets are delivered to the network via transmission resources may be monitored. A cost adjustment signal may be generated based on the rate at which packets are delivered to the network via transmission resources. The packet delivery cost may be modified in response to the cost adjustment signal for delivering subsequent packets to the network via transmission resources.

[0005] Further features and advantages of the embodiments, as well as the structure and operation of each embodiment, are described in detail below with reference to the accompanying drawings. It should be noted that the methods and systems are not limited to the specific embodiments described herein. Such embodiments are provided herein for illustrative purposes only. Additional embodiments will be apparent to those skilled in the art based on the teachings contained herein.

Implementation Method

[0015] I. Preface

[0016] This specification and accompanying drawings disclose one or more embodiments incorporating the features of the disclosed embodiments. The scope of the embodiments is not limited to the forms disclosed herein. The disclosed embodiments are merely illustrative of the intended scope and also cover modified versions of the disclosed embodiments. The embodiments are defined by the appended claims.

[0017] The use of terms such as "one embodiment," "an embodiment," and "an example embodiment" in the specification indicates that the described embodiment may include a specific feature, structure, or characteristic, but each embodiment may not necessarily include that specific feature, structure, or characteristic. Furthermore, such phrases do not necessarily refer to the same embodiment. Additionally, when a specific feature, structure, or characteristic is described in connection with an embodiment, it is proposed that, whether explicitly described or not, implementing that feature, structure, or characteristic in conjunction with other embodiments would be within the knowledge of those skilled in the art.

[0018] Furthermore, it should be understood that the spatial descriptions used herein (e.g., "above", "below", "up", "left", "right", "down", "top", "bottom", "vertical", "level", etc.) are for illustrative purposes only, and the actual implementation of the structures described herein may be spatially arranged in any orientation or manner.

[0019] In the discussion, unless otherwise stated, adjectives (such as “substantially” and “about”) that modify one or more features of the embodiments disclosed herein will be understood to mean that the condition or feature is defined within an acceptable tolerance for operation of the intended embodiment of the application.

[0020] Several exemplary embodiments are described below. It should be noted that any section / subsection headings provided herein are not intended to be limiting. Embodiments are described throughout this document, and embodiments of any type may be included under any section / subsection. Furthermore, embodiments disclosed in any section / subsection may be combined in any manner with any other embodiments described in the same section / subsection and / or different sections / subsections. II. Example Embodiments

[0021] This disclosure relates to shaping traffic transmitted to a network (such as a chip network) to adaptively reduce network congestion. Generally, a traffic shaper can throttle the rate at which data from clients (e.g., CPU cores, processing engines, memory controllers, cache memory, peripheral component interconnect express (PCIe) bridges, packet schedulers, etc.) is transmitted over the network. Generally, in some traffic shaping systems, traffic congestion or flow control information can be received from external nodes, allowing the transmission rate to be adjusted based on external conditions. However, in other systems, congestion or flow control information may be unavailable or impractical for traffic shaping purposes. For example, in a mesh-based network with dozens or hundreds of clients simultaneously accessing the mesh, providing congestion status feedback for flow control may be impractical due to the high cost of detecting and allocating such information. Furthermore, the relevance of such information may not be guaranteed when it is available for flow control. In such cases, it may be desirable to implement the flow shaper disclosed herein to alter its behavior, which has a high degree of configurability for self-monitoring and throttling.

[0022] The traffic shaper can utilize a credit-based system, where the shaper maintains a transaction budget, and as packets are delivered, the budget is reduced by the cost of packet delivery (e.g., packet delivery cost or transaction cost). For example, the packet delivery cost may be proportional to the length of a specific transmission or the relative weight of the client requesting the transaction compared to its peers. Clients are allowed to deliver packets as long as the budget is above a certain threshold (e.g., the cost of a transaction). The budget can be supplemented by adding delivery credits, and the budget can be limited to a certain upper limit.

[0023] In this disclosure, a flow shaping circuit (i.e., a flow shaper) with programmable features is described. The flow shaper allows for automatic and dynamic modification of shaper parameters (e.g., packet delivery cost and budget limits, etc.) that can effectively throttle the rate at which packets are delivered into the network. The shaper may include a cost table with a plurality of records, each of which may include a corresponding cost value for delivering packets into the network and / or a corresponding budget limit (e.g., a maximum budget level) for enabling and disabling packet delivery. Each cost table record may be indexed by a dynamic read index that can be increased or decreased to change the current set of parameters utilized by the flow shaping circuit. In addition to cost and budget limits, each table record may store parameters for monitoring the rate of transmission activity and indicating when the read index should increase to the next higher table record (e.g., store a higher cost or the same cost), or for indicating inactivity (e.g., idle cycle) causing the read index to decrease to the next lower table record (e.g., store a lower or the same cost). In one embodiment, an incrementing read metric (e.g., increasing cost) can be managed by exceeding the number (M) of packets transmitted in several (N) clock cycles. A decrementing read metric (e.g., decreasing cost) can be managed based on a number (P) of clock cycles (e.g., clock cycles without packet transmissions) that are idle. M, N, and P can all be stored in a cost table record. The table records are sortable. In one instance, the table records can be sorted based on the relative increase in cost. The read metric may not wrap around the table boundaries, and the initial read metric value may be configurable.

[0024] Regardless of the cost of packet delivery, in some embodiments, the traffic shaping circuitry may utilize time-segment timers and segment credits to add credits to the budget over time. The time-segment timers and segment credit inputs may be programmable. In some embodiments, a congestion controller with global (albeit potentially outdated) congestion measurements across the network may be used to modify time-segment times and segment credits to reduce client traffic across the entire network architecture (e.g., a mesh architecture).

[0025] Using a cost table and index values ​​to automatically (e.g., programmably) increase or decrease to change the cost of packet delivery allows a requesting client to receive data to experience a short pulse at each packet delivery cost level before being penalized and its delivery rate reduced (e.g., by increasing the cost per transmission). In a full-mesh implementation, the same network link can be shared by several clients, so continuous short pulses of traffic should likely be blocked by network ingress. Therefore, the non-linear behavior of this traffic shaper can be highly efficient in reducing traffic congestion.

[0026] Embodiments for dynamically shaping packet traffic in a network can be implemented in various ways. For example, Figure 1 is a block diagram of a system 100 according to an example embodiment, including traffic shaping circuitry for dynamically adjusting transmissions to an on-chip internet of things. As shown in Figure 1, system 100 includes a plurality of traffic shaping circuits 102, a plurality of clients 104, a plurality of transmission resources 106, a plurality of network ingress paths 108, an on-chip internet of things 110, a plurality of nodes 112, and a plurality of network links 114. Each network ingress path 108 includes a traffic shaping circuit 102 and a transmission resource 106, such as a first-in-first-out queue or a buffer. System 100 is described in detail below.

[0027] In some embodiments, system 100 may include a system on a chip (SOC) that includes a chip-on-a-network 110. The chip-on-a-network 110 may be configured to route traffic between components within the SOC. In some embodiments, the SOC may include a CPU and may be implemented within an electronic device, such as a computing and / or communication device (e.g., the SOC may include a data center processor). Although the network described with respect to Figure 1 is referred to as chip-on-a-network 110, this disclosure including traffic shaping circuitry 102 can be implemented in any suitable type of network, such as IP networks, Ethernet networks, wireless networks, chip-on-a-networks, etc. In addition, System 100 may be implemented in the following: SOC, desktop computer or personal computer, mobile computing device (e.g., Microsoft® Surface® device, personal digital assistant (PDA), laptop, notebook computer, tablet computer (such as Apple iPad™), netbook, etc.), mobile phone (e.g., cellular phone, smartphone (such as Apple iPhone), phone running Google® Android™ operating system; Microsoft® Windows phone, etc.), wearable computing device (e.g., head-mounted device, including smart glass, such as through Oculus VR, Google® Glass™, Oculus Rift®, etc.), game console / system (e.g., Nintendo Switch®, etc.), application, set-top box, etc.

[0028] The on-chip Internet 110 may include a plurality of nodes 112 communicatively coupled via a plurality of links 114, which provide interconnection for communication among a plurality of clients within the SOC. Each node 112 may include internal connections configured to couple a set of input links 114 to a set of output links 114. Although the on-chip Internet 110 is illustrated in Figure 1 as a type of mesh network, this disclosure is not limited to any specific network topology. For example, the traffic shaping circuitry 102 may be network-agnostic and may be implemented in networks with any suitable network topology (e.g., two-dimensional, n-dimensional, n-cubic, or k-element n-cubic mesh, star, linear, ring, tree, etc.). The on-chip Internet 110 may include restricted or oversubscribed interconnections between multiple clients. For example, if each client 102 attempts to send messages to each other simultaneously, the network may be unable to keep up with the traffic processing, which can lead to network congestion. In some embodiments, a plurality of clients coupled to the on-chip network 110 may utilize circuitry (such as traffic shaping circuitry 102) to regulate their own packet delivery. Generally, traffic shaping circuitry 102 is configured to manage traffic in the network, where clients may be eager and could overwhelm the network. For example, continuous short pulses of packet delivery from a single client constantly attempting to inject traffic into the network can oversaturate the network. Traffic shaping circuitry 102 implemented in conjunction with the client can throttle client transmissions to the on-chip network 110 and reduce excessive short pulses of packet delivery.

[0029] Each client 104 may include a device or node configured to transmit packets to a plurality of similar or various types of clients via transmission resource 106 and on-chip network 110, such clients also being coupled to on-chip network 110. As shown in Figure 1, there may be a plurality of clients 104 sharing transmission resource 106 and managed by a single traffic shaping circuit 102. In some embodiments, client 104 may include a processing engine (e.g., a CPU core) or an entity providing data for transmission, such as a memory controller or cache (e.g., L2 cache, L3 cache, L4 cache), PCIe bridge, etc. For example, client 104 may provide data for commands to be transmitted on on-chip network 110 to another client, or may request such data, or may provide the data itself for transmission via transmission resource 106.

[0030] Transmission resource 106 is communicatively coupled to client 104 and traffic shaping circuitry 102, and may contain any suitable logic, circuitry, interface, and / or code configured to connect client 104 to the on-chip network 110, for example, via network access path 108, and control packet transmission from client 104 to another client coupled to the on-chip network 110. In some instances, transmission resource 106 may include a first-in, first-out queue or buffer for storing messages until the network accepts them. Transmission resource 106 may also include circuitry for selecting routing paths or otherwise adapting or classifying messages for transmission on the on-chip network 110.

[0031] Network entry path 108 may include a communication link from transmission resource 106 to one or more nodes 112 and / or one or more links 114 in the on-chip Internet 110. Packet delivery may include data transmission (e.g., transmission unit or message) from client 104 to another client coupled to the on-chip Internet 110. Packet delivery may be referred to as delivery, transaction, or transport. In some embodiments, each client 104 coupled to the on-chip Internet 110 may have its own network entry path 108 and shaping circuitry system 102. Alternatively, network entry path 108 and shaping circuitry 102 may be coupled to multiple clients 104 and support communication between multiple clients 104, wherein the delivery cost function may be adjusted for each client or client type.

[0032] Based on feedback from transmission-side measurements rather than from the network or receiver side (e.g., congestion notifications, round-trip delays, etc.), the traffic shaping circuit 102 can be configured to control the timing or rate at which packets are transmitted to the on-chip network 110 by adjusting the cost of transmitting packets relative to the budget (and other traffic control parameters). Generally, the traffic shaping circuit 102 can be located at or within the ingress of the network between the client and the router, and can throttle network access by demanding clients that might otherwise consume excessive network resources. In other words, the traffic shaping circuit 102 can be configured to make decisions about when and / or at what rate packets are transmitted on behalf of the client 104 to control the amount of traffic on the on-chip network 110.

[0033] The flow shaping circuit 102 can operate in various ways to perform its function. For example, Figure 2 is a flowchart 200 of a method for controlling packet delivery rate by dynamically adjusting packet delivery cost and / or budget parameters according to an example embodiment. In one embodiment, the flow shaping circuit 102 can operate according to flowchart 200. Flowchart 200 is described below with reference to Figures 1, 3, and 7.

[0034] Figure 3 is a block diagram of a system 300 according to an example embodiment, illustrating the functions performed by a traffic shaping circuit that dynamically adjusts transmission costs and / or budget parameters. For example, system 300 includes a traffic shaping circuit 102, a client 104, transmission resources 106, a network ingress path 108, transmission enablement logic 310, traffic monitoring logic 312, a cost adjustment controller 314, and traffic gating logic 316. System 300 further includes transmission enablement 322, transmission notification 324, cost adjustment signal 326, packet transmission cost 328, cost table 330, packet transmission credit 332, budget credit cycle 334, budget limit 336, transmission rate threshold 338, and idle time threshold 340.

[0035] Figure 7 is a block diagram of a system 700 according to an example embodiment, which includes a flow shaping circuit that dynamically adjusts packet delivery costs and / or budget limit parameters. System 700 particularly includes a flow shaping circuit 102, a client 104, a transmission resource 106, delivery enabling logic 310, flow monitoring logic 312, a cost adjustment controller 314, and flow gating logic 316. System 700 further includes a delivery enabling 322, a delivery notification 324, cost adjustment signals 326A and 326B, a packet delivery cost 328, a cost table 330, packet delivery credits 332, a budget credit cycle 334, a budget limit 336, a delivery count threshold 502, a delivery cycle count threshold 504, and an idle time threshold 340. The system 700 also illustrates multiplexer 712, multiplexer 714, budget register 716, idle cycle counter 720, packet transfer counter 722, and transfer cycle counter 724.

[0036] In some embodiments, systems 300 and 700 may be implemented within system 100. For illustrative purposes, systems 300 and 700 are described in detail below with reference to flowchart 200 of Figure 2.

[0037] Flowchart 200 begins at step 202. In step 202, the packet delivery cost and / or budget limit for delivering packets to the on-chip network on behalf of the client using transmission resources are determined. Delivery enable logic 310 can be configured to store and determine a budget value 320. The budget value 320 can be used to determine whether to enable packet delivery. For example, if the budget value 320 drops too low, packet delivery can be disabled. For each packet delivered to the on-chip network 110, the value of the packet delivery cost 328 can be deducted from the budget value 320 (e.g., the packet delivery cost 328 can be stored as a negative value). In addition, one or more packet delivery credits 332 can be added to the budget value 320 at a budget credit cycle 334, which can be received by the delivery enable logic 310 as a timing signal (e.g., a programmable timer can output the budget credit cycle 334). In some cases, credits and costs can be applied concurrently to budget value 320 (e.g., the value of packet delivery credit 332 minus packet delivery cost 328 can be added to budget value 320). In some embodiments, budget value 320 can be limited to budget limit 336, such that if adding the amount of packet delivery credit 332 to budget value 320 results in budget value 320 being greater than budget limit 320, then budget limit 320 can be stored as budget value 320 without adding the value of packet delivery credit 332 to the budget. A plurality of packet delivery cost 328 values ​​and / or a plurality of budget limit 336 values ​​can be stored in cost table 330, and the current values ​​used for packet delivery cost 328 and / or budget limit 336 in delivery enablement logic 310 can be determined by reading records from cost table 330.

[0038] In step 204, the rate at which packets are transmitted via transmission resources is monitored. For example, transmission resource 106, representing client 104, may be configured to transmit packets to network ingress 108 and on-chip network 110. Traffic control logic 316 may be configured to facilitate handshake between client 104 and transmission resource 106 for each packet transmission and may provide a transmission notification 324 to transmission monitoring logic 312 each time a packet transmission is acknowledged. Traffic monitoring logic 312 may be configured to determine the packet transmission rate and / or the idle period of transmission resource 106 based on the signal of transmission notification 324.

[0039] In step 206, the packet delivery cost and / or budget limit are modified for subsequent packet deliveries performed via transmission resource 106 based on the monitored packet delivery rate. For example, traffic monitoring logic 312 may be configured to analyze the packet delivery rate based on delivery notification signal 324, and depending on the rate, traffic monitoring logic 312 may transmit cost adjustment signal 326 (or cost adjustment signal 326A in Figure 7) to cost adjustment controller 314. In this regard, if the measured packet delivery rate exceeds the delivery rate threshold 338 (described in more detail with respect to Figures 4, 5, and 7), traffic monitoring logic 312 may transmit cost adjustment signal 326 (or 326A). Cost adjustment controller 314 may be configured to modify the value of packet delivery cost 328 and / or budget limit 336 based on cost adjustment signal 326 (described in more detail with respect to Figures 4 and 5). When adjusting the budget value 320 for one or more subsequent packet deliveries via transmission resource 106, a modified value for the packet delivery cost 328 and / or the budget limit 336 can be applied. In this way, if the packet delivery cost 328 increases, the packet delivery rate can decrease, causing the budget 320 to be exhausted more quickly with each packet delivery incurring a higher cost. Alternatively or further, if the budget limit 336 decreases, the packet delivery rate can decrease, as this can also cause the budget 320 to be exhausted more rapidly by limiting the budget value to a lower level compared to previous deliveries. In other words, by increasing the packet delivery cost 328 and / or decreasing the budget limit 336, the packet delivery rate can be reduced (or throttled) as packet delivery is temporarily disabled, and more frequently disabled over time. Therefore, the continuous short pulses of packet transmission from client 104 can be adjusted to avoid oversaturation of the on-chip network 110, wherein the flow shaping circuit 102 self-adjusts in response to the short pulses of packet transmission occurring in the transmission resource 106 (e.g., in the absence of knowledge of how the remaining portion of the on-chip network 110 will handle the flow).

[0040] The cost adjustment controller 314 can operate in various ways to perform its functions. For example, Figure 4 is a block diagram of a system 400 including a cost adjustment controller according to an example embodiment, the cost adjustment controller having a cost table for storing parameters of the shaped packet transmission rate. Furthermore, Figure 5 is a block diagram of a system 500 including the cost table of Figure 4 and the storage parameters for the shaped packet transmission rate according to an example embodiment.

[0041] In some embodiments, systems 400 and 500 may be implemented within systems 100, 300, and / or 700. For illustrative purposes, systems 400 and 500 are described in detail below.

[0042] In some embodiments, system 400 may include a cost adjustment controller 314, a delivery enablement logic 310, and a flow monitoring logic 312. The cost adjustment controller 314 may include a cost table 330 and a cost table read index generator 412. The cost table 330 may include a plurality of records, including records 420, 422, 424, 426, 428, and 430, which may be referred to as records 420-430.

[0043] In some embodiments, system 500 may include a cost table 330 and records 420-430. Records 420-430 may each contain a corresponding set of parameters, wherein each corresponding set of parameters may contain one or more of a packet delivery cost 328, a budget limit 336, a delivery rate threshold 338, and an idle time threshold 340. The delivery rate threshold 338 may be represented in various ways. For example, in some embodiments, the delivery rate threshold 338 may include separate parameters for counting and time periods, wherein each separate parameter may be stored in cost table 330 as a delivery count threshold 502 and a delivery cycle count threshold 504.

[0044] Although six index records 420-430 are displayed in cost table 330 and five parameters 328, 336, 502, 504, and 340 are displayed in each index record, in some embodiments, cost table 330 may contain fewer or more records of parameters, and each record of cost table 330 may contain fewer or more parameters.

[0045] In some embodiments, records 420-430 may be stored and / or indexed in a specified order in cost table 330. For example, records 420-430 may be sorted based on the value of their respective packet delivery costs. Cost table read index generator 412 may be configured to selectively output higher or lower packet delivery costs from cost table 330 based on an indication of cost adjustment signal 326 (e.g., 326A for higher costs and 326B for lower costs) and the order in which records 420-430 are modified to modify packet delivery costs. In some embodiments, the lowest record index (e.g., record 420) may store the value of the lowest delivery cost 328, and as the index (or index address) increases (e.g., from record 420 to 430), each consecutive record may store the value of the increased delivery cost 328. In this way, packet delivery costs 328 may be increased or decreased by incrementing or decrementing the index address generated by cost table read index generator 412. The cost adjustment signal 326 can indicate whether the index address should be incremented or decremented. Referring to Figure 7, in some embodiments, the cost adjustment signal 326 may include two separate signals 326A and 326B, where 326A indicates that the index address should be incremented (e.g., to point to a higher packet delivery cost value) and 326B indicates that the index address should be decremented (e.g., to point to a lower packet delivery cost value). However, this disclosure is not limited to any specific way of sorting the records in the cost table 330, or any specific way of using a read index from the cost table read index generator 412 to select a particular packet delivery cost 328.

[0046] In some embodiments, the records in the cost table 330 may be sorted or categorized based on the value of the budget limit 336, such that the cost adjustment signal 326 may directly indicate whether the budget limit 336 should be increased or decreased to shape the packet transmission rate of the client 104 for transmitting subsequent packets to the on-chip network 110.

[0047] The cost adjustment controller 314 can be configured to output parameter values ​​from records in the cost table 330, which are pointed to by the cost table read index generator 412, to enable packet delivery and generate cost adjustment signals 326 (e.g., 326A and 326B). For example, the cost adjustment controller 314 can read selected records and transmit the corresponding packet delivery cost 328 and / or budget limit 336 to the delivery enable logic 310. The corresponding delivery rate threshold 338 (or the delivery count threshold 502 and the delivery cycle count threshold 504) and idle time threshold 340 (described in more detail below) for the same record can be transmitted to the flow monitoring logic 312 to monitor the packet delivery rate and the length of time that the delivery resource 106 can be idle.

[0048] In some embodiments, the values ​​of the parameters stored in the cost table 330 may be configurable (e.g., packet delivery cost 328, budget limit 336, delivery rate threshold 338 (or delivery count threshold 502 and delivery cycle count threshold 504), and idle time threshold). Referring to the example in Figure 7, when parameter values ​​and / or aggregate value signals are received based on the cost table configuration and status register (CSR), the values ​​of packet delivery cost 328, budget limit 336, idle time threshold 340, delivery count threshold 502, delivery cycle count threshold 504, and idle time threshold 340 may be configured in the cost table 330 at the record pointed to by the cost table read index generator 412.

[0049] The flow shaping circuit 102 can operate in various ways to perform its function. For example, Figure 6 is a flowchart 600 of a method for dynamically adjusting transmission to an on-chip network according to an example embodiment. Flowchart 600 can be performed as part of flowchart 200 (Figure 2), such as starting at step 202. In one embodiment, the flow shaping circuit 102 can operate according to flowchart 600. Flowchart 600 is described below with reference to Figures 1, 3, 4, 5, and 7.

[0050] Flowchart 600 includes step 602. In step 602, the delivery of packets to the on-chip network via transmission resources can be selectively enabled or disabled based on a budget value. As described above, a budget value 320 can be used to determine whether to enable packet delivery, such that if the budget value 320 drops too low, packet delivery can be disabled (therefore, network traffic is stopped or slowed down). The budget value 320 can reduce the current delivery cost 326 of each packet delivered to the on-chip network 110, and can be increased together with packet delivery credit 332 at each budget credit cycle 334. If both conditions occur concurrently, both credit and cost can be applied to the budget value 320. Furthermore, the budget value 320 can be limited to a budget limit 336, which can be configurable as a per-packet delivery cost level. Limiting the budget value 320 at the budget limit 336 can provide a level for configuring short-pulse tolerances allowed for client 104. This can be useful when the budget value 320 may not be used for several cycles and then suddenly causes a surge in demand. By providing a configurable budget limit 336, short pulses can be transmitted using a smaller number of shaping resource limits provided in the flow shaping circuit 102.

[0051] In one embodiment, the budget value 320 may be accumulated and stored in a budget register 716, which may include one or more D flip-flops (e.g., see Figure 7). Although only one budget register 716 is illustrated in the example of Figure 7, there may be multiple budget registers 716 storing the budget value 320. The most significant bit (MSB) output from the budget register 716 may indicate whether a pass is enabled (e.g., zero MSB may indicate no pass, and one MSB may indicate an enabled pass). In this example, if there are seven D flip-flops storing the budget value 320, the MSB may indicate enabling packet pass for budget values ​​64-127 and de-enabling for budget values ​​63 or lower. However, as described above, the value stored as budget value 320 can be limited at the high end by budget limit 336, enabling packet transmission in this instance, where budget value 320 varies from 64 to the current value of budget limit 336. Nevertheless, this disclosure is not limited to any specific range of budget value 320 or any specific type of storage device for budget value 320.

[0052] As described above, cost table 330 may store values ​​of a plurality of packet delivery costs 328 and / or values ​​of a plurality of budget limits 336, wherein the current values ​​used in the delivery enablement logic 310 for packet delivery costs 328 and / or budget limits 336 may be determined by reading records from cost table 330 based on cost adjustment signal 326. Budget values ​​320 may be updated due to various events. Referring to the example shown in Figure 7, in response to a timing signal for receiving budget credit cycle 334, multiplexer 712 may be configured to select packet delivery credit 332 as an output from the multiplexer. In some embodiments, the time interval of budget credit cycle 334 and / or the credit value of packet delivery credit 332 may be programmable (e.g., via configuration and status register (CSR)). In response to the packet delivery notification 324, multiplexer 712 can be configured to select the current delivery cost 328 as its output, which can be indicated by the read index of cost table read index generator 412. In response to the output of the concurrent budget credit cycle 334 and the packet delivery notification 324, multiplexer 712 can be configured to select the value of packet delivery credit 332 minus the current delivery cost 328 as its output. Furthermore, in the absence of both the output of the budget credit cycle 334 and the packet delivery notification 324, multiplexer 712 can be configured to select zero as its output. The output of multiplexer 712 can be added to the current budget value 320, and if the sum of the output of multiplexer 712 and the current budget value 320 is greater than the budget limit 336, then multiplexer 714 can be configured to select the budget limit 336 as the multiplexer output, which can be entered as the new budget value 320 into the budget register 716 (e.g., a D flip-flop). If the sum of the output of multiplexer 712 and the current budget value 320 is not greater than the budget limit 336, then multiplexer 714 can be configured to select the sum of the output of multiplexer 712 and the current budget value 320 as the output of multiplexer 714, which can be entered as the new budget value 320 into the budget register 716 (e.g., a D flip-flop).

[0053] In the example shown in Figure 7, the value of the pass enable 322 may also depend on whether the flow shaping circuit 102 is enabled to perform its function. For example, if the shaper enable input signal is low, indicating that the flow shaping circuit 102 is disabled, then the pass enable 322 will remain high, so that the enable is maintained by packet transmission through the client 104 and the transmission resource 106 without adjustment by the flow shaping circuit 102. On the other hand, if the shaper enable input signal is high, indicating that the flow shaping circuit 102 is enabled, then the output of the pass enable 322 may depend on the MSB of the budget value 320.

[0054] In step 604, in response to delivering packets to the on-chip network via transmission resources, the budget value can be modified based on the packet delivery cost. For example, as described above, traffic gating logic 316 can be configured to facilitate handover between client 104 and transmission resource 106 for delivering packets to on-chip network 110. In the example shown in Figure 7, client 104 can indicate when valid data is available for delivery, and in response, traffic gating logic 316 can communicate data readiness to transmission resource 106 if delivery enable 322 indicates that packet delivery is enabled. Furthermore, transmission resource 106 can indicate when it is ready (e.g., resource ready) to deliver packets to network ingress path 108 of on-chip network 110. Traffic gating logic 316 can be configured to output packet delivery notification 324 when both data readiness and resource readiness are high. Packet delivery notification 324 can indicate that a packet containing valid data has been transmitted to network ingress path 108 and / or delivered to on-chip network path 110. As described above, packet delivery notification 324 can be sent to delivery enable logic 310 and can cause budget value 330 to decrease by up to the currently selected packet delivery cost 328 from cost table 330, which can be indicated by the read index of cost table read index generator 412.

[0055] In step 606, the rate at which packets are delivered to the chip network via the transmission resources can be monitored. For example, as described above, the traffic monitoring logic 312 can be configured to determine the packet delivery rate and / or the idle period of the transmission resource 106 based on the signal of the delivery notification 324. In the example shown in Figure 7, the delivery monitoring logic 312 may include a packet delivery counter 722 and a delivery cycle counter 724, and may receive a delivery rate threshold 338 from a record in the cost table 330 based on the current read index value of the cost table read index generator 412. In some embodiments, the delivery rate threshold may include a delivery count threshold 502 and a delivery cycle threshold 504. The packet delivery counter 722 can be configured to increment each time a signal of the packet delivery notification 324 is received from the traffic gating logic 316. The delivery cycle counter 724 can be configured to count delivery clock cycles until it reaches the delivery cycle threshold 504 or until the counter is cleared in response to the packet delivery notification 324. After being cleared, the pass-through cycle counter 724 can start counting again.

[0056] The transmission monitoring logic 312 may include an idle cycle counter 720 and receive a transmission cycle threshold 504 from records in the cost table 330 based on the current read metric value of the cost table read metric generator 412. The idle cycle counter 720 may be configured to increment at each transmission clock cycle while the transmission resource 106 remains idle or waits to deliver the next packet to the network ingress path 108. The idle cycle counter 720 may be cleared (or reset) when a packet is delivered to the network ingress path 108 (e.g., based on a received packet delivery notification 324).

[0057] In step 608, the cost adjustment signal may be generated based on the rate at which packets are delivered to the chip network via transmission resources. In the example of Figure 7, the traffic monitoring logic 312 may be configured to compare the current packet delivery count from the packet delivery counter 722 with the current delivery count threshold 502 from the cost table 330, and if the delivery count 722 becomes equal to the delivery count threshold 502 before the count of the delivery cycle counter 724 matches the delivery cycle threshold 504, the traffic monitoring logic 312 may be configured to transmit the cost adjustment signal 326 or 326A to the table read index generator 412 (e.g., for incrementing the read index of the cost table read index generator 412). Furthermore, the flow monitoring logic 312 can be configured to compare the count value of the delivery cycle counter 724 with the current delivery cycle threshold 504 from the cost table 330, and if the count of the delivery cycle counter 724 becomes equal to the delivery cycle threshold 504 before the packet delivery count from the packet delivery counter 722 becomes equal to the delivery count threshold 502, the flow monitoring logic 312 can be configured to clear (e.g., reset) the packet delivery counter 722 and the delivery cycle counter 724, and start counting packet deliveries (e.g., packet delivery notification 324) and the delivery clock cycle again without generating the cost adjustment signal 326 (e.g., maintaining the same read index output from the cost table read index generator 412).

[0058] Furthermore, the traffic monitoring logic 312 may be configured to compare the current count of the idle cycle counter 720 with the current idle time threshold 340 from the cost table 330, and if the current idle cycle count 720 becomes equal to the idle time threshold 340, the traffic monitoring logic 312 may be configured to transmit a cost adjustment signal 326 or a cost adjustment signal 326B to the cost table read index generator 412 (e.g., for decrementing the read index of the cost table read index generator 412). In some embodiments, other cost reduction mechanisms may be implemented. For example, the traffic monitoring logic 312 may be configured to compare the packet delivery rate with a low delivery rate threshold to determine when to transmit the cost adjustment signal 326 to decrement the read index of the cost table read index generator to reduce the packet delivery cost 328.

[0059] In step 610, the packet delivery cost may be modified in response to a cost adjustment signal for delivering subsequent packets to the chip network using transmission resources. For example, the current packet delivery cost 328 may be modified by reading a higher or lower packet delivery cost 328 from the cost table 330 for use in the delivery enable logic 310. As described above, in the example of Figure 7, in response to the count value of the delivery counter 722 becoming equal to the delivery count threshold 502 before the count of the delivery cycle counter 724 matches the delivery cycle threshold 504, the traffic monitoring logic 312 may transmit a cost adjustment signal 326 or 326A to the table read indicator generator 412. Therefore, this cost adjustment signal 326 or 326A may instruct the read indicator of the cost table read indicator generator 412 to increment, which may result in reading a higher packet delivery cost 328 value from the cost table 330. In another example, as described above, in response to the current count of the idle cycle counter 720 becoming equal to the idle time threshold 340, the traffic monitoring logic 312 may transmit a cost adjustment signal 326 or a cost adjustment signal 326B to the cost table read indicator generator 412. Therefore, this cost adjustment signal 326 or 326B may instruct the read indicator of the cost table read indicator generator 412 to decrement, which may result in a lower packet delivery cost 328 value being read from the cost table 330. The delivery enable logic 310 may be configured to utilize a higher or lower packet delivery cost 328 value (e.g., an adjusted cost value) in response to receiving a subsequent packet delivery notification 324 when applying a cost reduction to the budget value 320. For example, in response to the delivery of subsequent packets to the on-chip network 110 via transmission resource 106, the delivery enable logic 310 can be configured to modify the budget value 320 based on the adjusted packet delivery cost 328, for selectively enabling or disabling the delivery of additional subsequent packets to the on-chip network 110 via transmission resource 106. The behavior of the shaper caused by changes in read metrics and different cost table entries can be non-linear in time and depends on the sequence of transmissions generated by the client.

[0060] As described above, in some embodiments, entries in cost table 330 may be configured such that the lowest address in the table contains the value of the lowest packet delivery cost 328 and any higher address has a cost value that has not decreased (e.g., each additional record index stores the same or higher cost value compared to the previous record). In this configuration, short pulses of packet traffic may result in an increased table read index value and a higher value of the selected packet delivery cost 328, while increasing the transmitter idle period may result in a lower table read index value and a lower value of the selected packet delivery cost 328 from cost table 330. Various models may be used to generate packet delivery cost changing patterns (e.g., for increasing or decreasing packet delivery costs). For example, an exponential cost changing pattern or a linear type of cost changing pattern may be utilized. In an example of an exponential pattern, the relative packet delivery cost in consecutive records of cost table 330 may be double the cost of the previous record. In an example of a linear pattern, the value of each packet delivery cost 328 in cost table 330 may be proportional to its record index plus a constant value. The high end of the budget limit 336 and / or budget value 320 range can also be modified to control flow short pulses and modify short pulse tolerances. In this respect, the flow shaping circuit can be highly configurable to adjust in response to its own flow short pulses, without having global awareness of the flow on the chip network 110. Depending on how the parameters of cost table 330 are configured, the flow shaping behavior can be linear or non-linear.

[0061] Example linear and exponential cost adjustments are provided below and presented using Python. The table read index can be incremented from zero to a certain number of records in cost table 330 based on the variable "i". The term "M" can represent the number (M) of packets transmitted in a time-period clock cycle of a quantity "N", used to increment the table read index. The term "P" can represent a certain number of idle clock cycles (e.g., clock cycles without packet transmission), used to decrement the table read index. M, N, and P can all be stored in cost table records. III. Example SOC Implementation

[0062] The embodiments described herein may be implemented in hardware, or hardware combined with software and / or firmware. For example, the embodiments described herein may be implemented as computer code / instructions configured to execute in one or more processors and stored in a computer-readable storage medium. Alternatively, the embodiments described herein may be implemented as a hardware logic / electrical circuit system.

[0063] As mentioned herein, the described embodiments (including, but not limited to, systems 100, 300, 400, 500, and 700 together with any components and / or sub-components thereof), and any operation and portion thereof of the flowcharts / flowcharts described herein and / or further examples described herein, may be implemented in hardware, or hardware having any combination of software and / or firmware, including as computer code configured to execute on one or more processors and stored in a computer-readable storage medium, or as hardware logic / electrical circuitry systems, such as together in a system-on-a-chip (SoC), a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), a trusted platform module (TPM), and / or the like. A SoC may include an integrated circuit chip that includes a processor (e.g., a microcontroller, microprocessor, digital signal processor (DSP) etc.), memory, one or more communication interfaces, and / or additional circuitry and / or embedded firmware to perform one or more of its functions.

[0064] The embodiments described herein may be implemented in one or more computing devices similar to mobile systems and / or computing devices in fixed or mobile computer embodiments, including one or more features of the mobile systems and / or computing devices described herein, as well as alternative features. The description of the computing devices provided herein is provided for illustrative purposes and is not intended to be limiting. Embodiments may be implemented in other types of computer systems, as will be known to those skilled in the art.

[0065] Referring again to Figure 7, the flow shaping circuit 102 can be implemented in an SOC that includes the on-chip network 110. A budget register 716 can store a budget value 320, which can accumulate over time based on a budget credit cycle 334 output from a programmable timer. Each time the timer expires, a programmable amount of packet delivery credit 332 can be added to the budget 320. For each packet delivery sent to the on-chip network 110, the value of the current delivery cost 328 can be generated and subtracted from the budget value 320. Once the budget value 320 falls below its low threshold, the flow shaping circuit 102 may allow additional flow at the network ingress path 108 until the next timer expires. The budget register 716 can store the budget value 320, which can include a user-defined bit width. The MSB of the budget value 320 output from the budget register 716 can indicate whether packet delivery is enabled (e.g., it can indicate that the low threshold of the budget value 320 is half the numerical range of the budget value 320). Using the MSB as the low threshold of the budget value 320 simplifies the critical path timing for data validity and data readiness handover in the flow gating logic 316, and simplifies the critical path timing for feedback toward other parts of the flow shaping circuitry 102 (e.g., flow monitoring logic 312 and delivery enable logic 310) compared to threshold comparison circuitry involving more bits.

[0066] The adjustable packet delivery cost 328 provides better tuning of the packet delivery rate at the network ingress path 108. To implement the adjustable packet delivery cost 328, a cost table 330, which can contain a user-definable size, is provided to allow for many different configurations. Each record 420-430 in the cost table 330 can store several parameters that define the operation of the traffic shaping circuit 102. In one instance, the records can be arranged from the lowest packet delivery cost (record 0) to the highest cost (record N), and the current cost index (e.g., the current record selection of the cost table read index generator 412) can be controlled based on monitored packet traffic behavior (e.g., packet delivery notification 324) and the configuration of the cost table 330. The cost table index selection can be incremented, which in turn can reduce the packet delivery rate as the traffic shaping circuit 102 allows more deliveries. Furthermore, the cost table index selection can be decremented to simplify the limitation on subsequent packet deliveries, as idle cycles accumulate over time without packet deliveries. Each record in cost table 330 may include fields containing parameters such as (e.g., where the cost value may generally not decrease for increasing the cost index). Packet delivery cost 328 may specify the cost to be subtracted from budget value 320 for each allowed packet transaction. Budget limit 336 may specify a limit value (e.g., a maximum budget value) that indicates the point at which budget register 716 saturates. This limit value may determine how long the flow shaping circuit 102 can maintain a short pulse of flow at the current cost index before deactivating packet delivery. Delivery count threshold 502 and delivery cycle count threshold 504 (or delivery rate threshold 338) may specify how many packets are delivered at the cost of the currently selected packet delivery within how many packet delivery time cycles, triggering a move to select the higher packet delivery cost 328 entry in cost table 330. The idle time threshold 340 can specify how much time must elapse since the most recent packet transaction before the indicator generator 412 reads the indicator decrement in the cost table (e.g., in the packet delivery clock cycle) to point to a lower value cost entry in the cost table 330.

[0067] Embodiments also relate to computer program products containing computer code or instructions stored on any computer-readable medium. Such computer program products include hard disk drives, optical disk drives, memory device packages, portable memory modules, memory cards, and other types of physical storage hardware. IV. Additional Examples and Advantages

[0068] In one embodiment, a traffic shaping circuit is communicatively coupled between a client and a transmission resource, which represents a client operable to regulate the delivery of packets into the network. The traffic shaping circuit includes delivery enabling logic configured to selectively enable or disable the delivery of packets into the network via the transmission resource based on a budget value. In response to the delivery of packets into the network via the transmission resource, the delivery enabling logic may modify the budget value based on packet delivery costs. The traffic shaping circuit further includes traffic monitoring logic configured to monitor the rate at which packets are delivered into the network via the transmission resource and to generate a cost adjustment signal based on the rate at which packets are delivered into the network via the transmission resource. The traffic shaping circuit further includes a cost adjustment controller configured to modify packet delivery costs in response to the cost adjustment signal for delivering subsequent packets into the network via the transmission resource.

[0069] In one embodiment of the aforementioned traffic shaping circuit, the transmission enable logic is further configured to modify a budget value based on the modified packet transmission cost in response to transmitting subsequent packets to the network using transmission resources, for selectively enabling or disabling the transmission of additional subsequent packets to the network using transmission resources.

[0070] In one embodiment of the aforementioned flow shaping circuit, the delivery enable logic is further configured to modify the budget value over time based on packet delivery credit and budget limit.

[0071] In one embodiment of the aforementioned flow shaping circuit, the cost adjustment controller is further configured to modify the budget limit in response to a cost adjustment signal.

[0072] In one embodiment of the aforementioned traffic shaping circuit, the cost adjustment signal indicates whether to increase packet transmission cost or decrease packet transmission cost in response to a packet transmission rate exceeding a transmission rate threshold.

[0073] In one embodiment of the aforementioned flow shaping circuit, the cost adjustment controller is further configured to modify the transmission rate threshold and the idle time threshold in response to the cost adjustment signal.

[0074] In one embodiment of the aforementioned flow shaping circuit, the cost adjustment controller further includes a cost table having a plurality of records, each storing a corresponding packet delivery cost. Records are sorted in the cost table based on the value of their respective packet delivery costs. A cost table read indicator generator is configured to selectively output a higher or lower packet delivery cost from the cost table based on an indication to a cost adjustment signal for modifying the packet delivery cost and an indication to the sorted records.

[0075] In one embodiment of the aforementioned flow shaping circuit, each of the plurality of records further stores a corresponding budget limit, a corresponding transfer rate threshold, and a corresponding idle time threshold.

[0076] In one embodiment of the aforementioned flow shaping circuit, one or more of the packet transmission cost, budget limit, transmission rate threshold, or idle time threshold are configurable.

[0077] In one embodiment, a method for shaping traffic comprising packets delivered to a network on behalf of a client via transmission resources includes selectively enabling or disabling the delivery of packets to the network via transmission resources based on a budget value. In response to the delivery of packets to the network via transmission resources, the budget value may be modified based on packet delivery costs. The rate at which packets are delivered to the network via transmission resources is monitored. A cost adjustment signal is generated based on the rate at which packets are delivered to the network via transmission resources. The packet delivery cost is modified in response to the cost adjustment signal for delivering subsequent packets to the network via transmission resources.

[0078] In one embodiment of the aforementioned method, in response to transmitting subsequent packets into the network using transmission resources, a budget value is modified based on the modified packet transmission cost to selectively enable or disable the transmission of additional subsequent packets into the network using transmission resources.

[0079] In one embodiment of the aforementioned method, the budget value is modified over time based on packet delivery credit and budget limits.

[0080] In one embodiment of the aforementioned method, the budget limit is modified in response to a cost adjustment signal.

[0081] In one embodiment of the aforementioned method, the cost adjustment signal indicates whether to increase packet transmission cost or decrease packet transmission cost in response to a packet transmission rate exceeding a transmission rate threshold.

[0082] In one embodiment of the aforementioned method, the transmission rate threshold and the idle time threshold are modified in response to the cost adjustment signal.

[0083] In one embodiment of the foregoing method, the cost table read index generator selectively outputs either a higher packet delivery cost or a lower packet delivery cost from the cost table. The cost table has a plurality of records, each storing a corresponding packet delivery cost. The records are sorted in the cost table based on the value of their respective packet delivery costs. The selective output is performed based on an instruction to a cost adjustment signal and the sorted records, for modifying the packet delivery cost.

[0084] In one embodiment of the aforementioned method, each of the plurality of records further stores a corresponding budget limit, a corresponding transmission rate threshold, and a corresponding idle time threshold.

[0085] In one embodiment of the aforementioned method, one or more of the following systems are configurable: packet transmission cost, budget limit, transmission rate threshold, or idle time threshold.

[0086] In one embodiment, a traffic shaping circuit is communicatively coupled between a client and a transmission resource, which represents a client operable to regulate the delivery of packets into the network. The traffic shaping circuit includes delivery enabling logic configured to selectively enable or disable the delivery of packets into the network via the transmission resource based on a budget value, adjust the budget value based on a timeline according to a budget limit, and adjust the budget value based on packet delivery cost in response to the delivery of packets into the network via the transmission resource. The traffic shaping circuit further includes traffic monitoring logic configured to monitor the rate at which packets are delivered into the network via the transmission resource and generate a budget limit adjustment signal based on the rate at which packets are delivered into the network via the transmission resource. The traffic shaping circuit further includes a budget limit adjustment controller configured to adjust a budget limit in response to the budget limit adjustment signal for controlling the enabling or disabling of subsequent packet delivery into the network via the transmission resource.

[0087] In one embodiment of the aforementioned traffic shaping circuit, the budget limit adjustment signal indicates whether to increase or decrease the budget limit in response to a packet transmission rate exceeding a transmission rate threshold. V. Conclusion

[0088] Although various embodiments of this application have been described above, it should be understood that these embodiments are presented by way of example only and are not intended to be limiting. Those skilled in the art will understand that various changes in form and detail may be made therein without departing from the spirit and scope of this application as defined in the appended claims. Therefore, the breadth and scope of this application should not be limited to any of the exemplary embodiments described above, but should be defined solely according to the appended claims and their equivalents. [Simplified Explanation of the Diagram]

[0006] The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate embodiments of the present application and, together with the description, further serve to explain the principles of the embodiments and enable those skilled in the art to make and use the embodiments.

[0007] Figure 1 is a block diagram of a system according to an example embodiment that includes a traffic shaping circuit for dynamically adjusting the transmission to the on-chip network.

[0008] Figure 2 is a flowchart of a method for controlling packet delivery rate by dynamically adjusting packet delivery cost and / or budget parameters according to an example embodiment.

[0009] Figure 3 is a block diagram illustrating the function performed by a flow shaping circuit that dynamically adjusts packet delivery costs and / or budget parameters according to an example embodiment.

[0010] Figure 4 is a block diagram of a system including a cost adjustment controller according to an example embodiment, the cost adjustment controller having a cost table for storing parameters of the shaped packet transmission rate.

[0011] Figure 5 is a cost table and a graph of storage parameters for the packet transmission rate according to Figure 4 of the example embodiment.

[0012] Figure 6 is a flowchart of a method for dynamically adjusting transmissions to a chip network according to an example embodiment.

[0013] Figure 7 is a block diagram of a flow shaping circuit that dynamically adjusts packet delivery cost and / or budget limit parameters according to an example embodiment.

[0014] When viewed in conjunction with the diagrams, the features and advantages described herein will become more apparent from the detailed description set forth below, in which similar reference numerals throughout the text identify corresponding elements. In the diagrams, the same element symbols generally indicate elements that are the same, functionally similar, and / or structurally similar. The diagram in which an element first appears is indicated by the leftmost numeral of the corresponding element symbol. [Biomaterial Storage]

[0090] Domestic storage information (please note in order of storage institution, date, and number): None. International storage information (please note in order of storage country, institution, date, and number): None.

Claims

1. A traffic shaping circuit communicatively coupled between a client and a transmission resource, the transmission resource being operable to regulate packet delivery to a network on behalf of the client, the traffic shaping circuit comprising: transmission enabling logic configured to: selectively enable or disable packet delivery to the network via the transmission resource based on a budget value; and modify the budget value based on a packet delivery cost in response to a packet delivery to the network via the transmission resource; traffic monitoring logic configured to: monitor a rate at which packets are delivered to the network via the transmission resource; and generate a cost adjustment signal based on the rate at which packets are delivered to the network via the transmission resource; and a cost adjustment controller configured to: modify the packet delivery cost in response to the cost adjustment signal for delivering a subsequent packet to the network via the transmission resource. The budget value is limited to a budget limit that can be configured by a packet delivery cost level, and the limited budget value is configured to provide a level for short-pulse tolerance for the client.

2. The traffic shaping circuit as claimed in claim 1, wherein the delivery enable logic is further configured to: in response to delivering a subsequent packet to the network via the transmission resource, modify the budget value based on the modified packet delivery cost for selectively enabling or disabling the delivery of another subsequent packet to the network via the transmission resource.

3. The flow shaping circuit as described in claim 1, wherein the delivery enable logic is further configured to modify the budget value over time based on packet delivery credit and the budget limit.

4. The flow shaping circuit as claimed in claim 3, wherein the cost adjustment controller is further configured to modify the budget limit in response to the cost adjustment signal.

5. The traffic shaping circuit as claimed in claim 3, wherein the cost adjustment signal indicates whether to: increase the packet transmission cost in response to the rate at which the packet is transmitted into the network being greater than a transmission rate threshold; or decrease the packet transmission cost.

6. The flow shaping circuit as claimed in claim 5, wherein the cost adjustment controller is further configured to modify the transmission rate threshold and an idle time threshold in response to the cost adjustment signal.

7. The flow shaping circuit of claim 1, wherein the cost adjustment controller further comprises: a cost table having a plurality of records, each storing a corresponding packet delivery cost, wherein the records are sorted in the cost table based on the value of their respective packet delivery costs; and a cost table read index generator configured to selectively output a higher packet delivery cost or a lower packet delivery cost from the cost table based on an indication to the cost adjustment signal for modifying the packet delivery cost and the sorted records.

8. The flow shaping circuit as claimed in claim 7, wherein each of the plurality of records further stores a corresponding budget limit, a corresponding transfer rate threshold, and a corresponding idle time threshold.

9. The flow shaping circuit as claimed in claim 8, wherein one or more of the packet delivery cost, the budget limit, the delivery rate threshold, or the idle time threshold are configurable.

10. A method for shaping traffic comprising packets delivered to a network on behalf of a client via a transport resource, the method comprising the steps of: selectively enabling or disabling the delivery of packets to the network via the transport resource based on a budget value; modifying the budget value based on a packet delivery cost in response to delivering a packet to the network via the transport resource; monitoring a rate at which packets are delivered to the network via the transport resource; generating a cost adjustment signal based on the rate at which packets are delivered to the network via the transport resource; and modifying the packet delivery cost in response to the cost adjustment signal for delivering a subsequent packet to the network via the transport resource, wherein the budget value is limited to a budget limit configurable by a packet delivery cost level, and wherein the limited budget value is configured to provide a level for short-pulse tolerance for the client.

11. The method of claim 10 further comprises the following steps: in response to delivering a subsequent packet to the network using the transport resource, modifying the budget value based on the modified packet delivery cost for selectively enabling or disabling the delivery of another subsequent packet to the network using the transport resource.

12. The method of claim 10 further includes the step of: modifying the budget value over time based on packet transmission credit and the budget limit.

13. The method as described in claim 12 further includes the step of: modifying the budget limit in response to the cost adjustment signal.

14. The method of claim 12, wherein the cost adjustment signal indicates whether to: increase the packet transmission cost in response to the rate at which the packet is transmitted into the network being greater than a transmission rate threshold; or decrease the packet transmission cost.

15. The method of claim 14 further comprises the step of: modifying the transmission rate threshold and an idle time threshold in response to the cost adjustment signal.

16. The method of claim 10 further comprises the steps of: selectively outputting a higher packet delivery cost or a lower packet delivery cost from a cost table by means of a cost table read index generator; wherein the cost table has a plurality of records, each storing a corresponding packet delivery cost and the records in the cost table are sorted based on the value of their respective packet delivery costs; and wherein the selective output is performed based on an instruction to a cost adjustment signal for said modification of the packet delivery cost and the sorted records.

17. The method as described in request item 16, wherein: Each of these multiple records further stores a corresponding budget limit, a corresponding transfer rate threshold, and a corresponding idle time threshold.

18. The method of claim 17, wherein one or more of the packet delivery cost, the budget limit, the delivery rate threshold, or the idle time threshold are configurable.

19. A traffic shaping circuit communicatively coupled between a client and a transmission resource operable to regulate packet delivery to a network on behalf of the client, the traffic shaping circuit comprising: delivery enabling logic configured to: selectively enable or disable packet delivery to the network via the transmission resource based on a budget value; adjust the budget value based on a timeline according to a budget limit; and adjust the budget value based on a packet delivery cost in response to delivering a packet to the network via the transmission resource; traffic monitoring logic configured to: monitor a rate at which packets are delivered to the network via the transmission resource; and generate a budget limit adjustment signal based on the rate at which packets are delivered to the network via the transmission resource; and a budget limit adjustment controller configured to: adjust the budget limit in response to the budget limit adjustment signal for controlling the enabling or disabling of subsequent packet delivery to the network via the transmission resource. The budget value is limited to a budget limit that can be configured by a packet delivery cost level, and the limited budget value is configured to provide a level for short-pulse tolerance for the client.

20. The traffic shaping circuit of claim 19, wherein the budget limit adjustment signal indicates whether to: increase the budget limit in response to the rate at which packets are delivered to the network being greater than a delivery rate threshold; or decrease the budget limit.

Citation Information

Patent Citations

  • Object oriented network-on-chip modeling

    TW201114223A

  • Operating system supporting cost aware applications

    US20120157038A1

  • Systems and methods for congestion detection for use in prioritizing and scheduling packets in a communication network

    US20120327779A1