coreblocks.scheduler package
Submodules
coreblocks.scheduler.scheduler module
- class coreblocks.scheduler.scheduler.Scheduler
Bases:
ElaboratableModule responsible for preparing an instruction and its insertion into RS. It supports multiple RS configurations, in which case, it will send the instruction to the first available RS which supports this kind of instructions.
In order to prepare instruction it performs following steps: - physical register allocation - register renaming - ROB entry allocation - RS selection - RS insertion
Warning
Instruction without any supporting RS will get stuck and block the scheduler pipeline.
- crat_active_tags: Method
Gets information about tags that are on current speculation path from C-RAT.
- crat_rename: Method
Renames the source register in C-RAT.
- crat_tag: Method
Tags instructions to checkpoints in C-RAT.
- get_free_reg: Method
Provides the ID of a currently free physical register.
- get_instr: Method
Method providing decoded instructions to be scheduled for execution. It has layout as described by SchedulerLayouts.scheduler_in.
- rf_read_req1: Method
Requests value of first source register.
- rf_read_req2: Method
Requests value of second source register.
- rf_read_resp1: Method
Gets requested value of first source register and information if it is valid.
- rf_read_resp2: Method
Gets requested value of second source register and information if it is valid.
- rob_put: Method
Gets a free entry in ROB.
coreblocks.scheduler.wakeup_select module
- class coreblocks.scheduler.wakeup_select.WakeupSelect
Bases:
ElaboratableSimple Wakeup Select unit. Works by firstly getting readiness vector from the method get_ready (it is a binary vector, where 1 on i-th position means i-th row is ready to be taken and 0 means it is not). In next step if any row is ready to be taken it calls take_row with i (position of last ready row) as an argument in order to get its value and then calls method issue with i-th row as argument. It is prepared to work with RS and functional unit interfaces.
- Attributes
- get_readyMethod, required
Method which is invoked to get the vector of readiness. It uses RSLayouts.get_ready_list_out.
- take_rowMethod, required
Method which is invoked to get a single ready row. It uses RSLayouts.take_out.
- issueMethod, required
Method which is invoked to a push row down the pipeline. It uses FuncUnitLayouts.issue.
- __init__(*, gen_params: GenParams, rs_entries: int)
- Parameters
- gen_paramsGenParams
Instance of GenParams with parameters describing the core.
- rs_entriesint
Number of entries of the RS connected to this instance of WakeupSelect.
- get_ready: Method
- issue: Method
- take_row: Method