Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site watcgl.UUCP
Path: utzoo!watmath!watcgl!dmmartindale
From: dmmartindale@watcgl.UUCP (Dave Martindale)
Newsgroups: net.arch
Subject: Re: Strange architecture proposal
Message-ID: <1256@watcgl.UUCP>
Date: Wed, 13-Feb-85 00:32:15 EST
Article-I.D.: watcgl.1256
Posted: Wed Feb 13 00:32:15 1985
Date-Received: Wed, 13-Feb-85 04:45:32 EST
References: <968@calgary.UUCP>
Reply-To: dmmartindale@watcgl.UUCP (Dave Martindale)
Organization: U of Waterloo, Ontario
Lines: 27

I think the idea of having addresses encode the data type is ultimately
unworkable, for the following reasons:

1) How do you handle different data types of the same size?  For example,
   the VAX "long" and "float" data types are the same size, but have
   different move instructions.  Why?  The floating point one may fault
   on certain bit patterns (undefined operand) while the integer one
   had better not.

2) The addressing scheme assumes that every object is a power of 2 bytes
   in size.  What do you do about structures?  If their size is rounded
   up to the next power of 2, you may waste almost half of your memory.
   If their size is not rounded, then you need to come up with some way
   to represent a pointer to an odd-sized object that is not aligned
   on a power-of-two boundary; your addressing scheme does not handle
   this.

3) All objects must be aligned on a "natural" boundary.  While I am
   willing to tolerate the wasted memory or address space that results
   from aligning a 4-byte object on a 4-byte boundary, and even the
   occasional movement of something up to a 512-byte or 2048-byte boundary
   because of hardware page sizes, I don't think anyone will tolerate
   the requirement that a 4Mb table be aligned on a 4Mb boundary.
   (If you think this is a ridiculous example, and that the scheme would
   never be used for large blocks, I agree, but the original article showed
   how the addressing scheme provided a natural method for referencing
   all of memory.)