coreblocks
coreblocks copied to clipboard
Scheduler name collisions
Currently there are three concepts we call schedulers:
- a hardware module which has an input signal representing a set of requests and an output signal representing which request is granted, eg.
amaranth.lib.scheduler.RoundRobin
andcoreblocks.transactions._utils.Scheduler
(a one-hot version of the former). - a mechanism of executing transactions in our transaction framework. Here, multiple transactions (which request execution/whose execution condition is satisfied) can be granted at once. There were proposals to rename these to arbiters (and I have a git branch which implements that).
- a middle stage of our processor. I can't find a precedent for this kind of name. It appears that this part is in-order and out-of-order scheduling first appears in the wakeup/select logic, which was apparently placed in the execution stage. I think this also should be named differently.