Skip to content

What, exactly, does the reservation set size (Za64rs/Za128rs) constrain? #79

@sorear

Description

@sorear

A simple single-hart platform (among more exotic possibilities) would naturally provide atomicity across the entire address space for LR/SC pairs, regardless of addresses. In such a situation the natural size for the reservation set in the unprivileged ISA is the entire address space, but this is forbidden in RVA20 and RVA22. This is a strange requirement that software does not seem to be able to use beneficially in any reliable way.

What is such an implementation expected to do to be conformant with Za64rs? Force LR/SC instructions which are misaligned across a 64B boundary to trap and force SCs which do not reference the same 64B unit to fail?

What does software gain from a guarantee that LR will fail across 64B boundaries? There is no clear benefit to the memory model since a nonstandard extension accessing multiple 64B units is not forbidden.

What does software gain from a guarantee that SC will fail if it is not paired with a LR on the same 64B unit? Is it trying to prevent a storage channel (even though we require software to clear the reservation on context switches)? A property that constrained LR/SC loops operating on different 64B blocks will experience individual, rather than collective, eventual success (even though there is nothing to support this in the ISA manual's description of LR/SC eventuality)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions