You could discard the transaction store buffer immediately. But you
shouldn't try to restore
the checkpoint immediately. Simics doesn't like it when you change PC at
arbitrary points.
So we register a callback with Simics to let us know when it is safe to
restore checkpoint
(restartTransactionCallback).
We wait till the *current* reference is ready to retire before doing
abort processing in order to
avoid doing the abort work (discard buffer + register callback) multiple
times.
Jayaram
Fuad Tabba wrote:
Hi,
A question on ruby/transactional memory when using Lazy Version
Management. I've noticed that when a transaction aborts, it doesn't
abort immediately, but sets an abort flag (setAbortFlag) which gets
processed at the next load, store or commit (readyToRetireMemRef and
commitTransaction).
My question is why doesn't the transaction abort immediately? Is is
a modeling issue or a workaround to something gems/simics related?
Thanks.
Cheers,
/fuad
------------------------------------------------------------------------
_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.
|