1. Field of the Invention
The present invention relates to system architectures for data processing, and more particularly to an architecture based upon a hardware engine which performs operations and computations on data as the data traverses paths controlled by software.
2. Description of Related Art
Traditional data processing systems are based on architectures having a pipeline based execution unit, and instruction fetch unit, and a storage unit which are operated in response to decoded instructions. The instructions are decoded to produce microcode that controls the operation of the data processing pipeline. The execution unit is a very complicated general-purpose logic system designed to execute a fixed number of operations under microcode control, and which becomes inflexible and difficult to change as its complexity grows.
This traditional architecture arose because the cost of the manufacture and design of logic has been historically higher than the cost of moving data into the logic system. However, recent advances in manufacturing and design are bringing down the cost of the design and implementation of logic, as compared to the cost of routing signals.
It is an object of the present invention to take advantage of this trend in integrated circuit and data processing system manufacturing and design to provide a data processing architecture that reduces the complexity and inflexibility of data processing systems.
The present invention provides an architecture based upon a hardware engine that includes a plurality of functional units and data routing units that interconnect the functional units. The hardware engine performs operations and computations on data as the data traverses paths through the functional units under control of software. The functional units include logic resources, examples of which are flip-flops, latches, arithmetic logic units, random access memory, and the like. The routing units are responsive to the software control signals that are turned on or off to steer the data through these resources. Operations and computations are accomplished according to the steering of the data through the functional units, rather than according to decoding of operation commands that control the functions performed on the data by a general purpose execution unit, as typical in the prior art.
Thus, one embodiment of the present invention comprises a data processing system. The data processing system includes a plurality of functional units and a plurality of routing units. The routing units are responsive to respective routing control signals and are coupled to the plurality of functional units. The routing units steer data among the plurality of functional units in response to routing control signals that indicate a source functional unit and a destination functional unit for a data unit being routed. Control word logic supplies the routing control signals to the plurality of routing control units. In one embodiment, the routing units operate synchronously, so that the data words subject of the operations are available to the functional units from the routing control units within timing constraints set up according to the plurality of functional units in the system.
The routing units comprise in various embodiments crossbar switches and multiplexers.
The functional units include in various embodiments storage elements, arithmetic logic units, table lookup units, complex logic units, data word shifter units, memory responsive to addresses, First-In-First-Out FIFO buffers, or any other logical unit designed to perform a function on data supplied on inputs, and to provide data at an output or outputs. In preferred embodiments, the functional units comprise logic dedicated to specific tasks, where the logic may be hardwired or based completely or in part on software.
In other embodiments of the present invention, the architecture is applied in a hierarchical fashion. Thus, one embodiment of the invention comprises a plurality of functional blocks, one or more of the plurality of functional blocks including a plurality of functional units, routing units and control word logic as discussed above. Block level routing units are also applied, along with block level control word logic.
The present invention also provides a new method of processing data in a data processing engine that includes a plurality of functional units. The method includes providing a set of control words that specify a route among the plurality functional units, and routing data among the plurality of functional units according to the set of software control words to produce a result. Also, in some embodiments, the method includes compiling the set of software control words from a high-level programming language specifying the result.
The present invention also provides a new method of processing data in a data processing engine that includes a plurality of functional units. The process includes providing a first set of software control words that specify a first data path according to a first configuration of the plurality of functional units; and providing a second set of software control words that specifies a second data path according to a second configuration of the plurality of functional units, whereby the plurality of functional units is reconfigured to perform a different function.
Other aspects and advantages of the present invention can be seen upon review of the figures, detailed description and the claims, which follow.
A detailed description of embodiments of the present invention is provided with respect to
Each of the control signals, e.g. control signal 31 applied to routing unit 21, indicate both a source and a destination for a data unit traversing the routing unit. Thus, routing unit 21 includes inputs 40-42 and outputs 43-46. The control signal indicates an input and an output, such as input 41 and output 45, uniquely specifying a path through the routing unit. According to the control signal 31 having a value 41:45, the routing unit accepts data on line 41 from functional unit 11 and routes the data to functional unit 12. Also, for some types of functional units, such as memory, the control signals include indicators of a source and destination, as well as other control signals like a write strobe or a read strobe to be used by the destination or the source functional unit.
The functional units 10-16 are made up of typical logic units, including storage elements, memory arrays, arithmetic logic units, shifters, inverters, concatenating logic, counters, adders, floating point arithmetic units, timers and others. Also, functional units 10-16 comprise special-purpose logic in some embodiments.
The routing units 20-23 are made up of typical routing circuitry, including multiplexers, buses, crossbar switches, local area network switches, and the like. Also, routing units 20-23 comprise special purpose routing units in some embodiments.
The control words are provided by software without decoding in preferred systems. These control words are generated by compilers, which transform high-level programming languages like Java, C, and C++, into the control word language of the architecture. The compilers provided for this function are given a specification of the functional units, the routing units and the interconnection of the functional units and routing units. Also, the compilers are provided with the format of the control signals used for specifying a source and a destination for each of the routing units.
The control word 55 includes control signals Rc which operate as strobes for the registers, M1 which controls multiplexer 51, M2 which controls multiplexer 52, Ac which selects one of four results available as output from the arithmetic logic unit ALU1, M3 which controls multiplexer 53, wr which operates as a write strobe for the memory 50, Addr which provides an address to the memory 50, and M4 which controls multiplexer 54. Control word logic applies the control word 55 to the plurality of routing units synchronously so that timing constraints of the plurality of dedicated functional units are observed.
In order to understand the present invention, consider how an addition would get done according to a prior art reduced instruction set RISC architecture. In a RISC architecture, an add instruction appears as follows:
Thus, the data is steered through the resources using a sequence of control words provided by the control word logic 55 acting as distribution cicuitry. The control words each provide the control signals that specify the source and destination for data being routed by the routing units 51-54, the associated routing functions in the registers, and a memory 50. In the preferred systems, there are no operation commands that affect the function performed on the data by the functional units. Rather, the function performed on the data is hardwired in, or otherwise provided in, the dedicated functional units.
The example in
Another feature shown in the example of
In
As the complexity of data processing systems implemented according to the present architecture increases, hierarchical designs are available. Thus, any of the functional units in an architecture, such as that shown in
One hierarchical design is shown in
Accordingly, the present invention provides an architecture based upon a new paradigm for design and implementation of data processing systems. Control words are generated by compiling high level programming language, and consist of control signals for routing units. The control signals synchronously steer data among a plurality of functional units which are optimized for particular functions. No decoding of operation commands is required, vastly simplifying implementation and design of the hardware engine.
In embodiments of the present invention, the data gets steered among the functional units and functional blocks, and in the process of traversing through the different paths, the desired operations are performed.
The foregoing description of embodiments of the invention has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations will be apparent. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling others to understand the invention for various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims.
Number | Name | Date | Kind |
---|---|---|---|
3487370 | Goshorn et al. | Dec 1969 | A |
4445172 | Peters et al. | Apr 1984 | A |
4811214 | Nosenchuck et al. | Mar 1989 | A |
4891787 | Gifford | Jan 1990 | A |
4943909 | Huang | Jul 1990 | A |
5146606 | Grondalski | Sep 1992 | A |
5151996 | Hillis | Sep 1992 | A |
5212773 | Hillis | May 1993 | A |
5245705 | Swaney | Sep 1993 | A |
5247613 | Bromley | Sep 1993 | A |
5265207 | Zak et al. | Nov 1993 | A |
5274782 | Chalasani et al. | Dec 1993 | A |
5313590 | Taylor | May 1994 | A |
5379444 | Mumme | Jan 1995 | A |
5388214 | Leiserson et al. | Feb 1995 | A |
5418970 | Gifford | May 1995 | A |
5481743 | Baxter | Jan 1996 | A |
5481749 | Grondalski | Jan 1996 | A |
5530814 | Wong et al. | Jun 1996 | A |
5559970 | Sharma | Sep 1996 | A |
5561761 | Hicok et al. | Oct 1996 | A |
5574930 | Halverson et al. | Nov 1996 | A |
5590283 | Hillis et al. | Dec 1996 | A |
5598410 | Stone | Jan 1997 | A |
5617549 | DeLano | Apr 1997 | A |
5671435 | Alpert | Sep 1997 | A |
5680550 | Kuszmaul et al. | Oct 1997 | A |
5689508 | Lyles | Nov 1997 | A |
5717871 | Hsieh et al. | Feb 1998 | A |
5726586 | Chan et al. | Mar 1998 | A |
5734334 | Hsieh et al. | Mar 1998 | A |
5751955 | Sonnier et al. | May 1998 | A |
5771362 | Bartkowiak et al. | Jun 1998 | A |
5790821 | Pflum | Aug 1998 | A |
5805477 | Perner | Sep 1998 | A |
5805875 | Asanovic | Sep 1998 | A |
5822606 | Morton | Oct 1998 | A |
5828858 | Athanas et al. | Oct 1998 | A |
5845102 | Miller et al. | Dec 1998 | A |
5867724 | McMahon | Feb 1999 | A |
5905723 | Varghese et al. | May 1999 | A |
5907485 | Van Loo et al. | May 1999 | A |
5930492 | Lynch | Jul 1999 | A |
5941968 | Mergard et al. | Aug 1999 | A |
6023742 | Ebeling et al. | Feb 2000 | A |
6044080 | Antonov | Mar 2000 | A |
6055599 | Han et al. | Apr 2000 | A |
6065070 | Johnson | May 2000 | A |
6078990 | Frazier | Jun 2000 | A |
6081884 | Miller | Jun 2000 | A |
6088783 | Morton | Jul 2000 | A |
6112294 | Merchant et al. | Aug 2000 | A |
6142683 | Madduri | Nov 2000 | A |
6157955 | Narad et al. | Dec 2000 | A |
6182206 | Baxter | Jan 2001 | B1 |
6185633 | Johnson | Feb 2001 | B1 |
6223242 | Sheafor et al. | Apr 2001 | B1 |
6226735 | Mirsky | May 2001 | B1 |
6230175 | Okamoto et al. | May 2001 | B1 |
6253313 | Morrison et al. | Jun 2001 | B1 |
6256740 | Muller et al. | Jul 2001 | B1 |
6263415 | Venkitakrishnan | Jul 2001 | B1 |
6272619 | Nguyen et al. | Aug 2001 | B1 |
6279100 | Tremblay et al. | Aug 2001 | B1 |
6304568 | Kim | Oct 2001 | B1 |
6314487 | Hahn et al. | Nov 2001 | B1 |
6330242 | Ogawa et al. | Dec 2001 | B1 |
6378021 | Okazawa et al. | Apr 2002 | B1 |
6378061 | Carbine et al. | Apr 2002 | B1 |
6412061 | Dye | Jun 2002 | B1 |
6438585 | Mousseau et al. | Aug 2002 | B2 |
6438680 | Yamada et al. | Aug 2002 | B1 |
6473827 | McMillen et al. | Oct 2002 | B2 |
6519695 | Kostic et al. | Feb 2003 | B1 |
6594698 | Chow et al. | Jul 2003 | B1 |
6597692 | Venkitakrishnan | Jul 2003 | B1 |
6636933 | MacLellan et al. | Oct 2003 | B1 |
6651131 | Chong et al. | Nov 2003 | B1 |
6661788 | Angle et al. | Dec 2003 | B2 |
6675283 | Cichon | Jan 2004 | B1 |
6690659 | Ahmed et al. | Feb 2004 | B1 |
6728777 | Lee et al. | Apr 2004 | B1 |
6799252 | Bauman | Sep 2004 | B1 |
6836815 | Purcell et al. | Dec 2004 | B1 |
6842104 | Osaka et al. | Jan 2005 | B1 |
6874079 | Hogenauer | Mar 2005 | B2 |
7028134 | Wang et al. | Apr 2006 | B2 |
7043596 | McWilliams et al. | May 2006 | B2 |
7127590 | Lindquist | Oct 2006 | B1 |
20010042193 | Fleck et al. | Nov 2001 | A1 |
20020009095 | Van Doren et al. | Jan 2002 | A1 |
20020038339 | Xu | Mar 2002 | A1 |
20020116715 | Apostolopoulos | Aug 2002 | A1 |
20020122428 | Fan et al. | Sep 2002 | A1 |
20030191879 | Marmash | Oct 2003 | A1 |
20050076194 | Kanapathippillai et al. | Apr 2005 | A1 |
Number | Date | Country |
---|---|---|
0 410 435 | Jan 1991 | EP |
0 456 201 | Nov 1991 | EP |
06-274459 | Sep 1994 | JP |
09-294069 | Nov 1997 | JP |
10-111790 | Apr 1998 | JP |
11-219279 | Aug 1999 | JP |
Number | Date | Country | |
---|---|---|---|
20030088826 A1 | May 2003 | US |