home .. forth .. misc mail list archive ..

hardware stacks


On Tue, 5 Aug 1997, Penio Penev wrote:

> If you allow yourself the freedom to multitask at any word boundary, You
> are left with the fact that you have to spill the stacks to memory.  If
> they are "big enough" for structured programs, they might be actually "too
> big" to save and restore every time.

This induction is right, but it has two possible conclusions:
- either "have your stacks in memory",
- or "don't allow yourself the freedom to multitask at any word boundary".

Time-sliced multitasking is good for multi-user workstations, although the
price of workstations has become low enough to allow each user to have his own,
and in this case sequentialized user processes are always shorter to execute
than time-sliced user processes which have the overhead of context switches.

Multitasking driven by external interrupts may be of value when the application
includes a long-running background task, but interrupts are usually short
enough to allow their coding with a null stack-effect, allowing them to be
executed on top of the stack of the background task.

When the processor is fast enough relative to the interrupt latency constraint,
the external event polling may be done by software instead of being supported
by hardware.  And of course, this part of the software, which most of the time
is limited to transfer data between i/o ports and memory, may be executed by
a dedicated i/o-processor, in parallel with the arithmetic-and-logic-processor,
in which case both have to synchronize from time to time, to ensure data flow
control.
MISC architecture is ideal to demonstrate such inter-processor synchronization,
which has a marvelously simple implementation in the silicon.

CL
--
email: Christophe.Lavarenne@inria.fr		tel: (+33)-1.39.63.55.80
INRIA, Domaine de Voluceau Rocquencourt		Institut National de Recherche
B.P.105 - 78153 LE CHESNAY CEDEX FRANCE		en Informatique et Automatique

SynDEx, CAD tool for distributed, embedded, real-time applications.
Take a look at our Web Server: http://www-rocq.inria.fr/syndex