Computer Old Farts Forum
 help / color / mirror / Atom feed
From: Paul Winalski <paul.winalski@gmail.com>
To: Noel Chiappa <jnc@mercury.lcs.mit.edu>
Cc: coff@tuhs.org
Subject: [COFF] Re: Terminology query - 'system process'?
Date: Wed, 20 Dec 2023 15:29:17 -0500	[thread overview]
Message-ID: <CABH=_VSSf9dAXtycPd9hOiWsECTv1aUYkU7QmU=ZU1GGHDpDLQ@mail.gmail.com> (raw)
In-Reply-To: <20231220193141.DC1C918C092@mercury.lcs.mit.edu>

On 12/20/23, Noel Chiappa <jnc@mercury.lcs.mit.edu> wrote:
>
> To give an example; the first DEC machine with an IC
> processor was the -11/20, in 1970 (the KI10 was 1972); starting with the
> LSI-11, in 1975, DEC started using microprocessors; the last PDP-11 with a
> CPU made out of of discrete ICs was the -11/44, in 1979. All -11's produced
> after that used microprocessors.

The VAX-11/780, 11/750, and 11/730 were all implemented using
7400-series discrete, gate-level TTL integrated circuits.  The planned
follow-on series was Venus (ECL gate level; originally planned to be
the 11/790 but after many delays released as the VAX 8600), Gemini (a
two-board VAX implementation; cancelled), and Scorpio (a chip set
eventually released as the VAX 8000).  Superstar, released as the
VAX-11/785, is a re-implementation of the 11/780 using faster TTL.
The floating point accelerator board for the 11/785 was implemented
using Fast Fairchild TTL.  The first microprocessor implementation of
the VAX architecture was the MicroVAX-I.  It, and all later VAX
processors, implemented only the MicroVAX subset of the VAX
architecture in hardware and firmware.  The instructions left out were
the character string instructions (except for MOVC), decimal
arithmetic, H-floating point, octaword, and a few obscure, little-used
instructions such as EDITPC and CRC.  The missing instructions were
simulated by the OS.  These instructions were originally dropped from
the architecture because there wasn't enough real estate on a chip to
hold the microcode for them.  It's interesting that they continued to
be simulated in macrocode even after several process shrink cycles
made it feasible to move them to microcode.

I wrote a distributed (computation could be done in parallel over a
DECnet LAN or WAN) Mandelbrot Set computation and display program for
VAX/VMS.  It was implemented in PL/I.  The actual display was
incredibly sluggish, and I went in search of the performance problem.
It turned out to be in the cartesian-to-screen coordinate translation
subroutine.  The program did its computations in VAX D-float double
precision floating point.  The window was 800x800 pixels and this was
divvied up into 32x32-pixel cells for distributed, parallel
computation.  The expression "800/32" occurred in the coordinate
conversion program.  In PL/I language data type semantics, this
expression is "fixed decimal(3,0) divided by fixed decimal(2,0)".
This expression was being multiplied by a VAX D-float (float decimal
in PL/I) and this mixture of fixed and float triggered one of the more
bizarre of PL/I's baroque implicit data type conversions.  First, the
D-float values were converted to full-precision (15-digit) packed
decimal by calling one of the Fortran RTL's subroutines.  All the
arithmetic in the routine was done in full-precision packed decimal.
The result was then converted back to D-float (again by a Fortran RTL
call).  There were effectively only two instructions in the whole
subroutine that weren't simulated in macrocode, and one of those was
the RET instruction at the end of the routine!  I changed the
offending expression to "800E0/32E0" and got a 100X
speedup--everything was now being done in (hardware) D-float.

-Paul W.

  reply	other threads:[~2023-12-20 20:29 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-20 19:31 Noel Chiappa
2023-12-20 20:29 ` Paul Winalski [this message]
2023-12-31  3:51 ` steve jenkin
  -- strict thread matches above, loose matches on Subject: below --
2023-12-20 20:35 Noel Chiappa
2023-12-14 23:29 Noel Chiappa
2023-12-14 23:54 ` Larry McVoy
2023-12-15  1:15 ` Bakul Shah
2023-12-15 17:51   ` Paul Winalski
2023-12-15 18:08     ` Warner Losh
2023-12-16  2:04     ` Greg 'groggy' Lehey
2023-12-16 19:21       ` Paul Winalski
2023-12-16 19:44         ` Paul Winalski
2023-12-15 13:43 ` Dan Cross
2023-12-19 13:54 ` Derek Fawcus via COFF
2023-12-14 21:48 [COFF] " Noel Chiappa
2023-12-14 22:06 ` [COFF] " Bakul Shah
2023-12-14 22:12   ` Warner Losh
2023-12-14 22:09 ` Clem Cole
2023-12-15 14:20   ` Dan Cross
2023-12-15 16:25     ` Warner Losh
2023-12-15 17:13     ` Bakul Shah
2023-12-15  6:24 ` Lars Brinkhoff
2023-12-15 18:30   ` Stuff Received

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CABH=_VSSf9dAXtycPd9hOiWsECTv1aUYkU7QmU=ZU1GGHDpDLQ@mail.gmail.com' \
    --to=paul.winalski@gmail.com \
    --cc=coff@tuhs.org \
    --cc=jnc@mercury.lcs.mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).