[comp.arch] Floating Point Risc

jallen@eeserv1.ic.sunysb.edu (Joseph Allen) (04/20/91)

How's this for a risc processor:  No integer instructions at all.  Addresses
would be floating point too, but automatically INTed when presented to the
address lines (or maybe normalized floating point numbers themselves could be
used as addresses...).  There would be one floating point number per integer
address or 4 or 8 bytes per address (load byte at location 123.75).  When
bytes are loaded/stored they're also converted to/from floating point while
they're in the registers.  

The math people would love it :-)

Oh, plus many peripherals could use the floating point directly:  forget about
4G colors, have 4G colors with logmerthic intensity... Same deal with sound...
--
#define h 23 /* Height */         /* jallen@ic.sunysb.edu (129.49.12.74) */
#define w 79 /* Width */                       /* Amazing */
int i,r,b[]={-w,w,1,-1},d,a[w*h];m(p){a[p]=2;while(d=(p>2*w?!a[p-w-w]?1:0:0)|(
p<w*(h-2)?!a[p+w+w]?2:0:0)|(p%w!=w-2?!a[p+2]?4:0:0)|(p%w!=1?!a[p-2]?8:0:0)){do
i=3&(r=(r*57+1))/d;while(!(d&(1<<i)));a[p+b[i]]=2;m(p+2*b[i]);}}main(){r=time(
0L);m(w+1);for(i=0;i%w?0:printf("\n"),i!=w*h;i++)printf("#\0 "+a[i]);}

haynes@felix.ucsc.edu (99700000) (04/21/91)

In article <1991Apr20.063947.12811@sbcs.sunysb.edu> jallen@eeserv1.ic.sunysb.edu (Joseph Allen) writes:
>
>How's this for a risc processor:  No integer instructions at all.  Addresses
...
Except that it isn't a RISC you have just invented the Burroughs B5000,
circa 1960 (and continuing to this day in the Unisys A-series machines).
Integers are simply unnormalized floating-point numbers with zero exponents.
No type conversions, except there is an integerize instruction used
before storing values that are declared to be int-s.

paul@taniwha.UUCP (Paul Campbell) (04/21/91)

In article <1991Apr20.063947.12811@sbcs.sunysb.edu> jallen@eeserv1.ic.sunysb.edu (Joseph Allen) writes:
>
>How's this for a risc processor:  No integer instructions at all.  Addresses
>would be floating point too, but automatically INTed when presented to the
>address lines (or maybe normalized floating point numbers themselves could be
>used as addresses...).  There would be one floating point number per integer
>address or 4 or 8 bytes per address (load byte at location 123.75).  When
>bytes are loaded/stored they're also converted to/from floating point while
>they're in the registers.  

Sounds like a B6700 et al. all numbers are FP, the FP representations are
chosen such that a number with a 0 exponent happens to be an integer with
the MSB bits == 0. (Of course they use sign/magnatude rather than 2's
complement so they can get away with it ...)


	Paul


-- 
Paul Campbell    UUCP: ..!mtxinu!taniwha!paul     AppleLink: CAMPBELL.P
There once was a landlord from Berkeley,Whose apartments were rundown and dirty
He decided to run,			For the rent-board, and won!
Now his tenants are homeless and hurting.

dik@cwi.nl (Dik T. Winter) (04/21/91)

In article <14766@darkstar.ucsc.edu> haynes@felix.ucsc.edu (99700000) writes:
 > 
 > In article <1991Apr20.063947.12811@sbcs.sunysb.edu> jallen@eeserv1.ic.sunysb.edu (Joseph Allen) writes:
 > >
 > >How's this for a risc processor:  No integer instructions at all.  Addresses
 > ...
 > Except that it isn't a RISC you have just invented the Burroughs B5000,
 > circa 1960 (and continuing to this day in the Unisys A-series machines).
 > Integers are simply unnormalized floating-point numbers with zero exponents.
 > No type conversions, except there is an integerize instruction used
 > before storing values that are declared to be int-s.

More like the Electrologica X8 of the same vintage.  Integers are simply
normalized floating-point numbers.  On this machine normalization was not
as is currently seen, but normalization involved choosing the exponent with
minimal absolute value that would not lose precision.
--
dik t. winter, cwi, amsterdam, nederland
dik@cwi.nl

mmm@cup.portal.com (Mark Robert Thorson) (04/22/91)

How about addressing memory using addresses similar to the Dewey decimal
system?  This numbering system allows you to insert an arbitrary number
of entries in any arbitrary place, without disturbing the rest of the
numbering system.  E.g. if you want to put something between 11.44.008
and 11.44.009, you can just create a new address 11.44.008.01.  The
Xanadu hypertext project is using a similar number system.

This feature would allow you to insert into a list without having any links.
No pointers ever have to be moved.

mash@mips.com (John Mashey) (04/22/91)

In article <41518@cup.portal.com> mmm@cup.portal.com (Mark Robert Thorson) writes:
>How about addressing memory using addresses similar to the Dewey decimal
>system?  This numbering system allows you to insert an arbitrary number

I'd be interested to hear if anyone has ever thought of any way to
implement such a thing that has a chance of reasonable implementation
cost in hardware? (I haven't...)
-- 
-john mashey	DISCLAIMER: <generic disclaimer, I speak for me only, etc>
UUCP: 	 mash@mips.com OR {ames,decwrl,prls,pyramid}!mips!mash 
DDD:  	408-524-7015, 524-8253 or (main number) 408-720-1700
USPS: 	MIPS Computer Systems MS 1/05, 930 E. Arques, Sunnyvale, CA 94088-3650

kym@bingvaxu.cc.binghamton.edu (R. Kym Horsell) (04/22/91)

In article <2512@spim.mips.COM> mash@mips.com (John Mashey) writes:
>In article <41518@cup.portal.com> mmm@cup.portal.com (Mark Robert Thorson) writes:
>>How about addressing memory using addresses similar to the Dewey decimal
>>system?  This numbering system allows you to insert an arbitrary number
>
>I'd be interested to hear if anyone has ever thought of any way to
>implement such a thing that has a chance of reasonable implementation
>cost in hardware? (I haven't...)

Apart from CAM's you mean? ;^)

-kym

jonah@dgp.toronto.edu (Jeff Lee) (04/22/91)

In article <41518@cup.portal.com> mmm@cup.portal.com (Mark Robert Thorson) writes:
>How about addressing memory using addresses similar to the Dewey decimal
>system?  This numbering system allows you to insert an arbitrary number

Sounds like the "tumbler" numbering system from Ted Nelson's "Xanadu"
hypertext system.  There was a Byte article on this a few years back,
but I can't find the reference right now.

Jeff Lee -- jonah@cs.toronto.edu || utai!jonah

rbw00@ccc.amdahl.com ( 213 Richard Wilmot) (04/23/91)

In article <41518@cup.portal.com> mmm@cup.portal.com (Mark Robert Thorson) writes:
>How about addressing memory using addresses similar to the Dewey decimal
>system?  This numbering system allows you to insert an arbitrary number
>of entries in any arbitrary place, without disturbing the rest of the
>numbering system.  E.g. if you want to put something between 11.44.008
>and 11.44.009, you can just create a new address 11.44.008.01.  The
>Xanadu hypertext project is using a similar number system.
>
>This feature would allow you to insert into a list without having any links.
>No pointers ever have to be moved.

I proposed such a system at a symposium on high performance transaction
systems in 1985 (or was it 1987?) for quickly doing large volumes of 
transactions. There were some pretty knowledgeable experts there on
both transaction systems and computer architecture but that was the beginningg
of the RISC phase so either it was a dumb idea, or it was swamped by
RISC religion, or they didn't understand what I was trying to do.

I still like the idea and, with larger numbers of transistors becoming
available it may get another chance. It solved several problems in
a transaction system:

 o  The addressing in memory could be by hashing (with hardware)
    while that on disk might be organized in a B*-Tree. The slower
    outboard data structuring could then be easily offloaded to
    another processor (parallelism).

 o  The addressing in caches is already by hashing so all we need do
    is use the right bits out of the generated address for that hashing
    so as to keep collisions and false sharing low.

 o  Locking seems to be a necessary database/transaction operation.
    It too could be done in parallel by another engine and perhaps
    more efficiently. Present systems seem to use upwards of 500-1,500
    instructions to lock an object (row, page, table). B-Trees are
    often worse because under updates the locks must propagate up the
    tree as high as higher keys must be changed in the tree. Locking
    can proceed in parallel so long as no changes are committed before
    we are assured that this transaction got the lock and also could
    have gotten the lock at the time a data item is fetched from
    memory.

 o  Journalling/logging is also required in most transaction systems
    and this too could be done in parallel.

 o  Most helpful, perhaps, is that between any two existing objects
    we can now squeeze (with fractional addressing) as many new objects
    as we wish. Addresses will get longer but the part used for cache
    addressing will not. Then, unlike B-Trees, we can stash new objects
    without consulting the existing structure.

The basic principle is that addresses can (and are sometimes) be used for
many different purposes/emphases and with the right, flexible addressing 
scheme we can use the same addresses for these different purposes at
the same time in parallel.

-- 
  Dick Wilmot  | I declaim that Amdahl might disclaim any of my claims.
                 (408) 746-6108