← Back to Patent Explorer
US5263144A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for sharing data between processors in a computer system

Assignee: Hewlett Packard Development Co LP
•
Filing: 1990-06-29
•
Granted: 1993-11-16
•
Expires: 2010-06-29
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A cache coherency scheme in a multiprocessor computer system allows data sharing between caches at a fast rate. A new cache coherency state is introduced which allows a processor pair to more effectively share data and eliminate bus transfers thereby improving system throughput. The transfer of data is accomplished by the returning a portion of a preselected data block pursuant to either a read or a read for ownership request by a first one of the processors of the processor pair by the second processor of the processor pair. The ownership of the portion of the preselected data block is shared by the processor pair. Both processors set an indicator to denote that the preselected data block is an incomplete data block.

Inventors

  • 👤 John H. Zurawski
  • 👤 Raj Ramanujan
  • 👤 John De Rosa

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 06:08
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0806; G06F12/0815; G06F12/0831

Claims Analysis

Total Claims: 32
Claim 1
Independent Claim 255 words
A computer system comprising: a plurality of processors having at least one processor pair, each one of the plurality of processors including a write-back cache for temporary storage of copies of preselected data blocks, the plurality of processors being coupled to each other by a bus; a plurality of selectively setable identifiers, each one of the plurality of selectively setable identifiers associated with a respective copy of the preselected data blocks stored in the write-back caches of the plurality of processors; each one of the plurality of selectively setable identifiers being selectively set to indicate an incomplete state of the copy of the preselected data blocks associated with said one of the plurality of selectively setable identifiers; a first processor of a processor pair of the plurality of processors transmits a read request on the bus when the first processor preselects a particular data block for temporarily storing a copy thereof in the write back cache of the first processor; and a second processor of the processor pair of the plurality of processors transmits a preselected portion of the particular data block requested by the first processor on the bus when the particular data block is stored in the write-back cache of the second processor in an owned state, thereby giving partial ownership of the portion of the particular data block to the first processor, and said second processor sets the one of the plurality of selectively setable identifiers associated with the particular data block to indicate the incomplete state of the particular data block.
Claim 2
Dependent Claim 255 words
A computer system comprising: a plurality of processors having at least one processor pair, each one of the plurality of processors including a write-back cache for temporary storage of copies of preselected data blocks, the plurality of processors being coupled to each other by a bus; a plurality of selectively setable identifiers, each one of the plurality of selectively setable identifiers associated with a respective copy of the preselected data blocks stored in the write-back caches of the plurality of processors; each one of the plurality of selectively setable identifiers being selectively set to indicate an incomplete state of the copy of the preselected data blocks associated with said one of the plurality of selectively setable identifiers; a first processor of a processor pair of the plurality of processors transmits a read request on the bus when the first processor preselects a particular data block for temporarily storing a copy thereof in the write back cache of the first processor; and a second processor of the processor pair of the plurality of processors transmits a preselected portion of the particular data block requested by the first processor on the bus when the particular data block is stored in the write-back cache of the second processor in an owned state, thereby giving partial ownership of the portion of the particular data block to the first processor, and said second processor sets the one of the plurality of selectively setable identifiers associated with the particular data block to indicate the incomplete state of the particular data block.
Claim 3
Dependent Claim 47 words
The computer system according to claim 1 wherein the first processor further comprises a write buffer for temporary storage of the portion of the particular data block transmitted by the second processor after the portion of the particular data block has been modified by the first processor.
Claim 4
Dependent Claim 69 words
The computer system according to claim 1 wherein the first and second processors are coupled by a second bus and wherein the second processor further comprises a write buffer for temporary storage of the portion of the particular data block after the portion of the particular data block has been modified by the first processor and transmitted by the first processor across the second bus to the second processor.
Claim 5
Dependent Claim 81 words
The computer system of claim 3 wherein the second processor further comprises a device for merging the preselected portion of the particular data block modified by the first processor with a remainder of the particular data block stored in the write-back cache of the second processor, storing a merged data block in the write-back cache of the second processor and clearing the one of the plurality of selectively setable identifiers associated with the particular data block to clear the incomplete state.
Claim 6
Dependent Claim 29 words
The computer system according to claim 1 wherein the first and second processors of the plurality of processors are arranged to cooperate together to function as a processor pair.
Claim 7
Dependent Claim 15 words
The computer system according to claim 1 wherein the read request is a read command.
Claim 8
Dependent Claim 17 words
The computer system according to claim 1 wherein the read request is a read for ownership command.
Claim 9
Dependent Claim 311 words
A computer system comprising: a plurality of processors having at least one processor pair, each of one of the plurality of processors including a write-back cache for temporary storing of copies of preselected data blocks, the plurality of processors being coupled to each other by a first bus; a central memory control mechanism; each one of the plurality of processors being coupled by the first bus to the central memory control mechanism; the central memory control mechanism being coupled to a main memory module by a second bus, the main memory module stores data; a plurality of selectively setable identifiers, each one of the plurality of selectively setable identifiers associated with a respective copy of the preselected data blocks stored in the write-back caches of the plurality of processors; each one of the plurality of selectively setable identifiers being selectively set to indicate a block incomplete state of the copy of the preselected data blocks associated with said one of the plurality of selectively setable identifiers; a first processor of a processor pair of the plurality of processors transmits a read request on the first bus when the first processor preselects a particular data block for temporary storing a copy thereof in the write back cache of the first processor in an owned state; and a second processor of the processor pair of the plurality of processors transmits a preselected portion of the particular data block requested by the first processor on the first bus when the particular data block is stored in the write-back cache of the second processor in the owned state, thereby giving partial ownership to the portion of the particular data block to the first processor, and said second processor sets the one of the plurality of selectively setable identifiers associated with the particular data block to indicate the block incomplete state of the particular data block.
Claim 10
Dependent Claim 311 words
A computer system comprising: a plurality of processors having at least one processor pair, each of one of the plurality of processors including a write-back cache for temporary storing of copies of preselected data blocks, the plurality of processors being coupled to each other by a first bus; a central memory control mechanism; each one of the plurality of processors being coupled by the first bus to the central memory control mechanism; the central memory control mechanism being coupled to a main memory module by a second bus, the main memory module stores data; a plurality of selectively setable identifiers, each one of the plurality of selectively setable identifiers associated with a respective copy of the preselected data blocks stored in the write-back caches of the plurality of processors; each one of the plurality of selectively setable identifiers being selectively set to indicate a block incomplete state of the copy of the preselected data blocks associated with said one of the plurality of selectively setable identifiers; a first processor of a processor pair of the plurality of processors transmits a read request on the first bus when the first processor preselects a particular data block for temporary storing a copy thereof in the write back cache of the first processor in an owned state; and a second processor of the processor pair of the plurality of processors transmits a preselected portion of the particular data block requested by the first processor on the first bus when the particular data block is stored in the write-back cache of the second processor in the owned state, thereby giving partial ownership to the portion of the particular data block to the first processor, and said second processor sets the one of the plurality of selectively setable identifiers associated with the particular data block to indicate the block incomplete state of the particular data block.
Claim 11
Dependent Claim 47 words
The computer system according to claim 8 wherein the first processor further comprises a write buffer for temporary storage of the portion of the particular data block transmitted by the second processor after the portion of the particular data block has been modified by the first processor.
Claim 12
Dependent Claim 69 words
The computer system according to claim 8 wherein the first and second processors are coupled by a second bus and wherein the second processor further comprises a write buffer for temporary storage of the portion of the particular data block after the portion of the particular data block has been modified by the first processor and transmitted by the first processor across the second bus to the second processor.
Claim 13
Dependent Claim 81 words
The computer system of claim 10 wherein the second processor further comprises a device for merging the preselected portion of the particular data block modified by the first processor with a remainder of the particular data block stored in the write-back cache of the second processor, storing a merged data block in the writeback cache of the second processor and clearing the one of the plurality of selectively setable identifiers associated with the particular data block to clear the incomplete state.
Claim 14
Dependent Claim 29 words
The computer system according to claim 8 wherein the first and second processors of the plurality of processors are arranged to cooperate together to function as a processor pair.
Claim 15
Dependent Claim 15 words
The computer system according to claim 8 wherein the read request is a read command.
Claim 16
Dependent Claim 17 words
The computer system according to claim 8 wherein the read request is a read for ownership command.
Claim 17
Independent Claim 266 words
A method for maintaining data coherency in a computer system including a plurality of processors, each one of the plurality of processors including a write-back cache, the plurality of processors being coupled to each other by a first bus, a first and second processor of the plurality of processors being grouped together to form a processor pair, coupled by a second bus, the method comprising the steps of: (a) temporarily storing copies of preselected data blocks in certain ones of the write-back caches; (b) operating the first processor to transmit a read request on the first bus requesting access to a preselected data block; (c) operating the second processor to process the read request in the second processor to determine if the preselected data block is stored in the write-back cache of the second processor in an owned state; and (d) when the preselected data block is stored in the write-back cache of the second processor in an owned state, (i) operating the second processor to set an incomplete data block identifier for the preselected data block stored in the write-back cache of the second processor, (ii) operating the second processor to transmit a preselected portion of the preselected data block to the first processor giving the first processor partial ownership of the preselected portion of the preselected data block stored in the write-back cache of the second processor; and (iii) operating the second processor to set a second identifier to mark the preselected portion of the preselected data block stored in the write-back cache of the second processor that was transmitted to the first processor.
Claim 18
Independent Claim 266 words
A method for maintaining data coherency in a computer system including a plurality of processors, each one of the plurality of processors including a write-back cache, the plurality of processors being coupled to each other by a first bus, a first and second processor of the plurality of processors being grouped together to form a processor pair, coupled by a second bus, the method comprising the steps of: (a) temporarily storing copies of preselected data blocks in certain ones of the write-back caches; (b) operating the first processor to transmit a read request on the first bus requesting access to a preselected data block; (c) operating the second processor to process the read request in the second processor to determine if the preselected data block is stored in the write-back cache of the second processor in an owned state; and (d) when the preselected data block is stored in the write-back cache of the second processor in an owned state, (i) operating the second processor to set an incomplete data block identifier for the preselected data block stored in the write-back cache of the second processor, (ii) operating the second processor to transmit a preselected portion of the preselected data block to the first processor giving the first processor partial ownership of the preselected portion of the preselected data block stored in the write-back cache of the second processor; and (iii) operating the second processor to set a second identifier to mark the preselected portion of the preselected data block stored in the write-back cache of the second processor that was transmitted to the first processor.
Claim 19
Dependent Claim 114 words
The method of claim 15 wherein the first processor requires access to the preselected data block further comprising the steps of: (a) operating the first processor to receive the preselected portion of the preselected data block transmitted from the second processor; (b) operating the first processor to detect that the preselected portion of the preselected data block was transmitted by the second processor; (c) operating the first processor to set an incomplete data block identifier for the preselected portion of the preselected data block it received from the second processor; and (d) operating the first processor to store the preselected portion of the preselected data block in the write-back cache of the first processor.
Claim 20
Dependent Claim 193 words
The method of claim 15 wherein the first processor requires access to a remainder of the preselected data block, further comprising the steps of: (a) operating the first processor to transmit a second read request on the first bus requesting the preselected data block; (b) operating the first processor and the second processor to determine if the preselected portion of the preselected data block has been modified by the first processor; (c) when the preselected portion of the preselected data block has not been modified by the first processor, operating the first processor to transmit a status signal on the second bus to the second processor to inform the second processor that the preselected portion of the preselected data block has not been updated; (d) operating the second processor to process the second read request in the second processor to determine if the preselected data block is stored in the write-back cache of the second processor; (e) operating the second processor to clear the incomplete data block identifier for the preselected data block; and (f) operating the second processor to transmit the preselected data block on the first bus to the first processor.
Claim 21
Dependent Claim 234 words
The method of claim 15 wherein the first processor requires access to a remainder of the preselected data block, further comprising the steps of: (a) operating the first processor to transmit a second read request on the first bus requesting the preselected data block; (b) operating the first processor and the second processor to determine if the preselected portion of the preselected data block has been modified by the first processor; (c) when the preselected portion of the preselected data block has been modified by the first processor, operating the first processor to transmit the modified preselected portion of the preselected data block on the second bus to the second processor; (d) operating the second processor to merge the preselected portion of the preselected data block received from the first processor with the remainder of the preselected data block stored in the write-back cache of the second processor; (e) operating the second processor to process the second read request in the second processor to determine if the preselected data block is stored in the write-back cache of the second processor; (f) operating the second processor to clear the incomplete data block identifier for the preselected data block; and (g) operating the second processor to transmit the preselected data block on the first bus to the first processor and operating the second processor to relinquish ownership of the preselected data block to the first processor.
Claim 22
Dependent Claim 237 words
The method of claim 15 wherein a third processor of the plurality of processors requires access to the preselected data block, further comprising the steps of: (a) operating the third processor to transmit a read for ownership request on the first bus requesting ownership of the preselected data block; (b) operating the first processor and the second processor to identify that the preselected portion of the preselected data block is stored in the write-back cache of the first processor and the preselected data block is stored in the write-back cache of the second processor as an incomplete data block; (c) operating the first processor and the second processor to determine if the preselected portion of the preselected data block has been modified by the first processor; (d) when the preselected portion of the preselected data block has not been modified by the first processor, operating the first processor to transmit a status signal on the second bus to the second processor to inform the second processor that the preselected portion of the preselected data block has not been updated; (e) operating the second processor to clear the incomplete data block identifier for the preselected data block; and (f) operating the second processor to transmit the preselected data block on the first bus from the second processor to the third processor and operating the second processor to relinquish ownership of the preselected data block to the third processor.
Claim 23
Dependent Claim 260 words
The method of claim 15 wherein a third processor of the plurality of processors requires access to the preselected data block, further comprising the steps of: (a) operating the third processor to transmit a read for ownership request on the first bus requesting ownership of the preselected data block; (b) operating the first processor and the second processor to determine that the preselected portion of the preselected data block is stored in the write-back cache of the first processor and the preselected data block is stored in the write-back cache of the second processor as an incomplete data block; (c) operating the first processor and the second processor to determine if the preselected portion of the preselected data block has been modified by the first processor; (d) when the preselected portion of the preselected data block has been modified by the first processor, operating the first processor to transmit the preselected portion of the preselected data block on the second bus to the second processor; (e) operating the second processor to merge the preselected portion of the preselected data block received from the first processor with a remainder of the preselected data block stored in the write-back cache of the second processor; (f) operating the second processor to clear the incomplete data block identifier for the preselected data block; and (g) operating the second processor to transmit the preselected data block on the first bus from the second processor to the third processor and operating the second processor to relinquish ownership of the preselected data block to the third processor.
Claim 24
Dependent Claim 237 words
The method of claim 15 wherein a third processor of the plurality of processors requires access to the preselected data block, further comprising the steps of: (a) operating the third processor to transmit a read request on the first bus from the third processor requesting the preselected data block; (b) operating the first processor and the second processor to determine that the preselected portion of the preselected data block is stored in the write-back cache of the first processor and the preselected data block is stored in the write-back cache of the second processor as an incomplete data block; (c) operating the first processor and the second processor to determine if the preselected portion of the preselected data block has been modified by the first processor; (d) when the preselected portion of the preselected data block has not been modified by the first processor, operating the first processor to transmit a status signal on the second bus to the second processor to inform the second processor that the preselected portion of the preselected data block has not been updated; (e) operating the second processor to clear the incomplete data block identifier for the preselected data block; and (f) operating the second processor to transmit the preselected data block on the first bus from the second processor to the third processor and operating the second processor to share ownership of the preselected data block with the third processor.
Claim 25
Dependent Claim 256 words
The method of claim 15 wherein a third processor of the plurality of processors requires access to the preselected data block, further comprising the steps of: (a) operating the third processor to transmit a read request on the first bus requesting the preselected data block; (b) operating the first processor and the second processor to identify that the preselected portion of the preselected data block is stored in the write-back cache of the first processor and the preselected data block is stored in the write-back cache of the second processor as an incomplete data block; (c) operating the first processor and the second processor to determine if the preselected portion of the preselected data block has been modified by the first processor; (d) when the preselected portion of the preselected data block has been modified by the first processor, operating the first processor to transmit the preselected portion of the preselected data block on the second bus to the second processor; (e) operating the second processor to merge the preselected portion of the preselected data block received from the first processor with a remainder of the preselected data block stored in the write-back cache of the second processor; (f) operating the second processor to clear the incomplete data block identifier for the preselected data block; and (g) operating the second processor to transmit the preselected data block on the first bus from the second processor to the third processor and operating the second processor to share ownership of the preselected data block to the third processor.
Claim 26
Dependent Claim 28 words
The method of claim 15 wherein the step of operating the first processor to transmit a read request comprises operating the first processor to transmit a read command.
Claim 27
Dependent Claim 30 words
The method of claim 15 wherein the step of operating the first processor to transmit a read request comprises operating the first processor to transmit a read for ownership command.
Claim 28
Independent Claim 58 words
The method of any one of claims 17 or 18, wherein the step of operating the first processor to transmit a second read request comprises operating the first processor to transmit a read command and the step of operating the second processor to process the second read request comprises operating the second processor to process the read command.
Claim 29
Independent Claim 62 words
The method of any one of claims 17 or 18, wherein the step of operating the first processor to transmit a second read request comprises operating the first processor to transmit a read for ownership command and the step of operating the second processor to process the second read request comprises operating the second processor to process the read for ownership command.
Claim 30
Dependent Claim 180 words
The method of claim 15 wherein after the substep of operating the second processor to set a second identifier, the method further comprising the steps of: (a) operating the second processor to determine that it requires access to the preselected data block; (b) operating the second processor to determine if the preselected data block is stored in the write-back cache of the second processor; (c) upon determining that the preselected data block is stored in the write-back cache of the second processor, operating the second processor to determine if the preselected data block is part of an incomplete data block; (d) upon determining that the preselected data block is part of an incomplete data block, operating the second processor to determine if data in the preselected data block required by the second processor is stored in the write-back cache of the second processor; and (e) upon determining that the data in the preselected data block required by the second processor is stored in the write-back cache of the second processor, operating the second processor to access the preselected data block.
Claim 31
Dependent Claim 351 words
The method of claim 15 wherein after the substep of operating the second processor to set a second identifier, the method further comprising the steps of: (a) operating the second processor to determine that it requires access to the preselected data block; (b) operating the second processor to determine if the preselected data block is stored in the write-back cache of the second processor; (c) upon determining that the preselected data block is stored in the write-back cache of the second processor, operating the second processor to determine if the preselected data block is part of an incomplete data block; (d) upon determining that the preselected data block is part of an incomplete data block, operating the second processor to determine if data in the preselected data block required by the second processor is stored in the write-back cache of the second processor; (e) upon determining that the data in the preselected data block required by the second processor is not stored in the write-back cache of the second processor, operating the second processor to transmit a read request on the first bus requesting the preselected data block; operating the first processor to determine if the preselected portion of the preselected data block has been modified by the first processor; (f) operating the first processor to determine if the preselected portion of the preselected data block has been modified by the first processor; (g) when the preselected portion of the preselected data block has not been modified by the first processor, operating the first processor to transmit a status signal on the second bus to the second processor to inform the second processor that the preselected portion of the preselected data block has not been updated; (h) operating the first processor to invalidate the incomplete data block identifier in the first processor for the preselected portion of the preselected data block stored in the write-back cache of the first processor; and (i) operating the second processor to invalidate the incomplete data block identifier in the second processor for the preselected data block stored in the write-back cache of the second processor.
Claim 32
Dependent Claim 373 words
The method of claim 15 wherein after the substep of operating the second processor to set a second identifier, the method further comprising the steps of: (a) operating the second processor to determine that it requires access to the preselected data block; (b) operating the second processor to determine if the preselected data block is stored in the write-back cache of the second processor; (c) upon determining that the preselected data block is stored in the write-back cache of the second processor, operating the second processor to determine if the preselected data block is part of an incomplete data block; (d) upon determining that the preselected data block is part of an incomplete data block, operating the second processor to determine if data in the preselected data block required by the second processor is stored in the write-back cache of the second processor; (e) upon determining that the data in the preselected data block required by the second processor is not stored in the write-back cache of the second processor, operating the second processor to transmit a read request on the first bus requesting the preselected data block; (f) operating the first processor to determine if the preselected portion of the preselected data block has been modified by the first processor; (g) when the preselected portion of the preselected data block has been modified by the first processor, operating the first processor to transmit the preselected portion of the preselected data block on the second bus to the second processor; (h) operating the second processor to merge the preselected portion of the preselected data block received from the first processor with the remainder of the preselected data block stored in the write-back cache of the second processor; (i) operating the second processor to store a merged preselected data block in the write-back cache of the second processor; and (j) operating the first processor to invalidate the incomplete data block identifier in the first processor for the preselected portion of the preselected data block stored in the write-back cache of the first processor and (k) operating the second processor to invalidate the incomplete data block identifier in the second processor for the preselected data block stored in the write-back cache of the second processor.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1996-11-15 1997-05-17 1997-11-16 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2000-11-15 2001-05-17 2001-11-16 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2004-11-15 2005-05-17 2005-11-16 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag