The present invention relates to the storage and transmission of data in electrical devices. Specifically, the invention relates to methods for storing and transmitting data within Network-on-Chip architectures.
Advancements in complementary metal-oxide semiconductor (CMOS) fabrication and processing technology has allowed for shrinkage of circuit features and enabled the integration of multiple processing cores into System-on-Chip (SoC) platforms. However, feature scaling into the deep sub-micron regime has revealed interconnect design issues such as global wire delays, which do not scale as fast as gate delays, and limit the efficacy of design techniques typically used in traditional single-chip architectures. To address issues with wire delays in SoC architectures, it is possible to adopt one of a group of more flexible, scalable, packet-switched architectures, known as Network-on-Chip (NoC) or On-Chip Network (OCN).
In a first aspect, the present invention provides methods for correcting transmission errors in an Network-on-Chip architecture comprising: (i) configuring a plurality of three-state repeater stages to store data in response to receiving a control signal, (ii) detecting an error in one of the plurality of three-state repeater stages, and (iii) in response to detecting an error in a repeater stage correcting the error. In example implementation of the methods of the first aspect, correcting the error may comprises: (i) gating clock edge for one clock cycle, (ii) re-computing the result at each repeater stage, and (iii) replacing any errors with correct values.
Example implementations of the methods of the first aspect may further comprise responding to detecting an error in a repeater stage by (i) shifting the clock phase by 180 degrees; and (ii) overwriting a signal with an error with a correct signal. In other example implementations of the methods of the first aspect, detecting an error in one of the plurality of three state repeater stages may comprise comparing an output generated by a first three-state repeater to an output generated a second three-state repeater. In such example implementations, the output generated by a second three-state repeater may be generated by a shadow-repeater.
In other example implementations of methods of the first aspect, correcting an error may comprise selecting an output generated by a shadow-repeater and presenting the output of the shadow repeater at an output of the three-state repeater stage. The methods of the first aspect may further comprise transmitting a signal indicating the presence of an error from the three-state repeater stage.
In a second aspect, the invention provides methods for handling transmission errors in a Network-on-Chip architecture comprising: (i) transmitting a bit of data to a first three-state repeater, (ii) transmitting the bit of data to a second three-state repeater, (iii) detecting a difference between an output of the first three-state repeater and an output of the second three-state repeater, and (iv) selecting the output of the second three-state repeater for transmission. The methods of the second aspect may further comprise waiting during a delay period between transmitting the bit of data to the first three-state repeater and transmitting the bit of data to the second three-state repeater.
In example implementations of the methods of the second aspect, detecting a difference between an output of the first three-state repeater and an output of the second three-state repeater may comprise applying the outputs of the repeaters to input connections on a comparator. In such example implementations, the methods may further comprise transmitting an output of the comparator to a control block.
In additional example implementations of the methods of the second aspect, selecting the output of the second three-state repeater for transmission may comprise applying the output of the first three-state repeater to a first input connection of a multiplexer, applying the output of the second three-state repeater to a second input connection of the multiplexer, and applying an output of the comparator to a third input connection of the multiplexer. In such example implementations, the methods may further comprise configuring the multiplexer to select the output of the second three-state repeater in response to detecting an output of the comparator indicating the presence of an error.
In other example implementations of the methods of the second aspect, the methods may further comprise receiving at the first three-state repeater and at the second three-state repeater a control signal transmitted by a control block. In such example implementations, the control signal transmitted by the control block may indicate a congestion status of a router within a Network-on-Chip architecture. In other example implementations, in response to receiving a control signal indicating a congestion status of a router, the first three-state repeater and the second three-state repeater may store the bit of data.
In a third aspect, the invention provides methods for controlling a three-state repeater stage in a Network-on-Chip architecture comprising: (i) receiving at a control block a signal indicating the presence of an error within a three-state repeater stage, and (ii) in response to receiving the signal indicating the presence of an error within a three-state repeater stage, transmitting a signal to a three-state repeater stage instructing the three-state repeater stage to hold the data at the three-state repeater stage in place.
In example implementations of the methods of the third aspect, the methods may further comprise, in response to receiving the signal indicating the presence of an error within a three-state repeater stage, shifting a clock phase by 180 degrees. In such example implementations, the methods may further comprise correcting the error within a three state repeater stage. In additional example implementations of the methods of the third aspect, correcting the error within a three-state repeater stage may comprise: (i) selecting an output of a shadow-repeater in the three-state repeater stage, and (ii) overwriting the error within the three-state repeater stage with the output of the shadow-repeater in the three-state repeater stage.
With technology scaling, the increased wire delays in current multi-core architectures have led to the modular and scalable packet-switched Network-on-Chip (NoC) paradigm. One of the challenges currently faced by NoC designers is that of power dissipation. Within an NoC architecture, a substantial amount of the NoC router power is consumed by the input buffers of the routers.
Current high-speed very-large-scale-integration (VLSI) designs often require the insertion of repeaters along the wires connecting routers in order to meet timing requirements and overcome the quadratic increase in delay that accompanies an increase in wire length. With rapidly diminishing feature size, inter-router links within an NoC architecture may become more susceptible to transient failures caused by coupling noise, process variations, and other sources. In the methods described herein, robust repeater designs are implemented as part of a plurality of methods for establishing fault-tolerant links capable of dynamic error correction. In addition to detecting a fault, the methods provide for sending the correct data to the next repeater stage while avoiding stalls in data flow.
In known designs, conventional repeaters are inserted along a link between routers, and arc sized and spaced according to a first-order resistor-capacitor (RC) wire delay model. In accordance with one aspect of the invention, the conventional repeaters are replaced with three-state repeaters. A single stage of the three-state repeaters comprises a three-state repeater inserted at along all of the wires within a particular link. Each such repeater stage may receive a control input for the corresponding control block. When the control input to a repeater stage is high, the repeaters in that stage function as channel buffers. When the control input to the repeater stage is low, the three-state repeaters function as conventional repeaters. Each stage can be controlled such that in the absence of congestion, the three-state repeater operates similarly to a conventional repeater—data moves through the link without being held in place by the three-state repeater. When the control block is activated in the presence of congestion, the control block can activate or tri-state the three-state repeaters.
Once activated, the three-state repeaters function as channel buffers and the data bits are held in position. Once congestion is alleviated, the control logic can be adjusted, and the three-state repeaters can function as conventional repeaters. Since the three-state repeaters can adaptively function as channel buffers, a given level of network performance can be achieved using routers with a reduced number of input buffers, effectively reducing the size and power consumption of a router.
In example implementations, conventional repeaters along a link are replaced by fault-tolerant three-state repeaters. As used herein, a single “stage” of three-state repeaters comprises a three-state repeater inserted along all the wires in a given link. A stage of three-state repeaters may be controlled with signal sent from a control block. In an example implantation of a stage of three-state repeaters, the three-state repeaters function as conventional repeaters in response to receiving a low signal from a control block. In response to receiving a high signal from a control block, the three-state repeaters are tri-stated and hold the data in position at the stage of three-state repeaters.
Each three-state repeater may be protected by a shadow-repeater that captures signals with transient errors. As used herein, a shadow-repeater has the same design as the main repeater it is protecting, but receives a delayed control signal compared to the main repeater. The shadow-repeater and the main repeater have the same design in order to avoid timing difference at the output.
In example implementations involving a shadow-repeater, an output of the main repeater and an output of the shadow-repeater are comparing using a comparator or an XOR gate. If a difference between the compared repeater outputs is detected, an error is present. In response to detecting an error, a multiplexer may be used to select the output from the shadow-repeater. Since the shadow-repeater receives a delayed control signal, it is likely to be free from transient errors. After the multiplexer selects the shadow-repeater output, the corrected data can be either transmitted or held, depending on the state of the control signal.
In some example implementations of links, latches and/or clock signals are not needed as control signals for either the shadow repeater or the main repeater. In such configurations, errors in data along a link can be corrected without stalling the data or waiting for a clock signal. In other example implementations, latches or clock signals may be used as a control signal for a shadow repeater or a main repeater.
Control blocks may be used to control both the main three-state repeater and the shadow-repeater inserted along a link between two routers. In example implementations, a single control block may be used to control the functionality of all the repeaters within a single stage of repeaters. In one example implementation of control blocks, an incoming congestion signal is delayed by one clock cycle at each control block. In the next clock cycle, the repeaters in that stage may be tri-stated, and the congestion signal may be passed to the next control block. This allows for each repeater stage to be successively tri-stated to hold the data in position until a congestion-release signal arrives. In example implementations of a control block, the control block may be configured to operate accurately at variable clock speeds. For example, a shadow flip-flop may be used to sample the congestion signal at a delayed clock, and thus catch timing errors. A control block may also be configured to use a dual-phase design, where in the presence of an error, the clock switches to the opposite phase. By switching to the opposite phase, the timing slack may be extended, to allow additional time to overwrite an erroneous signal within a repeater stage. In addition, a control block may be configured to be disabled when there is no congestion, thus reducing the power consumption of the control block.
In a first aspect, the present invention provides methods for correcting transmission errors in an Network-on-Chip architecture comprising: (i) configuring a plurality of three-state repeater stages to store data in response to receiving a control signal, (ii) detecting an error in one of the plurality of three-state repeater stages, and (iii) in response to detecting an error in a repeater stage correcting the error. Any of the three-state repeaters described herein may be used as part of a three-state repeater stage. For example, a stage may comprise a main three-state repeater and a shadow-repeater that are both electrically connected to a comparator configured to examine the outputs of the repeaters. In example implementation of the methods of the first aspect, correcting the error may comprises: (i) gating clock edge for one clock cycle, (ii) re-computing the result at each repeater stage, and (iii) replacing any errors with correct values. When the clock edge is gated, the entire link is stalled for just one clock cycle, which allows for each three-state repeater stage to detect and correct errors data during transmission, without requiring a second clock cycle to correct the errors. This stalled period also allows for each stage to recalculate its own result, thus allowing for errors that were previously forwarded to subsequent stages to be caught and corrected.
Example implementations of the methods of the first aspect may further comprise responding to detecting an error in a repeater stage by (i) shifting the clock phase by 180 degrees; and (ii) overwriting a signal with an error with a correct signal. Such implementations can be considered dual-phase implementations, and may allow for a corrected signal that arrives after an erroneous signal to have sufficient time to overwrite the erroneous signal, without requiring an additional clock cycle or further stalls in the transmission. In other example implementations of the methods of the first aspect, detecting an error in one of the plurality of three state repeater stages may comprise comparing an output generated by a first three-state repeater to an output generated a second three-state repeater. In such example implementations, the output generated by a second three-state repeater may be generated by a shadow-repeater. These outputs may be used to detect an error. For example, the outputs of both the main repeater and the shadow-repeater may be electrically coupled to inputs of a comparator and to inputs of a multiplexer. The output of the comparator may also be electrically coupled to an input of the multiplexer, allowing for the selection of the shadow-repeater output when an error is detected.
In other example implementations of methods of the first aspect, correcting an error may comprise selecting an output generated by a shadow-repeater and presenting the output of the shadow repeater at an output of the three-state repeater stage. The methods of the first aspect may further comprise transmitting a signal indicating the presence of an error from the three-state repeater stage. For example, a signal indicating the presence of an error may be used to control other aspects of the NoC architecture.
In a second aspect, the invention provides methods for handling transmission errors in a Network-on-Chip architecture comprising: (i) transmitting a bit of data to a first three-state repeater, (ii) transmitting the bit of data to a second three-state repeater, (iii) detecting a difference between an output of the first three-state repeater and an output of the second three-state repeater, and (iv) selecting the output of the second three-state repeater for transmission. The methods of the second aspect may further comprise waiting during a delay period between transmitting the bit of data to the first three-state repeater and transmitting the bit of data to the second three-state repeater. Any of the repeater stage architectures described herein may be used with methods of the second aspect.
In example implementations of the methods of the second aspect, detecting a difference between an output of the first three-state repeater and an output of the second three-state repeater may comprise applying the outputs of the repeaters to input connections on a comparator. In such example implementations, the methods may further comprise transmitting an output of the comparator to a control block. In implementations where the output of the comparator is transmitted to a control block, the transmitted output may be used to trigger an action in the control block, such as the transmission of a signal instructing one or more repeater stages to cease transmitting and to hold data in place.
In additional example implementations of the methods of the second aspect, selecting the output of the second three-state repeater for transmission may comprise applying the output of the first three-state repeater to a first input connection of a multiplexer, applying the output of the second three-state repeater to a second input connection of the multiplexer, and applying an output of the comparator to a third input connection of the multiplexer. In such example implementations, the methods may further comprise configuring the multiplexer to select the output of the second three-state repeater in response to detecting an output of the comparator indicating the presence of an error. Since the transmission of data to the shadow-repeater may be slightly delayed with respect to transmission to the main repeater, the output of the shadow-repeater is less susceptible to transient errors, and thus, if there is a difference between the output of the main repeater and the shadow-repeater, it is likely that the main repeater output represents an error.
In other example implementations of the methods of the second aspect, the methods may further comprise receiving at the first three-state repeater and at the second three-state repeater a control signal transmitted by a control block. In such example implementations, the control signal transmitted by the control block may indicate a congestion status of a router within a Network-on-Chip architecture. In other example implementations, in response to receiving a control signal indicating a congestion status of a router, the first three-state repeater and the second three-state repeater may store the bit of data.
In a third aspect, the invention provides methods for controlling a three-state repeater stage in a Network-on-Chip architecture comprising: (i) receiving at a control block a signal indicating the presence of an error within a three-state repeater stage, and (ii) in response to receiving the signal indicating the presence of an error within a three-state repeater stage, transmitting a signal to a three-state repeater stage instructing the three-state repeater stage to hold the data at the three-state repeater stage in place. As described herein, the three-state repeaters may be configured such that when a high control signal is received from a control block, the repeaters are tri-stated and hold the data in place. When the three-state repeaters receive a low control signal from the control block, they may behave as conventional repeaters, and retransmit the data presented at their inputs.
In example implementations of the methods of the third aspect, the methods may further comprise, in response to receiving the signal indicating the presence of an error within a three-state repeater stage, shifting a clock phase by 180 degrees. In such example implementations, the methods may further comprise correcting the error within a three state repeater stage. In additional example implementations of the methods of the third aspect, correcting the error within a three-state repeater stage may comprise: (i) selecting an output of a shadow-repeater in the three-state repeater stage, and (ii) overwriting the error within the three-state repeater stage with the output of the shadow-repeater in the three-state repeater stage.
Turning now to the figures,
“Enable” is an enable signal used to turn the control block 201 on and off. For example, when there is no congestion in the router 207, the control block 201 may be turned off to draw less power. The signal marked “Congestion” is a congestion signal, used to notify the control block 201 of a congestion status of the router 207. The signals marked with the numeral “4” comprise a plurality of signals sent from the router 207 to the control block 201 to instruct the control block to allow a particular stage to transmit data.
As shown in
Control block 201 is also configured to receive a clock signal, marked “CLK out” from a multiplexer 208. Multiplexer 208 is configured to selectively output one of two phases of a clock signal, generated by the line marked “CLK” and inverter 209. Multiplexer 208 is also configured to accept a control signal, marked “Error Ctl” from NOR gate 210. NOR gate 210 receives at its inputs signals from each of the repeater stages 202-205, and if an signal indicating that an error is present in any of the repeater stages 202-205 is detected, NOR gate 210 is configured to cause the multiplexer 208 to switch clock phases, introducing a 180 degree shift, as described herein.
Various arrangements and embodiments in accordance with the present invention have been described herein. All embodiments of each aspect of the invention can be used with embodiments of other aspects of the invention. It will be appreciated, however, that those skilled in the art will understand that changes and modifications may be made to these arrangements and embodiments, as well as combinations of the various embodiments without departing from the true scope and spirit of the present invention, which is defined by the following claims.
The present patent application claims priority under 35 U.S.C. §119(c) to U.S. Provisional Patent Application Ser. No. 61/123,020 filed on Apr. 4, 2008, the entirety of which is herein incorporated by reference.
Number | Date | Country | |
---|---|---|---|
61123020 | Apr 2008 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 12922948 | Apr 2011 | US |
Child | 14711469 | US |