Is CBO.INVAL equivalent to a fence?
No. CMO/prefetch has cache-block semantics and is not a general memory-ordering substitute.
cache-block invalidate (Zicbom).
CBO.INVAL is a Zicbom cache-block management instruction that performs an invalidate operation on the cache block containing the address in rs1; depending on CSR programming, lower-privilege execution may trap or perform a flush instead. rs1 need not be aligned to the cache-block size; on faults, the faulting virtual address is the value in rs1. The cache-block size is discovered from the execution environment and is not fixed at 64 bytes; the offset may be omitted, and if present must be 0.
CBO.INVAL 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.inval 0(a1)».
Understand this scenario with real code like «cbo.inval 0(a1)».
Understand this scenario with real code like «cbo.inval 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.