This is a nice improvement. Now instead of having sfence/pcommit/sfence to flush writes to nvram, you would use just an sfence to ensure ordering with subsequent stores (e.g. a store that publishes the written data.) Its analogous to fysnc() to ensure data reaches the disk in a way that survives power failure. This is like just treating all writes as fsynced and not needing to worry about fsync at all, like with O_DI…
Not exactly, you still need a cache flush if you want to ensure that your write is persistent.
Deprecating the PCOMMIT Instruction
21–26 of 26 posts
Re: Deprecating the PCOMMIT Instruction
#22Re: Deprecating the PCOMMIT Instruction
#23This is a nice improvement. Now instead of having sfence/pcommit/sfence to flush writes to nvram, you would use just an sfence to ensure ordering with subsequent stores (e.g. a store that publishes the written data.) Its analogous to fysnc() to ensure data reaches the disk in a way that survives power failure. This is like just treating all writes as fsynced and not needing to worry about fsync at all, like with O_DI…
Re: Deprecating the PCOMMIT Instruction
#24It's very rare that an instruction gets removed; the few instances that I can think of are XBTS/IBTS on the very first stepping of the 386, and the CMPXCHG on early 486s that occupied the same opcode briefly. Do any CPUs have this instruction? It looks like the encoding of PCOMMIT (+66 0F AE/7) is basically the same as CLFLUSH except with a +66 prefix, so if a CPU doesn't know about PCOMMIT it'll probably try to exec…
I love your examples of other removals -- didn't know about those.
Re: Deprecating the PCOMMIT Instruction
#25"Persistence domain". Ugh. This is supposed to be a CPU not some marketing speak showcase.
I had been using the term "power-fail safe domain" to talk about the line a store crosses where it is then persistent in the face of power failures. But that led people to think power failure was the only event considered so we started saying "persistence domain." I'm certainly open to suggestions on terminology.
Re: Deprecating the PCOMMIT Instruction
#26This is a nice improvement. Now instead of having sfence/pcommit/sfence to flush writes to nvram, you would use just an sfence to ensure ordering with subsequent stores (e.g. a store that publishes the written data.) Its analogous to fysnc() to ensure data reaches the disk in a way that survives power failure. This is like just treating all writes as fsynced and not needing to worry about fsync at all, like with O_DI…