diff options
author | Andrew Waterman <andrew@sifive.com> | 2024-01-29 23:02:41 -0800 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2024-01-29 23:02:41 -0800 |
commit | f44e4fa741bed0d3aacb994b564e3ad594db5df9 (patch) | |
tree | 6c58e138b6ad981818536c41a4d8e71179a2a9d4 /src | |
parent | d76d05d60498c4a7e817d5a4f4bf90be24c27f6c (diff) | |
download | riscv-isa-manual-f44e4fa741bed0d3aacb994b564e3ad594db5df9.zip riscv-isa-manual-f44e4fa741bed0d3aacb994b564e3ad594db5df9.tar.gz riscv-isa-manual-f44e4fa741bed0d3aacb994b564e3ad594db5df9.tar.bz2 |
Add clarifying non-normative comments about [m]time
Text contributed by @gfavor
Diffstat (limited to 'src')
-rw-r--r-- | src/counters.adoc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/counters.adoc b/src/counters.adoc index cf646c6..2011386 100644 --- a/src/counters.adoc +++ b/src/counters.adoc @@ -147,6 +147,22 @@ As with other architectural mandates, it suffices to appear "as if" harts are synchronized to within one tick of the real-time clock, i.e., software is unable to observe that there is a greater delta between the real-time clock values observed on two harts. + +If, for example, the real-time clock increments at a frequency of 1 GHz, then +all harts must appear to be synchronized to within 1 nsec. +But it is also acceptable for this example implementation to only update the +real-time clock at, say, a frequency of 100 MHz with increments of 10 ticks. +As long as software cannot observe this seeming violation of the above +synchronization requirement, and software always observes time across harts to +be monotonically nondecreasing, then this implementation is compliant. + +A platform spec may then, for example, specify an apparent real-time clock +tick frequency (e.g. 1 GHz) and also a minimum update frequency (e.g. 100 MHz) +at which updated time values are guaranteed to be observable by software. +Software may read time more frequently, but it should only observe +monotonically nondecreasing values and it should observe a new value at least +once every 10 ns (corresponding to the 100 MHz update frequency in this +example). ==== The RDINSTRET pseudoinstruction reads the low XLEN bits of the `instret` CSR, which counts the number of instructions retired by this |