Concurrent read access and exclusive write access to data in shared memory architecture
First Claim
1. A method of maintaining coherence between a plurality of devices coupled to a shared memory architecture, the method comprising:
- in a first device, retrieving a first copy of a block of memory and obtaining exclusive write access to the block of memory;
in a second device, retrieving a second copy of the block of memory and obtaining read access to the block of memory, wherein the second device has read access to the block of memory concurrently with the first device having exclusive write access to the block of memory;
modifying the first copy of the block of memory in the first device while the second device has read access to the block of memory;
using data in the second copy of the block of memory in the second device after the first copy of the block of memory has been modified and while the first device has exclusive write access to the block of memory; and
after using the data in the second copy of the block of memory, updating the second copy of the block of memory based upon the first copy of the block of memory in the first device;
wherein the first device comprises a receiver circuit and the second device comprises a transmitter circuit, the transmitter and receiver circuits respectively configured to transmit and receive packets of data arranged in a sequence, with each packet associated with a packet identifier, wherein the block of memory includes a last acknowledged packet identifier representing a last packet for which an acknowledgment has been received.
2 Assignments
0 Petitions
Accused Products
Abstract
Concurrent read access and exclusive write access are provided in a shared memory architecture to permit one or more devices in the shared memory architecture to maintain read access to a block of memory such as a cache line while one device has exclusive permission to modify that block of memory. By doing so, a device that has permission to modify may make updates to its copy of the block of memory without invalidating other copies of the block of memory, and potentially enabling other devices to continue to read data from their respective copies of the block of memory without having to retrieve the updated copy of the block of memory.
46 Citations
17 Claims
-
1. A method of maintaining coherence between a plurality of devices coupled to a shared memory architecture, the method comprising:
-
in a first device, retrieving a first copy of a block of memory and obtaining exclusive write access to the block of memory; in a second device, retrieving a second copy of the block of memory and obtaining read access to the block of memory, wherein the second device has read access to the block of memory concurrently with the first device having exclusive write access to the block of memory; modifying the first copy of the block of memory in the first device while the second device has read access to the block of memory; using data in the second copy of the block of memory in the second device after the first copy of the block of memory has been modified and while the first device has exclusive write access to the block of memory; and after using the data in the second copy of the block of memory, updating the second copy of the block of memory based upon the first copy of the block of memory in the first device; wherein the first device comprises a receiver circuit and the second device comprises a transmitter circuit, the transmitter and receiver circuits respectively configured to transmit and receive packets of data arranged in a sequence, with each packet associated with a packet identifier, wherein the block of memory includes a last acknowledged packet identifier representing a last packet for which an acknowledgment has been received. - View Dependent Claims (2, 3)
-
-
4. A method of maintaining coherence between a plurality of devices coupled to a shared memory architecture, the method comprising:
-
in a first device, retrieving a first copy of a block of memory and obtaining exclusive write access to the block of memory; in a second device, retrieving a second copy of the block of memory and obtaining read access to the block of memory, wherein the second device has read access to the block of memory concurrently with the first device having exclusive write access to the block of memory; and respectively accessing data in the first and second copies of the block of memory with the first and second devices while the second device has read access to the block of memory concurrently with the first device having exclusive write access to the block of memory; modifying the first copy of the block of memory in the first device while the second device has read access to the block of memory; using data in the second copy of the block of memory in the second device after the first copy of the block of memory has been modified and while the first device has exclusive write access to the block of memory; and after using the data in the second copy of the block of memory, updating the second copy of the block of memory based upon the first copy of the block of memory in the first device; wherein the first device comprises a receiver circuit and the second device comprises a transmitter circuit, the transmitter and receiver circuits respectively configured to transmit and receive packets of data arranged in a sequence, with each packet associated with a packet identifier, wherein the block of memory includes a last acknowledged packet identifier representing a last packet for which an acknowledgment has been received. - View Dependent Claims (5, 6, 7, 8, 9)
-
-
10. A circuit arrangement configured for use in a shared memory architecture, the circuit arrangement comprising:
-
a first device configured to retrieve a first copy of a block of memory and obtain exclusive write access to the block of memory; and a second device configured to retrieve a second copy of the block of memory and obtain read access to the block of memory, wherein the second device has read access to the block of memory concurrently with the first device having exclusive write access to the block of memory; wherein the first device is configured to modify the first copy of the block of memory while the second device has read access to the block of memory; wherein the second device is configured to use data in the second copy of the block of memory after the first copy of the block of memory has been modified and while the first device has exclusive write access to the block of memory, and after using the data in the second copy of the block of memory, update the second copy of the block of memory based upon the first copy of the block of memory in the first device; wherein the first device comprises a receiver circuit and the second device comprises a transmitter circuit, the transmitter and receiver circuits respectively configured to transmit and receive packets of data arranged in a sequence, with each packet associated with a packet identifier, wherein the block of memory includes a last acknowledged packet identifier representing a last packet for which an acknowledgment has been received. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
Specification