Hi there,

I have trouble with CMPXCHG8B/CMPXCHG16B instructions. It seems that these
instructions will always cause deadlocks in the pipeline. I've seen into
the logs. Each of them were trying to lock the same cache line twice. But
Marss treated each micro-op as an individual, so the second attempt was not
allowed. And it stopped the pipeline from making any progress. And I look a
little into the locking mechanism. Here's the questions that I have.
1. Each micro-op is treated as an individual. So, deadlock may occur even
inside a single macro-op?
2. Write-locks are not explicitly acquired and released. But, one can
imaging that these pair actions are done inside the commit state.
However, micro-ops inside a macro-op are not going to be committed in the
same cycle. So, two-phase locking protocol may be broken, and lead to
unserializable result?
3. When deadlock happens, is there any arbiter to design which lock to
abort?
May you help me with there questions. Thank you.

Regards,
Ying-Chen Lin
_______________________________________________
http://www.marss86.org
Marss86-Devel mailing list
[email protected]
https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel

Reply via email to