/[gxemul]/trunk/src/cpus/README_DYNTRANS
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/src/cpus/README_DYNTRANS

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 20 by dpavlin, Mon Oct 8 16:19:23 2007 UTC revision 32 by dpavlin, Mon Oct 8 16:20:58 2007 UTC
# Line 1  Line 1 
1  $Id: README_DYNTRANS,v 1.6 2005/11/24 01:15:06 debug Exp $  $Id: README_DYNTRANS,v 1.12 2006/10/13 05:01:19 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    
# Line 25  Dyntrans TODO: Line 9  Dyntrans TODO:
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          AVR             16-bit + variable               8               no
13            AVR32           16-bit + variable               32              ?
14          F-CPU           ?                               ?               ?          F-CPU           ?                               ?               ?
15            H8              16-bit                          8/16            no
16          HPPA            32-bit                          64/32           yes          HPPA            32-bit                          64/32           yes
17          i960            32-bit + variable               32              ?          i960            32-bit + variable               32              ?
18          IA64            128-bit                         64              no          IA64            128-bit                         64              no
19          M68K            16-bit + variable               32              no          M68K            16-bit + variable               32              no
20          M88K            ?                               32 (?)          ?          M88K            32-bit (+var?)                  32              ?
21          MIPS            32-bit, 16-bit (MIPS16)         64/32           yes          MIPS            32-bit, 16-bit (MIPS16)         64/32           yes
22          OpenRISC        ?                               ?               ?          OpenRISC        ?                               ?               ?
23          PC532           ?                               32 (?)          ?          PC532           ?                               32 (?)          ?
24          POWER/PPC       32-bit                          64/32           no          POWER/PPC       32-bit                          64/32           no
25          SH              32-bit, 16-bit (SHcompact)      64/32           yes(*)          SH              32-bit, 16-bit (SHcompact)      64/32           yes(*)
26          SPARC           32-bit                          64/32           yes          SPARC           32-bit                          64/32           yes
27            Transputer      8-bit                           32/16           no
28          x86             8-bit + variable                64/32/16        no          x86             8-bit + variable                64/32/16        no
29          VAX             8-bit + variable                32              no          VAX             8-bit + variable                32              no
30    
31          (*) Delay slot in SHcompact?          (*) Delay slot in SHcompact?
32    
33    
   x)  call/return address cache?  
   
34    x)  instr_call sequence analysis support? (For handtuning combinations.)    x)  instr_call sequence analysis support? (For handtuning combinations.)
35    
36    x)  opcode statistics support?    x)  opcode statistics support?
37                  TODO: is instr_call statistics enough?                  TODO: is instr_call statistics enough?
                 TODO: a command line option to turn off instruction  
                         combinations (for debugging)  
38    
39    x)  load/stores:    x)  load/stores:
40                    o)  perhaps refactor/reuse common load/store code?
41                  o)  support for archs that allow transparent                  o)  support for archs that allow transparent
42                      unaligned load/stores (ppc, x86 etc)                      unaligned load/stores (ppc, x86 etc)
43                  o)  alignment checks ==> exceptions                  o)  alignment checks ==> exceptions
# Line 64  Dyntrans TODO: Line 48  Dyntrans TODO:
48    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,
49              and "synchronize" approximately the number of executed instructions              and "synchronize" approximately the number of executed instructions
50              (or cycles) across all CPUs.              (or cycles) across all CPUs.
51          Problem: devices such as dev_mp don't work well with such a synch.
52                    scheme.
53    
54    x)  support for variable-length instructions (x86, m68k, i960, ...)    x)  support for variable-length instructions (x86, m68k, i960, ...)
55                  Solution:  don't increase the next_ic between every                  Current solution: ic->arg[0] contains the length of the
56                          instruction, but let each instruction's handler do                                  instruction (in bytes), and next_ic is
57                          that for itself.                                  automatically updated.
58                  Problem: what about instructions crossing a (virtual)                  Problem: what about instructions crossing a (virtual)
59                          page boundary? They cannot be translated once                          page boundary? They cannot be translated once
60                          and for all :( and must be interpreted slowly!                          and for all :( and must be interpreted slowly!
# Line 79  Dyntrans TODO: Line 65  Dyntrans TODO:
65    
66    x)  various register-window archs (SPARC etc)    x)  various register-window archs (SPARC etc)
67    
   x)  Atmel AVR etc?  
   
68    x)  Alpha: hahaha, zapnot and inserts/extracts don't    x)  Alpha: hahaha, zapnot and inserts/extracts don't
69              compile into very nice code :-|  fix this              compile into very nice code :-|  fix this
70                  Solution: if short assembly language snippets can be                  Solution: if short assembly language snippets can be
71                  compiled on the current host, then compile such snippets                  compiled on the current host, then compile such snippets
72                  for alpha_instr_zapnot etc.                  for alpha_instr_zapnot etc.
73    
74    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  
75    

Legend:
Removed from v.20  
changed lines
  Added in v.32

  ViewVC Help
Powered by ViewVC 1.1.26