Top Banner
XDS560 Trace Daniel Rinkes Texas Instruments [email protected] Advanced Use Cases for Profiling
38
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 2007 Tidc India Profiling

XDS560 Trace

Daniel RinkesTexas [email protected]

Advanced Use Cases for Profiling

Page 2: 2007 Tidc India Profiling

Agenda

• AET / XDS560Trace Overview

• Interrupt Profiling

• Statistical Profiling• Thread Aware Profiling

• Thread Aware Dynamic Call Graph

Page 3: 2007 Tidc India Profiling

Agenda

• AET / XDS560Trace Overview

• Interrupt Profiling

• Statistical Profiling• Thread Aware Profiling

• Thread Aware Dynamic Call Graph

Page 4: 2007 Tidc India Profiling

What is AET / XDS560 Trace• XDS560 Trace Allows Cycle Accurate

Logging of CPU Address Bus and Data Bus Activity Non-Intrusively, in Real Time

• Advanced Event Triggering (AET) is logic that allows us to smartly turn trace on in interesting locations and off in non-interesting locations so as to preserve the trace buffer for interesting data

Page 5: 2007 Tidc India Profiling

XDS560 Trace Architecture

Additional JTAG Emulation Pins

DATA ADDRESS BUSSES

DATA BUSSES

PROGRAM BUS

DSP

XDS560T POD

CPU

XDS560T POD RECORDING

UNIT

• Current Buffer Size: 224K

• Future: 64 MB To/from host PC

Trace & AET JobsComparatorsCompressor

Cycle counter

Page 6: 2007 Tidc India Profiling

Required Software and Hardware

• 60 Pin emulation header• Target must support

Trace (Full-Gem)• Blackhawk USB 560• XDS560T Trace

Pod/Cable• CCS 3.30 or higher

Page 7: 2007 Tidc India Profiling

64x+ Device Support For TraceSUPPORT TRACE

• C6455• C6488• DM647/DM648

DO NOT SUPPORT TRACE

• DM6443/DM6446• Any LC Device

Page 8: 2007 Tidc India Profiling

Agenda

• AET / XDS560Trace Overview

• Interrupt Profiling

• Statistical Profiling• Thread Aware Profiling

• Thread Aware Dynamic Call Graph

Page 9: 2007 Tidc India Profiling

Interrupt Profiling Overview• Capture Program

Address and Timestamp whenever the PC is within the Interrupt Vector Table

• Generate a cycle accurate picture of when each interrupt starts executing

Graphically display interrupt cycle accurate

interrupt servicing frequency

Page 10: 2007 Tidc India Profiling

0x00897C68 102458

102462102463Cycle Count 102456102457102458102459102460102461

Trace Log

PC Cycles

0x00897C64 102457

0x00897C6C 1024590x00897C70 1024600x00897C74 1024610x00897C78 1024620x00897C7C 102463

0x00897C60 102456

Page 11: 2007 Tidc India Profiling

Data CapturedRaw Trace Data Processed Data

Page 12: 2007 Tidc India Profiling

Results

Page 13: 2007 Tidc India Profiling

Results - 2

Page 14: 2007 Tidc India Profiling

Agenda

• AET / XDS560Trace Overview

• Interrupt Profiling

• Statistical Profiling• Thread Aware Profiling

• Thread Aware Dynamic Call Graph

Page 15: 2007 Tidc India Profiling

Statistical Profiling

GOAL

Get a quick overall view of which functions in an

application consume the most

cycles

• Sampling every Program Counter in an application quickly consumes Trace Buffer Bandwidth, preventing analysis of the entire application

• We can eliminate this problem by only capturing a statistical sample of application execution

Page 16: 2007 Tidc India Profiling

Statistical Profiling Overview

Fxn1Fxn2Fxn3Fxn4Fxn5Fxn6

4 4 2 5 3 3 2 2 2 3 3 6 6 4 4

• The Program Address is sampled at regular intervals• Statistical Analysis is performed on the captured samples• As in any statistical analysis, the determinations made on the statistical sample can be related to the general population

Page 17: 2007 Tidc India Profiling

Statistical Profiling - 2

• AET contains all of the hardware needed to capture trace samples at a specified interval

• Interval should be carefully chose so as not to coincide with a periodic function

• Application instrumentation can switch AET off in locations that are not of interest

Page 18: 2007 Tidc India Profiling

Statistical Profiling - Results• Comma Separated

Value Format• Sorted from most

intensive functions to least

Page 19: 2007 Tidc India Profiling

Agenda

• AET / XDS560Trace Overview

• Interrupt Profiling

• Statistical Profiling• Thread Aware Profiling

• Thread Aware Dynamic Call Graph

Page 20: 2007 Tidc India Profiling

Thread Aware ProfilingGOAL

Generate a cycle accurate execution

graph of a Thread/Task based

application

Time (cycles)

Th

read

(na

me)

Page 21: 2007 Tidc India Profiling

Solution

• Instrument the task/thread switch function to write the task/thread ID to a well known location (global variable)– Operating systems typically provide hooks to

insert functions in this location

• Trace all of the writes to that location, and get a timestamp with each.

Page 22: 2007 Tidc India Profiling

Results

Page 23: 2007 Tidc India Profiling

Agenda

• AET / XDS560Trace Overview

• Interrupt Profiling

• Statistical Profiling• Thread Aware Profiling

• Thread Aware Dynamic Call Graph

Page 24: 2007 Tidc India Profiling

Thread Aware Dynamic Call GraphGOAL

Display a Thread Based representation of actual function execution in an

applicationFunction A

Cycles = 200

Function BCycles = 500

20

0

Function CCycles = 750

200

Function DCycles = 1200

13

2

Function ECycles = 300

68

Function ECycles = 147

50

65

Thread X

Page 25: 2007 Tidc India Profiling

Capturing the Data• Thread/Task

– Hook function writes address of task

• Function– Entry/Exit points instrumented with Mark 0/ Mark 1

instructions*• Mark 0 inlined at each function entry point• Mark 1 inlined at each function exit point

– Trace captures each of these locations with timestamp

* CGT 6.0.1 enables function hooks

Page 26: 2007 Tidc India Profiling

Presentation• Graphical Displays

become impractical as the number of functions increase

• At right is a sample call graph displayed by the Guess graphing package

Page 27: 2007 Tidc India Profiling

GPROF Like Format• Modeled after

Unix GPROF• Each Thread

separated into it’s own subsection

• Each function section contains only immediate callers and callees

Page 28: 2007 Tidc India Profiling

A Closer Look

Primary Line - describes the function

which the entry is about and gives the

overall statistics for this function

Lines for a Functions Callers

Lines for a Functions Callees

Page 29: 2007 Tidc India Profiling

Thread: 0x828194

_DEC_tcp2DeintUnpunctsoft3

_DEC_tcp2QuantizeSoft

_DEC_tcp2PreProc

_varianceEstim

_COM_spoolTsk

_COM_spoolPost

_DEC_tcp2EdmaIsr

_DEC_tcp2DeintUnpunctsoft3

Callers

Callees

_DEC_tcp2DeintUnpunctsoft3

Callers

_DEC_tcp2PreProc

Calls = 388/388

Exclusive Cycles = 14491050

Future Display – Tree View

Page 30: 2007 Tidc India Profiling

Questions?

Page 31: 2007 Tidc India Profiling

Backup Material

Page 32: 2007 Tidc India Profiling

Statistical vs Traditonal Profiling

0.00%

10.00%

20.00%

30.00%

40.00%

Function

% of TimeTraditional

Statistical

Traditional 2.27% 25.00 29.55 27.27 4.55% 11.36

Statistical 0.00% 25.00 33.33 16.67 8.33% 16.67

Fxn1 Fxn2 Fxn3 Fxn4 Fxn5 Fxn6

Comparison vs. TraditionalFxn1Fxn2Fxn3Fxn4

Fxn5Fxn6

4 4 2 5 3 3 2 2 2 3 3 6 6 4 4

•The Results of the statistical profile tend to approximate those found using traditional profiling.

Page 33: 2007 Tidc India Profiling

Advanced Event Triggering Overview

Page 34: 2007 Tidc India Profiling

Use Case Examples• Simple

– Read/Write Data Location– Read/Write Data Range– Specific Value Read/Write

to/from Specific Location

• Medium– Read/Write to location A, but

only after executing instruction B

• Complex– Read/Write to location A, but

only after executing instruction B at least 20 times

• CPU Halt• Interrupt• Start/Advance Counter• Stop/Reload Counter• Start Trace• Store Trace Sample• End Trace• External Trigger (EMU 0/1)• State Transition

Page 35: 2007 Tidc India Profiling

AET Target LIbrary• What is it?

– A Target Library to allow programming of AET resources from the target application

• Advantages over CCS AET Plug-in?– Context based control of where AET is enabled/disabled

– Ability to reallocate AET resources on the fly

– Some functionality not inherently contained in the plug-in

• Disadvantages– Some Application cycles consumed– Some Application footprint used

Page 36: 2007 Tidc India Profiling

Use Case• Consider: Thread based application crashing because of

a suspected overflow of one of the task stacks.• Would like to use AET to monitor the top of the task

stacks and generate an interrupt when we get too close to the top

• Problems– All of the threads are dynamically created at run time, so there’s

no way to know where the top of the dynamically allocated stack will be located at load time.

– There are numerous threads, and AET resources are consumed by ONE “Watchpoint In Range” job

Page 37: 2007 Tidc India Profiling

Solution• Use the AET Target Library• All Operating Systems (DSP/Bios, OSE, etc) have a

thread switch function that occurs when switching tasks. The user can place code in this hook that gets executed every time a thread switches context.

• In this function, program AET to watch the top of the stack of the NEXT thread.

• Every subsequent time that the thread is switched, delete the old AET job, and program a new one.

Page 38: 2007 Tidc India Profiling

Solution - 2• What does this accomplish?

– Reuse of resources• By removing the prior AET job, you are reclaiming the

resources (trigger builder and comparators) that were used.• Additionally, AET is only watching the CURRENT stack at a

given time. Thus we’re able to manage with the 4 data comparators that are available.

– Dynamic Task Location• By programming AET at run time, we can know where the

dynamically allocated tasks are placing their stack. • This method also works perfectly well for statically allocated

tasks.