Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

Would you people stop playing these stupid games?!?!?!!!!


devel / comp.arch / Re: branch history, was 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
Re: What I Am Aiming At

<ca9fa9ca-3ad2-43c8-9746-f22348efc88dn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:61d7:0:b0:6ae:fa0c:2659 with SMTP id v206-20020a3761d7000000b006aefa0c2659mr32956322qkb.493.1657226703918;
Thu, 07 Jul 2022 13:45:03 -0700 (PDT)
X-Received: by 2002:ad4:5dc1:0:b0:462:194:bc7a with SMTP id
m1-20020ad45dc1000000b004620194bc7amr44530179qvh.87.1657226703761; Thu, 07
Jul 2022 13:45:03 -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: Thu, 7 Jul 2022 13:45:03 -0700 (PDT)
In-Reply-To: <ta7d8b$fcbf$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> <92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>
<ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com> <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>
<ta7d8b$fcbf$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ca9fa9ca-3ad2-43c8-9746-f22348efc88dn@googlegroups.com>
Subject: Re: What I Am Aiming At
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Thu, 07 Jul 2022 20:45:03 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 39
 by: MitchAlsup - Thu, 7 Jul 2022 20:45 UTC

On Thursday, July 7, 2022 at 2:47:27 PM UTC-5, Stephen Fuld wrote:
> 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
<
BALR gave a pointer to the code that was executing so you could perform
branching. IP-relative is a much more convenient form for modern machines.
<
> 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.
<
This particular feature became irrelevant when paging was introduced.
> --
> - Stephen Fuld
> (e-mail address disguised to prevent spam)

Re: What I Am Aiming At

<ta7ioa$2a4f$1@gal.iecc.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: What I Am Aiming At
Date: Thu, 7 Jul 2022 21:21:14 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <ta7ioa$2a4f$1@gal.iecc.com>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com> <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com> <ta7d8b$fcbf$1@dont-email.me> <ca9fa9ca-3ad2-43c8-9746-f22348efc88dn@googlegroups.com>
Injection-Date: Thu, 7 Jul 2022 21:21:14 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="75919"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com> <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com> <ta7d8b$fcbf$1@dont-email.me> <ca9fa9ca-3ad2-43c8-9746-f22348efc88dn@googlegroups.com>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Thu, 7 Jul 2022 21:21 UTC

According to MitchAlsup <MitchAlsup@aol.com>:
>> 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
><
>BALR gave a pointer to the code that was executing so you could perform
>branching. IP-relative is a much more convenient form for modern machines.

Indeed it is but it took quite a while to figure that out and add
relative branches to S/390. I suspect that at the time, it made more
sense to define only one kind of addressing rather than one for code
and one for data. BALR N,0 to load a base register with a pointer
to the current location without branching was a clever hack.

The discussion in the IBMSJ article about S/360 suggests that they
thought that base registers would make it possible to move running
programs and so make relocated virtual memory unnecessary, but they
apparently forgot that there are pointers in memory, too. APL\360 had
enough code discipline that it could swap out a user's data block and
swap it back in somewhere else, but that was very rare.

>> 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.
><
>This particular feature became irrelevant when paging was introduced.

Single block relocation like on the PDP-6 and GE 635 was indeed less flexible
than paging, but paging adds new excitement when a code library is loaded
into different places in different processes. TSS/360 had a rather rococo
calling sequence to make that work with separate pointers to code and data.
Modern Unix-ish systems that use ELF executables have things called GOT
and PLT to make that work.

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

Re: What I Am Aiming At

<f1785abe-e8d8-4c16-948c-4c5c29e0e95bn@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:570d:0:b0:31d:3d2a:c4b8 with SMTP id 13-20020ac8570d000000b0031d3d2ac4b8mr491575qtw.61.1657234552934;
Thu, 07 Jul 2022 15:55:52 -0700 (PDT)
X-Received: by 2002:ac8:5f96:0:b0:31d:3db0:a7a0 with SMTP id
j22-20020ac85f96000000b0031d3db0a7a0mr461815qta.563.1657234552768; Thu, 07
Jul 2022 15:55:52 -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: Thu, 7 Jul 2022 15:55:52 -0700 (PDT)
In-Reply-To: <ta7d8b$fcbf$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:299c:f7d8:5363:1f95;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:299c:f7d8:5363:1f95
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>
<ta7d8b$fcbf$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f1785abe-e8d8-4c16-948c-4c5c29e0e95bn@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Thu, 07 Jul 2022 22:55:52 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 51
 by: Quadibloc - Thu, 7 Jul 2022 22:55 UTC

On Thursday, July 7, 2022 at 1:47:27 PM UTC-6, Stephen Fuld wrote:

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

This is definitely a comment that deserves a reply.

Some programs written for the System/360 included code directives like
this:

USING *,12
USING *+4096,11
USING *+8192,10

This is why I sought to provide a 16 bit displacement instead of a 12 bit one.

But why are base registers needed at all? I suppose one could claim they were only
used for compatibility reasons on the IBM System 360 model 67, which had
Dynamic Address Translation.

But that would hardly be fair. 4,096 bytes is hardly enough for the *entire virtual
address space* of a program, _including_ not only the program itself, and all
its data, but *also* entry points for all the operating system calls, and the shared
subroutines to format output or calculate log and trig functions.

So base registers were still needed on the 360/67, even if DAT meant that every user
program _could_ have its entry point at the same virtual address in its own memory
space - so you _could_ hardcode the start address instead of using BALR.

And, therefore, the reason why _I_ feel I still need base registers should now be
obvious. 64 K may now be enough for at least the _code_ segment of most
routines of any sane size - the Macintosh got away with enforcing a hard 32 K limit
for this on all programs back in the 680x0 days - but some programs will definitely
need larger data segments, and even single arrays that are larger than this, and so
64 K is not large enough for the *virtual address space* of a program.

The base register lets you use the whole of a larger virtual address space. And then,
when you have arrays within that space, the index register lets you access the
individual elements of those.

John Savard

Re: What I Am Aiming At

<dbb4d33c-44d3-4c48-985a-3572bfc7419en@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:20a7:b0:46e:eb13:c8fd with SMTP id 7-20020a05621420a700b0046eeb13c8fdmr320348qvd.61.1657234709483;
Thu, 07 Jul 2022 15:58:29 -0700 (PDT)
X-Received: by 2002:ac8:7e8f:0:b0:31e:a1fe:8155 with SMTP id
w15-20020ac87e8f000000b0031ea1fe8155mr518331qtj.220.1657234709351; Thu, 07
Jul 2022 15:58:29 -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: Thu, 7 Jul 2022 15:58:29 -0700 (PDT)
In-Reply-To: <ca9fa9ca-3ad2-43c8-9746-f22348efc88dn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:299c:f7d8:5363:1f95;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:299c:f7d8:5363:1f95
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>
<ta7d8b$fcbf$1@dont-email.me> <ca9fa9ca-3ad2-43c8-9746-f22348efc88dn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <dbb4d33c-44d3-4c48-985a-3572bfc7419en@googlegroups.com>
Subject: Re: What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Thu, 07 Jul 2022 22:58:29 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 12
 by: Quadibloc - Thu, 7 Jul 2022 22:58 UTC

On Thursday, July 7, 2022 at 2:45:05 PM UTC-6, MitchAlsup wrote:

> BALR gave a pointer to the code that was executing so you could perform
> branching. IP-relative is a much more convenient form for modern machines.

BAL, of course, was the subroutine call instruction. So a subroutine call
to the next address let you find out where you where, because that would
be stored as the return address.

The System/360 happened to have a register-to-register form of the Branch
and Link instruction that didn't branch, thus saving a few cycles - BALR.

John Savard

Re: What I Am Aiming At

<ta7suo$f3rd$1@dont-email.me>

  copy mid

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

  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 17:15:20 -0700
Organization: A noiseless patient Spider
Lines: 79
Message-ID: <ta7suo$f3rd$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>
<ta7d8b$fcbf$1@dont-email.me>
<f1785abe-e8d8-4c16-948c-4c5c29e0e95bn@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 8 Jul 2022 00:15:21 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="ef259078f7a0b76d05412839b16cef3b";
logging-data="495469"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/VP3BAzZNPmwksVruvx72tbHnpN6y3ASc="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
Thunderbird/102.0.1
Cancel-Lock: sha1:iuVKfO1KTQUN0jc0+K+VYNswWMM=
Content-Language: en-US
In-Reply-To: <f1785abe-e8d8-4c16-948c-4c5c29e0e95bn@googlegroups.com>
 by: Stephen Fuld - Fri, 8 Jul 2022 00:15 UTC

On 7/7/2022 3:55 PM, Quadibloc wrote:
> On Thursday, July 7, 2022 at 1:47:27 PM UTC-6, Stephen Fuld wrote:
>
>> 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.
>
> This is definitely a comment that deserves a reply.

Thank you.

>
> Some programs written for the System/360 included code directives like
> this:
>
> USING *,12
> USING *+4096,11
> USING *+8192,10

Yup. Uses up (I resisted saying wastes) three out of your 16 registers.

>
> This is why I sought to provide a 16 bit displacement instead of a 12 bit one.
>
> But why are base registers needed at all? I suppose one could claim they were only
> used for compatibility reasons on the IBM System 360 model 67, which had
> Dynamic Address Translation.
>
> But that would hardly be fair. 4,096 bytes is hardly enough for the *entire virtual
> address space* of a program, _including_ not only the program itself, and all
> its data, but *also* entry points for all the operating system calls, and the shared
> subroutines to format output or calculate log and trig functions.
>
> So base registers were still needed on the 360/67, even if DAT meant that every user
> program _could_ have its entry point at the same virtual address in its own memory
> space - so you _could_ hardcode the start address instead of using BALR.
>
> And, therefore, the reason why _I_ feel I still need base registers should now be
> obvious. 64 K may now be enough for at least the _code_ segment of most
> routines of any sane size - the Macintosh got away with enforcing a hard 32 K limit
> for this on all programs back in the 680x0 days - but some programs will definitely
> need larger data segments, and even single arrays that are larger than this, and so
> 64 K is not large enough for the *virtual address space* of a program.

Mitch has made the argument, which I believe, that for loads/stores, the
base register is useful 2-3% of the time, and if you have a load/store
architecture, you have the space in the instruction to specify it.
Since S/360 is not load/store, it is a more delicate tradeoff.

But for control transfers, eliminating the base register in the
instruction gives you back enough bits for most of your desired range,
especially if you make the addresses IP relative, and gain one or two
more bits by making the target address on at least a 16 bit boundary, or
perhaps 32 (depending what instruction granularity you support). For
the few cases where this isn't sufficient, you could add a jump/branch
to an address that is an offset from a register, but then you only need
that register for one or two instructions, not all the time.

For proof that all this can work, see just about every other
architecture since S/360.

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

Re: What I Am Aiming At

<2bc5b1f7-10c0-4d25-9c87-5fc166c403d5n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a0c:8cce:0:b0:473:26e3:8973 with SMTP id q14-20020a0c8cce000000b0047326e38973mr781828qvb.24.1657241785269;
Thu, 07 Jul 2022 17:56:25 -0700 (PDT)
X-Received: by 2002:a05:620a:40c6:b0:6b1:48e4:8784 with SMTP id
g6-20020a05620a40c600b006b148e48784mr574111qko.331.1657241785130; Thu, 07 Jul
2022 17:56: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: Thu, 7 Jul 2022 17:56:24 -0700 (PDT)
In-Reply-To: <ta7suo$f3rd$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> <92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>
<ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com> <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>
<ta7d8b$fcbf$1@dont-email.me> <f1785abe-e8d8-4c16-948c-4c5c29e0e95bn@googlegroups.com>
<ta7suo$f3rd$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2bc5b1f7-10c0-4d25-9c87-5fc166c403d5n@googlegroups.com>
Subject: Re: What I Am Aiming At
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 08 Jul 2022 00:56:25 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 73
 by: MitchAlsup - Fri, 8 Jul 2022 00:56 UTC

On Thursday, July 7, 2022 at 7:15:30 PM UTC-5, Stephen Fuld wrote:
> On 7/7/2022 3:55 PM, Quadibloc wrote:
> > On Thursday, July 7, 2022 at 1:47:27 PM UTC-6, Stephen Fuld wrote:
> >
> >> 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.
> >
> > This is definitely a comment that deserves a reply.
> Thank you.
> >
> > Some programs written for the System/360 included code directives like
> > this:
> >
> > USING *,12
> > USING *+4096,11
> > USING *+8192,10
> Yup. Uses up (I resisted saying wastes) three out of your 16 registers.
> >
> > This is why I sought to provide a 16 bit displacement instead of a 12 bit one.
> >
> > But why are base registers needed at all? I suppose one could claim they were only
> > used for compatibility reasons on the IBM System 360 model 67, which had
> > Dynamic Address Translation.
> >
> > But that would hardly be fair. 4,096 bytes is hardly enough for the *entire virtual
> > address space* of a program, _including_ not only the program itself, and all
> > its data, but *also* entry points for all the operating system calls, and the shared
> > subroutines to format output or calculate log and trig functions.
> >
> > So base registers were still needed on the 360/67, even if DAT meant that every user
> > program _could_ have its entry point at the same virtual address in its own memory
> > space - so you _could_ hardcode the start address instead of using BALR.
> >
> > And, therefore, the reason why _I_ feel I still need base registers should now be
> > obvious. 64 K may now be enough for at least the _code_ segment of most
> > routines of any sane size - the Macintosh got away with enforcing a hard 32 K limit
> > for this on all programs back in the 680x0 days - but some programs will definitely
> > need larger data segments, and even single arrays that are larger than this, and so
> > 64 K is not large enough for the *virtual address space* of a program.
<
> Mitch has made the argument, which I believe, that for loads/stores, the
> base register is useful 2-3% of the time, and if you have a load/store
> architecture, you have the space in the instruction to specify it.
> Since S/360 is not load/store, it is a more delicate tradeoff.
<
[base+index<<scale+displacement] is used 2%-3% of the time. That is all 3
are 2%-3%; [base+disp] is > 68% and [base+index<<scale] is ~15%
<
>
> But for control transfers, eliminating the base register in the
> instruction gives you back enough bits for most of your desired range,
> especially if you make the addresses IP relative, and gain one or two
> more bits by making the target address on at least a 16 bit boundary, or
> perhaps 32 (depending what instruction granularity you support). For
> the few cases where this isn't sufficient, you could add a jump/branch
> to an address that is an offset from a register, but then you only need
> that register for one or two instructions, not all the time.
>
> For proof that all this can work, see just about every other
> architecture since S/360.
> --
> - Stephen Fuld
> (e-mail address disguised to prevent spam)

Re: branch history, was What I Am Aiming At

<ta81ef$rcp$1@gal.iecc.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: branch history, was What I Am Aiming At
Date: Fri, 8 Jul 2022 01:31:59 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <ta81ef$rcp$1@gal.iecc.com>
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com> <ta7d8b$fcbf$1@dont-email.me> <ca9fa9ca-3ad2-43c8-9746-f22348efc88dn@googlegroups.com> <dbb4d33c-44d3-4c48-985a-3572bfc7419en@googlegroups.com>
Injection-Date: Fri, 8 Jul 2022 01:31:59 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="28057"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com> <ta7d8b$fcbf$1@dont-email.me> <ca9fa9ca-3ad2-43c8-9746-f22348efc88dn@googlegroups.com> <dbb4d33c-44d3-4c48-985a-3572bfc7419en@googlegroups.com>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Fri, 8 Jul 2022 01:31 UTC

It appears that Quadibloc <jsavard@ecn.ab.ca> said:
>On Thursday, July 7, 2022 at 2:45:05 PM UTC-6, MitchAlsup wrote:
>
>> BALR gave a pointer to the code that was executing so you could perform
>> branching. IP-relative is a much more convenient form for modern machines.
>
>BAL, of course, was the subroutine call instruction. So a subroutine call
>to the next address let you find out where you where, because that would
>be stored as the return address.

Except you couldn't do that unless you already had a base register set
up that covered the next address, in which case why bother?

>The System/360 happened to have a register-to-register form of the Branch
>and Link instruction that didn't branch, thus saving a few cycles - BALR.

It wasn't just saving a few cycles. There is no way to do the equivalent of
BALR N,0 with a BAL.

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

Re: branch history, was What I Am Aiming At

<bec82744-16df-461c-8dd9-1e631f021388n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:621:b0:432:5e0d:cb64 with SMTP id a1-20020a056214062100b004325e0dcb64mr1129988qvx.65.1657255277893;
Thu, 07 Jul 2022 21:41:17 -0700 (PDT)
X-Received: by 2002:ad4:5cec:0:b0:473:2aeb:cda3 with SMTP id
iv12-20020ad45cec000000b004732aebcda3mr1229142qvb.16.1657255277586; Thu, 07
Jul 2022 21:41:17 -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: Thu, 7 Jul 2022 21:41:17 -0700 (PDT)
In-Reply-To: <ta81ef$rcp$1@gal.iecc.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:f430:1bda:b779:921f;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:f430:1bda:b779:921f
References: <b71cec2e-1dbe-448a-b3c6-777415ec077bn@googlegroups.com>
<ta7d8b$fcbf$1@dont-email.me> <ca9fa9ca-3ad2-43c8-9746-f22348efc88dn@googlegroups.com>
<dbb4d33c-44d3-4c48-985a-3572bfc7419en@googlegroups.com> <ta81ef$rcp$1@gal.iecc.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <bec82744-16df-461c-8dd9-1e631f021388n@googlegroups.com>
Subject: Re: branch history, was What I Am Aiming At
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Fri, 08 Jul 2022 04:41:17 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 13
 by: Quadibloc - Fri, 8 Jul 2022 04:41 UTC

On Thursday, July 7, 2022 at 7:32:02 PM UTC-6, John Levine wrote:
> It appears that Quadibloc <jsa...@ecn.ab.ca> said:

> >BAL, of course, was the subroutine call instruction. So a subroutine call
> >to the next address let you find out where you where, because that would
> >be stored as the return address.

> Except you couldn't do that unless you already had a base register set
> up that covered the next address, in which case why bother?

Oops, you're quite right!

John Savard

Re: What I Am Aiming At

<ta8ipn$f3rc$1@dont-email.me>

  copy mid

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

  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: Thu, 7 Jul 2022 23:28:07 -0700
Organization: A noiseless patient Spider
Lines: 42
Message-ID: <ta8ipn$f3rc$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>
<127a5b3f-1c68-417b-ae0f-c3caef69eedcn@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 8 Jul 2022 06:28:07 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="ef259078f7a0b76d05412839b16cef3b";
logging-data="495468"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/0eH833GXlctydMc3gN08QonInS8dESaM="
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
Thunderbird/102.0.1
Cancel-Lock: sha1:GAfoASeXLhcslrTZI4o15gMRn84=
In-Reply-To: <127a5b3f-1c68-417b-ae0f-c3caef69eedcn@googlegroups.com>
Content-Language: en-US
 by: Stephen Fuld - Fri, 8 Jul 2022 06:28 UTC

On 7/6/2022 10:50 AM, MitchAlsup wrote:
> 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.

Huh??? ISTM that about the only things you took from the S/360 were
byte addressability and having two registers able to participate in the
address calculation for loads and stores.

On the other hand, things you did differently from S/360 include, but
are not limited to

Fixed length instructions (ignoring the inline constant suffixes)

No storage to storage instructions, except for the late addition of the
MM instruction

No CISCy instructions such as translate and test.

No requirement for a base address in jump/branch instructions.

No separate floating point registers.

Many more. :-)

So calling it the same ISA model seems like a big stretch. :-)

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

Re: What I Am Aiming At

<1d58090a-4b15-48df-b445-049eefe384dan@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:1cd:b0:319:6e8e:d9ec with SMTP id t13-20020a05622a01cd00b003196e8ed9ecmr3818579qtw.550.1657297916681;
Fri, 08 Jul 2022 09:31:56 -0700 (PDT)
X-Received: by 2002:ac8:5b86:0:b0:31d:4583:ed65 with SMTP id
a6-20020ac85b86000000b0031d4583ed65mr3695762qta.135.1657297916484; Fri, 08
Jul 2022 09:31:56 -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: Fri, 8 Jul 2022 09:31:56 -0700 (PDT)
In-Reply-To: <ta8ipn$f3rc$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> <92c38018-0c05-450c-9dd0-5fc80b4109a4n@googlegroups.com>
<ec74bf8a-99f8-4b71-ac2a-5e47d5baf863n@googlegroups.com> <ecbb9f04-f0d2-45ef-9ce2-4cbdff6d502cn@googlegroups.com>
<127a5b3f-1c68-417b-ae0f-c3caef69eedcn@googlegroups.com> <ta8ipn$f3rc$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1d58090a-4b15-48df-b445-049eefe384dan@googlegroups.com>
Subject: Re: What I Am Aiming At
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Fri, 08 Jul 2022 16:31:56 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 48
 by: MitchAlsup - Fri, 8 Jul 2022 16:31 UTC

On Friday, July 8, 2022 at 1:28:21 AM UTC-5, Stephen Fuld wrote:
> On 7/6/2022 10:50 AM, MitchAlsup wrote:
> > 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.
<
> Huh??? ISTM that about the only things you took from the S/360 were
> byte addressability and having two registers able to participate in the
> address calculation for loads and stores.
<
You have to look at my sentence in the context of what I was referring. My 66000
is more like S/360 than Mc 88000. It also has memory to memory move MM, LDM,
STM.
>
> On the other hand, things you did differently from S/360 include, but
> are not limited to
>
> Fixed length instructions (ignoring the inline constant suffixes)
<
Yes, I call this the first word of an instruction the 'instruction specifier'
S/360 had this same concept in the first halfword of an instruction.
>
> No storage to storage instructions, except for the late addition of the
> MM instruction
>
> No CISCy instructions such as translate and test.
>
> No requirement for a base address in jump/branch instructions.
>
> No separate floating point registers.
>
> Many more. :-)
>
> So calling it the same ISA model seems like a big stretch. :-)
<
In the context of RISC-V, My 66000 is significantly closer to S/360 than RISC-V.
> --
> - Stephen Fuld
> (e-mail address disguised to prevent spam)


devel / comp.arch / Re: branch history, was What I Am Aiming At

Pages:12
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor