|
|
|
@ -86,7 +86,16 @@ public: |
|
|
|
} |
|
|
|
|
|
|
|
void AddTicks(u64 ticks) override { |
|
|
|
CoreTiming::AddTicks(ticks - num_interpreted_instructions); |
|
|
|
// Divide the number of ticks by the amount of CPU cores. TODO(Subv): This yields only a
|
|
|
|
// rough approximation of the amount of executed ticks in the system, it may be thrown off
|
|
|
|
// if not all cores are doing a similar amount of work. Instead of doing this, we should
|
|
|
|
// device a way so that timing is consistent across all cores without increasing the ticks 4
|
|
|
|
// times.
|
|
|
|
u64 amortized_ticks = (ticks - num_interpreted_instructions) / Core::NUM_CPU_CORES; |
|
|
|
// Always execute at least one tick.
|
|
|
|
amortized_ticks = std::max<u64>(amortized_ticks, 1); |
|
|
|
|
|
|
|
CoreTiming::AddTicks(amortized_ticks); |
|
|
|
num_interpreted_instructions = 0; |
|
|
|
} |
|
|
|
u64 GetTicksRemaining() override { |
|
|
|
|