It’s somewhat of a clone of IBM’s spusim tool. That tool has some things that annoy me and is lacking some features that I would like, so I ended up writing my own!
First of all spusim locks the files you have loaded which is annoying – also it has no recent-files or anything like that. Sputnik has that and will even auto-load the most recently opened file at startup and go to the function you looked at last. Sputnik is able to load both object files and ELF-files.
Sputnik also has a lot of statistics regarding the schedule so you can easily get an idea about the performance and potential of your loops. It also shows you lots of register stats that can be helpful to judge if you have enough registers for unrolling.
Right now scheduling does not cross blocks which I believe is different from how spusim does it. Sometimes that causes spusim to show a stall going into a loop and then that stall becomes part of the loop which is not right either. Since the focus of Sputnik is to analyze loops I think it is better doing it my way. That said, Sputnik does not schedule from bottom of the loop through the branch itself. I’m not sure how to visualize this anyway – if you have any ideas, let me know
It works bascially just like spusim does, but in case you don’t know that tool here are quick usage notes:
■Hovering the mouse over a ‘pipeline block’ highlights it in yellow and shows stats for that block in the info window at the bottom.
■Click and hold on a register in an instruction will highlight that register in the entire pipeline-view.
■Clicking on an instruction (name) in the pipeline view will show the instructions that instruction depends on and the instruction that depend on it.
■Tool-tip in the pipeline view shows you instruction name and latency info.
Window positions and sizes are remembered across restarts. If you need more space for the pipeline-view you can collapse the function-browser and schedule-info.
My plan is to open-source this tool – I just want to clean it up a little before I do so.
That’s about it. Let me know what you think in the comments or on twitter @jonrocatis
■Need to do something with branches. I’m not sure what.
■Saving of which function you looked at last doesn’t really work.
■27-july-2011. Build 2. Fixed some crash bugs.
■26-july-2011. First release.
Windows – You might need the Qt runtime libraries if you don’t have Qt on your machine already. Grab them here
Thanks to BlazeG for the news submission.