TIMER: Run simulator pre-calibration for a minimum of 100ms
Faster host systems today can get very fast instruction execution rates for a short duration calibration test. These may be skewed by round off error, so we now run the calibration for a minimum of 100ms.
This commit is contained in:
parent
03a79b1205
commit
8233fdc3c1
2 changed files with 5 additions and 2 deletions
|
@ -3459,8 +3459,10 @@ sim_switches = saved_switches;
|
||||||
sim_cancel (&SIM_INTERNAL_UNIT);
|
sim_cancel (&SIM_INTERNAL_UNIT);
|
||||||
sim_activate (&precalib_unit, sim_precalibrate_ips);
|
sim_activate (&precalib_unit, sim_precalibrate_ips);
|
||||||
start = sim_os_msec();
|
start = sim_os_msec();
|
||||||
|
do {
|
||||||
sim_instr();
|
sim_instr();
|
||||||
end = sim_os_msec();
|
end = sim_os_msec();
|
||||||
|
} while ((end - start) < SIM_PRE_CALIBRATE_MIN_MS);
|
||||||
sim_precalibrate_ips = (int32)(1000.0 * (sim_precalibrate_ips / (double)(end - start)));
|
sim_precalibrate_ips = (int32)(1000.0 * (sim_precalibrate_ips / (double)(end - start)));
|
||||||
|
|
||||||
for (tmr=0; tmr<=SIM_NTIMERS; tmr++) {
|
for (tmr=0; tmr<=SIM_NTIMERS; tmr++) {
|
||||||
|
|
|
@ -78,6 +78,7 @@ int clock_gettime(int clock_id, struct timespec *tp);
|
||||||
|
|
||||||
#define SIM_INITIAL_IPS 5000000 /* uncalibrated assumption */
|
#define SIM_INITIAL_IPS 5000000 /* uncalibrated assumption */
|
||||||
/* about instructions per second */
|
/* about instructions per second */
|
||||||
|
#define SIM_PRE_CALIBRATE_MIN_MS 100 /* minimum time to run precalibration activities */
|
||||||
|
|
||||||
#define SIM_IDLE_CAL 10 /* ms to calibrate */
|
#define SIM_IDLE_CAL 10 /* ms to calibrate */
|
||||||
#define SIM_IDLE_STMIN 2 /* min sec for stability */
|
#define SIM_IDLE_STMIN 2 /* min sec for stability */
|
||||||
|
|
Loading…
Add table
Reference in a new issue