[comp.arch] ZISC computers

karsh@trifolium.SGI.COM (Bruce Karsh) (11/16/88)

Why bother with reduced instruction set computers when a computer
really doesn't need any instructions per se at all?  At the end of the
RISC road is the ZISC, Zero Instruction Set Computer.

One way to look at the RISC processor design paradigm is that you
should not include any feature into the design which has not been
proven to be worth its implementation cost.  I.e., remove extraneous
features.  If you are looking for something extraneous to remove from a
computer's instruction set, it might be advantageous to consider
removing the opcode field.  The opcode takes up space in each
instruction and takes time to be decoded.  So let's get rid of them!

But if you don't have an opcode in each instruction, how can the CPU
decide which operation to apply to the operands?

The selection of the operation can be determined implicitly from the
address of the operands.  For example, address zero can be the input to
an accumulator, address 4 can be the accumulator's sum, address 8 can
be the input to a multiplier, address 12 can be the multiplier's
output, etc.  You can even map the program counter to some memory
address.  By moving data into these special addresses, computation is
caused to happen.  These special addresses otherwise look to programs
as if they were normal memory addresses.

Using special addresses to control devices is not a new idea.
Peripheral devices have been controlled this way for a long time.  But
it's interesting that you can use this control method for controlling
devices within the computer as well as outside.  In fact this can be
the only control method that the computer has.

The program for such a system would consist of a list of ordered pairs
of addresses.  It would execute by moving data from (for example) the
first address in the pair to the second address in the pair (or vice
versa).  Flow of control is changed by moving data into the address
mapped into the program counter.

There is nothing for the instruction sequencer to do except to perform
alternating fetches and stores.  Therefore the instruction sequencer
can be fast ... even faster than the computational units.  You can
acheive lots of parallelism by replicating the computational units at
multiple addresses.  (For instance, multiplier inputs can be located at
addresses 8, 256+8, 512+8, 768+8 and multiplier outputs can be located
at addresses 12, 256+12, 512+12 and 768+12).  Compilers will generate
code which sequences the accesses to special addresses so that they are
not accessed before their computations are complete.

One neat feature of this architecture is that if you consider the
address ordered pairs as position vectors in cartesian space, then the
program traces out a path through the space.  Loops within the program
appear as polygons in the space.

Another neat feature is that DMA devices can get at computational units
within the computer.  For example, an A/D converter can be DMA'd
directly into a multiply-accumulator;  a list of vertices can be DMA'd
directly into a matrix times vector multiplier... etc.

I'v never seen a computer architecture such as this (ZISC) proposed
before.  I'd like to know if anybody else has suggested this idea
before.

--
			Bruce Karsh
			karsh@sgi.com

"Nature uses only the longest threads to weave her patterns, so each small
piece of her fabric reveals the organization of the entire tapestry".

mark@hubcap.UUCP (Mark Smotherman) (11/17/88)

W.L. Van der Poel designed a ZISC in his 1956 thesis (Amsterdam, sorry
no univ. ref.).  Blaauw and Brooks state that he demonstrated that an
operation set must provide for conditional branching, sign inversion,
addition or counting, fetching and storing.  Apparently he combined
these functions into one instruction: subtract, store, and branch.  Thus
no opcode was needed.  (My draft copy of the Blaauw and Brooks manuscript
does not show the actual instruction.)

You might be interested in looking at another of Van der Poel's designs -
the Zebra (see chapter 12 of Bell and Newell, pp. 200-204).  After covering
the Zebra in class one day, I believe I remember Brooks saying that Van der
Poel made those little wooden puzzles for a hobby and then noting the
appropriateness of that hobby.
-- 
Mark Smotherman, Comp. Sci. Dept., Clemson University, Clemson, SC 29634
INTERNET: mark@hubcap.clemson.edu    UUCP: gatech!hubcap!mark

baum@Apple.COM (Allen J. Baum) (11/17/88)

[]
>In article <22115@sgi.SGI.COM> karsh@trifolium.UUCP (Bruce Karsh) writes:
>Why bother with reduced instruction set computers when a computer
>really doesn't need any instructions per se at all?  At the end of the
>RISC road is the ZISC, Zero Instruction Set Computer.
>The selection of the operation can be determined implicitly from the
>address of the operands.  For example, address zero can be the input to
>an accumulator...
>I'v never seen a computer architecture such as this (ZISC) proposed
>before.  I'd like to know if anybody else has suggested this idea
>before.

Not only is the idea not new, you could have bought one of these beasts about
15 years ago. The GRI-909 (I think that was the number) did essentially that.
You could plug functional units into the bus, and use them, just like the
standard functional units it came with.

--
		  baum@apple.com		(408)974-3385
{decwrl,hplabs}!amdahl!apple!baum

mac3n@babbage.acc.virginia.edu (Alex Colvin) (11/18/88)

In article <22115@sgi.SGI.COM>, karsh@trifolium.SGI.COM (Bruce Karsh) writes:
> Why bother with reduced instruction set computers when a computer
> really doesn't need any instructions per se at all?  At the end of the
> RISC road is the ZISC, Zero Instruction Set Computer.
> 
> I'v never seen a computer architecture such as this (ZISC) proposed
> before.  I'd like to know if anybody else has suggested this idea
> before.

This is the Able compter by New England Digital.  These are used in the
Synclavier digital music synthesizers.  At Dartmouth we also used them for
network routers.

I don't have a manual with me, but the basic idea is as you suggest.  There
is no opcode field.  All instructions are MOVE.  There are about 16
registers, two of which are PCs (one for interrupts).  Memory is addressed
indirectly through registers.  A couple of special sources/destinations get
at the ALU.  There are I/O addresses as well.

An interesting feature is the completely asynchronous instruction cycle.
You can do a MOVE from the keyboard to the printer, which will hang the
processor waiting for you to type.  Needless to say, there are interrupts
and status registers so you can avoid this.

The processor used to be 16 bit words, TTL components.  By now it's
probably bigger and faster, with special interfaces to memory.  There's
also something else called Able, so the name may have changed.  Anyone at
Dartmouth or True know?

smryan@garth.UUCP (Steven Ryan) (11/18/88)

Actually a conceptual ZISC does exists. Each instruction consists of 4
address and no opcode:
	<a,b,c>

Which means
	MEM[a] := MEM[a]-MEM[b]
	goto c if MEM[a]<0
-- 
                                                   -- s m ryan
+---------------------------------------+--------------------------------------+
|    ....such cultural highlights as    |    Nature is Time's way of having    |
|    Alan Thicke, and, uh,....          |    pausible deniability.             |
+---------------------------------------+--------------------------------------+

jms@antares.UUCP (joe smith) (11/23/88)

In article <22115@sgi.SGI.COM>, karsh@trifolium.SGI.COM (Bruce Karsh) writes:
> Why bother with reduced instruction set computers when a computer
> really doesn't need any instructions per se at all?  At the end of the
> RISC road is the ZISC, Zero Instruction Set Computer.
> 
: I'v never seen a computer architecture such as this (ZISC) proposed
: before.  I'd like to know if anybody else has suggested this idea before.

The March 1988 issue of BYTE magazine has an article on a ZISC that plugs into
the Compaq 386/20 PC and costs $1999.  It's called the Weitek WTL 1167
Math Coprocessor Board.  You store one operand in the chip by writing to a
magic location.  When you write the second operand in another magic location,
poof!  The two floating-point numbers are added and their sum appears at a
third magic location.  The 80386 thinks it's simply doing load/store
operations on memory that happens to have a few wait states.

-- 
+----------------------------------------------------------------------------+
| TYMNET:JMS@F29  CA:"POPJ P,"  UUCP:{ames|pyramid}oliveb!tymix!antares!jms  |
| INTERNET: (Office-1.ARPA is no more)      PHONE:Joe Smith @ (408)922-6220  |
+----------------------------------------------------------------------------+

johnl@ima.ima.isc.com (John R. Levine) (11/29/88)

In article <278@antares.UUCP> jms@antares.UUCP (joe smith) writes:
>[re ZISC computer]  It's called the Weitek WTL 1167
>Math Coprocessor Board.  You store one operand in the chip by writing to a
>magic location.  When you write the second operand in another magic location,
>poof!  The two floating-point numbers are added and their sum appears at a
>third magic location.  The 80386 thinks it's simply doing load/store
>operations on memory that happens to have a few wait states.

This is an ancient hack.  The optional multiply/divide option for the original
PDP-11 worked in exactly that way, by storing operands into pseudo-locations
that told it what operation to perform.

More recently, and apropos of another discussion here, the original optional
floating point board for the RT PC worked the same way, with address bits
on stores to the FPU being decoded to command the National floating point
chip that did the work.


-- 
John R. Levine, Segue Software, POB 349, Cambridge MA 02238, +1 617 492 3869
{ bbn | spdcc | decvax | harvard | yale }!ima!johnl, Levine@YALE.something
Kids spend more time with their parents than parents spend with their kids.

mash@mips.COM (John Mashey) (11/29/88)

In article <2958@ima.ima.isc.com> johnl@ima.UUCP (John R. Levine) writes:
>>[re ZISC computer]  It's called the Weitek WTL 1167
>>Math Coprocessor Board.  You store one operand in the chip by writing to a
>>magic location....

>This is an ancient hack.  The optional multiply/divide option for the original
>PDP-11 worked in exactly that way, by storing operands into pseudo-locations
>that told it what operation to perform.

>More recently, and apropos of another discussion here, the original optional
>floating point board for the RT PC worked the same way, with address bits
>on stores to the FPU being decoded to command the National floating point
>chip that did the work.

Note, of course, that this is a model of the world likely to go away,
for anybody who is serious about scalar floating point.  The structure
is only likely to happen when you have a long-cycle-count FP device,
which is still fast enough to be desirable, but where the addition of a few
cycles' overhead doesn't clobber the performance.  As micros with
tight-coupled FPUs (MIPS R3000/R3010, Moto 88K, Cypress SPARC + TI 8847)
and low-cycle count operations (2-10 cycles for 64-bit add & mult)
become more common, you just lose too much performance moving data
around to afford that kind of interface, at least in a scalar unit.
-- 
-john mashey	DISCLAIMER: <generic disclaimer, I speak for me only, etc>
UUCP: 	{ames,decwrl,prls,pyramid}!mips!mash  OR  mash@mips.com
DDD:  	408-991-0253 or 408-720-1700, x253
USPS: 	MIPS Computer Systems, 930 E. Arques, Sunnyvale, CA 94086

warren@tikal.Teltone.COM (Warren Seltzer) (12/01/88)

 In the early seventies, the Burroughs 1700-series computers used this
 scheme for the *MICROCODE*.  That is, the hardware was pretty much as you
 described, using registers instead of "memory", although there were other
 opcodes.  The only code written in this machine language was microcode,
 diagnostic code, and research systems.

 As I remember, there was an "X" register, a "Y" register, and an "X+Y"
 register, from whence the sum was read, an "X * Y" register, an "X/Y"
 register, and so on.

 By the way, this was a very interesting machine in other ways as well.

 Warren

-- 
(206) 827-9626                          Warren Seltzer
...uw-beaver_____!tikal!warren          Teltone Corporation
.......fluke___/                        P.O. Box 657 
...microsoft__/                         Kirkland, WA  98033