-
Notifications
You must be signed in to change notification settings - Fork 438
Open
Description
I noticed that the dispatcher input buffer and some other pipeline units in simx don't have capacity checks.
But the ibuffer in decode stage has such check, like if (ibuffer.full()) {.
And I found that in an old version, such runtime capacity check existed (shown below), Commit 7e9e99e deleted this part.
if (dispatchers_.at((int)trace->fu_type)->push(i, trace)) {
operand->Output.pop();
trace->log_once(false);
} else {
if (!trace->log_once(true)) {
DT(4, "*** dispatch-stall: " << *trace);
}
}
and changed to a direct push.
dispatchers_.at((int)trace->fu_type)->Inputs.at(iw).push(trace);
operand->Output.pop();
Why such capacity check is deleted? How could the new version simulate the 'back-pressure' behavior in rtl? I would greatly appreciate any explanation on this.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels