icache: Improve latencies when reloading cache lines
authorPaul Mackerras <paulus@ozlabs.org>
Thu, 28 May 2020 23:38:05 +0000 (09:38 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Sat, 13 Jun 2020 10:09:06 +0000 (20:09 +1000)
commit62b24a8dae3aa3597f863de1cd8f0a9f0ec2cb6b
treeff9d42ad830d63eb386016a45d1df9137dbdf4ca
parent0809bc898b0dacd1923d513331ac3008947bee31
icache: Improve latencies when reloading cache lines

The icache can now detect a hit on a line being refilled from memory,
as we have an array of individual valid bits per row for the line
that is currently being loaded.  This enables the request that
initiated the refill to be satisfied earlier, and also enables
following requests to the same cache line to be satisfied before the
line is completely refilled.  Furthermore, the refill now starts
at the row that is needed.  This should reduce the latency for an
icache miss.

We now get a 'sequential' indication from fetch1, and use that to know
when we can deliver an instruction word using the other half of the
64-bit doubleword that was read last cycle.  This doesn't make much
difference at the moment, but it frees up cycles where we could test
whether the next line is present in the cache so that we could
prefetch it if not.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
common.vhdl
fetch1.vhdl
icache.vhdl