Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <2024Jul3.075207@mips.complang.tuwien.ac.at>
Deutsch   English   Français   Italiano  
<2024Jul3.075207@mips.complang.tuwien.ac.at>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: anton@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Architectural implications of locate mode I/O and channels
Date: Wed, 03 Jul 2024 05:52:07 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 38
Message-ID: <2024Jul3.075207@mips.complang.tuwien.ac.at>
References: <v61jeh$k6d$1@gal.iecc.com> <v61oc8$1pf3p$1@dont-email.me> <v62fmt$nao$1@gal.iecc.com>
Injection-Date: Wed, 03 Jul 2024 08:12:58 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="58ab59717079f6f30257a2a448bae35c";
	logging-data="2173684"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18LI3WEXtfSqg4dxE13hha3"
Cancel-Lock: sha1:1/KkFrxMfsTXwgjoiDLetYXUiPY=
X-newsreader: xrn 10.11
Bytes: 2944

John Levine <johnl@taugh.com> writes:
>On the smallest
>360s, the channel was implemented in CPU microcode. When running fast
>devices like disks the channel used so much of the CPU that the
>program stalled, but it was worth it to be compatible with faster
>machines. Even then, disk seeks or tape rewinds or reading cards or
>printing on printers let the CPU do useful work while the channel and
>device did its thing.

This sounds very much like hardware multi-threading to me: The CPU had
separate state for the channel and used its hardware for doing the
channel stuff when there was I/O to do, while running the non-channel
stuff the rest of the time, all without OS-level context switching.

The barrel processors implemented in the CDC 6600's PPs are another
variant of the same principle from around the same time, but using the
same hardware for such different tasks is a new twist.

Interestingly, this is one development that has not been repeated in
microprocessors AFAIK.  If they did not want to spend hardware on a
separate DMA device, they just let the software use polling of the I/O
device.  For the 8086 and 68000, I guess that patents may have
discouraged adopting this idea; when the patents ran out, they had
established an ecosystem with separate DMA devices.  And of course for
the early RISCs there was no way to do that in microcode.

IIRC some microcomputers (IBM PC I think) had dedicated central DMA
processors (but not on the CPU chip at first IIRC), but these fell
into disuse soon when the I/O devices that do lots of I/O (like disk
controllers) included their own DMA circuits.  Having the DMA on the
I/O device wliminates the overhead of first requiring the bus for
getting the data from the I/O device, and then another bus cycle for
storing it into memory (or the other way round).

- anton
-- 
'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
  Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>