Libre RISC-V Mailing list Archives (accessible via public-inbox)
 help / color / Atom feed
From: bugzilla-daemon@libre-soc.org
To: libre-riscv-dev@lists.libre-riscv.org
Subject: [libre-riscv-dev] [Bug 216] LOAD STORE buffer needed
Date: Sun, 19 Apr 2020 09:51:06 +0000
Message-ID: <bug-216-13-rGcgyCBHNf@https.bugs.libre-soc.org/> (raw)
In-Reply-To: <bug-216-13@https.bugs.libre-soc.org/>

https://bugs.libre-soc.org/show_bug.cgi?id=216

--- Comment #20 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
the other thing, an aspect of the memory hazard and addr matching matrices:

* loads are separated completely from stores
* stores likewise
* atomic memory operations likewise (by marking them as both LD *and* ST)
* the *batch* order is what is preserved
* only one atomic ever gets sent through (batch of QTY 1).
* due to the expansion of the last 4 bits into a bitmap as part of addr_match,
no operations in any one "batch" will have overlapping bytes.  ever.

therefore there is no need - at all - to preserve "order" in any way shape or
form (hence why i said that we do not need a "queue" per se, we need more a L0
Cache/buffer).

(this wording - L0 cache/buffer - came out of the discussion on comp.arch with
Ivan. 8 entries is likely to be sufficient for us)

to emphasise:

* *at no time* will the DMs put out a mixed batch of LDs, STs or Atomics.
* acknowledging, clearing and completing each batch before moving onto the next
is absolutely critical.
* except for IO and Atomics (which will only be sent down one at a time anyway)
the order of LDs (or STs) can be entirely arbitrary.

also we can get away with full IO memory order preservation by treating them as
"Atomic".  this will result in them only being sent one at a time, in strict
order.

if the exact same dependency system were used at the L2 layer we could do full
SMP TSO with no difficulty.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

       reply index

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-216-13@https.bugs.libre-soc.org/>
2020-04-19  9:51 ` bugzilla-daemon [this message]
2020-04-19  9:57 ` bugzilla-daemon
2020-04-19 15:22 ` bugzilla-daemon
2020-04-19 17:46 ` bugzilla-daemon
2020-04-20  9:10 ` bugzilla-daemon
2020-04-22 10:53 ` bugzilla-daemon
2020-04-22 12:17 ` bugzilla-daemon
2020-04-25 12:40 ` bugzilla-daemon
2020-04-26 11:28 ` bugzilla-daemon
2020-04-27 11:56 ` bugzilla-daemon
2020-04-29 11:16 ` bugzilla-daemon
2020-04-29 21:42 ` bugzilla-daemon
2020-05-01 13:27 ` bugzilla-daemon
2020-05-01 13:33 ` bugzilla-daemon
2020-05-04 10:21 ` bugzilla-daemon
2020-05-04 20:11 ` bugzilla-daemon
2020-05-06  0:33 ` bugzilla-daemon
2020-05-06  1:09 ` bugzilla-daemon
2020-05-06  1:11 ` bugzilla-daemon
2020-05-06  8:29 ` bugzilla-daemon
2020-05-06  8:42 ` bugzilla-daemon
2020-05-06 12:39 ` bugzilla-daemon
2020-05-06 13:12 ` bugzilla-daemon
2020-05-18  4:09 ` bugzilla-daemon
2020-05-23 15:17 ` bugzilla-daemon
2020-05-23 15:23 ` bugzilla-daemon
2020-05-24 19:29 ` bugzilla-daemon
2020-05-24 19:39 ` bugzilla-daemon
2020-05-25 10:36 ` bugzilla-daemon
2020-05-25 13:55 ` bugzilla-daemon
2020-05-26 12:50 ` bugzilla-daemon
2020-05-27 11:10 ` bugzilla-daemon
2020-05-28 12:35 ` bugzilla-daemon
2020-05-28 12:38 ` bugzilla-daemon
2020-05-28 13:07 ` bugzilla-daemon
2020-05-28 13:26 ` bugzilla-daemon
2020-05-28 20:34 ` bugzilla-daemon
2020-05-29 13:56 ` bugzilla-daemon
2020-05-29 16:17 ` bugzilla-daemon
2020-05-30 19:40 ` bugzilla-daemon
2020-06-02 18:26 ` bugzilla-daemon
2020-06-04 16:49 ` bugzilla-daemon
2020-06-05 19:17 ` bugzilla-daemon
2020-06-05 19:40 ` bugzilla-daemon
2020-06-07 23:42 ` bugzilla-daemon
2020-03-11 20:28 [libre-riscv-dev] [Bug 216] New: " bugzilla-daemon
2020-03-11 22:54 ` [libre-riscv-dev] [Bug 216] " bugzilla-daemon
2020-03-11 23:08 ` bugzilla-daemon
2020-03-12  1:54 ` bugzilla-daemon
2020-03-12 11:13 ` bugzilla-daemon
2020-03-12 13:35 ` bugzilla-daemon
2020-03-12 17:29 ` bugzilla-daemon
2020-03-13 11:50 ` bugzilla-daemon
2020-03-13 18:37 ` bugzilla-daemon
2020-03-13 20:16 ` bugzilla-daemon
2020-03-15 21:19 ` bugzilla-daemon
2020-03-16 17:25 ` bugzilla-daemon
2020-03-23 10:21 ` bugzilla-daemon
2020-03-24 13:55 ` bugzilla-daemon
2020-03-24 14:22 ` bugzilla-daemon
2020-03-24 18:00 ` bugzilla-daemon
2020-03-24 20:19 ` bugzilla-daemon
2020-03-24 20:27 ` bugzilla-daemon

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=bug-216-13-rGcgyCBHNf@https.bugs.libre-soc.org/ \
    --to=bugzilla-daemon@libre-soc.org \
    --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