start filling in
[libreriscv.git] / isa_conflict_resolution.mdwn
index d2cc4d13d919c1f3c0474758dbd29057c4996513..b7d187add35c5ececa614919fa8b5a0ba5e7305a 100644 (file)
@@ -326,7 +326,66 @@ TBD
 
 # Conclusion
 
-TBD
+In the early sections (those in the category "no action") it was established
+in each case that the problem is not solved.  Avoidance of responsibility,
+or conflation of "not our problem" with "no problem" does not make "problem"
+go away.
+
+The first idea considered which could fix the problem was to just use
+the pre-existing MISA CSR, however this was determined not to have
+the right coverage (Standard Extensions only), and also crucially it
+destroyed state.  Whilst unworkable it did lead to the first "workable"
+solution, "MISA-like".
+
+The "MISA-like" proposal, whilst meeting most of the requirements, led to
+a better idea: "mvendor/march-id WARL", which, in combination with an offshoot
+idea related to gcc and binutils, is the only proposal that fully meets the
+requirements.
+
+The "ioctl-like" idea *also* solves the problem, but, unlike the WARL idea
+does not meet the full requirements to be "non-invasive" and "backwards
+compatible" with pre-existing (pre-Standards-finalised) implementations.
+It does however stand on its own merit as a way to extend the extremely
+small Custom Extension opcode space, even if it itself implemented *as*
+a Custom Extension.
+
+Overall the mvendor/march-id WARL idea meets the three requirements,
+and is the only idea that meets the three requirements:
+
+* **Any proposal must be a minimal change with minimal (or zero) impact**
+  (met through being purely a single change to the specification:
+   mvendor/march-id changes from read-only to WARL)
+* **Any proposal should place no restriction on existing or future
+  ISA encoding space**
+  (met because it is just a change to one pre-existing CSR)
+* **Any proposal should take into account that there are existing implementors
+  of the (yet to be finalised but still "partly frozen") Standard who may
+  resist, for financial investment reasons, efforts to make any change
+  (at all) that could cost them immediate short-term profits.**
+  (met because existing implementations, with the exception of those
+  that have Custom Extensions, come under the "vendor/arch-id read only
+  is a declaration of having no Custom Extensions" fall-back category)
+
+So to summarise:
+
+* The consequences of not tackling this are severe: the RISC-V Foundation
+  cannot take a back seat.  If it does, clear historical precedent shows
+  100% what the outcome will be (1).
+* The retro-fitting cost onto existing implementations (even though the
+  specification has not been finalised) is negligeable
+  (changes to words in the specification)
+* The benefits are clear (pain-free transition path for vendors to safely
+  upgrade over time; no fights over Custom opcode space; no hassle for
+  software toolchain; no hassle for GNU/Linux Distros)
+* The implementation details are clear (and problem-free except for
+  vendors who insist on deploying dozens of conflicting Custom Extensions:
+  an extreme unlikely outlier).
+* Compliance Testing is straightforward and allows vendors to seek and
+  obtain *multiple* Compliance Certificates with past, present and future
+  variants of the RISC-V Standard (in the exact same processor), in order
+  support legacy customers and provide same customers with a way to avoid
+  "impossible-to-make" decisions that throw out ultra-expensive multi-decade
+  proprietary legacy software at the same as the hardware.
 
 # Conversation Exerpts
 
@@ -343,6 +402,7 @@ The following conversation exerpts are taken from the ISA-dev discussion
 > and typically the choice was "neither". Nobody wants to put in the
 > effort when there is uncertainty and a market fragmented into
 > small bits.
+>
 > Note how Intel did not screw up. When SSE was added, MMX remained.
 > Software vendors could trust that instructions would be supported.
 > Both MMX and SSE remain today, in all shipping processors. With very