Using Transactional Memory on Embedded Devices

Transactional memory is used in multiprocessing for the same purpose as locking mechanisms. Transactional memory, however, is more efficient than a traditional locking scheme, which makes it more ideal for embedded devices.

In a traditional locking scheme, a process would take a lock before working on a shared piece of code, and return the lock when it is finished. When using transactional memory, the process works on the shared piece of code, and then checks to make sure that no other processes have worked on that piece before saving, or committing the transaction. If another process has been working on that piece, then one process aborts, and the memory the aborting process changed is restored. In order for memory to be restored, the original data and its location in memory must be saved. Currently, all data is being stored on the transactional cache. The transactional cache, however, consumes a lot of energy.

My part of the project

There are two types of transactional data: private data (local to one process) and shared data (among all processes.) I'm working on implementing a scheme that stores the private data in a log, rather than on the transactional cache. All the will continue to be stored on the transactional cache.