Related articles |
---|
Tool for manual scheduling? broadley@neurocog.lrdc.pitt.edu (1993-10-21) |
Newsgroups: | comp.arch,comp.compilers |
From: | broadley@neurocog.lrdc.pitt.edu (Bill Broadley) |
Followup-To: | comp.arch |
Keywords: | tools, architecture, question |
Organization: | Learning Research and Development Center at U. of Pittsburgh |
Date: | Thu, 21 Oct 1993 04:00:41 GMT |
Anyone out there have a tool to help manually schedule instructions for
time critical inner loops?
I'd like to get 1 fp per cycle on an alpha with a mandelbrot calculation,
this will probably involve creative scheduling, as well as unrolling the
loop at least once.
I have in mind a tool to take the assembly input, display the fp pipeline
at each instruction, taking into account any dependencies and latencies.
Also keep track of register usage (to track the free registers for
unrolling etc.)
So I'd feed in the inner loop (15 instructions or so) and get a printout
like (assuming latency of 6 instructions)
R1 has 2 in it , R10 has oldx. Registers used
pipeline 1 1 1 1 1 1 1 1 1 1 2
1 2 3 4 5 6 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0..
fmult R2,R2,R3 * * * * *
fmult R4,R4,R5 * * * * * * * *
fmult R1,R10,R10 * * * * * * * * *
stall * * * * * * * * *
stall * * * * * * * * *
stall * * * * * * * * *
stall * * * * * *
subt R3,R5,R6 * * * * * *
Etc. By viewing the output I could reorder the instructions and rerun my
program.
I have found that at least in the mandlebrot case that you can do
substantially better then a compiler can. But this tool would make such
manual scheduling much less painful.
I'm ready to write such a beast but I though I'd check to see whats
available, and ask for suggestions.
--
Bill, Broadley@neurocog.lrdc.pitt.edu
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.