D.A.B. Weikle, K. Skadron, S.A. McKee, and W.A. Wulf.
Tech Report CS-2000-23, Univ. of Virginia Dept. of Computer
Science, Aug., 2000.
Abstract
Interpreting reference patterns in the output of a processor is
complicated by the lack of a succinct notation for humans to use when
communicating about them. Since an actual trace is simply an
incredibly long list of numbers, it is difficult to see the underlying
patterns inherent in it. The source code, while simpler to look at,
does not include the effects of compiler optimizations such as loop
unrolling, and so can be misleading as to the actual references and
order seen by the memory system. To simplify communication of traces
between researchers and to understand them more completely, we have
developed a notation for representing them that is easy for humans to
read, write, and analyze. We call this notation TSpec, for trace
specification notation. It has been designed for use in cache design
with four goals in mind. First, it is intended to assist in
communication between people, especially with respect to understanding
the patterns inherent in memory reference traces. Second, it is the
object on which the cache filter model operates. Specifically, the
trace and state of the cache are represented in TSpec, these are then
the inputs for a function that models the cache, and the result of
that function is a modified trace and state that are also represented
in TSpec. Third, it supports the future creation of a machine readable
version that could be used to generate traces to drive simulators, or
for use in tools (such as translators from assembly language to
TSpec). Finally, it can be used to represent different levels of
abstraction in benchmark analysis.