Stupid question but does that work in a virtualised environment where your program can be live-migrated to another physical machine with a different CPU?
You'll choose a lowest common denominator of features sets.
Also, for this specific case, I doubt migration will keep around the contents of the cache lines and their 'dirty' bits (corollary: it will be possible to reliably detect a move, if one is willing to continuously run code that detects cache-line timing differences)