In addition to the basic cycle-count and summary statistics provided
by its profile checkpoints and triggers, the simulator also supports a user-extensible
event-analysis system, called emitters.
The emitters, selected on the GUI screen (
Figure 1),
de-couple performance event-collection from performance analysis tools. The
emitter event-analysis system has two primary functions:
- Event Data Production — During simulation, the simulator can identify
a wide variety of architectural and programmatic events that influence system
and software performance. Using configuration commands, you can request the
simulator to emit records for a specific set of events into a circular, shared
memory buffer. Reader programs attach to the shared memory buffer to consume
these event records. Examples of emitter events include instruction execution,
memory-reference addresses, and cache hits and misses.
- Event Processing — There are one or more readers that analyze event
records from this buffer. The readers typically compute performance measurements
and statistics, visualize system and application behavior, and capture traces
for post-processing. The simulator is prepackaged with a set of prebuilt sample
emitter readers, and users can develop and customize their own emitter readers.
Figure 1 shows the emitter selections available
by clicking the Emitters button on the GUI screen.
Figure 2 shows the emitter architecture.
Emitters can be used in any simulator mode. The writer toggle buttons in the
GUI are used to enable or disable production of the associated event to the
circular buffer. An emitter reader program is needed to receive the events
from the circular buffer using the emitter reader API.
The emitter framework is meant for programmers who wish to conduct performance
analyses or capture traces by developing custom reader programs.
Figure 1. Emitters
Figure 2. Emitter
architecture
The types of events that can be tracked are described in:
/opt/ibm/systemsim-cell/include/emitter/emitter_data_t.h
The categories of events are:
- Begin/end markers (Header, Footer)
- PPU and SPU instructions
- Cache hits or misses
- Process/thread state (create, resume, kill, and so forth)
- Translation Lookaside Buffer (TLB), Segment Lookaside Buffer (SLB), Effective-to-Real
Address Translation (ERAT) operations
- Device operations (disk)
- Annotations
- Transactions