[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SUN vs Lisp machine hardware differences?
Date: Tue, 11 Aug 87 17:38 EDT
From: Daniel L. Weinreb <DLW@ALDERAAN.SCRC.Symbolics.COM>
Date: Tue, 11 Aug 87 13:54:26 PDT
From: larus%paris.Berkeley.EDU@berkeley.edu (James Larus)
Cdr-coding was proposed and justify in the mid-1970's when memory
prices and programs were quite different. I don't believe that the
original asssumptions hold true any long. If Symbolics has evidence
that this optimization is worth the complexity, then I and a number of
other people would be very interested in seeing it.
Of course it depends a lot on the time cost of dealing with cdr-coding,
on how much memory costs, on how much memory your program needs, and
which program you're running, and how much of your data structure is
lists versus non-lists, and how many references are to lists (do you
make a whole lot of big lists that you rarely refer to, or the
opposite), and so on. There are other issues here that are really too
complex to go into in detail. No, I don't know of any explict attempts
to do these measurements lately.
Just because I haven't seen them discussed on this list, let me point
out a couple advantages of cdr-coding:
1. For all operations but RPLACD, operations on cdr-coded lists need be
no slower than the equivalent operations on normally-coded lists. On
many architectures individual operations are slower because designers
didn't think additional complexity was worth putting into hardware for
specific operations.
2. On machine architectures which can pipeline memory reads, cdr-coding
is much faster for many operations such as searching a list (MEMBER,
CDDR). In normally-coded lists, memory reads cannot be pipelined since
the cdr address is unknown until it is read.
3. Cdr-coding significantly enhances paging performance with its data
compaction. Just as "files tend to fill up available file space",
programs and data tend to fill up available physical memory.
6 years ago lisp machines commonly had 128K words of memory, and today
they commonly have 2MW. Paging is no less a consideration today, nor do
I see that changing in the forseeable future. (Granted, this is an
assumption you can argue with.)
As usual, I will agree that for architectures with no hardware support,
cdr-coding is a bad idea.