Patent ID: 7730265

Claim:
A method for facilitating efficient transactional execution, comprising: executing a starvation-avoiding transaction for a thread, and at least one non-starvation-avoiding transaction for another thread; wherein executing each of the starvation-avoiding transaction and the non-starvation-avoiding transaction involves placing load-marks on cache lines which are loaded during the corresponding transaction, and placing store-marks on cache lines which are stored to during the corresponding transaction; wherein executing the starvation-avoiding transaction involves writing a timestamp value into metadata for load-marked and store-marked cache lines; and wherein executing the non-starvation-avoiding transaction involves storing the addresses of load-marked or store-marked cache lines in a private buffer for the other thread; preventing other threads from executing other starvation-avoiding transactions while the thread is executing the starvation-avoiding transaction; and if a load-mark or store-mark placed during a non-starvation-avoiding transaction is encountered on a cache line read from or written to during the starvation-avoiding transaction, aborting the non-starvation-avoiding transaction, wherein aborting the non-starvation-avoiding transaction involves using the addresses stored in the private buffer to identify cache lines load-marked or store-marked during the non-starvation-avoiding transaction.