Unix optimized for SPARC?

John Mashey mash at mips.COM
Fri Jul 1 11:30:52 AEST 1988


In article <253 at iconsys.UUCP> ron at iconsys.UUCP (Ron Holt) writes:
>
>Recently, there has been fear expressed that evil AT&T and Sun will
>some how optimize future versions of Unix for SPARC.  Considering the
>portability of Unix being one of its best known traits, wouldn't this
>be rather difficult to do?  I wouldn't consider BSD optimized for the
>VAX nor SVR3 optimized for the 3B2 even though these machines were
>used as the porting bases for their respective Unix variants.  Of course,
>there are very machine specific sections of the Unix kernel, the VM code
>being a good example, but other than that, how could Unix be optimized
>for SPARC?

>From outside, there are two issues:
a) The marketing one: some of the Sun sales/marketing materials we've
seen have explicitly said "standard UNIX would be optimized for SPARC",
including Bernie LaCroute's page in the SunTechnology magaizine of
January or February.  At least some Sun engineers expressed mystification to me
as to what this was about, given that they needed to support SunOS on
at least 2 other architectures :-)

b) There are certainly restructurings of the kernel that might be more
conducive to SPARC (of which the SunOS crew is certainly aware).
I can think of ways to restructure the kernel to help performance on SPARC.
Depending on how they were done, they could either be neutral with regard to
other OSs, or slightly negative; one would assume that people will not
make changes that damage 68K or 386 performance.

There are 2 instantly obvious changes:
	a) [SPARC-specific]: macro-ize or otherwise restructure the kernel
	to lessen the dynamic depth of function calls.  When I've watched
	kernels go, they quite often end up 10-12 deep inside the kernel,
	plus 3-5 deep (fairly quickly) in the user program. This of course
	is the reverese of the directionthat the kernel has been going, i.e.,
	with more layers and indirects for cleaner structuring.
	b) [not  SPARC-specific, but relevant]: handle the u_area differently.
	The kernel's habit of mapping the u_area into the same kernel-virtual
	address causes painful problems in context-switching for virtual
	address+virtual tag machines of some kinds, i.e. you need to flush
	cache pages on each context switch.
	This is NOT specific to SPARC [the 3/2xx has the same issue], but
	is relevant, since:
		a) THe faster the machine gets, the larger hit you take
		from cache-flushing activities and resulting misses.
		b) Most other RISC machine don't use the kind of virtual-virtual
		caches that current SPARC implementations do, so they
		don't have the problem; hence any overhead introduced to
		solve this problem may get in the road.
		(I don't think this is a big issue, as UNIX needs to get
		restructured carefully to handle different flavors of
		cache and MMU design better anyway.)
-- 
-john mashey	DISCLAIMER: <generic disclaimer, I speak for me only, etc>
UUCP: 	{ames,decwrl,prls,pyramid}!mips!mash  OR  mash at mips.com
DDD:  	408-991-0253 or 408-720-1700, x253
USPS: 	MIPS Computer Systems, 930 E. Arques, Sunnyvale, CA 94086



More information about the Comp.unix.wizards mailing list