home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / sys / sgi / 18080 < prev    next >
Encoding:
Internet Message Format  |  1992-12-16  |  3.1 KB

  1. Xref: sparky comp.sys.sgi:18080 comp.lang.forth:3634 comp.benchmarks:1875
  2. Newsgroups: comp.sys.sgi,comp.lang.forth,comp.benchmarks
  3. Path: sparky!uunet!europa.asd.contel.com!emory!sol.ctr.columbia.edu!venezia!penev
  4. From: penev@venezia (Penio Penev)
  5. Subject: Re: Comparison of R3000 and Intel 386 and 486's
  6. References: <1992Dec16.055418.12364@ringer.cs.utsa.edu>
  7. Sender: nobody@ctr.columbia.edu
  8. Organization: Rockefeller University
  9. Date: Wed, 16 Dec 1992 11:08:36 GMT
  10. X-Newsreader: TIN [version 1.1 PL6]
  11. Message-ID: <1992Dec16.110836.7376@sol.ctr.columbia.edu>
  12. Reply-To: penev@venezia.rockefeller.edu
  13. X-Posted-From: venezia.rockefeller.edu
  14. NNTP-Posting-Host: sol.ctr.columbia.edu
  15. Lines: 64
  16.  
  17. David M. Senseman (senseman@ethel.brainlab.utsa.edu) wrote:
  18. : Can anyone send me "speed comparisons" between R3000 and Intel's 386/486 
  19. : chips? (yeah, I know, ......).
  20.  
  21. I just wrote FORTH (assembler, interpreter, compiler) for the R3000
  22. (actually fort the MIPS RISC family). I did this for the i486 (and
  23. 386) protected mode in April, so my memories are fresh.
  24.  
  25. I'll compare them in the 33MHz version, running out of cache, numbers
  26. are in clocks. Number in brackets are if You cannot fill the delay slot
  27. (which is _rarely_ the case)
  28.  
  29.             i486        Rx000        
  30. Memory fetches:        1         1(2)
  31. Register moves:        1        1
  32. Arithmetics 
  33.   out of regs:        2        1
  34.   out of memory        3        1+1
  35. Jumps            3        1(2)
  36. Subroutine call/ret    6        6, sometimes 4
  37. Memory moves:        (5?6?7)        6     ( per 32-bit word)
  38. Loops            (5?)        2
  39. Stack operations    (1?2)/word    1/word + 1        
  40. Multiply/divide        11mul/?div    12m/35d +1-2 for getting 1-2 results to regs
  41. FPU +/-            ?        2s/3d (R3000)
  42. FPU *            ?        4-single, 5-double
  43. FPU /            ?        12s/19d
  44. moves to/from FPU    (10?)        1 + 1-2 if convert is needed.
  45. Cache miss penalty to
  46.     secondary cash    3        no such (R3000)
  47.                     ? (R4000)
  48. Memory access out
  49.     of cache    memory and bus dependent    
  50.  
  51. The ?s are lapses of memory.
  52.  
  53. The R3000 can acomodate 32+32 Kb cache, which _greatly_ helps. 
  54. The i486 has 8 Kb. (which uses somewhat better, because of the shorter instructions size)
  55.  
  56. The larger cache on the Rx000 allows it to execute out of cache for the greatest 
  57. part of the time. If The i486 runs out of cache, it slows 2-4 times. 
  58. Rx000 has a lot of registers, which act as a very selective and effective cache.
  59.  
  60. The actual gain depends a lot on the type of task the processor is running.
  61. One should consider the predominance of operation in his application.
  62. For mine - FORTH, which is a very structured and stack-intensive language,
  63. I find it somewhere between 1.5 and 3.
  64. For one of my scientific tasks (Monte Carlo simulation with lots of pointers and 
  65. tables >8K and <32K), it is about 5-7.
  66.  
  67. For integer multiply/divide the i486 is a lot more conviniant. it has a 64/32=32
  68. bit divide mode, which makes 96(128)/32=64(96) division of very high precision
  69. integers a piece of cake. I love this instructions. On the Rx000 You must
  70. use the brute-force binary divide algorithm, which is slow as hell (comparatively).
  71.  
  72. For Float, I think, that the R3000 is a bit faster, but less than 2 times.
  73.  
  74. I'd be interested to hear other comments, especially from folks, who has
  75. programmed both processors.
  76.  
  77. -- Penio. 
  78.  
  79.  
  80.