> On Jul 19, 2015, at 12:06 AM, Mike Stein <[email protected]> wrote:
>
> ...
> I always wondered which was more efficient, multiplexing among essentially
> complete 'computers per user' sharing a common I/O 'channel' or swapping
> processes and memory banks…
If you’re talking about switching a single resource (or fixed set of resources)
among consumers, the answer doesn’t directly tie to the technical approach used
but rather to the efficiency of switching among consumers.
For example, a multiprogramming OS has to do a context switch. That may
require one or two instructions, which may be very fast (CDC 6600 — about 3.5
microseconds) or not so fast (VAX). Or it may take a few hundred instructions
(most machines).
But you may also find more limited sharing systems where the switching is so
fast that it isn’t a factor in the performance. The timesharing of the PPU
logic in a CDC 6600 is an example: the logic is that of a 10 MHz class machine,
but the memory is 1 MHz, so 10x sharing of the logic among 10 memory banks and
10 sets of state makes sense.
That approach still exists; nowadays it’s called “hardware threads (as in the
mutithreaded MIPS processors from Sibyte/Broadcom and Raza/Broadcom and others)
or “hyperthreading”. But, as with so many things, Cray did it first.
paul