aboutsummaryrefslogtreecommitdiff
path: root/src/counters.adoc
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2024-01-29 23:02:41 -0800
committerAndrew Waterman <andrew@sifive.com>2024-01-29 23:02:41 -0800
commitf44e4fa741bed0d3aacb994b564e3ad594db5df9 (patch)
tree6c58e138b6ad981818536c41a4d8e71179a2a9d4 /src/counters.adoc
parentd76d05d60498c4a7e817d5a4f4bf90be24c27f6c (diff)
downloadriscv-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/counters.adoc')
-rw-r--r--src/counters.adoc16
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