Florida State University
Languages, Compilers, and Tools for Embedded Systems
In Search of Near-Optimal Optimization Phase Orderings Prasad A. - - PowerPoint PPT Presentation
Florida State University In Search of Near-Optimal Optimization Phase Orderings Prasad A. Kulkarni David B. Whalley Gary S. Tyson Jack W. Davidson Languages, Compilers, and Tools for Embedded Systems Florida State University Optimization
Languages, Compilers, and Tools for Embedded Systems
Languages, Compilers, and Tools for Embedded Systems
2
Languages, Compilers, and Tools for Embedded Systems
3
Languages, Compilers, and Tools for Embedded Systems
4
Languages, Compilers, and Tools for Embedded Systems
5
Languages, Compilers, and Tools for Embedded Systems
6
Languages, Compilers, and Tools for Embedded Systems
7
Languages, Compilers, and Tools for Embedded Systems
8
searches for given words in phrases stringsearch
secure hash algorithm sha security image compression / decompression jpeg consumer fast fourier transform fft telecomm Dijkstra’s shortest path algorithm dijkstra network test processor bit manipulation abilities bitcount auto
Languages, Compilers, and Tools for Embedded Systems
9
Languages, Compilers, and Tools for Embedded Systems
10
Languages, Compilers, and Tools for Embedded Systems
11
a b c d a b c d a d a d a d b c b c b c
L2 L1 L0
Languages, Compilers, and Tools for Embedded Systems
12
L2 L1 L0 a b c d b c d a d a d c b
Languages, Compilers, and Tools for Embedded Systems
13
Languages, Compilers, and Tools for Embedded Systems
14
L2 L1 L0 a b c c d a d a d
Languages, Compilers, and Tools for Embedded Systems
15
Languages, Compilers, and Tools for Embedded Systems
16
Languages, Compilers, and Tools for Embedded Systems
17
Languages, Compilers, and Tools for Embedded Systems
18
Worst Batch 47.64 4.60 182.8 27.5 25362.6 average …. …. .... .... .... .... 75.32 4.29 143 30 8566 main(d) 4.49 0.20 9 40 570 enqueue(d) 51.12 0.04 1168 44 86370 dijkstra(d) 12.00 0.00 14 59 102 dequeue(d) 4.68 4.09 8 33 48 ntbl_bit…(b) 18.69 18.69 20 50 253 ntbl_bitcnt(b) 233.31 8.33 171 45 92834 main(b) 4.33 2.40 10 63 86 bitcount(b) 3.96 0.00 3 82 147 bit_shifter(b) 1.40 1.40 4 72 155 bit_count.(b) 4.00 0.00 4 198 56 BW_btbl...(b) 4.55 0.00 2 88 40 AR_btbl...(b) % from optimal Leaf CF Insts. Function
Languages, Compilers, and Tools for Embedded Systems
19
Languages, Compilers, and Tools for Embedded Systems
20
Languages, Compilers, and Tools for Embedded Systems
21
Languages, Compilers, and Tools for Embedded Systems
22
Languages, Compilers, and Tools for Embedded Systems
23
Languages, Compilers, and Tools for Embedded Systems
24
Languages, Compilers, and Tools for Embedded Systems
25
Languages, Compilers, and Tools for Embedded Systems
26
4.38 …. 4 2 4 6 2 2 6 1 2 2 2 1 Leaves 0.98 …. 1.00 1.00 0.97 1.00 1.00 0.95 1.00 0.92 1.00 1.00 1.00 1.00 Ratio Lcorr 0% Leaves Ratio 21 0.996 0.96 average …. …. …. .... 4 1.00 0.98 main(d) 4 1.00 1.00 enqueue(d) 269 1.00 1.00 dijkstra(d) 6 1.00 0.99 dequeue(d) 2 1.00 0.99 ntbl_bit…(b) 2 0.95 1.00 ntbl_bitcnt(b) 23 1.00 1.00 main(b) 1 0.92 0.89 bitcount(b) 2 1.00 1.00 bit_shifter(b) 2 1.00 1.00 bit_count.(b) 2 1.00 1.00 BW_btbl...(b) 1 1.00 1.00 AR_btbl...(b) Lcorr 1% Pcorr Function
Languages, Compilers, and Tools for Embedded Systems
27
Languages, Compilers, and Tools for Embedded Systems
28
Languages, Compilers, and Tools for Embedded Systems
29
Modified GA 0.51 …. 3.96 0.00 0.00 0.00 0.00 6.55 0.00 0.00 0.00 0.00 0.00 0.00 Diff 0.87 …. N Y Y Y Y N Y Y Y Y Y Y Opt Original GA 0.02 …. 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Difff 0.97 …. Y Y Y Y Y Y Y Y Y Y Y Y Opt average .... main(d) enqueue(d) dijkstra(d) dequeue(d) ntbl_bit…(b) ntbl_bitcnt(b) main(b) bitcount(b) bit_shifter(b) bit_count.(b) BW_btbl...(b) AR_btbl...(b) Function
Languages, Compilers, and Tools for Embedded Systems
30
Languages, Compilers, and Tools for Embedded Systems
31
Languages, Compilers, and Tools for Embedded Systems
32
Languages, Compilers, and Tools for Embedded Systems
33
Languages, Compilers, and Tools for Embedded Systems
34
Languages, Compilers, and Tools for Embedded Systems
35
r[2] = 1; r[2] = 1; r[3] = r[4] + r[2]; r[3] = r[4] + r[2]; ⇒ ⇒instruction selection instruction selection r[3] = r[4] + 1; r[3] = r[4] + 1; r[2] = 1; r[2] = 1; r[3] = r[4] + r[2]; r[3] = r[4] + r[2]; ⇒ ⇒constant propagation constant propagation r[2] = 1; r[2] = 1; r[3] = r[4] + 1; r[3] = r[4] + 1; ⇒ ⇒dead assignment elimination dead assignment elimination r[3] = r[4] + 1; r[3] = r[4] + 1;
Languages, Compilers, and Tools for Embedded Systems
36
Languages, Compilers, and Tools for Embedded Systems
37
Languages, Compilers, and Tools for Embedded Systems
38
a b c d b c d a d a d a c b b c L2 L1 L0
Languages, Compilers, and Tools for Embedded Systems
39
sum = 0; for (i = 0; i < 1000; i++ ) sum += a [ i ]; Source Code
r[10]=0; r[12]=HI[a]; r[12]=r[12]+LO[a]; r[1]=r[12]; r[9]=4000+r[12]; L3 r[8]=M[r[1]]; r[10]=r[10]+r[8]; r[1]=r[1]+4; IC=r[1]?r[9]; PC=IC<0,L3;
Register Allocation before Code Motion
r[11]=0; r[10]=HI[a]; r[10]=r[10]+LO[a]; r[1]=r[10]; r[9]=4000+r[10]; L5 r[8]=M[r[1]]; r[11]=r[11]+r[8]; r[1]=r[1]+4; IC=r[1]?r[9]; PC=IC<0,L5;
Code Motion before Register Allocation
r[32]=0; r[33]=HI[a]; r[33]=r[33]+LO[a]; r[34]=r[33]; r[35]=4000+r[33]; L01 r[36]=M[r[34]]; r[32]=r[32]+r[36]; r[34]=r[34]+4; IC=r[34]?r[35]; PC=IC<0,L01;
After Mapping Registers
Languages, Compilers, and Tools for Embedded Systems
40