Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

The University of California Statistics Department; where mean is normal, and deviation standard.


devel / comp.arch / Re: PDP-11-like ISA

SubjectAuthor
* PDP-11-like ISAMitchAlsup
+* Re: PDP-11-like ISAJimBrakefield
|`- Re: PDP-11-like ISAMitchAlsup
+* Re: PDP-11-like ISAQuadibloc
|+* Re: PDP-11-like ISAQuadibloc
||`- Re: PDP-11-like ISAMitchAlsup
|+- Re: PDP-11-like ISAMitchAlsup
|+- Re: PDP-11-like ISAMitchAlsup
|`* Re: PDP-11-like ISAchris
| `* Re: PDP-11-like ISAQuadibloc
|  +* Re: PDP-11-like ISAMitchAlsup
|  |+* Re: PDP-11-like ISAIvan Godard
|  ||+* Re: PDP-11-like ISAMitchAlsup
|  |||`- Re: PDP-11-like ISAIvan Godard
|  ||`* Re: PDP-11-like ISATerje Mathisen
|  || `* Re: PDP-11-like ISAIvan Godard
|  ||  +* Re: PDP-11-like ISAMitchAlsup
|  ||  |+- Re: PDP-11-like ISATerje Mathisen
|  ||  |`* Re: PDP-11-like ISAEricP
|  ||  | +* Re: PDP-11-like ISAMitchAlsup
|  ||  | |`- Re: PDP-11-like ISAEricP
|  ||  | `- Re: PDP-11-like ISATerje Mathisen
|  ||  `* Re: PDP-11-like ISAStephen Fuld
|  ||   `* Re: PDP-11-like ISAIvan Godard
|  ||    `* Re: PDP-11-like ISAStephen Fuld
|  ||     +- Re: PDP-11-like ISAIvan Godard
|  ||     `- Re: PDP-11-like ISAIvan Godard
|  |`* Re: PDP-11-like ISAQuadibloc
|  | +* Re: PDP-11-like ISAQuadibloc
|  | |+* Re: PDP-11-like ISAIvan Godard
|  | ||`* Re: PDP-11-like ISAQuadibloc
|  | || `* Re: PDP-11-like ISAJames Harris
|  | ||  +* Condition codes (was: PDP-11-like ISA)Anton Ertl
|  | ||  |`* Re: Condition codes (was: PDP-11-like ISA)Quadibloc
|  | ||  | `- Re: Condition codes (was: PDP-11-like ISA)Anton Ertl
|  | ||  `* Re: PDP-11-like ISAMitchAlsup
|  | ||   `* Re: PDP-11-like ISAJames Harris
|  | ||    `- Re: PDP-11-like ISAMitchAlsup
|  | |`- Re: PDP-11-like ISAQuadibloc
|  | +* Re: PDP-11-like ISAMitchAlsup
|  | |`* Re: PDP-11-like ISAEricP
|  | | `- Re: PDP-11-like ISAMitchAlsup
|  | `- Condition codes (was: PDP-11-like ISA)Anton Ertl
|  `* Re: PDP-11-like ISAAnton Ertl
|   `* Re: PDP-11-like ISAQuadibloc
|    `* Re: PDP-11-like ISAAnton Ertl
|     +* Re: PDP-11-like ISAQuadibloc
|     |`- Re: PDP-11-like ISAQuadibloc
|     `* Re: PDP-11-like ISAMitchAlsup
|      `- Re: PDP-11-like ISAQuadibloc
`* Re: PDP-11-like ISAEricP
 +* Re: PDP-11-like ISAJimBrakefield
 |`* Re: PDP-11-like ISAMitchAlsup
 | `- Re: PDP-11-like ISAJimBrakefield
 +* Re: PDP-11-like ISAMitchAlsup
 |+* Re: PDP-11-like ISAQuadibloc
 ||+- Re: PDP-11-like ISAMitchAlsup
 ||`- Re: PDP-11-like ISAMitchAlsup
 |`* Re: PDP-11-like ISAEricP
 | +* Re: PDP-11-like ISAMitchAlsup
 | |`* Re: PDP-11-like ISAEricP
 | | `* Re: PDP-11-like ISAMitchAlsup
 | |  +- Re: PDP-11-like ISAJimBrakefield
 | |  +- Re: PDP-11-like ISAThomas Koenig
 | |  `* Re: PDP-11-like ISATerje Mathisen
 | |   +- Re: PDP-11-like ISAQuadibloc
 | |   +- Re: PDP-11-like ISAMitchAlsup
 | |   `* Re: PDP-11-like ISAStefan Monnier
 | |    `- Re: PDP-11-like ISATerje Mathisen
 | `* Re: PDP-11-like ISATerje Mathisen
 |  +* Re: PDP-11-like ISAEricP
 |  |`* Re: PDP-11-like ISATerje Mathisen
 |  | `* Re: PDP-11-like ISAMitchAlsup
 |  |  `* Re: PDP-11-like ISATerje Mathisen
 |  |   `* Re: PDP-11-like ISAEricP
 |  |    `* Re: PDP-11-like ISAMitchAlsup
 |  |     `- Re: PDP-11-like ISAEricP
 |  `* Re: PDP-11-like ISAMitchAlsup
 |   +* Re: PDP-11-like ISAMitchAlsup
 |   |`* Re: PDP-11-like ISAQuadibloc
 |   | `- Re: PDP-11-like ISAMitchAlsup
 |   `* Re: PDP-11-like ISATerje Mathisen
 |    `* Re: PDP-11-like ISAMitchAlsup
 |     +* Re: PDP-11-like ISAQuadibloc
 |     |`* Re: PDP-11-like ISAMitchAlsup
 |     | +* Re: PDP-11-like ISAJimBrakefield
 |     | |`- Re: PDP-11-like ISAMitchAlsup
 |     | `- Re: PDP-11-like ISATerje Mathisen
 |     `* Re: PDP-11-like ISAJames Harris
 |      `* Re: PDP-11-like ISAThomas Koenig
 |       +* Re: PDP-11-like ISAAnton Ertl
 |       |`- Re: PDP-11-like ISAThomas Koenig
 |       +* Re: PDP-11-like ISATerje Mathisen
 |       |`- Re: PDP-11-like ISAIvan Godard
 |       `- Re: PDP-11-like ISAEricP
 `* Re: PDP-11-like ISAQuadibloc
  +- Re: PDP-11-like ISAMitchAlsup
  `* Re: PDP-11-like ISAEricP
   +- Re: PDP-11-like ISABGB
   +* Re: PDP-11-like ISAMitchAlsup
   |`* Re: PDP-11-like ISATerje Mathisen
   `* Re: PDP-11-like ISAQuadibloc

Pages:12345
Re: PDP-11-like ISA

<S%KwI.744926$nn2.705429@fx48.iad>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!ecngs!feeder2.ecngs.de!178.20.174.213.MISMATCH!feeder1.feed.usenet.farm!feed.usenet.farm!peer02.ams4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx48.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: PDP-11-like ISA
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com> <cyowI.31628$8f1.4834@fx23.iad> <37b4cf2c-9ceb-41dd-9cc3-b53ba2326ab6n@googlegroups.com>
In-Reply-To: <37b4cf2c-9ceb-41dd-9cc3-b53ba2326ab6n@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 36
Message-ID: <S%KwI.744926$nn2.705429@fx48.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Fri, 11 Jun 2021 15:08:34 UTC
Date: Fri, 11 Jun 2021 11:08:28 -0400
X-Received-Bytes: 2411
 by: EricP - Fri, 11 Jun 2021 15:08 UTC

Quadibloc wrote:
> On Thursday, June 10, 2021 at 7:35:07 AM UTC-6, EricP wrote:
>
>> PC should be illegal as a destination,
>> Should use branch instructions.
>
> Why not do it the other way around, and save an opcode?
> The hardware could know that loading the PC _is_ a branch,
> and therefore to take the necessary precautions with the
> pipeline when it happens.
>
> John Savard

As I mentioned in my other reply, my concern is in allowing
any integer or logic OP to write into the PC.

To minimize pipeline bubbles, Decode needs to calculate branch addresses
early and forward changes to Fetch ASAP. If that is restricted to only
doing a 64-bit ADD then that can be done in parallel with the decode.
Then if the instruction is a branch or jump, Decode just sends
a pulse to Fetch to let it know it has a new address.

If however you toss in all sundry operations, you'd need a full
ALU inside decode, the ALU operation code for which comes from
Decode and so is serially dependent on Decode.
More expensive ALU serially dependent on decode means longer Decode stage.
Now since no one would do this to Decode, you wind up doing this
in the real ALU which is at least 2 pipeline stages further on.
And since Decode stalls Fetch and Decode as soon as it sees a write to R7,
it therefore bakes the pipeline bubble into your ISA
for functionality that no one needs or would use.

It violates my "Is it necessary?" smell detector.
When optimizing the design and asked "Is there anything left to remove?"
I reply "Yes, this smelly bit over there."

Re: PDP-11-like ISA

<sa02dj$h1b$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: cr88...@gmail.com (BGB)
Newsgroups: comp.arch
Subject: Re: PDP-11-like ISA
Date: Fri, 11 Jun 2021 11:17:43 -0500
Organization: A noiseless patient Spider
Lines: 48
Message-ID: <sa02dj$h1b$1@dont-email.me>
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<cyowI.31628$8f1.4834@fx23.iad>
<37b4cf2c-9ceb-41dd-9cc3-b53ba2326ab6n@googlegroups.com>
<S%KwI.744926$nn2.705429@fx48.iad>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 11 Jun 2021 16:18:59 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="f4ea097e2343231f1f99d201e35ca35c";
logging-data="17451"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19c6PATiK9tUqZZas/1wWqg"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:rru1bknuRdHwyFafT/63nWR0Y54=
In-Reply-To: <S%KwI.744926$nn2.705429@fx48.iad>
Content-Language: en-US
 by: BGB - Fri, 11 Jun 2021 16:17 UTC

On 6/11/2021 10:08 AM, EricP wrote:
> Quadibloc wrote:
>> On Thursday, June 10, 2021 at 7:35:07 AM UTC-6, EricP wrote:
>>
>>> PC should be illegal as a destination, Should use branch instructions.
>>
>> Why not do it the other way around, and save an opcode?
>> The hardware could know that loading the PC _is_ a branch,
>> and therefore to take the necessary precautions with the
>> pipeline when it happens.
>>
>> John Savard
>
> As I mentioned in my other reply, my concern is in allowing
> any integer or logic OP to write into the PC.
>

Most likely option is that any op storing to PC is treated like a
branch, rather than PC behaving like a conventional register.

Something like @PC+ addressing would likely need to be handled as a
special case in the instruction fetch/decode logic, effectively treating
it like a longer instruction.

> To minimize pipeline bubbles, Decode needs to calculate branch addresses
> early and forward changes to Fetch ASAP. If that is restricted to only
> doing a 64-bit ADD then that can be done in parallel with the decode.
> Then if the instruction is a branch or jump, Decode just sends
> a pulse to Fetch to let it know it has a new address.
>
> If however you toss in all sundry operations, you'd need a full
> ALU inside decode, the ALU operation code for which comes from
> Decode and so is serially dependent on Decode.
> More expensive ALU serially dependent on decode means longer Decode stage.
> Now since no one would do this to Decode, you wind up doing this
> in the real ALU which is at least 2 pipeline stages further on.
> And since Decode stalls Fetch and Decode as soon as it sees a write to R7,
> it therefore bakes the pipeline bubble into your ISA
> for functionality that no one needs or would use.
>
> It violates my "Is it necessary?" smell detector.
> When optimizing the design and asked "Is there anything left to remove?"
> I reply "Yes, this smelly bit over there."
>

One can capture PC in the pipeline, and so any value seen by the ALU ops
are (potentially) several cycles out of date relative to fetch/decode.

Re: PDP-11-like ISA

<8948bd52-302f-47eb-a82e-6788228d59bbn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:75c3:: with SMTP id z3mr4720940qtq.308.1623430990418;
Fri, 11 Jun 2021 10:03:10 -0700 (PDT)
X-Received: by 2002:aca:f452:: with SMTP id s79mr3140005oih.84.1623430990209;
Fri, 11 Jun 2021 10:03:10 -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, 11 Jun 2021 10:03:09 -0700 (PDT)
In-Reply-To: <S%KwI.744926$nn2.705429@fx48.iad>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:a87a:6554:33a2:4294;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:a87a:6554:33a2:4294
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<cyowI.31628$8f1.4834@fx23.iad> <37b4cf2c-9ceb-41dd-9cc3-b53ba2326ab6n@googlegroups.com>
<S%KwI.744926$nn2.705429@fx48.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8948bd52-302f-47eb-a82e-6788228d59bbn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 11 Jun 2021 17:03:10 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Fri, 11 Jun 2021 17:03 UTC

On Friday, June 11, 2021 at 10:08:38 AM UTC-5, EricP wrote:

> As I mentioned in my other reply, my concern is in allowing
> any integer or logic OP to write into the PC.
>
> To minimize pipeline bubbles, Decode needs to calculate branch addresses
> early and forward changes to Fetch ASAP. If that is restricted to only
> doing a 64-bit ADD then that can be done in parallel with the decode.
> Then if the instruction is a branch or jump, Decode just sends
> a pulse to Fetch to let it know it has a new address.
<
At this point, at best, you already have a delay slot (bubble) in the pipeline.
But this is about the best one can do until one starts having wider FETCH
and a means to scan forward for branches and perform the ADD and
fetch the target of the branch before one known whether the branch will
be taken or not.
>
> If however you toss in all sundry operations, you'd need a full
> ALU inside decode, the ALU operation code for which comes from
> Decode and so is serially dependent on Decode.
<
Yes, there is a state in the "front end" (Or in DEC parlance:: the I-Box) known
as "Unknown Fetch Address". You can build predictors for these: Jump
Prediction table, Call return Stack, Method Call Table,... so the front end
does not dry up.
<
Even with JMP instructions you have this state:: consider a LD->JMP
that takes a cache miss--you are not in a position to FETCH anything
until the LDed data arrives (without prediction).
<
In effect the "front end" is a calculation unit and the BR/JMP instructions
are delivering operands to this FETCH calculation unit. That FETCH calcu-
lation unit is delivering its results to the DECODE calculation unit,.....
<
All you have done is to make the "front end" calculatiion units IDENTICAL
to the "back end" calculations units {INT, FADD, FMAC, MEM,...} It actually
simplifies and unifies the micro architecture !! The 2 calculation units in
the front end play the same game with the same reservation stations as
the calculation units in the back end !!
<
> More expensive ALU serially dependent on decode means longer Decode stage.
> Now since no one would do this to Decode, you wind up doing this
> in the real ALU which is at least 2 pipeline stages further on.
<
{Quote :: Spock from "Wrath of Kahan", 'Captain, he is thinking 2-dimensionally'}
<
Yes, in order to meet the timing of feeding a branch adder back as the fetch
address, the input to that adder needs to be found in a constant place in the
instruction. I have seen microarchitectures where if the register for the JMP
instruction is on the forwarding path the pipeline eats a bubble due to this
same kind of pipeline timing.
<
But if you consider the front end as 2 calculation units, Fetch waits for a new
address to show up, and then streams instructions to the decode unit. The
decode unit waits for instructions to arrive. Then the branch unit figures out
which stages of the pipeline need to get wiped clean. And the entire machine
has been unified.
<
> And since Decode stalls Fetch and Decode as soon as it sees a write to R7,
> it therefore bakes the pipeline bubble into your ISA
> for functionality that no one needs or would use.
<
The decoder looks for special cases:: in the PDP-11's case, a MOV PC,#immed
transfers control to anywhere in memory, but at least there is a JMP instruction
that does the same thing.
>
> It violates my "Is it necessary?" smell detector.
<
Its lack violates my "can you get it done without adding an instruction" detector.
That is: RISC machines do not have a NEG instruction because one can always
perform a SUB Rd,R0,Rs and get the same result without adding an instruction!
My 66000 can do this with a 5-bit immediate variant ADD Rd,#0,-Rs since I don't
have a register filled with zeros.
<
> When optimizing the design and asked "Is there anything left to remove?"
> I reply "Yes, this smelly bit over there."
<
But if you have to add something to remove something else--have you actually
made forward progress? You are adding a JMP instruction to get rid of the
IP=value which is already present.

Re: PDP-11-like ISA

<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ae9:e407:: with SMTP id q7mr5226238qkc.410.1623436108081;
Fri, 11 Jun 2021 11:28:28 -0700 (PDT)
X-Received: by 2002:aca:ab15:: with SMTP id u21mr14714143oie.155.1623436107813;
Fri, 11 Jun 2021 11:28:27 -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, 11 Jun 2021 11:28:27 -0700 (PDT)
In-Reply-To: <s9vj68$1h6$1@gioia.aioe.org>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:d415:699e:eb4d:2fcb;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:d415:699e:eb4d:2fcb
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Fri, 11 Jun 2021 18:28:28 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Fri, 11 Jun 2021 18:28 UTC

On Friday, June 11, 2021 at 5:59:09 AM UTC-6, chris wrote:

> Opinions may vary, but if you were an assembler programmer back in the
> days when memory was tight and machines were slow, the fact that
> condition codes are set with many instructions, was of great
> benefit.

Oh, I agree that condition codes are a good thing. I'm not too sympathetic
to architectures like the Alpha and RISC-V which completely dispense with
them.

However, if _every_ operate instruction changes the condition codes, you
have to put the conditional branch right after the operate instruction that
affects it. This creates a dependency, and for branches especially that's a
bad thing.

So, the way many RISC instruction sets have done it (the PowerPC taking
it to a more elaborate level) in a high-performance instruction set, I include
a bit to enable or disable setting the condition codes in instructions that can
set them.

That loses a bit of opcode space, but it doesn't lose the advantages you
mention.

John Savard

Re: PDP-11-like ISA

<3bf52e72-97b9-4938-90c0-5997fe9bff6dn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:b6c5:: with SMTP id g188mr2893193qkf.92.1623436221743;
Fri, 11 Jun 2021 11:30:21 -0700 (PDT)
X-Received: by 2002:aca:33d4:: with SMTP id z203mr14572892oiz.51.1623436221580;
Fri, 11 Jun 2021 11:30:21 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!3.eu.feeder.erje.net!feeder.erje.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.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: Fri, 11 Jun 2021 11:30:21 -0700 (PDT)
In-Reply-To: <5543b73f-9c76-4486-b183-f576d6a6848en@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:d415:699e:eb4d:2fcb;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:d415:699e:eb4d:2fcb
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<cyowI.31628$8f1.4834@fx23.iad> <dfbead57-fff5-4ddb-bb18-38105da53f64n@googlegroups.com>
<j0ywI.36041$431.5756@fx39.iad> <s9voen$do7$1@gioia.aioe.org>
<121bdc96-e76a-4b2f-8fec-7465378f51den@googlegroups.com> <5543b73f-9c76-4486-b183-f576d6a6848en@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <3bf52e72-97b9-4938-90c0-5997fe9bff6dn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Fri, 11 Jun 2021 18:30:21 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 1915
 by: Quadibloc - Fri, 11 Jun 2021 18:30 UTC

On Friday, June 11, 2021 at 9:01:05 AM UTC-6, MitchAlsup wrote:

> After studying the situation overnight, I agree with EricP that
> auto-inc/dec deferred is not worthy of inclusion--which leads
> the way to enable base+index addressing.

Getting rid of _one_ addressing mode would presumably only free
up one bit from each mode field; gaining two bits would only let
you have a rather short base register field.

But I'm not surprised your ISA take is much different from mine.

John Savard

Re: PDP-11-like ISA

<9d1f52ce-d18d-48ec-b47f-69cdf52dab12n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:5248:: with SMTP id y8mr5132844qtn.346.1623436509110;
Fri, 11 Jun 2021 11:35:09 -0700 (PDT)
X-Received: by 2002:a05:6830:33ea:: with SMTP id i10mr2618897otu.342.1623436508854;
Fri, 11 Jun 2021 11:35:08 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.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: Fri, 11 Jun 2021 11:35:08 -0700 (PDT)
In-Reply-To: <3bf52e72-97b9-4938-90c0-5997fe9bff6dn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:a87a:6554:33a2:4294;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:a87a:6554:33a2:4294
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<cyowI.31628$8f1.4834@fx23.iad> <dfbead57-fff5-4ddb-bb18-38105da53f64n@googlegroups.com>
<j0ywI.36041$431.5756@fx39.iad> <s9voen$do7$1@gioia.aioe.org>
<121bdc96-e76a-4b2f-8fec-7465378f51den@googlegroups.com> <5543b73f-9c76-4486-b183-f576d6a6848en@googlegroups.com>
<3bf52e72-97b9-4938-90c0-5997fe9bff6dn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9d1f52ce-d18d-48ec-b47f-69cdf52dab12n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 11 Jun 2021 18:35:09 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2354
 by: MitchAlsup - Fri, 11 Jun 2021 18:35 UTC

On Friday, June 11, 2021 at 1:30:22 PM UTC-5, Quadibloc wrote:
> On Friday, June 11, 2021 at 9:01:05 AM UTC-6, MitchAlsup wrote:
>
> > After studying the situation overnight, I agree with EricP that
> > auto-inc/dec deferred is not worthy of inclusion--which leads
> > the way to enable base+index addressing.
<
> Getting rid of _one_ addressing mode would presumably only free
> up one bit from each mode field; gaining two bits would only let
> you have a rather short base register field.
<
It gets rid of @(R++) and @(--R), I count 2.
This leaves me room for [Rb+Ri+disp] and *[Rb+Ri+disp], but perhaps
the second should not make the cut.
>
> But I'm not surprised your ISA take is much different from mine.
<
You mean aside from hating condition codes ?
<
Spend a year writing a compiler and revisit you like of condition codes.
>
> John Savard

Re: PDP-11-like ISA

<b1a2b960-54dc-45eb-939c-b875285e5425n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:4e86:: with SMTP id 6mr5123474qtp.196.1623436575945;
Fri, 11 Jun 2021 11:36:15 -0700 (PDT)
X-Received: by 2002:a05:6830:1d1:: with SMTP id r17mr4346148ota.5.1623436575693;
Fri, 11 Jun 2021 11:36:15 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.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: Fri, 11 Jun 2021 11:36:15 -0700 (PDT)
In-Reply-To: <S%KwI.744926$nn2.705429@fx48.iad>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:d415:699e:eb4d:2fcb;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:d415:699e:eb4d:2fcb
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<cyowI.31628$8f1.4834@fx23.iad> <37b4cf2c-9ceb-41dd-9cc3-b53ba2326ab6n@googlegroups.com>
<S%KwI.744926$nn2.705429@fx48.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b1a2b960-54dc-45eb-939c-b875285e5425n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Fri, 11 Jun 2021 18:36:15 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2091
 by: Quadibloc - Fri, 11 Jun 2021 18:36 UTC

On Friday, June 11, 2021 at 9:08:38 AM UTC-6, EricP wrote:

> As I mentioned in my other reply, my concern is in allowing
> any integer or logic OP to write into the PC.

I certainly agree it's useless for the result of, say, a divide
instruction to be stored in the program counter. But that's
a small price to pay (a waste of opcode space) if the benefits
of making the program counter a register are desired - eliminating
the need for a special instruction to return from a subroutine and
so on.

With base-index addressing, though, just making the displacement
zero lets you return from a subroutine, so I question making the PC
a register because I don't really think there is much in the way of
real benefits - and the price of *losing a register* is a big one,
especially when you only have eight registers.

John Savard

Re: PDP-11-like ISA

<0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:734f:: with SMTP id q15mr5342440qtp.146.1623436944298;
Fri, 11 Jun 2021 11:42:24 -0700 (PDT)
X-Received: by 2002:a9d:4f18:: with SMTP id d24mr4133094otl.16.1623436944089;
Fri, 11 Jun 2021 11:42:24 -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, 11 Jun 2021 11:42:23 -0700 (PDT)
In-Reply-To: <b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:a87a:6554:33a2:4294;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:a87a:6554:33a2:4294
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 11 Jun 2021 18:42:24 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: MitchAlsup - Fri, 11 Jun 2021 18:42 UTC

On Friday, June 11, 2021 at 1:28:30 PM UTC-5, Quadibloc wrote:
> On Friday, June 11, 2021 at 5:59:09 AM UTC-6, chris wrote:
>
> > Opinions may vary, but if you were an assembler programmer back in the
> > days when memory was tight and machines were slow, the fact that
> > condition codes are set with many instructions, was of great
> > benefit.
> Oh, I agree that condition codes are a good thing. I'm not too sympathetic
> to architectures like the Alpha and RISC-V which completely dispense with
> them.
>
> However, if _every_ operate instruction changes the condition codes, you
> have to put the conditional branch right after the operate instruction that
> affects it. This creates a dependency, and for branches especially that's a
> bad thing.
<
In the days condition codes made sense, the machines were using 4-10 cycles
per instruction, so putting the BC immediately after the Operate instruction
was dé rigueur.
<
One of the things we learned in the early RISC days was this one either wanted
no condition codes, or to use a bit to say when the condition codes were going
to be used--in effect CC write elision. Using that bit is bad for entropy.
>
> So, the way many RISC instruction sets have done it (the PowerPC taking
> it to a more elaborate level) in a high-performance instruction set, I include
> a bit to enable or disable setting the condition codes in instructions that can
> set them.
>
> That loses a bit of opcode space, but it doesn't lose the advantages you
> mention.
<
I still fail to see where cc gain anything (with proper branch support), plus
I see many places where a vector of comparand bits is better than a CC
from a CMP instruction (especially with the requirements of IEEE 754).
>
> John Savard

Re: PDP-11-like ISA

<f28c3e82-f93e-4ada-ab4c-8499f02bdd2cn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:cc6:: with SMTP id 189mr5272909qkm.261.1623437133294;
Fri, 11 Jun 2021 11:45:33 -0700 (PDT)
X-Received: by 2002:a9d:704b:: with SMTP id x11mr4042183otj.110.1623437133090;
Fri, 11 Jun 2021 11:45:33 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!feeder1.feed.usenet.farm!feed.usenet.farm!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.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: Fri, 11 Jun 2021 11:45:32 -0700 (PDT)
In-Reply-To: <b1a2b960-54dc-45eb-939c-b875285e5425n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:a87a:6554:33a2:4294;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:a87a:6554:33a2:4294
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<cyowI.31628$8f1.4834@fx23.iad> <37b4cf2c-9ceb-41dd-9cc3-b53ba2326ab6n@googlegroups.com>
<S%KwI.744926$nn2.705429@fx48.iad> <b1a2b960-54dc-45eb-939c-b875285e5425n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f28c3e82-f93e-4ada-ab4c-8499f02bdd2cn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 11 Jun 2021 18:45:33 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2522
 by: MitchAlsup - Fri, 11 Jun 2021 18:45 UTC

On Friday, June 11, 2021 at 1:36:16 PM UTC-5, Quadibloc wrote:
> On Friday, June 11, 2021 at 9:08:38 AM UTC-6, EricP wrote:
>
> > As I mentioned in my other reply, my concern is in allowing
> > any integer or logic OP to write into the PC.
<
> I certainly agree it's useless for the result of, say, a divide
> instruction to be stored in the program counter. But that's
> a small price to pay (a waste of opcode space) if the benefits
> of making the program counter a register are desired - eliminating
> the need for a special instruction to return from a subroutine and
> so on.
<
For example: consider the return address stored on the stack
<
MOV IP,(SP++)
<
And you don't have to waste a register reading RA from the stack before
transferring control. I use this trick in exit EXIT instruction.
>
> With base-index addressing, though, just making the displacement
> zero lets you return from a subroutine, so I question making the PC
> a register because I don't really think there is much in the way of
> real benefits - and the price of *losing a register* is a big one,
> especially when you only have eight registers.
>
> John Savard

Re: PDP-11-like ISA

<sa0ud7$861$1@dont-email.me>

  copy mid

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

  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: PDP-11-like ISA
Date: Fri, 11 Jun 2021 17:16:40 -0700
Organization: A noiseless patient Spider
Lines: 38
Message-ID: <sa0ud7$861$1@dont-email.me>
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com>
<s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com>
<0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 12 Jun 2021 00:16:39 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="5cac2dfaaf3e4fcb1d0a8c19beefa0f9";
logging-data="8385"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19GlzS6SohQiBcW23d/hn8I"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.10.2
Cancel-Lock: sha1:eo9E12oqMCt+QSa66W5r7mScRKo=
In-Reply-To: <0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>
Content-Language: en-US
 by: Ivan Godard - Sat, 12 Jun 2021 00:16 UTC

On 6/11/2021 11:42 AM, MitchAlsup wrote:
> On Friday, June 11, 2021 at 1:28:30 PM UTC-5, Quadibloc wrote:
>> On Friday, June 11, 2021 at 5:59:09 AM UTC-6, chris wrote:
>>
>>> Opinions may vary, but if you were an assembler programmer back in the
>>> days when memory was tight and machines were slow, the fact that
>>> condition codes are set with many instructions, was of great
>>> benefit.
>> Oh, I agree that condition codes are a good thing. I'm not too sympathetic
>> to architectures like the Alpha and RISC-V which completely dispense with
>> them.
>>
>> However, if _every_ operate instruction changes the condition codes, you
>> have to put the conditional branch right after the operate instruction that
>> affects it. This creates a dependency, and for branches especially that's a
>> bad thing.
> <
> In the days condition codes made sense, the machines were using 4-10 cycles
> per instruction, so putting the BC immediately after the Operate instruction
> was dé rigueur.
> <
> One of the things we learned in the early RISC days was this one either wanted
> no condition codes, or to use a bit to say when the condition codes were going
> to be used--in effect CC write elision. Using that bit is bad for entropy.
>>
>> So, the way many RISC instruction sets have done it (the PowerPC taking
>> it to a more elaborate level) in a high-performance instruction set, I include
>> a bit to enable or disable setting the condition codes in instructions that can
>> set them.
>>
>> That loses a bit of opcode space, but it doesn't lose the advantages you
>> mention.
> <
> I still fail to see where cc gain anything (with proper branch support), plus
> I see many places where a vector of comparand bits is better than a CC
> from a CMP instruction (especially with the requirements of IEEE 754).

How often is more than one bit subsequently selected from that bit vector? -

Re: PDP-11-like ISA

<796a59a9-508f-4fec-8b7e-2cd670812584n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:5815:: with SMTP id g21mr6636285qtg.266.1623461069627; Fri, 11 Jun 2021 18:24:29 -0700 (PDT)
X-Received: by 2002:aca:33d4:: with SMTP id z203mr15445030oiz.51.1623461069331; Fri, 11 Jun 2021 18:24:29 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!tr3.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, 11 Jun 2021 18:24:29 -0700 (PDT)
In-Reply-To: <sa0ud7$861$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:a87a:6554:33a2:4294; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:a87a:6554:33a2:4294
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com> <312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org> <b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com> <0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com> <sa0ud7$861$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <796a59a9-508f-4fec-8b7e-2cd670812584n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 12 Jun 2021 01:24:29 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 81
 by: MitchAlsup - Sat, 12 Jun 2021 01:24 UTC

On Friday, June 11, 2021 at 7:16:42 PM UTC-5, Ivan Godard wrote:
> On 6/11/2021 11:42 AM, MitchAlsup wrote:
> > On Friday, June 11, 2021 at 1:28:30 PM UTC-5, Quadibloc wrote:
> >> On Friday, June 11, 2021 at 5:59:09 AM UTC-6, chris wrote:
> >>
> >>> Opinions may vary, but if you were an assembler programmer back in the
> >>> days when memory was tight and machines were slow, the fact that
> >>> condition codes are set with many instructions, was of great
> >>> benefit.
> >> Oh, I agree that condition codes are a good thing. I'm not too sympathetic
> >> to architectures like the Alpha and RISC-V which completely dispense with
> >> them.
> >>
> >> However, if _every_ operate instruction changes the condition codes, you
> >> have to put the conditional branch right after the operate instruction that
> >> affects it. This creates a dependency, and for branches especially that's a
> >> bad thing.
> > <
> > In the days condition codes made sense, the machines were using 4-10 cycles
> > per instruction, so putting the BC immediately after the Operate instruction
> > was dé rigueur.
> > <
> > One of the things we learned in the early RISC days was this one either wanted
> > no condition codes, or to use a bit to say when the condition codes were going
> > to be used--in effect CC write elision. Using that bit is bad for entropy.
> >>
> >> So, the way many RISC instruction sets have done it (the PowerPC taking
> >> it to a more elaborate level) in a high-performance instruction set, I include
> >> a bit to enable or disable setting the condition codes in instructions that can
> >> set them.
> >>
> >> That loses a bit of opcode space, but it doesn't lose the advantages you
> >> mention.
> > <
> > I still fail to see where cc gain anything (with proper branch support), plus
> > I see many places where a vector of comparand bits is better than a CC
> > from a CMP instruction (especially with the requirements of IEEE 754).
<
> How often is more than one bit subsequently selected from that bit vector? -
<
A few percent--not enough to justify.
<
But along with the 2 equality, 4 signed, 4 unsigned relations, you have many more
things one can detect NEGMAX, SPOSMAX, UPOSMAX, 0<x<y, 0<=x<y,0<x<=y,0<=x<=y;
Any Byte 0, Any half 0, and Word 0,on the integer side along with performing a floating
point classify (SNaN, QNaN, -INFINTY, +INFINITY, -normal,-denormal,zero,+denormal
+normal) to make FP functions easier to write.
<
Now while these are not high ticket items the do reduce the complexity of meeting
IEEE 754 2019 defined semantics.
<
In addition, how, with a condition code, are you going to ask "has any memory interference
occurred" when performing ATOMIC events ?
<
You really want to hook "branches" up to almost anything that can cause a control transfer
in your architecture. 2-bit-to-5-bit condition codes are hopeless here.
<

Re: PDP-11-like ISA

<2021Jun12.074028@mips.complang.tuwien.ac.at>

  copy mid

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

  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: PDP-11-like ISA
Date: Sat, 12 Jun 2021 05:40:28 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 17
Message-ID: <2021Jun12.074028@mips.complang.tuwien.ac.at>
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com> <312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org> <b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com>
Injection-Info: reader02.eternal-september.org; posting-host="a232c2bc29b9304708f50255299e6112";
logging-data="24613"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+mbEa9E4yQV1Xz1mriXSCO"
Cancel-Lock: sha1:0dp3uzG8jFD5axh492JBG2FQ4Ao=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Sat, 12 Jun 2021 05:40 UTC

Quadibloc <jsavard@ecn.ab.ca> writes:
>However, if _every_ operate instruction changes the condition codes, you
>have to put the conditional branch right after the operate instruction that
>affects it. This creates a dependency, and for branches especially that's a
>bad thing.

IMO it's a good thing. Then you know that the cc comes from the
previous non-branch instruction, not from some arbitrary far
instruction. You can fuse the conditional branch(es) with the
condition-generating instructions in all cases, and don't have to
reify the cc in a flags register. It certainly makes emulators easier
to implement, and, I expect, also CPUs.

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

Re: PDP-11-like ISA

<02aee909-8b53-4a0b-9f10-83a9b4dfb6dfn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:5995:: with SMTP id e21mr7200857qte.222.1623480631753; Fri, 11 Jun 2021 23:50:31 -0700 (PDT)
X-Received: by 2002:aca:3644:: with SMTP id d65mr15562224oia.122.1623480631524; Fri, 11 Jun 2021 23:50:31 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!tr3.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, 11 Jun 2021 23:50:31 -0700 (PDT)
In-Reply-To: <0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:6102:ae70:eb20:4a88; posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:6102:ae70:eb20:4a88
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com> <312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org> <b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com> <0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <02aee909-8b53-4a0b-9f10-83a9b4dfb6dfn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sat, 12 Jun 2021 06:50:31 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 26
 by: Quadibloc - Sat, 12 Jun 2021 06:50 UTC

On Friday, June 11, 2021 at 12:42:27 PM UTC-6, MitchAlsup wrote:

> I still fail to see where cc gain anything (with proper branch support), plus
> I see many places where a vector of comparand bits is better than a CC
> from a CMP instruction (especially with the requirements of IEEE 754).

You're the expert, so no doubt you're right.

And for vector instructions, yes, they create a vector of mask bits based on
a selected condition, if requested, and don't touch the condition codes, in the ISAs
I've proposed.

But for scalar instructions, I lack the imagination to see how one can do a multi-word
add with carry propagation without using silly instructions that do the add a second
time, branch at the same time as arithmetic, or do other bad things that are wasteful.
Condition codes are the traditional approach people are familar with.

Condition code elision solves... the _serious_ problems with condition codes, so
after I include that, I stop worrying about them. Maybe that's wrong. You've noted
they're bad for compilers.

I suppose you mean certain kinds of compilers - those that first generate pseudocode
which is later converted to code for the target machine. The pseudocode doesn't deal
in awkward constructs like condition codes, so they're not natural for that kind of
compiler architecture.

John Savard

Re: PDP-11-like ISA

<e787dfb2-e588-4ae5-824f-b30d70092debn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:f0ca:: with SMTP id d10mr8307394qvl.27.1623480736936;
Fri, 11 Jun 2021 23:52:16 -0700 (PDT)
X-Received: by 2002:aca:f452:: with SMTP id s79mr4752312oih.84.1623480736740;
Fri, 11 Jun 2021 23:52:16 -0700 (PDT)
Path: i2pn2.org!i2pn.org!news.nntp4.net!usenet.pasdenom.info!usenet-fr.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, 11 Jun 2021 23:52:16 -0700 (PDT)
In-Reply-To: <2021Jun12.074028@mips.complang.tuwien.ac.at>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:6102:ae70:eb20:4a88;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:6102:ae70:eb20:4a88
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com> <2021Jun12.074028@mips.complang.tuwien.ac.at>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <e787dfb2-e588-4ae5-824f-b30d70092debn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sat, 12 Jun 2021 06:52:16 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sat, 12 Jun 2021 06:52 UTC

On Friday, June 11, 2021 at 11:46:01 PM UTC-6, Anton Ertl wrote:

> IMO it's a good thing. Then you know that the cc comes from the
> previous non-branch instruction, not from some arbitrary far
> instruction. You can fuse the conditional branch(es) with the
> condition-generating instructions in all cases, and don't have to
> reify the cc in a flags register. It certainly makes emulators easier
> to implement, and, I expect, also CPUs.

That's a dependency. You want to do other instructions between
the operation and the branch. So it forces you to implement full
OoO for efficiency, which is why RISC architectures didn't do it
that way; they either had a bit to turn off setting the condition
codes, or they dispensed with condition codes entirely.

John Savard

Re: PDP-11-like ISA

<2021Jun12.124430@mips.complang.tuwien.ac.at>

  copy mid

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

  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: PDP-11-like ISA
Date: Sat, 12 Jun 2021 10:44:30 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 68
Message-ID: <2021Jun12.124430@mips.complang.tuwien.ac.at>
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com> <312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org> <b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com> <2021Jun12.074028@mips.complang.tuwien.ac.at> <e787dfb2-e588-4ae5-824f-b30d70092debn@googlegroups.com>
Injection-Info: reader02.eternal-september.org; posting-host="a232c2bc29b9304708f50255299e6112";
logging-data="6881"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19scAE/Nd+i/Npb23E68aeB"
Cancel-Lock: sha1:6Qsqr1DXoihwlCA9WU0NunqfoQo=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Sat, 12 Jun 2021 10:44 UTC

Quadibloc <jsavard@ecn.ab.ca> writes:
>On Friday, June 11, 2021 at 11:46:01 PM UTC-6, Anton Ertl wrote:
>
>> IMO it's a good thing. Then you know that the cc comes from the
>> previous non-branch instruction, not from some arbitrary far
>> instruction. You can fuse the conditional branch(es) with the
>> condition-generating instructions in all cases, and don't have to
>> reify the cc in a flags register. It certainly makes emulators easier
>> to implement, and, I expect, also CPUs.
>
>That's a dependency. You want to do other instructions between
>the operation and the branch.

What makes you think so? The typical code I see has the branch right
after the condition-code-setting instruction. Intel even optimizes
this case by combining e.g., an add and a following conditional branch
into one uop, and I expect that they are not the only ones.

>So it forces you to implement full
>OoO for efficiency, which is why RISC architectures didn't do it
>that way; they either had a bit to turn off setting the condition
>codes, or they dispensed with condition codes entirely.

I don't expect that in-order SPARCs and in-order ARMs run any slower
if you set the condition code in every instruction. Doing in-order
and setting cc on every instruction is easy.

OoO is more interesting: If you manage to treat the
condition-code-generating instruction and the consuming instruction(s)
as a unit, you don't even need to have condition codes in the
microarchitecture. If you don't, you may be able to make do with
fewer physical condition code registers if fewer instructions set
condition codes. Or maybe not: If every instruction overwrites the
previous condition code register, many cc registers need to be
allocated, but they are also released quickly.

My guess is that hardware implementation concerns are not the reason
for making cc-setting optional. Instead, compiler implementation
concerns are: If every instruction is cc-setting, spill-code placement
and placement of move instruction becomes harder; maybe there is also
the hope that the compiler can do better scheduling of code if it can
move non-cc-setting instructions between a cc-setting and a cc-reading
instruction, but I don't think that hope is fulfilled:

Looking for "b." (conditional branches depending on condition codes)
in an Aarch64 file generated from C code and one immediately
preceeding line, I see

189 b.

preceded by

134 cmp
14 cmn (compare negative)
5 tst
1 ccmp
1 subs
1 adds

22 non-cc-setting instructions (ldr, str, mov, add, ror)

If you are as obsessed with code density as our PDP-11 reinventors, do
you really want to waste a bit in many instructions for that?

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

Re: PDP-11-like ISA

<3b94c807-c7e2-452e-834b-e080bd6d77f5n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:1353:: with SMTP id w19mr8348873qtk.303.1623505683310;
Sat, 12 Jun 2021 06:48:03 -0700 (PDT)
X-Received: by 2002:a9d:7518:: with SMTP id r24mr4081915otk.22.1623505683023;
Sat, 12 Jun 2021 06:48:03 -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, 12 Jun 2021 06:48:02 -0700 (PDT)
In-Reply-To: <2021Jun12.124430@mips.complang.tuwien.ac.at>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:bd9f:ae10:8719:3c82;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:bd9f:ae10:8719:3c82
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com> <2021Jun12.074028@mips.complang.tuwien.ac.at>
<e787dfb2-e588-4ae5-824f-b30d70092debn@googlegroups.com> <2021Jun12.124430@mips.complang.tuwien.ac.at>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <3b94c807-c7e2-452e-834b-e080bd6d77f5n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sat, 12 Jun 2021 13:48:03 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sat, 12 Jun 2021 13:48 UTC

On Saturday, June 12, 2021 at 5:40:10 AM UTC-6, Anton Ertl wrote:

> If you are as obsessed with code density as our PDP-11 reinventors, do
> you really want to waste a bit in many instructions for that?

Code density is very important, or, at least, in my designs I've treated it as
such. But it isn't everything. Speed is the most important thing.

And another goal of my design is to have a design that works in a wide
range of implementations; light-weight ones as well as heavyweight
ones. So while the design can benefit from being implemented with
out-of-order executiion, it has to be also suited to an in-order implementation
as well.

Thus, my PDP-11-like instruction set within the Concertina II ISA can only be
used in conjunction with a 32-bit header in every 256-bit block of code; code
density is reduced by this overhead. Only the primary instruction set, composed
only of 32-bit instructions, can be used without a header. The headers all lie
within unused opcode space in that instruction set.

This avoids having different modes for different instruction sets, so that executing
code in the wrong mode isn't available as a potential security flaw. So security also
takes precedence over code density.

John Savard

Re: PDP-11-like ISA

<sa2e41$ppr$1@dont-email.me>

  copy mid

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

  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: PDP-11-like ISA
Date: Sat, 12 Jun 2021 06:50:56 -0700
Organization: A noiseless patient Spider
Lines: 78
Message-ID: <sa2e41$ppr$1@dont-email.me>
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com>
<s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com>
<0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>
<sa0ud7$861$1@dont-email.me>
<796a59a9-508f-4fec-8b7e-2cd670812584n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 12 Jun 2021 13:50:57 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="5cac2dfaaf3e4fcb1d0a8c19beefa0f9";
logging-data="26427"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/xJMwzlcI2O6zaxHF4jDRk"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.10.2
Cancel-Lock: sha1:rPdLeobddB6SCrMBh2WSlJ3+SBw=
In-Reply-To: <796a59a9-508f-4fec-8b7e-2cd670812584n@googlegroups.com>
Content-Language: en-US
 by: Ivan Godard - Sat, 12 Jun 2021 13:50 UTC

On 6/11/2021 6:24 PM, MitchAlsup wrote:
> On Friday, June 11, 2021 at 7:16:42 PM UTC-5, Ivan Godard wrote:
>> On 6/11/2021 11:42 AM, MitchAlsup wrote:
>>> On Friday, June 11, 2021 at 1:28:30 PM UTC-5, Quadibloc wrote:
>>>> On Friday, June 11, 2021 at 5:59:09 AM UTC-6, chris wrote:
>>>>
>>>>> Opinions may vary, but if you were an assembler programmer back in the
>>>>> days when memory was tight and machines were slow, the fact that
>>>>> condition codes are set with many instructions, was of great
>>>>> benefit.
>>>> Oh, I agree that condition codes are a good thing. I'm not too sympathetic
>>>> to architectures like the Alpha and RISC-V which completely dispense with
>>>> them.
>>>>
>>>> However, if _every_ operate instruction changes the condition codes, you
>>>> have to put the conditional branch right after the operate instruction that
>>>> affects it. This creates a dependency, and for branches especially that's a
>>>> bad thing.
>>> <
>>> In the days condition codes made sense, the machines were using 4-10 cycles
>>> per instruction, so putting the BC immediately after the Operate instruction
>>> was dé rigueur.
>>> <
>>> One of the things we learned in the early RISC days was this one either wanted
>>> no condition codes, or to use a bit to say when the condition codes were going
>>> to be used--in effect CC write elision. Using that bit is bad for entropy.
>>>>
>>>> So, the way many RISC instruction sets have done it (the PowerPC taking
>>>> it to a more elaborate level) in a high-performance instruction set, I include
>>>> a bit to enable or disable setting the condition codes in instructions that can
>>>> set them.
>>>>
>>>> That loses a bit of opcode space, but it doesn't lose the advantages you
>>>> mention.
>>> <
>>> I still fail to see where cc gain anything (with proper branch support), plus
>>> I see many places where a vector of comparand bits is better than a CC
>>> from a CMP instruction (especially with the requirements of IEEE 754).
> <
>> How often is more than one bit subsequently selected from that bit vector? -
> <
> A few percent--not enough to justify.
> <
> But along with the 2 equality, 4 signed, 4 unsigned relations, you have many more
> things one can detect NEGMAX, SPOSMAX, UPOSMAX, 0<x<y, 0<=x<y,0<x<=y,0<=x<=y;
> Any Byte 0, Any half 0, and Word 0,on the integer side along with performing a floating
> point classify (SNaN, QNaN, -INFINTY, +INFINITY, -normal,-denormal,zero,+denormal
> +normal) to make FP functions easier to write.
> <
> Now while these are not high ticket items the do reduce the complexity of meeting
> IEEE 754 2019 defined semantics.
> <
> In addition, how, with a condition code, are you going to ask "has any memory interference
> occurred" when performing ATOMIC events ?
> <
> You really want to hook "branches" up to almost anything that can cause a control transfer
> in your architecture. 2-bit-to-5-bit condition codes are hopeless here.
> <
>

Yes, but...

Besides branches, there are predicates, conversion to bool operand, and
SIMD to consider.

If the polycode is only used once, then the entropy cost of <CMP,
select> is the same as that of <select<CMP>> unless, as in traditional
CCs, the CMP is implicit in ordinary ops like MV and ADD. And I think we
agree that implicit CC setting is a bad idea.

So it costs no more to have lots of compare ops than to have one and a
selector. If you can fit them into the encoding, of course; three
quarters of the postings here are about fitting bits into encodings, and
it's such a waste of time because entropy is not the same thing as parse.

I agree that 2-5 bit CCs are hopeless. But why not make that 1-bit? And
if there must be SIMD, one bit per lane, governing only that lane?

Re: PDP-11-like ISA

<eca7697e-7ea3-41a6-b64a-04bb7f8f9a3fn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:7903:: with SMTP id u3mr9019679qkc.329.1623511180412;
Sat, 12 Jun 2021 08:19:40 -0700 (PDT)
X-Received: by 2002:aca:650b:: with SMTP id m11mr5710611oim.99.1623511180198;
Sat, 12 Jun 2021 08:19:40 -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, 12 Jun 2021 08:19:39 -0700 (PDT)
In-Reply-To: <3b94c807-c7e2-452e-834b-e080bd6d77f5n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:bd9f:ae10:8719:3c82;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:bd9f:ae10:8719:3c82
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com> <2021Jun12.074028@mips.complang.tuwien.ac.at>
<e787dfb2-e588-4ae5-824f-b30d70092debn@googlegroups.com> <2021Jun12.124430@mips.complang.tuwien.ac.at>
<3b94c807-c7e2-452e-834b-e080bd6d77f5n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <eca7697e-7ea3-41a6-b64a-04bb7f8f9a3fn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sat, 12 Jun 2021 15:19:40 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sat, 12 Jun 2021 15:19 UTC

On Saturday, June 12, 2021 at 7:48:04 AM UTC-6, Quadibloc wrote:
> On Saturday, June 12, 2021 at 5:40:10 AM UTC-6, Anton Ertl wrote:
>
> > If you are as obsessed with code density as our PDP-11 reinventors, do
> > you really want to waste a bit in many instructions for that?
> Code density is very important, or, at least, in my designs I've treated it as
> such. But it isn't everything. Speed is the most important thing.
>
> And another goal of my design is to have a design that works in a wide
> range of implementations; light-weight ones as well as heavyweight
> ones. So while the design can benefit from being implemented with
> out-of-order executiion, it has to be also suited to an in-order implementation
> as well.
>
> Thus, my PDP-11-like instruction set within the Concertina II ISA can only be
> used in conjunction with a 32-bit header in every 256-bit block of code; code
> density is reduced by this overhead. Only the primary instruction set, composed
> only of 32-bit instructions, can be used without a header. The headers all lie
> within unused opcode space in that instruction set.
>
> This avoids having different modes for different instruction sets, so that executing
> code in the wrong mode isn't available as a potential security flaw. So security also
> takes precedence over code density.

But despite allowing security and speed to take precedence over code density,
my Concertina II design does reflect a fanatical devotion to code density.

At least in one sense. Mitch Alsup would say that real concern over code density
means making the most common instructions the smallest.

While I think I _have_ made the most common instructions small, I've also devoted
attention to making other instructions as small as they could be, even if they are
likely to be rarely used.

The IBM 360 has register-to-register operand instructions that are 16 bits long?
All right, I have those.

The IBM 360 has memory-reference instructions that are 32 bits long, which have
full base-index addressing? All right, I have those.

The IBM 360 has memory to memory string and packed decimal instructions that
are 48 bits long? All right, I have those.

Did I tell you that the IBM 360 has 16 general registers, but I have 32?

Did I tell you that the IBM 360 uses 12-bit displacements for addressing, but I
use 16-bit displacements for addressing?

So essentially my code density goal was to achieve the *impossible*!

I did have to make compromises.

The 16-bit register to register operate instructions... allow one of the registers
to be arbitrarily picked from all 32, and the other is one of the eight in the same
subgroup of eight registers. Also, to make room in opcode space for other
instructions besides 16-bit ones, in most instruction formats, they can't set the
condition codes.

The 32-bit memory-reference instructions are load and store only, and they can
only address aligned operands (the famous SEL 32 trick of using the least significant
bits of the address to indicate the operand type is being used).

The 48-bit string and packed decimal instructions... like those of the 360, aren't
indexed, but in addition use alternate addressing modes with displacements shorter
than 16 bits. (Here, I use the IBM 360 Model 20 as an inspiration, to allow a 15-bit
displacement off of *one* base register, in addition to 12-bit displacements off of
of eight others.)

So while code density is not a goal that overrides everything else, a
lot of attention has been paid to making it possible to use short forms of
many types of instructions. Longer forms are available for the cases
the short forms don't cover, as that's better than using more than one
instruction.

John Savard

Re: PDP-11-like ISA

<af646ced-b439-4ea5-9c2d-010abd963bddn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:e8cd:: with SMTP id m13mr10292496qvo.52.1623511555440;
Sat, 12 Jun 2021 08:25:55 -0700 (PDT)
X-Received: by 2002:a05:6830:33ea:: with SMTP id i10mr5561286otu.342.1623511555159;
Sat, 12 Jun 2021 08:25:55 -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, 12 Jun 2021 08:25:54 -0700 (PDT)
In-Reply-To: <02aee909-8b53-4a0b-9f10-83a9b4dfb6dfn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:bd9f:ae10:8719:3c82;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:bd9f:ae10:8719:3c82
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com> <0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>
<02aee909-8b53-4a0b-9f10-83a9b4dfb6dfn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <af646ced-b439-4ea5-9c2d-010abd963bddn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sat, 12 Jun 2021 15:25:55 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sat, 12 Jun 2021 15:25 UTC

On Saturday, June 12, 2021 at 12:50:32 AM UTC-6, Quadibloc wrote:
> On Friday, June 11, 2021 at 12:42:27 PM UTC-6, MitchAlsup wrote:
>
> > I still fail to see where cc gain anything (with proper branch support), plus
> > I see many places where a vector of comparand bits is better than a CC
> > from a CMP instruction (especially with the requirements of IEEE 754).
> You're the expert, so no doubt you're right.
>
> And for vector instructions, yes, they create a vector of mask bits based on
> a selected condition, if requested, and don't touch the condition codes, in the ISAs
> I've proposed.
>
> But for scalar instructions, I lack the imagination to see how one can do a multi-word
> add with carry propagation without using silly instructions that do the add a second
> time, branch at the same time as arithmetic, or do other bad things that are wasteful.
> Condition codes are the traditional approach people are familar with.
>
> Condition code elision solves... the _serious_ problems with condition codes, so
> after I include that, I stop worrying about them. Maybe that's wrong. You've noted
> they're bad for compilers.
>
> I suppose you mean certain kinds of compilers - those that first generate pseudocode
> which is later converted to code for the target machine. The pseudocode doesn't deal
> in awkward constructs like condition codes, so they're not natural for that kind of
> compiler architecture.

On reflection, suppose I have two instructions which must set the condition code
for a future branch.

And some compiler optimization has put them in the... wrong order.

Now, I include in the Concertina II architecture, in *addition* to jump and branch
instructions which test the condition codes... an instruction that tests the condition
codes, and sets one of the flag bits used for *instruction predication*.

It has occured to me that to achieve - without the baggage that the PowerPC took
on - complete immunity to condition codes restricting what the compiler can do,
there is a missing class of instructions that I need to add to my architecture.

In addition to condition-code based conditional jump instructions... I need jump
instructions that use those flag bits originally envisaged as only for instruction
predication. (Of course, I _could_ predicate a jump instruction, but if I can avoid
the cost and awkwardness of choosing a block header just for that...)

John Savard

Re: PDP-11-like ISA

<sa2pt3$ctq$1@gioia.aioe.org>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!Z/OnjRNZ74xzNAVdC5cKTg.user.gioia.aioe.org.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: PDP-11-like ISA
Date: Sat, 12 Jun 2021 19:12:04 +0200
Organization: Aioe.org NNTP Server
Lines: 37
Message-ID: <sa2pt3$ctq$1@gioia.aioe.org>
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<cyowI.31628$8f1.4834@fx23.iad>
<dfbead57-fff5-4ddb-bb18-38105da53f64n@googlegroups.com>
<j0ywI.36041$431.5756@fx39.iad> <s9voen$do7$1@gioia.aioe.org>
<8iKwI.317313$N_4.28704@fx36.iad>
NNTP-Posting-Host: Z/OnjRNZ74xzNAVdC5cKTg.user.gioia.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-Complaints-To: abuse@aioe.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101
Firefox/60.0 SeaMonkey/2.53.7.1
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Sat, 12 Jun 2021 17:12 UTC

EricP wrote:
> Terje Mathisen wrote:
>> EricP wrote:
>>>
>>> So toss out auto inc/dec address modes and put in two instructions
>>>
>>>    // pdp-11 asm has dest reg on the right
>>>    ADDTY #tiny,reg   Add Tiny
>>>    SUBTY #tiny,reg   Subtract Tiny
>>>
>>> where tiny is 1..7 and 0 means 8. Much more generally useful.
>>
>> I would rather have 0..7 meaning 1..8, since this is trivially
>> achieved by always enabling an incoming carry to the address adder.
>> Special-casing 0 to mean 8 seems like it would need more gates?
>>
>> I.e. cnt3 = !(cnt0 & cnt1 & cnt2) vs always setting carry-in?
>>
>> Terje
>
> 1..7, 0 => 8 allows the 3 lower bits to be used directly
> and a 3-input NOR-3 gate to drive the 4th bit.
>
> 0..7 => 1..8 needs an incrementer, in this case a NOT, 2 XOR's,
> an AND-2 and an AND-3 carry lookaheads.
>
> Its in the decoder and there are other more expensive things there,
> so it wouldn't be on the critical path either way.

The logic is simple either way, but since we're already going to use the
(address) adder, just setting carry_in is effectively free.

Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Re: PDP-11-like ISA

<sa2qem$crs$1@dont-email.me>

  copy mid

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

  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: PDP-11-like ISA
Date: Sat, 12 Jun 2021 10:21:27 -0700
Organization: A noiseless patient Spider
Lines: 49
Message-ID: <sa2qem$crs$1@dont-email.me>
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com>
<s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com>
<0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>
<02aee909-8b53-4a0b-9f10-83a9b4dfb6dfn@googlegroups.com>
<af646ced-b439-4ea5-9c2d-010abd963bddn@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sat, 12 Jun 2021 17:21:26 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="5cac2dfaaf3e4fcb1d0a8c19beefa0f9";
logging-data="13180"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19T5hfPhaIkEVW/ouZuAo3j"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:HA7ucHNyFNFjc6rbosaNUJ6EwRs=
In-Reply-To: <af646ced-b439-4ea5-9c2d-010abd963bddn@googlegroups.com>
Content-Language: en-US
 by: Ivan Godard - Sat, 12 Jun 2021 17:21 UTC

On 6/12/2021 8:25 AM, Quadibloc wrote:
> On Saturday, June 12, 2021 at 12:50:32 AM UTC-6, Quadibloc wrote:
>> On Friday, June 11, 2021 at 12:42:27 PM UTC-6, MitchAlsup wrote:
>>
>>> I still fail to see where cc gain anything (with proper branch support), plus
>>> I see many places where a vector of comparand bits is better than a CC
>>> from a CMP instruction (especially with the requirements of IEEE 754).
>> You're the expert, so no doubt you're right.
>>
>> And for vector instructions, yes, they create a vector of mask bits based on
>> a selected condition, if requested, and don't touch the condition codes, in the ISAs
>> I've proposed.
>>
>> But for scalar instructions, I lack the imagination to see how one can do a multi-word
>> add with carry propagation without using silly instructions that do the add a second
>> time, branch at the same time as arithmetic, or do other bad things that are wasteful.
>> Condition codes are the traditional approach people are familar with.
>>
>> Condition code elision solves... the _serious_ problems with condition codes, so
>> after I include that, I stop worrying about them. Maybe that's wrong. You've noted
>> they're bad for compilers.
>>
>> I suppose you mean certain kinds of compilers - those that first generate pseudocode
>> which is later converted to code for the target machine. The pseudocode doesn't deal
>> in awkward constructs like condition codes, so they're not natural for that kind of
>> compiler architecture.
>
> On reflection, suppose I have two instructions which must set the condition code
> for a future branch.
>
> And some compiler optimization has put them in the... wrong order.
>
> Now, I include in the Concertina II architecture, in *addition* to jump and branch
> instructions which test the condition codes... an instruction that tests the condition
> codes, and sets one of the flag bits used for *instruction predication*.
>
> It has occured to me that to achieve - without the baggage that the PowerPC took
> on - complete immunity to condition codes restricting what the compiler can do,
> there is a missing class of instructions that I need to add to my architecture.
>
> In addition to condition-code based conditional jump instructions... I need jump
> instructions that use those flag bits originally envisaged as only for instruction
> predication. (Of course, I _could_ predicate a jump instruction, but if I can avoid
> the cost and awkwardness of choosing a block header just for that...)
>
> John Savard
>

Or just set the flags directly - why have CCs?

Re: PDP-11-like ISA

<9e1ff795-c0b0-4ea3-bb2b-d25b60331342n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:4d0:: with SMTP id 16mr9416528qks.496.1623518974371;
Sat, 12 Jun 2021 10:29:34 -0700 (PDT)
X-Received: by 2002:aca:5755:: with SMTP id l82mr17828898oib.44.1623518974145;
Sat, 12 Jun 2021 10:29:34 -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, 12 Jun 2021 10:29:33 -0700 (PDT)
In-Reply-To: <02aee909-8b53-4a0b-9f10-83a9b4dfb6dfn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:854:b35b:9aab:ce33;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:854:b35b:9aab:ce33
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com> <0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com>
<02aee909-8b53-4a0b-9f10-83a9b4dfb6dfn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9e1ff795-c0b0-4ea3-bb2b-d25b60331342n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 12 Jun 2021 17:29:34 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Sat, 12 Jun 2021 17:29 UTC

On Saturday, June 12, 2021 at 1:50:32 AM UTC-5, Quadibloc wrote:
> On Friday, June 11, 2021 at 12:42:27 PM UTC-6, MitchAlsup wrote:
>
> > I still fail to see where cc gain anything (with proper branch support), plus
> > I see many places where a vector of comparand bits is better than a CC
> > from a CMP instruction (especially with the requirements of IEEE 754).
> You're the expert, so no doubt you're right.
>
> And for vector instructions, yes, they create a vector of mask bits based on
> a selected condition, if requested, and don't touch the condition codes, in the ISAs
> I've proposed.
>
> But for scalar instructions, I lack the imagination to see how one can do a multi-word
> add with carry propagation without using silly instructions that do the add a second
> time, branch at the same time as arithmetic, or do other bad things that are wasteful.
> Condition codes are the traditional approach people are familar with.
<
I agree with you that your familiarity is blinding your vision.
<
However, I do have to admit it took me 35 years to figure out CARRY as the solution
to multiprecision arithmetic of all kind {ADD, SUB, MUL, DIV, SHIFTs, Floating Point.}
>
> Condition code elision solves... the _serious_ problems with condition codes, so
> after I include that, I stop worrying about them. Maybe that's wrong. You've noted
> they're bad for compilers.
<
They are not "so bad" for compilers, but they do not match the semantics high level
languages had defined for flow control (if-then-else, do-while, and for}
>
> I suppose you mean certain kinds of compilers - those that first generate pseudocode
> which is later converted to code for the target machine. The pseudocode doesn't deal
> in awkward constructs like condition codes, so they're not natural for that kind of
> compiler architecture.
<
YEs.
>
> John Savard

Re: PDP-11-like ISA

<d1dbabf3-2b6d-47ac-b9b7-5b191b87087dn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ad4:4447:: with SMTP id l7mr10713656qvt.36.1623519379109;
Sat, 12 Jun 2021 10:36:19 -0700 (PDT)
X-Received: by 2002:a9d:7d05:: with SMTP id v5mr6372948otn.240.1623519378853;
Sat, 12 Jun 2021 10:36:18 -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, 12 Jun 2021 10:36:18 -0700 (PDT)
In-Reply-To: <2021Jun12.124430@mips.complang.tuwien.ac.at>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:854:b35b:9aab:ce33;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:854:b35b:9aab:ce33
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<312431da-80d8-4e85-8e8c-ebc814ab099en@googlegroups.com> <s9vj68$1h6$1@gioia.aioe.org>
<b030e686-69fe-4563-8949-0ccce68a9766n@googlegroups.com> <2021Jun12.074028@mips.complang.tuwien.ac.at>
<e787dfb2-e588-4ae5-824f-b30d70092debn@googlegroups.com> <2021Jun12.124430@mips.complang.tuwien.ac.at>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d1dbabf3-2b6d-47ac-b9b7-5b191b87087dn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 12 Jun 2021 17:36:19 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Sat, 12 Jun 2021 17:36 UTC

On Saturday, June 12, 2021 at 6:40:10 AM UTC-5, Anton Ertl wrote:
> Quadibloc <jsa...@ecn.ab.ca> writes:
> >On Friday, June 11, 2021 at 11:46:01 PM UTC-6, Anton Ertl wrote:
> >
> >> IMO it's a good thing. Then you know that the cc comes from the
> >> previous non-branch instruction, not from some arbitrary far
> >> instruction. You can fuse the conditional branch(es) with the
> >> condition-generating instructions in all cases, and don't have to
> >> reify the cc in a flags register. It certainly makes emulators easier
> >> to implement, and, I expect, also CPUs.
> >
> >That's a dependency. You want to do other instructions between
> >the operation and the branch.
<
> What makes you think so? The typical code I see has the branch right
> after the condition-code-setting instruction. Intel even optimizes
> this case by combining e.g., an add and a following conditional branch
> into one uop, and I expect that they are not the only ones.
> >So it forces you to implement full
<
Code scheduling is really for narrow in order machines.
<
GBOoO machines are better off with natural scheduling and letting
HW solve the register and memory ordering problems.
<
Quadibloc's though train is stuck in the late 1980s.
<
> >OoO for efficiency, which is why RISC architectures didn't do it
> >that way; they either had a bit to turn off setting the condition
> >codes, or they dispensed with condition codes entirely.
<
> I don't expect that in-order SPARCs and in-order ARMs run any slower
> if you set the condition code in every instruction. Doing in-order
> and setting cc on every instruction is easy.
>
> OoO is more interesting: If you manage to treat the
> condition-code-generating instruction and the consuming instruction(s)
> as a unit, you don't even need to have condition codes in the
> microarchitecture.
<
This is an important point Quadibloc, the CMP and branch get fused
and performed as if one, then there is no intermediate state required.
<
> If you don't, you may be able to make do with
> fewer physical condition code registers if fewer instructions set
> condition codes. Or maybe not: If every instruction overwrites the
> previous condition code register, many cc registers need to be
> allocated, but they are also released quickly.
>
> My guess is that hardware implementation concerns are not the reason
> for making cc-setting optional.
<
Once you give up on code scheduling, optionally setting CCs become
irrelvant.
<
> Instead, compiler implementation
> concerns are: If every instruction is cc-setting, spill-code placement
> and placement of move instruction becomes harder; maybe there is also
> the hope that the compiler can do better scheduling of code if it can
> move non-cc-setting instructions between a cc-setting and a cc-reading
> instruction, but I don't think that hope is fulfilled:
>
> Looking for "b." (conditional branches depending on condition codes)
> in an Aarch64 file generated from C code and one immediately
> preceeding line, I see
>
> 189 b.
>
> preceded by
>
> 134 cmp
> 14 cmn (compare negative)
> 5 tst
> 1 ccmp
> 1 subs
> 1 adds
>
> 22 non-cc-setting instructions (ldr, str, mov, add, ror)
>
> If you are as obsessed with code density as our PDP-11 reinventors, do
> you really want to waste a bit in many instructions for that?
<
Thank you for making my point.
<
> - anton
> --
> 'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
> Mitch Alsup, <c17fcd89-f024-40e7...@googlegroups.com>

Re: PDP-11-like ISA

<b95bb897-d9a0-4550-8292-0a2248c9cb6an@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:7d7:: with SMTP id 206mr9319029qkh.3.1623519477513;
Sat, 12 Jun 2021 10:37:57 -0700 (PDT)
X-Received: by 2002:aca:4703:: with SMTP id u3mr6058211oia.37.1623519477268;
Sat, 12 Jun 2021 10:37: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: Sat, 12 Jun 2021 10:37:57 -0700 (PDT)
In-Reply-To: <sa2pt3$ctq$1@gioia.aioe.org>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:854:b35b:9aab:ce33;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:854:b35b:9aab:ce33
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<cyowI.31628$8f1.4834@fx23.iad> <dfbead57-fff5-4ddb-bb18-38105da53f64n@googlegroups.com>
<j0ywI.36041$431.5756@fx39.iad> <s9voen$do7$1@gioia.aioe.org>
<8iKwI.317313$N_4.28704@fx36.iad> <sa2pt3$ctq$1@gioia.aioe.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b95bb897-d9a0-4550-8292-0a2248c9cb6an@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 12 Jun 2021 17:37:57 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Sat, 12 Jun 2021 17:37 UTC

On Saturday, June 12, 2021 at 12:12:07 PM UTC-5, Terje Mathisen wrote:
> EricP wrote:
> > Terje Mathisen wrote:
> >> EricP wrote:
> >>>
> >>> So toss out auto inc/dec address modes and put in two instructions
> >>>
> >>> // pdp-11 asm has dest reg on the right
> >>> ADDTY #tiny,reg Add Tiny
> >>> SUBTY #tiny,reg Subtract Tiny
> >>>
> >>> where tiny is 1..7 and 0 means 8. Much more generally useful.
> >>
> >> I would rather have 0..7 meaning 1..8, since this is trivially
> >> achieved by always enabling an incoming carry to the address adder.
> >> Special-casing 0 to mean 8 seems like it would need more gates?
> >>
> >> I.e. cnt3 = !(cnt0 & cnt1 & cnt2) vs always setting carry-in?
> >>
> >> Terje
> >
> > 1..7, 0 => 8 allows the 3 lower bits to be used directly
> > and a 3-input NOR-3 gate to drive the 4th bit.
> >
> > 0..7 => 1..8 needs an incrementer, in this case a NOT, 2 XOR's,
> > an AND-2 and an AND-3 carry lookaheads.
> >
> > Its in the decoder and there are other more expensive things there,
> > so it wouldn't be on the critical path either way.
<
> The logic is simple either way, but since we're already going to use the
> (address) adder, just setting carry_in is effectively free.
<
What makes you think the AGEN adder has a carry in ??
<
> Terje
>
> --
> - <Terje.Mathisen at tmsw.no>
> "almost all programming can be viewed as an exercise in caching"

Re: PDP-11-like ISA

<sa2rvu$17ul$2@gioia.aioe.org>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!Z/OnjRNZ74xzNAVdC5cKTg.user.gioia.aioe.org.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: PDP-11-like ISA
Date: Sat, 12 Jun 2021 19:47:43 +0200
Organization: Aioe.org NNTP Server
Lines: 31
Message-ID: <sa2rvu$17ul$2@gioia.aioe.org>
References: <548dc91d-831f-4dd7-a947-8fd7974695e3n@googlegroups.com>
<cyowI.31628$8f1.4834@fx23.iad>
<dfbead57-fff5-4ddb-bb18-38105da53f64n@googlegroups.com>
<j0ywI.36041$431.5756@fx39.iad> <s9voen$do7$1@gioia.aioe.org>
<121bdc96-e76a-4b2f-8fec-7465378f51den@googlegroups.com>
NNTP-Posting-Host: Z/OnjRNZ74xzNAVdC5cKTg.user.gioia.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Complaints-To: abuse@aioe.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101
Firefox/60.0 SeaMonkey/2.53.7.1
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Sat, 12 Jun 2021 17:47 UTC

MitchAlsup wrote:
> On Friday, June 11, 2021 at 8:28:59 AM UTC-5, Terje Mathisen wrote:
>> EricP wrote:
>>> So toss out auto inc/dec address modes and put in two instructions
>>>
>>> // pdp-11 asm has dest reg on the right
>>> ADDTY #tiny,reg Add Tiny
>>> SUBTY #tiny,reg Subtract Tiny
>>>
>>> where tiny is 1..7 and 0 means 8. Much more generally useful.
>> I would rather have 0..7 meaning 1..8, since this is trivially achieved
>> by always enabling an incoming carry to the address adder.
>> Special-casing 0 to mean 8 seems like it would need more gates?
>>
>> I.e. cnt3 = !(cnt0 & cnt1 & cnt2) vs always setting carry-in?
> <
> cnt3 is 1-gate delay.
> carry-in is 4-gate delays.

Wow!

So you are saying that simply forcing carry-in takes 4 extra gate
delays, on top of routing the three address bits, and also merging them
with the generated cnt3 bit?

Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Pages:12345
server_pubkey.txt

rocksolid light 0.9.8
clearnet tor