1 |
$Id: README_DYNTRANS,v 1.6 2005/11/24 01:15:06 debug Exp $ |
$Id: README_DYNTRANS,v 1.11 2006/07/27 02:18:07 debug Exp $ |
|
|
|
|
------------------------------------------------------------------- |
|
|
|
|
|
PPC optimizations TODO: |
|
|
|
|
|
find high-level bottlenecks! |
|
|
inline cr0 field calculation |
|
|
inline pc to pointers calculation |
|
|
load/store with r1 as base |
|
|
multiple load/stores in a row |
|
|
all forms of branches, similar optimizations as with ARM |
|
|
(conditional, link etc) |
|
|
|
|
|
------------------------------------------------------------------- |
|
|
|
|
|
|
|
2 |
|
|
3 |
Dyntrans TODO: |
Dyntrans TODO: |
4 |
|
|
9 |
------ ------- ----- ----- |
------ ------- ----- ----- |
10 |
Alpha 32-bit 64 no |
Alpha 32-bit 64 no |
11 |
ARM 32-bit, 16-bit (Thumb) 32 no |
ARM 32-bit, 16-bit (Thumb) 32 no |
12 |
Atmel AVR 16-bit 8 no |
Atmel AVR 16-bit + variable 8 no |
13 |
F-CPU ? ? ? |
F-CPU ? ? ? |
14 |
|
H8 16-bit 8/16 no |
15 |
HPPA 32-bit 64/32 yes |
HPPA 32-bit 64/32 yes |
16 |
i960 32-bit + variable 32 ? |
i960 32-bit + variable 32 ? |
17 |
IA64 128-bit 64 no |
IA64 128-bit 64 no |
18 |
M68K 16-bit + variable 32 no |
M68K 16-bit + variable 32 no |
19 |
M88K ? 32 (?) ? |
M88K 32-bit (+var?) 32 ? |
20 |
MIPS 32-bit, 16-bit (MIPS16) 64/32 yes |
MIPS 32-bit, 16-bit (MIPS16) 64/32 yes |
21 |
OpenRISC ? ? ? |
OpenRISC ? ? ? |
22 |
PC532 ? 32 (?) ? |
PC532 ? 32 (?) ? |
23 |
POWER/PPC 32-bit 64/32 no |
POWER/PPC 32-bit 64/32 no |
24 |
SH 32-bit, 16-bit (SHcompact) 64/32 yes(*) |
SH 32-bit, 16-bit (SHcompact) 64/32 yes(*) |
25 |
SPARC 32-bit 64/32 yes |
SPARC 32-bit 64/32 yes |
26 |
|
Transputer 8-bit 32/16 no |
27 |
x86 8-bit + variable 64/32/16 no |
x86 8-bit + variable 64/32/16 no |
28 |
VAX 8-bit + variable 32 no |
VAX 8-bit + variable 32 no |
29 |
|
|
30 |
(*) Delay slot in SHcompact? |
(*) Delay slot in SHcompact? |
31 |
|
|
32 |
|
|
|
x) call/return address cache? |
|
|
|
|
33 |
x) instr_call sequence analysis support? (For handtuning combinations.) |
x) instr_call sequence analysis support? (For handtuning combinations.) |
34 |
|
|
35 |
x) opcode statistics support? |
x) opcode statistics support? |
36 |
TODO: is instr_call statistics enough? |
TODO: is instr_call statistics enough? |
|
TODO: a command line option to turn off instruction |
|
|
combinations (for debugging) |
|
37 |
|
|
38 |
x) load/stores: |
x) load/stores: |
39 |
|
o) perhaps refactor/reuse common load/store code? |
40 |
o) support for archs that allow transparent |
o) support for archs that allow transparent |
41 |
unaligned load/stores (ppc, x86 etc) |
unaligned load/stores (ppc, x86 etc) |
42 |
o) alignment checks ==> exceptions |
o) alignment checks ==> exceptions |
47 |
x) SMP: detect when an instruction such as ll/sc or cas is used, |
x) SMP: detect when an instruction such as ll/sc or cas is used, |
48 |
and "synchronize" approximately the number of executed instructions |
and "synchronize" approximately the number of executed instructions |
49 |
(or cycles) across all CPUs. |
(or cycles) across all CPUs. |
50 |
|
Problem: devices such as dev_mp don't work well with such a synch. |
51 |
|
scheme. |
52 |
|
|
53 |
x) support for variable-length instructions (x86, m68k, i960, ...) |
x) support for variable-length instructions (x86, m68k, i960, ...) |
54 |
Solution: don't increase the next_ic between every |
Current solution: ic->arg[0] contains the length of the |
55 |
instruction, but let each instruction's handler do |
instruction (in bytes), and next_ic is |
56 |
that for itself. |
automatically updated. |
57 |
Problem: what about instructions crossing a (virtual) |
Problem: what about instructions crossing a (virtual) |
58 |
page boundary? They cannot be translated once |
page boundary? They cannot be translated once |
59 |
and for all :( and must be interpreted slowly! |
and for all :( and must be interpreted slowly! |
64 |
|
|
65 |
x) various register-window archs (SPARC etc) |
x) various register-window archs (SPARC etc) |
66 |
|
|
|
x) Atmel AVR etc? |
|
|
|
|
67 |
x) Alpha: hahaha, zapnot and inserts/extracts don't |
x) Alpha: hahaha, zapnot and inserts/extracts don't |
68 |
compile into very nice code :-| fix this |
compile into very nice code :-| fix this |
69 |
Solution: if short assembly language snippets can be |
Solution: if short assembly language snippets can be |
70 |
compiled on the current host, then compile such snippets |
compiled on the current host, then compile such snippets |
71 |
for alpha_instr_zapnot etc. |
for alpha_instr_zapnot etc. |
72 |
|
|
73 |
x) 64-bit virtual memory translation tables (PPC, Alpha, MIPS, |
x) pc532? 6502? 6800? etc |
|
HPPA, sh, amd64, etc) |
|
|
|
|
|
x) x86: convert to dyntrans. LOTS of stuff to consider. |
|
|
|
|
|
x) 88k? vax? pc532? 6502? 6800? etc |
|
74 |
|
|