Claims
- 1. A massively-parallel computer comprising a plurality of processing nodes and at least one control node interconnected by a network for facilitating the transfer of data among the processing nodes and of commands from the control node to the processing nodes, each processing node comprising:A. an interface for transmitting data over, and receiving data and commands from, said network; B. at least one memory module for storing data in a plurality of storage locations; C. a node processor for receiving commands received by the interface and for processing data in response thereto, said node processor generating memory access requests for facilitating the retrieval of data from or storage of data in said memory module, said node processor further controlling the transfer of data over said network by said interface; and D. an auxiliary processor connected to said memory module, said auxiliary processor including: (i) a memory interface for performing, in response to memory access requests from said node processor, one or more memory access operations to store data received from said node processor in said memory module, or to retrieve data from said memory module for transfer to said node processor, (ii) a data processor for performing, in response to said auxiliary processing instructions and data processing control signals, data processing operations in connection with data in said memory module, said data processor including a data processing circuit, a register file that includes a plurality of resisters that are identified respectively by register identifications, and connected to said register file one or more register identifier generation circuits with at least one register identifier generation circuit including (a) a register identifier store for initially receiving a base register value, (b) a register identifier incrementation value circuit for supplying a register offset value for each elemental operation, (c) a register incrementation mode identifier for identifying a register identifier incrementation mode; and (d) a register identifier generator for operating in a register offset mode to generate in a register identifier incrementation circuit for each elemental operation an incremented register identifier value that corresponds to the contents of said register identifier store incremented by the register offset value and coupling in a register identifier coupling circuit said incremented register identifier value to said register file as a register identifier value, (ii) a control interface for receiving (a) said memory access requests and for generating memory access control signals in response thereto, and (b) said auxiliary processing instructions and in connection therewith an address and a data processing operation identifier that identifies one of a plurality of data processing operations and for generating memory access control signals to enable said memory interface to selectively retrieve data from said memory module for transfer to an identified register in said data processor or to transfer data from an identified register to said memory module for storage said control interface further generating data processing control signals to enable said data processing circuit to perform a data processing operation as one or more elemental operation using the contents of selected ones of said registers as input data and transferring the associated processed data to selected registers for storage.
- 2. A computer as defined in claim 1 in which said auxiliary processor includes;A. a memory interface (31) connected to said memory nodule for performing memory access operations in connection with said memory module in response to memory access control signals; B. a data processor (32) for performing data processing operations in response to data processing control signals; and C. a control interface (30) for receiving (i) said memory access requests from said node processor and for generating memory access control signals in response thereto, and (ii) said auxiliary processing instructions from said node processor and for generating data processing control signals in response thereto.
- 3. A computer as defined in claim 2 in which said control interface further selectively generates memory access control signals in response to receipt of auxiliary processing instructions to thereby enable said memory interface to perform a memory access operation to selectively retrieve data from said memory module for transfer to said data processor or to transfer data from said data processor to said memory module for storage.
- 4. A computer as defined in claim 3 in which:A. said memory module stores data in a plurality of storage locations each identified by an address; and B. said control interface, in connection with a said auxiliary processing instruction, receives an address and a data processing operation identifier identifying one of a plurality of data processing operations, said control interface enabling said memory interface to perform a memory access operation to selectively transfer data between the storage location and the data processor, said control interface further enabling said data processor to perform a data processing operation as identified by said data processing operation identifier.
- 5. A computer as defined in claim 4 in which said control interface, in connection with a said auxiliary processing instruction, further receives a load/store identifier identifying a load operation or a store operation, said control interface in response to a load/store identifier identifying a load operation enabling said memory module to retrieve data from a storage location identified by the received address for transfer to said data processor, aid in response to a load/store identifier identifying a store operation enabling said memory module to store data received from said data processor in a storage location identified by the received address.
- 6. A computer as defined in claim 5 in which:A. said data processor includes a register file (34) including a plurality of registers each identified by a register identification and a data processing system circuit (66), said load/store identifier further including a register identifier, and B. said control interface enabling said data processor to i. store data retrieved from said memory module in a register identified by said register identifier if said load/store identifier identifies a load operation, and ii. Retrieve data from a register identified by said register identifier for transfer to said memory module if said load/store identifier identifies a store operation.
- 7. A computer is defined in claim 6 in which, in response to data processing control signals from said control circuit, said register file transfers input data representing contents of selected ones of said registers to said data processing circuit, said data processing circuit generating in response processed data representing a selected function as selected by said data processing control signals of the input data, said data processing circuit transferring the processed data to said register file for storage in a selected register.
- 8. A computer as defined in claim 7 in which, in response to a said auxiliary processing instruction, said control circuit generates data processing control signals to enable, for each of a plurality of successive elemental operations,A. said register file to transfer input data items representing the contents of selected registers to said data processing circuit, and receive processed data items from said data processing circuit for storage in selected registers, the input data items provided for each elemental operation and processed data items received for each elemental operation representing vector elements of corresponding vectors; and B. said data processing circuit to, in response to said input data items from said register file, generate processed data items for transfer to the register file for storage.
- 9. A computer as defined in claim 8 in which said control circuit includes a vector length register (101) for storing a vector length value, said control circuit using the vector length value to determine the number of elemental operations.
- 10. A computer as defined in claim 9 in which said auxiliary processor further includes a register identifier generation circuit connected to said register file for generating, for each of said elemental operations, register identifiers for selecting registers (i) whose contents are to be transferred to said data processing circuit as input data items and (ii) which are to receive processed data items for storage.
- 11. A computer as defined in claim 10 in which said auxiliary processor includes a plurality of register identifier generation circuits, each for generating a register identifier for an input data item to be provided for an elemental operation, at least one register identifier generation circuit including:A. a register identifier store (312) for initially receiving a base register value, the contents of said register identifier store being coupled to said register file to identify a register for each elemental operation; B. a register stride value store (291) for receiving a register stride value; and C. an incrementation circuit (310) for incrementing the contents of said register identifier store by the register stride value following each elemental operation to provide a new register identifier for the succeeding elemental operation.
- 12. A computer as defined in claim 10 in which said auxiliary processor includes a plurality of register identifier generation circuits, each for generating a register identifier for an input data item to be provided for an elemental operation, at least one register identifier generation circuit including:A. a register identifier store (312) for initially receiving a base register value; B. a register identifier incrementation value circuit (280) for supplying a register identifier incrementation value; C. a register incrementation mode identifier for identifying a register identifier incrementation mode; and D. a register identifier generator (292, 310, 313, 314) for generating a register identifier value to be coupled to said register file for each elemental operation in response to said base register value in said register identifier store, said register identifier incrementation value provided by said register identifier incrementation value circuit and said register identifier incrementation mode.
- 13. A computer as defined in claim 12 in which one register identifier incrementation mode is a register stride mode,A. said register identifier incrementation value circuit including a register stride value store (291) for supplying a register stride value; and B. said register identifier generator including: i. a register identifier coupling circuit (313, 314) for coupling the base register value from said register identifier store as a register identifier value; and ii. a register identifier incrementation circuit (310) for incrementing the contents of said register identifier store by the register stride value following, each elemental operation to provide a new register identifier for the succeeding elemental operation.
- 14. A computer as defined in claim 1 in which said auxiliary processor further includes a series of offset value stores each for storing one of a series of register offset values, said register offset value circuit coupling register offset values from successive ones of said offset value stores to said register identifier incrementation circuit as the register offset values for successive elemental operations.
- 15. A computer as defined in claim 1 in which said offset value stores comprise a like number of fields of at least one register of said register file, said register offset value circuit coupling register offset values from successive finds of said register as said register offset values for successive elemental operations.
- 16. A computer as defined in claim 8 in which said control circuit further includes a conditionalizing circuit (67) for selectively disabling storage of processed data execution by said data processor of selected elemental operations.
- 17. A massively-parallel computer comprising a plurality of processing nodes and at least one control node interconnected by a network for facilitating the transfer of data among the processing nodes and of commands from the control node to the processing nodes, each processing node comprising:A. an interface for transmitting data over, and receiving data and commands from, said network; B. at least one memory module for storing data in a plurality of storage locations; C. a node processor for receiving commands received by the interface and for processing data in response thereto, said node processor generating memory access requests for facilitating the retrieval of data from or storage of data in said memory module, said node processor further controlling the transfer of data over said network by said interface; and D. an auxiliary processor connected to said memory module, said auxiliary processor including: (i) a memory interface for performing in response to memory access requests from said node processor, one or more memory access operations to store data received from said node processor in said memory module, or to retrieve data from said memory module for transfer to said node processor, (ii) a data processor for performing, in response to said auxiliary processing instructions and data processing control signals data processing operations in connection with data in said memory module, said data processor including a data processing circuit, a register file that includes a plurality of registers that are identified respectively by register identifications, and connected to said register file one or more register identifier generation circuits with at least one register identifier generation circuit including (a) a register identifier store for initially receiving a base register value, (b) a register identifier incrementation value circuit for supplying a register offset value for each elemental operation, (c) a register incrementation mode identifier for identifying a register identifier incrementation mode; and (d) a register identifier generator operating in a register offset mode to generate in a register identifier incrementation circuit for each elemental operation an incremented register identifier value that corresponds to the contents of said register identifier store incremented by the register offset value and coupling in a register identifier coupling circuit said incremented register identifier value to said register file as a register identifier value, (iii) a control interface for receiving (a) said memory access requests and for generating memory access control signals in response thereto, and (b) said auxiliary processing instructions and in connection therewith an address and a data processing operation identifier that identifies one of a plurality of data processing operations and for generating memory access control signals to enable said memory interface to selectively retrieve data from said memory module for transfer to an identifier register in said data processor or to transfer data from an identifier register to said memory module for storage said control interface further generating data processing control signals to enable said data processing circuit to perform a data processing operation as one or more elemental operations using the contents of selected ones of said registers as input data and transferring the associated processed data to selected registers for storage, said control interface also in response to certain auxiliary processing instructions, processing a series of input data items as elements of one or more vectors by directing the performing of an elemental operation or a series of elemental operations in connection with corresponding elements of each of said vectors to produce associated processed data items, and in response to certain other auxiliary processing instructions selectively disabling storage of one or more of said processed data items.
- 18. The massively-parallel computer of claim 17 wherein said auxiliary processor produces one or more vectors that each has as elements selected processed data items.
- 19. The massively-parallel computer of claim 17 wherein said auxiliary processor includes means for selectively setting bits in a multiple-bit vector mask that is associated with the elemental operations, said means disabling storage of selected processed data items.
- 20. The massively-parallel computer of claim 19 wherein said node processor further includes means for selecting said vector masks from a plurality of associated vector masks.
- 21. The massively-parallel computer of claim 20 wherein said means for selecting said vector masks includes means for complementing bits of a selected vector mask to control the operations performed with selected elements of said one or more vectors.
- 22. The massively-parallel computer of claim 21 wherein said means for selecting said vectors masks directs said auxiliary processor to perform one operation or set of operations with selected elements of said one or more vectors and to perform a different operation or set of operations with the remaining elements of said one or more vectors.
- 23. The massively-parallel computer of claim 22 further including at each processing node a plurality of auxiliary processors, each of said auxiliary processors operating individually in response to individual auxiliary processing instructions and selected auxiliary processors operating in parallel in response to an auxiliary processing instruction directed to said selected auxiliary processors.
CROSS REFERENCE
This application is a continuation of application Ser. No. 08/714,635 filed Sep. 16, 1996, U.S. Pat. No. 5,872,987 which is a continuation of application Ser. No. 08/559,507 filed Nov. 15, 1995, now abandoned, which is a continuation of application Ser. No. 08/306,853 filed Sep. 15, 1994, now abandoned, which is a continuation of application Ser. No. 07/926,980 filed Aug. 7, 1992, now abandoned. The prior application is incorporated by reference herein.
U.S. patent application Ser. No. 07/592,029, filed Oct. 3, 1990, in the name of David. C. Douglas, et al., for Parallel Computer System now abandoned.
U.S. patent application Ser. No. 07/602,441, filed Oct. 23, 1990, in the name of W. Daniel Hillis, and entitled Parallel Processor now U.S. Pat. No. 5,146,608.
U.S. patent application Ser. No. 07/746,035, filed Aug. 18, 1991, in the name of David C. Douglas, et al., for Massively Parallel Computer Partitionable Through A Switchable Fat-Tree Control Network now U.S. Pat. No. 5,353,412.
U.S. patent application Ser. No. 07/746,038, filed Aug. 18, 1991, in the name of David S. Wells, et al., for Input/Output System For Massively Parallel Computer System now U.S. Pat. No. 5,361,363.
US Referenced Citations (7)
Continuations (4)
|
Number |
Date |
Country |
Parent |
08/714635 |
Sep 1996 |
US |
Child |
09/040747 |
|
US |
Parent |
08/559507 |
Nov 1995 |
US |
Child |
08/714635 |
|
US |
Parent |
08/306853 |
Sep 1994 |
US |
Child |
08/559507 |
|
US |
Parent |
07/926980 |
Aug 1992 |
US |
Child |
08/306853 |
|
US |