[comp.arch] Coprocessors - Business?

mark@megatek.UUCP (mark thompson) (03/27/91)

Whenever I read architecture manuals for (eg. the Moto 68000 series), they invariably
support several coprocessors. Also invariably, one of those coprocessors is for
floating point.

Often, the other is an MMU or some other silly system controller.

Has anyone tried to do something wonderful with one of the undedicated coprocessors,
examples of wonderful being I/O channel controllers or a business instruction set?

-mark

chased@rbbb.Eng.Sun.COM (David Chase) (03/27/91)

In <2892@megatek.megatek.uucp> mark@megatek.UUCP (mark thompson)
writes:

>Whenever I read architecture manuals for (eg. the Moto 68000 series),
>they invariably support several coprocessors. Also invariably, one of
>those coprocessors is for floating point.
...
>Has anyone tried to do something wonderful with one of the undedicated
>coprocessors, examples of wonderful being I/O channel controllers or a
>business instruction set?

I know of one company that makes/made special boards containing 68020s
with several coprocessors (multiple FPU coPs, I think) for their
Special Problems, but last I heard they had decided that this was just
a good way to get locked in to old technology, and were porting to
mostly-straight Unix on whatever hot boxes they could find.

Same story, same moral.  Sticking to interchangeable commodity
software and hardware is the best way to go fast in the long run
(generally speaking, of course, but I think the general case occurs
much more often than many people think).

David Chase
Sun

davidsen@crdos1.crd.ge.COM (Wm E Davidsen Jr) (03/28/91)

GE did a business instruction coprocessor in the 60's, but I don't know
of anyone doing it for micros. My recollection is that the Intel 386 has
two pins for coprocessor select, but my manual isn't sitting right here
so that may be wrong.

The discussion of kernel CPU vs smart controller could become more
interesting if someone made a general i/o processor as a coprocessor.
The best of both sides of the discussion.
-- 
bill davidsen	(davidsen@crdos1.crd.GE.COM -or- uunet!crdgw1!crdos1!davidsen)
        "Most of the VAX instructions are in microcode,
         but halt and no-op are in hardware for efficiency"

dcarr@hobbit.gandalf.ca (Dave Carr) (03/28/91)

In <3299@crdos1.crd.ge.COM> davidsen@crdos1.crd.ge.COM (Wm E Davidsen Jr) writes:
>The discussion of kernel CPU vs smart controller could become more
>interesting if someone made a general i/o processor as a coprocessor.
>The best of both sides of the discussion.

Was Intel before its time.  The 8089 ?? seems to have died quickly.

crispin@csd.uwo.ca (Crispin Cowan) (03/29/91)

In article <2892@megatek.megatek.uucp> mark@megatek.UUCP (mark thompson) writes:
>Whenever I read architecture manuals for (eg. the Moto 68000 series),
>they invariably support several coprocessors. Also invariably, one of
>those coprocessors is for floating point.

>Often, the other is an MMU or some other silly system controller.

>Has anyone tried to do something wonderful with one of the undedicated
>coprocessors, examples of wonderful being I/O channel controllers or a
>business instruction set?

In the Sylvan project, we built a tasking coprocessor for 68020s and
68030s for a multiprocessor.  The intent was to create a lightweight
tasking environment for a tightly-coupled multiprocessor, with
tightly-coupled performance and loosely-coupled semantics, so that
programs could be scaled up to distributed networks of computers.  This
achieved a loocal message passing cycle time (approx RPC) of 136
microseconds, relative to about 500-1000 in software-only message
passing kernels supporting similar task models.

The first two citations below describe Sylvan's implementation and
performance.  The following two are early proposals describing what
Sylvan should look like.

Crispin
-----
Crispin Cowan, CS grad student, University of Western Ontario
Work:  MC28-C, x3342 crispin@csd.uwo.ca
Home:  890 Elias St., London, Ontario, N5W 3P2
"If you want an operating system that is full of vitality and has a
great future, use OS/2."  --Andy Tanenbaum

@inproceedings
  (
    bur89,
    author = "F. J. Burkowski and G. V. Cormack and G. D. P. Dueck",
    title = "{Architectural Support for Synchronous Task
Communication}",
    booktitle = "Proceedings of the Third International Conference on
        Architectural Support for Programming Languages and Operating
        Systems",
    year = 1989,
    pages = "40-53",
    address = "Boston, MA",
    month = "April"
  )

@inproceedings
  (
    bur91,
    author = "F. J. Burkowski and Charles L. A. Clarke and Crispin Cowan
	 and Gordon J. Vreugdenhil",
    title = "{Performance Evaluation of the Sylvan Multiprocessor
	Architecture}",
    booktitle = "Proceedings of the Second Symposium on Experiences with
	Distributed and Multiprocessor Systems",
    year = 1991,
    pages = "165-184",
    address = "Atlanta, GA",
    month = "March"
  )

@inproceedings
  (
    bur85:honolulu,
    author = "F. J. Burkowski and D. Dyment",
    title = "{Sylvan: A Message-Based Multiprocessor Architecture}",
    booktitle = "Proc. 18th Hawaii International Conference On Systems
        Sciences",
    year = 1985,
    pages = "31-42",
    address = "Honolulu",
    month = "January"
  )

@inproceedings
  (
    bur85:knoxville,
    author = "F. J. Burkowski and G. V. Cormack and J. D. Dyment and
        J. K. Pachl",
    title = "{A Message-Based Architecture for High Concurrency}",
    booktitle = "Proc. 1st Conference on Hypercube Multiprocessors",
    year = 1985,
    pages = "27-37",
    address = "Knoxville, Tenessee",
    month = "August"
  )

skipper@motaus.sps.mot.com (Skipper Smith) (03/29/91)

In article <1991Mar28.142109.1148@hobbit.gandalf.ca> dcarr@hobbit.gandalf.ca (Dave Carr) writes:
>In <3299@crdos1.crd.ge.COM> davidsen@crdos1.crd.ge.COM (Wm E Davidsen Jr) writes:
>>The discussion of kernel CPU vs smart controller could become more
>>interesting if someone made a general i/o processor as a coprocessor.
>>The best of both sides of the discussion.
>
>Was Intel before its time.  The 8089 ?? seems to have died quickly.

Well, it doesn't technically qualify as a coprocessor (the origin of this 
thread), but the Motorola 68020 has been fully documented on how to use it as
an 8 channel DMA controller.  Since all of the code to run all eight channels
fit into the 256 byte onboard instruction cache, it is almost like having it
microcoded into the machine.  The unfortunate part is the amount of glue logic.
It takes quite a bit to turn the '020 into "just" an I/O processor.  However,
the design is easily upgradable to the 68EC030 (68030 w/o MMU) which would gain
you the additional speed of burst or the 68EC040 (68040 without a lot of stuff
:-) which would give you bursts on writes as well as another 2792 bytes of
instruction cache to do other things (like be an interrupt processor, too).
Just ask for DC003 at your friendly neighborhood Motorola sales office.

-- 
Skipper Smith                             | skipper@motaus.sps.mot.com
Motorola Technical Training               | 8945 Guilford Rd  Ste 145  
All opinions are my own, not my employers | Columbia, MD 21046

rminnich@super.ORG (Ronald G Minnich) (04/03/91)

In article <1991Mar28.142109.1148@hobbit.gandalf.ca> dcarr@hobbit.gandalf.ca (Dave Carr) writes:
>Was Intel before its time.  The 8089 ?? seems to have died quickly.

Well, on one 8086 board i designed (8086 was a management, not technical 
decision on this one) i looked at the 8089. Turned out all the things 
i needed to do could be done by a few 20R8 pals faster, cheaper, and 
more simply. The 8089 was full of bells and whistles none of which 
I needed (well, only a small subset). And it was slow-- i guess those
things don't come cheap. This seems to be a still-followed rule with 
the DMA control chip world. Exit 8089.
ron
-- 
"Socialism is the road from capitalism to communism, but we never promised to 
                 feed you on the way!"-- old Russian saying
"Socialism is the torturous road from capitalism to 
                  capitalism" -- new Russian saying (Wash. Post 9/16)

jerry@TALOS.UUCP (Jerry Gitomer) (04/03/91)

mark@megatek.UUCP (mark thompson) writes:

|Whenever I read architecture manuals for (eg. the Moto 68000 series), they invariably
|support several coprocessors. Also invariably, one of those coprocessors is for
|floating point.

|Often, the other is an MMU or some other silly system controller.

|Has anyone tried to do something wonderful with one of the undedicated coprocessors,
|examples of wonderful being I/O channel controllers or a business instruction set?

	Looking at the ratio of I/O to computation for most business
	applications leads to the conclusion that a coprocessor for a
	business system doesn't buy much (if anything) in the way of
	additional performance.  It also leads to the conclusion that the
	best business coprocessor is probably an intelligent disk
	controller with built-in caching.

				Jerry

-- 
Jerry Gitomer at National Political Resources Inc, Alexandria, VA USA
I am apolitical, have no resources, and speak only for myself.
Ma Bell (703)683-9090  (UUCP: (until 4/15)  ...uupsi!pbs!npri6!jerry 

dahl@SRC.Honeywell.COM (Peter Dahl) (04/05/91)

In article <2892@megatek.megatek.uucp> mark@megatek.UUCP (mark thompson) writes:
>Has anyone tried to do something wonderful with one of the undedicated
>coprocessors, examples of wonderful being I/O channel controllers or a
>business instruction set?
>-mark

Well I don't know about wonderful, but...

For my master's thesis I studied this interface with the intent of using it
for an operating system coprocessor. The idea is that a coprocessor would
take over running the OS kernel. It would have an independent instruction 
memory and would basically offload user processes to the main processor.
Coprocessor instructions would be analogous to system calls in the user code.
The thesis explores issues relating to interrupts, passing code back and forth,
control, context switching, etc. ("An Operating System Coprocessor Interface",
Peter Dahl, University of Minnesota, 1988)

The main problem with this particular interface is that there is no way for
the coprocessor to interrupt the main CPU using the interface, the coprocessor
must generate an external interrupt. The overhead becomes significant. I
tried variants on the same theme like making the main CPU run the OS and the
coprocessor run user tasks, but the same problem keeps occurring. What needs
to be done is expand the interface so that the coprocessor can efficiently
interrupt the main CPU. This is a problem even if you have a FPU, the 
difference is that you don't have real-time constraints so you can afford to
catch the problem later.

peter dahl@src.honeywell.com
I had fun once, and it wasn't anything like this