Virtual processor method and apparatus for enhancing parallelism and availability in computer systems
First Claim
Patent Images
1. A computer system, comprising:
- (a) a plurality of processor nodes, each of the processor nodes having a plurality of data storage devices connected thereto;
(b) an interconnect network, coupled to the processor nodes, for transmitting messages between processor nodes;
(c) each of the processor nodes comprising a plurality of vproc means for performing a plurality of threads simultaneously, wherein each vproc means independently performs one of the threads, the threads being streams of instructions executed on behalf of a task, wherein each of the threads access data on a different data storage device simultaneously with the other threads; and
(d) each of the processor nodes comprising operating system means for assigning the vproc means to processor nodes at system startup, further comprising means for creating and storing a translation table identifying locations of vproc means and processor nodes on the interconnect network at the system startup.
3 Assignments
0 Petitions
Accused Products
Abstract
A virtual processor method and apparatus for parallel computer systems that increases the level of parallelism to include multiple threads per node. If a processor node has a plurality of storage devices attached, a single thread can be allocated to each device. Similarly, if a processor node has multiple CPUs, each individual thread can utilize a different CPU. Thus, a task could potentially occupy all available hardware in the system. The result is increased system utilization and availability.
97 Citations
22 Claims
-
1. A computer system, comprising:
-
(a) a plurality of processor nodes, each of the processor nodes having a plurality of data storage devices connected thereto; (b) an interconnect network, coupled to the processor nodes, for transmitting messages between processor nodes; (c) each of the processor nodes comprising a plurality of vproc means for performing a plurality of threads simultaneously, wherein each vproc means independently performs one of the threads, the threads being streams of instructions executed on behalf of a task, wherein each of the threads access data on a different data storage device simultaneously with the other threads; and (d) each of the processor nodes comprising operating system means for assigning the vproc means to processor nodes at system startup, further comprising means for creating and storing a translation table identifying locations of vproc means and processor nodes on the interconnect network at the system startup. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computer system, comprising:
-
(a) a plurality of processor nodes, each of the processor nodes having a plurality of data storage devices connected thereto; (b) an interconnect network, coupled to the processor nodes, for transmitting messages between processor nodes; (c) each of the processor nodes comprising a plurality of vproc means for performing a plurality of threads simultaneously, wherein each vproc means independently executes one of the threads, the threads being streams of instructions executed on behalf of a task, wherein each of the threads access data on a different data storage device simultaneously with the other threads; and (d) each of the processor nodes comprising an operating system means for assigning the vproc means to processor nodes at system startup, for creating and storing a translation table identifying locations of vproc means and processor nodes on the interconnect network at startup time, and for providing updates to the translation table when movement of the vproc means between processor nodes occurs during runtime. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A method of communicating between a plurality of threads executing in a parallel computer system comprising a plurality of processor nodes after a processor node failure, the method comprising the steps of:
-
(a) utilizing a plurality of vprocs to perform multiple threads simultaneously, wherein each vproc comprises an operating environment in one of the processor nodes for performing one of said multiple threads, each one of said multiple threads being a stream of instructions executed on behalf of a task, wherein each one of said multiple threads access data on a different data storage device simultaneously with the rest of said multiple threads; (b) moving a vproc from a first processor node to a second processor node after the first processor node has failed; (c) updating a vproc/processor node translation table to reflect the movement of the vproc from the first processor node to the second processor node, so that any messages are routed to the vproc in the second processor node; (d) storing information from the vproc on a virtual disk comprised one or more memory regions of the data storage devices that are grouped together, wherein the virtual disk is accessible by any processor node within a clique; (e) moving the vproc to a processor node in the clique; and (f) restarting a thread performed by the moved vproc using information retrieved from the virtual disk. - View Dependent Claims (14)
-
-
15. A method of executing instructions in a parallel computer system comprised of a plurality of processor nodes, each of the processor nodes having a plurality of data storage devices connected thereto, and an interconnect network, coupled to the processor nodes, for transmitting messages between processor nodes, the method comprising:
-
(a) utilizing a plurality of vprocs to perform multiple threads simultaneously, wherein each vproc comprises an operating environment in one of the processor nodes for performing one of said multiple threads, each one of said multiple threads being a stream of instructions executed on behalf of a task, wherein each one of said multiple threads access data on a different data storage device simultaneously with the rest of said multiple threads; and (b) assigning each of the vprocs to one of the processor nodes at system startup, further comprising creating and storing a translation table identifying locations of vprocs and processor nodes on the interconnect network at the system startup. - View Dependent Claims (16, 17, 18)
-
-
19. A method of executing instructions in a parallel computer system comprised of a plurality of processor nodes, each of the processor nodes having a plurality of data storage devices connected thereto, and an interconnect network, coupled to the processor nodes, for transmitting messages between processor nodes, the method comprising:
-
(a) utilizing a plurality of vprocs to perform multiple threads simultaneously, wherein each vproc comprises an operating environment in one of the processor nodes for performing one of said multiple threads, each one of said multiple threads being a stream of instructions executed on behalf of a task, wherein each one of said multiple threads access data on a different data storage device simultaneously with the rest of said multiple threads; and (b) assigning the vprocs to processor nodes at system startup, including the steps of creating and storing a translation table identifying locations of vprocs and processor nodes on the interconnect network at system startup, and providing updates to the translation table when movement of the vprocs between processor nodes occur during runtime. - View Dependent Claims (20, 21, 22)
-
Specification