diff options
author | Andrew Waterman <andrew@sifive.com> | 2024-07-03 16:21:33 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-03 16:21:33 -0700 |
commit | ebf2e3a0b402cd56fd4b571b705b31f3be62c2cc (patch) | |
tree | 5cdd4d3aab0c76df20f68d70fa5882b81f3e8105 /src | |
parent | bd0524f07eaf9ffeb5ec7125d32c3e24fea0e2be (diff) | |
parent | 48581d23357ae6d34668c4318cfac03a4ef741d9 (diff) | |
download | riscv-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.adoc | 9 | ||||
-rw-r--r-- | src/supervisor.adoc | 39 |
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. ==== //// |