This paper describes the design and operation of the BACH system, a ha
rdware monitor that can be used to obtain run-time information about a
variety of microprocessor-based systems. BACH (BYU Address Collection
Hardware) operates by monitoring CPU pins directly and can be used to
trace any workload under any operating environment supported by the t
arget platform. A modification to hardware monitoring techniques allow
s the collection of accurate, yet long and contiguous traces. The trac
es collected by BACH contain all references made by the processor incl
uding kernel references, interrupt routines, multiple user tasks, and
data references. BACH traces also include detailed timing. BACH has be
en functional since December 1991 and its operation has been verified
extensively; traces of over a billion references have been captured. I
nterfaces to three hardware platforms have been built: the Intel i8048
6DX, the Motorola MC68030 and the SPARC processor. To date traces have
been collected under a number of operating environments, including: M
S-DOS, UNIX SysVR3.2, UNIX SysVR4, Mach 2.6, MACH 3.0, SUN OS and HP-U
X.