Date: Mon, 22 Jan 96 13:58:56 MET From: Greg Lehey <lehey.pad@sni.de> To: davidg@Root.COM Cc: hackers@freebsd.org (Hackers; FreeBSD) Subject: Re: stanford benchmark/usenix Message-ID: <199601221302.OAA11833@nixpbe.pdb.sni.de> In-Reply-To: <199601221256.EAA14695@Root.COM>; from "David Greenman" at Jan 22, 96 4:56 am
next in thread | previous in thread | raw e-mail | index | archive | help
> > >> I didn't intend to suggest one, but if you or someone else decides to do > >> this, bare in mind that there is definately many 'wrong ways' to do this. We > >> don't want a plethora of "if (cpu_class == FOO)" type of things in libc as it > >> reduces performance for small operations. I think the way to do it is to jump > >> through a function vector that is initialized by default to a generic function. > >> The function vector can then be changed to an optimized function for specific > >> CPU types. This would happen at some convenient place before program startup, > >> or perhaps in the generic function (which could, perhaps, be a stub whose sole > >> purpose is to select the appropriate routine, or fall back to a generic one). > >> I really don't want to get into this in more detail right now - I don't have > >> the time and in the end it would be easier to just sit down and code it. If > >> you think you know how to implement this correctly, then by all means, go for > >> it! > > > >Wouldn't it make more sense to have separate libraries for each > >processor type, and to install the appropriate versions? > > Certainly that's another way to do it, but it can be confusing to have lots > of different libraries around. I suppose you'd handle this by using a symlink > to point to the appropriately optimized version...and of course all of the > versions have to at least run on all of the processors (otherwise hardware > upgrades become very difficult and confusing (and bug-report generating!). Yes, I thought of that. The alterneative of being able to run the versions on all processors rather defeats the advantage: I had thought of a part of the system startup that checks the processor type and puts in the correct hard links (symlinks are slower) before any program gets started. It would probably be a good idea to have an emergency program which reinstated the generic libraries, too. > I switch CPUs around enough here that it would be a small problem for me > personally, but I suppose it wouldn't be a problem for most people. Most people don't switch CPUs, so they wouldn't have the problem. But certainly it needs a little care in the implementation. Greg
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199601221302.OAA11833>