start filling in
[libreriscv.git] / isa_conflict_resolution.mdwn
index 13f0c56813e14b0e7e45a2d258ca4bdac7bef847..bf036f64907955bde74e7b1eee0b7823d5a247ee 100644 (file)
@@ -148,7 +148,8 @@ problem, therefore there isn't a problem".
 The logical errors in this argument were quickly enumerated: namely that
 the RISC-V Foundation is not in control of the uses to which RISC-V is
 put, such that public global conflicts in binary-encoding are a hundred
-percent guaranteed to occur, and a hundred percent guaranteed to occur in
+percent guaranteed to occur (*outside* of the control and remit of the
+RISC-V Foundation), and a hundred percent guaranteed to occur in
 *commodity* hardware where Debian, Fedora, SUSE and other distros will
 be hardest hit by the resultant chaos, and that will just be the more
 "visible" aspect of the underlying problem.
@@ -197,6 +198,8 @@ another that happens to use the same binary encoding.
 * MISA was only designed to cover Standard Extensions.
 * There is nothing to prevent multiple Extensions being enabled
   that wish to simultaneously interpret the same binary encoding.
+* There is nothing in the MISA specification which permits
+  *future* versions (bug-fixes) of the RISC-V ISA to be "switched in".
  
 Overall, whilst the MISA concept is a step in the right direction it's
 a hundred percent unsuitable for solving the problem.
@@ -214,13 +217,14 @@ take into account the flaws pointed out by trying to use "MISA":
 * Each custom-defined bit of the MISA-like CSR would (mutually-exclusively)
   redirect binary encoding(s) to specific encodings
 * No Extension would *actually* be disabled: its internal state would
-  be left on (permanently) so that switching could be done inside
-  inner loops.
+  be left on (permanently) so that switching of ISA decoding
+  could be done inside inner loops without adverse impact on
+  performance.
 
 Whilst it was the first "workable" solution it was also noted that the
-scheme is quite invasive: it requires an entirely new CSR to be added
-to the privileged spec.  This does not completely fulfil the "minimum
-impact" requirement.
+scheme is invasive: it requires an entirely new CSR to be added
+to the privileged spec (thus making existing implementations redundant).
+This does not fulfil the "minimum impact" requirement.
 
 Also interesting around the same time an additional discussion was
 raised that covered the *compiler* side of the same equation.  This
@@ -235,13 +239,13 @@ separate page?  review this para?**)
 
 TBD paraphrase and clarify
 
-Coming out of the software-related proposal by Jacob, which hinged on
-the idea of a global gcc / binutils database that kept and coordinated
-architectural encodings, was to quite simply make the mvendorid and
-marchid CSRs have WARL (writeable) characteristics.  For instances
-where mvendorid and marchid are readable, that would be taken to be
-a Standards-mandatory "declaration" that the architecture has *no*
-Custom Extensions.
+Coming out of the software-related proposal by Jacob Bachmeyer, which
+hinged on the idea of a globally-maintained gcc / binutils database
+that kept and coordinated architectural encodings (curated by the Free
+Software Foundation), was to quite simply make the mvendorid and marchid
+CSRs have WARL (writeable) characteristics.  For instances where mvendorid
+and marchid are readable, that would be taken to be a Standards-mandatory
+"declaration" that the architecture has *no* Custom Extensions.
 
 This incredibly simple non-invasive idea has some unique and distinct
 advantages over other proposals:
@@ -366,6 +370,27 @@ and is the only idea that meets the three requirements:
   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
 
 The following conversation exerpts are taken from the ISA-dev discussion