From ...
From: Erik Naggum
Subject: Re: Transmeta's Crusoe as a host for neo-Lispm, or not?
Date: 2000/01/26
Message-ID: <3157901044670304@naggum.no>#1/1
X-Deja-AN: 577947267
References: <8666wpznjd.fsf@coulee.tdb.com> <3157725884436112@naggum.no>
mail-copies-to: never
Content-Type: text/plain; charset=us-ascii
X-Complaints-To: newsmaster@eunet.no
X-Trace: oslo-nntp.eunet.no 948912313 14601 195.0.192.66 (26 Jan 2000 18:45:13 GMT)
Organization: Naggum Software; +47 8800 8879 or +1 510 435 8604; fax: +47 2210 9077; http://www.naggum.no
User-Agent: Gnus/5.0802 (Gnus v5.8.2) Emacs/20.5
Mime-Version: 1.0
NNTP-Posting-Date: 26 Jan 2000 18:45:13 GMT
Newsgroups: comp.lang.lisp
* Barry Margolin
| I'm not familiar with the Pentium III architecture (I haven't really
| studied an instruction set since the Z80). Could you give some examples
| of the features you're talking about?
I'd like to, but that needs delving back into the documentation and doing
quite a bit of research. I have not found time for it in the past few
days, and a three-week break is coming up fast, so I have to disappoint
you with long response times on this one.
| Are these things like the MMX instructions (those were in the Pentium II,
| as well, weren't they)?
the simplest idea is to use published knowledge of the core architecture
to schedule register updates, memory transactions, etc, vastly more
efficiently. several new instructions have also been added to make life
a lot easier for particular tasks -- but actually being able to use them
well requires significant effort on both the part of the programmers and
the compiler writers.
| I know it has lots of bit-twiddling instructions that are supposed to be
| useful for graphics, and I think some DSP-related instructions, but
| neither of these seem like they would be of much assistance in Lisp.
once I understood what they were doing, they were useful mathematical
functions and transformations that required you to shape your problem in
a particular way to be able to use. some of these "contortions" would
not be something a Lisp compiler would ordinarily engage in at all.
however, I wanted to be able to use these instructions and looked at how
I would have to go about that, but in the end, I decided against adding
instructions to the compiler.
| How do other applications make use of these features?
inlined assembly, or even whole functions in assembly language. there
are few compilers out there that can make full use of these things, but
the instruction scheduling isn't terribly hard to codify. the best part
is that when it's done properly, it doesn't affect performance on the
older processors. the new instructions are sometimes expanded as macros
by the better assemblers into instruction sequences for older processors.
| Isn't there some way to use the instructions and trap into macrocode when
| running on an older processor?
there are a whole bunch of CPU flags which tell you whether these new
features are available or not, so you would typically prepare a fat
binary that contained several versions of the same function according to
processor to make optimal use of these features. many games do this.
#:Erik