Nexus3/ Module
e200z3 Power Architecture Core Reference Manual, Rev. 2
10-26
Freescale Semiconductor
10.7.1.3
BTM Using Branch History Messages
Traditional BTM can accurately track the number of sequential instructions between branches, but cannot
accurately indicate which instructions were conditionally executed and which were not.
Branch history messaging solves this problem by providing a predicated instruction history field in each
indirect branch message. Each bit in the history represents a predicated instruction or direct branch, or a
not-taken indirect branch. A value of one indicates the conditional instruction was executed or the direct
branch was taken. A value of zero indicates the conditional instruction was not executed or the direct
branch was not taken. Certain instructions (evsel) generate a pair of predicate bits that are both reported as
consecutive bits in the history field.
Branch history messaging facilitates program trace by providing the information described in
Section 10.7.1.1, “e200z3 Indirect Branch Message Instructions (Book E)”
:
Branch history messages solve predicated instruction tracking and save bandwidth because only indirect
branches cause messages to be queued.
10.7.1.4
BTM Using Traditional Program Trace Messages
Program tracing can utilize either branch history messages (DC1[PTM] = 1) or traditional direct/indirect
branch messages (DC1[PTM] = 0).
Branch history saves bandwidth and keeps consistency between methods of program trace, yet may lose
temporal order between BTM messages and other types of messages. Since direct branches are not
messaged, but are instead included in the history field of the indirect branch history message, other types
of messages may enter the FIFO between branch history messages. The development tool cannot
determine the ordering of events that occurred with respect to direct branches simply by the order in which
messages are sent out.
Traditional BTM messages maintain their temporal ordering because each event that can cause a message
to be queued enters the FIFO in the order it occurred and is messaged out maintaining that order.
10.7.2
BTM Message Formats
The e200z3 Nexus3/ block supports three types of traditional BTM messages: direct, indirect, and
synchronized messages. It supports two types of branch history BTM messages: indirect branch history,
and indirect branch history with synchronized messages. Debug status messages and error messages are
also supported.
Table 10-22. Direct Branch Message Sources
Source of Direct Branch Message
Instructions
Taken direct branch instructions
b
,
ba
,
bl
,
bla
,
bc
,
bca
,
bcl
,
bcla,
se_b. se_bc, se_bl, e_b, e_bc,
e_bl, e_bcl, isync, se_isync
Instruction synchronize
isync, se_isync