Is CBO.CLEAN equivalent to a fence?
No. CMO/prefetch has cache-block semantics and is not a general memory-ordering substitute.
cache-block clean (Zicbom).
CBO.CLEAN is a Zicbom cache-block management instruction that performs a clean operation on the cache block containing the effective address in rs1: if the copy in the coherent cache set was modified, a write transfer is performed so stores by coherent agents become visible to relevant non-coherent agents. The cache-block size is discovered from the execution environment and is not fixed at 64 bytes; the assembly offset may be omitted, and if present must evaluate to 0. An implementation may perform a flush instead of a clean.
CBO.CLEAN is a CMO cache-block operation; it locates a cache block by effective address but is not an ordinary load/store.
Understand this scenario with real code like «cbo.clean 0(a1)».
Understand this scenario with real code like «cbo.clean 0(a1)».
Understand this scenario with real code like «cbo.clean 0(a1)».
No. CMO/prefetch has cache-block semantics and is not a general memory-ordering substitute.
CBO instructions do not require rs1 to be aligned to cache-block size.