[comp.sys.next] Realtime Mach

wu@canon.co.uk (Siu-Fan WU) (01/29/91)

Is realtime computing possible on the NeXT? I couldn't find anything
in SysRef Chapter 16 (Mach Operating System). If not possible, how the problem
is handled by the A/D conversion hardware/software available at the moment?
In this aspect, is there any difference between the 68030 and 040?
I would be grateful for any response. Thanks in advance.

S.F. Wu    wu@canon.co.uk
Canon Research Centre Europe Ltd.
17-20 Frederick Sanger Road, Surrey Research Park
Guildford, Surrey GU2 5YD, United Kingdom

jfreem@uncecs.edu (Joe Freeman) (01/30/91)

In article <1991Jan29.102439.6966@canon.co.uk> wu@canon.co.uk (Siu-Fan WU) writes:
>Is realtime computing possible on the NeXT? I couldn't find anything
>in SysRef Chapter 16 (Mach Operating System). If not possible, how the problem
>is handled by the A/D conversion hardware/software available at the moment?
>In this aspect, is there any difference between the 68030 and 040?
>I would be grateful for any response. Thanks in advance.
>
What is realtime? In other words:

How much data do you need to move?

How fast?

What kind of response time to stimulus do you need?

What kind of processing needs to take place in "real time"

The A/D stuff is pretty straight forward.  It all comes in over through the
DSP and is buffered there.  That buffer is then sent, via DMA, to the ram
or disk (disk via ram probably).  There is code in the DSP driver to insure 
that it has high enough priority to keep the DMA buffers going to get the
data in.  That should leave the host free to do some processing on the data
as it comes in.


-- 
Joe Freeman	jfreem@uncecs.edu
The opinions espressed here are my own and are not shared by my employer  or
anyone else I know of.  Flames can be mailed to me or routed to /dev/null.

eps@toaster.SFSU.EDU (Eric P. Scott) (01/30/91)

In article <1991Jan29.102439.6966@canon.co.uk> wu@canon.co.uk
	(Siu-Fan WU) writes:
>Is realtime computing possible on the NeXT? I couldn't find anything
>in SysRef Chapter 16 (Mach Operating System).

This is addressed in NextAnswers os.623, attached.

					-=EPS=-
-------
real time programming

Q:  What support does the NeXT environment supply for real-time
programs?

A:  NeXT's support for real-time programming is enhanced in 2.0.
This capability is also extended by using the DSP as a dedicated,
very programmable serial port.  Actual real-time performance for
code running on the 68030 or 68040 is not guaranteed, because the
Mach kernel itself is not preemptable at this point.  This topic
is a source of continuing work at NeXT, so that we may achieve
some guaranteed real-time responsiveness in the future.

The primary support in 2.0 for real-time programming is the
addition of scheduling policies that can be set on a per-thread
basis.  We currently have three scheduling policies:
POLICY_TIMESHARE for traditional UNIX scheduling,
POLICY_INTERACTIVE designed for interactive behavior for
applications, and POLICY_FIXEDPRI for non-degrading realtime
priorities.  Additionally, thread_switch() can be used to do
user-level scheduling among a set of threads.

The DSP is inherently a real-time programming environment.  It is
best used for low-level interrupt processing and data reduction/
expansion.  It's currently used this way for real-time expansion
of sound before it's played, as well as data reduction of input
from the DSP serial port.  The DSP can then communicate with a
Mach task using the Sound/DSP driver interface.  The combination
of these features makes the NeXT a suitable platform for a wide
range of real-time programming tasks.  The key is to require no
more than 100ms responsiveness from Mach-level programs with a
light virtual memory load.

In the future we hope to remove the remaining barriers to Mach-
level real-time programming by enhancing the scheduler behavior
and supporting user-level wiring of virtual memory resources.

QA623