[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tagged Architectures, a question

Gumby's message answered most of your questions, but I can add a few
more things:

1) Cray architectures are definitely not tagged.  CDC machines that
I've seen are also not tagged.  I don't know about Burroughs.  "Number
crunchers" are typically used for languages with strong typing, so
there is little or no need for run-time type checking.  On the Cray,
for instance, there are separate instructions for fixed-point add and
floating-point add, so the programmer or compiler has to generate the
appropriate one.  Lisp systems on these machines might of course store
type information somewhere in pointers or data, but will need explicit
instructions to do run-time type checking.

2) It's true that some Lisp systems include tags with the pointers and
some with the data.  Tags with the pointers seems to be more
prevalent, probably because it doesn't require an extra memory access
to do a type check.  (And because until recently, pointers took fewer
than 32 bits, leaving spare bits in the standard word size.)

3) One important reason that you have to put tags on the "boxed"
representations of floating-point numbers or bignums is so that the
garbage collector doesn't interpret the data as pointers.

4) It doesn't really matter whether you refer to the CDR-code bits as
tag bits, but since most people associate tags with data types it's
probably best to keep the distinction.  If you're describing Lisp
machine architecture to a class, I'd leave out the description of CDR-
coded lists until they understand the basic concepts.