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.
 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},