Thanks Ralf

Looks like I made the correct call when I picked MIPS32 Kernel.
Look like some of my preformance issues are in Montavistas 2.95.3 toolchain,
it's generating code that looks like this

0000000000000000 <bitBufferCreate>:
   0: 27bdffe0  addiu $sp,$sp,-32
   4: afbf001c  sw  $ra,28($sp)
   8: afb20018  sw  $s2,24($sp)
   c: afb10014  sw  $s1,20($sp)
  10: afb00010  sw  $s0,16($sp)
  14: 00809021  move  $s2,$a0
  18: 00a08021  move  $s0,$a1
  1c: 00c08821  move  $s1,$a2
  20: 24040001  li  $a0,1
  24: 24050010  li  $a1,16
  28: 3c020000  lui $v0,0x0
  2c: 24420000  addiu $v0,$v0,0

but if I use the 2.95.3 toolchain I build myself it's
generating code that looks like this.

0000000000000000 <bitBufferCreate>:
   0: 27bdffe0  addiu $sp,$sp,-32
   4: afb20018  sw  $s2,24($sp)
   8: 00809021  move  $s2,$a0
   c: afb00010  sw  $s0,16($sp)
  10: 00a08021  move  $s0,$a1
  14: afb10014  sw  $s1,20($sp)
  18: 00c08821  move  $s1,$a2
  1c: 24040001  li  $a0,1
  20: 24050010  li  $a1,16
  24: 3c020000  lui $v0,0x0
  28: 24420000  addiu $v0,$v0,0


Any idea whats up MV tool-chain.


Dennis


-----Original Message-----
From: Ralf Baechle [mailto:ralf@linux-mips.org]
Sent: Thursday, April 17, 2003 5:04 PM
To: Dennis Castleman
Cc: linux-mips@linux-mips.org
Subject: Re: your mail


On Thu, Apr 17, 2003 at 10:53:57AM -0700, Dennis Castleman wrote:

> Anybody know the performance differences I can expect using a MIPS 5K core
> @250 Mhz in 64bit mode versus 32bit mode?

As a rule of thumb - less performance.  64-bit code is typically larger
resulting in lower cache hit rate.  And since performance optimization
these days is essentially equivalent to maximising the cache hit rate
going 64-bit usually means a performance drop due to the drastically
larger size of code and data.

On the positive side for 64-bit stuff there's the possibility to do
64-bit computations with just one instruction, move data with less
instructions, use twice as many double precission fp registers that are
offered by 64-bit ABIs and more calling sequences.

The first two paragraphs were sort of a generic statement regarding
32-bit vs. 64-bit software on MIPS processors and affect both kernel and
userspace.  There's a few additional issues with the Linux kernel.
The 32-bit kernels requires all memory to be addressable through KSEG0
which limits it to at most 512MB; typically the limit is more like 256MB.
Memory above 512MB physical address can only be used as highmem.  That's
fairly inefficient and requires alot of special care when writing new
kernel software.  For processors that suffer from virtual aliases in
their data cache highmem currently is frighteningly inefficient - and
high memory pressure on lowmem doesn't help either.  So from a certain
point on that's simply making a 64-bit kernel is simply the better
idea - even for running 32-bit software.  That in particular applies
to very I/O intensive stuff.

In short - the right choice is a tradeoff between the hardware platform
and the application's requirements.  Choose wrong and you'll curse
loudly :-)

  Ralf