cbo.clean
Cache Block Clean
This instruction is defined by:
Synopsis
Cleans an entire cache block globally throughout the system.
Exactly what happens is coherence protocol-dependent, but in general it is expected that after this operation():
-
The cache block will be in the clean (not dirty) state in any coherent cache holding a valid copy of the line.
-
The data will be cleaned to a point such that an incoherent load can observe the cleaed data.
cbo.clean is ordered by FENCE
instructions but not FENCE.I
or SFENCE.VMA
.
<%- if CACHE_BLOCK_SIZE.bit_length > [PMP_GRANULARITY, PMA_GRANULARITY].min -%> Both PMP and PMA access control must be the same for all bytes in the block; otherwise, cbo.clean has UNSPECIFIED behavior. <%- end -%>
Clean operations are treated as stores for page and access permissions. If permission checks fail, one of the following exceptions will occur:
<%- if ext?(:H) -%> * `Store/AMO Guest-Page Fault` if virtual memory translation fails during G-stage translation. <%- end -%> * `Store/AMO Page Fault` if virtual memory translation fails <% if ext?(:H) %>when V=0 or during VS-stage translation<% end %> * `Store/AMO Access Fault` if a PMP or PMA access check fails
<%- if CACHE_BLOCK_SIZE.bit_length ⇐ [PMP_GRANULARITY, PMA_GRANULARITY].min -%> Because cache blocks are naturally aligned and always fit in a single PMP or PMA regions, the PMP and PMA access checks only need to check a single address in the line. <%- end -%>
CBO operations never raise a misaligned address fault.
Access
M |
HS |
U |
VS |
VU |
Always |
Sometimes |
Sometimes |
Sometimes |
Sometimes |
Access is controled through menvcfg.CBZE, senvcfg.CBZE, and henvcfg.CBZE.
When access is denied, the instruction either raises an Illegal Instruction
or Virtual Instruction
exception according to the table below.
cbo.clean Instruction Behavior |
||||||
---|---|---|---|---|---|---|
S-mode |
U-mode |
VS-mode |
VU-mode |
|||
0 |
- |
- |
|
|
|
|
1 |
0 |
0 |
executes |
|
|
|
1 |
1 |
0 |
executes |
executes |
|
|
1 |
0 |
1 |
executes |
|
executes |
|
1 |
1 |
1 |
executes |
executes |
executes |
executes |