Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!gatech!hubcap!Andreas
From: agn@UNH.CS.CMU.EDU (Andreas Nowatzyk)
Newsgroups: comp.hypercube
Subject: Re: Question on hypercube routing (Ncube-send's)
Message-ID: <315@hubcap.UUCP>
Date: Fri, 17-Jul-87 08:45:19 EDT
Article-I.D.: hubcap.315
Posted: Fri Jul 17 08:45:19 1987
Date-Received: Sat, 18-Jul-87 13:31:10 EDT
Sender: fpst@hubcap.UUCP
Lines: 28
Approved: hypercube@hubcap.clemson.edu


Contrary to David Bradley's interpretation of the broadcast instruction
on the Ncube-machine (BPTR and BCNT), it is possible to use each of the
22 DMA-channels (10 pairs of receiver/transmitter for communication inside
the cube and 1 pair for I/O) independently:

To start a transfer, you should check the ready-flag to see that the channel
is idle (you may use the interrupt facility to do so instead). The LPTR
instruction loads the address of the data to be transfered into the address
register of an specific channel and the LCNT instruction loads the byte-count
and initiates the transfer - no sweat. This is much easier than programming
the ethernet-chip in the iPSC.

There is however a bandwidth limitation: 22 active DMA channels would cause
about 28 Mbyte/sec peak memory traffic in addition to the CPU. They all share
the same data path to the off-chip memory. This would exceed the memory I/O
bandwidth by a factor of 3. So a node cannot have more than 8 active,
independent channels at a time.

Anyway, this is only of interest to bare-metal system programmer: The
typical user sees generalized send- and receive-calls that hide the topology,
routing issues and the queueing of unsolicited messages.

-- 
   --  Andreas Nowatzyk  (DC5ZV)

   Carnegie-Mellon University	     Arpa-net:   agn@unh.cs.cmu.edu
   Computer Science Department         Usenet:   ...!seismo!unh.cs.cmu.edu!agn