Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!burl!ulysses!allegra!alice!grigg!dmr From: dmr@grigg.UUCP Newsgroups: net.arch Subject: Strange architecture proposal Message-ID: <1105@grigg.UUCP> Date: Fri, 15-Feb-85 01:48:55 EST Article-I.D.: grigg.1105 Posted: Fri Feb 15 01:48:55 1985 Date-Received: Sat, 16-Feb-85 06:04:48 EST Lines: 34 Radford Neal's suggestion, in which memory addresses encode the size of the addressed object, is a good one, but it isn't new. So far as I know, David Wheeler, of Cambridge University, was the first to suggest it several years ago. I don't know if it was ever published. We learned of it when he was visiting Bell Labs, and have since called it "the Wheeler device." Most of Martindale's objections to the idea aren't important. Different data types of the same size: so long as you accept that floating add is an operation different from fixed add, and (if you like) that the same is true for move, the fact that different data types may be the same size doesn't matter. The plan doesn't contemplate extending the idea to big data objects, just the usual byte-to-quadword range. It does indeed require that objects be aligned on a boundary divisible by their size. There has been debate about this, but I don't think it is an onerous requirement. Neal worries about registers. I don't think he should. It all works out if you just make register references use their full width; that is, the Wheeler device is a gadget that fiddles with data going between the CPU and memory, and has nothing to do with registers. It deserves to be tried. The potential advantage is that you can use the redundancy provided by requiring alignment of operands to reduce the number of bits needed for the opcode and/or address specification, while still providing orthogonality of references. The disadvantage is more complicated decoding and the need to be careful when moving pointers around. Dennis Ritchie