Newsgroups: comp.sys.transputer
From: roger@pact.srf.ac.uk (Roger Shepherd)
Subject: Re: One dumb question about DMA
Organization: University of Bristol, England
Date: Wed, 29 Jun 1994 12:54:33 GMT
Message-ID: <Cs5t6x.Kop@info.bris.ac.uk>

ARTHUR HSIAO (ctc@netcom.com) wrote:
: 	I tried to run some Link DMA transfers in low priority while servicing
: Eventreq interrupt in high priority. However, as soon as I service the interrupt, all DMA transfers stop until I finish and deschedule the interrupt routine.
: I thought once the DMA is set, the link engines will take care of the link
: transfer with no processor intervention, no matter whether you are in high or
: low priority. Is this the way that transputer supposed to response or am I
: missing something ?

The transputer process model has two levels of prioritisation. A process
of high priority which is runnable will execute in preference to
one of low priority. (So far so good).

Now, this model is carried over to the links. When an external communication is
performed by a process, the link performing that communication takes the
priority of the process. If there is a resource conflict between a link and
another link, or the processor, the resolution of the conflict takes into
account the priorities. So, consider a very simple case

   PRI PAR

     SEQ
       event ? ANY -- wait for interrupt
       array1 := array2 -- block copy; saturate memory
      
     SEQ -- low priority
       c ! array3 -- output array3 over a link

then the high priority process will descedule waiting for an event. The
low priority process then outputs array3 over a link - no resource conflict
yet. Then the event happens and the block copy of the array2 occurs - this
is able to use all the available memory bandwidth. Whilst this is happening,
the low priority output of array3 will pause as it is unable to gain access
to the memory. 

If the high-priority process were not going to saturate the memory then the
output would be able to access the memory.
      
--
Roger Shepherd

Email: roger@inmos.co.uk
Mail : 10 Priory Road, Clifton, Bristol, BS8 1TU. UK.
Phone: +44 272 707 189, Fax +44 272 707 171.


