A guide to the various energy efficiency optimisations used by the core.
Clock gating is used aggressivley to avoid clocking registers whos values do not need to change. The separate clock signals are listed below, along with the part of the core they are requested by.
Clock Signal | Usage |
---|---|
f_clk |
Global free-running clock, used for in-core timers. |
g_clk |
Global gated clock, used by default in the core. |
g_clk_rf |
Register file gated clock. |
g_clk_mul |
Multiplier gated clock. |
-
The core level
g_clk_*
is derived from thef_clk
. -
Each
g_clk*
clock signal has an associated*_req
line:-
When the
*_req
line is set, the clock must be delivered. -
When the
*_req
line is low, the clock may be gated. The core cannot assume that just because*_req
is low, the clock will not tick.
-
The g_clk
signals are derived from f_clk
:
----[Clk Gate]-----> g_clk
| ^
| |- g_clk_req
|
|
--> f_clk ---|---[Clk Gate]-----> g_clk_rf
| ^
| |- g_clk_rf_req
|
|
----[Clk Gate]-----> g_clk_mul
^
|- g_clk_rf_req
- TBD
- TBD