05cc2a4e | 18-Mar-2024 |
Xuan Hu <[email protected]> |
Decode,IBuffer: fix circle dependency deadlock
* Add a new field `canAccept` passed from decode to notice `IBuffer` that it can deq new instructions. * IBuffer.io.out(i).ready depends on IBuffer.io.
Decode,IBuffer: fix circle dependency deadlock
* Add a new field `canAccept` passed from decode to notice `IBuffer` that it can deq new instructions. * IBuffer.io.out(i).ready depends on IBuffer.io.out(i).ready. * Since decode promises accepting insts in order, priority encoder is used to simplify the accumulation of `numDeq`. * `numDeq` records the number of deq insts from ibuffer, not from bypass. And it is used to update deqPtr and corresponding deqBankPtr. * Guard numFromFetch calculation with io.in.valid to avoid updating enqPtr when input signal is invalid. * Todo: check ibuffer timing, critical path maybe ibuffer.io.out.valid -> ibuffer.io.out.ready -> ibuffer.validEntries -> nextValidEntries -> allowEnq
show more ...
|