Noah Yan wrote:
> I just realized that for Solaris x86, userland and kernel share the same 
> address space (4G in 32bit), like the 3G/1G split in Linux and other kernel, 
> but in SPARC sun4u, the user and kernel have separate address space, each 
> with 4G in 32-bit. 
> 
> Is it just a matter of having different size of AS, or other reasons?
> What is the advantage of the shared one over the separated one?

none, really.

> What is the advantage of the separated one over shared one?

Full 4 GB address space for 32 bit apps.
Full 4 GB address space for the kernel (critical for 32 bit machines with large 
memory)

Note that with Solaris 10, Solaris no longer supports 32 bit kernels on SPARC/

> Why solaris makes the difference for the x86 and SPARC? I mean what the 
> difference of the architecture cause this.

As Adam pointed out, sun4u machines support alternate address spaces.

> Also seems sun4d has shared AS, what cause Solaris use the separate AS in 
> sun4u?

What forced the issue is the need to support large amounts of physical memory
with 32 bit kernels.  There's also better rogue pointer detection, but this is
secondary.

> For PowerPC implementation, which approach should we use, and why?
> 

If powerpc doesn't support the idea of multiple active 32 bit address spaces,
you're basically stuck with a shared kernel/user space.

32 bit architectures are rapidly becoming less and less interesting, of course;
there are significant kernel performance advantages being able to directly map 
all
of physical memory.  It's like uni-processors - they're on the way out given the
trends in chip design; cranking the MHz isn't really an option any more, but our
transistor  budget continues to increase.  Adding cores and threads is a 
relatively
straightforward (step and repeat) way of getting significant performance wins
on many workloads.


- Bart

-- 
Bart Smaalders                  Solaris Kernel Performance
barts at cyber.eng.sun.com              http://blogs.sun.com/barts

Reply via email to