Implementing Time-predictable Load and Store Operations
Wednesday, 14 October 2009
Conference paper: Implementing Time-predictable Load and Store Operations by Jack Whitham and Neil Audsley, in Proc. EMSOFT, pages 265-274, 2009.
@inproceedings{fff2,
abstract = {
Scratchpads have been widely proposed as an alternative to
caches for embedded systems. Advantages of scratchpads
include reduced energy consumption in comparison to a cache
and access latencies that are independent of the preceding memory access
pattern. The latter property makes memory accesses
time-predictable, which is useful for hard real-time tasks
as the worst-case execution time (WCET) must be
safely estimated in order to check that the system will
meet timing requirements.
However, data must be explicitly moved between scratchpad and external
memory as a task executes in order to make best use of the limited
scratchpad space. When dynamic data is moved, issues such as pointer
aliasing and pointer invalidation become problematic. Previous
work has proposed solutions that are not suitable for hard real-time
tasks because memory accesses are not time-predictable.
This paper proposes the scratchpad memory management unit (SMMU) as
an enhancement to scratchpad technology. The SMMU implements an alternative
solution to the pointer aliasing and pointer invalidation problems
which (1) does not require whole-program pointer analysis and (2) makes
every memory access operation time-predictable. This allows WCET analysis
to be applied to hard-real time tasks which use a scratchpad and dynamic
data, but results are also applicable in the wider
context of minimizing energy consumption or average execution time.
Experiments using C software show that the combination of an SMMU
and scratchpad compares favorably with the best and worst case performance
of a conventional data cache.},
author = {Jack Whitham and Neil Audsley},
booktitle = {Proc. EMSOFT},
date = {20091014},
pages = {265--274},
title = {{Implementing Time-predictable Load and Store Operations}},
year = {2009},
}