| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
Profiling tool?
Has anyone come across or written a tool that lets you execute a chunk of 6502 that then reports back a disassembly where each instruction is annotated with the total number of cycles it consumed?
Something like unp64 but with added instrumentation, basically.
Closest a quick google found for me was a tool for generating such reports from logs produced by a hardware bus monitor.. |
|
... 23 posts hidden. Click here to view all posts.... |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Quoting JackAsserI did to check min/max/avg raster time for sid tunes. Output is time spent on each instruction and a disassembly, to find hot spots (typically vibrato or pulse sweeps) Off topic, but that reminds me of an old idea of mine:
At the beginning of the player routine called each frame, read this frame's SID register values from a ring buffer and write them to the actual SID registers. Then switch to a thread that would fill the ring buffer with new data until switching back to the calling thread is done with a timer or raster interrupt.
Result: player CPU load spikes are evened out, player code and structure is greatly simplified as no manual load balancing is required. Maximum player CPU time for every video frame can be minimised. |
| |
Digger
Registered: Mar 2005 Posts: 437 |
@Krill: genius! |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
i used that in some part (with an existing player of course) to get rid of spikes.... forgot where though :) |
| |
Frantic
Registered: Mar 2003 Posts: 1648 |
Ergo; Groepaz is a genius |
| |
Perplex
Registered: Feb 2009 Posts: 255 |
I know Bjørn Røstøen has done this, as well as the guys in Booze Design. There are many geniuses out there. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Ah yes, i think i stole the idea from HCL. There might be a thread about this here (from about a decade ago) :) |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
The scene is full of the greatest minds in the galaxy :D
Now, where's my profiling tool? :P |
| |
Slajerek
Registered: May 2015 Posts: 63 |
Actually, a profiling tool is messing my mind for some time already. I have a proof of concept view of such cycles counting and display for the C64 Debugger, but it is not in the master branch yet.
Brush/Elysium showed me at X a Champ 65C02 profiler written in Ruby that is able to generate nice profiling reports in HTML, it shows cycle % per detected procedures and utilizes GraphViz for the code flow diagrams.
I changed the source of Champ to be able to feed data generated by my debugger and just Today released the first alpha version of this, it is included in C64 Debugger v0.64.56.4. Although it is not perfect, as still I need to add labels and watches, but it is quite usable even now.
Go to Settings/Emulation, set profiler output file and start profiling for some time. It will create a *.pd file which then you need to feed to C64 Debugger's version of Champ: http://csdb.dk/getinternalfile.php/179301/c64d-champ-v064564.rb
It should generate a report.html which you can view in a web browser. It has some flaws though that have to be noted:
- the cycle counter is a global VIC counter, not the CPU cycle counter, so bad line cycles are also added, I'm going to add a setting to select which cycle counter to use for profiling
- Champ is completely not able to distinguish if we are in IRQ, thus, cycles taken by code run in IRQ are also counted as a procedure code.
Anyway, this is some starting point I am going to develop further. It is not giving cycles % spent per each code address, but the POC for such view is existing and I suspect should be added in some upcoming version of the C64 Debugger soon. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: The scene is full of the greatest minds in the galaxy :D
Now, where's my profiling tool? :P
You know very well that even if there was such a tool publicly available you'd find an excuse to code you own in Python. I bet you've already started. That's how we work. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
didnt micro64 have some profiling stuff in its "ide"? |
Previous - 1 | 2 | 3 | 4 - Next |