r...@fdy2.demon.co.uk (Robert Swindells) writes:Well, yes, but fixnums in FranzLisp contained even fewer bits than on
> Erik Naggum <e...@naggum.no> wrote in message <news:email@example.com>...
> > I really wish fixnums were the natural machine word.
> PDP-10 Maclisp and Franz Lisp used bibop rather than tag bits to type
> This meant that pointers as well as fixnums could be passed straight
more modern CL implementations (I think that the range was -1023 to
1022, or something like that). In fact, a section of memory was
explicitly allocated for fixnums, so that no other lisp objects
could be allocated at that location (so that the gc and type-of could
not become confused as to whether or not a bit pattern was a fixnum
or a lisp object of some other type. And since fixnums have magnitude
and order, it was not just a case of allocating new pages of fixnums
The implication to this is that if you cover all of the 32-bit space
> On a modern CPU with huge penalties for cache misses, tags make moreThe modern CLs do not use memory accesses for fixnums; they are
> sense as they will always be in the cache along with the pointer that
> they type. Needing to load a cacheline for the pointer as well as one
> for part of the type table would really reduce cache efficiency.
immediates. Therefore going back to bibop (in hashed-address form)
for fixnums carries with it an automatic penalty with it, no matter
how fast your cache.
> I have always wished that more effort had been made to try addingThe entire reason for modern lisps moving away from special-purpose
> hardware features to speed up bibop. All of the lispms and the RISC
> chips that I know of (SOAR, SPUR and SPARC) used tags.
> I started building an add-on board to the AtariST to do hardware bibop
hardware is because such hardware cannot compete in the long term.
There is no way for a LispM company to devote close to the same
order of magnitude of manpower to keep the performance curve up with
GP hardware. However... if you can use existing GP hardware to
> In a modern CPU there are usually several spare bits in a page tableThis is a good idea, as long as
> entry. I would like to see some way of using them to store the type
> of objects in that page.
1. The pte bits truly are spare (and are likely to stay that way)
2a. Your Operating system allows you to use these bits, or
> It would be nice to have a user mode instruction that would treat theMost architectures do indeed have such instructions, but some of them
> contents of a source register as a pointer and load the type bits for
> it's page table entry into a destination register.
regard such instructions as supervisor-only, and thus only accessible
by a LispOS kernel, or by explicit kernel support in whatever Unix
kernel you are operating under.
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.