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.
|