Atomic transactions to non-volatile memory
First Claim
1. A processing device comprising:
- a cache;
an interface to a non-volatile storage medium (NVM) operatively coupled to the cache; and
a first functional unit to execute a plurality of instructions associated with an atomic transaction and to track execution of the atomic transaction with a first transaction identifier (TID), wherein the plurality of instructions are to replace data at a set of addresses in the NVM atomically with new data, wherein the first functional unit is to execute the plurality of instructions to;
perform a first instruction to create the atomic transaction that delineates a size of the data to be replaced atomically and generates the first TID;
perform a second instruction to execute the atomic transaction including storing, in first cache lines of the cache, the new data with the set of addresses and the first TID;
perform a third instruction to commit the atomic transaction to the set of addresses in the NVM, wherein the new data is not visible to other functional units until the atomic transaction is complete; and
wherein the second instruction and the third instruction are further to, in response to a read request from a second functional unit to an address of the set of addresses;
determine that the read request lacks the first TID;
access the data associated with the address in a second cache line of the cache that is not associated with a valid TID in response to determining that the read request lacks the first TID, wherein the new data is simultaneously available in the first cache lines when accessing the data in the second cache line; and
send, to the second functional unit, the data for the address.
1 Assignment
0 Petitions
Accused Products
Abstract
Durable atomic transactions for non-volatile media are described. A processor includes an interface to a non-volatile storage medium and a functional unit to perform instructions associated with an atomic transaction. The instructions are to update data at a set of addresses in the non-volatile storage medium atomically. The functional unit is operable to perform a first instruction to create the atomic transaction that declares a size of the data to be updated atomically. The functional unit is also operable to perform a second instruction to start execution of the atomic transaction. The functional unit is further operable to perform a third instruction to commit the atomic transaction to the set of addresses in the non-volatile storage medium, wherein the updated data is not visible to other functional units of the processing device until the atomic transaction is complete.
4 Citations
25 Claims
-
1. A processing device comprising:
-
a cache; an interface to a non-volatile storage medium (NVM) operatively coupled to the cache; and a first functional unit to execute a plurality of instructions associated with an atomic transaction and to track execution of the atomic transaction with a first transaction identifier (TID), wherein the plurality of instructions are to replace data at a set of addresses in the NVM atomically with new data, wherein the first functional unit is to execute the plurality of instructions to; perform a first instruction to create the atomic transaction that delineates a size of the data to be replaced atomically and generates the first TID; perform a second instruction to execute the atomic transaction including storing, in first cache lines of the cache, the new data with the set of addresses and the first TID; perform a third instruction to commit the atomic transaction to the set of addresses in the NVM, wherein the new data is not visible to other functional units until the atomic transaction is complete; and wherein the second instruction and the third instruction are further to, in response to a read request from a second functional unit to an address of the set of addresses; determine that the read request lacks the first TID; access the data associated with the address in a second cache line of the cache that is not associated with a valid TID in response to determining that the read request lacks the first TID, wherein the new data is simultaneously available in the first cache lines when accessing the data in the second cache line; and send, to the second functional unit, the data for the address. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A method comprising:
-
creating, by a first functional unit of a processing device, an atomic transaction that delineates a size of a set of addresses to be written atomically and tracks execution of the atomic transaction with a first transaction identifier (TID), wherein execution of the atomic transaction directs the processing device to replace data at the set of addresses in a non-volatile storage medium (NVM) with new data from the atomic transaction; executing, by the first functional unit, the atomic transaction including storing the new data in first cache lines of a cache with the set of addresses and the first TID; committing, by the first functional unit, the atomic transaction to the set of addresses in the NVM, wherein the new data is not visible to other functional units of the processing device until the atomic transaction is complete; wherein, during the executing and the committing the atomic transaction, and in response to a read request from a second functional unit to an address of the set of addresses; determine that the read request lacks the first TID; access the data associated with the address in a second cache line of the cache that is not associated with a valid TID in response to determining that the read request lacks the first TID, wherein the new data is simultaneously available in the first cache lines when accessing the data in the second cache line; and sending, to the second functional unit, the data for the address. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A non-transitory machine-readable storage medium including instructions that, when executed by a processor, cause the processor to:
-
create, by a first functional unit of the processor, an atomic transaction that delineates a size of data to be replaced atomically and tracks execution of the atomic transaction with a first transaction identifier (TID), wherein execution of the atomic transaction comprises replacing the data at a set of addresses in a non-volatile storage medium (NVM) with new data from the atomic transaction, wherein the NVM is byte-addressable persistent memory; execute, by the first functional unit, the atomic transaction to include storing the new data in first cache lines of a cache with the set of addresses and the first TID; and commit, by the first functional unit, the atomic transaction to the set of addresses in the NVM, wherein the new data is not visible to other functional units of the processor until the atomic transaction is complete; wherein, before completion of the atomic transaction and in response to a read request from a second functional unit to an address of the set of addresses, the instructions further to cause the processor to; determine that the read request lacks the first TID; access the data associated with the address in a second cache line of the cache that is not associated with a valid TID in response to determining that the read request lacks the first TID, wherein the new data is simultaneously available in the first cache lines when accessing the data in the second cache line; and send, to the second functional unit, the data for the address. - View Dependent Claims (25)
-
Specification