aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2024-07-03 16:21:33 -0700
committerGitHub <noreply@github.com>2024-07-03 16:21:33 -0700
commitebf2e3a0b402cd56fd4b571b705b31f3be62c2cc (patch)
tree5cdd4d3aab0c76df20f68d70fa5882b81f3e8105 /src
parentbd0524f07eaf9ffeb5ec7125d32c3e24fea0e2be (diff)
parent48581d23357ae6d34668c4318cfac03a4ef741d9 (diff)
downloadriscv-isa-manual-ebf2e3a0b402cd56fd4b571b705b31f3be62c2cc.zip
riscv-isa-manual-ebf2e3a0b402cd56fd4b571b705b31f3be62c2cc.tar.gz
riscv-isa-manual-ebf2e3a0b402cd56fd4b571b705b31f3be62c2cc.tar.bz2
Merge pull request #1500 from riscv/ved-rivos-svvptc2riscv-isa-release-ebf2e3a-2024-07-03riscv-isa-release-bd0524f-2024-07-03
Update Svvptc extension status to ratified
Diffstat (limited to 'src')
-rw-r--r--src/priv-preface.adoc9
-rw-r--r--src/supervisor.adoc39
2 files changed, 27 insertions, 21 deletions
diff --git a/src/priv-preface.adoc b/src/priv-preface.adoc
index 4a49e29..76beaa7 100644
--- a/src/priv-preface.adoc
+++ b/src/priv-preface.adoc
@@ -28,7 +28,8 @@ _Supervisor ISA_ +
*Sscofpmf* +
_Ssdbltrp_ +
*Hypervisor ISA* +
-_Shlcofideleg_
+_Shlcofideleg_ +
+*Svvptc*
|_1.13_ +
*1.0* +
@@ -48,7 +49,8 @@ _1.13_ +
*1.0* +
_1.0_ +
*1.0* +
-_0.1_
+_0.1_ +
+*1.0*
|_Draft_ +
*Ratified* +
@@ -68,7 +70,8 @@ _Draft_ +
*Ratified* +
_Draft_ +
*Ratified* +
-_Draft_
+_Draft_ +
+*Ratified*
|===
The following changes have been made since version 1.12 of the Machine and
diff --git a/src/supervisor.adoc b/src/supervisor.adoc
index 0a098be..b2c1e7a 100644
--- a/src/supervisor.adoc
+++ b/src/supervisor.adoc
@@ -2241,29 +2241,32 @@ exceptions when A/D bits need be set, instead takes effect.
The Svade extension is also defined in <<translation>>.
[[sec:svvptc]]
-== "Svvptc" Extension for Eliding Memory-Management Fences on Making PTEs Valid, Version 1.0
+== "Svvptc" Extension for Obviating Memory-Management Instructions after Marking PTEs Valid, Version 1.0
-When the Svvptc extension is implemented, explicit stores that update the Valid
-bit of leaf and/or non-leaf PTEs from 0 to 1 and are visible to a hart will
-eventually become visible within a bounded timeframe to subsequent implicit
+When the Svvptc extension is implemented, explicit stores by a hart that update
+the Valid bit of leaf and/or non-leaf PTEs from 0 to 1 and are visible to a hart
+will eventually become visible within a bounded timeframe to subsequent implicit
accesses by that hart to such PTEs.
[NOTE]
====
-Typically, PTEs are marked as Valid by the operating system following a
-page-fault exception or during system calls for memory mapping. In such cases,
-the trap handler commonly employs an `SRET` instruction to return from the trap.
-When Svvptc is implemented, the stores it executes to change the Valid bit
-of the PTEs from 0 to 1 then become visible to implicit references to those PTEs
-within a bounded timeframe. This visibility pertains to the instructions like
-the one causing the page fault or those accessing new memory regions. A
-memory-management fence can be used to force immediate visibility of these PTE
-updates to all implicit references associated with instructions following the
-memory-management fence. However, when Svvptc is implemented, visibility (in a
-bounded amount of time) is guaranteed and use of a memory-management fence is
-not required in these scenarios. While this approach might lead to an occasional
-gratuitous page-fault, the performance benefit of omitting the memory-management
-fence instructions outweighs the occasional cost of a gratuitous page fault.
+Svvptc relieves an operating system from executing certain memory-management
+instructions, such as `SFENCE.VMA` or `SINVAL.VMA`, which would normally be used
+to synchronize the hart's address-translation caches when a memory-resident PTE
+is changed from Invalid to Valid. Synchronizing the hart's address-translation
+caches with other forms of updates to a memory-resident PTE, including when a
+PTE is changed from Valid to Invalid, requires the use of suitable
+memory-management instructions. Svvptc guarantees that a change to a PTE from
+Invalid to Valid is made visible within a bounded time, thereby making the
+execution of these memory-management instructions redundant. The performance
+benefit of eliding these instructions outweighs the cost of an occasional
+gratuitous additional page fault that may occur.
+
+Depending on the microarchitecture, some possible ways to facilitate
+implementation of Svvptc include: not having any address-translation caches, not
+storing Invalid PTEs in the address-translation caches, automatically evicting
+Invalid PTEs using a bounded timer, or making address-translation caches
+coherent with store instructions that modify PTEs.
====
////