1. Technical Field of the Present Invention
The present invention generally relates to integrated circuits, and more specifically, to methods and apparatuses that facilitate the transfer of data between the various cores located within the integrated circuit.
2. Description of Related Art
Technological advancements in semiconductors have resulted in consumers expecting increasingly smaller more powerful devices. The number of circuits/functional units (cores) that reside on a typical integrated circuit to support these functions is astronomical. The sheer number of devices has forced the semiconductor industry to solve new problems associated with power consumption, heat dissipation, noise, and communication. A related issue is the number of wires required to provide communication between the various cores that implement the desired functionality. In the past, the wiring of the communication from one core to another has been accomplished using point-to-point techniques. Unfortunately, the exponential increase in density is causing point-to-point wiring to reach its limits.
It would, therefore, be a distinct advantage to have a method and apparatus that could transfer data from one core to another while addressing the concerns that arise during dense point-to-point wiring. The present invention provides such a method and apparatus.
The present invention is a method and apparatus for providing communication between various cores located in an integrated circuit. More specifically, the present invention uses Hubs/Routers to facilitate and manage communication of data from/between the cores according to a specified methodology.
The present invention will be better understood and its numerous objects and advantages will become more apparent to those skilled in the art by reference to the following drawings, in conjunction with the accompanying specification, in which:
The present invention is a system and method for transferring data between various cores residing in an integrated circuit. The system/method uses hub/routers that are strategically located between the various cores. The operation of the hub/routers for providing the communication is explained in greater detail in connection with
Reference now being made to
Reference now being made to
The Receive/Transmit Unit 202 is responsible for receiving, storing, and transmitting data to/from other adjacent Hubs 7-10 or adjacent Cores 1-5. The Receive/Transmit unit 202 receives data on Receive communication line 206, and transmits data on Transmit communication line 208. The Receive/Transmit unit 202 includes a FIFO (First In First Out memory mechanism) for storing received data via the Receive communication line 206, and temporarily storing data for transmission on the Transmit communication line 208. For purposes of clarity, the Receive and Transmit communication lines 206 and 208, respectively are illustrated as being separate one from another. It should be noted, however, that these communication lines 206-208 can be implemented using a tagging scheme and shared bus or the like. The Control Unit 204 manages the receipt and transmission of data by the Receive/Transmit Unit 202 as explained below.
Control Unit 204 receives and transmits various signals to and from other adjacent Hubs (7-8) and Cores 1-2. The receipt and transmission of these signals by the Control Unit 204 can be accomplished using individual communication lines for each of the signals as well as a tagging methodology in combination with a desired bus type structure. For each of the adjacent hubs (7-8) and adjacent Cores (1-2), Control Unit 204 receives a Status/Flush signal 204a and a Select Hub signal 204c, and transmits a Select signal 204b and a Hub Status/Flush signal 204d. The interaction between the various signals, the Control Unit 204, and the Receive/Transmit Unit 202 is explained in connection with
Reference now being made to
It should be noted that in the preferred embodiment of the present invention, multiple Hubs can be used to simultaneously transmit the same data (e.g. when receipt of the data by one of the Cores 1-5 is critical). In general, the transmission of the data is accomplished using packets or other similar type data structure for segmenting data into components that can be transferred individually and reassembled upon their receipt. Consequently, when there are multiple transmissions of the same data, the destination Core 1-5 needs to be able to distinguish between different sets of the same data and when to discard stale data. The present invention accomplishes this requirement by using unique identifiers to identify a particular set of data and affixes a time stamp to each packet (e.g. in the header) of data according to the time at which it was received by each preceding Hub 6-10. In the scenario where multiple sets of data are on route to a destination Core 1-5, the destination Core 1-5 examines the first packet it receives, records the unique identifier and time stamp. Any subsequently received duplicate sets of the same data (those packets having a unique identifier that is different from that of the first received packet) are ignored and a flush signal is sent to the transmitting Hub 6-10. The processing of the Flush signal is explained below.
If a flush signal has been previously received either from an adjacent Hub (6-10) or Core (1-5), then the Control Unit 204 compares the unique identifier in the first packet that is received (Step 306), and if it matches that of the identifier in the flush signal, then a Flush signal is sent to the adjacent Hub 7-8 that is transmitting the data and any new data received having the flush identifier is ignored (Step 308). The processing of the receipt of a flush signal is explained in connection with the description of
If, however, the identifier in the first received packet does not match that of a flush identifier, then the data/packet is stored in the FIFO (Step 314). If the Hub 6 is still selected via Select Hub signal 204c (i.e. More data needs to be received), the processing proceeds to Step 302 and repeats the method from that point (Step 316). If, however, the Hub 6 is not selected, then the processing ends until the Hub 6 is selected again (step 318).
Reference now being made to
The Control Unit 204 selects either a single or multiple adjacent Hubs 6-10 for receipt of the data via the Select signal 204b (the signal being transmitted to each adjacent Hub 6-10 (Step 406-406n). The selection of either single or multiple adjacent Hubs 6-10 can also be based upon a weighted determination. For example, the first attempt of the transmission of the data would be to a first preferred adjacent Hub 6-10. If the preferred adjacent Hub 6-10 was busy, then an attempt to transmit the data to next preferred adjacent Hub 6-10 could occur and so on.
Upon receiving a Status/Flush signal 204a from one or more adjacent Hubs 6-10 or Cores 1-5, the Control Unit 204 examines the Status/Flush signal 204a to determine if the selected adjacent Hub 6-10 is available. If the Status/Flush signal 204a indicates that the selected adjacent Hub 6-10 is currently unavailable (step 408), depending on the particular scheme employed the Control Unit 204 with either wait a predetermined period of time and then try again to select the adjacent Hub 6-10 via Select signal 204b, or try the next weighted adjacent Hub 6-10 again using Select signal 204b (Steps 410). The attempt to use the next weighted Hub 6-10 can either proceed down a vertical path (illustrated) where each weighted Hub 6-10 is attempted one after another or in a horizontal (parallel) fashion similar to that used for step 406 for launching multiple sets of the same data (not illustrated).
If the Control Unit 204 receives an indication that the selected adjacent Hub 6-10 is available
If the Control Unit 204 receives an indication that the selected adjacent Hub 6-10 is available (step 412), then the Control Unit 204 transmits the data (in packets or the like) to the adjacent Hub 6-10 or Core 1-5 via Transmission line 208. After transmitting a packet, the Control Unit 204 determines whether there is additional related data to be transferred to the adjacent Hub 6-10 or Core 1-2 (Step 414).
At this time, it is also possible that the Control Unit 204 could receive a flush indication via the Status/Flush signal 204a from the adjacent Hub 6-10 or Core 1-5. The flush signal would include an indicator sufficient to coincide with the indicator used to identify the particular instance/set of data being transmitted as previously explained.
If a Flush signal was received, then the Control Unit 204 flushes the data identified in the flush signal that is still pending in the FIFO. In addition, the flush identifier is saved for a predetermined period of time so that if any preceding Hubs 6-10 transmit additional pieces of the now identified stale data (step 414). If there is either no more related data to be transmitted or the processing of the flush signal is complete, then the process proceeds to end at step 416.
It is thus believed that the operation and construction of the present invention will be apparent from the foregoing description. While the method and system shown and described has been characterized as being preferred, it will be readily apparent that various changes and/or modifications could be made without departing from the spirit and scope of the present invention as defined in the following claims.