Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

White dwarf seeks red giant for binary relationship.


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

<%Z6xI.39198$N%.38953@fx05.iad>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx05.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> <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> <9e1ff795-c0b0-4ea3-bb2b-d25b60331342n@googlegroups.com>
In-Reply-To: <9e1ff795-c0b0-4ea3-bb2b-d25b60331342n@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 8
Message-ID: <%Z6xI.39198$N%.38953@fx05.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Sat, 12 Jun 2021 18:24:59 UTC
Date: Sat, 12 Jun 2021 14:24:29 -0400
X-Received-Bytes: 1284
 by: EricP - Sat, 12 Jun 2021 18:24 UTC

MitchAlsup wrote:
> <
> 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.}

And, IIRC, a walk to the pub.

Re: PDP-11-like ISA

<uQ7xI.28973$J21.10021@fx40.iad>

  copy mid

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

  copy link   Newsgroups: comp.arch
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!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.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: PDP-11-like ISA
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> <ac0da74d-b52b-4b52-b25e-cf1070ce5e04n@googlegroups.com>
In-Reply-To: <ac0da74d-b52b-4b52-b25e-cf1070ce5e04n@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 90
Message-ID: <uQ7xI.28973$J21.10021@fx40.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Sat, 12 Jun 2021 19:23:06 UTC
Date: Sat, 12 Jun 2021 15:22:32 -0400
X-Received-Bytes: 4732
 by: EricP - Sat, 12 Jun 2021 19:22 UTC

MitchAlsup wrote:
> On Thursday, June 10, 2021 at 7:21:39 PM UTC-5, EricP wrote:
>> // pdp-11 asm has dest reg on the right
>> DIV r3,r7
>> AND #123,r7
> <
> Its my architecture, I can position the fields and write the ASM in the
> direction I am accustomed. You may do the same with yours.

I was warning other casual readers that, as per your prior statement
to use PDP-11 assembler writing style, the dest operand is on the right.

>> Only branch, bsr, jmp, jsr, instructions should be allowed to modify R7.
>> If you really, really want to do a DIV into R7 then do
>>
>> BAL #0,r2 // copy r7 -> r2
>> DIV r3,r2
>> JMP r2
> <
> This is an argument that IP should not be part of the GPRs, not that
> existing instructions should not be used.

The conclusion I came to is that IP is special because the PC-relative
address mode implies the register and needs no register field,
but does require an offset (2, 4 or 8 bytes, sign extended)
and IP-base-indexed has optional immediate offsets.

Other modes that require no register field are
- immediate data (2, 4, 8 bytes with data type given by the opcode)
- immediate absolute address, Abs32 sign extended to 64, and Abs64

That removes the IP from the register set and moves all the above mode
specifier bits into the opcode, where they can be optimally assigned.

So either an instruction set is orthogonal and contains redundant or
erroneous combinations (e.g. immediate data cannot be a destination),
or one deals with it in the opcode bits, e.g. ADD and ADDI Add Immediate.
I prefer to deal with it in the opcodes.

>> Or special case R7 similar to how My 66000 handles R0.
> <
> I have been thinking about this, back on this topic a bit later.

Having IP in the register set does make IP-relative and IP-base-indexed
fit in with other registers

> <
> My current train of thought is that when one used AM=11x (6 or 7) and R0
> then the 16-bit immediate is used too access 1K-8K of registers, the lower
> order 3-bits is used to denote size and signedness, and depending on a lot
> of things, the upper order bits could be used for other purposes {saturation
> SIMD,Decimal,...}

This reminds me of the TMS 9900 with its Workspace Pointer register.

> <
> I am trying for something different, having 8 registers that control stuff,
> and having a big register file (1K-8K 64-bit entries) that can be accessed
> in one cycle (sort of like a smaller register file), but:: The GPR file only
> accesses 64-bit things, the large file can access things based on a size.
> So::
> disp(r0):SB
> says that the data in R[disp>>3] contains a signed byte
> @disp(R0):UH
> says the 64-bit data in R[disp>>3] points at an unsigned Halfword anywhere in
> memory.
> I will have to figure out some better ASM mnemonics.
> <
> But this is not some kind of RISC machine with a small and large pair of
> register files, it is an address mode machine; and accessing the large
> file eats instruction stream area.

Yes, I was thinking about that overnight, whether operand size is
operand specific or applies to all operands in the instruction.

The problem is in real code, for integers at least, variables often are
different sizes and depend on the promote/demote conversion rules,
and that requires a register to temporarily hold converted values.
Load with optional convert, operate, store with optional convert.

So [mem]-[mem] looks like each operand has to have its own size and type.

Then it needs rule on how things convert when the operand sizes mismatch,
promote on load (integer sign/zero extend),
demote on store (integer wrap/trap/sat).
And floats fp8, fp16, fp32, fp64.

This starts to look less likely to fit into a 16-bit instruction word.

Re: PDP-11-like ISA

<d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ae9:e407:: with SMTP id q7mr10161936qkc.410.1623531038014;
Sat, 12 Jun 2021 13:50:38 -0700 (PDT)
X-Received: by 2002:aca:f452:: with SMTP id s79mr6383434oih.84.1623531037790;
Sat, 12 Jun 2021 13:50:37 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!border2.nntp.ams1.giganews.com!nntp.giganews.com!feeder1.cambriumusenet.nl!feed.tweak.nl!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 13:50:37 -0700 (PDT)
In-Reply-To: <sa2rvu$17ul$2@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>
<121bdc96-e76a-4b2f-8fec-7465378f51den@googlegroups.com> <sa2rvu$17ul$2@gioia.aioe.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 12 Jun 2021 20:50:38 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 33
 by: MitchAlsup - Sat, 12 Jun 2021 20:50 UTC

On Saturday, June 12, 2021 at 12:47:46 PM UTC-5, Terje Mathisen wrote:
> 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?
<
Yes, it is sad that SW people see AND and ADD as the same latency.
<
> Terje
>
>
> --
> - <Terje.Mathisen at tmsw.no>
> "almost all programming can be viewed as an exercise in caching"

Re: PDP-11-like ISA

<cb544d5e-ba61-46b8-bbcb-9dbf82e798bfn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:5f4e:: with SMTP id y14mr9848988qta.253.1623531070630;
Sat, 12 Jun 2021 13:51:10 -0700 (PDT)
X-Received: by 2002:aca:fd43:: with SMTP id b64mr6435302oii.0.1623531070293;
Sat, 12 Jun 2021 13:51:10 -0700 (PDT)
Path: i2pn2.org!i2pn.org!paganini.bofh.team!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: Sat, 12 Jun 2021 13:51:10 -0700 (PDT)
In-Reply-To: <%Z6xI.39198$N%.38953@fx05.iad>
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> <9e1ff795-c0b0-4ea3-bb2b-d25b60331342n@googlegroups.com>
<%Z6xI.39198$N%.38953@fx05.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <cb544d5e-ba61-46b8-bbcb-9dbf82e798bfn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 12 Jun 2021 20:51:10 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Sat, 12 Jun 2021 20:51 UTC

On Saturday, June 12, 2021 at 1:25:02 PM UTC-5, EricP wrote:
> MitchAlsup wrote:
> > <
> > 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.}
<
> And, IIRC, a walk to the pub.
<
Your mind is as sharp as ever,
And thanks for reminding me of that!

Re: PDP-11-like ISA

<8b9ed2b1-9aca-43d4-bc95-b199285c9932n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:aa47:: with SMTP id e7mr11330923qvb.41.1623532445807;
Sat, 12 Jun 2021 14:14:05 -0700 (PDT)
X-Received: by 2002:aca:fd44:: with SMTP id b65mr17873165oii.175.1623532445600;
Sat, 12 Jun 2021 14:14:05 -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 14:14:05 -0700 (PDT)
In-Reply-To: <uQ7xI.28973$J21.10021@fx40.iad>
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> <ac0da74d-b52b-4b52-b25e-cf1070ce5e04n@googlegroups.com>
<uQ7xI.28973$J21.10021@fx40.iad>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8b9ed2b1-9aca-43d4-bc95-b199285c9932n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sat, 12 Jun 2021 21:14:05 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: MitchAlsup - Sat, 12 Jun 2021 21:14 UTC

On Saturday, June 12, 2021 at 2:23:09 PM UTC-5, EricP wrote:
> MitchAlsup wrote:
> > On Thursday, June 10, 2021 at 7:21:39 PM UTC-5, EricP wrote:
> >> // pdp-11 asm has dest reg on the right
> >> DIV r3,r7
> >> AND #123,r7
> > <
> > Its my architecture, I can position the fields and write the ASM in the
> > direction I am accustomed. You may do the same with yours.
>
> I was warning other casual readers that, as per your prior statement
> to use PDP-11 assembler writing style, the dest operand is on the right.
<
Fair enough.
>
> >> Only branch, bsr, jmp, jsr, instructions should be allowed to modify R7.
> >> If you really, really want to do a DIV into R7 then do
> >>
> >> BAL #0,r2 // copy r7 -> r2
> >> DIV r3,r2
> >> JMP r2
> > <
> > This is an argument that IP should not be part of the GPRs, not that
> > existing instructions should not be used.
>
> The conclusion I came to is that IP is special because the PC-relative
> address mode implies the register and needs no register field,
> but does require an offset (2, 4 or 8 bytes, sign extended)
> and IP-base-indexed has optional immediate offsets.
<
I agree that IP as part of the register file seems to have died off, for
all sorts of reasons. But I am exploring the utility space of address
modes for the first time in 35 years, bear with my meanderings. This
whole thing may come to nothing.
>
> Other modes that require no register field are
> - immediate data (2, 4, 8 bytes with data type given by the opcode)
> - immediate absolute address, Abs32 sign extended to 64, and Abs64
<
On the other hand, having IP as part of the register file, means things like
<
d = 37<<j;
*p = 19;
<
are straightforward.
>
> That removes the IP from the register set and moves all the above mode
> specifier bits into the opcode, where they can be optimally assigned.
<
I am currently playing with the notion where there is a small register file
(8 entries) which is really fast, and a larger register file (64-256 entries)
which is 1 cycle access, and then memory which is 3-4 cycles of access
and supports sizes other than 64-bits. {The first 8 entries of the large
file is the small 8 register file.}
>
> So either an instruction set is orthogonal and contains redundant or
> erroneous combinations (e.g. immediate data cannot be a destination),
> or one deals with it in the opcode bits, e.g. ADD and ADDI Add Immediate.
> I prefer to deal with it in the opcodes.
<
Your architecture, your choice.
>
> >> Or special case R7 similar to how My 66000 handles R0.
> > <
> > I have been thinking about this, back on this topic a bit later.
>
> Having IP in the register set does make IP-relative and IP-base-indexed
> fit in with other registers
>
> > <
> > My current train of thought is that when one used AM=11x (6 or 7) and R0
> > then the 16-bit immediate is used too access 1K-8K of registers, the lower
> > order 3-bits is used to denote size and signedness, and depending on a lot
> > of things, the upper order bits could be used for other purposes {saturation
> > SIMD,Decimal,...}
>
> This reminds me of the TMS 9900 with its Workspace Pointer register.
<
It is along those lines.
>
> > <
> > I am trying for something different, having 8 registers that control stuff,
> > and having a big register file (1K-8K 64-bit entries) that can be accessed
> > in one cycle (sort of like a smaller register file), but:: The GPR file only
> > accesses 64-bit things, the large file can access things based on a size.
> > So::
> > disp(r0):SB
> > says that the data in R[disp>>3] contains a signed byte
> > @disp(R0):UH
> > says the 64-bit data in R[disp>>3] points at an unsigned Halfword anywhere in
> > memory.
> > I will have to figure out some better ASM mnemonics.
> > <
> > But this is not some kind of RISC machine with a small and large pair of
> > register files, it is an address mode machine; and accessing the large
> > file eats instruction stream area.
>
> Yes, I was thinking about that overnight, whether operand size is
> operand specific or applies to all operands in the instruction.
<
Current thought train is that size (and signedness) applies to operands
and that after a calculation should the result not fit in the destination
size, OVERFLOW is raised.
<
I have worked out an encoding extension when I can fit 3 address modes
into a 32-bit instruction and have 128 instructions of this flavor; this also
allows for 16 instructions with 3 address mode operands and 1 address
mode result.
<
Upon EricP's suggestion, I have dropped the deferred address modes
in favor of {reg, [reg],[reg++],[--reg],[rp->0[ri]],[rp->disp16[ri]],[rp->disp32[ri]],
and [rp->disp48[ri]]}. Along with the large register file (64-256 entries)
we should not need an excessive amount of memory traffic.
>
> The problem is in real code, for integers at least, variables often are
> different sizes and depend on the promote/demote conversion rules,
> and that requires a register to temporarily hold converted values.
> Load with optional convert, operate, store with optional convert.
>
> So [mem]-[mem] looks like each operand has to have its own size and type.
<
Size and some other indicator.
For Integers, the indicator is signedness
For Float it has not been worked out, yet.
>
> Then it needs rule on how things convert when the operand sizes mismatch,
> promote on load (integer sign/zero extend),
> demote on store (integer wrap/trap/sat).
> And floats fp8, fp16, fp32, fp64.
<
Current thought train for integers:: we have 8 flavors {Signed, Unsigned}×
{byte, half, word, double}. Operands are accessed and converted to 64-bits.
The calculation is performed (to extra precision if required). Then the result
is fitted to the destination size and if significance is lost->OVERFLOW is raised.
>
> This starts to look less likely to fit into a 16-bit instruction word.
<
It starts looking less and less like a DPD-11, that is for sure.

Re: PDP-11-like ISA

<f844650f-411a-42ab-b7e7-1ea379b3c8ecn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:ba0c:: with SMTP id w12mr11786103qvf.41.1623541019810;
Sat, 12 Jun 2021 16:36:59 -0700 (PDT)
X-Received: by 2002:a05:6808:195:: with SMTP id w21mr6604984oic.7.1623541019456;
Sat, 12 Jun 2021 16:36:59 -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 16:36:59 -0700 (PDT)
In-Reply-To: <8b9ed2b1-9aca-43d4-bc95-b199285c9932n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:a0d0:9f90:212d:499b:2a81:1aee;
posting-account=AoizIQoAAADa7kQDpB0DAj2jwddxXUgl
NNTP-Posting-Host: 2600:1700:a0d0:9f90:212d:499b:2a81:1aee
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> <ac0da74d-b52b-4b52-b25e-cf1070ce5e04n@googlegroups.com>
<uQ7xI.28973$J21.10021@fx40.iad> <8b9ed2b1-9aca-43d4-bc95-b199285c9932n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f844650f-411a-42ab-b7e7-1ea379b3c8ecn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jim.brak...@ieee.org (JimBrakefield)
Injection-Date: Sat, 12 Jun 2021 23:36:59 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: JimBrakefield - Sat, 12 Jun 2021 23:36 UTC

On Saturday, June 12, 2021 at 4:14:07 PM UTC-5, MitchAlsup wrote:
> On Saturday, June 12, 2021 at 2:23:09 PM UTC-5, EricP wrote:
> > MitchAlsup wrote:
> > > On Thursday, June 10, 2021 at 7:21:39 PM UTC-5, EricP wrote:
> > >> // pdp-11 asm has dest reg on the right
> > >> DIV r3,r7
> > >> AND #123,r7
> > > <
> > > Its my architecture, I can position the fields and write the ASM in the
> > > direction I am accustomed. You may do the same with yours.
> >
> > I was warning other casual readers that, as per your prior statement
> > to use PDP-11 assembler writing style, the dest operand is on the right..
> <
> Fair enough.
> >
> > >> Only branch, bsr, jmp, jsr, instructions should be allowed to modify R7.
> > >> If you really, really want to do a DIV into R7 then do
> > >>
> > >> BAL #0,r2 // copy r7 -> r2
> > >> DIV r3,r2
> > >> JMP r2
> > > <
> > > This is an argument that IP should not be part of the GPRs, not that
> > > existing instructions should not be used.
> >
> > The conclusion I came to is that IP is special because the PC-relative
> > address mode implies the register and needs no register field,
> > but does require an offset (2, 4 or 8 bytes, sign extended)
> > and IP-base-indexed has optional immediate offsets.
> <
> I agree that IP as part of the register file seems to have died off, for
> all sorts of reasons. But I am exploring the utility space of address
> modes for the first time in 35 years, bear with my meanderings. This
> whole thing may come to nothing.
> >
> > Other modes that require no register field are
> > - immediate data (2, 4, 8 bytes with data type given by the opcode)
> > - immediate absolute address, Abs32 sign extended to 64, and Abs64
> <
> On the other hand, having IP as part of the register file, means things like
> <
> d = 37<<j;
> *p = 19;
> <
> are straightforward.
> >
> > That removes the IP from the register set and moves all the above mode
> > specifier bits into the opcode, where they can be optimally assigned.
> <
> I am currently playing with the notion where there is a small register file
> (8 entries) which is really fast, and a larger register file (64-256 entries)
> which is 1 cycle access, and then memory which is 3-4 cycles of access
> and supports sizes other than 64-bits. {The first 8 entries of the large
> file is the small 8 register file.}
> >
> > So either an instruction set is orthogonal and contains redundant or
> > erroneous combinations (e.g. immediate data cannot be a destination),
> > or one deals with it in the opcode bits, e.g. ADD and ADDI Add Immediate.
> > I prefer to deal with it in the opcodes.
> <
> Your architecture, your choice.
> >
> > >> Or special case R7 similar to how My 66000 handles R0.
> > > <
> > > I have been thinking about this, back on this topic a bit later.
> >
> > Having IP in the register set does make IP-relative and IP-base-indexed
> > fit in with other registers
> >
> > > <
> > > My current train of thought is that when one used AM=11x (6 or 7) and R0
> > > then the 16-bit immediate is used too access 1K-8K of registers, the lower
> > > order 3-bits is used to denote size and signedness, and depending on a lot
> > > of things, the upper order bits could be used for other purposes {saturation
> > > SIMD,Decimal,...}
> >
> > This reminds me of the TMS 9900 with its Workspace Pointer register.
> <
> It is along those lines.
> >
> > > <
> > > I am trying for something different, having 8 registers that control stuff,
> > > and having a big register file (1K-8K 64-bit entries) that can be accessed
> > > in one cycle (sort of like a smaller register file), but:: The GPR file only
> > > accesses 64-bit things, the large file can access things based on a size.
> > > So::
> > > disp(r0):SB
> > > says that the data in R[disp>>3] contains a signed byte
> > > @disp(R0):UH
> > > says the 64-bit data in R[disp>>3] points at an unsigned Halfword anywhere in
> > > memory.
> > > I will have to figure out some better ASM mnemonics.
> > > <
> > > But this is not some kind of RISC machine with a small and large pair of
> > > register files, it is an address mode machine; and accessing the large
> > > file eats instruction stream area.
> >
> > Yes, I was thinking about that overnight, whether operand size is
> > operand specific or applies to all operands in the instruction.
> <
> Current thought train is that size (and signedness) applies to operands
> and that after a calculation should the result not fit in the destination
> size, OVERFLOW is raised.
> <
> I have worked out an encoding extension when I can fit 3 address modes
> into a 32-bit instruction and have 128 instructions of this flavor; this also
> allows for 16 instructions with 3 address mode operands and 1 address
> mode result.
> <
> Upon EricP's suggestion, I have dropped the deferred address modes
> in favor of {reg, [reg],[reg++],[--reg],[rp->0[ri]],[rp->disp16[ri]],[rp->disp32[ri]],
> and [rp->disp48[ri]]}. Along with the large register file (64-256 entries)
> we should not need an excessive amount of memory traffic.
> >
> > The problem is in real code, for integers at least, variables often are
> > different sizes and depend on the promote/demote conversion rules,
> > and that requires a register to temporarily hold converted values.
> > Load with optional convert, operate, store with optional convert.
> >
> > So [mem]-[mem] looks like each operand has to have its own size and type.
> <
> Size and some other indicator.
> For Integers, the indicator is signedness
> For Float it has not been worked out, yet.
> >
> > Then it needs rule on how things convert when the operand sizes mismatch,
> > promote on load (integer sign/zero extend),
> > demote on store (integer wrap/trap/sat).
> > And floats fp8, fp16, fp32, fp64.
> <
> Current thought train for integers:: we have 8 flavors {Signed, Unsigned}×
> {byte, half, word, double}. Operands are accessed and converted to 64-bits.
> The calculation is performed (to extra precision if required). Then the result
> is fitted to the destination size and if significance is lost->OVERFLOW is raised.
> >
> > This starts to look less likely to fit into a 16-bit instruction word.
> <
> It starts looking less and less like a DPD-11, that is for sure.
| |> It starts looking less and less like a DPD-11, that is for sure.

"Legacy upgrades" are common in military avionics.
Original functionality maintained. As many new useful features
as the customer will pay for and contractor can efficiently provide.

Repeating myself, one last time:
For legacy ISAs, I think it is proper or advantageous to retain as
much of the original ISA as possible. Here and for Alt-430, most of the ISA
can remain intact except for an escape mechanism to a larger instruction format.
For Alt-11, use the floating-point op-code range for the escape code.
For Alt-430, use the Decimal Add op-code range for the escape code.

As have said before, on DPD11 support 8 and 64 bit data sizes on
most of the original ISA. 8, 16, 32 and 64 data on the escape ISA.
On the Alt-430 the new feature is an additional addressing mode [--Rn].

What's new, for me, for both ISAs, is redirecting the two unused address
modes to specifying the offset size (16, 32 or 64 bits). Easily done with
a three bit mode field.

Now the issue of performance, and that's not my field. Still for the sake
of salesmanship, it is best to provide an upwards compatibility process,
which may require re-assembly or re-compilation?

Re: PDP-11-like ISA

<12457f77-068d-4252-9a87-c407f8ccc7f1n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:59c7:: with SMTP id n190mr10698686qkb.146.1623543987636;
Sat, 12 Jun 2021 17:26:27 -0700 (PDT)
X-Received: by 2002:a05:6830:1d1:: with SMTP id r17mr8790981ota.5.1623543987386;
Sat, 12 Jun 2021 17:26:27 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.mixmin.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 17:26:27 -0700 (PDT)
In-Reply-To: <sa2qem$crs$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:a412:f7e:216c:35e9;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:a412:f7e:216c:35e9
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>
<sa2qem$crs$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <12457f77-068d-4252-9a87-c407f8ccc7f1n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sun, 13 Jun 2021 00:26:27 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sun, 13 Jun 2021 00:26 UTC

On Saturday, June 12, 2021 at 11:21:29 AM UTC-6, Ivan Godard wrote:
> On 6/12/2021 8:25 AM, Quadibloc wrote:

> > 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...)

> Or just set the flags directly - why have CCs?

I can tell you why that idea never even occurred to me.

If I add two numbers, then 'negative', 'zero', 'carry', and 'overflow' naturally describe
things that happened during that addition. I don't have to specify anything in the add
instruction.

If I set the flags, I have to specify... which flag I am going to change... and for what
reason. Set it if the result is negarive, or if there's a carry?

So I have operate instructions with one bit to permit the condition codes to be
set, and conditional branch instructions, following the normal pattern.

Predication, on the other hand, uses flags - so that several flags can be
set up ahead of time, and then referred to by the most economical and direct
manner. This is the traditional convention - and I saw no reason to quarrel with
it.

John Savard

Re: PDP-11-like ISA

<d8acf379-21ea-4c19-8dc4-f3b6bf3d46b9n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:40b:: with SMTP id n11mr10194974qtx.60.1623544391184;
Sat, 12 Jun 2021 17:33:11 -0700 (PDT)
X-Received: by 2002:aca:4703:: with SMTP id u3mr6707229oia.37.1623544391000;
Sat, 12 Jun 2021 17:33:11 -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 17:33:10 -0700 (PDT)
In-Reply-To: <d1dbabf3-2b6d-47ac-b9b7-5b191b87087dn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:a412:f7e:216c:35e9;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:a412:f7e:216c:35e9
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>
<d1dbabf3-2b6d-47ac-b9b7-5b191b87087dn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d8acf379-21ea-4c19-8dc4-f3b6bf3d46b9n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sun, 13 Jun 2021 00:33:11 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sun, 13 Jun 2021 00:33 UTC

On Saturday, June 12, 2021 at 11:36:20 AM UTC-6, MitchAlsup wrote:

> Quadibloc's though train is stuck in the late 1980s.

Or even the early 1960s, although indeed some things from later,
like the Cray I, did also influence me.

> This is an important point Quadibloc, the CMP and branch get fused
> and performed as if one, then there is no intermediate state required.

Just as the load instruction and the operate instruction can be fused
and performed as one.

Or rather, they get fused and *written* as one, so that the code is more
compact. But then they get turned into micro-ops.

And the compare gets done, and only when the result is ready is the
branch performed... or the load gets done, and only when the data
is fetched is the operate performed.

So instructions like that are just fine... if your implementation is out of order,
and maybe with speculative execution thrown in.

> Once you give up on code scheduling, optionally setting CCs become
> irrelvant.

And because I'm trying to design an inherently efficient ISA, instead of a legacy
one that needs OoO to endow it with efficiency, giving up on code scheduling is
not something I'm planning to do in Concertina II. The original Concertina
architecture is a pure CISC architecture of that kind.

John Savard

Re: PDP-11-like ISA

<66eec5d7-2e94-422a-84c7-d944a4df33e3n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ad4:5190:: with SMTP id b16mr11884473qvp.61.1623544684046;
Sat, 12 Jun 2021 17:38:04 -0700 (PDT)
X-Received: by 2002:a9d:4f18:: with SMTP id d24mr8411797otl.16.1623544683846;
Sat, 12 Jun 2021 17:38: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 17:38:03 -0700 (PDT)
In-Reply-To: <d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:a412:f7e:216c:35e9;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:a412:f7e:216c:35e9
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> <sa2rvu$17ul$2@gioia.aioe.org>
<d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <66eec5d7-2e94-422a-84c7-d944a4df33e3n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sun, 13 Jun 2021 00:38:04 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sun, 13 Jun 2021 00:38 UTC

On Saturday, June 12, 2021 at 2:50:38 PM UTC-6, MitchAlsup wrote:
> On Saturday, June 12, 2021 at 12:47:46 PM UTC-5, Terje Mathisen wrote:
> > MitchAlsup wrote:

> > > 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?

> Yes, it is sad that SW people see AND and ADD as the same latency.

Just in case there's a misunderstanding here:

Setting the "carry-in" signal line to HIGH does not take more than one
gate delay.

However, since it _is_ a carry-in line, presumably it's a carry in to
some accumulator. With the intent that the number in it will be
incremented by one. If that's a 64-bit accumulator, the number of gate
delays will be... large. At least for some values of its contents, those
ending in a long string of ones.

Mitch Alsup's figure is for the case where a carry-in signal arrives at
a full adder, and propagates to its result outputs.

John Savard

Re: PDP-11-like ISA

<10975ce6-d20b-4760-8eda-c0676557d36fn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:a38d:: with SMTP id m135mr10434618qke.36.1623546108960;
Sat, 12 Jun 2021 18:01:48 -0700 (PDT)
X-Received: by 2002:a9d:3f0:: with SMTP id f103mr807531otf.182.1623546108705;
Sat, 12 Jun 2021 18:01:48 -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 18:01:48 -0700 (PDT)
In-Reply-To: <66eec5d7-2e94-422a-84c7-d944a4df33e3n@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>
<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> <sa2rvu$17ul$2@gioia.aioe.org>
<d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com> <66eec5d7-2e94-422a-84c7-d944a4df33e3n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <10975ce6-d20b-4760-8eda-c0676557d36fn@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sun, 13 Jun 2021 01:01:48 +0000
Content-Type: text/plain; charset="UTF-8"
 by: MitchAlsup - Sun, 13 Jun 2021 01:01 UTC

On Saturday, June 12, 2021 at 7:38:05 PM UTC-5, Quadibloc wrote:
> On Saturday, June 12, 2021 at 2:50:38 PM UTC-6, MitchAlsup wrote:
> > On Saturday, June 12, 2021 at 12:47:46 PM UTC-5, Terje Mathisen wrote:
> > > MitchAlsup wrote:
>
> > > > 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?
>
> > Yes, it is sad that SW people see AND and ADD as the same latency.
> Just in case there's a misunderstanding here:
>
> Setting the "carry-in" signal line to HIGH does not take more than one
> gate delay.
<
With a 3 (or 4)-bit adder the carry in does not change the 4-gates of delay.
<
>
> However, since it _is_ a carry-in line, presumably it's a carry in to
> some accumulator. With the intent that the number in it will be
> incremented by one. If that's a 64-bit accumulator, the number of gate
> delays will be... large. At least for some values of its contents, those
> ending in a long string of ones.
>
> Mitch Alsup's figure is for the case where a carry-in signal arrives at
> a full adder, and propagates to its result outputs.
<
An incrementer for 3 (or 4)-bits would still cost that 4 gates of delay.
>
> John Savard

Re: PDP-11-like ISA

<f20f4cbf-f33a-4ca2-a244-c31497cb3a95n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:aa13:: with SMTP id d19mr12122403qvb.3.1623549380368;
Sat, 12 Jun 2021 18:56:20 -0700 (PDT)
X-Received: by 2002:aca:3644:: with SMTP id d65mr17594486oia.122.1623549380067;
Sat, 12 Jun 2021 18:56: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: Sat, 12 Jun 2021 18:56:19 -0700 (PDT)
In-Reply-To: <10975ce6-d20b-4760-8eda-c0676557d36fn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:a0d0:9f90:212d:499b:2a81:1aee;
posting-account=AoizIQoAAADa7kQDpB0DAj2jwddxXUgl
NNTP-Posting-Host: 2600:1700:a0d0:9f90:212d:499b:2a81:1aee
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> <sa2rvu$17ul$2@gioia.aioe.org>
<d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com> <66eec5d7-2e94-422a-84c7-d944a4df33e3n@googlegroups.com>
<10975ce6-d20b-4760-8eda-c0676557d36fn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f20f4cbf-f33a-4ca2-a244-c31497cb3a95n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jim.brak...@ieee.org (JimBrakefield)
Injection-Date: Sun, 13 Jun 2021 01:56:20 +0000
Content-Type: text/plain; charset="UTF-8"
 by: JimBrakefield - Sun, 13 Jun 2021 01:56 UTC

On Saturday, June 12, 2021 at 8:01:50 PM UTC-5, MitchAlsup wrote:
> On Saturday, June 12, 2021 at 7:38:05 PM UTC-5, Quadibloc wrote:
> > On Saturday, June 12, 2021 at 2:50:38 PM UTC-6, MitchAlsup wrote:
> > > On Saturday, June 12, 2021 at 12:47:46 PM UTC-5, Terje Mathisen wrote:
> > > > MitchAlsup wrote:
> >
> > > > > 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?
> >
> > > Yes, it is sad that SW people see AND and ADD as the same latency.
> > Just in case there's a misunderstanding here:
> >
> > Setting the "carry-in" signal line to HIGH does not take more than one
> > gate delay.
> <
> With a 3 (or 4)-bit adder the carry in does not change the 4-gates of delay.
> <

Don't understand?
A carry lookahead adder of the TTL era has a carry input to the LSB.
No need for an increment circuit..
Other adders: conditional sum or carry select (chapter 3 Hwang, chapter 5 Koren,
chapter 5 & 6 Flores, chapter 6 & 7 Parhami) are similar WRT LSB carry input.

> >
> > However, since it _is_ a carry-in line, presumably it's a carry in to
> > some accumulator. With the intent that the number in it will be
> > incremented by one. If that's a 64-bit accumulator, the number of gate
> > delays will be... large. At least for some values of its contents, those
> > ending in a long string of ones.
> >
> > Mitch Alsup's figure is for the case where a carry-in signal arrives at
> > a full adder, and propagates to its result outputs.
> <
> An incrementer for 3 (or 4)-bits would still cost that 4 gates of delay.
> >
> > John Savard

Re: PDP-11-like ISA

<5eaa6ac3-ff3e-443e-8c68-64f30bbfb813n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:44cf:: with SMTP id b15mr7526613qto.246.1623550023653;
Sat, 12 Jun 2021 19:07:03 -0700 (PDT)
X-Received: by 2002:aca:f452:: with SMTP id s79mr6833913oih.84.1623550023387;
Sat, 12 Jun 2021 19:07:03 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.snarked.org!border2.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: Sat, 12 Jun 2021 19:07:03 -0700 (PDT)
In-Reply-To: <f20f4cbf-f33a-4ca2-a244-c31497cb3a95n@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>
<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> <sa2rvu$17ul$2@gioia.aioe.org>
<d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com> <66eec5d7-2e94-422a-84c7-d944a4df33e3n@googlegroups.com>
<10975ce6-d20b-4760-8eda-c0676557d36fn@googlegroups.com> <f20f4cbf-f33a-4ca2-a244-c31497cb3a95n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <5eaa6ac3-ff3e-443e-8c68-64f30bbfb813n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sun, 13 Jun 2021 02:07:03 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 62
 by: MitchAlsup - Sun, 13 Jun 2021 02:07 UTC

On Saturday, June 12, 2021 at 8:56:21 PM UTC-5, JimBrakefield wrote:
> On Saturday, June 12, 2021 at 8:01:50 PM UTC-5, MitchAlsup wrote:
> > On Saturday, June 12, 2021 at 7:38:05 PM UTC-5, Quadibloc wrote:
> > > On Saturday, June 12, 2021 at 2:50:38 PM UTC-6, MitchAlsup wrote:
> > > > On Saturday, June 12, 2021 at 12:47:46 PM UTC-5, Terje Mathisen wrote:
> > > > > MitchAlsup wrote:
> > >
> > > > > > 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?
> > >
> > > > Yes, it is sad that SW people see AND and ADD as the same latency.
> > > Just in case there's a misunderstanding here:
> > >
> > > Setting the "carry-in" signal line to HIGH does not take more than one
> > > gate delay.
> > <
> > With a 3 (or 4)-bit adder the carry in does not change the 4-gates of delay.
> > <
> Don't understand?
> A carry lookahead adder of the TTL era has a carry input to the LSB.
<
It can
<
> No need for an increment circuit..
<
An incrementer is a degenerate adder with carry in hardwired to 1 and one operand wired to 000.
<
> Other adders: conditional sum or carry select (chapter 3 Hwang, chapter 5 Koren,
> chapter 5 & 6 Flores, chapter 6 & 7 Parhami) are similar WRT LSB carry input.
<
Adders shorter than about 16 bits have no particular need of Carry Select or other
exotic adding technologies.
<
Basically the adder sets up the p (propogate) and g (generate) terms. These terms
drive the local Manchester carry. The output of the Manchester carry selects the
output with an XOR gate. This is the 4 gates I was speaking.
<
This is one of the missing parts of this NG structure--the inability to post figures.
> > >
> > > However, since it _is_ a carry-in line, presumably it's a carry in to
> > > some accumulator. With the intent that the number in it will be
> > > incremented by one. If that's a 64-bit accumulator, the number of gate
> > > delays will be... large. At least for some values of its contents, those
> > > ending in a long string of ones.
> > >
> > > Mitch Alsup's figure is for the case where a carry-in signal arrives at
> > > a full adder, and propagates to its result outputs.
<
I have built adders where the carry_in signal can be as much as 3 gates behind
the operands without slowing the adder down. I have also built adders where
the carry_in needs to arrive before the operands. It all depends on what the logic
situation is presented.
<
> > <
> > An incrementer for 3 (or 4)-bits would still cost that 4 gates of delay.
> > >
> > > John Savard

Condition codes (was: PDP-11-like ISA)

<2021Jun13.082406@mips.complang.tuwien.ac.at>

  copy mid

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

  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: Condition codes (was: PDP-11-like ISA)
Date: Sun, 13 Jun 2021 06:24:06 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 34
Message-ID: <2021Jun13.082406@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> <0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com> <02aee909-8b53-4a0b-9f10-83a9b4dfb6dfn@googlegroups.com>
Injection-Info: reader02.eternal-september.org; posting-host="e16a562f480bb8c9f2706653b83d961b";
logging-data="31450"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+Vc/ylIVV9/swTvBd33pJO"
Cancel-Lock: sha1:F+tMweKWyBtKrypJFK3siZd9anw=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Sun, 13 Jun 2021 06:24 UTC

Quadibloc <jsavard@ecn.ab.ca> writes:
>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.

Another alternative (in addition to Mitch Alsup's CARRY instruction)
is to have the carry in the 65th bit of the GPR, which we discussed
recently (<2021Mar10.110220@mips.complang.tuwien.ac.at> ff.)

>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.

Condition codes, like all single-instance special-purpose registers,
go against the grain for any kind of compiler. Intermediate
representations have nothing to do with it; condition codes are used
widely enough (and in architectures that are mainstream enough) that
they would be well-represented in intermediate representations if the
back end could then do something with them. As it is, the back ends
cannot do much with them, so they are only represented half-heartedly
in the intermediate representation.

- 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

<e479fad4-9fec-412d-a69a-1ee6e833cdden@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:d68f:: with SMTP id k15mr5133829qvi.14.1623570836006;
Sun, 13 Jun 2021 00:53:56 -0700 (PDT)
X-Received: by 2002:a9d:82b:: with SMTP id 40mr9481662oty.81.1623570835716;
Sun, 13 Jun 2021 00:53:55 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!feeder1.cambriumusenet.nl!feed.tweak.nl!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: Sun, 13 Jun 2021 00:53:55 -0700 (PDT)
In-Reply-To: <af646ced-b439-4ea5-9c2d-010abd963bddn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:a412:f7e:216c:35e9;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:a412:f7e:216c:35e9
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>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <e479fad4-9fec-412d-a69a-1ee6e833cdden@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sun, 13 Jun 2021 07:53:55 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sun, 13 Jun 2021 07:53 UTC

On Saturday, June 12, 2021 at 9:25:56 AM UTC-6, Quadibloc wrote:

> 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...)

These instructions have now been added to the Concertina II architecture. While
the notion may horrify some, I do think that this is, indeed, a solution to the
compiler-related objection to condition codes. By having the ability, if necessary,
to take condition code information, and put it into flags, operate instructions that
generate condition codes for future branches can now be drastically re-ordered
by optimization if necessary; if an issue arises, a set flag instruction can be inserted,
and one of the branches changed to a branch on flag.

John Savard

Re: PDP-11-like ISA

<sa4e3o$9td$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: PDP-11-like ISA
Date: Sun, 13 Jun 2021 08:03:04 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <sa4e3o$9td$1@newsreader4.netcologne.de>
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>
<ac0da74d-b52b-4b52-b25e-cf1070ce5e04n@googlegroups.com>
<uQ7xI.28973$J21.10021@fx40.iad>
<8b9ed2b1-9aca-43d4-bc95-b199285c9932n@googlegroups.com>
Injection-Date: Sun, 13 Jun 2021 08:03:04 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="10157"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Sun, 13 Jun 2021 08:03 UTC

MitchAlsup <MitchAlsup@aol.com> schrieb:
>> This starts to look less likely to fit into a 16-bit instruction word.
><
> It starts looking less and less like a DPD-11, that is for sure.

I assume this is a typo, but it would be a good name for the
architecture :-)

Re: PDP-11-like ISA

<sa4oj5$v4j$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: james.ha...@gmail.com (James Harris)
Newsgroups: comp.arch
Subject: Re: PDP-11-like ISA
Date: Sun, 13 Jun 2021 12:01:57 +0100
Organization: A noiseless patient Spider
Lines: 56
Message-ID: <sa4oj5$v4j$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>
<sa2qem$crs$1@dont-email.me>
<12457f77-068d-4252-9a87-c407f8ccc7f1n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 13 Jun 2021 11:01:58 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="3422ae2ca16b6746b68a2584234c7526";
logging-data="31891"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+dms9IEblMSg99Z5yJf93AaIrJy2HES9o="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
Thunderbird/78.8.1
Cancel-Lock: sha1:ajLvqhRENrMdhUQ0jERqs+0/gDI=
In-Reply-To: <12457f77-068d-4252-9a87-c407f8ccc7f1n@googlegroups.com>
Content-Language: en-GB
 by: James Harris - Sun, 13 Jun 2021 11:01 UTC

On 13/06/2021 01:26, Quadibloc wrote:
> On Saturday, June 12, 2021 at 11:21:29 AM UTC-6, Ivan Godard wrote:
>> On 6/12/2021 8:25 AM, Quadibloc wrote:
>
>>> 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...)
>
>> Or just set the flags directly - why have CCs?
>
> I can tell you why that idea never even occurred to me.
>
> If I add two numbers, then 'negative', 'zero', 'carry', and 'overflow' naturally describe
> things that happened during that addition. I don't have to specify anything in the add
> instruction.
>
> If I set the flags, I have to specify... which flag I am going to change... and for what
> reason. Set it if the result is negarive, or if there's a carry?

Worth noting, perhaps, that of the four classic flags that you mention,
N and Z are not strictly necessary as they can be determined from a result.

By contrast, the other two are needed in that they reveal information
about what happened /during/ an operation that would otherwise be lost
(or expensive to recreate).

So in a sense, no more than two flags are required. (It may be possible
to reduce it further but that's a separate topic.) If there were only
two then that would lead, interestingly, to three potential categories
of branch instructions:

1. Branches relying only on flags C & V (e.g. branch below).
2. Branches relying on values (e.g. branch zero).
3. Branches combining flags with values (e.g. branch less).

There's a handy table of what flags are traditionally tested for which
branch conditions at

http://www.scs.stanford.edu/05au-cs240c/lab/i386/appd.htm

Caveat: in programs, some instructions which are traditionally executed
only to set flags (like test and compare) would have to be replaced by
ones which generate a result, consuming a register in order to do so.

--
James Harris

Re: PDP-11-like ISA

<sa4p97$3pj$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: james.ha...@gmail.com (James Harris)
Newsgroups: comp.arch
Subject: Re: PDP-11-like ISA
Date: Sun, 13 Jun 2021 12:13:42 +0100
Organization: A noiseless patient Spider
Lines: 21
Message-ID: <sa4p97$3pj$1@dont-email.me>
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>
<sa2rvu$17ul$2@gioia.aioe.org>
<d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 13 Jun 2021 11:13:43 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="3422ae2ca16b6746b68a2584234c7526";
logging-data="3891"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+Pom9Zbxyin4GQuGG757KDjhM6d4DcViI="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
Thunderbird/78.8.1
Cancel-Lock: sha1:Hbc0VUlzpLW/vg0NFs1eqbgk/00=
In-Reply-To: <d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com>
Content-Language: en-GB
 by: James Harris - Sun, 13 Jun 2021 11:13 UTC

On 12/06/2021 21:50, MitchAlsup wrote:
> On Saturday, June 12, 2021 at 12:47:46 PM UTC-5, Terje Mathisen wrote:

....

>> 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?
> <
> Yes, it is sad that SW people see AND and ADD as the same latency.

As what you might call a software person I don't see AND and ADD as
needing the same latency and I find it a bit irksome when CPUs require
the same time (1 cycle) for each - although I guess that with
transistors aplenty (as there are today) there are probably ways to
predict carry propagation.

--
James Harris

Condition codes (was: PDP-11-like ISA)

<2021Jun13.153104@mips.complang.tuwien.ac.at>

  copy mid

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

  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: Condition codes (was: PDP-11-like ISA)
Date: Sun, 13 Jun 2021 13:31:04 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 37
Message-ID: <2021Jun13.153104@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> <0107a6e5-ccb6-4d58-a18d-ccc68cba06f0n@googlegroups.com> <02aee909-8b53-4a0b-9f10-83a9b4dfb6dfn@googlegroups.com> <af646ced-b439-4ea5-9c2d-010abd963bddn@googlegroups.com> <sa2qem$crs$1@dont-email.me> <12457f77-068d-4252-9a87-c407f8ccc7f1n@googlegroups.com> <sa4oj5$v4j$1@dont-email.me>
Injection-Info: reader02.eternal-september.org; posting-host="e16a562f480bb8c9f2706653b83d961b";
logging-data="26673"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19G1XXsYwrT/rbG6t6mLE+Q"
Cancel-Lock: sha1:E6WIShvwatT7FSMPqS/rIg/OyHQ=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Sun, 13 Jun 2021 13:31 UTC

James Harris <james.harris.1@gmail.com> writes:
>Worth noting, perhaps, that of the four classic flags that you mention,
>N and Z are not strictly necessary as they can be determined from a result.
>
>By contrast, the other two are needed in that they reveal information
>about what happened /during/ an operation that would otherwise be lost
>(or expensive to recreate).
>
>So in a sense, no more than two flags are required. (It may be possible
>to reduce it further but that's a separate topic.)

Add another bit to the result register, and C and V are also
represented in the result: C is the extra bit, and V=C^N. That's one
way to do it, and you have ripple effects on instruction-set design:
You need to differentiate between signed and unsigned addition with
this approach (or already have the inputs sign- or zero-extended into
the C bit). An alternative (and probably better) way is to have two
extra bits (C and V), but a common add instruction that sets them
both, C as the overflow of unsigned addition and V as the overflow
indicator of signed addition (In this case, V=C^N does not always
hold). See <2021Mar10.110220@mips.complang.tuwien.ac.at> ff.

>If there were only
>two then that would lead, interestingly, to three potential categories
>of branch instructions:
>
>1. Branches relying only on flags C & V (e.g. branch below).
>2. Branches relying on values (e.g. branch zero).

Aarch64 has branches on cc's (but not just C & V, as well as a branch
on a register being zero (or non-zero), and you can test the sign bit
with TBZ/TBNZ (if I understand this instruction correctly).

- 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

<sa53eg$nsa$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: PDP-11-like ISA
Date: Sun, 13 Jun 2021 14:07:12 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <sa53eg$nsa$1@newsreader4.netcologne.de>
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>
<sa2rvu$17ul$2@gioia.aioe.org>
<d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com>
<sa4p97$3pj$1@dont-email.me>
Injection-Date: Sun, 13 Jun 2021 14:07:12 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="24458"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Sun, 13 Jun 2021 14:07 UTC

James Harris <james.harris.1@gmail.com> schrieb:
> On 12/06/2021 21:50, MitchAlsup wrote:
>> On Saturday, June 12, 2021 at 12:47:46 PM UTC-5, Terje Mathisen wrote:
>
> ...
>
>>> 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?
>> <
>> Yes, it is sad that SW people see AND and ADD as the same latency.
>
> As what you might call a software person I don't see AND and ADD as
> needing the same latency and I find it a bit irksome when CPUs require
> the same time (1 cycle) for each -

You would need an elastic pipeline for this; in this case, you could
also make your additions somewhat faster in the case where you
do not need to propagate carries very far (or your multipliers if
you are, for example, multiplying two 8-bit numbers with a 64-bit
multiplier).

There are papers on this, but no major architecture has done this to
date (unless I have missed something, which may well be the case).

Re: PDP-11-like ISA

<2021Jun13.164516@mips.complang.tuwien.ac.at>

  copy mid

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

  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: Sun, 13 Jun 2021 14:45:16 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 46
Distribution: world
Message-ID: <2021Jun13.164516@mips.complang.tuwien.ac.at>
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> <sa2rvu$17ul$2@gioia.aioe.org> <d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com> <sa4p97$3pj$1@dont-email.me> <sa53eg$nsa$1@newsreader4.netcologne.de>
Injection-Info: reader02.eternal-september.org; posting-host="e16a562f480bb8c9f2706653b83d961b";
logging-data="25125"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19Qox8dDor63q3/Ei0w7z1P"
Cancel-Lock: sha1:J248sExDoPRS5z7o12siqlI7qpA=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Sun, 13 Jun 2021 14:45 UTC

Thomas Koenig <tkoenig@netcologne.de> writes:
>James Harris <james.harris.1@gmail.com> schrieb:
>> As what you might call a software person I don't see AND and ADD as
>> needing the same latency and I find it a bit irksome when CPUs require
>> the same time (1 cycle) for each -
>
>You would need an elastic pipeline for this; in this case, you could
>also make your additions somewhat faster in the case where you
>do not need to propagate carries very far (or your multipliers if
>you are, for example, multiplying two 8-bit numbers with a 64-bit
>multiplier).
>
>There are papers on this, but no major architecture has done this to
>date (unless I have missed something, which may well be the case).

Chuck Moore's uP20 and maybe some or all his later CPUs (most recently
the c18 in the Greenarrays CPUs) had this characteristic: He uses a
ripple-carry adder, which may take 4 cycles to produce a valid result
in the uP20, so in the general case you need to preceed an addition
with three nops (Why preceed? Because the adder always computes the
sum, and the addition instruction just selects the result of the
adder; the operands are always in the same registers, and there is no
subtract instruction). If you know that the result is available
earlier (i.e., that the carry chains are shorter), you can use fewer
NOPs.

By contrast, the result of AND is available in the next cycle, so no
need to have NOPs in front of AND.

Unfortunately, Chuck Moore is not much into writing, so we only get
second-hand reports of all this stuff, some which go into such details
and others which don't.

As for more mainstream CPUs, I doubt that you would get much benefit
from being able to process some ALU operations faster. You still have
to control and feed the ALUs, and that may be the bottleneck. But
assuming that that's taken care of, and we can run each ALU
instruction in the minimal number of gate delays, and then feed the
result to the next ALU instruction (or load or whatever) in the
critical dependency chain, would we really see a significant speedup?
This might make an interesting limits paper.

- 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

<sa5bbg$ud7$1@newsreader4.netcologne.de>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: PDP-11-like ISA
Date: Sun, 13 Jun 2021 16:22:08 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <sa5bbg$ud7$1@newsreader4.netcologne.de>
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>
<sa2rvu$17ul$2@gioia.aioe.org>
<d4d27ae4-96e1-440c-952e-c84cf45ab4d4n@googlegroups.com>
<sa4p97$3pj$1@dont-email.me> <sa53eg$nsa$1@newsreader4.netcologne.de>
<2021Jun13.164516@mips.complang.tuwien.ac.at>
Injection-Date: Sun, 13 Jun 2021 16:22:08 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2001-4dd6-26b3-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2001:4dd6:26b3:0:7285:c2ff:fe6c:992d";
logging-data="31143"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Sun, 13 Jun 2021 16:22 UTC

Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
> Thomas Koenig <tkoenig@netcologne.de> writes:
>>James Harris <james.harris.1@gmail.com> schrieb:
>>> As what you might call a software person I don't see AND and ADD as
>>> needing the same latency and I find it a bit irksome when CPUs require
>>> the same time (1 cycle) for each -
>>
>>You would need an elastic pipeline for this; in this case, you could
>>also make your additions somewhat faster in the case where you
>>do not need to propagate carries very far (or your multipliers if
>>you are, for example, multiplying two 8-bit numbers with a 64-bit
>>multiplier).
>>
>>There are papers on this, but no major architecture has done this to
>>date (unless I have missed something, which may well be the case).

[Chuck Moore references snipped - I will try to find some info on that]

> As for more mainstream CPUs, I doubt that you would get much benefit
> from being able to process some ALU operations faster. You still have
> to control and feed the ALUs, and that may be the bottleneck.

It probably makes more sense to make everything asynchronous - why
not an asynchronous decoder and asynchronous retirement?

Koopmans and Patel have proposed such an architecture in "Decoupled
Pipelines: Rationale, Analysis, and Evaluation", and there seems
to be some more work, but not a lot, and it all appears to be
rather dated.

It would be interesting to, for example, see a multiplier design
which is capable of generating its result earlier if the result
is shorter than its maximum length. Maybe switching to a partial
implementation on the input size is something that could be done.

Re: PDP-11-like ISA

<0d47945c-add3-4438-8245-47271a40e5d9n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:2119:: with SMTP id l25mr10729419qkl.81.1623607362211;
Sun, 13 Jun 2021 11:02:42 -0700 (PDT)
X-Received: by 2002:a9d:82b:: with SMTP id 40mr10803447oty.81.1623607362006;
Sun, 13 Jun 2021 11:02:42 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!news-out.netnews.com!news.alt.net!fdc2.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: Sun, 13 Jun 2021 11:02:41 -0700 (PDT)
In-Reply-To: <sa4oj5$v4j$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:7916:6f80:6291:31c9;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:7916:6f80:6291:31c9
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>
<sa2qem$crs$1@dont-email.me> <12457f77-068d-4252-9a87-c407f8ccc7f1n@googlegroups.com>
<sa4oj5$v4j$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0d47945c-add3-4438-8245-47271a40e5d9n@googlegroups.com>
Subject: Re: PDP-11-like ISA
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sun, 13 Jun 2021 18:02:42 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 4761
 by: MitchAlsup - Sun, 13 Jun 2021 18:02 UTC

On Sunday, June 13, 2021 at 6:02:00 AM UTC-5, James Harris wrote:
> On 13/06/2021 01:26, Quadibloc wrote:
> > On Saturday, June 12, 2021 at 11:21:29 AM UTC-6, Ivan Godard wrote:
> >> On 6/12/2021 8:25 AM, Quadibloc wrote:
> >
> >>> 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...)
> >
> >> Or just set the flags directly - why have CCs?
> >
> > I can tell you why that idea never even occurred to me.
> >
> > If I add two numbers, then 'negative', 'zero', 'carry', and 'overflow' naturally describe
> > things that happened during that addition. I don't have to specify anything in the add
> > instruction.
> >
> > If I set the flags, I have to specify... which flag I am going to change... and for what
> > reason. Set it if the result is negarive, or if there's a carry?
<
> Worth noting, perhaps, that of the four classic flags that you mention,
> N and Z are not strictly necessary as they can be determined from a result.
>
> By contrast, the other two are needed in that they reveal information
> about what happened /during/ an operation that would otherwise be lost
> (or expensive to recreate).
>
> So in a sense, no more than two flags are required.
<
There are 10 ways to interpret an integer-integer compare--even if you
cast out ½ of them you can't encode 5-states in 2-bits--so you have to
have signed and unsigned compare instructions.
<
There are 10 ways to classify a floating point number, and this is a bit
hard to compress into a 2-bit code.
<
> (It may be possible
> to reduce it further but that's a separate topic.) If there were only
> two then that would lead, interestingly, to three potential categories
> of branch instructions:
>
> 1. Branches relying only on flags C & V (e.g. branch below).
> 2. Branches relying on values (e.g. branch zero).
> 3. Branches combining flags with values (e.g. branch less).
>
> There's a handy table of what flags are traditionally tested for which
> branch conditions at
>
> http://www.scs.stanford.edu/05au-cs240c/lab/i386/appd.htm
>
>
>
>
> Caveat: in programs, some instructions which are traditionally executed
> only to set flags (like test and compare) would have to be replaced by
> ones which generate a result, consuming a register in order to do so.
>
>
> --
> James Harris

Re: Condition codes (was: PDP-11-like ISA)

<feb6adc0-b4eb-47a4-bae6-018542aecc2an@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:aed:2166:: with SMTP id 93mr13367621qtc.374.1623609772950;
Sun, 13 Jun 2021 11:42:52 -0700 (PDT)
X-Received: by 2002:a9d:7f8f:: with SMTP id t15mr9611422otp.329.1623609772675;
Sun, 13 Jun 2021 11:42:52 -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: Sun, 13 Jun 2021 11:42:52 -0700 (PDT)
In-Reply-To: <2021Jun13.153104@mips.complang.tuwien.ac.at>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:f8e3:d700:c1fd:24ba:be54:6bd7;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:f8e3:d700:c1fd:24ba:be54:6bd7
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>
<sa2qem$crs$1@dont-email.me> <12457f77-068d-4252-9a87-c407f8ccc7f1n@googlegroups.com>
<sa4oj5$v4j$1@dont-email.me> <2021Jun13.153104@mips.complang.tuwien.ac.at>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <feb6adc0-b4eb-47a4-bae6-018542aecc2an@googlegroups.com>
Subject: Re: Condition codes (was: PDP-11-like ISA)
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Sun, 13 Jun 2021 18:42:52 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Quadibloc - Sun, 13 Jun 2021 18:42 UTC

On Sunday, June 13, 2021 at 7:55:08 AM UTC-6, Anton Ertl wrote:

> Add another bit to the result register, and C and V are also
> represented in the result: C is the extra bit, and V=C^N.

That's easily enough done on the IBM 7090. On the PDP-8,
the carry bit, called the Link bit, can be thought of as an extra
bit in the accumulator.

In a general register architecture, though, if you lengthen
all the general registers by one bit, now they're not conformant
with memory. So load and store multiple don't work well for
saving state unless they're made wasteful of memory, and
quite a bit else gets made... inaesthetic at least.

The carry bit in the status word can indeed be thought of as
what it really is... an extension to the output buffer of the ALU.
So I guess you could call that the "result register". But that's
no change to the status quo.

There seems no harm in precomputing the other condition code
bits, and there is the additional benefit of not having to explain
the concept of the carry out of a floating-point number.

If "carry" means that the exponent was decreased by one, overflow
doesn't fall out... or I suppose the carry could be out of the exponent,
but it's in excess-n form, not two's complement form, although that
of course can be faked...

John Savard

Re: PDP-11-like ISA

<sa5k5p$1k92$1@gioia.aioe.org>

  copy mid

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

  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: Sun, 13 Jun 2021 20:52:43 +0200
Organization: Aioe.org NNTP Server
Lines: 17
Message-ID: <sa5k5p$1k92$1@gioia.aioe.org>
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>
<8948bd52-302f-47eb-a82e-6788228d59bbn@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 - Sun, 13 Jun 2021 18:52 UTC

MitchAlsup wrote:
> On Friday, June 11, 2021 at 10:08:38 AM UTC-5, EricP wrote:
>> 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'}

I'm pretty sure you were thinking of the "Wrath of Kahn", but I'm sure
Kahan could also be quite cross if you mess up your FP unit badly?
:-)

Terje

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

Re: PDP-11-like ISA

<sa5oag$1bl2$1@gioia.aioe.org>

  copy mid

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

  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: Sun, 13 Jun 2021 22:03:30 +0200
Organization: Aioe.org NNTP Server
Lines: 65
Message-ID: <sa5oag$1bl2$1@gioia.aioe.org>
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>
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 - Sun, 13 Jun 2021 20:03 UTC

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? -

Enough?

I.e. branch if a >= b, but only if neither is a nan?

I.e. any kind of compound check.

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