Claims Analysis
Total Claims: 22
Claim 1
Independent Claim
353 words
In a computer system including a plurality of symmetric multi-processors, each symmetric multi-processor including a plurality of processors, a memory having addresses, and an input/output interface connected to each other by a bus, the input/output interfaces connecting the symmetric multi-processors to each other by a network, a software implemented method for sharing access to data stored in the memories of the symmetric multi-processors, comprising the steps of: designating a set of the addresses of the memories as virtual shared addresses to store shared data; allocating a portion of the virtual shared addresses to store a shared data structure as one or more blocks accessible by programs executing in any of the processors, the size of a particular allocated block to vary with the size of the shared data structure, each block including an integer number of lines, each line including a predetermined number of bytes of shared data; maintaining a shared state table including a plurality of shared state entries, there being one shared table entry for each line of the one or more blocks, each shared state entry to indicate a possible state of the line, the possible states being invalid, shared, exclusive, and pending; and maintaining a private state table for each processor of the plurality of symmetric multi-processors, each private state table having a plurality of private state entries, the private state table entries of a particular private state table to indicate a possible state of a particular line accessed by the associated particular processor: storing directory information of a particular block of the shared data structure in the memory of a home processor, the directory information including the size of the particular block; instrumenting the programs with instructions which access the shared data to check whether the data are available; and in response to receiving an access request from a requesting one of the processors to access the shared data, sending a particular block including the particular line and the size of the particular block to the requesting processor via the network to enable the processors to exchange shared data structures stored in variable sized blocks via the network.
Claim 2
Dependent Claim
353 words
In a computer system including a plurality of symmetric multi-processors, each symmetric multi-processor including a plurality of processors, a memory having addresses, and an input/output interface connected to each other by a bus, the input/output interfaces connecting the symmetric multi-processors to each other by a network, a software implemented method for sharing access to data stored in the memories of the symmetric multi-processors, comprising the steps of: designating a set of the addresses of the memories as virtual shared addresses to store shared data; allocating a portion of the virtual shared addresses to store a shared data structure as one or more blocks accessible by programs executing in any of the processors, the size of a particular allocated block to vary with the size of the shared data structure, each block including an integer number of lines, each line including a predetermined number of bytes of shared data; maintaining a shared state table including a plurality of shared state entries, there being one shared table entry for each line of the one or more blocks, each shared state entry to indicate a possible state of the line, the possible states being invalid, shared, exclusive, and pending; and maintaining a private state table for each processor of the plurality of symmetric multi-processors, each private state table having a plurality of private state entries, the private state table entries of a particular private state table to indicate a possible state of a particular line accessed by the associated particular processor: storing directory information of a particular block of the shared data structure in the memory of a home processor, the directory information including the size of the particular block; instrumenting the programs with instructions which access the shared data to check whether the data are available; and in response to receiving an access request from a requesting one of the processors to access the shared data, sending a particular block including the particular line and the size of the particular block to the requesting processor via the network to enable the processors to exchange shared data structures stored in variable sized blocks via the network.
Claim 3
Dependent Claim
49 words
The method of claim 1 further comprising: storing the directory information in a directory maintained by the home processor, the directory including an entry for each line of the one or more blocks of the shared data structure, each entry including the size the particular block including the line.
Claim 4
Dependent Claim
43 words
The method of claim 2 further comprising: maintaining, in the entry for each line of the particular block, an identity of a controlling one of the processors, the controlling processor last having an exclusive copy of the particular block including the particular line.
Claim 5
Dependent Claim
39 words
The method of claim 3 further comprising: maintaining, in the entry, a bit vector, the bit vector including one bit for each processor, each bit to indicate whether a corresponding processor has a shared copy of the particular block.
Claim 6
Dependent Claim
28 words
The method of claim 1 further comprising: dynamically changing the size of the one or more blocks allocated for the shared data structure while the programs are executing.
Claim 7
Dependent Claim
20 words
The method of claim 1 further comprising: locking the shared state table before modifying one of the shared table entries.
Claim 8
Dependent Claim
32 words
The method of claim 6 further comprising: setting the state of each line of the one or more blocks to invalid before dynamically changing the size of the one or more blocks.
Claim 9
Dependent Claim
24 words
The method of claim 7 further comprising: modifying one of the private state tables only by the processor associated with the private state table.
Claim 10
Dependent Claim
44 words
The method of claim 8 further comprising: selectively sending a message from a particular one of the processors of a particular symmetric multi-processor to other processors of the particular symmetric multi-processor when downgrading states in the private state table associated with the particular processor.
Claim 11
Dependent Claim
40 words
The method of claim 1 wherein the number of lines of the one or more blocks of a first shared data structure are different than the number of lines of the one or more blocks of a second data structure.
Claim 12
Dependent Claim
43 words
The method of claim 1 wherein the number of bytes in one of the lines of the first data structure in one program are different than the number of bytes in one of the lines of a second data structure in another program.
Claim 13
Dependent Claim
26 words
The method of claim 1, wherein the designating step includes a private data section used to store data structures for use by a single local processor.
Claim 14
Dependent Claim
24 words
The method of claim 1, wherein the designating step provides a state table which includes the shared state table and the private state table.
Claim 15
Dependent Claim
27 words
The method of claim 13, wherein the state table includes exclusion tables as a part thereof, the exclusion tables including a shared portion and a private portion.
Claim 16
Independent Claim
246 words
A system comprising: a network; a plurality of symmetric multi-processors interconnected by the network, each symmetric multi-processor including a plurality of processors; and a memory having a layout of addresses for each symmetric multi-processor, each memory address having a designated set of virtual shared addresses to store shared data, a portion of the virtual shared addresses storing a shared data structure as one or more blocks accessible by programs executing in any of the processors, the size of a particular allocated block varying with a size of the shared data structure, each block including an integer number of lines, each line including a predetermined number of bytes of shared data; wherein the layout includes: i) a shared state table including a plurality of shared state entries, one shared entry for each line of the one or more entries, each shared entry indicating a possible state of the line, the possible states being invalid, shared, exclusive and pending; ii) a private state table for each processor of the plurality of symmetric multi-processors, each private state table having a plurality of private state entries, the private state entries of a particular private state table indicating a possible state of a particular line accessed by the associated particular processor; wherein the shared data is accessed to check whether the data are available and a particular block is sent to a requesting processor from one other processor via the network to exchange shared data structures stored in variable sized blocks.
Claim 17
Independent Claim
246 words
A system comprising: a network; a plurality of symmetric multi-processors interconnected by the network, each symmetric multi-processor including a plurality of processors; and a memory having a layout of addresses for each symmetric multi-processor, each memory address having a designated set of virtual shared addresses to store shared data, a portion of the virtual shared addresses storing a shared data structure as one or more blocks accessible by programs executing in any of the processors, the size of a particular allocated block varying with a size of the shared data structure, each block including an integer number of lines, each line including a predetermined number of bytes of shared data; wherein the layout includes: i) a shared state table including a plurality of shared state entries, one shared entry for each line of the one or more entries, each shared entry indicating a possible state of the line, the possible states being invalid, shared, exclusive and pending; ii) a private state table for each processor of the plurality of symmetric multi-processors, each private state table having a plurality of private state entries, the private state entries of a particular private state table indicating a possible state of a particular line accessed by the associated particular processor; wherein the shared data is accessed to check whether the data are available and a particular block is sent to a requesting processor from one other processor via the network to exchange shared data structures stored in variable sized blocks.
Claim 18
Dependent Claim
14 words
The system of claim 15, wherein the private state table includes an exclusion table.
Claim 19
Dependent Claim
17 words
The system of claim 16, wherein the exclusion table includes a shared portion and a private portion.
Claim 20
Dependent Claim
24 words
The system of claim 15, wherein the shared state table is capable of being locked before one of the shared table entries is modified.
Claim 21
Dependent Claim
28 words
The system of claim 15, wherein the private state table of a particular processor is capable of modification only by that processor associated with the private state table.
Claim 22
Dependent Claim
41 words
The system of claim 15, wherein one of the processors is designated as a home processor for storing directory information of a particular block of the shared data structure in the memory, the directory information including the size of the block.