Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

In order to dial out, it is necessary to broaden one's dimension.


devel / comp.arch / What I Am Aiming At

SubjectAuthor
* What I Am Aiming AtQuadibloc
+* Re: What I Am Aiming AtMitchAlsup
|`* Re: What I Am Aiming AtQuadibloc
| +- Re: What I Am Aiming AtQuadibloc
| `- Re: What I Am Aiming AtQuadibloc
+* Re: What I Am Aiming AtStephen Fuld
|`* Re: What I Am Aiming AtQuadibloc
| +* Re: What I Am Aiming AtQuadibloc
| |`- Re: What I Am Aiming AtQuadibloc
| +* Re: What I Am Aiming AtStephen Fuld
| |`* Re: What I Am Aiming AtQuadibloc
| | +* Re: What I Am Aiming AtDavid Brown
| | |+* Re: What I Am Aiming AtQuadibloc
| | ||`* Re: What I Am Aiming AtMitchAlsup
| | || `* Re: What I Am Aiming AtQuadibloc
| | ||  +- Re: What I Am Aiming AtBGB
| | ||  +* Re: What I Am Aiming AtMitchAlsup
| | ||  |`* Re: What I Am Aiming AtStephen Fuld
| | ||  | `- Re: What I Am Aiming AtMitchAlsup
| | ||  `* Re: What I Am Aiming AtStephen Fuld
| | ||   +* Re: What I Am Aiming AtMitchAlsup
| | ||   |+- Re: What I Am Aiming AtJohn Levine
| | ||   |`* Re: What I Am Aiming AtQuadibloc
| | ||   | `* Re: branch history, was What I Am Aiming AtJohn Levine
| | ||   |  `- Re: branch history, was What I Am Aiming AtQuadibloc
| | ||   `* Re: What I Am Aiming AtQuadibloc
| | ||    `* Re: What I Am Aiming AtStephen Fuld
| | ||     `- Re: What I Am Aiming AtMitchAlsup
| | |`* Re: What I Am Aiming AtMitchAlsup
| | | `- Re: What I Am Aiming AtQuadibloc
| | `- Re: What I Am Aiming AtStephen Fuld
| +* Re: What I Am Aiming AtMitchAlsup
| |`- Re: What I Am Aiming AtBGB
| `- Re: What I Am Aiming Atluke.l...@gmail.com
`- Re: What I Am Aiming AtBGB

Pages:12
What I Am Aiming At

<b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:29ca:b0:472:fa99:100 with SMTP id gh10-20020a05621429ca00b00472fa990100mr8737156qvb.87.1657063544908;
Tue, 05 Jul 2022 16:25:44 -0700 (PDT)
X-Received: by 2002:ad4:5dc1:0:b0:462:194:bc7a with SMTP id
m1-20020ad45dc1000000b004620194bc7amr35522300qvh.87.1657063544788; Tue, 05
Jul 2022 16:25:44 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Tue, 5 Jul 2022 16:25:44 -0700 (PDT)
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:ac7e:93dd:225e:9257;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:ac7e:93dd:225e:9257
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
Subject: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Tue, 05 Jul 2022 23:25:44 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 78
 by: Quadibloc - Tue, 5 Jul 2022 23:25 UTC

....is difficult to see.
But one goal that has been a constant is high code density.
Even though the IBM System/360 was not considered to have been a
system with particularly dense code, my goal of not having code
density that is any _worse_ than it had, while adding extra features,
has led to... exertions.

So, in my original Concertina design, I took the 32-bit memory-reference
format of System/360, which was

opcode: 8 bits
destination register: 4 bits
index register: 4 bits
base register: 4 bits
displacement: 12 bits

and, in order to increase the displacement to 16 bits, as found in many
microprocessors today, I went to

opcode: 7 bits
destination register: 3 bits
index register: 3 bits
base register: 3 bits
displacement: 16 bits

which was reasonable enough; a similar instruction format is used
in the Cray I.

To change to a RISC-like architecture - but retaining base-index
addressing - I wanted to increase the destination register field to 5 bits.

This can be done, as a 5 bit opcode is enough for load and store
instructions. However, that means the load and store instructions use
up almost 3/4 of the available opcode space. I wanted to carve out 1/4
of the opcode space to allow me to put pairs of 16-bit instructions in
the 32-bit instruction words.

At this point, what I have been doing is shrinking the load and store
instructions considerablty by restricting them to aligned operands - and
using what would be the unused displacement bits to indicate the
operand type.

But recently I was toying with a way to avoid this restriction... and here is
the monstrosity I came up with.

Unindexed instruction:

1 (to indicate memory-reference instruction)
opcode: 5 bits
destination register: 5 bits
00 (to indicate unindexed instruction)
base register: 3 bits
displacement: 16 bits

Indexed instruction:

1 (to indicate memory-reference instruction)
opcode: 5 bits
destination register: 4 bits
index register: 3 bits
base register: 3 bits
displacement: 16 bits

So the base register would be, perhaps, one of
registers 25 through 31.

The available index registers would be registers
1, 2, 3, 5, 6, and 7. Neither register 0 nor register 4
would be available for use as an index register.

And only even-numbered registers could be used with
indexed loads and stores!

There are historical computer designs with even weirder
and less orthogonal restrictions, but coming up with wild
ideas like this does seem to indicate I'm going in the wrong
direction...

John Savard

Re: What I Am Aiming At

<b81e0ff2-c24b-4c44-b050-d583b88f000dn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:a656:0:b0:6b4:8116:de71 with SMTP id p83-20020a37a656000000b006b48116de71mr5070611qke.691.1657064895019;
Tue, 05 Jul 2022 16:48:15 -0700 (PDT)
X-Received: by 2002:a05:620a:294e:b0:6a7:750b:abf8 with SMTP id
n14-20020a05620a294e00b006a7750babf8mr24855624qkp.513.1657064894847; Tue, 05
Jul 2022 16:48:14 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Tue, 5 Jul 2022 16:48:14 -0700 (PDT)
In-Reply-To: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=104.59.204.55; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 104.59.204.55
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b81e0ff2-c24b-4c44-b050-d583b88f000dn@googlegroups.com>
Subject: Re: What I Am Aiming At
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Tue, 05 Jul 2022 23:48:14 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 110
 by: MitchAlsup - Tue, 5 Jul 2022 23:48 UTC

On Tuesday, July 5, 2022 at 6:25:46 PM UTC-5, Quadibloc wrote:
> ...is difficult to see.
> But one goal that has been a constant is high code density.
> Even though the IBM System/360 was not considered to have been a
> system with particularly dense code, my goal of not having code
> density that is any _worse_ than it had, while adding extra features,
> has led to... exertions.
>
> So, in my original Concertina design, I took the 32-bit memory-reference
> format of System/360, which was
>
> opcode: 8 bits
> destination register: 4 bits
> index register: 4 bits
> base register: 4 bits
> displacement: 12 bits
>
> and, in order to increase the displacement to 16 bits, as found in many
> microprocessors today, I went to
>
> opcode: 7 bits
> destination register: 3 bits
> index register: 3 bits
> base register: 3 bits
> displacement: 16 bits
>
> which was reasonable enough; a similar instruction format is used
> in the Cray I.
>
> To change to a RISC-like architecture - but retaining base-index
> addressing - I wanted to increase the destination register field to 5 bits.
<
S.E.L. used lower order bits in the displacement to indicate size (in
an otherwise 360-like ISA). So there were 2 instructions with Byte
(LD and ST) and 2 instructions with Sized (also LD and ST).
Displacement<1:0>::
00: right Halfword
01: left Halfword
10: Word
11: DoubleWord
This modification SHOULD take the OpCode space penalty out of
the 16-bit Displacement.
>
> This can be done, as a 5 bit opcode is enough for load and store
> instructions. However, that means the load and store instructions use
> up almost 3/4 of the available opcode space. I wanted to carve out 1/4
> of the opcode space to allow me to put pairs of 16-bit instructions in
> the 32-bit instruction words.
<
My 66000 has 6-bit Major OpCode, and 16-bit Displacements in the
Major OpCode without index register, and in XOP1 are memrefs with
indexing with no displacement, 32-bit displacements, and 64-bit
displacements. Thus taking only ¼ of the Major OpCode space, and
another ½ of the XOP1 OpCode area.
{Each XOxx subgroup takes 1 Major OpCode and provides an entire
space of sub instructions}.
>
> At this point, what I have been doing is shrinking the load and store
> instructions considerablty by restricting them to aligned operands - and
> using what would be the unused displacement bits to indicate the
> operand type.
<
as above.....
>
> But recently I was toying with a way to avoid this restriction... and here is
> the monstrosity I came up with.
>
> Unindexed instruction:
>
> 1 (to indicate memory-reference instruction)
> opcode: 5 bits
> destination register: 5 bits
> 00 (to indicate unindexed instruction)
> base register: 3 bits
> displacement: 16 bits
>
> Indexed instruction:
>
> 1 (to indicate memory-reference instruction)
> opcode: 5 bits
> destination register: 4 bits
> index register: 3 bits
> base register: 3 bits
> displacement: 16 bits
>
> So the base register would be, perhaps, one of
> registers 25 through 31.
<
Note: S.E.L. machines could only base with Registers[0,1,2,3]
>
> The available index registers would be registers
> 1, 2, 3, 5, 6, and 7. Neither register 0 nor register 4
> would be available for use as an index register.
>
> And only even-numbered registers could be used with
> indexed loads and stores!
>
> There are historical computer designs with even weirder
> and less orthogonal restrictions, but coming up with wild
> ideas like this does seem to indicate I'm going in the wrong
> direction...
<
Warning Will Robinson: you have take the wrong turn a few days
back.....
>
> John Savard

Re: What I Am Aiming At

<ta2j4k$3r071$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: SFu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: What I Am Aiming At
Date: Tue, 5 Jul 2022 23:57:08 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 46
Message-ID: <ta2j4k$3r071$1@dont-email.me>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 5 Jul 2022 23:57:08 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="2a18718c6b572167de5a88aee9a42b71";
logging-data="4030689"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18TabF+pz4NCkGoyeWSdPddOFkLvDwamOQ="
User-Agent: XanaNews/1.21-f3fb89f (x86; Portable ISpell)
Cancel-Lock: sha1:zICU3IGcfwhQdNzcHdxp7lpgTwQ=
 by: Stephen Fuld - Tue, 5 Jul 2022 23:57 UTC

Quadibloc wrote:

> ...is difficult to see.
> But one goal that has been a constant is high code density.
> Even though the IBM System/360 was not considered to have been a
> system with particularly dense code, my goal of not having code
> density that is any worse than it had, while adding extra features,
> has led to... exertions.
>
> So, in my original Concertina design, I took the 32-bit
> memory-reference format of System/360, which was
>
> opcode: 8 bits
> destination register: 4 bits
> index register: 4 bits
> base register: 4 bits
> displacement: 12 bits
>
> and, in order to increase the displacement to 16 bits, as found in
> many microprocessors today, I went to
>
> opcode: 7 bits
> destination register: 3 bits
> index register: 3 bits
> base register: 3 bits
> displacement: 16 bits
>
> which was reasonable enough; a similar instruction format is used
> in the Cray I.
>
> To change to a RISC-like architecture - but retaining base-index
> addressing - I wanted to increase the destination register field to 5
> bits.

Why do you want to keep the base register. It was, IMO a bad idea from
the start. In order to keep it, you are reducing the number of
registers to 8, which will hurt a lot. Just dump it and use those four
instruction bits to get a 16 bit displacement from the start.

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

Re: What I Am Aiming At

<eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:1467:b0:6af:3f68:6be7 with SMTP id j7-20020a05620a146700b006af3f686be7mr25751340qkl.717.1657084066432;
Tue, 05 Jul 2022 22:07:46 -0700 (PDT)
X-Received: by 2002:a05:622a:245:b0:31d:34de:63d3 with SMTP id
c5-20020a05622a024500b0031d34de63d3mr23359824qtx.423.1657084066296; Tue, 05
Jul 2022 22:07:46 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Tue, 5 Jul 2022 22:07:46 -0700 (PDT)
In-Reply-To: <ta2j4k$3r071$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com> <ta2j4k$3r071$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 05:07:46 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 26
 by: Quadibloc - Wed, 6 Jul 2022 05:07 UTC

On Tuesday, July 5, 2022 at 5:57:11 PM UTC-6, Stephen Fuld wrote:

> Why do you want to keep the base register. It was, IMO a bad idea from
> the start. In order to keep it, you are reducing the number of
> registers to 8, which will hurt a lot. Just dump it and use those four
> instruction bits to get a 16 bit displacement from the start.

What good is a 16-bit displacement without a base register? Unless
you have only 64K of memory.

First, you have to arrange a way to access locations everywhere in the
entire address space. Then you can add indexing. The S/360 had nice
simple orthogonal base registers - whereas x86 has a complicated
segment register scheme. Before the S/360, one had schemes that are
currently not considered good: a zero page/current page bit, and/or
indirect addressing.

Is there some other way of addressing more than 64K without a huge
displacement that other modern architectures are using that I've missed?

Also, instead of reducing the number of registers to 8, as I did in the
original Concertina, I'm going with 32 registers - but only the first 8
may be index registers and the last 8 may be base registers. So I don't
limit the architecture to 8 registers, although 32 are no longer enough
to do away with the need for out-of-order execution.

John Savard

Re: What I Am Aiming At

<5eac61ff-4d41-4dd6-9448-146cf6a34e89n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:7e90:0:b0:31d:42dd:ca24 with SMTP id w16-20020ac87e90000000b0031d42ddca24mr15119214qtj.670.1657085178702;
Tue, 05 Jul 2022 22:26:18 -0700 (PDT)
X-Received: by 2002:a05:620a:cce:b0:6af:59b:17bb with SMTP id
b14-20020a05620a0cce00b006af059b17bbmr25884863qkj.423.1657085178568; Tue, 05
Jul 2022 22:26:18 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Tue, 5 Jul 2022 22:26:18 -0700 (PDT)
In-Reply-To: <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <5eac61ff-4d41-4dd6-9448-146cf6a34e89n@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 05:26:18 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 46
 by: Quadibloc - Wed, 6 Jul 2022 05:26 UTC

On Tuesday, July 5, 2022 at 11:07:47 PM UTC-6, Quadibloc wrote:
> On Tuesday, July 5, 2022 at 5:57:11 PM UTC-6, Stephen Fuld wrote:
>
> > Why do you want to keep the base register. It was, IMO a bad idea from
> > the start. In order to keep it, you are reducing the number of
> > registers to 8, which will hurt a lot. Just dump it and use those four
> > instruction bits to get a 16 bit displacement from the start.

> What good is a 16-bit displacement without a base register? Unless
> you have only 64K of memory.

However, I shouldn't be _too_ hard on you. You are right that there's
a weakness in the base register model. But I have addressed that weakness
in a fancy feature of my memory addressing scheme that I didn't mention:
Array Mode.

When the base register is zero, then the 16 bit displacement field is divided
up. Either it's the bit 0 and a 15-bit displacement, or its the bit 1, a three-bit
base register indicating a base register from *another* set of 8 registers
(actually seven, from 17 to 23) and a 12-bit displacement. So, if seven base
registers with 16-bit displacements aren't enough, I have one more with a
15-bit displacement, and seven more with 12-bit displacements.

But if the _second_ base register field contains 000, then the 12-bit displacement
is chopped up.

In any event, Array Mode works like this:

There is a small area of memory which contains an array of pointers. One can
address that area of memory directly, to load the pointers. One can also address
that area of memory indirectly, with post-indexing.

This is how I address the fault of base-displacement addressing:

It's just fine if you have more than 64K named simple variables or short arrays in
your program. But what program is going to have that many variables in it?

However, every time you have an array bigger than 64K, you either
have to allocate a base register to *each such array*, or have extra instructions
in your program that keep reloading certain base registers for whichever array you
are currently accessing.

This way, by using indirect addressing, we have static pointers to all the
arrays a program might use, without the need to insert extra instructions into
the program.

John Savard

Re: What I Am Aiming At

<c5401149-a969-497c-a60a-5886c78d3e94n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:5fc8:0:b0:31b:f4c3:c45e with SMTP id k8-20020ac85fc8000000b0031bf4c3c45emr30939253qta.684.1657085968121;
Tue, 05 Jul 2022 22:39:28 -0700 (PDT)
X-Received: by 2002:a05:622a:591:b0:31d:4044:c457 with SMTP id
c17-20020a05622a059100b0031d4044c457mr16399518qtb.331.1657085967986; Tue, 05
Jul 2022 22:39:27 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Tue, 5 Jul 2022 22:39:27 -0700 (PDT)
In-Reply-To: <5eac61ff-4d41-4dd6-9448-146cf6a34e89n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<5eac61ff-4d41-4dd6-9448-146cf6a34e89n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <c5401149-a969-497c-a60a-5886c78d3e94n@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 05:39:28 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 25
 by: Quadibloc - Wed, 6 Jul 2022 05:39 UTC

On Tuesday, July 5, 2022 at 11:26:20 PM UTC-6, Quadibloc wrote:

> However, I shouldn't be _too_ hard on you. You are right that there's
> a weakness in the base register model. But I have addressed that weakness
> in a fancy feature of my memory addressing scheme that I didn't mention:
> Array Mode.

This discussion has given me an idea.

Since I've designed the addressing scheme so that the case of base register
field = 0 leaves you with everything you "really" need, a 32K segment for
your main program, plus a bunch of 4K segments for handling shared variables
with other programs, and Array Mode, which is the "right" way to handle arrays...

why not replace the regular base register field with just a one-bit field?

That one-bit field could indicate either a 64K segment (presumably the
program's main data segment) or the base-register-zero scheme noted
previously, in which the 32K segment would now be usually the program's
main _code_ segment.

So you have one large data segment, one not quite as large code segment,
several small segments for shared variables, and a robust mechanism for
lots of large arrays if needed.

John Savard

Re: What I Am Aiming At

<ta38k8$3vcet$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: SFu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: What I Am Aiming At
Date: Wed, 6 Jul 2022 06:03:52 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 33
Message-ID: <ta38k8$3vcet$1@dont-email.me>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com> <ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 6 Jul 2022 06:03:52 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="2a18718c6b572167de5a88aee9a42b71";
logging-data="4174301"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18gDAK/dexmxWFgBJNSQOG2ECP9wG37was="
User-Agent: XanaNews/1.21-f3fb89f (x86; Portable ISpell)
Cancel-Lock: sha1:1dxqaCd65YpYQRAhIOVei2yPSQA=
 by: Stephen Fuld - Wed, 6 Jul 2022 06:03 UTC

Quadibloc wrote:

> On Tuesday, July 5, 2022 at 5:57:11 PM UTC-6, Stephen Fuld wrote:
>
> > Why do you want to keep the base register. It was, IMO a bad idea
> > from the start. In order to keep it, you are reducing the number of
> > registers to 8, which will hurt a lot. Just dump it and use those
> > four instruction bits to get a 16 bit displacement from the start.
>
> What good is a 16-bit displacement without a base register? Unless
> you have only 64K of memory.
>
> First, you have to arrange a way to access locations everywhere in the
> entire address space. Then you can add indexing. The S/360 had nice
> simple orthogonal base registers - whereas x86 has a complicated
> segment register scheme. Before the S/360, one had schemes that are
> currently not considered good: a zero page/current page bit, and/or
> indirect addressing.
>
> Is there some other way of addressing more than 64K without a huge
> displacement that other modern architectures are using that I've
> missed?

Sure. You only need to add one register to the displacement, not two.
Thus, with suitable arithmetic, the "index" register can serve as the
displacement register. I believe that is the way most architectures do
it. BTW, the idocy of the base register is even more apparent on
Register to Register instructions. What meaning does it have there?

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

Re: What I Am Aiming At

<1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:1897:b0:31d:3f9e:d6de with SMTP id v23-20020a05622a189700b0031d3f9ed6demr16690076qtc.396.1657089845238;
Tue, 05 Jul 2022 23:44:05 -0700 (PDT)
X-Received: by 2002:ad4:5dc7:0:b0:470:424d:2d28 with SMTP id
m7-20020ad45dc7000000b00470424d2d28mr36139638qvh.32.1657089845129; Tue, 05
Jul 2022 23:44:05 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Tue, 5 Jul 2022 23:44:04 -0700 (PDT)
In-Reply-To: <ta38k8$3vcet$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<ta38k8$3vcet$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 06:44:05 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 1998
 by: Quadibloc - Wed, 6 Jul 2022 06:44 UTC

On Wednesday, July 6, 2022 at 12:03:55 AM UTC-6, Stephen Fuld wrote:

> Sure. You only need to add one register to the displacement, not two.
> Thus, with suitable arithmetic, the "index" register can serve as the
> displacement register. I believe that is the way most architectures do
> it.

Yes, but that has a problem. You're doing an extra add instruction when
you access an array, instead of array access being automatic and built
in.

> BTW, the idocy of the base register is even more apparent on
> Register to Register instructions. What meaning does it have there?

Huh? Register to register instructions don't have a base register field.

Not on the System/360, and not on any of my architectures.

John Savard

Re: What I Am Aiming At

<ta3c92$3vmd8$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: david.br...@hesbynett.no (David Brown)
Newsgroups: comp.arch
Subject: Re: What I Am Aiming At
Date: Wed, 6 Jul 2022 09:06:09 +0200
Organization: A noiseless patient Spider
Lines: 39
Message-ID: <ta3c92$3vmd8$1@dont-email.me>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me>
<eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<ta38k8$3vcet$1@dont-email.me>
<1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 6 Jul 2022 07:06:10 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="b1ce37694be6cb9f6c25bb05e155ed80";
logging-data="4184488"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+US2aqM5s/iTnuRIRDcgX8m30U3+lXv08="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101
Thunderbird/91.9.1
Cancel-Lock: sha1:fxR5P+TOW+OA1rFuHQwlMkuVpDE=
In-Reply-To: <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
Content-Language: en-GB
 by: David Brown - Wed, 6 Jul 2022 07:06 UTC

On 06/07/2022 08:44, Quadibloc wrote:
> On Wednesday, July 6, 2022 at 12:03:55 AM UTC-6, Stephen Fuld wrote:
>
>> Sure. You only need to add one register to the displacement, not two.
>> Thus, with suitable arithmetic, the "index" register can serve as the
>> displacement register. I believe that is the way most architectures do
>> it.
>
> Yes, but that has a problem. You're doing an extra add instruction when
> you access an array, instead of array access being automatic and built
> in.

Having two registers that are added to form the effective address looks
like a win - after all, you are doing "x = *(a + i + offset)" in one
instruction. With no base (or, alternatively, no index) you need to do
"b = a + i; x = *(b + offset)" in two instructions.

However, your coding is highly restrictive about the registers it can
use. This means you are likely to need additional move instructions to
shuffle things around - negating the gains. And in the RISC-style
coding, any time you can re-use the pre-calculated "b = a + i" address,
you win again.

Another possibility to consider is that in addressing modes that have
two registers, you could have a much smaller displacement than 16-bits.
The displacement lets you access fields within structs that are in an
array. Maybe 6 bits is enough to cover almost all uses, leaving you 10
free bits to expand your register fields.

>
>> BTW, the idocy of the base register is even more apparent on
>> Register to Register instructions. What meaning does it have there?
>
> Huh? Register to register instructions don't have a base register field.
>
> Not on the System/360, and not on any of my architectures.
>
> John Savard

Re: What I Am Aiming At

<b465a93e-b6c9-4be8-a7a4-69b0d5ec7457n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:ad03:0:b0:6ae:d5a0:d90e with SMTP id f3-20020a37ad03000000b006aed5a0d90emr25480838qkm.48.1657091238772;
Wed, 06 Jul 2022 00:07:18 -0700 (PDT)
X-Received: by 2002:a05:6214:d4a:b0:470:49bf:a51e with SMTP id
10-20020a0562140d4a00b0047049bfa51emr34084774qvr.88.1657091238606; Wed, 06
Jul 2022 00:07:18 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Wed, 6 Jul 2022 00:07:18 -0700 (PDT)
In-Reply-To: <b81e0ff2-c24b-4c44-b050-d583b88f000dn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com> <b81e0ff2-c24b-4c44-b050-d583b88f000dn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b465a93e-b6c9-4be8-a7a4-69b0d5ec7457n@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 07:07:18 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 117
 by: Quadibloc - Wed, 6 Jul 2022 07:07 UTC

On Tuesday, July 5, 2022 at 5:48:16 PM UTC-6, MitchAlsup wrote:

> Warning Will Robinson: you have take the wrong turn a few days
> back.....

Maybe it was at Albuquerque...

This discussion, however, has given me an idea. No doubt, though, it is
just another wrong turn.

Instructions will continue to be fetched in blocks of eight 32-bit
instructions. However, there will be no block headers. Instead, the
instruction set will be... disguised... as a thoroughly conventional
32-bit RISC architecture.

Instruction formats:

A pair of 16-bit instructions:

0
15 bits of instruction
0 15 bits of instruction

Register-to-register instructions:

0
13 bits of opcode
00
1 destination register: 5 bits
operand register: 5 bits
source register: 5 bits

(The 00 bits are reserved for indicating that the operand register
and source register bits are instead pointers to pseudo-immediates
when a header is in effect due to an INBWH instruction, as explained
below.)

Memory-reference instructions:

1
Opcode: 5 bits
Destination register: 5 bits
Index register: 5 bits
Displacement: 16 bits

However:
- if the index register field contains 00000,
the instruction is not indexed.
- registers 1 through 23 may be used as
index registers.

If the index register field contents are of the
form 11nnn, then nnn indicates the index
register; 000 indicates no indexing, registers
1 through 7 may be used as index registers in
this case.

Then the 16-bit displacement field is divided
up to allow either a 15 bit displacement or
12 bit displacements with a 3-bit base register
field or Array Mode and so on.

When this _isn't_ done, the index register doesn't
have to serve as a base register. Instead,
the base register is either the "code segment"
register or the "data segment" register.

These pointer registers, though, aren't special registers.

Instead, there are two five-bit special registers, the
code segment pointer and the data segment pointer,
which each indicate which of the 32 general registers
serve as the pointers to the code segment and data segment.

Perhaps they'd better be five-bit fields in the PSW.
Having too many things to save and restore is
a bad idea. Or even just have general register 30
always point to the code segment, and general register
31 always point to the data segment. Sort of like having
two base registers.

Now, then.

I am fetching instructions in groups of eight, and
decoding them in parallel.

There are no block headers... not at the start of a
block, anyways.

But I still want to have "pseudo-immediates" - immediate values
that somehow in no way whatever disrupt parallel decoding.

So *instead* of a header at the start of a block, in the *previous*
block I execute an instruction...

Interpret Next Block With Header.

The bits of the header, of course, are part of the 32-bit instruction.

Incidentally, the header, and the bit in the PSW that says "use the
header" are *not* cleared when a branch instruction is
executed, so if you have the *same* INBWH instruction
in the block branching to a modified by header block as in the
block preceding and falling through to it, that could even
work.

I was thinking of also having two sets of two 8-element
push-down stacks in which "short prefixes" and "long prefixes" could
be placed - in the preceding block, for use by instructions in the
next block - to allow instructions longer than 32 bits.

However, that mechanism is, I think, too complicated, and
the INBWH mechanism is sufficient to handle long instructions as
well without adding extra complications.

John Savard

Re: What I Am Aiming At

<92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:25c9:b0:6b2:7409:892e with SMTP id y9-20020a05620a25c900b006b27409892emr12652463qko.367.1657091641190;
Wed, 06 Jul 2022 00:14:01 -0700 (PDT)
X-Received: by 2002:a05:620a:2234:b0:6af:692:1fbf with SMTP id
n20-20020a05620a223400b006af06921fbfmr25387919qkh.579.1657091641062; Wed, 06
Jul 2022 00:14:01 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Wed, 6 Jul 2022 00:14:00 -0700 (PDT)
In-Reply-To: <ta3c92$3vmd8$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<ta38k8$3vcet$1@dont-email.me> <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
<ta3c92$3vmd8$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 07:14:01 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 22
 by: Quadibloc - Wed, 6 Jul 2022 07:14 UTC

On Wednesday, July 6, 2022 at 1:06:13 AM UTC-6, David Brown wrote:

> Another possibility to consider is that in addressing modes that have
> two registers, you could have a much smaller displacement than 16-bits.
> The displacement lets you access fields within structs that are in an
> array. Maybe 6 bits is enough to cover almost all uses, leaving you 10
> free bits to expand your register fields.

I have Array Mode for that: a 9 bit displacement picks out a pointer
to a particular array, and then the index register points out the element
of the array. I don't have an additional displacement for elements of structures.

The displacement is used to pick out *which array I'm using*. The index register
picks out the element of the array... and the base register indicates, normally,
*which address space or segment is the array contained in*. A segment might
be 64K, it might be 4K, but it could hardly be 64 bytes long. To do things your
way, the base register would have to be *loaded* with the address of the *individual
array* instead of being the static address of a whole segment the program
uses.

I'm using the S/360 as a model, rather than using RISC architectures as the model.

John Savard

Re: What I Am Aiming At

<7caa7884-748b-4fff-987c-6a07eacf119an@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:7e90:0:b0:31d:42dd:ca24 with SMTP id w16-20020ac87e90000000b0031d42ddca24mr15316713qtj.670.1657091785228;
Wed, 06 Jul 2022 00:16:25 -0700 (PDT)
X-Received: by 2002:a05:620a:170a:b0:6af:2170:736 with SMTP id
az10-20020a05620a170a00b006af21700736mr27459793qkb.656.1657091785085; Wed, 06
Jul 2022 00:16:25 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Wed, 6 Jul 2022 00:16:24 -0700 (PDT)
In-Reply-To: <b465a93e-b6c9-4be8-a7a4-69b0d5ec7457n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<b81e0ff2-c24b-4c44-b050-d583b88f000dn@googlegroups.com> <b465a93e-b6c9-4be8-a7a4-69b0d5ec7457n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <7caa7884-748b-4fff-987c-6a07eacf119an@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 07:16:25 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 12
 by: Quadibloc - Wed, 6 Jul 2022 07:16 UTC

On Wednesday, July 6, 2022 at 1:07:20 AM UTC-6, Quadibloc wrote:

> I was thinking of also having two sets of two 8-element
> push-down stacks in which "short prefixes" and "long prefixes" could
> be placed - in the preceding block, for use by instructions in the
> next block - to allow instructions longer than 32 bits.

The idea, of course, is that there's a set of short and long prefix
stacks for the _next_ block that can only be PUSHed, and a set
of short and long prefix stacks for the _current_ block that can
only be POPped.

John Savard

Re: What I Am Aiming At

<ta3ffd$3vvf9$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: cr88...@gmail.com (BGB)
Newsgroups: comp.arch
Subject: Re: What I Am Aiming At
Date: Wed, 6 Jul 2022 03:00:43 -0500
Organization: A noiseless patient Spider
Lines: 199
Message-ID: <ta3ffd$3vvf9$1@dont-email.me>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 6 Jul 2022 08:00:46 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="683344d0860f73783ff4500460cfe084";
logging-data="4193769"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/LOPM8bqrofBHQzkmhs9p7"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.11.0
Cancel-Lock: sha1:OFmLZscdJU4x0hWVbIxJApSpfTw=
Content-Language: en-US
In-Reply-To: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
 by: BGB - Wed, 6 Jul 2022 08:00 UTC

On 7/5/2022 6:25 PM, Quadibloc wrote:
> ...is difficult to see.
> But one goal that has been a constant is high code density.
> Even though the IBM System/360 was not considered to have been a
> system with particularly dense code, my goal of not having code
> density that is any _worse_ than it had, while adding extra features,
> has led to... exertions.
>
> So, in my original Concertina design, I took the 32-bit memory-reference
> format of System/360, which was
>
> opcode: 8 bits
> destination register: 4 bits
> index register: 4 bits
> base register: 4 bits
> displacement: 12 bits
>
> and, in order to increase the displacement to 16 bits, as found in many
> microprocessors today, I went to
>
> opcode: 7 bits
> destination register: 3 bits
> index register: 3 bits
> base register: 3 bits
> displacement: 16 bits
>

Would not be worth it...

For typical struct and stack-frame offsets, a 16-bit displacement is
overkill;
For things like accessing global variables, it is still nowhere near
sufficient; for a "typical sized binary", somewhere around 22 to 26 bits
is needed here.

More so, one doesn't generally need both a displacement and an index at
the same time. For a 32-bit instruction format, it makes more sense to
have these cases as mutually exclusive.

The limited number of registers is going to hurt a lot more than a
smaller displacement.

As noted, in my case the vast majority of displacements still fit within
a 9-bit displacement field.

Though, this was still an upgrade from the 5-bit immediate and
displacement fields more commonly used in early forms of the ISA.

Adding some debug stats to my compiler
Doom numbers:
Disp-Hit(Scaled): 5u=86.60% 9u=98.62% 10s=99.08% 12s=99.68%
Disp-Hit(Byte): 5u=31.25% 9u=96.91% 10s=97.37% 12s=99.06%
Quake numbers:
Disp-Hit(Scaled): 5u=76.07% 9u=96.51% 10s=96.69% 12s=99.49%
Disp-Hit(Byte): 5u=29.70% 9u=93.81% 10s=93.99% 12s=96.15%

Scaled 9u and 10s are the cases which exist in BJX2 (10s being a special
pseudo-case that exists via gluing together the 9u and 5n cases, the
latter existing implicitly via the XGPR encodings, modeled as -32..511;
whereas 12s is -2048..2047).

Byte-Scaled Disp12s is the typical case for RISC-V.

In Doom, non-scaled 12s beats scaled 9u, but in Quake it is the reverse.

Also shows that scaling the displacement by the element size is
reasonably effective (1).

Increasing the number of bits further seems to be in "diminishing
returns" territory.

1: With typical alignment rules, it has negligible effect on miss rate.
A misaligned/packed load/store would need to be encoded like:
MOV Disp, R0
MOV.x (Rm, R1), Rn
Where R1 is interpreted as R0 (but non-scaled).
This case is rare enough that it can be mostly ignored for sake of
stats-gathering. Likewise, there are significantly more positive
displacements than negative ones (hence why I went with 9u rather than 9s).

It appears the hit-rate for RegImmReg ops is a little lower though.
Doom:
Imm-Hit: 9u=70.67% 5u=47.11% 9n=34.99%, 5n=23.23%
Quake:
Imm-Hit: 9u=68.01% 5u=44.63% 9n=34.86%, 5n=20.71%

I guess maybe one could justify spending a few extra bits on things like
"ADD Rm, Imm, Rn" and similar.

Hit rate would be a little better for ops with both 9u and 9n forms (eg:
ADD and ADDS.L), but this isn't modeled in this case.

In cases where these fail, this is where jumbo-encodings or explicit
constant loads come in (well, along with cases like "No RegImmReg case
actually exists, but it is more convenient for code-generation to
pretend that it does and insert a constant load at the last moment").

By contrast, 3-bit register fields means that the generated code is
likely going to be an almost non-stop stream of register spill and fill.

> which was reasonable enough; a similar instruction format is used
> in the Cray I.
>
> To change to a RISC-like architecture - but retaining base-index
> addressing - I wanted to increase the destination register field to 5 bits.
>
> This can be done, as a 5 bit opcode is enough for load and store
> instructions. However, that means the load and store instructions use
> up almost 3/4 of the available opcode space. I wanted to carve out 1/4
> of the opcode space to allow me to put pairs of 16-bit instructions in
> the 32-bit instruction words.
>
> At this point, what I have been doing is shrinking the load and store
> instructions considerablty by restricting them to aligned operands - and
> using what would be the unused displacement bits to indicate the
> operand type.
>
> But recently I was toying with a way to avoid this restriction... and here is
> the monstrosity I came up with.
>
> Unindexed instruction:
>
> 1 (to indicate memory-reference instruction)
> opcode: 5 bits
> destination register: 5 bits
> 00 (to indicate unindexed instruction)
> base register: 3 bits
> displacement: 16 bits
>
> Indexed instruction:
>
> 1 (to indicate memory-reference instruction)
> opcode: 5 bits
> destination register: 4 bits
> index register: 3 bits
> base register: 3 bits
> displacement: 16 bits
>
> So the base register would be, perhaps, one of
> registers 25 through 31.
>
> The available index registers would be registers
> 1, 2, 3, 5, 6, and 7. Neither register 0 nor register 4
> would be available for use as an index register.
>
> And only even-numbered registers could be used with
> indexed loads and stores!
>

Groan...

> There are historical computer designs with even weirder
> and less orthogonal restrictions, but coming up with wild
> ideas like this does seem to indicate I'm going in the wrong
> direction...
>

Short answer: Yes.

Sadly, chasing the local optimum constrains the design space some.

In terms of register-field size:
3: Not Enough (would result in a high spill rate)
4: Mostly Workable
5: Probably Optimal
6: Probably a Bit Over
7: We Itanium Now

I was mostly using 5-bit register fields, but had extended the ISA to 64
GPRs via hacks (R32..R63 only exist in 32-bit encodings for a subset of
the ISA).

Ironically, sorta works OK if one also extends "pretty much everything"
to 128 bits, since in my case 128-bit "Xn" registers are even-only, and
thus can still be encoded in the 5 bit register fields. Then only a
minority of instructions needing to resort to 64-bit encodings.

Though, at present, by default BGBCC is still mostly ignoring that
R32..R63 exist, and XGPR is at this point relatively unlikely to be
added to the baseline ISA.

Both XGPR and the Dual-ISA RISC-V mode are in this gray area between
"potentially useful" and "kind of an epic fail". Dust hasn't settled
enough on them to solidly make a determination yet.

Re: What I Am Aiming At

<d22a762f-d106-43ed-b861-80ab6ff67ff1n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:2447:b0:6b2:3e10:ca56 with SMTP id h7-20020a05620a244700b006b23e10ca56mr23501871qkn.485.1657123093671;
Wed, 06 Jul 2022 08:58:13 -0700 (PDT)
X-Received: by 2002:a37:b904:0:b0:6b4:8428:f7ee with SMTP id
j4-20020a37b904000000b006b48428f7eemr5974438qkf.441.1657123093536; Wed, 06
Jul 2022 08:58:13 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Wed, 6 Jul 2022 08:58:13 -0700 (PDT)
In-Reply-To: <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=104.59.204.55; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 104.59.204.55
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d22a762f-d106-43ed-b861-80ab6ff67ff1n@googlegroups.com>
Subject: Re: What I Am Aiming At
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 06 Jul 2022 15:58:13 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 33
 by: MitchAlsup - Wed, 6 Jul 2022 15:58 UTC

On Wednesday, July 6, 2022 at 12:07:47 AM UTC-5, Quadibloc wrote:
> On Tuesday, July 5, 2022 at 5:57:11 PM UTC-6, Stephen Fuld wrote:
>
> > Why do you want to keep the base register. It was, IMO a bad idea from
> > the start. In order to keep it, you are reducing the number of
> > registers to 8, which will hurt a lot. Just dump it and use those four
> > instruction bits to get a 16 bit displacement from the start.
<
> What good is a 16-bit displacement without a base register? Unless
> you have only 64K of memory.
<
He is suggesting that you have 1 register and a 16-bit displacement as
the major format, I suggest that you also have a base+index register format.
I went further to base+scaled_index+displacement on demand.
>
> First, you have to arrange a way to access locations everywhere in the
> entire address space. Then you can add indexing. The S/360 had nice
> simple orthogonal base registers - whereas x86 has a complicated
> segment register scheme. Before the S/360, one had schemes that are
> currently not considered good: a zero page/current page bit, and/or
> indirect addressing.
<
All of that is a pointer-register; base-register has other entanglements.
>
> Is there some other way of addressing more than 64K without a huge
> displacement that other modern architectures are using that I've missed?
>
> Also, instead of reducing the number of registers to 8, as I did in the
> original Concertina, I'm going with 32 registers - but only the first 8
> may be index registers and the last 8 may be base registers. So I don't
> limit the architecture to 8 registers, although 32 are no longer enough
> to do away with the need for out-of-order execution.
>
> John Savard

Re: What I Am Aiming At

<341ded35-8079-4ef6-82b9-ec81496318dan@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:9dc5:0:b0:6b2:4cf9:86dc with SMTP id g188-20020a379dc5000000b006b24cf986dcmr22044357qke.747.1657123248468;
Wed, 06 Jul 2022 09:00:48 -0700 (PDT)
X-Received: by 2002:a05:620a:2e4:b0:6af:faf:b61a with SMTP id
a4-20020a05620a02e400b006af0fafb61amr28452288qko.618.1657123248155; Wed, 06
Jul 2022 09:00:48 -0700 (PDT)
Path: i2pn2.org!i2pn.org!feed1.usenet.blueworldhosting.com!usenet.blueworldhosting.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: Wed, 6 Jul 2022 09:00:48 -0700 (PDT)
In-Reply-To: <ta3c92$3vmd8$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=104.59.204.55; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 104.59.204.55
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<ta38k8$3vcet$1@dont-email.me> <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
<ta3c92$3vmd8$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <341ded35-8079-4ef6-82b9-ec81496318dan@googlegroups.com>
Subject: Re: What I Am Aiming At
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 06 Jul 2022 16:00:48 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 3390
 by: MitchAlsup - Wed, 6 Jul 2022 16:00 UTC

On Wednesday, July 6, 2022 at 2:06:13 AM UTC-5, David Brown wrote:
> On 06/07/2022 08:44, Quadibloc wrote:
> > On Wednesday, July 6, 2022 at 12:03:55 AM UTC-6, Stephen Fuld wrote:
> >
> >> Sure. You only need to add one register to the displacement, not two.
> >> Thus, with suitable arithmetic, the "index" register can serve as the
> >> displacement register. I believe that is the way most architectures do
> >> it.
> >
> > Yes, but that has a problem. You're doing an extra add instruction when
> > you access an array, instead of array access being automatic and built
> > in.
> Having two registers that are added to form the effective address looks
> like a win - after all, you are doing "x = *(a + i + offset)" in one
> instruction. With no base (or, alternatively, no index) you need to do
> "b = a + i; x = *(b + offset)" in two instructions.
<
Note: Base+index+displacement represents only 2% of memory refs.
Base+disp and base+index represent the very vast majority. Compilers
have ways of turning Base+index+displacement into base+index inside
of loops.
>
> However, your coding is highly restrictive about the registers it can
> use. This means you are likely to need additional move instructions to
> shuffle things around - negating the gains. And in the RISC-style
> coding, any time you can re-use the pre-calculated "b = a + i" address,
> you win again.
>
> Another possibility to consider is that in addressing modes that have
> two registers, you could have a much smaller displacement than 16-bits.
> The displacement lets you access fields within structs that are in an
> array. Maybe 6 bits is enough to cover almost all uses, leaving you 10
> free bits to expand your register fields.
> >
> >> BTW, the idocy of the base register is even more apparent on
> >> Register to Register instructions. What meaning does it have there?
> >
> > Huh? Register to register instructions don't have a base register field.
> >
> > Not on the System/360, and not on any of my architectures.
> >
> > John Savard

Re: What I Am Aiming At

<ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:29ce:b0:6a7:1379:62d4 with SMTP id s14-20020a05620a29ce00b006a7137962d4mr27821393qkp.604.1657123290133;
Wed, 06 Jul 2022 09:01:30 -0700 (PDT)
X-Received: by 2002:a05:620a:4514:b0:6af:25f2:489d with SMTP id
t20-20020a05620a451400b006af25f2489dmr27215827qkp.728.1657123289764; Wed, 06
Jul 2022 09:01:29 -0700 (PDT)
Path: i2pn2.org!i2pn.org!feed1.usenet.blueworldhosting.com!usenet.blueworldhosting.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: Wed, 6 Jul 2022 09:01:29 -0700 (PDT)
In-Reply-To: <92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=104.59.204.55; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 104.59.204.55
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<ta38k8$3vcet$1@dont-email.me> <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
<ta3c92$3vmd8$1@dont-email.me> <92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com>
Subject: Re: What I Am Aiming At
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 06 Jul 2022 16:01:30 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2807
 by: MitchAlsup - Wed, 6 Jul 2022 16:01 UTC

On Wednesday, July 6, 2022 at 2:14:02 AM UTC-5, Quadibloc wrote:
> On Wednesday, July 6, 2022 at 1:06:13 AM UTC-6, David Brown wrote:
>
> > Another possibility to consider is that in addressing modes that have
> > two registers, you could have a much smaller displacement than 16-bits.
> > The displacement lets you access fields within structs that are in an
> > array. Maybe 6 bits is enough to cover almost all uses, leaving you 10
> > free bits to expand your register fields.
> I have Array Mode for that: a 9 bit displacement picks out a pointer
> to a particular array, and then the index register points out the element
> of the array. I don't have an additional displacement for elements of structures.
>
> The displacement is used to pick out *which array I'm using*. The index register
> picks out the element of the array... and the base register indicates, normally,
> *which address space or segment is the array contained in*. A segment might
> be 64K, it might be 4K, but it could hardly be 64 bytes long. To do things your
> way, the base register would have to be *loaded* with the address of the *individual
> array* instead of being the static address of a whole segment the program
> uses.
>
> I'm using the S/360 as a model, rather than using RISC architectures as the model.
<
Some of us are trying to nudge you into correcting that deficit.
>
> John Savard

Re: What I Am Aiming At

<ac68d1a4-1740-49fa-90a8-d8bf88d83b7fn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:7d11:0:b0:31d:3808:434b with SMTP id g17-20020ac87d11000000b0031d3808434bmr22763011qtb.537.1657123989889;
Wed, 06 Jul 2022 09:13:09 -0700 (PDT)
X-Received: by 2002:a05:622a:100c:b0:31e:7e33:56ee with SMTP id
d12-20020a05622a100c00b0031e7e3356eemr10582465qte.365.1657123989672; Wed, 06
Jul 2022 09:13:09 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Wed, 6 Jul 2022 09:13:09 -0700 (PDT)
In-Reply-To: <341ded35-8079-4ef6-82b9-ec81496318dan@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<ta38k8$3vcet$1@dont-email.me> <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
<ta3c92$3vmd8$1@dont-email.me> <341ded35-8079-4ef6-82b9-ec81496318dan@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ac68d1a4-1740-49fa-90a8-d8bf88d83b7fn@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 16:13:09 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 18
 by: Quadibloc - Wed, 6 Jul 2022 16:13 UTC

On Wednesday, July 6, 2022 at 10:00:50 AM UTC-6, MitchAlsup wrote:

> Note: Base+index+displacement represents only 2% of memory refs.
> Base+disp and base+index represent the very vast majority. Compilers
> have ways of turning Base+index+displacement into base+index inside
> of loops.

My picture, of course, is:

Base+Displacement is used to refer to simple variables.
Base+Index+Displacement is used to refer to elements of short arrays
(Base+Displacement)+Index is used to refer to elements of long arrays

so that the compiler doesn't have to do _any work at all_ (except for the
arithmetic to scale the subscript and combine dimensions). Of course,
if the programmer uses exotic stuff like _structures_, *then* the
compiler will have to do additional arithmetic.

John Savard

Re: What I Am Aiming At

<ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:5f84:0:b0:316:b52b:377a with SMTP id j4-20020ac85f84000000b00316b52b377amr33987816qta.171.1657124560788;
Wed, 06 Jul 2022 09:22:40 -0700 (PDT)
X-Received: by 2002:a05:620a:371d:b0:6b2:70dc:5671 with SMTP id
de29-20020a05620a371d00b006b270dc5671mr15431742qkb.291.1657124560614; Wed, 06
Jul 2022 09:22:40 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Wed, 6 Jul 2022 09:22:40 -0700 (PDT)
In-Reply-To: <ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<ta38k8$3vcet$1@dont-email.me> <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
<ta3c92$3vmd8$1@dont-email.me> <92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>
<ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 16:22:40 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 31
 by: Quadibloc - Wed, 6 Jul 2022 16:22 UTC

On Wednesday, July 6, 2022 at 10:01:31 AM UTC-6, MitchAlsup wrote:
> On Wednesday, July 6, 2022 at 2:14:02 AM UTC-5, Quadibloc wrote:

> > I'm using the S/360 as a model, rather than using RISC architectures as the model.
> <
> Some of us are trying to nudge you into correcting that deficit.

Oh, I _have_ noticed. But basically I view the deficiencies of the 680x0, x86, and
modern RISC architectures... as the things they're omitting that the S/360 had.

Thus, the 68020 had base+index+displacement, but if the displacement was 16 bits,
the instruction was 48 bits long; only if the displacement was 8 bits would the instruction
be 32 bits long. That falls short of the 360, therefore it must be remedied!

And so fitting the capabilities of the System/360 into an ISA that makes a few
nods here and there to what today's machines do (like increasing the displacement
from 12 bits to 16 bits) is my *fundamental goal*.

So I'm trying to achieve...

An architecture that does _almost_ everything the S/360 did,
consuming no more bits per instruction, for any instruction type than the S/360,
and adding modern capabilities like... 16 bit displacements instead of 12 bit
displacements; the ability to decode instructions in parallel instead of serially
determining their lengths

and this does mean that I'm trying to squeeze an awful lot into each 32-bit
instruction.

That my goal may be wildly misguided is... something I have considered.

John Savard

Re: What I Am Aiming At

<5b3f9538-b11c-4161-8b20-432e2fe5a4bbn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:462a:b0:6b2:585c:16a6 with SMTP id br42-20020a05620a462a00b006b2585c16a6mr19782101qkb.631.1657124854205;
Wed, 06 Jul 2022 09:27:34 -0700 (PDT)
X-Received: by 2002:a05:620a:294e:b0:6a7:750b:abf8 with SMTP id
n14-20020a05620a294e00b006a7750babf8mr27148075qkp.513.1657124854023; Wed, 06
Jul 2022 09:27:34 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!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: Wed, 6 Jul 2022 09:27:33 -0700 (PDT)
In-Reply-To: <b465a93e-b6c9-4be8-a7a4-69b0d5ec7457n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:65df:eb7d:674b:3191;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:65df:eb7d:674b:3191
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<b81e0ff2-c24b-4c44-b050-d583b88f000dn@googlegroups.com> <b465a93e-b6c9-4be8-a7a4-69b0d5ec7457n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <5b3f9538-b11c-4161-8b20-432e2fe5a4bbn@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 06 Jul 2022 16:27:34 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 21
 by: Quadibloc - Wed, 6 Jul 2022 16:27 UTC

On Wednesday, July 6, 2022 at 1:07:20 AM UTC-6, Quadibloc wrote:

> So *instead* of a header at the start of a block, in the *previous*
> block I execute an instruction...
>
> Interpret Next Block With Header.

This of course is a mistake. Besides needing *two* of them if I
also branch into a modified block, it means there are two ways to
read the instructions in a block.

So I should stick with headers at the start of block.

However, using extra bits in some instructions to have a flag that
says "next block has a header", a sort of vestige of this, has its
uses... that way, _absent_ such a flag, decoding each instruction
in parallel can go faster, as there's no delay, then, before later
instructions can be decoded while it is determined if the first
instruction slot contains a header! (But of course going to such
a length to save a few gate delays is a mistake.)

John Savard

Re: What I Am Aiming At

<ta4e7u$33kc$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!news.freedyn.de!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: SFu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: What I Am Aiming At
Date: Wed, 6 Jul 2022 16:45:50 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 26
Message-ID: <ta4e7u$33kc$1@dont-email.me>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com> <ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com> <ta38k8$3vcet$1@dont-email.me> <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 6 Jul 2022 16:45:50 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="2a18718c6b572167de5a88aee9a42b71";
logging-data="102028"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/SwTHoXTuV82dBB8xzt/tlbp0t6NC5vdo="
User-Agent: XanaNews/1.21-f3fb89f (x86; Portable ISpell)
Cancel-Lock: sha1:yQoZNbnRZY1g64HpPHX7wr0ov4c=
 by: Stephen Fuld - Wed, 6 Jul 2022 16:45 UTC

Quadibloc wrote:

> On Wednesday, July 6, 2022 at 12:03:55 AM UTC-6, Stephen Fuld wrote:
>
> > Sure. You only need to add one register to the displacement, not
> > two. Thus, with suitable arithmetic, the "index" register can
> > serve as the displacement register. I believe that is the way most
> > architectures do it.
>
> Yes, but that has a problem. You're doing an extra add instruction
> when you access an array, instead of array access being automatic and
> built in.

No, At the beginning, you load a register with the address of the
start of the array. Then, after each access, you add the length of the
array element to the register. The register now points to the next
element.

One register and one add per access.

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

Re: What I Am Aiming At

<ta4ea8$33si$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!news.freedyn.de!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: cr88...@gmail.com (BGB)
Newsgroups: comp.arch
Subject: Re: What I Am Aiming At
Date: Wed, 6 Jul 2022 11:47:02 -0500
Organization: A noiseless patient Spider
Lines: 67
Message-ID: <ta4ea8$33si$1@dont-email.me>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me>
<eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<d22a762f-d106-43ed-b861-80ab6ff67ff1n@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 6 Jul 2022 16:47:04 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="683344d0860f73783ff4500460cfe084";
logging-data="102290"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/6/EtiOcTeaPHfmWQ2T5aR"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.11.0
Cancel-Lock: sha1:GPC6L6LOnJ8iIOgJt4aL+2N97Ko=
In-Reply-To: <d22a762f-d106-43ed-b861-80ab6ff67ff1n@googlegroups.com>
Content-Language: en-US
 by: BGB - Wed, 6 Jul 2022 16:47 UTC

On 7/6/2022 10:58 AM, MitchAlsup wrote:
> On Wednesday, July 6, 2022 at 12:07:47 AM UTC-5, Quadibloc wrote:
>> On Tuesday, July 5, 2022 at 5:57:11 PM UTC-6, Stephen Fuld wrote:
>>
>>> Why do you want to keep the base register. It was, IMO a bad idea from
>>> the start. In order to keep it, you are reducing the number of
>>> registers to 8, which will hurt a lot. Just dump it and use those four
>>> instruction bits to get a 16 bit displacement from the start.
> <
>> What good is a 16-bit displacement without a base register? Unless
>> you have only 64K of memory.
> <
> He is suggesting that you have 1 register and a 16-bit displacement as
> the major format, I suggest that you also have a base+index register format.
> I went further to base+scaled_index+displacement on demand.

I agree that these cases should be exclusive (with both displacement and
index forms being present), but still feel that a 16-bit displacement
here is overkill for a 32-bit instruction format.

Like, say, if one spends 4 more bits (vs 12 bits), but only reduces the
number of overflowed cases by 0.5% or so, this isn't really a win IMO.

As noted from my other stats, scaling the displacement by the accessed
element size gains around 2 or 3 bits of range "basically for free"
(whereas signed displacement basically loses a bit given the rarity of
negative displacements).

Well, unless one does an x86 style frame-pointer, in which case there is
going to be a lot of negative displacements (assuming a traditional
"grows downwards" stack design).

Though, I guess it is a mystery how much code would break with a "grows
upwards" stack and evaluating function arguments left-to-right rather
than right-to-left, ...

I suspect though that full [Base+Index<<Scale+Disp] is likely not common
enough to justify its inclusion, at least for 32 bit encodings, and
still has a non-zero cost in other areas (needing to encode this case as
a 2-instruction sequence does not seem unreasonable IMO; But, does
basically require having "LEA" style instructions though).

>>
>> First, you have to arrange a way to access locations everywhere in the
>> entire address space. Then you can add indexing. The S/360 had nice
>> simple orthogonal base registers - whereas x86 has a complicated
>> segment register scheme. Before the S/360, one had schemes that are
>> currently not considered good: a zero page/current page bit, and/or
>> indirect addressing.
> <
> All of that is a pointer-register; base-register has other entanglements.
>>
>> Is there some other way of addressing more than 64K without a huge
>> displacement that other modern architectures are using that I've missed?
>>
>> Also, instead of reducing the number of registers to 8, as I did in the
>> original Concertina, I'm going with 32 registers - but only the first 8
>> may be index registers and the last 8 may be base registers. So I don't
>> limit the architecture to 8 registers, although 32 are no longer enough
>> to do away with the need for out-of-order execution.
>>
>> John Savard

Re: What I Am Aiming At

<ta4g08$3aat$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!news.freedyn.de!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: cr88...@gmail.com (BGB)
Newsgroups: comp.arch
Subject: Re: What I Am Aiming At
Date: Wed, 6 Jul 2022 12:15:49 -0500
Organization: A noiseless patient Spider
Lines: 65
Message-ID: <ta4g08$3aat$1@dont-email.me>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me>
<eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<ta38k8$3vcet$1@dont-email.me>
<1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
<ta3c92$3vmd8$1@dont-email.me>
<92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>
<ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com>
<ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 6 Jul 2022 17:15:52 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="683344d0860f73783ff4500460cfe084";
logging-data="108893"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18Y15z1lhWcBBDUTu8HBF/y"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.11.0
Cancel-Lock: sha1:IEdQq/25h/T0DH9sjrYYIlvy/X4=
Content-Language: en-US
In-Reply-To: <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>
 by: BGB - Wed, 6 Jul 2022 17:15 UTC

On 7/6/2022 11:22 AM, Quadibloc wrote:
> On Wednesday, July 6, 2022 at 10:01:31 AM UTC-6, MitchAlsup wrote:
>> On Wednesday, July 6, 2022 at 2:14:02 AM UTC-5, Quadibloc wrote:
>
>>> I'm using the S/360 as a model, rather than using RISC architectures as the model.
>> <
>> Some of us are trying to nudge you into correcting that deficit.
>
> Oh, I _have_ noticed. But basically I view the deficiencies of the 680x0, x86, and
> modern RISC architectures... as the things they're omitting that the S/360 had.
>
> Thus, the 68020 had base+index+displacement, but if the displacement was 16 bits,
> the instruction was 48 bits long; only if the displacement was 8 bits would the instruction
> be 32 bits long. That falls short of the 360, therefore it must be remedied!
>
> And so fitting the capabilities of the System/360 into an ISA that makes a few
> nods here and there to what today's machines do (like increasing the displacement
> from 12 bits to 16 bits) is my *fundamental goal*.
>
> So I'm trying to achieve...
>
> An architecture that does _almost_ everything the S/360 did,
> consuming no more bits per instruction, for any instruction type than the S/360,
> and adding modern capabilities like... 16 bit displacements instead of 12 bit
> displacements; the ability to decode instructions in parallel instead of serially
> determining their lengths
>
> and this does mean that I'm trying to squeeze an awful lot into each 32-bit
> instruction.
>
> That my goal may be wildly misguided is... something I have considered.
>

How about(?):
ISA makes 64-bit instructions the canonical format;
Can then treat 32-bit encodings as the "compressed" variant;
...

Of course, 64-bit instructions still can't encode a 64-bit immediate.

But, making 96 or 128 bit instructions the canonical format would be
kinda absurd.

Well, probably don't want to add too much fuel to the fire...

How it works in my case is a little ambiguous, as effectively the
"32-bit" instruction decoder is actually around 60 bits, with the 32-bit
instruction word as input, and bits from a paired Jumbo prefix as the
other input (the 96-bit instruction formats are partially handled as a
special case that is decoded across two lanes).

Say:
Lane 1: Handles Immed(31: 0), Decodes Instruction + Jumbo Bits
Lane 2: Handles Immed(63:32), Decodes Jumbo Prefix + More Jumbo Bits

So, say, the instruction decoder sees that it has been given a pair of
Jumbo prefixes and proceeds to spit out an immediate-field representing
the high 32 bits of the immediate (but otherwise still a NOP).

> John Savard

Re: What I Am Aiming At

<127a5b3f-1c68-417b-ae0f-c3caef69eedcn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:ca6:b0:472:e7e6:13a2 with SMTP id s6-20020a0562140ca600b00472e7e613a2mr18003817qvs.69.1657129849844;
Wed, 06 Jul 2022 10:50:49 -0700 (PDT)
X-Received: by 2002:a05:622a:1741:b0:31d:4ab9:1661 with SMTP id
l1-20020a05622a174100b0031d4ab91661mr14646774qtk.579.1657129849682; Wed, 06
Jul 2022 10:50:49 -0700 (PDT)
Path: i2pn2.org!i2pn.org!feed1.usenet.blueworldhosting.com!usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 6 Jul 2022 10:50:49 -0700 (PDT)
In-Reply-To: <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=104.59.204.55; posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 104.59.204.55
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
<ta38k8$3vcet$1@dont-email.me> <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com>
<ta3c92$3vmd8$1@dont-email.me> <92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>
<ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com> <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <127a5b3f-1c68-417b-ae0f-c3caef69eedcn@googlegroups.com>
Subject: Re: What I Am Aiming At
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 06 Jul 2022 17:50:49 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 3771
 by: MitchAlsup - Wed, 6 Jul 2022 17:50 UTC

On Wednesday, July 6, 2022 at 11:22:42 AM UTC-5, Quadibloc wrote:
> On Wednesday, July 6, 2022 at 10:01:31 AM UTC-6, MitchAlsup wrote:
> > On Wednesday, July 6, 2022 at 2:14:02 AM UTC-5, Quadibloc wrote:
>
> > > I'm using the S/360 as a model, rather than using RISC architectures as the model.
> > <
> > Some of us are trying to nudge you into correcting that deficit.
> Oh, I _have_ noticed. But basically I view the deficiencies of the 680x0, x86, and
> modern RISC architectures... as the things they're omitting that the S/360 had.
<
So did I when architecting My 66000 ISA. But I also took into account the utility of
the feature with respect to modern compiler technology, and ended up with the
same 360 ISA model but with 32 registers. I augmented it with IP relative addressing,
and large displacements. And it still ends up smelling like RISC--it is RISC with a few
features added.
>
> Thus, the 68020 had base+index+displacement, but if the displacement was 16 bits,
> the instruction was 48 bits long; only if the displacement was 8 bits would the instruction
> be 32 bits long. That falls short of the 360, therefore it must be remedied!
<
B+I+D is only used 2% of the time. So while one can encode it in My 66000, one
still has access to B+D and B+I without exceeding 32-bits.
>
> And so fitting the capabilities of the System/360 into an ISA that makes a few
> nods here and there to what today's machines do (like increasing the displacement
> from 12 bits to 16 bits) is my *fundamental goal*.
<
I assert My 66000 reached those goals and vastly surpassed them.
>
> So I'm trying to achieve...
<
One cannot achieve with blinders what one can achieve without !!
>
> An architecture that does _almost_ everything the S/360 did,
> consuming no more bits per instruction, for any instruction type than the S/360,
> and adding modern capabilities like... 16 bit displacements instead of 12 bit
> displacements; the ability to decode instructions in parallel instead of serially
> determining their lengths
>
> and this does mean that I'm trying to squeeze an awful lot into each 32-bit
> instruction.
>
> That my goal may be wildly misguided is... something I have considered.
>
> John Savard

Re: What I Am Aiming At

<32a8ce6a-f2cf-4b1a-9df1-38813129f4c4n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:ed23:0:b0:472:f9c0:9fda with SMTP id u3-20020a0ced23000000b00472f9c09fdamr13586015qvq.24.1657146786659;
Wed, 06 Jul 2022 15:33:06 -0700 (PDT)
X-Received: by 2002:a05:620a:4514:b0:6af:25f2:489d with SMTP id
t20-20020a05620a451400b006af25f2489dmr28547664qkp.728.1657146786427; Wed, 06
Jul 2022 15:33:06 -0700 (PDT)
Path: i2pn2.org!i2pn.org!feed1.usenet.blueworldhosting.com!usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 6 Jul 2022 15:33:06 -0700 (PDT)
In-Reply-To: <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=92.40.188.120; posting-account=soFpvwoAAADIBXOYOBcm_mixNPAaxW9p
NNTP-Posting-Host: 92.40.188.120
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <32a8ce6a-f2cf-4b1a-9df1-38813129f4c4n@googlegroups.com>
Subject: Re: What I Am Aiming At
From: luke.lei...@gmail.com (luke.l...@gmail.com)
Injection-Date: Wed, 06 Jul 2022 22:33:06 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 1562
 by: luke.l...@gmail.com - Wed, 6 Jul 2022 22:33 UTC

On Wednesday, July 6, 2022 at 6:07:47 AM UTC+1, Quadibloc wrote:

> Is there some other way of addressing more than 64K without a huge
> displacement that other modern architectures are using that I've missed?

Power ISA v3.1 64-bit prefixes. adds (i think) an extra 18-bits to immediates.
gets up to 34-bit immediates in some cases.

l.

Re: What I Am Aiming At

<ta7d8b$fcbf$1@dont-email.me>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: SFu...@alumni.cmu.edu.invalid (Stephen Fuld)
Newsgroups: comp.arch
Subject: Re: What I Am Aiming At
Date: Thu, 7 Jul 2022 19:47:23 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 39
Message-ID: <ta7d8b$fcbf$1@dont-email.me>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com> <ta2j4k$3r071$1@dont-email.me> <eca948b8-a6f8-4163-b2fe-af4a5fa9b756n@googlegroups.com> <ta38k8$3vcet$1@dont-email.me> <1f8cfe08-4e9b-4a25-a47f-8d9d3d02889en@googlegroups.com> <ta3c92$3vmd8$1@dont-email.me> <92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com> <ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com> <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 7 Jul 2022 19:47:23 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="517256a2010c0ed42dd24006566ed600";
logging-data="504175"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/ZmFZ6Oe4DGzyx5O5nBfmluD54bJgnAes="
User-Agent: XanaNews/1.21-f3fb89f (x86; Portable ISpell)
Cancel-Lock: sha1:AH+xZlCTt5tWg7JRrc8C6qG9r7A=
 by: Stephen Fuld - Thu, 7 Jul 2022 19:47 UTC

Quadibloc wrote:

> On Wednesday, July 6, 2022 at 10:01:31 AM UTC-6, MitchAlsup wrote:
> > On Wednesday, July 6, 2022 at 2:14:02 AM UTC-5, Quadibloc wrote:
>
> > > I'm using the S/360 as a model, rather than using RISC
> > > architectures as the model.
> > <
> > Some of us are trying to nudge you into correcting that deficit.
>
> Oh, I have noticed. But basically I view the deficiencies of the
> 680x0, x86, and modern RISC architectures... as the things they're
> omitting that the S/360 had.

OK, so what features specifically did S/360 have that none of the
others you mentioned had that were so beneficial? Surely it was more
than just the limit to the displacement field of the 68020.

Remember, the original reason for base registers was to allow multiple
programs to be run in different locations in memory without the
programmer having to code for specific real addresses. Of course S/360
was a "real memory" machine - no paging, etc. So a program had to
execute a BALR instruction right at the beginning to "capture" the read
address of where the program was atually loaded, then use that "base"
for all subsequent references. Other vendors used different solutions
for this problem, e.g. base register that was not visible to the
program but saved in say its register save area and was loaded by the
OS along with the user registerswhenever it gave control to a use
program. IMHO, this was a better solution, as it freed a user register
for other use. And, of course, the need for all of this went away when
virtual memory with separate address spaces per user became available.

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

Pages:12
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor