TEMU 4.0.0

TEMU 4.0.0 was released on 2023-06-30.

Features

  • Parallelization of TEMU. TEMU has a parallel scheduler, that enables the execution of different simulated processor cores on different host processors. This enables the high speed simulation of multi-core processors. Note that as this effects full determinism, so it is possible to still select the single threaded scheduler.

  • User configurable speed factor. The Cycles per Instruction (CPI) or Instructions per Cycle (IPC) can now be set by the user. This is combined with the elimination of the per instruction timing model. All instructions now execute in one step, the CPI/IPC values are used to convert between steps to / from cycles.

API Changes

Event functions now take a temu_TimeSource pointer as argument. The TimeSource pointer in temu_Object has also been updated to this type. This may lead to failed builds if using C++.

To update the models, make sure you pass a temu_TimeSource pointer in place of a temu_Object pointer to these functions.

As with the introduction of temu_Object pointers in the API of TEMU 3.0.0, to keep compiling without changes, set the pre-processor flag: TEMU_TYPE_ERASED_POINTERS.

API Additions

  • Scheduler Control

    • temu_runSecs()

    • temu_step()

    • temu_stop()

    • temu_asyncStop()

  • Time Conversions

    • temu_cyclesToSteps()

    • temu_stepsToCycles()

    • temu_cyclesToStepsRoundedUp()

    • temu_stepsToCyclesRoundedUp()

    • temu_convertToOtherFrequencyTruncated()

    • temu_convertToOtherFrequencyRoundedUp()

Deprecations

  • temu_EventIface is deprecated.

  • The exchange function in temu_MemAccessIface is deprecated and the function will no longer be called.

  • Machine class is deprecated. Note that as the new Scheduler class is not yet supported by the GDB Server, the Machine will still be around for some time.

Other

  • License manager have been reworked a bit. TEMU now requires an explicit installation / configuration step. The steps are detailed in the user’s manual.

  • Time source system simplified and cleaned up.

  • GLIBC version requirement raised to 2.29.