Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

The road to hell is paved with NAND gates. -- J. Gooding


devel / comp.arch / Re: Execute, not Sequencer vs microcode

SubjectAuthor
* Sequencer vs microcodeMarcus
+* Re: Sequencer vs microcodewinden
|`* Re: Sequencer vs microcodeMitchAlsup
| `- Re: Sequencer vs microcodeMitchAlsup
`* Re: Sequencer vs microcodeMitchAlsup
 `* Re: Sequencer vs microcodeMarcus
  `* Re: Sequencer vs microcodeBGB
   `* Re: Sequencer vs microcodeMitchAlsup
    +* Re: Sequencer vs microcoderobf...@gmail.com
    |+* Re: Sequencer vs microcodeMarcus
    ||`* Re: Sequencer vs microcoderobf...@gmail.com
    || `* Re: Sequencer vs microcodeMitchAlsup
    ||  `* Re: Sequencer vs microcodeEricP
    ||   +- Re: Sequencer vs microcodeAnton Ertl
    ||   `* Re: Sequencer vs microcodeMitchAlsup
    ||    +* Re: Sequencer vs microcoderobf...@gmail.com
    ||    |+- Re: Sequencer vs microcodeStephen Fuld
    ||    |`* Re: Sequencer vs microcodeMitchAlsup
    ||    | `* Re: Sequencer vs microcoderobf...@gmail.com
    ||    |  `* Re: Sequencer vs microcodeStefan Monnier
    ||    |   +* Re: Sequencer vs microcodeThomas Koenig
    ||    |   |`* Re: Sequencer vs microcoderobf...@gmail.com
    ||    |   | `- Re: Sequencer vs microcodeAnton Ertl
    ||    |   +* Re: Sequencer vs microcodeIvan Godard
    ||    |   |`* Re: Sequencer vs microcodeStefan Monnier
    ||    |   | `* Re: Sequencer vs microcodeStephen Fuld
    ||    |   |  `* Re: Sequencer vs microcodeStefan Monnier
    ||    |   |   +* Re: Sequencer vs microcodeMitchAlsup
    ||    |   |   |+* Re: Sequencer vs microcoderobf...@gmail.com
    ||    |   |   ||+- Re: Sequencer vs microcoderobf...@gmail.com
    ||    |   |   ||+* Re: Sequencer vs microcodeStefan Monnier
    ||    |   |   |||`- Re: Sequencer vs microcodeEricP
    ||    |   |   ||+* Re: Sequencer vs microcodeEricP
    ||    |   |   |||`* Re: Sequencer vs microcodeStefan Monnier
    ||    |   |   ||| `* Re: Sequencer vs microcodeEricP
    ||    |   |   |||  `* Re: Sequencer vs microcodeStefan Monnier
    ||    |   |   |||   `- Re: Sequencer vs microcodeEricP
    ||    |   |   ||+- Exec (was: Sequencer vs microcode)Anton Ertl
    ||    |   |   ||`- Re: Sequencer vs microcodeMitchAlsup
    ||    |   |   |`* Re: Sequencer vs microcodeAnton Ertl
    ||    |   |   | `* Re: Sequencer vs microcoderobf...@gmail.com
    ||    |   |   |  `- Re: Sequencer vs microcodeMitchAlsup
    ||    |   |   +- Re: Sequencer vs microcodeThomas Koenig
    ||    |   |   `* Re: Sequencer vs microcodeMarcus
    ||    |   |    `* Re: Sequencer vs microcoderobf...@gmail.com
    ||    |   |     +* Exec (was: Sequencer vs microcode)Anton Ertl
    ||    |   |     |`* Re: ExecStefan Monnier
    ||    |   |     | `* Re: ExecAnton Ertl
    ||    |   |     |  `* Re: Execrobf...@gmail.com
    ||    |   |     |   `* Re: ExecMitchAlsup
    ||    |   |     |    `* Re: ExecStefan Monnier
    ||    |   |     |     +* Re: ExecMitchAlsup
    ||    |   |     |     |+* Re: Execrobf...@gmail.com
    ||    |   |     |     ||`- Re: ExecMitchAlsup
    ||    |   |     |     |`- Re: ExecStefan Monnier
    ||    |   |     |     `* Re: ExecAnton Ertl
    ||    |   |     |      `- Re: ExecStefan Monnier
    ||    |   |     `- Re: Sequencer vs microcodeStefan Monnier
    ||    |   `* Re: Sequencer vs microcodeQuadibloc
    ||    |    +* Re: Sequencer vs microcodeQuadibloc
    ||    |    |+- Re: Sequencer vs microcodeQuadibloc
    ||    |    |+* Re: Sequencer vs microcodeMitchAlsup
    ||    |    ||`- Re: EX instructon, Sequencer vs microcodeJohn Levine
    ||    |    |+* Re: Sequencer vs microcodeStephen Fuld
    ||    |    ||+- Re: Sequencer vs microcodeQuadibloc
    ||    |    ||`* Re: Execute, not Sequencer vs microcodeJohn Levine
    ||    |    || `* Re: Execute, not Sequencer vs microcodeMitchAlsup
    ||    |    ||  `* Re: Execute, not Sequencer vs microcodeQuadibloc
    ||    |    ||   `* Re: Execute, not Sequencer vs microcodeJohn Levine
    ||    |    ||    `* Re: Execute, not Sequencer vs microcodeMitchAlsup
    ||    |    ||     +* Re: Execute, not Sequencer vs microcodeStephen Fuld
    ||    |    ||     |`* Re: Execute, not Sequencer vs microcodeQuadibloc
    ||    |    ||     | `* Re: Execute, not Sequencer vs microcodeQuadibloc
    ||    |    ||     |  `* Re: Execute, not Sequencer vs microcodeJohn Levine
    ||    |    ||     |   +* Re: Execute, not Sequencer vs microcodeQuadibloc
    ||    |    ||     |   |`- Re: transistors, was Execute, not Sequencer vs microcodeJohn Levine
    ||    |    ||     |   +* Re: Execute, not Sequencer vs microcodeMitchAlsup
    ||    |    ||     |   |`* Re: Execute, not Sequencer vs microcodeJohn Levine
    ||    |    ||     |   | +* Re: Execute, not Sequencer vs microcodeThomas Koenig
    ||    |    ||     |   | |+* Re: Execute, not Sequencer vs microcodeJohn Levine
    ||    |    ||     |   | ||`- Re: Execute, not Sequencer vs microcodeQuadibloc
    ||    |    ||     |   | |`* Re: Execute, not Sequencer vs microcodeIvan Godard
    ||    |    ||     |   | | +* Re: Execute, not Sequencer vs microcodeStephen Fuld
    ||    |    ||     |   | | |`* Re: Execute, not Sequencer vs microcodeIvan Godard
    ||    |    ||     |   | | | `* Re: Execute, not Sequencer vs microcodeQuadibloc
    ||    |    ||     |   | | |  `- Re: Execute, not Sequencer vs microcodeThomas Koenig
    ||    |    ||     |   | | `* Re: 7094, was Execute, not Sequencer vs microcodeJohn Levine
    ||    |    ||     |   | |  `- Re: 7094, was Execute, not Sequencer vs microcodeBrian G. Lucas
    ||    |    ||     |   | `- Re: Execute, not Sequencer vs microcodeQuadibloc
    ||    |    ||     |   `* Re: Execute, not Sequencer vs microcodeStephen Fuld
    ||    |    ||     |    `* Re: Execute, not Sequencer vs microcodeJohn Levine
    ||    |    ||     |     +* Re: Execute, not Sequencer vs microcodeQuadibloc
    ||    |    ||     |     |+* Re: Execute, not Sequencer vs microcodeThomas Koenig
    ||    |    ||     |     ||+- Re: Execute, not Sequencer vs microcodeMitchAlsup
    ||    |    ||     |     ||`* Re: Execute, not Sequencer vs microcodeQuadibloc
    ||    |    ||     |     || `- Re: Execute, not Sequencer vs microcodeIvan Godard
    ||    |    ||     |     |`* Re: Execute and IBM history, not Sequencer vs microcodeJohn Levine
    ||    |    ||     |     | `* Re: Execute and IBM history, not Sequencer vs microcodeStephen Fuld
    ||    |    ||     |     |  +* Re: Execute and IBM history, not Sequencer vs microcodeAnne & Lynn Wheeler
    ||    |    ||     |     |  |+* Re: Execute and IBM history, not Sequencer vs microcodeStephen Fuld
    ||    |    ||     |     |  ||`- Re: Execute and IBM history, not Sequencer vs microcodeAnne & Lynn Wheeler
    ||    |    ||     |     |  |`* Re: Execute and IBM history, not Sequencer vs microcodeJohn Levine
    ||    |    ||     |     |  `* Re: Execute and IBM history, not Sequencer vs microcodeJohn Levine
    ||    |    ||     |     `* Re: Execute, not Sequencer vs microcodeStephen Fuld
    ||    |    ||     `- Re: Execute, not Sequencer vs microcodeIvan Godard
    ||    |    |`- Re: Sequencer vs microcodeantispam
    ||    |    `* Re: Sequencer vs microcodeStefan Monnier
    ||    `* Re: Sequencer vs microcodeKent Dickey
    |`- Re: Sequencer vs microcodeMitchAlsup
    `- Re: Sequencer vs microcodeBGB

Pages:1234567
Re: Sequencer vs microcode

<d8b489b0-7116-4430-881f-38a3678e311bn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18282&group=comp.arch#18282

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:e08:: with SMTP id a8mr36089163qti.346.1625128833476;
Thu, 01 Jul 2021 01:40:33 -0700 (PDT)
X-Received: by 2002:a05:6808:a19:: with SMTP id n25mr29518939oij.0.1625128833200;
Thu, 01 Jul 2021 01:40:33 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!feeder1.feed.usenet.farm!feed.usenet.farm!news-out.netnews.com!news.alt.net!fdc3.netnews.com!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Thu, 1 Jul 2021 01:40:32 -0700 (PDT)
In-Reply-To: <ae60a1f6-eaa0-499d-a464-305d3de41e14n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:c93e:fc9e:42b5:37e9;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:c93e:fc9e:42b5:37e9
References: <sb1abl$ps8$1@dont-email.me> <cc7766bb-1433-45f4-9ba5-93c40bdab0f7n@googlegroups.com>
<sb553t$kta$1@dont-email.me> <sb5a40$o97$1@dont-email.me> <42b654db-a022-42f3-a6aa-94cd5a88de98n@googlegroups.com>
<53e78bb8-5c9c-481e-8cec-50a3febcbe95n@googlegroups.com> <sb75hs$7nq$1@dont-email.me>
<3050904a-eec2-4d47-ba5d-bfed1d774518n@googlegroups.com> <3d37be3c-e4fd-41b3-93f7-7037a3c19aefn@googlegroups.com>
<e5IBI.683979$ST2.397427@fx47.iad> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com>
<3b2b37a7-6168-42c0-a657-dcff23fa3e03n@googlegroups.com> <7ce8fca5-3a58-4e9a-92b4-595d0a743c57n@googlegroups.com>
<e2d01fcb-2cb1-4fb4-bf0e-b08d23ead140n@googlegroups.com> <jwvv95yhy1o.fsf-monnier+comp.arch@gnu.org>
<cd8707b1-0d4a-4ffe-8717-dd74f246c876n@googlegroups.com> <jwva6n7bg1h.fsf-monnier+comp.arch@gnu.org>
<8129a2b5-59eb-4161-bad3-046737cfaea0n@googlegroups.com> <ae60a1f6-eaa0-499d-a464-305d3de41e14n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d8b489b0-7116-4430-881f-38a3678e311bn@googlegroups.com>
Subject: Re: Sequencer vs microcode
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Thu, 01 Jul 2021 08:40:33 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 3077
 by: Quadibloc - Thu, 1 Jul 2021 08:40 UTC

On Wednesday, June 30, 2021 at 9:04:29 AM UTC-6, MitchAlsup wrote:

> This goes into the YECH category. You are making DECODE dependent on the forwarding
> stage that occurs after DECODE.

That is an important point. If one is going to have an Execute instruction, does that
mean one will have to tie the pipeline up into knots in a way that will make *every*
instruction slower? If so, one definitely should not go there.

However, most architectures do have instructions that transfer control. Those certainly
make what gets decoded next dependent on the completion of the branch instruction.

So if one forces the Execute instruction to submit the instruction to be executed to the
decoder through the "front door", as it were, just like an instruction fetched from memory,
instead of attempting to create a faster "back door" for it, then one would get the desired
result: the Execute instruction might take an extra cycle or two, but its existence would
not impinge on how the pipeline works for everything else.

John Savard

Re: Sequencer vs microcode

<869709e8-2bd8-4d10-ab68-2d8859aa4c10n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18283&group=comp.arch#18283

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:524e:: with SMTP id y14mr33439867qtn.140.1625130930458; Thu, 01 Jul 2021 02:15:30 -0700 (PDT)
X-Received: by 2002:a05:6830:1d8:: with SMTP id r24mr6606840ota.206.1625130930249; Thu, 01 Jul 2021 02:15:30 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!feeder1.feed.usenet.farm!feed.usenet.farm!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Thu, 1 Jul 2021 02:15:30 -0700 (PDT)
In-Reply-To: <d8b489b0-7116-4430-881f-38a3678e311bn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2607:fea8:1de1:d400:4c19:cfe0:b2ef:b45d; posting-account=QId4bgoAAABV4s50talpu-qMcPp519Eb
NNTP-Posting-Host: 2607:fea8:1de1:d400:4c19:cfe0:b2ef:b45d
References: <sb1abl$ps8$1@dont-email.me> <cc7766bb-1433-45f4-9ba5-93c40bdab0f7n@googlegroups.com> <sb553t$kta$1@dont-email.me> <sb5a40$o97$1@dont-email.me> <42b654db-a022-42f3-a6aa-94cd5a88de98n@googlegroups.com> <53e78bb8-5c9c-481e-8cec-50a3febcbe95n@googlegroups.com> <sb75hs$7nq$1@dont-email.me> <3050904a-eec2-4d47-ba5d-bfed1d774518n@googlegroups.com> <3d37be3c-e4fd-41b3-93f7-7037a3c19aefn@googlegroups.com> <e5IBI.683979$ST2.397427@fx47.iad> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com> <3b2b37a7-6168-42c0-a657-dcff23fa3e03n@googlegroups.com> <7ce8fca5-3a58-4e9a-92b4-595d0a743c57n@googlegroups.com> <e2d01fcb-2cb1-4fb4-bf0e-b08d23ead140n@googlegroups.com> <jwvv95yhy1o.fsf-monnier+comp.arch@gnu.org> <cd8707b1-0d4a-4ffe-8717-dd74f246c876n@googlegroups.com> <jwva6n7bg1h.fsf-monnier+comp.arch@gnu.org> <8129a2b5-59eb-4161-bad3-046737cfaea0n@googlegroups.com> <ae60a1f6-eaa0-499d-a464-305d3de41e14n@googlegroups.com> <d8b489b0-7116-4430-881f-38a3678e311bn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <869709e8-2bd8-4d10-ab68-2d8859aa4c10n@googlegroups.com>
Subject: Re: Sequencer vs microcode
From: robfi...@gmail.com (robf...@gmail.com)
Injection-Date: Thu, 01 Jul 2021 09:15:30 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 12
 by: robf...@gmail.com - Thu, 1 Jul 2021 09:15 UTC

I have wrapped up the EXEC instruction in #SUPPORT directives removing it from the arch since it is too slow and consumes too many resources.

I dove into supporting load and store multiple instructions LDM / STM. These instruction may have been implemented with micro-code on some machines.
Ultimately I chose to support them with the front-end doing a hidden branch back to the same instruction. The issue was two pipeline stages before decode. So it is unknown that there is an LDM / STM in the pipeline until after another instruction has been fetched. As implemented it will result in every other instruction queued being invalidated. There are probably better ways of implementing the instructions, but the way it is done is simple and does not require a lot of resources.

Re: Sequencer vs microcode

<061a0f7c-a819-4eb6-83c8-79a6f85eb9ddn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18286&group=comp.arch#18286

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ad4:4306:: with SMTP id c6mr42731429qvs.37.1625141218142;
Thu, 01 Jul 2021 05:06:58 -0700 (PDT)
X-Received: by 2002:a05:6808:d54:: with SMTP id w20mr7314039oik.175.1625141217884;
Thu, 01 Jul 2021 05:06:57 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Thu, 1 Jul 2021 05:06:57 -0700 (PDT)
In-Reply-To: <d8b489b0-7116-4430-881f-38a3678e311bn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:5aa:e1d3:6e93:f55b;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:5aa:e1d3:6e93:f55b
References: <sb1abl$ps8$1@dont-email.me> <cc7766bb-1433-45f4-9ba5-93c40bdab0f7n@googlegroups.com>
<sb553t$kta$1@dont-email.me> <sb5a40$o97$1@dont-email.me> <42b654db-a022-42f3-a6aa-94cd5a88de98n@googlegroups.com>
<53e78bb8-5c9c-481e-8cec-50a3febcbe95n@googlegroups.com> <sb75hs$7nq$1@dont-email.me>
<3050904a-eec2-4d47-ba5d-bfed1d774518n@googlegroups.com> <3d37be3c-e4fd-41b3-93f7-7037a3c19aefn@googlegroups.com>
<e5IBI.683979$ST2.397427@fx47.iad> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com>
<3b2b37a7-6168-42c0-a657-dcff23fa3e03n@googlegroups.com> <7ce8fca5-3a58-4e9a-92b4-595d0a743c57n@googlegroups.com>
<e2d01fcb-2cb1-4fb4-bf0e-b08d23ead140n@googlegroups.com> <jwvv95yhy1o.fsf-monnier+comp.arch@gnu.org>
<cd8707b1-0d4a-4ffe-8717-dd74f246c876n@googlegroups.com> <jwva6n7bg1h.fsf-monnier+comp.arch@gnu.org>
<8129a2b5-59eb-4161-bad3-046737cfaea0n@googlegroups.com> <ae60a1f6-eaa0-499d-a464-305d3de41e14n@googlegroups.com>
<d8b489b0-7116-4430-881f-38a3678e311bn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <061a0f7c-a819-4eb6-83c8-79a6f85eb9ddn@googlegroups.com>
Subject: Re: Sequencer vs microcode
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Thu, 01 Jul 2021 12:06:58 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Thu, 1 Jul 2021 12:06 UTC

On Thursday, July 1, 2021 at 2:40:34 AM UTC-6, Quadibloc wrote:
> On Wednesday, June 30, 2021 at 9:04:29 AM UTC-6, MitchAlsup wrote:

> > This goes into the YECH category. You are making DECODE dependent on the forwarding
> > stage that occurs after DECODE.

> That is an important point. If one is going to have an Execute instruction, does that
> mean one will have to tie the pipeline up into knots in a way that will make *every*
> instruction slower? If so, one definitely should not go there.

> However, most architectures do have instructions that transfer control. Those certainly
> make what gets decoded next dependent on the completion of the branch instruction.

> So if one forces the Execute instruction to submit the instruction to be executed to the
> decoder through the "front door", as it were, just like an instruction fetched from memory,
> instead of attempting to create a faster "back door" for it, then one would get the desired
> result: the Execute instruction might take an extra cycle or two, but its existence would
> not impinge on how the pipeline works for everything else.

On further reflection, it may not be as simple as this, since instructions in the pipeline need
to be accompanied by information about where they came from - and _that_ could be
complicated unavoidably by the existence of an Execute instruction.

John Savard

Re: Execute, not Sequencer vs microcode

<sbkq4o$2jtv$1@gal.iecc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18291&group=comp.arch#18291

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!xmission!usenet.csail.mit.edu!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: Execute, not Sequencer vs microcode
Date: Thu, 1 Jul 2021 16:22:48 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <sbkq4o$2jtv$1@gal.iecc.com>
References: <sb1abl$ps8$1@dont-email.me> <sbj2k6$crm$1@gal.iecc.com> <1cc26b60-c6c7-4631-95c6-04954efc7218n@googlegroups.com> <c8255b65-e838-4223-bbd9-e212742d63ben@googlegroups.com>
Injection-Date: Thu, 1 Jul 2021 16:22:48 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="85951"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <sb1abl$ps8$1@dont-email.me> <sbj2k6$crm$1@gal.iecc.com> <1cc26b60-c6c7-4631-95c6-04954efc7218n@googlegroups.com> <c8255b65-e838-4223-bbd9-e212742d63ben@googlegroups.com>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Thu, 1 Jul 2021 16:22 UTC

According to Quadibloc <jsavard@ecn.ab.ca>:
>On Wednesday, June 30, 2021 at 7:50:50 PM UTC-6, MitchAlsup wrote:
>
>> In any event, these show that the instruction set was misconceived (at least originally)
>> and that if properly conceived EXC would not have been necessary.
>
>Although the most common use of the Execute instruction by ordinary programmers
>was to change the length of string operations, I don't think that's what it was intended
>for.

I'm quite sure they had that in mind. Why else would it modify the
second byte, and only the second byte, of the target instruction,
which is where the length field was? In Cobol and RPG programs, most
character operations take operands of known lengths, so putting the
length in the instruction saved a register reference in the usual
case, and the EX hack let them handle variable length strings while
keeping the code reentrant.

>I think they did put it in to have a way of making it easier to write routines that serviced
>an unimplemented opcode exception by causing the bad instruction to do something
>useful, thus extending the instruction set...

In a word, no. This was the 1960s, remember? IBM had no interest in
simulating the decimal or floating point instructions on machines that
didn't have them, since they wanted you to buy the upgrade. The high
end 360/91 did not have the decimal instructions so OS/360 simulated
them very slowly. I have heard that on CP/67 and VM/370 they
simulated instructions to be added to the next generation of hardware
so the software and hardware development could proceed in parallel.
Those were both pretty exotic.

In both of those cases the instruction caused an operation exception and a trap to the
operating system which had to check that the operand addresses were valid before it
could start to do the simulation. I cannot see that EX would have helped at all.

--
Regards,
John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
Please consider the environment before reading this e-mail. https://jl.ly

Re: Execute, not Sequencer vs microcode

<7470687a-3403-4db5-9888-1bc241b7fb61n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18297&group=comp.arch#18297

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:a111:: with SMTP id k17mr1387176qke.496.1625164391984;
Thu, 01 Jul 2021 11:33:11 -0700 (PDT)
X-Received: by 2002:a05:6808:d54:: with SMTP id w20mr8732691oik.175.1625164391779;
Thu, 01 Jul 2021 11:33:11 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!news-out.netnews.com!news.alt.net!fdc3.netnews.com!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Thu, 1 Jul 2021 11:33:11 -0700 (PDT)
In-Reply-To: <sbkq4o$2jtv$1@gal.iecc.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:39ad:9960:ab74:f885;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:39ad:9960:ab74:f885
References: <sb1abl$ps8$1@dont-email.me> <sbj2k6$crm$1@gal.iecc.com>
<1cc26b60-c6c7-4631-95c6-04954efc7218n@googlegroups.com> <c8255b65-e838-4223-bbd9-e212742d63ben@googlegroups.com>
<sbkq4o$2jtv$1@gal.iecc.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <7470687a-3403-4db5-9888-1bc241b7fb61n@googlegroups.com>
Subject: Re: Execute, not Sequencer vs microcode
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Thu, 01 Jul 2021 18:33:11 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 3838
 by: MitchAlsup - Thu, 1 Jul 2021 18:33 UTC

On Thursday, July 1, 2021 at 11:22:51 AM UTC-5, John Levine wrote:
> According to Quadibloc <jsa...@ecn.ab.ca>:
> >On Wednesday, June 30, 2021 at 7:50:50 PM UTC-6, MitchAlsup wrote:
> >
> >> In any event, these show that the instruction set was misconceived (at least originally)
> >> and that if properly conceived EXC would not have been necessary.
> >
> >Although the most common use of the Execute instruction by ordinary programmers
> >was to change the length of string operations, I don't think that's what it was intended
> >for.
<
> I'm quite sure they had that in mind. Why else would it modify the
> second byte, and only the second byte, of the target instruction,
> which is where the length field was? In Cobol and RPG programs, most
> character operations take operands of known lengths, so putting the
> length in the instruction saved a register reference in the usual
> case, and the EX hack let them handle variable length strings while
> keeping the code reentrant.
<
I am sure this was the intent, also,
<
However, a better solution would have been for the preceding instruction
to announce that it has the variable length for the subsequent instruction
and then there is no need for EXC. This is effectively what I do with CARRY
and PRED, and to a certain extent VEC-LOOP.
<
> >I think they did put it in to have a way of making it easier to write routines that serviced
> >an unimplemented opcode exception by causing the bad instruction to do something
> >useful, thus extending the instruction set...
> In a word, no. This was the 1960s, remember? IBM had no interest in
> simulating the decimal or floating point instructions on machines that
> didn't have them, since they wanted you to buy the upgrade. The high
> end 360/91 did not have the decimal instructions so OS/360 simulated
> them very slowly. I have heard that on CP/67 and VM/370 they
> simulated instructions to be added to the next generation of hardware
> so the software and hardware development could proceed in parallel.
> Those were both pretty exotic.
>
> In both of those cases the instruction caused an operation exception and a trap to the
> operating system which had to check that the operand addresses were valid before it
> could start to do the simulation. I cannot see that EX would have helped at all.
> --
> Regards,
> John Levine, jo...@taugh.com, Primary Perpetrator of "The Internet for Dummies",
> Please consider the environment before reading this e-mail. https://jl.ly

Re: Execute, not Sequencer vs microcode

<sbl42c$qqh$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18304&group=comp.arch#18304

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: sfu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: Execute, not Sequencer vs microcode
Date: Thu, 1 Jul 2021 12:12:10 -0700
Organization: A noiseless patient Spider
Lines: 40
Message-ID: <sbl42c$qqh$1@dont-email.me>
References: <sb1abl$ps8$1@dont-email.me> <sbj2k6$crm$1@gal.iecc.com>
<1cc26b60-c6c7-4631-95c6-04954efc7218n@googlegroups.com>
<c8255b65-e838-4223-bbd9-e212742d63ben@googlegroups.com>
<sbkq4o$2jtv$1@gal.iecc.com>
<7470687a-3403-4db5-9888-1bc241b7fb61n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 1 Jul 2021 19:12:13 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="1b9575ea4a458fe6282c91555ed3c73e";
logging-data="27473"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+cIdcgqmmpmOu1Ssy8Vomzxy4GXRIblEo="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:chVYIW0CgghjCFQ9Jxt6SMYc9Y8=
In-Reply-To: <7470687a-3403-4db5-9888-1bc241b7fb61n@googlegroups.com>
Content-Language: en-US
 by: Stephen Fuld - Thu, 1 Jul 2021 19:12 UTC

On 7/1/2021 11:33 AM, MitchAlsup wrote:
> On Thursday, July 1, 2021 at 11:22:51 AM UTC-5, John Levine wrote:
>> According to Quadibloc <jsa...@ecn.ab.ca>:
>>> On Wednesday, June 30, 2021 at 7:50:50 PM UTC-6, MitchAlsup wrote:
>>>
>>>> In any event, these show that the instruction set was misconceived (at least originally)
>>>> and that if properly conceived EXC would not have been necessary.
>>>
>>> Although the most common use of the Execute instruction by ordinary programmers
>>> was to change the length of string operations, I don't think that's what it was intended
>>> for.
> <
>> I'm quite sure they had that in mind. Why else would it modify the
>> second byte, and only the second byte, of the target instruction,
>> which is where the length field was? In Cobol and RPG programs, most
>> character operations take operands of known lengths, so putting the
>> length in the instruction saved a register reference in the usual
>> case, and the EX hack let them handle variable length strings while
>> keeping the code reentrant.
> <
> I am sure this was the intent, also,
> <
> However, a better solution would have been for the preceding instruction
> to announce that it has the variable length for the subsequent instruction
> and then there is no need for EXC. This is effectively what I do with CARRY
> and PRED, and to a certain extent VEC-LOOP.

Perhaps. Then they would have to have added that information to the
PSW, as they didn't have the luxury of a large context save area with
the fast mechanism that you have of context switches. And I am not sure
it would have fitted in the then existing PSW, which would have required
a more significant change.

While I agree that you have a better solution, I apparently have more
sympathy for the early 1960s designers.

--
- Stephen Fuld
(e-mail address disguised to prevent spam)

Re: Execute, not Sequencer vs microcode

<sblcfo$io7$2@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18310&group=comp.arch#18310

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: Execute, not Sequencer vs microcode
Date: Thu, 1 Jul 2021 14:35:52 -0700
Organization: A noiseless patient Spider
Lines: 29
Message-ID: <sblcfo$io7$2@dont-email.me>
References: <sb1abl$ps8$1@dont-email.me> <sbj2k6$crm$1@gal.iecc.com>
<1cc26b60-c6c7-4631-95c6-04954efc7218n@googlegroups.com>
<c8255b65-e838-4223-bbd9-e212742d63ben@googlegroups.com>
<sbkq4o$2jtv$1@gal.iecc.com>
<7470687a-3403-4db5-9888-1bc241b7fb61n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 1 Jul 2021 21:35:52 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="e93b0210f92e3ec0710028be2ee065cf";
logging-data="19207"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+lL13s20d5LJ5VZ7SeyLbd"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:mXK8EHi/9D+UhT+l5khopQzK3AE=
In-Reply-To: <7470687a-3403-4db5-9888-1bc241b7fb61n@googlegroups.com>
Content-Language: en-US
 by: Ivan Godard - Thu, 1 Jul 2021 21:35 UTC

On 7/1/2021 11:33 AM, MitchAlsup wrote:
> On Thursday, July 1, 2021 at 11:22:51 AM UTC-5, John Levine wrote:
>> According to Quadibloc <jsa...@ecn.ab.ca>:
>>> On Wednesday, June 30, 2021 at 7:50:50 PM UTC-6, MitchAlsup wrote:
>>>
>>>> In any event, these show that the instruction set was misconceived (at least originally)
>>>> and that if properly conceived EXC would not have been necessary.
>>>
>>> Although the most common use of the Execute instruction by ordinary programmers
>>> was to change the length of string operations, I don't think that's what it was intended
>>> for.
> <
>> I'm quite sure they had that in mind. Why else would it modify the
>> second byte, and only the second byte, of the target instruction,
>> which is where the length field was? In Cobol and RPG programs, most
>> character operations take operands of known lengths, so putting the
>> length in the instruction saved a register reference in the usual
>> case, and the EX hack let them handle variable length strings while
>> keeping the code reentrant.
> <
> I am sure this was the intent, also,
> <
> However, a better solution would have been for the preceding instruction
> to announce that it has the variable length for the subsequent instruction
> and then there is no need for EXC. This is effectively what I do with CARRY
> and PRED, and to a certain extent VEC-LOOP.

Or for bundle-based encodings, the extra bits can be in an adjacent slot
in the bundle, which we call "ganging".

Re: Sequencer vs microcode

<FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18313&group=comp.arch#18313

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!tr1.eu1.usenetexpress.com!feeder.usenetexpress.com!tr2.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!buffer1.nntp.dca1.giganews.com!buffer2.nntp.dca1.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Thu, 01 Jul 2021 20:39:03 -0500
Newsgroups: comp.arch
Subject: Re: Sequencer vs microcode
References: <sb1abl$ps8$1@dont-email.me> <3d37be3c-e4fd-41b3-93f7-7037a3c19aefn@googlegroups.com> <e5IBI.683979$ST2.397427@fx47.iad> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com>
Organization: provalid.com
X-Newsreader: trn 4.0-test76 (Apr 2, 2001)
From: keg...@provalid.com (Kent Dickey)
Originator: kegs@provalid.com (Kent Dickey)
Message-ID: <FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com>
Date: Thu, 01 Jul 2021 20:39:03 -0500
Lines: 29
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-paXEw2jiNYrTIH4tzzMs74+Exoa8w5AsdPoQuvbIsStC1aES87gpEOc6xGnTBH/azIn37VggvTw6xWM!2o1J69wd19iJgtityhsUhz6ATrWQGxOT0n+oDWSZlyzgEnAOXy8hWNZjNmc/C/sxUkxPVum4m+Q=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
X-Original-Bytes: 2478
 by: Kent Dickey - Fri, 2 Jul 2021 01:39 UTC

In article <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com>,
MitchAlsup <MitchAlsup@aol.com> wrote:
>On Saturday, June 26, 2021 at 10:54:53 AM UTC-5, EricP wrote:
>> MitchAlsup wrote:
>> > <
>> > To show the extent of my disfavor for EXC, in My 66000 one cannot
>execute code in a page
>> > that is writable !
>> That forces JIT'ers and self modifiers to make a trip through
>> the OS to change the page protection from RW to RE.
><
>No, it requires the JIT to run in a different address mapping than the
>application
>using the JITted code. Since this transition only costs 12 cycles plus cache
>effects, it is well worth while.
><
>> Not that it is a bad thing as it does allow the OS to clean up model
>> specfic things like caches and prefetch buffers across multiple SMP cores.

Can you explain why you're doing this? What does having the JIT modification
be in a different address space help in the hardware? I'm not seeing how
this really helps, other than to make certain JIT strategies harder.

It also appears to make verification harder with out making the
hardware cases go away--another thread (or this thread, with a different
mapping) can still change code that is actively being executed, so you
have to handle that case still. What is your synchronization strategy?

Kent

Re: Execute, not Sequencer vs microcode

<2f9894a5-92ed-41fe-8022-5ca17e165480n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18314&group=comp.arch#18314

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:edb0:: with SMTP id h16mr3078847qvr.33.1625192972553;
Thu, 01 Jul 2021 19:29:32 -0700 (PDT)
X-Received: by 2002:a05:6830:1d8:: with SMTP id r24mr2733473ota.206.1625192972230;
Thu, 01 Jul 2021 19:29:32 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Thu, 1 Jul 2021 19:29:32 -0700 (PDT)
In-Reply-To: <sbl42c$qqh$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:590b:761e:ba99:2090;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:590b:761e:ba99:2090
References: <sb1abl$ps8$1@dont-email.me> <sbj2k6$crm$1@gal.iecc.com>
<1cc26b60-c6c7-4631-95c6-04954efc7218n@googlegroups.com> <c8255b65-e838-4223-bbd9-e212742d63ben@googlegroups.com>
<sbkq4o$2jtv$1@gal.iecc.com> <7470687a-3403-4db5-9888-1bc241b7fb61n@googlegroups.com>
<sbl42c$qqh$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2f9894a5-92ed-41fe-8022-5ca17e165480n@googlegroups.com>
Subject: Re: Execute, not Sequencer vs microcode
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Fri, 02 Jul 2021 02:29:32 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Fri, 2 Jul 2021 02:29 UTC

On Thursday, July 1, 2021 at 1:12:15 PM UTC-6, Stephen Fuld wrote:
> On 7/1/2021 11:33 AM, MitchAlsup wrote:

> > However, a better solution would have been for the preceding instruction
> > to announce that it has the variable length for the subsequent instruction
> > and then there is no need for EXC. This is effectively what I do with CARRY
> > and PRED, and to a certain extent VEC-LOOP.

> Perhaps. Then they would have to have added that information to the
> PSW, as they didn't have the luxury of a large context save area with
> the fast mechanism that you have of context switches. And I am not sure
> it would have fitted in the then existing PSW, which would have required
> a more significant change.

> While I agree that you have a better solution, I apparently have more
> sympathy for the early 1960s designers.

Indeed, you have pinpointed the issue with his "better solution" - it creates state.

Now, though, one doesn't _have_ to put the state in an elarged PSW. What Mitch
Alsup was probably envisaging is that the preceding instruction plus at least the
decode of the following instlruction would be *atomic* - if it can't be interrupted,
then nothing needs to be saved.

The trouble with that, though, is it adds a complexity to the architecture which is
a problem for the "early 1960s designers" who were making the very low-end models
in the 360 series. Or maybe not; maybe not having instructions *strictly* follow the
one-two-three halfword lengths that they officially have is not a problem when you're
doing everything in microcode, so it's the 360/75 and the 360/44, and the 360/91 that
would have come a cropper.

John Savard

Re: Sequencer vs microcode

<7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18315&group=comp.arch#18315

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:11ae:: with SMTP id u14mr3014782qvv.16.1625193781995;
Thu, 01 Jul 2021 19:43:01 -0700 (PDT)
X-Received: by 2002:aca:5cd7:: with SMTP id q206mr2002746oib.99.1625193781724;
Thu, 01 Jul 2021 19:43:01 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.uzoreto.com!peer01.ams4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Thu, 1 Jul 2021 19:43:01 -0700 (PDT)
In-Reply-To: <FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:39ad:9960:ab74:f885;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:39ad:9960:ab74:f885
References: <sb1abl$ps8$1@dont-email.me> <3d37be3c-e4fd-41b3-93f7-7037a3c19aefn@googlegroups.com>
<e5IBI.683979$ST2.397427@fx47.iad> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com>
<FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com>
Subject: Re: Sequencer vs microcode
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 02 Jul 2021 02:43:01 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 3661
 by: MitchAlsup - Fri, 2 Jul 2021 02:43 UTC

On Thursday, July 1, 2021 at 8:39:10 PM UTC-5, Kent Dickey wrote:
> In article <8b1baea3-a802-4341...@googlegroups.com>,
> MitchAlsup <Mitch...@aol.com> wrote:
> >On Saturday, June 26, 2021 at 10:54:53 AM UTC-5, EricP wrote:
> >> MitchAlsup wrote:
> >> > <
> >> > To show the extent of my disfavor for EXC, in My 66000 one cannot
> >execute code in a page
> >> > that is writable !
> >> That forces JIT'ers and self modifiers to make a trip through
> >> the OS to change the page protection from RW to RE.
> ><
> >No, it requires the JIT to run in a different address mapping than the
> >application
> >using the JITted code. Since this transition only costs 12 cycles plus cache
> >effects, it is well worth while.
> ><
> >> Not that it is a bad thing as it does allow the OS to clean up model
> >> specfic things like caches and prefetch buffers across multiple SMP cores.
>
> Can you explain why you're doing this? What does having the JIT modification
> be in a different address space help in the hardware? I'm not seeing how
> this really helps, other than to make certain JIT strategies harder.
<
Protection::
The executor of the code cannot modify the code (no write permission).
The JIT is not in the address space of the "application"
The "application" cannot modify the JITer or even see it
The "application" can only see the ASCII code given to the JIT.
The "application" can only execute from JIT cache.
Thus:: JIT smells a lot more like a dynamic library than current.
>
> It also appears to make verification harder with out making the
> hardware cases go away--another thread (or this thread, with a different
> mapping) can still change code that is actively being executed, so you
> have to handle that case still. What is your synchronization strategy?
<
With variable length instructions it is "extremely bad" if part of the inst
has been put in JIT cache and the rest has not. Likewise, it is bad if
sensibly incomplete codes are put in JIT cache.
<
JIT pauses consuming applications during JITification and restarts them
afterwards.
<
Also note: one can pause a number of "tasks" with a single My 66000 inst
and likewise, those tasks can be restarted with a single inst.
So the overhead of doing this is not what your intuition imagines.
>
> Kent

Re: Execute, not Sequencer vs microcode

<24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18316&group=comp.arch#18316

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:1116:: with SMTP id o22mr3165389qkk.299.1625194245335;
Thu, 01 Jul 2021 19:50:45 -0700 (PDT)
X-Received: by 2002:aca:ed57:: with SMTP id l84mr2079088oih.119.1625194245048;
Thu, 01 Jul 2021 19:50:45 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Thu, 1 Jul 2021 19:50:44 -0700 (PDT)
In-Reply-To: <2f9894a5-92ed-41fe-8022-5ca17e165480n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:6449:9488:dbf7:5d84;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:6449:9488:dbf7:5d84
References: <sb1abl$ps8$1@dont-email.me> <sbj2k6$crm$1@gal.iecc.com>
<1cc26b60-c6c7-4631-95c6-04954efc7218n@googlegroups.com> <c8255b65-e838-4223-bbd9-e212742d63ben@googlegroups.com>
<sbkq4o$2jtv$1@gal.iecc.com> <7470687a-3403-4db5-9888-1bc241b7fb61n@googlegroups.com>
<sbl42c$qqh$1@dont-email.me> <2f9894a5-92ed-41fe-8022-5ca17e165480n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com>
Subject: Re: Execute, not Sequencer vs microcode
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Fri, 02 Jul 2021 02:50:45 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Fri, 2 Jul 2021 02:50 UTC

On Thursday, July 1, 2021 at 8:29:33 PM UTC-6, Quadibloc wrote:

> Now, though, one doesn't _have_ to put the state in an elarged PSW. What Mitch
> Alsup was probably envisaging is that the preceding instruction plus at least the
> decode of the following instlruction would be *atomic* - if it can't be interrupted,
> then nothing needs to be saved.

There is, of course, an even simpler solution. Just change the definition of the
instruction so that if the length field contains zero, then, since that's absurd, that
means the instruction is variable-length, and the length is found in register zero.

I think I even saw a machine which did that, maybe for shift counts.

John Savard

Re: Sequencer vs microcode

<AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18318&group=comp.arch#18318

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!feeder5.feed.usenet.farm!feeder1.feed.usenet.farm!feed.usenet.farm!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr2.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!buffer1.nntp.dca1.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Fri, 02 Jul 2021 00:17:22 -0500
Newsgroups: comp.arch
Subject: Re: Sequencer vs microcode
References: <sb1abl$ps8$1@dont-email.me> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com> <FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com> <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com>
Organization: provalid.com
X-Newsreader: trn 4.0-test76 (Apr 2, 2001)
From: keg...@provalid.com (Kent Dickey)
Originator: kegs@provalid.com (Kent Dickey)
Message-ID: <AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com>
Date: Fri, 02 Jul 2021 00:17:22 -0500
Lines: 60
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-ociNz6pd4i2olC7NJWNmsn95YCm8kfdf4eyVeklPh4ouqgiM/O440Suidr00Qc9eZ9XB5H5KBdI3G78!W0zQn7A+F/cksMamaF9ez9PIiLHQwZVu7ffNbXb878sXQ5hitwjcBKaKJ3foAXYQO+I/IaI6LQM=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
X-Original-Bytes: 3959
 by: Kent Dickey - Fri, 2 Jul 2021 05:17 UTC

In article <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com>,
MitchAlsup <MitchAlsup@aol.com> wrote:
>On Thursday, July 1, 2021 at 8:39:10 PM UTC-5, Kent Dickey wrote:
>> In article <8b1baea3-a802-4341...@googlegroups.com>,
>> MitchAlsup <Mitch...@aol.com> wrote:
>> >No, it requires the JIT to run in a different address mapping than the
>> >application
>> >using the JITted code. Since this transition only costs 12 cycles plus cache
>> >effects, it is well worth while.
[snip]
>>
>> Can you explain why you're doing this? What does having the JIT modification
>> be in a different address space help in the hardware? I'm not seeing how
>> this really helps, other than to make certain JIT strategies harder.
><
>Protection::
>The executor of the code cannot modify the code (no write permission).
>The JIT is not in the address space of the "application"
>The "application" cannot modify the JITer or even see it
>The "application" can only see the ASCII code given to the JIT.
>The "application" can only execute from JIT cache.
>Thus:: JIT smells a lot more like a dynamic library than current.
>>
>> It also appears to make verification harder with out making the
>> hardware cases go away--another thread (or this thread, with a different
>> mapping) can still change code that is actively being executed, so you
>> have to handle that case still. What is your synchronization strategy?
><
>With variable length instructions it is "extremely bad" if part of the inst
>has been put in JIT cache and the rest has not. Likewise, it is bad if
>sensibly incomplete codes are put in JIT cache.
><
>JIT pauses consuming applications during JITification and restarts them
>afterwards.
><
>Also note: one can pause a number of "tasks" with a single My 66000 inst
>and likewise, those tasks can be restarted with a single inst.
>So the overhead of doing this is not what your intuition imagines.
>>
>> Kent

I thought you were saying the following:

Application A is running code at virtual address (VA) 0x5000, which maps to
physical address (PA) 0x1000. Your CPU design does not allow writes to any
page which is executable, so writes to VA 0x5000 will trap.

But Application A (same thread, maybe another thread, maybe another process
through mmap()) could create an alias so that VA=0x6000 maps to PA=0x1000,
and this does not have execute permissions so it can be writeable. So then
software can write to instructions using VA=0x6000 while they are being
executed at VA=0x5000.

If this is not possible, how is the hardware stopping it?

This is why I think you have all the hardware issues of self-modifying code
still, where you can have execution state which is inconsistent through
this virtual aliases.

Kent

Re: Sequencer vs microcode

<682437d2-332e-4676-bb45-5f7b29f7df5cn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18323&group=comp.arch#18323

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:591:: with SMTP id 139mr490574qkf.18.1625240891096; Fri, 02 Jul 2021 08:48:11 -0700 (PDT)
X-Received: by 2002:aca:dac5:: with SMTP id r188mr212564oig.78.1625240890654; Fri, 02 Jul 2021 08:48:10 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!feeder5.feed.usenet.farm!feeder1.feed.usenet.farm!feed.usenet.farm!tr1.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 2 Jul 2021 08:48:10 -0700 (PDT)
In-Reply-To: <AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:7d00:2db5:dd4e:2acb; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:7d00:2db5:dd4e:2acb
References: <sb1abl$ps8$1@dont-email.me> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com> <FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com> <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com> <AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <682437d2-332e-4676-bb45-5f7b29f7df5cn@googlegroups.com>
Subject: Re: Sequencer vs microcode
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 02 Jul 2021 15:48:10 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 67
 by: MitchAlsup - Fri, 2 Jul 2021 15:48 UTC

On Friday, July 2, 2021 at 12:17:29 AM UTC-5, Kent Dickey wrote:
> In article <7fb90705-a13d-473d...@googlegroups.com>,
> MitchAlsup <Mitch...@aol.com> wrote:
> >On Thursday, July 1, 2021 at 8:39:10 PM UTC-5, Kent Dickey wrote:
> >> In article <8b1baea3-a802-4341...@googlegroups.com>,
> >> MitchAlsup <Mitch...@aol.com> wrote:
> >> >No, it requires the JIT to run in a different address mapping than the
> >> >application
> >> >using the JITted code. Since this transition only costs 12 cycles plus cache
> >> >effects, it is well worth while.
> [snip]
> >>
> >> Can you explain why you're doing this? What does having the JIT modification
> >> be in a different address space help in the hardware? I'm not seeing how
> >> this really helps, other than to make certain JIT strategies harder.
> ><
> >Protection::
> >The executor of the code cannot modify the code (no write permission).
> >The JIT is not in the address space of the "application"
> >The "application" cannot modify the JITer or even see it
> >The "application" can only see the ASCII code given to the JIT.
> >The "application" can only execute from JIT cache.
> >Thus:: JIT smells a lot more like a dynamic library than current.
> >>
> >> It also appears to make verification harder with out making the
> >> hardware cases go away--another thread (or this thread, with a different
> >> mapping) can still change code that is actively being executed, so you
> >> have to handle that case still. What is your synchronization strategy?
> ><
> >With variable length instructions it is "extremely bad" if part of the inst
> >has been put in JIT cache and the rest has not. Likewise, it is bad if
> >sensibly incomplete codes are put in JIT cache.
> ><
> >JIT pauses consuming applications during JITification and restarts them
> >afterwards.
> ><
> >Also note: one can pause a number of "tasks" with a single My 66000 inst
> >and likewise, those tasks can be restarted with a single inst.
> >So the overhead of doing this is not what your intuition imagines.
> >>
> >> Kent
> I thought you were saying the following:
>
> Application A is running code at virtual address (VA) 0x5000, which maps to
> physical address (PA) 0x1000. Your CPU design does not allow writes to any
> page which is executable, so writes to VA 0x5000 will trap.
>
> But Application A (same thread, maybe another thread, maybe another process
> through mmap()) could create an alias so that VA=0x6000 maps to PA=0x1000,
> and this does not have execute permissions so it can be writeable. So then
> software can write to instructions using VA=0x6000 while they are being
> executed at VA=0x5000.
>
> If this is not possible, how is the hardware stopping it?
<
All of that is possible via page mappings.
<
However I though VA[JIT] = VA[application] would work better; VA[JIT]
is writable, VA[application] is executable using different root pointers.
>
> This is why I think you have all the hardware issues of self-modifying code
> still, where you can have execution state which is inconsistent through
> this virtual aliases.
<
I simply don't want an application capable of modifying its own code.
<
>
> Kent

Re: Sequencer vs microcode

<f553b6b8-390e-46be-afd1-e775b3a1c42dn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18327&group=comp.arch#18327

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:1a1d:: with SMTP id f29mr1618786qtb.200.1625258822383;
Fri, 02 Jul 2021 13:47:02 -0700 (PDT)
X-Received: by 2002:a9d:70c1:: with SMTP id w1mr925765otj.82.1625258822108;
Fri, 02 Jul 2021 13:47:02 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 2 Jul 2021 13:47:01 -0700 (PDT)
In-Reply-To: <FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fa3c:a000:c1e8:ac29:43de:d77c;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fa3c:a000:c1e8:ac29:43de:d77c
References: <sb1abl$ps8$1@dont-email.me> <3d37be3c-e4fd-41b3-93f7-7037a3c19aefn@googlegroups.com>
<e5IBI.683979$ST2.397427@fx47.iad> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com>
<FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f553b6b8-390e-46be-afd1-e775b3a1c42dn@googlegroups.com>
Subject: Re: Sequencer vs microcode
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Fri, 02 Jul 2021 20:47:02 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Fri, 2 Jul 2021 20:47 UTC

On Thursday, July 1, 2021 at 7:39:10 PM UTC-6, Kent Dickey wrote:

> Can you explain why you're doing this? What does having the JIT modification
> be in a different address space help in the hardware? I'm not seeing how
> this really helps, other than to make certain JIT strategies harder.

Basically, it's because in his architecture, the memory mapping system is
*the only security mechanism he's got* - there is no privileged mode, the only
way to give some processes different privilege is by giving them different memory
maps. This at least has the virtue of simplicity.

So he has to use what he has got in order to allow just-in-time compilation where
executable code is normally not modifiable; there's no other way to do it.

John Savard

Re: Sequencer vs microcode

<HfLDI.17461$_X3.14256@fx40.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18328&group=comp.arch#18328

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news-out.netnews.com!newsin.alt.net!fdcspool1.netnews.com!news-out.netnews.com!news.alt.net!fdc3.netnews.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx40.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: Sequencer vs microcode
References: <sb1abl$ps8$1@dont-email.me> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com> <FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com> <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com> <AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com> <682437d2-332e-4676-bb45-5f7b29f7df5cn@googlegroups.com>
In-Reply-To: <682437d2-332e-4676-bb45-5f7b29f7df5cn@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 76
Message-ID: <HfLDI.17461$_X3.14256@fx40.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Fri, 02 Jul 2021 21:08:55 UTC
Date: Fri, 02 Jul 2021 17:08:27 -0400
X-Received-Bytes: 4727
 by: EricP - Fri, 2 Jul 2021 21:08 UTC

MitchAlsup wrote:
> On Friday, July 2, 2021 at 12:17:29 AM UTC-5, Kent Dickey wrote:
>> In article <7fb90705-a13d-473d...@googlegroups.com>,
>> MitchAlsup <Mitch...@aol.com> wrote:
>>> On Thursday, July 1, 2021 at 8:39:10 PM UTC-5, Kent Dickey wrote:
>>>> In article <8b1baea3-a802-4341...@googlegroups.com>,
>>>> MitchAlsup <Mitch...@aol.com> wrote:
>>>>> No, it requires the JIT to run in a different address mapping than the
>>>>> application
>>>>> using the JITted code. Since this transition only costs 12 cycles plus cache
>>>>> effects, it is well worth while.
>> [snip]
>>>> Can you explain why you're doing this? What does having the JIT modification
>>>> be in a different address space help in the hardware? I'm not seeing how
>>>> this really helps, other than to make certain JIT strategies harder.
>>> <
>>> Protection::
>>> The executor of the code cannot modify the code (no write permission).
>>> The JIT is not in the address space of the "application"
>>> The "application" cannot modify the JITer or even see it
>>> The "application" can only see the ASCII code given to the JIT.
>>> The "application" can only execute from JIT cache.
>>> Thus:: JIT smells a lot more like a dynamic library than current.
>>>> It also appears to make verification harder with out making the
>>>> hardware cases go away--another thread (or this thread, with a different
>>>> mapping) can still change code that is actively being executed, so you
>>>> have to handle that case still. What is your synchronization strategy?
>>> <
>>> With variable length instructions it is "extremely bad" if part of the inst
>>> has been put in JIT cache and the rest has not. Likewise, it is bad if
>>> sensibly incomplete codes are put in JIT cache.
>>> <
>>> JIT pauses consuming applications during JITification and restarts them
>>> afterwards.
>>> <
>>> Also note: one can pause a number of "tasks" with a single My 66000 inst
>>> and likewise, those tasks can be restarted with a single inst.
>>> So the overhead of doing this is not what your intuition imagines.
>>>> Kent
>> I thought you were saying the following:
>>
>> Application A is running code at virtual address (VA) 0x5000, which maps to
>> physical address (PA) 0x1000. Your CPU design does not allow writes to any
>> page which is executable, so writes to VA 0x5000 will trap.
>>
>> But Application A (same thread, maybe another thread, maybe another process
>> through mmap()) could create an alias so that VA=0x6000 maps to PA=0x1000,
>> and this does not have execute permissions so it can be writeable. So then
>> software can write to instructions using VA=0x6000 while they are being
>> executed at VA=0x5000.
>>
>> If this is not possible, how is the hardware stopping it?
> <
> All of that is possible via page mappings.
> <
> However I though VA[JIT] = VA[application] would work better; VA[JIT]
> is writable, VA[application] is executable using different root pointers.
>> This is why I think you have all the hardware issues of self-modifying code
>> still, where you can have execution state which is inconsistent through
>> this virtual aliases.
> <
> I simply don't want an application capable of modifying its own code.
> <
>> Kent

On *nix can a thread mmap the same file into its own address space
twice at different addresses with RW and RE protections?
And would these two views be coherent, in that writes to
the RW section appear in the RE section immediately?
If both PTE's point to the same physical frame it should work,
but the question is does the OS ensure they use the same physical frame.
I tried searching but got conflicting answers.

Re: Sequencer vs microcode

<2021Jul2.235135@mips.complang.tuwien.ac.at>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18329&group=comp.arch#18329

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: ant...@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Sequencer vs microcode
Date: Fri, 02 Jul 2021 21:51:35 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 17
Message-ID: <2021Jul2.235135@mips.complang.tuwien.ac.at>
References: <sb1abl$ps8$1@dont-email.me> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com> <FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com> <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com> <AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com> <682437d2-332e-4676-bb45-5f7b29f7df5cn@googlegroups.com> <HfLDI.17461$_X3.14256@fx40.iad>
Injection-Info: reader02.eternal-september.org; posting-host="3e50fd32df887155c596bb8756fc8e1f";
logging-data="7160"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+F+5ug2F7r119TWMiQD5IK"
Cancel-Lock: sha1:W4bJcyBd8q4XFK6mqrMTAaP9KOc=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Fri, 2 Jul 2021 21:51 UTC

EricP <ThatWouldBeTelling@thevillage.com> writes:
>On *nix can a thread mmap the same file into its own address space
>twice at different addresses with RW and RE protections?

I have not tried it, but I would be surprised if it did not work.

>And would these two views be coherent, in that writes to
>the RW section appear in the RE section immediately?

Yes. To my surprise, this even worked with the virtually-indexed
virtually-tagged cache of the 21064a (or was it the 21264?). I wrote
this up in a web page, but cannot find it.

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

Re: Sequencer vs microcode

<2021Jul3.000524@mips.complang.tuwien.ac.at>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18331&group=comp.arch#18331

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: ant...@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Sequencer vs microcode
Date: Fri, 02 Jul 2021 22:05:24 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 32
Message-ID: <2021Jul3.000524@mips.complang.tuwien.ac.at>
References: <sb1abl$ps8$1@dont-email.me> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com> <FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com> <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com> <AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com> <682437d2-332e-4676-bb45-5f7b29f7df5cn@googlegroups.com> <HfLDI.17461$_X3.14256@fx40.iad> <2021Jul2.235135@mips.complang.tuwien.ac.at>
Injection-Info: reader02.eternal-september.org; posting-host="1fcbf9589a887c7556590dc5e6b341c0";
logging-data="7160"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19yW9nj7uufW5CM0Eb8Cnav"
Cancel-Lock: sha1:4cQaxKo7pvsLek1A9nhp8jsfAGg=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Fri, 2 Jul 2021 22:05 UTC

anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
>EricP <ThatWouldBeTelling@thevillage.com> writes:
>>On *nix can a thread mmap the same file into its own address space
>>twice at different addresses with RW and RE protections?
>
>I have not tried it, but I would be surprised if it did not work.
>
>>And would these two views be coherent, in that writes to
>>the RW section appear in the RE section immediately?
>
>Yes. To my surprise, this even worked with the virtually-indexed
>virtually-tagged cache of the 21064a (or was it the 21264?). I wrote
>this up in a web page, but cannot find it.

I found it. The program is:

<http://www.complang.tuwien.ac.at/anton/toggle_dc_16k/mapcheck.c>

and I commented on that
<http://www.complang.tuwien.ac.at/anton/toggle_dc_16k/>:

|I was worried about cache consistency issues arising with the
|virtually indexed cache. Therefore I have written a test program for
|checking this. The result is that the test went well even with 16K
|D-cache. My guess is that the hardware invalidates the other cached
|instance of the same physical memory location automatically with bus
|snooping logic or somesuch.

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

Re: Sequencer vs microcode

<edfa1501-e781-44da-b1fd-7d9885449de7n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18333&group=comp.arch#18333

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:67cd:: with SMTP id b196mr1003203qkc.418.1625268944502;
Fri, 02 Jul 2021 16:35:44 -0700 (PDT)
X-Received: by 2002:a9d:ecf:: with SMTP id 73mr1417210otj.5.1625268944250;
Fri, 02 Jul 2021 16:35:44 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 2 Jul 2021 16:35:44 -0700 (PDT)
In-Reply-To: <HfLDI.17461$_X3.14256@fx40.iad>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:2504:1814:511f:f501;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:2504:1814:511f:f501
References: <sb1abl$ps8$1@dont-email.me> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com>
<FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com> <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com>
<AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com> <682437d2-332e-4676-bb45-5f7b29f7df5cn@googlegroups.com>
<HfLDI.17461$_X3.14256@fx40.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <edfa1501-e781-44da-b1fd-7d9885449de7n@googlegroups.com>
Subject: Re: Sequencer vs microcode
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 02 Jul 2021 23:35:44 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Fri, 2 Jul 2021 23:35 UTC

On Friday, July 2, 2021 at 4:08:58 PM UTC-5, EricP wrote:
> MitchAlsup wrote:
> > On Friday, July 2, 2021 at 12:17:29 AM UTC-5, Kent Dickey wrote:
> >> In article <7fb90705-a13d-473d...@googlegroups.com>,
> >> MitchAlsup <Mitch...@aol.com> wrote:
> >>> On Thursday, July 1, 2021 at 8:39:10 PM UTC-5, Kent Dickey wrote:
> >>>> In article <8b1baea3-a802-4341...@googlegroups.com>,
> >>>> MitchAlsup <Mitch...@aol.com> wrote:
> >>>>> No, it requires the JIT to run in a different address mapping than the
> >>>>> application
> >>>>> using the JITted code. Since this transition only costs 12 cycles plus cache
> >>>>> effects, it is well worth while.
> >> [snip]
> >>>> Can you explain why you're doing this? What does having the JIT modification
> >>>> be in a different address space help in the hardware? I'm not seeing how
> >>>> this really helps, other than to make certain JIT strategies harder.
> >>> <
> >>> Protection::
> >>> The executor of the code cannot modify the code (no write permission).
> >>> The JIT is not in the address space of the "application"
> >>> The "application" cannot modify the JITer or even see it
> >>> The "application" can only see the ASCII code given to the JIT.
> >>> The "application" can only execute from JIT cache.
> >>> Thus:: JIT smells a lot more like a dynamic library than current.
> >>>> It also appears to make verification harder with out making the
> >>>> hardware cases go away--another thread (or this thread, with a different
> >>>> mapping) can still change code that is actively being executed, so you
> >>>> have to handle that case still. What is your synchronization strategy?
> >>> <
> >>> With variable length instructions it is "extremely bad" if part of the inst
> >>> has been put in JIT cache and the rest has not. Likewise, it is bad if
> >>> sensibly incomplete codes are put in JIT cache.
> >>> <
> >>> JIT pauses consuming applications during JITification and restarts them
> >>> afterwards.
> >>> <
> >>> Also note: one can pause a number of "tasks" with a single My 66000 inst
> >>> and likewise, those tasks can be restarted with a single inst.
> >>> So the overhead of doing this is not what your intuition imagines.
> >>>> Kent
> >> I thought you were saying the following:
> >>
> >> Application A is running code at virtual address (VA) 0x5000, which maps to
> >> physical address (PA) 0x1000. Your CPU design does not allow writes to any
> >> page which is executable, so writes to VA 0x5000 will trap.
> >>
> >> But Application A (same thread, maybe another thread, maybe another process
> >> through mmap()) could create an alias so that VA=0x6000 maps to PA=0x1000,
> >> and this does not have execute permissions so it can be writeable. So then
> >> software can write to instructions using VA=0x6000 while they are being
> >> executed at VA=0x5000.
> >>
> >> If this is not possible, how is the hardware stopping it?
> > <
> > All of that is possible via page mappings.
> > <
> > However I though VA[JIT] = VA[application] would work better; VA[JIT]
> > is writable, VA[application] is executable using different root pointers.
> >> This is why I think you have all the hardware issues of self-modifying code
> >> still, where you can have execution state which is inconsistent through
> >> this virtual aliases.
> > <
> > I simply don't want an application capable of modifying its own code.
> > <
> >> Kent
> On *nix can a thread mmap the same file into its own address space
> twice at different addresses with RW and RE protections?
<
Most can.
<
> And would these two views be coherent, in that writes to
> the RW section appear in the RE section immediately?
<
To data (LDs and STs) yes, to instructions, not necessarily. You see the FETCH
stage is endowed with the ability to fetch considerably in front of the LDs and
STs in the execution pipeline. So, it the ICache would get invalidated upon
data write within a few cycles, the FETCH stage could have read the old data
and not gotten around to issuing it yet.
<
You probably need some kind of Mfence which synchronizes Writes and Fetches.
<
> If both PTE's point to the same physical frame it should work,
<
What is a frame ?
<
> but the question is does the OS ensure they use the same physical frame.
> I tried searching but got conflicting answers.
<
Again, what is a frame ?

Re: Sequencer vs microcode

<h8PDI.7075$8b2.5847@fx24.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18335&group=comp.arch#18335

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!feeds.phibee-telecom.net!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!news-out.netnews.com!news.alt.net!fdc3.netnews.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx24.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: Sequencer vs microcode
References: <sb1abl$ps8$1@dont-email.me> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com> <FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com> <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com> <AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com> <682437d2-332e-4676-bb45-5f7b29f7df5cn@googlegroups.com> <HfLDI.17461$_X3.14256@fx40.iad> <edfa1501-e781-44da-b1fd-7d9885449de7n@googlegroups.com>
In-Reply-To: <edfa1501-e781-44da-b1fd-7d9885449de7n@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 16
Message-ID: <h8PDI.7075$8b2.5847@fx24.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Sat, 03 Jul 2021 01:34:05 UTC
Date: Fri, 02 Jul 2021 21:34:05 -0400
X-Received-Bytes: 1590
 by: EricP - Sat, 3 Jul 2021 01:34 UTC

MitchAlsup wrote:
> On Friday, July 2, 2021 at 4:08:58 PM UTC-5, EricP wrote:
> <
>> If both PTE's point to the same physical frame it should work,
> <
> What is a frame ?

The name for a physical memory page. I suppose because people got
tired of saying "virtual page" "physical page" so "page" means virtual
and "frame" mean physical. Saves typing.

Unless one does what I did and says "physical frame",
in which case the whole exercise is pointless.

But isn't that just the way of the whole universe?

Re: Sequencer vs microcode

<69f3c773-f833-4a24-b561-ffb3dd0879d7n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18337&group=comp.arch#18337

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:15a6:: with SMTP id f6mr2893756qkk.472.1625277680518;
Fri, 02 Jul 2021 19:01:20 -0700 (PDT)
X-Received: by 2002:a05:6808:a19:: with SMTP id n25mr1976634oij.0.1625277680307;
Fri, 02 Jul 2021 19:01:20 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 2 Jul 2021 19:01:20 -0700 (PDT)
In-Reply-To: <h8PDI.7075$8b2.5847@fx24.iad>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:2504:1814:511f:f501;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:2504:1814:511f:f501
References: <sb1abl$ps8$1@dont-email.me> <8b1baea3-a802-4341-8afd-d827e4eee948n@googlegroups.com>
<FdWdnYnNu76q80P9nZ2dnUU7-dudnZ2d@giganews.com> <7fb90705-a13d-473d-8462-7b9d62e117fen@googlegroups.com>
<AcSdncfIbaL_PEP9nZ2dnUU7-d_NnZ2d@giganews.com> <682437d2-332e-4676-bb45-5f7b29f7df5cn@googlegroups.com>
<HfLDI.17461$_X3.14256@fx40.iad> <edfa1501-e781-44da-b1fd-7d9885449de7n@googlegroups.com>
<h8PDI.7075$8b2.5847@fx24.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <69f3c773-f833-4a24-b561-ffb3dd0879d7n@googlegroups.com>
Subject: Re: Sequencer vs microcode
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 03 Jul 2021 02:01:20 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Sat, 3 Jul 2021 02:01 UTC

On Friday, July 2, 2021 at 8:34:08 PM UTC-5, EricP wrote:
> MitchAlsup wrote:
> > On Friday, July 2, 2021 at 4:08:58 PM UTC-5, EricP wrote:
> > <
> >> If both PTE's point to the same physical frame it should work,
> > <
> > What is a frame ?
> The name for a physical memory page. I suppose because people got
> tired of saying "virtual page" "physical page" so "page" means virtual
> and "frame" mean physical. Saves typing.
<
When there are Hypervisors with their own mapping it merely confuses
the situation more.
>
> Unless one does what I did and says "physical frame",
> in which case the whole exercise is pointless.
>
> But isn't that just the way of the whole universe?
<
You mean that pointless thing ????

Re: Execute, not Sequencer vs microcode

<sboged$2ijq$1@gal.iecc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18338&group=comp.arch#18338

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.cmpublishers.com!adore2!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: Execute, not Sequencer vs microcode
Date: Sat, 3 Jul 2021 02:01:49 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <sboged$2ijq$1@gal.iecc.com>
References: <sb1abl$ps8$1@dont-email.me> <sbl42c$qqh$1@dont-email.me> <2f9894a5-92ed-41fe-8022-5ca17e165480n@googlegroups.com> <24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com>
Injection-Date: Sat, 3 Jul 2021 02:01:49 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="84602"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <sb1abl$ps8$1@dont-email.me> <sbl42c$qqh$1@dont-email.me> <2f9894a5-92ed-41fe-8022-5ca17e165480n@googlegroups.com> <24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Sat, 3 Jul 2021 02:01 UTC

According to Quadibloc <jsavard@ecn.ab.ca>:
>> Now, though, one doesn't _have_ to put the state in an elarged PSW. What Mitch
>> Alsup was probably envisaging is that the preceding instruction plus at least the
>> decode of the following instlruction would be *atomic* - if it can't be interrupted,
>> then nothing needs to be saved.
>
>There is, of course, an even simpler solution. Just change the definition of the
>instruction so that if the length field contains zero, then, since that's absurd, that
>means the instruction is variable-length, and the length is found in register zero.

What the 360 actually did was to make the length in the instruction one less than
the actual length so values 0-255 meant lengths 1-256. I suppose you could have reserved
a value and made it 1-255, but when processing long strings of data, handling it as
256 byte chunks was a lot more efficient than 255 byte chunks since shifting and masking
was a lot faster than dividing by 255.

As I keep pointing out, the 360 was designed in the 1960s. There were no pipelines,
no caches, and computers were built out of individual transistors. The performance
penalty for the EX target being somewhere else rather than in-line was zero.

It didn't take very long for them to realize that people wanted a
better way to handle variable length strings. In 1970, S/370 added
MVCL and CLCL instructions that took the addresses and lengths from
registers so operands could be up to the full size of the address space.

--
Regards,
John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
Please consider the environment before reading this e-mail. https://jl.ly

Re: Execute, not Sequencer vs microcode

<f871916f-0a79-427d-a92d-0f5c419eb70en@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18339&group=comp.arch#18339

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:f48a:: with SMTP id i10mr997615qvm.49.1625287405762; Fri, 02 Jul 2021 21:43:25 -0700 (PDT)
X-Received: by 2002:a05:6808:8c9:: with SMTP id k9mr2314555oij.157.1625287405476; Fri, 02 Jul 2021 21:43:25 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!3.eu.feeder.erje.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed9.news.xs4all.nl!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 2 Jul 2021 21:43:25 -0700 (PDT)
In-Reply-To: <sboged$2ijq$1@gal.iecc.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fa3c:a000:710e:8921:b523:3899; posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fa3c:a000:710e:8921:b523:3899
References: <sb1abl$ps8$1@dont-email.me> <sbl42c$qqh$1@dont-email.me> <2f9894a5-92ed-41fe-8022-5ca17e165480n@googlegroups.com> <24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com> <sboged$2ijq$1@gal.iecc.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f871916f-0a79-427d-a92d-0f5c419eb70en@googlegroups.com>
Subject: Re: Execute, not Sequencer vs microcode
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sat, 03 Jul 2021 04:43:25 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 21
 by: Quadibloc - Sat, 3 Jul 2021 04:43 UTC

On Friday, July 2, 2021 at 8:01:51 PM UTC-6, John Levine wrote:

> As I keep pointing out, the 360 was designed in the 1960s. There were no pipelines,
> no caches, and computers were built out of individual transistors.

Competing computers were built out of individual transistors. IBM's System/360
was built out of integrated circuits.

Or at least IBM said so.

What IBM's System/360 was built from was Solid Logic Technology (SLT). Little
square silicon dies containing individual transistors were applied to a printed
circuit on an alumina insulating substrate. Then the circuit was passivated by
being coated in leaded glass (to lower the melting point) and an aluminum cap
was put over the substrate to make a module with pins on the bottom.

Because IBM sold a _lot_ of computers, having automatic machinery place individual
transistors on a multi-chip module like this was economically viable for them;
everyone else had to wait until it was reasonable to switch from discrete transistors
to *monolithic* integrated circuits.

John Savard

Re: Execute, not Sequencer vs microcode

<b0cfbe42-4314-41d5-82e1-4377e74ff503n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18346&group=comp.arch#18346

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:a2cb:: with SMTP id l194mr5879437qke.190.1625329567552;
Sat, 03 Jul 2021 09:26:07 -0700 (PDT)
X-Received: by 2002:aca:4f16:: with SMTP id d22mr4508996oib.44.1625329567296;
Sat, 03 Jul 2021 09:26:07 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sat, 3 Jul 2021 09:26:07 -0700 (PDT)
In-Reply-To: <sboged$2ijq$1@gal.iecc.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:3948:9159:c80e:96fa;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:3948:9159:c80e:96fa
References: <sb1abl$ps8$1@dont-email.me> <sbl42c$qqh$1@dont-email.me>
<2f9894a5-92ed-41fe-8022-5ca17e165480n@googlegroups.com> <24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com>
<sboged$2ijq$1@gal.iecc.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b0cfbe42-4314-41d5-82e1-4377e74ff503n@googlegroups.com>
Subject: Re: Execute, not Sequencer vs microcode
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 03 Jul 2021 16:26:07 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Sat, 3 Jul 2021 16:26 UTC

On Friday, July 2, 2021 at 9:01:51 PM UTC-5, John Levine wrote:
> According to Quadibloc <jsa...@ecn.ab.ca>:
> >> Now, though, one doesn't _have_ to put the state in an elarged PSW. What Mitch
> >> Alsup was probably envisaging is that the preceding instruction plus at least the
> >> decode of the following instlruction would be *atomic* - if it can't be interrupted,
> >> then nothing needs to be saved.
> >
> >There is, of course, an even simpler solution. Just change the definition of the
> >instruction so that if the length field contains zero, then, since that's absurd, that
> >means the instruction is variable-length, and the length is found in register zero.
> What the 360 actually did was to make the length in the instruction one less than
> the actual length so values 0-255 meant lengths 1-256. I suppose you could have reserved
> a value and made it 1-255, but when processing long strings of data, handling it as
> 256 byte chunks was a lot more efficient than 255 byte chunks since shifting and masking
> was a lot faster than dividing by 255.
>
> As I keep pointing out, the 360 was designed in the 1960s. There were no pipelines,
<
7090 was pipelined.............
<
> no caches, and computers were built out of individual transistors. The performance
> penalty for the EX target being somewhere else rather than in-line was zero.
>
> It didn't take very long for them to realize that people wanted a
> better way to handle variable length strings. In 1970, S/370 added
> MVCL and CLCL instructions that took the addresses and lengths from
> registers so operands could be up to the full size of the address space.
> --
> Regards,
> John Levine, jo...@taugh.com, Primary Perpetrator of "The Internet for Dummies",
> Please consider the environment before reading this e-mail. https://jl.ly

Re: transistors, was Execute, not Sequencer vs microcode

<sbqejo$2e6k$1@gal.iecc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18347&group=comp.arch#18347

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.cmpublishers.com!adore2!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: transistors, was Execute, not Sequencer vs microcode
Date: Sat, 3 Jul 2021 19:42:48 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <sbqejo$2e6k$1@gal.iecc.com>
References: <sb1abl$ps8$1@dont-email.me> <24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com> <sboged$2ijq$1@gal.iecc.com> <f871916f-0a79-427d-a92d-0f5c419eb70en@googlegroups.com>
Injection-Date: Sat, 3 Jul 2021 19:42:48 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="80084"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <sb1abl$ps8$1@dont-email.me> <24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com> <sboged$2ijq$1@gal.iecc.com> <f871916f-0a79-427d-a92d-0f5c419eb70en@googlegroups.com>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Sat, 3 Jul 2021 19:42 UTC

According to Quadibloc <jsavard@ecn.ab.ca>:
>On Friday, July 2, 2021 at 8:01:51 PM UTC-6, John Levine wrote:
>
>> As I keep pointing out, the 360 was designed in the 1960s. There were no pipelines,
>> no caches, and computers were built out of individual transistors.
>
>Competing computers were built out of individual transistors. IBM's System/360
>was built out of integrated circuits.

Nope.

>Or at least IBM said so.

Nope.

>What IBM's System/360 was built from was Solid Logic Technology (SLT). Little
>square silicon dies containing individual transistors were applied to a printed
>circuit on an alumina insulating substrate.

Right, SLT was several individual transistors mounted on a substrate
in each package. Each transistor was produced and tested separately.
IBM looked at chips with multiple transistors but at that point the
yield on individual transistors was about 50% and the yield on
multi-device chips would be impossibly low.

Their first integrated circuits were MST used in the 360/85 in December 1969
and S/3 in January 1970.

"IBM's 360 and early 370 Systems" describes this in detail in chapters 2 and 8.

--
Regards,
John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
Please consider the environment before reading this e-mail. https://jl.ly

Re: Execute, not Sequencer vs microcode

<sbqg6r$i56$1@gal.iecc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=18348&group=comp.arch#18348

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.cmpublishers.com!adore2!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: Execute, not Sequencer vs microcode
Date: Sat, 3 Jul 2021 20:10:03 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <sbqg6r$i56$1@gal.iecc.com>
References: <sb1abl$ps8$1@dont-email.me> <24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com> <sboged$2ijq$1@gal.iecc.com> <b0cfbe42-4314-41d5-82e1-4377e74ff503n@googlegroups.com>
Injection-Date: Sat, 3 Jul 2021 20:10:03 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="18598"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <sb1abl$ps8$1@dont-email.me> <24374ab8-cc8d-47a1-bd59-fbc65b34994an@googlegroups.com> <sboged$2ijq$1@gal.iecc.com> <b0cfbe42-4314-41d5-82e1-4377e74ff503n@googlegroups.com>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Sat, 3 Jul 2021 20:10 UTC

According to MitchAlsup <MitchAlsup@aol.com>:
>On Friday, July 2, 2021 at 9:01:51 PM UTC-5, John Levine wrote:
>> As I keep pointing out, the 360 was designed in the 1960s. There were no pipelines,
><
>7090 was pipelined.............

"IBM's Early Computers" says the 7090 was a reimplemented 709 using
technology from the STRETCH. While STRETCH had a lookahead feature to
try to start memory accesses early which I suppose was a kind of
pipeline, it doesn't seem to have made it into the 7090. The
instruction timings in the 7090 manual at bitsavers don't say anything
that suggests there might be pipelining.

--
Regards,
John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
Please consider the environment before reading this e-mail. https://jl.ly

Pages:1234567
server_pubkey.txt

rocksolid light 0.9.8
clearnet tor