[net.micro] 64bit micros

breuel@harvard.ARPA (Thomas M. Breuel) (12/17/84)

|[Dave Trissel writes:]
|Lets examine now the potential extension to 64 bits.  I would suggest that
|the criterian will be the same.  If there are data types (address or data)
|which will not effectively operate in a 32-bit register environment then
|there will be a push for a larger than 32-bit architecture.
|
|Concerning data types, there is only one I can think of that would merit
|more than 32-bits: the floating-point number.  Most architectures which

When you are thinking in terms of 'conventional' programming languages
like ALGOL, Pascal, 'C', or Fortran, that is certainly true. Not much
is gained by increasing the bus size to more than the the size of an
average pointer, integer, and floating point number, which means to
more than 32bits.

However, for languages like PROLOG, SmallTalk, and LISP it turns out to
be incredibly useful to be able to store two pointers, or pointers and
type information, in a single word of memory.

The reason for this is that for almost any operation in such languages
you need to obtain both the type and the value of an object from
memory. The granularity of a memory access is therefore, on the
average, two times the size of a pointer.

As an example take PROLOG. Having two pointers per memory word allows
you to implement structure sharing efficiently, a technique in which
you basically represent complex data structures by a pointer to a
template and a vector consisting of the variable parts of the data
structure.

Each item in the template (e.g. integer, variable, atom, ...) consists
of a reference describing the particular value of the item, and its
type. To use an item in the template, both its type and its value have
to be known, and therefore, both its type and its value have to be
brought into the CPU at one point. It therefore helps a lot to be able
to load both of them with one memory access.

						Thomas.

PS: On the DEC-10, on which most work on structure-sharing PROLOG's has
been done, the type information can even be encoded in such a way that
most operations on PROLOG objects are performed in micro-code, i.e.
without memory accesses for the re-loading of new instructions. The
reason for this is that part of an instruction can be contained in the
data that the instruction operates upon. I know of only the DEC-10
which allows you to do this in sufficient generality. Some IBM
machines, for example, have an indirection bit in pointers, but they
restrict the number of indirections to 5 (?).

henry@utzoo.UUCP (Henry Spencer) (12/18/84)

Remember that architectural width and memory-access width are not
necessarily the same.  The 11/70, for example, has a 16-bit architecture
but a 32-bit memory path.  Requirements for greater memory bandwidth
are a fairly weak argument for a change in *architecture*.

I tend to agree with the contention made by the folks who started this
debate:  the pressures that pushed us from 16 to 32 bits do not operate
nearly as strongly to push from 32 to 64.  16 just plain isn't enough
for a decent address (it is often, although not always, sufficient for
the data).  32 will last us a fair while, perhaps a long while, before
it becomes seriously constraining.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry