From: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
Subject: Re: [libre-riscv-dev] Yehowshua Tasks
Date: Tue, 16 Jun 2020 12:58:35 +0100
Message-ID: <CAPweEDyaGajktrgnr_d=X8zgbTuJukRc1uuXnxrkWqGkr53ieg@mail.gmail.com> (raw)
In-Reply-To: <CAPweEDzEK_1kr5CxX8fYrjracQhEaSVaPfXVZ=iCzJcAq5R7SA@mail.gmail.com>
one fundamental aspect of what we are doing: anything that has the
slightest possibility of causing "irreversible damage" absolutely has to
have both a "hold off" and "go die" signal.
nothing and i mean nothing can be allowed to proceed unless it has a 100%
chance of success because we are *not* doing a "transaction / rollback /
history" system, we are doing a *shadow* (write-hold) system.
if there is any possibility of a memory write causing an exception, that is
the *very definition of causing damage*!
the memory write therefore must be subdivided into two phases:
1) to check if the write WOULD succeed ***IF*** permitted to proceed
2) after notification and receiving permission to proceed, ***ONLY*** then
proceeding with the actual commit to memory.
this has implications as i understand it even for the L1 Cache.
it is *not* ok to have phase 1 proceed, the notification go back, "yes
there is room in the cache for you" followed in phase 2 "actually i lied,
we need to raise an exception now".
so to make this clear:
* phase 1 is the only time that exceptions can be raised.
* phase 2 is absolutely fundamentally the part where no exceptions of any
kind can be raised. the write MUST occur... or if it genuinely cannot we
will be required to halt the processor as it is a serious critical mistake
on our part or fundamental data corruption event, from the hardware.
this has implications that phase 1 may need to "hold" resources (reserve
cache lines, reserve TLB entries) for a short duration until it receives
either the "proceed" or "cancel" signal.
i do not know if Minerva L1 can handle that because there is zero code
comments.
l.
--
---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
next prev parent reply index
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-15 22:47 Yehowshua
2020-06-15 23:55 ` Luke Kenneth Casson Leighton
2020-06-16 11:58 ` Luke Kenneth Casson Leighton [this message]
2020-06-16 13:50 ` Yehowshua
2020-06-16 14:35 ` Luke Kenneth Casson Leighton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAPweEDyaGajktrgnr_d=X8zgbTuJukRc1uuXnxrkWqGkr53ieg@mail.gmail.com' \
--to=lkcl@lkcl.net \
--cc=libre-riscv-dev@lists.libre-riscv.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Libre RISC-V Mailing list Archives (accessible via public-inbox)
Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev
Example config snippet for mirrors
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git