Claims
- 1. A re-configurable, streaming vector processor comprising:
a plurality of function units, each having one or more inputs for receiving a data value and an output for providing a data value; a re-configurable interconnection switch comprising one or more links, each link operable to couple an output of a function unit to an input of the one or more inputs of a function unit; and a micro-sequencer coupled to the re-configurable interconnection switch and operable to control the re-configurable interconnection switch.
- 2. A re-configurable, streaming vector processor in accordance with claim 1, wherein the micro-sequencer includes a program memory for storing a program of instructions.
- 3. A re-configurable, streaming vector processor in accordance with claim 1, wherein the re-configurable interconnection switch includes a switch memory for storing data values.
- 4. A re-configurable, streaming vector processor in accordance with claim 3, wherein the switch memory comprises at least one of a FIFO, a programmed delay and a pipelined register file.
- 5. A re-configurable, streaming vector processor in accordance with claim 1, wherein a link of the re-configurable interconnection switch is directed by the micro-sequencer to receive a data value from an output of a function unit and to provide a data value to an input of the one or more inputs of a function unit.
- 6. A re-configurable, streaming vector processor in accordance with claim 1, further comprising:
one or more input stream units coupled to the re-configurable interconnection switch and operable to retrieve input data values from a data memory and to provide data values to the re-configurable interconnection switch; and one or more output stream units coupled to the re-configurable interconnection switch and operable to receive data values from the re-configurable interconnection switch and to provide output data values to data memory.
- 7. A re-configurable, streaming vector processor in accordance with claim 6, wherein the input and output stream units include an interface for receiving control instructions from a host computer.
- 8. A re-configurable, streaming vector processor in accordance with claim 7, wherein the control instructions comprises at least one of:
a starting address of a vector of data values in the data memory; a span of the vector of data values; a stride between data values; a number of memory addresses to skip between a span of vector data values; and a size of each data value in the vector of data values.
- 9. A re-configurable, streaming vector processor in accordance with claim 6, further comprising an external interface operable to couple to the input stream units, the output stream units and the micro-sequencer to a host computer.
- 10. A re-configurable, streaming vector processor in accordance with claim 1, wherein the function units comprise at least one of:
a shifter; an adder; a logic unit; and a multiplier.
- 11. A re-configurable, streaming vector processor in accordance with claim 10, wherein the function units further comprise a passthrough function unit.
- 12. A re-configurable, streaming vector processor in accordance with claim 1, wherein an output of at least one of the plurality of function units comprises a pipeline of registers.
- 13. A re-configurable, streaming vector processor in accordance with claim 1, further comprising at least one accumulator coupled to the re-configurable interconnection switch.
- 14. A re-configurable, streaming vector processor in accordance with claim 13, wherein the at least one accumulator is operable to be coupled to a host computer.
- 15. A re-configurable, streaming vector processor in accordance with claim 1, further comprising a plurality of scalar registers.
- 16. A re-configurable, streaming vector processor in accordance with claim 15, wherein the plurality of scalar registers provide a data tunnel.
- 17. A method for configuring a streaming vector processor comprising an interconnection switch, a micro-sequencer and a plurality of function units, the method comprising:
storing a program of instructions in the micro-sequencer; retrieving an instruction of the program of instructions; configuring the interconnection switch in accordance the instruction retrieved from the program of instructions; providing data stored in a first memory to a function unit in accordance the instruction received from the program of instructions; the function unit operating on the data; and storing data from a function unit in a second memory in accordance the instruction received from the program of instructions.
- 18. A method in accordance with claim 17, wherein the streaming vector processor further comprises one or more input stream units having a buffer memory and wherein the first memory is one or more of the buffer memory of the input stream unit and a memory in the interconnection switch.
- 19. A method in accordance with claim 18, the method further comprising each input stream unit retrieving data values from an external memory and storing them in the buffer memory of the input stream unit in accordance with a set parameters received from a host processor.
- 20. A method in accordance with claim 17, wherein the streaming vector processor further comprises one or more output stream units having a buffer memory and wherein the second memory is one or more of the buffer memory of the output stream unit and a memory in the interconnection switch.
- 21. A method in accordance with claim 20, further comprising each output stream unit writing data values from the buffer memory of the output stream unit to an external memory in accordance with a set parameters received from a host processor.
- 22. A method for programming a streaming vector processor to perform an iterative computation, the streaming vector processor having a re-configurable data path and the method comprising:
specifying a data-flow graph of an iteration of the iterative computation; generating, from the data-flow graph, a linear graph specifying a partially ordered set of operations corresponding to the data-flow graph; scheduling the linear graph onto the data path of the streaming vector processor; and generating binary code instructions operable to configure the data path of the streaming vector processor.
- 23. A method in accordance with claim 22, wherein the streaming vector processor includes a micro-sequencer having a memory and the method further comprises storing the binary code instructions in the memory of the micro-sequencer.
- 24. A method in accordance with claim 23, wherein the scheduling the linear graph and generating binary code instructions are performed by a computer.
- 25. A method in accordance with claim 22, wherein the generating a linear graph further comprises specifying the data-flow graph using a graphical user interface to a computer and the computer automatically generating the linear graph from the data-flow graph.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to co-pending patent applications titled “INTERCONNECTION DEVICE WITH INTEGRATED STORAGE” and identified by Attorney Docket No. CML00101D, “MEMORY INTERFACE WITH FRACTIONAL ADDRESSING” and identified by Attorney Docket No. CML00102D, “SCHEDULER FOR STREAMING VECTOR PROCESSOR” and identified by Attorney Docket No. CML00108D, “METHOD OF PROGRAMMING LINEAR GRAPHS FOR STREAMING VECTOR COMPUTATION” and identified by Attorney Docket No. CML00109D, which are filed on even day herewith and are hereby incorporated herein by reference.